Configuración de discos por iSCSI

iSCSI es la abreviatura de Internet Small Computer System Interface, básicamente es la implementación por red del protocolo SCSI. En este protocolo el cliente recibe el nombre de iSCSI Initiator y el servidor iSCSI Target. Los targets son identificados por una nomenclatura estándar:

iqn.[año-mes].[nombre_inverso_domino]:[nombre_identificativo]

 En este post vamos a ver un ejemplo de configuración de un disco en un servidor que es promocionado a la red por iSCSI.

iSCSI Target (servidor)

El software de iSCSI no suelen estar instalado con la configuración predeterminada de los servidores por lo que el primer paso será instalar los paquetes. La instalación dependerá de la distribución de Linux que se utilice

  • Instalación del target en Red Hat:

# yum install scsi-target-utils

  • Instalación del target en Debian:

# apt install tgt

 

Los targets son los dispositivos que se van a exportar o exponer a la red para que otros equipos puedan configurarlos como dispositivos en sus sistemas. La definición de los targets se puede realizar a través del comando tgtadm que guardara la configuración en el fichero /etc/tgt/targets.conf.

En el siguiente ejemplo hemos creado manualmente la configuración de un target utilizando el disco /dev/sdb:

<target iqn.2020-04.seguinet.es:disco.target01>

    # Dispositivo que se presenta como iSCSI target
    backing-store /dev/sdb     

    ### Seguridad ###
    # Autentificacion credenciales
    incominguser username password
    # Host cliente, para que solo puede usarlo un cliente
    #initiator-address 1.1.1.2

</target>

Posteriormente reiniciamos el servicio iSCSI (tgt) y comprobamos que se ha creado correctamente con el siguiente comando:

# tgtadm –mode target –op show

iscsi

Un concepto a tener en cuenta son las LUN que son unidades lógicas de almacenamiento, cada target creada la LUN0 de control y la LUN1 que será el volumen al que se accede como dispositivo de bloques. Una target puede tener múltiples LUNs.

Finalmente si tenemos ejecutándose un cortafuegos tendremos que configurar las reglas para aceptar peticiones externas por el puerto 3260.

Cuando los clientes se conecten podremos ver las conexiones con el siguiente comando:

# tgtadm --mode conn --op show --tid 1

 

iSCSI Initiator (cliente)

La instalación de los paquetes del cliente dependerán de la distribución de Linux.

  • Instalación del cliente en Red-Hat:

        # yum install iscsi-initiator-utils

  • Instalación del cliente en Debian:

# apt-get install open-iscsi

 

El proceso de instalación configurará el servicio iscsid que se encargará de gestionar las conexiones con los targets. El fichero de configuración del cliente es /etc/iscsi/iscsid.conf. En este fichero se establece de forma global la coniguración del cliente iSCSI.

Disponemos de la utilidad iscsiadm para poder gestionar las conexiones. Esta utilidad registrará los dispositivos encontrados y las conexiones a los mismos.

El comando iscsiadm dispone de tres modos de funcionamiento:

  • discovery: Este modo se utiliza para descubrir los targets y registrarlos.
  • node: Gestiona los targets ya descubiertos, permite visualizar los datos y conectarse a ellos.
  • session: En este modo se gestiona las conexiones establecidas con los targets.

Los pasos para la conexión son:

  • Descubrir los targets en el servidor
  • Registrar y configurar el nodo (target)
  • Reiniciar servicio / Login en el nodo
  • Formatear la unidad y configurarla en el fichero fstab para su montaje autmático.

En el primer paso buscaremos los disposivos iSCSI que provee un servidor determinado (10.0.4.2):

# iscsiadm -m discovery -t sendtargets -p 10.0.4.2

iscsi

Cuando se encuentran targets se genera un archivo llamado defaults con los datos del target en el directorio /etc/iscsi/send_targets/[path_nodo]/

Con el siguiente comando podremos ver nos nodos previamente encontrados:

# iscsiadm -m discovery

El siguiente paso será registrar el target

# iscsiadm -m node -T iqn.2020-04.es.seguinet:disco.target1 -p 10.0.2.4

Al ejecutar el comando anterior se generará un archivo llamado default en el directorio /etc/iscsi/nodes/[path_nodo]/ con todos los datos de la conexión. En caso que la conexión requiera una contraseña será en este archivo donde la configuraremos modificando los siguientes parámetros:

node.startup = automatic
node.session.auth.authmethod = CHAP
node.session.auth.username = [usuario]
node.session.auth.password = [contraseña]

Reiniciamos el servicio iscsi y si no se produce ningún error deberíamos ver un disco nuevo en el sistema.

Podemos consultar las conexiones iSCSI que hay con el siguiente comando:

# iscsiadm -m session

iscsi

Finalmente una vez particionado y formatead lo agregaremos al fichero /etc/fstab para que al iniciar cree el punto de montaje automáticamente, en nuestro caso el disco iSCSI es /dev/sde.

/dev/sde /opt/bigdata ext4 _netdev 0 0

Para realizar una desconexión de un dispositivo iSCSI primero lo desmontaremos y luego procederemos a desconectarlo.

# iscsiadm -m node -T iqn.2020-04.es.seguinet:disco.target1 -p 10.0.2.4 --logout

Y si queremos volver a conectar

# iscsiadm -m node -T iqn.2020-04.es.seguinet:disco.target1 -p 192.168.0.39 --login

Cualquier conexión por iSCSI viene identificada por un nombre único de dispositivos llamado WWID (World Wide Identifier), la asociación de los identificadores con los dispositivos son link simbólicos en el directorio /dev/disk/by-id/