Le RAID est un ensemble de techniques de virtualisation permettant de répartir les données sur plusieurs disques durs afin d'améliorer soit les performances, soit la sécurité ou la tolérance aux pannes de l'ensemble des systèmes.
Il existe plusieurs types de RAID, certains sont dédiés au gain de vitesse le RAID 0 par exemple, alors que d'autres sont dédies à la sécurité des données comme le RAID 1.
Chaque type de RAID a des particularités bien spécifiques et peut être utilisé suivant vos besoins. Toutefois certains ne sont pas recommandés, c'est ce que nous allons voir ci-dessous.
Explication du RAID 0
Le RAID 0 est non redondant. Au minimum 2 disques vont être mis en commun pour présenter une virtualisation du stockage et bluffer l'OS qui croira ne voir qu'un seul disque.
Dans les baies de disques des fabriquants, on appelera LUN l'objet virtuel résultant d'un tel agencement. Le RAID 0 est rarement utilisé par les fabriquants parce que non redondant.
Quand on écrit sur un disque simple, les données remplissent les blocs l'un après l'autre. Les I/O (entrées/sorties) de 8k par exemple, vont consommer l'espace par paquets de 8k contigus.
I/O ne peut être envoyée vers le disque que lorsque la précédente est validée.
L'intérêt du RAID 0 à 2 colonnes (ou 2 disques), ou STRIPES, est d'accélérer les taux en écriture à condition de pouvoir envoyer 2 I/O au même moment.
Pour que cela soit réellement efficace, et que le gain en performance approche la théorie, il faut que ces I/O soient le plus souvent possibles contenues dans la largeur de chaque colonne.
Prenez 2 colonnes de 8k. (On peut définir la largeur de la colonne selon ses besoins, ce qui n'a aucune incidence sur la volumétrie totale du disque.) En théorie, je peux envoyer 2 x 8k en simultané, puisqu'il y a 2 colonnes.
Mais est-ce que ça marche vraiment bien ?
En fait non : si j'ai une appli qui envoie des I/O de 4k. Quand elle a fini d'écrire, je peux me trouver avec une colonne à moitié entamée. Une prochaine I/O qui écrit dans le même disque va alors continuer le remplissage à cet endroit. Les 4k de la première colonne ne suffisant pas à ma premiere I/O, je vais aussi consommer les 4 premiers k de la deuxième colonne. Et ainsi de suite ! Donc mes 2 colonnes ne sont jamais utilisées en simultané.
Pour que le RAID 0 soit vraiment efficace, il faut :
- que la largeur des colonnes (ou Stripe Unit Size) soit nettement supérieure à la taille des I/O
- que mes applications soient capables d'envoyer plusieurs I/O en même temps, ce que l'on appelle des écritures en RANDOM et non pas en Sequentiel.
Et avec du cache ?
Si je dispose de cache avant que les données de soient envoyées physiquement sur le disque, il peut servir de tampon pour accueillir les I/O.
Une baie intelligente, avec un contrôleur, peut renvoyer à l'OS et donc aux applications, un acquiescement, ou commit, dès que les I/O sont dans le cache, ce qui permet à l'application de continuer à travailler, et au contrôleur d'essayer d'optimiser la répartition de ses I/O. Mais si les colonnes sont trop petites, ça ne changera rien : on n'a pas de gain de performance.
Explication du RAID 1
Le RAID 1 ou miroir propose une redondance. Avec 2 disques minimum, les données sont écrites en parallèle et à l'identique sur les 2 disques. Si l'un des disques casse, dans l'absolu, mon application ne devrait pas en souffrir ... ou alors une I/O est peut-être perdue dans les limbes mais je n'ai pas besoin de faire une restauration.
Explication du RAID 0+1
Le RAID 0+1, c'est du STRIPE auquel on a rajouté du MIROIR.
Chaque miroir est donc constitué de 2 ou plusieurs colonnes, ce qui n'améliorera les performances que dans les conditions énoncées plus haut. L'architecture de chaque miroir est identique : tous les miroirs ont le même nombre de colonnes. Il faut au moins 4 disques, 2 par miroir.
Explication du RAID 1+0
Le RAID 1+0, ou RAID 10, c'est un truc plus futé. Pour le même nombre de disques que les RAID 0+1, à savoir 4 disques au minimum et la même capacité utile (4 x la taille d'un disque, divisé par deux à cause du miroir, soit au total 2 x la taille d'un disque), on divise par deux le risque en cas de destruction simultané de 2 disques durs. Mais voyons d'abord l'agencement du RAID 10.
Tout d'abord le RAID 10 doit être créé dès lé debut, alors que le RAID 0+1 peut recevoir un miroir après coup, que l'on rajoute sur un RAID 0.
L'agencement consiste à faire un RAID 0 à partir de disques qui sont en miroir !
Soit les disques A B C D.
Le RAID 0 c'est un disque global qui écrit sur A-B en 2 colonnes.
Le RAID 1 c'est un disque global qui écrit sur A=B les mêmes données.
Le RAID 0+1 c'est (A-B)=(C-D), chaque miroir composé de 2 colonnes.
Le RAID 1+0 c'est (A=B)-(C=D), 2 colonnes, chacune étant redondante.
Si RAID 0+1 et RAID 1+0 sont protégés de la même manière lorsqu'un seul disque dur casse. En revanche, lorsque 2 disques sont détruits.
voyons ce qu'il peut se passer :
RAID 0+1 : Cassons 2 disques en même temps
A et B -> Le disque global survit grace au miroir (C-D). On est UP
A et C -> Destruction des 2 miroirs, on est DOWN
A et D -> Destruction des 2 miroirs, on est DOWN
B et C -> Destruction des 2 miroirs, on est DOWN
B et D -> Destruction des 2 miroirs, on est DOWN
C et D -> Le disque global survit grace au miroir (A-B). On est UP
Donc on survit 2 fois sur 6, soit 33% de survie !
RAID 1+0, même scénario :
A et B -> On perd l'une des colonnes, donc tout le disque est DOWN
A et C -> B est le miroir de A et D est le miroir de C, on est UP
A et D -> B est le miroir de A et C est le miroir de D, on est UP
B et C -> A est le miroir de B et D est le miroir de C, on est UP
B et D -> A est le miroir de B et C est le miroir de D, on est UP
C et D -> On perd l'une des colonnes, donc tout le disque est DOWN
Où l'on voit que l'on survit ici 4 fois sur 6, donc 66% de survie !
On démontre ainsi que 4 disques durs de même capacité fournissent une redondance maximale avec des gains de performance optimisés (pour peu que l'on sache comment ses applications travaillent) en consommant la même capacité, à condition d'avoir dès le début créé le RAID 10 ... parce qu'on ne peut pas ajouter une colonne à un miroir !
Ah ! Une dernière chose : le RAID 0 n'est pas seulement moins redondant que le miroir RAID 1. Il est aussi moins sécurisé qu'un simple disque dur.
En effet, prenons le temps moyen avant la panne du disque dur, par exemple de 10 000 heures,
Un RAID 0 à 2 disques de 10 000h, cela signifie que statistiquement, au bout de 10 000h, les 2 disques vont tomber en panne ... donc que la panne arrive en moyenne toutes les 5 000 heures ! Donc deux fois plus de chance de perdre toutes vos données.
Avec le RAID 1, les disque durs ne durent pas plus longtemps, mais quand l'un casse, vous avez le temps de réagir et de le remplacer, sans perdre un seul DATA.
Partager cet article