DM-Multipath en RedHat y CentOS

Hoy vamos a ver una introducción y la forma de activar Multipath en RedHat y derivados (CentOS, Scientific Linux…). Si todo va bien, y la cabina que nos sirve los discos está soportada por defecto por DM-Multipath es probable que no necesitemos apenas configuraciones manuales. Básicamente, el multipath lo que hace es ofrecer tolerancia a fallos y alta disponibilidad, ofreciendo más de un camino entre el sistema y los discos servidos por una SAN. Por ejemplo, cuando la conexión se hace a través de dos o más puertos Fiber Channel o cuando un disco SCSI está conectado a dos controladoras distintas.

Instalación y configuración inicial de DM-Multipath

Lo primero realizamos la instalación a través de yum:

# yum install device-mapper-multipath

Activamos su inicio automático:

# chkconfig multipathd on

mpathconf nos permite realizar una primera configuración del servicio, creando el fichero de configuración, ya sea con los valores por defecto o especificando unas directivas concretas. Para crear una configuración estándar:

# mpathconf --enable

Este otro ejemplo arrancaría dm-multipath con una configuración de failover estándar y activa el fichero de configuración:

# mpathconf --enable --with_multipathd y

Revisad la página man de mpathconf para más información. Posteriormente ya deberíamos tener el demonio de multipath. Para arrancar, parar y demás podéis usar el script de init.d como cualquier otro servicio.

# ps aux | grep multipath
root     17284  1.0  0.0 493756  4432 ?        SLl  04:24   0:00 /sbin/multipathd

Algo importante a tener en cuenta es la necesidad de incluir como «blacklist» los discos locales en el fichero de configuración. Si por ejemplo son los sdaX añadimos «sda» a la sección blacklist. De este modo multipath ignorará estos discos y no buscará más de un camino para ellos:

blacklist {
       wwid 26353900f02796769
	devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|sda|st)[0-9]*"
	devnode "^hd[a-z]"
}

El fichero de configuración es lo suficientemente descriptivo para que podáis revisar cada una de las opciones.

Administración y monitorización de DM-Multipath

Si las LUN o discos que queremos tener en multipath se ven con un fdisk, el mapeo debería haberse configurado automáticamente como /dev/mapper/mpathb, /dev/mapper/mpathc…, sino, antes hay que revisar porqué el sistema no visualiza los discos. Si no se trata de controladoras o cabinas conocidas o soportadas, es probable que haya que realizar alguna configuración manual, en la mayoría de los casos el mapping debería ser automático.

La mejor forma de ver el estado del multipath es entrando en la «shell» de multipath, lo hacemos del siguiente modo:

# multipathd -k
multipathd>

Una vez dentro, algunos de los comandos más útiles son los siguientes:

Ver el estado de los path:

multipathd> show multipaths status
name   failback  queueing paths dm-st  write_prot
mpathb immediate -        4     active rw

Ver todos los multipath disponibles y mappings. En este caso hay dos mappings, cada uno con cuatro caminos:

multipathd> show multipaths
name   sysfs uuid
mpathb dm-0  360a98000572d4275525a693862534571
mpathc dm-1  360a98000572d4275525a693875677278
multipathd> show maps
name   sysfs uuid
mpathb dm-0  360a98000572d4275525a693862534571
mpathc dm-1  360a98000572d4275525a693875677278

Ver todos los path:

multipathd> show paths
hcil    dev dev_t pri dm_st  chk_st dev_st  next_check
1:0:0:0 sdb 8:16  4   active ready  running XXXXXXXXXX 20/20
1:0:0:1 sdc 8:32  4   active ready  running XXXXXXXXXX 20/20
2:0:0:0 sdd 8:48  4   active ready  running XXXXXXXXX. 19/20
2:0:0:1 sde 8:64  4   active ready  running .......... 1/20
2:0:1:0 sdf 8:80  1   active ready  running XXXXXXXXX. 18/20
2:0:1:1 sdg 8:96  1   active ready  running XXXXXXXXXX 20/20
1:0:1:0 sdh 8:112 1   active ready  running XXXXXXXXX. 18/20
1:0:1:1 sdi 8:128 1   active ready  running XXXXXXXXX. 19/20

Ver la topología y políticas configuradas para cada multipath. En este caso vemos dos LUN de fibra de 300G servidas por una cabina de discos NetAPP, con política round-robin 0 y todos sus path activos:

multipathd>  show topology
mpathb (360a98000572d4275525a693862534571) dm-0 NETAPP,LUN
size=301G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=4 status=active
| |- 1:0:0:0 sdb 8:16  active ready running
| `- 2:0:0:0 sdd 8:48  active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
  |- 2:0:1:0 sdf 8:80  active ready running
  `- 1:0:1:0 sdh 8:112 active ready running
mpathc (360a98000572d4275525a693875677278) dm-1 NETAPP,LUN
size=301G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=4 status=active
| |- 1:0:0:1 sdc 8:32  active ready running
| `- 2:0:0:1 sde 8:64  active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
  |- 2:0:1:1 sdg 8:96  active ready running
  `- 1:0:1:1 sdi 8:128 active ready running

Si escribís help dentro de esta shell veréis todos los comandos disponibles, podemos gestionar completamente el multipath desde aquí. Podemos suspender un camino, ponerlo en estado ‘fail’, eliminarlo, etc:

multipathd> help
multipath-tools v0.4.9 (04/04, 2009)
CLI commands reference:
 list|show paths
 list|show paths format $format
 list|show status
 list|show daemon
 list|show maps|multipaths
 list|show maps|multipaths status
 list|show maps|multipaths stats
 list|show maps|multipaths format $format
 list|show maps|multipaths topology
 list|show topology
 list|show map|multipath $map topology
 list|show config
 list|show blacklist
 list|show devices
 list|show wildcards
 add path $path
 remove|del path $path
 add map|multipath $map
 remove|del map|multipath $map
 switch|switchgroup map|multipath $map group $group
 reconfigure
 suspend map|multipath $map
 resume map|multipath $map
 resize map|multipath $map
 disablequeueing map|multipath $map
 restorequeueing map|multipath $map
 disablequeueing maps|multipaths
 restorequeueing maps|multipaths
 reinstate path $path
 fail path $path
 paths count
 quit|exit

Esto ha sido una mera introducción, para profundizar en el tema, os recomiendo la lectura de los siguientes artículos. Próximamente veremos como configurar desde 0 una LUN FC servida NetAPP en Multipath y asignarle un filesystem.

Un comentario en “DM-Multipath en RedHat y CentOS

  1. Pingback: # rm-rf.es

Comments are closed.