首页> 中国专利> 云环境下基于软件预安装的虚拟机镜像生成方法和系统

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

摘要

本发明公开了一种云环境下基于软件预安装的虚拟机镜像生成方法,包括:接收用户的上传软件,并对上传的软件进行依赖性检查,接收并分析用户提交的操作系统配置信息,以得到操作系统配置信息分析结果,根据操作系统配置信息分析结果生成基于软件预安装技术安装操作系统所必需的基本环境,在生成的基本环境下使用虚拟机启动配置文件启动虚拟机,同时启动监控进程,在虚拟机中运行操作系统安装程序,以用非交互式的方式安装操作系统,同时监控进程判断操作系统的安装是出错还是已完成,如果出错,则关闭虚拟机,并清理基本环境中的临时文件,向IP地址池归还IP地址。本发明能够解决现有方式存在的不够灵活、速度慢、资源耗费严重等不足。

著录项

  • 公开/公告号CN103092650A

    专利类型发明专利

  • 公开/公告日2013-05-08

    原文格式PDF

  • 申请/专利权人 华中科技大学;

    申请/专利号CN201310007532.3

  • 发明设计人 吴松;金海;石宣化;余盛雄;

    申请日2013-01-09

  • 分类号G06F9/445(20060101);

  • 代理机构42201 华中科技大学专利中心;

  • 代理人朱仁玲

  • 地址 430074 湖北省武汉市洪山区珞喻路1037号

  • 入库时间 2024-02-19 19:02:27

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-11-18

    授权

    授权

  • 2013-06-12

    实质审查的生效 IPC(主分类):G06F9/445 申请日:20130109

    实质审查的生效

  • 2013-05-08

    公开

    公开

说明书

技术领域

本发明属于云计算领域,更具体地,涉及一种云环境下基于软件预安 装的虚拟机镜像生成方法和系统。

背景技术

随着云计算的发展,云计算上应用也越来越多样化,而这些应用都有 赖于虚拟机磁盘镜像对软件的封装。由于用户的需求的千差万别,为满足 用户的需求,虚拟机镜像的定制化服务成为各个云计算平台不可或缺的组 成部分。

现有的虚拟机镜像定制基本可以分为两大类:

修改现有模板:这种办法是选择一个云平台上原有的虚拟机镜像来启 动一台虚拟机,用户登录虚拟机后,在虚拟机上做安装软件,删除软件或 修改配置等操作,之后将关掉这台虚拟机,并将它的磁盘镜像保存为虚拟 机云平台新的虚拟机镜像;

操作系统定制:用户在浏览器前选择需要安装系统的版本,选择所需 要安装的软件,输入分区信息和用户信息等,之后启动虚拟机安装操作系 统,安装完毕之后将虚拟机镜像保存为云平台的虚拟机镜像。

这两种方式各有优劣:第一种定制方法的特点是方便做少量的修改, 时间开销比较小,但这种方式有着无法克服的缺点,即无法满足更专业的 软件定制化需求,这一点在虚拟设备(Virtual Appliance)等对镜像定制 化要求较高的领域体现得愈加明显,比如无法调整磁盘大小和分区,无法 保证现有虚拟机镜像是干净的(没有不安全的内容),且一般这种方式是用 增量镜像来保存修改后的镜像模板,会很大程度上降低I/O性能;第二种 方式的优点则在可以做到彻底的定制,包括要安装哪些软件,磁盘大小多 少,分区如何,是否需要图形化界面等,缺点是从头安装操作系统需要耗 费大量的时间,降低了虚拟机镜像定制服务的用户体验。因此,业界还需 要一种既可以做到完全定制化,时间开销也较小的虚拟机镜像生成方案。

第二种方式定制虚拟机镜像的速度比较慢主要原因是在安装操作系统 的时候,需要从头安装虚拟机镜像里的软件。常用的操作系统安装程序(如 Red Hat系列的Anaconda),都是针对于物理环境下设计的,它可以做到交 互式安装和自动安装,由于硬件之间可能的差异,每次安装都是从头再来 的,没有考虑到多次安装过程中重复部分,但顾及到操作系统安装程序的 普适性,这种做法在物理环境是比较合理的。

但在云环境下,基于虚拟化的云计算平台则不需要考虑硬件的差异, 且云计算平台上的虚拟机镜像中的软件具有很大的共同性。正常情况下安 装操作系统最花费时间的部分便是安装软件包,每次都定制虚拟机镜像都 需要重新来安装一遍这些重复的软件,无疑既浪费了时间,也浪费了宝贵 的硬件资源。虽然修改现有模板的方式本质上也是避免重复安装软件,但 这种方式无法克服以上所说的固有缺点;而对于操作系统定制的方式,还 缺乏有效的手段来提高镜像的生成速度。

发明内容

针对现有技术的缺陷,本发明的目的在于提供一种云环境下基于软件 预安装的虚拟机镜像生成方法和系统,其针对云环境下的特点,并旨在解 决现有虚拟机镜像定制系统生成镜像的方式存在的不够灵活、速度慢、资 源耗费严重等不足。

为实现上述目的,本发明提供了一种云环境下基于软件预安装的虚拟 机镜像生成方法,包括以下步骤:

(1)接收用户的上传软件,并对上传的软件进行依赖性检查;

(2)接收并分析用户提交的操作系统配置信息,以得到操作系统配置 信息分析结果;

(3)根据操作系统配置信息分析结果生成基于软件预安装技术安装操 作系统所必需的基本环境;

(4)在步骤(3)生成的基本环境下使用虚拟机启动配置文件启动虚 拟机,同时启动监控进程;

(5)在虚拟机中运行操作系统安装程序,以用非交互式的方式安装操 作系统,同时监控进程判断操作系统的安装是出错还是已完成,如果出错, 则关闭虚拟机,并转入步骤(7),如果已完成,则关闭虚拟机,并转入步 骤(6);

(6)判断在操作系统安装过程中是否生成了软件预安装包,如果生成 则在软件预安装包库中注册该软件预安装包,然后进入步骤(7),否则直 接进入步骤(7);

(7)清理基本环境中的临时文件,向IP地址池归还IP地址,并向用 户报告安装结果。

步骤(1)具体为,对软件依赖性的分析是通过查询软件源的数据库文 件来解决,如果依赖性没得到满足,则提示用户上传的软件没能满足依赖 关系的原因,还需上传哪些软件包才能满足软件依赖关系,重复(1)步骤, 直到软件的依赖关系得到满足为止。

临时文件包括软件预安装包的副本、启动光盘以及虚拟机启动配置文 件。

步骤(2)包括以下子步骤:

(2-1)从用户提交的操作系统配置信息中提取将要安装的软件,通过 依赖关系分析得到完整的软件列表;

(2-2)使用完整的软件列表去软件预安装包库中查找一个符合最大匹 配原则的软件预安装包,以得到软件预安装包匹配结果;其中,软件预安 装包匹配结果包括是否找到匹配的软件预安装包、匹配程度和匹配的软件 预安装包编号,最大匹配原则指作为最终的查询结果的软件预安装包中的 软件集是拿去查询的完整的软件列表中的软件集合的最大子集,匹配程度 包括完全匹配、包含和不匹配;

(2-3)从用户提交的操作系统配置信息中判断用户是否要求在生成虚 拟机镜像的过程中生成软件预安装包,若用户要求,且(2-1)中得到的匹 配程度是包含或者不匹配,则表示需要生成软件预安装包的判断结果为是, 否则表示不需要生成软件预安装包。

步骤(3)包括以下子步骤:

(3-1)根据操作系统配置信息的分析结果,生成与软件预安装包相关 的基本环境;

(3-2)生成启动虚拟机所需的基本环境;

步骤(3-1)具体为,若步骤(2)中软件预安装包匹配结果指示找到 匹配的软件预安装包,则在匹配的软件预安装包上建立一个QCOW2格式的 增量镜像作为软件预安装包副本,并把剩余要安装软件的软件列表放置到 其中;若用户需要生成软件预安装包,且步骤(2)中软件预安装包匹配结 果指示没有找到完全匹配的软件预安装包,则新建一个QCOW2格式的虚拟 磁盘,并在该虚拟磁盘里面放置好标识文件以表示这是一个将要用来放置 软件预安装包的虚拟磁盘。

步骤(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地址,并向用户报告安装结果。

操作系统配置信息分析模块包括软件列表生成子模块、软件预安装包 匹配子模块以及软件预安装包生成判断子模块,软件列表生成子模块用于 从用户提交的操作系统配置信息中提取将要安装的软件,通过依赖关系分 析得到完整的软件列表,软件预安装包匹配子模块用于使用完整的软件列 表去软件预安装包库中查找一个符合最大匹配原则的软件预安装包,以得 到软件预安装包匹配结果,软件预安装包生成判断子模块用于从用户提交 的操作系统配置信息中判断用户是否要求在生成虚拟机镜像的过程中生成 软件预安装包,若用户要求,且软件列表生成子模块中得到的匹配程度是 包含或者不匹配,则表示需要生成软件预安装包的判断结果为是,否则表 示不需要生成软件预安装包,基本环境生成模块包括软件预安装包基本环 境生成子模块和虚拟机启动基本环境生成子模块,软件预安装包基本环境 生成子模块用于根据操作系统配置信息的分析结果,生成与软件预安装包 相关的基本环境,虚拟机启动基本环境生成模块用于生成启动虚拟机所需 的基本环境。

操作系统安装模块包括软件安装前执行子模块、软件预安装包加载判 别子模块、基于软件预安装包技术的软件安装子模块、正常软件安装子模 块、空软件预安装包磁盘镜像加载判别子模块、软件预安装包生成子模块、 软件安装后执行子模块、错误处理子模块、安装完毕处理子模块以及操作 系统安装终止子模块,软件安装前执行子模块用于完成软件安装开始之前 阶段的工作,包括格式化虚拟机本身虚拟磁盘等,即按正常的流程完成操 作系统安装程序软件安装开始前的各部分工作;若安装出现错误,则转入 错误处理子模块,软件预安装包加载判别子模块用于判别虚拟机是否加载 了软件预安装包,如果加载了软件预安装包,则转到软件安装子模块,否 则转到正常软件安装子模块,若过程中出现错误,则转到错误处理子模块, 基于软件预安装包技术的软件安装子模块用于将软件预安装包的根文件系 统拷贝到刚格式化的目标虚拟磁盘中去,读取软件预安装包中剩余待安装 软件列表,安装其中的软件包到目的虚拟机磁盘中,若过程中出现错误, 则转入错误处理子模块,正常软件安装子模块用于提取操作系统安装程序 配置文件中的软件列表,通过依赖性分析得到完整的待安装软件包列表, 依次安装其中的每一个软件包到目的虚拟机磁盘中,若过程中出现错误, 则转入错误处理子模块,空软件预安装包磁盘镜像加载判别子模块用于判 断虚拟机是否加载了带有空软件预安装包标识的虚拟磁盘;若加载了,则 转到软件预安装包生成子模块,否则直接转到软件安装后执行子模块;若 过程中出现错误,则转入错误处理子模块,软件预安装包生成子模块用于 将安装好了软件包的目标虚拟机磁盘中的根文件系统拷贝到空的虚拟机磁 盘中,并去掉空软件预安装包标识,过程中若出现错误,则转入错误处理 子模块,软件安装后执行子模块用于执行软件包安装完毕之后的操作系统 安装步骤,包括选择语言、时区,配置防火墙和安装多重启动管理器;若 过程中出现错误,则转入错误处理子模块,若未出现错误,则转入安装完 成处理子模块,错误处理子模块用于向监控进程报告安装出错,并转到终 止操作系统安装子模块,安装完成处理子模块用于向监控进程报告安装完 成,过程结束,终止操作系统安装子模块用于终止操作系统安装。

通过本发明所构思的以上技术方案,与现有技术相比,本发明具有以 下的有益效果:

(1)提高了虚拟机镜像的生成速度。本发明通过修改操作系统安装程 序,使安装程序能够使用加载到虚拟机中的软件预安装包,并在软件预安 装包的基础之上安装剩余的软件,从而可以避免软件的重复安装过程,节 省安装软件带来的时间开销。

(2)用户可以根据自己的需求定制软件预安装包。本发明系统不仅可 以预先准备了多个用户常用的软件预安装包,还允许用户根据自己的需求 定制软件预安装包。由于这种软件预安装包是用户自己定制的,里面的软 件集往往可以更好地匹配用户将要安装的软件集,从而可以进一步提高镜 像的生成速度。此外用户还可以把自己的软件预安装包发布到虚拟机镜像 定制平台中,供平台所有的用户使用,这样就可增加软件预安装包的来源, 以应对各种不同的需求。

附图说明

图1是本发明云环境下基于软件预安装的虚拟机镜像生成方法的应用 环境图。

图2是本发明云环境下基于软件预安装的虚拟机镜像生成方法的流程 图。

图3是本发明方法中步骤(2)的细化流程图。

图4是本发明方法中步骤(3)的细化流程图。

图5是本发明方法中步骤(5)的细化流程图。

图6是本发明软件预安装包匹配子模块采用的匹配算法的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图 及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体 实施例仅仅用以解释本发明,并不用于限定本发明。

如图1所示,本发明通过Web前端与用户交互,用户通过浏览器上传 软件和提交操作系统安装配置信息;后台对操作系统安装配置信息进行分 析后,依据分析结果生成基于软件预安装操作系统所需要的基本环境;然 后启动虚拟机非交互式地安装操作系统,在启动的虚拟机中运行修改过的 操作系统安装程序,使操作系统安装程序能够基于软件预安装包安装操作 系统和生成新的软件预安装包,还能对外报告安装进展;同时启动监控进 程监控虚拟机内部的操作系统安装情况,当出错或者完成后,清除现场, 注册新的软件预安装包,并将镜像生成结果返回给用户。

如图2所示,本发明云环境下基于软件预安装的虚拟机镜像生成方法 包括以下步骤:

(1)接收用户的上传软件,并对上传的软件进行依赖性检查;具体而 言,对软件依赖性的分析是通过查询软件源的数据库文件来解决,如果依 赖性没得到满足,则提示用户上传的软件没能满足依赖关系的原因,还需 上传哪些软件包才能满足软件依赖关系,重复(1)步骤,直到软件的依赖 关系得到满足为止;

(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)中软件预安装包匹配结果指示找到匹 配的软件预安装包,则在匹配的软件预安装包上建立一个QCOW2格式的增 量镜像作为软件预安装包副本,并把剩余要安装软件的软件列表放置到其 中;若用户需要生成软件预安装包,且步骤(2)中软件预安装包匹配结果 指示没有找到完全匹配的软件预安装包,则新建一个QCOW2格式的虚拟磁 盘,并在该虚拟磁盘里面放置好标识文件以表示这是一个将要用来放置软 件预安装包的虚拟磁盘;

(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。

其中软件上传模块1用于接收用户的上传软件,并对上传的软件进行 依赖性检查。

操作系统配置信息分析模块2用于接收并分析用户提交的操作系统配 置信息,以得到操作系统配置信息分析结果。

基本环境生成模块3根据操作系统配置信息分析结果生成基于软件预 安装技术安装操作系统所必需的基本环境。

虚拟机启动模块4用于在基本环境生成模块3生成的基本环境下使用 虚拟机启动配置文件启动虚拟机,同时启动监控进程。

操作系统安装和安装监控模块5用于在虚拟机中运行操作系统安装程 序,以用非交互式的方式安装操作系统,同时监控进程判断操作系统的安 装是出错还是已完成,如果出错,则关闭虚拟机,并转入环境清理模块7, 如果已完成,则关闭虚拟机,并转入软件预安装包注册模块6。

软件预安装包注册模块6用于判断在操作系统安装过程中是否生成了 软件预安装包,如果生成则在软件预安装包库中注册该软件预安装包,然 后进入环境清理模块7,否则直接进入环境清理模块7。

环境清理模块7用于清理基本环境中的临时文件,向IP地址池归还IP 地址,并向用户报告安装结果。。

操作系统配置信息分析模块2包括软件列表生成子模块21、软件预安 装包匹配子模块22、软件预安装包生成判断子模块23。

软件列表生成子模块21用于从用户提交的操作系统配置信息中提取将 要安装的软件,通过依赖关系分析得到完整的软件列表。

软件预安装包匹配子模块22用于使用完整的软件列表去软件预安装包 库中查找一个符合最大匹配原则的软件预安装包,以得到软件预安装包匹 配结果。具体而言,软件预安装包匹配子模块22维护一个数据库即软件预 安装包库,里面保存每个软件预安装包和其软件列表信息,软件件预安装 包库采用倒排索引的方式保存软件列表信息,索引的键是软件包名,值是 包含该软件的软件预安装包的ID号;匹配算法如图6所示,匹配时,需要 维护一个数组,数组元素是一个结构体,代表数组下标对应的ID号的cache, 结构体成员有两个,分别是已匹配的次数(初值为0)和该cache的软件包 数目;遍历待匹配的软件包列表,每个软件预安装包ID命中一次,把ID 为下标的数组元素中的匹配次数加一,遍历完后,从数组中选出命中次数 等于cache软件包数中命中次数最多的那个数组元素,其下标即是对应 cache即是匹配的软件预安装包,若数组中没有命中次数等于cache软件包 数的元素,则表示没能找到匹配的软件预安装包。

软件预安装包生成判断子模块23用于从用户提交的操作系统配置信息 中判断用户是否要求在生成虚拟机镜像的过程中生成软件预安装包,若用 户要求,且软件列表生成子模块21中得到的匹配程度是包含或者不匹配, 则表示需要生成软件预安装包的判断结果为是,否则表示不需要生成软件 预安装包。

本发明基本环境生成模块3包括软件预安装包基本环境生成子模块31 和虚拟机启动基本环境生成子模块32。

其中软件预安装包基本环境生成子模块31用于根据操作系统配置信息 的分析结果,生成与软件预安装包相关的基本环境;具体而言,若模块2 中得到的软件预安装包匹配结果指示找到匹配的软件预安装包,则在匹配 的软件预安装包上建立一个QCOW2格式的增量镜像作为软件预安装包副本, 并把剩余要安装软件的软件列表放置到其中;若用户需要生成软件预安装 包,且模块2中得到的软件预安装包匹配结果指示没有找到完全匹配的软 件预安装包,则新建一个QCOW2格式的虚拟磁盘,并在该虚拟磁盘里面放 置好标识文件以表示这是一个将要用来放置软件预安装包的虚拟磁盘;

虚拟机启动基本环境生成模块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用于终止操作系统安装。

实例:

为了验证本发明系统的可行性和有效性,在真实环境下部署了本发明 系统,通过与直接启动虚拟机来制作虚拟机镜像进行对比。实验物理环境 是两台一样配置的服务器,具体配置如表1所示。制作的镜像是CentOS5.5 的操作系统。实验选择4组软件集,比较每组软件集下在两种发案下生成 虚拟机镜像所花费的时间(当然本发明系统事先制作好了制作好了Base基 础软件集的软件预安装包),实验的结果如表2。

表1实验配置环境

表2实验结果

由结果可知使用了BASE软件集的软件预安装包之后,4个软件集都基 本上节省了大约4分钟的时间,由此可见软件预安装包能够有效地节省镜 像模版的生成时间。

本发明的基本原理是通过修改过的操作系统安装程序预先生成软件预 安装包,即一个安装了一些软件但没有做后续系统配置的qcow2格式的虚 拟磁盘,以后每次用户需要自定义虚拟机镜像时,先将所要安装的软件集 与已存在的软件预安装包中的软件集做匹配,选择符合最大匹配原则的软 件预安装包加载到安装操作系统的虚拟机中去,并在此基础上安装剩余的 软件,以节省安装软件所花费的时间。本发明改进了上面提到的操作系统 定制的方式,既能灵活地定制虚拟机镜像,还能大大地降低定制虚拟机镜 像所花费的时间。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等 同替换和改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号