Skip to main content
ONTAP SAN Host Utilities
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Konfigurieren Sie Oracle Linux 10.x mit NVMe-oF für ONTAP Storage

Beitragende netapp-camdenc netapp-pcarriga
Änderungen vorschlagen

Oracle Linux-Hosts unterstützen die NVMe over Fibre Channel (NVMe/FC)- und NVMe over TCP (NVMe/TCP)-Protokolle mit Asymmetric Namespace Access (ANA). ANA bietet Multipathing-Funktionalität, die dem asymmetrischen logischen Einheitenzugriff (ALUA) in iSCSI- und FCP-Umgebungen entspricht.

Erfahren Sie, wie Sie NVMe over Fabrics (NVMe-oF)-Hosts für Oracle Linux 10.x konfigurieren. Weitere Informationen zu Support und Funktionen finden Sie unter "Oracle Linux ONTAP Unterstützung und -Funktionen".

NVMe-oF mit Oracle Linux 10.x weist folgende bekannte Einschränkung auf:

  • Der nvme disconnect-all Dieser Befehl trennt sowohl das Root- als auch das Datendateisystem und kann zu Systeminstabilität führen. Diese Meldung sollte nicht auf Systemen ausgegeben werden, die von SAN über NVMe-TCP- oder NVMe-FC-Namespaces booten.

Schritt 1: Aktivieren Sie optional den SAN-Bootvorgang

Sie können Ihren Host für die Verwendung von SAN-Boot konfigurieren, um die Bereitstellung zu vereinfachen und die Skalierbarkeit zu verbessern. Verwenden Sie die"Interoperabilitäts-Matrix-Tool" um zu überprüfen, ob Ihr Linux-Betriebssystem, Ihr Hostbusadapter (HBA), Ihre HBA-Firmware, Ihr HBA-Boot-BIOS und ONTAP -Version das SAN-Booten unterstützen.

Schritte
  1. "Erstellen Sie einen NVMe-Namespace und ordnen Sie ihn dem Host zu" .

  2. Aktivieren Sie das SAN-Booten im Server-BIOS für die Ports, denen der SAN-Boot-Namespace zugeordnet ist.

    Informationen zum Aktivieren des HBA-BIOS finden Sie in der anbieterspezifischen Dokumentation.

  3. Starten Sie den Host neu und überprüfen Sie, ob das Betriebssystem läuft.

Schritt 2: Installieren Sie die Oracle Linux- und NVMe-Software und überprüfen Sie Ihre Konfiguration.

Verwenden Sie das folgende Verfahren, um die minimal unterstützten Oracle Linux 10.x Softwareversionen zu validieren.

Schritte
  1. Installieren Sie Oracle Linux 10.x auf dem Server. Überprüfen Sie nach Abschluss der Installation, ob der angegebene Oracle Linux 10.x-Kernel ausgeführt wird.

    uname -r

    Beispiel einer Oracle Linux-Kernelversion:

    6.12.0-100.28.2.el10uek.x86_64
  2. Installieren Sie den nvme-cli Paket:

    rpm -qa|grep nvme-cli

    Das folgende Beispiel zeigt eine nvme-cli Paketversion:

    nvme-cli-2.13-2.0.1.el10.x86_64
  3. Installieren Sie den libnvme Paket:

    rpm -qa|grep libnvme

    Das folgende Beispiel zeigt eine libnvme Paketversion:

    libnvme-1.13-1.el10.x86_64
  4. Überprüfen Sie auf dem Oracle Linux 10.x-Host die hostnqn Zeichenkette bei /etc/nvme/hostnqn:

    cat /etc/nvme/hostnqn

    Das folgende Beispiel zeigt eine hostnqn Version:

    nqn.2014-08.org.nvmexpress:uuid:8397xxxx-30f0-xxxx-850f-7edxxxxf0cc7
  5. Überprüfen Sie im ONTAP System, ob hostnqn Die Zeichenkette stimmt mit der hostnqn Zeichenkette für das entsprechende Subsystem im ONTAP -Speichersystem:

    vserver nvme subsystem host show -vserver vs_coexistence_emulex
    Beispiel anzeigen
    Vserver Subsystem Priority  Host NQN
    ------- --------- --------
    -------------------------------------------------------------------vs_coexistence_emulex
    nvme1
    regular   nqn.2014-08.org.nvmexpress:uuid:8397xxxx-30f0-xxxx-850f-7edxxxxf0cc7
    nvme2
    regular    nqn.2014-08.org.nvmexpress:uuid:8397xxxx-30f0-xxxx-850f-7edxxxxf0cc7
    Hinweis Wenn die hostnqn Zeichenfolgen nicht übereinstimmen, können Sie den Befehl verwenden, vserver modify um die Zeichenfolge auf dem entsprechenden ONTAP-Array-Subsystem zu aktualisieren hostnqn, damit sie mit der hostnqn Zeichenfolge /etc/nvme/hostnqn auf dem Host übereinstimmt.

Schritt 3: Konfigurieren Sie NVMe/FC und NVMe/TCP

Konfigurieren Sie NVMe/FC mit Broadcom/Emulex- oder Marvell/QLogic-Adaptern oder konfigurieren Sie NVMe/TCP mithilfe manueller Erkennungs- und Verbindungsvorgänge.

NVMe/FC - Broadcom/Emulex

Konfigurieren Sie NVMe/FC für einen Broadcom/Emulex-Adapter.

Schritte
  1. Stellen Sie sicher, dass Sie das unterstützte Adaptermodell verwenden:

    1. Zeigen Sie die Modellnamen an:

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

      Die folgende Ausgabe sollte angezeigt werden:

      LPe36002-M64-D
      LPe36002-M64-D
    2. Zeigen Sie die Modellbeschreibungen an:

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

      Sie sollten eine Ausgabe ähnlich dem folgenden Beispiel sehen:

    Emulex LPe36002-M64-D 2-Port 64Gb Fibre Channel Adapter
    Emulex LPe36002-M64-D 2-Port 64Gb Fibre Channel Adapter
  2. Vergewissern Sie sich, dass Sie das empfohlene Broadcom verwenden lpfc Firmware und Inbox-Treiber:

    1. Anzeige der Firmware-Version:

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

      Das folgende Beispiel zeigt Firmware-Versionen:

      14.4.393.25, sli-4:6:d
      14.4.393.25, sli-4:6:d
    2. Zeigen Sie die Posteingangstreiberversion an:

      cat /sys/module/lpfc/version

      Das folgende Beispiel zeigt eine Treiberversion:

    0:14.4.0.2

    +
    Die aktuelle Liste der unterstützten Adaptertreiber- und Firmware-Versionen finden Sie im "Interoperabilitäts-Matrix-Tool".

  3. Verifizieren Sie das lpfc_enable_fc4_type Ist auf festgelegt 3:

    cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type
  4. Vergewissern Sie sich, dass Sie Ihre Initiator-Ports anzeigen können:

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

    Das folgende Beispiel zeigt Portidentitäten:

    0x100000620b3c089c
    0x100000620b3c089d
  5. Überprüfen Sie, ob Ihre Initiator-Ports online sind:

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

    Die folgende Ausgabe sollte angezeigt werden:

    Online
    Online
  6. Vergewissern Sie sich, dass die NVMe/FC-Initiator-Ports aktiviert sind und die Ziel-Ports sichtbar sind:

    cat /sys/class/scsi_host/host*/nvme_info
    Beispiel anzeigen
    NVME Initiator Enabled
    XRI Dist lpfc0 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc0 WWPN x100000620b3c089c WWNN x200000620b3c089c DID x081300 ONLINE
    NVME RPORT       WWPN x2001d039eab0dadc WWNN x2000d039eab0dadc DID x080107 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2221d039eab0dadc WWNN x2220d039eab0dadc DID x080105 TARGET DISCSRVC ONLINE
    
    
    NVME Statistics
    LS: Xmt 000000713b Cmpl 000000713b Abort 00000001
    LS XMIT: Err 00000000  CMPL: xb 00000001 Err 00000001
    Total FCP Cmpl 00000000a513b8bb Issue 00000000a4f2485c OutIO ffffffffffde8fa1
            abort 00006935 noxri 000004f0 nondlp 0002e119 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 0000693d Err 0009cb89
    
    
    NVME Initiator Enabled
    XRI Dist lpfc1 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc1 WWPN x100000620b3c089d WWNN x200000620b3c089d DID x081900 ONLINE
    NVME RPORT       WWPN x2002d039eab0dadc WWNN x2000d039eab0dadc DID x080207 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2222d039eab0dadc WWNN x2220d039eab0dadc DID x080205 TARGET DISCSRVC ONLINE
    
    
    NVME Statistics
    LS: Xmt 0000007171 Cmpl 0000007171 Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 00000000a509cecc Issue 00000000a4e7ed6c OutIO ffffffffffde1ea0
            abort 000069c5 noxri 00000406 nondlp 000301e6 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 000069d6 Err 0009cbcds
NVMe/FC - Marvell/QLogic

Konfigurieren Sie NVMe/FC für einen Marvell/QLogic-Adapter.

Schritte
  1. Vergewissern Sie sich, dass der unterstützte Adaptertreiber und die unterstützten Firmware-Versionen ausgeführt werden:

    cat /sys/class/fc_host/host*/symbolic_name

    Das folgende Beispiel zeigt Treiber- und Firmwareversionen:

    QLE2772 FW:v9.15.03 DVR:v10.02.09.300-k
  2. Verifizieren Sie das ql2xnvmeenable Ist festgelegt. Dadurch kann der Marvell Adapter als NVMe/FC-Initiator verwendet werden:

    cat /sys/module/qla2xxx/parameters/ql2xnvmeenable

    Die erwartete Ausgabe ist 1.

NVMe/TCP

Das NVMe/TCP-Protokoll unterstützt den automatischen Verbindungsvorgang nicht. Stattdessen können Sie die NVMe/TCP-Subsysteme und Namespaces ermitteln, indem Sie den NVMe/TCP connect oder connect-all Vorgänge manuell ausführen.

Schritte
  1. Vergewissern Sie sich, dass der Initiator-Port die Daten der Erkennungsprotokollseite über die unterstützten NVMe/TCP-LIFs abrufen kann:

    nvme discover -t tcp -w host-traddr -a traddr
    Beispiel anzeigen
    nvme discover -t tcp -w 192.168.41.7 -a 192.168.41.10
    =====Discovery Log Entry 0======
    trtype:  tcp
    adrfam:  ipv4
    subtype: current discovery subsystem
    treq:    not specified
    portid:  8
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.064a9b19b3ee11f09dcad039eabac370:discovery
    traddr:  192.168.31.99
    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:  6
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.064a9b19b3ee11f09dcad039eabac370:discovery
    traddr:  192.168.30.99
    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:  7
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.064a9b19b3ee11f09dcad039eabac370:discovery
    traddr:  192.168.31.98
    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:  5
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.064a9b19b3ee11f09dcad039eabac370:discovery
    traddr:  192.168.30.98
    eflags:  explicit discovery connections, duplicate discovery information
    sectype: none
    =====Discovery Log Entry 4======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  8
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.064a9b19b3ee11f09dcad039eabac370:subsystem.subsys_kvm
    traddr:  192.168.31.99
    eflags:  none
    sectype: none
    =====Discovery Log Entry 5======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  6
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.064a9b19b3ee11f09dcad039eabac370:subsystem.subsys_kvm
    traddr:  192.168.30.99
    eflags:  none
    sectype: none
    =====Discovery Log Entry 6======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  7
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.064a9b19b3ee11f09dcad039eabac370:subsystem.subsys_kvm
    traddr:  192.168.31.98
    eflags:  none
    sectype: none
    =====Discovery Log Entry 7======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  5
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.064a9b19b3ee11f09dcad039eabac370:subsystem.subsys_kvm
    traddr:  192.168.30.98
    eflags:  none
    sectype: none
  2. Vergewissern Sie sich, dass die anderen LIF-Kombinationen des NVMe/TCP-Initiators die Daten der Erkennungsprotokollseite erfolgreich abrufen können:

    nvme discover -t tcp -w host-traddr -a traddr
    Beispiel anzeigen
    nvme discover -t tcp -w 192.168.41.7 -a 192.168.41.10
    nvme discover -t tcp -w 192.168.41.7 -a 192.168.41.11
    nvme discover -t tcp -w 192.168.48.7 -a 192.168.48.10
    nvme discover -t tcp -w 192.168.48.7 -a 192.168.48.11
  3. Führen Sie die aus nvme connect-all Befehl über alle unterstützten NVMe/TCP Initiator-Ziel-LIFs der Nodes hinweg:

    nvme connect-all -t tcp -w host-traddr -a traddr
    Beispiel anzeigen
    nvme connect-all -t tcp -w 192.168.41.7 -a 192.168.41.10
    nvme connect-all -t tcp -w 192.168.41.7 -a 192.168.41.11
    nvme connect-all -t tcp -w 192.168.48.7 -a 192.168.48.10
    nvme connect-all -t tcp -w 192.168.48.7 -a 192.168.48.11

Ab Oracle Linux 9.4 ist die Einstellung für NVMe/TCP ctrl_loss_tmo timeout ist automatisch auf „Aus“ gestellt. Das Ergebnis:

  • Es gibt keine Begrenzung für die Anzahl der Wiederholungsversuche (unbegrenzte Wiederholung).

  • Sie müssen kein bestimmtes ctrl_loss_tmo timeout Dauer bei Verwendung des nvme connect oder nvme connect-all Befehle (Option -l ).

  • Bei den NVMe/TCP-Controllern kommt es im Falle eines Pfadausfalls nicht zu Timeouts und die Verbindung bleibt unbegrenzt bestehen.

Schritt 4: Optional können Sie die iopolicy in den udev-Regeln ändern.

Der Oracle Linux 10.x-Host setzt die Standard-iopolicy für NVMe-oF auf queue-depth. Sie können die iopolicy auf round-robin ändern, indem Sie die udev-Regeldatei anpassen.

Schritte
  1. Öffnen Sie die Udev-Regeldatei in einem Texteditor mit Root-Rechten:

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

    Die folgende Ausgabe sollte angezeigt werden:

    vi /usr/lib/udev/rules.d/71-nvmf-netapp.rules
  2. Suchen Sie die Zeile, die die iopolicy für den NetApp ONTAP Controller festlegt.

    Das folgende Beispiel zeigt eine Beispielregel:

    ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="queue-depth"
  3. Ändern Sie die Regel so, dass queue-depth zu round-robin wird:

    ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="round-robin"
  4. Laden Sie die udev-Regeln neu und wenden Sie die Änderungen an:

    udevadm control --reload
    udevadm trigger --subsystem-match=nvme-subsystem
  5. Überprüfen Sie die aktuelle E/A-Richtlinie für Ihr Subsystem. Ersetzen Sie beispielsweise <subsystem>, nvme-subsys0 Die

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

    Die folgende Ausgabe sollte angezeigt werden:

    round-robin.
Hinweis Die neue iopolicy wird automatisch auf passende NetApp ONTAP Controller-Geräte angewendet. Es ist keine Einrichtung erforderlich.

Schritt 5: Optional: Aktivieren Sie 1 MB I/O für NVMe/FC.

ONTAP meldet in den Identify Controller-Daten eine maximale Datenübertragungsgröße (MDTS) von 8. Dies bedeutet, dass die maximale E/A-Anforderungsgröße bis zu 1 MB betragen kann. Um E/A-Anfragen der Größe 1 MB für einen Broadcom NVMe/FC-Host auszugeben, sollten Sie die lpfc Wert des lpfc_sg_seg_cnt Parameter vom Standardwert 64 auf 256.

Hinweis Diese Schritte gelten nicht für Qlogic NVMe/FC-Hosts.
Schritte
  1. Setzen Sie den lpfc_sg_seg_cnt Parameter auf 256:

    cat /etc/modprobe.d/lpfc.conf

    Sie sollten eine Ausgabe ähnlich dem folgenden Beispiel sehen:

    options lpfc lpfc_sg_seg_cnt=256
  2. Führen Sie den Befehl aus dracut -f, und starten Sie den Host neu.

  3. Stellen Sie sicher, dass der Wert für lpfc_sg_seg_cnt 256 lautet:

    cat /sys/module/lpfc/parameters/lpfc_sg_seg_cnt

Schritt 6: NVMe-Bootdienste überprüfen

Der nvmefc-boot-connections.service Und nvmf-autoconnect.service In NVMe/FC enthaltene Boot-Dienste nvme-cli Paket werden beim Systemstart automatisch aktiviert.

Überprüfen Sie nach dem Booten, ob die nvmefc-boot-connections.service Und nvmf-autoconnect.service Boot-Dienste sind aktiviert.

Schritte
  1. Vergewissern Sie sich, dass nvmf-autoconnect.service aktiviert ist:

    systemctl status nvmf-autoconnect.service
    Beispielausgabe anzeigen
    nvmf-autoconnect.service - Connect NVMe-oF subsystems automatically during boot
         Loaded: loaded (/usr/lib/systemd/system/nvmf-autoconnect.service; enabled; preset: disabled)
         Active: inactive (dead) since Tue 2026-02-02 09:48:11 EDT; 1 week 0 days ago
       Main PID: 2620 (code=exited, status=0/SUCCESS)
            CPU: 19ms
    
    Feb 02 09:48:11 sr630-13-169 systemd[1]: Starting Connect NVMe-oF subsystems automatically during boot...
    Feb 02 09:48:11 sr630-13-169 systemd[1]: nvmf-autoconnect.service: Deactivated successfully.
    Feb 02 09:48:11 sr630-13-169 systemd[1]: Finished Connect NVMe-oF subsystems automatically during boot.
  2. Vergewissern Sie sich, dass nvmefc-boot-connections.service aktiviert ist:

    systemctl status nvmefc-boot-connections.service
    Beispielausgabe anzeigen
    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; preset: enabled)
         Active: inactive (dead) since Tue 2026-02-02 09:47:07 EDT; 1 week 0 days ago2
       Main PID: 1651 (code=exited, status=0/SUCCESS)
            CPU: 14ms
    
    Feb 02 09:47:07 sr630-13-169 systemd[1]: Starting Auto-connect to subsystems on FC-NVME devices found during boot...
    Feb 02 09:47:07 sr630-13-169 systemd[1]: nvmefc-boot-connections.service: Deactivated successfully.
    Feb 02 09:47:07 sr630-13-169 systemd[1]: Finished Auto-connect to subsystems on FC-NVME devices found during boot.

Schritt 7: Überprüfen Sie die Multipathing-Konfiguration

Vergewissern Sie sich, dass der in-Kernel-Multipath-Status, der ANA-Status und die ONTAP-Namespaces für die NVMe-of-Konfiguration richtig sind.

Schritte
  1. Vergewissern Sie sich, dass das in-Kernel NVMe Multipath aktiviert ist:

    cat /sys/module/nvme_core/parameters/multipath

    Die folgende Ausgabe sollte angezeigt werden:

    Y
  2. Überprüfen Sie, ob die entsprechenden NVMe-oF-Einstellungen (z. B. Modell auf NetApp ONTAP Controller und Load-Balancing-IOPolicy auf Warteschlangentiefe eingestellt) für die jeweiligen ONTAP Namespaces korrekt auf dem Host abgebildet werden:

    1. Zeigen Sie die Subsysteme an:

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

      Die folgende Ausgabe sollte angezeigt werden:

      NetApp ONTAP Controller
      NetApp ONTAP Controller
    2. Zeigen Sie die Richtlinie an:

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

      Sie sollten beispielsweise den für iopolicy festgelegten Wert sehen:

    queue-depth
    queue-depth
  3. Überprüfen Sie, ob die Namespaces auf dem Host erstellt und richtig erkannt wurden:

    nvme list
    Beispiel anzeigen
    Node            Generic         SN                   Model                    Namespace  Usage                      Format         FW Rev
    --------------- --------------- -------------------- ------------------------ ---------- -------------------------- -------------  --------
    /dev/nvme10n1   /dev/ng10n1     81NQfNZTUE14AAAAAAAN NetApp ONTAP Controller   0x1          0.00   B /  21.47  GB   4 KiB +  0 B   9.18.1
    /dev/nvme10n2   /dev/ng10n2     81NQfNZTUE14AAAAAAAN NetApp ONTAP Controller   0x2          0.00   B /  21.47  GB   4 KiB +  0 B   9.18.1
    /dev/nvme12n1   /dev/ng12n1     81NQfNZTUE14AAAAAAAb NetApp ONTAP Controller   0x1          0.00   B /  21.47  GB   4 KiB +  0 B   9.18.1
  4. Überprüfen Sie, ob der Controller-Status jedes Pfads aktiv ist und den korrekten ANA-Status aufweist:

    nvme list-subsys /dev/<controller_ID>
    Hinweis Ab ONTAP 9.16.1 melden NVMe/FC und NVMe/TCP alle optimierten Pfade auf ASA r2 Systemen.
    NVMe/FC

    Die folgenden Beispielausgaben zeigen einen Namespace, der auf einem Zwei-Knoten ONTAP Controller für ein AFF, FAS, ASA oder ASA r2 System mit NVMe/FC gehostet wird.

    Beispielausgabe für AFF, FAS oder ASA anzeigen
     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
    Beispielausgabe für ASA r2 anzeigen
    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

    Die folgenden Beispielausgaben zeigen einen Namespace, der auf einem Zwei-Knoten ONTAP Controller für ein AFF, FAS, ASA oder ASA r2 System mit NVMe/TCP gehostet wird.

    Beispielausgabe für AFF, FAS oder ASA anzeigen
    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
    Beispielausgabe für ASA r2 anzeigen
    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. Vergewissern Sie sich, dass das NetApp Plug-in für jedes ONTAP Namespace-Gerät die richtigen Werte anzeigt:

    Spalte
    nvme netapp ontapdevices -o column
    Beispiel anzeigen
    Device           Vserver                  Namespace Path         NSID  UUID                                   Size
    ---------------- ----------------------- ----------------------- ----- -------------------------------------- --------
    /dev/nvme1n1     vs_sanboot sanboot_169   /vol/nvme169/ns169      1    58443dbc-a472-45da-a5ef-3dd27c19d04b   171.80GB
    JSON
    nvme netapp ontapdevices -o json
    Beispiel anzeigen
    {
      "ONTAPdevices":[
        {
          "Device":"/dev/nvme11n1",
          "Vserver":"vs_sanboot", "Subsystem":"sanboot_169",
          "Namespace_Path": "/vol/nvme169/ns169",
          "NSID":1,
          "UUID":" 58443dbc-a472-45da-a5ef-3dd27c19d04b",
          "LBA_Size":4096,
          "Namespace_Size": 171798691840,
          "UsedBytes": 6016638976,
          "Version":"9.18.1"
            }
      ]
    }

Schritt 8: Einrichten einer sicheren In-Band-Authentifizierung

Sichere In-Band-Authentifizierung wird über NVMe/TCP zwischen einem Oracle Linux 10.x Host und einem ONTAP Controller unterstützt.

Jedem Host oder Controller muss ein DH-HMAC-CHAP-Schlüssel zugeordnet werden, um eine sichere Authentifizierung einzurichten. Ein DH-HMAC-CHAP-Schlüssel ist eine Kombination aus dem NQN des NVMe-Hosts oder -Controllers und einem vom Administrator konfigurierten Authentifizierungsgeheimnis. Zur Authentifizierung seines Gegenübers muss ein NVMe-Host oder -Controller den zum Gegenüber gehörenden Schlüssel erkennen.

Schritte

Richten Sie eine sichere In-Band-Authentifizierung über die CLI oder eine Konfigurations-JSON-Datei ein. Verwenden Sie eine Konfigurations-JSON-Datei, wenn Sie für verschiedene Subsysteme unterschiedliche DHCP-Schlüssel angeben müssen.

CLI

Richten Sie die sichere bandinterne Authentifizierung über die CLI ein.

  1. Rufen Sie die Host-NQN ab:

    cat /etc/nvme/hostnqn
  2. Generieren Sie den DHCP-Schlüssel für den Linux-Host.

    Die folgende Ausgabe beschreibt die gen-dhchap-key Befehlsparameter:

    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

    Im folgenden Beispiel wird ein zufälliger Dhchap-Schlüssel mit HMAC auf 3 (SHA-512) generiert.

    # nvme gen-dhchap-key -m 3 -n nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0035-xxxx-804b-b7cxxxx44d33
    DHHC-1:03:xhAfbAD5IVLZDxiVbmFEOA5JZ3F/ERqTXhHzZQJKgkYkTbPI9dhRyVtr4dBD+SGiAJO3by4FbnVtov1Lmk+86+nNc6k=:
  3. Fügen Sie auf dem ONTAP-Controller den Host hinzu und geben Sie beide dhchap-Schlüssel an:

    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. Ein Host unterstützt zwei Arten von Authentifizierungsmethoden, unidirektional und bidirektional. Stellen Sie auf dem Host eine Verbindung zum ONTAP-Controller her, und geben Sie dhchap-Schlüssel basierend auf der gewählten Authentifizierungsmethode an:

    nvme connect -t tcp -w <host-traddr> -a <tr-addr> -n <host_nqn> -S <authentication_host_secret> -C <authentication_controller_secret>
  5. Validieren Sie den nvme connect authentication Durch Überprüfen der dhchap-Schlüssel für Host und Controller:

    1. Überprüfen Sie die Host-dhchap-Schlüssel:

      cat /sys/class/nvme-subsystem/<nvme-subsysX>/nvme*/dhchap_secret
      Beispielausgabe für eine unidirektionale Konfiguration anzeigen
      cat /sys/class/nvme-subsystem/nvme-subsys1/nvme*/dhchap_secret
      DHHC-1:03:Y5VkkESgmtTGNdX842qemNpFK6BXYVwwnqErgt3IQKP5Fbjje\/JSBOjG5Ea3NBLRfuiAuUSDUto6eY\/GwKoRp6AwGkw=:
      DHHC-1:03:Y5VkkESgmtTGNdX842qemNpFK6BXYVwwnqErgt3IQKP5Fbjje\/JSBOjG5Ea3NBLRfuiAuUSDUto6eY\/GwKoRp6AwGkw=:
      DHHC-1:03:Y5VkkESgmtTGNdX842qemNpFK6BXYVwwnqErgt3IQKP5Fbjje\/JSBOjG5Ea3NBLRfuiAuUSDUto6eY\/GwKoRp6AwGkw=:
      DHHC-1:03:Y5VkkESgmtTGNdX842qemNpFK6BXYVwwnqErgt3IQKP5Fbjje\/JSBOjG5Ea3NBLRfuiAuUSDUto6eY\/GwKoRp6AwGkw=:
    2. Überprüfen Sie die Dhchap-Tasten des Controllers:

      cat /sys/class/nvme-subsystem/<nvme-subsysX>/nvme*/dhchap_ctrl_secret
      Beispielausgabe für eine bidirektionale Konfiguration anzeigen
      cat /sys/class/nvme-subsystem/nvme-subsys6/nvme*/dhchap_ctrl_secret
      DHHC-1:03:frpLlTrnOYtcWDxPzq4ccxU1UrH2FjV7hYw5s2XEDB+lo+TjMsOwHR\/NFtM0nBBidx+gdoyUcC5s6hOOtTLDGcz0Kbs=:
      DHHC-1:03:frpLlTrnOYtcWDxPzq4ccxU1UrH2FjV7hYw5s2XEDB+lo+TjMsOwHR\/NFtM0nBBidx+gdoyUcC5s6hOOtTLDGcz0Kbs=:
      DHHC-1:03:frpLlTrnOYtcWDxPzq4ccxU1UrH2FjV7hYw5s2XEDB+lo+TjMsOwHR\/NFtM0nBBidx+gdoyUcC5s6hOOtTLDGcz0Kbs=:
      DHHC-1:03:frpLlTrnOYtcWDxPzq4ccxU1UrH2FjV7hYw5s2XEDB+lo+TjMsOwHR\/NFtM0nBBidx+gdoyUcC5s6hOOtTLDGcz0Kbs=:
JSON

Wenn in der ONTAP-Controller-Konfiguration mehrere NVMe-Subsysteme verfügbar sind, kann die Datei mit dem nvme connect-all Befehl verwendet /etc/nvme/config.json werden.

Verwenden Sie die -o Option zum Generieren der JSON-Datei. Weitere Syntaxoptionen finden Sie auf den Handseiten für NVMe Connect-all.

  1. Konfigurieren Sie die JSON-Datei:

    Beispiel anzeigen
    [
      {
        "hostnqn":"nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0035-xxxx-804b-b7cxxxx44d33",
        "hostid":"4c4cxxxx-0035-xxxx-804b-b7cxxxx44d33",
        "dhchap_key":"DHHC-1:01:nFg06gV0FNpXqoiLOF0L+swULQpZU/PjU9v/McDeJHjTZFlF:",
        "subsystems":[
          {
            "nqn":"nqn.1992-08.com.netapp:sn.09035a8d8c8011f0ac0fd039eabac370:subsystem.subsys",
            "ports":[
              {
                "transport":"tcp",
                "traddr":"192.168.30.69",
                "host_traddr":"192.168.41.7",
                "trsvcid":"4420",
                "dhchap_ctrl_key":"DHHC-1:03:n3F8d+bvxKW/s+lEhqXaOohI2sxrQ9iLutzduuFq49JgdjjaFtTpDSO9kQl/bvZj+Bo3rdHh3xPXeP6a4xyhcRyqdds=:"
              }
            ]
          }
        ]
      }
    ]
    Hinweis Im vorhergehenden Beispiel dhchap_key entspricht dhchap_secret und dhchap_ctrl_key entspricht dhchap_ctrl_secret .
  2. Stellen Sie mithilfe der Konfigurations-JSON-Datei eine Verbindung zum ONTAP Controller her:

    nvme connect-all -J /etc/nvme/config.json
  3. Überprüfen Sie, ob die dhchap-Geheimnisse für die jeweiligen Controller für jedes Subsystem aktiviert wurden:

    1. Überprüfen Sie die Host-dhchap-Schlüssel:

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

      Das folgende Beispiel zeigt einen dhchap-Schlüssel:

      DHHC-1:01:nFg06gV0FNpXqoiLOF0L+swULQpZU/PjU9v/McDeJHjTZFlF:
    2. Überprüfen Sie die Dhchap-Tasten des Controllers:

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

      Sie sollten eine Ausgabe ähnlich dem folgenden Beispiel sehen:

    DHHC-1:03:n3F8d+bvxKW/s+lEhqXaOohI2sxrQ9iLutzduuFq49JgdjjaFtTpDSO9kQl/bvZj+Bo3rdHh3xPXeP6a4xyhcRyqdds=:

Schritt 9: Überprüfen Sie die bekannten Probleme

Es sind keine Probleme bekannt.