最近,我的外部硬盘驱动器机箱发生故障(硬盘驱动器本身在另一个机箱中加电)。但是,结果是其EXT4文件系统似乎已损坏。
该驱动器具有单个分区,并使用GPT分区表(带有标签ears
)。
fdisk -l /dev/sdb
显示:
Device Boot Start End Blocks Id System
/dev/sdb1 1 1953525167 976762583+ ee GPT
testdisk
显示该分区是完整的:
1 P MS Data 2049 1953524952 1953522904 [ears]
...但是分区无法挂载:
$ sudo mount /dev/sdb1 a
mount: you must specify the filesystem type
$ sudo mount -t ext4 /dev/sdb1 a
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
fsck
报告无效的超级块:
$ sudo fsck.ext4 /dev/sdb1
e2fsck 1.42 (29-Nov-2011)
fsck.ext4: Superblock invalid, trying backup blocks...
fsck.ext4: Bad magic number in super-block while trying to open /dev/sdb1
并e2fsck
报告类似的错误:
$ sudo e2fsck /dev/sdb1
Password:
e2fsck 1.42 (29-Nov-2011)
e2fsck: Superblock invalid, trying backup blocks...
e2fsck: Bad magic number in super-block while trying to open /dev/sdb1
dumpe2fs
也:
$ sudo dumpe2fs /dev/sdb1
dumpe2fs 1.42 (29-Nov-2011)
dumpe2fs: Bad magic number in super-block while trying to open /dev/sdb1
mke2fs -n
(请注意-n
)返回超级块:
$ sudo mke2fs -n /dev/sdb1
mke2fs 1.42 (29-Nov-2011)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
61054976 inodes, 244190363 blocks
12209518 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
7453 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848
...但是尝试为每个块尝试“ e2fsck -b [block]”失败:
$ sudo e2fsck -b 71663616 /dev/sdb1
e2fsck 1.42 (29-Nov-2011)
e2fsck: Invalid argument while trying to open /dev/sdb1
但是,据我了解,这些是创建文件系统时超级块所在的位置,这并不一定意味着它们仍然完好无损。
如果有人可以解密日志,我也进行了testdisk
深入的搜索。它提到了很多条目,例如:
recover_EXT2: s_block_group_nr=1/7452, s_mnt_count=6/20,
s_blocks_per_group=32768, s_inodes_per_group=8192
recover_EXT2: s_blocksize=4096
recover_EXT2: s_blocks_count 244190363
recover_EXT2: part_size 1953522904
recover_EXT2: "e2fsck -b 32768 -B 4096 device" may be needed
使用这些值运行e2fsck可得到:
e2fsck: Bad magic number in super-block while trying to open /dev/sdb1
我尝试了所有的超级块 testdisk.log
for i in $(grep e2fsck testdisk.log | uniq | cut -d " " -f 4); do
sudo e2fsck -b $i -B 4096 /dev/sdb1
done
...都有相同的e2fsck
错误消息。
在上一次尝试中,我尝试了不同的文件系统偏移量。对于每个偏移量i
,哪里i
是31744、32768、1048064、1049088中的一个:
$ sudo losetup -v -o $i /dev/loop0 /dev/sdb
...然后跑步testdisk /dev/loop0
,我没有发现任何有趣的事情。
我已经相当精疲力尽,但是有什么方法可以在不依靠低级文件恢复工具(foremost
/ photorec
)的情况下恢复文件系统?
testdisk
如上所述,根据的作者的建议,我尝试了使用losetup
(i * 512
其中i
62、64、2047或2049中的一个)的不同偏移量。
sudo fdisk -l /dev/sdb
表现?