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

NVMe-of-Host-Konfiguration für SUSE Linux Enterprise Server 15 SP3 mit ONTAP

Beitragende

NVMe over Fabrics oder NVMe-of (einschließlich NVMe/FC und andere Transportunternehmen) werden von SUSE Linux Enterprise Server 15 SP3 (SLES15 SP3) mit ANA (Asymmetric Namespace Access) unterstützt. ANA ist das ALUA-Äquivalent in einer NVMe-of Umgebung und ist derzeit mit NVMe Multipath im Kernel implementiert. Die Details zur Aktivierung von NVMe-of mit in-Kernel NVMe Multipath unter Verwendung von ANA auf SLES15 SP3 und ONTAP als Ziel wurden hier dokumentiert.

Siehe "NetApp Interoperabilitätsmatrix" Finden Sie genaue Details zu unterstützten Konfigurationen.

Funktionen

  • SLES15 SP3 unterstützt NVMe/FC und andere Transporte.

  • Es gibt keine Unterstützung für NVMe-of für Sanlun. Daher gibt ES keine UNTERSTÜTZUNG VON LUHU für NVMe-of auf SLES15 SP3. Kunden können sich darauf verlassen, dass das NetApp Plug-in in der nativen nvme-cli nicht gleich ist. Dies sollte bei allen NVMe-of Transporten möglich sein.

  • 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 auf SLES-Hosts wie SLES15 SP3 standardmäßig aktiviert. Daher ist hier keine weitere Einstellung erforderlich. Siehe "NetApp Interoperabilitätsmatrix" Finden Sie genaue Details zu unterstützten Konfigurationen.

NVMe-of-Initiator-Pakete

Siehe "NetApp Interoperabilitätsmatrix" Finden Sie genaue Details zu unterstützten Konfigurationen.

  1. Vergewissern Sie sich, dass auf dem SLES15 SP3 MU-Host die erforderlichen Kernel- und nvme-cli-ME-Pakete 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.

  2. 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

  1. 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 die initrd. Der lpfc 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
  2. 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
  3. Überprüfen Sie, ob die NVMe/FC-Initiator-Ports aktiviert sind und Sie die Ziel-Ports sehen können. Alle sind betriebsbereit. In diesem Beispiel ist nur 1 Initiator-Port aktiviert und mit zwei Ziel-LIFs verbunden, wie in der Ausgabe zu sehen ist:

    # 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
  4. 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:

  1. 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
  2. A ausführen dracut -f Führen Sie einen Befehl aus, und starten Sie den Host neu.

  3. Ü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, im neueren SLES15 SP3 MU-Kernel enthaltene Qla2xxx-Treiber verfügt über die neuesten Upstream-Fixes, die für die ONTAP-Unterstützung wesentlich sind.

  1. 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
  2. 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:

Schritte
  1. Ü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
    ...
  2. Ü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
  3. Laufen nvme connect-all Befehl über alle unterstützten NVMe/TCP-Initiator-Ziel-LIFs über die Nodes hinweg Stellen Sie einen längeren Zeitraum ein ctrl_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

  1. Überprüfung des NVMe Multipath im Kernel durch Prüfung:

    # cat /sys/module/nvme_core/parameters/multipath
    Y
  2. Vergewissern Sie sich, dass die entsprechenden NVMe-of Einstellungen (z. B. model Auf einstellen NetApp ONTAP Controller Und load balancing iopolicy Auf einstellen round-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
  3. 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
  4. Ü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
  5. Ü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.