Linuxのインストールと仮想マシン・コンテナ
仮想マシンはハイパーバイザ上でゲストOSごと隔離し、コンテナはホストのカーネルをnamespaceとcgroupsで共有したまま隔離する——この対比と、systemctl/shutdownの停止操作、パーティション設計が本章の得点源である。
本章はLinuCレベル1 101試験の主題1.01「Linuxのインストールと仮想マシン・コンテナの利用」に対応する。公式シラバス(Version 10.0)では、1.01.1「Linuxのインストール、起動、接続、切断と停止」と1.01.2「仮想マシン・コンテナの概念と利用」が本章の中核である。インストールでは、まず用途に応じたディストリビューションの選択と、ISOイメージ・USBメモリ・ネットワーク経由(PXE)といったインストールメディアの選択が問われる。物理マシンへの直接インストールに加え、仮想マシンへのインストールが標準的になっている点も押さえたい。試験はCBT方式で約60問が出題され、選択式に加えてキーボード入力問題も含まれるため、コマンド名は綴りまで正確に記憶する必要がある。本章の内容は後続のブートプロセス(1.01.3)やファイルシステム管理の前提となるため、最初に確実に固めるべき領域である。
インストール時のパーティション設計は頻出論点である。ルートファイルシステム「/」は必須であり、カーネルイメージ(vmlinuz)や初期RAMディスク(initramfs)を格納する/boot、物理メモリ不足時にページを退避するスワップ領域を組み合わせる構成が基本形となる。UEFI環境ではFAT形式のEFIシステムパーティション(ESP)を/boot/efiにマウントする必要がある。さらに、ユーザーデータを保持する/home、ログやスプールで増大しやすい/var、一時領域の/tmpを別パーティションに分けると、領域あふれの波及防止や再インストール時のデータ保全に有利になるという設計意図まで問われる。LVM(論理ボリューム管理)を使えば物理ボリューム(PV)・ボリュームグループ(VG)・論理ボリューム(LV)の3層構造で後からサイズ変更できる点も出題される。スワップサイズに「必ず物理メモリの2倍」といった固定則はなく、メモリ量と用途に応じて設計するのが現在の標準である。
起動・停止・接続の操作は実務直結の頻出分野である。systemd環境での停止・再起動はsystemctl poweroff(電源断を伴う停止)、systemctl reboot(再起動)、systemctl halt(システム停止のみで電源断は行わない)を用いる。従来のshutdownコマンドも有効で、shutdown -h +10のように「+分」やhh:mm形式で時刻指定ができ、実行するとログイン中の全ユーザーへwallによる通知が送られる。オプションは-hが停止、-rが再起動、-cが予約の取り消しであり、取り違えを狙った出題が多い。接続については、ローカルのコンソール(仮想コンソールはCtrl+Alt+F1〜F6で切り替え)と、ネットワーク経由のSSHによるリモートログインを区別する。利用状況の確認にはwhoとw(ログイン中ユーザーの確認)、last(ログイン履歴の確認)を使う。緊急時に使うrescue.targetなどsystemdターゲットとの関係も、1.01.3と接続して整理しておきたい。
仮想マシンの中核はハイパーバイザである。ハイパーバイザには、ハードウェア上で直接動作するベアメタル型(タイプ1)と、ホストOS上のアプリケーションとして動作するホスト型(タイプ2)があり、前者の代表がXenやKVM、後者の代表がVirtualBoxである。KVMはLinuxカーネル自体をハイパーバイザとして機能させるカーネルモジュールであり、Intel VT-xやAMD-VといったCPUの仮想化支援機能を前提として完全仮想化を実現する。ゲストOSを無改変のまま動かせる完全仮想化と、ゲストOS側がハイパーバイザを意識して協調動作する準仮想化の区別も定番の出題である。ゲストには仮想CPU・仮想メモリ・仮想ディスク(QEMU/KVMではqcow2形式が代表)が割り当てられ、1台の物理マシンに複数の独立したOS環境を集約できる。この集約技術がクラウドのIaaSの基盤になっているという文脈まで押さえておくと応用問題に対応できる。
コンテナ型仮想化はハイパーバイザを使わず、ホストOSのLinuxカーネルを全コンテナで共有する。隔離はカーネルの機能で実現され、名前空間(namespace)がプロセスID・ネットワーク・マウントポイントなどの「見え方」を分離し、cgroupsがCPUやメモリなどの資源割り当てを制御する。ゲストOSのカーネルを起動しないため、仮想マシンに比べて起動が高速で、メモリ・ディスクのオーバーヘッドが小さいことが利点である。一方、カーネルを共有する以上、ホストと異なるバージョンのカーネルや別系統のOSは動かせず、分離レベルは仮想マシンより弱いという弱点が必ず対で問われる。代表的な実装はDockerとLXCであり、Dockerはアプリケーションと依存関係をイメージに固めて配布・実行する点が特徴である。「仮想マシン=ゲストOSごと隔離」「コンテナ=カーネル共有でプロセスを隔離」という対比が本章最大の得点ポイントである。
運用面では代表的なコマンドの役割を問う出題が多い。KVM/QEMUの仮想マシン管理には共通APIを提供するlibvirtが使われ、CLIのvirsh(virsh listで一覧、virsh startで起動、virsh shutdownで停止)やGUIのvirt-managerを利用する。ディスクイメージの作成・変換にはqemu-imgを用いる。Dockerではdocker pull(イメージ取得)、docker images(イメージ一覧)、docker run(コンテナの作成と起動)、docker ps(稼働中コンテナの一覧、-aオプションで停止中も表示)、docker stop / docker start、docker exec(稼働中コンテナ内でのコマンド実行)が基本セットである。配布のひな型である「イメージ」と実行実体である「コンテナ」の区別は必出である。また、シラバスはクラウド上の初期設定手法としてcloud-initによる自動設定にも言及している。いずれも入力問題で出題され得るため、サブコマンドまで正確に記憶したい。
この章の問題から3問
コンテナ型仮想化では、すべてのコンテナがホストOSのLinuxカーネルを共有して動作するため、コンテナごとに異なるバージョンのカーネルを稼働させることはできない。
正解 ○(正しい)
正しい。公式シラバス1.01.2「仮想マシン・コンテナの概念と利用」の中心論点。コンテナはハイパーバイザを介さず、名前空間(namespace)とcgroupsによる隔離だけを行うため、カーネルは全コンテナでホストと共通である。「コンテナは隔離されているのだからカーネルも個別だろう」という誤解がひっかけどころで、異なるカーネルが必要な場合は仮想マシンを選択する。
systemctl poweroffコマンドはシステムを停止するが電源の切断までは行わないため、電源断まで行うにはsystemctl haltコマンドを使用する。
正解 ×(誤り)
誤り。両者の説明が逆になっている。man systemctl(systemd公式マニュアル)のとおり、systemctl poweroffは「シャットダウンして電源を切断」、systemctl haltは「システムを停止するが電源は切断しない」動作である。poweroffとhaltの役割を入れ替えるひっかけは定番なので、「power(電源)をoffするのがpoweroff」と対応付けて記憶する。シラバス1.01.1「起動、接続、切断と停止」の範囲。
KVMはLinuxカーネル自体をハイパーバイザとして機能させる仮想化技術であり、利用にはIntel VT-xやAMD-VなどCPUの仮想化支援機能が必要である。
正解 ○(正しい)
正しい。KVM(Kernel-based Virtual Machine)はカーネルモジュール(kvm.koおよびkvm-intel/kvm-amd)としてLinuxカーネルに組み込まれ、カーネル自体をハイパーバイザ化する。完全仮想化を実現するためにCPUの仮想化支援機能(Intel VT-x / AMD-V)を前提とする点はカーネル公式ドキュメント(KVM)に明記されており、シラバス1.01.2の頻出論点である。
登録不要 ・ 採点と解説はその場 ・ 進捗は端末に保存
LinuC レベル1(101試験)の他の章
- ファイル・ディレクトリの操作と管理(パーミッション)
- GNUとUnixのコマンド(テキスト処理・パイプ)
- プロセス管理とシェルスクリプトの基礎
- ハードウェアとデバイス・ファイルシステム
- ネットワークの基礎とセキュリティ管理
本ページの講義ノートと問題は、各試験の出題範囲に基づきAIが作成し、法令・基準に照らして別のAIレンズで敵対的に検証したものです(検証プロセス)。法改正等で誤りが見つかった場合は随時修正します。合格を保証するものではありません。