Ext4 süper bloklarını kurtarma


47

Son zamanlarda, harici sabit sürücü kasam başarısız oldu (sabit sürücünün kendisi başka bir kasada açıldı). Ancak bunun sonucunda, EXT4 dosya sistemi bozuk görünüyor.

Sürücünün tek bir bölümü var ve bir GPT bölüm tablosu kullanıyor (etiketli ears).

fdisk -l /dev/sdb gösterileri:

   Device Boot      Start         End      Blocks   Id  System
     /dev/sdb1          1  1953525167   976762583+  ee  GPT

testdisk bölüm bozulmamış olduğunu gösterir:

1 P MS Data                     2049 1953524952 1953522904 [ears]

... ancak bölüm bağlanamıyor:

$ 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 geçersiz bir süper blok bildirir:

$ 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

ve e2fsckbenzer bir hatayı rapor eder:

$ 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 Ayrıca:

$ 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(not, -n) süper blokları döndürür:

$ 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

... ancak her blok için "e2fsck -b [blok]" denenmesi başarısız olur:

$ sudo e2fsck -b 71663616 /dev/sdb1 
e2fsck 1.42 (29-Nov-2011)
e2fsck: Invalid argument while trying to open /dev/sdb1

Ancak anladığım kadarıyla, bunlar dosya bloklarının oluşturulduğu sırada süper blokların olduğu yerlerdi;


Ayrıca günlüğün şifresini çözebilecek biri varsa testdisk derinlemesine bir araştırma yaptım. Gibi birçok giriş bahseder:

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'i bu değerlerle çalıştırmak şunları verir:

e2fsck: Bad magic number in super-block while trying to open /dev/sdb1

Bunu tüm süper bloklarla denedim. testdisk.log

for i in $(grep e2fsck testdisk.log | uniq | cut -d " " -f 4); do
   sudo e2fsck -b $i -B 4096 /dev/sdb1
done

... hepsi aynı e2fsckhata mesajıyla birlikte.


Son denememde farklı dosya sistemi ofsetlerini denedim. Her ofset için i, i31744, 32768, 1048064, 1049088’den biri:

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

... ve koşarken testdisk /dev/loop0ilginç bir şey bulamadım.


Oldukça ayrıntılı oldum, ancak düşük seviyeli dosya kurtarma araçlarına ( / ) başvurmadan dosya sistemini kurtarmanın bir yolu var mı?foremostphotorec


Ne sudo fdisk -l /dev/sdbgösterir?
Karlson

4
Kendimi süper bloğun tüm kopyalarının silinmesine yetecek kadar şanssız olduğuna inandırmıyorum . Bu nedenle, fsck'in alternatif süper blokları bulamamasına neden olan dosya sistemindeki mantıksal blok ofsetlerini fırlattığı bölümleme tablosunda yanlış bir şey olmalı.
Kyle Jones

Bu diskte LVM yok mu? Daha önce olduğu gibi aynı tipte bir dış kasanız var mı (aynı blok boyutu, vb.)?
Jan Marek

1
Yazarı tavsiyelerine uyan @KyleJones testdiskyukarıda belirtildiği gibi, ben kullanarak farklı uzaklıklar çalıştı losetup( i * 512burada i62, 64, 2047'de veya 2049 biridir).
12'de

@JanMarek Hayır, ne yazık ki LVM yok. Ek, herhangi bir standart 3,5 "diski barındıran disktir, ancak başka bir tane veya ikinci 1TB diskim yok.
saat

Yanıtlar:


15

Ne yazık ki, dosya sistemini kurtaramadım ve Sleuth Kit'in en yararlı olduğu kanıtlanan düşük seviyeli veri kurtarma tekniklerine (Ubuntu Veri Kurtarma wiki girişinde güzel bir şekilde özetlenmiş) başvurmak zorunda kaldım .

Temizlik uğruna cevap olarak işaretleme.


8

Bu zaten eski olabilir, ancak birkaç öneri:

Orijinal blok boyutunun 4096 olduğundan kesinlikle eminseniz testdisk, diskteki süper blokları kullanarak yeniden yazabilirsiniz mke2fs -S. Adamdan:

   -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.

Doğru blok boyutundan emin değilseniz, mke2fs -n -b 2048 /dev/sdb1bu komutun verdiği tüm superblock yedeklemelerini kullanın ve deneyin, ondan sonra aynı ancak son blok 1024'ü kullanın.


0

Belirtildiği gibi, muhtemelen eski, ancak fdisk (AFAIK) GPT disklerini desteklemiyor. Parçalanmış veya başka bir araç kullanmanız gerekir.

Debian sıkıştırmasını çalıştıran (Çekirdek 2.6.32-5-486) ​​çalışan bir Sanal Makineyi test ettim ve bir sanal diski parçalı ...

# 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

Bu, fdisk sürüm 2.17.2'dir (Linux-ng-ng).

mkfs ve fsck 'gerçek' bölümünü tamamlamalıdır, ancak GPT bölüm tablosunun bozuk olmadığını kontrol etmek için GNU bölümlerini kullanmış olmalısınız.


0

Bilgisayarımı yeniden başlattıktan sonra da aynı montaj problemini yaşıyorum. Benim durumumda, parted komutunu çalıştırmak ve şöyle bir komut vermek yeterliydi:

set 1 lvm on

ve sonra istifa edip yeniden birleştirmeyi deneyin. Belki sana da yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.