跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 儲存管理指南 / 網路儲存 / NVMe over Fabric
適用範圍 SUSE Linux Enterprise Server 12 SP5

16 NVMe over Fabric

本章介紹如何設定 NVMe over Fabric 主機和目標。

16.1 綜覽

NVM Express (NVMe) 是有關存取非揮發性儲存 (通常是 SSD 磁碟) 的介面標準。與 SATA 相比,NVMe 支援的速度要高得多,並且延遲更低。

NVMe over Fabric 是用於透過不同網路架構存取 NVMe 儲存的結構。這些網路架構有 RDMA光纖通道 NVMe (FC-NVMe) 等。NVMe over Fabric 的作用類似於 iSCSI。為提高容錯能力,NVMe over Fabric 內建了多重路徑支援。

NVMe 主機是連接到 NVMe 目標的機器。NVMe 目標是共用其 NVMe 區塊裝置的機器。

SUSE Linux Enterprise Server 12 SP5 支援 NVMe。提供了可用於 NVMe 區塊儲存及 NVMe over Fabric 目標和主機的核心模組。

若要查看您的硬體是否有任何特殊考量,請參閱第 16.4 節 「特殊硬體組態」

16.2 設定 NVMe over Fabric 主機

若要使用 NVMe over Fabric,必須在目標上使用支援的網路方法。支援的方法包括光纖通道 NVMe 和 RDMA。以下小節介紹如何將主機連接到 NVMe 目標。

16.2.1 安裝指令行用戶端

若要使用 NVMe over Fabric,需要安裝 nvme 指令行工具。請使用 zypper 安裝該工具︰

tux > sudo zypper in nvme-cli

使用 nvme --help 可列出所有可用的子指令。我們提供了 nvme 子指令的 man 頁面。執行 man nvme-SUBCOMMAND 可參閱相關的 man 頁面。例如,若要檢視 discover 子指令的 man 頁面,請執行 man nvme-discover

16.2.2 探查 NVMe over Fabric 目標

若要列出 NVMe over Fabric 目標上的可用 NVMe 子系統,您需有探查控制器位址和服務 ID。

tux > sudo nvme discover -t TRANSPORT -a DISCOVERY_CONTROLLER_ADDRESS -s SERVICE_ID

以基礎傳輸媒體 (looprdmafc) 取代 TRANSPORT。以探查控制器的位址取代 DISCOVERY_CONTROLLER_ADDRESS。對於 RDMA,此位址應是 IPv4 位址。以傳輸服務 ID 取代 SERVICE_ID。如果服務以 IP 為基礎 (例如 RDMA),則服務 ID 指定連接埠號碼。對於光纖通道,不需要提供服務 ID。

NVMe 主機只會看到它們有權連接的子系統。

範例︰

tux > sudo nvme discover -t rdma -a 10.0.0.1 -s 4420

如需更多詳細資料,請參閱 man nvme-discover

16.2.3 連接 NVMe over Fabric 目標

識別 NVMe 子系統後,可以使用 nvme connect 指令來連接它。

tux > sudo nvme connect -t transport -a DISCOVERY_CONTROLLER_ADDRESS -s SERVICE_ID -n SUBSYSTTEM_NQN

以基礎傳輸媒體 (looprdmafc) 取代 TRANSPORT。以探查控制器的位址取代 DISCOVERY_CONTROLLER_ADDRESS。對於 RDMA,此位址應是 IPv4 位址。以傳輸服務 ID 取代 SERVICE_ID。如果服務以 IP 為基礎 (例如 RDMA),則此 ID 指定連接埠號碼。以探查指令找到的所需子系統的 NVMe 合格名稱取代 SUBSYSTEM_NQNNQNNVMe 合格名稱 (NVMe Qualified Name) 的縮寫。NQN 必須是唯一的。

範例︰

tux > sudo nvme connect -t rdma -a 10.0.0.1 -s 4420 -n nqn.2014-08.com.example:nvme:nvm-subsystem-sn-d78432

或者,使用 nvme connect-all 連接探查到的所有名稱空間。如需進階用法,請參閱 man nvme-connectman nvme-connect-all

16.2.4 多重路徑

NVMe 原生多重路徑預設處於停用狀態。若要列印多重路徑裝置的配置,請使用指令 nvme list-subsys。若要啟用 NVMe 原生多重路徑,請新增 nvme-core.multipath=on 做為開機參數。

16.3 設定 NVMe over Fabric 目標

16.3.1 安裝指令行用戶端

若要設定 NVMe over Fabric 目標,需要安裝 nvmetcli 指令行工具。請使用 zypper 安裝該工具︰

tux > sudo zypper in nvmetcli

上提供了 nvmetclihttp://git.infradead.org/users/hch/nvmetcli.git/blob_plain/HEAD:/Documentation/nvmetcli.txt 的最新文件.

16.3.2 組態步驟

下面的程序舉例說明如何設定 NVMe over Fabric 目標。

組態儲存在樹狀結構中。使用 cd 指令可進行導覽。使用 ls 可列出物件。您可以使用 create 建立新物件。

  1. 啟動 nvmectli 互動式外圍程序:

    tux > sudo nvmetcli
  2. 建立新連接埠:

    (nvmetcli)> cd ports
    (nvmetcli)> create 1
    (nvmetcli)> ls 1/
    o- 1
      o- referrals
      o- subsystems
  3. 建立 NVMe 子系統:

    (nvmetcli)> cd /subsystems
    (nvmetcli)> create nqn.2014-08.org.nvmexpress:NVMf:uuid:c36f2c23-354d-416c-95de-f2b8ec353a82
    (nvmetcli)> cd nqn.2014-08.org.nvmexpress:NVMf:uuid:c36f2c23-354d-416c-95de-f2b8ec353a82/
    (nvmetcli)> ls
    o- nqn.2014-08.org.nvmexpress:NVMf:uuid:c36f2c23-354d-416c-95de-f2b8ec353a82
      o- allowed_hosts
      o- namespaces
  4. 建立新的名稱空間,並在其中設定 NVMe 裝置。

    (nvmetcli)> cd namespaces
    (nvmetcli)> create 1
    (nvmetcli)> cd 1
    (nvmetcli)> set device path=/dev/nvme0n1
    Parameter path is now '/dev/nvme0n1'.
  5. 啟用先前建立的名稱空間:

    (nvmetcli)> cd ..
    (nvmetcli)> enable
    The Namespace has been enabled.
  6. 顯示建立的名稱空間:

    (nvmetcli)> cd ..
    (nvmetcli)> ls
    o- nqn.2014-08.org.nvmexpress:NVMf:uuid:c36f2c23-354d-416c-95de-f2b8ec353a82
      o- allowed_hosts
      o- namespaces
        o- 1
  7. 允許所有主機使用該子系統。只有在安全環境中才可這樣做。

    (nvmetcli)> set attr allow_any_host=1
    Parameter allow_any_host is now '1'.

    或者,可以只允許特定的主機建立連接︰

    (nvmetcli)> cd nqn.2014-08.org.nvmexpress:NVMf:uuid:c36f2c23-354d-416c-95de-f2b8ec353a82/allowed_hosts/
    (nvmetcli)> create hostnqn
  8. 列出建立的所有物件︰

    (nvmetcli)> cd /
    (nvmetcli)> ls
    o- /
      o- hosts
      o- ports
      | o- 1
      |   o- referrals
      |   o- subsystems
      o- subsystems
        o- nqn.2014-08.org.nvmexpress:NVMf:uuid:c36f2c23-354d-416c-95de-f2b8ec353a82
          o- allowed_hosts
          o- namespaces
            o- 1
  9. 使目標可透過 RDMA 使用︰

    (nvmetcli)> cd ports/1/
    (nvmetcli)> set addr adrfam=ipv4 trtype=rdma traddr=10.0.0.1 trsvcid=4420
    Parameter trtype is now 'rdma'.
    Parameter adrfam is now 'ipv4'.
    Parameter trsvcid is now '4420'.
    Parameter traddr is now '10.0.0.1'.

    或者,使目標可透過光纖通道使用︰

    (nvmetcli)> cd ports/1/
    (nvmetcli)> set addr adrfam=fc trtype=fc traddr=nn-0x1000000044001123:pn-0x2000000055001123 trsvcid=none

16.3.3 備份和還原目標組態

可使用以下指令在 JSON 檔案中儲存目標組態︰

tux > sudo nvmetcli
(nvmetcli)> saveconfig nvme-target-backup.json

若要還原組態,請使用︰

(nvmetcli)> restore nvme-target-backup.json

您還可以抹除目前組態︰

(nvmetcli)> clear

16.4 特殊硬體組態

16.4.1 綜覽

某些硬體需要特殊的組態才能正常運作。請瀏覽以下章節的標題,確定您是否使用了所提到的任何裝置或廠商。

16.4.2 Broadcom

如果您在使用 Broadcom Emulex LightPulse Fibre Channel SCSI 驅動程式,請在 lpfc 模組的目標和主機中新增核心組態參數︰

tux > sudo echo "options lpfc lpfc_enable_fc4_type=3" > /etc/modprobe.d/lpfc.conf

確定 Broadcom 介面卡韌體的版本至少為 11.2.156.27。另請確定已安裝最新版本的 nvme-cli, nvmetlci 和核心。

若要啟用光纖通道連接埠做為 NVMe 目標,請設定模組參數 lpfc_enable_nvmet= COMMA_SEPARATED_WWPNS。系統只會為目標模式設定列出的 WWPN。可將光纖通道連接埠設定為目標啟動器。

16.4.3 Marvell

QLE269x 和 QLE27xx 介面卡上都支援 FC-NVMe。Marvell® QLogic® QLA2xxx 光纖通道驅動程式中預設會啟用 FC-NVMe 支援。

若要確認是否已啟用 NVMe,請執行以下指令:

tux > cat /sys/module/qla2xxx/parameters/ql2xnvmeenable

如果顯示 1,則表明已啟用 NVMe,顯示 0 表示已停用 NVMe。

然後,檢查以下指令的輸出,確定 Marvell 介面卡韌體的版本不早於 8.08.204。

tux > cat /sys/class/scsi_host/host0/fw_version

最後,確定已安裝適用於 SUSE Linux Enterprise Server 的最新版本 ( nvme-cli, QConvergeConsoleCLI) 及核心。例如,您可以執行

root # zypper lu && zypper pchk

來檢查更新和修補程式。

如需安裝的更多詳細資料,請參閱下列 Marvell 使用者指南中的 FC-NVMe 部分:

16.5 更多資訊

如需 nvme 指令功能的更多詳細資料,請參閱 nvme nvme-help

以下連結提供了 NVMe 和 NVMe over Fabric 的簡介︰