• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      面向OpenStack/Ceph的虛擬機(jī)備份系統(tǒng)研究①

      2018-11-14 11:36:34楊皓森胡曉勤黃傳波
      關(guān)鍵詞:快照全量磁盤(pán)

      楊皓森,胡曉勤,黃傳波

      1(四川大學(xué) 計(jì)算機(jī)學(xué)院,成都 610065)

      2(成都云祺科技有限公司,成都 610041)

      近年來(lái),虛擬化與云計(jì)算的浪潮席卷了整個(gè)IT行業(yè),引領(lǐng)了IT基礎(chǔ)設(shè)施的發(fā)展以及產(chǎn)業(yè)的革新.OpenStack[1]是目前使用最為廣泛的開(kāi)源云計(jì)算平臺(tái),可幫助企業(yè)實(shí)現(xiàn)構(gòu)建自己的云基礎(chǔ)架構(gòu)服務(wù).OpenStack可利用多種虛擬化平臺(tái)提供虛擬機(jī)服務(wù),如Vmware、KVM[2]等,虛擬機(jī)在OpenStack中會(huì)作為云主機(jī)展示給用戶(hù).

      Ceph[3]是一種性能優(yōu)秀、服務(wù)穩(wěn)定且可擴(kuò)展的開(kāi)源分布式存儲(chǔ)系統(tǒng),作為軟件定義存儲(chǔ)(SDS)[4]領(lǐng)域的代表,可以整合多種傳統(tǒng)存儲(chǔ)方式并進(jìn)行統(tǒng)一配置管理,與OpenStack形成了良好的搭配,也是其目前使用最普遍的塊存儲(chǔ)方式.

      根據(jù)2017年4月的OpenStack用戶(hù)調(diào)查報(bào)告顯示,擁有的虛擬機(jī)數(shù)量100臺(tái)以上的環(huán)境比例高達(dá)74%[5].由于用戶(hù)大量的數(shù)據(jù)和業(yè)務(wù)運(yùn)行在虛擬機(jī)之上,保障虛擬機(jī)的數(shù)據(jù)安全成為了OpenStack面臨的迫切問(wèn)題[6].

      虛擬機(jī)備份與簡(jiǎn)單的快照不同,它要求能保存虛擬機(jī)任意快照點(diǎn)的數(shù)據(jù)和狀態(tài),可在本地或異地存儲(chǔ)這些數(shù)據(jù),在生產(chǎn)環(huán)境發(fā)生災(zāi)難或者人工操作失誤時(shí),能夠利用原數(shù)據(jù)進(jìn)行恢復(fù),降低損失.其它大型虛擬化廠商,如 Vmware、Redhat、XenServer等,市面上都有針對(duì)自身產(chǎn)品的虛擬機(jī)備份方案,而OpenStack由于其作為云計(jì)算平臺(tái)的復(fù)雜性,并且沒(méi)有完善相應(yīng)的接口,因此在虛擬機(jī)備份功能上一直進(jìn)展緩慢,其快照備份功能,對(duì)于有具體環(huán)境備份需求的用戶(hù)來(lái)說(shuō),功能過(guò)于單一,且時(shí)間和存儲(chǔ)空間開(kāi)銷(xiāo)較大,因此在實(shí)際部署中并不適用.

      為此,本文提出一種面向OpenStack/Ceph的虛擬機(jī)備份系統(tǒng),基于Ceph存儲(chǔ)快照,計(jì)算出虛擬機(jī)磁盤(pán)對(duì)象的有效數(shù)據(jù)或變化數(shù)據(jù)區(qū)域,讀取磁盤(pán)數(shù)據(jù)并按快照點(diǎn)的順序保存至備份服務(wù)器,同時(shí)保存原虛擬機(jī)的硬件配置、元數(shù)據(jù)等信息; 在恢復(fù)時(shí),創(chuàng)建一個(gè)配置相同的新虛擬機(jī)并將所選快照點(diǎn)的數(shù)據(jù)恢復(fù)到新的磁盤(pán).實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)比OpenStack的虛擬機(jī)快照備份功能,可有效降低備份時(shí)間,節(jié)省備份數(shù)據(jù)存儲(chǔ)空間,可以實(shí)現(xiàn)后者不具有的增量備份[7]等功能,同時(shí)滿(mǎn)足對(duì)虛擬機(jī)根磁盤(pán)、臨時(shí)磁盤(pán)、掛載云硬盤(pán)的數(shù)據(jù)備份.該方法不需修改OpenStack原生內(nèi)容,不會(huì)對(duì)用戶(hù)的生產(chǎn)環(huán)境造成影響.

      1 相關(guān)研究

      1.1 OpenStack現(xiàn)有備份功能

      OpenStack是基于多個(gè)模塊協(xié)同工作的云計(jì)算平臺(tái),其內(nèi)部接口參照亞馬遜AWS[8].OpenStack虛擬機(jī)的磁盤(pán)數(shù)據(jù)保存于根磁盤(pán)(Root Disk)、臨時(shí)磁盤(pán)(Ephemeral Disk)和掛載的云硬盤(pán)(Volumes).

      OpenStack現(xiàn)有的的虛擬機(jī)快照備份功能是對(duì)虛擬機(jī)根磁盤(pán)進(jìn)行轉(zhuǎn)換和拷貝,不支持增量備份,備份時(shí)間長(zhǎng),冗余數(shù)據(jù)多,虛擬機(jī)的臨時(shí)磁盤(pán)、掛載的云硬盤(pán)無(wú)法得到有效備份.新的虛擬機(jī)只能利用上傳的根磁盤(pán)鏡像創(chuàng)建,一旦出現(xiàn)災(zāi)難或者人工失誤操作,容易造成大量數(shù)據(jù)丟失.而OpenStack提供的Cinder-backup服務(wù)目前只能實(shí)現(xiàn)對(duì)云硬盤(pán)的備份且有諸多限制條件,也無(wú)法滿(mǎn)足對(duì)虛擬機(jī)整機(jī)的有效保護(hù).

      1.2 Ceph RBD快照

      Ceph是一個(gè)多節(jié)點(diǎn)的分布式系統(tǒng),提供統(tǒng)一的存儲(chǔ)訪(fǎng)問(wèn)接口.Ceph的節(jié)點(diǎn)可分為Monitor節(jié)點(diǎn)與OSD節(jié)點(diǎn),OSD節(jié)點(diǎn)用于存儲(chǔ)和查詢(xún)對(duì)象,Monitor節(jié)點(diǎn)用于維護(hù)集群成員的狀態(tài).

      按照模塊劃分,Ceph最底層模塊是RADOS (Reliable,Autonomic Distributed Object Store),通過(guò)CRUSH算法[9]保證數(shù)據(jù)均衡存儲(chǔ)于各個(gè)OSD節(jié)點(diǎn).在RADOS之上有多個(gè)模塊對(duì)其功能進(jìn)行了封裝與拓展,其中OpenStack主要使用到的模塊為Ceph RBD(Reliable Block Device),即Ceph的塊存儲(chǔ)服務(wù)[3].

      以Ceph為塊存儲(chǔ)后端的OpenStack環(huán)境,每個(gè)磁盤(pán)均對(duì)應(yīng)一個(gè)RBD對(duì)象,磁盤(pán)格式采用RAW[10],RAW格式磁盤(pán)在Ceph中只保存已劃分空間部分,節(jié)省了存儲(chǔ)空間.Ceph RBD支持對(duì)塊設(shè)備生成快照[11],采用COW (Copy-On-Write)機(jī)制,即寫(xiě)時(shí)拷貝,可在任意時(shí)間點(diǎn)以秒級(jí)速度創(chuàng)建快照,不對(duì)塊設(shè)備的使用造成影響,使每個(gè)快照點(diǎn)的數(shù)據(jù)都能保存并且不會(huì)復(fù)制冗余數(shù)據(jù),其功能類(lèi)似于QCOW2磁盤(pán)的快照功能[12].

      2 系統(tǒng)設(shè)計(jì)

      鑒于虛擬機(jī)備份對(duì)OpenStack環(huán)境的安全有著重要的作用,而其快照備份方法不能滿(mǎn)足備份的需要,本文提出一種面向OpenStack/Ceph的虛擬機(jī)備份系統(tǒng).系統(tǒng)分為服務(wù)端和代理端,包含6個(gè)模塊: 磁盤(pán)處理模塊、通信模塊、備份模塊、恢復(fù)模塊、數(shù)據(jù)存儲(chǔ)模塊、虛擬機(jī)管理模塊,如圖1所示,備份模塊和恢復(fù)模塊通過(guò)調(diào)用虛擬機(jī)管理模塊獲取原虛擬機(jī)配置信息、創(chuàng)建新虛擬機(jī)等,通過(guò)通信模塊與磁盤(pán)處理模塊通信,傳輸磁盤(pán)有效數(shù)據(jù)或增量數(shù)據(jù),然后調(diào)用數(shù)據(jù)存儲(chǔ)模塊寫(xiě)入或讀取備份數(shù)據(jù).其中代理端安裝在環(huán)境里每個(gè)計(jì)算節(jié)點(diǎn),服務(wù)端安裝在單獨(dú)的備份服務(wù)器上.

      圖1 系統(tǒng)模塊圖

      本文備份系統(tǒng)涉及到OpenStack環(huán)境的存儲(chǔ)、管理、公開(kāi)三種網(wǎng)絡(luò),如圖2所示.管理網(wǎng)絡(luò)用于服務(wù)端與OpenStack控制節(jié)點(diǎn)通信,管理控制OpenStack環(huán)境,管理網(wǎng)絡(luò)還用于獲取虛擬機(jī)信息、傳輸備份恢復(fù)數(shù)據(jù); 存儲(chǔ)網(wǎng)絡(luò)用于代理端讀取、寫(xiě)入、查詢(xún)存儲(chǔ)在Ceph環(huán)境中的磁盤(pán)數(shù)據(jù); 公開(kāi)網(wǎng)絡(luò)使用戶(hù)可以從外部訪(fǎng)問(wèn)備份服務(wù)器,控制備份和恢復(fù)任務(wù).

      3 系統(tǒng)實(shí)現(xiàn)

      3.1 備份模塊

      備份模塊通過(guò)調(diào)用其它基礎(chǔ)模塊,控制備份任務(wù)的流程.當(dāng)OpenStack環(huán)境加入到備份系統(tǒng)時(shí),會(huì)首先通過(guò)虛擬機(jī)管理模塊獲取所有虛擬機(jī)的狀態(tài)列表,用戶(hù)可以選擇某臺(tái)或多臺(tái)虛擬機(jī)創(chuàng)建備份任務(wù),備份任務(wù)可以分為全量備份、增量備份兩種方式,備份模塊有不同的處理方式.

      任務(wù)創(chuàng)建完成后,后續(xù)流程均由備份模塊控制,用戶(hù)不需要再操作,備份的具體步驟如下.

      1) 根據(jù)任務(wù)類(lèi)型和狀態(tài),如果是全量備份任務(wù),則直接執(zhí)行全量備份; 如果是增量備份任務(wù),第一個(gè)備份點(diǎn)也是全量備份,后續(xù)增量備份點(diǎn)均依賴(lài)于前一個(gè)備份點(diǎn)執(zhí)行;

      2) 通過(guò)虛擬機(jī)管理模塊獲取虛擬機(jī)的詳細(xì)配置以及磁盤(pán)列表,包括根磁盤(pán)、臨時(shí)磁盤(pán)以及掛載的云硬盤(pán),獲取所有磁盤(pán)的存儲(chǔ)路徑;

      3) 對(duì)于磁盤(pán)列表中的每一個(gè)磁盤(pán),根據(jù)磁盤(pán)路徑,調(diào)用磁盤(pán)處理模塊創(chuàng)建當(dāng)前時(shí)間點(diǎn)Tn的快照,記錄快照的ID等信息;

      圖2 系統(tǒng)網(wǎng)絡(luò)拓?fù)?/p>

      4) 通過(guò)磁盤(pán)處理模塊,如果是全量備份點(diǎn),根據(jù)Tn時(shí)刻的快照計(jì)算每個(gè)磁盤(pán)的全量數(shù)據(jù)Bitmap,如果是增量備份點(diǎn),結(jié)合Tn–1和Tn時(shí)刻的快照計(jì)算每個(gè)磁盤(pán)的增量數(shù)據(jù)Bitmap;

      5) 根據(jù)備份任務(wù)類(lèi)型,選擇不同的Bitmap用于數(shù)據(jù)備份,調(diào)用通信模塊進(jìn)行傳輸,調(diào)用數(shù)據(jù)存儲(chǔ)模塊保存磁盤(pán)數(shù)據(jù);

      6) 等待所有磁盤(pán)數(shù)據(jù)備份完成,將虛擬機(jī)的配置信息保存至數(shù)據(jù)庫(kù)或文件;

      7) 如果是全量備份任務(wù),刪除Tn時(shí)刻的快照; 如果是增量備份任務(wù),刪除Tn–1時(shí)刻的快照,保留Tn時(shí)刻的快照,備份任務(wù)完成.

      3.2 恢復(fù)模塊

      與備份模塊相似,恢復(fù)模塊也是通過(guò)調(diào)用其它模塊,控制恢復(fù)的流程.主要包含創(chuàng)建虛擬機(jī)、寫(xiě)磁盤(pán)數(shù)據(jù)兩部分.新虛擬機(jī)名、可用域和網(wǎng)絡(luò)等設(shè)置為可選項(xiàng).通過(guò)創(chuàng)建相同配置的新虛擬機(jī)并將備份數(shù)據(jù)寫(xiě)入覆蓋到新虛擬機(jī)的磁盤(pán),可以實(shí)現(xiàn)整機(jī)數(shù)據(jù)恢復(fù).數(shù)據(jù)恢復(fù)過(guò)程中虛擬機(jī)需要是關(guān)機(jī)狀態(tài),整個(gè)恢復(fù)的步驟如下.

      1) 用戶(hù)選擇需要恢復(fù)哪臺(tái)虛擬機(jī)以及哪個(gè)時(shí)間點(diǎn);

      2) 通過(guò)虛擬機(jī)管理模塊獲取可恢復(fù)到的環(huán)境和租戶(hù),驗(yàn)證用戶(hù)在該租戶(hù)內(nèi)是否有權(quán)限;

      3) 獲取所選租戶(hù)內(nèi)可選網(wǎng)絡(luò)和可用域,允許用戶(hù)配置新虛擬機(jī)的名稱(chēng)、網(wǎng)絡(luò)和可用域等選項(xiàng);

      4) 根據(jù)保存的原機(jī)云主機(jī)類(lèi)型和云硬盤(pán)掛載信息,調(diào)用虛擬機(jī)管理模塊創(chuàng)建與原虛擬機(jī)硬件配置相同的新虛擬機(jī),保證與原機(jī)磁盤(pán)數(shù)量、大小、掛載順序一致,然后獲取新虛擬機(jī)的磁盤(pán)列表和路徑信息;

      5) 按照磁盤(pán)列表,將新虛擬機(jī)與原虛擬機(jī)的磁盤(pán)一一對(duì)應(yīng),針對(duì)每一對(duì)磁盤(pán),從數(shù)據(jù)存儲(chǔ)模塊,根據(jù)所選時(shí)間點(diǎn)原磁盤(pán)的Bitmap信息依次讀取有效數(shù)據(jù)塊,再調(diào)用磁盤(pán)處理模塊寫(xiě)入覆蓋新磁盤(pán)相同的偏移位置;

      6) 等待所有磁盤(pán)數(shù)據(jù)恢復(fù)完成,任務(wù)成功.

      3.3 通信模塊

      通信模塊基于TCP/IP協(xié)議,提供備份服務(wù)器與計(jì)算節(jié)點(diǎn)的通信基礎(chǔ),負(fù)責(zé)備份服務(wù)器與不同計(jì)算節(jié)點(diǎn)之間通信數(shù)據(jù)包的轉(zhuǎn)發(fā)和分配,該模塊提供對(duì)三種數(shù)據(jù)的傳輸,分別是虛擬化平臺(tái)的命令和返回信息、磁盤(pán)操作的處理和回饋、備份恢復(fù)數(shù)據(jù)的請(qǐng)求和傳輸.

      為滿(mǎn)足不同的消息請(qǐng)求,可以通過(guò)構(gòu)造自定義的多級(jí)包頭加以區(qū)分,比如操作消息可以通過(guò)在包頭定義操作碼,備份服務(wù)端和代理端再通過(guò)分析操作碼對(duì)數(shù)據(jù)部分做不同的操作.在傳輸時(shí)要保證數(shù)據(jù)傳輸?shù)恼_性,可以構(gòu)造待發(fā)送的數(shù)據(jù)包隊(duì)列,平衡處理各節(jié)點(diǎn)間的通信任務(wù).

      3.4 虛擬機(jī)管理模塊

      虛擬機(jī)管理模塊用于處理與OpenStack云計(jì)算平臺(tái)的連接、驗(yàn)證權(quán)限,獲取云計(jì)算平臺(tái)的相關(guān)信息,創(chuàng)建、刪除虛擬機(jī),獲取虛擬機(jī)配置,磁盤(pán)列表和路徑等.該模塊是系統(tǒng)與OpenStack環(huán)境通信的基礎(chǔ).

      OpenStack包含有Keystone,Cinder,Nova,Glance等各種組件,每個(gè)組件提供不同的服務(wù),占用不同的端口[13].要與這些服務(wù)通信,需要先獲取權(quán)限,OpenStack將用戶(hù)劃分為不同的權(quán)限級(jí)別,且用戶(hù)與租戶(hù)相關(guān),需選擇一個(gè)具有Admin權(quán)限的用戶(hù)并通過(guò)Keystone服務(wù)認(rèn)證.

      完成認(rèn)證后,可通過(guò)Nova等服務(wù)獲取所有虛擬機(jī)的詳細(xì)信息,包括虛擬機(jī)的硬件配置以及運(yùn)行狀況,磁盤(pán)列表和路徑,用于備份和恢復(fù)任務(wù).創(chuàng)建新虛擬機(jī)時(shí)需保證與原機(jī)的配置相同,結(jié)合用戶(hù)可選的虛擬機(jī)名稱(chēng)、網(wǎng)絡(luò)等信息,再通過(guò)Nova和Cinder服務(wù)創(chuàng)建完成.

      3.5 磁盤(pán)處理模塊

      磁盤(pán)處理模塊位于每一個(gè)計(jì)算節(jié)點(diǎn),用于管理與Ceph環(huán)境的連接、生成快照、計(jì)算快照點(diǎn)Bitmap、讀取和寫(xiě)入磁盤(pán)數(shù)據(jù)等.

      本系統(tǒng)邏輯上將磁盤(pán)劃分為固定大小的數(shù)據(jù)塊,對(duì)每個(gè)磁盤(pán)生成一個(gè)Bitmap,每一個(gè)bit對(duì)應(yīng)一個(gè)數(shù)據(jù)塊.Ceph提供了返回單個(gè)快照點(diǎn)內(nèi)全部有效數(shù)據(jù)段或兩個(gè)快照點(diǎn)間變化數(shù)據(jù)段的接口,可計(jì)算出全量數(shù)據(jù)Bitmap或增量數(shù)據(jù)Bitmap,前者描述完整磁盤(pán)的有效數(shù)據(jù),后者描述磁盤(pán)兩個(gè)快照點(diǎn)之間的變化數(shù)據(jù).

      本系統(tǒng)在計(jì)算Bitmap時(shí)將磁盤(pán)劃分為多個(gè)較長(zhǎng)的數(shù)據(jù)段,一個(gè)數(shù)據(jù)段包含若干數(shù)據(jù)塊,通過(guò)Ceph獲取每個(gè)數(shù)據(jù)段內(nèi)的有效數(shù)據(jù)或變化數(shù)據(jù)信息,再計(jì)算生成每個(gè)數(shù)據(jù)段的Bitmap,最終合并出磁盤(pán)的完整Bitmap.數(shù)據(jù)段的長(zhǎng)度可采用Ceph的分段上限.計(jì)算數(shù)據(jù)段的Bitmap方法如圖3所示.

      以某個(gè)數(shù)據(jù)段f為例,其在文件中的偏移為offset,長(zhǎng)度為length,對(duì)應(yīng)n個(gè)數(shù)據(jù)塊,數(shù)據(jù)塊編號(hào)從0到n–1,則分塊長(zhǎng)度為length/n.對(duì)于某一段有效數(shù)據(jù),假設(shè)其偏移和長(zhǎng)度分別為S和L,對(duì)于第i個(gè)數(shù)據(jù)塊,如果存在:

      則說(shuō)明數(shù)據(jù)塊內(nèi)包含該段有效數(shù)據(jù),將Bitmap內(nèi)第i個(gè)bit置為1.計(jì)算完成所有數(shù)據(jù)段之后,即可合并出整個(gè)磁盤(pán)快照點(diǎn)的Bitmap.備份時(shí),只需對(duì)其中bit為1的數(shù)據(jù)塊,計(jì)算出其在磁盤(pán)文件中的偏移,再?gòu)腃eph中按塊的偏移和長(zhǎng)度讀取即可,避免了對(duì)無(wú)效數(shù)據(jù)區(qū)的備份,節(jié)約了備份時(shí)間和空間,采用增量數(shù)據(jù)Bimtap傳輸數(shù)據(jù)可以實(shí)現(xiàn)增量備份的效果.

      3.6 數(shù)據(jù)存儲(chǔ)模塊

      數(shù)據(jù)存儲(chǔ)模塊負(fù)責(zé)保存虛擬機(jī)磁盤(pán)快照點(diǎn)的備份數(shù)據(jù),保存數(shù)據(jù)的方式采用固定的結(jié)構(gòu)和方法.存儲(chǔ)結(jié)構(gòu)上,需按照存儲(chǔ)根目錄、虛擬機(jī)、快照時(shí)間點(diǎn)和磁盤(pán)的層次,快照時(shí)間點(diǎn)和磁盤(pán)通過(guò)生成ID的方式加以區(qū)分.每一個(gè)快照點(diǎn)內(nèi)保存有所有磁盤(pán)的存儲(chǔ)數(shù)據(jù)文件、索引文件、元數(shù)據(jù)等信息.目錄結(jié)構(gòu)如圖4所示.

      圖4 存儲(chǔ)目錄結(jié)構(gòu)

      存儲(chǔ)數(shù)據(jù)文件保存全量備份點(diǎn)的有效數(shù)據(jù)塊,或增量快照點(diǎn)的變化數(shù)據(jù)塊,所有數(shù)據(jù)塊擁有同樣的塊大小,按順序?qū)懭氪鎯?chǔ)數(shù)據(jù)文件中.元數(shù)據(jù)保存了磁盤(pán)ID、依賴(lài)快照點(diǎn)ID等信息.索引文件是根據(jù)磁盤(pán)快照點(diǎn)計(jì)算的Bitmap生成的,每一行的格式為”bit|offset”,bit是指該數(shù)據(jù)塊是否為磁盤(pán)當(dāng)前快照點(diǎn)的有效數(shù)據(jù)塊或增量數(shù)據(jù)塊,與Bitmap里的值相同,offset指數(shù)據(jù)塊在存儲(chǔ)數(shù)據(jù)文件中的偏移,如果當(dāng)前沒(méi)有保存該塊,則偏移為0.

      當(dāng)進(jìn)行備份時(shí),需要寫(xiě)入數(shù)據(jù).首先按照目錄結(jié)構(gòu)創(chuàng)建正確的路徑; 針對(duì)每一個(gè)磁盤(pán),通過(guò)磁盤(pán)處理模塊計(jì)算該快照點(diǎn)的全量或增量Bitmap; 循環(huán)處理每一個(gè)bit位,如果bit為1,則傳輸對(duì)應(yīng)的數(shù)據(jù)塊,按順序?qū)懭氪鎯?chǔ)數(shù)據(jù)文件,如果bit為0,則不需要傳輸,同時(shí)應(yīng)記錄該bit的值和數(shù)據(jù)塊在存儲(chǔ)數(shù)據(jù)文件中的偏移,并保存至索引文件,不需傳輸?shù)膲K偏移置為0; 最后,記錄磁盤(pán)的依賴(lài)快照點(diǎn)、磁盤(pán)大小等元數(shù)據(jù)信息.

      當(dāng)進(jìn)行恢復(fù)時(shí),針對(duì)每一個(gè)磁盤(pán),根據(jù)元數(shù)據(jù)信息獲取完整的快照鏈關(guān)系,然后合并所有索引文件的Bitmap信息,合并方式為某數(shù)據(jù)塊如果在任意時(shí)間點(diǎn)的bit為1,那么合并后該數(shù)據(jù)塊bit也置為1.根據(jù)合并后的Bitmap,對(duì)bit為1的數(shù)據(jù)塊,從最近時(shí)間點(diǎn)開(kāi)始讀取,如果該時(shí)間點(diǎn)未保存有該數(shù)據(jù)塊,即索引文件的偏移為0,則向前一個(gè)時(shí)間點(diǎn)繼續(xù)讀取,以此類(lèi)推.最終可得到完整的磁盤(pán)數(shù)據(jù).

      以一個(gè)磁盤(pán)的增量快照鏈為例,如圖5所示,增量點(diǎn)T2依賴(lài)于增量點(diǎn)T1,增量點(diǎn)T1依賴(lài)于全量點(diǎn)T0,每個(gè)快照點(diǎn)保存有索引文件、元數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)文件.按照從左到右的順序編號(hào),有數(shù)據(jù)塊0到15.備份時(shí),根據(jù)T2時(shí)刻計(jì)算出的增量數(shù)據(jù)Bitmap,數(shù)據(jù)塊5、10、11的數(shù)據(jù)有變化,所以當(dāng)前只需要備份這三個(gè)數(shù)據(jù)塊,將數(shù)據(jù)寫(xiě)入到有效數(shù)據(jù)文件,并記錄偏移offset.

      圖5 備份數(shù)據(jù)存儲(chǔ)方式

      恢復(fù)時(shí),首先根據(jù)快照鏈關(guān)系,合并T0、T1、T2的Bitmap,得到T2時(shí)刻磁盤(pán)的完整數(shù)據(jù)Bitmap,即數(shù)據(jù)塊2、5、8、10、11、15的bit都為1,再根據(jù)完整數(shù)據(jù)Bitmap從存儲(chǔ)數(shù)據(jù)文件讀取數(shù)據(jù)塊,優(yōu)先從最近時(shí)間點(diǎn)開(kāi)始讀,如果沒(méi)有查詢(xún)到該數(shù)據(jù)塊,則從依賴(lài)快照點(diǎn)中讀,以此類(lèi)推.圖5例中,首先會(huì)從增量點(diǎn)T2讀取數(shù)據(jù)塊5、10、11,然后從增量點(diǎn)T1讀取數(shù)據(jù)塊15、從全量點(diǎn)T0讀取數(shù)據(jù)塊2、8,最終即可得到T2時(shí)刻磁盤(pán)的完整數(shù)據(jù).

      4 實(shí)驗(yàn)分析

      4.1 數(shù)據(jù)存儲(chǔ)模塊

      實(shí)驗(yàn)環(huán)境參照?qǐng)D2的網(wǎng)絡(luò)拓?fù)?OpenStack版本號(hào)為Mitaka,虛擬機(jī)磁盤(pán)格式為RAW; 備份服務(wù)端安裝在獨(dú)立主機(jī)上,代理端安裝于OpenStack所有計(jì)算節(jié)點(diǎn)上.實(shí)驗(yàn)采用OpenStack虛擬機(jī)快照備份功能作為對(duì)比方法,實(shí)驗(yàn)對(duì)象選用云環(huán)境內(nèi)不同操作系統(tǒng)、不同系統(tǒng)配置的虛擬機(jī),配置包含單磁盤(pán)、多磁盤(pán)等多種方式,本文系統(tǒng)分塊大小為2 MB.

      4.2 實(shí)驗(yàn)結(jié)果分析

      為測(cè)試備份系統(tǒng)虛擬機(jī)的增量數(shù)據(jù)備份,創(chuàng)建一臺(tái)擁有10 GB根磁盤(pán)的虛擬機(jī),操作系統(tǒng)為最小化安裝的Centos7.3,先用dd命令寫(xiě)入5.1 GB非0數(shù)據(jù)擴(kuò)充根磁盤(pán)大小,在T0時(shí)刻做一次全量備份,由于都是提取的有效數(shù)據(jù),兩種方法全量備份的效果相同,然后自T1時(shí)刻起向根磁盤(pán)連續(xù)寫(xiě)入測(cè)試數(shù)據(jù)并做增量備份,如表1所示.測(cè)試數(shù)據(jù)采用不同版本的Linux內(nèi)核tar.gz壓縮文件,版本號(hào)依次為L(zhǎng)inux-2.6.39.2、Linux-3.6.9、Linux-3.8.2、Linux-3.12.69、Linux-4.6.3、Linux-4.9.88.

      實(shí)驗(yàn)結(jié)果表明,本文提出的備份系統(tǒng)可針對(duì)變化數(shù)據(jù)使用增量備份,而OpenStack快照備份只能對(duì)根磁盤(pán)做全量備份,故備份大小約等于根磁盤(pán)已分配大小.根磁盤(pán)增量數(shù)據(jù)備份傳輸?shù)拇笮『蜁r(shí)間對(duì)比如圖6所示,無(wú)論是節(jié)省備份時(shí)間還是存儲(chǔ)空間,本文系統(tǒng)均優(yōu)于OpenStack的快照備份方式,實(shí)驗(yàn)中本文系統(tǒng)平均節(jié)約了88.72%的備份時(shí)間和97.14%的備份存儲(chǔ)空間,在變化數(shù)據(jù)相對(duì)于磁盤(pán)已分配空間較小時(shí),本文系統(tǒng)的優(yōu)勢(shì)更加明顯.

      表1 根磁盤(pán)增量數(shù)據(jù)備份

      圖6 根磁盤(pán)增量備份對(duì)比

      為測(cè)試多磁盤(pán)的備份情況,創(chuàng)建一臺(tái)擁有10 GB根磁盤(pán)、10 GB臨時(shí)磁盤(pán)、10 GB云硬盤(pán)的虛擬機(jī),對(duì)比OpenStack快照備份方法,實(shí)驗(yàn)全量備份、增量備份任務(wù),實(shí)驗(yàn)結(jié)果表明,本文提出的備份系統(tǒng)可針對(duì)多磁盤(pán)虛擬機(jī)實(shí)現(xiàn)有效保護(hù),對(duì)臨時(shí)磁盤(pán)、云硬盤(pán)均可實(shí)現(xiàn)全量和增量備份,備份效果與根磁盤(pán)相同.與OpenStack快照備份的功能對(duì)比如表2所示,在恢復(fù)測(cè)試中,每個(gè)時(shí)間點(diǎn)所有磁盤(pán)的數(shù)據(jù)均能正確恢復(fù)到新虛擬機(jī).

      表2 多磁盤(pán)備份功能對(duì)比

      5 結(jié)語(yǔ)

      本文針對(duì)以Ceph RBD作為后端塊存儲(chǔ)方法的OpenStack環(huán)境,設(shè)計(jì)并實(shí)現(xiàn)了一種利用Ceph快照特點(diǎn)的虛擬機(jī)備份系統(tǒng),實(shí)驗(yàn)結(jié)果表明,相比于OpenStack的虛擬機(jī)快照功能,本系統(tǒng)可以實(shí)現(xiàn)后者不具有的虛擬機(jī)整機(jī)的數(shù)據(jù)保護(hù)功能,包括對(duì)虛擬機(jī)配置信息的保存、多磁盤(pán)數(shù)據(jù)的備份,可以實(shí)現(xiàn)跨用戶(hù)、跨租戶(hù)的恢復(fù),通過(guò)計(jì)算變化數(shù)據(jù)可以實(shí)現(xiàn)增量備份,有效節(jié)約了備份時(shí)間和存儲(chǔ)空間.但本系統(tǒng)的增量備份會(huì)保留一個(gè)快照,備份速度和增量計(jì)算精度與分塊大小相關(guān),備份數(shù)據(jù)也可以通過(guò)存儲(chǔ)網(wǎng)絡(luò)傳輸,后續(xù)可以做進(jìn)一步優(yōu)化和改進(jìn).

      猜你喜歡
      快照全量磁盤(pán)
      EMC存儲(chǔ)快照功能分析
      天津科技(2022年5期)2022-05-31 02:18:08
      成都市溫江區(qū)全力推進(jìn)醫(yī)保全量數(shù)據(jù)采集試點(diǎn)工作
      解決Windows磁盤(pán)簽名沖突
      修改磁盤(pán)屬性
      磁盤(pán)組群組及iSCSI Target設(shè)置
      創(chuàng)建磁盤(pán)組備份快照
      創(chuàng)建VSAN群集
      土壤重金屬污染調(diào)查與評(píng)估的誤區(qū)及其改進(jìn)方法
      麥秸全量還田下氮肥運(yùn)籌對(duì)水稻產(chǎn)量及其產(chǎn)量構(gòu)成的影響
      水稻冠層光譜變化特征的土壤重金屬全量反演研究
      遙感信息(2015年3期)2015-12-13 07:26:54
      嘉兴市| 论坛| 乌兰浩特市| 金门县| 德化县| 潼关县| 宁都县| 罗江县| 军事| 和硕县| 扬中市| 南木林县| 昭平县| 和龙市| 宣威市| 泰兴市| 桐梓县| 阳高县| 当涂县| 礼泉县| 阳信县| 晋江市| 旺苍县| 丰原市| 抚远县| 广宁县| 贡山| 西城区| 黑龙江省| 博爱县| 莎车县| 台北市| 隆林| 秦安县| 道真| 桃源县| 马关县| 新密市| 廊坊市| 洱源县| 正阳县|