我找不到任何关于 badblocks 实际上认为是坏块的信息。我已经阅读了手册页并查看了这里的一堆问题,但我找不到具体细节。另外,坏块有多好?我应该相信它的结果吗?我的公司过去使用 Hirens Boot CD 上的 Victoria 来测试硬盘,但这在较新的计算机上并不总是一个好的选择。
答案1
badblocks
读取、写入和比较(不一定按此顺序)。
随后badblocks -v
将输出如下消息:
Pass completed, n bad blocks found (x/y/z errors)
这意味着它发现了n
坏块,包括x
读取错误、y
写入错误和z
损坏错误。它考虑读取和写入时发生的读取错误和写入错误(如内核报告的)。这些错误也可能是由于电缆/控制器/驱动程序问题引起的。
损坏错误是指对数据进行比较并发现数据与预期不同(即读取的数据偏离先前已知/写入的数据)。特别是badblocks
可能会写入各种数据模式(由一个或多个-t pattern
选项指定)并检查每种模式是否正确写入。
badblocks
如果您有另一个程序在运行时进行自己的写入操作,则可能会出现损坏错误的误报。如果另一个程序写入,则磁盘运行正常,但badblocks
不会知道这一点,它只会看到它认为错误的数据。
这也是为什么您永远不应该badblocks
在正在使用的驱动器上运行,在已经具有可以在您不知情的情况下自动安装的文件系统的驱动器上运行,或者在您已经怀疑已损坏但仍希望恢复数据的驱动器上运行。
在数据恢复方面,您应该始终使用ddrescue
而不是badblocks
.ddrescue
执行与(读取模式)非常相似的操作badblocks
,它读取整个驱动器并记录它无法读取的扇区;但同时它会生成一个有用的副本,而badblocks
只是完全丢弃数据。
值得信赖吗?
badblocks
是一个像任何其他工具一样的工具,它的作用完全按照手册页中的说明进行:搜索设备中的坏块。无论您想要做什么,它可能是也可能不是正确的工具。
如果落入坏人之手,可能会导致数据损坏。所谓的non-destructive
模式是一个虚假的朋友,根本不意味着您的数据安全。
badblocks
(写入模式)主要用于在将数据信任给新的空驱动器之前对其进行处理。
对于只读测试,通常最好使用 SMART 自测试(smartctl -t long
或smartctl -t select
)。badblocks
比其他 I/O更安全且友好。