O RAID 5 construído usando o mdadm inicia no modo degradado. Isso é normal?

3

Estou configurando um novo conjunto de unidades em uma instalação do CentOS 7 (10x1TB), mas estou vendo algo irritante durante o processo de criação.

Quando eu tento construir o array, ele é reconhecido imediatamente, mas indica um estado de erro (degradado, um disco ausente).

O comando de compilação completo foi:

mdadm --create /dev/md1 --level=5 --raid-devices=9 /dev/sde1 /dev/sdg1 /dev/sdc1 /dev/sdd1 /dev/sdf1 /dev/sdl1 /dev/sdj1 /dev/sdi1 /dev/sdm1 --spare-devices=1 /dev/sdk1

No entanto, tentei o mesmo sem a unidade sobressalente:

mdadm --create /dev/md1 --level=5 --raid-devices=9 /dev/sde1 /dev/sdg1 /dev/sdc1 /dev/sdd1 /dev/sdf1 /dev/sdl1 /dev/sdj1 /dev/sdi1 /dev/sdm1

então variantes de um array de três drives:

mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sdj1 /dev/sdi1 /dev/sdm1

mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sde1 /dev/sdg1 /dev/sdc1

Em todos os casos, o novo array inicializa com o tamanho livre esperado (8TB e 2TB nas variantes.) O array também é utilizável durante a reconstrução, eu posso ler e gravar arquivos.

Curiosamente, ao compilar com o sobressalente, o drive sobressalente mostra significativa atividade de leitura / gravação, o que implica que de alguma forma ele participa da compilação.

Basicamente, isso é normal e, se não, o que estou fazendo de errado?

Editar:

Esta é a saída de: mdadm --detail /dev/md1

/dev/md1:
        Version : 1.2
  Creation Time : Sun Jan  4 00:00:22 2015
     Raid Level : raid5
     Array Size : 7813042176 (7451.10 GiB 8000.56 GB)
  Used Dev Size : 976630272 (931.39 GiB 1000.07 GB)
   Raid Devices : 9
  Total Devices : 10
    Persistence : Superblock is persistent

    Update Time : Sun Jan  4 00:05:33 2015
          State : clean, degraded, recovering 
 Active Devices : 8
Working Devices : 10
 Failed Devices : 0
  Spare Devices : 2

         Layout : left-symmetric
     Chunk Size : 512K

 Rebuild Status : 0% complete

           Name : localhost.localdomain:1  (local to host localhost.localdomain)
           UUID : f2d4f470:9d5022bf:a397b5a0:45b94d28
         Events : 72

    Number   Major   Minor   RaidDevice State
       0       8       65        0      active sync   /dev/sde1
       1       8       97        1      active sync   /dev/sdg1
       2       8       33        2      active sync   /dev/sdc1
       3       8       49        3      active sync   /dev/sdd1
       4       8       81        4      active sync   /dev/sdf1
       5       8      177        5      active sync   /dev/sdl1
       6       8      145        6      active sync   /dev/sdj1
       7       8      129        7      active sync   /dev/sdi1
      10       8      193        8      spare rebuilding   /dev/sdm1

       9       8      161        -      spare   /dev/sdk1
    
por J Collins 04.01.2015 / 00:36

1 resposta

3

Sim, isso é normal. Quando você cria o array pela primeira vez, os blocos de paridade precisam ser calculados e escritos, o que é o que você está vendo. Se você sabe que as unidades já estão preenchidas com zeros, você pode usar a opção --assume-clean para direcionar mdadm para pular a ressincronização inicial. Se as unidades não estiverem realmente preenchidas com zeros, executar uma verificação de paridade na matriz no futuro informará muitos erros, pois você nunca calculou a paridade correta.

Além disso, não é recomendável criar uma matriz tão grande usando o raid5, pois a probabilidade de uma segunda unidade falhar antes de poder ser reconstruída está ficando alta. Você pode querer usar o raid6.

    
por 04.01.2015 / 01:40