一种镜像文件拼装方法及系统的制作方法

文档序号:6377827阅读:176来源:国知局
专利名称:一种镜像文件拼装方法及系统的制作方法
技术领域
本发明涉及计算机技术,特 别是涉及一种镜像文件拼装方法及系统。
背景技术
在虚拟化数据中心环境下,虚拟机镜像文件(镜像文件)是虚拟化环境中软件运行支撑服务器运行环境在存储设备上的存储形式。镜像文件包含操作系统、软件等运行期依赖的数据,镜像文件较大且构建时间较长。为了避免镜像文件的频繁复制和构建,本领域技术人员通常采用构建虚拟机镜像资产库的形式来存储安装了不同软件的虚拟机镜像文件。用户可通过查询资产库查找所需镜像文件并将所述镜像文件存储到指定物理服务器上运行使用。由于镜像文件大小通常在IOGB级另I」,且不同类型或同一类型不同版本软件资产都需要有对应的独立虚拟机镜像文件才可被用户直接存储使用,如“Tomcat5. 5+MySQL5. 0+Ubuntul0”与“Tomcat 6+MySQL5. 0+Ubuntul0”就需要两个虚拟机镜像文件,而所述两个镜像文件中存储的数据大部分相同,这就造成了存储空间的浪费。

发明内容
本发明所要解决的技术问题是实现镜像文件的压缩存储,提供一种镜像文件拼装方法及系统,以解决现有技术中因为多个镜像文件中存储的数据大部分相同造成数据冗余的现象,以及该现象导致的存储空间的浪费的问题。为了解决上述技术问题,本发明提供一种镜像文件拼装方法及系统,本发明提供如下技术方案一种镜像文件拼装方法,该方法包括根据当前镜像文件的拼装请求获取当前镜像文件所需的所有拼装文件;根据预设的软件依赖关系和软件版本依赖关系,将所述所有拼装文件生成一个有序拼装文件序列;依据拼装文件资源库中记录的拼装文件存储形式,确定有序拼装文件序列中每一个拼装文件的文件属性;根据确定的文件属性依次将所述每一个拼装文件按照所述拼装路径进行拼装以得到当前镜像文件。优选的,所述根据预设的软件依赖关系和软件版本依赖关系,将所述所有拼装文件生成一个有序拼装文件序列,具体包括根据预设的软件依赖关系,确定入度为零或者最接近零的软件类型拼装文件,所述入度是指依赖于所述软件类型拼装文件而存在的其他拼装文件的个数;根据预设的软件版本依赖关系确定所述软件类型拼装文件及其所依赖的拼装文件的版本号;根据预设的软件依赖关系和所述版本号,生成当前镜像文件的拼装路径;
依据所述拼装路径将所述所有拼装文件生成一个有序拼装文件序列。优选的,所述所有拼装文件的文件属性至少包括镜像文件、镜像快照以及软件包中的一个。 优选的,所述根据确定的文件属性依次将所述每一个拼装文件按照所述拼装路径进行拼装以得到当前镜像文件,具体包括根据所述拼装路径读取有序拼装文件序列中的第一个拼装文件作为当前拼装文件,进入当前拼装文件处理流程,所述当前拼装文件处理流程包括判断所述当前拼装文件的文件属性是否是镜像,若是镜像,则从资源管理器中查找所述当前拼装文件对应的拼装镜像文件,并将所述拼装镜像文件安装到待拼装的当前镜像文件中;若不是镜像,则判断所述当前拼装文件的文件属性是否是快照,若是快照,则从资源管理器中查找所述当前拼装文件对应的拼装快照文件,并将所述拼装快照文件安装到待拼装的当前镜像文件中;若不是快照,则从资源管理器中查找所述当前拼装文件对应的软件包,并将所述软件包安装到待拼装的当前镜像文件中;判断所述有序拼装文件序列中的拼装文件是否都已被读取,若否,则依据拼装路径,读取所述有序拼装文件集合中所述当前拼装文件的下一个拼装文件作为当前拼装文件,执行所述判断当前拼装文件的文件属性是否是镜像的步骤,直至所述有序拼装文件序列中的拼装文件都已被读取。优选的,所述根据确定的文件属性依次将所述每一个拼装文件按照所述拼装路径进行拼装以得到当前镜像文件,之后,还包括将所述当前镜像文件发送到所述当前镜像文件拼装请求中指定的服务器中运行,以启动所述当前镜像文件对应的虚拟设备。一种镜像文件拼装系统,所述系统包括获取单元,用于根根据当前镜像文件的拼装请求获取当前镜像文件所需的所有拼装文件;序列生成单元,用于根据预设的软件依赖关系和软件版本依赖关系,将所述所有拼装文件生成一个有序拼装文件序列;属性确定单元,用于依据拼装文件资源库中记录的拼装文件存储形式,确定有序拼装文件序列中每一个拼装文件的文件属性;拼装单元,用于根据确定的文件属性依次将所述每一个拼装文件按照所述拼装路径进行拼装以得到当前镜像文件。优选的,所述序列生成单元包括确定子单元,用于根据预设的软件依赖关系,确定入度为零或者最接近零的软件类型拼装文件,所述入度是指依赖于所述软件类型拼装文件而存在的其他拼装文件的个数;版本确定子单元,用于根据预设的软件版本依赖关系确定所述软件类型拼装文件及其所依赖的拼装文件的版本号;路径生成子单元,用于根据预设的软件依赖关系和所述版本号,生成当前镜像文件的拼装路径;生成子单元,用于依据所述拼装路径将所述所有拼装文件生成一个有序拼装文件序列。优选的,所述所有拼装文件的文件属性至少包括镜像文件、镜像快照以及软件包中的一个。优选的,所述拼装单元包括读取子单元,用于根据所述拼装路径,读取有序拼装文件序列中的第一个拼装文件作为当前拼装文件;处理子单元,用于执行当前拼装文件处理流程,所述当前拼装文件处理流程包括
判断所述当前拼装文件的文件属性是否是镜像,若是镜像,则从资源管理器中查找所述当前拼装文件对应的拼装镜像文件,并将所述拼装镜像文件安装到待拼装的当前镜像文件中;若不是镜像,则判断所述当前拼装文件的文件属性是否是快照,若是快照,则从资源管理器中查找所述当前拼装文件对应的拼装快照文件,并将所述拼装快照文件安装到待拼装的当前镜像文件中;若不是快照,则从资源管理器中查找所述当前拼装文件对应的软件包,并将所述软件包安装到待拼装的当前镜像文件中;判断所述有序拼装文件序列中的拼装文件是否都已被读取,若否,则依据拼装路径,读取所述有序拼装文件序列中所述当前拼装文件的下一个拼装文件作为当前拼装文件,执行所述判断当前拼装文件的文件属性是否是镜像的步骤,直至所述有序拼装文件序列中的拼装文件都已被读取。优选的,所述系统还包括运行单元,用于将所述当前镜像文件发送到所述当前镜像文件拼装请求中指定的服务器中运行,以启动所述当前镜像文件对应的虚拟设备。本发明中,预设的软件依赖关系和软件版本依赖关系是根据不同类型、不同版本的软件的共性、去除冗余之后抽象出来的,所以与现有技术相比,本发明不需要存储对应于不同类型、不同版本的软件资源的镜像文件,而是将不同类型、不同版本的软件依赖关系和软件版本依赖关系进行存储,在需要的时候根据所述依赖关系拼装生成对应于不同类型、不同版本的软件资源的镜像文件,因为存储不同类型、不同版本的软件依赖关系和软件版本依赖关系所需的空间要远远小于一个镜像文件的大小,所以节省了大量的存储空间。


为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图I为本发明一种镜像文件的拼装方法实施例I的流程图;图2为本发明采用的软件依赖关系图3为本发明采用的软件版本依赖关系图;图4为本发明一种镜像文件的拼装方法实施例2的流程图;图5为本发明一种镜像文件的拼装系统实施例的结构示意图;图6为系统实施例中序列生成单元的结构示意图;图7为本发明系统实施例中拼装单元的结构示意图;图8为本发明在实际应用中的一种结构示意图。
具体实施例方式为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本 发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。参考图I所示,为本发明一种镜像文件的拼装方法实施例I的流程图,本实施例具体可以包括步骤101 :根据当前镜像文件的拼装请求获取当前镜像文件所需的所有拼装文件。用户要生成对应于某个类型的软件的镜像文件,才能使用某个类型的软件,而如果要生成对应于某个类型的软件的镜像文件,首先要生成对应于该类型软件及其版本的镜像文件的拼装请求,所述拼装请求由用户根据需要定义的包含所需软件类型及版本信息的,具有一定格式的消息包,所述拼装请求可通过图形化工具或文本编辑器编辑生成。步骤102 :根据预设的软件依赖关系和软件版本依赖关系,将所述所有拼装文件生成一个有序拼装文件序列。所述软件依赖关系是根据不同类型的软件安装时的共性抽象出来的,可以表示不同类型的软件在安装时需要遵循的相关软件的安装顺序和依赖关系。以软件类型为Tomcat和MySQL时的软件依赖关系举例进行说明,参考图2所示,图2为软件依赖关系的示意图,图2中所有的线可以称为有向边,所述有向边代表不同软件资源之间的安装顺序和依赖关系,比如,Tomcat和MySQL的安装要依赖Ubuntu、Redhat OS或者CentOS。图2中每个矩形可以看作是一个节点,不同节点代表了不同的软件资源,其中出度为O的节点代表的软件资源的存储类型为镜像文件,所述出度为O的节点是指起始于所述节点的有向边的个数,比如,起始于节点Ubuntu、Redhat OS和CentOS的有向边的个数是零,终止于节点Ubuntu、Redhat OS和CentOS的有向边的个数均为2,所以节点Ubuntu、Redhat OS和CentOS均是出度为O的节点,在图2所示的软件依赖关系中找到入度为零或者最近接零的节点,所述入度为零或者最近接零的节点代表软件类型拼装文件,所述入度指终止于节点的有向边的个数,根据入度为零或者最近接零的软件类型拼装文件节点查找软件版本依赖关系图,确定软件类型拼装文件及其依赖的拼装文件的版本号,图2中入度为零或者最近接零的软件类型拼装文件节点为Tomcat和MySQL。以软件类型拼装文件为Tomcat及其依赖的拼装文件为Ubuntu为例,参考图3所示,图3为软件版本依赖关系的示意图,软件版本依赖关系可以表示相互依赖的软件之间具体版本的依赖关系。由图3可知,Tomcat的版本有V5. 0、V5. 5和V6. 0,其中版本V5. O的安装依赖于版本为V10、V11. 04的Ubuntu,当用户需要安装软件的时候,软件的版本是确定的,根据预设的软件版本依赖关系即可确定待安装的软件类型拼装文件所依赖的拼装文件的版本,若给出的软件版本依赖关系中不包含本次安装的软件的版本,则随机根据软件版本依赖关系确定本次安装软件所依赖的软件的版本。那么根据图2所示的软件依赖关系和确定的拼装文件的版本号,确定一个镜像文件的拼装路径的原则是任意一条包含出度为零的节点的简单路径,由图2可知要生成一个镜像文件,确定要生成的镜像文件的拼装路径可能不止一个,在实际应用中,可以根据实际需要在多个拼装路径中选择一个作为最终的拼装路径,在拼装一个镜像文件的时候要根据所述拼装路径进行有序的拼装。参考图2和图3生成拼装路径的原理,在生成当前镜像文件时,可以根据具体的软件依赖关系和软件版本依赖关系确定生成所述当前镜像文件的拼装路径,并根据所述当前镜像文件的拼装路径将所述所有拼装文件生成一个有序拼装文件序列。步骤103 :依据拼装文件资源库中记录的拼装文件存储形式,确定有序拼装文件·序列中每一个拼装文件的文件属性。拼装文件资源库中记录了所有可用的拼装镜像文件、拼装快照和拼装软件包,也就是说拼装文件的存储形式为镜像文件、快照和软件包,将所述拼装文件的存储形式作为拼装文件的文件属性。步骤104 :根据确定的文件属性依次将所述每一个拼装文件按照所述拼装路径进行拼装以得到当前镜像文件。确定每个拼装文件的文件属性后,即可按照当前镜像文件的拼装路径,依次将所述每一个拼装文件拼装到当前镜像文件中以得到当前镜像文件。本实施例的技术方案中,预设的软件依赖关系和软件版本依赖关系是根据不同类型、不同版本的软件的共性、去除冗余之后抽象出来的,所以与现有技术相比,本发明不需要存储对应于不同类型、不同版本的软件资源的镜像文件,而是将不同类型、不同版本的软件依赖关系和软件版本依赖关系进行存储,在需要的时候根据所述依赖关系拼装生成对应于不同类型、不同版本的软件资源的镜像文件,因为存储不同类型、不同版本的软件依赖关系和软件版本依赖关系所需的空间要远远小于一个镜像文件的大小,所以节省了大量的存储空间。参考图4所示,为一种镜像文件的拼装方法实施例2的流程图,本实施例可以看作是实施例I的一个具体实现,本实施例具体可以包括步骤401 :根据当前镜像文件的拼装请求获取当前镜像文件所需的所有拼装文件。步骤402 :根据预设的软件依赖关系确定初始拼装路径。步骤403 :根据预设的软件版本依赖关系,确定软件类型拼装文件及其依赖的拼装文件的版本号。步骤404 :根据初始拼装路径和版本号确定当前镜像拼装文件的目的拼装路径。步骤405 :根据所述拼装路径将所述所有拼装文件生成一个有序拼装文件序列。步骤406 :获取所述有序拼装文件序列中每一个拼装文件的文件属性。本实施例中步骤40广步骤406的实现参考实施例I中的步骤IOf步骤103的实现方式,此处不再赘述,其中在步骤401获取当前镜像文件所需的所有拼装文件后,进一步的,可以在拼装文件资源库中查找所有所述拼装文件,若所有拼装文件中的任何一个拼装文件不在拼装文件资源库中,则结束当前镜像文件的拼装流程。步骤407:根据每一个拼装文件的文件属性,按照拼装路径拼装得到当前镜像文件。本步骤的具体实现可以包括以下子步骤子步骤Al :读取当前镜像文件。 其中当前镜像文件的获取具体为根据所述拼装路径读取有序拼装文件序列中的第一个拼装文件作为当前拼装文件。子步骤A2 :判断所述当前拼装文件的文件属性是否是镜像,若是镜像,则进入子步骤A3,若不是镜像,则进入子步骤A4。子步骤A3 :查找所述当前拼装文件对应的拼装镜像文件并安装。本步骤的具体实现为从资源管理器中查找所述当前拼装文件对应的拼装镜像文件,找到后,将所述拼装镜像文件安装到待拼装的当前镜像文件中。子步骤A4:判断所述当前拼装文件的文件属性是否是快照,若是快照,则进入子步骤A5,若不是快照,则进入子步骤A6。子步骤A5 :查找所述当前拼装文件对应的拼装快照文件并安装。本步骤的具体实现为从资源管理器中,找到后,将所述拼装快照文件安装到待拼装的当前镜像文件中。子步骤A6 :查找所述当前拼装文件对应的软件包并安装。本步骤的具体实现为从资源管理器中查找所述当前拼装文件对应的软件包,找到后,将所述软件包安装到待拼装的当前镜像文件中。子步骤A7:判断所述有序拼装文件序列中的拼装文件是否都已被读取,若是,则结束,若否,则进入子步骤AS。子步骤AS:依据拼装路径,读取所述有序拼装文件集合中所述当前拼装文件的下一个拼装文件作为当前拼装文件,返回子步骤A2。执行完子步骤ΑΓΑ8,即可得到拼装的当前镜像文件。再返回图4所示的实施例2,进入步骤408。步骤408 :运行当前镜像文件。将所述当前镜像文件发送到所述当前镜像文件拼装请求中指定的服务器中运行,以启动所述当前镜像文件对应的虚拟设备。本实施例的技术方案中,预设的软件依赖关系和软件版本依赖关系是根据不同类型、不同版本的软件的共性、去除冗余之后抽象出来的,所以与现有技术相比,本发明不需要存储对应于不同类型、不同版本的软件资源的镜像文件,而是将不同类型、不同版本的软件依赖关系和软件版本依赖关系进行存储,在需要的时候根据所述依赖关系拼装生成对应于不同类型、不同版本的软件资源的镜像文件,因为存储不同类型、不同版本的软件依赖关系和软件版本依赖关系所需的空间要远远小于一个镜像文件的大小,所以节省了大量的存储空间。参考图5所示,图5为一种镜像文件拼装系统的结构示意图,所述系统包括
获取单元510,用于根据当前镜像文件的拼装请求获取当前镜像文件所需的所有拼装文件;序列生成单元520,用于根据预设的软件依赖关系和软件版本依赖关系,将所述所有拼装文件生成一个有序拼装文件序列;属性确定单元530,用于依据拼装文件资源库中记录的拼装文件存储形式,确定有序拼装文件序列中每一个拼装文件的文件属性;拼装单元540,用于根据确定的文件属性依次将所述每一个拼装文件按照所述拼装路径进行拼装以得到当前镜像文件。在实际应用中,参考图6所示,为所述序列生成单元520的结构框图,所述序列生成单元520具体可以包括确定子单元610,用于根据预设的软件依赖关系,确定入度为零或者最接近零的软 件类型拼装文件,所述入度是指依赖于所述软件类型拼装文件而存在的其他拼装文件的个数;版本确定子单元620,用于根据预设的软件版本依赖关系确定所述软件类型拼装文件及其所依赖的拼装文件的版本号;路径生成子单元630,用于根据预设的软件依赖关系和所述版本号,生成当前镜像文件的拼装路径;生成子单元640,用于依据所述拼装路径将所述所有拼装文件生成一个有序拼装文件序列。在实际应用中,参考图7所示,为所述拼装单元540的结构框图,所述拼装单元540具体可以包括读取子单元710,用于根据所述拼装路径,读取有序拼装文件序列中的第一个拼装文件作为当前拼装文件;处理子单元720,用于执行当前拼装文件处理流程,所述前拼装文件处理流程的具体实现参考步骤407,此处不再赘述。进一步的,所述系统还可以包括运行单元,用于将所述当前镜像文件发送到所述当前镜像文件拼装请求中指定的服务器中运行,以启动所述当前镜像文件对应的虚拟设备。在实际应用中,本发明实施例的具体实现可以通过图8所示的结构来完成,包括分析模块810,用于从拼装请求中解析出拼装当前镜像文件所需的所有镜像文件;资产目录820,用于提供存储设备上可用的所有拼装文件目录,为其它模块提供文件检索功能;元数据管理器830,用于管理数据库中存储的元数据,为其它模块提供资源查询和图检索功能;资产元数据库840,用于记录所有可用的镜像文件、快照、软件包资源描述以及不同类型资源之间依赖关系图、相互依赖的资源之间的版本依赖关系图;拼装服务器850,用于拼装当前镜像文件;资源管理器860,用于管理存储在不同类型存储设备上的镜像文件、快照和软件包资源,可以为其它模块提供资源查询和读取功能。本实施例的技术方案中,预设的软件依赖关系和软件版本依赖关系是根据不同类型、不同版本的软件的共性、去除冗余之后抽象出来的,所以与现有技术相比,本发明不需要存储对应于不同类型、不同版本的软件资源的镜像文件,而是将不同类型、不同版本的软件依赖关系和软件版本依赖关系进行存储,在需要的时候根据所述依赖关系拼装生成对应于不同类型、不同版本的软件资源的镜像文件,因为存储不同类型、不同版本的软件依赖关系和软件版本依赖关系所需的空间要远远小于一个镜像文件的大小,所以节省了大量的存储空间。需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对于系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅是本发明的具体实施方式
,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种镜像文件拼装方法,其特征在于,包括 根据当前镜像文件的拼装请求获取当前镜像文件所需的所有拼装文件; 根据预设的软件依赖关系和软件版本依赖关系,将所述所有拼装文件生成一个有序拼装文件序列; 依据拼装文件资源库中记录的拼装文件存储形式,确定有序拼装文件序列中每一个拼装文件的文件属性; 根据确定的文件属性依次将所述每一个拼装文件按照所述拼装路径进行拼装以得到当前镜像文件。
2.根据权利要求I所述的方法,其特征在于,所述根据预设的软件依赖关系和软件版本依赖关系,将所述所有拼装文件生成一个有序拼装文件序列,具体包括 根据预设的软件依赖关系,确定入度为零或者最接近零的软件类型拼装文件,所述入度是指依赖于所述软件类型拼装文件而存在的其他拼装文件的个数; 根据预设的软件版本依赖关系确定所述软件类型拼装文件及其所依赖的拼装文件的版本号; 根据预设的软件依赖关系和所述版本号,生成当前镜像文件的拼装路径; 依据所述拼装路径将所述所有拼装文件生成一个有序拼装文件序列。
3.根据权利要求I所述的方法,其特征在于,所述所有拼装文件的文件属性至少包括镜像文件、镜像快照以及软件包中的一个。
4.根据权利要求I所述的方法,其特征在于,所述根据确定的文件属性依次将所述每一个拼装文件按照所述拼装路径进行拼装以得到当前镜像文件,具体包括 根据所述拼装路径读取有序拼装文件序列中的第一个拼装文件作为当前拼装文件,进入当前拼装文件处理流程,所述当前拼装文件处理流程包括 判断所述当前拼装文件的文件属性是否是镜像,若是镜像,则从资源管理器中查找所述当前拼装文件对应的拼装镜像文件,并将所述拼装镜像文件安装到待拼装的当前镜像文件中; 若不是镜像,则判断所述当前拼装文件的文件属性是否是快照,若是快照,则从资源管理器中查找所述当前拼装文件对应的拼装快照文件,并将所述拼装快照文件安装到待拼装的当前镜像文件中; 若不是快照,则从资源管理器中查找所述当前拼装文件对应的软件包,并将所述软件包安装到待拼装的当前镜像文件中; 判断所述有序拼装文件序列中的拼装文件是否都已被读取,若否,则依据拼装路径,读取所述有序拼装文件集合中所述当前拼装文件的下一个拼装文件作为当前拼装文件,执行所述判断当前拼装文件的文件属性是否是镜像的步骤,直至所述有序拼装文件序列中的拼装文件都已被读取。
5.根据权利要求I所述的方法,其特征在于,所述根据确定的文件属性依次将所述每一个拼装文件按照所述拼装路径进行拼装以得到当前镜像文件,之后,还包括 将所述当前镜像文件发送到所述当前镜像文件拼装请求中指定的服务器中运行,以启动所述当前镜像文件对应的虚拟设备。
6.一种镜像文件拼装系统,其特征在于,所述系统包括获取单元,用于根根据当前镜像文件的拼装请求获取当前镜像文件所需的所有拼装文件; 序列生成单元,用于根据预设的软件依赖关系和软件版本依赖关系,将所述所有拼装文件生成一个有序拼装文件序列; 属性确定单元,用于依据拼装文件资源库中记录的拼装文件存储形式,确定有序拼装文件序列中每一个拼装文件的文件属性; 拼装单元,用于根据确定的文件属性依次将所述每一个拼装文件按照所述拼装路径进行拼装以得到当前镜像文件。
7.根据权利要求6所述的系统,其特征在于,所述序列生成单元包括 确定子单元,用于根据预设的软件依赖关系,确定入度为零或者最接近零的软件类型拼装文件,所述入度是指依赖于所述软件类型拼装文件而存在的其他拼装文件的个数; 版本确定子单元,用于根据预设的软件版本依赖关系确定所述软件类型拼装文件及其所依赖的拼装文件的版本号; 路径生成子单元,用于根据预设的软件依赖关系和所述版本号,生成当前镜像文件的拼装路径; 生成子单元,用于依据所述拼装路径将所述所有拼装文件生成一个有序拼装文件序列。
8.根据权利要求6所述的系统,其特征在于,所述所有拼装文件的文件属性至少包括镜像文件、镜像快照以及软件包中的一个。
9.根据权利要求6所述的系统,其特征在于,所述拼装单元包括 读取子单元,用于根据所述拼装路径,读取有序拼装文件序列中的第一个拼装文件作为当前拼装文件; 处理子单元,用于执行当前拼装文件处理流程,所述当前拼装文件处理流程包括 判断所述当前拼装文件的文件属性是否是镜像,若是镜像,则从资源管理器中查找所述当前拼装文件对应的拼装镜像文件,并将所述拼装镜像文件安装到待拼装的当前镜像文件中; 若不是镜像,则判断所述当前拼装文件的文件属性是否是快照,若是快照,则从资源管理器中查找所述当前拼装文件对应的拼装快照文件,并将所述拼装快照文件安装到待拼装的当前镜像文件中; 若不是快照,则从资源管理器中查找所述当前拼装文件对应的软件包,并将所述软件包安装到待拼装的当前镜像文件中; 判断所述有序拼装文件序列中的拼装文件是否都已被读取,若否,则依据拼装路径,读取所述有序拼装文件序列中所述当前拼装文件的下一个拼装文件作为当前拼装文件,执行所述判断当前拼装文件的文件属性是否是镜像的步骤,直至所述有序拼装文件序列中的拼装文件都已被读取。
10.根据权利要求6所述的系统,其特征在于,还包括 运行单元,用于将所述当前镜像文件发送到所述当前镜像文件拼装请求中指定的服务器中运行,以启动所述当前镜像文件对应的虚拟设备。
全文摘要
本发明公开了一种镜像文件拼装方法及系统,所述方法包括根据当前镜像文件的拼装请求获取当前镜像文件所需的所有拼装文件;根据预设的软件依赖关系和软件版本依赖关系,将所述所有拼装文件生成一个有序拼装文件序列;依据拼装文件资源库中记录的拼装文件存储形式,确定有序拼装文件序列中每一个拼装文件的文件属性;根据确定的文件属性依次将所述每一个拼装文件按照所述拼装路径进行拼装以得到当前镜像文件。本发明中,采用存储软件依赖关系和软件版本依赖关系代替存储不同的镜像文件,存储所述软件依赖关系和版本依赖关系所需的空间要远远小于一个镜像文件的大小,所以节省了大量的存储空间。
文档编号G06F17/30GK102902770SQ20121036474
公开日2013年1月30日 申请日期2012年9月26日 优先权日2012年9月26日
发明者许力 申请人:东软集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1