李張娟
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)
基于重復(fù)數(shù)據(jù)刪除的虛擬機(jī)鏡像存儲(chǔ)優(yōu)化的研究與實(shí)現(xiàn)
李張娟
(四川大學(xué)計(jì)算機(jī)學(xué)院,成都610065)
隨著云計(jì)算的快速發(fā)展,需要配置大量不同版本和配置的虛擬機(jī)來(lái)靈活滿足不同用戶和應(yīng)用的需求,這就需要在云中存儲(chǔ)大量不同版本,不同配置的虛擬機(jī)鏡像文件。有關(guān)這些數(shù)量巨大的虛擬機(jī)鏡像文件的存儲(chǔ)對(duì)管理員來(lái)說(shuō)就是一個(gè)巨大的挑戰(zhàn)。增加存儲(chǔ)設(shè)備固然能夠解決虛擬機(jī)鏡像的存儲(chǔ)問題,但同時(shí)也會(huì)增加IT部署運(yùn)行成本,增大人工維護(hù)成本和電力、冷卻等能耗。由于存在大量相同的系統(tǒng)數(shù)據(jù),同一操作系統(tǒng)的不同發(fā)行版本中存在40%以上重復(fù)數(shù)據(jù)[1]。既然虛擬機(jī)鏡像存在著大量的數(shù)據(jù)冗余,那么利用重復(fù)數(shù)據(jù)刪除技術(shù)來(lái)提高存儲(chǔ)服務(wù)器利用率就變得可行。但是經(jīng)過數(shù)據(jù)重刪后,數(shù)據(jù)塊變?yōu)椴贿B續(xù)存儲(chǔ),在啟動(dòng)虛擬機(jī)時(shí),需要花費(fèi)大量時(shí)間進(jìn)行磁盤尋址,大大降低了讀取性能。為此本文利用重復(fù)數(shù)據(jù)刪除技術(shù)來(lái)優(yōu)化虛擬機(jī)鏡像存儲(chǔ),并采取預(yù)取機(jī)制結(jié)合固態(tài)硬盤來(lái)進(jìn)行讀數(shù)據(jù)加速,有效提升磁盤讀取速度,加速虛擬機(jī)啟動(dòng)。
1.1重復(fù)數(shù)據(jù)刪除技術(shù)
重復(fù)數(shù)據(jù)刪除技術(shù)(Deduplication)是一種容量?jī)?yōu)化(Capacity Optimization)技術(shù),它通過消除存儲(chǔ)系統(tǒng)中重復(fù)的數(shù)據(jù),縮減系統(tǒng)中實(shí)際存儲(chǔ)的數(shù)據(jù)或通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)[2],降低能耗與運(yùn)營(yíng)成本。根據(jù)重刪發(fā)生的時(shí)間不同,可分為在線(in-line),近線(out-of-line)和離線(off-line);根據(jù)重刪的粒度不同,可將其分為文件級(jí),數(shù)據(jù)塊級(jí)。根據(jù)數(shù)據(jù)塊的大小是否固定,可將分塊策略分為固定分塊與可變分塊。根據(jù)文獻(xiàn)[3],利用固定分塊大小與可變分塊大小對(duì)虛擬機(jī)鏡像存儲(chǔ)進(jìn)行重刪的重刪效率是一樣的,本文選用固定分塊策略來(lái)進(jìn)行虛擬機(jī)鏡像存儲(chǔ)的重刪操作。
目前,重復(fù)數(shù)據(jù)刪除已廣泛應(yīng)用于云環(huán)境和虛擬機(jī)環(huán)境中,Liguori等人比較了各操作系統(tǒng)的虛擬機(jī)鏡像的重刪效果,同時(shí)測(cè)試了重刪以后的鏡像對(duì)虛擬機(jī)啟動(dòng)和讀性能方面的影響[4]。本文中主要專注于云中虛擬機(jī)鏡像存儲(chǔ)的效率提升及重刪后的數(shù)據(jù)還原時(shí)的讀取性能優(yōu)化的研究。
1.2基于Flash的固態(tài)存儲(chǔ)設(shè)備
基于Flash的固態(tài)硬盤是由半導(dǎo)體構(gòu)成的存儲(chǔ)設(shè)備[5],與傳統(tǒng)的硬盤相比較,有更高的隨機(jī)讀取速度,更好的抗震性及更低的能耗,正被運(yùn)用到越來(lái)越多的數(shù)碼產(chǎn)品上。但是,由于寫入之前需要對(duì)數(shù)據(jù)進(jìn)行擦除操作,其寫性能低于其讀性能。在數(shù)據(jù)密集型的應(yīng)用中,固態(tài)硬盤以其高性價(jià)比倍受青睞。
隨著虛擬化技術(shù)日趨成熟,虛擬機(jī)應(yīng)用環(huán)境也越來(lái)越普遍,隨著也產(chǎn)生了大量需要存儲(chǔ)的虛擬機(jī)鏡像文件。通常本地服務(wù)器達(dá)不到如此高的容量要求,需要將這些鏡像文件放置到共享的存儲(chǔ)服務(wù)器中,供多個(gè)服務(wù)器共享。在需要啟動(dòng)虛擬機(jī)時(shí),從共享存儲(chǔ)服務(wù)器中讀取相應(yīng)數(shù)據(jù)至本地來(lái)完成相應(yīng)操作。由于相同版本虛擬機(jī)鏡像中存在著相當(dāng)?shù)娜哂嗖糠郑梢酝ㄟ^重復(fù)數(shù)據(jù)刪除技術(shù)來(lái)對(duì)數(shù)據(jù)進(jìn)行縮減,提高存儲(chǔ)設(shè)備的利用率。使用固定分塊策略進(jìn)行重復(fù)數(shù)據(jù)刪除與使用可變分塊策略的效果相當(dāng),固選取固定分塊的重復(fù)數(shù)據(jù)刪除技術(shù)來(lái)實(shí)現(xiàn)對(duì)虛擬機(jī)鏡像共享存儲(chǔ)的優(yōu)化。其基本流程如圖1所示,主要過程為:(1)用固定分塊策略對(duì)對(duì)象進(jìn)行分塊;(2)計(jì)算每個(gè)數(shù)據(jù)塊的哈希值作為指紋進(jìn)行標(biāo)記,維護(hù)指紋索引表;(3)對(duì)比已有指紋,判斷數(shù)據(jù)塊是否已存在;(4)若不存在則存儲(chǔ)新的數(shù)據(jù)塊,并利用數(shù)據(jù)壓縮算法在塊內(nèi)進(jìn)行進(jìn)一步壓縮,縮減數(shù)據(jù)量,同時(shí)更新索引表信息;存在則更新索引表信息,只在磁盤上保留一個(gè)副本。
圖1 虛擬機(jī)鏡像重復(fù)數(shù)據(jù)刪除基本過程
經(jīng)過重復(fù)數(shù)據(jù)刪除以后的數(shù)據(jù),在存儲(chǔ)服務(wù)器中不再是連續(xù)的存儲(chǔ),在讀取過程需要將數(shù)據(jù)塊裝載入內(nèi)存中進(jìn)行解壓操作,性能將會(huì)受到較大的影響。針對(duì)此種情況,難以通過簡(jiǎn)單增加讀線程數(shù)的方法來(lái)縮短磁盤讀取的數(shù)據(jù)塊的時(shí)間。對(duì)此可以通過預(yù)取機(jī)制的機(jī)制來(lái)縮短平均磁盤讀取時(shí)間。如圖2所示,假設(shè)讀數(shù)據(jù)塊閾值為thres,當(dāng)一次請(qǐng)求讀取的數(shù)據(jù)塊數(shù)量小于thres時(shí),可以從用戶請(qǐng)求的數(shù)據(jù)塊開始,連續(xù)讀取thres塊數(shù)據(jù)塊到內(nèi)存中,在以后的數(shù)據(jù)塊請(qǐng)求中,若已裝入內(nèi)存中,則無(wú)需再?gòu)拇疟P讀取數(shù)據(jù),減少大量I/O操作,從整個(gè)過程來(lái)看,能夠在增大系統(tǒng)的吞吐率的同時(shí)減少數(shù)據(jù)塊的讀取時(shí)間,使得單位時(shí)間內(nèi)讀取的數(shù)據(jù)量顯著提高。
圖2 重復(fù)數(shù)據(jù)刪除系統(tǒng)讀取數(shù)據(jù)塊基本流程
重復(fù)數(shù)據(jù)刪除技術(shù)是一種I/O密集型操作,其需要頻繁訪問數(shù)據(jù)塊索引和元數(shù)據(jù),帶來(lái)大量的I/O操作?;诠虘B(tài)硬盤卓越的讀性能,將重復(fù)數(shù)據(jù)刪除系統(tǒng)中的數(shù)據(jù)塊索引和元數(shù)據(jù)存儲(chǔ)于其上,相較于傳統(tǒng)的磁盤,能夠加快讀取速度和命中速度,提升存儲(chǔ)系統(tǒng)的訪問性能。本文利用基于Flash的固態(tài)硬盤的隨機(jī)讀性能優(yōu)勢(shì)來(lái)加快經(jīng)過重復(fù)數(shù)據(jù)刪除后的虛擬機(jī)鏡像存儲(chǔ)的讀取速度,增大系統(tǒng)讀取數(shù)據(jù)時(shí)的吞吐量。
本文采用定長(zhǎng)分塊策略來(lái)對(duì)虛擬機(jī)鏡像文件進(jìn)行分塊,實(shí)驗(yàn)選取了CentOS 7,CentOS 6.2,Ubuntu 14.04,Ubutun 12.04,Windows Server 2012,Windows Server 2008六種鏡像,對(duì)其進(jìn)行不同分塊大小的實(shí)驗(yàn),期望通過實(shí)驗(yàn)來(lái)選出重刪效率相對(duì)較好的分塊策略。
實(shí)驗(yàn)環(huán)境為處理器:Intel Core i5 CPU@2.6 GHz;內(nèi)存:8GB;操作系統(tǒng):Ubuntu 14.04。
首先研究各操作系統(tǒng)數(shù)據(jù)冗余度,來(lái)選取數(shù)據(jù)分塊實(shí)驗(yàn)的基礎(chǔ)虛擬機(jī)鏡像。經(jīng)實(shí)驗(yàn),結(jié)果如圖3顯示,相同的操作系統(tǒng)不同版本之間,存在著一定的數(shù)據(jù)冗余,Windows操作系統(tǒng)的冗余度相對(duì)較小,Ubuntu操作系統(tǒng)的冗余度相對(duì)較大,CentOS操作系統(tǒng)則位于兩者中間。
選取數(shù)據(jù)冗余度較大的Ubuntu操作系統(tǒng)虛擬機(jī)鏡像作為實(shí)驗(yàn)對(duì)象,進(jìn)行分塊大小分別為1KB,4KB,8KB,16KB,32KB和64KB的重復(fù)數(shù)據(jù)刪除。一個(gè)好的重復(fù)數(shù)據(jù)刪除系統(tǒng),應(yīng)注重重刪率與系統(tǒng)性能間的平衡,數(shù)據(jù)分塊越小,則重刪率越高,相對(duì)應(yīng)的計(jì)算也越大;數(shù)據(jù)分塊越大,則重刪率越低,相應(yīng)的計(jì)算開銷也較小,本文選取二者間的中間平衡,以期達(dá)到較為理想的重刪率和系統(tǒng)吞吐率。由圖4可知,當(dāng)分塊大小為4KB時(shí),重刪效果最為理想。
圖3 不同操作系統(tǒng)虛擬機(jī)鏡像冗余度
圖4 不同分塊大小重刪吞吐率
利用4KB的固定分塊大小進(jìn)一步實(shí)驗(yàn)多個(gè)虛擬機(jī)鏡像的重復(fù)數(shù)據(jù)刪除效果,結(jié)果如圖4,隨著虛擬機(jī)鏡像個(gè)數(shù)的增加,冗余數(shù)據(jù)越多,重復(fù)數(shù)據(jù)刪除縮減的數(shù)據(jù)量越大。
通過上述實(shí)驗(yàn)進(jìn)行重復(fù)數(shù)據(jù)刪除以后,存儲(chǔ)系統(tǒng)中的虛擬機(jī)鏡像不再是連續(xù)存儲(chǔ)的數(shù)據(jù)塊,在需要通過鏡像來(lái)啟動(dòng)虛擬機(jī)時(shí),會(huì)大大增加數(shù)據(jù)塊讀取的時(shí)間,采用基于Flash的固態(tài)硬盤來(lái)進(jìn)行數(shù)據(jù)讀取,相較于傳統(tǒng)硬盤,能有較大的速度提升;同時(shí)采用數(shù)據(jù)預(yù)取機(jī)制,設(shè)置讀取數(shù)據(jù)塊閾值為1000塊,當(dāng)一次讀操作讀取的數(shù)據(jù)塊大小小于1000時(shí),從請(qǐng)求的數(shù)據(jù)塊開始,連續(xù)讀取1000塊數(shù)據(jù)塊進(jìn)入內(nèi)存當(dāng)中,平均地減少I/O操作,提升讀性能。
圖5 虛擬機(jī)鏡像數(shù)量與數(shù)據(jù)冗余關(guān)系
通過當(dāng)前實(shí)驗(yàn)的結(jié)果分析,本文利用重復(fù)數(shù)據(jù)刪除能夠有效提高虛擬機(jī)鏡像存儲(chǔ)設(shè)備的利用率,同時(shí)加快重刪后的數(shù)據(jù)讀取過程。
云計(jì)算的飛速發(fā)展,使按需索取計(jì)算和存儲(chǔ)資源成為IT部署趨勢(shì),在不斷增加的虛擬機(jī)環(huán)境中,需要大量存儲(chǔ)虛擬機(jī)鏡像,更加虛擬機(jī)鏡像存在較大冗余的特性,本文研究了重復(fù)數(shù)據(jù)刪除技術(shù),并將其應(yīng)用于虛擬機(jī)鏡像存儲(chǔ)設(shè)備中,通過實(shí)驗(yàn)表明,利用分塊大小為4KB的固定分塊策略能夠到達(dá)相當(dāng)理想的重刪效率,能夠提高40%以上存儲(chǔ)設(shè)備利用率;同時(shí)經(jīng)過重刪以后的數(shù)據(jù)塊在系統(tǒng)中不再是連續(xù)存儲(chǔ),讀取時(shí)讀性能將會(huì)受到影響,本文通過預(yù)取一定數(shù)量的數(shù)據(jù)塊至內(nèi)存中,減少整體平均的I/O次數(shù),再結(jié)合固態(tài)硬盤的高效隨機(jī)讀性能,進(jìn)一步加速讀取速度,提升20%以上的磁盤讀取速度。
在未來(lái)的工作中,將進(jìn)一步研究如何有效組織數(shù)據(jù)索引來(lái)平衡重刪效率和I/O性能,提高恢復(fù)I/O吞吐率;同時(shí)將重復(fù)數(shù)據(jù)刪除的判斷是否重復(fù)步驟分布應(yīng)用到云中的其他計(jì)算部件中,提高計(jì)算效率,提高存儲(chǔ)時(shí)的吞吐率;由于重刪后數(shù)據(jù)副本只保存一份,則系統(tǒng)的可靠性也亟待進(jìn)一步驗(yàn)證,今后的工作也將重點(diǎn)關(guān)注系統(tǒng)的安全可靠性。
[1]謝平.存儲(chǔ)系統(tǒng)重復(fù)數(shù)據(jù)刪除技術(shù)研究綜述[J].計(jì)算機(jī)科學(xué),2014,41(1):22-30.
[2]敖莉,舒繼武,李明強(qiáng).重復(fù)數(shù)據(jù)刪除技術(shù)[J].軟件學(xué)報(bào),2010,21(5):916-929.
[3]Jin K,Miller E L.The Effectiveness of Deduplication on Virtual Machine Disk Images[C].Proceedings of SYSTOR 2009:The Israeli Experimental Systems Conference.ACM,2009:7.
[4]Liguori A,Van Hensbergen E.Experiences with Content Addressable Storage and Virtual Disk[C].Workshop on I/O Virtualization. 2008.
[5]付印金,肖儂,劉芳,等.基于重復(fù)數(shù)據(jù)刪除的虛擬桌面存儲(chǔ)優(yōu)化技術(shù)[J].計(jì)算機(jī)研究與發(fā)展,2012(S1):125-130.
[6]Nath P,Kozuch M A,O'hallaron D R,et al.Design Tradeoffs in Applying Content Addressable Storage to Enterprise-Scale Systems Based on Virtual Machines[J].Management,2006,7(5):20
[7]Lillibridge M,Eshghi K,Bhagwat D,et al.Sparse Indexing:Large Scale,Inline Deduplication Using Sampling and Locality[C].Fast. 2009,9:111-123.
[8]Bhagwat D,Eshghi K,Long D D E,et al.Extreme Binning:Scalable,Parallel Deduplication for Chunk-Based File Backup[C].Modeling,Analysis&Simulation of Computer and Telecommunication Systems,2009.MASCOTS'09.IEEE International Symposium on. IEEE,2009:1-9.
Clouding Computing;De-Duplication;Virtual Machine Image;Reading Optimization
Research and Implementation of Virtual Machine Image Storage Optimization Based on De-Duplication
LI Zhang-juan
(College of Computer Science,Sichuan University,Chengdu610065)
1007-1423(2016)02-0029-04
10.3969/j.issn.1007-1423.2016.02.007
李張娟(1991-),女,重慶人,碩士研究生,本科,研究方向?yàn)榫W(wǎng)絡(luò)與信息安全
2015-12-01
2015-12-26
針對(duì)云環(huán)境中需要存儲(chǔ)大量虛擬機(jī)鏡像問題,提出運(yùn)用重復(fù)數(shù)據(jù)刪除技術(shù),來(lái)提高虛擬機(jī)鏡像的存儲(chǔ)設(shè)備利用率;同時(shí)針對(duì)虛擬機(jī)啟動(dòng)的快速響應(yīng)需求,采用預(yù)取機(jī)制結(jié)合固態(tài)硬盤進(jìn)行磁盤讀取優(yōu)化。通過原型實(shí)驗(yàn)表明,利用4KB定長(zhǎng)分塊策略的重復(fù)數(shù)據(jù)刪除技術(shù)能夠節(jié)省約40%的虛擬機(jī)鏡像存儲(chǔ)空間,利用預(yù)取機(jī)制及固態(tài)硬盤讀取能夠提升20%以上讀取速度,提升存儲(chǔ)效率和磁盤讀取速度。
云計(jì)算;重復(fù)數(shù)據(jù)刪除;虛擬機(jī)鏡像;讀取優(yōu)化
For the need of mass storage for virtual machine image in cloud computing environment,proposes using de-duplication to improve the utilization of virtual machine image storage.For the demand of quick respond when virtual machine starting,uses pre-fetch mechanism combined with the use of SSD to optimize reading speed.By prototype experiments,it shows that blocking strategy with 4KB fixed length de-duplication technology can save about 40%of the virtual machine image storage space,the use of pre-fetch mechanism and SSD can speed up more than 20%when reading blocks,optimize utilization of storage device of virtual machine image and reading speed.