如何解释坏块输出


43

Badblocks的手册页似乎没有提到输出中的三个数字特别意味着什么:

通过已完成,发现7个坏块(7/0/0错误)
通过完成,发现120个坏块(0/0/120错误)

是“读取/写入/比较时出错”。有人可以启发我吗?

Answers:


45

你的猜测是正确的。

源代码如下所示:

if (v_flag)
    fprintf(stderr,
            _("Pass completed, %u bad blocks found. (%d/%d/%d errors)\n"),
            bb_count, num_read_errors, num_write_errors, num_corruption_errors);

因此它的读/写/损坏错误。损坏意味着要与以前写入的数据进行比较:

if (t_flag) {
    /* test the comparison between all the
       blocks successfully read  */
    int i;
    for (i = 0; i < got; ++i)
        if (memcmp (blkbuf+i*block_size,
            blkbuf+blocks_at_once*block_size,
            block_size))
            bb_count += bb_output(currently_testing + i, CORRUPTION_ERROR);
}

完善。从源头上查找它应该是我应该发生的一件事,但是以某种方式却没有发生。谢谢。:)
Tomalak

当然,这也是在这种(0/0/120 errors)情况下没有内核错误消息的原因。
Tomalak 2013年

损坏错误的可能原因是badblocks在运行时向磁盘写入了其他内容,在这种情况下,这根本不是错误(用户错误除外)。
frostschutz

在这种情况下,这是我专门与badblocks一起使用的可疑磁盘。没有其他进程对其进行写入。有没有一种方法可以可视化带有坏扇区列表的输出文件,而无需手动计算它们的位置?
Tomalak

-8

错误。如果badblocks说了什么 “没有发现错误”,则表示:

  • 立即关闭机器
  • 获取替换磁盘
  • 向$ GOD_OF_BACKUPS祈祷重要数据是安全的
  • 做任何必要的设置新磁盘,并从旧磁盘复制数据

您可以选择保留磁盘以作娱乐或用作镇纸。

(现代磁盘具有一组额外的柱面,用于重新映射坏块,因为没有它们,就无法制造磁盘,并且用户在看到坏块列表时尖叫着血腥的地狱。如果确实出现了坏块,则意味着该空间由于旋转磁盘的常见故障模式给出的坏块数量呈指数增长,因此看到某些情况通常意味着磁盘还剩几个小时。


10
那根本不是问题。
Tomalak

1
切勿badblocks在具有重要数据的磁盘上运行。如果磁盘有错误,badblocks即使由于错误而无法写回原始数据,即使在非破坏性写入模式下,也可能造成额外的损坏。
frostschutz

@frostschutz,-n测试应该是只读的?
vonbrand

3
不,-n是非破坏性写入。因此,它可以写入,但是在测试后恢复原始数据。可能由于错误而失败。对于readonly badblocks,我相信您根本不使用任何选项。
frostschutz

不错的建议,但不适合这个问题。您可能已经做出了问答式的答案。
neverMind9
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.