Tuesday, July 28, 2009

Configuración de multipath en RHEL 5.3

Multipath es una herramienta que permite administrar los diferentes path's que existen hacia un LUN en un ambiente de SAN.

El Device Mapper de Linux permite agrupar todos los path's que un servidor ver hacia un LUN específico bajo un solo device file (/dev/mapper/mpathn por omisión) de manera que la administración se simplifique y dando la felxibilidad de utilizar diferentes políticas de balanceo de carga además de la alta disponibilidad que provee la arquitectura.

Requisitos
Para configurar multipath se debe tener instalado el paquete device-mapper-multipath. Además de esto, el servidor tiene que estar conectado a la SAN y sus tarjetas de fibra deben estar funcionando correctamente.

Iniciando multipath por primera vez
Cuando se va a iniciar multipath por primera vez, se deben realizar los siguientes pasos:

Verificación del archivo /etc/multipath.conf

Este es el archivo de configuración del demonio multipathd. La configuración que viene de fábrica es aceptable para la mayorí de los ambientes y solo debemos comentar las siguientes lineas:

blacklist {
devnode "*"

}

Con esto le decimos al demonio multipathd que no excluya nada a la hora de verificar los path's hacia los LUN's presentados.

Inicio del demonio multipathd

Para iniciar el demonio mulipathd ejecutamos el siguiente comando:

# /etc/init.d/multipathd


y verificamos que salga el mensaje [ OK ]

En el syslog (/var/log/messages) pueden aparecer los siguientes mensajes:
multipathd: cannot open /sbin/dasd_id : No such file or directory
multipathd: cannot open /sbin/gnbd_import : No such file or directory
multipathd: [copy.c] cannot open /sbin/dasd_id

multipathd: cannot copy /sbin/dasd_id in ramfs : No such file or directory
multipathd: [copy.c] cannot open /sbin/gnbd_import
multipathd: cannot copy /sbin/gnbd_import in ramfs : No such file or directory

No representan ningún problema ya que son módulos que no estamos utilizando.

Para asegurarnos de que el demonio se iniciará cada vez que el servidor arranque, utilizanos el siguiente comando:

# chkconfig multipathd on

Descubrimiento de LUN's
Después de que se le hayan presentado los LUN's correspondientes al servidor en cualquiera de las cabinas se debe forzar a este a descubrir los LUN's.

Para descubirir LUN's sin reiniciar el servidor, se corre el siguiente comando:

# echo 1 > /sys/class/fc_host/hostn/issue_lip

El valor de n depende de cuantas tarjetas de fibra se tengan. Si se tienen 2, n tendrá los valores 0 y 1, por lo tanto se debe correr el comando tantas veces como tarjetas de fibra tengamos, variando el valor de n respectivamente.

En el syslog deben aparecer los discos descubiertos y el device mapper debe crear el device file correspondiente, como es el primer LUN que se está asignando, el nombre del device file debe ser /dev/mapper/mpath0

Para verificar que el device mapper ha configurado el multipath correctamente, se ejecutar el comando

# multipath -ll

y el resultado debe ser parecido a este:

# multipath -ll
mpath0 (360060e80141a230000011a2300000090) dm-7 HP,OPEN-V

[size=100G][features=1 queue_if_no_path][hwhandler=0][rw]

\_ round-robin 0 [prio=4][active]
\_ 0:0:0:16384 sda 8:0 [active][ready]

\_ 0:0:1:16384 sdb 8:16 [active][ready]

\_ 1:0:0:16384 sdc 8:32 [active][ready]

\_ 1:0:1:16384 sdd 8:48 [active][ready]


De ahora en adelante el device file /dev/mapper/mpath0 puede ser utilizado como un disco más, por ejemplo, se puede hacer pvcreate sobre él para utilizarlo con LVM.

Desasignando LUN's
Si por alguna razón se deben desasignar los LUN's que a los cuales referencia /dev/mapper/mpath0, lo primero que hay que hacer es destruir toda la arquitectura de filesystems que exista sobre el device file. Una ves que esté "libre" se procede a borrar el device file de la siguiente manera:

# multipath -f /dev/mapper/mpath0

Luego se procede a "borrar" los paths hace el LUN

# echo 1 > /sys/block/sd?/device/delete

Donde “?” indica la letra correspondiente al “disco” por ejemplo sda.