MDADM - Recuperação de desastre ou seguir em frente do estado em que coloquei minha matriz RAID5

1

Para encurtar a história, para o meu primeiro tópico aqui, tenho um conjunto de software RAID5 configurado 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. faça uma verificação na unidade defeituosa

mdadm --examine /dev/sdd1

Recebi o erro "não foi possível ler metadados".

2. tentou ler a tabela de partições

Eu usei o parted e descobri que minha partição Linux-RAID tinha desaparecido e, quando tentei recriá-la (esperando poder adicionar novamente a unidade), obtive o "seu dispositivo não pode ser gravado"

Então, está claro: aquele disco rígido está morto.

3. Extraia o disco rígido do meu caso (coisas ruins seguem)

Então eu tentei extrair / dev / sdd1 do meu caso sem saber qual das 4 unidades era. Então eu desconectei um cabo SATA para descobrir que tinha acabado de desconectar o / dev / sde1; Eu recarreguei e desliguei o seguinte, bom sinal! foi / dev / sdd1

4. o que eu fiz?! cara triste

usando:

# mdadm --detail /dev/md0

Percebi que / dev / sde1 deixou a matriz marcada como "removida". Eu tentei adicionar novamente, não usando --re-add, mas:

mdadm --add /dev/md0 /dev/sde1

/ proc / mdstat mostrou-me o processo de reconstrução e o mdadm --detail / dev / md0 exibiu / dev / sde1 como "sobressalente"; Eu sei que poderia ter feito algo terrível aqui.

Eu tentei remover o / dev / sde1 do array e usar --re-add, mas o mdadm me disse que ele não podia fazer isso e me avisou para parar e remontar o array

5. Para onde ir a partir daqui?

Em primeiro lugar, estou à espera de um novo disco rígido para substituir o disco defeituoso. Uma vez que eu o terei e o configurarei 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, cryptsetup fechou o dispositivo cifrado, ainda O mdadm ainda não conseguiu parar o array). Eu estava pensando em reiniciar o sistema inteiro e trabalhar de um começo limpo. 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 novo / dev / sdd1 é usado para reparar o anterior defeituoso. Eu não teria perdido nenhum dado e ficaria feliz.

Pior e mais comum cenário de caso: A montagem do array falha ao recuperar / dev / sde1 e eu tenho que começar de um novo array em branco.

Estou sentindo falta de algo aqui? O que devo rever deste procedimento?

Cumprimentos da França

    
por Sbastien L. - GEOCONCEPT 14.05.2018 / 17:36

1 resposta

0

Então, consegui uma recuperação completa, graças a este link

O que fiz foi o seguinte:

  1. Substitui o disco com defeito e reiniciei o servidor.
  2. Depois, formatei o novo disco como um tipo de partição Linux-RAID.

    # mdadm --examine /dev/sda1 /dev/sdb1 /dev/sdd1 /dev/sde1
    

Depois, com base no link acima, eu (re) criei o array, com base nas informações dadas pelo comando --examine.

# mdadm --create /dev/md0 --level=5 --raid-devices=4 --chunk=512 --name=server:0 /dev/sda1 /dev/sdb1 missing /dev/sde1 --assume-clean

Como indicado neste link, o --assume-clean fez o truque! Evitou o estado "spare" de / dev / sde1 e usou-o como uma parte ativa do novo array.

A principal coisa ao recriar o array a partir de dispositivos "existentes" pode ser não atrapalhar o parâmetro chunk, a menos que você perca os dados.

  1. Em seguida, adicionei o novo dispositivo a essa nova matriz:

    # mdadm --add /dev/md0 /dev/sde1
    

O servidor iniciou a reconstrução (demorou 6 horas para 10 TB), e depois disso, forcei uma verificação de integridade em toda a matriz (que levou 6 horas também)

Eu recuperei tudo e estou bastante aliviado!

    
por 23.05.2018 / 12:01