專利名稱:一種使用虛擬機(jī)來(lái)實(shí)現(xiàn)系統(tǒng)的備份以及災(zāi)難恢復(fù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)相關(guān)領(lǐng)域,尤其是涉及到一種使用虛擬機(jī)來(lái)實(shí)現(xiàn)系統(tǒng)的備份以及災(zāi)難恢復(fù)的方法。
背景技術(shù):
在計(jì)算機(jī)系統(tǒng)的運(yùn)行過(guò)程當(dāng)中,計(jì)算機(jī)系統(tǒng)以及它的組件會(huì)遭受到各種各樣的故障,這些故障會(huì)導(dǎo)致計(jì)算機(jī)系統(tǒng)數(shù)據(jù)的丟失。例如,一個(gè)計(jì)算機(jī)系統(tǒng)的一個(gè)存儲(chǔ)設(shè)備也許會(huì)突然發(fā)生故障(如突然停電),會(huì)導(dǎo)致存儲(chǔ)在設(shè)備上的數(shù)據(jù)無(wú)法讀取。對(duì)軟件或硬件錯(cuò)誤的操作會(huì)導(dǎo)致存儲(chǔ)設(shè)備上數(shù)據(jù)的錯(cuò)誤,并且任何其它和該存儲(chǔ)設(shè)備有關(guān)聯(lián)的計(jì)算機(jī)系統(tǒng)或組件也許都會(huì)因?yàn)樵摂?shù)據(jù)錯(cuò)誤而出現(xiàn)故障。為了減少數(shù)據(jù)丟失的風(fēng)險(xiǎn),計(jì)算機(jī)系統(tǒng)的使用者會(huì)將數(shù)據(jù)拷貝成多份并保存到不同的存儲(chǔ)設(shè)備上。另一方面,使用者會(huì)經(jīng)常的將一些相應(yīng)的備份軟件安裝到計(jì)算機(jī)系統(tǒng)當(dāng)中,在計(jì)算機(jī)系統(tǒng)的使用過(guò)程當(dāng)中,備份軟件會(huì)自動(dòng)定時(shí)的對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行備份。但是在很多情況下,某一個(gè)或多個(gè)應(yīng)用也許正在被使用,這個(gè)時(shí)候備份程序忽然執(zhí)行了,這些應(yīng)用程序也許正打開(kāi)一個(gè)或多個(gè)文件,這時(shí)備份程序想要訪問(wèn)這些文件是不被允許的,從而導(dǎo)致備份文件的失敗。因此,一些備份軟件會(huì)為各種應(yīng)用程序定義很多代碼庫(kù),通過(guò)代碼庫(kù),備份程序嘗試與應(yīng)用程序進(jìn)行通信或者通過(guò)產(chǎn)生一些觸發(fā)裝置致使應(yīng)用程序?qū)?shù)據(jù)提交給文件從而使得這些文件可以被備份軟件進(jìn)行備份。但是,當(dāng)應(yīng)用程序發(fā)生改變的時(shí)候(例如應(yīng)用程序版本發(fā)生改變),備份程序也要進(jìn)行相應(yīng)的改變。另一方面,一些其它文件(例如windows的注冊(cè)表)會(huì)被經(jīng)常的打開(kāi),因此很難進(jìn)行備份。在很多情況下,災(zāi)難恢復(fù)配置被用來(lái)對(duì)于因?yàn)楣收隙a(chǎn)生的數(shù)據(jù)丟失提供額外的保護(hù),這些故障不僅僅是由計(jì)算機(jī)系統(tǒng)本身產(chǎn)生還包括系統(tǒng)周圍的環(huán)境因素(例如忽然斷電,發(fā)生火災(zāi))。在災(zāi)難恢復(fù)配置中,數(shù)據(jù)的狀態(tài)會(huì)通過(guò)狀態(tài)檢測(cè)包周期性的從某一計(jì)算機(jī)系統(tǒng)發(fā)送到另一計(jì)算機(jī)系統(tǒng),在某些情況下,第二個(gè)計(jì)算機(jī)系統(tǒng)在物理位置上會(huì)遠(yuǎn)離第一個(gè)計(jì)算機(jī)系統(tǒng)。假如第一個(gè)計(jì)算機(jī)系統(tǒng)發(fā)生了故障不能使用,數(shù)據(jù)會(huì)安全的存儲(chǔ)到第二個(gè)計(jì)算機(jī)系統(tǒng)當(dāng)中。還有在一些情況下,當(dāng)?shù)谝粋€(gè)計(jì)算機(jī)系統(tǒng)發(fā)生了故障不能使用時(shí),運(yùn)行在第一個(gè)計(jì)算機(jī)系統(tǒng)上的應(yīng)用會(huì)自動(dòng)在第二個(gè)計(jì)算機(jī)系統(tǒng)當(dāng)中重啟并繼續(xù)處理數(shù)據(jù)。但是, 運(yùn)行在計(jì)算機(jī)系統(tǒng)上的災(zāi)難恢復(fù)軟件會(huì)遇到一些問(wèn)題,這些問(wèn)題與備份軟件有著相似的情況。當(dāng)應(yīng)用程序正打開(kāi)或使用某些文件的時(shí)候,災(zāi)難恢復(fù)軟件同時(shí)對(duì)該文件進(jìn)行讀取并生成檢測(cè)包,從而會(huì)有沖突發(fā)生,應(yīng)用程序會(huì)阻止災(zāi)難恢復(fù)軟件對(duì)文件讀取,導(dǎo)致生成狀態(tài)檢測(cè)包失敗。除此之外,如果要在第二個(gè)計(jì)算機(jī)系統(tǒng)重啟運(yùn)行在第一個(gè)計(jì)算機(jī)系統(tǒng)上的應(yīng)用, 需要將該應(yīng)用的所有運(yùn)行狀態(tài)復(fù)制到第二個(gè)計(jì)算機(jī)系統(tǒng)上,而這個(gè)過(guò)程是非常復(fù)雜的。
發(fā)明內(nèi)容
鑒于現(xiàn)有計(jì)算機(jī)系統(tǒng)備份以及災(zāi)難恢復(fù)的缺陷,本發(fā)明的目的是提出使用Xen虛擬機(jī)來(lái)實(shí)現(xiàn)計(jì)算機(jī)系統(tǒng)的備份以及災(zāi)難恢復(fù)。—種使用虛擬機(jī)來(lái)實(shí)現(xiàn)系統(tǒng)的備份以及災(zāi)難恢復(fù)的方法,在Iinux操作系統(tǒng)上安裝有Xen虛擬機(jī),此方法包括災(zāi)難恢復(fù)步驟
(21)對(duì)虛擬機(jī)進(jìn)行監(jiān)控,捕獲虛擬機(jī)當(dāng)前的狀態(tài);
(22)拷貝需要進(jìn)行災(zāi)難恢復(fù)的虛擬機(jī)鏡像至災(zāi)難恢復(fù)節(jié)點(diǎn);
(23)周期性拷貝當(dāng)前虛擬機(jī)狀態(tài)至災(zāi)難恢復(fù)節(jié)點(diǎn);
(24)虛擬機(jī)發(fā)生故障,災(zāi)難恢復(fù)節(jié)點(diǎn)恢復(fù)虛擬機(jī)狀態(tài)。上述方法還包括備份步驟
(11)對(duì)虛擬機(jī)進(jìn)行監(jiān)控,捕獲虛擬機(jī)當(dāng)前的狀態(tài);
(12)對(duì)虛擬機(jī)進(jìn)行掛起操作;
(13)拷貝虛擬機(jī)鏡像;
(14)恢復(fù)虛擬機(jī)運(yùn)行狀態(tài)。所述計(jì)算機(jī)的操作系統(tǒng)包含一個(gè)域0,域0是一個(gè)修改過(guò)的Linux內(nèi)核,是唯一運(yùn)行在Xen管理程序之上的虛擬機(jī),它擁有訪問(wèn)物理I/O資源的權(quán)限,同時(shí)和系統(tǒng)上運(yùn)行的其他虛擬機(jī)進(jìn)行交互,可以構(gòu)建多個(gè)虛擬機(jī),并管理虛擬設(shè)備,能夠?qū)μ摂M機(jī)進(jìn)行掛起等管理任務(wù);在本系統(tǒng)當(dāng)中,將用戶需要使用的計(jì)算機(jī)系統(tǒng)安裝到虛擬機(jī)域1上,在域1上可以運(yùn)行一個(gè)或多個(gè)應(yīng)用程序,將備份程序和策略執(zhí)行程序安裝到域0的虛擬機(jī)當(dāng)中。其中步驟(11)中,通過(guò)Xen虛擬機(jī)域0對(duì)各個(gè)虛擬機(jī)進(jìn)行監(jiān)控,并周期性的獲取各虛擬機(jī)運(yùn)行狀態(tài)。其中步驟(12)中,通過(guò)Xen虛擬機(jī)域0對(duì)各個(gè)虛擬機(jī)進(jìn)行管理,當(dāng)需要對(duì)虛擬機(jī)狀態(tài)進(jìn)行備份的時(shí)候,對(duì)虛擬機(jī)進(jìn)行掛起操作。其中步驟(14)中,當(dāng)(13)步驟完成后,通過(guò)Xen虛擬機(jī)域0恢復(fù)虛擬機(jī)運(yùn)行狀態(tài)。其中步驟(22)中,在進(jìn)行災(zāi)難恢復(fù)前,需要事先將虛擬機(jī)的鏡像拷貝至災(zāi)難恢復(fù)節(jié)點(diǎn)上,當(dāng)災(zāi)難恢復(fù)開(kāi)始進(jìn)行的時(shí)候,災(zāi)難恢復(fù)節(jié)點(diǎn)可以通過(guò)該鏡像創(chuàng)建一個(gè)新的虛擬機(jī), 當(dāng)原虛擬機(jī)發(fā)生故障的時(shí)候,新的虛擬機(jī)能夠接管原虛擬機(jī)的運(yùn)行狀態(tài),從而保證運(yùn)行在原虛擬機(jī)上的應(yīng)用程序不間斷的運(yùn)行。其中步驟(23)中,災(zāi)難恢復(fù)節(jié)點(diǎn)上的新虛擬機(jī)要與原虛擬機(jī)狀態(tài)保持一致,因此需要將原虛擬機(jī)的運(yùn)行狀態(tài)復(fù)制到新虛擬機(jī)上,通過(guò)狀態(tài)檢測(cè)包周期性的將原虛擬機(jī)狀態(tài)拷貝到新虛擬機(jī)上,通過(guò)狀態(tài)檢測(cè)包還可以判定原虛擬機(jī)是否發(fā)生故障。其中步驟(24)中,當(dāng)步驟(23)中周期性檢測(cè)包中斷后,系統(tǒng)會(huì)判定原虛擬機(jī)以及發(fā)生故障,系統(tǒng)會(huì)自動(dòng)激活新虛擬機(jī)來(lái)接管原虛擬機(jī)的運(yùn)行狀態(tài),從而保證系統(tǒng)正常運(yùn)行。本發(fā)明通過(guò)Xen虛擬機(jī)對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行備份和災(zāi)難恢復(fù),在備份和災(zāi)難恢復(fù)的過(guò)程當(dāng)中,只需要對(duì)運(yùn)行計(jì)算機(jī)系統(tǒng)的虛擬機(jī)進(jìn)行備份和災(zāi)難恢復(fù)即可,不需要額外的安裝備份軟件以及災(zāi)難恢復(fù)軟件,減少了對(duì)于備份軟件以及災(zāi)難恢復(fù)軟件的維護(hù)與升級(jí)所帶來(lái)的時(shí)間和成本支出,能夠有效的避免對(duì)于傳統(tǒng)的備份和災(zāi)難恢復(fù)方法過(guò)程當(dāng)中遇到的例如文件讀取沖突等問(wèn)題。
圖1為單一計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)示意圖;圖2為圖1計(jì)算機(jī)系統(tǒng)備份過(guò)程詳細(xì)流程圖3為雙計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)示意圖,其中計(jì)算機(jī)系統(tǒng)2為計(jì)算機(jī)系統(tǒng)1的災(zāi)難恢復(fù)節(jié)點(diǎn); 圖4為圖3系統(tǒng)災(zāi)難恢復(fù)過(guò)程詳細(xì)流程圖。
具體實(shí)施例方式為了使本發(fā)明的特征及優(yōu)點(diǎn)得到更清楚的了解,以下結(jié)合附圖,作詳細(xì)說(shuō)明如下 如圖1所示,描述了在Iinux操作系統(tǒng)上安裝完Xen虛擬機(jī)后單一計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)示意圖, 該系統(tǒng)包含一個(gè)域0 (Domain 0),域0是一個(gè)修改過(guò)的Linux kernel (內(nèi)核),是唯一運(yùn)行在Xen Hypervisor (管理程序)之上的虛擬機(jī),它擁有訪問(wèn)物理I/O資源的權(quán)限,同時(shí)和系統(tǒng)上運(yùn)行的其他虛擬機(jī)進(jìn)行交互,它擁有特殊的管理權(quán)限,它可以構(gòu)建多個(gè)虛擬機(jī),并管理虛擬設(shè)備,能夠?qū)μ摂M機(jī)進(jìn)行掛起等管理任務(wù)。在本系統(tǒng)當(dāng)中,將用戶需要使用的計(jì)算機(jī)系統(tǒng)安裝到虛擬機(jī)域1上,在域1上可以運(yùn)行一個(gè)或多個(gè)應(yīng)用程序。將備份程序和策略執(zhí)行程序安裝到域O的虛擬機(jī)當(dāng)中,策略執(zhí)行程序可以使用C語(yǔ)言或腳本語(yǔ)言進(jìn)行編寫, 主要負(fù)責(zé)執(zhí)行用戶自定義的備份策略,通過(guò)讀取備份策略信息定時(shí)的調(diào)用域O上的備份程序。備份程序可以使用C語(yǔ)言進(jìn)行編寫,使用C語(yǔ)言能夠很好的對(duì)libvirt(虛擬化工具的 C函數(shù)庫(kù))庫(kù)中的函數(shù)進(jìn)行調(diào)用,操作虛擬機(jī)比較方便,備份程序需要實(shí)現(xiàn)以下幾個(gè)動(dòng)作監(jiān)控虛擬機(jī)狀態(tài)、備份虛擬機(jī)、恢復(fù)虛擬機(jī),自動(dòng)拷貝虛擬機(jī)鏡像等。其具體步驟說(shuō)明如下
1) 如圖2所示,當(dāng)對(duì)虛擬機(jī)應(yīng)用程序進(jìn)行備份時(shí),其根據(jù)定義的備份策略進(jìn)行操作,在這個(gè)備份策略當(dāng)中,定義備份程序的開(kāi)啟時(shí)間,以及每天備份的次數(shù),哪些虛擬機(jī)需要進(jìn)行備份,制定完備份策略后,將備份策略的信息保存到域O中的策略備份文件上,該文件可以是普通的文件,也可以是XML類型的文件,使用XML文件保存策略信息比較規(guī)范,程序讀取比較方便。運(yùn)行策略執(zhí)行程序,策略執(zhí)行程序會(huì)讀取策略備份文件上的信息,從而計(jì)算出備份程序需要開(kāi)啟時(shí)間,通過(guò)定時(shí)機(jī)制,程序在開(kāi)啟時(shí)間點(diǎn)自動(dòng)啟動(dòng)域O上的備份程序。2 ) 通過(guò)步驟1開(kāi)啟域O虛擬機(jī)上的備份程序以后,為了保證虛擬機(jī)狀態(tài)的完整性,備份程序會(huì)首先調(diào)用libvirt (虛擬化工具的C函數(shù)庫(kù))庫(kù)中virDomainSuspend (控制域)函數(shù)對(duì)運(yùn)行在系統(tǒng)中的虛擬機(jī)進(jìn)行掛起操作。3) 步驟2中掛起操作完成后,域0虛擬機(jī)上的備份程序會(huì)通過(guò)SSH (安全外殼協(xié)議)方式將該虛擬機(jī)的鏡像文件拷貝至備份存儲(chǔ)設(shè)備上。4) 當(dāng)步驟3中將虛擬機(jī)鏡像拷貝完成后,域0上的備份程序會(huì)調(diào)用libvirt庫(kù)中VirDomainResume函數(shù)恢復(fù)虛擬機(jī),虛擬機(jī)正常運(yùn)行。5) 通過(guò)域O虛擬機(jī)上的備份程序判斷是否所有虛擬機(jī)都已完成備份,若都已完成,則退出,否則選擇下一個(gè)虛擬機(jī),重復(fù)2-4步驟。其中,在步驟1當(dāng)中,用戶可以根據(jù)自身的需求以及所擁有的硬件條件制定出適合自己的備份策略,每天一次或多次開(kāi)啟備份程序?qū)μ摂M機(jī)進(jìn)行備份。其中,在步驟2當(dāng)中,備份程序可以通過(guò)1 ibvirt虛擬化庫(kù)提供的接口對(duì)虛擬機(jī)進(jìn)行掛起操作,除此之外,用戶也可以通過(guò)調(diào)用命令方式對(duì)虛擬機(jī)進(jìn)行掛起操作,使用virsh 命令行或者使用)(en自帶的命令行進(jìn)行操作。其中,步驟3拷貝虛擬機(jī)鏡像文件至備份存儲(chǔ)設(shè)備上,備份存儲(chǔ)設(shè)備為外部存儲(chǔ)設(shè)備,如圖1所示,為了防止計(jì)算機(jī)系統(tǒng)本身的存儲(chǔ)磁盤發(fā)生故障,備份存儲(chǔ)設(shè)備要與原虛擬機(jī)鏡像存儲(chǔ)設(shè)備進(jìn)行分離,兩者不能存放在一起。如圖3所示,描述了在Iinux操作系統(tǒng)上安裝完Xen虛擬機(jī)后雙計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)示意圖,計(jì)算機(jī)系統(tǒng)1、2都包含一個(gè)域0 (Domain 0),域0是一個(gè)修改過(guò)的Linux kernel,是唯一運(yùn)行在Xen Hypervisor之上的虛擬機(jī),它擁有訪問(wèn)物理I/O資源的權(quán)限, 同時(shí)和系統(tǒng)上運(yùn)行的其他虛擬機(jī)進(jìn)行交互,它擁有特殊的管理權(quán)限,它可以構(gòu)建多個(gè)虛擬機(jī),并管理虛擬設(shè)備,能夠?qū)μ摂M機(jī)進(jìn)行掛起等管理任務(wù)。其中計(jì)算機(jī)系統(tǒng)2為計(jì)算機(jī)系統(tǒng) 1的災(zāi)難恢復(fù)節(jié)點(diǎn),計(jì)算機(jī)系統(tǒng)2與計(jì)算機(jī)系統(tǒng)1有著相似的運(yùn)行環(huán)境,當(dāng)計(jì)算機(jī)系統(tǒng)1上的虛擬機(jī)域1發(fā)生故障的時(shí)候,計(jì)算機(jī)系統(tǒng)2上的虛擬機(jī)域1可以接管運(yùn)行在計(jì)算機(jī)系統(tǒng) 1上的虛擬機(jī)域1的應(yīng)用,從而使得應(yīng)用能夠不間斷的運(yùn)行。在計(jì)算機(jī)系統(tǒng)1中域O當(dāng)中安裝周期性狀態(tài)檢測(cè)程序,鏡像拷貝程序。計(jì)算機(jī)系統(tǒng)2中域O運(yùn)行虛擬機(jī)災(zāi)難恢復(fù)程序。 在實(shí)際應(yīng)用部署當(dāng)中,計(jì)算機(jī)系統(tǒng)2作為災(zāi)難恢復(fù)節(jié)點(diǎn),可以對(duì)多個(gè)計(jì)算機(jī)系統(tǒng)1這樣的系統(tǒng)節(jié)點(diǎn)進(jìn)行災(zāi)難恢復(fù),但是為了簡(jiǎn)化說(shuō)明,在本文當(dāng)中,計(jì)算機(jī)系統(tǒng)2只對(duì)計(jì)算機(jī)系統(tǒng)1進(jìn)行災(zāi)難恢復(fù),其具體步驟如下所示
1) 如圖4所示,首先開(kāi)啟系統(tǒng)災(zāi)難恢復(fù)程序,選定需要進(jìn)行災(zāi)難恢復(fù)保護(hù)的虛擬機(jī),如圖3所示需要進(jìn)行保護(hù)的虛擬機(jī)為計(jì)算機(jī)系統(tǒng)1上的虛擬機(jī)域1,開(kāi)啟災(zāi)難保護(hù)后, 計(jì)算機(jī)系統(tǒng)2上新建虛擬機(jī)域1作為虛擬機(jī)災(zāi)難恢復(fù)節(jié)點(diǎn)。運(yùn)行在計(jì)算機(jī)系統(tǒng)1域O上的鏡像自動(dòng)拷貝程序會(huì)通過(guò)SSH方式將運(yùn)行在計(jì)算機(jī)系統(tǒng)1上的虛擬機(jī)域1的鏡像拷貝到計(jì)算機(jī)系統(tǒng)2上的存儲(chǔ)設(shè)備上。在計(jì)算機(jī)系統(tǒng)2上啟動(dòng)虛擬機(jī)域1,設(shè)其狀態(tài)為暫停狀態(tài)。2) 步驟1完成后,在計(jì)算機(jī)系統(tǒng)1中域O上,啟動(dòng)發(fā)送檢測(cè)包程序,在第一次發(fā)送過(guò)程,需要復(fù)制計(jì)算機(jī)系統(tǒng)1域1的完整狀態(tài)(包括CPU指令、磁盤緩存請(qǐng)求、內(nèi)存事件、網(wǎng)絡(luò)包等),拷貝至計(jì)算機(jī)系統(tǒng)2上域1上,加載至計(jì)算機(jī)系統(tǒng)域1內(nèi)存中。3) 步驟2完成后,計(jì)算機(jī)系統(tǒng)1域O上檢測(cè)包發(fā)送程序會(huì)周期性的復(fù)制計(jì)算機(jī)系統(tǒng)域1上修改過(guò)的內(nèi)存頁(yè),加載到狀態(tài)檢測(cè)包當(dāng)中,并將狀態(tài)檢測(cè)包發(fā)送至計(jì)算機(jī)系統(tǒng)2虛擬機(jī)域1上。4) 計(jì)算機(jī)系統(tǒng)2虛擬機(jī)域1周期性的接收狀態(tài)檢測(cè)包,加載狀態(tài)檢測(cè)包中的內(nèi)存頁(yè)信息,根據(jù)狀態(tài)檢測(cè)包,可以判定計(jì)算機(jī)系統(tǒng)1域1是否發(fā)生故障,當(dāng)狀態(tài)包停止發(fā)送,則激活災(zāi)難恢復(fù)節(jié)點(diǎn)上的虛擬機(jī)。其中,步驟1將虛擬機(jī)鏡像拷貝到計(jì)算機(jī)系統(tǒng)2上的存儲(chǔ)設(shè)備上,拷貝到計(jì)算機(jī)系統(tǒng)2上的鏡像的存放路徑必須與計(jì)算機(jī)系統(tǒng)1存放路徑一致。隨著Xen虛擬機(jī)的不斷發(fā)展,Xen虛擬機(jī)的性能方面也在不斷的提升,在Xen虛擬機(jī)上運(yùn)行系統(tǒng)和應(yīng)用與在實(shí)際物理機(jī)上運(yùn)行系統(tǒng)和應(yīng)用在性能方面差距正在不斷減少,特別是在Xen4. 0版本開(kāi)始,Xen虛擬機(jī)增加了 Remus模塊,提供了熱備的相關(guān)功能,對(duì)于系統(tǒng)的災(zāi)難恢復(fù)提供了很大的幫助。其中,步驟2、3可以使用Xen的Remus模塊來(lái)實(shí)現(xiàn),使用 Remus可以對(duì)虛擬機(jī)的運(yùn)行狀態(tài)進(jìn)行精確的拷貝,Remus通過(guò)緩存在200毫秒間隔內(nèi)將所有網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送到目的地。其中,步驟4可以使用Xen自帶虛擬機(jī)恢復(fù)模塊來(lái)實(shí)現(xiàn),當(dāng)在指定時(shí)間內(nèi)沒(méi)有接收到計(jì)算機(jī)系統(tǒng)1發(fā)送過(guò)來(lái)的狀態(tài)檢測(cè)包時(shí),此時(shí)系統(tǒng)會(huì)判定計(jì)算機(jī)系統(tǒng)1已經(jīng)發(fā)生故障。計(jì)算機(jī)系統(tǒng)2會(huì)自動(dòng)調(diào)用虛擬機(jī)恢復(fù)模塊來(lái)激活虛擬機(jī),從而實(shí)現(xiàn)系統(tǒng)的災(zāi)難恢復(fù)。
以上所述的實(shí)例對(duì)本發(fā)明的各個(gè)部分的實(shí)現(xiàn)方式作了詳細(xì)的說(shuō)明,但是本發(fā)明的具體實(shí)現(xiàn)形式并不局限于此,對(duì)于本技術(shù)領(lǐng)域的一般技術(shù)人員來(lái)說(shuō),在不背離本發(fā)明所述方法的精神和權(quán)利要求范圍的情況下對(duì)它進(jìn)行的各種顯而易見(jiàn)的改變都在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種使用虛擬機(jī)來(lái)實(shí)現(xiàn)系統(tǒng)的備份以及災(zāi)難恢復(fù)的方法,其特征是=Iinux操作系統(tǒng)上安裝有Xen虛擬機(jī),操作系統(tǒng)進(jìn)行了備份操作,災(zāi)難恢復(fù)方法包括步驟(21)對(duì)虛擬機(jī)進(jìn)行監(jiān)控,捕獲虛擬機(jī)當(dāng)前的狀態(tài);(22)拷貝需要進(jìn)行災(zāi)難恢復(fù)的虛擬機(jī)鏡像至災(zāi)難恢復(fù)節(jié)點(diǎn);(23)周期性拷貝當(dāng)前虛擬機(jī)狀態(tài)至災(zāi)難恢復(fù)節(jié)點(diǎn);(24)虛擬機(jī)發(fā)生故障,災(zāi)難恢復(fù)節(jié)點(diǎn)恢復(fù)虛擬機(jī)狀態(tài)。
2.如權(quán)利要求1所述方法,其特征在于備份步驟為(11)對(duì)虛擬機(jī)進(jìn)行監(jiān)控,捕獲虛擬機(jī)當(dāng)前的狀態(tài);(12)對(duì)虛擬機(jī)進(jìn)行掛起操作;(13)拷貝虛擬機(jī)鏡像;(14)恢復(fù)虛擬機(jī)運(yùn)行狀態(tài)。
3.如權(quán)利要求2所述方法,其特征在于所述操作系統(tǒng)包含一個(gè)域0,域0是一個(gè)修改過(guò)的Linux內(nèi)核,是唯一運(yùn)行在Xen管理程序之上的虛擬機(jī),它擁有訪問(wèn)物理I/O資源的權(quán)限,同時(shí)和系統(tǒng)上運(yùn)行的其他虛擬機(jī)進(jìn)行交互,構(gòu)建多個(gè)虛擬機(jī),并管理虛擬設(shè)備,對(duì)虛擬機(jī)進(jìn)行掛起等管理任務(wù);在本系統(tǒng)當(dāng)中,將用戶需要使用的計(jì)算機(jī)系統(tǒng)安裝到虛擬機(jī)域 1上,在域1上運(yùn)行一個(gè)或多個(gè)應(yīng)用程序,將備份程序和策略執(zhí)行程序安裝到域0的虛擬機(jī)當(dāng)中。
4.如權(quán)利要求3所述方法,其特征在于步驟(11),通過(guò)Xen虛擬機(jī)域0對(duì)各個(gè)虛擬機(jī)進(jìn)行監(jiān)控,并周期性的獲取各虛擬機(jī)運(yùn)行狀態(tài)。
5.如權(quán)利要求3所述方法,其特征在于步驟(12)中,通過(guò)Xen虛擬機(jī)域0對(duì)各個(gè)虛擬機(jī)進(jìn)行管理,對(duì)虛擬機(jī)狀態(tài)進(jìn)行備份時(shí),調(diào)用虛擬化工具的C函數(shù)庫(kù)中控制域函數(shù)對(duì)虛擬機(jī)進(jìn)行掛起操作。
6.如權(quán)利要求3所述方法,其特征在于步驟(14)中,當(dāng)(13)步驟完成后,通過(guò)Xen虛擬機(jī)域0調(diào)用虛擬化工具的C函數(shù)庫(kù)中控制域函數(shù)恢復(fù)虛擬機(jī)運(yùn)行狀態(tài)。
7.如權(quán)利要求3所述方法,其特征在于步驟(22)中,在進(jìn)行災(zāi)難恢復(fù)前,需要事先將虛擬機(jī)的鏡像拷貝至災(zāi)難恢復(fù)節(jié)點(diǎn)上,當(dāng)災(zāi)難恢復(fù)開(kāi)始進(jìn)行的時(shí)候,災(zāi)難恢復(fù)節(jié)點(diǎn)可以通過(guò)該鏡像創(chuàng)建一個(gè)新的虛擬機(jī),當(dāng)原虛擬機(jī)發(fā)生故障的時(shí)候,新的虛擬機(jī)能夠接管原虛擬機(jī)的運(yùn)行狀態(tài),從而保證運(yùn)行在原虛擬機(jī)上的應(yīng)用程序不間斷的運(yùn)行。
8.如權(quán)利要求3所述方法,其特征在于步驟(23)中,災(zāi)難恢復(fù)節(jié)點(diǎn)上的新虛擬機(jī)要與原虛擬機(jī)狀態(tài)保持一致,因此需要將原虛擬機(jī)的運(yùn)行狀態(tài)復(fù)制到新虛擬機(jī)上,通過(guò)狀態(tài)檢測(cè)包周期性的將原虛擬機(jī)狀態(tài)拷貝到新虛擬機(jī)上,通過(guò)狀態(tài)檢測(cè)包還可以判定原虛擬機(jī)是否發(fā)生故障。
9.如權(quán)利要求3所述方法,其特征在于步驟(24)中,當(dāng)步驟(23)中周期性檢測(cè)包中斷后,系統(tǒng)會(huì)判定原虛擬機(jī)以及發(fā)生故障,系統(tǒng)會(huì)自動(dòng)激活新虛擬機(jī)來(lái)接管原虛擬機(jī)的運(yùn)行狀態(tài),從而保證系統(tǒng)正常運(yùn)行。
10.如權(quán)利要求3所述方法,其特征在于步驟(13)中,所述域0虛擬機(jī)上的備份程序會(huì)通過(guò)安全外殼協(xié)議方式將該虛擬機(jī)的鏡像文件拷貝至備份存儲(chǔ)設(shè)備上。
全文摘要
本發(fā)明提出了一種使用虛擬機(jī)來(lái)實(shí)現(xiàn)系統(tǒng)的備份以及災(zāi)難恢復(fù)的方法。本發(fā)明利用Xen虛擬機(jī)的Remus模塊對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行災(zāi)難恢復(fù),利用所有虛擬機(jī)通用的libvirt庫(kù)對(duì)計(jì)算機(jī)系統(tǒng)進(jìn)行備份,對(duì)運(yùn)行計(jì)算機(jī)系統(tǒng)的虛擬機(jī)進(jìn)行災(zāi)難恢復(fù)和備份時(shí),不需要額外的安裝災(zāi)難恢復(fù)以及備份軟件,減少了對(duì)于災(zāi)難恢復(fù)程序以及備份程序的維護(hù)與升級(jí)所帶來(lái)的時(shí)間和成本支出,能夠有效的避免對(duì)于傳統(tǒng)的災(zāi)難恢復(fù)和備份方法過(guò)程當(dāng)中遇到的例如文件讀取沖突等問(wèn)題。
文檔編號(hào)G06F9/455GK102541686SQ20111038720
公開(kāi)日2012年7月4日 申請(qǐng)日期2011年11月29日 優(yōu)先權(quán)日2011年11月29日
發(fā)明者蘭雨晴, 夏穎, 宋瀟豫, 蔣濤 申請(qǐng)人:中標(biāo)軟件有限公司