Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

20.39. スナップショットの管理

以下のセクションでは、ゲスト仮想マシンのスナップショットを操作するために実行できるアクションを説明します。スナップショットは、指定した時点でゲスト仮想マシンのディスク、メモリー、およびデバイスの状態を取り、今後使用するために保存します。スナップショットには、OS イメージの「clean」コピーを保存することで、ゲスト仮想マシンの状態を保存するのが破壊的な操作になる可能性があるので、多くの用途があります。スナップショットは一意の名前で識別されます。スナップショットのプロパティーを表すために使用される XML 形式に関するドキュメントは、libvirt アップストリーム Web サイトを参照してください
重要
Red Hat Enterprise Linux 7 は、ゲスト仮想マシンが一時停止または電源オフ中のスナップショットの作成のみをサポートします。実行中のゲスト( ライブスナップショットとも呼ばれる)のスナップショットの作成は、Red Hat Virtualization™ で利用できます。詳細は、サービス担当者を呼び出します。

20.39.1. スナップショットの作成

virsh snapshot-create コマンドは、ゲスト仮想マシンの XML ファイル( <name><description> 要素や <disks>など)で指定されたプロパティーでゲスト仮想マシンのスナップショットを作成します。スナップショットを実行するには、以下を実行します。
# virsh snapshot-create domain XML file [--redefine [--current] [--no-metadata] [--halt] [--disk-only] [--reuse-external] [--quiesce] [--atomic]
ゲスト仮想マシン名、ID、または uid はゲスト仮想マシンの要件として使用できます。XML 要件は、最低でも name、description、および disks 要素を含む必要のある文字列です。
残りのオプションの引数は以下のとおりです。
  • --disk-only - ゲスト仮想マシンのメモリー状態はスナップショットに含まれていません。
  • XML ファイル文字列が完全に省略されている場合は、libvirt がすべてのフィールドの値を選択します。snapshot-current で一覧表示される新規スナップショットが最新になります。さらに、スナップショットには、ゲスト仮想マシンの状態の通常のシステムチェックポイントではなく、ディスクの状態のみが含まれます。ディスクスナップショットは、完全なシステムチェックポイントよりも高速ですが、ディスクスナップショットに戻すと、電源が突然プルされた時点でのディスクの状態のような、fsck またはジャーナルの再生が必要になる場合があります。--halt および -- disk-only を組み合わせると、一度にディスクにフラッシュされないデータが損失することに注意してください。
  • --halt - スナップショットの作成後にゲスト仮想マシンが非アクティブ状態のままになります。--halt--disk-only を混在させると、メモリーの状態と共にディスクにフラッシュされていないデータが失われます。
  • --redefine は、virsh snapshot-dumpxml によって生成されたすべての XML 要素が有効である場合を指定します。スナップショット階層をあるマシンから別のマシンに移行するために使用できます。削除し、後で同じ名前および UUID で再作成される場合に一時的なゲスト仮想マシンの階層を再作成したり、スナップショットメタデータに若干変更したりできます。このフラグを指定すると、xmlfile の引数は必須であり、--current フラグが指定されていない限り、ゲスト仮想マシンの現在のスナップショットは変更されません。
  • --no-metadata はスナップショットを作成しますが、メタデータはすぐに破棄されます(libvirt はスナップショットを最新として処理せず、--redefine が後でメタデータに関する libvirt を検証するのに使用された場合を除き、スナップショットに戻すことはできません)。
  • --reuse-external を使用して、使用済みおよびスナップショット XML が既存ファイルの宛先を持つ外部スナップショットを要求した場合、宛先が存在し、再利用する必要があります。それ以外の場合は、スナップショットを使用して既存ファイルのコンテンツを失うのを防ぎます。
  • --quiesce libvirt は、ゲストエージェントを使用して、ゲスト仮想マシンのマウントされたファイルシステムのフリーズまたはフリーズを試みます。ただし、ゲスト仮想マシンにゲストエージェントがない場合は、スナップショットの作成に失敗します。スナップショットには、仮想ゲスト仮想マシンのメモリー状態を含めることができます。スナップショットは外部でなければなりません。
  • --Atomic により、libvirt はスナップショットが成功したことを確認するか、変更がない状態で失敗します。これは、すべてのハイパーバイザーが対応しているわけではないことに注意してください。このフラグが指定されていない場合、一部のハイパーバイザーは部分的にアクションの実行後に失敗し、virsh dumpxml を使用して部分的な変更が発生したかどうかを確認する必要があります。
スナップショットメタデータが存在すると、永続的なゲスト仮想マシンの定義を解除しようとします。ただし、一時的なゲスト仮想マシンの場合は、ゲスト仮想マシンが実行を終了するとスナップショットメタデータが警告なしに失われます (破棄などのコマンドや内部ゲストアクションによるものか )。

20.39.2. 現在のゲスト仮想マシンのスナップショットの作成

virsh snapshot-create-as コマンドは、ドメイン XML ファイル (name 要素や説明要素など )で指定されたプロパティーを使用して、ゲスト仮想マシンのスナップショットを作成します。これらの値が XML 文字列に含まれていない場合、libvirt によって値を選択します。スナップショットを実行するには、以下を実行します。
# snapshot-create-as domain {[--print-xml] | [--no-metadata] [--halt] [--reuse-external]} [name] [説明] [--disk-only [--quiesce]] [--atomic] [[--memspec memspec]] [--diskspec] diskspec]
残りのオプションの引数は以下のとおりです。
  • --print-xml は、実際にはスナップショットを作成するのではなく、snapshot-create の適切な XML を作成します。
  • --halt は、スナップショットの作成後にゲスト仮想マシンを非アクティブの状態のままにします。
  • --disk-only は、ゲスト仮想マシンの状態を含まないスナップショットを作成します。
  • --memspec を使用して、チェックポイントが内部か外部であるかを制御できます。フラグが必須であり、[file=]name[,snapshot=type] の memspec で、type は none、internal、または external です。file=name にリテラルのコンマを含めるには、2 番目のコンマでエスケープします。
  • --diskspec オプションを使用すると、--disk-only と外部チェックポイントによる外部ファイルの作成方法を制御できます。このオプションは、ドメイン XML の <disk> 要素の数に応じて複数回発生する可能性があります。各 <diskspec> はディスク[,snapshot=type][,driver=type][,file=name] の形式になります。特定のディスク用に --diskspec を省略すると、仮想マシンの設定のデフォルト動作が使用されます。ディスクまたは file=name にリテラルのコンマを含めるには、2 番目のコンマでエスケープします。リテラル --diskspec は、ドメイン、名前 、および説明が 3 つ含まれる場合を除き、各 diskspec の前に付ける必要があります。たとえば、diskspec ofvda,snapshot=external,file=/path/to,new により、以下の XML が生成されます。
    
    <disk name=’vda’ snapshot=’external’>
       <source file=’/path/to,new’/>
    </disk>
    
    重要
    Red Hat は、他の仮想化ツールによって処理される場合に柔軟性があり、信頼性が高いので、外部スナップショットを使用することを推奨します。外部スナップショットを作成するには、--diskspec vda,snapshot=external オプションを指定して virsh-create-as コマンドを使用します。
    このオプションを使用しない場合、virsh は内部スナップショットを作成しますが、安定性と最適化がないためには推奨されません。「libvirt で外部スナップショットを作成する回避策」
  • --reuse-external が指定されており、ドメイン XML または diskspec オプションは既存のファイルの宛先で外部スナップショットを要求し、次に宛先が存在し、再利用する必要があります。それ以外の場合には、スナップショットを使用して既存ファイルのコンテンツを失うのを防ぎます。
  • --quiesce を指定すると、libvirt はゲストエージェントを使用して、ゲスト仮想マシンのマウントされたファイルシステムのフリーズとアン解放を試みます。ただし、ドメインにゲストエージェントがない場合、スナップショットの作成は失敗します。現在、これには --disk-only を渡す必要もあります。
  • --no-metadata は、スナップショットデータを作成しますが、メタデータはすぐに破棄されます(libvirt はスナップショットを最新として処理せず、snapshot-create が後でメタデータに関する libvirt を提供することでない限り、スナップショットに戻すことはできません。このフラグは --print-xmlと互換性がありません
  • --Atomic により、libvirt はスナップショットが成功したことを確認するか、変更がない状態で失敗します。これは、すべてのハイパーバイザーが対応しているわけではないことに注意してください。このフラグが指定されていない場合、一部のハイパーバイザーは部分的にアクションの実行後に失敗し、virsh dumpxml を使用して部分的な変更が発生したかどうかを確認する必要があります。
警告
現在、64 ビット ARM プラットフォーム ホストで実行している KVM ゲストのスナップショット作成は機能しません。64 ビット ARM の KVM は Red Hat でサポートされていないことに注意してください。

20.39.3. 現在使用中のスナップショットの表示

virsh snapshot-current コマンドは、現在使用中のスナップショットをクエリーするために使用されます。
# virsh snapshot-current domain {[--name] | [--security-info] | [snapshotname]}
snapshotname が使用されていない場合、ゲスト仮想マシンの現在のスナップショットのスナップショット XML が出力として表示されます。--name を指定すると、完全な XML ではなく、現在のスナップショット名のみが出力として送信されます。--security-info が指定されている場合は、セキュリティー機密情報が XML に含まれます。snapshotname を使用して、ゲスト仮想マシンに戻さずに、既存の名前付きスナップショットを現在のスナップショットに戻す要求を生成します。

20.39.4. snapshot-edit

このコマンドは、現在使用中のスナップショットを編集するために使用されます。
# virsh snapshot-edit domain [snapshotname] [--current] {[--rename] [--clone]}
snapshotname--current の両方を指定すると、編集したスナップショットが現在のスナップショットになります。snapshotname が省略される場合、現在のスナップショットを編集するには --current を指定する必要があります。
これは、以下のコマンドシーケンスと同じですが、以下のエラーチェックも含まれます。
# virsh snapshot-dumpxml dom name > snapshot.xml 
# vi snapshot.xml [note - this can be any editor] 
# virsh snapshot-create dom snapshot.xml --redefine [--current] 
--rename を指定すると、スナップショットの名前が変更されます。--clone を指定すると、スナップショット名を変更すると、スナップショットメタデータのクローンを作成します。いずれも指定されていない場合、編集はスナップショット名を変更しません。1 つの qcow2 ファイル内の内部スナップショットなど、一部のスナップショットの内容は元のスナップショット名からしかアクセスできないので、スナップショット名の変更は注意して行う必要があります。

20.39.5. snapshot-info

snapshot-info ドメインコマンドは、スナップショットに関する情報を表示します。使用するには、以下を実行します。
# snapshot-info domain {snapshot | --current}
指定したスナップショットの基本情報、または --current で現在のスナップショットを出力します。

20.39.6. snapshot-list

指定したゲスト仮想マシンのすべての利用可能なスナップショットを一覧表示します。デフォルトでは、スナップショット名、作成時間、およびゲスト仮想マシンの状態の列が表示されます。使用するには、以下を実行します。
# virsh snapshot-list domain [{--parent | --roots | --tree}] [{[--from] snapshot | --current} [--descendants]] [--metadata] [--no-metadata] [--leaves] [--no-leaves] [--inactive] [--active] [--disk-only] [--internal] [--external]
オプションの引数は以下のとおりです。
  • --parent は、各スナップショットの親名を示す出力テーブルに列を追加します。このオプションは --roots または -- tree では使用できません。
  • --roots は、一覧をフィルターして、親を持たないスナップショットのみを表示します。このオプションは --parent または -- tree では使用できません。
  • --tree はツリー形式で出力を表示し、スナップショット名のみを一覧表示します。このオプションは --roots または -- parent とともに使用できません。
  • --from は、リストを指定のスナップショットの子であるスナップショットにフィルターをかけます。または、--current を指定すると、一覧が現在のスナップショットから開始します。--descendants も存在しない場合、分離または --parent とともに使用すると、このリストは直接子に制限されます--tree とともに使用すると 、--descendants の使用は暗黙的なものになります。このオプションは --roots との互換性はありません。--from または -- current の開始点は、--tree オプションも存在しない場合、一覧に含まれないことに注意してください。
  • --leaves が指定されると、この一覧は子を持たないスナップショットのみにフィルターされます。同様に、--no-leaves が指定されている場合には、一覧は子を持つスナップショットのみにフィルターされます。(両方のオプションを省略してもフィルタリングは発生せず、両オプションを指定すると、サーバーがフラグを認識しているかどうかによって同じリストまたはエラーが生成されます)、フィルターオプションは --tree と互換性がないことに注意してください。
  • --metadata を指定すると、libvirt メタデータを使用するスナップショットのみにリストが絞り込まれるため、永続的なゲスト仮想マシンが定義されていないことや、一時的なゲスト仮想マシンの破棄時に失われてしまうためです同様に、--no-metadata が指定された場合、一覧は libvirt メタデータなしに存在するスナップショットのみにフィルターされます。
  • --inactive が指定されていると、この一覧は、ゲスト仮想マシンのシャットダウン時に取得されたスナップショットにフィルターされます。--active が指定されている場合には、ゲスト仮想マシンの実行中に取得されたスナップショットに一覧をフィルターされ、スナップショットにはメモリーの状態が含まれ、実行状態に戻ります。--disk-only が指定されている場合、一覧はゲスト仮想マシンの実行中に実行されたスナップショットにフィルターされます。ただし、スナップショットにはディスクの状態のみが含まれます。
  • --internal が指定されます。一覧は、既存ディスクイメージの内部ストレージを使用するスナップショットにフィルターされます。--external が指定されている場合には、この一覧は、ディスクイメージやメモリーの状態に外部ファイルを使用するスナップショットにフィルターされます。

20.39.7. snapshot-dumpxml

virsh snapshot-dumpxml ドメイン スナップショット コマンドは、ゲスト仮想マシンのスナップショットスナップショット用のスナップショット XML を出力します。使用するには、以下を実行します。
# virsh snapshot-dumpxml domain snapshot [--security-info]
--security-info オプションには、セキュリティー機密情報も含まれます。virsh snapshot-current を使用して、現在のスナップショットの XML に簡単にアクセスすることができます。

20.39.8. snapshot-parent

親スナップショットの名前(存在する場合)、または --current が指定された現在のスナップショットについて出力します。使用するには、以下を実行します。
# virsh snapshot-parent domain {snapshot | --current}

20.39.9. snapshot-revert

指定のドメインをスナップショットで指定したスナップショットまたは現在のスナップショットに戻すか 、--current で現在のスナップショットに戻ります
警告
これは破壊的なアクションであり、最後のスナップショットが取得された後のドメインの変更が失われます。また、snapshot-revert の完了後にドメインの状態が元のスナップショットが作成された時点のドメインの状態になることに注意してください。
スナップショットを元に戻すには、以下を実行します。
# virsh snapshot-revert domain {snapshot | --current} [{--running | --paused}] [--force]
通常、スナップショットに戻すと、スナップショットの作成時にドメインが元の状態のままになります。ただし、ゲスト仮想マシンがないディスクスナップショットは、ドメインが非アクティブ状態のままになる可能性があります。--running オプションまたは -- paused オプションを指定しないと、追加の状態が変更されます(非アクティブドメインの起動や、実行中のドメインを一時停止)。一時的なドメインは非アクティブにできないため、一時的なドメインのディスクスナップショットに戻すときに、これらのフラグのいずれかを使用する必要があります。
スナップショットを元に戻す場合、2 つのケースがあります。これには、--force の使用を続行する必要があります。1 つは、設定を元に戻すための完全なドメイン情報がないスナップショットの場合です。libvirt は、現在の設定がスナップショット時の使用された内容と一致することを証明できないためです。スナップショットが現在の設定と互換性がある libvirt でない場合)、そのスナップショットが実行に失敗する可能性が高くなります。もう 1 つは、実行中のドメインからアクティブな状態に元に戻す場合に、既存のハイパーバイザーを再利用せずに新しいハイパーバイザーを作成する必要があることです。これは、既存の VNC や Spice 接続を中断するなどの欠点があるためです。この条件は、統合に互換性のない設定を使用するアクティブなスナップショットと、--start または -- pause フラグと組み合わせる非アクティブなスナップショットでは発生します。

20.39.10. snapshot-delete

virsh snapshot-delete ドメインコマンドは、指定したドメインのスナップショットを削除します。これを実行するには、以下を実行します。
# virsh snapshot-delete domain {snapshot | --current} [--metadata] [{--children | --children-only}]
このコマンドは、snapshot という名前のドメインのスナップショット、または --current で現在のスナップショットを削除します。このスナップショットに子スナップショットがある場合は、このスナップショットからの変更が子にマージされます。--children オプションを指定すると、このスナップショットと、このスナップショットの子が削除されます。--children-only を使用すると、このスナップショットの子が削除されますが、このスナップショットはそのまま残します。これらの 2 つのフラグは相互排他的です。
--metadata を使用すると、libvirt で維持されるスナップショットのメタデータが削除されます。スナップショットのコンテンツをそのままにしておくと、外部ツールによるアクセスはそのままになります。そうでないと、スナップショットを削除するとその時点からそのデータの内容も削除されます。

このページには機械翻訳が使用されている場合があります (詳細はこちら)。