Le RAID revisité
À l'époque où j'étais un technicien de service débutant et où je ne connaissais presque rien à l'administration système, l'un des rares sujets que nous étions toujours censés maîtriser sur le bout des doigts était le RAID – Redundant Array of Inexpensive Disks (ensemble redondant de disques bon marché). C'était la réponse à tous nos soucis de stockage. Avec le RAID, nous pouvions augmenter la taille de nos systèmes de fichiers, obtenir un meilleur débit et même ajouter de la redondance, nous permettant de survivre à la perte d'un disque qui, surtout à cette époque, se produisait assez régulièrement. Avec l'essor des appliances de stockage NAS et SAN, les compétences nécessaires pour descendre au niveau du stockage physique et l'ajuster afin de répondre aux besoins du système en question disparaissent rapidement. Ce n'est pas une bonne chose. Le fait que nous déchargions le stockage vers des périphériques externes ne change rien au fait que nous devons fondamentalement comprendre notre stockage et le configurer pour répondre aux besoins spécifiques de nos systèmes.
Une idée fausse qui semble s'être introduite dans le domaine au cours des cinq à dix dernières années est la conviction que le RAID représente d'une certaine manière une sauvegarde du système. Ce n'est pas le cas. Le RAID est une forme de tolérance aux pannes. La sauvegarde et la tolérance aux pannes sont des concepts très différents. La sauvegarde est conçue pour vous permettre de récupérer après qu'un sinistre s'est produit. La tolérance aux pannes est conçue pour réduire le risque de sinistre en premier lieu. Considérez la tolérance aux pannes comme la construction d'une clôture au sommet d'une falaise, et la sauvegarde comme la construction d'un hôpital à son pied. Vous ne voulez jamais vraiment vous retrouver dans une situation sans à la fois une clôture et un hôpital, mais ce sont assurément des choses différentes.
Une fois que nous mettons en œuvre le RAID pour nos disques, qu'ils soient connectés localement ou sur une appliance distante comme un SAN, nous disposons aujourd'hui de quatre solutions RAID clés parmi lesquelles choisir pour l'entreprise : RAID 1 (mise en miroir), RAID 5 (entrelacement avec parité), RAID 6 (entrelacement avec double parité) et RAID 10 (mise en miroir avec entrelacement). Il en existe d'autres, comme le RAID 0, qui ne devraient être utilisés que dans de rares circonstances, lorsque vous comprenez réellement les besoins de votre sous-système de disques. Le RAID 50 et le RAID 51 sont également utilisés, mais bien moins couramment, et sont loin d'être aussi efficaces. Il y a dix ans, le RAID 1 et le RAID 5 étaient courants, mais aujourd'hui nous disposons de davantage d'options.
Passons en revue les options et discutons de quelques chiffres de base. Dans nos exemples, nous utiliserons n pour représenter le nombre de disques dans notre ensemble et nous utiliserons s pour représenter la taille d'un disque individuel. En utilisant ces variables, nous pouvons exprimer l'espace de stockage utilisable d'un ensemble, ce qui facilite les comparaisons en termes de capacité de stockage.
RAID 1 : Dans ce type de RAID, les disques sont mis en miroir. Vous disposez de deux disques et ils font tout ensemble en même temps, d'où la « mise en miroir ». La mise en miroir est extrêmement stable car le processus est très simple, mais elle vous oblige à acheter deux fois plus de disques que ce dont vous auriez besoin si vous n'utilisiez pas du tout le RAID, car votre second disque est dédié à la redondance. L'avantage étant que vous avez l'assurance que chaque bit que vous écrivez sur le disque est écrit deux fois pour votre protection. Ainsi, avec le RAID 1, notre capacité se calcule comme (n*s/2). Le RAID 1 souffre de n'offrir que des gains de performance minimes par rapport aux disques sans RAID. Les vitesses d'écriture sont équivalentes à celles d'un système sans RAID, tandis que les vitesses de lecture sont presque deux fois plus rapides dans la plupart des situations, car lors des opérations de lecture, les disques peuvent être accédés en parallèle pour augmenter le débit. Le RAID 1 est limité à des ensembles de deux disques.
RAID 5 : Entrelacement avec parité simple. Dans ce type de RAID, les données sont écrites selon un entrelacement complexe réparti sur tous les disques de l'ensemble, avec un bloc de parité distribué qui existe sur l'ensemble des disques. Ce faisant, le RAID 5 est capable d'utiliser un ensemble de taille arbitraire de trois disques ou plus et ne perd que la capacité de stockage équivalente à un seul disque au profit de la parité, bien que la parité soit distribuée et n'existe pas uniquement sur un seul disque physique. Le RAID 5 est souvent utilisé en raison de son rapport coût-efficacité, dû à sa faible perte de capacité de stockage dans les grands ensembles. Contrairement à la mise en miroir, l'entrelacement avec parité nécessite qu'un calcul soit effectué pour chaque bande d'écriture répartie sur les disques, ce qui crée une certaine surcharge. Par conséquent, le débit n'est pas toujours un calcul évident et dépend fortement de la puissance de calcul du système effectuant le calcul de parité. Calculer la capacité du RAID 5 est assez simple, car il s'agit simplement de ((n-1)*s). Un ensemble RAID 5 peut survivre à la perte de n'importe quel disque unique de l'ensemble.
RAID 6 : Entrelacement redondant avec double parité. Le RAID 6 est pratiquement identique au RAID 5, mais utilise deux blocs de parité par bande au lieu d'un afin de permettre une protection supplémentaire contre les défaillances de disque. Le RAID 6 est un membre plus récent de la famille RAID, ayant été ajouté plusieurs années après la normalisation des autres niveaux. Le RAID 6 est particulier en ce qu'il permet la défaillance de deux disques quelconques au sein d'un ensemble sans subir de perte de données. Mais pour accueillir ce niveau de redondance supplémentaire, un ensemble RAID 6 perd la capacité de stockage équivalente à deux disques de l'ensemble et nécessite un minimum de quatre disques. Nous pouvons calculer la capacité d'un ensemble RAID 6 avec ((n-2)*s).
RAID 10 : Mise en miroir plus entrelacement. Techniquement, le RAID 10 est un type de RAID hybride englobant un ensemble de miroirs RAID 1 existant au sein d'un entrelacement sans parité (RAID 0). De nombreux fournisseurs utilisent le terme RAID 10 (ou RAID 1+0) lorsqu'ils parlent de seulement deux disques dans un ensemble, mais techniquement il s'agit de RAID 1, car l'entrelacement ne peut se produire tant qu'il n'y a pas un minimum de quatre disques dans l'ensemble. Avec le RAID 10, les disques doivent être ajoutés par paires, de sorte que seul un nombre pair de disques peut exister dans un ensemble. Le RAID 10 peut survivre à la perte d'un maximum de la moitié de l'ensemble total des disques, mais avec une perte maximale d'un disque par paire. Le RAID 10 n'implique pas de calcul de parité, ce qui lui confère un avantage de performance par rapport au RAID 5 ou au RAID 6 et nécessite moins de puissance de calcul pour piloter l'ensemble. Le RAID 10 offre les meilleures performances de lecture de tous les types de RAID courants, car tous les disques de l'ensemble peuvent être utilisés simultanément lors des opérations de lecture, bien que ses performances d'écriture soient bien plus faibles. Le calcul de capacité du RAID 10 est identique à celui du RAID 1, (n*s/2).
Dans l'entreprise d'aujourd'hui, il est rare qu'un service informatique ait un réel besoin d'envisager une configuration de disques autre que les quatre mentionnées ici, que l'on mette en œuvre un RAID logiciel ou matériel. Traditionnellement, la principale préoccupation dans le choix d'un ensemble RAID reposait sur la capacité utilisable. Cela était dû au fait que les disques étaient chers et de petite taille. Aujourd'hui, les disques sont si volumineux que la capacité de stockage est rarement un problème, du moins pas comme il y a quelques années à peine, et les coûts ont tellement baissé que l'achat de disques supplémentaires nécessaires à une meilleure redondance des disques est généralement une préoccupation mineure. Lorsque la capacité est précieuse, le RAID 5 est un choix populaire car c'est lui qui perd le moins de capacité de stockage par rapport aux autres types d'ensembles, et dans les grands ensembles, la perte de stockage est négligeable.
Aujourd'hui, nous avons généralement d'autres préoccupations, principalement la sécurité des données et les performances. Dépenser un peu plus pour garantir la protection des données devrait être un choix évident. Le RAID 5 souffre de ne pouvoir perdre qu'un seul disque. Dans un ensemble de seulement trois membres, cela n'est que légèrement plus dangereux que la protection offerte par le RAID 1. Nous pourrions survivre à la perte de n'importe lequel des trois disques. Pas trop effrayant comparé à la perte de l'un ou l'autre de deux disques. Mais qu'en est-il d'un grand ensemble, disons de seize disques. Le fait de ne pouvoir perdre en toute sécurité qu'un seul disque sur seize devrait nous amener à remettre en question notre fiabilité un peu plus en profondeur.
C'est là que le RAID 6 est intervenu pour combler cette lacune. Le RAID 6, lorsqu'il est utilisé dans un grand ensemble, introduit une très faible perte de capacité de stockage et de performance tout en offrant l'assurance de pouvoir perdre n'importe quels deux disques. Les partisans du camp de l'entrelacement avec parité citeront souvent ces chiffres pour rassurer la direction sur le fait que le RAID 5/6 peut offrir un « rapport qualité-prix » adéquat dans les sous-systèmes de stockage, mais d'autres facteurs entrent en jeu.
Presque entièrement négligée dans les discussions sur la fiabilité du RAID, sujet bien trop rarement abordé d'ailleurs, est la question de la fiabilité du calcul de parité. Avec le RAID 1 ou le RAID 10, aucun « calcul » n'est effectué pour créer une bande avec parité. Les données sont simplement écrites de manière stable. Lorsqu'un disque tombe en panne, son partenaire prend le relais et les performances du disque sont légèrement dégradées jusqu'à ce que le partenaire soit remplacé. Il n'y a pas de processus de reconstruction qui affecte les membres existants de l'ensemble. Il n'en va pas de même avec les bandes de parité.
Les ensembles RAID avec parité comportent des opérations qui consistent à calculer ce qui se trouve et ce qui devrait se trouver sur les disques. Bien que ce calcul soit très simple, il offre une occasion pour que les choses tournent mal. Un contrôleur d'ensemble qui tombe en panne avec le RAID 1 ou le RAID 10 pourrait, en théorie, écrire de mauvaises données par-dessus le contenu des disques, mais il n'existe aucun processus par lequel le contrôleur effectue de lui-même des modifications sur les disques, de sorte qu'il est extrêmement improbable que cela ne se produise jamais, car il n'y a jamais de processus de « reconstruction », sauf lors de la création d'un miroir.
Lorsque des ensembles avec parité effectuent une opération de reconstruction, ils réalisent un processus complexe par lequel ils parcourent l'intégralité du contenu de l'ensemble et réécrivent les données manquantes sur le disque remplacé. En soi, cela est relativement simple et ne devrait pas être source d'inquiétude. Ce que moi et d'autres avons constaté de première main est un scénario légèrement différent impliquant des disques ayant perdu leur connectivité en raison de connecteurs mal fixés à l'ensemble. Les disques peuvent couramment se « détacher » avec le temps lorsqu'ils sont installés dans un serveur, surtout après plusieurs années de service dans un système fonctionnant en permanence.
Ce qui peut se produire, dans des scénarios extrêmes, c'est que de bonnes données présentes sur les disques peuvent être écrasées par de mauvaises données de parité lorsqu'un contrôleur d'ensemble estime qu'un ou plusieurs disques sont tombés en panne successivement et ont été remis en ligne pour reconstruction. Dans ce cas, les disques eux-mêmes ne sont pas tombés en panne et il n'y a aucune perte de données. Tout ce qui est requis, c'est que les disques soient réinsérés, en théorie. Sur les systèmes à remplacement à chaud, la gestion de la reconstruction des disques est souvent automatique, basée sur le retrait et le remplacement d'un disque défaillant. Ainsi, ce processus de perte et de remplacement d'un disque peut se produire sans aucune intervention humaine – et un processus de reconstruction peut commencer. Pendant ce processus, le système de disques est exposé à un risque et, si ce même événement devait se reproduire, l'ensemble de disques pourrait, en fonction de l'état des disques, commencer à entrelacer de mauvaises données sur les disques, écrasant le bon système de fichiers. C'est l'un des spectacles les plus déprimants pour un administrateur de serveur que de voir un système sans aucun disque défaillant perdre un ensemble entier en raison d'une opération de reconstruction inutile.
En théorie, ce type de situation ne devrait pas se produire et des garde-fous sont en place pour s'en prémunir, mais la détermination par un contrôleur de disque de bas niveau de l'état actuel et antérieur d'un disque, ainsi que de la qualité des données qui y résident, n'est pas aussi simple qu'il y paraît, et il est possible que des erreurs surviennent. Bien que cette situation soit improbable, elle se produit et ajoute un risque presque impossible à calculer aux systèmes RAID 5 et RAID 6. Nous devons prendre en compte le risque de défaillance de parité en plus du risque traditionnel calculé à partir du nombre de pertes de disques auxquelles un ensemble peut survivre au sein d'un pool. À mesure que les disques deviennent plus fiables, l'importance de l'événement de risque de défaillance de parité s'accroît.
De plus, la parité du RAID 5 et du RAID 6 introduit une surcharge système due au calcul de parité, qui est souvent pris en charge par du matériel RAID dédié. Ce calcul introduit une latence dans le sous-système de disques qui varie considérablement selon l'implémentation, tant matérielle que logicielle, rendant impossible d'énoncer des chiffres de performance des niveaux RAID les uns par rapport aux autres, car chaque implémentation sera unique.
Le plus grand problème lié aux choix de RAID aujourd'hui est peut-être que la facilité avec laquelle les indicateurs d'efficacité du stockage et de survie à la perte de disques peuvent être obtenus masque la vue d'ensemble de la fiabilité et des performances, car ces statistiques sont presque entièrement indisponibles. L'un des dangers des indicateurs est que les gens se concentrent sur les facteurs qui peuvent être facilement mesurés et ignorent ceux qui ne peuvent pas l'être, quel que soit leur potentiel d'impact.
Bien que tous les niveaux de RAID modernes aient leur place, il est essentiel qu'ils soient considérés dans leur contexte et avec une compréhension de l'ensemble de la portée des risques. Nous devrions nous efforcer de faire évoluer notre secteur d'un choix par défaut du RAID 5 vers un choix par défaut du RAID 10. Les disques sont bon marché et la perte de données est coûteuse.
[Note : Au cours des années qui se sont écoulées depuis la rédaction initiale de ce texte, la montée des risques d'URE (Unrecoverable Read Errors, erreurs de lecture irrécupérables) lors d'une opération de reconstruction a déplacé les principaux risques de ceux énumérés vers les risques liés aux URE pour les ensembles à parité.]
