Configura Ubuntu 22.04 para NVMe-oF con almacenamiento ONTAP
NVMe over Fabrics (NVMe-oF), incluido NVMe over Fibre Channel (NVMe/FC) y otros transportes, es compatible con Ubuntu 22,04 con acceso asimétrico a espacio de nombres (ANA). En entornos de NVMe-oF, ANA es el equivalente a la multivía ALUA en entornos iSCSI y FC y se implementa con NVMe multivía en kernel.
Aprende cómo configurar hosts NVMe over Fabrics (NVMe-oF) para Ubuntu 22.04. Para más información sobre soporte y funciones, consulta "Soporte y funciones de Ubuntu ONTAP".
NVMe-oF con Ubuntu 22.04 tiene las siguientes limitaciones conocidas:
-
El arranque SAN usando el protocolo NVMe-oF actualmente no es compatible con Ubuntu 22.04 y ONTAP.
Para obtener más detalles sobre las configuraciones compatibles, consulta la "Herramienta de matriz de interoperabilidad".
Paso 1: instala Ubuntu y el software NVMe y verifica tu configuración
Para configurar su host para NVMe-oF, debe instalar los paquetes de software de host y NVMe, habilitar rutas múltiples y verificar la configuración NQN de su host.
-
Instale Ubuntu 22,04 en el servidor. Una vez completada la instalación, verifique que está ejecutando el kernel de Ubuntu 22,04 especificado:
# uname -rEjemplo de versión de kernel de Ubuntu:
5.15.0-101-generic
-
Instale el
nvme-clipaquete:# apt list | grep nvmeEl siguiente ejemplo muestra un
nvme-cliversión del paquete:nvme-cli/jammy-updates,now 1.16-3ubuntu0.1 amd64
-
En el host Ubuntu 22,04, compruebe la cadena hostnqn en
/etc/nvme/hostnqn:# cat /etc/nvme/hostnqnEl siguiente ejemplo muestra un
hostnqnversión:nqn.2014-08.org.nvmexpress:uuid:063axxxx-438a-xxxx-b9b4-95axxxx6d041
-
En el sistema ONTAP, verifica que la cadena
hostnqnde/etc/nvme/hostnqncoincida con la cadenahostnqnpara el subsistema correspondiente en el sistema de almacenamiento ONTAP:::> vserver nvme subsystem host show -vserver vs_106_fc_nvmeMuestra el ejemplo
Vserver Subsystem Host NQN ----------- --------------- ---------------------------------------------------------- vs_106_fc_nvme ub_106 nqn.2014-08.org.nvmexpress:uuid:c047xxxx-e91e-xxxx-9995-ba4xxxx14631
Si el hostnqnLas cadenas no coinciden, utilice elvserver modifycomando para actualizar elhostnqncadena en el subsistema del sistema de almacenamiento ONTAP correspondiente para que coincida con elhostnqncadena de/etc/nvme/hostnqnen el host.
Paso 2: Configurar NVMe/FC y NVMe/TCP
Configura NVMe/FC para adaptadores Broadcom/Emulex o Marvell/Qlogic, o configura NVMe/TCP usando descubrimiento y operaciones de conexión manuales.
Configuración de NVMe/FC para un adaptador Broadcom/Emulex.
-
Compruebe que está utilizando el modelo de adaptador admitido:
-
Mostrar los nombres de los modelos:
cat /sys/class/scsi_host/host*/modelnameDebe ver la siguiente salida:
LPe36002-M64 LPe36002-M64
-
Mostrar las descripciones del modelo:
cat /sys/class/scsi_host/host*/modeldescDeberías ver una salida similar al siguiente ejemplo:
Emulex LPe36002-M64 2-Port 64Gb Fibre Channel Adapter Emulex LPe36002-M64 2-Port 64Gb Fibre Channel Adapter
-
-
Compruebe que está utilizando la Broadcom recomendada
lpfccontrolador de firmware y bandeja de entrada.-
Mostrar la versión del firmware:
cat /sys/class/scsi_host/host*/fwrevEl comando devuelve las versiones del firmware:
14.2.673.40, sli-4:6:d 14.2.673.40, sli-4:6:d
-
Mostrar la versión del controlador de la bandeja de entrada:
cat /sys/module/lpfc/versionEl siguiente ejemplo muestra una versión del controlador:
0: 14.0.0.4
+ Para obtener la lista actual de versiones de firmware y controladores de adaptador compatibles, consulte la "Herramienta de matriz de interoperabilidad".
-
-
Compruebe que
lpfc_enable_fc4_typese establece en3:cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type -
Compruebe que puede ver los puertos de iniciador:
cat /sys/class/fc_host/host*/port_nameDeberías ver una salida similar a:
0x100000109bf0447c 0x100000109bf0447b
-
Compruebe que los puertos de iniciador estén en línea:
cat /sys/class/fc_host/host*/port_stateDebe ver la siguiente salida:
Online Online
-
Compruebe que los puertos de iniciador NVMe/FC estén habilitados y que los puertos de destino estén visibles:
cat /sys/class/scsi_host/host*/nvme_infoMuestra el resultado de ejemplo
NVME Initiator Enabled XRI Dist lpfc1 Total 6144 IO 5894 ELS 250 NVME LPORT lpfc1 WWPN x100000109bf0447c WWNN x200000109bf0447c DID x022300 ONLINE NVME RPORT WWPN x200cd039eaa8138b WWNN x200ad039eaa8138b DID x021509 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2010d039eaa8138b WWNN x200ad039eaa8138b DID x021108 TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 000000000e Cmpl 000000000e Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 0000000000005238 Issue 000000000000523a OutIO 0000000000000002 abort 00000000 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000 FCP CMPL: xb 00000000 Err 00000000 NVME Initiator Enabled XRI Dist lpfc0 Total 6144 IO 5894 ELS 250 NVME LPORT lpfc0 WWPN x100000109bf0447b WWNN x200000109bf0447b DID x022600 ONLINE NVME RPORT WWPN x200bd039eaa8138b WWNN x200ad039eaa8138b DID x021409 TARGET DISCSRVC ONLINE NVME RPORT WWPN x200fd039eaa8138b WWNN x200ad039eaa8138b DID x021008 TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 000000000e Cmpl 000000000e Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 000000000000523c Issue 000000000000523e OutIO 0000000000000002 abort 00000000 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000 FCP CMPL: xb 00000000 Err 00000000
El controlador de bandeja de entrada nativa qla2xxx incluido en el kernel Ubuntu 22,04 GA tiene las últimas correcciones ascendentes. Estas correcciones son esenciales para la compatibilidad con ONTAP.
Configure NVMe/FC para un adaptador Marvell/QLogic.
-
Compruebe que está ejecutando las versiones de firmware y controlador del adaptador compatibles:
# cat /sys/class/fc_host/host*/symbolic_nameEl siguiente ejemplo muestra las versiones del controlador y del firmware:
QLE2872 FW: v9.14.02 DVR: v10.02.06.200-k QLE2872 FW: v9.14.02 DVR: v10.02.06.200-k
-
Compruebe que
ql2xnvmeenableestá configurado. Esto permite que el adaptador Marvell funcione como iniciador NVMe/FC:cat /sys/module/qla2xxx/parameters/ql2xnvmeenableLa salida esperada es 1.
NVMe/TCP no tiene funcionalidad de conexión automática. En su lugar, puedes descubrir los subsistemas y espacios de nombres NVMe/TCP realizando las operaciones NVMe/TCP connect o connect-all manualmente.
Si una ruta se cae y no se restablece dentro del período de tiempo de espera predeterminado de 10 minutos, NVMe/TCP no puede reconectarse automáticamente. Para evitar un tiempo de espera, establece el período de reintento para eventos de conmutación por error en al menos 30 minutos.
-
Verifica que el puerto iniciador puede obtener los datos de la página de registro de descubrimiento a través de los LIF NVMe/TCP compatibles:
nvme discover -t tcp -w host-traddr -a traddrMuestra el resultado de ejemplo
#nvme discover -t tcp -w 10.10.11.47-a 10.10.10.122 Discovery Log Number of Records 8, Generation counter 10 =====Discovery Log Entry 0====== trtype: tcp adrfam: ipv4 subtype: current discovery subsystem treq: not specified portid: 0 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.bbfb4ee8dfb611edbd07d039ea165590:discovery traddr: 10.10.10.122 eflags: explicit discovery connections, duplicate discovery information sectype: none =====Discovery Log Entry 1====== trtype: tcp adrfam: ipv4 subtype: current discovery subsystem treq: not specified portid: 1 trsvcid: 8009 subnqn: nqn.1992 08.com.netapp:sn.bbfb4ee8dfb611edbd07d039ea165590:discovery traddr: 10.10.10.124 eflags: explicit discovery connections, duplicate discovery information sectype: none =====Discovery Log Entry 2====== trtype: tcp
-
Compruebe que las demás combinaciones de LIF iniciador-destino NVMe/TCP puedan recuperar correctamente los datos de la página de registro de detección:
nvme discover -t tcp -w host-traddr -a traddrMuestra el resultado de ejemplo
#nvme discover -t tcp -w 10.10.10.47 -a 10.10.10.122 #nvme discover -t tcp -w 10.10.10.47 -a 10.10.10.124 #nvme discover -t tcp -w 10.10.11.47 -a 10.10.11.122 #nvme discover -t tcp -w 10.10.11.47 -a 10.10.11.
-
Ejecute el comando nvme connect-all en todos los LIF objetivo iniciador NVMe/TCP admitidos en todos los nodos y establezca el tiempo de espera de pérdida de la controladora durante al menos 30 minutos o 1800 segundos:
nvme connect-all -t tcp -w host-traddr -a traddr -l 1800Muestra el resultado de ejemplo
#nvme connect-all -t tcp -w 10.10.10.47 -a 10.10.10.122 -l 1800 #nvme connect-all -t tcp -w 10.10.10.47 -a 10.10.10.124 -l 1800 #nvme connect-all -t tcp -w 10.10.11.47 -a 10.10.11.122 -l 1800 #nvme connect-all -t tcp -w 10.10.11.47 -a 10.10.11.124 -l 1800
Paso 3: Opcionalmente, habilite 1 MB de E/S para NVMe/FC
ONTAP informa un tamaño máximo de transferencia de datos (MDTS) de 8 en los datos del controlador de identificación. Esto significa que el tamaño máximo de solicitud de E/S puede ser de hasta 1 MB. Para emitir solicitudes de E/S de tamaño 1 MB para un host Broadcom NVMe/FC, debe aumentar el lpfc valor de la lpfc_sg_seg_cnt parámetro a 256 desde el valor predeterminado de 64.
|
|
Estos pasos no se aplican a los hosts Qlogic NVMe/FC. |
-
Defina el
lpfc_sg_seg_cntparámetro en 256:cat /etc/modprobe.d/lpfc.confDebería ver un resultado similar al siguiente ejemplo:
options lpfc lpfc_sg_seg_cnt=256
-
Ejecute
dracut -fel comando y reinicie el host. -
Compruebe que el valor de
lpfc_sg_seg_cntes 256:cat /sys/module/lpfc/parameters/lpfc_sg_seg_cnt
Paso 4: verifica la configuración de multivía
Verifique que el estado de multivía de NVMe en kernel, el estado de ANA y los espacios de nombres de ONTAP sean correctos para la configuración de NVMe-oF.
-
Compruebe que la multivía NVMe en kernel esté habilitada:
# cat /sys/module/nvme_core/parameters/multipathLa salida esperada es “Y”.
-
Compruebe que la configuración NVMe-oF adecuada (como, por ejemplo, el modelo configurado en la controladora NetApp ONTAP y la política de balanceo de carga establecida en round-robin) en los respectivos espacios de nombres de ONTAP se reflejen correctamente en el host:
# cat /sys/class/nvme-subsystem/nvme-subsys*/modelDebe ver la siguiente salida:
NetApp ONTAP Controller NetApp ONTAP Controller
-
Mostrar la política:
# cat /sys/class/nvme-subsystem/nvme-subsys*/iopolicyDebe ver la siguiente salida:
round-robin round-robin
-
-
Verifique que los espacios de nombres se hayan creado y detectado correctamente en el host:
# nvme listMuestra el resultado de ejemplo
Node SN Model --------------------------------------------------------- /dev/nvme0n1 81CZ5BQuUNfGAAAAAAAB NetApp ONTAP Controller Namespace Usage Format FW Rev ----------------------------------------------------------- 1 21.47 GB / 21.47 GB 4 KiB + 0 B FFFFFFFF
-
Compruebe que el estado de la controladora de cada ruta sea activo y que tenga el estado de ANA correcto:
NVMe/FC# nvme list-subsys /dev/nvme0n1Muestra el resultado de ejemplo
nvme-subsys4 - NQN=nqn.1992-08.com.netapp:sn.8763d311b2ac11ed950ed039ea951c46:subsystem. ub_106 \ +- nvme1 fc traddr=nn-0x20a6d039ea954d17:pn-0x20a7d039ea954d17,host_traddr=nn-0x200000109b1b95ef:pn-0x100000109b1b95ef live optimized +- nvme2 fc traddr=nn-0x20a6d039ea954d17:pn-0x20a8d039ea954d17,host_traddr=nn-0x200000109b1b95f0:pn-0x100000109b1b95f0 live optimized +- nvme3 fc traddr=nn-0x20a6d039ea954d17:pn-0x20aad039ea954d17,host_traddr=nn-0x200000109b1b95f0:pn-0x100000109b1b95f0 live non-optimized +- nvme5 fc traddr=nn-0x20a6d039ea954d17:pn-0x20a9d039ea954d17,host_traddr=nn-0x200000109b1b95ef:pn-0x100000109b1b95ef live non-optimized
NVMe/TCP# nvme list-subsys /dev/nvme1n1Muestra el resultado de ejemplo
nvme-subsys1 - NQN=nqn.1992- 08.com.netapp:sn. bbfb4ee8dfb611edbd07d039ea165590:subsystem.rhel_tcp_95 +- nvme1 tcp traddr=10.10.10.122,trsvcid=4420,host_traddr=10.10.10.47,src_addr=10.10.10.47 live +- nvme2 tcp traddr=10.10.10.124,trsvcid=4420,host_traddr=10.10.10.47,src_addr=10.10.10.47 live +- nvme3 tcp traddr=10.10.11.122,trsvcid=4420,host_traddr=10.10.11.47,src_addr=10.10.11.47 live +- nvme4 tcp traddr=10.10.11.124,trsvcid=4420,host_traddr=10.10.11.47,src_addr=10.10.11.47 live
-
Confirmar que el complemento de NetApp muestra los valores correctos para cada dispositivo de espacio de nombres ONTAP:
Columna# nvme netapp ontapdevices -o columnMuestra el resultado de ejemplo
Device Vserver Namespace Path ----------------------- ------------------------------ /dev/nvme0n1 co_iscsi_tcp_ubuntu /vol/vol1/ns1 NSID UUID Size ------------------------------------------------------------ 1 79c2c569-b7fa-42d5-b870-d9d6d7e5fa84 21.47GB
JSON# nvme netapp ontapdevices -o jsonMuestra el resultado de ejemplo
{ "ONTAPdevices" : [ { "Device" : "/dev/nvme0n1", "Vserver" : "co_iscsi_tcp_ubuntu", "Namespace_Path" : "/vol/nvmevol1/ns1", "NSID" : 1, "UUID" : "79c2c569-b7fa-42d5-b870-d9d6d7e5fa84", "Size" : "21.47GB", "LBA_Data_Size" : 4096, "Namespace_Size" : 5242880 }, ] }
Paso 5: Revisar los problemas conocidos
La configuración de host de NVMe-oF para Ubuntu 22,04 con ONTAP tiene el siguiente problema conocido:
| ID de error de NetApp | Título | Descripción |
|---|---|---|
CONTAPEXT-2037 |
Los hosts NVMe-oF de Ubuntu 22,04 crean controladores de detección persistentes duplicados |
En los hosts de NVMe-oF, puede utilizar el comando «nvme discover -p» para crear controladoras de detección persistente (PDCs). Este comando solo debe crear un PDC para cada combinación iniciador-destino. Sin embargo, si ejecuta Ubuntu 22,04 en un host NVMe-oF, se crea un PDC duplicado cada vez que se ejecuta «nvme discover -p». Esto lleva a un uso innecesario de recursos tanto en el host como en el destino. |