Skip to main content
SAN hosts and cloud clients
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

適用於 ONTAP 的 Ubuntu 24.04 的 NVMe 主機組態

貢獻者

Ubuntu 24.04 和非對稱命名空間存取( ANA )支援 NVMe over Fabrics ( NVMe over Fabric , NVMe of ),包括 NVMe over Fibre Channel ( NVMe / FC )和其他傳輸。在 NVMe 環境中、 ANA 等同於 iSCSI 和 FC 環境中的 ALUA 多重路徑、並以核心內建 NVMe 多重路徑來實作。

下列支援適用於 ONTAP 的 Ubuntu 24.04 NVMe 主機組態:

  • 原生 NVMe - CLI 套件中的 NetApp 外掛程式會顯示 NVMe / FC 命名空間的 ONTAP 詳細資料。

  • 在指定主機匯流排介面卡( HBA )上的同一主機上使用 NVMe 和 SCSI 共存流量、而不使用明確的 dm-multipath 設定、以避免使用 NVMe 命名空間。

如需支援組態的詳細資訊、請參閱 "NetApp 互通性對照表工具"

功能

根據預設、 Ubuntu 24.04 已啟用 NVMe 命名空間的核心內建 NVMe 多重路徑。這表示您不需要明確的設定。

已知限制

ONTAP 的 Ubuntu 24.04 目前不支援使用 NVMe 型傳輸協定進行 SAN 開機。

驗證軟體版本

您可以使用下列程序來驗證最低支援的 Ubuntu 24.04 軟體版本。

步驟
  1. 在伺服器上安裝 Ubuntu 24.04 。安裝完成後、請確認您正在執行指定的 Ubuntu 24.04 核心:

    uname -r
    6.8.0-31-generic
  2. 安裝「NVMe-CLI(NVMe - CLI)套件:

    apt list | grep nvme
    nvme-cli/noble-updates 2.8-1ubuntu0.1 amd64
  3. 在 Ubuntu 24.04 主機上,請檢查 hostnqn 字符串,網址爲 /etc/nvme/hostnqn

    cat /etc/nvme/hostnqn
    nqn.2014-08.org.nvmexpress:uuid:ace18dd8-1f5a-11ec-b0c3-3a68dd61a6ff
  4. 驗證來自的字串 /etc/nvme/hostnqn`是否 `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:c04702c8-e91e-4353-9995-ba4536214631
    註 如果 hostnqn`字串不相符,請使用 `vserver modify`命令更新 `hostnqn`對應 ONTAP 陣列子系統上的字串,以符合主機上的字 `/etc/nvme/hostnqn`串 `hostnqn

設定NVMe/FC

您可以為 Broadcom / Emulex 或 Marvell/Qlogic 介面卡設定 NVMe / FC 。

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

      如需支援的介面卡驅動程式和韌體版本的最新清單,請參閱"NetApp 互通性對照表工具"

  3. 請確認 lpfc_enable_fc4_type 設為 3

    cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type

    預期輸出為 3 。

  4. 確認啟動器連接埠已啟動並正在執行、而且您可以看到目標生命體:

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

      0x100000109bf0447b
      0x100000109bf0447c
    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 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
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

    預期的 ouptut 為 1 。

啟用 1MB I/O (選用)

ONTAP 會在識別控制器資料中報告 8 的 MDTS ( MAX Data 傳輸大小)。這表示最大 I/O 要求大小最多可達 1MB 。若要針對 Broadcom NVMe / FC 主機發出大小為 1 MB 的 I/O 要求,您應該將參數值 `lpfc_sg_seg_cnt`從預設值 64 增加 `lpfc`至 256 。

註 這些步驟不適用於 Qlogic 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 不支援自動連線功能。您可以改用或 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.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 啟動器目標生命體執行命令:

    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_LUS_TMOD 逾時預設設定。這表示重試次數沒有限制(無限期重試),而且您不需要在使用或 nvme connect-all`命令(選項 -l )時手動設定特定的 Ctrl_loss_tmo 逾時時間 `nvme connect。在這種預設行為下、當路徑故障時、 NVMe / TCP 控制器不會發生逾時、而且會無限期保持連線。

驗證NVMe

您可以使用下列程序來驗證 NVMe 。

步驟
  1. 確認已啟用核心內建 NVMe 多重路徑:

    cat /sys/module/nvme_core/parameters/multipath

    預期輸出為「 Y 」。

  2. 確認主機上正確顯示個別 ONTAP 命名空間的適當 NVMe 設定(例如,模型設定為「 NetApp ONTAP 控制器」,負載平衡 iopoliced 設定為「循環配置資源」):

    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 81CZ5BQuUNfGAAAAAAAB	NetApp ONTAP Controller
    
    
    Namespace Usage   Format                FW            Rev
    -----------------------------------------------------------
    1                 21.47 GB / 21.47 GB	4 KiB + 0 B   FFFFFFFF
  4. 確認每個路徑的控制器狀態均為有效、且具有正確的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:4c4c4544-0050-3410-8035-c3c04f4a5933
                   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
  5. 驗證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
        }
      ]
    }

已知問題

在含 ONTAP 版本的 Ubuntu 24.04 中, NVMe 主機組態沒有已知問題。