故障注入方法、装置、计算机设备以及可读存储介质
文献发布时间:2023-06-19 11:45:49
技术领域
本申请涉及计算机技术领域,特别是涉及一种故障注入方法、装置、计算机设备以及可读存储介质。
背景技术
高速串行计算机扩展总线标准(peripheral component interconnect express,PCIe)设备的类别较为复杂,包括网卡、磁盘阵列卡(Redundant Arrays of IndependentDisks,RAID)、主机总线适配器(host bus adapter,HBA)、图形处理器(graphicsprocessing unit,GPU)等各类设备。任何一种PCIe设备出现异常都会对业务的运行产生重要的影响,通过日志形式记录PCIe设备的异常状态,以便数据中心运维工程师对PCIe设备的异常进行处理,可以最大限度的降低PCIe设备异常对业务系统运行产生的影响。
为了了解PCIe设备的故障以及时进行故障分析、提供故障解决方案,可以对PCIe设备进行故障注入,即主动触发PCIe设备产生故障,以收集故障信息进行故障分析。目前,需要在现有系统基础上引入硬件模块,利用硬件模块实现针对PCIe设备的进行故障注入,成本投入高,适用性较低。
发明内容
本申请实施例提供一种故障注入方法、装置、计算机设备以及可读存储介质,能够提供普遍适用的故障注入方案,以及降低故障注入的成本投入。
第一方面,提供一种故障注入方法,包括:
根据待注入故障的目标设备,从预设的故障映射关系中确定目标故障标识;故障映射关系包括多个故障标识与多个设备之间的对应关系;
根据目标故障标识修改故障注入寄存器的值;
触发故障注入寄存器生效,以触发目标设备产生模拟故障。
第一方面中,通过修改计算机设备内部的故障注入寄存器的值设置故障注入,并触发预先设置的故障,模拟设备故障(例如,PCIe设备故障)。无需在现有系统基础上引入昂贵的硬件、软件产品,基于操作系统本身就可以实现针对设备的故障注入,该方案适用性较高,且大大节约了故障注入的成本投入
结合第一方面,在第一方面的一个实施例中,根据待注入故障的目标设备,从预设的故障映射关系中确定目标故障标识,包括:
确定目标设备的设备类型;
根据设备类型从故障映射关系中选择目标故障标识。
第一方面的一个实施例中,根据设备类型选择何时的故障,提高注入故障与设备的匹配度。
结合第一方面,在第一方面的一个实施例中,目标故障标识对应的故障为目标设备可修正的故障、目标设备不可修正的非致命故障或目标设备不可修正的致命故障。
第一方面的一个实施例中,提供了注入故障的几种类型。
结合第一方面,在第一方面的一个实施例中,目标设备为高速串行计算机扩展总线标准PCIE设备。
第一方面的一个实施例中,提供了一种故障注入的目标设备,可以实现对PCIE设备的故障注入。
结合第一方面,在第一方面的一个实施例中,根据目标故障标识修改故障注入寄存器的值,包括:
执行故障设置指令,以将目标故障标识写入故障注入寄存器中,覆盖故障注入寄存器的原始值。
第一方面的一个实施例中,提供了修改寄存器的具体实现,修改过程中覆盖寄存器原有的值,避免后续根据寄存器的值触发故障注入时出现混乱。
结合第一方面,在第一方面的一个实施例中,触发故障注入寄存器生效,包括:
获取故障注入触发操作表,故障注入触发操作表包括触发故障注入的操作指令;
执行操作指令以触发故障注入寄存器生效。
第一方面的一个实施例中,提供了设置故障类型后触发故障的具体实现。
结合第一方面,在第一方面的一个实施例中,所述方法还包括:
获取高级配置以及电源管理接口协议ACPI配置文件,执行ACPI配置文件进入故障注入的执行环境;
在执行环境下,执行故障注入文件打开指令,以获取故障注入文件;故障注入文件包括故障映射关系。
第一方面的一个实施例中,配置故障注入的执行环境,为故障注入流程的实现提供支撑。
结合第一方面,在第一方面的一个实施例中,所述方法还包括:在触发故障注入寄存器的值生效之前,清除目标设备相关的日志。
第一方面的一个实施例中,在故障注入前对日志数据进行清除,避免已有日志数据对本次故障注入的后续故障分析产生干扰。
第二方面,公开了一种故障注入装置,包括:
确定单元,用于根据待注入故障的目标设备,从预设的故障映射关系中确定目标故障标识;故障映射关系包括多个故障标识与多个设备之间的对应关系;
设置单元,用于根据目标故障标识修改故障注入寄存器的值;
触发单元,用于触发故障注入寄存器生效,以触发目标设备产生模拟故障。
第三方面,提供了一种计算机设备,该计算机设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述第一方面所述的方法的步骤。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时实现上述第一方面所述的方法的步骤。
本申请中,计算机设备(或服务器)通过修改计算机设备内部的故障注入寄存器的值设置故障注入,并触发预先设置的故障,模拟设备故障(例如,PCIe设备故障)。无需在现有系统基础上引入昂贵的硬件、软件产品,基于操作系统本身就可以实现针对设备的故障注入,该方案适用性较高,且大大节约了故障注入的成本投入。
附图说明
图1为本申请实施例提供的故障注入示意图;
图2为本申请实施例提供的服务器的架构示意图;
图3本申请实施例提供的故障注入方法的流程示意图;
图4本申请实施例提供的故障注入方法的另一流程示意图
图5本申请实施例提供的故障注入方法的另一流程示意图;
图6本申请实施例提供的故障注入方法的另一流程示意图;
图7为本申请实施例提供的故障注入装置的结构示意图;
图8为本申请实施例提供的故障注入装置的另一结构示意图;
图9为本申请实施例提供的计算机设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
首先,为方便对本申请实施例所提供技术方法的理解,对本申请实施例涉及的术语进行解释说明:
(1)故障注入
故障注入是一种可靠性验证技术,通过向计算机设备的系统中刻意引入故障,分析系统在故障发生时的行为,对系统运行状态进行评估。
示例的,参考图1,当向计算机设备注入故障后,计算机设备的日志并未记录与故障相关的错误数据,即计算机设备并未捕捉到注入的故障,则表明计算机设备系统运行本身存在异常,可以初步评估系统运行状态为异常。反之,当向计算机设备注入故障后,计算机设备的日志中记录了与故障相关的错误数据,即计算机设备能够捕捉到注入的故障,则表明计算机设备系统运行正常。
本申请实施例提供的用例构建方法适用于图2所示的计算机通信系统(也可以称为服务器)。参考图2,服务器内的设备可以通过总线与计算机设备内部的处理器进行交互。根据总线类型的不同,支持不同类型的设备与处理器进行交互。示例的,上述总线为PCIebus,符合PCIe总线标准的设备就被称为PCIe设备。PCIe同时也分为主设备和目标设备两种,主设备是一次访问操作的发起者,而目标设备则是被访问者。
计算机设备还可以包括基板管理控制器(baseboard management controller,BMC),可以实时监控服务器内部各个部件的健康状态,将设备的异常状态通过日志形式记录在BMC SEL中。例如,在BMC SEL中记录PCIe设备的异常数据,可以帮助运维工程师进行故障分析,可以最大限度的降低PCIe设备异常对业务系统运行产生的影响。
本申请实施例提供一种故障注入方法,执行主体可以是为图2所示的处理器。如图3所示,所述方法包括以下步骤:
步骤301、根据待注入故障的目标设备,从预设的故障映射关系中确定目标故障标识;
其中,故障映射关系包括多个故障标识与多个设备之间的对应关系。其中,故障标识可以是故障索引,与故障标识对应的设备可以是内存设备、PCIe设备等允许故障注入操作的设备。示例性的,上述故障映射关系包括的故障可以是处理器可修正的故障(Processor Correctable)、处理器不可修正的非致命故障(Processor Uncorrectablenon-fatal)、处理器不可修正的致命故障(Processor Uncorrectable fatal)、PCIe设备可修正的故障(PCI Express Correctable)、PCIe设备不可修正的非致命故障(PCI ExpressUncorrectable non-fatal)或PCIe设备不可修正的致命故障(PCI ExpressUncorrectable fatal)等,本申请实施例对进行故障注入的故障类型不做限制,以上未提及的故障类型也属于本申请的保护范围。
具体实现中,处理器执行故障注入启动指令(BEGIN_INJECTION_OPERAT ION)指令启动故障注入流程,允许设置服务器的操作环境。随后可以获取故障类型定义表(ErrorType Definition table),该表指示了即前文所述的故障映射关系。还可以执行故障类型设置指令(SET_ERROR_TYPE)从Error Type Definition table中选择目标故障标识,即待注入故障的类型。需要说明的是,在任何给定时间或同一时间只能注入一个ERROR_TYPE。
此外,处理器在从故障映射关系中确定目标故障标识时,需要结合故障注入的目标设备的情况,选择与目标设备匹配的故障。
步骤302、根据目标故障标识修改故障注入寄存器的值。
需要说明的是,执行步骤302修改故障注入寄存器的值是为了设置待注入故障。
其中,故障注入寄存器为记录故障类型的寄存器,其中的值可以指示待注入的故障,例如,故障注入寄存器的值可以指示故障标识。处理器可以根据待注入的故障的标识修改故障注入寄存器的值,实现待注入故障的设置,将待输入故障设置为目标故障标识对应的故障。
具体实现中,处理器执行故障设置指令后,启动故障设置流程。处理器还可以执行寄存器读指令(READ_REGISTER_VALUE)读取故障注入寄存器当前的值,随后处理器还可以执行寄存器写指令(WRITE_REGISTER_VALUE)将目标故障标识对应的值写入故障注入寄存器,以设置待注入故障为目标故障标识对应的故障。
步骤303、触发故障注入寄存器生效,以触发目标设备产生模拟故障。
需要说明的是,本申请实施例中故障注入流程包括两个过程,一个是故障设置过程,具体可以由以上步骤301和302实现。另一个过程为故障触发过程,即在设置待注入的故障后,触发故障,具体可以由步骤303实现。
具体实现中,使用SET_ERROR_TYPE完成故障设置后,还可以触发故障,以实现故障注入。处理器可以调用GET_TRIGGER_ERROR_ACTION_TABLE操作,该操作返回指向“触发错误操作”表的指针。根据该指针可以访问“触发错误操作”,执行其中的指令条目,触发注入的故障。
本申请实施例提供的方法中,并不会使设备真正产生故障,而是通过软件模拟故障,上报故障消息,不会导致设备的硬件损耗。此外,在故障注入流程中,无需在现有系统基础上引入昂贵的硬件、软件产品,基于操作系统本身就可以实现针对设备的故障注入,该方案适用性较高,且大大节约了故障注入的成本投入。
一种可能的实现方式中,上述根据待注入故障的目标设备,从预设的故障映射关系中确定目标故障标识的步骤的具体实现包括:确定目标设备的设备类型,根据上述设备类型从故障映射关系中选择目标故障标识。也就是说,所选择的目标故障标识对应的故障与目标设备的设备类型匹配,目标设备可能出现目标故障标识对应的一个故障或一种故障。
也就是说,根据故障注入的目标设备的类型从故障映射关系中选择与目标设备的设备类型相匹配的故障类型,该类型故障的标识即为上述目标故障标识。
示例性的,目标故障标识对应的故障的类型包括但不限于:为目标设备可修正的故障、目标设备不可修正的非致命故障或目标设备不可修正的致命故障。
示例性的,上述目标设备的设备类型为PCIe类型。即上述目标设备为PCIe设备,本申请实施例提供的方法适用于针对PCIe设备的故障注入。
一种可能的实现方式中,上述根据目标故障标识修改故障注入寄存器的值,以设置待注入故障为目标故障标识对应的故障的步骤的具体实现包括:执行故障设置指令,以将目标故障标识写入故障注入寄存器,覆盖故障注入寄存器的原始值。具体地,将目标故障标识的值写入故障注入寄存器,目标故障标识的值可以是二进制数值或十六进制数值等计算机可识别的数值,本申请实施例对此不作限制。
示例性的,读取故障注入寄存器的当前值,若当前值对应的故障类型(故障标识)与待注入的故障不匹配,则在故障注入寄存器写入目标故障标识的值,覆盖故障注入寄存器的当前值。其中,故障注入寄存器的当前值可以是上一次注入故障的故障类型的值。也就是说,若上一次注入故障和本次注入故障相同,可以不修改故障注入寄存器当前的值,触发故障注入寄存器生效,则可以触发目标设备产生模拟故障。
例如,针对目标设备可注入的故障的标识包括1、2、3,上一次通过修改故障寄存器的方式注入故障时所选故障的标识为2,则故障注入寄存器的当前值可以为“2”的类型的二进制值“10”。假设本次故障注入的故障标识为1,则可以将故障注入寄存器的当前值修改为“1”的二进制值“01”;假设本次故障注入的故障标识为2,则可以不修改故障注入寄存器的当前值。
一种可能的实现方式中,上述触发所述故障注入寄存器生效的步骤的具体实现包括:
获取故障注入触发操作表,故障注入触发操作表包括触发故障注入的操作指令;执行故障注入触发操作表中用于触发故障注入的操作指令,以触发所述故障注入寄存器生效,从而使得目标设备模拟目标故障,例如,目标设备并未出现真实的硬件或软件故障,只是上报故障消息。
示例性的,处理器可以调用GET_TRIGGER_ERROR_ACTION_TABLE操作,获取故障注入触发操作表。例如,该操作返回指向“故障注入触发操作表”表的指针,根据该指针可以访问“故障注入触发操作表”。执行故障注入触发操作表中的指令条目,可以生效故障注入寄存器的值并触发注入的故障。其中,生效故障注入寄存器的值、触发目标故障标识对应的故障可以认为是执行触发故障注入的操作指令后产生的两个结果。
本申请实施例中,执行故障注入流程之前,还可以配置故障注入流程的执行环境。示例性的,可以配置适用于高级配置以及电源管理接口协议(advanced configurationand power management interface,ACPI)的执行环境。具体地,参考图4,上述配置故障注入的执行环境的流程具体包括以下步骤:
步骤401、获取ACPI配置文件,执行所述ACPI配置文件进入故障注入的执行环境;
其中,ACPI配置文件可以是可执行文件,执行ACPI配置文件可以进入到故障注入的执行环境。
步骤402、在故障注入的执行环境下,执行故障注入文件打开指令,以获取故障注入文件;故障注入文件包括上述故障映射关系。
其中,故障注入文件包括故障注入相关的一些表格(table),table中包括进行故障注入的一些操作指令和参数。table中包括的操作指令用于触发故障注入的流程节点,例如,可以是用于启动故障注入流程的指令、设置故障的指令等。table中包括的参数可以是与故障注入实现相关的参数,例如,可以是指示上述故障映射关系的参数。
另外,指令以及故障注入文件打开指令可以是cd命令,根据故障注入文件的目录获取故障注入文件。获取故障注入文件后才可以执行故障注入的相关指令、设置故障注入的相关参数,以实现故障注入。
本申请实施例中,实现故障注入后还可以根据日志信息对服务器的运行状态进行检测。例如,参考图5,上述故障注入方法还包括以下步骤:
步骤501、获取目标设备相关的日志,判断目标设备相关的日志是否包括目标故障标识对应的故障的记录信息。
其中,目标设备相关的日志包括记录目标设备运行错误的日志,例如,目标设备相关的日志包括操作系统日志和/或基板管理控制器日志。其中,操作系统日志为操作系统级别的日志,例如,Linux操作系统的日志。基板管理控制器日志可以是BMC的日志,例如,前文所述的BMC SEL。
需要说明的是,在故障注入并触发故障后,需要检测目标设备对注入故障的反应,以此来判断目标设备是否正常运行。当目标设备检测到注入的故障,则会上报故障信息,这些故障信息可以被记录在相关的日志中。也就是说可以判断目标设备相关的日志是否包括目标故障标识对应的故障的记录信息,以此来判断目标设备是否上报了注入的故障。
步骤502、若目标设备相关的日志包括目标故障标识对应的故障的记录信息,则确定目标设备运行正常;若目标设备相关的日志不包括目标故障标识对应的故障的记录信息,则确定目标设备运行异常。
需要说明的是,若目标设备相关的日志包括目标故障标识对应的故障的记录信息,则表明目标设备检测到了注入的故障并且上报了故障数据,从而可以确定目标设备运行正常。
若目标设备相关的日志不包括目标故障标识对应的故障的记录信息,则表明目标设备未检测到注入的故障,或未上报故障数据,或,检测到了注入的故障但未上报故障数据,则确定目标设备运行异常。
一种可能的实现方式中,本申请实施例提供的方法还包括:在触发故障注入寄存器的值生效之前,清除目标设备相关的日志。
也就是说,在本次故障注入触发之前,清除目标设备相关的日志,避免相关日志中已有的故障数据对本次故障注入触发的故障数据进行干扰,更准确的监控目标设备的状态。
本申请实施例还提供一种故障注入方法,可以对PCIe设备进行自动化的故障注入以及基于故障检测对PCIe设备的运行状态进行检测。如图6所示,所述方法包括以下步骤:
步骤601、对与PCIe设备相关的日志进行初始化;
其中,与PCIe设备相关的日志即记录PCIe设备故障数据(故障信息)的日志,对与PCIe设备相关的日志进行初始化可以是对与PCIe设备相关的日志进行清除。
示例的,与PCIe设备相关的日志可以是操作系统的日志或BMC SEL日志。处理器在Linux OS下执行dmesg–C命令清除系统日志,执行ipmitool SEL clear命令清除BMC SEL日志。
步骤602、根据PCIe设备适用的标准配置故障注入的执行环境;
具体实现中,PCIe设备适用的标准可以是高级配置和电源管理接口(advancedconfiguration and power management interface,ACPI)标准,可以获取ACPI驱动文件,根据ACPI驱动文件配置故障注入的执行环境。
示例性的,处理器在linux OS加载ACPI驱动模块,还可以在ACPI驱动模块下的目录中获取ACPI驱动文件,ACPI驱动文件可以对PCIe协议的数据进行协议转化,以支持PCIe设备与其它设备(例如CPU)之间的交互,保证对PCIe设备进行故障注入的可执行环境。
一种可能的实现方式中,执行modprobe einj命令加载ACPI驱动模块,执行cd/sys/kernel/debug/apei/einj命令进入到驱动模块目录下,从中获取ACPI驱动文件。
步骤603、设置待注入的故障为PCIE类型匹配的故障;
具体实现中,PCIE类型匹配的故障可以是PCIe设备可修正的故障(PCI ExpressCorrectable)、PCIe设备不可修正的非致命故障(PCI Express Uncorrectable non-fatal)或PCIe设备不可修正的致命故障(PCI Express Uncorrectable fatal)。处理器可以执行SET_ERROR_TYPE选择上述故障中的任意一个,还可以根据所选择的故障的标识修改故障注入寄存器的值,设置待注入的故障。
一种可能的实现方式中,处理器执行echo 0x40>error_type命令,将故障类型设置为PCIE可修正类故障(或PCIE不可修正的非致命故障或PCIE不可修正的致命故障)。
步骤604、触发注入的故障;
需要说明的是,完成故障设置后,还可以触发故障,以实现故障注入。具体地,可以执行echo 1>error_inject命令触发注入的故障。
步骤605、检查相关日志,根据检查结果对故障注入的PCIe设备的性能进行评估。
示例性的,检查系统日志或BMC SEL日志是否产生PCIe类型的错误数据。具体地,可以执行dmesg命令检查系统日志是否产生PCIe类型的错误数据,执行ipmitool SEL list检查BMC SEL日志是否产生PCIe类型的错误数据。
若系统日志或BMC SEL日志中包括PCIe类型的错误数据,则确定故障注入的PCIe设备运行正常;若系统日志或BMC SEL日志中不包括PCIe类型的错误数据,则确定故障注入的PCIe设备运行异常。
其中,PCIe类型的错误数据可以是记录PCIe设备可修正的故障的错误数据,或者记录PCIe设备不可修正的非致命故障的错误数据,或者记录PCIe设备不可修正的致命故障的错误数据。
图6所示的方法中,在本次故障注入触发之前,清除目标设备相关的日志,避免相关日志中已有的故障数据对本次故障注入触发的故障数据进行干扰,更准确的监控目标设备的状态。通过修改计算机设备内部的故障注入寄存器的值设置故障注入,并触发预先设置的故障,模拟设备故障(例如,PCIe设备故障)。无需在现有系统基础上引入昂贵的硬件、软件产品,基于操作系统本身就可以实现针对设备的故障注入,该方案适用性较高,且大大节约了故障注入的成本投入。
本申请实施例提供一种故障注入装置,该故障注入装置可以是本申请实施例的服务器。如图7所示,该故障注入装置包括:确定单元701、设置单元702以及触发单元703。
确定单元701,用于根据待注入故障的目标设备,从预设的故障映射关系中确定目标故障标识;故障映射关系包括多个故障标识与多个设备之间的对应关系;
设置单元702,用于根据目标故障标识修改故障注入寄存器的值;
触发单元703,用于触发故障注入寄存器生效,以触发目标设备产生模拟故障。
一种可能的实现方式中,确定单元701具体用于,确定目标设备的设备类型;根据设备类型从故障映射关系中选择目标故障标识;目标故障标识对应的故障与目标设备的设备类型匹配。
一种可能的实现方式中,目标故障标识对应的故障为目标设备可修正的故障、目标设备不可修正的非致命故障或目标设备不可修正的致命故障。
一种可能的实现方式中,目标设备为高速串行计算机扩展总线标准PCIE设备。
一种可能的实现方式中,设置单元702具体用于,执行故障设置指令,以将目标故障标识写入故障注入寄存器中,覆盖故障注入寄存器的原始值。
一种可能的实现方式中,触发单元703具体用于,获取故障注入触发操作表,故障注入触发操作表包括触发故障注入的操作指令;
执行操作指令以触发故障注入寄存器生效。
一种可能的实现方式中,设置单元702还用于,获取高级配置以及电源管理接口协议ACPI配置文件,执行ACPI配置文件进入故障注入的执行环境;
在执行环境下,执行故障注入文件打开指令,以获取故障注入文件;故障注入文件包括故障映射关系。
一种可能的实现方式中,参考图8,上述故障注入装置还包括检测单元704。检测单元704用于,获取目标设备相关的日志,判断目标设备相关的日志是否包括目标故障标识对应的故障的记录信息;
若目标设备相关的日志包括目标故障标识对应的故障的记录信息,则确定目标设备运行正常;若目标设备相关的日志不包括目标故障标识对应的故障的记录信息,则确定目标设备运行异常。
一种可能的实现方式中,检测单元704还用于,在触发故障注入寄存器的值生效之前,清除目标设备相关的日志。
一种可能的实现方式中,目标设备相关的日志包括操作系统日志和/或基板管理控制器日志。
本申请实施例提供的故障注入装置,通过修改计算机设备内部的故障注入寄存器的值设置故障注入,并触发预先设置的故障,模拟设备故障(例如,PCIe设备故障)。无需在现有系统基础上引入昂贵的硬件、软件产品,基于操作系统本身就可以实现针对设备的故障注入,该方案适用性较高,且大大节约了故障注入的成本投入。
本申请实施例还提供了一种计算机设备,该计算机设备可以是服务器,例如,本申请实施例前文所述的云端服务器。其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库可以存储配置信息、权限信息等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现本申请实施例图3~图6所示的方法中由服务器执行的步骤。
例如,根据待注入故障的目标设备,从预设的故障映射关系中确定目标故障标识;故障映射关系包括多个故障标识与多个设备之间的对应关系;
根据目标故障标识修改故障注入寄存器的值;
触发故障注入寄存器生效,以触发目标设备产生模拟故障。
在一个实施例中,还可以支持计算机设备确定目标设备的设备类型;根据设备类型从故障映射关系中选择目标故障标识。
其中,目标故障标识对应的故障为目标设备可修正的故障、目标设备不可修正的非致命故障或目标设备不可修正的致命故障。目标设备的设备类型为高速串行计算机扩展总线标准PCIE类型。
在一个实施例中,还可以支持计算机设备获取故障注入触发操作表,故障注入触发操作表包括触发故障注入的操作指令;
执行操作指令以触发故障注入寄存器生效。
在一个实施例中,还可以支持计算机设备获取高级配置以及电源管理接口协议ACPI配置文件,执行ACPI配置文件进入故障注入的执行环境;
在执行环境下,执行故障注入文件打开指令,以获取故障注入文件;故障注入文件包括故障映射关系。
在一个实施例中,还可以支持计算机设备在触发故障注入寄存器的值生效之前,清除目标设备相关的日志。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时支持服务器实现以下步骤:
根据待注入故障的目标设备,从预设的故障映射关系中确定目标故障标识;故障映射关系包括多个故障标识与多个设备之间的对应关系;
根据目标故障标识修改故障注入寄存器的值;
触发故障注入寄存器生效,以触发目标设备产生模拟故障。
在其中一个实施例中,参考图9,计算机程序被处理器执行时支持服务器确定目标设备的设备类型,根据设备类型从多个故障标识中选择目标故障标识;目标故障标识对应的故障与目标设备的设备类型匹配。
一种可能的实现方式中,目标故障标识对应的故障为目标设备可修正的故障、目标设备不可修正的非致命故障或目标设备不可修正的致命故障。目标设备的设备类型为高速串行计算机扩展总线标准PCIE类型。
在其中一个实施例中,计算机程序被处理器执行时支持服务器执行故障设置指令,以将目标故障标识写入故障注入寄存器中,覆盖故障注入寄存器的原始值。
在其中一个实施例中,计算机程序被处理器执行时支持服务器获取故障注入触发操作表,故障注入触发操作表包括触发故障注入的操作指令;
执行操作指令以触发故障注入寄存器生效。
在其中一个实施例中,计算机程序被处理器执行时支持服务器获取高级配置以及电源管理接口协议ACPI配置文件,执行ACPI配置文件进入故障注入的执行环境;
在执行环境下,执行故障注入文件打开指令,以获取故障注入文件;故障注入文件包括故障映射关系
在其中一个实施例中,计算机程序被处理器执行时支持服务器获取目标设备相关的日志,判断目标设备相关的日志是否包括目标故障标识对应的故障的记录信息;
若目标设备相关的日志包括目标故障标识对应的故障的记录信息,则确定目标设备运行正常;若目标设备相关的日志不包括目标故障标识对应的故障的记录信息,则确定目标设备运行异常。
在其中一个实施例中,计算机程序被处理器执行时支持服务器在触发故障注入寄存器的值生效之前,清除目标设备相关的日志。
一种可能的实现方式中,目标设备相关的日志包括操作系统日志和/或基板管理控制器日志。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
- 故障注入方法、装置、计算机设备以及可读存储介质
- 故障注入测试的控制方法、设备及计算机可读存储介质