Skip to main content

Introducción a iSCSI

Procedimiento​

Utiliza el siguiente fichero Vagrantfile para realizar el taller:

Nota: Primero debes instalar tgt en el servidor y open-iscsi en el cliente.

  1. En el servidor, crea un target con una LUN y conéctala a un cliente GNU/Linux. Explica cómo escaneas desde el cliente buscando los targets disponibles y utiliza la unidad lógica proporcionada, formateándola si es necesario y montándola.

Primero creamos el target editando el fichero /etc/tgt/targets.conf y añadiendo lo siguiente:

<target iqn.2023-01-target1>
backing-store /dev/vdb
</target>

Luego reiniciamos el servicio tgt y comprobamos que el target se ha creado correctamente y que contiene la LUN que hemos creado:

sudo systemctl restart tgt

sudo tgtadm --mode target --op show

KP

Configuramos el cliente para que se conecte al target indicando la IP del servidor y el nombre del target en el siguiente comando:

sudo iscsiadm --mode discovery --type sendtargets --portal 192.168.121.9
sudo iscsiadm --mode node -T iqn.2023-01-target1 --portal 192.168.121.9 -l

Y comprobamos que se ha conectado correctamente viendo la sesión o usando :

sudo iscsiadm -m session
sudo journalctl -k -f

KP

Para escanear los targets disponibles en el cliente, utilizamos el comando iscsiadm:

sudo iscsiadm --mode discovery --type sendtargets --portal 192.168.121.9

KP

Lo siguiente será formatear la unidad lógica que nos proporciona el target y montarla en el cliente:

sudo mkfs.ext4 /dev/sda
sudo mkdir /mnt/iscsi
sudo mount /dev/sda /mnt/iscsi

Comprobamos que se ha montado correctamente:

lsblk -f

KP

También podemos crear un fichero en la unidad lógica para comprobar que se ha montado correctamente:

sudo touch /mnt/iscsi/prueba.txt 

KP

  1. Utiliza systemd mount para que el target se monte automáticamente al arrancar el cliente.

  2. Crea un target con 2 LUN y autenticación por CHAP y conéctala a un cliente windows. Explica cómo se escanea la red en windows y cómo se utilizan las unidades nuevas (formateándolas con NTFS)

  3. El sistema debe funcionar después de un reinicio de las máquinas.

Entrega​

1. Las instrucciones que has ejecutados en el cliente iscsi para escanear los targets y formatear u montar el dispositivo compartido.

Para escanear los targets disponibles en el cliente, utilizamos el comando iscsiadm:

sudo iscsiadm --mode discovery --type sendtargets --portal 192.168.121.9

KP

Ejecutamos el siguiente comando para conectarnos al target de forma permanente:

sudo iscsiadm --mode discovery --portal 192.168.121.9 --login

Lo siguiente será formatear la unidad lógica que nos proporciona el target y montarla en el cliente:

sudo mkfs.ext4 /dev/sda
sudo mkdir /mnt/iscsi
sudo mount /dev/sda /mnt/iscsi

Para que sea persistente el montaje, debemos añadir la siguiente línea al fichero /etc/fstab incluyendo el UUID de la unidad lógica que nos proporciona el target en este caso /dev/sda:

UUID=fcdea401-e4e1-46e9-aecc-be4ed847a8c3       /mnt/iscsi      ext4     defaults        0      0

Para ver el UUID de la unidad lógica, ejecutamos el siguiente comando:

sudo blkid

Comprobamos que se ha montado correctamente:

lsblk -f

KP

También podemos crear un fichero en la unidad lógica para comprobar que se ha montado correctamente:

sudo touch /mnt/iscsi/prueba.txt 

KP

2. La configuración que has realizado para que el montaje sea automático tras iniciar el sistema.

Primero modificamos el fichero /etc/iscsi/iscsid.conf y añadimos lo siguiente:

node.startup = automatic

Y reiniciamos el servicio iscsid:

sudo systemctl restart iscsid

Lo habilitamos de forma permanente:

sudo systemctl enable iscsid open-iscsi.service

Creamos la unidad systemd para que se monte el target automáticamente:

sudo nano /etc/systemd/system/mnt-iscsi.mount

Y añadimos lo siguiente:

[Unit]
Description=Mount target2
Requires=network-online.target
After=network-online.target, iscsid.service

[Mount]
What=/dev/sda
Where=/mnt/iscsi
Type=ext4
Options=defaults

[Install]
WantedBy=multi-user.target

Reiniciamos los daemons y habilitamos la unidad systemd:

sudo systemctl daemon-reload

sudo systemctl enable mnt-iscsi.mount
sudo systemctl start mnt-iscsi.mount

KP

3. Capturas de pantallas donde se vea cómo se ha escaneado los targets y se han formateado los dispositivos de bloque y se han montado en el cliente windows.

Conectamos la máquina a la red de vagrant para que pueda conectarse a las otras máquinas (cliente y servidor). Quitamos el cortafuegos de la máquina windows para que pueda conectarse al servidor y hacer ping a las otras máquinas.

KP

En la máquina cliente creamos otro target con 2 LUN:

sudo nano /etc/tgt/conf.d/target2.conf

Y añadimos lo siguiente:

<target iqn.2021-11.org.example:target2>
driver iscsi
controller_tid 2
backing-store /dev/vdc
backing-store /dev/vdd
incominguser usuario usuariocontra
</target>

*Nota: La contraseña tiene que tener entre 12 y 16 caracteres sino no funciona despues en windows la verificación por CHAP.

Reiniciamos el servicio tgt:

sudo systemctl restart tgt

Podemos comprobarlo con el comando:

sudo tgtadm --lld iscsi --op show --mode target

Con esto vemos que en el apartado Backing store path aparecen las rutas /dev/vdc y /dev/vdd que son las unidades lógicas que hemos creado.

        LUN: 1
Type: disk
SCSI ID: IET 00020001
SCSI SN: beaf21
Size: 2147 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
SWP: No
Thin-provisioning: No
Backing store type: rdwr
Backing store path: /dev/vdc <<<< ⭐🐝 RUTA DE LA UNIDAD LÓGICA ⭐🐝
Backing store flags:
LUN: 2
Type: disk
SCSI ID: IET 00020002
SCSI SN: beaf22
Size: 3221 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
SWP: No
Thin-provisioning: No
Backing store type: rdwr
Backing store path: /dev/vdd <<<< 💐🐥 RUTA DE LA UNIDAD LÓGICA 💐🐥
Backing store flags:
Account information:
usuario
ACL information:
ALL

En windows, entramos en iscsi initiator y cambiamos en Discovery el portal al del servidor para que pueda escanear los targets:

KP

Después, en el apartado Targets vemos que aparece el target2 que hemos creado en el servidor, clicamos en él y a continuación en Connect para conectarnos al target:

KP

Al entrar, usamos la configuración avanzada y activamos Enable CHAP log on, ponemos el usuario y la contraseña que hemos puesto en el servidor y le damos a OK:

KP KP

Como podemos ver, se ha conectado correctamente:

KP

Por último, entramos en Disks Management y vemos que se han creado dos unidades lógicas que marcaremos como GPT:

KP

Para dar formato NTFS, clicamos con el botón derecho en cada unidad lógica y le damos a crear volumen simple y le damos formato NTFS:

KP KP

4. Se realizará una prueba delante del profesor para comprobar que el sistema funciona después de un reinicio.