Escenario 3.H: Acceso a dispositivos iSCSI a través de MPIO dende Linux
Ir a la navegación
Ir a la búsqueda
- Neste escenario 3.H imos configurar un Linux, neste caso uclient, para que acceda ao dispositivo iSCSI da NAS a través de dous interfaces de rede, facendo uso de MPIO.
Introdución
- A modo e resumo, vanse realizar os seguintes pasos:
- Borrar os destinos que se tiñan de antes para poder comezar de cero.
- Instalar o paquete multipath-tools: http://christophe.varoqui.free.fr/
- Ao acceder ao un destino iSCSI por varias rutas distintas, no cliente vanse mostrar tantos discos como rutas haxa ao mesmo destino.
- Multipath-tools vai facilitar un único dispositivo de bloque para un destino accesible por varias rutas (MPIO).
- Permitirá reencamiñar o tráfico co destino cando se perda un dos camiños e recuperarse o antes posible desa perda.
Configuración dos interfaces de rede de uclient
- Interfaces de rede
-
Engadir á MV uclient os adaptadores 2 e 3 en modo Rede Interna.
-
Configurar o terceiro interface de rede. A segunda xa viña configurada do escenario anterior, en calquera caso ...
-
O segundo interface de rede debe ter a IP 172.16.0.140/24 e este terceiro 172.16.1.140/24.
-
Desactivamos a rede e volvémola a activar para que teña en conta a nova configuración.
-
Probamos a conectividade contra as interfaces 172.16.X.100 da NAS.
Nodos dispoñibles/activos no cliente (iniciador)
- Revisar en que situación se atopan os nodos/destinos que se viñan usando en uclient.
- Estado dos nodos
-
Miramos que nodos hai dispoñibles de modo permanente (os 3 destinos de antes) e cales están activos. Ningún está activo porque non se admiten iniciadores de rede 10.0.0.0/8 que é por onde accedían estes nodos.
-
Borramos as carpetas nodes e send_targets, para así comezar dende cero.
-
Comentamos os puntos de montaxe aos dispositivos iSCSI en /etc/fstab.
Descubrir e activar o destino iSCSI
- Descubrir e activar os nodos
-
Descubrimos os destinos que ofrece a NAS, tanto por unha IP como pola outra ofrecen os mesmos destinos: 2 rutas para o mesmo destino. Dá igual por cal se busque.
-
Na base de datos dos destinos permanentes (nodes) vese que para o mesmo destino hai 2 rutas, isto é, 2 cartafoles. Tamén se pode observar o contido do ficheiro st_config.
-
E o ficheiro default dun dos camiños ao destino. Observar que o parámetro node.startup está posto a automático, para que cando se acenda o equipo xa estableza a conexión co destino.
-
Máis abaixo no ficheiro, o campo node.conn[0].address indica á IP do destino á que se conecta unha das rutas e no ficheiro default da outra ruta ...
-
... amosa a outra IP pola cal está accesible o destino na NAS.
-
Con iscsiadm -m node comprobamos que nodos hai dispoñibles permanentemente. Por agora non hai ningunha sesión activa (iscsiadm -m session), e os discos que se teñen son os locais.
-
Con iscsiadm -m node --loginall=all activamos os nodos dispoñibles en nodes. Comprobamos que agora as sesións están activas: para o mesmo dispositivo iSCSI temos 2 rutas. En realidade é como se se tiveran 2 destinos; ao facer ls /dev/sd* pódese ver que se teñen 2 discos novos (sdb e sdc) cada un coa súa partición.
Configuración Multipath IO (MPIO)
- A última imaxe anterior non proporciona redundancia pois, non se ten un dispositivo de bloque que nos permita escribir nel e que este se encargue de escribir en sdb ou sdc indistintamente. Se nós escribimos en sdb sempre non estamos conseguindo usar a outra ruta e por tanto non temos balanceo nin redundancia.
- Para iso vén socorrernos o paquete multipath-tools.
- Configurar MPIO
-
Instalar o paquete multipath-tools: apt-get install multipath-tools.
-
Executar multipath -ll, e veremos entre outras cousas: O número de serie que ten o disco (hai que copialo para usar a continuación), información sobre a NAS, o tamaño do disco, o algoritmo de balanceo no uso das rutas que vai usar (round-robin), etc. (Se non aparecese nada, reiníciese a máquina uclient)
Vese que un disco está activo pero o outro non. -
Creamos/editamos o ficheiro /etc/multipath.conf e pegamos o contido que se pon ao final deste punto, modificando o wwid (World Wide ID) co número de serie obtido na execución da instrución multipath -ll. O alias é o nome co que se vai identificar o novo disco virtual asentado sobre os discos reais (sdb e sdc).
-
Reiniciar o servizo multipath-tools.
-
Se agora se executa multipath -ll vese que os dous discos están activos, as 2 rutas están operativas e balanceadas co algoritmo round-robin.
-
Executamos fdisk -l e vemos que aparece un novo dispositivo /dev/mapper/open-e-test cunha partición chamada /dev/mapper/open-e-test-part1 formatada en NTFS (Que era como estaba o disco2). Este novo dispositivo é o que está asentado sobre sdb e sdc ao mesmo tempo, o mesmo pasa coa partición. Recibe este nome open-e-test... porque é como se identificou no campo alias do ficheiro multipath.conf.
-
O contido de mapper ... A carpeta /dev/mapper é unha especie de portal para mapear dispositivos de bloque. Observar como se amosa o nome do alias no canto do wwid, (isto verase máis adiante).
-
Creamos unha carpeta para montar o novo disco MPIO: mkdir /media/discompio. Montamos a partición do mapper: mount /dev/mapper/open-e-test-part1 /media/discompio.
-
Vemos o contido que xa tiña o disco e ademais podemos crear unha carpeta nova.
defaults {
udev_dir /dev
polling_interval 10
selector "round-robin 0"
path_grouping_policy multibus
getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
prio_callout /bin/true
path_checker readsector0
prio const
rr_min_io 100
rr_weight priorities
failback immediate
no_path_retry fail
user_friendly_name yes
}
blacklist {
devnode "sda"
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z][[0-9]*]"
devnode "^vd[a-z]"
devnode "^cciss!c[0-9]d[0-9]*[p[0-9]*]"
}
multipaths {
multipath {
wwid 33000000031c05120 (Cambiar este número polo obtido con multipath -ll e
borrar este comentario)
alias open-e-test (quen o desexe pode cambiar o nome do alias que se lle vai
dar ao wwid, eliminar tamén este comentario entre paréntese)
}
}
Realización de probas
- A continuación vanse realizar unas probas de caídas de enlaces ou rutas.
- Para iso vanse desconectar o cable nos adaptadores de rede ou ben na NAS ou ben co cliente (uclient).
- IMPORTANTE: se por calquera motivo se tivera que volver a descubrir ou activar os dispositivos iSCSI, asegurarse de que se teñen conectados todos os cables de rede nos 2 equipos: NAS e uclient.
- Configurar MPIO
-
Creamos no directorio actual un ficheiro de 1 GB no equipo local (uclient) para ser transferido á nas a usando MPIO:
dd if=/dev/zero of=file1G bs=1G count=1
Para mirar o funcionamento do comando dd: http://es.wikipedia.org/wiki/Dd_%28Unix%29 -
Revisamos a configuración IP das dúas interfaces polos cales se vai encamiñar o tráfico. Neste caso son eth1 e eth2, que cada quen revise cales son na súa situación.
-
grep bytes"
filtrando con grep a saída do comando ifconfig.
O usuario pode estar usando interfaces de rede distintas a eth1 e eth2. -
A imaxe amosa que apenas se transmitiron e recibiron uns poucos MB.
-
Na primeira consola comezamos a copia do ficheiro: cp file1G /media/discompio.
Na segunda consola vese como a transmisión vai máis ou menos parella por cada interface. -
Pero ... desconectamos o cable de rede do adaptador 2 (ou 3) de uclient.
-
Pasa o tempo, até que pasan 120 segundos e se restablece a transmisión neste caso só pola interface eth2, e...
-
finaliza a transmisión do ficheiro.
-
Esta é a gráfica é o informe da NAS de uso de em1 e em2 (os interfaces de rede), que podemos ver picando no botón Informe da barra superior. Obsérvese como despois dun intervalo no que as dúas interfaces recibiron datos de forma simultánea, logo pasou a recibir unicamente em2.
-
Pero 120 segundos é moito esperar!!!. O parámetro que hai que modificar é node.session.timeo.replacement_timeout = 120, pero xa sabemos que se o cambiamos en /etc/iscsi/iscsid.conf quedará para posibles descubrimentos futuros pero non para os nodos presentes.
-
Antes de cambiar nada nos nodos desmontamos o disco MPIO.
-
Co cal cambiamos ese parámetro no ficheiro default de cada un dos nodos polos que chegamos ao mesmo dispositivo iSCSI.
-
Poñemos por exemplo 30 segundos. O usuario pode probar cal pode ser o máis baixo que pode poñer e que se recupere a transmisión tanto no corte como na recuperación dun enlace.
-
Reiniciar iSCSI: service open-iscsi restart
Reiniciar Multipath: service multipath-tools restart
Volver a montar o disco MPIO.
E a probar ...
- Se o usuario o desexa pode xogar cos seguintes valores, antes de implantar un sistema en produción.
- Sempre desmontar o disco antes dos cambios e logo reiniciar os servizos e volver a montar o disco.
# Time interval to wait for on connection before sending a ping. node.conn[0].timeo.noop_out_interval = 5 # To specify the time to wait for a Nop-out response before failing # the connection, edit this line. Failing the connection will # cause IO to be failed back to the SCSI layer. If using dm-multipath # this will cause the IO to be failed to the multipath layer. node.conn[0].timeo.noop_out_timeout = 5 # To specify the time to wait for abort response before # failing the operation and trying a logical unit reset edit the line. # The value is in seconds and the default is 15 seconds. node.session.err_timeo.abort_timeout = 15 # To specify the time to wait for a logical unit response # before failing the operation and trying session re-establishment # edit the line. # The value is in seconds and the default is 30 seconds. node.session.err_timeo.lu_reset_timeout = 20
Cambiar o destino iSCSI (MPIO). Varios destinos
- Unha das cousas que se pode desexar é conectarse a outro destino distinto ao que se ten.
- Este novo destino terá o seu wwid distinto do do destino actual.
- Na seguinte exemplo creamos un novo dispositivo iSCSI na NAS: iscsi-sr, descubrímolo (discovery) e conectámolo (loginall) como nos exemplos anteriores.
- Cambiar Descubrir e activar os nodos
-
iscsiadm -m node sessions amosa as sesións activas; vemos que hai dúas rutas ao mesmo destino.
multipath -ll amosa, entre outras cousas, o wwid asociado ao novo dispositivo de almacenamento iSCSI.
Con ls -l /dev/mapper vemos os enlaces aos dispositivos de bloque multicamiño.
Observar que aparece o wwid e non o alias; iso é porque o wwid asociado ano novo dispositivo de almacenamento non coincide co que está no arquivo de configuración /etc/multipath.conf. -
Cambiamos o wwid no ficheiro de configuración /etc/multipath.conf co wwid do novo dispositivo iSCSI. Incluso cambiamos o alias por un novo, ... simplemente para adaptar o alias aos nosos intereses.
Reiniciamos o servizo multipath: service multipath-tools restart. Vemos que o novo alias xa está como apuntando ao novo dispositivo de bloque multicamiño.
- No caso de querer ter varios destinos distintos iSCSI, todos eles accesibles por MPIO entón hai que achar o wwid de cada un deles e logo configurar o ficheiro /etc/multipath.conf creando unha entrada multipath{} co wwid asociado ao dispositivo iSCSI e o alias que desexemos.
Documentación
- A meirande parte da documentación usada para elaborar este apartado é do seguinte enlace e adaptada ás nosas circunstancias:
http://kb.open-e.com/Setup-a-Ubuntu-Server-with-iSCSI-and-MPIO-to-connect-to-an-iSCSI-Tartget-in-DSS-V7_1653.html
-- Antonio de Andrés Lema e Carlos Carrión Álvarez -- (2014).