13.2. コマンドラインインターフェイスを使用した仮想マシンのスナップショットの作成

仮想マシン (VM) の状態をスナップショットに保存するには、virsh snapshot-create-as コマンドを使用できます。

前提条件

  • ホストが RHEL 9.4 以降を使用している。
  • 仮想マシンがファイルベースのストレージを使用している。これが当てはまるかどうかを確認するには、次のコマンドを使用して、disk デバイスの disk typefile と表示されることを確認します。

    # 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 である場合にのみ正しく機能します。

手順

  • 必要なパラメーターを指定して仮想マシンのスナップショットを作成するには、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.
警告

仮想マシンのメモリーをスナップショットに保存すると、仮想マシンのゲストオペレーティングシステムで実行中のプロセスの状態が保存されます。ただし、このようなスナップショットに戻したときに、ネットワーク接続の喪失やシステム時間の同期の欠如など、さまざまな要因によりプロセスが失敗する可能性があります。

検証

  1. 指定した仮想マシンに関連付けられているスナップショットをリスト表示します。

    # virsh snapshot-list <Testguest1>
    
     Name                    Creation Time               State
    --------------------------------------------------------------
    Snapshot1               2024-01-30 18:34:58 +0100   shutoff
  2. スナップショットが 外部 として作成されたことを確認します。

    # virsh snapshot-dumpxml <Testguest1> <Snapshot1> | grep external
    
      <disk name='vda' snapshot='external' type='file'>

    このコマンドの出力に snapshot='external' が含まれている場合、スナップショットは外部スナップショットであり、Red Hat によって完全にサポートされます。