Configurer Ubuntu 24.04 pour NVMe-oF avec le stockage ONTAP
NVMe over Fabrics (NVMe-of), y compris NVMe over Fibre Channel (NVMe/FC) et d'autres moyens de transport, est pris en charge avec Ubuntu 24.04 et ANA (Asymmetric Namespace Access). Dans les environnements NVMe-of, ANA est l'équivalent des chemins d'accès multiples ALUA dans les environnements iSCSI et FC. Il est implémenté avec les chemins d'accès multiples NVMe intégrés au noyau.
Découvrez comment configurer les hôtes NVMe over Fabrics (NVMe-oF) pour Ubuntu 24.04. Pour plus d'informations sur l'assistance et les fonctionnalités, consultez "Prise en charge et fonctionnalités d'Ubuntu ONTAP".
NVMe-oF avec Ubuntu 24.04 présente les limitations connues suivantes :
-
Le démarrage SAN à l'aide du protocole NVMe-of n'est actuellement pas pris en charge pour Ubuntu 24.04 avec ONTAP.
Pour plus de détails sur les configurations prises en charge, consultez le "Matrice d'interopérabilité".
Étape 1 : Installez Ubuntu et le logiciel NVMe et vérifiez votre configuration
Pour configurer votre hôte pour NVMe-oF, vous devez installer les packages logiciels hôte et NVMe, activer le multipathing et vérifier la configuration NQN de votre hôte.
-
Installez Ubuntu 24.04 sur le serveur. Une fois l'installation terminée, vérifiez que vous exécutez le noyau Ubuntu 24.04 spécifié :
uname -rExemple de version du noyau Ubuntu :
6.8.0-31-generic
-
Installer le
nvme-cligroupe :apt list | grep nvmeL'exemple suivant montre un
nvme-cliversion du paquet :nvme-cli/noble-updates 2.8-1ubuntu0.1 amd64
-
Sur l'hôte Ubuntu 24.04, vérifiez la chaîne hostnqn à l'adresse
/etc/nvme/hostnqn:cat /etc/nvme/hostnqnL'exemple suivant montre un
hostnqnversion:nqn.2014-08.org.nvmexpress:uuid:ace1xxxx-1f5a-xxxx-b0c3-3a6xxxx1a6ff
-
Sur le système ONTAP, vérifiez que la
hostnqnchaîne de/etc/nvme/hostnqncorrespond à lahostnqnchaîne pour le sous-système correspondant sur le système de stockage ONTAP :vserver nvme subsystem host show -vserver vs_106_fc_nvmeMontrer l'exemple
Vserver Subsystem Host NQN ----------- --------------- ---------------------------------------------------------- vs_106_fc_nvme ub_106 nqn.2014-08.org.nvmexpress:uuid:c047xxxx-e91e-xxxx-9995-ba4xxxx14631
Si les hostnqnchaînes ne correspondent pas, utilisez la commandevserver modifypour mettre à jour la chaînehostnqnsur le sous-système de système de stockage ONTAP correspondant afin qu'elle corresponde à la chaînehostnqnprovenant de/etc/nvme/hostnqnsur l'hôte.
Étape 2 : Configurer NVMe/FC et NVMe/TCP
Configurez NVMe/FC pour les adaptateurs Broadcom/Emulex ou Marvell/Qlogic, ou configurez NVMe/TCP à l'aide de la découverte et des opérations de connexion manuelles.
Configuration de NVMe/FC pour une carte Broadcom/Emulex
-
Vérifiez que vous utilisez le modèle d'adaptateur pris en charge :
-
Afficher les noms des modèles :
cat /sys/class/scsi_host/host*/modelnameVous devriez voir le résultat suivant :
LPe36002-M64 LPe36002-M64
-
Afficher les descriptions des modèles :
cat /sys/class/scsi_host/host*/modeldescVous devriez voir une sortie similaire à l'exemple suivant :
Emulex LPe36002-M64 2-Port 64Gb Fibre Channel Adapter Emulex LPe36002-M64 2-Port 64Gb Fibre Channel Adapter
-
-
Vérifiez que vous utilisez le firmware Broadcom
lpfcrecommandé et le pilote inbox :-
Afficher la version du firmware :
cat /sys/class/scsi_host/host*/fwrevLa commande renvoie les versions du firmware :
14.4.317.10, sli-4:6:d 14.4.317.10, sli-4:6:d
-
Afficher la version du pilote de la boîte de réception :
cat /sys/module/lpfc/versionL'exemple suivant montre une version de pilote :
0:14.2.0.17
+ Pour obtenir la liste actuelle des versions de pilotes et de micrologiciels de carte prises en charge, consultez le "Matrice d'interopérabilité".
-
-
Vérifiez-le
lpfc_enable_fc4_typeest défini sur3:cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type -
Vérifiez que vous pouvez afficher vos ports initiateurs :
cat /sys/class/fc_host/host*/port_nameVous devriez voir une sortie similaire à :
0x100000109bf0447b 0x100000109bf0447c
-
Vérifiez que vos ports initiateurs sont en ligne :
cat /sys/class/fc_host/host*/port_stateVous devriez voir le résultat suivant :
Online Online
-
Vérifiez que les ports initiateurs NVMe/FC sont activés et que les ports cibles sont visibles :
cat /sys/class/scsi_host/host*/nvme_infoAffiche un exemple de résultat
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
Le pilote natif de boîte de réception qla2xxx inclus dans le noyau Ubuntu 24.04 GA a les derniers correctifs en amont. Ces correctifs sont essentiels à la prise en charge de ONTAP.
Configuration du NVMe/FC pour un adaptateur Marvell/QLogic
-
Vérifiez que vous utilisez les versions de pilote d'adaptateur et de micrologiciel prises en charge :
cat /sys/class/fc_host/host*/symbolic_nameL'exemple suivant montre les versions du pilote et du micrologiciel :
QLE2872 FW: v9.15.00 DVR: v10.02.09.100-k QLE2872 FW: v9.15.00 DVR: v10.02.09.100-k
-
Vérifiez-le
ql2xnvmeenableest défini. L'adaptateur Marvell peut ainsi fonctionner en tant qu'initiateur NVMe/FC :cat /sys/module/qla2xxx/parameters/ql2xnvmeenableLa sortie attendue est 1.
NVMe/TCP ne prend pas en charge l'opération de connexion automatique. Vous pouvez découvrir les sous-systèmes et espaces de noms NVMe/TCP en effectuant manuellement les opérations NVMe/TCP connect ou connect-all.
-
Vérifiez que le port initiateur peut récupérer les données de la page de journal de découverte sur les LIF NVMe/TCP prises en charge :
nvme discover -t tcp -w <host-traddr> -a <traddr>Montrer l'exemple
# 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
-
Vérifiez que les autres combinaisons LIF initiateur-cible NVMe/TCP peuvent récupérer avec succès les données de la page du journal de découverte :
nvme discover -t tcp -w <host-traddr> -a <traddr>Affiche un exemple de résultat
#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
-
Exécutez le
nvme connect-allCommande sur toutes les LIF cible-initiateur NVMe/TCP prises en charge sur l'ensemble des nœuds :nvme connect-all -t tcp -w <host-traddr> -a <traddr>Montrer l'exemple
#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
À partir d'Ubuntu 24.04, le paramètre par défaut du délai d'expiration ctrl_Loss_tmo pour NVMe/TCP est désactivé. Cela signifie qu'il n'y a pas de limite au nombre de tentatives (tentatives indéterminées) et que vous n'avez pas besoin de configurer manuellement une durée de temporisation ctrl_Loss_tmo spécifique lors de l'utilisation des nvme connectcommandes ounvme connect-all(option -l ). Avec ce comportement par défaut, les contrôleurs NVMe/TCP ne connaissent pas de délais d'expiration en cas de défaillance de chemin et restent connectés indéfiniment.
Étape 3 : Vous pouvez activer l’E/S à 1 Mo pour NVMe/FC (optionnel).
ONTAP signale une taille de transfert de données maximale (MDTS) de 8 dans les données du contrôleur d'identification. Cela signifie que la taille maximale de la demande d'E/S peut atteindre 1 Mo. Pour émettre des requêtes d'E/S d'une taille de 1 Mo pour un hôte Broadcom NVMe/FC, vous devez augmenter la lpfc valeur de la lpfc_sg_seg_cnt paramètre à 256 à partir de la valeur par défaut de 64.
|
|
Ces étapes ne s'appliquent pas aux hôtes NVMe/FC Qlogic. |
-
Réglez le
lpfc_sg_seg_cntparamètre sur 256 :cat /etc/modprobe.d/lpfc.confVous devriez voir une sortie similaire à l’exemple suivant :
options lpfc lpfc_sg_seg_cnt=256
-
Exécutez
dracut -fla commande et redémarrez l'hôte. -
Vérifier que la valeur de
lpfc_sg_seg_cntest 256 :cat /sys/module/lpfc/parameters/lpfc_sg_seg_cnt
Étape 4 : Vérifier la configuration du multipathing
Vérifiez que l'état des chemins d'accès multiples NVMe in-kernel, l'état ANA et les namespaces ONTAP sont corrects pour la configuration NVMe-of.
-
Vérifiez que les paramètres NVMe-oF appropriés (tels que le modèle défini sur NetApp ONTAP Controller et la stratégie d'E/S d'équilibrage de charge définie sur round-robin) pour les espaces de noms ONTAP respectifs s'affichent correctement sur l'hôte :
-
Vérifiez que le chemin d'accès multiples NVMe intégré au noyau est activé :
cat /sys/module/nvme_core/parameters/multipathLa sortie attendue est « y ».
-
Afficher les sous-systèmes :
cat /sys/class/nvme-subsystem/nvme-subsys*/modelVous devriez voir le résultat suivant :
NetApp ONTAP Controller NetApp ONTAP Controller
-
Afficher la politique :
cat /sys/class/nvme-subsystem/nvme-subsys*/iopolicyVous devriez voir le résultat suivant :
round-robin round-robin
-
-
Vérifiez que les espaces de noms sont créés et correctement découverts sur l'hôte :
nvme listAffiche un exemple de résultat
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
-
Vérifiez que l'état du contrôleur de chaque chemin est actif et que l'état ANA est correct :
NVMe/FCnvme list-subsys /dev/nvme0n1Affiche un exemple de résultat
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/nvme1n1Affiche un exemple de résultat
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-
Vérifier que le plug-in NetApp affiche les valeurs correctes pour chaque périphérique d'espace de noms ONTAP :
-
nvme netapp ontapdevices -o column
Affiche un exemple de résultat
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
Affiche un exemple de résultat
{
"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
}
]
}
== Étape 5 : Examiner les problèmes connus
Il n'existe aucun problème connu pour la configuration hôte NVMe-of pour Ubuntu 24.04 avec la version ONTAP.