我想用 来测试我的硬盘badblocks
,但我不知道应该为块大小(-b
选项)和块数(-c
选项)使用哪些值。我随机尝试了一些值,似乎它们可以显着改变过程的速度。但是我怎样才能选择最佳值呢?
以下是同一问题的相关摘录,已在如何使用坏块时选择正确的参数?并在现代磁盘上使用badblocks
。
有一个badblocks 基准脚本可用,应该适合您的目的。
关于-b
选项:这取决于您的磁盘。现代大型磁盘有 4KB 块,在这种情况下,您应该设置-b 4096
. 您可以从操作系统(例如lsblk -o NAME,PHY-SeC /dev/sdX
)获取块大小,通常也可以通过从标签上读取磁盘信息或通过谷歌搜索磁盘型号来获得块大小。如果-b
设置为大于您的块大小的值,badblocks
结果的完整性可能会受到影响(即您可能会得到假阴性:当它们可能仍然存在时没有发现坏块)。如果-b
设置为小于驱动器块大小的值,则badblocks
运行速度可能会受到影响。我不确定,但设置可能还有其他问题-b
小于你的块大小,因为它不验证整个块的完整性,如果它设置得太小,仍然可能得到假阴性。
该-c
选项对应于应该一次检查多少块。基本上是批量读/写。此选项不会影响结果的完整性,但会影响badblocks
运行速度。badblocks
将(可选)写入,然后读取,缓冲,检查,对指定的每 N 个块重复-c
。如果-c
设置得太低,这将使您的badblocks
运行时间比平时长得多,因为排队和处理单独的 IO 请求会产生开销,并且磁盘也可能对每个请求施加额外的开销。如果-c
设置得太高,badblocks
可能会耗尽内存。如果发生这种情况,badblocks
启动后会很快失败。此处的其他注意事项包括并行badblocks
运行:如果您正在运行badblocks
针对同一磁盘上的多个分区(坏主意),或针对同一 IO 通道上的多个磁盘,-c
鉴于可用内存,您可能希望调整到合理的高值,badblocks
以便并行运行不会争夺 IO 带宽并且可以以一种理智的方式并行化。
我有这个答案作为社区维基进一步改进