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
- チェーンが次のようになっている場合: base ← snap1 ← snap2 ← active 次を実行します。
# virsh blockpull $dom $disk snap1
このコマンドは、snap2 からデータをアクティブにプルすることで、snap1 のバッキングファイルをアクティブな状態にします。その結果、base ← snap1 ← active になります。 - blockpullが完了すると、チェーンに追加イメージを作成したスナップショットのlibvirt追跡は役に立ちなくなります。次のコマンドを使用して、古いスナップショットの追跡を削除します。
# virsh snapshot-delete $dom $name - metadata
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
- ソース実行時:
# virsh migrate example-domain
- destination 実行時:
# virsh blockpull example-domain vda - wait