云环境下基于软件预安装的虚拟机镜像生成方法和系统的制作方法

文档序号:6397613阅读:308来源:国知局
专利名称:云环境下基于软件预安装的虚拟机镜像生成方法和系统的制作方法
技术领域
本发明属于云计算领域,更具体地,涉及一种云环境下基于软件预安装的虚拟机镜像生成方法和系统。
背景技术
随着云计算的发展,云计算上应用也越来越多样化,而这些应用都有赖于虚拟机磁盘镜像对软件的封装。由于用户的需求的千差万别,为满足用户的需求,虚拟机镜像的定制化服务成为各个云计算平台不可或缺的组成部分。现有的虚拟机镜像定制基本可以分为两大类:修改现有模板:这种办法是选择一个云平台上原有的虚拟机镜像来启动一台虚拟机,用户登录虚拟机后,在虚拟机上做安装软件,删除软件或修改配置等操作,之后将关掉这台虚拟机,并将它的磁盘镜像保存为虚拟机云平台新的虚拟机镜像;操作系统定制:用户在浏览器前选择需要安装系统的版本,选择所需要安装的软件,输入分区信息和用户信息等,之后启动虚拟机安装操作系统,安装完毕之后将虚拟机镜像保存为云平台的虚拟机镜像。这两种方式各有优劣:第一种定制方法的特点是方便做少量的修改,时间开销比较小,但这种方式有着无法克服的缺点,即无法满足更专业的软件定制化需求,这一点在虚拟设备(Virtual Appliance)等对镜像定制化要求较高的领域体现得愈加明显,比如无法调整磁盘大小和分区,无法保证现有虚拟机镜像是干净的(没有不安全的内容),且一般这种方式是用增量镜像来保存修改后的镜像模板,会很大程度上降低I/O性能;第二种方式的优点则在可以做到彻底的定制,包括要安装哪些软件,磁盘大小多少,分区如何,是否需要图形化界面等,缺点是从头安装操作系统需要耗费大量的时间,降低了虚拟机镜像定制服务的用户体验。因此,业界还需要一种既可以做到完全定制化,时间开销也较小的虚拟机镜像生成方案。第二种方式定制虚拟机镜像的速度比较慢主要原因是在安装操作系统的时候,需要从头安装虚拟机镜像里的软件。常用的操作系统安装程序(如Red Hat系列的Anaconda),都是针对于物理环境下设计的,它可以做到交互式安装和自动安装,由于硬件之间可能的差异,每次安装都是从头再来的,没有考虑到多次安装过程中重复部分,但顾及到操作系统安装程序的普适性,这种做法在物理环境是比较合理的。但在云环境下,基于虚拟化的 云计算平台则不需要考虑硬件的差异,且云计算平台上的虚拟机镜像中的软件具有很大的共同性。正常情况下安装操作系统最花费时间的部分便是安装软件包,每次都定制虚拟机镜像都需要重新来安装一遍这些重复的软件,无疑既浪费了时间,也浪费了宝贵的硬件资源。虽然修改现有模板的方式本质上也是避免重复安装软件,但这种方式无法克服以上所说的固有缺点;而对于操作系统定制的方式,还缺乏有效的手段来提高镜像的生成速度。

发明内容
针对现有技术的缺陷,本发明的目的在于提供一种云环境下基于软件预安装的虚拟机镜像生成方法和系统,其针对云环境下的特点,并旨在解决现有虚拟机镜像定制系统生成镜像的方式存在的不够灵活、速度慢、资源耗费严重等不足。为实现上述目的,本发明提供了一种云环境下基于软件预安装的虚拟机镜像生成方法,包括以下步骤:(I)接收用户的上传软件,并对上传的软件进行依赖性检查;(2)接收并分析用户提交的操作系统配置信息,以得到操作系统配置信息分析结果;(3)根据操作系统配置信息分析结果生成基于软件预安装技术安装操作系统所必需的基本环境;(4)在步骤(3)生成的基本环境下使用虚拟机启动配置文件启动虚拟机,同时启动监控进程;(5)在虚拟机中运行操作系统安装程序,以用非交互式的方式安装操作系统,同时监控进程判断操作系统的安装是出错还是已完成,如果出错,则关闭虚拟机,并转入步骤(7),如果已完成,则关闭虚拟机,并转入步骤(6);(6)判断在操作系统安装过程中是否生成了软件预安装包,如果生成则在软件预安装包库中注册该软件预安装包,然后进入步骤(7),否则直接进入步骤(7);(7)清理基本环境中的临时文件,向IP地址池归还IP地址,并向用户报告安装结
果O步骤(I)具体为,对软件依赖性的分析是通过查询软件源的数据库文件来解决,如果依赖性没得到满足,则提示用户上传的软件没能满足依赖关系的原因,还需上传哪些软件包才能满足软件依赖关系,重复(I)步骤,直到软件的依赖关系得到满足为止。临时文件包括软件预安装包的副本、启动光盘以及虚拟机启动配置文件。步骤(2)包括以下子步骤:(2-1)从用户提交的操作系统配置信息中提取将要安装的软件,通过依赖关系分析得到完整的软件列表;(2-2)使用完整的软件列表去软件预安装包库中查找一个符合最大匹配原则的软件预安装包,以得到软件预安装包匹配结果;其中,软件预安装包匹配结果包括是否找到匹配的软件预安装包、匹配程度和匹配的软件预安装包编号,最大匹配原则指作为最终的查询结果的软件预安装包中的软件集是拿去查询的完整的软件列表中的软件集合的最大子集,匹配程度包括完全匹配、包含和不匹配;(2-3)从用户提交的操作系统配置信息中判断用户是否要求在生成虚拟机镜像的过程中生成软件预安装包,若用户要求,且(2-1)中得到的匹配程度是包含或者不匹配,则表示需要生成软件预安装包的判断结果为是,否则表示不需要生成软件预安装包。步骤(3)包括以下子步骤:(3-1)根据操作系统配置信息的分析结果,生成与软件预安装包相关的基本环境;(3-2)生成启动虚拟机所需的基本环境;
步骤(3-1)具体为,若步骤(2)中软件预安装包匹配结果指示找到匹配的软件预安装包,则在匹配的软件预安装包上建立一个QC0W2格式的增量镜像作为软件预安装包副本,并把剩余要安装软件的软件列表放置到其中;若用户需要生成软件预安装包,且步骤
(2)中软件预安装包匹配结果指示没有找到完全匹配的软件预安装包,则新建一个QC0W2格式的虚拟磁盘,并在该虚拟磁盘里面放置好标识文件以表示这是一个将要用来放置软件预安装包的虚拟磁盘。步骤(3-2)具体为,从IP地址池获取IP地址,生成用于装载最终目标根文件系统的目标磁盘镜像,生成包含有依据用户提交的配置信息而生成的软件安装程序配置文件的启动光盘和虚拟机启动配置文件;其中虚拟机启动配置文件的硬盘项除了目标磁盘镜像夕卜,还应有(3-1)中生成的磁盘镜像,以便在启动虚拟机时加载进去。步骤(5)包含以下子步骤:(5-1)在安装软件之前,按照正常的流程安装操作系统,包括格式化目的虚拟机磁盘等,安装过程中若出现错误,则转入步骤(5-8);(5-2)判断是否加载了软件预安装包,如果加载了软件预安装包,则转到步骤(5-3),否则转到步骤(5-4),若过程中出现错误,则转到步骤(5-8);(5-3)将软件预安装包的根文件系统拷贝到刚格式化的目标虚拟磁盘中去,读取软件预安装包中剩余待安装软件列表,安装其中的软件包到目的虚拟机磁盘中,若过程中出现错误,则转入步骤(5-8);(5-4)提取操作系统安装程序配置文件中的软件列表,通过依赖性分析得到完整的待安装软件包列表,依次安装其中的每一个软件包到目的虚拟机磁盘中,若过程中出现错误,则转入步骤(5-8);(5-5)判断虚拟机是否加载了带有空软件预安装包标识的虚拟机磁盘,若加载了,则转到步骤(5-6),否则直接转到步骤(5-7);若过程中出现错误,则转入步骤(5-8);(5-6)将安装好了软件包的目标虚拟机磁盘中的根文件系统拷贝到空的虚拟机磁盘中,并去掉空软件预安装包标识,过程中若出现错误,则转入步骤(5-8);(5-7)按正常流程在目的虚拟机磁盘中执行下面的操作系统安装过程,包括选择语言、时区,配置防火墙和安装GRUB,若安装过程中出现错误,则转到步骤(5-8),若未出现错误,则转到步骤(5-9);(5-8)向监控进程报告安装出错,并转到步骤(5-10);(5-9)向监控进程报告安装完成,过程结束;(5-10)终止操作系统安装过程。一种云环境下基于软件预安装的虚拟机镜像生成系统,包括软件上传模块、操作系统配置信息分析模块、基本环境生成模块、虚拟机启动模块、操作系统安装和安装监控模块、软件预安装包注册模块和环境清理模块,软件上传模块用于接收用户的上传软件,并对上传的软件进行依赖性检查,操作系统配置信息分析模块用于接收并分析用户提交的操作系统配置信息,以得到操作系统配置信息分析结果,基本环境生成模块用于根据操作系统配置信息分析结果生成基于软件预安装技术安装操作系统所必需的基本环境,虚拟机启动模块用于在基本环境生成模块生成的基本环境下使用虚拟机启动配置文件启动虚拟机,同时启动监控进程,操作系统安装和安装监控模块用于在虚拟机中运行操作系统安装程序,以用非交互式的方式安装操作系统,同时监控进程判断操作系统的安装是出错还是已完成,如果出错,则关闭虚拟机,并转入环境清理模块,如果已完成,则关闭虚拟机,并转入软件预安装包注册模块,软件预安装包注册模块用于判断在操作系统安装过程中是否生成了软件预安装包,如果生成则在软件预安装包库中注册该软件预安装包,然后进入环境清理模块,否则直接进入环境清理模块,环境清理模块用于清理基本环境中的临时文件,向IP地址池归还IP地址,并向用户报告安装结果。操作系统配置信息分析模块包括软件列表生成子模块、软件预安装包匹配子模块以及软件预安装包生成判断子模块,软件列表生成子模块用于从用户提交的操作系统配置信息中提取将要安装的软件,通过依赖关系分析得到完整的软件列表,软件预安装包匹配子模块用于使用完整的软件列表去软件预安装包库中查找一个符合最大匹配原则的软件预安装包,以得到软件预安装包匹配结果,软件预安装包生成判断子模块用于从用户提交的操作系统配置信息中判断用户是否要求在生成虚拟机镜像的过程中生成软件预安装包,若用户要求,且软件列表生成子模块中得到的匹配程度是包含或者不匹配,则表示需要生成软件预安装包的判断结果为是,否则表示不需要生成软件预安装包,基本环境生成模块包括软件预安装包基本环境生成子模块和虚拟机启动基本环境生成子模块,软件预安装包基本环境生成子模块用于根据操作系统配置信息的分析结果,生成与软件预安装包相关的基本环境,虚拟机启动基本环境生成模块用于生成启动虚拟机所需的基本环境。操作系统安装模块包括软件安装前执行子模块、软件预安装包加载判别子模块、基于软件预安装包技术的软件安装子模块、正常软件安装子模块、空软件预安装包磁盘镜像加载判别子模块、软件预安装包生成子模块、软件安装后执行子模块、错误处理子模块、安装完毕处理子模块以及操作系统安装终止子模块,软件安装前执行子模块用于完成软件安装开始之前阶段的工作,包括格式化虚拟机本身虚拟磁盘等,即按正常的流程完成操作系统安装程序软件安装开始前的各部分工作;若安装出现错误,则转入错误处理子模块,软件预安装包加载判别子模块用于判别虚拟机是否加载了软件预安装包,如果加载了软件预安装包,则转到软件安装子模块,否则转到正常软件安装子模块,若过程中出现错误,则转到错误处理子模块,基于软件预安装包技术的软件安装子模块用于将软件预安装包的根文件系统拷贝到刚格式化的目标虚拟磁盘中去,读取软件预安装包中剩余待安装软件列表,安装其中的软件包到目的虚拟机磁盘中,若过程中出现错误,则转入错误处理子模块,正常软件安装子模块用于提取操作系统安装程序配置文件中的软件列表,通过依赖性分析得到完整的待安装软件包列表,依次安装其中的每一个软件包到目的虚拟机磁盘中,若过程中出现错误,则转入错误处理子模块,空软件预安装包磁盘镜像加载判别子模块用于判断虚拟机是否加载了带有空软件预安装包标识的虚拟磁盘;若加载了,则转到软件预安装包生成子模块,否则直接转到软件安装后执行子模块;若过程中出现错误,则转入错误处理子模块,软件预安装包生成子模块用于将安装好了软件包的目标虚拟机磁盘中的根文件系统拷贝到空的虚拟机磁盘中,并去掉空软件预安装包标识,过程中若出现错误,则转入错误处理子模块,软件安装后执行子模块用于执行软件包安装完毕之后的操作系统安装步骤,包括选择语言、时区,配置防火墙和安装多重启动管理器;若过程中出现错误,则转入错误处理子模块,若未出现错误,则转入安装完成处理子模块,错误处理子模块用于向监控进程报告安装出错,并转到终止操作系统安装子模块,安装完成处理子模块用于向监控进程报告安装完成,过程结束,终止操作系统安装子模块用于终止操作系统安装。通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以下的有益效果:(I)提高了虚拟机镜像的生成速度。本发明通过修改操作系统安装程序,使安装程序能够使用加载到虚拟机中的软件预安装包,并在软件预安装包的基础之上安装剩余的软件,从而可以避免软件的重复安装过程,节省安装软件带来的时间开销。(2)用户可以根据自己的需求定制软件预安装包。本发明系统不仅可以预先准备了多个用户常用的软件预安装包,还允许用户根据自己的需求定制软件预安装包。由于这种软件预安装包是用户自己定制的,里面的软件集往往可以更好地匹配用户将要安装的软件集,从而可以进一步提高镜像的生成速度。此外用户还可以把自己的软件预安装包发布到虚拟机镜像定制平台中,供平台所有的用户使用,这样就可增加软件预安装包的来源,以应对各种不同的需求。


图1是本发明云环境下基于软件预安装的虚拟机镜像生成方法的应用环境图。图2是本发明云环境下基于软件预安装的虚拟机镜像生成方法的流程图。图3是本发明方法中步骤(2)的细化流程图。图4是本发明方法中步骤(3)的细化流程图。图5是本发明方法中步骤(5)的细化流程图。图6是本发明软件预安装包匹配子模块采用的匹配算法的流程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图1所示,本发明通过Web前端与用户交互,用户通过浏览器上传软件和提交操作系统安装配置信息;后台对操作系统安装配置信息进行分析后,依据分析结果生成基于软件预安装操作系统所需要的基本环境;然后启动虚拟机非交互式地安装操作系统,在启动的虚拟机中运行修改过的操作系统安装程序,使操作系统安装程序能够基于软件预安装包安装操作系统和生成新的软件预安装包,还能对外报告安装进展;同时启动监控进程监控虚拟机内部的操作系统安装情况,当出错或者完成后,清除现场,注册新的软件预安装包,并将镜像生成结果返回给用户。如图2所示,本发明云环境下基于软件预安装的虚拟机镜像生成方法包括以下步骤:(I)接收用户的上传软件,并对上传的软件进行依赖性检查;具体而言,对软件依赖性的分析是通过查询软件源的数据库文件来解决,如果依赖性没得到满足,则提示用户上传的软件没能满足依赖关系的原因,还需上传哪些软件包才能满足软件依赖关系,重复
(I)步骤,直到软件的依赖关系得到满足为止;(2)接收并分析用户提交的操作系统配置信息,以得到操作系统配置信息分析结果;具体而言,操作系统配置信息是用户通过Web浏览器提交的,包括磁盘大小和分区、时区和语言选择、软件列表和是否要在在制作虚拟机镜像的过程中生成软件预安装包;对操作系统配置信息的分析包括在软件预安装包库中查找符合最大匹配原则的软件预安装包和判断否要在后续步骤中生成软件预安装包,其中软件预安装包库是一个用于记录每个软件预安装包的数据库;操作系统配置信息分析结果包括软件预安装包匹配结果(包括有是否找到匹配的软件预安装包、匹配程度和匹配的软件预安装包编号)和是否要生成软件预安装包的判断结果;在这一步,选出一个最佳匹配软件预安装包是为了让达到节省最多操作系统安装时间的目的,同时通过允许用户生成新的软件预安装包,平台就被赋予了自定义软件预安装包的功能,这样就能更好的满足需求,更多的减小安装操作系统的时间开销;(3)根据操作系统配置信息分析结果生成基于软件预安装技术安装操作系统所必需的基本环境;具体而言,首先依据软件预安装包匹配结果生成(2)中所查找的软件预安装包的副本,依据是否要生成软件预安装包的判断结果生成用来装载软件预安装包的空虚拟机磁盘镜像,然后从IP地址池获取IP地址,生成用于装载最终目标根文件系统的目的磁盘镜像,最后生成包含操作系统安装程序配置文件的启动光盘,以及虚拟机启动配置文件,其中,操作系统安装程序配置文件是依据用户提交的操作系统配置信息生成的,虚拟机启动配置文件的磁盘项包含了上面生成的虚拟磁盘;(4)在步骤(3)生成的基本环境下使用虚拟机启动配置文件启动虚拟机,同时启动监控进程;其中监控进程用于监控虚拟机中操作系统的安装情况;(5)在虚拟机中运行操作系统安装程序,以用非交互式的方式安装操作系统,同时监控进程判断操作系统的安装是出错还是已完成,如果出错,则关闭虚拟机,并转入步骤
(7),如果已完成,则关闭虚拟机,并转入步骤(6);具体而言,在虚拟机中运行的是经过修改的操作系统安装程序,其能够支持基于软件预安装操作系统和生成软件预安装包,同时能够在安装操作系统的过程中跟外面的监控进程交互,报告虚拟机中的操作系统安装到哪一步,安装是否完成,以及安装是否出错;在这一步,如果虚拟机加载了软件预安装包,将直接将预安装包里已安装的软件拷贝到目标虚拟磁盘中去,从而节省了下载和安装这些软件包的时间;(6)判断在操作系统安装过程中是否生成了软件预安装包,如果生成则在软件预安装包库中注册该软件预安装包,然后进入步骤(7),否则直接进入步骤(7);(7)清理基本环境中的临时文件,向IP地址池归还IP地址,并向用户报告安装结果;其中临时文件包括软件预安装包的副本、启动光盘以及虚拟机启动配置文件。如图3所示,本发明步骤(2)包括以下子步骤:(2-1)从用户提交的操作系统配置信息中提取将要安装的软件,通过依赖关系分析得到完整的软件列表;(2-2)使用完整的软件列表去软件预安装包库中查找一个符合最大匹配原则的软件预安装包,以得到软件预安装包匹配结果;其中,软件预安装包匹配结果包括是否找到匹配的软件预安装包、匹配程度和匹配的软件预安装包编号;最大匹配原则指作为最终的查询结果的软件预安装包中的软件集是拿去查询的完整的软件列表中的软件集合的最大子集;匹配程度包括完全匹配、包含和不匹配,完全匹配指软件预安装包中包含的软件集与拿去查询的完整的软件列表中的软件集合完全相同,包含指软件预安装包中包含的软件集是拿去查询的完整的软件列表中的软件集合的真子集,不匹配是指除以上两种情况外的其它匹配结果;(2-3)从用户提交的操作系统配置信息中判断用户是否要求在生成虚拟机镜像的过程中生成软件预安装包,若用户要求,且(2-1)中得到的匹配程度是包含或者不匹配,则表示需要生成软件预安装包的判断结果为是,否则表示不需要生成软件预安装包。如图4所示,本发明步骤(3)包括以下子步骤:(3-1)根据操作系统配置信息的分析结果,生成与软件预安装包相关的基本环境;具体而言,若步骤(2)中软件预安装包匹配结果指示找到匹配的软件预安装包,则在匹配的软件预安装包上建立一个QC0W2格式的增量镜像作为软件预安装包副本,并把剩余要安装软件的软件列表放置到其中;若用户需要生成软件预安装包,且步骤(2)中软件预安装包匹配结果指示没有找到完全匹配的软件预安装包,则新建一个QC0W2格式的虚拟磁盘,并在该虚拟磁盘里面放置好标识文件以表示这是一个将要用来放置软件预安装包的虚拟磁盘;(3-2)生成启动虚拟机所需的基本环境,具体而言,包括从IP地址池获取IP地址,生成用于装载最终目标根文件系统的目标磁盘镜像,生成包含有依据用户提交的配置信息而生成的软件安装程序配置文件的启动光盘和虚拟机启动配置文件;其中虚拟机启动配置文件的硬盘项除了目标磁盘镜像外,还应有(3-1)中生成的磁盘镜像,以便在启动虚拟机时加载进去。如图5所示,本发明步骤(5)包含以下子步骤:(5-1)在安装软件之前,按照正常的流程安装操作系统,包括格式化目的虚拟机磁盘等,安装过程中若出现错误,则转入步骤(5-8);(5-2)判断是否加载了软件预安装包,具体而言就是判断虚拟机是否加载了一块带软件预安装包的虚拟磁盘,如果加载了软件预安装包,则转到步骤(5-3),否则转到步骤(5-4),若过程中出现错误,则转到步骤(5-8);(5-3)将软件预安装包的根文件系统拷贝到刚格式化的目标虚拟磁盘中去,读取软件预安装包中剩余待安装软件列表,安装其中的软件包到目的虚拟机磁盘中,若过程中出现错误,则转入步骤(5-8);(5-4)提取操作系统安装程序配置文件中的软件列表,通过依赖性分析得到完整的待安装软件包列表,依次安装其中的每一个软件包到目的虚拟机磁盘中,若过程中出现错误,则转入步骤(5-8);(5-5)判断虚拟机是否加载了带有空软件预安装包标识的虚拟机磁盘,若加载了,则转到步骤(5-6),否则直接转到步骤(5-7);若过程中出现错误,则转入步骤(5-8);(5-6)将安装好了软件包的目标虚拟机磁盘中的根文件系统拷贝到空的虚拟机磁盘中,并去掉空软件预安装包标识,过程中若出现错误,则转入步骤(5-8);(5-7)按正常流程在目的虚拟机磁盘中执行下面的操作系统安装过程,包括选择语言、时区,配置防火墙和安装多重启动管理器(GRand Unified Bootloader, GRUB),若安装过程中出现错误,则转到步骤(5-8),若未出现错误,则转到步骤(5-9);(5-8)向监控进程报告安装出错,并转到步骤(5-10);
(5-9)向监控进程报告安装完成,过程结束;(5-10)终止操作系统安装过程。本发明云环境下基于软件预安装的虚拟机镜像生成系统包括软件上传模块1、操作系统配置信息分析模块2、基本环境生成模块3、虚拟机启动模块4、操作系统安装和安装监控模块5、软件预安装包注册模块6和环境清理模块7。其中软件上传模块I用于接收用户的上传软件,并对上传的软件进行依赖性检查。操作系统配置信息分析模块2用于接收并分析用户提交的操作系统配置信息,以得到操作系统配置信息分析结果。基本环境生成模块3根据操作系统配置信息分析结果生成基于软件预安装技术安装操作系统所必需的基本环境。虚拟机启动模块4用于在基本环境生成模块3生成的基本环境下使用虚拟机启动配置文件启动虚拟机,同时启动监控进程。操作系统安装和安装监控模块5用于在虚拟机中运行操作系统安装程序,以用非交互式的方式安装操作系统,同时监控进程判断操作系统的安装是出错还是已完成,如果出错,则关闭虚拟机,并转入环境清理模块7,如果已完成,则关闭虚拟机,并转入软件预安装包注册模块6。软件预安装包注册模块6用于判断在操作系统安装过程中是否生成了软件预安装包,如果生成则在软件预安装包库中注册该软件预安装包,然后进入环境清理模块7,否则直接进入环境清理模块7。环境清理模块7用于清理基本环境中的临时文件,向IP地址池归还IP地址,并向用户报告安装结果。。操作系统配置信息分析模块2包括软件列表生成子模块21、软件预安装包匹配子模块22、软件预安装包生成判断子模块23。软件列表生成子模块21用于从用户提交的操作系统配置信息中提取将要安装的软件,通过依赖关系分析得到完整的软件列表。软件预安装包匹配子模块22用于使用完整的软件列表去软件预安装包库中查找一个符合最大匹配原则的软件预安装包,以得到软件预安装包匹配结果。具体而言,软件预安装包匹配子模块22维护一个数据库即软件预安装包库,里面保存每个软件预安装包和其软件列表信息,软件件预安装包库采用倒排索引的方式保存软件列表信息,索引的键是软件包名,值是包含该软件的软件预安装包的ID号;匹配算法如图6所示,匹配时,需要维护一个数组,数组元素是一个结构体,代表数组下标对应的ID号的cache,结构体成员有两个,分别是已匹配的次数(初值为O)和该cache的软件包数目;遍历待匹配的软件包列表,每个软件预安装包ID命中一次,把ID为下标的数组元素中的匹配次数加一,遍历完后,从数组中选出命中次数等于cache软件包数中命中次数最多的那个数组元素,其下标即是对应cache即是匹配的软件预安装包,若数组中没有命中次数等于cache软件包数的元素,贝U表示没能找到匹配的软件预安装包。软件预安装包生成判断子模块23用于从用户提交的操作系统配置信息中判断用户是否要求在生成虚拟机镜像的过程中生成软件预安装包,若用户要求,且软件列表生成子模块21中得到的匹配程度是包含或者不匹配,则表示需要生成软件预安装包的判断结果为是,否则表示不需要生成软件预安装包。本发明基本环境生成模块3包括软件预安装包基本环境生成子模块31和虚拟机启动基本环境生成子模块32。其中软件预安装包基本环境生成子模块31用于根据操作系统配置信息的分析结果,生成与软件预安装包相关的基本环境;具体而言,若模块2中得到的软件预安装包匹配结果指示找到匹配的软件预安装包,则在匹配的软件预安装包上建立一个QC0W2格式的增量镜像作为软件预安装包副本,并把剩余要安装软件的软件列表放置到其中;若用户需要生成软件预安装包,且模块2中得到的软件预安装包匹配结果指示没有找到完全匹配的软件预安装包,则新建一个QC0W2格式的虚拟磁盘,并在该虚拟磁盘里面放置好标识文件以表示这是一个将要用来放置软件预安装包的虚拟磁盘;虚拟机启动基本环境生成模块32用于生成启动虚拟机所需的基本环境;具体而言,包括从IP地址池获取IP地址,生成用于装载最终目标根文件系统的目标磁盘镜像,生成包含有依据用户提交的配置信息而生成的软件安装程序配置文件的启动光盘和虚拟机启动配直文件。本发明操作系统安装模块5包括软件安装前执行子模块51、软件预安装包加载判别子模块52、基于软件预安装包技术的软件安装子模块53、正常软件安装子模块54、空软件预安装包磁盘镜像加载判别子模块55、软件预安装包生成子模块56、软件安装后执行子模块57、错误处理子模块58、安装完毕处理子模块59以及操作系统安装终止子模块510。其中软件安装前执行子模块51用于完成软件安装开始之前阶段的工作,包括格式化虚拟机本身虚拟磁盘等,即按正常的流程完成操作系统安装程序软件安装开始前的各部分工作;若安装出现错误,则转入错误处理子模块58。软件预安装包加载判别子模块52用于判别虚拟机是否加载了软件预安装包,如果加载了软件预安装包,则转到软件安装子模块53,否则转到正常软件安装子模块54,若过程中出现错误,则转到错误处理子模块58。基于软件预安装包技术的软件安装子模块53用于将软件预安装包的根文件系统拷贝到刚格式化的目标虚拟磁盘中去,读取软件预安装包中剩余待安装软件列表,安装其中的软件包到目的虚拟机磁盘中,若过程中出现错误,则转入错误处理子模块58。正常软件安装子模块54用于提取操作系统安装程序配置文件中的软件列表,通过依赖性分析得到完整的待安装软件包列表,依次安装其中的每一个软件包到目的虚拟机磁盘中,若过程中出现错误,则转入错误处理子模块58。空软件预安装包磁盘镜像加载判别子模块55用于判断虚拟机是否加载了带有空软件预安装包标识的虚拟磁盘;若加载了,则转到软件预安装包生成子模块56,否则直接转到软件安装后执行子模块57 ;若过程中出现错误,则转入错误处理子模块58。软件预安装包生成子模块56用于将安装好了软件包的目标虚拟机磁盘中的根文件系统拷贝到空的虚拟机磁盘中,并去掉空软件预安装包标识,过程中若出现错误,则转入错误处理子模块58。软件安装后执行子模块57用于执行软件包安装完毕之后的操作系统安装步骤,包括选择语言、时区,配置防火墙和安装多重启动管理器;若过程中出现错误,则转入错误处理子模块58,若未出现错误,则转入安装完成处理子模块59 ;错误处理子模块58用于向监控进程报告安装出错,并转到终止操作系统安装子模块510。安装完成处理子模块59用于向监控进程报告安装完成,过程结束。终止操作系统安装子模块510用于终止操作系统安装。实例:为了验证本发明系统的可行性和有效性,在真实环境下部署了本发明系统,通过与直接启动虚拟机来制作虚拟机镜像进行对比。实验物理环境是两台一样配置的服务器,具体配置如表I所示。制作的镜像是Cent0S5.5的操作系统。实验选择4组软件集,比较每组软件集下在两种发案下生成虚拟机镜像所花费的时间(当然本发明系统事先制作好了制作好了 Base基础软件集的软件预安装包),实验的结果如表2。表1实验配置环境
权利要求
1.一种云环境下基于软件预安装的虚拟机镜像生成方法,其特征在于,包括以下步骤: (1)接收用户的上传软件,并对上传的软件进行依赖性检查; (2)接收并分析用户提交的操作系统配置信息,以得到操作系统配置信息分析结果; (3)根据操作系统配置信息分析结果生成基于软件预安装技术安装操作系统所必需的基本环境; (4)在步骤(3)生成的基本环境下使用虚拟机启动配置文件启动虚拟机,同时启动监控进程; (5)在虚拟机中运行操作系统安装程序,以用非交互式的方式安装操作系统,同时监控进程判断操作系统的安装是出错还是已完成,如果出错,则关闭虚拟机,并转入步骤(7),如果已完成,则关闭虚拟机,并转入步骤(6); (6)判断在操作系统安装过程中是否生成了软件预安装包,如果生成则在软件预安装包库中注册该软件预安装包,然后进入步骤(7),否则直接进入步骤(7); (7)清理基本环境中的临时文件,向IP地址池归还IP地址,并向用户报告安装结果。
2.根据权利要求1所述的虚拟机镜像生成方法,其特征在于,步骤(I)具体为,对软件依赖性的分析是通过查询软件源的数据库文件来解决,如果依赖性没得到满足,则提示用户上传的软件没能满足依赖关系的原因,还需上传哪些软件包才能满足软件依赖关系,重复(I)步骤,直到软件的依赖关系得到满足为止。
3.根据权利要求1所述的虚拟机镜像生成方法,其特征在于,临时文件包括软件预安装包的副本、启动光盘以及虚拟机启动配直文件。
4.根据权利要求1所述的虚拟机镜像生成方法,其特征在于,步骤(2)包括以下子步骤: (2-1)从用户提交的操作系统配置信息中提取将要安装的软件,通过依赖关系分析得到完整的软件列表; (2-2)使用完整的软件列表去软件预安装包库中查找一个符合最大匹配原则的软件预安装包,以得到软件预安装包匹配结果;其中,软件预安装包匹配结果包括是否找到匹配的软件预安装包、匹配程度和匹配的软件预安装包编号,最大匹配原则指作为最终的查询结果的软件预安装包中的软件集是拿去查询的完整的软件列表中的软件集合的最大子集,匹配程度包括完全匹配、包含和不匹配; (2-3)从用户提交的操作系统配置信息中判断用户是否要求在生成虚拟机镜像的过程中生成软件预安装包,若用户要求,且(2-1)中得到的匹配程度是包含或者不匹配,则表示需要生成软件预安装包的判断结果为是,否则表示不需要生成软件预安装包。
5.根据权利要求4所述的虚拟机镜像生成方法,其特征在于,步骤(3)包括以下子步骤: (3-1)根据操作系统配置信息的分析结果,生成与软件预安装包相关的基本环境; (3-2)生成启动虚拟机所需的基本环境。
6.根据权利要求5所述的虚拟机镜像生成方法,其特征在于, 步骤(3-1)具体为,若步骤(2)中软件预安装包匹配结果指示找到匹配的软件预安装包,则在匹配的软件预安装包上建立一个QC0W2格式的增量镜像作为软件预安装包副本,并把剩余要安装软件的软件列表放置到其中;若用户需要生成软件预安装包,且步骤(2)中软件预安装包匹配结果指示没有找到完全匹配的软件预安装包,则新建一个QC0W2格式的虚拟磁盘,并在该虚拟磁盘里面放置好标识文件以表示这是一个将要用来放置软件预安装包的虚拟磁盘; 步骤(3-2)具体为,从IP地址池获取IP地址,生成用于装载最终目标根文件系统的目标磁盘镜像,生成包含有依据用户提交的配置信息而生成的软件安装程序配置文件的启动光盘和虚拟机启动配置文件;其中虚拟机启动配置文件的硬盘项除了目标磁盘镜像外,还应有(3-1)中生成的磁盘镜像,以便在启动虚拟机时加载进去。
7.根据权利要求1所述的虚拟机镜像生成方法,其特征在于,步骤(5)包含以下子步骤: (5-1)在安装软件之前,按照正常的流程安装操作系统,包括格式化目的虚拟机磁盘等,安装过程中若出现错误,则转入步骤(5-8); (5-2)判断是否加载了软件预安装包,如果加载了软件预安装包,则转到步骤(5-3),否则转到步骤(5-4),若过程中出现错误,则转到步骤(5-8); (5-3)将软件预安装包的根文件系统拷贝到刚格式化的目标虚拟磁盘中去,读取软件预安装包中剩余待安装软件列表,安装其中的软件包到目的虚拟机磁盘中,若过程中出现错误,则转入步骤(5-8); (5-4)提取操作系统安装程序配置文件中的软件列表,通过依赖性分析得到完整的待安装软件包列表,依次安装其中的每一个软件包到目的虚拟机磁盘中,若过程中出现错误,则转入步骤(5-8); (5-5)判断虚拟机是否加载 了带有空软件预安装包标识的虚拟机磁盘,若加载了,则转到步骤(5-6),否则直接转到步骤(5-7);若过程中出现错误,则转入步骤(5-8); (5-6)将安装好了软件包的目标虚拟机磁盘中的根文件系统拷贝到空的虚拟机磁盘中,并去掉空软件预安装包标识,过程中若出现错误,则转入步骤(5-8); (5-7)按正常流程在目的虚拟机磁盘中执行下面的操作系统安装过程,包括选择语言、时区,配置防火墙和安装GRUB,若安装过程中出现错误,则转到步骤(5-8 ),若未出现错误,则转到步骤(5-9); (5-8)向监控进程报告安装出错,并转到步骤(5-10); (5-9)向监控进程报告安装完成,过程结束; (5-10)终止操作系统安装过程。
8.一种云环境下基于软件预安装的虚拟机镜像生成系统,包括软件上传模块、操作系统配置信息分析模块、基本环境生成模块、虚拟机启动模块、操作系统安装和安装监控模块、软件预安装包注册模块和环境清理模块,其特征在于, 软件上传模块用于接收用户的上传软件,并对上传的软件进行依赖性检查; 操作系统配置信息分析模块用于接收并分析用户提交的操作系统配置信息,以得到操作系统配置信息分析结果; 基本环境生成模块用于根据操作系统配置信息分析结果生成基于软件预安装技术安装操作系统所必需的基本环境; 虚拟机启动模块用于在基本环境生成模块生成的基本环境下使用虚拟机启动配置文件启动虚拟机,同时启动监控进程; 操作系统安装和安装监控模块用于在虚拟机中运行操作系统安装程序,以用非交互式的方式安装操作系统,同时监控进程判断操作系统的安装是出错还是已完成,如果出错,则关闭虚拟机,并转入环境清理模块,如果已完成,则关闭虚拟机,并转入软件预安装包注册模块; 软件预安装包注册模块用于判断在操作系统安装过程中是否生成了软件预安装包,如果生成则在软件预安装包库中注册该软件预安装包,然后进入环境清理模块,否则直接进入环境清理模块; 环境清理模块用于清理基本环境中的临时文件,向IP地址池归还IP地址,并向用户报告安装结果。
9.根据权利要求8所述的虚拟机镜像生成系统,其特征在于, 操作系统配置信息分析模块包括软件列表生成子模块、软件预安装包匹配子模块以及软件预安装包生成判断子模块; 软件列表生成子模块用于从用户提交的操作系统配置信息中提取将要安装的软件,通过依赖关系分析得到完整的软件列表; 软件预安装包匹配子模块用于使用完整的软件列表去软件预安装包库中查找一个符合最大匹配原则的软件预安装包,以得到软件预安装包匹配结果; 软件预安装包生成判断子模块用于从用户提交的操作系统配置信息中判断用户是否要求在生成虚拟机镜像的过程中生成软件预安装包,若用户要求,且软件列表生成子模块中得到的匹配程度是包含或者不匹配,则表示需要生成软件预安装包的判断结果为是,否则表示不需要生成软件预安装包; 基本环境生成模块包括软件预安装包基本环境生成子模块和虚拟机启动基本环境生成子模块; 软件预安装包基本环境生成子模块用于根据操作系统配置信息的分析结果,生成与软件预安装包相关的基本环境; 虚拟机启动基本环境生成模块用于生成启动虚拟机所需的基本环境。
10.根据权利要求8所述的虚拟机镜像生成系统,其特征在于, 操作系统安装模块包括软件安装前执行子模块、软件预安装包加载判别子模块、基于软件预安装包技术的软件安装子模块、正常软件安装子模块、空软件预安装包磁盘镜像加载判别子模块、软件预安装包生成子模块、软件安装后执行子模块、错误处理子模块、安装完毕处理子模块以及操作系统安装终止子模块; 软件安装前执行子模块用于完成软件安装开始之前阶段的工作,包括格式化虚拟机本身虚拟磁盘等,即按正常的流程完成操作系统安装程序软件安装开始前的各部分工作;若安装出现错误,则转入错误处理子模块; 软件预安装包加载判别子模块用于判别虚拟机是否加载了软件预安装包,如果加载了软件预安装包,则转到软件安装子模块,否则转到正常软件安装子模块,若过程中出现错误,则转到错误处理子模块; 基于软件预安装包技术的软件安装子模块用于将软件预安装包的根文件系统拷贝到刚格式化的目标虚拟磁盘中去,读取软件预安装包中剩余待安装软件列表,安装其中的软件包到目的虚拟机磁盘中,若过程中出现错误,则转入错误处理子模块; 正常软件安装子模块用于提取操作系统安装程序配置文件中的软件列表,通过依赖性分析得到完整的待安装软件包列表,依次安装其中的每一个软件包到目的虚拟机磁盘中,若过程中出现错误,则转入错误处理子模块; 空软件预安装包磁盘镜像加载判别子模块用于判断虚拟机是否加载了带有空软件预安装包标识的虚拟磁盘;若加载了,则转到软件预安装包生成子模块,否则直接转到软件安装后执行子模块;若过程中出现错误,则转入错误处理子模块; 软件预安装包生成子模块用于将安装好了软件包的目标虚拟机磁盘中的根文件系统拷贝到空的虚拟机磁盘中,并去掉空软件预安装包标识,过程中若出现错误,则转入错误处理子模块; 软件安装后执行 子模块用于执行软件包安装完毕之后的操作系统安装步骤,包括选择语言、时区,配置防火墙和安装多重启动管理器;若过程中出现错误,则转入错误处理子模块,若未出现错误,则转入安装完成处理子模块; 错误处理子模块用于向监控进程报告安装出错,并转到终止操作系统安装子模块; 安装完成处理子模块用于向监控进程报告安装完成,过程结束; 终止操作系统安装子模块用于终止操作系统安装。
全文摘要
本发明公开了一种云环境下基于软件预安装的虚拟机镜像生成方法,包括接收用户的上传软件,并对上传的软件进行依赖性检查,接收并分析用户提交的操作系统配置信息,以得到操作系统配置信息分析结果,根据操作系统配置信息分析结果生成基于软件预安装技术安装操作系统所必需的基本环境,在生成的基本环境下使用虚拟机启动配置文件启动虚拟机,同时启动监控进程,在虚拟机中运行操作系统安装程序,以用非交互式的方式安装操作系统,同时监控进程判断操作系统的安装是出错还是已完成,如果出错,则关闭虚拟机,并清理基本环境中的临时文件,向IP地址池归还IP地址。本发明能够解决现有方式存在的不够灵活、速度慢、资源耗费严重等不足。
文档编号G06F9/445GK103092650SQ20131000753
公开日2013年5月8日 申请日期2013年1月9日 优先权日2013年1月9日
发明者吴松, 金海 , 石宣化, 余盛雄 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1