老哥们,厂里的HP ProLiant服务器今天遇到一个非常严重的问题——ESXi 主机的 vmkernel 日志被大量的 “Failed to open file ‘hpilo-d0ccbXX'” 错误信息泛滥,最终导致主机变得无响应。查了一下 VMware KB 388283,原来这是 HPE 硬件驱动相关的问题。
故障现象还原
1. 日志泛滥
在 vmkernel 日志中可以看到以下错误信息频繁出现:
YYYY-MM-DDTHH:MM:SS.483Z cpu51:2108940)FSS: 7441: Failed to open file 'hpilo-d0ccb##'; Requested flags 0x5, world: 2108940 [sut], (Existing flags 0x0, world: 0 [unknown]): Busy
YYYY-MM-DDTHH:MM:SS.496Z cpu51:2108940)ilo : Open could not dequeue a packet
2. 主机状态变化
随着日志泛滥的持续:
-
- ESXi 主机变得无响应
- 存储连接可能会断开
- 虚拟机虽然会继续运行,但最终会显示为无效
- 可能会看到 503 Service Unavailable 错误
3. 影响范围
问题主要影响:
-
- ESXi 6.5、6.7、7.x 和 8.0.x 版本
- 运行 HPE 硬件的主机
- 安装了 HPE WBEM Provider、HPE Agentless Management Service (AMS) 或 HPE Smart Update Tool (iSUT) 的主机
核心原因分析一下
1. HPE 硬件管理组件的工作机制
根据 HPE 文档:
-
- HPE WBEM Provider 每 30 秒尝试与 HPE iLO(Integrated Lights-Out)打开一次通信通道
- 这个过程会查找未使用的 hpilo 通道(总共有 15 个通道:hpilo-d0ccb01 到 hpilo-d0ccb15)
- 当无法打开已被使用的通道时,会在日志中记录错误信息
2. 问题的关键原因
这个问题的核心是日志记录频率过高:
-
- 正常情况下,这些消息每 30 秒出现一次是正常的
- 但当频率过高(每秒多次)时,就会导致存储 I/O 阻塞
- 最终导致主机变得无响应
3. 驱动版本兼容性
问题与 HP iLO 驱动的版本有关,需要更新到最新的兼容版本。
解决方案
1. 更新 HPE 驱动和固件
这是最根本的解决方案。 按照 HPE 官方文档,需要:
1. 更新 HP iLO 驱动到最新版本
2. 更新主机固件到最新版本
3. 确保所有 HPE 硬件管理组件(WBEM Provider、AMS、iSUT)都是最新版本
2. 检查并更新 HPE 驱动
# 在 ESXi 主机上检查已安装的 HPE 驱动
esxcli software vib list | grep -i hp
# 查看 iLO 相关的驱动
esxcli software vib list | grep -i ilo
# 如果需要更新驱动,可以使用以下命令
esxcli software vib update -v -n
3. 检查硬件管理服务状态
# 检查 HPE WBEM Provider 状态
/etc/init.d/hpe-wbem status
补充下,这个ams就是hpe在os ESXi的组件,用来给OS跟iLO之间沟通,Dell iDRAC也有对应的。
# 检查 HPE AMS 状态
/etc/init.d/amsd status
# 检查 HPE iSUT 状态
/etc/init.d/isut status
4. 检查存储连接
# 检查存储适配器状态
esxcli storage core adapter list
# 检查存储路径状态
esxcli storage core path list
# 检查 VMkernel 模块状态
esxcli system module list | grep -i hp
预防措施
1. 定期更新硬件驱动和固件
-
- 定期检查 HPE 官方网站获取最新的驱动和固件
- 在生产环境中部署前进行充分的测试
- 建立驱动和固件更新的定期维护计划
2. 监控日志频率
# 使用以下命令实时监控 vmkernel 日志
tail -f /var/log/vmkernel.log | grep -i hpilo
# 统计一定时间内的错误次数
grep "hpilo" /var/log/vmkernel.log | wc -l
3. 配置日志轮换
# 检查当前的日志轮换配置
esxcli system syslog config get
# 调整日志大小和保留策略
esxcli system syslog config set --default-size=2048 --default-rotate=10
esxcli system syslog reload
常见问题解答
Q:为什么这些 hpilo 通道错误信息在某些情况下是正常的?
A:当这些消息每 30 秒左右出现一次时,这是 HPE 硬件管理组件的正常行为。
Q:哪些 HPE 硬件管理组件会导致这个问题?
A:HPE WBEM Provider、HPE Agentless Management Service (AMS) 和 HPE Smart Update Tool (iSUT) 都会触发这个问题。
Q:虚拟机为什么会继续运行但最终显示为无效?
A:虚拟机可以继续在主机内存中运行,但当存储连接断开后,虚拟机的状态信息就无法更新了。
Q:是否可以直接禁用 HPE 硬件管理组件?
A:不建议直接禁用这些组件,因为它们提供了重要的硬件监控功能。最好的方法是更新到最新版本。
风险评估
1. 更新驱动和固件的风险
-
- 需要主机重启,可能影响业务连续性
- 更新过程中可能出现兼容性问题
- 需要在维护窗口内执行
2. 不更新的风险
- 主机可能会变得无响应
- 存储连接可能会断开
- 虚拟机可能会出现故障







