Internet Small Computer System Interface (iSCSI) es un estándar basado en IP para conectar dispositivos de almacenamiento. iSCSI usa redes IP para encapsular comandos SCSI, lo que permite que los datos se transfieran a largas distancias. iSCSI proporciona almacenamiento compartido entre varios sistemas cliente. Los dispositivos de almacenamiento están conectados a servidores (destinos). Los sistemas cliente (iniciadores) acceden a los dispositivos de almacenamiento remoto a través de redes IP. Para los sistemas cliente, los dispositivos de almacenamiento parecen estar conectados localmente. iSCSI utiliza la infraestructura IP existente y no requiere ningún cableado adicional, como es el caso de las redes de área de almacenamiento Fibre Channel (FC).
Configuración de un servidor iSCSI
RHEL/CentOS 7 utiliza el subsistema de destino del kernel de Linux-IO (LIO) para iSCSI. Además de iSCSI, LIO admite una serie de estructuras de almacenamiento que incluyen Fibre Channel sobre Ethernet (FCoE), acceso iSCSI sobre redes Mellanox InfiniBand (iSER) y acceso SCSI sobre redes Mellanox InfiniBand (SRP). En RHEL 7, todas las estructuras de almacenamiento se administran con targetcli utilidad.
Para configurar el sistema RHEL como un servidor iSCSI, comience instalando el paquete de software targetcli:
# yum install targetcli
La instalación del paquete de software targetcli también instala python-rtslib paquete, que proporciona el /usr/lib/systemd/system/target.service expediente. Antes de usar la utilidad targetcli para crear, eliminar y ver destinos de almacenamiento, use el comando systemctl para habilitar e iniciar el servicio de destino en el servidor iSCSI.
# systemctl enable target Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service.
# systemctl start target
Utilidad targetcli
La utilidad targetcli es el shell de administración para crear, editar y ver la configuración del subsistema de destino del kernel. Ejecute targetcli para ingresar al shell de configuración.
# targetcli Warning: Could not load preferences file /root/.targetcli/prefs.bin. targetcli shell version 2.1.fb46 Copyright 2011-2013 by Datera, Inc and others. For help on commands, type 'help'. /> help
Ejecute la ayuda comando desde el indicador targetcli para ver los comandos disponibles. Los siguientes son algunos de los comandos targetcli disponibles:
- ls :Ver la jerarquía de objetos.
- cd :recorrer la jerarquía de objetos.
- crear :Cree objetos de almacenamiento, destinos, LUN, portales de red, listas de control de acceso.
- salir :Salga del shell targetcli y guarde automáticamente la configuración.
También puede ingresar "targetcli [comando]"" para ejecutar comandos sin ingresar al shell.
Almacenes
Los almacenes de respaldo son los diferentes tipos de recursos de almacenamiento local que el destino del núcleo utiliza para "respaldar" los dispositivos SCSI que exporta a los sistemas cliente. Las asignaciones a los recursos de almacenamiento local que crea cada backstore se denominan objetos de almacenamiento. Usa el targetcli ls Comando para enumerar los diferentes tipos de backstores.
# targetcli ls /backstores
Los tipos de backstores se describen a continuación:
- bloquear :Linux bloquea dispositivos como /dev/sda
- fileio :Cualquier archivo en un sistema de archivos montado como /tmp/disk1.img
- pscsi :cualquier objeto de almacenamiento que admita comandos SCSI de paso
- disco ram :Memoria copia discos RAM
Para crear un backstore de bloques desde el shell targetcli:
/> cd /backstores/block /backstores/block> create name=LUN_1 dev=/dev/xvdb
Para crear un backstore fileio desde el shell targetcli:
/> cd /backstores/fileio /backstores/fileio> create name=LUN_3 /root/disk1.img 5G
Creación de un objetivo iSCSI
Para crear un objetivo iSCSI desde el shell targetcli, use el comando cd para cambiar al directorio /iscsi.
/> cd /iscsi /iscsi>
Utilice el comando create sin ningún argumento para crear un destino iSCSI mediante un nombre de destino predeterminado. De forma predeterminada, el objetivo se identifica con un “iqn ” identificador. Este es un nombre calificado de iSCSI (IQN) , que identifica un objetivo de forma única. Las direcciones de formato IQN se usan más comúnmente para identificar un objetivo. Esta dirección consta de los siguientes campos:
- Iqn literal
- Fecha (en formato aaaa-mm) en que la autoridad de nombres tomó posesión del dominio
- Nombre de dominio invertido de la autoridad
- “:” opcional que precede a un nombre de destino de almacenamiento especificado por la autoridad de nombres
/> cd /iscsi /iscsi> create Created target iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260. /iscsi>
Para enumerar los objetivos creados, use el siguiente comando.
# targetcli ls /iscsi
Para permitir que los sistemas remotos accedan a un objetivo iSCSI en el puerto 3260, deshabilite el servicio firewalld en el servidor iSCSI o configure firewalld para confiar en el puerto 3260/tcp. El siguiente ejemplo usa firewall-cmd para abrir el puerto 3260/tcp para el servicio firewalld.
# firewall-cmd --permanent --add-port=3260/tcp
Si incluye el –permanente opción al agregar un puerto, use el comando firewall-cmd para volver a cargar la configuración.
# firewall-cmd –reload
Creación de LUN iSCSI
El destino del núcleo exporta unidades lógicas SCSI a sistemas remotos. Use el shell targetcli para vincular objetos de almacenamiento definidos previamente con un destino y para especificar qué número de unidad lógica (LUN) usa el dispositivo. El siguiente ejemplo usa el comando create para crear dos LUN nuevos para un objetivo. Desde el shell targetcli, comience usando el comando cd para cambiar al directorio luns dentro de la jerarquía [target/TGP].
/iscsi> cd /iscsi/iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb/ /iscsi/iqn.20....b0df6e328beb> cd tpg1/luns
Los siguientes comandos crean un LUN a partir de los objetos de almacenamiento en bloque definidos anteriormente.
/iscsi/iqn.20...beb/tpg1/luns> create /backstores/block/LUN_1 lun1 Created LUN 1.
Creación de ACL
Las listas de control de acceso (ACL) restringen el acceso a los LUN desde sistemas remotos. Puede crear una ACL para cada iniciador para aplicar la autenticación cuando el iniciador se conecta al destino. Esto le permite otorgar a un iniciador específico acceso exclusivo a un objetivo específico. El siguiente ejemplo usa el comando create para crear una ACL para un iniciador. Desde el shell targetcli, comience usando el comando cd para cambiar al directorio acls dentro de la jerarquía [target/TGP].
/> cd /iscsi/iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb/tpg1/acls /iscsi/iqn.20...beb/tpg1/acls> create iqn.1994-05.com.redhat:aabb51a64012 Created Node ACL for iqn.1994-05.com.redhat:aabb51a64012 Created mapped LUN 1.
Configuración de un iniciador iSCSI
Para configurar un sistema Linux como iniciador iSCSI, instale iscsi-initiator-utils paquete de software. Este paquete es el iniciador Linux Open-iSCSI.
# yum install iscsi-initiator-utils
El paquete instala varios archivos, incluidos los siguientes:
- /etc/iscsi/iscsid.conf :El archivo de configuración leído por iscsid e iscsiadm. Este archivo está muy comentado con descripciones para cada directiva de configuración.
- /sbin/iscsid :El demonio Open-iSCSI que implementa la ruta de control y las instalaciones de administración
- /sbin/iscsiadm :la utilidad de administración Open-iSCSI utilizada para descubrir e iniciar sesión en destinos iSCSI
Edite /etc/iscsi/initiatorname.iscsi y reemplace el parámetro InitiatorName con el nombre del iniciador que configuró previamente como ACL en el destino. Hay un nombre de iniciador iscsi predeterminado definido en este archivo. Si usó el mismo nombre al configurar ACL, no tendrá que cambiar nada aquí.
# cat /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.1994-05.com.redhat:aabb51a64012
Utilice el comando systemctl para habilitar e iniciar el servicio iscsid.
# systemctl enable iscsid # systemctl start iscsidComprender la utilidad iscsiadm en CentOS / RHEL
Descubrimiento de iSCSI
El descubrimiento es el proceso que hace que los objetivos sean conocidos por un iniciador. El siguiente ejemplo utiliza el método de descubrimiento SendTargets para descubrir destinos en la dirección IP 192.168.12.13. Este comando también inicia el demonio iscsid si es necesario.
# iscsiadm -m discovery --type sendtargets –p 192.168.12.13
Después del descubrimiento, la tabla de nodos y las tablas send_targets en la base de datos se actualizan:
# ls /var/lib/iscsi/nodes iqn.2011-12.com.example.mypc:tgt1 iqn.2011-12.com.example.mypc:tgt2 iqn.2012-11.com.example.mypc:tgt3
# ls /var/lib/iscsi/send_targets 192.168.12.13,3260
Sesiones del iniciador iSCSI
Una sesión es una conexión TCP entre un puerto de nodo iniciador y un puerto de nodo de destino. Los LUN no son accesibles hasta que se establece una sesión. Use la opción -l (o –login) para establecer una sesión:
# iscsiadm -m node -l
Para iniciar sesión en un destino específico:
# iscsiadm -m node --targetname iqn.2011-12.com.example.mypc:tgt1 –p 192.0.2.102:3260 –l
Use la opción -u (o –logout) para cerrar una sesión. Para ver la información de la sesión:
# iscsiadm -m session [-P [printlevel]]
Los niveles de impresión son 1, 2 y 3. Cada uno muestra más detalles.