13.2. コマンドラインを使用した仮想マシンのスナップショットの作成
仮想マシン (VM) の状態をスナップショットに保存するには、virsh snapshot-create-as コマンドを使用できます。
前提条件
仮想マシンがファイルベースのストレージを使用している。これが当てはまるかどうかを確認するには、次のコマンドを使用して、
diskデバイスのdisk typeがfileと表示されることを確認します。# virsh dumpxml <vm-name> | grep "disk type" <disk type='file' device='disk'> <disk type='file' device='cdrom'>実行中の仮想マシンのメモリーを含む仮想マシンスナップショットを作成する場合は、仮想マシンのメモリーを保存するための十分なディスク領域が必要です。
- 仮想マシンのメモリーを保存するための推奨最小容量は、仮想マシンに割り当てられた RAM と同じ容量です。たとえば、32 GB の RAM を搭載した仮想マシンのメモリーを保存するには、最大 32 GB のディスク領域が必要です。
- 仮想マシンの I/O 負荷が大きい場合、大幅な追加ディスク領域が必要になる可能性があります。
- 仮想マシンに VFIO パススルーデバイスが割り当てられている場合、追加のディスク領域が必要になる可能性があります。
仮想マシンを一時停止せずにスナップショットを作成すると、追加のディスク領域が必要になる場合があります。
重要Red Hat では、非常に高いワークロードがかかっている実行中の仮想マシンのメモリーや、VFIO パススルーデバイスを使用している実行中の仮想マシンのメモリーを保存しないことを推奨しています。このような仮想マシンのメモリーを保存すると、ホストディスクがいっぱいになり、システムのデグレードが発生する可能性があります。このような仮想マシンは、代わりにメモリーなしでスナップショットを作成することを検討してください。
また、すべての VFIO デバイスがメモリーを含むスナップショットの作成に対応しているわけではないことに注意してください。現在、メモリーを使用したスナップショットの作成は、次の状況でのみ正しく機能します。
- 割り当てられている VFIO デバイスが、移行機能が有効な Mellanox VF である。
- 割り当てられている VFIO デバイスが、移行機能が有効な NVIDIA vGPU である。
手順
必要なパラメーターを指定して仮想マシンのスナップショットを作成するには、
virsh snapshot-create-asコマンドを使用します。# virsh snapshot-create-as <vm-name> <snapshot-name> <optional-description> <additional-parameters>シャットダウンされた仮想マシンのスナップショットを作成するには、
--disk-onlyパラメーターを使用します。たとえば、次のコマンドは、シャットダウンされたTestguest1仮想マシンの現在のディスク状態からSnapshot1を作成します。# virsh snapshot-create-as Testguest1 Snapshot1 --disk-only Domain snapshot Snapshot1 created.実行中の仮想マシンのディスク状態をメモリーを除いて保存するスナップショットを作成するには、
--disk-only --quiesceパラメーターを使用します。たとえば、次のコマンドは、実行中のTestguest2仮想マシンの現在のディスク状態から、clean system installという説明を持つSnapshot2を作成します。# virsh snapshot-create-as Testguest2 Snapshot2 "clean system install" --disk-only --quiesce Domain snapshot Snapshot2 created.実行中の仮想マシンを一時停止して、ディスク状態とメモリーを保存するスナップショットを作成するには、
--memspecパラメーターを使用します。たとえば、次のコマンドは、Testguest3仮想マシンを一時停止して、仮想マシンの現在のディスクとメモリーの状態からSnapshot3を作成します。仮想マシンのメモリーは、/var/lib/libvirt/images/saved_memory.imgファイルに保存されます。スナップショットが完成すると、仮想マシンが自動的に操作を再開します。# virsh snapshot-create-as Testguest3 Snapshot3 --memspec /var/lib/libvirt/images/saved_memory.img Domain snapshot Snapshot3 created.スナップショット作成時に仮想マシンを一時停止すると、ダウンタイムが発生します。しかし、特に負荷の高い仮想マシンの場合は、一時停止したほうが、実行中の仮想マシンのライブスナップショットを (
--liveオプションを使用して) 作成するよりも、確実に機能する可能性があります。実行中の仮想マシンのディスク状態とライブメモリーを保存するスナップショットを作成するには、
--live --memspecパラメーターを使用します。たとえば、次のコマンドは、実行中のTestguest4仮想マシンの現在のディスクとメモリーの状態からSnapshot4を作成し、メモリーの状態を/var/lib/libvirt/images/saved_memory2.imgファイルに保存します。# virsh snapshot-create-as Testguest4 Snapshot4 --live --memspec /var/lib/libvirt/images/saved_memory2.img Domain snapshot Snapshot4 created.警告仮想マシンのメモリーをスナップショットに保存すると、仮想マシンのゲストオペレーティングシステムで実行中のプロセスの状態が保存されます。ただし、このようなスナップショットに戻したときに、ネットワーク接続の喪失やシステム時間の同期の欠如など、さまざまな要因によりプロセスが失敗する可能性があります。
検証
指定した仮想マシンに関連付けられているスナップショットをリスト表示します。
# virsh snapshot-list <Testguest1> Name Creation Time State -------------------------------------------------------------- Snapshot1 2024-01-30 18:34:58 +0100 shutoffスナップショットが 外部 として作成されたことを確認します。
# virsh snapshot-dumpxml <Testguest1> <Snapshot1> | grep external <disk name='vda' snapshot='external' type='file'>このコマンドの出力に
snapshot='external'が含まれている場合、スナップショットは外部スナップショットであり、Red Hat によって完全にサポートされます。