F.3. Utilisation de mdadm pour configurer le stockage basé sur RAID et multivoie

Semblable à d'autres outils composant l'ensemble de paquetages raidtools, la commande mdadm peut être utilisée pour effectuer toutes les fonctions nécessaires associées à la gestion d'ensembles de périphériques. Dans cette section, nous expliquons comment utiliser mdadm :

F.3.1. Création d'un périphérique RAID avec mdadm

Afin de créer un périphérique RAID, éditez le fichier /etc/mdadm.conf pour définir les valeurs DEVICE et ARRAY appropriées :

DEVICE /dev/sd[abcd]1
ARRAY /dev/md0 devices=/dev/sda1,/dev/sdb1,/dev/sdc1,/dev/sdd1

Dans cet exemple, la ligne DEVICE utilise la globalisation traditionnelle de noms de fichiers (consultez la page de manuel concernant glob(7) pour de plus amples informations) pour définir les périphériques SCSI suivants :

La ligne ARRAY définit un périphérique RAID (/dev/md0) qui est composé de périphériques SCSI définis par la ligne DEVICE.

Avant la création ou l'utilisation d'un périphérique RAID, le fichier /proc/mdstat montre aucun périphérique RAID actif :

Personalities :
read_ahead not set
Event: 0
unused devices: <none>

Ensuite, utilisez la configuration ci-dessus et la commande mdadm pour créer une matrice RAID 0 :

mdadm -C /dev/md0 --level=raid0 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 \
/dev/sdd1
Continue creating array? yes
mdadm: array /dev/md0 started.

Une fois créé, le périphérique RAID peut être interrogé à tout moment pour fournir des informations de statut. L'exemple suivant représente la sortie de la commande mdadm --detail /dev/md0 :

/dev/md0:
Version : 00.90.00
Creation Time : Mon Mar  1 13:49:10 2004
Raid Level : raid0
Array Size : 15621632 (14.90 GiB 15.100 GB)
Raid Devices : 4
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Mon Mar  1 13:49:10 2004
State : dirty, no-errors
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
         0       8        1        0      active sync   /dev/sda1
         1       8       17        1      active sync   /dev/sdb1
         2       8       33        2      active sync   /dev/sdc1
         3       8       49        3      active sync   /dev/sdd1
           UUID : 25c0f2a1:e882dfc0:c0fe135e:6940d932
         Events : 0.1

F.3.2. Création d'un périphérique multivoie avec mdadm

Outre la création de matrices RAID, mdadm peut également être utilisée pour profiter du matériel prenant en charge plusieurs voies d'E/S vers des LUN SCSI individuels (lecteurs de disques). L'objectif du stockage multivoie est la disponibilité continue des données dans le cas d'un échec matériel ou de la saturation de voie individuelle. Vu que cette configuration contient plusieurs voies (chacune agissant en tant que contrôleur virtuel individuel) accédant à un LAN SCSI commun, le noyau Linux détecte chaque disque partagé une fois « à travers » chaque voie. En d'autres termes, le LUN SCSI appelé /dev/sda peut également être accessible en tant que /dev/sdb, /dev/sdc, et ainsi de suite, selon la configuration spécifique.

Pour fournir un seul périphérique qui puisse rester accessible si une voie d'E/S échoue ou devient saturée, mdadm inclut un paramètre supplémentaire à son option ––level. Ce paramètre — multipath — indique à la couche md dans le noyau Linux de re-router les requêtes d'E/S d'une voie vers une autre dans le cas d'un échec de voie d'E/S.

Afin de créer un périphérique multivoie, éditez le fichier /etc/mdadm.conf pour définir les valeurs pour les lignes DEVICE et ARRAY qui reflètent votre configuration matérielle.

NoteRemarque
 

Au contraire de l'exemple RAID précédent (où chaque périphérique spécifié dans /etc/mdadm.conf doit représenter différents lecteurs de disque physiques), chaque périphérique dans ce fichier fait référence au même lecteur de disque partagé.

La commande utilisée pour la création d'un périphérique multivoie est semblable à celle utilisée pour créer un périphérique RAID ; la différence étant le remplacement d'un paramètre de niveau RAID avec le paramètre multipath :

mdadm -C /dev/md0 --level=multipath --raid-devices=4 /dev/sda1 /dev/sdb1  
 /dev/sdc1 /dev/sdd1
Continue creating array? yes
mdadm: array /dev/md0 started.

Vu la longueur de la ligne de commande mdadm, elle a été coupée sur deux lignes.

Dans cet exemple, le matériel est composé d'un LUN SCSI présenté comme quatre périphériques SCSI séparés, chacun accédant au même stockage par une voie différente. Une fois le périphérique multivoie /dev/md0 créé, toutes les opérations d'E/S faisant référence à /dev/md0 sont dirigées vers /dev/sda1, /dev/sdb1, /dev/sdc1 ou /dev/sdd1 (selon la voie actuellement active et fonctionnelle).

La configuration de /dev/md0 peut être examinée plus en détails à l'aide de la commande mdadm --detail /dev/md0 afin de vérifier que le périphérique est, en fait, multivoie :

/dev/md0:
Version : 00.90.00
Creation Time : Tue Mar  2 10:56:37 2004
Raid Level : multipath
Array Size : 3905408 (3.72 GiB 3.100 GB)
Raid Devices : 1
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Tue Mar  2 10:56:37 2004
State : dirty, no-errors
Active Devices : 1
Working Devices : 4
Failed Devices : 0
Spare Devices : 3

    Number   Major   Minor   RaidDevice State
       0       8       49        0      active sync   /dev/sdd1
       1       8       17        1      spare   /dev/sdb1
       2       8       33        2      spare   /dev/sdc1
       3       8        1        3      spare   /dev/sda1
           UUID : 4b564608:fa01c716:550bd8ff:735d92dc
         Events : 0.1

Une autre caractéristique de mdadm est la capacité de forcer un périphérique (qu'il soit un membre d'une matrice RAID ou une voie dans une configuration multivoie) à être supprimé d'une configuration fonctionnant. Dans l'exemple suivant, /dev/sda1 est marqué en tant que défectueux, est ensuite supprimé et finalement ajouté de nouveau dans la configuration. Pour une configuration multivoie, ces actions n'auraient aucun impact sur les activités d'E/S se produisant à ce moment là :

# mdadm /dev/md0 -f /dev/sda1
mdadm: set /dev/sda1 faulty in /dev/md0
# mdadm /dev/md0 -r /dev/sda1
mdadm: hot removed /dev/sda1
# mdadm /dev/md0 -a /dev/sda1
mdadm: hot added /dev/sda1
#