Recuperação RAID5 tentando com “mdadm --criar… faltando”

4

Primeiro, como cheguei nessa situação:

Eu tinha um array RAID5 com discos a cada 2 TB (discos USB externos), então eu queria criar um array criptografado maior. Portanto, eu tenho 2 discos adicionais (também 2 TB cada) e o plano era executar o array original em modo degradado, configurar o novo array criptografado, copiar parte dos dados, depois disso diminuir o array original para 2 discos degradados, ampliar o novo, copie o resto dos dados e, finalmente, ampliá-lo para 7 discos RAID5 não degradados. Eu fiz todo o procedimento com /dev/loopX de dispositivos de 2 GB cada para testar se o meu plano tem alguma ressalva.

Tudo correu bem com o array real até o ponto em que um dos novos discos falhou. Quando substitui este, a ordem em que os discos são reconhecidos pelo kernel mudou após a próxima reinicialização ( /dev/sdb , /dev/sdc , ... eram discos diferentes de antes). Tudo ficou confuso e eu não percebi isso até que um dos discos foi ressincronizado como membro da matriz errada. Eu poupo os detalhes dessa história e vou direto ao ponto:

Eu tenho agora uma matriz criptografada, 3 discos RAID5, degradada em /dev/sdc1 e /dev/sdd1 , funcionando perfeitamente, todos os dados e um sistema de arquivos saudável de acordo com fsck -f . Até aí tudo bem.

O problema está agora em 3 discos - não consigo fazer com que esse array não criptografado funcione novamente. Tenho certeza de que os dados TÊM estão lá em /dev/sdf1 , /dev/sdg1 , /dev/sdh1 , já que essa era uma matriz funcional antes que UM dos discos ficasse confuso (acidentalmente foi ressincronizado como membro da outra matriz criptografada, como dito anteriormente). Portanto, um desses três discos pode ter dados de matriz incorretos, mas qual deles? E dois deles têm que ser bons, mas como eu entendo isso?

Eu tentei todas as permutações de mdadm --create ... com /dev/sdf1 , /dev/sdg1 , /dev/sdh1 e "missing" como:

mdadm --create /dev/md0 --level=5 --raid-devices=3  /dev/sdf1 /dev/sdg1 missing

mdadm --create /dev/md0 --level=5 --raid-devices=3  /dev/sdf1 missing /dev/sdg1

...

e, claro, verificado sempre com

fsck /dev/md0

que reclamou de um superbloco inválido.

Toda vez que o mdadm criava o array, mas não havia nenhum sistema de arquivos legível, ele apenas continha lixo, nenhuma das permutações usadas com o mdadm finalmente funcionava. Então, minha pergunta agora é: que opções eu tenho? Além de perder meus dados e reconstruir o array do zero, é claro.

Aqui, algumas informações adicionais (todos os discos):

mdadm --examine /dev/sdb1
/dev/sdb1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : cfee26c0:414eee94:e470810c:17141589
           Name : merlin:0  (local to host merlin)
  Creation Time : Sun Oct 28 11:38:32 2012
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 3906760704 (1862.89 GiB 2000.26 GB)
     Array Size : 3906759680 (3725.78 GiB 4000.52 GB)
  Used Dev Size : 3906759680 (1862.89 GiB 2000.26 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : f4f0753e:56b8d6a5:84ec2ce8:dbc933f0

    Update Time : Sun Oct 28 11:38:32 2012
       Checksum : 60093b72 - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AA. ('A' == active, '.' == missing)


mdadm --examine /dev/sdc1
/dev/sdc1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 5cb45bae:7a4843ba:4ad7dbfb:5c129d2a
           Name : merlin:1  (local to host merlin)
  Creation Time : Wed Sep 26 07:32:32 2012
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 3906760704 (1862.89 GiB 2000.26 GB)
     Array Size : 3905299456 (3724.38 GiB 3999.03 GB)
  Used Dev Size : 3905299456 (1862.19 GiB 1999.51 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 9e2f9ae6:6c95d05e:8d83970b:f1308de0

    Update Time : Fri Oct 26 03:26:37 2012
       Checksum : 79d4964b - correct
         Events : 220

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 0
   Array State : AA. ('A' == active, '.' == missing)


mdadm --examine /dev/sdd1
/dev/sdd1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 5cb45bae:7a4843ba:4ad7dbfb:5c129d2a
           Name : merlin:1  (local to host merlin)
  Creation Time : Wed Sep 26 07:32:32 2012
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 3906760704 (1862.89 GiB 2000.26 GB)
     Array Size : 3905299456 (3724.38 GiB 3999.03 GB)
  Used Dev Size : 3905299456 (1862.19 GiB 1999.51 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 98b07c41:ff4bea98:2a765a6b:63d820e0

    Update Time : Fri Oct 26 03:26:37 2012
       Checksum : 6e2767e8 - correct
         Events : 220

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AA. ('A' == active, '.' == missing)


mdadm --examine /dev/sde1
/dev/sde1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 6db9959d:3cdd4bc3:32a241ad:a9f37a0c
           Name : merlin:0  (local to host merlin)
  Creation Time : Sun Oct 28 12:12:59 2012
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 3905299943 (1862.19 GiB 1999.51 GB)
     Array Size : 3905299456 (3724.38 GiB 3999.03 GB)
  Used Dev Size : 3905299456 (1862.19 GiB 1999.51 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 677a4410:8931e239:2c789f83:e130e6f7

    Update Time : Sun Oct 28 12:12:59 2012
       Checksum : 98cb1950 - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 2
   Array State : A.A ('A' == active, '.' == missing)


mdadm --examine /dev/sdf1
/dev/sdf1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 3700a0a6:3fadfd73:bc74b618:a5526767
           Name : merlin:0  (local to host merlin)
  Creation Time : Sun Oct 28 11:28:30 2012
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 3905392640 (1862.24 GiB 1999.56 GB)
     Array Size : 3905391616 (3724.47 GiB 3999.12 GB)
  Used Dev Size : 3905391616 (1862.24 GiB 1999.56 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 5a8a5423:10b7a542:26b5e2b3:f0887121

    Update Time : Sun Oct 28 11:28:30 2012
       Checksum : 8e90495f - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AA. ('A' == active, '.' == missing)


mdadm --examine /dev/sdg1
/dev/sdg1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 202255c9:786f474d:ba928527:68425dd6
           Name : merlin:0  (local to host merlin)
  Creation Time : Sun Oct 28 11:24:36 2012
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 3905299943 (1862.19 GiB 1999.51 GB)
     Array Size : 3905299456 (3724.38 GiB 3999.03 GB)
  Used Dev Size : 3905299456 (1862.19 GiB 1999.51 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 4605c729:c290febb:92901971:9a3ed814

    Update Time : Sun Oct 28 11:24:36 2012
       Checksum : 38ba4d0a - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AA. ('A' == active, '.' == missing)


mdadm --examine /dev/sdh1
/dev/sdh1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 682356f5:da2c442e:7bfc85f7:53aa9ea7
           Name : merlin:0  (local to host merlin)
  Creation Time : Sun Oct 28 12:13:44 2012
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 3906761858 (1862.89 GiB 2000.26 GB)
     Array Size : 3906760704 (3725.78 GiB 4000.52 GB)
  Used Dev Size : 3906760704 (1862.89 GiB 2000.26 GB)
    Data Offset : 262144 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 489943b3:d5e35022:f52c917a:9ca6ff2a

    Update Time : Sun Oct 28 12:13:44 2012
       Checksum : f6947a7d - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : AA. ('A' == active, '.' == missing)



cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md1 : active raid5 sdc1[0] sdd1[1]
      3905299456 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]

unused devices: <none>

Qualquer ajuda seria muito apreciada!

    
por Ice Ra 30.10.2012 / 13:41

3 respostas

2

Se você acabou de perder um disco, você deve ter conseguido se recuperar usando o muito mais seguro --assemble .

Você executou a criação agora tanto que todos os UUIDs são diferentes. sdc1 e sdd1 compartilham um UUID (esperado, já que é sua matriz de trabalho) ... o resto os discos compartilham um nome, mas todos têm UUIDs diferentes. Então eu estou supondo que nenhum desses são os superblocos originais. Que pena ...

Enfim, eu acho que você está tentando usar os discos errados, ou você está tentando usar o tamanho errado do pedaço (o padrão mudou com o tempo, eu acredito). Sua matriz antiga também pode ter usado uma versão de superbloco diferente - esse padrão mudou definitivamente - o que poderia compensar todos os setores (e também destruir alguns dos dados). Finalmente, é possível que você esteja usando o layout errado, embora isso seja menos provável.

Também é possível que, sua matriz de teste tenha sido de leitura / gravação (do ponto de vista do md) que tenta usar o ext3 na verdade fez algumas gravações. Por exemplo, um replay da revista. Mas isso é só se encontrar um superbloco em algum momento, eu acho.

BTW: Eu acho que você realmente deveria estar usando --assume-clean , embora, é claro, um array degradado não tente iniciar a reconstrução. Então você provavelmente deseja definir imediatamente somente leitura.

    
por 01.11.2012 / 16:46
0

Estou a um passo de desistir e adicionar todos os discos à matriz que eu pude salvar, devido:

1) Encontrei alguns backups antigos com uma boa parte dos dados importantes e muitos dos arquivos perdidos que posso encontrar de outra forma.

2) Estou em uma possível solução que não funciona.

O que me incomoda é que criar as possíveis matrizes com uma unidade em falta deve funcionar, mas não me dá um sistema de arquivos válido, não importa em qual superbloco eu tente trabalhar (era um ext3 sistema de arquivo). Estou pensando em perguntar ao mantenedor do mdadm sobre o assunto, mas, novamente, acho que ele está sendo incomodado com muitas perguntas bobas como a minha. ;)

Conclusão: considere minha pergunta encerrada. Embora seja realmente intrestante saber por que recriar a matriz com uma unidade ausente não funcionou.

    
por 01.11.2012 / 13:45
0

As pessoas aqui deliberadamente colocaram um RAID 6 em algum teste de estresse e tentaram se recuperar dele. Isso pode te mover mais adiante. Pode ser um pouco tarde demais para você, mas eles também nomearam seus dispositivos especificamente como / dev / rsda etc para o RAID sda usando regras UDEV ....

Tente algumas etapas de recuperação, mas elas não perderam três discos no RAID6. No entanto, talvez pedaços e peças possam ajudar

HTPC + RAID6 (mdadm)

Dispositivo UDEV RAID 6 Nomeação

FYI, o extN FS pode não ser tão confiável quanto o XFS. YMMV.

    
por 04.11.2012 / 06:37