14.5.16. ブロックプルを使用してバッキングチェーンを短縮する
blockpull は、以下のアプリケーションで使用できます。
- バッキングイメージチェーンからのデータをイメージに入力して、イメージをフラット化します。これにより、イメージファイルは自己完結型になり、背面イメージに依存しなくなり、以下のようになります。
- 前: base.img ← Active
- 後: base.img がゲストで使用されなくなり、Active にすべてのデータが含まれるようになりました。
- バッキングイメージチェーンの一部を平坦化します。これを使用すると、スナップショットをトップレベルイメージに平坦化し、以下のようになります。
- 前: base ← sn1 ←sn2 ← active
- 後: base.img ← active.アクティブには、sn1 および sn2 のすべてのデータが含まれるようになりました。また、ゲストでは sn1 も sn2 も使用されないことに注意してください。
- ディスクイメージを、ホストの新しいファイルシステムに移動します。これにより、ゲストの実行中にイメージファイルを移動できます。以下のようになります。
- 前 (元のイメージファイル) -
/fs1/base.vm.img - 後:
/fs2/active.vm.qcow2が新しいファイルシステムになり、/fs1/base.vm.imgが使用されなくなります。
- コピー後のストレージ移行を使用したライブマイグレーションに役立ちます。ディスクイメージは、ライブマイグレーションの完了後に、移行元ホストから移行先ホストにコピーされます。要するに、こういうことです: 前:
/source-host/base.vm.img後:/destination-host/active.vm.qcow2。/source-host/base.vm.imgは使用されなくなりました。
手順14.3 ブロックプルを使用してバッキングチェーンを短縮する
- blockpull を実行する前にこのコマンドを実行すると役立つ場合があります。
virsh snapshot-create-as $dom $name - disk-only
# virsh snapshot-create-as $dom $name - disk-onlyCopy to Clipboard Copied! Toggle word wrap Toggle overflow - チェーンが次のようになっている場合: base ← snap1 ← snap2 ← active 次を実行します。
virsh blockpull $dom $disk snap1
# virsh blockpull $dom $disk snap1Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、snap2 からデータをアクティブにプルすることで、snap1 のバッキングファイルをアクティブな状態にします。その結果、base ← snap1 ← active になります。 - blockpullが完了すると、チェーンに追加イメージを作成したスナップショットのlibvirt追跡は役に立ちなくなります。次のコマンドを使用して、古いスナップショットの追跡を削除します。
virsh snapshot-delete $dom $name - metadata
# virsh snapshot-delete $dom $name - metadataCopy to Clipboard Copied! Toggle word wrap Toggle overflow
blockpull 追加アプリケーションは、以下のように実行できます。
- 単一のイメージをフラット化し、そのバッキングイメージチェーンからのデータを取り込むには: # virsh blockpull example-domain vda - wait
- バッキングイメージチェーンの一部をフラット化するには: # virsh blockpull example-domain vda - base /path/to/base.img - wait
- ディスクイメージをホスト上の新しいファイルシステムに移動するには: # virsh snapshot-create example-domaine - xmlfile /path/to/new.xml - disk-only に続いて # virsh blockpull example-domain vda - wait
- コピー後のストレージ移行でライブ移行を使用する
- destination 実行時:
qemu-img create -f qcow2 -o backing_file=/source-host/vm.img /destination-host/vm.qcow2
# qemu-img create -f qcow2 -o backing_file=/source-host/vm.img /destination-host/vm.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ソース実行時:
virsh migrate example-domain
# virsh migrate example-domainCopy to Clipboard Copied! Toggle word wrap Toggle overflow - destination 実行時:
virsh blockpull example-domain vda - wait
# virsh blockpull example-domain vda - waitCopy to Clipboard Copied! Toggle word wrap Toggle overflow