Configurare Ubuntu 24.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 24,04 e 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 24.04. Per ulteriori informazioni su supporto e funzionalità, consulta "Supporto e funzionalità di Ubuntu ONTAP".
NVMe-oF con Ubuntu 24.04 presenta le seguenti limitazioni note:
-
L'avvio SAN che utilizza il protocollo NVMe-of non è attualmente supportato per Ubuntu 24,04 con ONTAP.
Per ulteriori informazioni sulle configurazioni supportate, vedere "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 24,04 sul server. Al termine dell'installazione, verificare che il kernel Ubuntu 24,04 specificato sia in esecuzione:
uname -rEsempio di versione del kernel Ubuntu:
6.8.0-31-generic
-
Installare
nvme-clipacchetto:apt list | grep nvmeL'esempio seguente mostra un
nvme-cliversione del pacchetto:nvme-cli/noble-updates 2.8-1ubuntu0.1 amd64
-
Sull'host Ubuntu 24,04, controllare la stringa hostnqn all'indirizzo
/etc/nvme/hostnqn:cat /etc/nvme/hostnqnL'esempio seguente mostra un
hostnqnversione:nqn.2014-08.org.nvmexpress:uuid:ace1xxxx-1f5a-xxxx-b0c3-3a6xxxx1a6ff
-
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 le hostnqnstringhe non corrispondono, usa ilvserver modifycomando per aggiornare lahostnqnstringa sul relativo subsystem del sistema storage ONTAP in modo che corrisponda allahostnqnstringa da/etc/nvme/hostnqnsull'host.
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 che si stia utilizzando il modello di scheda 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
-
-
Verifica di utilizzare il firmware Broadcom
lpfcconsigliato e il driver inbox:-
Visualizza la versione del firmware:
cat /sys/class/scsi_host/host*/fwrevIl comando restituisce le versioni del firmware:
14.4.317.10, sli-4:6:d 14.4.317.10, 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.2.0.17
+ 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:
0x100000109bf0447b 0x100000109bf0447c
-
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 lpfc0 Total 6144 IO 5894 ELS 250 NVME LPORT lpfc0 WWPN x100000109bf0447b WWNN x200000109bf0447b DID x022600 ONLINE NVME RPORT WWPN x200fd039eaa8138b WWNN x200ad039eaa8138b DID x021006 TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 0000000187 Cmpl 0000000187 Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 0000000014096514 Issue 000000001407fcd6 OutIO fffffffffffe97c2 abort 00000048 noxri 00000000 nondlp 0000001c qdepth 00000000 wqerr 00000000 err 00000000 FCP CMPL: xb 00000048 Err 00000077 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 x2010d039eaa8138b WWNN x200ad039eaa8138b DID x021106 TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 0000000187 Cmpl 0000000187 Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 00000000140970ed Issue 00000000140813da OutIO fffffffffffea2ed abort 00000047 noxri 00000000 nondlp 0000002b qdepth 00000000 wqerr 00000000 err 00000000 FCP CMPL: xb 00000047 Err 00000075
Il driver inbox qla2xxx nativo incluso nel kernel Ubuntu 24,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 di utilizzare le versioni supportate del driver e del firmware dell'adattatore:
cat /sys/class/fc_host/host*/symbolic_nameL'esempio seguente mostra le versioni del driver e del firmware:
QLE2872 FW: v9.15.00 DVR: v10.02.09.100-k QLE2872 FW: v9.15.00 DVR: v10.02.09.100-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 supporta l'operazione di connessione automatica. In alternativa, puoi individuare i sottosistemi e gli spazi dei nomi NVMe/TCP eseguendo manualmente le operazioni NVMe/TCP connect o connect-all.
-
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 <traddr>Mostra esempio
# nvme discover -t tcp -w 192.168.167.150 -a 192.168.167.155 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: 4 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:discovery traddr: 192.168.167.156 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: 2 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:discovery traddr: 192.168.166.156 eflags: explicit discovery connections, duplicate discovery information* sectype: none =====Discovery Log Entry 2====== trtype: tcp adrfam: ipv4 subtype: current discovery subsystem treq: not specified portid: 3 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:discovery traddr: 192.168.167.155 eflags: explicit discovery connections, duplicate discovery information* sectype: none =====Discovery Log Entry 3====== trtype: tcp adrfam: ipv4 subtype: current discovery subsystem treq: not specified portid: 1 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:discovery traddr: 192.168.166.155 eflags: explicit discovery connections, duplicate discovery information* sectype: none =====Discovery Log Entry 4====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 4 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:subsystem.ubuntu_24.04_tcp_211 traddr: 192.168.167.156 eflags: none sectype: none =====Discovery Log Entry 5====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 2 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:subsystem.ubuntu_24.04_tcp_211 traddr: 192.168.166.156 eflags: none sectype: none =====Discovery Log Entry 6====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 3 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:subsystem.ubuntu_24.04_tcp_211 traddr: 192.168.167.155 eflags: none sectype: none =====Discovery Log Entry 7====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 1 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:subsystem.ubuntu_24.04_tcp_211 traddr: 192.168.166.155 eflags: none sectype: none
-
Verificare che le altre combinazioni LIF NVMe/TCP initiator-target riescano a recuperare correttamente i dati della pagina del registro di individuazione:
nvme discover -t tcp -w <host-traddr> -a <traddr>Mostra output di esempio
#nvme discover -t tcp -w 192.168.167.150 -a 192.168.167.155 #nvme discover -t tcp -w 192.168.167.150 -a 192.168.167.156 #nvme discover -t tcp -w 192.168.166.150 -a 192.168.166.155 #nvme discover -t tcp -w 192.168.166.150 -a 192.168.166.156
-
Eseguire
nvme connect-allCommand tra tutti i LIF target initiator NVMe/TCP supportati nei nodi:nvme connect-all -t tcp -w <host-traddr> -a <traddr>Mostra esempio
#nvme connect-all -t tcp -w 192.168.167.150 -a 192.168.167.155 #nvme connect-all -t tcp -w 192.168.167.150 -a 192.168.167.156 #nvme connect-all -t tcp -w 192.168.166.150 -a 192.168.166.155 #nvme connect-all -t tcp -w 192.168.166.150 -a 192.168.166.156
A partire da Ubuntu 24,04, l'impostazione predefinita del timeout ctrl_Loss_tmo per NVMe/TCP è disattivata. Ciò significa che non esiste alcun limite al numero di tentativi (tentativi indefiniti) e non è necessario configurare manualmente una specifica durata del timeout ctrl_Loss_tmo quando si utilizzano i nvme connectcomandi onvme connect-all(opzione -l ). Con questo comportamento predefinito, i controller NVMe/TCP non riscontrano timeout in caso di errore di percorso e rimangono connessi a tempo indeterminato.
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 le impostazioni NVMe-oF appropriate (ad esempio, modello impostato su NetApp ONTAP Controller e iopolicy di bilanciamento del carico impostato su round-robin) per i rispettivi namespace ONTAP vengano visualizzate correttamente sull'host:
-
Verificare che il multipath NVMe nel kernel sia attivato:
cat /sys/module/nvme_core/parameters/multipathL'uscita prevista è "Y".
-
Visualizza i sottosistemi:
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/FCnvme list-subsys /dev/nvme0n1Mostra output di esempio
nvme-subsys4 - NQN=nqn.1992-08.com.netapp:sn.8763d311b2ac11ed950ed039ea951c46:subsystem. ubuntu_24.04 \ +- 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/TCPnvme list-subsys /dev/nvme1n1Mostra output di esempio
nvme-subsys0 - NQN=nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:subsystem.ubuntu_24.04_tcp_211 hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0050-xxxx-8035-c3cxxxxa5933 iopolicy=round-robin +- nvme0 tcp traddr=192.168.166.155,trsvcid=4420,host_traddr=192.168.166.150,src_addr=192.168.166.150 live optimized +- nvme1 tcp traddr=192.168.167.155,trsvcid=4420,host_traddr=192.168.167.150,src_addr=192.168.167.150 live optimized +- nvme2 tcp traddr=192.168.166.156,trsvcid=4420,host_traddr=192.168.166.150,src_addr=192.168.166.150 live non-optimized +- nvme3 tcp traddr=192.168.167.156,trsvcid=4420,host_traddr=192.168.167.150,src_addr=192.168.167.150 live non-optimized-
Verificare che il plug-in NetApp visualizzi i valori corretti per ciascun dispositivo dello spazio dei nomi ONTAP:
-
nvme netapp ontapdevices -o column
Mostra output di esempio
Device Vserver Namespace Path NSID UUID Size ------------- ------------- ----------------------- ---- -------------------------------------- --------- /dev/nvme0n1 vs_211_tcp /vol/tcpvol1/ns1 1 1cc7bc78-8d7b-4d8e-a3c4-750f9461a6e9 21.47GB
nvme netapp ontapdevices -o json
Mostra output di esempio
{
"ONTAPdevices" : [
{
"Device":"/dev/nvme0n9",
"Vserver":"vs_211_tcp",
"Namespace_Path":"/vol/tcpvol9/ns9",
"NSID":9,
"UUID":"99640dd9-8463-4c12-8282-b525b39fc10b",
"Size":"21.47GB",
"LBA_Data_Size":4096,
"Namespace_Size":5242880
}
]
}
== Passaggio 5: rivedi i problemi noti
Non ci sono problemi noti per la configurazione host NVMe-of per Ubuntu 24,04 con ONTAP release.