專利名稱:用于維持鏡像虛擬環(huán)境中存儲(chǔ)裝置的一致性的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及數(shù)據(jù)處理系統(tǒng),并且,具體地,涉及虛擬數(shù)據(jù)處理系統(tǒng)中的存儲(chǔ)一致性。
背景技術(shù):
虛擬機(jī)(VM)是諸如數(shù)據(jù)處理系統(tǒng)或計(jì)算機(jī)系統(tǒng)的物理機(jī)的邏輯實(shí)現(xiàn)。這樣,VM能夠以與物理計(jì)算機(jī)系統(tǒng)運(yùn)行(execute)代碼同樣的方式運(yùn)行計(jì)算機(jī)程序和計(jì)算機(jī)可讀代碼,并且,在使資源對(duì)VM可用時(shí),VM可使用物理機(jī)提供的資源。所述另一種方式:VM提供對(duì)在VM上運(yùn)行的計(jì)算機(jī)程序可用的物理資源的抽象。諸如計(jì)算機(jī)系統(tǒng)的物理機(jī)可包括單個(gè)VM,或可包括幾個(gè)VM。提供VM的軟件層被稱為管理程序(hypervisor)。實(shí)現(xiàn)VM的一種方法包括使用鏡像VM環(huán)境。鏡像VM環(huán)境包括兩個(gè)相同的VM。兩個(gè)相同的VM中的每個(gè)包括可用物理資源的相同抽象。鏡像VM可駐留在單個(gè)主機(jī)、或分立的主機(jī)上。鏡像VM環(huán)境允許在一個(gè)虛擬機(jī)上遇到硬件錯(cuò)誤的計(jì)算機(jī)代碼在第二虛擬機(jī)上運(yùn)行。
發(fā)明內(nèi)容
所述實(shí)施例的方面提供了用于實(shí)現(xiàn)可由第一機(jī)器和第二機(jī)器訪問的共享存儲(chǔ)裝置中的數(shù)據(jù)一致性的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。該方法包括:響應(yīng)于從在第一機(jī)器上執(zhí)行的第一檢查點(diǎn)接收到第一機(jī)器的第一狀態(tài)信息,將第二機(jī)器配置為與第一機(jī)器的第一檢查點(diǎn)操作狀態(tài)相對(duì)應(yīng)的鏡像操作狀態(tài)。該方法還包括:接收第一機(jī)器將覆寫在共享存儲(chǔ)裝置中存儲(chǔ)的一個(gè)或多個(gè)現(xiàn)有數(shù)據(jù)的通知,并且,還包括:響應(yīng)于接收到第一機(jī)器將覆寫一個(gè)或多個(gè)現(xiàn)有數(shù)據(jù)的通知,讀取在存儲(chǔ)位置中存儲(chǔ)的一個(gè)或多個(gè)現(xiàn)有數(shù)據(jù);將所述一個(gè)或多個(gè)現(xiàn)有數(shù)據(jù)的復(fù)本(copy)存儲(chǔ)在第二機(jī)器的本地存儲(chǔ)裝置;以及向第一機(jī)器發(fā)送現(xiàn)有數(shù)據(jù)已被成功地存儲(chǔ)在本地存儲(chǔ)裝置中的確認(rèn),以使第一機(jī)器能夠用新寫入的數(shù)據(jù)來覆寫共享存儲(chǔ)裝置中的一個(gè)或多個(gè)現(xiàn)有數(shù)據(jù)。該方法還提供:響應(yīng)于接收到指示第一機(jī)器在下一個(gè)檢查點(diǎn)之前已發(fā)生故障的故障通知,從第二機(jī)器的本地存儲(chǔ)裝置檢索現(xiàn)有數(shù)據(jù)的復(fù)本;用從第二機(jī)器的本地存儲(chǔ)裝置檢索的現(xiàn)有數(shù)據(jù)的復(fù)本來覆寫在共享存儲(chǔ)裝置中新寫入的數(shù)據(jù);以及觸發(fā)第二機(jī)器來接管并恢復(fù)先前由第一機(jī)器從第一檢查點(diǎn)執(zhí)行的工作。上面的總結(jié)包括簡(jiǎn)化、一般化和細(xì)節(jié)的省略,且不意欲作為所要求權(quán)利的主題的綜合描述,而意欲提供與其關(guān)聯(lián)的某些功能性的簡(jiǎn)要概述。對(duì)于本領(lǐng)域的技術(shù)人員來說,通過檢查附圖和詳細(xì)撰寫的描述,所要求權(quán)利的主題的其他系統(tǒng)、方法、功能、特征和優(yōu)點(diǎn)將變得顯而易見。在下面詳細(xì)撰寫的描述中,本發(fā)明的以上和附加的目的、特征和優(yōu)點(diǎn)將變得顯而易見。
通過結(jié)合附圖來閱讀說明性的實(shí)施例的描述,其中:圖1提供了根據(jù)一個(gè)實(shí)施例的可實(shí)踐本發(fā)明的示例數(shù)據(jù)處理系統(tǒng)的框圖表示。圖2提供了根據(jù)一個(gè)實(shí)施例的具有在網(wǎng)絡(luò)架構(gòu)內(nèi)連接的鏡像虛擬機(jī)的示例計(jì)算環(huán)境的框圖表示。圖3提供了根據(jù)一個(gè)實(shí)施例的具有共同位于同一物理主機(jī)上的鏡像虛擬機(jī)的示例計(jì)算環(huán)境框圖表示。圖4是圖示根據(jù)一個(gè)實(shí)施例的方法的流程圖,該方法用于通過使用檢查點(diǎn)操作來收集狀態(tài)信息并通知在第一虛擬機(jī)上運(yùn)行計(jì)算機(jī)代碼期間出現(xiàn)的故障,而實(shí)現(xiàn)數(shù)據(jù)一致性。圖5是圖示根據(jù)一個(gè)實(shí)施例的方法的流程圖,該方法用于通過鏡像虛擬機(jī)的基于檢查點(diǎn)的配置來實(shí)現(xiàn)數(shù)據(jù)一致性。圖6是圖示根據(jù)一個(gè)實(shí)施例的方法的示例序列圖,該方法用于通過鏡像虛擬機(jī)環(huán)境在共享存儲(chǔ)裝置中實(shí)現(xiàn)數(shù)據(jù)一致性。
具體實(shí)施例方式圖示的實(shí)施例提供了通過鏡像虛擬機(jī)在共享存儲(chǔ)裝置中實(shí)現(xiàn)數(shù)據(jù)一致性的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。簡(jiǎn)而言之,盡管計(jì)算機(jī)代碼運(yùn)行在第一虛擬機(jī)上,但在檢查點(diǎn)周期性地捕捉狀態(tài)信息,并將其轉(zhuǎn)發(fā)到第二虛擬機(jī)。利用狀態(tài)信息來配置次(secondary)虛擬機(jī),以將主(primary)虛擬機(jī)在檢查點(diǎn)的的操作狀態(tài)鏡像。響應(yīng)于接收到第一虛擬機(jī)將在檢查點(diǎn)之后覆寫共享存儲(chǔ)裝置中的現(xiàn)有數(shù)據(jù)的通知,次虛擬機(jī)從共享存儲(chǔ)裝置中讀取現(xiàn)有數(shù)據(jù),將現(xiàn)有數(shù)據(jù)存儲(chǔ)在次虛擬機(jī)的本地存儲(chǔ)裝置中,并向第一虛擬機(jī)發(fā)送確認(rèn)。此外,在一個(gè)或多個(gè)實(shí)施例中,第二虛擬機(jī)接收指示第一虛擬機(jī)在下一個(gè)檢查點(diǎn)之前已發(fā)生故障的通知。響應(yīng)于接收到該通知,第二虛擬機(jī)檢索來自本地存儲(chǔ)裝置的現(xiàn)有數(shù)據(jù)的復(fù)本,利用現(xiàn)有數(shù)據(jù)的復(fù)本來覆寫在共享存儲(chǔ)裝置中新寫入的數(shù)據(jù),并觸發(fā)第二虛擬機(jī)的處理器,以恢復(fù)先前由第一機(jī)器執(zhí)行的工作。第二虛擬機(jī)使用在第一檢查點(diǎn)存儲(chǔ)在共享存儲(chǔ)裝置中的數(shù)據(jù)值來從第一檢查點(diǎn)恢復(fù)操作。在下面對(duì)本發(fā)明的示例實(shí)施例的詳細(xì)描述中,充分詳細(xì)地描述了可實(shí)踐本發(fā)明的特定示例實(shí)施例,使本領(lǐng)域的技術(shù)人員能夠?qū)嵺`本發(fā)明,并且,應(yīng)理解,可利用其它實(shí)施例,并且,可在不背離本發(fā)明的精神或范圍的情況下作出邏輯、架構(gòu)、程序性、機(jī)械、電和其它改變。因此,下面的詳細(xì)描述不被視為限制意義,并且,本發(fā)明的范圍由所附權(quán)利要求及其等同物定義。這里使用的術(shù)語僅用于說明特定實(shí)施例的目的。并且,不意欲限制本發(fā)明。如在這里使用的,單數(shù)形式的“一”、“一個(gè)”和“該”意欲也包括復(fù)數(shù)形式,除非上下文明確相反指出。還將理解,當(dāng)在此說明書中使用時(shí),術(shù)語“包括”和/或“包含”指定所述特征、整數(shù)、步驟、操作、元素和/或組件的存在,而不排除一個(gè)或多個(gè)其它特征、整數(shù)、步驟、操作、元素、組件和/或其組的存在或添加。下面通過參照根據(jù)本發(fā)明的實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖來描述本發(fā)明的方面。將理解流程圖和/或框圖的每個(gè)框、以及流程圖和/或框圖的框的組合可被實(shí)現(xiàn)為計(jì)算機(jī)程序指令(或代碼)。這些計(jì)算機(jī)程序指令可被提供到通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,以生產(chǎn)機(jī)器,使得經(jīng)由計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令實(shí)現(xiàn)在流程圖和/或框圖的一個(gè)或多個(gè)框中指定的方法/處理/功能/動(dòng)作。這些計(jì)算機(jī)程序指令還可被存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中,其可引導(dǎo)計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它裝置以特定方式起作用,使得在計(jì)算機(jī)可讀介質(zhì)中存儲(chǔ)的指令生產(chǎn)制品(或計(jì)算機(jī)程序產(chǎn)品),其包括實(shí)現(xiàn)在流程圖和/或框圖的一個(gè)或多個(gè)框中指定的方法/處理/功能/動(dòng)作的指令。計(jì)算機(jī)程序指令還可被加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它裝置,以使操作步驟的系列在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它裝置執(zhí)行,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理/方法,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置上運(yùn)行的指令實(shí)現(xiàn)在流程圖和/或框圖的一個(gè)或多個(gè)框中指定的方法/處理/功能/動(dòng)作。應(yīng)理解,特定組件、裝置和/或參數(shù)名稱的使用(如在這里描述的執(zhí)行工具/邏輯中的那些)僅用于示例,且不意欲暗示對(duì)本發(fā)明的任何限制。由此,可利用用來描述這里的組件/裝置/參數(shù)的不同的命名/術(shù)語來實(shí)現(xiàn)本發(fā)明,而不是限制。這里使用的每個(gè)術(shù)語在上下文中被使用時(shí)將被賦予其廣義解釋。應(yīng)理解,可實(shí)踐所述實(shí)施例的計(jì)算環(huán)境可被稱為云計(jì)算環(huán)境。云計(jì)算表示基于因特網(wǎng)的計(jì)算,其中,共享的資源、軟件和信息被按需要提供給計(jì)算機(jī)系統(tǒng)和其它電子裝置(例如,移動(dòng)電話)的用戶,這類似與電網(wǎng)。云計(jì)算的采用已被虛擬化的廣泛利用而推動(dòng),虛擬化是諸如操作系統(tǒng)、服務(wù)器、存儲(chǔ)裝置、網(wǎng)絡(luò)資源等事物的虛擬(而不是實(shí)際)版本的創(chuàng)建。虛擬機(jī)(VM)是物理機(jī)(計(jì)算機(jī)系統(tǒng))的軟件實(shí)現(xiàn),其像物理機(jī)那樣執(zhí)行指令。VM通常被分類為系統(tǒng)VM或進(jìn)程VM。系統(tǒng)VM提供完整的系統(tǒng)平臺(tái),其支持完整操作系統(tǒng)(OS)的運(yùn)行。相反,進(jìn)程VM通常被指定為運(yùn)行單個(gè)程序,并支持單個(gè)進(jìn)程。VM特征為:在VM上運(yùn)行的應(yīng)用軟件被限于由VM提供的資源和抽象。系統(tǒng)VM(也被稱為硬件VM)允許背后的物理機(jī)資源在不同VM之間共享,其中每個(gè)VM運(yùn)行其自己的OS。提供虛擬化并控制VM的軟件典型被稱為VM監(jiān)視程序(VMM)或管理程序。管理程序可運(yùn)行在裸硬件(類型I或原生(native)VMM)上、或運(yùn)行在操作系統(tǒng)之上(類型2或宿主(hosted) VMM)。云計(jì)算提供了基于因特網(wǎng)對(duì)信息技術(shù)(IT)服務(wù)的消費(fèi)和遞交模型,并涉及動(dòng)態(tài)可擴(kuò)展(scalable)且通常虛擬化的資源的因特網(wǎng)上的提供。對(duì)遠(yuǎn)程計(jì)算網(wǎng)站的簡(jiǎn)單化訪問(ease-of-access)(例如,經(jīng)由因特網(wǎng)或私有公司網(wǎng))有助于云計(jì)算,并且,云計(jì)算頻繁地采用云消費(fèi)者可訪問并通過網(wǎng)絡(luò)瀏覽器使用的基于網(wǎng)絡(luò)的工具或應(yīng)用的形式,如同該工具或應(yīng)用是在云消費(fèi)者的計(jì)算機(jī)系統(tǒng)上安裝的本地程序那樣。商用云實(shí)現(xiàn)通常被期望滿足消費(fèi)者的服務(wù)質(zhì)量(QoS)需求,并典型地包括服務(wù)級(jí)別協(xié)定(SLA)。云消費(fèi)者通過從云供應(yīng)方(例如,第三方提供方)租用使用量來避免資本支出。在典型的云實(shí)現(xiàn)中,云消費(fèi)者消費(fèi)作為服務(wù)的資源,并僅對(duì)使用的資源付費(fèi)?,F(xiàn)在參照附圖,并從圖1開始,繪出示例數(shù)據(jù)處理系統(tǒng)(DPS)IOO的框圖表示,在該系統(tǒng)內(nèi),可有利地實(shí)現(xiàn)所述實(shí)施例的功能方面。DPS 100包括通過互連150而連接的大量組件。具體地,圖1繪出了 DPS 100,其包括存儲(chǔ)器102、中央處理單元(CPU)104 (也可互換地被稱為處理器)、存儲(chǔ)裝置106、服務(wù)處理器108、輸入/輸出(I/O)控制器110、以及網(wǎng)絡(luò)接口卡(NIC)112 (也可互換地被稱為網(wǎng)絡(luò)接口)。另外,圖1繪出了 DPS 100可經(jīng)由NIC 112跨越網(wǎng)絡(luò)114而連接到網(wǎng)絡(luò)共享存儲(chǔ)裝置146、以及第二 DPS 148。
本領(lǐng)域的技術(shù)人員將理解,CPU 104可為任意類型的硬件處理器。I/O控制器110允許用戶與DPS 100接口。如所繪出的,I/O控制器110提供用于諸如顯示裝置140、鍵盤142和鼠標(biāo)144的裝置的接口。根據(jù)一個(gè)或多個(gè)實(shí)施例,顯示裝置140可包括輸出部件,如液晶顯示器(LCD)、等離子顯示器、陰極射線管(CRT)監(jiān)視器或任意其他類顯示裝置。DPS 100還包括服務(wù)處理器108,其提供處理引擎,以支持管理程序116的運(yùn)行、以及通過管理程序116的運(yùn)行而使能的各種虛擬化。如通過參照?qǐng)D2-3所述,管理程序116提供DPS 100的資源,以創(chuàng)建一個(gè)或多個(gè)操作系統(tǒng)(OS)邏輯分區(qū)或虛擬機(jī),并且,管理程序116管理虛擬機(jī)、以及與虛擬機(jī)相關(guān)聯(lián)的幾個(gè)管理進(jìn)程。存儲(chǔ)器102可為隨機(jī)存取存儲(chǔ)器(RAM)、高速緩存、閃存、或任意其他類型的存儲(chǔ)結(jié)構(gòu),其被配置為存儲(chǔ)可由CPU 104執(zhí)行的計(jì)算機(jī)指令/代碼和/或在這樣的運(yùn)行期間使用的數(shù)據(jù)。如繪出的,存儲(chǔ)器102包括操作系統(tǒng)118。操作系統(tǒng)118可為管理計(jì)算機(jī)代碼的運(yùn)行并管理硬件資源的任意平臺(tái)。例如,操作系統(tǒng)118可為Advanced InteractiveExecutive ( ΑΙΧ )操作系統(tǒng)、LINUX 操作系統(tǒng)、或本領(lǐng)域中公知的任意其他操作系統(tǒng)。AIX 是IBM公司的注冊(cè)商標(biāo),LINUX 是Linus Torvalds的注冊(cè)商標(biāo)。存儲(chǔ)器102還包括應(yīng)用120和多個(gè)功能模塊,諸如回滾(Rollback)讀取(RR)模塊122、檢查點(diǎn)模塊124、以及數(shù)據(jù)寫入(DW)模塊126。應(yīng)理解,這些模塊中的一個(gè)或多個(gè)可與管理程序116相關(guān)聯(lián),且/或可被分布到可由管理程序116提供的一個(gè)或多個(gè)虛擬機(jī)的特定存儲(chǔ)器。為了此說明的清楚的目的,應(yīng)用120為可運(yùn)行計(jì)算機(jī)代碼,其可在由管理程序116提供的鏡像虛擬機(jī)內(nèi)執(zhí)行。在一個(gè)或多個(gè)實(shí)施例中,應(yīng)用120可為可在包括第一虛擬機(jī)和第二虛擬機(jī)(它們作為鏡像的虛擬機(jī))的鏡像虛擬化環(huán)境內(nèi)執(zhí)行的任意計(jì)算機(jī)代碼(例如,參照?qǐng)D2和3)。在鏡像虛擬化環(huán)境內(nèi),由通過對(duì)來自DPS 100的組件中的一個(gè)或多個(gè)硬件、固件和/或OS資源(諸如存儲(chǔ)器102、存儲(chǔ)裝置106和CPU 104)進(jìn)行抽象而配置的一個(gè)或多個(gè)邏輯分區(qū)(虛擬機(jī))運(yùn)行應(yīng)用120。DPS 100的邏輯分區(qū)或各個(gè)實(shí)施例的描述內(nèi)的DPS的任意表示將可被互換地稱為虛擬機(jī)。如所描述的,DPS 100還包括存儲(chǔ)裝置106。存儲(chǔ)裝置106可為任意類型的計(jì)算機(jī)存儲(chǔ)裝置,如硬盤、光盤驅(qū)動(dòng)器(如緊湊盤(CD)驅(qū)動(dòng)器或數(shù)字視頻盤(DVD)驅(qū)動(dòng)器)、以及閃存驅(qū)動(dòng)器。當(dāng)DPS 100包括次虛擬機(jī)時(shí),存儲(chǔ)裝置106可包括RR數(shù)據(jù)存儲(chǔ)裝置132,其包括從由第一虛擬機(jī)中的檢查點(diǎn)模塊124執(zhí)行的檢查點(diǎn)的時(shí)刻起已在共享存儲(chǔ)裝置中被覆寫的一個(gè)或多個(gè)數(shù)據(jù)集。下面,通過參照?qǐng)D2-6,來詳細(xì)描述檢查點(diǎn)模塊124在實(shí)現(xiàn)這里提供的數(shù)據(jù)一致性的處理內(nèi)的操作。在一個(gè)或多個(gè)實(shí)施例中,回滾讀取(RR)數(shù)據(jù)存儲(chǔ)裝置132包括回滾讀取(RR)映射,其提供該一個(gè)或多個(gè)存儲(chǔ)的數(shù)據(jù)集中的每個(gè)、與從其讀取數(shù)據(jù)的共享存儲(chǔ)裝置(諸如網(wǎng)絡(luò)存儲(chǔ)裝置146)的關(guān)聯(lián)存儲(chǔ)位置之間的映射。RR數(shù)據(jù)存儲(chǔ)裝置132還可存在于網(wǎng)絡(luò)存儲(chǔ)裝置146、或第二 DPS 148內(nèi)的存儲(chǔ)裝置中?,F(xiàn)在,通過參照?qǐng)D2,示出了:根據(jù)一個(gè)或多個(gè)所述實(shí)施例,示例性的虛擬化的網(wǎng)絡(luò)化DPS架構(gòu)200,其在經(jīng)由網(wǎng)絡(luò)構(gòu)造(206)互連的分立主機(jī)裝置中具有鏡像虛擬機(jī)。網(wǎng)絡(luò)化的DPS架構(gòu)200用作鏡像VM環(huán)境的示例,其具有位于跨越網(wǎng)絡(luò)分布的不同主機(jī)裝置上的主和次VM。如所繪出的,網(wǎng)絡(luò)化的DPS架構(gòu)200包括跨越互連或網(wǎng)絡(luò)構(gòu)造206以通信方式連接的主主機(jī)202和次主機(jī)252。另外,網(wǎng)絡(luò)化的DPS架構(gòu)200包括在網(wǎng)絡(luò)構(gòu)造206上連接的存儲(chǔ)裝置208。根據(jù)一個(gè)或多個(gè)實(shí)施例,主主機(jī)202和次主機(jī)252中的每個(gè)是物理計(jì)算機(jī)系統(tǒng)。類似于圖1中的DPS 100,主主機(jī)202包括硬件210,其包括I/O 226、網(wǎng)絡(luò)接口(NI)224、本地存儲(chǔ)裝置222、CPU 218、以及存儲(chǔ)器220。類似地,次主機(jī)252包括分離硬件260,其包括I/O 276、網(wǎng)絡(luò)接口(NI) 274、本地存儲(chǔ)裝置272、CPU 268、以及存儲(chǔ)器270。在硬件210和硬件260中發(fā)現(xiàn)的組件可類似于在圖1的DPS 100中發(fā)現(xiàn)的組件。在主主機(jī)202中,管理程序212邏輯上位于硬件層210之上。管理程序212是虛擬化管理組件,其對(duì)在硬件210中可用的資源分區(qū),以創(chuàng)建邏輯分區(qū),如主VM 216。另外,管理程序212被配置為管理主VM 216、以及主VM216可用的系統(tǒng)資源。管理程序212在操作上連接到服務(wù)處理器214 (和/或在服務(wù)處理器214內(nèi)/上運(yùn)行),服務(wù)處理器214允許經(jīng)由管理程序212對(duì)邏輯分區(qū)的外部配置和/或管理。如所示出的,主VM 216包括作為CPU 218的邏輯分區(qū)的CPU 228、以及作為存儲(chǔ)器220的邏輯分區(qū)的存儲(chǔ)器230。主VM 216還可具有對(duì)提供用于主VM 216的本地存儲(chǔ)裝置232的存儲(chǔ)裝置222的邏輯分區(qū)的訪問。另外,主VM 216包括操作系統(tǒng)234的實(shí)例。盡管未示出,但根據(jù)一個(gè)或多個(gè)實(shí)施例,操作系統(tǒng)234可為位于存儲(chǔ)器220中的操作系統(tǒng)的實(shí)例。主VM 216及其中的邏輯組件提供了用于計(jì)算機(jī)代碼的虛擬運(yùn)行環(huán)境。具體地,如所繪出的,主VM 216可為用于應(yīng)用236A、檢查點(diǎn)模塊238以及DW模塊240的運(yùn)行的運(yùn)行環(huán)境。在可選實(shí)施例中,檢查點(diǎn)模塊238以及DW模塊240中的一個(gè)或兩者可作為管理程序212內(nèi)的可運(yùn)行模塊而存在,并且,可由管理程序212周期性地觸發(fā)檢查點(diǎn)模塊238以及DW模塊240的執(zhí)行。在另一實(shí)施例中,檢查點(diǎn)模塊238以及DW模塊240中的一個(gè)或兩者可為OS242內(nèi)的可運(yùn)行模塊。檢查點(diǎn)模塊238是捕捉與運(yùn)行已被中止(suspend)的運(yùn)行點(diǎn)相對(duì)應(yīng)的狀態(tài)信息的工具。遇到檢查點(diǎn)時(shí)的主VM 202的狀態(tài)是檢查點(diǎn)操作狀態(tài)。在一個(gè)或多個(gè)實(shí)施例中,狀態(tài)信息包括諸如處理器狀態(tài)、存儲(chǔ)頁、以及存儲(chǔ)裝置中自先前檢查點(diǎn)或者自啟動(dòng)應(yīng)用246的運(yùn)行起已被修改的數(shù)據(jù)之類的數(shù)據(jù)。檢查點(diǎn)模塊238獲得在應(yīng)用236A的運(yùn)行由于遇到檢查點(diǎn)而被中止時(shí)的、主VM 202中的資源的檢查點(diǎn)操作狀態(tài)的狀態(tài)信息。在多個(gè)實(shí)施例中的一個(gè)中,檢查點(diǎn)是計(jì)算機(jī)程序的執(zhí)行中的點(diǎn),在該點(diǎn),應(yīng)捕捉狀態(tài)信息,且應(yīng)將鏡像虛擬機(jī)配置為與主VM 202的檢查點(diǎn)操作狀態(tài)匹配的鏡像操作狀態(tài)??捎蓱?yīng)用236A提供檢查點(diǎn)??蛇x地,在應(yīng)用236A的運(yùn)行期間,檢查點(diǎn)模塊238可周期性地生成檢查點(diǎn)。當(dāng)遇到檢查點(diǎn)時(shí),檢查點(diǎn)模塊238使應(yīng)用236A的運(yùn)行被CPU 228 (B卩,運(yùn)行應(yīng)用236A的處理器)中止。檢查點(diǎn)模塊238將捕捉的狀態(tài)信息傳送到存儲(chǔ)裝置,使應(yīng)用246A的運(yùn)行從中止運(yùn)行的運(yùn)行點(diǎn)重新開始,并繼續(xù)監(jiān)視應(yīng)用246A的運(yùn)行,以在已遇到下一個(gè)檢查點(diǎn)時(shí)進(jìn)行識(shí)別。DW模塊240是在應(yīng)用236A的運(yùn)行期間可并發(fā)運(yùn)行的工具,用來在主VM 216正在嘗試覆寫在與次級(jí)VM 266共享的存儲(chǔ)裝置中的數(shù)據(jù)時(shí)進(jìn)行識(shí)別。DW模塊240使用本地存儲(chǔ)裝置來提供主VM 216和次VM 266之間的供電存儲(chǔ)裝置的鏡像視圖。在一個(gè)或多個(gè)實(shí)施例中,當(dāng)應(yīng)用236A嘗試覆寫在與次VM 266共享的存儲(chǔ)裝置中存儲(chǔ)的數(shù)據(jù)時(shí),DW模塊240生成用來發(fā)送到次VM 266的、第一機(jī)器將要覆寫現(xiàn)有數(shù)據(jù)的通知,并且,Dff模塊240傳遞共享存儲(chǔ)裝置中的數(shù)據(jù)的位置的地址。DW模塊240將該通知發(fā)送到次VM 266或管理程序212,使得能夠復(fù)制所識(shí)別的存儲(chǔ)位置中的當(dāng)前數(shù)據(jù)并將所識(shí)別的存儲(chǔ)位置中的當(dāng)前數(shù)據(jù)本地地存儲(chǔ)到次VM 266。在允許在主VM216上運(yùn)行的應(yīng)用236A覆寫在所識(shí)別的共享存儲(chǔ)位置中的數(shù)據(jù)之前,Dff模塊240等待接收已復(fù)制數(shù)據(jù)并已將數(shù)據(jù)存儲(chǔ)在次VM 266的本地存儲(chǔ)裝置中的確認(rèn)。在次主機(jī)252中,管理程序262在邏輯上位于硬件層260之上。管理程序262是虛擬化管理組件,其將硬件260中可用的資源分區(qū),以創(chuàng)建邏輯分區(qū),諸如次VM 266。另外,管理程序262被配置為管理次VM 266、以及次VM 266可用的系統(tǒng)資源。管理程序262在操作上連接到服務(wù)處理器264 (和/或在服務(wù)處理器264內(nèi)/上運(yùn)行),服務(wù)處理器264允許經(jīng)由管理程序262對(duì)邏輯分區(qū)的外部配置和/或管理。在網(wǎng)絡(luò)化的DPS架構(gòu)200的鏡像虛擬環(huán)境內(nèi),管理程序212和262在建立主VM216和次VM 266的期間彼此通信,以確保兩個(gè)鏡像的VM在硬件和軟件上被類似/同等地配置。從整個(gè)系統(tǒng)角度看,在一個(gè)或多個(gè)實(shí)施例中,每個(gè)管理程序?qū)⒋_切的資源量分配給其各個(gè)虛擬機(jī),并且,還確保被分配的資源的類型是相似的。例如,被分配的處理器資源的處理器速度、以及所提供的只讀存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器的類型(即,存取速度和物理配置)在主VM 216和次VM 266中等同。OS實(shí)例的類似版本也被分配給每個(gè)虛擬機(jī)??蛇\(yùn)行工作的類似加載也被提供給兩個(gè)系統(tǒng),盡管實(shí)際上僅主VM 216在前行的基礎(chǔ)上(on an ongoingbasis)運(yùn)行其工作負(fù)載。由此,主VM 216和次VM 266兩者被提供有應(yīng)用的相同復(fù)本,其分別被標(biāo)識(shí)為應(yīng)用236A和應(yīng)用236B。次VM 266用作后備VM,并具體作為主要操作來在主VM 216出現(xiàn)硬件故障的情況下執(zhí)行應(yīng)用246B的運(yùn)行的VM。由此,次VM 266的計(jì)算機(jī)代碼(例如,應(yīng)用246B)的運(yùn)行可限于僅運(yùn)行從與檢查點(diǎn)相對(duì)應(yīng)的特定代碼運(yùn)行點(diǎn)起的計(jì)算機(jī)代碼,在該檢查點(diǎn)之前,已在主VM 216中成功進(jìn)行了計(jì)算機(jī)代碼的運(yùn)行。為了在主VM 216的計(jì)算機(jī)代碼的運(yùn)行故障的情況下有效地故障切換到次VM266,一個(gè)實(shí)施例提供了:自動(dòng)將次VM 266配置為主VM 216在每個(gè)檢查點(diǎn)的當(dāng)前操作狀態(tài)。由此,管理程序262在第一檢查點(diǎn)從主VM 216接收/獲得狀態(tài)信息,并且,管理程序262立即將次VM 266配置為與主VM 216的檢查點(diǎn)操作狀態(tài)相對(duì)應(yīng)的鏡像操作。在一個(gè)或多個(gè)實(shí)施例中,次VM 266的資源的配置導(dǎo)致CPU 278、存儲(chǔ)器280、以及本地存儲(chǔ)裝置282的狀態(tài)分別與CPU 228、存儲(chǔ)器230、以及本地存儲(chǔ)裝置232的狀態(tài)匹配。另外,次VM266的配置在該檢查點(diǎn)實(shí)現(xiàn)了主VM 216和次VM 266共享的任何物理存儲(chǔ)裝置的一致視圖(view)。例如,主VM 216和次VM 266可各自具有經(jīng)由網(wǎng)絡(luò)而對(duì)存儲(chǔ)裝置222、存儲(chǔ)裝置272、或存儲(chǔ)裝置208的訪問。一旦作為對(duì)主VM 216的鏡像虛擬機(jī)的次VM 266的配置成功完成,管理程序262便通知管理程序212,并且,管理程序212啟動(dòng)在主VM 216上的代碼運(yùn)行的恢復(fù)。次VM 266包括作為CPU 268的邏輯分區(qū)的CPU 278、以及作為存儲(chǔ)器270的邏輯分區(qū)的存儲(chǔ)器280。次VM 266還可具有對(duì)提供用于次VM 266的本地存儲(chǔ)裝置272的存儲(chǔ)裝置254的邏輯分區(qū)的訪問。另外,次VM 266包括操作系統(tǒng)284的實(shí)例。主VM 216和次VM 266是鏡像的虛擬機(jī)。由此,次VM 266及其中的邏輯組件提供了用于與主VM 216的虛擬運(yùn)行環(huán)境等同的計(jì)算機(jī)代碼的虛擬運(yùn)行環(huán)境。如所描述的,次VM 266可為用于運(yùn)行應(yīng)用246B、以及RR模塊288的運(yùn)行環(huán)境。在可選實(shí)施例中,RR模塊288可被提供為管理程序262的一部分,并可作為管理程序262內(nèi)的可運(yùn)行模塊而存在,并且,在接收到在主VM 216上的計(jì)算機(jī)代碼(例如應(yīng)用246A)的運(yùn)行中檢測(cè)到故障狀況的通知之后,可由管理程序262觸發(fā)RR模塊288的運(yùn)行。在另一實(shí)施例中,RR模塊288可為OS 284內(nèi)的可運(yùn)行模塊。在可選實(shí)施例中,RR模塊288可被提供為與管理程序262結(jié)合操作的服務(wù)處理器264內(nèi)的服務(wù)。RR模塊288是與DW模塊240接口的工具,并接收第一機(jī)器將覆寫在主VM 216和次VM 266的共享存儲(chǔ)裝置中存儲(chǔ)的一個(gè)或多個(gè)現(xiàn)有數(shù)據(jù)的通知。DW模塊240讀取在存儲(chǔ)位置中當(dāng)前存儲(chǔ)的現(xiàn)有數(shù)據(jù),并將現(xiàn)有數(shù)據(jù)的復(fù)本存儲(chǔ)在諸如RR數(shù)據(jù)存儲(chǔ)裝置290的本地存儲(chǔ)裝置中。在一個(gè)或多個(gè)實(shí)施例中,現(xiàn)有數(shù)據(jù)和從其讀取了數(shù)據(jù)的存儲(chǔ)位置之間的映射被存儲(chǔ)在RR映射292中。在存儲(chǔ)了現(xiàn)有數(shù)據(jù)的復(fù)本之后,RR模塊288向主VM 216發(fā)送確認(rèn),其指示成功存儲(chǔ)了現(xiàn)有數(shù)據(jù)。在一個(gè)或多個(gè)實(shí)施例中,可將該確認(rèn)發(fā)送到DW模塊240或管理程序212,以允許主VM 216覆寫現(xiàn)有數(shù)據(jù)。RR模塊288還與檢查點(diǎn)模塊238接口。當(dāng)檢查點(diǎn)模塊238將狀態(tài)信息發(fā)送到管理程序262并使管理程序262重新配置次VM 266時(shí),RR模塊288移除先前從RR數(shù)據(jù)存儲(chǔ)裝置290復(fù)制的數(shù)據(jù)。另外,如果在應(yīng)用246A的運(yùn)行期間主VM 216發(fā)生了運(yùn)行故障,則RR模塊288接收已出現(xiàn)了運(yùn)行故障的通知。RR模塊288檢索在RR數(shù)據(jù)存儲(chǔ)裝置290中存儲(chǔ)的數(shù)據(jù),并通過使用RR映射292來識(shí)別在從其讀取了數(shù)據(jù)的存儲(chǔ)裝置中的位置。RR模塊288用檢索到的先前復(fù)制并存儲(chǔ)在RR數(shù)據(jù)存儲(chǔ)裝置290中的數(shù)據(jù)來覆寫在RR映射292識(shí)別的存儲(chǔ)位置中的新寫入的數(shù)據(jù)。由此,在故障切換(failover)到次VM 266之后,共享存儲(chǔ)裝置通過VM 266的視圖等同于在先前的檢查點(diǎn)上共享存儲(chǔ)裝置通過主VM 216的視圖。在一個(gè)或多個(gè)實(shí)施例中,在將次VM 266的操作狀態(tài)配置為匹配主VM 216在先前的檢查點(diǎn)的操作狀態(tài)之后,RR模塊288或管理程序262觸發(fā)CPU 278從先前的檢查點(diǎn)恢復(fù)先前由主VM 216執(zhí)行的工作。 現(xiàn)在參照?qǐng)D3,其示出了示例虛擬化DPS架構(gòu)300的單主機(jī)裝置實(shí)現(xiàn),在其內(nèi),可有利地實(shí)現(xiàn)所述實(shí)施例的功能方面。虛擬化DPS 300用作單個(gè)物理裝置內(nèi)的鏡像VM環(huán)境的示例。虛擬化DPS 300被呈現(xiàn)為服務(wù)器,其包括硬件組件310和軟件、固件和/或OS組件,它們?cè)谶壿嬌媳还芾沓绦?12分區(qū)和規(guī)定,以創(chuàng)建主VM 316和次VM 366。DPS 300的架構(gòu)類似于單獨(dú)示出了虛擬機(jī)的圖1的架構(gòu)。在此可選實(shí)施例中,硬件層308包括CPU 334A-334B、存儲(chǔ)裝置332A-332B、存儲(chǔ)器336A-336B、以及網(wǎng)絡(luò)適配器或接口(NI)330A-330B中的每個(gè)的多個(gè)。管理程序312和服務(wù)處理器314在邏輯上位于硬件層310之上。如所示出的,圖3例示了一個(gè)或多個(gè)實(shí)施例,其中,檢查點(diǎn)模塊338、DW模塊340以及RR模塊368位于管理程序312內(nèi)。根據(jù)圖2,管理程序312將硬件310中的可用資源分區(qū),以創(chuàng)建邏輯分區(qū),包括主VM 316和次VM 366兩者,它們共同位于同一物理裝置(例如,DPS 300)上。另外,管理程序312被配置為管理主VM 316和次VM 366兩者、以及主VM 316和次VM 366可用的系統(tǒng)資源。如在這里呈現(xiàn)的,管理程序312還支持主VM 316和次VM 366之間的全部通信,尤其是與檢查點(diǎn)操作相關(guān)的信息的交換、以及共享數(shù)據(jù)存儲(chǔ)裝置的一致性。盡管主VM 316和次VM 366駐留在單個(gè)物理裝置中,但分配給每個(gè)VM的物理資源中的特定物理資源可以不同。例如,在主VM 316中,CPU 328、存儲(chǔ)器330、以及本地存儲(chǔ)裝置332可分別為CPU 334A、存儲(chǔ)器336A、以及存儲(chǔ)裝置332A的邏輯分區(qū)。另外,在次VM366中,CPU 378、存儲(chǔ)器380、以及本地存儲(chǔ)裝置382可分別為CPU 334B、存儲(chǔ)器336B、以及存儲(chǔ)裝置332B的邏輯分區(qū)。此外,主VM 316和次VM 366中的每個(gè)包括操作系統(tǒng)的實(shí)例(OS 334和OS 384)。在一個(gè)或多個(gè)實(shí)施例中,RR數(shù)據(jù)存儲(chǔ)裝置390可位于存儲(chǔ)裝置332B中。根據(jù)圖2,主VM 316和次VM 366兩者都被配置為類似/相同的虛擬機(jī),在這里被稱為鏡像虛擬機(jī)。本領(lǐng)域的技術(shù)人員將理解,圖1-3中繪出的硬件組件和基本配置可以變化。DPS內(nèi)的說明性的組件不意欲為窮舉性的,而是代表性的,用來強(qiáng)調(diào)實(shí)現(xiàn)本發(fā)明的關(guān)鍵組件。例如,可使用其它裝置/組件補(bǔ)充或取代繪出的硬件。繪出的示例不意味著暗示與當(dāng)前描述的實(shí)施例和/或一般發(fā)明相關(guān)的架構(gòu)限制或其它限制。圖1-3中繪出的數(shù)據(jù)處理系統(tǒng)可為例如IBM eServer pSeries系統(tǒng),其為紐約州阿芒克的IBM公司的產(chǎn)品,其運(yùn)行AIX操作系統(tǒng)或LINUX操作系統(tǒng)。圖4圖示了根據(jù)一個(gè)實(shí)施例的流程圖,其示出了通過捕捉并存儲(chǔ)狀態(tài)信息來實(shí)現(xiàn)數(shù)據(jù)一致性的計(jì)算機(jī)實(shí)現(xiàn)的方法。具體地,圖4圖示了用于在第一機(jī)器上捕捉狀態(tài)信息的方法,該狀態(tài)信息可被用于配置具有主和次虛擬機(jī)的鏡像虛擬環(huán)境內(nèi)的第二機(jī)器。如上所述,主和次虛擬機(jī)可位于分離的物理裝置上,或者,它們可位于單個(gè)裝置上,并且,參照在圖2和3的架構(gòu)內(nèi)呈現(xiàn)的組件??赏ㄟ^運(yùn)行檢查點(diǎn)模塊238/338的主VM 216/316的CPU 228/328、或者可選地通過運(yùn)行檢查點(diǎn)模塊238/338 (作為管理程序212/312和/或0S234/334的代碼片段)的服務(wù)處理器214/314,來完成該方法內(nèi)的一個(gè)或多個(gè)處理。為確保覆蓋這些可選實(shí)施例,將從檢查點(diǎn)模塊238/338和DW模塊240/340、以及檢查點(diǎn)模塊238/338和DW模塊240/340所完成的功能處理的角度來描述該方法,而不限制本發(fā)明的范圍。該方法在框405開始,其中,主虛擬機(jī)開始運(yùn)行計(jì)算機(jī)代碼,如用于應(yīng)用的可運(yùn)行代碼。為了簡(jiǎn)化起見,下面的描述假定在建立和配置鏡像虛擬機(jī)之后發(fā)生計(jì)算機(jī)代碼的運(yùn)行。在框410,計(jì)算機(jī)代碼的運(yùn)行在主VM上繼續(xù),直到遇到代碼運(yùn)行的中斷為止。在判定框415,檢查點(diǎn)模塊確定是否已遇到檢查點(diǎn)。在此情形下,檢查點(diǎn)可為在指令代碼內(nèi)被預(yù)編程為在代碼運(yùn)行的特定點(diǎn)處發(fā)生的檢查點(diǎn)。在一個(gè)或多個(gè)可選實(shí)施例中,可通過檢查點(diǎn)模塊來觸發(fā)檢查點(diǎn),以使管理程序在特定時(shí)刻(基于某個(gè)預(yù)設(shè)的周期)暫停主虛擬機(jī)內(nèi)的處理器運(yùn)行。與遇到檢查點(diǎn)不同,檢查點(diǎn)模塊可由此被認(rèn)為生成檢查點(diǎn)。在一個(gè)或多個(gè)實(shí)施例中,當(dāng)在共享存儲(chǔ)裝置中存儲(chǔ)的數(shù)據(jù)超過了閾值數(shù)據(jù)量時(shí)生成檢查點(diǎn)。在框415,如果遇到檢查點(diǎn),則該方法在框420中繼續(xù),并且,檢查點(diǎn)模塊使管理程序中止主虛擬機(jī)中的計(jì)算機(jī)代碼的運(yùn)行。隨后,在框425,檢查點(diǎn)模塊捕捉當(dāng)前狀態(tài)信息。在一個(gè)或多個(gè)實(shí)施例中,檢查點(diǎn)模塊捕捉與主虛擬機(jī)剛好在第一檢查點(diǎn)之前執(zhí)行的工作相對(duì)應(yīng)的當(dāng)前狀態(tài)信息。在框430,檢查點(diǎn)模塊將狀態(tài)信息傳送到管理程序,并且,管理程序使用該狀態(tài)信息配置鏡像次虛擬機(jī)。如上所述,狀態(tài)信息可包括這樣的數(shù)據(jù),如在主虛擬機(jī)中出現(xiàn)檢查點(diǎn)的計(jì)算機(jī)代碼的運(yùn)行點(diǎn)上的處理器狀態(tài)、存儲(chǔ)頁的狀態(tài)、存儲(chǔ)裝置的狀態(tài)、外圍硬件的狀態(tài)、或與任意主硬件的狀態(tài)有關(guān)的任意其它數(shù)據(jù)。響應(yīng)于在框435接收到次VM已被配置的確認(rèn),該方法在框440中繼續(xù),并且,檢查點(diǎn)模塊使管理程序恢復(fù)主虛擬機(jī)中的計(jì)算機(jī)代碼的運(yùn)行?;氐脚卸?15,如果遇到的中斷不是檢查點(diǎn),則該方法在判定框445中繼續(xù)。在框445中遇到寫入請(qǐng)求的情形中,則該方法在框450中繼續(xù)。當(dāng)在執(zhí)行計(jì)算機(jī)代碼期間遇到寫入請(qǐng)求時(shí),DW模塊識(shí)別共享存儲(chǔ)裝置中計(jì)算機(jī)代碼請(qǐng)求寫入的存儲(chǔ)位置。在框455,Dff模塊將主VM將覆寫在共享存儲(chǔ)裝置的存儲(chǔ)位置中當(dāng)前存儲(chǔ)的數(shù)據(jù)的通知發(fā)送到次W、或次VM的管理程序。在一個(gè)或多個(gè)實(shí)施例中,覆寫通知包括主VM將覆寫數(shù)據(jù)的共享存儲(chǔ)裝置中的存儲(chǔ)位置。在一個(gè)或多個(gè)實(shí)施例中,在該方法繼續(xù)之前,在框460,DW模塊等待從次VM或管理程序接收確認(rèn),其指示該存儲(chǔ)位置中的現(xiàn)有數(shù)據(jù)已被復(fù)制。在框465,DW模塊允許計(jì)算機(jī)代碼覆寫該存儲(chǔ)位置中的現(xiàn)有數(shù)據(jù)。該方法在框440中繼續(xù),并且,恢復(fù)代碼運(yùn)行,直到在框445中,計(jì)算機(jī)代碼在運(yùn)行期間遇到另一寫入請(qǐng)求為止。返回到判定框415,在運(yùn)行被中斷、且該中斷不是檢查點(diǎn)或?qū)懭胝?qǐng)求的情形中,則已遇到了運(yùn)行故障,如由框470所示。該方法在框475繼續(xù),其中,主虛擬機(jī)中的運(yùn)行故障使主虛擬機(jī)觸發(fā)故障切換到次虛擬機(jī)。根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,故障切換觸發(fā)可為以下形式:從主虛擬機(jī)到RR模塊傳遞的消息、或由RR模塊接收的指示在主虛擬機(jī)中已遇到了運(yùn)行故障的任何指示。在框480,為管理員記載運(yùn)行故障。圖5示出了根據(jù)一個(gè)實(shí)施例的流程圖,其示出在與鏡像虛擬環(huán)境中的第一虛擬機(jī)相關(guān)的次虛擬機(jī)中實(shí)現(xiàn)共享存儲(chǔ)裝置的一致視圖的處理。從次虛擬機(jī)、以及尤其是次虛擬機(jī)內(nèi)的組件的角度,描述該方法的方面??捎烧谶\(yùn)行RR模塊288/388的次VM 266/366的CPU278/378,或者可選地,可由運(yùn)行作為管理程序262/312內(nèi)和/或OS 284/384內(nèi)的模塊的RR模塊288/388的服務(wù)處理器264/314,完成該方法內(nèi)的一個(gè)或多個(gè)處理。為確保覆蓋這些可選實(shí)施例,將從RR模塊288/388、以及RR模塊288/388所完成的功能處理的角度來描述該方法,而不限制本發(fā)明的范圍。該方法在框505開始,其中,RR模塊經(jīng)由管理程序從主虛擬機(jī)接收消息或通知。在框510,確定所接收的通知是否為檢查點(diǎn)通知。在所接收的通知是檢查點(diǎn)通知的情形中,該方法在框515繼續(xù),并且,RR模塊從主虛擬機(jī)獲得操作狀態(tài)信息。在一個(gè)或多個(gè)實(shí)施例中,該操作狀態(tài)信息包括CPU狀態(tài)、以及存儲(chǔ)器和存儲(chǔ)裝置的當(dāng)前狀態(tài)。在框520,RR模塊使用該狀態(tài)信息配置次虛擬機(jī)。通過配置次虛擬機(jī),次虛擬機(jī)的操作狀態(tài)(包括CPU、存儲(chǔ)器和存儲(chǔ)裝置的狀態(tài))同于在處理最近的檢查點(diǎn)時(shí)主虛擬機(jī)的操作狀態(tài)。該方法在框525繼續(xù),并且,RR模塊從在次虛擬機(jī)的本地存儲(chǔ)裝置中的RR數(shù)據(jù)存儲(chǔ)裝置中移除任何現(xiàn)有數(shù)據(jù)。本領(lǐng)域的技術(shù)人員將理解,當(dāng)次虛擬機(jī)被配置為匹配第一虛擬機(jī)在最近檢查點(diǎn)的操作狀態(tài)時(shí),不再需要跟蹤存儲(chǔ)在共享存儲(chǔ)裝置中的數(shù)據(jù)在檢查點(diǎn)之間的任何改變。該方法在框505繼續(xù),直到從主虛擬機(jī)接收到另一個(gè)消息為止。返回到判定框510,如果所接收的通知不是檢查點(diǎn)消息,則該方法在判定框530繼續(xù),并且,確定該消息是否為覆寫通知。在所接收的消息為覆寫通知的情況下,該方法在框535繼續(xù),并且,RR模塊復(fù)制來自通過覆寫通知識(shí)別的存儲(chǔ)位置的預(yù)先存在的數(shù)據(jù)。在框540,復(fù)制的現(xiàn)有數(shù)據(jù)被存儲(chǔ)在次虛擬機(jī)的本地存儲(chǔ)裝置中,諸如RR數(shù)據(jù)存儲(chǔ)裝置。當(dāng)完成了現(xiàn)有數(shù)據(jù)的本地存儲(chǔ)時(shí),該方法在框545繼續(xù),并且,RR模塊將確認(rèn)發(fā)送到主虛擬機(jī),該確認(rèn)指示已成功存儲(chǔ)了預(yù)先存在的數(shù)據(jù)。該方法在框505繼續(xù),直到從主虛擬機(jī)接收到另一消息為止。返回到判定框510,如果所接收的通知不是檢查點(diǎn)通知、且在判定框530中該消息不是覆寫通知,則該方法在框550繼續(xù),并且,確定從主虛擬機(jī)接收到故障消息。在框555,RR模塊獲得從最后的檢查點(diǎn)起已被存儲(chǔ)在本地存儲(chǔ)裝置中的預(yù)先存在的數(shù)據(jù)。本領(lǐng)域的技術(shù)人員將理解,在共享存儲(chǔ)裝置中本地存儲(chǔ)的預(yù)先存在的數(shù)據(jù)包括從處理了最后的檢查點(diǎn)起已由主虛擬機(jī)覆寫的數(shù)據(jù)。在框560,RR模塊用本地存儲(chǔ)的預(yù)先存在的數(shù)據(jù)覆寫共享存儲(chǔ)裝置中的當(dāng)前數(shù)據(jù)。在本發(fā)明的一個(gè)或多個(gè)實(shí)施例中,RR模塊使用RR映射來識(shí)別從其復(fù)制預(yù)先存在的數(shù)據(jù)的位置。在565,次虛擬機(jī)開始從先前檢查點(diǎn)的代碼位置運(yùn)行應(yīng)用。換句話說,第二機(jī)器接管并恢復(fù)從最后的檢查點(diǎn)起的、先前由主虛擬機(jī)執(zhí)行的工作。在上述流程圖的每個(gè)中,可以在包含計(jì)算機(jī)可讀代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中實(shí)施上述一個(gè)或多個(gè)方法,使得在由計(jì)算裝置上的處理器運(yùn)行計(jì)算機(jī)可讀代碼時(shí),執(zhí)行一系列操作。在一些實(shí)現(xiàn)中,合并、同時(shí)、或以不同次序執(zhí)行或可能省略所述方法的特定操作,不會(huì)背離本發(fā)明的精神和范圍。由此,盡管以特定順序描述和說明了所述方法,但是用操作的特定順序不意味著暗示對(duì)本發(fā)明的任何限制。可針對(duì)操作順序來作出改變,而不會(huì)背離本發(fā)明的精神或范圍。因此,使用特定順序不被理解為限制含義,并且,僅由所附權(quán)利要求定義本發(fā)明的范圍。圖6示出了根據(jù)一個(gè)或多個(gè)實(shí)施例的示例流程圖。具體地,圖6示出了主虛擬機(jī)602和次虛擬機(jī)604、以及共享存儲(chǔ)裝置606A-606D、RR映射608A-608C沿著順序縱向時(shí)間線的不同時(shí)刻的運(yùn)行狀態(tài)。本領(lǐng)域的技術(shù)人員將理解,圖6被提供僅用于示例性的目的,且不意欲限制所述實(shí)施例的范圍。流程圖在610開始,其中,在主虛擬機(jī)602處/中,啟動(dòng)計(jì)算機(jī)程序的計(jì)算機(jī)代碼的處理器運(yùn)行。為了此示例的目的,示出了在啟動(dòng)計(jì)算機(jī)代碼的運(yùn)行時(shí)的共享存儲(chǔ)裝置606A,其包括位于兩個(gè)數(shù)據(jù)塊中的數(shù)據(jù):塊A中的數(shù)據(jù)A、以及塊B中的數(shù)據(jù)B。主虛擬機(jī)602在612繼續(xù)運(yùn)行計(jì)算機(jī)程序,直到在614遇到寫入數(shù)據(jù)的請(qǐng)求為止,從而識(shí)別主虛擬機(jī)602將覆寫塊A中的數(shù)據(jù)。隨后,覆寫通知被發(fā)送到次VM 604,該覆寫通知指示主虛擬機(jī)602將覆寫塊A中的現(xiàn)有數(shù)據(jù)(例如,數(shù)據(jù)A)。在616,次VM 604復(fù)制并存儲(chǔ)塊A中的當(dāng)前數(shù)據(jù),并將該數(shù)據(jù)和存儲(chǔ)位置(例如,塊A)存儲(chǔ)在RR映射608A中。由此,在608A,RR映射包括塊A和數(shù)據(jù)A之間的連接。隨后,確認(rèn)被發(fā)送到主VM 602,并且,在618,主VM 602能夠用數(shù)據(jù)C來覆寫塊A中的數(shù)據(jù)A,如由存儲(chǔ)裝置606B所示。主VM 602繼續(xù)運(yùn)行應(yīng)用。在622,也被表示為POE (運(yùn)行點(diǎn))1,主VM 602中止應(yīng)用的運(yùn)行,因?yàn)橐延龅搅藱z查點(diǎn)。在624,主VM 602捕捉第一操作狀態(tài)以及狀態(tài)信息,并將狀態(tài)信息發(fā)送到次VM 604。在626,次VM 604被配置為匹配在624捕捉的第一操作狀態(tài)。另外,刪除在RR映射中存儲(chǔ)的任何數(shù)據(jù),諸如數(shù)據(jù)A-塊A映射,如由RR映射608B所示。在RR映射中存儲(chǔ)的數(shù)據(jù)被清空,這是因?yàn)?,在次VM 604被配置之后,次VM 604具有共享存儲(chǔ)裝置的一致視圖。換句話說,在次VM 604已被配置之后,主VM 602和次VM 604各自具有如由存儲(chǔ)裝置606B所示的共享存儲(chǔ)裝置的視圖。在次VM 604被配置為檢查點(diǎn)操作狀態(tài)之后,在628,可在主VM 602上恢復(fù)應(yīng)用的運(yùn)行。恢復(fù)應(yīng)用的運(yùn)行,直到在630遇到寫入請(qǐng)求為止。該請(qǐng)求指示主VM 602將覆寫位于塊B中的數(shù)據(jù)。覆寫通知被發(fā)送到次VM 604,并且,次VM 604讀取塊B中的現(xiàn)有數(shù)據(jù)(數(shù)據(jù)B),并在RR映射中與塊B相關(guān)聯(lián)地存儲(chǔ)數(shù)據(jù)B,如由RR映射608C所示出的。隨后,確認(rèn)被發(fā)送到主VM 602,并且,在634,主VM 602能夠用數(shù)據(jù)D來覆寫塊B中的數(shù)據(jù)B,如由存儲(chǔ)裝置606C所示。在636,主VM602繼續(xù)運(yùn)行應(yīng)用。主VM 602上的應(yīng)用的運(yùn)行在636繼續(xù),直到在638遇到運(yùn)行故障為止。638的運(yùn)行故障使次VM 604在640接收到故障消息。在624,次VM 604使用RR映射來覆寫共享存儲(chǔ)裝置,以利用預(yù)先存在的數(shù)據(jù)來覆寫新寫入的數(shù)據(jù),使得共享存儲(chǔ)裝置呈現(xiàn)為其在主VM602遇到的最后的檢查點(diǎn)(例如,POEl)處那樣。由此,用數(shù)據(jù)B來覆寫塊B,如在RR映射608C中所識(shí)別的。這導(dǎo)致其中存儲(chǔ)了包括數(shù)據(jù)C的塊A、以及包括數(shù)據(jù)B的塊B,如由存儲(chǔ)裝置606D所示。重要的是注意,利用來自RR映射的數(shù)據(jù)覆寫新數(shù)據(jù)導(dǎo)致存儲(chǔ)裝置606D同于在遇到最后的檢查點(diǎn)的時(shí)刻的共享存儲(chǔ)裝置、或存儲(chǔ)裝置606B。隨后,在644,次VM 604可從出現(xiàn)最后的檢查點(diǎn)的POEl恢復(fù)運(yùn)行應(yīng)用。如本領(lǐng)域的技術(shù)人員將理解的,本發(fā)明的方面可被實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因而,本發(fā)明的方面可采用全部為硬件的實(shí)施方式,全部為軟件的實(shí)施方式(包括固件、駐留軟件、微碼、等等)、或軟件和硬件方面相結(jié)合的實(shí)施方式的形式,這里可能全部統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,本發(fā)明的方面可采用在其上實(shí)現(xiàn)計(jì)算機(jī)可讀程序代碼(或指令)的一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中實(shí)現(xiàn)的計(jì)算機(jī)程序產(chǎn)品的形式??梢允褂靡粋€(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任何組合。計(jì)算機(jī)可讀介質(zhì)可為計(jì)算機(jī)可讀信號(hào)介質(zhì)或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。例如,計(jì)算機(jī)可讀介質(zhì)可以是但不限于電子、磁、光、電磁、紅外或半導(dǎo)體系統(tǒng)、裝置、設(shè)備或前述的任意適當(dāng)組合。計(jì)算機(jī)可讀介質(zhì)的更具體示例(非詳盡的列表)將包括如下:便攜式計(jì)算機(jī)磁盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM),可擦除可編程只讀存儲(chǔ)器(EPROM或閃存)、便攜式光盤只讀存儲(chǔ)器(⑶ROM)、光存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備或前述的任意適當(dāng)組合。在此文檔的上下文中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可為任何有形介質(zhì),其可包含或存儲(chǔ)程序,用于或與指令運(yùn)行系統(tǒng)設(shè)備或裝置結(jié)合。計(jì)算機(jī)可讀信號(hào)介質(zhì)可包括傳播其中實(shí)現(xiàn)計(jì)算機(jī)可讀程序代碼的數(shù)據(jù)信號(hào),例如,在基帶中或作為載波的一部分。這樣的傳播信號(hào)可采用各種形式中的任一種,包括但不限于電磁、光或其任意適當(dāng)組合。計(jì)算機(jī)可讀信號(hào)介質(zhì)可為不是計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)且可通信、傳播或傳輸用于或與指令運(yùn)行系統(tǒng)設(shè)備或裝置結(jié)合的程序的任意計(jì)算機(jī)可讀介質(zhì)。可使用包括但不限于無線、有線、光纖、R.F (或前述的任意適當(dāng)組合)等的任意適當(dāng)介質(zhì)來傳送在計(jì)算機(jī)可讀介質(zhì)上實(shí)現(xiàn)的程序代碼??梢砸砸粋€(gè)或多個(gè)編程語言的任何組合來編寫用于執(zhí)行本發(fā)明的方面的操作的計(jì)算機(jī)程序代碼,其中,所述編程語言包括諸如Java、Smalltalk、C++等的面向?qū)ο蟮木幊陶Z言、以及諸如“C”編程語言或類似編程語言的傳統(tǒng)過程編程語言。程序代碼可以完全在用戶的計(jì)算機(jī)上、或部分地在用戶的計(jì)算機(jī)上執(zhí)行,作為獨(dú)立軟件包,部分地在用戶的計(jì)算機(jī)上和部分地在遠(yuǎn)程計(jì)算機(jī)上或完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后一情形中,遠(yuǎn)程計(jì)算機(jī)可通過任意類型的網(wǎng)絡(luò)連接到用戶的計(jì)算機(jī),所述網(wǎng)絡(luò)包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN),或者,可使連接朝向外部計(jì)算機(jī)(例如,使用因特網(wǎng)服務(wù)提供商,通過因特網(wǎng)。重要的是,盡管在安裝(或運(yùn)行)軟件的全功能計(jì)算機(jī)(服務(wù)器)系統(tǒng)的上下文描述的本發(fā)明的說明性實(shí)施例,但本領(lǐng)域的技術(shù)人員將理解,本發(fā)明的說明性實(shí)施例的軟件方面,能夠以各種形式被分發(fā)為計(jì)算機(jī)程序產(chǎn)品,并且,無論用來實(shí)際執(zhí)行分發(fā)的媒體的特定類型,本發(fā)明的說明性實(shí)施例同樣地適用。盡管已參照示例性實(shí)施例描述了本發(fā)明,但本領(lǐng)域的技術(shù)人員將理解,可作出各種改變,并且,等同物可取代其元素,而不會(huì)背離本發(fā)明的范圍。另外,可使很多修改將特定系統(tǒng)、裝置或其組件適應(yīng)于本發(fā)明的教導(dǎo),而不會(huì)背離其實(shí)質(zhì)范圍。因此,意圖使本發(fā)明不限于用于執(zhí)行本發(fā)明的公開的特定實(shí)施例,而本發(fā)明將包括落入所附權(quán)利要求的范圍內(nèi)的全部實(shí)施例。此外,術(shù)語第一、第二等的使用不表示任何次序或重要性,而術(shù)語第一、第二被用來將元素進(jìn)行區(qū)分。
權(quán)利要求
1.一種用于實(shí)現(xiàn)可由第一機(jī)器和第二機(jī)器訪問的共享存儲(chǔ)裝置中的數(shù)據(jù)一致性的方法,該方法包括: 接收所述第一機(jī)器將覆寫在所述共享存儲(chǔ)裝置中存儲(chǔ)的現(xiàn)有數(shù)據(jù)的通知,其中,在所述第一機(jī)器上的第一檢查點(diǎn)之后接收到所述通知,并且,其中,所述第一機(jī)器和所述第二機(jī)器被配置為執(zhí)行修改所述共享存儲(chǔ)裝置中的數(shù)據(jù)的工作;以及 響應(yīng)于接收到所述第一機(jī)器將覆寫在所述共享存儲(chǔ)裝置中存儲(chǔ)的現(xiàn)有數(shù)據(jù)的通知:將所述現(xiàn)有數(shù)據(jù)的復(fù)本存儲(chǔ)在所述第二機(jī)器的本地存儲(chǔ)裝置中;以及向所述第一機(jī)器發(fā)送所述現(xiàn)有數(shù)據(jù)的復(fù)本已被成功存儲(chǔ)在所述本地存儲(chǔ)裝置中的確認(rèn),以觸發(fā)所述第一機(jī)器利用新數(shù)據(jù)來繼續(xù)覆寫所述共享存儲(chǔ)裝置中的現(xiàn)有數(shù)據(jù); 響應(yīng)于檢測(cè)到在下一個(gè)檢查點(diǎn)之前所述第一機(jī)器中已出現(xiàn)故障: 從所述第二機(jī)器的本地存儲(chǔ)裝置檢索所述現(xiàn)有數(shù)據(jù)的復(fù)本; 用從所述第二機(jī)器的本地存儲(chǔ)裝置檢索到的現(xiàn)有數(shù)據(jù)的復(fù)本來覆寫所述共享存儲(chǔ)裝置中的新數(shù)據(jù);以及 通過管理程序觸發(fā)所述第二機(jī)器的處理器接管并恢復(fù)先前由所述第一機(jī)器在所述第一檢查點(diǎn)執(zhí)行的工作。
2.如權(quán)利要求1所述的方法,還包括:響應(yīng)于接收到所述第一機(jī)器上的第二檢查點(diǎn)的第二通知: 接收與所述第一機(jī)器的第二檢查點(diǎn)操作狀態(tài)相對(duì)應(yīng)的第二狀態(tài)信息; 將所述第二機(jī)器配置為所述第一機(jī)器的第二檢查點(diǎn)操作狀態(tài)的鏡像操作狀態(tài);以及 從所述第二機(jī)器的本地存儲(chǔ)裝置刪除所述現(xiàn)有數(shù)據(jù)的復(fù)本。
3.如權(quán)利要求1所述的方法,其中: 所述第一機(jī)器和所述第二機(jī)器是第一虛擬機(jī)和第二虛擬機(jī),其各自分別被所述管理程序配置和維護(hù), 其中,所述第一虛擬機(jī)包括第一處理器和第一存儲(chǔ)器的第一提供,并且,所述第二虛擬機(jī)包括第二處理器和第二存儲(chǔ)器的第二提供, 其中,所述第一虛擬機(jī)和所述第二虛擬機(jī)被配置為分別執(zhí)行工作的基本相同的運(yùn)行;所述第一虛擬機(jī)和所述第二虛擬機(jī)是鏡像虛擬化架構(gòu)中的鏡像虛擬機(jī),由此,所述第二虛擬機(jī)在所述第一虛擬機(jī)發(fā)生故障的情況下用作所述第一虛擬機(jī)的后備機(jī);以及所述方法還包括: 接收指示所述第一機(jī)器的第一檢查點(diǎn)操作狀態(tài)的第一狀態(tài)信息,其中,所述第一機(jī)器的處理器正在執(zhí)行剛好在所述第一檢查點(diǎn)之前的工作; 響應(yīng)于接收到所述第一狀態(tài)信息,通過管理程序?qū)⑺龅诙C(jī)器配置為與所述第一機(jī)器的第一檢查點(diǎn)操作狀態(tài)相對(duì)應(yīng)的鏡像操作狀態(tài)。
4.如權(quán)利要求3所述的方法,其中,所述第一虛擬機(jī)和所述第二虛擬機(jī)共同位于同一物理主機(jī)裝置上,并被同一管理程序配置和維護(hù)。
5.如權(quán)利要求1所述的方法,其中,將所述現(xiàn)有數(shù)據(jù)的復(fù)本存儲(chǔ)在所述第二機(jī)器的本地存儲(chǔ)裝置中包括: 讀取要被覆寫的現(xiàn)有數(shù)據(jù)的完整數(shù)據(jù)塊,其中,所述完整數(shù)據(jù)塊是可寫存儲(chǔ)裝置的最小完整塊;以及存儲(chǔ)所述要被覆寫的現(xiàn)有數(shù)據(jù)的完整數(shù)據(jù)塊。
6.如權(quán)利要求1所述的方法,其中,當(dāng)所述現(xiàn)有數(shù)據(jù)的大小大于閾值數(shù)據(jù)量時(shí),觸發(fā)下一個(gè)檢查點(diǎn)。
7.如權(quán)利要求5所述的方法,其中,所述完整數(shù)據(jù)塊等同于數(shù)據(jù)的存儲(chǔ)頁。
8.如權(quán)利要求1所述的方法,其中,用從所述第二機(jī)器的本地存儲(chǔ)裝置檢索到的現(xiàn)有數(shù)據(jù)的復(fù)本覆寫所述共享存儲(chǔ)裝置中的新數(shù)據(jù),使所述共享存儲(chǔ)裝置通過所述第二機(jī)器的視圖等同于在所述新數(shù)據(jù)的覆寫之前的第一檢查點(diǎn)處所述共享存儲(chǔ)裝置通過所述第一機(jī)器的視圖。
9.一種用于實(shí)現(xiàn)可由第一機(jī)器和第二機(jī)器訪問的共享存儲(chǔ)裝置中的數(shù)據(jù)一致性的系統(tǒng),該系統(tǒng)包括: 計(jì)算機(jī)處理器;以及 回滾讀取模塊,其在由所述計(jì)算機(jī)處理器運(yùn)行時(shí)使所述計(jì)算機(jī)處理器: 接收所述第一機(jī)器將覆寫在所述共享存儲(chǔ)裝置中存儲(chǔ)的現(xiàn)有數(shù)據(jù)的通知,其中,在所述第一機(jī)器上的第一檢查點(diǎn)之后接收到所述通知,并且,其中,所述第一機(jī)器和所述第二機(jī)器被配置為執(zhí)行修改所述共享存儲(chǔ)裝置中的數(shù)據(jù)的工作;以及 響應(yīng)于接收到所述第一機(jī)器將覆寫在所述共享存儲(chǔ)裝置中存儲(chǔ)的現(xiàn)有數(shù)據(jù)的通知: 將所述現(xiàn)有數(shù)據(jù)的復(fù)本存儲(chǔ)在所述第二機(jī)器的本地存儲(chǔ)裝置 中;以及 向所述第一機(jī)器發(fā)送所述 現(xiàn)有數(shù)據(jù)的復(fù)本已被成功存儲(chǔ)在所述本地存儲(chǔ)裝置中的確認(rèn),以觸發(fā)所述第一機(jī)器利用新數(shù)據(jù)來繼續(xù)覆寫所述共享存儲(chǔ)裝置中的現(xiàn)有數(shù)據(jù); 響應(yīng)于檢測(cè)到在下一個(gè)檢查點(diǎn)之前所述第一機(jī)器中已出現(xiàn)故障: 從所述第二機(jī)器的本地存儲(chǔ)裝置檢索所述現(xiàn)有數(shù)據(jù)的復(fù)本; 用從所述第二機(jī)器的本地存儲(chǔ)裝置檢索到的現(xiàn)有數(shù)據(jù)的復(fù)本來覆寫所述共享存儲(chǔ)裝置中的新數(shù)據(jù);以及 通過管理程序觸發(fā)所述第二機(jī)器的處理器接管并恢復(fù)先前由所述第一機(jī)器在所述第一檢查點(diǎn)執(zhí)行的工作。
10.如權(quán)利要求9所述的系統(tǒng),所述回滾讀取模塊還使所述計(jì)算機(jī)處理器響應(yīng)于接收到所述第一機(jī)器上的第二檢查點(diǎn)的第二通知: 接收與所述第一機(jī)器的第二檢查點(diǎn)操作狀態(tài)相對(duì)應(yīng)的第二狀態(tài)信息; 將所述第二機(jī)器配置為所述第一機(jī)器的第二檢查點(diǎn)操作狀態(tài)的鏡像操作狀態(tài);以及 從所述第二機(jī)器的本地存儲(chǔ)裝置刪除所述現(xiàn)有數(shù)據(jù)的復(fù)本。
11.如權(quán)利要求9所述的系統(tǒng),其中, 所述第一機(jī)器和所述第二機(jī)器是第一虛擬機(jī)和第二虛擬機(jī),其各自分別被管理程序配置和維護(hù), 其中,所述第一虛擬機(jī)包括第一處理器和第一存儲(chǔ)器的第一提供,并且,所述第二虛擬機(jī)包括第二處理器和第二存儲(chǔ)器的第二提供, 其中,所述第一虛擬機(jī)和所述第二虛擬機(jī)被配置為分別執(zhí)行工作的基本相同的運(yùn)行;所述第一虛擬機(jī)和所述第二虛擬機(jī)是鏡像虛擬化架構(gòu)中的鏡像虛擬機(jī),由此,所述第二虛擬機(jī)在所述第一虛擬機(jī)發(fā)生故障的情況下用作所述第一虛擬機(jī)的后備機(jī);以及所述回滾讀取模塊還使所述處理器: 接收指示所述第一機(jī)器的第一檢查點(diǎn)操作狀態(tài)的第一狀態(tài)信息,其中,所述第一機(jī)器的處理器正在執(zhí)行剛好在所述第一檢查點(diǎn)之前的工作; 響應(yīng)于接收到所述第一狀態(tài)信息,通過管理程序?qū)⑺龅诙C(jī)器配置為與所述第一機(jī)器的第一檢查點(diǎn)操作狀態(tài)相對(duì)應(yīng)的鏡像操作狀態(tài)。
12.如權(quán)利要求11所述的系統(tǒng),其中,所述第一虛擬機(jī)和所述第二虛擬機(jī)共同位于同一物理主機(jī)裝置上,并被同一管理程序配置和維護(hù)。
13.如權(quán)利要求9所述的系統(tǒng),其中,將所述現(xiàn)有數(shù)據(jù)的復(fù)本存儲(chǔ)在所述第二機(jī)器的本地存儲(chǔ)裝置中包括: 讀取要被覆寫的現(xiàn)有數(shù)據(jù)的完整數(shù)據(jù)塊,其中,所述完整數(shù)據(jù)塊是可寫存儲(chǔ)裝置的最小完整塊;以及 存儲(chǔ)所述要被覆寫的現(xiàn)有數(shù)據(jù)的完整數(shù)據(jù)塊。
14.如權(quán)利要求9所述的系統(tǒng),其中,當(dāng)所述現(xiàn)有數(shù)據(jù)的大小大于閾值數(shù)據(jù)量時(shí),觸發(fā)下一個(gè)檢查點(diǎn)。
15.如權(quán)利要求13所述的系統(tǒng),其中,所述完整數(shù)據(jù)塊等同于數(shù)據(jù)的存儲(chǔ)頁。
16.如權(quán)利要求9所述的系統(tǒng),其中,用從所述第二機(jī)器的本地存儲(chǔ)裝置檢索到的現(xiàn)有數(shù)據(jù)的復(fù)本覆寫所述共享存儲(chǔ)裝置中的新數(shù)據(jù),使所述共享存儲(chǔ)裝置通過所述第二機(jī)器的視圖等同于在所述新 數(shù)據(jù)的覆寫之前的第一檢查點(diǎn)處所述共享存儲(chǔ)裝置通過所述第一機(jī)器的視圖。
全文摘要
本發(fā)明提供了用于實(shí)現(xiàn)可由第一和第二機(jī)器訪問的存儲(chǔ)裝置中的數(shù)據(jù)一致性的方法和系統(tǒng)。該方法包括響應(yīng)于接收到第一機(jī)器的第一狀態(tài)信息,將第二機(jī)器配置為與第一機(jī)器的第一檢查點(diǎn)操作狀態(tài)相對(duì)應(yīng)的鏡像操作狀態(tài);接收第一機(jī)器將覆寫在共享存儲(chǔ)裝置中存儲(chǔ)的一個(gè)或多個(gè)現(xiàn)有數(shù)據(jù)的通知,并且,響應(yīng)于接收到該通知,讀取現(xiàn)有數(shù)據(jù);將現(xiàn)有數(shù)據(jù)的復(fù)本存儲(chǔ)在第二機(jī)器的本地存儲(chǔ)裝置;以及向第一機(jī)器發(fā)送現(xiàn)有數(shù)據(jù)已被成功地存儲(chǔ)在本地存儲(chǔ)裝置中的確認(rèn),以使第一機(jī)器能夠用新寫入的數(shù)據(jù)來覆寫現(xiàn)有數(shù)據(jù)。該方法還包括響應(yīng)于接收到故障通知,從第二機(jī)器的本地存儲(chǔ)裝置檢索現(xiàn)有數(shù)據(jù)的復(fù)本;用現(xiàn)有數(shù)據(jù)的復(fù)本來覆寫在共享存儲(chǔ)裝置中新寫入的數(shù)據(jù)。
文檔編號(hào)G06F9/455GK103164254SQ20121034452
公開日2013年6月19日 申請(qǐng)日期2012年9月17日 優(yōu)先權(quán)日2011年9月21日
發(fā)明者A.J.麥克尼內(nèi), D.J.O.里格比 申請(qǐng)人:國際商業(yè)機(jī)器公司