vCenter维护模式REST API调用成功但ESXi主机未进入维护模式求助
解决vSphere 8.0 REST API提交维护模式请求成功但主机未进入维护模式的问题
核心排查方向
1. 检查维护请求的实际执行状态
POST请求成功仅代表请求已被vCenter接收,不代表操作已完成。你需要通过GET请求查询该请求的详细状态:
- 调用
GET /api/vcenter/host/maintenance/requests-v1/{request-id} - 重点关注
status字段:- 如果是
FAILED,查看errors字段的具体错误信息,这是定位问题的关键 - 如果是
IN_PROGRESS,等待一段时间后再检查,部分操作可能需要几秒到几分钟完成 - 如果是
PENDING,可查看vCenter Web客户端的任务管理器(监控→任务),确认是否有后台任务阻塞
- 如果是
2. 验证API请求体参数的正确性
由于你的环境未配置集群、DRS/HA,必须显式指定疏散策略,否则API可能因默认逻辑尝试疏散虚拟机(即使无运行VM)而失败。正确的请求体示例:
{ "host": "host-xxx", // 必须是vCenter分配的主机MoID(如host-101,而非主机名称/IP) "maintenance_spec": { "mode": "ENTER", "evacuation_spec": { "action": "NO_ACTION", // 明确指定不执行疏散操作 "evacuate_powered_off_vms": false, "evacuate_suspended_vms": false } } }
- 可通过
GET /api/vcenter/host查询所有主机的MoID,确保host参数正确
3. 检查ESXi主机的系统日志
登录目标ESXi主机,查看以下日志文件,搜索maintenance mode相关条目:
/var/log/vmkernel.log:记录内核级别的维护模式操作日志/var/log/hostd.log:记录主机管理服务的操作日志
常见错误原因包括:- 主机上有无法停止的系统服务
- 存储挂载异常(如共享存储未正确卸载)
- 主机存在未完成的后台任务
4. 确认API请求头的有效性
确保POST请求的请求头配置正确:
- 必须携带有效的
VMware-api-session-id(通过POST /api/session获取) Content-Type和Accept均设置为application/json
内容的提问来源于stack exchange,提问作者Muthukkumaran Ramalingam
相关产品推荐
相关产品推荐

