최근에 내 외장 하드 드라이브 인클로저에 장애가 발생했습니다 (하드 드라이브 자체가 다른 인클로저에서 켜집니다). 그러나 결과적으로 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
전술 한 바와 같이, I를 사용하는 다른 시도 오프셋 losetup
( i * 512
여기서, i
62, 64, 2047 또는 2049이다).
sudo fdisk -l /dev/sdb
보여줍니까?