mdadm : créer, gérer un RAID sur Linux

malekalmorte

Date création :

23 décembre 2019

Dernière modification :

Sur Linux, mdadm (manage MD devices) est l’utilitaire qui permet de créer et gérer un RAID logiciel.
C’est à dire la combinaison de plusieurs disques pour créer un ou plusieurs lecteurs logiques.
Cela permet une redondance des données afin d’éviter ou minimiser la perte de données.

mdadm permet de créer un RAID logiciel sur Linux.
Ce tutoriel vous guide pour utiliser mdadm.

Comment créer et gérer un RAID sur Linux avec mdadm

Qu’est-ce qu’un RAID ?

Un RAID permet de combiner des disques pour éviter la perte de données et parfois améliorer les performances.
Il existe plusieurs types de RAID. On parle alors de niveaux de RAID.
Cet article complet les présentes.

mdadm permet de créer, gérer un RAID sur Linux.
Cet article vous guide pour y parvenir.

L’outil mdadm de Linux

Il permet donc de gérer un RAID logiciel.
C’est un outil pour créer, surveiller et gérer un RAID sur Linux.

Voici les commandes ou actions possibles :

  • create : Créez un nouveau tableau avec des superblocs par périphérique (création normale).
  • assemble : Assemblez les parties d’un tableau précédemment créé dans un tableau actif. Les composants peuvent être donnés explicitement ou recherchés. mdadm vérifie que les composants forment un tableau de bonne foi et peut, sur demande, manipuler des informations de superbloc afin d’assembler un tableau défectueux. En règle générale, vous effectuez cette opération dans les scripts d’initialisation après le redémarrage.
  • Follow or Monitor : Surveillez un ou plusieurs périphériques md et réagissez à tout changement d’état. Cela n’a de sens que pour les tableaux raid1, 4, 5, 6, 10 ou multi-trajets car seuls ceux-ci ont un état intéressant. raid0 ou linear n’ont jamais de disques manquants, de rechange ou en panne, il n’y a donc rien à surveiller. En général, vous le faites également après le redémarrage.
  • Build : Créez un tableau qui n’a pas de superblocs par périphérique. Pour ces types de tableaux, mdadm ne peut pas faire la différence entre la création initiale et l’assemblage ultérieur d’un tableau. Il ne peut pas non plus vérifier que les appareils appropriés ont été demandés. Pour cette raison, le mode Build ne doit être utilisé qu’avec une compréhension complète de ce que vous faites.
  • Grow : Agrandir, réduire ou remodeler une matrice d’une manière ou d’une autre. Options de croissance actuellement prises en charge, notamment la modification de la taille active des périphériques composants au niveau RAID 1/4/5/6 et la modification du nombre de périphériques actifs dans RAID1.
  • manage : C’est pour faire des choses sur des composants spécifiques d’une baie, comme ajouter de nouvelles pièces de rechange et supprimer des périphériques défectueux.

mdadm : créer un RAID

Sur Linux, le RAID se fait sous la forme d’un lecteur logique : /dev/mdX.
Par exemple : /dev/md0, /dev/md1, etc.

Soit donc les disques suivants :

  • 4 disques : sdaX
  • et un disque flash en /dev/nvme0n1

On peut utiliser les 4 disques pour créer un ou plusieurs RAID.
Par exemple deux RAID 1 , 10 ou un RAID 6.

lsblk pour lister les partitions de disques

Les disques sont vides, donc on peut créer la partition principale sur chacun avec parted :

parted --script /dev/sda mklabel gpt mkpart primary 1Mib 6000Mib
parted pour créer la partition de disques

Ensuite on utilise mdadm pour créer le RAID.
Ici nous allons créer un RAID 1 avec deux disques.
Soit donc :

mdadm --create /dev/md0 --level=mirror --raid-device=2 /dev/sd[a-b]1
  • create : indique le nom du périphérique. Il faut que ce dernier soit libre
  • level : Le type de RAID. Ici on utilise mirror mais on peut utiliser :
    • linear : pour combiner les disques entre eux et ainsi agrérer l’espace disque.
    • stripe : RAID-0
    • mirror : RAID-1
    • 4,5,6 : on indique le niveau de RAID.
  • raid-device : le nombre de disque qui compose le RAID

Il suffit ensuite de répondre yes par y et le RAID se créé.
Le RAID /dev/md0 est alors en place.

Créer un RAID de disque sur Linux avec mdadm

On peut alors vérifier ce dernier avec le paramètre -E :

mdadm -E /dev/sd[b-c]1
Créer un RAID de disque sur Linux avec mdadm

ou encore obtenir le détail et les erreurs de RAID :

mdadm --detail /dev/md0
Créer un RAID de disque sur Linux avec mdadm

Par exemple pour un RAID linear, on voit bien l’agrégation des disques avec la somme totale.

Créer un RAID de disque sur Linux avec mdadm

Le RAID disque est prêt mais il faut pouvoir le monter afin d’y copier les fichiers.
Ainsi, il faut créer le système de fichiers.

mkfs.ext4 /dev/md0
Créer un RAID de disque sur Linux avec mdadm

Si on réutilise lsblk, on voit ici deux RAID.

Créer un RAID de disque sur Linux avec mdadm

Enfin il faut modifier /etc/fstab afin de créer le point de montage au démarrage de Linux.

Et pour terminer, on sauve la configuration du RAID :

mdadm -E -s -v >> /etc/mdadm.conf

Vérifier le status du RAID

On peut aussi lister les RAID avec la commande cat de cette manière :

cat /proc/mdstat
Vérifier le statut du RAID avec mdstat

On obtient alors le nombre de raid avec le nombre de disques.

Mais on peut aller plus loin.
Par exemple ci-dessous, on voit que l’on a deux RAID.
On peut alors obtenir les informations de md2 avec :

mdadm --detail /dev/md0

Cela donne beaucoup d’informations comme :

  • La version de mdadm
  • Le niveau du RAID, ici c’est du RAID 1 soit du miroir.
  • La taille des disques et leurs nombres ici 2
  • Le statut, ici state active.
  • Mais aussi si des erreurs sont présentes sur les disques ou sur le RAID.
Vérifier le statut du RAID avec mdadm

mdadm : Ajouter un disque

Lorsqu’un des deux disques tombent, il faut le remplacer.
A partir de là, il faut ajouter le disque dans le RAID.
Vous devez recréer la partition puis ajouter le disque dans le RAID.
On utilise manage.

mdadm /dev/md2 --manage --add /dev/sda1

Ensuite pour surveiller la reconstruction du RAID :

cat /proc/mdstat

Ce qui nous donne ceci.
On voit que le RAID est en recovery avec l’avancement et la vitesse.

Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty]
md1 : active raid1 sda1[2] sdb1[1]
20971456 blocks [2/1] [_U]
[==>..................] recovery = 13.7% (2879872/20971456) finish=1.8min speed=159992K/sec

md2 : active raid1 sdb2[1]
1932012480 blocks [2/1] [_U]

unused devices: <none>
root@rescue:~# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath] [faulty]
md1 : active raid1 sda1[2] sdb1[1]
20971456 blocks [2/1] [_U]
[===>.................] recovery = 15.5% (3256320/20971456) finish=1.8min speed=162816K/sec

md2 : active raid1 sdb2[1]
1932012480 blocks [2/1] [_U]

L’article suivant donne plus de détails :

mdadm : supprimer un tableau

Enfin si vous désirez supprimer un RAID md0 :

mdadm  --stop /dev/md0
mdadm  --remove /dev/md0
mdadm --zero-superblock /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

Conclusion

mdadm est un outil puissant pour créer et gérer un RAID logiciel sur Linux.
A noter que l’on peut aussi utiliser LVM (Logical Volume Manager) qui permet aussi de créer un RAID.
Enfin il est même possible d’utiliser les deux en même temps.

A propros de malekalmorte

malekal-site-logo-150

Passionné par l'informatique depuis très jeune, j'aide les internautes sur les forums depuis 2005 pour résoudre leurs tracas informatiques.
Je vous propose par la même occasion ce site avec de nombreux tutoriels pour vous aider aussi à résoudre de manière autonome les problèmes informatiques du quotidien.