在我拥有的带有 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。
答案1
SMART 自检是为机械磁盘设计的。SATA SSD 几乎完全复制了早期 HDD 接口级行为,支持此类自检,但实际上运行时并没有什么作用。NVMe 驱动器完全放弃了此类 SMART 自检程序。
对于基于闪存的磁盘,人们应该真正跟踪单元磨损、备用块数和重新分配的扇区,而不是依赖 NVMe 驱动器不支持的旧自检程序。
答案2
安装 NVME 测试客户端
sudo apt install nvme-cli
找到您要检查的驱动器
nvme list
sudo nvme smart-log /dev/nvme0n1
您还可以使用此命令运行一些其他自检命令,我相信这些命令提供了 smartctl 所做的旧的短/长测试。
nvme device-self-test /dev/nvme0 -n 1 -s 1
nvme self-test-log /dev/nvme0n1