基於 SmartX 分散式儲存的 iSCSI 與兩種 NVMe-oF 技術與效能對比

SmartX超融合發表於2023-02-20

作者:深耕行業的 SmartX 金融團隊

本文重點

  • SmartX 分散式塊儲存 ZBS 提供 2 種存算分離架構下的資料接入協議,分別是 iSCSI 和 NVMe-oF。其中,iSCSI 雖然具有很多優勢,但不適合支援高效能的工作負載,這也是 SmartX 選擇支援 NVMe-oF 的原因之一。
  • 結合效能和網路條件這兩個角度的考慮,ZBS 選擇支援 NVMe over RDMA/RoCE v2 和 NVMe over TCP,以滿足使用者的多種需求。

  • ZBS 中,NVMe-oF 接入採用繼承策略和均衡策略,這樣的設計可以在充分利用多個儲存接入點的同時避免佔用所有儲存接入點的處理能力,保持各個接入點的負載基本均衡。
  • 從實驗室基礎效能驗證和金融使用者效能驗證可以看出,相比 iSCSI 和 NVMe over TCP,使用 NVMe over RDMA 作為接入協議,可以取得較高的 I/O 效能輸出,具體表現為更高的隨機 IOPS 和順序頻寬,以及更低的延時表現。


1 背景

“分散式塊儲存 ZBS 的自主研發之旅|架構篇” (https://www.smartx.com/blog/2022/08/zbs-architecture/)文章提及了部分資料路徑的設計實現,僅描述了當 I/O 發生時,Access 資料接入元件與 Meta 管理元件之間的通訊過程,該過程屬於整個 I/O 路徑的後半段。

本篇文章, 我們將詳細介紹資料接入路徑中的前半段,即計算端與 ZBS 通訊的接入協議層,使讀者可以更加全面地瞭解 ZBS 分散式儲存接入協議,同時透過對比不同接入協議的原理實現、基礎環境要求和效能測試資料,為客戶在部署使用 ZBS,提供最佳實踐參考。

本篇文章會涉及到 RDMA(Remote Direct Memory Access)技術,如果讀者想更多地瞭解該技術細節,推薦閱讀 “分散式塊儲存 ZBS 的自主研發之旅|資料同步協議RDMA” (https://www.smartx.com/blog/2023/01/zbs-rdma/)文章。


2 Access 概述

Access 是虛擬儲存物件(File/LUN/Namespace)與實際的資料塊(Extent)之間的互動邊界。Access 接收 NFS Client、iSCSI Initiator、NVMF initiator 的讀寫請求,並將不同的協議物件,例如 File、LUN、Namespace 轉義成 ZBS 內部的 Volume 與 Extent 物件,並處理資料多副本等 ZBS 內部邏輯。

Access 透過 Session 機制與 Meta 建立聯絡,並由 Session 確保資料訪問許可權(Extent Lease)的唯一性。

圖 1:Access 接入服務



3 接入協議

目前 ZBS 提供 4 種接入協議,分別是 NFS、iSCSI、NVMe-oF 和 vHost,其中 NFS 和 vHost 主要應用場景是超融合架構(相關 vHost 詳細介紹可參考文章 “SPDK vHost-user 如何幫助超融合架構實現 I/O 儲存效能提升”,https://www.smartx.com/blog/2022/03/spdk-vhost-user/),本文不進行過多展開,將主要介紹存算分離架構下的資料接入協議。


圖 2:ZBS iSCSI & NVMe-oF 接入協議


3.1 ZBS iSCSI 實現

當前,在雲端計算塊儲存場景中,iSCSI 依然是分散式儲存 SDS 主流的接入方法之一,其基於標準的 TCP/IP 協議棧、無需改動已有客戶端系統、對伺服器硬體和標準乙太網有著廣泛的相容性、管理簡單等特點,使 iSCSI 得到廣泛的應用。

iSCSI 是目前 ZBS 支援的接入協議之一,在 ZBS 實現中,客戶端(initiator)均不直接指向某個具體的儲存節點 Access 作為協議接入端,而是指向 iSCSI Redirector 服務地址。當 iSCSI initiator 向 iSCSI Redirector 發起 Login 請求時,iSCSI Redirector 將登入請求轉發給 Meta,Meta 根據與 Access 維護的 Session 資訊尋找是否已經存在繫結的 Access Server,如有則返回對應的 Access Server 地址,否則將返回任一 Access Server 地址。客戶端(initiator)將與對應的 Access Server 完成 Login 過程與後續的 I/O 處理流程。

透過 Redirector 服務可簡化 iSCSI 接入高可用配置的複雜度。同樣,iSCSI 也基於 Redirector 服務提供單一客戶端(initiator)訪問一個 iSCSI Target 僅使用一條資料鏈路的單點接入保證(避免同一 Target 的多點訪問),以及接入鏈路均衡的作用。

圖 3 :iSCSI 接入架構

iSCSI 雖然具備很多使用上的優勢,但是在效能層面,卻一直存在難以充分發揮現代高速儲存和網路裝置效能的問題,SCSI 協議的設計和開發時間可以追溯到上個世紀,首先是當時硬體環境還是以機械磁碟為主流,協議對當今高效能硬體,例如 NVMe 介質,以及現代工作負載的要求,已顯疲態。其次是協議棧層面,長期不斷的開發迭代,相較新型的協議,iSCSI 相對厚重且效率低下。

對於效能提升,iSER(iSCSI Extensions for RDMA)是 iSCSI 的一次進化,透過 RDMA 能力,來提升 iSCSI 在網路層的效能。ZBS 並沒有採用這樣的技術棧,原因也很簡單,因為 iSER 的基石依然是 iSCSI,前面也簡要分析了該協議的一些不足,做個比喻,就是建築物和地基的關係。 既然要使用 RDMA,選擇新型的 NVMe 協議支撐高效能的工作負載會是更優的選擇。


3.2 NVMe-oF 介紹

在介紹 NVMe-oF 之前,首先簡單介紹一下 NVM Express(NVMe)協議規範,該協議定義主機如何透過 PCIe 匯流排與非易失性儲存器進行通訊。NVMe 規範是為 SSD 高速儲存介質而量身設計,相較於 SCSI,是一種更加高效的介面規範,支援 65535 個 I/O 佇列,每個佇列支援 65535 條命令(佇列深度)。佇列對映提供預期的 CPU 資源排程,並能適應在中斷或輪詢模式下的裝置驅動,提供了更高的資料吞吐和更低的通訊延遲。

更快的儲存,則需要更快的網路才能發揮最大的儲存價值。NVMe-oF 全稱是 NVMe over Fabrics(本文均採用縮寫 NVMe-oF),它把 NVMe 在單系統內部提供的高效能、低延遲和極低的協議開銷等優勢進一步發揮到客戶端與儲存系統互聯的網路結構當中。NVMe-oF 定義了使用多種通用的傳輸層協議來實現 NVMe 遠端連線能力。

圖 4:NVMe over Fabrics

NVMe-oF 承載網路(資料平面)包括:

(1)NVMe over FC:基於傳統的 FC 網路(主機匯流排介面卡 HBA 和光纖交換機構建的專有通訊網路),與 FC-SAN(SCSI)可以同時執行在同一個 FC 網路中,最大化地複用 FC 網路基礎環境,發揮 NVMe 新型協議的優勢。常用於傳統集中儲存的升級改造。

(2)NVMe over RDMA:透過遠端直接記憶體訪問技術,允許客戶端程式遠端訪問儲存系統的記憶體空間進行資料傳輸。具有資料零複製(不涉及網路堆疊執行資料傳輸)、Kernel Bypass(應用程式可以直接從使用者空間執行資料傳輸,無需核心參與)、減少 CPU 資源消耗(應用程式可以訪問遠端記憶體,而無需在遠端伺服器中消耗任何 CPU Cycle)等特點。

① InfiniBand - 透過 InfiniBand 網路使用 RDMA,在高效能運算 HPC 領域非常流行,與 FC 相似,需要專有的網路介面卡和交換網路支撐。

② RoCE - 全稱 RDMA over Converged Ethernet,即透過乙太網實現 RDMA,目前有兩個版本:RoCEv1 不可路由,僅可以在 2 層工作;RoCEv2 使用 UDP/IP,具有 3 層路由能力。

圖 5:RoCEv1/v2 幀結構(來自 Wikipedia)

③ iWARP - 構建在 TCP/IP 之上。跟 RoCE 協議繼承自 Infiniband 不同,iWARP 本身不是直接從 Infiniband 發展而來的。Infiniband 和 RoCE 協議都是基於 “Infiniband Architecture Specification”,也就是常說的“IB 規範”。而 iWARP 是自成一派,遵循著一套 IETF 設計的協議標準。雖然遵循著不同的標準,但是 iWARP 的設計思想受到了很多 Infiniband 的影響,並且目前使用同一套程式設計介面。

(3)NVMe over TCP:與前兩種實現方式不同,該方案無需任何特殊的硬體要求,基於通用標準乙太網環境。成本低是該協議的優勢,缺點是需要更多的 CPU 資源參與資料處理,受限於 TCP/IP 協議,在資料傳輸中相對 RDMA 會引入更多的延遲。

ZBS 不支援 FC 和 IB 的主要原因是其依賴專有網路,這與 ZBS 的產品定位相沖突(基於標準乙太網構建分散式儲存網路)。而不支援 iWARP 原因是對比 RoCE 來看(這是一個二選一問題),在生態、協議效率和複雜度等多方面因素評估下,SmartX 更加看好 RoCE 未來的發展,在極致的效能訴求下,RoCE 也會比 iWARP 具有更強的潛力。當然,RoCE 在資料重傳和擁塞控制上受限於協議,需要無損網路的環境(RoCE 對於丟包 PSN 的 NACK 重傳機制,效能非常差)。這樣的客觀條件,是任何一個儲存廠家需要結合自身產品權衡的選擇題。

總結一下,應用 NVMe-oF,可以選擇的技術路線有 3 條,分別是 FC、RDMA 和 TCP, 從效能和網路條件這兩個維度出發,ZBS 選擇支援 RDMA/RoCE v2 和 TCP,這樣的組合,可以非常好地適配不同客戶的個性需求。

  • 對效能敏感,並願意為提高效能而投入更多的網路成本,可以選擇使用  RDMA/RoCE v2 接入方案。
  • 對成本敏感或受網路條件限制,可以選擇  TCP 的接入方案。


3.3 ZBS NVMe-oF 實現

NVMe-oF 在 ZBS 中支援兩種形態,即 RDMA/RoCE v2 和 TCP,這兩個形態區別僅體現在外部客戶端使用哪種協議接入 Access,在後設資料管理上並沒有區別。

NVMe-oF 協議本身與 iSCSI 協議有很多相似的地方,例如客戶端標識為 initiator 端,服務端為 Target 端,NVMe-oF 協議中使用與 iSCSI IQN 近似的 NQN 來作為協議通訊雙方的標識等。同時,NVMe-oF 定義了 Subsystem(子系統,相當於 SCSI 體系下的 Target)和 Namespace(名稱空間,類似於 SCSI 體系下的 LUN)專有標準。

相比於 iSCSI 透過 initiator + Target 的資料鏈路控制,NVMe-oF 可以支援 initiator + Namespace 這樣更小的鏈路控制粒度。NVMe-oF 在路徑策略選擇上(協議原生支援 Multipath)是透過 ANA(Asymmetric Namespace Access)機制指定 Target 鏈路優先順序,再由客戶端結合優先順序與自身的鏈路狀態探測結果選擇 I/O 具體路徑。

ANA 狀態包括:Optimized 最優/Non-Optimized 次優/Inaccessible 不可達/Persistent Loss 失去連線/Change 狀態變更。

ZBS 會將所有的可用鏈路設定為 OP(最優鏈路)和 Non-OP(次優鏈路)兩種狀態,其他狀態未發生異常或變化時由 Driver 自動標記。對於每個 initiator + Namespace 的組合,僅返回 1 個最優接入點和 2 個次優接入點。在最優接入點可用時,客戶端將僅透過最優接入點訪問資料,在異常時選擇 2 個次優接入點中的一個進行訪問(出於簡化安全性處理的考慮,部署時會要求客戶端配置為 AB 模式,即使 2 個次優接入點是等價的,也不會進入 AA 模式,同時從兩個接入點中下發 I/O)。

ZBS 接入策略:

  • 繼承策略,同一客戶端訪問同一 Subsystem 中的所有 Namespace 使用同一接入點。
  • 均衡策略,保證同一 Namespace Group 中的 Namespace 儘量使用不同接入點。

ZBS 接入點分配策略可以實現以下目標:

  • 在客戶端視角,允許利用多個儲存接入點的處理能力。
  • 在客戶端視角,保證不同客戶端的公平性,避免佔用所有儲存接入點的處理能力。
  • 在儲存接入點視角,保持各個接入點的負載基本均衡,同時又儘可能發揮多個接入點的處理能力。

圖 6:NVMe-oF 接入架構


4 實驗室效能驗證資料

4.1 環境資訊

儲存叢集,由 3 節點組成,安裝 SMTX ZBS 5.2 OS,儲存內部網路開啟 RDMA (分散式儲存 ZBS 的自主研發之旅|資料同步協議 RDMA,https://www.smartx.com/blog/2023/01/zbs-rdma/),分層儲存結構,所有儲存節點的硬體配置相同,節點環境資訊如下:

計算端安裝 CentOS 8.2 作業系統,使用 FIO 壓測工具(模型 direct=1,numjobs=1,ioengine=libaio),硬體環境資訊如下:


4.2 效能資料

在相同的測試環境和測試方法下,分別使用不同的接入協議進行效能驗證(iSCSI、NVMe over TCP 和 NVMe over RDMA),測試基於單卷(單節點效能,測試 1 個 2 副本卷)和多卷(叢集效能,對於 3 節點叢集,將測試 3 個 2 副本卷)的儲存基準效能(4K 隨機 I/O,256K 順序 I/O)。

4.2.1 單卷效能 

4.2.2 多卷效能


4.3 測試結論

透過以上基準測試資料,可以看到, 相同軟硬體環境以及測試方法下,使用 NVMe over RDMA 作為接入協議,可以取得較高的 I/O 效能輸出,其表現為更高的隨機 IOPS 和順序頻寬,以及更低的延時表現。


5 某股份制銀行效能驗證資料

與實驗室基準測試資料不同,使用者關注的是貼合自身應用業務的真實 I/O 模型。某股份制銀行效能驗證要求如下:

  • 在相同環境下,驗證 iSCSI、NVMe over TCP 和 NVMe over RDMA 效能表現。
  • I/O 模型為 8K 和 16K 隨機讀寫,讀寫比例 5 : 5。
  • 驗證寫平均延遲不大於 300us 和 500us 下的 IOPS 的效能表現以及對應的 iodepth。
  • 所有接入協議場景,分散式儲存內部均開啟 RDMA。


5.1 環境資訊

儲存叢集,由 3 節點組成,安裝 SMTX ZBS 5.0 OS,儲存內部網路開啟 RDMA(分散式儲存 ZBS 的自主研發之旅|資料同步協議 RDMA , https://www.smartx.com/blog/2023/01/zbs-rdma/)所有儲存節點的硬體配置相同,節點環境資訊如下:

3 臺計算端,安裝 CentOS 8.4 作業系統,使用 vdbench 壓測工具,硬體環境資訊如下:


5.2 效能資料

在相同的測試環境和測試方法下,分別使用不同的接入協議進行效能驗證(iSCSI、NVMe over TCP 和 NVMe over RDMA),測試多卷叢集效能(3 節點儲存叢集,將測試 3 個 2 副本卷)。

5.2.1 延時 <= 300us 測試資料 IOPS(單位:K)

5.2.2 延遲 <= 500us 測試資料 IOPS(單位:K)


5.3 測試結論

透過固定寫入延遲,觀察在調整 iodepth 深度下不同接入協議所能發揮的 IOPS 效能。從測試結果可以看出, 在 8K 和 16K 混合讀寫測試場景中,NVMe over RDMA 依然發揮出最高的隨機 I/O 效能。


6 總結

本文詳細描述 ZBS 分散式塊儲存的資料接入原理,同時分別介紹了所支援的多種接入協議的實現方式,以及背後的思考。透過原理介紹和實際驗證資料,希望給讀者一個全面的視角理解 ZBS 接入服務,為更好部署和使用 ZBS 提供參考。


參考文章:

1. RDMA over Converged Ethernet. Wikipedia.

2. How Ethernet RDMA Protocols iWARP and RoCE Support NVMe over Fabrics.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69974533/viewspace-2936047/,如需轉載,請註明出處,否則將追究法律責任。

相關文章