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.