專利名稱:作為團(tuán)塊管理虛擬硬盤驅(qū)動器的制作方法
作為團(tuán)塊管理虛擬硬盤驅(qū)動器背景常規(guī)而言,云計算平臺在因特網(wǎng)可訪問的虛擬環(huán)境中托管軟件應(yīng)用。云計算平臺允許組織使用由第三方設(shè)計和維護(hù)的數(shù)據(jù)中心。常規(guī)的虛擬環(huán)境向小型或大型組織提供所請求的硬件資源、軟件應(yīng)用資源、網(wǎng)絡(luò)資源和存儲資源。虛擬環(huán)境還提供應(yīng)用安全性、應(yīng)用可靠性、應(yīng)用伸縮性和可用性。常規(guī)的數(shù)據(jù)中心提供物理計算資源、物理存儲資源和物理網(wǎng)絡(luò)資源。數(shù)據(jù)中心中的物理資源被虛擬化并且作為一組應(yīng)用編程接口被展示給所述組織。組織不需要維護(hù)它們自己的硬件資源或軟件資源、或者維護(hù)可靠和可縮放的數(shù)據(jù)中心。組織可以通過虛擬環(huán)境有效地訪問這些物理資源,而無需知道軟件或底層物理硬件的細(xì)節(jié)。
發(fā)明內(nèi)容
本發(fā)明的實施例在一方面涉及在云計算平臺中管理虛擬硬盤驅(qū)動器的云計算平臺、計算機(jī)可讀介質(zhì)、以及計算機(jī)實現(xiàn)的方法。云計算平臺包括結(jié)構(gòu)計算機(jī)和用于訪問虛擬硬盤驅(qū)動器的團(tuán)塊存儲。團(tuán)塊存儲是持久的云存儲系統(tǒng),其使用復(fù)制來保存每個團(tuán)塊的若干副本以保證所存儲的團(tuán)塊為可用和持久的。結(jié)構(gòu)計算機(jī)被配置為執(zhí)行實現(xiàn)應(yīng)用的虛擬機(jī),所述應(yīng)用訪問虛擬硬盤驅(qū)動器以通過輸入/輸出(I/o)請求來讀取和寫入數(shù)據(jù)。結(jié)構(gòu)計算機(jī)包括驅(qū)動器庫、驅(qū)動程序、本地高速緩存以及到團(tuán)塊存儲的接口。所述應(yīng)用生成I/o請求。所述I/O請求進(jìn)而被重定向到驅(qū)動程序,所述驅(qū)動程序?qū)⑺鯥/o請求翻譯成團(tuán)塊命令。該驅(qū)動程序利用存儲在本地高速緩存中的數(shù)據(jù)來完成所述I/o請求,或者該驅(qū)動程序可以訪問團(tuán)塊存儲以獲得與I/O請求所訪問的虛擬硬盤驅(qū)動器相關(guān)聯(lián)的團(tuán)塊中所存儲的數(shù)據(jù)。團(tuán)塊命令用于訪問團(tuán)塊存儲。團(tuán)塊存儲被配置為存儲作為虛擬硬盤驅(qū)動器展示給應(yīng)用的團(tuán)塊。允許對團(tuán)塊的訪問的應(yīng)用編程接口和語義不同于應(yīng)用執(zhí)行以訪問虛擬硬盤驅(qū)動器的應(yīng)用編程接口和語義。提供本發(fā)明內(nèi)容以便以簡化的形式介紹將在以下具體實施方式
中進(jìn)一步描述的一些概念。該發(fā)明內(nèi)容不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或本質(zhì)特征,也不旨在獨立地用于幫助確定所要求保護(hù)的主題的范圍。附圖簡述圖I是示出根據(jù)本發(fā)明的各實施例的示例性云計算平臺的網(wǎng)絡(luò)圖;圖2是示出了示例性云計算平臺中的示例性結(jié)構(gòu)計算機(jī)和示例性團(tuán)塊存儲的框圖;圖3是用于創(chuàng)建作為虛擬硬盤驅(qū)動器展示的團(tuán)塊的示例性方法的邏輯圖;以及圖4是用于管理對虛擬硬盤驅(qū)動器的I/O請求的示例性方法的邏輯圖。詳細(xì)描述本專利用具體細(xì)節(jié)來描述申請專利的主題以滿足法定要求。然而,該描述本身并非旨在限制本專利的范圍。相反,發(fā)明人設(shè)想所要求保護(hù)的主題還可結(jié)合其他當(dāng)前或未來技術(shù)按照其他方式來具體化,以包括不同的步驟或類似于本專利中所描述的步驟的步驟組合。此外,盡管術(shù)語“步驟”和“框”可在此處用于指示所采用的方法的不同元素,但除非而且僅當(dāng)明確描述了各個步驟的順序時,該術(shù)語不應(yīng)被解釋為意味著此處公開的各個步驟之中或之間的任何特定順序。此外,以下參考附圖詳細(xì)描述了各實施例,各附圖整體通過引用結(jié)合于此。如在此所使用的那樣,術(shù)語“團(tuán)塊(bIob ) ”是指二進(jìn)制大對象。在一些實施例中,運行在云計算平臺中的應(yīng)用訪問存儲在持久且可用的虛擬硬盤驅(qū)動器中的文件系統(tǒng)中的數(shù)據(jù)。虛擬硬盤驅(qū)動器中的數(shù)據(jù)在軟件或硬件故障(例如驅(qū)動器故障、節(jié)點故障、機(jī)架故障、位腐壞(bit rot)等等)的情況下保持為可用的。應(yīng)用可以使用諸如Windows NTFS API之類的應(yīng)用編程接口(API)和語義來訪問存儲在虛擬硬盤驅(qū)動器中的數(shù)據(jù)。在一個實施例中,虛擬硬盤驅(qū)動器可以可安裝的塊級虛擬設(shè)備。虛擬硬盤驅(qū)動器允許運行在云計算平臺內(nèi)的虛擬機(jī)上的應(yīng)用使用與該應(yīng)用的存儲對接的任何文件系統(tǒng)API 來訪問虛擬硬盤驅(qū)動器中的數(shù)據(jù)。虛擬硬盤驅(qū)動器是持久的并且通過將寫入提交給團(tuán)塊存儲來對所有寫入防止數(shù)據(jù)損失。虛擬硬盤驅(qū)動器是團(tuán)塊。虛擬硬盤驅(qū)動器的內(nèi)容和與虛擬硬盤驅(qū)動器相關(guān)聯(lián)的元數(shù)據(jù)存儲在所述團(tuán)塊中。所述團(tuán)塊通過團(tuán)塊接口上傳自、或下載到團(tuán)塊存儲。附加地,團(tuán)塊接口可以允許應(yīng)用安裝與團(tuán)塊相關(guān)聯(lián)的虛擬硬盤驅(qū)動器并且訪問存儲在該虛擬硬盤驅(qū)動器中的數(shù)據(jù)。在一些實施例中,虛擬硬盤驅(qū)動器作為卷由應(yīng)用來安裝。應(yīng)用I/O請求被重定向到存儲在團(tuán)塊存儲中的團(tuán)塊。在一個實施例中,對團(tuán)塊的寫入是通過將所寫入的數(shù)據(jù)存儲在團(tuán)塊存儲中而被持久化的,其中所述團(tuán)塊存儲在使所述寫入在所述團(tuán)塊存儲中持久以后向應(yīng)用確認(rèn)成功的寫入。當(dāng)虛擬硬盤驅(qū)動器被卸載(unmounted)或者安裝所述驅(qū)動器的虛擬機(jī)發(fā)生故障時,與所述虛擬硬盤驅(qū)動器相關(guān)聯(lián)的團(tuán)塊保持在持久團(tuán)塊存儲中。因此,另一虛擬機(jī)可以安裝與該虛擬硬盤驅(qū)動器相關(guān)聯(lián)的同一團(tuán)塊并且訪問存儲在該團(tuán)塊中的數(shù)據(jù)。云計算平臺允許遷移和執(zhí)行可使用存儲資源的傳統(tǒng)應(yīng)用,包括關(guān)系數(shù)據(jù)庫;虛擬機(jī)上的數(shù)據(jù)在故障或關(guān)閉期間的存活;記憶數(shù)據(jù)以供其他虛擬機(jī)使用;以及在虛擬虛擬機(jī)間并發(fā)的數(shù)據(jù)共享等等。傳統(tǒng)應(yīng)用的遷移和執(zhí)行允許虛擬機(jī)執(zhí)行被配置為通過Windows NTFS文件系統(tǒng)發(fā)起I/O請求的應(yīng)用。虛擬機(jī)還執(zhí)行使用結(jié)構(gòu)化查詢語言(SQL)的關(guān)系數(shù)據(jù)庫(比如mySQL或Oracle),而不必執(zhí)行附加的數(shù)據(jù)庫鏡像化。虛擬機(jī)將數(shù)據(jù)存儲到虛擬硬盤驅(qū)動器,并且存儲在該虛擬硬盤驅(qū)動器中的數(shù)據(jù)在當(dāng)前虛擬機(jī)發(fā)生故障的情況下對附加的虛擬機(jī)可用??煺沼洃浥c虛擬硬盤驅(qū)動器相關(guān)聯(lián)的團(tuán)塊的當(dāng)前狀態(tài)??煺湛捎糜趧?chuàng)建可由虛擬機(jī)訪問的只讀虛擬硬盤驅(qū)動器。存儲在虛擬硬盤驅(qū)動器中的數(shù)據(jù)可以并發(fā)地對許多虛擬機(jī)可用。在一個實施例中,云計算平臺更新虛擬硬盤驅(qū)動器,創(chuàng)建快照并且然后將所述快照與其他虛擬機(jī)共享。在一個實施例中,云計算平臺可以將物理機(jī)展示作為虛擬機(jī)。物理機(jī)通過虛擬機(jī)所使用的命令來訪問。本領(lǐng)域技術(shù)人員能夠理解,該云計算平臺可以包括硬件、軟件、或硬件和軟件的組合。硬件包括配置成執(zhí)行存儲在存儲器中的指令的處理器和存儲器。在一個實施例中,存儲器包括存儲具有用于計算機(jī)實現(xiàn)的方法的計算機(jī)可使用的指令的計算機(jī)程序產(chǎn)品的計算機(jī)可讀介質(zhì)。計算機(jī)可讀介質(zhì)包括易失性和非易失性介質(zhì)、可移動和不可移動介質(zhì)、以及可由數(shù)據(jù)庫、交換機(jī)和各種其它網(wǎng)絡(luò)設(shè)備讀取的介質(zhì)。網(wǎng)絡(luò)交換機(jī)、路由器以及相關(guān)組件本質(zhì)上是常規(guī)的,與這些組件通信的手段也是如此。作為示例而非限制,計算機(jī)可讀介質(zhì)包括計算機(jī)存儲介質(zhì)和通信介質(zhì)。計算機(jī)存儲介質(zhì),即機(jī)器可讀介質(zhì),包括以用于存儲信息的任何方法或技術(shù)來實現(xiàn)的介質(zhì)。存儲的信息的示例包括計算機(jī)可使用指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊以及其他數(shù)據(jù)表示。計算機(jī)存儲介質(zhì)包括但不限于,隨機(jī)存取存儲器(RAM)、只讀存儲器 (ROM)、電可擦除可編程只讀存儲器(EEPR0M)、閃存或其他存儲器技術(shù)、緊致盤只讀存儲器 (CD-ROM)、數(shù)字多功能盤(DVD)、全息介質(zhì)或其他光盤存儲、磁帶盒、磁帶、磁盤存儲、以及其他磁存儲設(shè)備。這些存儲器技術(shù)可瞬間、臨時或永久地存儲數(shù)據(jù)。在一個實施例中,云計算平臺包括對客戶端設(shè)備可用的云應(yīng)用??蛻舳嗽O(shè)備訪問云計算平臺來執(zhí)行云應(yīng)用。云應(yīng)用是使用在云計算平臺中可用的存儲和處理資源來實現(xiàn)的。圖I是示出根據(jù)本發(fā)明的各實施例的示例性計算系統(tǒng)100的網(wǎng)絡(luò)圖。圖I所示的計算系統(tǒng)100僅僅是示例性的并且不旨在暗示對范圍或功能的任何限制。本發(fā)明的實施例可以以大量其他配置來運行。參考
圖1,計算系統(tǒng)100包括云計算平臺110、云應(yīng)用120和客戶端設(shè)備130。云計算平臺110被配置為執(zhí)行由客戶端設(shè)備130所請求的云應(yīng)用120。云計算平臺110維護(hù)團(tuán)塊存儲。團(tuán)塊存儲提供存儲由云應(yīng)用120訪問的數(shù)據(jù)的團(tuán)塊。云計算平臺110 通過諸如無線網(wǎng)絡(luò)、局域網(wǎng)、有線網(wǎng)絡(luò)或因特網(wǎng)之類的通信網(wǎng)絡(luò)連接到客戶端設(shè)備130。云應(yīng)用120對客戶端設(shè)備130可用。在云計算平臺110上執(zhí)行的軟件實現(xiàn)云應(yīng)用 120。在一個實施例中,云計算平臺110中的虛擬機(jī)執(zhí)行云應(yīng)用120。云應(yīng)用120可以包括編輯應(yīng)用、網(wǎng)絡(luò)管理應(yīng)用、財務(wù)應(yīng)用、或由客戶端設(shè)備130所請求或開發(fā)的任何應(yīng)用。在某些實施例中,云應(yīng)用130的一些功能可以在客戶端設(shè)備130上執(zhí)行??蛻舳嗽O(shè)備130被用戶用于與云計算平臺110所提供的云應(yīng)用120交互。在一些實施例中,客戶端設(shè)備130必須向云計算平臺110注冊以訪問云應(yīng)用120。具有來自云計算平臺110的賬戶的任何客戶端設(shè)備130都可以訪問云應(yīng)用120和云計算平臺110中提供的其他資源??蛻舳嗽O(shè)備130包括但不限于個人數(shù)字助理、智能電話、膝上型計算機(jī)、個人計算機(jī)、游戲系統(tǒng)、機(jī)頂盒、或任何其他合適的客戶端計算設(shè)備。客戶端設(shè)備130包括用戶和系統(tǒng)信息存儲以在客戶端設(shè)備130上存儲用戶和系統(tǒng)信息。用戶信息可包括搜索歷史、 cookie以及口令。系統(tǒng)信息可以包括因特網(wǎng)協(xié)議地址、經(jīng)高速緩存的網(wǎng)頁以及系統(tǒng)使用率。 客戶端設(shè)備130與云計算平臺110通信以從云應(yīng)用120接收結(jié)果。因此,計算系統(tǒng)100是用云計算平臺110來配置的,該云計算平臺110向客戶端設(shè)備130提供云應(yīng)用120。云應(yīng)用120去除了在客戶端設(shè)備130上更新和管理多個本地客戶端應(yīng)用這一負(fù)擔(dān)。在某些實施例中,云計算平臺提供結(jié)構(gòu)(fabric)計算機(jī)和團(tuán)塊存儲。結(jié)構(gòu)計算機(jī)在一些或多個虛擬機(jī)中執(zhí)行云應(yīng)用。團(tuán)塊存儲存儲供云應(yīng)用使用的數(shù)據(jù)。云應(yīng)用進(jìn)而通過將云應(yīng)用I/O請求翻譯成團(tuán)塊命令的驅(qū)動程序與作為虛擬硬盤驅(qū)動器的團(tuán)塊對接。圖2是示出了示例性云計算平臺中的示例性結(jié)構(gòu)計算機(jī)210和示例性團(tuán)塊存儲 230的框圖。結(jié)構(gòu)計算機(jī)210執(zhí)行實現(xiàn)云應(yīng)用221的虛擬機(jī)220。團(tuán)塊存儲230可以由結(jié)構(gòu)計算機(jī)210通過因特網(wǎng)協(xié)議(IP)地址來訪問。在一個實施例中,云應(yīng)用221可以由結(jié)構(gòu)計算機(jī)210來執(zhí)行,該結(jié)構(gòu)計算機(jī)又訪問團(tuán)塊存儲以獲得實現(xiàn)由云應(yīng)用221使用的虛擬硬盤驅(qū)動器的團(tuán)塊。虛擬機(jī)220包括驅(qū)動器庫222、I/O重定向223、驅(qū)動程序224和本地高速緩存225。驅(qū)動器庫222可以提供驅(qū)動器管理,并且I/O重定向223可以通過將驅(qū)動器命令重定向到驅(qū)動程序224來實現(xiàn)對存儲在虛擬硬盤驅(qū)動器中的內(nèi)容的訪問,其中所述驅(qū)動程序?qū)⑺鲵?qū)動器命令翻譯成團(tuán)塊命令。在一個實施例中,虛擬機(jī)220可以使用存儲在驅(qū)動器庫222中的諸如下列驅(qū)動器命令來訪問與虛擬硬盤驅(qū)動器(VHD)相對應(yīng)的團(tuán)塊中的數(shù)據(jù)CreateDrive> DeleteDrive、ListDrive、MountDrive> UnmountDrive> 以及 SnapshotDrive。在一個實施例中,驅(qū)動器庫222可以向虛擬機(jī)220提供團(tuán)塊命名空間以定位驅(qū)動器命令。例如,虛擬機(jī)220可以通過訪問驅(qū)動器庫222中的統(tǒng)一資源定位符 (例如 http://〈accountname>. blob. core, windows. net/<containername>/<blobname>) 來定位團(tuán)塊命名空間,其中accountname是由云計算平臺的用戶所注冊的賬戶的名稱, containername是團(tuán)塊存儲的名稱,而blobname是團(tuán)塊的名稱。虛擬機(jī)220進(jìn)而可以向VHD發(fā)出1/0請求。1/0請求可以被驅(qū)動程序224翻譯成團(tuán)塊命令。團(tuán)塊存儲230中的團(tuán)塊可以作為虛擬硬盤驅(qū)動器(VHD)展示給在虛擬機(jī)220上執(zhí)行的云應(yīng)用221。在一個實施例中,VHD可以是特殊類型的團(tuán)塊(例如頁團(tuán)塊),其可以由云應(yīng)用221以限時租賃來安裝。VHD可以由任何應(yīng)用221使用例如Windows NTFS語義之類的文件系統(tǒng)語義或者包含在驅(qū)動器庫222中的命令來訪問。向VHD發(fā)出的1/0請求被1/0重定向223接收。1/0重定向223是如下的組件 該組件被配置為將針對VHD的云應(yīng)用1/0請求轉(zhuǎn)發(fā)給驅(qū)動程序224。在某些實施例中,驅(qū)動程序224提供和/或?qū)崿F(xiàn)如下的接口 所述接口被云應(yīng)用用于將從云應(yīng)用接收到的驅(qū)動器命令翻譯成團(tuán)塊命令,比如LeaseBlob、SnapShotBlob、 PutPage>ClearPage>GetBlob等等。驅(qū)動程序224還將針對所安裝的虛擬硬盤驅(qū)動器的云應(yīng)用1/0請求翻譯成的團(tuán)塊命令,所述團(tuán)塊命令被傳送給團(tuán)塊存儲230并由其處理。驅(qū)動程序224可以為虛擬硬盤驅(qū)動器管理本地高速緩存225以存儲被存儲在與該虛擬硬盤驅(qū)動器相對應(yīng)的團(tuán)塊中的數(shù)據(jù)。驅(qū)動程序224可以使用本地高速緩存225來檢索與來自云應(yīng)用 221的讀取操作相對應(yīng)的數(shù)據(jù)。來自云應(yīng)用221的寫入操作可以被傳送給本地高速緩存225 和團(tuán)塊存儲230中的團(tuán)塊二者。在其他實施例中,驅(qū)動程序224可以管理與虛擬硬盤驅(qū)動器相對應(yīng)的租賃以防止云應(yīng)用在租賃期滿時訪問本地高速緩存225中或團(tuán)塊存儲中的數(shù)據(jù)。每個本地高速緩存225都與單個VHD相關(guān)聯(lián)。用于所安裝的VHD的本地高速緩存 225可以位于相同的結(jié)構(gòu)計算機(jī)210上,或者本地高速緩存225可以位于安裝該VHD的結(jié)構(gòu)計算機(jī)210的相同機(jī)架內(nèi)的計算資源上。該配置可以節(jié)省網(wǎng)絡(luò)帶寬。在一些實施例中,虛擬機(jī)220可以請求多個VHD。虛擬機(jī)可以為每個VHD指定結(jié)構(gòu)計算機(jī)上的供用作本地高速緩存225的盤驅(qū)動器空間量。存儲在本地高速緩存225中的數(shù)據(jù)可以是經(jīng)過循環(huán)冗余校驗 (CRC)的,以防止虛擬機(jī)220使用包含錯誤的數(shù)據(jù)。在某些實施例中,本地高速緩存225與VHD的相應(yīng)團(tuán)塊同步。驅(qū)動程序224可以管理本地高速緩存225。驅(qū)動程序224可以被配置為拖延對本地高速緩存225的寫入,直到從團(tuán)塊存存儲230中的團(tuán)塊接收到確認(rèn)??商娲?驅(qū)動程序224可以并行地向本地高速緩存225和團(tuán)塊存儲230 二者進(jìn)行寫入。如果虛擬機(jī)220在并行地向團(tuán)塊存儲230寫入時崩潰并復(fù)位,則虛擬機(jī)220可以嘗試重新安裝虛擬硬盤驅(qū)動器并且重新使用相應(yīng)的本地高速緩存225。虛擬機(jī)220可以檢查本地高速緩存225以確定哪些數(shù)據(jù)庫曾在沒有來自團(tuán)塊存儲230的確認(rèn)的情況下被投機(jī)性地寫入到本地高速緩存225中。虛擬機(jī)220進(jìn)而可以轉(zhuǎn)儲清除(flush)未經(jīng)確認(rèn)的數(shù)據(jù)塊的本地高速緩存225。在其他實施例中,虛擬機(jī)220可以轉(zhuǎn)儲清除整個本地高速緩存225或者本地高速緩存225的選定部分。本地高速緩存225 存儲結(jié)構(gòu)計算機(jī)210上的虛擬機(jī)220頻繁使用的數(shù)據(jù)。本地高速緩存225減少向團(tuán)塊存儲 230請求的讀取的數(shù)目,這節(jié)省了網(wǎng)絡(luò)帶寬并且減少了網(wǎng)絡(luò)連接爭用。附加地,虛擬機(jī)220 可以經(jīng)歷由于通過從本地高速緩存225中檢索數(shù)據(jù)讀取而導(dǎo)致的等待時間減少的性能改善。在一些實施例中,經(jīng)歷到團(tuán)塊存儲230的高連通性(例如IOGbps)的虛擬機(jī)可以不使用本地高速緩存225。團(tuán)塊存儲230連接到結(jié)構(gòu)計算機(jī)210。結(jié)構(gòu)計算機(jī)210通過IP地址訪問團(tuán)塊存儲 230。團(tuán)塊存儲230包括團(tuán)塊服務(wù)器233。團(tuán)塊服務(wù)器233對結(jié)構(gòu)計算機(jī)210對接,控制對團(tuán)塊的訪問,并且實現(xiàn)團(tuán)塊上的團(tuán)塊命令。團(tuán)塊服務(wù)器233是所復(fù)制的團(tuán)塊存儲系統(tǒng)的一部分,其中所存儲的團(tuán)塊在多個服務(wù)器上被復(fù)制以創(chuàng)建團(tuán)塊的副本,所述副本被單獨地維護(hù)以防出現(xiàn)驅(qū)動器、節(jié)點或機(jī)架故障。這保證了團(tuán)塊在面對故障時為可用和持久的。在訪問團(tuán)塊時從驅(qū)動程序224或云應(yīng)用221接收的團(tuán)塊命令包括Lease Blob(租賃團(tuán)塊)、Snapshot Blob (快照團(tuán)塊)、Put Page (放置頁)、Clear Page (清除頁)、以及Get Blob (獲得團(tuán)塊)。LeaseBlob命令使團(tuán)塊存儲230創(chuàng)建針對存儲在團(tuán)塊存儲230上的團(tuán)塊的租賃。 在該實施例中,該租賃是獨占寫入租賃,這僅僅允許一個云應(yīng)用221寫入該團(tuán)塊。當(dāng)獲得獨占寫入租賃時,租賃標(biāo)識符(ID)由團(tuán)塊服務(wù)器233來創(chuàng)建并返回給云應(yīng)用221。驅(qū)動程序224存儲租賃ID并且將租賃ID與傳送給團(tuán)塊存儲230的任何寫入包括在一起。Lease Blob命令還支持獨占讀寫租賃和其他類型的租賃。在一些實施例中,LeaseBlob命令允許驅(qū)動程序224指定租賃的時長。LeaseBlob命令可以被驅(qū)動程序224用于續(xù)訂租賃或終止租賃。SnapshotBlob命令致使團(tuán)塊存儲創(chuàng)建團(tuán)塊中的數(shù)據(jù)的快照。該快照是只讀的。驅(qū)動程序224可以使用該命令來實現(xiàn)對團(tuán)塊的內(nèi)容的并發(fā)訪問。相同團(tuán)塊的一個或多個快照可以并發(fā)地由兩個或更多云應(yīng)用來訪問。這些快照可以提供團(tuán)塊的版本化(versioning)。 團(tuán)塊的快照基于團(tuán)塊的名稱和版本時間戳來訪問,所述時間戳是由團(tuán)塊服務(wù)器233自動創(chuàng)建的(在多個版本的情況下)。換言之,當(dāng)團(tuán)塊被更新時,在團(tuán)塊更新以前或之后創(chuàng)建的快照包含不同版本的時間戳。在某些實施例中,云應(yīng)用可以使驅(qū)動程序224將元數(shù)據(jù)發(fā)送給團(tuán)塊存儲以獲得快照。該元數(shù)據(jù)可以用于描述快照或者快速地定位快照。PutPage命令使團(tuán)塊服務(wù)器233將一定范圍的頁存儲在團(tuán)塊存儲230中的指定地址處。每個頁都可以包括主存儲設(shè)備中的一定范圍的存儲器塊。PutPage命令可以被驅(qū)動程序224用于將數(shù)據(jù)寫入團(tuán)塊存儲??梢灾付ㄆ屏恳栽试S進(jìn)行團(tuán)塊存儲230中任何有效地址以內(nèi)的存儲。這些頁不必順序地被寫入,并且在團(tuán)塊的地址空間中可能存在間隙(例如空塊)。例如,驅(qū)動程序224可以將4KB的頁以偏移量O、并且將另一個頁以偏移量4KB*1 百萬放置在團(tuán)塊存儲230中。團(tuán)塊存儲230可以將這兩個頁存儲在所指定的地址處。這些頁在成功的PutPage命令以后被提交給團(tuán)塊存儲230。團(tuán)塊存儲230進(jìn)而向驅(qū)動程序224 確認(rèn)成功。PutPage命令使團(tuán)塊服務(wù)器233在更新團(tuán)塊以前檢查租賃ID。當(dāng)為團(tuán)塊指定了獨占寫入租賃時,PutPage命令在請求團(tuán)塊的更新時有效租賃ID被驅(qū)動程序指定的情況下成功。當(dāng)租賃期滿時,PutPage命令將不成功并且團(tuán)塊服務(wù)器233可以移除期滿的租賃ID。ClearPage命令使團(tuán)塊服務(wù)器233從團(tuán)塊存儲230中清除所指定的頁或一定范圍的頁。驅(qū)動程序224響應(yīng)于從虛擬硬盤驅(qū)動器刪除數(shù)據(jù)的云應(yīng)用221請求而傳送ClearPage 命令以從團(tuán)塊移除頁。ClearPage命令使團(tuán)塊服務(wù)器233保證在移除具有服從刪除請求的數(shù)據(jù)的頁以前,為與VHD相關(guān)聯(lián)的團(tuán)塊指定了有效租賃ID。當(dāng)租賃期滿時,ClearPage命令將不成功并且團(tuán)塊服務(wù)器233可以清除期滿的租賃ID。GetBlob命令使團(tuán)塊服務(wù)器233檢索指定團(tuán)塊的整個團(tuán)塊或一定范圍的頁(例如字節(jié))。驅(qū)動程序224響應(yīng)于從虛擬硬盤驅(qū)動器獲得數(shù)據(jù)的云應(yīng)用221請求而傳送GetBlob 命令。GetBlob命令使團(tuán)塊服務(wù)器233保證在獲得頁以前為與VHD相關(guān)聯(lián)的團(tuán)塊指定了有效租賃ID。當(dāng)租賃期滿時,GetBlob命令將不成功并且團(tuán)塊服務(wù)器233可以清除期滿的租賃ID。驅(qū)動程序224從云應(yīng)用22 I接收驅(qū)動器命令和I/O請求。驅(qū)動程序224進(jìn)而將云命令和I/O請求翻譯成團(tuán)塊命令。驅(qū)動器命令被云應(yīng)用用于管理VHD并且I/O請求被用于訪問存儲在VHD中的數(shù)據(jù)。驅(qū)動器命令包括Create Drive (創(chuàng)建驅(qū)動器)、Mount Drive (安裝驅(qū)動器)、UnMount Drive (卸載驅(qū)動器)、Delete Drive (刪除驅(qū)動器)、List Drive (列出驅(qū)動器)、以及Snapshot Drive (快照驅(qū)動器)等等。CreateDrive命令被云應(yīng)用221用于創(chuàng)建虛擬硬盤驅(qū)動器。云應(yīng)用221為虛擬硬盤驅(qū)動器指定大小和格式。例如,云應(yīng)用221可以使用Windows NTFS文件系統(tǒng)將虛擬硬盤驅(qū)動器格式化成單分區(qū)單卷。驅(qū)動程序224進(jìn)而將驅(qū)動器命令翻譯成在團(tuán)塊命名空間中可用的合適團(tuán)塊命令。然后,驅(qū)動程序可以向團(tuán)塊存儲230傳送例如PutPage、LeaseBlob 等等之類的團(tuán)塊命令,所述團(tuán)塊命令為VHD創(chuàng)建團(tuán)塊。MountDrive命令被云應(yīng)用221用于安裝VHD。當(dāng)安裝VHD時,云應(yīng)用221可以指定本地盤空間量以用作所安裝的VHD的本地高速緩存225。云應(yīng)用221還可以請求獨占寫入 VHD、寫入VHD、共享只讀VHD等等。獨占寫入VHD是指,僅僅云應(yīng)用221可以更新VHD。寫入 VHD是指,云應(yīng)用221可以更新VHD并且其他云應(yīng)用可以輪流更新VHD。共享只讀VHD是指, VHD是只讀的,并且其他虛擬機(jī)220可以并發(fā)地從相同VHD讀取。驅(qū)動程序224可以防止寫入只讀VHD,因為租賃ID可能未與VHD的相應(yīng)團(tuán)塊相關(guān)聯(lián)。驅(qū)動程序224進(jìn)而將MountDrive 命令翻譯成合適的團(tuán)塊命令。例如,驅(qū)動程序224可以向團(tuán)塊存儲230傳送LeaseBlob命令以獲取和維護(hù)對與VHD相對應(yīng)的團(tuán)塊的租賃。附加地,驅(qū)動程序可以例行地續(xù)訂對團(tuán)塊的租賃以繼續(xù)向云應(yīng)用221提供對VHD的訪問。如果租賃未被續(xù)訂,則云應(yīng)用寫入請求221可能不成功。UnmountDrive命令被云應(yīng)用221用于卸載指定的VHD。UnmountDrive命令可以使驅(qū)動程序224終止對與指定VHD相關(guān)聯(lián)的團(tuán)塊的租賃。當(dāng)結(jié)構(gòu)計算機(jī)210或虛擬機(jī)220 發(fā)生故障時,驅(qū)動程序224可以自動地發(fā)出UnmountDrive命令以終止對結(jié)構(gòu)計算機(jī)210或虛擬機(jī)220使用的團(tuán)塊的任何租賃。DeleteDrive命令被云應(yīng)用221用于刪除指定的VHD。DeleteDrive命令可以使驅(qū)動程序224傳送如下的團(tuán)塊命令所述團(tuán)塊命令終止對與指定VHD相關(guān)聯(lián)的團(tuán)塊的租賃。在一些實施例中,驅(qū)動程序224可以傳送ClearPage命令以移除與指定VHD相關(guān)聯(lián)的團(tuán)塊的所有頁。在刪除VHD以后,團(tuán)塊中的數(shù)據(jù)不對云計算平臺或云應(yīng)用221可用。ListDrive命令被云應(yīng)用221用于列出與云應(yīng)用221相關(guān)聯(lián)的所有VHD。 ListDrive命令可以使驅(qū)動程序224定位與云應(yīng)用221相關(guān)聯(lián)的每個租賃ID。在一些實施例中,驅(qū)動程序224可以向云應(yīng)用221傳送與對云應(yīng)用221可用的每個租賃ID相對應(yīng)的字母或數(shù)字。驅(qū)動程序224還可以接收與快照或沒有租賃ID的其他驅(qū)動器相關(guān)聯(lián)的數(shù)字或字母。SnapshotDrive命令被云應(yīng)用221用于獲得與云應(yīng)用221相關(guān)聯(lián)的每個VHD的快照。SnapshotDrive命令可以使驅(qū)動程序224定位與VHD相關(guān)聯(lián)的團(tuán)塊并且向團(tuán)塊存儲傳送SnapshotBlob命令。驅(qū)動程序224進(jìn)而可以向云應(yīng)用221返回快照的字母、數(shù)字或時間戳,例如日期和時間。團(tuán)塊的快照可以作為VHD由云應(yīng)用221來訪問。在某些實施例中,來自云應(yīng)用221的I/O請求由驅(qū)動程序224來處理。由云應(yīng)用 221安裝的VHD被訪問以對所存儲的數(shù)據(jù)執(zhí)行I/O請求。該I/O請求尤其是可以包括讀取和寫入請求。例如,VHD可以從云應(yīng)用221接收讀取請求。I/O重定向223可以將讀取請求路由到驅(qū)動程序224。驅(qū)動程序221進(jìn)而可以利用從云應(yīng)用221接收的任何重疊在先寫入請求來對讀取請求進(jìn)行排序。這保證了讀取將僅在寫入請求被存儲在團(tuán)塊存儲230以后才返回待決的更新。驅(qū)動程序224在最近寫入數(shù)據(jù)的緩沖區(qū)中檢查所請求的數(shù)據(jù)。如果該緩沖區(qū)不包含所請求的數(shù)據(jù),則檢查本地高速緩存225。當(dāng)數(shù)據(jù)在本地高速緩存225中可用并且被從本地高速緩存225中讀取時,檢查塊的CRC以保證數(shù)據(jù)的完整性。如果存在CRC不匹配, 則從高速緩存中移除數(shù)據(jù)并且從團(tuán)塊存儲230中檢索數(shù)據(jù)。如果該數(shù)據(jù)未在本地高速緩存225中找到,則驅(qū)動程序224從團(tuán)塊存儲230中讀取該數(shù)據(jù)。為了從團(tuán)塊存儲230讀取該數(shù)據(jù),驅(qū)動程序224傳送GetBlob命令以訪問與所請求數(shù)據(jù)相對應(yīng)的頁。在某些實施例中,從團(tuán)塊存儲230讀取數(shù)據(jù)的條件是具有有效租賃 ID。在該數(shù)據(jù)被讀取和驗證以后,將該數(shù)據(jù)返回給云應(yīng)用221。當(dāng)從團(tuán)塊存儲230檢索該數(shù)據(jù)時,驅(qū)動程序224基于本地高速緩存225的大小、高速緩存替換策略等等來確定是否高速緩存該數(shù)據(jù)。如果該數(shù)據(jù)將被存儲在本地高速緩存225中,則存儲該數(shù)據(jù)并且計算和存儲CRC碼。該CRC可以與該數(shù)據(jù)存儲在一起,或者可以之后寫入到結(jié)構(gòu)計算機(jī)210上的不同位置。云應(yīng)用221將數(shù)據(jù)寫入VHD。I/O重定向可以將寫入請求路由到驅(qū)動程序224。驅(qū)動程序224進(jìn)而可以對于待決的讀取和寫入請求來對傳入的I/O請求進(jìn)行排序。驅(qū)動程序 224將寫入請求傳送給團(tuán)塊存儲230。在一個實施例中,驅(qū)動程序224對到團(tuán)塊存儲的所有重疊寫入請求進(jìn)行排序,并且并行地向團(tuán)塊存儲230僅傳送不重疊的寫入請求。當(dāng)存在待決的重疊讀取或?qū)懭胝埱髸r,傳入的寫入請求將被排序并且必須等待直到重疊的I/O請求被傳送給團(tuán)塊存儲230并被確認(rèn)。在重疊的請求被排序以后,將傳入的寫入傳送給團(tuán)塊存儲230?;谂c所安裝的 VHD相關(guān)聯(lián)的團(tuán)塊的有效租賃ID,該寫入是有條件的。如果租賃已經(jīng)期滿,則該寫入請求失敗。在這種情況下,驅(qū)動程序224可以嘗試重新獲取該租賃;在其不能重新獲取時,寫入仍然失敗。當(dāng)寫入請求成功時,其通過如下方式被持久化將寫入請求存儲在團(tuán)塊存儲230中并且在向云應(yīng)用221反過來確認(rèn)成功以前復(fù)制該寫入。如果寫入請求超時(例如未從團(tuán)塊存儲230接收到確認(rèn)),則驅(qū)動程序224重新嘗試該寫入請求。驅(qū)動程序224還可以在團(tuán)塊存儲傳送“超時”或“服務(wù)器忙”時重新嘗試該寫入請求。一旦重新嘗試在團(tuán)塊存儲230處成功,則驅(qū)動程序224就返回成功。在另一實施例中,驅(qū)動程序保證陳舊的寫入(例如被傳送給團(tuán)塊存儲230的未經(jīng)確認(rèn)的寫入請求) 不復(fù)制隨后的重新嘗試??梢酝ㄟ^等待獲得團(tuán)塊服務(wù)器超時消息或等待團(tuán)塊服務(wù)器超時時間段來丟棄陳舊的寫入。因此,在向?qū)懭胫匦聡L試范圍執(zhí)行重疊的寫入請求以前,驅(qū)動程序 224保證通過等待經(jīng)過其團(tuán)塊服務(wù)器超時時間段來由系統(tǒng)轉(zhuǎn)儲清除陳舊的寫入。團(tuán)塊服務(wù)器233在已經(jīng)經(jīng)過了給定時間量以后丟棄陳舊的寫入。可替代地,驅(qū)動程序224可以復(fù)位與該團(tuán)塊相關(guān)聯(lián)的租賃或序列號。租賃ID的改變可以防止具有已期滿租賃ID的陳舊寫入對團(tuán)塊存儲230進(jìn)行更新。任選地,與該團(tuán)塊相關(guān)聯(lián)的序列號可以在每個成功的寫入請求以后遞增。當(dāng)驅(qū)動程序224未從團(tuán)塊存儲230獲得確認(rèn)時,驅(qū)動程序224增加序列號以向團(tuán)塊存儲230通知具有更早的序列號的任何更早寫入都應(yīng)當(dāng)被丟棄。因此,團(tuán)塊存儲230 忽略所有陳舊的寫入,并且來自驅(qū)動程序224的所有未來寫入使用新的租賃ID或序列號。團(tuán)塊服務(wù)器233將團(tuán)塊的序列號存儲在團(tuán)塊存儲230中。序列號被團(tuán)塊服務(wù)器 233用于在團(tuán)服務(wù)器接收到陳舊寫入時拒絕對團(tuán)塊的訪問。當(dāng)使用序列號時,每個PagePut 或PageClear命令傳入序列號,并且包括在該命令中的序列號被檢查以確定其是否大于或等于與該團(tuán)塊一起存儲在團(tuán)塊存儲中的序列號。該命令在包括在該命令中的序列號大于或等于與該團(tuán)塊一起存儲在團(tuán)塊存儲中的序列號時成功。否則,該命令失敗。在一個實施例中,當(dāng)安裝VHD時,相應(yīng)團(tuán)塊的序列號被設(shè)置成O。對VHD及其相應(yīng)團(tuán)塊的所有寫入都傳入序列號O。團(tuán)塊服務(wù)器233進(jìn)而接受該寫入,因為傳入的序列號與為該團(tuán)塊存儲的序列號匹配。如果所述寫入之一超時,則驅(qū)動程序224不知道該寫入是否仍然處于等待執(zhí)行的隊列中。在超時時間段(例如10秒)以后,驅(qū)動程序224向團(tuán)塊服務(wù)器 233發(fā)送請求以遞增與具有未完成的寫入的團(tuán)塊相關(guān)聯(lián)的序列號。團(tuán)塊服務(wù)器233將團(tuán)塊的序列號遞增到I。然后,驅(qū)動程序224將針對VHD的寫入與序列號I 一起傳送給團(tuán)塊服務(wù)器233,該團(tuán)塊服務(wù)器成功地在團(tuán)塊中實現(xiàn)所接收的寫入。如果具有序列號O的陳舊寫入在該序列號被更新以后到達(dá)團(tuán)塊服務(wù)器233,則團(tuán)塊服務(wù)器233丟棄該寫入,因為所傳入的序列號小于為該團(tuán)塊存儲的序列號。在一個實施例中,云計算平臺執(zhí)行創(chuàng)建VHD的云應(yīng)用。VHD存儲由云應(yīng)用使用的數(shù)據(jù)。表示VHD的團(tuán)塊存儲進(jìn)而被驅(qū)動程序管理以將本機(jī)云應(yīng)用命令和I/O請求解釋成與 VHD相對應(yīng)的團(tuán)塊的團(tuán)塊命令。圖3是用于創(chuàng)建作為虛擬硬盤驅(qū)動器(VHD)的團(tuán)塊的示例性方法的邏輯圖。該方法在步驟310初始化。在步驟320,云計算平臺在團(tuán)塊存儲中創(chuàng)建被展示為VHD的團(tuán)塊。在一個實施例中,該云計算平臺可以將該VHD格式化為N-T-F-S文件系統(tǒng)或F-A-T文件系統(tǒng)。 在步驟330,進(jìn)而由在該云計算平臺的虛擬機(jī)上執(zhí)行的一個或多個應(yīng)用來安裝該VHD。在步驟340,驅(qū)動程序管理對該VHD的讀取和寫入請求。該驅(qū)動程序截取對該VHD的所有1/0, 并且將所述I/O重新路由到該團(tuán)塊存儲中的團(tuán)塊。在向該應(yīng)用確認(rèn)成功以前將所述I/O請求中的寫入提交給該團(tuán)塊存儲??梢酝ㄟ^在指定時間段以后期滿的團(tuán)塊租賃來向云應(yīng)用提供對團(tuán)塊的獨占寫入訪問。該驅(qū)動程序可以執(zhí)行連續(xù)續(xù)訂租賃的線程,使得只要應(yīng)用在運行并且想要使用該VHD,則VHD就可以保持為安裝的。在另一實施例中,可以每當(dāng)存在對團(tuán)塊的成功更新時就續(xù)訂租賃。云應(yīng)用進(jìn)而有條件地基于租賃的有效性對團(tuán)塊進(jìn)行寫入,而其他云應(yīng)用被允許從團(tuán)塊進(jìn)行讀取。通過對驅(qū)動程序可用的團(tuán)塊接口來訪問和操縱團(tuán)塊??梢酝ㄟ^團(tuán)塊接口來創(chuàng)建團(tuán)塊的快照以允許附加的應(yīng)用并發(fā)地讀取存儲在團(tuán)塊中的數(shù)據(jù)。在某些實施例中,還可以通過對云計算平臺執(zhí)行的一些云應(yīng)用可用的團(tuán)塊接口來上傳、下載或調(diào)試團(tuán)塊。云應(yīng)用可以執(zhí)行調(diào)試器來檢查數(shù)據(jù)存儲的一致性。該方法在步驟350終止。在一些實施例中,驅(qū)動程序管理針對云應(yīng)用的I/O請求。驅(qū)動程序?qū)⑨槍HD的 I/o請求翻譯成合適的團(tuán)塊命令,所述團(tuán)塊命令被傳送給團(tuán)塊存儲中的相應(yīng)團(tuán)塊。團(tuán)塊存儲進(jìn)而訪問團(tuán)塊以實現(xiàn)團(tuán)塊命令。圖4是用于管理對虛擬硬盤驅(qū)動器的I/O請求的示例性方法的邏輯圖。該方法在步驟410初始化。在步驟420,從在該云計算平臺中的虛擬機(jī)上執(zhí)行的云應(yīng)用接收針對VHD 的I/O請求。在一個實施例中,該驅(qū)動程序?qū)⑿蛄刑柵c該I/O請求相關(guān)聯(lián)以防止用對相同數(shù)據(jù)的最近寫入請求重寫在先寫入請求。該序列號還防止陳舊寫入重寫最近的寫入請求。 在一些實施例中,該驅(qū)動程序可以增加團(tuán)塊的序列號以及隨團(tuán)塊命令傳入的序列號,以忽略具有更老序列號的在先寫入請求,其中該在先寫入請求未被團(tuán)塊存儲確認(rèn)。在步驟430, 驅(qū)動程序管理對該VHD的I/O請求。該驅(qū)動程序?qū)ο驁F(tuán)塊存儲中的團(tuán)塊的所有重疊的I/O 請求進(jìn)行排序,并且將不重疊的I/O請求并行地傳送給該團(tuán)塊存儲中的與該VHD相對應(yīng)的團(tuán)塊。在另一實施例中,由驅(qū)動程序用寫入請求對虛擬機(jī)上的本地高速緩存進(jìn)行更新,其中對本地高速緩存的更新要么在從團(tuán)塊存儲接收到確認(rèn)以后、要么與對團(tuán)塊存儲的更新并發(fā)地進(jìn)行。但是本地高速緩存中的更新僅在從團(tuán)塊存儲接收到確認(rèn)以后才可用。在云應(yīng)用故障或虛擬機(jī)故障以后,當(dāng)高速緩存和團(tuán)塊在重啟該云應(yīng)用或虛擬機(jī)以后不一致時,可以由驅(qū)動程序轉(zhuǎn)儲清除本地高速緩存的全部或一部分。該方法在步驟440終止??傃灾?,云計算平臺使用團(tuán)塊存儲中的團(tuán)塊來提供VHD。例如,數(shù)據(jù)庫應(yīng)用可以在云計算平臺上執(zhí)行。在數(shù)據(jù)庫應(yīng)用中,以順序的方式寫入日志。該日志用于較大數(shù)目的寫入,例如重做/撤銷記錄、BTree改變記錄、以及提交記錄。專用“日志驅(qū)動器”防止日志訪問與數(shù)據(jù)訪問之間的爭用。專用“數(shù)據(jù)庫驅(qū)動器”用于訪問(寫和讀)數(shù)據(jù)庫中的數(shù)據(jù)?!叭罩掘?qū)動器”讀取的比例是非常小的,并且數(shù)據(jù)庫驅(qū)動器具有高比例的讀取和寫入二者。執(zhí)行云計算平臺的數(shù)據(jù)庫應(yīng)用可以創(chuàng)建兩個VHD 日志驅(qū)動器”和“數(shù)據(jù)庫驅(qū)動器”。團(tuán)塊存儲進(jìn)而創(chuàng)建兩個團(tuán)塊,所述團(tuán)塊分別對應(yīng)于“日志驅(qū)動器”和“數(shù)據(jù)庫驅(qū)動器”。 數(shù)據(jù)庫應(yīng)用安裝“日志驅(qū)動器”并且未設(shè)置高速緩存,因為大多數(shù)日志通信量是日志寫入。 云應(yīng)用進(jìn)而安裝“數(shù)據(jù)庫驅(qū)動器”并且設(shè)置100%高速緩存,從而允許大多數(shù)讀取請求由本地高速緩存來服務(wù)。本發(fā)明的各實施例的上述描述是說明性的,且配置和實現(xiàn)中的各修改都處于當(dāng)前描述的范圍內(nèi)。例如,盡管本發(fā)明的實施例是參照圖I 一 4來概括性地描述的,但是那些描述是示例性的。盡管用對結(jié)構(gòu)特征或方法動作專用的語言描述了本主題,但可以理解,所附權(quán)利要求書中定義的主題不必限于上述具體特征或動作。更確切而言,上述具體特征和動作是作為實現(xiàn)權(quán)利要求的示例形式公開的。因此,本發(fā)明的實施例的范圍只在僅由所附權(quán)利要求書來限定。
權(quán)利要求
1.一種用于作為云計算平臺中的團(tuán)塊來管理虛擬硬盤驅(qū)動器的計算機(jī)實現(xiàn)的方法,該方法包括在團(tuán)塊存儲中創(chuàng)建作為虛擬硬盤驅(qū)動器被展示給一個和多個應(yīng)用的團(tuán)塊;安裝所述虛擬硬盤驅(qū)動器;以及管理對所述虛擬硬盤驅(qū)動器的讀取和寫入請求。
2.如權(quán)利要求I所述計算機(jī)實現(xiàn)的方法,其特征在于,所述一個或多個應(yīng)用在虛擬機(jī)上執(zhí)行,并且所述讀取和寫入請求由所述云計算平臺中的驅(qū)動程序來管理,并且所述驅(qū)動程序截取對所述虛擬硬盤驅(qū)動器的所有I/O請求并且將所述I/O請求重新路由到所述團(tuán)塊存儲中的團(tuán)塊。
3.如權(quán)利要求I所述的計算機(jī)實現(xiàn)的方法,其特征在于,還包括將所述虛擬硬盤驅(qū)動器格式化為N-T-F-S文件系統(tǒng)或F-A-T文件系統(tǒng)之一。
4.如權(quán)利要求2所述的計算機(jī)實現(xiàn)的方法,其特征在于,通過對所述驅(qū)動程序可用的團(tuán)塊接口來訪問和操縱團(tuán)塊。
5.如權(quán)利要求2所述的計算機(jī)實現(xiàn)的方法,其特征在于,通過對一些應(yīng)用可用的團(tuán)塊接口來上傳、下載和調(diào)試團(tuán)塊。
6.如權(quán)利要求2所述的計算機(jī)實現(xiàn)的方法,其特征在于,通過所述團(tuán)塊接口來創(chuàng)建所述團(tuán)塊的快照,以允許附加的應(yīng)用并發(fā)地讀取存儲在所述團(tuán)塊中的數(shù)據(jù)。
7.如權(quán)利要求2所述的計算機(jī)實現(xiàn)的方法,其特征在于,在反過來向所述應(yīng)用確認(rèn)成功以前,將所述I/O請求中的應(yīng)用寫入提交給所述團(tuán)塊存儲。
8.如權(quán)利要求8所述的計算機(jī)實現(xiàn)的方法,其特征在于,通過在指定的時間段以后期滿的團(tuán)塊租賃向應(yīng)用提供對所述團(tuán)塊的獨占寫入訪問,并且所述應(yīng)用有條件地基于所述租賃的有效性對所述團(tuán)塊進(jìn)行寫入,而其他應(yīng)用被允許從所述團(tuán)塊讀取。
9.一個或多個存儲指令以執(zhí)行方法的計算機(jī)可讀介質(zhì),該方法用于作為云計算平臺中的團(tuán)塊來管理虛擬硬盤驅(qū)動器,該方法包括從在所述云計算平臺中的虛擬機(jī)上執(zhí)行的應(yīng)用接收對虛擬硬盤驅(qū)動器的I/O請求;以及由驅(qū)動程序管理對所述虛擬硬盤驅(qū)動器的I/o請求,其中所述驅(qū)動程序?qū)ο蛩鰣F(tuán)塊存儲中的團(tuán)塊的重疊I/o請求進(jìn)行排序,并且將不重疊的I/O請求并行地傳送給所述團(tuán)塊存儲中的團(tuán)塊。
10.如權(quán)利要求9所述的計算機(jī)可讀介質(zhì),其特征在于,將序列號與所述I/O請求相關(guān)聯(lián)以防止對仍然處于所述云計算平臺內(nèi)的相同數(shù)據(jù)的較老陳舊寫入重寫在先寫入,并且所述驅(qū)動程序增加所述序列號以忽略未被所述團(tuán)塊存儲確認(rèn)的在先寫入。
11.如權(quán)利要求9所述的計算機(jī)可讀介質(zhì),其特征在于,還包括用寫入請求更新所述虛擬機(jī)上的本地高速緩存,其中對所述本地高速緩存的更新要么在從所述本地存儲接收到確認(rèn)以后進(jìn)行,要么與對所述團(tuán)塊存儲的寫入并行地進(jìn)行,但是所述更新在從所述團(tuán)塊存儲接收到確認(rèn)以后可用。
12.如權(quán)利要求11所述的計算機(jī)可讀介質(zhì),其特征在于,在應(yīng)用或虛擬機(jī)故障以后,在所述高速緩存和團(tuán)塊不一致時轉(zhuǎn)儲清除所述本地高速緩存的全部或一部分。
13.一種作為團(tuán)塊管理虛擬硬盤驅(qū)動器的云計算平臺,所述云計算平臺包括結(jié)構(gòu)計算機(jī),所述結(jié)構(gòu)計算機(jī)被配置為執(zhí)行實現(xiàn)應(yīng)用的虛擬機(jī),所述應(yīng)用訪問虛擬硬盤驅(qū)動器以讀取和寫入數(shù)據(jù);以及團(tuán)塊存儲,所述團(tuán)塊存儲被配置為存儲作為虛擬硬盤驅(qū)動器被展示給所述應(yīng)用的團(tuán)塊,其中不同的應(yīng)用編程接口和語義實現(xiàn)對所述團(tuán)塊和虛擬硬盤驅(qū)動器的訪問。
14.如權(quán)利要求13所述的云計算系統(tǒng),其特征在于,所述結(jié)構(gòu)計算機(jī)包括高速緩存團(tuán)塊數(shù)據(jù)的本地高速緩存、存儲團(tuán)塊命令的團(tuán)塊庫、以及將虛擬硬盤驅(qū)動器I/O指令翻譯成團(tuán)塊命令的驅(qū)動程序,所述本地高速緩存為每個數(shù)據(jù)塊存儲循環(huán)冗余校驗碼以在使用所述數(shù)據(jù)塊以前確定在所述數(shù)據(jù)塊中是否存在錯誤,并且團(tuán)塊用于同步所述本地高速緩存以允許所述應(yīng)用使用存儲和在所述本地高速緩存中的數(shù)據(jù)來完成請求。
15.如權(quán)利要求13所述的云計算系統(tǒng),其特征在于,由應(yīng)用租賃所述團(tuán)塊一指定時間段,并且所述應(yīng)用連續(xù)地續(xù)訂所述租賃以保持訪問與所述團(tuán)塊相對應(yīng)的虛擬硬盤驅(qū)動器。
全文摘要
提供了具有計算機(jī)可讀介質(zhì)的云計算平臺,所述計算機(jī)可讀介質(zhì)執(zhí)行用于作為團(tuán)塊管理虛擬硬盤驅(qū)動器的方法。該云計算平臺包括結(jié)構(gòu)計算機(jī)和團(tuán)塊存儲。結(jié)構(gòu)計算機(jī)執(zhí)行虛擬機(jī),所述虛擬機(jī)實現(xiàn)訪問虛擬硬盤驅(qū)動器的一個或多個應(yīng)用。通過團(tuán)塊接口從團(tuán)塊存儲中的團(tuán)塊訪問虛擬硬盤驅(qū)動器中的數(shù)據(jù)。團(tuán)塊存儲與驅(qū)動程序?qū)?,所述?qū)動程序在訪問虛擬硬盤驅(qū)動器中的數(shù)據(jù)時將針對虛擬硬盤驅(qū)動器的一些應(yīng)用輸入/輸出(I/O)請求翻譯成團(tuán)塊命令。
文檔編號G06F13/14GK102612686SQ201080051695
公開日2012年7月25日 申請日期2010年10月29日 優(yōu)先權(quán)日2009年11月16日
發(fā)明者A·J·愛德華茲, A·恩吉尼亞, B·G·卡爾德, S·阿拉法, 左鑰, 王炬 申請人:微軟公司