一種計(jì)算機(jī)容錯(cuò)方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種計(jì)算機(jī)容錯(cuò)方法及系統(tǒng)。所述計(jì)算機(jī)容錯(cuò)方法應(yīng)用于包括主用設(shè)備和備用設(shè)備的計(jì)算機(jī)容錯(cuò)系統(tǒng)中,所述主用設(shè)備和備用設(shè)備都包括建立在虛擬化內(nèi)核上的客戶虛擬機(jī),所述計(jì)算機(jī)容錯(cuò)方法包括:預(yù)設(shè)虛擬內(nèi)存同步的觸發(fā)條件;當(dāng)所述觸發(fā)條件發(fā)生時(shí),完成一次所述主用設(shè)備和所述備用設(shè)備的虛擬內(nèi)存同步;當(dāng)所述主用設(shè)備發(fā)生故障時(shí),停止所述主用設(shè)備的所述客戶虛擬機(jī)的運(yùn)行,并啟動(dòng)所述備用設(shè)備的客戶虛擬機(jī)的運(yùn)行。本發(fā)明的技術(shù)方案能夠預(yù)防故障停機(jī)風(fēng)險(xiǎn),當(dāng)主用設(shè)備發(fā)生故障時(shí),業(yè)務(wù)將直接遷移到備用設(shè)備,應(yīng)用連續(xù)不間斷,無任何數(shù)據(jù)丟失,可靠性更高;并且該技術(shù)方案獨(dú)立于操作系統(tǒng)層,應(yīng)用更為廣泛。
【專利說明】一種計(jì)算機(jī)容錯(cuò)方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種計(jì)算機(jī)安全系統(tǒng),特別是涉及一種計(jì)算機(jī)容錯(cuò)方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著信息科技的快速發(fā)展,尤其是物聯(lián)網(wǎng)與云計(jì)算的興起,計(jì)算機(jī)系統(tǒng)對(duì)社會(huì)經(jīng)濟(jì)的發(fā)展影響越來越大。計(jì)算機(jī)系統(tǒng)不僅應(yīng)用在數(shù)據(jù)信息的管理和維護(hù),而且也應(yīng)用在工業(yè)控制與生產(chǎn)執(zhí)行。如制造業(yè)過程控制系統(tǒng)、工廠制造執(zhí)行系統(tǒng)、企業(yè)網(wǎng)數(shù)據(jù)中心系統(tǒng),計(jì)算機(jī)系統(tǒng)成為了工業(yè)IT基礎(chǔ)架構(gòu)的的核心。計(jì)算機(jī)系統(tǒng)的部件可能發(fā)生故障,如果計(jì)算機(jī)系統(tǒng)的部件發(fā)生故障,難免會(huì)影響計(jì)算機(jī)系統(tǒng)的運(yùn)行,甚至導(dǎo)致計(jì)算機(jī)系統(tǒng)崩潰。這樣,如何保證計(jì)算機(jī)系統(tǒng)在發(fā)生故障時(shí),計(jì)算機(jī)系統(tǒng)能夠正常工作或恢復(fù)正常工作,就成為了計(jì)算機(jī)系統(tǒng)發(fā)展的一個(gè)關(guān)鍵問題。
[0003]針對(duì)計(jì)算機(jī)系統(tǒng)故障導(dǎo)致的計(jì)算機(jī)系統(tǒng)的安全穩(wěn)定問題,人們提出了不少解決方案,包括微軟公司的MSCS故障轉(zhuǎn)移集群方案,RoseHA集群軟件方案,Vmware虛擬化HA方案等。但這些解決方案的設(shè)計(jì)思路均是采用主從設(shè)備的故障切換,實(shí)現(xiàn)主機(jī)發(fā)生故障后客戶機(jī)系統(tǒng)快速恢復(fù)。即主機(jī)發(fā)生故障時(shí),從機(jī)接管并重啟關(guān)鍵應(yīng)用服務(wù)。但這種設(shè)計(jì)有著明顯的缺陷,不僅當(dāng)應(yīng)用服務(wù)在主從之間重啟切換會(huì)導(dǎo)致業(yè)務(wù)系統(tǒng)中斷運(yùn)行,而且該系統(tǒng)往往結(jié)構(gòu)復(fù)雜,對(duì)軟件系統(tǒng)和應(yīng)用環(huán)境有很大的限制。
[0004]鑒于此,如何找到一種能夠在計(jì)算機(jī)系統(tǒng)發(fā)生故障時(shí),計(jì)算機(jī)系統(tǒng)的業(yè)務(wù)運(yùn)行也能保證連續(xù)不中斷的計(jì)算機(jī)容錯(cuò)方法及系統(tǒng),就成為了本領(lǐng)域技術(shù)人員亟待解決的問題。
【發(fā)明內(nèi)容】
[0005]鑒于以上所述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種計(jì)算機(jī)容錯(cuò)方法及系統(tǒng),用于解決現(xiàn)有技術(shù)中在計(jì)算機(jī)系統(tǒng)發(fā)生故障時(shí),業(yè)務(wù)運(yùn)行會(huì)被中斷的問題。
[0006]為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種計(jì)算機(jī)容錯(cuò)方法,應(yīng)用于包括主用設(shè)備和備用設(shè)備的計(jì)算機(jī)容錯(cuò)系統(tǒng)中,所述主用設(shè)備和備用設(shè)備都包括建立在虛擬化內(nèi)核上的客戶虛擬機(jī),所述基于虛擬內(nèi)存同步的容錯(cuò)方法包括:預(yù)設(shè)虛擬內(nèi)存同步的觸發(fā)條件;當(dāng)所述觸發(fā)條件發(fā)生時(shí),完成一次所述主用設(shè)備和所述備用設(shè)備的虛擬內(nèi)存同步;
[0007]所述基于虛擬內(nèi)存同步的容錯(cuò)方法還包括:當(dāng)所述主用設(shè)備發(fā)生故障時(shí),停止所述主用設(shè)備的所述客戶虛擬機(jī)的運(yùn)行,并啟動(dòng)所述備用設(shè)備的客戶虛擬機(jī)的運(yùn)行,讓所述備用設(shè)備接管所述主用設(shè)備的工作。
[0008]所述完成一次所述主用設(shè)備和所述備用設(shè)備的虛擬內(nèi)存同步包括:暫停所述主用設(shè)備的所述客戶虛擬機(jī)的運(yùn)行,實(shí)現(xiàn)所述備用設(shè)備的客戶虛擬機(jī)的內(nèi)存頁面內(nèi)容與所述主用設(shè)備的客戶虛擬機(jī)的內(nèi)存頁面內(nèi)容完全一致;重新啟動(dòng)所述主用設(shè)備的所述客戶虛擬機(jī)運(yùn)行,所述主用設(shè)備的所述客戶虛擬機(jī)完成本次虛擬內(nèi)存同步中的所包含的I/o操作,并保證所述主用設(shè)備的磁盤數(shù)據(jù)與所述備用設(shè)備的磁盤數(shù)據(jù)完全一致。
[0009]所述實(shí)現(xiàn)所述備用設(shè)備的客戶虛擬機(jī)的頁面內(nèi)容與所述主用設(shè)備的客戶虛擬機(jī)的頁面內(nèi)容完全一致包括:確定從上一次所述觸發(fā)條件發(fā)生到當(dāng)前所述觸發(fā)條件發(fā)生時(shí)客戶虛擬機(jī)中頁面內(nèi)容發(fā)生改變的虛擬內(nèi)存頁,并將所有的所確定的虛擬內(nèi)存頁的內(nèi)容傳輸?shù)剿鰝溆迷O(shè)備,使得所述備用設(shè)備中所述客戶虛擬機(jī)的與所述所確定的虛擬內(nèi)存頁相應(yīng)的虛擬內(nèi)存頁的內(nèi)容與所述主用設(shè)備中所確定的虛擬內(nèi)存頁的內(nèi)容一致。
[0010]所述虛擬內(nèi)存同步的觸發(fā)條件包括:所述主用設(shè)備的所述虛擬客戶機(jī)上發(fā)生I/O狀態(tài)變化。
[0011]本發(fā)明還提供一種計(jì)算機(jī)容錯(cuò)系統(tǒng),包括主用設(shè)備與備用設(shè)備,所述主用設(shè)備與所述備用設(shè)備都包括同步軟件模塊、故障管理模塊、客戶虛擬機(jī)模塊;所述計(jì)算機(jī)容錯(cuò)系統(tǒng)運(yùn)行時(shí),所述主用設(shè)備與所述備用設(shè)備的同步軟件模塊、故障管理模塊、客戶虛擬機(jī)模塊都運(yùn)行在虛擬化內(nèi)核上,分別對(duì)應(yīng)所述虛擬化內(nèi)核上的同步軟件進(jìn)程、故障管理進(jìn)程、客戶虛擬機(jī);其中:所述客戶虛擬機(jī)用于實(shí)現(xiàn)應(yīng)用程序的運(yùn)行;主用設(shè)備的所述客戶虛擬機(jī)處于運(yùn)行狀態(tài),所述備用設(shè)備的所述客戶虛擬機(jī)處于同步運(yùn)行但不可被訪問管理狀態(tài);所述同步軟件進(jìn)程用于預(yù)設(shè)虛擬內(nèi)存同步的觸發(fā)條件,當(dāng)所述觸發(fā)條件發(fā)生時(shí),實(shí)現(xiàn)主用設(shè)備與所述備用設(shè)備之間的虛擬內(nèi)存同步;主用設(shè)備的所述同步軟件進(jìn)程處于運(yùn)行狀態(tài),所述備用設(shè)備的所述同步軟件進(jìn)程處于同步運(yùn)行但不可被訪問管理狀態(tài);所述故障管理進(jìn)程用于實(shí)現(xiàn)對(duì)所述主用設(shè)備硬件、所述客戶虛擬機(jī)以及所述同步軟件進(jìn)程的管理與故障恢復(fù);主用設(shè)備的所述故障管理進(jìn)程處于運(yùn)行狀態(tài),所述備用設(shè)備的所述故障管理進(jìn)程處于同步運(yùn)行但不可被訪問管理狀態(tài)。
[0012]所述虛擬內(nèi)存同步的實(shí)現(xiàn)方法包括:暫停所述主用設(shè)備的所述客戶虛擬機(jī)運(yùn)行,確定從上一次所述觸發(fā)條件發(fā)生到當(dāng)前所述觸發(fā)條件發(fā)生時(shí)客戶虛擬機(jī)中頁面內(nèi)容發(fā)生改變的虛擬內(nèi)存頁,并對(duì)所述頁面內(nèi)容發(fā)生改變的虛擬內(nèi)存頁進(jìn)行同步,使得所述備用設(shè)備中所述客戶虛擬機(jī)的相應(yīng)的虛擬內(nèi)存頁的內(nèi)容與所述主用設(shè)備中所述頁面內(nèi)容發(fā)生改變的虛擬內(nèi)存頁的內(nèi)容一致;同時(shí),主用設(shè)備與備用設(shè)備將內(nèi)存頁內(nèi)容寫入到各自的邏輯磁盤卷中,然后釋放I/o緩沖區(qū);重新恢復(fù)所述主用設(shè)備的所述客戶虛擬機(jī)運(yùn)行,所述主用設(shè)備的所述客戶虛擬機(jī)完成本次虛擬內(nèi)存同步中的所包含的I/o讀寫操作,并保證所述主用設(shè)備的磁盤數(shù)據(jù)與所述備用設(shè)備的磁盤數(shù)據(jù)一致。
[0013]所述虛擬內(nèi)存同步的觸發(fā)條件包括:所述主用設(shè)備的所述客戶虛擬機(jī)發(fā)生I/O狀態(tài)變化。
[0014]所述虛擬客戶機(jī)上的存儲(chǔ)I/O操作最大讀寫速度為50MB每秒。
[0015]所述虛擬客戶機(jī)上的網(wǎng)絡(luò)I/O操作最大讀寫速度為5MB每秒。
[0016]當(dāng)所述主用設(shè)備的所述故障管理進(jìn)程檢測(cè)到所述主用設(shè)備發(fā)生故障時(shí),停止所述主用設(shè)備的所述客戶虛擬機(jī)的運(yùn)行,并啟動(dòng)所述備用設(shè)備的客戶虛擬機(jī)運(yùn)行,啟動(dòng)所述備用設(shè)備的同步軟件進(jìn)程以及故障管理進(jìn)程的運(yùn)行,讓所述備用設(shè)備接管所述主用設(shè)備的工作。
[0017]如上所述,本發(fā)明的一種計(jì)算機(jī)容錯(cuò)方法及系統(tǒng),具有以下有益效果:能夠預(yù)防故障停機(jī)風(fēng)險(xiǎn),當(dāng)主用設(shè)備發(fā)生故障時(shí),業(yè)務(wù)將遷移到備用設(shè)備,由于備用設(shè)備的內(nèi)存數(shù)據(jù)在檢查點(diǎn)保持與主用設(shè)備的內(nèi)存數(shù)據(jù)同步,因此操作系統(tǒng)及軟件程序可以連續(xù)運(yùn)行不受影響,業(yè)務(wù)零秒中斷,應(yīng)用連續(xù)不間斷,無任何數(shù)據(jù)丟失,可靠性更高;并且該技術(shù)方案獨(dú)立于操作系統(tǒng)層,應(yīng)用更為廣泛。
【專利附圖】
【附圖說明】
[0018]圖1顯示為本發(fā)明的一種計(jì)算機(jī)容錯(cuò)方法的一實(shí)施例的流程示意圖。
[0019]圖2顯示為本發(fā)明的一種計(jì)算機(jī)容錯(cuò)方法的一實(shí)施例的虛擬內(nèi)存同步執(zhí)行示意圖。
[0020]圖3顯示為本發(fā)明的一種計(jì)算機(jī)容錯(cuò)系統(tǒng)的一實(shí)施例的模塊示意圖。
[0021]圖4顯示為本發(fā)明的一種計(jì)算機(jī)容錯(cuò)系統(tǒng)的一實(shí)施例的結(jié)構(gòu)示意圖。
[0022]元件標(biāo)號(hào)說明
[0023]I計(jì)算機(jī)容錯(cuò)系統(tǒng)
[0024]11主用設(shè)備
[0025]111客戶虛擬機(jī)模塊
[0026]112同步軟件模塊
[0027]113故障管理模塊
[0028]12備用設(shè)備
[0029]121客戶虛擬機(jī)模塊
[0030]122同步軟件模塊
[0031]123故障管理模塊
[0032]SI ?S3 步驟
【具體實(shí)施方式】
[0033]以下通過特定的具體實(shí)例說明本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點(diǎn)與功效。本發(fā)明還可以通過另外不同的【具體實(shí)施方式】加以實(shí)施或應(yīng)用,本說明書中的各項(xiàng)細(xì)節(jié)也可以基于不同觀點(diǎn)與應(yīng)用,在沒有背離本發(fā)明的精神下進(jìn)行各種修飾或改變。
[0034]需要說明的是,本實(shí)施例中所提供的圖示僅以示意方式說明本發(fā)明的基本構(gòu)想,遂圖式中僅顯示與本發(fā)明中有關(guān)的組件而非按照實(shí)際實(shí)施時(shí)的組件數(shù)目、形狀及尺寸繪制,其實(shí)際實(shí)施時(shí)各組件的型態(tài)、數(shù)量及比例可為一種隨意的改變,且其組件布局型態(tài)也可能更為復(fù)雜。
[0035]本發(fā)明提供一種基于虛擬內(nèi)存同步的容錯(cuò)方法,應(yīng)用于包括主用設(shè)備和備用設(shè)備的計(jì)算機(jī)容錯(cuò)系統(tǒng)中,所述主用設(shè)備可以為主服務(wù)器或主機(jī)等,所述備用設(shè)備是和所述主用設(shè)備的軟硬件設(shè)置完全相同的設(shè)備,包括從服務(wù)器、從機(jī)等。所述主用設(shè)備和備用設(shè)備都包括建立在虛擬化內(nèi)核上的客戶虛擬機(jī)。所述主用設(shè)備(主機(jī))和備用設(shè)備(從機(jī))之間通?;谕揭蕴W(wǎng)絡(luò)級(jí)聯(lián)、無透明橋接NTB(None Transparent Bridge)級(jí)聯(lián)或者infiniband網(wǎng)絡(luò)級(jí)聯(lián)方式,從機(jī)節(jié)點(diǎn)也必須依據(jù)足夠的帶寬用于檢測(cè)點(diǎn)(內(nèi)存頁面數(shù)據(jù)同步)的通信需要。在一個(gè)實(shí)施例中,如圖1所示,所述基于虛擬內(nèi)存同步的容錯(cuò)方法包括:
[0036]步驟SI,預(yù)設(shè)虛擬內(nèi)存同步的觸發(fā)條件。所述虛擬內(nèi)存同步的觸發(fā)條件可以包括:所述主機(jī)設(shè)備上的虛擬客戶機(jī)上發(fā)生I/o狀態(tài)變化。I/O狀態(tài)變化不僅包括存儲(chǔ)I/O狀態(tài)或網(wǎng)絡(luò)I/o狀態(tài)變化,而且這個(gè)變化不局限于數(shù)據(jù)變化,包括各種I/O請(qǐng)求變化,各類狀態(tài)變化。在一個(gè)實(shí)施例中,虛擬內(nèi)存同步的觸發(fā)條件是,主用設(shè)備上虛擬客戶機(jī)系統(tǒng)的I/o狀態(tài)變化,包括磁盤、網(wǎng)絡(luò)數(shù)據(jù)變化、資源占用狀態(tài)、時(shí)間狀態(tài)和鏈接狀態(tài)等等。具體地,系統(tǒng)中主用設(shè)備的中央處理器啟動(dòng)同步軟件進(jìn)程,時(shí)刻監(jiān)視所述虛擬客戶機(jī)I/o狀態(tài)變化,每一次變化都會(huì)生成虛擬內(nèi)存同步的觸發(fā)條件并確定檢查點(diǎn)(checkpoint),并執(zhí)行虛擬內(nèi)存頁面同步。
[0037]步驟S2,當(dāng)所述觸發(fā)條件發(fā)生時(shí),完成一次所述主用設(shè)備和所述備用設(shè)備的虛擬內(nèi)存同步。當(dāng)所述觸發(fā)條件發(fā)生時(shí),需要完成一次所述主用設(shè)備和所述備用設(shè)備的虛擬內(nèi)存同步。具體地,當(dāng)所述觸發(fā)條件發(fā)生時(shí),將暫停所述主用設(shè)備的所述客戶虛擬機(jī)運(yùn)行,即保持(Held)主機(jī)為“準(zhǔn)備”的狀態(tài),這種“準(zhǔn)備”狀態(tài)被稱為檢查點(diǎn)(Checkpoint)或檢測(cè)點(diǎn)。一次觸發(fā)條件發(fā)生到下一個(gè)觸發(fā)條件發(fā)生的時(shí)間間隔,即一個(gè)檢查點(diǎn)到另一個(gè)檢查點(diǎn)的時(shí)間,可稱為檢查點(diǎn)周期。在一個(gè)實(shí)施例中,確定從上一次所述觸發(fā)條件發(fā)生到當(dāng)前所述觸發(fā)條件發(fā)生時(shí)客戶虛擬機(jī)中頁面內(nèi)容發(fā)生改變的虛擬內(nèi)存頁,并將所有的所確定的虛擬內(nèi)存頁的內(nèi)容傳輸?shù)剿鰝溆迷O(shè)備,使得所述備用設(shè)備中所述客戶虛擬機(jī)的虛擬內(nèi)存頁的內(nèi)容與所述主用設(shè)備中所確定的虛擬內(nèi)存頁的內(nèi)容一致。具體地,主用設(shè)備將記錄在一個(gè)檢查點(diǎn)周期內(nèi)發(fā)生的虛擬內(nèi)存頁面修改情況,在進(jìn)行與備用設(shè)備的虛擬內(nèi)存同步時(shí),只對(duì)所述發(fā)送修改的虛擬內(nèi)存頁面進(jìn)行同步,以實(shí)現(xiàn)所述備用設(shè)備的客戶虛擬機(jī)的頁面內(nèi)容與所述主用設(shè)備的客戶虛擬機(jī)的頁面內(nèi)容完全一致。該方法為通常在虛擬內(nèi)存同步中采用的方法。在另一個(gè)實(shí)施例中,在進(jìn)行與備用設(shè)備的虛擬內(nèi)存同步時(shí),將主用設(shè)備中所述客戶虛擬機(jī)的所有的虛擬內(nèi)存頁的內(nèi)容傳輸?shù)剿鰝溆迷O(shè)備中,使得所述備用設(shè)備中所述客戶虛擬機(jī)中所有的虛擬內(nèi)存頁與所述主用設(shè)備中所述客戶虛擬機(jī)的相應(yīng)的虛擬內(nèi)存頁一致。即對(duì)所述主用設(shè)備中的所有虛擬內(nèi)存頁面進(jìn)行同步,以實(shí)現(xiàn)所述備用設(shè)備的客戶虛擬機(jī)的頁面內(nèi)容與所述主用設(shè)備的客戶虛擬機(jī)的頁面內(nèi)容完全一致。同時(shí),主用設(shè)備與備用設(shè)備將內(nèi)存頁內(nèi)容以Block (數(shù)據(jù)塊)形式寫入到各自的邏輯磁盤卷中,基于磁盤扇區(qū)bitmap索引實(shí)現(xiàn)增量同步,此時(shí),所述備用設(shè)備的中央處理器反饋一個(gè)ACK信號(hào)給所述主用設(shè)備的中央處理器(CPU),磁盤同步完成并確認(rèn)數(shù)據(jù)一致。然后中央處理器釋放I/O緩沖區(qū)。重新恢復(fù)所述主用設(shè)備所述客戶虛擬機(jī)運(yùn)行,所述客戶虛擬機(jī)完成本次虛擬內(nèi)存同步中的所包含的I/O讀寫操作,并保證所述主用設(shè)備的磁盤數(shù)據(jù)與所述備用設(shè)備的磁盤數(shù)據(jù)一致。并保證所述主用設(shè)備的磁盤數(shù)據(jù)與所述備用設(shè)備的磁盤數(shù)據(jù)一致。
[0038]圍繞一個(gè)I/O狀態(tài)變化生成一個(gè)檢查點(diǎn),并進(jìn)行虛擬內(nèi)存頁同步,主用設(shè)備上的虛擬客戶機(jī)系統(tǒng)對(duì)磁盤與網(wǎng)絡(luò)的管理依托“I/o緩沖區(qū)”,每一個(gè)檢查點(diǎn)周期內(nèi)同步結(jié)束后,I/o新請(qǐng)求才得以釋放,并準(zhǔn)備執(zhí)行下一個(gè)檢查點(diǎn)周期。單位時(shí)間內(nèi)檢查點(diǎn)發(fā)生的次數(shù)被稱為檢查點(diǎn)率,單位可以包括“每秒周期”。計(jì)算機(jī)系統(tǒng)中應(yīng)用負(fù)載的特性決定了檢查點(diǎn)的周期頻率。檢查點(diǎn)周期內(nèi)收集有多少內(nèi)存頁面已被修改,主要取決于主用設(shè)備虛擬客戶機(jī)系統(tǒng)I/o狀態(tài)改變的頻率。每秒減少檢查點(diǎn)的周期,客戶操作系統(tǒng)有更大的潛力來做大量地運(yùn)算。較高的檢查點(diǎn)率,代表可衡量的資源占用。通常小于200周期每秒意味著系統(tǒng)并不繁忙。檢查點(diǎn)的周期會(huì)占用物理機(jī)內(nèi)存資源和同步網(wǎng)絡(luò)帶寬。較高的檢查點(diǎn)率,將導(dǎo)致在I/o緩沖區(qū)的釋放周期與I/O網(wǎng)絡(luò)延遲都會(huì)更小。隨著I/O狀態(tài)改變(如網(wǎng)絡(luò)活動(dòng))的增力口,更頻繁的檢查點(diǎn)周期與所產(chǎn)生到的延遲減小。不同的業(yè)務(wù)類型通常具有不同的內(nèi)存同步頻率,如:計(jì)算探測(cè)業(yè)務(wù)為每秒1-10次;內(nèi)存探測(cè)業(yè)務(wù)為每秒10-50次;文件復(fù)制業(yè)務(wù)為每秒5-20次;SQL查詢業(yè)務(wù)為每秒10-30次;網(wǎng)絡(luò)文件傳輸業(yè)務(wù)為每秒50-200次;SQL交易中度業(yè)務(wù)每秒50-500次;SQL交易頻繁業(yè)務(wù)為每秒500-1500次。為保障客戶應(yīng)用的實(shí)效性,虛擬I/O請(qǐng)求響應(yīng)包括磁盤和網(wǎng)絡(luò)均采用流量控制措施。在一個(gè)實(shí)施例中,對(duì)于網(wǎng)絡(luò)(每個(gè)虛擬網(wǎng)卡)為每秒最大5MB文件傳輸帶寬,對(duì)于磁盤,最大每秒50MB文件讀寫。
[0039]在一個(gè)實(shí)施例中,如圖2所示,主用設(shè)備的I/O狀態(tài)包括存儲(chǔ)和網(wǎng)絡(luò)I/O狀態(tài)都被關(guān)聯(lián)至內(nèi)存同步進(jìn)程中,網(wǎng)絡(luò)狀態(tài)被保持(Hold)在活躍的主機(jī)節(jié)點(diǎn)I/O緩沖區(qū)中,存儲(chǔ)讀寫狀態(tài)在主節(jié)點(diǎn)上執(zhí)行,但是存儲(chǔ)寫狀態(tài)在從節(jié)點(diǎn)上被保持(Hold)在I/O緩沖區(qū)中。每次I/O狀態(tài)變化都會(huì)被監(jiān)視,確定其類型及判斷是否需要觸發(fā)檢查點(diǎn),是否需要內(nèi)存頁面同步。如果需要,正在主機(jī)節(jié)點(diǎn)中運(yùn)行中的客戶虛擬機(jī)系統(tǒng)被停止,并且從上一次檢查點(diǎn)之后到此檢查點(diǎn)周期內(nèi)的內(nèi)存頁面修改內(nèi)容進(jìn)行收集并傳送到備用節(jié)點(diǎn)上的內(nèi)存同步進(jìn)程中。一旦從主機(jī)節(jié)點(diǎn)捕獲到內(nèi)存頁面修改內(nèi)容,客戶虛擬機(jī)系統(tǒng)VM將再次繼續(xù)運(yùn)行…從主機(jī)節(jié)點(diǎn)上運(yùn)行的內(nèi)存同步進(jìn)程,會(huì)將修改過的頁面內(nèi)容映射到本地內(nèi)存中,并觸發(fā)一組執(zhí)行請(qǐng)求,分別釋放主機(jī)節(jié)點(diǎn)I/O緩沖區(qū)中的網(wǎng)絡(luò)傳輸請(qǐng)求和從主機(jī)節(jié)點(diǎn)I/O緩沖區(qū)中的磁盤寫請(qǐng)求。特別需要注意的是磁盤寫請(qǐng)求僅被保持(Hold)在從主機(jī)節(jié)點(diǎn)上,因此從主機(jī)磁盤內(nèi)容代表“執(zhí)行檢查點(diǎn)前”的鏡像數(shù)據(jù),如果檢查點(diǎn)完成之前主機(jī)節(jié)點(diǎn)發(fā)生宕機(jī),從機(jī)節(jié)點(diǎn)保存的是上一個(gè)檢查點(diǎn)完成的數(shù)據(jù),并重新生成I/O傳輸請(qǐng)求。在恢復(fù)過程中,會(huì)通過磁盤鏡像方式保障兩側(cè)數(shù)據(jù)的一致性。這種做法,可以避免故障轉(zhuǎn)移期間磁盤數(shù)據(jù)重復(fù)寫入。
[0040]在一個(gè)實(shí)施例中,所述基于虛擬內(nèi)存同步的容錯(cuò)方法還包括:
[0041]步驟S3,當(dāng)所述主用設(shè)備發(fā)生故障時(shí),停止所述主用設(shè)備的所述客戶虛擬機(jī)的運(yùn)行,并啟動(dòng)所述備用設(shè)備的客戶虛擬機(jī)的運(yùn)行,讓所述備用設(shè)備接管所述主用設(shè)備的工作。具體地,當(dāng)所述故障管理模塊檢測(cè)到所述主用設(shè)備發(fā)生故障時(shí),停止所述主用設(shè)備的所述客戶虛擬機(jī)的運(yùn)行,并啟動(dòng)所述備用設(shè)備的客戶虛擬機(jī)的運(yùn)行及I/o對(duì)外通信,接受客戶端訪問管理運(yùn)行;完成一次對(duì)所述虛擬客戶機(jī)訪問控制的轉(zhuǎn)移。在一個(gè)實(shí)施例中,虛擬機(jī)客戶機(jī)內(nèi)存遷移過程中不會(huì)使用I/o緩沖區(qū),一次成功的內(nèi)存遷移結(jié)束后,會(huì)有一個(gè)短暫網(wǎng)絡(luò)請(qǐng)求停頓,客戶虛擬機(jī)在原備用節(jié)點(diǎn)上運(yùn)行并確認(rèn)檢查點(diǎn)周期,然而這個(gè)網(wǎng)絡(luò)請(qǐng)求停頓周期小于I毫秒,對(duì)于業(yè)務(wù)網(wǎng)絡(luò)傳輸來說可以忽略不計(jì)的,以太網(wǎng)鏈接狀態(tài)和TCP數(shù)據(jù)傳輸不受任何影響。因此兌現(xiàn)了任意主機(jī)故障發(fā)生時(shí),業(yè)務(wù)切換零秒中斷。此時(shí),由于主用設(shè)備(主機(jī))節(jié)點(diǎn)發(fā)生故障,虛擬內(nèi)存同步進(jìn)程停止運(yùn)行,客戶虛擬機(jī)已不再容錯(cuò)運(yùn)行,它被稱為“降級(jí)”狀態(tài),工作狀態(tài)為單工模式。磁盤1/0(寫入)復(fù)制停止。
[0042]在客戶虛擬機(jī)的虛擬內(nèi)存同步過程中,客戶虛擬機(jī)的活動(dòng)狀態(tài)包括以下幾種:1,開機(jī)/啟動(dòng)狀態(tài):啟動(dòng)客戶虛擬機(jī)系統(tǒng)后一段時(shí)間,一旦網(wǎng)絡(luò)通信通順,狀態(tài)可以轉(zhuǎn)換到“運(yùn)行”。這個(gè)狀態(tài)之前的過程,稱為“啟動(dòng)”。2,正在停止/停止?fàn)顟B(tài):關(guān)閉請(qǐng)求已發(fā)送到客戶虛擬機(jī)操作系統(tǒng)。直到虛擬機(jī)斷開連接內(nèi)部總線,它表示在一個(gè)“正在停止”狀態(tài)。之后,定義為停止?fàn)顟B(tài)。3,正在運(yùn)行狀態(tài):當(dāng)可以確認(rèn)客戶虛擬機(jī)的網(wǎng)絡(luò)通信和磁盤讀寫狀態(tài)成立,該狀態(tài)被表示為“正在運(yùn)行”。4,遷移狀態(tài):當(dāng)一個(gè)客戶虛擬機(jī)訪問權(quán)限在主用設(shè)備節(jié)點(diǎn)到備用設(shè)備節(jié)點(diǎn)間遷移(直到它已成功轉(zhuǎn)移至從節(jié)點(diǎn)上運(yùn)行)的狀態(tài),定義為“遷移”。
[0043]本發(fā)明還提供一種計(jì)算機(jī)容錯(cuò)系統(tǒng)。在一個(gè)實(shí)施例中,如圖3所示,計(jì)算機(jī)容錯(cuò)系統(tǒng)I包括主用設(shè)備11與備用設(shè)備12。所述主用設(shè)備11可以為主服務(wù)器或主機(jī)等,所述備用設(shè)備12是和所述主用設(shè)備11的軟硬件設(shè)置完全相同的設(shè)備,包括從服務(wù)器、從機(jī)等。所述主用設(shè)備11和備用設(shè)備12都包括建立在虛擬化內(nèi)核上的客戶虛擬機(jī)。所述主用設(shè)備(主機(jī)、主服務(wù)器、主機(jī)節(jié)點(diǎn)等)11和備用設(shè)備(從機(jī)、從服務(wù)器、從機(jī)節(jié)點(diǎn)等)12之間通?;谕揭蕴W(wǎng)絡(luò)級(jí)聯(lián)、無透明橋接NTB (None Transparent Bridge)級(jí)聯(lián)或者infiniband網(wǎng)絡(luò)級(jí)聯(lián)方式,從機(jī)節(jié)點(diǎn)也必須依據(jù)足夠的帶寬用于檢測(cè)點(diǎn)(內(nèi)存頁面數(shù)據(jù)同步)的通信需要。
[0044]所述主用設(shè)備11包括客戶虛擬機(jī)模塊111、同步軟件模塊112以及故障管理模塊113 ;所述備用設(shè)備12包括客戶虛擬機(jī)模塊121、同步軟件模塊122以及故障管理模塊123。所述計(jì)算機(jī)容錯(cuò)系統(tǒng)I運(yùn)行時(shí),所述主用設(shè)備11與所述備用設(shè)備12的同步軟件模塊(112和122)、故障管理模塊(113和123)、客戶虛擬機(jī)模塊(111和112)都運(yùn)行在虛擬化內(nèi)核上,分別對(duì)應(yīng)所述虛擬化內(nèi)核上的同步軟件進(jìn)程、故障管理進(jìn)程、客戶虛擬機(jī)。即所述主用設(shè)備11的同步軟件模塊(112)、故障管理模塊(113)、客戶虛擬機(jī)模塊(111)都運(yùn)行在所述主用設(shè)備11的虛擬化內(nèi)核上,分別對(duì)應(yīng)主用設(shè)備11的所述虛擬化內(nèi)核上的同步軟件進(jìn)程(112)、故障管理進(jìn)程(113)、客戶虛擬機(jī)(111)。所述備用設(shè)備12的同步軟件模塊(122)、故障管理模塊(123)、客戶虛擬機(jī)模塊(112)都運(yùn)行在所述備用設(shè)備12的虛擬化內(nèi)核上,分別對(duì)應(yīng)備用設(shè)備12的所述虛擬化內(nèi)核上的同步軟件進(jìn)程(122)、故障管理進(jìn)程(123)、客戶虛擬機(jī)(121)。
[0045]所述客戶虛擬機(jī)(111和121)用于實(shí)現(xiàn)應(yīng)用程序的運(yùn)行。其中,主用設(shè)備11的所述客戶虛擬機(jī)111處于運(yùn)行狀態(tài),所述備用設(shè)備12的所述客戶虛擬機(jī)121處于停止?fàn)顟B(tài)。
[0046]所述同步軟件模塊或同步軟件進(jìn)程(112和122)用于預(yù)設(shè)虛擬內(nèi)存同步的觸發(fā)條件,當(dāng)所述觸發(fā)條件發(fā)生時(shí),實(shí)現(xiàn)主用設(shè)備11與所述備用設(shè)備12之間的虛擬內(nèi)存同步。所述虛擬內(nèi)存同步的觸發(fā)條件可以包括:主用設(shè)備上虛擬客戶機(jī)系統(tǒng)的I/O狀態(tài)變化。具體地,I/O狀態(tài)變化不僅包括存儲(chǔ)I/O狀態(tài)或網(wǎng)絡(luò)I/O狀態(tài)變化,而且這個(gè)變化不局限于數(shù)據(jù)變化,包括各種I/o請(qǐng)求變化,各類狀態(tài)變化。系統(tǒng)中主用設(shè)備11的每次I/O狀態(tài)變化都會(huì)被監(jiān)視,確定其類型及判斷是否需要觸發(fā)檢查點(diǎn),是否需要內(nèi)存頁面同步。在一個(gè)實(shí)施例中,主從設(shè)備之間虛擬內(nèi)存同步的觸發(fā)條件是,主用設(shè)備上虛擬客戶機(jī)系統(tǒng)的I/o狀態(tài)變化,包括磁盤、網(wǎng)絡(luò)數(shù)據(jù)變化、資源占用狀態(tài)、時(shí)間狀態(tài)和鏈接狀態(tài)等等。
[0047]所述主用設(shè)備11與所述備用設(shè)備12之間虛擬內(nèi)存同步的實(shí)現(xiàn)方法包括:停止所述主用設(shè)備11的所述客戶虛擬機(jī)111,確定從上一次所述觸發(fā)條件發(fā)生到當(dāng)前所述觸發(fā)條件發(fā)生時(shí)客戶虛擬機(jī)111中頁面內(nèi)容發(fā)生改變的虛擬內(nèi)存頁,并對(duì)所述頁面內(nèi)容發(fā)生改變的虛擬內(nèi)存頁進(jìn)行同步,使得所述備用設(shè)備12中所述客戶虛擬機(jī)121的相應(yīng)的虛擬內(nèi)存頁的內(nèi)容與所述主用設(shè)備11中所述頁面內(nèi)容發(fā)生改變的虛擬內(nèi)存頁的內(nèi)容一致;重新啟動(dòng)所述客戶虛擬機(jī)111運(yùn)行,所述客戶虛擬機(jī)111完成本次虛擬內(nèi)存同步中的所包含的I/o操作,并以磁盤鏡像方式保證所述主用設(shè)備11的磁盤數(shù)據(jù)與所述備用設(shè)備12的磁盤數(shù)據(jù)—致。
[0048]所述觸發(fā)條件發(fā)生時(shí),將停止所述主用設(shè)備11的所述客戶虛擬機(jī)111,即保持(Held)主機(jī)為“準(zhǔn)備”的狀態(tài),這種“準(zhǔn)備”狀態(tài)被稱為檢查點(diǎn)(Checkpoint)或檢測(cè)點(diǎn)。一次觸發(fā)條件發(fā)生到下一個(gè)觸發(fā)條件發(fā)生的時(shí)間間隔,即一個(gè)檢查點(diǎn)到另一個(gè)檢查點(diǎn)的時(shí)間,可稱為檢查點(diǎn)周期。在一個(gè)實(shí)施例中,確定從上一次所述觸發(fā)條件發(fā)生到當(dāng)前所述觸發(fā)條件發(fā)生時(shí)客戶虛擬機(jī)111中頁面內(nèi)容發(fā)生改變的虛擬內(nèi)存頁,并將所有的所確定的虛擬內(nèi)存頁的內(nèi)容傳輸?shù)剿鰝溆迷O(shè)備12,使得所述備用設(shè)備12中所述客戶虛擬機(jī)121的與所述所確定的虛擬內(nèi)存頁相應(yīng)的虛擬內(nèi)存頁的內(nèi)容與所述主用設(shè)備11中所確定的虛擬內(nèi)存頁的內(nèi)容一致。具體地,主用設(shè)備11將記錄在一個(gè)檢查點(diǎn)周期內(nèi)發(fā)生的虛擬內(nèi)存頁面修改情況,在進(jìn)行與備用設(shè)備12的虛擬內(nèi)存同步時(shí),只對(duì)所述發(fā)送修改的虛擬內(nèi)存頁面進(jìn)行同步,以實(shí)現(xiàn)所述備用設(shè)備12的客戶虛擬機(jī)121的頁面內(nèi)容與所述主用設(shè)備11的客戶虛擬機(jī)111的頁面內(nèi)容完全一致。該方法為通常在虛擬內(nèi)存同步中采用的方法。在另一個(gè)實(shí)施例中,在進(jìn)行與備用設(shè)備12的虛擬內(nèi)存同步時(shí),將主用設(shè)備11中所述客戶虛擬機(jī)111的所有的虛擬內(nèi)存頁的內(nèi)容傳輸?shù)剿鰝溆迷O(shè)備12中,使得所述備用設(shè)備12中所述客戶虛擬機(jī)121中所有的虛擬內(nèi)存頁與所述主用設(shè)備11中所述客戶虛擬機(jī)111的相應(yīng)的虛擬內(nèi)存頁一致。即對(duì)所述主用設(shè)備11中的所有虛擬內(nèi)存頁面進(jìn)行同步,以實(shí)現(xiàn)所述備用設(shè)備12的客戶虛擬機(jī)121的頁面內(nèi)容與所述主用設(shè)備11的客戶虛擬機(jī)111的頁面內(nèi)容完全一致。接著,將重新啟動(dòng)所述主用設(shè)備11的所述客戶虛擬機(jī)111運(yùn)行,所述主用設(shè)備11的所述客戶虛擬機(jī)111完成本次虛擬內(nèi)存同步中的所包含的I/o操作,并保證所述主用設(shè)備11的磁盤數(shù)據(jù)與所述備用設(shè)備12的磁盤數(shù)據(jù)一致。
[0049]業(yè)務(wù)網(wǎng)絡(luò)傳輸必須圍繞一個(gè)檢查點(diǎn)進(jìn)行同步,網(wǎng)絡(luò)傳輸依托“I/O緩沖區(qū)”,每一個(gè)檢查點(diǎn)周期內(nèi)同步結(jié)束后,I/o新請(qǐng)求才得以釋放,并準(zhǔn)備執(zhí)行下一個(gè)檢查點(diǎn)周期。單位時(shí)間內(nèi)檢查點(diǎn)發(fā)生的次數(shù)被稱為檢查點(diǎn)率,單位可以包括“每秒周期”。計(jì)算機(jī)系統(tǒng)中應(yīng)用負(fù)載的特性決定了檢查點(diǎn)的周期頻率。檢查點(diǎn)周期內(nèi)收集有多少內(nèi)存頁面已被修改,主要取決于網(wǎng)絡(luò)1/0(發(fā)送)速率。每秒減少檢查點(diǎn)的周期,客戶操作系統(tǒng)有更大的潛力來做大量地運(yùn)算。較高的檢查點(diǎn)率,代表可衡量的資源占用。通常小于200周期每秒意味著系統(tǒng)并不繁忙。檢查點(diǎn)的周期會(huì)占用物理機(jī)內(nèi)存資源和同步網(wǎng)絡(luò)帶寬。較高的檢查點(diǎn)率,將導(dǎo)致在I/O緩沖區(qū)的釋放周期與I/O網(wǎng)絡(luò)延遲都會(huì)更小。隨著網(wǎng)絡(luò)活動(dòng)的增加,更頻繁的檢查點(diǎn)周期與所產(chǎn)生到的延遲減小。為保障客戶應(yīng)用的實(shí)效性,虛擬I/o請(qǐng)求響應(yīng)包括磁盤和網(wǎng)絡(luò)均采用流量控制措施。在一個(gè)實(shí)施例中,對(duì)于網(wǎng)絡(luò)(每個(gè)虛擬網(wǎng)卡)為每秒最大5MB文件傳輸帶寬,對(duì)于磁盤,最大每秒50MB文件讀寫。
[0050]在一個(gè)實(shí)施例中,主用設(shè)備11 (包括主機(jī)或主服務(wù)器等)為主機(jī)節(jié)點(diǎn)。主機(jī)節(jié)點(diǎn)的存儲(chǔ)和網(wǎng)絡(luò)I/O操作都被關(guān)聯(lián)到內(nèi)存同步進(jìn)程中,網(wǎng)絡(luò)狀態(tài)被保持(Hold)在活躍的主機(jī)節(jié)點(diǎn)I/O緩沖區(qū)中,存儲(chǔ)讀寫狀態(tài)在主節(jié)點(diǎn)上執(zhí)行,但是存儲(chǔ)寫狀態(tài)在從節(jié)點(diǎn)上被保持(Hold)在I/O緩沖區(qū)中。每次網(wǎng)絡(luò)傳輸請(qǐng)求都會(huì)被監(jiān)視,確定其類型及判斷是否需要觸發(fā)檢查點(diǎn),是否需要內(nèi)存頁面同步。如果需要,正在主機(jī)節(jié)點(diǎn)中運(yùn)行中的客戶虛擬機(jī)系統(tǒng)111被停止,并且從上一次檢查點(diǎn)之后到此檢查點(diǎn)周期內(nèi)的內(nèi)存頁面修改內(nèi)容進(jìn)行收集并傳送到備用節(jié)點(diǎn)上的內(nèi)存同步進(jìn)程中。一旦從主機(jī)節(jié)點(diǎn)捕獲到內(nèi)存頁面修改內(nèi)容,客戶虛擬機(jī)系統(tǒng)VM將再次繼續(xù)運(yùn)行…從主機(jī)節(jié)點(diǎn)上運(yùn)行的內(nèi)存同步進(jìn)程,會(huì)將修改過的頁面內(nèi)容映射到本地內(nèi)存中,并觸發(fā)一組執(zhí)行請(qǐng)求,分別釋放主機(jī)節(jié)點(diǎn)I/O緩沖區(qū)中的網(wǎng)絡(luò)傳輸請(qǐng)求和從主機(jī)節(jié)點(diǎn)I/O緩沖區(qū)中的磁盤寫請(qǐng)求。特別需要注意的是磁盤寫請(qǐng)求僅被保持(Hold)在從主機(jī)節(jié)點(diǎn)上,因此從主機(jī)磁盤內(nèi)容代表“執(zhí)行檢查點(diǎn)前”的鏡像數(shù)據(jù),如果檢查點(diǎn)完成之前主機(jī)節(jié)點(diǎn)發(fā)生宕機(jī),從機(jī)節(jié)點(diǎn)保存的是上一個(gè)檢查點(diǎn)完成的數(shù)據(jù),并重新生成I/O傳輸請(qǐng)求。在恢復(fù)過程中,會(huì)通過磁盤鏡像方式保障兩側(cè)數(shù)據(jù)的一致性。
[0051]所述故障管理模塊或故障管理進(jìn)程(113和123)用于實(shí)現(xiàn)對(duì)所述主用設(shè)備硬件、所述客戶虛擬機(jī)(111和121)以及所述同步軟件模塊(112和122)的管理與故障恢復(fù)。具體地,當(dāng)所述故障管理模塊檢測(cè)到所述主用設(shè)備發(fā)生故障時(shí),停止所述主用設(shè)備的所述客戶虛擬機(jī)的運(yùn)行,并啟動(dòng)所述備用設(shè)備的客戶虛擬機(jī)的運(yùn)行。進(jìn)一步地,當(dāng)所述故障管理模塊檢測(cè)到所述主用設(shè)備發(fā)生故障時(shí),停止所述主用設(shè)備的所述客戶虛擬機(jī)的運(yùn)行,并啟動(dòng)所述備用設(shè)備的客戶虛擬機(jī)的運(yùn)行及I/o對(duì)外通信,接受客戶端訪問管理運(yùn)行;完成一次對(duì)所述虛擬客戶機(jī)訪問控制的轉(zhuǎn)移。
[0052]在一個(gè)實(shí)施例中,如圖4所示,圖中的故障檢測(cè)(即故障管理模塊113和123)通過私有網(wǎng)絡(luò)相連,網(wǎng)絡(luò)控制模塊負(fù)責(zé)內(nèi)存同步進(jìn)程(內(nèi)存同步模塊112和122實(shí)現(xiàn))執(zhí)行主用設(shè)備11和備用設(shè)備12之間的虛擬內(nèi)存同步的數(shù)據(jù)傳輸。當(dāng)主用設(shè)備11發(fā)生故障時(shí),將實(shí)現(xiàn)虛擬客戶機(jī)的遷移,即從主用設(shè)備11的虛擬客戶機(jī)111運(yùn)行遷移到備用設(shè)備12的虛擬客戶機(jī)121上運(yùn)行。虛擬客戶機(jī)內(nèi)存遷移過程中(從虛擬客戶機(jī)111遷移到虛擬客戶機(jī)121運(yùn)行)不會(huì)使用I/O緩沖區(qū)。此時(shí),備用設(shè)備12將變成主用設(shè)備11運(yùn)行虛擬客戶機(jī)(121變成111),原來的主用設(shè)備將停止使用。一次成功的內(nèi)存遷移結(jié)束后,會(huì)有一個(gè)短暫網(wǎng)絡(luò)請(qǐng)求停頓,客戶虛擬機(jī)111在原備用節(jié)點(diǎn)上運(yùn)行并確認(rèn)檢查點(diǎn)周期,然而這個(gè)網(wǎng)絡(luò)請(qǐng)求停頓周期小于I毫秒,對(duì)于業(yè)務(wù)網(wǎng)絡(luò)傳輸來說可以忽略不計(jì)的,以太網(wǎng)鏈接狀態(tài)和TCP數(shù)據(jù)傳輸不受任何影響。因此兌現(xiàn)了任意主機(jī)故障發(fā)生時(shí),業(yè)務(wù)切換零秒中斷。此時(shí),如果主用設(shè)備(主機(jī))節(jié)點(diǎn)發(fā)生宕機(jī)故障,虛擬內(nèi)存同步進(jìn)程停止運(yùn)行,客戶虛擬機(jī)111已不再容錯(cuò)運(yùn)行,它被稱為“降級(jí)”狀態(tài),工作狀態(tài)為單工模式。只會(huì)運(yùn)行在單一主用設(shè)備上,磁盤I/o復(fù)制進(jìn)程停止運(yùn)行。更重要的是,如果原來主用設(shè)備(主機(jī))11節(jié)點(diǎn)故障,但非停機(jī)狀態(tài),如網(wǎng)絡(luò)中斷,風(fēng)扇故障等,虛擬客戶機(jī)雖然發(fā)生遷移,即從主用設(shè)備11的虛擬客戶機(jī)111運(yùn)行遷移到備用設(shè)備12的虛擬客戶機(jī)121上運(yùn)行。但是虛擬內(nèi)存同步進(jìn)程依舊正常運(yùn)行,磁盤同步也正常進(jìn)行。只是原備用設(shè)備12將變成主用設(shè)備11,虛擬客戶機(jī)執(zhí)行了遷移(121變成111)。此時(shí)虛擬客戶機(jī)111處于部分單元的容錯(cuò)狀態(tài),它也被稱為“降級(jí)”狀態(tài),工作狀態(tài)為非完全容錯(cuò)模式。正是因?yàn)檫@個(gè)特征優(yōu)勢(shì),可以實(shí)現(xiàn)所述主用設(shè)備與所述備用設(shè)備的故障交叉出現(xiàn),或稱為交叉配合工作,比如,所述主用設(shè)備網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送故障,所述備用設(shè)備磁盤節(jié)點(diǎn)發(fā)生故障,所述虛擬客戶機(jī)依舊正常運(yùn)行。
[0053]在一個(gè)實(shí)施例中,計(jì)算機(jī)容錯(cuò)系統(tǒng)將兩臺(tái)配置相同的服務(wù)器I號(hào)網(wǎng)口(NIC I)對(duì)連(一臺(tái)為主機(jī),一臺(tái)為從機(jī)),采用超五類雙絞線。將集成的雙萬兆網(wǎng)口對(duì)聯(lián),采用多模光纖跳線LC接頭。采用的是KVM虛擬化內(nèi)核,安裝開源宿主系統(tǒng)Cent OS Linux6.5或以上版本,安裝KVM虛擬機(jī)組件并啟用。應(yīng)用程序APP或數(shù)據(jù)庫等在虛擬客戶機(jī)(121變成111)上運(yùn)行,同步軟件模塊(112和122)包括提供內(nèi)存同步和選擇仲裁服務(wù),避免同步鏈接中斷時(shí)系統(tǒng)發(fā)生“腦裂”現(xiàn)象。故障管理模塊(113和123)創(chuàng)建了一個(gè)DomainO虛擬主機(jī),可以選擇Cent OS或者其他主流品牌的Linux系統(tǒng);并采用了 Apache tomcat Server來自定義開發(fā)用戶界面Π (User interface) 0故障管理模塊(113和123)導(dǎo)入服務(wù)器主板IPMI數(shù)據(jù)包,能夠?qū)崿F(xiàn)對(duì)整個(gè)容錯(cuò)系統(tǒng)的瀏覽器方式維護(hù),維護(hù)對(duì)象包括主機(jī)硬件,客戶虛擬機(jī)及同步運(yùn)行狀態(tài),具備資源配置和故障處理功能。
[0054]綜上所述,本發(fā)明一種計(jì)算機(jī)容錯(cuò)方法及系統(tǒng),具有以下有益效果:能夠預(yù)防故障停機(jī)風(fēng)險(xiǎn),當(dāng)主用設(shè)備發(fā)生故障時(shí),業(yè)務(wù)將遷移到備用設(shè)備,由于備用設(shè)備的內(nèi)存數(shù)據(jù)在檢查點(diǎn)保持與主用設(shè)備的內(nèi)存數(shù)據(jù)同步,因此操作系統(tǒng)及軟件程序可以連續(xù)運(yùn)行不受影響,業(yè)務(wù)零秒遷移,應(yīng)用連續(xù)不間斷,無任何數(shù)據(jù)丟失,可靠性更高;并且該技術(shù)方案獨(dú)立于操作系統(tǒng)層,應(yīng)用更為廣泛。所以,本發(fā)明有效克服了現(xiàn)有技術(shù)中的種種缺點(diǎn)而具高度產(chǎn)業(yè)利用價(jià)值。
[0055]上述實(shí)施例僅例示性說明本發(fā)明的原理及其功效,而非用于限制本發(fā)明。任何熟悉此技術(shù)的人士皆可在不違背本發(fā)明的精神及范疇下,對(duì)上述實(shí)施例進(jìn)行修飾或改變。因此,舉凡所屬【技術(shù)領(lǐng)域】中具有通常知識(shí)者在未脫離本發(fā)明所揭示的精神與技術(shù)思想下所完成的一切等效修飾或改變,仍應(yīng)由本發(fā)明的權(quán)利要求所涵蓋。
【權(quán)利要求】
1.一種計(jì)算機(jī)容錯(cuò)方法,應(yīng)用于包括主用設(shè)備和備用設(shè)備的計(jì)算機(jī)容錯(cuò)系統(tǒng)中,其特征在于,所述主用設(shè)備和備用設(shè)備都包括建立在虛擬化內(nèi)核上的客戶虛擬機(jī),所述計(jì)算機(jī)容錯(cuò)方法包括: 預(yù)設(shè)虛擬內(nèi)存同步的觸發(fā)條件; 當(dāng)所述觸發(fā)條件發(fā)生時(shí),完成一次所述主用設(shè)備和所述備用設(shè)備的虛擬內(nèi)存同步。
2.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)容錯(cuò)方法,其特征在于:所述計(jì)算機(jī)容錯(cuò)方法還包括:當(dāng)所述主用設(shè)備發(fā)生故障時(shí),停止所述主用設(shè)備的所述客戶虛擬機(jī)的運(yùn)行,并啟動(dòng)所述備用設(shè)備的客戶虛擬機(jī)的運(yùn)行,讓所述備用設(shè)備接管所述主用設(shè)備的工作。
3.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)容錯(cuò)方法,其特征在于:所述完成一次所述主用設(shè)備和所述備用設(shè)備的虛擬內(nèi)存同步包括:暫停所述主用設(shè)備的所述客戶虛擬機(jī)的運(yùn)行,實(shí)現(xiàn)所述備用設(shè)備的客戶虛擬機(jī)的內(nèi)存頁面內(nèi)容與所述主用設(shè)備的客戶虛擬機(jī)的內(nèi)存頁面內(nèi)容完全一致;重新啟動(dòng)所述主用設(shè)備的所述客戶虛擬機(jī)運(yùn)行,所述主用設(shè)備的所述客戶虛擬機(jī)完成本次虛擬內(nèi)存同步中的所包含的I/o操作,并保證所述主用設(shè)備的磁盤數(shù)據(jù)與所述備用設(shè)備的磁盤數(shù)據(jù)完全一致。
4.根據(jù)權(quán)利要求3所述的計(jì)算機(jī)容錯(cuò)方法,其特征在于:所述實(shí)現(xiàn)所述備用設(shè)備的客戶虛擬機(jī)的頁面內(nèi)容與所述主用設(shè)備的客戶虛擬機(jī)的頁面內(nèi)容完全一致包括:確定從上一次所述觸發(fā)條件發(fā)生到當(dāng)前所述觸發(fā)條件發(fā)生時(shí)客戶虛擬機(jī)中頁面內(nèi)容發(fā)生改變的虛擬內(nèi)存頁,并將所有的所確定的虛擬內(nèi)存頁的內(nèi)容傳輸?shù)剿鰝溆迷O(shè)備,使得所述備用設(shè)備中所述客戶虛擬機(jī)的與所述所確定的虛擬內(nèi)存頁相應(yīng)的虛擬內(nèi)存頁的內(nèi)容與所述主用設(shè)備中所確定的虛擬內(nèi)存頁的內(nèi)容一致。
5.根據(jù)權(quán)利要求1所述的計(jì)算機(jī)容錯(cuò)方法,其特征在于:所述虛擬內(nèi)存同步的觸發(fā)條件包括:所述主用設(shè)備的所述虛擬客戶機(jī)上發(fā)生I/o狀態(tài)變化。
6.一種計(jì)算機(jī)容錯(cuò)系統(tǒng),包括主用設(shè)備與備用設(shè)備,其特征在于:所述主用設(shè)備與所述備用設(shè)備都包括同步軟件模塊、故障管理模塊、客戶虛擬機(jī)模塊;所述計(jì)算機(jī)容錯(cuò)系統(tǒng)運(yùn)行時(shí),所述主用設(shè)備與所述備用設(shè)備的同步軟件模塊、故障管理模塊、客戶虛擬機(jī)模塊都運(yùn)行在虛擬化內(nèi)核上,分別對(duì)應(yīng)所述虛擬化內(nèi)核上的同步軟件進(jìn)程、故障管理進(jìn)程、客戶虛擬機(jī); 其中: 所述客戶虛擬機(jī)用于實(shí)現(xiàn)應(yīng)用程序的運(yùn)行;主用設(shè)備的所述客戶虛擬機(jī)處于運(yùn)行狀態(tài),所述備用設(shè)備的所述客戶虛擬機(jī)處于同步運(yùn)行但不可被訪問管理狀態(tài); 所述同步軟件進(jìn)程用于預(yù)設(shè)虛擬內(nèi)存同步的觸發(fā)條件,當(dāng)所述觸發(fā)條件發(fā)生時(shí),實(shí)現(xiàn)主用設(shè)備與所述備用設(shè)備之間的虛擬內(nèi)存同步;主用設(shè)備的所述同步軟件進(jìn)程處于運(yùn)行狀態(tài),所述備用設(shè)備的所述同步軟件進(jìn)程處于同步運(yùn)行但不可被訪問管理狀態(tài); 所述故障管理進(jìn)程用于實(shí)現(xiàn)對(duì)所述主用和備用設(shè)備的硬件、所述客戶虛擬機(jī)以及所述同步軟件進(jìn)程的管理與故障恢復(fù);主用設(shè)備的所述故障管理進(jìn)程處于運(yùn)行狀態(tài),所述備用設(shè)備的所述故障管理進(jìn)程處于同步運(yùn)行但不可被訪問管理狀態(tài)。
7.根據(jù)權(quán)利要求6所述的計(jì)算機(jī)容錯(cuò)系統(tǒng),其特征在于:所述虛擬內(nèi)存同步的實(shí)現(xiàn)方法包括:暫停所述主用設(shè)備的所述客戶虛擬機(jī)運(yùn)行,確定從上一次所述觸發(fā)條件發(fā)生到當(dāng)前所述觸發(fā)條件發(fā)生時(shí)客戶虛擬機(jī)中頁面內(nèi)容發(fā)生改變的虛擬內(nèi)存頁,并對(duì)所述頁面內(nèi)容發(fā)生改變的虛擬內(nèi)存頁進(jìn)行同步,使得所述備用設(shè)備中所述客戶虛擬機(jī)的相應(yīng)的虛擬內(nèi)存頁的內(nèi)容與所述主用設(shè)備中所述頁面內(nèi)容發(fā)生改變的虛擬內(nèi)存頁的內(nèi)容一致;同時(shí),主用設(shè)備與備用設(shè)備將內(nèi)存頁內(nèi)容寫入到各自的邏輯磁盤卷中,然后釋放I/o緩沖區(qū);重新恢復(fù)所述主用設(shè)備的所述客戶虛擬機(jī)運(yùn)行,所述主用設(shè)備的所述客戶虛擬機(jī)完成本次虛擬內(nèi)存同步中的所包含的I/o讀寫操作,并保證所述主用設(shè)備的磁盤數(shù)據(jù)與所述備用設(shè)備的磁盤數(shù)據(jù)一致。
8.根據(jù)權(quán)利要求6所述的計(jì)算機(jī)容錯(cuò)系統(tǒng),其特征在于:所述虛擬內(nèi)存同步的觸發(fā)條件包括:所述主用設(shè)備的所述客戶虛擬機(jī)發(fā)生I/O狀態(tài)變化。
9.根據(jù)權(quán)利要求6所述的計(jì)算機(jī)容錯(cuò)系統(tǒng),其特征在于:所述虛擬客戶機(jī)上的存儲(chǔ)I/O操作最大讀寫速度為50MB每秒。
10.根據(jù)權(quán)利要求6所述的計(jì)算機(jī)容錯(cuò)系統(tǒng),其特征在于:所述虛擬客戶機(jī)上的網(wǎng)絡(luò)I/O操作最大讀寫速度為5MB每秒。
11.根據(jù)權(quán)利要求6所述的計(jì)算機(jī)容錯(cuò)系統(tǒng),其特征在于:當(dāng)所述主用設(shè)備的所述故障管理進(jìn)程檢測(cè)到所述主用設(shè)備發(fā)生故障時(shí),停止所述主用設(shè)備的所述客戶虛擬機(jī)的運(yùn)行,并啟動(dòng)所述備用設(shè)備的客戶虛擬機(jī)的運(yùn)行,啟動(dòng)所述備用設(shè)備的同步軟件進(jìn)程以及故障管理進(jìn)程的運(yùn)行,讓所述備用設(shè)備接管所述主用設(shè)備的工作。
【文檔編號(hào)】G06F11/20GK104391764SQ201410632804
【公開日】2015年3月4日 申請(qǐng)日期:2014年11月11日 優(yōu)先權(quán)日:2014年10月22日
【發(fā)明者】杜志軍, 許葉峰, 馮智宏, 鐘豪, 張志強(qiáng), 張麗娟 申請(qǐng)人:上海海得控制系統(tǒng)股份有限公司