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