问题说明
本文用于排查主机页面看起来仍有 CPU/内存,但虚拟机 HA 或手动启动返回 No available host found、not enough capacity 的场景。
现象
- 候选主机页面或日志显示有可用 CPU 和内存,但启动仍被拒绝。
- 一批 HA 中部分虚拟机成功,后续大规格虚拟机失败。
- 主机恢复后,DRS 又将部分虚拟机迁回,页面可用容量随之变化。
适用环境
- 产品:ZVF ZSphere
- 版本:4.10.19
- 组件:ZSphere HA、DRS 和主机容量调度
- 部署形态:多主机集群;故障主机上的多台虚拟机同批触发 HA
可能原因
- 调度先检查账面可用容量,再由保留容量流程扣除
reservedMemory;两者口径不同。 - 批量 HA 并发竞争同一批主机,初步筛选通过后,最终预留阶段容量已被其他 虚拟机 占用。
- 主机故障承载的虚拟机总内存超过剩余主机在扣除保留内存后的可接管容量。
排查步骤
1. 固定失败时刻的候选主机容量
- 检查对象:故障主机、仍在线的候选主机,以及同一 HA 批次中成功和失败的虚拟机。
- 操作位置:从失败时间窗的管理节点日志记录每台候选主机的
availableCpu、availableMemory、虚拟机 CPU/内存需求、HA 总数及成功/失败数;不要用主机恢复或 DRS 迁移后的页面值替代。 - 预期结果:失败时刻的容量快照可以解释哪些主机在初步筛选阶段被保留或排除。
- 异常处理:若只有故障后的页面截图,没有失败时刻日志,先标记“容量证据不足”,不能据此认定调度错误。
2. 计算扣除 reservedMemory 后的真实可分配内存
- 检查对象:全局、集群及主机作用域的保留内存配置。
- 操作位置:在 UI“全局设置”搜索
reservedMemory,再核对是否存在更具体作用域的覆盖;记录数值、单位和生效时间。按availableMemory - reservedMemory与目标虚拟机内存比较。 - 预期结果:扣除保留内存后仍大于或等于目标虚拟机内存需求。
- 异常处理:若扣除后不足,
not enough capacity属于容量拒绝。已记录案例中,P02 的账面可用内存为65.01 GiB,扣除60 GiB保留内存后仅剩5.01 GiB,因此无法承载64 GiB虚拟机;这些数值仅用于说明计算方式,不是通用阈值。
3. 区分初步容量不足与并发预留失败
- 检查对象:失败请求对应的
StartVmOnHypervisorMsg、AllocateHostReply和同一时间段其他 HA 请求。 - 操作位置:按时间排序候选主机筛选、容量预留和已成功拉起的虚拟机;比较每次成功后候选主机的剩余容量。
- 预期结果:
no enough memory可由初步账面内存不足解释;not enough capacity可由扣除保留容量或最终并发预留后的容量不足解释。 - 异常处理:若扣除保留值后容量充足,且候选通过到最终拒绝之间没有其他请求消耗容量,保留完整消息链并升级为调度专项问题。
4. 修正容量规划并验证下一次 HA
临时方案(Workaround)
- 已验证自助方案:按“任意一台主机故障后,剩余主机扣除保留容量仍能承接关键虚拟机”的口径调整容量规划或降低同批接管规模;不要仅依据某一时刻的页面可用值。
- 支持协助方案:如果确认
reservedMemory配置与当前 HA 目标不匹配,在评估超卖和 HA 风险、记录原值并准备回滚后,由管理员按变更流程调整;不要临时把保留内存改为0来绕过一次启动。 - 预期结果:在规划容量内重试时,HA/手动启动成功;主机恢复后若 DRS 自动迁回虚拟机,页面容量变化能与迁移记录和释放量对应。
- 异常处理与回退:调整后仍不能解释拒绝或出现非预期调度时,立即恢复记录的
reservedMemory原值,停止继续启动,并提交失败时间窗、主机容量快照、保留配置、HA 队列及 DRS 迁移记录给 ZStack 技术支持。
补充信息
- 提交支持信息时,应包含准确时间窗、资源和任务 UUID、完整错误文本及相关组件日志。
- 不能从单个现场结果外推所有版本;根因未闭合或操作可能影响业务、数据时,应停止自助处理并提交本文列出的证据。
