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

配置 Ubuntu 24.04 以使用 NVMe-oF 和 ONTAP 存储

贡献者 netapp-camdenc netapp-pcarriga netapp-sarajane

Ubuntu 24.04和非对称命名空间访问(AANA)支持基于网络结构的NVMe (NVMe-oF)、包括基于光纤通道的NVMe (NVMe/FC)和其他传输。在NVMe-oF环境中、ANA相当于iSCSI和FC环境中的ALUA多路径功能、并可通过内核NVMe多路径实施。

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

NVMe-oF 与 Ubuntu 24.04 存在以下已知限制:

  • 对于采用ONTAP的Ubuntu 24.04、当前不支持使用NVMe-oF协议启动SAN。

有关支持的配置的更多详细信息,请参见"互操作性表工具"

步骤 1:安装 Ubuntu 和 NVMe 软件并验证您的配置

要为 NVMe-oF 配置主机,您需要安装主机和 NVMe 软件包,启用多路径,并验证主机 NQN 配置。

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

    uname -r

    Ubuntu 内核版本示例:

    6.8.0-31-generic
  2. 安装 NVMe-CLI 软件包:

    apt list | grep nvme

    下面的例子展示了 `nvme-cli`软件包版本:

    nvme-cli/noble-updates 2.8-1ubuntu0.1 amd64
  3. 在Ubuntu 24.04主机上,检查hostnqn字符串,网址为 /etc/nvme/hostnqn

    cat /etc/nvme/hostnqn

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

    nqn.2014-08.org.nvmexpress:uuid:ace1xxxx-1f5a-xxxx-b0c3-3a6xxxx1a6ff
  4. 在 ONTAP 系统上,验证 hostnqn 字符串是否与 /etc/nvme/hostnqn 中的 hostnqn 字符串在 ONTAP 存储系统上对应的子系统一致:

    vserver nvme subsystem host show -vserver vs_106_fc_nvme
    显示示例
    Vserver     Subsystem          Host NQN
    ----------- --------------- ----------------------------------------------------------
    vs_106_fc_nvme ub_106 nqn.2014-08.org.nvmexpress:uuid:c047xxxx-e91e-xxxx-9995-ba4xxxx14631
    备注 如果 `hostnqn`字符串不匹配,请使用 `vserver modify`命令在相应的 ONTAP 存储系统子系统上更新 `hostnqn`字符串,使其与主机上 `/etc/nvme/hostnqn`中的 `hostnqn`字符串一致。

步骤 2:配置 NVMe/FC 和 NVMe/TCP

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

Broadcom/Emulex

为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.17

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

  3. 请验证 lpfc_enable_fc4_type 设置为 3

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

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

    您应该看到类似如下的输出:

    0x100000109bf0447b
    0x100000109bf0447c
  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 x100000109bf0447b WWNN x200000109bf0447b DID x022600 ONLINE
    NVME RPORT       WWPN x200fd039eaa8138b WWNN x200ad039eaa8138b DID x021006 TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 0000000187 Cmpl 0000000187 Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 0000000014096514 Issue 000000001407fcd6 OutIO fffffffffffe97c2
            abort 00000048 noxri 00000000 nondlp 0000001c qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 00000048 Err 00000077
    
    NVME Initiator Enabled
    XRI Dist lpfc1 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc1 WWPN x100000109bf0447c WWNN x200000109bf0447c DID x022300 ONLINE
    NVME RPORT       WWPN x2010d039eaa8138b WWNN x200ad039eaa8138b DID x021106 TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 0000000187 Cmpl 0000000187 Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 00000000140970ed Issue 00000000140813da OutIO fffffffffffea2ed
            abort 00000047 noxri 00000000 nondlp 0000002b qdepth 00000000 wqerr 00000000 err 00000000
    FCP CMPL: xb 00000047 Err 00000075
NVMe/FC - Marvell/QLogic

Ubuntu 24.04 GA内核中包含的本机内置qla2xxx驱动程序具有最新的上游修复程序。这些修复程序对于ONTAP支持至关重要。

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

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

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

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

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

    cat /sys/module/qla2xxx/parameters/ql2xnvmeenable

    预期输出为1。

NVMe/TCP

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

步骤
  1. 检查发起方端口是否能够通过受支持的 NVMe/TCP LIF 获取发现日志页数据:

    nvme discover -t tcp -w <host-traddr> -a <traddr>
    显示示例
    # nvme discover -t tcp -w 192.168.167.150 -a 192.168.167.155
    Discovery Log Number of Records 8, Generation counter 10
    =====Discovery Log Entry 0======
    trtype:  tcp
    adrfam:  ipv4
    subtype: current discovery subsystem
    treq:    not specified
    portid:  4
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:discovery
    traddr:  192.168.167.156
    eflags:  explicit discovery connections, duplicate discovery information*
    sectype: none
    =====Discovery Log Entry 1======
    trtype:  tcp
    adrfam:  ipv4
    subtype: current discovery subsystem
    treq:    not specified
    portid:  2
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:discovery
    traddr:  192.168.166.156
    eflags:  explicit discovery connections, duplicate discovery information*
    sectype: none
    =====Discovery Log Entry 2======
    trtype:  tcp
    adrfam:  ipv4
    subtype: current discovery subsystem
    treq:    not specified
    portid:  3
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:discovery
    traddr:  192.168.167.155
    eflags:  explicit discovery connections, duplicate discovery information*
    sectype: none
    =====Discovery Log Entry 3======
    trtype:  tcp
    adrfam:  ipv4
    subtype: current discovery subsystem
    treq:    not specified
    portid:  1
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:discovery
    traddr:  192.168.166.155
    eflags:  explicit discovery connections, duplicate discovery information*
    sectype: none
    =====Discovery Log Entry 4======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  4
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:subsystem.ubuntu_24.04_tcp_211
    traddr:  192.168.167.156
    eflags:  none
    sectype: none
    =====Discovery Log Entry 5======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  2
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:subsystem.ubuntu_24.04_tcp_211
    traddr:  192.168.166.156
    eflags:  none
    sectype: none
    =====Discovery Log Entry 6======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  3
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:subsystem.ubuntu_24.04_tcp_211
    traddr:  192.168.167.155
    eflags:  none
    sectype: none
    =====Discovery Log Entry 7======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  1
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:subsystem.ubuntu_24.04_tcp_211
    traddr:  192.168.166.155
    eflags:  none
    sectype: none
  2. 验证其他 NVMe/TCP 启动器-目标 LIF 组合是否可以成功检索发现日志页面数据:

    nvme discover -t tcp -w <host-traddr> -a <traddr>
    显示示例输出
    #nvme discover -t tcp -w 192.168.167.150 -a 192.168.167.155
    #nvme discover -t tcp -w 192.168.167.150 -a 192.168.167.156
    #nvme discover -t tcp -w 192.168.166.150 -a 192.168.166.155
    #nvme discover -t tcp -w 192.168.166.150 -a 192.168.166.156
  3. 运行 nvme connect-all 在节点中所有受支持的NVMe/TCP启动程序-目标SIP上运行命令:

    nvme connect-all -t tcp -w <host-traddr> -a <traddr>
    显示示例
    #nvme connect-all -t tcp -w 192.168.167.150 -a 192.168.167.155
    #nvme connect-all -t tcp -w 192.168.167.150 -a 192.168.167.156
    #nvme connect-all -t tcp -w 192.168.166.150 -a 192.168.166.155
    #nvme connect-all -t tcp -w 192.168.166.150 -a 192.168.166.156
    备注 从Ubuntu 24.04开始、NVMe/TCP的Ctrl_loss _TMo超时默认设置已关闭。这意味着对重试次数没有限制(无限期重试),使用或 nvme connect-all`命令时,您无需手动配置特定的Ctrl_loss-Tol超时持续时间 `nvme connect(选项-l)。通过此默认行为、NVMe/TCP控制器在发生路径故障时不会发生超时、并会无限期保持连接。

步骤 3:可选,启用 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

步骤 4:验证多路径配置

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

步骤
  1. 验证主机上是否正确显示了相应ONTAP命名空间的 NVMe-oF 设置(例如,型号设置为NetApp ONTAP Controller,负载均衡 iopolicy 设置为 round-robin):

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

      cat /sys/module/nvme_core/parameters/multipath

      预期输出为"Y"。

    2. 显示子系统:

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

      您应看到以下输出:

      NetApp ONTAP Controller
      NetApp ONTAP Controller
    3. 显示策略:

      cat /sys/class/nvme-subsystem/nvme-subsys*/iopolicy

      您应看到以下输出:

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

    nvme list
    显示示例输出
    Node         SN                         Model
    ---------------------------------------------------------
    /dev/nvme0n1 81CZ5BQuUNfGAAAAAAAB	NetApp ONTAP Controller
    
    
    Namespace Usage   Format                FW            Rev
    -----------------------------------------------------------
    1                 21.47 GB / 21.47 GB	4 KiB + 0 B   FFFFFFFF
  3. 验证每个路径的控制器状态是否为活动状态且是否具有正确的ANA状态:

    NVMe/FC
    nvme list-subsys /dev/nvme0n1
    显示示例输出
    nvme-subsys4 - NQN=nqn.1992-08.com.netapp:sn.8763d311b2ac11ed950ed039ea951c46:subsystem. ubuntu_24.04 \
    +- nvme1 fc traddr=nn-0x20a6d039ea954d17:pn-0x20a7d039ea954d17,host_traddr=nn-0x200000109b1b95ef:pn-0x100000109b1b95ef live optimized
    +- nvme2 fc traddr=nn-0x20a6d039ea954d17:pn-0x20a8d039ea954d17,host_traddr=nn-0x200000109b1b95f0:pn-0x100000109b1b95f0 live optimized
    +- nvme3 fc traddr=nn-0x20a6d039ea954d17:pn-0x20aad039ea954d17,host_traddr=nn-0x200000109b1b95f0:pn-0x100000109b1b95f0 live non-optimized
    +- nvme5 fc traddr=nn-0x20a6d039ea954d17:pn-0x20a9d039ea954d17,host_traddr=nn-0x200000109b1b95ef:pn-0x100000109b1b95ef live non-optimized
    NVMe/TCP
    nvme list-subsys /dev/nvme1n1
    显示示例输出
    nvme-subsys0 - NQN=nqn.1992-08.com.netapp:sn.9b7d42b764ff11efb8fed039eabac370:subsystem.ubuntu_24.04_tcp_211
                   hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4cxxxx-0050-xxxx-8035-c3cxxxxa5933
                   iopolicy=round-robin
     +- nvme0 tcp traddr=192.168.166.155,trsvcid=4420,host_traddr=192.168.166.150,src_addr=192.168.166.150 live optimized
     +- nvme1 tcp traddr=192.168.167.155,trsvcid=4420,host_traddr=192.168.167.150,src_addr=192.168.167.150 live optimized
     +- nvme2 tcp traddr=192.168.166.156,trsvcid=4420,host_traddr=192.168.166.150,src_addr=192.168.166.150 live non-optimized
     +- nvme3 tcp traddr=192.168.167.156,trsvcid=4420,host_traddr=192.168.167.150,src_addr=192.168.167.150 live non-optimized
    1. 验证NetApp插件是否为每个ONTAP 命名空间设备显示正确的值:

nvme netapp ontapdevices -o column
显示示例输出
Device        Vserver        Namespace Path          NSID UUID                                   Size
------------- -------------  ----------------------- ---- -------------------------------------- ---------
/dev/nvme0n1   vs_211_tcp    /vol/tcpvol1/ns1        1    1cc7bc78-8d7b-4d8e-a3c4-750f9461a6e9   21.47GB
JSON
nvme netapp ontapdevices -o json
显示示例输出
{

"ONTAPdevices" : [
{
      "Device":"/dev/nvme0n9",
      "Vserver":"vs_211_tcp",
      "Namespace_Path":"/vol/tcpvol9/ns9",
      "NSID":9,
      "UUID":"99640dd9-8463-4c12-8282-b525b39fc10b",
      "Size":"21.47GB",
      "LBA_Data_Size":4096,
      "Namespace_Size":5242880
    }
  ]
}

== 步骤 5:查看已知问题

使用ONTAP版本的Ubuntu 24.04的NVMe-oF主机配置没有已知问题。