如何将正在运行的 KVM(带有完整磁盘复制)迁移到另一个节点?

如何将正在运行的 KVM(带有完整磁盘复制)迁移到另一个节点?

我正在对 KVM 进行测试,我想看看我是否可以进行热迁移,我的意思是虚拟机在迁移期间不会停止运行(但几秒钟的冻结是可以的)。我使用一个小集群进行测试:kvm1、kvm2 和 kvmnfs。

  • kvm1 和 kvm2 运行虚拟机
  • kvmnfs 是一个 NFS 服务器,它安装在 kvm1 和 kvm2 上的 /KVM 上

要将 VM(实际上只有 RAM)从 kvm1 迁移到 kvm2,我在 kvm2 上运行与 kvm1 相同的 kvm 命令(使用 -incoming tcp:0:4444),然后使用“migrate -d tcp:kvm2:4444”:它效果很好,因为 VM 文件对两台机器来说都是通用的。

现在,我想将 kvm1 的本地 VM 文件(不再有 NFS)完全迁移到 kvm2(RAM + 磁盘)。我尝试在 kvm2 上使用 touch 创建一个空文件,并使用相同的 kvm 命令行 +“-incoming ...”)。然后在 kvm1 上使用“migrate -d tcp:kvm2:4444”:它会复制所有内容,然后... VM 失败(任何 I/O 磁盘都会出现 I/O 错误)!而我在 kvm2 上使用 touch 创建的 VM 文件仍然大小为 0 字节。

我做错了什么?在 kvm2 上使用的具体命令是什么?在监控模式下,在 kvm1 上启动的命令是什么?

答案1

不可能。你要么有一个集中式存储(集群 FS + SAN/DAS 或 NFS),并且两个主机都可以访问映像,要么使用 drbd 之类的工具使映像保持同步

//复制为答案。

补充:你可以编写脚本,通过将客户机暂停到 RAM,将映像复制到另一台主机,添加内存状态,然后恢复虚拟机。但停机时间将相当于停止虚拟机,复制它并重新启动

相关内容