一种多控存储设备硬件故障的自动化注入验证方法与系统

文档序号:1875312 发布日期:2021-11-23 浏览:12次 >En<

阅读说明:本技术 一种多控存储设备硬件故障的自动化注入验证方法与系统 (Automatic injection verification method and system for hardware fault of multi-control storage device ) 是由 宋以强 于 2021-07-16 设计创作,主要内容包括:本发明提供了一种多控存储设备硬件故障的自动化注入验证方法与系统,本发明通过服务器端生成和删除硬件故障注入文件,通过存储设备读取硬件故障注入文件并修改page页中存放的机箱各项数据,来制造故障,从而通过通过修改硬件管理芯片返回的机箱状态信息模拟多种硬件故障的产生和消失,验证存储端软件逻辑的合理性和可靠性,在验证软件逻辑时不再依赖硬件,完成了故障注入的软硬件解耦,不必再对硬件做飞线或者其他物理上的处理,节约了时间、人力和物力。(The invention provides an automatic injection verification method and system for hardware faults of a multi-control storage device.)

一种多控存储设备硬件故障的自动化注入验证方法与系统

技术领域

本发明涉及服务器存储技术领域,特别是一种多控存储设备硬件故障的自动化注入验证方法与系统。

背景技术

一台完整的存储设备由软件和硬件两部分组成,硬件主要有PSU、控制器、背板、硬盘以及散热风扇等,各个部件在使用过程中都会产生故障,当故障发生时存储软件要及时响应,上报告警,通知用户设备出现了异常,让用户及时进行维护。这就需要软件有一套可靠的逻辑,在硬件产生故障时及时准确的上报告警,在硬件故障消失时可以取消已经上报的告警。为保证逻辑可靠,在编码完成后的自测过程中需要频繁的制造硬件故障来验证代码的逻辑性和可靠性,但是硬件故障的制作比较困难,需要飞线修改硬件链路,部分硬件故障若强行制造还会对硬件造成损耗,增加了研发成本,浪费了资源。

发明内容

本发明的目的是提供一种多控存储设备硬件故障的自动化注入验证方法与系统,旨在解决现有技术中硬件故障制造成本高且硬件改造繁琐的问题,实现节约时间、人力和物力,避免物理改造。

为达到上述技术目的,本发明提供了一种多控存储设备硬件故障的自动化注入验证方法,所述方法包括以下操作:

构建Json数据结构,存放不同硬件故障注入信息;

服务器端建立与存储设备的连接,获取存储设备的机箱类型,根据机箱类型读取存放硬件故障注入信息的Json文件,逐个故障进行注入;

存储设备根据故障注入信息生成故障注入文件,存储设备根据故障注入文件进行故障注入,等待告警产生,期间服务器端轮询存储设备是否有故障产生;

当故障产生后,删除存储设备的故障注入文件并查询告警信号是否消失,当消失后则故障注入成功,否则注入失败。

优选地,所述存储设备根据故障注入文件进行故障注入具体为:

存储设备在存储软件的机箱管理模块新增接口,通过该接口读取故障注入文件,根据读取到的数据修改机箱管理芯片的page页数据,用于故障制造。

优选地,所述接口在获得某一page页后,读取已经在存储设备的故障注入文件,确认此page页是否为需要进行故障注入的page页,若是,则按照要修改的字节数量,修改值和偏移修改原始page页对应位置,完成接口调用。

优选地,所述Json文件包括告警事件编号和编号下的机箱类型、序列号、行号、列号、要注入故障硬件的类型、需要注入故障的硬件在一台机箱内的数量、机箱管理协议类型、需要修改的page页编号、需要注入数据的字节数量、修改后的值以及要修改值的偏移。

优选地,所述故障注入文件中第一行代表page页、第二行代表修改字节的数量、第三行代表修改后的值、第四行代表要修改值在page页中的偏移。

优选地,所述服务器端在轮询存储设备是否有故障产生时,需比较告警的告警事件编号和出现故障的硬件ID是否为所注入故障的硬件ID。

优选地,所述服务器端查询告警信号是否消失具体为查询auto_fix字段是否为YES,若此字段为YES则代表故障已经消失,否则故障存在。

本发明还提供了一种多控存储设备硬件故障的自动化注入验证系统,所述系统包括:

故障注入数据构建模块,用于构建Json数据结构,存放不同硬件故障注入信息;

连接建立模块,用于服务器端建立与存储设备的连接,获取存储设备的机箱类型,根据机箱类型读取存放硬件故障注入信息的Json文件,逐个故障进行注入;

故障注入模块,用于存储设备根据故障注入信息生成故障注入文件,存储设备根据故障注入文件进行故障注入,等待告警产生,期间服务器端轮询存储设备是否有故障产生;

故障消除模块,用于当故障产生后,删除存储设备的故障注入文件并查询告警信号是否消失,当消失后则故障注入成功,否则注入失败。

优选地,所述Json文件包括告警事件编号和编号下的机箱类型、序列号、行号、列号、要注入故障硬件的类型、需要注入故障的硬件在一台机箱内的数量、机箱管理协议类型、需要修改的page页编号、需要注入数据的字节数量、修改后的值以及要修改值的偏移。

优选地,所述故障注入文件中第一行代表page页、第二行代表修改字节的数量、第三行代表修改后的值、第四行代表要修改值在page页中的偏移。

发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:

与现有技术相比,本发明通过服务器端生成和删除硬件故障注入文件,通过存储设备读取硬件故障注入文件并修改page页中存放的机箱各项数据,来制造故障,从而通过通过修改硬件管理芯片返回的机箱状态信息模拟多种硬件故障的产生和消失,验证存储端软件逻辑的合理性和可靠性,在验证软件逻辑时不再依赖硬件,完成了故障注入的软硬件解耦,不必再对硬件做飞线或者其他物理上的处理,节约了时间、人力和物力。

附图说明

图1为本发明实施例中所提供的一种多控存储设备硬件故障的自动化注入验证方法流程图;

图2为本发明实施例中所提供的一种多控存储设备硬件故障的自动化注入验证系统框图。

具体实施方式

为了能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。

下面结合附图对本发明实施例所提供的一种多控存储设备硬件故障的自动化注入验证方法与系统进行详细说明。

如图1所示,本发明公开了一种多控存储设备硬件故障的自动化注入验证方法,所述方法包括以下操作:

构建Json数据结构,存放不同硬件故障注入信息;

服务器端建立与存储设备的连接,获取存储设备的机箱类型,根据机箱类型读取存放硬件故障注入信息的Json文件,逐个故障进行注入;

存储设备根据故障注入信息生成故障注入文件,存储设备根据故障注入文件进行故障注入,等待告警产生,期间服务器端轮询存储设备是否有故障产生;

当故障产生后,删除存储设备的故障注入文件并查询告警信号是否消失,当消失后则故障注入成功,否则注入失败。

本发明实施例在使用标准机箱管理协议(SES协议)的设备上,通过修改硬件管理芯片返回的机箱状态信息模拟多种硬件故障的产生和消失,验证存储端软件逻辑的合理性和可靠性。

生成和删除硬件故障注入配置文件,该部分代码逻辑使用Python中的Pytest框架来实现,代码可运行在服务器上,该服务器能够通过SSH与存储设备的每个节点建立连接,用于在存储各个节点上执行命令。

设计Json数据结构以存储故障注入信息。针对不同的硬件故障,确认生成硬件故障注入文件时所需的必要信息,放入Json文件中。由于机箱内硬件种类比较多,因此不同的故障注入信息要使用相同的Json结构,使得服务器端运行的代码有高复用性。

所述Json文件由许多个告警事件编号组成,每个告警事件对应一种硬件故障。每一个告警事件编号里存有对应硬件故障注入所需要的信息,包括机箱类型、序列号、行号、列号、要注入故障硬件的类型、需要注入故障的硬件在一台机箱内的数量、机箱管理协议类型、需要修改的page页编号、需要注入数据的字节数量、修改后的值以及要修改值的偏移。其中序列号用于获取硬件故障告警,序列号可以是递增的,每新出现一个告警序列号在已产生告警的序列号基础上加1;行号和列号用于寻找故障硬件;管理芯片将机箱的各项信息存放至page页中,这些page页遵循SES协议。

服务器端脚本执行后,调用Python的paramiko库函数,建立与存储设备的连接,连接成功后,服务器执行的脚本就可以获取存储端的机箱列表。遍历机箱列表,获得某个机箱的机箱类型,读取用于故障注入的Json文件,逐个故障进行注入,根据获取到的故障注入信息在存储端生成故障注入文件,文件中第一行代表page页、第二行代表修改字节的数量、第三行代表修改后的值、第四行代表要修改值在page页中的偏移。在存储端生成文件后等待告警产生,可设置一个轮询上限,在此上限内服务器每隔几秒轮询一次存储端是否有对应的故障产生,故障产生后要比较告警的告警事件编号和出现故障的硬件ID是否为注入故障的硬件ID。对应告警事件产生后记录其告警序列号,服务器端通过paramiko库函数在存储端执行命令,删除存储端的故障注入文件。在一定的上限内每隔几秒执行告警查询指令:lseventlog error_sequence_number,在执行结果查询auto_fix字段是否为YES,若此字段为YES则代表故障已经消失,记录成功日志,继续执行下一条硬件故障注入测试用例,若超过轮询上线,auto_fix字段仍为NO则记录失败日志继续执行下一条用例。当所有机箱的所有硬件故障用例执行完成后,脚本退出。

读取硬件故障注入配置文件修改数据,在原有机箱管理的逻辑基础上,需要在存储软件的机箱管理模块新增一个接口,读取硬件故障注入文件并根据读取到的数据修改机箱管理芯片,用于故障制造。

在存储端增加用于逻辑验证的开关,通过增加环境变量来实现。当环境变量存在时用于验证硬件故障的代码逻辑会触发,否则不会触发。隔离新增的接口代码,从而不影响原来的软件系统逻辑。接口的逻辑触发条件为:存储端软件系统正常运行;各机箱硬件无故障类告警;用于逻辑验证的环境变量生效。软件中的EN模块会在一定条件下,会逐个收集硬件芯片打包好的page页信息,新增接口的位置要在SCSI协议Receive DiagnosticsResults Command的返回成功的位置,此命令的返回内容可以是任一page页。当获得某一page页后,读取已经在存储端的硬件故障注入配置文件,确认此page页是否为需要进行故障注入的page页,若是,则按照要修改的字节数量,修改值和偏移修改对应位置原始page页,接口调用完成。

设置查询告警的命令,使用的查询命令为lseventlog,此命令可查询所有的告警信息,若在此命令后加上具体的告警序列号,可显示告警的具体信息。告警信息中有auto_fix字段,记录此告警是否已经消失,no代表故障仍然存在,yes代表硬件故障消失,以及一个二位数组,数组中记录故障器件的位置。

本发明通过服务器端生成和删除硬件故障注入文件,通过存储设备读取硬件故障注入文件并修改page页中存放的机箱各项数据,来制造故障,从而通过通过修改硬件管理芯片返回的机箱状态信息模拟多种硬件故障的产生和消失,验证存储端软件逻辑的合理性和可靠性,在验证软件逻辑时不再依赖硬件,完成了故障注入的软硬件解耦,不必再对硬件做飞线或者其他物理上的处理,节约了时间、人力和物力。

如图2所示,本发明实施例还公开了一种多控存储设备硬件故障的自动化注入验证系统,所述系统包括:

故障注入数据构建模块,用于构建Json数据结构,存放不同硬件故障注入信息;

连接建立模块,用于服务器端建立与存储设备的连接,获取存储设备的机箱类型,根据机箱类型读取存放硬件故障注入信息的Json文件,逐个故障进行注入;

故障注入模块,用于存储设备根据故障注入信息生成故障注入文件,存储设备根据故障注入文件进行故障注入,等待告警产生,期间服务器端轮询存储设备是否有故障产生;

故障消除模块,用于当故障产生后,删除存储设备的故障注入文件并查询告警信号是否消失,当消失后则故障注入成功,否则注入失败。

本发明实施例在使用标准机箱管理协议(SES协议)的设备上,通过修改硬件管理芯片返回的机箱状态信息模拟多种硬件故障的产生和消失,验证存储端软件逻辑的合理性和可靠性。

生成和删除硬件故障注入配置文件,该部分代码逻辑使用Python中的Pytest框架来实现,代码可运行在服务器上,该服务器能够通过SSH与存储设备的每个节点建立连接,用于在存储各个节点上执行命令。

设计Json数据结构以存储故障注入信息。针对不同的硬件故障,确认生成硬件故障注入文件时所需的必要信息,放入Json文件中。由于机箱内硬件种类比较多,因此不同的故障注入信息要使用相同的Json结构,使得服务器端运行的代码有高复用性。

所述Json文件由许多个告警事件编号组成,每个告警事件对应一种硬件故障。每一个告警事件编号里存有对应硬件故障注入所需要的信息,包括机箱类型、序列号、行号、列号、要注入故障硬件的类型、需要注入故障的硬件在一台机箱内的数量、机箱管理协议类型、需要修改的page页编号、需要注入数据的字节数量、修改后的值以及要修改值的偏移。其中序列号用于获取硬件故障告警,序列号可以是递增的,每新出现一个告警序列号在已产生告警的序列号基础上加1;行号和列号用于寻找故障硬件;管理芯片将机箱的各项信息存放至page页中,这些page页遵循SES协议。

服务器端脚本执行后,调用Python的paramiko库函数,建立与存储设备的连接,连接成功后,服务器执行的脚本就可以获取存储端的机箱列表。遍历机箱列表,获得某个机箱的机箱类型,读取用于故障注入的Json文件,逐个故障进行注入,根据获取到的故障注入信息在存储端生成故障注入文件,文件中第一行代表page页、第二行代表修改字节的数量、第三行代表修改后的值、第四行代表要修改值在page页中的偏移。在存储端生成文件后等待告警产生,可设置一个轮询上限,在此上限内服务器每隔几秒轮询一次存储端是否有对应的故障产生,故障产生后要比较告警的告警事件编号和出现故障的硬件ID是否为注入故障的硬件ID。对应告警事件产生后记录其告警序列号,服务器端通过paramiko库函数在存储端执行命令,删除存储端的故障注入文件。在一定的上限内每隔几秒执行告警查询指令:lseventlog error_sequence_number,在执行结果查询auto_fix字段是否为YES,若此字段为YES则代表故障已经消失,记录成功日志,继续执行下一条硬件故障注入测试用例,若超过轮询上线,auto_fix字段仍为NO则记录失败日志继续执行下一条用例。当所有机箱的所有硬件故障用例执行完成后,脚本退出。

读取硬件故障注入配置文件修改数据,在原有机箱管理的逻辑基础上,需要在存储软件的机箱管理模块新增一个接口,读取硬件故障注入文件并根据读取到的数据修改机箱管理芯片,用于故障制造。

在存储端增加用于逻辑验证的开关,通过增加环境变量来实现。当环境变量存在时用于验证硬件故障的代码逻辑会触发,否则不会触发。隔离新增的接口代码,从而不影响原来的软件系统逻辑。接口的逻辑触发条件为:存储端软件系统正常运行;各机箱硬件无故障类告警;用于逻辑验证的环境变量生效。软件中的EN模块会在一定条件下,会逐个收集硬件芯片打包好的page页信息,新增接口的位置要在SCSI协议Receive DiagnosticsResults Command的返回成功的位置,此命令的返回内容可以是任一page页。当获得某一page页后,读取已经在存储端的硬件故障注入配置文件,确认此page页是否为需要进行故障注入的page页,若是,则按照要修改的字节数量,修改值和偏移修改对应位置原始page页,接口调用完成。

设置查询告警的命令,使用的查询命令为lseventlog,此命令可查询所有的告警信息,若在此命令后加上具体的告警序列号,可显示告警的具体信息。告警信息中有auto_fix字段,记录此告警是否已经消失,no代表故障仍然存在,yes代表硬件故障消失,以及一个二位数组,数组中记录故障器件的位置。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于无服务器架构的物联网数据异常检测方法及系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!