李思陽,羅 宇
(國防科學(xué)技術(shù)大學(xué)計算機(jī)學(xué)院,湖南 長沙 410073)
基于多級索引的云平臺鏡像管理系統(tǒng)Milance的設(shè)計與實(shí)現(xiàn)*
李思陽,羅 宇
(國防科學(xué)技術(shù)大學(xué)計算機(jī)學(xué)院,湖南 長沙 410073)
OpenStack云平臺的開源掀起了對于基礎(chǔ)設(shè)施即服務(wù)的云平臺的研究熱潮,但基于本地存儲的鏡像管理存在資源利用率不足的問題。為此,開發(fā)了新型的多級索引的鏡像管理系統(tǒng)Milance替換現(xiàn)有的鏡像管理系統(tǒng),旨在解決現(xiàn)有系統(tǒng)存在的虛擬機(jī)實(shí)例啟動延時大、做快照時間長、鏡像池占用空間較大的問題。通過測試,相對于現(xiàn)有的系統(tǒng),Milance系統(tǒng)在虛擬機(jī)啟動、虛擬機(jī)做快照花費(fèi)的時間較少。同時,Milance系統(tǒng)也相對于現(xiàn)有系統(tǒng)更加節(jié)省鏡像空間。
云計算;虛擬機(jī);鏡像共享;快照
OpenStack自開源以來取得了長足的發(fā)展,雖然在虛擬機(jī)的底層技術(shù)如硬件輔助虛擬化、虛擬機(jī)內(nèi)存頁共享[1]、磁盤的copy-on-wirte[2~4]技術(shù)對于虛擬環(huán)境的性能和利用率有所提高,但整個分布式的云計算平臺的資源利用率依然不高。
通過研究發(fā)現(xiàn),無論在基于分布式存儲系統(tǒng)的虛擬機(jī)平臺還是基于本地的虛擬機(jī)存儲系統(tǒng)平臺,虛擬機(jī)鏡像的利用率對于虛擬化平臺的性能有很大影響。FVD(Fast Virtual Disk)[12]就通過構(gòu)建一個在虛擬機(jī)頂層的磁盤驅(qū)動FVD來使用本地的存儲資源,基于Ceph的OpenStack系統(tǒng)通過共享鏡像和磁盤卷的外部快照和內(nèi)部快照技術(shù)有效地解決了鏡像資源利用率的問題,但完全分布式的系統(tǒng)又造成了很高的網(wǎng)絡(luò)負(fù)載。這些系統(tǒng)都缺乏對于如何減少鏡像大小,如何對鏡像進(jìn)行分割,如何管理大量的鏡像資源的研究。而如文獻(xiàn)[6,7]提出了通過R樹管理鏡像資源和優(yōu)化虛擬機(jī)啟動的調(diào)度算法都缺乏完整的平臺構(gòu)建方案。
為此,本文通過理論研究,開發(fā)了Milance(Muti-level Index Glance)系統(tǒng)替代原有OpenStack[8~11]的鏡像管理系統(tǒng)Glance,解決了在基于本地存儲的OpenStack系統(tǒng)中如何高效地使用存儲資源,并且解決了虛擬機(jī)鏡像在云平臺上鏡像的空間利用率低、虛擬機(jī)啟動時間長和做快照速度慢的問題。
本文第2節(jié)講述系統(tǒng)的不足;第3節(jié)介紹Milance系統(tǒng);第4節(jié)通過實(shí)驗(yàn)驗(yàn)證了Milance系統(tǒng)對于虛擬機(jī)啟動和做快照性能的提升;第5節(jié)總結(jié)了當(dāng)前的工作并展望了未來的工作。
2.1 Glance鏡像系統(tǒng)結(jié)構(gòu)
Glance是OpenStack平臺下的一個鏡像管理系統(tǒng),如圖1所示,Glance一方面管理鏡像的元數(shù)據(jù)信息;另一方面管理鏡像存儲池,當(dāng)系統(tǒng)啟動虛擬機(jī)實(shí)例時,通過NovaAPI獲取元數(shù)據(jù)信息,并分配一個計算節(jié)點(diǎn)的Nova-compute運(yùn)行虛擬機(jī)實(shí)例。
由于是基于本地存儲的虛擬機(jī)運(yùn)行方案,Nova-compute需要從Glance下載一個鏡像緩存到本地,并生成一個實(shí)例鏡像運(yùn)行虛擬機(jī)。
Figure 1 OpenStack image manage architecture
2.2 單級鏡像管理
Glance對于鏡像的管理是單級的,每個在Glance中的鏡像相互獨(dú)立。當(dāng)運(yùn)行虛擬機(jī)實(shí)例時,Nova從Glance下載主鏡像緩存到本地,同時創(chuàng)建一個運(yùn)行虛擬機(jī)的實(shí)例鏡像,通過redirect-on-write將所有對于虛擬機(jī)的寫操作寫入這個實(shí)例,如圖2所示。
Figure 2 Glance architecture
當(dāng)虛擬機(jī)做快照時,Nova-compute利用KVM的block-commit對運(yùn)行的虛擬機(jī)實(shí)例做在線拷貝,并且與主鏡像合并,生成獨(dú)立的全量快照保存到Glance中。當(dāng)虛擬機(jī)需要從快照恢復(fù)時,全量快照作為一個和主鏡像類似的快照緩存到本地,并運(yùn)行虛擬機(jī)實(shí)例。
2.3 拷貝合并造成的性能損失
在做快照過程中,由于block-commit需要進(jìn)行磁盤塊的拷貝而占用了系統(tǒng)的CPU資源和磁盤I/O資源。圖3描述了在表1中的Milance節(jié)點(diǎn)的一個2.19 GB的ubuntuserver鏡像和通過DD生成的不同大小的實(shí)例鏡像做block-commit的時間。從圖3中可以看出,block-commit的時間隨著實(shí)例的增大而增加。
Figure 3 Block-commit time
2.4 下載與回傳的性能損失
由上述過程可以看到,Glance的鏡像管理有下面兩個過程:
(1)需要從Glance下載大小為GB級的鏡像文件緩存到計算節(jié)點(diǎn)本地。
(2)需要從虛擬機(jī)實(shí)例的運(yùn)行節(jié)點(diǎn)將block-commit后的GB級全量快照回傳到Glance服務(wù)器。
這兩個過程都需要通過網(wǎng)絡(luò)傳輸GB級的文件,對網(wǎng)絡(luò)資源的消耗較大。
基于上一節(jié)的分析,我們開發(fā)Milance作為一種新型的鏡像管理系統(tǒng),用于代替OpenStack中的Glance。
3.1 Milance的體系結(jié)構(gòu)
如圖4所示,Milance提供和GlanceAPI兼容的MilanceAPI用于滿足Horizon、Nova的訪問。Milance將對于鏡像的訪問分為對基本系統(tǒng)鏡像的訪問、對軟件鏡像的訪問和對于快照的訪問。通過部署在Nova-compute節(jié)點(diǎn)的Milance Client確定每次訪問時需要下載哪些鏡像到Nova-compute所在節(jié)點(diǎn)的緩存。Nova-compute通過訪問Milance Client獲取所需要的鏡像信息,如鏡像位置等。Milance還通過Milance database將鏡像之間的基本關(guān)系、快照之間的關(guān)系,以及快照和實(shí)例之間的關(guān)系存儲在數(shù)據(jù)庫中,建立多級索引關(guān)系。
Figure 4 Milance architecture
3.2 基于多級索引的鏡像存儲
Milance通過建立多級索引管理鏡像之間的關(guān)系,如圖5所示,在Milance系統(tǒng)中,軟件是可以配置的,通過KVM的Redirect-on-write技術(shù),可以從一個操作系統(tǒng)的基本鏡像如Ubuntu下生成安裝了相關(guān)軟件的增量鏡像,如MySQL、Gnome、Java等,并且可以繼續(xù)在這些鏡像上生成與之有軟件依賴關(guān)系的其他鏡像,如Java上生成Eclipse等。文獻(xiàn)[12]提到了如何通過KVM構(gòu)建這樣的cow鏡像。Milance系統(tǒng)通過構(gòu)建一個多級索引的元數(shù)據(jù)庫將這些鏡像的依賴關(guān)系存放在Milance的數(shù)據(jù)庫中。
在實(shí)際的虛擬機(jī)運(yùn)行中,每一個實(shí)例的運(yùn)行不再僅僅依賴于一個主鏡像,而是依賴于用戶需要配置的軟件所包含的鏡像。同時,用戶做快照時只需要做增量快照,極大地縮短了做快照的時間。
Figure 5 Multi-level index image storage
3.3 消除重復(fù)的操作系統(tǒng)鏡像
Milance系統(tǒng)中,每一個應(yīng)用軟件都如圖5所示,依賴于一個操作系統(tǒng)。管理員只需要為一個版本的系統(tǒng)構(gòu)建一個鏡像,之后在這個系統(tǒng)上構(gòu)建的軟件都可以通過增量鏡像的方式存放在軟件空間,而不需要為每一個類型的軟件都構(gòu)建一個完整的系統(tǒng)鏡像。
假設(shè)操作系統(tǒng)所占的空間為Sos,各個軟件所占的平均空間為Ssoft,有nsoft個軟件。同時,用戶產(chǎn)生的實(shí)例文件平均大小為Sinstance,實(shí)例數(shù)目為ninstance,則對于Glance系統(tǒng)而言,其所占的空間包括了各個包含相關(guān)軟件的獨(dú)立的系統(tǒng)主鏡像和獨(dú)立的快照文件,其消耗空間Sglance如公式(1)所示:
Sglance≈nsoft(Sos+Ssoft)+
ninstance(Sos+Ssoft+Sinstance)
(1)
而對于Milance系統(tǒng)而言,其所占的空間包括了一個操作系統(tǒng)鏡像和相關(guān)的軟件鏡像,以及相關(guān)的實(shí)例文件。其消耗的空間Scowance如公式(2)所示:
Scowance≈Sos+nsoft(Ssoft)+ninstanceSinstance
(2)
Milance系統(tǒng)相對與Glance系統(tǒng)節(jié)省的空間Save為:
Save≈Sglance-Scowance=
(nsoft-1)Sos+ninstance(Sos+Ssoft)
(3)
由公式(3)可以看出,相對于OpenStack傳統(tǒng)的鏡像管理方式,基于多級索引的快照管理方式節(jié)約了大部分的操作系統(tǒng)空間和快照中包含的系統(tǒng)空間。
3.4 縮短啟動時間
除了在Milance的鏡像存儲池對鏡像進(jìn)行多級索引管理外,還需要在計算節(jié)點(diǎn)構(gòu)建多級索引的緩存,用于優(yōu)化虛擬機(jī)啟動的加載時間。
在OpenStack環(huán)境中,系統(tǒng)中每個操作系統(tǒng)所占鏡像平均大小為Sos,每個軟件鏡像的平均大小為Ssoft,啟動系統(tǒng)加載的鏡像大小平均為Sstart,網(wǎng)絡(luò)傳輸速度為vnet,磁盤I/O速度為vdisk,則對于Glance環(huán)境,順序啟動n個使用相同操作系統(tǒng),不同軟件的虛擬機(jī)實(shí)例的時間Tglance包括鏡像在網(wǎng)絡(luò)中傳輸?shù)臅r間和在計算節(jié)點(diǎn)啟動鏡像的時間,如公式(4)所示:
(4)
對于Milance系統(tǒng),其啟動這一組虛擬機(jī)的時間Tcowance包括了第一次啟動時傳輸系統(tǒng)鏡像和軟件鏡像的時間和第一次以后傳輸軟件鏡像的時間以及啟動實(shí)例需要的時間,如公式(5)所示:
(5)
則其對于Glance系統(tǒng)每一個虛擬機(jī)的啟動平均節(jié)省的時間Tave為:
(6)
由公式(6)可知,當(dāng)虛擬機(jī)啟動數(shù)目n很多時,其節(jié)約的啟動時間約為Sos/vnet,所以Milance系統(tǒng)相對于Glance系統(tǒng)節(jié)約了重復(fù)操作系統(tǒng)鏡像的加載時間,本文在第5節(jié)中通過實(shí)驗(yàn)證實(shí)了其對于虛擬機(jī)啟動的優(yōu)化效果。
3.5 縮短做快照時間
在Milance系統(tǒng)中,取消了做快照時的block-commit操作,由于采用了多級索引,每一個快照都依賴于如圖5的某個軟件包或者系統(tǒng),所以不需要建立一個全量的快照。因此,減少了block-commit過程耗費(fèi)的快照時間。同時,Milance建立的快照是增量快照,僅僅需要復(fù)制實(shí)例,將實(shí)例回傳到Milance系統(tǒng)即可。由于實(shí)例中減少了軟件大部分的軟件空間,同時不需要回傳整個全量鏡像。所以,大大縮短了回傳的時間,同時也降低了網(wǎng)絡(luò)負(fù)載。
對于一個操作系統(tǒng)鏡像大小為Sos,軟件鏡像大小為Ssoft,用戶實(shí)例文件大小為Sinstance,磁盤I/O速度為vdisk,block-commit速度為vcommit,網(wǎng)絡(luò)傳輸速度為vnet,則其在Glance環(huán)境中,虛擬機(jī)做快照的時間Tglance包括了通過libvirt的virdomainrebase做實(shí)例文件拷貝所用的時間、block-commit所用的時間和網(wǎng)絡(luò)傳輸鏡像所用的時間,如公式(7)所示:
(7)
對于Milance系統(tǒng),其做快照時間Tcowance包括了實(shí)例文件拷貝的過程和實(shí)例文件傳輸?shù)倪^程,如公式(8)所示:
(8)
則其相對于Glance系統(tǒng)做快照節(jié)約的時間為Tave為:
Tave≈Tglance-Tcowance=
(9)
由公式(9)可知,其節(jié)約的時間主要來自于不需要block-commit過程和系統(tǒng)鏡像與軟件鏡像在網(wǎng)絡(luò)中傳輸。
3.6 Milance的虛擬機(jī)部署方式
Milance的部署方式如圖7所示,其將用戶實(shí)例保存在計算節(jié)點(diǎn),這種部署方式的不足是在動態(tài)遷移過程中需要進(jìn)行實(shí)例文件的遷移,增加了遷移過程中的網(wǎng)絡(luò)負(fù)載。但是,這種環(huán)境由于所有運(yùn)行的文件都在本地,可以在虛擬機(jī)運(yùn)行過程中實(shí)現(xiàn)較高的性能和較低的網(wǎng)絡(luò)負(fù)載。
Figure 6 Deployment of Milance
4.1 實(shí)驗(yàn)環(huán)境
本次實(shí)驗(yàn)設(shè)置了兩個節(jié)點(diǎn),一個節(jié)點(diǎn)作為控制節(jié)點(diǎn)存放了Milance的鏡像池和Milance服務(wù);另一個節(jié)點(diǎn)作為Nova的計算節(jié)點(diǎn)用于啟動和運(yùn)行虛擬機(jī)。其網(wǎng)絡(luò)拓?fù)淙鐖D8所示。
Figure 7 Network topology
其各節(jié)點(diǎn)的基本信息如表1所示。
4.2 虛擬機(jī)啟動的優(yōu)化
實(shí)驗(yàn)的測試用例分為兩組鏡像,第一組為四個在CentOS 6.5的桌面版鏡像基礎(chǔ)上安裝了MySQL、
Table 1 Experiment enviroment表1 實(shí)驗(yàn)環(huán)境
Figure 8 Network transmission time
Gcc、JDK和Libreoffice的獨(dú)立鏡像。第二組為使用一個安裝了CentOS 6.5的鏡像和用redirect-on-write鏡像生成的分別包含MySQL、Gcc、JDK和LibreOffice的鏡像。如表2所示。
Table 2 Test case表2 測試用例
經(jīng)過測試,其網(wǎng)絡(luò)傳輸時間如圖8所示,在首次啟動時,兩組啟動的時間基本相同,但在之后的啟動過程中,Milance系統(tǒng)由于沒有傳輸系統(tǒng)鏡像,僅僅傳輸了軟件鏡像,所以其獲得了較快的傳輸時間。其虛擬機(jī)啟動時間如圖9所示,其第一次啟動的時間差不多,但其后啟動時,由于Milance系統(tǒng)共享了系統(tǒng)的主鏡像,其有部分鏡像內(nèi)容已經(jīng)提前加載到內(nèi)存的緩存中,所以之后的啟動時間較快。
Figure 9 Start time
4.3 快照時間優(yōu)化
在快照時間的對比測試中,我們選取了4.2節(jié)中第一組的第一個測試用例和第二組的第一個測試用例作為啟動虛擬機(jī)實(shí)例的鏡像。分別在這兩個鏡像上啟動一個虛擬機(jī)實(shí)例,分別使用DD命令在虛擬機(jī)實(shí)例中創(chuàng)建400 MB的文件,用于模擬用戶產(chǎn)生的數(shù)據(jù)。
其測試結(jié)果如表3所示,相對于Glance的方式節(jié)約了大量的做快照時間。
Table 3 Time of snapshot表3 快照時間 s
4.4 建立多次快照對于虛擬機(jī)訪問的影響
在文獻(xiàn)[12,13] 中都提到了基于redirect-on-write技術(shù)對于磁盤訪問性能的影響。而Milance的多級索引是建立在redirect-on-wirte的鏡像基礎(chǔ)上的。為此,我們開發(fā)了用論文中全局Bitmap表鏡像格式GBMS,測試Milance系統(tǒng)的差距。
每組實(shí)驗(yàn)中,通過不斷建立多級虛擬機(jī)鏡像的快照后,在虛擬機(jī)中通過DD測試直接I/O速度,并用性能最好的RAW格式作對比[14]。
實(shí)驗(yàn)結(jié)果表明,隨著快照級數(shù)的增加,性能損失很小,如圖10所示。
Figure 10 Performance loss in multi-level snapshot
本文通過研究現(xiàn)有的OpenStack云平臺鏡像管理服務(wù)Glance,分析了造成虛擬機(jī)空間浪費(fèi)、啟動時間較慢、快照時間較慢的原因。通過分析鏡像管理模型,提出了最小化實(shí)例文件的鏡像構(gòu)建模型和基于三層鏡像的新型鏡像構(gòu)建方案。在此基礎(chǔ)上,本文研究和開發(fā)了運(yùn)用最小實(shí)例文件模型的基于多級索引的Milance新型鏡像管理系統(tǒng),并對其空間、虛擬機(jī)啟動時間、虛擬機(jī)快照時間與Glance系統(tǒng)做了理論上的對比分析。最后,本文通過實(shí)驗(yàn)驗(yàn)證了Milance系統(tǒng)在虛擬機(jī)啟動、虛擬機(jī)快照和鏡像空間方面的優(yōu)勢。
[1] Arcangeli A, Eidus I, Wright C. Increasing memory density by using ksm[C]∥Proc of the Linux Symposium,2009:19-28.
[2] David H,Michael M,James L,et al. Copy on write file system consistency and block usage:US Patent,6892211[P].2005-05-10.
[3] McLoughlin M. The qcow2 image format [EB/OL].[2008-10-15].http://people. gnome.org.
[4] Peterson Z N J.Data placement for copy-on-write using virtual contiguity[D].California:University of California,2002.
[5] ChunqiangTang.Fvd:a high-performance virtual machine image format for cloud[C]∥Proc of the 2011 Conference on USENIX Annual Technical, 2011:189-193.
[6] Younge A J, Von Laszewski G,Wang L, et al. Resource management for cloud computing environment[C]∥Proc of Green Computing Conference,2010:357-364.
[7] Shah M M, Patwal P S. Multi-dimensional image indexing
with r-tree[EB/OL].[2014-10-16].http:∥www.academicscience.com.
[8] LLC OpenStack. Openstack compute administration manual[J].LLC OpenStack,2012,1(1):566-567.
[9] LLC OpenStack. Openstack install and deploy manual[J].LLC OpenStack,2012,1(1):567-579.
[10] Sefraoui O, Aissaoui M, Eleuldj M. Openstack:Toward an open-source solution for cloud computing[J].International Journal of Computer Applications,2012,60(55):345-350.
[11] Pepple K. DeployingOpenStack[M].Sebastopol:O’Reilly Media,Inc,2011.
[12] Chen Bin, Xiao Nong, Cai Zhi-ping, et al. Perfetch mechanism for on-demand software deploment in virtual machine environment[J]. Journal of Software,2010,21(12):3186-3198.(in Chinese)
[13] Chen Bin,Xiao Nong,Cai Zhi-ping, et al. On-demand deployment of virtual machines based on optimized cow virtual block device[J]. Chinese Journal of Computer,2009,32(10):18-24.(in Chinese)
[14] Huynh S H,Theurer A.Kvm virtualized ioperformance[J].IBM,2013,1(1):1-20.
附中文參考文獻(xiàn)
[12] 陳彬,肖儂,蔡志平,等.虛擬機(jī)環(huán)境下軟件按需部署中的預(yù)取機(jī)制[J].軟件學(xué)報,2010,21(12):3186-3198.
[13] 陳彬,肖儂,蔡志平,等.基于優(yōu)化的COW虛擬塊設(shè)備的虛擬機(jī)按需部署機(jī)制[J].計算機(jī)學(xué)報,2009,32(10):18-24.
李思陽(1989-),男,云南昆明人,碩士生,研究方向?yàn)椴僮飨到y(tǒng)和虛擬機(jī)。E-mail:siyangli@nudt.edu.cn
LI Si-yang,born in 1989,MS candidate,his research interests include operating system, and virtual machine.
羅宇(1964-),男,湖南長沙人,教授,研究方向?yàn)椴僮飨到y(tǒng)和虛擬機(jī)。E-mail:lycao@163.com
LUO Yu,born in 1964,professor,his research interests include operating system, and virtual machine.
Milance:a cloud image management system based on multi-level index
LI Si-yang,LUO Yu
(College of Computer,National University of Defense Technology,Changsha 410073,China)
The deployment of OpenStack,an open-source cloud computing platform,has gained popularity for the study of IaaS (Infrastructure as a Service),whereas its resource utilization rate is still low.In order to Address this problem,we present a novel image management system,Milance,based on Multi-level Index Glance to replace the existing one which is characterized with a long VM start-up latency,a slow snap-shop and a large image pool.Experimental results show that in contrast to the existing image management system,Milance not only reduces the latency of VM start-ups and the cost of snap-shots,but also saves more image space.
cloud computing;virtual machine;image sharing;snapshot
1007-130X(2015)09-1637-06
2014-07-09;
2014-10-11基金項(xiàng)目:國家自然科學(xué)基金資助項(xiàng)目(61370018)
TP316.4
A
10.3969/j.issn.1007-130X.2015.09.006
通信地址:410073 湖南省長沙市國防科學(xué)技術(shù)大學(xué)計算機(jī)學(xué)院
Address:College of Computer,National University of Defense Technology,Changsha 410073,Hunan,P.R.China