Meu sistema de software RAID5 (mdadm) consiste em cinco discos. Recentemente, recebo erros de E/S ao ler determinados arquivos. A maioria dos outros arquivos ainda pode ser lida.
No início, eu estava planejando descobrir qual disco está quebrado (usando smartctl) e substituir rapidamente o disco com falha para reconstruir a matriz antes que outros discos também falhem. No entanto, smartctl mostra quetrêsos discos têm erros incorrigíveis.
Eu acho que o mdadm ainda deve ser capaz de reconstruir, desde que os setores defeituosos desses três discos não se cruzem, permitindo-me a opção de trocar e reconstruir um por um.
Ou o fato de eu ter um erro de E/S já indica que a paridade foi perdida e o mesmo setor em vários discos está ilegível? Existe alguma maneira de descobrir se algum setor em falha se cruza ou não e, portanto, a informação é irreversivelmente perdida?
Responder1
Os procedimentos padrão são:
- Tenha sempre um bom e atualizadocópia de segurança(pelo menos duas cópias independentes em locais diferentes, pelo menos em mídias diferentes)
- Continuamentemonitorseu RAID em busca de problemas. Um RAID é inútil quando os erros podem se acumular.
- Esfregardiscos pelo menos mensalmente. Isso evita o acúmulo de erros e evita reconstruções.
- ConsiderarRAID 6com dois discos redundantes.
Você não parece ter levado isso a sério. Tente recuperar o que ainda está láagora. Tentar reconstruir aquele array que quase falhou pode causar mais danos do que o esperado.
Se os dados forem valiosos o suficiente, encontre um serviço de recuperação de dados confiável e capaz. Reserve uma quantia em dinheiro de quatro a cinco dígitos. Caso contrário, enxágue e repita - substitua os discos, reformate, reinstale e leve os procedimentos padrão mais a sério.
Responder2
Você está correto ao afirmar que, se setores ilegíveis "não se cruzarem", ou seja, em faixas diferentes, MD RAIDpoderiarecuperar dados usando paridade. Mas pode causar algum impulso durante a recuperação e, então, as chances diminuirão significativamente.
Existe uma regra geral de recuperação de dados:sempre comece com um despejo bruto. Isso garante tentativas ilimitadas: se você errar alguma coisa, poderá começar de novo com o despejo. Portanto, em geral, você pode clonar todos os discos que estão morrendo em alguns que estão funcionando, lendo os erros e, em seguida, montar o RAID a partir de novos discos.
Você pode começar clonando cada unidade setor por setor para uma substituição com
ddrescue
(ou seja,nãousando o procedimento de recuperação MD RAID). Além de copiar erros, ele cria o que chama dearquivo de log, que na verdade é o mapa do setor defeituoso. Ao clonar todos os três, você pode comparar esses mapas e descobrir se há alguma interseção. Não os jogue fora, esses mapas podem ajudá-lo na recuperação.No entanto, o RAID5 é uma fera muito desagradável no sentido de tais despejos. O que poderia dar errado? Se o setor da sua unidade não ler nenhum erro de E/S, a camada RAID recuperará esses dados de outros discos; esse seria o caso de discos antigos. Mas se ele ler sem erros, mas retornar dados errados, o RAID não tentará recuperá-los da paridade e, em vez disso, retornará os dados errados.
ddrescue
preencherá setores ilegíveis com zeros, que serão lidos se você montar o array com este dispositivo clone posteriormente, então isso se traduzirá na leitura de zeros (dados corrompidos) onde foi potencialmente possível recuperar os dados originais. RAID não garante os dadosintegridade. E este é o verdadeiro problema para todas as variantes, exceto RAID6, que possui duas síndromes de paridade, ou RAID1, com mais de dois espelhos. E, você já deve ter adivinhado, esse problema se manifesta de forma mais perturbadora no caso do RAID5. (Há considerações adicionais contra isso, algo sobre tamanhos de disco modernos e suas taxas de erro de bits.)Durante qualquer operação de clonagem, um disco pode morrer completamente. Então você ficou preso. Existe a possibilidade de fazer recuperação além deste ponto, mas isso lhe custarámuito. Existem serviços onde existem "salas limpas" e podem, por exemplo, substituir as cabeças dos discos rígidos e tentar lê-los novamente; é lento, sujeito a erros e provavelmente cobra muito caro. Considere isso se seus dados forem muito valiosos.
Portanto, é aconselhável clonar os discos originais, mas depois guardar os clones, montar o array a partir deoriginaldiscos e tente clonar do próprio array (
/dev/mdX
). Se algo der errado (o disco morrer), substitua-o por um clone e recupere manualmente as faixas quebradas (leia a página 4), consultando os arquivos de log (p.3). Este é um trabalho bastante difícil. Observe também que você precisa pouparduas vezeso espaço original para realizar a recuperação. Ou não faça nada sozinho, terceirize todo o trabalho para especialistas. Este é o preço que você paga pela manutenção inadequada do array e dos dados.E, agora, você tem essa experiência preciosa. Não culpe os arrays, culpe-se, aprenda a lição e gerencie-os corretamente:
- Pense três vezes antes de usar o RAID5. Então diga "não" e vá para outro nível de RAID.
- Esfregue a matriz regularmente. Isso significa que o MD RAID lerá e comparará os dados nas unidades e tocará a campainha se algo estiver errado (incompatibilidade, bloco ilegível). Então você pode substituir o mau comportamento pelos primeiros sintomas. Boas distros têm isso configurado imediatamente (pelo menos Debian).
- Monitore os discos e o array para não perder sinais importantes de problemas.
- Por fim, seja bem-vindo ao clube de administradores que fazem backups regulares de seus dados.