切换主备模式不生效且电源额定功率读取错误

// 此模板仅供参考,如果不适用可以修改

问题描述

[在这里详细描述您遇到的问题]
1.从负载均衡切换到主备模式失败
2.电源1的额定功率预期是2600,显示为2200W
– 看维护日志很多记录2600与2200之间变化

环境信息

  • 操作系统:如 Ubuntu 24.04

  • 软件版本: OpenUBMC2509

  • 硬件配置:[如 CPU、内存等]

重现步骤

  1. [第一步]

  2. [第二步]

  3. [第三步]

期望结果

[您希望实现什么]

实际结果

[实际发生了什么,包含错误信息]

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

分析结论

[详细总结您对此问题的分析结论]

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

结论

项目 分析结论
主备切换失败 很可能并非“失败”,而是 power_strategy 自动检测到节能效益不足后主动回切至“负载均衡”。建议检查 ActualPowerMode 字段确认实际状态。
额定功率错误 极大概率是 BMC 识别或缓存问题,源于 PSU 返回信息错误、CSR 映射不当或缓存未刷新。建议通过 busctl 查询底层属性验证。
根本原因 系统对电源状态监控与用户视图不同步,且缺少合理的提示机制,导致用户体验困惑。
点击此处查看详细分析解答

主备模式切换失败及电源额定功率读取异常问题分析

问题概述

根据提交的问题描述,系统在执行以下两个操作时出现异常:

  1. 主备供电模式切换失败:从“负载均衡”模式切换至“主备供电”模式未生效。
  2. 电源额定功率显示错误:电源 PSU1 的额定功率预期为 2600W,但界面上显示为 2200W,且维护日志中存在频繁在 2600W 与 2200W 之间跳变的记录。

环境信息

  • 操作系统Ubuntu 24.04
  • 软件版本OpenUBMC2509
  • 硬件配置:未明确提供(需用户补充 CPU、内存、电源型号等关键信息)

相关技术背景与机制

1. 电源工作模式设置机制

在 OpenUBMC 系统中,电源工作模式由参数 BMCSet_PowerWorkingMode 控制,其支持的值包括:

  • LoadBalancing:负载均衡模式(默认)
  • Active/Standby:主备供电模式

该设置通过 power_strategy 模块进行管理,并受以下条件制约:

  • 系统必须具备冗余电源支持(即 ActiveStandbySupported = true)。
  • 实际切换逻辑由 power_strategy 组件中的 power_mode_control.lua 脚本控制。
  • 若系统实时功耗较低或未满足节能效益阈值,系统可能自动回切到“负载均衡”模式。

:pushpin: 参考知识:文档中提到,当系统判断主备模式带来的节能效果不显著时(例如差值 < 50W),power_strategy 会自动将 PowerActualWorkingMode 重新设为 LoadBalancing,这可能导致用户感知“切换失败”。


2. 额定功率读取来源

电源额定功率(Rated Power)通常通过以下方式获取:

  • 来源于 bmc.dev.PowerSupply 接口提供的静态属性,包括:
    • Model
    • PartNumber
    • FirmwareVersion
    • RatedOutputPower(或类似字段)
  • 此信息由 BMC 通过 PMBus 协议与 PSU 通信后解析并缓存。

若存在多个固件版本或硬件兼容列表定义冲突,可能导致 BMC 缓存不一致或识别错误。


可能原因分析

(一)主备模式切换失败原因

可能原因 说明
:white_check_mark: 自动切换逻辑触发回退 根据日志行为分析,power_strategy 判断主备模式节能效益不足(如实测仅相差 <10W),自动回切至负载均衡。这是当前常见设计逻辑。
:red_exclamation_mark: 硬件不支持主备模式 需确认电源模块是否支持主备功能(ActiveStandbySupported 属性是否启用)。部分低功率或非冗余设计电源不支持此特性。
:warning: 冗余条件未满足 如出现 RedundancyFailure 或 “Number of Power Supplies Present Does Not Meet Monitoring Requirement”,则禁止切换。即使物理存在两个电源,若一个未通电或通信异常,仍视为不可用。
:wrench: IPMI/Redfish 接口调用方式错误 使用 RAW 命令设置时(如 ipmitool raw 0x30 0x93...),参数偏移量、数据格式错误可能导致指令被忽略或执行失败。

:magnifying_glass_tilted_left: 线索支持:搜索结果 ID 5 显示,“通过 IPMI 设置主备模式后短暂生效又恢复”,正是典型 BMC 主动干预恢复 行为,而非命令无效。


(二)额定功率读取错误原因

可能原因 说明
:white_check_mark: PSU 固件返回功率信息错误 若 PSU 内部 FRU 信息或 PMBus 寄存器中定义的额定功率为 2200W,则 BMC 将读取到该值,即使实际硬件是 2600W 型号。
:counterclockwise_arrows_button: BMC 缓存未刷新或版本错乱 若系统曾配置过 2200W 的电源,缓存数据未清除,新插入 2600W 电源后仍可能沿用旧值。重启或热插拔后未重新加载配置可能导致此问题。
:puzzle_piece: CSR 配置表中映射错误 在 CSR 配置字典中,可能存在根据 Part Number 查找额定功率的映射表。若该表未更新,也可能导致识别偏差。

:magnifying_glass_tilted_left: 线索支持:日志中频繁出现 2200W 与 2600W 跳变,表明 识别过程不稳定,极可能是 BMC 与 PSU 通信断续或缓存刷新冲突所致。


建议排查步骤与解决方案

步骤 1:确认主备模式切换是否真正失败

# 查看实际工作模式(非设置模式)
curl -X GET http://<BMC_IP>/UI/Rest/System/PowerSupply | grep ActualPowerMode
  • 如果返回 "ActualPowerMode": "Sharing",说明当前为负载均衡。
  • 若返回 "Active/Standby",则切换已生效,前端显示可能延迟或未同步。

提示:前端页面显示的是配置值 PowerWorkingMode,而实际运行模式为 PowerActualWorkingMode,二者可能不一致(见 Search Result ID 3)。


步骤 2:检查系统冗余状态和告警

# 检查 RedundancyFailure 状态
busctl get-property xyz.openbmc_project.ObjectMapper /xyz/openbmc_project/.../PowerRedundancy xyz.openbmc_project.RAID.Activation RedundancyHealthy

# 或查看日志中是否存在以下关键字:
journalctl -u power_strategy | grep -i "redundancy\|failover\|not meet"
  • 若存在 RedundancyFailure,说明冗余不成立,无法进入主备模式。

步骤 3:查看电源详细信息

# 查询 PSU1 的静态属性
busctl introspect bmc.dev.PowerSupply /xyz/openbmc_project/inventory/system/chassis/powersupply1

# 检查关键字段:
# - Model
# - PartNumber
# - RatedOutputPower
# - FirmwareVersion

对比该信息是否与实物标签一致。若显示为 2200W,则属于识别错误。


步骤 4:强制刷新电源状态(可选)

# 重启 power_management 服务以清除缓存
systemctl restart power-mgmt.service

# 或重启整个 BMC
reboot bmc

观察重启后额定功率是否稳定显示为 2600W。


步骤 5:升级或修正配置

  1. 更新 CSR 配置文件

    • 确保 ActiveStandbySupported = true
    • 校准 PartNumberRatedPower 的映射关系。
  2. 升级 power_strategy 组件

    • 当前版本可能存在逻辑缺陷。建议升级至 1.70.74 或更高版本,以支持更准确的切换判断与状态回显。
  3. 修改自动切换阈值

    • power_mode_control.lua 中增加判断阈值(如:差值需大于 50W 才允许回切),避免无意义切换。

结论

项目 分析结论
主备切换失败 很可能并非“失败”,而是 power_strategy 自动检测到节能效益不足后主动回切至“负载均衡”。建议检查 ActualPowerMode 字段确认实际状态。
额定功率错误 极大概率是 BMC 识别或缓存问题,源于 PSU 返回信息错误、CSR 映射不当或缓存未刷新。建议通过 busctl 查询底层属性验证。
根本原因 系统对电源状态监控与用户视图不同步,且缺少合理的提示机制,导致用户体验困惑。

建议优化方向

  1. 前端增强显示:增加“实际工作模式”字段展示(如 Search Result ID 3 所述)。
  2. 添加切换日志提示:当系统自动回切模式时,在 Web 界面弹出通知:“系统节能判断未达阈值,自动保留负载均衡模式”。
  3. 校准电源识别库:定期更新电源 Part Number 到额定参数的映射表,避免识别错误。
  4. 提供调试命令工具:允许管理员手动强制切换并禁用自动回切功能,便于测试。

:white_check_mark: 最终建议:请优先使用 curlbusctl 工具查看 ActualPowerMode 和 PSU 的 RatedOutputPower 属性,确认底层状态是否正常。若底层正确而前端显示异常,则为 UI 层同步问题;若底层即错误,则需排查固件或配置。

S920X25_PR210KPR0202471800000_20260416-1417.tar.gz.txt (2.8 MB)

节能收益计算负载均衡模式存在收益,Update energy saving space successfully, component: PSU, energy saving space: 0, recommend policies: [{“params”:,“mode”:“LoadBalancing”}]

busctl --user call bmc.kepler.hwproxy /bmc/kepler/Chip/Eeprom/Eeprom_PsuChip1_0101 bmc.kepler.Chip.BlockIO Read a{ss}uu 0 49 3 用这个读一下额定功率看看,看看电源读取值是多少


节能收益计算负载均衡模式存在收益导致不能切主备,这个现象有文档说明吗

可以看下web的联机帮助还有设置主备模式时的后面问号的提示


你说的是这个吗,没看懂这句话的意思,太深奥了
后面这句切换电源模式具体是什么执行逻辑
@fumingquan

主备模式时,会根据当前节能情况决定是否切换成负载均衡