SMART 磁盘健康检查

smartctl -H 快速健康判定,-A 看关键属性(重分配扇区、待映射扇区、介质错误、温度);属性号随厂商不同。

什么是 SMART

SMART 是磁盘固件内置的自监测机制,把重分配扇区、待映射扇区、离线不可纠正错误、通电时间、温度等计数器暴露出来。smartctl(smartmontools 包)读取这些数据:-H 给出整体健康判定,-A 列出全部属性与阈值,-a 则是完整信息。它擅长发现机械盘的渐进式劣化,对 SSD 主要看磨损与介质错误计数,且必须能被设备支持才能读到。

基本信息

软件包smartmontools(smartctl / smartd)
健康判定smartctl -H /dev/sda
属性明细smartctl -A /dev/sda
被动监控smartd 守护进程可按阈值告警
权限通常需要 root 或 CAP_SYS_ADMIN

典型使用场景

  • 巡检与批量核对:脚本遍历所有盘取健康结论与关键属性
  • 故障盘确认:出现读错误或超时后判断是否该换盘
  • RAID 与 JBOD 环境:用 -d 参数穿透 RAID 卡读取单盘属性
  • SSD 磨损评估:看磨损指示与介质错误计数,规划更换周期
  • 上线验收:记录新盘基线属性,便于日后对比劣化趋势

常用命令

常用命令
sudo smartctl -H /dev/sda                      # 快速健康判定
sudo smartctl -A /dev/sda | grep -iE 'Reallocated|Pending|Media|Temp|Wear'
sudo smartctl -i /dev/sda                      # 型号、序列号、固件版本
sudo smartctl -d megaraid,0 -a /dev/sdb        # RAID 卡后第一块盘
sudo smartctl --scan                           # 列出可识别的设备
sudo smartctl -t short /dev/sda                # 触发短自检(不中断业务)
sudo smartctl -l selftest /dev/sda             # 查看自检历史结果

关键属性判读

属性含义异常信号
Reallocated_Sector已重分配扇区数非 0 且持续增长就是劣化信号
Current_Pending待映射扇区大于 0 表示读取失败待处理,优先关注
Offline_Uncorrectable离线不可纠正错误非 0 说明介质已出现坏块
Temperature_Celsius当前温度长期偏高会加速老化与掉盘
smartd 可以把属性阈值写成告警规则,让磁盘劣化在损坏前就被发现;比人工巡检更可靠,适合批量机器。
SMART 判定为 PASSED 不等于盘没问题:固件阈值往往很宽松,属性趋势比单次结论更有参考价值,出现增长就得安排更换。
批量巡检可以用一行循环覆盖所有盘:遍历 lsblk -dno NAME 的输出逐个执行 smartctl -H 并抓取结果行,把输出接到监控或工单系统,比逐台登录可靠。

易错点

  • RAID 卡后的盘要加 -d 参数(如 -d megaraid,<N>)才能读到,直接读裸设备会得到错误结论
  • USB 桥接与部分云盘、虚拟盘不支持 SMART,读不到不等于健康,需要换其他手段评估
  • 只看 HEALTH PASSED 就放心:重分配与待映射增长往往在阈值触发前就已出现
  • 短自检与长自检会占用盘的时间,长自检在业务盘上要放在维护窗口执行

数据来源与参考

  • smartmontools 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌