6 Instalación de iSCSI Gateway #
iSCSI es un protocolo de red de área de almacenamiento (SAN) que permite a
los clientes (denominados iniciadores) enviar comandos
SCSI a dispositivos de almacenamiento SCSI (destinos) en
servidores remotos. SUSE Enterprise Storage 7 incluye una utilidad que
permite gestionar el almacenamiento de Ceph en diversos clientes, como
Microsoft Windows* y VMware* vSphere, mediante el protocolo iSCSI. El acceso
iSCSI de múltiples rutas aporta disponibilidad y capacidad de ampliación para
estos clientes, mientras que el protocolo iSCSI estandarizado también
proporciona una capa adicional de aislamiento de seguridad entre los clientes
y el clúster de SUSE Enterprise Storage 7. La utilidad de configuración se
denomina ceph-iscsi
. Mediante
ceph-iscsi
, los administradores de
almacenamiento de Ceph pueden definir volúmenes de provisión ligera,
replicados y de alta disponibilidad compatibles con las instantáneas de solo
lectura, los clones de lectura y escritura y el cambio de tamaño automático
con el dispositivo de bloques RADOS (RBD) de Ceph. Los administradores
pueden, a continuación, exportar volúmenes a través de un host de pasarela
ceph-iscsi
único o a través de varios
hosts de pasarela que admitan failover de múltiples rutas. Los hosts de
Linux, Microsoft Windows y VMware pueden conectarse a los volúmenes mediante
el protocolo iSCSI, por lo que están disponibles igual que cualquier otro
dispositivo de bloques SCSI. Esto significa que los clientes de SUSE
Enterprise Storage 7 pueden ejecutar de forma eficaz un subsistema completo
de infraestructura de almacenamiento de bloques en Ceph que proporcione todas
las funciones y ventajas de una SAN convencional, lo que permite el
crecimiento en el futuro.
Este capítulo presenta información detallada para configurar una infraestructura de clúster de Ceph junto con una pasarela iSCSI para que los hosts del cliente puedan utilizar los datos almacenados de forma remota como dispositivos de almacenamiento local mediante el protocolo iSCSI.
6.1 Almacenamiento de bloques iSCSI #
iSCSI es una implementación del conjunto de comandos Small Computer System Interface (SCSI, interfaz de sistema informático pequeño) que usa el protocolo de Internet (IP) especificado en la RFC 3720. iSCSI se implementa como un servicio en el que un cliente (iniciador) se comunica con un servidor (destino) a través de una sesión en el puerto TCP 3260. La dirección IP y el puerto de un destino iSCSI se denominan portal iSCSI, y un destino puede quedar expuesto mediante uno o varios portales. La combinación de un destino y uno o más portales se denomina grupo de portal de destino (TPG).
El protocolo de capa de enlace de datos subyacente para iSCSI suele ser Ethernet. Más concretamente, las infraestructuras iSCSI modernas utilizan 10 GigE Ethernet o redes más rápidas para un rendimiento óptimo. Se recomienda encarecidamente usar conectividad 10 Gigabit Ethernet entre iSCSI Gateway y el clúster de procesador final de Ceph.
6.1.1 Destino iSCSI de kernel de Linux #
El destino iSCSI de kernel de Linux se denominaba originalmente LIO para
linux-iscsi.org
, el dominio y sitio Web originales del
proyecto. Durante cierto tiempo, había al menos cuatro implementaciones de
destino iSCSI compitiendo para la plataforma Linux, pero, al final, LIO
prevaleció como el único destino iSCSI de referencia. El código de kernel
de la línea principal de LIO utiliza el sencillo, aunque algo ambiguo,
nombre de "destino" y distingue entre "núcleo de destino" y una variedad de
módulos de destino de interfaz de usuario y procesador final.
El módulo de interfaz de usuario utilizado con mayor frecuencia es, posiblemente, iSCSI. Sin embargo, LIO también admite Fibre Channel (FC), Fibre Channel over Ethernet (FCoE) y otros protocolos de interfaz de usuario. En este momento, SUSE Enterprise Storage solo admite el protocolo iSCSI.
El módulo de procesador final de destino más utilizado es simplemente, cualquiera capaz de reexportar cualquier dispositivo de bloques disponible en el host de destino. Este módulo se denomina iblock. Sin embargo, LIO también tiene un módulo de procesador final RBD específico que admite el acceso de E/S de múltiples rutas paralelizado a imágenes RBD.
6.1.2 Iniciadores iSCSI #
Esta sección presenta una breve descripción de los iniciadores iSCSI utilizados en plataformas Linux, Microsoft Windows y VMware.
6.1.2.1 Linux #
El iniciador estándar para la plataforma Linux es
open-iscsi
. open-iscsi
lanza un daemon, iscsid
, que el usuario puede
utilizar para descubrir destinos iSCSI en cualquier portal, entrar en los
destinos y asignar volúmenes iSCSI. iscsid
se
comunica con la capa intermedia SCSI para crear dispositivos de bloques en
el kernel que este, a continuación, puede tratar como cualquier otro
dispositivo de bloques SCSI del sistema. El iniciador
open-iscsi
se puede distribuir junto con la
utilidad Device Mapper Multipath (dm-multipath
)
para proporcionar un dispositivo de bloques iSCSI de alta disponibilidad.
6.1.2.2 Microsoft Windows e Hyper-V #
El iniciador de iSCSI por defecto para el sistema operativo Microsoft Windows es el iniciador iSCSI de Microsoft. El servicio iSCSI se puede configurar a través de una interfaz gráfica de usuario (GUI) y es compatible con E/S de múltiples rutas para la alta disponibilidad.
6.1.2.3 VMware #
El iniciador iSCSI por defecto para VMware vSphere y ESX es el iniciador
iSCSI de VMware ESX, vmkiscsi
. Si está
habilitado, puede configurarse desde el cliente de vSphere o a través del
comando vmkiscsi-tool
. A continuación, puede dar
formato a los volúmenes de almacenamiento conectados a través del
adaptador de almacenamiento iSCSI de vSphere con VMFS y utilizarlos como
cualquier otro dispositivo de almacenamiento de máquina virtual. El
iniciador de VMware también es compatible con E/S de múltiples vías para
la alta disponibilidad.
6.2 Información general sobre ceph-iscsi
#
ceph-iscsi
combina las ventajas de
los dispositivos de bloques RADOS con la versatilidad extendida de iSCSI. Si
se emplea ceph-iscsi
en un host de
destino iSCSI (conocido como iSCSI Gateway), cualquier aplicación que
necesite hacer uso del almacenamiento de bloques puede beneficiarse de Ceph,
incluso si no utiliza ningún protocolo de cliente de Ceph. En su lugar, los
usuarios pueden utilizar iSCSI o cualquier otro protocolo de interfaz de
usuario de destino para conectarse a un destino LIO, que traduce todas las
comunicaciones de E/S de destino en operaciones de almacenamiento RBD.
Por naturaleza, ceph-iscsi
es de
alta disponibilidad y admite operaciones de múltiples rutas. Por lo tanto,
los hosts de iniciador descendentes pueden utilizar varias instancias de
iSCSI Gateway para obtener tanto alta disponibilidad como capacidad de
ampliación. Cuando se comunican con una configuración iSCSI con más de un
pasarela, los iniciadores pueden equilibrar la carga de las peticiones iSCSI
entre varias pasarelas. En caso de fallo de una pasarela, por ejemplo si no
se pueda acceder temporalmente o si está inhabilitada por mantenimiento, las
comunicaciones de E/S continuarán de forma transparente a través de otra
pasarela.
6.3 Elementos a tener en cuenta para la distribución #
Una configuración mínima de SUSE Enterprise Storage 7 con
ceph-iscsi
consta de los siguientes
componentes:
Un clúster de almacenamiento de Ceph. El clúster de Ceph está formado por un mínimo de cuatro servidores físicos que alojan al menos ocho daemons de almacenamiento de objetos (OSD) cada uno. En una configuración de este tipo, tres nodos de OSD también funcionan como host de monitor (MON).
Un servidor de destino iSCSI con el destino iSCSI LIO en ejecución, configurado mediante
ceph-iscsi
.Un host de iniciador iSCSI, con
open-iscsi
(Linux) en ejecución, el iniciador iSCSI de Microsoft (Microsoft Windows) o cualquier otra distribución de iniciador iSCSI compatible.
Una configuración de producción recomendada de SUSE Enterprise Storage 7 con
ceph-iscsi
consta de:
Un clúster de almacenamiento de Ceph. Un clúster de producción de Ceph formado por cualquier número de nodos de OSD (normalmente más de 10), que por lo general ejecutan de 10 a 12 daemons de almacenamiento de objetos (OSD) cada uno, con no menos de tres hosts MON dedicados.
Varios servidores de destino iSCSI en los que se ejecuta el destino iSCSI LIO, configurado mediante
ceph-iscsi
. Para el failover y el equilibrio de carga iSCSI, estos servidores deben ejecutar un kernel que admita el módulotarget_core_rbd
. Hay disponibles paquetes de actualización en el canal de mantenimiento de SUSE Linux Enterprise Server.Cualquier número de hosts de iniciador iSCSI, con
open-iscsi
(Linux) en ejecución, el iniciador iSCSI de Microsoft (Microsoft Windows) o cualquier otra implementación de iniciador iSCSI compatible.
6.4 Instalación y configuración #
En esta sección se describen los pasos necesarios para instalar y configurar una instancia de iSCSI Gateway en SUSE Enterprise Storage.
6.4.1 Distribución de iSCSI Gateway en un clúster de Ceph #
La distribución de Ceph iSCSI Gateway sigue el mismo procedimiento que la distribución de otros servicios de Ceph mediante cephadm. Para obtener más información, consulte la Sección 5.4.3.5, “Distribución de pasarelas iSCSI Gateway”.
6.4.2 Creación de imágenes RBD #
Las imágenes RBD se crean en el almacén de Ceph y, posteriormente, se
exportan a iSCSI. Se recomienda utilizar un repositorio RADOS dedicado para
este propósito. Es posible crear un volumen desde cualquier host que sea
posible conectar al clúster de almacenamiento mediante la utilidad de línea
de comandos rbd
de Ceph. Esto requiere que el cliente
tenga al menos un archivo de configuración ceph.conf
mínimo y credenciales de autenticación adecuadas para CephX.
Para crear un volumen nuevo y exportarlo posteriormente a través de iSCSI,
use el comando rbd create
especificando el tamaño del
volumen en megabytes. Por ejemplo, para crear un volumen de 100 GB
denominado testvol
en el repositorio denominado
iscsi-images
ejecute:
cephuser@adm >
rbd --pool iscsi-images create --size=102400 testvol
6.4.3 Exportación de imágenes RBD a través de iSCSI #
Para exportar imágenes RBD mediante iSCSI, puede utilizar la interfaz Web
de Ceph Dashboard o la utilidad de línea de comandos de pasarela
ceph-iscsi
. En esta sección nos
centraremos solo en esta utilidad y se mostrará cómo crear un destino iSCSI
que exporte una imagen RBD mediante la línea de comandos.
Las imágenes RBD con las siguientes propiedades no se pueden exportar mediante iSCSI:
Imágenes con el
registro transaccional
habilitado.Imágenes con una
unidad de franja
de menos de 4096 bytes
Como usuario root
, introduzca el
contenedor de iSCSI Gateway:
root #
cephadm enter --name CONTAINER_NAME
Como usuario root
, inicie la
interfaz de línea de comandos de iSCSI Gateway:
root #
gwcli
Diríjase a iscsi-targets
y cree un destino con el nombre
iqn.2003-01.org.linux-iscsi.iscsi.ARQUITECTURA-SISTEMA:testvol
:
gwcli >
/> cd /iscsi-targetsgwcli >
/iscsi-targets> create iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol
Cree las pasarelas iSCSI especificando el nombre
y la
dirección IP
de la pasarela:
gwcli >
/iscsi-targets> cd iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/gatewaysgwcli >
/iscsi-target...tvol/gateways> create iscsi1 192.168.124.104gwcli >
/iscsi-target...tvol/gateways> create iscsi2 192.168.124.105
Utilice el comando help
para mostrar la lista de
comandos disponibles en el nodo de configuración actual.
Añada la imagen RBD con el nombre testvol
en el
repositorio iscsi-images
:
gwcli >
/iscsi-target...tvol/gateways> cd /disksgwcli >
/disks> attach iscsi-images/testvol
Asigne la imagen RBD al destino:
gwcli >
/disks> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/disksgwcli >
/iscsi-target...testvol/disks> add iscsi-images/testvol
Puede utilizar herramientas de nivel inferior, como
targetcli
, para consultar la configuración local, pero
no para modificarla.
Puede utilizar el comando ls
para revisar la
configuración. Algunos nodos de configuración también admiten el comando
info
, que se puede utilizar para mostrar información
más detallada.
Tenga en cuenta que, por defecto, la autenticación de ACL está habilitada para que no se pueda acceder aún a este destino. Consulte la Sección 6.4.4, “Autenticación y control de acceso” para obtener más información sobre la autenticación y el control de acceso.
6.4.4 Autenticación y control de acceso #
La autenticación iSCSI es flexible y cubre muchas posibilidades de autenticación.
6.4.4.1 Inhabilitación de la autenticación de ACL #
Sin autenticación significa que cualquier iniciador podrá acceder a cualquier LUN en el destino correspondiente. Para habilitar Sin autenticación, inhabilite la autenticación de ACL:
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hostsgwcli >
/iscsi-target...testvol/hosts> auth disable_acl
6.4.4.2 Uso de la autenticación de ACL #
Si se utiliza la autenticación de ACL basada en el nombre del iniciador, solo se permite que se conecten los iniciadores definidos. Para definir un iniciador, haga lo siguiente:
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hostsgwcli >
/iscsi-target...testvol/hosts> create iqn.1996-04.de.suse:01:e6ca28cc9f20
Los iniciadores definidos podrán conectarse, pero solo tendrán acceso a las imágenes RBD que se hayan añadido explícitamente al iniciador:
gwcli >
/iscsi-target...:e6ca28cc9f20> disk add rbd/testvol
6.4.4.3 Habilitación de la autenticación CHAP #
Además de ACL, puede habilitar la autenticación CHAP especificando un nombre de usuario y una contraseña para cada iniciador:
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hosts/iqn.1996-04.de.suse:01:e6ca28cc9f20gwcli >
/iscsi-target...:e6ca28cc9f20> auth username=common12 password=pass12345678
Los nombres de usuario deben tener entre 8 a 64 caracteres y pueden
incluir caracteres alfanuméricos, .
,
@
, -
, _
o bien
:
.
Las contraseñas deben tener entre 12 y 16 caracteres y pueden incluir
caracteres alfanuméricos, @
, -
,
_
o /
.
Opcionalmente, también puede habilitar la autenticación CHAP mutua
especificando los parámetros mutual_username
y
mutual_password
en el comando auth
.
6.4.4.4 Configuración de la autenticación de descubrimiento y mutua #
la autenticación de descubrimiento es independiente de los métodos de autenticación anteriores. Requiere credenciales para la navegación, es opcional y se puede configurar mediante:
gwcli >
/> cd /iscsi-targetsgwcli >
/iscsi-targets> discovery_auth username=du123456 password=dp1234567890
Los nombres de usuario deben tener una longitud de entre 8 a 64
caracteres y solo pueden incluir letras, .
,
@
, -
, _
o bien
:
.
Las contraseñas deben tener entre 12 y 16 caracteres y solo pueden
incluir letras, @
, -
,
_
o /
.
Opcionalmente, también puede especificar los parámetros
mutual_username
y mutual_password
en el
comando discovery_auth
.
La autenticación de descubrimiento se puede inhabilitar mediante el siguiente comando:
gwcli >
/iscsi-targets> discovery_auth nochap
6.4.5 Configuración avanzada #
ceph-iscsi
puede configurarse con
parámetros avanzados que posteriormente se pasan al destino de E/S LIO. Los
parámetros se dividen en parámetros de destino
y de
disco
.
A no ser que se indique lo contrario, no se recomienda cambiar los valores por defecto de estos parámetros.
6.4.5.1 Visualización de los ajustes de destino #
Puede ver el valor de estos ajustes mediante el comando
info
:
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvolgwcli >
/iscsi-target...i.SYSTEM-ARCH:testvol> info
Y para cambiar un valor se usa el comando reconfigure
:
gwcli >
/iscsi-target...i.SYSTEM-ARCH:testvol> reconfigure login_timeout 20
Los ajustes de destino
disponibles son:
- default_cmdsn_depth
Profundidad de CmdSN (número de secuencia de comando) por defecto. Limita la cantidad de peticiones que un iniciador iSCSI puede tener pendientes en cualquier momento.
- default_erl
Nivel de recuperación de error por defecto.
- login_timeout
Valor de tiempo límite de entrada a la sesión en segundos.
- netif_timeout
Tiempo límite de fallo de NIC en segundos.
- prod_mode_write_protect
Si se establece en
1
, se impide que se pueda escribir en los LUN.
6.4.5.2 Visualización de los ajustes de disco #
Puede ver el valor de estos ajustes mediante el comando
info
:
gwcli >
/> cd /disks/rbd/testvolgwcli >
/disks/rbd/testvol> info
Y para cambiar un valor se usa el comando reconfigure
:
gwcli >
/disks/rbd/testvol> reconfigure rbd/testvol emulate_pr 0
Los ajustes de disco
disponibles son:
- block_size
Tamaño de bloque del dispositivo subyacente.
- emulate_3pc
Si se establece en
1
, se habilita la opción Third Party Copy (Copia por parte de terceros).- emulate_caw
Si se establece en
1
, se habilita la opción Compare and Write (Comparar y escribir).- emulate_dpo
Si se establece en
1
, se activa la opción Disable Page Out (Inhabilitar página saliente).- emulate_fua_read
Si se establece en
1
, se habilita la lectura de Force Unit Access (Forzar acceso a la unidad).- emulate_fua_write
Si se establece en
1
, se habilita la escritura de Force Unit Access (Forzar acceso a la unidad).- emulate_model_alias
Si se establece en
1
, se utiliza el nombre del dispositivo de procesador final para el alias del modelo.- emulate_pr
Si se define en
0
, se inhabilita la compatibilidad con las reservas SCSI, incluidas las reservas de grupo persistente. Mientras está inhabilitada, la pasarela iSCSI Gateway de SES puede ignorar el estado de la reserva, lo que mejora la latencia de las peticiones.SugerenciaSe recomienda definir en
backstore_emulate_pr
el valor0
si los iniciadores iSCSI no requieren compatibilidad con la reserva SCSI.- emulate_rest_reord
Si se establece en
0
, la opción Queue Algorithm Modifier (Modificador de algoritmo de cola) tiene restringido el cambio de orden.- emulate_tas
Si se establece en
1
, se habilita la opción Task Aborted Status (Estado cancelado de tarea).- emulate_tpu
Si se establece en
1
, se habilita la opción Thin Provisioning Unmap (Anular asignación de provisión ligera).- emulate_tpws
Si se establece en
1
, se habilita la opción Thin Provisioning Write Same (Misma escritura en provisión ligera).- emulate_ua_intlck_ctrl
Si se establece en
1
, se habilita la opción Unit Attention Interlock (Interbloqueo de atención en la unidad).- emulate_write_cache
Si se establece en
1
, se activa la opción Write Cache Enable (Habilitar caché de escritura).- enforce_pr_isids
Si se establece en
1
, se fuerzan los ISID de reserva persistente.- is_nonrot
Si se establece en
1
, el almacén de respaldo es un dispositivo sin rotación.- max_unmap_block_desc_count
Número máximo de descriptores de bloque para UNMAP.
- max_unmap_lba_count:
Número máximo de LBA para UNMAP.
- max_write_same_len
Longitud máxima de WRITE_SAME.
- optimal_sectors
Tamaño de la petición óptima en sectores.
- pi_prot_type
Tipo de garantía de DIF.
- queue_depth
Profundidad de la cola.
- unmap_granularity
Granularidad de UNMAP.
- unmap_granularity_alignment
Alineación de la granularidad de UNMAP.
- force_pr_aptpl
Si está habilitado, LIO siempre escribirá el estado reserva persistente en el almacenamiento persistente, independientemente de si el cliente lo ha pedido a través de
aptpl=1
. Esto no tiene ningún efecto en el back-end RBD del kernel para LIO, ya que siempre persiste el estado PR. En circunstancias ideales, la opcióntarget_core_rbd
debería aplicar el valor "1" y producir un error si alguien intenta inhabilitarlo a través de la configuración.- unmap_zeroes_data
Afecta a si LIO anunciará LBPRZ a los iniciadores SCSI, lo que indica que los ceros se leerán desde una región después de UNMAP o WRITE SAME con un bit de desasignación.
6.5 Exportación de imágenes del dispositivo de bloques RADOS mediante tcmu-runner
#
ceph-iscsi
admite los almacenes
rbd
(basado en el kernel) y user:rbd
(tcmu-runner), lo que hace que toda la gestión sea transparente e
independiente del almacén.
Las distribuciones de iSCSI Gateway basadas en
tcmu-runner
son actualmente una tecnología en fase
preliminar.
A diferencia de las distribuciones de iSCSI Gateway basadas en kernel, las
basadas en tcmu-runner
no ofrecen compatibilidad
con E/S de múltiples rutas ni con las reservas persistentes SCSI.
Para exportar una imagen de dispositivo de bloque RADOS mediante
tcmu-runner
, todo lo que necesita hacer es
especificar el almacén user:rbd
al conectar el disco:
gwcli >
/disks> attach rbd/testvol backstore=user:rbd
Si utiliza tcmu-runner
, la imagen RBD exportada
debe tener habilitada la función exclusive-lock
.