通過網絡文件訪問協(xié)議的高效編程存儲器訪問的制作方法
【專利說明】通過網絡文件訪問協(xié)議的高效編程存儲器訪問
[0001]背景
[0002]在兩個不同的計算設備之間傳輸數據時,要被傳輸的數據通常被寫入網絡緩沖區(qū)。隨后使用網絡協(xié)議將網絡緩沖區(qū)跨網絡復制并作為網絡分組遞送到目的地計算設備。網絡分組隨后被復制到目的地計算設備處的存儲器中。這樣的文件傳輸通常是緩慢的且需要數據被順序地寫入,這對于源計算設備和目的地計算設備兩者上的網絡帶寬和系統(tǒng)資源而目是昂貴的。
[0003]各實施例正是對于這些和其它一般考慮事項而做出的。而且,盡管討論了相對具體的問題,但是應當理解,各實施例不應被限于解決本【背景技術】中所標識的具體問題。
[0004]概述
[0005]提供本概述來以簡化形式介紹將在以下詳細描述部分中進一步描述的一些概念。本概述并不旨在標識出所要求保護的主題的關鍵特征或必要特征,也不旨在用于幫助確定所要求保護的主題的范圍。
[0006]各實施例提供了一種用于在第一計算設備和第二計算設備之間傳輸數據的方法和系統(tǒng)。具體而言,在第一計算設備和第二計算設備之間建立通信會話。通信會話可以使用第一通信協(xié)議來建立,諸如例如傳輸控制協(xié)議/網際協(xié)議(TCP/IP)通信協(xié)議。為了完成大塊數據的傳輸,第一計算設備創(chuàng)建被綁定到第一計算設備的一個或多個存儲器塊的虛擬存儲器對象。到虛擬存儲器對象的路徑被生成、命名、并使用所建立的通信會話傳送到第二計算設備。一旦被接收到,第二計算設備就可利用該路徑來從第一計算設備的與虛擬存儲器對象相關聯(lián)的存儲器位置直接讀取數據或向第一計算設備的與虛擬存儲器對象相關聯(lián)的存儲器位置直接寫入數據。如下文將闡明的,數據傳輸(例如,讀和寫)在與第一通信協(xié)議不同的第二通信協(xié)議上執(zhí)行。在一些實施例中,第二通信協(xié)議是華盛頓州雷蒙德市的微軟公司的服務器消息塊(SMB)協(xié)議的一個版本。數據被使用通過第二通信協(xié)議傳送的文件系統(tǒng)命令寫入與虛擬存儲器對象相關聯(lián)的存儲器位置或從中讀出。
[0007]各實施例還提供了一種用于使用第一通信協(xié)議(諸如例如,TCP/IP通信協(xié)議)在第一計算設備和第二計算設備之間建立通信會話的方法和系統(tǒng)。一旦在第一計算設備和第二計算設備之間建立了該會話,則第二計算設備就向第一計算設備發(fā)送請求以設立虛擬存儲器對象。響應于該請求,第二計算設備接收到所創(chuàng)建的虛擬存儲器對象的路徑。在一些實施例中,虛擬存儲器對象被綁定到第一計算設備的一個或多個存儲器塊。使用接收到的路徑,第二計算設備可經由虛擬存儲器對象從第一計算設備上的存儲器位置直接讀取數據或向第一計算設備上的存儲器位置直接傳輸數據。在各實施例中,數據讀和寫是通過第二通信協(xié)議傳送的,諸如例如通過SMB協(xié)議的一個版本。如將討論的,使用一個或多個文件系統(tǒng)命令直接將數據傳送到與虛擬存儲器對象相關聯(lián)的存儲器位置或直接從中讀取數據。
[0008]附圖簡述
[0009]參考以下附圖描述非限制性和非窮盡的實施例,其中:
[0010]圖1解說了根據本公開的一個或多個實施例的用于在第一計算設備和第二計算設備之間傳輸數據的系統(tǒng);
[0011]圖2解說了根據本公開的一個或多個實施例的用于在第一計算設備和第二計算設備之間傳輸數據的方法;
[0012]圖3解說了根據本公開的一個或多個實施例的用于在第一計算設備和第二計算設備之間交換消息的方法;
[0013]圖4解說了根據本公開的一個或多個實施例的用于將虛擬機從源迀移到目的地的方法;
[0014]圖5是解說可以與本公開的一個或多個實施例一起使用的計算設備的示例物理組件的框圖;
[0015]圖6A和6B是可以與本公開的一個或多個實施例一起使用的移動計算設備的簡化框圖;以及
[0016]圖7是解說可以與本公開的一個或多個實施例一起使用的分布式計算系統(tǒng)的簡化框圖。
[0017]詳細描述
[0018]以下將參考形成本發(fā)明一部分并示出各具體示例性實施例的附圖更詳盡地描述各個實施例。然而,各實施例可以以許多不同的形式來實現(xiàn),并且不應將其解釋為限制此處所闡述的各實施例;相反地,提供這些實施例以使得本公開變得透徹和完整,并且將這些實施例的范圍完全傳達給本領域普通技術人員。各實施例可按照方法、系統(tǒng)或設備來實施。因此,這些實施例可采用硬件實現(xiàn)形式、全軟件實現(xiàn)形式或者結合軟件和硬件方面的實現(xiàn)形式。因此,以下詳細描述并非是局限性的。
[0019]如將在下文詳細地解釋的,本文描述的系統(tǒng)和方法允許一個計算設備使用來自應用編程接口(API)的文件系統(tǒng)命令通過數據通信協(xié)議來訪問另一計算設備上的物理存儲器位置。在一些實施例中,數據通信協(xié)議可以支持可在不同計算設備之間傳遞數據的多個信道。如將討論的,使用多個信道允許計算設備中的每一者建立可傳遞數據的多個連接。使用多個信道還允許跨每一信道的帶寬聚集。另外,數據通信協(xié)議可內置有各種特征。因而,在一個設備上運行的應用可利用數據通信協(xié)議的自定義特征,同時仍然實現(xiàn)該應用已知的文件系統(tǒng)命令。這些特征可包括認證、自動協(xié)商、最優(yōu)路徑確定、加密、壓縮,等等。通信協(xié)議還可以能夠確定要創(chuàng)建的信道的數量并還確定哪些路徑具有用于兩個計算設備之間的話務的最高帶寬和最低等待時間。通信協(xié)議還可利用不同底層傳輸,諸如例TCP或遠程直接存儲器訪問(RDMA)并自動確定哪一個是最高效的。
[0020]圖1解說了根據本公開的一個或多個實施例的可在第一計算設備110和第二計算設備150之間傳輸數據的系統(tǒng)100。在一些實施例中,第一計算設備110可以是服務器計算機且第二計算設備可以是客戶端計算機,諸如例如個人計算機、平板計算機、膝上型計算機、智能電話、個人數字助理,等等。雖然第一計算設備110被示出并描述為服務器計算機且第二計算設備150被示出并描述為客戶端計算機,但構想了第一計算設備110可以是客戶端計算機且第二計算設備150可以是服務器計算機。另外,雖然圖1只示出了一個第一計算設備110和一個第二計算設備150,但構想了系統(tǒng)110中可存在一個以上的第一和第二計算設備。因而,本文參考圖2-4描述的方法可由一服務器計算機或客戶端計算機實現(xiàn)或由多個服務器計算機或客戶端計算機實現(xiàn)。作為替換或補充,第一計算設備110和第二計算設備150中的每一者可以是客戶端計算機或服務器計算機。
[0021]如圖1所示,第一計算設備110可包括具有一個或多個存儲器塊120的訪問權的服務器應用115。在一些實施例中,存儲器120在第一計算設備110本地。在其他實施例中,存儲器120可以在第一計算設備110的遠程。在這樣的情況下,存儲器120將需要由第一計算設備使用數據傳輸協(xié)議來訪問。如將在下文詳細地解釋的,第一計算設備110可被配置成生成被綁定到一個或多個存儲器塊120的虛擬存儲器對象125。第一計算設備110還可包括路徑生成器130以及控制對存儲器120和/或虛擬存儲器對象125的訪問的訪問控制列表135。
[0022]如圖1所示,通信會話170可通過網絡(未示出)被建立在第一計算設備110和第二計算設備150之間。在一些實施例中,通信會話170是使用TCP/IP通信協(xié)議來建立的。雖然具體提到了 TCP/IP協(xié)議,但構想了其他通信協(xié)議可被建立在第一計算設備110和第二計算設備150之間。
[0023]在一些實施例中,服務器應用115在第一計算設備110上執(zhí)行且可被配置成基于從第二計算設備150接收到的請求來設立并處理第一計算設備110和第二計算設備150之間的數據傳輸和迀移。例如,第二計算設備可具有需要從第二計算設備傳送或迀移到第一計算設備的應用、虛擬機、消息、或其他數據,或反之。在一些實施例中,服務器應用115可以是在第一計算設備115上執(zhí)行的許多不同應用之一。例如,服務器應用115可以是配置成監(jiān)督第一計算設備110的整個操作的操作系統(tǒng)。或者,服務器應用115可被配置成將接收到的數據組織到駐留在第一計算設備110上的一個或多個數據庫中。
[0024]不管服務器應用115的配置如何,服務器應用115具有存儲器120的訪問權。因而,在第二計算設備150請求將傳輸數據或迀移一個或多個程序或應用時,可通過所建立的通信會話170向服務器應用115通知所需傳輸。在接收到通知時,服務器應用115生成虛擬存儲器對象125。在一些實施例中,虛擬存儲器對象125接著被綁定到存儲器120中的一個或多個數據塊。
[0025]如將在下文解釋的,在一些實施例中,虛擬存儲器對象125被設置成包含與典型文件系統(tǒng)中的屬性相類似的屬性。更具體而言,虛擬存儲器對象125被配置成使得可使用請求數據傳輸的一個或多個應用已知的文件系統(tǒng)命令將數據寫入與虛擬存儲器對象相關聯(lián)的一個或多個存儲器塊。即,第二計算設備150可以將虛擬存儲器對象125當作可使用例如各種打開、讀取以及寫入命令來訪問的文件。
[0026]第一計算設備110還可包括生成到虛擬存儲器對象125的路徑以及路徑名的路徑生成器130。一旦生成了路徑,第一計算設備110就可使用例如訪問控制列表135確立該