李思陽,羅 宇
(國防科學技術大學計算機學院,湖南 長沙 410073)
基于多級索引的云平臺鏡像管理系統Milance的設計與實現*
李思陽,羅 宇
(國防科學技術大學計算機學院,湖南 長沙 410073)
OpenStack云平臺的開源掀起了對于基礎設施即服務的云平臺的研究熱潮,但基于本地存儲的鏡像管理存在資源利用率不足的問題。為此,開發了新型的多級索引的鏡像管理系統Milance替換現有的鏡像管理系統,旨在解決現有系統存在的虛擬機實例啟動延時大、做快照時間長、鏡像池占用空間較大的問題。通過測試,相對于現有的系統,Milance系統在虛擬機啟動、虛擬機做快照花費的時間較少。同時,Milance系統也相對于現有系統更加節省鏡像空間。
云計算;虛擬機;鏡像共享;快照
OpenStack自開源以來取得了長足的發展,雖然在虛擬機的底層技術如硬件輔助虛擬化、虛擬機內存頁共享[1]、磁盤的copy-on-wirte[2~4]技術對于虛擬環境的性能和利用率有所提高,但整個分布式的云計算平臺的資源利用率依然不高。
通過研究發現,無論在基于分布式存儲系統的虛擬機平臺還是基于本地的虛擬機存儲系統平臺,虛擬機鏡像的利用率對于虛擬化平臺的性能有很大影響。FVD(Fast Virtual Disk)[12]就通過構建一個在虛擬機頂層的磁盤驅動FVD來使用本地的存儲資源,基于Ceph的OpenStack系統通過共享鏡像和磁盤卷的外部快照和內部快照技術有效地解決了鏡像資源利用率的問題,但完全分布式的系統又造成了很高的網絡負載。這些系統都缺乏對于如何減少鏡像大小,如何對鏡像進行分割,如何管理大量的鏡像資源的研究。而如文獻[6,7]提出了通過R樹管理鏡像資源和優化虛擬機啟動的調度算法都缺乏完整的平臺構建方案。
為此,本文通過理論研究,開發了Milance(Muti-level Index Glance)系統替代原有OpenStack[8~11]的鏡像管理系統Glance,解決了在基于本地存儲的OpenStack系統中如何高效地使用存儲資源,并且解決了虛擬機鏡像在云平臺上鏡像的空間利用率低、虛擬機啟動時間長和做快照速度慢的問題。
本文第2節講述系統的不足;第3節介紹Milance系統;第4節通過實驗驗證了Milance系統對于虛擬機啟動和做快照性能的提升;第5節總結了當前的工作并展望了未來的工作。
2.1 Glance鏡像系統結構
Glance是OpenStack平臺下的一個鏡像管理系統,如圖1所示,Glance一方面管理鏡像的元數據信息;另一方面管理鏡像存儲池,當系統啟動虛擬機實例時,通過NovaAPI獲取元數據信息,并分配一個計算節點的Nova-compute運行虛擬機實例。
由于是基于本地存儲的虛擬機運行方案,Nova-compute需要從Glance下載一個鏡像緩存到本地,并生成一個實例鏡像運行虛擬機。

Figure 1 OpenStack image manage architecture
2.2 單級鏡像管理
Glance對于鏡像的管理是單級的,每個在Glance中的鏡像相互獨立。當運行虛擬機實例時,Nova從Glance下載主鏡像緩存到本地,同時創建一個運行虛擬機的實例鏡像,通過redirect-on-write將所有對于虛擬機的寫操作寫入這個實例,如圖2所示。

Figure 2 Glance architecture
當虛擬機做快照時,Nova-compute利用KVM的block-commit對運行的虛擬機實例做在線拷貝,并且與主鏡像合并,生成獨立的全量快照保存到Glance中。當虛擬機需要從快照恢復時,全量快照作為一個和主鏡像類似的快照緩存到本地,并運行虛擬機實例。
2.3 拷貝合并造成的性能損失
在做快照過程中,由于block-commit需要進行磁盤塊的拷貝而占用了系統的CPU資源和磁盤I/O資源。圖3描述了在表1中的Milance節點的一個2.19 GB的ubuntuserver鏡像和通過DD生成的不同大小的實例鏡像做block-commit的時間。從圖3中可以看出,block-commit的時間隨著實例的增大而增加。

Figure 3 Block-commit time
2.4 下載與回傳的性能損失
由上述過程可以看到,Glance的鏡像管理有下面兩個過程:
(1)需要從Glance下載大小為GB級的鏡像文件緩存到計算節點本地。
(2)需要從虛擬機實例的運行節點將block-commit后的GB級全量快照回傳到Glance服務器。
這兩個過程都需要通過網絡傳輸GB級的文件,對網絡資源的消耗較大。
基于上一節的分析,我們開發Milance作為一種新型的鏡像管理系統,用于代替OpenStack中的Glance。
3.1 Milance的體系結構
如圖4所示,Milance提供和GlanceAPI兼容的MilanceAPI用于滿足Horizon、Nova的訪問。Milance將對于鏡像的訪問分為對基本系統鏡像的訪問、對軟件鏡像的訪問和對于快照的訪問。通過部署在Nova-compute節點的Milance Client確定每次訪問時需要下載哪些鏡像到Nova-compute所在節點的緩存。Nova-compute通過訪問Milance Client獲取所需要的鏡像信息,如鏡像位置等。Milance還通過Milance database將鏡像之間的基本關系、快照之間的關系,以及快照和實例之間的關系存儲在數據庫中,建立多級索引關系。

Figure 4 Milance architecture
3.2 基于多級索引的鏡像存儲
Milance通過建立多級索引管理鏡像之間的關系,如圖5所示,在Milance系統中,軟件是可以配置的,通過KVM的Redirect-on-write技術,可以從一個操作系統的基本鏡像如Ubuntu下生成安裝了相關軟件的增量鏡像,如MySQL、Gnome、Java等,并且可以繼續在這些鏡像上生成與之有軟件依賴關系的其他鏡像,如Java上生成Eclipse等。文獻[12]提到了如何通過KVM構建這樣的cow鏡像。Milance系統通過構建一個多級索引的元數據庫將這些鏡像的依賴關系存放在Milance的數據庫中。
在實際的虛擬機運行中,每一個實例的運行不再僅僅依賴于一個主鏡像,而是依賴于用戶需要配置的軟件所包含的鏡像。同時,用戶做快照時只需要做增量快照,極大地縮短了做快照的時間。

Figure 5 Multi-level index image storage
3.3 消除重復的操作系統鏡像
Milance系統中,每一個應用軟件都如圖5所示,依賴于一個操作系統。管理員只需要為一個版本的系統構建一個鏡像,之后在這個系統上構建的軟件都可以通過增量鏡像的方式存放在軟件空間,而不需要為每一個類型的軟件都構建一個完整的系統鏡像。
假設操作系統所占的空間為Sos,各個軟件所占的平均空間為Ssoft,有nsoft個軟件。同時,用戶產生的實例文件平均大小為Sinstance,實例數目為ninstance,則對于Glance系統而言,其所占的空間包括了各個包含相關軟件的獨立的系統主鏡像和獨立的快照文件,其消耗空間Sglance如公式(1)所示:
Sglance≈nsoft(Sos+Ssoft)+
ninstance(Sos+Ssoft+Sinstance)
(1)
而對于Milance系統而言,其所占的空間包括了一個操作系統鏡像和相關的軟件鏡像,以及相關的實例文件。其消耗的空間Scowance如公式(2)所示:
Scowance≈Sos+nsoft(Ssoft)+ninstanceSinstance
(2)
Milance系統相對與Glance系統節省的空間Save為:
Save≈Sglance-Scowance=
(nsoft-1)Sos+ninstance(Sos+Ssoft)
(3)
由公式(3)可以看出,相對于OpenStack傳統的鏡像管理方式,基于多級索引的快照管理方式節約了大部分的操作系統空間和快照中包含的系統空間。
3.4 縮短啟動時間
除了在Milance的鏡像存儲池對鏡像進行多級索引管理外,還需要在計算節點構建多級索引的緩存,用于優化虛擬機啟動的加載時間。
在OpenStack環境中,系統中每個操作系統所占鏡像平均大小為Sos,每個軟件鏡像的平均大小為Ssoft,啟動系統加載的鏡像大小平均為Sstart,網絡傳輸速度為vnet,磁盤I/O速度為vdisk,則對于Glance環境,順序啟動n個使用相同操作系統,不同軟件的虛擬機實例的時間Tglance包括鏡像在網絡中傳輸的時間和在計算節點啟動鏡像的時間,如公式(4)所示:
(4)
對于Milance系統,其啟動這一組虛擬機的時間Tcowance包括了第一次啟動時傳輸系統鏡像和軟件鏡像的時間和第一次以后傳輸軟件鏡像的時間以及啟動實例需要的時間,如公式(5)所示:
(5)
則其對于Glance系統每一個虛擬機的啟動平均節省的時間Tave為:
(6)
由公式(6)可知,當虛擬機啟動數目n很多時,其節約的啟動時間約為Sos/vnet,所以Milance系統相對于Glance系統節約了重復操作系統鏡像的加載時間,本文在第5節中通過實驗證實了其對于虛擬機啟動的優化效果。
3.5 縮短做快照時間
在Milance系統中,取消了做快照時的block-commit操作,由于采用了多級索引,每一個快照都依賴于如圖5的某個軟件包或者系統,所以不需要建立一個全量的快照。因此,減少了block-commit過程耗費的快照時間。同時,Milance建立的快照是增量快照,僅僅需要復制實例,將實例回傳到Milance系統即可。由于實例中減少了軟件大部分的軟件空間,同時不需要回傳整個全量鏡像。所以,大大縮短了回傳的時間,同時也降低了網絡負載。
對于一個操作系統鏡像大小為Sos,軟件鏡像大小為Ssoft,用戶實例文件大小為Sinstance,磁盤I/O速度為vdisk,block-commit速度為vcommit,網絡傳輸速度為vnet,則其在Glance環境中,虛擬機做快照的時間Tglance包括了通過libvirt的virdomainrebase做實例文件拷貝所用的時間、block-commit所用的時間和網絡傳輸鏡像所用的時間,如公式(7)所示:
(7)
對于Milance系統,其做快照時間Tcowance包括了實例文件拷貝的過程和實例文件傳輸的過程,如公式(8)所示:
(8)
則其相對于Glance系統做快照節約的時間為Tave為:
Tave≈Tglance-Tcowance=
(9)
由公式(9)可知,其節約的時間主要來自于不需要block-commit過程和系統鏡像與軟件鏡像在網絡中傳輸。
3.6 Milance的虛擬機部署方式
Milance的部署方式如圖7所示,其將用戶實例保存在計算節點,這種部署方式的不足是在動態遷移過程中需要進行實例文件的遷移,增加了遷移過程中的網絡負載。但是,這種環境由于所有運行的文件都在本地,可以在虛擬機運行過程中實現較高的性能和較低的網絡負載。

Figure 6 Deployment of Milance
4.1 實驗環境
本次實驗設置了兩個節點,一個節點作為控制節點存放了Milance的鏡像池和Milance服務;另一個節點作為Nova的計算節點用于啟動和運行虛擬機。其網絡拓撲如圖8所示。

Figure 7 Network topology
其各節點的基本信息如表1所示。
4.2 虛擬機啟動的優化
實驗的測試用例分為兩組鏡像,第一組為四個在CentOS 6.5的桌面版鏡像基礎上安裝了MySQL、

Table 1 Experiment enviroment表1 實驗環境

Figure 8 Network transmission time
Gcc、JDK和Libreoffice的獨立鏡像。第二組為使用一個安裝了CentOS 6.5的鏡像和用redirect-on-write鏡像生成的分別包含MySQL、Gcc、JDK和LibreOffice的鏡像。如表2所示。

Table 2 Test case表2 測試用例
經過測試,其網絡傳輸時間如圖8所示,在首次啟動時,兩組啟動的時間基本相同,但在之后的啟動過程中,Milance系統由于沒有傳輸系統鏡像,僅僅傳輸了軟件鏡像,所以其獲得了較快的傳輸時間。其虛擬機啟動時間如圖9所示,其第一次啟動的時間差不多,但其后啟動時,由于Milance系統共享了系統的主鏡像,其有部分鏡像內容已經提前加載到內存的緩存中,所以之后的啟動時間較快。

Figure 9 Start time
4.3 快照時間優化
在快照時間的對比測試中,我們選取了4.2節中第一組的第一個測試用例和第二組的第一個測試用例作為啟動虛擬機實例的鏡像。分別在這兩個鏡像上啟動一個虛擬機實例,分別使用DD命令在虛擬機實例中創建400 MB的文件,用于模擬用戶產生的數據。
其測試結果如表3所示,相對于Glance的方式節約了大量的做快照時間。

Table 3 Time of snapshot表3 快照時間 s
4.4 建立多次快照對于虛擬機訪問的影響
在文獻[12,13] 中都提到了基于redirect-on-write技術對于磁盤訪問性能的影響。而Milance的多級索引是建立在redirect-on-wirte的鏡像基礎上的。為此,我們開發了用論文中全局Bitmap表鏡像格式GBMS,測試Milance系統的差距。
每組實驗中,通過不斷建立多級虛擬機鏡像的快照后,在虛擬機中通過DD測試直接I/O速度,并用性能最好的RAW格式作對比[14]。
實驗結果表明,隨著快照級數的增加,性能損失很小,如圖10所示。

Figure 10 Performance loss in multi-level snapshot
本文通過研究現有的OpenStack云平臺鏡像管理服務Glance,分析了造成虛擬機空間浪費、啟動時間較慢、快照時間較慢的原因。通過分析鏡像管理模型,提出了最小化實例文件的鏡像構建模型和基于三層鏡像的新型鏡像構建方案。在此基礎上,本文研究和開發了運用最小實例文件模型的基于多級索引的Milance新型鏡像管理系統,并對其空間、虛擬機啟動時間、虛擬機快照時間與Glance系統做了理論上的對比分析。最后,本文通過實驗驗證了Milance系統在虛擬機啟動、虛擬機快照和鏡像空間方面的優勢。
[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.
附中文參考文獻
[12] 陳彬,肖儂,蔡志平,等.虛擬機環境下軟件按需部署中的預取機制[J].軟件學報,2010,21(12):3186-3198.
[13] 陳彬,肖儂,蔡志平,等.基于優化的COW虛擬塊設備的虛擬機按需部署機制[J].計算機學報,2009,32(10):18-24.

李思陽(1989-),男,云南昆明人,碩士生,研究方向為操作系統和虛擬機。E-mail:siyangli@nudt.edu.cn
LI Si-yang,born in 1989,MS candidate,his research interests include operating system, and virtual machine.

羅宇(1964-),男,湖南長沙人,教授,研究方向為操作系統和虛擬機。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基金項目:國家自然科學基金資助項目(61370018)
TP316.4
A
10.3969/j.issn.1007-130X.2015.09.006
通信地址:410073 湖南省長沙市國防科學技術大學計算機學院
Address:College of Computer,National University of Defense Technology,Changsha 410073,Hunan,P.R.China