Comparaison des différents types de RAID

De Linux Server Wiki
Aller à la navigation Aller à la recherche

RAID 0

  • Stripping : les données sont écrites aléatoirement sur l'un des disques de l'array
  • Aucune redondance de donnée donc aucune tolérance à la panne. La défaillance d'un disque entrain
  • Nombre de disque minimum : 2
  • Bonne performance en lecture et écriture (meilleure qu'un disque seul)

RAID 1

  • Mirroring : les données sont dupliquées sur chaque disque de l'array
  • La duplication des données assure la redondance
  • Nombre de disque minimum : 2
  • Performance en lecture : moyenne, meilleure qu'une disque seul
  • Performance en écriture : moyenne, inférieur à un disque seul

RAID 3, RAID 4, RAID 5

  • Même principe pour les 3 : les données sont écrites aléatoirement sur les disques, avec existence d'un système de parité.
    • Pour RAID 3 et 4 : disque dédié à la parité, qui fait goulot d'étranglement
    • Pour RAID 5 : parité distribution des bits de parités sur l'ensemble des disques de l'array, ce qui efface le goulot d'étranglement et améliore les performances
  • Principal défaut : overhead pour le calcul de la parité, nécessitant un contrôleur hardware de qualité, ou un CPU puissant en raid software
  • Nombre de disque minimum : 3
  • Tolérance à la panne de 1 disque (reconstruction des données soit via les données restantes, soit données + parité)
  • Performance en lecture : Bonne
  • Performance en écriture : moyenne

RAID 6

  • Même principe que le RAID 5 mais avec une double parité
  • Nombre de disque minimum : 4
  • Tolérance à la panne de 2 disque

RAID 7

  • Nécessité un contrôleur hardware avec un cache. Similaire a un RAID 3 ou 4, mais les performances sont améliorés par le cache.

RAID 01(0+1) et 10(1+0)

  • Mirroring et stripping sans parité
  • Nombre de disque minimum : 4
  • Combine la vitesse du RAID 0 et la redondance du RAID 1, sans nécessité d'une parité
  • Grossièrement pour le RAID-10 : on créé 2 arrays RAID-1 avec chacune 2 disque. Ces arrays sont mergées au sein d'un array RAID-0.
  • Tolérance à la panne : 1 disque par grappe raid 1. Si les 2 disques de la même grappe raid 1 tombent en panne : perte de donnée.
  • RAID 1+0 permet une meilleur tolérance aux pannes et une meilleure performance que le RAID 0+1

Schéma d'un Raid 10 mdadm

avec mdadm on peut créer directement un raid10 en 1 étape en passant l'argument --level=10. Par exemple : mdadm --create /dev/md2 --level=10 --raid-devices 4 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2. Il est par contre ensuite un peu complexe d'identifier quel disque fait parti de quelle grappe raid1.
https://documentation.suse.com/sles/15-SP1/html/SLES-all/cha-raid10.html#sec-raid10-complex

    Number   Major   Minor   RaidDevice State
       0       8        2        0      active sync set-A   /dev/sda2
       1       8       18        1      active sync set-B   /dev/sdb2
       2       8       34        2      active sync set-A   /dev/sdc2
       3       8       50        3      active sync set-B   /dev/sdd2

	          RAID0
      ______________|______________
      |			           |
    RAID1			 RAID1
  sda2 sdb2		       sdc2 sdd2
   A	B			A    B

Notez les indications set-A et set-B qui sont trompeuses. Vous pouvez identifier les disques ayant les données en miroir avec le script suivant en faisant varier la valeur de skip :

for disk in sda2 sdb2 sdc2 sdd2
do
  echo -n "$disk = ";
  dd if=/dev/$disk skip=3000 bs=1M count=1 2>/dev/null | md5sum;
done

Dans mon cas, quelque soit le skip, j'ai un retour de ce type :

sda2 = d570440706bb54f2719083ce896c32c6  -
sdb2 = d570440706bb54f2719083ce896c32c6  -
sdc2 = b95d904384f093f21f73178e5dd34371  -
sdd2 = b95d904384f093f21f73178e5dd34371  -

Qui signifie que sda et sdb sont des miroirs, et que sdc et sdd sont un autre miroir