私のゲストマシンには2つのパーティションがあります(80GB + 1TB)。どちらもLVM上にあります。最小限のダウンタイムですべてのディスクを別のマシンに転送したい。 ncで別のマシンを転送しました。それは4日かかり、転送中に私のVMはオフになりました。
ダーティページを転送した後、スナップショットを作成してみました。しかし、LVMでのAFAIKは不可能です。ターゲットマシンにLVMセットアップがなく、パーティション化されていない空き領域があります。したがって、ターゲットマシンのディスクはrawファイルイメージである必要があります。
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source dev='/dev/vg-datastore/lv-vm-1138'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source dev='/dev/vg-datastore-sata/lv-vm-1138-2'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</disk>
ソースホスト:
ターゲットホスト:
KVM/libvirtは、VMライブマイグレーションとストレージマイグレーション(シェアードナッシングセットアップ)をサポートしますが、いくつかの制限があります。主な問題は、ストレージプールの構成が異なるため、確信が持てませんlibvirt
は、VMイメージを問題なく移行します。
ライブマイグレーション+ストレージコピーを実行するコマンドは次のとおりです。
virsh migrate --live --copy-storage-all --persistent qemu + ssh:// root @/system
このコマンドは、リモートホストへの有効なlibvirtベースの接続があることを前提としています。
仮想ディスクの移行に問題がある場合は、fallocate /dev/vg-datastore/lv-vm-1138 -l 80G
および/dev/vg-datastore-sata/lv-vm-1138-2 -l 1T
のようなものを(宛先ホストで)実行して、スタブ宛先仮想ディスクファイルを作成してみてください。
とにかく、ホスト間の違いにより、これはでこぼこ道になる可能性があります。
VMイメージを移行する最も簡単な方法は、 blocksync
を使用して、増分ディスクコピーアプローチを使用することです。
リンクされたblocksync
プログラムは、 この元のスクリプト (ちなみに このスクリプト の改良版)に基づく個人的な分岐バージョンであることに注意してください)。私は明らかにコードにNO RESPONSIBILITYを仮定し、徹底的にテストすることを強くお勧めします本番仮想マシン/ディスクファイルで使用する前。いつものように、あなた[〜#〜] [〜#〜]は、何かを行う前に、確認済みの適切なバックアップを持っている必要があります。
EDIT:以下のコメントで提案されているように、ブロックデバイス/仮想イメージファイルを同期する別の優れたソフトウェアは bdsync
。アプローチは基本的に同じです。VMの実行中にディスクファイルの最初の「シード」コピーを作成し、次にVMを停止して、最後の以前、私はbdsync
開発者に同様の質問をしました 詳細はここを参照 。