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

使用ONTAP存储为 NVMe-oF 配置 RHEL 8.6

贡献者 netapp-sarajane

Red Hat Enterpirse Linux (RHEL) 主机支持具有非对称命名空间访问 (ANA) 的 NVMe over Fibre Channel (NVMe/FC) 和 NVMe over TCP (NVMe/TCP) 协议。 ANA 提供与 iSCSI 和 FCP 环境中的非对称逻辑单元访问 (ALUA) 等效的多路径功能。

了解如何为 RHEL 8.6 配置 NVMe over Fabrics (NVMe-oF) 主机。有关更多支持和功能信息,请参阅"NVME-oF 概述"

RHEL 8.6 的 NVMe-oF 具有以下已知限制:

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

  • 默认情况下,RHEL 8.6 中的 NVMe-oF 主机上禁用内核 NVMe 多路径;您必须手动启用它。

  • 由于已知问题,NVMe/TCP 可作为技术预览使用。

第1步:(可选)启用SAN启动

您可以配置主机以使用 SAN 启动来简化部署并提高可扩展性。使用"互操作性表工具"验证您的 Linux 操作系统、主机总线适配器 (HBA)、HBA 固件、HBA 启动 BIOS 和ONTAP版本是否支持 SAN 启动。

步骤
  1. "创建 NVMe 命名空间并将其映射到主机"

  2. 在服务器 BIOS 中为 SAN 启动命名空间映射到的端口启用 SAN 启动。

    有关如何启用 HBA BIOS 的信息,请参见供应商专用文档。

  3. 重新启动主机并验证操作系统是否已启动并正在运行。

步骤 2:验证软件版本和 NVMe 配置

检查您的系统是否满足软件要求并验证 NVMe 包安装和主机配置。

步骤
  1. 在服务器上安装 RHEL 8.6。安装完成后,验证您是否正在运行所需的 RHEL 8.6 内核:

    uname -r

    RHEL 内核版本示例:

    4.18.0-372.9.1.el8.x86_64
  2. 安装 NVMe-CLI 软件包:

    rpm -qa|grep nvme-cli

    以下示例显示了 nvme-cli 软件包版本:

    nvme-cli-1.16-3.el8.x86_64
  3. 安装 libnvme 软件包:

    rpm -qa|grep libnvme

    以下示例显示了 libnvme 软件包版本:

    libnvme-1.0-3.el8.x86_64
  4. 启用内核 NVMe 多路径。

    grubby --args=nvme_core.multipath=Y --update-kernel /boot/vmlinuz-4.18.0-372.9.1.el8.x86_64
  5. 在 RHEL 8.6 主机上,检查 hostnqn`字符串位于 `/etc/nvme/hostnqn

    cat /etc/nvme/hostnqn

    下面的例子展示了 `hostnqn`版本:

    nqn.2014-08.org.nvmexpress:uuid:9ed5b327-b9fc-4cf5-97b3-1b5d986345d1
  6. 验证 `hostnqn`字符串匹配 `hostnqn`ONTAP存储系统上相应子系统的字符串:

    ::> vserver nvme subsystem host show -vserver vs_fcnvme_141
    显示示例
    Vserver     Subsystem          Host NQN
    ----------- --------------- ----------------------------------------------------------
    vs_fcnvme_141   nvme_141_1    nqn.2014-08.org.nvmexpress:uuid:9ed5b327-b9fc-4cf5-97b3-1b5d986345d1
    备注 如果 `hostnqn`字符串不匹配,您应该使用 `vserver modify`命令来更新 `hostnqn`相应ONTAP存储系统 NVMe 子系统上的字符串以匹配 `hostnqn`细绳 `/etc/nvme/hostnqn`在主机上。
  7. 重新启动主机。

    备注

    为了在同一主机上运行 NVMe 和 SCSI 流量, NetApp建议对ONTAP命名空间使用内核 NVMe 多路径,对ONTAP LUN 使用 dm-multipath。为了防止 dm-multipath 声明ONTAP命名空间设备,请通过添加 `enable_foreign`设置为 `/etc/multipath.conf`文件:

    cat /etc/multipath.conf
    defaults {
            enable_foreign     NONE
    }
  8. 运行 systemctl restart multipathd 以重新启动 multipathd 守护进程。

步骤 3:配置 NVMe/FC 或 NVMe/TCP

使用 Broadcom/Emulex 或 Marvell/QLogic 适配器配置 NVMe/FC,或使用手动发现和连接操作配置 NVMe/TCP。

FC——Broadcom/Emulex

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

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

    1. 显示模型名称:

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

      您应该看到类似以下内容的输出:

      LPe32002-M2
      LPe32002-M2
    2. 显示模型描述:

      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
  2. 确认您使用的是建议的Broadcom lpfc 固件和内置驱动程序:

    1. 显示固件版本:

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

      该命令返回固件版本:

      12.8.351.47, sli-4:2:c
      12.8.351.47, sli-4:2:c
    2. 显示收件箱驱动程序版本:

      cat /sys/module/lpfc/version

      以下示例显示了驱动程序版本:

    0:14.0.0.4

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

  3. 请验证 lpfc_enable_fc4_type 设置为 3

    cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type
  4. 验证是否可以查看启动程序端口:

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

    您应该看到类似以下内容的输出:

    0x100000109b1c1204
    0x100000109b1c1205
  5. 验证启动程序端口是否联机:

    cat /sys/class/fc_host/host*/port_state

    您应看到以下输出:

    Online
    Online
  6. 验证NVMe/FC启动程序端口是否已启用且目标端口是否可见:

    cat /sys/class/scsi_host/host*/nvme_info
    显示示例
    NVME Initiator Enabled
    XRI Dist lpfc0 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc0 WWPN x100000109b1c1204 WWNN x200000109b1c1204 DID x011d00 ONLINE
    NVME RPORT WWPN x203800a098dfdd91 WWNN x203700a098dfdd91 DID x010c07 TARGET DISCSRVC ONLINE
    NVME RPORT WWPN x203900a098dfdd91 WWNN x203700a098dfdd91 DID x011507 TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 0000000f78 Cmpl 0000000f78 Abort 00000000
    LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 000000002fe29bba Issue 000000002fe29bc4 OutIO 000000000000000a
    abort 00001bc7 noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 00001e15 Err 0000d906
    
    NVME Initiator Enabled
    XRI Dist lpfc1 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc1 WWPN x100000109b1c1205 WWNN x200000109b1c1205 DID x011900 ONLINE
    NVME RPORT WWPN x203d00a098dfdd91 WWNN x203700a098dfdd91 DID x010007 TARGET DISCSRVC ONLINE
    NVME RPORT WWPN x203a00a098dfdd91 WWNN x203700a098dfdd91 DID x012a07 TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 0000000fa8 Cmpl 0000000fa8 Abort 00000000
    LS XMIT: Err 00000000 CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 000000002e14f170 Issue 000000002e14f17a OutIO 000000000000000a
    abort 000016bb noxri 00000000 nondlp 00000000 qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 00001f50 Err 0000d9f8
FC——Marvell/QLogic

为Marvell/QLogic适配器配置NVMe/FC。

步骤
  1. 验证您使用的适配器型号、驱动程序和固件版本是否受支持:

    cat /sys/class/fc_host/host*/symbolic_name

    您应该看到类似以下内容的输出:

    QLE2742 FW:v9.06.02 DVR:v10.02.00.200-k
    QLE2742 FW:v9.06.02 DVR:v10.02.00.200-k
  2. 请验证 ql2xnvmeenable 已设置。这样、Marvell适配器便可用作NVMe/FC启动程序:

    cat /sys/module/qla2xxx/parameters/ql2xnvmeenable

    预期输出为 1。

TCP

NVMe/TCP 协议不支持自动连接操作。相反,您可以通过执行 NVMe/TCP 来发现 NVMe/TCP 子系统和命名空间 `connect`或者 `connect-all`手动操作。

步骤
  1. 检查启动器端口是否可以跨支持的 NVMe/TCP LIF 获取发现日志页面数据:

    nvme discover -t tcp -w host-traddr -a traddr
    显示示例
    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. 验证其他NVMe/TCP启动程序-目标LIF组合是否可以成功提取发现日志页面数据:

    nvme discover -t tcp -w host-traddr -a traddr
    显示示例
    nvme discover -t tcp -w 192.168.1.8 -a 192.168.1.51
    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. 运行 nvme connect-all 在节点中所有受支持的NVMe/TCP启动程序-目标SIP上运行命令:

    nvme connect-all -t tcp -w host-traddr -a traddr -1 1800
    显示示例
    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

步骤 4:(可选)为 NVMe/FC 启用 1MB I/O

ONTAP在识别控制器数据中报告最大数据传输大小 (MDTS) 为 8。这意味着最大 I/O 请求大小可达 1MB。要向 Broadcom NVMe/FC 主机发出 1MB 大小的 I/O 请求,您应该增加 `lpfc`的价值 `lpfc_sg_seg_cnt`参数从默认值 64 更改为 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

步骤 5:验证 NVMe-oF

验证内核NVMe多路径状态、ANA状态和ONTAP命名空间是否适用于NVMe-oF配置。

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

    cat /sys/module/nvme_core/parameters/multipath

    您应看到以下输出:

    Y
  2. 验证相应ONTAP命名库的适当NVMe-oF设置(例如、型号设置为NetApp ONTAP控制器、负载平衡iopolicy设置为循环)是否正确反映在主机上:

    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/nvme4n1 81Ix2BVuekWcAAAAAAAB	NetApp ONTAP Controller
    
    
    Namespace Usage    Format             FW             Rev
    -----------------------------------------------------------
    1                 21.47 GB / 21.47 GB	4 KiB + 0 B   FFFFFFFF
  4. 验证每个路径的控制器状态是否为活动状态且是否具有正确的ANA状态:

    nvme list-subsys /dev/nvme1n1
    显示示例
    nvme-subsys1 - nvme-subsys0 - NQN=nqn.1992-08.com.netapp:sn.5f5f2c4aa73b11e9967e00a098df41bd:subsystem.nvme_141_1
    \
    +- nvme0 fc traddr=nn-0x203700a098dfdd91:pn-0x203800a098dfdd91 host_traddr=nn-0x200000109b1c1204:pn-0x100000109b1c1204 live inaccessible
    +- nvme1 fc traddr=nn-0x203700a098dfdd91:pn-0x203900a098dfdd91 host_traddr=nn-0x200000109b1c1204:pn-0x100000109b1c1204 live inaccessible
    +- nvme2 fc traddr=nn-0x203700a098dfdd91:pn-0x203a00a098dfdd91 host_traddr=nn-0x200000109b1c1205:pn-0x100000109b1c1205 live optimized
    +- nvme3 fc traddr=nn-0x203700a098dfdd91:pn-0x203d00a098dfdd91 host_traddr=nn-0x200000109b1c1205:pn-0x100000109b1c1205 live optimized
  5. 验证NetApp插件是否为每个ONTAP 命名空间设备显示正确的值:

    nvme netapp ontapdevices -o column
    显示示例
    Device       Vserver          Namespace Path
    ---------    -------          --------------------------------------------------
    /dev/nvme0n1 vs_fcnvme_141    /vol/fcnvme_141_vol_1_1_0/fcnvme_141_ns
    
    NSID  UUID                                   Size
    ----  ------------------------------         ------
    1     72b887b1-5fb6-47b8-be0b-33326e2542e2  85.90GB
    JSON
    nvme netapp ontapdevices -o json
    显示示例
    {
    "ONTAPdevices" : [
        {
            "Device" : "/dev/nvme0n1",
            "Vserver" : "vs_fcnvme_141",
            "Namespace_Path" : "/vol/fcnvme_141_vol_1_1_0/fcnvme_141_ns",
            "NSID" : 1,
            "UUID" : "72b887b1-5fb6-47b8-be0b-33326e2542e2",
            "Size" : "85.90GB",
            "LBA_Data_Size" : 4096,
            "Namespace_Size" : 20971520
        }
      ]
    }

第6步:查看已知问题

这些是已知问题:

NetApp 错误 ID 标题 Description

"1479047"

RHEL 8.7 NVMe-oF 主机创建重复的持久发现控制器 (PDC)

在 NVMe-oF 主机上,您可以使用“nvme discover -p”命令创建 PDC。使用此命令时,每个启动器-目标组合只能创建一个 PDC。但是,如果您在 NVMe-oF 主机上运行 RHEL 8.8,则每次执行“nvme discover -p”时都会创建重复的 PDC。这会导致主机和目标上资源的不必要使用。