存在許多已知的方式以用于使操作系統(tǒng)管理基于區(qū)塊(block)的存儲(chǔ)設(shè)備,諸如盤驅(qū)動(dòng)器、虛擬盤、存儲(chǔ)區(qū)域網(wǎng)絡(luò)(SAN)盤等。典型地,操作系統(tǒng)提供存儲(chǔ)堆棧,該存儲(chǔ)堆棧可以包括文件系統(tǒng)和一個(gè)或多個(gè)層和驅(qū)動(dòng)器,該驅(qū)動(dòng)器調(diào)解(intermediate)文件系統(tǒng)與存儲(chǔ)設(shè)備之間的交換。文件系統(tǒng)提供對(duì)存儲(chǔ)在存儲(chǔ)設(shè)備中的數(shù)據(jù)的組織和結(jié)構(gòu),存儲(chǔ)堆棧的其它層處置文件系統(tǒng)與存儲(chǔ)設(shè)備之間的交換,并且存儲(chǔ)設(shè)備在區(qū)塊中存儲(chǔ)數(shù)據(jù)并且提供相關(guān)的存儲(chǔ)管理功能性。例如,操作系統(tǒng)可能具有ext3文件系統(tǒng)、SCSI(小型計(jì)算機(jī)系統(tǒng)接口)子系統(tǒng)和SCSI盤驅(qū)動(dòng)器,其以已知的方式協(xié)作。
最近,虛擬設(shè)備已經(jīng)成為用于諸如盤驅(qū)動(dòng)器之類的硬件存儲(chǔ)設(shè)備的常見代替物。虛擬盤或虛擬存儲(chǔ)設(shè)備的大多數(shù)實(shí)現(xiàn)使用特殊類型的容器或文件,其充當(dāng)用于對(duì)應(yīng)虛擬盤的后備儲(chǔ)存器(要稱為“存儲(chǔ)設(shè)備”,該術(shù)語在本文中用于指代基于物理和虛擬區(qū)塊的存儲(chǔ)設(shè)備兩者),諸如虛擬硬盤(VHD)格式、虛擬機(jī)器盤(VMDK)格式、虛擬桌面基礎(chǔ)設(shè)施(VDI)格式和其它格式。
虛擬和非虛擬的存儲(chǔ)設(shè)備二者的某些使用場景引起低效性。例如,時(shí)常調(diào)用存儲(chǔ)設(shè)備以存儲(chǔ)可能要求或可能不要求跨諸如操作系統(tǒng)崩潰、操作系統(tǒng)重啟、存儲(chǔ)設(shè)備復(fù)制、備份等之類的事件的持久性的數(shù)據(jù)。然而,之前的存儲(chǔ)設(shè)備和支持操作系統(tǒng)存儲(chǔ)堆棧已經(jīng)將所有存儲(chǔ)的數(shù)據(jù)視為是等同的。例如,視頻編輯應(yīng)用可能具有為了數(shù)據(jù)的“擦除”臨時(shí)存儲(chǔ)所預(yù)留的大存儲(chǔ)空間。
考慮具有操作系統(tǒng)的機(jī)器。操作系統(tǒng)可以具有頁面或交換文件。為了騰空存儲(chǔ)器,未處于通過操作系統(tǒng)的使用中的代碼和數(shù)據(jù)可以被寫入到交換文件,該交換文件通常存儲(chǔ)在盤上(在該示例中,“盤”還可以是虛擬盤或任何其它基于區(qū)塊的設(shè)備)。交換文件中的數(shù)據(jù)可以在必要時(shí)被挑剔(fault)回到存儲(chǔ)器中。當(dāng)機(jī)器被重啟時(shí),交換文件的內(nèi)容通常變得不相關(guān),因?yàn)槲募膬?nèi)容是臨時(shí)的。然而,操作系統(tǒng)已經(jīng)以與所有其它盤I/O已經(jīng)被處置的近乎相同的方式處置了去到操作系統(tǒng)的交換文件的I/O(輸入/輸出)。也就是說,操作系統(tǒng)可以在不考慮所存儲(chǔ)的數(shù)據(jù)的性質(zhì)的情況下確保:對(duì)交換文件的寫入被存儲(chǔ)到盤,交換文件I/O關(guān)于其它I/O交易正確地排序等。此外,盤上的交換文件可能以與該盤上的任何其它數(shù)據(jù)相同的方式來處置。例如,當(dāng)對(duì)盤進(jìn)行備份時(shí)對(duì)交換文件進(jìn)行備份,并且當(dāng)跨網(wǎng)絡(luò)拷貝盤時(shí)(例如當(dāng)復(fù)制或遷移虛擬機(jī)(VM)時(shí)),通過網(wǎng)絡(luò)輸送交換文件。
一般地,存儲(chǔ)系統(tǒng)將所有數(shù)據(jù)視為等同的,并且未能解決各種存儲(chǔ)相關(guān)的低效性。本文所描述的技術(shù)涉及使得能夠?qū)崿F(xiàn)針對(duì)基于區(qū)塊的存儲(chǔ)設(shè)備的區(qū)分的存儲(chǔ)。
技術(shù)實(shí)現(xiàn)要素:
僅僅為了介紹以下在具體實(shí)施方式中討論的一些概念而包括以下概述。本概述不是全面的,并且不旨在描述所要求保護(hù)的主題的范圍,該所要求保護(hù)的主題的范圍通過在結(jié)尾處呈現(xiàn)的權(quán)利要求來闡述。
計(jì)算設(shè)備管理對(duì)基于區(qū)塊的存儲(chǔ)設(shè)備的訪問。計(jì)算設(shè)備具有操作系統(tǒng),所述操作系統(tǒng)具有存儲(chǔ)堆棧。存儲(chǔ)堆棧可以具有文件系統(tǒng)、驅(qū)動(dòng)基于區(qū)塊的存儲(chǔ)設(shè)備的設(shè)備驅(qū)動(dòng)器,以及在設(shè)備驅(qū)動(dòng)器與文件系統(tǒng)之間進(jìn)行調(diào)解的存儲(chǔ)組件(以下描述)。文件系統(tǒng)可以接收標(biāo)記由文件系統(tǒng)管理并且存儲(chǔ)在存儲(chǔ)設(shè)備上的文件的請(qǐng)求。作為響應(yīng),文件系統(tǒng)請(qǐng)求存儲(chǔ)組件標(biāo)記對(duì)應(yīng)于該文件的區(qū)塊。設(shè)備驅(qū)動(dòng)器向存儲(chǔ)設(shè)備轉(zhuǎn)發(fā)或轉(zhuǎn)化(translate)來自存儲(chǔ)組件的請(qǐng)求。進(jìn)而,存儲(chǔ)設(shè)備存儲(chǔ)區(qū)塊的記號(hào)(indicia)。存儲(chǔ)在所標(biāo)識(shí)的區(qū)塊中的數(shù)據(jù)可以接收通過存儲(chǔ)設(shè)備和/或操作系統(tǒng)的區(qū)分的處置,該處置諸如后備儲(chǔ)存器、優(yōu)先處置或其它的特定選擇。
以下將參照結(jié)合隨附各圖考慮的以下詳細(xì)描述來解釋伴隨特征中的許多個(gè)。
附圖說明
本描述將從根據(jù)隨附各圖進(jìn)行閱讀的以下詳細(xì)描述更好理解,其中在隨附描述中,相同的參考標(biāo)號(hào)用于指代相同的部分。
圖1示出計(jì)算設(shè)備的存儲(chǔ)特征。
圖2示出被擴(kuò)充以促進(jìn)存儲(chǔ)設(shè)備中的存儲(chǔ)區(qū)(region)的區(qū)分的處置的存儲(chǔ)系統(tǒng)。
圖3示出存儲(chǔ)設(shè)備的示例。
圖4示出用于處置對(duì)被標(biāo)記用于區(qū)分的存儲(chǔ)的文件的寫入的步驟。
圖5示出接收寫入請(qǐng)求的存儲(chǔ)設(shè)備。
圖6示出計(jì)算設(shè)備的細(xì)節(jié)。
具體實(shí)施方式
以下討論的實(shí)施例涉及基于區(qū)塊的存儲(chǔ)設(shè)備中的區(qū)分的存儲(chǔ)。討論將以架構(gòu)概覽為開始。接著將描述用于設(shè)立和實(shí)現(xiàn)區(qū)分的存儲(chǔ)的一般過程。接著將描述針對(duì)不同存儲(chǔ)標(biāo)準(zhǔn)的實(shí)現(xiàn)細(xì)節(jié),隨后是針對(duì)區(qū)分的存儲(chǔ)的使用場景和性能增強(qiáng)的討論。
圖1示出計(jì)算設(shè)備的存儲(chǔ)特征。操作系統(tǒng)100可以具有存儲(chǔ)堆棧,其包括諸如文件系統(tǒng)102和一個(gè)或多個(gè)基于區(qū)塊的存儲(chǔ)層104之類的層,所述一個(gè)或多個(gè)基于區(qū)塊的存儲(chǔ)層104是提供用于基于區(qū)塊的存儲(chǔ)設(shè)備106的I/O服務(wù)的操作系統(tǒng)100的存儲(chǔ)堆棧的部分(如以上所指出的,如本文所使用的“存儲(chǔ)設(shè)備”可以是由操作系統(tǒng)管理的任何虛擬或硬件基于區(qū)塊的存儲(chǔ)設(shè)備)。文件系統(tǒng)102可以是如本文所指示的那樣進(jìn)行修改的任何已知類型的文件系統(tǒng)。存儲(chǔ)層104可以是由不同的操作系統(tǒng)用于促進(jìn)與存儲(chǔ)設(shè)備的I/O的各種調(diào)解模塊或?qū)又械娜魏我粋€(gè)。一些操作系統(tǒng)具有復(fù)雜的存儲(chǔ)堆棧,該存儲(chǔ)堆棧具有多個(gè)層(例如盤層、分區(qū)層、虛擬盤層等)和可插拔濾波器,而其它操作系統(tǒng)可以具有簡單的存儲(chǔ)堆棧,該存儲(chǔ)堆棧諸如SCSI子系統(tǒng)、SATA(串行高級(jí)技術(shù)附連)驅(qū)動(dòng)器等。存儲(chǔ)層104將通常包括用于相應(yīng)區(qū)塊存儲(chǔ)設(shè)備106的設(shè)備驅(qū)動(dòng)器。
如以上所指出的,基于區(qū)塊的存儲(chǔ)設(shè)備106可以是硬件設(shè)備或虛擬設(shè)備。硬件存儲(chǔ)設(shè)備(諸如盤驅(qū)動(dòng)器或閃速驅(qū)動(dòng)器),將具有接口以經(jīng)由物理總線、無線鏈路等與主機(jī)計(jì)算設(shè)備通信。虛擬存儲(chǔ)設(shè)備可以通過虛擬總線或其它超管理器提供的通信信道進(jìn)行連接。存儲(chǔ)設(shè)備還可以是經(jīng)由諸如iSCSI(因特網(wǎng)SCSI)之類的協(xié)議提供的SAN(存儲(chǔ)區(qū)域網(wǎng)絡(luò))盤。在任何情況下,操作系統(tǒng)100將提供用于與存儲(chǔ)設(shè)備通信的必要接口和驅(qū)動(dòng)器。
圖1還示出與文件系統(tǒng)102通信的應(yīng)用或客戶端108??蛻舳?08可以是在托管操作系統(tǒng)100的機(jī)器上運(yùn)行的任何代碼??蛻舳?08可以是用戶模式或內(nèi)核模式代碼??蛻舳?08可以使用由操作系統(tǒng)100提供的API(應(yīng)用編程接口)以與文件系統(tǒng)102交互,并且間接地與存儲(chǔ)設(shè)備106交互。客戶端108可以是作為操作系統(tǒng)的部分的代碼,例如管理交換文件、啟動(dòng)代碼等的存儲(chǔ)器管理器代碼??蛻舳?06還可以是安裝成在主機(jī)計(jì)算設(shè)備上運(yùn)行的應(yīng)用,例如多媒體應(yīng)用、備份程序或任何其它任意的軟件。為了存儲(chǔ)和檢索數(shù)據(jù),客戶端108經(jīng)由對(duì)應(yīng)的API與文件系統(tǒng)102交互,并且可以發(fā)布各種文件相關(guān)的命令,該命令諸如打開文件、創(chuàng)建文件、對(duì)文件進(jìn)行寫入、拷貝文件、從文件進(jìn)行讀取、設(shè)置針對(duì)文件的許可、關(guān)閉文件和其它命令。如接著將描述的,客戶端108還可以發(fā)布對(duì)存儲(chǔ)設(shè)備中的存儲(chǔ)區(qū)進(jìn)行標(biāo)記或分類的命令以用于通過操作系統(tǒng)和/或?qū)?yīng)的存儲(chǔ)設(shè)備的區(qū)分的處置。
圖2示出被擴(kuò)充以促進(jìn)存儲(chǔ)設(shè)備106中的存儲(chǔ)區(qū)的區(qū)分的處置的存儲(chǔ)系統(tǒng)。將假定客戶端108具有準(zhǔn)備好被標(biāo)記的文件系統(tǒng)對(duì)象(諸如文件)。例如通過使用文件系統(tǒng)API,客戶端108可能已經(jīng)創(chuàng)建或整理(trim)了諸如交換文件或其它文件之類的文件,以便被標(biāo)記以供區(qū)分的存儲(chǔ)。在步驟140處,客戶端108發(fā)起文件的標(biāo)記。這可以利用對(duì)操作系統(tǒng)的文件系統(tǒng)API的任何合適的擴(kuò)展來完成,例如,可以添加特殊的文件控制標(biāo)志(flag)。例如,在Unix類型的操作系統(tǒng)中,可以添加fsctl()選項(xiàng)。在Microsoft Windows(TM)系統(tǒng)中,可以添加新的FSCTL(文件系統(tǒng)控制)標(biāo)志。在另一實(shí)施例中,文件可以是在創(chuàng)建文件時(shí)指派的新的特殊類型的文件系統(tǒng)對(duì)象(例如特殊文件)。無論客戶端108通過其與文件系統(tǒng)對(duì)接以通知文件系統(tǒng)要標(biāo)記文件以用于差異化(differential)存儲(chǔ)處置的機(jī)制如何,對(duì)文件系統(tǒng)的初始標(biāo)記請(qǐng)求都將包括針對(duì)目標(biāo)文件的標(biāo)識(shí)符(identifier)(例如具有文件句柄或描述符)。作為請(qǐng)求處置過程的部分,文件系統(tǒng)使用文件標(biāo)識(shí)符來獲取存儲(chǔ)目標(biāo)文件的目標(biāo)存儲(chǔ)設(shè)備中的區(qū)塊的區(qū)塊標(biāo)識(shí)符(可以隱含地表示區(qū)塊標(biāo)識(shí)符,例如作為范圍或程度)。進(jìn)而,文件系統(tǒng)通過將區(qū)塊的記號(hào)和標(biāo)記操作向下傳遞到存儲(chǔ)堆棧來傳播初始請(qǐng)求。
在步驟144處,所傳播的(可能經(jīng)轉(zhuǎn)化的)標(biāo)記請(qǐng)求在文件系統(tǒng)以下的存儲(chǔ)層104處接收。例如,存儲(chǔ)層104可以具有存儲(chǔ)系統(tǒng)模塊142,該模塊在本描述中表示在操作系統(tǒng)的存儲(chǔ)堆棧中發(fā)現(xiàn)的任何組件。例如,存儲(chǔ)系統(tǒng)模塊142可能是解析虛擬盤文件(例如VHD、VMDK、VDI等)并且將它們提供為虛擬盤驅(qū)動(dòng)器的盤虛擬化組件。存儲(chǔ)系統(tǒng)模塊142可以實(shí)現(xiàn)為特殊的設(shè)備驅(qū)動(dòng)器、操作系統(tǒng)的存儲(chǔ)堆棧中的墊片(shim)、連接SCSI客戶端和目標(biāo)的SCSI層或子系統(tǒng)的部分等。在任何情況下,在步驟144處,存儲(chǔ)系統(tǒng)模塊142接收標(biāo)記請(qǐng)求。由于在一些實(shí)現(xiàn)中區(qū)分的存儲(chǔ)可能在諸如設(shè)備驅(qū)動(dòng)器或目標(biāo)存儲(chǔ)設(shè)備之類的存儲(chǔ)堆棧的較低層級(jí)處不被支持,因此存儲(chǔ)系統(tǒng)模塊142可以向下檢查堆棧以得到針對(duì)標(biāo)記請(qǐng)求的支持。在SCSI實(shí)現(xiàn)中,例如,這可能牽涉向目標(biāo)存儲(chǔ)設(shè)備的設(shè)備驅(qū)動(dòng)器146發(fā)送重要產(chǎn)品數(shù)據(jù)(VDP)請(qǐng)求,目標(biāo)存儲(chǔ)設(shè)備的設(shè)備驅(qū)動(dòng)器146進(jìn)而可以查詢(query)目標(biāo)存儲(chǔ)設(shè)備106。存儲(chǔ)系統(tǒng)模塊142然后檢查VDP以確定是否支持區(qū)分的存儲(chǔ)。要指出的是,該兼容性檢查不是必需的;錯(cuò)誤處置過程例如可以應(yīng)對(duì)任何不兼容性故障。忽略可能的不兼容性在實(shí)現(xiàn)中可以是特別地可行,在該實(shí)現(xiàn)中缺少區(qū)分的存儲(chǔ)支持僅造成以普通未區(qū)分的方式存儲(chǔ)數(shù)據(jù)的默認(rèn)動(dòng)作。
存儲(chǔ)系統(tǒng)模塊142可以將所接收的請(qǐng)求轉(zhuǎn)化成適合于存儲(chǔ)堆棧的下一層的格式。例如,標(biāo)記請(qǐng)求可以作為SATA或SCSI命令(例如新的命令、現(xiàn)有命令的新的參數(shù),諸如SCSI“模式選擇”等)來發(fā)布。存儲(chǔ)系統(tǒng)模塊142然后將標(biāo)記請(qǐng)求向下發(fā)送到存儲(chǔ)堆棧,標(biāo)記請(qǐng)求由設(shè)備驅(qū)動(dòng)器146直接或間接地接收,該設(shè)備驅(qū)動(dòng)器146向目標(biāo)存儲(chǔ)設(shè)備106傳遞請(qǐng)求或命令以用于實(shí)現(xiàn)。
總結(jié)來說,存儲(chǔ)系統(tǒng)模塊142可以是調(diào)解在發(fā)起端/客戶端與存儲(chǔ)設(shè)備之間的交換存儲(chǔ)請(qǐng)求(包括標(biāo)記請(qǐng)求)的操作系統(tǒng)的任何組件。取決于實(shí)現(xiàn),存儲(chǔ)系統(tǒng)模塊142可以包括或可以不包括多個(gè)分立的存儲(chǔ)層。存儲(chǔ)系統(tǒng)模塊142可以提供用戶空間與內(nèi)核之間的接口。存儲(chǔ)系統(tǒng)模塊142還可以作為業(yè)務(wù)引導(dǎo)器起作用,該業(yè)務(wù)引導(dǎo)器對(duì)存儲(chǔ)設(shè)備與發(fā)起端之間的交換進(jìn)行路由,可能地在向存儲(chǔ)設(shè)備傳遞和從其傳遞交換時(shí)在API或協(xié)議之間進(jìn)行轉(zhuǎn)化。存儲(chǔ)系統(tǒng)模塊可以執(zhí)行除了處置I/O請(qǐng)求之外的其它功能,該功能諸如管理命令隊(duì)列、處置錯(cuò)誤、管理用于存儲(chǔ)設(shè)備的電力等。
圖3示出目標(biāo)存儲(chǔ)設(shè)備106的示例??蛇x地,取決于實(shí)現(xiàn),在步驟148處,目標(biāo)存儲(chǔ)設(shè)備接收標(biāo)記請(qǐng)求170,并且控制邏輯172存儲(chǔ)被指派用于區(qū)分的存儲(chǔ)的區(qū)塊標(biāo)識(shí)符174(區(qū)塊標(biāo)識(shí)符可以編碼為范圍、程度列表等)??梢栽谠摃r(shí)間處執(zhí)行其它管理步驟。例如,控制邏輯172可以預(yù)留適當(dāng)?shù)目臻g,設(shè)立后備儲(chǔ)存器的新區(qū)段或元件,從SAN服務(wù)器請(qǐng)求存儲(chǔ)單元等等。在其中存儲(chǔ)設(shè)備是虛擬驅(qū)動(dòng)器的實(shí)現(xiàn)中,可以使用若干方案。首先,在單個(gè)虛擬盤圖像文件(例如VHD文件)內(nèi),可以(在邏輯上或在物理上)預(yù)留區(qū)塊或區(qū)。第二,可以具體地針對(duì)所指派的區(qū)塊創(chuàng)建分離的虛擬盤圖像文件。在其中目標(biāo)存儲(chǔ)設(shè)備是由多個(gè)存儲(chǔ)設(shè)備備份的經(jīng)虛擬化的盤(例如SAN盤、級(jí)聯(lián)的存儲(chǔ)設(shè)備集合等)的實(shí)施例中,要使用的存儲(chǔ)單元(例如后備儲(chǔ)存器)可以基于以下事實(shí)來選擇:已經(jīng)為了區(qū)分的存儲(chǔ)而標(biāo)記了區(qū)塊。例如,如果目標(biāo)存儲(chǔ)設(shè)備具有易失性存儲(chǔ)組件(例如RAM(隨機(jī)存取存儲(chǔ)器)盤),可以選擇該存儲(chǔ)組件以用于存儲(chǔ)所標(biāo)記的區(qū)塊。在圖3的示例中,第一存儲(chǔ)裝置176是要存儲(chǔ)針對(duì)文件177所標(biāo)記的區(qū)塊的存儲(chǔ)區(qū)、設(shè)備等,并且第二存儲(chǔ)裝置178是用于其它未經(jīng)標(biāo)記的區(qū)塊。在一個(gè)實(shí)施例中,所述一個(gè)實(shí)施例中,第一存儲(chǔ)裝置176存儲(chǔ)被標(biāo)記的文件的僅有且全部的區(qū)塊,并且第二存儲(chǔ)裝置178不存儲(chǔ)被標(biāo)記的文件的區(qū)塊??傮w上,目標(biāo)存儲(chǔ)設(shè)備的控制邏輯172可以基于以下事實(shí)而確定如何存儲(chǔ)區(qū)塊:已經(jīng)為了區(qū)分的存儲(chǔ)而標(biāo)記了區(qū)塊。被指派用于存儲(chǔ)區(qū)塊的介質(zhì)的區(qū)或單元以及區(qū)塊標(biāo)識(shí)符174然后可以在引向?qū)?yīng)文件(以及因而,針對(duì)該文件的區(qū)塊標(biāo)識(shí)符174)的寫入或存儲(chǔ)操作期間使用。
目標(biāo)區(qū)塊的記號(hào)可以在存儲(chǔ)堆棧中的一個(gè)或多個(gè)地方中的任何一個(gè)處維護(hù),該地方包括目標(biāo)存儲(chǔ)設(shè)備,并且不要求存儲(chǔ)堆棧的特定元件以維護(hù)目標(biāo)區(qū)塊的記號(hào)。也就是說,在步驟144和步驟148被執(zhí)行的程度上,步驟144和步驟148可以在通過存儲(chǔ)堆棧從文件系統(tǒng)到目標(biāo)存儲(chǔ)設(shè)備的路徑中的任何地方被執(zhí)行。
圖4示出用于處置對(duì)被標(biāo)記用于區(qū)分的存儲(chǔ)的文件的寫入的步驟。在步驟190處,客戶端108向文件系統(tǒng)發(fā)布普通寫入命令以在之前標(biāo)記的文件中存儲(chǔ)數(shù)據(jù)。如關(guān)于任何寫入命令那樣,文件系統(tǒng)傳遞寫入請(qǐng)求以供目標(biāo)存儲(chǔ)設(shè)備和可能地存儲(chǔ)堆棧的其它元件實(shí)施。這可以牽涉標(biāo)識(shí)要寫入的區(qū)塊。在一些操作系統(tǒng)中,為了速度起見,對(duì)諸如交換文件之類的特殊文件的寫入可以不遍歷操作系統(tǒng)的完整存儲(chǔ)堆棧,而是替代地例如可以直接傳遞到區(qū)塊存儲(chǔ)設(shè)備的設(shè)備驅(qū)動(dòng)器146(或者可以不傳遞通過文件系統(tǒng))。在一個(gè)實(shí)施例中,在步驟192處,寫入請(qǐng)求被傳遞,可能具有到存儲(chǔ)標(biāo)準(zhǔn)(例如SCSI、SATA)的寫入命令的轉(zhuǎn)化,并且該寫入請(qǐng)求在步驟194處由目標(biāo)存儲(chǔ)設(shè)備接收。
圖5示出接收寫入請(qǐng)求210的目標(biāo)存儲(chǔ)設(shè)備,該寫入請(qǐng)求包括要寫入的區(qū)塊的標(biāo)識(shí)符和用于區(qū)塊的數(shù)據(jù)。在步驟194處(圖4),存儲(chǔ)設(shè)備的控制邏輯172對(duì)照表示所標(biāo)記的區(qū)塊的所存儲(chǔ)的區(qū)塊標(biāo)識(shí)符174來比較傳入?yún)^(qū)塊標(biāo)識(shí)符?;谔幱谒鎯?chǔ)的區(qū)塊標(biāo)識(shí)符174的集合中的區(qū)塊標(biāo)識(shí)符,區(qū)塊存儲(chǔ)在適當(dāng)?shù)膮^(qū)、存儲(chǔ)單元、后備儲(chǔ)存器等中,例如第一存儲(chǔ)裝置176。如果傳入?yún)^(qū)塊標(biāo)識(shí)符不在所存儲(chǔ)的區(qū)塊標(biāo)識(shí)符174的集合中,則區(qū)塊可以以任何方式寫入。在一個(gè)實(shí)施例中,所標(biāo)記的區(qū)可以用于存儲(chǔ)已經(jīng)標(biāo)記的任何(且僅有的)文件。
如以上所指出的,可以在通過存儲(chǔ)堆棧到在其中存儲(chǔ)所標(biāo)記的區(qū)塊的記號(hào)的目標(biāo)存儲(chǔ)設(shè)備的路徑中的任何階段處執(zhí)行區(qū)分的存儲(chǔ)決定和操作。在一個(gè)實(shí)施例中,存儲(chǔ)系統(tǒng)模塊142存儲(chǔ)區(qū)塊標(biāo)識(shí)符174的集合。如果存儲(chǔ)系統(tǒng)模塊142實(shí)現(xiàn)虛擬盤,則存儲(chǔ)系統(tǒng)模塊可以做出關(guān)于要使用哪個(gè)后備儲(chǔ)存器,要使用哪個(gè)虛擬盤文件/容器等的選擇。
可以實(shí)現(xiàn)實(shí)施例,其中所標(biāo)記的區(qū)塊的記號(hào)未被存留并且如果主機(jī)器關(guān)機(jī)、崩潰或以其它方式丟失狀態(tài)信息則所標(biāo)記的區(qū)塊的記號(hào)可能安全地丟失。要指出的是,如本文所使用的術(shù)語“主機(jī)器”,是指物理機(jī)器和虛擬機(jī)器二者。考慮基于SCSI的實(shí)施例,其中區(qū)或區(qū)塊標(biāo)記是用于操作系統(tǒng)的交換文件。為了使用標(biāo)記特征,操作系統(tǒng)在其啟動(dòng)過程開始之后不久打開交換文件。操作系統(tǒng)發(fā)布針對(duì)交換文件的整理或取消映射命令,該命令在邏輯上舍棄交換文件中的任何在先數(shù)據(jù)。該命令向下通過文件系統(tǒng)和任何中間存儲(chǔ)層流動(dòng)到目標(biāo)存儲(chǔ)設(shè)備,在該目標(biāo)存儲(chǔ)設(shè)備中執(zhí)行整理或取消映射命令。操作系統(tǒng)然后發(fā)布引導(dǎo)至交換文件的文件系統(tǒng)控制(fsctl)命令以指示交換文件是特殊的文件(例如將具有特殊的存儲(chǔ)合同的文件)。存儲(chǔ)堆??梢詧?zhí)行各種內(nèi)部管理操作,該操作諸如發(fā)布SCSI詢問(inquiry)命令,檢查目標(biāo)設(shè)備的VDP,發(fā)布模式感測命令等??梢詧?zhí)行各種管理操作,該操作諸如選擇或創(chuàng)建后備儲(chǔ)存器,該后備儲(chǔ)存器具體地用于交換文件(例如分離的VHD)并且存儲(chǔ)相關(guān)區(qū)塊的列表。為了效率起見,區(qū)塊可以編碼為鏈接的列表,其中列表中的每一個(gè)節(jié)點(diǎn)標(biāo)識(shí)起始區(qū)塊和長度。當(dāng)發(fā)布通過文件系統(tǒng)(或存儲(chǔ)器管理器)對(duì)交換文件的寫入時(shí),如以上所描述的那樣處置要寫入的區(qū)塊。在主機(jī)器崩潰的事件中,普通未經(jīng)標(biāo)記的區(qū)塊存留。如果持有用于所標(biāo)記的交換文件的區(qū)塊的后備儲(chǔ)存器是非耐久的,則不存在問題,這是因?yàn)榻粨Q文件內(nèi)容將變得沒有實(shí)際意義。
為了詳盡起見,通過標(biāo)識(shí)附連到機(jī)器的各種虛擬盤文件(例如VHD文件)內(nèi)的交換文件的程度,并且通過將該信息從存儲(chǔ)堆棧向下傳遞到虛擬盤,標(biāo)識(shí)頁面I/O并且與可能指定(destine)用于相同存儲(chǔ)設(shè)備的其它I/O不同地處置它成為可能。當(dāng)機(jī)器是虛擬機(jī)時(shí),這可以針對(duì)任何訪客操作系統(tǒng)而完成,例如作為訪客操作系統(tǒng)的虛擬化(即啟發(fā)(enlightenment))集成服務(wù)的部分。在Microsoft Windows操作系統(tǒng)的一些版本中,可以修改文件系統(tǒng)層和區(qū)塊存儲(chǔ)層中的現(xiàn)有集成服務(wù)。將這樣的操作系統(tǒng)特征轉(zhuǎn)換(convert)成定制SCSI CDB(命令描述符區(qū)塊)是通過虛擬盤或存儲(chǔ)堆棧的任何較低層向下傳遞標(biāo)記功能性的便利方式。
在盤虛擬化堆棧(例如VHD堆棧)內(nèi),可以將交換文件程度標(biāo)記為不必要用于復(fù)制。在一個(gè)實(shí)施例中,盤虛擬化堆棧創(chuàng)建分離的VHD文件,例如稱為“pagefile-[unique-identifier].vhdx”。該分離的VHD文件將接收用于操作系統(tǒng)的所有交換文件I/O。VHD文件可以是動(dòng)態(tài)擴(kuò)張中的,具有與從其導(dǎo)出它的VHD相同的尺寸(例如相同的區(qū)塊大小、相同的虛擬盤大小等)。一旦該次級(jí)交換文件VHD打開,可以整理初級(jí)VHD中的所有對(duì)應(yīng)范圍,使得用于兩個(gè)VHD的盤上的總體大小與用于單個(gè)VHD的盤加上用于交換文件VHD的額外的VHD元數(shù)據(jù)集合上的大小相同。
每一次機(jī)器啟動(dòng)時(shí)構(gòu)建新的VHD將是可行的,但是將增加啟動(dòng)時(shí)間。為了進(jìn)行優(yōu)化,交換文件VHD可以在啟動(dòng)之間保持原位(例如當(dāng)機(jī)器關(guān)機(jī)時(shí)),其中其內(nèi)容可能地出于空間使用和安全性原因而進(jìn)行整理。
當(dāng)托管操作系統(tǒng)的主機(jī)(物理的或虛擬的)崩潰時(shí),將崩潰數(shù)據(jù)寫入到交換文件中,并且重啟主機(jī)。保留該數(shù)據(jù)對(duì)于診斷而言可以是有幫助的。因此,在一些實(shí)施例中,刪除頁面文件數(shù)據(jù),除非操作系統(tǒng)確定主機(jī)干凈利落地關(guān)機(jī)。如果主機(jī)完全關(guān)機(jī),這可能如整理數(shù)據(jù)那樣簡單,并且如果主機(jī)自身重啟則使其保持原位。這還可能是有幫助的性能優(yōu)化。在任何情況下,當(dāng)寫入崩潰轉(zhuǎn)儲(chǔ)(dump)時(shí),可以通過堆棧發(fā)送另一定制CDB,因而指示應(yīng)當(dāng)保留所標(biāo)記的數(shù)據(jù)。
在其中操作系統(tǒng)的直接主機(jī)是虛擬機(jī)的實(shí)施例中,通過將頁面數(shù)據(jù)拆分到分離的VHD文件中,整個(gè)VM快照可以繼續(xù)如所期望的那樣工作,其中創(chuàng)建差分化盤鏈以用于交換VHD,這正如為了其它VHD文件而創(chuàng)建這樣的鏈一樣。存儲(chǔ)遷移可以以類似的方式工作。
通過將交換文件拆分到分離的VHD文件中,可以應(yīng)用分離的高速緩存策略。取代于促使所有寫入通過到介質(zhì),如果真的寫入的話,允許寫入被高速緩存在主機(jī)RAM中并且徐徐寫入到VHD成為可能。這可以降低底層存儲(chǔ)子系統(tǒng)上的負(fù)載,并且可以使得在要讀取的數(shù)據(jù)碰巧仍舊在RAM中時(shí)來自頁面文件的讀取不太昂貴。這將有效地將訪客操作系統(tǒng)的文件系統(tǒng)高速緩存延伸到主機(jī)器的RAM中,這將使得在沒有客體協(xié)作的情況下整理該高速緩存是可能的。這可能使得向虛擬機(jī)分配較少的總體RAM是可能的,因?yàn)榭梢允鬼撁鍵/O在統(tǒng)計(jì)上更廉價(jià),從而減少用于文件高速緩存的VM內(nèi)的所需要的RAM。
在另一實(shí)施例中,區(qū)通過軟件的標(biāo)記可以用于提供服務(wù)特征的質(zhì)量。在決定存儲(chǔ)設(shè)備的哪個(gè)部分將存儲(chǔ)所標(biāo)記的區(qū)可以是有用的同時(shí),服務(wù)特征的性能或質(zhì)量還可以實(shí)現(xiàn)成利用區(qū)標(biāo)記。在一個(gè)實(shí)施例中,存儲(chǔ)設(shè)備可以基于區(qū)塊是否在所描述或標(biāo)記的區(qū)中而提供吞吐量、延時(shí)、每秒交易等的區(qū)分的水平。存儲(chǔ)設(shè)備的其它功能也可以將區(qū)塊標(biāo)記考慮在內(nèi)。例如,涉及從易失性高速緩存存儲(chǔ)裝置向非易失性介質(zhì)刷新 (flush)數(shù)據(jù)的操作中,錯(cuò)誤檢查、訪問優(yōu)先級(jí)或其它可以以允許存儲(chǔ)設(shè)備提供關(guān)于所標(biāo)記的區(qū)塊的區(qū)分的執(zhí)行的方式來執(zhí)行。存儲(chǔ)執(zhí)行還可以實(shí)現(xiàn)在存儲(chǔ)堆棧中(例如在SCSI子系統(tǒng)中),其可以基于存儲(chǔ)數(shù)據(jù)是否對(duì)應(yīng)于所標(biāo)記的區(qū)而對(duì)路徑進(jìn)行優(yōu)先化、調(diào)整總線帶寬等等。
圖6示出其上可以實(shí)現(xiàn)以上描述的實(shí)施例的計(jì)算設(shè)備298的細(xì)節(jié)。計(jì)算設(shè)備298可以具有顯示器300、網(wǎng)絡(luò)接口301,以及存儲(chǔ)裝置302和處理硬件304,處理硬件304可以是以下中的任何一個(gè)或多個(gè)的組合:中央處理單元、圖形處理單元、模擬到數(shù)字轉(zhuǎn)換器、總線芯片、現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)、專用標(biāo)準(zhǔn)產(chǎn)品(ASSP)或復(fù)雜可編程邏輯器件(CPLD)等。存儲(chǔ)裝置302可以是磁性存儲(chǔ)裝置、靜態(tài)存儲(chǔ)器、易失性存儲(chǔ)器等的任何組合。如本文所使用的術(shù)語“存儲(chǔ)裝置”的含義,不是指信號(hào)或能量本身,而是指可能地經(jīng)虛擬化的物理裝置,該物理裝置包括諸如磁性存儲(chǔ)介質(zhì)、光學(xué)存儲(chǔ)介質(zhì)、靜態(tài)存儲(chǔ)器設(shè)備等之類的物理介質(zhì),而不是信號(hào)本身。計(jì)算設(shè)備298的硬件元件可以以計(jì)算領(lǐng)域中被良好理解的方式協(xié)作。此外,輸入設(shè)備306可以與計(jì)算設(shè)備298集成或與其通信。計(jì)算設(shè)備298可以具有任何形狀因子,或者可以使用在任何類型的包容(encompassing)設(shè)備中。計(jì)算設(shè)備298可以以手持設(shè)備的形式,該手持設(shè)備諸如智能電話、平板計(jì)算機(jī)、游戲設(shè)備、服務(wù)器、機(jī)架安裝或背板式板上計(jì)算機(jī)、片上系統(tǒng)或其它設(shè)備。
以上所討論的實(shí)施例和特征可以以存儲(chǔ)于易失性或非易失性計(jì)算機(jī)或設(shè)備可讀裝置中的信息的形式而被實(shí)現(xiàn),其中這樣的信息能夠配置計(jì)算設(shè)備298以在操作時(shí)執(zhí)行本文所描述的實(shí)施例。這些裝置可以包括諸如光學(xué)存儲(chǔ)裝置(例如致密盤只讀存儲(chǔ)器(CD-ROM))、磁性介質(zhì)、全息存儲(chǔ)裝置、閃速只讀存儲(chǔ)器(ROM)或用于存儲(chǔ)數(shù)字信息的其它設(shè)備之類的裝置。所存儲(chǔ)的信息可以以機(jī)器可執(zhí)行指令(例如經(jīng)編譯的可執(zhí)行二進(jìn)制代碼)、源代碼、字節(jié)代碼或可以用于使得計(jì)算設(shè)備能夠或?qū)⒂?jì)算設(shè)備配置成執(zhí)行本文所描述的實(shí)施例的其它信息的形式。這還被視為至少包括易失性存儲(chǔ)器(諸如隨機(jī)存取存儲(chǔ)器(RAM)和/或虛擬存儲(chǔ)器)以及非易失性設(shè)備,該易失性存儲(chǔ)器在實(shí)施實(shí)施例的軟件的執(zhí)行期間存儲(chǔ)諸如中央處理單元(CPU)指令之類的信息,并且該非易失性設(shè)備存儲(chǔ)允許加載和執(zhí)行程序或可執(zhí)行文件的信息。