如何将 KVM 来宾从主机迁移到另一个?

7 migration kvm-virtualization

我有一个 KVM 来宾,需要从一台主机迁移到另一台主机。迁移不需要热进行。它的存储目前由 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
Run Code Online (Sandbox Code Playgroud)

syb*_*eon 9

你是对的。我已经这样做了几次。我使用netcat对网络上的驱动器进行映像。这是我使用的方法:

  1. 在目标上创建逻辑卷。它应该与源卷的大小相同。
  2. nc -l 1234 | dd of=/dev/<vgname>/<lvname>在目标主机上运行。这告诉netcat侦听网络端口并将所有内容通过管道传输到逻辑卷。
  3. 干净地关闭源计算机以将所有内容写入磁盘。
  4. dd if=/dev/<vgname>/<lvname> | nc <targetip> 1234在源主机上运行。这告诉netcat通过网络将所有内容通过管道传输到目标主机。
  5. 去拿杯咖啡。这需要几分钟时间,具体取决于您的卷大小和网络速度。
  6. 将 xml 定义从/etc/libvirt/qemu/源复制到目标。
  7. 编辑xml 文件的存储部分和任何其他必要的位,例如网桥名称(如果它们不同)。
  8. 在目标上重新加载 libvirt 以读取 xml。一个/etc/init.d/libvirt-bin reload应该做的伎俩(或systemctl restart libvirtd为分布在使用systemd)
  9. 在目标主机上启动机器。


Mic*_*ton 9

KVM(自 qemu 1.3 起)现在包含存储迁移功能,因此不再需要执行旧答案中显示的任何技巧。只需像往常一样迁移 VM,例如virsh migrate "Guest Name" qemu+ssh://dest-hypervisor/system或单击您选择的 GUI 中的漂亮按钮。