在VMware vSphere环境中,VM的实时迁移技术vMotion广受好评,也是我们最常用的VMware操作之一。
但是其实vMotion是有一个推荐实践,建议要所有ESXi服务器上使用相同处理器,以便于VM实时迁移。
然而,在实际生产环境中,扩展集群时常需添加新服务器,这些服务器可能搭载不同型号的处理器。如果需在集群中使用不同型号的处理器,建议部署相同代数的处理器,并且处理器必须由同一厂商制造,例如英特尔或AMD。
而EVC的作用,就是为了增强的 vMotion 兼容性,EVC 模式确保在同一个集群中的所有 ESXi 主机,即使它们拥有不同世代或型号的CPU,也能够相互迁移虚拟机。这是通过掩盖较新CPU的某些特性来实现的,从而确保老旧主机也能理解新CPU的操作。
VMware EVC模式的工作原理
不同代数的处理器包含不同的指令集。例如,SkyLake代处理器相比Haswell代新增了SGX(Software Guard Extensions)指令集。在EVC设置中选择Haswell兼容性级别时,需要在SkyLake处理器上禁用SGX指令集,以确保所有处理器使用相同的指令集。EVC通过强制所有在非统一处理器上运行的VM遵循相同的CPUID指令基线来实现这一点。
配置和检查EVC模式
在实际操作中,需要在vSphere Web客户端中检查和配置EVC模式。例如,可在vCenter > 主机和集群中选择ESXi主机,验证CPU配置,然后在集群设置中启用EVC模式。VMware官方网站上的兼容性指南可以帮助确定处理器与vCenter服务器版本的最高可能EVC模式。
配置EVC时需要注意的要求
要使vMotion在启用EVC模式后正常工作,需要满足以下要求:
- 所有ESXi主机的处理器必须仅为Intel或AMD。
- 必须在ESXi主机的UEFI/BIOS中启用处理器虚拟化功能,如Intel VT-x或AMD-V。
- ESXi主机必须由同一vCenter服务器管理。
- 必须配置ESXi主机以使用vMotion。
VMware vSphere版本与CPU兼容性
EVC模式的要求取决于处理器型号和vCenter服务器版本。新版本的vCenter服务器支持最新代处理器的EVC模式。以下表格展示了不同vCenter服务器版本支持的Intel处理器代数与EVC模式的对应关系。
每个VM的EVC模式
vSphere 6.7引入了每个VM的EVC模式,为跨不同集群或vCenter服务器迁移VM提供了更多灵活性。每个VM的EVC模式设置保存在VM的VMX配置文件中,并在VM迁移时随之移动。当VM关闭电源时,可以更改每个VM的EVC模式设置。
无停机启用集群EVC模式
在某些情况下,如果满足特定条件,可以在不关闭VM的情况下为整个集群启用EVC模式。这需要运行VM的ESXi主机拥有最老的处理器,且集群的EVC模式配置为与该处理器代数匹配的CPU指令集。
vCenter VM的EVC模式启用问题
在vCenter服务器作为VM在ESXi主机上运行且需添加到已启用EVC模式的集群时,可能会遇到问题。例如,无法将运行vCenter VM的ESXi主机添加到集群,直到关闭所有VM。针对这一情况,可以通过将vCenter VM迁移到已在集群中的另一ESXi主机上来解决。
结论
EVC是一个有用的VMware vSphere特性,它保持了集群的可扩展性,并允许您向集群中添加不同代数处理器的节点,以在ESXi主机之间进行VM实时迁移。EVC模式通过屏蔽新一代处理器的特性,为集群中所有ESXi主机上运行的VM创造了一个统一的基线。因此,您拥有了一个同质化的环境,所有处理器使用相同的指令集,运行的VM可以通过vMotion迁移。
EVC确保了在运行不同CPU代数的ESXi主机集群中,可以通过vMotion实时迁移工作负载。建议启用EVC,这将有助于未来扩展新主机时保持集群的灵活性。在现有环境中启用EVC可能具有挑战性,因此强调最好从一开始就启用EVC。