NVMe-of-Host-Konfiguration für SUSE Linux Enterprise Server 15 SP3 mit ONTAP
NVMe over Fabrics oder NVMe-of (einschließlich NVMe/FC und andere Übertragungen) wird für SUSE Linux Enterprise Server 15 SP3 mit ANA (Asymmetric Namespace Access) unterstützt. ANA ist das ALUA-Äquivalent für NVMe-of Umgebungen und wird derzeit mit in-Kernel NVMe Multipath implementiert. Mit diesem Verfahren können Sie NVMe-of mit in-Kernel NVMe Multipath unter Verwendung von ANA unter SUSE Linux Enterprise Server 15 SP3 und ONTAP als Ziel aktivieren.
Siehe "NetApp Interoperabilitätsmatrix" Finden Sie genaue Details zu unterstützten Konfigurationen.
Funktionen
-
SUSE Linux Enterprise Server 15 SP3 unterstützt NVMe/FC und andere Übertragungen.
-
Es gibt keine Unterstützung für NVMe-of für Sanlun. Daher gibt es keine LUHU-Unterstützung für NVMe-of auf SUSE Linux Enterprise Server 15 SP3. Sie können sich auf das NetApp Plug-in im nativen nvme-cli-Paket für NVMe-of verlassen. Dies sollte alle NVMe-of-Übertragungen unterstützen.
-
Sowohl NVMe- als auch SCSI-Datenverkehr können auf demselben vorhandenen Host ausgeführt werden. Es wird also von einer häufig implementierten Host-Konfiguration für Kunden ausgegangen. Daher können Sie für SCSI konfigurieren
dm-multipath
Wie üblich bei SCSI LUNs führen zu mpath-Geräten, während NVMe Multipath möglicherweise für die Konfiguration von NVMe-of Multipath-Geräten auf dem Host verwendet wird.
Bekannte Einschränkungen
Das Booten von SAN über das NVMe-of-Protokoll wird derzeit nicht unterstützt.
Aktivieren Sie NVMe Multipath im Kernel
NVMe Multipath im Kernel ist bereits standardmäßig auf SUSE Linux Enterprise Server-Hosts wie SUSE Linux Enterprise Server 15 SP3 aktiviert. Daher ist hier keine weitere Einstellung erforderlich. Genaue Details zu unterstützten Konfigurationen finden Sie in der"NetApp Interoperabilitätsmatrix".
NVMe-of-Initiator-Pakete
Siehe "NetApp Interoperabilitätsmatrix" Finden Sie genaue Details zu unterstützten Konfigurationen.
-
Vergewissern Sie sich, dass die erforderlichen Kernel- und nvme-cli-MU-Pakete auf dem SUSE Linux Enterprise Server 15 SP3 MU-Host installiert sind.
Beispiel:
# uname -r 5.3.18-59.5-default # rpm -qa|grep nvme-cli nvme-cli-1.13-3.3.1.x86_64
Das oben genannte nvme-cli MU-Paket umfasst jetzt Folgendes:
-
NVMe/FC Skripts zur automatischen Verbindung - erforderlich für NVMe/FC Auto-(re)Verbindung, wenn zugrunde liegende Pfade zu den Namespaces wiederhergestellt werden sowie während des Host-Neustarts:
# rpm -ql nvme-cli-1.13-3.3.1.x86_64 /etc/nvme /etc/nvme/hostid /etc/nvme/hostnqn /usr/lib/systemd/system/nvmefc-boot-connections.service /usr/lib/systemd/system/nvmefc-connect.target /usr/lib/systemd/system/nvmefc-connect@.service ...
-
ONTAP udev Rule - Neue udev-Regel zur Gewährleistung der standardmäßigen NVMe-Multipath-Round-Robin-Load-Balancer für alle ONTAP-Namespaces:
# rpm -ql nvme-cli-1.13-3.3.1.x86_64 /etc/nvme /etc/nvme/hostid /etc/nvme/hostnqn /usr/lib/systemd/system/nvmefc-boot-connections.service /usr/lib/systemd/system/nvmf-autoconnect.service /usr/lib/systemd/system/nvmf-connect.target /usr/lib/systemd/system/nvmf-connect@.service /usr/lib/udev/rules.d/70-nvmf-autoconnect.rules /usr/lib/udev/rules.d/71-nvmf-iopolicy-netapp.rules ... # cat /usr/lib/udev/rules.d/71-nvmf-iopolicy-netapp.rules # Enable round-robin for NetApp ONTAP and NetApp E-Series ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{model}=="NetApp ONTAP Controller", ATTR{iopolicy}="round-robin" ACTION=="add", SUBSYSTEM=="nvme-subsystem", ATTR{model}=="NetApp E-Series", ATTR{iopolicy}="round-robin"
-
NetApp Plug-in für ONTAP Geräte - das bestehende NetApp Plug-in wurde jetzt geändert, um auch ONTAP Namespaces zu verarbeiten.
-
-
Prüfen Sie die hostnqn-Zeichenfolge bei
/etc/nvme/hostnqn
Auf dem Host und stellen Sie sicher, dass es ordnungsgemäß mit der hostnqn-Zeichenfolge für das entsprechende Subsystem auf dem ONTAP-Array übereinstimmt. Beispiel:# cat /etc/nvme/hostnqn nqn.2014-08.org.nvmexpress:uuid:3ca559e1-5588-4fc4-b7d6-5ccfb0b9f054 ::> vserver nvme subsystem host show -vserver vs_fcnvme_145 Vserver Subsystem Host NQN ------- --------- ---------------------------------- vs_nvme_145 nvme_145_1 nqn.2014-08.org.nvmexpress:uuid:c7b07b16-a22e-41a6-a1fd-cf8262c8713f nvme_145_2 nqn.2014-08.org.nvmexpress:uuid:c7b07b16-a22e-41a6-a1fd-cf8262c8713f nvme_145_3 nqn.2014-08.org.nvmexpress:uuid:c7b07b16-a22e-41a6-a1fd-cf8262c8713f nvme_145_4 nqn.2014-08.org.nvmexpress:uuid:c7b07b16-a22e-41a6-a1fd-cf8262c8713f nvme_145_5 nqn.2014-08.org.nvmexpress:uuid:c7b07b16-a22e-41a6-a1fd-cf8262c8713f 5 entries were displayed.
Je nach dem FC-Adapter, der auf dem Host verwendet wird, fahren Sie mit den folgenden Schritten fort.
Konfiguration von NVMe/FC
Broadcom/Emulex
-
Vergewissern Sie sich, dass die empfohlenen Adapter- und Firmware-Versionen vorliegen. Beispiel:
# cat /sys/class/scsi_host/host*/modelname LPe32002-M2 LPe32002-M2 # cat /sys/class/scsi_host/host*/modeldesc Emulex LightPulse LPe32002-M2 2-Port 32Gb Fibre Channel Adapter Emulex LightPulse LPe32002-M2 2-Port 32Gb Fibre Channel Adapter # cat /sys/class/scsi_host/host*/fwrev 12.8.340.8, sli-4:2:c 12.8.840.8, sli-4:2:c
-
Die neueren lpfc-Treiber (sowohl inbox als auch outbox) haben bereits den Standardwert lpfc_enable_fc4_type auf 3 gesetzt, daher müssen Sie diesen nicht mehr explizit in der setzen
/etc/modprobe.d/lpfc.conf
, Und erstellen Sie dieinitrd
. Derlpfc nvme
Die Unterstützung ist bereits standardmäßig aktiviert:# cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type 3
-
Der bestehende native Inbox lpfc Treiber ist bereits der neueste und kompatibel mit NVMe/FC. Daher müssen Sie den lpfc ooob-Treiber nicht installieren.
# cat /sys/module/lpfc/version 0:12.8.0.10
-
-
Vergewissern Sie sich, dass die Initiator-Ports ausgeführt werden:
# cat /sys/class/fc_host/host*/port_name 0x100000109b579d5e 0x100000109b579d5f # cat /sys/class/fc_host/host*/port_state Online Online
-
Vergewissern Sie sich, dass die NVMe/FC-Initiator-Ports aktiviert sind, dass die Ziel-Ports angezeigt werden und alle Ports ausgeführt werden. + im folgenden Beispiel ist nur ein Initiator-Port aktiviert und mit zwei Ziel-LIFs verbunden:
# cat /sys/class/scsi_host/host*/nvme_info NVME Initiator Enabled XRI Dist lpfc0 Total 6144 IO 5894 ELS 250 NVME LPORT lpfc0 WWPN x100000109b579d5e WWNN x200000109b579d5e DID x011c00 ONLINE NVME RPORT WWPN x208400a098dfdd91 WWNN x208100a098dfdd91 DID x011503 TARGET DISCSRVC ONLINE NVME RPORT WWPN x208500a098dfdd91 WWNN x208100a098dfdd91 DID x010003 TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 0000000e49 Cmpl 0000000e49 Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 000000003ceb594f Issue 000000003ce65dbe OutIO fffffffffffb046f abort 00000bd2 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000 FCP CMPL: xb 000014f4 Err 00012abd NVME Initiator Enabled XRI Dist lpfc1 Total 6144 IO 5894 ELS 250 NVME LPORT lpfc1 WWPN x100000109b579d5f WWNN x200000109b579d5f DID x011b00 ONLINE NVME RPORT WWPN x208300a098dfdd91 WWNN x208100a098dfdd91 DID x010c03 TARGET DISCSRVC ONLINE NVME RPORT WWPN x208200a098dfdd91 WWNN x208100a098dfdd91 DID x012a03 TARGET DISCSRVC ONLINE NVME Statistics LS: Xmt 0000000e50 Cmpl 0000000e50 Abort 00000000 LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000 Total FCP Cmpl 000000003c9859ca Issue 000000003c93515e OutIO fffffffffffaf794 abort 00000b73 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000 FCP CMPL: xb 0000159d Err 000135c3
-
Starten Sie den Host neu.
1 MB I/O-Größe aktivieren (optional)
ONTAP meldet in den Identify Controller-Daten ein MDTS (MAX Data Transfer Size) von 8, was bedeutet, dass die maximale E/A-Anforderungsgröße bis zu 1 MB betragen sollte. Um jedoch I/O-Anforderungen mit einer Größe von 1 MB für den Broadcom NVMe/FC-Host zu geben, wird der lpfc-Parameter verwendet lpfc_sg_seg_cnt
Sollte auch bis zu 256 vom Standardwert 64 angestoßen werden. Befolgen Sie dazu die folgenden Anweisungen:
-
Fügen Sie den Wert 256 in der jeweiligen hinzu
modprobe lpfc.conf
Datei:# cat /etc/modprobe.d/lpfc.conf options lpfc lpfc_sg_seg_cnt=256
-
Führen Sie den Befehl aus
dracut -f
, und starten Sie den Host neu. -
Überprüfen Sie nach dem Neustart, ob die oben genannte Einstellung angewendet wurde, indem Sie den entsprechenden sysfs-Wert überprüfen:
# cat /sys/module/lpfc/parameters/lpfc_sg_seg_cnt 256
Jetzt sollte der Broadcom NVMe/FC-Host in der Lage sein, 1-MB-I/O-Anfragen an den ONTAP Namespace-Geräten zu senden.
Marvell/QLogic
Der native Inbox qla2xxx-Treiber, der im neueren SUSE Linux Enterprise Server 15 SP3 MU-Kernel enthalten ist, verfügt über die neuesten Upstream-Fehlerbehebungen. Diese Fehlerbehebungen sind für die Unterstützung von ONTAP unerlässlich.
-
Vergewissern Sie sich, dass Sie den unterstützten Adaptertreiber und die unterstützten Firmware-Versionen ausführen, z. B.:
# cat /sys/class/fc_host/host*/symbolic_name QLE2742 FW:v9.06.02 DVR:v10.02.00.106-k QLE2742 FW:v9.06.02 DVR:v10.02.00.106-k
-
Verifizieren
ql2xnvmeenable
Ist gesetzt, sodass der Marvell-Adapter als NVMe/FC-Initiator fungieren kann:# cat /sys/module/qla2xxx/parameters/ql2xnvmeenable
1
Konfiguration von NVMe/TCP
Im Gegensatz zu NVMe/FC verfügt NVMe/TCP über keine automatische Verbindungsfunktion. Es gibt zwei wesentliche Einschränkungen für den Linux NVMe/TCP-Host:
-
Kein automatischer erneuten Verbindungsaufbau nach der Wiederherstellung von Pfaden NVMe/TCP kann nicht automatisch eine Verbindung zu einem Pfad herstellen, der über den Standard hinaus wiederhergestellt ist
ctrl-loss-tmo
Timer von 10 Minuten nach einem Pfad nach unten. -
Beim Host-Bootup kann keine automatische Verbindung hergestellt werden NVMe/TCP kann auch beim Host-Bootup nicht automatisch eine Verbindung herstellen.
Sie sollten den Wiederholungszeitraum für Failover-Ereignisse auf mindestens 30 Minuten einstellen, um Zeitüberschreitungen zu vermeiden. Sie können den Wiederholungszeitraum erhöhen, indem Sie den Wert des Ctrl_Loss_tmo-Timers erhöhen. Im Folgenden sind die Details aufgeführt:
-
Überprüfen Sie, ob der Initiator-Port die Daten der Erkennungsprotokollseiten in den unterstützten NVMe/TCP LIFs abrufen kann:
# nvme discover -t tcp -w 192.168.1.8 -a 192.168.1.51 Discovery Log Number of Records 10, Generation counter 119 =====Discovery Log Entry 0====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 0 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.56e362e9bb4f11ebbaded039ea165abc:subsystem.nvme_118_tcp_1 traddr: 192.168.2.56 sectype: none =====Discovery Log Entry 1====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 1 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.56e362e9bb4f11ebbaded039ea165abc:subsystem.nvme_118_tcp_1 traddr: 192.168.1.51 sectype: none =====Discovery Log Entry 2====== trtype: tcp adrfam: ipv4 subtype: nvme subsystem treq: not specified portid: 0 trsvcid: 4420 subnqn: nqn.1992-08.com.netapp:sn.56e362e9bb4f11ebbaded039ea165abc:subsystem.nvme_118_tcp_2 traddr: 192.168.2.56 sectype: none ...
-
Überprüfen Sie, ob andere LIF-Kombos des NVMe/TCP-Initiators-Initiators erfolgreich die Daten der Erkennungsprotokoll-Seite abrufen können. Beispiel:
# nvme discover -t tcp -w 192.168.1.8 -a 192.168.1.52 # nvme discover -t tcp -w 192.168.2.9 -a 192.168.2.56 # nvme discover -t tcp -w 192.168.2.9 -a 192.168.2.57
-
Laufen
nvme connect-all
Befehl über alle unterstützten NVMe/TCP-Initiator-Ziel-LIFs über die Nodes hinweg Stellen Sie einen längeren Zeitraum einctrl_loss_tmo
Zeitschaltuhr-Wiederholungszeitraum (z. B. 30 Minuten, die über eingestellt werden kann-l 1800
) Während des connect-all, so dass es für einen längeren Zeitraum im Falle eines Pfadverlusts erneut versuchen würde. Beispiel:# nvme connect-all -t tcp -w 192.168.1.8 -a 192.168.1.51 -l 1800 # nvme connect-all -t tcp -w 192.168.1.8 -a 192.168.1.52 -l 1800 # nvme connect-all -t tcp -w 192.168.2.9 -a 192.168.2.56 -l 1800 # nvme connect-all -t tcp -w 192.168.2.9 -a 192.168.2.57 -l 1800
NVMe-of validieren
-
Überprüfung des NVMe Multipath im Kernel durch Prüfung:
# cat /sys/module/nvme_core/parameters/multipath Y
-
Vergewissern Sie sich, dass die entsprechenden NVMe-of Einstellungen (z. B.
model
Auf einstellenNetApp ONTAP Controller
Undload balancing iopolicy
Auf einstellenround-robin
) Für die jeweiligen ONTAP-Namespaces richtig reflektieren auf dem Host:# cat /sys/class/nvme-subsystem/nvme-subsys*/model NetApp ONTAP Controller NetApp ONTAP Controller # cat /sys/class/nvme-subsystem/nvme-subsys*/iopolicy round-robin round-robin
-
Vergewissern Sie sich, dass die ONTAP-Namespaces auf dem Host ordnungsgemäß reflektieren. Beispiel:
# nvme list Node SN Model Namespace ------------ --------------------- --------------------------------- /dev/nvme0n1 81CZ5BQuUNfGAAAAAAAB NetApp ONTAP Controller 1 Usage Format FW Rev ------------------- ----------- -------- 85.90 GB / 85.90 GB 4 KiB + 0 B FFFFFFFF
Ein weiteres Beispiel:
# nvme list Node SN Model Namespace ------------ --------------------- --------------------------------- /dev/nvme0n1 81CYrBQuTHQFAAAAAAAC NetApp ONTAP Controller 1 Usage Format FW Rev ------------------- ----------- -------- 85.90 GB / 85.90 GB 4 KiB + 0 B FFFFFFFF
-
Überprüfen Sie, ob der Controller-Status jedes Pfads aktiv ist und den korrekten ANA-Status aufweist. Beispiel:
# nvme list-subsys /dev/nvme1n1 nvme-subsys1 - NQN=nqn.1992-08.com.netapp:sn.04ba0732530911ea8e8300a098dfdd91:subsystem.nvme_145_1 \ +- nvme2 fc traddr=nn-0x208100a098dfdd91:pn-0x208200a098dfdd91 host_traddr=nn-0x200000109b579d5f:pn-0x100000109b579d5f live non-optimized +- nvme3 fc traddr=nn-0x208100a098dfdd91:pn-0x208500a098dfdd91 host_traddr=nn-0x200000109b579d5e:pn-0x100000109b579d5e live non-optimized +- nvme4 fc traddr=nn-0x208100a098dfdd91:pn-0x208400a098dfdd91 host_traddr=nn-0x200000109b579d5e:pn-0x100000109b579d5e live optimized +- nvme6 fc traddr=nn-0x208100a098dfdd91:pn-0x208300a098dfdd91 host_traddr=nn-0x200000109b579d5f:pn-0x100000109b579d5f live optimized
Ein weiteres Beispiel:
#nvme list-subsys /dev/nvme0n1 nvme-subsys0 - NQN=nqn.1992-08.com.netapp:sn.37ba7d9cbfba11eba35dd039ea165514:subsystem.nvme_114_tcp_1 \ +- nvme0 tcp traddr=192.168.2.36 trsvcid=4420 host_traddr=192.168.1.4 live optimized +- nvme1 tcp traddr=192.168.1.31 trsvcid=4420 host_traddr=192.168.1.4 live optimized +- nvme10 tcp traddr=192.168.2.37 trsvcid=4420 host_traddr=192.168.1.4 live non-optimized +- nvme11 tcp traddr=192.168.1.32 trsvcid=4420 host_traddr=192.168.1.4 live non-optimized +- nvme20 tcp traddr=192.168.2.36 trsvcid=4420 host_traddr=192.168.2.5 live optimized +- nvme21 tcp traddr=192.168.1.31 trsvcid=4420 host_traddr=192.168.2.5 live optimized +- nvme30 tcp traddr=192.168.2.37 trsvcid=4420 host_traddr=192.168.2.5 live non-optimized +- nvme31 tcp traddr=192.168.1.32 trsvcid=4420 host_traddr=192.168.2.5 live non-optimized
-
Überprüfen Sie, ob das NetApp Plug-in die richtigen Werte für jedes ONTAP Namespace-Gerät anzeigt. Beispiel:
# nvme netapp ontapdevices -o column Device Vserver Namespace Path --------- ------- -------------------------------------------------- /dev/nvme1n1 vserver_fcnvme_145 /vol/fcnvme_145_vol_1_0_0/fcnvme_145_ns NSID UUID Size ---- ------------------------------ ------ 1 23766b68-e261-444e-b378-2e84dbe0e5e1 85.90GB # nvme netapp ontapdevices -o json { "ONTAPdevices" : [ { "Device" : "/dev/nvme1n1", "Vserver" : "vserver_fcnvme_145", "Namespace_Path" : "/vol/fcnvme_145_vol_1_0_0/fcnvme_145_ns", "NSID" : 1, "UUID" : "23766b68-e261-444e-b378-2e84dbe0e5e1", "Size" : "85.90GB", "LBA_Data_Size" : 4096, "Namespace_Size" : 20971520 } ] }
Ein weiteres Beispiel:
# nvme netapp ontapdevices -o column Device Vserver Namespace Path --------- ------- -------------------------------------------------- /dev/nvme0n1 vs_tcp_114 /vol/tcpnvme_114_1_0_1/tcpnvme_114_ns NSID UUID Size ---- ------------------------------ ------ 1 a6aee036-e12f-4b07-8e79-4d38a9165686 85.90GB # nvme netapp ontapdevices -o json { "ONTAPdevices" : [ { "Device" : "/dev/nvme0n1", "Vserver" : "vs_tcp_114", "Namespace_Path" : "/vol/tcpnvme_114_1_0_1/tcpnvme_114_ns", "NSID" : 1, "UUID" : "a6aee036-e12f-4b07-8e79-4d38a9165686", "Size" : "85.90GB", "LBA_Data_Size" : 4096, "Namespace_Size" : 20971520 } ] }
Bekannte Probleme
Es sind keine Probleme bekannt.