Raid Logiciel - Linux

raid

Le RAID,ou Redundant Array of Independent Disks (regroupement redondant de disques indépendants) est un ensemble de mesures matériel ou logiciel permettant de répartir le stockage entre plusieurs disques durs.

Le Raid matériel est géré par une carte additionnelle qui crée les volumes logiques avec les disques physiques. Cette carte dispose de son propre controleur (CPU + RAM). Le système d'exploitation ne voit plus les disques physiques, mais uniquement les volumes gérés par la carte RAID.

Le Raid logiciel est géré entièrement  par le système d'exploitation, qui voit les disques physiques et crée un ou plusieurs volumes logiques qui peuvent ensuite être formatés avec n'importe quel système de fichiers.

Sous Linux, le logiciel mdadm gére le Raid.

Je ne parlerai que du Raid Logiciel sous Linux avec mdadm ...


La configuration hardware

  • virtualbox
  • stockage

Pour expliquer les différentes configurations Raid sous Linux, 

j'utilise une machine virtuelle VirtualBox sous Linux Mint 19.1

Un disque SATA

  • sata 0 - sda - 20Go

Cinq disques SCSI

  • scsi 0 - sdb - 2Go
  • scsi 1 - sdc - 2Go
  • scsi 2 - sdd - 2Go
  • scsi 3 - sde - 2Go
  • scsi 4 - sdf - 2Go

Le système d'exploitation est sur le disque SATA sda1

Les disques SCSI vont créer les volumes logiques


Vous pouvez adapter mes exemples à votre configuration matérielle ...


Installation de mdadm

Dans un terminal [Ctrl]+[t], saisir les commandes suivantes

Mise à jour

  • sudo apt-get update
  • sudo apt-get upgrade


Installation de mdadm

  • sudo apt-get install mdadm


Visualiser les disques

  • lsblk
  • fdisk-l



Visualisation des disques

  • sudo lsblk


ou

  • sudo fdisk -l

formatage des disques physiques


Si les disques contiennent déjà une ou plusieurs partitions, vous devez supprimer les partitions existantes

Attention
Cette opération detruira toutes les données présentes sur les disques
Si besoin faire une sauvegarde avant


Supprimer la(les) partition(s) existante(s) du disque sd(x)

  • sudo fdisk /dev/sd(x)
  •   choix p     # Affichage des partitions existantes
  •   choix d     # Suppression de la  partition


Si plusieurs partitions, choisir la 1ere partition pour la supprimer et recommencer pour les autres éventuelles partitions

  •   choix w     # Ecriture de la modification



Création de la nouvelle partition sur le disque sd(x)

  • sudo fdisk /dev/sd(x)
  •   choix n    # Création de la nouvelle partition
  •   choix p    # Partition primaire
  •   Partition number - choix 1    # Par defaut - Partition n° 1
  •   Fisrt sector (2048) - Valider par [Enter] # Par defaut 2048
  •   Last sector (xxxxxxx) - Valider par [Enter] # Dernier secteur du disque


Changer le type de la partition - Mettre le type fd pour le Raid

  •   choix t   # Modifier le type de partition
  •   choix L (Grand L)   # Pour afficher tous les types possibles
  •   choix fd    # Type Linux Raid Auto

  •   choix w  # Ecrire la modification


RAID 0

raid_0


RAID 0 : Volume agrégé par bandes

Le RAID 0volume agrégé par bandes (striping), est une configuration qui permet d'augmenter les performances de la grappe en faisant travailler les disques en parallèle.

La capacité totale est égale à celle du plus petit disque multiplié par le nombre de disques présents dans la grappe.

L'espace excédentaire des autres disques de la grappe restera inutilisé.

Il est donc conseillé d'utiliser des disques de même capacité.

Le défaut du du RAID 0 est que la perte d'un seul disque entraîne la perte de toutes les données.



  • mdadm_raid0
  • mdstat_raid0
  • mdadm-D_raid0

Création d'un RAID 0 md0 avec 5 disques


Dans un terminal [Ctrl]+[t], saisir la commande

  • sudo mdadm --create --verbose /dev/md0 --level=0 --assume-clean --raid-device=5 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1


Explication:

  • --create # Création de l'array Raid
  • --verbose # Affichage dans le terminal de toutes les étapes de création
  • /dev/md0 # Nom de l'array - Multiple Device 0
  • --level=0 # Raid 0
  • --assume-clean #  Informe mdadm que les disques sont vides et de passer l'étape de synchronisation
  • --raid-devices=5 # Nombres de disques physiques dans l'array - 5 disques
  • /dev/sdb1 # 1er disque
  • /dev/sdc1 # 2eme disque
  • /dev/sdd1 # 3eme disque
  • /dev/sde1 # 4eme disque
  • /dev/sdf1 # 5eme disque


Controle du RAID 0 md0

  • sudo cat /proc/mdstat
  • sudo mdadm -D /dev/md0



RAID 1

raid_1


RAID 1 : Disques en miroir

Le RAID 1 (mirroring) consiste en l'utilisation de n disques redondants, chaque disque de la grappe contenant à tout moment exactement les mêmes données. 

La capacité totale est égale à celle du plus petit élément de la grappe.

L'espace excédentaire des autres disques de la grappe restera inutilisé.

Il est donc conseillé d'utiliser des disques de même capacité.

Cette solution offre un excellent niveau de protection des données.

Elle accepte une défaillance de n − 1 disques.


  • mdadm-raid_1-md0
  • mdadm-raid_1-md1
  • mdadm-D-md0
  • mdadm-D-md1
  • mdstat-md0-md1

Création de deux RAID 1 md0 et md1 avec 2 disques dans chaque volume


1er Raid 1 - md0
Dans un terminal [Ctrl]+[t], saisir les commandes

  • sudo mdadm --create --verbose /dev/md0 --level=1 --assume-clean --raid-device=2 /dev/sdb1 /dev/sdc1
  • Continue creating array [y/n]  - Repondre puis [Enter]

2ème Raid 1 - md1
  • sudo mdadm --create --verbose /dev/md1 --level=1 --assume-clean --raid-device=2 /dev/sdd1 /dev/sde1
  • Continue creating array [y/n]  - Repondre y puis [Enter]



Explication:

  • --create # Création de l'array Raid
  • --verbose # Affichage dans le terminal de toutes les étapes de création
  • /dev/md0 # Nom de l'array - Multiple Device 0
  • --level=1 # Raid 1
  • --assume-clean #  Informe mdadm que les disques sont vides et de passer l'étape de synchronisation
  • --raid-devices=2 # Nombres de disques physiques dans l'array - 2 disques
  • /dev/sdb1 # 1er disque
  • /dev/sdc1 # 2eme disque
  • /dev/md1 # Nom de l'array - Multiple Device 1
  • /dev/sdd1 # 1eme disque
  • /dev/sde1 # 2eme disque


Controle des deux RAID 1 md0 et md1

  • sudo cat /proc/mdstat
  • sudo mdadm -D /dev/md0
  • sudo mdadm -D /dev/md1



  • mdadm-raid_1-3disk
  • mdadm-D-raid-1-3disk
  • mdstat-raid_1-3disk

Création d'un RAID 1 md0 avec 3 disques

Les données sont synchronisées sur les 3 disques.

Dans un terminal [Ctrl]+[t], saisir la commande

  • sudo mdadm --create --verbose /dev/md0 --level=1 --assume-clean --raid-device=3 /dev/sdb1 /dev/sdc1 /dev/sdd1
  • Continue creating array [y/n]  - Repondre puis [Enter]


Explication:
  • --create # Création de l'array Raid
  • --verbose # Affichage dans le terminal de toutes les étapes de création
  • /dev/md0 # Nom de l'array - Multiple Device 0
  • --level=1 # Raid 1
  • --assume-clean #  Informe mdadm que les disques sont vides et de passer l'étape de synchronisation
  • --raid-devices=3 # Nombres de disques physiques dans l'array - 3 disques
  • /dev/sdb1 # 1er disque
  • /dev/sdc1 # 2eme disque
  • /dev/sdd1 # 3eme disque

Controle du RAID 1 md0

  • sudo cat /proc/mdstat
  • sudo mdadm -D /dev/md0



RAID 5

RAID_5


RAID 5 : volume agrégé par bandes à parité répartie

Le RAID 5 combine la méthode du volume agrégé par bandes (striping) à une parité répartie.

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 du volume, pour chaque bande il manquera soit un bloc de données soit le bloc de parité.

Le bloc parité sera recréé avec les autres blocs de données.

Le bloc de données, sera recréé avec les autres blocs de données et du bloc de parité.

Le RAID 5 ne supporte la perte que d'un seul disque à la fois,

Pour limiter le risque on peut ajouter un disque supplémentaire (disque de spare) pour remplacer automatiquement le disque defaillant.

Bien sûr, pendant tout le temps du recalcul de la parité, le disque est disponible normalement, l'ordinateur se trouve juste un peu ralenti. 


  • mdadm-raid_5-5disk
  • mdstat-raid_5-5disk
  • mdadm-D-raid_5-5disk

Création d'un RAID 5 md0 avec 5 disques




Dans un terminal [Ctrl]+[t], saisir la commande

  • sudo mdadm --create --verbose /dev/md0 --level=5 --assume-clean --raid-device=5 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sdd1 /dev/sdf1


Explication:

  • --create # Création de l'array Raid
  • --verbose # Affichage dans le terminal de toutes les étapes de création
  • /dev/md0 # Nom de l'array - Multiple Device 0
  • --level=5 # Raid 5
  • --assume-clean #  Informe mdadm que les disques sont vides et de passer l'étape de synchronisation
  • --raid-devices=5 # Nombres de disques physiques dans l'array - 5 disques
  • /dev/sdb1 # 1er disque
  • /dev/sdc1 # 2eme disque
  • /dev/sdd1 # 3eme disque
  • /dev/sde1 # 4eme disque
  • /dev/sdf1 # 5eme disque


Controle du RAID 5 md0


  • sudo cat /proc/mdstat
  • sudo mdadm -D /dev/md0



  • mdadm-raid_5-4disk-1spare
  • mdstat-raid_5-4disk-1spare
  • mdadm-D-raid_5-4disk-1spare

Création d'un RAID 5 md0 avec 4 disques et 1 disque de spare




Dans un terminal [Ctrl]+[t], saisir la commande

  • sudo mdadm --create --verbose /dev/md0 --level=5 --assume-clean --raid-device=4 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sdd1 --spare-device=1 /dev/sdf1



Explication:

  • --create # Création de l'array Raid
  • --verbose # Affichage dans le terminal de toutes les étapes de création
  • /dev/md0 # Nom de l'array - Multiple Device 0
  • --level=5 # Raid 5
  • --assume-clean #  Informe mdadm que les disques sont vides et de passer l'étape de synchronisation
  • --raid-devices=4 # Nombres de disques physiques dans l'array - 4 disques
  • /dev/sdb1 # 1er disque
  • /dev/sdc1 # 2eme disque
  • /dev/sdd1 # 3eme disque
  • /dev/sde1 # 4eme disque
  • --spare-device=1 # Nombre de disque physique de sapre
  • /dev/sdf1 # 5eme disque - Disque de spare



Controle du RAID 5 md0

  • sudo cat /proc/mdstat
  • sudo mdadm -D /dev/md0



Changement d'un disque en Raid 5

  • mdadm-mise-defaut-sdb1
  • mdadm-D-defaut-rebuilding
  • mdadm-raid-5-OK-defaut-sdb1
  • mdadm-remove-sdb1
  • mdadm-D-sdb1-absent
  • mdadm-ajout-new-sdb1
  • mdadm-D-ajout-new-sdb1
Changement disque en défaut par disque de spare


Nous avons créé un Raid 5 avec 4 disques et 1 disque de spare

Le Raid 5

  • /dev/sdb1
  • /dev/sdc1
  • /dev/sdd1
  • /dev/sde1


Le spare

  • /dev/sbf1


Nous allons similer un defaut sur le disque /dev/sdb1

  • sudo mdadm --manage /dev/md0 --set-faulty /dev/sdb1 # Mise en defaut du disque /dev/sdb1

Voir le disque en défaut

  • sudo mdadm -D /dev/md0  # Le disque /dev/sdb1 est en status faulty et le disque /dev/sdf1 est en status spare rebuilding


Le Raid 5 (4 disques + 1 spare) fonctionne bien, dès la mise en defaut d'un disque, le disque de spare a pris sa place dans le Raid 5

Une fois le spare rebuilding terminé, le Raid 5 est actif. 

  • /dev/sdf1 # Disque sdf1 OK
  • /dev/sdc1
  • /dev/sdd1
  • /dev/sde1
  • /dev/sdb1 # Disque sdb1 en defaut


On enleve le disque en defaut /dev/sdb1 du Raid 5

  • sudo mdadm --manage /dev/md0 --remove /dev/sdb1 # Retrait du disque en defaut /dev/sdb1 


On vérifie le retrait du disque /dev/sdb1

  • sudo mdadm -D /dev/md0  # Il n'y a plus de disque de spare


On change physiquement le disque /dev/sdb1 # Changement physique du disque et formatage en type fd


On rajoute le nouveau disque /dev/sdb1 dans le Raid 5

  • sudo mdadm --manage /dev/md0 --add /dev/sd1  # Rajout du nouveau disque /dev/sdb1


On vérifie l'ajout du nouveau disque /dev/sdb1 en spare

  • sudo mdadm -D /dev/md0  # Le nouveau disque /dev/sdb1 est en spare




Autres Options avec mdadm

superblock


  • sudo mdadm -S /dev/md(x)  # Stopper le Raid

  • sudo mdadm -D /dev/md(x) # Afficher le détail du Raid




  • sudo mdadm --zero-superblock /dev/sd(x,y)  # Suppression du superblock du disque physique


La structure d'un système de fichiers Linux est définie par trois entités : le superbloc, le fichier des inodes et les fichiers de données.

Le superbloc contient les informations sur l'espace utilisé dans la partition, la liste des inodes, des informations sur les fichiers de données.



Formatage, Montage et modification de/etc/fstab


Quelque soit le Raid utilisé, le volume logique doit etre formaté et monté sur un répertoire


  • sudo mkfs.ext4 /dev/md(x)  # Formatage ext4 du volume logique md(x)
  • sudo mount /dev/md(x) /home/mon_repertoire  # Montage du volume logique md(x) sur le repertoire /home/mon_repertoire


Modification du fichier /etc/fstab

  • sudo nano /etc/fstab

Ajouter la ligne

  • /dev/md(x) /home/mon_repertoire ext4 defaults 0 1


[Ctrl]+[o] pour sauvegarder le fichier

[Crtl]+[x] pour quitter l'éditeur