こんにちは!いつもブログを読んでいただき、ありがとうございます。
今回は、主題2.05「仮想化サーバー」の後半として、2.05.2 仮想マシンの作成と管理 を解説していきます!
「virsh コマンドが多くて覚えられない!」「仮想マシンの作り方と止め方、どのコマンドを使えばいいの?」——前回の概念編に続き、今回は 実際に仮想マシンを操作するコマンド を丁寧に整理していきます。サブコマンドの「意味」とセットで覚えることで、引っかけ問題にも対応できるようになりますよ!
LinuC 201全体の学習ロードマップはこちらにまとめています♪
前回の「仮想マシンの仕組みとKVM」をまだ読んでいない方は、先にそちらで概念を押さえておくとこの記事がよりスムーズに読めますよ。
まずは、この主題で絶対に外せない「キーワード」を確認しましょう。
| 項目 | 内容 |
|---|---|
| 主題番号 | 2.05.2 仮想マシンの作成と管理 |
| 重要度 | 3(5段階中) |
| 頻出キーワード | virt-install、virsh、qcow2、スナップショット、クローン、virt-manager |
重要度3は「試験全体のなかで出題比率が高め」という意味です。virsh コマンドのサブコマンドは非常によく出るので、「何をするコマンドか」を意味とセットで覚えていきましょう!
virt-install とは?
virt-install は、コマンドラインから 新しい仮想マシンを作成してOSをインストール するためのコマンドです。libvirtd 経由でKVM/QEMUを使い、VMを構築します。
📝 試験ポイント:
virt-installは新規作成専用のコマンドです。既存VMの管理(起動・停止など)にはvirshを使います。用途の違いを覚えておきましょう。
# 最小構成の例(ISOファイルからインストール)
virt-install \
--name centos-vm \ # 仮想マシン名
--ram 2048 \ # メモリ量(MB)
--vcpus 2 \ # 仮想CPU数
--disk path=/var/lib/libvirt/images/centos-vm.qcow2,size=20 \ # ディスク(GB)
--cdrom /path/to/centos.iso \ # インストールメディア(ISOファイル)
--os-variant centos-stream9 \ # OSの種類(最適化設定を自動で適用)
--network network=default # NAT接続(libvirtのデフォルト仮想ネットワーク)
# 既存のディスクイメージを使って起動する(--import)
virt-install \
--name myvm \
--ram 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/existing.qcow2 \
--import \ # 既存ディスクを使う(OSインストール不要)
--network network=default
📝
--networkオプションの使い分け--network network=defaultは libvirt のデフォルト仮想ネットワーク(NAT接続)に接続します。物理ネットワークに直接接続したい場合は--network bridge=br0のようにブリッジインターフェースを指定します。virbr0はNATネットワークのブリッジデバイス名ですが、試験ではnetwork=defaultという指定方法も押さえておきましょう。
virt-install の主要オプション早見表
| オプション | 意味 |
|---|---|
--name | VM名(virsh での識別名) |
--ram | メモリ量(MB単位) |
--vcpus | 仮想CPU数 |
--disk | 仮想ディスクのパスとサイズ |
--cdrom | ISOイメージのパス(インストールメディア) |
--location | ネットワークインストール先URL |
--os-variant | ゲストOSの種類(最適化のため)。osinfo-query os コマンドで指定できる値の一覧を確認できる |
📝 OS選択の補足 現在の実務では CentOS Linux はサポートが終了しており、CentOS Stream や Rocky Linux、AlmaLinux などが主流になっています。試験ではディストリビューション名よりも、コマンドや仕組みの理解が重視されます。 |
--network| 使用するネットワーク | |--graphics none| テキストモード(GUIなし) | |--import| 既存ディスクをそのまま使用(OSインストール不要) |
★ここがポイント!
--importオプションは「既存のディスクイメージからVMを作成する(OSの再インストールは不要)」場合に使います。クラウドイメージなどを活用する際によく登場します。
📝 クラウドとの関係 AWSやGCPなどのクラウドサービスでも、内部ではKVMのような仮想化技術が使われています。「ディスクイメージからVMを起動する」という考え方は、AWSのAMI(Amazon Machine Image)などと非常に近い概念です。ここで学ぶ「仮想マシンの作成・管理」の知識は、そのままクラウド理解にもつながりますよ♪
virsh は、libvirtd 経由で仮想マシンを管理するCLIコマンドです。試験で最も頻出のコマンド群 です。
📝 補足:libvirtd と virtqemud について 最近のlibvirt(バージョン6.0以降)では、従来の
libvirtdからvirtqemudなどの分割デーモン構成に移行が進んでいます。ただしLinuC試験では「libvirtd」として出題されるため、まずはこちらを優先して覚えておきましょう。
VM一覧の確認
# 実行中の仮想マシンを表示する
virsh list
# 停止中も含めて全VMを表示する(試験頻出!)
virsh list --all
# 停止中のVMのみ表示する
virsh list --inactive
📝 試験ポイント:起動中のVMのみ表示するのは
virsh list、停止中も含めて全VMを表示するのはvirsh list --allです。--allの有無で結果が大きく変わります。
VMの起動・停止・再起動
# VMを起動する
virsh start myvm
# VMを正常にシャットダウンする(OSにシャットダウン信号を送る)
virsh shutdown myvm
# VMを強制終了する(電源を抜くイメージ)
virsh destroy myvm
# VMを再起動する
virsh reboot myvm
# VMを一時停止する(サスペンド)
virsh suspend myvm
# 一時停止したVMを再開する(レジューム)
virsh resume myvm
停止系コマンドの重要な違い(ここ、試験に出ます!)
| コマンド | 動作 | 使う場面 |
|---|---|---|
virsh shutdown myvm | ゲストOSに正常終了の信号を送る | 通常の停止 |
virsh destroy myvm | 即座に強制終了(電源断) | OSがフリーズして応答しない時 |
⚠️ 試験の最頻出ひっかけ:
virsh destroyは「VMを削除する」コマンドでは ありません。「強制終了(電源断)」するコマンドです。VMの定義を削除するのはvirsh undefineです。
VMの定義(設定)の管理
# VMの詳細情報を確認する
virsh dominfo myvm
# VMのXML定義ファイルを表示する
virsh dumpxml myvm
# VMのXML定義ファイルを編集する
virsh edit myvm
# VMを定義から削除する(ディスクイメージは残る)
virsh undefine myvm
# VMを定義から削除しディスクも一緒に削除する
virsh undefine myvm --remove-all-storage
# XMLファイルからVMを登録する
virsh define /path/to/myvm.xml
# 自動起動を有効にする(OS起動時にVMも自動起動)
virsh autostart myvm
# 自動起動を無効にする
virsh autostart --disable myvm
📝 試験ポイント:
virsh undefineは VM の「定義(登録情報)を削除する」コマンドです。--remove-all-storageを付けないと、仮想ディスクイメージファイル(.qcow2等)はディスク上に残ります。
スナップショット — VMを特定時点に戻す(★★★)
スナップショットとは、仮想マシンのある時点の状態を保存しておき、後で元に戻せる機能です。
# スナップショットを作成する
virsh snapshot-create-as myvm snap1 \
--description "初期設定完了時点"
# スナップショット一覧を表示する
virsh snapshot-list myvm
# スナップショットの詳細を確認する
virsh snapshot-info myvm snap1
# スナップショットに戻す(ロールバック)
virsh snapshot-revert myvm snap1
# スナップショットを削除する
virsh snapshot-delete myvm snap1
📝 試験ポイント:スナップショットの作成は
snapshot-create-as、一覧はsnapshot-list、ロールバックはsnapshot-revertです。動詞と操作の組み合わせで覚えましょう。
virsh コマンド全体の早見表(試験直前チェック用)
| virsh サブコマンド | 動作 |
|---|---|
list | 起動中VMを一覧表示 |
list --all | 停止中含む全VMを一覧表示 |
start <VM名> | VMを起動 |
shutdown <VM名> | VMを正常停止(OS経由) |
destroy <VM名> | VMを強制終了(電源断)※削除ではない |
reboot <VM名> | VMを再起動 |
suspend <VM名> | VMを一時停止 |
resume <VM名> | VMを一時停止から再開 |
dominfo <VM名> | VMの詳細情報を表示 |
dumpxml <VM名> | VMのXML定義を表示 |
edit <VM名> | VMのXML定義を編集 |
undefine <VM名> | VMの定義を削除(ディスクは残る) |
define <XMLファイル> | XMLファイルからVMを登録 |
autostart <VM名> | 自動起動を有効化 |
autostart --disable <VM名> | 自動起動を無効化 |
snapshot-create-as <VM名> <スナップ名> | スナップショットを作成 |
snapshot-list <VM名> | スナップショット一覧表示 |
snapshot-revert <VM名> <スナップ名> | スナップショットへロールバック |
snapshot-delete <VM名> <スナップ名> | スナップショットを削除 |
仮想ディスクの形式
仮想ディスクはファイルとして管理されます。代表的な形式を覚えましょう。
| 形式 | 説明 | 特徴 |
|---|---|---|
| qcow2 | QEMU Copy On Write version 2 | KVM標準形式。スナップショット対応。使用した分だけ容量が増える(シン・プロビジョニング) |
| raw | 生のディスクデータ | シンプル・高速。スナップショット非対応 |
| vmdk | VMware形式 | VMware環境との互換性 |
★ここがポイント! KVMで最もよく使われるのが qcow2 形式です。「スナップショットが使える」「使用した分だけ容量を消費する(シン・プロビジョニング)」という2つの特徴を覚えましょう。
qemu-img — 仮想ディスクイメージを操作する
# 新しいディスクイメージを作成する(qcow2形式、20GB)
qemu-img create -f qcow2 /var/lib/libvirt/images/myvm.qcow2 20G
# イメージの情報を確認する
qemu-img info /var/lib/libvirt/images/myvm.qcow2
# ディスクイメージの形式を変換する(raw → qcow2)
qemu-img convert -f raw -O qcow2 source.img dest.qcow2
# ディスクイメージのサイズを変更する(10GB追加)
qemu-img resize /var/lib/libvirt/images/myvm.qcow2 +10G
📝 試験ポイント:
qemu-img infoの出力に表示されるvirtual size(仮想サイズ)とdisk size(実際の使用容量)が異なるのが qcow2 の特徴(シン・プロビジョニング)です。
📝 qcow2 と raw の使い分け qcow2 はスナップショット対応・容量可変で使い勝手が良い反面、raw 形式と比べてわずかにオーバーヘッドがあります。パフォーマンスが最優先の本番環境では raw が使われることもあります。試験では qcow2 の特徴を押さえておけば OK です。
VMのクローン(複製)
# virt-clone コマンドでVMをクローンする
# ※ クローン元のVMは停止状態である必要がある
virt-clone \
--original myvm \ # クローン元のVM名
--name myvm-clone \ # クローン先のVM名
--file /var/lib/libvirt/images/myvm-clone.qcow2
⚠️ 注意:
virt-cloneでクローンする際は、クローン元のVMを 停止状態 で実行するのが基本です。起動中のままクローンするとディスクデータの整合性が保証されません。
KVM環境では libvirt が仮想ネットワークを管理します。デフォルトで default という仮想ネットワーク(NAT構成)が用意されています。
# 仮想ネットワークの一覧を表示する
virsh net-list --all
# 仮想ネットワークの詳細情報を確認する
virsh net-info default
# 仮想ネットワークを起動する
virsh net-start default
# 自動起動を有効にする
virsh net-autostart default
| ネットワークモード | 説明 | 用途 |
|---|---|---|
| NAT | ホストのIPアドレスでインターネットに接続(デフォルト) | 開発・テスト環境 |
| ブリッジ | ホストと同じネットワークに直接接続 | 本番環境・外部からアクセスが必要な場合 |
| isolated | ホストやインターネットと切り離された閉じたネットワーク | セキュリティ重視のテスト環境 |
ライブマイグレーションとは、VMを停止させずに別の物理ホストへ移動 させる技術です。本番環境でホストのメンテナンスをする際などに使います。
# 起動中のVMを別のホスト(desthost)に移行する
virsh migrate --live myvm qemu+ssh://desthost/system
📝 試験ポイント:
--liveオプションをつけることで、VMを停止せずにマイグレーションできます。--liveなしだと停止してから移行します。なお、ライブマイグレーションを実際に行うには、共有ストレージ(NFSなど)の用意や移行先ホストとのネットワーク疎通など、事前条件の整備が必要です。
過去問を解いていて「ここ、引っかかりそう!」と感じたパターンをまとめました。試験直前に見直してくださいね。
| # | 間違いパターン | 正しい理解 |
|---|---|---|
| 1 | virsh destroy でVMが削除される | ❌ destroy は強制終了(電源断)。削除は virsh undefine |
| 2 | virsh list で全VMが表示される | ❌ virsh list は起動中のVMのみ。停止中も含めるには virsh list --all |
| 3 | qcow2は最初から指定サイズの容量を使う | ❌ qcow2はシン・プロビジョニング形式で実際に使った分だけ消費する |
| 4 | virt-clone は起動中のVMもクローンできる | ❌ クローン元のVMは停止状態である必要がある |
| 5 | virsh undefine するとディスクイメージも削除される | ❌ デフォルトでは定義のみ削除。ディスクも消すには --remove-all-storage が必要 |
| 6 | virsh migrate は停止してから移行する | ❌ --live オプションをつけると停止せずにマイグレーションできる |
| ツール名 | 種類 | 主な用途 |
|---|---|---|
virt-install | CLI | 新しいVMの作成・OSインストール |
virsh | CLI | VMのライフサイクル管理(起動・停止・スナップショット等) |
virt-manager | GUI | VMの総合管理(作成・操作・監視) |
virt-clone | CLI | 既存VMのクローン(複製) |
qemu-img | CLI | 仮想ディスクイメージの作成・変換・確認 |
私がメインで使っている参考書と問題集です。よければ一緒に勉強していきましょう(笑)
【PR】▶ あずき本(Linux教科書 LinuCレベル2 Version 10.0対応) 概念や仕組みをしっかり理解したいときの辞書代わりに。まずここで基礎を固めます。
リンク
【PR】▶ スピードマスター LinuCレベル2問題集(白本) 本番に近い難易度で問題演習したいときに。あずき本で理解したあとに使うと定着度が上がります。
リンク
試験の申し込みはピアソンVUEの受験チケットが便利です。レベル1・レベル2どちらにも使える共通チケットで、楽天市場での購入なので楽天ポイントも貯まってお得ですよ!
【PR】▶ 【ピアソン専用】LinuCレベル1・レベル2・300試験・303試験・304試験共通受験チケット(電子チケット)
リンク
✅ まとめ
お疲れ様でした!今回のポイントをおさらいしましょう。
virt-install:新規VM作成専用。--importで既存ディスクから起動可virsh list --all:停止中も含む全VMを確認。--allなしは起動中のみvirsh destroy:強制終了(電源断)。削除ではない点に注意!削除はvirsh undefinevirsh snapshot-create-as:スナップショット作成。snapshot-revertでロールバック- qcow2:KVM標準のディスク形式。シン・プロビジョニング+スナップショット対応
virt-clone:VM複製。クローン元は停止状態が必要- ライブマイグレーション:
virsh migrate --liveで停止せずに別ホストへ移行
主題2.05はこれで2記事完走です!仮想化の概念からコマンド操作まで、しっかり押さえられましたね。
皆さんにとって、今日も素敵な1日になりますように!
参考:LPI-Japan 公式試験範囲 https://linuc.org/linuc2/range/201.html
※本記事はLinuC レベル2 Version 10.0 の出題範囲をもとに作成しています。