Que signifie le numéro «de rechange» de mdadm?


8

J'ai créé un RAID 5 basé sur mdadm à partir de six disques durs à l'aide de la commande suivante:

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

Je m'attendais à ce que le tableau ait un disque de secours, à savoir / dev / sdg1. Cependant, la vérification mdadm --detailmontre 2 pièces de rechange:

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

En outre, la taille de la baie indiquée par dfest de 2 To, ce qui correspondrait à seulement quatre de mes disques de 500 Go utilisés.

Alors, quelle est exactement la sémantique de --spare-devices? La page de manuel indique qu'il "spécifie [s] le nombre de périphériques de rechange (eXtra) dans la matrice initiale", mais cela ne semble pas être le cas ici.


1
RAID 5 utilise la valeur de parité d'un périphérique. Je ne sais pas, c'est pourquoi je fais ceci un commentaire, mais cela pourrait-il avoir quelque chose à voir avec ça? ( mdadm --detaily compris le lecteur de parité dans le nombre de "pièces de rechange".) Vous pouvez le vérifier en créant une matrice RAID 6 sans disque de secours; si ma théorie est vraie, elle montrera également des pièces de rechange = 2.
un CVn

2
Dans la terminologie RAID standard, un disque de secours est juste un disque principalement inactif et vierge qui peut être automatiquement mis en action pour aider à reconstruire la matrice après la défaillance d'un autre disque. Un disque de parité n'est pas un disque de rechange. En outre, le nombre de disques de rechange n'est pas le nombre de disques qui peuvent échouer avant que vos données ne soient en danger. (Le nombre n'est pas bien défini. Un RAID 10 à quatre disques peut gérer jusqu'à 2 défaillances de disque, mais il peut également être mort avec 2 défaillances de disque.)
200_success

4
Je suppose que vous voyez deux pièces de rechange, car il continue de faire l'initialisation initiale du tableau — il est en train de "reconstruire" sur l'une des deux pièces de rechange. Une fois cela fait (vérifiez les progrès d'ici cat /proc/mdstat), je pense que vous verrez le 1. attendu
derobert

@derobert, vous avez raison: une fois la reconstruction initiale terminée, j'ai obtenu les métadonnées ARRAY / dev / md0 = 1,2 pièces de rechange = 1 nom = [...] de mdadm --detail --scan et une information équivalente de / proc / mdstat.
jstarek

Réponses:


4

Cette sortie est correcte. Vous avez créé un RAID 5 avec 5 disques (seuls 4 d'entre eux seront "utilisés" pour l'espace). Et vous avez ajouté un disque de rechange supplémentaire.

Vous disposez donc en fait d'un RAID 5 qui permet une panne de disque + un disque de rechange supplémentaire.

Si ce que vous voulez est en fait RAID 5 avec 6 disques et avoir l'espace de 5 disques, vous devez changer votre commande en:

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

Mais dans ce cas, vous ne pouvez tolérer qu'une seule défaillance de disque selon les spécifications de RAID 5.

EDIT: Ajout du lien à partir de la page officielle de raid: Vous pouvez voir un raid 5 avec 6 disques et il indique rechange = 1: Création de la matrice initiale

MISE À JOUR: J'ai décidé de créer un raid 5 dans mon système et la valeur de réserve disparaît une fois que la baie est dans un état propre:

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

État propre:

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

C'est donc comme le commentaire OP, pendant la création initiale du raid 5, il a le disque de rechange jusqu'à ce que la construction / synchronisation du raid soit terminée.


1
Je pense que les informations clés de la page wiki à laquelle vous avez lié sont les suivantes: "Pour raid5, il y a une optimisation: mdadm prend l'un des disques et le marque comme" de rechange "; il crée ensuite le tableau en mode dégradé." - cela cadrerait bien avec l'observation faite par derobert dans les commentaires ci-dessus. En dehors de cela, je crains que vous n'ayez mal compris ma question: je ne voulais pas avoir 5 disques d'espace. La mention des 2 To n'était qu'une observation.
jstarek

3

Par souci de clarté, je vais regrouper les informations fournies par derobert et Alexandre Alves et quelques autres tests de la mienne ici:

mdadmLe --spare-devicesparamètre fonctionne comme l'indique la page de manuel, c'est-à-dire qu'il définit le nombre de disques "hot spare" dans un module RAID. Un «disque de secours», comme dans la terminologie RAID normale, n'a rien à voir avec les disques supplémentaires présents dans une matrice RAID 5 ou RAID 6 - c'est un disque supplémentaire destiné à prendre le relais dès qu'un disque dans la matrice a échoué.

Le nombre de disques de rechange est indiqué au moment de la création de la baie. Plus tard, il peut être vérifié à l'aide de #mdadm --detail --scan.

Cependant, pendant la brève période d'initialisation d'un RAID 5 basé sur mdadm, une optimisation, décrite dans https://raid.wiki.kernel.org/index.php/Initial_Array_Creation , fait apparaître un disque de rechange supplémentaire dans la sortie de cette commande:

"Pour raid5, il y a une optimisation: mdadm prend l'un des disques et le marque comme" de rechange "; il crée ensuite le tableau en mode dégradé. Le noyau marque le disque de rechange comme" reconstruit "et commence à lire à partir du" bon " disques, calcule la parité et détermine ce qui doit se trouver sur le disque de rechange, puis y écrit. "

Une fois l'initialisation de la baie terminée, le nombre de pièces de rechange signalées revient au nombre sélectionné au moment de la création.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.