RAID logiciel - mdadm¶
2010 Archive
Danger
Créer une sauvegarde des données avec les empreintes avant de procéder.
Note
Il est préférable d’utiliser zpool car il est utilisé à grande échelle en production, de plus il est plus facile à configurer, stable et fiable.
Configuration du RAID 1¶
On suppose que les deux disques durs de 500 Go sont identiques, installés et formatés en ext4. On les configure pour qu’ils soient en raid 1
Passer en root
su -
Créer un nouveau périphérique logique
mknod /dev/md0 b 9 0
Installer mdadm
apt install mdadm
Création du cluster. On indique à mdadm le type de RAID que l’on fait (level = 1), le nombre de disques durs composant ce cluster (raid-devices = 2), le nom du cluster (/dev/md0) et les partitions composant le cluster (/dev/sda1 et /dev/sdb1)
mdadm --create --verbose /dev/md0 --level=raid1 --raid-devices=2 /dev/sda1 /dev/sdb1
Ceci affiche
mdadm --create --verbose /dev/md1 --level=raid1 --raid-devices=2 /dev/sdb2 /dev/sdc2
mdadm: /dev/sdb2 appears to contain an ext2fs file system
size=293065760K mtime=Thu Jan 1 01:00:00 1970
mdadm: /dev/sdc2 appears to contain an ext2fs file system
size=293065760K mtime=Thu Jan 1 01:00:00 1970
mdadm: size set to 293065664K
Continue creating array? y
mdadm: array /dev/md1 started.
Voir l’état du raid
mdadm --detail -scan
Voici ce qui devrait s’afficher
ARRAY /dev/md0 level=raid1 num-devices=2 UID=b0be37d4:54202dc1:0e9efb29:244465d1
Il faut maintenant attendre que le raid soit construit, vous pouvez voir les détails de progression comme ceci :
mdadm --detail /dev/md0
Monter le volume raid. Il est nécessaire de sauvegarder les caractéristiques du cluster.
mdadm --detail --scan
La commande précédente nous montre la ligne suivante
ARRAY /dev/md0 level=raid1 num-devices=2 metadata=00.90 UUID=c06c3k41:gk63de5c:4e5m5245:5ead0852
Cette ligne est ajoutée au fichier /etc/mdadm/mdadm.conf,
il faut ensuite redémarrer la machine et tout remettre en ordre
Supprimer un volume RAID¶
Éteindre le volume
sudo mdadm --stop /dev/md0\nsudo mdadm --remove /dev/md0
Supprimer les superblocs
sudo mdadm --zero-seperblock /dev/sda1
sudo mdadm --zero-seperblock /dev/sdb1
Vérifier si les partitions sont revenues à la “normale”
sudo mdadm --examine /dev/sda3\nmdadm : no md superberblock detected on /dev/sda3
Vous devez ensuite commenter la ligne concernant le cluster dans le fichier etc/mdadm/mdadm.conf, sinon il y a une erreur au redémarrage.
Configuration du RAID 5¶
On suppose que trois disques durs identiques de 500 Go sont installés. On va les configurer pour qu’ils soient en Raid 5
Lancer le terminal en root
su -
Installation du paquet mdadm
apt install mdadm
Création du volume Raid 5
mdadm --create --verbose /dev/md0 --level=5 --assume-clean --raid-devices=4 /dev/sd[bcd]
⚠ --assume-clean : empêche la synchronisation après la création. Cette synchronisation peut durer des dizaines d’heures selon la taille du raid, et dans le cadre d’une nouvelle création, on va de toute façon formater le volume par la suite.
Démonisation du volume RAID, on va faire en sorte que le système charge le volume à chaque démarrage :
mdadm --daemonise /dev/md0
Formater le volume raid
mkfs.ext4 -j /dev/md0
Pour une édition automatique, ajouter dans /etc/fstab
/dev/md0 /media/raid ext4 defaults 0 1
Étude de cas : perte d’un disque¶
Quand le groupe raid est en mode “degraded” (disque manquant). Il sera assemblé mais pas démarré, pour le forcer utiliser “–run” en plus des autres options, ou une fois que le groupe raid est assemblé
mdadm --run /dev/md0
Examiner le cluster
mdadm --detail /dev/md0
Ajouter le disque de remplacement
mdadm /dev/md0 --add /dev/sde
Retirer le disque dur défaillant
mdadm /dev/md0 --fail /dev/sda\nmdadm /dev/md0 --remove /dev/sda
Vérifier la reconstruction du raid. Ne pas redémarrer l’ordinateur tant que le raid n’est pas reconstruit.
mdadm --detail /dev/md0
Étude de cas : migrer les données vers une nouvelle machine¶
Supposons que vous vouliez installer un cluster préexistant sur une machine qui n’a pas de volume RAID
Installer mdadm
apt install mdadm
Créer un nouveau fichier FIFO, l’identifiant 0 peut être différent s’il est déjà utilisé
mknod /dev/md0 b 9 0
Démarrer l’ancien RAID comme suit :
mdadm -A /dev/md1 --update=super-minor -m0 /dev/sd... /dev/sd...
Pour rendre le raid persistant
mdadm --daemonise /dev/md0