如何测试 SSD 或 NVMe 是否存在坏块?

如何测试 SSD 或 NVMe 是否存在坏块?

使用传统的旋转磁盘进行诊断相当容易。如果你怀疑驱动器出现故障,您可以检查 SMART 值,运行 SMART 扩展测试和测试badblocks -wsv。如果所有三个测试均未显示错误,则驱动器可能/通常没有问题。

如果是 SSD 或现代 NVMe 驱动器,我们该怎么办?

显然,SMART 仍然是一个好主意,但如果它完成时没有错误怎么办?badblocks -wsv在基于闪存的内存设备上运行是个好主意吗?

还有其他选择吗?

另外,使用badblocks什么选项合适?是否应该使用 SSD 的“擦除块大小”?


这个问题类似于我能证明 SSD 坏了吗?但那里的答案来自 2013 年。从那时起,我们已经看到了几代闪存技术。- 此外,虽然他们提出了建议badblocks,但我错过了关于这是否是一个好主意的讨论。最终,一些闪存不喜欢将其写入 100%。此外,我们事后如何告诉 SSD 哪些扇区是空闲的(再次)?

如何修复 SSD 上的坏块也不能令人满意。

在 SSD 上运行 CHKDSK 有多安全?仅讨论chkdsk

我找不到解决此问题的其他资源。

答案1

一般来说,除了关注 SMART 已经告诉你的内容之外,你不需要这样做。原因是 SSD 使用耗损均衡,因此它们有一个高级控制器,该控制器已经在后台负责检测和重新映射坏块,因此从操作系统的角度来看,以及从 badblocks 等标准实用程序的角度来看,任何坏块都是不可见的,因为它们已经被重新映射了。如果 badblocks 以某种方式找到了坏块,它会立即被重新映射,因此下次你读取它时它将再次变为“好”。

要真正了解驱动器的健康状况,您需要知道控制器已重新映射了多少坏块,以及还有多少备用容量可供进一步重新映射。 SMART 数据应该会为您提供 SATA 的这些信息,或者 NVMe 具有包含相同信息的等效日志页面。 特别是,“可用备用”属性将为您提供驱动器总重新映射能力已用完的百分比。

此页面有一些可用于 SATA 或 NVMe 的特定命令行工具:https://www.percona.com/blog/2017/02/09/using-nvme-command-line-tools-to-check-nvme-flash-health/

相关内容