私はKVMゲストを1つのホストから別のホストに移行する必要があります。移行はホットで行う必要はありません。そのストレージは現在、ブリッジされたネットワークアダプターを備えたLVMブロックデバイスによってサポートされています。両方のサーバーのカーネル、libvirt、qemuなどのバージョンが同じです。これを行う最も簡単な方法は何ですか?
これについての私の推測は:
dd the block devices from server A to server B
export the xml VM definition on A, copy it to B
edit the xml to refer to the new physical device names
create the machine referencing that xml file
あなたが正しいです。私はこれを数回行いました。私はnetcatを使用して、ネットワーク全体のドライブをイメージ化しました。これは私が使用した方法です:
nc -l 1234 | dd of=/dev/<vgname>/<lvname>
を実行します。これは、netcatにネットワークポートでリッスンし、すべてを論理ボリュームにパイプするように指示します。dd if=/dev/<vgname>/<lvname> | nc <targetip> 1234
を実行します。これはnetcatにすべてをネットワーク経由でターゲットホストにパイプするように指示します。/etc/libvirt/qemu/
からxml定義をコピーします。/etc/init.d/libvirt-bin reload
はトリックを実行する必要があります(systemdを使用するディストリビューションの場合はsystemctl restart libvirtd
)KVM(qemu 1.3以降)にストレージ移行機能が含まれるようになったため、以前の回答で示されたハッカーを実行する必要がなくなりました。 VMを通常どおりに移行するだけです。たとえば、virsh migrate "Guest Name" qemu+ssh://dest-hypervisor/system
または、選択したGUIの[Nice]ボタンをクリックします。
安全ではない接続でマシンをパイプする必要があり、virshを使用したため、私は詳細が異なるやや似たアプローチに従いました。
ssh-copy id root@newserver
を使用して、2つのホスト間でpubkeyを共有しますdd if=/dev/<vgname>/<lvname> | ssh root@targethost 'dd of=/dev/<vgname>/<lvname>'
を使用して、ボリュームをターゲットホストにパイプします。virsh dumpxml <machinename> dump.xml
scp dump.xml root@targethost:/root/
virsh define dump.xml
でマシンを定義します。マシンはxmlから作成されます。 virsh create machine
は使用しないでください。再起動後にマシンを再定義する必要があります。virsh start machinename
新しいマシンでNAT=のインターネット接続がない場合は、ip-forwardingが有効になっていることを確認してください。
Ubuntuの場合nano /etc/sysctl.conf
コメント解除net.ipv4.ip_forward=1