李思阳,罗 宇
(国防科学技术大学计算机学院,湖南 长沙 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