ext4スーパーブロックの回復


47

最近、外付けハードドライブエンクロージャに障害が発生しました(ハードドライブ自体が別のエンクロージャで起動します)。ただし、その結果、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 [ブロック]」を試みると失敗します。

$ 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場所、i31744の1、32768、1048064、1049088です。

$ sudo losetup -v -o $i /dev/loop0 /dev/sdb

...そして実行中testdisk /dev/loop0、私は何も面白いものを見つけませんでした。


私はかなり徹底してきましたが、低レベルのファイル回復ツール(/ )に頼らずにファイルシステムを回復する方法はありますか?foremostphotorec


何がsudo fdisk -l /dev/sdb表示されますか?
カールソン

4
スーパーブロックのすべてのコピーを消去してしまうほど不運だったとは信じられません。そのため、パーティションテーブルに何か問題があるはずです。これにより、ファイルシステム内の論理ブロックオフセットが破棄され、fsckは代替スーパーブロックを見つけることができなくなります。
カイルジョーンズ

このディスクLVMを持っていませんか?以前と同じタイプ(同じブロックサイズなど)の外部エンクロージャーがありますか?
ジャン・マレック

1
@KyleJonesの著者からのアドバイスに従ってtestdisk、上記のように、losetupi * 512が62、64、2047 iまたは2049のいずれか)を使用して異なるオフセットを試しました。
tlvince

@JanMarekいいえ、残念ながらLVMはありません。エンクロージャは、任意の標準3.5"ディスクを収容するが、私は別のを持っていない1、及び第2 1TBのディスクです。
tlvince

回答:


15

残念ながら、ファイルシステムを回復することができず、Sleuth Kitが最も有用であることが証明された低レベルのデータ回復手法(UbuntuのData Recovery wikiエントリにまとめられています)に頼らなければなりませんでした。

清潔さのために回答済みとしてマークする。


8

これはすでに時代遅れかもしれませんが、いくつかの提案:

で主張されているように、元のブロックサイズが4096であることを確信している場合testdisk、を使用してディスク上のスーパーブロックを書き換えることができますmke2fs -S。男から:

   -S    Write  superblock and group descriptors only.  This is useful if all
          of the superblock and backup superblocks are corrupted, and a  last-
          ditch  recovery method is desired.  It causes mke2fs to reinitialize
          the superblock and group descriptors, while not touching  the  inode
          table and the block and inode bitmaps.  The e2fsck program should be
          run immediately after this option is used, and there is no guarantee
          that  any  data  will be salvageable.  It is critical to specify the
          correct filesystem blocksize when using this option, or there is  no
          chance of recovery.

正しいブロックサイズがわからない場合mke2fs -n -b 2048 /dev/sdb1は、このコマンドが提供するすべてのスーパーブロックバックアップを使用して試してみてください。その後も同じですが、最後のブロックサイズ1024を使用します。


0

前述のように、おそらく時代遅れですが、fdisk(AFAIK)はGPTディスクをサポートしていません。partedまたは他のツールを使用する必要があります。

Debian squeeze(カーネル2.6.32-5-486)を実行している仮想マシンをテストし、partedを使用してGPTとして仮想ディスクをフォーマットしました...

# parted /dev/sde
(parted) mklabel GPT
(parted) mkpart part1 0 10G
(parted) quit
# fdisk -l /dev/sde
.
WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.
.
Disk /dev/sde: 85.9 GB, 85899345920 bytes
 255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
. 
   Device Boot      Start         End      Blocks   Id  System
/dev/sde1               1       10444    83886079+  ee  GPT

これはfdiskバージョン2.17.2(util-linux-ng)です。

mkfsとfsckは「実際の」パーティションを選択しますが、GPTパーティションテーブルが破損していないことを確認するには、GNU partedを使用する必要があります。


0

コンピューターを再起動した後、同じマウントの問題が発生しました。私の場合、partedを実行して次のようなコマンドを発行するだけで十分です。

set 1 lvm on

その後、終了して再マウントを試みます。たぶんそれもあなたを助けるでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.