本發(fā)明涉及數(shù)據(jù)庫的備份和恢復(fù)技術(shù)領(lǐng)域,尤其涉及一種基于KVM虛擬化的無代理模式備份方法和系統(tǒng)。
背景技術(shù):
隨著我國信息化程度的提高,軟件國產(chǎn)化已經(jīng)成為國家安全的重要組成部分?;贚inux內(nèi)核的國產(chǎn)操作系統(tǒng),包括紅旗Linux,中標(biāo)麒麟等,受到國家有關(guān)部門的高度重視和推進部署。作為Linux內(nèi)核原生的KVM,勢必會成為國產(chǎn)虛擬化平臺的首選。
盡管KVM在服務(wù)器虛擬化領(lǐng)域得到了廣泛研究和應(yīng)用,由于其問世時間比VMware和XEN晚,其穩(wěn)定性和可靠性也略遜一籌。KVM本身并沒有對上層虛擬機提供可靠性保護,國內(nèi)外有部分數(shù)據(jù)備份廠商提供了對KVM虛擬機的備份保護方案,但大部分要求在虛擬機的客戶操作系統(tǒng)安裝備份代理,這無疑將極大增加系統(tǒng)部署和人員維護成本,并且容易影響企業(yè)應(yīng)用和運行操作系統(tǒng)。另外,傳統(tǒng)的kvm虛擬機備份廠商沒有提供快速恢復(fù)功能,會增大企業(yè)應(yīng)用中斷的時間,從而造成企業(yè)更多的損失。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種可減少系統(tǒng)部署和人員維護成本的基于KVM虛擬化的無代理模式備份方法。
為了實現(xiàn)上述目的,本發(fā)明提供一種基于KVM虛擬化的無代理模式備份方法,包括以下步驟:
S10:在web災(zāi)備管理系統(tǒng)注冊需要備份虛擬機所在的宿主機,遠程連接宿主機掃描所有虛擬機信息,將虛擬機信息更新到數(shù)據(jù)庫,為創(chuàng)建備份任務(wù)和啟動任務(wù)提供基本信息;
S20:創(chuàng)建備份任務(wù),每個備份任務(wù)涉及一臺宿主機下的多個虛擬機以及一臺備份服務(wù)器,將備份任務(wù)信息更新到數(shù)據(jù)庫;
S30:啟動備份任務(wù),不中斷虛擬機業(yè)務(wù),將上一步選擇需要備份的虛擬機磁盤和配置文件通過網(wǎng)絡(luò)傳輸?shù)絺浞莘?wù)器上;
S40:創(chuàng)建快速恢復(fù)任務(wù),根據(jù)數(shù)據(jù)庫的虛擬機和宿主機信息,選擇需要恢復(fù)的虛擬機名稱、恢復(fù)的目標(biāo)機以及新建恢復(fù)虛擬機的名稱;
S50:啟動快速恢復(fù)任務(wù),遠程連接宿主機,將虛擬機的磁盤文件和配置文件快速恢復(fù)到宿主機,重建虛擬機。
優(yōu)選的,S10步驟具體包括以下步驟:
S101:登錄web災(zāi)備管理系統(tǒng),進入注冊宿主機頁面;
S102:填寫宿主機ip地址以及用于遠程連接宿主機的用戶名和密碼,頁面向備份服務(wù)器上的后臺程序發(fā)送注冊宿主機的消息,并附帶宿主機ip、用戶名和密碼等參數(shù),頁面等待后臺返回;
S103:后臺收到頁面注冊宿主機的消息后,獲取頁面?zhèn)鬟f的宿主機ip、用戶名和密碼參數(shù),根據(jù)宿主機ip地址建立遠程連接,在連接的過程中會驗證用戶名和密碼的合法性,如果用戶名和密碼正確,連接成功執(zhí)行下一步,否則連接失敗,給頁面返回注冊失敗的結(jié)果;
S104:掃描宿主機上的所有虛擬機信息,包括虛擬機UUID、虛擬機名稱、虛擬機配置文件以及虛擬機磁盤信息,將虛擬機信息添加到數(shù)據(jù)庫中;
S105:關(guān)閉和宿主機的連接,并向頁面返回注冊成功的信息。
優(yōu)選的,S20步驟具體包括以下步驟:
S201:進入創(chuàng)建備份任務(wù)頁面,選擇需要備份的虛擬機,頁面向備份服務(wù)器上的后臺程序發(fā)送創(chuàng)建備份任務(wù)的消息,等待后臺返回;
S202:后臺收到頁面創(chuàng)建備份任務(wù)的消息后,獲取頁面?zhèn)鬟f過來的任務(wù)信息,將任務(wù)信息更新到數(shù)據(jù)庫,向頁面返回創(chuàng)建任務(wù)成功。
優(yōu)選的,S30步驟具體包括以下步驟:
S301:進入啟動備份任務(wù)頁面,選擇任務(wù)并啟動,頁面向備份服務(wù)器上的后臺程序發(fā)送啟動備份任務(wù)的消息,等待后臺返回;
S302:后臺收到頁面啟動備份任務(wù)的消息后,獲取任務(wù)信息,獲取任務(wù)成功進行下一步,否則向頁面返回任務(wù)不存在的錯誤;
S303:判斷任務(wù)是否已經(jīng)在運行,如果任務(wù)已經(jīng)運行,則備份失敗,并向頁面返回任務(wù)已經(jīng)運行的錯誤,反之,則進行下一步;
S304:和宿主機建立遠程連接,如果連接成功,則進行下一步,否則備份失敗,則向頁面返回連接宿主機失敗的錯誤;
S305:獲取虛擬機磁盤的總大小和備份服務(wù)器的剩余存儲大小,如果備份服務(wù)器剩余存儲空間足夠,則進行下一步,否則關(guān)閉和宿主機的連接,備份失敗,向頁面返回備份服務(wù)器存儲空間不足的消息;
S306:更新任務(wù)狀態(tài)為運行,對虛擬機所有磁盤創(chuàng)建快照,創(chuàng)建快照成功,則進行下一步,否則則關(guān)閉和宿主機的連接,備份失敗,設(shè)置任務(wù)狀態(tài)出錯,向頁面返回創(chuàng)建快照失敗的消息;
S307:在備份服務(wù)器上創(chuàng)建存儲虛擬機磁盤和配置文件的目錄uuid_timestamp;
S308:更新任務(wù)狀態(tài)為停止,刪除備份服務(wù)器的uuid_timestamp目錄,進入下一步;
S309:刪除虛擬機磁盤快照,關(guān)閉和宿主機的連接,如果是用戶停止任務(wù),則向頁面返回停止任務(wù)成功的消息,否則向頁面返回備份成功的消息。
優(yōu)選的,S40步驟具體包括以下步驟:
S401:用進入創(chuàng)建快速恢復(fù)任務(wù)頁面,選擇需要快速恢復(fù)的備份點,并選擇快速恢復(fù)的目標(biāo)機ip,填寫新建虛擬機名稱以及恢復(fù)路徑,頁面向備份服務(wù)器上的后臺程序發(fā)送創(chuàng)建快速恢復(fù)任務(wù)的消息,等待后臺返回;
S402:后臺收到頁面創(chuàng)建快速恢復(fù)任務(wù)的消息后,獲取頁面?zhèn)鬟f過來的任務(wù)信息,將任務(wù)信息更新到數(shù)據(jù)庫,向頁面返回創(chuàng)建快速恢復(fù)任務(wù)成功。
優(yōu)選的,S50步驟具體包括以下步驟:
S501:進入啟動快速恢復(fù)任務(wù)頁面,選擇任務(wù)并啟動,頁面向備份服務(wù)器上的后臺程序發(fā)送啟動快速恢復(fù)任務(wù)的消息,等待后臺返回;
S502:后臺收到頁面啟動快速恢復(fù)任務(wù)的消息后,獲取任務(wù)信息,獲取任務(wù)成功則進行下一步,否則向頁面返回任務(wù)不存在的錯誤;
S503:判斷任務(wù)是否已經(jīng)在運行,如果任務(wù)已經(jīng)運行,則恢復(fù)失敗,并向頁面返回任務(wù)已經(jīng)運行的錯誤,反之,則進行下一步;
S504:和目標(biāo)機建立遠程連接,如果連接成功,則進行下一步,否則快速恢復(fù)失敗,向頁面返回連接目標(biāo)機失敗的錯誤,建立連接方式和步驟S304類似;
S505:更新任務(wù)狀態(tài)為運行,將備份服務(wù)器上的備份點uuid_timestamp目錄通過網(wǎng)絡(luò)共享方式掛載到目標(biāo)機的恢復(fù)路徑share_des下,該路徑是創(chuàng)建快速恢復(fù)任務(wù)時由用戶指定,修改虛擬機配置文件中的磁盤存儲路徑指向share_des目錄的磁盤文件,然后進行下一步;
S506:將目標(biāo)機上的share_des目錄創(chuàng)建為kvm管理的存儲池,使用新創(chuàng)建的虛擬機配置文件創(chuàng)建新的虛擬機,虛擬機恢復(fù)成功,返回頁面快速恢復(fù)成功的消息。
進一步優(yōu)選的,所述步驟S307具體包括以下步驟:
S3071:將虛擬機的配置信息傳輸?shù)絺浞莘?wù)器的uuid_timestamp目錄;
S3072:循環(huán)對每個虛擬機的磁盤分塊依次傳輸?shù)絺浞莘?wù)器的uuid_timestamp目錄;
S3073:每次傳輸完一個塊,判斷用戶是否終止任務(wù),如果是,則進入步驟S308;否則則繼續(xù)傳輸下一個磁盤塊,直到所有磁盤數(shù)據(jù)備份完成,然后進入步驟S309。
本發(fā)明的另一目的在于提供一種可減少系統(tǒng)部署和人員維護成本的基于KVM虛擬化的無代理模式備份系統(tǒng)。
為了實現(xiàn)上述目的,本發(fā)明提供一種基于KVM虛擬化的無代理模式備份系統(tǒng),包括:
web災(zāi)備管理系統(tǒng):用戶通過瀏覽器登錄該web災(zāi)備管理系統(tǒng),管理整個備份恢復(fù)過程;
宿主機:所述宿主機包括兩個或兩個以上虛擬機,所述每個虛擬機均包含磁盤文件和配置文件;
備份服務(wù)器:將所述虛擬機的磁盤文件和配置文件備份到該備份服務(wù)器上,生成備份點,該備份服務(wù)器上存儲虛擬機的備份點信息,每一個備份點關(guān)聯(lián)一個虛擬機的磁盤文件和配置文件,用于快速恢復(fù)。
相對于現(xiàn)有技術(shù),本發(fā)明的有益效果如下:
1、無代理模式備份,不需要在虛擬機的客戶操作系統(tǒng)安裝備份代理,極大減少系統(tǒng)部署和人員維護成本;
2、支持秒級別快速恢復(fù),減少企業(yè)應(yīng)用停止的時間,降低企業(yè)的損失;
3、當(dāng)宿主機或者虛擬機發(fā)生故障時,可以快速重建虛擬機,恢復(fù)業(yè)務(wù)。
附圖說明
圖1為本發(fā)明一實施例的系統(tǒng)結(jié)構(gòu)示意圖。
圖2為本發(fā)明一實施例的備份流程示意圖。
圖3為本發(fā)明一實施例的恢復(fù)流程示意圖。
具體實施方式
為了便于對本發(fā)明進行理解,下面結(jié)合附圖及具體實施例對本發(fā)明作進一步描述。需要說明的是,在不相沖突的情況下,下述各實施例之間、以及各技術(shù)特征之間可以任意組合形成新的實施方案。
如圖1所示,本實施例提供一種基于KVM虛擬化的無代理模式備份系統(tǒng),包括:
web災(zāi)備管理系統(tǒng):用戶通過瀏覽器登錄該web災(zāi)備管理系統(tǒng),管理整個備份恢復(fù)過程;
宿主機:所述宿主機包括兩個或兩個以上虛擬機,每個虛擬機均包含磁盤文件和配置文件,在圖示中虛擬機有兩個,分別為虛擬機c和虛擬機d,在在其他的實施例中,虛擬中還可以是3個、4個,甚至更多;
備份服務(wù)器:將虛擬機的磁盤文件和配置文件備份到該備份服務(wù)器上,生成備份點,該備份服務(wù)器上存儲虛擬機的備份點信息,每一個備份點關(guān)聯(lián)一個虛擬機的磁盤文件和配置文件,用于快速恢復(fù),譬如虛擬機c的備份點a關(guān)聯(lián)虛擬機c的磁盤文件和配置文件,譬如虛擬機d的備份點b關(guān)聯(lián)虛擬機d的磁盤文件和配置文件。
本實施例提供一種基于KVM虛擬化的無代理模式備份方法,包括:
S10:在web災(zāi)備管理系統(tǒng)注冊需要備份虛擬機所在的宿主機,遠程連接宿主機掃描所有虛擬機信息,將虛擬機信息更新到數(shù)據(jù)庫,為創(chuàng)建備份任務(wù)和啟動任務(wù)提供基本信息;
S20:創(chuàng)建備份任務(wù),每個備份任務(wù)涉及一臺宿主機下的多個虛擬機以及一臺備份服務(wù)器,將備份任務(wù)信息更新到數(shù)據(jù)庫;
S30:啟動備份任務(wù),不中斷虛擬機業(yè)務(wù),將上一步選擇需要備份的虛擬機磁盤和配置文件通過網(wǎng)絡(luò)傳輸?shù)絺浞莘?wù)器上;
S40:創(chuàng)建快速恢復(fù)任務(wù),根據(jù)數(shù)據(jù)庫的虛擬機和宿主機信息,選擇需要恢復(fù)的虛擬機名稱、恢復(fù)的目標(biāo)機以及新建恢復(fù)虛擬機的名稱;
S50:啟動快速恢復(fù)任務(wù),遠程連接宿主機,將虛擬機的磁盤文件和配置文件快速恢復(fù)到宿主機,重建虛擬機。
如圖2所示,其備份具體流程如下:
備份開始;
判斷獲取任務(wù)備份任務(wù)信息是否成功,任務(wù)包括宿主機ip、需要備份的虛擬機列表;如果否,則備份失敗,結(jié)束備份流程;如果是,則
判斷任務(wù)是否已經(jīng)在運行,如果任務(wù)已經(jīng)在運行則備份失敗,結(jié)束備份流程;如果否,則
和宿主機的libvirtd創(chuàng)建遠程連接,通過libvirt api接口獲取需要備份虛擬機的磁盤和配置信息,判斷和宿主機創(chuàng)建連接是否成功,如果否,則備份失敗,結(jié)束備份流程;如果是,則
獲取虛擬機的總大小和備份服務(wù)器的剩余存儲大小,判斷備份服務(wù)器的存儲空間是否足夠,如果不夠,則關(guān)閉和宿主機的連接,備份失敗,結(jié)束備份流程;如果足夠,則
對虛擬機的磁盤創(chuàng)建外置快照,備份虛擬機使用快照文件,判斷對虛擬機所有磁盤創(chuàng)建外置快照是否成功,如果未成功,則關(guān)閉和宿主機的連接,備份失敗,結(jié)束備份流程;如果成功,則
在備份服務(wù)器上創(chuàng)建存儲虛擬機文件的目錄,備份虛擬機配置信息,i=0;
備份第i塊數(shù)據(jù);
判斷用戶是否終止任務(wù),如果是,則設(shè)置任務(wù)狀態(tài)為停止,刪除備份服務(wù)器的的存儲目錄,刪除快照,關(guān)閉和宿主機的連接,備份結(jié)束;如果否,則
判斷磁盤數(shù)據(jù)是否全部備份完成,如果否,則回到備份第i塊數(shù)據(jù)步驟;如果是,則刪除快照,關(guān)閉和宿主機的連接,備份結(jié)束,備份服務(wù)器上會生成一個備份點,可以用于快速恢復(fù)虛擬機。
如圖3所示,其快速恢復(fù)具體流程如下:
恢復(fù)開始;
選擇需要恢復(fù)的虛擬機及備份點,備份點信息包括源宿主機ip、虛擬機磁盤文件和配置文件;
指定新建虛擬機名稱和恢復(fù)目標(biāo)機ip,并檢查任務(wù)是否已經(jīng)在運行,如果任務(wù)已經(jīng)在運行則快速恢復(fù)失??;
和目標(biāo)機的libvirtd創(chuàng)建遠程連接,判斷和目標(biāo)機建立遠程連接是否成功,如果未成功,則恢復(fù)失敗,結(jié)束恢復(fù)流程;如果成功,則
將備份服務(wù)器的備份點目錄通過網(wǎng)絡(luò)共享方式掛載到目標(biāo)機,可以是通過NFS或者samba網(wǎng)絡(luò)共享方式將備份服務(wù)器上需要恢復(fù)的備份點掛載到目標(biāo)機的目錄;
判斷掛載是否成功,如果未成功,則關(guān)閉與目標(biāo)機的遠程連接,恢復(fù)失敗,結(jié)束恢復(fù)流程;如果成功,則
在目標(biāo)機上以掛載的目錄創(chuàng)建KVM存儲池,具體為通過libvirt api接口來創(chuàng)建存儲池,讓libvirt可以管理該虛擬機;
修改虛擬機配置文件數(shù)據(jù)存儲路徑以及虛擬機名稱,使用期創(chuàng)建虛擬機;關(guān)閉與目標(biāo)機的遠程連接,快速飛虎完成,結(jié)束恢復(fù)流程。
在一具體的實施例中,S10步驟具體包括以下步驟:
S101:登錄web災(zāi)備管理系統(tǒng),進入注冊宿主機頁面;
S102:填寫宿主機ip地址以及用于遠程連接宿主機的用戶名和密碼,頁面向備份服務(wù)器上的后臺程序發(fā)送注冊宿主機的消息,并附帶宿主機ip、用戶名和密碼等參數(shù),頁面等待后臺返回;
S103:后臺收到頁面注冊宿主機的消息后,獲取頁面?zhèn)鬟f的宿主機ip、用戶名和密碼參數(shù),根據(jù)宿主機ip地址建立遠程連接,在連接的過程中會驗證用戶名和密碼的合法性,如果用戶名和密碼正確,連接成功執(zhí)行下一步,否則連接失敗,給頁面返回注冊失敗的結(jié)果;
S104:掃描宿主機上的所有虛擬機信息,包括虛擬機UUID、虛擬機名稱、虛擬機配置文件以及虛擬機磁盤信息,將虛擬機信息添加到數(shù)據(jù)庫中;
S105:關(guān)閉和宿主機的連接,并向頁面返回注冊成功的信息。
根據(jù)上述說明書的揭示和教導(dǎo),本發(fā)明所屬領(lǐng)域的技術(shù)人員還可以對上述實施方式進行變更和修改,因此,本發(fā)明并不局限于上面揭示和描述的具體實施方式,對本發(fā)明的一些修改和變更也應(yīng)當(dāng)落入本發(fā)明的權(quán)利要求的保護范圍內(nèi)。此外,盡管本說明書中使用了一些特定的術(shù)語,但這些術(shù)語只是為了方便說明,并不對本發(fā)明構(gòu)成任何限制。