郭 婉,張 曉,豐文雄
(西北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,西安 710129)
云計(jì)算系統(tǒng)通過(guò)虛擬化技術(shù)以虛擬機(jī)的形式為用戶提供CPU、內(nèi)存等資源[1],云計(jì)算技術(shù)的發(fā)展使得虛擬化技術(shù)得到了前所未有的廣泛普及,據(jù)統(tǒng)計(jì),截止2012 年底運(yùn)行在x86 服務(wù)器上有將近50% 的應(yīng)用已被虛擬化,預(yù)計(jì)在2014 年該數(shù)據(jù)將接近70%[2-3]。如Microsoft Azure 以 及Amazon Elastic Compute Cloud 分別提供4 種型號(hào)的虛擬機(jī)實(shí)例[4],即小型、中型、大型以及超大型,眾多型號(hào)的虛擬機(jī)相應(yīng)地?fù)碛斜姸嗟奶摂M機(jī)類型,同一類型的虛擬機(jī)也提供多種不同版本。據(jù)研究Linux 虛擬機(jī)鏡像的不同版本之間存在80% 以上的冗余數(shù)據(jù)塊[5]。另外,據(jù)IBM 研究院提出單個(gè)虛擬磁盤文件中的重復(fù)數(shù)據(jù)是5%,而基于相同操作系統(tǒng),安裝不同應(yīng)用程序的虛擬磁盤文件中有90% 以上的重復(fù)數(shù)據(jù),這主要是因?yàn)榇嬖诖罅肯嗤南到y(tǒng)數(shù)據(jù)[6-7]。這些勢(shì)必會(huì)使得云計(jì)算環(huán)境中存儲(chǔ)以及網(wǎng)絡(luò)資源的利用率降低,如何緩解并改善這一問(wèn)題已成為當(dāng)前云計(jì)算高效存儲(chǔ)領(lǐng)域的重要挑戰(zhàn)之一。
針對(duì)虛擬鏡像大量使用帶來(lái)的冗余問(wèn)題,現(xiàn)有的解決方法基本上是通過(guò)利用重復(fù)數(shù)據(jù)刪除技術(shù)來(lái)緩解存儲(chǔ)資源以及網(wǎng)絡(luò)帶寬的壓力,然而重復(fù)數(shù)據(jù)刪除技術(shù)在降低存儲(chǔ)和帶寬資源需求的同時(shí)也帶來(lái)了兩方面問(wèn)題:(1)數(shù)據(jù)分塊、哈希指紋運(yùn)算等CPU密集型操作增多;(2)數(shù)據(jù)塊在磁盤上的檢索操作使得I/O 延遲增大[7]。另外,在重復(fù)數(shù)據(jù)刪除環(huán)境中的File Recipe[8]的容量也隨著重刪率和數(shù)據(jù)量的增加而增大,其容量也不容忽視。
針對(duì)云環(huán)境中的虛擬機(jī)冗余問(wèn)題,本文提出一種將可堆疊文件系統(tǒng)應(yīng)用于云環(huán)境中來(lái)優(yōu)化存儲(chǔ)的解決方案,在緩解虛擬鏡像冗余問(wèn)題的同時(shí),避免了使用重復(fù)數(shù)據(jù)刪除技術(shù)帶來(lái)的問(wèn)題。
在云環(huán)境中,虛擬機(jī)鏡像模板庫(kù)中一般存儲(chǔ)了多個(gè)鏡像,其大小在1 GB 到十幾GB 之間不等,這些鏡像之間不可避免地存在著大量冗余。如何在對(duì)處理性能影響較小的條件下高效地緩解云環(huán)境中虛擬鏡像帶來(lái)的冗余已成為近年來(lái)多數(shù)研究者關(guān)注的熱點(diǎn)。
重復(fù)數(shù)據(jù)刪除技術(shù)用來(lái)避免相同數(shù)據(jù)塊的重復(fù)存儲(chǔ),在虛擬機(jī)鏡像存儲(chǔ)方面的使用可以有效節(jié)約存儲(chǔ)空間。如文獻(xiàn)[9]提出的LiveDFS 可以對(duì)部署在廉價(jià)的、有計(jì)算指紋內(nèi)存限制的硬件設(shè)備上的開(kāi)放云平臺(tái)中的虛擬鏡像進(jìn)行重復(fù)數(shù)據(jù)刪除,然而LiveDFS 未能在容錯(cuò)性和存儲(chǔ)效率方面取得平衡。文獻(xiàn)[10]提出的對(duì)虛擬磁盤文件的分析與研究表明,虛擬磁盤文件中可分為系統(tǒng)數(shù)據(jù)和用戶數(shù)據(jù),在系統(tǒng)數(shù)據(jù)時(shí)不經(jīng)常改變,而用戶數(shù)據(jù)的改變會(huì)局限在一個(gè)有限的范圍內(nèi),而且虛擬磁盤文件的數(shù)據(jù)改變模式也是可以預(yù)知的,通過(guò)充分挖掘虛擬鏡像數(shù)據(jù)的特征來(lái)設(shè)計(jì)相應(yīng)的重復(fù)數(shù)據(jù)刪除機(jī)制,主要通過(guò)建立新的指紋索引方法來(lái)提高效率,但實(shí)現(xiàn)復(fù)雜而且只針對(duì)虛擬鏡像的備份系統(tǒng)而言,可擴(kuò)展性不強(qiáng)。文獻(xiàn)[11]基于虛擬桌面環(huán)境下存儲(chǔ)系統(tǒng)的需求,研究并實(shí)現(xiàn)了VMStore 中實(shí)時(shí)去冗余機(jī)制,但是實(shí)時(shí)的去冗機(jī)制會(huì)帶來(lái)大量的計(jì)算開(kāi)銷,在一定程度上降低了虛擬桌面系統(tǒng)的用戶體驗(yàn)??偟膩?lái)說(shuō),現(xiàn)有針對(duì)虛擬機(jī)鏡像冗余的解決方案基本上都是通過(guò)重復(fù)數(shù)據(jù)刪除技術(shù)來(lái)緩解,然而重復(fù)數(shù)據(jù)刪除技術(shù)提高資源利用率的同時(shí)也帶來(lái)以下問(wèn)題:(1)性能降低;(2)指紋計(jì)算,索引建立和查詢方法復(fù)雜,計(jì)算開(kāi)銷大;(3)容錯(cuò)性低;(4)隨著重刪率的增大,File Recipe 容量也隨之增多。
另有眾多研究通過(guò)利用可堆疊文件系統(tǒng)對(duì)文件存儲(chǔ)及訪問(wèn)進(jìn)行優(yōu)化,如文獻(xiàn)[12]通過(guò)采用可堆疊文件系統(tǒng)技術(shù),實(shí)現(xiàn)對(duì)不同特征的文件進(jìn)行自動(dòng)適應(yīng)和優(yōu)化以便提高基于Linux 的云存儲(chǔ)的文件服務(wù)性能;再如文獻(xiàn)[13]提出一種面向文件特征基于可堆疊結(jié)束的存儲(chǔ)優(yōu)化系統(tǒng),旨在為下層安全文件系統(tǒng)增加存儲(chǔ)優(yōu)化功能;現(xiàn)有的通過(guò)堆疊文件系統(tǒng)來(lái)優(yōu)化存儲(chǔ)的方案基本是基于文件的大小特征,而對(duì)于文件的類型特征關(guān)注較少。本文提出利用堆疊式文件系統(tǒng)Unionfs 來(lái)優(yōu)化云計(jì)算存儲(chǔ)、緩解云環(huán)境下虛擬鏡像冗余問(wèn)題。Unionfs 在系統(tǒng)中的堆疊結(jié)構(gòu)如圖1 所示。
圖1 Unionfs 在系統(tǒng)中的堆疊結(jié)構(gòu)
堆疊式文件系統(tǒng)Unionfs 可以聯(lián)合眾多文件系統(tǒng)或目錄,可提供類似快照的功能。本文選擇Unionfs 正是充分利用了其類似快照的功能,將其應(yīng)用在云存儲(chǔ)優(yōu)化中,提高存儲(chǔ)資源利用率以及性能。Unionfs 可以在目錄物理位置隔離的情況下將眾多目錄合并成一個(gè)單一視圖[14]。目前,Unionfs 應(yīng)用的地方較多,如前人提出可以用Unionfs 將多個(gè)NFS服務(wù)器的不同主目錄合并起來(lái),組成統(tǒng)一的/home目錄提供給單個(gè)客戶端,Unionfs 也被用來(lái)合并分布式鏡像;另外,Unionfs 通過(guò)利用Copy-on-Write 技術(shù)來(lái)修補(bǔ)CD-ROM;又如文獻(xiàn)[15]提出將Unionfs 用于LiveCDs,即將一個(gè)標(biāo)準(zhǔn)的只讀文件系統(tǒng)ISO9660和一個(gè)賦予高優(yōu)先級(jí)的可讀寫tmpsf 文件系統(tǒng)聯(lián)合起來(lái);再如,和前面應(yīng)用不同的是,Unionfs 可以通過(guò)邏輯上標(biāo)記一個(gè)物理上可讀寫的分支為只讀的提供其copy-on-write 語(yǔ)義,在這種情況下,Unionfs 可被用于為文件系統(tǒng)做快照,本文提出的方案主要用到了Unionfs 提供的快照技術(shù)。
本文提出將堆疊式文件系統(tǒng)用于云環(huán)境中方案,主要為了改進(jìn)云環(huán)境中諸多鏡像的保存方法,以便在保證性能的前提下提高資源的利用率。下文通過(guò)詳細(xì)介紹現(xiàn)有云中鏡像的普通存儲(chǔ)方案、使用了重復(fù)數(shù)據(jù)刪除技術(shù)的鏡像存儲(chǔ)方案以及將堆疊式文件系統(tǒng)用于云環(huán)境時(shí)鏡像存儲(chǔ)方式來(lái)對(duì)比說(shuō)明本文提出的方案的設(shè)計(jì)思路及優(yōu)勢(shì)。
在云環(huán)境中,對(duì)虛擬鏡像的存儲(chǔ)不進(jìn)行任何優(yōu)化處理,不對(duì)多個(gè)虛擬鏡像造成的冗余問(wèn)題予以管理,此時(shí)云計(jì)算環(huán)境中虛擬鏡像的存儲(chǔ)方案如圖2所示,其中,img1~imgN代表不同的虛擬鏡像,在不考慮眾多虛擬鏡像帶來(lái)的冗余的情況下,將所有需要用到的虛擬機(jī)鏡像都分別單獨(dú)存儲(chǔ)一份供用戶啟動(dòng)實(shí)例,這種情況導(dǎo)致存儲(chǔ)資源以及網(wǎng)絡(luò)帶寬資源的利用率較低。
圖2 虛擬鏡像的普通存儲(chǔ)方案
圖3 所示是將重復(fù)數(shù)據(jù)刪除技術(shù)應(yīng)用到云環(huán)境中來(lái)緩解虛擬鏡像冗余帶來(lái)的存儲(chǔ)資源和網(wǎng)絡(luò)資源利用率低的問(wèn)題的一種解決方案,在該方案中,根據(jù)所用的具體的重復(fù)數(shù)據(jù)刪除類別的不同,眾多的虛擬機(jī)鏡像會(huì)被分成大小相同或不同的塊,這些塊會(huì)在存儲(chǔ)之前進(jìn)行對(duì)應(yīng)的指紋運(yùn)算并且進(jìn)行一些了索引操作,從而鑒定是否有重復(fù),例如在圖3 中,c1~c5 是經(jīng)過(guò)重復(fù)數(shù)據(jù)刪除之后所存儲(chǔ)的無(wú)重?cái)?shù)據(jù)塊,這樣通過(guò)重復(fù)數(shù)據(jù)刪除,相比3.1 節(jié)的解決方案提高了資源的利用率。然而在用戶需要啟動(dòng)虛擬機(jī)的時(shí)候,讀取虛擬鏡像需要做一系列恢復(fù)操作,這些恢復(fù)操作會(huì)設(shè)計(jì)到多種復(fù)雜的檢索,例如用戶1 需要虛擬鏡像img2 來(lái)生成instance3,那么就需要通過(guò)讀取重復(fù)數(shù)據(jù)刪除時(shí)建立的索引指針來(lái)決定讀取c2,c2 和c5 3 個(gè)數(shù)據(jù)塊的內(nèi)容來(lái)恢復(fù)出img2 的原始文件,這個(gè)過(guò)程使得虛擬鏡像的讀取操作由原先的順序讀取變成零散的隨機(jī)讀取,從而導(dǎo)致虛擬鏡像的讀取速率下降,延長(zhǎng)了用戶啟動(dòng)虛擬機(jī)的時(shí)間;另外,重復(fù)數(shù)據(jù)塊的索引文件也會(huì)隨著系統(tǒng)中虛擬鏡像的增多以及重復(fù)數(shù)據(jù)刪除率的增大而增大。
圖3 重復(fù)數(shù)據(jù)刪除鏡像存儲(chǔ)方案
本文提出在云環(huán)境中使用堆疊式文件系統(tǒng)來(lái)緩解云環(huán)境中虛擬鏡像冗余導(dǎo)致的存儲(chǔ)資源和網(wǎng)絡(luò)資源利用率低的問(wèn)題。
Unionfs 通過(guò)堆疊在只讀和可讀寫的目錄之上可以提供類似快照的功能,本文充分利用Unionfs 這一功能,將Unionfs 堆疊在存放虛擬鏡像文件的目錄和存放用戶修改的目錄上,前者操作屬性為只讀,后者的操作屬性為可讀寫。如圖4 所示,img1~imgN代表不同的虛擬鏡像;diff1~diff5 代表相同或不同用戶啟動(dòng)虛擬機(jī)實(shí)例后做自己所需的操作所致鏡像變換的部分。如根據(jù)自己的需要安裝特定軟件,在這種設(shè)計(jì)模式下,如user1 需要啟動(dòng)instance1,則其可以讀取img1 以及diff1 來(lái)啟動(dòng)instance1,當(dāng)user1需要啟動(dòng)instance2 時(shí)不需要再次讀取存放在只讀盤上的img1,而只需要讀取相應(yīng)于instance2 的diff2 并將其和先前已經(jīng)讀取到的img1 結(jié)合來(lái)生成所需的instance2,這樣既節(jié)約了存儲(chǔ)資源又縮減了虛擬實(shí)例啟動(dòng)時(shí)間;當(dāng)user1 需要啟用instance3 時(shí)會(huì)讀取img2 以及對(duì)應(yīng)的diff3,但是同時(shí)當(dāng)user2 需要啟動(dòng)instance4 時(shí),其需要讀取img2 和相應(yīng)的diff4 來(lái)生成instance4,這種設(shè)計(jì)使得不同用戶需同時(shí)啟動(dòng)同一鏡像時(shí)不會(huì)存在資源爭(zhēng)用,從而也不會(huì)對(duì)性能有太大影響。
圖4 堆疊式虛擬鏡像存儲(chǔ)方案
在云環(huán)境中,使用堆疊式文件系統(tǒng)來(lái)組織存儲(chǔ)虛擬鏡像相比傳統(tǒng)的虛擬鏡像存儲(chǔ)方案具有以下優(yōu)勢(shì):(1)在跨數(shù)據(jù)中心的鏡像移動(dòng)方面可以縮短鏡像的移動(dòng)時(shí)間;(2)在虛擬鏡像備份方面可以在保證恢復(fù)速度的前提下減少備份數(shù)據(jù)量;(3)在同一用戶將啟動(dòng)多個(gè)相同鏡像的實(shí)例的情況下可以縮短虛擬機(jī)實(shí)例的啟動(dòng)時(shí)間,在一定程度上提高云用戶體驗(yàn)。
在云計(jì)算數(shù)據(jù)中虛擬機(jī)的動(dòng)態(tài)遷移對(duì)于計(jì)算節(jié)點(diǎn)的負(fù)載和整個(gè)系統(tǒng)的節(jié)能平衡方面有著重要的作用。隨著信息數(shù)據(jù)的爆炸式增長(zhǎng),數(shù)據(jù)中心的數(shù)目也在日益增長(zhǎng),跨數(shù)據(jù)中心的虛擬鏡像移動(dòng)在云環(huán)境中越來(lái)越重要,要實(shí)現(xiàn)實(shí)時(shí)遷移則要保證只需要短暫的暫停原域,不必完全的停止服務(wù)[16],這就要求虛擬鏡像的遷移要快速平穩(wěn)。本文提出的云環(huán)境中虛擬鏡像存儲(chǔ)方案中,對(duì)同一用戶的眾多相同虛擬鏡像只存一份原始鏡像的同時(shí)將用戶啟動(dòng)的虛擬機(jī)中改變的部分(如圖4 中的diff 部分)單獨(dú)存放,在虛擬機(jī)鏡像需要遷移時(shí)對(duì)同一用戶而言只需要移動(dòng)一個(gè)原虛擬鏡像以及眾多diff 數(shù)據(jù),由于diff 數(shù)據(jù)量相對(duì)虛擬機(jī)鏡像來(lái)說(shuō)非常小,因此移動(dòng)的數(shù)據(jù)量整體上少于傳統(tǒng)的虛擬鏡像存儲(chǔ)方式下所需的移動(dòng)數(shù)據(jù)量,從而縮短了鏡像的移動(dòng)時(shí)間。
云計(jì)算環(huán)境中對(duì)可靠性的要求相比其他平臺(tái)只增不減,因此,虛擬機(jī)的備份也是云環(huán)境中一個(gè)主要環(huán)節(jié)。在客戶操作系統(tǒng)、虛擬機(jī)監(jiān)視器和虛擬機(jī)外部這3 個(gè)層次的虛擬機(jī)備份機(jī)制中,每一層都有縮減備份時(shí)間的需求[17],本文提出的堆疊虛擬鏡像存儲(chǔ)方案由于在備份及恢復(fù)時(shí),不會(huì)像重復(fù)數(shù)據(jù)刪除存儲(chǔ)虛擬鏡像方案那樣需要復(fù)雜的計(jì)算、檢索等操作,因此該方案相比傳統(tǒng)的鏡像存儲(chǔ)方案可以縮減虛擬機(jī)備份時(shí)間的同時(shí)保證恢復(fù)時(shí)間也比較短。
虛擬化在云環(huán)境中前所未有的普及,使得虛擬機(jī)的啟停已成為云環(huán)境中例行的公事。用戶在使用云平臺(tái)時(shí),啟動(dòng)虛擬機(jī)所需的時(shí)間與特定時(shí)間段的網(wǎng)絡(luò)帶寬,服務(wù)器性能甚至用戶自己的機(jī)器性能等都有關(guān)系,本文提出的堆疊存儲(chǔ)虛擬鏡像方案對(duì)于同一用戶而言,如果要啟動(dòng)相同虛擬鏡像的多個(gè)實(shí)例,那么可以只讀取一次原虛擬鏡像,再讀取多個(gè)實(shí)例的diff 部分即可,而diff 比原虛擬鏡像文件小很多,因此,相對(duì)減少了讀取鏡像時(shí)傳輸?shù)臄?shù)據(jù)量,從而在一定程度上可以縮短同一用戶啟動(dòng)相同虛擬鏡像的多個(gè)實(shí)例所需的時(shí)間。
本節(jié)通過(guò)設(shè)計(jì)并實(shí)施一系列測(cè)試實(shí)驗(yàn)來(lái)比較3.2 節(jié)和3.3 節(jié)2 種方案各自的優(yōu)劣。在對(duì)2 種方案進(jìn)行對(duì)比的實(shí)驗(yàn)中,使用了 iozone[18]以及filebench[19]2 個(gè)不同側(cè)重點(diǎn)的文件系統(tǒng)測(cè)試工具,其中,iozone 用來(lái)測(cè)試堆疊式文件系統(tǒng)對(duì)文件系統(tǒng)讀寫性能的影響;filebench 用來(lái)測(cè)試2 種方案下系統(tǒng)對(duì)不同負(fù)載表現(xiàn)出來(lái)的性能差異。
為了測(cè)試堆疊文件系統(tǒng)對(duì)性能的影響程度,本文選用iozone 對(duì)安裝有Unionfs 文件系統(tǒng)的環(huán)境進(jìn)行了讀寫性能的測(cè)試,實(shí)驗(yàn)環(huán)境如表1 所示。本文在以上實(shí)驗(yàn)環(huán)境基礎(chǔ)上實(shí)施一組對(duì)比實(shí)驗(yàn),其中,將2 組實(shí)驗(yàn)數(shù)據(jù)進(jìn)行對(duì)比,即系統(tǒng)掛載了Unionfs 時(shí)相應(yīng)讀寫操作的性能和系統(tǒng)卸載了Unionfs 后相應(yīng)讀寫操作性能的比較,通過(guò)比較有無(wú)Unionfs 時(shí)文件系統(tǒng)讀寫操作的性能來(lái)評(píng)估Unionfs 的平均性能損失百分比,以指導(dǎo)用戶在應(yīng)用可以接受的性能損失范圍內(nèi)使用Unionfs,從而充分利用Unionfs 提供的功能特性。
表1 裝有Unionfs 文件系統(tǒng)的實(shí)驗(yàn)環(huán)境
利用同一磁盤的不同分區(qū)來(lái)模擬不同的物理磁盤,其中,使用2 個(gè)40 GB 的被格式化為ext3 的分區(qū)來(lái)模擬Unionfs 底層2 個(gè)不同的物理磁盤,這2 個(gè)分區(qū)的掛載點(diǎn)分別為/mnt/t2 和/mnt/t3,在根分區(qū)下建立/mnt/t 用來(lái)作為Unionfs 的上層目錄。使用如下命令進(jìn)行掛載:
其中,rw 表示/mnt/t2 可讀寫;ro 表示/mnt/t3 為只讀;/mnt/t2 的優(yōu)先級(jí)高于/mnt/t3 的優(yōu)先級(jí),即/mnt/t 中存放/mnt/t2 和/mnt/t3 中的相同文件名的文件時(shí)優(yōu)先存放/mnt/t2 中的文件。使用iozone 對(duì)文件的順序讀和順序?qū)?隨機(jī)讀和隨機(jī)寫的性能進(jìn)行測(cè)試。
Unionfs 順序讀/寫操作測(cè)試結(jié)果如圖5 所示。其中,t~t3 表示目錄卸載Unionfs;t_Unionfs~t3_Unionfs 表示掛載Unionfs;性能百分差=(掛載Unionfs 性能—卸載Unionfs 性能)/掛載Unionfs 性能×100% 。由圖5(a)~圖5(c)可以看出,在掛載Unionfs 時(shí)對(duì)不同優(yōu)先級(jí)的目錄進(jìn)行順序讀操作的速率在75 Mb/s~85 Mb/s 區(qū)間內(nèi)浮動(dòng),在卸載Unionfs后對(duì)不同目錄的順序讀操作速率在80 Mb/s~90 Mb/s區(qū)間內(nèi)浮動(dòng),可以看出,進(jìn)行順序讀操作時(shí)由于Unionfs 只是通過(guò)簡(jiǎn)單的目錄查找去讀取底層目錄中的文件,因此Unionfs 對(duì)文件系統(tǒng)性能的平均影響大約僅為3.6% 。
由圖5(d)~圖5(f)可以看出,在掛載Unionfs時(shí)對(duì)不同優(yōu)先級(jí)的目錄進(jìn)行順序?qū)懖僮鞯乃俾试?0 Mb/s~72 Mb/s 區(qū)間內(nèi)浮動(dòng),在卸載Unionfs 后對(duì)不同目錄的順序讀操作速率在60 Mb/s~72 Mb/s區(qū)間內(nèi)浮動(dòng),可以看出,進(jìn)行順序?qū)懖僮鲿r(shí)由于Unionfs 不會(huì)附加額外的操作處理,因此Unionfs 對(duì)文件系統(tǒng)順序?qū)懶阅艿钠骄绊懘笮H約為2.9% 。
Unionfs 隨機(jī)讀/寫操作性能測(cè)試結(jié)果如圖6所示。
圖5 Unionfs 順序讀/寫操作性能測(cè)試結(jié)果
圖6 Unionfs 隨機(jī)讀/寫操作性能測(cè)試結(jié)果
由圖6(a)~圖6(c)可以看出,在掛載/卸載Unionfs 2 種情況下,隨機(jī)讀操作的性能均隨著操作塊的增大而增大,這是由于隨著操作塊的增大,一次讀入內(nèi)存的內(nèi)容增多而文件總的大小不變,這樣使得隨機(jī)讀的次數(shù)相對(duì)較少??梢钥闯?進(jìn)行隨機(jī)讀操作時(shí)在Unionfs 掛載情況下不同的優(yōu)先級(jí)的目錄中隨機(jī)讀操作的性能差異不大,同時(shí),卸載Unionfs的情況下隨機(jī)讀操作的性能相比有Unionfs 時(shí)的隨機(jī)讀性能差異也不大,可見(jiàn)Unionfs 對(duì)文件系統(tǒng)隨機(jī)讀性能的平均影響比較小僅約為4.3% 。
由圖6(d)~圖6(f)可以看出,在掛載/卸載Unionfs 2 種情況下,與隨機(jī)讀操作相似,隨機(jī)寫操作的性能均隨著操作塊的增大而增大??梢钥闯?進(jìn)行隨機(jī)寫操作時(shí)在Unionfs 掛載情況下不同的優(yōu)先級(jí)的目錄中隨機(jī)寫操作的性能差異不大;同時(shí),卸載Unionfs 的情況下隨機(jī)寫操作的性能相比有Unionfs時(shí)的隨機(jī)寫性能差異也不大,可見(jiàn)Unionfs 對(duì)文件系統(tǒng)隨機(jī)寫性能的平均影響較小且僅約為0.8% 。
為了對(duì)比堆疊方案(堆疊式虛擬鏡像存儲(chǔ)方案)和重刪方案(重復(fù)數(shù)據(jù)刪除鏡像存儲(chǔ)方案),本文使用開(kāi)源軟件Opendedup[20]來(lái)為重刪方案提供重復(fù)數(shù)據(jù)刪除功能,空間重刪文件系統(tǒng)(Space Deduplication File System,SDFS)作為Opendedup 的核心是一個(gè)基于對(duì)象的的重復(fù)刪除文件系統(tǒng)。堆疊方案和重刪方案性能對(duì)比實(shí)驗(yàn)的軟硬件環(huán)境如表2 所示。
表2 堆疊方案和重刪方案性能對(duì)比實(shí)驗(yàn)環(huán)境
在Opendedup 環(huán)境搭建過(guò)程中,建立SDFS 文件系統(tǒng)時(shí),設(shè)置卷實(shí)際存取基本路徑為/data,卷實(shí)際存取的基本路徑是進(jìn)行了deduplication 操作之后實(shí)際存儲(chǔ)數(shù)據(jù)的位置。如圖7 所示,/sdfs 是掛載好sdfs 文件系統(tǒng)的目錄;/data 是卷實(shí)際存取的目錄;deduplication 操作發(fā)生在/sdfs 處,經(jīng)過(guò)重復(fù)數(shù)據(jù)刪除后的數(shù)據(jù)最終存儲(chǔ)在/data 目錄中。
圖7 Opendedup 實(shí)際存儲(chǔ)路徑
堆疊式文件系統(tǒng)的使用能為云環(huán)境下的虛擬鏡像管理提供眾多優(yōu)勢(shì),Opendedup 在處理虛擬鏡像重復(fù)冗余問(wèn)題方面表現(xiàn)也比較突出,為了定量地分析Unionfs 和Opendedup 對(duì)不同應(yīng)用負(fù)載表現(xiàn)出的性能差異,本文使用Filebench 性能測(cè)試工具測(cè)試了在fileserver、varmail、webserver 3 種不同的負(fù)載環(huán)境兩者表現(xiàn)出的性能差異。如表3 所示分別表示3 種負(fù)載環(huán)境下使用Unionfs 和使用opendedup 時(shí)系統(tǒng)在60 s 內(nèi)吞吐量,平均讀寫速率,平均每個(gè)操作的CPU 時(shí)鐘周期數(shù)以及延遲結(jié)果對(duì)比,可以看出,在3 種負(fù)載環(huán)境下,使用堆疊方案時(shí)系統(tǒng)的被測(cè)性能指標(biāo)均遠(yuǎn)優(yōu)于重刪方案的被測(cè)性能指標(biāo)結(jié)果。
表3 堆疊方案和重刪方案對(duì)比結(jié)果
如表3 所示,堆疊方案CPU 的使用率在3 種負(fù)載情況下均比重刪方案的CPU 使用率高;對(duì)于系統(tǒng)的延遲時(shí)間,重刪方案的延遲遠(yuǎn)大于堆疊方案的延遲。出現(xiàn)表3 所示對(duì)比結(jié)果的原因主要有2 點(diǎn):(1)重復(fù)數(shù)據(jù)刪除方案本身需要大量指紋計(jì)算、索引查詢等操作,增加了系統(tǒng)的計(jì)算量和操作復(fù)雜度,而堆疊方案不需要這些額外的計(jì)算操作;(2)重復(fù)數(shù)據(jù)刪除方案Opendedup 的文件系統(tǒng)SDFS 是在用戶層而堆疊方案的文件系統(tǒng)Unionfs 是作為模塊裝載在系統(tǒng)的核心層,因此后者比前者對(duì)系統(tǒng)性能的影響小。
為了將堆疊方案和重刪方案在降低存儲(chǔ)容量方面的能力進(jìn)行對(duì)比,本文實(shí)驗(yàn)收集了實(shí)驗(yàn)室所搭建的基于Openstack 的私有云平臺(tái)[21]上的部分ubuntu虛擬鏡像數(shù)據(jù),其中,包括8 個(gè)Ubuntu 虛擬實(shí)例以及一個(gè)Ubuntu 鏡像模板,總?cè)萘繛?.3 GB。實(shí)驗(yàn)通過(guò)Opendedup 進(jìn)行重復(fù)數(shù)據(jù)刪除處理得出重刪后的總?cè)萘繛?.1 GB;通過(guò)分析8 個(gè)虛擬實(shí)例中已被特定用戶改變的文件數(shù)目以及容量,并將這些容量與鏡像模板容量相加得到堆疊方案下所需的總?cè)萘繛?.011 7 GB,由圖8 可以看出,重刪方案和堆疊方案均在一定程度上降低了存儲(chǔ)容量;出現(xiàn)堆疊方案相比重刪方案所需的容量更小的原因是:在本文實(shí)驗(yàn)云平臺(tái)中,用戶只對(duì)虛擬實(shí)例進(jìn)行了少量的修改致使3.3 節(jié)中的diff 文件的容量較小,從而使得總的容量降低。因此,在用戶對(duì)虛擬實(shí)例只需少量修改的情況下,堆疊方案對(duì)存儲(chǔ)容量的需求相比傳統(tǒng)重復(fù)數(shù)據(jù)刪除方案更具優(yōu)勢(shì)。
圖8 3 種方案存儲(chǔ)容量對(duì)比
針對(duì)云環(huán)境中大量虛擬鏡像帶來(lái)的冗余,使得存儲(chǔ)資源和網(wǎng)絡(luò)資源利用率降低的問(wèn)題,本文提出一種基于可堆疊文件系統(tǒng)的云計(jì)算存儲(chǔ)優(yōu)化方案。實(shí)驗(yàn)結(jié)果表明,該方案在跨數(shù)據(jù)中心虛擬鏡像移動(dòng)、虛擬鏡像備份等方面具有一定優(yōu)勢(shì)。今后將考慮在堆疊式文件系統(tǒng)下層增加更多的硬盤分支,搭建更接近云環(huán)境的測(cè)試平臺(tái),運(yùn)行更多類型的負(fù)載,以觀察系統(tǒng)性能的變化情況。
[1]Nguyen Q T,Tuong N H.Virtual Machine Allocation in Cloud Computing for Minimizing Total Execution Time on Each Machine [C]//Proceedings of International Conference on Computing,Management and Telecommunications.Ho Chi Minh City,Vietnam:[s.n.],2013:241-245.
[2]Thomas B.Virtual Machines and Market Share Through 2012[EB/OL].(2012-11-20).http://citeseerx.ist.psu.edu/showciting? cid=19262285.
[3]Thomas B.Q&A:Six Misconceptions about Server Virtualization Gartner[EB/OL].(2010-07-11).http://citeseerx.ist.psu.edu/showciting? cid=19262286.
[4]Nejad M M,Mashayekhy L,Grosu D.A Family of Truthful Greedy Mechanisms for Dynamic Virtual Machine Provisioning and Allocation in Clouds[C]//Proceedings of the 6th IEEE International Conference on Cloud Computing.[S.l.]:IEEE Press,2013:188-195.
[5]Jin K,Miller E L.The Effectiveness of Deduplication on Virtual Machine Disk Images [C]//Proceedings of SYSTOR’09.Haifa,Israel:[s.n.],2009:57-69.
[6]Liguori A,Hensbergen E.Experiences with Content Addressable Storage and Virtual Disks [ C ]//Proceedings of WIOV’08.San Diego,USA:USENIX Association,2008:129-137.
[7]Zhu Rui,Qin Leihua,Zhou Jingli,et al.Using Multithreads to Hide Deduplication I/O Latency with Low Synchronization Overhead[J].Journal of Central South University,2013,20(6):1582-1591.
[8]Meister D,Brinkmann A.File Recipe Compression in Data Deduplication Systems[C]//Proceedings of the 11th USENIX Conference on File and Storage Technologies.San Jose,USA:USENIX Association,2013:175-182.
[9]Ng C H,Ma M,Wong T Y,et al.Live Deduplication Storage of Virtual Machine Images in an Open-source Cloud [ C]//Proceedings of the 12th International Middleware Conference.[S.l.]:USENIX Association,2011:80-99.
[10]丁德兵.虛擬機(jī)備份系統(tǒng)中存儲(chǔ)空間的優(yōu)化[D].武漢:華中科技大學(xué),2012.
[11]候海翔.虛擬桌面環(huán)境下數(shù)據(jù)去冗余系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2011.
[12]陳公超,劉海濤.云存儲(chǔ)中多類型文件存儲(chǔ)及訪問(wèn)優(yōu)化機(jī)制的研究[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(12):220-226.
[13]謝 俊.可堆疊安全文件系統(tǒng)的存儲(chǔ)優(yōu)化的分析與研究[D].上海:上海交通大學(xué),2008.
[14]Wright C P,Zadok E.Unionfs:Bringing Filesystems Together [ EB/OL ].(2004-11-28).http://www.linuxjournal.com/article/7714.
[15]Quigley D,Sipek J,Wright C P,et al.Unionfs:User-and Community-oriented Development of a Unification Filesystem [C]//Proceedings of Linux Symposium.Ottawa,Canada:Ottava Congress Center,2006:349-362.
[16]魏 坤,許 暉,楊 旸.基于虛擬機(jī)實(shí)時(shí)遷移的綠色云計(jì)算及其技術(shù)實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(6):101-103.
[17]褚禍勇,肖 儂,蔡志平,等.虛擬機(jī)備份機(jī)制研究[J].計(jì)算機(jī)工程與科學(xué),2009,31(9):131-134.
[18]William D,Norcott I.File System Benchmark[EB/OL].(2007-03-23).http://www.iozone.org/.
[19]Mauroj S V.File System Bench[EB/OL].(2011-09-06).http://sourceforge.net/apps/mediawiki/filebench.
[20]Global Deduplication.Gloab Inline Deduplication for Block Storage and Files [EB/OL].(2012-07-14).http://code.google.com/p/opendedup/.
[21]張瑞杰,李戰(zhàn)懷,張 曉,等.基于私有云的虛擬實(shí)驗(yàn)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2013,31(8):159-164.