RHEL 9.x für NVMe-oF mit ONTAP -Speicher konfigurieren
Red Hat Enterprise Linux (RHEL)-Hosts unterstützen die Protokolle NVMe over Fibre Channel (NVMe/FC) und NVMe over TCP (NVMe/TCP) 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 RHEL 9.x konfigurieren. Weitere Informationen zu Support und Funktionen finden Sie unter "RHEL ONTAP Unterstützung und -Funktionen"Die
NVMe-oF unter RHEL 9.x weist folgende bekannte Einschränkungen auf:
-
Der
nvme disconnect-allDieser 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.
-
"Erstellen Sie einen NVMe-Namespace und ordnen Sie ihn dem Host zu" .
-
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.
-
Starten Sie den Host neu und überprüfen Sie, ob das Betriebssystem läuft.
Schritt 2: Installieren Sie die RHEL- und NVMe-Software und überprüfen Sie Ihre Konfiguration.
Um Ihren Host für NVMe-oF zu konfigurieren, müssen Sie die Host- und NVMe-Softwarepakete installieren, Multipathing aktivieren und Ihre Host-NQN-Konfiguration überprüfen.
-
Installieren Sie RHEL 9.x auf dem Server. Nach Abschluss der Installation überprüfen Sie, ob Sie den erforderlichen RHEL 9.x-Kernel ausführen:
uname -rBeispiel für eine RHEL-Kernelversion:
5.14.0-611.5.1.el9_7.x86_64
-
Installieren Sie den
nvme-cliPaket:rpm -qa|grep nvme-cliDas folgende Beispiel zeigt eine
nvme-cliPaketversion:nvme-cli-2.13-1.el9.x86_64
-
Installieren Sie den
libnvmePaket:rpm -qa|grep libnvmeDas folgende Beispiel zeigt eine
libnvmePaketversion:libnvme-1.13-1.el9.x86_64
-
Überprüfen Sie auf dem Host die Hostnqn-Zeichenfolge unter
/etc/nvme/hostnqn:cat /etc/nvme/hostnqnDas folgende Beispiel zeigt eine
hostnqnVersion:nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0056-5410-8048-b9c04f425633
-
Überprüfen Sie im ONTAP System, ob
hostnqnDie Zeichenkette stimmt mit derhostnqnZeichenkette für das entsprechende Subsystem im ONTAP -Speichersystem:::> vserver nvme subsystem host show -vserver vs_188Beispiel anzeigen
Vserver Subsystem Priority Host NQN ------- --------- -------- ------------------------------------------------ vs_188 Nvme1 regular nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0056-5410-8048-b9c04f425633 Nvme10 regular nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0056-5410-8048-b9c04f425633 Nvme11 regular nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0056-5410-8048-b9c04f425633 Nvme12 regular nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0056-5410-8048-b9c04f425633 48 entries were displayed.
|
|
Wenn die hostnqn Zeichenfolgen nicht übereinstimmen, verwenden Sie die vserver modify Befehl zum Aktualisieren der hostnqn Zeichenfolge auf Ihrem entsprechenden ONTAP -Speichersystem-Subsystem, um die Übereinstimmung mit hostnqn Zeichenfolge von /etc/nvme/hostnqn auf dem Host.
|
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.
Konfigurieren Sie NVMe/FC für einen Broadcom/Emulex-Adapter.
-
Stellen Sie sicher, dass Sie das unterstützte Adaptermodell verwenden:
-
Zeigen Sie die Modellnamen an:
cat /sys/class/scsi_host/host*/modelnameDie folgende Ausgabe sollte angezeigt werden:
LPe36002-M64 LPe36002-M64
-
Zeigen Sie die Modellbeschreibungen an:
cat /sys/class/scsi_host/host*/modeldescSie sollten eine Ausgabe ähnlich dem folgenden Beispiel sehen:
Emulex LightPulse LPe36002-M64 2-Port 64Gb Fibre Channel Adapter Emulex LightPulse LPe36002-M64 2-Port 64Gb Fibre Channel Adapter
-
-
Vergewissern Sie sich, dass Sie das empfohlene Broadcom verwenden
lpfcFirmware und Inbox-Treiber:-
Anzeige der Firmware-Version:
cat /sys/class/scsi_host/host*/fwrevDer Befehl gibt die Firmware-Versionen zurück:
14.4.393.53, sli-4:6:d 14.4.393.53, sli-4:6:d
-
Zeigen Sie die Posteingangstreiberversion an:
cat /sys/module/lpfc/versionDas folgende Beispiel zeigt eine Treiberversion:
0:14.4.0.9
Die aktuelle Liste der unterstützten Adaptertreiber- und Firmware-Versionen finden Sie im "Interoperabilitäts-Matrix-Tool".
-
-
Verifizieren Sie das
lpfc_enable_fc4_typeIst auf festgelegt3:cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type -
Vergewissern Sie sich, dass Sie Ihre Initiator-Ports anzeigen können:
cat /sys/class/fc_host/host*/port_nameDas folgende Beispiel zeigt Portidentitäten:
0x100000109bf044b1 0x100000109bf044b2
-
Überprüfen Sie, ob Ihre Initiator-Ports online sind:
cat /sys/class/fc_host/host*/port_stateDie folgende Ausgabe sollte angezeigt werden:
Online Online
-
Vergewissern Sie sich, dass die NVMe/FC-Initiator-Ports aktiviert sind und die Ziel-Ports sichtbar sind:
cat /sys/class/scsi_host/host*/nvme_infoBeispiel anzeigen
NVME Initiator Enabled XRI Dist lpfc0 Total 6144 IO 5894 ELS 250 NVME LPORT lpfc0 WWPN x100000109b954518 WWNN x200000109b954518 DID x020700 ONLINE NVME RPORT WWPN x2022d039eaa7dfc8 WWNN x201fd039eaa7dfc8 DID x020b03 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2023d039eaa7dfc8 WWNN x201fd039eaa7dfc8 DID x020103 TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 0000000548 Cmpl 0000000548 Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 0000000000001a68 Issue 0000000000001a68 OutIO 0000000000000000 abort 00000000 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000 FCP CMPL: xb 00000000 Err 00000000 NVME Initiator Enabled XRI Dist lpfc1 Total 6144 IO 5894 ELS 250 NVME LPORT lpfc1 WWPN x100000109b954519 WWNN x200000109b954519 DID x020500 ONLINE NVME RPORT WWPN x2027d039eaa7dfc8 WWNN x2025d039eaa7dfc8 DID x020b01 TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 00000005ab Cmpl 00000005ab Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 0000000000086ce1 Issue 0000000000086ce2 OutIO 0000000000000001 abort 0000009c noxri 00000000 nondlp 00000002 qdepth 00000000 wqerr 00000000 err 00000000 FCP CMPL: xb 000000b8 Err 000000b8 NVME Initiator Enabled XRI Dist lpfc2 Total 6144 IO 5894 ELS 250 NVME LPORT lpfc2 WWPN x100000109bf044b1 WWNN x200000109bf044b1 DID x022a00 ONLINE NVME RPORT WWPN x2027d039eaa7dfc8 WWNN x2025d039eaa7dfc8 DID x020b01 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2011d039eaa7dfc8 WWNN x200fd039eaa7dfc8 DID x020b02 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2002d039eaa7dfc8 WWNN x2000d039eaa7dfc8 DID x020b05 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2026d039eaa7dfc8 WWNN x2025d039eaa7dfc8 DID x021301 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2010d039eaa7dfc8 WWNN x200fd039eaa7dfc8 DID x021302 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2001d039eaa7dfc8 WWNN x2000d039eaa7dfc8 DID x021305 TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 000000c186 Cmpl 000000c186 Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 00000000c348ca37 Issue 00000000c3344057 OutIO ffffffffffeb7620 abort 0000815b noxri 000018b5 nondlp 00000116 qdepth 00000000 wqerr 00000000 err 00000000 FCP CMPL: xb 0000915b Err 000c6091 NVME Initiator Enabled XRI Dist lpfc3 Total 6144 IO 5894 ELS 250 NVME LPORT lpfc3 WWPN x100000109bf044b2 WWNN x200000109bf044b2 DID x021b00 ONLINE NVME RPORT WWPN x2028d039eaa7dfc8 WWNN x2025d039eaa7dfc8 DID x020101 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2012d039eaa7dfc8 WWNN x200fd039eaa7dfc8 DID x020102 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2003d039eaa7dfc8 WWNN x2000d039eaa7dfc8 DID x020105 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2029d039eaa7dfc8 WWNN x2025d039eaa7dfc8 DID x022901 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2013d039eaa7dfc8 WWNN x200fd039eaa7dfc8 DID x022902 TARGET DISCSRVC ONLINE NVME RPORT WWPN x2004d039eaa7dfc8 WWNN x2000d039eaa7dfc8 DID x022905 TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 000000c186 Cmpl 000000c186 Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 00000000b5761af5 Issue 00000000b564b55e OutIO ffffffffffee9a69 abort 000083d7 noxri 000016ea nondlp 00000195 qdepth 00000000 wqerr 00000002 err 00000000 FCP CMPL: xb 000094a4 Err 000c22e7
Konfigurieren Sie NVMe/FC für einen Marvell/QLogic-Adapter.
-
Stellen Sie sicher, dass Sie die unterstützten Adaptertreiber- und Firmware-Versionen verwenden:
cat /sys/class/fc_host/host*/symbolic_nameDas folgende Beispiel zeigt Treiber- und Firmwareversionen:
QLE2872 FW:v9.15.06 DVR:v10.02.09.400-k QLE2872 FW:v9.15.06 DVR:v10.02.09.400-k
-
Verifizieren Sie das
ql2xnvmeenableIst festgelegt. Dadurch kann der Marvell Adapter als NVMe/FC-Initiator verwendet werden:cat /sys/module/qla2xxx/parameters/ql2xnvmeenableDie erwartete Ausgabe ist 1.
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.
-
Überprüfen Sie, ob der Initiator-Port die Daten der Erkennungsprotokollseite über die unterstützten NVMe/TCP-LIFs abrufen kann:
nvme discover -t tcp -w host-traddr -a traddrBeispiel anzeigen
nvme discover -t tcp -w 192.168.30.15 -a 192.168.30.48 Discovery Log Number of Records 8, Generation counter 18 =====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.51a3c9846e0c11f08f5dd039eaa7dfc9:discovery traddr: 192.168.31.49 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: 7 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.51a3c9846e0c11f08f5dd039eaa7dfc9:discovery traddr: 192.168.31.48 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: 6 trsvcid: 8009 subnqn: nqn.1992-08.com.netapp:sn.51a3c9846e0c11f08f5dd039eaa7dfc9:discovery traddr: 192.168.30.49 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.51a3c9846e0c11f08f5dd039eaa7dfc9:discovery traddr: 192.168.30.48 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.51a3c9846e0c11f08f5dd039eaa7dfc9:subsystem.Nvme38 traddr: 192.168.31.49 eflags: none sectype: none =====Discovery Log Entry 5====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 7 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.51a3c9846e0c11f08f5dd039eaa7dfc9:subsystem.Nvme38 traddr: 192.168.31.48 eflags: none sectype: none =====Discovery Log Entry 6====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 6 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.51a3c9846e0c11f08f5dd039eaa7dfc9:subsystem.Nvme38 traddr: 192.168.30.49 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.51a3c9846e0c11f08f5dd039eaa7dfc9:subsystem.Nvme38 traddr: 192.168.30.48 eflags: none sectype: none
-
Überprüfen Sie, ob die anderen NVMe/TCP-Initiator-Ziel-LIF-Kombinationen erfolgreich Daten der Erkennungsprotokollseite abrufen können:
nvme discover -t tcp -w host-traddr -a traddrBeispiel anzeigen
nvme discover -t tcp -w 192.168.30.15 -a 192.168.30.48 nvme discover -t tcp -w 192.168.30.15 -a 192.168.30.49 nvme discover -t tcp -w 192.168.31.15 -a 192.168.31.48 nvme discover -t tcp -w 192.168.31.15 -a 192.168.31.49
-
Führen Sie die aus
nvme connect-allBefehl über alle unterstützten NVMe/TCP Initiator-Ziel-LIFs der Nodes hinweg:nvme connect-all -t tcp -w host-traddr -a traddrBeispiel anzeigen
nvme connect-all -t tcp -w 192.168.30.15 -a 192.168.30.48 nvme connect-all -t tcp -w 192.168.30.15 -a 192.168.30.49 nvme connect-all -t tcp -w 192.168.31.15 -a 192.168.31.48 nvme connect-all -t tcp -w 192.168.31.15 -a 192.168.31.49
Ab RHEL 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 timeoutDauer bei Verwendung desnvme connectodernvme connect-allBefehle (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.
RHEL 9.6 legt die Standard-IO-Richtlinie für NVMe-oF fest. round-robin Die Wenn Sie RHEL 9.6 verwenden und die iopolicy ändern möchten auf queue-depth Ändern Sie die udev-Regeldatei wie folgt:
-
Öffnen Sie die Udev-Regeldatei in einem Texteditor mit Root-Rechten:
/usr/lib/udev/rules.d/71-nvmf-netapp.rulesDie folgende Ausgabe sollte angezeigt werden:
vi /usr/lib/udev/rules.d/71-nvmf-netapp.rules
-
Suchen Sie die Zeile, die die iopolicy für den NetApp ONTAP Controller festlegt, wie im folgenden Beispiel gezeigt:
ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="round-robin" -
Ändern Sie die Regel so, dass
round-robinwirdqueue-depth:ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{subsystype}=="nvm", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="queue-depth" -
Laden Sie die udev-Regeln neu und wenden Sie die Änderungen an:
udevadm control --reload udevadm trigger --subsystem-match=nvme-subsystem -
Überprüfen Sie die aktuelle E/A-Richtlinie für Ihr Subsystem. Ersetzen Sie beispielsweise <subsystem>,
nvme-subsys0Diecat /sys/class/nvme-subsystem/<subsystem>/iopolicyDie folgende Ausgabe sollte angezeigt werden:
queue-depth.
|
|
Die neue iopolicy wird automatisch auf passende NetApp ONTAP Controller-Geräte angewendet. Ein Neustart ist nicht 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.
|
|
Diese Schritte gelten nicht für Qlogic NVMe/FC-Hosts. |
-
Setzen Sie den
lpfc_sg_seg_cntParameter auf 256:cat /etc/modprobe.d/lpfc.confSie sollten eine Ausgabe ähnlich dem folgenden Beispiel sehen:
options lpfc lpfc_sg_seg_cnt=256
-
Führen Sie den Befehl aus
dracut -f, und starten Sie den Host neu. -
Stellen Sie sicher, dass der Wert für
lpfc_sg_seg_cnt256 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.
-
Vergewissern Sie sich, dass
nvmf-autoconnect.serviceaktiviert ist:systemctl status nvmf-autoconnect.serviceBeispielausgabe 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 Wed 2025-10-29 00:42:03 EDT; 6h ago Main PID: 8487 (code=exited, status=0/SUCCESS) CPU: 66ms Oct 29 00:42:03 R650-14-188 systemd[1]: Starting Connect NVMe-oF subsystems automatically during boot... Oct 29 00:42:03 R650-14-188 systemd[1]: nvmf-autoconnect.service: Deactivated successfully. Oct 29 00:42:03 R650-14-188 systemd[1]: Finished Connect NVMe-oF subsystems automatically during boot. -
Vergewissern Sie sich, dass
nvmefc-boot-connections.serviceaktiviert ist:systemctl status nvmefc-boot-connections.serviceBeispielausgabe 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 Wed 2025-10-29 00:41:51 EDT; 6h ago Main PID: 4652 (code=exited, status=0/SUCCESS) CPU: 13ms Oct 29 00:41:51 R650-14-188 systemd[1]: Starting Auto-connect to subsystems on FC-NVME devices found during boot... Oct 29 00:41:51 R650-14-188 systemd[1]: nvmefc-boot-connections.service: Deactivated successfully. Oct 29 00:41:51 R650-14-188 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.
-
Vergewissern Sie sich, dass das in-Kernel NVMe Multipath aktiviert ist:
cat /sys/module/nvme_core/parameters/multipathDie folgende Ausgabe sollte angezeigt werden:
Y
-
Überprüfen Sie, ob die entsprechenden NVMe-oF-Einstellungen (z. B. Modell auf NetApp ONTAP Controller und Load-Balancing-IOPolicy auf Round-Robin eingestellt) für die jeweiligen ONTAP Namespaces auf dem Host korrekt angezeigt werden:
-
Zeigen Sie die Subsysteme an:
cat /sys/class/nvme-subsystem/nvme-subsys*/modelDie folgende Ausgabe sollte angezeigt werden:
NetApp ONTAP Controller NetApp ONTAP Controller
-
Zeigen Sie die Richtlinie an:
cat /sys/class/nvme-subsystem/nvme-subsys*/iopolicyDie folgende Ausgabe sollte angezeigt werden:
queue-depth queue-depth
-
-
Überprüfen Sie, ob die Namespaces auf dem Host erstellt und richtig erkannt wurden:
nvme listBeispiel anzeigen
Node Generic SN Model -------------------------------------------------------------------------------------- /dev/nvme100n1 /dev/ng100n1 81LJCJYaKOHhAAAAAAAf NetApp ONTAP Controller Namespace Usage Format FW Rev ----------------------------------------------------------- 0x1 1.19 GB / 5.37 GB 4 KiB + 0 B 9.18.1
-
Überprüfen Sie, ob der Controller-Status jedes Pfads aktiv ist und den korrekten ANA-Status aufweist:
NVMe/FCnvme list-subsys /dev/nvme100n1Beispiel anzeigen
nvme-subsys4 - NQN=nqn.1992-08.com.netapp:sn.3623e199617311f09257d039eaa7dfc9:subsystem.Nvme31 hostnqn=nqn.2014-08.org.nvmexpress:uuid: 4c4c4544-0056-5410-8048-b9c04f42563 \ +- nvme199 fc traddr=nn-0x200fd039eaa7dfc8:pn-0x2010d039eaa7dfc8,host_traddr=nn-0x200000109bf044b1:pn-0x100000109bf044b1 live optimized +- nvme246 fc traddr=nn-0x200fd039eaa7dfc8:pn-0x2011d039eaa7dfc8,host_traddr=nn-0x200000109bf044b1:pn-0x100000109bf044b1 live non-optimized +- nvme249 fc traddr=nn-0x200fd039eaa7dfc8:pn-0x2013d039eaa7dfc8,host_traddr=nn-0x200000109bf044b2:pn-0x100000109bf044b2 live optimized +- nvme251 fc traddr=nn-0x200fd039eaa7dfc8:pn-0x2012d039eaa7dfc8,host_traddr=nn-0x200000109bf044b2:pn-0x100000109bf044b2 live non-optimizedNVMe/TCPnvme list-subsys /dev/nvme0n1Beispiel anzeigen
nvme-subsys0 - NQN=nqn.1992-08.com.netapp:sn.51a3c9846e0c11f08f5dd039eaa7dfc9:subsystem.Nvme1 hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b5c04f444d33 \ +- nvme0 tcp traddr=192.168.30.48,trsvcid=4420,host_traddr=192.168.30.15, src_addr=192.168.30.15 live optimized +- nvme1 tcp traddr=192.168.30.49,trsvcid=4420,host_traddr=192.168.30.15, src_addr=192.168.30.15 live non-optimized +- nvme2 tcp traddr=192.168.31.48,trsvcid=4420,host_traddr=192.168.31.15, src_addr=192.168.31.15 live optimized +- nvme3 tcp traddr=192.168.31.49,trsvcid=4420,host_traddr=192.168.31.15, src_addr=192.168.31.15 live non-optimized
-
Vergewissern Sie sich, dass das NetApp Plug-in für jedes ONTAP Namespace-Gerät die richtigen Werte anzeigt:
Spaltenvme netapp ontapdevices -o columnBeispiel anzeigen
Device Vserver Subsystem Namespace Path NSID ------------ -------- ----------- ----------------- ---- /dev/nvme0n1 vs_iscsi_tcp Nvme1 /vol/Nvmevol1/ns1 1 UUID Size ------------------------------------- ----- d8efef7d-4dde-447f-b50e-b2c009298c66 26.84GB
JSONnvme netapp ontapdevices -o jsonBeispiel anzeigen
{ "ONTAPdevices":[ { "Device":"/dev/nvme0n1", "Vserver":"vs_iscsi_tcp", " Subsystem":"Nvme1", "Namespace_Path":"/vol/Nvmevol1/ns1", "NSID":1, "UUID":"d8efef7d-4dde-447f-b50e-b2c009298c66", "LBA_Size":4096, "Namespace_Size":26843545600, }, ] }
Schritt 8: Einrichten einer sicheren In-Band-Authentifizierung
Eine sichere In-Band-Authentifizierung wird über NVMe/TCP zwischen einem RHEL 9.x-Host und einem ONTAP Controller unterstützt.
Jeder Host oder Controller muss mit einem DH-HMAC-CHAP Schlüssel zur Einrichtung einer sicheren Authentifizierung . DH-HMAC-CHAP Der Schlüssel ist eine Kombination aus dem NQN des NVMe-Hosts oder -Controllers und einem vom Administrator konfigurierten Authentifizierungsgeheimnis. Um seinen Peer zu authentifizieren, muss ein NVMe-Host oder -Controller den dem Peer zugeordneten Schlüssel erkennen.
Richten Sie eine sichere In-Band-Authentifizierung mithilfe der CLI oder einer JSON-Konfigurationsdatei ein. Wenn Sie unterschiedliche dhchap-Schlüssel für verschiedene Subsysteme angeben müssen, müssen Sie eine Konfigurations-JSON-Datei verwenden.
Richten Sie die sichere bandinterne Authentifizierung über die CLI ein.
-
Rufen Sie die Host-NQN ab:
cat /etc/nvme/hostnqn -
Generieren Sie den DHCP-Schlüssel für den RHEL 9.x-Host.
Die folgende Ausgabe beschreibt die
gen-dhchap-keyBefehlsparameter: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 transformationIm 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:e6dade64-216d-11ec-b7bb-7ed30a5482c3 DHHC-1:03:wSpuuKbBHTzC0W9JZxMBsYd9JFV8Si9aDh22k2BR/4m852vH7KGlrJeMpzhmyjDWOo0PJJM6yZsTeEpGkDHMHQ255+g=:
-
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} -
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> -
Validieren Sie den
nvme connect authenticationDurch Überprüfen der dhchap-Schlüssel für Host und Controller:-
Überprüfen Sie die Host-dhchap-Schlüssel:
cat /sys/class/nvme-subsystem/<nvme-subsysX>/nvme*/dhchap_secretBeispielausgabe für eine unidirektionale Konfiguration anzeigen
cat /sys/class/nvme-subsystem/nvme-subsys1/nvme*/dhchap_secret DHHC-1:01:hhdIYK7rGxHiNYS4d421GxHeDRUAuY0vmdqCp/NOaYND2PSc: DHHC-1:01:hhdIYK7rGxHiNYS4d421GxHeDRUAuY0vmdqCp/NOaYND2PSc: DHHC-1:01:hhdIYK7rGxHiNYS4d421GxHeDRUAuY0vmdqCp/NOaYND2PSc: DHHC-1:01:hhdIYK7rGxHiNYS4d421GxHeDRUAuY0vmdqCp/NOaYND2PSc:
-
Überprüfen Sie die Dhchap-Tasten des Controllers:
cat /sys/class/nvme-subsystem/<nvme-subsysX>/nvme*/dhchap_ctrl_secretBeispielausgabe für eine bidirektionale Konfiguration anzeigen
cat /sys/class/nvme-subsystem/nvme- subsys*/nvme*/dhchap_ctrl_secret DHHC-1:03:ZCRrP9MQOeXhFitT7Fvvf/3P6K/qY1HfSmSfM8nLjESJdOjbjK/J6m00ygJgjm0VrRlrgrnHzjtWJmsnoVBO3rPDGEk=: DHHC-1:03:ZCRrP9MQOeXhFitT7Fvvf/3P6K/qY1HfSmSfM8nLjESJdOjbjK/J6m00ygJgjm0VrRlrgrnHzjtWJmsnoVBO3rPDGEk=: DHHC-1:03:ZCRrP9MQOeXhFitT7Fvvf/3P6K/qY1HfSmSfM8nLjESJdOjbjK/J6m00ygJgjm0VrRlrgrnHzjtWJmsnoVBO3rPDGEk=: DHHC-1:03:ZCRrP9MQOeXhFitT7Fvvf/3P6K/qY1HfSmSfM8nLjESJdOjbjK/J6m00ygJgjm0VrRlrgrnHzjtWJmsnoVBO3rPDGEk=:
-
Wenn mehrere NVMe-Subsysteme auf dem ONTAP Controller verfügbar sind, können Sie die /etc/nvme/config.json Datei mit dem nvme connect-all Befehl.
Verwenden Sie die -o Option zum Generieren der JSON-Datei. Weitere Syntaxoptionen finden Sie in den Manpages zu NVMe connect-all.
-
Konfigurieren Sie die JSON-Datei.
Im folgenden Beispiel dhchap_keyentsprichtdhchap_secretUnddhchap_ctrl_keyentsprichtdhchap_ctrl_secret.Beispiel anzeigen
cat /etc/nvme/config.json [ { "hostnqn":"nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b5c04f444d33", "hostid":"4c4c4544-0035-5910-804b-b5c04f444d33", "dhchap_key":"DHHC-1:01:GhgaLS+0h0W/IxKhSa0iaMHg17SOHRTzBduPzoJ6LKEJs3/f:", "subsystems":[ { "nqn":"nqn.1992-08.com.netapp:sn.2c0c80d9873a11f0bc60d039eab6cb6d:subsystem.istpMNTC_subsys", "ports":[ { "transport":"tcp", "traddr":"192.168.30.44", "host_traddr":"192.168.30.15", "trsvcid":"4420", "dhchap_ctrl_key":"DHHC-1:03:GaraCO84o/uM0jF4rKJlgTy22bVoV0dRn1M+9QDfQRNVwJDHfPu2LrK5Y+/XG8iGcRtBCdm3 fYm3ZmO6NiepCORoY5Q=:" }, { "transport":"tcp", "traddr":"192.168.30.45" "host_traddr":"192.168.30.15", "trsvcid":"4420", "dhchap_ctrl_key":"DHHC-1:03:GaraCO84o/uM0jF4rKJlgTy22bVoV0dRn1M+9QDfQRNVwJDHfPu2LrK5Y+/XG8iGcRtBCdm3 fYm3ZmO6NiepCORoY5Q=:" }, { "transport":"tcp", "traddr":"192.168.31.44", "host_traddr":"192.168.31.15", "trsvcid":"4420", "dhchap_ctrl_key":"DHHC- 1:03: GaraCO84o/uM0jF4rKJlgTy22bVoV0dRn1M+9QDfQRNVwJDHfPu2LrK5Y+/XG8iGc RtBCdm3fYm3ZmO6NiepCORoY5Q=:" }, { "transport":"tcp", "traddr":"192.168.31.45", "host_traddr":"192.168.31.15", "trsvcid":"4420", "dhchap_ctrl_key":"DHHC- 1:03: GaraCO84o/uM0jF4rKJlgTy22bVoV0dRn1M+9QDfQRNVwJDHfPu2LrK5Y+/XG8iGcRtBCdm3fYm3ZmO6NiepCORoY5Q=:" } ] ] } ] -
Stellen Sie mithilfe der Konfigurations-JSON-Datei eine Verbindung zum ONTAP Controller her:
nvme connect-all -J /etc/nvme/config.jsonBeispiel anzeigen
already connected to hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b5c04f444d33,nqn=nqn.1992-08.com.netapp:sn.2c0c80d9873a11f0bc60d039eab6cb6d:subsystem.istpMNTC_subsys,transport=tcp,traddr=192.168.30.44,trsvcid=4420 already connected to hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b5c04f444d33,nqn=nqn.1992-08.com.netapp:sn.2c0c80d9873a11f0bc60d039eab6cb6d:subsystem.istpMNTC_subsys,transport=tcp,traddr=192.168.31.44,trsvcid=4420 already connected to hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b5c04f444d33,nqn=nqn.1992-08.com.netapp:sn.2c0c80d9873a11f0bc60d039eab6cb6d:subsystem.istpMNTC_subsys,transport=tcp,traddr=192.168.30.45,trsvcid=4420 already connected to hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b5c04f444d33,nqn=nqn.1992-08.com.netapp:sn.2c0c80d9873a11f0bc60d039eab6cb6d:subsystem.istpMNTC_subsys,transport=tcp,traddr=192.168.31.45,trsvcid=4420
-
Überprüfen Sie, ob die dhchap-Geheimnisse für die jeweiligen Controller für jedes Subsystem aktiviert wurden:
-
Überprüfen Sie die Host-dhchap-Schlüssel:
cat /sys/class/nvme-subsystem/nvme-subsys96/nvme96/dhchap_secretDas folgende Beispiel zeigt einen dhchap-Schlüssel:
DHHC-1:01:hhdIYK7rGxHiNYS4d421GxHeDRUAuY0vmdqCp/NOaYND2PSc:
-
Überprüfen Sie die Dhchap-Tasten des Controllers:
cat /sys/class/nvme-subsystem/nvme-subsys96/nvme96/dhchap_ctrl_secretSie sollten eine Ausgabe ähnlich dem folgenden Beispiel sehen:
DHHC-1:03:ZCRrP9MQOeXhFitT7Fvvf/3P6K/qY1HfSmSfM8nLjESJdOjbjK/J6m00ygJgjm0VrRlrgrnHzjtWJmsnoVBO3rPDGEk=:
-
Schritt 9: Überprüfen Sie die bekannten Probleme
Dies sind die bekannten Probleme:
| NetApp Bug ID | Titel | Beschreibung |
|---|---|---|
1503468 |
In RHEL 9.1, |
Der |
RHEL 9.0 NVMe-oF-Hosts erstellen doppelte Persistent Discovery Controller (PDCs) |
Auf NVMe-oF-Hosts können Sie Folgendes verwenden: |