故障自动回滚方法、装置、计算机设备及可读存储介质与流程

未命名 09-03 阅读:97 评论:0


1.本发明涉及计算机技术领域,特别涉及故障自动回滚方法、装置、计算机设备及可读存储介质。


背景技术:

2.nvme协议对固态硬盘(ssd)的固件升级过程进行了比较详细的规定:通过固件映像下载(firmware image download)命令将固件包下载到ssd侧;再通过提交(firmware commit)命令对固件包进行检查,并指定不同的方式激活固件;其对下载、提交、激活过程出现的故障,如固件校验失败、加载失败、加载超时等故障做了处理规定,但新固件加载成功运行后出现故障则没有规定,因此新固件启动运行后如果出现软件故障不能自动恢复;严重的如建链失败等问题可能导致硬盘无法访问,必须通过物理串口重新烧制才能恢复。


技术实现要素:

3.本发明的目的是提供故障自动回滚方法、装置、计算机设备及可读存储介质,旨在解决现有技术在新固件启动运行后出现软件故障不能自动恢复等问题。
4.第一方面,本发明实施例提供一种故障自动回滚方法,包括:
5.在升级后的固件中设置若干故障检测点;
6.运行所述固件内的软件;
7.判断是否发生故障;
8.若未发生故障,则判断所述固件运行时间是否达到第一预定时间;若达到第一预定时间,将所述固件标记为可正常运行;若未达到第一预定时间,则运行固件并继续判断所述固件运行时间是否达到第一预定时间;
9.若发生故障,则按照指定分区激活流程进行回滚并进行一次回滚计数。
10.第二方面,本发明实施例提供一种故障自动回滚装置,包括:
11.设置单元,用于在升级后的固件中设置若干故障检测点;
12.运行单元,用于运行所述固件内的软件;
13.故障判断单元,用于判断是否发生故障;
14.第一预定时间判断单元,用于若未发生故障,则判断所述固件运行时间是否达到第一预定时间;若达到第一预定时间,将所述固件标记为可正常运行;若未达到第一预定时间,则运行固件并继续判断所述固件运行时间是否达到第一预定时间;
15.回滚单元,用于若发生故障,则按照指定分区激活流程进行回滚并进行一次回滚计数。
16.第三方面,本发明实施例又提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的故障自动回滚方法。
17.第四方面,本发明实施例还提供了一种计算机可读存储介质,其中所述计算机可
读存储介质存储有计算机程序,所述计算机程序当被处理器执行时实现上述第一方面所述的故障自动回滚方法。
18.本发明公开了故障自动回滚方法、装置、计算机设备及可读存储介质,方法包括:在升级后的固件中设置若干故障检测点;运行所述固件内的软件;判断是否发生故障;若未发生故障,则判断所述固件运行时间是否达到第一预定时间;若达到第一预定时间,将所述固件标记为可正常运行;若未达到第一预定时间,则运行固件并继续判断所述固件运行时间是否达到第一预定时间;若发生故障,则按照指定分区激活流程进行回滚并进行一次回滚计数。本发明通过在新固件运行时设置若干检测点,当检测到故障时,利用nvme固件上的多个备份自动进行固件版本回滚,解决了升级固件后软件故障无法修复的问题。本发明实施例同时还提供了一种故障自动回滚装置、一种计算机可读存储介质和一种计算机设备,具有上述有益效果,在此不再赘述。
附图说明
19.为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1为本实施例的故障自动回滚方法的流程图;
21.图2为本实施例的故障自动回滚装置的示意性框图。
具体实施方式
22.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
23.应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
24.还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
25.还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
26.请参阅图1,本发明提供了一种故障自动回滚方法,包括:
27.s101:在升级后的固件中设置若干故障检测点;
28.本实施例中,在升级后的固件中设置若干故障检测点之前(即新固件下载到硬盘侧时)还需在硬盘上设置若干固件映像分区(firmware slot),用于下载以及存储固件;接着按照预定要求将固件下载到固件映像分区;其中,预定要求包括:固件的提交命令不能覆盖当前正常运行的固件映像分区;以及硬盘上设置持久化的存储区域,用于标记每个固件映像分区的固件是否为可正常运行,新下载的固件标记为未确认,对nvme协议提供的固件
下载及激活机制按照协议要求实现。
29.进一步的,故障包括:高速串行计算机扩展总线标准(pcie)建链失败;nvme第二预定时间内不能cc.en-》1;出现内核转储(coredump)文件;当检测到上述故障时,系统自动执行固件回滚,且用户可根据具体实施的需要选择需检测的故障,其中,在新固件启动后确认可正常运行前出现coredump立即触发固件回滚。
30.在一个实施例中,高速串行计算机扩展总线标准建链失败的判断方式为:判断固件运行后在第三预定时间内是否进入l0状态;若未进入l0状态,则判定为高速串行计算机扩展总线标准建链失败,接着触发固件回滚;若进入l0状态,则判定为高速串行计算机扩展总线标准建链成功。
31.s102:运行所述固件内的软件;
32.本实施例中,运行所述固件内的软件需要判断固件是否已被标记为可正常运行;若被标记为可正常运行,则说明该固件是可正常运行的,因此直接运行固件;若未被标记为可正常运行,则无法确认该固件在运行过程中是否存在故障,因此需确认该固件是否可以正常运行,在一些情况下,在进行故障检测时由于特殊情况可能导致检测失误以及回滚后的固件版本不适配系统,需要进行多次回滚来避免上述情况的发生,因此本实施例对固件是否已被标记为可正常运行判断后还设置了回滚次数的判断,即判断固件对应的回滚次数是否超过预定次数;若超过预定次数,则结束固件回滚;若未超过预定次数,则执行步骤s102。
33.s103:判断是否发生故障;
34.若未发生故障,执行步骤s104;若发生故障,执行步骤s107。
35.s104:判断所述固件运行时间是否达到第一预定时间;
36.具体的,若所述固件运行时间达到第一预定时间,执行步骤s105;若所述固件运行时间未达到第一预定时间,执行步骤s106。
37.在一个实施例中,在判断固件未发生故障后运行的过程中,若接受到将固件标记为可正常运行的命令时,立即将该固件标注为可正常运行,即可不需通过判断固件运行时间是否达到第一预定时间即可对固件进行标注。
38.本实施例中,标记固件可正常运行的方式有:通过提供命令(如nvme厂商自定义命令)手工对当前运行的固件进行确认,将对应固件映像分区的可正常运行标记设为已确认;和/或,设定一个检测周期,新固件启动运行时间超过该检测周期后,硬盘侧自动确认,将对应固件映像分区的标记设为已确认。
39.s105:将所述固件标记为可正常运行;
40.s106:运行固件并继续判断所述固件运行时间是否达到第一预定时间;
41.s107:按照指定分区激活流程进行回滚并进行一次回滚计数。
42.具体的,根据故障类型选择立即激活或者复位激活的方式,对指定分区进行激活,即该类型故障是否需要做复位激活才有可能得到修复,若需要则进行复位激活,否则进行立即激活;
43.判断回滚是否失败;
44.若回滚失败,则进行一次回滚计数,并确认故障类型;
45.若故障类型属于不可恢复的故障类型,则结束故障检测;若故障类型不属于不可
恢复的故障类型,则继续进行固件回滚,若故障类型为与更换固件无关的故障类型,则不再更换其它指定分区的固件进行重试;若故障类型为更换固件有关的故障类型,则更换其他指定分区的固件进行重试,其中,是否重试或换其他分区固件重试的条件是出现回滚失败时,该硬盘上是否还有其它的固件可用于重试。
46.需要说明的是,上述回滚次数的计数是判定回滚失败计数,也可在检测到故障时就进行一次计数,并对计数进行持久化存储。
47.在一个实施例中,pcie建链都是在芯片内完成,需要初始化芯片,因此通常选择复位激活;coredump通常是软件层面的问题导致,一般可以选择立即激活;nvme相关的,根据厂商具体的实现来选择激活方式,如一些厂商是芯片硬件实现,可以选择复位激活,而一些厂商可能是软件实现,可以选择立即激活。
48.本实施例在新固件运行时设置若干检测点,当检测到故障时,利用nvme固件上的多个备份自动进行固件版本回滚,解决了升级固件后软件故障无法修复的问题。
49.请参阅图2,本实施例提供了一种故障自动回滚装置200,包括:
50.设置单元201,用于在升级后的固件中设置若干故障检测点;
51.运行单元202,用于运行所述固件内的软件;
52.故障判断单元203,用于判断是否发生故障;
53.第一预定时间判断单元204,用于若未发生故障,则判断所述固件运行时间是否达到第一预定时间;若达到第一预定时间,将所述固件标记为可正常运行;若未达到第一预定时间,则运行固件并继续判断所述固件运行时间是否达到第一预定时间;
54.回滚单元205,用于若发生故障,则按照指定分区激活流程进行回滚并进行一次回滚计数。
55.进一步的,所述设置单元201包括:
56.分区设置子单元,用于在硬盘上设置若干固件映像分区;
57.下载子单元,用于按照预定要求将所述固件下载到所述固件映像分区;其中,所述预定要求包括:所述固件的提交命令不能覆盖当前正常运行的固件映像分区;以及硬盘上设置持久化的存储区域,用于标记每个固件映像分区的固件是否为可正常运行。
58.进一步的,所述回滚单元205包括:
59.选择子单元,用于根据故障类型选择立即激活或者复位激活的方式,对所述指定分区进行激活;
60.回滚判断子单元,用于判断回滚是否失败;
61.类型确认子单元,用于若回滚失败,则进行一次回滚计数,并确认所述故障类型;
62.处理子单元,用于若所述故障类型属于不可恢复的故障类型,则结束故障检测;若所述故障类型为与更换固件无关的故障类型,则不再更换其它指定分区的固件进行重试;若故障类型为更换固件有关的故障类型,则更换其他指定分区的固件进行重试。
63.进一步的,所述设置单元201包括:
64.建链检测点设置子单元,设置高速串行计算机扩展总线标准建链失败的检测点;
65.第二预定时间检测点设置子单元,用于设置nvme第二预定时间内不能cc.en-》1的检测点;
66.文件检测点设置子单元,用于设置出现内核转储文件的检测点。
67.进一步的,所述建链检测点设置子单元包括:
68.第三预定时间判断子单元,用于判断所述固件运行后在第三预定时间内是否进入l0状态;
69.失败判定子单元,用于若未进入l0状态,则判定为高速串行计算机扩展总线标准建链失败;
70.成功判定子单元,用于若进入l0状态,则判定为高速串行计算机扩展总线标准建链成功。
71.进一步的,所述运行单元202包括:
72.标记判断子单元,用于判断所述固件是否已被标记为可正常运行;
73.固件运行子单元,用于若被标记为可正常运行,则直接运行所述固件;
74.次数判断子单元,用于若未被标记为可正常运行,则判断所述固件对应的回滚次数是否超过预定次数。
75.进一步的,所述次数判断子单元包括:
76.回滚结束子单元,用于若超过预定次数,则结束固件回滚;
77.执行子单元,用于若未超过预定次数,则执行运行所述固件内的软件的步骤。
78.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
79.本发明还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的方法。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
80.本发明还提供了一种计算机设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的方法。当然所述计算机设备还可以包括各种网络接口,电源等组件。
81.说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
82.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的。
83.包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

技术特征:
1.一种故障自动回滚方法,其特征在于,包括:在升级后的固件中设置若干故障检测点;运行所述固件内的软件;判断是否发生故障;若未发生故障,则判断所述固件运行时间是否达到第一预定时间;若达到第一预定时间,将所述固件标记为可正常运行;若未达到第一预定时间,则运行固件并继续判断所述固件运行时间是否达到第一预定时间;若发生故障,则按照指定分区激活流程进行回滚并进行一次回滚计数。2.根据权利要求1所述的故障自动回滚方法,其特征在于,所述在升级后的固件中设置若干故障检测点之前包括:在硬盘上设置若干固件映像分区;按照预定要求将所述固件下载到所述固件映像分区;其中,所述预定要求包括:所述固件的提交命令不能覆盖当前正常运行的固件映像分区;以及硬盘上设置持久化的存储区域,用于标记每个固件映像分区的固件是否为可正常运行。3.根据权利要求1所述的故障自动回滚方法,其特征在于,所述按照指定分区激活流程进行回滚并进行一次回滚计数,包括:根据故障类型选择立即激活或者复位激活的方式,对所述指定分区进行激活;判断回滚是否失败;若回滚失败,则进行一次回滚计数,并确认所述故障类型;若所述故障类型属于不可恢复的故障类型,则结束故障检测;若所述故障类型为与更换固件无关的故障类型,则不再更换其它指定分区的固件进行重试;若故障类型为更换固件有关的故障类型,则更换其他指定分区的固件进行重试。4.根据权利要求1所述的故障自动回滚方法,其特征在于,故障包括:高速串行计算机扩展总线标准建链失败;nvme第二预定时间内不能cc.en->1;出现内核转储文件。5.根据权利要求4所述的故障自动回滚方法,其特征在于,所述高速串行计算机扩展总线标准建链失败的判断方式为:判断所述固件运行后在第三预定时间内是否进入l0状态;若未进入l0状态,则判定为高速串行计算机扩展总线标准建链失败;若进入l0状态,则判定为高速串行计算机扩展总线标准建链成功。6.根据权利要求1所述的故障自动回滚方法,其特征在于,运行所述固件内的软件之前包括:判断所述固件是否已被标记为可正常运行;若被标记为可正常运行,则直接运行所述固件;若未被标记为可正常运行,则判断所述固件对应的回滚次数是否超过预定次数。7.根据权利要求6所述的故障自动回滚方法,其特征在于,所述判断回滚次数是否超过预定次数包括:若超过预定次数,则结束固件回滚;
若未超过预定次数,则执行运行所述固件内的软件的步骤。8.一种故障自动回滚装置,其特征在于,包括:设置单元,用于在升级后的固件中设置若干故障检测点;运行单元,用于运行所述固件内的软件;故障判断单元,用于判断是否发生故障;第一预定时间判断单元,用于若未发生故障,则判断所述固件运行时间是否达到第一预定时间;若达到第一预定时间,将所述固件标记为可正常运行;若未达到第一预定时间,则运行固件并继续判断所述固件运行时间是否达到第一预定时间;回滚单元,用于若发生故障,则按照指定分区激活流程进行回滚并进行一次回滚计数。9.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的故障自动回滚方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如权利要求1至7任一项所述的故障自动回滚方法。

技术总结
本发明公开了故障自动回滚方法、装置、计算机设备及可读存储介质,方法包括:在升级后的固件中设置若干故障检测点;运行所述固件内的软件;判断是否发生故障;若未发生故障,则判断所述固件运行时间是否达到第一预定时间;若达到第一预定时间,将所述固件标记为可正常运行;若未达到第一预定时间,则运行固件并继续判断所述固件运行时间是否达到第一预定时间;若发生故障,则按照指定分区激活流程进行回滚并进行一次回滚计数。本发明通过在新固件运行时设置若干检测点,当检测到故障时,利用NVME固件上的多个备份自动进行固件版本回滚,解决了升级固件后软件故障无法修复的问题。了升级固件后软件故障无法修复的问题。了升级固件后软件故障无法修复的问题。


技术研发人员:梁绍宁 兰国节 郭春
受保护的技术使用者:成都芯忆联信息技术有限公司
技术研发日:2023.06.01
技术公布日:2023/8/31
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐