Como remover 1 disco de um array raid-5 mdadm?

3

Eu tentei remover 1 HDD de um RAID-5, mas algo deu errado, mas ainda espero recuperar meus dados (na verdade, eu tenho todos os backups, então é apenas uma pergunta sobre mdadm possibilidades)

Eu tinha um RAID-5 Tb de 4 x 1 e um dos discos começou a exibir muitos Reallocated_Sector_Ct , então decidi removê-lo.

O que eu fiz:

  1. mdadm --manage /dev/md0 --fail /dev/sdc
  2. mdadm --manage /dev/md0 --remove /dev/sdc

  3. tentou executar:

    root@darkstar:/home/anton# mdadm --grow /dev/md0 --raid-devices=3
    mdadm: this change will reduce the size of the array.
    use --grow --array-size first to truncate array.
    e.g. mdadm --grow /dev/md0 --array-size 1953262592
    
  4. mdadm --grow /dev/md0 --array-size 1953262592

e finalmente:

  1. mdadm --grow /dev/md0 --raid-devices=3 --backup-file=/root/grow_md1.bak

Agora que a remodelação e a recuperação estão concluídas, não consigo acessar meu / dev / md0 (ele não é montado), resize2fs /dev/md0 diz para executar e2fsck primeiro e e2fsck informa :

The filesystem size (according to the superblock) is 732473472 blocks
The physical size of the device is 488315648 blocks
Either the superblock or the partition table is likely to be corrupt!

por outro lado, mdadm -D /dev/md0 diz:

Array Size : 1953262592 (1862.78 GiB 2000.14 GB)
Used Dev Size : 976631296 (931.39 GiB 1000.07 GB)

Isso deixa alguma esperança de que nem todos os meus dados sejam perdidos. Alguém tem algumas idéias sobre o que devo fazer para ter uma matriz RAID-5 válida de 3 x 1 discos Tb?

    
por Anton S. 08.09.2017 / 16:05

2 respostas

8

Tudo o que você deveria ter feito foi o seu primeiro passo

mdadm --manage /dev/md0 --fail /dev/sdc

Neste ponto, sua matriz RAID 5 está em execução no modo degradado e você pode substituir o disco por um novo.

Infelizmente, parece que você tem truncado o tamanho efetivo de seu array de 2TB para 1TB, destruindo a segunda metade do seu sistema de arquivos. Felizmente você diz que tem backups.

Estou um pouco confuso. Com quatro discos em uma configuração RAID5, você deve ter 3TB disponíveis para você. Mas sem ver os resultados de mdadm --examine , não tenho certeza se há muito mais que eu possa oferecer a você.

    
por 08.09.2017 / 16:24
7

Você conseguiu o pedido de volta.

Para encolher, você primeiro diminui o sistema de arquivos ( resize2fs ) e depois reduz o dispositivo de bloco ( mdadm ). A ordem que você fez está correta para ampliar um sistema de arquivos, mas para trás, para diminuir um.

Você destruiu seus dados. Para se recuperar disso, você primeiro confirma que seus backups são bons. Então mkfs a matriz e restaurar a partir do backup. Se seus backups não forem bons, você provavelmente poderá recuperar arquivos que estejam no primeiro 2TB do sistema de arquivos. (Veja abaixo)

PS: A maneira normal de gerenciar uma matriz é que, se um disco falhar, você substituirá esse disco por um com a mesma capacidade ou maior. mdadm --grow não é uma parte normal de lidar com falhas de disco.

Recuperação

O que costumava ser o terceiro terabyte do seu sistema de arquivos foi sobrescrito; essencialmente esse espaço é agora usado para a paridade. (Os setores reais contêm uma combinação de paridade e dados que foram movidos de outros discos, onde esses setores agora contêm paridade.) Essa parte dos dados desapareceu para sempre; abordagens de alto custo ausentes (possivelmente teóricas) capazes de ler o conteúdo anterior de setores não são recuperáveis.

Além disso, o ext4 não mantém todos os metadados no início do sistema de arquivos; está espalhado por todo o sistema de arquivos. Então você perdeu um monte de metadados também. É importante ressaltar que, se qualquer parte dos metadados do arquivo ou estiver no terceiro perdido, o arquivo ficará inacessível. A recuperação limitada de trechos pode ser possível a partir do 4º disco (que provavelmente não foi tocado pelo crescimento, já que ele falhou no momento).

O primeiro e mais importante passo é comprar um disco de 4 TB e usá-lo para fazer uma cópia completa (imagem) do sistema de arquivos. Em seguida, coloque os 4 discos originais de lado. Se houver alguma dúvida sobre a confiabilidade dos discos originais, faça uma cópia em segundo e trabalhe apenas em uma das cópias. Você também precisará de discos adicionais para copiar arquivos recuperados, incluindo possivelmente várias cópias de arquivos parcialmente danificados.

Agora você pode tentar as etapas de recuperação em uma cópia . Observe que a maioria deles precisará ser feita em uma nova cópia - as etapas são destrutivas, essa é uma das muitas razões para trabalhar apenas em uma cópia. Não destrua seus originais:

  1. Deixe e2fsck -y /path/to/copy fazer isso. Provavelmente produzirá algo que você pode montar. Vá em frente e faça isso, copie os arquivos.

  2. Estenda sua cópia de volta para o tamanho original (deve ser OK para ser escassa; truncate -s pode fazer isso). Então provavelmente montará (faça assim somente leitura). Copie o que você puder. Desmonte-o e novamente deixe e2fsck -y fazer sua parte novamente. Mais uma vez monte e copie o que puder.

  3. Execute fsck sem -y e realmente passe por todas essas mensagens. Por exemplo, eu esperaria que ele oferecesse uma escolha do que fazer quando parte dos dados de um arquivo estiver na área perdida (substitua por 0s, exclua o arquivo). Possivelmente, também dá opções sobre metadados perdidos. Eu faria -y primeiro, porque ele terá um lote de perguntas para você ...

  4. Se você tiver um backup de imagem antigo do sistema de arquivos, combine os 2TB que você tem + o 1TB ausente do backup. fsck o resultado, veja se você pode obter arquivos adicionais dele. O risco de que os arquivos recuperados sejam corrompidos é bastante alto.

  5. Use programas que varrem a imagem do sistema de arquivos para padrões de dados (por exemplo, photorec para procurar JPEGs). Este é o único que não precisa estritamente de uma nova cópia.

  6. Em teoria, ¾ do final ⅓ do disco "com falha" # 4 contém alguns dados ausentes. Se você puder descobrir o mapeamento de setor / fragmento (com certeza não sei!), Você poderá copiar ~ 250 GB desse disco de volta para sua imagem e repetir todas as etapas de recuperação acima para recuperar arquivos adicionais.

Observe que todos esses arquivos recuperados podem ter danos neles (por exemplo, blocos cheios de 0s em vez de dados). Verificá-los é fácil se você tiver checksums em algum lugar, mas de outra forma um processo manual tedioso.

Temos um monte de perguntas sobre como recuperar dados de sistemas de arquivos danificados; contanto que você só trabalhe em cópias , você pode experimentar sem colocar seus dados em risco adicional.

    
por 08.09.2017 / 16:47

Tags