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 24.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 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.

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

    Exemple de version du noyau Ubuntu :

    6.8.0-31-generic
  2. Installer le nvme-cli groupe :

    apt list | grep nvme

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

    nvme-cli/noble-updates 2.8-1ubuntu0.1 amd64
  3. Sur l'hôte Ubuntu 24.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:ace1xxxx-1f5a-xxxx-b0c3-3a6xxxx1a6ff
  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 les hostnqn chaînes ne correspondent pas, utilisez la commande vserver modify pour mettre à jour la chaîne hostnqn sur le sous-système de système de stockage ONTAP correspondant afin qu'elle corresponde à la chaîne hostnqn provenant 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 le firmware Broadcom lpfc recommandé et le pilote inbox :

    1. Afficher la version du firmware :

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

      La commande renvoie les versions du firmware :

      14.4.317.10, sli-4:6:d
      14.4.317.10, 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.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é".

  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 à :

    0x100000109bf0447b
    0x100000109bf0447c
  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 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
NVMe/FC - Marvell/QLogic

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

Étapes
  1. Vérifiez que vous utilisez les versions de pilote d'adaptateur et de 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.15.00 DVR: v10.02.09.100-k
    QLE2872 FW: v9.15.00 DVR: v10.02.09.100-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 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.

É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>
    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
  2. 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
  3. Exécutez le nvme connect-all Commande 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
    Remarque À 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 connect commandes ou nvme 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.

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 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 :

    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. Afficher les sous-systèmes :

      cat /sys/class/nvme-subsystem/nvme-subsys*/model

      Vous devriez voir le résultat suivant :

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

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

      Vous devriez voir le résultat suivant :

    round-robin
    round-robin
  2. 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
  3. 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. 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/TCP
    nvme list-subsys /dev/nvme1n1
    Affiche 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
    1. 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
JSON
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.