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 SUSE Linux Enterprise Server 16 pour NVMe-oF avec le stockage ONTAP

Contributeurs netapp-pcarriga

Le serveur hôte SUSE Linux Enterprise Server 16 prend en charge les protocoles NVMe sur Fibre Channel (NVMe/FC) et NVMe sur TCP (NVMe/TCP) avec Asymmetric Namespace Access (ANA). ANA offre une fonctionnalité de multipathing équivalente à l'asymmetric logical unit access (ALUA) dans les environnements iSCSI et FCP.

Découvrez comment configurer les hôtes NVMe over Fabrics (NVMe-oF) pour SUSE Linux Enterprise Server 16. Pour plus d'informations sur l'assistance et les fonctionnalités, consultez "Prise en charge et fonctionnalités ONTAP".

NVMe-oF avec SUSE Linux Enterprise Server 16 présente les limitations connues suivantes :

  • Le nvme disconnect-all Cette commande déconnecte les systèmes de fichiers racine et de données et peut entraîner une instabilité du système. Ne pas utiliser cette commande sur des systèmes démarrant à partir d'un SAN via des espaces de noms NVMe-TCP ou NVMe-FC.

  • La prise en charge de l'utilitaire hôte sanlun de NetApp n'est pas disponible pour NVMe-oF. Vous pouvez en revanche utiliser le plug-in NetApp inclus dans le logiciel natif. nvme-cli package pour tous les transports NVMe-oF.

Étape 1 : activez éventuellement le démarrage SAN

Vous pouvez configurer votre hôte pour utiliser le démarrage SAN afin de simplifier le déploiement et d’améliorer l’évolutivité. Utilisez le"Matrice d'interopérabilité" pour vérifier que votre système d'exploitation Linux, votre adaptateur de bus hôte (HBA), votre micrologiciel HBA, votre BIOS de démarrage HBA et votre version ONTAP prennent en charge le démarrage SAN.

Étapes
  1. "Créez un espace de noms NVMe et mappez-le à l'hôte" .

  2. Activez le démarrage SAN dans le BIOS du serveur pour les ports auxquels l'espace de noms de démarrage SAN est mappé.

    Pour plus d'informations sur l'activation du BIOS HBA, reportez-vous à la documentation spécifique au fournisseur.

  3. Redémarrez l’hôte et vérifiez que le système d’exploitation est opérationnel.

Étape 2 : Installez SUSE Linux Enterprise Server et le logiciel NVMe, puis 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 SUSE Linux Enterprise Server 16 sur le serveur. Après l'installation, vérifiez que vous utilisez le noyau SUSE Linux Enterprise Server 16 spécifié :

    uname -r

    Exemple de version du noyau SUSE Linux Enterprise Server :

    6.12.0-160000.6-default
  2. Installer le nvme-cli groupe :

    rpm -qa|grep nvme-cli

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

    nvme-cli-2.11+29.g35e62868-160000.1.1.x86_64
  3. Installer le libnvme groupe :

    rpm -qa|grep libnvme

    L'exemple suivant montre un libnvme version du paquet :

    libnvme1-1.11+17.g6d55624d-160000.1.1.x86_64
  4. Sur l'hôte, vérifiez la chaîne hostnqn à /etc/nvme/hostnqn :

    cat /etc/nvme/hostnqn

    L'exemple suivant montre un hostnqn version:

    nqn.2014-08.org.nvmexpress:uuid:d3b5xxxx-c975-xxxx-8425-089xxxx1a074
  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 la matrice ONTAP :

    ::> vserver nvme subsystem host show -vserver vs_coexistence_emulex
    Montrer l'exemple
    Vserver Subsystem Priority  Host NQN
    ------- --------- --------  ------------------------------------------------
    vs_coexistence_emulex
            nvme1
                      regular   nqn.2014-08.org.nvmexpress:uuid:d3b5xxxx-c975-xxxx-8425-089xxxx1a074
            nvme10
                      regular   nqn.2014-08.org.nvmexpress:uuid:d3b5xxxx-c975-xxxx-8425-089xxxx1a074
            nvme11
                      regular   nqn.2014-08.org.nvmexpress:uuid:d3b5xxxx-c975-xxxx-8425-089xxxx1a074
            nvme12
                      regular   nqn.2014-08.org.nvmexpress:uuid:d3b5xxxx-c975-xxxx-8425-089xxxx1a074
    4 entries were displayed.
    Remarque Si le hostnqn les chaînes ne correspondent pas, utilisez le vserver modify commande pour mettre à jour le hostnqn Chaîne sur le sous-système de matrice ONTAP correspondant à hostnqn chaîne de /etc/nvme/hostnqn sur l'hôte.

Étape 3 : 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.

NVMe/FC - Broadcom/Emulex

Configuration de NVMe/FC pour une carte FC 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 :

      SN37A92079
      SN37A92079
    2. Afficher les descriptions des modèles :

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

      Vous devriez voir le résultat suivant :

    Emulex SN37A92079 32Gb 2-Port Fibre Channel Adapter
    Emulex SN37A92079 32Gb 2-Port 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.393.53, sli-4:6:d
      14.4.393.53, 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.4.0.11

    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 la sortie attendue de lpfc_enable_fc4_type est définie 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 à :

    0x100000109bdacc75
    0x100000109bdacc76
  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 x100000109bdacc75 WWNN x200000109bdacc75 DID x060100 ONLINE
    NVME RPORT       WWPN x2001d039ea951c45 WWNN x2000d039ea951c45 DID x080801 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2003d039ea951c45 WWNN x2000d039ea951c45 DID x080d01 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2024d039eab31e9c WWNN x2023d039eab31e9c DID x020a09 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2026d039eab31e9c WWNN x2023d039eab31e9c DID x020a08 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2003d039ea5cfc90 WWNN x2002d039ea5cfc90 DID x061b01 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2012d039ea5cfc90 WWNN x2011d039ea5cfc90 DID x061b05 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2005d039ea5cfc90 WWNN x2002d039ea5cfc90 DID x061201 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2014d039ea5cfc90 WWNN x2011d039ea5cfc90 DID x061205 TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 0000017242 Cmpl 0000017242 Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 0000000000378362 Issue 00000000003783c7 OutIO 0000000000000065
            abort 00000409 noxri 00000000 nondlp 0000003a qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 00000409 Err 0000040a
    
    NVME Initiator Enabled
    XRI Dist lpfc1 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc1 WWPN x100000109bdacc76 WWNN x200000109bdacc76 DID x062800 ONLINE
    NVME RPORT       WWPN x2002d039ea951c45 WWNN x2000d039ea951c45 DID x080701 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2004d039ea951c45 WWNN x2000d039ea951c45 DID x081501 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2025d039eab31e9c WWNN x2023d039eab31e9c DID x020913 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2027d039eab31e9c WWNN x2023d039eab31e9c DID x020912 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2006d039ea5cfc90 WWNN x2002d039ea5cfc90 DID x061401 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2015d039ea5cfc90 WWNN x2011d039ea5cfc90 DID x061405 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2004d039ea5cfc90 WWNN x2002d039ea5cfc90 DID x061301 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2013d039ea5cfc90 WWNN x2011d039ea5cfc90 DID x061305 TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 0000017428 Cmpl 0000017428 Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 00000000003443be Issue 000000000034442a OutIO 000000000000006c
            abort 00000491 noxri 00000000 nondlp 00000086 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 00000491 Err 00000494
NVMe/FC - Marvell/QLogic

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 :

    QLE2772 FW:v9.15.06 DVR:v10.02.09.400-k-debug
    QLE2772 FW:v9.15.06 DVR:v10.02.09.400-k-debug
  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

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.

É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 192.168.38.20 -a 192.168.38.10
    Discovery Log Number of Records 8, Generation counter 42
    =====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.f8e2af201b7211f0ac2bd039eab67a95:discovery
    traddr:  192.168.211.71
    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:  3
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.f8e2af201b7211f0ac2bd039eab67a95:discovery
    traddr:  192.168.111.71
    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:  2
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.f8e2af201b7211f0ac2bd039eab67a95:discovery
    traddr:  192.168.211.70
    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.f8e2af201b7211f0ac2bd039eab67a95:discovery
    traddr:  192.168.111.70
    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.f8e2af201b7211f0ac2bd039eab67a95:subsystem.sample_tcp_sub
    traddr:  192.168.211.71
    eflags:  none
    sectype: none
    =====Discovery Log Entry 5======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  3
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.f8e2af201b7211f0ac2bd039eab67a95:subsystem.sample_tcp_sub
    traddr:  192.168.111.71
    eflags:  none
    sectype: none
    =====Discovery Log Entry 6======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  2
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.f8e2af201b7211f0ac2bd039eab67a95:subsystem.sample_tcp_sub
    traddr:  192.168.211.70
    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.f8e2af201b7211f0ac2bd039eab67a95:subsystem.sample_tcp_sub
    traddr:  192.168.111.70
    eflags:  none
    sectype: none
    localhost:~ #
  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.38.20 -a 192.168.38.10
    nvme discover -t tcp -w 192.168.38.20 -a 192.168.38.11
    nvme discover -t tcp -w 192.168.39.20 -a 192.168.39.10
    nvme discover -t tcp -w 192.168.39.20 -a 192.168.39.11
  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.38.20	-a	192.168.38.10
    nvme	connect-all	-t	tcp	-w	192.168.38.20	-a	192.168.38.11
    nvme	connect-all	-t	tcp	-w	192.168.39.20	-a	192.168.39.10
    nvme	connect-all	-t	tcp	-w	192.168.39.20	-a	192.168.39.11

Le paramètre pour NVMe/TCP ctrl_loss_tmo timeout est automatiquement réglé sur « désactivé ». Par conséquent:

  • Il n'y a pas de limite au nombre de tentatives (nouvelle tentative indéfinie).

  • Vous n'avez pas besoin de configurer manuellement un élément spécifique ctrl_loss_tmo timeout durée lors de l'utilisation du nvme connect ou nvme connect-all commandes (option -l ).

  • Les contrôleurs NVMe/TCP ne subissent pas de dépassement de délai en cas de défaillance d'un chemin et restent connectés indéfiniment.

Étape 4 : Vous pouvez éventuellement modifier la politique d’E/S dans les règles udev.

À partir de SUSE Linux Enterprise Server 16, la iopolicy par défaut pour NVMe-oF est définie sur queue-depth. Si vous souhaitez changer la iopolicy en round-robin, modifiez le fichier de règles udev comme suit :

Étapes
  1. Ouvrez le fichier de règles udev dans un éditeur de texte avec des privilèges root :

    /usr/lib/udev/rules.d/71-nvmf-netapp.rules

    Vous devriez voir le résultat suivant :

    vi /usr/lib/udev/rules.d/71-nvmf-netapp.rules
  2. Recherchez la ligne qui définit la politique d'E/S pour le contrôleur NetApp ONTAP , comme indiqué dans l'exemple de règle suivant :

    ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="queue-depth"
  3. Modifiez la règle afin que queue-depth devienne round-robin :

    ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="round-robin"
  4. Rechargez les règles udev et appliquez les modifications :

    udevadm control --reload
    udevadm trigger --subsystem-match=nvme-subsystem
  5. Vérifiez la politique d'E/S actuelle de votre sous-système. Remplacez <subsystem>, par exemple, nvme-subsys0 .

    cat /sys/class/nvme-subsystem/<subsystem>/iopolicy

    Vous devriez voir le résultat suivant :

    round-robin
Remarque La nouvelle politique d'E/S s'applique automatiquement aux périphériques NetApp ONTAP Controller correspondants. Vous n'avez pas besoin de redémarrer.

Étape 5 : 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 6 : Vérifier les services de démarrage NVMe

Le nvmefc-boot-connections.service et nvmf-autoconnect.service services de démarrage inclus dans NVMe/FC nvme-cli les packages sont automatiquement activés au démarrage du système.

Une fois le démarrage terminé, vérifiez que le nvmefc-boot-connections.service et nvmf-autoconnect.service les services de démarrage sont activés.

Étapes
  1. Vérifiez que nvmf-autoconnect.service est activé :

    systemctl status nvmf-autoconnect.service
    Affiche un exemple de résultat
    nvmf-autoconnect.service - Connect NVMe-oF subsystems automatically during boot
      Loaded: loaded (/usr/lib/systemd/system/nvmf-autoconnect.service; enabled; vendor preset: disabled)
      Active: inactive (dead) since Thu 2024-05-25 14:55:00 IST; 11min ago
    Process: 2108 ExecStartPre=/sbin/modprobe nvme-fabrics (code=exited, status=0/SUCCESS)
    Process: 2114 ExecStart=/usr/sbin/nvme connect-all (code=exited, status=0/SUCCESS)
    Main PID: 2114 (code=exited, status=0/SUCCESS)
    
    systemd[1]: Starting Connect NVMe-oF subsystems automatically during boot...
    nvme[2114]: traddr=nn-0x201700a098fd4ca6:pn-0x201800a098fd4ca6 is already connected
    systemd[1]: nvmf-autoconnect.service: Deactivated successfully.
    systemd[1]: Finished Connect NVMe-oF subsystems automatically during boot.
  2. Vérifiez que nvmefc-boot-connections.service est activé :

    systemctl status nvmefc-boot-connections.service
    Affiche un exemple de résultat
    nvmefc-boot-connections.service - Auto-connect to subsystems on FC-NVME devices found during boot
       Loaded: loaded (/usr/lib/systemd/system/nvmefc-boot-connections.service; enabled; vendor preset: enabled)
       Active: inactive (dead) since Thu 2024-05-25 14:55:00 IST; 11min ago
     Main PID: 1647 (code=exited, status=0/SUCCESS)
    
    systemd[1]: Starting Auto-connect to subsystems on FC-NVME devices found during boot...
    systemd[1]: nvmefc-boot-connections.service: Succeeded.
    systemd[1]: Finished Auto-connect to subsystems on FC-NVME devices found during boot.

Étape 7 : 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 (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 queue-depth) pour les espaces de noms ONTAP respectifs se reflètent correctement sur 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 :

    queue-depth
    queue-depth
  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/nvme7n1 81Ix2BVuekWcAAAAAAAB	NetApp ONTAP Controller
    
    Namespace Usage    Format             FW             Rev
    -----            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 list-subsys /dev/<controller_ID>
    Remarque À partir d'ONTAP 9.16.1, NVMe/FC et NVMe/TCP signalent tous les chemins optimisés sur les systèmes ASA r2.
    NVMe/FC

    Les exemples de sorties suivants montrent un espace de noms hébergé sur un contrôleur ONTAP à deux nœuds pour un système AFF, FAS, ASA ou ASA r2 avec NVMe/FC.

    Afficher un exemple de résultat pour AFF, FAS ou ASA
     nvme-subsys114 - NQN=nqn.1992-08.com.netapp:sn.9e30b9760a4911f08c87d039eab67a95:subsystem.sles_161_27
                     hostnqn=nqn.2014-08.org.nvmexpress:uuid:f651xxxx-3133-xxxx-bbff-7edxxxxf123f iopolicy=round-robin\
    +- nvme114 fc traddr=nn-0x234ed039ea359e4a:pn-0x2360d039ea359e4a,host_traddr=nn-0x20000090fae0ec88:pn-0x10000090fae0ec88 live optimized
    +- nvme115 fc traddr=nn-0x234ed039ea359e4a:pn-0x2362d039ea359e4a,host_traddr=nn-0x20000090fae0ec88:pn-0x10000090fae0ec88 live non-optimized
    +- nvme116 fc traddr=nn-0x234ed039ea359e4a:pn-0x2361d039ea359e4a,host_traddr=nn-0x20000090fae0ec89:pn-0x10000090fae0ec89 live optimized
    +- nvme117 fc traddr=nn-0x234ed039ea359e4a:pn-0x2363d039ea359e4a,host_traddr=nn-0x20000090fae0ec89:pn-0x10000090fae0ec89 live non-optimized
    Afficher un exemple de sortie pour ASA r2
    nvme-subsys96 - NQN=nqn.1992-08.om.netapp:sn.b351b2b6777b11f0b3c2d039ea5cfc91:subsystem.nvme24
                    hostnqn=nqn.2014-08.org.nvmexpress:uuid:d3b5xxxx-c975-xxxx-8425-089xxxx1a074
    \
     +- nvme203 fc traddr=nn-0x2011d039ea5cfc90:pn-0x2015d039ea5cfc90,host_traddr=nn-0x200000109bdacc76:pn-0x100000109bdacc76 live optimized
     +- nvme25 fc traddr=nn-0x2011d039ea5cfc90:pn-0x2014d039ea5cfc90,host_traddr=nn-0x200000109bdacc75:pn-0x100000109bdacc75 live optimized
     +- nvme30 fc traddr=nn-0x2011d039ea5cfc90:pn-0x2012d039ea5cfc90,host_traddr=nn-0x200000109bdacc75:pn-0x100000109bdacc75 live optimized
     +- nvme32 fc traddr=nn-0x2011d039ea5cfc90:pn-0x2013d039ea5cfc90,host_traddr=nn-0x200000109bdacc76:pn-0x100000109bdacc76 live optimized
    NVMe/TCP

    Les exemples de résultats suivants montrent un espace de noms hébergé sur un contrôleur ONTAP à deux nœuds pour les systèmes AFF, FAS, ASA ou ASA r2 avec NVMe/TCP.

    Afficher un exemple de résultat pour AFF, FAS ou ASA
    nvme-subsys9 - NQN=nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:subsystem.nvme10
                   hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0035-xxxx-804b-b7cxxxx44d33
    \
     +- nvme105 tcp traddr=192.168.39.10,trsvcid=4420,host_traddr=192.168.39.20,src_addr=192.168.39.20 live optimized
     +- nvme153 tcp traddr=192.168.39.11,trsvcid=4420,host_traddr=192.168.39.20,src_addr=192.168.39.20 live non-optimized
     +- nvme57 tcp traddr=192.168.38.11,trsvcid=4420,host_traddr=192.168.38.20,src_addr=192.168.38.20 live non-optimized
     +- nvme9 tcp traddr=192.168.38.10,trsvcid=4420,host_traddr=192.168.38.20,src_addr=192.168.38.20 live optimized
    Afficher un exemple de sortie pour ASA r2
    nvme-subsys4 - NQN=nqn.1992-08.com.netapp:sn.17e32b6e8c7f11f09545d039eac03c33:subsystem.Bidirectional_DHCP_1_0
                   hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0054-xxxx-8039-c3cxxxx23034
    \                                                                                                                                                                               +- nvme4 tcp traddr=192.168.20.28,trsvcid=4420,host_traddr=192.168.20.21,src_addr=192.168.20.21 live optimized
    +- nvme5 tcp traddr=192.168.20.29,trsvcid=4420,host_traddr=192.168.20.21,src_addr=192.168.20.21 live optimized
    +- nvme6 tcp traddr=192.168.21.28,trsvcid=4420,host_traddr=192.168.21.21,src_addr=192.168.21.21 live optimized
    +- nvme7 tcp traddr=192.168.21.29,trsvcid=4420,host_traddr=192.168.21.21,src_addr=192.168.21.21 live 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_emulex     ns1               1    79510f05-7784-11f0-b3c2-d039ea5cfc91   21.47GB
    JSON
    nvme netapp ontapdevices -o json
    Montrer l'exemple
    {
    "ONTAPdevices":[{
          "Device":"/dev/nvme0n1",
          "Vserver":"vs_coexistence_emulex",
          "Namespace_Path":"ns1",
          "NSID":1,
          "UUID":"79510f05-7784-11f0-b3c2-d039ea5cfc91",
          "Size":"21.47GB",
          "LBA_Data_Size":4096,
          "Namespace_Size":5242880
        }  ]
    }

Étape 8 : Créer un contrôleur de découverte persistant

Vous pouvez créer un contrôleur de découverte persistant (PDC) pour un hôte SUSE Linux Enterprise Server 16. Un PDC est nécessaire pour détecter automatiquement une opération d'ajout ou de suppression de sous-système NVMe et les changements apportés aux données de la page de journal de découverte.

Étapes
  1. Vérifier que les données de la page du journal de découverte sont disponibles et peuvent être récupérées via la combinaison port initiateur et LIF cible :

    nvme discover -t <trtype> -w <host-traddr> -a <traddr>
    Affiche un exemple de résultat
    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:  3
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:discovery
    traddr:  192.168.39.10
    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.9927e165694211f0b4f4d039eab31e9d:discovery
    traddr:  192.168.38.10
    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:  4
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:discovery
    traddr:  192.168.39.11
    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:  2
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:discovery
    traddr:  192.168.38.11
    eflags:  explicit discovery connections, duplicate discovery information
    sectype: none
    =====Discovery Log Entry 4======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  3
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:subsystem.nvme1
    traddr:  192.168.39.10
    eflags:  none
    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.9927e165694211f0b4f4d039eab31e9d:subsystem.nvme1
    traddr:  192.168.38.10
    eflags:  none
    sectype: none
    =====Discovery Log Entry 6======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  4
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:subsystem.nvme1
    traddr:  192.168.39.11
    eflags:  none
    sectype: none
    =====Discovery Log Entry 7======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  2
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:subsystem.nvme1
    traddr:  192.168.38.11
    eflags:  none
    sectype: none
  2. Créer un PDC pour le sous-système de découverte :

    nvme discover -t <trtype> -w <host-traddr> -a <traddr> -p

    Vous devriez voir le résultat suivant :

    nvme discover -t tcp -w 192.168.39.20 -a 192.168.39.11 -p
  3. À partir du contrôleur ONTAP, vérifier que le PDC a été créé :

    vserver nvme show-discovery-controller -instance -vserver <vserver_name>
    Affiche un exemple de résultat
    vserver nvme show-discovery-controller -instance -vserver vs_tcp_sles16
    Vserver Name: vs_tcp_sles16
                   Controller ID: 0180h
         Discovery Subsystem NQN: nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:discovery
               Logical Interface: lif3
                            Node: A400-12-171
                        Host NQN: nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0035-xxxx-804b-b7cxxxx44d33
              Transport Protocol: nvme-tcp
     Initiator Transport Address: 192.168.39.20
    Transport Service Identifier: 8009
                 Host Identifier: 4c4cxxxx0035xxxx804bb7cxxxx44d33
               Admin Queue Depth: 32
           Header Digest Enabled: false
             Data Digest Enabled: false
       Keep-Alive Timeout (msec): 30000

Étape 9 : Configurer une authentification sécurisée en bande

L'authentification sécurisée en bande est prise en charge via NVMe/TCP entre un hôte SUSE Linux Enterprise Server 16 et un contrôleur ONTAP.

Chaque hôte ou contrôleur doit être associé à un DH-HMAC-CHAP clé pour configurer une authentification sécurisée. Une clé DH-HMAC-CHAP est une combinaison du NQN de l'hôte ou du contrôleur NVMe et d'un secret d'authentification configuré par l'administrateur. Pour authentifier son homologue, un hôte ou un contrôleur NVMe doit reconnaître la clé associée à cet homologue.

Étapes

Configurez une authentification intrabande sécurisée à l’aide de l’interface de ligne de commande ou d’un fichier de configuration JSON. Si vous devez spécifier différentes clés dhchap pour différents sous-systèmes, vous devez utiliser un fichier JSON de configuration.

CLI

Configurez l'authentification intrabande sécurisée à l'aide de l'interface de ligne de commande.

  1. Obtenir le NQN hôte :

    cat /etc/nvme/hostnqn
  2. Générer la clé dhchap pour l'hôte.

    Le résultat suivant décrit les gen-dhchap-key paramètres de commande :

    nvme gen-dhchap-key -s optional_secret -l key_length {32|48|64} -m HMAC_function {0|1|2|3} -n host_nqn
    •	-s secret key in hexadecimal characters to be used to initialize the host key
    •	-l length of the resulting key in bytes
    •	-m HMAC function to use for key transformation
    0 = none, 1- SHA-256, 2 = SHA-384, 3=SHA-512
    •	-n host NQN to use for key transformation

    Dans l'exemple suivant, une clé dhchap aléatoire avec HMAC définie sur 3 (SHA-512) est générée.

    nvme gen-dhchap-key -m 3 -n nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0035-xxxx-804b-b7cxxxx44d33
    DHHC-1:03:ohdxI1yIS8gBLwIOubcwl57rXcozYuRgBsoWaBvxEvpDlQHn/7dQ4JjFGwmhgwdJWmVoripbWbMJy5eMAbCahN4hhYU=:
  3. Sur le contrôleur ONTAP, ajoutez l'hôte et spécifiez les deux clés dhchap :

    vserver nvme subsystem host add -vserver <svm_name> -subsystem <subsystem> -host-nqn <host_nqn> -dhchap-host-secret <authentication_host_secret> -dhchap-controller-secret <authentication_controller_secret> -dhchap-hash-function {sha-256|sha-512} -dhchap-group {none|2048-bit|3072-bit|4096-bit|6144-bit|8192-bit}
  4. Un hôte prend en charge deux types de méthodes d'authentification, unidirectionnelles et bidirectionnelles. Sur l'hôte, connectez-vous au contrôleur ONTAP et spécifiez des clés dhchap en fonction de la méthode d'authentification choisie :

    nvme connect -t tcp -w <host-traddr> -a <tr-addr> -n <host_nqn> -S <authentication_host_secret> -C <authentication_controller_secret>
  5. Valider le nvme connect authentication en vérifiant les clés dhchap de l'hôte et du contrôleur :

    1. Vérifiez les clés dhchap hôte :

      cat /sys/class/nvme-subsystem/<nvme-subsysX>/nvme*/dhchap_secret
      Affiche un exemple de sortie pour une configuration unidirectionnelle
      # cat /sys/class/nvme-subsystem/nvme-subsys1/nvme*/dhchap_secret
      DHHC-1:01:wkwAKk8r9Ip7qECKt7V5aIo/7Y1CH7DWkUfLfMxmseg39DFb:
      DHHC-1:01:wkwAKk8r9Ip7qECKt7V5aIo/7Y1CH7DWkUfLfMxmseg39DFb:
      DHHC-1:01:wkwAKk8r9Ip7qECKt7V5aIo/7Y1CH7DWkUfLfMxmseg39DFb:
      DHHC-1:01:wkwAKk8r9Ip7qECKt7V5aIo/7Y1CH7DWkUfLfMxmseg39DFb:
    2. Vérifiez les clés dhchap du contrôleur :

      cat /sys/class/nvme-subsystem/<nvme-subsysX>/nvme*/dhchap_ctrl_secret
      Affiche un exemple de sortie pour une configuration bidirectionnelle
      # cat /sys/class/nvme-subsystem/nvme-subsys6/nvme*/dhchap_ctrl_secret
      DHHC-1:03:ohdxI1yIS8gBLwIOubcwl57rXcozYuRgBsoWaBvxEvpDlQHn/7dQ4JjFGwmhgwdJWmVoripbWbMJy5eMAbCahN4hhYU=:
      DHHC-1:03:ohdxI1yIS8gBLwIOubcwl57rXcozYuRgBsoWaBvxEvpDlQHn/7dQ4JjFGwmhgwdJWmVoripbWbMJy5eMAbCahN4hhYU=:
      DHHC-1:03:ohdxI1yIS8gBLwIOubcwl57rXcozYuRgBsoWaBvxEvpDlQHn/7dQ4JjFGwmhgwdJWmVoripbWbMJy5eMAbCahN4hhYU=:
      DHHC-1:03:ohdxI1yIS8gBLwIOubcwl57rXcozYuRgBsoWaBvxEvpDlQHn/7dQ4JjFGwmhgwdJWmVoripbWbMJy5eMAbCahN4hhYU=:
JSON

Lorsque plusieurs sous-systèmes NVMe sont disponibles dans la configuration du contrôleur ONTAP, vous pouvez utiliser le /etc/nvme/config.json fichier avec la nvme connect-all commande.

Utilisez le -o option pour générer le fichier JSON. Reportez-vous aux pages de manuel NVMe connect-all pour plus d'options de syntaxe.

  1. Configurez le fichier JSON :

    Affiche un exemple de résultat
    # cat /etc/nvme/config.json
    [
      {
        "hostnqn":"nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0035-xxxx-804b-b7cxxxx44d33",
        "hostid":"4c4cxxxx-0035-xxxx-804b-b7cxxxx44d33",
        "dhchap_key":"DHHC-1:01:wkwAKk8r9Ip7qECKt7V5aIo/7Y1CH7DWkUfLfMxmseg39DFb:",
        "subsystems":[
          {
            "nqn":"nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:subsystem.inband_bidirectional",
            "ports":[
              {
                "transport":"tcp",
                "traddr":"192.168.38.10",
                "host_traddr":"192.168.38.20",
                "trsvcid":"4420",
                "dhchap_ctrl_key":"DHHC-1:03:ohdxI1yIS8gBLwIOubcwl57rXcozYuRgBsoWaBvxEvpDlQHn/7dQ4JjFGwmhgwdJWmVoripbWbMJy5eMAbCahN4hhYU=:"
              },
              {
                "transport":"tcp",
                "traddr":"192.168.38.11",
                "host_traddr":"192.168.38.20",
                "trsvcid":"4420",
                "dhchap_ctrl_key":"DHHC-1:03:ohdxI1yIS8gBLwIOubcwl57rXcozYuRgBsoWaBvxEvpDlQHn/7dQ4JjFGwmhgwdJWmVoripbWbMJy5eMAbCahN4hhYU=:"
              },
              {
                "transport":"tcp",
                "traddr":"192.168.39.11",
                "host_traddr":"192.168.39.20",
                "trsvcid":"4420",
                "dhchap_ctrl_key":"DHHC-1:03:ohdxI1yIS8gBLwIOubcwl57rXcozYuRgBsoWaBvxEvpDlQHn/7dQ4JjFGwmhgwdJWmVoripbWbMJy5eMAbCahN4hhYU=:"
              },
              {
                "transport":"tcp",
                "traddr":"192.168.39.10",
                "host_traddr":"192.168.39.20",
                "trsvcid":"4420",
                "dhchap_ctrl_key":"DHHC-1:03:ohdxI1yIS8gBLwIOubcwl57rXcozYuRgBsoWaBvxEvpDlQHn/7dQ4JjFGwmhgwdJWmVoripbWbMJy5eMAbCahN4hhYU=:"
              }
            ]
          }
        ]
      }
    ]
    Remarque Dans l'exemple suivant, dhchap_key correspond à dhchap_secret et dhchap_ctrl_key correspond à dhchap_ctrl_secret .
  2. Connectez-vous au contrôleur ONTAP à l'aide du fichier JSON de configuration :

    nvme connect-all -J /etc/nvme/config.json
    Affiche un exemple de résultat
    traddr=192.168.38.10is already connected
    traddr=192.168.39.10 is already connected
    traddr=192.168.38.11 is already connected
    traddr=192.168.39.11 is already connected
    traddr=192.168.38.10is already connected
    traddr=192.168.39.10 is already connected
    traddr=192.168.38.11 is already connected
    traddr=192.168.39.11 is already connected
    traddr=192.168.38.10is already connected
    traddr=192.168.39.10 is already connected
    traddr=192.168.38.11 is already connected
    traddr=192.168.39.11 is already connected
  3. Vérifiez que les secrets dhchap ont été activés pour les contrôleurs respectifs de chaque sous-système :

    1. Vérifiez les clés dhchap hôte :

      cat /sys/class/nvme-subsystem/nvme-subsys0/nvme0/dhchap_secret

      L'exemple suivant montre une clé dhchap :

      DHHC-1:01:wkwAKk8r9Ip7qECKt7V5aIo/7Y1CH7DWkUfLfMxmseg39DFb:
    2. Vérifiez les clés dhchap du contrôleur :

      cat /sys/class/nvme-subsystem/nvme-subsys0/nvme0/dhchap_ctrl_secret

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

    DHHC-1:03:ohdxI1yIS8gBLwIOubcwl57rXcozYuRgBsoWaBvxEvpDlQHn/7dQ4JjFGwmhgwdJWmVoripbWbMJy5eMAbCahN4hhYU=:

Étape 10 : Configurer la sécurité de la couche de transport

Le protocole TLS (Transport Layer Security) assure un chiffrement de bout en bout sécurisé pour les connexions NVMe entre les hôtes NVMe-oF et une baie ONTAP . Vous pouvez configurer TLS 1.3 à l'aide de l'interface de ligne de commande (CLI) et d'une clé pré-partagée (PSK) configurée.

Remarque Effectuez les étapes suivantes sur l'hôte SUSE Linux Enterprise Server, sauf indication contraire précisant que vous devez effectuer une étape sur le contrôleur ONTAP .
Étapes
  1. Vérifiez que vous disposez des éléments suivants ktls-utils , openssl , et libopenssl paquets installés sur l'hôte :

    1. Vérifiez le ktls-utils :

      rpm -qa | grep ktls

      Vous devriez voir la sortie suivante affichée :

    ktls-utils-0.10+33.g311d943-160000.2.2.x86_64
    1. Vérifiez les packages SSL :

      rpm -qa | grep ssl
      Affiche un exemple de résultat
      libopenssl3-3.5.0-160000.3.2.x86_64
      openssl-3.5.0-160000.2.2.noarch
      openssl-3-3.5.0-160000.3.2.x86_64
      libopenssl3-x86-64-v3-3.5.0-160000.3.2.x86_64
  2. Vérifiez que vous disposez de la configuration correcte pour /etc/tlshd.conf:

    cat /etc/tlshd.conf
    Affiche un exemple de résultat
    [debug]
    loglevel=0
    tls=0
    nl=0
    
    [authenticate]
    #keyrings= <keyring>;<keyring>;<keyring>
    
    [authenticate.client]
    #x509.truststore= <pathname>
    #x509.certificate= <pathname>
    #x509.private_key= <pathname>
    
    [authenticate.server]
    #x509.truststore= <pathname>
    #x509.certificate= <pathname>
    #x509.private_key= <pathname>
  3. Activer tlshd pour démarrer au démarrage du système :

    systemctl enable tlshd
  4. Vérifiez que le tlshd démon est en cours d'exécution :

    systemctl status tlshd
    Affiche un exemple de résultat
    tlshd.service - Handshake service for kernel TLS consumers
       Loaded: loaded (/usr/lib/systemd/system/tlshd.service; enabled; preset: disabled)
       Active: active (running) since Wed 2024-08-21 15:46:53 IST; 4h 57min ago
         Docs: man:tlshd(8)
    Main PID: 961 (tlshd)
       Tasks: 1
         CPU: 46ms
       CGroup: /system.slice/tlshd.service
           └─961 /usr/sbin/tlshd
    Aug 21 15:46:54 RX2530-M4-17-153 tlshd[961]: Built from ktls-utils 0.11-dev on Mar 21 2024 12:00:00
  5. Générez le TLS PSK en utilisant nvme gen-tls-key :

    1. Vérifiez l'hôte :

      cat /etc/nvme/hostnqn

      Vous devriez voir le résultat suivant :

      nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0035-xxxx-804b-b7cxxxx44d33
    2. Vérifiez la clé :

      nvme gen-tls-key --hmac=1 --identity=1 --subsysnqn= nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:subsystem.nvme1

      Vous devriez voir le résultat suivant :

    NVMeTLSkey-1:01:C50ExxxxuOp8xxxxE9EuWjbxxxxhmfoHx4XTqTJUmydf0gIj:
  6. Sur le contrôleur ONTAP, ajoutez le protocole TLS PSK au sous-système ONTAP :

    Affiche un exemple de résultat
    nvme subsystem host add -vserver vs_iscsi_tcp -subsystem nvme1 -host-nqn nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0035-xxxx-804b-b2cxxxx44d33 -tls-configured-psk NVMeTLSkey-1:01:C50ExxxxuOp8xxxxE9EuWjbxxxxhmfoHx4XTqTJUmydf0gIj:
  7. Insérez le TLS PSK dans le porte-clés du noyau hôte :

    nvme check-tls-key --identity=1 --subsysnqn=nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:subsystem.nvme1 --keydata=NVMeTLSkey-1:01:C50ExxxxuOp8xxxxE9EuWjbxxxxhmfoHx4XTqTJUmydf0gIj: --insert

    Vous devriez voir la clé TLS suivante :

    Inserted TLS key 069f56bb
    Remarque Le PSK montre comme NVMe1R01 parce qu'il utilise identity v1 à partir de l'algorithme de négociation TLS. Identity v1 est la seule version prise en charge par ONTAP.
  8. Vérifiez que TLS PSK est correctement inséré :

    cat /proc/keys | grep NVMe
    Affiche un exemple de résultat
    069f56bb I-Q-- 5 perm 3b010000 0 0 psk NVMe1R01 nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0035-xxxx-804b-b2cxxxx44d33 nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:subsystem.nvme1 oYVLelmiOwnvDjXKBmrnIgGVpFIBDJtc4hmQXE/36Sw=: 32
  9. Connectez-vous au sous-système ONTAP à l'aide du protocole TLS PSK inséré :

    1. Vérifiez le TLS PSK :

      nvme connect -t tcp -w 192.168.38.20 -a 192.168.38.10  -n nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:subsystem.nvme1 --tls_key=0x069f56bb –tls

      Vous devriez voir le résultat suivant :

    connecting to device: nvme0
    1. Vérifiez la liste-sous-système :

      nvme list-subsys
      Affiche un exemple de résultat
      nvme-subsys0 - NQN=nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:subsystem.nvme1
                     hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0035-xxxx-804b-b2cxxxx44d33
      **
       +- nvme0 tcp traddr=192.168.38.10,trsvcid=4420,host_traddr=192.168.38.20,src_addr=192.168.38.20 live
    2. Exportez la TLS PSK depuis le trousseau de clés du noyau. Cela garantit que la clé persiste lors d'un redémarrage de l'hôte :

      # nvme tls --export --keyfile /etc/nvme/tls-keys
  10. Ajoutez la cible et vérifiez la connexion TLS au sous-système ONTAP spécifié :

    nvme subsystem controller show -vserver vs_tcp_sles16 -subsystem nvme1 -instance
    Affiche un exemple de résultat
    (vserver nvme subsystem controller show)
                           Vserver Name: vs_tcp_sles16
                              Subsystem: nvme1
                          Controller ID: 0040h
                      Logical Interface: lif1
                                   Node: A400-12-171
                               Host NQN: nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0035-xxxx-804b-b2cxxxx44d33
                     Transport Protocol: nvme-tcp
            Initiator Transport Address: 192.168.38.20
                        Host Identifier: 4c4cxxxx0035xxxx804bb2cxxxx44d33
                   Number of I/O Queues: 2
                       I/O Queue Depths: 128, 128
                      Admin Queue Depth: 32
                  Max I/O Size in Bytes: 1048576
              Keep-Alive Timeout (msec): 5000
                         Subsystem UUID: 62203cfd-826a-11f0-966e-d039eab31e9d
                  Header Digest Enabled: false
                    Data Digest Enabled: false
           Authentication Hash Function: sha-256
    Authentication Diffie-Hellman Group: 3072-bit
                    Authentication Mode: unidirectional
           Transport Service Identifier: 4420
                           TLS Key Type: configured
                       TLS PSK Identity: NVMe1R01 nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0035-xxxx-804b-b2cxxxx44d33 nqn.1992-08.com.netapp:sn.9927e165694211f0b4f4d039eab31e9d:subsystem.nvme1 oYVLelmiOwnvDjXKBmrnIgGVpFIBDJtc4hmQXE/36Sw=
                             TLS Cipher: TLS-AES-128-GCM-SHA256

Étape 11 : passez en revue les problèmes connus

Il n'y a pas de problème connu.