GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar el destino de almacenamiento iSCSI de Linux y el acceso de cliente remoto

iSCSI significa Internet Small Computer System Interface.

Esto funciona en la capa TCP/IP y permite enviar comandos SCSI a través de redes de área local (LAN).

Se utiliza para acceder al almacenamiento en su red a través de TCP/IP mediante transferencias de datos a nivel de bloque.

A menudo hay una comparación entre NFS e iSCSI. La diferencia clave es que NFS es una implementación a nivel de archivo, mientras que iSCSI es una implementación a nivel de bloque.

En implementaciones a nivel de bloque como iSCSI y Fibre Channel, la matriz de almacenamiento ofrece una colección de bloques al cliente, que luego formatea ese almacenamiento sin procesar con cualquier sistema de archivos que decida usar.

En orden para acceder al almacenamiento a través de iscsi, necesitamos tener los siguientes componentes:

  1. Iniciador iSCSI (Hardware/Software):este es un cliente iscsi que puede enviar comandos iscsi a través de la red TCP/IP. Este suele ser su adaptador NIC en su servidor y puede ser físico o virtual con una IP configurada en la misma subred con la interfaz iscsi de la matriz de almacenamiento.
  2. Destino iSCSI (su nodo de almacenamiento):este es su nodo de almacenamiento que puede configurar por su cuenta o puede ser una matriz física de un proveedor que admita la configuración iscsi
  3. Conmutador iSCSI (opcional):el conmutador iscsi es opcional aquí, pero para separar el tráfico del host del tráfico iscsi en implementaciones empresariales, se recomienda utilizar un conmutador independiente para el tráfico iscsi.

En este tutorial, veremos cómo configurar nuestro propio nodo de almacenamiento que admita la configuración iscsi y acceder al almacenamiento desde el cliente iscsi en una máquina Centos 6.

Los mismos procedimientos deberían funcionar para la versión RHEL 6 (CentOS 6). Para CentOS 7, el procedimiento es ligeramente diferente al usar targetcli, que trataremos en otro artículo.

1. Instale SCSI Target Utils e inicie tgtd

Primero, instale scsi-target-utils usando el comando yum en el nodo de almacenamiento, que es necesario para configurar iSCSI.

yum install scsi-target-utils

Si aún no tiene Perl instalado en su sistema, el comando anterior instalará Perl y varias otras dependencias (por ejemplo:sg3_utils) automáticamente.

Esto instalará el comando tgtadm como se muestra a continuación.

# which tgtadm
/usr/sbin/tgtadm

Marque el demonio de destino SCSI como se muestra a continuación.

# service tgtd start
Starting SCSI target daemon: [ OK ]

Con el comando chkconfig, asegúrese de que se inicie automáticamente durante el inicio del sistema.

chkconfig tgtd on

2. Agregue un nuevo destino iSCSI mediante tgtadm

Use el comando tgtadm para agregar un nuevo destino iSCSI en el nodo de almacenamiento usando la siguiente sintaxis:

tgtadm --lld --mode target --op new --tid --targetname

El siguiente ejemplo crea un destino con ID de destino 1 con el siguiente iqn,

tgtadm --lld iscsi --op new --mode target --tid 1 \
       -T iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com

En el comando anterior:

  • El comando tgtadm es la utilidad de administración de destino SCSI de Linux
  • –lld iscsi especifica que estamos usando el controlador iscsi (también puede usar -L en lugar de –lld)
  • –op new especifica la operación, en este caso, estamos creando un nuevo objetivo (también puede usar -o en lugar de –op)
  • –modo objetivo indica que estamos creando un objetivo. Otros modos posibles son:unidad lógica, cuenta, portal, conn, sys. (También puede usar -m en lugar de –mode)
  • –tid 1 especifica la identificación del objetivo, que es 1 en este ejemplo (también puede usar -t en lugar de –tid)
  • -T especifica el nombre del objetivo (también puede usar –targetname en lugar de -T)

3. Ver la configuración del destino iSCSI

Una vez que se crea el objetivo, puede ver los detalles usando la operación "mostrar" como se muestra a continuación. Esto proporcionará la información del sistema y la información de LUN de todos los objetivos disponibles en su sistema.

Como puede ver en el siguiente resultado, solo tenemos un destino (Objetivo 1), que es el controlador iSCSI, con un LUN (LUN 0).

# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com
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
Backing store type: null
Backing store path: None
Backing store flags:
Account information:
ACL information:

Nota:En el resultado anterior, la "ruta del almacenamiento de respaldo" actualmente es Ninguna, ya que aún no hemos asociado ninguna ruta de almacenamiento físico a este iSCSI.

4. Agregue el LUN al objetivo iSCSI

En el siguiente ejemplo, agregaremos un lun existente, que es /storage/lun01 que está montado y disponible en nuestro nodo de almacenamiento al objetivo iSCSI que creamos.

Para el LUN existente (/storage/lun01), también debe configurar el contexto de SELinux de manera adecuada, como se muestra a continuación.

semanage fcontext -a -t tgtd_var_lib_t /storage/lun01

restorecon -Rv /storage/lun01

Si recibe una "Solicitud no válida", con fines de prueba temporal, es posible que desee desactivar SELinux configurando SELinux en modo permisivo para ver si resuelve el problema y reducir el problema al permiso de SELinux.

Ahora, con el comando tgtadm, agregue /storage/lun01 al objetivo iSCSI que creamos anteriormente.

tgtadm --lld iscsi --op new --mode logicalunit --tid 1 \
       --lun 1 --backing-store /storage/lun01

En el comando anterior:

  • la mayoría de las opciones son las mismas que explicamos en nuestro comando tgtadm anterior.
  • –unidad lógica de modo. Tenga en cuenta que anteriormente usamos "objetivo" para el modo, pero aquí estamos usando la unidad lógica para el modo.
  • –lun indica la identificación de LUN, que es 1 en este ejemplo (también puede usar -l en lugar de –lun)
  • –backing-store indica la ruta de almacenamiento físico en el servidor de almacenamiento. En nuestro ejemplo, es /storage/lun01 (también puede usar -b en lugar de la opción –backing-store)
  • –tid 1 indica que se conecta este LUN dado al id de destino existente 1, que creamos anteriormente.

Ahora, vuelva a ver los detalles del iSCSI en su sistema.

Pero, esta vez, en el LUN 1, la "Ruta de almacenamiento de respaldo" en el siguiente resultado apuntará a la ruta de almacenamiento que asociamos con este iSCSI. En nuestro ejemplo, es /storage/lun01.

# tgtadm --lld iscsi --op show --mode target
Target 1: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com
System information:
Driver: iscsi
State: ready
I_T nexus information:
LUN information:
LUN: 1
Type: disk
SCSI ID: IET 00010001
SCSI SN: beaf11
Size: 5369 MB, Block size: 512
Online: Yes
Removable media: No
Prevent removal: No
Readonly: No
Backing store type: rdwr
Backing store path: /storage/lun01
Backing store flags:
Account information:
ACL information:

Por alguna razón, si cometió un error en el comando anterior y desea eliminar la asociación LUN1 que creamos anteriormente, use el siguiente comando.

tgtadm --lld iscsi --mode logicalunit --op delete --tid 1 --lun 1

En el comando anterior:

  • Todo es igual que el comando anterior
  • Pero, aquí el -op (que es la operación) es borrar.
  • Esto eliminará el lun1 del iSCSI tid 1 (objetivo 1)

5. Configurar restricción ACL para iSCSI

A continuación, debe configurar ACL para permitir que los iniciadores puedan acceder a este objetivo scsi.

tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL

En el comando anterior:

  • La mayoría de las opciones son bastante similares a nuestros comandos anteriores
  • La opción -I ALL indica que estamos permitiendo que el objetivo acepte TODOS los iniciadores (también puede usar –initiator-address en lugar de -I)

Cuando vea los detalles de iSCSI usando la operación "mostrar", notará la información de ACL hacia el final de la salida como se muestra a continuación.

# tgtadm --lld iscsi --op show --mode target
..
..
Backing store path: /storage/lun01
Backing store flags:
Account information:
ACL information:
ALL

Si desea restringir solo el cliente que necesita acceder al almacenamiento, puede usar el siguiente comando y especificar una dirección IP específica.

tgtadm --lld iscsi --mode target --op bind --tid 1 192.168.2.109

Si desea restringir el acceso a una subred en particular, puede especificar la subred en lugar de la dirección IP como se muestra a continuación.

tgtadm --lld iscsi --mode target --op bind --tid 1 192.168.2.0/24

6. Permitir acceso al puerto 3260

Si está ejecutando ip-tables, agregue reglas de ip-tables y permita el puerto 3260 como se muestra a continuación.

iptables -I INPUT -p tcp -m tcp --dport 3260 -j ACCEPT

Verifique que el puerto 3260 esté abierto usando el comando netstat como se muestra a continuación.

# netstat -tunlp | grep 3260
tcp 0 0 0.0.0.0:3260 0.0.0.0:* LISTEN 1248/tgtd
tcp 0 0 :::3260 :::* LISTEN 1248/tgtd

Nota:Hasta este punto, todos los comandos anteriores se ejecutaron en el nodo del servidor de almacenamiento. A partir de ahora, todos los comandos de la siguiente sección se ejecutarán en la máquina cliente, que debe conectarse al servidor de almacenamiento.

7. En el cliente:descubrir iSCSI

En el cliente, antes de descubrir el iSCSI, no verá el nuevo disco iSCSI. Por ejemplo, el siguiente resultado no mostrará nada.

fdisk -l /dev/sdb

Ahora toda la configuración del lado de destino está completa y se puede acceder al lun a través de iscsi desde el cliente. Los siguientes procedimientos le mostrarán cómo configurar el lado del cliente para acceder al almacenamiento.

En el servidor del cliente, instale el paquete iscsi-initiator-utils como se muestra a continuación.

yum install iscsi-initiator-utils

A continuación, descubra el objetivo iSCSI utilizando el comando iscsiadm como se muestra a continuación.

[root@client ~]# iscsiadm --mode discovery --type sendtargets \
                --portal 192.168.2.166

El comando anterior mostrará el siguiente resultado:

192.168.2.166:3260,1 iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com

En el comando anterior:

  • El comando iscsiadm es la utilidad de administración open-iscsi
  • –mode discovery indica que estamos descubriendo el servidor iSCSI aquí. Otros modos posibles son:discoverydb, node, fw, host iface o session. (También puede usar -m en lugar de –mode)
  • :escriba objetivos de envío específicos aquí. Otros valores posibles son:sendtargets, fw e iSNS. También puede usar la abreviatura st en lugar de sendtargets. (También puede usar -t en lugar de –type)
  • –portal especifica la dirección IP del nodo de almacenamiento iSCSI que configuramos anteriormente (también puede usar -p en lugar de –portal).
  • Para la dirección IP, si está ejecutando iSCSI en un puerto no predeterminado (cualquier otro que no sea 3260), especifíquelo después de la dirección IP. Por ejemplo, 192.168.2.166:3261

Nota:Si obtiene el error "Sin ruta al host", entonces las iptables en el destino o el cliente no están configuradas correctamente.

8. En el cliente:inicie sesión en la sesión de destino de iSCSI

Una vez que el proceso de descubrimiento se completa con éxito, debe iniciar sesión en la sesión de destino de iscsi mediante el siguiente comando:

[root@client ~]# iscsiadm --mode node --targetname iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com \
                          --portal 192.168.2.166 --login

El comando anterior mostrará el siguiente resultado:

Logging in to [iface: default, target: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com, portal: 192.168.2.166,3260] (multiple)
Login to [iface: default, target: iqn.2016-03.com.thegeekstuff:storage.lun01.thegeekstuff.com, portal: 192.168.2.166,3260] successful.

En el comando anterior:

  • La mayoría de las opciones son similares al comando anterior.
  • Para el modo, aquí estamos usando nodo (en lugar de descubrimiento)
  • -targetname especifica el nombre de destino. Este es el nombre objetivo que especificamos en el nodo de almacenamiento anteriormente cuando creamos iSCSI (también puede usar -T en lugar de –targetname)
  • :la opción de inicio de sesión iniciará sesión en todos los objetivos descubiertos. En nuestro caso, iniciará sesión en nuestro servidor iSCSI de almacenamiento especificado en la opción –portal.

Ahora debería estar viendo su nuevo dispositivo iscsi en su salida fdisk. Puede formatearlo, agregarlo a lvm y usarlo según sea necesario.

La salida del comando fdisk ahora mostrará el dispositivo.

[root@client ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 5368 MB, 5368709120 bytes
166 heads, 62 sectors/track, 1018 cylinders
Units = cylinders of 10292 * 512 = 5269504 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Nota:El disco anterior no proviene de la máquina cliente, sino del servidor de almacenamiento como iSCSI.


Linux
  1. Cómo configurar el servidor de almacenamiento iSCSI en Ubuntu 18.04 LTS

  2. Cómo configurar un servidor de almacenamiento iSCSI en Ubuntu 20.04 LTS

  3. Cómo acceder a los sistemas de archivos de Linux en Windows 10 y WSL 2

  4. Cómo configurar el servidor y el cliente NFS en Rocky/Alma Linux 8

  5. Cómo instalar y configurar el cliente Putty SSH en el escritorio de Linux

Cómo configurar ZSH y Oh-my-zsh en Linux

Cómo deshabilitar la suspensión y la hibernación en Linux

Cómo instalar y configurar Let's Encrypt (Certbot) en Linux

Cómo instalar y configurar la consola web de Cockpit en un sistema Linux

Cómo configurar y administrar un repositorio Git remoto en Linux

Cómo configurar el servidor y el cliente VPN de Linux usando OpenVPN