專利名稱:一種虛擬機容錯方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明與虛擬機相關(guān),或者特指通過步調(diào)一致計算實現(xiàn)虛擬機容錯的方法和系統(tǒng)。
背景技術(shù):
步調(diào)一致計算系統(tǒng)是指在多個處理器或計算機上通過并行或者順序執(zhí)行同一操作的計算機系統(tǒng)。每個處理器或計算機接收并執(zhí)行操作,操作包括可執(zhí)行代碼、總線操作、 異步事件等,通過輸入產(chǎn)生相同的輸出,輸出包含端口輸出、寄存器值的改變和內(nèi)存值變化。因此,當一個處理器或計算機在運行一個程序、服務(wù)或者一系列指令發(fā)生錯誤時,其他機器或者處理器能夠繼續(xù)當前程序、服務(wù)或者指令的執(zhí)行。步調(diào)一致計算系統(tǒng)能夠提供容錯功能,但是步調(diào)一致計算系統(tǒng)比標準的計算機硬件系統(tǒng)要昂貴很多,當冗余的處理器和計算器增加時,步調(diào)一致計算系統(tǒng)的成本會更高。由于成本約束,步調(diào)一致計算系統(tǒng)通用性較差。
發(fā)明內(nèi)容
為了解決上述問題,本發(fā)明描述了一種容錯方法和系統(tǒng),它是利用虛擬機實現(xiàn)步調(diào)一致計算系統(tǒng)來實現(xiàn)容錯功能的。本發(fā)明的總體構(gòu)思是一個虛擬機與至少兩個其他虛擬機通信,建立一個虛擬的步調(diào)一致計算系統(tǒng),每個虛擬機運行在網(wǎng)絡(luò)中的一個節(jié)點計算機上。一個虛擬機與其他一個以上虛擬機通信決定成員關(guān)系配置文件,通常指定第一個虛擬機為活動虛擬機,其他虛擬機為備選虛擬機。當活動虛擬機執(zhí)行一個單步操作時,將產(chǎn)生一個操作令牌,該令牌包含該單步操作步驟的內(nèi)容?;顒犹摂M機根據(jù)成員關(guān)系配置文件將操作令牌分發(fā)到所有備選虛擬機。各個備選虛擬機依次接收并執(zhí)行操作令牌并發(fā)送到下一個備選虛擬機,保證所有虛擬機保持一致的狀態(tài)。一個或多個虛擬機發(fā)生故障時,未發(fā)生故障的虛擬機重新建立成員關(guān)系配置文件,恢復(fù)故障發(fā)生前的狀態(tài),繼續(xù)故障發(fā)生前的操作任務(wù),從而有效地實現(xiàn)了系統(tǒng)的容錯功能。本發(fā)明涉及一種虛擬機容錯方法,包括以下步驟
一個虛擬機與其他兩個以上虛擬機通信,建立虛擬步調(diào)一致計算系統(tǒng)的成員關(guān)系,成員包括數(shù)個虛擬機,每個虛擬機運行在聯(lián)網(wǎng)的節(jié)點計算機上。首先,一個虛擬機與其他虛擬機通信,決定虛擬步調(diào)一致計算系統(tǒng)的成員關(guān)系配置文件,在該成員關(guān)系配置文件中確定活動虛擬機和備選虛擬機。成員關(guān)系配置文件中用戶指定的第一位虛擬機、最先啟動的虛擬機或者計算能力最強的虛擬機為活動虛擬機。成員關(guān)系配置文件中除了活動虛擬機之外的虛擬機為備選虛擬機,活動虛擬機的下一個備選虛擬機為第一備選虛擬機,依次類推,最后一個備選虛擬機為最后備選虛擬機,最后備選虛擬機的下一個虛擬機為活動虛擬機。然后,虛擬步調(diào)一致計算系統(tǒng)中的每個成員虛擬機按照成員關(guān)系配置文件中的順序執(zhí)行每個單步操作。活動虛擬機執(zhí)行一個單步操作并根據(jù)該單步操作產(chǎn)生一個操作令牌,并發(fā)送操作令牌到成員關(guān)系配置文件中的第一備選虛擬機;其他備選虛擬機依次接收操作令牌并執(zhí)行操作令牌中包含的單步操作內(nèi)容;直到最后備選虛擬機執(zhí)行完單步操作后返回操作令牌到活動虛擬機,活動虛擬機根據(jù)下一個單步操作的內(nèi)容產(chǎn)生新的操作令牌。 其中,每個虛擬機均監(jiān)測其他虛擬機的工作狀態(tài)。當虛擬步調(diào)一致計算系統(tǒng)中如果有一個或多個虛擬機發(fā)生故障被其他虛擬機檢測到,檢測到故障的虛擬機與所有剩余的虛擬機通信重新建立虛擬步調(diào)一致計算系統(tǒng)的成員關(guān)系;重新執(zhí)行故障發(fā)生前的操作令牌并傳遞到新的成員關(guān)系配置文件中的下一個虛擬機。本發(fā)明還提供了一種虛擬機容錯系統(tǒng),包括 三個以上的運行在聯(lián)網(wǎng)的節(jié)點計算機上的虛擬機。一個成員關(guān)系邏輯組件,用于發(fā)現(xiàn)并維護參與步調(diào)一致計算的虛擬機的列表,確定成員關(guān)系配置文件。成員關(guān)系邏輯組件中的成員關(guān)系配置文件中用戶指定的第一位虛擬機、最先啟動的虛擬機或者計算能力最強的虛擬機為活動虛擬機。成員關(guān)系配置文件中除了活動虛擬機之外的虛擬機為備選虛擬機,活動虛擬機的下一個備選虛擬機為第一備選虛擬機,依次類推,最后一個備選虛擬機為最后備選虛擬機,最后備選虛擬機的下一個虛擬機為活動虛擬機。一個執(zhí)行邏輯組件,用于產(chǎn)生操作令牌,傳遞操作令牌到成員關(guān)系配置文件中的下一個虛擬機,并接收前一個虛擬機發(fā)送過來的操作令牌。一個容錯邏輯組件,根據(jù)定時器的配置決定虛擬機是否發(fā)生故障。執(zhí)行邏輯組件中的活動虛擬機執(zhí)行一個單步操作并根據(jù)該單步操作產(chǎn)生一個操作令牌,并發(fā)送操作令牌到成員關(guān)系配置文件中的第一備選虛擬機;其他備選虛擬機依次接收操作令牌并執(zhí)行操作令牌中包含的單步操作內(nèi)容;直到最后虛擬機執(zhí)行完單步操作后返回操作令牌到活動虛擬機,活動虛擬機根據(jù)下一個單步操作的內(nèi)容產(chǎn)生新的操作令牌。
圖1展示了一個實際的包含了多個計算設(shè)備的網(wǎng)絡(luò)架構(gòu),使其連接成為一個虛擬的步調(diào)一致計算系統(tǒng)。圖2展示了一個虛擬步調(diào)一致計算系統(tǒng)。圖3展示了一個計算設(shè)備的組成。圖4展示了一個實現(xiàn)虛擬機步調(diào)一致計算系統(tǒng)的執(zhí)行流程圖。圖5展示了另一個實現(xiàn)虛擬機步調(diào)一致計算系統(tǒng)的執(zhí)行流程圖。圖6展示了恢復(fù)失效的虛擬機的流程圖。圖7展示了一個計算機系統(tǒng)樣例。
具體實施例方式在下面的描述中,將公布本專利更多的技術(shù)細節(jié)。一部分技術(shù)細節(jié)將以算法以及計算機內(nèi)存數(shù)據(jù)操作的符號表達等方式來描述。這些算法是一個實現(xiàn)預(yù)期結(jié)果的完整過程。該過程包含了對物理量的物理操作。這些物理量以電磁信號的形式被保存、傳輸、組合、比較或者操作。為了描述的方便和通用性,這些物理量將被表述成位、值、元素、符號、字符、項和數(shù)字等。
在本發(fā)明的描述內(nèi)容中,“通信”、“執(zhí)行”、“傳遞”、“分發(fā)”、“產(chǎn)生”、“決定”等詞語
對應(yīng)為一個電子計算機系統(tǒng)內(nèi)部的動作和過程。對數(shù)據(jù)的操作和轉(zhuǎn)化表示對電子計算機內(nèi)部物理(電子)量的內(nèi)存、寄存器或磁盤等設(shè)備的存儲、轉(zhuǎn)移或顯示。在本發(fā)明也與執(zhí)行操作的系統(tǒng)有關(guān),這些系統(tǒng)可能是為了特定需要組裝而成,也可能是利用計算機程序?qū)νㄓ玫挠嬎銠C設(shè)備進行有選擇的激活或者重新配置。該計算機程序能夠存儲到計算機的可讀存儲設(shè)備上,比如軟盤,光盤,只讀存儲(ROMs),隨機存儲 (RAMs )等各種磁性或光存儲設(shè)備上,這些存儲設(shè)備能夠保存電子指令。本發(fā)明不局限于任何特定計算機硬件設(shè)備和系統(tǒng),可以使用各種通用的商用計算機系統(tǒng)實現(xiàn)本發(fā)明的方法和系統(tǒng),可用使用各種編程語言實現(xiàn)本發(fā)明描述的方法和過程。本發(fā)明可以通過計算機程序產(chǎn)品或軟件的形式提供,產(chǎn)品或者軟件保存在機器可讀的存儲介質(zhì)上,能夠在計算機系統(tǒng)上運行并展現(xiàn)本發(fā)明實現(xiàn)的各種功能和效果。所述存儲介質(zhì)包括機器只讀存儲介質(zhì)、隨機存儲介質(zhì)、磁盤存儲介質(zhì)、光學存儲介質(zhì)、閃存介質(zhì),或者機器可讀的瞬態(tài)存儲介質(zhì)等。圖1展示了一個樣例網(wǎng)絡(luò)架構(gòu)100,該網(wǎng)絡(luò)架構(gòu)100包含多個計算機設(shè)備,組合形成一個步調(diào)一致計算系統(tǒng),是本發(fā)明的一個實施例。如圖1所示的網(wǎng)絡(luò)架構(gòu)100包含第一節(jié)點計算機105、第二節(jié)點計算機110和第三節(jié)點計算機115,它們通過網(wǎng)絡(luò)118連接。其中,網(wǎng)絡(luò)118可以為一個公共網(wǎng)絡(luò)或者私有網(wǎng)絡(luò),節(jié)點計算機105、110、115可以為個人計算機、移動計算設(shè)備、服務(wù)器或者其他計算設(shè)備。在圖1所示的實施例中,節(jié)點計算機105、110、115各自運行了一個虛擬機,第一節(jié)點計算機105運行了第一虛擬機120,第二節(jié)點計算機110運行了第二虛擬機122,第三節(jié)點計算機115運行了第三虛擬機125。事實上,一個節(jié)點計算機可以運行多個虛擬機。所述虛擬機120、122、125是一個計算機的軟件實現(xiàn),能夠像硬件一樣執(zhí)行計算指令。虛擬機120、122、125形成一個虛擬的步調(diào)一致計算系統(tǒng)。在圖1所示的實施例中,虛擬機120、122、125包含一個成員關(guān)系邏輯組件,第一成員關(guān)系邏輯組件130屬于虛擬機120,第二成員關(guān)系邏輯組件134屬于虛擬機122,第三成員關(guān)系邏輯組件140屬于虛擬機125。虛擬機120、122、125各包含一個執(zhí)行邏輯組件,第一執(zhí)行邏輯組件132屬于虛擬機120,第二執(zhí)行邏輯組件136屬于虛擬機122,第三執(zhí)行邏輯組件145屬于虛擬機125。所述成員關(guān)系邏輯組件130、134、140使用成員協(xié)議將各個虛擬機組合成為一個步調(diào)一致計算系統(tǒng)。執(zhí)行邏輯組件132、136、145根據(jù)操作協(xié)議獲取、執(zhí)行、 傳輸單步操作令牌。在圖1所示的實施例中,第一虛擬機120在第一節(jié)點計算機105上啟動,第一虛擬機120可以被用戶啟動或者其他計算機用用程序啟動。在第一虛擬機120的操作系統(tǒng)啟動過程中,第一虛擬機120發(fā)送初始化消息到第二節(jié)點計算機110和第三節(jié)點計算機115,分別激活第二虛擬機122和第三虛擬機125。所述初始化消息可以廣播到連接到網(wǎng)絡(luò)118上的所有節(jié)點,或者只發(fā)送到第二節(jié)點110和第三節(jié)點115上。在本實施例中,第一成員關(guān)系邏輯組件130負責發(fā)送初始化消息。所述初始化消息包含一個廣播地址,接收到初始化消息的虛擬機122、125對所述廣播地址發(fā)送響應(yīng)消息并成為虛擬步調(diào)一致計算系統(tǒng)的成員。第二虛擬機122和第三虛擬機125在成功啟動后,發(fā)送響應(yīng)消息到廣播地址確認自身成為虛擬步調(diào)一致計算系統(tǒng)的備選成員。所述初始化消息可以包含虛擬步調(diào)一致計算系統(tǒng)的唯一標識符。在本實施例中, 所述虛擬步調(diào)一致計算系統(tǒng)的唯一標識符由第一虛擬機120的進程標識符與第一節(jié)點計算機105的IP地址和節(jié)點名稱計算得到。第一節(jié)點計算機105、第二節(jié)點計算機110和第三節(jié)點計算機115之間傳遞的所有消息包含所述唯一標識符。虛擬步調(diào)一致計算系統(tǒng)所有備選成員確認成功后,各個虛擬機的成員關(guān)系邏輯組件130、134、140根據(jù)成員協(xié)議確定最終的成員關(guān)系。成員協(xié)議用于構(gòu)建一個全通的網(wǎng)絡(luò), 保證所有成員節(jié)點能夠相互通信。成員協(xié)議可以使用Totem Single-Ring Ordering and Membership Protocol。在圖1所示的實施例中,成員關(guān)系邏輯組件130、134、140根據(jù)成員協(xié)議決定成員關(guān)系配置文件。虛擬機120、122、125在成員關(guān)系配置文件中各有且僅有一條正確的記錄。 成員關(guān)系配置文件中可用利用虛擬機的相關(guān)屬性進行排序。在本實施例中,指定虛擬機120 為成員關(guān)系配置文件中的第一位虛擬機,即為活動虛擬機,其他成員關(guān)系配置文件中的虛擬機122和125為備選虛擬機。需要說明的是,活動虛擬機不僅可以是用戶指定某個虛擬機為成員關(guān)系配置文件中的第一位虛擬機,還可以是最先啟動的虛擬機或者計算能力最強的虛擬機。如圖2所示,根據(jù)成員關(guān)系配置文件,每個虛擬機向下一個虛擬機發(fā)送消息。最后一個備選虛擬機125的下一個虛擬機120是第一虛擬機,也就是活動虛擬機。因此,所有成員形成一個通信環(huán)。各個節(jié)點計算機利用成員協(xié)議通信,確定步調(diào)一致計算系統(tǒng)的成員關(guān)系,建立成員關(guān)系配置文件。成員關(guān)系邏輯組件130、134、140根據(jù)成員關(guān)系配置文件進行一次注冊活動。如圖2所示,首先活動虛擬機120將注冊令牌發(fā)送到第一備選虛擬機122,依次發(fā)送到最后備選虛擬機125,最后備選虛擬機125將注冊令牌發(fā)回給活動虛擬機120。通過注冊活動,虛擬步調(diào)一致計算系統(tǒng)完成構(gòu)建任務(wù)?;顒犹摂M機120收到返回的注冊令牌后,執(zhí)行第一個單步操作,虛擬步調(diào)一致計算系統(tǒng)中其他虛擬機122和125依次執(zhí)行該操作。虛擬步調(diào)一致計算系統(tǒng)的成員關(guān)系配置文件建立后,執(zhí)行邏輯組件132、136、145 根據(jù)操作協(xié)議分階段執(zhí)行一個或多個應(yīng)用程序或者服務(wù)。根據(jù)操作協(xié)議,第一活動虛擬機 120的第一執(zhí)行邏輯組件132執(zhí)行一個單步操作并根據(jù)該操作產(chǎn)生操作令牌。執(zhí)行一個操作能夠改變計算機系統(tǒng)的內(nèi)存數(shù)據(jù)、寄存器數(shù)據(jù)、端口的輸入和輸出。上述內(nèi)存、寄存器數(shù)據(jù)變更、端口的輸入和輸出收集后形成操作令牌的內(nèi)容。活動虛擬機最先執(zhí)行一個操作,接收用戶、服務(wù)或者應(yīng)用程序的輸入。操作令牌傳遞到成員關(guān)系配置文件中的第二虛擬機(第一備選虛擬機)122,第二虛擬機122的第二操作邏輯組件136執(zhí)行該操作,并將操作令牌傳遞到成員關(guān)系配置文件中的下一個備選虛擬機125。在圖1的實施例中,第二虛擬機122的操作邏輯組件136并不是立刻執(zhí)行該操作,而是保存將該操作的內(nèi)容,在傳遞操作令牌之后再執(zhí)行該操作,這樣可以提高整個虛擬步調(diào)一致計算系統(tǒng)的響應(yīng)時間。需要說明的是,第二虛擬機122的操作邏輯組件136還可以立刻執(zhí)行操作,并在完成該操作之前或完成該操作之后傳遞操作令牌到下一個虛擬機。操作令牌在虛擬步調(diào)一致計算系統(tǒng)內(nèi)順序傳遞,每個虛擬機成員執(zhí)行令牌內(nèi)包含的操作。成員關(guān)系配置文件中的最后一個虛擬機將操作令牌傳會給成員關(guān)系配置文件中的第一虛擬機,第一虛擬機產(chǎn)生新的操作令牌執(zhí)行下一步操作。上述過程持續(xù)到應(yīng)用程序或者服務(wù)執(zhí)行完畢。圖2為一個虛擬步調(diào)一致計算系統(tǒng)的組成圖,該虛擬步調(diào)一致計算系統(tǒng)由第一虛擬機120、第二虛擬機122、第三虛擬機125組成。這些虛擬機實現(xiàn)了成員關(guān)系協(xié)議確立第一虛擬機120為活動虛擬機,第二虛擬機122為第一備選虛擬機,第三虛擬機125為最后備選虛擬機。首先,虛擬機120傳遞消息到第二虛擬機122,第二虛擬機122傳遞消息到第三虛擬機125,第三虛擬機125將返回消息發(fā)送到第一虛擬機120。上述消息包括注冊令牌、 操作令牌等消息。圖3為一個計算設(shè)備150的組成圖。計算設(shè)備150作為虛擬步調(diào)一致計算系統(tǒng)中的一個節(jié)點計算機,計算設(shè)備150可對應(yīng)于圖1中的第一節(jié)點計算機105、第二節(jié)點計算機 110或者第三節(jié)點計算機115。如圖3所示,計算設(shè)備150包括一個虛擬機155和一個緩存160。虛擬機155是一個進程虛擬機或者系統(tǒng)虛擬機。緩存160可以是隨機存儲或者閃存。虛擬機155及其邏輯組件在操作過程中能夠保存值到緩存160中。其中,虛擬機155包含成員關(guān)系邏輯組件 165和執(zhí)行邏輯組件170。成員關(guān)系邏輯模塊165能夠建立一個虛擬步調(diào)一致計算系統(tǒng)中關(guān)于所有虛擬機成員的成員關(guān)系配置文件。成員關(guān)系配置文件加載到緩存160的形成成員列表180中。虛擬步調(diào)一致計算系統(tǒng)中的所有虛擬都包含一份成員列表180的拷貝。成員列表180用于確認虛擬機的屬性信息,包括IP地址和主機名等。上述虛擬機的屬性信息用于確定虛擬步調(diào)一致計算系統(tǒng)中操作令牌等消息的傳遞目的地址。每個操作令牌包含一個順序的標識符用于唯一確定一個單步操作,該順序標識符比前一個操作令牌的標識符增加1。例如,第1個操作令牌的標識符為1,第2個操作令牌的標識符為2,第100個操作令牌的標識符為100。執(zhí)行邏輯組件170接收、執(zhí)行、傳遞應(yīng)用程序或者服務(wù)執(zhí)行過程中的一個操作步驟。所述執(zhí)行邏輯組件170維護緩存160中一個操作標識符185。在本實施例中,操作標識符185標識最近一次執(zhí)行的操作步驟。此外,操作標識符185還可以包含所有被執(zhí)行邏輯組件170執(zhí)行的操作的標識符。當活動虛擬機的執(zhí)行邏輯組件170執(zhí)行一個操作時,執(zhí)行邏輯組件170增加操作標識符185的值,執(zhí)行邏輯組件170產(chǎn)生一個新的操作令牌,操作令牌的標識符值為操作標識符185的值,新產(chǎn)生的操作令牌被發(fā)送到成員關(guān)系配置文件中的第一備選虛擬機。當?shù)谝粋溥x虛擬機的執(zhí)行邏輯組件170接收到一個操作令牌,將操作令牌中的操作標識符與緩存160中的操作標識符185比較。如果操作令牌中的操作標識符比操作標識符185的值大,那么執(zhí)行邏輯組件170將執(zhí)行操作令牌中的操作內(nèi)容,然后執(zhí)行邏輯組件 170更新操作標識符185的值。如果操作令牌中的操作標識符比操作標識符185的值小,那么執(zhí)行邏輯組件170將不執(zhí)行操作令牌中的操作內(nèi)容。這樣避免了虛擬機155多次執(zhí)行一個操作。容錯邏輯組件175能夠檢測到虛擬步調(diào)一致計算系統(tǒng)中網(wǎng)絡(luò)或者計算機的失效。 在本實施例中,容錯邏輯組件175包含一個消息重發(fā)定時器。當接收到一個操作令牌或者將操作令牌發(fā)送到下一個虛擬機時,消息重發(fā)定時器將被重置。在新的操作令牌接收之前,如果消息重發(fā)定時器超時,那么消息重發(fā)定時器將被重置。此外,容錯邏輯組件175還可以維護一個失效定時器。與消息重發(fā)定時器類似,失效定時器也在操作令牌接收到和發(fā)送出去時被重置。失效定制器的時間限制大于消息重發(fā)定時器的時間限制。保證在失效定時器一個周期結(jié)束前,操作令牌至少能重新發(fā)送一次。如果失效定時器一個周期結(jié)束,那么可以判定該虛擬機失效。當一個虛擬機被檢測到失效(例如失效定時器超時),成員關(guān)系協(xié)議將被激活,重新建立虛擬步調(diào)一致計算系統(tǒng)的成員關(guān)系。一個或多個原虛擬機成員發(fā)送查詢消息到其他虛擬機,接收到查詢消息虛擬機將認為消息發(fā)送者沒有發(fā)生故障并發(fā)送響應(yīng)消息到消息發(fā)送者。沒有發(fā)送查詢消息的虛擬機被認定為失效。虛擬步調(diào)一致計算系統(tǒng)新的成員關(guān)系重新建立后,將產(chǎn)生新的成員關(guān)系配置文件。在本實施例中,如果之前的活動虛擬機依然有效,該虛擬機仍為活動虛擬機。如果之前的活動虛擬機失效,原成員關(guān)系配置文件中的第一備選虛擬機將成為新的活動虛擬機,所有其他有效的備選虛擬機在成員關(guān)系配置文件中的位置上移一位。此外,原成員配置文件還可以不作為新成員配置文件的參考。每個有效虛擬機上緩存160中的成員列表180將更新。在原成員關(guān)系中不存在的新加入虛擬機,可以在新成員關(guān)系建立過程中加入到虛擬步調(diào)一致計算系統(tǒng)。新加入的虛擬機需要與原有的虛擬機通信同步狀態(tài)。當新的成員配置文件建立后,新加入的虛擬機可以成為備選虛擬機。新的成員配置文件建立后,新的活動虛擬機將產(chǎn)生新的注冊令牌,并通過新成員配置文件發(fā)送注冊令牌到備選虛擬機。當活動虛擬機收到最后備選虛擬機的返回消息后, 整個虛擬步調(diào)一致計算系統(tǒng)將恢復(fù)檢測到故障時的執(zhí)行任務(wù)。在本實施例中,故障回復(fù)后,活動虛擬機將產(chǎn)生一個執(zhí)行令牌,繼續(xù)檢測到故障時的執(zhí)行步驟,該執(zhí)行令牌包含的操作標識符與故障發(fā)生時操作令牌的操作標識符相同。此外,該操作令牌還可以包含一個恢復(fù)標記用于標識該操作令牌是在故障恢復(fù)之后產(chǎn)生的恢復(fù)操作。操作令牌依次發(fā)送到成員配置文件中所有的備選虛擬機,各個備選虛擬機執(zhí)行故障發(fā)生時未完成的操作。當操作令牌發(fā)回給活動虛擬機時,活動虛擬機將執(zhí)行一個新的操作并產(chǎn)生一個新的操作令牌。圖4為虛擬步調(diào)一致計算系統(tǒng)一種實現(xiàn)方法的流程圖,該方法通過由計算機硬件和計算機軟件構(gòu)成的處理邏輯來實現(xiàn)。本實施例通過一個虛擬機(例如圖1中的第一虛擬機120)與其他虛擬機(例如圖1中的第二虛擬機122和第三虛擬機125)協(xié)同合作來實現(xiàn)。 這些虛擬機運行在一個有網(wǎng)絡(luò)連接的節(jié)點計算機(例如圖1中的第一節(jié)點計算機105,第二節(jié)點計算機110,和第三節(jié)點計算機115)上。如圖4所示,本實施例的虛擬步調(diào)一致計算系統(tǒng)實現(xiàn)方法包括如下步驟 在步驟202中,活動虛擬機(例如圖2中的活動虛擬機120)與其他備選虛擬機(例如圖
2中的第一備選虛擬機122和最后備選虛擬機125)通信建立虛擬步調(diào)一致計算系統(tǒng)的成員關(guān)系,所述活動虛擬機(例如圖2中的活動虛擬機120)可以通過第一節(jié)點計算機(例如圖 1中的第一節(jié)點計算機105)上的用戶來指定。活動虛擬機(例如圖2中的活動虛擬機120) 通過多播或廣播的方式發(fā)送初始化消息到每個虛擬機。其他備選虛擬機(例如圖2中的第一備選虛擬機122和最后備選虛擬機125)將相應(yīng)初始化消息并加入到虛擬步調(diào)一致計算系統(tǒng)。在步驟204中,活動虛擬機(例如圖2中的活動虛擬機120 )與其他備選虛擬機(例如圖2中的第一備選虛擬機122和最后備選虛擬機125)通信確定成員關(guān)系配置文件。所述成員關(guān)系配置文件可以基于虛擬機成員的特征來決定。例如,成員關(guān)系配置文件可以由網(wǎng)絡(luò)地址、初始化順序、處理器標識或其他特征來決定。在成員關(guān)系和成員關(guān)系配置文件確定后,注冊令牌將在所有虛擬機之間傳遞保證所有虛擬機注冊到虛擬步調(diào)一致計算系統(tǒng)。 成員關(guān)系和成員關(guān)系配置文件可用利用成員關(guān)系協(xié)議(例如iTotem Single-Ring Ordering and Membership Protocol)來建立。在步驟206中,活動虛擬機(例如圖2中的活動虛擬機120)執(zhí)行一個單步操作。在步驟208中,活動虛擬機(例如圖2中的活動虛擬機120)為所述單步操作產(chǎn)生一個操作令牌,所述的單步操作包含內(nèi)存地址的變更,寄存器的修改,端口的輸入和輸出。單步操作的包含內(nèi)容封裝在操作令牌中。所述操作令牌包含一個順序標識符用于唯一標識所述單步操作。在步驟210中,活動虛擬機(例如圖2中的活動虛擬機120)發(fā)送操作令牌到成員關(guān)系配置文件中的第一備選虛擬機(例如圖2中的第一備選虛擬機122),第一備選虛擬機執(zhí)行操作令牌中包含的單步操作。然后操作令牌發(fā)送到其他備選虛擬機(例如圖2中的最后備選虛擬機125),每個虛擬機接收并執(zhí)行操作令牌。在步驟212中,活動虛擬機啟動一個消息重發(fā)定時器和一個失效定時器。消息重發(fā)定時器用于檢測丟失的消息,失效定時器用于檢測故障虛擬機。在步驟214中,如果活動虛擬機接收到返回的操作令牌,則返回到步驟206執(zhí)行, 開始執(zhí)行下一個操作步驟。如果活動虛擬機未收到返回的操作令牌,則跳轉(zhuǎn)到步驟216執(zhí)行。在步驟216中,如果失效定時器超時,則假設(shè)一臺虛擬機失效,轉(zhuǎn)到步驟222執(zhí)行。 如果失效定時器未超時,轉(zhuǎn)到步驟218。在步驟218中,如果消息重發(fā)定時器未超時,轉(zhuǎn)到步驟214。如果消息重發(fā)定時器超時,則假設(shè)消息令牌傳輸發(fā)生丟失,轉(zhuǎn)到步驟220。在步驟 220,活動虛擬機重發(fā)消息令牌到第一備選虛擬機,重置消息重發(fā)定時器,并轉(zhuǎn)到步驟214。在步驟222中,恢復(fù)任務(wù)被啟動,轉(zhuǎn)到圖6的步驟405,執(zhí)行恢復(fù)任務(wù)的具體流程在圖6中描述。圖5為虛擬機步調(diào)一致計算系統(tǒng)另一種實現(xiàn)方法的流程圖,該方法通過由計算機硬件和計算機軟件構(gòu)成的處理邏輯來實現(xiàn)。本實施例通過一個虛擬機(例如圖1中的第一虛擬機120)與其他虛擬機(例如圖1中的第二虛擬機122和第三虛擬機125)協(xié)同合作來實現(xiàn)。這些虛擬機運行在一個有網(wǎng)絡(luò)連接的節(jié)點計算機(例如圖1中的第一節(jié)點計算機105, 第二節(jié)點計算機110,和第三節(jié)點計算機115)上。如圖5所示,本實施例的虛擬步調(diào)一致計算系統(tǒng)實現(xiàn)方法包括如下步驟 在步驟302中,虛擬步調(diào)一致計算系統(tǒng)中的某一備選虛擬機(例如圖2中的第一備選虛
擬機122)與其他備選虛擬機(例如圖2中的最后備選虛擬機125)通信建立虛擬步調(diào)一致計算系統(tǒng)的成員關(guān)系,該備選虛擬機(例如圖2中的第一備選虛擬機122)可以通過第一節(jié)點計算機(例如圖1中的第一節(jié)點計算機105)上的用戶啟動。該備選虛擬機(例如圖2中的第一備選虛擬機122)可以利用其他備選虛擬機(例如圖2中的最后備選虛擬機125)發(fā)送的初始化消息來啟動。該備選虛擬(例如圖2中的第一備選虛擬機122)機響應(yīng)初始化請求并發(fā)送初始化消息的返回消息。該備選虛擬機(例如圖2中的第一備選虛擬機122)可以通過多播或廣播的方式轉(zhuǎn)發(fā)初始化消息到其他節(jié)點計算機,請求其他虛擬機加入到虛擬步調(diào)一致計算系統(tǒng)。運行在其他節(jié)點計算機上的虛擬機可以響應(yīng)初始化消息并加入到虛擬步調(diào)一致計算系統(tǒng)。在步驟304中,虛擬步調(diào)一致計算系統(tǒng)中的某一備選虛擬機(例如圖2中的第一備選虛擬機122)與其他備選虛擬機(例如圖2中的最后備選虛擬機125)通信確定成員關(guān)系配置文件。所述成員關(guān)系配置文件可以基于虛擬機成員的特征來決定。例如,成員關(guān)系配置文件可以由網(wǎng)絡(luò)地址、初始化順序、處理器標識或其他特征來決定。在成員關(guān)系和成員關(guān)系配置文件確定后,注冊令牌將在所有虛擬機之間傳遞保證所有虛擬機注冊到虛擬步調(diào)一致計算系統(tǒng)。成員關(guān)系和成員關(guān)系配置文件可用利用成員關(guān)系協(xié)議(例如Totem Single-Ring Ordering and Membership Protocol)來建立。在步驟306中,虛擬機從成員關(guān)系配置文件中的前一個虛擬機接收操作令牌。操作令牌中包含單步操作的內(nèi)容,包括內(nèi)存地址的變更,寄存器的修改,端口的輸入和輸出。 操作令牌包含一個順序標識符用于唯一標識所述單步操作。在步驟310中,虛擬機將操作令牌中的順序標識符與虛擬機緩存中的操作標識符堆棧進行匹配。緩存中的操作標識符堆棧是虛擬機執(zhí)行操作的歷史列表。在步驟315中,如果操作令牌中的順序標識符在虛擬機緩存中的操作標識符堆棧中沒有查找到匹配項。如果虛擬機標識符的值比操作標識符堆棧中的最大值還大,那么該操作令牌沒有在該虛擬機上執(zhí)行過,轉(zhuǎn)到步驟320。如果順序標識符在操作標識符堆棧中有匹配項,那么該虛擬機已經(jīng)執(zhí)行過該操作,轉(zhuǎn)到步驟330執(zhí)行。在步驟320中,虛擬機執(zhí)行操作令牌中包含的單步操作內(nèi)容。在步驟325中,虛擬機添加操作令牌中的順序標識符到操作標識符堆棧中。操作令牌包含一個順序標識符,所述順序標識符與前一個操作令牌的順序標識符不同,該方法還包括
虛擬機接收到操作令牌后,將操作令牌中的順序標識符的值與虛擬機維護的操作標識符堆棧的第一項的值相比較;如果順序標識符大于操作標識符堆棧的第一項,執(zhí)行操作令牌中包含的單步操作內(nèi)容,將順序標識符加入到操作標識符堆棧中;如果順序標識符不大于操作標識符堆棧的第一項,該虛擬機將操作令牌傳遞到下一個虛擬機,不執(zhí)行操作令牌中包含的單步操作內(nèi)容。在步驟330中,操作令牌轉(zhuǎn)發(fā)到成員關(guān)系配置文件中的下一個虛擬機。每個虛擬機依次接收并執(zhí)行操作令牌中包含的操作內(nèi)容。在步驟335中,虛擬機啟動一個消息重發(fā)定時器和一個失效定時器。消息重發(fā)定時器用于檢測丟失的消息,失效定時器用于檢測故障虛擬機。在步驟340中,虛擬機如果從前一個虛擬機接收到下一個操作令牌,轉(zhuǎn)到步驟315 執(zhí)行。否則,轉(zhuǎn)到步驟345執(zhí)行。在步驟345中,虛擬機判斷失效計時器是否超時。如果失效計時器超時,轉(zhuǎn)到步驟 360執(zhí)行。否則,轉(zhuǎn)到步驟350執(zhí)行,在步驟350中,虛擬機判斷消息重發(fā)計時器是否超時。 如果消息重發(fā)計時器未超時,轉(zhuǎn)到步驟340執(zhí)行。如果消息重發(fā)計時器超時,轉(zhuǎn)到步驟335
11執(zhí)行,在步驟335中,虛擬機重新發(fā)送操作令牌到成員關(guān)系配置文件中的下一個虛擬機并重置消息重發(fā)計時器。返回到步驟340執(zhí)行。在步驟360中,恢復(fù)任務(wù)被啟動,轉(zhuǎn)到圖6的步驟405,執(zhí)行恢復(fù)任務(wù)的具體流程在圖6中描述。圖6為虛擬步調(diào)一致計算系統(tǒng)執(zhí)行故障恢復(fù)的流程圖。該方法通過由計算機硬件和計算機軟件構(gòu)成的處理邏輯來實現(xiàn)。本實施例通過一個虛擬機(例如圖1中的第二虛擬機122)與其他虛擬機(例如圖1中的第一虛擬機120和第三虛擬機125)協(xié)同合作來實現(xiàn)。這些虛擬機運行在一個有網(wǎng)絡(luò)連接的節(jié)點計算機(例如圖1中的第一節(jié)點計算機105, 第二節(jié)點計算機110,和第三節(jié)點計算機115)上。如圖6所示,虛擬步調(diào)一致計算系統(tǒng)執(zhí)行故障恢復(fù)的方法包括如下步驟 在步驟405中,虛擬步調(diào)一致計算系統(tǒng)中的某一備選虛擬機(例如圖2中的第一備選虛
擬機122)與其他備選虛擬機(例如圖2中的最后備選虛擬機125)通信重新建立虛擬步調(diào)一致計算系統(tǒng)成員關(guān)系。該備選虛擬機(例如圖2中的第一備選虛擬機122)將利用多播或廣播的方式發(fā)送消息到一個或多個節(jié)點計算機,這些節(jié)點計算機可能有運行虛擬機也可能沒有運行任何虛擬機。在步驟410中,如果虛擬步調(diào)一致計算系統(tǒng)中虛擬機數(shù)量小于一個閾值,所述閾值可以由用戶設(shè)置為2、3或10等,將執(zhí)行步驟415,重新建立成員關(guān)系。如果虛擬步調(diào)一致計算系統(tǒng)中虛擬機數(shù)量不小于所述閾值,轉(zhuǎn)到步驟425執(zhí)行。在步驟415中,復(fù)制備選虛擬機(例如圖2中的第一備選虛擬機122),在步驟420 中,拷貝復(fù)制的備選虛擬機(例如圖2中的第一備選虛擬機122)到新的節(jié)點計算機,保證復(fù)制后的新虛擬機與原虛擬機狀態(tài)同步。在步驟425中,建立新的成員關(guān)系配置文件。新復(fù)制的備選虛擬機(例如圖2中的第一備選虛擬機122)成為備選虛擬機中的最后一個備選虛擬機。原成員關(guān)系配置文件中的活動虛擬機在新的成員關(guān)系配置文件中仍然為活動虛擬機。在步驟430中,如果活動虛擬機發(fā)生故障,轉(zhuǎn)到步驟435執(zhí)行,第一備選虛擬機成為活動虛擬機。如果活動虛擬機沒有發(fā)生故障,轉(zhuǎn)到步驟440執(zhí)行。在步驟440中,如果當前活動虛擬機為原活動虛擬機,轉(zhuǎn)到步驟445執(zhí)行。如果當前活動虛擬機不為原活動虛擬機,轉(zhuǎn)到步驟455執(zhí)行。在步驟445中,活動虛擬機重新產(chǎn)生操作令牌,恢復(fù)失效檢測前的單步操作步驟。 單步操作包含的內(nèi)容為內(nèi)存地址的變更,寄存器的修改,端口的輸入和輸出。單步操作的包含內(nèi)容封裝在操作令牌中。所述操作令牌包含一個順序標識符用于唯一標識所述單步操作。在步驟450中,活動虛擬機發(fā)送操作令牌到成員關(guān)系配置文件中的第一備選虛擬機。若果故障發(fā)生前,操作未執(zhí)行完成,第一備選虛擬機將根據(jù)新的操作令牌執(zhí)行操作內(nèi)容。然后,根據(jù)成員關(guān)系配置文件將操作令牌發(fā)送到其他備選虛擬機。各個備選虛擬機在故障發(fā)生前為完成該操作步驟,那么將重新執(zhí)行操作令牌中的操作內(nèi)容。在步驟452中,第一虛擬機接收最后備選虛擬機返回的操作令牌,接著轉(zhuǎn)到步驟480,即如果是對圖4實施例的虛擬步調(diào)一致計算系統(tǒng)實現(xiàn)方法執(zhí)行恢復(fù)任務(wù),則轉(zhuǎn)到圖4的步驟206 ;如果是對圖5 實施例的虛擬步調(diào)一致計算系統(tǒng)實現(xiàn)方法執(zhí)行恢復(fù)任務(wù),則轉(zhuǎn)到圖5的步驟355。
在步驟455中,活動虛擬機從備選虛擬機接收發(fā)生故障前的操作令牌。所述操作令牌的操作內(nèi)容包含內(nèi)存地址的變更,寄存器的修改,端口的輸入和輸出。所述操作令牌包含一個順序標識符用于唯一標識操作令牌中的單步操作和一個用于唯一標識該虛擬步調(diào)一致計算系統(tǒng)的標識符。所述操作令牌包含一個恢復(fù)標簽用于提醒虛擬機該單步操作在執(zhí)行時發(fā)生過故障。在步驟460中,活動虛擬機將操作令牌中的順序標識符與緩存中的操作標識符比較。緩存中的標識符用于指示一個或多個在較短時間內(nèi)虛擬機執(zhí)行的單步操作。如果操作令牌中的順序標識符比緩存中的操作標識符大,那么所述操作令牌的中操作內(nèi)容還沒有在該虛擬機上執(zhí)行,轉(zhuǎn)到步驟465執(zhí)行。如果操作令牌中的順序標識符出現(xiàn)在緩存中的操作標識符中,那么轉(zhuǎn)到步驟475執(zhí)行。在步驟465中,活動虛擬機執(zhí)行操作令牌中包含的單步操作。在步驟470中,活動虛擬機將操作令牌中的順序標識符加入到緩存中的操作標識符。步驟470可以是替換緩存中的操作標識符或者是在緩存操作標識符堆棧中加入一個記錄項。在步驟475中,每個虛擬機執(zhí)行操作令牌中的單步操作,并根據(jù)成員關(guān)系配置文件將操作令牌發(fā)送到下一個虛擬機,接著轉(zhuǎn)到步驟480,即如果是對圖4實施例的虛擬步調(diào)一致計算系統(tǒng)實現(xiàn)方法執(zhí)行恢復(fù)任務(wù),則轉(zhuǎn)到圖4的步驟206 ;如果是對圖5實施例的虛擬步調(diào)一致計算系統(tǒng)實現(xiàn)方法執(zhí)行恢復(fù)任務(wù),則轉(zhuǎn)到圖5的步驟355。圖7為本發(fā)明虛擬機容錯系統(tǒng)的結(jié)構(gòu)圖。在本系統(tǒng)中,多個所述計算機系統(tǒng)通過網(wǎng)絡(luò)(局域網(wǎng)或廣域網(wǎng))相互連接。所述計算機系統(tǒng)可以是個人計算機或者服務(wù)器計算機。 所述計算機也可以是使用各種計算機集群技術(shù)組合成的計算機集群,能夠聯(lián)合執(zhí)行一系列計算機指令。如圖7所示,本發(fā)明虛擬機容錯系統(tǒng)包括處理器502,內(nèi)存504,靜態(tài)存儲506,網(wǎng)絡(luò)接口設(shè)備508,視頻顯示設(shè)備510 (IXD或者CRT),字符輸入設(shè)備512 (例如鍵盤),光標控制設(shè)備514 (例如鼠標),信號產(chǎn)生設(shè)備516,存儲設(shè)備518,總線550以及網(wǎng)絡(luò)520。其中,處理器502代表一個或多個通用微處理器CPU。存儲設(shè)備518包含計算機可讀的存儲介質(zhì)531,所述存儲介質(zhì)531保存了計算機指令集合(例如軟件522)。所述計算機指令集合實現(xiàn)了本發(fā)明描述的方法和功能。計算機可讀存儲介質(zhì)531還用于存儲虛擬機155 (例如圖3中的虛擬機155)和運行虛擬機所需要的軟件522。所述計算機可讀存儲介質(zhì)可以是但不僅僅是固態(tài)存儲、光學存儲或磁性存儲介質(zhì)。虛擬機155的組成結(jié)構(gòu)如圖3所示和上文的描述,在此不再重復(fù)描述。上述表述用于說明本發(fā)明的方法和系統(tǒng)。通過閱讀和理解上述表述,可以現(xiàn)實各種其他的實施例。本發(fā)明不局限于的本專利說描述的各種實施例,能夠通過修改權(quán)利聲明中的內(nèi)容實現(xiàn)更多的實施例。
權(quán)利要求
1.一種虛擬機容錯方法,其特征在于,包括以下步驟一個虛擬機與至少兩個其他虛擬機通信,建立虛擬步調(diào)一致計算系統(tǒng)的成員關(guān)系,所述成員包括數(shù)個虛擬機,每個虛擬機運行在聯(lián)網(wǎng)的節(jié)點計算機上;首先,一個虛擬機與其他虛擬機通信,決定虛擬步調(diào)一致計算系統(tǒng)的成員關(guān)系配置文件,在該成員關(guān)系配置文件中確定活動虛擬機和備選虛擬機;然后,虛擬步調(diào)一致計算系統(tǒng)中的每個成員虛擬機按照成員關(guān)系配置文件中的順序執(zhí)行每個單步操作,并且監(jiān)控其他虛擬機的工作狀態(tài);如果工作正常,循環(huán)該單步操作;如果該虛擬步調(diào)一致計算系統(tǒng)中有一個或多個虛擬機發(fā)生故障被其他虛擬機檢測到, 則檢測到故障的虛擬機與所有剩余的虛擬機通信重新建立虛擬步調(diào)一致計算系統(tǒng)的成員關(guān)系;并重新執(zhí)行故障發(fā)生前的操作并傳遞到新的成員關(guān)系配置文件中的下一個虛擬機。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于該成員關(guān)系配置文件中的用戶指定的第一位虛擬機、最先啟動的虛擬機或者計算能力最強的虛擬機為活動虛擬機;成員關(guān)系配置文件中的除了活動虛擬機之外的虛擬機為備選虛擬機,活動虛擬機的下一個備選虛擬機為第一備選虛擬機,依次類推,最后一個備選虛擬機為最后備選虛擬機,最后備選虛擬機的下一個虛擬機為活動虛擬機。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于活動虛擬機執(zhí)行一個單步操作并根據(jù)該單步操作產(chǎn)生一個操作令牌,并發(fā)送操作令牌到成員關(guān)系配置文件中的第一備選虛擬機;其他備選虛擬機依次接收操作令牌并執(zhí)行操作令牌中包含的單步操作內(nèi)容;直到最后備選虛擬機執(zhí)行完單步操作后返回操作令牌到活動虛擬機,活動虛擬機根據(jù)下一個單步操作的內(nèi)容產(chǎn)生新的操作令牌。
4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于于監(jiān)控其他虛擬機的工作狀態(tài)時,每個成員虛擬機啟動一個定時器,用于檢測其他虛擬機是否發(fā)生故障;當故障檢測到后,重新建立虛擬步調(diào)一致計算系統(tǒng)的成員關(guān)系,新的成員關(guān)系不包括發(fā)生故障的虛擬機;其中,如果是活動虛擬機發(fā)生故障,則第一備選虛擬機成為新成員關(guān)系配置文件中的活動虛擬機;于重新建立了虛擬步調(diào)一致計算系統(tǒng)的成員關(guān)系后,由檢測到故障的虛擬機執(zhí)行故障發(fā)生前的最后一個操作令牌包含的單步操作內(nèi)容。
5.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,如果成員關(guān)系配置文件中的第一備選虛擬機檢測到活動虛擬機發(fā)生故障,那么第一備選虛擬機成為活動虛擬機。
6.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,于監(jiān)控其他虛擬機的工作狀態(tài)時,成員關(guān)系配置文件中的每個虛擬機啟動一個定時器,如果該定時器超時,那么則判定該虛擬機在成員關(guān)系配置文件中的前一個虛擬機發(fā)生故障。
7.根據(jù)權(quán)利要求4所述的方法,其特征在于,當虛擬步調(diào)一致計算系統(tǒng)中虛擬機數(shù)量小于一個閾值時,則拷貝復(fù)制的備選虛擬機到另一個節(jié)點計算機上,重新確定新的成員關(guān)系配置文件,以在重新建立的成員關(guān)系中包含原成員關(guān)系不包含的新虛擬機。
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,單步操作的內(nèi)容包含計算機內(nèi)存值的改變,寄存器的改變,端口的輸入與輸出。
9.根據(jù)權(quán)利要求3所述的方法,其特征在于,操作令牌包含一個順序標識符,所述順序標識符與前一個操作令牌的順序標識符不同,虛擬機接收到操作令牌后,將操作令牌中的順序標識符的值與虛擬機維護的操作標識符堆棧的第一項的值相比較;如果順序標識符大于操作標識符堆棧的第一項,執(zhí)行操作令牌中包含的單步操作內(nèi)容,將順序標識符加入到操作標識符堆棧中;如果順序標識符不大于操作標識符堆棧的第一項,該虛擬機將操作令牌傳遞到下一個虛擬機,不執(zhí)行操作令牌中包含的單步操作內(nèi)容。
10.根據(jù)權(quán)利要求1所述的方法,其特征在于,建立的成員關(guān)系包含經(jīng)過排序的所有虛擬機網(wǎng)絡(luò)地址列表。
11.一種虛擬機容錯系統(tǒng),其特征在于,包括三個以上的運行在聯(lián)網(wǎng)的節(jié)點計算機上的虛擬機;一個成員關(guān)系邏輯組件,用于發(fā)現(xiàn)并維護參與步調(diào)一致計算的虛擬機的列表,確定成員關(guān)系配置文件,并在該成員關(guān)系配置文件中確定活動虛擬機和備選虛擬機;一個執(zhí)行邏輯組件,用于產(chǎn)生操作令牌,傳遞操作令牌到成員關(guān)系配置文件中的下一個虛擬機,并接收前一個虛擬機發(fā)送過來的操作令牌;一個容錯邏輯組件,根據(jù)定時器的配置決定虛擬機是否發(fā)生故障。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,成員關(guān)系邏輯組件中的成員關(guān)系配置文件中用戶指定的第一位虛擬機、最先啟動的虛擬機或者計算能力最強的虛擬機為活動虛擬機;成員關(guān)系配置文件中除了活動虛擬機之外的虛擬機為備選虛擬機,活動虛擬機的下一個備選虛擬機為第一備選虛擬機,依次類推,最后一個備選虛擬機為最后備選虛擬機,最后備選虛擬機的下一個虛擬機為活動虛擬機。
13.根據(jù)權(quán)利要求11或12所述的系統(tǒng),其特征在于,成員關(guān)系邏輯組件與其他虛擬機通信重新建立虛擬步調(diào)一致計算系統(tǒng)的成員關(guān)系配置文件,其中其他虛擬機不包含已發(fā)生故障的虛擬機;所述執(zhí)行邏輯組件執(zhí)行故障發(fā)生前的最后一個操作令牌,然后發(fā)送該操作令牌到新成員關(guān)系配置文件中的下一個虛擬機。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其特征在于,重新建立的新成員關(guān)系配置文件中包含原成員關(guān)系配置文件中不存在的虛擬機,該虛擬機包含一個復(fù)制器用于復(fù)制該虛擬機到另一個節(jié)點計算機上;一個成員關(guān)系邏輯組件和一個容錯邏輯組件。
全文摘要
一種虛擬機容錯的方法和系統(tǒng)。其是由一個虛擬機與其他虛擬機通信決定成員關(guān)系配置文件,每個虛擬機運行在網(wǎng)絡(luò)中的一個節(jié)點計算機上,通常指定第一個虛擬機為活動虛擬機,其他虛擬機為備選虛擬機,建立一個虛擬的步調(diào)一致計算系統(tǒng)。當活動虛擬機執(zhí)行單步操作時,將產(chǎn)生一個操作令牌,該令牌包含該單步操作步驟的內(nèi)容。活動虛擬機根據(jù)成員關(guān)系配置文件將操作令牌分發(fā)到所有備選虛擬機。各個備選虛擬機依次接收并執(zhí)行操作令牌并發(fā)送到下一個備選虛擬機,保證所有虛擬機保持一致的狀態(tài)。一個或多個虛擬機發(fā)生故障時,未發(fā)生故障的虛擬機重新建立成員關(guān)系配置文件,恢復(fù)故障發(fā)生前的狀態(tài),繼續(xù)故障發(fā)生前的操作任務(wù),從而有效地實現(xiàn)了系統(tǒng)的容錯功能。
文檔編號G06F11/14GK102455951SQ201110204570
公開日2012年5月16日 申請日期2011年7月21日 優(yōu)先權(quán)日2011年7月21日
發(fā)明者蘭雨晴, 夏穎, 宋瀟豫, 徐舫 申請人:中標軟件有限公司