O que significa o número “spare” do mdadm?

7

Eu criei um RAID 5 baseado em mdadm a partir de seis discos rígidos usando o seguinte comando:

# mdadm --create /dev/md0 --level=5 --raid-devices=5 \
/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 \
--spare-devices=1 /dev/sdg1

Eu esperava que o array tivesse um hot spare, ou seja, / dev / sdg1. No entanto, a verificação de mdadm --detail mostra 2 peças de reposição:

# mdadm --detail --scan 
ARRAY /dev/md0 metadata=1.2 spares=2 name=...

Além disso, o tamanho da matriz, conforme mostrado por df , é de 2 TB, o que corresponderia a apenas quatro dos meus discos de 500 GB sendo usados.

Então, qual é exatamente a semântica de --spare-devices ? A página man afirma que "especifica o número de dispositivos sobressalentes (eXtra) na matriz inicial.", Mas esse não parece ser o caso aqui.

    
por jstarek 29.08.2013 / 08:58

2 respostas

2

Por uma questão de clareza, vou agregar as informações dadas por Derobert e Alexandre Alves e alguns outros testes meus aqui:

O parâmetro mdadm do% p_de --spare-devices funciona como os estados da página do manual, ou seja, define o número de unidades "hot spare" em uma matriz. Um "hot spare", como na terminologia RAID normal, não tem nada a ver com as unidades extras presentes em uma matriz RAID 5 ou RAID 6 - é uma unidade extra destinada a assumir o controle assim que uma unidade na matriz falhou.

O número de unidades sobressalentes é fornecido no momento da criação da matriz. Mais tarde, pode ser verificado usando #mdadm --detail --scan .

No entanto, durante o breve período de inicialização de um RAID 5 baseado em mdadm, existe uma otimização, descrita em link , que faz com que uma unidade sobressalente adicional apareça na saída desse comando:

"Para o raid5 existe uma otimização: o mdadm pega um dos discos e o marca como 'sobressalente'; cria o array no modo degradado. O kernel marca o disco reserva como 'reconstrução' e começa a ler a partir do discos "bons", calcule a paridade e determine o que deve estar no disco reserva e depois grave nele. "

Após a inicialização da matriz, o número de peças de reposição reportadas retorna ao número selecionado no momento da criação.

    
por 30.08.2013 / 15:45
4

Essa saída está correta. Você criou um RAID 5 com 5 discos (apenas 4 deles serão "usados" para espaço). E você adicionou uma unidade extra de reserva.

Então você realmente tem um RAID 5 que permite uma falha de disco + uma unidade extra de reserva.

Se o que você quer é realmente o RAID 5 com 6 discos e tem o espaço de 5 discos, então você precisa alterar o seu comando para:

mdadm --create /dev/md0 --level=5 --raid-devices=6 \
/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1

Mas, neste caso, você pode tolerar apenas uma falha de disco de acordo com as especificações do RAID 5.

EDIT: Adicionando o link da página oficial do ataque: Você pode ver um ataque 5 com 6 discos e afirma que sobressalente = 1: Criação da matriz inicial

UPDATE: Eu decidi criar uma raid 5 no meu sistema e o valor sobressalente desaparece quando a matriz estiver em um estado limpo:

   Raid Devices : 4
  Total Devices : 4
              State : clean, degraded, recovering
     Active Devices : 3
    Working Devices : 4
     Failed Devices : 0
      Spare Devices : 1

Limpar estado:

   Raid Devices : 4
  Total Devices : 4
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

Portanto, é como o comentário do OP, durante a criação do raid inicial 5, ele tem o drive reserva até que o build / sync do raid seja concluído.

    
por 29.08.2013 / 09:21