虛擬盤存儲技術的制作方法
【專利摘要】在一個示例性實施例中,可以為虛擬盤文件指派標識符,并且依賴于所述虛擬盤文件的虛擬盤文件可以包括所述標識符的拷貝。如果所述虛擬盤文件被打開并且數(shù)據(jù)被修改從而導致虛擬盤區(qū)段的內(nèi)容發(fā)生改變,則可以改變所述標識符。如果所述虛擬盤文件和依賴性的虛擬盤文件被用來實例化虛擬盤,則可以檢測到標識符之間的差異,其表明所述虛擬盤可能被破壞的事實。在構成本發(fā)明的一部分的詳細描述部分、權利要求書和附圖中還描述了其他技術。
【專利說明】虛擬盤存儲技術
【背景技術】
[0001]存儲虛擬化技術允許把邏輯存儲與物理存儲分開。對應于存儲虛擬化的一種示例性使用情況是在虛擬機內(nèi)。虛擬化軟件層(典型地,被稱作管理程序或虛擬機監(jiān)視器)被安裝在計算機系統(tǒng)上,并且控制虛擬機與物理硬件交互的方式。由于訪客操作系統(tǒng)典型地被編碼成對于物理硬件施行排他性控制,因此虛擬化軟件可以被配置成細分物理硬件的資源,并且在虛擬機內(nèi)模擬物理硬件的存在。對應于存儲虛擬化的另一種使用情況是在被配置成實施存儲陣列的計算機系統(tǒng)內(nèi)。在這種情況下,可以利用iSCSI協(xié)議等等將物理計算機系統(tǒng)或虛擬機連接到存儲陣列。
[0002]可以使用存儲應對模塊來模擬對應于虛擬或物理機的存儲。舉例來說,存儲應對模塊可以通過對一個或更多虛擬盤文件進行讀取和寫入來應對由虛擬或物理機發(fā)出的存儲IO工作,所述虛擬盤文件可以被用來描述(即存儲)虛擬盤的區(qū)段(extent),即例如塊之類的連續(xù)存儲區(qū)域。同樣地,存儲應對程序可以通過把對應于虛擬盤的比特組合格式(bitpattern)數(shù)據(jù)寫入到一個或更多虛擬盤文件來對寫請求做出響應,并且通過讀取存儲在一個或更多虛擬盤文件中的比特組合格式來對讀取請求做出響應。
【發(fā)明內(nèi)容】
[0003]在一個示例性實施例中,可以為虛擬盤文件指派標識符,并且依賴于該虛擬盤文件的虛擬盤文件可以包括所述標識符的拷貝。如果所述虛擬盤文件被打開并且數(shù)據(jù)被修改從而導致虛擬盤區(qū)段的內(nèi)容發(fā)生改變,則可以改變所述標識符。如果所述虛擬盤文件和依賴性的虛擬盤文件被用來實例化虛擬盤,則可以檢測到標識符之間的差異,其表明所述虛擬盤可能被破壞的事實。
[0004]在同一個或另一個示例性實施例中,可以保存對應于一組虛擬盤區(qū)段的規(guī)范化比特圖(bitmap)。可以把標識符存儲在虛擬盤文件中,并且可以把該標識符的拷貝與所述規(guī)范化比特圖相關聯(lián)。當對所述虛擬盤文件做出修改時,可以更新所述標識符。如果所述規(guī)范化比特圖準確地反映出對應于所述一組虛擬盤區(qū)段的扇區(qū)比特圖,則可以更新與所述規(guī)范化比特圖相關聯(lián)的所述標識符的拷貝。當在后來的某一時間打開虛擬盤文件時,這兩個標識符的匹配表明所述規(guī)范化比特圖準確地反映出對應于所述一組虛擬盤區(qū)段的扇區(qū)比特圖,并且可以使用該比特圖。除了前述內(nèi)容之外,在權利要求書、詳細描述部分和附圖中還描述了其他技術。
[0005]本領域技術人員可以認識到,本公開的一個或更多的各個方面可以包括但不限于用于實施這里涉及的方面的電路和/或編程;取決于系統(tǒng)設計者的設計選擇,所述電路和/或編程可以實際上是被配置成實施這里涉及的方面的硬件、軟件和/或固件的任意組合。
[0006]前面是概要,因此不可避免地包含對于細節(jié)的簡化、一般化和省略。本領域技術人員將認識到,所述概要僅僅是說明性的,而不意圖以任何方式做出限制。
【專利附圖】
【附圖說明】[0007]圖1描繪出計算機系統(tǒng)的高層級方框圖。
[0008]圖2描繪出對應于虛擬化軟件程序的一種示例性架構的高層級方框圖。
[0009]圖3描繪出對應于虛擬化軟件程序的一種可替換架構的高層級方框圖。
[0010]圖4描繪出被配置成實施虛擬盤的計算機系統(tǒng)的較低層級方框圖。
[0011]圖5A描繪出被配置成實施虛擬盤的計算機系統(tǒng)的較低層級方框圖。
[0012]圖5B描繪出被配置成實施虛擬盤的計算機系統(tǒng)的較低層級方框圖。
[0013]圖6描繪出差異化虛擬盤文件的高層級圖示。
[0014]圖7描繪出虛擬盤與虛擬盤文件之間的關系。
[0015]圖8描繪出規(guī)范化比特圖與扇區(qū)比特圖之間的關系。
[0016]圖9描繪出虛擬盤文件與復合扇區(qū)比特圖之間的關系。
[0017]圖10描繪出可以具體實現(xiàn)在計算機可讀存儲介質內(nèi)并且/或者由計算機系統(tǒng)執(zhí)行的操作規(guī)程。
[0018]圖11描繪出可以結合圖10所圖示的那些操作執(zhí)行的附加操作。
[0019]圖12描繪出可以具體實現(xiàn)在計算機可讀存儲介質內(nèi)并且/或者由計算機系統(tǒng)執(zhí)行的操作規(guī)程。
[0020]圖13描繪出可以結合圖12所圖示的那些操作執(zhí)行的附加操作。
[0021]圖14描繪出可以具體實現(xiàn)在計算機可讀存儲介質內(nèi)并且/或者由計算機系統(tǒng)執(zhí)行的操作規(guī)程。
[0022]圖15描繪出可以結合圖14所圖示的那些操作執(zhí)行的附加操作。
【具體實施方式】
[0023]通篇所使用的術語電路可以包括例如硬件中斷控制器、硬驅動器、網(wǎng)絡適配器、圖形處理器、基于硬件的視頻/音頻編解碼器之類的硬件組件,以及用來操作這樣的硬件的固件。術語電路還可以包括通過固件和/或軟件配置的微處理器、專用集成電路和處理器,比如讀取并執(zhí)行指令的執(zhí)行單元??梢酝ㄟ^從例如RAM、ROM、固件和/或大容量存儲裝置之類的存儲器加載的指令來配置(多個)處理器等等,并且所述指令可以具體實現(xiàn)可操作來配置處理器以施行一項或更多項功能的邏輯。電路的具體實例可以包括硬件與軟件的組合。在該具體實例中,實施者可以編寫具體實現(xiàn)邏輯的源代碼,其隨后被匯編成可以由處理器執(zhí)行的機器可讀代碼。
[0024]本領域技術人員可以認識到,現(xiàn)有技術的狀態(tài)已經(jīng)發(fā)展到在用硬件實施的功能與用軟件實施的功能(其隨后由硬件執(zhí)行)之間幾乎沒有差別的階段。因此,用硬件或軟件實施的功能的描述僅僅是一種設計選擇。簡而言之,由于軟件處理可以被轉換成等效的硬件結構并且硬件結構本身可以被轉換成等效的軟件處理,因此被描述為用指令具體實現(xiàn)的功能可以可替換地用硬件來實施,反之亦然。
[0025]所公開的主題可以使用一個或更多計算機系統(tǒng)。圖1和后面的討論意圖提供可以在其中實施所公開的主題的適當計算環(huán)境的一般性簡要描述。
[0026]現(xiàn)在參照圖1,描繪出示例性計算系統(tǒng)100。計算機系統(tǒng)100可以包括處理器102,例如執(zhí)行核心。雖然圖示出一個處理器102,但是在其他實施例中,計算機系統(tǒng)100可以具有多個處理器,例如每個處理器基板有多個執(zhí)行核心和/或可以各自具有多個執(zhí)行核心的多個處理器基板。如圖所示,各種計算機可讀存儲介質110可以通過一條或更多條系統(tǒng)總線互連,所述系統(tǒng)總線把各種系統(tǒng)組件耦合到處理器102。所述系統(tǒng)總線可以是幾種總線結構當中的任一種,其中包括利用多種總線架構當中的任一種的存儲器總線或存儲器控制器、外圍總線以及局部總線。在示例實施例中,計算機可讀存儲介質110例如可以包括隨機存取存儲器(RAM) 104,例如電動機械硬驅動器、固態(tài)硬驅動器等存儲設備106,例如閃速RAM或ROM之類的固件108,以及例如⑶-ROM、軟盤、DVD、閃速驅動器、外部存儲設備等可移除存儲設備118。本領域技術人員應當認識到,可以使用其他類型的計算機可讀存儲介質,比如磁盒、閃存卡和/或數(shù)字視頻盤。
[0027]計算機可讀存儲介質110可以提供對于處理器可執(zhí)行指令122、數(shù)據(jù)結構、程序模塊以及用于計算機100的其他數(shù)據(jù)(比如可執(zhí)行指令)的非易失性和易失性存儲?;据斎?輸出系統(tǒng)(BIOS) 120可以被存儲在固件108中,基本輸入/輸出系統(tǒng)(BIOS) 120包含有助于例如在啟動過程中在計算機系統(tǒng)100內(nèi)的元件之間傳送信息的基本例程。許多程序可以被存儲在固件108、存儲設備106、RAM 104和/或可移除存儲設備118上,并且由包括操作系統(tǒng)和/或應用程序的處理器102執(zhí)行。在示例性實施例中,計算機可讀存儲介質110可以存儲虛擬盤解析器404 (在后面的段落中將對其更加詳細地進行描述),其可以由處理器102執(zhí)行從而把計算機系統(tǒng)100轉換成被配置用于特定目的的計算機系統(tǒng),即根據(jù)本文獻中描述的技術來配置的計算機系統(tǒng)。
[0028]可以由計算機100通過輸入設備116接收命令和信息,所述輸入設備可以包括但不限于鍵盤和指示設備。其他輸入設備可以包括麥克風、操縱桿、游戲板、掃描儀等等。這些和其他輸入設備常常通過耦合到系統(tǒng)總線的串行端口接口連接到處理器102,但是也可以通過其他接口連接,比如并行端口、游戲端口或通用串行總線(USB)。還可以通過接口把顯示器或其他類型的顯示設備連接到系統(tǒng)總線,所述接口比如是可以作為圖形處理器單元112的一部分或者與之連接的視頻適配器。除了顯示器之外,計算機典型地包括其他外圍輸出設備,比如揚聲器和打印機(未示出)。圖1的示例性系統(tǒng)還可以包括主機適配器、小型計算機系統(tǒng)接口(SCSI)總線以及連接到SCSI總線的外部存儲設備。
[0029]計算機系統(tǒng)100可以利用去到一臺或更多臺遠程計算機(比如遠程計算機)的邏輯連接而操作在網(wǎng)絡化環(huán)境中。所述遠程計算機可以是另一臺計算機、服務器、路由器、網(wǎng)絡PC、對等設備或者其他常用網(wǎng)絡節(jié)點,并且典型地可以包括以上相對于計算機系統(tǒng)100描述的元件中的許多或所有元件。
[0030]當被用在LAN或WAN聯(lián)網(wǎng)環(huán)境中時,計算機系統(tǒng)100可以通過網(wǎng)絡接口卡114連接到LAN或WAN。NIC 114可以是內(nèi)部的或外部的,可以連接到系統(tǒng)總線。在網(wǎng)絡化環(huán)境中,相對于計算機系統(tǒng)100描繪的程序模塊或其某些部分可以被存儲在遠程存儲器存儲設備中。應當認識到,這里描述的網(wǎng)絡連接是示例性的,并且可以使用在計算機之間建立通信鏈接的其他方式。此外,雖然設想到本公開的許多實施例特別良好地適用于計算機化的系統(tǒng),但是本文獻絕不意圖把本公開限制到這樣的實施例。
[0031]轉到圖2和圖3,圖示出了可以被用來生成用于虛擬桌面會話的虛擬機的示例性虛擬化平臺。在該實施例中,管理程序微核202可以被配置成控制并仲裁對于計算機系統(tǒng)200的硬件的訪問。管理程序微核202可以生成被稱作分區(qū)的執(zhí)行環(huán)境,比如子分區(qū)I到子分區(qū)N (其中N是大于I的整數(shù))。在這里,子分區(qū)是由管理程序微核202支持的基本隔離單位。管理程序微核202可以隔離一個分區(qū)中的處理以免其訪問另一個分區(qū)的資源。每一個子分區(qū)可以被映射到處于管理程序微核202控制下的硬件資源集合,比如存儲器、設備、處理器循環(huán)等等。在一些實施例中,管理程序微核202可以是獨立的軟件產(chǎn)品、操作系統(tǒng)的一部分、被嵌入在主板的固件內(nèi)、專門的集成電路或者其組合。
[0032]管理程序微核202可以通過限制訪客操作系統(tǒng)對物理計算機系統(tǒng)中的存儲器的可視來施行分區(qū)。當管理程序微核202實例化虛擬機時,其可以把系統(tǒng)物理存儲器(SPM)的頁面(例如具有起始和結束地址的固定長度的存儲器塊)分配給所述虛擬機以作為訪客物理存儲器(GPM)。在這里,訪客對于系統(tǒng)存儲器的受限制可視由管理程序微核202控制。術語訪客物理存儲器是從虛擬機的角度描述存儲器頁面的簡略方式,并且術語系統(tǒng)物理存儲器是從物理系統(tǒng)的角度描述存儲器頁面的簡略方式。因此,被分配給虛擬機的存儲器頁面將具有訪客物理地址(由虛擬機使用的地址)和系統(tǒng)物理地址(該頁面的實際地址)。
[0033]訪客操作系統(tǒng)可以虛擬化訪客物理存儲器。虛擬存儲器是一種管理技術,其允許操作系統(tǒng)超量調配存儲器并且針對連續(xù)工作存儲器給出應用唯一訪問。在虛擬化環(huán)境中,訪客操作系統(tǒng)可以使用一個或更多頁面表來把已知為虛擬訪客地址的虛擬地址轉換成訪客物理地址。在該例中,存儲器地址可以具有訪客虛擬地址、訪客物理地址和系統(tǒng)物理地址。
[0034]在所描繪的實例中,父分區(qū)組件(其也可以被視為類似于Xen的開源管理程序的域O)可以包括主機204。主機204可以是操作系統(tǒng)(或者配置實用程序集合),并且主機204可以被配置成利用虛擬化服務提供者228 (VSP)為在子分區(qū)1-N中執(zhí)行的訪客操作系統(tǒng)提供資源。VSP 228在開源社區(qū)中典型地被稱作后端驅動器,其可以被用來通過虛擬化服務客戶端(VSC)(其典型地被稱作在開源社區(qū)中的前端驅動器或準虛擬化設備)多路復用去到硬件資源的接口。如圖所示,虛擬化服務客戶端在訪客操作系統(tǒng)的情境內(nèi)執(zhí)行。但是這些驅動器與訪客中的其余驅動器的不同之處在于,其可以與管理程序一起提供而不是與訪客一起提供。在一個示例性實施例中,被虛擬化服務提供者228使用來與虛擬化服務客戶端216和218通信的路徑可以被視為虛擬化路徑。
[0035]如圖所示,模擬器234 (例如虛擬化IDE設備、虛擬化視頻適配器、虛擬化NIC等等)可以被配置成在主機204內(nèi)運行,并且被附屬于可用于訪客操作系統(tǒng)220和222的資源。舉例來說,當訪客OS涉及存儲器位置(其被映射到將是某一設備的寄存器所處的位置)或者存儲器映射的設備時,管理程序微核202可以攔截所述請求并且把訪客嘗試寫的數(shù)值傳遞到相關聯(lián)的模擬器。在這里,該例中的資源可以被視為虛擬設備所處的位置。以這種方式使用模擬器可以被認為是模擬路徑。模擬路徑與虛擬化路徑相比的效率低下,這是因為與在VSP與VSC之間傳遞消息相比,其需要更多CPU資源來模擬設備。舉例來說,為了通過模擬路徑把數(shù)值寫入到盤上所需要的針對映射到寄存器的存儲器的數(shù)以百計的動作可以被簡化成在虛擬化路徑中從VSC傳遞到VSP的單一消息。
[0036]每一個子分區(qū)可以包括一個或更多虛擬處理器(230和232),訪客操作系統(tǒng)(220和222)可以管理及調度將在所述虛擬處理器上執(zhí)行的線程。通常來說,虛擬處理器是為物理處理器的表示提供特定架構的可執(zhí)行指令和相關聯(lián)的狀態(tài)信息。舉例來說,一個虛擬機可以具有含Intel x86處理器的特性的虛擬處理器,而另一個虛擬處理器則可以具有PowerPC處理器的特性。該例中的虛擬處理器可以被映射到計算機系統(tǒng)的處理器,從而使得實施虛擬處理器的指令將被處理器支持。因此,在包括多個處理器的一個實施例中,虛擬處理器可以由處理器同時執(zhí)行,而其他處理器則例如執(zhí)行管理程序指令。分區(qū)中的虛擬處理器與存儲器的組合可以被認為是虛擬機。
[0037]訪客操作系統(tǒng)(220和222)可以是任何操作系統(tǒng),比如來自Microsoft?、Apple?、開源社區(qū)等等的操作系統(tǒng)。訪客操作系統(tǒng)可以包括用戶/內(nèi)核操作模式,并且可以具有能夠包括調度器、存儲器管理器等等的內(nèi)核。通常來說,內(nèi)核模式可以包括處理器中的執(zhí)行模式,其授權訪問至少有特權的處理器指令。每一個訪客操作系統(tǒng)可以具有相關聯(lián)的文件系統(tǒng),所述文件系統(tǒng)上可以存儲有應用,比如終端服務器、電子商務服務器、電子郵件服務器等等以及訪客操作系統(tǒng)本身。訪客操作系統(tǒng)可以調度線程以在虛擬處理器上執(zhí)行,并且這樣的應用的實例可以被實施。
[0038]現(xiàn)在參照圖3,該圖描繪出與圖2的那些組件類似的組件;但是在該示例實施例中,管理程序302可以包括微核組件和類似于圖2的主機204中的那些組件的組件,比如虛擬化服務提供者228和設備驅動器224,而管理操作系統(tǒng)304則例如可以包含被用來配置管理程序302的配置實用程序。在該架構中,管理程序302可以施行與圖2的管理程序微核202和主機204相同或類似的功能。圖3的管理程序302可以是獨立的軟件產(chǎn)品、操作系統(tǒng)的一部分、嵌入在主板的固件內(nèi),并且/或者管理程序302的一部分可以由專門的集成電路實施。
[0039]現(xiàn)在轉到圖4,該圖描述了計算機系統(tǒng)400,其圖示出了可以被用來實施在本文獻中描述的技術的組件的高層級方框圖。簡而言之,計算機系統(tǒng)400可以包括類似于前面關于圖1到3描述的那些組件的組件。圖4示出了虛擬化系統(tǒng)420,其可以被視為由圖2或圖3圖示出的虛擬化平臺的高層級表示。舉例來說,虛擬化系統(tǒng)420可以被視為由管理程序微核202和主機環(huán)境204提供的特征的組合的高層級表示??商鎿Q地,虛擬化系統(tǒng)420可以被視為管理程序302和管理OS 304的高層級表示。因此,在本文獻中通篇使用術語“虛擬化系統(tǒng)420”表明可以在任何類型的虛擬化軟件層內(nèi)或者在任何類型的虛擬化平臺中實施在后面的段落中描述的虛擬盤技術。
[0040]虛擬盤解析器404在特定的示例實施例中可以是可執(zhí)行指令,其可以被用來代表虛擬機從虛擬盤文件實例化虛擬盤以及應對存儲10。如圖所示,虛擬盤解析器404可以打開諸如(多個)虛擬盤文件406之類的一個或更多虛擬盤文件并且生成虛擬盤402。
[0041]虛擬盤解析器404可以通過虛擬化系統(tǒng)文件系統(tǒng)408從存儲設備106獲得(多個)虛擬盤文件406。簡而言之,虛擬化系統(tǒng)文件系統(tǒng)408代表組織虛擬化系統(tǒng)420的計算機文件和數(shù)據(jù)(比如(多個)虛擬盤文件406)的可執(zhí)行指令。虛擬化系統(tǒng)文件系統(tǒng)408可以把該數(shù)據(jù)存儲在固定尺寸物理區(qū)段(即物理存儲設備上的連續(xù)存儲區(qū)域)的陣列中。在一個具體實例中,區(qū)段可以是簇,即具有設定長度的比特字節(jié)序列。示例性的簇尺寸典型地是處于512字節(jié)到64千字節(jié)之間的2的乘方。在一種具體配置中,簇尺寸可以是4千字節(jié)。
[0042]當接收到用于打開虛擬盤文件406的請求時,虛擬化系統(tǒng)文件系統(tǒng)408確定該文件在盤上所處的位置,并且向盤設備驅動器發(fā)出IO工作以便從該盤的一個或更多物理區(qū)段讀取數(shù)據(jù)。由文件系統(tǒng)408發(fā)出的IO工作確定描述虛擬盤文件406的永久性拷貝在存儲設備106上的位置的盤偏移量和長度,并且向存儲設備106發(fā)出IO工作。由于關于存儲設備如何操作的語義,寫IO工作可以被緩沖在由高速緩存器454代表的易失性存儲器的一個或更多級別的高速緩存器中,直到存儲設備106的電路確定訪問永久性存儲單元460 (例如磁盤、閃存單元等等)上的該位置為止,并且可以把表明(多個)虛擬盤文件406的所述永久性拷貝的新內(nèi)容的所緩沖的比特組合格式寫入到永久性存儲單元460中。
[0043]虛擬盤解析器404可以獲得表示(多個)虛擬盤文件406的比特組合格式,并且把所述(多個)虛擬盤文件406中的有效載荷(例如用戶數(shù)據(jù))暴露成包括多個虛擬盤區(qū)段的盤。在一個實施例中,這些虛擬盤區(qū)段可以是尺寸為512千字節(jié)上至64兆字節(jié)的固定尺寸塊并且被劃分成多個扇區(qū);但是在另一個實施例中,所述虛擬盤區(qū)段可以是可變尺寸的區(qū)段。在一種示例性配置中,在引導訪客操作系統(tǒng)412之前,設立與所模擬或所提示的存儲控制器和虛擬盤的所模擬或所提示的方面有關的資源,以使得在虛擬機410的訪客物理地址空間內(nèi)實施具有存儲器映射的寄存器的所模擬的存儲控制器。引導代碼可以運行并引導訪客操作系統(tǒng)412。虛擬化系統(tǒng)420可以檢測到對訪問訪客物理地址空間的該區(qū)域的嘗試,并且返回使得訪客操作系統(tǒng)412確定有存儲設備附屬于所模擬的存儲控制器的結果。作為響應,訪客操作系統(tǒng)412可以加載驅動器(準虛擬化驅動器或常規(guī)驅動器),并且使用該驅動器向所檢測到的存儲設備發(fā)出存儲IO請求。虛擬化系統(tǒng)420可以把所述存儲IO請求路由到虛擬盤解析器404。
[0044]在訪客操作系統(tǒng)412運行之后,其可以通過文件系統(tǒng)414向虛擬盤402發(fā)出IO工作,文件系統(tǒng)414與虛擬化系統(tǒng)文件系統(tǒng)414的相似之處在于,其組織訪客操作系統(tǒng)412的計算機文件和數(shù)據(jù)以及安裝在訪客操作系統(tǒng)412上的應用。訪客操作系統(tǒng)412可以與虛擬盤402交互,其方式類似于操作系統(tǒng)與物理存儲設備交互的方式,并且所述IO工作最終被路由到虛擬盤解析器404。虛擬盤解析器404可以包括用于確定如何按照模擬物理存儲設備的方式對IO工作做出響應的邏輯。舉例來說,虛擬盤解析器404可以從(多個)虛擬盤文件406讀取數(shù)據(jù)并且將數(shù)據(jù)寫入(多個)虛擬盤文件406。寫入到(多個)虛擬盤文件406的數(shù)據(jù)轉而被路由經(jīng)過虛擬化系統(tǒng)文件系統(tǒng)408,并且被提交到存儲在永久性存儲單元460上或者處于其中的(多個)虛擬盤文件406的永久性拷貝。
[0045]簡要參照圖5A,該圖圖示出了用于實施在本文獻中描述的技術的一種替換架構。如圖5所示,虛擬盤解析器404還可以被實施在操作系統(tǒng)502中,例如由Microsoft?提供的操作系統(tǒng)。在該例中,虛擬盤解析器404可以被配置成運行在存儲服務器500上,存儲服務器500可以包括類似于圖1的計算機系統(tǒng)100的組件。在該例中,存儲服務器500可以包括物理存儲設備510的陣列,并且可以被配置成使得存儲裝置可用于服務器,從而使得所述存儲裝置看起來局部附屬于操作系統(tǒng)508。虛擬盤解析器404可以按照關于圖4描述的相同方式操作;其差別在于在該配置中,由文件系統(tǒng)414發(fā)出的讀取/寫入IO工作可以通過網(wǎng)絡連接被路由到虛擬盤解析器404。
[0046]簡要參照圖5B,該圖圖示出了用于實施在本文獻中描述的技術的又一種架構。圖5B與圖5A的類似之處在于,虛擬盤解析器404被實施在操作系統(tǒng)502中,并且計算機系統(tǒng)512可以包括類似于圖1的計算機系統(tǒng)100的組件。但是該例中的差別在于,該圖圖示出了回送附屬的虛擬盤402。包括例如應用424之類的應用的文件系統(tǒng)414可以被存儲在虛擬盤402中,并且(多個)虛擬盤文件406可以被存儲在計算機系統(tǒng)文件系統(tǒng)514中。
[0047]現(xiàn)在將注意力轉到虛擬盤402,雖然其可以由單一虛擬盤文件實施,但是在其他配置中,也可以使用一組差異化虛擬盤文件來產(chǎn)生虛擬盤402。圖6圖示出了可以被虛擬盤解析器404使用來把虛擬盤402實施為差異化盤的示例性虛擬盤文件鏈條。通常來說,與父圖像相比,差異化虛擬盤文件將虛擬盤的當前狀態(tài)描繪成被修改區(qū)段的集合。父圖像可以是另一個差異化虛擬盤文件或者基礎虛擬盤文件。
[0048]在一種示例性配置中,父虛擬盤文件與子虛擬盤文件之間的關聯(lián)可以被存儲在子內(nèi)。具體來說,子可以包括父的標識符以及描述父位置的數(shù)值。當啟動虛擬機時,虛擬盤解析器404可以接收描述鏈條中的最后一個虛擬盤文件的信息,也就是說虛擬盤文件612是包括虛擬盤文件612、610、606和600的鏈條中的最后一個虛擬盤文件,并且虛擬盤解析器404打開該文件。該文件可以包括其父(即虛擬盤文件610)的標識符以及去到其父的路徑。虛擬盤解析器404可以查找并打開父,并且如此這般,直到查找到并打開基礎虛擬盤文件為止。
[0049]虛擬盤解析器404可以使用表明在父虛擬盤文件中是否存在或存儲有數(shù)據(jù)的信息。典型地,鏈條中的最后一個虛擬盤文件作為讀取/修改被打開,而其他虛擬盤文件作為只讀被打開。因此,典型地,對鏈條中的最后一個虛擬盤文件進行寫入。在關于所述數(shù)據(jù)所處位置的信息沒有被高速緩存的情況下,類似地,首先將讀操作指引至鏈條中的最后一個虛擬盤文件,并且虛擬盤解析器404將按照從最后一個虛擬盤文件到基礎虛擬盤文件的邏輯順序邏輯地搜索虛擬盤文件,直到找到所述數(shù)據(jù)為止。在一個具體實例中,對應于虛擬盤文件(例如虛擬盤文件612)的分配表(未示出)可以包括這樣的狀態(tài)信息:其表明所述虛擬盤區(qū)段是由該虛擬盤文件的一部分定義,或者該虛擬盤區(qū)段是否是透明的(例如由沿著鏈條更進一步的不同的虛擬盤文件定義)。在一種實現(xiàn)方式中,虛擬盤解析器404可以確定該虛擬盤區(qū)段是否透明,以及訪問對應于鏈條中的下一個虛擬盤文件(例如虛擬盤文件610)的分配表,并且如此這般,直到查找到鏈條中的定義了所述數(shù)據(jù)的虛擬盤文件為止。
[0050]問題在于,用戶可能會有意或者無意地打開作為父的虛擬盤文件并且修改影響用戶有效載荷的數(shù)據(jù)。這樣又可能會影響使用該文件作為鏈條的一部分的任何虛擬盤,并且可能導致所述虛擬盤變?yōu)椴豢捎?。舉例來說,假設用戶打開了虛擬盤文件610并且應用了補丁或者對其進行了碎片整理。子虛擬盤文件612在該例中可能依賴于虛擬盤文件610中的現(xiàn)在已被移動或已失去的數(shù)據(jù)。當對應于子虛擬盤文件612的分配表指引虛擬盤解析器404從虛擬盤文件610進行讀取時,虛擬盤解析器404可能返回錯誤的數(shù)據(jù)并且導致由虛擬盤文件600、606、610和612的組合描述的訪客操作系統(tǒng)變?yōu)椴豢捎谩?br>
[0051]在一個示例性實施例中,在創(chuàng)建各個虛擬盤文件時可以把唯一標識符插入其中。在創(chuàng)建子虛擬盤文件時,還可以把在創(chuàng)建子時的其父的唯一標識符的拷貝插入到該子中。因此,在創(chuàng)建虛擬盤文件604時,給予其唯一標識符(唯一標識符3),并且將其父的唯一標識符(唯一標識符I)插入到虛擬盤文件604中。
[0052]在一個示例性實施例中,虛擬盤解析器404可以被配置成在針對虛擬盤文件的寫入將改變虛擬盤區(qū)段和/或虛擬盤的尺寸的情況下改變虛擬盤文件的唯一標識符??赡軐е绿摂M盤解析器404改變唯一標識符的實例是,例如,改變了用戶有效載荷、盤標識符的結束或者分配表內(nèi)的導致讀取操作被指引到不同部分的條目。當虛擬盤解析器404打開虛擬盤文件鏈條時,其可以被配置成把虛擬盤文件的父的唯一標識符與存儲在子中的唯一標識符進行比較。差異反映出對該父做出了影響虛擬盤區(qū)段和/或虛擬盤尺寸的修改。
[0053]現(xiàn)在轉到圖7,該圖圖示出了虛擬盤文件402與構成虛擬盤402的一個或更多虛擬盤文件之間的關系。在該例中圖示出了兩個虛擬盤文件(700和702);但是所圖示出的該例并非限制性的,并且可以使用更多的虛擬盤文件來實施虛擬盤402。如圖7所示,每一個虛擬盤文件可以包括元數(shù)據(jù)704和706。元數(shù)據(jù)706對應于虛擬盤文件702,其可以包括被存儲為唯一標識符708的唯一標識符。元數(shù)據(jù)704對應于虛擬盤文件700,其可以包括被存儲為父唯一 ID 710的對應于虛擬盤文件702的唯一標識符的拷貝,以及被存儲為唯一 ID 712的其自身的唯一標識符。在一個示例性實施例中,如果父虛擬盤文件702被打開并寫入從而導致虛擬盤區(qū)段的有效載荷和/或虛擬盤的尺寸發(fā)生改變,則虛擬盤解析器404可以把被存儲為唯一標識符708的標識符改變到新的唯一標識符。如果虛擬盤解析器404隨后把被存儲為父唯一標識符710的標識符與被存儲為唯一標識符708的標識符進行比較,則二者將不匹配,并且可以確定虛擬盤402可能受到破壞。
[0054]此外,元數(shù)據(jù)706和704還可以包括被存儲為盤標識符(714和716)的標識符,其可以是在頁面#83請求等等中作為虛擬盤402的標識符被返回到訪客操作系統(tǒng)412的數(shù)值。在創(chuàng)建子虛擬盤文件時,被存儲為父的盤標識符的所述數(shù)值的拷貝可以被拷貝到所述子中,或者可以指派新的盤標識符。所述盤標識符可以被訪客操作系統(tǒng)412使用來識別虛擬盤,并且被討論以將其與所述唯一標識符進行區(qū)分。除了盤標識符之外,還可以把柱面、磁頭和扇區(qū)傳統(tǒng)信息(CHS信息718和720)存儲在元數(shù)據(jù)706和704中。所述CHS信息可以被用來把通過柱面、磁頭和扇區(qū)數(shù)值來表示IO的IO工作轉換成被表示為偏移量的IO工作。
[0055]繼續(xù)圖7的一般性總覽,該圖示出了虛擬盤402可以包括N個存儲區(qū)段(其中N是大于I的整數(shù)),并且在該具體實例中,虛擬盤402包括10個區(qū)段。虛擬盤402被圖示為包括對應于訪客操作系統(tǒng)412的不同文件和數(shù)據(jù)的比特組合格式,通過虛擬盤區(qū)段內(nèi)的不同圖案區(qū)分這些比特組合格式。
[0056]由于虛擬盤402不是物理存儲設備,因此對應于虛擬盤區(qū)段的底層有效載荷數(shù)據(jù)可以通過虛擬盤文件702和700內(nèi)的不同部分來“描述”,即被存儲在虛擬盤文件702和700內(nèi)的不同部分中。分配表416在計算機系統(tǒng)400處于操作中時可以被存儲在隨機存取存儲器中,其可以被保存在虛擬盤文件702的任何部分中并且可以跨越多個部分。簡而言之,每一個虛擬盤文件可以與分配表(未示出)相關聯(lián),所述分配表可以包括把虛擬盤區(qū)段關聯(lián)到虛擬盤文件702或700的部分的信息。
[0057]每一個虛擬盤區(qū)段可以與扇區(qū)比特圖相關聯(lián)。在一種示例性配置中,對應于虛擬盤區(qū)段的扇區(qū)比特圖可以被存儲在虛擬盤文件的被用來描述該虛擬盤區(qū)段的部分的開頭處。在一種可替換配置中,正如在描述圖9的段落中更加詳細地描述的那樣,對應于多個虛擬盤區(qū)段的各個扇區(qū)比特圖可以被聚合并且存儲在復合扇區(qū)比特圖中。針對相應的虛擬盤區(qū)段中的每一個扇區(qū),扇區(qū)比特圖可以包括一個字節(jié)。因此,如果一個區(qū)段是2兆字節(jié)并且每一個扇區(qū)是4千字節(jié),則每一個虛擬盤區(qū)段包括512個扇區(qū),并且每一個扇區(qū)比特圖將包括512個字節(jié)。I表明該扇區(qū)由子虛擬盤文件600描述,O表示該扇區(qū)由例如父的另一個虛擬盤文件描述。
[0058]由于從盤訪問扇區(qū)比特圖可能會對性能造成負面影響,因此在一個實施例中,虛擬盤解析器404可以被配置成生成規(guī)范化比特圖。規(guī)范化比特圖可以對于各個被完全描述的虛擬盤區(qū)段包括一個字節(jié)。如果虛擬盤區(qū)段的每一個扇區(qū)都存在,則該比特可以被設定到1,如果虛擬盤區(qū)段內(nèi)的任何扇區(qū)是透明的,則該比特可以被設定到O。因此,虛擬盤解析器404可以首先檢查規(guī)范化比特圖以便確定是否需要檢查扇區(qū)比特圖。如果規(guī)范化比特圖內(nèi)的條目是I,則不需要查詢扇區(qū)比特圖。
[0059]例如,轉到圖8,該圖示出了如何對于每一個虛擬盤區(qū)段生成扇區(qū)比特圖以及如何將其用來生成規(guī)范化比特圖的一個具體實例。圖8示出了 4個扇區(qū)比特圖表802、804、806和808,并且每一個扇區(qū)比特圖可以對于虛擬盤區(qū)段中的每一個扇區(qū)包括一個比特。圖8所圖示的扇區(qū)比特圖包括8個比特(并且每一個虛擬盤區(qū)段包括8個扇區(qū))以說明本文獻所描述的技術,并且其不是按比例繪制的。規(guī)范化比特圖810和812示出了可以用I來標記被完全描述的每一個虛擬盤區(qū)段。舉例來說,規(guī)范化比特圖810包括對應于虛擬盤區(qū)段I和虛擬盤區(qū)段2的比特,其表明這些虛擬盤區(qū)段被子虛擬盤文件600完全描述。
[0060]問題在于,并非所有虛擬盤解析器都可以被配置成使用規(guī)范化比特圖,并且這些規(guī)范化比特圖可能未被保存。為了克服這一限制,在一個示例性實施例中,虛擬盤解析器404可以被配置成把規(guī)范化比特圖存儲在虛擬盤文件中;但是由于并非所有虛擬盤解析器都理解或使用規(guī)范化比特圖并且虛擬盤解析器可能覆寫、刪除或者以其他方式使得表示存儲在虛擬盤文件406中的規(guī)范化比特圖的比特組合格式失效,因此虛擬盤解析器404可以被配置成在使用規(guī)范化比特圖之前對其進行認證。
[0061]在一個示例性實施例中,這些規(guī)范化比特圖可以由虛擬盤解析器404保存,并且虛擬盤解析器404可以被配置成在引導虛擬盤時對其進行認證。在一個實施例中,可以為每一個規(guī)范化比特圖指派規(guī)范化比特圖標識符(NB ID),其例如是隨機數(shù)值、序號、時間標記等等,可以被存儲在元數(shù)據(jù)704中。如圖所示,元數(shù)據(jù)704包括被存儲為NB ID 820的標識符以及被存儲為NB ID 822的標識符。此外,如果規(guī)范化比特圖的狀態(tài)準確地描述了與之相關聯(lián)的扇區(qū)比特圖,則還可以與每一個規(guī)范化比特圖相關聯(lián)地存儲所述標識符的拷貝。舉例來說,規(guī)范化比特圖810被示為包括被存儲為NB ID 814的標識符,并且規(guī)范化比特圖812被示為包括NB ID 816。雖然該圖圖示出NB ID被存儲在其對應的規(guī)范化比特圖內(nèi),但是并不一定要這樣存儲。相反其可以被存儲在虛擬盤文件700內(nèi)的任何位置處,比如存儲在BAT中。
[0062]當虛擬盤解析器404打開虛擬盤文件時,其可以使用NB ID來確定相關聯(lián)的規(guī)范化比特圖是否有效以及是否可以被使用。這樣,被配置成使用規(guī)范化比特圖的虛擬盤解析器就可以確定規(guī)范化比特圖是否有效以及虛擬盤文件是否仍然可以被不使用規(guī)范化比特圖的虛擬盤解析器使用。舉例來說,這兩個標識符匹配的事實表明規(guī)范化比特圖是有效的并且可以被使用,而不用必須重新生成規(guī)范化比特圖。
[0063]當虛擬盤解析器404在寫入/修改模式下打開虛擬盤文件之后(或者當檢測到第一次寫入時),虛擬盤解析器404可以被配置成把存儲在元數(shù)據(jù)中的標識符改變到新的標識符(例如其可以遞增序號),并且向存儲設備106發(fā)出表明所述更新的IO工作,從而可以保存針對標識符的所述改變。如果規(guī)范化比特圖準確地反映出其描述的扇區(qū)比特圖的狀態(tài),則還可以更新與規(guī)范化比特圖相關聯(lián)地存儲的標識符以匹配元數(shù)據(jù)。如果所述標識符不匹配,則虛擬盤解析器404可以重建規(guī)范化比特圖。
[0064]現(xiàn)在轉到圖9,該圖示出了在一個實施例中,對應于虛擬盤文件的多個虛擬盤區(qū)段的扇區(qū)比特圖可以被聚合并且存儲在復合扇區(qū)比特圖中。舉例來說,復合扇區(qū)比特圖900包括對應于虛擬盤文件702的虛擬盤區(qū)段0-3的扇區(qū)比特圖,并且復合扇區(qū)比特圖902包括對應于虛擬盤文件700的虛擬盤區(qū)段0-3的扇區(qū)比特圖。此外,可以利用前面描述的相同技術對于復合扇區(qū)比特圖生成規(guī)范化比特圖。其區(qū)別在于用來構造規(guī)范化比特圖的數(shù)據(jù)被聚合。
[0065]在一個示例性實施例中,復合扇區(qū)比特圖900和902可以被用來從被用來存儲對應于虛擬盤區(qū)段的有效載荷的部分的開頭去除扇區(qū)比特圖。這樣做的效果是使得所述有效載荷與底層存儲設備的扇區(qū)尺寸對準。此外,被用來構成復合扇區(qū)比特圖900和/或902的扇區(qū)比特圖的數(shù)目可以被選擇成至少等于由底層存儲設備使用的扇區(qū)尺寸的倍數(shù)。
[0066]圖9所示出的布置是示例性的而非按比例繪制的。相反,圖9被用來說明聚合對應于虛擬盤區(qū)段的扇區(qū)比特圖并且將其存儲在復合扇區(qū)比特圖的想法。在一個具體實例中,假設虛擬盤區(qū)段的尺寸為2mb,并且每一個扇區(qū)是4kb。這意味著每一個虛擬盤區(qū)段包括512個扇區(qū),并且對應于該虛擬盤區(qū)段的扇區(qū)比特圖可以是512字節(jié)。如果復合扇區(qū)比特圖被配置成跨越I兆字節(jié),則該復合扇區(qū)比特圖可以被用來描述2048個虛擬盤文件區(qū)段。該復合扇區(qū)比特圖的尺寸可以被選擇成與底層存儲設備和虛擬盤區(qū)段對準。
[0067]下面是描繪操作規(guī)程的一系列流程圖。為了易于理解,所述流程圖被組織成使得最初的流程圖通過總體“全景”角度給出實現(xiàn)方式,后續(xù)的流程圖則提供用虛線示出的進一步的附加內(nèi)容和/或細節(jié)。此外,本領域技術人員可以認識到,通過虛線描繪的操作規(guī)程被認為是可選的。
[0068]現(xiàn)在轉到圖10,該圖圖示出了可以由比如圖4的計算機系統(tǒng)400之類的計算機系統(tǒng)執(zhí)行的操作規(guī)程。操作1000開始所述操作規(guī)程,操作1002表明計算機系統(tǒng)400可以包括被配置成打開虛擬盤文件的電路,所述虛擬盤文件包括第一唯一標識符和構成虛擬盤中的數(shù)據(jù)的至少一部分的虛擬盤區(qū)段數(shù)據(jù)。例如,轉到圖4,計算機系統(tǒng)400可以包括虛擬盤解析器404,其可以是可執(zhí)行指令。在一個示例性實施例中,虛擬盤解析器404可以由處理器(比如圖1的處理器102)執(zhí)行,并且向虛擬化系統(tǒng)文件系統(tǒng)408發(fā)出針對打開虛擬盤文件的請求。在一個具體實例中,所述請求可以是打開作為另一個虛擬盤文件的父的虛擬盤文件,例如圖6的虛擬盤文件600、604、606或610。在這里,用戶可能已決定打開虛擬盤文件以便修改存儲在其中的一些信息。舉例來說,假設用戶打開了作為虛擬機的虛擬盤的虛擬盤文件以便應用補丁,并且他或她可能不知道有另一個虛擬盤文件依賴于該虛擬盤文件的內(nèi)容。在另一個具體實例中,用戶可能把虛擬盤文件作為文本文件打開以查閱該文件的內(nèi)容。轉到圖7,在一個具體實例中,假設所述虛擬盤文件是父虛擬盤文件702。在該例中,當虛擬盤解析器404打開父虛擬盤文件702時,可以檢測到對應于虛擬盤區(qū)段的有效載荷數(shù)據(jù)和元數(shù)據(jù)704 (其包括被存儲為唯一標識符708的第一標識符)。
[0069]回來參照圖10,操作1004描述了可以由計算機系統(tǒng)400執(zhí)行的操作。具體來說,在一個示例性實施例中,計算機系統(tǒng)400可以包括這樣的電路,其響應于檢測到向虛擬盤文件寫入會影響對于虛擬盤區(qū)段數(shù)據(jù)的解釋方式的信息的嘗試而用第二唯一標識符覆寫虛擬盤文件中的第一唯一標識符。在打開虛擬盤文件之后,虛擬盤解析器404可以由處理器102執(zhí)行,并且檢測已經(jīng)對數(shù)據(jù)做出了將會影響其所存儲的有效載荷的改變。虛擬盤解析器404可以包括能夠檢測到其何時被指引做出影響有效載荷的第一修改的邏輯,并且在做出所述改變之前,虛擬盤解析器404可以向存儲設備106發(fā)出一項或更多項IO工作,所述IO工作把被存儲為唯一 ID 708的第一唯一標識符改變到第二唯一標識符。
[0070]舉例來說,假設從所述虛擬盤文件實例化虛擬盤,并且用戶嘗試對該虛擬盤進行碎片整理。虛擬盤解析器404可以接收把存儲在第一虛擬盤區(qū)段中的數(shù)據(jù)移動到第二虛擬盤區(qū)段的一項或更多項IO工作。響應于接收到該IO工作,虛擬盤解析器404可以確定改變分配表中的關系,從而使得所述虛擬盤文件的被用來描述第一虛擬盤區(qū)段的部分被改變?yōu)槊枋龅诙摂M盤區(qū)段。虛擬盤解析器404可以確定其所存儲的虛擬盤區(qū)段數(shù)據(jù)自從被打開以來是否發(fā)生了改變,這例如是通過檢查存儲器中的比特并且確定該比特未被設定而實現(xiàn)的,這可以表明所述虛擬盤區(qū)段數(shù)據(jù)尚未發(fā)生改變。響應于這一確定,虛擬盤解析器404可以使用隨機數(shù)值或隨機字母數(shù)字值來生成第二數(shù)值并且向存儲設備106發(fā)出一項或更多項IO工作,所述IO工作把被存儲為唯一 ID 708的第一唯一標識符改變到第二唯一標識符。
[0071]回到圖10,操作1006示出了計算機系統(tǒng)400可以可選地包括用于確定第二唯一標識符被寫入到虛擬盤文件的永久性拷貝的電路。回來參照圖4的情境,計算機系統(tǒng)400可以包括能夠確定第二唯一標識符被保存到盤上的電路,例如運行在處理器102上的虛擬盤解析器404。例如,并且繼續(xù)前一段中的實例,虛擬盤解析器404可以在向存儲設備106發(fā)出一項或更多項IO工作之后向存儲設備106發(fā)出刷新。存儲設備106可以把高速緩存器454刷新為永久性存儲單元460,并且被存儲為虛擬盤文件702的盤上拷貝中的唯一標識符608的標識符可以被更新為第二唯一標識符。這一操作的結果是,虛擬盤解析器404可以確定從虛擬盤文件702和另一個虛擬盤文件建立的虛擬盤可能受到破壞。
[0072]回到圖10,操作1008示出了計算機系統(tǒng)400可以附加地包括這樣的電路,其響應于確定第二唯一標識符被寫入到虛擬盤文件的永久性拷貝而修改虛擬盤文件的信息。簡要地回到圖4,虛擬盤解析器404可以確定被存儲為虛擬盤文件702的盤上拷貝中的唯一標識符708的標識符已被更新為第二唯一標識符,并且修改存儲在虛擬盤文件702中的信息。舉例來說,虛擬盤解析器404可以通過接收到來自存儲設備106的確認而確定刷新操作完成??商鎿Q地,虛擬盤解析器404可以根據(jù)沒有接收到失敗消息而確定刷新操作完成。在刷新結束之后,虛擬盤解析器404可以對虛擬盤文件702做出修改,并且導致向存儲設備106發(fā)送表明所述修改的一項或更多項IO工作。
[0073]現(xiàn)在轉到圖11,該圖圖示出了可以結合圖10所描繪的那些操作而執(zhí)行的可替換操作。圖11示出了操作1110,其表明在一個實施例中,被配置成覆寫第一唯一標識符的電路可以附加地被配置成覆寫第一唯一標識符,可以附加地被配置成響應于檢測到對虛擬盤區(qū)段的比特組合格式進行寫入的嘗試而覆寫第一唯一標識符。例如,并且簡要地轉到圖7,假設用戶從父虛擬盤文件702實例化虛擬盤402并且改變數(shù)據(jù),從而使得虛擬盤區(qū)段的比特組合格式發(fā)生改變。舉例來說,假設用戶將文件的內(nèi)容置零。虛擬盤解析器404可以接收表明針對向虛擬盤區(qū)段寫入全零的請求的IO工作,并且確定這是自從虛擬盤文件702被打開之后對其進行的第一次修改。響應于這一確定,虛擬盤解析器404可以向存儲設備106發(fā)出一項或更多項IO工作,以便用第二唯一標識符來覆寫被存儲為唯一標識符708的第一標識符。
[0074]回到圖11,操作1112示出了在一個示例性實施例中,計算機系統(tǒng)400可以可選地包括這樣的電路,其被配置成響應于確定從虛擬盤文件獲得的第二唯一標識符不等于存儲在子虛擬盤文件中的唯一標識符而拒絕針對實例化虛擬盤的請求。例如,并且回到圖7,假設后來的某一時間用戶嘗試從虛擬盤文件700和虛擬盤文件702 二者實例化虛擬盤402。在該例中,虛擬盤解析器404可以打開子虛擬盤文件700并且確定去到父虛擬盤文件702的路徑以及被存儲為父唯一標識符710的標識符,其在該例中是第一唯一標識符。虛擬盤解析器404隨后可以查找到父虛擬盤文件702 ;將其打開;并且查找到被存儲為唯一標識符708的標識符,其在該例中是第二唯一標識符。虛擬盤解析器404可以確定第一標識符不等于第二標識符(這表明父虛擬盤文件702被修改這一事實),因而虛擬盤解析器404拒絕針對實例化虛擬盤402的請求。在一個具體實例中,虛擬盤解析器404可以導致顯示一個包括文字的對話框,所述文字表明虛擬盤402已受到破壞,這是因為對于基礎虛擬盤文件的修改已使其失效。
[0075]回到圖11,操作1114示出了在一個示例性實施例中,計算機系統(tǒng)400可以包括被配置成響應于用戶輸入而把第二唯一標識符改變?yōu)榈谝晃ㄒ粯俗R符的電路。例如再次回到圖7,假設用戶嘗試實例化虛擬盤402。取代如先前段落中描述的那樣拒絕請求,虛擬盤解析器404可以使得對話框包括一個選項,如果該選項被選擇,則指引虛擬盤解析器404嘗試實例化虛擬盤402而不管虛擬盤402是否被破壞。如果虛擬盤402被成功打開,則虛擬盤解析器404可以拷貝被存儲為父唯一標識符710的標識符(即第一唯一標識符),并且覆寫被存儲為唯一標識符708的標識符(即第二唯一標識符),并且表明修復操作成功。
[0076]回到圖11,操作1116示出了在一個示例性實施例中,計算機系統(tǒng)400可以包括:被配置成把數(shù)字與標識出一組當中的被子虛擬盤文件完全描述的虛擬盤區(qū)段的信息相關聯(lián)的電路;被配置成響應于確定虛擬盤文件中的數(shù)據(jù)被修改而把子虛擬盤文件中的所述數(shù)字的拷貝更新為第二數(shù)字的電路;以及被配置成響應于確定所述信息準確地反映出所述一組當中的虛擬盤區(qū)段的狀態(tài)而把與所述信息相關聯(lián)的數(shù)字更新為第二數(shù)字的電路。舉例來說,假設虛擬盤402被實例化,并且虛擬盤解析器404把規(guī)范化比特圖加載到隨機存取存儲器中??梢园岩?guī)范化比特圖與規(guī)范化比特圖標識符(例如隨機數(shù)、序號等等)相關聯(lián)。在一個具體實例中,假設所述規(guī)范化比特圖類似于圖8的規(guī)范化比特圖810。如圖所示,可以把規(guī)范化比特圖與被存儲為規(guī)范化比特圖標識符814的標識符相關聯(lián)。
[0077]在一個示例性實施例中,虛擬盤解析器404可以被配置成確定虛擬盤文件700是否已被修改,并且響應于接收到針對改變虛擬盤文件700內(nèi)的數(shù)據(jù)(例如元數(shù)據(jù)和/或有效載荷數(shù)據(jù))的請求,虛擬盤解析器404可以檢查存儲器中的標識符以便檢查這是否是自從虛擬盤文件700被打開之后的第一次修改。在這種配置中,當所述修改是自從虛擬盤文件700被打開之后的第一次修改時,虛擬盤解析器404可以通過使得向存儲設備106發(fā)出表明所述改變的一項或更多項IO工作來把被存儲為NB標識符820的標識符改變?yōu)榈诙?NB標識符。在一種可替換配置中,虛擬盤解析器404可以通過一旦在讀取/修改模式下打開了虛擬盤文件700就使得向存儲設備106發(fā)出表明所述改變的一項或更多項IO工作來把被存儲為NB標識符720的標識符改變?yōu)榈诙?NB標識符。在這一時間點,虛擬盤文件700的盤上版本包括對應于規(guī)范化比特圖數(shù)字720和規(guī)范化比特圖數(shù)字814的不同標識符,如果虛擬盤解析器404崩潰,則下一次由虛擬盤解析器404打開虛擬盤文件700時所述數(shù)字將不匹配。這表明規(guī)范化比特圖810可能沒有準確地反映出其所涵蓋的扇區(qū)比特圖的內(nèi)容。
[0078]如果虛擬盤解析器404被編程來保持規(guī)范化比特圖,例如當對應于虛擬盤區(qū)段0-4的扇區(qū)比特圖轉變到完全被描述狀態(tài)時更新規(guī)范化比特圖810,則虛擬盤解析器404還可以被配置成把規(guī)范化比特圖標識符814改變成等于所保存的規(guī)范化比特圖標識符820,并且向存儲設備106發(fā)出IO工作以保存所述改變。正如前面更加詳細地描述的那樣,如果使用了事務日志或者某種其他日志記錄機制來確保把對于規(guī)范化比特圖810的存儲器中版本做出的改變成功提交到永久性存儲單元460,則可以在虛擬盤解析器404關閉子虛擬盤文件700時或者一旦對所保存的規(guī)范化比特圖數(shù)字820做出改變時對被存儲為規(guī)范化比特圖標識符814的標識符做出改變。
[0079]回來參照圖11,操作1118圖示出了在一個示例性實施例中,計算機系統(tǒng)400可以包括但不限于,被配置成訪問對應于被寫入到虛擬盤文件的一部分的一組虛擬盤區(qū)段的扇區(qū)比特圖的電路,其中所述虛擬盤文件的第二個具有虛擬盤文件偏移量,該虛擬盤文件偏移量被選擇成使得所述一部分與被配置成存儲所述虛擬盤文件的存儲設備的扇區(qū)對準。在一個示例性實施例中,可以由虛擬盤解析器404接收IO工作,其使得虛擬盤解析器404訪問虛擬盤文件702的存儲復合扇區(qū)比特圖900的一部分。在該例中,復合扇區(qū)比特圖900被寫入到虛擬盤文件702,從而使其與存儲設備106的底層扇區(qū)尺寸對準。這一對準改進了虛擬盤402的總體性能,這是因為復合扇區(qū)比特圖900和虛擬盤區(qū)段有效載荷與存儲設備106對準,從而降低了在從基于盤的存儲設備進行讀取時越過軌道邊界的幾率。
[0080]現(xiàn)在轉到圖12,該圖圖示出了包括操作1200、1202、1204、1206和1208的操作規(guī)程。轉到操作1200,其示出了所述操作規(guī)程的開始,并且操作1202描述了可以由計算機系統(tǒng)400的電路執(zhí)行的操作;即實例化虛擬盤,所述虛擬盤包括由第一虛擬盤文件描述的一組虛擬盤區(qū)段,所述第一虛擬盤文件包括第一標識符。例如并且參照圖4,假設用戶或管理程序決定啟動虛擬機410。響應于接收到這樣的信號,虛擬化系統(tǒng)420可以開始用于實例化虛擬機410的操作處理。所述處理的一部分可以是用信號通知虛擬盤解析器404打開合起來存儲構成訪客操作系統(tǒng)412的比特組合格式的虛擬盤文件。虛擬盤解析器404可以決定打開例如子虛擬盤文件700和父虛擬盤文件702,并且將其用來實例化圖7的虛擬盤402。如圖8所示,虛擬盤文件700可以包括元數(shù)據(jù)804,其可以包括被存儲為規(guī)范化比特圖標識符820的標識符。
[0081]回到圖12,操作1204表明計算機系統(tǒng)400可以被配置成包括用于把標識出所述一組當中的被第一虛擬盤文件完全描述的虛擬盤區(qū)段的信息加載到隨機存取存儲器中的電路,所述信息與第一標識符的拷貝相關聯(lián)。在該示例性實施例中,虛擬盤解析器404可以把規(guī)范化比特圖加載到隨機存取存儲器104中??商鎿Q地,可以把所述信息組織到表中或者組織到不同于規(guī)范化比特圖的數(shù)據(jù)結構中。在利用規(guī)范化比特圖的一個具體實例中,所述規(guī)范化比特圖可以類似于圖8的規(guī)范化比特圖810,其可以被用來描述虛擬盤402的一組虛擬盤區(qū)段是否被子虛擬盤文件700完全描述。在運行時間期間,如果規(guī)范化比特圖表明虛擬盤區(qū)段完全存在,即所有扇區(qū)都被虛擬盤文件700描述,則虛擬盤解析器404可以在不查詢扇區(qū)比特圖的情況下讀取有效載荷。在該例中,被加載到隨機存取104中的規(guī)范化比特圖810還可以包括存儲為NB ID 820被存儲為NB ID 814的相同標識符。虛擬盤解析器404可以把所述標識符進行比較并且確定規(guī)范化比特圖810是有效的,而且使用規(guī)范化比特圖810而不是通過讀取其所描述的每一個扇區(qū)比特圖來重新創(chuàng)建規(guī)范化比特圖810。
[0082]參照操作1206,其描述了這樣的實施例,其中計算機系統(tǒng)400可以包括被配置成在打開第一虛擬盤文件之后把第一虛擬盤文件中的第一標識符改變?yōu)榈诙俗R符的電路。例如并且簡要地轉到圖8,在把規(guī)范化比特圖810加載到存儲器中之后,虛擬盤解析器404可以把被存儲為規(guī)范化比特圖標識符820的標識符改變?yōu)榈诙俗R符,例如改變?yōu)榈诙S機生成的字母數(shù)字值等等。在一種示例性配置中,虛擬盤解析器404可以被配置成在虛擬盤文件700被修改時改變被存儲為規(guī)范化比特圖標識符820的標識符。
[0083]回到圖12,操作1208示出了計算機系統(tǒng)400可以包括用于響應于確定所述信息準確地反映出所述一組當中的虛擬盤區(qū)段的狀態(tài)而把與所述信息相關聯(lián)的第一標識符的拷貝更新為第二標識符的電路。再次參照圖8的情境,虛擬盤解析器404可以被配置成改變被存儲為規(guī)范化比特圖數(shù)字814的標識符,以及使得向存儲設備106發(fā)送表明所述改變的一項或更多項IO工作并由永久性存儲單元460保存。如果確定規(guī)范化比特圖810準確地反映出其所涵蓋的扇區(qū)比特圖的狀態(tài),則虛擬盤解析器404可以被配置成改變被存儲為NBID 814的標識符,從而使其與被存儲為NB ID 820的標識符匹配。
[0084]現(xiàn)在參照圖13,其示出了可以結合由圖12描繪的那些操作執(zhí)行的附加操作。將注意力轉到操作1310,其描述了這樣一個實施例,其中計算機系統(tǒng)400可以附加地包括用于響應于確定第一虛擬盤文件中的唯一標識符與位于父虛擬盤文件中的唯一標識符相匹配而實例化虛擬盤的電路。例如參照圖7的情境,在更新對應于規(guī)范化比特圖的標識符之前,虛擬盤解析器404可以通過確定被存儲為父唯一 ID 710的標識符與被存儲為唯一 ID 708的標識符相匹配,來確定虛擬盤文件700與702之間的關聯(lián)是有效的。響應于這一確定,虛擬盤解析器404可以實施虛擬盤402。此外,所述標識符相匹配的事實表明自從子虛擬盤文件700被創(chuàng)建之后,父虛擬盤文件702未受到會影響其有效載荷數(shù)據(jù)的修改。
[0085]回到圖13,操作1312示出了在一個實施例中,計算機系統(tǒng)400可以附加地包括但不限于用于響應于確定第一虛擬盤文件中的唯一標識符與位于父虛擬盤文件中的唯一標識符不匹配而拒絕針對實例化虛擬盤的請求的電路。例如并且回到圖7,假設后來的某一時間用戶嘗試從虛擬盤文件700和虛擬盤文件702 二者實例化虛擬盤402。在該例中,虛擬盤解析器404可以打開子虛擬盤文件700并且確定去到父虛擬盤文件702的路徑以及被存儲為父唯一標識符710的標識符,其在該例中是第一唯一標識符。虛擬盤解析器404隨后可以查找到父虛擬盤文件702 ;將其打開;并且查找到被存儲為唯一標識符708的標識符,其在該例中是第二唯一標識符。虛擬盤解析器404可以確定第一標識符不等于第二標識符(這表明的事實是,父虛擬盤文件702被修改),并且虛擬盤解析器404拒絕針對實例化虛擬盤402的請求。在一個具體實例中,虛擬盤解析器404可以使得顯示包括文字的對話框,所述文字表明虛擬盤402已受到破壞,這是因為對于基礎虛擬盤文件的修改已使其失效。
[0086]回到圖13,操作1314表明計算機系統(tǒng)400可以附加地包括被配置成響應于確定所述一組當中的虛擬盤區(qū)段被修改而把第一虛擬盤文件中的第一標識符改變?yōu)榈诙俗R符的電路。在一個示例性實施例中,在實例化虛擬盤402時,當虛擬盤解析器404檢測到針對修改虛擬盤文件700的內(nèi)容的嘗試時,虛擬盤解析器404可以發(fā)出表明這樣的請求的IO工作,其用于把被存儲為NB ID 820的第一標識符改變?yōu)榈诙俗R符。
[0087]繼續(xù)對于圖13的描述,操作1316表明在一個示例性實施例中,計算機系統(tǒng)400可以包括用于在關閉虛擬盤文件的規(guī)程期間把與所述信息相關聯(lián)的第一標識符的拷貝改變?yōu)榈诙俗R符的電路。再次轉到圖8,虛擬盤解析器404可以被配置成在關閉虛擬盤402時改變被存儲為規(guī)范化比特圖數(shù)字814的數(shù)字。在關閉虛擬盤文件700之前,虛擬盤解析器404可以向虛擬盤文件700寫入修改,所述修改把第一標識符改變?yōu)榈诙俗R符。這又使得向存儲設備106發(fā)出一項或更多項IO工作,以便把被存儲為NB ID 810的盤上第一標識符改變?yōu)榈诙俗R符。
[0088]簡要地回到圖13,操作1318圖示出了在一個示例性實施例中,計算機系統(tǒng)400可以包括:被配置成響應于確定虛擬盤文件被修改而把與所述信息相關聯(lián)的第一標識符的拷貝改變?yōu)榈诙俗R符的電路;以及被配置成把對于所述信息的修改記入日志的電路。例如再次參照圖8,虛擬盤解析器404可以被配置成在虛擬盤402的運行時間期間把被存儲為規(guī)范化比特圖標識符814的標識符從第一標識符改變?yōu)榈诙俗R符,以便匹配被存儲為規(guī)范化比特圖標識符820的標識符。在該例中,可以使用事務日志等等來確保虛擬盤解析器404把規(guī)范化比特圖810保持在一定狀態(tài)下,其中該狀態(tài)反映出對應于虛擬盤區(qū)段0-4的扇區(qū)比特圖的狀態(tài)。
[0089]回到圖13,操作1320示出了計算機系統(tǒng)400可以可選地包括被配置成訪問對應于被寫入到虛擬盤文件的一部分的所述一組虛擬盤區(qū)段的扇區(qū)比特圖的電路,其中虛擬盤文件的所述部分具有虛擬盤文件偏移量,該虛擬盤文件偏移量被選擇成使得該部分與被配置成存儲虛擬盤文件的存儲設備的扇區(qū)對準。在一個示例性實施例中,可以由虛擬盤解析器404接收IO工作,其使得虛擬盤解析器404訪問虛擬盤文件602的存儲復合扇區(qū)比特圖900的一部分。在該例中,復合扇區(qū)比特圖900被寫入到虛擬盤文件702,從而使其與存儲設備106的底層扇區(qū)尺寸對準。這一對準改進了虛擬盤402的總體性能,這是因為復合扇區(qū)比特圖900和虛擬盤區(qū)段有效載荷與存儲設備106對準,從而降低了在從基于盤的存儲設備進行讀取時越過軌道邊界的幾率。
[0090]現(xiàn)在回到圖13,操作1322示出了計算機系統(tǒng)400可以可選地包括:被配置成檢測針對修改父虛擬盤文件中的信息的嘗試的電路,其中所述嘗試影響解釋基于父虛擬盤文件的虛擬盤的虛擬盤區(qū)段數(shù)據(jù)的方式,所述父虛擬盤文件包括第一隨機數(shù)值;被配置成用第二隨機數(shù)值覆寫父虛擬盤文件中的第一隨機數(shù)值的電路;被配置成刷新虛擬盤文件的電路;以及被配置成響應于接收到表明所述刷新完成的信號而修改父虛擬盤文件中的所述信息的電路。例如并轉到圖7,假設虛擬盤解析器404確定如果對虛擬盤文件702應用一項IO工作,則該IO工作將影響虛擬盤402被暴露的方式。舉例來說,虛擬盤解析器404可以被配置成檢測使得虛擬盤解析器404改變父虛擬盤文件702的有效載荷數(shù)據(jù)的寫入操作,改變描述虛擬盤402的末尾的信息的寫入操作,改變分配表條目從而又改變父虛擬盤文件702的哪部分被用來描述虛擬盤區(qū)段的寫入操作等等。響應于檢測到這樣的寫入操作,虛擬盤解析器404可以被配置成:把被存儲為唯一標識符708的第一隨機數(shù)改變?yōu)榈诙S機數(shù);發(fā)出刷新(其使得第二隨機數(shù)被存儲設備106保存);以及隨后對虛擬盤文件702應用所述寫入操作。
[0091]回到圖13,操作1324示出了計算機系統(tǒng)400可以可選地包括被配置成響應于確定所述信息與第一數(shù)字的拷貝相關聯(lián)并且第一虛擬盤文件包括第二數(shù)字而導出更新后的信息的電路。例如并且參照圖8,假設虛擬盤解析器404例如從子虛擬盤文件700和父虛擬盤文件702實例化虛擬盤402。在該例中,虛擬盤解析器404可以把規(guī)范化比特圖810以及元數(shù)據(jù)704加載到主存儲器中。虛擬盤解析器404可以把被存儲為規(guī)范化比特圖標識符814的標識符與被存儲為規(guī)范化比特圖標識符820的標識符進行比較,并且確定所述兩個標識符不匹配,也就是說規(guī)范化比特圖810可能未反映出對應于虛擬盤區(qū)段0-4的扇區(qū)比特圖的狀態(tài)。響應于這一確定,虛擬盤解析器404可以被配置成通過讀取對應于虛擬盤區(qū)段O到4的扇區(qū)比特圖來導出對應于規(guī)范化比特圖810的新信息。對于由其相應的扇區(qū)比特圖完全定義(也就是說相應的比特圖包括全I)的每一個虛擬盤區(qū)段,虛擬盤解析器404可以在規(guī)范化比特圖810中存儲I。對于未由其相應的扇區(qū)比特圖完全定義的每一個虛擬盤區(qū)段,虛擬盤解析器404可以在規(guī)范化比特圖810中存儲O。在更新了規(guī)范化比特圖810以便反映出其相關聯(lián)的虛擬盤區(qū)段的狀態(tài)之后,虛擬盤解析器404可以在虛擬盤402的運行時間期間使用規(guī)范化比特圖810。
[0092]現(xiàn)在轉到圖14,該圖示出了可以由計算機系統(tǒng)400執(zhí)行的包括操作1400、1402、1404、1406、1408和1410的操作規(guī)程。操作1400開始所述操作規(guī)程,并且操作1402圖示出了在一個實施例中,計算機系統(tǒng)400可以被配置成包括用于打開父虛擬盤文件的電路,所述父虛擬盤文件關聯(lián)到子虛擬盤文件,所述父虛擬盤文件包括第一標識符,并且所述子虛擬盤文件包括第一標識符的拷貝。例如并且轉到圖4,計算機系統(tǒng)400可以包括虛擬盤解析器404,其可以是可執(zhí)行指令模塊。在一個示例性實施例中,虛擬盤解析器404可以由例如圖1的處理器102之類的處理器執(zhí)行,并且向虛擬化系統(tǒng)文件系統(tǒng)408發(fā)出針對打開虛擬盤文件的請求。在一個具體事例中,所述請求可以是針對打開作為另一個虛擬盤文件的父的虛擬盤文件,例如圖6的虛擬盤文件600、604、606或610。在這里,用戶可能已決定打開虛擬盤文件以便修改存儲在其中的某些信息。舉例來說,假設用戶打開了作為虛擬機的虛擬盤的虛擬盤文件以便應用補丁,并且他或她可能不知道另一個虛擬盤文件依賴于該虛擬盤的內(nèi)容。
[0093]回到圖14,操作1404示出了計算機系統(tǒng)400可以附加地包括這樣的電路,其用于響應于檢測到針對修改描述虛擬盤區(qū)段的數(shù)據(jù)的嘗試而用第二標識符覆寫虛擬盤文件中的第一標識符。在打開虛擬盤文件之后,虛擬盤解析器404可以由處理器102執(zhí)行,并且檢測已經(jīng)對數(shù)據(jù)做出了將影響其所存儲的有效載荷的改變。
[0094]回到圖14,操作1406描述了這樣一個事例,其中計算機系統(tǒng)400附加地包括用于向被配置成存儲父虛擬盤文件的永久性拷貝的存儲設備發(fā)出表明用第二標識符覆寫第一標識符的輸入/輸出工作的電路。虛擬盤解析器404可以包括能夠檢測到其何時被指引做出會影響虛擬盤區(qū)段的有效載荷的修改的邏輯,并且在做出所述改變之前,向存儲設備106發(fā)出一項或更多項IO工作,其把被存儲為唯一 ID 708的第一唯一標識符的盤上拷貝改變?yōu)榈诙ㄒ粯俗R符。
[0095]參照圖14的操作1408,該圖圖示出了在一個實施例中,計算機系統(tǒng)400可以包括用于向存儲設備發(fā)出刷新命令的電路。例如并且再次轉到圖4,在表明針對用第二標識符覆寫第一標識符的請求的IO工作之后,虛擬盤解析器404可以向存儲設備106發(fā)送刷新命令。存儲設備106可以接收刷新命令并且把高速緩存器454的內(nèi)容寫入到永久性存儲單元460 (例如磁盤或者一個或更多閃存單元),并且第二隨機數(shù)值可以被保存。
[0096]圖14的操作1410示出了計算機系統(tǒng)400可以附加地包括用于響應于接收到表明存儲設備保存了內(nèi)部高速緩存器的內(nèi)容的信號而修改描述虛擬盤區(qū)段的數(shù)據(jù)的電路。在發(fā)出刷新命令并且沒有接收到失敗消息或者接收到表明刷新成功的確認之后,虛擬盤解析器404可以修改父虛擬盤文件的描述虛擬盤區(qū)段的一部分。這又會使得向存儲設備106發(fā)送一項或更多項IO工作,其使得所述修改被保存。
[0097]現(xiàn)在轉到圖15,該圖圖示出了可以結合圖14所示的那些操作執(zhí)行的附加操作。參照操作1512,其示出了計算機系統(tǒng)可以被可選地配置成包括用于響應于確定虛擬盤文件的永久性拷貝中的第二標識符與存儲在子虛擬盤文件中的第一標識符不匹配而拒絕針對實例化虛擬盤的請求的電路。例如并且回到圖7,假設后來的某一時間用戶嘗試從虛擬盤文件702和虛擬盤文件702 二者實例化虛擬盤402。在該例中,虛擬盤解析器404可以確定第一標識符不等于第二標識符(這表明的事實是,父虛擬盤文件702被修改),并且虛擬盤解析器404拒絕針對實例化虛擬盤402的請求。在一個具體實例中,虛擬盤解析器404可以使得顯示包括文字的對話框,所述文字表明虛擬盤402已受到破壞,這是因為對于基礎虛擬盤文件的修改已使其失效。
[0098]繼續(xù)對于圖15的描述,操作1514示出了計算機系統(tǒng)400可以包括用于響應于用戶輸入把所述唯一標識符改變?yōu)橄惹皵?shù)值的電路。例如并且再次回到圖7,假設用戶嘗試實例化虛擬盤402。取代如在前面段中描述的那樣拒絕所述請求,虛擬盤解析器404可以使得顯示對話框,其指引虛擬盤解析器404嘗試實例化虛擬盤402而不管虛擬盤402是否受到破壞。如果虛擬盤402被成功打開,則虛擬盤解析器404可以拷貝被存儲為父唯一標識符710的標識符(即第一唯一標識符)并且覆寫被存儲為唯一標識符708的標識符(即第二唯一標識符),并且表明修復操作成功。
[0099]繼續(xù)對于圖15的描述,操作1516示出了計算機系統(tǒng)400可以包括:用于實例化虛擬盤的電路,所述虛擬盤包括由父虛擬盤文件描述的虛擬盤區(qū)段和由子虛擬盤文件描述的虛擬盤區(qū)段,子虛擬盤文件包括序號;用于把標識出子虛擬盤文件當中的由子虛擬盤文件完全描述的一個虛擬盤區(qū)段子集的信息加載到隨機存取存儲器中的電路,所述信息與所述序號的拷貝相關聯(lián);用于響應于確定子虛擬盤文件被修改而遞增子虛擬盤文件中的序號的電路;以及用于響應于確定所述信息準確地反映出子虛擬盤文件中的所述虛擬盤區(qū)段子集的狀態(tài)而遞增與所述信息相關聯(lián)的序號的電路。例如假設實例化虛擬盤402,并且虛擬盤解析器404把規(guī)范化比特圖加載到隨機存取存儲器中??商鎿Q地,可以把所述信息組織成表而不是規(guī)范化比特圖。規(guī)范化比特圖可以與規(guī)范化比特圖標識符(例如隨機數(shù)、序號等等)相關聯(lián),并且所述標識符可以表明所述規(guī)范化比特圖對于其所涵蓋的扇區(qū)比特圖而言何時是準確的。在一個具體實例中,假設所述規(guī)范化比特圖類似于圖8的規(guī)范化比特圖810。如圖所示,規(guī)范化比特圖可以與被存儲為規(guī)范化比特圖標識符814的標識符相關聯(lián)。
[0100]在一個示例性實施例中,虛擬盤解析器404可以被配置成確定虛擬盤文件702是否已被修改,并且響應于接收到針對改變虛擬盤文件702內(nèi)的數(shù)據(jù)(例如元數(shù)據(jù)和/或有效載荷數(shù)據(jù))的請求,虛擬盤解析器404可以檢查存儲器中的標識符以便檢查這是否是自從虛擬盤文件702被打開之后的第一次修改。在這種配置中,當所述修改是自從虛擬盤文件702被打開之后的第一次修改時,虛擬盤解析器404可以通過使得向存儲設備106發(fā)出表明所述改變的一項或更多項IO工作來把被存儲為NB標識符820的標識符改變?yōu)榈诙?NB標識符。在一種可替換配置中,虛擬盤解析器404可以通過一旦在讀取/修改模式下打開虛擬盤文件702就使得向存儲設備106發(fā)出表明所述改變的一項或更多項IO工作來把被存儲為NB標識符820的標識符改變?yōu)榈诙?NB標識符。在這一時間點,虛擬盤文件702的盤上版本包括對應于規(guī)范化數(shù)字820和規(guī)范化比特圖數(shù)字814的不同標識符,如果虛擬盤解析器404崩潰,則下一次由虛擬盤解析器404打開虛擬盤文件602時所述數(shù)字將不匹配。這表明規(guī)范化比特圖810可能沒有準確地反映出其所涵蓋的扇區(qū)比特圖的內(nèi)容。
[0101]如果虛擬盤解析器404被編程來保持規(guī)范化比特圖,例如當對應于虛擬盤區(qū)段0-4的扇區(qū)比特圖轉變到完全被描述狀態(tài)時更新規(guī)范化比特圖810,則虛擬盤解析器404還可以被配置成把規(guī)范化比特圖標識符814改變成等于所保存的規(guī)范化比特圖標識符820,并且向存儲設備106發(fā)出IO工作以保存所述改變。如前面更加詳細地描述的那樣,如果使用了事務日志或者某種其他日志記錄機制來確保把對于規(guī)范化比特圖810的存儲器中版本做出的改變成功提交到永久性存儲單元460,則可以在虛擬盤解析器404關閉子虛擬盤文件700時或者一旦對所保存的規(guī)范化比特圖數(shù)字820做出改變時對被存儲為規(guī)范化比特圖標識符814的標識符做出改變。
[0102]繼續(xù)對于圖15的描述,操作1518示出了計算機系統(tǒng)400可以包括用于把對應于一組虛擬盤區(qū)段的扇區(qū)比特圖寫入到虛擬盤文件的一部分的電路,其中虛擬盤文件的所述部分具有虛擬盤文件偏移量,該虛擬盤文件偏移量被選擇成使得該部分與被配置成存儲虛擬盤文件的存儲設備的扇區(qū)對準。在一個示例性實施例中,可以由虛擬盤解析器404接收IO工作,其使得虛擬盤解析器404訪問虛擬盤文件602的存儲復合扇區(qū)比特圖900的一部分。在該例中,復合扇區(qū)比特圖900被寫入到虛擬盤文件702,從而使其與存儲設備106的底層扇區(qū)尺寸對準。這一對準改進了虛擬盤402的總體性能,這是因為復合扇區(qū)比特圖900和虛擬盤區(qū)段有效載荷與存儲設備106對準,從而降低了在從基于盤的存儲設備進行讀取時越過軌道邊界的幾率。
[0103]前面的詳細描述通過實例和/或操作圖示闡述了所述系統(tǒng)和/或處理的各種實施例。在這樣的方框圖和/或實例包含一項或更多項功能和/或操作的情況下,本領域技術人員將理解的是,可以通過多種硬件、軟件、固件或者實際上其任意組合來單獨地和/或共同地實施這樣的方框圖或實例內(nèi)的每一項功能和/或操作。
[0104]雖然已經(jīng)示出并描述了這里所描述的本主題的具體方面,但是本領域技術人員將顯而易見的是,基于這里的教導,在不背離這里所描述的主題及其更寬泛方面的情況下可以做出改變和修改,因此所附權利要求將在其范圍內(nèi)涵蓋處在這里所描述的主題的真實精神和范圍內(nèi)的所有這樣的改變和修改。
【權利要求】
1.一種計算機可讀存儲介質,其包括在由處理器執(zhí)行時使得所述處理器實施以下步驟的指令: 打開虛擬盤文件,所述虛擬盤文件包括第一唯一標識符以及構成虛擬盤中的數(shù)據(jù)的至少一部分的虛擬盤區(qū)段數(shù)據(jù); 響應于檢測到針對向虛擬盤文件寫入影響對于虛擬盤區(qū)段數(shù)據(jù)的解釋方式的信息的嘗試,用第二唯一標識符覆寫虛擬盤文件中的第一唯一標識符; 確定第二唯一標識符被寫入到虛擬盤文件的永久性拷貝;以及響應于確定第二唯一標識符被寫入到虛擬盤文件的永久性拷貝,向虛擬盤文件寫入所述信息。
2.權利要求1的計算機可讀存儲介質,還包括在被執(zhí)行時使得所述處理器實施以下步驟的指令: 把一個數(shù)字與標識出一組當中的被子虛擬盤文件完全描述的虛擬盤區(qū)段的信息相關聯(lián); 響應于確定虛擬盤文件中的數(shù)據(jù)被修改,把子虛擬盤文件中的所述一個數(shù)字的拷貝更新為第二數(shù)字;以及 響應于確定所述信息準確地反映出所述一組當中的虛擬盤區(qū)段的狀態(tài),把與所述信息相關聯(lián)的所述一個數(shù)字更新為第二數(shù)字。
3.一種計算機系統(tǒng),其包括: 處理器;以及 存儲器,所述存儲器在通電時與處理器進行電子通信,所述存儲器包括在由處理器執(zhí)行時使得所述處理器施行以下步驟的指令: 實例化虛擬盤,所述虛擬盤包括由第一虛擬盤文件描述的一組虛擬盤區(qū)段,所述第一虛擬盤文件包括第一標識符; 把標識出所述一組當中的被第一虛擬盤文件完全描述的虛擬盤區(qū)段的信息加載到隨機存取存儲器中,所述信息與第一標識符的拷貝相關聯(lián); 在打開第一虛擬盤文件之后把第一虛擬盤文件中的第一標識符改變?yōu)榈诙俗R符;以及 響應于確定所述信息準確地反映出所述一組當中的虛擬盤區(qū)段的狀態(tài),把與所述信息相關聯(lián)的第一標識符的所述拷貝改變?yōu)榈诙俗R符。
4.權利要求3的計算機系統(tǒng),在被執(zhí)行時使得所述處理器實例化虛擬盤的所述指令還包括在被執(zhí)行時使得所述處理器實施以下步驟的指令: 響應于確定第一虛擬盤文件中的唯一標`識符與位于父虛擬盤文件中的唯一標識符相匹配而實例化虛擬盤。
5.權利要求3的計算機系統(tǒng),在被執(zhí)行時使得所述處理器改變與所述信息相關聯(lián)的第一標識符的所述拷貝的所述指令還包括在被執(zhí)行時使得所述處理器實施以下步驟的指令: 響應于確定虛擬盤文件被修改,把與所述信息相關聯(lián)的第一標識符的所述拷貝改變?yōu)榈诙俗R符;以及 把對所述信息做出的修改記入日志。
6.權利要求3的計算機系統(tǒng),還包括在被執(zhí)行時使得所述處理器實施以下步驟的指令: 檢測針對修改父虛擬盤文件中的影響對基于父虛擬盤文件的虛擬盤的虛擬盤區(qū)段數(shù)據(jù)的解釋方式的信息的嘗試,其中所述父虛擬盤文件包括第一隨機數(shù)值; 用第二隨機數(shù)值覆寫父虛擬盤文件中的第一隨機數(shù)值; 刷新虛擬盤文件;以及 響應于接收到表明刷新完成的信號而修改父虛擬盤文件中的所述信息。
7.一種計算機實施的方法,包括: 打開父虛擬盤文件,所述父虛擬盤文件關聯(lián)到子虛擬盤文件,父虛擬盤文件包括第一標識符,并且子虛擬盤文件包括第一標識符的拷貝; 響應于檢測到針對修改描述虛擬盤區(qū)段的數(shù)據(jù)的嘗試,用第二標識符覆寫虛擬盤文件中的第一標識符; 向被配置成存儲父虛擬盤文件的永久性拷貝的存儲設備發(fā)出表明用第二標識符覆寫第一標識符的輸入/輸出工作; 向所述存儲設備發(fā)出刷新命令;以及 響應于接收到表明所述存儲設備保存了內(nèi)部高速緩存器的內(nèi)容的信號,修改描述所述虛擬盤區(qū)段的數(shù)據(jù)。`
8.權利要求7的計算機實施的方法,還包括: 響應于確定虛擬盤文件的所述永久性拷貝中的第二標識符與存儲在子虛擬盤文件中的第一標識符不匹配,拒絕針對實例化虛擬盤的請求。
9.權利要求7的計算機實施的方法,還包括: 實例化所述虛擬盤,其中所述虛擬盤包括由父虛擬盤文件描述的虛擬盤區(qū)段和由子虛擬盤文件描述的虛擬盤區(qū)段,所述子虛擬盤文件包括序號; 把標識出子虛擬盤文件中的由子虛擬盤文件完全描述的虛擬盤區(qū)段子集的信息加載到隨機存取存儲器中,所述信息與所述序號的拷貝相關聯(lián); 響應于確定子虛擬盤文件被修改,遞增子虛擬盤文件中的所述序號;以及響應于確定所述信息準確地反映出子虛擬盤文件中的所述虛擬盤區(qū)段子集的狀態(tài),遞增與所述信息相關聯(lián)的所述序號。
10.權利要求7的計算機實施的方法,還包括: 把對應于一組虛擬盤區(qū)段的扇區(qū)比特圖寫入到虛擬盤文件的一部分,虛擬盤文件的所述部分具有虛擬盤文件偏移量,該虛擬盤文件偏移量被選擇成使得該部分與被配置成存儲虛擬盤文件的存儲設備的扇區(qū)對準。
【文檔編號】G06F9/06GK103493028SQ201180070385
【公開日】2014年1月1日 申請日期:2011年10月10日 優(yōu)先權日:2011年4月26日
【發(fā)明者】J.A.斯塔克斯, D.L.格林, T.W.哈里斯, M.約翰, S.拉加拉姆, E.特勞特 申請人:微軟公司