当前位置:操作系统 > Unix/Linux >>

ReiserFS文件系统坏块的处理

这份文档描述了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
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,