Como posso recuperar um sistema de arquivos ext4 corrompido após um fsck?


11

Eu tenho um sistema de arquivos ext4 no luks sobre software raid5. O sistema de arquivos estava funcionando "muito bem" por vários anos, quando eu estava começando a ficar sem espaço. Eu tinha um volume de 9T em unidades de 6x2T. Comecei a atualizar para unidades de 3T fazendo o mdadm falhar, remover, adicionar, reconstruir, repetir o processo até que eu tivesse uma matriz maior. Depois, ampliei o contêiner luks e, quando desmontei e tentei redimensionar2fs, recebi a mensagem de que o sistema de arquivos estava sujo e precisava do e2fsck.

Sem pensar, eu acabei de fazer o e2fsck -y / dev / mapper / candybox e ele começou a vomitar todos os tipos de inode sendo removidos do tipo de mensagens (não me lembro exatamente) Eu matei o e2fsck e tentei remontar o sistema de arquivos para fazer backup dos dados que me preocupavam. Ao tentar montar neste momento, recebo:

# mount /dev/mapper/candybox /candybox
mount: wrong fs type, bad option, bad superblock on /dev/mapper/candybox,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

Olhando para os meus logs mais antigos, notei que o sistema de arquivos estava dando esse erro cada vez que a máquina inicializava:

kernel: [79137.275531] EXT4-fs (dm-2): warning: mounting fs with errors, running e2fsck is recommended

Que vergonha de mim por não prestar atenção :(


Tentei montar usando cada superbloco de backup (um após o outro) e cada tentativa deixou isso no meu log:

EXT4-fs (dm-2): ext4_check_descriptors: Checksum for group 0 failed (26534!=65440)
EXT4-fs (dm-2): ext4_check_descriptors: Checksum for group 1 failed (38021!=36729)
EXT4-fs (dm-2): ext4_check_descriptors: Checksum for group 2 failed (18336!=39845)
...
EXT4-fs (dm-2): ext4_check_descriptors: Checksum for group 11911 failed (28743!=44098)
BUG: soft lockup - CPU#0 stuck for 23s! [mount:2939]


Tentativas de reiniciar o e2fsck resultam em:

# e2fsck /dev/mapper/candybox 
e2fsck 1.41.14 (22-Dec-2010)
e2fsck: Group descriptors look bad... trying backup blocks...
candy: recovering journal
e2fsck: unable to set superblock flags on candy


Nesse ponto, decidi que seria melhor pedir mais algumas unidades e criar uma imagem usando o ddrescue Now, duas semanas depois, tenho uma imagem da partição luks em um arquivo .img.

# ls -lh
total 14T
-rw-r--r-- 1 root root 14T Oct 25 01:57 candybox.img
-rw-r--r-- 1 root root 271 Oct 20 14:32 candybox.logfile

Após inúmeras tentativas de usar tudo o que encontrei on-line, não consegui coagir o e2fsck a fazer nada na imagem, então usei mkfs.ext4 -L candy candybox.img -m 0 -Se consegui montar o sistema de arquivos sujo somente de leitura sem o diário e recuperar 960G de dados. Ele deu todos os tipos de erros de vários diretórios inexistentes e assim por diante, mas eu consegui algumas coisas. O que me deu alguma esperança!

Em seguida, executei o e2fsck novamente e ele teve que recriar o inode raiz e deu uma lista enorme de contagens de grupos de correção, aceitei a criação do inode raiz e disse não a todo o resto, deixando um sistema de arquivos completamente vazio. Repetiu novamente e disse sim a todas as perguntas com o mesmo resultado, mas agora com um sistema de arquivos "limpo", mas vazio.

extundelete me dá 0 recoverable inodes found.

E agora que estou preso de novo, não posso encontrar outros métodos além de mudar para algo como photorec, o que me dará uma bagunça absoluta com o tamanho do sistema de arquivos.

Estou disposto a copiar novamente a imagem da matriz original e começar de novo, se puder receber sugestões ou idéias sobre como recuperar mais meus arquivos.

Eu gostaria de poder fornecer logs mais detalhados dos comandos que foram executados, mas a saída é rolada por muito tempo, exceto pelo que é registrado no syslog e minha memória não é tão detalhada devido ao período em que ocorreu.

Qualquer ajuda é muito apreciada!

Atualização 27 de outubro

Recopiei totalmente a imagem para começar a testar novamente, e aqui está a saída até agora. O processo de cópia:

[root@gamma rescue]# nbd-client 172.16.10.204 2000 /dev/nbd0
Negotiation: ..size = 14307292MB
bs=1024, sz=15002283540480 bytes
[root@gamma rescue]# cryptsetup luksOpen /dev/nbd0 candybox
Enter passphrase for /dev/nbd0: 
[root@gamma mnt]# pvcreate /dev/md5
  Physical volume "/dev/md5" successfully created
[root@gamma mnt]# pvscan
  PV /dev/md5                      lvm2 [18.19 TiB]
  Total: 1 [18.19 TiB] / in use: 0 [0   ] / in no VG: 1 [18.19 TiB]
[root@gamma mnt]# vgcreate vg-rescue /dev/md5
  Volume group "vg-rescue" successfully created
[root@gamma mnt]# lvcreate --size 15T --name lv-rescue vg-rescue
  Logical volume "lv-rescue" created
[root@gamma mnt]# mkfs.xfs /dev/vg-rescue/lv-rescue 
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/vg-rescue/lv-rescue isize=256    agcount=33, agsize=125828992 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=4026531840, imaxpct=5
         =                       sunit=128    swidth=640 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=521728, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@gamma mnt]# mount /dev/vg-rescue/lv-rescue rescue/
[root@gamma rescue]# ddrescue /dev/mapper/candybox candybox.img candybox.ddlog


Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued:         0 B,  errsize:       0 B,  errors:       0
Current status
rescued:    13194 GB,  errsize:   1807 GB,  current rate:        0 B/s
   ipos:    13194 GB,   errors:       1,    average rate:   73528 kB/s
   opos:    13194 GB,     time from last successful read:      44 s
^Clitting failed blocks... 
Interrupted by user
## Network hung, had to try again here
[regan@gamma ~]$ sudo nbd-client -d /dev/nbd0
Disconnecting: que, disconnect, Error: Ioctl failed: Invalid argument

Exiting.
[regan@gamma ~]$ sudo nbd-client 172.16.10.204 2000 /dev/nbd0
Negotiation: ..size = 14307292MB
bs=1024, sz=15002283540480 bytes

[root@gamma rescue]# ddrescue -r 2 /dev/mapper/candybox candybox.img candybox.ddlog


Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued:    15002 GB,  errsize:   7426 kB,  errors:      60
Current status
rescued:    15002 GB,  errsize:       0 B,  current rate:    77529 kB/s
   ipos:    15002 GB,   errors:       0,    average rate:    69297 kB/s
   opos:    15002 GB,     time from last successful read:       0 s
Finished                       

[root@gamma rescue]# lvcreate -l 100%FREE -s -n rescue_snap /dev/vg-rescue/lv-rescue 
  Logical volume "rescue_snap" created
[root@gamma rescue]# cd ..
[root@gamma mnt]# mount -o remount,ro rescue/
[root@gamma mnt]# mkdir rescue_snap
[root@gamma mnt]# mount -o nouuid /dev/vg-rescue/rescue_snap rescue_snap
[root@gamma mnt]# cd rescue_snap/
[root@gamma rescue_snap]# ls
candybox.ddlog  candybox.img

O bagunçado:

[root@gamma rescue_snap]# mkfs.ext4 -L candy candybox.img -m 0 -S
mke2fs 1.41.10 (10-Feb-2009)
candybox.img is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=candy
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
915668992 inodes, 3662666368 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
111776 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, 512000000, 550731776, 644972544, 1934917632, 
    2560000000

Skipping journal creation in super-only mode
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@gamma rescue_snap]# mount -o loop candybox.img /mnt2
[root@gamma rescue_snap]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/md2              147G  138G  3.1G  98% /
tmpfs                  16G  5.7M   16G   1% /dev/shm
/dev/md0              494M  199M  276M  42% /boot
/dev/sdc1             1.8T  979G  763G  57% /mnt/macmirror
/dev/sdj1             1.8T  970G  771G  56% /mnt/usbrescue
/dev/mapper/vg--rescue-lv--rescue
                       15T   14T  1.4T  91% /mnt/rescue
/dev/mapper/vg--rescue-rescue_snap
                       15T   14T  1.4T  91% /mnt/rescue_snap
/mnt/rescue_snap/candybox.img
                       14T   15M   14T   1% /mnt2

## Even though it says only 15M is used, I was able to rsync 960G to /mnt/usbrescue

[root@gamma rescue_snap]# cd /mnt2/
[root@gamma mnt2]# ls -l
ls: cannot access Fedora-19-x86_64-DVD: Input/output error
ls: cannot access rsync_batch: Input/output error
ls: cannot access shell1: Input/output error
ls: cannot access New Folder (2): Input/output error
ls: cannot access shell2: Input/output error
ls: cannot access revolution: Input/output error
ls: cannot access mail: Input/output error
ls: cannot access testing: Input/output error
ls: cannot access export: Input/output error
ls: cannot access ben_backup_20130903: Input/output error
total 160488672
drwxr-xr-x     2 regan regan        4096 Sep  3 20:16 100MEDIA
drwxr-xr-x    19 regan regan        4096 Sep 26 05:18 android
d??????????    ? ?     ?               ?            ? ben_backup_20130903
-rw-rw-r--     1 regan regan       12126 Jan  4  2013 durations.txt
d??????????    ? ?     ?               ?            ? export
drwxrwxr-x    10 regan regan        4096 Dec 29  2012 family-pc_20121229
d??????????    ? ?     ?               ?            ? Fedora-19-x86_64-DVD
-rw-r--r--     1 regan regan 72116729363 Sep 30 04:39 gamma_backup_20130928.tgz
-rw-rw-r--     1 regan regan 55606528323 Jul 27  2011 gamma_tar_20110727.tbz2
-rw-rw-r--     1 regan regan        3839 Sep 27  2012 Good Quality2.plist
-rw-rw-r--     1 regan regan        4663 Oct  7  2012 Good Quality3.plist
-rw-rw-r--     1 regan regan        3852 Sep 26  2012 Good Quality.plist
drwxr-xr-x     7 regan regan        4096 Nov 13  2012 grok
d??????????    ? ?     ?               ?            ? HardDisks
-rwxr--r--     1 regan regan       54248 Mar 16  2013 IMAG0868.jpg
-rwxr--r--     1 regan regan       51156 Mar 16  2013 IMAG0869.jpg
-rwxr--r--     1 regan regan       85912 Mar 16  2013 IMAG0870.jpg
-rwxr--r--     1 regan regan       76875 Mar 16  2013 IMAG0872.jpg
-rwxr--r--     1 regan regan       68451 Mar 16  2013 IMAG0873.jpg
-rwxr--r--     1 regan regan       59587 Mar 16  2013 IMAG0874.jpg
-rwxr--r--     1 regan regan       81232 Mar 16  2013 IMAG0875.jpg
-rwxr--r--     1 regan regan       44211 Mar 16  2013 IMAG0876.jpg
-rwxr--r--     1 regan regan       41660 Mar 16  2013 IMAG0877.jpg
-rwxr--r--     1 regan regan       36778 Mar 16  2013 IMAG0878.jpg
-rwxr--r--     1 regan regan       76964 Mar 16  2013 IMAG0879.jpg
-rwxr--r--     1 regan regan       81876 Mar 16  2013 IMAG0880.jpg
-rwxr--r--     1 regan regan     1568002 Mar 16  2013 IMAG0953.jpg
-rwxr--r--     1 regan regan     1548566 Mar 16  2013 IMAG0954.jpg
-rwxr--r--     1 regan regan     1351743 Mar 16  2013 IMAG0955.jpg
-rwxr--r--     1 regan regan     1750128 Mar 16  2013 IMAG0956.jpg
-rwxr--r--     1 regan regan     1694378 Mar 16  2013 IMAG0957.jpg
-rwxr--r--     1 regan regan     1277128 Mar 16  2013 IMAG0958.jpg
-rwxr--r--     1 regan regan     1467452 Mar 16  2013 IMAG0965.jpg
-rwxr--r--     1 regan regan     1595903 Mar 16  2013 IMAG0966.jpg
-rwxr--r--     1 regan regan     1372444 Mar 16  2013 IMAG0967.jpg
-rwxr--r--     1 regan regan     1698010 Mar 16  2013 IMAG0968.jpg
-rwxr--r--     1 regan regan     1550641 Mar 16  2013 IMAG0969.jpg
-rwxr--r--     1 regan regan     1333768 Mar 16  2013 IMAG0970.jpg
-rwxr--r--     1 regan regan     1432347 Mar 16  2013 IMAG1010.jpg
-rwxr--r--     1 regan regan     1668159 Mar 16  2013 IMAG1013.jpg
-rwxr--r--     1 regan regan     1657058 Mar 16  2013 IMAG1014.jpg
-rwxr--r--     1 regan regan     1496547 Mar 16  2013 IMAG1016.jpg
-rwxr--r--     1 regan regan     1609156 Mar 16  2013 IMAG1017.jpg
-rwxr--r--     1 regan regan     1604832 Mar 16  2013 IMAG1019.jpg
-rwxr--r--     1 regan regan     2048916 Mar 16  2013 IMAG1073.jpg
-rwxr--r--     1 regan regan     2006024 Mar 16  2013 IMAG1074.jpg
-rwxr--r--     1 regan regan     1926686 Mar 16  2013 IMAG1075.jpg
-rw-r--r--     1 regan regan     1583090 Jul 14 21:15 IMAG1565.jpg
-rw-r--r--     1 regan regan     1435031 Sep 22 05:19 IMAG1762.jpg
-rw-r--r--     1 regan regan     1531602 Sep 22 05:19 IMAG1763.jpg
-rw-r--r--     1 regan regan     1450926 Sep 22 05:19 IMAG1764.jpg
-rw-r--r--     1 regan regan     1336103 Sep 23 21:31 IMAG1765.jpg
-rw-r--r--     1 regan regan     1235885 Sep 23 21:32 IMAG1766.jpg
-rw-r--r--     1 regan regan     1224376 Sep 23 21:32 IMAG1767.jpg
-rw-r--r--     1 regan regan     1235229 Sep 23 21:32 IMAG1768.jpg
drwxrwxr-x     2 regan regan        4096 Mar  9  2013 jakeanmal
-rw-rw-rw-     1 regan regan      115228 Oct 29  2009 jj_nas
drwx------.    2 root  root        16384 Nov  8  2012 lost+found
-rw-r--r--     1 regan regan  3123877728 Nov  6  2010 luridmirror_20090806.tar.xz
-rw-r--r--     1 regan regan  2877033943 Mar  1  2013 macabre_20130301.tgz
d??????????    ? ?     ?               ?            ? mail
-rw-r--r--     1 root  root         6771 Aug 10  2009 mail_mirror
-rw-------     1 regan regan 21913047552 Apr  4  2013 mallorys_hdd.vbox.img
d??????????    ? ?     ?               ?            ? MSDN
-rw-r--r--     1 regan regan        8572 May 10  2010 Music
d??????????    ? ?     ?               ?            ? New Folder (2)
drwxrwxrwx    24 regan regan        4096 Mar 22  2013 onyx
drwxr-xr-x   231 regan regan       24576 Sep 30 09:29 ptp
-rwxr--r--     1 regan regan      483328 Jan 26  2013 putty.exe
d??????????    ? ?     ?               ?            ? revolution
-rw-r--r--     1 root  root   6272757760 Oct 16  2012 root.tar
d??????????    ? ?     ?               ?            ? rsync_batch
drwxrwxr-x     2 regan regan       12288 Oct  6 04:09 saber
drwxrwxr-x     2 regan regan      188416 Sep 25 04:20 session_tmp
d??????????    ? ?     ?               ?            ? shell1
d??????????    ? ?     ?               ?            ? shell2
d??????????    ? ?     ?               ?            ? testing
drwxrwxr-x     3 regan regan        4096 Oct  7  2012 tofix
-rwxr--r--     1 regan regan    64991966 Jan  2  2013 VIDEO0041.mp4

[root@gamma mnt2]# cd ..
[root@gamma /]# umount /mnt2
[root@gamma /]# cd /mnt/rescue_snap/
[root@gamma rescue_snap]# e2fsck candybox.img 
e2fsck 1.41.10 (10-Feb-2009)
Backing up journal inode block information.

candy contains a file system with errors, check forced.
Resize inode not valid.  Recreate<y>? yes

Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Root inode not allocated.  Allocate<y>? yes

/lost+found not found.  Create<y>? yes

Pass 4: Checking reference counts
Pass 5: Checking group summary information
Block bitmap differences:  -(9252--9255) <Snip a few dozen MB of text> -(3662666237--3662666238) -3662666240 -(3662666242--3662666244) -(3662666247--3662666249) -3662666253 -(3662666255--3662666256) -3662666259 -3662666262 -3662666264 -(3662666268--3662666271) -3662666276 -3662666281 -3662666285 -3662666294 -(3662666296--3662666297) -3662666301 -3662666307 -3662666309 -3662666311 -3662666313 -3662666316 -(3662666318--3662666319) -3662666324 -(3662666326--3662666328) -(3662666331--3662666332) -3662666334 -(3662666341--3662666342) -3662666344 -(3662666346--3662666347) -3662666349 -(3662666351--3662666352) -3662666354 -3662666357 -3662666362 -(3662666366--3662666367)
Fix<y>? yes

Free blocks count wrong for group #0 (23517, counted=23516).
Fix<y>? 

Free blocks count wrong (3605188902, counted=3605188901).
Fix<y>? yes

Free inodes count wrong for group #0 (8191, counted=8190).
Fix<y>? yes

Directories count wrong for group #0 (1, counted=2).
Fix<y>? yes

Free inodes count wrong (915668991, counted=915668990).
Fix<y>? yes


candy: ***** FILE SYSTEM WAS MODIFIED *****
candy: 2/915668992 files (0.0% non-contiguous), 57477467/3662666368 blocks
[root@gamma rescue_snap]# mount -o loop candybox.img /mnt2
[root@gamma rescue_snap]# ls -l /mnt2
total 4
drwx------ 2 root root 4096 Oct 27 19:33 lost+found
[root@gamma rescue_snap]# 

Observe que agora tenho minha imagem de backup em um instantâneo, para que eu possa tentar repetidamente as teorias se alguém tiver algumas idéias ...


5
Regan, bem-vindo ao SF! Posso parabenizá-lo por uma pergunta bem escrita, pertinente e bem pesquisada? Infelizmente, eu não sou um extguru suficiente para lhe dar mais conselhos - você já fez tudo o que eu teria tentado. Espero muito que alguém com mais pistas do que eu possa lhe dar algumas dicas sobre para onde ir a partir daqui.
— MadHatter

O que aconteceu com as unidades 2T originais que você retirou da matriz? Você já os destruiu?
— Charlesbridge

Eu já os usei para outras coisas, pois os removi da matriz. Depois que ela foi reconstruída com sucesso, usei a unidade 2T em outra coisa. Atualmente eles estão sendo usados ​​como parte do meu / mnt / rescue raid0. Eu gostaria que eles estivessem intocados, pois eu poderia tê-los usado para se recuperar.
— Regan

2
Onde estão seus backups?
— Michael Hampton

Você mencionou LUKS. Isso também foi / foi criptografado no disco?
— ewwhite

Respostas:


3

Minha ferramenta preferida para recuperação de dados do sistema de arquivos é o UFS Explorer .

Não sei como a criptografia LUKS afetará isso, mas baixe uma avaliação do UFS Explorer e tente as práticas recomendadas normais. Execute-o na sua imagem e veja se as coisas parecem mais recuperáveis. A ferramenta fornecerá uma boa visão da estrutura de diretórios e permitirá a pesquisa de dados.

Veja também: Como recuperar o sistema de arquivos XFS com "falha na leitura do superbloco"


Lembre-se de que o volume que estou tentando recuperar é ext4. Usei o XFS no meu volume de recuperação porque meu volume era originalmente de 18T e 32bit ext4 não queria executar (limite de 16T com tamanho de bloco padrão). Vou dar UFS explorer uma tentativa embora e ver o que acontece
— Regan

1
O UFS Explorer funciona bem para sistemas ext2, ext3 e ext4.
— ewwhite

O UFS Explorer quer um eta de 41 dias para verificar o volume ... Vou tentar a versão debian amanhã, talvez ela resulte mais rápido que o winblows.
— Regan

@Regan Funcionou para você?
— ewwhite

Não foi, não foi possível ver o sistema de arquivos ext4 depois que eu instalei uma versão linux e deixei varrer profundamente todo o volume. Enviei um email para a lista de discussão ext4 dev e eles me enviaram idéias tentando diminuir a causa. Se eu receber uma resposta que funcione com eles, eu a publicarei. - Acho que a UFS pode trabalhar para recuperar um problema diferente que um amigo meu, feliz por você ter me indicado, é uma ferramenta muito legal!
— Regan
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.