mdadm: Reativando a matriz RAID6 após o desligamento incorreto

0

Eu tenho um array RAID6 de sete discos em um servidor de arquivos. O servidor sofreu uma falha e uma reinicialização forçada foi necessária, resultando em um desligamento incorreto. Observe que a atividade de E / S provavelmente estava ocorrendo na matriz no momento, portanto, suponho que a matriz precise ser verificada para resolver possíveis inconsistências. Eu reiniciei o servidor e, de acordo com / proc / mdstat, a matriz está inativa, mas todas as unidades aparecem nela com um (S) ao lado delas. (Spares?) De qualquer forma, qual é a ação apropriada a ser tomada para reativar e verificar o array? (Claro que, assim que o array estiver funcionando e consistente novamente, vou verificar o sistema de arquivos no array, mas eu só preciso de ajuda para descobrir o caminho certo para fazer o array funcionar novamente.)

/ proc / mdstat

Personalities : 
md0 : inactive sdf1[4](S) sdh1[1](S) sdg1[3](S) sdc1[7](S) sdd1[8](S) sdb1[6](S) sda1[5](S)
      13674579968 blocks super 1.2

unused devices: <none>

mdadm --examine / dev / sd {a, b, c, d, f, g, h} 1

/dev/sda1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 05e69c50:388afb83:1418f18e:a393cb21
           Name : dende:0  (local to host dende)
  Creation Time : Sat May 26 17:14:56 2012
     Raid Level : raid6
   Raid Devices : 7

 Avail Dev Size : 3907022848 (1863.01 GiB 2000.40 GB)
     Array Size : 9767554560 (9315.07 GiB 10001.98 GB)
  Used Dev Size : 3907021824 (1863.01 GiB 2000.40 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
   Unused Space : before=1968 sectors, after=1024 sectors
          State : active
    Device UUID : 14691340:39f90733:090f8d1d:992b9aa7

    Update Time : Sun Nov 23 18:20:24 2014
       Checksum : cd065d9e - correct
         Events : 63764

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 6
   Array State : .AAAAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdb1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 05e69c50:388afb83:1418f18e:a393cb21
           Name : dende:0  (local to host dende)
  Creation Time : Sat May 26 17:14:56 2012
     Raid Level : raid6
   Raid Devices : 7

 Avail Dev Size : 3907022848 (1863.01 GiB 2000.40 GB)
     Array Size : 9767554560 (9315.07 GiB 10001.98 GB)
  Used Dev Size : 3907021824 (1863.01 GiB 2000.40 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
   Unused Space : before=1968 sectors, after=1024 sectors
          State : active
    Device UUID : 01c26529:75542d96:c966fe26:f580dcdf

    Update Time : Sun Nov 23 18:20:24 2014
       Checksum : 5b31bee5 - correct
         Events : 63764

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 5
   Array State : .AAAAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdc1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 05e69c50:388afb83:1418f18e:a393cb21
           Name : dende:0  (local to host dende)
  Creation Time : Sat May 26 17:14:56 2012
     Raid Level : raid6
   Raid Devices : 7

 Avail Dev Size : 3907022848 (1863.01 GiB 2000.40 GB)
     Array Size : 9767554560 (9315.07 GiB 10001.98 GB)
  Used Dev Size : 3907021824 (1863.01 GiB 2000.40 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
   Unused Space : before=1968 sectors, after=1024 sectors
          State : active
    Device UUID : 24aa47a3:9f0a123e:f0ce78b2:774359bd

    Update Time : Sun Nov 23 18:20:24 2014
       Checksum : e5ef87dc - correct
         Events : 63764

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 4
   Array State : .AAAAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdd1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 05e69c50:388afb83:1418f18e:a393cb21
           Name : dende:0  (local to host dende)
  Creation Time : Sat May 26 17:14:56 2012
     Raid Level : raid6
   Raid Devices : 7

 Avail Dev Size : 3907022848 (1863.01 GiB 2000.40 GB)
     Array Size : 9767554560 (9315.07 GiB 10001.98 GB)
  Used Dev Size : 3907021824 (1863.01 GiB 2000.40 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
   Unused Space : before=1968 sectors, after=1024 sectors
          State : active
    Device UUID : e2983a0c:0bc3b3d4:b8d018c7:fb547dff

    Update Time : Sun Nov 23 18:20:24 2014
       Checksum : 3c484254 - correct
         Events : 63764

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 3
   Array State : .AAAAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdf1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 05e69c50:388afb83:1418f18e:a393cb21
           Name : dende:0  (local to host dende)
  Creation Time : Sat May 26 17:14:56 2012
     Raid Level : raid6
   Raid Devices : 7

 Avail Dev Size : 3907022848 (1863.01 GiB 2000.40 GB)
     Array Size : 9767554560 (9315.07 GiB 10001.98 GB)
  Used Dev Size : 3907021824 (1863.01 GiB 2000.40 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
   Unused Space : before=1968 sectors, after=1024 sectors
          State : active
    Device UUID : 82f35d80:31b62631:22102161:dda95f56

    Update Time : Sun Nov 23 18:18:13 2014
       Checksum : fdc823df - correct
         Events : 63764

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 0
   Array State : AAAAAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdg1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 05e69c50:388afb83:1418f18e:a393cb21
           Name : dende:0  (local to host dende)
  Creation Time : Sat May 26 17:14:56 2012
     Raid Level : raid6
   Raid Devices : 7

 Avail Dev Size : 3907022848 (1863.01 GiB 2000.40 GB)
     Array Size : 9767554560 (9315.07 GiB 10001.98 GB)
  Used Dev Size : 3907021824 (1863.01 GiB 2000.40 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
   Unused Space : before=1968 sectors, after=1024 sectors
          State : active
    Device UUID : 2612c125:cb5d4712:4777122a:46b5e6c7

    Update Time : Sun Nov 23 18:20:24 2014
       Checksum : bec55d2b - correct
         Events : 63764

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 2
   Array State : .AAAAAA ('A' == active, '.' == missing, 'R' == replacing)
/dev/sdh1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 05e69c50:388afb83:1418f18e:a393cb21
           Name : dende:0  (local to host dende)
  Creation Time : Sat May 26 17:14:56 2012
     Raid Level : raid6
   Raid Devices : 7

 Avail Dev Size : 3907022848 (1863.01 GiB 2000.40 GB)
     Array Size : 9767554560 (9315.07 GiB 10001.98 GB)
  Used Dev Size : 3907021824 (1863.01 GiB 2000.40 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
   Unused Space : before=1968 sectors, after=1024 sectors
          State : active
    Device UUID : 8cb08975:ff61e873:997d5d58:0559d0f9

    Update Time : Sun Nov 23 18:20:24 2014
       Checksum : d063a9d5 - correct
         Events : 63764

         Layout : left-symmetric
     Chunk Size : 512K

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

Eu vejo que / dev / sdf1 tem um estado de matriz diferente dos outros dispositivos, o que se destaca para mim como algo que deve ser significativo, mas quanto ao que esse significado é Eu não tenho ideia. Eu realmente aprecio qualquer ajuda que vocês gentis senhoras e senhores possam oferecer. :-)

EDIT: Tentei o conselho no comentário abaixo sobre parar o array e montagem. O mdadm relata que ele iniciou / dev / md0 com sucesso com 7 drives, e de acordo com o / proc / mdstat, o array agora está ressincronizando (o que obviamente levará um tempo). Eu estou supondo que isso significa que viu um dispositivo estava um pouco desatualizado e está restaurando-o usando os outros dispositivos? E isso significa que as coisas devem ser boas no lado do RAID agora? (Ainda será verificar o sistema de arquivos antes de fazer qualquer coisa com o array.)

nonoitall
fonte
Experimentar mdadm --stop md0; então mdadm --assemble --uuid=05e69c50:388afb83:1418f18e:a393cb21 para ver se ele montará o array corretamente, mesmo que um componente (sdf1) seja deixado de fora; o tempo de atualização nesse disco é menor que o restante. Mostre a saída que isso dá (edite sua pergunta para adicioná-la). EDIT: hmm, eu só notei o seu mdstat mostrar sem personalidades; você provavelmente precisa modprobe raid456
wurtel
Obrigado pela dica. Tentei seu conselho e postei os resultados acima.
nonoitall
Você fez o modprobe raid456 ou isso não era necessário? Faz /proc/mdstat agora mostra personalidades?
wurtel
Sim, eu fiz isso antes de parar o array e, subsequentemente, os RAIDs 4, 5 e 6 apareceram em personalidades.
nonoitall

Respostas:

1

Aparentemente, no momento em que o array foi montado, a personalidade necessária do RAID 6 ainda não estava disponível, devido ao módulo raid456 não sendo carregado ainda.

Parar a matriz montada incorretamente, carregar o módulo e montá-lo novamente deve ajudar:

mdadm --stop md0
modprobe raid456
mdadm --assemble --uuid=05e69c50:388afb83:1418f18e:a393cb21

O UUID é o que está listado como UUID de matriz no mdadm --examine saída.

Dependendo de como o seu sistema inicializa, você provavelmente precisa raid456 módulo é carregado antes da matriz md ser montada.

Dica: em matrizes maiores, pode ser útil adicionar um bitmap de intenção de gravação ao dispositivo para que, após uma falha como a que você experimentou, a matriz inteira não precise ser ressincronizada; apenas aquelas partes que estão desatualizadas. Você pode fazer isso com o seguinte comando:

mdadm --grow --bitmap internal /dev/md0

O bitmap também pode ser especificado durante a criação, o comando acima é para adicionar um bitmap após o fato. Um bitmap pode ser removido especificando none ao invés de internal.

wurtel
fonte
O sistema entrou em uma espécie de modo de recuperação devido à indisponibilidade do array, e acho que foi por esse motivo que o módulo foi descarregado. A matriz terminou de ressincronizar, montei e executei um scrub (btrfs) e nenhum erro apareceu, então acho que está tudo bem. O bitmap interno requer mais espaço? (Se eu simplesmente adicionar o bitmap com o comando acima, o dispositivo RAID diminuirá um pouco para dar lugar a ele?) Eu só quero ter certeza e encolher o sistema de arquivos subjacente de antemão, se necessário.
nonoitall
1
O bitmap interno usa o espaço disponível que já está disponível, o conteúdo da matriz não é tocado. Também é possível usar um bitmap separado em outro dispositivo, mas isso não oferece muita vantagem. Observe também que tal bitmap é útil apenas em matrizes grandes, como em dispositivos menores, a ressincronização de todo o array não levará muito tempo e o uso de um bitmap incorrerá em uma sobrecarga (bem pequena).
wurtel