RAID logiciel : mdadm
En ce moment j’ai pour projet de mettre en œuvre une baie de disque offrant des services de haute disponibilité et de tolérance de panne avec notamment la mise en œuvre d’un RAID logiciel ( RAID5 au final ) ainsi qu’un bonding d’interfaces pour accroître les débits réseaux.
Note bon mon réseau étant en 100M/s et offrant donc des taux maximum de 12Mo/s le simple RAID logiciel ne sers a rien, quel que soit le niveau choisi, les utilisateurs ne voyant absolument pas la différence à travers le réseau.
S’agissant ici d’un RAID logiciel, il est important de noter que seule la lecture des données sera optimisée ( doublée dans le cas du RAID0 ). En effet l’écriture et le stripping des données étant géré par la couche logicielle; cette dernière ne sait pas écrire en parallèle les données sur les deux disques. Le RAID0 logiciel se contente de lire le fichier et de copier alternativement les données sur un disque puis sur l’autre.
Paquets : sys-fs/mdadm: constitue l’utilitaire d’administration des volumes RAID
Création des partitions:
Pour mes tests j’ai créé une partition sur hdb:
/dev/hdb3 66 127 498015 fd Linux raid autodetect
et une autre sur hdc:
/dev/hdc2 6 67 498015 fd Linux raid autodetect
pour les créer de même taille, utilisons cfdisk qui offre une interface ncurses et permet notamment de saisir une taille en MB. le type de la partition a créer est fd.
Configuration du noyau
on vérifie l’état du support RAID dans le noyau :
localhost# grep RAID /usr/src/linux/.config
# CONFIG_RAID_ATTRS is not set
CONFIG_BLK_DEV_3W_XXXX_RAID=y
CONFIG_MD_RAID0=m
CONFIG_MD_RAID1=m
CONFIG_MD_RAID456=m
on charge ensuite le module relatif au RAID souhaité
localhost# modprobe raid0
vérifions
localhost# lsmod | grep raid
raid456 119068 0
async_xor 6016 1 raid456
async_memcpy 5504 1 raid456
async_tx 6272 3 raid456,async_xor,async_memcpy
xor 17932 2 raid456,async_xor
raid0 10240 1
md_mod 70428 3 raid456,raid0
localhost#
création des volumes RAID
Arrive maintenant la mise en œuvre du RAID logiciel à proprement parler:
Nous allons utiliser les partitions /dev/hdb3 et /dev/hdc2 pour créer un RAID0 représenté par le point de montage /dev/md0
localhost# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/hdc2 /dev/hdb3
fixer la configuration dans le ficheir de /etc/mdadm.conf en ajoutant la ligne suivante.
On obtient l’UUID d’un Array en tapant la commande suivante :
localhost# mdadm -D /dev/md0
ARRAY /dev/md0 level=raid0 num-devices=2 UUID=27b4e3b9:5eaf5ab5:80c8e32f:86a4b030
Ajout du service à la séquence de boot:
localhost# rc-update add mdadm boot
suppression d’un disque dans un Array:
Pour pouvoir supprimer un disque d’un array il convient dans un premier temps de le mettre en erreur le périphérique à retirer avec la commande suivante :
localhost# mdadm --manage /dev/md0 --fail /dev/hdc2
Il est ensuite possible de retirer le périphérique de l’Array.
localhost# mdadm --manage /dev/md0 --remove /dev/hdc2
Enfin on peut arreter l’Array avec la commande suivante.
localhost# mdadm --manage --stop /dev/md0
Problèmes rencontrés:
- Modules manquants dans la configuration du kernel: c’est a mon avis le cas le plus classique. Voici le lien qui m’a mis sur la piste. http://www.linuxquestions.org/questions/linux-hardware-18/hdparm-d1-devhda-gives-me-hdiosetdma-failed-operation-not-permitted-260894/
- Nappe IDE forçant l’UDMA33 : J’ai simplement changé de nappe IDE pour une offrant des taux de transfert plus élevés.
One thought on “RAID logiciel : mdadm”
👏