Se encuentra usted aquí

iSCSI en FreeBSD

Valoración: 
4.5

Recientemente tuve la necesidad de implementar un servidor de almacenamiento y de respaldos conectado a una SAN, me ofrecían un servidor con Microsoft Windows para hacerlo de forma rápida, pero para mantener congruencia con nuestros servidores, me dí a la tarea de hacerla funcionar bajo FreeBSD, que por cierto, fue muy rápido!

Introducción

Lo primero que hay que saber es que una SAN (Storage Area Network) es diferente de un NAS (Network-Attached Storage), en el esquema de funcionamiento. Una SAN es un servidor de bloques, similar a un disco duro, únicamente sirve para almacenar datos; un NAS por el contrario, es un servidor de almacenamiento orientado a servicios, es decir, es accesible usando múltiples puertos y protocolos (ftp, smb, webdav, etc).

Algunas de las ventajas de la SAN serían que, permite segmentar un arreglo de discos en varios bloques y así destinar diferentes bloques a diferentes servicios y/o servidores; también permite formatear el bloque con el sistema de archivos especifico de cada sistema; no se requieren herramientas especiales, el uso es similar al que se le da a un disco duro; entre otras.

A partir de la versión 7, FreeBSD cuenta con todo lo necesario para interactuar con equipos SAN por lo que no será necesario instalar software adicional. El software utilizado esta dividido en 2 partes, el módulo de kernel iscsi_initiator.ko, y el comando iscontrol. A continuación veremos las instrucciones de uso.

Instalación y Configuración

Lo primero que hay que realizar es cargar el módulo del kernel, esto se hace ejecutando el siguiente comando:

kldload iscsi_initiator

Para cargar automáticamente el módulo y evitarnos ejecutar el comando cada vez se inicie el sistema, se tiene que agregar la siguiente linea al archivo "/boot/loader.conf":

iscsi_initiator_load="YES"

El siguiente paso es obtener los valores de configuración de la SAN, los cuales podrían ser proporcionados por el mismo equipo al momento de crear el "target", o bien pueden ser obtenidos utilizando el siguiente comando:

iscontrol -d -t IP_SERVIDOR_SAN
TargetName=iqn.2001-05.com.equallogic:0-8a0906-b801c7a05-7ac0000001e4beda-vdtest
TargetAddress=IP_SERVIDOR_SAN:3260,1

El paramentro -d inicia una sesión "Discovery" con la cual se devuelve información sobre los targets disponibles.
TargetName y TargetAddress son los valores que utilizaremos en el archivo iscsi.conf. El archivo iscsi.conf no tiene una ruta definida, pero por motivos de administración, lo mantendremos en el directorio /etc.

A continuación creamos el archivo /etc/iscsi.conf con los datos obtenidos previamente.

# iscsi.conf
iscsi_sip {
    AuthMethod = none
    TargetName=iqn.2001-05.com.equallogic:0-8a0906-b801c7a05-7ac0000001e4beda-vdtest
    TargetAddress=IP_SERVIDOR_SAN:3260,1
    tags = 256
}

iscsi_sip Es el nombre del target que utilizaremos al ejecutar "iscontrol".
En este caso, el método de autenticación esta restringido por IP, por lo cual no habilitaremos ningún otro en el archivo de configuración.
TargetName y TargetAddress son los valores que obtuvimos previamente.
tags sirve para controlar la tasa de transferencia, valores bajos producen un rendimiento muy bajo, valores muy altos podrían causar un "kernel panic", 256 es un valor razonable.

El ultimo paso consiste en generar el dispositivo correspondiente a la SAN en el sistema de archivos. Para esto ejecutamos el siguiente comando:

# iscontrol -c /etc/iscsi.conf -n iscsi_sip

iscsi_sip es el nombre del target que definimos en el archivo iscsi.conf.

Después de esto, en el directorio /dev debe de aparecer un dispositivo de almacenamiento (da) que representa la SAN. En este caso el dispositivo fue "da0".

Ya que se generó el dispositivo, simplemente hay que particionar, crear el sistema de archivos (newfs, zfs, etc) y montarlo en algún directorio. El uso es identico al de cualquier otro dispositivo de almacenamiento (disco duro, memoria flash, tarjeta CF, etc).

Por el momento, no existe una forma automática de ejecutar "iscontrol", por lo cual, es recomendable hacer un script que lo ejecute "iscontrol".

Conclusión

FreeBSD nos muestra nuevamente que siempre esta a la vanguardia, agregando soporte para las últimas tecnologías con cada nueva versión, y haciendo de su uso e integración algo muy sencillo y práctico.

Autor
Angel Gabriel León Rodríguez