亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

在鏡像虛擬機(jī)系統(tǒng)中的存儲器檢查點(diǎn)設(shè)置的制作方法

文檔序號:6495306閱讀:321來源:國知局
在鏡像虛擬機(jī)系統(tǒng)中的存儲器檢查點(diǎn)設(shè)置的制作方法
【專利摘要】提供了用于鏡像虛擬機(jī)系統(tǒng)中的存儲器檢查點(diǎn)設(shè)置的方法和系統(tǒng)。該方法包括:存儲控制器從虛擬機(jī)接收對存儲器的修改操作,通過向存儲器的檢查點(diǎn)設(shè)置區(qū)域存儲所述修改操作數(shù)據(jù)并保留所存儲的先前數(shù)據(jù)狀態(tài),以非破壞性方式執(zhí)行所述修改操作。該方法也包括:接收檢查點(diǎn)通知,并從所述檢查點(diǎn)設(shè)置區(qū)域提交修改操作數(shù)據(jù),并釋放所存儲的先前數(shù)據(jù)狀態(tài)。如果接收到故障轉(zhuǎn)移通知,則存儲控制器將物理存儲器恢復(fù)為匹配檢查點(diǎn)狀態(tài)。
【專利說明】在鏡像虛擬機(jī)系統(tǒng)中的存儲器檢查點(diǎn)設(shè)置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及在鏡像虛擬機(jī)中的基于檢查點(diǎn)的高獲得性解決方案的領(lǐng)域。具體地說,本發(fā)明涉及在鏡像虛擬機(jī)檢查點(diǎn)設(shè)置中的存儲寫入。
【背景技術(shù)】
[0002]虛擬機(jī)鏡像是運(yùn)行虛擬機(jī)(VM)使得如果出現(xiàn)硬件故障,它可以從存在于第二物理機(jī)器上的鏡像或同一物理機(jī)器的邏輯分區(qū)繼續(xù)執(zhí)行的方式。在主要虛擬機(jī)和輔助虛擬機(jī)之間交換虛擬機(jī)狀態(tài)。這是通過下述方式來完成的:通過捕獲第一虛擬機(jī)的狀態(tài)并且將其傳送到第二虛擬機(jī)來對主要虛擬機(jī)進(jìn)行檢查點(diǎn)設(shè)置。目標(biāo)是減少計算機(jī)系統(tǒng)中的硬件故障引起的停機(jī)時間。
[0003]這些基于檢查點(diǎn)的系統(tǒng)被建立在現(xiàn)有的虛擬機(jī)管理程序的頂部,并且通過下述方式來擴(kuò)展管理程序的功能:捕獲對主要虛擬機(jī)的存儲器狀態(tài)的修改,并且以很頻繁的間隔(例如,每25ms)將其傳送到輔助計算系統(tǒng)。
[0004]核心思想是,如果主計算系統(tǒng)故障,則輔助計算系統(tǒng)具有幾乎在準(zhǔn)備好立即執(zhí)行的精確的相同狀態(tài)中的虛擬機(jī)。當(dāng)啟動該輔助虛擬機(jī)時,它開始接收和發(fā)送網(wǎng)絡(luò)分組,并且當(dāng)它在主計算系統(tǒng)上運(yùn)行時就像虛擬機(jī)那樣執(zhí)行盤I/O。來自外部世界的效果是行為的最少(毫秒)的不連續(xù);類似于如果到虛擬機(jī)的網(wǎng)絡(luò)連接已經(jīng)被簡短地斷開和重新連接。
[0005]因?yàn)樘摂M機(jī)未保持完全步調(diào)一致,而是僅在這些頻率檢查點(diǎn)上同步,所以必須特殊地處理主要虛擬機(jī)向盤的寫入。這是因?yàn)?,為了保證正確性,輔助虛擬機(jī)必須不僅從主要虛擬機(jī)的狀態(tài)的有效檢查點(diǎn)恢復(fù),而且盤存儲器也必須在精確地相同狀態(tài)中。實(shí)際上,輔助虛擬機(jī)是以一定數(shù)量的毫秒“恢復(fù)”到最后檢查點(diǎn)的主要虛擬機(jī)。
[0006]基于檢查點(diǎn)的高可獲得性是下述技術(shù):通過該技術(shù),在主機(jī)上運(yùn)行的虛擬機(jī)(主要主機(jī))規(guī)則地(例如,每25ms)向另一個主機(jī)(“輔助主機(jī)”)上鏡像其處理器和存儲器狀態(tài)。主要主機(jī)和輔助主機(jī)可以是同一物理機(jī)器的邏輯部分。
[0007]用于鏡像處理的基本方法包含下面的步驟:
[0008]跟蹤對虛擬機(jī)的存儲器的改變;
[0009]周期地停止虛擬機(jī);
[0010]通過網(wǎng)絡(luò)向輔助主機(jī)發(fā)送這些改變;
[0011]等待輔助主機(jī)確認(rèn)存儲器和CPU狀態(tài)更新的接收;并且
[0012]恢復(fù)虛擬機(jī)。
[0013]這保證了如果主機(jī)經(jīng)受突然的硬件故障,則輔助主機(jī)能夠沒有服務(wù)損失地恢復(fù)工作負(fù)荷。該處理被稱為“故障轉(zhuǎn)移(failover)”。
[0014]在一種很單純的實(shí)現(xiàn)方式中,網(wǎng)絡(luò)和盤I/O必須使得執(zhí)行檢查點(diǎn)。這是因?yàn)橹饕鳈C(jī)可以不釋放網(wǎng)絡(luò)分組或修改在盤上的塊,僅僅發(fā)生故障,并且使得輔助主機(jī)從最后的檢查點(diǎn)恢復(fù),并且再一次重發(fā)分組,或者再一次讀取現(xiàn)在的錯誤塊。分組發(fā)送必須僅發(fā)生一次,并且盤狀態(tài)必須在獲取檢查點(diǎn)時與其匹配。[0015]關(guān)于盤1/0,“寫入時的檢查點(diǎn)”的單純實(shí)現(xiàn)方式剛好在向盤控制器發(fā)出I/O操作之前在主要主機(jī)上執(zhí)行檢查點(diǎn)。對于“寫入時的檢查點(diǎn)”的一種基本優(yōu)化是將多個寫入組合在一起,并且在一個行程(one go)中對數(shù)個寫入設(shè)置檢查點(diǎn)。傳統(tǒng)上,虛擬機(jī)跟蹤待決的這些I/O操作,直到檢查點(diǎn)已經(jīng)完成,并且已經(jīng)向盤子系統(tǒng)(disk subsystem)發(fā)出I/O操作并且在盤子系統(tǒng)上完成該I/O操作。待決I/O操作的此了解作為檢查點(diǎn)狀態(tài)的一部分連同虛擬機(jī)的CPU和存儲器狀態(tài)被交換??梢栽趫D1中看到一個示例。
[0016]參見圖1,提供了現(xiàn)有技術(shù)中公知的寫入時的檢查點(diǎn)的圖示100,其中,隨著時間寫入的進(jìn)展被示出為在圖示100中垂直向下地進(jìn)展。主要虛擬機(jī)110向盤塊120進(jìn)行寫入。通過對角斜線陰影來示出改變的塊。
[0017]在該圖示100中,通過主要虛擬機(jī)110來修改塊130的序列的第一塊131,隨后是第二塊132。對第一和第二塊131、132的修改被存儲(141、142),并且在下一個檢查點(diǎn)150處被寫入(143)到盤塊120。盤塊120發(fā)送確認(rèn)(144)以確認(rèn)該寫入。
[0018]在檢查點(diǎn)150后,修改另一個第三塊133,隨后是第四塊134。對于第三和第四塊133、134的修改被存儲(145、146),并且在下一個檢查點(diǎn)151處被寫入(147)到盤塊120。盤塊120發(fā)送確認(rèn)(148)以確認(rèn)該寫入。
[0019]該方法的問題是添加到寫入操作的額外延遲。寫入操作直到在下一個檢查點(diǎn)后才成功完成,并且因此,在其中每25ms獲取檢查點(diǎn)的系統(tǒng)中,這將向每一個寫入添加平均12.5ms ο
[0020]如果主要主機(jī)在這個確認(rèn)的檢查點(diǎn)和未來的檢查點(diǎn)之間發(fā)生故障,則可能難以確定是否待決的I/o操作完成。如此一來,重新發(fā)出所有待決的I/o操作,強(qiáng)制盤子系統(tǒng)反應(yīng)正確的狀態(tài)。
[0021]對于上面的內(nèi)容的直接優(yōu)化是忽略不修改盤上狀態(tài)的任何I/O操作(B卩,僅讀取操作)??梢灾苯拥卦试S這些,而不執(zhí)行檢查點(diǎn),因?yàn)樗鼈儾恍薷娜魏螤顟B(tài)。
[0022]所述方法的兩個關(guān)鍵缺陷如下:
[0023]1.必須截斷和延遲虛擬機(jī)的存儲器I/O操作,直到與輔助機(jī)器交換了下一個檢查點(diǎn)。這增加了 I/o操作的延遲。
[0024]2.在除了該最單純的實(shí)現(xiàn)方式之外的任何實(shí)現(xiàn)方式中,必須將不修改存儲器的操作(諸如僅讀取)與確實(shí)修改存儲器的那些操作區(qū)別。這去除了來自那些操作的延遲開銷,但代價是必須在執(zhí)行時檢查并且明白每個I/o操作的語義。
[0025]因此,在本領(lǐng)域中需要解決上述問題。

【發(fā)明內(nèi)容】

[0026]根據(jù)本發(fā)明的第一方面,提供了一種用于鏡像虛擬機(jī)系統(tǒng)中的存儲器檢查點(diǎn)設(shè)置的方法,包括存儲控制器:從虛擬機(jī)接收對于存儲器的修改操作;通過向存儲器的檢查點(diǎn)設(shè)置區(qū)域存儲所述修改操作數(shù)據(jù)并且保留所存儲的先前數(shù)據(jù)狀態(tài)來以非破壞性方式執(zhí)行所述修改操作;接收檢查點(diǎn)通知;并且,從所述檢查點(diǎn)設(shè)置區(qū)域提交(commit)修改操作數(shù)據(jù),并且釋放所存儲的先前數(shù)據(jù)狀態(tài)。
[0027]根據(jù)本發(fā)明的第二方面,提供了一種用于鏡像虛擬機(jī)系統(tǒng)中的存儲器檢查點(diǎn)設(shè)置的系統(tǒng),包括:處理器;存儲控制器,包括:由客戶機(jī)可尋址的邏輯驅(qū)動器向物理存儲器的映射部件;非破壞性修改操作部件,用于以非破壞性方式來執(zhí)行接收的存儲修改操作,包括:暫時存儲部件,用于向存儲器的檢查點(diǎn)設(shè)置區(qū)域存儲所述修改操作數(shù)據(jù),并且保留所存儲的先前數(shù)據(jù)狀態(tài);檢查點(diǎn)設(shè)置接收部件,用于從檢查點(diǎn)的虛擬機(jī)接收通知;以及,提交部件,用于從所述檢查點(diǎn)設(shè)置區(qū)域提交修改操作數(shù)據(jù),并且釋放所存儲的先前數(shù)據(jù)狀態(tài)。
[0028]根據(jù)本發(fā)明的第三方面,提供了一種在計算機(jī)可讀介質(zhì)上存儲并且能夠被安裝到數(shù)字計算機(jī)的內(nèi)部存儲器內(nèi)的計算機(jī)程序,包括軟件代碼部分,用于當(dāng)所述程序在計算機(jī)上運(yùn)行時執(zhí)行本發(fā)明的第一方面的方法。
【專利附圖】

【附圖說明】
[0029]在說明書的結(jié)尾部分中特別指出并且清楚地要求保護(hù)被看作本發(fā)明的主題。當(dāng)使用附圖閱讀時,通過參考下面的詳細(xì)描述,可以關(guān)于組織和操作方法以及其目的、特征和優(yōu)點(diǎn)來最好地理解本發(fā)明,附圖中:
[0030]圖1是在現(xiàn)有技術(shù)中已知的寫入時檢查點(diǎn)的處理的示意圖;
[0031]圖2A和圖2B是根據(jù)本發(fā)明的系統(tǒng)的實(shí)施例的框圖;
[0032]圖3是其中可以實(shí)現(xiàn)本發(fā)明的計算機(jī)系統(tǒng)的框圖;
[0033]圖4是根據(jù)本發(fā)明的方法的流程圖;并且
[0034]圖5是根據(jù)本發(fā)明的檢查點(diǎn)設(shè)置的處理的示意圖。
【具體實(shí)施方式】
[0035]可以明白,為了說明的簡化和清楚,不必根據(jù)比例來繪制附圖中所示的元件。例如,為了清楚,可以將一些元件的尺寸相對于其他元件夸大。而且,當(dāng)認(rèn)為適當(dāng)時,可以在附圖中重復(fù)附圖標(biāo)號,以指示對應(yīng)的或類似的特征。
[0036]在下面的詳細(xì)描述中,給出了多個具體細(xì)節(jié)以便徹底明白本發(fā)明。然而,本領(lǐng)域內(nèi)的技術(shù)人員可以明白,可以在沒有這些具體細(xì)節(jié)的情況下實(shí)施本發(fā)明。在其他情況下,未詳細(xì)描述公知的方法、過程和部件,以便不混淆本發(fā)明。
[0037]描述了方法、系統(tǒng)和計算機(jī)程序產(chǎn)品,其中,取代截斷用于在虛擬機(jī)處的檢查點(diǎn)設(shè)置的I/o操作,將它們傳送到底層的存儲控制器。這些操作看起來正常地完成;然而,通過存儲控制器以非破壞性方式執(zhí)行修改盤上狀態(tài)(on-disk)的操作,保留原始塊(例如,通過寫入時復(fù)制(COW)或?qū)懭霑r重新定向(ROW)機(jī)制)。
[0038]當(dāng)檢查點(diǎn)出現(xiàn)時,向存儲控制器通知這一點(diǎn),并且向存儲控制器提供相關(guān)聯(lián)的檢查點(diǎn)標(biāo)識符??梢匀缓笥纱鎯刂破魈峤恍薷牟僮?,并且不再保留原始塊。在檢查點(diǎn)后,虛擬機(jī)的執(zhí)行恢復(fù),并且I/o操作繼續(xù)向前進(jìn)行(flow)。這保證在任何給定的時間點(diǎn),存儲控制器可以將盤上的狀態(tài)恢復(fù)到與識別的檢查點(diǎn)匹配的狀態(tài)。
[0039]該機(jī)制允許客戶機(jī)體驗(yàn)高性能1/0,并且沒有由寫入時的檢查點(diǎn)方法引入的額外延遲地完成I/O操作。
[0040]如果出現(xiàn)故障轉(zhuǎn)移,則指令存儲控制器在執(zhí)行恢復(fù)之前將存儲器恢復(fù)到所識別的檢查點(diǎn)階段。
[0041]“邏輯驅(qū)動器”被提供為由存儲控制器通過給定的LUN (邏輯單元)提供的存儲器。標(biāo)準(zhǔn)邏輯驅(qū)動器包含構(gòu)成由客戶機(jī)可尋址的存儲器的一組塊。[0042]在所述系統(tǒng)中,存儲控制器為在由客戶機(jī)可尋址的那些存儲塊之上和之外的另外的存儲器作好準(zhǔn)備。該另外的存儲器用于允許保留修改的塊,直到檢查點(diǎn)完成。在下面的文本中,該另外的存儲器被稱為“檢查點(diǎn)區(qū)域”,包含“檢查點(diǎn)設(shè)置塊”。
[0043]在所述系統(tǒng)中,客戶機(jī)不直接改寫(overwrite)修改的塊。保留原始塊,直到下一個檢查點(diǎn)。
[0044]向客戶機(jī)提供用于將邏輯驅(qū)動器的給定時間點(diǎn)視圖與標(biāo)識符“檢查點(diǎn)ID”相關(guān)聯(lián)的機(jī)制。在每個檢查點(diǎn)間隔處,客戶機(jī)(或代表客戶機(jī)的代理,諸如管理程序)將當(dāng)前的盤狀態(tài)與新的檢查點(diǎn)ID相關(guān)聯(lián)。所述方法和系統(tǒng)支持多個并行的檢查點(diǎn)。
[0045]如果出現(xiàn)故障轉(zhuǎn)移,則指令存儲控制器將盤狀態(tài)恢復(fù)到與給定的檢查點(diǎn)ID匹配的狀態(tài)。
[0046]在一個實(shí)施例中,作為另外的在物理盤上的存儲器(on-physical-disk)提供了檢查點(diǎn)設(shè)置區(qū)域。在這個實(shí)施例中,使用“寫入時的復(fù)制”或“寫入時的重新定向”來保留原始塊,直到下一個檢查點(diǎn)。
[0047]在另一個實(shí)施例中,作為諸如存儲控制器的寫入高速緩存器的非易失性存儲器來提供檢查點(diǎn)設(shè)置區(qū)域。在利用非易失性存儲器來存儲檢查點(diǎn)設(shè)置數(shù)據(jù)的實(shí)施例中,元數(shù)據(jù)/目錄結(jié)構(gòu)可以包含檢查點(diǎn)設(shè)置ID的另一個值。作為示例,而不是通過LBA (邏輯塊地址)來索引的高速緩存,它可以通過LBA和CheckpointID來加索引。當(dāng)提交檢查點(diǎn)時,具有那個CheckpointID的塊然后被“降級(destage)”,并且被寫出到物理盤。
[0048]該實(shí)施例不被限制為管理在逐塊基礎(chǔ)上的寫入。非易失性存儲器方法例如可能例如通過扇區(qū)(它在存儲控制器中經(jīng)常是512字節(jié))在更細(xì)的粒度上如此進(jìn)行。
[0049]參見圖2A和圖2B,框圖示出所述系統(tǒng)200的示例實(shí)施例。
[0050]系統(tǒng)200包括用于提供鏡像的高可獲得性系統(tǒng)的主要虛擬機(jī)210和輔助虛擬機(jī)220。主要和輔助虛擬機(jī)210、220在獨(dú)立的物理機(jī)器201、202上運(yùn)行。在一個實(shí)施例中,主要和輔助虛擬機(jī)210、220可以是LPAR (邏輯分區(qū)(虛擬計算平臺))。每個主要和輔助虛擬機(jī)210、220可以具有管理程序,該管理程序包括網(wǎng)絡(luò)分組和存儲寫入的輸入/輸出管理。
[0051]虛擬機(jī)210、220或諸如管理程序的代理可以包括檢查點(diǎn)設(shè)置機(jī)構(gòu)211、221。在所述系統(tǒng)200中,虛擬機(jī)210、220的檢查點(diǎn)設(shè)置機(jī)構(gòu)211、221將邏輯驅(qū)動器的給定時間點(diǎn)視圖與用于識別檢查點(diǎn)的標(biāo)識符相關(guān)聯(lián)。在每個檢查點(diǎn)間隔,檢查點(diǎn)設(shè)置機(jī)構(gòu)211、221將當(dāng)前盤狀態(tài)與新的檢查點(diǎn)ID相關(guān)聯(lián)。
[0052]主要和輔助虛擬機(jī)210、220可以向存儲系統(tǒng)230發(fā)送操作。虛擬I/O服務(wù)器可以具有主機(jī)總線適配器,用于與存儲系統(tǒng)230進(jìn)行通信。在一個實(shí)施例中,可以提供下述機(jī)構(gòu),該機(jī)構(gòu)用于在虛擬機(jī)210、220之間共享硬件,使得當(dāng)利用單根(single root)10虛擬化來使用單個存儲系統(tǒng)適配器時,每個虛擬機(jī)210、220認(rèn)為它在直接地向其本身的存儲系統(tǒng)適配器通話。
[0053]提供了存儲系統(tǒng)230。在一個實(shí)施例中,存儲系統(tǒng)230可以是存儲區(qū)域網(wǎng)(SAN),諸如光纖通道SAN。存儲系統(tǒng)230包括存儲控制器231,存儲控制器231管理存儲系統(tǒng)230的集中存儲。通過給定的邏輯單元(LUN)提供了作為邏輯驅(qū)動器呈現(xiàn)的存儲裝置232-234。邏輯驅(qū)動器包含構(gòu)成可由客戶機(jī)訪問的存儲器的一組塊。
[0054]存儲控制器231也包括檢查點(diǎn)設(shè)置系統(tǒng)240。檢查點(diǎn)設(shè)置系統(tǒng)240可以包括映射部件241,用于將邏輯驅(qū)動器地址映射到物理存儲裝置232-234。檢查點(diǎn)設(shè)置系統(tǒng)240可以包括非破壞性修改操作部件242,非破壞性修改操作部件242包括暫時存儲部件243,用于向存儲器236的檢查點(diǎn)設(shè)置區(qū)域存儲修改操作數(shù)據(jù),并且保留存儲的先前數(shù)據(jù),直到提交了檢查點(diǎn)。
[0055]檢查點(diǎn)設(shè)置機(jī)構(gòu)211、221跟蹤每個虛擬機(jī)的檢查點(diǎn)設(shè)置ID。從主要虛擬機(jī)210向輔助虛擬機(jī)220提供這個ID,作為向輔助虛擬機(jī)發(fā)送的檢查點(diǎn)狀態(tài)的一部分。它也被發(fā)送到存儲控制器231的檢查點(diǎn)設(shè)置系統(tǒng)240。
[0056]存儲控制器231也包括檢查點(diǎn)設(shè)置接收部件244,用于從具有檢查點(diǎn)標(biāo)識符的檢查點(diǎn)的虛擬機(jī)接收通知。可以“在帶中”接收這樣的通知,即,當(dāng)存儲器讀取/寫入它們時,它們通過相同的通信信道到達(dá)。替代地,也可以實(shí)現(xiàn)檢查點(diǎn)請求的帶外通信。
[0057]存儲控制器231也包括提交部件246,用于提交來自檢查點(diǎn)設(shè)置區(qū)域的修改操作數(shù)據(jù),并且釋放存儲的先前數(shù)據(jù)狀態(tài)。存儲控制器231也包括故障轉(zhuǎn)移部件245,用于從故障轉(zhuǎn)移的虛擬機(jī)接收通知,并且將物理存儲器恢復(fù)為匹配所識別的檢查點(diǎn)狀態(tài)。
[0058]在所述系統(tǒng)中,另外的存儲器被提供為存儲器236的檢查點(diǎn)設(shè)置區(qū)域。檢查點(diǎn)設(shè)置區(qū)域236是在寫入操作數(shù)據(jù)被檢查點(diǎn)確認(rèn)之前存儲它的位置。這可以采取各種不同的形式。
[0059]在圖2A中所示的一個實(shí)施例中,檢查點(diǎn)設(shè)置區(qū)域236是在諸如物理驅(qū)動器的存儲裝置處的另外的塊的區(qū)域。在該情況下,當(dāng)提交檢查點(diǎn)時,檢查點(diǎn)設(shè)置區(qū)域變?yōu)樘峤坏臄?shù)據(jù),并且先前的數(shù)據(jù)區(qū)域變?yōu)樾碌臋z查點(diǎn)設(shè)置區(qū)域。與圖5相關(guān)地更詳細(xì)地描述了這個實(shí)施例。
[0060]在圖2B中所示的另一個實(shí)施例中,可以將檢查點(diǎn)設(shè)置區(qū)域236提供為例如在存儲控制器231的寫入高速緩存器中的非易失性存儲器。當(dāng)提交檢查點(diǎn)時,從寫入高速緩存器向存儲裝置232-234寫入數(shù)據(jù)。
[0061]在利用非易失性存儲器來保留檢查點(diǎn)設(shè)置數(shù)據(jù)的圖2B的實(shí)施例中,元數(shù)據(jù)/目錄結(jié)構(gòu)可以包含檢查點(diǎn)設(shè)置ID的另一個值。作為示例,而不是通過LBA (邏輯塊地址)來索引的高速緩存,它可以通過LBA和CheckpointID (檢查點(diǎn)ID)來加索引。當(dāng)提交檢查點(diǎn)時,具有那個CheckpointID的塊然后被“降級”,并且被寫出到物理盤232-234。
[0062]在圖2B的實(shí)施例中,存儲控制器231的檢查點(diǎn)設(shè)置系統(tǒng)240可以包括用于LBA、檢查點(diǎn)ID跟蹤的跟蹤部件250。
[0063]即使使用以寫入高速緩存形式的非易失性存儲器檢查點(diǎn)設(shè)置區(qū)域,存儲控制器231也可以繼續(xù)使用寫入高速緩存。
[0064]可以基于來自主機(jī)的I/O吞吐量,在多個邏輯驅(qū)動器上共享并且根據(jù)需要動態(tài)地分配檢查點(diǎn)設(shè)置區(qū)域236。存在可能取決于系統(tǒng)是實(shí)現(xiàn)非易失性存儲器檢查點(diǎn)設(shè)置還是物理盤上的C0W/R0W檢查點(diǎn)設(shè)置的實(shí)現(xiàn)方式的多個選項。
[0065]選項可以包括:
[0066]?要求主機(jī)使能每個LUN的檢查點(diǎn)設(shè)置,并且作為其一部分,允
[0067]許它協(xié)商/請求 分配多少存儲量(以及也許包括如何分配)。
[0068]?不要求上面的內(nèi)容,并且僅根據(jù)需要分配另外的存儲量。
[0069]?不要求協(xié)商,但是具有在所有的檢查點(diǎn)設(shè)置LUN上共享的、內(nèi)部的預(yù)先分配的一組檢查點(diǎn)設(shè)置存儲器。
[0070]參見圖3,用于實(shí)現(xiàn)本發(fā)明的各方面的一種示例性系統(tǒng)包括適合于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)300,其包括至少一個處理器301,該至少一個處理器301通過總線系統(tǒng)303直接或間接耦合到存儲器元件。這些存儲器元件可以包括在程序代碼的實(shí)際執(zhí)行期間使用的本地存儲器、海量存儲器和提供至少一些程序代碼的暫時存儲以便減少在執(zhí)行期間必須從海量存儲器獲取代碼的次數(shù)的高速緩存器。
[0071]這些存儲器元件可以包括只讀存儲器(ROM) 304和隨機(jī)存取存儲器(RAM) 305形式的系統(tǒng)存儲器302?;据斎?輸出系統(tǒng)(BIOS) 306可以被存儲在R0M304中。系統(tǒng)軟件307可以被存儲在包括操作系統(tǒng)軟件308的RAM305中。軟件應(yīng)用310也可以被存儲在RAM305 中。
[0072]系統(tǒng)300也可以包括:主存儲部件311,諸如磁硬盤驅(qū)動器;以及輔助存儲部件312,諸如磁盤驅(qū)動器和光盤驅(qū)動器。驅(qū)動器和它們的相關(guān)聯(lián)的計算機(jī)可讀介質(zhì)提供用于系統(tǒng)300的計算機(jī)可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的非易失性存儲。軟件應(yīng)用可以被存儲在主要和輔助存儲部件311、312以及系統(tǒng)存儲器302上。
[0073]計算系統(tǒng)300可以使用經(jīng)由網(wǎng)絡(luò)適配器316到一個或多個遠(yuǎn)程計算機(jī)的邏輯連接來在聯(lián)網(wǎng)環(huán)境中運(yùn)行。
[0074]輸入/輸出裝置313可以被直接或通過中間I/O控制器耦合到系統(tǒng)。用戶可以通過諸如鍵盤、指示裝置或其他輸入裝置(例如,麥克風(fēng)、操縱桿、游戲墊、碟形衛(wèi)星天線或掃描儀等)的輸入裝置向系統(tǒng)300內(nèi)輸入命令和信息。輸出裝置可以包括揚(yáng)聲器、打印機(jī)等。顯示裝置314也經(jīng)由諸如視頻適配器315的接口連接到系統(tǒng)總線303。
[0075]參見圖4,流程圖400示出在存儲控制器處執(zhí)行的所述方法的一個示例實(shí)施例。
[0076]向客戶機(jī),即主要和輔助虛擬機(jī)提供(401)可尋址的存儲器的邏輯驅(qū)動器。從虛擬機(jī)接收(402)接收修改操作(例如,寫入操作或修改盤上狀態(tài)的其他形式的操作)。在保留原始數(shù)據(jù)的同時,修改操作數(shù)據(jù)被存儲(403)到存儲器的檢查點(diǎn)設(shè)置區(qū)域。
[0077]確定(404)是否存在由虛擬機(jī)通知的檢查點(diǎn)。如果存在,則從虛擬機(jī)接收(405)檢查點(diǎn)標(biāo)識符。檢查點(diǎn)設(shè)置區(qū)域數(shù)據(jù)被提交(406),并且不再保留先前的數(shù)據(jù)。可以根據(jù)檢查點(diǎn)設(shè)置區(qū)域存儲器的形式來以不同的方式執(zhí)行這一操作。
[0078]例如,在具有非易失性檢查點(diǎn)設(shè)置區(qū)域的實(shí)施例中,可以使用“CheckpointID”來跟蹤塊/扇區(qū)用于哪個檢查點(diǎn)。當(dāng)提交檢查點(diǎn)時,可以將那個CheckpointID字段設(shè)置為特殊的“無效”值,用于指示它不再是檢查點(diǎn)的一部分,并且已經(jīng)被提交。
[0079]該方法然后通過循環(huán)繼續(xù),以在步驟402接收另外的修改操作。
[0080]如果沒有檢查點(diǎn),則確定(407)是否存在另一個通知操作。如果存在,則該方法循環(huán),以重復(fù)步驟402和403。如果不存在,則確定(408)是否存在故障轉(zhuǎn)移。如果不存在,則該方法結(jié)束(409)。
[0081]如果存在故障轉(zhuǎn)移,則從輔助虛擬機(jī)接收(410)命令,以恢復(fù)到用于給定的檢查點(diǎn)標(biāo)識符的存儲狀態(tài)。存儲控制器將盤狀態(tài)恢復(fù)(411)到匹配給定的檢查點(diǎn)標(biāo)識符的狀態(tài)。然后從輔助虛擬機(jī)接收(412)另外的操作。
[0082]該方法支持建立多個同時檢查點(diǎn)。通常,可以建立新的檢查點(diǎn),然后,在短時間后刪除最老的檢查點(diǎn)。存儲控制器可以接收用于確定哪些檢查點(diǎn)存在于給定時間處的查詢。[0083]參見圖5,示意流程圖500示出所述方法的示例操作,并且時間軸560向頁面下前進(jìn)。提供了主要虛擬機(jī)510和輔助虛擬機(jī)520。邏輯驅(qū)動器530向虛擬機(jī)510、520提供可尋址存儲器。物理驅(qū)動器540包括物理存儲區(qū)域,該物理存儲區(qū)域包括另外的檢查點(diǎn)設(shè)置區(qū)域(以粗體輪廓示出)。
[0084]在這個示例實(shí)施例中,存儲控制器向主要虛擬機(jī)510提供小的四塊邏輯驅(qū)動器。在該場景之后,在物理驅(qū)動器540上,存儲控制器已經(jīng)提供了另外兩塊存儲器來作為存儲器的檢查點(diǎn)設(shè)置區(qū)域。注意,在這個簡化示例中,假定虛擬機(jī)總是在塊大小的數(shù)據(jù)塊中寫入,并且如此一來,使用在寫入時重新定向方法;即,向存儲器的寫入總是去往可獲得的檢查點(diǎn)設(shè)置塊。
[0085]在第一塊511上執(zhí)行寫入操作“A”501。將邏輯驅(qū)動器530的視圖更新以示出寫入操作531,但是不修改底層的物理塊541,由此保留現(xiàn)有的數(shù)據(jù)。相反,向檢查點(diǎn)設(shè)置塊551寫入數(shù)據(jù)。如果存儲控制器的寫入高速緩存器被用作檢查點(diǎn)設(shè)置區(qū)域,則它可以接續(xù)使用寫入高速緩存。這個示例忽略了寫入高速緩存器的存在,但是所述方法不排除其使用。
[0086]執(zhí)行另一個寫入操作“B”502,此時修改第二塊512,再一次在邏輯驅(qū)動器532上示出第二塊512。再一次,將原始塊542原封不動地留在物理驅(qū)動器上,并且取而代之向檢查點(diǎn)設(shè)置塊552寫入新的數(shù)據(jù)。
[0087]檢查點(diǎn)(ID#1)570出現(xiàn)。在這一點(diǎn),不能再恢復(fù)到在這個時間點(diǎn)之前的盤上狀態(tài)。將檢查點(diǎn)ID (ID#1)與虛擬機(jī)狀態(tài)和待決I/O操作的列表一起從主要虛擬機(jī)510傳送到輔助虛擬機(jī)520。
[0088]現(xiàn)在將先前被保留的物理塊541、542標(biāo)注為可獲得,并且變?yōu)橛糜陔S后寫入的檢查點(diǎn)設(shè)置塊。
[0089]執(zhí)行寫入操作“C” 503,此時,修改在邏輯驅(qū)動器上的第三塊513。再一次,示出邏輯驅(qū)動塊533,但是保留底層的物理塊543,并且相反寫入第一可獲得檢查點(diǎn)設(shè)置塊553。
[0090]執(zhí)行向同一第三塊513的另一個寫入操作“D”。重寫邏輯驅(qū)動塊533。在這個情況下,在仍然保持物理塊543的同時,重寫相同的檢查點(diǎn)設(shè)置塊553。
[0091]故障轉(zhuǎn)移580出現(xiàn)。主要虛擬機(jī)510不再運(yùn)行,并且輔助虛擬機(jī)520狀態(tài)匹配盤上狀態(tài)的更舊的版本。
[0092]輔助虛擬機(jī)520向存儲控制器發(fā)出命令505,以將邏輯驅(qū)動器恢復(fù)到與檢查點(diǎn)#1570相關(guān)聯(lián)的狀態(tài)。塊的邏輯物理映射在檢查點(diǎn)#1570后被恢復(fù)以匹配該狀態(tài)。
[0093]在檢查點(diǎn)#1570后隨后被修改的塊553被有效地丟棄,并且它們再一次變?yōu)榭捎玫臋z查點(diǎn)設(shè)置塊。
[0094]輔助虛擬機(jī)520執(zhí)行從第三邏輯塊533的讀取(506)。這返回來自第三物理塊543的數(shù)據(jù),而不是由主要虛擬機(jī)510寫入的數(shù)據(jù),該由主要虛擬機(jī)510寫入的數(shù)據(jù)在故障轉(zhuǎn)移之前被寫入檢查點(diǎn)設(shè)置塊553。
[0095]所述方法和系統(tǒng)將I/O操作的狀態(tài)委托給存儲控制器,并且在檢查點(diǎn)出現(xiàn)前以非破壞性方式來執(zhí)行修改操作。在故障轉(zhuǎn)移出現(xiàn)的情況下,可以向存儲控制器提供檢查點(diǎn)標(biāo)識符。
[0096]所述的方法和系統(tǒng)允許客戶機(jī)體驗(yàn)高性能1/0,并且沒有由寫入時的檢查點(diǎn)方法引入的另外延遲地完成I/o操作。[0097]本發(fā)明可以采用整體硬件實(shí)施例、整體軟件實(shí)施例或包含硬件和軟件元素的實(shí)施例的形式。在優(yōu)選實(shí)施例中,以軟件來實(shí)現(xiàn)本發(fā)明,該軟件包括但是不限于固件、駐留軟件、微碼等。
[0098]本發(fā)明可以采用從計算機(jī)可用或計算機(jī)可讀介質(zhì)可訪問的計算機(jī)程序產(chǎn)品的形式,計算機(jī)可用或計算機(jī)可讀介質(zhì)用于提供程序代碼,以由計算機(jī)或任何指令執(zhí)行系統(tǒng)使用或與其相關(guān)聯(lián)地使用。為了本說明書的目的,計算機(jī)可用或計算機(jī)可讀介質(zhì)可以是可以包含、存儲、傳達(dá)、傳播或傳送程序以由指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用或與其相關(guān)地使用的任何設(shè)備。
[0099]介質(zhì)可以是電子、磁、光學(xué)、電磁、紅外線或半導(dǎo)體的系統(tǒng)(或設(shè)備或裝置)或者傳播介質(zhì)。計算機(jī)可讀介質(zhì)的示例包括半導(dǎo)體或固態(tài)存儲器、磁帶、可裝卸計算機(jī)盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、硬磁盤和光盤。光盤的當(dāng)前示例包括光盤只讀存儲器(CD-ROM)、光盤讀取 / 寫入(CD-R/W)和 DVD。
[0100]可以在不偏離本發(fā)明的范圍的情況下對于上面的內(nèi)容進(jìn)行改善和修改。
【權(quán)利要求】
1.一種用于鏡像虛擬機(jī)系統(tǒng)中的存儲器檢查點(diǎn)設(shè)置的方法,該系統(tǒng)包括存儲控制器,所述存儲控制器被配置為: 從虛擬機(jī)接收(402)對存儲器的修改操作; 通過向存儲器的檢查點(diǎn)設(shè)置區(qū)域存儲所述修改操作數(shù)據(jù)并保留所存儲的先前數(shù)據(jù)狀態(tài),以非破壞性方式執(zhí)行(403)所述修改操作; 接收(404)檢查點(diǎn)通知;并且, 從所述檢查點(diǎn)設(shè)置區(qū)域提交(406)修改操作數(shù)據(jù),并釋放所存儲的先前數(shù)據(jù)狀態(tài)。
2.根據(jù)權(quán)利要求1所述的方法,包括: 支持多個檢查點(diǎn),其中檢查點(diǎn)通知包括用于與其他檢查點(diǎn)區(qū)分的檢查點(diǎn)標(biāo)識符。
3.根據(jù)權(quán)利要求1或2所述的方法,包括: 在所述存儲控制器處接收用于確定哪些檢查點(diǎn)存在于給定時間處的查詢。
4.根據(jù)權(quán)利要求1至3的任何一項所述的方法,其中提交修改操作包括: 提交檢查點(diǎn)設(shè)置區(qū)域存儲器的狀態(tài);并且 釋放所存儲的先前數(shù)據(jù)狀態(tài),以變?yōu)樾碌臋z查點(diǎn)設(shè)置區(qū)域存儲器。
5.根據(jù)權(quán)利要求1至3的任何一項所述的方法,其中提交修改操作包括:` 從所述檢查點(diǎn)設(shè)置區(qū)域向所存儲的先前數(shù)據(jù)狀態(tài)的物理存儲位置寫入所述修改操作數(shù)據(jù)。
6.根據(jù)先前的權(quán)利要求的任何一項所述的方法,包括: 提供(401)由客戶機(jī)能夠?qū)ぶ返拇鎯ζ鞯倪壿嬺?qū)動器; 在所述邏輯驅(qū)動器上存儲所述修改操作;并且 在所述檢查點(diǎn)設(shè)置區(qū)域中保持所述邏輯驅(qū)動器向物理存儲器的映射。
7.根據(jù)前述權(quán)利要求的任何一項所述的方法,包括: 接收(408)故障轉(zhuǎn)移通知;并且 將所述物理存儲器恢復(fù)(411)為匹配檢查點(diǎn)狀態(tài);
8.根據(jù)前述權(quán)利要求的任何一項所述的方法,包括: 接收(408)具有檢查點(diǎn)標(biāo)識符的故障轉(zhuǎn)移通知; 將所述物理存儲器恢復(fù)(411)為匹配所識別的檢查點(diǎn)狀態(tài); 在所述識別的檢查點(diǎn)之后,恢復(fù)所述邏輯驅(qū)動器向所述物理存儲器狀態(tài)的所述映射;并且 在所述檢查點(diǎn)設(shè)置區(qū)域中丟棄所存儲的操作。
9.根據(jù)前述權(quán)利要求的任何一項所述的方法,其中,檢查點(diǎn)標(biāo)識符將所述標(biāo)識符與邏輯驅(qū)動器的時間點(diǎn)視圖相關(guān)聯(lián)。
10.根據(jù)前述權(quán)利要求的任何一項所述的方法,其中,以非破壞性方式執(zhí)行所述修改操作包括下述的組中的一個:執(zhí)行寫入時復(fù)制的操作,并執(zhí)行寫入時重新定向的操作。
11.一種用于鏡像虛擬機(jī)系統(tǒng)中的存儲器檢查點(diǎn)設(shè)置的系統(tǒng),包括: 處理器; 存儲控制器(231),包括: 由客戶機(jī)可尋址的邏輯驅(qū)動器向物理存儲器的映射部件(241); 非破壞性修改操作部件(242),用于以非破壞性方式來執(zhí)行接收的存儲修改操作,其包括:暫時存儲部件(243),用于向存儲器(236)的檢查點(diǎn)設(shè)置區(qū)域存儲所述修改操作數(shù)據(jù),并保留所存儲的先前數(shù)據(jù)狀態(tài); 檢查點(diǎn)設(shè)置接收部件(244),用于從檢查點(diǎn)的虛擬機(jī)接收通知;和 提交部件(246),用于從所述 檢查點(diǎn)設(shè)置區(qū)域提交修改操作數(shù)據(jù),并釋放所存儲的先前數(shù)據(jù)狀態(tài)。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,所述存儲器(236)的所述檢查點(diǎn)設(shè)置區(qū)域是除由所述客戶機(jī)可訪問的所述盤上存儲器外的另一個盤上存儲器,并且其中,所述提交部件(246)用于提交所述檢查點(diǎn)設(shè)置區(qū)域存儲器的狀態(tài)。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其中,所述提交部件(246)可操作用于釋放所存儲的先前數(shù)據(jù)狀態(tài),以變?yōu)樾碌臋z查點(diǎn)設(shè)置區(qū)域存儲器。
14.根據(jù)權(quán)利要求11至13的任何一項所述的系統(tǒng),其中,存儲器(236)的所述檢查點(diǎn)設(shè)置區(qū)域是與所述客戶機(jī)能夠訪問的所述物理存儲器分離的存儲器,并且其中,所述提交部件用于:從所述檢查點(diǎn)設(shè)置區(qū)域向所存儲的先前數(shù)據(jù)狀態(tài)的所述物理存儲器位置寫入所述修改操作數(shù)據(jù)。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,所述獨(dú)立的存儲器是非易失性存儲器。
16.根據(jù)權(quán)利要求11至15的任何一項所述的系統(tǒng),包括: 故障轉(zhuǎn)移部件(245),用于接收故障轉(zhuǎn)移通知,并且恢復(fù)所述物理存儲器以匹配檢查點(diǎn)狀態(tài)。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其中,所述故障轉(zhuǎn)移部件(245)包括用于下述部分的功能: 接收具有檢查點(diǎn)標(biāo)識符的故障轉(zhuǎn)移通知; 將所述物理存儲器恢復(fù)為匹配所識別的檢查點(diǎn)狀態(tài); 在所述識別的檢查點(diǎn)之后,恢復(fù)所述邏輯驅(qū)動器向所述物理存儲器狀態(tài)的所述映射;并且 在所述檢查點(diǎn)設(shè)置區(qū)域中丟棄所存儲的操作。
18.—種在計算機(jī)可讀介質(zhì)上存儲并且能夠被安裝到數(shù)字計算機(jī)的內(nèi)部存儲器內(nèi)的計算機(jī)程序,包括軟件代碼部分,用于當(dāng)所述程序在計算機(jī)上運(yùn)行時,執(zhí)行根據(jù)權(quán)利要求1至10的任何一項的方法。
【文檔編號】G06F11/36GK103562878SQ201280025030
【公開日】2014年2月5日 申請日期:2012年5月1日 優(yōu)先權(quán)日:2011年5月23日
【發(fā)明者】J.姆爾卡西, W.J.斯凱爾斯, C.F.弗恩特 申請人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1