什么是Enhanced VMotion Compatibility EVC)?

通过CPU硬件底层支持的在线热迁移方案(Intel 通过Flex Migration实现,AMD通过Extended Migration实现),允许虚拟层面上支持CPUID 掩码功能,屏蔽某些CPU功能,通过强制CPU指令集兼容来实现不同CPU系列之间的在线热迁。

看起来有些不是很好理解,简单举个例子吧。大家都知道Vmotion功能在实战中的意义是非常重要的,但是Vmotion对于CPU的要求比较苛刻,对于不同系列CPU是无法自动实现Vmotion的功能,比如在HP 380G4HP380G5之间不通过人工修改是绝对无法实现Vmotion的。在VI的实施过程中,会碰到一个群组里面的服务器CPU不同的情况。比如三个月前买的服务器是基于Intel 53xxCPU,由于应用的扩大,需要给群组添加新的服务器,而新购买的服务器是基于Intel 54xxCPU,由于Intel 54xx CPU 增加了SSE4.1指令集,导致新服务器加入群组后,无法实现虚拟机从旧服务器到新服务器的在线热迁(VMotion)


没有EVC之前,解决方案是通过手工计算CPU Masking,逐个修改每个虚拟机的配置文件或者全局修改VC服务器上的vpxd.cfg 来实现不同系列CPU之间兼容性的问题。

这样做的缺点是需要人工设计对于群组中所有服务器兼容的CPU Masking,并且,当群组中有新的服务器加入后,为了避免可能的不兼容情况,需要再次手工计算一个新的CPU Masking

VI推出EVC 之后,以上所有的手工工作都由VCESX Server完成了。vmware通过和CPU厂商的合作,通过在硬件底层上直接支持CPUID 掩码功能。

这样的好处显而易见,一是避免了繁琐的人工干预部分,提高了系统的稳定性。二是当群组中有新的服务器加入的话,VC 会自动判别是否新服务器与群组在Vmotion层面上兼容,如果不兼容,不会允许服务器加入的,提高了自动化程度。

特别注意:
AMD Intel 之间无法实现EVC


实战上的设置

设置上比较简单,请注意以下事项:

  • ESX Server升级到3.5.0 Update 2以上,Virtual Center升级到VC 2.5.0 Update 2以上

  • BIOSProcessor Option
    打开VT XD 二个开关

  • ClusterEVC选项上选择Enable即可。


如果要在旧的Cluster启用EVC支持,必须将Cluster中所有Host上的虚拟机全部关闭,实际生产环境中较难做到。我的解决方法是新建一个Cluster,将每一台Host上的虚拟机热迁到其他Host上后,重启这台空闲的Host,在BIOS中打开VTXD开关后,将其移入新建的Cluster中,并将原先在其之上的所有虚拟机在热迁回来。每台Host 均如此操作,直至所有Host 移入EVC EnabledCluster中。



参考文章:

Enhanced VMotion Compatibility (EVC) processor support


http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1003212