Recuperando um sistema de arquivos ext4 com diário corrompido

8

Eu tenho um disco rígido que parece ter desenvolvido algum tipo de problema de hardware no diário. Isso impede que a unidade seja carregada. A execução de mount -r -t ext4 /dev/sda5 /mnt/root resulta no seguinte spew do kernel:

[ 1420.671055] ata1.00: exception Emask 0x0 SAct 0x1000000 SErr 0x0 action 0x0
[ 1420.673862] ata1.00: irq_stat 0x40000008
[ 1420.676600] ata1.00: failed command: READ FPDMA QUEUED
[ 1420.679326] ata1.00: cmd 60/40:c0:a8:9d:0a/00:00:08:00:00/40 tag 24 ncq 32768 in
[ 1420.679326]          res 41/40:40:e1:9d:0a/00:00:08:00:00/00 Emask 0x409 (media error) <F>
[ 1420.685014] ata1.00: status: { DRDY ERR }
[ 1420.687858] ata1.00: error: { UNC }
[ 1420.761064] ata1.00: configured for UDMA/133
[ 1420.763863] sd 0:0:0:0: >[sda] Unhandled sense code
[ 1420.766653] sd 0:0:0:0: >[sda]  
[ 1420.769364] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 1420.772104] sd 0:0:0:0: >[sda]  
[ 1420.774780] Sense Key : Medium Error [current] [descriptor]
[ 1420.777491] Descriptor sense data with sense descriptors (in hex):
[ 1420.780249]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
[ 1420.783175]         08 0a 9d e1 
[ 1420.785972] sd 0:0:0:0: >[sda]  
[ 1420.788730] Add. Sense: Unrecovered read error - auto reallocate failed
[ 1420.791545] sd 0:0:0:0: >[sda] CDB: 
[ 1420.794331] Read(10): 28 00 08 0a 9d a8 00 00 40 00
[ 1420.797242] end_request: I/O error, dev sda, sector 134913505
[ 1420.800072] ata1: EH complete
[ 1420.800077] JBD2: Failed to read block at offset 2748
[ 1420.812529] JBD2: recovery failed
[ 1420.815275] EXT4-fs (sda5): error loading journal

Eu mal entendo o que isso significa, mas com certeza parece um problema de hardware que impede que o diário seja carregado. Existe alguma maneira de contornar isso? A revista pode, por exemplo, ser transferida para uma compensação diferente, deixando o restante da unidade praticamente intacto? Não tenho intenção de continuar usando a unidade; Eu só quero montá-lo para que eu possa copiar alguns arquivos cruciais.

    
por JSBձոգչ 24.02.2013 / 16:00

3 respostas

7

Veja a saída de smartctl -a /dev/sda . Se não for um problema de cabo, o disco pode estar morrendo. Se você não tiver um backup recente, tente copiar o conteúdo do dispositivo de bloco (sem montagem) usando dd_rescue ou dd com as respectivas opções.

Depois disso, você pode tentar hdparm --write-sector (sempre engraçado essas opções "MUITO PERIGOSAS" ...).

Outra opção é criar um dispositivo DM que contorne os setores defeituosos. Isso não recupera seu conteúdo, é claro. Você deve converter o offset sda (134913505) em um offset sda5 (descubra o número do primeiro setor de sda5 e subtraia-o). Vamos supor que o deslocamento sda5 seja 12345. Você cria um dispositivo de bloco cujo setor 12345 não está mapeado para sda5, mas em algum outro lugar (por exemplo, dispositivo de loop). A definição do dispositivo (para criação de dmsetup) se parece com isso:

0 12345 linear /dev/sda5 0
12345 1 linear /dev/loop0 0
12346 99987653 /dev/sda5 12345

# format:
# logical_start_sector num_sectors linear destination_device start_sector

Você não terá tanta sorte que exista apenas um setor defeituoso. Você pode mapear quantos quiser (resultando no dispositivo DM fornecendo zeros para esses setores, mas sendo gravável), mas calcular os deslocamentos em loop0 pode se tornar divertido. Outra opção seria usar um dispositivo virtual do mesmo tamanho para remapear e usar o provisionamento thin ou um snapshot (com tamanho pequeno de bloco, 1 setor, por exemplo) de um dispositivo de destino zero.

Editar 1

O dispositivo de loop não deve apontar para um arquivo no mesmo disco (sda), é claro.

    
por 24.02.2013 / 16:44
4

Para montá-lo somente leitura, sem repetir o diário para que você possa acessar seus arquivos (provavelmente você perderá algumas alterações que ainda não foram confirmadas para os fs regulares):

mount -o ro,noload ...

    
por 16.11.2013 / 15:07
0

Você pode inicializar no modo de recuperação, no qual o FS será montado como somente leitura e copiará suas coisas.

    
por 24.02.2013 / 16:07