
硬件故障从来都不是没有预兆地突然发生的,磁盘介质老化、内存颗粒劣化以及供电和散热异常等问题都会在底层日志中留下连续信号。有效的监控方式并不是等到系统崩溃之后再去分析原因,而是要通过IPMI(BMC带外管理)、磁盘SMART、内存ECC等日志来提前发现潜在的问题。
一、为什么必须走带外采集
操作系统层面的监视无法看到关机前最后一刻的状态信息。CPU 过热降频、风扇停止转动、内存出现不可修复的错误以及硬盘性能下降等情况通常都出现在系统日志被记录之前。
IPMI/BMC可以独立于业务系统之外进行工作:
- 断电或者系统崩溃之后仍然会保存SEL
- 直接获取温度、电压、风扇、电源和DIMM插槽的信息
- 不影响业务处理,可以24小时不间断地进行低频率轮询
和主机内部的smartctl、EDAC/rasdaemon一起构成“外部事件+内部介质信息”的双层数据来源。
二、磁盘侧面:SMART 不只是看“通过/失败”
smartctl -H只能给出一个健康的判断结果,而真正的预测价值来自于原始的计数趋势。
关键属性
- Reallocated_Sector_Ct(05):重映射扇区,>0 即代表盘片已启动备用扇区替换
- Current_Pending_Sector(C5):待映射扇区,存在读不出但还没重映射的坏点
- Offline_Uncorrectable(C6):离线不可纠正扇区,已有数据读取风险
- UDMA_CRC_Error_Count:突增时优先排查线缆、接口、RAID 卡,而非立刻判磁盘坏
- NVMe:看
Media_Errors、Critical_Warning、Percentage_Used
预测逻辑
单个数据点比“增长率为零”更重要:
- 24小时内的重映射扇区数量不断增加→介质老化得到证实
- C5/C6 不为0并且有内核
I/O error→ 进入换盘窗口 - 当 SSD 的
Percentage_Used超过90%或者Available Spare小于某个值的时候,就会发出寿命警告
自动化采集示例:
smartctl -A /dev/sda | grep -E "Reallocated_Sector|C5|C6|UDMA_CRC"
nvme smart-log /dev/nvme0n1
和 smartd 一起做定期短、长自检,把结果存入时序数据库里,而不仅仅是发送邮件。
三、内存侧:ECC纠错次数是主要的衡量标准
ECC的作用在于可以容忍错误,并不是没有错误的意思。偶发的单比特错误可能是由于电磁干扰造成的,而一个DIMM上不断出现CE(可纠正的错误)则表明该内存条已经出现了老化现象。
采集路径
BMC 层:
ipmitool sel elist | grep -iE "memory|ecc|dimm"
系统层:
ras-mc-ctl --summary
dmesg -T | grep -iE "edac|mce|correctable"
分级判断
- 零星CE、没有增长:记录基准
- 同一槽位24小时内CE值上升很快:标记为高危,安排检修时间
- 发生UCE/MCE时马上把业务切断掉,更换线路
- SEL中的CE到UCE的演变过程:故障临界点不能继续运行
高端平台可以配合iDRAC/iLO/XClarity来把故障定位到具体的插槽、Rank和Bank上,防止整个系统被替换掉。
四、IPMI 事件和智能告警之间的关联
原始的日志信息不足,要形成可以做出判断的告警。
采集架构
BMC(IPMI/Redfish) ──> ipmi_exporter ──> Prometheus
smartctl/rasdaemon ──> node_exporter textfile ──> Prometheus
│
Alertmanager
│
工单 / IM / 自动隔离
告警分级建议
- P0 紧急:UCE、电源失效、RAID 降级、磁盘不可写 → 电话+自动切流
- P1 预警:CE 增长超基线、重映射扇区递增、C5>0 → 建换件工单
- P2 观察:温度靠近阈值、风扇转速偏移、SSD 寿命 80%+ → 周报跟踪
比单一阈值更加准确的“组合规则”
- 进风温度升高、风扇全速运转、CPU 温度一起上升→机房制冷出现问题,不能判定为单台设备故障
- SMART异常+业务I/O等待时间变长→先迁移数据再更换硬盘
- DIMM CE 的增长和负载高峰相吻合→内存热敏性老化的原因→不能简单地通过重启来解决问题
五、落地闭环:从“发现”到“更换”
监控的目的并不是发出警报,而是进行更换。
- 每天检查SEL、SMART和EDAC快照
- 用历史数据做对比来产生一个叫做“风险评分”的东西,而不是简单的报警
- 对高危设备进行自动标记,同时更新备品备件库存
- 在维护窗口期间进行数据迁移和备份验证
- 更换部件之后要清除SEL信息、保存故障数据来调整阈值
BMC 管理口应该使用独立的VLAN、关闭默认的密码、限制来源IP地址,防止监控通道成为被攻击的目标。
六、常见的错误用法
- 只通过
smartctl -H OK来判断硬盘是否完好:许多硬盘在故障之前几周就已经出现了C5的增长 - 不考虑CE计数:等到UCE的时候再去处理,一般都会有静默数据的风险
- 把IPMI告警当作系统日志来对待:不保存SEL,之后不能进行回顾
- 在虚拟机环境中使用ipmitool时没有BMC的情况下应该降级为虚拟化层磁盘IO和宿主机硬件透传监控
总结
硬件预测性维护的核心就是把“故障之后进行维修”改为“在设备出现异常之前采取措施”。IPMI可以监测到主板上发生的各种事件以及插槽的位置信息;SMART能够分析出硬盘的状态变化趋势;ECC和EDAC可以跟踪内存条的老化过程。三者结合起来再加上分级报警、备件管理等手段,就可以把突发的停机事件变成一次有计划的更换操作。