一种软件更新方法及装置制造方法及图纸

技术编号:14826177 阅读:42 留言:0更新日期:2017-03-16 13:36
本发明专利技术提供了一种软件更新方法及装置,向宿主机本地输入目标版本软件,利用目标版本软件建立第二虚拟机,作为本地的当前版本软件建立的第一虚拟机的迁移接收端,将对应第一虚拟机的数据迁移到第二虚拟机中,中断第一虚拟机,启动第二虚拟机,将第一虚拟机对应的网络流切换到第二虚拟机。本发明专利技术提供的软件更新方法及装置无需生成特定的软件代码补丁或二进制补丁,只需要准备一份目标版本软件,不需要依赖编译器,降低了技术难度。不受限于复杂的计算,能够针对大范围软件代码更新。

【技术实现步骤摘要】

本专利技术涉及计算机软件领域,尤其涉及一种软件更新方法及装置
技术介绍
随着软件的运行,通常需要对软件进行优化升级,然而对于一些重要的系统和程序需要不间断地运行,任何处理的中断都会造成严重的后果,因此软件动态升级的方式被越来越多的使用,从而能够实现在不影响现有软件正常运行的情况下,对软件的部分组件的功能进行更新。现有的软件动态升级的方式有通过热补丁的方式实现,具体包括通过编译单元编译补丁函数,使用加载单元加载补丁函数至操作系统的内存中,查找单元查找补丁函数对应的原函数的地址,修改单元依据地址改变原函数的指令,使得原函数与补丁函数之间的能够实现相互调用,调用单元调用原函数,直接通过原函数跳转执行补丁函数,补丁函数执行完后通过原函数返回。然而,热补丁的方式具有较大局限性,需要通过编译生成特定的补丁函数,对编译器存在依赖,补丁生成也较为复杂。该方法也无法对正在执行的函数进行升级,容易导致升级过程阻塞在某些函数中。现有的软件动态升级的方法还有基于动态插桩的方式实现,即在二进制级而非源码层次上向正在运行的源程序插入关键代码,使得升级不需要依赖特定编译器,基于异步检查点算法能够确保所有线程在动态升级前处于阻塞状态,从而能够一次性更新所有线程并避免新旧版本维护带来的开销,采用二进制重写的方式实现函数间接跳转,能够升级未在执行的待更新函数,利用堆栈重构的方式能够升级正在执行的待更新函数,使得动态升级消除了诸如更新循环体和主函数等带来的无法预计的等待时间。以上动态插桩的方式虽然可以升级正在执行的待更新函数,但该方法要求软件在更新时所有线程都执行到插桩的位置,对于虚拟机而言,很可能发生处理器长时间运行在虚拟机中,而不运行需要升级的宿主机中的软件,从而执行不到插桩的位置,导致软件无法快速升级。其次,插桩的位置随着软件的复杂度增加,难度也在增加,从而无法实现大范围软件代码更新。
技术实现思路
基于上述现有技术中的问题,本专利技术的目的在于提供一种软件更新方法及装置,不需要依赖编译器,技术难度小,能够实现大范围软件代码更新的方法。根据本专利技术的第一个方面,提供一种软件更新方法,包括以下步骤:向本地输入目标版本软件;利用目标版本软件建立一第二虚拟机,作为本地的当前版本软件建立的第一虚拟机的迁移接收端;将对应第一虚拟机的数据迁移到第二虚拟机中;以及中断第一虚拟机,启动第二虚拟机,将第一虚拟机对应的网络流切换到第二虚拟机。优选地,在中断第一虚拟机之前,第一虚拟机运行当前版本软件。优选地,在利用目标版本软件建立一第二虚拟机的步骤之前还包括步骤:判断本地是否有足够建立第二虚拟机的存储空间,若是,则建立第二虚拟机;若否,则结束。优选地,将对应第一虚拟机的数据迁移到第二虚拟机中的步骤包括:确认第一虚拟机中的需要复制的数据;在第一虚拟机工作的同时,将第一虚拟机中的数据复制到第二虚拟机;循环将第一虚拟机中被标记为发生修改的数据复制到第二虚拟机。优选地,中断第一虚拟机,启动第二虚拟机的步骤包括:中断第一虚拟机;将第一虚拟机中最后的被标记为发生修改的数据复制到第二虚拟机;启动第二虚拟机。优选地,通过socket端口复制数据。优选地,第一虚拟机与第二虚拟机运行在本地的内存中。优选地,将对应第一虚拟机的数据迁移到第二虚拟机中的步骤还包括:将本地硬盘中的数据挂载到第二虚拟机。优选地,在中断第一虚拟机之前,获取第一虚拟机的第一虚拟网卡信息和第二虚拟机的第一虚拟网卡信息,启动第二虚拟机后将第一虚拟机对应的网络流通过网络流切换到第二虚拟机。优选地,网络流切换的时间小于1ms。优选地,数据包括第一虚拟机的内存数据和处理器数据、输入输出设备状态数据。根据本专利技术的第二个方面,提供一种软件更新装置,包括:输入模块,输入模块向本地输入目标版本软件;创建模块,创建模块利用目标版本软件建立一第二虚拟机,作为本地的当前版本软件建立的第一虚拟机的迁移接收端;迁移模块,迁移模块将对应第一虚拟机的数据迁移到第二虚拟机中;切换模块,切换模块中断第一虚拟机,启动第二虚拟机,将第一虚拟机对应的网络流切换到第二虚拟机。本专利技术通过虚拟机迁移的方法实现目标版本软件更新,由于第二虚拟机是通过目标版本软件创建的,因此当第二虚拟机取代第一虚拟机处理外部请求时,软件就自然地从当前版本软件升级为了目标版本软件,从而无需生成特定的软件代码补丁或二进制补丁,只需要准备一份目标版本软件。因此本专利技术的软件更新方法不需要依赖编译器,避免了生成补丁的步骤,降低了技术难度。由于不受限于复杂的计算,因此能够针对大范围软件代码更新。不需要为不同软件生成不同更新方案,因此具有通用性。通过第一虚拟机与第二虚拟机间的迁移采用动态迁移的方式,保证了对于外部请求的正常响应。第一虚拟机与第二虚拟机运行在同一宿主机的内存中,虚拟机动态迁移时,仅需要内存数据迁移,从而软件更新速度快。整体的更新方法使得对于外部请求的中断时间很短,从而实现接近无损的软件更新过程。附图说明以下结合附图和具体实施例对本专利技术的技术方案进行详细的说明,以使本专利技术的特性和优点更为明显。图1为本专利技术的宿主机的一个实例的结构示意图;图2为本专利技术的软件更新方法的一个实例的流程图;图3为图2中的步骤S105以及步骤S106的详细流程图;图4为本专利技术的软件更新装置的一个实例的模块示意图。具体实施方式以下将对本专利技术的实施例给出详细的说明。尽管本专利技术将结合一些具体实施方式进行阐述和说明,但需要注意的是本专利技术并不仅仅只局限于这些实施方式。相反,对本专利技术进行的修改或者等同替换,均应涵盖在本专利技术的权利要求范围当中。一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。本专利技术通过虚拟机迁移的方法实现宿主机中的软件更新,本专利技术所提供软件更新方法以及装置适用于宿主机-虚拟机下的虚拟环境,不适用于普通软件的动态升级。图1为本专利技术的宿主机的一个实例的结构示意图。如图1所示,宿主机101包括处理器102、内存103以及硬盘104。当前版本软件301存储在宿主机101的硬盘104中,当前版本软件301即是需要更新的软件。在其他实施例中,当前版本软件301也能存储在宿主机101的其他存储设备中。第一虚拟机201通过当前版本软件301运行在宿主机101的内存103中。目标版本软件302存储同样在宿主机101的硬盘104中。本专利技术所采用的软件更新方法是在同一宿主机101的本地完成,从而不需要进行虚拟机远程热迁移,加快了软件更新速度。第二虚拟机202通过目标版本软件302在宿主机101的内存103中被创建。也就是说,第一虚拟机201与第二虚拟机202运行在同一宿主机101的内存中,这样的设置使得虚拟机在动态迁移时,仅需要内存数据迁移,从而有效缩短动态迁移时间,帮助实现接近无损的软件更新过程。需要注意的是,第一虚拟机201与第二虚拟机202虽然运行在同一宿主机101的内存中,但为了避免配置冲突两者并不是同时启动。下面具体介绍本专利技术所提供软件更新方法。图2为本文档来自技高网
...
一种软件更新方法及装置

【技术保护点】
一种软件更新方法,其特征在于,包括以下步骤:向本地输入目标版本软件;利用所述目标版本软件建立一第二虚拟机,作为本地的当前版本软件建立的第一虚拟机的迁移接收端;将对应所述第一虚拟机的数据迁移到所述第二虚拟机中;以及中断所述第一虚拟机,启动所述第二虚拟机,将所述第一虚拟机对应的网络流切换到所述第二虚拟机。

【技术特征摘要】
1.一种软件更新方法,其特征在于,包括以下步骤:向本地输入目标版本软件;利用所述目标版本软件建立一第二虚拟机,作为本地的当前版本软件建立的第一虚拟机的迁移接收端;将对应所述第一虚拟机的数据迁移到所述第二虚拟机中;以及中断所述第一虚拟机,启动所述第二虚拟机,将所述第一虚拟机对应的网络流切换到所述第二虚拟机。2.如权利要求1所述的软件更新方法,其特征在于,在中断所述第一虚拟机之前,所述第一虚拟机运行当前版本软件。3.如权利要求1所述的软件更新方法,其特征在于,在利用所述目标版本软件建立一第二虚拟机的步骤之前还包括步骤:判断本地是否有足够建立所述第二虚拟机的存储空间,若是,则建立所述第二虚拟机;若否,则结束。4.如权利要求1所述的软件更新方法,其特征在于,将对应所述第一虚拟机的数据迁移到所述第二虚拟机中的步骤包括:确认所述第一虚拟机中需要复制的数据;在所述第一虚拟机工作的同时,将所述第一虚拟机中的数据复制到所述第二虚拟机;循环将所述第一虚拟机中被标记为发生修改的数据复制到所述第二虚拟机。5.如权利要求4所述的软件更新方法,其特征在于,所述中断所述第一虚拟机,启动所述第二虚拟机的步骤包括:中断所述第一虚拟机;将第一虚拟机中最后的被标记为发生修改的数据复制到所述第二虚拟机;启动所述第二虚拟机。6.如权利要求4或5所述...

【专利技术属性】
技术研发人员:宋翔杨伟郑豪
申请(专利权)人:上海优刻得信息科技有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1