Configuración de un servidor SAN

Índice

Gestión de volúmenes en el servidor SAN

El servidor SAN cuenta con 3 discos duros de 2G cada uno. A partir de estos discos se crea un Raid5 y se convierte en un grupo de volúmenes. En este grupo de volúmenes se crean un volumen de 1G que se comparte con un cliente GNU/Linux y dos volúmenes de 512M que se comparten con un cliente Windows.

mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/vdb /dev/vdc /dev/vdd
mdadm --detail --scan --verbose >> /etc/mdadm/mdadm.conf
update-initramfs -u -k all

vgcreate vg1 /dev/md0

lvcreate -L 1G -n lv1 vg1
lvcreate -L 512M -n lv2 vg1
lvcreate -L 512M -n lv3 vg1

Creación de un target para compartir con un cliente GNU/Linux

Creación del target en el servidor SAN

El primer paso es crear el target en el servidor SAN. Es necesario instalar previamente la herramienta tgtadm del paquete tgt.

sudo apt install tgt
sudo tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.2024-10.org.javi:target1

Además, para compartir el volumen lógico con el cliente hay que añadirlo como Unidad Lógica (LUN) al target recién creado.

sudo tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b /dev/vg1/lv1

Ahora hay disponible en el servidor un target con una LUN que se puede compartir.

vagrant@san:~$ sudo tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2024-10.org.javi:target1
    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: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 1074 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/vg1/lv1
            Backing store flags: 
    Account information:
    ACL information:

Antes de acceder al target desde el cliente (192.168.0.5) hay que hacer que esté disponible a través de la red.

sudo tgtadm --lld iscsi --op bind --mode target --tid 1 -I 192.168.0.5

Esta configuración desaparece con el apagado de la máquina. Para hacerla persistente a reinicios se debe volcar a un fichero de configuración. Esta operación se puede realizar con la herramienta tgt-admin.

tgt-admin --dump > /etc/tgt/conf.d/san.conf

Configuración del volumen en el cliente

Para configurar un target como volumen en el cliente es necesario usar la herramienta iscasiadm, disponible en el paquete open-iscsi. La instalación de esta herramienta genera el fichero de configuración /etc/iscsi/initiatorname.iscsi, que crea un initiator en el cliente para permitirle usar los volúmenes que comparte el servidor.

sudo apt install open-iscsi

Antes de configurar la conexión, es necesario conocer cuáles son los targets que ofrece el servidor SAN (192.168.0.4) disponibles en la red para el cliente.

vagrant@cliente:~$ iscsiadm --mode discovery --type sendtargets --portal 192.168.0.4
192.168.0.4:3260,1 iqn.2024-10.org.javi:target1

Con el nombre del target que se recibe desde el servidor se puede configurar la conexión.

vagrant@cliente:~$ iscsiadm --mode node -T iqn.2024-10.org.javi:target1 --portal 192.168.0.4 --login
Logging in to [iface: default, target: iqn.2024-10.org.javi:target1, portal: 192.168.0.4,3260]
Login to [iface: default, target: iqn.2024-10.org.javi:target1, portal: 192.168.0.4,3260] successful.

El volumen ya está disponible en el cliente.

vagrant@cliente:~$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0    1G  0 disk 

También se puede crear un sistema de ficheros en este disco duro.

vagrant@cliente:~$ sudo mkfs.ext4 /dev/sda
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 631106dd-f545-4129-840c-f4e4560504bd
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

Montar el volumen de forma persistente en el cliente usando systemd mount

Para que el proceso de descubrimiento y login del target sea persistente a los reinicios es necesario comprobar que el parámetro node.startup del fichero de configuración /etc/iscsi/iscsid.conf tiene el valor automatic.

#*****************
# Startup settings
#*****************

# To request that the iscsi service scripts startup a session, use "automatic":
 node.startup = automatic
#
# To manually startup the session, use "manual". The default is manual.
#node.startup = manual

Además, hay que añadir el nodo.

vagrant@cliente:~$ iscsiadm --mode node -T iqn.2024-10.org.javi:target1 --portal 192.168.0.4 -o new
New iSCSI node [tcp:[hw=,ip=,net_if=,iscsi_if=default] 192.168.0.4,3260,-1 iqn.2024-10.org.javi:target1] added

Y, en el registro del nodo cambiar el valor del parámetro discovery.sendtargets.use_discoveryd a Yes.

vagrant@cliente:~$ iscsiadm --mode node -T iqn.2024-10.org.javi:target1 --portal 192.168.0.4 -n discovery.sendtargets.use_discoveryd -v Yes

Por último, se debe establecer también un valor al parámetro discovery.sendtargets.discoveryd_poll_inval. En este caso, 30.

iscsiadm --mode node -T iqn.2024-10.org.javi:target1 --portal 192.168.0.4 -n discovery.sendtargets.discoveryd_poll_inval -v 30

Una vez que el volumen es accesible desde el cliente se puede crear un punto de montaje con systemd para hacerlo persistente. Systemd es un demonio que gestiona y adminisra el sistema y los servicios, entre ellos, el montaje de discos.

Para hacer un montaje persisten con systemd es necesario un archivo de montaje que se crea en el directorio /etc/systemd/system/<nombre>.mount.

Al igual que en el fichero /etc/fstab, en el fichero de montaje se pueden especificar el punto de montaje del disco, el sistema de ficheros que usa y las opciones de montaje.

sudo nano /etc/systemd/system/san.mount
[Unit]
Description=Nuevo disco montado-san
After=iscsid.service
Requires=iscsid.service
[Mount]
What=/dev/sda
Where=/san
Type=ext4
Options=defaults
[Install]
WantedBy=multi-user.target

Para que systemd detecte los cambios se reinicia el daemon.

sudo systemctl daemon-reload

Una vez que el montaje del dispositivo está configurado a través de systemctl este volumen se puede montar con el siguiente comando:

sudo systemctl start san.mount

Para hacer persistente a los reinicios el montaje del dispositivo simplemente hay que habilitarlo de la misma forma que se habilitan otros servicios en systemctl.

vagrant@cliente:~$ sudo systemctl enable san.mount
Created symlink /etc/systemd/system/multi-user.target.wants/san.mount → /etc/systemd/system/san.mount.

Además, se pueden usar otras funciones de systemctl como el status para ver el estado del dispositivo. Así, tras reiniciar el cliente, se puede comprobar que el dispositivo se ha vuelto a montar correctamente.

vagrant@cliente:~$ sudo systemctl status san.mount 
● san.mount - Nuevo disco montado-san
     Loaded: loaded (/etc/systemd/system/san.mount; enabled; preset: enabled)
     Active: active (mounted) since Fri 2024-11-01 19:20:34 CET; 22s ago
      Where: /san
       What: /dev/sda
      Tasks: 0 (limit: 1098)
     Memory: 160.0K
        CPU: 4ms
     CGroup: /system.slice/san.mount

nov 01 19:20:34 cliente systemd[1]: Mounting san.mount - Nuevo disco montado-san...
nov 01 19:20:34 cliente systemd[1]: Mounted san.mount - Nuevo disco montado-san.

Creación de un target para compartir con un cliente Windows

Creación del target en el servidor SAN

El target que se va a compartir con el cliente Windows cuenta con dos unidades lógicas de 512M cada una.

sudo tgtadm --lld iscsi --op new --mode target --tid 2 -T iqn.2024-11.org.javi:target2
sudo tgtadm --lld iscsi --op new --mode logicalunit --tid 2 --lun 1 -b /dev/vg1/lv2
sudo tgtadm --lld iscsi --op new --mode logicalunit --tid 2 --lun 2 -b /dev/vg1/lv3
sudo tgtadm --lld iscsi --op bind --mode target --tid 2 -I 192.168.0.6

La autenticación CHAP se puede habilitar a través de la línea de comandos con la herramienta tgtadm pero la herramienta tgt-admin no es capaz de volcar esta información al fichero de configuración persistente, así que para poder configurar la autenticación es necesrio editar directamente el fichero de configuración.

En la declaración del target en este fichero hay que añadir el parámetro incominguser que tiene dos valores. El primero de ellos es el usuario y el segundo la contraseña.

sudo tgt-admin --dump > /etc/tgt/conf.d/san.conf

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

<target iqn.2024-11.org.javi:target2>
        backing-store /dev/vg1/lv2
        backing-store /dev/vg1/lv3
        initiator-address 192.168.0.6
        incominguser usuario usuariousuario
</target>

Para cargar esta modificación en el fichero hay que reiniciar el servicio.

sudo systemctl restart tgt

Configuración del volumen en el cliente

Para configurar un volumen compartido en un cliente Windows se usa la herramienta iSCSI initiator, que está instalada en el sistema operativo por defecto.

Al iniciar esta herramienta se muestra un mensaje en el que se avisa de que el servicio iSCSI de Microsoft no se ha activado y pregunta si se quiere iniciar. Tras iniciar el servicio se abre la herramienta del iniciador o cliente iscsi en la que se puede configurar una nueva conexión.

Con esta herramienta se puede establecer una conexión rápida al servidor iscsi con la que se puede detectar un destino e inicar sesión en él indicando el nombre de domino o la dirección IP del servidor.

Tras detectar los targets creados en el servidor y compartidos con el cliente, estos se muestran en la lista de destinos detectados. Para conectarse al target hay que seleccionarlo y pulsar el botón “conectar”.

Este botón abre una ventana emergente en la que se establece la conexión al servidor SAN. En esta ventana hay que seleccionar las opciones avanzadas y marcar la casilla de autenticación CHAP. Igualmente, es necesario indicar también el nombre de usuario y la contraseña que se han establecido para este target en la configuración del servidor. El cliente iscsi de Windows requiere que estas contraseñas tengan una longitud de, al menos, 12 caracteres.

Tras establecer la conexión, en la herramienta de administración de discos ya aparecen los dos volúmenes asociados al target compartido por el servidor. Desde esta herramienta se pueden formatear y montar en el cliente Windows.

En este caso se formatean como dos nuevos volúmenes simples identificados por las letras E: y F:. Tras montarlos y formatearlos ya son accesibles y utilizables desde el cliente y se puede comenzar a almacenar ficheros en ellos.

comments powered by Disqus

Relacionados

Instalación desatendida de Debian12

Aquí se recoge una breve guía para la creación de una iso instalable de Debian usando un fichero de preseed.

Leer

Así funciona IPv6: configuración en router Linux y Cisco

IPv6 es una actualización del protocolo IPv4 que nace ante la escasez de direcciones que IPv4 permite. Las direcciones IPv6 están formada por 32 caracteres hexadecimales en grupos de cuatro caracteres separados por el carácter dos puntos (:). En este post se recogen varios ejemplos prácticos del funcionamiento de este protocolo.

Leer

Configuración NAT en routers Cisco en GNS3

NAT (Network Address Translation o traducción de direcciones de red) es un mecanismo que consiste en modificar la información de direccionamiento en los paquetes IP que atraviesan un router. En este post se muestra un ejemplo de configuración de este mecanismo en un escenario de GNS3.

Leer