igozhang

——

    利用 ipmitool 识别与处理常见硬件问题

    适用于 Linux 本机通过 OpenIPMI/KCS 访问 BMC(联想 XCC、Dell iDRAC、浪潮、Supermicro 等多数 IPMI 机型)。
    原则:先定位、再处理;有真实故障先修硬件,历史告警再清日志。
    写法:说明与命令分开,代码块可直接复制执行。

    输出约定(重要)

    • 打到当前终端的输出控制在 100 行以内(下文多用 head/tail,一般取 80 行留余量)。
    • 完整日志/全量列表重定向到文件,需要时再 less / grep 文件,避免终端被 SEL 刷屏。
    • 多条命令拆成多块执行;不要把会大段输出的命令串在同一块里无限制地连跑。

    一、使用前准备

    说明

    • 需 root(或具备 IPMI 设备权限)。
    • 本机方式一般无需 -H/-U/-P;远程则在每条命令前加 -I lanplus -H <BMC_IP> -U <用户> -P <密码>
    • sdr elist 里 grep 到 Fail 等字样,可能只是传感器名字含 Fail,要以状态列(ok / ns / cr 等)为准。

    命令:确认工具与版本

    which ipmitool
    ipmitool -V
    

    命令:BMC 基本信息(终端)

    ipmitool mc info
    

    命令:FRU 信息(完整进文件,终端只看前 80 行)

    ipmitool fru print > /tmp/fru_$(date +%F_%H%M%S).txt
    FRU_BAK=$(ls -t /tmp/fru_*.txt | head -n 1)
    wc -l "$FRU_BAK"
    head -n 80 "$FRU_BAK"
    

    二、快速健康巡检(推荐固定流程)

    说明

    按块执行:底板 → 机箱 → 异常传感器 → SEL 概况 → 最近事件。
    黄灯时重点看 SEL 是否将满/已满,以及是否有未恢复的 Critical。

    命令:底板与机箱

    ipmitool mc info
    ipmitool chassis status
    

    命令:异常传感器(终端最多约 80 行)

    ipmitool sdr elist | grep -iE 'fail|crit|ncrit|warn|nc |cr |ns ' | head -n 80
    

    命令:SEL 容量与最近事件

    ipmitool sel info
    ipmitool sel elist | tail -n 80
    

    命令:电源 / 风扇 / 温度(分项,避免一次刷屏)

    ipmitool sdr type 'Power Supply' | head -n 80
    
    ipmitool sdr type Fan | head -n 80
    
    ipmitool sdr type Temperature | head -n 80
    
    ipmitool sensor list | grep -iE 'PSU|Fan|Temp|Inlet|CPU|DIMM' | head -n 80
    

    三、读懂输出(对照用)

    SDR 传感器状态(常见)

    状态 含义 处理倾向
    ok 正常 无需处理
    nc Non-Critical,预警 关注趋势,排查散热/冗余
    cr / crit Critical 尽快处理硬件
    nr Non-Recoverable 紧急停机/换件评估
    ns No Reading / 不可用 可能未装该部件或传感器禁用

    SEL 事件关键词

    关键词 常见含义
    Asserted 告警产生/条件成立
    Deasserted 告警恢复
    Log almost full / Log full SEL 将满/已满,常导致机箱黄灯
    Power Supply ... AC lost 电源掉电或线缆松动
    Non-Redundant 电源冗余丢失(单路供电)
    Predictive Failure 部件预测故障(常见硬盘)
    Front Video ... Absent 前面板视频未在位(很多机房常态,易刷屏)

    四、场景:前面板黄灯 / 告警灯

    说明

    1. 先确认当前传感器是否仍有 cr/nc 故障。
    2. 若传感器全 ok,多为 历史 SEL 未清SEL 已满
    3. 清 SEL 前把完整日志备份到文件;终端只看摘要。
    4. 清完仍亮,可冷重启 BMC(一般不影响业务 OS)。

    命令:看现况传感器

    ipmitool sdr elist | grep -iE ' fail|crit|ncrit| nc | cr | nr ' | head -n 80
    

    命令:看 SEL 是否将满

    ipmitool sel info
    

    命令:完整备份 SEL(不刷屏)+ 终端看末 80 行

    ipmitool sel elist > /tmp/sel_backup_$(date +%F_%H%M%S).txt
    SEL_BAK=$(ls -t /tmp/sel_backup_*.txt | head -n 1)
    wc -l "$SEL_BAK"
    tail -n 80 "$SEL_BAK"
    

    命令:清除 SEL 并确认

    ipmitool sel clear
    ipmitool sel info
    ipmitool sel elist | head -n 80
    

    命令:BMC 冷重启(可选)

    ipmitool mc reset cold
    

    五、场景:电源(PSU)告警

    说明

    • Presence detected + ok:电源在位正常。
    • AC lost / IN Failure / Non-Redundant:检查电源线、插座、PDU,确认双路都供电。
    • 历史 PSU 故障若 SDR 已回 ok,清 SEL 即可灭历史灯。
    • 仍报 Critical:按厂商规范更换电源模块。

    命令:电源传感器

    ipmitool sdr type 'Power Supply' | head -n 80
    
    ipmitool sdr elist | grep -i PSU | head -n 80
    

    命令:电源相关历史事件(完整进文件,终端 ≤80 行)

    ipmitool sel elist > /tmp/sel_full_$(date +%F_%H%M%S).txt
    SEL_BAK=$(ls -t /tmp/sel_full_*.txt | head -n 1)
    grep -iE 'PSU|Power Supply|Power Unit|Redundant' "$SEL_BAK" | tail -n 80
    

    六、场景:风扇 / 温度过高

    说明

    • 风扇 nc/cr:查防尘网、空调、缺扇。
    • 温度持续偏高:先改善散热,勿只清日志。

    命令:风扇与温度传感器

    ipmitool sdr type Fan | head -n 80
    
    ipmitool sdr type Temperature | head -n 80
    
    ipmitool sensor list | grep -iE 'Fan|Temp|Inlet|Outlet|CPU' | head -n 80
    

    命令:相关 SEL(先有全量文件时)

    SEL_BAK=$(ls -t /tmp/sel_full_*.txt /tmp/sel_backup_*.txt 2>/dev/null | head -n 1)
    grep -iE 'Fan|Temp|Thermal|Inlet' "$SEL_BAK" | tail -n 80
    

    若还没有备份:

    ipmitool sel elist > /tmp/sel_full_$(date +%F_%H%M%S).txt
    SEL_BAK=$(ls -t /tmp/sel_full_*.txt | head -n 1)
    grep -iE 'Fan|Temp|Thermal|Inlet' "$SEL_BAK" | tail -n 80
    

    七、场景:内存 / CPU / 系统事件

    说明

    • Memory / ECC / Processor / IERR / CATERR 需按槽位定位。
    • 频繁可纠正 ECC:安排换内存;不可纠正或 CPU 严重错误:维护窗口处理。

    命令:传感器摘要

    ipmitool sdr elist | grep -iE 'DIMM|Mem|CPU|Proc' | head -n 80
    

    命令:SEL 筛选(经文件,终端 ≤80 行)

    ipmitool sel elist > /tmp/sel_full_$(date +%F_%H%M%S).txt
    SEL_BAK=$(ls -t /tmp/sel_full_*.txt | head -n 1)
    grep -iE 'Memory|DIMM|ECC|Processor|CPU|IERR|CATERR|Fault' "$SEL_BAK" | tail -n 80
    

    命令:FRU 摘要

    ipmitool fru print > /tmp/fru_$(date +%F_%H%M%S).txt
    FRU_BAK=$(ls -t /tmp/fru_*.txt | head -n 1)
    head -n 80 "$FRU_BAK"
    

    八、场景:硬盘 / 存储背板(带外可见部分)

    说明

    • 细节多在 RAID 工具;IPMI 仅作带外线索。
    • Drive Fault / Predictive Failure:按阵列换盘,不要只清 SEL。

    命令:磁盘相关 SDR / SEL

    ipmitool sdr elist | grep -iE 'Drive|Disk|HDD|Bay|Slot' | head -n 80
    
    ipmitool sel elist > /tmp/sel_full_$(date +%F_%H%M%S).txt
    SEL_BAK=$(ls -t /tmp/sel_full_*.txt | head -n 1)
    grep -iE 'Drive|Disk|HDD|SSD|Slot|Predictive|Hot Swap' "$SEL_BAK" | tail -n 80
    

    九、场景:SEL 被无意义事件刷满

    说明

    常见于联想:Front Video | Absent 周期性刷屏 → SEL 满 → 黄灯。
    处理:确认非真实故障 → 备份并清 SEL → 在 XCC 对该传感器降级/关闭告警。

    命令:统计与抽样(不刷全量到终端)

    ipmitool sel elist > /tmp/sel_full_$(date +%F_%H%M%S).txt
    SEL_BAK=$(ls -t /tmp/sel_full_*.txt | head -n 1)
    wc -l "$SEL_BAK"
    grep -c 'Front Video' "$SEL_BAK"
    grep -iE 'Front Video|Log almost full|Log full' "$SEL_BAK" | tail -n 80
    

    命令:清除 SEL

    ipmitool sel clear
    ipmitool sel info
    

    十、场景:BMC / 带外网络与用户

    说明

    • 联想 XCC 常有复杂密码策略;Invalid data field in request 多为密码不合规。
    • mc reset cold 只重启 BMC,不恢复默认密码。
    • 下列命令输出通常远小于 100 行。

    命令:查看 LAN 与用户

    ipmitool lan print 1
    
    ipmitool user list 1
    

    命令:修改已有用户密码(示例:用户 ID=2)

    说明:末尾 20 为 20 字节密码模式;密码需符合 BMC 策略。

    ipmitool user set password 2 'Lenovo@2024' 20
    

    命令:新增管理员用户(示例:ID=4,用户 igo)

    说明:先 user list 1 选空 ID;Igo@p123 仅 8 位,复杂策略下可能失败,必要时加长。

    ipmitool user set name 4 igo
    ipmitool user set password 4 'Igo@p123' 20
    ipmitool user enable 4
    ipmitool channel setaccess 1 4 link=on ipmi=on callin=on privilege=4
    ipmitool user list 1
    

    十一、场景:远程开关机 / 电源状态(慎用)

    说明

    生产环境操作前确认目标主机;power off / cycle 会中断业务。输出很短。

    命令:查看电源状态

    ipmitool chassis status
    ipmitool power status
    

    命令:改变电源状态(确认后再去掉注释执行)

    # ipmitool power on
    # ipmitool power soft
    # ipmitool power off
    # ipmitool power cycle
    # ipmitool power reset
    

    十二、常见问题速查表

    现象 优先做法 处理方向
    机箱黄灯,业务正常 sel info + 异常 SDR(head)+ SEL 备份后 clear 无现况故障则清历史
    SEL Log full 全量重定向备份 → sel clear 清日志;查刷屏传感器
    PSU 告警 sdr type 'Power Supply' | head 查线缆/PDU/换电源
    温度/风扇告警 sdr type 分项 + head 散热与环境
    设密失败 Invalid data field 加长并满足复杂度,或加 20
    带外网页打不开 lan print 1 / mc reset cold 查管理网;必要时 Setup 恢复 BMC

    十三、建议操作纪律

    1. 先看 SDR 现况,再看 SEL 历史,避免只清日志掩盖故障。
    2. 清 SEL 前备份到 /tmp,终端只用 tail/grep | head|tail 看摘要。
    3. mc reset cold ≠ 恢复出厂。
    4. 密码丢失且本机改密失败:进 Setup 对 BMC 恢复出厂(见《服务器默认管理IP及账号密码汇总》)。
    5. 远程 power 类命令与生产变更同等管控。

    附录:最小应急命令集

    说明:每块单独复制;任意一块打到终端的内容都控制在约 80 行内。

    A. 现况是否健康

    ipmitool mc info
    ipmitool chassis status
    
    ipmitool sdr elist | grep -iE 'fail|crit|ncrit|warn| nc | cr | nr ' | head -n 80
    
    ipmitool sel info
    ipmitool sel elist | tail -n 80
    

    B. 电源 / 风扇 / 温度

    ipmitool sdr type 'Power Supply' | head -n 80
    
    ipmitool sdr type Fan | head -n 80
    
    ipmitool sdr type Temperature | head -n 80
    

    C. 备份并清除 SEL(无现况 Critical 时)

    ipmitool sel elist > /tmp/sel_backup_$(date +%F_%H%M%S).txt
    SEL_BAK=$(ls -t /tmp/sel_backup_*.txt | head -n 1)
    wc -l "$SEL_BAK"
    tail -n 80 "$SEL_BAK"
    
    ipmitool sel clear
    ipmitool sel info
    
    ipmitool mc reset cold
    

    实操以现场机型与厂商文档为准;OEM 传感器名称可能略有差异。

    MP3