Red Hat Training

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

20.13. スナップショットの使用

20.13.1. データのコピーによるバックチェーンの短縮

このセクションでは、virsh blockcommit domain <path> [<bandwidth>] [<base>] [--shallow] [<top>] [--active] [--delete] [--wait] [--verbose] [--timeout <number>] [--pivot] [--keep-overlay] [--async] [--keep-relative] コマンドを使用して、バッキングチェーンを短くする方法を説明します。コマンドには、ヘルプメニューまたは man ページに記載されている数多くのオプションがあります。
virsh blockcommit コマンドは、チェーンのいずれかにデータをバッキングファイルにコピーし、コミットされた部分をバイパスするために、残りのチェーンをピボットできるようにします。たとえば、以下は現在の状態であるとします。
      base ← snap1 ← snap2 ← active.
virsh blockcommit を使用すると、snap2 のコンテンツを snap1 に移動し、チェーンから snap2 を削除して、バックアップをはるかに速にします。

手順20.1 バッキングチェーンの短縮方法

  • 以下のコマンドを入力します。guest1 はゲスト仮想マシンの名前に置き換え、disk1 はディスク名に置き換えます
    # virsh blockcommit guest1
    disk1 --base snap1 --top snap2 --wait --verbose
    snap2 の内容は snap1 に移動し、以下のようになります。
    ベース ≥ snap1 ≥ アクティブ。Snap2 は有効ではありませんがなくなり、削除することができます。
    警告
    virsh blockcommit は、--base 引数に依存するファイル(つまり、--top 引数に依存するファイル以外)が破損します。このファイルは、ベースを指すようになりました。これを防ぐには、複数のゲストが共有されるファイルに変更をコミットしないでください。--verbose オプションを使用すると、画面で進捗を表示できます。

20.13.2. イメージの頻度によるバックチェーンの短縮

virsh blockpull は、以下のアプリケーションで使用できます。
  1. バッキングイメージタグからのデータでデータを入力して、イメージをフラット化します。これにより、イメージファイルを自己完結型にし、バッキングイメージに依存しなくなり、以下のようになります。
    • before: base.img UserGroup active
    • after: base.img はゲストで使用されなくなり、Active にはすべてのデータが含まれます。
  2. バッキングイメージチェーンの一部をフラット化します。これは、スナップショットを最上位のイメージにフラット化するために使用できます。以下に例を示します。
    • before: base dNSName sn1 kieBaseConfsn2 active
    • after: base.img CallbackImpl Active。active には sn1 および sn 2 からのすべてのデータが含まれ、ゲストで sn1 と sn2 のいずれのデータも使用されなくなりました。
  3. ディスクイメージをホスト上の新しいファイルシステムに移動します。これにより、ゲストの実行中にイメージファイルを移動でき、以下のようになります。
    • before(元のイメージファイル): /fs1/base.vm.img
    • After: /fs2/active.vm.qcow2 が新しいファイルシステムになり、/fs1/base.vm.img が使用されなくなりました。
  4. コピー後のストレージ移行で役に立ちます。ライブマイグレーションの完了後に、ディスクイメージが移行元ホストから移行先ホストにコピーされます。
    短いバージョンでは、/source-host/base.vm.img After:/destination-host/active.vm.qcow2. / source-host/base.vm.img が使用されなくなりました。

手順20.2 データをフラット化してバッキングチェーンを短くする方法

  1. virsh blockpull を実行する前にスナップショットを作成すると便利です。これには、virsh snapshot-create-as コマンドを使用します。以下の例では、guest1 をゲスト仮想マシンの名前に置き換え、snap1 をスナップショットの名前に置き換えます。
    # virsh snapshot-create-as guest1
    snap1 --disk-only
  2. チェーンの形式が以下のようになっているのであれば、base snap1 snap1 snap2 kieBaseConf Active command を入力します 。guest1 は、ゲスト仮想マシン名と path1 を、ディスクへのソースパス(例:/home/username/VirtualMachines/* )に置き換えます。
    # virsh blockpull guest1
    path1
    このコマンドにより、snap2 からアクティブにデータをプルすることで、snap1 がアクティブなバッキングファイルが作成されます。これにより、base kieBaseConf snap1 kieBaseConf active になります
  3. virsh blockpull が完了すると、チェーンに追加のイメージを作成したスナップショットの libvirt 追跡は便利です。このコマンドで古いスナップショットの追跡を削除し、guest1 をゲスト仮想マシンの名前に置き換え、snap1 をスナップショットの名前に置き換えます。
    # virsh snapshot-delete guest1
    snap1 --metadata
virsh blockpull の追加アプリケーションは、以下のように実行できます。

例20.31 単一イメージをフラット化し、サポートする証明書チェーンからのデータでデータを設定する方法

以下の例では、guest1vda 仮想ディスクをフラット化し、イメージに先行する操作が完了するまでバッキングイメージチェーンのデータを設定します。
# virsh blockpull guest1 vda --wait

例20.32 バッキングイメージチェーンの一部をフラット化する方法

以下の例では、/path/to/base.img ディスクイメージに基づいて、ゲスト guest1 上のvda 仮想ディスクをフラット化しています。
# virsh blockpull guest1
vda /path/to/base.img --base --wait

例20.33 ホスト上の新しいファイルシステムへディスクイメージを移行する方法

ホスト上の新しいファイルシステムにディスクイメージを移動するには、以下の 2 つのコマンドを実行します。各コマンドで、guest1 をゲスト仮想マシンの名前に置き換え、disk1 を仮想ディスク名に置き換えます。XML のファイル名とスナップショットの場所および名前へのパスを変更します。
# virsh snapshot-create guest1
--xmlfile /path/to/snap1.xml --disk-only
# virsh blockpull guest1
disk1 --wait

例20.34 コピー後のストレージ移行でライブマイグレーションを使用する方法

ポストコピー型ストレージ移行のライブマイグレーションを使用するには、以下のコマンドを入力します。
宛先時に、バッキングファイルをホストのバッキングファイルの名前および場所に置き換えて、以下のコマンドを実行します。
# qemu-img create -f qcow2
-o backing_file=/source-host/vm.img /destination-host/vm.qcow2
ソースで次のコマンドを実行し、guest1 はゲスト仮想マシンの名前に置き換えます。
# virsh migrate guest1
宛先で以下のコマンドを入力します。guest1 はゲスト仮想マシンの名前に置き換え 、disk1 は仮想ディスク名に置き換えます。
# virsh blockpull guest1
disk1 --wait

20.13.3. ゲスト仮想マシンのブロックデバイスのサイズの変更

ゲストの仮想マシンの実行中に、virsh blockresize コマンドを使用してゲスト仮想マシンのブロックデバイスのサイズを変更できます。これは、ブロックデバイスの絶対パスを使用します。これは、一意のターゲット名(<target dev="name"/>)またはソースファイル(<sourcefile="name"/>)に対応しています。これは、ゲスト仮想マシンにアタッチされているディスクデバイスのいずれかに適用できます (virsh domblklist コマンドを使用して、特定のゲスト仮想マシンに関連するブロックデバイスの簡単な情報を示すテーブルを出力できます)。
注記
ライブイメージのサイズ変更は常にイメージのサイズ変更になりますが、ゲストが直ちに選択されない可能性があります。最近のゲストカーネルでは、virtio-blk デバイスのサイズは自動的に更新されるようになりました(古いカーネルにはゲスト再起動が必要です)。SCSI デバイスを使用する場合は、コマンド echo > /sys/class/scsi_device/0:0:0:0/device/rescan を使用して、ゲストの再スキャンを手動でトリガーする必要があります。また、IDE では、新しいサイズを取得する前にゲストを再起動する必要があります。

例20.35 ゲスト仮想マシンブロックデバイスのサイズ変更方法

以下の例では、guest1 仮想マシンのブロックデバイスを 90 バイトにサイズを変更します。
# virsh blockresize guest1
90 B

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