一种云环境中虚拟机镜像的更新方法

文档序号:8498621阅读:738来源:国知局
一种云环境中虚拟机镜像的更新方法
【技术领域】
[0001]本发明属于计算机软件类云计算领域,更具体地,涉及一种云环境中虚拟机镜像的更新方法。
【背景技术】
[0002]在云环境中软件的漏洞或者是错误(Bug)会比普通物理环境中造成的影响更大更深远,因为云平台中各个不同的组成部分之间往往联系紧密,一个部件出问题可能会造成其他部件出现问题,从而引发连锁反应,最终造成整个云平台的不稳定、不安全甚至瘫痪。应对软件漏洞或者Bug的终极方法就是软件更新,及时有效的软件更新对于整个云平台的稳定性、可靠性以及安全性都显得非常重要。
[0003]传统的软件更新方法需要启动整个系统,然后在系统正常运行的状态下进行软件的更新操作,例如执行更新脚本等等。然而,随着云计算的发展,各个大型的数据中心中常常会出现大量的处于休眠状态的虚拟机,也即,虚拟机并没有启动,只是一个镜像文件,对于镜像文件内部的软件更新可以采用传统的方法,即先通过虚拟机镜像启动虚拟机,然后执行软件的更新操作,更新操作完成之后再将虚拟机关闭,重新回到原来的休眠状态。然而这种方法会面临很多挑战,比如说效率问题,一个大型的数据中心可能会有成千上万的处于休眠状体的虚拟机镜像,这样会浪费大量的时间在镜像的启动以及关机上,效率低下。
[0004]虚拟机镜像的离线更新机制可以高效的完成虚拟机镜像内部软件的更新升级,它不需要启动虚拟机镜像,减少了虚拟机启动以及关闭等大量耗时操作,仅仅需要重写更新脚本,然后在宿主机上执行更新脚本完成对镜像内部文件系统数据的更改,从而达到软件更新的目的。
[0005]然而,现有的基于脚本重写技术的镜像离线更新机制存在以下两个问题:
[0006]1、现有的脚本重写技术不能保证对任意更新脚本的重写都能成功完成,由于部分更新脚本中的命令严重依赖镜像运行时内存信息,使得脚本的重写操作无法正确完成,从而造成离线更新失败,不得不放弃离线更新转而采用在线更新;
[0007]2、现有的离线更新方法缺乏更新后的可靠性验证机制,导致更新的流程并不完整,一方面软件离线更新完成后可能会存在更新错误,导致该软件无法正常使用,还会导致系统中所有依赖于该软件的其他的上层软件将无法正常使用,另一方面即使该软件更新没有出现错误,但是该软件跟其他上层软件之间的依赖关系可能会由于版本变化造成无法相互兼容。上述情况会造成对原有软件的破坏甚至是对整个虚拟机镜像的破坏,如果镜像无法恢复到更新前的状态那么将造成非常严重的后果。

【发明内容】

[0008]针对现有技术的以上缺陷或改进需求,本发明提供了一种云环境中虚拟机镜像的更新方法,其目的在于,解决现有镜像离线更新机制中存在的更新脚本中的部分命令严重依赖镜像运行时内存信息从而使得脚本的重写操作无法正确完成、以及缺乏更新后的可靠性验证机制从而导致软件无法正常使用、所有依赖于该软件的其他的上层软件也无法正常使用、以及该软件跟其他上层软件之间由于版本变化造成无法相互兼容的技术问题。
[0009]为实现上述目的,按照本发明的一个方面,提供了一种云环境中虚拟机镜像的更新方法,包括以下步骤:
[0010](I)从用户接收虚拟机镜像更新请求,根据该请求查找该用户相关的虚拟机镜像并获取该镜像的类型信息,并根据该镜像的类型搭建镜像更新环境;
[0011](2)在步骤(I)搭建的镜像更新环境下获取该虚拟机镜像的软件信息,并与已有的最新软件信息数据库进行比较分析,以找出该虚拟机镜像的待更新软件并生成更新任务;
[0012](3)判断步骤(2)中生成的更新任务是否支持rpm以及dpkg软件包管理工具的更新,若支持,进入步骤(4),否则直接转入步骤(5);
[0013](4)分析更新任务并执行,以完成用户虚拟机镜像中软件的更新;
[0014](5)对步骤(4)中已经实施更新的虚拟机镜像进行更新可靠性验证操作,以验证更新结果的正确性;
[0015](6)在完成镜像的更新操作后实施清理工作。
[0016]优选地,镜像更新环境包括宿主物理服务器,用于挂载虚拟机镜像并执行更新任务,以及最新软件信息数据库,用于检测用户镜像是否存在待更新软件。
[0017]优选地,步骤(4)具体为,首先获取rpm以及dpkg软件包的更新脚本,分析脚本中每一条命令的安全性,利用已有的命令分类知识库进行分类,然后将无法在离线状态下进行更新执行的命令替换或者是删除,重构更新脚本,完成对更新脚本的初步处理;然后,重新分析脚本,统计脚本命令并分析,判断是否需要进行脚本分离操作,若需要,则进行脚本语句依赖性分析并分离出所有不安全的语句并重新整理更新脚本,并执行离线部分脚本完成更新,处理在线部分脚本使其在镜像启动后自动执行,否则将整个脚本作为离线脚本完成更新,最后,保存镜像更新结果到数据库中。
[0018]优选地,步骤⑷包括以下子步骤:
[0019](4-1)从获取的更新任务中,得到相关更新软件包,提取软件包中的相关更新脚本,利用已有的命令分类知识库对脚本中所有命令进行分类统计;
[0020](4-2)利用步骤(4-1)得到的更新脚本命令的安全性结果,定位所有非安全型命令以及无关紧要型命令,并采用脚本重写技术完成对更新脚本的更改;
[0021](4-3)对步骤(4-2)中得到重写后的脚本进行分析脚本安全性再分析操作得到脚本重写后的最终安全性结果;
[0022](4-4)对步骤(4-3)生成的最终安全性结果进行判断操作,确定是否需要进行脚本分离;若需要则需要进行分离转入步骤(4-5),否则转入步骤(4-8);
[0023](4-5)对更新脚本中语句进行依赖性分析以查找受非安全型命令影响的所有语句;
[0024](4-6)利用步骤(4-5)生成的依赖性分析结果,对镜像实施脚本分离操作;
[0025](4-7)对步骤(4-6)中生成的在线脚本进行适当处理,以使其能够正常完成对软件的更新;
[0026](4-8)处理完在线脚本后,再对步骤(4-6)中生成的离线脚本进行处理,以完成离线状态下部分更新。
[0027]优选地,对更新脚本的更改包括无关紧要型命令删除、非安全型命令替换、以及无效控制结构删除。
[0028]优选地,步骤(4-6)具体为,首先定位所有非安全型命令语句以及它们的依赖性语句,然后提取这些语句并写入新的脚本文件中,接着删掉原有脚本中的这些语句形成离线脚本。
[0029]优选地,步骤(5)包括以下子步骤:
[0030](5-1)对所有镜像进行已更新软件的依赖性分析;
[0031](5-2)利用步骤(5-1)中得到的依赖软件集结果,将所有待验证镜像进行分类;
[0032](5-3)根据(5-2)中的分类结果,对各类镜像集合执行“最大镜像”获取操作;
[0033](5-4)对步骤(5-3)得到的“最大镜像”进行更新可靠性验证测试,以获取“最大镜像”的软件运行异常结果信息;
[0034](5-5)根据步骤(5-4)中的软件运行异常信息判断是否有异常存在,若存在,则转入步骤(5-6),否则,转入步骤(5-7)。
[0035](5-6)找出相关异常软件,并进行同类中其他镜像的更新可靠性分析操作,以得到该类中所有镜像的更新可靠性结果;
[0036](5-7)利用步骤(5-4)以及步骤(5_6)中得到的镜像的异常软件信息,生成所有镜像最终的更新验证结果。
[0037]按照本发明的另一方面,提供了一种云环境中虚拟机镜像的更新系统,包括:
[0038]第一模块,用于从用户接收虚拟机镜像更新请求,根据该请求查找该用户相关的虚拟机镜像并获取该镜像的类型信息,并根据该镜像的类型搭建镜像更新环境;
[0039]第二模块,用于在第一模块搭建的镜像更新
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1