在鏡像虛擬機(jī)系統(tǒng)中的存儲(chǔ)器檢查點(diǎn)設(shè)置的制作方法
【專利摘要】提供了用于鏡像虛擬機(jī)系統(tǒng)中的存儲(chǔ)器檢查點(diǎn)設(shè)置的方法和系統(tǒng)。該方法包括:存儲(chǔ)控制器從虛擬機(jī)接收對(duì)存儲(chǔ)器的修改操作,通過(guò)向存儲(chǔ)器的檢查點(diǎn)設(shè)置區(qū)域存儲(chǔ)所述修改操作數(shù)據(jù)并保留所存儲(chǔ)的先前數(shù)據(jù)狀態(tài),以非破壞性方式執(zhí)行所述修改操作。該方法也包括:接收檢查點(diǎn)通知,并從所述檢查點(diǎn)設(shè)置區(qū)域提交修改操作數(shù)據(jù),并釋放所存儲(chǔ)的先前數(shù)據(jù)狀態(tài)。如果接收到故障轉(zhuǎn)移通知,則存儲(chǔ)控制器將物理存儲(chǔ)器恢復(fù)為匹配檢查點(diǎn)狀態(tài)。
【專利說(shuō)明】在鏡像虛擬機(jī)系統(tǒng)中的存儲(chǔ)器檢查點(diǎn)設(shè)置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及在鏡像虛擬機(jī)中的基于檢查點(diǎn)的高獲得性解決方案的領(lǐng)域。具體地說(shuō),本發(fā)明涉及在鏡像虛擬機(jī)檢查點(diǎn)設(shè)置中的存儲(chǔ)寫入。
【背景技術(shù)】
[0002]虛擬機(jī)鏡像是運(yùn)行虛擬機(jī)(VM)使得如果出現(xiàn)硬件故障,它可以從存在于第二物理機(jī)器上的鏡像或同一物理機(jī)器的邏輯分區(qū)繼續(xù)執(zhí)行的方式。在主要虛擬機(jī)和輔助虛擬機(jī)之間交換虛擬機(jī)狀態(tài)。這是通過(guò)下述方式來(lái)完成的:通過(guò)捕獲第一虛擬機(jī)的狀態(tài)并且將其傳送到第二虛擬機(jī)來(lái)對(duì)主要虛擬機(jī)進(jìn)行檢查點(diǎn)設(shè)置。目標(biāo)是減少計(jì)算機(jī)系統(tǒng)中的硬件故障引起的停機(jī)時(shí)間。
[0003]這些基于檢查點(diǎn)的系統(tǒng)被建立在現(xiàn)有的虛擬機(jī)管理程序的頂部,并且通過(guò)下述方式來(lái)擴(kuò)展管理程序的功能:捕獲對(duì)主要虛擬機(jī)的存儲(chǔ)器狀態(tài)的修改,并且以很頻繁的間隔(例如,每25ms)將其傳送到輔助計(jì)算系統(tǒng)。
[0004]核心思想是,如果主計(jì)算系統(tǒng)故障,則輔助計(jì)算系統(tǒng)具有幾乎在準(zhǔn)備好立即執(zhí)行的精確的相同狀態(tài)中的虛擬機(jī)。當(dāng)啟動(dòng)該輔助虛擬機(jī)時(shí),它開始接收和發(fā)送網(wǎng)絡(luò)分組,并且當(dāng)它在主計(jì)算系統(tǒng)上運(yùn)行時(shí)就像虛擬機(jī)那樣執(zhí)行盤I/O。來(lái)自外部世界的效果是行為的最少(毫秒)的不連續(xù);類似于如果到虛擬機(jī)的網(wǎng)絡(luò)連接已經(jīng)被簡(jiǎn)短地?cái)嚅_和重新連接。
[0005]因?yàn)樘摂M機(jī)未保持完全步調(diào)一致,而是僅在這些頻率檢查點(diǎn)上同步,所以必須特殊地處理主要虛擬機(jī)向盤的寫入。這是因?yàn)?,為了保證正確性,輔助虛擬機(jī)必須不僅從主要虛擬機(jī)的狀態(tài)的有效檢查點(diǎn)恢復(fù),而且盤存儲(chǔ)器也必須在精確地相同狀態(tài)中。實(shí)際上,輔助虛擬機(jī)是以一定數(shù)量的毫秒“恢復(fù)”到最后檢查點(diǎn)的主要虛擬機(jī)。
[0006]基于檢查點(diǎn)的高可獲得性是下述技術(shù):通過(guò)該技術(shù),在主機(jī)上運(yùn)行的虛擬機(jī)(主要主機(jī))規(guī)則地(例如,每25ms)向另一個(gè)主機(jī)(“輔助主機(jī)”)上鏡像其處理器和存儲(chǔ)器狀態(tài)。主要主機(jī)和輔助主機(jī)可以是同一物理機(jī)器的邏輯部分。
[0007]用于鏡像處理的基本方法包含下面的步驟:
[0008]跟蹤對(duì)虛擬機(jī)的存儲(chǔ)器的改變;
[0009]周期地停止虛擬機(jī);
[0010]通過(guò)網(wǎng)絡(luò)向輔助主機(jī)發(fā)送這些改變;
[0011]等待輔助主機(jī)確認(rèn)存儲(chǔ)器和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)在的錯(cuò)誤塊。分組發(fā)送必須僅發(fā)生一次,并且盤狀態(tài)必須在獲取檢查點(diǎn)時(shí)與其匹配。[0015]關(guān)于盤1/0,“寫入時(shí)的檢查點(diǎn)”的單純實(shí)現(xiàn)方式剛好在向盤控制器發(fā)出I/O操作之前在主要主機(jī)上執(zhí)行檢查點(diǎn)。對(duì)于“寫入時(shí)的檢查點(diǎn)”的一種基本優(yōu)化是將多個(gè)寫入組合在一起,并且在一個(gè)行程(one go)中對(duì)數(shù)個(gè)寫入設(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和存儲(chǔ)器狀態(tài)被交換??梢栽趫D1中看到一個(gè)示例。
[0016]參見圖1,提供了現(xiàn)有技術(shù)中公知的寫入時(shí)的檢查點(diǎn)的圖示100,其中,隨著時(shí)間寫入的進(jìn)展被示出為在圖示100中垂直向下地進(jìn)展。主要虛擬機(jī)110向盤塊120進(jìn)行寫入。通過(guò)對(duì)角斜線陰影來(lái)示出改變的塊。
[0017]在該圖示100中,通過(guò)主要虛擬機(jī)110來(lái)修改塊130的序列的第一塊131,隨后是第二塊132。對(duì)第一和第二塊131、132的修改被存儲(chǔ)(141、142),并且在下一個(gè)檢查點(diǎn)150處被寫入(143)到盤塊120。盤塊120發(fā)送確認(rèn)(144)以確認(rèn)該寫入。
[0018]在檢查點(diǎn)150后,修改另一個(gè)第三塊133,隨后是第四塊134。對(duì)于第三和第四塊133、134的修改被存儲(chǔ)(145、146),并且在下一個(gè)檢查點(diǎn)151處被寫入(147)到盤塊120。盤塊120發(fā)送確認(rèn)(148)以確認(rèn)該寫入。
[0019]該方法的問(wèn)題是添加到寫入操作的額外延遲。寫入操作直到在下一個(gè)檢查點(diǎn)后才成功完成,并且因此,在其中每25ms獲取檢查點(diǎn)的系統(tǒng)中,這將向每一個(gè)寫入添加平均12.5ms ο
[0020]如果主要主機(jī)在這個(gè)確認(rèn)的檢查點(diǎn)和未來(lái)的檢查點(diǎn)之間發(fā)生故障,則可能難以確定是否待決的I/o操作完成。如此一來(lái),重新發(fā)出所有待決的I/o操作,強(qiáng)制盤子系統(tǒng)反應(yīng)正確的狀態(tài)。
[0021]對(duì)于上面的內(nèi)容的直接優(yōu)化是忽略不修改盤上狀態(tài)的任何I/O操作(B卩,僅讀取操作)??梢灾苯拥卦试S這些,而不執(zhí)行檢查點(diǎn),因?yàn)樗鼈儾恍薷娜魏螤顟B(tài)。
[0022]所述方法的兩個(gè)關(guān)鍵缺陷如下:
[0023]1.必須截?cái)嗪脱舆t虛擬機(jī)的存儲(chǔ)器I/O操作,直到與輔助機(jī)器交換了下一個(gè)檢查點(diǎn)。這增加了 I/o操作的延遲。
[0024]2.在除了該最單純的實(shí)現(xiàn)方式之外的任何實(shí)現(xiàn)方式中,必須將不修改存儲(chǔ)器的操作(諸如僅讀取)與確實(shí)修改存儲(chǔ)器的那些操作區(qū)別。這去除了來(lái)自那些操作的延遲開銷,但代價(jià)是必須在執(zhí)行時(shí)檢查并且明白每個(gè)I/o操作的語(yǔ)義。
[0025]因此,在本領(lǐng)域中需要解決上述問(wèn)題。
【發(fā)明內(nèi)容】
[0026]根據(jù)本發(fā)明的第一方面,提供了一種用于鏡像虛擬機(jī)系統(tǒng)中的存儲(chǔ)器檢查點(diǎn)設(shè)置的方法,包括存儲(chǔ)控制器:從虛擬機(jī)接收對(duì)于存儲(chǔ)器的修改操作;通過(guò)向存儲(chǔ)器的檢查點(diǎn)設(shè)置區(qū)域存儲(chǔ)所述修改操作數(shù)據(jù)并且保留所存儲(chǔ)的先前數(shù)據(jù)狀態(tài)來(lái)以非破壞性方式執(zhí)行所述修改操作;接收檢查點(diǎn)通知;并且,從所述檢查點(diǎn)設(shè)置區(qū)域提交(commit)修改操作數(shù)據(jù),并且釋放所存儲(chǔ)的先前數(shù)據(jù)狀態(tài)。
[0027]根據(jù)本發(fā)明的第二方面,提供了一種用于鏡像虛擬機(jī)系統(tǒng)中的存儲(chǔ)器檢查點(diǎn)設(shè)置的系統(tǒng),包括:處理器;存儲(chǔ)控制器,包括:由客戶機(jī)可尋址的邏輯驅(qū)動(dòng)器向物理存儲(chǔ)器的映射部件;非破壞性修改操作部件,用于以非破壞性方式來(lái)執(zhí)行接收的存儲(chǔ)修改操作,包括:暫時(shí)存儲(chǔ)部件,用于向存儲(chǔ)器的檢查點(diǎn)設(shè)置區(qū)域存儲(chǔ)所述修改操作數(shù)據(jù),并且保留所存儲(chǔ)的先前數(shù)據(jù)狀態(tài);檢查點(diǎn)設(shè)置接收部件,用于從檢查點(diǎn)的虛擬機(jī)接收通知;以及,提交部件,用于從所述檢查點(diǎn)設(shè)置區(qū)域提交修改操作數(shù)據(jù),并且釋放所存儲(chǔ)的先前數(shù)據(jù)狀態(tài)。
[0028]根據(jù)本發(fā)明的第三方面,提供了一種在計(jì)算機(jī)可讀介質(zhì)上存儲(chǔ)并且能夠被安裝到數(shù)字計(jì)算機(jī)的內(nèi)部存儲(chǔ)器內(nèi)的計(jì)算機(jī)程序,包括軟件代碼部分,用于當(dāng)所述程序在計(jì)算機(jī)上運(yùn)行時(shí)執(zhí)行本發(fā)明的第一方面的方法。
【專利附圖】
【附圖說(shuō)明】
[0029]在說(shuō)明書的結(jié)尾部分中特別指出并且清楚地要求保護(hù)被看作本發(fā)明的主題。當(dāng)使用附圖閱讀時(shí),通過(guò)參考下面的詳細(xì)描述,可以關(guān)于組織和操作方法以及其目的、特征和優(yōu)點(diǎn)來(lái)最好地理解本發(fā)明,附圖中:
[0030]圖1是在現(xiàn)有技術(shù)中已知的寫入時(shí)檢查點(diǎn)的處理的示意圖;
[0031]圖2A和圖2B是根據(jù)本發(fā)明的系統(tǒng)的實(shí)施例的框圖;
[0032]圖3是其中可以實(shí)現(xiàn)本發(fā)明的計(jì)算機(jī)系統(tǒng)的框圖;
[0033]圖4是根據(jù)本發(fā)明的方法的流程圖;并且
[0034]圖5是根據(jù)本發(fā)明的檢查點(diǎn)設(shè)置的處理的示意圖。
【具體實(shí)施方式】
[0035]可以明白,為了說(shuō)明的簡(jiǎn)化和清楚,不必根據(jù)比例來(lái)繪制附圖中所示的元件。例如,為了清楚,可以將一些元件的尺寸相對(duì)于其他元件夸大。而且,當(dāng)認(rèn)為適當(dāng)時(shí),可以在附圖中重復(fù)附圖標(biāo)號(hào),以指示對(duì)應(yīng)的或類似的特征。
[0036]在下面的詳細(xì)描述中,給出了多個(gè)具體細(xì)節(jié)以便徹底明白本發(fā)明。然而,本領(lǐng)域內(nèi)的技術(shù)人員可以明白,可以在沒有這些具體細(xì)節(jié)的情況下實(shí)施本發(fā)明。在其他情況下,未詳細(xì)描述公知的方法、過(guò)程和部件,以便不混淆本發(fā)明。
[0037]描述了方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品,其中,取代截?cái)嘤糜谠谔摂M機(jī)處的檢查點(diǎn)設(shè)置的I/o操作,將它們傳送到底層的存儲(chǔ)控制器。這些操作看起來(lái)正常地完成;然而,通過(guò)存儲(chǔ)控制器以非破壞性方式執(zhí)行修改盤上狀態(tài)(on-disk)的操作,保留原始?jí)K(例如,通過(guò)寫入時(shí)復(fù)制(COW)或?qū)懭霑r(shí)重新定向(ROW)機(jī)制)。
[0038]當(dāng)檢查點(diǎn)出現(xiàn)時(shí),向存儲(chǔ)控制器通知這一點(diǎn),并且向存儲(chǔ)控制器提供相關(guān)聯(lián)的檢查點(diǎn)標(biāo)識(shí)符??梢匀缓笥纱鎯?chǔ)控制器提交修改操作,并且不再保留原始?jí)K。在檢查點(diǎn)后,虛擬機(jī)的執(zhí)行恢復(fù),并且I/o操作繼續(xù)向前進(jìn)行(flow)。這保證在任何給定的時(shí)間點(diǎn),存儲(chǔ)控制器可以將盤上的狀態(tài)恢復(fù)到與識(shí)別的檢查點(diǎn)匹配的狀態(tài)。
[0039]該機(jī)制允許客戶機(jī)體驗(yàn)高性能1/0,并且沒有由寫入時(shí)的檢查點(diǎn)方法引入的額外延遲地完成I/O操作。
[0040]如果出現(xiàn)故障轉(zhuǎn)移,則指令存儲(chǔ)控制器在執(zhí)行恢復(fù)之前將存儲(chǔ)器恢復(fù)到所識(shí)別的檢查點(diǎn)階段。
[0041]“邏輯驅(qū)動(dòng)器”被提供為由存儲(chǔ)控制器通過(guò)給定的LUN (邏輯單元)提供的存儲(chǔ)器。標(biāo)準(zhǔn)邏輯驅(qū)動(dòng)器包含構(gòu)成由客戶機(jī)可尋址的存儲(chǔ)器的一組塊。[0042]在所述系統(tǒng)中,存儲(chǔ)控制器為在由客戶機(jī)可尋址的那些存儲(chǔ)塊之上和之外的另外的存儲(chǔ)器作好準(zhǔn)備。該另外的存儲(chǔ)器用于允許保留修改的塊,直到檢查點(diǎn)完成。在下面的文本中,該另外的存儲(chǔ)器被稱為“檢查點(diǎn)區(qū)域”,包含“檢查點(diǎn)設(shè)置塊”。
[0043]在所述系統(tǒng)中,客戶機(jī)不直接改寫(overwrite)修改的塊。保留原始?jí)K,直到下一個(gè)檢查點(diǎn)。
[0044]向客戶機(jī)提供用于將邏輯驅(qū)動(dòng)器的給定時(shí)間點(diǎn)視圖與標(biāo)識(shí)符“檢查點(diǎn)ID”相關(guān)聯(lián)的機(jī)制。在每個(gè)檢查點(diǎn)間隔處,客戶機(jī)(或代表客戶機(jī)的代理,諸如管理程序)將當(dāng)前的盤狀態(tài)與新的檢查點(diǎn)ID相關(guān)聯(lián)。所述方法和系統(tǒng)支持多個(gè)并行的檢查點(diǎn)。
[0045]如果出現(xiàn)故障轉(zhuǎn)移,則指令存儲(chǔ)控制器將盤狀態(tài)恢復(fù)到與給定的檢查點(diǎn)ID匹配的狀態(tài)。
[0046]在一個(gè)實(shí)施例中,作為另外的在物理盤上的存儲(chǔ)器(on-physical-disk)提供了檢查點(diǎn)設(shè)置區(qū)域。在這個(gè)實(shí)施例中,使用“寫入時(shí)的復(fù)制”或“寫入時(shí)的重新定向”來(lái)保留原始?jí)K,直到下一個(gè)檢查點(diǎn)。
[0047]在另一個(gè)實(shí)施例中,作為諸如存儲(chǔ)控制器的寫入高速緩存器的非易失性存儲(chǔ)器來(lái)提供檢查點(diǎn)設(shè)置區(qū)域。在利用非易失性存儲(chǔ)器來(lái)存儲(chǔ)檢查點(diǎn)設(shè)置數(shù)據(jù)的實(shí)施例中,元數(shù)據(jù)/目錄結(jié)構(gòu)可以包含檢查點(diǎn)設(shè)置ID的另一個(gè)值。作為示例,而不是通過(guò)LBA (邏輯塊地址)來(lái)索引的高速緩存,它可以通過(guò)LBA和CheckpointID來(lái)加索引。當(dāng)提交檢查點(diǎn)時(shí),具有那個(gè)CheckpointID的塊然后被“降級(jí)(destage)”,并且被寫出到物理盤。
[0048]該實(shí)施例不被限制為管理在逐塊基礎(chǔ)上的寫入。非易失性存儲(chǔ)器方法例如可能例如通過(guò)扇區(qū)(它在存儲(chǔ)控制器中經(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)行。在一個(gè)實(shí)施例中,主要和輔助虛擬機(jī)210、220可以是LPAR (邏輯分區(qū)(虛擬計(jì)算平臺(tái)))。每個(gè)主要和輔助虛擬機(jī)210、220可以具有管理程序,該管理程序包括網(wǎng)絡(luò)分組和存儲(chǔ)寫入的輸入/輸出管理。
[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ū)動(dòng)器的給定時(shí)間點(diǎn)視圖與用于識(shí)別檢查點(diǎn)的標(biāo)識(shí)符相關(guān)聯(lián)。在每個(gè)檢查點(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可以向存儲(chǔ)系統(tǒng)230發(fā)送操作。虛擬I/O服務(wù)器可以具有主機(jī)總線適配器,用于與存儲(chǔ)系統(tǒng)230進(jìn)行通信。在一個(gè)實(shí)施例中,可以提供下述機(jī)構(gòu),該機(jī)構(gòu)用于在虛擬機(jī)210、220之間共享硬件,使得當(dāng)利用單根(single root)10虛擬化來(lái)使用單個(gè)存儲(chǔ)系統(tǒng)適配器時(shí),每個(gè)虛擬機(jī)210、220認(rèn)為它在直接地向其本身的存儲(chǔ)系統(tǒng)適配器通話。
[0053]提供了存儲(chǔ)系統(tǒng)230。在一個(gè)實(shí)施例中,存儲(chǔ)系統(tǒng)230可以是存儲(chǔ)區(qū)域網(wǎng)(SAN),諸如光纖通道SAN。存儲(chǔ)系統(tǒng)230包括存儲(chǔ)控制器231,存儲(chǔ)控制器231管理存儲(chǔ)系統(tǒng)230的集中存儲(chǔ)。通過(guò)給定的邏輯單元(LUN)提供了作為邏輯驅(qū)動(dòng)器呈現(xiàn)的存儲(chǔ)裝置232-234。邏輯驅(qū)動(dòng)器包含構(gòu)成可由客戶機(jī)訪問(wèn)的存儲(chǔ)器的一組塊。
[0054]存儲(chǔ)控制器231也包括檢查點(diǎn)設(shè)置系統(tǒng)240。檢查點(diǎn)設(shè)置系統(tǒng)240可以包括映射部件241,用于將邏輯驅(qū)動(dòng)器地址映射到物理存儲(chǔ)裝置232-234。檢查點(diǎn)設(shè)置系統(tǒng)240可以包括非破壞性修改操作部件242,非破壞性修改操作部件242包括暫時(shí)存儲(chǔ)部件243,用于向存儲(chǔ)器236的檢查點(diǎn)設(shè)置區(qū)域存儲(chǔ)修改操作數(shù)據(jù),并且保留存儲(chǔ)的先前數(shù)據(jù),直到提交了檢查點(diǎn)。
[0055]檢查點(diǎn)設(shè)置機(jī)構(gòu)211、221跟蹤每個(gè)虛擬機(jī)的檢查點(diǎn)設(shè)置ID。從主要虛擬機(jī)210向輔助虛擬機(jī)220提供這個(gè)ID,作為向輔助虛擬機(jī)發(fā)送的檢查點(diǎn)狀態(tài)的一部分。它也被發(fā)送到存儲(chǔ)控制器231的檢查點(diǎn)設(shè)置系統(tǒng)240。
[0056]存儲(chǔ)控制器231也包括檢查點(diǎn)設(shè)置接收部件244,用于從具有檢查點(diǎn)標(biāo)識(shí)符的檢查點(diǎn)的虛擬機(jī)接收通知??梢浴霸趲е小苯邮者@樣的通知,即,當(dāng)存儲(chǔ)器讀取/寫入它們時(shí),它們通過(guò)相同的通信信道到達(dá)。替代地,也可以實(shí)現(xiàn)檢查點(diǎn)請(qǐng)求的帶外通信。
[0057]存儲(chǔ)控制器231也包括提交部件246,用于提交來(lái)自檢查點(diǎn)設(shè)置區(qū)域的修改操作數(shù)據(jù),并且釋放存儲(chǔ)的先前數(shù)據(jù)狀態(tài)。存儲(chǔ)控制器231也包括故障轉(zhuǎn)移部件245,用于從故障轉(zhuǎn)移的虛擬機(jī)接收通知,并且將物理存儲(chǔ)器恢復(fù)為匹配所識(shí)別的檢查點(diǎn)狀態(tài)。
[0058]在所述系統(tǒng)中,另外的存儲(chǔ)器被提供為存儲(chǔ)器236的檢查點(diǎn)設(shè)置區(qū)域。檢查點(diǎn)設(shè)置區(qū)域236是在寫入操作數(shù)據(jù)被檢查點(diǎn)確認(rèn)之前存儲(chǔ)它的位置。這可以采取各種不同的形式。
[0059]在圖2A中所示的一個(gè)實(shí)施例中,檢查點(diǎn)設(shè)置區(qū)域236是在諸如物理驅(qū)動(dòng)器的存儲(chǔ)裝置處的另外的塊的區(qū)域。在該情況下,當(dāng)提交檢查點(diǎn)時(shí),檢查點(diǎn)設(shè)置區(qū)域變?yōu)樘峤坏臄?shù)據(jù),并且先前的數(shù)據(jù)區(qū)域變?yōu)樾碌臋z查點(diǎn)設(shè)置區(qū)域。與圖5相關(guān)地更詳細(xì)地描述了這個(gè)實(shí)施例。
[0060]在圖2B中所示的另一個(gè)實(shí)施例中,可以將檢查點(diǎn)設(shè)置區(qū)域236提供為例如在存儲(chǔ)控制器231的寫入高速緩存器中的非易失性存儲(chǔ)器。當(dāng)提交檢查點(diǎn)時(shí),從寫入高速緩存器向存儲(chǔ)裝置232-234寫入數(shù)據(jù)。
[0061]在利用非易失性存儲(chǔ)器來(lái)保留檢查點(diǎn)設(shè)置數(shù)據(jù)的圖2B的實(shí)施例中,元數(shù)據(jù)/目錄結(jié)構(gòu)可以包含檢查點(diǎn)設(shè)置ID的另一個(gè)值。作為示例,而不是通過(guò)LBA (邏輯塊地址)來(lái)索引的高速緩存,它可以通過(guò)LBA和CheckpointID (檢查點(diǎn)ID)來(lái)加索引。當(dāng)提交檢查點(diǎn)時(shí),具有那個(gè)CheckpointID的塊然后被“降級(jí)”,并且被寫出到物理盤232-234。
[0062]在圖2B的實(shí)施例中,存儲(chǔ)控制器231的檢查點(diǎn)設(shè)置系統(tǒng)240可以包括用于LBA、檢查點(diǎn)ID跟蹤的跟蹤部件250。
[0063]即使使用以寫入高速緩存形式的非易失性存儲(chǔ)器檢查點(diǎn)設(shè)置區(qū)域,存儲(chǔ)控制器231也可以繼續(xù)使用寫入高速緩存。
[0064]可以基于來(lái)自主機(jī)的I/O吞吐量,在多個(gè)邏輯驅(qū)動(dòng)器上共享并且根據(jù)需要?jiǎng)討B(tài)地分配檢查點(diǎn)設(shè)置區(qū)域236。存在可能取決于系統(tǒng)是實(shí)現(xiàn)非易失性存儲(chǔ)器檢查點(diǎn)設(shè)置還是物理盤上的C0W/R0W檢查點(diǎn)設(shè)置的實(shí)現(xiàn)方式的多個(gè)選項(xiàng)。
[0065]選項(xiàng)可以包括:
[0066]?要求主機(jī)使能每個(gè)LUN的檢查點(diǎn)設(shè)置,并且作為其一部分,允
[0067]許它協(xié)商/請(qǐng)求 分配多少存儲(chǔ)量(以及也許包括如何分配)。
[0068]?不要求上面的內(nèi)容,并且僅根據(jù)需要分配另外的存儲(chǔ)量。
[0069]?不要求協(xié)商,但是具有在所有的檢查點(diǎn)設(shè)置LUN上共享的、內(nèi)部的預(yù)先分配的一組檢查點(diǎn)設(shè)置存儲(chǔ)器。
[0070]參見圖3,用于實(shí)現(xiàn)本發(fā)明的各方面的一種示例性系統(tǒng)包括適合于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)300,其包括至少一個(gè)處理器301,該至少一個(gè)處理器301通過(guò)總線系統(tǒng)303直接或間接耦合到存儲(chǔ)器元件。這些存儲(chǔ)器元件可以包括在程序代碼的實(shí)際執(zhí)行期間使用的本地存儲(chǔ)器、海量存儲(chǔ)器和提供至少一些程序代碼的暫時(shí)存儲(chǔ)以便減少在執(zhí)行期間必須從海量存儲(chǔ)器獲取代碼的次數(shù)的高速緩存器。
[0071]這些存儲(chǔ)器元件可以包括只讀存儲(chǔ)器(ROM) 304和隨機(jī)存取存儲(chǔ)器(RAM) 305形式的系統(tǒng)存儲(chǔ)器302。基本輸入/輸出系統(tǒng)(BIOS) 306可以被存儲(chǔ)在R0M304中。系統(tǒng)軟件307可以被存儲(chǔ)在包括操作系統(tǒng)軟件308的RAM305中。軟件應(yīng)用310也可以被存儲(chǔ)在RAM305 中。
[0072]系統(tǒng)300也可以包括:主存儲(chǔ)部件311,諸如磁硬盤驅(qū)動(dòng)器;以及輔助存儲(chǔ)部件312,諸如磁盤驅(qū)動(dòng)器和光盤驅(qū)動(dòng)器。驅(qū)動(dòng)器和它們的相關(guān)聯(lián)的計(jì)算機(jī)可讀介質(zhì)提供用于系統(tǒng)300的計(jì)算機(jī)可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的非易失性存儲(chǔ)。軟件應(yīng)用可以被存儲(chǔ)在主要和輔助存儲(chǔ)部件311、312以及系統(tǒng)存儲(chǔ)器302上。
[0073]計(jì)算系統(tǒng)300可以使用經(jīng)由網(wǎng)絡(luò)適配器316到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)的邏輯連接來(lái)在聯(lián)網(wǎng)環(huán)境中運(yùn)行。
[0074]輸入/輸出裝置313可以被直接或通過(guò)中間I/O控制器耦合到系統(tǒng)。用戶可以通過(guò)諸如鍵盤、指示裝置或其他輸入裝置(例如,麥克風(fēng)、操縱桿、游戲墊、碟形衛(wèi)星天線或掃描儀等)的輸入裝置向系統(tǒng)300內(nèi)輸入命令和信息。輸出裝置可以包括揚(yáng)聲器、打印機(jī)等。顯示裝置314也經(jīng)由諸如視頻適配器315的接口連接到系統(tǒng)總線303。
[0075]參見圖4,流程圖400示出在存儲(chǔ)控制器處執(zhí)行的所述方法的一個(gè)示例實(shí)施例。
[0076]向客戶機(jī),即主要和輔助虛擬機(jī)提供(401)可尋址的存儲(chǔ)器的邏輯驅(qū)動(dòng)器。從虛擬機(jī)接收(402)接收修改操作(例如,寫入操作或修改盤上狀態(tài)的其他形式的操作)。在保留原始數(shù)據(jù)的同時(shí),修改操作數(shù)據(jù)被存儲(chǔ)(403)到存儲(chǔ)器的檢查點(diǎn)設(shè)置區(qū)域。
[0077]確定(404)是否存在由虛擬機(jī)通知的檢查點(diǎn)。如果存在,則從虛擬機(jī)接收(405)檢查點(diǎn)標(biāo)識(shí)符。檢查點(diǎn)設(shè)置區(qū)域數(shù)據(jù)被提交(406),并且不再保留先前的數(shù)據(jù)??梢愿鶕?jù)檢查點(diǎn)設(shè)置區(qū)域存儲(chǔ)器的形式來(lái)以不同的方式執(zhí)行這一操作。
[0078]例如,在具有非易失性檢查點(diǎn)設(shè)置區(qū)域的實(shí)施例中,可以使用“CheckpointID”來(lái)跟蹤塊/扇區(qū)用于哪個(gè)檢查點(diǎn)。當(dāng)提交檢查點(diǎn)時(shí),可以將那個(gè)CheckpointID字段設(shè)置為特殊的“無(wú)效”值,用于指示它不再是檢查點(diǎn)的一部分,并且已經(jīng)被提交。
[0079]該方法然后通過(guò)循環(huán)繼續(xù),以在步驟402接收另外的修改操作。
[0080]如果沒有檢查點(diǎn),則確定(407)是否存在另一個(gè)通知操作。如果存在,則該方法循環(huán),以重復(fù)步驟402和403。如果不存在,則確定(408)是否存在故障轉(zhuǎn)移。如果不存在,則該方法結(jié)束(409)。
[0081]如果存在故障轉(zhuǎn)移,則從輔助虛擬機(jī)接收(410)命令,以恢復(fù)到用于給定的檢查點(diǎn)標(biāo)識(shí)符的存儲(chǔ)狀態(tài)。存儲(chǔ)控制器將盤狀態(tài)恢復(fù)(411)到匹配給定的檢查點(diǎn)標(biāo)識(shí)符的狀態(tài)。然后從輔助虛擬機(jī)接收(412)另外的操作。
[0082]該方法支持建立多個(gè)同時(shí)檢查點(diǎn)。通常,可以建立新的檢查點(diǎn),然后,在短時(shí)間后刪除最老的檢查點(diǎn)。存儲(chǔ)控制器可以接收用于確定哪些檢查點(diǎn)存在于給定時(shí)間處的查詢。[0083]參見圖5,示意流程圖500示出所述方法的示例操作,并且時(shí)間軸560向頁(yè)面下前進(jìn)。提供了主要虛擬機(jī)510和輔助虛擬機(jī)520。邏輯驅(qū)動(dòng)器530向虛擬機(jī)510、520提供可尋址存儲(chǔ)器。物理驅(qū)動(dòng)器540包括物理存儲(chǔ)區(qū)域,該物理存儲(chǔ)區(qū)域包括另外的檢查點(diǎn)設(shè)置區(qū)域(以粗體輪廓示出)。
[0084]在這個(gè)示例實(shí)施例中,存儲(chǔ)控制器向主要虛擬機(jī)510提供小的四塊邏輯驅(qū)動(dòng)器。在該場(chǎng)景之后,在物理驅(qū)動(dòng)器540上,存儲(chǔ)控制器已經(jīng)提供了另外兩塊存儲(chǔ)器來(lái)作為存儲(chǔ)器的檢查點(diǎn)設(shè)置區(qū)域。注意,在這個(gè)簡(jiǎn)化示例中,假定虛擬機(jī)總是在塊大小的數(shù)據(jù)塊中寫入,并且如此一來(lái),使用在寫入時(shí)重新定向方法;即,向存儲(chǔ)器的寫入總是去往可獲得的檢查點(diǎn)設(shè)置塊。
[0085]在第一塊511上執(zhí)行寫入操作“A”501。將邏輯驅(qū)動(dòng)器530的視圖更新以示出寫入操作531,但是不修改底層的物理塊541,由此保留現(xiàn)有的數(shù)據(jù)。相反,向檢查點(diǎn)設(shè)置塊551寫入數(shù)據(jù)。如果存儲(chǔ)控制器的寫入高速緩存器被用作檢查點(diǎn)設(shè)置區(qū)域,則它可以接續(xù)使用寫入高速緩存。這個(gè)示例忽略了寫入高速緩存器的存在,但是所述方法不排除其使用。
[0086]執(zhí)行另一個(gè)寫入操作“B”502,此時(shí)修改第二塊512,再一次在邏輯驅(qū)動(dòng)器532上示出第二塊512。再一次,將原始?jí)K542原封不動(dòng)地留在物理驅(qū)動(dòng)器上,并且取而代之向檢查點(diǎn)設(shè)置塊552寫入新的數(shù)據(jù)。
[0087]檢查點(diǎn)(ID#1)570出現(xiàn)。在這一點(diǎn),不能再恢復(fù)到在這個(gè)時(shí)間點(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,此時(shí),修改在邏輯驅(qū)動(dòng)器上的第三塊513。再一次,示出邏輯驅(qū)動(dòng)塊533,但是保留底層的物理塊543,并且相反寫入第一可獲得檢查點(diǎn)設(shè)置塊553。
[0090]執(zhí)行向同一第三塊513的另一個(gè)寫入操作“D”。重寫邏輯驅(qū)動(dòng)塊533。在這個(gè)情況下,在仍然保持物理塊543的同時(shí),重寫相同的檢查點(diǎn)設(shè)置塊553。
[0091]故障轉(zhuǎn)移580出現(xiàn)。主要虛擬機(jī)510不再運(yùn)行,并且輔助虛擬機(jī)520狀態(tài)匹配盤上狀態(tài)的更舊的版本。
[0092]輔助虛擬機(jī)520向存儲(chǔ)控制器發(fā)出命令505,以將邏輯驅(qū)動(dòng)器恢復(fù)到與檢查點(diǎn)#1570相關(guān)聯(lián)的狀態(tài)。塊的邏輯物理映射在檢查點(diǎn)#1570后被恢復(fù)以匹配該狀態(tài)。
[0093]在檢查點(diǎn)#1570后隨后被修改的塊553被有效地丟棄,并且它們?cè)僖淮巫優(yōu)榭捎玫臋z查點(diǎn)設(shè)置塊。
[0094]輔助虛擬機(jī)520執(zhí)行從第三邏輯塊533的讀取(506)。這返回來(lái)自第三物理塊543的數(shù)據(jù),而不是由主要虛擬機(jī)510寫入的數(shù)據(jù),該由主要虛擬機(jī)510寫入的數(shù)據(jù)在故障轉(zhuǎn)移之前被寫入檢查點(diǎn)設(shè)置塊553。
[0095]所述方法和系統(tǒng)將I/O操作的狀態(tài)委托給存儲(chǔ)控制器,并且在檢查點(diǎn)出現(xiàn)前以非破壞性方式來(lái)執(zhí)行修改操作。在故障轉(zhuǎn)移出現(xiàn)的情況下,可以向存儲(chǔ)控制器提供檢查點(diǎn)標(biāo)識(shí)符。
[0096]所述的方法和系統(tǒng)允許客戶機(jī)體驗(yàn)高性能1/0,并且沒有由寫入時(shí)的檢查點(diǎn)方法引入的另外延遲地完成I/o操作。[0097]本發(fā)明可以采用整體硬件實(shí)施例、整體軟件實(shí)施例或包含硬件和軟件元素的實(shí)施例的形式。在優(yōu)選實(shí)施例中,以軟件來(lái)實(shí)現(xiàn)本發(fā)明,該軟件包括但是不限于固件、駐留軟件、微碼等。
[0098]本發(fā)明可以采用從計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可訪問(wèn)的計(jì)算機(jī)程序產(chǎn)品的形式,計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)用于提供程序代碼,以由計(jì)算機(jī)或任何指令執(zhí)行系統(tǒng)使用或與其相關(guān)聯(lián)地使用。為了本說(shuō)明書的目的,計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可以是可以包含、存儲(chǔ)、傳達(dá)、傳播或傳送程序以由指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用或與其相關(guān)地使用的任何設(shè)備。
[0099]介質(zhì)可以是電子、磁、光學(xué)、電磁、紅外線或半導(dǎo)體的系統(tǒng)(或設(shè)備或裝置)或者傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的示例包括半導(dǎo)體或固態(tài)存儲(chǔ)器、磁帶、可裝卸計(jì)算機(jī)盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、硬磁盤和光盤。光盤的當(dāng)前示例包括光盤只讀存儲(chǔ)器(CD-ROM)、光盤讀取 / 寫入(CD-R/W)和 DVD。
[0100]可以在不偏離本發(fā)明的范圍的情況下對(duì)于上面的內(nèi)容進(jìn)行改善和修改。
【權(quán)利要求】
1.一種用于鏡像虛擬機(jī)系統(tǒng)中的存儲(chǔ)器檢查點(diǎn)設(shè)置的方法,該系統(tǒng)包括存儲(chǔ)控制器,所述存儲(chǔ)控制器被配置為: 從虛擬機(jī)接收(402)對(duì)存儲(chǔ)器的修改操作; 通過(guò)向存儲(chǔ)器的檢查點(diǎn)設(shè)置區(qū)域存儲(chǔ)所述修改操作數(shù)據(jù)并保留所存儲(chǔ)的先前數(shù)據(jù)狀態(tài),以非破壞性方式執(zhí)行(403)所述修改操作; 接收(404)檢查點(diǎn)通知;并且, 從所述檢查點(diǎn)設(shè)置區(qū)域提交(406)修改操作數(shù)據(jù),并釋放所存儲(chǔ)的先前數(shù)據(jù)狀態(tài)。
2.根據(jù)權(quán)利要求1所述的方法,包括: 支持多個(gè)檢查點(diǎn),其中檢查點(diǎn)通知包括用于與其他檢查點(diǎn)區(qū)分的檢查點(diǎn)標(biāo)識(shí)符。
3.根據(jù)權(quán)利要求1或2所述的方法,包括: 在所述存儲(chǔ)控制器處接收用于確定哪些檢查點(diǎn)存在于給定時(shí)間處的查詢。
4.根據(jù)權(quán)利要求1至3的任何一項(xiàng)所述的方法,其中提交修改操作包括: 提交檢查點(diǎn)設(shè)置區(qū)域存儲(chǔ)器的狀態(tài);并且 釋放所存儲(chǔ)的先前數(shù)據(jù)狀態(tài),以變?yōu)樾碌臋z查點(diǎn)設(shè)置區(qū)域存儲(chǔ)器。
5.根據(jù)權(quán)利要求1至3的任何一項(xiàng)所述的方法,其中提交修改操作包括:` 從所述檢查點(diǎn)設(shè)置區(qū)域向所存儲(chǔ)的先前數(shù)據(jù)狀態(tài)的物理存儲(chǔ)位置寫入所述修改操作數(shù)據(jù)。
6.根據(jù)先前的權(quán)利要求的任何一項(xiàng)所述的方法,包括: 提供(401)由客戶機(jī)能夠?qū)ぶ返拇鎯?chǔ)器的邏輯驅(qū)動(dòng)器; 在所述邏輯驅(qū)動(dòng)器上存儲(chǔ)所述修改操作;并且 在所述檢查點(diǎn)設(shè)置區(qū)域中保持所述邏輯驅(qū)動(dòng)器向物理存儲(chǔ)器的映射。
7.根據(jù)前述權(quán)利要求的任何一項(xiàng)所述的方法,包括: 接收(408)故障轉(zhuǎn)移通知;并且 將所述物理存儲(chǔ)器恢復(fù)(411)為匹配檢查點(diǎn)狀態(tài);
8.根據(jù)前述權(quán)利要求的任何一項(xiàng)所述的方法,包括: 接收(408)具有檢查點(diǎn)標(biāo)識(shí)符的故障轉(zhuǎn)移通知; 將所述物理存儲(chǔ)器恢復(fù)(411)為匹配所識(shí)別的檢查點(diǎn)狀態(tài); 在所述識(shí)別的檢查點(diǎn)之后,恢復(fù)所述邏輯驅(qū)動(dòng)器向所述物理存儲(chǔ)器狀態(tài)的所述映射;并且 在所述檢查點(diǎn)設(shè)置區(qū)域中丟棄所存儲(chǔ)的操作。
9.根據(jù)前述權(quán)利要求的任何一項(xiàng)所述的方法,其中,檢查點(diǎn)標(biāo)識(shí)符將所述標(biāo)識(shí)符與邏輯驅(qū)動(dòng)器的時(shí)間點(diǎn)視圖相關(guān)聯(lián)。
10.根據(jù)前述權(quán)利要求的任何一項(xiàng)所述的方法,其中,以非破壞性方式執(zhí)行所述修改操作包括下述的組中的一個(gè):執(zhí)行寫入時(shí)復(fù)制的操作,并執(zhí)行寫入時(shí)重新定向的操作。
11.一種用于鏡像虛擬機(jī)系統(tǒng)中的存儲(chǔ)器檢查點(diǎn)設(shè)置的系統(tǒng),包括: 處理器; 存儲(chǔ)控制器(231),包括: 由客戶機(jī)可尋址的邏輯驅(qū)動(dòng)器向物理存儲(chǔ)器的映射部件(241); 非破壞性修改操作部件(242),用于以非破壞性方式來(lái)執(zhí)行接收的存儲(chǔ)修改操作,其包括:暫時(shí)存儲(chǔ)部件(243),用于向存儲(chǔ)器(236)的檢查點(diǎn)設(shè)置區(qū)域存儲(chǔ)所述修改操作數(shù)據(jù),并保留所存儲(chǔ)的先前數(shù)據(jù)狀態(tài); 檢查點(diǎn)設(shè)置接收部件(244),用于從檢查點(diǎn)的虛擬機(jī)接收通知;和 提交部件(246),用于從所述 檢查點(diǎn)設(shè)置區(qū)域提交修改操作數(shù)據(jù),并釋放所存儲(chǔ)的先前數(shù)據(jù)狀態(tài)。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中,所述存儲(chǔ)器(236)的所述檢查點(diǎn)設(shè)置區(qū)域是除由所述客戶機(jī)可訪問(wèn)的所述盤上存儲(chǔ)器外的另一個(gè)盤上存儲(chǔ)器,并且其中,所述提交部件(246)用于提交所述檢查點(diǎn)設(shè)置區(qū)域存儲(chǔ)器的狀態(tài)。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其中,所述提交部件(246)可操作用于釋放所存儲(chǔ)的先前數(shù)據(jù)狀態(tài),以變?yōu)樾碌臋z查點(diǎn)設(shè)置區(qū)域存儲(chǔ)器。
14.根據(jù)權(quán)利要求11至13的任何一項(xiàng)所述的系統(tǒng),其中,存儲(chǔ)器(236)的所述檢查點(diǎn)設(shè)置區(qū)域是與所述客戶機(jī)能夠訪問(wèn)的所述物理存儲(chǔ)器分離的存儲(chǔ)器,并且其中,所述提交部件用于:從所述檢查點(diǎn)設(shè)置區(qū)域向所存儲(chǔ)的先前數(shù)據(jù)狀態(tài)的所述物理存儲(chǔ)器位置寫入所述修改操作數(shù)據(jù)。
15.根據(jù)權(quán)利要求14所述的系統(tǒng),其中,所述獨(dú)立的存儲(chǔ)器是非易失性存儲(chǔ)器。
16.根據(jù)權(quán)利要求11至15的任何一項(xiàng)所述的系統(tǒng),包括: 故障轉(zhuǎn)移部件(245),用于接收故障轉(zhuǎn)移通知,并且恢復(fù)所述物理存儲(chǔ)器以匹配檢查點(diǎn)狀態(tài)。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其中,所述故障轉(zhuǎn)移部件(245)包括用于下述部分的功能: 接收具有檢查點(diǎn)標(biāo)識(shí)符的故障轉(zhuǎn)移通知; 將所述物理存儲(chǔ)器恢復(fù)為匹配所識(shí)別的檢查點(diǎn)狀態(tài); 在所述識(shí)別的檢查點(diǎn)之后,恢復(fù)所述邏輯驅(qū)動(dòng)器向所述物理存儲(chǔ)器狀態(tài)的所述映射;并且 在所述檢查點(diǎn)設(shè)置區(qū)域中丟棄所存儲(chǔ)的操作。
18.—種在計(jì)算機(jī)可讀介質(zhì)上存儲(chǔ)并且能夠被安裝到數(shù)字計(jì)算機(jī)的內(nèi)部存儲(chǔ)器內(nèi)的計(jì)算機(jī)程序,包括軟件代碼部分,用于當(dāng)所述程序在計(jì)算機(jī)上運(yùn)行時(shí),執(zhí)行根據(jù)權(quán)利要求1至10的任何一項(xiàng)的方法。
【文檔編號(hào)】G06F11/36GK103562878SQ201280025030
【公開日】2014年2月5日 申請(qǐng)日期:2012年5月1日 優(yōu)先權(quán)日:2011年5月23日
【發(fā)明者】J.姆爾卡西, W.J.斯凱爾斯, C.F.弗恩特 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司