用于存储虚拟机镜像的方法及设备技术领域
本申请涉及信息技术领域,尤其涉及一种用于存储虚拟机镜像的方法及设备。
背景技术
云计算作为一种新兴的资源供应模式,近年来得到了快速的发展。云计算旨在低
成本地为用户按需提供高质量的弹性云服务。云计算提供的虚拟机服务有利于降低用户的
IT成本,提高云供应商的资源利用率和管理能力,这种方式也存在资源滥用问题。由于虚拟
机的创建成本较低,用户往往为不同的任务创建不同的虚拟机,由虚拟机产生的镜像文件
是用户使用环境的备份文件。当虚拟机出现异常状况时,镜像文件可以为用户恢复备份时
的使用场景。
在现有技术中,虚拟机(VM,Virtual Machine)运行于云计算平台的主存储设备
中,虚拟机的镜像文件存储于镜像服务器中。一个完整的镜像文件(image)大小可能为几GB
(GigaByte,千兆字节)到几十GB。在每次存储虚拟机镜像文件时,需要由主存储设备生成完
整的镜像文件,然后通过SFTP(Secure File Transfer Protocol,安全文件传输协议),将
镜像文件从主存储设备本地上传到到镜像服务器,保存一个相同大小的完整的镜像文件,
由此完成镜像文件的存储过程。由于完成的镜像文件数据量较大,在每一次处理过程中都
生成并存储虚拟机的完整镜像文件,将会占用大量的磁盘空间、计算资源以及网络资源。
申请内容
本申请的一个目的是提供一种用于存储虚拟机镜像的方法及设备,用以解决现有
技术中占用大量的磁盘空间以及网络资源的问题。
为实现上述目的,本申请提供了一种用于存储虚拟机镜像的方法,所述虚拟机基
于从镜像服务器获取的镜像基础文件创建,并运行于主存储设备,其中,所述方法包括:
所述主存储设备存储所述虚拟机的增量文件,并建立与所述镜像基础文件之间的
索引关系;
所述主存储设备将所述增量文件发送至镜像服务器。
进一步地,所述主存储设备将所述增量文件发送至镜像服务器之前,还包括:
所述主存储设备对所述增量文件进行切片处理,生成关于所述增量文件的切片文
件;
所述主存储设备将所述增量文件发送至镜像服务器,包括:
所述主存储设备采用并发的方式向所述镜像服务器发送关于所述增量文件的切
片文件。
进一步地,所述主存储设备对所述增量文件进行切片处理,生成关于所述增量文
件的切片文件之后,还包括:
所述主存储设备根据每个切片文件的内容生成对应的摘要;
所述主存储设备基于所述增量文件的所有切片文件的摘要生成汇总摘要,其中,
所述汇总摘要与所述增量文件的所有切片文件的摘要对应,且映射关系唯一;
所述主存储设备采用并发的方式向所述镜像服务器发送关于所述增量文件的切
片文件,包括:
所述主存储设备检测所述镜像服务器中是否存在相同的汇总摘要;
若不存在相同的汇总摘要,所述主存储设备将所述汇总摘要以及所述汇总摘要对
应的所述切片文件发送至镜像服务器。
进一步地,所述主存储设备对所述增量文件进行切片处理,生成关于所述增量文
件的切片文件之后,还包括:
所述主存储设备根据每个切片文件的内容生成对应的摘要;
所述主存储设备基于所述增量文件的所有切片文件的摘要生成汇总摘要,其中,
所述汇总摘要与所述增量文件的所有切片文件的摘要对应,且映射关系唯一;
所述主存储设备采用并发的方式向所述镜像服务器发送关于所述增量文件的切
片文件,包括:
所述主存储设备检测所述镜像服务器中是否存在相同的汇总摘要;
若不存在相同的汇总摘要,所述主存储设备检测所述汇总摘要对应的摘要是否为
非冗余摘要,其中,所述非冗余摘要为所述镜像服务器中已存储的摘要不同的摘要;
所述主存储设备将所述汇总摘要、所述非冗余摘要以及所述非冗余摘要对应的切
片文件发送至镜像服务器。
进一步地,所述主存储设备基于所述增量文件的所有切片文件的摘要生成汇总摘
要,包括:
所述主存储设备将所述增量文件的所有切片文件的摘要按预设顺序合并;
将合并后的摘要进行哈希计算,生成哈希值,以作为所述汇总摘要。
进一步地,所述主存储设备对所述增量文件进行切片处理,生成关于所述增量文
件的切片文件,包括:
所述主存储设备根据预设值对所述增量文件进行切片处理,生成关于所述增量文
件的切片文件,其中,每个切片文件的大小均小于等于所述预设值。
基于本申请的另一方面,还提供了一种用于存储虚拟机镜像的主存储设备,所述
虚拟机基于从镜像服务器获取的镜像基础文件创建,并运行于所述主存储设备,其中,所述
主存储设备包括:
生成装置,用于生成所述虚拟机的增量文件,并建立与所述镜像基础文件之间的
索引关系;
发送装置,用于将所述增量文件发送至镜像服务器。
进一步地,所述主存储设备还包括:
切片装置,用于在将所述增量文件发送至镜像服务器之前,对所述增量文件进行
切片处理,生成关于所述增量文件的切片文件;
所述发送装置,用于采用并发的方式向所述镜像服务器发送关于所述增量文件的
切片文件。
进一步地,所述主存储设备还包括:
标记装置,用于在对所述增量文件进行切片处理,生成关于所述增量文件的切片
文件之后,根据每个切片文件的内容生成对应的摘要;以及基于所述增量文件的所有切片
文件的摘要生成汇总摘要,其中,所述汇总摘要与所述增量文件的所有切片文件的摘要对
应,且映射关系唯一;
所述发送装置,用于检测所述镜像服务器中是否存在相同的汇总摘要;以及在不
存在相同的汇总摘要时,将所述汇总摘要以及所述汇总摘要对应的所述切片文件发送至镜
像服务器。
进一步地,所述主存储设备还包括:
标记装置,用于在对所述增量文件进行切片处理,生成关于所述增量文件的切片
文件之后,根据每个切片文件的内容生成对应的摘要;以及基于所述增量文件的所有切片
文件的摘要生成汇总摘要,其中,所述汇总摘要与所述增量文件的所有切片文件的摘要对
应,且映射关系唯一;
所述发送装置,用于检测所述镜像服务器中是否存在相同的汇总摘要;以及在不
存在相同的汇总摘要时,检测所述汇总摘要对应的摘要是否为非冗余摘要,并将所述汇总
摘要、所述非冗余摘要以及所述非冗余摘要对应的切片文件发送至镜像服务器,其中,所述
非冗余摘要为所述镜像服务器中已存储的摘要不同的摘要。
进一步地,所述发送装置,在基于所述增量文件的所有切片文件的摘要生成汇总
摘要时,用于将所述增量文件的所有切片文件的摘要按预设顺序合并,以及将合并后的摘
要进行哈希计算,生成哈希值,以作为所述汇总摘要。
进一步地,所述切片装置,用于根据预设值对所述增量文件进行切片处理,生成关
于所述增量文件的切片文件,其中,每个切片文件的大小均小于等于所述预设值。
与现有技术相比,本申请提供了一种用于存储虚拟机镜像的方法及设备,该方案
中所涉及的虚拟机基于从镜像服务器获取的镜像基础文件创建,并运行于主存储设备,在
处理过程中,主存储设备仅生成所述虚拟机的增量文件,而无需生成所述虚拟机的镜像基
础文件并生成完整的镜像文件。由于创建虚拟机所使用的是镜像服务器上的镜像基础文
件,因此在向镜像服务器发送增量文件之后,镜像服务器中存储有组成完整镜像文件所需
要的镜像基础文件以及相应的增量文件,因此在确保镜像文件完整性的前提下,仅需要较
小的存储空间、计算资源和网络资源即可实现虚拟机镜像文件的存储。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它
特征、目的和优点将会变得更明显:
图1为本申请实施例提供的一种用于存储虚拟机镜像的方法的流程图;
图2为本申请中镜像文件、基础镜像文件以及增量文件之间相对关系的示意图;
图3为本申请实施例提供的一种优选的用于存储虚拟机镜像的方法的流程图;
图4为本申请实施例提供的第二种优选的用于存储虚拟机镜像的方法的流程图;
图5为本申请实施例提供的第三种优选的用于存储虚拟机镜像的方法的流程图;
图6为采用了本申请技术方案的主存储设备和镜像服务器的组成示意图;
图7为采用本申请提供的方法对主存储设备中的一个虚拟机存储镜像的处理过程
的流程图;
图8为本申请实施例提供的一种用于存储虚拟机镜像的主存储设备的结构示意
图;
图9为本申请实施例提供的一种优选的用于存储虚拟机镜像的主存储设备的结构
示意图;
图10为本申请实施例提供的另一种优选的用于存储虚拟机镜像的主存储设备的
结构示意图;
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个
处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或
非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示
例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法
或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动
态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除
可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、
数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或
任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机
可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
图1示出了本申请实施例提供的一种用于存储虚拟机镜像的方法,该方法中,所述
虚拟机基于从镜像服务器获取的镜像基础文件创建,并运行于主存储设备,在进行存储时,
所述方法具体包括以下步骤:
步骤S101,所述主存储设备生成所述虚拟机的增量文件,并建立与所述镜像基础
文件之间的索引关系。
步骤S102,所述主存储设备将所述增量文件发送至镜像服务器。
由于在实际场景中,虚拟机运行在云计算平台的主存储设备中,所述主存储设备
即为云计算平台的某一节点,其具体实现可以是网络主机、单个网络服务器、多个网络服务
器组成的集群等。在现有技术中,主存储设备中产生的某一虚拟机的完整镜像文件有可能
为几G到几十G的大小,会占用大量的存储资源。且由于数据量较大,生成时间也会较长,因
此将长时间占用主存储设备的计算资源,主存储设备计算资源不足的情况下可能会影响其
他虚拟机的运行状态,影响整个主存储设备的稳定性。
该方法中所涉及的虚拟机基于从镜像服务器获取的镜像基础文件创建,并运行于
主存储设备,在处理过程中,主存储设备仅生成所述虚拟机的增量文件,而无需生成所述虚
拟机的镜像基础文件并生成完整的镜像文件。由于增量文件与创建虚拟机所使用的镜像基
础文件存在索引关系,因此在向镜像服务器发送增量文件之后,镜像服务器中存储有组成
完整镜像文件所需要的镜像基础文件以及相应的增量文件,因此在确保镜像文件完整性的
前提下,仅需要较少的存储空间、计算资源和网络资源即可实现虚拟机镜像文件的存储。
在本申请中,所述索引关系可以通过定义一个JSON(JavaScript
ObjectNotation,JavaScript对象表示法)文件来描述。所述基础镜像文件(base)是指创建
虚拟机时所使用的完整镜像文件(image),而所述增量文件一般采用快照的方式生成,即快
照文件(snapshot),当主存储设备生成一个虚拟机镜像时,将创建虚拟机时的image指定为
只读状态,作为base,将磁盘中相对于base的增量数据作为snapshot。一般情况下,增量文
件的数据量远小于基础镜像文件。
所述基础镜像文件是一个相对的概念,通过图2详细说明该相对关系。若镜像服务
器中初始的镜像文件为image0,在创建虚拟机vm1时,该image0即为基础镜像文件base0。在
虚拟机vm1之后一段时间之后,生成虚拟机vm1的镜像,此时生成的增量文件为snapshot1,
该snapshot1与base0之间存在索引关系,由该索引关系可以确定snapshot1为base0的增
量。将所述snapshot1发送至镜像服务器保存后,若之后需要创建新的虚拟机vm2,可以基于
索引关系,将snapshot1和base0恢复成完整的镜像文件image1,该image1即为创建虚拟机
vm2的基础镜像文件base1。此后,若生成虚拟机vm2的镜像,那么对于此时生成的增量文件
snapshot2,其实质是base0以及snapshot1的增量数据,而基于索引关系,可以由snapshot2
+base1(或者说snapshot2+snapshot1+base0)可以生成完整的镜像文件image2,以作为后
续创建其虚拟机的base2,更多的迭代层次可以以此类推,此处不再赘述。
主存储设备将所述增量文件发送至镜像服务器的过程中,传输速度的快慢取决于
当前的网络性能,在此期间,数据传输网络的I/O(Input/Output,输入/输出)会处于峰值,
造成网络拥堵,如果管理网络和数据传输网络使用同样的网络资源,则影响管理网络中控
制指令等信息的发送,进而可能会造成整个系统的瘫痪。
由此,本申请实例提供了一种优选的用于存储虚拟机镜像的方法,该方法中,所述
虚拟机基于从镜像服务器获取的镜像基础文件创建,并运行于主存储设备,在进行存储时,
所述方法具体包括如图3所示,包括:
步骤S301,所述主存储设备生成所述虚拟机的增量文件,并建立与所述镜像基础
文件之间的索引关系。
步骤S302,所述主存储设备对所述增量文件进行切片处理,生成关于所述增量文
件的切片文件。
步骤S303,所述主存储设备采用并发的方式向所述镜像服务器发送关于所述增量
文件的切片文件。
主存储设备通过切片处理的方式,将增量文件进一步分为多个切片文件(chunk),
在向镜像服务器发送时,可以采用并发的方式进行发送,提高了网络的利用率,有效降低网
络拥堵的时间,以避免影响使用相同网络资源的管理网络。此外,作为一种可行的实施方
式,除了并发的方式之外,主存储设备也可以使用串行的发送方式向镜像服务器发送这些
切片文件。
在实际场景中,主存储设备可以根据预设值对所述增量文件进行切片处理,生成
关于所述增量文件的切片文件,使得每个切片文件的大小均小于等于所述预设值。所述预
设值的大小可以根据具体的网络资源情况以及传输效率的需求来进行设定,例如在本申请
实施例中,所述预设值的大小可以设定为4MB(Megabyte,兆字节)。由此,在对所述增量文件
进行切片处理后,每个切片文件的大小均为4MB(除最后一个切片文件可能小于4MB)。
进一步地,在步骤S302,主存储设备对所述增量文件进行切片处理,生成关于所述
增量文件的切片文件之后,还包括:
步骤S302a,主存储设备根据每个切片文件的内容生成对应的摘要。所述摘要
(digest)为用于对每个切片文件进行标记的标记信息,具有唯一性,若两个切片文件的摘
要相同,则表示这两个切片文件也相同。
步骤S302b,主存储设备基于所述增量文件的所有切片文件的摘要生成汇总摘要
(blobsum),其中,所述汇总摘要与所述增量文件的所有切片文件的摘要对应,且映射关系
唯一。为了保证汇总摘要与增量文件的所有切片文件的摘要对应,且映射关系唯一,可以采
用哈希(hash)算法,具体为:主存储设备将所述增量文件的所有切片文件的摘要按预设顺
序合并,然后将合并后的摘要进行哈希计算,生成哈希值,以作为所述汇总摘要。
此时,所述步骤S303具体包括:
步骤S303a,所述主存储设备检测所述镜像服务器中是否存在相同的汇总摘要。在
实际场景中,所述检测的过程可以采用http(HyperTextTransfer Protocol,超文本传输协
议)问答交互的方式实现。
步骤S303b,若不存在相同的汇总摘要,所述主存储设备将所述汇总摘要以及所述
汇总摘要对应的所述切片文件发送至镜像服务器。若存在相同的汇总摘要,则不发送增量
文件的切片文件。
上述处理的完整过程如图4所示,由于汇总摘要与汇总摘要与增量文件的所有切
片文件的摘要对应,且映射关系唯一,在汇总摘要相同的情况下,表示镜像服务器中已经存
在了相同的增量文件,而组成完整的image之后进行校验,提高了校验的效率,缩短了整个
处理的时间。
进一步地,由于镜像中的内容大部分为操作系统的数据,对于相同或者类似操作
系统的虚拟机所对应的镜像文件,其大部分内容可能是相同的。如用户将一台ubuntu操作
系统的虚拟机生成一个镜像文件,那么用户下次使用该系统或其他linux操作系统生成镜
像文件时,镜像文件中大部分内容与之前所产生的镜像文件相同(镜像文件中大部分内容
为操作系统的数据,同一操作系统该部分数据相同,而同属于linux系列的操作系统中关于
linux的部分文件相同)。为避免镜像服务器中产生大量的冗余数据,主存储设备进一步可
以对待发送的切片文件进行校验,对于镜像服务器中已经存在的相同切片文件,不进行发
送,由此避免镜像服务器中存储大量的冗余数据,提高存储效率,此外由于减少到了发送的
数据量,也可以优化网络资源的利用率。
具体地,该优选方案的具体处理流程如图5所示,包括:
步骤S501,主存储设备生成所述虚拟机的增量文件,并建立与所述镜像基础文件
之间的索引关系。
步骤S502,主存储设备对所述增量文件进行切片处理,生成关于所述增量文件的
切片文件。
步骤S503,主存储设备根据每个切片文件的内容生成对应的摘要。
步骤S504,主存储设备基于所述增量文件的所有切片文件的摘要生成汇总摘要,
其中,所述汇总摘要与所述增量文件的所有切片文件的摘要对应,且映射关系唯一。
步骤S505,主存储设备检测所述镜像服务器中是否存在相同的汇总摘要。
步骤S506,若不存在相同的汇总摘要,所述主存储设备检测所述汇总摘要对应的
摘要是否为非冗余摘要,其中,所述非冗余摘要为所述镜像服务器中已存储的摘要不同的
摘要。例如,主存储设备中本次待发送的切片文件为40个,所对应的摘要分别为:a1,a2,
a3,……,a40,通过http问答交互的方式,检测到镜像服务器中已经存在的切片文件的摘要
包含a2,a3,a34和a35,则表示镜像服务器上已经保存了这4个摘要对应的切片文件,无需再
重复发送,由此将上述a2,a3,a34和a35确定为冗余摘要,除上述4个之外的36个摘要即为非
冗余摘要。
步骤S507,所述主存储设备将所述汇总摘要、所述非冗余摘要以及所述非冗余摘
要对应的切片文件发送至镜像服务器。接上例,由于a1、a4~a33、a36~a40这36个摘要为非
冗余摘要,则表示镜像服务器中并未保存其对应的36个切片文件,因此将这几个切片文件
以及对应的摘要、所有摘要的汇总摘要一起发送至镜像服务器,进行保存,由此完成虚拟机
镜像的存储过程。
图6为采用了本申请技术方案的主存储设备和镜像服务器的组成示意图,该示意
图可知:虚拟机运行在主存储设备中,在存储镜像时,仅生成虚拟机运行状态的快照文件
(snapshot),作为增量文件。镜像服务器以切片文件(chunk)的形式保存着镜像文件,通过
索引关系、摘要以及汇总摘要,使其能够在逻辑上组合为base、snapshot、image等文件。
以图7所示的系统为例,详细说明采用本申请提供的方法对主存储设备中的一个
虚拟机存储镜像的处理过程,在主存储设备端的具体处理流程如下:
步骤S701,对一个运行中的虚拟机生成镜像。
步骤S702,生成一个snapshot。
步骤S703,对snapshot进行切片处理,生成多个大小为4MB的chunk(除了最后一
个,最后一个可能小于4MB)。
步骤S704,对每个chunk进行标记,生成对应的digest。
步骤S705,基于所有的digset进行hash计算,生成一个字符串blobsum。
步骤S706,校验blobsum是否在镜像服务器中已存在。
步骤S707,如果发现相同blobsum,则说明该snapshot在镜像服务器中已经存在,
无需发送。
步骤S708,如果未发现相同的blobsum,则校验chunk的digest,与镜像服务器中已
有的chunk的digest比对。
步骤S709,如果查到相同digest,则表示该digest对应的chunk重复,不发送该
chunk。
步骤S710,如果未查到某一chunk的digest,则将该chunk上传至镜像服务器。
基于本申请的另一方面,图8示出了本申请实施例提供的一种用于存储虚拟机镜
像的主存储设备,所述虚拟机基于从镜像服务器获取的镜像基础文件创建,并运行于所述
主存储设备,所述主存储设备包括:生成装置810和发送装置820。具体地,所述生成装置810
用于生成所述虚拟机的增量文件,并建立与所述镜像基础文件之间的索引关系;所述发送
装置820用于将所述增量文件发送至镜像服务器。
由于在实际场景中,虚拟机运行在云计算平台的主存储设备中,所述主存储设备
即为云计算平台的某一节点,其具体实现可以是网络主机、单个网络服务器、多个网络服务
器组成的集群等。在现有技术中,主存储设备中产生的某一虚拟机的完整镜像文件有可能
为几G到几十G的大小,会占用大量的存储资源。且由于数据量较大,生成时间也会较长,因
此将长时间占用主存储设备的计算资源,主存储设备计算资源不足的情况下可能会影响其
他虚拟机的运行状态,影响整个主存储设备的稳定性。
该方案中所涉及的虚拟机基于从镜像服务器获取的镜像基础文件创建,并运行于
主存储设备,在处理过程中,主存储设备仅生成所述虚拟机的增量文件,而无需生成所述虚
拟机的镜像基础文件并生成完整的镜像文件。由于增量文件与创建虚拟机所使用的镜像基
础文件存在索引关系,因此在向镜像服务器发送增量文件之后,镜像服务器中存储有组成
完整镜像文件所需要的镜像基础文件以及相应的增量文件,因此在确保镜像文件完整性的
前提下,仅需要较少的存储空间、计算资源和网络资源即可实现虚拟机镜像文件的存储。
在本申请中,所述索引关系可以通过定义一个JSON(JavaScript
ObjectNotation,JavaScript对象表示法)文件来描述。所述基础镜像文件(base)是指创建
虚拟机时所使用的完整镜像文件(image),而所述增量文件一般采用快照的方式生成,即快
照文件(snapshot),当主存储设备生成一个虚拟机镜像时,将创建虚拟机时的image指定为
只读状态,作为base,将磁盘中相对于base的增量数据作为snapshot。一般情况下,增量文
件的数据量远小于基础镜像文件。
所述基础镜像文件是一个相对的概念,通过图2详细说明该相对关系。若镜像服务
器中初始的镜像文件为image0,在创建虚拟机vm1时,该image0即为基础镜像文件base0。在
虚拟机vm1之后一段时间之后,生成虚拟机vm1的镜像,此时生成的增量文件为snapshot1,
该snapshot1与base0之间存在索引关系,由该索引关系可以确定snapshot1为base0的增
量。将所述snapshot1发送至镜像服务器保存后,若之后需要创建新的虚拟机vm2,可以基于
索引关系,将snapshot1和base0恢复成完整的镜像文件image1,该image1即为创建虚拟机
vm2的基础镜像文件base1。此后,若生成虚拟机vm2的镜像,那么对于此时生成的增量文件
snapshot2,其实质是base0以及snapshot1的增量数据,而基于索引关系,可以由snapshot2
+base1(或者说snapshot2+snapshot1+base0)可以生成完整的镜像文件image2,以作为后
续创建其虚拟机的base2,更多的迭代层次可以以此类推,此处不再赘述。
主存储设备将所述增量文件发送至镜像服务器的过程中,传输速度的快慢取决于
当前的网络性能,在此期间,数据传输网络的I/O(Input/Output,输入/输出)会处于峰值,
造成网络拥堵,如果管理网络和数据传输网络使用同样的网络资源,则影响管理网络中控
制指令等信息的发送,进而可能会造成整个系统的瘫痪。
由此,本申请实例提供了一种优选的用于存储虚拟机镜像的主存储设备,所述虚
拟机基于从镜像服务器获取的镜像基础文件创建,并运行于主存储设备,所述主存储设备
的结构如图9所示,包括:生成装置810、切片装置830和发送装置820。具体地,所述生成装置
810用于生成所述虚拟机的增量文件,并建立与所述镜像基础文件之间的索引关系;切片装
置830用于在将所述增量文件发送至镜像服务器之前,对所述增量文件进行切片处理,生成
关于所述增量文件的切片文件;所述发送装置820用于将所述增量文件发送至镜像服务器。
主存储设备通过切片处理的方式,将增量文件进一步分为多个切片文件(chunk),
在向镜像服务器发送时,可以采用并发的方式进行发送,提高了网络的利用率,有效降低网
络拥堵的时间,以避免影响使用相同网络资源的管理网络。此外,作为一种可行的实施方
式,除了并发的方式之外,主存储设备的发送装置也可以使用串行的发送方式向镜像服务
器发送这些切片文件。
在实际场景中,主存储设备可以根据预设值对所述增量文件进行切片处理,生成
关于所述增量文件的切片文件,使得每个切片文件的大小均小于等于所述预设值。所述预
设值的大小可以根据具体的网络资源情况以及传输效率的需求来进行设定,例如在本申请
实施例中,所述预设值的大小可以设定为4MB(Megabyte,兆字节)。由此,在对所述增量文件
进行切片处理后,每个切片文件的大小均为4MB(除最后一个切片文件可能小于4MB)。
进一步地,本申请还提供另一种用于存储虚拟机镜像的主存储设备,该主存储设
备的结构如图10所示,除生成装置810、切片装置830和发送装置820之外,还进一步包括标
记装置840。具体地,所述标记装置840用于在对所述增量文件进行切片处理,生成关于所述
增量文件的切片文件之后,根据每个切片文件的内容生成对应的摘要;以及基于所述增量
文件的所有切片文件的摘要生成汇总摘要,其中,所述汇总摘要与所述增量文件的所有切
片文件的摘要对应,且映射关系唯一。
所述摘要(digest)为用于对每个切片文件进行标记的标记信息,具有唯一性,若
两个切片文件的摘要相同,则表示这两个切片文件也相同。为了保证汇总摘要与增量文件
的所有切片文件的摘要对应,且映射关系唯一,可以采用哈希(hash)算法,具体为:主存储
设备将所述增量文件的所有切片文件的摘要按预设顺序合并,然后将合并后的摘要进行哈
希计算,生成哈希值,以作为所述汇总摘要。
在所述主存储设备中,其发送装置820具体用于检测所述镜像服务器中是否存在
相同的汇总摘要;以及在不存在相同的汇总摘要时,将所述汇总摘要以及所述汇总摘要对
应的所述切片文件发送至镜像服务器。在实际场景中,所述检测的过程可以采用http问答
交互的方式实现。若检测结果存在相同的汇总摘要,则不发送增量文件的切片文件。
由于汇总摘要与汇总摘要与增量文件的所有切片文件的摘要对应,且映射关系唯
一,在汇总摘要相同的情况下,表示镜像服务器中已经存在了相同的增量文件,而组成完整
的image之后进行校验,提高了校验的效率,缩短了整个处理的时间。
进一步地,由于镜像中的内容大部分为操作系统的数据,对于相同或者类似操作
系统的虚拟机所对应的镜像文件,其大部分内容可能是相同的。如用户将一台ubuntu操作
系统的虚拟机生成一个镜像文件,那么用户下次使用该系统或其他linux操作系统生成镜
像文件时,镜像文件中大部分内容与之前所产生的镜像文件相同(镜像文件中大部分内容
为操作系统的数据,同一操作系统该部分数据相同,而同属于linux系列的操作系统中关于
linux的部分文件相同)。为避免镜像服务器中产生大量的冗余数据,主存储设备进一步可
以对待发送的切片文件进行校验,对于镜像服务器中已经存在的相同切片文件,不进行发
送,由此避免镜像服务器中存储大量的冗余数据,提高存储效率,此外由于减少到了发送的
数据量,也可以优化网络资源的利用率。
具体地,本申请实施例提供了一种更优选的主存储设备,所述主存储设备的结构
可参考图10实施例,包括:生成装置810、切片装置830、标记装置840以及发送装置820。其生
成装置810、切片装置830和标记装置840所实现的功能与图10所示实施例中相应装置的功
能相同,而所述发送装置820具体用于:检测所述镜像服务器中是否存在相同的汇总摘要;
以及在不存在相同的汇总摘要时,检测所述汇总摘要对应的摘要是否为非冗余摘要,并将
所述汇总摘要、所述非冗余摘要以及所述非冗余摘要对应的切片文件发送至镜像服务器,
其中,所述非冗余摘要为所述镜像服务器中已存储的摘要不同的摘要。
例如,主存储设备中本次待发送的切片文件为40个,所对应的摘要分别为:a1,a2,
a3,……,a40,通过http问答交互的方式,检测到镜像服务器中已经存在的切片文件的摘要
包含a2,a3,a34和a35,则表示镜像服务器上已经保存了这4个摘要对应的切片文件,无需再
重复发送,由此将上述a2,a3,a34和a35确定为冗余摘要,除上述4个之外的36个摘要即为非
冗余摘要。
由于a1、a4~a33、a36~a40这36个摘要为非冗余摘要,则表示镜像服务器中并未
保存其对应的36个切片文件,因此将这几个切片文件以及对应的摘要、所有摘要的汇总摘
要一起发送至镜像服务器,进行保存,由此完成虚拟机镜像的存储过程。
综上所述,本申请提供的方案中,主存储设备仅生成所述虚拟机的增量文件,而无
需生成所述虚拟机的镜像基础文件并生成完整的镜像文件。由于创建虚拟机所使用的是镜
像服务器上的镜像基础文件,因此在向镜像服务器发送增量文件之后,镜像服务器中存储
有组成完整镜像文件所需要的镜像基础文件以及相应的增量文件,因此在确保镜像文件完
整性的前提下,仅需要较小的存储空间、计算资源和网络资源即可实现虚拟机镜像文件的
存储。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采
用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例
中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的
软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,
磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例
如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被
计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。
而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过
广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的
计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用
于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指
令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技
术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在
不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论
从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权
利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有
变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此
外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个
单元或装置也可以由一个单元或装置通过软件或者硬件来实现。