O que significa o número "sobressalente" do mdadm?

8

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, a saber / dev / sdg1. No entanto, a verificação mdadm --detailmostra 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, como mostrado por, dfé de 2 TB, o que corresponderia a apenas quatro das minhas unidades de 500 GB sendo usadas.

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

jstarek
fonte
1
O RAID 5 usa a paridade de um dispositivo. Não sei, e é por isso que estou fazendo um comentário, mas isso poderia ter algo a ver com isso? ( mdadm --detailincluindo a unidade de paridade na contagem de "peças de reposição"). Você pode verificar isso criando um array RAID 6 sem hot spare; se minha teoria for válida, ela também mostrará peças = 2.
um CVn 29/08/13
2
Na terminologia RAID padrão, um sobressalente é apenas um disco praticamente inativo que pode ser acionado automaticamente para ajudar a reconstruir a matriz após a falha de outro disco. Um disco de paridade não é um disco sobressalente. Além disso, o número de discos sobressalentes não é o número de discos que podem falhar antes que seus dados estejam em risco. (O número não está bem definido A quatro discos RAID 10 pode suportar até 2 falhas de disco, mas também poderia ser morto com 2 falhas de disco..)
200_success
4
Eu estou supondo que você está vendo duas peças, porque a sua ainda está fazendo o init-lo variedade inicial é "reconstruir" para uma das duas peças. Feito isso (verifique o progresso até cat /proc/mdstat), acho que você verá o número 1. esperado
derobert
@derobert, você está certo: Depois que a reconstrução inicial foi concluída, obtive os metadados ARRAY / dev / md0 = 1,2 sobressalentes = 1 nome = [...] do mdadm --detail --scan e uma informação equivalente em / proc / mdstat.
Jstarek

Respostas:

4

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

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

Se o que você deseja é realmente RAID 5 com 6 discos e tem espaço para 5 discos, você precisa alterar 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, conforme as especificações do RAID 5.

EDIT: Adicionando o link da página oficial de invasão: Você pode ver uma invasão 5 com 6 discos e ela indica como sobressalente = 1: Criação inicial da matriz

ATUALIZAÇÃO: Decidi criar um ataque 5 no meu sistema e o valor sobressalente desaparece quando a matriz está 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

Estado limpo:

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

Assim, como no comentário do OP, durante a criação inicial do RAID 5, ele possui a unidade sobressalente até que a compilação / sincronização do RAID seja concluída.

BitsOfNix
fonte
1
Eu acho que as principais informações da página wiki a que você vinculou são as seguintes: "Para o raid5, há uma otimização: o mdadm pega um dos discos e o marca como 'sobressalente'; em seguida, cria o array no modo degradado". - isso se encaixaria bem na observação feita por derobert nos comentários acima. Além disso, receio que você tenha entendido mal a minha pergunta: eu não queria ter 5 unidades no espaço. Mencionar a 2 TB foi apenas uma observação.
Jstarek
3

Por uma questão de clareza, agregarei as informações fornecidas por derobert e Alexandre Alves e mais alguns testes meus aqui:

mdadmO --spare-devicesparâmetro de funciona como afirma a 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 que deve 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, há uma otimização, descrita em https://raid.wiki.kernel.org/index.php/Initial_Array_Creation , que faz com que uma unidade sobressalente adicional apareça em a saída desse comando:

"Para o raid5, há uma otimização: o mdadm pega um dos discos e o marca como 'sobressalente'; em seguida, cria o array no modo degradado. O kernel marca o disco sobressalente como 'reconstruindo' e começa a ler o 'bom' discos, calcule a paridade e determine o que deve estar no disco sobressalente e, em seguida, apenas grave nele. "

Após a inicialização da matriz, o número de sobressalentes relatados volta ao número selecionado no momento da criação.

jstarek
fonte