的用于接收RDMA寫操作的存儲單元的物理地址。
[0099]結合第八方面或第八方面或以上任一種可能的實現方式,在第八方面第四種可能的實現方式中,所述第二存儲標識包括:
[0100]第二虛擬地址,用于標識所述第二內存節(jié)點的用于RDMA寫操作的數據在所述第二處理節(jié)點中的虛擬地址;
[0101]數據長度,用于標識所述第二內存節(jié)點的用于RDMA寫操作的數據的長度;和
[0102]第二遠端內存鑰匙,用于表征訪問所述第二內存節(jié)點存儲設備的權限,以及結合所述第二虛擬地址確定所述用于RDMA寫操作的數據在所述第二內存節(jié)點中的物理地址。
[0103]結合第八方面或第八方面或以上任一種可能的實現方式,在第八方面第五種可能的實現方式中,所述接收單元還用于:接收所述第一內存節(jié)點的RDMA應答消息,所述RDMA應答消息用于指示RDMA寫操作已完成。
[0104]結合第八方面或第八方面或以上任一種可能的實現方式,在第八方面第六種可能的實現方式中,所述發(fā)送單元還用于:將所述RDMA應答消息發(fā)送給所述第二處理節(jié)點。
[0105]第九方面,本發(fā)明實施例提供了一種遠程直接數據存取RDMA數據拷貝的裝置,其特征在于,第一計算設備包括第一處理節(jié)點和第一內存節(jié)點,包括:
[0106]發(fā)送單元,用于向所述第一處理節(jié)點發(fā)送RDMA內存請求消息,所述RDMA內存請求消息用于向所述第一處理節(jié)點請求用于RDMA寫操作的目標內存;
[0107]接收單元,用于接收來自所述第一處理節(jié)點的RDMA內存分配消息,所述RDMA內存分配消息攜帶第一節(jié)點標識和第一存儲標識,所述第一節(jié)點標識用于指示所述第一內存節(jié)點,所述第一存儲標識用于指示所述第一內存節(jié)點中用于接受所述RDMA寫操作的存儲單元;
[0108]封裝單元,用于封裝RDMA寫操作消息,所述RDMA寫操作消息中攜帶用于所述RDMA寫操作的數據和所述第一存儲標識;
[0109]所述發(fā)送單元還用于,將所述RDMA寫操作消息發(fā)送給所述第一節(jié)點標識指示的所述第一內存節(jié)點,指示所述第一內存節(jié)點將所述數據寫入所述第一存儲標識指示的存儲單元。
[0110]結合第九方面,在第一種可能的實現方式中,還包括生成單元,所述生成單元用于生成工作隊列元素WQE,并將所述WQE放入與所述第一處理節(jié)點建立的RDMA連接的隊列對QP的發(fā)送隊列SQ中,所述WQE攜帶所述第一節(jié)點標識、所述第一存儲標識和所述第二存儲標識,用于指示將所述第二存儲標識指示的存儲單元中的數據拷貝至所述第一存儲標識指示的存儲單元中,所述第二存儲標識用于指示所述第二存儲設備用于所述RDMA寫操作的數據;
[0111]所述封裝單元用于封裝RDMA寫操作消息,包括:從所述QP的發(fā)送隊列SQ中取出所述WQE,根據所述WQE,取出所述第二存儲標識指示的所述數據,根據所述第一存儲標識,封裝所述RDMA寫操作消息。
[0112]結合第九方面或第九方面或以上任一種可能的實現方式,在第九方面第二種可能的實現方式中,所述第一節(jié)點標識包括:
[0113]保護域編號,用于標識所述第一內存節(jié)點所在的保護域;
[0114]第一內存節(jié)點標識,用于在所述保護域中標識所述第一內存節(jié)點。
[0115]結合第九方面或第九方面或以上任一種可能的實現方式,在第九方面第三種可能的實現方式中,所述第一內存節(jié)點和所述第二計算設備在同一保護域,所述第一節(jié)點標識包括:
[0116]第一內存節(jié)點標識,用于在所述同一保護域中標識所述第一內存節(jié)點。
[0117]結合第九方面或第九方面或以上任一種可能的實現方式,在第九方面第四種可能的實現方式中,所述第一存儲標識包括:
[0118]第一虛擬地址,用于標識所述第一內存節(jié)點的用于接收所述RDMA寫操作的存儲單元的在所述第一處理節(jié)點的虛擬地址;和
[0119]第一遠端內存鑰匙,用于表征訪問所述第一內存節(jié)點的存儲設備的權限,以及結合所述第一虛擬地址確定所述第一內存節(jié)點的用于接收RDMA寫操作的存儲單元的物理地址。
[0120]結合第九方面或第九方面或以上任一種可能的實現方式,在第九方面第五種可能的實現方式中,所述接收單元還用于:接收所述第一內存節(jié)點的RDMA應答消息,所述RDMA應答消息用于指示RDMA寫操作已完成。
[0121]第十方面,本發(fā)明實施例提供了一種遠程直接數據存取RDMA數據拷貝的系統(tǒng),其特征在于,包括第一計算設備和第二計算設備,第一計算設備包括第一處理節(jié)點和第一內存節(jié)點,第二計算設備包括第二處理節(jié)點和第二內存節(jié)點:
[0122]所述第二處理節(jié)點,用于向所述第一處理節(jié)點發(fā)送RDMA內存請求消息,所述RDMA內存請求消息用于向第一處理節(jié)點請求用于RDMA寫操作的目標內存;
[0123]所述第一處理節(jié)點,用于根據接收到的所述RDMA寫操作消息,向所述第一內存節(jié)點申請接受RDMA寫操作的內存,并向所述第二處理節(jié)點發(fā)送RDMA內存分配消息,所述RDMA內存分配消息攜帶第一節(jié)點標識和第一存儲標識,所述第一節(jié)點標識用于指示所述第一內存節(jié)點,所述第一存儲標識用于指示所述第一內存節(jié)點中用于接受所述RDMA寫操作的存儲單元;
[0124]所述第二處理節(jié)點還用于:根據接收到的所述RDMA內存分配消息,封裝RDMA拷貝操作消息,并將所述RDMA拷貝操作消息發(fā)送給所述第二內存節(jié)點,所述RDMA拷貝操作消息中攜帶所述第一節(jié)點標識、所述第一存儲標識和第二存儲標識,所述第二存儲標識用于指示所述第二內存節(jié)點中用于所述RDMA寫操作的數據的內存地址;
[0125]所述第二內存節(jié)點,用于根據接收到的所述RDMA拷貝操作消息,取出所述第二存儲標識指示的所述數據,根據所述第一存儲標識,封裝RDMA寫操作消息,所述RDMA寫操作消息中包含所述RDMA寫操作的數據和所述第一存儲標識,并將所述RDMA寫操作消息發(fā)送給所述第一內存節(jié)點;
[0126]所述第一內存節(jié)點,用于根據接收到的所述RDMA寫操作消息,將所述數據寫到所述第一存儲標識指示的存儲單元中。
[0127]結合第十方面,在第一種可能的實現方式中,所述第二處理節(jié)點還用于:生成工作隊列元素WQE,并將所述WQE放入所述第二內存節(jié)點RDMA連接的隊列對QP的發(fā)送隊列SQ中,所述WQE攜帶所述第一節(jié)點標識、所述第一存儲標識和所述第二存儲標識,用于指示將所述第二存儲標識指示的存儲單元中的數據拷貝至所述第一存儲標識指示的存儲單元中;
[0128]所述第二處理節(jié)點用于封裝RDMA拷貝操作消息,包括:從所述QP的發(fā)送隊列SQ中取出所述WQE,根據所述WQE,封裝所述RDMA拷貝操作消息。
[0129]結合第十方面或第十方面或以上任一種可能的實現方式,在第十方面第二種可能的實現方式中,所述第一節(jié)點標識包括:
[0130]保護域編號,用于標識所述第一內存節(jié)點所在的保護域;
[0131]第一內存節(jié)點標識,用于在所述保護域中標識所述第一內存節(jié)點。
[0132]結合第十方面或第十方面或以上任一種可能的實現方式,在第十方面第三種可能的實現方式中,所述第一內存節(jié)點和所述第二內存節(jié)點在同一保護域,所述第一節(jié)點標識包括:
[0133]第一內存節(jié)點標識,用于在所述同一保護域中標識所述第一內存節(jié)點。
[0134]結合第十方面或第十方面或以上任一種可能的實現方式,在第十方面第四種可能的實現方式中,所述第一存儲標識包括:
[0135]第一虛擬地址,用于標識所述第一內存節(jié)點的用于接收所述RDMA寫操作的存儲單元的在所述第一處理節(jié)點的虛擬地址;和
[0136]第一遠端內存鑰匙,用于表征訪問所述第一內存節(jié)點的存儲設備的權限,以及結合所述第一虛擬地址確定所述第一內存節(jié)點的用于接收RDMA寫操作的存儲單元的物理地址。
[0137]結合第十方面或第十方面或以上任一種可能的實現方式,在第十方面第五種可能的實現方式中,所述第二存儲標識包括:
[0138]第二虛擬地址,用于標識所述第二內存節(jié)點的用于RDMA寫操作的數據在所述第二處理節(jié)點中的虛擬地址;
[0139]數據長度,用于標識所述第二內存節(jié)點的用于RDMA寫操作的數據的長度;和
[0140]第二遠端內存鑰匙,用于表征訪問所述第二內存節(jié)點存儲設備的權限,以及結合所述第二虛擬地址確定所述用于RDMA寫操作的數據在所述第二內存節(jié)點中的物理地址。
[0141]結合第十方面或第十方面或以上任一種可能的實現方式,在第十方面第六種可能的實現方式中,所述第二內存節(jié)點還用于:接收所述第一內存節(jié)點的RDMA應答消息,并將所述RDMA應答消息發(fā)送給所述第二處理節(jié)點,所述RDMA應答消息用于指示所述RDMA寫操作已完成。
[0142]第十一方面,本發(fā)明實施例提供了一種遠程直接數據存取RDMA數據拷貝的系統(tǒng),其特征在于,包括第一計算設備和第二計算設備,所述第一計算設備包括第一處理節(jié)點和第一內存節(jié)點,包括:
[0143]所述第二計算設備,用于向所述第一處理節(jié)點發(fā)送RDMA內存請求消息,所述RDMA內存請求消息用于向所述第一處理節(jié)點請求用于RDMA寫操作的目標內存;
[0144]所述第一處理節(jié)點,用于根據接收到的所述RDMA寫操作消息,向所述第一內存節(jié)點申請接受RDMA寫操作的內存,并向所述第二處理節(jié)點發(fā)送RDMA內存分配消息,所述RDMA內存分配消息攜帶第一節(jié)點標識和第一存儲標識,所述第一節(jié)點標識用于指示所述第一內存節(jié)點,所述第一存儲標識用于指示所述第一內存節(jié)點中用于接受所述RDMA寫操作的存儲單元;
[0145]所述第二計算設備還用于,封裝RDMA寫操作消息,所述RDMA寫操作消息中攜帶用于所述RDMA寫操作的數據和所述第一存儲標識,并將所述RDMA寫操作消息發(fā)送給所述第一節(jié)點標識指示的第一內存節(jié)點;
[0146]所述第一內存節(jié)點,用于根據接收到的所述RDMA寫操作消息,將所述數據寫到所述第一存儲標識指示的存儲單元中。
[0147]結合第十一方面,在第一種可能的實現方式中,所述第二計算設備還用于:生成工作隊列元素WQE,并將所述WQE放入與所述第一處理節(jié)點建立的RDMA連接的隊列對QP的發(fā)送隊列SQ中,所述WQE攜帶所述第一節(jié)點標識、所述第一存儲標識和所述第二存儲標識,用于指示將所述第二存儲標識指示的存儲單元中的數據拷貝至所述第一存儲標識指示的存儲單元中,所述第二存儲標識用于指示所述第二存儲設備用于所述RDMA寫操作的數據;
[0148]所述第二計算設備封裝RDMA寫操作消息包括:所述第二計算設備從所述QP的發(fā)送隊列SQ中取出所述WQE,根據所述WQE,取出所述第二存儲標識指示的所述數據,根據所述第一存儲標識,封裝所述RDMA寫操作消息。
[0149]結合第十一方面或第十一方面或以上任一種可能的實現方式,在第十一方面第二種可能的實現方式中,所述第一節(jié)點標識包括:
[0150]保護域編號,用于標識所述第一內存節(jié)點所在的保護域;
[0151]第一內存節(jié)點標識,用于在所述保護域中標識所述第一內存節(jié)點。
[0152]結合第十一方面或第十一方面或以上任一種可能的實現方式,在第十一方面第三種可能的實現方式中,所述第一內存節(jié)點和所述第二計算設備在同一保護域,所述第一節(jié)點標識包括:
[0153]第一內存節(jié)點標識,用于在所述同一保護域中標識所述第一內存節(jié)點。
[0154]結合第十一方面或第十一方面或以上任一種可能的實現方式,在第十一方面第三種可能的實現方式中,所述第一存儲標識包括:
[0155]第一虛擬地址,用于標識所述第一內存節(jié)點的用于接收所述RDMA寫操作的存儲單元的在所述第一處理節(jié)點的虛擬地址;和
[0156]第一遠端內存鑰匙,用于表征訪問所述第一內存節(jié)點的存儲設備的權限,以及結合所述第一虛擬地址確定所述第一內存節(jié)點的用于接收RDMA寫操作的存儲單元的物理地址。
[0157]結合第十一方面或第十一方面或以上任一種可能的實現方式,在第十一方面第四種可能的實現方式中,所述第二計算設備還用于:接收所述第一內存節(jié)點的RDMA應答消息,所述RDMA應答消息用于指示RDMA寫操作已完成。
[0158]根據本發(fā)明提供的技術方案,可以實現與處理節(jié)點分離的內存節(jié)點之間,或者與處理節(jié)點分離的內存節(jié)點與其他計算設備的內存之間的RDMA寫操作。縮短了數據流經過的路徑,節(jié)省了鏈路資源,降低了數據傳輸耗時,而且數據傳輸不再經過處理節(jié)點或計算設備的計算資源,從而大大節(jié)省了處理節(jié)點或計算設備的計算資源。
【附圖說明】
[0159]為了更清楚地說明本發(fā)明實施例的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0160]圖1為各計算設備經由RDMA共享數據的示例性聯網環(huán)境框圖;
[0161]圖2為本發(fā)明的示例性計算設備的示意圖;
[0162]圖3為一種RDMA方法的應用場景示意圖;
[0163]圖4為一種RDMA方法的信令圖;
[0164]圖5為依據本發(fā)明一實施例的RDMA拷貝方法的應用場景示意圖;
[0165]圖6為依據本發(fā)明一實施例的RDMA拷貝方法信令圖;
[0166]圖7為依據本發(fā)明一實施例的RDMA拷貝方法的應用場景示意圖;
[0167]圖8為依據本發(fā)明一實施例的RDMA拷貝方法信令圖;
[0168]圖9為依據本發(fā)明一實施例的RDMA拷貝方法的應用場景示意圖;
[0169]圖10為依據本發(fā)明一實施例的RDMA拷貝方法信令圖;
[0170]圖11為依據本發(fā)明一實施例的RDMA拷貝方法的示范性流程圖;
[0171]圖12為依據本發(fā)明一實施例的RDMA拷貝方法的示范性流程圖;
[0172]圖13為依據本發(fā)明一實施例的RDMA拷貝方法的示范性流程圖;
[0173]圖14為依據本發(fā)明一實施例的RDMA拷貝裝置的邏輯結構示意圖;
[0174]圖15為依據本發(fā)明一實施例的RDMA拷貝裝置的邏輯結構示意圖;
[0175]圖16為依據本發(fā)明一實施例的RDMA拷貝裝置的邏輯結構示意圖;
[0176]圖17為依據本發(fā)明一實施例的計算設備硬件結構示意圖。
【具體實施方式】
[0177]下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0178]圖1示出了 RDMA連網環(huán)境100,其中網絡102連接了四個計算設備104。計算設備104使用它們的網絡102連接來執(zhí)行相互的RDMA傳遞。網絡102可以是因特網,內聯網,局域網(Local Area Networks,簡稱 LANs),廣域網絡(Wireless Local Area Networks,簡稱WLANs),存儲區(qū)域網絡(Storage Area Networks,簡稱SANs)等,或者以上網絡的組合。
[0179]圖1僅旨在為以下討論目的而引入RDMA參與者以及它們的相互關系。因此,所描繪的RDMA環(huán)境100被大大地簡化。由于RDMA的一些方面在本領域中是公知的,因此這些方面,諸如認證方案和安全等在此不再討論。在設置和運行成功的RDMA環(huán)境100中所涉及的復雜性對于在本領域中工作的人來說都是公知的。
[0180]圖1的計算設備104可以是任意體系結構的。圖2是一般化地示出支持本發(fā)明的示例性計算機系統(tǒng)的框圖。圖2的計算機系統(tǒng)僅是一個例子,并不試圖對本發(fā)明的使用范圍或功能提出任何限定。也不應當將計算設備104解釋為具有與圖2中所示的組件中的任何一個或其組合有關的任何依賴性或要求。本發(fā)明可與許多其他的通用或專用計算環(huán)境或配置一起工作。適于與本發(fā)明一起使用的公知計算系統(tǒng)、環(huán)境和配置的示例包括但不限于,個人計算機、服務器、手持式或膝上型設備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機頂盒、可編程消費電器、網絡PC、微型計算機、大型計算機、以及包括任意以上系統(tǒng)或設備的分布式計算環(huán)境。在其最基本的配置中,計算設備104通常包括至少一個處理器200和存儲器
202。存儲器202可以被計算設備104當做內存資源使用,可以是易失性的隨機存取存儲器(Random Access Memory,簡稱 RAM)、非易失性的只讀存儲器(Read Only Memory,簡稱 ROM)或閃存、或這兩者的某種組合。這個最基本的配置在圖2中由04例示。計算設備104可以具有外加的特征和功能。例如,它可以包括外設的存儲(可移動的和不可移動的),其包括但不限于,磁盤和磁帶以及光盤和光帶。這樣的外設存儲在圖2中由可移動存儲206和不可移動存儲208例示。計算機存儲介質包括易失性和非易失性的,可移動的和不可移動的,在任何方法或技術中實現的用來存儲諸如計算機可讀指令、數據結構、程序模塊或其它數據等信息的介質。存儲器202,可移動存儲206和不可移動存儲208都是計算機存儲介質的示例。計算機存儲介質包括,但不限于,RAM、R0M、電可擦出只讀存儲器(ElectricallyErasable Read Only Memory,簡稱EEPR0M)、閃存、其他的存儲器技術,CD-ROM、數字通用盤、其他的光存儲,磁卡帶、磁帶、磁盤存儲、其他的磁存儲設備,以及任何其他可以用來存儲所需信息并可由計算設備104訪問的介質。任何這樣的計算機存儲介質都可以是計算設備104的一部分。計算設備104還可以包含允許其與其他設備,包括在網絡102上的設備,通信的通信信道210。通信信道210是通信介質的示例。通信介質通常在諸如載波等的已調制數據信號或其它傳輸機制中包含計算機可讀指令、數據結構、程序模塊、或其他數據,并包括任何信息傳遞介質。作為示例而非限定,通信介質包括光介質、諸如有線網絡和直線連接等的有線介質、諸如聲音、射頻(Rad1 Frequency,簡稱RF)、紅外線和其他無線介質等的無線介質。在此使用的術語"計算機可讀介質"包括存儲介質和通信介質兩者。計算設備104還可以具有諸如觸敏式顯示屏、硬件鍵盤、鼠標、語音輸入設備等的輸入設備212。輸出設備214包括設備本身,諸如觸敏式顯式屏、揚聲器、打印機和用來驅動這些設備的呈現模塊(常稱之為"適配器")。所有這些設備都是本領域公知的,因此在此無需詳細討論。計算設備104具有電源216。
[0181]可選的,計算設備104的計算資源與存儲資源分離,計算設備104分為處理節(jié)點和內存節(jié)點,這里的內存節(jié)點是指可以被計算設備當做內存資源使用的存儲資源,也可以稱作存儲節(jié)點。內存節(jié)點包括存儲器202和存儲器控制器,存儲器控制器用于控制存儲器202的數據存取等操作;處理節(jié)點包括計算設備104的其他特征和功能,可選的,處理節(jié)點還包括計算設備104的除內存節(jié)點以外的其他內存資源。處理節(jié)點和內存節(jié)點之間通過網絡102進行連接。
[0182]圖3是遠程直接數據存取RDMA方法應用場景的邏輯結構示意圖,如圖3所示,該系統(tǒng)包括第一計算設備和第二計算設備,其中第一計算設備和第二計算設備為圖2所示的計算設備,圖中僅示出計算設備的處理器和存儲器,其他特征和功能在圖3未示出。
[0183]RDMA協(xié)議允許對應用程序緩沖區(qū)進行直接訪問,硬件使用所謂的工作隊列與軟件連接。工作隊列是