【vCenter】vSphere Clustering Service (vCLS)虚拟机异常处理
在部署较新的 vCenter 版本后,如果集群里自动出现 vCLS 虚拟机并反复开机失败,同时 DRS 状态也跟着异常,通常不是 vCLS 本身损坏,而是底层主机 CPU 特性不满足它的启动要求。
背景
在实验环境中部署 vCenter 8.0 U1 后,发现集群里自动生成了 vCLS 虚拟机,但它无法正常开机。

环境信息
物理服务器是一台某信服OEM的浪潮服务器

ESXi版本

vCenter版本

故障现象

vCLS 虚拟机不断尝试重启,但始终失败,同时集群 DRS 也报错,提示 vSphere Cluster Services 虚拟机不可用,导致 DRS 运行状态受影响。
相关说明
查看官方说明可知:
vSphere 7.0 Update 1 开始引入了 vSphere Clustering Service。可以简单理解为:vCenter 把一部分集群控制平面功能拆出来,交给每个集群中的轻量级 vCLS 虚拟机承担。

排障思路
继续查看报错信息后,发现关键问题是:
功能 "MWAIT" 为 0,但它必须为 1也就是主机 BIOS 中的 MONITOR/MWAIT 没有启用。

什么是 MWAIT
MWAIT 指令提供提示以允许处理器进入依赖于实现的优化状态。有两个主要的目标用途:地址范围监视器和高级电源管理。MWAIT 的两种用法都需要使用 MONITOR 指令。
CPUID.01H:ECX.MONITOR[位3]指示处理器中MONITOR和MWAIT的可用性。设置后,MWAIT 只能在特权级别 0 上执行(在任何其他特权级别上使用都会导致无效操作码异常)。操作系统或系统BIOS可以通过使用IA32_MISC_ENABLE MSR来禁用该指令;禁用 MWAIT 将清除 CPUID 功能标志并导致执行生成无效操作码异常。
该指令的操作在非 64 位模式和 64 位模式下是相同的。
ECX 指定 MWAIT 指令的可选扩展。EAX 可能包含诸如处理器应进入的首选优化状态之类的提示。第一个实现 MWAIT 的处理器仅支持 EAX 和 ECX 的零值。后来的处理器允许设置 ECX[0] 以启用屏蔽中断作为 MWAIT 的中断事件(见下文)。软件可以使用CPUID指令来确定处理器支持的扩展和提示。
处理方法
于是先安全关闭虚拟机,再重启主机进入 BIOS。
- 进入 BIOS,进入高级电源管理页面。

- 进入
CPU C State Control。

- 启用
MONITOR/MWAIT。


- 按
F10保存并重启。
处理结果
主机重启后,vCLS 虚拟机恢复正常,故障消失。

补充说明
- 这类问题常见于较老平台、OEM 服务器或 BIOS 默认策略比较保守的环境。
- 如果 vCLS 起不来,DRS 和集群健康状态通常也会一起受到影响。
- 排查这类问题时,不要只盯着 vCenter,要同时检查主机 BIOS 特性是否满足要求。