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.
- 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
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
Para escanear los targets disponibles en el cliente, utilizamos el comando iscsiadm
:
sudo iscsiadm --mode discovery --type sendtargets --portal 192.168.121.9
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
También podemos crear un fichero en la unidad lógica para comprobar que se ha montado correctamente:
sudo touch /mnt/iscsi/prueba.txt
Utiliza systemd mount para que el target se monte automáticamente al arrancar el cliente.
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)
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
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
También podemos crear un fichero en la unidad lógica para comprobar que se ha montado correctamente:
sudo touch /mnt/iscsi/prueba.txt
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
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.
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:
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:
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
:
Como podemos ver, se ha conectado correctamente:
Por último, entramos en Disks Management
y vemos que se han creado dos unidades lógicas que marcaremos como GPT:
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:
4. Se realizará una prueba delante del profesor para comprobar que el sistema funciona después de un reinicio.