我有一个 1TB 的驱动器,我想在上面运行坏块,但据我所知,这大约需要 3 天,我想分块运行它(比如每晚通宵),这样它所在的计算机就可以使用了白天。这样的事情可能吗?
Rob*_*nes 13
我在亚特兰大 Linux 爱好者通用邮件列表上找到了这个问题的很好的答案:
经过反复思考和阅读手册页大约 10 次后,我终于明白了这一点。我想我会分享它以防其他人需要信息。谷歌搜索没有多大帮助,因为这些列表通常只是引用手册页。当手册页说 last-block first-block 时,它不希望您输入这些 WORDS,而是希望您输入一个 NUMBER。它提到两者都是可选的,但如果我想指定第一个块,我无法弄清楚如何省略最后一个块。
假设您最初在块 33000001 停止测试。我将在少一个块处重新开始测试,所以 33000000。
首先,您必须确定分区上的最后一个块号是什么。我找到了两种方法来做到这一点。
您可以在
badblocks没有块号的情况下开始。它会告诉你它正在处理的块范围。前任:
sudo badblocks -sv /dev/sda3它说的是:
Searching for badblocks in read only nondestructive mode from block to 66828373记下此结束块编号。使用CTRL-C终止测试, 然后输入带有所需块编号的命令。
您可以使用
fdisk(或者我认为也可以sfdisk)命令来列出分区信息。信息列之一是块数。找到您感兴趣的分区中的块数并减去 1,因为这些块从 0 开始编号。
sudo fdisk -l /dev/sda(该选项是小写的 L。在这种情况下,您不指定分区号,只指定硬盘驱动器名称。)它说的是:
/dev/sda2 ... /dev/sda3 ... 66828374 /dev/sda4 ...找到您感兴趣的分区并读取块数并减去 1 以找到最后一个块号。
现在,您可以
badblocks按如下方式输入命令。假设您要在块 33000000 的分区中间开始测试。此示例是针对badblocks文本文件列表的非破坏性读写模式。如果从 live cd 启动,则在重新启动时将丢失此文本文件。
sudo badblocks -nsv -o ~/Desktop/badblocks.txt /dev/sda3 66828373 33000000这将测试从块 33000000 到分区末尾。如果您将 66828374 指定为最后一个块,如 中所述
fdisk,它将将该块编号报告为坏块,但实际上,该块编号不存在。我希望其他人可能会觉得这很有用,因为它确实让我困惑了一段时间。
真挚地,
罗恩
有一种方法可以指定badblocks应该从哪个块开始和最后一个块,(参见man badblocks):
badblocks [ -svwnfBX ] [ -b block-size ] [ -c blocks_at_once ] [ -emax_bad_blocks ] [ -d read_delay_factor ] [ -i input_file ] [ -ooutput_file ] [ -p num_passes ] [ -t test_pattern ] device [last-block ] [ first-block ]
小智 5
为了明确起见,假设您已中断badblocks,并且输出如下所示:
root@black:/media/bigdisk# badblocks -sv /dev/sdb1
Checking blocks 0 to 1953512447
Checking for bad blocks (read-only test): ^X^C56% done, 39:44 elapsed. (0/0/0 errors)
Interrupted at block 284489984
Run Code Online (Sandbox Code Playgroud)
你可以像这样继续:
badblocks -sv /dev/sdb1 1953512447 284489983
Run Code Online (Sandbox Code Playgroud)
请注意,我中断命令的块是最后一个,并且我已将其减一(因为我不确定在该块处被中断是否意味着它已被检查)。据我所知,没有办法只指定最后一个块;必须说明最后一个块,我已经从初始输出中复制了它。
| 归档时间: |
|
| 查看次数: |
8192 次 |
| 最近记录: |