miércoles, 13 de junio de 2012

Iscsi y mutlipath con una cabina EMC VNXe 3300

Disponemos de la red configurada como vimos en este artículo: http://blog.rubensalazar.net/2012/05/bridges-bonding-y-lacp.html

Debemos tener configurados los switches con las vlans correctamente para no tener problemas de red. Este tema no es objeto de este artículo.

En la cabina EMC hemos definido dos servidores iSCSI cada uno de ellos definido por dos ips, dos interfaces de red y cada uno asignado a un controlador diferente (storage processor) de forma que aseguramos la máxima redundancia.

Antes de seguir comentar que la consola de administración web de la cabina EMC ¡está hecha en flash!!!!!!!!!  lo que provoca mis mas sinceras maldiciones en arameo. ¿A estás alturas todavía con estas capulladas?.

Continuamos creando los espacios de almacenamiento, no voy a entrar más en la configuración de la cabina ya que cada una tiene su propio gestor y forma de configuración, de todos modos os pongo varios screenshots.

iSCSI Servers

Storages

Permisos de acceso a un Storage



















Como podemos ver en la imagen anterior hay un servidor con acceso a ese storage.
Vamos con la configuración del servidor para que pueda acceder a este recurso.

Instalamos el software necesario:

# aptitude install open-iscsi scsitools multipath-tools open-iscsi-utils
Editamos el fichero de configuración de open-scsi cambiando la propiedad node.startup de manual a automatic:
# nano /etc/iscsi/iscsid.conf
# To request that the iscsi initd scripts startup a session set to "automatic".
node.startup = automatic
Como hemos visto anteriormente tenemos dos servidores iSCSI:
  • iSCSIServer00: con dos ips 10.0.1.254 y 10.0.2.254
  • iSCSIServer01: ips 10.0.1.253 y 10.0.2.253

Realizamos el discover de los targets iSCSI de los servidores:
# iscsiadm -m discovery -t st -p 10.0.1.254
# iscsiadm -m discovery -t st -p 10.0.2.254
# iscsiadm -m discovery -t st -p 10.0.2.253
# iscsiadm -m discovery -t st -p 10.0.1.253
Comprobamos:
# iscsiadm -m node
10.0.1.254:3260,1 iqn.1992-05.com.emc:ckm001123005530000-6-vnxe
10.0.2.254:3260,1 iqn.1992-05.com.emc:ckm001123005530000-6-vnxe
10.0.1.253:3260,1 iqn.1992-05.com.emc:ckm001123005530000-7-vnxe
10.0.2.253:3260,1 iqn.1992-05.com.emc:ckm001123005530000-7-vnxe
Si listamos los dispositivos todavía no tendremos ninguno en nuestro sistema:

# ll /dev/mapper
total 0
drwxr-xr-x  2 root root     120 jun  6 12:26 ./
drwxr-xr-x 18 root root    4480 jun  6 12:26 ../
crw-------  1 root root 10, 236 abr 30 14:33 control
lrwxrwxrwx  1 root root       7 abr 30 14:33 remo-root -> ../dm-0
lrwxrwxrwx  1 root root       7 abr 30 14:33 remo-swap -> ../dm-1
Nos falta realizar el proceso de login:

# iscsiadm -m node -L all
Volvemos a listar los dispositivos:
# ll /dev/mapper
total 0
drwxr-xr-x  2 root root     120 jun  6 12:26 ./
drwxr-xr-x 18 root root    4480 jun  6 12:26 ../
crw-------  1 root root 10, 236 abr 30 14:33 control
lrwxrwxrwx  1 root root       7 jun  6 12:26 mpath0 -> ../dm-2
lrwxrwxrwx  1 root root       7 abr 30 14:33 remo-root -> ../dm-0
lrwxrwxrwx  1 root root       7 abr 30 14:33 remo-swap -> ../dm-1
A partir de este momento: crear particiones, formatear y añadir la entrada en /etc/fstab.

Para añadir más volúmenes y que el sistema los reconozca primero creamos el disco virtual y le damos acceso al host desde la cabina, para que lo reconozca el sistema realizamos logout y volvemos a hacer login (mucho cuidado con hacer los siguientes pasos si hay volúmenes montados de la cabina en este servidor, primero desmontar las unidades o se pueden perder datos):

# iscsiadm -m node --logout
Logging out of session [sid: 13, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.1.253,3260]
Logging out of session [sid: 14, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.2.253,3260]
Logging out of session [sid: 15, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.1.254,3260]
Logging out of session [sid: 16, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.2.254,3260]
Logout of [sid: 13, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.1.253,3260]: successful
Logout of [sid: 14, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.2.253,3260]: successful
Logout of [sid: 15, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.1.254,3260]: successful
Logout of [sid: 16, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.2.254,3260]: successful
# iscsiadm -m node -L all
Logging in to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.1.253,3260]
Logging in to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.2.253,3260]
Logging in to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.1.254,3260]
Logging in to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.2.254,3260]
Login to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.1.253,3260]: successful
Login to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-7-vnxe, portal: 10.0.2.253,3260]: successful
Login to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.1.254,3260]: successful
Login to [iface: default, target: iqn.1992-05.com.emc:ckm001123005530000-6-vnxe, portal: 10.0.2.254,3260]: successful
Volvemos a listar los dispositivos y veremos que nos aparece un nuevo volúmen:

# ll /dev/mapper
total 0
drwxr-xr-x  2 root root      140 jun  6 12:25 ./
drwxr-xr-x 18 root root     4520 jun  6 12:25 ../
crw-------  1 root root  10, 236 abr 30 14:33 control
brw-rw----  1 root disk 252,   3 jun  6 12:25 mpath0
brw-rw----  1 root disk 252,   2 jun  6 12:25 mpath1
lrwxrwxrwx  1 root root        7 abr 30 14:33 remo-root -> ../dm-0
lrwxrwxrwx  1 root root        7 abr 30 14:33 remo-swap -> ../dm-1 

5 comentarios:

  1. Hola Ruben,

    muy bueno el tutorial. Yo tengo el VNXe 3100 y necesito configurarla de la misma manera que muestras, pero tengo dudas respecto al archivo multipath.conf que debiera generarse. Tienes por ahí algún ejemplo de las configuraciones de multipath.conf para tu VNXe 3300?. Tengo la duda con el parametro path_checker que debe utilizarse y el path_selector adecuado (aunque no debiera haber problemas con "roundrobin 0"

    Saludos Cordiales

    ResponderEliminar
  2. Hola.

    No utilizo configuración especifica para la cabina, funciona correctamente con la configuración por defecto.

    De todos modos podemos obtener la información de la configuración con multipath:

    # multipath -ll
    mpath7 (36006048c0b49c13af746348067dac3bb) dm-0 EMC,Celerra
    size=1.0T features='0' hwhandler='0' wp=rw
    |-+- policy='round-robin 0' prio=1 status=active
    | `- 7:0:0:1 sde 8:64 active ready running
    `-+- policy='round-robin 0' prio=1 status=enabled
    `- 8:0:0:1 sdc 8:32 active ready running

    Respecto a los dos parámetros que comentas (el path_selector ya aparece arriba):

    # multipath -ll -v3 mpath7|grep "sde\|sdc"|grep checker
    Jul 09 15:08:27 | sdc: path checker = directio (internal default)
    Jul 09 15:08:27 | sde: path checker = directio (internal default)

    Saludos.

    ResponderEliminar
  3. Ruben,
    me gustaria saber si probaste que al eliminar una ruta por ejemplo bajando la interfaz de red que maneja alguna de ellas todas las operaciones de I/o se siguen realizando por la otra ruta.

    Efectivamente con las configuraciones que muestras llego al mismo estado que tu, el multipath -ll me muestra las multiples rutas, pero si desconecto alguna de las rutas el multipath se cuelga (es decir, el multipath -ll se queda esperando y mis particiones lvm sobre el dispositivo con multiples rutas tambien se congela).

    Yo creo que alguno de los parametros por defecto no esta haciendo bien el trabajo, tienes alguna idea de lo que puede suceder?.

    Saludos

    ResponderEliminar
  4. Hola.

    Hicimos todas las pruebas posibles y sin contemplaciones para ponernos en los peores casos: apagando uno de los switchs, desconectando fibras individuales, etc... y en todo momento funcionaba correctamente.

    Para ver que ocurre habría que ver el syslog cuando desconectáis a ver si vemos algo que nos indique que ocurre.

    En este otro articulo tienes un ejemplo de configuración del mutipath.conf para otra cabina: http://blog.rubensalazar.net/2012/05/acceso-una-cabina-de-almacenamiento-hp.html
    Revisa path_checker y prio.
    En el "man multipath.conf" aparece configuración especifica para emc clariion quizás te pueda servir alguna de esas opciones.

    Espero que te sirva algo de esto y coméntame como acabáis.

    Saludos.

    ResponderEliminar
  5. Ruben,

    encontre la raiz del problema y no tenia que ver exactamente con multipath, sino con los parametros por defecto de iscsi. Hay un parametro

    node.session.timeo.replacement_timeout que en debian viene por defecto en 120 segundos y es ese parametro el que se encarga de marcar en cierta manera avisar al multipath que una ruta no puede ser reestablecida (porque no logra re iniciar la session de iscsi) y por lo tanto multipath ahi sabe que tiene que descartar completamente esa ruta.

    En resumen, el multipath siempre funciono pero recien hacia un switch de las rutas despues de 120 segundos. Ahora lo ajuste a un tiempo mas acotado, unos 3 segundos y todo funciona adecuadamente, incluso cambie el path_grouping_policy a multibus para balancear la carga entre las rutas a la cabina.

    Gracias por tu ayuda.

    Saludos Cordiales,

    ResponderEliminar