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

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

最近、外付けハードドライブエンクロージャでエラーが発生しました(ハードドライブ自体が別のエンクロージャから起動しました)。しかし、結果としてEXT4ファイルシステムが破損しているようです。

ドライブには1つのパーティションがあり、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エラーメッセージがあります。


最後の試みでは、別のファイルシステムオフセットを試しました。 31744、32768、1048064、1049088のいずれかであるi各オフセットに対して、次の操作を行います。i

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

...そして走りながらtestdisk /dev/loop0興味深い点が見つかりませんでした。


かなり詳しく説明しましたが、もしありますか?それでも低レベルのファイル回復ツール(foremost/ photorec)を使用せずにファイルシステムを回復しますか?

答え1

残念ながら、ファイルシステムを回復できず、低レベルのデータ回復技術(Ubuntu)を使用する必要がありました。データ復旧ウィキアイテム)、探偵キット最も有用であることが証明されています。

清潔のために回答としてマークしました。

答え2

これは古いかもしれませんが、以下はいくつかの提案です。

記載されているように元のブロックサイズが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を使用してください。

答え3

前述のように古いかもしれませんが、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を使用する必要があります。

答え4

  • 杖の完全なイメージを作成します(私の場合はMicro SDカード)。

  • 新しいMicroSDカードに画像を復元します。

  • 走る

    fsck.ext4 -f /dev/sdXY
    

    sdXY新しいMicroSDカードの実際のデバイス名に置き換えます)

    エラーを修正する必要があるかどうかを尋ねる場合は、「はい」と答えてください。

  • 完了したらまた私に大きな助けになりました。

関連情報