Remontar mdadm-raid5

4

Um amigo meu tem um mdadm-raid5 com 9 discos que não remontam mais.

Depois de dar uma olhada no syslog, descobri que o sdi do disco foi kickado da matriz:

Jul  6 08:43:25 nasty kernel: [   12.952194] md: bind<sdc>
Jul  6 08:43:25 nasty kernel: [   12.952577] md: bind<sdd>
Jul  6 08:43:25 nasty kernel: [   12.952683] md: bind<sde>
Jul  6 08:43:25 nasty kernel: [   12.952784] md: bind<sdf>
Jul  6 08:43:25 nasty kernel: [   12.952885] md: bind<sdg>
Jul  6 08:43:25 nasty kernel: [   12.952981] md: bind<sdh>
Jul  6 08:43:25 nasty kernel: [   12.953078] md: bind<sdi>
Jul  6 08:43:25 nasty kernel: [   12.953169] md: bind<sdj>
Jul  6 08:43:25 nasty kernel: [   12.953288] md: bind<sda>
Jul  6 08:43:25 nasty kernel: [   12.953308] md: kicking non-fresh sdi from array!
Jul  6 08:43:25 nasty kernel: [   12.953314] md: unbind<sdi>
Jul  6 08:43:25 nasty kernel: [   12.960603] md: export_rdev(sdi)
Jul  6 08:43:25 nasty kernel: [   12.969675] raid5: device sda operational as raid disk 0
Jul  6 08:43:25 nasty kernel: [   12.969679] raid5: device sdj operational as raid disk 8
Jul  6 08:43:25 nasty kernel: [   12.969682] raid5: device sdh operational as raid disk 6
Jul  6 08:43:25 nasty kernel: [   12.969684] raid5: device sdg operational as raid disk 5
Jul  6 08:43:25 nasty kernel: [   12.969687] raid5: device sdf operational as raid disk 4
Jul  6 08:43:25 nasty kernel: [   12.969689] raid5: device sde operational as raid disk 3
Jul  6 08:43:25 nasty kernel: [   12.969692] raid5: device sdd operational as raid disk 2
Jul  6 08:43:25 nasty kernel: [   12.969694] raid5: device sdc operational as raid disk 1
Jul  6 08:43:25 nasty kernel: [   12.970536] raid5: allocated 9542kB for md127
Jul  6 08:43:25 nasty kernel: [   12.973975] 0: w=1 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973980] 8: w=2 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973983] 6: w=3 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973986] 5: w=4 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973989] 4: w=5 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973992] 3: w=6 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973996] 2: w=7 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973999] 1: w=8 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.974002] raid5: raid level 5 set md127 active with 8 out of 9 devices, algorithm 2

Infelizmente isso não foi reconhecido e agora outra unidade foi chutada (sde):

Jul 14 08:02:45 nasty kernel: [   12.918556] md: bind<sdc>
Jul 14 08:02:45 nasty kernel: [   12.919043] md: bind<sdd>
Jul 14 08:02:45 nasty kernel: [   12.919158] md: bind<sde>
Jul 14 08:02:45 nasty kernel: [   12.919260] md: bind<sdf>
Jul 14 08:02:45 nasty kernel: [   12.919361] md: bind<sdg>
Jul 14 08:02:45 nasty kernel: [   12.919461] md: bind<sdh>
Jul 14 08:02:45 nasty kernel: [   12.919556] md: bind<sdi>
Jul 14 08:02:45 nasty kernel: [   12.919641] md: bind<sdj>
Jul 14 08:02:45 nasty kernel: [   12.919756] md: bind<sda>
Jul 14 08:02:45 nasty kernel: [   12.919775] md: kicking non-fresh sdi from array!
Jul 14 08:02:45 nasty kernel: [   12.919781] md: unbind<sdi>
Jul 14 08:02:45 nasty kernel: [   12.928177] md: export_rdev(sdi)
Jul 14 08:02:45 nasty kernel: [   12.928187] md: kicking non-fresh sde from array!
Jul 14 08:02:45 nasty kernel: [   12.928198] md: unbind<sde>
Jul 14 08:02:45 nasty kernel: [   12.936064] md: export_rdev(sde)
Jul 14 08:02:45 nasty kernel: [   12.943900] raid5: device sda operational as raid disk 0
Jul 14 08:02:45 nasty kernel: [   12.943904] raid5: device sdj operational as raid disk 8
Jul 14 08:02:45 nasty kernel: [   12.943907] raid5: device sdh operational as raid disk 6
Jul 14 08:02:45 nasty kernel: [   12.943909] raid5: device sdg operational as raid disk 5
Jul 14 08:02:45 nasty kernel: [   12.943911] raid5: device sdf operational as raid disk 4
Jul 14 08:02:45 nasty kernel: [   12.943914] raid5: device sdd operational as raid disk 2
Jul 14 08:02:45 nasty kernel: [   12.943916] raid5: device sdc operational as raid disk 1
Jul 14 08:02:45 nasty kernel: [   12.944776] raid5: allocated 9542kB for md127
Jul 14 08:02:45 nasty kernel: [   12.944861] 0: w=1 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944864] 8: w=2 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944867] 6: w=3 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944871] 5: w=4 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944874] 4: w=5 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944877] 2: w=6 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944879] 1: w=7 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944882] raid5: not enough operational devices for md127 (2/9 failed)

E agora o array não inicia mais. No entanto, parece que cada disco contém os metadados de raid:

/dev/sda:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 8600bda9:18845be8:02187ecc:1bfad83a

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : e38d46e8 - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdc:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : fe612c05:f7a45b0a:e28feafe:891b2bda

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : 32bb628e - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdd:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 1d14616c:d30cadc7:6d042bb3:0d7f6631

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : 62bd5499 - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sde:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : active
    Device UUID : a2babca3:1283654a:ef8075b5:aaf5d209

    Update Time : Mon Jul 14 00:45:07 2014
       Checksum : f78d6456 - correct
         Events : 123123

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdf:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : e67d566d:92aaafb4:24f5f16e:5ceb0db7

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : 9223b929 - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdg:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 2cee1d71:16c27acc:43e80d02:1da74eeb

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : 7512efd4 - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdh:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : c239f0ad:336cdb88:62c5ff46:c36ea5f8

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : c08e8a4d - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdi:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : active
    Device UUID : d06c58f8:370a0535:b7e51073:f121f58c

    Update Time : Mon Jul 14 00:45:07 2014
       Checksum : 77844dcc - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : spare
   Array State : AAAAAAA.A ('A' == active, '.' == missing)


/dev/sdj:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : f2de262f:49d17fea:b9a475c1:b0cad0b7

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : dd0acfd9 - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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

Mas, como você pode ver, as duas unidades (sde, sdi) estão no estado ativo (mas a raid está parada) e a sdi é uma reserva. Enquanto sde tem uma contagem de eventos um pouco menor do que a maioria das outras unidades (123123 em vez de 123132) sdi tem uma contagem de eventos de 0. Então eu acho que sde está quase atualizado. Mas sdi não ...

Agora lemos on-line que um desligamento pesado poderia causar essas mensagens "não-recentes". E de fato meu amigo causou um desligamento strong uma ou duas vezes. Então, seguimos as instruções que encontramos on-line e tentamos adicionar sde novamente à matriz:

$ mdadm /dev/md127 --add /dev/sde
mdadm: add new device failed for /dev/sde as 9: Invalid argument

Mas isso falhou e agora mdadm --examine /dev/sde mostra uma contagem de eventos de 0 para sde também (+ é um sobressalente agora como sdi):

/dev/sde:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 689e0030:142122ae:7ab37935:c80ab400

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : 5e6c4cf7 - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : spare
   Array State : AAA.AAA.A ('A' == active, '.' == missing)

Sabemos que 2 unidades com falha geralmente significam a morte de um ataque5. No entanto, existe uma maneira de adicionar pelo menos sde ao ataque para que os dados possam ser salvos?

    
por Biggie 25.07.2014 / 22:38

4 respostas

6

OK, parece que agora temos acesso ao ataque. Pelo menos os primeiros arquivos verificados pareciam bons. Então, aqui está o que fizemos:

O artigo de recuperação do RAID no wiki do kernel.org sugere duas possíveis soluções para o nosso problema:

  1. usando --assemble --force (também mencionado por derobert)
    O artigo diz:

    [...] If the event count differs by less than 50, then the information on the drive is probably still ok. [...] If the event count closely matches but not exactly, use "mdadm --assemble --force /dev/mdX " to force mdadm to assemble the array [...]. If the event count of a drive is way off [...] that drive [...] shouldn't be included in the assembly.

    No nosso caso, a unidade sde teve uma diferença de eventos de 9. Portanto, havia uma boa chance de que --force funcionasse. No entanto, depois de executarmos o comando --add , a contagem de eventos caiu para 0 e a unidade foi marcada como sobressalente.

    Então é melhor desistirmos de usar --force .

  2. recriar a matriz
    Essa solução é explicitamente marcada como perigosa porque você pode perder dados se fizer algo errado. No entanto, esta parecia ser a única opção que tínhamos.

    A idéia é criar um novo ataque nos dispositivos raid existentes (que está sobrescrevendo os superblocos do dispositivo) com a mesma configuração do antigo raid e informar explicitamente ao mdadm que o ataque já existia e deve ser considerado limpo.

    Como a diferença na contagem de eventos foi de apenas 9 e o único problema foi que perdemos o superbloco de sde . Houve boas chances de que escrever novos superblocos nos permitisse acessar nossos dados ... e funcionou: -)

Nossa solução

Observação: essa solução foi especialmente voltada para nosso problema e pode não funcionar em sua configuração. Você deve tomar essas notas para ter uma ideia de como as coisas podem ser feitas. Mas você precisa pesquisar o que há de melhor no seu caso.

Backup
    Nós já perdemos um superbloco. Desta vez, nós salvamos o primeiro e último gigabyte de cada dispositivo de ataque ( sd[acdefghij] ) usando o dd antes de trabalhar no ataque. Fizemos isso para cada dispositivo de ataque:

# save the first gigabyte of sda
dd if=/dev/sda of=bak_sda_start bs=4096 count=262144

# determine the size of the device
fdisk -l /dev/sda
# In this case the size was 4000787030016 byte.

# To get the last gigabyte we need to skip everything except the last gigabyte.
# So we need to skip: 4000787030016 byte - 1073741824 byte = 3999713288000 byte
# Since we read blocks auf 4096 byte we need to skip 3999713288000/4096=976492502 blocks.
dd if=/dev/sda of=bak_sda_end bs=4096 skip=976492502

Reunir informações
Ao recriar o ataque, é importante usar a mesma confusão que o antigo ataque. Isso é especialmente importante se você quiser recriar a matriz em outra máquina usando uma versão diferente do mdadm. Nesse caso, os valores padrão do mdadm podem ser diferentes e podem criar superquadros que não se encaixam no raid existente (veja o artigo do wiki).

No nosso caso, usamos a mesma máquina (e, portanto, a mesma versão do mdadm) para recriar a matriz. No entanto, o array foi criado por uma ferramenta de terceiros em primeiro lugar. Portanto, não queríamos confiar nos valores padrão aqui e precisávamos coletar algumas informações sobre o ataque existente.

Da saída de mdadm --examine /dev/sd[acdefghij] obtemos as seguintes informações sobre o raid (Nota: sdb era o ssd que contém o sistema operacional e não fazia parte do raid):

     Raid Level : raid5
   Raid Devices : 9
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
         Layout : left-symmetric
     Chunk Size : 512K
   Device Role : Active device 0

O Used Dev Size é denominado em blocos de 512 bytes. Você pode verificar isso: 7814034432*512/1000000000 ~= 4000.79
Mas o mdadm requer o tamanho no Kibibytes: 7814034432*512/1024 = 3907017216

Importante é o Device Role . No novo ataque, cada dispositivo deve ter o mesmo papel de antes. No nosso caso:

device  role
------  ----
sda     0
sdc     1
sdd     2
sde     3
sdf     4
sdg     5
sdh     6
sdi     spare
sdj     8

Nota: as letras de unidade (e, portanto, a ordem) podem mudar após a reinicialização!

Também precisamos do layout e do tamanho do bloco na próxima etapa.

Recriar o ataque
Agora podemos usar as informações da última etapa para recriar a matriz:

mdadm --create --assume-clean --level=5 --raid-devices=9 --size=3907017216 \
    --chunk=512 --layout=left-symmetric /dev/md127 /dev/sda /dev/sdc /dev/sdd \
    /dev/sde /dev/sdf /dev/sdg /dev/sdh missing /dev/sdj

É importante passar os dispositivos na ordem correta!
Além disso, não adicionamos sdi , pois a contagem de eventos foi muito baixa. Então, definimos o sétimo slot raid como missing . Assim, o raid5 contém 8 de 9 dispositivos e será montado no modo degradado. E como não tem um dispositivo reserva, nenhuma reconstrução será iniciada automaticamente.

Em seguida, usamos --examine para verificar se os novos superblocos se encaixam em nossos superblocos antigos. E ele fez :-) Conseguimos montar o sistema de arquivos e ler os dados. O próximo passo é fazer backup dos dados e, em seguida, adicionar de volta sdi e iniciar a reconstrução.

    
por 28.07.2014 / 11:26
2

mdadm --force deve corrigir isso. Observe que você pode sofrer uma pequena corrupção de dados, pois vai fingir que está sincronizado. Use assim:

  1. mdadm --stop /dev/md127 (você precisa parar o que está sendo executado primeiro)
  2. %código%. A principal coisa é deixar de fora mdadm -v --assemble --run --force /dev/md127 /dev/sd[a-hl-z] aqui, como sabemos que o disco é o menos recente. OBSERVAÇÃO: Se nem todos os seus discos fizerem parte do array, seria mais seguro listar os discos aqui em vez de usar o caractere curinga do shell.
  3. Deveria haver um monte de mensagens, incluindo uma incluindo o disco desatualizado /dev/sdi . Verifique /dev/sde para garantir que você tenha um RAID5 em funcionamento, mas degradado.
  4. Descobrir por que o disco foi descartado. Dependendo do motivo, você pode agora precisar copiar imediatamente seus dados (por exemplo, disco está à beira da morte) ou, alternativamente, pode continuar a adicionar novamente o /proc/mdstat e deixá-lo reconstruir.

O mdadm pode ser configurado para monitorar a matriz e enviar alertas quando coisas ruins (como a perda de um disco) acontecerem. Você precisa configurar isso corretamente.

    
por 25.07.2014 / 23:05
2

Sua única opção aqui, desde que você transformou seus drives em sobressalentes e perdeu seus metadados, é recriar o RAID. Isso é muito perigoso, um erro apagará seus dados.

Ao recriar um RAID, há várias coisas a serem consideradas. Você deve usar --assume-clean para não sincronizar. Você deve deixar uma unidade fora (preferivelmente aquela que está no pior estado), especificando-a como missing . Por último, mas não menos importante, você deve obter todas as variáveis corretas: ordem de unidade, versão de metadados, nível de raid, chunksize, layout, deslocamento de dados, etc. ...

Você não pode confiar nos padrões aqui, já que os padrões tendem a mudar muito com mdadm . Se seu ambiente de resgate não estiver usando a mesma versão mdadm do ambiente que criou seu RAID e você não estiver usando exatamente os mesmos parâmetros, etc., você terá problemas se confiar nos padrões.

Você deve fazer pelo menos um backup do primeiro e último gigabyte de cada unidade, para poder desfazer pelo menos mdadm experiências. O ideal seria fazer tudo isso em uma cópia completa, ou usar dm-snapshots ou nbd-server no modo copy-on-write para ter uma visão somente leitura das coisas. Veja esta Sobreposição de instruções.

Se eu interpretar a saída --examine que você postou corretamente, desde que as letras da sua unidade não tenham sido alteradas, este pode ser o comando correto para recriar, mas não posso garantir nada:

mdadm --create /dev/md42 --assume-clean --metadata=1.2 --data-offset=1M \
      --level=5 --chunk=512 --layout=ls --raid-devices=9 \
      /dev/sda /dev/sdc /dev/sdd /dev/sde /dev/sdf \
      /dev/sdg /dev/sdh missing /dev/sdj

Consulte também o link , no entanto, siga os conselhos com cuidado. A recreação é um negócio horrível, muito fácil de cometer erros.

Depois de criar o RAID, você deve verificá-lo no modo somente leitura:

mdadm --readonly /dev/md42
file -s /dev/md42
fsck -n /dev/md42
mount -o ro /dev/md42 /mnt/md42

Se isso funcionar até agora, você deve encontrar um arquivo grande (unidades chunksize *) e ver se está tudo OK. É totalmente possível que você monte o sistema de arquivos bem, mas tenha arquivos corrompidos, se as duas unidades erradas tiverem alternado de lugar.

Você também terá que atualizar seu mdadm.conf e tal, pois será um novo ataque com o novo uuid, etc.

    
por 25.07.2014 / 23:34
0

Eu tentei isso em uma configuração RAID5 (5 unidades, 1 TB cada), onde duas unidades foram expulso da matriz. Eu assumi o risco e adicionei de volta os dois drives iniciados usando: %código% onde sdd e sdf foram a unidade inicial (também graças a algumas interferências para poupar).

    
por 30.12.2014 / 14:48