在现代磁盘上使用“坏块”

Yor*_*ren 23 linux hard-drive bad-blocks

我想使用坏块来检查我的硬盘,并希望对其操作进行澄清。

有人可以解释与-b和一起使用的最佳选择-c吗?我已经在手册页中包含了它们的定义,但我不确定更大的尺寸是否对具有 64MB RAM 和 4k 扇区的现代磁盘有益。

-b block-size       Specify the size of blocks in bytes. The default is 1024. 
-c number of blocks the number of blocks which are tested at a time. The default is 64
Run Code Online (Sandbox Code Playgroud)

其次我想知道写模式测试是否比非破坏性读写模式更彻底?

最后,有多少 SMART 扇区重新分配是可以接受的/是否应该立即更换具有非零重新分配计数的驱动器?

Zac*_*c B 22

问题 1:

关于-b选项:这取决于您的磁盘。现代大型磁盘有 4KB 块,在这种情况下,您应该设置-b 4096. 您可以从操作系统获取块大小,通常也可以通过从标签上读取磁盘信息或通过谷歌搜索磁盘型号来获得。如果-b设置为大于您的块大小的值,badblocks结果的完整性可能会受到影响(即您可能会得到假阴性:当它们可能仍然存在时没有发现坏块)。如果-b设置为小于驱动器块大小的值,则badblocks运行速度可能会受到影响。我不确定,但设置可能还有其他问题-b小于你的块大小,因为它不验证整个块的完整性,如果它设置得太小,仍然可能得到假阴性。

-c选项对应于应该一次检查多少块。基本上是批量读/写。此选项不会影响结果的完整性,但会影响badblocks运行速度。badblocks将(可选)写入,然后读取,缓冲,检查,对指定的每 N 个块重复-c。如果-c设置得太低,这将使您的badblocks运行时间比平时长得多,因为排队和处理单独的 IO 请求会产生开销,并且磁盘也可能对每个请求施加额外的开销。如果-c设置得太高,badblocks可能会耗尽内存。如果发生这种情况,badblocks启动后会很快失败。此处的其他注意事项包括并行badblocks运行:如果您正在运行badblocks针对同一磁盘上的多个分区(坏主意),或针对同一 IO 通道上的多个磁盘,-c鉴于可用内存,您可能希望调整到合理的高值,badblocks以便并行运行不会争夺 IO 带宽并且可以以一种理智的方式并行化。

问题2:

相反的是,其他的答案表明,-w写模考是不是比非破坏性的读写测试或多或少可靠的,但它是快两倍,在被破坏的所有数据的成本。我将解释原因:

在非破坏性模式下,badblocks执行以下操作:

  1. 读取现有数据,校验和(必要时再次读取),并将其存储在内存中。
  2. 将预定模式(可使用-p选项覆盖,但通常不是必需的)写入块。
  3. 读回块,验证读取的数据与模式相同。
  4. 将原始数据写回磁盘。
    • 我不确定这一点,但它也可能重新读取并验证原始数据是否已成功写入并且仍然校验相同的内容。

在破坏性 ( -w) 模式下,badblocks仅执行上述第 2 步和第 3 步。这意味着验证数据完整性所需的读/写操作数量减少了一半。如果一个块是坏的,那么无论哪种模式,数据都会出错。当然,如果您关心存储在驱动器上的数据,则应该使用非破坏性模式,因为这-w会清除所有数据并将badblocks' 模式写入磁盘。

警告:如果一个块差,但还没有完全消失,一些读/写验证对可工作,有的可能没有。在这种情况下,非破坏性模式可以为您提供更可靠的块“糊状”指示,因为它会执行两组读/写验证(也许 - 请参阅步骤 4 下的项目符号)。即使非破坏性模式以这种方式更可靠,也只是巧合而已。检查不是完全坏但不能维持多个读/写操作的块的正确方法是badblocks使用该-p选项对同一数据运行多次。

问题 3:

如果 SMART 正在重新分配扇区,您可能应该考虑尽快更换驱动器。丢失几个扇区的驱动器并不总是会丢失它们,但原因通常是频繁使用的驱动器变得磁性糊状,或者磁头/电机故障导致读取/写入不准确或失败。当然,最终决定取决于您:根据驱动器上数据的价值以及您在其上运行的系统所需的可靠性,您可能会决定保持它。我有一些已知坏块的驱动器多年来一直在我的文件服务器中发出 SMART 警告,但它们按计划进行备份,这样我就可以处理完全故障而不会造成太大痛苦。

  • @RyanJ 1024 是“ext2”的最小块大小。badblocks 是 e2fsprogs 的一部分,最初用于填充 ext2 文件系统的坏块列表。您必须以与 FS 相同的块大小运行它,才能为 mkfs.ext2 获取正确格式的数字。TL;DR:你不应该关心的历史原因。 (6认同)
  • 知道为什么 `-b` 默认为 `1024` 吗?这对我来说似乎有点奇怪。为什么不是`512`? (4认同)

Tho*_*mas 1

我会将 -b 和 -c 保留为默认值,除非您有特定原因要更改它们。如果您的磁盘有 4k 块大小,您可以将 -b 设置为 4096。

我建议您首先使用非破坏性读写测试来运行坏块。如果发现任何坏扇区,则磁盘已损坏,应更换。如果它在非破坏性上没有发现任何坏块,但您仍然怀疑它有坏块,则运行破坏性读写测试。

最后,有多少 SMART 扇区重新分配是可接受的/是否应该立即更换重新分配计数非零的驱动器?

一旦更换扇区,我就会更换驱动器。

  • 您必须监控 SMART 日志。 (5认同)
  • _我会在更换扇区后立即更换驱动器。_您如何知道正常操作中块会损坏?您以某种方式收到信号吗? (2认同)