Cómo configurar un servidor de almacenamiento iSCSI en Ubuntu 20.04 LTS

Cómo configurar un servidor de almacenamiento iSCSI en Ubuntu 20.04 LTS

iSCSI significa Internet Small Computer System Interface y es un protocolo de red de área de almacenamiento que se puede usar para compartir dispositivos de bloque, como particiones HDD/SSD o particiones LVM, o bloquear archivos en la red. iSCSI funciona en un modelo cliente-servidor y se basa en redes TCP/IP para enviar comandos SCSI entre el cliente iniciador y el destino. iSCSI Target es un servicio en el servidor iSCSI que brinda acceso al almacenamiento compartido e iSCSI Initiator es un cliente iSCSI que se conecta al destino y accede al almacenamiento compartido.

En este tutorial, explicaremos cómo configurar los objetivos iSCSI y el iniciador iSCSI en el servidor Ubuntu 20.04.

Requisitos

  • Un sistema que ejecuta Ubuntu 20.04 para destino iSCSI con disco duro externo de 1 GB.
  • Un sistema que ejecuta Ubuntu 20.04 nuevo 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.
  • Se configura una contraseña de root 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-get update -y
apt-get upgrade -y

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

Instalar destino iSCSI

De manera predeterminada, el paquete iSCSI Target está disponible en el repositorio predeterminado de Ubuntu 20.04. Puede instalarlo ejecutando el siguiente comando en el servidor iSCSI Target:

apt-get install tgt -y

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

systemctl status tgt

Deberías obtener el siguiente resultado:

? tgt.service - (i)SCSI target daemon
     Loaded: loaded (/lib/systemd/system/tgt.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-07-11 07: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

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

En este punto, iSCSI Target está instalado en su servidor, ahora puede continuar con el siguiente paso.

Configurar destino iSCSI

Primero, deberá crear un dispositivo LUN (Número de unidad lógica) en su servidor iSCSI. LUN es un dispositivo de almacenamiento de fondo que forma parte de un dispositivo SCSI físico. Todos los LUN asignados al iSCSI Target están conectados virtualmente al sistema operativo del cliente. Por lo tanto, los iniciadores pueden establecer y administrar sistemas de archivos en iSCSI LUN.

Puede configurarlo creando un nuevo archivo de configuración:

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

Agregue las siguientes líneas:

<target iqn.2020-07.example.com:lun1>
     backing-store /dev/sdb
     initiator-address 192.168.1.20
    incominguser iscsi-user password
     outgoinguser iscsi-target secretpass
</target>

Guarde y cierre el archivo cuando haya terminado.

Dónde:

  • 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 iSCSI Target.
  • 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 que se lleve a cabo 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 iSCSI Target con el siguiente comando:

tgtadm --mode target --op show

Deberías obtener el siguiente resultado:

Target 1: iqn.2020-07.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 de destino iSCSI está instalado y configurado. Ahora puede continuar con el 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-get install open-iscsi -y

Una vez completada la instalación, descubra el servidor de destino iSCSI para averiguar los destinos compartidos mediante el siguiente comando:

iscsiadm -m discovery -t st -p 192.168.1.10

Debería ver el siguiente resultado:

192.168.1.10:3260,1 iqn.2020-07.example.com:lun1

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

nano /etc/iscsi/initiatorname.iscsi

Agregue su nombre de LUN de destino iSCSI como se muestra a continuación:

InitiatorName=iqn.2020-07.example.com:lun1

Guarde y cierre el archivo cuando haya terminado.

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

Puedes definirlo editando el siguiente archivo:Anuncio

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

Agregar/Modificar 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, 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ías obtener el siguiente resultado:

? 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 2020-07-11 07:24:19 UTC; 10s ago
       Docs: man:iscsiadm(8)
             man:iscsid(8)
    Process: 3861 ExecStart=/sbin/iscsiadm -m node --loginall=automatic (code=exited, status=0/SUCCESS)
    Process: 3867 ExecStart=/lib/open-iscsi/activate-storage.sh (code=exited, status=0/SUCCESS)
   Main PID: 3867 (code=exited, status=0/SUCCESS)

Jul 11 07:24:19 initiator systemd[1]: Starting Login to default iSCSI targets...
Jul 11 07:24:19 initiator iscsiadm[3861]: Logging in to [iface: default, target: iqn.2020-07.example.com:lun1, portal: 104.245.33.142,3260] (m>
Jul 11 07:24:19 initiator iscsiadm[3861]: Login to [iface: default, target: iqn.2020-07.example.com:lun1, portal: 104.245.33.142,3260] success>
Jul 11 07:24:19 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ías obtener el siguiente resultado:

tcp: [2] 192.168.1.10:3260,1 iqn.2020-07.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 el siguiente resultado:

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 un dispositivo compartido

Para usar el dispositivo compartido en el iniciador iSCSI, deberá 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 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ías obtener el siguiente resultado:

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ías obtener el siguiente resultado:

Filesystem      Size  Used Avail Use% Mounted on
udev            981M     0  981M   0% /dev
tmpfs           199M  588K  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

Conclusión

En la guía anterior, aprendió a configurar el destino y el iniciador iSCSI en el servidor Ubuntu 20.04. También aprendió cómo compartir un dispositivo en el servidor de Target y acceder a él desde el iniciador. No dude en preguntarme si tiene alguna pregunta.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *