Aller au contenu
Home » Comment fonctionne le système Unraid Parity ? – Explication de Unraid Parity

Comment fonctionne le système Unraid Parity ? – Explication de Unraid Parity

Advertisements

Some of the links shared in this post are affiliate links. If you click on the link and make a purchase, we will receive an affiliate commission at no additional cost to you.


La parité est utilisée par unRAID pour protéger contre la perte de données. Si un lecteur du tableau tombe en panne, les données des autres lecteurs peuvent être combinées avec les données de parité pour reconstruire les données manquantes.

Pourquoi une parité ? Parce qu’il n’existe que deux types de disques durs dans le monde :

  • Disques durs déjà en panne
  • Les disques durs qui ne sont pas encore tombés en panne, mais qui ont juste besoin d’un peu plus de temps avant de tomber en panne.

Comment fonctionne la parité ?

En général, un processus de parité est conçu pour détecter un seul changement de bit dans un ensemble donné de bits, en ajustant la valeur d’un bit ajouté de manière à forcer une sommation sur cet ensemble de bits à une valeur connue. Le bit ajouté est appelé bit de parité.

Avec unRAID, les bits de parité sont stockés sur un lecteur de parité indépendant des lecteurs de données. Ce bit de parité fonctionne grâce à l’ensemble de bits dans la même position binaire relative sur chaque lecteur. Ainsi, le 57ème bit du lecteur de parité est le bit de parité pour le 57ème bit de tous les lecteurs de données. Un contrôle de parité de la position du 57ème bit additionne donc tous les 57ème bits de tous les lecteurs, y compris le lecteur de parité, et vérifie si la somme est un nombre PARAIT. Si la valeur renvoyée n’est pas EVEN, le bit de parité est commuté pour que le contrôle de parité renvoie un nombre EVEN.

Pourquoi un nombre pair ? unRAID utilise une “parité paire”, ce qui signifie simplement que le processus de sommation (en utilisant une opération mathématique appelée “OU exclusif” ou “XOR”) sur cet ensemble de bits doit fournir une valeur qui est un nombre PARAIRE.

Les données numériques sont stockées sous la forme d’un 1 ou d’un 0 :

Si tu as 4 lecteurs avec des valeurs binaires de 1,1,1,1, la parité est 0 (1+1+1+1+0= pair). Si les valeurs de bit sont 1,0,0,0, la parité est 1 (1+0+0+0+1=paire).

Lorsqu’un disque est ajouté à un tableau unRAID protégé par la parité, il est d’abord effacé en écrivant des zéros dans tous les bits de tous les secteurs de ce disque. Une valeur nulle n’a pas d’influence sur la parité. Dès que le nouveau disque dur est plein de zéros, unRAID peut l’insérer sans problème dans le tableau sans devoir rétablir la parité. De cette façon, plusieurs disques durs peuvent être ajoutés en même temps.

Reconstruction des données

Il n’y a que deux situations dans lesquelles les données de parité d’unRAID sont utilisées pour reconstruire des données :

  • si un support de données est reconstruit ; et
  • si un secteur défectueux est détecté

A ces moments, tous les disques (y compris la parité) sont lus pour reconstruire les données qui doivent être écrites sur le disque cible. Comme la somme des bits est toujours paire, unRAID peut reconstruire chaque UN élément de données manquant (la parité ou un disque de données), tant que les autres éléments sont corrects.

Dans les deux exemples ci-dessus, disons que la 2.

  • 1+x+1+1+0=pair, x doit être égal à 1
  • 1+x+0+0+1=pair, x doit être égal à 0

Comme la parité est si importante pour la reconstruction des données, tu devrais t’assurer que la parité est correcte en effectuant régulièrement des contrôles de parité.

Si tu retires physiquement un seul disque de ton tableau, tu peux toujours lire et écrire dessus. Il est simulé en lisant tous les autres disques de données et la parité. De la même manière, le disque de parité est mis à jour si nécessaire lorsque l’on écrit sur le disque simulé. Si tu montes maintenant un disque de remplacement, il peut être entièrement reconstruit à partir du nouveau contenu reconstruit sur la base de la parité et de tous les autres disques de données.

Contrôle de parité

Lors d’une synchronisation de parité, le système lit tous les disques de données et écrit la parité calculée sur le disque de parité.

Lors d’un contrôle de parité, le système lit tous les disques de données et le disque de parité et compare la parité calculée à la parité enregistrée. Cette opération a un code :

CORRECT - si une erreur de parité se produit, écrire le disque de parité avec la parité calculée et le signaler dans syslog.
 NOCORRECT - juste un rapport dans syslog

Seules les 100 premières erreurs de contrôle de parité sont signalées. (Les messages dans le journal du système sont générés pour chaque adresse de secteur où une correspondance de parité incorrecte se produit. Ainsi, si tu effectues un contrôle de parité sur un tableau qui n’a pas de parité valide, le journal système deviendrait rapidement très volumineux, d’où la limitation à 100 messages).

Ces erreurs de parité sont appelées “erreurs de synchronisation” ou “erreurs de synchronisation de la parité”. Elles indiquent combien d’adresses de bloc ont été trouvées pour lesquelles la parité calculée n’a pas été “synchronisée” avec la parité enregistrée (c’est-à-dire qu’elle correspond). (Un ‘bloc’ est composé de 4096 octets. C’est aussi la taille de la PAGE Linux – l’unité de base des E/S).

Un disque de parité valide signifie qu’il existe un disque de parité et qu’à un moment donné dans le passé, une synchronisation de parité a été achevée sans erreur (ou abandon). Dès que la synchronisation de la parité est terminée, le disque de parité est toujours “valide” (et a un point vert). Valide” dans ce sens signifie qu’il peut être utilisé pour reconstruire un disque de données en panne.

(En fait, ‘valide’ est un statut qui s’applique à tous les disques de la matrice, aussi bien aux disques de données qu’au disque de parité. Si tous les disques du tableau sont valides sauf un, cela signifie que le disque non valide peut être reconstruit avec les données des autres).

Si un contrôle/une correction de parité révèle des erreurs, pourquoi le disque de parité est-il toujours marqué comme “valide” ? Si le système marque le disque de parité comme “non valide” à cause d’une poignée d’erreurs de parité et qu’ensuite un autre disque tombe en panne, cet autre disque ne peut plus être reconstruit (car il y aurait maintenant deux disques non valides dans le tableau). L’ensemble du disque de parité n’est donc pas marqué comme invalide en raison des erreurs de parité constatées. Bien sûr, un utilisateur peut à tout moment déclarer la parité invalide en annulant son attribution.

Une fois la parité calculée, il ne devrait y avoir que 2 possibilités d’erreurs de contrôle de parité :

  • Un arrêt non propre, c’est-à-dire une coupure de courant soudaine ou une réinitialisation du système. Dans ce cas, des écritures sur les disques de parité et/ou de données peuvent être en attente et ne pas être terminées, de sorte que la bande correspondante présente une parité incohérente.
  • Une erreur matérielle non détectée (par exemple, une corruption silencieuse de la mémoire).

Disque dur de parité dans Unraid

Taille

La taille du disque de parité doit être égale ou supérieure à celle du plus grand disque de données.

Performance

L’utilisation de la parité pour protéger tes données affecte inévitablement les performances lorsque tu écris des données sur le tableau. Chaque fois que l’on écrit sur un disque de données, le disque de parité doit également être mis à jour. Chaque écriture sur un disque de données unRAID protégé par la parité entraîne 4 opérations sur le disque : Lecture et écriture pour la parité ainsi que lecture et écriture pour les données. Le plateau de chaque disque doit faire un tour complet après la lecture pour repositionner la tête du disque sur le secteur dans lequel on écrit.

L’écriture sur le tableau unRAID est également limitée par le plus lent (vitesse de rotation) des lecteurs impliqués. Si seul le lecteur de parité est un lecteur à 7200 tr/min, tu es toujours limité par la vitesse du lecteur de données. Tu ne remarqueras aucune amélioration de la vitesse d’écriture, à moins que plusieurs disques de données plus lents soient écrits en même temps et qu’un disque de parité plus rapide à 7200 tr/min essaie de suivre les deux.

Double parité

Dans les grandes baies, la “double parité”, c’est-à-dire la possibilité d’avoir un deuxième disque dur de parité, n’est pas simplement un miroir du premier. Cela permet deux pannes de disque simultanées sans perte de données.

Dans un système de redondance P + Q (comme dans un système RAID-6), il y aurait deux disques de redondance : ‘P’, la parité XOR ordinaire, et ‘Q’, qui est un code Reed-Solomon. Cela permet à unRAID de récupérer après deux erreurs de disque avec un impact minimal sur les performances. (Nécessite de préciser que cela est effectivement utilisé).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Mastodon