Instalando un target iSCSI
Existen variedad de servidores iSCSI, muchos de ellos son propietarios y algunas de las empresas que los comercializan son IBM, Sun, HP, etc. Como vemos, son grandes empresas, y por ende el precio de sus soluciones suele ser bastante grande también. Como no queremos pagar demás y estamos seguros de que entendemos muy bien la tecnología iSCSI (dando por hecho que leímos el post anterior en este blog 🙂 ) como para no necesitar este tipo de soporte; vamos a instalar nuestro porpia SAN, o en buen inglés Storage Área Area Network. Para ello, desde luego usaremos Linux (Debian Etch, por supuesto) y una solución libre para targets iSCSI.
Dentro de Linux hay unas cuantas soluciones software para montar un servidor o target iSCSI. La más recomendada es Linux iSCSI Enterprise Target. Las razones son, que a la fecha, es la versión más potente, con activo desarrollo y tiene como ventaja que no hay que recompilar el kernel para poder usarla.
Veamos como podemos instalar un servidor o target como se le menciona en la “jerga” iSCSI. Los pasos son los siguientes:
Verificación de la versión del kernel
iSCSI Enterprise Target funciona solo sobre el kernel 2.6.14 o superior. Por eso si nuestro kernel es anterior, entonces tendremos que actualizarlo, o en última instancia, compilar una versión más reciente.
En Debian Etch la versión es superior. Lo mismo siempre podemos hacer
#apt-get install linux-image
para actualizar a la última versión del kernel.
Instalación del servidor
IET (iSCSI Enterprise Target) no está disponible como un paquete para Debian, por eso tendremos que bajarnos los fuentes y compilarlos. La buena noticia es que es un programa muy pequeño y que la instalación nos deja todo para que funcione bajo Debian.
Descargamos IET y lo descomprimimos
# tar -xzvf iSCSItarget-0.4.15.tar.gz
# cd iSCSItarget-0.4.15
El README
nos dice que necesitaremos los fuentes de nuestro kernel para poder compilar los módulos que IET debe cargar para funcionar. De esto también comprendemos que cada vez que actualicemos el kernel será necesario recompilar IET para que cargue módulos que sean compatibles (Está previsto que haya soporte nativo para targets iSCSI en el kernel a futuro). Además también necesitamos las librerías de desarrollo de ssl
# apt-get install linux-source libssl-dev
Luego basta hacer
#make
#make install
Con esto se compilarán los módulos del kernel y el servidor iSCSI (ietd). Además se instalará la documentación, los scripts de inicio y los archivo de configuración.
Configuración del target
La configuración de IET se encuentra en /etc/ietd.conf
Allí tendremos que configurar dos cosas principalmente:
- El nombre de nuestro target
- El nombre de usuario y la contraseña para la conexión del iniciador
- El dispositivo que ofreceremos como target
El nombre
El estándar iSCSI define que tanto los target como los iniciadores deben tener un nombre que sigue un patrón, el cual es el siguiente:
iqn.[yyyy-mm].[nombre del dominio invertido]:[identificador]
Donde:
iqn
es un término fijo y debe figurar al principio.
yyyy-mm
es la fecha de alta del dominio de la organización para la que estamos configurando el target
A continuación debe figurar el nombre del dominio invertido
Luego de los “:”, un identificador que podemos ponerlo a nuestro gusto, y que puede en muchos casos brindar información del target.
Un ejemplo válido sería:
iqn.2005-02.au.com.empresa:san.200G.samba
Como vemos el identificador aunque es variable y personalizable, puede reflejar el nombre dado al target, la capacidad y el servicio donde lo usaremos.
En /etc/ietd.conf
definimos el nombre de nuestro target
Target iqn.2005-02.au.com.empresa:san.200G.samba
Si queremos que nuestro target requiera autenticación., podemos definir un usuario y una contraseña para que solo se conecten los iniciadores que nosotros queremos.
IncomingUser usuario-iniciador clave-iniciador
Luego debemos definir qué dispositivo ofreceremos como target. Debemos poner una línea como la siguiente:
Lun 0 Path=/dev/sda3,Type=fileio
En este ejemplo el primer dispositivo que estamos ofreciendo es la partición /dev/sda3
del servidor. La documentación nos dice que además de particiones podemos usar discos enteros, volúmenes LVM y RAID, e incluso archivos. En cualquier caso solo hay que definir el path.
El archivo contiene muchos parámetros más de configuración, que en la mayoría de los casos tienen que ver con la performance del servidor. En nuestro ejemplo, configurando estos tres parámetros nos basta.
Una vez que hemos configurado el servidor y que tenemos lista nuestra partición o disco a ofrecer, debemos levantar el servidor.
# /etc/init.d/iSCSI-target start
Con lo cual se cargará el módulo iSCSI target en el kernel y se levantará el servidor ietd que es el que gestionará las peticiones de los iniciadores.
Por último si queremos que nuestro servicio iSCSI target inicie junto con el servidor, debemos agregarlo al inicio del sistema.
# update-rc.d iSCSI-target defaults
Ya tenemos nuestro servidor iSCSI instalado y listo para servir discos a nuestra red. Ahora necesitamos un iniciador iSCSI para que se conecte a nuestro target y podamos empezar a usar los discos por la red. No preocuparse porque ese es el tema del próximo post.
Links sobre este tema:
- iSCSI Enterprise Target
- Ardis iSCSI Target (Proyecto sobre el que está basado IETD)
- Guía para instalar un target iSCSI en Linux
- Paquetes no oficiales de IET para Debian Gracias a Federico Lazcano!
septiembre 21, 2007 a 5:24 am
“En buen inglés” Area no lleva tilde 😉
octubre 29, 2007 a 6:26 pm
En mi caso, instalación limpia de debian, ha sido necesario hacer lo siguiente:
– bajar el kernel (apt-get install linux-source)
– descomprimirlo (cd /usr/src; tar xvfj linux-source*.tar.bz2)
– compilarlo (cd /usr/src/linux-source-2.6.18; apt-get install ncurses-dev; cp /boot/config* .config; make menuconfig; make)
– crear un link en /lib/modules/version/build a kernel compilado (ln -s /usr/src/linux-source-2.6.18/ /lib/modules/2.6.18-4-686/build)
después me ha dejado compilar el IET.
Otra opción más sencilla es ejecutar apt-get install linux-headers-2.6.18-4-686 (de esta forma no hace falta instalar el kernel-source)
No se si habrá forma más sencilla, pero por si acaso
noviembre 3, 2007 a 11:05 pm
Buenas al realizar el make me ocurre lo siguiente:
make -C usr
make[1]: se ingresa al directorio `/root/iscsitarget-0.4.15/usr’
make[1]: No se hace nada para `all’.
make[1]: se sale del directorio `/root/iscsitarget-0.4.15/usr’
make -C /lib/modules/2.6.22-2-686/build SUBDIRS=/root/iscsitarget-0.4.15/kernel modules
make[1]: se ingresa al directorio `/usr/src/linux-headers-2.6.22-2-686′
CC [M] /root/iscsitarget-0.4.15/kernel/event.o
/root/iscsitarget-0.4.15/kernel/event.c: In function âevent_initâ:
/root/iscsitarget-0.4.15/kernel/event.c:98: warning: passing argument 4 of ânetlink_kernel_createâ from incompatible pointer type
/root/iscsitarget-0.4.15/kernel/event.c:98: error: too few arguments to function ânetlink_kernel_createâ
make[2]: *** [/root/iscsitarget-0.4.15/kernel/event.o] Error 1
make[1]: *** [_module_/root/iscsitarget-0.4.15/kernel] Error 2
make[1]: se sale del directorio `/usr/src/linux-headers-2.6.22-2-686′
make: *** [kernel] Error 2
Soy un poco novato con linux , me podrian echar una mano. Gracias
noviembre 7, 2007 a 12:47 am
@gonzo
No veo que pueda ser. Lo mismo no recuerdo por qué los parámetro del make “-C usr”.
En última instancia en la sección de los links hay un enlace a un paquete .deb de iscsi target.
mayo 22, 2009 a 12:45 pm
Saludos, esta muy interesante la guia pero tengo una duda yo estoy instalando el target en un Centos 5.2 y como soy nuevo en esto estoy un poco perdido con eso que necesito las fuentes para la instalacion me puediras ayudar con eso?
septiembre 17, 2009 a 6:24 am
I want to tell you that ther’s another free iSCSI Target Software – StarWind free. You can download it at http://starwindsoftware.com/free