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
resultados no seguinte kernel spew:
[ 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 o carregamento do diário. Existe alguma maneira de contornar isso? O diário, por exemplo, pode ser realocado para um deslocamento diferente enquanto deixa o resto da unidade intacta? Não tenho intenção de continuar usando a unidade; Eu só quero montá-lo para que eu possa copiar alguns arquivos cruciais.
hard-disk
data-recovery
ext4
JSB ձոգչ
fonte
fonte
fsck
o sistema de arquivos?Respostas:
Para montá-lo somente leitura, sem repetir o diário para que você possa acessar seus arquivos (você provavelmente perderá algumas alterações que ainda não foram confirmadas no fs normal):
mount -o ro,noload
...fonte
Dê uma olhada na saída de
smartctl -a /dev/sda
. Se não houver um problema de cabo, o disco pode estar morrendo. Se você não possui 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 ignora os setores defeituosos. Isso não recupera o conteúdo, é claro. Você deve converter o deslocamento sda (134913505) em um deslocamento sda5 (encontre 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 outro lugar (por exemplo, dispositivo de loop). A definição do dispositivo (para dmsetup create) fica assim:
Você não terá tanta sorte que existe apenas um setor defeituoso. Você pode mapear quantas quiser (resultando no dispositivo DM fornecendo zeros para esses setores, mas sendo graváveis), mas calcular as compensações no loop0 pode se tornar divertido. Outra opção seria usar um dispositivo virtual do mesmo tamanho para remapear e usar o thin provisioning ou uma captura instantânea (com tamanho de bloco pequeno, 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.
fonte
--write-sector
está longe de ser "perigoso". De fato, essa é realmente a opção ideal a ser usada sempre que determinados setores únicos corrompidos o impedirem de obter uma imagem contínua do setor bruto (dd
seria resgatada com o "erro de E / S do dispositivo"; alguns discos rígidos exigirão até o ciclo de energia da máquina ( !) para ser reconhecido pelo sistema operacional novamente). No entanto, você deve saber sobre scripts de shell se desejar usar--write-sector
para intervalos de setor .Você pode inicializar no modo de recuperação, no qual o FS será montado como somente leitura, e copiar suas coisas.
fonte