Configurare Ubuntu 22.04 per NVMe-oF con ONTAP storage
NVMe over Fabrics (NVMe-of), inclusi NVMe over Fibre Channel (NVMe/FC) e altri trasporti, è supportato con Ubuntu 22,04 con Asymmetric Namespace Access (ANA). Negli ambienti NVMe-of, ANA è l'equivalente del multipathing ALUA in ambienti iSCSI e FC ed è implementato con multipath NVMe nel kernel.
Scopri come configurare gli host NVMe over Fabrics (NVMe-oF) per Ubuntu 22.04. Per ulteriori informazioni su supporto e funzionalità, vedi "Supporto e funzionalità di Ubuntu ONTAP".
NVMe-oF con Ubuntu 22.04 presenta le seguenti limitazioni note:
-
L'avvio SAN tramite il protocollo NVMe-oF non è attualmente supportato per Ubuntu 22.04 con ONTAP.
Per ulteriori dettagli sulle configurazioni supportate, vedere il "Tool di matrice di interoperabilità".
Passaggio 1: installa Ubuntu e il software NVMe e verifica la configurazione
Per configurare l'host per NVMe-oF è necessario installare i pacchetti software host e NVMe, abilitare il multipathing e verificare la configurazione NQN dell'host.
-
Installare Ubuntu 22,04 sul server. Al termine dell'installazione, verificare che il kernel Ubuntu 22,04 specificato sia in esecuzione:
# uname -rEsempio di versione del kernel Ubuntu:
5.15.0-101-generic
-
Installare
nvme-clipacchetto:# apt list | grep nvmeL'esempio seguente mostra un
nvme-cliversione del pacchetto:nvme-cli/jammy-updates,now 1.16-3ubuntu0.1 amd64
-
Sull'host Ubuntu 22,04, controllare la stringa hostnqn in
/etc/nvme/hostnqn:# cat /etc/nvme/hostnqnL'esempio seguente mostra un
hostnqnversione:nqn.2014-08.org.nvmexpress:uuid:063axxxx-438a-xxxx-b9b4-95axxxx6d041
-
Sul sistema ONTAP, verificare che la
hostnqnstringa da/etc/nvme/hostnqncorrisponda allahostnqnstringa per il sottosistema corrispondente sul sistema storage ONTAP:::> vserver nvme subsystem host show -vserver vs_106_fc_nvmeMostra esempio
Vserver Subsystem Host NQN ----------- --------------- ---------------------------------------------------------- vs_106_fc_nvme ub_106 nqn.2014-08.org.nvmexpress:uuid:c047xxxx-e91e-xxxx-9995-ba4xxxx14631
Se il hostnqnle stringhe non corrispondono, utilizzare ilvserver modifycomando per aggiornare ilhostnqnstringa sul sottosistema del sistema di archiviazione ONTAP corrispondente per abbinarehostnqnstringa da/etc/nvme/hostnqnsull'ospite.
Passaggio 2: configurare NVMe/FC e NVMe/TCP
Configura NVMe/FC per adattatori Broadcom/Emulex o Marvell/Qlogic o configura NVMe/TCP utilizzando rilevamento e operazioni di connessione manuali.
Configurare NVMe/FC per un adattatore Broadcom/Emulex.
-
Verificare di utilizzare il modello di adattatore supportato:
-
Visualizza i nomi dei modelli:
cat /sys/class/scsi_host/host*/modelnameViene visualizzato il seguente output:
LPe36002-M64 LPe36002-M64
-
Visualizza le descrizioni dei modelli:
cat /sys/class/scsi_host/host*/modeldescDovresti vedere un output simile al seguente esempio:
Emulex LPe36002-M64 2-Port 64Gb Fibre Channel Adapter Emulex LPe36002-M64 2-Port 64Gb Fibre Channel Adapter
-
-
Verificare di utilizzare il Broadcom consigliato
lpfcfirmware e driver della posta in arrivo.-
Visualizza la versione del firmware:
cat /sys/class/scsi_host/host*/fwrevIl comando restituisce le versioni del firmware:
14.2.673.40, sli-4:6:d 14.2.673.40, sli-4:6:d
-
Visualizza la versione del driver in arrivo:
cat /sys/module/lpfc/versionL'esempio seguente mostra la versione del driver:
0: 14.0.0.4
+ Per l'elenco aggiornato dei driver della scheda di rete supportati e delle versioni del firmware, vedere "Tool di matrice di interoperabilità".
-
-
Verificare che
lpfc_enable_fc4_typeè impostato su3:cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type -
Verificare che sia possibile visualizzare le porte dell'iniziatore:
cat /sys/class/fc_host/host*/port_nameDovresti vedere un output simile a:
0x100000109bf0447c 0x100000109bf0447b
-
Verificare che le porte dell'iniziatore siano in linea:
cat /sys/class/fc_host/host*/port_stateViene visualizzato il seguente output:
Online Online
-
Verificare che le porte iniziatore NVMe/FC siano abilitate e che le porte di destinazione siano visibili:
cat /sys/class/scsi_host/host*/nvme_infoMostra output di esempio
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
Il driver inbox qla2xxx nativo incluso nel kernel Ubuntu 22,04 GA ha le ultime correzioni upstream. Queste correzioni sono essenziali per il supporto di ONTAP.
Configurare NVMe/FC per un adattatore Marvell/QLogic.
-
Verificare che siano in esecuzione le versioni del firmware e del driver dell'adattatore supportate:
# cat /sys/class/fc_host/host*/symbolic_nameL'esempio seguente mostra le versioni del driver e del firmware:
QLE2872 FW: v9.14.02 DVR: v10.02.06.200-k QLE2872 FW: v9.14.02 DVR: v10.02.06.200-k
-
Verificare che
ql2xnvmeenableè impostato. Ciò consente all'adattatore Marvell di funzionare come iniziatore NVMe/FC:cat /sys/module/qla2xxx/parameters/ql2xnvmeenableL'uscita prevista è 1.
NVMe/TCP non dispone della funzionalità di auto-connect. Invece, puoi individuare i sottosistemi e gli spazi dei nomi NVMe/TCP eseguendo manualmente le operazioni NVMe/TCP connect o connect-all.
Se un percorso si interrompe e non viene ripristinato entro il periodo di timeout predefinito di 10 minuti, NVMe/TCP non può riconnettersi automaticamente. Per evitare un time out, impostare il periodo di ripetizione per gli eventi di failover su almeno 30 minuti.
-
Verificare che la porta initiator possa recuperare i dati della discovery log page attraverso i LIF NVMe/TCP supportati:
nvme discover -t tcp -w host-traddr -a traddrMostra output di esempio
#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
-
Verifica che le altre combinazioni di LIF initiator NVMe/TCP siano in grado di recuperare correttamente i dati della pagina del log di rilevamento:
nvme discover -t tcp -w host-traddr -a traddrMostra output di esempio
#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.
-
Eseguire il comando nvme Connect-all in tutti i LIF NVMe/TCP Initiator-target supportati nei nodi e impostare il periodo di timeout per la perdita del controller per almeno 30 minuti o 1800 secondi:
nvme connect-all -t tcp -w host-traddr -a traddr -l 1800Mostra output di esempio
#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
Passaggio 3: Facoltativamente, abilitare 1 MB di I/O per NVMe/FC
ONTAP segnala una dimensione massima di trasferimento dati (MDTS) pari a 8 nei dati Identify Controller. Ciò significa che la dimensione massima della richiesta di I/O può arrivare fino a 1 MB. Per emettere richieste di I/O di dimensione 1 MB per un host Broadcom NVMe/FC, è necessario aumentare il lpfc valore del lpfc_sg_seg_cnt parametro a 256 dal valore predefinito di 64.
|
|
Questi passaggi non si applicano agli host Qlogic NVMe/FC. |
-
Impostare il
lpfc_sg_seg_cntparametro su 256:cat /etc/modprobe.d/lpfc.confDovresti vedere un output simile al seguente esempio:
options lpfc lpfc_sg_seg_cnt=256
-
Eseguire il
dracut -fcomando e riavviare l'host. -
Verificare che il valore per
lpfc_sg_seg_cntsia 256:cat /sys/module/lpfc/parameters/lpfc_sg_seg_cnt
Passaggio 4: verificare la configurazione multipathing
Verificare che lo stato multipath NVMe in-kernel, lo stato ANA e i namespace ONTAP siano corretti per la configurazione NVMe-of.
-
Verificare che il multipath NVMe nel kernel sia attivato:
# cat /sys/module/nvme_core/parameters/multipathL'uscita prevista è "Y".
-
Verificare che le impostazioni NVMe-of appropriate (ad esempio, modello impostato su controller NetApp ONTAP e ipopolicy per il bilanciamento del carico impostato su round-robin) per i rispettivi spazi dei nomi ONTAP si riflettano correttamente sull'host:
# cat /sys/class/nvme-subsystem/nvme-subsys*/modelViene visualizzato il seguente output:
NetApp ONTAP Controller NetApp ONTAP Controller
-
Visualizza la politica:
# cat /sys/class/nvme-subsystem/nvme-subsys*/iopolicyViene visualizzato il seguente output:
round-robin round-robin
-
-
Verificare che gli spazi dei nomi siano stati creati e rilevati correttamente sull'host:
# nvme listMostra output di esempio
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
-
Verificare che lo stato del controller di ciascun percorso sia attivo e che abbia lo stato ANA corretto:
NVMe/FC# nvme list-subsys /dev/nvme0n1Mostra output di esempio
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/nvme1n1Mostra output di esempio
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
-
Verificare che il plug-in NetApp visualizzi i valori corretti per ciascun dispositivo dello spazio dei nomi ONTAP:
Colonna# nvme netapp ontapdevices -o columnMostra output di esempio
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 jsonMostra output di esempio
{ "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 }, ] }
Passaggio 5: rivedere i problemi noti
La configurazione host NVMe-of per Ubuntu 22,04 con ONTAP presenta il seguente problema noto:
| ID bug NetApp | Titolo | Descrizione |
|---|---|---|
CONTAPEXT-2037 |
Gli host Ubuntu 22,04 NVMe-of creano controller di rilevamento persistenti duplicati |
Sugli host NVMe-of, è possibile utilizzare il comando "nvme Discover -p" per creare PDC (Persistent Discovery Controller). Questo comando dovrebbe creare un solo PDC per ogni combinazione iniziatore-destinazione. Tuttavia, se si esegue Ubuntu 22,04 su un host NVMe-of, viene creato un PDC duplicato ogni volta che viene eseguito "nvme Discover -p". Ciò comporta un utilizzo non necessario delle risorse sia sull'host che sulla destinazione. |