这里是使用基于存储的迁移在 KVM/QEMU 下迁移虚拟机的具体命令:

  1. 在源主机上导出虚拟机的存储设备。假设虚拟机的存储设备是 /dev/vda: bash virsh dumpxml <vm_name> > vm.xml 这会输出虚拟机的配置文件 vm.xml。
  2. 卸载源主机上的存储设备: bash virsh dumpxml <vm_name> | grep "source file" | cut -d "'" -f2

找到存储设备的文件路径,假设是 /var/lib/libvirt/images/vm.img

virsh destroy <vm_name> # 关闭虚拟机 virsh undefine <vm_name> # 取消定义虚拟机

rm /var/lib/libvirt/images/vm.img # 删除存储设备文件 3. 将 vm.img 存储设备文件复制到目标主机。可以使用 scp 命令或 USB 驱动器。 4. 在目标主机定义虚拟机: bash virsh define vm.xml # 定义虚拟机 virsh start <vm_name> # 启动虚拟机 5. 虚拟机启动后,其存储设备将开始使用目标主机上的 vm.img 文件。迁移完成! 这种基于复制存储设备实现的虚拟机迁移,可以最大限度保留虚拟机运行环境。但是,如果存储设备文件过大,复制的时间会比较长。 此外,利用共享存储如 NFS 也可以实现较快速的虚拟机迁移。需要在源/目标主机挂载同一个 NFS 共享,然后修改虚拟机配置使用该共享作为存储设备。