带DPU2.5 环境下,对服务器执行强制开机命令不生效

环境:25.12 LTS SP1 代码

复现步骤:

1、服务器安装DPU卡

2、执行ipmitool命令对服务器和DPU同时下电,命令:ipmitool -I lanplus -H <host_bmc_ip > -U <host_bmc_user> -P <host_bmc_user_passwd> raw 0x3a 0xf5 0x00

3、无须等待DPU上电,执行ipmitool命令对服务器进行强制开机,命令:ipmitool -I lanplus -H <host_bmc_ip > -U <host_bmc_user> -P <host_bmc_user_passwd> raw 0x3a 0xf6 0x00

4、查看服务器上电状态,BMC运行日志有记录强制开机,机器实际没有上电成功

调用到fructl 开机报错如下:

一键日志如下:

Atlas800IA3_2102315QYP10RC100007_20260514-0737.tar.gz (8.5 MB)

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

总结

当前强制开机不生效最可能的原因是 DPU 组件的上电锁机制 在操作时序上阻塞了命令。建议按上述步骤排查,尤其是等待锁释放、检查锁状态、调整命令执行时机。如果问题依旧,可提供完整的 fructrlfirmware_mgmt 日志作进一步分析。

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

根据您提供的问题描述、日志信息以及知识库中的相关内容,以下是对“带DPU2.5环境下强制开机命令不生效”问题的综合分析及定位建议。


问题现象概述

  • 环境:25.12 LTS SP1 代码,服务器安装 DPU 卡。
  • 复现步骤
    1. 使用 ipmitool raw 0x3a 0xf5 0x00 对服务器和 DPU 同时下电。
    2. 未等待 DPU 上电,立即使用 ipmitool raw 0x3a 0xf6 0x00 执行强制开机。
    3. BMC 日志记录有强制开机操作,但服务器实际未上电。
  • 关键日志frucrtl_obj_mgmt.lua(288): [System:1]set poweron lock, pwronlocked=false, timeout=600, appname=CTCC, reason=ZijinDPU

知识库相关上下文分析

1. 上电锁机制

  • 软件上电锁:BMC 提供的升级固件服务中,要求升级或生效过程中不能做上电操作。升级专用上电锁由 fructrl 管理,上锁期间不响应任何上电命令。
    (来源:文档块2 - “软件上电锁”)
  • 硬件上电锁:默认状态下,若服务器在指定时间内未完成上电,BMC 会锁定服务器上电功能,服务器将无法通过 BMC 上电。该锁可被 cli 命令清除。
    (来源:文档块4 - “规则31” 及 文档块2 - “硬件上电锁”)
  • 日志中出现的 appname=CTCC, reason=ZijinDPU 表明 CTCC 组件(DPU 相关接口,见知识图谱 CTCC_DPU_CARD_INTF)设置了上电锁,原因与 DPU 相关(ZijinDPU)。

2. DPU 上电锁与强制开机冲突

文档块1(【问题求助】AC压测过程中)描述了类似场景:

“当前服务器有DPU,添加了上电锁,在DPU OS启动完成后,释放上电锁时,正好遇到BMC maca进行BMC复位,导致未进行正式上电”

这说明在 DPU 环境下,存在一个上电锁机制,用于保护 DPU OS 启动过程不被打断。如果在 DPU OS 尚未完成启动并释放锁之前,执行强制开机命令,该命令可能会被上电锁阻塞,导致不生效。

3. 通电开机策略

文档块2、3、4提及通电开机策略有三种:保持上电、保持下电、保持AC掉电前的电源状态。下电后立即执行强制开机,可能会因为 DPU 尚未释放锁而受到策略影响。但此处使用的是 ipmitool raw 0x3a 0xf6 强制开机命令,属于直接命令,应绕开通电开机策略,但仍受上电锁约束。

4. IPMI 命令与 DPU 关联

  • ipmitool raw 0x3a 0xf5 0x000x3a 0xf6 0x00 属于自定义 OEM 命令,用于同时控制服务器和 DPU 的上下电。
  • 知识图谱中 BMCkiller 曾提供解决方案:启用 power cap 后再使用 IPMI 命令(源:BMCkiller -> IPMI Command 关系:“BMCkiller provided the correct solution, advising to enable the power cap before using the IPMI command.”)。这可能与电源策略相关,但日志未直接体现。

5. BMC 版本敏感性

BMC Version 25.12 被提及为社区 LTS 版本,且部分命令行为受版本影响(如 BMC Version -> IPMI Query Command 关系:“The command failure may be influenced by the BMC version 25.03”)。当前环境为 25.12 LTS SP1,属于相关版本。


根本原因推断

最可能的原因:在步骤1执行下电后,DPU 的 CTCC 组件设置了上电锁(pwronlocked=false 表示当前未锁定?注意日志中 pwronlocked=false 可能表示锁已释放?但仔细看日志两次出现 set poweron lock, pwronlocked=false,参数含义需明确:pwronlocked=false 可能是 设置锁的状态为未锁定 还是 当前锁状态为 false?从 set poweron lock 动作看,可能是在释放锁设置锁参数。结合文档块1中锁的释放与 BMC 复位冲突,可能是在锁释放瞬间执行强制开机,时序上导致上电失败。另外,也可能是上电锁尚未释放时执行强制开机,命令被锁阻塞。

另一种可能性:在 DPU 下电后立即强制开机,DPU 的 OS 尚未进入稳定状态,BMC 侧的 fructrl 检测到 DPU 未就绪或存在安全策略(如高温检测、上电超时等),拒绝执行上电。


定位建议和解决方案(基于知识库)

步骤1:检查上电锁状态

执行以下命令查询当前上电锁状态:

ipmcget -t main -d poweronlock
  • 如果返回 locked,则说明存在硬件上电锁,需用 CLI 命令清除。
  • 检查日志中类似 set poweron lock 的条目,确认锁的持有者(如 CTCC)和原因。

步骤2:调整操作时序

参考文档块1中的经验,等待 DPU OS 启动完成并释放上电锁后,再执行强制开机命令。可尝试在步骤1下电后,等待一段时间(如 60 秒)再执行强制开机,或观察日志中是否有 DPU 释放锁的提示(类似 release poweron lock)。

步骤3:检查 DPU 状态

使用以下接口查询 DPU 初始化状态(来自知识图谱):

  • GetAllDpuEPInitStatus:获取所有 DPU EP 初始化状态
  • GetDpuSystemStatus:获取 DPU 系统状态

确保 DPU 已进入可操作状态。

步骤4:验证电源策略

检查当前 PowerOnStrategyPowerOnStrategyExceptions 配置(文档块4规则29)。可通过 Redfish 或 CLI 查看。

步骤5:检查 BMC 版本兼容性

确认 BMC 版本 25.12 LTS SP1 是否正确匹配 DPU 固件,参考知识图谱中 BMC Version 的描述,不一致可能导致命令失败。

步骤6:尝试启用 Power Cap

根据 BMCkiller 的建议,在强制开机前先执行启用 Power Cap 的命令(如 ipmitool raw 相关设置),再执行强制开机。


总结

当前强制开机不生效最可能的原因是 DPU 组件的上电锁机制 在操作时序上阻塞了命令。建议按上述步骤排查,尤其是等待锁释放、检查锁状态、调整命令执行时机。如果问题依旧,可提供完整的 fructrlfirmware_mgmt 日志作进一步分析。

2026-05-14 07:19:47.438606 fructrl NOTICE: pg_signal.lua(77): ==== [System:1]PowerGDStatus changed to power on ====
从日志看是上电成功了

这个好像是共性问题,昨天找到方法解决了,多谢您。