眾所周知,NVMe 是一個邏輯裝置介面規範,NVM代表非揮發性記憶體(Non-Volatile Memory)的首字母縮略字,是固態硬碟(SSD)的常見的快閃記憶體形式。SSD 通常分為兩類介面:SATA 和 NVMe。在需要相容舊元件且效能不是首要考慮因素時,SATA 介面在新一代驅動器中依然可用。SATA 誕生於2000年,原本是為配備旋轉盤片和磁頭的傳統硬碟設計的。
雖然這類裝置能夠提供穩定的數據吞吐量,但由於包含大量機械元件,每次讀/寫操作都會帶來很明顯的延遲。這些硬體上的局限也制約了SATA介面規範和其整體效能。
相關閱讀:
對於企業級套用,SAS 介面通常作為SATA的替代選擇,兩者都是ATA和 SCSI介面 的前進演化版,它們都利用序列鏈路發送既有命令。無論使用SAS還是SATA,都需要在CPU和磁盤之間配置硬碟機控制器。
隨著新一代固態硬碟的推出,其理論效能已接近甚至超越RAM,遠超傳統HDD,因此需要一種全新的存取介面來發揮其潛力。
NVMe(Non-Volatile Memory Express)
2011年,NVMe(非揮發性記憶體Express)介面應運而生。這一介面專為利用低延遲和高快閃記憶體效能而設計。其物理連結器則根據套用場景有所不同:在客戶端裝置上,由於無需熱插拔且重量和空間更為關鍵,因此M.2尺寸是常見選擇。而借助Thunderbolt 3介面,PCIe裝置可作為USB-C可插拔裝置連線,NVMe驅動器也常以這種形式出現(不過,只有當較新的USB標準支持超過SATA的頻寬時,這樣的裝置作為NVMe驅動器才具有實際意義)。
NVMe驅動器確實具備作為PCIe擴充套件卡插入PCIe插槽的能力,但這種套用相對少見,因為它占用的是那些通常優先用於安裝GPU卡的寶貴插槽。在計算伺服器環境中,NVMe驅動器更為常見地以M.2(常作為啟動裝置使用)和U.2(專門用於數據儲存)的形式呈現。
從設計角度來看,NVMe規範定義了一種簡潔高效的協定,僅包含13條基礎命令。為了最大化並列處理能力,這些命令可以在高達64K個I/O佇列上執行,每個佇列可容納64K條命令。這種設計使得NVMe的效能遠超SATA規範,高出近三個數量級。
圖1:NVMe 命令集,來源:Saegate
遠端塊儲存協定
就遠端存取儲存而言,有兩種方法:NAS(網路附加儲存)和 SAN(儲存區域網路)。對於個人使用者及小型團隊來說,NAS 是一種理想的選擇,而大型組織和企業則更傾向於采用 SAN。
NAS 通常用於小型家用檔伺服器環境中,它透過一組使用者友好的網路協定來掛載儲存,最常見的是使用 NFS(網路檔案系統)和 SMB(伺服器訊息塊)協定來存取檔案系統。NAS 的一個顯著特點是它直接處理檔案系統層,並充當檔伺服器,這與 SAN 有著本質的區別。
相比之下,SAN 裝置則專註於提供塊儲存服務,而將檔案系統層的管理交由客戶端負責。這就引出了一個問題:客戶端是如何存取遠端伺服器上的塊裝置的呢?
在深入探討之前,我們先來了解一下 SCSI(小型電腦系統介面),這是一個自20世紀80年代起就存在的儲存存取標準。隨著時間的推移,其命令集被廣泛套用於多種新型協定,如 SAS(序列連線 SCSI)和 USB 連線 SCSI。在 SAN 中,SCSI 被用作遠端存取塊儲存的協定。具體來說,SCSI 命令會被封裝在網路協定中,並在 iSCSI 客戶端(發起方)和具有儲存資源的 iSCSI 伺服器(目標)之間進行交換。實作這一功能的主要傳輸協定包括 TCP(在 iSCSI 中使用)和光纖通道協定(FCP),而 FCP 本身也可以進一步透過乙太網路( FCoE )進行封裝。這種靈活性和相容性使得 SAN 成為了大型企業級儲存解決方案的首選。
圖 2:SCSI 和 NVMe 作為遠端塊儲存協定,來源:Piyush Gupta
iSCSI和NVMe均被用作遠端存取塊儲存的協定,且兩者均依賴於Fabric network(結構網路)作為主要的傳輸方式。這裏的「Fabric network」是一個寬泛的概念,用於描述抽象的基礎設施層。無論是透過本地網路連線還是利用隧道技術跨數據中心連線,裝置的連線方式並不構成主要考量因素。關鍵在於主機期望網路能在頻寬和延遲方面提供最佳效能,以確保數據傳輸的高效性和即時性。
NVMe over Fabrics
最初,NVMeoF是作為獨立規範釋出的,獨立於 NVMe。然而,隨著其成功的套用與實施,NVMeoF逐漸融入並成為了NVMe標準體系的重要一環。NVMeoF 的引入使得NVMe命令能夠透過多種傳輸方式得以封裝,進而將協定的可用性擴充套件至跨網路結構的主機與儲存之間的數據傳輸。
這一概念與基於SCSI的協定(如iSCSI或iSER)有著異曲同工之妙。原本為本地儲存存取設計的命令集,經過重新設計後,如今能夠在儲存伺服器與主機之間透過網路進行通訊。
與iSCSI相似,NVMeoF的發起方和目標方(即客戶端和伺服器)會建立連線並交換命令。雖然它們的NVMe堆疊主要以軟體形式實作,但考慮到目標方通常需要為多個發起方提供服務,而發起方又可能需要存取多個分散的驅動器,因此可以透過將命令解封裝轉移至專用硬體(例如 DPU)來實作更好的效能。
與SCSI相比,NVMe協定支持並列I/O操作,無需行程間釘選,從而大大提高了效率。此外,NVMe還最佳化了會話互動:單次數據傳輸僅需一次往返和兩次互動,相較於SCSI的兩次往返和四次互動,極大地減少了互動次數。這些優勢在NVMeoF中得到了充分體現,由於引入了網路延遲,減少往返時間成為了提升整體效能的關鍵因素。
NVMe 傳輸的分類
圖 3:NVMe 傳輸的分類
首先我們介紹用於存取主機內本地儲存的記憶體傳輸。這種傳輸方式透過本地匯流排與儲存裝置進行通訊,裝置通常與PCIe或其他本地匯流排技術(如Compute Express Link,簡稱CXL,或Advanced Extensible Interface,簡稱AXI)連線。
NVMeoF擴充套件了NVMe命令集在基於訊息的傳輸中的套用。目前,RDMA和 TCP 傳輸由NVMe指定,光纖通道上的NVMe(FC-NVMe)則由INCITS(InterNational Committee for Information Technology Standards)組織管理。對於NVMe/TCP,發起方和目標方之間會建立TCP連線,NVM子系統透過此連線進行通訊,交換NVMe/TCP協定數據單元。此TCP連線同時用於命令和數據的傳輸,通常由內核網路堆疊在軟體中處理。雖然這種方法具有無需特殊網路配置的便利性,但由於軟體處理的引入,它可能會導致效能下降並增加額外的計算資源需求。
相比之下,FC-NVMe利用光纖通道的可靠性、並列性和多佇列功能,在現有的FC網路上提供高效的訊息傳輸。與NVMe/TCP相比,FC-NVMe由於協定設計更為精簡,因此在CPU開銷方面表現更為優秀。
然而,值得註意的是,無論是NVMe/TCP還是FC-NVMe-2,它們均未充分利用能夠加速RDMA的現代解除安裝網卡。為了彌補這一不足,NVMe標準特別指定了RDMA傳輸方式。RDMA允許數據在應用程式的記憶體空間與遠端主機的記憶體空間之間直接傳輸,無需內核的介入。這不僅減少了CPU的開銷,還降低了數據傳輸的延遲,為高效能儲存存取提供了強有力的支持。
圖4:RDMA繞過內核TCP/IP協定棧,來源:FS
RDMA(遠端直接記憶體存取)
這裏的核心概念在於應用程式(如使用 NVMe 的資料庫)和裝置(即 NVMe 驅動器)能夠直接讀取和寫入網卡記憶體緩沖區,繞過傳統的內核網路堆疊。
RDMA網路技術通常基於 InfiniBand 或乙太網路。InfiniBand是一個高效能的L2網路標準,RDMA是InfiniBand的一個核心功能。而乙太網路本身並不直接支持RDMA。
InfiniBand網路專為HPC(高效能計算)數據中心設計,提供高吞吐量、低延遲和QoS(服務品質)功能,它使用自己獨有的鏈路、網路和傳輸協定。在InfiniBand網路中,RDMA封包透過其特定的傳輸協定發送。然而,由於InfiniBand網路裝置和NIC的供應商相對較少,基於乙太網路的RDMA解決方案在市場中更受歡迎。
要在乙太網路上實作RDMA,網路結構必須支持無失真傳輸。標準乙太網路並不保證這一點,因此需要進行相應的增強或使用特定的上層傳輸協定。由於現代網路方法非常靈活,因此在硬體供應商的支持下,可以實作這一目標。
值得註意的包括:
融合乙太網路(RDMA over Converged Ethernet)上的RDMA(v1和v2)和iWARP在傳輸方式和特性上略有不同。
RoCEv1在乙太網路上使用IB網路層封包,但由於沒有使用 IP封裝 ,封包無法在IP網路中路由。
RoCE v2在網路層使用UDP,允許封包在IPv4或IPv6網路上進行路由。因此,RoCE v2有時被稱為可路由RoCE(RRoCE)。
iWARP(Internet Wide Area RDMA Protocol)使用TCP作為傳輸層協定,它提供了固有的可靠性,因此無需對乙太網路層進行額外增強。然而,與RoCE相比,使用TCP會帶來更多的開銷和復雜性。
圖5:常見RDMA實作的網路層比較,來源:FS
所有這些技術共存,並各自提供不同的優勢。在數據中心環境中,為了實作最佳效能,InfiniBand 或 RoCE 通常是首選。在某些特定場景中,專用集群網路也能作為一個可行的網路解決方案。而在 DCB 配置復雜或需要跨越公共互聯網部署時,iWARP 技術可能更為合適。
小結
NVMeoF 的概念是基於SCSI規範逐步發展而來的。盡管舊有的技術已被證明是可靠且實用的,但隨著固態硬碟的廣泛套用,人們對更為高效的協定需求日益增長。直接比較不同的協定可能較為復雜,因為不同的應用程式有不同的需求。因此,尋找一個同時支持 NVMe 和 SCSI over RDMA 的裝置成為了一個挑戰。然而,無論采用何種傳輸方式,NVMeoF 無疑是當今SAN網路中的領先技術。
原文連結:
https://codilime.com/blog/understanding-nvme-over-fabrics-nvmeof/
來源:SDNLAB
相關閱讀:
轉載申明:轉載 本號文章請 註明作者 和 來源 ,本號釋出文章若存在版權等問題,請留言聯系處理,謝謝。
推薦閱讀
更多 架構相關技術 知識總結請參考「 架構師全店鋪技術資料打包 (全) 」相關電子書( 41本 技術資料打包匯總詳情 可透過「 閱讀原文 」獲取)。
全店內容持續更新,現下單「 架構師技術全店資料打包匯總(全) 」一起發送「 」 和「 」 pdf及ppt版本 ,後續可享 全店 內容更新「 免費 」贈閱,價格僅收 249 元(原總價 399 元)。
溫馨提示:
掃描 二維碼 關註公眾號,點選 閱讀原文 連結 獲取 「 架構師技術全店資料打包匯總(全) 」 電子書資料詳情 。