如何将正在运行的虚拟机从一个虚拟机管理程序迁移到另一个虚拟机管理程序?

如何将正在运行的虚拟机从一个虚拟机管理程序迁移到另一个虚拟机管理程序?

在云环境中,将正在运行的虚拟机从一个虚拟机管理程序迁移到另一个虚拟机管理程序实际上是如何工作的?

我知道这是可能的,而且这个功能确实存在。但是,当正在运行的虚拟机从一个虚拟机管理程序迁移到另一个虚拟机管理程序时,实际上会发生什么?我很难想象这是可以做到的,而且不会有丝毫中断?

虽然我可能想象如果裸机物理上非常接近,这可能会以某种方式实现,但我却很难将正在运行的虚拟机从美国数据中心迁移到欧盟数据中心。

有人能解释一下到底发生了什么,以及如何实现没有可察觉的停机时间但保持一致性吗?

答案1

从概念上讲,这个过程很简单:开始通过网络将虚拟机的所有 RAM 从一个物理主机复制到另一个物理主机,跟踪已复制的内存部分在复制后进行了更新。对更改的 RAM 重复此循环,直到更改集很小,暂停虚拟机,复制 RAM 的最后几位(和 CPU 寄存器状态),然后开始在新的物理主机上运行虚拟机。发送免费 ARP,以便网络看到虚拟机的新位置,然后就可以开始了。它不是 100% 透明的——在暂停和 ARP 延迟之间,虚拟机将离线大约一秒钟。

为了使其工作,内存 IO 速率必须低于主机之间的链路速度(这就是为什么最好为 VMotion 使用直接 10GigE 链路,而主机之间不使用路由器),并且主机之间的延迟需要非常短 - VMware 需要 5ms 往返。

源主机和目标主机需要具有相同的底层磁盘存储,这通常会限制您只能使用同一房间内的主机。您可以进行同步存储复制以走得更远,但通常以降低性能为代价(因为每个磁盘操作都必须到达远端并接收确认)。

有方法可以将服务迁移到更远的距离(甚至跨大洲),但这些方法只是切换应用程序的活动实例的位置(以及如何访问它),而不是实时迁移虚拟机本身。

相关内容