jueves, 17 de mayo de 2012

Acceso a una cabina de almacenamiento HP EVA 4100 con multipath

Disponemos de un servidor con dos tarjetas de Fiber Channel, cada una de estás tarjetas está conectada a un switch de fibra distinto y cada switch está conectado a los dos controladores de la EVA.
Vamos a ver como configurar el servidor con Ubuntu 10.04 para proporcionar acceso a la cabina en alta disponibilidad con multipath de forma que, desde el servidor, trabajaremos con un único dispositivo de almacenamiento por cada disco virtual que la EVA presente al servidor.
El esquema de conexión es el siguiente:



Comprobamos que el servidor dispone de las dos tarjetas conectadas:

# lspci| grep Fiber
01:08.0 Fibre Channel: Emulex Corporation Helios LightPulse Fibre Channel Host Adapter (rev 01)
02:09.0 Fibre Channel: Emulex Corporation Helios LightPulse Fibre Channel Host Adapter (rev 01)
El kernel cargará el módulo lpfc como driver para estás tarjetas:

root@Mercurio:/etc/modprobe.d# lsmod |grep lpfc
lpfc                  526920  24
scsi_transport_fc      52158  1 lpfc
En mi caso, en está versión de ubuntu no es necesario, pero si tenéis problemas con lpfc podéis crear el archivo /etc/modprobe.d/lpfc.conf para configurar su comportamiento:

# cat /etc/modprobe.d/lpfc.conf
#options lpfc lpfc_use_msi=0 lpfc_log_verbose=0xffff
options lpfc lpfc_use_msi=0
Para instalar multipath:

# aptitude install multipath-tools scsitools
Configuramos multipath con el siguiente fichero, tiene una sección específica para nuestra EVA 4100:
# cat /etc/multipath.conf
##
## This is a template multipath-tools configuration file
## Uncomment the lines relevent to your environment
##


## Use user friendly names, instead of using WWIDs as names.
defaults {
        user_friendly_names yes
}


blacklist {
root@Mercurio:~# cat /etc/multipath
multipath/      multipath.conf 
       devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st|eth|br)[0-9]*"
       devnode "^hd[a-z][[0-9]*]"
#       devnode "^sd[c-d][[0-9]*]"
       devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
}


devices {
        device {
                vendor "HP"
                product "HSV200"
                path_grouping_policy group_by_prio
                getuid_callout "/lib/udev/scsi_id -g -u /dev/%n"
                path_checker directio
                path_selector "round-robin 0"
                prio alua
                rr_weight uniform
                failback immediate
                hardware_handler "0"
                no_path_retry 12
                rr_min_io 100
       }
}
Podemos reiniciar el servidor o utilizar la utilidad rescan-scsi-bus para encontrar dispositivos y que los agrege al sistema. También debemos utilizar está utilidad si presentamos más discos virtuales desde la EVA al servidor.
Cuando "despresentamos" discos virtuales se pueden utilizar con la opción -r pero por mis pruebas el resultado no siempre es bueno y requiere reiniciar el servidor.

Con el siguiente comando comprobamos el estado del multipath:
# multipath -ll
mpath2 (3600508b40006c54300011000003f0000) dm-2 HP,HSV200
size=57G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| |- 6:0:0:1 sdm 8:192 active ready running
| `- 5:0:0:1 sdc 8:32 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
|- 5:0:1:1 sdf 8:80 active ready running
`- 6:0:1:1 sdp 8:240 active ready running
mpath8 (3600508b40006c5430001100000520000) dm-0 HP,HSV200
size=100G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| |- 5:0:1:3 sdh 8:112 active ready running
| `- 6:0:1:3 sdr 65:16 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
|- 6:0:0:3 sdo 8:224 active ready running
`- 5:0:0:3 sde 8:64 active ready running
mpath7 (36006048c0b49c13af746348067dac3bb) dm-7 EMC,Celerra
size=1.0T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=active
| `- 7:0:0:1 sdl 8:176 active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
`- 8:0:0:1 sdk 8:160 active undef running
mpath6 (36006048c33fbd15cdb351637f9c6ab26) dm-5 EMC,Celerra
size=1.0T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 10:0:0:1 sdi 8:128 active undef running
`-+- policy='round-robin 0' prio=1 status=active
`- 9:0:0:1 sdj 8:144 active ready running
mpath5 (3600508b40006c54300011000004c0000) dm-1 HP,HSV200
size=20G features='1 queue_if_no_path' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=50 status=active
| |- 6:0:0:2 sdn 8:208 active ready running
| `- 5:0:0:2 sdd 8:48 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
|- 5:0:1:2 sdg 8:96 active ready running
`- 6:0:1:2 sdq 65:0 active ready running
Como podéis ver hay otra cabina que dará para otro artículo, de momento no le hacemos caso.
Vemos el estado de los caminos posibles a cada disco y que todos están activos, sin encontrásemos alguno en fallo deberíamos revisar el hardware. (Os recomiendo revisar primero los latiguillos de fibra y comprobar los leds de las tarjetas para ver si alguno está apagada).

Listamos los discos y particiones:


# ll /dev/mapper/
crw------- 1 root root 10, 236 2012-05-14 15:35 control
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath2 -> ../dm-2
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath2-part1 -> ../dm-3
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath5 -> ../dm-1
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath5-part1 -> ../dm-6
lrwxrwxrwx 1 root root       7 2012-05-16 15:55 mpath6 -> ../dm-5
lrwxrwxrwx 1 root root       8 2012-05-16 15:55 mpath6-part1 -> ../dm-11
lrwxrwxrwx 1 root root       7 2012-05-16 15:54 mpath7 -> ../dm-7
lrwxrwxrwx 1 root root       7 2012-05-16 15:54 mpath7-part1 -> ../dm-8
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath8 -> ../dm-0
lrwxrwxrwx 1 root root       7 2012-05-14 15:35 mpath8-part1 -> ../dm-4
Aquí ya vemos particiones pero si es un disco nuevo utilizamos fdisk sobre, por ejemplo, /dev/mapper/mpath2 y generamos una partición /dev/mapper/mpath2-part1
Después creamos el sistema de ficheros y ya podemos motarla he incluirla en el /etc/fstab. Os recomiendo utilizar los UUID de los discos desde el fstab, para averiguarlos:
# ll /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root  9 2012-05-14 15:35 0059c482-d8b9-4d88-8d98-f15b71318077 -> ../../md3
lrwxrwxrwx 1 root root  9 2012-05-14 15:35 056f57cb-1b77-4df5-a023-1f20c41c21e7 -> ../../md4
lrwxrwxrwx 1 root root 10 2012-05-14 15:35 13776bb7-2242-4068-a41f-e919baff3a86 -> ../../dm-4
lrwxrwxrwx 1 root root 10 2012-05-14 15:35 156c04a8-199e-41f5-b974-3ba3a4b5e635 -> ../../sdb7
lrwxrwxrwx 1 root root  9 2012-05-14 15:35 2c0bdeca-617e-4e3a-b31a-31442ac63ff7 -> ../../md2
lrwxrwxrwx 1 root root 11 2012-05-17 02:07 2df684f9-1798-4e21-960b-304933b46637 -> ../../dm-11
lrwxrwxrwx 1 root root 10 2012-05-14 15:35 3b9a2cb0-32c3-4be9-a787-340e106041d5 -> ../../dm-3
lrwxrwxrwx 1 root root 10 2012-05-17 02:07 465081f7-2591-4456-a972-847d813e4d0c -> ../../dm-8
lrwxrwxrwx 1 root root 10 2012-05-14 15:35 510ed901-d0a3-4585-b594-002d9a78b61b -> ../../dm-6
lrwxrwxrwx 1 root root 10 2012-05-14 15:35 57bc797f-74f8-467e-9145-200cdcafe180 -> ../../sda7
lrwxrwxrwx 1 root root  9 2012-05-14 15:35 7c6e736b-9f82-4107-b127-62831384d9ce -> ../../md1
lrwxrwxrwx 1 root root  9 2012-05-14 15:35 a04ca2ee-97fc-4644-8dd3-3184fead0f2c -> ../../md0

Como podemos ver aquí tenemos montados nuestros sistemas de ficheros:

# mount
/dev/md0 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/md4 on /tmp type ext3 (rw)
/dev/md1 on /boot type ext3 (rw)
/dev/mapper/mpath2-part1 on /media/admine type ext3 (rw,acl,user_xattr,errors=remount-ro)
/dev/mapper/mpath5-part1 on /media/faxing type ext3 (rw,acl,user_xattr,errors=remount-ro)
/dev/mapper/mpath6-part1 on /media/backup type ext4 (rw,acl,user_xattr,errors=remount-ro)/dev/mapper/mpath8-part1 on /media/F type ext4 (rw,acl,user_xattr,usrquota,errors=remount-ro)
/dev/md2 on /var type ext3 (rw)
/dev/md3 on /home type ext3 (rw)
Si después queréis utilizar acceso concurrente desde dos servidores ocfs2 funciona muy bien.

No hay comentarios:

Publicar un comentario