我想用 测试我的硬盘badblocks
,但我不知道应该使用哪些值作为块大小(-b
选项)和块数量(-c
选项)。我随机尝试了一些值,它们似乎可以显着改变过程的速度。但我怎样才能选择最佳值呢?
答案1
以下是同一问题的相关摘录,该问题已在使用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
运行(坏主意),或者在同一 IO 通道上针对多个磁盘运行,您可能需要将可用内存调整到合理的高值。这样并行运行就不会争夺 IO 带宽,并且可以以合理的方式并行化。badblocks
-c
badblocks
我有这个答案作为社区维基以供进一步改进