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