如何使用 -t test_pattern 选项将模式写入设备以将其与坏块一起使用

如何使用 -t test_pattern 选项将模式写入设备以将其与坏块一起使用

badblocks我最近买了一块4TB的硬盘,想在使用之前对其进行读写测试。由于badblocks使用-w选项运行 4TB 需要很长时间,因此我想首先在磁盘上写入一个模式,然后使用该-t选项通过 读取该模式badblocks,在几小时而不是几天内完成它。

问题是我无法理解该-t选项是如何工作的,并且在网上搜索使用with选项badblocks的示例时没有搜索结果。从手册页来看,测试模式是 0 到 ULONG_MAX-1 之间的数值(我疯狂猜测 ULONG_MAX 是),但我不确定如何提供模式(十进制?十六进制?二进制?ASCII 字符串长度 < ?)。图案大小与块大小有关吗?badblocks-t2^322^(32/8)

问题的另一部分是编写一个脚本来用该模式填充硬盘。我可以编写一个 Ruby 脚本来做到这一点,但是通过管道传输一个单行 bash 命令pv就更好了!

答案1

badblocks首先编写模式应该不会比以其他方式编写模式慢。特别是如果您使用-b block-size-c blocks-at-once选项,这样它就不会进行小的读/写操作。

此示例以 1MiB 块的“随机”模式覆盖磁盘:

badblocks -v -w -t random -b 4096 -c 256 /dev/thedisk

如果速度有问题,应该有其他原因......

答案2

我想,使用一种工具编写模式并使用它读取它badblocks不会比使用单一模式运行坏块快得多。

该模式需要以十六进制指定,至少我是这么理解的:
badblocks -t 0x55 -w [...]

来源:https://github.com/autotest/ctcs/blob/master/runin/ Destructiveblocktstrnd

答案3

因此,经过更多研究,我想出了一种利用-t坏块选项的方法(但你应该更喜欢frostschutz 的回答(我在问这个问题时不知何故错过了注意到这个-c选项))。

写入42整个硬盘。

yes 4 | tr '\n' 2 | pv -pterb -s 4000G > /dev/sdx

验证通过badblocks

badblocks -vs -t 0x3432 /dev/sdx

相关内容