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 Oracle Linux 8.x avec NVMe-oF pour le stockage ONTAP

Contributeurs netapp-sarajane

Les hôtes Oracle Linux prennent en charge les protocoles NVMe over Fibre Channel (NVMe/FC) et NVMe over TCP (NVMe/TCP) avec Asymmetric Namespace Access (ANA). ANA fournit une fonctionnalité de multi-accès équivalente à l'accès aux unités logiques asymétriques (ALUA) dans les environnements iSCSI et FCP.

Apprenez à configurer les hôtes NVMe over Fabrics (NVMe-oF) pour Oracle Linux 8.x. Pour plus d'assistance et d'informations sur les fonctionnalités, consultez "Prise en charge et fonctionnalités d'Oracle Linux ONTAP".

NVMe-oF avec Oracle Linux 8.x présente les limitations connues suivantes :

  • Le démarrage SAN utilisant le protocole NVMe-oF n'est pas pris en charge.

  • La prise en charge de l'utilitaire hôte sanlun de NetApp n'est pas disponible pour NVMe-oF sur un hôte Oracle Linux 8.x. Au lieu de cela, vous pouvez compter sur le plug-in NetApp inclus dans la version native nvme-cli package pour tous les transports NVMe-oF.

  • Pour Oracle Linux 8.2 et versions antérieures, les scripts de connexion automatique NVMe/FC natifs ne sont pas disponibles dans le paquet nvme-cli. Utilisez les scripts de connexion automatique externes fournis par le fournisseur HBA.

  • Pour Oracle Linux 8.2 et versions antérieures, l'équilibrage de charge round-robin n'est pas activé par défaut pour le multipathing NVMe. Pour activer cette fonctionnalité, passez à l'étape suivante :écrire une règle udev .

Étape 1 : Installez Oracle Linux et le logiciel NVMe, puis vérifiez votre configuration.

Utilisez la procédure suivante pour valider les versions logicielles minimales prises en charge par Oracle Linux 8.x.

Étapes
  1. Installez Oracle Linux 8.x sur le serveur. Une fois l'installation terminée, vérifiez que vous utilisez bien le noyau Oracle Linux 8.x spécifié.

    uname -r

    Exemple de version du noyau Oracle Linux :

    5.15.0-206.153.7.1.el8uek.x86_64
  2. Installer le nvme-cli groupe :

    rpm -qa|grep nvme-cli

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

    nvme-cli-1.16-9.el8.x86_64
  3. Pour Oracle Linux 8.2 et versions antérieures, ajoutez la chaîne suivante en tant que règle udev distincte pour /lib/udev/rules.d/71-nvme-iopolicy-netapp-ONTAP.rules . Cela permet un équilibrage de charge de type round-robin pour le multipath NVMe.

    cat /lib/udev/rules.d/71-nvme-iopolicy-netapp-ONTAP.rules
    Enable round-robin for NetApp ONTAP
    ACTION=="add", SUBSYSTEMS=="nvme-subsystem", ATTRS{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="round-robin"
  4. Sur l'hôte Oracle Linux 8.x, vérifiez le hostnqn chaîne à /etc/nvme/hostnqn :

    cat /etc/nvme/hostnqn

    L'exemple suivant montre un hostnqn version:

    nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
  5. Sur le système ONTAP , vérifiez que le hostnqn La chaîne correspond à hostnqn chaîne de caractères pour le sous-système correspondant sur le système de stockage ONTAP :

    vserver nvme subsystem host show -vserver vs_coexistence_LPE36002
    Montrer l'exemple
    Vserver Subsystem Priority  Host NQN
    ------- --------- --------  ------------------------------------------------
    vs_coexistence_LPE36002
            nvme
                      regular   nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
            nvme1
                      regular   nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
            nvme2
                      regular   nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
            nvme3
                      regular   nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
    4 entries were displayed.
    Remarque Si les hostnqn chaînes ne correspondent pas, utilisez la vserver modify commande pour mettre à jour la hostnqn chaîne sur votre sous-système de matrice ONTAP correspondant afin qu'elle corresponde à la hostnqn chaîne de /etc/nvme/hostnqn sur l'hôte.
  6. Pour exécuter simultanément le trafic NVMe et SCSI sur le même hôte, NetApp recommande, en option, d'utiliser le multipath NVMe intégré au noyau pour les espaces de noms ONTAP et dm-multipath pour les LUN ONTAP respectivement. Cela devrait exclure les espaces de noms ONTAP de dm-multipath et prévenir dm-multipath de la revendication des périphériques de l'espace de noms ONTAP .

    1. Ajoutez le enable_foreign réglage au /etc/multipath.conf déposer.

      cat /etc/multipath.conf
      defaults {
        enable_foreign     NONE
      }
    2. Redémarrez le multipathd démon pour appliquer le nouveau paramètre.

      systemctl restart multipathd

Étape 2 : Configurer NVMe/FC et NVMe/TCP

Configurez NVMe/FC avec des adaptateurs Broadcom/Emulex ou Marvell/QLogic, ou configurez NVMe/TCP à l'aide d'opérations de découverte et de connexion manuelles.

FC - Broadcom/Emulex

Configuration de NVMe/FC pour une carte Broadcom/Emulex

  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

      L'exemple suivant montre 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.13

    +
    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 que lpfc_enable_fc4_type est réglé 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>

    L'exemple suivant montre les identités de port :

    0x100000109bf0449c
    0x100000109bf0449d
  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
    Montrer l'exemple
    NVME Initiator Enabled
    XRI Dist lpfc0 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc0 WWPN x100000109bf0449c WWNN x200000109bf0449c DID x061500 ONLINE
    NVME RPORT       WWPN x200bd039eab31e9c WWNN x2005d039eab31e9c DID x020e06 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2006d039eab31e9c WWNN x2005d039eab31e9c DID x020a0a TARGET DISCSRVC ONLINE
    NVME Statistics
    LS: Xmt 000000002c Cmpl 000000002c Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 000000000008ffe8 Issue 000000000008ffb9 OutIO ffffffffffffffd1
            abort 0000000c noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 0000000c Err 0000000c
    NVME Initiator Enabled
    XRI Dist lpfc1 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc1 WWPN x100000109bf0449d WWNN x200000109bf0449d DID x062d00 ONLINE
    NVME RPORT       WWPN x201fd039eab31e9c WWNN x2005d039eab31e9c DID x02090a TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x200cd039eab31e9c WWNN x2005d039eab31e9c DID x020d06 TARGET DISCSRVC ONLINE
    NVME Statistics
    LS: Xmt 0000000041 Cmpl 0000000041 Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 00000000000936bf Issue 000000000009369a OutIO ffffffffffffffdb
            abort 00000016 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 00000016 Err 00000016
FC - Marvell/QLogic

Configuration du NVMe/FC pour un adaptateur Marvell/QLogic

  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 :

    QLE2772 FW:v9.15.00 DVR:v10.02.09.100-k
    QLE2772 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.

TCP

Le protocole NVMe/TCP ne prend pas en charge l'opération de connexion automatique. Au lieu de cela, vous pouvez découvrir les sous-systèmes et espaces de noms NVMe/TCP en exécutant l'opération NVMe/TCP. connect ou connect-all opérations manuellement.

  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.6.1 -a 192.168.6.24 Discovery Log Number of Records 20, Generation counter 45
    =====Discovery Log Entry 0======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  6
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:discovery
    traddr:  192.168.6.25
    sectype: none
    =====Discovery Log Entry 1======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  1
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:discovery
    traddr:  192.168.5.24
    sectype: none
    =====Discovery Log Entry 2======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  4
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:discovery
    traddr:  192.168.6.24
    sectype: none
    =====Discovery Log Entry 3======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  2
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:discovery
    traddr:  192.168.5.25
    sectype: none
    =====Discovery Log Entry 4======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  6
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:subsystem.nvme_tcp_4
    traddr:  192.168.6.25
    sectype: none
    =====Discovery Log Entry 5======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  1
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:subsystem.nvme_tcp_4
    ..........
  2. Vérifier que toutes les autres combinaisons de LIF NVMe/TCP initiator-target peuvent récupérer les données de la page du journal de découverte :

    nvme discover -t tcp -w <host-traddr> -a <traddr>
    Montrer l'exemple
    nvme discover -t tcp -w 192.168.6.1 -a 192.168.6.24
    nvme discover -t tcp -w 192.168.6.1 -a 192.168.6.25
    nvme discover -t tcp -w 192.168.5.1 -a 192.168.5.24
    nvme discover -t tcp -w 192.168.5.1 -a 192.168.5.25
  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 -l <ctrl_loss_timeout_in_seconds>
    Montrer l'exemple
    nvme	connect-all	-t	tcp	-w	192.168.5.1	-a	192.168.5.24	-l -1
    nvme	connect-all	-t	tcp	-w	192.168.5.1	-a	192.168.5.25	-l -1
    nvme	connect-all	-t	tcp	-w	192.168.6.1	-a	192.168.6.24	-l -1
    nvme	connect-all	-t	tcp	-w	192.168.6.1	-a	192.168.6.25	-l -1

NetApp recommande de configurer le ctrl-loss-tmo option à -1 afin que l'initiateur NVMe/TCP tente de se reconnecter indéfiniment en cas de perte de signal.

É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

    Vous devriez voir le résultat suivant :

    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 :

    1. 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
    2. 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
    Montrer l'exemple
    Node         SN                   Model
    ---------------------------------------------------------
    /dev/nvme0n1 814vWBNRwf9HAAAAAAAB NetApp ONTAP Controller
    /dev/nvme0n2 814vWBNRwf9HAAAAAAAB NetApp ONTAP Controller
    /dev/nvme0n3 814vWBNRwf9HAAAAAAAB NetApp ONTAP Controller
    
    Namespace Usage   Format               FW            Rev
    -----------------------------------------------------------
    1                 85.90 GB / 85.90 GB  4 KiB + 0 B   FFFFFFFF
    2                 85.90 GB / 85.90 GB  24 KiB + 0 B  FFFFFFFF
    3	                85.90 GB / 85.90 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 list-subsys /dev/nvme0n1
    Afficher un exemple NVMe/FC
    nvme-subsys0 - NQN=nqn.1992- 08.com.netapp: 4b4d82566aab11ef9ab8d039eab31e9d:subsystem.nvme\
    +-  nvme1 fc traddr=nn-0x2038d039eab31e9c:pn-0x203ad039eab31e9c host_traddr=nn-0x200034800d756a89:pn-0x210034800d756a89 live optimized
    +-  nvme2 fc traddr=nn-0x2038d039eab31e9c:pn-0x203cd039eab31e9c host_traddr=nn-0x200034800d756a88:pn-0x210034800d756a88 live optimized
    +- nvme3 fc traddr=nn-0x2038d039eab31e9c:pn-0x203ed039eab31e9c host_traddr=nn-0x200034800d756a89:pn-0x210034800d756a89 live non-optimized
    +-  nvme7 fc traddr=nn-0x2038d039eab31e9c:pn-0x2039d039eab31e9c host_traddr=nn-0x200034800d756a88:pn-0x210034800d756a88 live non-optimized
    Afficher un exemple NVMe/TCP
    nvme-subsys0 - NQN=nqn.1992- 08.com.netapp: sn.e6c438e66ac211ef9ab8d039eab31e9d:subsystem.nvme_tcp_4
    \
    +- nvme1 tcp traddr=192.168.5.25 trsvcid=4420 host_traddr=192.168.5.1 src_addr=192.168.5.1 live optimized
    +- nvme10 tcp traddr=192.168.6.24 trsvcid=4420 host_traddr=192.168.6.1 src_addr=192.168.6.1 live optimized
    +- nvme2 tcp traddr=192.168.5.24 trsvcid=4420 host_traddr=192.168.5.1 src_addr=192.168.5.1 live non-optimized
    +- nvme9 tcp traddr=192.168.6.25 trsvcid=4420 host_traddr=192.168.6.1 src_addr=192.168.6.1 live non-optimized
  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
    Montrer l'exemple
    Device         Vserver                  Namespace Path                NSID UUID                                  Size
    -------------- ------------------------ ----------------------------- ---- ------------------------------------- ---------
    /dev/nvme0n1   vs_coexistence_QLE2772   /vol/fcnvme_1_1_0/fcnvme_ns   1    159f9f88-be00-4828-aef6-197d289d4bd9  10.74GB
    /dev/nvme0n2   vs_coexistence_QLE2772   /vol/fcnvme_1_1_1/fcnvme_ns   2    2c1ef769-10c0-497d-86d7-e84811ed2df6  10.74GB
    /dev/nvme0n3   vs_coexistence_QLE2772   /vol/fcnvme_1_1_2/fcnvme_ns   3    9b49bf1a-8a08-4fa8-baf0-6ec6332ad5a4  10.74GB
    JSON
    nvme netapp ontapdevices -o json
    Montrer l'exemple
    {
      "ONTAPdevices" : [
        {
          "Device" : "/dev/nvme0n1",
          "Vserver" : "vs_coexistence_QLE2772",
          "Namespace_Path" : "/vol/fcnvme_1_1_0/fcnvme_ns",
          "NSID" : 1,
          "UUID" : "159f9f88-be00-4828-aef6-197d289d4bd9",
          "Size" : "10.74GB",
          "LBA_Data_Size" : 4096,
          "Namespace_Size" : 2621440
        },
        {
          "Device" : "/dev/nvme0n2",
          "Vserver" : "vs_coexistence_QLE2772",
          "Namespace_Path" : "/vol/fcnvme_1_1_1/fcnvme_ns",
          "NSID" : 2,
          "UUID" : "2c1ef769-10c0-497d-86d7-e84811ed2df6",
          "Size" : "10.74GB",
          "LBA_Data_Size" : 4096,
          "Namespace_Size" : 2621440
        },
        {
          "Device" : "/dev/nvme0n4",
          "Vserver" : "vs_coexistence_QLE2772",
          "Namespace_Path" : "/vol/fcnvme_1_1_3/fcnvme_ns",
          "NSID" : 4,
          "UUID" : "f3572189-2968-41bc-972a-9ee442dfaed7",
          "Size" : "10.74GB",
          "LBA_Data_Size" : 4096,
          "Namespace_Size" : 2621440
        },

Étape 5 : Activez éventuellement une taille d’E/S de 1 Mo

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 6 : passez en revue les problèmes connus

Voici les problèmes connus :

ID de bug NetApp Titre Description

"1479047"

Les hôtes Oracle Linux 8.x NVMe-oF créent des contrôleurs de découverte persistants (PDC) en double.

Toutefois, si vous exécutez Oracle Linux 8x avec un hôte NVMe-oF, un PDC dupliqué est créé à chaque exécution de nvme discover -p. Lorsque cette commande est utilisée, un seul PDC doit être créé par combinaison initiateur-cible. Toutefois, si vous utilisez Oracle Linux 8.x avec un hôte NVMe-oF, un PDC dupliqué est créé à chaque fois. nvme discover -p est exécuté. Cela entraîne une utilisation inutile des ressources, tant sur l'hôte que sur la cible.