NVMe 上的健康测试

NVMe 上的健康测试

在我拥有的带有 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

相关内容