YMQMKK
(wuzhou-xiaokaili)
1
BMC会偶发性出现iBMA丢失现象,系统下iBMA服务正常运行。
openubmc 2509sdk 开发
组件版本信息:
host_agent/1.60.19@openUBMC.release/rc
在dump_info/AppDump/host_agent/mdb_info.log :
/bmc/kepler/Systems/1/Sms bmc.kepler.Systems.Sms.SmsStatus
.HeartBeatState
signature: y
value: 0
flags: emits-change
readonly: true
.RunningState
signature: s
value: ""
flags: emits-change
readonly: true
.State
signature: y
value: 0
flags: emits-change
readonly: true
.UpdateState
signature: y
value: 2
flags: -
readonly: true
答案内容由AI生成,仅供参考:
openUBMC系统中iBMA服务偶发丢失问题分析
根据提供的信息,系统出现了BMC侧偶发性无法识别iBMA服务的现象,尽管在操作系统(OS)侧确认iBMA.service处于正常运行状态。以下是基于上下文信息的综合分析与可能原因。
问题现象总结
- BMC表现:openUBMC Web界面或BMC系统中偶发性丢失iBMA相关信息(如版本、状态等)。
- OS侧状态:
systemctl status iBMA 显示服务 active (running),且手动重启后仍无法立即恢复BMC端显示。
- 系统环境:
- 平台:openUBMC 2509 SDK 开发环境
- 主UBoot版本:19.6.10.1
- openUBMC固件版本:55.00.00.17
- host_agent版本:1.60.19@openUBMC.release/rc
- 日志线索:
- 在
dump_info/AppDump/host_agent/mdb_info.log 中,bmc.kepler.Systems.Sms 的以下字段异常:
.HeartBeatState = 0
.RunningState = ""
.UpdateState = 2
核心原因分析
iBMA 与 BMC 的通信机制
iBMA 是运行于主机操作系统中的 智能板级管理代理(Intelligent Board Management Agent),通过内网虚拟网口(如 veth 接口)与 BMC 上的 host_agent 组件通信。该通信依赖于:
| 组件 |
职责 |
| iBMA |
收集 OS 侧硬件信息(NVMe、RAID、网卡等),提供 Redfish 接口 |
| host_agent (BMC侧) |
作为客户端访问 iBMA 的 Redfish 服务,上报数据至 BMC Web 和传感器系统 |
| D-Bus 资源树 |
用于暴露服务状态和心跳信号,BMC 通过 busctl introspect 查询其存在性 |
参考文档《[网口链接状态手册](id: 6)》和《[openUBMC通信矩阵](id: 2)》确认:BMC 通过 TCP:8090 访问 iBMA 的 Redfish 接口,使用 Token认证 + HTTPS/TLS。
日志字段解析:mdb_info.log 异常含义
在 host_agent 的日志中,Sms 模块负责监控 iBMA 的状态,关键字段说明如下:
| 字段 |
正常值 |
当前值 |
含义 |
.HeartBeatState |
1 (正常心跳) |
0 |
表示未收到 iBMA 心跳,连接中断 |
.RunningState |
"Running" 或 "Stopped" |
""(空) |
状态未知,BMC 无法获取 |
.UpdateState |
0~1(更新中/完成) |
2 |
可能表示“等待连接”或“连接失败” |
这些值表明:host_agent 检测不到 iBMA 的心跳与运行状态,即使 OS 侧服务运行正常。
可能原因排查方向
1.
网络通信问题(veth/virtual interface)
若返回为空 → 表明 host_agent 未成功注册 SMS 对象,通信链路未建立。
2.
启动时序问题(Boot Sequence Race Condition)
- 现象解释:iBMA 服务在 OS 起来后启动,但 BMC 的
host_agent 已完成初始化并尝试连接,未能重连成功。
- 关键点:
- 即使
systemctl restart iBMA,BMC 不会自动重试连接,除非触发重新探测逻辑
- 部分 SDK 版本中存在“只检测一次”的 Bug
- 解决方案建议:
- 重启
host_agent 服务或整个 BMC 服务以强制重建连接
- 添加自动重连逻辑(如心跳探测失败后周期性重试)
3.
Token认证或HTTPS证书问题
- 机制说明:BMC 访问 iBMA Redfish 接口需通过 Token 认证(见[通信矩阵](id: 2))
- 故障场景:
- iBMA 启动时生成新 Token,但 BMC 缓存旧 Token
- HTTPS 证书变更导致 TLS 握手失败
- 排查建议:
- 检查
/var/log/ibma/redfish.log 是否有“client certificate verify failed”
- 检查 BMC 是否启用了证书校验且未同步最新证书
4.
host_agent 或 IBMA 版本兼容性问题
- 版本组合:
- host_agent:
1.60.19@openUBMC.release/rc
- iBMA: 未明确版本,但若为 v2.13.0 或 v2.16.x,需确认是否适配当前 SDK
- 历史问题记录:
- 文档片段1中提到:安装 iBMA 2.13.0 后 openUBMC 不显示信息
- 见
{"id": 1, "content": "OS侧安装iBMA后openUBMC下不显示iBMA版本等信息"}
- 原因为:未正确注册或启动 Redfish 服务
参考解决方法:执行安装脚本时使用 -s 静默安装,确保全部组件部署完成:
bash install.sh -s
解决建议与操作步骤
1. 验证 iBMA 网络模式配置
# 在 OS 上执行
/opt/huawei/ibma/bin/ibmacli conf show --name iBMA.ini | grep iBMA_network_type
/opt/huawei/ibma/bin/ibmacli conf modify --name iBMA.ini --arg iBMA_System.iBMA_network_type --value veth
systemctl restart iBMA
2. 检查 D-Bus 资源树是否注册成功
# 在 BMC 端执行
busctl --user introspect bmc.kepler.host_agent /bmc/kepler/Systems/1/Sms
- 若无输出 → 表示 host_agent 未接收到 iBMA 注册请求
- 重试方法:重启
host_agent 服务或等待下一次探测周期
3. 强制刷新连接状态
尝试以下任一操作,强制重建通信:
# 方法一:重启 host_agent(BMC端)
systemctl restart host_agent
# 方法二:重启 iBMA(OS端)
systemctl restart iBMA
# 方法三:重启 BMC(最彻底)
reboot bmc
4. 检查 Redfish 接口可访问性
在 BMC 上测试是否能访问 iBMA 的 Redfish 接口:
curl -k https://<iBMA虚拟IP>:8090/redfish/v1/
- 若超时 → 虚拟网络不通
- 若返回 401/403 → 认证失败(Token 或证书问题)
5. 更新到稳定版本组合
建议升级至以下版本以避免已知 Bug:
| 组件 |
推荐版本 |
说明 |
| iBMA |
≥ v2.16.1 |
修复 Redfish 启动和心跳问题 |
| host_agent |
≥ 1.60.20 |
增强自动重连机制 |
| openUBMC SDK |
≥ 25.09.03.01 |
已知稳定性提升 |
参考资料
结论
iBMA 虽在 OS 端运行正常,但由于 BMC 与 iBMA 之间的通信链路(veth + Redfish + Token)未能建立或维持,导致 BMC 端“丢失”iBMA 状态。
根本原因可能是:
- 网络模式未配置为
veth
- host_agent 未正确识别 iBMA 心跳
- Redfish 接口不可达或认证失败
- 版本不兼容或启动时序问题
建议优先检查 iBMA_network_type 设置,并通过 busctl introspect 验证资源树注册状态,进而推进问题定位。
相关链接:
- OS侧安装iBMA后openUBMC下不显示iBMA版本等信息
- 【教学培训篇】新增组件
- 安装iBMA后ubmc的首页没有上传cpu和内存信息
- 【BMC Studio】BMC Studio新特性介绍:基于Qemu进行代码调试与资源协作接口调试
- IPMI管理定位问题 | 文档中心 | openUBMC
JiaHuiLei
(Jia Hui Lei)
3
可以查看下BMA的安装路径下的日志(一般是/opt/huawei/ibma/log或/opt/ibma/log),查看common.log中是否有Register相关的报错日志。
顺便问下问题中的“偶发性”是什么意思呢?是在某些操作后会出现呢(具体是什么操作),还是在某些设备上特定出现的?