Red Hat Training

A Red Hat training course is available for RHEL 8

Capítulo 7. Introducción a iSCSI

Red Hat Enterprise Linux 8 utiliza el shell targetcli como interfaz de línea de comandos para realizar las siguientes operaciones:

  • Añada, elimine, vea y supervise las interconexiones de almacenamiento iSCSI para utilizar el hardware iSCSI.
  • Exporta recursos de almacenamiento local respaldados por archivos, volúmenes, dispositivos SCSI locales o por discos RAM a sistemas remotos.

La herramienta targetcli tiene un diseño basado en un árbol que incluye el completamiento de pestañas integrado, soporte de autocompletado y documentación en línea.

7.1. Añadir un objetivo iSCSI

Como administrador del sistema, puede añadir un objetivo iSCSI utilizando la herramienta targetcli.

7.1.1. Instalación de targetcli

Instale la herramienta targetcli para añadir, supervisar y eliminar interconexiones de almacenamiento iSCSI .

Procedimiento

  1. Instalar targetcli:

    # yum install targetcli
  2. Inicie el servicio de destino:

    # systemctl start target
  3. Configurar el objetivo para que se inicie en el momento del arranque:

    # systemctl enable target
  4. Abra el puerto 3260 en el firewall y recargue la configuración del firewall:

    # firewall-cmd --permanent --add-port=3260/tcp
    Success
    
    # firewall-cmd --reload
    Success
  5. Vea el diseño de targetcli:

    # targetcli
    /> ls
    o- /........................................[...]
      o- backstores.............................[...]
      | o- block.................[Storage Objects: 0]
      | o- fileio................[Storage Objects: 0]
      | o- pscsi.................[Storage Objects: 0]
      | o- ramdisk...............[Storage Objects: 0]
      o- iscsi...........................[Targets: 0]
      o- loopback........................[Targets: 0]

Recursos adicionales

  • La página de manual targetcli.

7.1.2. Creación de un objetivo iSCSI

La creación de un objetivo iSCSI permite al iniciador iSCSI del cliente acceder a los dispositivos de almacenamiento del servidor. Tanto los objetivos como los iniciadores tienen nombres de identificación únicos.

Requisitos previos

Procedimiento

  1. Navegue hasta el directorio iSCSI:

    /> iscsi/
    Nota

    El comando cd se utiliza para cambiar de directorio, así como para listar la ruta a la que se va a mover.

  2. Utilice una de las siguientes opciones para crear un objetivo iSCSI:

    1. Creación de un objetivo iSCSI con un nombre de objetivo por defecto:

      /iscsi> create
      
      Created target
      iqn.2003-01.org.linux-iscsi.hostname.x8664:sn.78b473f296ff
      Created TPG1
    2. Creación de un objetivo iSCSI con un nombre específico:

      /iscsi> create iqn.2006-04.com.example:444
      
      Created target iqn.2006-04.com.example:444
      Created TPG1
      Here iqn.2006-04.com.example:444 is target_iqn_name

      Sustituya iqn.2006-04.com.example:444 por el nombre del objetivo específico.

  3. Verifique el objetivo recién creado:

    /iscsi> ls
    
    o- iscsi.......................................[1 Target]
        o- iqn.2006-04.com.example:444................[1 TPG]
            o- tpg1...........................[enabled, auth]
               o- acls...............................[0 ACL]
                o- luns...............................[0 LUN]
               o- portals.........................[0 Portal]

Recursos adicionales

  • La página de manual targetcli.

7.1.3. backstore iSCSI

Un backstore iSCSI permite soportar diferentes métodos de almacenamiento de los datos de un LUN exportado en la máquina local. La creación de un objeto de almacenamiento define los recursos que utiliza el backstore. Un administrador puede elegir cualquiera de los siguientes dispositivos de backstore que soporta Linux-IO (LIO):

Recursos adicionales

  • La página de manual targetcli.

7.1.4. Creación de un objeto de almacenamiento fileio

los objetos de almacenamientofileio pueden soportar las operaciones write_back o write_thru. La operación write_back habilita la caché del sistema de archivos local. Esto mejora el rendimiento pero aumenta el riesgo de pérdida de datos. Se recomienda utilizar write_back=false para desactivar la operación write_back en favor de la operación write_thru.

Requisitos previos

Procedimiento

  1. Navegue hasta el directorio de backstores:

    />almacenes de fondo/
  2. Crear un objeto de almacenamiento fileio:

    /> backstores/fileio create file1 /tmp/disk1.img 200M write_back=false
    
    Created fileio file1 with size 209715200
  3. Verifique el objeto de almacenamiento fileio creado:

    /almacenes> ls

Recursos adicionales

  • La página de manual targetcli.

7.1.5. Creación de un objeto de almacenamiento en bloque

El controlador de bloque permite el uso de cualquier dispositivo de bloque que aparezca en el directorio /sys/block/ para ser utilizado con Linux-IO (LIO). Esto incluye dispositivos físicos (por ejemplo, HDDs, SSDs, CDs, DVDs) y dispositivos lógicos (por ejemplo, volúmenes RAID por software o hardware, o volúmenes LVM).

Requisitos previos

Procedimiento

  1. Navegue hasta el directorio de backstores:

    />almacenes de fondo/
  2. Crear un backstore block:

    /> backstores/block create name=block_backend dev=/dev/sdb
    
    Generating a wwn serial.
    Created block storage object block_backend using /dev/vdb.
  3. Verifique el objeto de almacenamiento block creado:

    /almacenes> ls
    Nota

    También puedes crear un backstore de bloques en un volumen lógico.

Recursos adicionales

  • La página de manual targetcli.

7.1.6. Creación de un objeto de almacenamiento pscsi

Puede configurar, como backstore, cualquier objeto de almacenamiento que soporte el pass-through directo de comandos SCSI sin emulación SCSI, y con un dispositivo SCSI subyacente que aparezca con lsscsi en el /proc/scsi/scsi (como un disco duro SAS) . Este subsistema soporta SCSI-3 y superiores.

Aviso

pscsi sólo debería ser utilizado por usuarios avanzados. Los comandos SCSI avanzados, como los de asignación de unidades lógicas asimétricas (ALUA) o reservas persistentes (por ejemplo, los utilizados por VMware ESX y vSphere), no suelen estar implementados en el firmware del dispositivo y pueden provocar fallos de funcionamiento o caídas. En caso de duda, utilice block backstore para las configuraciones de producción.

Requisitos previos

Procedimiento

  1. Navegue hasta el directorio de backstores:

    />almacenes de fondo/
  2. Cree un backstore pscsi para un dispositivo SCSI físico, un dispositivo TYPE_ROM utilizando /dev/sr0 en este ejemplo:

    /> backstores/pscsi/ create name=pscsi_backend dev=/dev/sr0
    
    Generating a wwn serial.
    Created pscsi storage object pscsi_backend using /dev/sr0
  3. Verifique el objeto de almacenamiento pscsi creado:

    /almacenes> ls

Recursos adicionales

  • La página de manual targetcli.

7.1.7. Creación de un objeto de almacenamiento en disco RAM de copia de memoria

Los discos RAM con copia de memoria (ramdisk) proporcionan discos RAM con emulación SCSI completa y asignaciones de memoria separadas utilizando la copia de memoria para los iniciadores. Esto proporciona capacidad para multisesiones y es particularmente útil para el almacenamiento masivo rápido y volátil para fines de producción.

Requisitos previos

Procedimiento

  1. Navegue hasta el directorio de backstores:

    />almacenes de fondo/
  2. Crear un backstore de disco de 1GB de RAM:

    /> backstores/ramdisk/ create name=rd_backend size=1GB
    
    Generating a wwn serial.
    Created rd_mcp ramdisk rd_backend with size 1GB.
  3. Verifique el objeto de almacenamiento ramdisk creado:

    /almacenes> ls

Recursos adicionales

  • La página de manual targetcli.

7.1.8. Creación de un portal iSCSI

La creación de un portal iSCSI añade una dirección IP y un puerto al objetivo que mantiene el objetivo habilitado.

Requisitos previos

Procedimiento

  1. Navegue hasta el directorio TPG:

    /iscsi> iqn.2006-04.example:444/tpg1/
  2. Utilice una de las siguientes opciones para crear un portal iSCSI:

    1. La creación de un portal por defecto utiliza el puerto iSCSI por defecto 3260 y permite que el objetivo escuche todas las direcciones IP en ese puerto:

      /iscsi/iqn.20...mple:444/tpg1> portals/ create
      
      Using default IP port 3260
      Binding to INADDR_Any (0.0.0.0)
      Created network portal 0.0.0.0:3260
      Nota

      Cuando se crea un objetivo iSCSI, también se crea un portal por defecto. Este portal está configurado para escuchar todas las direcciones IP con el número de puerto por defecto que es: 0.0.0.0:3260.

      Para eliminar el portal por defecto:

      /iscsi/iqn-name/tpg1/portals delete ip_address=0.0.0.0 ip_port=3260

    2. Creación de un portal con una dirección IP específica:

      /iscsi/iqn.20...mple:444/tpg1> portals/ create 192.168.122.137
      
      Using default IP port 3260
      Created network portal 192.168.122.137:3260
  3. Verifique el portal recién creado:

    /iscsi/iqn.20...mple:444/tpg1> ls
    
    o- tpg.................................. [enambled, auth]
        o- acls ......................................[0 ACL]
        o- luns ......................................[0 LUN]
        o- portals ................................[1 Portal]
           o- 192.168.122.137:3260......................[OK]

Recursos adicionales

  • La página de manual targetcli.

7.1.9. Creación de un LUN iSCSI

El número de unidad lógica (LUN) es un dispositivo físico que está respaldado por el backstore iSCSI. Cada LUN tiene un número único.

Requisitos previos

Procedimiento

  1. Crear LUNs de objetos de almacenamiento ya creados:

    /iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/ramdisk/rd_backend
    Created LUN 0.
    
    /iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/block/block_backend
    Created LUN 1.
    
    /iscsi/iqn.20...mple:444/tpg1> luns/ create /backstores/fileio/file1
    Created LUN 2.
  2. Verifique los LUNs creados:

    /iscsi/iqn.20...mple:444/tpg1> ls
    
    o- tpg.................................. [enambled, auth]
        o- acls ......................................[0 ACL]
        o- luns .....................................[3 LUNs]
        |  o- lun0.........................[ramdisk/ramdisk1]
        |  o- lun1.................[block/block1 (/dev/vdb1)]
        |  o- lun2...................[fileio/file1 (/foo.img)]
        o- portals ................................[1 Portal]
            o- 192.168.122.137:3260......................[OK]

    El nombre del LUN por defecto comienza en 0.

    Importante

    Por defecto, los LUNs se crean con permisos de lectura-escritura. Si se añade un nuevo LUN después de crear las ACL, el LUN se asigna automáticamente a todas las ACL disponibles y puede causar un riesgo de seguridad. Para crear un LUN con permisos de sólo lectura, consulte Sección 7.1.10, “Creación de un LUN iSCSI de sólo lectura”.

  3. Configurar ACLs. Para más información, consulte Sección 7.1.11, “Creación de una ACL iSCSI”.

Recursos adicionales

  • La página de manual targetcli.

7.1.10. Creación de un LUN iSCSI de sólo lectura

Por defecto, los LUNs se crean con permisos de lectura-escritura. Este procedimiento describe cómo crear un LUN de sólo lectura.

Requisitos previos

Procedimiento

  1. Establecer permisos de sólo lectura:

    /> set global auto_add_mapped_luns=false
    
    Parameter auto_add_mapped_luns is now 'false'.

    Esto evita el mapeo automático de LUNs a ACLs existentes permitiendo el mapeo manual de LUNs.

  2. Cree el LUN:

    /> iscsi/target_iqn_name/tpg1/acls/initiator_iqn_name/ create mapped_lun=next_sequential_LUN_number tpg_lun_or_backstore=backstore write_protect=1

    Ejemplo:

    /> iscsi/iqn.2006-04.example:444/tpg1/acls/2006-04.com.example.foo:888/ create mapped_lun=1 tpg_lun_or_backstore=/backstores/block/block2 write_protect=1
    
    Created LUN 1.
    Created Mapped LUN 1.
  3. Verifique el LUN creado:

    /> ls
    
    o- / ...................................................... [...]
      o- backstores ........................................... [...]
      <snip>
      o- iscsi ......................................... [Targets: 1]
      | o- iqn.2006-04.example:444 .................. [TPGs: 1]
      |   o- tpg1 ............................ [no-gen-acls, no-auth]
      |     o- acls ....................................... [ACLs: 2]
      |     | o- 2006-04.com.example.foo:888 .. [Mapped LUNs: 2]
      |     | | o- mapped_lun0 .............. [lun0 block/disk1 (rw)]
      |     | | o- mapped_lun1 .............. [lun1 block/disk2 (ro)]
      |     o- luns ....................................... [LUNs: 2]
      |     | o- lun0 ...................... [block/disk1 (/dev/vdb)]
      |     | o- lun1 ...................... [block/disk2 (/dev/vdc)]
      <snip>

    La línea mapped_lun1 tiene ahora (ro) al final (a diferencia de la línea mapped_lun0 (rw)) indicando que es de sólo lectura.

  4. Configurar ACLs. Para más información, consulte Sección 7.1.11, “Creación de una ACL iSCSI”.

Recursos adicionales

  • La página de manual targetcli.

7.1.11. Creación de una ACL iSCSI

En targetcli, se utilizan listas de control de acceso (ACL) para definir las reglas de acceso y cada iniciador tiene acceso exclusivo a un LUN. Tanto los objetivos como los iniciadores tienen nombres de identificación únicos. Debe conocer el nombre único del iniciador para configurar las ACL. Los iniciadores iSCSI se pueden encontrar en el archivo /etc/iscsi/initiatorname.iscsi.

Requisitos previos

Procedimiento

  1. Navegue hasta el directorio acls

    /iscsi/iqn.20...mple:444/tpg1> acls/
  2. Utilice una de las siguientes opciones para crear una ACL :

    1. Utilizando el nombre del iniciador del archivo /etc/iscsi/initiatorname.iscsi en el iniciador.
    2. Utilizando un nombre que sea más fácil de recordar, consulte la sección Sección 7.1.12, “Creación de un iniciador iSCSI” para asegurarse de que la ACL coincide con el iniciador.

      /iscsi/iqn.20...444/tpg1/acls> create iqn.2006-04.com.example.foo:888
      
      Created Node ACL for iqn.2006-04.com.example.foo:888
      Created mapped LUN 2.
      Created mapped LUN 1.
      Created mapped LUN 0.
      Nota

      La configuración global auto_add_mapped_luns utilizada en el ejemplo anterior, asigna automáticamente los LUNs a cualquier ACL creada.

      Puede establecer ACLs creadas por el usuario dentro del nodo TPG en el servidor de destino:

      /iscsi/iqn.20...scsi:444/tpg1> set attribute generate_node_acls=1
  3. Verifique la ACL creada:

    /iscsi/iqn.20...444/tpg1/acls> ls
    
    o- acls .................................................[1 ACL]
        o- iqn.2006-04.com.example.foo:888 ....[3 Mapped LUNs, auth]
            o- mapped_lun0 .............[lun0 ramdisk/ramdisk1 (rw)]
            o- mapped_lun1 .................[lun1 block/block1 (rw)]
            o- mapped_lun2 .................[lun2 fileio/file1 (rw)]

Recursos adicionales

  • La página de manual targetcli.

7.1.12. Creación de un iniciador iSCSI

Un iniciador iSCSI forma una sesión para conectarse al objetivo iSCSI. Para más información sobre el objetivo iSCSI, consulte Sección 7.1.2, “Creación de un objetivo iSCSI”. Por defecto, se inicia un servicio iSCSI lazily y el servicio se inicia después de ejecutar el comando iscsiadm. Si la raíz no está en un dispositivo iSCSI o no hay nodos marcados con node.startup = automatic, el servicio iSCSI no se iniciará hasta que se ejecute un comando iscsiadm que requiera el inicio de iscsid o de los módulos del kernel iscsi.

Para forzar la ejecución del demonio iscsid y la carga de los módulos del kernel iSCSI:

# systemctl start iscsid.service

Requisitos previos

Procedimiento

  1. Instalar iscsi-initiator-utils en la máquina del cliente:

    # yum install iscsi-initiator-utils
  2. Comprueba el nombre del iniciador:

    # cat /etc/iscsi/initiatorname.iscsi
    
    InitiatorName=2006-04.com.example.foo:888
  3. Si la ACL recibió un nombre personalizado en Sección 7.1.11, “Creación de una ACL iSCSI”, modifique el archivo /etc/iscsi/initiatorname.iscsi en consecuencia.

    # vi /etc/iscsi/initiatorname.iscsi
  4. Descubra el objetivo y acceda a él con el IQN del objetivo mostrado:

    # iscsiadm -m discovery -t st -p 10.64.24.179
        10.64.24.179:3260,1 iqn.2006-04.example:444
    
    # iscsiadm -m node -T iqn.2006-04.example:444 -l
        Logging in to [iface: default, target: iqn.2006-04.example:444, portal: 10.64.24.179,3260] (multiple)
        Login to [iface: default, target: iqn.2006-04.example:444, portal: 10.64.24.179,3260] successful.

    Sustituya 10.64.24.179 por la dirección IP de destino.

    Puede utilizar este procedimiento para cualquier número de iniciadores conectados al mismo objetivo si sus respectivos nombres de iniciadores se añaden a la ACL como se describe en la página Sección 7.1.11, “Creación de una ACL iSCSI”.

  5. Busque el nombre del disco iSCSI y cree un sistema de archivos en este disco iSCSI:

    # grep "Attached SCSI" /var/log/messages
    
    # mkfs.ext4 /dev/disk_name

    Sustituya disk_name por el nombre del disco iSCSI que aparece en el archivo /var/log/messages.

  6. Montar el sistema de archivos:

    # mkdir /mount/point
    
    # mount /dev/disk_name /mount/point

    Sustituya /mount/point por el punto de montaje de la partición.

  7. Edite el archivo /etc/fstab para montar el sistema de archivos automáticamente cuando el sistema arranque:

    # vi /etc/fstab
    
    /dev/disk_name /mount/point ext4 _netdev 0 0

    Sustituya disk_name por el nombre del disco iSCSI y /mount/point por el punto de montaje de la partición.

Recursos adicionales

  • La página de manual targetcli.
  • La página de manual iscsiadm.

7.1.13. Configuración del protocolo de autenticación Challenge-Handshake para el objetivo

El Challenge-Handshake Authentication Protocol (CHAP) permite al usuario proteger el objetivo con una contraseña. El iniciador debe conocer esta contraseña para poder conectarse al objetivo.

Requisitos previos

Procedimiento

  1. Establecer la autenticación de atributos:

    /iscsi/iqn.20...mple:444/tpg1> set attribute authentication=1
    
    Parameter authentication is now '1'.
  2. Establecer userid y password:

    /tpg1> set auth userid=redhat
    Parameter userid is now 'redhat'.
    
    /iscsi/iqn.20...689dcbb3/tpg1> set auth password=redhat_passwd
    Parameter password is now 'redhat_passwd'.

Recursos adicionales

  • La página de manual targetcli.

7.1.14. Configuración del protocolo de autenticación Challenge-Handshake para el iniciador

El Challenge-Handshake Authentication Protocol (CHAP) permite al usuario proteger el objetivo con una contraseña. El iniciador debe conocer esta contraseña para poder conectarse al objetivo.

Requisitos previos

Procedimiento

  1. Active la autenticación CHAP en el archivo iscsid.conf:

    # vi /etc/iscsi/iscsid.conf
    
    node.session.auth.authmethod = CHAP

    Por defecto, la dirección node.session.auth.authmethod está configurada como None

  2. Añada el objetivo username y password en el archivo iscsid.conf:

    node.session.auth.username = redhat
    node.session.auth.password = redhat_passwd
  3. Inicie el demonio iscsid:

    # systemctl start iscsid.service

Recursos adicionales

  • La página de manual iscsiadm