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