本发明涉及故障修复,尤其涉及一种故障修复方法、装置、电子设备及存储介质。
背景技术:
1、存储系统作为数据存储及数据处理的基础被广泛应用于各个领域。在存储系统中,通过在存储节点上设置多个槽位,每个槽位插入主机总线适配器(host bus adapter,hba)实现数据传输、存储。每个hba卡设置有多个端口,任一端口出现故障时系统都会进入故障修复流程,现有的故障修复功能运行的流程较为复杂,故障修复的执行逻辑可能存在缺陷,导致故障不能被及时修复,并且执行故障修复功能时可能会阻塞其他功能的正常运行,影响整个存储系统的工作稳定性。
技术实现思路
1、本发明提供一种故障修复方法、装置、电子设备及存储介质,用以解决现有的故障修复功能运行的流程较为复杂,执行故障修复功能时影响其他功能的正常运行的缺陷。
2、本发明提供一种故障修复方法,包括:
3、响应于故障产生事件,启动故障修复定时器;
4、在所述故障修复定时器中根据状态机模型中每个故障修复任务状态的时态和属性切换故障修复任务的状态,以完成故障修复任务。
5、根据本发明提供的一种故障修复方法,所述故障修复任务状态包括初始状态、查询状态、收集日志状态、修复操作状态,所述修复操作状态包括端口修复状态、卡级修复状态下电状态和上电状态;
6、所述故障修复任务状态的时态包括等待、正在执行和执行完成;
7、所述故障修复任务状态的属性包括校验函数、前置等待时间、后置等待时间、执行任务和查询函数,
8、其中,所述收集日志状态和端口修复状态对应的执行任务在不执行业务流程的线程上完成。
9、根据本发明提供的一种故障修复方法,所述根据状态机模型中每个故障修复任务状态的时态和属性切换故障修复任务的状态包括:
10、对所述初始状态的时态和属性进行判别;
11、若所述初始状态的时态为执行完成,属性为执行任务或查询函数,则对所述查询状态的时态和属性进行判别;
12、若所述查询状态的时态为执行完成,属性为执行任务或查询函数,则对所述收集日志状态的时态和属性进行判别;
13、若所述收集日志状态的时态为执行完成,属性为执行任务或查询函数,则根据所述查询状态获取的故障类型切入到对应修复操作状态;
14、若所述修复操作状态的时态为执行完成,属性为执行任务或查询函数,则退出所述故障修复定时器。
15、根据本发明提供的一种故障修复方法,每个故障修复任务状态的时态和属性判别方法包括:
16、如果故障修复任务状态的时态为等待,且前置等待时间为0,则执行该状态所对应的执行任务;在执行完该状态所对应的执行任务后,切换故障修复任务状态的时态为执行完成;
17、如果故障修复任务状态的时态为等待,且前置等待时间大于0,则对前置等待时间进行减值操作,直到前置等待时间等于0;
18、如果故障修复任务状态的时态为正在执行或执行完成,则执行该状态所对应的查询函数;
19、如果故障修复任务状态的时态为正在执行,且后置等待时间大于0,则对后置等待时间进行减值操作,直到后置等待时间等于为0。
20、根据本发明提供的一种故障修复方法,所述状态机模型中每个故障修复任务状态对应有多种激励,所述激励包括故障激励、超时激励和完成激励;
21、所述故障激励用于从所述初始状态切换至所述查询状态;
22、所述完成激励用于从当前故障修复任务状态切换至下一临近故障修复任务状态;
23、所述超时激励用于取消故障修复任务,退出所述故障修复定时器。
24、根据本发明提供的一种故障修复方法,所述故障包括部分端口故障,所述部分端口故障修复方法包括:
25、接受故障端口发送的故障激励,所述故障端口进入查询状态;
26、在所述查询状态下,首先执行校验函数;
27、在执行校验函数通过后,判断前置等待时间是否为0;
28、若是,执行查询在位状态的函数,发送查询消息后,会进入后置时间等待的流程,否则,对前置等待时间执行减值操作;
29、在查询状态后置时间等待期间,若接收到查询结果,则对所述故障端口发送完成激励,如果未接收到查询结果,则发送超时激励;
30、根据完成激励使得端口进入收集日志状态,在所述收集日志状态下执行收集数据操作;
31、在收集日志状态后置等待的期间,如果数据收集完成,则发送完成激励,进入端口修复状态,否则发送超时激励;
32、在端口修复状态下,执行端口修复方案,所述端口修复方案包括软件重置。
33、根据本发明提供的一种故障修复方法,所述端口修复状态包括一级端口修复状态和二级端口修复状态,所述部分端口故障修复方法还包括:
34、在进入端口修复状态前,判断是否执行过端口修复方案,若是,进入二级端口修复状态;否则,进入一级端口修复状态。
35、根据本发明提供的一种故障修复方法,所述故障包括全部端口故障,所述全部端口故障修复方法包括:
36、根据故障激励进入查询状态,在所述查询状态下,首先执行校验函数;
37、在执行校验函数通过后,判断前置等待时间是否为0;
38、若是,执行查询在位状态的函数,发送查询消息后,会进入后置时间等待的流程,否则,对前置等待时间执行减值操作;
39、在查询状态后置时间等待期间,若接收到查询结果,则对所述故障端口发送完成激励,如果未接收到查询结果,则发送超时激励;
40、根据完成激励使得端口进入收集日志状态,在所述收集日志状态下执行收集数据操作;
41、在收集日志状态后置等待的期间,如果数据收集完成,则发送完成激励,进入下电状态,否则发送超时激励;
42、在下电状态下执行下电操作,如果完成下电操作,则发送完成激励,进入上电状态;
43、在所述上电状态执行上电操作,所述下电操作和所述上电操作为异步执行操作;
44、如果上电操作完成,则发送完成激励,否则发送超时激励。
45、根据本发明提供的一种故障修复方法,所述定时器运行在一个业务线程上,接收其他业务线程发送的故障激励。
46、本发明还提供一种故障修复装置,包括:
47、启动模块,用于响应于故障产生事件,启动故障修复定时器;
48、修复模块,用于在所述故障修复定时器中根据状态机模型中每个故障修复任务状态的时态和属性切换故障修复任务的状态,以完成故障修复任务。
49、本发明还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项所述的故障修复方法。
50、本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的故障修复方法。
51、本发明提供的故障修复方法、装置、电子设备及存储介质,通过响应于故障产生事件,启动故障修复定时器;在故障修复定时器中根据状态机模型中每个故障修复任务状态的时态和属性切换故障修复任务的状态,以完成故障修复任务,通过将故障修复的流程和条件转换为状态机形式的实现,简化了故障修复的逻辑复杂度,降低故障修复的执行逻辑存在缺陷的可能性,故障修复任务运行的流程更加清晰,并且通过一个定时器执行故障修复功能,不会阻塞其他功能的正常运行,提高存储系统的工作稳定性。