如何在驱动器的指定部分启动坏块


3

在尝试dd200GB Maxtor IDE硬盘的最后几个块时,我遇到以下错误:

$ dd if=/dev/zero of=/dev/sdc bs=4M status=progress
203901894656 bytes (204 GB, 190 GiB) copied, 7283.07 s, 28.0 MB/s
dd: error writing '/dev/sdc': Permission denied
48621+0 records in
48620+0 records out
208223076351 bytes (208 GB, 194 GiB) copied, 8379.27 s, 24.8 MB/s 

这个错误甚至试图恢复后坚持ddseek=48620,其中48620是要跳过的块的数量。为了确定这个错误是否是坏扇区的结果,我想以badblocks同样的方式运行,从dd失败的地方开始。

这将转换为badblocks如此命令:

badblocks -svw -b 4000000 -c 500000 -p 1 -o /cygdrive/b/badblocks.txt /dev/sdc 199148543 48620

... -b 4000000等于我在初始dd驱动器时使用的4M块大小,而48620是first_block指定badblocks要从中开始的第一个块的选项。

但是,这会导致两个错误之一。要么非致命错误......

badblocks: Invalid argument during seekrs)

...在整个命令运行过程中出现,或者单个致命错误结束它:

Segmentation fault (core dumped)

即使设置为更合理的值,上述错误也会持续存在。-c2000


此外,当我放弃尝试badblocksdd失败的确切块上运行时,而是尝试简单地将first_block选项增加到足够高的数字:

badblocks -svw -b 4000000 -c 1000000 -p 1 -o /cygdrive/b/users/hashim/desktop/maxtorbadblocks.txt /dev/sdc 199148543 12345678 

...在不破坏命令的情况下出现以下错误的大量实例:

badblocks: Invalid argument during seekrs)  again get several get the same error.

如何badblocks从驱动器中的指定位置开始,从而节省运行所需的大量时间?


48620是4MB块。如果您更改大小,则需要重新计算金额。但是,当您写入208223076351字节时,硬盘中有多少字节?
matzeri

Answers:


3

半个答案,(现在),为什么失败了。

此行中的开关不正确:

badblocks -svw -b 4000000 -c 500000 -p 1 \
          -o /cygdrive/b/badblocks.txt /dev/sdc 199148543 48620

-b为块大小,(多少字节的块),其通常是的倍数512,通常这将是10242048,或4096。值4,000,000不是512的倍数,并且大于当前HDD将使用的任何值。

-c是多少块的时间,其乘以传递的值进行测试,以-b使多少字节会在同一时间内读-这样-b 4000000 -c 500000告诉计算机读取2万亿(二万亿美元)在同一时间字节。

更糟糕的是,该参数199148543告诉badblocks文件系统至少包含那么多块,并且由于块是由-b交换机定义的,因此badblocks估计文件系统至少包含796,594,172,000,000字节(或796TB,几乎为1 PB)。

由于整个磁盘为200GB,因此badblocks暂停并输出错误消息。


正如我在问题中提到的那样:基于我的研究badblocks,我的理解是-b指逻辑(文件系统)扇区而不是物理扇区,因此不是512字节,可能是设备的物理默认值,但bs=4M我指定的是当最初将驱动器归零时dd(我假设它是兆字节而不是兆字节,因此4,000,000而不是4,194,304)。我想,因为我已经习惯dd用该块大小写入驱动器...
Hashim

...我需要保持块大小相同,以使块badblocks -b的数量相同,因此到达我正在寻找的HDD上的块。以上是否有任何错误?
哈希姆

您对错误消息的原因的解释确实有意义,但该数字由两者显示,badblocks并且cat /proc/partitions作为设备的总块数 - 我在此处使用答案获得了它。
哈希姆

@Hashim,Re“ ......但那个数字...... ”:对不起,但目前还不清楚是哪个数字 - 请详细说明哪个数字。
agc

块的驱动器总大小:199148543.
Hashim
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.