Configurer Ubuntu 22.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 22.04 avec 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 22.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 22.04 présente les limitations connues suivantes :
-
Le démarrage SAN utilisant le protocole NVMe-oF n'est actuellement pas pris en charge pour Ubuntu 22.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 22.04 sur le serveur. Une fois l'installation terminée, vérifiez que vous exécutez le noyau Ubuntu 22.04 spécifié :
# uname -rExemple de version du noyau Ubuntu :
5.15.0-101-generic
-
Installer le
nvme-cligroupe :# apt list | grep nvmeL'exemple suivant montre un
nvme-cliversion du paquet :nvme-cli/jammy-updates,now 1.16-3ubuntu0.1 amd64
-
Sur l'hôte Ubuntu 22.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:063axxxx-438a-xxxx-b9b4-95axxxx6d041
-
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 le hostnqnles chaînes ne correspondent pas, utilisez levserver modifycommande pour mettre à jour lehostnqnchaîne sur votre sous-système de stockage ONTAP correspondant pour correspondre à lahostnqnchaîne 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 la carte Broadcom recommandée
lpfcmicrologiciel et pilote de boîte de réception.-
Afficher la version du firmware :
cat /sys/class/scsi_host/host*/fwrevLa commande renvoie les versions du firmware :
14.2.673.40, sli-4:6:d 14.2.673.40, 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.0.0.4
+ 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 à :
0x100000109bf0447c 0x100000109bf0447b
-
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 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
Le pilote natif de boîte de réception qla2xxx inclus dans le noyau Ubuntu 22.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 exécutez les versions du pilote de carte et du 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.14.02 DVR: v10.02.06.200-k QLE2872 FW: v9.14.02 DVR: v10.02.06.200-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 dispose pas de la fonctionnalité de connexion automatique. Vous pouvez plutôt découvrir les sous-systèmes et les espaces de noms NVMe/TCP en effectuant manuellement les opérations NVMe/TCP connect ou connect-all.
Si un chemin est interrompu et n'est pas rétabli dans le délai d'attente par défaut de 10 minutes, NVMe/TCP ne peut pas se reconnecter automatiquement. Pour éviter un délai d'attente, définissez la période de nouvelle tentative pour les événements de basculement à au moins 30 minutes.
-
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 traddrAffiche un exemple de résultat
#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
-
Vérifier que les autres combinaisons de LIF cible-initiateur NVMe/TCP peuvent récupérer correctement les données de la page de journal de découverte :
nvme discover -t tcp -w host-traddr -a traddrAffiche un exemple de résultat
#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.
-
Exécutez la commande nvme Connect-all sur toutes les LIF cible-initiateur NVMe/TCP prises en charge sur les nœuds, et définissez le délai d'expiration de la perte du contrôleur pendant au moins 30 minutes ou 1800 secondes :
nvme connect-all -t tcp -w host-traddr -a traddr -l 1800Affiche un exemple de résultat
#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
É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 le chemin d'accès multiples NVMe intégré au noyau est activé :
# cat /sys/module/nvme_core/parameters/multipathLa sortie attendue est « y ».
-
Vérifiez que les paramètres NVMe-of appropriés (par exemple, modèle défini sur contrôleur NetApp ONTAP et iopole d'équilibrage de la charge sur round-Robin) pour les espaces de noms ONTAP respectifs reflètent correctement l'hôte :
# 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/FC# nvme list-subsys /dev/nvme0n1Affiche un exemple de résultat
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/nvme1n1Affiche un exemple de résultat
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
-
Vérifier que le plug-in NetApp affiche les valeurs correctes pour chaque périphérique d'espace de noms ONTAP :
Colonne# nvme netapp ontapdevices -o columnAffiche un exemple de résultat
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 jsonAffiche un exemple de résultat
{ "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 }, ] }
Étape 5 : Examiner les problèmes connus
La configuration hôte NVMe-of pour Ubuntu 22.04 avec ONTAP version présente le problème connu suivant :
| ID de bug NetApp | Titre | Description |
|---|---|---|
CONTAPEXT-2037 |
Les hôtes Ubuntu 22.04 NVMe-of créent des contrôleurs de détection permanente en double |
Sur les hôtes NVMe-of, vous pouvez utiliser la commande nvme Discover -p pour créer des contrôleurs CDP (persistent Discovery Controller). Cette commande ne doit créer qu'un seul PDC pour chaque combinaison initiateur-cible. Cependant, si vous exécutez Ubuntu 22.04 sur un hôte NVMe-of, un PDC dupliqué est créé chaque fois que "nvme Discover -p" est exécuté. Cela entraîne une utilisation inutile des ressources sur l'hôte et la cible. |