Red Hat Training

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

20.13.2. イメージの平坦化によるバッキングチェーンの短縮

virsh blockpull は、以下のアプリケーションで使用できます。
  1. バッキングイメージチェーンからのデータをイメージに入力して、イメージをフラット化します。これにより、イメージファイルは自己完結型になり、背面イメージに依存しなくなり、以下のようになります。
    • 前: base.img ← active
    • 後: base.img がゲストで使用されなくなり、Active にすべてのデータが含まれるようになりました。
  2. バッキングイメージチェーンの一部を平坦化します。これを使用すると、スナップショットをトップレベルイメージに平坦化し、以下のようになります。
    • 前: base ← sn1 ←sn2 ← active
    • 後: base.img ← active.アクティブ には、sn1 および sn2 のすべてのデータが含まれるようになりました。また、ゲストでは sn1 も sn2 も使用されないことに注意してください。
  3. ディスクイメージを、ホストの新しいファイルシステムに移動します。これにより、ゲストの実行中にイメージファイルを移動できます。以下のようになります。
    • 前 (元のイメージファイル) - /fs1/base.vm.img
    • 後: /fs2/active.vm.qcow2 が新しいファイルシステムになり、/fs1/base.vm.img が使用されなくなります。
  4. コピー後のストレージ移行を使用したライブマイグレーションに役立ちます。ディスクイメージは、ライブマイグレーションの完了後に、移行元ホストから移行先ホストにコピーされます。
    要するに、こういうことです: 前: /source-host/base.vm.img 後: /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 ← snap2 ← active のようになる場合は、以下のコマンドを入力し、guest1 をゲスト仮想マシンの名前に置き換え、path1 をディスクへのソースパス (/home/username/VirtualMachines/*) に置き換えます。
    # virsh blockpull guest1 path1
    このコマンドは、snap2 からデータをアクティブにプルすることで、snap1 のバッキングファイルをアクティブな状態にします。その結果、base ← snap1 ← active になります。
  3. virsh blockpullが完了すると、チェーンに追加イメージを作成したスナップショットのlibvirt追跡は役に立ちなくなります。古いスナップショットのトラッキングを削除する場合は、次のコマンドを実行します。guest1 をゲスト仮想マシンの名前に置き換え、snap1 をスナップショットの名前に置き換えます。
    # virsh snapshot-delete guest1 snap1 --metadata
virsh blockpull の追加アプリケーションは、以下のように実行できます。

例20.31 1 つのイメージを平坦化し、バッキングイメージチェーンのデータを取り込む方法

次の例では、ゲスト guest1vda 仮想ディスクを平坦化し、イメージをバッキングイメージチェーンのデータで取り込み、取り込み操作が完了するまで待機します。
# virsh blockpull guest1 vda --wait

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

次の例では、/path/to/base.img ディスクイメージに基づいて、ゲストguest1vda 仮想ディスクを平坦化します。
# 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