Laisser un commentaire

RAID : tirer le meilleur de ses disques durs

Pour ceux qui l’ignorent, le RAID
consiste à rassembler plusieurs disques et de les utiliser de manière concurrente pour améliorer les performances ou la résilience des données. Quelque soit le nombre de disques réel, à l’usage ce sera comme si vous n’en aviez qu’un. On peut utiliser RAID à partir de deux disques et jusqu’à plusieurs centaines. Par ailleurs, il existe beaucoup de configuration RAID différentes, que vous vouliez assurer la redondance de vos données, améliorer les performances ou les deux à la fois, pour un serveur ou un ordinateur personnel, il y a forcement un niveau de RAID qui vous convient.

Software ou hardware

Les deux solutions existent en effet. Soit vous prenez une carte dédiée à laquelle vous allez connecter les disques, et c’est elle qui s’occuppe de toute la gestion du RAID, soit vous déléguez la gestion à votre OS.

Vous avez le choix, très bien, mais quelle décision prendre ? Chacun a évidemment des avantages et des inconvénients. Je ne vais pas vous faire un grand tableau comparatif mais vous énumérer les facteurs les plus déterminants.

Concernant le RAID software, c’est facile à mettre en place puisqu’une grande partie des systèmes d’exploitations l’intègre, il vous suffira de le configurer, ce n’est pas plus complexe que de partitionner. Vous aurez d’assez bonnes performances en RAID 0 et RAID 1. Enfin c’est très peu onéreux puisque ça ne vous coûte rien de plus que les diques !

En revanche, le principal problème sur RAID software est que comme c’est le système qui le gère, sur les niveaux de RAID où il y a un calcul de parité (RAID 5, 6…) c’est le processeur qui doit se charger du calcul et on a donc une baisse des performances du système. Alors cela n’est pas grave si c’est une tour avec 6 disques en RAID 5 et un bon CPU, mais lorsqu’il s’agit d’un serveur avec beaucoup de disques, le ralentissement peut devenir notable.

comparatif des performances de différents niveaux de raid
Performances de différentes configurations RAID avec des SSD. (étude intégrale)

Je pense que vous l’aurez compris, les avantages & inconvénients du RAID hardware sont l’exact opposé. C’est cher puisqu’il faut acheter des cartes RAID mais ça ne repose pas sur les ressources du système car les calculs sont fait par la carte dédiée. Ainsi si vous avez beaucoup de disques à gérer ça ne grèvera pas les performances du système.

En résumé, si c’est un ordinateur de bureau, la question ne se pose pas : software. Si c’est un serveur, c’est un peu plus complexe. Si tous vos disques sont en RAID 0 ou RAID 1, ne vous encombrez pas avec du hardware. En revanche, les utilisations les plus courantes concernent les RAID 10, 50 et 60. Plusieurs facteurs entrent alors en ligne de compte :

Défaillance des disques

Bien que les disques durs soient des périphériques très fiables, la panne n’est jamais très loin et il est inévitable qu’en vieillissant, vos disques finissent pas montrer des signes de faiblesse.

Ainsi, dans la première année de fonctionnement, un disque a 3% de chance de défaillir et cette proportion augmente nécessairement avec le temps. Avec sept disques sur une machine, vous avez 7% de chance d’en voir un lâcher la première année et au bout de la quatrième année, il est presque certain de rencontrer une panne sur un des périphériques. D’où l’utilité des niveaux de RAID avec redondance.

Sachez aussi que depuis quelques années, il est devenu assez courant d’utiliser des disques SSD dans les RAID. Ces disques apportent des temps de reconstruction bien inférieur ainsi que des taux d’erreur en lecture bien plus faible. Cependant, ils sont aussi leurs faiblesses et on n’est jamais à l’abris d’une défaillance du contrôleur. N’hésitez pas à consulter ce post ServerFault [en] pour en savoir plus.

Il est d’une part conseillé de surveiller l’état du RAID et des disques, et d’autre part, de savoir quoi faire pour le remettre en état (sinon, ça ne sert à rien…). Je vous explique tout cela dans mon article sur le diagnostique et la récupération d’une défaillance RAID.

PS : le RAID ne dispense pas de faire des sauvegardes !

Les RAID standards

Entrons dans le vif du sujet ! Voyons quels sont les différents niveaux de RAID existants et à quoi ils correspondent.

Avant de commencer, il est bien entendu possible de configurer un RAID avec des disques différents, mais il est néanmoins conseillé, si ce n’est d’avoir les même modèles de disques, d’avoir des disques de même capacité et ayant des taux de transferts similaires.

RAID 0

raid-0

Celui ci est très simple à concevoir. Tous les disques (deux disques au minimum) de votre array (votre grappe de disques) sont combinés, on parle de stripping ou d’agrégation par bandes.

Il y a deux avantages relatifs à ce niveau de RAID : la disponibilité de 100% de l’espace disque et les performances. En effet, les disques constituent souvent un goulot d’étranglement car les transferts sont longs. En RAID 0, toutes vos données sont divisées (stripped) et réparties équitablement sur les disques. Ainsi, si vous envoyez 1GB à stocker, 500MB vont aller sur le disque A et 500MB sur le disque B, en parallèle, on accélère donc les vitesses de transfert. De même en lecture, les disques accèdent à leur partie de l’information simultanément et l’envoient simultanément à la carte mère. De ce fait, si un des disques vient à défaillir, vous perdez l’ensemble des données !

Vous avez besoin de deux disques minimum pour un raid 0 et l’espace disponible est donc la capacité du plus petits des disques de la grappe multiplié par le nombre de disques.

RAID 1

raid-1

Ce type de RAID est aussi très aisé à appréhender. Le RAID 1 est aussi appelé mirroring car l’ensemble des données est écrit simultanément sur l’ensemble des disques. Vous n’avez donc aucune amélioration de performances en écriture, une amélioration en lecture car plusieurs disques sont sollicités à la fois. L’avantage réside surtout dans le fait d’une très bonne tolérance aux pannes puisque si vous perdez un disque, il y en a toujours un autre qui contient les mêmes données. Cela a néanmoins un coût puisque vous “perdez” 50% de votre espace disque utilisable.

L’espace utilisable n’est ici que l’espace d’un seul des disques, et s’ils ne sont pas de la même taille, du plus petit d’entre eux.

RAID 5

raid-5

Le RAID 5 est un compromis entre le RAID 0 et le RAID 1. Ce niveau de RAID fonctionne comme le RAID 0 dans la mesure où les données sont divisées et réparties sur plusieurs disques, mais il y a en plus une parité répartie. Le calcul de parité permet de récupérer l’ensemble des informations en cas de défaillance d’un disque.

Ainsi, si l’on perd un disque, il est possible de recréer l’ensemble des informations à partir des données restantes sur les n-1 disques et les parités réparties.

L’avantage, vous l’aurez compris, est que l’on bénéficie de bonnes performances, sans toutefois compromettre l’ensemble des données en cas de défaillance d’un disque contrairement au RAID 0. Enfin, on profite d’une tolérance à la perte d’un disque, sans toutefois limiter l’espace utilisable à l’espace du plus petit disque comme en RAID 1.

Néanmoins, il faut savoir qu’en cas de perte d’un disque, le temps nécessaire pour reconstituer la grappe (temps de calcul et d’écriture des données manquantes à partir des parités réparties) n’est pas négligeable. Pour un disque de 1TB, cela peut représenter une dizaine d’heures. Cependant, le système reste utilisable pendant le temps de reconstruction, même s’il est ralentit.

En outre, les probabilités montrent que l’on a de plus grandes chances de perdre un second disque dès lors qu’un premier vient de lâcher. De nombreux facteurs entrent en jeux, mais il y en a deux d’évidents :

Enfin, les disques durs actuels ont un taux d’erreur de lecture (URE). Cela signifie qu’il peut y avoir certaines données qui seront illisibles sur le disque. En d’autres termes, quelque soit la cause de cette erreur, les disques échoueront à lire certains bits.

Les constructeurs estiment le taux d’erreurs. Ce dernier est en général de l’ordre d’une erreur tous les 10^14bits donc d’une erreur tous les 12,5TB. Certains disques à usage professionnel ont des taux d’erreur plus bas, de l’ordre de 10^16 bits.

Tentons donc d’appréhender les chances d’avoir une reconstruction sans erreur de votre RAID 5. Nous appliquerons la formule suivante où P est la probabilité de reconstituer l’array, N le nombre de disques et S la taille de ces derniers : P=(1-10-14)8109N*S. Faites une estimation de la probabilité de reconstitution de votre array ci-dessous :

:

(en GB) :

Pour calculer l’espace utile utilisable, la formule est assez simple. Pour N représentant le nombre de disques et S la taille des disques (ou du plus petit s’ils sont de tailles différentes), l’espace utilisable correspond à (N-1)*S :

:

(en GB) :


### RAID 6
raid-6

Le RAID 6 est une évolution du RAID 5. Il fonctionne de la même manière, mais permet de supporter la perte de deux disques grace à une double parité.

Le RAID 6 offre donc une plus grande redondance au détriment de l’espace de stockage puisque l’on “perd” l’équivalent de deux disques en espace de stockage. À cela s’ajoute deux défauts majeurs :

Une vitesse d’écriture moindre par rapport au RAID 5 due à des calculs de parité plus complexes, Un temps de reconstruction de l’array très élevé en cas de défaillance de deux disques.

Le RAID 6 nécessite un minimum de quatre disques et l’espace utile est de (N-2)S où N est le nombre de disques et S la taille de ceux-ci. Calculez l’espace avec le calculateur ci-dessous :

:


(en GB) :



## Les niveaux de RAID combinés
Les niveaux de RAID combinés sont simplement l’association de deux RAID simples à la fois, sur deux niveaux. La notation est à deux chiffres; le premier indique le niveau de RAID des grappes, et le second correspond au niveau global inter-grappes.
### RAID 01
raid-0-1

Les grappes sont donc en RAID 0 et celles-ci sont ensuite en mirroring. Cela requiert un minimum de quatre disques. On obtient de bonnes performances et une forte redondance, mais le ratio espace/redondance, et par conséquent prix/redondance est très élevé. Ce niveau de RAID est donc peu utilisé.

Pour caluler l’espace utilisable, la formule correspond à NS où N est le nombre de disque par grappe et S la capacité des disques.

Sa fiabilité est relativement faible puisque le défaut d’un disque entraine le défaut de toute la grappe. Par conséquent, deux disques défectueux : un dans la grappe A et un dans la grappe B rendent l’ensemble du système inopérant.

Sont principal avantage est qu’il permet de facilement avoir des snapshots physiques : dans un système à trois grappes ou plus, le retrait d’une grappe complète permet d’avoir un instantané du système au moment t.
### RAID 10
raid-10

Ce niveau est l’inverse du précédent. On procède d’abords au mirroring et ensuite au stripping. Il nécessite, tout comme le RAID 01, quatre disques au minimim. L’avantage est que l’on doit avoir un défaut sur tous les éléments d’une grappe pour mettre en défaut le RAID dans son ensemble. Par ailleurs, la reconstruction est assez rapide. On perd cependant au minimum 50% de l’espace de stockage. Puisque le calcul de capacité pour le RAID 10 est le suivant GS où G est le nombre de grappe et S la capacité d’un disque.

Bien que semblable au RAID 01, le RAID 10 est par conséquent bien plus fiable.
### RAID 50
raid-50

Ce niveau de RAID, tout comme son ainé le RAID 5 est très utilisé car il présente un bon compromis performances/espace/fiabilité. Les grappes sont donc des grappes en RAID 5 et celles-ci sont ensuite strippées en RAID 0.

Ce niveau de RAID permet de jouer sur le taux de redondance et l’espace. En effet, nous avons vu qu’un RAID 5 requiert un minimum de trois disques et permet la perte d’un disque en monopolisant l’équivalent de l’espace d’un disque pour les calculs de redondance.

Cela signifie que sur une grappe, il est possible de mettre plus de trois disques. Avec douze disques par exemple, on peut imaginer constituer quatre grappes de trois disques, ou trois grappes de quatre disques. Dans le premier cas, l’espace d’un disque par grappe est requis pour la parité, soit quatre fois la capacité d’un disque; dans le second cas, on ne “perd” que l’équivalent de trois disques. Cependant, le premier système permet la perte de jusqu’à quatre disque (un par grappe), tandis que le second ne peut en perdre que trois.

En outre, plus le nombre de disques par grappe est grand, plus la probabilité de perdre deux disques dans la même grappe est élevée. Enfin, comme expliqué pour le RAID 5, plus une grappe est volumineuse en espace disque, plus la probabilité de reconstituer l’array diminue…

Il faut aussi considérer l’aspect performances. Étant donné que chaque grappe consitue un élément du RAID 0, plus on a de grappes, plus grande sera la parallélisation pour les lectures écritures de données. Le système gagnera donc en rapidité… Que de compromis n’est-ce pas ?

Le calcul de l’espace dépend donc pour le RAID 5 du nombre de disques par grappe. La formule est (N-G)S où N correspond au nombre total de disques, G le nombre de grappes et S la capacité des diques. Estimez l’espace utile de votre RAID 50 :

:


:


(en GB) :



### RAID 60
raid-60

Le RAID 60 est très similaire au RAID 50. Il fonctionne de la même manière à cela près que les grappes sont en RAID 6 au lieux d’être en RAID 5. Il permet donc la perte de plus de disques avec une redondance plus grande, mais de moins bonnes performances et moins d’espace.

Il requiert un minimum de huit disques et la formule pour calculer l’espace utilisable est (N-2G)S :

:


:


(en GB) :


Nous avons donc fait le tour des niveaux de RAID les plus répandus et ce que qu’ils impliquent. Il ne vous reste donc plus qu’à effectuer un choix en adéquation avec votre utilisation. Sachez que c’est même possible de mettre ça en place dans certains PC portables !

Et vous, quelle est votre expérience avec le RAID ? Des problèmes rencontrés, des données sauvées ?

Commentaires

Rejoignez la discussion !

Vous pouvez utiliser Markdown pour les liens [ancre de lien](url), la mise en *italique* et en **gras**. Enfin pour le code, vous pouvez utiliser la syntaxe `inline` et la syntaxe bloc

```
ceci est un bloc
de code
```