如何检查整个硬盘是否有错误和坏扇区

Gac*_*cek 4 badblocks hard-disk

我可能在这里误解了一些概念,但据我所知,每个磁盘都有一个分区表和实际分区。

我想测试硬盘驱动器是否存在坏扇区和错误,但我发现的用于执行此操作的工具适用于分区——而不是磁盘。badblocks需要一个分区/dev/sda1/dev/sda。相同的故事e2fsck

据我了解,这些工具只测试分配给分区的空间,而不是整个磁盘。有没有办法测试整个磁盘?

Ste*_*itt 10

有没有办法测试整个磁盘?

是的,使用badblocks

badblocks /dev/sda
Run Code Online (Sandbox Code Playgroud)

手册页提到了分区,因为badblocks可以告诉mkfs.ext2它找到的坏块,并且只有在检查分区时才有效。但badblocks它本身在完整磁盘上运行良好。

然而,badblocks这确实是一个过去时代的遗物,当时硬盘驱动器没有自己管理它们的坏块。如今,驱动器本身跟踪错误,并且能够在情况允许的情况下重新映射坏扇区(通常,当坏扇区被重写时)。您最好运行 SMART 测试并检查结果:

smartctl -t long /dev/sda
smartctl -t offline /dev/sda
smartctl -x /dev/sda
Run Code Online (Sandbox Code Playgroud)

(确保每个测试在运行下一个之前完成)。

  • @Gacek 在`badblocks` 联机帮助页中的任何地方都没有提到它只适用于分区,而不适用于完整磁盘。话虽如此,我不会依赖“坏块”:我只是在旧的损坏磁盘上以只读和读/写模式运行它,但无法找到任何坏块;但是在其上运行实际的操作系统几乎立即失败了——这可能与现实生活中的访问模式有关,“坏块”没有尝试模仿。 (3认同)