Avantages et inconvénients du logiciel Parity-RAID (par exemple RAID5)

8

On m'a récemment parlé de certains problèmes concernant les RAID Parity sans cache non volatile. Des contrôleurs HW plus coûteux ont des caches alimentés par batterie pour terminer les opérations d'écriture en cas de panne de courant. Maintenant, certaines personnes disent qu'un tel échec, peut-être en combinaison avec un tableau dégradé, peut tuer tout votre système de fichiers. D'autres affirment que ces problèmes sont obsolètes et / ou des idées fausses .

Malheureusement, personne ne donne de références dures et ni une recherche de md RAID et de cache non volatile , ni une mise en cache bitmap ne donne de réponses fiables sur le fait que md-RAID5 soit conseillé ou non.

Des informations à ce sujet?

user773568
la source
1
Le mdraid de Linux a un journal, qui est au moins sûr en cas d'arrêt soudain (c'est-à-dire panne du système, ou tous les disques s'éteignent en même temps), ou dans le cas de RAID-1. Je ne sais pas si son RAID- [56] résiste à toutes les formes de mise hors tension par étapes.
Gilles 'SO- arrête d'être méchant'
2
@Gilles, il n'a pas de journal, mais il a un bitmap d'intention d'écriture facultatif. Cela accélère simplement le processus de resynchronisation lorsque le système revient, car il identifie les zones qui doivent être resynchronisées et celles qui peuvent être ignorées.
psusi
@psusi Je suis retourné et j'ai vérifié ce que j'avais recherché il y a quelques mois . Pour autant que je comprends, le bitmap à intention d'écriture (pas un journal, mon erreur) fait plus qu'accélérer la resynchronisation, il indique quels composants ont un bloc sale, donc c'est suffisant pour assurer la cohérence du bloc sur RAID-1 mais pas sur RAID-5 (où vous pourriez ne pas avoir suffisamment de disques dans l'ancien et le nouvel état pour restaurer l'un ou l'autre état).
Gilles 'SO- arrête d'être méchant'
1
@ Gilles Je ne suis pas sûr de ce que vous entendez par "cohérence du bloc". Vous semblez être bloqué sur la bande entière étant soit dans l'état avant le début de l'écriture, soit dans l'état après. Ce n'est jamais garanti et il est fort probable que ce ne soit pas le cas si l'alimentation tombe en panne au milieu de l'écriture. Il appartient au système de fichiers de gérer cela comme sur un seul disque; en utilisant le journal.
psusi

Réponses:

4

Je suppose que le RAID logiciel de Linux est aussi fiable qu'une carte RAID matérielle sans BBU et avec la mise en cache en écriture activée. Après tout, les données non validées dans un système RAID logiciel résident dans le cache de tampon du noyau, qui est une forme de mise en cache à réécriture sans sauvegarde sur batterie.

Étant donné que chaque carte matérielle RAID-5 que j'ai jamais utilisée vous permet d'activer la mise en cache en écriture différée sans BBU, je m'attends à ce que le logiciel RAID-5 fonctionne correctement pour les personnes ayant un certain niveau de tolérance au risque.

ObWarStory:

Cela dit, j'ai personnellement subi de graves pertes de données en raison de l'absence de BBU installé sur une carte RAID-5 bien que la mise en cache en écriture différée ait été activée. (Pas d'UPS non plus. Ne me criez pas dessus, pas mon appel.)

Mon patron m'a appelé dans une panique alors que j'étais en vacances parce qu'un de nos systèmes de production ne revenait pas après une panne de courant. Il n'avait plus de choses à essayer. J'ai dû m'arrêter sur le côté de la route, retirer l'ordinateur portable, activer le partage de connexion Wi-Fi sur mon téléphone, sshdans le système en difficulté et le réparer, pendant que ma famille restait assise avec moi sur le côté de la route jusqu'à ce que j'aie fini restauration d'une table de base de données roached à partir d'une sauvegarde. (Nous étions à environ un mile de perdre la réception cellulaire à l'époque.)

Alors dites-moi: combien paieriez-vous pour une carte RAID + BBU maintenant ?

Warren Young
la source
À droite - j'ai supprimé mon commentaire. Mais un raid sans BBU devrait passer, n'est-ce pas? C'est au moins ce que font les contrôleurs PERC lorsque la batterie apprend et tombe en dessous du seuil.
Nils
Oui, sans BBU ou avec un BBU mort, la carte RAID écrit toujours des données. Ce qu'il ne fait pas, c'est de se souvenir de ce qui était dans le tampon d'écriture lorsque le serveur est hors tension. Étant donné que le RAID dépend de la cohérence entre les bits redondants, il devient confus lorsqu'il devient incohérent. Par conséquent, une panne de courant pendant l'écriture RAID risque de corrompre quelque chose sur le RAID, car le contrôleur est obligé de choisir l'une des deux copies ou plus des données, sans savoir laquelle est correcte.
Warren Young
3

Juste un avertissement: les opérations d'écriture RAID-5/6 prennent un temps CPU important pendant que votre baie est dégradée. Si votre serveur est déjà complètement chargé lorsqu'un disque vient à tomber en panne, il peut tomber dans un abîme de non réponse. Un tel problème ne se produira pas avec un contrôleur RAID matériel. Je déconseille donc fortement d'utiliser le logiciel RAID-5/6 sur un serveur de production. Pour un poste de travail ou un serveur légèrement chargé, c'est OK cependant.

wazoox
la source
3

SW RAID a un mode de défaillance - si le serveur tombe à mi-chemin d'une écriture, vous pouvez obtenir une bande corrompue. Un contrôleur RAID HW avec un BBU n'est pas si cher, et il conservera les blocs sales jusqu'à ce que vous puissiez redémarrer les disques.

Le BBU sur le cache ne garantit pas les écritures en cas de panne de courant (c'est-à-dire qu'il n'alimente pas les disques). Il alimente le cache pendant quelques jours jusqu'à ce que vous puissiez redémarrer les disques. Le contrôleur videra ensuite tous les tampons sales sur le disque.

Quelques notes sur SW vs HW RAID-5

  1. Les écritures sur un volume SW RAID-5 peuvent être lentes si la mise en cache en écriture directe est utilisée avec le blocage des E / S, car l'appel ne revient pas tant que toutes les E / S ne sont pas terminées. Un contrôleur RAID HW avec un BBWC peut optimiser cela considérablement, de sorte que vous pouvez voir des performances nettement meilleures.

  2. La dernière fois que j'ai regardé, vous ne pouviez pas faire d'E / S directes (c'est-à-dire DMA sans copie) sur un volume SW SW. Cela peut avoir changé et n'est vraiment pertinent que pour des applications telles que les gestionnaires de bases de données utilisant des partitions brutes.

  3. Un contrôleur SAS RAID moderne peut extraire ou pousser 1 Go / s ou plus de données hors d'une matrice de disques, en particulier s'il est formaté avec une grande taille de bande (par exemple 256 Ko). J'ai même comparé un ancien Adaptec ASR-2200 à des vitesses qui indiquaient qu'il saturait à peu près ses deux canaux scsi à 600 Mo / sec + au total (disques 10x 15k) avec très peu de charge CPU sur la machine hôte. Je ne suis pas sûr que vous puissiez obtenir cela du logiciel RAID-5 sans beaucoup de charge CPU, voire pas du tout, même sur une machine moderne. Peut-être pourriez-vous lire cela rapidement.

  4. La configuration pour démarrer à partir d'un volume RAID HW est simple - le volume RAID est transparent pour l'O / S.

Un contrôleur RAID bas de gamme d'un fournisseur de niveau 1 tel qu'adaptec n'est pas si cher au prix public et peut être acheté pour des arachides sur eBay. Mais rappelez-vous, si vous achetez d'occasion, respectez les fournisseurs de niveau 1 et assurez-vous de connaître le modèle et de vérifier la disponibilité des pilotes sur leur site Web.

Edit: D'après le commentaire de @ psusi, assurez-vous de ne pas obtenir de contrôleur fakeraid (RAID SW transparent caché dans le pilote), mais la plupart des offres des plus grands noms (Adaptec, 3Ware ou LSI) ne sont pas des unités fakeraid. Tout ce qui peut prendre un BBU ne sera pas fakeraid.

ConcernedOfTunbridgeWells
la source
Si l'alimentation tombe en panne au milieu d'une écriture, vous obtenez une bande désynchronisée non corrompue. Une bande désynchronisée signifie simplement que la parité n'est pas à jour, donc lorsque la baie est montée, la parité doit être mise à jour. De plus, les contrôleurs "raid" que l'on peut avoir pour les cacahuètes sont souvent des fakeraid; ils ont des extensions bios rom et des pilotes Windows qui font le raid dans le logiciel.
psusi
@psusi - La plupart des contrôleurs ASR-2200 que j'ai achetés il y a quelques années coûtaient moins de 100 USD et ce sont des contrôleurs RAID pukka HW. Je ne pense pas qu'Adaptec fabrique réellement des contrôleurs fakéraïdes. Vous pouvez très facilement obtenir des contrôleurs RAID Adaptec, 3Ware ou LSI SAS à 4 ou 8 ports sur ebay pour quelques centaines de dollars.
ConcernedOfTunbridgeWells
Je n'appellerais pas quelques centaines de dollars pour un produit d'occasion d'une source inconnue "quelques centimes"; cela indique plus le long de la ligne de 50 $ - 100 $ pour un nouveau produit. Les appareils de cette classe sont généralement des fakéraïdes.
psusi
@psusi - Vous essayez de repousser un argument que je n'ai jamais avancé; Je n'ai jamais utilisé le mot «quelques centimes». Veuillez ne pas recourir aux arguments de l'homme de paille - les exemples que j'ai utilisés ne sont pas des contrôleurs fakéraïdes.
ConcernedOfTunbridgeWells
1

Si vous avez des données dans le cache mais pas encore sur le disque et que l'alimentation est coupée, les données vont disparaître et votre disque sera très probablement dans un état incohérent. La probabilité de cela n'est pas très élevée à moins d'avoir un système qui écrit constamment, mais je ne voudrais toujours pas parier mes données sur les jeux de probabilités.

Une torsion intéressante serait de créer un système de fichiers principal sur RAID5 / 6 mais de mettre un journal sur un disque normal, de sorte que les données soient d'abord vidées sur le disque normal. Les performances iraient probablement au crapper car vous seriez limité à la vitesse d'écriture d'un seul lecteur, mais la fiabilité augmenterait. Donc, je suppose que dans une situation où vos performances d'écriture ne sont pas importantes, mais votre lecture est, cela pourrait très bien fonctionner.

Ou vous pourriez simplement dépenser 100 $ de plus et obtenir la carte avec BBU, ou un petit onduleur, et éviter toutes ces complications;)

Marcin
la source
Que pensez-vous d'un journal sur un SSD rapide?
user773568
Cela suffirait, mais à ce moment-là, vous payez plus qu'un contrôleur décent en premier lieu;) De plus, la vitesse augmente, mais la fiabilité diminue, car la plupart des SSD meurent très très rapidement.
Marcin
1
@Marcin sur quoi basez-vous cela? Ils ne semblent pas avoir une durée de vie de conception spécifiée plus courte, et j'en ai une depuis plus d'un an et n'ai utilisé que 5% de ses cycles d'écriture.
psusi
@MarcinWell Quand vous parlez de fiabilité, est-ce la sécurité ou la disponibilité? Je ne m'attendais pas à ce que perdre mon journal menace les données globales. Le fait-il? Quoi qu'il en soit, je prévois de mettre OS et Swap sur un SSD plus petit, pour des raisons de bruit et d'économie d'énergie. Le RAID peut se mettre en veille de cette façon.
user773568
Les SSD MLC ont un historique de problèmes de fiabilité. Les unités SLC sont beaucoup plus fiables, mais aussi beaucoup plus chères. Un livre blanc sur la fiabilité des SSD peut être trouvé ici
ConcernedOfTunbridgeWells
1

Le raid logiciel Linux mdadm est conçu pour être tout aussi fiable qu'un raid matériel avec cache sauvegardé par batterie. Il n'y a pas de problème de perte soudaine de puissance, au-delà de ceux qui s'appliquent également à une perte de puissance soudaine sur un seul disque.

Lorsque le système revient après une panne de courant, la baie est resynchronisée, ce qui signifie essentiellement que la parité est recalculée pour correspondre aux données écrites avant la panne de courant. Cela prend du temps, mais vraiment, ce n'est pas grave. Le temps de resynchronisation peut être considérablement réduit en activant le bitmap d'intention d'écriture.

psusi
la source
1
Cela semble un peu optimiste. Comment une solution logicielle pure peut-elle être aussi fiable qu'un cache sauvegardé par batterie?
user773568
1
Il y a de mauvaises choses qui peuvent arriver à une matrice RAID qui ne peuvent pas arriver à un seul disque. Avec un seul disque, chaque secteur est dans l'ancien ou le nouvel état. Avec par exemple RAID-5 sur 4 + 1 disques, que se passe-t-il si le secteur 42 des disques 1 et 2 est dans l'ancien état et le secteur 42 des disques 3, 4 et 5 est dans le nouvel état? Ni l'ancien état ni le nouvel état ne sont récupérables. Je ne sais pas si Linux prend des mesures pour éviter cela, et c'est de cela qu'il s'agit.
Gilles 'SO- arrête d'être méchant'
@ user773568 umm ... Je viens d'expliquer comment?
psusi
@Gilles vous venez de reformuler le même cas que le disque unique. Certains secteurs sont dans l'ancien état, et certains sont dans le nouvel état. Peu importe le disque sur lequel ils se trouvent. Les systèmes de fichiers traitent les écritures incomplètes lors d'un crash avec le journal.
psusi
@psusi Non: avec un seul disque, chaque secteur est dans le nouvel état ou dans l'ancien état. Avec plusieurs disques, si le pilote utilise l'approche naïve d'écraser le secteur sur chaque disque sans stocker d'informations ailleurs, un secteur qui était dans un état transitoire (ancien état sur certains disques, nouvel état sur d'autres) ne peut pas être récupéré du tout. L'erreur peut éventuellement être détectée (si vous êtes chanceux: la parité pourrait correspondre par accident), mais elle ne peut pas être corrigée.
Gilles 'SO- arrête d'être méchant'
1

Voici un blog expliquant le problème avec RAID5 et comment ZFS RAIDZ le résout .

Ses points clés sont:

RAID-5 (et d'autres schémas de données / parité tels que RAID-4, RAID-6, pair-impair et Row Diagonal Parity) n'a jamais tout à fait tenu sa promesse RAID - et ne peut pas - en raison d'une faille fatale connue comme trou d'écriture RAID-5. Chaque fois que vous mettez à jour les données dans une bande RAID, vous devez également mettre à jour la parité, afin que tous les disques XOR à zéro - c'est cette équation qui vous permet de reconstruire les données lorsqu'un disque tombe en panne. Le problème est qu'il n'y a aucun moyen de mettre à jour deux ou plusieurs disques de manière atomique, de sorte que les bandes RAID peuvent être endommagées lors d'un crash ou d'une panne de courant.

et

RAID-Z est un schéma de données / parité comme RAID-5, mais il utilise une largeur de bande dynamique. Chaque bloc est sa propre bande RAID-Z, quelle que soit sa taille. Cela signifie que chaque écriture RAID-Z est une écriture pleine bande. Ceci, lorsqu'il est combiné avec la sémantique transactionnelle de copie sur écriture de ZFS, élimine complètement le trou d'écriture RAID.

jlliagre
la source