RAIDS ***** Il existe de nombreux type de RAID. Ce document va simplement analyser les principaux, et définir leurs fonctionnements 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. Chaque 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. .. figure:: data/20100811_52.jpg 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. .. figure:: data/20100811_53.jpg 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. .. figure:: data/20100811_54.jpg 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 ! .. figure:: data/20100811_55.jpg .. note:: 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 & B -> Le disque global survit grace au miroir (C-D). On est UP * A & C -> Destruction des 2 miroirs, on est DOWN * A & D -> Destruction des 2 miroirs, on est DOWN * B & C -> Destruction des 2 miroirs, on est DOWN * B & D -> Destruction des 2 miroirs, on est DOWN * C & 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 & B -> On perd l’une des colonnes, donc tout le disque est DOWN * A & C -> B est le miroir de A et D est le miroir de C, on est UP * A & D -> B est le miroir de A et C est le miroir de D, on est UP * B & C -> A est le miroir de B et D est le miroir de C, on est UP * B & D -> A est le miroir de B et C est le miroir de D, on est UP * C & 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 ! RAID 5 ====== Le RAID 5 combine la méthode du volume agrégé par bandes (striping) à une parité répartie. Il s’agit là d’un ensemble à redondance N+1. La parité, qui est incluse avec chaque écriture se retrouve répartie circulairement sur les différents disques. Chaque bande est donc constituée de N blocs de données et d’un bloc de parité. Ainsi, en cas de défaillance de l’un des disques de la grappe, pour chaque bande il manquera soit un bloc de données soit le bloc de parité. Si c’est le bloc de parité, ce n’est pas grave, car aucune donnée ne manque. Si c’est un bloc de données, on peut deviner son contenu à partir des N-1 autres blocs de données et du bloc de parité. L’intégrité des données de chaque bande est préservée. Donc non seulement la grappe est toujours en état de fonctionner, mais il est de plus possible de reconstruire le disque une fois échangé à partir des données et des informations de parité contenues sur les autres disques. .. figure:: data/20100811_56.jpg