眾所周知,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網絡中的領先技術。
-
存儲
+關注
關注
13文章
4355瀏覽量
86176 -
SSD
+關注
關注
21文章
2888瀏覽量
117861 -
nvme
+關注
關注
0文章
222瀏覽量
22732
原文標題:存儲技術未來演進:NVMe over Fabrics (NVMeoF)
文章出處:【微信號:wc_ysj,微信公眾號:旺材芯片】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
NVMe IP over PCIe4.0:高速,超高速!
![<b class='flag-5'>NVMe</b> IP <b class='flag-5'>over</b> PCIe4.0:高速,超高速!](https://file1.elecfans.com/web3/M00/05/35/wKgZO2d9xo6AScOaAAJzpd6LWv0533.png)
一文詳解 ALINX NVMe IP 特性
![一文詳解 ALINX <b class='flag-5'>NVMe</b> IP 特性](https://file1.elecfans.com/web1/M00/F5/08/wKgZoWc1kTGAJ6sgAAFNc4rI_6s561.png)
PCIe與NVMe存儲的關系
手機主流存儲eMMC、UFS與NVMe的區別
![手機主流<b class='flag-5'>存儲</b>eMMC、UFS與<b class='flag-5'>NVMe</b>的區別](https://file1.elecfans.com/web2/M00/FD/BA/wKgaomaWMsiAbobTAAAd-Bn2QwM381.png)
高性能NVMe主機控制器,Xilinx FPGA PCIe 3
兆芯攜手智云創新推出高性能NVMe企業級存儲系統
高性能NVMe主機控制器,Xilinx FPGA NVMe Host Accelerator IP
Xilinx FPGA高性能NVMe SSD主機控制器,NVMe Host Controller IP
Xilinx FPGA NVMe主機控制器IP,高性能版本介紹應用
NVMe Host Controller IP實現高性能存儲解決方案
Xilinx FPGA NVMe Host Controller IP,NVMe主機控制器
Xilinx FPGA NVMe控制器,NVMe Host Controller IP
![Xilinx FPGA <b class='flag-5'>NVMe</b>控制器,<b class='flag-5'>NVMe</b> Host Controller IP](https://file1.elecfans.com/web2/M00/BC/23/wKgaomWY6TSAQxCQAAK-9HMXcTI586.png)
評論