【技术实现步骤摘要】
升级方法及装置
本申请涉及软件领域,具体而言,涉及一种升级方法及装置。
技术介绍
在云计算环境中,一个数据中心的计算资源通过虚拟化技术切分为大量虚拟机(VirtualMachine,简称为VM,VM是一台服务器上虚拟出来的多个可以运行OS的实例),用户可以在VM中灵活部署自己的应用或者服务,例如,web、社交、游戏、金融等,在这些应用或服务中,有些应用或服务保存着重要的数据,需要较低的数据读写时延,并需要7*24小时不间断服务、以及足够好的可用性和SLA(Service-LevelAgreement,服务等级协议)保障。随着数据中心后台软件的迭代,不断有新功能的加入,以及性能优化、缺陷修复等,因此这些应用或服务也需要频繁的升级。由于VM虚拟机再易用性、可用性、性能、成本等多方面越来越完善,越来越多的用户将应用部署在数据中心里集中管理的VM里,数据中心的后台软件迭代、升级的需求也越来越多。随着数据中心后台软件的迭代,新功能开发、性能优化、缺陷修复等都会需要进行软件升级。这些软件也包括虚拟机磁盘的后端驱动软件,而后端驱动软件位于物理机的内核态,升级这种驱动软件现有的方法主要是停机方式(这种方式成为冷升级):将物理机上的所有VM关机,让所有磁盘对应后端驱动里的对象释放,再卸载后端驱动软件并安装新的驱动软件,最后将所有VM重新启动,VM磁盘基于新的驱动运行,升级完成。这个升级过程需要花费数分钟,停止一台VM可能比较快,在VM较多的情况下,有的VM可能关机慢,将其它VM的停机时间也拖长,对于那些部署了重要业务的VM,web应用可能会长时间不可访问,游戏应用可能会导致 ...
【技术保护点】
一种升级方法,其特征在于,包括:安装新的驱动模块,其中,新的驱动模块用于驱动后端服务,所述后端服务为运行在计算设备上用于接收并处理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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。