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

使用 ONTAP 儲存設備為 Ubuntu 24.04 設定 NVMe-oF

貢獻者 netapp-camdenc netapp-pcarriga netapp-sarajane

Ubuntu 24.04 和非對稱命名空間存取( ANA )支援 NVMe over Fabrics ( NVMe over Fabric , NVMe of ),包括 NVMe over Fibre Channel ( NVMe / FC )和其他傳輸。在 NVMe 環境中、 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 型傳輸協定進行 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(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`是否與 ONTAP 儲存系統中對應子系統的 `hostnqn`字串相符:

    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/hostnqnhostnqn 字串相符。

步驟 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 connectconnect-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 啟動器目標生命體執行命令:

    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 控制器不會發生逾時、而且會無限期保持連線。

步驟 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。

註 這些步驟不適用於 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

步驟 4:驗證多重路徑組態

驗證核心內建 NVMe 多重路徑狀態, ANA 狀態和 ONTAP 命名空間是否適用於 NVMe 組態。

步驟
  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 主機組態沒有已知問題。