PSU(Power Supply Unit,电源供应单元)是服务器的 “能量心脏”,而 OpenBMC 的 PSU 管理服务则是守护这颗心脏的 “智能管家”—— 负责实时监控电源状态、配置工作模式、保障冗余备份、记录资产信息,确保服务器供电稳定可靠。OpenBMC 的 PSU 管理服务基于定制化开发,整合了配置解析、硬件交互、传感器监控、冗余控制等核心能力,本文基于其技术架构,从核心组件、服务流程、关键功能三个维度,拆解其实现逻辑与应用价值,适用于 BMC 系统维护人员和嵌入式开发者。
一、核心组件:PSU 管理的 “协作团队”
OpenBMC 的 PSU 管理依赖少量核心组件,分工明确,协同完成电源全生命周期管理:
| 定制化 PSU 管理服务 | 核心控制中枢 | 统筹配置解析、状态监控、冗余判断、接口暴露等全功能 |
| 通用 FPGA 接口库 | 硬件交互桥梁 | 提供 FPGA 相关通用接口,支持通过 FPGA 获取 PSU 在位状态等硬件信息 |
| 配置文件(psu_info.json) | 配置数据源 | 存储 PSU 在位方式、冗余规则、I2C 总线地址等核心参数 |
| D-Bus 总线 | 跨组件通信载体 | 暴露 PSU 资产、状态、传感器数据,供其他服务(如 Redfish、IPMI)调用 |
这些组件围绕 “配置驱动 + 硬件交互 + 状态反馈” 的逻辑,构建起 PSU 管理的完整闭环。
二、整体服务概述:“电源管家” 的核心职责

PSU 管理服务的核心目标是 “保障供电稳定、简化电源管理”,具体承担四大职责:
服务的整体工作流可概括为:解析配置→初始化硬件→创建传感器→循环监控→状态反馈,全程自动化运行,无需人工干预。
三、代码核心流程:从启动到监控的完整链路

PSU 管理服务的启动与运行遵循固定流程,确保配置生效、监控精准,核心步骤如下:
- 在位时:创建阈值型传感器(电流、电压、温度等)和离散型传感器(状态监控),注册到 D-Bus;
- 不在位时:清空对应 D-Bus 数据,停止监控;
四、关键功能详解:“电源管家” 的核心技能
1. 灵活配置:适配不同硬件场景
PSU 管理的灵活性源于 psu_info.json 配置文件,支持定制化适配不同服务器硬件,核心配置项如下:
- 在位检测方式(Protocol):定义 PSU 在位状态的获取途径(如 1=FPGA、2=GPIO),适配不同硬件设计;
- 冗余规则(Redundancy):配置 PSU 满配数量(FullCount)和降级数量(Degrade),例如 “满配 2 颗、降级 2 颗” 表示允许 1 颗故障仍能正常供电;
- 硬件信息(Detail):指定每颗 PSU 的 I2C 总线(I2CBus)和地址(I2CAddress),确保硬件通信精准。
冗余降级开关:默认启用冗余判断,若无需该功能,可在自定义层的配置文件中通过编译选项关闭(如 (-Dpsu-degrade=disabled))。
2. 资产信息管理:电源的 “身份档案”
PSU 管理服务会为每颗在位 PSU 建立完整的 “身份档案”,确保资产可追溯:
- 采集方式:通过 I2C 读取 PSU 的 barcode、厂商 ID、型号等原始数据;
- 解析规则:按标准化规则解析 barcode,提取序列号(SN)、部件号(PN)、生产日期、厂商信息等;
- 信息暴露:资产数据通过 D-Bus 接口暴露,可通过 busctl 命令查询,示例如下:
busctl introspect xyz.openbmc_project.PSUManager /xyz/openbmc_project/inventory/system/powersupply/PSU0
暴露的核心资产包括制造商、型号、序列号、生产日期、硬件版本等,支持远程资产盘点。
3. 双类型传感器:电源状态的 “监测探针”
PSU 管理服务通过两类传感器,全面监控电源的 “健康状况”,数据均通过 D-Bus 实时更新:
(1)阈值型传感器:数值化状态监控
针对可量化的电源参数,创建阈值型传感器,支持分级告警,核心监控项包括:
- 电流:输入 / 输出电流(如 PSU0_Input_Current);
- 电压:输入 / 输出电压(如 PSU0_Output_Voltage);
- 功率:输入 / 输出功率(如 PSU0_Input_Power);
- 温度:电源内部温度(如 PSU0_Temperature、PSU0_Temp1);
- 风扇转速:电源风扇转速(如 PSU0_Fan_Speed_1)。
实现逻辑:PSU 在位时,服务通过 I2C 周期性读取硬件参数,更新到对应 D-Bus 路径;PSU 不在位时,自动清除传感器数据,停止监控。
(2)离散型传感器:状态事件监控
针对电源的故障、在位等离散状态,通过 8bit 偏移量(Event1_Offset0~7)监控,每一位对应一种状态(如在位、故障、输入异常):
- 状态触发:读取 PSU 的状态寄存器(如 status_word),若与上一次状态不一致,连续检测 3 次确认后,置位对应偏移量;
- 日志生成:状态异常时,触发日志服务生成告警日志,支撑故障排查;
- 状态描述:通过配置文件定义每个偏移量对应的状态说明(如 “Device Inserted”“Failure detected”),确保状态可解读。
4. 动态冗余:供电稳定的 “安全网”
冗余功能是保障服务器不间断供电的核心,PSU 管理服务支持动态冗余判断,逻辑如下:
- 基准设置:服务启动 10 秒后,以当前实际在位的 PSU 数量为 “冗余基准”;
- 基准更新:后续 PSU 数量增加时,自动更新冗余基准;
- 冗余判断:
- 当在位数量 ≥ 基准数量:维持 “全冗余” 状态;
- 当在位数量 <基准数量但 ≥ 降级数量:触发 “冗余降级” 告警;
- 当在位数量 <降级数量:触发 “冗余丢失” 告警,提示供电风险。
示例场景:满配 4 颗 PSU 的服务器,初始接入 2 颗,10 秒后基准设为 2;后续插入 1 颗,基准更新为 3;此时拔掉 1 颗,在位数量 2 ≥ 降级数量 2,触发 “冗余降级” 告警。
5. 虚拟 FRU:资产管理的 “补全方案”
针对部分无原生 FRU(Field Replaceable Unit)的 PSU,服务会生成 “虚拟 FRU”,确保资产信息完整性:
- 生成逻辑:基于采集的资产数据(型号、序列号等),模拟 FRU 信息,创建对应的 D-Bus 路径(如 /xyz/openbmc_project/FruDevice/system/chassis/psu0_fru);
- 核心价值:统一资产管理接口,无论 PSU 是否自带 FRU,均能通过标准化 FRU 接口查询资产,简化上层管理。
6. 对外接口:灵活的 “配置入口”
PSU 管理服务通过 D-Bus 暴露丰富的方法和属性,支持远程配置与查询,核心接口如下:
| 查询方法 | GetPSUInfo | 获取所有 PSU 的完整信息(与定制化 CMD 对应) |
| GetPSUWorkMode | 查询 PSU 工作模式 | |
| GetPSUWorkModeDefault | 查询 PSU 默认工作模式 | |
| 配置方法 | SetPSUWorkMode | 配置 PSU 工作模式(支持按比例分配) |
| SetPSUWorkModeDefault | 配置 PSU 默认工作模式(支持单颗 PSU 独立配置) | |
| SetPSUCycleMode | 配置 PSU 下电模式,设置下电延时 | |
| 属性配置 | PSUCycleDelayTime | 下电延时时间(可写) |
| PSUCycleSupport | 是否支持下电模式(可写) | |
| PSUMonitorState | 监控状态控制(如 “RUNNING”/“STOPPED”,停止后禁止配置 PSU) |
五、优化方向:持续完善的 “电源管理能力”
PSU 管理服务仍有多个优化方向,进一步提升实用性和稳定性:
六、总结:PSU 管理的核心价值
OpenBMC 的 PSU 管理服务通过 “配置驱动 + 硬件交互 + 智能监控”,实现了电源的全生命周期管理,核心价值体现在三方面:
对于服务器运维人员,PSU 管理服务是电源故障排查、资产盘点的核心工具;对于嵌入式开发者,其模块化设计(配置解析、传感器管理、冗余判断)可为定制化电源管理功能提供参考。
网硕互联帮助中心





评论前必须登录!
注册