Almacenamiento iSCSI · 10 min read · Nov 26, 2025

Cómo instalar un servidor de almacenamiento iSCSI en Ubuntu 22.04

La Interfaz de Sistema de Computadora Pequeña por Internet (iSCSI) es un protocolo utilizado en Redes de Área de Almacenamiento (SAN) para compartir recursos de almacenamiento a nivel de bloque, como particiones de Discos Duros (HDD) o Unidades de Estado Sólido (SSD), particiones de Gestión de Volúmenes Lógicos (LVM) o archivos de bloque a través de una red. Empleando una arquitectura cliente-servidor, iSCSI facilita la transmisión de comandos SCSI sobre redes TCP/IP entre dos componentes principales: el iniciador y el objetivo. El Objetivo iSCSI es un servicio alojado en un servidor iSCSI, responsable de otorgar acceso al almacenamiento compartido. Por otro lado, el Iniciador iSCSI funciona como el cliente, estableciendo una conexión con el objetivo para utilizar los recursos de almacenamiento compartido.

Este tutorial es una guía completa sobre cómo configurar tanto objetivos como iniciadores iSCSI en un servidor que ejecuta Ubuntu 22.04. Cubrirá los pasos para configurar el intercambio de almacenamiento seguro dentro de su red.

Requisitos

  • Un sistema que ejecute Ubuntu 22.04 para el objetivo iSCSI con 1 GB de HDD externo.
  • Un sistema que ejecute Ubuntu 22.04 fresco para el iniciador iSCSI.
  • Una dirección IP estática 192.168.1.10 está configurada en el objetivo iSCSI, y 192.168.1.20 está configurada en el iniciador iSCSI.
  • Una contraseña de root está configurada en ambos servidores.

Actualizar el Sistema

Antes de comenzar, es una buena idea actualizar su sistema con los últimos paquetes. Puede actualizarlos con el siguiente comando:

apt update -y  
apt upgrade -y

Una vez que todos los paquetes estén actualizados, reinicie su sistema para aplicar los cambios.

Instalar el Objetivo iSCSI

El paquete del Objetivo iSCSI está en el repositorio predeterminado de Ubuntu 22.04 por defecto. Puede instalarlo ejecutando el siguiente comando en el servidor del Objetivo iSCSI:

apt install tgt -y

Después de instalar el Objetivo iSCSI, verifique el estado del servidor con el siguiente comando:

systemctl status tgt

Debería obtener la siguiente salida:

? tgt.service - (i)SCSI target daemon
     Loaded: loaded (/lib/systemd/system/tgt.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2024-01-03 11:13:04 UTC; 23s ago
       Docs: man:tgtd(8)
   Main PID: 7770 (tgtd)
     Status: "Starting event loop..."
      Tasks: 1
     Memory: 1.1M
     CGroup: /system.slice/tgt.service
             ??7770 /usr/sbin/tgtd -f

Jan 03 11:13:04 ubuntu2204 systemd[1]: Starting (i)SCSI target daemon...
Jan 03 11:13:04 ubuntu2204 tgtd[7770]: tgtd: iser_ib_init(3431) Failed to initialize RDMA; load kernel modules?
Jan 03 11:13:04 ubuntu2204 tgtd[7770]: tgtd: work_timer_start(146) use timer_fd based scheduler
Jan 03 11:13:04 ubuntu2204 tgtd[7770]: tgtd: bs_init(387) use signalfd notification
Jan 03 11:13:04 ubuntu2204 systemd[1]: Started (i)SCSI target daemon.

En este punto, el Objetivo iSCSI está instalado en su servidor. Ahora puede proceder al siguiente paso.

Configurar el Objetivo iSCSI

Primero, cree un dispositivo LUN (Número de Unidad Lógica) en su servidor iSCSI. LUN es un dispositivo de almacenamiento backend que es parte de un dispositivo SCSI físico. Todos los LUN mapeados al Objetivo iSCSI están virtualmente adjuntos al sistema operativo del cliente. Por lo tanto, los Iniciadores pueden establecer y gestionar sistemas de archivos en los LUNs iSCSI.

Puede configurarlo creando un nuevo archivo de configuración:

nano /etc/tgt/conf.d/iscsi.conf

Agregue las siguientes líneas:


     backing-store /dev/sdb
     initiator-address 192.168.1.20
    incominguser iscsi-user password
     outgoinguser iscsi-target secretpass

Guarde y cierre el archivo cuando haya terminado.

Donde:

  • La primera línea define el nombre del LUN.
  • La segunda línea define la ubicación y el nombre del dispositivo de almacenamiento en el servidor del Objetivo iSCSI.
  • La tercera línea define la dirección IP del iniciador iSCSI.
  • La cuarta línea define el nombre de usuario/contraseña entrante.
  • La quinta línea define el nombre de usuario/contraseña que el objetivo proporcionará al iniciador para permitir la autenticación CHAP mutua.

A continuación, reinicie el servicio iSCSI para aplicar los cambios:

systemctl restart tgt

A continuación, verifique el servidor del Objetivo iSCSI con el siguiente comando:

tgtadm --mode target --op show

Debería obtener la siguiente salida:

Target 1: iqn.2024-01.example.com:lun1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
    Account information:
        iscsi-user
        iscsi-target (outgoing)
    ACL information:
        192.168.1.10

En este punto, el servidor del objetivo iSCSI está instalado y configurado. Ahora puede proceder al siguiente paso.

Instalar y Configurar el Iniciador iSCSI

A continuación, vaya a la máquina del iniciador iSCSI e instale el paquete del iniciador iSCSI con el siguiente comando:

apt install open-iscsi -y

Una vez que se haya completado la instalación, descubra el servidor del objetivo iSCSI para encontrar los objetivos compartidos utilizando el siguiente comando:

iscsiadm -m discovery -t st -p 192.168.1.10

Debería ver la siguiente salida:

192.168.1.10:3260,1 iqn.2024-01.example.com:lun1

A continuación, necesitará definir el nombre del dispositivo LUN en el archivo initiatorname.iscsi:

nano /etc/iscsi/initiatorname.iscsi

Agregue el nombre de su LUN del Objetivo iSCSI como se muestra a continuación:

InitiatorName=iqn.2024-01.example.com:lun1

Guarde y cierre el archivo cuando haya terminado.

A continuación, necesitará definir la información CHAP que ha configurado en el objetivo iSCSI para acceder al objetivo iSCSI desde el iniciador iSCSI. El archivo de configuración del nodo existirá en el directorio ‘/etc/iscsi/nodes/‘ y tendrá un directorio por cada LUN disponible.

Puede definirlo editando el siguiente archivo:

nano /etc/iscsi/nodes/iqn.2024-01.example.com\:lun1/192.168.1.10\,3260\,1/default

Agregue / Modifique las siguientes líneas:

node.session.auth.authmethod = CHAP  
node.session.auth.username = iscsi-user
node.session.auth.password = password          
node.session.auth.username_in = iscsi-target
node.session.auth.password_in = secretpass         
node.startup = automatic

Guarde y cierre el archivo y luego reinicie el servicio del iniciador iSCSI con el siguiente comando:

systemctl restart open-iscsi iscsid

También puede verificar el estado del servicio con el siguiente comando:

systemctl status open-iscsi

Debería obtener la siguiente salida:

? open-iscsi.service - Login to default iSCSI targets
     Loaded: loaded (/lib/systemd/system/open-iscsi.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2024-01-03 11:33:13 UTC; 10s ago
       Docs: man:iscsiadm(8)
             man:iscsid(8)
    Process: 2861 ExecStart=/sbin/iscsiadm -m node --loginall=automatic (code=exited, status=0/SUCCESS)
    Process: 2867 ExecStart=/lib/open-iscsi/activate-storage.sh (code=exited, status=0/SUCCESS)
   Main PID: 2867 (code=exited, status=0/SUCCESS)

Jan 03 11:33:14 initiator systemd[1]: Starting Login to default iSCSI targets...
Jan 03 11:33:14 initiator iscsiadm[2861]: Logging in to [iface: default, target: iqn.2024-01.example.com:lun1, portal: 104.245.33.142,3260] (m>
Jan 03 11:33:14 initiator iscsiadm[2861]: Login to [iface: default, target: iqn.2024-01.example.com:lun1, portal: 104.245.33.142,3260] success>
Jan 03 11:33:14 initiator systemd[1]: Finished Login to default iSCSI targets.

También puede verificar la conexión iSCSI con el siguiente comando:

iscsiadm -m session -o show

Debería obtener la siguiente salida:

tcp: [2] 192.168.1.10:3260,1 iqn.2024-01.example.com:lun1 (non-flash)

También puede verificar el dispositivo de almacenamiento compartido desde el objetivo iSCSI con el siguiente comando:

lsblk

Debería ver el dispositivo compartido sdb en la siguiente salida:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   80G  0 disk 
??sda1   8:1    0   80G  0 part /
sdb      8:16   0 1000M  0 disk

Crear un Sistema de Archivos en el Dispositivo Compartido

Para utilizar el dispositivo compartido en el iniciador iSCSI, necesitará crear un sistema de archivos en el dispositivo compartido (sdb) y montarlo para que este dispositivo sea útil.

Primero, cree un sistema de archivos en el dispositivo compartido (sdb) con el siguiente comando:

fdisk /dev/sdb

Responda a todas las preguntas como se muestra a continuación para crear un sistema de archivos:

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x9743ddcf.

Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): 

Using default response p.
Partition number (1-4, default 1): 
First sector (2048-2047999, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-2047999, default 2047999): 

Created a new partition 1 of type 'Linux' and of size 999 MiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

A continuación, formatee la partición con el siguiente comando:

mkfs.ext4 /dev/sdb1

Debería obtener la siguiente salida:

mke2fs 1.45.5 (07-Jan-2020)
Creating filesystem with 255744 4k blocks and 64000 inodes
Filesystem UUID: e7f06605-a0f5-41e1-b1b2-e85bd7a2d6a3
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

A continuación, monte la partición en el directorio /mnt con el siguiente comando:

mount /dev/sdb1 /mnt

Ahora puede verificar la partición montada con el siguiente comando:

df -h

Debería obtener la siguiente salida:

Filesystem      Size  Used Avail Use% Mounted on
udev            972M     0  981M   0% /dev
tmpfs           199M  528K  199M   1% /run
/dev/sda1        79G  1.8G   74G   3% /
tmpfs           994M     0  994M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           994M     0  994M   0% /sys/fs/cgroup
tmpfs           199M     0  199M   0% /run/user/0
/dev/sdb1       968M  2.5M  899M   1% /mnt

Preguntas Frecuentes

A continuación se presentan las respuestas a algunas preguntas frecuentes sobre el iniciador y el objetivo iSCSI.

¿Qué es iSCSI?

iSCSI, o Interfaz de Sistema de Computadora Pequeña por Internet, es un protocolo de red que permite la transferencia de datos a través de intranets y gestiona el almacenamiento a largas distancias. Facilita el transporte de datos a nivel de bloque entre un iniciador iSCSI en un servidor y un objetivo iSCSI en hardware de almacenamiento.

¿Qué son el Objetivo y el Iniciador iSCSI?

El Objetivo iSCSI actúa como una unidad de almacenamiento, como un disco duro, que es accesible a través de una red. El Iniciador iSCSI es el cliente que se conecta e interactúa con el almacenamiento en el Objetivo.

¿Puedo usar iSCSI sobre una WAN?

Sí, iSCSI se puede usar sobre una Red de Área Amplia (WAN), pero requiere una conexión de red estable y rápida para garantizar el rendimiento y la fiabilidad. Consideraciones de seguridad como VPN o líneas dedicadas también son importantes al usar iSCSI sobre WAN.

¿Cómo se diferencia iSCSI de NFS o SMB?

A diferencia de NFS (Sistema de Archivos de Red) o SMB (Bloque de Mensajes del Servidor), que son protocolos de almacenamiento a nivel de archivo, iSCSI funciona a nivel de bloque. Esto significa que permite a un sistema interactuar con el almacenamiento remoto como si fuera un disco duro local, proporcionando más flexibilidad en la gestión del almacenamiento.

¿Es seguro iSCSI?

iSCSI en sí no incluye características de seguridad de alto nivel. Sin embargo, puede asegurar sus conexiones iSCSI utilizando métodos como IPsec para la seguridad a nivel de red o configurando CHAP (Protocolo de Autenticación de Desafío y Respuesta) para la autenticación.

¿Cuáles son las consideraciones de rendimiento para iSCSI?

El rendimiento de iSCSI se ve influenciado por la velocidad de la red, la latencia, el rendimiento de los dispositivos de almacenamiento y la configuración de la red. Asegurar una conexión de red de alta velocidad y una latencia mínima es crucial para un rendimiento óptimo.

¿Necesito hardware especial para iSCSI?

No se requiere hardware especial para iSCSI. Puede funcionar en equipos de red estándar. Sin embargo, se pueden utilizar adaptadores de bus de host (HBA) iSCSI dedicados para mejorar el rendimiento.

¿Cómo soluciono problemas de conexión iSCSI en Ubuntu?

La solución de problemas puede implicar verificar la conectividad de la red, verificar los archivos de configuración tanto del iniciador como del objetivo, revisar los registros del sistema y asegurarse de que el objetivo esté exportando correctamente los dispositivos de almacenamiento. Además, utilizar herramientas como iscsiadm puede ayudar a diagnosticar y gestionar conexiones iSCSI.

Conclusión

La guía anterior le enseñó cómo configurar un objetivo y un iniciador iSCSI en un servidor Ubuntu 22.04. También aprendió cómo compartir un dispositivo en el servidor del Objetivo y acceder a él desde el iniciador.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.