在我拥有的带有 HDD 或 SSD 的服务器上,我有一个定期运行的 cron:
/usr/sbin/smartctl --test=short/long /dev/sd1
(对于每个磁盘)
当它运行时,它只是查看 的输出/usr/sbin/smartctl -c /dev/sd1
,循环直到它不再包含:
[0-9]+% of test remaining.
然后检查它是否在没有错误的情况下完成:
( 0) The previous self-test routine completed
但是,从 7.0 版开始,它似乎smartctl
还不支持对 NVMe 的测试,并且按照:https ://www.smartmontools.org/wiki/NVMe_Support
它确实说
smartd 守护进程跟踪运行状况 (-H)、错误计数 (-l error) 和温度 (-W DIFF,INFO,CRIT)
但实际运行测试的是什么?除非我们运行短/长测试,否则我不确定是否输出-H
和更新?-l
我也读过关于nvme-cli
,但我似乎没有找到用它在磁盘上运行健康测试的方法。
有任何想法吗?
在这里使用 CentOS 7。
SMART 自检是为机械磁盘设计的。SATA SSD 几乎完全反映了早期的 HDD 接口级行为,支持这种自检,但实际上在运行时并没有做太多。NVMe 驱动器完全放弃了这种 SMART 自检程序。
对于基于闪存的磁盘,应该真正跟踪单元磨损、备用块计数和重新分配的扇区,而不是依赖 NVMe 驱动器不支持的旧自检例程。