本发明涉及计算机技术领域,具体涉及一种基于hypervisor的多系统升级方法。
背景技术:
目前虽然各类操作系统均提供了自身的升级方案,尚无基于hypervisor的多客户系统的通用升级方案。
由于虚拟机系统可以运行多种客户操作系统,每种操作系统都有自己的升级方案,这些升级方案之间的差异很大,不能统一到单一升级方案上来。另外,为了减少现有操作系统移植到hypervisor的工作量,hypervisor上各客户操作系统需要兼容现有的升级方案或基于现有的升级方案做少量的自定义。多种系统的运行,需要对系统分区进行统一分配和管理,提高存储空间的利用率。hypervisor作为基础平台,其自身的升级也必须纳入考虑,同时安全和多数据源需求也必须统一考虑。
技术实现要素:
本发明针对现有技术中存在的技术问题,提供一种基于hypervisor的多系统通用升级方法,在系统升级过程中,统一规划存储空间的同时,采用了网络、usb传输、数据签名等技术,并通过数据回滚保证了升级过程的安全、可靠。
本发明解决上述技术问题的技术方案如下:
一种基于hypervisor的多系统升级方法,包括以下步骤:
步骤1,对基于hypervisor的系统的存储进行统一规划,包括管理分区、hypervisor分区、客户操作系统分区,并获取升级数据包;
步骤2,判断需要升级的分区,若为hypervisor分区,则执行步骤3,否则执行步骤4;
步骤3,bootloader提取hypervisor分区的待升级内容并打包生成历史备份,将升级数据包的内容写入待升级分区,若hypervisor可正确引导则证明升级完成,并生成升级成功校验码,写入管理分区,否则管理分区利用历史备份进行恢复操作;
步骤4,hypervisor提取现有客户操作系统分区的待升级内容,打包并生成历史备份,将升级数据包的内容写入待升级分区,若客户操作系统可正确引导,则证明升级完成并生成升级成功校验码,写入管理分区,否则由hypervisor利用历史备份进行恢复操作。
进一步,所述的获取升级数据包,包括,根据升级触发源的不同,选择不同的升级数据包获取方式:
若升级触发源为用户触发,则提示用户指定升级数据包位置;若升级触发源为联机自动触发,则确定升级数据包的下载源;
根据升级数据包位置或下载源,拷贝或下载升级数据包至管理分区。
进一步,所述步骤1和所述步骤2之间还包括,对升级数据包进行签名校验,若校验通过,则在管理分区中,设置升级标记、升级类型以及升级数据包位置信息,否则退出升级过程。
进一步,步骤2中,所述的判断需要升级的分区,具体为根据管理分区中所设置的升级类型判断需要升级的分区。
进一步,步骤3中,bootloader提取hypervisor分区的待升级内容之前,还包括:
检查管理分区的升级标记及现有分区内容是否可以正确引导,如果升级标记置位且现有分区内容可以正确引导,说明存在升级需求,则提取hypervisor分区的待升级内容并打包生成历史备份,存入管理分区。
进一步,在打包生成历史备份时,还生成包校验码,所述包校验码与所述升级成功校验码一致。
进一步,所述hypervisor分区或所述客户操作系统分区升级成功后,还包括:清除管理分区中的历史备份和升级数据包,同时清除升级标记。
进一步,所述hypervisor分区或所述客户操作系统分区在利用历史备份进行恢复操作后:
bootloader对hypervisor分区进行引导,或hypervisor对客户操作系统分区进行引导;
引导成功则进行日志记录,并清除管理分区的相关信息;所述相关信息包括升级标记、升级类型以及升级数据包以及历史备份数据。。
本发明的有益效果是:本发明提供了一种安全通用的基于hypervisor的多系统升级方案,在兼容现有客户操作系统升级方案的同时,提供可靠、安全、高效、多数据源的升级方法。
附图说明
图1为本发明实施例提供的一种基于hypervisor的多系统升级方法流程图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,本发明实施例提供的一种基于hypervisor的多系统升级方法。该方法具体步骤如下:
1、对基于hypervisor的系统的存储进行统一规划,包括管理分区、hypervisor分区、客户操作系统分区(数量和大小)
2、获取升级数据包,根据升级触发源的不同,选择不同的升级数据包获取方式:
若升级触发源为用户触发,则提示用户指定升级数据包位置;若升级触发源为联机自动触发,则确定升级数据包的下载源;
根据升级数据包位置或下载源,拷贝或下载升级数据包至管理分区。
3、对升级数据包进行签名校验,若校验通过,则在管理分区中,设置升级标记、升级类型以及升级数据包位置信息,否则退出升级过程。
4、hypervisor的分区及升级过程:
1)hypervisor的升级由bootloader(存在专用flash中)负责。
2)bootloader引导过程中检查管理分区的升级标记及现有分区内容是否可以正确引导。如果升级标记置位且现有分区内容可以正确引导,说明存在升级需求,提取hypervisor待升级分区的内容,并打包。生成包校验码与上一次成功升级的校验码进行对比,一致,继续进行升级过程。
3)根据升级包要求,将升级包内容写入相应分区。
4)开始引导hypervisor,成功引导后,hypervisor记录现有hypervisor分区内容可以正确引导的信息(即升级成功校验码)到管理分区,清除管理分区提取的相关备份包和升级包,清除升级标记。
5)如果升级失败,bootloader在重新引导hypervisor时,检查到升级标记,但无升级成功引导信息标记。bootloader开始恢复操作,恢复完成后,开始引导系统,成功后记录并清除管理分区的相关信息。
5、客户操作系统的升级:
1)客户操作系统的升级由hypervisor负责。
2)hypervisor启动后,自动检测管理分区,如果检测到客户操作系统升级需求,进入升级过程。
3)hypervisor提取现有客户分区的内存,打包并生成校验码,与上次成功升级的校验码进行对比,一致,继续升级过程。
4)根据升级包要求,将升级包内容写入相应分区。
5)hypervisor引导客户操作系统,引导成功后,客户操作系统记录现有客户操作系统分区内容可以正确引导的信息(即升级成功校验码)到管理分区,清除管理分区提取的相关备份包和升级包,清除升级标记。
6)如果升级失败,hypervisor在重新引导客操作系统时,检测到升级标记,但无升级成功引导信息标记。hypervisor进行恢复操作,恢复完成后,开始引导系统,成功后记录并清除管理分区的相关信息。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。