A recuperação de dados RAID5 mdadm do Linux com uma unidade falhou, uma unidade falhando

1

De maneira improvável, eu tive duas unidades que falharam na mesma matriz Raid5 dentro de duas semanas uma da outra. O que significa que o array está morto. Sim sim hot spares não sendo preguiçoso sobre a substituição da unidade com falha que eu conheço. Mas vamos passar por isso.

Os dados estão um pouco atrasados e não são de importância crítica, então não estou particularmente em pânico com isso. Eu ainda gostaria de tentar salvar o que posso de qualquer maneira.

É um Software RAID5 de 4 dispositivos configurado com o mdadm. As unidades são as seguintes:

/dev/sde - device 0, healthy 
/dev/sdf - device 1, first failure, hard failure, totally dead
/dev/sdg - device 2, second failure, badblocks reports a few bad sectors
/dev/sdc - device 3, healthy

Eu acho que você pode ver onde estou indo com isso. Dado que o SDG tem apenas alguns setores defeituosos, eu gostaria de acreditar que a maioria dos dados é recuperável. Quando eu remontar o array com

mdadm --create /dev/md0 --assume-clean --level=5 --raid-devices=4 /dev/sde missing /dev/sdg /dev/sdc

Não recebo reclamações e o dispositivo é montado e iniciado bem no modo degradado. O problema ocorre quando tento montá-lo. Assim que eu corro

mount -t ext4 /dev/md0 /mnt/raid

Os blocos defeituosos são detectados nesse ponto, / dev / sdg falha fora do array, e com apenas / dev / sde e / dev / sdc ainda operacionais o ataque fica inativo e a montagem falha.

Existe alguma maneira de evitar que o mdadm falhe na unidade assim que detectar um bloqueio incorreto? Algum sinalizador de depuração que posso definir? Alguma coisa? Percebo que alguns dos dados estarão corrompidos e algumas das leituras falharão.

Eu estou supondo que o que estou perguntando é impossível, embora eu não veja a razão teórica que precisa ser. O dispositivo RAID poderia apenas dizer erro de E / S como a própria unidade faz. Mas eu acho que, se a única maneira de evitar o dd falhar nos blocos ruins de um disco rígido normal é usar um programa diferente dd_rescue, eu meio que acho que o mesmo acabará sendo verdadeiro com o mdadm, exceto que duvido que exista algo assim como "mdadm_rescue".

Ainda assim, vou perguntar de qualquer maneira, e por favor me esclareça se estou errado ou se você pode pensar em uma maneira de retirar alguns dos dados sem que a unidade caia instantaneamente do array.

    
por cecilkorik 05.02.2013 / 08:50

1 resposta

3

Off-line, tente fazer um despejo de disco da unidade que está morrendo em uma unidade saudável e, em seguida, adicione a unidade íntegra à matriz.

    
por 05.02.2013 / 09:05