專利名稱:將rdma語義映射到高速存儲(chǔ)的制作方法
將RDMA語義映射到高速存儲(chǔ)背景計(jì)算機(jī)已變得高度集成于工作、家庭、移動(dòng)設(shè)備以及許多其他地方中。計(jì)算機(jī)可快速且有效地處理大量信息。被設(shè)計(jì)成在計(jì)算機(jī)系統(tǒng)上運(yùn)行的軟件應(yīng)用允許用戶執(zhí)行包括商業(yè)應(yīng)用、學(xué)校作業(yè)、娛樂等等在內(nèi)的各種各樣的功能。軟件應(yīng)用通常被設(shè)計(jì)成執(zhí)行特定的任務(wù),諸如用于草擬文檔的文字處理器應(yīng)用或者用于發(fā)送、接收和組織電子郵件的電子郵件程序。在一些情況下,計(jì)算機(jī)系統(tǒng)使用不同類型的軟件應(yīng)用彼此通信。然而,這樣的應(yīng)用間通信通常需要處理器處理每個(gè)所發(fā)送的輸出和每個(gè)所接收的輸入。尤其是當(dāng)幾千或幾百萬輸入和輸出在不同軟件應(yīng)用之間被發(fā)送時(shí),該增加的工作量可能向處理器施加過多的開銷。
為了避免這樣的處理器參與同時(shí)仍然允許應(yīng)用之間(或者應(yīng)用與遠(yuǎn)程數(shù)據(jù)存儲(chǔ)之間)的通信,可以實(shí)現(xiàn)遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)。RDMA允許來自應(yīng)用的讀取和寫入請求直接從應(yīng)用流向網(wǎng)絡(luò)存儲(chǔ)設(shè)備或存儲(chǔ)服務(wù)器。讀取或?qū)懭胝埱罂梢员粷M足并且在兩個(gè)計(jì)算機(jī)之間傳輸,而不需要兩個(gè)系統(tǒng)任一的處理器的參與。簡要概述在此所述的實(shí)施例所針對(duì)的是,擴(kuò)展遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)語義以允許本地存儲(chǔ)系統(tǒng)中的實(shí)現(xiàn)、以及提供用于初始化本地?cái)?shù)據(jù)存儲(chǔ)的管理界面。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)將RDMA語義擴(kuò)展為使用RDMA提供本地存儲(chǔ)訪問,其中擴(kuò)展RDMA語義包括下列動(dòng)作將RDMA動(dòng)詞接口的RDMA動(dòng)詞映射到本地?cái)?shù)據(jù)存儲(chǔ);以及修改RDMA排序語義以允許無序處理和/或無序完成。計(jì)算機(jī)系統(tǒng)還使用經(jīng)擴(kuò)展的RDMA語義來訪問本地?cái)?shù)據(jù)存儲(chǔ)的各個(gè)部分。在另一實(shí)施例中,計(jì)算機(jī)系統(tǒng)將管理界面實(shí)例化,所述管理界面被配置為初始化本地持久數(shù)據(jù)存儲(chǔ)。計(jì)算機(jī)系統(tǒng)接收指示在初始化本地持久數(shù)據(jù)存儲(chǔ)時(shí)要應(yīng)用的各個(gè)設(shè)定的輸入,其中所述設(shè)定至少之一標(biāo)識(shí)出本地持久數(shù)據(jù)存儲(chǔ)將被如何分區(qū)。計(jì)算機(jī)系統(tǒng)將本地持久數(shù)據(jù)存儲(chǔ)分區(qū)成分區(qū),所述分區(qū)每個(gè)都可以使用管理界面來訪問。計(jì)算機(jī)系統(tǒng)還使用管理界面將經(jīng)分區(qū)的本地持久數(shù)據(jù)存儲(chǔ)初始化為本地RDMA端點(diǎn)。提供本發(fā)明內(nèi)容以便以簡化形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。本概述并非旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。另外的特征和優(yōu)點(diǎn)將在以下的描述中闡述,并且部分可從該描述中顯而易見,或者可以從此處的教示實(shí)踐中習(xí)得。本發(fā)明的特征和優(yōu)點(diǎn)可以通過在所附權(quán)利要求中特別指出的手段和組合來實(shí)現(xiàn)并獲取。本發(fā)明的特征將從以下描述和所附權(quán)利要求書中變得完全顯而易見,或者可通過如下所述對(duì)本發(fā)明的實(shí)踐而獲知。附圖
簡述為了進(jìn)一步闡明本發(fā)明的各實(shí)施例的以上和其他優(yōu)點(diǎn)和特征,將參考附圖來呈現(xiàn)本發(fā)明的各實(shí)施例的更具體的描述??梢岳斫?,這些附圖只描繪本發(fā)明的典型實(shí)施例,因此將不被認(rèn)為是對(duì)其范圍的限制。本發(fā)明將通過使用附圖用附加特征和細(xì)節(jié)來描述和解釋,附圖中圖I示出了用于操作本發(fā)明的實(shí)施例的計(jì)算機(jī)體系結(jié)構(gòu),所述實(shí)施例包括將遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)語義擴(kuò)展為允許本地存儲(chǔ)系統(tǒng)中的實(shí)現(xiàn)。圖2示出了用于將遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)語義擴(kuò)展為允許本地存儲(chǔ)系統(tǒng)中的實(shí)現(xiàn)的示例性方法的流程圖。圖3示出了用于提供用于初始化本地?cái)?shù)據(jù)存儲(chǔ)的管理界面的示例性方法的流程圖。圖4示出了用戶使用管理界面與數(shù)據(jù)存儲(chǔ)交互的實(shí)施例。
具體實(shí)施例 在此所述的實(shí)施例所針對(duì)的是,將遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)語義擴(kuò)展為允許本地存儲(chǔ)系統(tǒng)中的實(shí)現(xiàn)、以及提供用于初始化本地?cái)?shù)據(jù)存儲(chǔ)的管理界面。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)將RDMA語義擴(kuò)展為使用RDMA提供本地存儲(chǔ)訪問,其中擴(kuò)展RDMA語義包括下列動(dòng)作將RDMA動(dòng)詞接口的RDMA動(dòng)詞映射到本地?cái)?shù)據(jù)存儲(chǔ);以及修改RDMA排序語義以允許無序處理和/或無序完成。計(jì)算機(jī)系統(tǒng)還使用經(jīng)擴(kuò)展的RDMA語義來訪問本地?cái)?shù)據(jù)存儲(chǔ)的各個(gè)部分。在另一實(shí)施例中,計(jì)算機(jī)系統(tǒng)將管理界面實(shí)例化,所述管理界面被配置為初始化本地持久數(shù)據(jù)存儲(chǔ)。計(jì)算機(jī)系統(tǒng)接收指示在初始化本地持久數(shù)據(jù)存儲(chǔ)時(shí)要應(yīng)用的各個(gè)設(shè)定的輸入,其中所述設(shè)定至少之一標(biāo)識(shí)出本地持久數(shù)據(jù)存儲(chǔ)將被如何分區(qū)。計(jì)算機(jī)系統(tǒng)將本地持久數(shù)據(jù)存儲(chǔ)分區(qū)成分區(qū),所述分區(qū)每個(gè)都可以使用管理界面來訪問。計(jì)算機(jī)系統(tǒng)還使用管理界面將經(jīng)分區(qū)的本地持久數(shù)據(jù)存儲(chǔ)初始化為本地RDMA端點(diǎn)。以下討論現(xiàn)涉及可以執(zhí)行的多種方法以及方法動(dòng)作。應(yīng)當(dāng)注意,雖然這些方法動(dòng)作可能是按一定次序討論的,或者是在流程圖中被描繪為是按照特定順序進(jìn)行的,然而并非必然需要特定的次序,除非特別聲明,或者是在一個(gè)動(dòng)作被執(zhí)行之前因?yàn)樵搫?dòng)作依賴于另一動(dòng)作的完成而需要的情況。本發(fā)明的各實(shí)施例可包括或利用專用或通用計(jì)算機(jī),該專用或通用計(jì)算機(jī)包括諸如例如一個(gè)或多個(gè)處理器和系統(tǒng)存儲(chǔ)器等計(jì)算機(jī)硬件,如以下更詳細(xì)討論的。本發(fā)明范圍內(nèi)的各實(shí)施例還包括用于承載或存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令和/或數(shù)據(jù)結(jié)構(gòu)的物理和其他計(jì)算機(jī)可讀介質(zhì)。這樣的計(jì)算機(jī)可讀介質(zhì)可以是可由通用或?qū)S糜?jì)算機(jī)系統(tǒng)訪問的任何可用介質(zhì)。存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是計(jì)算機(jī)存儲(chǔ)介質(zhì)。承載計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)可讀介質(zhì)是傳輸介質(zhì)。由此,作為示例而非限制,本發(fā)明的各實(shí)施例可包括至少兩種顯著不同的計(jì)算機(jī)可讀介質(zhì)計(jì)算機(jī)存儲(chǔ)介質(zhì)和傳輸介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲(chǔ)、磁盤存儲(chǔ)或其他磁存儲(chǔ)設(shè)備、或可用于存儲(chǔ)計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由通用或?qū)S糜?jì)算機(jī)訪問的任何其他介質(zhì)。“網(wǎng)絡(luò)”被定義為允許在計(jì)算機(jī)系統(tǒng)和/或模塊和/或其他電子設(shè)備之間傳輸電子數(shù)據(jù)的一個(gè)或多個(gè)數(shù)據(jù)鏈路。當(dāng)信息通過網(wǎng)絡(luò)或另一個(gè)通信連接(硬連線、無線、或者硬連線或無線的組合)傳輸或提供給計(jì)算機(jī)時(shí),該計(jì)算機(jī)將該連接適當(dāng)?shù)匾暈閭鬏斀橘|(zhì)。傳輸介質(zhì)可包括可用于攜帶計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的所需程序代碼裝置且可由通用或?qū)S糜?jì)算機(jī)訪問的網(wǎng)絡(luò)和/或數(shù)據(jù)鏈路。上述的組合也應(yīng)被包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。此外,在到達(dá)各種計(jì)算機(jī)系統(tǒng)組件之后,計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)形式的程序代碼裝置可從傳輸介質(zhì)自動(dòng)傳輸?shù)接?jì)算機(jī)存儲(chǔ)介質(zhì)(或反之亦然)。例如,通過網(wǎng)絡(luò)或數(shù)據(jù)鏈路接收到的計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)可被緩存在網(wǎng)絡(luò)接口模塊(例如,“NIC”)內(nèi)的RAM中,然后最終被傳輸?shù)接?jì)算機(jī)系統(tǒng)RAM和/或計(jì)算機(jī)系統(tǒng)處的較不易失性的計(jì)算機(jī)存儲(chǔ)介質(zhì)。因而,應(yīng)當(dāng)理解,計(jì)算機(jī)存儲(chǔ)介質(zhì)可被包括在還利用(或甚至主要利用)傳輸介質(zhì)的計(jì)算機(jī)系統(tǒng)組件中。計(jì)算機(jī)可執(zhí)行指令包括,例如使通用計(jì)算機(jī)、專用計(jì)算機(jī)、或?qū)S锰幚碓O(shè)備執(zhí)行某一功能或某組功能的指令和數(shù)據(jù)。計(jì)算機(jī)可執(zhí)行指令可以是例如二進(jìn)制代碼、諸如匯編語言之類的中間格式指令、或甚至源代碼。盡管用結(jié)構(gòu)特征和/或方法動(dòng)作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述特征或動(dòng)作。相反,上 述特征和動(dòng)作是作為實(shí)現(xiàn)權(quán)利要求的示例形式而公開的。本領(lǐng)域的技術(shù)人員將理解,本發(fā)明可以在具有許多類型的計(jì)算機(jī)系統(tǒng)配置的網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)踐,這些計(jì)算機(jī)系統(tǒng)配置包括個(gè)人計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、消息處理器、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、移動(dòng)電話、PDA、尋呼機(jī)、路由器、交換機(jī)等等。本發(fā)明也可在其中通過網(wǎng)絡(luò)鏈接(或者通過硬連線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路,或者通過硬連線和無線數(shù)據(jù)鏈路的組合)的本地和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)兩者都執(zhí)行任務(wù)的分布式系統(tǒng)環(huán)境中實(shí)施。在分布式系統(tǒng)環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備二者中。圖I示出了可在其中采用本發(fā)明的原理的計(jì)算機(jī)體系結(jié)構(gòu)100。計(jì)算機(jī)體系結(jié)構(gòu)100包括管理界面110。管理界面110可以是允許用戶與本地?cái)?shù)據(jù)存儲(chǔ)140交互或以其他方式使用本地?cái)?shù)據(jù)存儲(chǔ)140的任何類型的軟件界面。本地?cái)?shù)據(jù)存儲(chǔ)140(或者在此簡稱“數(shù)據(jù)存儲(chǔ)”)可以是任何類型的數(shù)據(jù)存儲(chǔ)系統(tǒng),包括磁或光驅(qū)動(dòng)器、驅(qū)動(dòng)器的集合、數(shù)據(jù)庫、存儲(chǔ)域網(wǎng)絡(luò)或其他存儲(chǔ)系統(tǒng)。用戶105可能期望與數(shù)據(jù)存儲(chǔ)交互。這樣的交互可以包括存儲(chǔ)或修改所存儲(chǔ)的數(shù)據(jù)。用戶可以向管理界面110發(fā)送數(shù)據(jù)請求106,管理界面110然后使用其一個(gè)或多個(gè)內(nèi)部模塊來處理該請求。例如,界面110可以使用遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)語義擴(kuò)展模塊來將RDMA語義116擴(kuò)展為使得這些語義可以用于訪問數(shù)據(jù)存儲(chǔ)140上的數(shù)據(jù)。RDMA語義可以包括允許一個(gè)設(shè)備或程序使用RDMA與另一設(shè)備或程序交談的命令、查詢、動(dòng)詞或其他語義。在一些情況下,映射模塊120可以用于將RDMA動(dòng)詞接口的各個(gè)RDMA動(dòng)詞映射到本地?cái)?shù)據(jù)存儲(chǔ)。語義修改模塊125可以用于修改各個(gè)RDMA排序語義以允許無序處理和無序完成任一或二者。這樣的映射和修改(RDMA擴(kuò)展)可以允許用戶或軟件應(yīng)用使用經(jīng)擴(kuò)展的RDMA語義來訪問本地?cái)?shù)據(jù)存儲(chǔ)140。這些概念將在以下參考圖2的方法200更詳細(xì)地解釋??紤]到以上描述的系統(tǒng)和體系結(jié)構(gòu),參考圖2和圖3的流程圖將更好地理解根據(jù)所公開的主題實(shí)現(xiàn)的方法。為了解釋簡明起見,這些方法被示出和描述為一系列框。然而,應(yīng)該理解和了解,所要求保護(hù)的主題不受框的次序的限制,因?yàn)橐恍┛蚩砂床煌拇涡蜻M(jìn)行和/或與此處所描繪和描述的其他框同時(shí)進(jìn)行。此外,并非全部所示的框都是實(shí)現(xiàn)下面所述的方法所必需的。圖2示出了用于將遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)語義擴(kuò)展為允許本地存儲(chǔ)系統(tǒng)中的實(shí)現(xiàn)的方法200的流程圖?,F(xiàn)在將頻繁參考環(huán)境100的組件和數(shù)據(jù)來描述方法200。方法200包括將一個(gè)或多個(gè)RDMA語義擴(kuò)展為使用RDMA提供本地存儲(chǔ)訪問的動(dòng)作(動(dòng)作210)。例如,RDMA語義擴(kuò)展模塊115可以將RDMA語義116擴(kuò)展為使用RDMA來提供對(duì)本地?cái)?shù)據(jù)存儲(chǔ)140的訪問。RDMA語義可以通過如下方式來擴(kuò)展添加允許RDMA與本地存儲(chǔ)結(jié)合使用的附加命令或其他屬性。在一些情況下,經(jīng)擴(kuò)展的RDMA語義可以包括在每個(gè)操作都已完成時(shí)進(jìn)行報(bào)告的至少一個(gè)語義。因此,例如當(dāng)讀取或?qū)懭氩僮饕淹瓿蓵r(shí),語義報(bào)告該讀取或?qū)懭胍淹瓿伞?梢詥为?dú)地或結(jié)合前述語義使用許多其他這樣的語義。如上所述,本地?cái)?shù)據(jù)存儲(chǔ)140可以包括各種類型的數(shù)據(jù)存儲(chǔ)解決方案。在一些情況下,本地?cái)?shù)據(jù)存儲(chǔ)140是基于存儲(chǔ)器陣列的目標(biāo)設(shè)備。在其他情況下,本地?cái)?shù)據(jù)存儲(chǔ)是某種類型的基于閃存的存儲(chǔ)。本地?cái)?shù)據(jù)存儲(chǔ)可以被配置為在可配置的時(shí)間段內(nèi)高速緩存數(shù)據(jù) 的各個(gè)部分。在一些情況下,經(jīng)擴(kuò)展的RDMA語義被配置為提供對(duì)本地?cái)?shù)據(jù)存儲(chǔ)的遠(yuǎn)程訪問。因此,用戶105可以使用被模塊115擴(kuò)展的經(jīng)擴(kuò)展的RDMA語義116遠(yuǎn)程地訪問本地?cái)?shù)據(jù)存儲(chǔ)140。在一些情況下,如上所述,經(jīng)擴(kuò)展的RDMA語義可以包括RDMA網(wǎng)絡(luò)應(yīng)用編程接口(API)語義(或RDMA動(dòng)詞),其用于通過網(wǎng)絡(luò)的RDMA數(shù)據(jù)訪問。RDMA網(wǎng)絡(luò)API可以被擴(kuò)展和用于訪問存儲(chǔ)在本地?cái)?shù)據(jù)存儲(chǔ)中的數(shù)據(jù)、以及存儲(chǔ)在遠(yuǎn)程數(shù)據(jù)存儲(chǔ)中的數(shù)據(jù)。因此,同一經(jīng)擴(kuò)展的RDMA網(wǎng)絡(luò)API可以用于從本地和遠(yuǎn)程數(shù)據(jù)存儲(chǔ)中訪問本地和遠(yuǎn)程數(shù)據(jù)二者。換言之,存儲(chǔ)在遠(yuǎn)程數(shù)據(jù)存儲(chǔ)中的遠(yuǎn)程數(shù)據(jù)可以使用用于訪問存儲(chǔ)在本地?cái)?shù)據(jù)存儲(chǔ)中的本地?cái)?shù)據(jù)的相同的經(jīng)擴(kuò)展RDMA語義來訪問。通過這種方式,可以使用單個(gè)經(jīng)擴(kuò)展的RDMA API來訪問本地和遠(yuǎn)程數(shù)據(jù)存儲(chǔ)二者。方法200包括將RDMA動(dòng)詞接口的一個(gè)或多個(gè)RDMA動(dòng)詞映射到本地?cái)?shù)據(jù)存儲(chǔ)的動(dòng)作(動(dòng)作220)。例如,映射模塊120可以將RDMA動(dòng)詞接口的一個(gè)或多個(gè)RDMA動(dòng)詞映射到本地?cái)?shù)據(jù)存儲(chǔ)140。RDMA動(dòng)詞可以以允許用戶或軟件應(yīng)用(例如分別為105或107)使用RDMA動(dòng)詞訪問數(shù)據(jù)存儲(chǔ)上的數(shù)據(jù)的方式被映射到本地?cái)?shù)據(jù)存儲(chǔ)。該映射還可以包括對(duì)本地?cái)?shù)據(jù)存儲(chǔ)進(jìn)行命名使得本地?cái)?shù)據(jù)存儲(chǔ)被RDMA識(shí)別成端點(diǎn)。因此,當(dāng)本地?cái)?shù)據(jù)存儲(chǔ)被識(shí)別成端點(diǎn)時(shí),用戶或各個(gè)其他軟件應(yīng)用可以訪問該數(shù)據(jù)存儲(chǔ)并將其用作典型的RDMA端點(diǎn)。方法包括200 :修改一個(gè)或多個(gè)RDMA排序語義以允許無序處理和無序完成中的至少之一(動(dòng)作230)。例如,語義修改模塊125可以修改RDMA語義116以允許無序處理和/或無序完成。無序處理允許管理界面110在請求被接收時(shí)(例如用戶數(shù)據(jù)請求106和應(yīng)用數(shù)據(jù)請求108)將所述請求發(fā)送給本地?cái)?shù)據(jù)存儲(chǔ)140,然后本地?cái)?shù)據(jù)存儲(chǔ)可以無序地響應(yīng)所述請求。由于所述請求不必按順序地響應(yīng),因此提供了響應(yīng)數(shù)據(jù)請求時(shí)的更大靈活性。無序完成還提供了每個(gè)操作可無序地完成(以及信號(hào)完成)方面的更大靈活性。在一些情況下,用戶或軟件程序可能想要(或需要)保證讀取、寫入或其他操作已完成。在一些情況下,當(dāng)使用RDMA時(shí),未決的請求可能需要被轉(zhuǎn)儲(chǔ)清除以便執(zhí)行操作(例如讀取操作)。這樣的操作可以稱為壁壘(barrier)操作。因此,壁壘操作保證給定的數(shù)據(jù)傳輸已經(jīng)通過轉(zhuǎn)儲(chǔ)清除未決數(shù)據(jù)傳輸并且保證操作被完成而發(fā)生。因此,壁壘操作可以用于快速地完成項(xiàng)目而不是取消該項(xiàng)目。
在一些實(shí)施例中,RDMA的現(xiàn)有阻隔(fencing)能力被維持,同時(shí)允許無序處理和無序完成。例如,發(fā)送隊(duì)列可以被無序地處理,同時(shí)仍然維持對(duì)阻隔操作(壁壘操作的完成部分)的支持。阻隔操作驗(yàn)證一個(gè)或多個(gè)在先事件已經(jīng)發(fā)生,而壁壘操作保證給定數(shù)據(jù)傳輸已經(jīng)發(fā)生。因此,用戶可以將依賴于在其完成以前的所有操作的某物插入到發(fā)送隊(duì)列中,并且阻隔操作保證其之前的操作已經(jīng)完成。附加地或可替代地,壁壘操作可以被處理以轉(zhuǎn)儲(chǔ)清除未決的數(shù)據(jù)傳輸并且保證至少一個(gè)數(shù)據(jù)操作的完成。此外,由RDMA提供的網(wǎng)絡(luò)擔(dān)保可以被選擇性地放寬到用戶指示的程度以供與本地?cái)?shù)據(jù)存儲(chǔ)一起使用。通過放寬這些擔(dān)保,不一定需要這些擔(dān)保的本地存儲(chǔ)實(shí)現(xiàn)可以以更有效的方式實(shí)現(xiàn)。放寬這些擔(dān)保還允許數(shù)據(jù)傳輸并行執(zhí)行和并行完成。因此,可以實(shí)現(xiàn)到存儲(chǔ)在數(shù)據(jù)存儲(chǔ)140中的數(shù)據(jù)的更快速訪問。方法200包括使用經(jīng)擴(kuò)展的RDMA語義來訪問本地?cái)?shù)據(jù)存儲(chǔ)的一個(gè)或多個(gè)部分的動(dòng)作(動(dòng)作240)。例如,管理界面110可以使用經(jīng)擴(kuò)展的RDMA語義來訪問本地?cái)?shù)據(jù)存儲(chǔ)140。因此,一旦RDMA語義擴(kuò)展已經(jīng)實(shí)現(xiàn),用戶105和/或應(yīng)用107就可以使用RDMA來訪 問本地?cái)?shù)據(jù)存儲(chǔ)140。在一些情況下,經(jīng)擴(kuò)展的RDMA語義可以在包括文件系統(tǒng)和/或數(shù)據(jù)庫的存儲(chǔ)管理層中實(shí)現(xiàn)。在一些實(shí)施例中,軟件應(yīng)用107可以使用經(jīng)擴(kuò)展的RDMA語義來建立應(yīng)用與本地?cái)?shù)據(jù)存儲(chǔ)140之間的鏈接。軟件應(yīng)用然后可以使用所建立的鏈接來訪問存儲(chǔ)在本地?cái)?shù)據(jù)存儲(chǔ)中的應(yīng)用數(shù)據(jù)的至少一部分。在鏈接建立以后,可以在軟件應(yīng)用與本地?cái)?shù)據(jù)存儲(chǔ)之間傳輸數(shù)據(jù),而不需要任何處理器參與。因此,所建立的鏈接允許來自和去往應(yīng)用107和本地?cái)?shù)據(jù)存儲(chǔ)140的數(shù)據(jù)傳輸。該數(shù)據(jù)傳輸可以在沒有來自中央處理器的任何參與的情況下在運(yùn)行應(yīng)用的計(jì)算機(jī)系統(tǒng)處進(jìn)行。因此,數(shù)據(jù)可以直接從應(yīng)用存儲(chǔ)器傳輸給數(shù)據(jù)存儲(chǔ)(并且反之亦然),而無需處理器參與。圖3示出了用于提供用于初始化本地?cái)?shù)據(jù)存儲(chǔ)的管理界面的方法300的流程圖?,F(xiàn)在將頻繁參考圖I的環(huán)境100和圖4的環(huán)境400的組件和數(shù)據(jù)來描述方法300。方法300包括將管理界面實(shí)例化的動(dòng)作,所述管理界面被配置為初始化本地持久數(shù)據(jù)存儲(chǔ)(動(dòng)作310)。例如,計(jì)算機(jī)系統(tǒng)將管理界面410實(shí)例化,所述管理界面被配置為初始化本地持久數(shù)據(jù)存儲(chǔ)440。管理界面可以是允許訪問數(shù)據(jù)存儲(chǔ)440的任何類型的軟件應(yīng)用。在一些情況下,管理界面可以是由數(shù)據(jù)存儲(chǔ)提供者以外的某人提供的第三方管理界面。方法300包括接收指示在初始化本地持久數(shù)據(jù)存儲(chǔ)時(shí)要應(yīng)用的一個(gè)或多個(gè)設(shè)定的輸入的動(dòng)作,其中所述設(shè)定至少之一標(biāo)識(shí)出本地持久數(shù)據(jù)存儲(chǔ)將被如何分區(qū)(動(dòng)作320)。例如,管理界面410可以從用戶405接收包括數(shù)據(jù)存儲(chǔ)初始化設(shè)定130/430的用戶輸入406。這些設(shè)定將在初始化數(shù)據(jù)存儲(chǔ)440時(shí)被應(yīng)用。例如,分區(qū)設(shè)定431可以指示數(shù)據(jù)存儲(chǔ)440將被分區(qū)成多少個(gè)分區(qū)、每個(gè)分區(qū)將為多大、將為每個(gè)分區(qū)如何配置存儲(chǔ)器偏移量442、以及其他設(shè)定。在一些實(shí)施例中,用戶405可以控制數(shù)據(jù)存儲(chǔ)初始化設(shè)定430中的任何或全部設(shè)定。管理界面410還可以允許用戶為每個(gè)分區(qū)配置用戶訪問設(shè)定432。因此,用戶可以限制對(duì)某些(安全的)分區(qū)的訪問,同時(shí)許可對(duì)其他分區(qū)的完全訪問。方法300包括將本地持久數(shù)據(jù)存儲(chǔ)分區(qū)成一個(gè)或多個(gè)分區(qū)的動(dòng)作,所述分區(qū)每個(gè)都可以使用管理界面來訪問(動(dòng)作330)。例如,管理界面410可以將本地持久數(shù)據(jù)存儲(chǔ)440分區(qū)成可使用界面410來訪問的分區(qū)(或發(fā)起對(duì)其的分區(qū))。訪問能力設(shè)定432可以結(jié)合分區(qū)來應(yīng)用,使得根據(jù)訪問能力設(shè)定來限制對(duì)新近創(chuàng)建的分區(qū)的訪問。方法300包括使用管理界面將經(jīng)分區(qū)的本地持久數(shù)據(jù)存儲(chǔ)初始化為本地RDMA端點(diǎn)的動(dòng)作(動(dòng)作340)。例如,管理界面410可以將經(jīng)分區(qū)的本地持久數(shù)據(jù)存儲(chǔ)440初始化為本地RDMA端點(diǎn)。當(dāng)數(shù)據(jù)存儲(chǔ)已經(jīng)被初始化為RDMA端點(diǎn)時(shí),用戶可以通過管理界面經(jīng)由RDMA來訪問數(shù)據(jù)存儲(chǔ)中的數(shù)據(jù)。這樣的RDMA端點(diǎn)訪問允許應(yīng)用將數(shù)據(jù)從應(yīng)用存儲(chǔ)器直接傳輸給數(shù)據(jù)存儲(chǔ)上的一個(gè)或多個(gè)分區(qū),而無需涉及處理器。此外,如上所述,由于至少在一些實(shí)施例中,傳統(tǒng)的RDMA網(wǎng)絡(luò)擔(dān)??梢栽赗DMA與本地存儲(chǔ)一起使用時(shí)被放寬,因此數(shù)據(jù)傳輸和其他操作可以并行地執(zhí)行和完成。因此,提供了將RDMA語義擴(kuò)展為允許使用經(jīng)擴(kuò)展的RDMA語義進(jìn)行本地存儲(chǔ)系統(tǒng)中的數(shù)據(jù)訪問和數(shù)據(jù)存儲(chǔ)的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。此外,可以提供允許用戶或軟件應(yīng)用初始化本地?cái)?shù)據(jù)存儲(chǔ)的管理界面??梢砸杂脩粼O(shè)置初始化設(shè)定時(shí)所依據(jù)的定制方法來初始化數(shù)據(jù)存儲(chǔ)。本發(fā)明可具體化為其它具體形式而不背離其精神或本質(zhì)特征。所描述的實(shí)施例在 所有方面都應(yīng)被認(rèn)為僅是說明性而非限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求書而非前述描述指示。落入權(quán)利要求書的等效方案的含義和范圍內(nèi)的所有改變被權(quán)利要求書的范圍所涵蓋。
權(quán)利要求
1.ー種在包括處理器和存儲(chǔ)器的計(jì)算機(jī)系統(tǒng)處的用于將遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)語義擴(kuò)展為允許本地存儲(chǔ)系統(tǒng)中的實(shí)現(xiàn)的計(jì)算機(jī)實(shí)現(xiàn)的方法,該方法包括 將ー個(gè)或多個(gè)RDMA語義擴(kuò)展為使用RDMA提供本地存儲(chǔ)訪問的動(dòng)作,其中擴(kuò)展RDMA語義包括下列動(dòng)作 將RDMA動(dòng)詞接ロ的ー個(gè)或多個(gè)RDMA動(dòng)詞映射到本地?cái)?shù)據(jù)存儲(chǔ)的動(dòng)作;以及 修改ー個(gè)或多個(gè)RDMA排序語義以允許無序處理和無序完成中的至少之ー的動(dòng)過;以及 使用經(jīng)擴(kuò)展的RDMA語義來訪問所述本地?cái)?shù)據(jù)存儲(chǔ)的ー個(gè)或多個(gè)部分的動(dòng)作。
2.如權(quán)利要求I所述的方法,其特征在干,映射包括對(duì)本地?cái)?shù)據(jù)存儲(chǔ)進(jìn)行命名使得所述本地?cái)?shù)據(jù)存儲(chǔ)被RDMA識(shí)別成端點(diǎn)。
3.如權(quán)利要求I所述的方法,其特征在干,RDMA的現(xiàn)有阻隔能力被維持,同時(shí)允許無序處理和無序完成。
4.如權(quán)利要求I所述的方法,其特征在干,經(jīng)擴(kuò)展的RDMA語義被實(shí)現(xiàn)在包括文件系統(tǒng)和數(shù)據(jù)庫至少之ー的存儲(chǔ)管理層中。
5.如權(quán)利要求I所述的方法,其特征在干,經(jīng)擴(kuò)展的RDMA語義包括在每個(gè)操作都已完成時(shí)進(jìn)行報(bào)告的至少ー個(gè)語義。
6.如權(quán)利要求I所述的方法,其特征在于,還包括軟件應(yīng)用使用經(jīng)擴(kuò)展的RDMA語義來建立所述應(yīng)用與所述本地?cái)?shù)據(jù)存儲(chǔ)之間的鏈接的動(dòng)作。
7.如權(quán)利要求6所述的方法,其特征在干,所述軟件應(yīng)用使用所建立的鏈接來訪問存儲(chǔ)在所述本地?cái)?shù)據(jù)存儲(chǔ)中的應(yīng)用數(shù)據(jù)的至少一部分。
8.如權(quán)利要求6所述的方法,其特征在于,在鏈接被建立以后,在所述軟件應(yīng)用與所述本地?cái)?shù)據(jù)存儲(chǔ)之間傳輸數(shù)據(jù),而不需要任何處理器參與。
9.如權(quán)利要求I所述的方法,其特征在于,還包括處理ー個(gè)或多個(gè)壁壘操作以轉(zhuǎn)儲(chǔ)清除未決的數(shù)據(jù)傳輸并且保證至少一個(gè)數(shù)據(jù)操作的完成的動(dòng)作。
10.如權(quán)利要求I所述的方法,其特征在于,所述本地?cái)?shù)據(jù)存儲(chǔ)包括基于存儲(chǔ)器陣列的目標(biāo)設(shè)備。
11.如權(quán)利要求I所述的方法,其特征在于,所述本地?cái)?shù)據(jù)存儲(chǔ)包括基于閃存的存儲(chǔ)。
12.如權(quán)利要求I所述的方法,其特征在于,數(shù)據(jù)的ー個(gè)或多個(gè)部分被高速緩存在本地?cái)?shù)據(jù)存儲(chǔ)中。
13.如權(quán)利要求I所述的方法,其特征在干,經(jīng)擴(kuò)展的RDMA語義被配置為提供對(duì)所述本地?cái)?shù)據(jù)存儲(chǔ)的遠(yuǎn)程訪問。
14.如權(quán)利要求I所述的方法,其特征在于,由RDMA提供的一個(gè)或多個(gè)網(wǎng)絡(luò)擔(dān)保被選擇性地放寬到用戶指示的程度以供與所述本地?cái)?shù)據(jù)存儲(chǔ)一起使用。
15.一種用于實(shí)現(xiàn)ー種用于提供用于初始化本地?cái)?shù)據(jù)存儲(chǔ)的管理界面的方法的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括其上存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述指令在被計(jì)算系統(tǒng)的ー個(gè)或多個(gè)處理器執(zhí)行時(shí)致使所述計(jì)算系統(tǒng)執(zhí)行該方法,該方法包括 將管理界面實(shí)例化的動(dòng)作,所述管理界面被配置為初始化本地持久數(shù)據(jù)存儲(chǔ); 接收指示在初始化所述本地持久數(shù)據(jù)存儲(chǔ)時(shí)要應(yīng)用的ー個(gè)或多個(gè)設(shè)定的輸入的動(dòng)作,其中所述設(shè)定至少之ー標(biāo)識(shí)出本地持久數(shù)據(jù)存儲(chǔ)將被如何分區(qū); 將所述本地持久數(shù)據(jù)存儲(chǔ)分區(qū)成ー個(gè)或多個(gè)分區(qū)的動(dòng)作,所述分區(qū)每個(gè)都能夠使用所述管理界面來訪問;以及 使用所述管理界面將經(jīng)分區(qū)的本地持久數(shù)據(jù)存儲(chǔ)初始化為本地RDMA端點(diǎn)。
16.如權(quán)利要求15所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述管理界面包括第三方管理界面。
17.如權(quán)利要求15所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述管理界面允許用戶配置所述本地持久數(shù)據(jù)存儲(chǔ)將被分區(qū)成的分區(qū)的數(shù)目。
18.如權(quán)利要求15所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述管理界面允許用戶為每個(gè)分區(qū)配置用戶訪問設(shè)定。
19.如權(quán)利要求15所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述管理界面允許用戶為每個(gè)分區(qū)配置存儲(chǔ)器偏移量。
20.一種計(jì)算機(jī)系統(tǒng),包括 一個(gè)或多個(gè)處理器; 系統(tǒng)存儲(chǔ)器; 本地?cái)?shù)據(jù)存儲(chǔ); 其上存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可執(zhí)行指令在由所述ー個(gè)或多個(gè)處理器執(zhí)行時(shí)致使所述計(jì)算系統(tǒng)執(zhí)行一種將遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)語義擴(kuò)展為允許本地存儲(chǔ)系統(tǒng)中的實(shí)現(xiàn)的方法,該方法包括 將ー個(gè)或多個(gè)RDMA語義擴(kuò)展為使用RDMA提供本地存儲(chǔ)訪問的動(dòng)作,其中擴(kuò)展所述RDMA語義包括下列動(dòng)作 將RDMA網(wǎng)絡(luò)API語義接ロ的ー個(gè)或多個(gè)RDMA網(wǎng)絡(luò)API語義映射到所述本地?cái)?shù)據(jù)存儲(chǔ)的動(dòng)作;以及 修改ー個(gè)或多個(gè)RDMA排序語義以允許無序處理和無序完成中的至少之ー的動(dòng)作;使用經(jīng)擴(kuò)展的RDMA網(wǎng)絡(luò)API語義來從遠(yuǎn)程計(jì)算系統(tǒng)訪問所述本地?cái)?shù)據(jù)存儲(chǔ)的ー個(gè)或多個(gè)部分的動(dòng)作;以及 使用同一經(jīng)擴(kuò)展的RDMA網(wǎng)絡(luò)API語義來從本地計(jì)算系統(tǒng)訪問所述本地?cái)?shù)據(jù)存儲(chǔ)的一個(gè)或多個(gè)部分的動(dòng)作。
全文摘要
在此所述的實(shí)施例所針對(duì)的是,擴(kuò)展遠(yuǎn)程直接存儲(chǔ)器訪問(RDMA)語義以允許本地存儲(chǔ)系統(tǒng)中的實(shí)現(xiàn)、以及提供用于初始化本地?cái)?shù)據(jù)存儲(chǔ)的管理界面。計(jì)算機(jī)系統(tǒng)將RDMA語義擴(kuò)展為使用RDMA提供本地存儲(chǔ)訪問,其中擴(kuò)展RDMA語義包括下列動(dòng)作將RDMA動(dòng)詞接口的RDMA動(dòng)詞映射到本地?cái)?shù)據(jù)存儲(chǔ);以及修改RDMA排序語義以允許無序處理和/或無序完成。計(jì)算機(jī)系統(tǒng)還使用經(jīng)擴(kuò)展的RDMA語義來訪問本地?cái)?shù)據(jù)存儲(chǔ)的各個(gè)部分。
文檔編號(hào)G06F13/16GK102844747SQ201180016570
公開日2012年12月26日 申請日期2011年3月25日 優(yōu)先權(quán)日2010年4月2日
發(fā)明者J·T·平克頓, T·M·塔爾佩伊 申請人:微軟公司