升级方法及装置制造方法及图纸

技术编号:17939256 阅读:24 留言:0更新日期:2018-05-15 19:47
本申请公开了一种升级方法及装置。其中,该方法包括:安装新的驱动模块,其中,新的驱动模块用于驱动后端服务,后端服务为运行在计算设备上用于接收并处理IO请求的服务,查找所有的虚拟机磁盘对应的虚拟块设备和虚拟字符设备,其中,虚拟字符设备用于通知存储设备处理IO请求,存储设备用于存储IO请求对应的数据;将查找到的虚拟块设备和虚拟字符设备与新的驱动模块关联;在确定旧的驱动模块处理完成已经接收到的IO请求,并重新启用虚拟块设备和虚拟字符设备之后,使用新的驱动模块替换旧的驱动模块来处理IO请求的替换。通过本申请提高了升级的速度,进而解决了采用冷升级的方式对VM的后端服务进行升级所导致的服务中断的技术问题。

【技术实现步骤摘要】
升级方法及装置
本申请涉及软件领域,具体而言,涉及一种升级方法及装置。
技术介绍
在云计算环境中,一个数据中心的计算资源通过虚拟化技术切分为大量虚拟机(VirtualMachine,简称为VM,VM是一台服务器上虚拟出来的多个可以运行OS的实例),用户可以在VM中灵活部署自己的应用或者服务,例如,web、社交、游戏、金融等,在这些应用或服务中,有些应用或服务保存着重要的数据,需要较低的数据读写时延,并需要7*24小时不间断服务、以及足够好的可用性和SLA(Service-LevelAgreement,服务等级协议)保障。随着数据中心后台软件的迭代,不断有新功能的加入,以及性能优化、缺陷修复等,因此这些应用或服务也需要频繁的升级。由于VM虚拟机再易用性、可用性、性能、成本等多方面越来越完善,越来越多的用户将应用部署在数据中心里集中管理的VM里,数据中心的后台软件迭代、升级的需求也越来越多。随着数据中心后台软件的迭代,新功能开发、性能优化、缺陷修复等都会需要进行软件升级。这些软件也包括虚拟机磁盘的后端驱动软件,而后端驱动软件位于物理机的内核态,升级这种驱动软件现有的方法主要是停机方式(这种方式成为冷升级):将物理机上的所有VM关机,让所有磁盘对应后端驱动里的对象释放,再卸载后端驱动软件并安装新的驱动软件,最后将所有VM重新启动,VM磁盘基于新的驱动运行,升级完成。这个升级过程需要花费数分钟,停止一台VM可能比较快,在VM较多的情况下,有的VM可能关机慢,将其它VM的停机时间也拖长,对于那些部署了重要业务的VM,web应用可能会长时间不可访问,游戏应用可能会导致玩家掉线,严重影响了用户体验,。针对现有技术中冷升级需要关闭VM虚拟机再进行升级,导致升级过程中用户不能访问VM虚拟机的技术问题,目前尚未提出有效的解决方案。
技术实现思路
本申请实施例提供了一种升级方法及装置,以至少解决采用冷升级的方式对VM的后端服务进行升级所导致的服务中断的技术问题。根据本申请实施例的一个方面,提供了一种升级方法,包括:安装新的驱动模块,其中,新的驱动模块用于驱动后端服务,后端服务为运行在计算设备上用于接收并处理IO请求的服务,IO请求为虚拟化平台上的一个或多个虚拟机提交的对虚拟机磁盘进行IO操作的请求,虚拟化平台运行在计算设备上;查找所有的虚拟机磁盘对应的虚拟块设备和虚拟字符设备,其中,虚拟字符设备用于通知存储设备处理IO请求,存储设备用于存储IO请求对应的数据;将查找到的虚拟块设备和虚拟字符设备与新的驱动模块关联,其中,每个查找到的所述虚拟块设备和字符设备停止接收新的IO请求;在确定旧的驱动模块处理完成已经接收到的IO请求,并重新启用所述虚拟块设备和所述虚拟字符设备之后,使用新的驱动模块替换所述旧的驱动模块来处理IO请求的替换。根据本申请实施例的另一个方面,还提供了一种升级装置,包括:安装模块,用于安装新的驱动模块,其中,新的驱动模块用于驱动后端服务,后端服务为运行在计算设备上用于接收并处理IO请求的服务,IO请求为虚拟化平台上的一个或多个虚拟机提交的对虚拟机磁盘进行IO请求,虚拟化平台运行在计算设备上;查找模块,用于查找所有的虚拟机磁盘对应的虚拟块设备和虚拟字符设备,其中,虚拟字符设备用于通知存储设备处理IO请求,存储设备用于存储IO请求对应的数据;关联模块,用于将查找到的虚拟块设备和虚拟字符设备与新的驱动模块关联,其中,每个查找到的虚拟块设备和字符设备停止接收新的IO请求;处理模块,用于在确定旧的驱动模块处理完成已经接收到的IO请求,并重新启用虚拟块设备和虚拟字符设备之后,使用新的驱动模块替换旧的驱动模块来处理IO请求的替换。根据本申请实施例的一个方面,提供了一种升级方法,包括:关闭虚拟机的前端驱动与旧的后端驱动之间的IO链路;在旧的后端驱动处理完成已经接收到的IO请求之后,停用虚拟机的虚拟块设备和虚拟字符设备;安装新的驱动模块,并将新的驱动模块接入虚拟块设备和虚拟字符设备的入口函数,其中,新的驱动模块用于将前端驱动下发的新IO请求转发给后端服务进程;重新启动虚拟块设备和虚拟字符设备,并打开前端驱动与新的驱动模块之间的IO链路,完成旧的后端驱动升级为新的驱动模块。根据本申请实施例的另一个方面,还提供了一种升级装置,包括:关闭模块,用于关闭虚拟机的前端驱动与旧的后端驱动之间的IO链路。停止模块,用于在旧的后端驱动处理完成已经接收到的IO请求之后,停用虚拟机的虚拟块设备和虚拟字符设备。安装模块,用于安装新的驱动模块,并将新的驱动模块接入虚拟块设备和虚拟字符设备的入口函数,其中,新的驱动模块用于将前端驱动下发的新IO请求转发给后端服务进程。驱动模块,用于重新启动虚拟块设备和虚拟字符设备,并打开前端驱动与新的驱动模块之间的IO链路,完成旧的后端驱动升级为新的驱动模块。在本申请实施例中,在安装新的驱动模块之后,该新的驱动的内容就被安装在了计算设备上,从而可以通过查找设备以及复制的方式进行驱动的替换,查找设备以及复制替换不需要消耗太长时间,对VMIO操作的影响较小,提高了升级的速度,进而解决了采用冷升级的方式对VM的后端服务进行升级所导致的服务中断的技术问题。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是根据本申请实施例1的升级方法的计算设备的硬件结构图;图2是根据本申请实施例1的VM磁盘IO处理整体结构示意图;图3是根据本申请实施例1的升级方法的流程图;图4是根据本申请实施例1的升级方法的交互图;图5是根据本申请实施例1的热升级设备的结构示意图;图6是根据本申请实施例1的热升级示意图;图7是根据本申请实施例1的热升级方法的流程图;图8是根据本申请实施例2的升级装置的结构框图;图9是根据本申请实施例3的热升级方法的流程图;图10是根据本申请实施例4的升级装置的结构框图;以及图11是根据本专利技术实施例5的一种计算机终端的结构框图。具体实施方式为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。以下实施例中涉及到的英文缩写的中文含义如下:VM:VMware虚拟机,一台服务器上虚拟出来的多个可以运行OS的实例,可以使用户在一台物理机上同时运行两个或更多Windows、D本文档来自技高网
...
升级方法及装置

【技术保护点】
一种升级方法,其特征在于,包括:安装新的驱动模块,其中,新的驱动模块用于驱动后端服务,所述后端服务为运行在计算设备上用于接收并处理IO请求的服务,所述IO请求为虚拟化平台上的一个或多个虚拟机提交的对虚拟机磁盘进行IO操作的请求,所述虚拟化平台运行在所述计算设备上;查找所有的虚拟机磁盘对应的虚拟块设备和虚拟字符设备,其中,所述虚拟字符设备用于通知存储设备处理IO请求,所述存储设备用于存储所述IO请求对应的数据;将查找到的所述虚拟块设备和所述虚拟字符设备与所述新的驱动模块关联,其中,每个查找到的所述虚拟块设备和所述字符设备停止接收新的IO请求;在确定旧的驱动模块处理完成已经接收到的IO请求,并重新启用所述虚拟块设备和所述虚拟字符设备之后,使用所述新的驱动模块替换所述旧的驱动模块来处理IO请求。

【技术特征摘要】
1.一种升级方法,其特征在于,包括:安装新的驱动模块,其中,新的驱动模块用于驱动后端服务,所述后端服务为运行在计算设备上用于接收并处理IO请求的服务,所述IO请求为虚拟化平台上的一个或多个虚拟机提交的对虚拟机磁盘进行IO操作的请求,所述虚拟化平台运行在所述计算设备上;查找所有的虚拟机磁盘对应的虚拟块设备和虚拟字符设备,其中,所述虚拟字符设备用于通知存储设备处理IO请求,所述存储设备用于存储所述IO请求对应的数据;将查找到的所述虚拟块设备和所述虚拟字符设备与所述新的驱动模块关联,其中,每个查找到的所述虚拟块设备和所述字符设备停止接收新的IO请求;在确定旧的驱动模块处理完成已经接收到的IO请求,并重新启用所述虚拟块设备和所述虚拟字符设备之后,使用所述新的驱动模块替换所述旧的驱动模块来处理IO请求。2.根据权利要求1所述的方法,其特征在于,在使用所述新的驱动模块替换所述旧的驱动模块来处理IO请求之前,所述方法还包括:复制所述新的驱动模块中的函数替换所述旧的驱动模块的函数;复制所述旧的驱动模块中的数据到所述新的驱动模块中,其中,所述数据至少包括:全局变量。3.根据权利要求2所述的方法,其特征在于,复制所述新的驱动模块中的函数替换旧的驱动模块的函数包括:将注册的后端驱动的驱动函数使用所述新的驱动模块中的驱动函数覆盖,所述驱动函数包括以下至少之一:建立连接函数、断开连接函数、事件通知函数。4.根据权利要求2所述的方法,其特征在于,将查找到的所述虚拟块设备和所述虚拟字符设备与所述新的驱动模块关联,包括:获取所述新的驱动模块中的所述虚拟块设备和/或所述虚拟字符设备的入口函数;复制所述新的驱动模块中的驱动入口函数替换所述虚拟块设备和/或所述虚拟字符设备的驱动入口函数。5.根据权利要求4所述的方法,其特征在于,复制所述新的驱动模块中的函数替换旧的驱动模块的函数包括:获取所述新的驱动模块中用来表示所述虚拟块设备结构的文件系统的入口函数;复制所述新的驱动模块中的用来表示所述虚拟块设备结构的文件系统的入口函数,替换所述旧的驱动模块中的所述虚拟块设备对应的入口函数。6.根据权利要求2所述的方法,其特征在于,在复制所述旧的驱动模块中的数据到所述新的驱动模块中之前,所述方法还包括:基于所述新的驱动模块分配新的驱动私有数据替代所述旧的驱动模块的私有数据;复制所述旧的驱动模块中的数据到所述新的驱动模块中包括:复制所述旧的驱动模块中的全局变量到所述新的驱动模块中。7.根据权利要求1所述的方法,其特征在于,对于每个查找到的所述虚拟机磁盘设备停止接收新的IO请求包括:关闭事件中断处理使所述后端服务接收不到所述IO请求。8.根据权利要求1或7所述的方法,其特征在于,确定处理完成所述已经接收到的IO请求包括:在接收到的IO请求处理完成之后,保持所述后端服务为空闲状态;停止所述虚拟块设备和所述虚拟字符设备之后,停止所述后端服务中的内核线程。9.根据权利要求8所述的方法,其特征在于,在复制所述新的驱动模块中的驱动入口函数替换所述虚拟块设备和/或所述虚拟字符设备的驱动入口函数之后,所述方法还包括:启动所述虚拟块设备;根据升级后的后端驱动的函数,建立新的内核线程;启动事件中断处理。10.根据权利要求9所述的方法,其特征在于,当升级所述虚拟机的后端驱动的过程中,或升级所述虚拟机的后端驱动之后,出现异常,则采用所述升级方法将所述旧的驱动模块进行恢复。11.一种升级方法,其特征在于,包括:关闭虚拟机的前端驱动与旧的后端驱动之间的IO链路;在所述旧的后端驱动处理完成已经接收到的IO请求之后,停用所述虚拟机的虚拟块设备和虚拟字符设备;安装新的驱动模块,并将所述新的驱动模块接入所述虚拟块设备和虚拟字符设备的入口函数,其中,所述新的驱动模块用于将所述前端驱动下发的新IO请求转发给后端服务进程;重新启动所述虚拟块设备和虚拟字符设备,并打开所述前端驱动与所述新的驱动模块之间的IO链路,完成所述旧的后端驱动升级为所述新的驱动模块。12.根据权利要求11所述的方法,其特征在于,将所述新的驱动模块接入所述虚拟块设备和虚拟字符设备的入口函数,包括:查找所述新的驱动模块中的符号,使用所述新的驱动模块中的符号替换所述虚拟块设备和虚拟字符设备的驱动入口函数,并使用所述新的驱动模块中的文件系统入口函数替换所述虚拟块设备的文件系统入口函数。13.根据权利要求11所述的方法,其特征在于,在重新启动所述虚拟块设备和虚拟字符设备之前,所述方法还包括:分配所述新的驱动模块的数据结构替换所述旧的后端驱动的数据结构;和/或,将所述旧的后端驱动的全局变量中的数据内容复制到所述新的驱动模块中。14.根据权利要求11至13中任一项...

【专利技术属性】
技术研发人员:田世坤
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1