Tag Archives: SuperBlock

再说 Linux 下恢复 EXT3 Superblock

翻出以前写的这则: 恢复 EXT3 Superblock 的正确方法 , 补充几点内容。

1) 获取超级块位置

前文说过超级块的位置,对于一个未知的 Ext3 文件系统,也可以用 fsck 模拟对设备的格式化,输出的内容中会列出 Superblock 的位置。命令开关是 “-N”.
Testdisk是一款超强的开源文件系统恢复工具,通过它也很容易检查到超级块的信息以及如何恢复,很关键的一点是,这个工具能检查到”可用”的超级块信息

有关分区表信息

有的时候,也有可能是分区表信息损坏。fdisk -l /dev/hdx 会提示该设备上没有任何分区信息。gpart 这个小工具恢复分区表比较有效。当然,前面介绍的 Testdisk 也能做到这一点,如果该设备上只有一个文件系统,那么直接 fdisk 处理一下也是可行的。

恢复 Ext 文件系统上删除的文件

Linux / Unix 没有 Windows 回收站这个概念,rm -rf 有的时候会造成一定的灾难。个别的时候,e2undel 能派上用场。

EOF

恢复 EXT3 Superblock 的正确方法

前几天遇到一个 Linux Ext3 文件系统超级块(Superblock)错误问题.

.... bad superblock on /dev/hda4

一个同事做的恢复, 结果把数据都抹掉了. 后来想想, 当时的直接 fsck 的恢复方法不对. 正确的方法应该是这样的:
1 获取错误的出错磁盘(或者设备)块的大小.
有很多种方法可以得到. 比如,

# tune2fs -l /dev/hda4

其实大多数情况下是 1 K.
2 对当前的出错磁盘备份.
恢复超级块(Superblock)的过程其实也是一个有风险的过程.能做备份就做好备份. 如果有其他空闲设备, 用 dd 命令把该设备上的内容备份起来.
3 一般来说, 超级块错基本上也就是主超级块错, 在 Ext2/Ext3 文件系统创建的时候, 会同时在屏幕上提示我们在已经在几个地方备份了超级块.那么怎么发现这些超级块在什么地方呢? 我们看看帮助信息:

-b superblock
Instead of using the normal superblock, use an alternative
superblock specified by superblock. This option is normally
used when the primary superblock has been corrupted. The loca-
tion of the backup superblock is dependent on the filesystem’s
blocksize. For filesystems with 1k blocksizes, a backup
superblock can be found at block 8193; for filesystems with 2k
blocksizes, at block 16384; and for 4k blocksizes, at block
32768.
Additional backup superblocks can be determined by using the
mke2fs program using the -n option to print out where the
superblocks were created. The -b option to mke2fs, which spec-
ifies blocksize of the filesystem must be specified in order for
the superblock locations that are printed out to be accurate.
If an alternative superblock is specified and the filesystem is
not opened read-only, e2fsck will make sure that the primary
superblock is updated appropriately upon completion of the
filesystem check.

4 开始恢复.如果文件系统块大小为1K, 则我们可以用如下命令恢复:

# /sbin/fsck.ext3 -b 8193 /dev/hda4

如果这个备用块(8193)也有问题,那么 可以尝试 24577(8192*3+1) ,或者是 40961 (8192*5+1).

继续阅读