martes, 25 de enero de 2011

Configuración de un SAN iSCSI con OpenFiler 2.3

IMPORTANTE: Si vais a usar Ms Windows con el iniciador para conectar al SAN, NO USEIS OpenFiler de 64 Bits, usad Open Filer de 32 Bits. El procedimiento es el mismo.
ACTUALIZACIÓN: 8 de Febrero de 2011:
He cambiado el bonding del mode 6 al mode 2 (XOR Bonding) en la sección de configuración de red. El bonding 6 no funciona con máquinas virtuales VirtualBox 4.0.2 (o configuro algo mal) mientras que he probado otros como Active Backup y XOR que si funcionan. Tenedlo en cuenta. Dejo XOR porque proporciona tolerancia y balanceo de carga (si hay varios hosts de destino que usen el SAN como es nuestro caso). Mirar nota de bonding al final.

Vamos a configurar un entorno SAN iSCSI usando OpenFiler 2.3 (OPF) Para ello vamos a ampliar la configuración de la máquina virtual vbox que configuramos inicialmente aquí.

SAN iSCSI a grandes rasgos

La tecnología iSCSI o internet SCSI nos permite exportar el almacenamiento a través de una red convencional. Permite usar el protocolo SCSI a través de la red, es decir, podemos usar las redes ethernet que tenemos instaladas para tener un SAN y reducir costes. Para que un SAN iSCSI sea eficiente debemos tener la precaución de separar la red del SAN de la del uso normal. Podemos hacer esto usando, por ejemplo, una VLAN dedicada para que el SAN tenga su propio rango de IPs. Esto hará que tenga su propio dominio de broadcast. Además, deberíamos usar tecnología Gigabit Ethernet para la comunicación o superior (10 GEthernet). Los SAN con GEthernet tienen muy buen rendimiento.

La diferencia entre un entorno SAN y un NAS es que los SAN actúan como discos duros a través de la red, es decir, la información se trata por bloques como en un disco normal, mientras que en un NAS no se usan los bloques sino los ficheros, con la problemática que conlleva el uso de software añadido para el manejo de los ficheros (bloqueos, permisos y demás) Un SAN usa tecnologías como iSCSI o Fibre Channel y un NAS usa tecnologías como CIFS, NFS o SMB (sistemas de ficheros de red). OPF puede hacer las dos cosas y más.

Los servidores o desktops que se conecten a un SAN iSCSI verán a este como si fuera un disco propio de su propio hardware. Para ello, las máquinas que se quieran conectar al SAN deberán tener instalado y configurado un iniciador iSCSI (initiator) que se encargará de iniciar y conectar al "objetivo" iSCSI SAN (target iSCSI, o recurso de almacenamiento). En una cabina SAN puede haber varios target iSCSI configurados.

Sabiendo esto, configuraremos el/los target en OPF y, en la siguiente entrega, los iniciadores iSCSI en Fedora 14 - Kubuntu 10.10 (MVs) y Microsoft Windows 7 (otro ordenador físico real) Empezamos.

Añadir Hardware a la MV de OpenFiler

Lo primero que haremos será añadir lo siguiente a la MV que teníamos con OPF.

  • 2 tarjetas de red más en modo bridge para realizar Channel Bonding (unión de varias interfaces de red ethernet para que parezcan una sola interfaz y así aumentar el rendimiento/ancho de banda y redundancia) Deberéis habilitar otros 2 adaptadores en la sección de red de la MV. Comprobad que las MACs son diferentes a la MAC del primer adaptador que ya teníamos configurado. Si tenéis varias tarjetas ethernet físicas diferentes podéis usarlas seleccionándolas al configurar los nuevos adaptadores virtuales, así tendréis channel bonding real.
  • 10 discos más que pondremos en la controladora SATA. Creamos 10 discos de 4 GB llamados opfstorage00, 01, 02, etc. hasta 09. Con esto tendremos 40GB en total en un array de discos. Estos discos serán almacenados en el directorio de la máquina virtual (antes de la versión 4 de Vbox los discos se almacenaban en un directorio común, ahora no) Si el almacén de MVs está en un sistema de ficheros EXT4 debéis marcar la opción Usar cache de E/S del anfitrión (por un bug que había y que no se si está arreglado ya, pero por si acaso) Para añadir un disco, simplemente dais al botón Añadir disco duro en controladora SATA y los creáis nuevos. Los creamos con las opciones por defecto (menos tamaño y nombre). Usamos expansión dinámica.

Queda así (el primer disco de 8GB es el que usa OPF para instalarse, el SO)


Configuración de OpenFiler

Arrancamos OPF. Vamos a la adm. web y entramos con usuario y contraseña. En la sección Status-->System Status debería detectar los nuevos discos incorporados al sistema y las tarjetas de red como vemos aquí.


Configuración de la red

He cambiado el nombre del sistema y he configurado las IPS y máscaras de los dos adaptadores de red nuevos a direcciones IP Státicas. Así que partimos de la siguiente configuración:


Pulsamos en create bonded interface para crear un Ethernet Bonding. Seleccionamos eth1 y eth2 para crearlo y damos a continuar.


En la siguiente imagen vemos como configuramos las opciones del bonding. Hay varios modos de bonding. Yo he elegido el modo 2 o Balance-XOR. Este modo hace que haya balanceo de carga entre los diferentes destinos, es decir, si tenemos varios destinos del trafico (MACs) habrá balanceo de carga, usando una interfaz para cada destino, si solo tenemos 1 destino, al usar solo una interfaz del bonding no obtendremos un balanceo. En nuestro caso, accederán al SAN varios clientes así que tendrémos balanceo. Además proporciona tolerancia a fallos, ya que si cae una interfaz usa la otra. Hay otros modos, podemos ver un resumen bueno aquí (en inglés). Damos a continuar y nos habrá creado la interfaz bond0 con la IP 192.168.2.100/24 y con las interfaces de red eth1 y eth2 de esclavas. Por supuesto, si separamos las redes hay que disponer de un router o un switch multicapa que nos redireccione.





Por último hay que configurar el acceso de la red/hosts a la SAN. Esto es necesario para que los iniciadores y targets iSCSI se comuniquen correctamente. Es un requisito, si no lo hacéis, deberéis hacerlo después al configurar iSCSI, así que mejor ahora. Añadimos la red 192.168.2.0/24 (redSAN) y 192.168.1.0 (redLocal. En un entorno de producción, es mejor agregar los hosts que vayan a acceder (servers) o las redes seguras en vez de todo, como he hecho yo, ya que esto es un entorno de pruebas.


Configuración del almacenamiento

Lo primero que vamos a hacer es configurar los volúmenes físicos, es decir, los discos duros. Vamos a Block Devices y damos a crear nuevos volúmenes físicos



Vemos todos los discos que tenemos y que ha nombrado el sistema con las letras desde la b hasta la k (10 Discos). Vamos a realizar un RAID 1+0, es decir, espejaremos los discos por parejas (RAID 1) y después uniremos el espacio mediante un RAID 0. Esto nos da una alta tolerancia a fallos ya que podemos perder hasta 5 discos de los 10 sin que los datos se pierdan. Si perdemos los 2 discos de un mismo espejo perderíamos todos los datos, eso sí. Perderemos la mitad del espacio de disco para el raid espejado, es decir, de los 40GB totales nos quedarán solo 20 GB para datos. Si necesitáis más espacio y menos tolerancia podéis hacer un RAID 5 o 6 pero solo podréis perder 1 o 2 discos respectivamente.

Primero crearemos todas las particiones de tipo raid usando todos los discos, sdb, sdc, sdd, sde, sdf, sdg, sdh, sdi, sdj y sdk.

Pulsamos en /dev/sdb y en la siguiente pantalla elegimos que el dispositivo sea de tipo raid y pulsamos crear. Veremos que nos ha salido una pantalla en la que se ha creado una partición /dev/sdb1 de tipo raid usando todo el espacio de disco. Hacemos lo mismo con cada uno de los otros 9 discos restantes.


Al final tenemos todos los discos con una partición tipo raid (/dev/sdb1, /dev/sdc1, etc) Si pulsamos en view podemos ver las particiones de cada disco, como vemos aquí:


El siguiente paso es crear el dispositivos RAID 1+0 o RAID 10. Tan sencillo como pulsar en la sección Volumes-->Software RAID y seleccionar el raid y los volumenes físicos a usar. Como viene en la siguiente imagen:



Como vemos, se ha creado el dispositivo /dev/md0, este es el raid 10 y es el dispositivo físico que usaremos a partir de ahora. Ya no tenemos 10 discos independientes sino un RAID 10 de 20 GB.

Creamos un grupo de volúmenes (VG) Este VG se llamará vglabstorage y contendrá volúmenes físicos (PV). Usaremos el PV /dev/md0 para incluirlo en este VG. Más adelante se podrían añadir más volúmenes físicos (otros tipos de RAID, particiones, etc.) a este VG. Vamos a Volumes-->Volume Group Management y lo rellenamos así y pulsamos el botón Add Volume Group


Y nos crea el VG vglabstorage. Si pulsamos en View Member PVs podemos ver los PVs que contiene. En nuestro caso solo el raid md0.


Lo siguiente que debemos hacer es crear un volumen lógico (LV) Vamos a Volumes-->Add Volume, seleccionamos el VG donde queramos crearlo (solo tenemos uno pero podría haber más) rellenamos como en la imagen y damos a Create. Yo he usado solo la mitad del espacio que tenemos disponible para crear un LV llamado iSVlabstorage01. Es muy importante que lo creemos del tipo iSCSI para poder usarlo después. El LV también podemos y de hecho se va a denominar LUN (Logical Unit Number)



Una vez creado el LV/LUN, el siguiente paso es activar el servidor iSCSI. Vamos a Services y pulsamos en Enable en el servicio iSCSI target server. Cuando aparezca en el estado enabled ya estará habilitado.


Volvemos a Volumes y damos al submenú iSCSI Targets. Ahora debemos configurar el target pulsando en otro menú que sale en Target Configuration. Para ello le pondremos e nombre

iqn.2011-01.org.labyoadminsis:labstorage01.openf6400

Este nombre sigue una convención IQN (iSCSI qualified name RFC 3720 y RFC 3721) que es el literal iqn, la fecha de obtención de propiedad del domino usado (labyoadminsis.org), el nombre de dominio invertido, :, nombre idenficativo del objetivo de almacenamiento, yo he puesto el nombre del volumen iscsi y el nombre de host del sistema. Hay que decir que no soy propietario de ese dominio así que he inventado los datos para explicarlo. También se puede dejar el nombre que pone por defecto OPF y que genera automáticamente.

Pulsamos el botón Add y vemos que se ha añadido y que salen opciones que podemos configurar a nuestro gusto. Las dejo por defecto.


Pulsamos en LUN Mapping. Ahora vamos a mapear el LV o LUN que creamos al target que acabamos de crear. Solo tenemos un LUN así que dejamos los parametros por defecto y pulsamos en el botón Map. El modo de lectura/escritura puede ser de solo lectura, write-throught y write-back. Elegimos Write-throught para que los datos se escriban directamente en el disco sin pasar por la cache, en principio sería más rápido que los datos fueran a cache y después se escribieran en disco (Write-back) pero los sistemas de ficheros con Journal crean carga adicional si usamos write-back y hacen que sea más lento. Además, si usamos write-back y hay un corte de luz, los datos en caché se pierden (para BBDD es muy importante esto), por tanto, dejamos write-througt como opción. El modo de transferencia lo dejamos blockio en vez de fileio para que se acceda al disco en modo bloque, como un disco duro normal y no en modo archivo como si fuera un sistema de ficheros de red (NFS, CIFS).


Al mapearlo le asigna el identificador de LUN 0.


Continuamos con iSCSI y configuramos el acceso a la red en Network ACL. Si hicimos bien la configuración de la red (al principio) ahora saldrán las redes/hosts que podemos permitir aquí. En mi caso permitiré (Allow) a las dos redes el acceso pero en producción solo deberíais permitir lo que sea necesario. Acordaos de cambiar a Allow ya que por defecto es Deny (denegar) Pulsáis el botón Update.


Por último, vamos a configurar la autenticación de la comunicación. Se usa el protocolo CHAP. Ponemos un nombre de usuario, una contraseña y damos a Add y seleccionamos Incoming User.


El iniciador iSCSI en los sistemas que accedan a este target deberán configurarse con CHAP y con este usuario y contraseña. Pero eso será en la siguiente entrega. Espero que os sea útil.


NOTA
Cuando creamos un nuevo bonding, por defecto vemos que las interfaces eth y bond no están "linkadas". Para que estén activas y se pueda usar el bonding podemos hacer tres cosas:
  1. Reiniciar el sistema (no recomendado)
  2. Reiniciar la red (no recomendado pero mejor que la opción uno)
  3. Linkar las interfaces esclavas del bonding con los siguientes comandos (no hay que reiniciar todas las interfaces de red ni el sistema. Recomendado)

# ip link set dev eth1 up
# ip link set dev eth2 up

Una vez linkadas las interfaces esclavas del bonding, esté pasará a estar linkado también (de hecho solo con que linkemos una interfaz ya pasará a activo).

En todos los puntos menos el primero hay que entrar en modo consola como usuario root. Ahora podremos usar el bonding sin reiniciar openfiler o las interfaces de red no implicadas.
Related Posts with Thumbnails