22.3.2. Création d'un périphérique multivoie avec mdadm
In addition to creating RAID arrays,
mdadm
can also be used to take advantage of hardware supporting more than one I/O path to individual SCSI LUNs (disk drives). The goal of multipath storage is continued data availability in the event of hardware failure or individual path saturation. Because this configuration contains multiple paths (each acting as an independent virtual controller) accessing a common SCSI LUN (disk drive), the Linux kernel detects each shared drive once "through" each path. In other words, the SCSI LUN (disk drive) known as /dev/sda
may also be accessible as /dev/sdb
, /dev/sdc
, and so on, depending on the specific configuration.
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.
Note
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.
Due to the length of the mdadm command line, it has been broken into two lines.
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 #