移动 kvm vm 的正确方法

Oni*_*nic 49 kvm-virtualization ubuntu-12.04

我想知道在两个 KVM 主机之间移动 VM而不使用任何类型的共享存储的正确方法是什么

将磁盘文件和 XML 转储从源 KVM 机器复制到目标机器就足够了吗?如果是这样,需要运行哪些命令才能在目标上导入 vm?

操作系统在 Dom0 和 DomU 上都是 Ubuntu。

提前致谢

dya*_*sny 61

  1. 将 VM 的磁盘从/var/lib/libvirt/imagessrc 主机上复制到目标主机上的相同目录
  2. 在源主机上运行virsh dumpxml VMNAME > domxml.xml并将此 xml 复制到目标主机
  3. 在目标主机上运行 virsh define domxml.xml

启动虚拟机。

  • 如果磁盘位置不同,需要编辑xml的devices/disk节点指向目的主机上的镜像
  • 如果 VM 连接到自定义定义的网络,则需要从目标主机上的 xml 中编辑它们或重新定义它们

    1. 在源机器上 virsh net-dumpxml NETNAME > netxml.xml
    2. 将 netxml.xml 复制到目标机器
    3. 在目标机器上virsh net-define netxml.xml && virsh net-start NETNAME & virsh net-autostart NETNAME

  • 您可以从 xml 中删除设备 UUID,只需将路径“/dev/mapper/vgname-lvname”留在那里 (2认同)

小智 11

由于我还不能发表评论,我必须以这种方式将此附录发布到 dyasny 的回答中。

如果 VM 具有要保留的快照,则应virsh snapshot-dumpxml $dom $name > file.xml为 VM 快照列表中的每个快照转储源上的快照 xml 文件virsh snapshot-list --name $dom

然后在目的地使用virsh snapshot-create --redefine $dom file.xml完成迁移快照。

如果您还关心哪个快照是当前快照,则另外在源:
virsh snapshot-current --name $dom
和目标上执行:
virsh snapshot-current $dom $name

然后您可以使用virsh snapshot-delete --metadata $dom $name每个快照来删除源上的 xml 文件,或者您可以从/var/lib/libvirt/qemu/snapshots/$guestname


资料来源:

  1. libvirt-users 邮件列表

  2. http://kashyapc.com/2012/09/14/externaland-live-snapshots-with-libvirt/