Le paquet madm et la commande éponyme permettent de mettre en place un RAID logiciel sur un système GNU/Linux.
Présentation succincte des concepts et terminologie de base.
Installer le paquet via votre gestionnaire de paquets préféré. Pour une distribution Debian-like:
$ sudo apt-get install mdadm
for i in $(seq 0 4); do dd if=/dev/zero of=/tmp/vdisk$i bs=1M count=10; losetup -f /tmp/vdisk$i; done
Après exécution de la commande ci-dessus, 5 fichiers disques ont été créés, et attachés. Pour le vérifier:
# losetup -a
Pour créer un volume RAID, on a besoin d'un ou plusieurs disques (périphériques en mode blocs). Avant de créer le volume on peut s'assurer que les périphériques n'ont pas déjà été utilisés par un précédent volume RAID. Pour chaque périphérique on peut saisir la commande:
mdadm --examine /dev/loop0
mdadm enregistre des informations directement sur les disques dans une structure de données appelée le superblock afin de gérer les volumes RAID. Si elle est inexistante, le disque peut être utilisé sans problème pour la création d'un nouveau volume.
Si le disque a été utilisé dans un volume RAID, il sera nécessaire de supprimer le superblock préexistant avatn de pouvoir le réutiliser pour former un nouveau volume RAID. Pour détruire un superblock sur le disque hypothétique /dev/disk:
mdadm --zero-superblock /dev/disk
Pour créer un volume RAID 1 comportant 2 disques en miroir et un disque de secours:
mdadm --create /dev/md0 --level=1 --raid-devices=2 --spare-devices=1 /dev/loop0 /dev/loop1 /dev/loop2
Ici l'option --raid-devices permet de spécifier le nombre de disques principaux et l'option --spare-devices le nombre de disques de secours. Le volume est créé et activé dans la foulée.
Biensur le disque de secours est une option et il pourra si on le souhaite l'ajouter plus tard. Pour créer un RAID 1 sans disque de secours, la commande devient:
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/loop0 /dev/loop1
# Lister l'état des volumes raids: cat /proc/mdstat # Afficher les détails d'un volume: mdadm --detail /dev/md0
L'opération d'assemblage d'un volume RAID ne fonctionnera qu'avec les disques comportant des superblocks. Dans la section précédente un volume RAID a été créé, assemblé et activé automatiquement lors de l'opération de création. Cependant après redémarrage de la machine, le daemon mdadm n'assemblera et n'activera automatiquement que les groupes de volumes RAID correctement déclarés dans le fichier de configuration /etc/mdadm/mdadm.conf.
Pour ajouter en fin de fichier conf, la déclaration de notre nouveau groupe de volumes md0:
mdadm --detail --scan --verbose >> /etc/mdadm/mdadm.conf update-initramfs -u
Vérifier que le groupe de volume peut être re-assemblé à partir du fichier de configuration:
# Arrete/deassemble le groupe de volumes RAID1 mdadm --stop /dev/md0 # Démarrer les groupes de volumes RAID déclarés dans un fichier mdadm.conf mdadm --assemble --scan
Si tout se passe bien, tester un reboot:
reboot
Pour assembler manuellement notre volume RAID1:
mdadm -A /dev/md0 /dev/sda1 /dev/sdb1
les d'assembler les les volumes nous avons créer un Lors du redémarrage de la machine, les volumes sont assemblés par lecture du fichier
todo
todo