基于Hypervisor的嵌入式多系统升级方法及计算机可读存储介质与流程

文档序号:21817811发布日期:2020-08-11 21:31阅读:167来源:国知局
本发明涉及计算机
技术领域
:,具体涉及一种基于hypervisor的嵌入式多系统升级方法及计算机可读存储介质。
背景技术
::随着嵌入式系统硬件和软件技术的发展,基于虚拟化技术的多系统应用也越来越多。由于多种客户操作系统同时运行在一个虚拟化平台上,每个客户操作系统都有着不同的业务需求,每种操作系统也都有着适用于自身的系统升级方法。因此,对系统的存储空间进行系统分区的划分方案以及对多系统的升级方案,不仅要从硬件和软件层面对整个系统做好设计,还要充分考虑业务和安全的不同需求,同时,还要在高效利用系统资源的前提下,充分考虑该方案在不同平台进行系统移植的可靠性和对不同客户操作系统之间的兼容性。目前,还没有一款比较完善的基于hypervisor的嵌入式多系统的升级方法的通用解决方案。技术实现要素:本发明的目的在于:提供一种安全、高效且兼容性强的基于hypervisor的嵌入式多系统升级方法。为了达到上述目的,本发明解决技术问题所采用的技术方案如下:一种基于hypervisor的嵌入式多系统升级方法,其包括以下步骤:s1:获取到镜像文件后,升级对象向hypervisor发出升级请求;s2:hypervisor根据预先配置的分区表以及升级对象的目标分区的分区信息,进行升级操作;其中,若所述分区信息表示该目标分区存在备用分区,则将镜像文件写入备用分区,并在校验成功后,将备用分区的slot信息更新为可引导状态;s3:hypervisor更新镜像文件后,将升级结果通过数据通道和控制通道返回至发出相应升级请求的升级对象;s4:升级对象对目标分区进行引导启动,其中,若该升级对象的目标分区存在备用分区,且引导启动成功,则将被升级的目标分区的slot信息为可成功启动状态,而引导启动失败,则继续尝试引动启动,直至可尝试引导次数为零;若可尝试引导次数为零,则将被升级的目标分区的slot信息为不可引动状态,并回滚升级前的有效启动分区进行启动;s5:通过升级对象的界面,显示升级结果。根据一种具体的实施方式,本发明基于hypervisor的嵌入式多系统升级方法中,所述分区表包括bootloader分区、misc分区、hypervisor分区、log分区、recovery分区、虚拟机gpt分区、虚拟机reserved分区、虚拟机gboot分区、虚拟机kernel分区、虚拟机system分区以及虚拟机data分区。进一步地,所述recovery分区用于运行裁剪linux+ramdisk模式的虚拟机,以对其它虚拟机进行升级和故障修复。根据一种具体的实施方式,本发明基于hypervisor的嵌入式多系统升级方法的步骤s1中,根据不同的升级对象,判断是否对镜像文件进行分片;若对镜像文件进行分片,则根据分片情况,循环更新数据通道和控制通道。根据一种具体的实施方式,本发明基于hypervisor的嵌入式多系统升级方法的步骤s2中,在将镜像文件写入该虚拟机的备用分区前,将备用分区的slot信息锁定为不可启动状态。本发明在具体实施的一方面,还提供一种计算机可读存储介质,其上存储有一个或多个程序,该一个或多个程序被一个或多个处理器执行时实现本发明基于hypervisor的嵌入式多系统升级方法。综上所述,与现有技术相比,本发明的有益效果是:本发明基于hypervisor的嵌入式多系统升级方法,hypervisor对升级对象的目标分区进行升级操作时,若该目标分区存在备用分区,则将镜像文件写入备用分区,并在校验成功后,将备用分区的slot信息更新为可引导状态;当hypervisor更新镜像文件后,由升级对象对目标分区进行引导启动,其中,若该目标分区存在备用分区,且引导启动成功,则将该目标分区的slot信息为可成功启动状态,而引导启动失败,则继续尝试引动启动,当可尝试引导次数为零,则回滚升级前的有效启动分区进行启动。因此,本发明能够通过hypervisor升级所有的镜像,而且目标分区通过配置备份分区,即使升级失败也可通过升级前的有效启动分区进行启动,使升级更加安全。附图说明:图1是本发明实施例的系统存储空间分区表;图2是本发明实施例的系统引导启动与升级流程框图;图3是本发明实施例的流程图。具体实施方式下面结合附图及具体实施例对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本
发明内容所实现的技术均属于本发明的范围。本发明基于hypervisor的嵌入式多系统升级方法包含系统存储空间分区划分和多系统升级。其中,如图1所示,本发明系统存储空间划分充分考虑功能划分和主要分区采用a/b分区模式,将系统整个存储空间划分为下面几个主要分区:分区表、bootloader分区(包含a/b两个分区)、misc分区、hypervisor分区(包含a/b两个分区)、虚拟机分区(每个虚拟机单独占用一个分区)、log日志分区,recovery分区(可选)。每个分区从功能角度简单描述如下:分区表:用于存放整个存储空间的分区表;bootloader分区:用于存放系统引导程序,考虑划分a/b分区;misc分区:存储hypervisora/b分区信息,用于hypervisor引导和升级使用;hypervisor分区:存储hypervisorvmm镜像,考虑a/b分区;虚拟机分区:根据实际虚拟机需求划分n个虚拟机分区,每个虚拟机系统对该虚拟机分区用于读写权限;log分区:用于存储系统日志和黑匣子日志等信息;recovery分区:主要用于虚拟机系统都无法启动时,用于升级修复虚拟机系统,本分区采用裁剪linux+ramdisk的方式,作为一个微虚拟机存在,占用存储空间在30mb左右。正常情况下该虚拟机不会启动运行,只有其他虚拟机系统都无法启动的时候通过hypervisor系统命令行启动运行。虚拟机分区:虚拟机系统也充分考虑功能划分和a/b分区模式,每个虚拟机都有自己的分区表。虚拟机存储空间分区中预留固定大小(例如50mb)的分区用于升级相关操作。其中,虚拟机分区表的数量与hypervisor上运行的系统数量相关。具体的,虚拟机gpt分区:用于存放虚拟机分区的子分区表;虚拟机reserved分区:用于存放虚拟机的a/b分区slotinfo信息和环境变量等,同时还在升级过程中用于数据传输介质;虚拟机gboot分区:用于存放虚拟机系统的bootloader程序,考虑a/b分区;虚拟机kernel分区:存放虚拟机系统的内核镜像,考虑a/b分区;虚拟机system分区:存放虚拟机系统的文件系统镜像,考虑a/b分区;虚拟机data分区:虚拟机系统的用户数据分区。如图2所示,本多系统升级方案可以通过hypervisor升级所有的镜像,包括整个存储空间的镜像和单个分区镜像,包括虚拟机分区中的子分区。即无论是通过虚拟机的升级入口1、还是recovery虚拟机的升级入口2,或者是主机的升级入口3,均是通hypervisor升级。其中,如果虚拟机系统都无法启动时候,则需要用到前面描述的recovery分区的虚拟机来发起升级操作进行故障虚拟机系统的修复。如果hypervisor系统本身支持根文件系统和网络等功能则可以忽略recovery分区,直接通过hypervisor来进行故障虚拟机系统的修复。如图3所示,本发明基于hypervisor的嵌入式多系统升级方法包括以下步骤:1、在客户虚拟机系统中通过usb(例如u盘)、网络(有线网络,wifi,4g等)、sd卡或者其他途径获取升级镜像文件;2、获取到升级镜像文件后,从虚拟机系统发起升级操作。需要考虑升级对象、镜像文件大小和数据通道空间大小等因素,来确定是否需要对镜像文件进行分片,根据分片情况,循环更新数据通道和控制通道。3、hypervisor根据升级分区对象和镜像文件进行升级操作和升级文件的校验。如果镜像文件被分片,则需要循环步骤2、3知道完整镜像文件接受完成,并完成镜像文件签名等安全校验;4、hypervisor根据升级目的分区信息和分区表(系统存储空间分区表或者虚拟机分区表)信息,判断目标分区是否存在a/b分区。如果存在a/b分区则跳转到步骤5,否则跳转到分区6;5、升级目标分区存在a/b分区信息,则首先获取该分区的slot信息并判断当前有效分区号和备用分区号,将备用分区的slot信息置为不可启动状态进行锁定。将镜像文件写入目的分区中,如果是镜像文件分片的情况下还有剩余分片未写入则继续跳回步骤3中继续接收剩余镜像文件,并在最后一个分片完成最后校验。镜像文件校验ok并完整写入目标分区后hypervisor更新写入的备用分区号对应slot信息。然后跳转到步骤7;6、升级目标分区不存在a/b分区:如果镜像文件不存在分片,则hypervisor直接校验镜像文件,并更新到目标分区中;7、hypervisor更新镜像文件结束,将升级结果通过数据通道和控制通道返回发起升级操作的虚拟机系统;8、发起升级操作的虚拟机系统,查询到升级结果,通过界面通知用户,并通知用户重启系统。具体的,a/b分区引导和升级主要是基于a/b分区两个slot的信息进行逻辑判断,判断当前有效用于引导的分区,则另一个分区即为备用分区。每个分区信息包含四个有效信息:priority分区优先级信息、bootable可引导启动信息、try_remaing引导尝试次数、successful启动成功信息。分区slot信息的操作可以分为四种:启动引导用于判断当前用于启动的分区号、升级操作用于更新备用分区slot信息、升级后启动成功同步switch备用更新分区信息、升级失败则回滚当前启动分区信息和备用分区信息。本发明在具体实施的一方面,还提供一种可读存储介质,如rom存储设备、移动硬盘、u盘或者光盘等存储器,将一个或多个程序写入存储器中,并一个或多个处理器来执行该存储器中的程序。如此,当该存储器中的程序被处理器执行时实现本发明基于hypervisor的嵌入式多系统升级方法。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1