软件包回滚方法、装置、电子设备、存储介质和程序产品与流程

摘要: 本公开涉及操作系统领域,尤其涉及一种软件包回滚方法、装置、电子设备、存储介质和程序产品。背景技术:1、在rhel(redhatenterpriselinux,红...
软件包回滚方法、装置、电子设备、存储介质和程序产品与流程

本公开涉及操作系统领域,尤其涉及一种软件包回滚方法、装置、电子设备、存储介质和程序产品。

背景技术:

1、在rhel(red hat enterprise linux,红帽企业linux)系linux系统中,软件包升级(如使用dnf/yum)可能引入兼容性问题、依赖冲突或服务异常,导致业务中断。一旦升级失败,管理员通常需要手动卸载或降级软件包,过程繁琐且难以保证系统状态一致性。

2、为解决该问题,相关技术主要采用如下三种方式实现软件回滚。

3、第一种方式是dnf/yum历史回滚。该方式基于系统记录的事务历史,通过撤销单个事务或回滚该事务之后的所有更改,将软件包状态恢复到之前某个成功事务完成时的状态。但该方式不支持降级到任意旧版本(red hat官方明确声明不支持将系统软件包降级)。

4、第二种方式是btrfs(b-tree file system,一个现代写时复制文件系统)快照事务性更新。该方式在应用更新前先为根文件系统创建一个新的btrfs快照、在该快照内完成全部更新,成功后将其设为下次启动的默认快照,失败则丢弃快照并在重启检测到问题时自动回滚到上一个默认快照。但该方式依赖btrfs文件系统,rhel默认采用的是xfs(extended file system,扩展文件系统),无法直接复用。

5、第三种方式是全系统lvm(logical volume manager,逻辑卷管理)快照回滚。该方式可适用于xfs,在升级前为原系统创建并登记一个lvm快照启动项,需要回退时可通过该快照启动项直接引导回原始系统的完整状态。但该方式主要面向大版本升级,粒度粗、需重启、无法保留升级后的增量数据。

6、因此,相关技术难以对rhel系linux系统采用的默认文件系统进行灵活的软件回滚。

技术实现思路

1、本公开提供一种软件包回滚方法、装置、电子设备、存储介质和程序产品,以至少解决相关技术对rhel系linux系统采用的默认文件系统进行灵活的软件回滚的问题。

2、根据本公开实施例的第一方面,提供一种软件包回滚方法,包括:响应于完成目标软件包的升级,获取系统的软硬件性能信息;按照预设数量的健康评估维度,对所述软硬件性能信息进行健康评估,得到每个健康评估维度的健康评估值,其中,所述预设数量是大于1的整数;在所述健康评估值满足第一预设条件的情况下,根据所述健康评估值,从多个失败等级中确定目标失败等级,其中,所述第一预设条件用于表示所述目标软件包升级失败;确定与所述目标失败等级相对应的目标回滚方案,其中,每个失败等级配置有相对应的回滚方案,最高失败等级对应的回滚方案包括回滚全文件系统,非最高失败等级对应的回滚方案包括回滚部分文件;对所述目标软件包执行所述目标回滚方案。

3、可选地,所述按照预设数量的健康评估维度,对所述软硬件性能信息进行健康评估,得到每个健康评估维度的健康评估值,包括:针对每个健康评估维度,获取所述软硬件性能信息中与该健康评估维度相对应的性能参数值;根据该健康评估维度的预设参数区间和获取的性能参数值,确定该健康评估维度的健康评估值。

4、可选地,所述预设数量的健康评估维度包括以下至少之一:系统负载、内存使用率、磁盘输入/输出、关键服务状态、应用日志错误率。

5、可选地,所述根据所述健康评估值,从多个失败等级中确定目标失败等级,包括:基于多个失败类型的预设匹配规则,将所述多个失败类型中与所述健康评估值相匹配的失败类型,确定为目标失败类型,其中,所述预设匹配规则用于描述失败类型与健康评估值的对应关系,每个失败类型具有一个唯一对应的失败等级;基于所述目标失败类型对应的失败等级,确定所述目标失败等级。

6、可选地,所述多个失败类型具有不同的优先级,每个失败等级对应至少一个失败类型,每个失败等级的级别与该失败等级对应的失败类型的优先级正相关,其中,所述基于多个失败类型的预设匹配规则,将所述多个失败类型中与所述健康评估值相匹配的失败类型,确定为目标失败类型,包括:基于多个失败类型的预设匹配规则,将所述多个失败类型中与所述健康评估值相匹配且优先级最高的失败类型,确定为所述目标失败类型。

7、可选地,所述根据所述健康评估值,从多个失败等级中确定目标失败等级,还包括:在所述多个失败类型均与所述健康评估值不匹配的情况下,将最高失败等级确定为所述目标失败等级。

8、可选地,所述多个失败等级包括递增的第一等级、第二等级、第三等级、第四等级;其中,所述第一等级表示仅配置文件发生变化,所述第一等级对应的回滚方案包括回滚配置文件的方案;所述第二等级表示所述目标软件包与其他已安装的软件包存在冲突,所述第二等级对应的回滚方案包括回滚所述目标软件包以及与所述目标软件包存在冲突的软件包的方案;所述第三等级表示系统性能严重下降,所述第三等级对应的回滚方案包括回滚与性能下降相关的软件包;所述第四等级为最高失败等级。

9、可选地,在所述按照预设数量的健康评估维度,对所述软硬件性能信息进行健康评估,得到每个健康评估维度的健康评估值之后,所述软件包回滚方法还包括:在所述健康评估值满足第二预设条件的情况下,放弃确定所述目标失败等级,将回滚全文件系统的方案确定为所述目标回滚方案,其中,所述第二预设条件用于表示所述目标软件包升级失败且存在严重异常;和/或在所述健康评估值相对于基准健康评估值的降幅超过降幅阈值的情况下,放弃确定所述目标失败等级和所述目标回滚方案,输出异常提示信息。

10、可选地,在所述对所述目标软件包执行所述目标回滚方案的步骤之后,还包括:在回滚失败的情况下,调整所述目标失败等级,并重新执行所述确定与所述目标失败等级相对应的目标回滚方案的步骤以及所述对所述目标软件包执行所述目标回滚方案的步骤;和/或在回滚成功的情况下,再次获取系统的软硬件性能信息,并对再次获取的软硬件性能信息进行健康评估,得到更新健康评估值,通过对比所述更新健康评估值和所述健康评估值,确定回滚结果信息。

11、根据本公开实施例的第二方面,提供一种软件包回滚装置,所述软件包回滚装置包括:获取单元,被配置为响应于完成目标软件包的升级,获取系统的软硬件性能信息;评估单元,被配置为按照预设数量的健康评估维度,对所述软硬件性能信息进行健康评估,得到每个健康评估维度的健康评估值,其中,所述预设数量是大于1的整数;等级确定单元,被配置为在所述健康评估值满足第一预设条件的情况下,根据所述健康评估值,从多个失败等级中确定目标失败等级,其中,所述第一预设条件用于表示所述目标软件包升级失败;方案确定单元,被配置为确定与所述目标失败等级相对应的目标回滚方案,其中,每个失败等级配置有相对应的回滚方案,最高失败等级对应的回滚方案包括回滚全文件系统,非最高失败等级对应的回滚方案包括回滚部分文件;执行单元,被配置为对所述目标软件包执行所述目标回滚方案。

12、可选地,所述评估单元还被配置为:针对每个健康评估维度,获取所述软硬件性能信息中与该健康评估维度相对应的性能参数值;根据该健康评估维度的预设参数区间和获取的性能参数值,确定该健康评估维度的健康评估值。

13、可选地,所述预设数量的健康评估维度包括以下至少之一:系统负载、内存使用率、磁盘输入/输出、关键服务状态、应用日志错误率。

14、可选地,所述等级确定单元还被配置为:基于多个失败类型的预设匹配规则,将所述多个失败类型中与所述健康评估值相匹配的失败类型,确定为目标失败类型,其中,所述预设匹配规则用于描述失败类型与健康评估值的对应关系,每个失败类型具有一个唯一对应的失败等级;基于所述目标失败类型对应的失败等级,确定所述目标失败等级。

15、可选地,所述多个失败类型具有不同的优先级,每个失败等级对应至少一个失败类型,每个失败等级的级别与该失败等级对应的失败类型的优先级正相关,所述等级确定单元还被配置为:基于多个失败类型的预设匹配规则,将所述多个失败类型中与所述健康评估值相匹配且优先级最高的失败类型,确定为所述目标失败类型。

16、可选地,所述等级确定单元还被配置为:在所述多个失败类型均与所述健康评估值不匹配的情况下,将最高失败等级确定为所述目标失败等级。

17、可选地,所述多个失败等级包括递增的第一等级、第二等级、第三等级、第四等级;其中,所述第一等级表示仅配置文件发生变化,所述第一等级对应的回滚方案包括回滚配置文件的方案;所述第二等级表示所述目标软件包与其他已安装的软件包存在冲突,所述第二等级对应的回滚方案包括回滚所述目标软件包以及与所述目标软件包存在冲突的软件包的方案;所述第三等级表示系统性能严重下降,所述第三等级对应的回滚方案包括回滚与性能下降相关的软件包;所述第四等级为最高失败等级。

18、可选地,所述方案确定单元还被配置为:在所述健康评估值满足第二预设条件的情况下,放弃确定所述目标失败等级,将回滚全文件系统的方案确定为所述目标回滚方案,其中,所述第二预设条件用于表示所述目标软件包升级失败且存在严重异常;和/或,所述软件包回滚装置还包括提示单元,被配置为在所述健康评估值相对于基准健康评估值的降幅超过降幅阈值的情况下,放弃确定所述目标失败等级和所述目标回滚方案,输出异常提示信息。

19、可选地,所述等级确定单元还被配置为:在回滚失败的情况下,调整所述目标失败等级,并重新运行所述方案确定单元和所述执行单元;和/或,所述软件包回滚装置还包括验证单元,在回滚成功的情况下,由所述获取单元再次获取系统的软硬件性能信息,并由所述评估单元对再次获取的软硬件性能信息进行健康评估,得到更新健康评估值,由所述验证单元通过对比所述更新健康评估值和所述健康评估值,确定回滚结果信息。

20、根据本公开实施例的第三方面,提供了一种电子设备,包括:至少一个处理器;至少一个存储计算机可执行指令的存储器,其中,计算机可执行指令在被至少一个处理器运行时,促使至少一个处理器执行根据本公开的示例性实施例的软件包回滚方法。

21、根据本公开实施例的第四方面,提供了一种计算机可读存储介质,计算机可读存储介质中的指令在被至少一个处理器运行时,促使至少一个处理器执行根据本公开的示例性实施例的软件包回滚方法。

22、根据本公开实施例的第五方面,提供了一种计算机程序产品,包括计算机指令,计算机指令在被至少一个处理器运行时,促使至少一个处理器执行根据本公开的示例性实施例的软件包回滚方法。

23、本公开的实施例提供的技术方案至少带来以下有益效果:根据本公开的软件包回滚方法、装置、电子设备、存储介质和程序产品,通过在完成软件包升级后,引入独立的多维健康评估流程,对升级情况进行评估,进而在确定升级失败、需要进行软件包回滚时,根据健康评估结果确定具体的回滚方案,能够将故障检测(感知)和回滚决策(判断)解耦,使两者均可独立量化、测试和优化,能够便捷地实现软件回滚,保证系统状态一致性。

24、同时,在进行健康评估时,通过基于反映系统健康状态的软硬件性能信息确定健康评估值,能够实现量化评分。通过综合考虑多个评估维度,能够减少因单一维度评估造成的误判风险,提升评估可靠性。

25、此外,通过对于不同的失败等级采用不同粒度的回滚方案,具体是对最高失败等级采用回滚全文件系统的回滚方案,例如包括但不限于全系统lvm快照回滚,对其他失败等级则采用回滚部分文件的回滚方案,例如包括但不限于使用通用的包管理器回滚软件包,一方面能够根据失败的严重程度,自动选择完整回滚或部分回滚,避免过度回滚,从而按需调整回滚粒度,既可提升回滚灵活性,又可相比完整系统重装将mttr(mean time torepair,平均修复时间)从小时级缩短至分钟级,实现快速恢复;另一方面,由于在部分回滚时可使用通用的包管理器,也就无需依赖特定的文件系统,能够对默认文件系统执行不同粒度的回滚,提升了默认文件系统软件回滚的灵活性。

26、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。