楊皓森,胡曉勤,黃傳波
1(四川大學(xué) 計算機(jī)學(xué)院,成都 610065)
2(成都云祺科技有限公司,成都 610041)
近年來,虛擬化與云計算的浪潮席卷了整個IT行業(yè),引領(lǐng)了IT基礎(chǔ)設(shè)施的發(fā)展以及產(chǎn)業(yè)的革新.OpenStack[1]是目前使用最為廣泛的開源云計算平臺,可幫助企業(yè)實現(xiàn)構(gòu)建自己的云基礎(chǔ)架構(gòu)服務(wù).OpenStack可利用多種虛擬化平臺提供虛擬機(jī)服務(wù),如Vmware、KVM[2]等,虛擬機(jī)在OpenStack中會作為云主機(jī)展示給用戶.
Ceph[3]是一種性能優(yōu)秀、服務(wù)穩(wěn)定且可擴(kuò)展的開源分布式存儲系統(tǒng),作為軟件定義存儲(SDS)[4]領(lǐng)域的代表,可以整合多種傳統(tǒng)存儲方式并進(jìn)行統(tǒng)一配置管理,與OpenStack形成了良好的搭配,也是其目前使用最普遍的塊存儲方式.
根據(jù)2017年4月的OpenStack用戶調(diào)查報告顯示,擁有的虛擬機(jī)數(shù)量100臺以上的環(huán)境比例高達(dá)74%[5].由于用戶大量的數(shù)據(jù)和業(yè)務(wù)運(yùn)行在虛擬機(jī)之上,保障虛擬機(jī)的數(shù)據(jù)安全成為了OpenStack面臨的迫切問題[6].
虛擬機(jī)備份與簡單的快照不同,它要求能保存虛擬機(jī)任意快照點(diǎn)的數(shù)據(jù)和狀態(tài),可在本地或異地存儲這些數(shù)據(jù),在生產(chǎn)環(huán)境發(fā)生災(zāi)難或者人工操作失誤時,能夠利用原數(shù)據(jù)進(jìn)行恢復(fù),降低損失.其它大型虛擬化廠商,如 Vmware、Redhat、XenServer等,市面上都有針對自身產(chǎn)品的虛擬機(jī)備份方案,而OpenStack由于其作為云計算平臺的復(fù)雜性,并且沒有完善相應(yīng)的接口,因此在虛擬機(jī)備份功能上一直進(jìn)展緩慢,其快照備份功能,對于有具體環(huán)境備份需求的用戶來說,功能過于單一,且時間和存儲空間開銷較大,因此在實際部署中并不適用.
為此,本文提出一種面向OpenStack/Ceph的虛擬機(jī)備份系統(tǒng),基于Ceph存儲快照,計算出虛擬機(jī)磁盤對象的有效數(shù)據(jù)或變化數(shù)據(jù)區(qū)域,讀取磁盤數(shù)據(jù)并按快照點(diǎn)的順序保存至備份服務(wù)器,同時保存原虛擬機(jī)的硬件配置、元數(shù)據(jù)等信息; 在恢復(fù)時,創(chuàng)建一個配置相同的新虛擬機(jī)并將所選快照點(diǎn)的數(shù)據(jù)恢復(fù)到新的磁盤.實驗結(jié)果表明,該系統(tǒng)比OpenStack的虛擬機(jī)快照備份功能,可有效降低備份時間,節(jié)省備份數(shù)據(jù)存儲空間,可以實現(xiàn)后者不具有的增量備份[7]等功能,同時滿足對虛擬機(jī)根磁盤、臨時磁盤、掛載云硬盤的數(shù)據(jù)備份.該方法不需修改OpenStack原生內(nèi)容,不會對用戶的生產(chǎn)環(huán)境造成影響.
OpenStack是基于多個模塊協(xié)同工作的云計算平臺,其內(nèi)部接口參照亞馬遜AWS[8].OpenStack虛擬機(jī)的磁盤數(shù)據(jù)保存于根磁盤(Root Disk)、臨時磁盤(Ephemeral Disk)和掛載的云硬盤(Volumes).
OpenStack現(xiàn)有的的虛擬機(jī)快照備份功能是對虛擬機(jī)根磁盤進(jìn)行轉(zhuǎn)換和拷貝,不支持增量備份,備份時間長,冗余數(shù)據(jù)多,虛擬機(jī)的臨時磁盤、掛載的云硬盤無法得到有效備份.新的虛擬機(jī)只能利用上傳的根磁盤鏡像創(chuàng)建,一旦出現(xiàn)災(zāi)難或者人工失誤操作,容易造成大量數(shù)據(jù)丟失.而OpenStack提供的Cinder-backup服務(wù)目前只能實現(xiàn)對云硬盤的備份且有諸多限制條件,也無法滿足對虛擬機(jī)整機(jī)的有效保護(hù).
Ceph是一個多節(jié)點(diǎn)的分布式系統(tǒng),提供統(tǒng)一的存儲訪問接口.Ceph的節(jié)點(diǎn)可分為Monitor節(jié)點(diǎn)與OSD節(jié)點(diǎn),OSD節(jié)點(diǎn)用于存儲和查詢對象,Monitor節(jié)點(diǎn)用于維護(hù)集群成員的狀態(tài).
按照模塊劃分,Ceph最底層模塊是RADOS (Reliable,Autonomic Distributed Object Store),通過CRUSH算法[9]保證數(shù)據(jù)均衡存儲于各個OSD節(jié)點(diǎn).在RADOS之上有多個模塊對其功能進(jìn)行了封裝與拓展,其中OpenStack主要使用到的模塊為Ceph RBD(Reliable Block Device),即Ceph的塊存儲服務(wù)[3].
以Ceph為塊存儲后端的OpenStack環(huán)境,每個磁盤均對應(yīng)一個RBD對象,磁盤格式采用RAW[10],RAW格式磁盤在Ceph中只保存已劃分空間部分,節(jié)省了存儲空間.Ceph RBD支持對塊設(shè)備生成快照[11],采用COW (Copy-On-Write)機(jī)制,即寫時拷貝,可在任意時間點(diǎn)以秒級速度創(chuàng)建快照,不對塊設(shè)備的使用造成影響,使每個快照點(diǎn)的數(shù)據(jù)都能保存并且不會復(fù)制冗余數(shù)據(jù),其功能類似于QCOW2磁盤的快照功能[12].
鑒于虛擬機(jī)備份對OpenStack環(huán)境的安全有著重要的作用,而其快照備份方法不能滿足備份的需要,本文提出一種面向OpenStack/Ceph的虛擬機(jī)備份系統(tǒng).系統(tǒng)分為服務(wù)端和代理端,包含6個模塊: 磁盤處理模塊、通信模塊、備份模塊、恢復(fù)模塊、數(shù)據(jù)存儲模塊、虛擬機(jī)管理模塊,如圖1所示,備份模塊和恢復(fù)模塊通過調(diào)用虛擬機(jī)管理模塊獲取原虛擬機(jī)配置信息、創(chuàng)建新虛擬機(jī)等,通過通信模塊與磁盤處理模塊通信,傳輸磁盤有效數(shù)據(jù)或增量數(shù)據(jù),然后調(diào)用數(shù)據(jù)存儲模塊寫入或讀取備份數(shù)據(jù).其中代理端安裝在環(huán)境里每個計算節(jié)點(diǎn),服務(wù)端安裝在單獨(dú)的備份服務(wù)器上.
圖1 系統(tǒng)模塊圖
本文備份系統(tǒng)涉及到OpenStack環(huán)境的存儲、管理、公開三種網(wǎng)絡(luò),如圖2所示.管理網(wǎng)絡(luò)用于服務(wù)端與OpenStack控制節(jié)點(diǎn)通信,管理控制OpenStack環(huán)境,管理網(wǎng)絡(luò)還用于獲取虛擬機(jī)信息、傳輸備份恢復(fù)數(shù)據(jù); 存儲網(wǎng)絡(luò)用于代理端讀取、寫入、查詢存儲在Ceph環(huán)境中的磁盤數(shù)據(jù); 公開網(wǎng)絡(luò)使用戶可以從外部訪問備份服務(wù)器,控制備份和恢復(fù)任務(wù).
備份模塊通過調(diào)用其它基礎(chǔ)模塊,控制備份任務(wù)的流程.當(dāng)OpenStack環(huán)境加入到備份系統(tǒng)時,會首先通過虛擬機(jī)管理模塊獲取所有虛擬機(jī)的狀態(tài)列表,用戶可以選擇某臺或多臺虛擬機(jī)創(chuàng)建備份任務(wù),備份任務(wù)可以分為全量備份、增量備份兩種方式,備份模塊有不同的處理方式.
任務(wù)創(chuàng)建完成后,后續(xù)流程均由備份模塊控制,用戶不需要再操作,備份的具體步驟如下.
1) 根據(jù)任務(wù)類型和狀態(tài),如果是全量備份任務(wù),則直接執(zhí)行全量備份; 如果是增量備份任務(wù),第一個備份點(diǎn)也是全量備份,后續(xù)增量備份點(diǎn)均依賴于前一個備份點(diǎn)執(zhí)行;
2) 通過虛擬機(jī)管理模塊獲取虛擬機(jī)的詳細(xì)配置以及磁盤列表,包括根磁盤、臨時磁盤以及掛載的云硬盤,獲取所有磁盤的存儲路徑;
3) 對于磁盤列表中的每一個磁盤,根據(jù)磁盤路徑,調(diào)用磁盤處理模塊創(chuàng)建當(dāng)前時間點(diǎn)Tn的快照,記錄快照的ID等信息;
圖2 系統(tǒng)網(wǎng)絡(luò)拓?fù)?/p>
4) 通過磁盤處理模塊,如果是全量備份點(diǎn),根據(jù)Tn時刻的快照計算每個磁盤的全量數(shù)據(jù)Bitmap,如果是增量備份點(diǎn),結(jié)合Tn–1和Tn時刻的快照計算每個磁盤的增量數(shù)據(jù)Bitmap;
5) 根據(jù)備份任務(wù)類型,選擇不同的Bitmap用于數(shù)據(jù)備份,調(diào)用通信模塊進(jìn)行傳輸,調(diào)用數(shù)據(jù)存儲模塊保存磁盤數(shù)據(jù);
6) 等待所有磁盤數(shù)據(jù)備份完成,將虛擬機(jī)的配置信息保存至數(shù)據(jù)庫或文件;
7) 如果是全量備份任務(wù),刪除Tn時刻的快照; 如果是增量備份任務(wù),刪除Tn–1時刻的快照,保留Tn時刻的快照,備份任務(wù)完成.
與備份模塊相似,恢復(fù)模塊也是通過調(diào)用其它模塊,控制恢復(fù)的流程.主要包含創(chuàng)建虛擬機(jī)、寫磁盤數(shù)據(jù)兩部分.新虛擬機(jī)名、可用域和網(wǎng)絡(luò)等設(shè)置為可選項.通過創(chuàng)建相同配置的新虛擬機(jī)并將備份數(shù)據(jù)寫入覆蓋到新虛擬機(jī)的磁盤,可以實現(xiàn)整機(jī)數(shù)據(jù)恢復(fù).數(shù)據(jù)恢復(fù)過程中虛擬機(jī)需要是關(guān)機(jī)狀態(tài),整個恢復(fù)的步驟如下.
1) 用戶選擇需要恢復(fù)哪臺虛擬機(jī)以及哪個時間點(diǎn);
2) 通過虛擬機(jī)管理模塊獲取可恢復(fù)到的環(huán)境和租戶,驗證用戶在該租戶內(nèi)是否有權(quán)限;
3) 獲取所選租戶內(nèi)可選網(wǎng)絡(luò)和可用域,允許用戶配置新虛擬機(jī)的名稱、網(wǎng)絡(luò)和可用域等選項;
4) 根據(jù)保存的原機(jī)云主機(jī)類型和云硬盤掛載信息,調(diào)用虛擬機(jī)管理模塊創(chuàng)建與原虛擬機(jī)硬件配置相同的新虛擬機(jī),保證與原機(jī)磁盤數(shù)量、大小、掛載順序一致,然后獲取新虛擬機(jī)的磁盤列表和路徑信息;
5) 按照磁盤列表,將新虛擬機(jī)與原虛擬機(jī)的磁盤一一對應(yīng),針對每一對磁盤,從數(shù)據(jù)存儲模塊,根據(jù)所選時間點(diǎn)原磁盤的Bitmap信息依次讀取有效數(shù)據(jù)塊,再調(diào)用磁盤處理模塊寫入覆蓋新磁盤相同的偏移位置;
6) 等待所有磁盤數(shù)據(jù)恢復(fù)完成,任務(wù)成功.
通信模塊基于TCP/IP協(xié)議,提供備份服務(wù)器與計算節(jié)點(diǎn)的通信基礎(chǔ),負(fù)責(zé)備份服務(wù)器與不同計算節(jié)點(diǎn)之間通信數(shù)據(jù)包的轉(zhuǎn)發(fā)和分配,該模塊提供對三種數(shù)據(jù)的傳輸,分別是虛擬化平臺的命令和返回信息、磁盤操作的處理和回饋、備份恢復(fù)數(shù)據(jù)的請求和傳輸.
為滿足不同的消息請求,可以通過構(gòu)造自定義的多級包頭加以區(qū)分,比如操作消息可以通過在包頭定義操作碼,備份服務(wù)端和代理端再通過分析操作碼對數(shù)據(jù)部分做不同的操作.在傳輸時要保證數(shù)據(jù)傳輸?shù)恼_性,可以構(gòu)造待發(fā)送的數(shù)據(jù)包隊列,平衡處理各節(jié)點(diǎn)間的通信任務(wù).
虛擬機(jī)管理模塊用于處理與OpenStack云計算平臺的連接、驗證權(quán)限,獲取云計算平臺的相關(guān)信息,創(chuàng)建、刪除虛擬機(jī),獲取虛擬機(jī)配置,磁盤列表和路徑等.該模塊是系統(tǒng)與OpenStack環(huán)境通信的基礎(chǔ).
OpenStack包含有Keystone,Cinder,Nova,Glance等各種組件,每個組件提供不同的服務(wù),占用不同的端口[13].要與這些服務(wù)通信,需要先獲取權(quán)限,OpenStack將用戶劃分為不同的權(quán)限級別,且用戶與租戶相關(guān),需選擇一個具有Admin權(quán)限的用戶并通過Keystone服務(wù)認(rèn)證.
完成認(rèn)證后,可通過Nova等服務(wù)獲取所有虛擬機(jī)的詳細(xì)信息,包括虛擬機(jī)的硬件配置以及運(yùn)行狀況,磁盤列表和路徑,用于備份和恢復(fù)任務(wù).創(chuàng)建新虛擬機(jī)時需保證與原機(jī)的配置相同,結(jié)合用戶可選的虛擬機(jī)名稱、網(wǎng)絡(luò)等信息,再通過Nova和Cinder服務(wù)創(chuàng)建完成.
磁盤處理模塊位于每一個計算節(jié)點(diǎn),用于管理與Ceph環(huán)境的連接、生成快照、計算快照點(diǎn)Bitmap、讀取和寫入磁盤數(shù)據(jù)等.
本系統(tǒng)邏輯上將磁盤劃分為固定大小的數(shù)據(jù)塊,對每個磁盤生成一個Bitmap,每一個bit對應(yīng)一個數(shù)據(jù)塊.Ceph提供了返回單個快照點(diǎn)內(nèi)全部有效數(shù)據(jù)段或兩個快照點(diǎn)間變化數(shù)據(jù)段的接口,可計算出全量數(shù)據(jù)Bitmap或增量數(shù)據(jù)Bitmap,前者描述完整磁盤的有效數(shù)據(jù),后者描述磁盤兩個快照點(diǎn)之間的變化數(shù)據(jù).
本系統(tǒng)在計算Bitmap時將磁盤劃分為多個較長的數(shù)據(jù)段,一個數(shù)據(jù)段包含若干數(shù)據(jù)塊,通過Ceph獲取每個數(shù)據(jù)段內(nèi)的有效數(shù)據(jù)或變化數(shù)據(jù)信息,再計算生成每個數(shù)據(jù)段的Bitmap,最終合并出磁盤的完整Bitmap.數(shù)據(jù)段的長度可采用Ceph的分段上限.計算數(shù)據(jù)段的Bitmap方法如圖3所示.
以某個數(shù)據(jù)段f為例,其在文件中的偏移為offset,長度為length,對應(yīng)n個數(shù)據(jù)塊,數(shù)據(jù)塊編號從0到n–1,則分塊長度為length/n.對于某一段有效數(shù)據(jù),假設(shè)其偏移和長度分別為S和L,對于第i個數(shù)據(jù)塊,如果存在:
則說明數(shù)據(jù)塊內(nèi)包含該段有效數(shù)據(jù),將Bitmap內(nèi)第i個bit置為1.計算完成所有數(shù)據(jù)段之后,即可合并出整個磁盤快照點(diǎn)的Bitmap.備份時,只需對其中bit為1的數(shù)據(jù)塊,計算出其在磁盤文件中的偏移,再從Ceph中按塊的偏移和長度讀取即可,避免了對無效數(shù)據(jù)區(qū)的備份,節(jié)約了備份時間和空間,采用增量數(shù)據(jù)Bimtap傳輸數(shù)據(jù)可以實現(xiàn)增量備份的效果.
數(shù)據(jù)存儲模塊負(fù)責(zé)保存虛擬機(jī)磁盤快照點(diǎn)的備份數(shù)據(jù),保存數(shù)據(jù)的方式采用固定的結(jié)構(gòu)和方法.存儲結(jié)構(gòu)上,需按照存儲根目錄、虛擬機(jī)、快照時間點(diǎn)和磁盤的層次,快照時間點(diǎn)和磁盤通過生成ID的方式加以區(qū)分.每一個快照點(diǎn)內(nèi)保存有所有磁盤的存儲數(shù)據(jù)文件、索引文件、元數(shù)據(jù)等信息.目錄結(jié)構(gòu)如圖4所示.
圖4 存儲目錄結(jié)構(gòu)
存儲數(shù)據(jù)文件保存全量備份點(diǎn)的有效數(shù)據(jù)塊,或增量快照點(diǎn)的變化數(shù)據(jù)塊,所有數(shù)據(jù)塊擁有同樣的塊大小,按順序?qū)懭氪鎯?shù)據(jù)文件中.元數(shù)據(jù)保存了磁盤ID、依賴快照點(diǎn)ID等信息.索引文件是根據(jù)磁盤快照點(diǎn)計算的Bitmap生成的,每一行的格式為”bit|offset”,bit是指該數(shù)據(jù)塊是否為磁盤當(dāng)前快照點(diǎn)的有效數(shù)據(jù)塊或增量數(shù)據(jù)塊,與Bitmap里的值相同,offset指數(shù)據(jù)塊在存儲數(shù)據(jù)文件中的偏移,如果當(dāng)前沒有保存該塊,則偏移為0.
當(dāng)進(jìn)行備份時,需要寫入數(shù)據(jù).首先按照目錄結(jié)構(gòu)創(chuàng)建正確的路徑; 針對每一個磁盤,通過磁盤處理模塊計算該快照點(diǎn)的全量或增量Bitmap; 循環(huán)處理每一個bit位,如果bit為1,則傳輸對應(yīng)的數(shù)據(jù)塊,按順序?qū)懭氪鎯?shù)據(jù)文件,如果bit為0,則不需要傳輸,同時應(yīng)記錄該bit的值和數(shù)據(jù)塊在存儲數(shù)據(jù)文件中的偏移,并保存至索引文件,不需傳輸?shù)膲K偏移置為0; 最后,記錄磁盤的依賴快照點(diǎn)、磁盤大小等元數(shù)據(jù)信息.
當(dāng)進(jìn)行恢復(fù)時,針對每一個磁盤,根據(jù)元數(shù)據(jù)信息獲取完整的快照鏈關(guān)系,然后合并所有索引文件的Bitmap信息,合并方式為某數(shù)據(jù)塊如果在任意時間點(diǎn)的bit為1,那么合并后該數(shù)據(jù)塊bit也置為1.根據(jù)合并后的Bitmap,對bit為1的數(shù)據(jù)塊,從最近時間點(diǎn)開始讀取,如果該時間點(diǎn)未保存有該數(shù)據(jù)塊,即索引文件的偏移為0,則向前一個時間點(diǎn)繼續(xù)讀取,以此類推.最終可得到完整的磁盤數(shù)據(jù).
以一個磁盤的增量快照鏈為例,如圖5所示,增量點(diǎn)T2依賴于增量點(diǎn)T1,增量點(diǎn)T1依賴于全量點(diǎn)T0,每個快照點(diǎn)保存有索引文件、元數(shù)據(jù)、存儲數(shù)據(jù)文件.按照從左到右的順序編號,有數(shù)據(jù)塊0到15.備份時,根據(jù)T2時刻計算出的增量數(shù)據(jù)Bitmap,數(shù)據(jù)塊5、10、11的數(shù)據(jù)有變化,所以當(dāng)前只需要備份這三個數(shù)據(jù)塊,將數(shù)據(jù)寫入到有效數(shù)據(jù)文件,并記錄偏移offset.
圖5 備份數(shù)據(jù)存儲方式
恢復(fù)時,首先根據(jù)快照鏈關(guān)系,合并T0、T1、T2的Bitmap,得到T2時刻磁盤的完整數(shù)據(jù)Bitmap,即數(shù)據(jù)塊2、5、8、10、11、15的bit都為1,再根據(jù)完整數(shù)據(jù)Bitmap從存儲數(shù)據(jù)文件讀取數(shù)據(jù)塊,優(yōu)先從最近時間點(diǎn)開始讀,如果沒有查詢到該數(shù)據(jù)塊,則從依賴快照點(diǎn)中讀,以此類推.圖5例中,首先會從增量點(diǎn)T2讀取數(shù)據(jù)塊5、10、11,然后從增量點(diǎn)T1讀取數(shù)據(jù)塊15、從全量點(diǎn)T0讀取數(shù)據(jù)塊2、8,最終即可得到T2時刻磁盤的完整數(shù)據(jù).
實驗環(huán)境參照圖2的網(wǎng)絡(luò)拓?fù)?OpenStack版本號為Mitaka,虛擬機(jī)磁盤格式為RAW; 備份服務(wù)端安裝在獨(dú)立主機(jī)上,代理端安裝于OpenStack所有計算節(jié)點(diǎn)上.實驗采用OpenStack虛擬機(jī)快照備份功能作為對比方法,實驗對象選用云環(huán)境內(nèi)不同操作系統(tǒng)、不同系統(tǒng)配置的虛擬機(jī),配置包含單磁盤、多磁盤等多種方式,本文系統(tǒng)分塊大小為2 MB.
為測試備份系統(tǒng)虛擬機(jī)的增量數(shù)據(jù)備份,創(chuàng)建一臺擁有10 GB根磁盤的虛擬機(jī),操作系統(tǒng)為最小化安裝的Centos7.3,先用dd命令寫入5.1 GB非0數(shù)據(jù)擴(kuò)充根磁盤大小,在T0時刻做一次全量備份,由于都是提取的有效數(shù)據(jù),兩種方法全量備份的效果相同,然后自T1時刻起向根磁盤連續(xù)寫入測試數(shù)據(jù)并做增量備份,如表1所示.測試數(shù)據(jù)采用不同版本的Linux內(nèi)核tar.gz壓縮文件,版本號依次為Linux-2.6.39.2、Linux-3.6.9、Linux-3.8.2、Linux-3.12.69、Linux-4.6.3、Linux-4.9.88.
實驗結(jié)果表明,本文提出的備份系統(tǒng)可針對變化數(shù)據(jù)使用增量備份,而OpenStack快照備份只能對根磁盤做全量備份,故備份大小約等于根磁盤已分配大小.根磁盤增量數(shù)據(jù)備份傳輸?shù)拇笮『蜁r間對比如圖6所示,無論是節(jié)省備份時間還是存儲空間,本文系統(tǒng)均優(yōu)于OpenStack的快照備份方式,實驗中本文系統(tǒng)平均節(jié)約了88.72%的備份時間和97.14%的備份存儲空間,在變化數(shù)據(jù)相對于磁盤已分配空間較小時,本文系統(tǒng)的優(yōu)勢更加明顯.
表1 根磁盤增量數(shù)據(jù)備份
圖6 根磁盤增量備份對比
為測試多磁盤的備份情況,創(chuàng)建一臺擁有10 GB根磁盤、10 GB臨時磁盤、10 GB云硬盤的虛擬機(jī),對比OpenStack快照備份方法,實驗全量備份、增量備份任務(wù),實驗結(jié)果表明,本文提出的備份系統(tǒng)可針對多磁盤虛擬機(jī)實現(xiàn)有效保護(hù),對臨時磁盤、云硬盤均可實現(xiàn)全量和增量備份,備份效果與根磁盤相同.與OpenStack快照備份的功能對比如表2所示,在恢復(fù)測試中,每個時間點(diǎn)所有磁盤的數(shù)據(jù)均能正確恢復(fù)到新虛擬機(jī).
表2 多磁盤備份功能對比
本文針對以Ceph RBD作為后端塊存儲方法的OpenStack環(huán)境,設(shè)計并實現(xiàn)了一種利用Ceph快照特點(diǎn)的虛擬機(jī)備份系統(tǒng),實驗結(jié)果表明,相比于OpenStack的虛擬機(jī)快照功能,本系統(tǒng)可以實現(xiàn)后者不具有的虛擬機(jī)整機(jī)的數(shù)據(jù)保護(hù)功能,包括對虛擬機(jī)配置信息的保存、多磁盤數(shù)據(jù)的備份,可以實現(xiàn)跨用戶、跨租戶的恢復(fù),通過計算變化數(shù)據(jù)可以實現(xiàn)增量備份,有效節(jié)約了備份時間和存儲空間.但本系統(tǒng)的增量備份會保留一個快照,備份速度和增量計算精度與分塊大小相關(guān),備份數(shù)據(jù)也可以通過存儲網(wǎng)絡(luò)傳輸,后續(xù)可以做進(jìn)一步優(yōu)化和改進(jìn).