viernes, 11 de febrero de 2011

Conectar Windows 7, Fedora 14 , Ubuntu 10.04.2 LTS y Debian 6 a un iSCSI con OpenFiler 2.3

Hola, como dije en la entrada de configuración de iSCSI y Openfiler voy a configurar los iniciadores en diferentes sistemas para que se conecten a un iSCSI.

Punto de Partida

  • Gateway: 192.168.1.120, enruta a la red 192.168.2.0 (redSAN) He usado como enrutador una máquina virtual con un ubuntu server con 3 adaptadores.
  • Administración web OpenFiler: https://192.168.1.150:446 (redLocal)
  • Dirección de Bonding de OpenFiler: 192.168.2.100 (redSAN)
  • Target iSCSI: iqn.2011-01.org.labyoadminsis:labstorage01.openf6400
  • Autenticación CHAP de entrada: Usuario "opfiscsi", Contraseña "password"

Tenemos los sistemas instalados con una dirección IP de la red local (192.168.1.0/24) y gateway 192.168.1.120.

Iniciador en GNU\Linux Debian 6 Squeeze 64 bits (amd64)

El tutorial de Debian lo haré mas detallado ya que, para los demás sistemas unix like, el procedimiento será similar.

Tenemos una instalación mínima con servidor ssh de Debian 6 conectado a la red local con dirección 192.168.1.45 en eth0. Otra tarjeta de red, eth1, conectará a la redSAN con la dirección 192.168.2.45. Si tenemos una sola interfaz podemos crear una interfaz virtual eth0:0 para conectar y poner la IP de la redSAN. En mi caso, como es máquina virtual, le añado otro adaptador, le pongo la IP y listo.

Comprobamos si la MV llega a la SAN iSCSI OpenFiler.

root@deb6400:~# ping 192.168.2.100
PING 192.168.2.100 (192.168.2.100) 56(84) bytes of data.
64 bytes from 192.168.2.100: icmp_req=1 ttl=64 time=4.45 ms
64 bytes from 192.168.2.100: icmp_req=2 ttl=64 time=0.327 ms
64 bytes from 192.168.2.100: icmp_req=3 ttl=64 time=0.325 ms
64 bytes from 192.168.2.100: icmp_req=4 ttl=64 time=0.544 ms
^C
--- 192.168.2.100 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.325/1.411/4.450/1.756 ms

Vemos que si.

Vamos a configurar Debian 6 para que se conecte al target iSCSI. Para ello instalamos open-iscsi.

# apt-get install open-iscsi

Una vez instalado configuramos el fichero /etc/iscsi/iscsid.conf

# vim /etc/iscsi/iscsid.conf

...
#*****************
# Startup settings
#*****************

# To request that the iscsi initd scripts startup a session set to "automatic".
# Para que se inicie la sesión de forma automática.
node.startup = automatic
#
# To manually startup the session set to "manual". The default is manual.
#node.startup = manual

# *************
# CHAP Settings
# *************

# Aquí configuramos la autenticación de la sesión de acuerdo a lo que 
# configuramos en la sección iscsi de autenticación de openfiler.

# To enable CHAP authentication set node.session.auth.authmethod
# to CHAP. The default is None.
node.session.auth.authmethod = CHAP

# To set a CHAP username and password for initiator
# authentication by the target(s), uncomment the following lines:
node.session.auth.username = opfiscsi
node.session.auth.password = password
...


En el tutorial de instalación de OpenFiler no añadimos a la sección Services iSCSI Setup un usuario y contraseña chap para el discovery de iscsi, así que no lo configuramos en el fichero. Tampoco tenemos un servidor iSNS de nombres de iscsi.

Reiniciamos open-icsi

# service open-iscsi restart

Hacemos el descubrimiento y después login al target

# iscsiadm  --mode discovery --type st --pportal 192.168.2.100
192.168.1.150:3260,1 iqn.2011-01.org.labyoadminsis:labstorage01.openf6400
192.168.2.100:3260,1 iqn.2011-01.org.labyoadminsis:labstorage01.openf6400

# iscsiadm -m node --targetname "iqn.2011-01.org.labyoadminsis:labstorage01.openf6400" --portal 192.168.2.100:3260 --login
Logging in to [iface: default, target: iqn.2011-01.org.labyoadminsis:labstorage01.openf6400, portal: 192.168.2.100,3260]
Login to [iface: default, target: iqn.2011-01.org.labyoadminsis:labstorage01.openf6400, portal: 192.168.2.100,3260]: successful

Y ahí está. Vemos que el target se sirve en las dos direcciones IP que autorizamos en post de configuración de Openfiler. Solo nos interesa la IP de la redSAN. El puerto es 3260. Hemos usado el modo discovery con el tipo send_target y el portal 192.168.2.100 (nodo del servidor).

Después hemos usado el modo node para hacer login al target que queremos. Al tener configurado el usuario y contraseña CHAP en el fichero de configuración de antes, el login tiene éxito.

# service open-iscsi status
Current active iSCSI sessions:
tcp: [1] 192.168.1.150:3260,1 iqn.2011-01.org.labyoadminsis:labstorage01.openf6400
tcp: [2] 192.168.2.100:3260,1 iqn.2011-01.org.labyoadminsis:labstorage01.openf6400

Como vemos tenemos 2 sesiones activas.

Comprobamos si tenemos un disco nuevo

# file /dev/disk/by-path/ip-192.168.2.100\:3260-iscsi-iqn.2011-01.org.labyoadminsis\:labstorage01.openf6400-lun-0 
/dev/disk/by-path/ip-192.168.2.100:3260-iscsi-iqn.2011-01.org.labyoadminsis:labstorage01.openf6400-lun-0: symbolic link to `../../sdc'

Vemos que ahí está el lun0 y un link soft a /dev/sdc que es el dispositivo que podemos usar. También nos sale otro disco sdb que es el mismo lun0 pero la dirección del target es la 192.168.1.150. Los cambios que hacemos en el sdc se reflejan en el sdb puesto que es el mismo lun.

Hacemos un fdisk para ver el disco

# fdisk -l /dev/sdc

Disco /dev/sdc: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cilindros of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

El disco /dev/sdc no contiene una tabla de particiones válida

Y ahí está un disco de 10 GB aprox. que es el volumen que creamos. Ahora podemos usarlo como otro disco normal pero en la red y respaldado. Si no veis el disco reiniciad Debian (por cierto, el mio es sdc pero el vuestro puede ser otra letra, sdX).

Usando fdisk voy a crear 1 partición de 1 GB para debian 6. Tipo linux (83)

# fdisk /dev/sdc

Orden (m para obtener ayuda): p

Disco /dev/sdc: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cilindros of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xfe76a23e

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema

Orden (m para obtener ayuda): n
Acción de la orden
e   Partición extendida
   p   Partición primaria (1-4)
p
Número de partición (1-4): 1
Primer cilindro (1-10240, valor predeterminado 1): 1
Last cilindro, +cilindros or +size{K,M,G} (1-10240, valor predeterminado 10240): +1G

Orden (m para obtener ayuda): p

Disco /dev/sdc: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cilindros of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xfe76a23e

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sdc1               1        1025     1049584   83  Linux

Orden (m para obtener ayuda): w

Le doy formato ext4 le pongo el label DATADEB6 y la monto.

# mkfs.ext4 -L DATADEB6 /dev/sdc1
mke2fs 1.41.12 (17-May-2010)
Atención: hay 252 bloques sin usar.

Etiqueta del sistema de ficheros=DATADEB6
Tipo de SO: Linux
Tamaño del bloque=4096 (bitácora=2)
Tamaño del fragmento=4096 (bitácora=2)
Stride=0 blocks, Stripe width=0 blocks
65664 nodos-i, 262144 bloques
13119 bloques (5.00%) reservados para el superusuario
Primer bloque de datos=0
Número máximo de bloques del sistema de ficheros=268435456
8 bloque de grupos
32768 bloques por grupo, 32768 fragmentos por grupo
8208 nodos-i por grupo
Respaldo del superbloque guardado en los bloques: 
        32768, 98304, 163840, 229376

Escribiendo las tablas de nodos-i: hecho                           
Creating journal (8192 blocks): hecho
Escribiendo superbloques y la información contable del sistema de ficheros: hecho

Este sistema de ficheros se revisará automáticamente cada 23 montajes o
180 días, lo que suceda primero.  Utilice tune2fs -c o -i para cambiarlo.

# mount -o _netdev /dev/sdc1 /mnt/DATADEB6

# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
...
/dev/sdc1 on /mnt/DATADEB6 type ext4 (rw,_netdev)

La opción _netdev del montaje indica que es un sistema de ficheros que se encuentra en la red, no en el sistema y, por tanto, previene al sistema de montar el sistema de ficheros antes de tener acceso a la red.

Por último, añadimos a /etc/fstab una entrada para que se monte al inicio.

# echo "LABEL=DATADEB6  /mnt/DATADEB6   ext4   rw,_netdev   0   0" >> /etc/fstab 
# cat /etc/fstab 

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#                
proc            /proc           proc    defaults        0       0
# / was on /dev/sda1 during installation
UUID=f92e7143-431d-491d-8d63-136c0f113848 /               ext3    errors=remount-ro 0       1
# swap was on /dev/sda5 during installation
UUID=74518bff-f4ed-46f6-959f-9a9fa26e2cf4 none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto     0       0
LABEL=DATADEB6  /mnt/DATADEB6   ext4   rw,_netdev   0   0

Voy a crear un fichero prueba.txt, reiniciar debian y ver si se monta todo correcto y el fichero sigue ahí.

# cd /mnt/DATADEB6/
# ls
lost+found
# touch prueba.txt ; echo "Este fichero es una prueba para iscsi sdc1." >> prueba.txt
# cat prueba.txt 
Este fichero es una prueba para iscsi sdc1.
# init 6

Una vez reiniciado vemos si se ha montado el directorio y el fichero sigue dentro.

# ls -lah /mnt/DATADEB6/
total 28K
drwxr-xr-x 3 root root 4,0K feb 10 13:46 .
drwxr-xr-x 3 root root 4,0K feb 10 13:28 ..
drwx------ 2 root root  16K feb 10 13:25 lost+found
-rw-r--r-- 1 root root   44 feb 10 13:46 prueba.txt

Y ahí está. Listo un sistema de ficheros por red iscsi. Umm si fueran los discos de 1 tera cada uno, tendríamos un iscsi de 10 Teras con raid 10... no está mal. Siguiente sistema.

Fedora 14 (RedHat, CentOS)

Como he dicho antes, son pasos similares así que no los explicaré mucho (o nada :-D).

Dirección IP de Fedora 14 red SAN: 192.168.2.41

[root@fed1400 ~]# ping 192.168.2.100
PING 192.168.2.100 (192.168.2.100) 56(84) bytes of data.
64 bytes from 192.168.2.100: icmp_req=1 ttl=64 time=0.466 ms
64 bytes from 192.168.2.100: icmp_req=2 ttl=64 time=1.66 ms
64 bytes from 192.168.2.100: icmp_req=3 ttl=64 time=0.395 ms
^C
--- 192.168.2.100 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 0.395/0.843/1.668/0.584 ms

# yum install iscsi-initiator-utils

Una vez instalado Open-iscsi. Lo configuramos de la misma forma.

# vim /etc/iscsi/iscsid.conf

#*****************
# Startup settings
#*****************

# To request that the iscsi initd scripts startup a session set to "automatic".
# node.startup = automatic
#
# To manually startup the session set to "manual". The default is automatic.
node.startup = automatic


# *************
# CHAP Settings
# *************

# To enable CHAP authentication set node.session.auth.authmethod
# to CHAP. The default is None.
node.session.auth.authmethod = CHAP

# To set a CHAP username and password for initiator
# authentication by the target(s), uncomment the following lines:
node.session.auth.username = opfiscsi
node.session.auth.password = password

Comprobamos

# iscsiadm -m discovery -t st -p 192.168.2.100
Iniciando iscsid:                                          [  OK  ]
192.168.2.100:3260,1 iqn.2011-01.org.labyoadminsis:labstorage01.openf6400
192.168.1.150:3260,1 iqn.2011-01.org.labyoadminsis:labstorage01.openf6400

# iscsiadm -m node --targetname "iqn.2011-01.org.labyoadminsis:labstorage01.openf6400" -p 192.168.2.100 --login
Logging in to [iface: default, target: iqn.2011-01.org.labyoadminsis:labstorage01.openf6400, portal: 192.168.2.100,3260]
Login to [iface: default, target: iqn.2011-01.org.labyoadminsis:labstorage01.openf6400, portal: 192.168.2.100,3260] successful.

# fdisk -l
...
Disco /dev/sdb: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders, 20971520 sectores en total
Units = sectores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador del disco: 0xfe76a23e

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sdb1              32     2099199     1049584   83  Linux

Como vemos, el disco sdb ya tiene la partición de Debian. Aunque Fedora 14 detecta el disco como sdb en vez de sdc. No problemo, cada sistema lo detecta como un disco local. Voy a crear una partición extendida de todo el resto del disco y dentro una partición lógica de 1 GB para Fedora de tipo Linux (83)

# fdisk /dev/sdb

Orden (m para obtener ayuda): n       
Acción de la orden
e   Partición extendida
   p   Partición primaria (1-4)
e
Número de partición (1-4, valor predeterminado 2): 
Se está utilizando el valor predeterminado 2
Primer sector (2099200-20971519, valor predeterminado 2099200): 
Se está utilizando el valor predeterminado 2099200
Last sector, +sectores or +size{K,M,G} (2099200-20971519, valor predeterminado 20971519): 
Se está utilizando el valor predeterminado 20971519

Orden (m para obtener ayuda): n
Acción de la orden
l   Partición lógica (5 o superior)
   p   Partición primaria (1-4)
l
Primer sector (2099232-20971519, valor predeterminado 2099232): +1G
El valor está fuera del rango.
Primer sector (2099232-20971519, valor predeterminado 2099232): 
Se está utilizando el valor predeterminado 2099232
Last sector, +sectores or +size{K,M,G} (2099232-20971519, valor predeterminado 20971519): +1G

Orden (m para obtener ayuda): p

Disco /dev/sdb: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders, 20971520 sectores en total
Units = sectores of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificador del disco: 0xfe76a23e

Disposit. Inicio    Comienzo      Fin      Bloques  Id  Sistema
/dev/sdb1              32     2099199     1049584   83  Linux
/dev/sdb2         2099200    20971519     9436160    5  Extendida
/dev/sdb5         2099232     4196384     1048576+  83  Linux

Orden (m para obtener ayuda): w
¡Se ha modificado la tabla de particiones!

Llamando a ioctl() para volver a leer la tabla de particiones.
Se están sincronizando los discos.

Creamos el sistema de ficheros, lo montamos, lo añadimos al fstab, creamos un fichero de pruebas y reiniciamos Fedora a ver si todo ha ido bien. Por cierto, también podríamos montar la partición de Debian y compartir ficheros.

# mkfs.ext4 -L DATAFED14 /dev/sdb5
# mkdir /mnt/DATAFED14
# echo "LABEL=DATAFED14  /mnt/DATAFED14   ext4   rw,_netdev   0   0" >> /etc/fstab
# mount /mnt/DATAFED14
# mount
...
/dev/sdb5 on /mnt/DATAFED14 type ext4 (rw,_netdev)
# touch /mnt/DATAFED14/pruebafed.txt ; echo "Prueba de fichero" >> /mnt/DATAFED14/pruebafed.txt
# cat /mnt/DATAFED14/pruebafed.txt
Prueba de fichero
# init 6

Una vez reiniciado vemos que se ha montado y que el fichero está ahí.

# df -h
S.ficheros            Size  Used Avail Use% Montado en
/dev/mapper/vg_fed1400-lv_root
                      6,4G  2,6G  3,8G  41% /
tmpfs                 249M   88K  249M   1% /dev/shm
/dev/sda1             485M   47M  413M  11% /boot
/dev/sdb5            1008M   34M  924M   4% /mnt/DATAFED14
# ls /mnt/DATAFED14/
lost+found  pruebafed.txt

Listo, vamos con Ms Windows.

Ms Windows 7 Ultimate

Bien, aquí viene la sorpresa. Ms Windows 7 no funciona bien con OpenFiler 2.3 64bits... No podremos conectar O_O. Por tanto, ¿que he tenido que hacer? Pues volver a hacer una MV exactamente igual que la de Openfiler 64bits pero de 32bits con la ISO de 32bits... para el tutorial. En entornos de producción esto es un fastidio, una perdida de tiempo, pero si teneis que usar Ms Windows para conectar al SAN usad OpenFiler de 32 BITS. Muy importante. En 64 bits si detecta el SAN pero no puede abrir sesión con el.

Si habéis seguido el tutorial de instalación de Openfiler después de modificar el post, ya tendréis el de 32 bits.

Otro punto importante, debéis crear un usuario IN en el CHAP de target iSCSI de OpenFiler con una contraseña de 13 caracteres. Menos dará error.


Una vez en funcionamiento el SAN con ip 192.168.2.101 y red local 192.168.1.151, abrimos el cmd.exe y vemos si tenemos conexión con el SAN iSCSI OpenFiler 2.3

Microsoft Windows [Versión 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.

C:\Users\casa>ping 192.168.2.100

Haciendo ping a 192.168.2.100 con 32 bytes de datos:
Respuesta desde 192.168.2.100: bytes=32 tiempo=37ms TTL=64
Respuesta desde 192.168.2.100: bytes=32 tiempo=10ms TTL=64
Respuesta desde 192.168.2.100: bytes=32 tiempo=1ms TTL=64

Estadísticas de ping para 192.168.2.100:
    Paquetes: enviados = 3, recibidos = 3, perdidos = 0
    (0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
    Mínimo = 1ms, Máximo = 37ms, Media = 16ms

Como apunte, este Ms Windows 7 es real no es una MV. Pulsamos Inicio y en el cuadro de texto ejecutamos el programa iscsicpl.exe, el iniciador iSCSI.


Nos saldrán las propiedades del iniciador iscsi. Ponemos la IP del servidor iSCSI y damos a conexión rápida. Como vemos detecta openfiler y pulsamos listo.


En la siguiente pantalla establecemos una sesión iSCSI habilitando el CHAP y conectando. El nombre es el usuario que establecimos en openfiler de entrada y el secreto es la password de 13 caracteres de ese usuario. También hemos puesto la IP del portal de la red SAN 192.168.2.101. Pulsamos aceptar en el cuadro de opciones avanzadas y en el de conexión.


Inmediatamente aparecerá como conectado (en OpenFiler de 64 bits da error). Pulsamos en aceptar.


Lo último que queda es hacer que Ms Windows detecte el disco SAN. El Lun ISCSI. Para ello vamos Inicio --> Panel de Control --> Sistem y Seguridad --> Herramientas Administrativas --> Crear y formatear particiones del disco duro (por que no lo seguiran llamando administrador de discos... ¬¬) y nos aparece, por fin, ventana Administrador de Discos y directamente otra ventana para Inicializar un nuevo disco, en mi caso, Disco 5, ya marcado y que se presupone es el LUN0 del SAN de 32bits. Damos a activar con el MBR seleccionado.


En el administrador de discos nos saldrá el nuevo disco de red SAN que no tiene particiones. Es de 8GB porque, para tardar menos, en vez de 10 discos en raid 10, cree 2 discos de 8 GB en raid 1 dando un raid espejado de 8GB para el lun0 de iscsi en openfiler.


Por ultimo damos al botón derecho en el espacio no asignado del disco 5 y pulsamos Nuevo volumen simple. Lo creamos de 1024 MB, le asignamos la letra J: y le ponemos la etiqueta DATAWIN7 y formato rápido NTFS quedando así.


Vamos al explorador y creamos un fichero pruebas.txt en el volumen J:.


Y ahí lo tenemos... Ha costado la creación de una nueva MV solo para el y los costes de administración que conlleva (o peor, reinstalar todo en una MV de 32 bits y repetir los pasos de las MV que se conectan al SAN) pero bueno. Siguiente sistema...

Ubuntu Server 10.04.02

¿Creíais que iba a repetir otro tocho para conectar a un SAN? Pues va a ser que no, ya que el procedimiento de Debian 6, es el mismo que para Ubuntu Server. Probadlo y me contais :-D.

Espero que os sea útil.


NOTA1:
En Debian Es importante configurar el fichero de configuración de open-iscsi antes de hacer el discovery ya que creará unos ficheros con la configuración de los nodos y después, si hacemos login, nos dará error si no teníamos el usuario y la contraseña definidas antes. Yo borré el directorio /etc/iscsi/nodes/iqn.2011-01.org.labyoadminsis:labstorage01.openf6400/192.168.2.100,3260,1 que me había creado y al volver a hacer discovery y login obtuve el éxito esperado.
Related Posts with Thumbnails