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
Instalar
targetcli
:# yum install targetcli
Inicie el servicio de destino:
# systemctl start target
Configurar el objetivo para que se inicie en el momento del arranque:
# systemctl enable target
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
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
-
Instalado y funcionando
targetcli
. Para más información, consulte Sección 7.1.1, “Instalación de targetcli”.
Procedimiento
Navegue hasta el directorio iSCSI:
/> iscsi/
NotaEl comando
cd
se utiliza para cambiar de directorio, así como para listar la ruta a la que se va a mover.Utilice una de las siguientes opciones para crear un objetivo iSCSI:
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
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_nameSustituya iqn.2006-04.com.example:444 por el nombre del objetivo específico.
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):
-
fileio
backstore: Cree un objeto de almacenamientofileio
si está utilizando archivos regulares en el sistema de archivos local como imágenes de disco. Para crear un backstorefileio
, consulte Sección 7.1.4, “Creación de un objeto de almacenamiento fileio”. -
block
backstore: Cree un objeto de almacenamientoblock
si está utilizando cualquier dispositivo de bloque local y dispositivo lógico. Para crear un backstoreblock
, consulte Sección 7.1.5, “Creación de un objeto de almacenamiento en bloque”. -
pscsi
backstore: Cree un objeto de almacenamientopscsi
si su objeto de almacenamiento admite el paso directo de comandos SCSI. Para crear un backstorepscsi
, consulte Sección 7.1.6, “Creación de un objeto de almacenamiento pscsi” -
ramdisk
backstore: Cree un objeto de almacenamientoramdisk
si desea crear un dispositivo temporal respaldado por RAM. Para crear un backstoreramdisk
, consulte Sección 7.1.7, “Creación de un objeto de almacenamiento en disco RAM de copia de memoria”.
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
-
Instalado y funcionando
targetcli
. Para más información, consulte Sección 7.1.1, “Instalación de targetcli”.
Procedimiento
Navegue hasta el directorio de backstores:
/>almacenes de fondo/
Crear un objeto de almacenamiento
fileio
:/> backstores/fileio create file1 /tmp/disk1.img 200M write_back=false Created fileio file1 with size 209715200
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
-
Instalado y funcionando
targetcli
. Para más información, consulte Sección 7.1.1, “Instalación de targetcli”.
Procedimiento
Navegue hasta el directorio de backstores:
/>almacenes de fondo/
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.
Verifique el objeto de almacenamiento
block
creado:/almacenes> ls
NotaTambié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.
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
-
Instalado y funcionando
targetcli
. Para más información, consulte Sección 7.1.1, “Instalación de targetcli”.
Procedimiento
Navegue hasta el directorio de backstores:
/>almacenes de fondo/
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
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
-
Instalado y funcionando
targetcli
. Para más información, consulte Sección 7.1.1, “Instalación de targetcli”.
Procedimiento
Navegue hasta el directorio de backstores:
/>almacenes de fondo/
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.
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
-
Instalado y funcionando
targetcli
. Para más información, consulte Sección 7.1.1, “Instalación de targetcli”. - Un objetivo iSCSI asociado a un Grupo de Portales de Destino (TPG). Para más información, consulte Sección 7.1.2, “Creación de un objetivo iSCSI”.
Procedimiento
Navegue hasta el directorio TPG:
/iscsi> iqn.2006-04.example:444/tpg1/
Utilice una de las siguientes opciones para crear un portal iSCSI:
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
NotaCuando 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
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
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
-
Instalado y funcionando
targetcli
. Para más información, consulte Sección 7.1.1, “Instalación de targetcli”. - Un objetivo iSCSI asociado a un Grupo de Portales de Destino (TPG). Para más información, consulte Sección 7.1.2, “Creación de un objetivo iSCSI”.
- Objetos de almacenamiento creados. Para más información, consulte Sección 7.1.3, “backstore iSCSI”.
Procedimiento
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.
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
.ImportantePor 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”.
- 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
-
Instalado y funcionando
targetcli
. Para más información, consulte Sección 7.1.1, “Instalación de targetcli”. - Un objetivo iSCSI asociado a un Grupo de Portales de Destino (TPG). Para más información, consulte Sección 7.1.2, “Creación de un objetivo iSCSI”.
- Objetos de almacenamiento creados. Para más información, consulte Sección 7.1.3, “backstore iSCSI”.
Procedimiento
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.
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.
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.- 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
-
Instalado y funcionando
targetcli
. Para más información, consulte Sección 7.1.1, “Instalación de targetcli”. - Un objetivo iSCSI asociado a un Grupo de Portales de Destino (TPG). Para más información, consulte Sección 7.1.2, “Creación de un objetivo iSCSI”.
Procedimiento
Navegue hasta el directorio acls
/iscsi/iqn.20...mple:444/tpg1> acls/
Utilice una de las siguientes opciones para crear una ACL :
-
Utilizando el nombre del iniciador del archivo
/etc/iscsi/initiatorname.iscsi
en el iniciador. 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.
NotaLa 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
-
Utilizando el nombre del iniciador del archivo
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
-
Instalar y ejecutar
targetcli
en un equipo servidor. Para más información, consulte Sección 7.1.1, “Instalación de targetcli”. - Un objetivo iSCSI asociado a un Grupo de Portales de Destino (TPG) en un equipo servidor. Para obtener más información, consulte Sección 7.1.2, “Creación de un objetivo iSCSI”.
- Creación de ACL iSCSI. Para más información, consulte Sección 7.1.11, “Creación de una ACL iSCSI”.
Procedimiento
Instalar
iscsi-initiator-utils
en la máquina del cliente:# yum install iscsi-initiator-utils
Comprueba el nombre del iniciador:
# cat /etc/iscsi/initiatorname.iscsi InitiatorName=2006-04.com.example.foo:888
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
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”.
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
.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.
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
- Creación de ACL iSCSI. Para más información, consulte Sección 7.1.11, “Creación de una ACL iSCSI”.
Procedimiento
Establecer la autenticación de atributos:
/iscsi/iqn.20...mple:444/tpg1> set attribute authentication=1 Parameter authentication is now '1'.
Establecer
userid
ypassword
:/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
- Se ha creado un iniciador iSCSI. Para más información, consulte Sección 7.1.12, “Creación de un iniciador iSCSI”.
-
Establezca el
CHAP
para el objetivo. Para más información, consulte Sección 7.1.13, “Configuración del protocolo de autenticación Challenge-Handshake para el objetivo”.
Procedimiento
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 comoNone
Añada el objetivo
username
ypassword
en el archivoiscsid.conf
:node.session.auth.username = redhat node.session.auth.password = redhat_passwd
Inicie el demonio
iscsid
:# systemctl start iscsid.service
Recursos adicionales
-
La página de manual
iscsiadm