Pre

Qué es iSCSI y por qué es crucial para el almacenamiento moderno

iSCSI, o iSCSI, es una tecnología de almacenamiento en bloque que transporta comandos SCSI a través de redes TCP/IP. Esta capacidad permite que un servidor acceda a volúmenes de almacenamiento situados en una red de almacenamiento (SAN) como si fueran discos locales, pero sin necesidad de hardware de Fibre Channel costoso. En la práctica, iSCSI convierte redes IP en redes de almacenamiento, creando una solución flexible, escalable y, en muchos casos, más rentable que las soluciones tradicionales de fibra. En entornos virtualizados y en infraestructuras que requieren expansión rápida, iSCSI se presenta como una alternativa atractiva para desplegar almacenamiento compartido con alta disponibilidad y rendimiento razonable.

Con iSCSI (también posible escribir ISCSI en algunos textos técnicos), los componentes clave son los initiators, los targets y los LUNs. La combinación de estos elementos, junto con una red adecuadamente diseñada, permite construirSANs que soportan cargas críticas como bases de datos, máquinas virtuales y grandes volúmenes de almacenamiento de archivos. En este artículo exploramos en profundidad qué es iSCSI, cómo funciona, sus ventajas, cómo configurarlo en Linux y Windows, y las mejores prácticas para sacar el máximo provecho.

Arquitectura de iSCSI: Initiadores, Targets y LUNs

Initiadores iSCSI

El initiator es el cliente que envía comandos SCSI a través de la red. En un entorno típico, el iniciador reside en el servidor que consume el almacenamiento. Los iniciadores pueden ser de software, como el open-iscsi en Linux, o de hardware, integrados en adaptadores de red especializados. El iniciador inicia sesión en un target y establece sesiones para acceder a los LUNs que se han expuesto.

Targets iSCSI

El target es el extremo del almacenamiento que presenta bloques de datos al initiator. Cada target puede exponer uno o varios LUNs (Logical Unit Numbers), que son unidades de almacenamiento lógicas individuales. Un mismo servidor de almacenamiento puede presentar múltiples targets para segmentar la disponibilidad y la seguridad, o para distribuir la carga entre varias redes o rutas de acceso.

LUNs y volúmenes

Un LUN es una entidad de almacenamiento que parece un disco para el initiator. En iSCSI, cada LUN corresponde a un volumen físico o a un volumen lógico dentro del almacenamiento del target. Los LUNs pueden formatearse y particionarse como si fueran discos locales; pueden contener sistemas de archivos, bases de datos, o volúmenes para máquinas virtuales. En la práctica, la administración de LUNs implica crear, asignar y gestionar permisos para que los initiators autorizados accedan a ellos de forma segura.

Cómo funciona iSCSI: flujo de operaciones y conceptos clave

iSCSI opera encapsulando comandos SCSI dentro de paquetes TCP/IP. El flujo típico incluye descubrimiento de targets, autenticación y login, y luego la transferencia de datos en bloques. A grandes rasgos, estos son los pasos:

La simplicidad de usar TCP/IP para transportar SCSI facilita la integración con infraestructuras existentes, pero también requiere atención a la latencia, el rendimiento de la red y la seguridad. La capa de red debe ser suficientemente estable para evitar pérdidas de paquetes que afecten el rendimiento de entrada y salida (IOPS) de las aplicaciones que dependen de iSCSI.

Ventajas y casos de uso de iSCSI

iSCSI ofrece una variedad de beneficios que lo hacen adecuado para diferentes escenarios:

Sin embargo, es importante reconocer que en escenarios con requerimientos extremos de IOPS o latencia ultra baja, o en infraestructuras ya basadas en Fibre Channel, la solución óptima podría diferir. Aun así, iSCSI continúa siendo una opción poderosa para construir soluciones de almacenamiento en red rápidas de implementar y altamente disponibles.

Rendimiento, seguridad y buenas prácticas en iSCSI

Para obtener el máximo de iSCSI, es crucial diseñar la red, la configuración y la seguridad pensando en el rendimiento y la confiabilidad. A continuación, algunas recomendaciones clave:

Red y conectividad

Utiliza redes dedicadas de almacenamiento o VLANs separadas para el tráfico iSCSI cuando sea posible. Emplea enlaces redundantes y considera usar NICs con soporte para offload y load balancing. Si dispones de vínculos de 10 GbE o superiores, habilita soporte para Jumbo Frames (MTU 9000) en el switch y en las interfaces para reducir overhead y mejorar el rendimiento de IO.

Multipath I/O (MPIO)

La multipath I/O es fundamental cuando hay múltiples rutas desde el initiator al target. MPIs permiten distribuir las operaciones de lectura/escritura entre varias rutas y reducir la probabilidad de cuello de botella. Configurar MPIO implica ajustar el controlador de SCSI, el iniciador iSCSI y, en algunos casos, el software del sistema operativo para balanceo de carga y conmutación por fallo (failover).

Seguridad: autenticación y aislamiento

La autenticación CHAP añade una capa de seguridad para evitar accesos no autorizados. En redes no privadas, considera emplear CHAP bidireccional y, si es posible, segmentación de red y control de acceso a los targets. Para aumentar la seguridad entre redes, evalúa la posibilidad de cifrado IPsec para el tráfico iSCSI o, si el hardware lo soporta, usar túneles seguros entre initiators y targets. Evita exponer el tráfico iSCSI a redes no confiables y mantén listas de control de acceso para limitar qué initiators pueden conectarse a cada target.

Gestión de volúmenes y consistencia

Planifica la organización de volúmenes y LUNs pensando en la consistencia y la cosecha de rendimiento: por ejemplo, separar volúmenes de base de datos de volúmenes de máquinas virtuales para evitar contención; crea snapshots y backups regulares; utiliza sistemas de archivos compatibles con tus cargas y verifica compatibilidad entre sistemas operativos y controladores de almacenamiento.

Monitoreo y mantenimiento preventivo

Implementa monitorización de métricas clave como latencia promedio, IOPS, ancho de banda y tasas de error de la red. Mantén actualizados los controladores iSCSI y el firmware de los adaptadores de red y del almacenamiento. Realiza pruebas de recuperación y verificación de rutas regularmente para garantizar que las rutas de conmutación por fallo funcionen correctamente al needed.

Configuración básica de iSCSI en entornos Linux

A continuación se presenta una guía práctica para desplegar iSCSI en Linux usando el iniciante y el demonio open-iscsi. Los pasos son orientativos y deben adaptarse al entorno específico (distribución, gestión de red, políticas de seguridad).

Instalación y preparación

Instala el paquete de initiador iSCSI y verifica el estado del servicio:

sudo apt-get update
sudo apt-get install open-iscsi
sudo systemctl enable --now iscsid
sudo systemctl start iscsid

Configura el archivo de identificación del iniciador, por ejemplo:

sudo nano /etc/iscsi/initiatorname.iscsi
# iqn.2024-01.com.ejemplo:host1

Reinicia el demonio si cambias la configuración:

sudo systemctl restart iscsid

Descubrimiento de targets

Descubre targets disponibles en una dirección IP de almacenamiento. Sustituye 192.0.2.10 por la IP de tu storage array o del almacenamiento iSCSI:

sudo iscsiadm -m discovery -t sendtargets -p 192.0.2.10

Deberías obtener una lista de IQNs de targets disponibles, por ejemplo:

192.0.2.10: iqn.2024-01.com.ejemplo:target1

Login a un target y asignación de LUN

Conecta a un target específico y especifica el IQN correspondiente:

sudo iscsiadm -m node -T iqn.2024-01.com.ejemplo:target1 -p 192.0.2.10 --login

Después del login, verifica que la sesión está activa:

sudo iscsiadm -m session -o show

Rescan y desarrollo de nuevos LUNs

Si se añaden nuevos LUNs en el target, realiza un rescaneo para descubrir cambios sin reiniciar el sistema:

sudo rescan-scsi-bus.sh -a -i

Montaje de volúmenes en Linux

Luego de descubrir y login, identifica el dispositivo generado (por ejemplo, /dev/sdb) y crea un sistema de archivos o un volumen lógico:

sudo fdisk -l
sudo mkfs.xfs /dev/sdb
sudo mkdir /mnt/iscsi
sudo mount /dev/sdb /mnt/iscsi

Para hacer el montaje persistente, añade una entrada en /etc/fstab:

/dev/sdb   /mnt/iscsi   xfs   defaults  0  2

Configuración iSCSI en Windows

En Windows, el proceso se gestiona a través del iSCSI Initiator, una utilidad integrada. Siga estos pasos para una implementación típica:

  1. Habilita el servicio iSCSI Initiator desde Servicios o desde el Panel de Control.
  2. Abre iSCSI Initiator y añade una puerta de enlace (Portal) apuntando a la IP del storage iSCSI.
  3. Descubre targets: el sistema listará IQNs disponibles en ese portal.
  4. Conéctate al target deseado. Opcionalmente configura el modo de conexión para múltiples rutas o para Conexiones persistentes tras reinicios.
  5. Gestiona los LUNs desde la consola de disco: crea volúmenes, asigna letras de unidad, formatea y monta los volúmenes en el sistema.

Windows ofrece herramientas gráficas y comandos PowerShell para automatizar estas tareas, lo que facilita la gestión para entornos que ejecutan Windows Server como hosts de bases de datos, aplicaciones empresariales o plataformas hypervisoras.

Buenas prácticas avanzadas para iSCSI

La siguiente lista presenta recomendaciones para entornos productivos donde iSCSI debe ser confiable y escalable:

Monitorización y solución de problemas de iSCSI

La monitorización constante ayuda a detectar cuellos de botella, fallos de hardware o configuraciones inadecuadas antes de que afecten a las aplicaciones. Algunas prácticas útiles:

En caso de fallos, aplica una rutina de diagnóstico: verifica conectividad de red, estado de las rutas, si el target responde, y si el LUN sigue siendo visible. El restablecimiento de sesiones iSCSI puede resolver situaciones de desincronización entre initiator y target.

Casos prácticos de implementación de iSCSI

Ejemplos típicos de implementación muestran la versatilidad de iSCSI en diferentes escenarios:

Preguntas frecuentes sobre iSCSI

A continuación, respuestas a las consultas más habituales sobre iSCSI:

Conclusión: ¿cuándo elegir iSCSI?

iSCSI representa una solución de almacenamiento en red muy atractiva para organizaciones que buscan combinar coste, flexibilidad y rendimiento razonable. Su capacidad para consolidar almacenamiento compartido entre múltiples hosts, su compatibilidad con sistemas operativos y plataformas de virtualización, y su facilidad de implementación lo convierten en una opción muy popular en entornos modernos. Con una planificación adecuada de la red, la seguridad y la gestión de rutas, iSCSI puede entregar un rendimiento sólido y disponibilidad alta para bases de datos, servicios empresariales y entornos de desarrollo. Si tu objetivo es una SAN eficiente sin la complejidad de las tecnologías más costosas, iSCSI es una alternativa que vale la pena explorar y, en muchos casos, implementar hoy mismo.