虛擬機(jī)容錯方法以及設(shè)備的制作方法
【專利摘要】本發(fā)明提供了一種虛擬機(jī)容錯方法以及設(shè)備。其中,該方法包括:判斷預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件;根據(jù)判斷結(jié)果確定備用虛擬機(jī)的同步完成狀態(tài),并將預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)寫入相關(guān)地址;當(dāng)主虛擬機(jī)發(fā)生故障時,根據(jù)與故障發(fā)生時間最相近一次確定的備用虛擬機(jī)處于的同步完成狀態(tài)啟動容錯功能。在保證同步數(shù)據(jù)的實(shí)時性的前提下,本發(fā)明實(shí)施例能夠有效避免因同步中斷,同步數(shù)據(jù)不完整導(dǎo)致主虛擬機(jī)發(fā)生故障時,備用虛擬機(jī)未處于同步完成狀態(tài),無法啟動容錯功能進(jìn)行容錯的惡劣后果。
【專利說明】虛擬機(jī)容錯方法以及設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及虛擬機(jī)容錯領(lǐng)域,特別是涉及虛擬機(jī)容錯方法以及設(shè)備。
【背景技術(shù)】
[0002]隨著各種云計(jì)算平臺得到廣泛應(yīng)用,對系統(tǒng)高可用的要求也逐步提高。提高系統(tǒng)可用性的常用方法之一就是系統(tǒng)容錯,系統(tǒng)容錯的技術(shù)包括:硬件冗余、軟件備份和檢查點(diǎn)、虛擬機(jī)容錯。以上系統(tǒng)容錯的技術(shù)中,虛擬機(jī)容錯是目前云時代系統(tǒng)容錯的研究熱點(diǎn)。
[0003]對虛擬機(jī)進(jìn)行容錯保護(hù)時,需要先創(chuàng)建與被保護(hù)的虛擬機(jī)完全一樣的副本,稱為備用虛擬機(jī)。在主虛擬機(jī)(即被保護(hù)的虛擬機(jī))正常運(yùn)行時,備用虛擬機(jī)保持與主虛擬機(jī)的同步。當(dāng)主虛擬機(jī)由于發(fā)生故障,備用虛擬機(jī)能夠立即代替主虛擬機(jī)運(yùn)行,保證虛擬機(jī)的對外服務(wù)不會中斷。現(xiàn)有技術(shù)中,主虛擬機(jī)與備用虛擬機(jī)能夠?qū)崿F(xiàn)基本的虛擬機(jī)容錯功能,但現(xiàn)有技術(shù)存在如下缺點(diǎn):
[0004]在主虛擬機(jī)負(fù)載較重并且系統(tǒng)事件頻繁的時候,主虛擬機(jī)和備用虛擬機(jī)之間的同步時間增長,若此時同步中斷,容錯功能會失敗,即主虛擬機(jī)發(fā)生故障后,備用虛擬機(jī)無法正常運(yùn)行,導(dǎo)致無法實(shí)現(xiàn)對系統(tǒng)高可用的要求。
【發(fā)明內(nèi)容】
[0005]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的虛擬機(jī)容錯方法以及相應(yīng)的設(shè)備。
[0006]依據(jù)本發(fā)明的一個方面,提供了一種虛擬機(jī)容錯方法,在與主虛擬機(jī)相應(yīng)的備用虛擬機(jī)中設(shè)有預(yù)取緩沖區(qū),用于接收來自所述主虛擬機(jī)的同步數(shù)據(jù)并進(jìn)行緩存,包括:判斷所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件;根據(jù)判斷結(jié)果確定所述備用虛擬機(jī)的同步完成狀態(tài),并將所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)寫入相關(guān)地址;當(dāng)主虛擬機(jī)發(fā)生故障時,根據(jù)與故障發(fā)生時間最相近一次確定的所述備用虛擬機(jī)處于的同步完成狀態(tài)啟動容錯功能。
[0007]可選地,根據(jù)判斷結(jié)果確定所述備用虛擬機(jī)的同步完成狀態(tài),并將所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)寫入相關(guān)地址,包括:若否,拒絕將所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)寫入所述相關(guān)地址,確定所述備用虛擬機(jī)處于上一同步完成狀態(tài),其中,所述處于上一同步完成狀態(tài)是指所述備用虛擬機(jī)中存儲的數(shù)據(jù)與上一次同步完成狀態(tài)時存儲的數(shù)據(jù)相同;若是,將所述緩存數(shù)據(jù)寫入所述相關(guān)地址,確定所述備用虛擬機(jī)處于與所述上一同步完成狀態(tài)不同的下一冋步完成狀態(tài)。
[0008]可選地,所述緩存數(shù)據(jù)包括下列至少任意之一:內(nèi)存臟頁數(shù)據(jù);設(shè)備數(shù)據(jù)。
[0009]可選地,所述主虛擬機(jī)與所述備用虛擬機(jī)通過傳輸控制協(xié)議TCP進(jìn)行連接。
[0010]可選地,所述主虛擬機(jī)以及所述備用虛擬機(jī)均采用模擬處理器的自由軟件QEMU執(zhí)行運(yùn)行操作。
[0011]可選地,判斷所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件,包括:監(jiān)測到所述主虛擬機(jī)與所述備用虛擬機(jī)的數(shù)據(jù)同步過程停止時,判斷所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件。
[0012]依據(jù)本發(fā)明的另一個方面,還提供了一種備用虛擬機(jī),其中,所述備用虛擬機(jī)中設(shè)有預(yù)取緩沖區(qū),用于接收來自所述主虛擬機(jī)的同步數(shù)據(jù)并進(jìn)行緩存,包括:判斷器,配置為判斷預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件;確定器,配置為根據(jù)判斷結(jié)果確定所述備用虛擬機(jī)的同步完成狀態(tài);寫入器,配置為根據(jù)判斷結(jié)果將所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)寫入相關(guān)地址;啟動器,配置為當(dāng)主虛擬機(jī)發(fā)生故障時,根據(jù)與故障發(fā)生時間最相近一次所述確定器確定的所述備用虛擬機(jī)處于的同步完成狀態(tài)啟動容錯功能。
[0013]可選地,所述備用虛擬機(jī)還包括:監(jiān)測器,配置為監(jiān)測所述主虛擬機(jī)與所述備用虛擬機(jī)的數(shù)據(jù)同步過程;以及監(jiān)測到所述主虛擬機(jī)與所述備用虛擬機(jī)的數(shù)據(jù)同步過程停止時,觸發(fā)所述判斷器判斷所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否完整。
[0014]依據(jù)本發(fā)明實(shí)施例能夠判斷備用虛擬機(jī)中用于接收及緩存同步數(shù)據(jù)的預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件,并根據(jù)判斷結(jié)果確定備用虛擬機(jī)的同步完成狀態(tài)。繼而,在主虛擬機(jī)發(fā)生故障時,根據(jù)確定的同步完成狀態(tài)啟動容錯功能。其中,備用虛擬機(jī)的預(yù)取緩沖區(qū)能夠預(yù)取緩存數(shù)據(jù)同步過程中主虛擬機(jī)發(fā)送至備用虛擬機(jī)的同步數(shù)據(jù)。因此,若同步中斷時,預(yù)取緩沖區(qū)中的同步數(shù)據(jù)不完整,本發(fā)明實(shí)施例能夠確定備用虛擬機(jī)處于上一同步完成狀態(tài)。若同步中斷時,預(yù)取緩沖區(qū)中的同步數(shù)據(jù)為完整的文件,則能夠?qū)⑼綌?shù)據(jù)寫入相關(guān)地址。在保證同步數(shù)據(jù)的實(shí)時性的前提下,本發(fā)明實(shí)施例能夠有效避免因同步中斷,同步數(shù)據(jù)不完整導(dǎo)致主虛擬機(jī)發(fā)生故障時,備用虛擬機(jī)未處于同步完成狀態(tài),無法啟動容錯功能進(jìn)行容錯的惡劣后果。
[0015]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
[0016]根據(jù)下文結(jié)合附圖對本發(fā)明具體實(shí)施例的詳細(xì)描述,本領(lǐng)域技術(shù)人員將會更加明了本發(fā)明的上述以及其他目的、優(yōu)點(diǎn)和特征。
【專利附圖】
【附圖說明】
[0017]通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0018]圖1示出了根據(jù)本發(fā)明一個實(shí)施例的備用虛擬機(jī)的數(shù)據(jù)寫入方法的處理流程圖;
[0019]圖2示出了根據(jù)本發(fā)明一個實(shí)施例的備用虛擬機(jī)容錯方法的處理流程圖;
[0020]圖3示出了根據(jù)本發(fā)明一個實(shí)施例的包括主虛擬機(jī)和備用虛擬機(jī)的容錯系統(tǒng)的技術(shù)架構(gòu)圖;
[0021]圖4示出了根據(jù)本發(fā)明一個實(shí)施例的數(shù)據(jù)同步過程的同步時間以及時間間隔的關(guān)系;
[0022]圖5示出了根據(jù)本發(fā)明一個實(shí)施例的一種備用虛擬機(jī)的數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖;以及
[0023]圖6示出了根據(jù)本發(fā)明一個實(shí)施例的備用虛擬機(jī)的結(jié)構(gòu)示意圖?!揪唧w實(shí)施方式】
[0024]在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
[0025]相關(guān)技術(shù)中提及,在主虛擬機(jī)負(fù)載較重并且系統(tǒng)時間頻繁的時候,主虛擬機(jī)和備用虛擬機(jī)之間的同步時間增長,若此時同步中斷,容錯功能會失敗。
[0026]為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種備用虛擬機(jī)的數(shù)據(jù)寫入方法。圖1示出了根據(jù)本發(fā)明一個實(shí)施例的備用虛擬機(jī)的數(shù)據(jù)寫入方法的處理流程圖。需要說明的是,本發(fā)明實(shí)施例中,在與主虛擬機(jī)相應(yīng)的備用虛擬機(jī)中設(shè)有預(yù)取緩沖區(qū),用于接收來自主虛擬機(jī)的同步數(shù)據(jù),并對接收到的數(shù)據(jù)進(jìn)行緩存。如圖1所示,本發(fā)明實(shí)施例的備用虛擬機(jī)的數(shù)據(jù)寫入方法的流程起始于步驟S102。如圖1所示的步驟S102,本發(fā)明實(shí)施例判斷預(yù)取緩沖區(qū)中緩存的數(shù)據(jù)是否是完整的文件。得到判斷結(jié)果之后,執(zhí)行步驟S104,根據(jù)判斷結(jié)果確定備用虛擬機(jī)的同步完成狀態(tài)。另外,得到判斷結(jié)果之后,本發(fā)明實(shí)施例將預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)寫入相關(guān)地址。
[0027]依據(jù)本發(fā)明實(shí)施例能夠判斷備用虛擬機(jī)中用于接收及緩存同步數(shù)據(jù)的預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件,并根據(jù)判斷結(jié)果確定備用虛擬機(jī)的同步完成狀態(tài)。因此,依據(jù)本發(fā)明實(shí)施例能夠?qū)崿F(xiàn)主虛擬機(jī)與備用虛擬機(jī)的數(shù)據(jù)同步過程,將主虛擬機(jī)的數(shù)據(jù)備份至任意備用虛擬機(jī),避免數(shù)據(jù)丟失造成的不良后果。并且,依據(jù)本發(fā)明實(shí)施例能夠在主虛擬機(jī)與備用虛擬機(jī)進(jìn)行數(shù)據(jù)同步的過程中,根據(jù)需要隨時終止數(shù)據(jù)同步過程而不影響主虛擬機(jī)與備用虛擬機(jī)各自的運(yùn)行操作。本發(fā)明實(shí)施例提供的數(shù)據(jù)寫入方法能夠適用于存在備用虛擬機(jī)的多種環(huán)境,除常用于容錯功能外,還可能應(yīng)用于存在同步備份功能、數(shù)據(jù)復(fù)制功能等環(huán)境。
[0028]上文提及,本發(fā)明實(shí)施例中,能夠判斷預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件。在整個數(shù)據(jù)同步過程中,循環(huán)判斷預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否完整這一操作會占用大量的運(yùn)行空間,造成數(shù)據(jù)同步過程中大量資源被浪費(fèi)。并且,由于大量資源被占用于循環(huán)判斷操作,容易導(dǎo)致整個數(shù)據(jù)同步過程進(jìn)度緩慢,需要較長的時間才能夠完成同步過程。因此,本發(fā)明實(shí)施例中優(yōu)選對主虛擬機(jī)與備用虛擬機(jī)的數(shù)據(jù)同步過程進(jìn)行監(jiān)測。當(dāng)監(jiān)測到主虛擬機(jī)與備用虛擬機(jī)的數(shù)據(jù)同步過程停止時,判斷預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否完整,合理節(jié)省運(yùn)行空間。
[0029]對預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)進(jìn)行判斷之后,若判斷結(jié)果為否,則本發(fā)明實(shí)施例拒絕將預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)寫入相關(guān)地址,并且備用虛擬機(jī)當(dāng)前同步失敗。因此,能夠確定備用虛擬機(jī)處于上一同步完成狀態(tài)。本發(fā)明實(shí)施例中,備用虛擬機(jī)處于上一同步完成狀態(tài)是指,備用虛擬機(jī)當(dāng)前存儲的數(shù)據(jù)與備用虛擬機(jī)上一次成功完成數(shù)據(jù)同步狀態(tài)時所存儲的數(shù)據(jù)相同,則當(dāng)前同步過程失敗之后,為區(qū)分當(dāng)前同步過程與上一次同步過程,本發(fā)明實(shí)施例稱備用虛擬機(jī)處于上一同步完成狀態(tài)。
[0030]上文介紹了當(dāng)判斷預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整文件的判斷結(jié)果為否時,本發(fā)明實(shí)施例對備用虛擬機(jī)狀態(tài)的確定。當(dāng)判斷結(jié)果為是時,將在預(yù)取緩沖區(qū)緩存的數(shù)據(jù)寫入備用虛擬機(jī)的相關(guān)地址。并且,確定備用虛擬機(jī)處于與上一同步完成狀態(tài)不同的下一同步完成狀態(tài)。本發(fā)明實(shí)施例中,與上一同步完成狀態(tài)不同的下一同步完成狀態(tài)是指,若備用虛擬機(jī)成功完成同步,則備用虛擬機(jī)內(nèi)存儲的數(shù)據(jù)更新至與當(dāng)前主虛擬機(jī)數(shù)據(jù)一致的狀態(tài),為將備用虛擬機(jī)當(dāng)前同步完成狀態(tài)與上一同步完成狀態(tài)區(qū)分,本發(fā)明實(shí)施例中稱備用虛擬機(jī)處于與上一同步完成狀態(tài)不同的下一同步完成狀態(tài)。
[0031]由上文可知,本發(fā)明實(shí)施例中,根據(jù)對備用虛擬機(jī)的預(yù)取緩沖區(qū)內(nèi)存儲的數(shù)據(jù)是否是完整的文件能夠確定備用虛擬機(jī)處于何種同步完成狀態(tài)(如上文提及的備用虛擬機(jī)處于上一同步完成狀態(tài)或者備用虛擬機(jī)處于與上一同步完成狀態(tài)不同的下一同步完成狀態(tài)),進(jìn)而能夠根據(jù)判斷結(jié)果確定是否將緩存數(shù)據(jù)寫入相關(guān)地址。本發(fā)明實(shí)施例中,緩存數(shù)據(jù)可以是內(nèi)存臟頁數(shù)據(jù),可以是設(shè)備數(shù)據(jù),還可以是其他任意主虛擬機(jī)在數(shù)據(jù)同步過程中同步至備用虛擬機(jī)的數(shù)據(jù),本發(fā)明對此并不加以限定。
[0032]本發(fā)明實(shí)施例中,主虛擬機(jī)以及備用虛擬機(jī)可以采用模擬處理器的軟件進(jìn)行運(yùn)行操作。優(yōu)選地,本發(fā)明實(shí)施例采用自由軟件QEMU進(jìn)行運(yùn)行操作。其中,QEMU在支持硬件虛擬化的架構(gòu)上能夠使用KVM (其中的KVM為
[0033]Kernel-based Virtual Machine的縮寫)加速配合內(nèi)核,不僅速度快,并且對比其他模擬處理器更為穩(wěn)定。QEMU-KVM有一個非官方的虛擬機(jī)容錯功能,通常稱為“蹴鞠”。QEMU-KVM能夠監(jiān)控系統(tǒng)事件通道。當(dāng)有事件發(fā)生時,QEMU-KVM暫停主虛擬機(jī),對主虛擬機(jī)和備用虛擬機(jī)進(jìn)行數(shù)據(jù)同步操作。數(shù)據(jù)同步操作結(jié)束后,由主虛擬機(jī)繼續(xù)執(zhí)行運(yùn)行操作。QEMU能夠默認(rèn)支持多種架構(gòu)(例如能夠模擬多種個人電腦),并且是開源的、可移植的。另夕卜,QEMU仿真速度快,通過QEMU執(zhí)行運(yùn)行操作能夠達(dá)到高效率、低出錯率的有益效果。因此,本發(fā)明實(shí)施例中,主虛擬機(jī)以及備用虛擬機(jī)采用QEMU執(zhí)行運(yùn)行操作。本發(fā)明實(shí)施例中,主虛擬機(jī)與備用虛擬機(jī)能夠通過常用控制協(xié)議進(jìn)行連接。優(yōu)選地,本發(fā)明實(shí)施例中主虛擬機(jī)與備用虛擬機(jī)通過TCP協(xié)議(傳輸控制協(xié)議)進(jìn)行連接。
[0034]上文介紹了本發(fā)明實(shí)施例提供的備用虛擬機(jī)的數(shù)據(jù)寫入方法,依據(jù)本發(fā)明實(shí)施例提供的備用虛擬機(jī)的數(shù)據(jù)寫入方法能夠應(yīng)用于存在同步備份功能的環(huán)境中,更加合理有效地對主虛擬機(jī)與備用虛擬機(jī)之間進(jìn)行數(shù)據(jù)同步。在主虛擬機(jī)與備用虛擬機(jī)進(jìn)行數(shù)據(jù)同步的過程中,若需要對數(shù)據(jù)同步過程進(jìn)行臨時停止,采用本發(fā)明實(shí)施例提供的備用虛擬機(jī)的數(shù)據(jù)寫入方法能夠保證主虛擬機(jī)與備用虛擬機(jī)在數(shù)據(jù)同步過程臨時終止的情況下繼續(xù)正常的運(yùn)行操作,避免在數(shù)據(jù)同步過程臨時停止時主虛擬機(jī)與備用虛擬機(jī)無法正常運(yùn)行造成的不良后果。因此,依據(jù)本發(fā)明實(shí)施例提供的備用虛擬機(jī)的數(shù)據(jù)寫入方法能夠應(yīng)用于同步備份功能、數(shù)據(jù)復(fù)制功能等環(huán)境中,有效避免在數(shù)據(jù)同步過程中由于數(shù)據(jù)同步過程臨時停止或者主虛擬機(jī)和/或備用虛擬機(jī)故障造成的主虛擬機(jī)和/或備用虛擬機(jī)無法正常運(yùn)行的問題。本發(fā)明實(shí)施例除應(yīng)用于前文介紹的存在同步備份功能、數(shù)據(jù)復(fù)制功能的環(huán)境外,上文提及,本發(fā)明實(shí)施例常用于容錯功能。對主虛擬機(jī)與備用虛擬機(jī)進(jìn)行數(shù)據(jù)同步時,若主虛擬機(jī)發(fā)生故障,依據(jù)本發(fā)明實(shí)施例能夠根據(jù)確定的同步完成狀態(tài)啟動容錯功能,避免因同步中斷,同步數(shù)據(jù)不完整導(dǎo)致主虛擬機(jī)發(fā)生故障時,備用虛擬機(jī)未處于同步完成狀態(tài),無法啟動容錯功能進(jìn)行容錯的惡劣后果。
[0035]相關(guān)技術(shù)中提及,在主虛擬機(jī)與備用虛擬機(jī)進(jìn)行數(shù)據(jù)同步過程時,若同步中斷,無法確定備用虛擬機(jī)的同步完成狀態(tài),導(dǎo)致容錯失敗。為解決該技術(shù)問題,基于上文各優(yōu)選實(shí)施例提供的備用虛擬機(jī)的數(shù)據(jù)寫入方法,基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供了一種虛擬機(jī)容錯方法。圖2示出了根據(jù)本發(fā)明一個實(shí)施例的備用虛擬機(jī)容錯方法的處理流程圖。參見圖2,該流程起始于步驟S202,判斷預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件,并觸發(fā)步驟S204。在步驟S204中,根據(jù)步驟S202中的判斷結(jié)果確定備用虛擬機(jī)的同步完成狀態(tài),并將預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)寫入相關(guān)地址。由上文可知,圖2所示的步驟S202以及步驟S204為前文提及的備用虛擬機(jī)的數(shù)據(jù)寫入方法的步驟。應(yīng)用上文提及的備用虛擬機(jī)的數(shù)據(jù)寫入方法確定備用虛擬機(jī)的同步完成狀態(tài)之后,當(dāng)主虛擬機(jī)發(fā)生故障時,執(zhí)行步驟S206,根據(jù)與故障發(fā)生時間最相近一次確定的備用虛擬機(jī)處于的同步完成狀態(tài)啟動容錯功倉泛。
[0036]依據(jù)本發(fā)明實(shí)施例能夠在監(jiān)測到主虛擬機(jī)與備用虛擬機(jī)的數(shù)據(jù)同步過程停止時,判斷備用虛擬機(jī)中用于接收及緩存同步數(shù)據(jù)的預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件,并根據(jù)判斷結(jié)果確定備用虛擬機(jī)的同步完成狀態(tài)。繼而,在主虛擬機(jī)發(fā)生故障時,根據(jù)確定的同步完成狀態(tài)啟動容錯功能。其中,備用虛擬機(jī)的預(yù)取緩沖區(qū)能夠預(yù)取緩存數(shù)據(jù)同步過程中主虛擬機(jī)發(fā)送至備用虛擬機(jī)的同步數(shù)據(jù)。因此,若同步中斷時,預(yù)取緩沖區(qū)中的同步數(shù)據(jù)不完整,本發(fā)明實(shí)施例能夠確定備用虛擬機(jī)處于上一同步完成狀態(tài)。若同步中斷時,預(yù)取緩沖區(qū)中的同步數(shù)據(jù)為完整的文件,則能夠?qū)⑼綌?shù)據(jù)寫入相關(guān)地址。在保證同步數(shù)據(jù)的實(shí)時性的前提下,本發(fā)明實(shí)施例能夠有效避免因同步中斷,同步數(shù)據(jù)不完整導(dǎo)致主虛擬機(jī)發(fā)生故障時,備用虛擬機(jī)未處于同步完成狀態(tài),無法啟動容錯功能進(jìn)行容錯的惡劣后果O
[0037]實(shí)施例一
[0038]為將上文介紹的備用虛擬機(jī)的數(shù)據(jù)寫入方法以及虛擬機(jī)容錯方法闡述得更加清晰明白,現(xiàn)采用一個優(yōu)選實(shí)施例對備用虛擬機(jī)的數(shù)據(jù)寫入方法、虛擬機(jī)容錯方法以及設(shè)備進(jìn)行介紹。
[0039]本優(yōu)選實(shí)施例中,將主虛擬機(jī)中的文件分為10個數(shù)據(jù)片段,依次為命名為文件塊
1、文件塊2、文件塊3、文件塊4、文件塊5、文件塊6、文件塊7、文件塊8、文件塊9、文件塊
10。在數(shù)據(jù)同步過程中,將10個數(shù)據(jù)片段無先后順序地同步至備用虛擬機(jī)中。
[0040]備用虛擬機(jī)在數(shù)據(jù)同步過程中,首先將接收到的數(shù)據(jù)片段緩存至預(yù)取緩沖區(qū)。其次,當(dāng)監(jiān)督到數(shù)據(jù)同步過程中止,判斷預(yù)取緩沖區(qū)中的數(shù)據(jù)片段是否是完整的文件。若預(yù)取緩沖區(qū)中緩存的數(shù)據(jù)片段為文件塊1、文件塊2、文件塊3、文件塊5、文件塊7、文件塊8,不存在數(shù)據(jù)片段文件塊4、文件塊6、文件塊9、文件塊10,則預(yù)取緩沖區(qū)中的數(shù)據(jù)片段不是完整的文件。當(dāng)判斷處預(yù)取緩沖區(qū)中的文件非完整文件,則當(dāng)前數(shù)據(jù)同步過程未成功,拒絕將預(yù)取緩沖區(qū)中數(shù)據(jù)寫入相關(guān)地址,備用虛擬機(jī)處于上一同步完成狀態(tài)。
[0041]若經(jīng)過判斷,預(yù)取緩沖區(qū)中的數(shù)據(jù)為完整的文件,則將預(yù)取緩沖區(qū)中的數(shù)據(jù)寫入相關(guān)地址,并且能夠確定備用虛擬機(jī)處于與上一同步完成狀態(tài)不同的下一同步完成狀態(tài)。
[0042]當(dāng)主虛擬機(jī)發(fā)生故障時,根據(jù)上文確定的備用虛擬機(jī)的同步完成狀態(tài)啟動容錯功能進(jìn)行容錯。
[0043]實(shí)施例二
[0044]為將本優(yōu)選實(shí)施例闡述得更加清楚明白,現(xiàn)對下文用到的名詞進(jìn)行定義:
[0045]遷移:將一臺位于物理計(jì)算機(jī)A上的虛擬機(jī)轉(zhuǎn)移到物理計(jì)算機(jī)B上的操作。[0046]熱遷移:在不暫停虛擬機(jī)的情況下,對虛擬機(jī)進(jìn)行遷移。
[0047]主虛擬機(jī):容錯操作中,發(fā)送數(shù)據(jù)的虛擬機(jī)。
[0048]備用虛擬機(jī):容錯操作中,接收數(shù)據(jù)的虛擬機(jī)。
[0049]緩沖區(qū):臨時存放數(shù)據(jù)的內(nèi)存區(qū)域。
[0050]圖3示出了根據(jù)本發(fā)明一個實(shí)施例的包括主虛擬機(jī)和備用虛擬機(jī)的容錯系統(tǒng)的技術(shù)架構(gòu)圖。需要說明的是,本優(yōu)選實(shí)施例中的主虛擬機(jī)以及備用虛擬機(jī)均采用自由軟件QEMU進(jìn)行運(yùn)行操作。并且,在QEMU中使用LINUX (—種操作系統(tǒng))的KVM加速配合內(nèi)核。在主虛擬機(jī)以及備用虛擬機(jī)中分別啟動QEMU進(jìn)程。啟動之后,在主虛擬機(jī)控制臺中輸入容錯命令:migrate-f tcp:<B的IP地址 >:〈端口〉。容錯命令輸入完畢之后,在主虛擬機(jī)與備用虛擬機(jī)之間建立TCP連接。本優(yōu)選實(shí)施例中,主虛擬機(jī)與備用虛擬機(jī)通過存儲區(qū)域網(wǎng)絡(luò)(Storage Area Network,以下簡稱 SAN)或者網(wǎng)絡(luò)文件系統(tǒng)(Network File System,以下簡稱NFS)進(jìn)行連接。在主虛擬機(jī)與備用虛擬機(jī)之間建立連接之后,創(chuàng)建并執(zhí)行同步線程migrate_thread函數(shù),準(zhǔn)備發(fā)送數(shù)據(jù)。
[0051]參見圖3,步驟S302中,主虛擬機(jī)獲取內(nèi)存臟頁和設(shè)備數(shù)據(jù)作為同步數(shù)據(jù)。獲取到同步數(shù)據(jù)之后,執(zhí)行步驟S304。在步驟S304,主虛擬機(jī)發(fā)送獲取到的同步數(shù)據(jù),為將本優(yōu)選實(shí)施例闡述得清楚簡潔,在主虛擬機(jī)中設(shè)置內(nèi)存臟頁和設(shè)備信息發(fā)送器,由該發(fā)送器將獲取到的同步數(shù)據(jù)(包括內(nèi)存臟頁和/或設(shè)備信息)發(fā)送至備用虛擬機(jī)。備用虛擬機(jī)創(chuàng)建預(yù)取緩沖區(qū)perfetch_buffer,等待接收數(shù)據(jù)。
[0052]當(dāng)備用虛擬機(jī)接收到同步數(shù)據(jù)之后,暫時不將同步數(shù)據(jù)寫入相關(guān)地址,而是執(zhí)行步驟S306,將同步數(shù)據(jù)寫入預(yù)取緩沖區(qū)。同樣的,為將本優(yōu)選實(shí)施例闡述得清楚簡潔,在備用虛擬機(jī)中設(shè)置內(nèi)存臟頁和設(shè)備信息發(fā)送器,由該發(fā)送器將獲取到的同步數(shù)據(jù)(包括內(nèi)存臟頁和/或設(shè)備信息)發(fā)送至預(yù)取緩沖區(qū)。在數(shù)據(jù)同步過程中,主虛擬機(jī)循環(huán)調(diào)用qemu_savevm_state_beg1、qemu_savevm_state_iterate> qemu_savevm_state_complete 等函數(shù)將主虛擬機(jī)獲取到的數(shù)據(jù)轉(zhuǎn)化為數(shù)據(jù)流發(fā)送至備用虛擬機(jī)。當(dāng)判斷備用虛擬機(jī)中的預(yù)取緩沖區(qū)已經(jīng)接收到同步數(shù)據(jù)的完整文件之后,執(zhí)行步驟S308,備用虛擬機(jī)調(diào)用qemU_loadVm_state將同步數(shù)據(jù)寫入相關(guān)地址,數(shù)據(jù)同步過程完成。另外,達(dá)到同步時間間隔之后,返回步驟S302,繼續(xù)進(jìn)行下一次數(shù)據(jù)同步過程。當(dāng)主機(jī)發(fā)生故障時,調(diào)用vm_Start啟動容錯功能,由備用虛擬機(jī)代替主虛擬機(jī)進(jìn)行運(yùn)行操作。
[0053]圖4示出了本優(yōu)選實(shí)施例中,數(shù)據(jù)同步過程的同步時間以及時間間隔的關(guān)系。如圖4所示,主虛擬機(jī)與備用虛擬機(jī)之間完成一次數(shù)據(jù)同步過程需要的時間稱為同步時間。為保證數(shù)據(jù)同步過程的完整,避免數(shù)據(jù)同步過程中數(shù)據(jù)包的丟失的問題以及在合理時間間隔內(nèi)保證數(shù)據(jù)同步過程的實(shí)時性,本優(yōu)選實(shí)施例中,在達(dá)到時間間隔之后再次進(jìn)行數(shù)據(jù)同步過程。其中,時間間隔的時間長度長于同步時間的時間長度。
[0054]當(dāng)數(shù)據(jù)同步過程在執(zhí)行圖3所示的步驟S304時(即主虛擬機(jī)發(fā)出數(shù)據(jù),備用虛擬機(jī)尚未接收數(shù)據(jù)時)中斷,則備用虛擬機(jī)處于上一同步完成狀態(tài)。當(dāng)數(shù)據(jù)同步過程在執(zhí)行步驟S306時(即主虛擬機(jī)發(fā)出數(shù)據(jù),備用虛擬機(jī)接收數(shù)據(jù),但接收數(shù)據(jù)判斷為不完整文件時)中斷,則拒絕將接收到的文件寫入相關(guān)地址,備用虛擬機(jī)處于上一同步完成狀態(tài)。當(dāng)數(shù)據(jù)同步過程在執(zhí)行步驟S308時(即主虛擬機(jī)發(fā)送數(shù)據(jù)結(jié)束,備用虛擬機(jī)接收數(shù)據(jù)為完整文件時)時中斷,此時備用虛擬機(jī)的預(yù)取緩沖區(qū)中緩存有此次數(shù)據(jù)同步過程同步數(shù)據(jù)的完整文件,則將預(yù)取緩沖區(qū)中完整的文件寫入相關(guān)地址,確定備用虛擬機(jī)當(dāng)前數(shù)據(jù)同步過程完成,備用虛擬機(jī)處于與上一同步完成狀態(tài)不同的下一同步完成狀態(tài)。本優(yōu)選實(shí)施例中,通過預(yù)取緩沖區(qū)對數(shù)據(jù)同步過程中接收到的數(shù)據(jù)進(jìn)行預(yù)取緩存,保證備用虛擬機(jī)能夠一直處于同步完成狀態(tài),進(jìn)一步保證了任意時刻主虛擬機(jī)發(fā)生故障時,能夠及時啟動容錯功能。
[0055]基于上文各優(yōu)選實(shí)施例提供的備用虛擬機(jī)的數(shù)據(jù)寫入方法,基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供了一種備用虛擬機(jī)的數(shù)據(jù)寫入裝置,用以實(shí)現(xiàn)上述備用虛擬機(jī)的數(shù)據(jù)寫入方法。
[0056]圖5示出了根據(jù)本發(fā)明一個實(shí)施例的一種備用虛擬機(jī)的數(shù)據(jù)寫入裝置的結(jié)構(gòu)示意圖。參見圖5,本發(fā)明實(shí)施例的備用虛擬機(jī)的數(shù)據(jù)寫入裝置至少包括:判斷器520、確定器530以及寫入器540。需要說明的是,本發(fā)明實(shí)施例中,備用虛擬機(jī)的數(shù)據(jù)寫入裝置中設(shè)有預(yù)取緩沖區(qū),用于接收來自主虛擬機(jī)的同步數(shù)據(jù),并對接收到的數(shù)據(jù)進(jìn)行緩存。
[0057]現(xiàn)介紹本發(fā)明實(shí)施例的備用虛擬機(jī)的數(shù)據(jù)寫入裝置的各器件或組成的功能以及各部分間的連接關(guān)系。如圖5所示,備用虛擬機(jī)的數(shù)據(jù)寫入裝置中的判斷器520判斷備用虛擬機(jī)中的預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件,并觸發(fā)確定器530根據(jù)判斷器520的判斷結(jié)果確定備用虛擬機(jī)的同步完成狀態(tài),并由與另一與判斷器520相耦合的寫入器540將預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)寫入相關(guān)地址。
[0058]依據(jù)本發(fā)明實(shí)施例能夠判斷備用虛擬機(jī)中用于接收及緩存同步數(shù)據(jù)的預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件,并根據(jù)判斷結(jié)果確定備用虛擬機(jī)的同步完成狀態(tài)。因此,依據(jù)本發(fā)明實(shí)施例能夠?qū)崿F(xiàn)主虛擬與備用虛擬機(jī)的數(shù)據(jù)同步過程,將主虛擬機(jī)的數(shù)據(jù)備份至任意備用虛擬機(jī),避免數(shù)據(jù)丟失造成的不良后果。并且,依據(jù)本發(fā)明實(shí)施例能夠在主虛擬機(jī)與備用虛擬機(jī)進(jìn)行數(shù)據(jù)同步的過程中,根據(jù)需要隨時終止數(shù)據(jù)同步過程而不影響主虛擬機(jī)與備用虛擬機(jī)各自的運(yùn)行操作。本發(fā)明實(shí)施例提供的數(shù)據(jù)寫入方法能夠適用于存在備用虛擬機(jī)的多種環(huán)境,除常用于容錯功能外,還可能應(yīng)用于存在同步備份功能、數(shù)據(jù)復(fù)制功能等環(huán)境。
[0059]上文提及,本發(fā)明實(shí)施例中,由判斷器520判斷預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件。在整個數(shù)據(jù)同步過程中,判斷器520循環(huán)判斷預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否完整這一操作會占用大量的運(yùn)行空間,造成數(shù)據(jù)同步過程中大量資源被浪費(fèi)。并且,由于大量資源被占用于循環(huán)判斷操作,容易導(dǎo)致整個數(shù)據(jù)同步過程進(jìn)度緩慢。因此,本發(fā)明實(shí)施例中優(yōu)選采用監(jiān)測器510對主虛擬機(jī)與備用虛擬機(jī)的數(shù)據(jù)同步過程進(jìn)行監(jiān)測。當(dāng)監(jiān)測器510監(jiān)測到主虛擬機(jī)與備用虛擬機(jī)的數(shù)據(jù)同步過程停止時,觸發(fā)判斷器520。由判斷器520判斷預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否完整,合理節(jié)省運(yùn)行空間。
[0060]對預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)進(jìn)行判斷之后,若判斷結(jié)果為否,則確定器530確定備用虛擬機(jī)處于上一同步完成狀態(tài),與判斷器520相耦合的寫入器540拒絕將預(yù)取緩沖區(qū)中緩存的數(shù)據(jù)寫入相關(guān)地址。即,備用虛擬機(jī)當(dāng)前同步失敗,因此,能夠確定備用虛擬機(jī)處于上一同步完成狀態(tài)。本發(fā)明實(shí)施例中,備用虛擬機(jī)處于上一同步完成狀態(tài)是指,備用虛擬機(jī)當(dāng)前存儲的數(shù)據(jù)域備用虛擬機(jī)上一次成功完成數(shù)據(jù)同步狀態(tài)時所存儲的數(shù)據(jù)相同,則當(dāng)前同步過程失敗之后,為區(qū)分當(dāng)前同步過程與上一次同步過程,本發(fā)明實(shí)施例稱備用虛擬機(jī)處于上一同步完成狀態(tài)。
[0061]上文介紹了當(dāng)判斷器520判斷預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整文件的判斷結(jié)果為否時,本發(fā)明實(shí)施例對備用虛擬機(jī)狀態(tài)的確定。當(dāng)判斷結(jié)果為是時,寫入器540將在預(yù)取緩沖區(qū)緩存的數(shù)據(jù)寫入備用虛擬機(jī)的相關(guān)地址。并且,由確定器530確定備用虛擬機(jī)處于與上一同步完成狀態(tài)不同的下一同步完成狀態(tài)。本發(fā)明實(shí)施例中,與上一同步完成狀態(tài)不同的下一同步完成狀態(tài)是指,若備用虛擬機(jī)成功完成當(dāng)前同步,則備用虛擬機(jī)內(nèi)存儲的數(shù)據(jù)更新至與當(dāng)前主虛擬機(jī)數(shù)據(jù)一致的狀態(tài),為將備用虛擬機(jī)當(dāng)前同步完成狀態(tài)與上一同步完成狀態(tài)區(qū)分,本發(fā)明實(shí)施例中稱備用虛擬機(jī)處于與上一同步完成狀態(tài)不同的下一同步完成狀態(tài)。
[0062]由上文可知,本發(fā)明實(shí)施例中,根據(jù)判斷器520對預(yù)取緩沖區(qū)內(nèi)存儲的數(shù)據(jù)是否是完整的文件,確定器530能夠確定備用虛擬機(jī)處于何種同步完成狀態(tài)(如上文提及的備用虛擬機(jī)處于上一同步完成狀態(tài)或者備用虛擬機(jī)處于與上一同步完成狀態(tài)不同的下一同步完成狀態(tài)),進(jìn)而能夠根據(jù)判斷結(jié)果確定是否由寫入器540將緩存數(shù)據(jù)寫入相關(guān)地址。本發(fā)明實(shí)施例中,緩存數(shù)據(jù)可以是內(nèi)存臟頁數(shù)據(jù),可以是設(shè)備數(shù)據(jù),還可以是其他任意主虛擬機(jī)在數(shù)據(jù)同步過程中同步至備用虛擬機(jī)的數(shù)據(jù),本發(fā)明對此并不加以限定。
[0063]本發(fā)明實(shí)施例中,主虛擬機(jī)以及備用虛擬機(jī)可以采用模擬處理器的軟件進(jìn)行運(yùn)行操作。優(yōu)選地,本發(fā)明實(shí)施例采用自由軟件QEMU進(jìn)行運(yùn)行操作。其中,QEMU在支持硬件虛擬化的架構(gòu)上能夠使用KVM加速配合內(nèi)核,不僅速度快,并且對比其他模擬處理器更為穩(wěn)定。QEMU-KVM是一款主流虛擬化產(chǎn)品,它有一個非官方的虛擬機(jī)容錯功能,稱為“蹴鞠”。QEMU-KVM能夠監(jiān)控系統(tǒng)事件通道。當(dāng)有事件發(fā)生時,QEMU-KVM暫停主虛擬機(jī),對主虛擬機(jī)和備用虛擬機(jī)進(jìn)行數(shù)據(jù)同步操作。數(shù)據(jù)同步操作結(jié)束后,由主虛擬機(jī)繼續(xù)執(zhí)行運(yùn)行操作。QEMU能夠默認(rèn)支持多種架構(gòu)(例如能夠模擬多種個人電腦),并且是開源的、可移植的。另夕卜,QEMU仿真速度快,通過QEMU執(zhí)行運(yùn)行操作能夠達(dá)到高效率、低出錯率的有益效果。因此,本發(fā)明實(shí)施例中,主虛擬機(jī)以及備用虛擬機(jī)采用QEMU執(zhí)行運(yùn)行操作。本發(fā)明實(shí)施例中,主虛擬機(jī)與備用虛擬機(jī)能夠通過常用控制協(xié)議進(jìn)行連接。優(yōu)選地,本發(fā)明實(shí)施例中主虛擬機(jī)與備用虛擬機(jī)通過TCP協(xié)議(傳輸控制協(xié)議)進(jìn)行連接。
[0064]上文介紹了本發(fā)明實(shí)施例提供的備用虛擬機(jī)的數(shù)據(jù)寫入裝置,依據(jù)本發(fā)明實(shí)施例提供的備用虛擬機(jī)的數(shù)據(jù)寫入裝置能夠應(yīng)用于存在同步備份功能的環(huán)境中,更加合理有效地對主虛擬機(jī)與備用虛擬機(jī)之間進(jìn)行數(shù)據(jù)同步。在主虛擬機(jī)與備用虛擬機(jī)進(jìn)行數(shù)據(jù)同步的過程中,若需要對數(shù)據(jù)同步過程進(jìn)行臨時停止,采用本發(fā)明實(shí)施例提供的備用虛擬機(jī)的數(shù)據(jù)寫入裝置能夠保證主虛擬機(jī)與備用虛擬機(jī)在數(shù)據(jù)同步過程臨時終止的情況下繼續(xù)正常的運(yùn)行操作,避免在數(shù)據(jù)同步過程臨時停止時主虛擬機(jī)與備用虛擬機(jī)無法正常運(yùn)行造成的不良后果。因此,依據(jù)本發(fā)明實(shí)施例提供的備用虛擬機(jī)的數(shù)據(jù)寫入裝置能夠應(yīng)用于同步備份功能、數(shù)據(jù)復(fù)制功能等環(huán)境中,有效避免在數(shù)據(jù)同步過程中由于數(shù)據(jù)同步過程臨時停止或者主虛擬機(jī)和/或備用虛擬機(jī)故障造成的主虛擬機(jī)和/或備用虛擬機(jī)無法正常運(yùn)行的問題。本發(fā)明實(shí)施例除應(yīng)用于前文介紹的存在同步備份功能、數(shù)據(jù)復(fù)制功能的環(huán)境外,上文提及,本發(fā)明實(shí)施例常用于容錯功能。對主虛擬機(jī)與備用虛擬機(jī)進(jìn)行數(shù)據(jù)同步時,若主虛擬機(jī)發(fā)生故障,依據(jù)本發(fā)明實(shí)施例能夠根據(jù)確定的同步完成狀態(tài)啟動容錯功能,避免因同步中斷,同步數(shù)據(jù)不完整導(dǎo)致主虛擬機(jī)發(fā)生故障時,備用虛擬機(jī)未處于同步完成狀態(tài),無法啟動容錯功能進(jìn)行容錯的惡劣后果。
[0065]相關(guān)技術(shù)中提及,在主虛擬機(jī)與備用虛擬機(jī)進(jìn)行數(shù)據(jù)同步過程時,若同步中斷,無法確定備用虛擬機(jī)的同步完成狀態(tài),導(dǎo)致容錯失敗。為解決該技術(shù)問題,基于上文各優(yōu)選實(shí)施例提供的備用虛擬機(jī)的數(shù)據(jù)寫入方法及裝置、虛擬機(jī)容錯方法,基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供了一種備用虛擬機(jī)。圖6示出了根據(jù)本發(fā)明一個實(shí)施例的備用虛擬機(jī)的結(jié)構(gòu)示意圖。參見圖6,本發(fā)明實(shí)施例的備用虛擬機(jī)至少包括所示的備用虛擬機(jī)的數(shù)據(jù)寫入裝置(即圖6中的備用虛擬機(jī)的數(shù)據(jù)寫入裝置610)以及啟動器620。圖6所示的備用虛擬機(jī)中,判斷器520判斷預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件,并觸發(fā)與其耦合的確定器530以及寫入器540。其中,確定器530根據(jù)判斷器520的判斷結(jié)果確定備用虛擬機(jī)的同步完成狀態(tài),而寫入器540根據(jù)判斷器520的判斷結(jié)果將預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)寫入相關(guān)地址。
[0066]綜上,圖6中的備用虛擬機(jī)的數(shù)據(jù)寫入裝置610(即上文介紹的如圖5所示的備用虛擬機(jī)的數(shù)據(jù)寫入裝置)能夠確定備用虛擬機(jī)的同步完成狀態(tài)。因此,當(dāng)主虛擬機(jī)發(fā)生故障時,備用虛擬機(jī)的數(shù)據(jù)寫入裝置610觸發(fā)啟動器620。由啟動器620根據(jù)備用虛擬機(jī)的數(shù)據(jù)寫入裝置610確定的與故障發(fā)生時間最相近一次的備用虛擬機(jī)處于的同步完成狀態(tài)啟動容錯功能,進(jìn)行容錯。
[0067]根據(jù)上述任意一個優(yōu)選實(shí)施例或多個優(yōu)選實(shí)施例的組合,本發(fā)明實(shí)施例能夠達(dá)到如下有益效果:
[0068]依據(jù)本發(fā)明實(shí)施例能夠在監(jiān)測到主虛擬機(jī)與備用虛擬機(jī)的數(shù)據(jù)同步過程停止時,判斷備用虛擬機(jī)中用于接收及緩存同步數(shù)據(jù)的預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件,并根據(jù)判斷結(jié)果確定備用虛擬機(jī)的同步完成狀態(tài)。繼而,在主虛擬機(jī)發(fā)生故障時,根據(jù)確定的同步完成狀態(tài)啟動容錯功能。其中,備用虛擬機(jī)的預(yù)取緩沖區(qū)能夠預(yù)取緩存數(shù)據(jù)同步過程中主虛擬機(jī)發(fā)送至備用虛擬機(jī)的同步數(shù)據(jù)。因此,若同步中斷時,預(yù)取緩沖區(qū)中的同步數(shù)據(jù)不完整,本發(fā)明實(shí)施例能夠確定備用虛擬機(jī)處于上一同步完成狀態(tài)。若同步中斷時,預(yù)取緩沖區(qū)中的同步數(shù)據(jù)為完整的文件,則能夠?qū)⑼綌?shù)據(jù)寫入相關(guān)地址。在保證同步數(shù)據(jù)的實(shí)時性的前提下,本發(fā)明實(shí)施例能夠有效避免因同步中斷,同步數(shù)據(jù)不完整導(dǎo)致主虛擬機(jī)發(fā)生故障時,備用虛擬機(jī)未處于同步完成狀態(tài),無法啟動容錯功能進(jìn)行容錯的惡劣后果O
[0069]在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
[0070]類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實(shí)施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實(shí)施例的所有特征。因此,遵循【具體實(shí)施方式】的權(quán)利要求書由此明確地并入該【具體實(shí)施方式】,其中每個權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
[0071 ] 本領(lǐng)域那些技術(shù)人員可以理解,可以對實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實(shí)施例不同的一個或多個設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
[0072]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。
[0073]本發(fā)明的各個部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個或者多個處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號處理器(DSP )來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的虛擬機(jī)容錯設(shè)備中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
[0074]應(yīng)該注意的是上述實(shí)施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
[0075]至此,本領(lǐng)域技術(shù)人員應(yīng)認(rèn)識到,雖然本文已詳盡示出和描述了本發(fā)明的多個示例性實(shí)施例,但是,在不脫離本發(fā)明精神和范圍的情況下,仍可根據(jù)本發(fā)明公開的內(nèi)容直接確定或推導(dǎo)出符合本發(fā)明原理的許多其他變型或修改。因此,本發(fā)明的范圍應(yīng)被理解和認(rèn)定為覆蓋了所有這些其他變型或修改。
【權(quán)利要求】
1.一種虛擬機(jī)容錯方法,在與主虛擬機(jī)相應(yīng)的備用虛擬機(jī)中設(shè)有預(yù)取緩沖區(qū),用于接收來自所述主虛擬機(jī)的同步數(shù)據(jù)并進(jìn)行緩存,包括: 判斷所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件; 根據(jù)判斷結(jié)果確定所述備用虛擬機(jī)的同步完成狀態(tài),并將所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)與入相關(guān)地址; 當(dāng)主虛擬機(jī)發(fā)生故障時,根據(jù)與故障發(fā)生時間最相近一次確定的所述備用虛擬機(jī)處于的冋步完成狀態(tài)啟動各錯功能。
2.根據(jù)權(quán)利要求1所述的方法,其中,根據(jù)判斷結(jié)果確定所述備用虛擬機(jī)的同步完成狀態(tài),并將所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)寫入相關(guān)地址,包括: 若否,拒絕將所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)寫入所述相關(guān)地址,確定所述備用虛擬機(jī)處于上一同步完成狀態(tài),其中,所述處于上一同步完成狀態(tài)是指所述備用虛擬機(jī)中存儲的數(shù)據(jù)與上一次同步完成狀態(tài)時存儲的數(shù)據(jù)相同; 若是,將所述緩存數(shù)據(jù)寫入所述相關(guān)地址,確定所述備用虛擬機(jī)處于與所述上一同步完成狀態(tài)不同的下一同步完成狀態(tài)。
3.根據(jù)權(quán)利要求1或2所述的方法,其中,所述緩存數(shù)據(jù)包括下列至少任意之一: 內(nèi)存臟頁數(shù)據(jù); 設(shè)備數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的方法,其中,所述主虛擬機(jī)與所述備用虛擬機(jī)通過傳輸控制協(xié)議TCP進(jìn)行連接。
5.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的方法,其中,所述主虛擬機(jī)以及所述備用虛擬機(jī)均采用開源虛擬機(jī)軟件QEMU-KVM執(zhí)行運(yùn)行操作。
6.根據(jù)權(quán)利要求1至5任一項(xiàng)所述的方法,其中,判斷所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件,包括: 監(jiān)測到所述主虛擬機(jī)與所述備用虛擬機(jī)的數(shù)據(jù)同步過程停止時,判斷所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件。
7.一種備用虛擬機(jī),其中,所述備用虛擬機(jī)中設(shè)有預(yù)取緩沖區(qū),用于接收來自所述主虛擬機(jī)的同步數(shù)據(jù)并進(jìn)行緩存,包括: 判斷器,配置為判斷預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否是完整的文件; 確定器,配置為根據(jù)判斷結(jié)果確定所述備用虛擬機(jī)的同步完成狀態(tài); 寫入器,配置為根據(jù)判斷結(jié)果將所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)寫入相關(guān)地址; 啟動器,配置為當(dāng)主虛擬機(jī)發(fā)生故障時,根據(jù)與故障發(fā)生時間最相近一次所述確定器確定的所述備用虛擬機(jī)處于的同步完成狀態(tài)啟動容錯功能。
8.根據(jù)權(quán)利要求7所述的備用虛擬機(jī),其中,還包括: 監(jiān)測器,配置為監(jiān)測所述主虛擬機(jī)與所述備用虛擬機(jī)的數(shù)據(jù)同步過程;以及 監(jiān)測到所述主虛擬機(jī)與所述備用虛擬機(jī)的數(shù)據(jù)同步過程停止時,觸發(fā)所述判斷器判斷所述預(yù)取緩沖區(qū)中的緩存數(shù)據(jù)是否完整。
【文檔編號】G06F11/14GK103885857SQ201410085945
【公開日】2014年6月25日 申請日期:2014年3月10日 優(yōu)先權(quán)日:2014年3月10日
【發(fā)明者】王峻青, 尹殷, 田媛媛 申請人:中標(biāo)軟件有限公司