segunda-feira, 2 de novembro de 2015

Resolvendo Superblocks e recuperando acesso aos dados de partições ext4 no Linux


É comum algumas vezes no boot do sistema alguns erros forem apresentados, e na investifação você acabar se deparando com vários bad superblocks.
Neste artigo iremos abordar um problema recorrente de perda de trilhas e problemas de superblock em HDs e partições EXT4 no Linux. Este problema pode acarretar em falhas na montagem das partições e dispositivos e dificultar o acesso aos dados das mesmas. Para recuperar essas falhas nos blocos e restaurar o acesso aos arquivos, devemos antes fazer alguns procedimentos.


Vamos listar todos os dispositivos montados em nosso sistema e identificar a partição corrompida que queremos acessar.

 # fdisk -l  
 root@fidelis:/home/matheus# fdisk -l  
   
 Disk /dev/sda: 698,7 GiB, 750156374016 bytes, 1465149168 sectors  
 Units: sectors of 1 * 512 = 512 bytes  
 Sector size (logical/physical): 512 bytes / 4096 bytes  
 I/O size (minimum/optimal): 4096 bytes / 4096 bytes  
 Disklabel type: gpt  
 Disk identifier: 97BFC9A6-9CD0-4EB8-9526-7B6EAA7B2E61  
   
 Device     Start    End  Sectors  Size Type  
 /dev/sda1    2048  1050623  1048576  512M EFI System  
 /dev/sda2   1050624 1456998399 1455947776 694,3G Linux filesystem  
 /dev/sda3 1456998400 1465147391  8148992  3,9G Linux swap  
   
 Disk /dev/sdb: 7,5 GiB, 8054112256 bytes, 15730688 sectors  
 Units: sectors of 1 * 512 = 512 bytes  
 Sector size (logical/physical): 512 bytes / 512 bytes  
 I/O size (minimum/optimal): 512 bytes / 512 bytes  
 root@fidelis:/home/matheus#   
   

No caso, o teste será feito na partição unica do meu pendrive, identificado pelo sistema como /dev/sdb/

 # umount /dev/sdb

Vamos realizar uma verificação de filesystem para tentar limpar os erros de superblocks e tentar acessar a  partição:

 # sudo fsck.ext4 -v /dev/sdb

o fsck, dependendo do estado do seu disco, irá tentar recuprar os superblocks danificados, caso não consiga, vamos ter que optar pelos backups dos blocos e restaurá-los manualmente. Vamos verificar os backups dos blocos da nossa partição.

 # sudo mke2fs -n /dev/sdb  
 root@fidelis:/home/matheus# sudo mke2fs -n /dev/sdb  
 mke2fs 1.42.12 (29-Aug-2014)  
 /dev/sdb contains a ext4 file system  
      last mounted on /media/tarsila/b72ba6bf-6020-4a36-aba7-d89c6c4f51f2 on Mon Nov 2 12:11:43 2015  
 Proceed anyway? (y,n) y  
 Creating filesystem with 1966080 4k blocks and 492480 inodes  
 Filesystem UUID: d73dd08c-0f1b-41bf-bdb0-87b4a1a644e4  
 Superblock backups stored on blocks:   
      32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632  
   


Os blocos destacados em negrito são os blocos backupeados da partição. Agora vamos tentar restaurá-los manualmente dentro das tabelas do filesystem

Agora vamos tentar restaurá-los um a um

 # sudo e2fsck -b <numero do superblock> /dev/sdb  

Vamos criar um ponto de montagem temporário para montarmos a partição corrompida e tentar acessar seus dados

 # mkdir /mnt/temp
 # sudo mount /dev/sdb /mnt/temp  

Agora repita esse processo até que consiga restaurar os blocos um a um, testando todos os blocos de backup.

Para acompanhar o processo de montagem e erros, você pode visualizar os logs de hardware com o Dmesg do sistema

 # dmesg  


 # tail -f /var/log/syslog  


SOBRE O AUTOR

Matheus Fidelis

http://msfidelis.github.io/

Power Ranger, Piloto de Helicópteros e Astronauta da NASA. Desenvolvedor Web PHP com foco em Backend e POO, Linux SysAdmin DevOps e Entusiasta Python. Criou esse site pra contribuir com a comunidade com coisas que aprende dentro de um setor maluco de TI :)

Postar um comentário

 
Nanoshots | Open Source Security, Linux e Tutoriais © 2015 - Designed by Templateism.com