Cree almacenamiento seguro centralizado utilizando el iniciador/destino iSCSI en RHEL/CentOS 7 - Parte 12


iSCSI es un protocolo de nivel de bloque para administrar dispositivos de almacenamiento a través de redes TCP/IP, especialmente a largas distancias. El destino iSCSI es un disco duro remoto presentado desde un servidor (o) destino iSCSI remoto. Por otro lado, el cliente iSCSI se denomina Iniciador y accederá al almacenamiento que se comparte en la máquina de destino.

En este artículo se han utilizado las siguientes máquinas:

Operating System – Red Hat Enterprise Linux 7
iSCSI Target IP – 192.168.0.29
Ports Used : TCP 860, 3260
Operating System – Red Hat Enterprise Linux 7
iSCSI Target IP – 192.168.0.30
Ports Used : TCP 3260

Paso 1: Instalación de paquetes en iSCSI Target

Para instalar los paquetes necesarios para el objetivo (trataremos con el cliente más adelante), haga:

# yum install targetcli -y

Cuando se complete la instalación, iniciaremos y habilitaremos el servicio de la siguiente manera:

# systemctl start target
# systemctl enable target

Finalmente, necesitamos permitir el servicio en firewalld:

# firewall-cmd --add-service=iscsi-target
# firewall-cmd --add-service=iscsi-target --permanent

Y por último, pero no menos importante, no debemos olvidar permitir el descubrimiento de destino iSCSI:

# firewall-cmd --add-port=860/tcp
# firewall-cmd --add-port=860/tcp --permanent
# firewall-cmd --reload

Paso 2: Definición de LUN en el servidor de destino

Antes de continuar con la definición de LUN en el destino, necesitamos crear dos volúmenes lógicos como se explica en la Parte 6 de la serie RHCSA ("Configuración del almacenamiento del sistema").

Esta vez los nombraremos vol_projects y vol_backups y los colocaremos dentro de un grupo de volumen llamado vg00 , como se muestra en la Fig. 1. Siéntase libre de elija el espacio asignado a cada LV:

Después de crear los LV, estamos listos para definir los LUN en el destino para que estén disponibles para la máquina cliente.

Como se muestra en la Fig.2, abriremos un shell targetcli y emitiremos los siguientes comandos, que crearán dos almacenes de bloques (recursos de almacenamiento local que representan el LUN que el iniciador realmente usará) y un Iscsi Qualified Nombre (IQN), un método para dirigirse al servidor de destino.

Consulte la página 32 de RFC 3720 para obtener más detalles sobre la estructura del IQN. En particular, el texto después del carácter de dos puntos (: tgt1) especifica el nombre del objetivo, mientras que el texto antes de (servidor :) indica el nombre de host del objetivo dentro del dominio.

# targetcli
# cd backstores
# cd block
# create server.backups /dev/vg00/vol_backups
# create server.projects /dev/vg00/vol_projects
# cd /iscsi
# create iqn.2016-02.com.tecmint.server:tgt1

Con el paso anterior, se creó un nuevo TPG (Target Portal Group) junto con el portal predeterminado (un par que consta de una dirección IP y un puerto que es la forma en que los iniciadores pueden llegar al objetivo) escuchando en el puerto 3260 de todas las direcciones IP.

Si desea vincular su portal a una IP específica (la IP principal de Target, por ejemplo), elimine el portal predeterminado y cree uno nuevo de la siguiente manera (de lo contrario, omita los siguientes comandos de targetcli. Tenga en cuenta que para simplificar los hemos omitido como bien):

# cd /iscsi/iqn.2016-02.com.tecmint.server:tgt1/tpg1/portals
# delete 0.0.0.0 3260
# create 192.168.0.29 3260

Ahora estamos listos para continuar con la creación de LUN. Tenga en cuenta que estamos usando los almacenes de respaldo que creamos anteriormente ( server.backups y server.projects ). Este proceso se ilustra en la Fig.3:

# cd iqn.2016-02.com.tecmint.server:tgt1/tpg1/luns
# create /backstores/block/server.backups
# create /backstores/block/server.projects

La última parte de la configuración de Target consiste en crear una lista de control de acceso para restringir el acceso por iniciador. Dado que nuestra máquina cliente se llama "cliente", agregaremos ese texto al IQN. Consulte la Fig.4 para obtener más detalles:

# cd ../acls
# create iqn.2016-02.com.tecmint.server:client

En este punto podemos el shell targetcli para mostrar todos los recursos configurados, como podemos ver en la Fig.5:

# targetcli
# cd /
# ls

Para salir del shell targetcli, simplemente escriba exit y presione Enter. La configuración se guardará automáticamente en /etc/target/saveconfig.json.

Como puede ver en la Fig. 5 anterior, tenemos un portal que escucha en el puerto 3260 de todas las direcciones IP como se esperaba. Podemos verificar que usando el comando netstat (ver Fig.6):

# netstat -npltu | grep 3260

Con esto concluye la configuración de Target. Siéntase libre de reiniciar el sistema y verificar que todas las configuraciones sobrevivan al reinicio. De lo contrario, asegúrese de abrir los puertos necesarios en la configuración del firewall y de iniciar el servicio de destino en el arranque. Ahora estamos listos para configurar el iniciador y conectarnos al cliente.

Paso 3: configurar el iniciador del cliente

En el cliente, necesitaremos instalar el paquete iscsi-inittor-utils, que proporciona el demonio del servidor para el protocolo iSCSI (iscsid), así como iscsiadm, la utilidad de administración:

# yum update && yum install iscsi-initiator-utils

Una vez que se complete la instalación, abra /etc/iscsi/initiatorname.iscsi y reemplace el nombre del iniciador predeterminado (comentado en la Fig.7) con el nombre que se estableció previamente en la ACL en el servidor (iqn.2016-02.com.tecmint .servidor: cliente).

Luego guarde el archivo y ejecute iscsiadm en modo de descubrimiento apuntando al destino. Si tiene éxito, este comando devolverá la información del objetivo como se muestra en la Fig.7:

# iscsiadm -m discovery -t st -p 192.168.0.29

El siguiente paso consiste en reiniciar y habilitar el servicio iscsid:

# systemctl start iscsid
# systemctl enable iscsid

y ponerse en contacto con el objetivo en modo nodo. Esto debería resultar en mensajes a nivel de kernel, que cuando se capturan a través de dmesg muestran la identificación del dispositivo que se les ha dado a los LUN remotos en el sistema local (sde y sdf en la Fig.8):

# iscsiadm -m node -T iqn.2016-02.com.tecmint.server:tgt1 -p 192.168.0.29 -l
# dmesg | tail

A partir de este punto, puede crear particiones, o incluso LV (y sistemas de archivos encima de ellos) como lo haría con cualquier otro dispositivo de almacenamiento. Para simplificar, crearemos una partición primaria en cada disco que ocupará todo su espacio disponible y lo formatearemos con ext4.

Finalmente, montemos/dev/sde1 y/dev/sdf1 en/projects y/backups, respectivamente (tenga en cuenta que estos directorios deben crearse primero):

# mount /dev/sde1 /projects
# mount /dev/sdf1 /backups

Además, puede agregar dos entradas en/etc/fstab para que ambos sistemas de archivos se monten automáticamente en el arranque utilizando el UUID de cada sistema de archivos como lo devuelve blkid.

Tenga en cuenta que se debe utilizar la opción de montaje _netdev para diferir el montaje de estos sistemas de archivos hasta que se haya iniciado el servicio de red:

Ahora puede usar estos dispositivos como lo haría con cualquier otro medio de almacenamiento.

Resumen

En este artículo, hemos cubierto cómo instalar y configurar un destino iSCSI y un iniciador en distribuciones RHEL/CentOS 7. Aunque la primera tarea no forma parte de las competencias requeridas del examen EX300 (RHCE), es necesaria para implementar el segundo tema.

No dude en hacernos saber si tiene alguna pregunta o comentario sobre este artículo; no dude en escribirnos mediante el formulario de comentarios a continuación.

Si desea configurar iSCSI Target y Client Initiator en RHEL/CentOS 6, siga esta guía: Configuración de almacenamiento iSCSI centralizado con Client Initiator.