BMC会偶发性出现iBMA丢失现象

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处于正常运行状态。以下是基于上下文信息的综合分析与可能原因。


:magnifying_glass_tilted_left: 问题现象总结

  • 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

:puzzle_piece: 核心原因分析

:white_check_mark: 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


:cross_mark: 日志字段解析:mdb_info.log 异常含义

host_agent 的日志中,Sms 模块负责监控 iBMA 的状态,关键字段说明如下:

字段 正常值 当前值 含义
.HeartBeatState 1 (正常心跳) 0 表示未收到 iBMA 心跳,连接中断
.RunningState "Running""Stopped" ""(空) 状态未知,BMC 无法获取
.UpdateState 0~1(更新中/完成) 2 可能表示“等待连接”或“连接失败”

:warning: 这些值表明:host_agent 检测不到 iBMA 的心跳与运行状态,即使 OS 侧服务运行正常。


:pushpin: 可能原因排查方向

1. :hourglass_not_done: 网络通信问题(veth/virtual interface)

  • 问题描述:BMC 与 iBMA 通信依赖虚拟网络接口(veth pair),若虚拟网桥未正确建立,会导致连接失败。
  • 关键证据
    • iBMA 配置文件中需设置 iBMA_network_type=veth(见[文档2](id: 2))
    • 若配置为其他类型(如 nonehostonly),BMC 将无法访问
  • 验证命令
    # 查看资源树是否注册了 Sms 接口
    busctl --user introspect bmc.kepler.host_agent /bmc/kepler/Systems/1/Sms
    

:white_check_mark: 若返回为空 → 表明 host_agent 未成功注册 SMS 对象,通信链路未建立。


2. :repeat_button: 启动时序问题(Boot Sequence Race Condition)

  • 现象解释:iBMA 服务在 OS 起来后启动,但 BMC 的 host_agent 已完成初始化并尝试连接,未能重连成功。
  • 关键点
    • 即使 systemctl restart iBMABMC 不会自动重试连接,除非触发重新探测逻辑
    • 部分 SDK 版本中存在“只检测一次”的 Bug
  • 解决方案建议
    • 重启 host_agent 服务或整个 BMC 服务以强制重建连接
    • 添加自动重连逻辑(如心跳探测失败后周期性重试)

3. :locked_with_key: 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. :bug: 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 服务

:hammer_and_wrench: 参考解决方法:执行安装脚本时使用 -s 静默安装,确保全部组件部署完成:

bash install.sh -s

:white_check_mark: 解决建议与操作步骤

:white_check_mark: 1. 验证 iBMA 网络模式配置

# 在 OS 上执行
/opt/huawei/ibma/bin/ibmacli conf show --name iBMA.ini | grep iBMA_network_type
  • 若输出不是 veth,则修改:
/opt/huawei/ibma/bin/ibmacli conf modify --name iBMA.ini --arg iBMA_System.iBMA_network_type --value veth
systemctl restart iBMA

:white_check_mark: 2. 检查 D-Bus 资源树是否注册成功

# 在 BMC 端执行
busctl --user introspect bmc.kepler.host_agent /bmc/kepler/Systems/1/Sms
  • 若无输出 → 表示 host_agent 未接收到 iBMA 注册请求
  • 重试方法:重启 host_agent 服务或等待下一次探测周期

:white_check_mark: 3. 强制刷新连接状态

尝试以下任一操作,强制重建通信:

# 方法一:重启 host_agent(BMC端)
systemctl restart host_agent

# 方法二:重启 iBMA(OS端)
systemctl restart iBMA

# 方法三:重启 BMC(最彻底)
reboot bmc

:white_check_mark: 4. 检查 Redfish 接口可访问性

在 BMC 上测试是否能访问 iBMA 的 Redfish 接口:

curl -k https://<iBMA虚拟IP>:8090/redfish/v1/
  • 若超时 → 虚拟网络不通
  • 若返回 401/403 → 认证失败(Token 或证书问题)

:white_check_mark: 5. 更新到稳定版本组合

建议升级至以下版本以避免已知 Bug:

组件 推荐版本 说明
iBMA ≥ v2.16.1 修复 Redfish 启动和心跳问题
host_agent ≥ 1.60.20 增强自动重连机制
openUBMC SDK ≥ 25.09.03.01 已知稳定性提升

:paperclip: 参考资料


:white_check_mark: 结论

iBMA 虽在 OS 端运行正常,但由于 BMC 与 iBMA 之间的通信链路(veth + Redfish + Token)未能建立或维持,导致 BMC 端“丢失”iBMA 状态

根本原因可能是:

  1. 网络模式未配置为 veth
  2. host_agent 未正确识别 iBMA 心跳
  3. Redfish 接口不可达或认证失败
  4. 版本不兼容或启动时序问题

建议优先检查 iBMA_network_type 设置,并通过 busctl introspect 验证资源树注册状态,进而推进问题定位。

相关链接:

  1. OS侧安装iBMA后openUBMC下不显示iBMA版本等信息
  2. 【教学培训篇】新增组件
  3. 安装iBMA后ubmc的首页没有上传cpu和内存信息
  4. 【BMC Studio】BMC Studio新特性介绍:基于Qemu进行代码调试与资源协作接口调试
  5. IPMI管理定位问题 | 文档中心 | openUBMC

可以查看下BMA的安装路径下的日志(一般是/opt/huawei/ibma/log或/opt/ibma/log),查看common.log中是否有Register相关的报错日志。

顺便问下问题中的“偶发性”是什么意思呢?是在某些操作后会出现呢(具体是什么操作),还是在某些设备上特定出现的?