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?
la source
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.
la source
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.
la source
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
la source
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.
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.
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.
la source
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.
la source
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.
la source
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
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.
la source
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)
la source