反复AC过程中,出现服务器BMC多个组件无法启动问题

【问题描述】测试进行反复AC测试过程中,出现IP能ping通,但是Web无法连接问题
【基线版本】openUBMC 2509
【定位步骤】
1.尝试SSH使用ipmcget -d dia 一键收集日志,出现以下报错
企业微信截图_17736518723116
2.尝试使用telnet连接BMC,查看framework.log发现出现大量组件启动检查失败


3.通过手动在telnet下将/var/log/目录的日志压缩下载见附件
dump.tar.gz.txt (9.2 MB)

答案内容由AI生成,仅供参考:

:white_check_mark: 结论

项目 结论
问题类型 BMC 组件初始化失败导致 Web 服务不可用
根本原因 多次 AC 循环后,bmc.kepler.web_backend 等组件因 D-Bus 服务文件缺失或加载失败,导致启动检查失败
触发条件 openUBMC 2509 基线 + 反复 AC 循环
解决方案 升级至 openUBMC 25.12 或更高版本,确保构建包中包含完整 .service 文件
临时规避 手动重启 BMC 或关键服务

:light_bulb: 建议:将此类问题纳入 AC 压力测试标准用例,并监控 init.lua 启动检查日志,及时发现组件异常。

点击此处查看详细分析解答

BMC 多组件启动失败及 Web 无法访问问题分析报告

根据您提供的详细问题描述和日志信息,该问题表现为在 反复 AC 测试过程中,BMC 虽然 IP 可达且 SSH 可登录,但 Web 服务无法连接,且 ipmcget -d dia 命令执行失败,日志显示大量组件启动检查失败。

结合知识库中的信息,本报告对问题进行综合分析与定位,总结如下。


:magnifying_glass_tilted_left: 问题核心总结

openUBMC 2509 基线版本下,进行多次 AC 上下电循环(ACcycle Test) 后,BMC 系统出现严重初始化异常,导致 多个关键组件(如 account、bmc_health、firmware_mgmt、redfish 等)无法正常启动,进而引发:

  • Web 服务无法访问(白屏/拒绝连接)
  • 一键日志收集命令(ipmcget -d dia)失效
  • 多个服务启动检查失败,日志提示 DBus 错误

此问题已被多个用户在测试中复现,是 openUBMC 2509 版本中 AC 压力测试下的典型稳定性问题之一。


:pushpin: 核心定位分析

1. 日志关键错误分析

从提供的 framework.log 中可提取以下几类关键错误:

(1) DBus.Error.ServiceUnknown:服务未注册

ERROR: init.lua(186): [web_backend]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.web_backend was not provided by any .service files
  • 含义bmc.kepler.web_backend 服务未被 D-Bus 系统识别,通常是因为 .service 文件缺失或加载失败。
  • 关联实体bmc.kepler.web_backend 是 Web 服务的后端核心组件,其失败将直接导致 Web 无法启动。
  • 知识库支持

    bmc.kepler.web_backend 是一个后端服务,负责处理 Web 请求,若其启动失败或缺少 D-Bus 服务文件,将导致服务不可用。

    DBUS Error ServiceUnknown 是运行时错误,表示请求的服务未注册或 .service 文件缺失。

(2) DBus.Error.UnknownObject:对象路径不存在

ERROR: init.lua(186): [account]StartupCheck failed, error: org.freedesktop.DBus.Error.UnknownObject: Unknown object path /bmc/kepler/account/Microcontroller
  • 含义:服务虽可能已注册,但其预期的 D-Bus 对象路径未正确创建。
  • 可能原因:组件启动过程中因依赖缺失、初始化超时或资源加载失败,未能完成对象树注册。

(3) DBus.Error.NoReply:D-Bus 通信超时

ERROR: init.lua(186): [bios]StartupCheck failed, error: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
  • 含义:D-Bus 请求发出后,目标服务未在规定时间内响应。
  • 典型场景:组件启动耗时过长、服务死锁、CPU 资源不足或服务进程崩溃。

2. 根本原因推断

结合日志和知识库信息,可得出以下推断:

:white_check_mark: 该问题是由于在 AC 循环过程中,多个组件未能在初始化阶段成功注册 D-Bus 服务,导致 init.lua 启动检查失败,进而引发 Web 服务等依赖组件无法启动。

触发机制

  • openUBMC 2509 版本中,AC 上电后 BMC 启动流程对 组件启动时序和资源竞争 敏感。
  • 多次 AC 循环可能导致 组件服务文件加载不一致、文件系统缓存未刷新、或某些资源(如共享内存、文件锁)处于异常状态
  • 特别是 bmc.kepler.web_backendaccountfirmware_mgmt 等组件依赖 .service 文件注册,若构建或部署过程中该文件未正确写入或加载,则会在压力测试中暴露。

相关证据支持

  • 知识库文档指出:openUBMC 2509 存在“丝印缓存时序问题”,已通过 AC 上电增加 80 秒延迟缓解(见 Document Chunk 1),说明 2509 版本存在启动时序缺陷。
  • 多个用户报告在 30 次 AC 循环后 出现 Web 无法登录(见 Document Chunk 4),与本次问题完全一致。
  • 其他版本(如 25.12)已优化 AC 启动流程,建议升级。

:hammer_and_wrench: 解决建议与规避方案

:white_check_mark: 1. 立即规避措施

措施 操作说明
手动重启异常组件 通过 SSH 执行 systemctl restart bmc.kepler.web_backend 尝试恢复 Web 服务(需确认服务单元存在)
重建 D-Bus 服务文件 检查 /usr/share/dbus-1/system.d/ 目录下是否存在 bmc.kepler.web_backend.conf 等文件,缺失则从镜像恢复
强制 BMC 重启 使用 reboot 命令重启 BMC,观察是否恢复正常,可临时恢复服务

:white_check_mark: 2. 长期解决方案

方案 说明
升级到 openUBMC 25.12 或更高版本 25.12 版本已优化 AC 启动流程与 PCIe 卡丝印上报机制(见 Document Chunk 4),可根本解决该类问题
检查构建包完整性 确认 bmc.kepler.web_backendbmc.kepler.account 等组件的 .service 文件是否包含在固件包中
启用启动状态检查重试机制 根据 MACA 框架文档,组件在 8 次检查失败后会重启子系统,若频繁失败,应考虑增加重试次数或调整初始化逻辑
日志增强 建议增加 init.lua 对组件启动失败的详细日志,如加载 .service 文件的路径和状态

:white_check_mark: 3. 验证命令建议

# 检查 web_backend 服务状态
systemctl status bmc.kepler.web_backend

# 查看 D-Bus 是否注册服务
busctl list \| grep bmc.kepler.web_backend

# 检查服务文件是否存在
ls /usr/share/dbus-1/system.d/bmc.kepler.web_backend.conf

# 查看组件依赖关系
systemctl list-dependencies bmc.kepler.web_backend

# 重新触发日志收集(若服务恢复)
ipmcget -d dia

:books: 相关知识库引用

  • bmc.kepler.web_backend:是 Web 接口的核心后端服务,其启动依赖 D-Bus 服务文件,若文件缺失会导致 ServiceUnknown 错误。
  • init.lua:负责 BMC 启动时的组件状态检查,若多个组件启动失败,将记录 ERROR 日志并影响系统功能。
  • ACcycle Test:在约 30 次循环后,BMC Web 接口出现连接拒绝问题,已被多个用户复现。
  • openUBMC 25.12:该版本已优化 AC 启动时序问题,建议作为升级目标。

:white_check_mark: 结论

项目 结论
问题类型 BMC 组件初始化失败导致 Web 服务不可用
根本原因 多次 AC 循环后,bmc.kepler.web_backend 等组件因 D-Bus 服务文件缺失或加载失败,导致启动检查失败
触发条件 openUBMC 2509 基线 + 反复 AC 循环
解决方案 升级至 openUBMC 25.12 或更高版本,确保构建包中包含完整 .service 文件
临时规避 手动重启 BMC 或关键服务

:light_bulb: 建议:将此类问题纳入 AC 压力测试标准用例,并监控 init.lua 启动检查日志,及时发现组件异常。


如需进一步分析 dump.tar.gz.txt 中的日志文件,请提供具体需要查看的组件日志(如 app.logframework.log 等),可进行更深层次的调用链排查。

好的,我先看下日志

定位情况怎么样了?

2026-03-16 16:29:13.183697 [:00000008] hardware: LAUNCH snlua hica/subsys/hardware/service/main
2026-03-16 16:29:13.254727 [:00000008] hardware: lua loader error : /opt/bmc/skynet/lualib/loader.lua:0: cannot open /opt/bmc/libmc/service/hica/subsys/hardware/service/main.lua: No such file or directory cannot open /opt/bmc/libmc/service/hica/subsys/hardware/service/main/init.lua: No such file or directory cannot open /opt/bmc/skynet/service/hica/subsys/hardware/service/main.lua: No such file or directory cannot open /opt/bmc/skynet/service/hica/subsys/hardware/service/main/init.lua: No such file or directory cannot open /opt/bmc/apps/hica/subsys/hardware/service/main.lua: Structure needs cleaning cannot open /opt/bmc/apps/hica/subsys/hardware/service/main/init.lua: Structure needs cleaning stack traceback: [C]: in function ‘error’ /opt/bmc/skynet/lualib/loader.lua: in function </opt/bmc/skynet/lualib/loader.lua:0>
2026-03-16 16:29:13.276787 [:00000008] hardware: KILL self
2026-03-16 16:29:13.307257 [:00000002] hardware: KILL self

2026-03-16 16:29:13.226668 certificate ERROR: class.lua(129): failed to start certificate in init stage, err: error loading module ‘rtos_security_config.interface.banner_config_mdb’ from file ‘/opt/bmc/apps/certificate/lualib/rtos_security_config/interface/banner_config_mdb.lua’: …lib/rtos_security_config/interface/banner_config_mdb.lua:1: unexpected symbol stack traceback: [C]: at 0xffff891be748 [C]: in function ‘require’ …lualib/rtos_security_config/rtos_security_config_app.lua:47: in function ‘banner_config_init’ …lualib/rtos_security_config/rtos_security_config_app.lua:27: in function ‘execute’ ./opt/bmc/libmc/lualib/mc/class.lua:156: in function ‘new’ ./opt/bmc/libmc/lualib/mc/singleton.lua:40: in function <./opt/bmc/libmc/lualib/mc/singleton.lua:38> [C]: in function ‘’ /opt/bmc/skynet/lualib/skynet/queue.lua: in function </opt/bmc/skynet/lualib/skynet/queue.lua:0> ./opt/bmc/libmc/lualib/mc/singleton.lua:38: in function ‘new’ ./opt/bmc/apps/certificate/lualib/certificate_app.lua:114: in function ‘old_init’ ./opt/bmc/libmc/lualib/mc/service_app_base.lua:345: in function <./opt/bmc/libmc/lualib/mc/service_app_base.lua:343> [C]: in function ‘pcall’ ./opt/bmc/libmc/lualib/mc/class.lua:124: in function ‘execute’ ./opt/bmc/libmc/lualib/mc/class.lua:156: in function ‘new’ ./opt/bmc/apps/certificate/service/main.lua:35: in function ‘user_main’ ./opt/bmc/libmc/lualib/mc/app_preloader.lua:180: in function ‘’ /opt/bmc/skynet/lualib/skynet.lua: in function </opt/bmc/skynet/lualib/skynet.lua:0> [C]: in function ‘xpcall’ /opt/bmc/skynet/lualib/skynet.lua: in function ‘init_service’ /opt/bmc/skynet/lualib/skynet.lua: in function ‘’ /opt/bmc/skynet/lualib/skynet.lua: in function </opt/bmc/skynet/lualib/skynet.lua:0>
2026-03-16 16:29:13.230751 security ERROR: app_preloader.lua(212): ./opt/bmc/libmc/lualib/mc/launch_control/init.lua:108: app(hica/subsys/security/service/main) count(1) pcall failed(/opt/bmc/skynet/service/service_mgr.lua:0: /opt/bmc/skynet/lualib/skynet.lua:0: call failed)
2026-03-16 16:29:13.237923 security ERROR: l_sig_handler.c(350): ========== FATAL SIGNAL CAUGHT ========== PackageBuildTime: 20260310100621 PID: 2592, PPID: 1 Program: security Signal: 6 (SIGABRT) - Abort signal Signal code: -6 Sending PID: 2592 ========== END OF CRASH REPORT ==========

目前看到有安全进程coredump,以及hardware进程打开文件失败。
文件打开失败的这个,有cannot open /opt/bmc/apps/hica/subsys/hardware/service/main.lua: Structure needs cleaning报错, 这个是报错文件系统错误 ,通常与文件系统损坏或存储硬件问题有关。

Structure needs cleaning 表示:

  • 文件系统元数据损坏或不一致
  • 存储设备有坏块或硬件故障
  • 系统意外断电导致文件系统状态异常
  • 内存错误影响文件系统操作