Cómo compartir volúmenes ZFS a través de ISCSI

Cómo compartir volúmenes ZFS a través de ISCSI

Los volúmenes de ZFS son dispositivos de almacenamiento de bloques que funcionan como cualquier otro dispositivo de almacenamiento (HDD/SSD). Puede crear tablas de partición, crear nuevas particiones, formatear estas particiones, crear sistemas de archivos y montarlas en su computadora.

También puede compartir volúmenes ZFS a través del protocolo ISCSI y acceder a ellos desde computadoras remotas.

En este artículo, le mostraré cómo compartir volúmenes ZFS a través de ISCSI y acceder a ellos desde computadoras remotas. Usaré el Ubuntu 20.04 Sistema operativo LTS para la demostración. Sin embargo, los pasos que se muestran en este artículo también deberían funcionar en otras distribuciones de Linux con algunos ajustes.

Empecemos.

Tabla de contenido:

  1. Diagrama de Red
  2. Instalación de TGT en el servidor ISCSI
  3. Instalación de Open-ISCSI en el cliente ISCSI
  4. Creando una piscina ZFS
  5. Creación de volúmenes ZFS
  6. Creación de objetivos ISCSI
  7. Agregar volúmenes ZFS a los objetivos ISCSI
  8. Configuración de la autenticación ISCSI (opcional)
  9. Generación de la configuración del servidor ISCSI
  10. Acceso a volúmenes ZFS compartidos a través de ISCSI
  11. Montaje automáticamente Volúmenes ZFS compartidos a través de ISCSI
  12. Conclusión
  13. Referencias

Diagrama de Red:

En este artículo, configuraré dos Ubuntu 20.04 computadoras LTS: ISCSI-Merver e ISCSI-Client. Instalaré ZFS y el software del servidor ISCSI en el computadora ISCSI-Server y configurarlo para compartir volúmenes ZFS a través de ISCSI.

Instalaré el Software de cliente ISCSI sobre el computadora ISCSI-client y configurarlo para acceder a los volúmenes de ZFS exportados desde el Computadora ISCSI-Server a través de ISCSI.

Toda la configuración se visualiza en la figura a continuación:

Instalación de TGT en el servidor ISCSI:

En esta sección, le mostraré cómo instalar el paquete de servidor ISCSI TGT en la computadora ISCSI-Server.

Primero, actualice el caché del repositorio de paquetes APT de la siguiente manera:

$ sudo apt actualización

Luego, instale el paquete TGT en la computadora ISCSI-Server con el siguiente comando:

$ sudo apt install tgt -y

Si no tiene ZFS instalados en la computadora ISCSI-Server, puede instalarlo con el siguiente comando:

$ sudo apt install zfsutils -linux -y

Instalación de Open-ISCSI en el cliente ISCSI:

En esta sección, te mostraré cómo instalar el Paquete de cliente ISCSI Open-ISCSI sobre el ISCSI-CLIENT computadora.

Primero, actualice el caché del repositorio del paquete APT con el siguiente comando:

$ sudo apt actualización

Luego, instale el paquete abierto sobre el computadora ISCSI-client Con el siguiente comando:

$ sudo apt instalación abierta -discsi -y

Creando una piscina ZFS:

Para la demostración, crearé una piscina ZFS, Pool1, en el servidor de iscsi computadora usando el Almacenamiento VDB y VDC dispositivos:

$ sudo lsblk -e7 -d

Cree un grupo ZFS, Pool1, utilizando los dispositivos de almacenamiento VDB y VDC en la configuración de espejo de la siguiente manera:

$ sudo zpool Create -f Pool1 Mirror VDB VDC

Se debe crear una nueva piscina ZFS, Pool1, en la computadora ISCSI-Server.

$ SUDO ZFS Lista

Creación de volúmenes ZFS:

En esta sección, le mostraré cómo crear volúmenes ZFS Vol1 y Vol2 en el Piscina ZFS, Pool1, para que pueda exportarlos a través de ISCSI.

Para crear un volumen ZFS VOL1 de tamaño 1 GB en el grupo ZFS, Grupo1, ejecute el siguiente comando:

$ sudo zfs create -V 1G Pool1/Vol1

Para crear un volumen ZFS VOL2 de tamaño 2 GB en el grupo ZFS, Grupo1, ejecute el siguiente comando:

$ sudo zfs create -v 2g Pool1/vol2

ZFS Volumes Vol1 y Vol2 deben crearse en el grupo ZFS, Pool1.

$ SUDO ZFS Lista

Creación de objetivos ISCSI:

Un objetivo ISCSI es como un contenedor con nombre. Puedes poner uno o más volúmenes ZFS allí. Cuando accede a un objetivo desde otras computadoras, todos los volúmenes de ZFS en el que ha colocado en ese contenedor se montarán.

Los nombres de destino ISCSI tienen un formato estándar:

IQN.-.:

Aquí:

- El año en formato de 4 dígitos. i.mi. 2021, 2018

- El mes numérico en formato de 2 dígitos. Debería estar en el rango 01-12. i.mi. 01 (para enero), 08 (para agosto), 12 (diciembre)

- El nombre de dominio totalmente calificado en formato inverso. i.mi. ISCSI.Linuxhint.com debe ser escrita como comunicarse.Linuxhint.ISCSI.

- Puede ser cualquier cosa única en tu configuración. Para una pequeña configuración de hogar y oficina, puede usar el nombre de la piscina y el nombre del volumen de ZFS (i.mi., piscina.Vol1, Pool1.Vol2) o el nombre del departamento/rama (i.mi., ingeniería.PC1, cuenta.PC2, ingeniería.US-1, cuenta.Reino Unido-2) de los clientes que utilizarán estos volúmenes compartidos. Eso debería ser lo suficientemente único. En una gran empresa, puede usar un UUID único para cada objetivo.

En esta sección, te mostraré cómo crear Dos objetivos ISCSI: IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Volúmen 1 y IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2. En la siguiente sección, le mostraré cómo agregar volúmenes ZFS a estos objetivos.

Para crear un IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Volúmen 1 y establezca una ID de 1 para el objetivo, ejecute el siguiente comando:

$ sudo tgtadm --lld iscsi --op nuevo - -Mode Target - -Tid 1 - -TargetName IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Volúmen 1

De la misma manera, ejecute el siguiente comando para crear un IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2 y establezca una ID de 2 para el objetivo:

$ sudo tgtadm --lld iscsi --Op new - -Mode Target - -Tid 2 - -TargetName IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2

Para enumerar todos los objetivos que ha creado, ejecute el siguiente comando:

$ sudo tgtadm --lld ISCSI --OP Show -Mode Target

Los objetivos que ha creado deben aparecer, como puede ver en la captura de pantalla a continuación:

Agregar volúmenes ZFS a los objetivos ISCSI:

Se llaman a los volúmenes de ZFS que agregará a un objetivo Luns (unidades lógicas).

Como se mencionó anteriormente, puede agregar uno o más volúmenes ZFS en un objetivo ISCSI. Pero, si lo hace, cuando accede al objetivo desde otras computadoras, todos los volúmenes de ZFS que ha agregado a ese objetivo se montarán. Entonces, si desea permitir el acceso a uno solo Volumen ZFS por objetivo ISCSI, Agregue solo un volumen ZFS a un objetivo ISCSI.

En esta sección, demuestro cómo agregar los volúmenes ZFS Vol1 y Vol2 a los objetivos IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol1 e Iqn.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2, respectivamente.

Cada una de las Luns en un objetivo ISCSI tiene una identificación a partir de 0. Entonces, el primero Lun se llama lun 0. Entonces, el segundo Lun se llama lun 1, mientras que la El tercer lun se llama lun 2, etcétera.

Por defecto, Lun 0 de cada iscsi El objetivo estará ocupado por un controlador ISCSI, como se muestra en la captura de pantalla a continuación. Entonces, tendrás que usar Lun 1, lun 2, y así sucesivamente para agregar sus volúmenes ZFS a los objetivos ISCSI.

$ sudo tgtadm --lld ISCSI --OP Show -Mode Target

Para agregar el Volumen ZFS Vol1 desde el ZFS Pool Pool1 como lun 1 al ID de destino 1 (IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Volúmen 1), ejecute el siguiente comando:

$ sudo tgtadm --lld iscsi --Op new--Mode LogicalUnit--Tid 1--lun 1-respaldo-store/dev/fool1/vol1

Para agregar el Volumen ZFS Vol2 desde el Piscina ZFS, Pool1, como Lun 1 al ID de destino 2 (IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2), ejecute el siguiente comando:

$ sudo tgtadm --lld iscsi --Op new--Mode LogicalUnit--Tid 2--lun 1-respaldo-store/dev/fool1/vol2

El Volumen ZFS Vol1 debe agregarse al IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol1 como lun 1, como se marca en la captura de pantalla a continuación:

$ sudo tgtadm --lld ISCSI --OP Show -Mode Target

El Volumen ZFS Vol2 debe agregarse al IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2 como lun 1, como se marca en la captura de pantalla a continuación:

Configuración de la autenticación ISCSI (opcional):

En esta sección, le mostraré cómo habilitar la autenticación básica de nombre de usuario y contraseña para el ISCSI se dirige a IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Volúmen 1 y IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2.

Puede omitir felizmente esta sección si no desea habilitar la autenticación para sus objetivos ISCSI.

Primero, crea un nuevo Usuario de ISCSI Linuxhint1 con una contraseña ficticia 123456 (Tendrá que cambiarlo más tarde) con el siguiente comando:

$ sudo tgtadm --lld iscsi --op nuevo --mode cuenta -user linuxhint1 -password 123456

De la misma manera, crea otro Usuario de ISCSI Linuxhint2 con una contraseña ficticia 456789 (Tendrá que cambiarlo más tarde) con el siguiente comando:

$ sudo tgtadm --lld iscsi --op nuevo --mode cuenta -user linuxhint2 - -password 456789

usuarios de ISCSI Linuxhint1 y Linuxhint2 debe crearse, como puede ver en la captura de pantalla a continuación:

$ sudo tgtadm --lld ISCSI --Op show -Cuenta de modos

Para permitir solo el acceso al usuario de LinuxHint1 al ID de destino ISCSI 1 (IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Volúmen 1) Desde clientes ISCSI remotos, ejecute el siguiente comando:

$ sudo tgtadm --lld ISCSI --OP BIND -CUENTA MODE - -TID 1 -USER LINUXHINT1

De la misma manera, para permitir el Usuario de Linuxhint2 acceso al ID de destino ISCSI 2 (IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2) Desde clientes ISCSI remotos, ejecute el siguiente comando:

$ sudo tgtadm --lld ISCSI --OP BIND -CUENTA MODE - -TID 2 -USER LINUXHINT2

El Cuenta de usuario de Linuxhint1 debe agregarse a IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Volúmen 1, Como puede ver en la captura de pantalla a continuación:

$ sudo tgtadm --lld ISCSI --OP Show -Mode Target

El Cuenta de usuario de Linuxhint2 también debe agregarse a IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2, Como puede ver en la captura de pantalla a continuación:

Generación de la configuración del servidor ISCSI:

En esta sección, le mostraré cómo generar un archivo de configuración para el servidor ISCSI para que los cambios que haya realizado sean persistentes y sobrevivan los reiniciados del sistema.

Primero, permita el acceso al ID de destino ISCSI 1 (IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Volúmen 1) De cualquier cliente ISCSI de la siguiente manera:

$ sudo tgtadm --lld ISCSI --OP BIND--MODE Target--Tid 1-Iniciador-Address All

De la misma manera, permita el acceso al ID de destino ISCSI 2 (IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2) De cualquier cliente ISCSI de la siguiente manera:

$ sudo tgtadm --lld ISCSI --OP BIND-MODE Target--Tid 2-Iniciador-Address All

Ahora, voltea la configuración actual del servidor ISCSI al archivo de configuración del servidor ISCSI /etc/tgt/objetivos.confusión como sigue:

$ sudo tgt-admin --dump | SUDO TEE/ETC/TGT/Targets.confusión

La configuración actual del servidor ISCSI debe guardar en el /etc/tgt/objetivos.confusión archivo.

La contraseña del usuario no se guardará. Entonces, tendrás que reemplazar Por favor_correct_the_password string con la contraseña de usuario en el /etc/tgt/objetivos.archivo conf.

Abra el archivo de configuración del servidor ISCSI /etc/tgt/objetivos.confusión con el editor de texto Nano de la siguiente manera:

$ sudo nano/etc/tgt/objetivos.confusión

Reemplazar las cuerdas Por favor_correct_the_password con la contraseña de usuario respectiva aquí:

Para el Usuario de Linuxhint1, Estableceré la contraseña Secret1 y para el Usuario de Linuxhint2, Estableceré la contraseña Secret2 como se marca en la captura de pantalla a continuación.

Una vez que haya terminado, presione + X seguido de y y Para salvar el /etc/tgt/objetivos.archivo conf:

Para que los cambios entren en vigencia, reinicie el computadora ISCSI-Server:

$ sudo reinicio

Una vez el botas de computadora ISCSI-Server, El servidor iSCSI debería estar ejecutado en puerto 3260, Como se muestra en la captura de pantalla a continuación:

$ sudo ss -tlpn

Acceso a volúmenes ZFS compartidos a través de ISCSI:

Una vez que hayas configurado el servidor ISCSI sobre el computadora ISCSI-Server, puedes acceder al ZFS Volumes Vol1 y Vol2 a través de ISCSI en la computadora ISCSI-Client.

Para acceder al objetivos ISCSI desde el computadora ISCSI-Server, Necesita saber la dirección IP del computadora ISCSI-Server. En mi caso, la dirección IP de mi computadora ISCSI-Server es 192.168.122.98. Será diferente para ti. Entonces, asegúrese de reemplazarlo con el suyo de ahora en adelante.

$ hostname -i

Para descubrir todos los objetivos iSCSI del ISCSI-server (dirección IP 192.168.122.98), Ejecute el siguiente comando:

$ sudo iScsiadm -Mode Discovery --Type SendTargets -Portal 192.168.122.98

Como puedes ver, el ISCSI se dirige a IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol1 e Iqn.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2 están listados.

Si no ha configurado la autenticación, debería poder acceder al IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Volúmen 1 Con el siguiente comando:

$ sudo iScsiadm - -Mode nodo - -TargetName IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol1 --login

De la misma manera, puede acceder al IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2 Con el siguiente comando:

$ sudo iScsiadm - -Mode nodo - -TargetName IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2 -login

Si ha habilitado la autenticación para el ISCSI se dirige a IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol1 e Iqn.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2, Debe recibir un mensaje de falla de autorización marcado en la captura de pantalla a continuación.

Para iniciar sesión con éxito a los objetivos ISCSI habilitados para la autenticación, establezca el método de autenticación, el nombre de usuario y la contraseña para cada objetivo ISCSI habilitado para la autenticación.

Puede establecer el método de autenticación del IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol1 a CHAP Con el siguiente comando:

$ sudo iScsiadm - -Mode nodo - -TargetName IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.VOL1 -OPDACIÓN DE OP -NODO NODO.sesión.auténtico.Authmethod -Value CHAP

Puede establecer el nombre de usuario de inicio de sesión del IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol1 a Linuxhint1 Con el siguiente comando:

$ sudo iScsiadm - -Mode nodo - -TargetName IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.VOL1 -OPDACIÓN DE OP -NODO NODO.sesión.auténtico.Nombre de usuario -Value Linuxhint1

Puede establecer la contraseña de inicio de sesión del IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol1 a secreto1 Con el siguiente comando:

$ sudo iScsiadm - -Mode nodo - -TargetName IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.VOL1 -OPDACIÓN DE OP -NODO NODO.sesión.auténtico.Contraseña -Value Secret1

Una vez que haya terminado de configurar el método de autenticación, iniciar sesión en el nombre de usuario y contraseña para el IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Volúmen 1, Debería poder iniciar sesión con éxito al IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Volúmen 1:

$ sudo iScsiadm - -Mode nodo - -TargetName IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol1 --login

Una vez que haya iniciado sesión con éxito al IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Volúmen 1, Se debe unir un nuevo disco SCSI SDA al computadora ISCSI-client. Tenga en cuenta que puede ser diferente en su caso:

$ sudo dmesg | Grep -i adjunto

Como puede ver, se agrega un nuevo dispositivo de almacenamiento SDA de tamaño 1 GB al ISCSI-CLIENT computadora. Es el volumen ZFS Vol1 que ha compartido a través de ISCSI:

$ sudo lsblk -e7 -d

De la misma manera, establezca el método de autenticación del IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2 a CHAP Con el siguiente comando:

$ sudo iScsiadm - -Mode nodo - -TargetName IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.VOL2 -OPDACIÓN DE OP -NODO NODO.sesión.auténtico.Authmethod -Value CHAP

Establezca el nombre de usuario de inicio de sesión del IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2 a Linuxhint2 Con el siguiente comando:

$ sudo iScsiadm - -Mode nodo - -TargetName IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.VOL2 -OPDACIÓN DE OP -NODO NODO.sesión.auténtico.Nombre de usuario -Value Linuxhint2

Establezca la contraseña de inicio de sesión del IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2 a Secret2 Con el siguiente comando:

$ sudo iScsiadm - -Mode nodo - -TargetName IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.VOL2 -OPDACIÓN DE OP -NODO NODO.sesión.auténtico.Contraseña -Value Secret2

Inicie sesión en el IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2 Con el siguiente comando:

$ sudo iScsiadm - -Mode nodo - -TargetName IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2 --login

Debería poder iniciar sesión con éxito al IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2:

Una vez que haya iniciado sesión con éxito al IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2, Se debe adjuntar un nuevo disco SCSI SDB al computadora ISCSI-client. Tenga en cuenta que puede ser diferente en su caso.

$ sudo dmesg | Grep -i adjunto

Como puede ver, se agrega un nuevo dispositivo de almacenamiento SDB de tamaño 2 GB al computadora ISCSI-client. Es el volumen ZFS Vol2 que ha compartido a través de ISCSI:

$ sudo lsblk -e7 -d

Montaje automáticamente Volúmenes ZFS compartidos a través de ISCSI:

Para iniciar sesión automáticamente en un objetivo ISCSI, deberá establecer el nodo.Propiedad de inicio del objetivo ISCSI a automático.

Para establecer el nodo.propiedad de inicio del IQN ISCSI Target IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Volúmen 1 a automático, ejecute el siguiente comando:

$ sudo iScsiadm - -Mode nodo - -TargetName IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.VOL1 -OPDACIÓN DE OP -NODO NODO.Inicio -Valor automático

Para establecer el nodo.Propiedad de inicio del IQN ISCSI Target.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.Vol2 a automático, Ejecute el siguiente comando:

$ sudo iScsiadm - -Mode nodo - -TargetName IQN.2021-08.comunicarse.Linuxhint.ISCSI: Pool1.VOL2 -OPDACIÓN DE OP -NODO NODO.Inicio -Valor automático

Finalmente, habilite el Servicio de SystemD de ISCSI abierto para que comience automáticamente en el momento de arranque con el siguiente comando:

$ sudo systemctl habilita abre-ISCSI

Para que los cambios entren en vigencia, reinicie el computadora ISCSI-client Con el siguiente comando:

$ sudo reinicio

Una vez el botas de computadora ISCSI-client, deberías ver el Dispositivos de almacenamiento SDA y SDB sobre el computadora ISCSI-client como se marca en la captura de pantalla a continuación:

$ sudo lsblk -e7 -d

Conclusión:

En este artículo, le he mostrado cómo crear volúmenes ZFS y compartirlos a través de ISCSI. Además, le he mostrado cómo configurar la autenticación para objetivos ISCSI. Le he mostrado cómo iniciar sesión en los objetivos ISCSI de forma remota y acceder a los volúmenes ZFS compartidos.

Referencias:

[1] Ubuntu ManPage: TGTADM - Utilidad de administración de Target de Linux SCSI

[2] ManPage de Ubuntu: TGT -Admin - Herramienta de configuración de destino de Linux SCSI

[3] Ubuntu ManPage: ISCSIADM - Utilidad de administración abierta de ISCSI

[4] Servicio - ISCSI | Ubuntu

[5] Convenciones de nombres de ISCSI