RAID5 est-il plus robuste que RAID1

12

Je suis sur le point de remplacer une ancienne matrice RAID5 matérielle par une matrice RAID1 logicielle Linux. Je parlais à un ami et il a affirmé que RAID5 était plus robuste que RAID1.

Son affirmation était qu'avec RAID5, lors de la lecture, les données de parité étaient lues pour s'assurer que tous les disques renvoyaient les données correctes. Il a en outre affirmé que sur RAID1, les erreurs survenant sur un disque passeraient inaperçues car aucune vérification de ce type n'est effectuée avec RAID1.

Je peux voir comment cela pourrait être vrai, mais je peux aussi voir que tout dépend de la façon dont les systèmes RAID en question sont mis en œuvre. Certes , un système RAID5 ne dispose à lire et à vérifier les données de parité sur une lecture et un système RAID1 pourrait bien se lire de tous les disques en lecture pour vérifier qu'ils étaient tous détiennent les mêmes données et donc atteindre le même niveau de robustesse ( avec une perte de performance correspondante).

La question est donc de savoir ce que font réellement les systèmes RAID5 / RAID1 dans le monde réel. Les systèmes RAID5 vérifient-ils les données de parité lors des lectures? Existe-t-il des systèmes RAID1 qui lisent sur tous les disques et comparent les données lues?

andynormancx
la source

Réponses:

22

RAID-5 est une solution de tolérance aux pannes, pas une solution d'intégrité des données .

N'oubliez pas que RAID signifie Redundant Array of Inexpensive Disks . Les disques sont l'unité atomique de redondance - RAID ne se soucie pas vraiment des données. Vous achetez des solutions qui utilisent des systèmes de fichiers comme WAFL ou ZFS pour gérer la redondance et l'intégrité des données.

Le contrôleur RAID (matériel ou logiciel) ne vérifie pas la parité des blocs au moment de la lecture. Il s'agit d'un risque majeur lié à l'exécution de RAID-5 - si vous rencontrez une panne partielle de média sur un lecteur (une situation où un mauvais bloc n'est pas marqué "mauvais"), vous êtes maintenant dans une situation où vos données ont été silencieusement corrompu.

Le RAID-Z / ZFS de Sun fournit en fait une intégrité des données de bout en bout , et je soupçonne que d'autres systèmes de fichiers et systèmes RAID fourniront cette fonctionnalité à l'avenir, car le nombre de cœurs disponibles sur les processeurs continue d'augmenter.

Si vous utilisez RAID-5, vous êtes bon marché, à mon avis. RAID 1 fonctionne mieux, offre une meilleure protection et n'affecte pas la production lorsqu'un disque tombe en panne - pour une différence de coût marginale.

duffbeer703
la source
6

Je crois que la réponse dépend du contrôleur / logiciel, par exemple, il est assez courant que les systèmes en miroir ne lisent qu'un seul disque d'une paire et soient donc capables de fournir des données erronées. Je note que si vos résultats dépendent de ces données lorsque les données sont écrites sur les deux disques, elles sont ensuite corrompues sur les deux disques .....

Du pdf sous SATAssure (tm) Plus:

«La technologie révolutionnaire SATAssure offre une protection et une fiabilité des données de classe entreprise à l'aide de disques durs SATA de grande capacité et peu coûteux. SATAssure opère sur toutes les opérations de lecture, garantissant l'intégrité des données et corrige automatiquement les problèmes en temps réel - le tout sans les performances ou la pénalité de capacité que l'on trouve dans les systèmes traditionnels. systèmes de stockage. Réduisez les RMA des disques grâce à une nouvelle capacité de redémarrer les disques individuellement. "

Il est intéressant de noter que certains fabricants se moquent du fait qu'ils calculent toujours la parité, ce qui m'amène à penser que c'est relativement rare sur les contrôleurs matériels. Il est également à noter que des systèmes tels que ZFS et WAFL (netapp) effectuent des calculs de parité pour chaque lecture.

James
la source
Ce lien semble intéressant, mais indique-t-il explicitement n'importe où sur cette page ou brochure qu'ils recalculent la parité sur toutes les lectures?
andynormancx
J'ai ajouté une citation du pdf. Notez que les boîtiers S2A sont silencieux haut de gamme.
James
3

Avec RAID-5, la parité est généralement lue uniquement lors de la reconstruction de la baie, pas lors de la lecture générale. C'est ainsi que les lectures peuvent être plus aléatoires et plus rapides (puisque vous n'avez pas à lire et à calculer la parité pour une bande entière chaque fois que vous voulez 1K de données du tableau).

Avec RAID-1, les lectures sont généralement réparties sur les disques chaque fois que possible pour améliorer les performances de lecture. Comme vous l'avez noté, si le sous-système RAID essaie de lire les deux disques et qu'ils diffèrent, le sous-système n'a aucun moyen de savoir quel disque était erroné.

La plupart des sous-systèmes RAID dépendent du lecteur pour informer le contrôleur ou l'ordinateur en cas de problème.

Le RAID-5 est-il donc "plus robuste"? La réponse est, cela dépend. RAID-5 vous permet d'obtenir un stockage plus efficace pour un nombre donné de disques que RAID-1; bien que pour offrir un stockage efficace au-delà d'un disque, RAID-1 doit être combiné avec RAID-0, soit en tant que bande de baies RAID-1, soit en tant que RAID-1 sur deux bandes RAID-0.

(Je préfère le premier, car une panne de disque unique supprimera un seul élément RAID-1, ce qui signifie qu'un seul disque nécessitera une reconstruction. Avec ce dernier, une panne de disque unique tue un élément RAID-0, ce qui signifie que la MOITIÉ du les disques seront impliqués dans la reconstruction lorsque le lecteur sera remplacé.)

Cela conduit également à des discussions sur les «écritures fantômes», où une écriture est signalée comme réussie par l'électronique du lecteur, mais pour une raison quelconque, l'écriture ne parvient jamais sur le disque. Cela arrive. Considérez que pour une matrice RAID-5, lorsque vous avez une panne de disque, la matrice DOIT PARFAITEMENT lire TOUS les secteurs sur TOUS les disques survivants afin de récupérer. NetApp affirme que la grande taille des disques plus la grande taille des groupes de raid signifie que, dans certains cas, vos chances d'échouer lors d'une reconstruction peuvent être aussi mauvaises qu'une sur dix. Ainsi, ils recommandent que les grands disques dans les grands groupes RAID utilisent la double parité (qui, je pense, est liée à RAID-6).

J'ai appris cela lors d'une discussion technique NetApp donnée par un couple de leurs ingénieurs.

David Mackintosh
la source
Je n'utiliserais pas le terme «plus efficace» ... «plus de capacité» serait plus approprié. Dans mon esprit, une solution qui rend plus probable la perte de mes données n'est pas plus efficace.
duffbeer703
Tout est un compromis coût-valeur. RAID-5 est plus économique en termes de stockage, tandis que RAID-1 ou RAID-1 + 0 (0 + 1) est plus efficace en termes de robustesse.
David Mackintosh
L'autre raison de préférer 1 + 0 à 0 + 1 est que 1 + 0 peut survivre à 4 des 6 possibles "un deuxième disque tombe en panne avant que le premier disque défectueux ne soit remplacé et la baie reconstruite" des scénarios où 0 + 1 ne peut survivre que 2 of the 6. Bien que 0 + 1 puisse survivre à une panne de contrôleur sur un bras (où 0 + 1 ne peut pas), c'est beaucoup plus rare qu'une panne de disque (même une panne de plusieurs disques).
David Spillett
RAID-DP (l'implémentation à double parité de NetApp) est un RAID-6. RAID-6 (contrairement à RAID-5) est défini fonctionnellement comme un RAID qui peut survivre à deux pannes de disque. Le RAID-DP diffère du RAID-6 typique en ce qu'il ne distribue pas la parité - WAFL n'écrit pas au hasard des écritures aléatoires, donc la distribution de la parité n'apporte aucun avantage.
Captain Segfault
3

Aucune implémentation RAID commune ne vérifie généralement la parité sur l'accès aux données. Je n'en ai jamais vu. Certaines implémentations RAID5 lisent les données de parité pour les lectures en streaming pour éviter les recherches inutiles (moins cher de jeter chaque nième bloc que de forcer le lecteur à rechercher tous les n blocs). Les implémentations RAID1 ne peuvent pas vérifier car elles lisent sur les deux disques pour les performances (enfin, dans la grande majorité des implémentations RAID1. Une poignée vous permet de choisir, ce qui peut être utile si un disque est beaucoup plus lent que l'autre et qu'il n'est pas gourmand en écriture. charge.)

Certains vérifient avec un fond de «nettoyage». Dans ce cas, RAID6 gagne car il peut récupérer les données, et RAID5 et RAID1 sont dans la même situation, vous pouvez les identifier mais pas les corriger. (Ce n'est pas strictement vrai car le lecteur peut détecter un mauvais CRC, renvoyer une erreur et vous permettre de réécrire le bloc à partir de la parité. Cela se produit assez souvent).

Si vous voulez l'intégrité des données, stockez un hachage avec chaque bloc (ou enregistrement, ou comme il est divisé) au niveau de la couche application. Sybase et Oracle le font (je crois au niveau de la page) et je l'ai vu à plusieurs reprises enregistrer une gigantesque base de données. (Par exemple, le contrôleur commence à renvoyer des données incorrectes, Sybase se bloque avec une erreur claire, par conséquent, aucune écriture n'a été effectuée lorsque la base de données fonctionnait sur un matériel défaillant avec un état incohérent).

La seule solution de système de fichiers et la seule solution RAID qui le fait pour vous est ZFS.

carlito
la source
0

Votre ami parle-t-il du bit de parité impliqué dans certains niveaux RAID ou de la somme de contrôle des données écrites sur le disque?

S'ils sont sur la parité, alors RAID1 n'a pas de bit de parité - Vous avez deux copies des mêmes données. Il devrait y avoir une somme de contrôle effectuée par le disque pour s'assurer que ce qui a été écrit sur le disque correspond à ce qui est descendu le fil

RAID5 a un bit de parité. Cela signifie que vous pouvez perdre un disque dans votre ensemble RAID et continuer comme si de rien n'était. Pourtant, il devrait y avoir une somme de contrôle des données écrites sur le disque pour s'assurer qu'elles correspondent à ce qui est descendu le fil

Dans ce cas, les sommes de contrôle sont totalement indépendantes du RAID qui peut ou non être effectué avec un tas de disques

Modifié pour ajouter: Vous avez mentionné le passage du RAID matériel au RAID logiciel. La préférence va toujours au RAID matériel plutôt qu'au RAID logiciel. Si vous pouvez acheter le matériel nécessaire pour donner le niveau RAID que vous souhaitez implémenter, je vous suggère de vous lancer. Cela permettra à tous les calculs de parité d'être effectués par la carte RAID plutôt que par l'hôte. Par conséquent, libérer des ressources sur l'hôte. Il y a sans aucun doute d'autres avantages, mais ils m'échappent en ce moment

Ben Quick
la source
Il parlait de parité. Il affirmait que sur RAID5, les informations de parité étaient récupérées lors d'une lecture et comparées aux données provenant des autres disques pour vérifier qu'il n'y avait pas d'erreur de lecture.
andynormancx
5
Je ne suis pas d'accord avec votre recommandation de RAID matériel sur logiciel dans tous les cas. Avec du matériel moderne, le RAID logiciel peut être aussi rapide que le matériel si votre serveur dispose de beaucoup de CPU de rechange (que le mien aura toujours). En outre, le RAID matériel présente certains inconvénients, le principal étant dans une situation de récupération, vous avez besoin d'une carte RAID correspondante. Avec le logiciel RAID, vous pouvez retirer un lecteur d'une machine, le coller dans un autre et vous partez sans obtenir une nouvelle carte RAID qui correspond exactement à l'ancienne.
andynormancx
J'essayais de comprendre de quel contexte il parlait. Si je comprends bien, les sommes de contrôle sont utilisées lors de l'écriture sur disque (indépendamment du RAID). La parité est utilisée pour placer des blocs de données sur différents disques et pour reconstruire une baie en cas de panne de disque. La parité n'est pas utilisée à tous les niveaux RAID
Ben Quick
1
Veuillez consulter en.wikipedia.org/wiki/… pour une discussion sur le logiciel contre le RAID matériel. Évidemment, l'implémentation que vous avez choisie dépend de votre environnement et de vos besoins. Ma préférence va au RAID matériel plutôt
Ben Quick
Je comprends, oublie que j'ai déjà mentionné des sommes de contrôle. J'ai mis à jour la question pour dissiper la confusion. La question est de savoir si les systèmes RAID5 vérifient généralement les données de parité lors des lectures.
andynormancx
0

Je suis sur le point de remplacer une ancienne matrice RAID5 matérielle par une matrice RAID1 logicielle Linux. Je parlais à un ami et il a affirmé que RAID5 était plus robuste que RAID1.

Cela dépendrait du type d'implémentation du raid (hw / sw), des disques, du contrôleur de raid le cas échéant, et de ses fonctionnalités.

Son affirmation était qu'avec RAID5, lors de la lecture, les données de parité étaient lues pour s'assurer que tous les disques renvoyaient les données correctes. Il a en outre affirmé que sur RAID1, les erreurs survenant sur un disque passeraient inaperçues car aucune vérification de ce type n'est effectuée avec RAID1.

cela a un peu de sens, mais pas vraiment :) ce qui se passe est - si des données incorrectes sont écrites, sur un miroir, elles seront envoyées aux deux disques, et en parité raid5, elles seront générées et réparties sur les disques. la vérification de la lecture / écriture des données est effectuée par le microprogramme du disque et du contrôleur et n'a rien à voir avec les niveaux de raid.

So the question is, what do RAID5/RAID1 systems in the real world

en fait? Les systèmes RAID5 vérifient-ils les données de parité lors des lectures? Existe-t-il des systèmes RAID1 qui lisent sur tous les disques et comparent les données lues?

comme je l'ai dit, les vérifications ne font pas partie de l'algorithme de raid, bien que certains contrôleurs puissent avoir quelque chose de plus implémenté.

la robustesse de la baie dépend de la qualité des disques (les disques 2,5 "ont tendance à vivre plus longtemps que 3,5" en raison des taux de RV réduits; d'après mon expérience, n'achetez JAMAIS des disques maxtor SCSI / SAS - ils ont d'horribles problèmes de firmware), l'environnement (contrôle de la température et de l'humidité), le contrôleur lui-même (a-t-il un BBU? le firmware est-il à jour? est-ce un vrai raid ou un fakeraid?), la quantité de PSU dans le serveur, la qualité de l'onduleur, etc.

Dyasny
la source
Je crains que vous n'ayez pas répondu à la question, qui concerne très précisément ce que font réellement les implémentations réelles de RAID5 en ce qui concerne la vérification des données de parité lors d'une lecture.
andynormancx
0

Je ne le sais pas , mais il me semble peu probable que ce soit le cas. N'oubliez pas que pour calculer la parité, il devra lire le bloc de tous les lecteurs de votre ensemble RAID, puis faire des calculs pour déterminer l'exactitude, alors que si ce n'est pas le cas, il suffit de lire un lecteur.

De plus, si votre lecture concerne moins d'un bloc, une lecture de contrôle de parité devrait la développer en un bloc complet, contrairement à une lecture régulière. (En supposant, bien sûr, que le bloc RAID est plus grand que les blocs des disques. Je pense que les lectures à partir du disque doivent être des blocs complets. Sinon, mon argument est encore plus valable.)

Donc, de mon point de vue, oui, cela pourrait le faire, mais si c'était le cas, ce serait inefficace, et je doute que certains soient mis en œuvre de cette façon.

Encore une fois, cependant, je n'ai aucune connaissance personnelle des implémentations réelles.

wfaulk
la source
0

Les systèmes RAID5 vérifient-ils les données de parité lors des lectures?

Cela n'a pas vraiment de sens. Que faites-vous lorsque vous constatez un décalage de parité? (Comment savez-vous quel bloc est incorrect?)

Pour les lectures aléatoires, la vérification de la parité coûterait cher. Normalement, vous pouvez effectuer une lecture aléatoire en regardant simplement un seul disque, mais si vous voulez vérifier la parité, vous devez lire tous les disques à chaque lecture. (Cela pourrait encore avoir du sens si vous pouviez y faire quelque chose!)

Notez que RAID-1 a également ce problème - ce qui est logique lorsque vous regardez un RAID-1 comme un RAID-5 à deux disques.

Capitaine Segfault
la source
0

J'ai réfléchi un peu à l'affirmation selon laquelle RAID-1 devrait être plus rapide en lecture que RAID-5, car il lit simultanément sur les deux disques.

Maintenant, comme la parité n'est pas lue sur RAID-5, sauf si la baie a besoin d'une reconstruction, elle équivaut en fait à une matrice RAID-0 en termes de lecture, ai-je raison?

RAID-0 est généralement considéré comme le niveau le plus rapide (bien qu'il devrait être nommé "AID", car il n'y a aucune redondance). :-RÉ

En parlant de RAID logiciel Linux, un simple test - utilisant hdparm - confirme cette théorie: mes baies RAID-5 montrent toujours une vitesse de lecture plus élevée que mes baies RAID-1.

MAIS: Un tableau dégradé fonctionne beaucoup plus lentement qu'un tableau normal, semble-t-il! Je viens de le tester avec Fedora 9, fonctionnant sur 4 disques WD 1 To avec différents niveaux RAID. Voici les résultats:

RAID-5 dégradé: vitesse de lecture 43 Mo / sec RAID-5 normal: vitesse de lecture 240 Mo / sec (!) RAID-1: vitesse de lecture 88 Mo / sec

Étant donné que la perte de disques autorisée est la même en RAID-1 et RAID-5 (à savoir un), je pense que RAID-5 devrait surpasser RAID-1 dans tous les aspects - donnant plus de capacité par rapport au nombre de disques utilisés dans la baie et les mêmes tolérance aux pannes. Cela conduit à une conclusion qui stipule que RAID-6 surpasse tous les autres niveaux RAID, car il est aussi rapide que RAID-0 en lecture normale (pas de lecture de parité à partir des deux disques de parité), et toujours tolérant aux pannes en cas de perte d'un membre du tableau. ;-)


la source
Quelques trucs intéressants, mais vous avez répété l'erreur de RAID1 que j'entends tout le temps. RAID1 ne doit pas signifier qu'il ne peut survivre qu'à une seule défaillance de disque. Vous n'avez pas besoin d'avoir seulement deux disques dans votre matrice RAID1. Par exemple, vous avez une matrice RAID1 avec 3 disques, elle survivra à deux pannes de disque et les performances de lecture devraient également augmenter ( si votre système RAID lit à partir de plusieurs disques en lecture).
andynormancx
-1

Personnellement, je pense que le test ultime d'un système RAID est sa capacité à résister aux pannes. Dans ce cas, RAID5 et RAID1 peuvent gérer les pannes d'un seul disque mais aucun ne survivra plus que cela.

Quant à votre question sur le bit de parité, je pense que cela dépend des pilotes RAID. Il sera certainement lu pendant la reconstruction, mais en utilisation normale, cela n'aurait pas beaucoup de sens car la bande passante serait gaspillée.

sybreon
la source
Je crains que votre réponse ne soit "je ne sais pas si des implémentations RAID5 vérifient la parité en lecture" et ne répond donc pas à la question.
andynormancx
C'est une réponse valable car personne ne le saura avec certitude, sauf la personne qui a réellement écrit le pilote.
sybreon
-2

afaik, je ne suis pas un pro du stockage 24/7, le contrôleur vérifie toujours ce qui est écrit et lu sur les disques. c'est-à-dire qu'avec raid1 vous avez des écritures légèrement pires que sur un seul disque mais vos lectures sont un peu plus rapides (doit écrire un fichier sur deux disques mais peut lire une partie du disque un et l'autre partie du disque deux).

Vous pouvez peut-être désactiver la vérification des données pour un niveau de raid, mais quel est l'intérêt de cela, tous les niveaux de raid (sauf 0) sont là pour vous donner une redondance des données, alors pourquoi vous gêner.

Avec le raid 5, vous avez besoin d'au moins 3 disques et pouvez utiliser N-1 disques pour les données. Avec le raid 1, vous avez toujours besoin d'un nombre pair de disques et vous pouvez utiliser N / 2 disques pour les données.

Ainsi, dans les raids plus importants, le niveau 5 vous offre plus de stockage tandis que le raid 1 vous donne plus de redondance.

Si par plus robuste vous voulez dire qui offre plus de redondance, c'est le raid 1.

en fonction de la taille du raid, vous devez également prendre en compte les temps de reconstruction en cas d'erreur (combien de disques y a-t-il, quelle est la taille d'un disque, quel type de raid (soft-, fake-, hardware-), quel niveau etc. )

Il n'est donc pas vraiment possible de dire qu'un raid est plus robuste qu'un autre (peut-être que le raid 6 est toujours plus robuste que le raid 5 au prix de perdre de l'espace de stockage)

mrt181
la source
1
Je crains que cela ne réponde pas vraiment à ma question, ma question est très précisément de savoir si les implémentations RAID5 typiques vérifient les données de parité en lecture. Et pour mémoire, RAID1 n'a pas besoin d'un nombre pair de disques. Vous pouvez très bien avoir une matrice RAID1 avec plus de deux disques, augmentant ainsi la redondance tout en réduisant la vitesse d'écriture.
andynormancx
1
"le contrôleur vérifie toujours ce qui est écrit et lu sur les disques." Ce n'est pas le cas, le contrôleur pourrait lire sur les deux disques, mais certains contrôleurs renvoient les premières données qu'ils obtiennent.
James
Je pense qu'il est possible de dire que RAID1 a besoin d'un nombre pair de disques, et qu'un troisième miroir est autre chose que RAID1. Si peu d'implémentations prennent en charge un troisième miroir que la terminologie n'a jamais normalisé.
carlito