13.2. コマンドラインインターフェイスを使用した仮想マシンのスナップショットの作成
仮想マシン (VM) の状態をスナップショットに保存するには、virsh snapshot-create-as
コマンドを使用できます。
前提条件
- ホストが RHEL 9.4 以降を使用している。
仮想マシンがファイルベースのストレージを使用している。これが当てはまるかどうかを確認するには、次のコマンドを使用して、
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 によって完全にサポートされます。
関連情報
- スナップショットのメタデータに関するアップストリームの libvirt の情報
-
システム上の
virsh
man ページ