---RDMA是一種網(wǎng)卡技術(shù),采用該技術(shù)可以使一臺(tái)計(jì)算機(jī)直接將信息放入另一臺(tái)計(jì)算機(jī)的內(nèi)存中。通過(guò)最小化處理過(guò)程的開(kāi)銷(xiāo)和帶寬的需求,RDMA減少了延遲時(shí)間。RDMA通過(guò)在網(wǎng)卡上將可靠傳輸協(xié)議固化于硬件,以及支持繞過(guò)內(nèi)核的零拷貝網(wǎng)絡(luò)這兩種途徑來(lái)達(dá)到這一目標(biāo)。繞過(guò)內(nèi)核使應(yīng)用程序不必執(zhí)行內(nèi)核調(diào)用就可以向網(wǎng)卡發(fā)出命令。當(dāng)一個(gè)應(yīng)用程序執(zhí)行RDMA讀/寫(xiě)請(qǐng)求時(shí),系統(tǒng)并不執(zhí)行數(shù)據(jù)拷貝動(dòng)作。這就減少了處理網(wǎng)絡(luò)通信時(shí)在內(nèi)核空間和用戶空間上下文切換的次數(shù)。RDMA請(qǐng)求的完成,或者完全在用戶空間中進(jìn)行,或者在應(yīng)用程序希望進(jìn)入睡眠直到完成信號(hào)出現(xiàn)的情況下通過(guò)內(nèi)核進(jìn)行。RDMA操作用于讀寫(xiě)操作的遠(yuǎn)程虛擬內(nèi)存地址含在RDMA消息中傳送,遠(yuǎn)程應(yīng)用程序要做的只是在其本地網(wǎng)卡中注冊(cè)相應(yīng)的內(nèi)存緩沖區(qū)。遠(yuǎn)程節(jié)點(diǎn)的CPU在整個(gè)RDMA操作中并不提供服務(wù),因此沒(méi)有帶來(lái)任何負(fù)載。通過(guò)類(lèi)型值(鍵值)的使用,一個(gè)應(yīng)用程序能夠在遠(yuǎn)程應(yīng)用程序?qū)λM(jìn)行隨機(jī)訪問(wèn)的情況下保護(hù)它的內(nèi)存。發(fā)布RDMA操作的應(yīng)用程序必須為它試圖訪問(wèn)的遠(yuǎn)程內(nèi)存指定正確的類(lèi)型值,遠(yuǎn)程應(yīng)用程序在本地網(wǎng)卡中注冊(cè)內(nèi)存時(shí)獲得這個(gè)類(lèi)型值。發(fā)布RDMA的應(yīng)用程序也必須確定遠(yuǎn)程內(nèi)存地址和該內(nèi)存區(qū)域的類(lèi)型值。遠(yuǎn)程應(yīng)用程序會(huì)將相關(guān)信息通知給發(fā)布RDMA的應(yīng)用程序,這些信息包括起始虛擬地址、內(nèi)存大小和該內(nèi)存區(qū)域的類(lèi)型值。在發(fā)布RDMA的應(yīng)用程序能夠?qū)υ搩?nèi)存區(qū)域進(jìn)行RDMA操作之前,遠(yuǎn)程應(yīng)用程序應(yīng)將這些信息通過(guò)發(fā)送操作傳送給發(fā)布RDMA的應(yīng)用程序。
---如圖 3 所示, 服務(wù)模型分為三層,依次為網(wǎng)絡(luò)互連層、 SCSI 協(xié)議層、 SCSI應(yīng)用層。
---SCSI RDMA有兩種RDMA操作:RDMA寫(xiě)和RDMA讀。讀和寫(xiě)都是相對(duì)于SCSI啟動(dòng)方來(lái)說(shuō)的。
---零復(fù)制網(wǎng)絡(luò)技術(shù)及其功能實(shí)現(xiàn)
---零復(fù)制網(wǎng)絡(luò)技術(shù)是通過(guò)在NIC的硬件中部署一項(xiàng)可靠的傳輸協(xié)議以及支持零復(fù)制網(wǎng)絡(luò)技術(shù)和內(nèi)核內(nèi)存旁路實(shí)現(xiàn)的。請(qǐng)求完成既可以完全在用戶空間中處理(通過(guò)輪詢用戶級(jí)完成排列),或者在應(yīng)用希望一直睡眠到請(qǐng)求完成時(shí)的情況下通過(guò)內(nèi)核內(nèi)存處理。軟件部分負(fù)責(zé)協(xié)議功能實(shí)現(xiàn)。
---API(應(yīng)用程序接口)包括用于低時(shí)延消息處理、成就高性能計(jì)算的MPI(消息通過(guò)接口),以及DAPL(直接接入供應(yīng)庫(kù))。后者包括兩部分:KDAPL和UDAPL,分別用于內(nèi)核和用戶(應(yīng)用程序)。Linux支持KDAPL,其他操作系統(tǒng)將來(lái)也有可能支持。
3 RDMA在數(shù)據(jù)傳輸中的應(yīng)用
3.1 RDMA的應(yīng)用
---RDMA的優(yōu)勢(shì)在于可利用傳統(tǒng)的網(wǎng)絡(luò)硬件,以TCP/IP及以太網(wǎng)絡(luò)標(biāo)準(zhǔn)來(lái)建立因特網(wǎng)。RDMA將被用來(lái)把小型服務(wù)器連接為一個(gè)群集,可以處理現(xiàn)今一些十幾顆處理器的高端服務(wù)器才能夠處理的大型數(shù)據(jù)庫(kù)。如果把RDMA及TOE,以及10GB以太網(wǎng)絡(luò)放在一起,這是個(gè)相當(dāng)吸引人的技術(shù)。RDMA正在迅速成為高速集群和服務(wù)器區(qū)域網(wǎng)的一種基本特性。
---InfiniBand網(wǎng)絡(luò)和實(shí)現(xiàn)虛擬接口架構(gòu)的網(wǎng)絡(luò)支持RDMA,應(yīng)用于帶傳輸卸載引擎網(wǎng)卡的RDMA over TCP/IP正在開(kāi)發(fā)之中。采用RDMA來(lái)獲取高性能的協(xié)議包括Sockets Direct Protocol、SCSI RDMA Protocol(SRP)和Direct Access File System(DAFS)。采用RDMA的通信庫(kù)包括Direct Access Provider Library(DAPL)、Message Passing Interface(MPI)和Virtual Interface Provider Library(VIPL)。運(yùn)行分布式應(yīng)用程序的集群是RDMA能夠大顯身手的領(lǐng)域之一。通過(guò)DAPL 或VIPL以及集群上運(yùn)行的數(shù)據(jù)庫(kù)軟件來(lái)使用RDMA,可在相同的節(jié)點(diǎn)數(shù)目下獲得更高的性能和更好的延展性。使用MPI的集群科技運(yùn)算應(yīng)用程序,通過(guò)支持互連RDMA實(shí)現(xiàn)了低延遲時(shí)間、低開(kāi)銷(xiāo)和高吞吐量,這一結(jié)果也使它獲得了巨大的性能提升。其他初期的RDMA應(yīng)用還有通過(guò)DAFS的遠(yuǎn)程文件服務(wù)器訪問(wèn),通過(guò)SRP的存儲(chǔ)設(shè)備訪問(wèn)。RDMA技術(shù)正在迅速成為高速集群系統(tǒng)和存儲(chǔ)域網(wǎng)絡(luò)的基本特征技術(shù)。其中iWARP/RDMA是一類(lèi)基本構(gòu)造塊;此外還有iSER,它是用于RDMA的iSCSI擴(kuò)展,充分利用了RDMA的功能。
---RDMA的其他早期應(yīng)用包括通過(guò)DAFS的遠(yuǎn)程文件服務(wù)器訪問(wèn)和通過(guò)SRP的刀片服務(wù)器存儲(chǔ)訪問(wèn)。RDMA正在迅速成為高速集群和服務(wù)器區(qū)域網(wǎng)的一種基本特性。
3.2 NAS和SAN中的應(yīng)用
---傳統(tǒng)的直接連接存儲(chǔ)DAS(Direct Access Storage)是以服務(wù)器為中心的存儲(chǔ)結(jié)構(gòu)。這一存儲(chǔ)體系結(jié)構(gòu)存在容量限制、連接距離有限、不易于共享和管理等不可克服的缺點(diǎn),已經(jīng)不能夠滿足網(wǎng)絡(luò)時(shí)代的應(yīng)用需求。
---網(wǎng)絡(luò)時(shí)代的到來(lái)使存儲(chǔ)技術(shù)發(fā)生了巨大變化,網(wǎng)絡(luò)附加存儲(chǔ)NAS(Network Attatched Storage )、存儲(chǔ)區(qū)域網(wǎng)絡(luò)SAN(Storage Area Network)既能為網(wǎng)絡(luò)上的應(yīng)用系統(tǒng)提供豐富、快速、簡(jiǎn)便的存儲(chǔ)資源;又能共享存儲(chǔ)資源并對(duì)其實(shí)施集中管理,成為當(dāng)今理想的存儲(chǔ)管理和應(yīng)用模式。NAS結(jié)構(gòu)存在一些難以解決的問(wèn)題。如傳輸能力有限、可擴(kuò)展性有限、數(shù)據(jù)備份能力有限并且不能對(duì)數(shù)據(jù)庫(kù)服務(wù)提供有效的支持。DAFS把RDMA的優(yōu)點(diǎn)和NAS的存儲(chǔ)能力集成在一起,全部讀寫(xiě)操作都直接通過(guò)RDMA驅(qū)動(dòng)器執(zhí)行,從而降低了網(wǎng)絡(luò)文件協(xié)議所帶來(lái)的系統(tǒng)負(fù)載。今后的NAS存儲(chǔ)系統(tǒng)將采用DAFS技術(shù)提高系統(tǒng)性能,并且在性能和價(jià)格上與SAN存儲(chǔ)系統(tǒng)進(jìn)行有力的競(jìng)爭(zhēng)。
3.3 Infiniband
---Infiniband的四大優(yōu)點(diǎn):基于標(biāo)準(zhǔn)的協(xié)議,10 GB/s性能,RDMA和傳輸卸載。優(yōu)勢(shì)在于:RDMA,傳輸卸載,高速度。InfiniBand網(wǎng)絡(luò)和采用虛擬接口架構(gòu)的網(wǎng)絡(luò)支持RDMA,使用具有傳輸卸載引擎的NIC的RDMA over TCP/IP。支持Infiniband的服務(wù)器使用主機(jī)通道適配器(HCA),把協(xié)議轉(zhuǎn)換到服務(wù)器內(nèi)部的PCI-X或者PCI-Xpress總線。HCA具有RDMA功能,有時(shí)也稱之為內(nèi)核旁路(Kernel Bypass)。
4 其他
---網(wǎng)絡(luò)存儲(chǔ)技術(shù)的發(fā)展日新月異,虛擬存儲(chǔ)技術(shù)、網(wǎng)格存儲(chǔ)技術(shù)等等最新的技術(shù)將會(huì)給我們帶來(lái)更多的方便,虛擬存儲(chǔ)技術(shù)將底層存儲(chǔ)設(shè)備進(jìn)行抽象化統(tǒng)一管理,向服務(wù)器層屏蔽存儲(chǔ)設(shè)備硬件的特殊性,而只保留其統(tǒng)一的邏輯特性,從而實(shí)現(xiàn)了存儲(chǔ)系統(tǒng)集中、統(tǒng)一而又方便的管理。統(tǒng)一的虛擬存儲(chǔ)將不同廠商的FC-SAN、NAS、IP-SAN、DAS等各類(lèi)存儲(chǔ)資源整合起來(lái),形成一個(gè)統(tǒng)一管理、監(jiān)控和使用的公用存儲(chǔ)池。虛擬存儲(chǔ)的實(shí)質(zhì)是資源共享,因此,統(tǒng)一虛擬存儲(chǔ)的任務(wù)有兩點(diǎn):其一是如何進(jìn)一步增加可共享的存儲(chǔ)資源的數(shù)量;其二是如何通過(guò)有效的機(jī)制在現(xiàn)有存儲(chǔ)資源基礎(chǔ)上提供更好的服務(wù)。從系統(tǒng)的觀點(diǎn)看,存儲(chǔ)虛擬化有三種途徑:基于主機(jī)的虛擬化存儲(chǔ)、基于存儲(chǔ)設(shè)備的虛擬化存儲(chǔ)以及基于網(wǎng)絡(luò)的虛擬化存儲(chǔ)。統(tǒng)一虛擬存儲(chǔ)的實(shí)現(xiàn)只能從虛擬存儲(chǔ)的實(shí)質(zhì)出發(fā),單一存儲(chǔ)映像的方法可能是虛擬存儲(chǔ)的發(fā)展方向。
---由于RDMA是近期新的存儲(chǔ)技術(shù),盡管有各個(gè)廠商發(fā)布信息或報(bào)道,但是都沒(méi)有詳細(xì)或完整的資料。本人在參照標(biāo)準(zhǔn)的基礎(chǔ)上,參考了這些報(bào)道和一些專(zhuān)家的文章的內(nèi)容,形成了此文,供大家參考。同時(shí)也請(qǐng)大家批評(píng)指正。





