源起:
道听途说曰,VMotion是VMware的特色之一,以此为基础,上面实现了动态迁移,DRS,HA等功能,但是底层的原理是什么样的呢?
什么是VMotion?
VMotion允许虚机动态的从一台物理主机迁移到另外一台物理主机,并保证迁移过程0停机,不停服,并且能保障事务完整性。
当虚机从一台物理主机迁移到另外一台物理主机,并且保持不停机,不停服 到底是如何做到的?
VMotion是如何工作的?
先决条件,多台物理ESXI主机共享一套存储,所有的连接到这套存储上的ESXI主机都可以读写虚机文件。
首先,VMotion在目的主机上建立一套源虚机的“Shadow Copy",用于接收源虚机的内存数据。
然后, VMotion建立一套源虚机的系统快照,一般称作"PreCopy".并把这个PreCopy迅速通过以太网络传输给目标主机。
于此同时,VMotion建立一套change log buffer用于存储此时源虚机的内存变化,VMotion不断的传输变化内容给目的主机直到下一组变化数据小于500ms就可以传输完毕。VMotion关闭源虚机CPU,并把最后一片儿change log buffer传输给目的虚机,切断源虚机的磁盘访问,并打开目的虚机的磁盘访问。最后,启动目的虚机的CPU。
最后,VMotion通知目的虚机发送一个RARP包,通知网络中的交换机更新其MAC地址-----物理地址映射。从而,所有流量会转发至正确的接口。
热迁移过程中虚机MAC地址不变,但是克隆虚机会导致目的虚机MAC地址变化。