Clariion CX300 con Multipath y Ubuntu 10.04

Para preparar multipath en nuestro sistema Ubuntu, lo primero que debemos ejecutar es:

apt-get install sg3-utils sysfsutils multipath-tools

Luego añadiremos al fichero /etc/modprobe.d/scsi.conf la siguiente línea:
options scsi_mod max_luns=256

Esto permite numerar hasta 256 los dispositivos scsi, si no cuando presentemos varios discos (la segunda controladora los muestra por encima del id_scsi 64) es fácil que dejemos de ver alguno de ellos. Esto es necesario en Ubuntu y Debian.
Una vez se tiene instalado el software multipath se creará el fichero /etc/multipath.conf de configuración inicial, con el siguiente contenido:
defaults {
udev_dir /dev
user_friendly_names yes
}
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z][[0-9]*]"
devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
}
devices {
device {
vendor "DGC*"
product "*"
path_grouping_policy group_by_prio
getuid_callout "/lib/udev/scsi_id -g -u -d /dev/%n"
prio_callout "/sbin/mpath_prio_emc /dev/%n"
path_checker emc_clariion
path_selector "round-robin 0"
features "1 queue_if_no_path"
no_path_retry 300
hardware_handler "1 emc"
failback immediate
}
}
multipaths {
# multipath {
# wwid 360060160ffc21a0072174c3f6edede11
# alias pruebas
# }
}

Esta configuración es particular para cabinas EMC Clariion CX300, está extraída de http://www.querzone.de/wiki/Wiki.jsp?page=EMCClariion. Una vez establecida la configuración inicial del servicio multipath, se debe refrescar la información de la SAN, ejecutando los siguientes comandos:
/etc/init.d/multipath-tools stop
/etc/init.d/multipath-tools start
multipath -F
multipath -v2
multipath -ll

Al tener varios dispositivos (/dev/sda, /dev/sdb) asociados al mismo disco físico (/dev/mapper/pruebas), las herramientas LVM pueden ser un cuello de botella además de mostrar los típicos mensajes de duplicidad de nombres al ejecutar pvscan. El cuello de botella se puede producir, porque cuando se reinicia el sistema el monitor de LVM ejecuta los comandos pvscan, vgscan y lvscan, para crear los dispositivos asociados a nuestros volúmenes. El problema puede darse que en este escaneo, LVM primero detecte /dev/sda o /dev/sdb, antes que /dev/mapper/pruebas, y por tanto construyan los dispositivos asociados a los volúmenes a un camino, en vez de hacerlo al dispositivo virtual que nos creó dm-mpath para abstraernos del camino activo. Entonces cuando cambie el camino activo, LVM no podrá acceder al disco y el sistema se colgará. Para evitarlo, se debe editar el fichero /etc/lvm/lvm.conf y realizar los siguientes cambios que se indican a modo de parche:
26c26,27
<
preferred_names = [ ]
---
>
# preferred_names = [ ]
>
preferred_names = [ "^/dev/mpath/", "^/dev/mapper/", "^/dev/cciss" ]
53c54,55
<
filter = [ "a/.*/" ]
---
>
#filter = [ "a/.*/" ]
>
filter = [ "a|/dev/cciss/c.*|", "a|/dev/mapper/.*$|", "r/.*/" ]
84a87
>
types = [ "device-mapper", 1 ]

Existen dos bugs reportados para Ubuntu 10.04, referidos a este tipo de configuraciones:
Para evitarlos editaremos el fichero /lib/udev/rules.d/95-multipath.rules , como comentan en el bug y quitaremos el change de la línea ACTION:
#ACTION=="add|change", SUBSYSTEM=="block", RUN+="/sbin/multipath -v0 /dev/%k"
ACTION=="add", SUBSYSTEM=="block", RUN+="/sbin/multipath -v0 /dev/%k"

Luego instalaremos el paquete multipath-tools-boot, para incluir multi- path en el initrd, de forma que cuando se inicie el sistema ya estén disponibles los caminos.
apt-get install multipath-tools-boot 

Reiniciar el sistema, para comprobarlo. Al iniciar de nuevo y ejecutar multipath -ll debemos obtener la misma salida que antes de reiniciar. Recordar que debemos regenerar el fichero initrd cada vez que modifiquemos el fichero lvm.conf o multipath.conf, mediante:
update-initramfs -c -k `uname -r` 

La imagen la he sacado del album de winkydo en flickr

2 comentarios:

Fernando Sancho dijo...

Esto ya tiene su tiempo, pero precisamente ahora me encuentro instalando un servidor de un chasis Blade conectado a una cabina EMC CX600. El problema que encuentro es que para conectar una LUN necesito registrar el servidor en Navisphere y, hasta donde he podido averiguar, no hay manera de ejecutar en Naviagent en Ubuntu de 64bits (estoy usando 10.04-2).

En este post me das a entender que conectas una Ubuntu 10.04 a una cabina EMX CX300 sin usar navisphere, solo multipath ¿como es posible?

Ignacio Barrancos dijo...

Hola Fernando :)

Nunca he tenido la oportunidad de configurar un CX600, pero al menos CX300 y CX3-20, puedes configurar multipath con device-mapper sin NaviAgent.

Naviagent proporciona una serie de comandos especiales para hablar con las cabinas de EMC (como lanzar snapshots de las LUNS, etc), pero en mi experiencia, nunca fue un requisito (aunque perderás estas comoditys).

Te recomendaría que revisaras el zonning en los switches de fibra hasta llegar al Clariion.

Luego en Navisphere, entra en modo ingeniero (CTRL+SHIFT+F12) te pedirá una clave (si no la sabes, escribeme un comentario en el blog con tu email, y no lo publicaré: te responderé). Luego pulsa con el botón derecho del ratón sobre el clariion y selecciona "Connectivity Status". Te debería aparecer ahí los WWWN de tu UBUNTU, pero sin registrar. Seleccionalos y pulsa el botón REGISTER.

Ya podrás asignarles LUNS. Si no te apareciera, podría deberse al zonning.

Cuando ejecutes en Ubuntu "fdisk -l" y veas discos, será el momento de empezar con multipath.conf

Suerte!