iSCSI Linux · 12 min read · Feb 07, 2026
Configuración de un entorno iSCSI en Linux
Configuración de un entorno iSCSI en Linux
Hoy en día, la tecnología iSCSI es bastante popular en el mundo del almacenamiento. Este artículo muestra un entorno de demostración de iSCSI que consiste en un host Debian Linux y un Netapp Filer. Intentamos mostrar las características más importantes de este protocolo.
1. ¿Qué es iSCSI?
Es un protocolo de almacenamiento en red sobre TCP/IP. Este protocolo encapsula datos SCSI en paquetes TCP. iSCSI nos permite conectar un host a un arreglo de almacenamiento a través de una simple conexión Ethernet (unidad de cinta). Esta solución es más barata que el SAN de Fibre Channel (los adaptadores y conmutadores de Fibre Channel son caros). Desde la vista del host, el usuario ve los LUNs del arreglo de almacenamiento como discos locales. Los dispositivos iSCSI no deben confundirse con los dispositivos NAS (por ejemplo, NFS). La diferencia más importante es que los volúmenes NFS pueden ser accedidos por múltiples hosts, pero un volumen iSCSI puede ser accedido por un solo host. Es similar al protocolo SCSI: generalmente, solo un host tiene acceso a un disco SCSI (la diferencia es el entorno de clúster). El protocolo iSCSI está definido en el documento RFC3720 por la IETF (Grupo de Trabajo de Ingeniería de Internet).
Algunos críticos dijeron que iSCSI tiene un rendimiento peor en comparación con Fibre Channel y causa una alta carga de CPU en las máquinas host. Creo que si usamos Ethernet Gigabit, la velocidad puede ser suficiente. Para superar la alta carga de CPU, algunos proveedores desarrollaron los iSCSI TOE-s (TCP Offload Engine). Esto significa que la tarjeta tiene un chip de red integrado, que crea y calcula los tramas TCP. El núcleo de Linux no soporta esto directamente y los proveedores de tarjetas escriben sus propios controladores para el sistema operativo.
Los términos más importantes de iscsi:
Iniciador:
El iniciador es el nombre del cliente iSCSI. El cliente iSCSI tiene acceso a nivel de bloque a los dispositivos iSCSI, que pueden ser un disco, unidad de cinta, grabadora de DVD/CD. Un cliente puede usar múltiples dispositivos iSCSI.
Objetivo:
El objetivo es el nombre del servidor iSCSI. El servidor iSCSI ofrece sus dispositivos (discos, cinta, dvd/cd … etc.) a los clientes. Un dispositivo puede ser accedido por un cliente.
Descubrimiento:
El descubrimiento es el proceso que muestra los objetivos para el iniciador.
Método de descubrimiento:
Describe la forma en que se pueden encontrar los objetivos iSCSI. Los métodos actualmente disponibles son:
- Internet Storage Name Service (iSNS) - Los objetivos potenciales se descubren interactuando con uno o más servidores iSNS.
- SendTargets – Los objetivos potenciales se descubren utilizando una dirección de descubrimiento.
- SLP - Descubrir objetivos a través del protocolo de ubicación de servicio (RFC 4018)
- Estático – Se especifica una dirección de objetivo estática.
Nomenclatura iSCSI:
El documento RFC también cubre los nombres iSCSI. El nombre iSCSI consta de dos partes: cadena de tipo y cadena de nombre único.
La cadena de tipo puede ser la siguiente:
- iqn. : nombre calificado de iscsi
- eui. : identificador de 64 bits eui
La mayoría de las implementaciones utilizan el formato iqn. Veamos nuestro nombre de iniciador: iqn.1993-08.org.debian:01.35ef13adb6d
iqn: usamos la dirección del nombre calificado de iSCSI. 1993-08: el año del mes en que la autoridad de nombramiento adquirió el nombre de dominio que se utiliza en el nombre iSCSI. org.debian: nombre DNS revertido que define la autoridad de nombramiento organizacional. 01.35ef13adb6d: esta cadena es definida por la autoridad de nombramiento.
Nuestro nombre de objetivo es similar (iqn.1992-08.com.netapp:sn.84211978). La diferencia es que contiene el número de serie del Netapp filer. Ambos nombres son editables por el usuario (iniciador, objetivo). También necesitamos dos direcciones IP para el objetivo y para el iniciador.
La siguiente figura muestra nuestro entorno de demostración. Consiste en un host Debian que es el iniciador iSCSI, y accede al disco iSCSI a través del dispositivo /dev/sdb. El Netapp filer es nuestro dispositivo objetivo iSCSI, que ofrece el disco /vol/iscsivol/tesztlun0 o lun para el host Debian Linux. La sesión iSCSI consiste en una fase de inicio de sesión, luego la fase de intercambio de datos.

2. Soporte de iSCSI en otras plataformas Unix
El controlador iSCSI de Cisco es una de las primeras implementaciones de software de iniciador iSCSI. Este controlador es compatible con todos los principales sistemas Unix comerciales y sus versiones (HPUX:10.20,11,11i, AIX:4.3.3,5.1,5.2, Solaris: 2.6,7,8,9). La primera versión se puede datar en 2001. Actualmente, cada proveedor de Unix implementa su propio controlador, y nosotros investigamos estos controladores.
Solaris:
Solaris 10 (desde la versión 1/06) soporta iSCSI. El controlador de iniciador puede hacer lo siguiente:
- Soporte para múltiples sesiones a un objetivo: esta característica permite que un cliente pueda crear más sesiones iSCSI a un objetivo según sea necesario, y aumenta el rendimiento.
- Multipath: con la ayuda de la función Mpxio o IPMP de Solaris podemos crear rutas redundantes a los objetivos.
- Discos de 2 Tb y autenticación CHAP también son soportados. El controlador de Solaris puede usar los tres métodos de descubrimiento (SLP no puede). Los discos iSCSI pueden ser accedidos por el programa de formato.
HPUX:
HP soportó iSCSI desde el sistema operativo HP11i v1. Este controlador puede descubrir los objetivos a través de SLP (Protocolo de Ubicación de Servicio) que también está definido por la IETF (RFC 4018). Esto significa que el iniciador iSCSI y los objetivos se registran en el agente de directorio SLP. Después del registro, el iniciador iSCSI consulta solo al agente de directorio. El controlador HPUX implementa todos los métodos de descubrimiento. La autenticación CHAP también está implementada y las herramientas de multipath del sistema operativo (PVLinks) también son soportadas. El controlador HPUX también proporciona estadísticas de transporte.
AIX:
Desde la versión 5.2 AIX soporta iSCSI. El controlador implementa solo el descubrimiento de objetivos estáticos. Podemos usar los discos iSCSI con el multipath de AIX llamado MPIO. La autenticación CHAP también es soportada.
Ninguno de los controladores nos permite arrancar desde iSCSI. Este puede ser un siguiente paso en el desarrollo del controlador.
3. Implementaciones de iscsi en Linux
Implementaciones de iniciador:
Cisco también lanzó un controlador para Linux, pero es bastante antiguo.
La implementación de iSCSI de Intel contiene tanto controladores de objetivo como de iniciador y una herramienta útil para generar cargas de trabajo.
UNH-iSCSI es una implementación de iniciador y objetivo de la Universidad de New Hampshire.
El proyecto Open-iSCSI es la implementación más nueva. Puede ser utilizado con núcleos 2.6.11 y superiores. Probaremos este controlador con el host Debian. Contiene módulos del núcleo y un demonio iscsid.
El iscsid puede ser iniciado con el siguiente comando:
/etc/init.d/open-scsi startLas operaciones iSCSI pueden ser controladas con el comando iscsiadm. El comando puede descubrir los objetivos, iniciar/cerrar sesión en el objetivo y mostrar la información de la sesión.
Los archivos de configuración están bajo el directorio /etc/iscsi:
- iscsid.conf: Archivo de configuración para el demonio iscsi. Se lee al inicio.
- initiatorname.iscsi: El nombre del iniciador, que el demonio lee al inicio.
- directorio de nodos: El directorio contiene los nodos y sus objetivos.
- directorio send_targets: El directorio contiene los objetivos descubiertos.
El proceso de instalación es bastante simple. Emita:
apt-get install open-iscsiEste controlador implementa actualmente el método de descubrimiento Sendtargets.
Implementaciones de objetivo:
iSCSI enterprise target es la implementación de objetivo de código abierto para Linux. Se basa en la implementación de iSCSI de Ardis y requiere el núcleo 2.6.14.
Openfiler es una implementación NAS de Linux bastante popular, y ofrece un software NAS basado en Linux con una interfaz gráfica basada en web.
Muchas otras empresas ofrecen controladores de objetivo iSCSI comerciales basados en software (Amgeon, Mayastor, Chelsio).
Los fabricantes de arreglos de almacenamiento también ofrecen soporte nativo para iSCSI (EMC, Netapp, etc.).
Hemos elegido el Netapp FAS filer para las pruebas, pero puedes probarlo con un software gratuito. Hay un enlace al final del artículo que muestra cómo podemos hacerlo con Openfiler.
4. Configuración del entorno de demostración iSCSI en Linux
Nuestro entorno de demostración contiene un host Debian Linux y un Netapp filer. El host Debian es el iniciador, y el Netapp filer es el objetivo.
El proceso de configuración es el siguiente brevemente:
- Debemos configurar la conexión tcp/ip entre Debian y el Netapp filer. El iniciador y el objetivo deben hacer ping entre sí. Suponemos que el paquete open-iscsi ya está instalado en Debian.
- El host Debian debe descubrir los objetivos Netapp. Se llama proceso de “descubrimiento”. Luego, el objetivo envía las listas de objetivos.
- El objetivo debe permitir que el iniciador acceda al LUN. En el lado de Netapp, esto significa que debemos crear un grupo de iniciadores, que es un enlace lógico entre los hosts y los luns. El grupo de iniciadores contiene el lun y un host Debian que puede acceder a este lun.
- Cuando el iniciador obtiene las listas de objetivos, debe “iniciar sesión” en el objetivo.
- Cuando el proceso de “inicio de sesión” se completa con éxito y el Netapp filer permite el acceso, el iniciador puede usar el disco iSCSI como un disco normal. Aparece bajo los dispositivos /dev/sdx y puedes formatearlo, montarlo como un disco normal.
Aquí están los pasos detallados:
- Hacemos ping al Netapp filer desde el host Linux:
debian:~# ping nasaPING nasa (192.168.2.222) 56(84) bytes de datos.
64 bytes desde nasa (192.168.2.222): icmp_seq=1 ttl=255 time=0.716 ms 64 bytes desde nasa (192.168.2.222): icmp_seq=2 ttl=255 time=0.620 ms
Es exitoso.
- Descubrimos los LUNs iSCSI del Netapp filer con el comando iscsiadm. Hemos elegido el método de descubrimiento st (sendtargets). Actualmente está implementado con este controlador:
debian:~# iscsiadm -m discovery -t st -p 192.168.2.222192.168.2.222:3260 a través de sendtargets
Veamos los objetivos descubiertos:
debian:~# iscsiadm -m node192.168.2.222:3260,1000 iqn.1992-08.com.netapp:sn.84211978
- Debemos preparar el lado de Netapp: En este ejemplo crearemos un LUN de 4GB (parte del grupo RAID), y lo asignaremos al host Debian. Debemos verificar el espacio libre:
nasa> df -kSistema de archivos total usado disponible capacidad Montado en
/vol/vol0/ 8388608KB 476784KB 7911824KB 6% /vol/vol0/
/vol/vol0/.snapshot 2097152KB 10952KB 2086200KB 1% /vol/vol0/.snapshot
/vol/iscsiLunVol/ 31457280KB 20181396KB 11275884KB 64% /vol/iscsiLunVol/
/vol/iscsiLunVol/.snapshot 0KB 232KB 0KB —% /vol/iscsiLunVol/.snapshotunVol/testlun1
El siguiente comando crea un LUN de 4GB en el volumen iscsiLunVol:
nasa> lun create -s 4g -t linux /vol/iscsiLunVol/testlun1Verifícalo:
nasa> lun show/vol/iscsiLunVol/iscsitestlun 7.0g (7526131200) (r/w, online, mapeado)
/vol/iscsiLunVol/iscsitestlun2 7.0g (7526131200) (r/w, online, mapeado)
/vol/iscsiLunVol/testlun1 4g (4294967296) (r/w, online)
Debemos verificar si el host Debian es visible desde el host netapp:
nasa> iscsi initiator showIniciadores conectados:
TSIH TPGroup Iniciador
19 1000 debian (iqn.1993-08.org.debian:01.35ef13adb6d / 00:02:3d:00:00:00)
Ok, vemos el host Debian. Vamos a crear el grupo de iniciadores, llamado Debian2.
nasa> igroup create -i -t linux Debian2 iqn.1993-08.org.debian:01.35ef13adb6dnasa> igroup show Debian2 (iSCSI) (ostype: linux):
iqn.1993-08.org.debian:01.35ef13adb6d (conectado en: e0a)Debemos asignar el nuevo LUN creado a los hosts Debian2.
nasa> lun map /vol/iscsiLunVol/testlun1 Debian2mapeo de lun: auto-asignado Debian2=2
El comando de verificación:
nasa> lun show -v/vol/iscsiLunVol/testlun1 4g (4294967296) (r/w, online, mapeado)
Número de serie: hpGBe4AZsnLV
Compartir: ninguno
Reserva de espacio: habilitada
Tipo de multiprotocolos: linux
Mapas: Debian2=2
- Volvamos a nuestro host iniciador. Ahora todo está preparado para acceder al LUN de 4GB. El siguiente comando hace que el disco sea accesible desde el host Linux.
debian:~# iscsiadm -m node -T iqn.1992-08.com.netapp:sn.84211978 -p 192.168.2.222:3260 --loginDeberíamos ver las siguientes entradas en el archivo de mensajes:
debian:~# tail /var/log/messages
Abr 13 00:31:34 debian kernel: scsi: tipo de dispositivo desconocido 31
Abr 13 00:31:34 debian kernel: Proveedor: NETAPP
Modelo:
LUN Rev: 0.2
Abr 13 00:31:34 debian kernel:
Tipo:
Desconocido revisión ANSI SCSI: 04
Abr 13 00:31:34 debian kernel: Proveedor: NETAPP Modelo:
LUN Rev: 0.2
Abr 13 00:31:34 debian kernel:
Tipo:
Acceso Directo revisión ANSI SCSI: 04
Abr 13 00:31:34 debian kernel: Dispositivo SCSI sdb: 8388608 512-byte hdwr sectores (4295 MB)
Abr 13 00:31:34 debian kernel: sdb: Protección de escritura está desactivada
Abr 13 00:31:34 debian kernel: Dispositivo SCSI sdb: caché de escritura: a través
Abr 13 00:31:34 debian kernel: sd 1:0:0:2: Dispositivo SCSI adjunto sdb
El disco aparece como el dispositivo sdb ( /dev/sdb).
- Podemos usarlo como un disco normal. Puedes crear una partición y montarla fácilmente.
debian:~# fdisk /dev/sdb debian:~# mkfs /dev/sdb1 ; mount /dev/sdb1 /mnt Si deseas usar sdb después del próximo reinicio, debes cambiar la siguiente entrada:
node.conn[0].startup = manual a automático
en el archivo /etc/iscsi/nodes/
La implementación del iniciador open-iscsi tolera bien los errores de red. Si desconectas el cable Ethernet y lo vuelves a conectar, debes iniciar el proceso de io nuevamente, pero la reconexión ocurre automáticamente.
Otra buena solución para las fallas de red, si creas múltiples rutas para un LUN (por ejemplo: /dev/sdb, /dev/sdc), el iniciador inicia sesión en dos ubicaciones (dos controladores RAID) y haces que los dos discos sean un solo disco lógico utilizando el software de multipath de Linux ( dmsetup).
Recomiendo otra alternativa para la implementación de objetivo iSCSI: Openfiler (si no puedes probar en el Netapp). Es un software NAS gratuito basado en Linux, que puede ser gestionado con una interfaz gráfica basada en web.
El proceso de configuración de iSCSI es bastante similar en el caso de otras implementaciones de Unix.
5. Resumen y resultados
iSCSI es una buena solución para un sitio de recuperación de desastres económico. No deberías comprar una costosa tarjeta de Fibre Channel en el sitio de recuperación de desastres, puedes usar Ethernet e iSCSI. También puedes usarlo para conectar hosts a arreglos de discos sin adaptadores de host de Fibre Channel (si los arreglos son compatibles con iSCSI).
Durante la prueba, ejecuté el host Debian en el programa Vmware player, y mi conexión de red era de 100 Mbit/s. No puedo alcanzar más de 15 MB/s de rendimiento de lectura/escritura, pero no es relevante. Con Ethernet Gigabit puedes alcanzar un rendimiento mucho mejor, el único inconveniente es que aumenta la carga de CPU (la CPU debe construir y calcular los tramas TCP).
Aquí está mi página de inicio simple.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.