Categorías
20.04 HowTos

Configurar iSCSI Storage Server en Ubuntu 20.04

Paso a paso para configurar un iSCSI Storage Server en ubuntu 20.04. Este servicio lo voy a utilizar para que las raspberries monten el rootfs por iSCSI.

Configurar un iSCSI Storage Server se convirtió en una necesidad para poder armar mi cluster de Raspberries sin tener que estar dependiendo de las MicroSD y la taza de falla que tiene este medio cuando se lo usa como rootfs. Usar discos por USB era una opción pero me encarecía la solución y aumentaba la cantidad de cables y puntos de falla dando vueltas.

iSCSI (Abreviatura de Internet SCSI) es un estándar que permite el uso del protocolo SCSI sobre redes TCP/IP. iSCSI es un protocolo de la capa de transporte definido en las especificaciones SCSI-3. Otros protocolos en la capa de transporte son SCSI Parallel Interface y canal de fibra.

La adopción del iSCSI en entornos de producción corporativos se ha acelerado en estos momentos gracias al aumento del Gigabit Ethernet. La fabricación de almacenamientos basados en iSCSI (red de área de almacenamiento) es menos costosa y está resultando una alternativa a las soluciones SAN basadas en Canal de fibra.

(Extraído de Wikipedia)

Procedimiento:

La previa – Configurar unidad con lvm:

Utilizar LVM nos va a permitir compartimentar el disco y poder extender la partición en forma dinámica. Y van a ser volúmenes lógicos los que voy a exponer como «tartget» de nuestro iSCSI Storage Server.

El primer paso es generar las particiones para configurar LVM en el disco nuevo. En mi caso el disco es un ssd de 256gb. En mi caso es el /dev/sda (mi disco primario es el /dev/nvme0n1).

Para confirmas que es el disco nuevo vamos a ejecutar el siguiente comando:

sudo parted -l
Salida del comando parted donde se listan los dispositivos en el equipo.

El siguiente paso es crear la partición para el lvm. Esto lo realizamos con el comando «parted» también.

sudo parted /dev/sda

Y dentro de la consola de «parted» ejecutamos los siguientes comandos. Vean la captura de pantalla de referencia.

< mkpasrt iSCSI 0% 100%
< p
< set 1 lvm on
< p
< quit
Captura de pantalla de ejecución de comandos en «parted» para crear partición LVM.
El comando «print» o «p» son lo mismo, es para imprimir las particiones del disco y verificar el avance.

Finalizado el paso procedemos a crear el grupo de volúmenes que van a tener los volúmenes lógicos.

sudo vgcreate vg_iscsi /dev/sda1

Podemos verificar la creación ejecutando el comando:

sudo vgdisplay
Captura de pantalla de la salida del comando vgdisplay

Con el grupo de volúmenes creado podemos ahora crear el volumen lógico. A este volumen lo voy a llamar rbpi3-003 porque lo voy a usar con mi 3er Raspberry PI 3.

sudo lvcreate -L 50G vg_iscsi -n lv_rbpi3-003
sudo lvdisplay
Salida del comando «lvdisplay».

De esta pantalla tengo que resguardar es «/dev/vg_iscsi/lv_rbpi3-003«.

Instalación de iSCSI Target:

Ahora procedo a instar el paquete tgt (Linux SCSI target user-space daemon and tools). Como siempre me aseguro de tener el sistema actualizado antes.

sudo apt update && sudo apt full-upgrade -y
sudo apt install tgt -y

Vamos a verificar que tgt este corriendo correctamente..

Salida del comando sudo systemctl status tgt

Ahora procedo a configurar el target que voy a exponer. Creo el archivo con un nombre descriptivo para que después esto en el futuro sea sostenible.

sudo vi /etc/tgt/conf.d/target-lv-iscsi-rbpi3-003.conf

Dentro de archivo defino:

  • El nombre del target lo definí como «alphaprime.sismonda.local:rbpi3-003«.
  • El storage como «/dev/vg_iscsi/lv_rbpi3-003» dato que obtengo de la ejecución «lvdisplay«.
  • Las direcciones ip que permito acceder son la «10.0.0.10» y «10.0.0.33».
  • El usuario definido es «Usuario«
  • El passowrd definido es «SuperSecreto«.
<target alphaprime.sismonda.local:rbpi3-003>
   backing-store /dev/vg_iscsi/lv_rbpi3-003 
   initiator-address 10.0.0.10
   initiator-address 10.0.0.33 
   incominguser Usuario SuperSecreto
</target>

A continuación recargo la configuración de servicio «tgt» para que tome los cambios.

systemctl reload tgt.service

Confirmamos que quedó expuesto nuestro target ejecutando el comando:

sudo tgtadm --mode target --op show

Donde se visualiza en la «LUN 1» el dispositivo que se comparte y las ip’s que tiene permisos para acceder.

Con esto podemos dar por finalizada la configuración de nuestro iSCSI Storage Server.

Configuración del cliente de nuestro iSCSI Storage Server

El primer paso a realizar es instalar las utilidades necesarias para acceder a unidades iSCSI.

sudo apt update && sudo apt full-upgrade -y
sudo apt install open-iscsi

El siguiente paso es revisar que targets nos expone nuestro iSCSI Storage Server a la ip del cliente. En este caso la ip de mi servidor es la «10.0.0.1«.

sudo iscsiadm -m discovery -t sendtargets -p 10.0.0.1
Captura de pantalla donde se listan las destinos disponibles.

Para poder establecer la conexión debemos ejecutar los siguientes comandos. Pongo en negrita los datos que son específicos de cada instancia.

sudo iscsiadm --mode node -T "alphaprime.sismonda.local:rbpi3-003" -p 10.0.0.1:3260 --op=update --name node.session.auth.authmethod --value=CHAP
sudo iscsiadm --mode node -T "alphaprime.sismonda.local:rbpi3-003" -p 10.0.0.1:3260 --op=update --name node.session.auth.username --value=Usuario
sudo iscsiadm --mode node -T "alphaprime.sismonda.local:rbpi3-003" -p 10.0.0.1:3260 --op=update --name node.session.auth.password --value=SuperSecreto
sudo iscsiadm --mode node -T "alphaprime.sismonda.local:rbpi3-003" -p 10.0.0.1:3260 --login
Captura de pantalla de la secuencia de comandos para establecer la conexión iSCSI.

Para saber que dispositivo fue el asignado para el destino iSCSI podemos ejecutar el siguiente comando:

dmesg |tail -n 11
Identificado el dispositivo asignado para la unidad iSCSI.

Como la unidad esta sin formatea proceso a formatearla en ‘ext4‘ y montarla en el directorio ‘/mnt/iSCSI

sudo mkfs.ext4 /dev/sdb
sudo mkdir -p /mnt/iSCSI
sudo mount /dev/sdb /mnt/iSCSI
Formateo de la unidad iSCSI

Verificamos que este montado ejecutando el comando:

mount |grep iSCSI
Confirmación de unidad montada.

Si se quiere remover la unidad se deben ejecutar los siguientes comandos.

sudo umount /mnt/iSCSI
sudo iscsiadm --mode node -T "alphaprime.sismonda.local:rbpi3-003" -p 10.0.0.1:3260 -u
sudo iscsiadm --mode node -T "alphaprime.sismonda.local:rbpi3-003" -p 10.0.0.1:3260 -o delete

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.