22.3.2. Creazione di un dispositivo Multipath con 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.
Per poter fornire un dispositivo singolo accessibile se un percorso I/O presenta un errore o diventa saturo,
mdadm
include un parametro aggiuntivo per la propria opzione level
. Questo parametro multipath
dirige il livello md nel kernel di Linux, in modo da ridirezionare le richieste I/O da un percorso ad un altro in presenza di un errore del percorso I/O.
Per creare un dispositivo multipath, modificare il file
/etc/mdadm.conf
, in modo da definire i valori per le righe DEVICE
e ARRAY
, che riflettono la configurazione del vostro hardware.
Nota
Diversamente dall'esempio RAID precedente (dove ogni dispositivo specificato in
/etc/mdadm.conf
deve rappresentare unità disco fisiche diverse), ogni dipspositivo presente in questo file, si riferisce alla stessa unità disco condivisa.
Il comando utilizzato per la creazione di un dispositivo multipath è simile al comando utilizzato per creare un dispositivo RAID, la sola differenza è la sostituzione del parametro del livello RAID con il parametro
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.
In questo esempio, l'hardware consiste in un LUN SCSI presentato come quattro dispositivi SCSI separati, ognuno dei quali in grado di accedere lo stesso storage tramite un percorso diverso. Una volta creato il dispositivo multipath
/dev/md0
, tutte le operazioni I/O che si riferiscono a /dev/md0
, vengono dirette su /dev/sda1
, /dev/sdb1
, /dev/sdc1
, o /dev/sdd1
(a seconda di quale percorso è funzionante e attivo).
La configurazione di
/dev/md0
può essere esaminata in modo più approfondito, utilizzando il comando mdadm --detail /dev/md0
in modo da identificare il dispositivo multipath:
/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
Un'altra caratteristica di
mdadm
è la possibilità di forzare un dispositivo (sia come membro di un array RAID o come un percorso in una configurazione multipath), alla sua rimozione da una configurazione operativa. Nel seguente esempio, /dev/sda1
viene segnalato con un errore, quindi viene rimosso, per poi essere reintegrato all'interno della configurazione stessa. Per una configurazione multipath, queste azioni non hanno alcun impatto su qualsiasi attività I/O presente:
# 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 #