存儲技術(shù)未來演進:NVMe over Fabrics (NVMeoF)
眾所周知,NVMe 是一個邏輯設(shè)備接口規(guī)范,NVM代表非易失性存儲器(Non-Volatile Memory)的首字母縮略字,是固態(tài)硬盤(SSD)的常見的閃存形式。SSD 通常分為兩類接口:SATA 和 NVMe。在需要兼容舊組件且性能不是首要考慮因素時,SATA 接口在新一代驅(qū)動器中依然可用。SATA 誕生于2000年,原本是為配備旋轉(zhuǎn)盤片和磁頭的傳統(tǒng)硬盤設(shè)計的。
雖然這類設(shè)備能夠提供穩(wěn)定的數(shù)據(jù)吞吐量,但由于包含大量機械組件,每次讀/寫操作都會帶來很明顯的延遲。這些硬件上的局限也制約了SATA接口規(guī)范和其整體性能。
對于企業(yè)級應(yīng)用,SAS 接口通常作為SATA的替代選擇,兩者都是ATA和SCSI接口的進化版,它們都利用串行鏈路發(fā)送既有命令。無論使用SAS還是SATA,都需要在CPU和磁盤之間配置硬盤驅(qū)動器控制器。
隨著新一代固態(tài)硬盤的推出,其理論性能已接近甚至超越RAM,遠超傳統(tǒng)HDD,因此需要一種全新的訪問接口來發(fā)揮其潛力。
NVMe(Non-Volatile Memory Express)
2011年,NVMe(非易失性存儲器Express)接口應(yīng)運而生。這一接口專為利用低延遲和高閃存性能而設(shè)計。其物理連接器則根據(jù)應(yīng)用場景有所不同:在客戶端設(shè)備上,由于無需熱插拔且重量和空間更為關(guān)鍵,因此M.2尺寸是常見選擇。而借助Thunderbolt 3接口,PCIe設(shè)備可作為USB-C可插拔設(shè)備連接,NVMe驅(qū)動器也常以這種形式出現(xiàn)(不過,只有當較新的USB標準支持超過SATA的帶寬時,這樣的設(shè)備作為NVMe驅(qū)動器才具有實際意義)。
NVMe驅(qū)動器確實具備作為PCIe擴展卡插入PCIe插槽的能力,但這種應(yīng)用相對少見,因為它占用的是那些通常優(yōu)先用于安裝GPU卡的寶貴插槽。在計算服務(wù)器環(huán)境中,NVMe驅(qū)動器更為常見地以M.2(常作為啟動設(shè)備使用)和U.2(專門用于數(shù)據(jù)存儲)的形式呈現(xiàn)。
從設(shè)計角度來看,NVMe規(guī)范定義了一種簡潔高效的協(xié)議,僅包含13條基礎(chǔ)命令。為了最大化并行處理能力,這些命令可以在高達64K個I/O隊列上執(zhí)行,每個隊列可容納64K條命令。這種設(shè)計使得NVMe的性能遠超SATA規(guī)范,高出近三個數(shù)量級。
圖1:NVMe 命令集,來源:Saegate
遠程塊存儲協(xié)議
就遠程訪問存儲而言,有兩種方法:NAS(網(wǎng)絡(luò)附加存儲)和 SAN(存儲區(qū)域網(wǎng)絡(luò))。對于個人用戶及小型團隊來說,NAS 是一種理想的選擇,而大型組織和企業(yè)則更傾向于采用 SAN。
NAS 通常用于小型家用文件服務(wù)器環(huán)境中,它通過一組用戶友好的網(wǎng)絡(luò)協(xié)議來掛載存儲,最常見的是使用 NFS(網(wǎng)絡(luò)文件系統(tǒng))和 SMB(服務(wù)器消息塊)協(xié)議來訪問文件系統(tǒng)。NAS 的一個顯著特點是它直接處理文件系統(tǒng)層,并充當文件服務(wù)器,這與 SAN 有著本質(zhì)的區(qū)別。
相比之下,SAN 設(shè)備則專注于提供塊存儲服務(wù),而將文件系統(tǒng)層的管理交由客戶端負責。這就引出了一個問題:客戶端是如何訪問遠程服務(wù)器上的塊設(shè)備的呢?
在深入探討之前,我們先來了解一下 SCSI(小型計算機系統(tǒng)接口),這是一個自20世紀80年代起就存在的存儲訪問標準。隨著時間的推移,其命令集被廣泛應(yīng)用于多種新型協(xié)議,如 SAS(串行連接 SCSI)和 USB 連接 SCSI。在 SAN 中,SCSI 被用作遠程訪問塊存儲的協(xié)議。具體來說,SCSI 命令會被封裝在網(wǎng)絡(luò)協(xié)議中,并在 iSCSI 客戶端(發(fā)起方)和具有存儲資源的 iSCSI 服務(wù)器(目標)之間進行交換。實現(xiàn)這一功能的主要傳輸協(xié)議包括 TCP(在 iSCSI 中使用)和光纖通道協(xié)議(FCP),而 FCP 本身也可以進一步通過以太網(wǎng)(FCoE)進行封裝。這種靈活性和兼容性使得 SAN 成為了大型企業(yè)級存儲解決方案的首選。
圖 2:SCSI 和 NVMe 作為遠程塊存儲協(xié)議,來源:Piyush Gupta
iSCSI和NVMe均被用作遠程訪問塊存儲的協(xié)議,且兩者均依賴于Fabric network(結(jié)構(gòu)網(wǎng)絡(luò))作為主要的傳輸方式。這里的“Fabric network”是一個寬泛的概念,用于描述抽象的基礎(chǔ)設(shè)施層。無論是通過本地網(wǎng)絡(luò)連接還是利用隧道技術(shù)跨數(shù)據(jù)中心連接,設(shè)備的連接方式并不構(gòu)成主要考量因素。關(guān)鍵在于主機期望網(wǎng)絡(luò)能在帶寬和延遲方面提供最佳性能,以確保數(shù)據(jù)傳輸?shù)母咝院蛯崟r性。
NVMe over Fabrics
最初,NVMeoF是作為獨立規(guī)范發(fā)布的,獨立于 NVMe。然而,隨著其成功的應(yīng)用與實施,NVMeoF逐漸融入并成為了NVMe標準體系的重要一環(huán)。NVMeoF 的引入使得NVMe命令能夠通過多種傳輸方式得以封裝,進而將協(xié)議的可用性擴展至跨網(wǎng)絡(luò)結(jié)構(gòu)的主機與存儲之間的數(shù)據(jù)傳輸。
這一概念與基于SCSI的協(xié)議(如iSCSI或iSER)有著異曲同工之妙。原本為本地存儲訪問設(shè)計的命令集,經(jīng)過重新設(shè)計后,如今能夠在存儲服務(wù)器與主機之間通過網(wǎng)絡(luò)進行通信。
與iSCSI相似,NVMeoF的發(fā)起方和目標方(即客戶端和服務(wù)器)會建立連接并交換命令。雖然它們的NVMe堆棧主要以軟件形式實現(xiàn),但考慮到目標方通常需要為多個發(fā)起方提供服務(wù),而發(fā)起方又可能需要訪問多個分散的驅(qū)動器,因此可以通過將命令解封裝轉(zhuǎn)移至專用硬件(例如 DPU)來實現(xiàn)更好的性能。
與SCSI相比,NVMe協(xié)議支持并行I/O操作,無需進程間鎖定,從而大大提高了效率。此外,NVMe還優(yōu)化了會話交互:單次數(shù)據(jù)傳輸僅需一次往返和兩次交互,相較于SCSI的兩次往返和四次交互,極大地減少了交互次數(shù)。這些優(yōu)勢在NVMeoF中得到了充分體現(xiàn),由于引入了網(wǎng)絡(luò)延遲,減少往返時間成為了提升整體性能的關(guān)鍵因素。
NVMe 傳輸?shù)姆诸?/strong>
圖 3:NVMe 傳輸?shù)姆诸?/span>
首先我們介紹用于訪問主機內(nèi)本地存儲的內(nèi)存?zhèn)鬏?。這種傳輸方式通過本地總線與存儲設(shè)備進行通信,設(shè)備通常與PCIe或其他本地總線技術(shù)(如Compute Express Link,簡稱CXL,或Advanced Extensible Interface,簡稱AXI)連接。
NVMeoF擴展了NVMe命令集在基于消息的傳輸中的應(yīng)用。目前,RDMA和 TCP 傳輸由NVMe指定,光纖通道上的NVMe(FC-NVMe)則由INCITS(InterNational Committee for Information Technology Standards)組織管理。對于NVMe/TCP,發(fā)起方和目標方之間會建立TCP連接,NVM子系統(tǒng)通過此連接進行通信,交換NVMe/TCP協(xié)議數(shù)據(jù)單元。此TCP連接同時用于命令和數(shù)據(jù)的傳輸,通常由內(nèi)核網(wǎng)絡(luò)堆棧在軟件中處理。雖然這種方法具有無需特殊網(wǎng)絡(luò)配置的便利性,但由于軟件處理的引入,它可能會導(dǎo)致性能下降并增加額外的計算資源需求。
相比之下,F(xiàn)C-NVMe利用光纖通道的可靠性、并行性和多隊列功能,在現(xiàn)有的FC網(wǎng)絡(luò)上提供高效的消息傳輸。與NVMe/TCP相比,F(xiàn)C-NVMe由于協(xié)議設(shè)計更為精簡,因此在CPU開銷方面表現(xiàn)更為優(yōu)秀。
然而,值得注意的是,無論是NVMe/TCP還是FC-NVMe-2,它們均未充分利用能夠加速RDMA的現(xiàn)代卸載網(wǎng)卡。為了彌補這一不足,NVMe標準特別指定了RDMA傳輸方式。RDMA允許數(shù)據(jù)在應(yīng)用程序的內(nèi)存空間與遠程主機的內(nèi)存空間之間直接傳輸,無需內(nèi)核的介入。這不僅減少了CPU的開銷,還降低了數(shù)據(jù)傳輸?shù)难舆t,為高性能存儲訪問提供了強有力的支持。
圖4:RDMA繞過內(nèi)核TCP/IP協(xié)議棧,來源:FS
RDMA(遠程直接內(nèi)存訪問)
這里的核心概念在于應(yīng)用程序(如使用 NVMe 的數(shù)據(jù)庫)和設(shè)備(即 NVMe 驅(qū)動器)能夠直接讀取和寫入網(wǎng)卡內(nèi)存緩沖區(qū),繞過傳統(tǒng)的內(nèi)核網(wǎng)絡(luò)堆棧。
RDMA網(wǎng)絡(luò)技術(shù)通?;?/span>InfiniBand或以太網(wǎng)。InfiniBand是一個高性能的L2網(wǎng)絡(luò)標準,RDMA是InfiniBand的一個核心功能。而以太網(wǎng)本身并不直接支持RDMA。
InfiniBand網(wǎng)絡(luò)專為HPC(高性能計算)數(shù)據(jù)中心設(shè)計,提供高吞吐量、低延遲和QoS(服務(wù)質(zhì)量)功能,它使用自己獨有的鏈路、網(wǎng)絡(luò)和傳輸協(xié)議。在InfiniBand網(wǎng)絡(luò)中,RDMA數(shù)據(jù)包通過其特定的傳輸協(xié)議發(fā)送。然而,由于InfiniBand網(wǎng)絡(luò)設(shè)備和NIC的供應(yīng)商相對較少,基于以太網(wǎng)的RDMA解決方案在市場中更受歡迎。
要在以太網(wǎng)上實現(xiàn)RDMA,網(wǎng)絡(luò)結(jié)構(gòu)必須支持無損傳輸。標準以太網(wǎng)并不保證這一點,因此需要進行相應(yīng)的增強或使用特定的上層傳輸協(xié)議。由于現(xiàn)代網(wǎng)絡(luò)方法非常靈活,因此在硬件供應(yīng)商的支持下,可以實現(xiàn)這一目標。
值得注意的包括:
- 融合以太網(wǎng)(RDMA over Converged Ethernet)上的RDMA(v1和v2)和iWARP在傳輸方式和特性上略有不同。
- RoCEv1在以太網(wǎng)上使用IB網(wǎng)絡(luò)層數(shù)據(jù)包,但由于沒有使用IP封裝,數(shù)據(jù)包無法在IP網(wǎng)絡(luò)中路由。
- RoCE v2在網(wǎng)絡(luò)層使用UDP,允許數(shù)據(jù)包在IPv4或IPv6網(wǎng)絡(luò)上進行路由。因此,RoCE v2有時被稱為可路由RoCE(RRoCE)。
- iWARP(Internet Wide Area RDMA Protocol)使用TCP作為傳輸層協(xié)議,它提供了固有的可靠性,因此無需對以太網(wǎng)層進行額外增強。然而,與RoCE相比,使用TCP會帶來更多的開銷和復(fù)雜性。
圖5:常見RDMA實現(xiàn)的網(wǎng)絡(luò)層比較,來源:FS
所有這些技術(shù)共存,并各自提供不同的優(yōu)勢。在數(shù)據(jù)中心環(huán)境中,為了實現(xiàn)最佳性能,InfiniBand 或 RoCE 通常是首選。在某些特定場景中,專用集群網(wǎng)絡(luò)也能作為一個可行的網(wǎng)絡(luò)解決方案。而在 DCB 配置復(fù)雜或需要跨越公共互聯(lián)網(wǎng)部署時,iWARP 技術(shù)可能更為合適。
小結(jié)
NVMeoF 的概念是基于SCSI規(guī)范逐步發(fā)展而來的。盡管舊有的技術(shù)已被證明是可靠且實用的,但隨著固態(tài)硬盤的廣泛應(yīng)用,人們對更為高效的協(xié)議需求日益增長。直接比較不同的協(xié)議可能較為復(fù)雜,因為不同的應(yīng)用程序有不同的需求。因此,尋找一個同時支持 NVMe 和 SCSI over RDMA 的設(shè)備成為了一個挑戰(zhàn)。然而,無論采用何種傳輸方式,NVMeoF 無疑是當今SAN網(wǎng)絡(luò)中的領(lǐng)先技術(shù)。
來源:架構(gòu)師技術(shù)聯(lián)盟
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。