使用dd检测坏道

som*_*ega 2 dd badblocks

在我出售旧硬盘之前,我完全读取和写入磁盘以验证它没有坏扇区。

我总是这样写:

dd if=/dev/zero of=/dev/sdb bs=100M status=progress
Run Code Online (Sandbox Code Playgroud)

但是我的电脑有 32GB 内存,当 dd 退出时,很多数据可能在缓存中。

有没有办法查看操作系统何时无法将缓存写入磁盘(在 dd 终止后)?

dd 在退出之前刷新缓存的正确选项是什么?同步,fsync 还是 fdatasync?

请不要建议磁盘检查工具。dd 对我来说已经足够了。

Her*_*ann 7

虽然您特别要求不推荐磁盘检查工具,但我会这样做并在此推荐:磁盘本身。您可以要求驱动器执行彻底的内部自检,消除所有可能的缓存问题来源。可以通过gsmartcontrol以下方式方便地访问自检:
gsmartcontrol 自检选项卡

如果你真的不想要这个,你仍然应该考虑使用像F3这样的工具。它不仅会检查数据是否可以写入,还会检查写入的数据是否可以读取(在我看来,这是存储介质更重要的功能)。

使用 dd 的conv=fdatasyncdd 在写入最后一个块之前不会终止。