RAID : compréhension du disque de parité

Bonjour tout le monde,

dans le raid 5, il faut au minimum 3 disques durs, un disque A, un disque B et un disque C de parité.

Supposons une donnée de 100 Mo pour faire simple. Au cours de l’écriture, 50 Mo va être écrit dans le disque A, et
50 Mo (l’autre moitié) va être écrit dans le disque B.
Est-ce que le disque C de parité sert à recevoir les deux moitiés de donnée (càd 50 Mo + 50 Mo = 100 Mo) ?

Si c’est le cas, est-ce que ça veut dire que le disque C de parité doit avoir un espace de stockage 2 fois supérieur au disque A ou B ?

Merci d’avance, cordialement.

tomshardware.fr/articles/nas … 898-4.html

Article sans aucune saveur et sans réelles explications.

[quote=“fluo”]Bonjour tout le monde,

dans le raid 5, il faut au minimum 3 disques durs, un disque A, un disque B et un disque C de parité.

Supposons une donnée de 100 Mo pour faire simple. Au cours de l’écriture, 50 Mo va être écrit dans le disque A, et
50 Mo (l’autre moitié) va être écrit dans le disque B.
Est-ce que le disque C de parité sert à recevoir les deux moitiés de donnée (càd 50 Mo + 50 Mo = 100 Mo) ?

Si c’est le cas, est-ce que ça veut dire que le disque C de parité doit avoir un espace de stockage 2 fois supérieur au disque A ou B ?

Merci d’avance, cordialement.[/quote]

Je t’invite plutôt à lire la partie sur le RAID 5 cela explique la reconstruction de la donnée :
http://fr.wikipedia.org/wiki/RAID_%28informatique%29

[quote] xemple pratique : Considérons quatre disques durs A, B, C et D, de tailles identiques. Le système va enregistrer les premiers blocs en les répartissant sur les disques A, B et C comme en mode RAID 0 (striping) et, sur le disque D, le résultat de l’opération OU exclusif entre les autres disques (ici A xor B xor C). Ensuite le système va enregistrer les blocs suivants en les répartissant sur les disques D, A et B, puis la parité (soit D xor A xor B) sur le disque C, et ainsi de suite en faisant permuter circulairement les disques, à chaque bloc. La parité se trouve alors répartie sur tous les disques.

En cas de défaillance d'un disque, les données qui s'y trouvaient pourront être reconstituées par l'opération xor. En effet, l'opération XOR (\oplus) a la propriété suivante : si on considère N blocs de taille identique \scriptstyle A_1, A_2 \cdots A_N et si \scriptstyle A_1 \oplus A_2 \oplus \cdots A_N = X alors \scriptstyle X \oplus A_2 \oplus \cdots A_N = A_1, et de façon générale, \scriptstyle A_1 \oplus \cdots A_{k-1} \oplus X \oplus A_{k+1} \oplus \cdots A_N = A_k.
C'est-à-dire que n'importe quel bloc de données A_k perdu à cause d'un disque défaillant sur un RAID 5 de N+1 disques peut-être récupéré grâce au bloc X de données de contrôle.

On voit donc que si on veut écrire dans un bloc, il faut lire le bloc à modifier. Lire le bloc de parité de la bande. Écrire le bloc de données et le bloc de parité. L'opération xor permet heureusement de calculer la nouvelle parité sans avoir besoin de lire les N blocs de données de la bande. Augmenter le nombre de disques d'une grappe RAID 5 n'allonge donc pas le temps de lecture ou d'écriture. Cependant si plusieurs processus veulent écrire simultanément dans un ou plusieurs blocs de données d'une même bande la mise à jour du bloc de parité devient un point de blocage. Les processus concurrents sont suspendus à la libération du bloc de parité et de fait cela limite le débit d'écriture. Plus le nombre de disques d'une grappe RAID 5 augmente plus le temps de reconstruction d'un disque défaillant augmente. Puisque pour reconstituer le bloc manquant d'une bande il faut lire tous les autres blocs de la bande et donc tous les autres disques. [/quote]

Article sans aucune saveur et sans réelles explications.

[quote=“fluo”]Bonjour tout le monde,

dans le raid 5, il faut au minimum 3 disques durs, un disque A, un disque B et un disque C de parité.

Supposons une donnée de 100 Mo pour faire simple. Au cours de l’écriture, 50 Mo va être écrit dans le disque A, et
50 Mo (l’autre moitié) va être écrit dans le disque B.
Est-ce que le disque C de parité sert à recevoir les deux moitiés de donnée (càd 50 Mo + 50 Mo = 100 Mo) ?

Si c’est le cas, est-ce que ça veut dire que le disque C de parité doit avoir un espace de stockage 2 fois supérieur au disque A ou B ?

Merci d’avance, cordialement.[/quote]

Je t’invite plutôt à lire la partie sur le RAID 5 cela explique la reconstruction de la donnée :

[quote] xemple pratique : Considérons quatre disques durs A, B, C et D, de tailles identiques. Le système va enregistrer les premiers blocs en les répartissant sur les disques A, B et C comme en mode RAID 0 (striping) et, sur le disque D, le résultat de l’opération OU exclusif entre les autres disques (ici A xor B xor C). Ensuite le système va enregistrer les blocs suivants en les répartissant sur les disques D, A et B, puis la parité (soit D xor A xor B) sur le disque C, et ainsi de suite en faisant permuter circulairement les disques, à chaque bloc. La parité se trouve alors répartie sur tous les disques.

En cas de défaillance d'un disque, les données qui s'y trouvaient pourront être reconstituées par l'opération xor. En effet, l'opération XOR (\oplus) a la propriété suivante : si on considère N blocs de taille identique \scriptstyle A_1, A_2 \cdots A_N et si \scriptstyle A_1 \oplus A_2 \oplus \cdots A_N = X alors \scriptstyle X \oplus A_2 \oplus \cdots A_N = A_1, et de façon générale, \scriptstyle A_1 \oplus \cdots A_{k-1} \oplus X \oplus A_{k+1} \oplus \cdots A_N = A_k.
C'est-à-dire que n'importe quel bloc de données A_k perdu à cause d'un disque défaillant sur un RAID 5 de N+1 disques peut-être récupéré grâce au bloc X de données de contrôle.

On voit donc que si on veut écrire dans un bloc, il faut lire le bloc à modifier. Lire le bloc de parité de la bande. Écrire le bloc de données et le bloc de parité. L'opération xor permet heureusement de calculer la nouvelle parité sans avoir besoin de lire les N blocs de données de la bande. Augmenter le nombre de disques d'une grappe RAID 5 n'allonge donc pas le temps de lecture ou d'écriture. Cependant si plusieurs processus veulent écrire simultanément dans un ou plusieurs blocs de données d'une même bande la mise à jour du bloc de parité devient un point de blocage. Les processus concurrents sont suspendus à la libération du bloc de parité et de fait cela limite le débit d'écriture. Plus le nombre de disques d'une grappe RAID 5 augmente plus le temps de reconstruction d'un disque défaillant augmente. Puisque pour reconstituer le bloc manquant d'une bande il faut lire tous les autres blocs de la bande et donc tous les autres disques. [/quote][/quote]

Excuse moi il est vrai que tes explications sont sans doute supérieures eu égard à ta haute qualification…mea maxima culpa

As-tu comparé les deux liens ?

Dans lequel d’après toi on as une réel explication du fonctionnement de la parité et de la possible reconstruction de la donnée comme demandé par fluo.

Il n’est nullement question de compétences mais de pertinences dans le lien.

Non, il n’y a pas de disque de parité dans le RAID 5. La parité est répartie sur tous les disques actifs. Cela évite qu’un disque travaille plus que les autres.

Sans entrer dans les détails mathématiques (qui ne sont pas vraiment importants), pour un ensemble RAID 5 à 3 disques :
Un bloc de parité P est calculé à partir de blocs de données A et B. Les blocs A, B et P sont de même taille et stockés sur des disques différents. Chaque disque stocke à la fois des blocs A, B et P (de groupes différents évidemment). La combinaison des blocs A et P permet de recalculer le bloc B, et la combinaison des blocs B et P permet de recalculer le bloc A.

Pour un ensemble à plus de 3 disques, le bloc de parité est calculé à partir des blocs de données de tous les autres disques. Un bloc de données manquant peut être recalculé à partir de tous les autres blocs de données et du bloc de parité.

Merci pour toutes ces explications, je commence à piger le raid 5.

Avec 3 disques A, B, C, les données seront réparties circulairement par bloc de 512 octets sur 2 disques, et un bloc de parité sera calculé et écrit sur l’un des 3 disques. Ainsi, en cas de crash d’un disque, il est possible de reconstituer les blocs du disques crashé à partir des blocs des deux disques non-crashé.

Mais il y a truc qui me tracasse, si un disque est crashé, et donc hors service, comment il est possible d’écrire les données reconstituées dessus :doh: ?

Tu ne l’écris pas évidement :075

Si je ne m’abuse:

Si ton raid 5 se retrouve avec uniquement deux disques, il est dégradé;
Les lectures requierent le calcul du morceau manquant en utilisant la parité (ou pas, si A et B sont encore présents)
Les écritures ne générent pas de parité, seulement A et B sont écrits

On peut donc dire qu’un raid 5 dégradé est :

  • plus rapide en écriture qu’un raid 5 sain
  • plus lent en lecture qu’un raid 5 sain
    Et surtout, il n’y a plus protection contre une panne

Fonction OU exclusif (XOR)

Si tu supprime n’importe laquelle (une seule) des trois colonnes (disque) ci-dessous, tu pourra la reconstituer en appliquant la fonction XOR sur les données restantes.
0 0 0
0 1 1
1 0 1
1 1 0

Si tu supprime n’importe laquelle (une seule) des cinq colonnes (disque) ci-dessous, tu pourra la reconstituer en appliquant la fonction XOR sur les données restantes.
0 0 0 0 0
0 0 1 1 0
1 1 1 0 1
1 0 1 0 0
1 1 0 1 1
0 0 0 0 0

et ce pour autant de colonnes (disques) que tu veux, pourvu qu’un XOR sur l’ensemble des données de chaque ligne soit égal à 0.

Comme PascalHambourg a répondu en même temps que moi, je déplace mon message pour qu’il le voit aussi.

Les blocs élémentaires du RAID sont plus gros que la taille d’un secteur, pour une meilleure efficacité.

Les données manquantes sont reconstruite sur un nouveau disque remplaçant le disque défaillant.

[quote=“haleth”]Si ton raid 5 se retrouve avec uniquement deux disques, il est dégradé;
Les lectures requierent le calcul du morceau manquant en utilisant la parité (ou pas, si A et B sont encore présents)
Les écritures ne générent pas de parité, seulement A et B sont écrits[/quote]
Tu fais erreur. Les blocs de parité P étant répartis sur tous les disques, on continue à calculer et écrire des blocs P sur les deux disques restants.

[quote=“haleth”]On peut donc dire qu’un raid 5 dégradé est :

  • plus rapide en écriture qu’un raid 5 sain[/quote]
    Pas vraiment, puisqu’on continue à devoir calculer et écrire des blocs de parité sur les disques restants dans deux cas sur trois. Il n’y a que dans le cas où la parité est sur le disque manquant qu’on n’en a pas besoin.

[quote=“haleth”]Les écritures ne générent pas de parité, seulement A et B sont écrits

On peut donc dire qu’un raid 5 dégradé est :

  • plus rapide en écriture qu’un raid 5 sain
  • plus lent en lecture qu’un raid 5 sain
    Et surtout, il n’y a plus protection contre une panne[/quote]
    => ok, en suivant ta réponse, si un disque est crashé, les données futures seront écrites sur les 2 disques restants avec quand même écriture des blocs de parité sur ces 2 disques restant comme le précise PascalHamboug. Mais dans ce cas,les données antérieures au crash sont foutus, le système d’exploitation ne devrait plus fonctionner, donc aucune tolérance au panne ?

merci pour ces précisions

Dois-je comprendre que le type d’un bloc (A, B ou P) est prédictible ?

http://eshop.macsales.com/shop/hard-drives/sata/RAID_Guide/Learn_About_RAID_5

Ce lien est pas trop mal

eshop.macsales.com/Customized_Pa … raid5.html

et un cours en anglais

youtube.com/watch?v=nxkXNZlJDJc

L’arrangement des blocs An, Bn et Pn sur les disques sont définis à la création de l’ensemble RAID, si c’est ce que tu veux dire.

On n’écrit pas à la fois les deux blocs de données A et B et le bloc de parité P sur les deux disques restants.

  • Si le bloc A aurait dû être écrit sur le disque manquant, alors on écrit le bloc de données B et le bloc de parité P (permettant de reconstituer le bloc de données A) sur les deux disques restants.
  • Si le bloc B aurait dû être écrit sur le disque manquant, alors on écrit le bloc de données A et le bloc de parité P (permettant de reconstituer le bloc de données B) sur les deux disques restants.
  • Si le bloc de parité P aurait dû être écrit sur le disque manquant, alors on écrit les blocs de données A et B sur les deux disques restants.

Les seules données foutues sont celles du disque en panne, et comme elles sont redondantes avec les données des deux autres disques, rien n’est perdu.

Puisque je suis actuellement face à un choix, je me permets :

Si je comprends bien les explications de PascalHambourg, à partir du moment où, dans le cas d’une panne, l’on a un temps de réaction suffisamment rapide ( remplacement du disque dans les 24h disons ), le raid 5 est une solution fiable.

Tout à fait

Si tu cherches une solution plus résiliente, mais moins éprouvé, tu peux regarder du côté de Ceph. En cas de panne d’un disque, le système redevient complétement redondant en quelque minute (en fonction du nombre de disques disponibles).

Mais bon, ce n’est pas vraiment au même niveau qu’un raid5

On n’écrit pas à la fois les deux blocs de données A et B et le bloc de parité P sur les deux disques restants.

  • Si le bloc A aurait dû être écrit sur le disque manquant, alors on écrit le bloc de données B et le bloc de parité P (permettant de reconstituer le bloc de données A) sur les deux disques restants.
  • Si le bloc B aurait dû être écrit sur le disque manquant, alors on écrit le bloc de données A et le bloc de parité P (permettant de reconstituer le bloc de données B) sur les deux disques restants.
  • Si le bloc de parité P aurait dû être écrit sur le disque manquant, alors on écrit les blocs de données A et B sur les deux disques restants.

Les seules données foutues sont celles du disque en panne, et comme elles sont redondantes avec les données des deux autres disques, rien n’est perdu.[/quote]
=> Merci PascalHambourg, en fait tu veux dire que même si un disque est HS (hors service), le logiciel raid est capable de reconstituer pour l’utilisateur final les blocs manquants du disque défectueux, même si on n’a pas encore remplacer le disque défectueux par un nouveau ?

A+

Evidemment. Sans cela le RAID n’apporterait pas de redondance et n’aurait strictement aucun intérêt (à l’exception du RAID 0 qui n’apporte pas de redondance mais seulement de la performance). C’est la base, la raison d’être du RAID. J’espère qu’il n’était pas nécessaire de se farcir toute cette discussion pour en être convaincu.