logo rss

Le RAID avec mdadm

Voici quelques commandes et tutoriels utiles pour gérer le RAID sous GNU/Linux avec la commande mdadm.

Préambule

Environnement

  • OS : Debian squeeze 6.0.5

Commandes

Réassembler un RAID aprés la réinstallation de son OS ou depuis un LiveCD

  • Avec un RAID composé de deux disques sda1 et sdb1 :
root@host:~# mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1

Désinscrire un disque d'un RAID

root@host:~# mdadm --zero-superblock /dev/sda1

Vérifier l'état de son RAID

root@host:~# cat /proc/mdstat

Effectuer une vérification de son RAID

root@host:~# echo check > /sys/block/md0/sync_action

Connaitre l'état détaillé de son RAID

root@host:~# mdadm -D /dev/md0

Cette commande renvoie (en plus d'informations détaillées sur la sortie standard) :

  • 0 si aucun problème n'a été détecté
  • 1 en cas d'erreur
  • 2 en cas de problème grave

Tutoriels

Étendre un RAID 5 (via l'ajout d'un disque)

  • Avec un RAID 5 composé de trois disques sda1, sdb1 et sdc1 et auqel on souhaite rajouter le disque sdd1.
  • La première chose à faire est un backup de ses données!
  • On démonte (facultatif selon le système de fichier) la partition :
root@host:~# umount /dev/md0
  • On prépare notre nouveau disque en copiant la table de partition d'un disque existant vers le nouveau disque (les partitions participants au RAID doivent avoir la même taille) :
root@host:~# sfdisk -d /dev/sdb | sfdisk --force /dev/sdd
  • On déclare notre nouveau disque dans l'array :
root@host:~# mdadm --manage /dev/md0 --add /dev/sdd1
  • On agrandit l'array (l'option --backup-file est fortement conseillée, voir man mdadm pour plus d'informations. Suivant la taille des disques cette opération peut prendre beaucoup de temps On pourra surveiller son évolution via la commande cat /proc/mdastat) :
root@host:~# mdadm --grow /dev/md0 --raid-devices=4 --backup-file=/root/raid5.backup.file
  • On étend le système de fichier (valable uniquement pour ext. NB : c'est faisable à chaud selon la version de son noyau).
root@host:~# mdadm --grow /dev/md0 --raid-devices=4 --backup-file=/root/raid1-5.backup.file

Étendre un RAID chiffré (convertir un RAID 1 en RAID 5)

  • Avec un RAID 1 composé de deux disques sda1 et sdb1 et auquel on souhaite rajouter un disque sc1 :
  • La première chose à faire est un backup de ses données!
  • Puis on fait un backup de l'entete luks (la aussi à titre préventif) :
root@host:~# cryptsetup luksHeaderBackup /dev/md0 --header-backup-file chemin/vers/backup.img
  • ou de façon manuelle en récupérant la taille de l'en-tête "Payload offset" puis l'en-tète elle même avec la commande dd :
root@host:~# cryptsetup luksDump /dev/md0 | grep "Payload offset"
root@host:~# dd if=/dev/md0 of=chemin/vers/backup.img bs=512 count=4040
  • À titre d'information la restauration de l'en-tête s'effectue via l'une ou l'autre de ces commandes :
root@host:~# cryptsetup luksHeaderRestore /dev/md0 --header-backup-file chemin/vers/backup.img
root@host:~# dd if=./backup.img of=/dev/md0 bs=512 count=4040
  • On arrète le RAID (pour plus de sécurité) :
root@host:~# mdadm --stop /dev/md0
  • On prépare notre nouveau disque en copiant la table de partition d'un disque existant vers le nouveau disque (les partitions participants au RAID doivent avoir la même taille) :
root@host:~# sfdisk -d /dev/sdb | sfdisk --force /dev/sdc
  • On convertit le RAID 1 en RAID 5 :
root@host:~# mdadm --create /dev/md0 --level=5 -n 2 /dev/sda1 /dev/sdb1
  • On ajoute le 3 ème disque à l'array :
root@host:~# mdadm --add /dev/md0 /dev/sdc1
  • On étend l'array (l'option --backup-file est fortement conseillée, voir man mdadm pour plus d'informations. Suivant la taille des disques cette opération peut prendre beaucoup de temps On pourra surveiller son évolution via la commande cat /proc/mdastat) :
root@host:~# mdadm --grow /dev/md0 --raid-disks=3 --backup-file=/root/raid1-5.backup.file
  • On étend maintenant la partition chiffrée :
root@host:~# cryptsetup resize /dev/mapper/md_crypt
  • On vérifie et corrige les eventuelles erreurs du systeme de fichier :
root@host:~# e2fsck -f /dev/mapper/md_crypt
  • On étend le système de fichier (valable uniquement pour ext) :
root@host:~# resize2fs /dev/mapper/md_crypt
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :

adresse mail de contact