硬件健康监控:温度、SMART 与磁盘寿命

用 smartctl、sensors 和 nvme 定期巡检物理机的磁盘健康与温度,坏盘早发现、早更换。

为什么要主动巡检

物理机(独立服务器)的硬件故障往往有前兆:磁盘坏道悄悄增加、SSD 写入寿命耗尽、机箱散热变差导致 CPU 高温降频。等到磁盘彻底掉线才察觉,通常已经丢了数据。定期巡检能在故障真正发生前,捕捉到这些劣化信号。

安装工具

sudo apt update
sudo apt install -y smartmontools lm-sensors nvme-cli
sudo sensors-detect --auto   # 首次运行,检测温度传感器

用 smartctl 看磁盘 SMART

先看整体健康:

sudo smartctl -H /dev/sda        # 健康自评(PASSED/FAILED)
sudo smartctl -a /dev/sda        # 打印全部属性

PASSED 只是粗略结论,磁盘常常在报 PASSED 的同时就已在劣化。真正要盯的是下面几个属性,它们的 Raw 值应长期为 0,或只极缓慢增长:

  • ReallocatedSectorCt — 已重映射的坏扇区数;大于 0 且持续上涨,就是换盘信号
  • CurrentPendingSector — 等待重映射的可疑扇区
  • OfflineUncorrectable — 无法纠正的扇区
  • WearLevelingCount / MediaWearoutIndicator — SSD 磨损程度(归一值越低,越接近寿命终点)

跑自检:

sudo smartctl -t short /dev/sda     # 短测,约 2 分钟
sudo smartctl -t long /dev/sda      # 长测,全盘表面扫描
sudo smartctl -l selftest /dev/sda  # 查看自检结果

温度:sensors

sensors

关注 CPU 各核温度和主板温度。数值持续贴近 high/crit 阈值,说明散热或风扇出了问题。配合 watch -n 2 sensors 可实时观察满载时的温度曲线。

NVMe 寿命:nvme smart-log

sudo nvme smart-log /dev/nvme0

重点看这几项:

  • percentageused — 已用寿命百分比,接近 100% 就该安排更换
  • availablespare — 剩余备用块,低于 availablesparethreshold 即为告警
  • mediaerrors / criticalwarning — 非 0 就要重视
  • temperature — NVMe 过热同样会降速

设定期巡检与告警

别靠手动记性。用 cron 每天跑一次,只在异常时报警:

# /etc/cron.daily/disk-check
sudo smartctl -H /dev/sda | grep -q PASSED || echo "sda SMART 异常" | mail -s "磁盘告警" [email protected]

更省心的做法是直接用 smartmontools 自带的守护进程 smartd:在 /etc/smartd.conf 里配置阈值和邮件通知,它就会在后台持续监控,并在 ReallocatedSector 开始上涨时自动报警。

小结

硬件监控的核心是"看趋势"而非"看单点":坏扇区、SSD 磨损、备用块都只会单调劣化,提前几周就能看出苗头。建议把 smartctl -H、nvme smart-log、sensors 纳入每日 cron 巡检,关键指标接入告警,并对重要数据保持独立备份——监控是为了从容换盘,而不是替代备份。