本發(fā)明屬于虛擬化技術領域,涉及到虛擬機快照回滾技術,具體涉及到一種基于組播技術的虛擬集群回滾方法及系統(tǒng)。
背景技術:
目前,在如數(shù)據(jù)中心或者云計算這樣大規(guī)模的計算處理平臺上,為了滿足分布式應用程序對處理能力的需求,虛擬機以集群形式部署應用程序。然而,大規(guī)模平臺中頻繁的故障往往使得集群中應用程序崩潰。為了保證應用程序可用性,快照回滾技術被提出,其在程序正常執(zhí)行階段將虛擬集群的運行時狀態(tài)保存入磁盤中,在集群程序失效后,這些數(shù)據(jù)將被讀出以恢復集群的執(zhí)行。
圖1顯示了數(shù)據(jù)中心的典型架構。存儲設備和服務器往往分別放置,其中存儲設備通過存儲網(wǎng)絡連接,而服務器則通過三層數(shù)據(jù)中心網(wǎng)絡進行管理。在這種架構下,虛擬集群快照文件存儲在存儲設備中,在回滾時,存儲文件由存儲網(wǎng)絡傳輸?shù)饺龑訑?shù)據(jù)中心網(wǎng)絡,最終發(fā)送給服務器。服務器上的虛擬機則從快照文件中讀取數(shù)據(jù),加載到其內存和設備中,然后恢復執(zhí)行。由于虛擬機運行時狀態(tài)數(shù)據(jù)量大,因此虛擬機快照文件相應較大。另一方面,虛擬集群因包含多個虛擬機,其快照文件將是單機的數(shù)倍。這在虛擬集群回滾時,產生較高的網(wǎng)絡開銷,同時在有限的網(wǎng)絡帶寬中,引入較高的回滾延遲。因此,如何在有限的網(wǎng)絡帶寬中,減少集群回滾的網(wǎng)絡開銷及延遲,是虛擬集群回滾技術中的關鍵問題之一。
本發(fā)明公開了一種基于組播的虛擬集群回滾方法及系統(tǒng),其利用組播技術將相同數(shù)據(jù)同時傳輸?shù)蕉鄠€服務器上,從而有效減少了網(wǎng)絡傳輸數(shù)據(jù)量,并加快了回滾時間。
技術實現(xiàn)要素:
本發(fā)明的主要目的在于提出一種基于組播技術的虛擬集群回滾方法及系統(tǒng),能夠對虛擬集群進行快速的回滾,并減少回滾過程中產生的傳輸數(shù)據(jù)量。
本發(fā)明的技術方案為:
一種基于組播技術的虛擬集群回滾方法,其步驟為:
1)存儲集群從快照文件中識別出數(shù)據(jù)相同的虛擬機頁面,然后根據(jù)虛擬機與物理機的對應關系確定出需要組播或單播的虛擬機頁面,對虛擬機頁面進行數(shù)據(jù)包封裝;其中,將數(shù)據(jù)相同且對應的虛擬機在同一臺物理機上恢復的虛擬機頁面確定為單播方式傳 輸,將數(shù)據(jù)內容相同且對應的虛擬機在不同物理機上恢復的虛擬機頁面確定為組播方式傳輸;
2)存儲集群判斷當前待發(fā)送的數(shù)據(jù)包是否為組播數(shù)據(jù)包,如果為組播數(shù)據(jù)包,則通知該組播數(shù)據(jù)包待發(fā)往的物理機加入到一組播組中,然后將該組播數(shù)據(jù)包發(fā)送到該組播組中;物理機對收到的組播數(shù)據(jù)包進行解析,將組播數(shù)據(jù)包中的虛擬機頁面恢復到相應的地址;如果為單播數(shù)據(jù)包以單播形式發(fā)送到對應物理機,物理機將該數(shù)據(jù)包中的虛擬機頁面恢復到相應的地址;其中,組播組中的物理機為對應組播數(shù)據(jù)包待發(fā)往的物理機集合。
進一步的,對數(shù)據(jù)相同的虛擬機頁面進行數(shù)據(jù)包封裝后的格式為:[頁面數(shù)目、{虛擬機編號i、頁編號j}、...、{虛擬機編號k、頁編號h}、頁面內容]。
進一步的,所述步驟2)中,存儲集群優(yōu)先發(fā)送組播數(shù)據(jù)包,然后發(fā)送單播數(shù)據(jù)包。
進一步的,對于單播數(shù)據(jù)包,存儲集群優(yōu)先發(fā)送內容相同且發(fā)送到同一臺物理機的單播數(shù)據(jù)包。
進一步的,所述存儲集群通過控制命令通知物理機加入組播組和退出組播組,維護組播組中的物理機為對應組播數(shù)據(jù)包待發(fā)往的物理機集合。
一種基于組播技術的虛擬集群回滾系統(tǒng),其特征在于,包括存儲集群和服務器集群,其中存儲集群中的每一存儲設備端上部署一回滾客戶端、控制客戶端和數(shù)據(jù)客戶端;服務器集群中的每一物理機上部署回滾服務端、控制服務端和數(shù)據(jù)服務端;
所述回滾客戶端,負責從快照文件中識別出數(shù)據(jù)相同的虛擬機頁面,然后根據(jù)虛擬機與物理機的對應關系確定出需要組播或單播的虛擬機頁面;
所述控制客戶端,負責發(fā)送控制命令,通知服務器集群中的物理機加入組播組和退出組播組;
所述數(shù)據(jù)客戶端,負責對虛擬機頁面進行數(shù)據(jù)包封裝和發(fā)送,其中,將數(shù)據(jù)相同且對應的虛擬機在同一臺物理機上恢復的虛擬機頁面封裝為單播數(shù)據(jù)包,將數(shù)據(jù)內容相同且對應的虛擬機在不同物理機上恢復的虛擬機頁面封裝為組播數(shù)據(jù)包;
所述回滾服務端,用于通過控制服務端和數(shù)據(jù)服務端來接收控制命令和數(shù)據(jù)包,以及根據(jù)收到的控制命令控制物理機加入或退出組播組;對收到的數(shù)據(jù)包進行解析,將數(shù)據(jù)包中的虛擬機頁面恢復到相應的地址。
與現(xiàn)有技術相比,本發(fā)明的積極效果為:
本發(fā)明能夠對虛擬集群進行快速的回滾,并減少回滾過程中產生的傳輸數(shù)據(jù)量。本發(fā)明的積極效果體現(xiàn)在以下方面:1)通過合并頁面數(shù)據(jù),從而將需要傳輸?shù)臄?shù)據(jù)量大大減少。特 別是虛擬集群中虛擬機之間存在較多相同數(shù)據(jù)的條件下,將有大量的數(shù)據(jù)相同并合并。2)對于需要傳輸?shù)蕉嗯_物理機的頁面,通過組播技術來傳輸,僅發(fā)送一份便可以將數(shù)據(jù)同時傳輸?shù)蕉嗯_物理機上,避免了相同頁面的重復傳輸。
附圖說明
圖1為數(shù)據(jù)中心架構圖;
圖2為基于組播的頁面?zhèn)鬏斒疽鈭D;
圖3為虛擬集群回滾系統(tǒng)架構圖;
圖4為虛擬集群回滾流程圖。
具體實施方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面結合附圖和具體實施例對本發(fā)明做進一步說明。
我們主要解決在虛擬集群需要回滾時,因讀取多個快照文件引入的網(wǎng)絡開銷大及回滾延遲大的問題。我們的解決方法如下:
虛擬集群中的虛擬機往往配置相同的操作系統(tǒng)、開發(fā)庫及應用程序,這使得虛擬機在運行分布式程序時,往往具備相同的數(shù)據(jù)內容。因此,通過識別虛擬機內部及之間的相同頁面,對相同頁面進行合并并傳輸,可以有效的減少所需要傳輸?shù)臄?shù)據(jù)量。同時,虛擬集群回滾時,虛擬機往往放置在不同的物理機上。因此,對于相同頁面的傳輸,我們可以通過組播技術,來僅傳輸一份數(shù)據(jù)而同時將數(shù)據(jù)發(fā)送到多臺物理節(jié)點上。如圖2所示,快照1、快照2及快照3為虛擬機1、虛擬機2及虛擬機3對應的快照文件。在回滾時,快照1和快照2中皆存在頁面A,同時,虛擬機1和虛擬機2在主機1上啟動,因此A將被合并并以單播方式傳輸。對于頁面B,其存在于三個快照文件中,由于虛擬機3在主機2上啟動,而虛擬機1、虛擬機2在主機1上啟動,因此頁面B需要發(fā)送到兩個物理機,將通過組播技術傳輸。對于頁面D和頁面E,其僅有一份,因此將以單播的方式來傳輸。
回滾流程。虛擬集群的回滾主要在存儲設備端實施,存儲設備端對快照文件進行處理,識別出哪些頁面應該單播或者組播,對于需組播的頁面通過UDP協(xié)議將頁面封裝并發(fā)送給物理機,而對于單播的頁面則利用TCP來發(fā)送。封裝后數(shù)據(jù)包的轉發(fā)由數(shù)據(jù)中心網(wǎng)絡完成。具體而言,虛擬集群的回滾分為三個階段:準備階段、組播階段及單播階段。
1)準備階段主要負責對快照文件讀取,并通過頁面對比識別出數(shù)據(jù)相同的頁面。同時,基于用戶所指定虛擬機的回滾位置,即虛擬機在哪臺物理機上恢復執(zhí)行,判斷出需要組播或 單播的頁面。具體而言,如果兩個頁面(分屬兩臺虛擬機)數(shù)據(jù)相同,且兩臺虛擬機在同一臺物理機恢復執(zhí)行,那么這兩個頁面將以單播的方式傳輸,如圖2中的頁面A。如果兩臺虛擬機分別在兩臺物理機上恢復執(zhí)行,則兩個頁面以組播的方式傳輸,如圖2中的頁面C。對于數(shù)據(jù)相同的頁面,無論其被單播或組播,我們將頁面封裝到數(shù)據(jù)包中。數(shù)據(jù)包格式為[頁面數(shù)目、{虛擬機編號1、頁編號1}、{虛擬機編號2、頁編號2}、{虛擬機編號2、頁編號6}...、{虛擬機編號k、頁編號k}、頁面內容]。
2)組播階段,由于已經(jīng)識別出了需要組播或單播的頁面,本階段主要負責對需要組播頁面的發(fā)送。對于組播的頁面,步驟1)中已經(jīng)將相同頁面封裝到數(shù)據(jù)包中。同時,由于虛擬機與物理機的對應關系已知(一般由用戶指定),因此可以獲知虛擬機頁面跟物理機的對應關系,進而可得到該條數(shù)據(jù)包應發(fā)往的物理機。該階段負責通知物理機加入到組播組中,最后將數(shù)據(jù)包發(fā)送到組播組中。待發(fā)下一條數(shù)據(jù)包時,重新計算出待發(fā)往的物理機,通知這些物理機加入到組播組中,然后將數(shù)據(jù)包發(fā)給新生成的組播組。該過程將重復執(zhí)行,直到所有需要組播的頁面全部發(fā)送。接收方,即物理機接收到組播包后,將數(shù)據(jù)包進行解析,依據(jù)將在該物理機上恢復的虛擬機(例如虛擬機編號1,虛擬機編號2),得到頁面應填充的地址(例如{虛擬機編號1,頁編號2},{虛擬機編號2,頁編號4},{虛擬機編號2,頁編號7},{虛擬機編號2,頁編號9},...{虛擬機編號2,頁編號14632}),最后將頁面內容拷貝到相應的地址。
3)單播階段。該過程將尋找快照文件中未發(fā)送的頁面,這些頁面包括兩類:一類是內容相同,但是發(fā)送到同一臺物理機的頁面,如圖2中的頁面A;另一類是內容獨特的頁面,即沒有其他頁數(shù)據(jù)內容與其相同,如圖2中的頁面E。這兩類頁面都通過單播技術來發(fā)送到物理機。發(fā)送過程中首先處理第一類頁面,第一類頁面的數(shù)據(jù)包格式與組播數(shù)據(jù)包格式相同,接收方的處理也相同,區(qū)別在于發(fā)送方并不需要構建組播組(因為只有一臺物理機)。第二類數(shù)據(jù)包的格式則簡單,其為[1(只有一個頁面)、虛擬機編號、頁編號、頁面內容],接收方接到該數(shù)據(jù)包后,將頁面內容拷貝到數(shù)據(jù)包中指定的虛擬機的頁編號中即可。
在3個階段完成后,所有的頁面都已發(fā)送完成。接收方在將頁面全部拷貝到對應虛擬機的對應頁號后,恢復虛擬機執(zhí)行。
系統(tǒng)架構。本發(fā)明公開的基于組播的虛擬集群回滾系統(tǒng)架構如圖3所示?;貪L客戶端部署在存儲設備端,其負責讀取快照文件中數(shù)據(jù),并利用調度器識別出相同頁面,然后依據(jù)用戶指定的虛擬機和物理機對應關系,計算出頁面封裝后的數(shù)據(jù)包該發(fā)往哪臺物理機。控制客戶端負責發(fā)送控制命令,數(shù)據(jù)客戶端PkDataClien負責封裝和發(fā)送數(shù)據(jù)包,包括組播數(shù)據(jù)包和單播數(shù)據(jù)包。回滾服務端部署在每個物理機端,其通過控制服務端和數(shù)據(jù)服務端來接收控制命令和數(shù)據(jù)包??刂泼钪饕撠熃M播組的生成,即通知物理機加入組播組和退出組播組。 數(shù)據(jù)包包括:單播數(shù)據(jù)包、組播數(shù)據(jù)包。
集群回滾協(xié)議。虛擬集群的回滾協(xié)議如圖4所示,其中存在兩個角色:部署在存儲設備的回滾客戶端,以及部署在每臺服務器上的回滾服務端RBServer,具體流程如下。
1、管理員發(fā)起回滾命令“集群回滾“;
2、回滾客戶端向所有回滾發(fā)送端發(fā)送當前數(shù)據(jù)包對應的“組播組信息“?;貪L服務端收到控制包后,如果其需要接收數(shù)據(jù)包,則加入到組中;如果其已經(jīng)在組播組中且不需要接收數(shù)據(jù)包,則退出組播組,如果不在組播組中且不需要接收數(shù)據(jù)包則忽視該控制命令;
3、回滾服務端在加入或退出組播組后,向回滾客戶端發(fā)送“組播組確認“,告知回滾客戶端執(zhí)行完成;
4、回滾客戶端以組播形式將數(shù)據(jù)包發(fā)送到組播組;
5、2-4步驟重復執(zhí)行,直到需要組播的頁面發(fā)送完畢;
6、回滾客戶端發(fā)送“組播結束“通知回滾服務端數(shù)據(jù)包已經(jīng)組播完成;
7、回滾客戶端將快照文件中未發(fā)送的頁面進行封裝,并將數(shù)據(jù)包以單播方式發(fā)送給對應的回滾服務端;
8、發(fā)送完成后,回滾客戶端發(fā)送“單播結束“通知回滾服務端數(shù)據(jù)包已經(jīng)單播完成;
9、回滾服務端維護一個數(shù)組來記錄接收到的頁面編號,并依據(jù)虛擬機的內存大小,查找未收到的頁面,然后向回滾客戶端請求這些缺失的頁面。例如虛擬機內存大小為40K(10個頁面),如果服務端只收到了某臺虛擬機的頁面1,2,5,6,8,9,10,那么頁面3,4,7尚未接收到,標示為缺失,需要向回滾客戶端請求上一階段丟失的數(shù)據(jù)包。
10、回滾客戶端在接收到某回滾服務端的請求缺失頁面后,從快照文件中查找相應的頁面,封裝成數(shù)據(jù)包,然后以單播的形式發(fā)送給該回滾服務端;
11、回滾服務端在接收到所有的頁面后,回復“數(shù)據(jù)確認“信息;
12、回滾客戶端在接收到所有回滾服務端回復的“數(shù)據(jù)確認“后,告知管理員虛擬集群回滾完成。