这份文档描述了reiserfsprogs-3.6.12-pre1或更高版本的坏块处理
问题
1. 我的硬盘有坏块吗?
2. 如何得到我硬盘坏块的列表?
3. 我的硬盘有坏块,我该怎么做?
4. 我的系统reiserfs区有坏块,我该怎么做?
5. 我如何在有坏块的设备上创建一个reiserfs文件系统?
6. 我如何检测一个reiserfs文件系统是否有坏块?
7. 我如何才能在一个reiserfs区上调整坏块列表?
8. 我如何才能取得存在reiserfs上的坏块列表?
9. 我怎样在一个已加载的reiserfs文件系统上标识一个坏块?
回答
我的硬盘有坏块吗?
如何得到我硬盘坏块的列表?
查看你的硬盘是否有坏块,你可以运行
/sbin/badblocks [-b <reiserfs-block-size>] device
运行结果是设备 device的坏块列表,可以把他保存成文件。
如果你想让reiserfs的工具利用坏块列表,不要忘记为命令badblocks 指定reiserfs-block-size。默认的reiserfs块大小是4k,你也可以使用debugreiserfs device的输出来获得块的大小。
我的硬盘有坏块,我该怎么做?
你可以试着用dd 或dd_rescue 来写入坏块,驱动一般会将他们重新映射到新的块中,(现代的驱动会去写而不是读modern drives do this in response to write, but not reads)。需要注意的是使用带有坏块的硬盘通常会使硬盘坏的更快,这时你需要考虑购买一块新的硬盘来替代了。
我的系统reiserfs区有坏块,我该怎么做?
ReiserFS 只能处理处于数据区的坏块,不能处理处于系统区的--象super block,journal,bitmap。
如果驱动没有重新映射坏块(参看?#25105;的硬盘有坏块,我该怎么做??#65289;,那么你就不能在这个区使用reiserfs,请使用dd_rescue 来进行备份,然后对备份下来的执行reiserfsck 。
我如何在有坏块的设备上创建一个reiserfs文件系统?
如果你有一个设备坏块的列表文件(参看?#22914;何得到我硬盘坏块的列表??#65289;,那么你可以使用下面的命令:
mkreiserfs --badblocks file device
需要记住的使reiserfs默认的块大小使4k,要与badblocks 命令指定的块大小相同。
我如何检测一个reiserfs文件系统是否有坏块?
如果你只是要检测一下文件系统,那么你可以使用不带任何参数的reiserfsck。
如果你需要修正reiserfs区中的坏块,使用:
reiserfsck --badblocks file device
file 包含了设备上的所有坏块的列表。
如果你需要在一个带有坏块的设备上重建一个reiserfs区,你就需要指定所有的坏块:
reiserfsck --rebuild-tree --bad-badblocks file device
file 包含了设备上的所有坏块的列表。(参见?#22914;何得到我硬盘坏块的列表??#65289;
我如何才能在一个reiserfs区上调整坏块列表?
如果你需要调整坏块列表,可以使用:
reiserfstune --badblocks file device
或者
reiserfstune --add-badblocks file device
file 包含了被标记为坏块的列表。参数--badblocks 在将给定的列表作为坏块列表前清除reiserfs上的坏块列表(译者注:这句话怪怪的,我也搞不清楚,希望有人给指出),而-add-badblocks只是简单的将列表作为reiserfs区坏块列表。
如果reiserfs有一些损坏或者reiserfstune拒绝执行,使用reiserfsck 来代替。(参看:?#25105;如何检测一个reiserfs文件系统是否有坏块??#65289;
我如何才能取得存在reiserfs上的坏块列表?
要取得已经标记在reiserfs区上的坏块列表,运行
debugreiserfs -B file device
file 是存储坏块列表的文件名。
需要记住的是,如果reiserfs区受到了致命的损坏(Remember that if the reiserfs partition has fatal corruptions in the tree,译者注:这里in the tree不知道如何解释),坏块列表也许会变得不可用,(参看:?#22914;何得到我硬盘坏块的列表??#65289;
我怎样在一个已加载的reiserfs文件系统上标识一个坏块?
你需要给你的内核打下面的补丁:
linux-2.4.19-badblocks.diff
linux-2.4.22-badblocks.diff
这个补丁为ReiserFS 提供新的ioctl()命令来使我们可以在不卸载文件系统的情况下标记一个给定的块为used或free。
然后使用命令reiserfs-add-badblock:
reiserfs-add-badblock block used
如果你将坏块列表存储在文件file中,而且在这个块设备中reiserfs被加载在/path_to/reiserfs-mount-point 上,你可以使用:
while read
do
reiserfs-add-badblock /path_to/reiserfs-mount-point $REPLY used
done < file
Best viewed through browser supporting style-sheets properly.
Last modified: Sat Nov 1 19:24:19 2003 (maintained by Vitaly Fertman vitaly@namesys.com).
This document is available at http://namesys.com/bad-block-handling.html