应使用sudo dmidecode -t 39读取SMBIOS电源信息:若返回多条“Power Unit Group”且Status均为Present, OK,则为双电源冗余;仅一条则为单电源;/proc/acpi和/sys/class/power_supply不可靠。

要确认Linux服务器当前是单电源供电还是双电源冗余配置,不能只看电源插头数量或机箱外观,必须通过硬件固件层读取真实供电单元状态。直接查dmi信息是最可靠的方式,因为BIOS/UEFI在启动时已将电源模块的物理存在、热插拔能力、状态标识等写入SMBIOS表中。
用dmidecode提取电源单元原始数据
执行 sudo dmidecode -t 39,该命令专用于读取“System Power Supply”类型条目,避免在整份dmi输出里手动grep匹配。
若系统返回多条“Power Unit Group”记录(例如Group: 1 和 Group: 2),且每条都含 【Status: Present, OK】,说明双电源均已识别并就绪;若仅有一条且Status为Present,则为单电源配置。
注意:部分OEM厂商(如华为FusionServer RH2288 V3)会将冗余电源的“Hot Replaceable”字段设为No,但这不表示不支持冗余,只说明该型号电源不支持带电更换——冗余有效性需以Status和Group数量为准。
快速验证冗余状态是否生效
方法一:检查电源状态汇总
运行 sudo dmidecode | awk '/^System Power Supply$/,/^$/ {print}' | grep -E '^(Location|Status|Hot Replaceable|Plugged)',聚焦关键字段。
方法二:统计有效电源数
执行 sudo dmidecode -t 39 2>/dev/null | grep -c "Status: Present, OK",输出为1即单电,输出≥2即双电冗余已识别。
方法三:结合iBMC远程核验(适用于华为RH2288 V3等带管理模块机型)
用curl调用iBMC REST API:curl -k -u "user:pass" https://,返回两个Enabled对象即确认双电源在线。
排除误判:为什么/proc/acpi/acpi_enumerate不管用
该路径在多数x86服务器上为空或仅返回通用ACPI电源事件,无法反映物理电源模块数量与状态。
现代服务器(如RH2288 V3)的电源管理由iBMC独立控制,ACPI仅负责基础休眠唤醒,不参与冗余逻辑——所以别浪费时间翻/sys/firmware/acpi/。
如果你看到cat /sys/class/power_supply/下有多个目录,那只是电池或UPS设备,不是服务器主电源单元,【切勿据此判断冗余配置】。











