Skip to main content
SAN hosts and cloud clients
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

适用于采用ONTAP的Oracle Linux 8.10的NVMe-oF主机配置

贡献者

NetApp SAN主机配置支持采用非对称命名空间访问(AANA)的基于网络结构的NVMe (NVMe-oF)协议。在NVMe-oF环境中、ANA相当于iSCSI和FCP环境中的非对称逻辑单元访问(AMUA)多路径功能。ANA是使用内核NVMe多路径功能实施的。

关于此任务

您可以在适用于Oracle Linux 8.10的NVMe-oF主机配置中使用以下支持和功能。在开始配置过程之前、您还应查看已知限制。

  • 提供支持:

    • 支持基于TCP的NVMe (NVMe/TCP)和基于光纤通道的NVMe (NVMe/FC)。这样、本机NVMe-CLI软件包中的NetApp插件就能够显示NVMe/FC和NVMe/TCP命名区的ONTAP信息。

      根据主机配置、您可以配置NNMe/FC或NVMe/TCP协议、或者同时配置这两种协议。

    • 在同一主机上同时运行NVMe和SCSI流量。例如、您可以为SCSI LUN的SCSI设备配置dm-Multipath mpath、并使用NVMe多路径在主机上配置NVMe-oF命名空间设备。

    有关支持的配置的其他详细信息、请参见 "NetApp 互操作性表工具"

  • 可用功能:

    • 默认情况下、在Oracle Linux 8.10中、已为NVMe命名空间启用内核NVMe多路径功能。您无需配置显式设置。

  • 已知限制:

    • 目前不支持使用NVMe-oF协议启动SAN。

    • 在Oracle Linux 8.10主机上、NVMe-oF不支持NetApp sanlun主机实用程序。而是可以依赖本机软件包中的NetApp插件 `nvme-cli`进行所有NVMe-oF传输。

验证软件版本

验证Oracle Linux 8.10支持的最低软件版本。

步骤
  1. 在服务器上安装Oracle Linux 8.10 GA。安装完成后、验证是否正在运行指定的Oracle Linux 8.10 GA内核:

    uname -r
    5.15.0-206.153.7.1.el8uek.x86_64
  2. 安装 NVMe-CLI 软件包:

    rpm -qa|grep nvme-cli
    nvme-cli-1.16-9.el8.x86_64
  3. 在Oracle Linux 8.10主机上,检查 hostnqn `/etc/nvme/hostnqn`以下位置的字符串:

    cat /etc/nvme/hostnqn
    nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
  4. 验证Oracle Linux 8.10主机上的ONTAP阵列上对应子系统是否 hostnqn`匹配 `hostnqn

    vserver nvme subsystem host show -vserver vs_coexistence_LPE36002
    显示示例
    Vserver Subsystem Priority  Host NQN
    ------- --------- --------  ------------------------------------------------
    vs_coexistence_LPE36002
            nvme
                      regular   nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
            nvme1
                      regular   nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
            nvme2
                      regular   nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
            nvme3
                      regular   nqn.2014-08.org.nvmexpress:uuid:edd38060-00f7-47aa-a9dc-4d8ae0cd969a
    4 entries were displayed.
    备注 如果 hostnqn`字符串不匹配、请使用 `vserver modify`命令更新 `hostnqn`相应ONTAP阵列子系统上的字符串、使其与主机上的字符串 `/etc/nvme/hostnqn`匹配 `hostnqn
  5. 如果要在同一主机上同时运行NVMe和SCSI流量、NetApp建议分别对ONTAP命名空间和ONTAP LUN使用内核NVMe多路径。 `dm-multipath`此操作应从中排除ONTAP命名空间、并防止 `dm-multipath`声明ONTAP命名空间 `dm-multipath`设备:

    1. 将设置添加 `enable_foreign`到 `/etc/multipath.conf`文件:

      # cat /etc/multipath.conf
      defaults {
        enable_foreign     NONE
      }
    2. 重新启动 `multipathd`守护进程以应用新设置:

      systemctl restart multipathd

配置 NVMe/FC

您可以使用Broadcom/Emulex FC或Marvell/Qlogic FC适配器配置NVMe/FC。对于配置有Broadcom适配器的NVMe/FC、可以启用大小为1 MB的I/O请求。

为Broadcom/Emulex适配器配置NVMe/FC。

步骤
  1. 验证您使用的适配器型号是否受支持:

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

      LPe36002-M64
      LPe36002-M64
    2. cat /sys/class/scsi_host/host*/modeldesc

      Emulex LPe36002-M64 2-Port 64Gb Fibre Channel Adapter
      Emulex LPe36002-M64 2-Port 64Gb Fibre Channel Adapter
  2. 确认您使用的是建议的Broadcom lpfc 固件和内置驱动程序:

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

      14.4.317.10, sli-4:6:d
      14.4.317.10, sli-4:6:d
    2. cat /sys/module/lpfc/version

      0:14.2.0.13

      有关支持的适配器驱动程序和固件版本的最新列表,请参见"NetApp 互操作性表工具"

  3. 验证是否 `lpfc_enable_fc4_type`设置为"3":

    cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type

  4. 验证启动程序端口是否已启动且正在运行、以及您是否可以看到目标生命周期:

    1. cat /sys/class/fc_host/host*/port_name

      0x100000109bf0449c
      0x100000109bf0449d
    2. cat /sys/class/fc_host/host*/port_state

      Online
      Online
    3. cat /sys/class/scsi_host/host*/nvme_info

      显示示例
      NVME Initiator Enabled
      XRI Dist lpfc0 Total 6144 IO 5894 ELS 250
      NVME LPORT lpfc0 WWPN x100000109bf0449c WWNN x200000109bf0449c DID x061500 ONLINE
      NVME RPORT       WWPN x200bd039eab31e9c WWNN x2005d039eab31e9c DID x020e06 TARGET DISCSRVC ONLINE
      NVME RPORT       WWPN x2006d039eab31e9c WWNN x2005d039eab31e9c DID x020a0a TARGET DISCSRVC ONLINE
      NVME Statistics
      LS: Xmt 000000002c Cmpl 000000002c Abort 00000000
      LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
      Total FCP Cmpl 000000000008ffe8 Issue 000000000008ffb9 OutIO ffffffffffffffd1
              abort 0000000c noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000
      FCP CMPL: xb 0000000c Err 0000000c
      NVME Initiator Enabled
      XRI Dist lpfc1 Total 6144 IO 5894 ELS 250
      NVME LPORT lpfc1 WWPN x100000109bf0449d WWNN x200000109bf0449d DID x062d00 ONLINE
      NVME RPORT       WWPN x201fd039eab31e9c WWNN x2005d039eab31e9c DID x02090a TARGET DISCSRVC ONLINE
      NVME RPORT       WWPN x200cd039eab31e9c WWNN x2005d039eab31e9c DID x020d06 TARGET DISCSRVC ONLINE
      NVME Statistics
      LS: Xmt 0000000041 Cmpl 0000000041 Abort 00000000
      LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
      Total FCP Cmpl 00000000000936bf Issue 000000000009369a OutIO ffffffffffffffdb
              abort 00000016 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000
      FCP CMPL: xb 00000016 Err 00000016

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

ONTAP会在"识别 控制器"数据中报告MDTS (MAX Data传输大小)为8。这意味着最大I/O请求大小最多可以为1 MB。要向Broadcom NVMe/FC主机发出大小为1 MB的I/O请求、应将参数的值 `lpfc_sg_seg_cnt`从默认值64增加 `lpfc`到256。

备注 这些步骤不适用于逻辑NVMe/FC主机。
步骤
  1. 将 `lpfc_sg_seg_cnt`参数设置为256:

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

  3. 验证的预期值是否 `lpfc_sg_seg_cnt`为256:

    cat /sys/module/lpfc/parameters/lpfc_sg_seg_cnt

配置 NVMe/TCP

NVMe/TCP协议不支持此 auto-connect`操作。相反、您可以通过手动执行NVMe/TCP或 `connect-all`操作来发现NVMe/TCP子系统和命名路径 `connect

步骤
  1. 验证启动程序端口是否可以通过受支持的NVMe/TCP LIF提取发现日志页面数据:

    nvme discover -t tcp -w <host-traddr> -a <traddr>
    显示示例
    #	nvme discover -t tcp -w 192.168.6.1 -a 192.168.6.24 Discovery Log Number of Records 20, Generation counter 45
    =====Discovery Log Entry 0======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  6
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:discovery
    traddr:  192.168.6.25
    sectype: none
    =====Discovery Log Entry 1======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  1
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:discovery
    traddr:  192.168.5.24
    sectype: none
    =====Discovery Log Entry 2======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  4
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:discovery
    traddr:  192.168.6.24
    sectype: none
    =====Discovery Log Entry 3======
    trtype:  tcp
    adrfam:  ipv4
    subtype: unrecognized
    treq:    not specified
    portid:  2
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:discovery
    traddr:  192.168.5.25
    sectype: none
    =====Discovery Log Entry 4======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  6
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:subsystem.nvme_tcp_4
    traddr:  192.168.6.25
    sectype: none
    =====Discovery Log Entry 5======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  1
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.e6c438e66ac211ef9ab8d039eab31e9d:subsystem.nvme_tcp_4
    ..........
  2. 验证所有其他NVMe/TCP启动程序-目标LIF组合是否可以成功提取发现日志页面数据:

    nvme discover -t tcp -w <host-traddr> -a <traddr>
    显示示例
    # nvme discover -t tcp -w 192.168.6.1 -a 192.168.6.24
    # nvme discover -t tcp -w 192.168.6.1 -a 192.168.6.25
    # nvme discover -t tcp -w 192.168.5.1 -a 192.168.5.24
    # nvme discover -t tcp -w 192.168.5.1 -a 192.168.5.25
  3. 在节点中所有受支持的NVMe/TCP启动程序目标生命周期中运行 `nvme connect-all`命令:

    nvme connect-all -t tcp -w <host-traddr> -a <traddr> -l <ctrl_loss_timeout_in_seconds>
    显示示例
    #	nvme	connect-all	-t	tcp	-w	192.168.5.1	-a	192.168.5.24	-l -1
    #	nvme	connect-all	-t	tcp	-w	192.168.5.1	-a	192.168.5.25	-l -1
    #	nvme	connect-all	-t	tcp	-w	192.168.6.1	-a	192.168.6.24	-l -1
    #	nvme	connect-all	-t	tcp	-w	192.168.6.1	-a	192.168.6.25	-l -1
    备注 NetApp建议将选项设置 `ctrl-loss-tmo`为"-1"、以便NVMe/TCP启动程序在路径丢失时无限期地尝试重新连接。

验证 NVMe-oF

要支持ONTAP LUN正确运行、请验证内核NVMe多路径状态、ANA状态和ONTAP命名空间是否适用于NVMe-oF配置。

步骤
  1. 验证是否已启用内核 NVMe 多路径:

    cat /sys/module/nvme_core/parameters/multipath

    Y

  2. 验证NetApp ONTAP相应ONTAP命名库的NVMe-oF设置(例如、型号设置为"NVMe Controller"、负载平衡iopolicy设置为"round -robin")是否正确显示在主机上:

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

      NetApp ONTAP Controller
      NetApp ONTAP Controller
    2. cat /sys/class/nvme-subsystem/nvme-subsys*/iopolicy

      round-robin
      round-robin
  3. 验证是否已在主机上创建并正确发现命名空间:

    nvme list

    显示示例
    Node         SN                   Model
    ---------------------------------------------------------
    /dev/nvme0n1 814vWBNRwf9HAAAAAAAB NetApp ONTAP Controller
    /dev/nvme0n2 814vWBNRwf9HAAAAAAAB NetApp ONTAP Controller
    /dev/nvme0n3 814vWBNRwf9HAAAAAAAB NetApp ONTAP Controller
    
    Namespace Usage   Format               FW            Rev
    -----------------------------------------------------------
    1                 85.90 GB / 85.90 GB  4 KiB + 0 B   FFFFFFFF
    2                 85.90 GB / 85.90 GB  24 KiB + 0 B  FFFFFFFF
    3	                85.90 GB / 85.90 GB  4 KiB + 0 B   FFFFFFFF
  4. 验证每个路径的控制器状态是否为活动状态且是否具有正确的ANA状态:

    nvme list-subsys /dev/nvme0n1

    显示示例
    nvme-subsys0 - NQN=nqn.1992- 08.com.netapp: 4b4d82566aab11ef9ab8d039eab31e9d:subsystem.nvme\
    +-  nvme1 fc traddr=nn-0x2038d039eab31e9c:pn-0x203ad039eab31e9c host_traddr=nn-0x200034800d756a89:pn-0x210034800d756a89 live optimized
    +-  nvme2 fc traddr=nn-0x2038d039eab31e9c:pn-0x203cd039eab31e9c host_traddr=nn-0x200034800d756a88:pn-0x210034800d756a88 live optimized
    +- nvme3 fc traddr=nn-0x2038d039eab31e9c:pn-0x203ed039eab31e9c host_traddr=nn-0x200034800d756a89:pn-0x210034800d756a89 live non-optimized
    +-  nvme7 fc traddr=nn-0x2038d039eab31e9c:pn-0x2039d039eab31e9c host_traddr=nn-0x200034800d756a88:pn-0x210034800d756a88 live non-optimized
  5. 验证NetApp插件是否为每个ONTAP 命名空间设备显示正确的值:

    nvme netapp ontapdevices -o column

    显示示例
    Device         Vserver                  Namespace Path                NSID UUID                                  Size
    -------------- ------------------------ ----------------------------- ---- ------------------------------------- ---------
    /dev/nvme0n1   vs_coexistence_QLE2772   /vol/fcnvme_1_1_0/fcnvme_ns   1    159f9f88-be00-4828-aef6-197d289d4bd9  10.74GB
    /dev/nvme0n2   vs_coexistence_QLE2772   /vol/fcnvme_1_1_1/fcnvme_ns   2    2c1ef769-10c0-497d-86d7-e84811ed2df6  10.74GB
    /dev/nvme0n3   vs_coexistence_QLE2772   /vol/fcnvme_1_1_2/fcnvme_ns   3    9b49bf1a-8a08-4fa8-baf0-6ec6332ad5a4  10.74GB

已知问题

使用ONTAP版本的Oracle Linux 8.10的NVMe-oF主机配置存在以下已知问题:

NetApp 错误 ID 标题 Description

CONTAPEXT-1082

Oracle Linux 8.10 NVMe-oF主机会创建重复的PDC

在Oracle Linux 8.10 NVMe-oF主机上、可通过将选项与命令结合 nvme discover`使用来创建永久性发现控制器(PDC) `-p。对于给定的启动程序-目标组合、每次执行 `nvme discover`命令时应创建一个PDC。但是、从Oracle Linux 8.x开始、NVMe-oF主机会创建一个重复的PDC。这会浪费主机和目标上的资源。