是否可以“重置”坏块?

Zak*_*har 5 ext4 reset

我的磁盘有问题并运行了badblocks.

所以现在当我运行时dumpe2fs(也来自e2fsprogs):

sudo dumpe2fs -b /dev/sdc1
Run Code Online (Sandbox Code Playgroud)

我得到一个坏坏块列表,例如:

dumpe2fs 1.41.11 (14-Mar-2010)
192
1592
2416
3112
3552
...
Run Code Online (Sandbox Code Playgroud)

但实际上,我意识到问题出在机架上,而不是出在磁盘上。我在 eSata 中使用机架并遇到大量读取错误。现在我切换到 USB,它没有那么快,但根本没有错误。

所以我的问题是:

如何重置存储在 inode #1(坏块 inode)中的坏块列表?(当然,没有重新格式化!......如果我没有解决方案,这是我尝试的最后一件事)

因为显然块根本不是“坏”,所以它们只是因为机架有故障而被报告。


编辑:一旦磁盘连接到 USB,我尝试运行另一个坏块,但没有成功:以前发现的坏块仍然存在。我跑了:

sudo badblocks -i /tmp/emptyList -s /dev/sdc1
Run Code Online (Sandbox Code Playgroud)

该文件/tmp/emptyList是空的,因此badblocks被提供了一个已知坏块的空列表。但显然,它不是坏块列表,而是坏块的附加列表,它将添加到 inode #1 中声明的现有列表中。 文档(人)对此不是很准确。

Zak*_*har 5

注意:这是一个有风险的操作,如果您没有完全掌握风险,请不要这样做!

我已经做了:

sudo debugfs -w /dev/sdc1
clri <1>
quit
Run Code Online (Sandbox Code Playgroud)

这会清除文件系统上的 inode 编号 1(包含坏块列表的那个)。

然后你必须e2fsck再次运行一个来重置各种东西,你就完成了!