必须结合SMART物理层诊断与RAID逻辑层状态实现双维度监控:逐盘检查SMART关键指标(如Reallocated_Sector_Ct)、执行长自检,同时验证RAID实际成员盘状态,建立自动告警与主动干预机制。

要真正守住数据安全底线,光看 RAID 状态远远不够——RAID 正常不等于硬盘健康。一块盘可能已悄悄积累大量坏道、温度超标或通电老化,但仍在阵列中“带病上岗”,直到某次重建失败或二次故障才彻底崩盘。必须把 SMART 物理层诊断和 RAID 逻辑层状态结合起来,形成双维度监控闭环。
先查每块物理盘的 SMART 健康
SMART 是硬盘自带的“体检报告”,必须逐盘检查,不能只依赖 RAID 工具汇总的“看起来正常”:
- 用 smartctl -H /dev/sdX 快速判断是否“PASSED”,但别止步于此——PASSED 只代表当前无致命错误,不代表没有隐患
- 重点盯紧三项指标:Reallocated_Sector_Ct(重映射扇区数)、Current_Pending_Sector(待处理扇区)、UDMA_CRC_Error_Count(线缆级传输错误);任一值非零且持续增长,就是换盘预警信号
- 执行一次 smartctl -t long /dev/sdX(长自检),尤其在新盘上线或怀疑异常时;完成后用 smartctl -l selftest /dev/sdX 查结果,避免“假阴性”
- 加参数 smartctl -o on -S on /dev/sdX 确保 SMART 功能已启用(部分旧盘默认关闭)
再核对 RAID 层的真实状态
RAID 工具显示的是控制器/软件视角的“工作状态”,需穿透表层确认底层一致性:
- 软件 RAID(mdadm):运行 cat /proc/mdstat 看是否有 [U](降级)、[F](故障)或 recovery 中的状态;再用 mdadm --detail /dev/md0 核实每个成员盘的 State 字段是否全为 active sync
- 硬件 RAID(如 LSI/Broadcom):用 MegaCli64 -PDList -aALL 列出所有物理盘,重点看 Firmware state(应为 Online 或 Unconfigured Good),警惕 Failed、Foreign、Offline
- 交叉验证:把 SMART 报警的盘(如 /dev/sdb)和 RAID 工具里标记为异常的盘(如 Enclosure 0, Slot 3)物理位置对应起来,避免误判槽位
建立自动联动告警机制
人工巡检容易遗漏,必须让 SMART 和 RAID 数据“对话”起来:
- 写一个简单脚本,每小时执行:smartctl -H /dev/sdX && mdadm --detail /dev/md0 | grep -q "State : clean",任一失败即触发邮件/钉钉通知
- 对硬件 RAID,用 MegaCli64 -AdpEventLog -GetEvents -f events.log -a0 抓取控制器日志,过滤关键词 "Predictive Failure" 或 "Media Error",这类日志往往比 SMART 更早暴露问题
- 在监控系统(如 Zabbix、Prometheus)中,同时采集 SMART 的 Power_On_Hours 和 RAID 的 Rebuild Progress,当高龄盘(>30000 小时)恰好处于重建中,立即标红预警
日常维护中的关键动作
监控不是终点,而是干预起点:
- 发现一块盘 SMART 异常但 RAID 仍在线?不要等它自己掉线 —— 立即用 mdadm --manage /dev/md0 --fail /dev/sdb 主动踢出,再热插拔更换
- 硬件 RAID 中看到 Pre-fail 状态?立刻导出完整 SMART 日志(smartctl -a /dev/sdb > smart_sdb.txt),连同 MegaCli64 -PDInfo -PhysDrv[E0:S3] -a0 输出一起提交给厂商分析
- 定期(如每月)执行 smartctl -t conveyance /dev/sdX(运输自检),专检因震动、跌落导致的隐性损伤,这对机房搬迁后特别有用










