Skip to main content
ONTAP SAN Host Utilities
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Configurer Ubuntu 22.04 pour NVMe-oF avec le stockage ONTAP

Contributeurs netapp-camdenc netapp-pcarriga netapp-sarajane

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.

Étapes
  1. 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 -r

    Exemple de version du noyau Ubuntu :

    5.15.0-101-generic
  2. Installer le nvme-cli groupe :

    # apt list | grep nvme

    L'exemple suivant montre un nvme-cli version du paquet :

    nvme-cli/jammy-updates,now 1.16-3ubuntu0.1 amd64
  3. Sur l'hôte Ubuntu 22.04, vérifiez la chaîne hostnqn à l'adresse /etc/nvme/hostnqn:

    # cat /etc/nvme/hostnqn

    L'exemple suivant montre un hostnqn version:

    nqn.2014-08.org.nvmexpress:uuid:063axxxx-438a-xxxx-b9b4-95axxxx6d041
  4. Sur le système ONTAP, vérifiez que la hostnqn chaîne de /etc/nvme/hostnqn correspond à la hostnqn chaîne pour le sous-système correspondant sur le système de stockage ONTAP :

    ::> vserver nvme subsystem host show -vserver vs_106_fc_nvme
    Montrer l'exemple
    Vserver     Subsystem          Host NQN
    ----------- --------------- ----------------------------------------------------------
    vs_106_fc_nvme ub_106 nqn.2014-08.org.nvmexpress:uuid:c047xxxx-e91e-xxxx-9995-ba4xxxx14631
    Remarque Si le hostnqn les chaînes ne correspondent pas, utilisez le vserver modify commande pour mettre à jour le hostnqn chaîne sur votre sous-système de stockage ONTAP correspondant pour correspondre à la hostnqn chaîne de /etc/nvme/hostnqn sur 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.

Broadcom/Emulex

Configuration de NVMe/FC pour une carte Broadcom/Emulex

Étapes
  1. Vérifiez que vous utilisez le modèle d'adaptateur pris en charge :

    1. Afficher les noms des modèles :

      cat /sys/class/scsi_host/host*/modelname

      Vous devriez voir le résultat suivant :

      LPe36002-M64
      LPe36002-M64
    2. Afficher les descriptions des modèles :

      cat /sys/class/scsi_host/host*/modeldesc

      Vous 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
  2. Vérifiez que vous utilisez la carte Broadcom recommandée lpfc micrologiciel et pilote de boîte de réception.

    1. Afficher la version du firmware :

      cat /sys/class/scsi_host/host*/fwrev

      La commande renvoie les versions du firmware :

      14.2.673.40, sli-4:6:d
      14.2.673.40, sli-4:6:d
    2. Afficher la version du pilote de la boîte de réception :

      cat /sys/module/lpfc/version

      L'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é".

  3. Vérifiez-le lpfc_enable_fc4_type est défini sur 3:

    cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type
  4. Vérifiez que vous pouvez afficher vos ports initiateurs :

    cat /sys/class/fc_host/host*/port_name

    Vous devriez voir une sortie similaire à :

    0x100000109bf0447c
    0x100000109bf0447b
  5. Vérifiez que vos ports initiateurs sont en ligne :

    cat /sys/class/fc_host/host*/port_state

    Vous devriez voir le résultat suivant :

    Online
    Online
  6. 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_info
    Affiche 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
Marvell/QLogic

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

Étapes
  1. 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_name

    L'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
  2. Vérifiez-le ql2xnvmeenable est défini. L'adaptateur Marvell peut ainsi fonctionner en tant qu'initiateur NVMe/FC :

    cat /sys/module/qla2xxx/parameters/ql2xnvmeenable

    La sortie attendue est 1.

NVMe/TCP

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.

Étapes
  1. 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
    Affiche 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
  2. 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 traddr
    Affiche 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.
  3. 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 1800
    Affiche 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.

Remarque Ces étapes ne s'appliquent pas aux hôtes NVMe/FC Qlogic.
Étapes
  1. Réglez le lpfc_sg_seg_cnt paramètre sur 256 :

    cat /etc/modprobe.d/lpfc.conf

    Vous devriez voir une sortie similaire à l’exemple suivant :

    options lpfc lpfc_sg_seg_cnt=256
  2. Exécutez dracut -f la commande et redémarrez l'hôte.

  3. Vérifier que la valeur de lpfc_sg_seg_cnt est 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.

Étapes
  1. Vérifiez que le chemin d'accès multiples NVMe intégré au noyau est activé :

    # cat /sys/module/nvme_core/parameters/multipath

    La sortie attendue est « y ».

  2. 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*/model

    Vous devriez voir le résultat suivant :

    NetApp ONTAP Controller
    NetApp ONTAP Controller
    1. Afficher la politique :

      # cat /sys/class/nvme-subsystem/nvme-subsys*/iopolicy

      Vous devriez voir le résultat suivant :

    round-robin
    round-robin
  3. Vérifiez que les espaces de noms sont créés et correctement découverts sur l'hôte :

    # nvme list
    Affiche 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
  4. 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/nvme0n1
    Affiche 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/nvme1n1
    Affiche 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
  5. 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 column
    Affiche 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 json
    Affiche 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.