• 主页
  • 文档
  • SAN Host
  • 适用于采用 ONTAP 的 SUSE Linux Enterprise Server 15 SP3 的 NVMe-oF 主机配置
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

适用于采用 ONTAP 的 SUSE Linux Enterprise Server 15 SP3 的 NVMe-oF 主机配置

提供者 netapp-ranuk

可支持性

采用 ANA (非对称命名空间访问)的 SUSE Linux Enterprise Server 15 SP3 ( SLES15 SP3 )支持基于网络结构的 NVMe 或 NVMe-oF (包括 NVMe/FC 和其他传输)。ANA 是 NVMe-oF 环境中的 ALUA 等效产品,目前已通过内核 NVMe 多路径实施。此处详细介绍了如何在 SLES15 SP3 和 ONTAP 上使用 ANA 作为目标来启用采用内核 NVMe 多路径的 NVMe-oF 。

功能

  • SLES15 SP3 支持 NVMe/FC 和其他传输。

  • NVMe-oF 不支持 sanlun 。因此,在 SLES15 SP3 上,不存在对 NVMe-oF 的 Lu 支持。您可以改用原生 NVMe-CLI 中包含的 NetApp 插件。此操作应适用于所有 NVMe-oF 传输。

  • NVMe 和 SCSI 流量均可在同一主机上运行。实际上,这应该是客户通常部署的主机配置。因此,对于 SCSI ,您可以像往常一样为 SCSI LUN 配置 dm-multipath ,从而生成 mpath 设备,而 NVMe 多路径则可用于在主机上配置 NVMe-of 多路径设备。

已知限制

没有已知限制。

配置要求

请参见 "NetApp 互操作性表" 有关支持的配置的准确详细信息。

启用内核 NVMe 多路径

默认情况下, SLES15 SP3 等 SLES 主机上已启用内核 NVMe 多路径。因此,此处不需要其他设置。请参见 "NetApp 互操作性表" 有关支持的配置的准确详细信息。

NVMe-oF 启动程序包

请参见 "NetApp 互操作性表" 有关支持的配置的准确详细信息。

  1. 验证 SLES15 SP3 MU 主机上是否已安装所需的内核和 NVMe-CLI MU 软件包。

    示例

    # uname -r
    5.3.18-59.5-default
    
    # rpm -qa|grep nvme-cli
    nvme-cli-1.13-3.3.1.x86_64

    上述 NVMe-CLI MU 软件包现在包括以下内容:

    • * NVMe/FC 自动连接脚本 * —在还原命名空间的底层路径以及主机重新启动期间, NVMe/FC 自动(重新)连接所需的脚本:

      # 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
      ...
    • * NVMe udev rule* - 用于确保适用场景多路径循环负载平衡器默认 ONTAP 所有 ONTAP 命名空间的新 udev 规则:

      # 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"
    • * 适用于 ONTAP 设备的 NetApp 插件 * —现有的 NetApp 插件现已进行修改,以处理 ONTAP 命名空间。

  2. 检查主机上 ` /etc/nve/hostnqn` 处的 hostnqn 字符串,并确保其与 ONTAP 阵列上相应子系统的 hostnqn 字符串正确匹配。例如:

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

    根据主机上使用的 FC 适配器,继续执行以下步骤。

正在配置 NVMe/FC

Broadcom/Emulex

  1. 验证您是否具有建议的适配器和固件版本。例如:

    # 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
    • 较新的 lpfc 驱动程序(收件箱和发件箱)已将 lpfc_enable_FC4_type 默认设置为 3 ,因此,您不再需要在 ` /etc/modprobe.d/lpfc.conf` 中明确设置此设置,然后重新创建 initrd 。默认情况下,已启用 lpfc NVMe 支持:

      # cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type
      3
    • 现有的原生收件箱 lpfc 驱动程序已经是最新版本,并且与 NVMe/FC 兼容。因此,您无需安装 lpfc OOB 驱动程序。

      # cat /sys/module/lpfc/version
      0:12.8.0.10
  2. 验证启动程序端口是否已启动且正在运行。

    # cat /sys/class/fc_host/host*/port_name
    0x100000109b579d5e
    0x100000109b579d5f
    # cat /sys/class/fc_host/host*/port_state
    Online
    Online
  3. 确认 NVMe/FC 启动程序端口已启用,并且您能够看到目标端口,并且所有端口均已启动且正在运行。在此示例中,仅启用了 1 个启动程序端口,并与两个目标 LIF 进行连接,如输出所示:

    # 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. 重新启动主机。

启用 1 MB I/O 大小(可选)

ONTAP 在 "Identify Controller" (识别控制器)数据中报告 MTS ( MAX Data 传输大小)为 8 ,这意味着最大 I/O 请求大小应最多为 1 MB 。但是,对于 Broadcom NVMe/FC 主机 1 MB 大小的问题描述 I/O 请求, lpfc 参数 lpfc_sg_seg_cnt 也应从默认值 64 增加到 256 。请按照以下说明执行此操作:

  1. 在相应的 modprobe lpfc.conf 文件中附加值 256 :

    # cat /etc/modprobe.d/lpfc.conf
    options lpfc lpfc_sg_seg_cnt=256
  2. 运行 dracut -f 命令,然后重新启动主机。

  3. 重新启动后,通过检查相应的 sysfs 值来验证是否已应用上述设置:

    # cat /sys/module/lpfc/parameters/lpfc_sg_seg_cnt
    256

现在, Broadcom NVMe/FC 主机应该能够在 ONTAP 命名空间设备上最多发送 1 MB 的 I/O 请求。

Marvell/QLogic

较新的 SLES15 SP3 MU 内核中包含的原生收件箱 qla2xxx 驱动程序具有最新的上游修复程序,这些修复程序对于 ONTAP 支持至关重要。

  • 验证您是否正在运行受支持的适配器驱动程序和固件版本,例如:

    # 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
  • 验证是否已设置 ql2xnvmeenable ,以使 Marvell 适配器能够用作 NVMe/FC 启动程序:

    ` # cat /sys/module/qla2xxx/parameters/ql2xnvmeenable 1`

正在验证 NVMe-oF

  1. 通过检查以下各项验证是否确实已启用内核 NVMe 多路径:

    # cat /sys/module/nvme_core/parameters/multipath
    Y
  2. 验证相应 ONTAP 命名空间的适当 NVMe-oF 设置(例如,型号设置为 NetApp ONTAP 控制器 ,负载平衡策略设置为 round-robin )是否正确反映在主机上:

    # 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

NVMe/FC

  1. 验证是否已创建命名空间。例如:

    # nvme list
    Node    SN                        Model                   Namespace
    ------  -------------             -------------------     ---------------
    /dev/nvme1n1 814vWBNRwfBGAAAAAAAB  NetApp ONTAP Controller    1
    
    Usage                   Format FW   Rev
    --------                ---------  ---------
    85.90 GB / 85.90 GB   4 KiB + 0 B   FFFFFFFF
  2. 验证 ANA 路径的状态。例如:

    # 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 inaccessible
    +- nvme3 fc traddr=nn-0x208100a098dfdd91:pn-0x208500a098dfdd91 host_traddr=nn-0x200000109b579d5e:pn-0x100000109b579d5e live inaccessible
    +- 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
  3. 验证 ONTAP 命名空间的 NetApp 插件。例如:

    # 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
         }
      ]
    }

故障排除

lpfc 详细日志记录

  1. 您可以将 lpfc_log_verbose 驱动程序设置为以下任意值以记录 NVMe/FC 事件。

    #define LOG_NVME 0x00100000 /* NVME general events. */
    #define LOG_NVME_DISC 0x00200000 /* NVME Discovery/Connect events. */
    #define LOG_NVME_ABTS 0x00400000 /* NVME ABTS events. */
    #define LOG_NVME_IOERR 0x00800000 /* NVME IO Error events. */
  2. 设置上述任一值后,运行 dracut-f 并重新启动主机。

  3. 重新启动后,验证设置。

    # cat /etc/modprobe.d/lpfc.conf
    options lpfc lpfc_log_verbose=0xf00083
    
    # cat /sys/module/lpfc/parameters/lpfc_log_verbose
    15728771

qla2xxx 详细日志记录

NVMe/FC 没有与 lpfc 驱动程序类似的特定 qla2xxx 日志记录。因此,您可以使用以下步骤设置常规 qla2xxx 日志记录级别:

  1. ql2xextended_error_logging=0x1e400000 值附加到相应的 modprobe qla2xxx conf 文件中。

  2. 运行 dracut -f 命令重新创建 initramfs ,然后重新启动主机。

  3. 重新启动后,验证是否已按如下所示应用详细日志记录:

    # cat /etc/modprobe.d/qla2xxx.conf
    options qla2xxx ql2xnvmeenable=1 ql2xextended_error_logging=0x1e400000
    # cat /sys/module/qla2xxx/parameters/ql2xextended_error_logging
    507510784

常见 NVMe-CLI 错误和解决方法

下表显示了在 NVMe 发现, NVMe 连接或 NVMe 连接所有操作期间 NVMe-CLI 显示的错误以及解决方法:

NVMe-CLI 显示的错误 可能的发生原因 临时解决策

无法写入 /dev/nve-Fabric :参数 无效

语法不正确

确保 NVMe 命令使用的语法正确。

无法写入 /dev/nve-Fabric :没有此类文件或目录

多个问题可能会触发此问题。将错误的参数传递给 NVMe 命令是常见原因之一。

  • 确保已将正确的参数(例如正确的 WWNN 字符串, WWPN 字符串等)传递给命令。

  • 如果参数正确,但您仍看到此错误,请检查 ` /sys/class/scsi_host/host*/nve_info` 输出是否正确, NVMe 启动程序是否显示为 Enabled , NVMe/FC 目标 LIF 是否正确显示在此处的远程端口部分下。示例

    # cat /sys/class/scsi_host/host*/nvme_info
    NVME Initiator Enabled
    NVME LPORT lpfc0 WWPN x10000090fae0ec9d WWNN x20000090fae0ec9d DID x012000 ONLINE
    NVME RPORT WWPN x200b00a098c80f09 WWNN x200a00a098c80f09 DID x010601 TARGET DISCSRVC ONLINE
    NVME Statistics
    LS: Xmt 0000000000000006 Cmpl 0000000000000006
    FCP: Rd 0000000000000071 Wr 0000000000000005 IO 0000000000000031
    Cmpl 00000000000000a6 Outstanding 0000000000000001
    NVME Initiator Enabled
    NVME LPORT lpfc1 WWPN x10000090fae0ec9e WWNN x20000090fae0ec9e DID x012400 ONLINE
    NVME RPORT WWPN x200900a098c80f09 WWNN x200800a098c80f09 DID x010301 TARGET DISCSRVC ONLINE
    NVME Statistics
    LS: Xmt 0000000000000006 Cmpl 0000000000000006
    FCP: Rd 0000000000000073 Wr 0000000000000005 IO 0000000000000031
    Cmpl 00000000000000a8 Outstanding 0000000000000001`
  • 如果目标 LIF 未在 nve_info 输出中显示为上述内容,请检查 ` /var/log/messages` 和 dMesg 输出中是否存在任何可疑的 NVMe/FC 故障,并相应地进行报告或修复。

没有要提取的发现日志条目

通常,如果未将 ` /etc/nve/hostnqn` 字符串添加到 NetApp 阵列上的相应子系统,或者在相应子系统中添加了不正确的 hostnqn 字符串,则会出现此情况。

确保已将确切的 ` /etc/nve/hostnqn` 字符串添加到 NetApp 阵列上的相应子系统中(通过 vserver nvme subsystem host show 命令进行验证)。

无法写入 /dev/nve-Fabric :操作已在进行中

查看控制器关联或指定操作是否已创建或正在创建。在上述自动连接脚本中可能会发生这种情况。

无对于 NVMe 发现,请尝试在一段时间后运行此命令。对于 NVMe connect and connect-all ,请运行 nvme list 命令以验证是否已在主机上创建并显示命名空间设备。

何时联系技术支持

如果您仍面临问题,请收集以下文件和命令输出,并联系技术支持以进行进一步的分类:

cat /sys/class/scsi_host/host*/nvme_info
/var/log/messages
dmesg
nvme discover output as in:
nvme discover --transport=fc --traddr=nn-0x200a00a098c80f09:pn-0x200b00a098c80f09 --host-traddr=nn-0x20000090fae0ec9d:pn-0x10000090fae0ec9d
nvme list
nvme list-subsys /dev/nvmeXnY