こんにちは!いつもブログを読んでいただき、ありがとうございます。
前回の記事では「2.03 基本的なネットワーク構成」として、ip コマンドや nmcli を使ったネットワーク設定を解説しました。まだご覧になっていない方は先にそちらをどうぞ!
👉 【前回記事】 2.03 基本的なネットワーク構成(ip / nmcli)
今回からは新テーマ、「主題2.05.1:仮想マシンの仕組みとKVM」 に入ります。
「仮想化」という言葉はクラウド全盛の現代では避けては通れないキーワードですよね。とはいえ、KVMとかQEMUとかlibvirtとか、似たような名前のツールがたくさん出てきて「結局どれが何をやってるの?」ってなりがちです(笑)。
この記事では、試験で狙われやすいポイントに絞って、なるべく分かりやすく 整理していきます!
LinuC 201全体の学習ロードマップはこちらにまとめています♪
まずは、この主題で絶対に外せない「キーワード」を確認しましょう。
| 項目 | 内容 |
|---|---|
| 主題番号 | 2.05.1 仮想マシンの仕組みとKVM |
| 重要度 | 3 |
| 主なキーワード | KVM、QEMU、libvirt、libvirtd、virsh、/proc/cpuinfo、vmx、svm |
📌 この記事のゴール
- 仮想化の2つの方式(ホスト型・ハイパーバイザー型)の違いを説明できる
- CPUの仮想化支援機能を確認するコマンドとフラグ名を覚える
- KVM・QEMU・libvirt・virsh それぞれの役割の違いを説明できる
- 仮想マシンの設定ファイルがどこに保存されるか分かる
試験では「どの層で仮想化ソフトウェアが動作しているか」という構造の違いが頻出です。まずはこの2つの方式をしっかり区別しましょう。
| 方式 | 構造 | 特徴 | 代表的な製品 |
|---|---|---|---|
| ホスト型 | ホストOS上でアプリとして動作 | 導入が容易だが、OSを介するため低速 | VirtualBox、VMware Workstation |
| ハイパーバイザー型 | ハードウェア上で直接動作 | 高速・高安定。サーバー環境の主流 | KVM、VMware ESXi、Xen |
📝 ここがポイント! 「ホストOSを介さずハードウェア上で直接動作する」という説明があれば、それは**ハイパーバイザー型(ベアメタル型)**を指します。
💡 KVMの分類、ちょっと補足 KVMはLinuxカーネル上で動作するため「ホスト型に見える」と感じる方もいます。ただし、KVMはカーネル自体がハイパーバイザーとして機能する仕組みなので、LinuC試験ではハイパーバイザー型として分類されています。試験ではハイパーバイザー型として覚えておきましょう!
KVM(Kernel-based Virtual Machine) は、Linuxカーネル自体をハイパーバイザーとして機能させる技術です。2007年からLinuxカーネルに標準搭載されており、現代のクラウド環境でも広く使われています。
CPUの仮想化支援機能を確認しよう
KVMを利用するには、CPUが仮想化をハードウェアレベルでサポートしている必要があります。試験では「確認すべきファイル」と「フラグ名」が非常によく問われます!
# CPUが仮想化に対応しているか確認するコマンド
grep -E 'vmx|svm' /proc/cpuinfo
| CPUベンダー | フラグ名 | 覚え方のヒント |
|---|---|---|
| Intel | vmx | Intelは VMX |
| AMD | svm | AMDは SVM |
📝 ここがポイント!
- 確認ファイルは
/proc/cpuinfo(/etc/cpuinfoは存在しないので注意!)- カーネルモジュール
kvm_intelまたはkvm_amdがロードされている必要があるlsmod | grep kvmでモジュールのロード状況を確認できる
KVMは単体で全機能を提供するわけではなく、複数のツールが連携して動作します。それぞれの役割の境界線が試験でよく問われるので、しっかり整理しましょう!
| コンポーネント | 役割 |
|---|---|
| KVM | CPUとメモリの仮想化を担当(カーネルモジュール) |
| QEMU | NIC・ディスク・画面などのハードウェアエミュレーションを担当 |
| libvirt | KVMやQEMUなどの仮想化技術を統合管理するためのAPI層 |
| libvirtd | libvirtの命令を受け取る常駐デーモン(サービス) |
| virsh | CLIから仮想マシンを操作する管理ツール(libvirtdを経由) |
| virt-manager | GUIから仮想マシンを操作する管理ツール(libvirtdを経由) |
⚠️ 試験の引っかけポイント① 「virshは直接KVMを操作する」→ 誤り! 正しくは「virshは libvirtd を経由して KVMやQEMUを制御する」です。
⚠️ 試験の引っかけポイント② 「libvirtdが停止していてもvirshは使える」→ 誤り! virshはlibvirtdに命令を送るクライアントなので、デーモンが落ちていると操作できません。
💡 libvirtdについての補足 最近のLinux環境ではlibvirtのサービスが
virtqemudなどに分割されている場合があります。ただしLinuC試験では従来通り 「libvirtd」 として理解すれば問題ありません!
QEMUだけでも動く?KVMとの組み合わせが重要な理由
QEMUは単体でも仮想化できますが、それだけだとソフトウェアエミュレーションになるためかなり遅いです。KVMと組み合わせることで、CPUの仮想化支援機能を活かしたハードウェアレベルの高速化が実現します。
QEMU単体 → ソフトウェアエミュレーション(低速)
QEMU + KVM → ハードウェア支援で高速化(実用レベル)
📝 ここがポイント! 「QEMUはKVMなしでも動作するが、KVMと組み合わせることで高速化される」という点を押さえておきましょう!
virsh の代表的なコマンド
# 仮想マシンの一覧を表示(実行中のみ)
virsh list
# 仮想マシンの一覧を表示(停止中も含む)
virsh list --all
# 仮想マシンを起動する
virsh start <VM名>
# 仮想マシンをシャットダウンする
virsh shutdown <VM名>
仮想マシンの設定やディスクイメージがどこに保存されるかは、試験でも実務でも重要な知識です。
| パス | 何が入っているか |
|---|---|
/etc/libvirt/qemu/ | 仮想マシンの定義ファイル(XML形式) |
/var/lib/libvirt/images/ | 仮想ディスクイメージのデフォルト保存先 |
/dev/kvm | KVMのデバイスファイル。ユーザ空間からKVM機能を利用するための入口 |
📝 ここがポイント! 仮想マシンの設定ファイルはXML形式で保存されます。「
/etc/libvirt/qemu/にXMLで保存される」という組み合わせをセットで覚えておきましょう!
実装方法による分類も試験範囲に含まれます。KVMとXenの違いを軸に整理しておきましょう。
| 方式 | 特徴 | 代表製品 |
|---|---|---|
| 完全仮想化 | CPUの仮想化支援機能(Intel VT-x / AMD-V)を利用し、ゲストOSを無修正で動作させる | KVM、VMware |
| 準仮想化 | ハイパーバイザーと連携するためにゲストOSの一部を修正する | Xen(完全仮想化もサポート) |
📝 ここがポイント! KVM = 完全仮想化、Xen = 準仮想化が有名(ただし完全仮想化もサポートしている)というセットで覚えましょう。
過去問を解いていて「ここは引っかかりやすい!」と感じたポイントをまとめました。試験直前にここだけは見直してくださいね!
| # | 間違いパターン | 正しい理解 |
|---|---|---|
| 1 | 「virshは直接KVMを操作する」 | ❌ virshは libvirtd を経由する |
| 2 | 「libvirtdが停止していてもvirshは使える」 | ❌ libvirtdが起動していないとvirshは動かない |
| 3 | 「KVMはホスト型仮想化だ」 | ❌ LinuC試験ではハイパーバイザー型に分類 |
| 4 | 「KVMはゲストOSの修正が必要」 | ❌ KVMは完全仮想化。ゲストOS無修正で動く |
| 5 | 「CPUフラグの確認は /etc/cpuinfo」 | ❌ 正しくは /proc/cpuinfo |
| 6 | 「QEMUはKVMなしでは動かない」 | ❌ QEMU単体でも動作する。KVMで高速化される |
私がメインで使っている参考書と問題集です。よければ一緒に勉強していきましょう(笑)
【PR】▶ あずき本(Linux教科書 LinuCレベル2 Version 10.0対応) 概念や仕組みをしっかり理解したいときの辞書代わりに。まずここで基礎を固めます。
リンク
今回学習した内容の重要ポイントをまとめます。
仮想化の方式
| 方式 | 代表製品 | 特徴 |
|---|---|---|
| ホスト型 | VirtualBox、VMware Workstation | ホストOS上で動作 |
| ハイパーバイザー型 | KVM、VMware ESXi、Xen | ハードウェア上で直接動作 |
コンポーネントの役割
| コンポーネント | 役割 |
|---|---|
| KVM | CPUとメモリの仮想化 |
| QEMU | ハードウェアエミュレーション |
| libvirt | 仮想化技術を統合管理するAPI層 |
| libvirtd | 常駐デーモン(virshの命令を受け取る) |
| virsh | CLIの管理ツール(libvirtd経由) |
| virt-manager | GUIの管理ツール(libvirtd経由) |
重要なパスとコマンド
| 項目 | 内容 |
|---|---|
| CPU確認コマンド | grep -E 'vmx|svm' /proc/cpuinfo |
| Intel CPUのフラグ | vmx |
| AMD CPUのフラグ | svm |
| VM定義ファイル | /etc/libvirt/qemu/(XML形式) |
| ディスクイメージ | /var/lib/libvirt/images/ |
| KVMデバイスファイル | /dev/kvm |
💡 コラム:KVMは試験だけじゃない! KVMはAWS(Nitroのベース技術)やOpenStack(標準ハイパーバイザー)など、現代のクラウド基盤にも広く使われている技術です。LinuCでKVMを学ぶことは、そのままクラウド技術の理解にも直結します。試験勉強しながら実務知識も積み上げられるお得なテーマなので、ぜひしっかり押さえておきましょう!
お疲れ様でした!仮想化はコンポーネントが多くて最初はごちゃごちゃに見えますが、「KVMがCPU・メモリ、QEMUがハードウェア、libvirtがまとめ役」という役割分担さえ頭に入ればグッとスッキリしてきますよ。
LinuC 201合格に向けて、これからも一緒に頑張りましょう!応援しています。
※本記事はLinuC レベル2 Version 10.0 の出題範囲をもとに作成しています。