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

適用於 ONTAP 的 SUSE Linux Enterprise Server 15 SP7 的 NVMe 主機組態

貢獻者 netapp-sarajane

SUSE Linux Enterprise Server 主機支援具有非對稱命名空間存取 (ANA) 的 NVMe over Fibre Channel (NVMe/FC) 和 NVMe over TCP (NVMe/TCP) 協定。 ANA 提供與 iSCSI 和 FCP 環境中的非對稱邏輯單元存取 (ALUA) 等效的多路徑功能。

關於這項工作

您可以將以下支援和功能與 SUSE Linux Enterprise Server 15 SP7 的 NVMe-oF 主機配置一起使用。在開始配置過程之前,您還應該查看已知的限制。

  • 可用支援:

    • 除了 NVMe over Fibre Channel ( NVMe / FC )之外,還支援 NVMe over TCP ( NVMe / TCP )。原生套件中的 NetApp 外掛程式 `nvme-cli`會同時顯示 NVMe / FC 和 NVMe / TCP 命名空間的 ONTAP 詳細資料。

    • 在同一部主機上同時執行 NVMe 和 SCSI 流量。例如,您可以為 SCSI LUN 的 SCSI mpath 裝置設定 dm-multipath ,並使用 NVMe 多重路徑在主機上設定 NVMe 命名空間裝置。

    • 支援使用 NVMe / FC 傳輸協定進行 SAN 開機。

    • 從ONTAP 9.12.1 開始,引入了對 NVMe/TCP 和 NVMe/FC 安全帶內身份驗證的支援。您可以使用 SUSE Linux Enterprise Server 15 SP7 對 NVMe/TCP 和 NVMe/FC 進行安全帶內驗證。

    • 支援使用唯一發現 NQN 的持久發現控制器 (PDC)。

    • NVMe/TCP 的 TLS 1.3 加密支援。

    • NetApp sanlun SUSE Linux Enterprise Server15 SP7 主機上的 NVMe-oF 不支援主機實用程式。相反,您可以依賴本機中包含的NetApp插件 `nvme-cli`適用於所有 NVMe-oF 傳輸的套件。

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

  • 可用功能:

    • 沒有可用的新功能。

  • 已知限制

    • 避免發布 `nvme disconnect-all`命令,因為它會斷開根檔案系統和資料檔案系統的連接,並可能導致系統不穩定。

步驟 1 :選擇性啟用 SAN 開機

您可以將主機設定為使用 SAN 開機,以簡化部署並改善擴充性。

開始之前

使用"互通性對照表工具"驗證您的 Linux 作業系統,主機匯流排介面卡( HBA ), HBA 韌體, HBA 開機 BIOS 和 ONTAP 版本是否支援 SAN 開機。

步驟
  1. 建立 SAN 啟動命名空間並將其對應到主機。

  2. 在伺服器 BIOS 中為 SAN 啟動命名空間對應到的連接埠啟用 SAN 啟動。

    如需如何啟用HBA BIOS的相關資訊、請參閱廠商專屬的文件。

  3. 重新啟動主機並驗證作業系統是否正常運作,以確認組態是否成功。

步驟 2:驗證軟體版本

使用下列步驟驗證最低支援的 SUSE Linux Enterprise Server 15 SP7 軟體版本。

步驟
  1. 在伺服器上安裝SUSE Linux Enterprise Server15 SP7。安裝完成後,請驗證您是否正在執行指定的 SUSE Linux Enterprise Server 15 SP7 核心:

    uname -r

    以下範例顯示了 SUSE Linux Enterprise Server 核心版本:

    6.4.0-150700.53.3-default
  2. 安裝「NVMe-CLI(NVMe - CLI)套件:

    rpm -qa|grep nvme-cli

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

    nvme-cli-2.11+22.gd31b1a01-150700.3.3.2.x86_64
  3. 安裝 libnvme 套件:

    rpm -qa|grep libnvme

    下面的例子展示了 `libnvme`軟體包版本:

    libnvme1-1.11+4.ge68a91ae-150700.4.3.2.x86_64
  4. 在主機上,檢查 hostnqn 字串 /etc/nvme/hostnqn

    cat /etc/nvme/hostnqn

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

    nqn.2014-08.org.nvmexpress:uuid:f6517cae-3133-11e8-bbff-7ed30aef123f
  5. 確認 hostnqn 字串符合 hostnqn ONTAP 陣列上對應子系統的字串:

    ::> 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:4c4c4544-0056-5410-8048-b9c04f425633
            nvme_1
                      regular   nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0056-5410-8048-b9c04f425633
            nvme_2
                      regular   nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0056-5410-8048-b9c04f425633
            nvme_3
                      regular   nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0056-5410-8048-b9c04f425633
    4 entries were displayed.
    註 如果是 hostnqn 字串不相符、請使用 vserver modify 命令來更新 hostnqn 對應 ONTAP 陣列子系統上的字串、以符合 hostnqn 字串來源 /etc/nvme/hostnqn 在主機上。

步驟3:設定NVMe/FC

您可以使用 Broadcom/Emulex FC 或 Marvell/Qlogic FC 介面卡來設定 NVMe / FC 。您還需要手動發現 NVMe/TCP 子系統和命名空間。

Broadcom / Emulex

為 Broadcom / Emulex FC 介面卡設定 NVMe / FC 。

步驟
  1. 確認您使用的是支援的介面卡機型:

    1. 顯示模型名稱:

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

      您應該會看到下列輸出:

      LPe36002-M64
      LPe36002-M64
    2. 顯示模型描述:

      cat /sys/class/scsi_host/host*/modeldesc

      您應該會看到類似以下範例的輸出:

    Emulex LightPulse LPe36002-M64 2-Port 64Gb Fibre Channel Adapter
    Emulex LightPulse LPe36002-M64 2-Port 64Gb Fibre Channel Adapter
  2. 驗證您使用的是建議的Broadcom lpfc 韌體與收件匣驅動程式:

    1. 顯示韌體版本:

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

      以下範例顯示韌體版本:

      14.4.393.25, sli-4:2:c
      14.4.393.25, sli-4:2:c
    2. 顯示收件匣驅動程式版本:

      cat /sys/module/lpfc/version

      以下範例顯示了驅動程式版本:

      0:14.4.0.8

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

  3. 驗證的預期輸出是否 lpfc_enable_fc4_type`設置爲 `3

    cat /sys/module/lpfc/parameters/lpfc_enable_fc4_type
  4. 確認您可以檢視啟動器連接埠:

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

    以下範例顯示連接埠標識:

    0x10000090fae0ec88
    0x10000090fae0ec89
  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 x10000090fae0ec88 WWNN x20000090fae0ec88 DID x0a1300 ONLINE
    NVME RPORT       WWPN x23b1d039ea359e4a WWNN x23aed039ea359e4a DID x0a1c01 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x22bbd039ea359e4a WWNN x22b8d039ea359e4a DID x0a1c0b TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2362d039ea359e4a WWNN x234ed039ea359e4a DID x0a1c10 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x23afd039ea359e4a WWNN x23aed039ea359e4a DID x0a1a02 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x22b9d039ea359e4a WWNN x22b8d039ea359e4a DID x0a1a0b TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2360d039ea359e4a WWNN x234ed039ea359e4a DID x0a1a11 TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 0000004ea0 Cmpl 0000004ea0 Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 0000000000102c35 Issue 0000000000102c2d OutIO fffffffffffffff8
            abort 00000175 noxri 00000000 nondlp 0000021d qdepth 00000000 wqerr 00000007 err 00000000
    FCP CMPL: xb 00000175 Err 0000058b
    
    NVME Initiator Enabled
    XRI Dist lpfc1 Total 6144 IO 5894 ELS 250
    NVME LPORT lpfc1 WWPN x10000090fae0ec89 WWNN x20000090fae0ec89 DID x0a1200 ONLINE
    NVME RPORT       WWPN x23b2d039ea359e4a WWNN x23aed039ea359e4a DID x0a1d01 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x22bcd039ea359e4a WWNN x22b8d039ea359e4a DID x0a1d0b TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2363d039ea359e4a WWNN x234ed039ea359e4a DID x0a1d10 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x23b0d039ea359e4a WWNN x23aed039ea359e4a DID x0a1b02 TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x22bad039ea359e4a WWNN x22b8d039ea359e4a DID x0a1b0b TARGET DISCSRVC ONLINE
    NVME RPORT       WWPN x2361d039ea359e4a WWNN x234ed039ea359e4a DID x0a1b11 TARGET DISCSRVC ONLINE
    
    NVME Statistics
    LS: Xmt 0000004e31 Cmpl 0000004e31 Abort 00000000
    LS XMIT: Err 00000000  CMPL: xb 00000000 Err 00000000
    Total FCP Cmpl 00000000001017f2 Issue 00000000001017ef OutIO fffffffffffffffd
            abort 0000018a noxri 00000000 nondlp 0000012e qdepth 00000000 wqerr 00000004 err 00000000
    FCP CMPL: xb 0000018a Err 000005ca
Marvell / QLogic

為 Marvell/QLogic 介面卡設定 NVMe / FC 。

步驟
  1. 確認您執行的是支援的介面卡驅動程式和韌體版本:

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

    以下範例顯示了驅動程式和韌體版本:

    QLE2742 FW:v9.14.00 DVR:v10.02.09.400-k-debug
    QLE2742 FW:v9.14.00 DVR:v10.02.09.400-k-debug
  2. 請確認 ql2xnvmeenable 已設定。這可讓 Marvell 介面卡作為 NVMe / FC 啟動器運作:

    cat /sys/module/qla2xxx/parameters/ql2xnvmeenable

    預期輸出為 1 。

步驟 4:可選,啟用 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

步驟 5:驗證 NVMe 啟動服務

使用 SUSE Linux Enterprise Server 15 SP7, `nvmefc-boot-connections.service`和 `nvmf-autoconnect.service`NVMe/FC 中包含的啟動服務 `nvme-cli`軟體包將在系統啟動時自動啟用。系統啟動完成後,驗證啟動服務是否已啟用。

步驟
  1. 確認 `nvmf-autoconnect.service`已啟用:

    systemctl status nvmf-autoconnect.service
    顯示範例輸出
    nvmf-autoconnect.service - Connect NVMe-oF subsystems automatically during boot
      Loaded: loaded (/usr/lib/systemd/system/nvmf-autoconnect.service; enabled; preset: enabled)
      Active: inactive (dead) since Fri 2025-07-04 23:56:38 IST; 4 days ago
      Main PID: 12208 (code=exited, status=0/SUCCESS)
        CPU: 62ms
    
    Jul 04 23:56:26 localhost systemd[1]: Starting Connect NVMe-oF subsystems automatically during boot...
    Jul 04 23:56:38 localhost systemd[1]: nvmf-autoconnect.service: Deactivated successfully.
    Jul 04 23:56:38 localhost systemd[1]: Finished Connect NVMe-oF subsystems automatically during boot.
  2. 確認 `nvmefc-boot-connections.service`已啟用:

    systemctl status nvmefc-boot-connections.service
    顯示範例輸出
    nvmefc-boot-connections.service - Auto-connect to subsystems on FC-NVME devices found during boot
        Loaded: loaded (/usr/lib/systemd/system/nvmefc-boot-connections.service; enabled; preset: enabled)
        Active: inactive (dead) since Mon 2025-07-07 19:52:30 IST; 1 day 4h ago
      Main PID: 2945 (code=exited, status=0/SUCCESS)
          CPU: 14ms
    
    Jul 07 19:52:30 HP-DL360-14-168 systemd[1]: Starting Auto-connect to subsystems on FC-NVME devices found during boot...
    Jul 07 19:52:30 HP-DL360-14-168 systemd[1]: nvmefc-boot-connections.service: Deactivated successfully.
    Jul 07 19:52:30 HP-DL360-14-168 systemd[1]: Finished Auto-connect to subsystems on FC-NVME devices found during boot.

步驟 6:設定 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.111.80 -a 192.168.111.70
    Discovery Log Number of Records 8, Generation counter 42
    =====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.f8e2af201b7211f0ac2bd039eab67a95:discovery
    traddr:  192.168.211.71
    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:  3
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.f8e2af201b7211f0ac2bd039eab67a95:discovery
    traddr:  192.168.111.71
    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:  2
    trsvcid: 8009
    subnqn:  nqn.1992-08.com.netapp:sn.f8e2af201b7211f0ac2bd039eab67a95:discovery
    traddr:  192.168.211.70
    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.f8e2af201b7211f0ac2bd039eab67a95:discovery
    traddr:  192.168.111.70
    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.f8e2af201b7211f0ac2bd039eab67a95:subsystem.sample_tcp_sub
    traddr:  192.168.211.71
    eflags:  none
    sectype: none
    =====Discovery Log Entry 5======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  3
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.f8e2af201b7211f0ac2bd039eab67a95:subsystem.sample_tcp_sub
    traddr:  192.168.111.71
    eflags:  none
    sectype: none
    =====Discovery Log Entry 6======
    trtype:  tcp
    adrfam:  ipv4
    subtype: nvme subsystem
    treq:    not specified
    portid:  2
    trsvcid: 4420
    subnqn:  nqn.1992-08.com.netapp:sn.f8e2af201b7211f0ac2bd039eab67a95:subsystem.sample_tcp_sub
    traddr:  192.168.211.70
    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.f8e2af201b7211f0ac2bd039eab67a95:subsystem.sample_tcp_sub
    traddr:  192.168.111.70
    eflags:  none
    sectype: none
    localhost:~ #
  2. 確認所有其他的 NVMe / TCP 啟動器目標 LIF 組合都能成功擷取探索記錄頁面資料:

    nvme discover -t tcp -w <host-traddr> -a <traddr>
    顯示範例
    nvme discover -t tcp -w 192.168.111.80 -a 192.168.111.66
    nvme discover -t tcp -w 192.168.111.80 -a 192.168.111.67
    nvme discover -t tcp -w 192.168.211.80 -a 192.168.211.66
    nvme discover -t tcp -w 192.168.211.80 -a 192.168.211.67
  3. 執行 nvme connect-all 跨所有節點支援的 NVMe / TCP 啟動器目標生命體執行命令:

    nvme connect-all -t tcp -w <host-traddr> -a <traddr>
    顯示範例
    nvme	connect-all	-t	tcp	-w	192.168.111.80	-a	192.168.111.66
    nvme	connect-all	-t	tcp	-w	192.168.111.80	-a	192.168.111.67
    nvme	connect-all	-t	tcp	-w	192.168.211.80	-a	192.168.211.66
    nvme	connect-all	-t	tcp	-w	192.168.211.80	-a	192.168.211.67
註 從 SUSE Linux Enterprise Server 15 SP6 開始,NVMe/TCP 的預設設定 ctrl-loss-tmo`超時已關閉。這意味著重試次數沒有限制(無限重試),並且您不需要手動配置特定的 `ctrl-loss-tmo`使用時的超時持續時間 `nvme connect`或者 `nvme connect-all`命令(選項 `-l)。此外,NVMe/TCP 控制器在發生路徑故障時不會逾時,並會無限期地保持連線。

步驟 7:驗證 NVMe-oF

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

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

    cat /sys/module/nvme_core/parameters/multipath

    您應該會看到下列輸出:

    Y
  2. 驗證個別 ONTAP 命名空間的適當 NVMe 設定(例如、模型設定為 NetApp ONTAP 控制器、負載平衡 iopolicing 設定為循環)是否正確反映在主機上:

    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 / FC
    nvme list-subsys /dev/nvme4n5
    顯示範例輸出
    nvme-subsys114 - NQN=nqn.1992-08.com.netapp:sn.9e30b9760a4911f08c87d039eab67a95:subsystem.sles_161_27
                     hostnqn=nqn.2014-08.org.nvmexpress:uuid:f6517cae-3133-11e8-bbff-7ed30aef123f
    iopolicy=round-robin\
    +- nvme114 fc traddr=nn-0x234ed039ea359e4a:pn-0x2360d039ea359e4a,host_traddr=nn-0x20000090fae0ec88:pn-0x10000090fae0ec88 live optimized
    +- nvme115 fc traddr=nn-0x234ed039ea359e4a:pn-0x2362d039ea359e4a,host_traddr=nn-0x20000090fae0ec88:pn-0x10000090fae0ec88 live non-optimized
    +- nvme116 fc traddr=nn-0x234ed039ea359e4a:pn-0x2361d039ea359e4a,host_traddr=nn-0x20000090fae0ec89:pn-0x10000090fae0ec89 live optimized
    +- nvme117 fc traddr=nn-0x234ed039ea359e4a:pn-0x2363d039ea359e4a,host_traddr=nn-0x20000090fae0ec89:pn-0x10000090fae0ec89 live non-optimized
    NVMe / TCP
    nvme list-subsys /dev/nvme9n1
    顯示範例輸出
    nvme-subsys9 - NQN=nqn.1992-08.com.netapp:sn.f8e2af201b7211f0ac2bd039eab67a95:subsystem.with_inband_with_json hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b2c04f444d33
    iopolicy=round-robin
    \
    +- nvme10 tcp traddr=192.168.111.71,trsvcid=4420,src_addr=192.168.111.80 live non-optimized
     +- nvme11 tcp traddr=192.168.211.70,trsvcid=4420,src_addr=192.168.211.80 live optimized
     +- nvme12 tcp traddr=192.168.111.70,trsvcid=4420,src_addr=192.168.111.80 live optimized
     +- nvme9 tcp traddr=192.168.211.71,trsvcid=4420,src_addr=192.168.211.80 live non-optimized
  5. 驗證NetApp外掛程式是否顯示每ONTAP 個版本名稱空間裝置的正確值:

欄位
nvme netapp ontapdevices -o column
顯示範例
Device           Vserver                   Namespace Path                                     NSID UUID                                   Size
---------------- ------------------------- -------------------------------------------------- ---- -------------------------------------- ---------
/dev/nvme0n1     vs_161                    /vol/fc_nvme_vol1/fc_nvme_ns1                      1    32fd92c7-0797-428e-a577-fdb3f14d0dc3   5.37GB
JSON
nvme netapp ontapdevices -o json
顯示範例
{
      "Device":"/dev/nvme98n2",
      "Vserver":"vs_161",
      "Namespace_Path":"/vol/fc_nvme_vol71/fc_nvme_ns71",
      "NSID":2,
      "UUID":"39d634c4-a75e-4fbd-ab00-3f9355a26e43",
      "LBA_Size":4096,
      "Namespace_Size":5368709120,
      "UsedBytes":430649344,
    }
  ]
}

步驟 8:建立持久發現控制器

從ONTAP 9.11.1 開始,您可以為 SUSE Linux Enterprise Server 15 SP7 主機建立持久性發現控制器 (PDC)。需要 PDC 來自動偵測 NVMe 子系統的新增或刪除操作以及發現日誌頁面資料的變更。

步驟
  1. 確認探索記錄頁面資料可用、並可透過啟動器連接埠和目標 LIF 組合擷取:

    nvme discover -t <trtype> -w <host-traddr> -a <traddr>
    顯示範例輸出
    Discovery Log Number of Records 8, Generation counter 18
    =====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.4f7af2bd221811f0afadd039eab0dadd:discovery
    traddr:  192.168.111.66
    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.4f7af2bd221811f0afadd039eab0dadd:discovery
    traddr:  192.168.211.66
    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.4f7af2bd221811f0afadd039eab0dadd:discovery
    traddr:  192.168.111.67
    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.4f7af2bd221811f0afadd039eab0dadd:discovery
    traddr:  192.168.211.67
    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.4f7af2bd221811f0afadd039eab0dadd:subsystem.pdc
    traddr:  192.168.111.66
    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.4f7af2bd221811f0afadd039eab0dadd:subsystem.pdc
    traddr:  192.168.211.66
    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.4f7af2bd221811f0afadd039eab0dadd:subsystem.pdc
    traddr:  192.168.111.67
    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.4f7af2bd221811f0afadd039eab0dadd:subsystem.pdc
    traddr:  192.168.211.67
    eflags:  none
    sectype: none
  2. 建立探索子系統的 PDC :

    nvme discover -t <trtype> -w <host-traddr> -a <traddr> -p

    您應該會看到下列輸出:

    nvme discover -t tcp -w 192.168.111.80 -a 192.168.111.66 -p
  3. 從 ONTAP 控制器、確認已建立 PDC :

    vserver nvme show-discovery-controller -instance -vserver <vserver_name>
    顯示範例輸出
    vserver nvme show-discovery-controller -instance -vserver vs_pdc
    
               Vserver Name: vs_pdc
                   Controller ID: 0101h
         Discovery Subsystem NQN: nqn.1992-08.com.netapp:sn.4f7af2bd221811f0afadd039eab0dadd:discovery
               Logical Interface: lif2
                            Node: A400-12-181
                        Host NQN: nqn.2014-08.org.nvmexpress:uuid:9796c1ec-0d34-11eb-b6b2-3a68dd3bab57
              Transport Protocol: nvme-tcp
     Initiator Transport Address: 192.168.111.80
    Transport Service Identifier: 8009
                 Host Identifier: 9796c1ec0d3411ebb6b23a68dd3bab57
               Admin Queue Depth: 32
           Header Digest Enabled: false
             Data Digest Enabled: false
       Keep-Alive Timeout (msec): 30000

步驟 9:設定安全帶內身份驗證

從 ONTAP 9.12.1 開始,主機和 ONTAP 控制器之間透過 NVMe/TCP 和 NVMe/FC 支援安全帶內身份驗證。

若要設定安全驗證、每個主機或控制器都必須與相關聯 DH-HMAC-CHAP 金鑰、這是 NVMe 主機或控制器的 NQN 組合、以及管理員設定的驗證密碼。若要驗證其對等端點、 NVMe 主機或控制器必須識別與對等端點相關的金鑰。

您可以使用 CLI 或組態 JSON 檔案來設定安全的頻內驗證。如果您需要為不同的子系統指定不同的 dhchap 金鑰、則必須使用組態 JSON 檔案。

CLI

使用 CLI 設定安全的頻內驗證。

步驟
  1. 取得主機 NQN :

    cat /etc/nvme/hostnqn
  2. 為主機產生 dhchap 金鑰。

    下列輸出說明 `gen-dhchap-key`命令參數:

    nvme gen-dhchap-key -s optional_secret -l key_length {32|48|64} -m HMAC_function {0|1|2|3} -n host_nqn
    •	-s secret key in hexadecimal characters to be used to initialize the host key
    •	-l length of the resulting key in bytes
    •	-m HMAC function to use for key transformation
    0 = none, 1- SHA-256, 2 = SHA-384, 3=SHA-512
    •	-n host NQN to use for key transformation

    在下列範例中、會產生一個隨機的 dhchap 金鑰、其中 HMAC 設為 3 ( SHA-512 )。

    nvme gen-dhchap-key -m 3 -n nqn.2014-08.org.nvmexpress:uuid:e6dade64-216d-11ec-b7bb-7ed30a5482c3
    DHHC-1:03:1CFivw9ccz58gAcOUJrM7Vs98hd2ZHSr+iw+Amg6xZPl5D2Yk+HDTZiUAg1iGgxTYqnxukqvYedA55Bw3wtz6sJNpR4=:
  3. 在 ONTAP 控制器上、新增主機並指定兩個 dhchap 金鑰:

    vserver nvme subsystem host add -vserver <svm_name> -subsystem <subsystem> -host-nqn <host_nqn> -dhchap-host-secret <authentication_host_secret> -dhchap-controller-secret <authentication_controller_secret> -dhchap-hash-function {sha-256|sha-512} -dhchap-group {none|2048-bit|3072-bit|4096-bit|6144-bit|8192-bit}
  4. 主機支援兩種驗證方法:單向和雙向。在主機上、連線至 ONTAP 控制器、並根據所選的驗證方法指定 dhchap 金鑰:

    nvme connect -t tcp -w <host-traddr> -a <tr-addr> -n <host_nqn> -S <authentication_host_secret> -C <authentication_controller_secret>
  5. 驗證 nvme connect authentication 命令驗證主機和控制器 dhchap 金鑰:

    1. 驗證主機 dhchap 金鑰:

      cat /sys/class/nvme-subsystem/<nvme-subsysX>/nvme*/dhchap_secret
      顯示單向組態的輸出範例
      # cat /sys/class/nvme-subsystem/nvme-subsys1/nvme*/dhchap_secret
      DHHC-1:01:iM63E6cX7G5SOKKOju8gmzM53qywsy+C/YwtzxhIt9ZRz+ky:
      DHHC-1:01:iM63E6cX7G5SOKKOju8gmzM53qywsy+C/YwtzxhIt9ZRz+ky:
      DHHC-1:01:iM63E6cX7G5SOKKOju8gmzM53qywsy+C/YwtzxhIt9ZRz+ky:
      DHHC-1:01:iM63E6cX7G5SOKKOju8gmzM53qywsy+C/YwtzxhIt9ZRz+ky:
    2. 驗證控制器 dhchap 按鍵:

      cat /sys/class/nvme-subsystem/<nvme-subsysX>/nvme*/dhchap_ctrl_secret
      顯示雙向組態的輸出範例
      # cat /sys/class/nvme-subsystem/nvme-subsys6/nvme*/dhchap_ctrl_secret
      DHHC-1:03:1CFivw9ccz58gAcOUJrM7Vs98hd2ZHSr+iw+Amg6xZPl5D2Yk+HDTZiUAg1iGgxTYqnxukqvYedA55Bw3wtz6sJNpR4=:
      DHHC-1:03:1CFivw9ccz58gAcOUJrM7Vs98hd2ZHSr+iw+Amg6xZPl5D2Yk+HDTZiUAg1iGgxTYqnxukqvYedA55Bw3wtz6sJNpR4=:
      DHHC-1:03:1CFivw9ccz58gAcOUJrM7Vs98hd2ZHSr+iw+Amg6xZPl5D2Yk+HDTZiUAg1iGgxTYqnxukqvYedA55Bw3wtz6sJNpR4=:
      DHHC-1:03:1CFivw9ccz58gAcOUJrM7Vs98hd2ZHSr+iw+Amg6xZPl5D2Yk+HDTZiUAg1iGgxTYqnxukqvYedA55Bw3wtz6sJNpR4=:
Json 檔案

當 ONTAP 控制器組態上有多個 NVMe 子系統可供使用時、您可以搭配命令使用該 /etc/nvme/config.json`檔案 `nvme connect-all

若要產生 JSON 檔案,您可以使用 `-o`選項。如需更多語法選項,請參閱 NVMe Connect All 手冊頁。

步驟
  1. 設定Json檔案:

    顯示範例輸出
    # cat /etc/nvme/config.json
    [
     {
        "hostnqn":"nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b2c04f444d33",
        "hostid":"4c4c4544-0035-5910-804b-b2c04f444d33",
        "dhchap_key":"DHHC-1:01:i4i789R11sMuHLCY27RVI8XloC\/GzjRwyhxip5hmIELsHrBq:",
        "subsystems":[
          {
            "nqn":"nqn.1992-08.com.netapp:sn.f8e2af201b7211f0ac2bd039eab67a95:subsystem.sample_tcp_sub",
            "ports":[
              {
                "transport":"tcp",
                "traddr":"192.168.111.70",
                "host_traddr":"192.168.111.80",
                "trsvcid":"4420"
                "dhchap_ctrl_key":"DHHC-1:03:jqgYcJSKp73+XqAf2X6twr9ngBpr2n0MGWbmZIZq4PieKZCoilKGef8lAvhYS0PNK7T+04YD5CRPjh+m3qjJU++yR8s=:"
              },
                   {
                        "transport":"tcp",
                        "traddr":"192.168.111.71",
                        "host_traddr":"192.168.111.80",
                        "trsvcid":"4420",
                        "dhchap_ctrl_key":"DHHC-1:03:jqgYcJSKp73+XqAf2X6twr9ngBpr2n0MGWbmZIZq4PieKZCoilKGef8lAvhYS0PNK7T+04YD5CRPjh+m3qjJU++yR8s=:"
                   },
                   {
                        "transport":"tcp",
                        "traddr":"192.168.211.70",
                        "host_traddr":"192.168.211.80",
                        "trsvcid":"4420",
                        "dhchap_ctrl_key":"DHHC-1:03:jqgYcJSKp73+XqAf2X6twr9ngBpr2n0MGWbmZIZq4PieKZCoilKGef8lAvhYS0PNK7T+04YD5CRPjh+m3qjJU++yR8s=:"
                   },
                   {
                        "transport":"tcp",
                        "traddr":"192.168.211.71",
                        "host_traddr":"192.168.211.80",
                        "trsvcid":"4420",
                        "dhchap_ctrl_key":"DHHC-1:03:jqgYcJSKp73+XqAf2X6twr9ngBpr2n0MGWbmZIZq4PieKZCoilKGef8lAvhYS0PNK7T+04YD5CRPjh+m3qjJU++yR8s=:"
                   }
               ]
           }
       ]
     }
    ]
    註 在上述範例中, dhchap_key`對應於 `dhchap_secret,並 dhchap_ctrl_key`對應至 `dhchap_ctrl_secret
  2. 使用組態 JSON 檔案連線至 ONTAP 控制器:

    nvme connect-all -J /etc/nvme/config.json
    顯示範例輸出
    traddr=192.168.211.70 is already connected
    traddr=192.168.111.71 is already connected
    traddr=192.168.211.71 is already connected
    traddr=192.168.111.70 is already connected
    traddr=192.168.211.70 is already connected
    traddr=192.168.111.70 is already connected
    traddr=192.168.211.71 is already connected
    traddr=192.168.111.71 is already connected
    traddr=192.168.211.70 is already connected
    traddr=192.168.111.71 is already connected
    traddr=192.168.211.71 is already connected
    traddr=192.168.111.70 is already connected
  3. 確認已為每個子系統的個別控制器啟用 dhchap 機密:

    1. 驗證主機 dhchap 金鑰:

      cat /sys/class/nvme-subsystem/nvme-subsys0/nvme0/dhchap_secret

      您應該會看到下列輸出:

      DHHC-1:01:i4i789R11sMuHLCY27RVI8XloC/GzjRwyhxip5hmIELsHrBq:
    2. 驗證控制器 dhchap 按鍵:

      cat /sys/class/nvme-subsystem/nvme-subsys0/nvme0/dhchap_ctrl_secret

      您應該會看到下列輸出:

    DHHC-1:03:jqgYcJSKp73+XqAf2X6twr9ngBpr2n0MGWbmZIZq4PieKZCoilKGef8lAvhYS0PNK7T+04YD5CRPjh+m3qjJU++yR8s=:

步驟 10:設定傳輸層安全性

傳輸層安全性( TLS )可為 NVMe 主機和 ONTAP 陣列之間的 NVMe 連線提供安全的端對端加密。從 ONTAP 9 。 16.1 開始,您可以使用 CLI 和設定的預先共用金鑰( PSK )來設定 TLS 1.3 。

關於這項工作

您可以在 SUSE Linux Enterprise Server 主機上執行此程序中的步驟,除非它指定您在 ONTAP 控制器上執行某個步驟。

步驟
  1. 檢查您是否具有以下內容 ktls-utilsopenssl , 和 `libopenssl`主機上安裝的軟體包:

    1. 驗證 ktls-utils

      rpm -qa | grep ktls

      您應該會看到顯示以下輸出:

    ktls-utils-0.10+33.g311d943-150700.1.5.x86_64
    1. 驗證 SSL 套件:

      rpm -qa | grep ssl
      顯示範例輸出
      libopenssl3-3.2.3-150700.3.20.x86_64
      openssl-3-3.2.3-150700.3.20.x86_64
      libopenssl1_1-1.1.1w-150700.9.37.x86_64
  2. 請確認您的設定是否正確 /etc/tlshd.conf

    cat /etc/tlshd.conf
    顯示範例輸出
    [debug]
    loglevel=0
    tls=0
    nl=0
    [authenticate]
    keyrings=.nvme
    [authenticate.client]
    #x509.truststore= <pathname>
    #x509.certificate= <pathname>
    #x509.private_key= <pathname>
    [authenticate.server]
    #x509.truststore= <pathname>
    #x509.certificate= <pathname>
    #x509.private_key= <pathname>
  3. 啟用 `tlshd`以在系統開機時啟動:

    systemctl enable tlshd
  4. 驗證守護程序是否 `tlshd`正在運行:

    systemctl status tlshd
    顯示範例輸出
    tlshd.service - Handshake service for kernel TLS consumers
       Loaded: loaded (/usr/lib/systemd/system/tlshd.service; enabled; preset: disabled)
       Active: active (running) since Wed 2024-08-21 15:46:53 IST; 4h 57min ago
         Docs: man:tlshd(8)
    Main PID: 961 (tlshd)
       Tasks: 1
         CPU: 46ms
       CGroup: /system.slice/tlshd.service
           └─961 /usr/sbin/tlshd
    Aug 21 15:46:54 RX2530-M4-17-153 tlshd[961]: Built from ktls-utils 0.11-dev on Mar 21 2024 12:00:00
  5. 使用產生 TLS PSK nvme gen-tls-key

    1. 驗證主機:

      cat /etc/nvme/hostnqn

      您應該會看到下列輸出:

      nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b2c04f444d33
    2. 驗證金鑰:

      nvme gen-tls-key --hmac=1 --identity=1 --subsysnqn= nqn.1992-08.com.netapp:sn.a2d41235b78211efb57dd039eab67a95:subsystem.nvme1

      您應該會看到下列輸出:

    NVMeTLSkey-1:01:C50EsaGtuOp8n5fGE9EuWjbBCtshmfoHx4XTqTJUmydf0gIj:
  6. 在 ONTAP 控制器上,將 TLS PSK 新增至 ONTAP 子系統:

    顯示範例輸出
    nvme subsystem host add -vserver vs_iscsi_tcp -subsystem nvme1 -host-nqn nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b2c04f444d33 -tls-configured-psk NVMeTLSkey-1:01:C50EsaGtuOp8n5fGE9EuWjbBCtshmfoHx4XTqTJUmydf0gIj:
  7. 將 TLS PSK 插入主機核心金鑰環:

    nvme check-tls-key --identity=1 --subsysnqn=nqn.1992-08.com.netapp:sn.a2d41235b78211efb57dd039eab67a95:subsystem.nvme1 --keydata=NVMeTLSkey-1:01:C50EsaGtuOp8n5fGE9EuWjbBCtshmfoHx4XTqTJUmydf0gIj: --insert

    您應該會看到以下 TLS 金鑰:

    Inserted TLS key 22152a7e
    註 PSK 顯示為 `NVMe1R01`因為它使用 `identity v1`來自 TLS 握手演算法。Identity v1 是 ONTAP 唯一支援的版本。
  8. 確認 TLS PSK 已正確插入:

    cat /proc/keys | grep NVMe
    顯示範例輸出
    069f56bb I--Q---     5 perm 3b010000     0     0 psk       NVMe1R01 nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b2c04f444d33 nqn.1992-08.com.netapp:sn.a2d41235b78211efb57dd039eab67a95:subsystem.nvme1 oYVLelmiOwnvDjXKBmrnIgGVpFIBDJtc4hmQXE/36Sw=: 32
  9. 使用插入的 TLS PSK 連線至 ONTAP 子系統:

    1. 驗證 TLS PSK:

      nvme connect -t tcp -w 192.168.111.80 -a 192.168.111.66  -n nqn.1992-08.com.netapp:sn.a2d41235b78211efb57dd039eab67a95:subsystem.nvme1 --tls_key=0x069f56bb –tls

      您應該會看到下列輸出:

    connecting to device: nvme0
    1. 驗證列表子系統:

      nvme list-subsys
      顯示範例輸出
      nvme-subsys0 - NQN=nqn.1992-08.com.netapp:sn.a2d41235b78211efb57dd039eab67a95:subsystem.nvme1
                     hostnqn=nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b2c04f444d33
      \
       +- nvme0 tcp traddr=192.168.111.66,trsvcid=4420,host_traddr=192.168.111.80,src_addr=192.168.111.80 live
  10. 新增目標,並驗證 TLS 連線至指定的 ONTAP 子系統:

    nvme subsystem controller show -vserver sles15_tls -subsystem sles15 -instance
    顯示範例輸出
    (vserver nvme subsystem controller show)
                              Vserver Name: vs_iscsi_tcp
                              Subsystem: nvme1
                          Controller ID: 0040h
                      Logical Interface: tcpnvme_lif1_1
                                   Node: A400-12-181
                               Host NQN: nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b2c04f444d33
                     Transport Protocol: nvme-tcp
            Initiator Transport Address: 192.168.111.80
                        Host Identifier: 4c4c454400355910804bb2c04f444d33
                   Number of I/O Queues: 2
                       I/O Queue Depths: 128, 128
                      Admin Queue Depth: 32
                  Max I/O Size in Bytes: 1048576
              Keep-Alive Timeout (msec): 5000
                         Subsystem UUID: 8bbfb403-1602-11f0-ac2b-d039eab67a95
                  Header Digest Enabled: false
                    Data Digest Enabled: false
           Authentication Hash Function: sha-256
    Authentication Diffie-Hellman Group: 3072-bit
                    Authentication Mode: unidirectional
           Transport Service Identifier: 4420
                           TLS Key Type: configured
                       TLS PSK Identity: NVMe1R01 nqn.2014-08.org.nvmexpress:uuid:4c4c4544-0035-5910-804b-b2c04f444d33 nqn.1992-08.com.netapp:sn.a2d41235b78211efb57dd039eab67a95:subsystem.nvme1 oYVLelmiOwnvDjXKBmrnIgGVpFIBDJtc4hmQXE/36Sw=
                             TLS Cipher: TLS-AES-128-GCM-SHA256

步驟 11 :檢閱已知問題

沒有已知問題。