版本切换方法及装置的制作方法

文档序号:6338603阅读:110来源:国知局

专利名称::版本切换方法及装置的制作方法
技术领域
:本发明涉及通信领域,具体而言,涉及一种版本切换方法及装置。
背景技术
:在产品的开发、测试、以及维护阶段,我们经常会花大量的时间来等待版本启动。作为软件开发人员,有时会遇到其他模块的故障导致版本启动失败,从而影响自己模块的功能测试;而对于测试人员,有时可能需要在多个版本之间频繁切换,在测试设备不足的情况下就要花大量的时间等待版本启动;当产品投放市场之后,有时需要为其升级版本,但是由于种种原因存在升级失败的风险,而升级失败后又必须回退版本,频繁的等待严重影响用户体验。针对以上问题,传统的方法是通过优化启动流程,去掉冗余设备的初始化,这种方法虽然在一定程度上可以在版本切换时缩短版本启动时间,但是减少的时间相对有限,可谓治标不治本,依然无法有效解决版本切换过程时间长,用户使用体验低的问题。
发明内容本发明的主要目的在于提供一种版本切换方法及装置,以至少解决上述版本切换过程时间长,用户使用体验低的问题。根据本发明的一个方面,提供了一种版本切换方法,包括使用半虚拟化平台生成版本快照,其中,一个版本快照对应于一个版本;在需要加载所述版本时,使用版本快照恢复所述版本。根据本发明的另一方面,提供了一种版本切换装置,包括快照生成模块,用于使用半虚拟化平台生成版本快照,其中,一个版本快照对应于一个版本;快照恢复模块,用于在需要加载所述版本时,使用版本快照恢复所述版本。通过本发明,采用半虚拟化平台,充分利用半虚拟化平台的快照生成和快照恢复功能,使得在版本切换时,可以根据事先保存的,与该版本对应的版本快照,迅速恢复该版本以运行,解决了现有技术版本切换过程时间长,用户使用体验低的问题,进而达到了缩短版本切换时间,提高用户使用体验的效果。此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是根据本发明实施例一的一种版本切换方法的步骤流程图;图2是根据本发明实施例二的一种版本切换方法的步骤流程图;图3是图2所示实施例中的版本切换过程示意图4是图2所示实施例中的I/O通信保存工作原理图;图5是图2所示实施例中的空白内存页检查示意图;图6是根据本发明实施例三的一种版本切换过程中生成版本快照的步骤流程图;图7是根据本发明实施例三的一种版本切换过程中版本恢复的步骤流程图;图8是根据本发明实施例四的一种版本切换装置的结构框图。具体实施例方式下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。参照图1,示出了根据本发明实施例一的一种版本切换方法的步骤流程图,包括以下步骤步骤S102使用半虚拟化平台生成版本快照;其中,一个版本快照对应于一个版本。步骤S104:在需要加载版本时,使用版本快照恢复该版本。半虚拟化平台,如Xen提供的半虚拟化平台,是通过对操作系统进行隔离和封装,衍生出一种被称为虚拟机迁移的技术来实现的,迁移技术包括两个阶段快照生成和快照恢复。使用半虚拟化平台可以生成一个或多个与版本文件对应的版本快照,在需要恢复到某个版本时,可以利用事前生成的版本快照,快速恢复到所需要的版本。当需要加载版本时,如系统中存在多个版本,需要在版本之间进行切换,则在由当前版本切换到另外的版本时,可以使用已存在的另外的版本的版本快照恢复该另外的版本;或者,当版本升级失败,需要回退到升级前的版本时,也可以使用升级前版本的版本快照恢复该升级前版本。当然,本领域技术人员应当明了,任意其它需要加载版本的情况下,都可以根据本实施例,使用版本快照恢复版本,本发明对此不作限制。现有技术中,在版本切换时,通过优化启动流程,去掉冗余设备的初始化,以缩短版本启动时间,达到快速版本切换的目的,但是减少的时间相对有限,无法有效解决版本切换过程时间长,用户使用体验低的问题。通过本实施例,采用半虚拟化平台,充分利用半虚拟化平台的快照生成和快照恢复功能,使得在版本切换时,可以根据事先保存的,与该版本对应的版本快照,迅速恢复该版本以运行,解决了现有技术版本切换过程时间长,用户使用体验低的问题,进而达到了缩短版本切换时间,提高用户使用体验的效果。参照图2,示出了根据本发明实施例二的一种版本切换方法的步骤流程图。本实施例中,半虚拟化平台采用Xen半虚拟化平台,整个版本切换过程可分为镜像保存与镜像恢复两个阶段,镜像保存阶段生成与版本相对应的版本快照,镜像恢复阶段使用生成的版本快照快速恢复版本文件。其中,如图3所示,镜像保存阶段可分为操作系统内存dump(保存)、客户机操作系统1/0(输入/输出)通信保存,优选的,还可以包括非内存脏页压缩。镜像恢复阶段可以分为操作系统内存恢复、客户机操作系统I/O通信恢复,优选的,还可以包括非内存脏页释放。本实施例的版本切换方法包括以下步骤步骤S202:客户机操作系统镜像保存。具体地,包括步骤S2022客户机操作系统内存保存;在镜像保存阶段中,操作系统内存的dump操作主要是利用Xen虚拟机管理器提供的save-restore机制来实现,该部分属于Xen的基本功能。步骤S2024客户机操作系统I/O通信保存;Xen虚拟机管理器已经提供了虚拟机迁移的功能实现,但其与外界的交互信息却无法被保存,而在Xen的半虚拟化模型下非特权域,即客户操作系统,与外界的接口仅仅是由特权域提供的后端驱动程序,因此在保存过程中存在的不确定因素均来自于前后端驱动程序中未处理的数据以及事件通道信号。因此,在现有的客户机操作系统I/O通信保存中,因不能保存与未决中断事件相关的信息,因而在版本恢复后,不能够保障版本的平滑运行,继续保存时的业务处理。为此,本实施例中,如图4所示,在客户机操作系统I/O通信保存时,在宿主操作系统的各个后端驱动程序中添加HOOK程序,该程序的功能在于当客户机操作系统使用其自身前段驱动与宿主操作系统的后端驱动程序通信时在Xen中注册该I/O环的ID(标识),而后依次遍历各个已使用的I/O环来获取当前对应要保存的目标客户机操作系统中未决中断事件的数据;与此同时,还需在Xen的事件通道驱动中安插一个HOOK来遍历返回I/O环中各个未决中断事件所对应的中断消息号。通过上述操作,镜像恢复后版本可平滑运行,继续保存时的业务处理。需要说明的是,即使不进行上述保存未决中断事件的信息的操作,依然可以实现版本的快速切换,但通过获取未决中断事件的相关信息,并根据这些信息进行版本恢复,提供了更好的版本切换效果,为用户提供了更好的使用体验。步骤S2026客户机操作系统非内存脏页压缩。经过大量实验数据标明,Xen的快照方式所生成的操作系统镜像中存在大量的内存空洞,将这部分内存空洞压缩可以大幅度减小镜像的大小,而对于恢复时候的速度影响微乎其微。为了进一步提高版本切换效果,本实施例中采用了非内存脏页压缩,非内存脏页压缩是通过遍历Xen内存中的framejable表来找出目标客户机操作系统所占用的所有内存页面的索引号进而找到对应页面的页表结构,检查其dirty位是否被置位来实现的,如图5所示。根据检查结果,将查找的客户机操作系统所占用的所有内存页面中,非脏页的页面对应的伪物理地址加入到空白内存页链表中,并将该空白内存页链表存储于宿主操作系统。步骤S204:客户机操作系统镜像恢复。镜像恢复,即版本加载阶段,作为镜像保存的逆过程可分为三个阶段,包括步骤S2042操作系统内存恢复;客户机操作系统内存恢复借用Xen提供的restore操作来实现。步骤S2044非内存脏页释放;非内存脏页释放先通过Xen的气球驱动程序来为客户机操作系统申请与保存的空白页面等大的空白内存,然后遍历在镜像保存阶段生成的空白内存页面链表来修改客户机操作系统的P2M(物理地址到机器地址)表以达到客户机操作系统伪物理页面重映射的目的,同时依据P2M表来修改Xen的M2P(机器地址到物理地址)表;最后修改Xen的frame_table表完成客户机空白页面恢复的操作。通过非内存脏页压缩和释放,使得保存操作生成的镜像占用存储空间较小,在系统中可以同时存有一个版本的多个运行镜像,以备不同目的的恢复之用。步骤S2046客户机操作系统I/O通信恢复。客户机操作系统I/O通信恢复通过遍历其与宿主操作系统之间的已存在的I/O环,在其中插入已保存的中断事件数据,以及修改对应以上中断事件的事件通道位来触发对应中断事件,激活客户机操作系统继续运行。通过本实施例的基于半虚拟化技术的版本加载方法可以使版本启动时间大大缩短,经实验验证最快时间约2秒左右。以下结合图6和图7,分别对本发明实施例三的版本切换方法的版本快照生成和版本恢复进行说明。其中,图6示出了版本切换过程中的版本快照生成过程,图7示出了使用图6生成的版本快照进行版本恢复的过程。参照图6,示出了根据本发明实施例三的一种版本切换过程中生成版本快照的步骤流程图,包括以下步骤步骤S602在宿主操作系统中调用“xmsavexxx.xen”命令启动客户机操作系统内存dump操作。步骤S604:遍历frame_table数组,如果页面被分配给客户机操作系统且domid匹配,则执行步骤S606;否则,执行步骤S610。步骤S606:由物理页面号查找对应页面查找页目录表进而找到该页面的页表项,页表项中的第7位即为dirty标志。步骤S608如果步骤S606的页面为dirty则忽略;否则,依据物理页面号查询Xen的M2P表,记录伪物理地址,加入到空白内存页链表。步骤S610若frame_table遍历完毕则继续执行步骤S612;否则,跳转到步骤S604。步骤S612:拷贝步骤S610生成的空白内存页链表到宿主操作系统空间,写入文件。步骤S614:通过hypercall进入Xen空间,遍历I/O环HOOK程序生成的I/O环ID链表,保存其上的数据至缓存区。步骤S616:依据每个I/O环结构取出事件通道中的下标,进行访问,保存其状态至缓存区。步骤S618:通过COpy_to_gueSt调用,拷贝缓存区中数据至宿主操作系统空间并写入文件。经过以上步骤,生成的镜像文件中由三部分主成内存脏页信息dump文件、空白内存页表信息、以及I/O环数据备份。参照图7,示出了根据本发明实施例三的一种版本切换过程中版本恢复的步骤流程图,包括以下步骤步骤S702:调用“xmrestorexxx.xen”命令,恢复操作系统脏页内存。步骤S704:解析空白内存页表文件,拷贝空白内存页伪物理地址数据至Xen空间内。步骤S706调用气球驱动程序为已恢复的客户机操作系统增量分配空白内存空间。步骤S708:遍历客户机操作系统的P2M表,插入空白页伪地址表项,填入空白内存地址。步骤S710:判断客户机操作系统空白页伪物理地址是否已经全部填入,若是,则继续步骤S712;否则,转至步骤S706。步骤S712依据伪物理地址查询其对应的真实物理地址,修改Xen的M2P表。步骤S714:判断伪物理地址是否遍历完毕,若是,则继续步骤S716;否则,跳转至步骤S712。步骤S716遍历Xen的frame_table表的inuse和free两个链表,将分配的空白内存页从free链表中移入inuse链表。步骤S718解析I/O环数据文件,拷贝数据至Xen空间(copy_from_guest)。步骤S720:依据保存阶段生成的I/O环ID链表,在已有的客户机操作系统的I/O环中填入未决中断事件数据。步骤S722:查询该I/O环对应的事件通道消息号,恢复虚拟中断消息状态位。经过以上步骤,被恢复的客户机操作系统可以平滑运行。参照图8,示出了根据本发明实施例四的一种版本切换装置的结构框图,包括快照生成模块802,用于使用半虚拟化平台生成版本快照,其中,一个版本快照对应于一个版本;快照恢复模块804,用于在需要加载版本时,使用版本快照恢复该版本。优选的,半虚拟化平台为Xen半虚拟化平台。优选的,快照生成模块802包括内存保存模块,用于对客户机操作系统的内存进行保存,其中,半虚拟化平台提供用于运行版本快照的客户机操作系统;通信保存模块,用于对客户机操作系统的I/O通信进行保存,包括客户机操作系统使用其自身的前端驱动与宿主操作系统的后端驱动在通信时注册I/O环的ID;依次遍历各个已经使用的I/O环获取客户机操作系统中未决中断事件的数据并保存;并且获取各个未决中断事件所对应的中断消息号;快照恢复模块804包括内存恢复模块,用于恢复客户机操作系统的内存;通信恢复模块,用于恢复客户机操作系统的I/O通信,包括遍历客户机操作系统和宿主操作系统之间已存在的I/O环,插入已保存的未决中断事件数据;修改对应于各个未决中断事件的事件通道位以触发对应的中断事件。优选的,本实施例的版本切换装置使用半虚拟化平台提供的保存-恢复(save-restore)机制实现客户机操作系统的内存的保存和恢复。优选的,快照生成模块802还包括脏页压缩模块,用于对客户机操作系统的非内存脏页进行压缩;快照恢复模块804还包括脏页恢复模块,用于恢复客户机操作系统的非内存脏页。优选的,脏页压缩模块,用于查找客户机操作系统所占用的所有内存页面,将非脏页的页面对应的伪物理地址加入到空白内存页链表,并将空白内存页链表存储于宿主操作系统;脏页恢复模块,用于为已恢复的客户机操作系统增量分配空白内存空间,遍历客户机操作系统的P2M表,插入空白页伪地址表项,并将之前保存的伪物理地址填入到空白伪地址表项中,查找伪物理地址对应的真实物理地址,修改半虚拟化平台的M2P表。需要说明的是,以上多个实施例均以Xen半虚拟化平台为例对本发明作以说明,但不限于此,本领域技术人员可以参照上述实施例,应用其它与Xen类似的半虚拟化平台实现本发明,本发明对此不作限制。从以上的描述中,可以看出,本发明提供了一种属于嵌入式领域,基于半虚拟化技术的网络设备的版本快速保存与加载方法,通过本发明,实现了快速版本切换;保存操作生成的镜像占用存储空间较小,可以在系统中同时存有一个版本的多个运行镜像,以备不同目的的恢复之用;镜像恢复后可平滑运行,继续保存时的业务处理。。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求1.一种版本切换方法,其特征在于,包括使用半虚拟化平台生成版本快照,其中,一个所述版本快照对应于一个版本;在需要加载所述版本时,使用所述版本快照恢复所述版本。2.根据权利要求1所述的方法,其特征在于,所述半虚拟化平台为Xen半虚拟化平台。3.根据权利要求1或2所述的方法,其特征在于,所述使用半虚拟化平台生成版本快照包括对客户机操作系统的内存进行保存,其中,所述半虚拟化平台提供用于运行所述版本快照的所述客户机操作系统;对所述客户机操作系统的输入/输出I/O通信进行保存;所述使用版本快照恢复所述版本包括恢复所述客户机操作系统的内存;恢复所述客户机操作系统的I/O通信。4.根据权利要求3所述的方法,其特征在于,使用所述半虚拟化平台提供的保存与恢复save-restore机制实现所述客户机操作系统的内存的保存和恢复。5.根据权利要求3所述的方法,其特征在于,对所述客户机操作系统的I/O通信进行保存包括所述客户机操作系统使用其自身的前端驱动与宿主操作系统的后端驱动在通信时注册I/O环的ID;依次遍历各个已经使用的I/O环获取所述客户机操作系统中未决中断事件的数据并保存;并且获取各个所述未决中断事件所对应的中断消息号;恢复所述客户机操作系统的I/O通信包括遍历所述客户机操作系统和所述宿主操作系统之间已存在的I/O环,插入已保存的所述未决中断事件数据;修改对应于各个所述未决中断事件的事件通道位以触发对应的中断事件。6.根据权利要求3所述的方法,其特征在于,所述使用半虚拟化平台生成版本快照还包括对所述客户机操作系统的非内存脏页进行压缩;所述使用所述版本快照恢复所述版本包括恢复所述客户机操作系统的非内存脏页。7.根据权利要求6所述的方法,其特征在于,对所述客户机操作系统的非内存脏页进行压缩包括查找所述客户机操作系统所占用的所有内存页面,将非脏页的页面对应的伪物理地址加入到空白内存页链表,并将所述空白内存页链表存储于所述宿主操作系统;恢复所述客户机操作系统的非内存脏页包括为已恢复的所述客户机操作系统增量分配空白内存空间,遍历所述客户机操作系统的物理地址到机器地址P2M表,插入空白页伪地址表项,并将之前保存的伪物理地址填入到所述空白伪地址表项中,查找所述伪物理地址对应的真实物理地址,修改所述半虚拟化平台的机器地址到物理地址M2P表。8.—种版本切换装置,其特征在于,包括快照生成模块,用于使用半虚拟化平台生成版本快照,其中,一个所述版本快照对应于一个版本;快照恢复模块,用于在需要加载所述版本时,使用所述版本快照恢复所述版本。9.根据权利要求8所述的装置,其特征在于,所述半虚拟化平台为Xen半虚拟化平台;所述快照生成模块包括内存保存模块,用于对客户机操作系统的内存进行保存,其中,所述半虚拟化平台提供用于运行所述版本快照的所述客户机操作系统;通信保存模块,用于对所述客户机操作系统的I/O通信进行保存,包括所述客户机操作系统使用其自身的前端驱动与宿主操作系统的后端驱动在通信时注册I/O环的ID;依次遍历各个已经使用的I/O环获取所述客户机操作系统中未决中断事件的数据并保存;并且获取各个所述未决中断事件所对应的中断消息号;所述快照恢复模块包括内存恢复模块,用于恢复所述客户机操作系统的内存;通信恢复模块,用于恢复所述客户机操作系统的I/O通信,包括遍历所述客户机操作系统和所述宿主操作系统之间已存在的I/O环,插入已保存的所述未决中断事件数据;修改对应于各个所述未决中断事件的事件通道位以触发对应的中断事件。10.根据权利要求8或9所述的装置,其特征在于,所述快照生成模块还包括脏页压缩模块,用于对所述客户机操作系统的非内存脏页进行压缩;所述快照恢复模块还包括脏页恢复模块,用于恢复所述客户机操作系统的非内存脏页。全文摘要本发明公开了一种版本切换方法及装置,其中,版本切换方法包括使用半虚拟化平台生成版本快照,其中,一个版本快照对应于一个版本;在需要加载所述版本时,使用版本快照恢复所述版本。通过本发明,采用半虚拟化平台,在版本切换时,可以根据事先保存的,与该版本对应的版本快照,迅速恢复该版本以运行,解决了现有技术版本切换过程时间长,用户使用体验低的问题,进而达到了缩短版本切换时间,提高用户使用体验的效果。文档编号G06F9/44GK102023863SQ201010587479公开日2011年4月20日申请日期2010年12月13日优先权日2010年12月13日发明者崔涛申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1