22.3.2. Creación de 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.
Para proporcionar un único dispositivo que pueda permanecer accesible si una E/S falla o se satura,
mdadm
incluye un parámetro adicional a su opción level
. Este parámetro multipath
dirige la capa md en el kernel de Linux a que redireccione las peticiones de E/S desde una ruta a otra en el evento de una falla de E/S.
Para crear un dispositivo multipath, modifique el archivo
/etc/mdadm.conf
para definir valores para las líneas DEVICE
y ARRAY
que reflejen la configuración de su hardware.
Nota
A diferencia del ejemplo anterior de RAID (donde cada dispositivo especificado en
/etc/mdadm.conf
debe representar unidades de disco físico diferentes), cada dispositivo en este archivo se refiere a la misma unidad de disco compartida.
El comando utilizado para la creación de un dispositivo multipath es similar a aquel utilizado para crear un dispositivo RAID, la diferencia está en el reemplazo de un parámetro de nivel RAID con el parámetro
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.
En este ejemplo, el hardware consiste de un SCSI LUN presentado como cuatro dispositivos SCSI separados, cada uno accediendo al mismo almacenamiento a través de un camino diferente. Una vez creado el dispositivo
/dev/md0
, todas las operaciones de E/S que hacen referencia a /dev/md0
son dirigidas a /dev/sda1
, /dev/sdb1
, /dev/sdc1
, o /dev/sdd1
(dependiendo de cual ruta esté actualmente activa y en operación).
Se puede examinar la configuración de
/dev/md0
más de cerca usando el comando mdadm --detail /dev/md0
, para verificar que es, de hecho, un 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
Otra característica de
mdadm
es la habilidad de forzar a un dispositivo (bien sea un miembro de una formación RAID o una ruta en una configuración multipath) a que sea eliminado de una configuración operativa. En el ejemplo siguiente, /dev/sda1
es marcado como defectuoso, luego eliminado y finalmente vuelto a añadir en la configuración. Para una configuración multipath, estas acciones no afectarán ninguna actividad de E/S que esté ocurriendo en ese momento:
# 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 #