一种低存储空间的虚拟机镜像打包方法

文档序号:6637728阅读:977来源:国知局
一种低存储空间的虚拟机镜像打包方法
【专利摘要】本发明涉及云计算领域,特别是指一种低存储空间的虚拟机镜像打包方法。本发明首先基于创建外部快照文件的方式运行虚拟机;然后比较快照与母镜像大小,母镜像大则合并镜像,然后创建虚拟机;母镜像小,则快照作为镜像,把外部快照文件作为虚拟磁盘文件创建虚拟机。本发明解决了虚拟机存储利用率低的问题;可用于低存储空间的虚拟机镜像打包。
【专利说明】一种低存储空间的虚拟机镜像打包方法

【技术领域】
[0001]本发明涉及云计算领域,特别是指特别是指一种低存储空间的虚拟机镜像打包方法。

【背景技术】
[0002]在云平台中,用户一般基于基础镜像创建虚拟机实例以后,都会基于当前的虚拟机实例打包成新的虚拟机镜像,以此镜像作为模板重新批量创建虚拟机。基于镜像运行虚拟机有两种模式:第一种是直接运行拷贝镜像文件,把镜像文件作为虚拟磁盘文件,该模式在打包时直接把当前虚拟机实例文件拷贝一份作为虚拟机镜像即可。第二种是先基于虚拟机镜像文件创建外部快照文件,把外部快照文件作为虚拟磁盘文件,所有基于虚拟机镜像文件的改变都被写入到外部快照文件中。在此种模式下,打包的流程如下:
[0003]1、关闭虚拟机实例以停止虚拟机实例的一切1读写操作,确保打包的镜像时保存的是最新的数据;
[0004]2、创建一个新的镜像文件,先写入虚拟机镜像文件的数据,再写入外部快照文件的数据,合并数据的文件就是新的镜像文件。
[0005]上述方法存在以下的问题:
[0006]1、合并写入镜像文件耗费的时间比较长;
[0007]2、占用的存储空间较大,新的镜像文件与原来的虚拟机镜像文件有一定的关联,没有必要浪费空间存储重复的数据,外部快照文件中可能也存在与原来虚拟机镜像文件重复的数据,需要运用策略尽量避免。


【发明内容】

[0008]本发明解决的技术问题在于提供一种低存储空间的虚拟机镜像打包方法,解决虚拟机存储利用率低的问题。
[0009]本发明解决上述技术问题的技术方案是:
[0010]所述的方法包括以下步骤:
[0011]步骤1:基于创建外部快照文件的方式运行虚拟机:
[0012]步骤2:虚拟机打包时,首先查看外部快照文件的大小,如果外部快照文件的大小小于虚拟机镜像文件,虚拟机基于原始镜像所做的改变不多,那么执行步骤3 ;否则表明虚拟机基于原始镜像所做的改变已经多于原始镜像,虚拟机中存在与原始镜像重复的数据也比较多,执行步骤4;
[0013]步骤3:直接把虚拟机的外部快照文件作为镜像保存,需要用此种镜像创建虚拟机时执行步骤5 ;
[0014]步骤4:创建一个新的镜像文件,把虚拟机原始镜像文件和外部快照文件的数据合并到此镜像中;
[0015]步骤5:查询新的镜像文件信息中是否有母镜像的数据项,如果有,那么执行步骤6,否则执行步骤7;
[0016]步骤6:根据母镜像的名称在镜像列表中查找到,然后把母镜像和当前镜像拷贝到虚拟机实例文件存放路径中,把当前镜像作为虚拟磁盘文件创建新的虚拟机;
[0017]步骤7:直接把当前镜像文件拷贝到虚拟机实例文件存放路径,基于当前镜像文件创建一个外部快照文件,把外部快照文件作为虚拟磁盘文件创建虚拟机。
[0018]所述虚拟机镜像采用COW的原理,用外部快照作为虚拟机实例文件。
[0019]所述镜像文件存在元数据,通过查询元数据了解是否有母镜像。
[0020]所述创建虚拟机时存在一个镜像池,用来存放母镜像和快照镜像文件。
[0021]所述从镜像池拷贝到实例文件存放路径过程时会限制并发数,一般默认设置并发数为2。
[0022]本发明方案的有益效果如下:
[0023]1、本发明的方法总体耗费的时间相对较少。
[0024]2、本发明的方法占用的存储空间较大,能在合并镜像文件和使用外部快照文件两种方法之间取得平衡,是在打包速度与存储空间比较均衡的一种策略。

【专利附图】

【附图说明】
[0025]下面结合附图对本发明进一步说明:
[0026]图1为本发明的流程图;

【具体实施方式】
[0027]流程图如图1所示,具体实施过程如下:
[0028]1、用外部快照的方式创建虚拟机
[0029]如果镜像是qcow2格式,那么如下
[0030]#qemu-1mg create/instance/cache/em1-12345-f qcow2/instance/1-ab234/em1-12345.snap
[0031]如果镜像是vhd格式,那么如下
[0032]#vhd-util snapshot-p/instance/cache/em1-12345/instance/i_abl234/em1-12345.snap
[0033]2、获取快照文件大小
[0034]如果快照是qcow2格式,那么如下
[0035]#qemu-1mg check/instance/1-ab 1234/emi_12345.snap#qemu_img check/instance/cache/em1-12345
[0036]如果快照是vhd格式,那么如下
[0037]#vhd-utiI query-n/instance/1-ab 1234/em1-12345.snap-s#vhd_utiIquery-n/instance/_abl234/em1-12345
[0038]3、直接把快照作为镜像
[0039]#cp/instance/1-abl234/em1-12345.snap/instance/pool/
[0040]然后把镜像信息保存到数据库
[0041]4、合并镜像
[0042]针对qC0W2文件,那么
[0043]#qemu-1mg-b/instance/_abl234/em1-12345/instance/i_abl234/em1-12345.snap
[0044]针对vhd文件,那么
[0045]#vhd-util vhd-util coalesee-n/instance/1-abl234/em1-12345.snap
[0046]5、查询镜像是否存在母镜像
[0047]针对qC0W2文件,那么
[0048]#qemu-1mg info/instance/1-abl234/em1-12345.snap
[0049]针对vhd文件,那么
[0050]#vhd-util scan-n/i nstance/1-abl234/emi_12345.snap。
【权利要求】
1.一种低存储空间的虚拟机镜像打包方法,其特征在于:所述的方法包括以下步骤: 步骤1:基于创建外部快照文件的方式运行虚拟机: 步骤2:虚拟机打包时,首先查看外部快照文件的大小,如果外部快照文件的大小小于虚拟机镜像文件,虚拟机基于原始镜像所做的改变不多,那么执行步骤3 ;否则表明虚拟机基于原始镜像所做的改变已经多于原始镜像,虚拟机中存在与原始镜像重复的数据也比较多,执行步骤4 ; 步骤3:直接把虚拟机的外部快照文件作为镜像保存,需要用此种镜像创建虚拟机时执行步骤5 ; 步骤4:创建一个新的镜像文件,把虚拟机原始镜像文件和外部快照文件的数据合并到此镜像中; 步骤5:查询新的镜像文件信息中是否有母镜像的数据项,如果有,那么执行步骤6,否则执行步骤7 ; 步骤6:根据母镜像的名称在镜像列表中查找到,然后把母镜像和当前镜像拷贝到虚拟机实例文件存放路径中,把当前镜像作为虚拟磁盘文件创建新的虚拟机; 步骤7:直接把当前镜像文件拷贝到虚拟机实例文件存放路径,基于当前镜像文件创建一个外部快照文件,把外部快照文件作为虚拟磁盘文件创建虚拟机。
2.根据权利要求1所述的低存储空间的虚拟机镜像打包方法,其特征在于:所述虚拟机镜像采用COW的原理,用外部快照作为虚拟机实例文件。
3.根据权利要求1所述的低存储空间的虚拟机镜像打包方法,其特征在于:所述镜像文件存在元数据,通过查询元数据了解是否有母镜像。
4.根据权利要求2所述的低存储空间的虚拟机镜像打包方法,其特征在于:所述镜像文件存在元数据,通过查询元数据了解是否有母镜像。
5.根据权利要求1至4任一项所述的低存储空间的虚拟机镜像打包方法,其特征在于:所述创建虚拟机时存在一个镜像池,用来存放母镜像和快照镜像文件。
6.根据权利要求5所述的低存储空间的虚拟机镜像打包方法,其特征在于:所述从镜像池拷贝到实例文件存放路径过程时会限制并发数,一般默认设置并发数为2。
【文档编号】G06F9/455GK104486392SQ201410743495
【公开日】2015年4月1日 申请日期:2014年12月5日 优先权日:2014年12月5日
【发明者】张瑜科, 杨松, 莫展鹏, 季统凯 申请人:国云科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1