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

环境中,如何将正在运行的虚拟机从一个虚拟机pipe理程序迁移到另一个虚拟机?

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

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

任何人都可以解释什么是实际发生的,以及如何实现没有可感知的停机时间,但保持一致性?

从概念上讲,这个过程很简单:从一台物理主机开始,将一台虚拟机的所有内存复制到另一台物理主机上,logging复制之后已经复制的内存部分。 重复更改的RAM的周期,直到更改集变小,暂停VM,复制RAM的最后一个位(和CPU寄存器状态),然后开始在新物理主机上运行VM。 发送免费ARP,以便networking看到虚拟机的新位置,然后离开。 它不是100%透明的 – 在暂停和ARP延迟之间,虚拟机将离线大约一秒钟。

为了达到这个目的,内存IO速率必须小于主机之间链接的速度(这就是为什么最好使用直接的10GigE链接进行VMotion,主机之间没有路由器),以及主机之间的延迟需要很短 – VMware需要5ms往返。

源主机和目标主机需要具有相同的底层磁盘存储空间,这通常将您限制在同一个房间中的主机。 您可以执行同步存储复制以获得更高的性能,但会以牺牲性能降低为代价(因为每个磁盘操作都必须到远端进行确认)。

有很多方法可以在更远距离(甚至是大陆之间)迁移服务,但是这些方法是切换应用程序的活动实例(以及如何到达它)的方法,而不是实时迁移虚拟机本身。