我有一个KVM客人,我需要从一个主机迁移到另一个。 迁移不需要太热。 其存储当前由LVM块设备支持,并带有桥接networking适配器。 两个服务器都有相同的内核,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来通过networking映像驱动器。 这是我使用的方法:
nc -l 1234 | dd of=/dev/<vgname>/<lvname> nc -l 1234 | dd of=/dev/<vgname>/<lvname>主机上的nc -l 1234 | dd of=/dev/<vgname>/<lvname> 。 这告诉netcat侦听networking端口并将所有内容都传送到逻辑卷。 dd if=/dev/<vgname>/<lvname> | nc <targetip> 1234 源主机上的dd if=/dev/<vgname>/<lvname> | nc <targetip> 1234 。 这告诉netcat将networking上的所有内容传送到目标主机。 /etc/libvirt/qemu/从源复制到目标。 /etc/init.d/libvirt-bin reload应该做的窍门(或systemctl restart libvirtd分发使用systemd) KVM(自qemu 1.3开始)现在包含了存储迁移function,因此不再需要在旧的答案中显示任何hackery。 像往常一样迁移虚拟机,例如virsh migrate "Guest Name" qemu+ssh://dest-hypervisor/system或者点击您所选GUI中的漂亮button。
我遵循了一个有点类似的方法,因为我需要pipe理一个不安全的连接,并使用virsh:
ssh-copy id root@newserver在两台主机之间共享pubkey ssh-copy id root@newserver from“oldserver” dd if=/dev/<vgname>/<lvname> | ssh root@targethost 'dd of=/dev/<vgname>/<lvname>'将卷传输到目标主机dd if=/dev/<vgname>/<lvname> | ssh root@targethost 'dd of=/dev/<vgname>/<lvname>' 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创build。 不要使用virsh create machine ,那么在重新启动后必须重新定义机器。 virsh start machinename 如果在新机器上没有与NAT的networking连接,请确保启用了ip-forwarding。
在Ubuntu nano /etc/sysctl.conf取消注释net.ipv4.ip_forward=1