Raid Logiciel - Linux
La configuration hardware
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
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 : Volume agrégé par bandes
Le RAID 0, volume 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.
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 : 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.
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 y puis [Enter]
- 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
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 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=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 : 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.
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
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
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
- 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