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 *