Para encurtar a história, para meu primeiro tópico aqui, tenho uma matriz RAID5 de software configurada da seguinte forma: 4 dispositivos de disco com uma partição linux-RAID em cada um. Esses discos são: /dev/sda1 /dev/sdb1 /dev/sdd1 /dev/sde1
/dev/md0 é o dispositivo raid5 com um LVM cifrado nele. Eu uso cryptsetup para abrir o dispositivo, depois vgscan e lvcan -a para mapear meus volumes.
Ontem, descobri que /dev/sdd1 estava falhando. Aqui estão os passos que segui:
0. remova o disco com falha
# mdadm --remove /dev/md0 /dev/sdd1
1. execute uma verificação na unidade defeituosa
mdadm --examine /dev/sdd1
Recebi o erro "não foi possível ler os metadados".
2. tentou ler a tabela de partições
Usei o parted e descobri que minha partição Linux-RAID havia sumido e, quando tentei recriá-la (esperando poder adicionar novamente a unidade), recebi a mensagem "seu dispositivo não é gravável"
Então, ficou claro: aquele disco rígido está morto.
3. Extraia o disco rígido do meu gabinete (coisas ruins se seguem)
Então tentei extrair /dev/sdd1 do meu caso sem saber qual das 4 unidades era. Então desconectei um cabo SATA para descobrir que acabei de desconectar /dev/sde1 ; Eu o reconectei e desconectei o seguinte, boa captura! era /dev/sdd1
4. o que eu fiz?! rosto triste
usando :
# mdadm --detail /dev/md0
Percebi que /dev/sde1 deixou o array marcado como "removido". Eu tentei adicioná-lo novamente, não usando --re-add, mas:
mdadm --add /dev/md0 /dev/sde1
/proc/mdstat me mostrou o processo de reconstrução e mdadm --detail /dev/md0 exibiu /dev/sde1 como "spare" ; Eu sei que posso ter feito algo terrível aqui.
Tentei remover /dev/sde1 do array e usar --re-add mas mdadm me disse que não poderia fazer isso e me aconselhou a parar e remontar o array
5. Para onde ir a partir daqui?
Em primeiro lugar, estou esperando por um novo disco rígido para substituir o defeituoso. Assim que o tiver e configurar como um novo dispositivo de partição Linux-RAID conhecido como /dev/sdd1, terei que parar o array (os volumes LVM não são mais montados, obviamente, o cryptsetup fechou o dispositivo cifrado, ainda mdadm ainda não conseguiu parar o array). Eu estava pensando em reiniciar todo o sistema e trabalhar do zero. Aqui está o que eu achei que deveria fazer:
# mdadm --stop /dev/md0
# mdadm --stop /dev/md0
# mdadm --examine /dev/sd*1
# mdadm --assemble --scan --run --verbose
Eu li que sem a opção --run, o mdadm se recusará a verificar o array degradado.
Melhor cenário: /dev/sde1 é reconhecido pelo processo de remontagem e o novo /dev/sdd1 é usado para reparar o anterior com defeito. Eu não teria perdido nenhum dado e ficaria feliz.
Pior e mais comum cenário de caso: a remontagem da matriz falha ao recuperar /dev/sde1 e tenho que começar de uma nova matriz em branco.
Estou faltando alguma coisa aqui? O que devo revisar deste procedimento?
Atenciosamente da França
Então, consegui uma recuperação completa, graças a este link
O que eu fiz é o seguinte:
Em seguida, formatei o novo disco como um tipo de partição Linux-RAID.
Então, com base no link acima, (re)criei o array, com base nas informações fornecidas pelo comando --examine.
Conforme declarado neste link, o --assume-clean fez o truque! Ele evitou o estado "spare" de /dev/sde1 e o usou como parte ativa do novo array.
O principal ao recriar a matriz a partir de dispositivos "existentes" pode ser não bagunçar o parâmetro do bloco, a menos que você perca os dados.
Em seguida, adicionei o novo dispositivo a esta nova matriz:
O servidor começou a ser reconstruído (levou 6 horas para 10 Tb) e, depois disso, forcei uma verificação de integridade em todo o array (que também levou 6 horas)
Recuperei tudo e estou bastante aliviado!