CN116382968A - 外部设备的故障检测方法以及装置 - Google Patents

外部设备的故障检测方法以及装置 Download PDF

Info

Publication number
CN116382968A
CN116382968A CN202310657313.3A CN202310657313A CN116382968A CN 116382968 A CN116382968 A CN 116382968A CN 202310657313 A CN202310657313 A CN 202310657313A CN 116382968 A CN116382968 A CN 116382968A
Authority
CN
China
Prior art keywords
log
bios
register data
error
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202310657313.3A
Other languages
English (en)
Other versions
CN116382968B (zh
Inventor
汪浩
王兴隆
李金锋
翟庆伟
杨濠宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202310657313.3A priority Critical patent/CN116382968B/zh
Publication of CN116382968A publication Critical patent/CN116382968A/zh
Application granted granted Critical
Publication of CN116382968B publication Critical patent/CN116382968B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请实施例提供了一种外部设备的故障检测方法以及装置,该方法包括:在目标信息包括第一错误信息的情况下,向外部设备中注入第一错误信息,在目标信息包括第一寄存器数据的情况下,向BIOS发送第一寄存器数据,第一寄存器数据为模拟外部设备的寄存器响应于第二错误信息生成的寄存器数据;获取BIOS上报的第一日志和/或第二日志,第二寄存器数据为寄存器响应于第一错误信息生成的寄存器数据;根据第一日志以及第一错误信息对应的标准寄存器数据,确定外部设备的运行状态,和/或,根据第二日志以及第一寄存器数据对应的标准日志,确定BIOS的运行状态,运行状态为故障状态或者正常状态。

Description

外部设备的故障检测方法以及装置
技术领域
本申请实施例涉及计算机领域,具体而言,涉及一种外部设备的故障检测方法、装置、计算机可读存储介质、处理器以及服务器的故障检测系统。
背景技术
近年来,在服务器领域,PCIe(Peripheral Component Interconnect Express,高速串行计算机扩展总线标准)设备凭借其高速串行点对点双通道高带宽传输,支持主动电源管理、错误报告、端对端的可靠性传输、热插拔以及服务质量(Quality of Service,简称为QoS)等功能特点,得到广泛应用。同时为了应对运行时PCIe设备运行时可能出现的各式各样的可纠正错误或不可纠正错误,PCIe协议规范了IIO( Integrated I/O module)、Aer( PCIe advanced error reporting)以及edpc(downstream port containment)等一系列错误上报与恢复机制,得益于上述完善的机制,诸如UEFI(Unified Extensible FirmwareInterface,统一可扩展固件接口),Coreboot等BIOS解决方案,根据上述机制保存在对应寄存器中的数值,实现了多种多样PCIe故障处理流程,包括但不限于:PCIe可纠正错误阈值,不可纠正错误的处理介质,如OS(Operating System,操作系统)内核或BIOS(Basic InputOutput System,基本输入输出系统),PCIe错误的上报机制,如记录为BMC(BaseboardManagement Controller,基板管理控制器)端SEL(日志),还是OS内核端的elog等。
为了实现并验证这些复杂的PCIe故障处理流程,目前业界最主要的实现方式为使用XDP工具或einj工具进行模拟注错,观察上述寄存器中数值是否正确响应,进一步对错误处理,错误上报,错误恢复的流程进行验证。这种实现依赖于注错工具,测试脚本难以系统集成。同时,在注错完成(或者真实错误产生)后上述寄存器中数值是否正确响应往往由PCIe设备本身或者CPU特性决定,不正确响应的情况下无法有效定位故障点。
发明内容
本申请实施例提供了一种外部设备的故障检测方法、装置、计算机可读存储介质、处理器以及服务器的故障检测系统,以至少解决相关技术中外部设备的故障定位方案无法有效定位故障点的问题。
根据本申请的一个实施例,提供了一种外部设备的故障检测方法,外部设备与BIOS通信连接,所述方法包括:S1,根据目标信息,执行预设操作,其中,在所述目标信息包括第一错误信息的情况下,执行向外部设备中注入所述第一错误信息的所述预设操作,在所述目标信息包括第一寄存器数据的情况下,执行向所述BIOS发送所述第一寄存器数据的所述预设操作,所述第一寄存器数据为模拟所述外部设备的寄存器响应于第二错误信息生成的寄存器数据;S2,获取所述BIOS上报的第一日志和/或第二日志,所述第一日志为所述BIOS对第二寄存器数据进行解析得到的日志,所述第二寄存器数据为所述寄存器响应于所述第一错误信息生成的寄存器数据,所述第二日志为所述BIOS对所述第一寄存器数据进行解析得到的日志;S3,根据所述第一日志以及所述第一错误信息对应的标准寄存器数据,确定所述外部设备的运行状态,和/或,根据所述第二日志以及所述第一寄存器数据对应的标准日志,确定所述BIOS的运行状态,所述运行状态为故障状态或者正常状态。
在一些示例性实施例中,在所述S1之前,所述方法还包括:在所述BIOS启动的情况下,获取所述BIOS的标志位信息,所述标志位信息为表征所述BIOS的运行环境的信息;在所述标志位信息为目标标志位的情况下,确定所述BIOS的运行环境为开发环境;在所述标志位信息不为所述目标标志位的情况下,确定所述BIOS的运行环境为非开发环境。
在一些示例性实施例中,所述S1包括:在所述BIOS的运行环境为所述开发环境,根据所述目标信息,执行所述预设操作。
在一些示例性实施例中,在所述BIOS的运行环境为非开发环境的情况下,所述方法还包括:利用注错工具不断模拟生成所述外部设备的第三错误信息;在第三错误信息的累计数量达到所述BIOS的报错抑制功能限定的预设阈值后,确定BMC日志中是否存在新增错误日志;在所述BMC日志中存在所述新增错误日志的情况下,确定外部设备未通过测试;在所述BMC日志中不存在所述新增错误日志的情况下,确定外部设备通过测试。
在一些示例性实施例中,所述S1包括以下至少之一:从第一测试用例库中调用包括所述第一错误信息以及所述标准寄存器数据的第一测试用例,并根据所述第一测试用例,执行向所述外部设备中注入所述第一错误信息的所述预设操作,所述第一测试用例库中包括多个所述第一测试用例,不同的所述第一测试用例对应的所述第一错误信息不同;从第二测试用例库中调用包括所述第一寄存器数据以及所述标准日志的第二测试用例,并根据所述第二测试用例,执行向所述BIOS发送所述第二寄存器数据的所述预设操作,所述第二测试用例库包括多个所述第二测试用例,不同的所述第二测试用例对应的所述第一寄存器数据不同。
在一些示例性实施例中,在所述S3之后,所述方法还包括:S4,从所述第一测试用例库中调用新的所述第一测试用例和/或从所述第二测试用例库中调用新的所述第二测试用例;循环步骤,循环执行所述S4、所述S1、所述S2以及所述S3预定次数,直到从所述第一测试用例库中调用完所有的所述第一测试用例和/或从所述第二测试用例库中调用完所有的所述第二测试用例。
在一些示例性实施例中,在所述循环步骤之后,所述方法还包括以下至少之一:根据所述外部设备的运行状态与对应的各所述标准寄存器数据,生成第一测试报告,并将所述第一测试报告发送至显示终端,以使得所述显示终端显示所述第一测试报告;根据所述BIOS的运行状态与对应的各所述第一寄存器数据,生成第二测试报告,并将所述第二测试报告发送至显示终端,以使得所述显示终端显示所述第二测试报告。
在一些示例性实施例中,所述第一测试用例还包括所述第一错误信息的注入方式。
在一些示例性实施例中,执行向外部设备中注入所述第一错误信息的所述预设操作,包括:远程登陆所述外部设备的操作系统;在远程登陆至所述外部设备的操作系统的情况下,控制注错工具向所述外部设备的端口注入所述第一错误信息。
在一些示例性实施例中,执行向BIOS发送所述第二寄存器数据的所述预设操作,包括:远程登陆所述BIOS;在远程登陆至所述BIOS的情况下,生成携带有所述第二寄存器数据的中断指令;将所述中断指令发送至所述BIOS,使得所述BIOS响应于所述中断指令,对所述外部设备进行故障信息处理,生成所述第二日志。
在一些示例性实施例中,远程登陆所述BIOS,包括:通过SSH(Struts,Spring,Hibernate或SpringMVC,Spring,Hibernate)通道登陆所述BIOS。
在一些示例性实施例中,根据所述第一日志以及所述第一错误信息对应的标准寄存器数据,确定所述外部设备的运行状态,包括:从所述第一日志中提取得到所述第二寄存器数据;在所述第二寄存器数据与所述标准寄存器数据不同的情况下,确定所述外部设备的运行状态为所述故障状态;在所述第二寄存器数据与所述标准寄存器数据相同的情况下,确定所述外部设备的运行状态为所述正常状态。
在一些示例性实施例中,根据所述第二日志以及所述第一寄存器数据对应的标准日志,确定所述BIOS的运行状态,包括:在所述第二日志与所述标准日志不同的情况下,确定所述BIOS的运行状态为所述故障状态;在所述第二日志与所述标准日志相同的情况下,确定所述BIOS的运行状态为所述正常状态。
在一些示例性实施例中,根据所述第二日志以及所述第一寄存器数据对应的标准日志,确定所述BIOS的运行状态,包括:从所述第二日志中提取得到发生故障的所述外部设备的实际位置信息以及发生错误的所述外部设备对应的实际寄存器数据;从所述标准日志中提取得到标准出错位置信息;在所述实际位置信息与所述标准出错位置信息不同,或者所述实际寄存器数据与所述第一寄存器数据不同的情况下,确定所述BIOS的运行状态为所述故障状态;在所述实际位置信息与所述标准出错位置信息相同,且所述实际寄存器数据与所述第一寄存器数据相同的情况下,确定所述BIOS的运行状态为所述正常状态。
在一些示例性实施例中,所述外部设备包括PCIe设备。
根据本申请的另一个实施例,提供了一种外部设备的故障检测装置,外部设备与BIOS通信连接,所述装置包括:执行单元,用于S1,根据目标信息,执行预设操作,其中,在所述目标信息包括第一错误信息的情况下,执行向外部设备中注入所述第一错误信息的所述预设操作,在所述目标信息包括第一寄存器数据的情况下,执行向所述BIOS发送所述第一寄存器数据的所述预设操作,所述第一寄存器数据为模拟所述外部设备的寄存器响应于第二错误信息生成的寄存器数据;第一获取单元,用于S2,获取所述BIOS上报的第一日志和/或第二日志,所述第一日志为所述BIOS对第二寄存器数据进行解析得到的日志,所述第二寄存器数据为所述寄存器响应于所述第一错误信息生成的寄存器数据,所述第二日志为所述BIOS对所述第一寄存器数据进行解析得到的日志;第一确定单元,用于S3,根据所述第一日志以及所述第一错误信息对应的标准寄存器数据,确定所述外部设备的运行状态,和/或,根据所述第二日志以及所述第一寄存器数据对应的标准日志,确定所述BIOS的运行状态,所述运行状态为故障状态或者正常状态。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述任一种方法实施例中的步骤。
根据本申请的再一个实施例,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行任一种所述的方法的步骤。
根据本申请的另一个实施例,还提供了一种服务器的故障检测系统,包括:PCIe设备;BIOS,与所述PCIe设备通信连接,所述BIOS用于对所述PCIe设备进行故障信息处理,生成日志;测试设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述任一种方法实施例中的步骤,以对所述PCIe设备和/或所述BIOS的运行状态进行检测。
在一些示例性实施例中,所述服务器还包括:BMC,与所述BIOS通信,所述BIOS还用于将所述日志发送至所述BMC,所述BMC用于根据所述日志生成BMC日志。
通过本申请,实现了外部设备与BIOS的故障检测解耦,即在对外部设备进行检测的过程中,如需要检测外部设备是否发生故障,只需通过向外部设备中注入第一错误信息、获取所述BIOS上报的第一日志、以及根据第一日志以及标准寄存器数据来确定,而如需要检测BIOS是否发生故障,只需通过向BIOS发送第一寄存器数据、获取所述BIOS上报的第二日志、以及根据该第二日志以及标准日志来确定,实现了精确定位到错误位置是BIOS还是外部设备自身的效果,有效解决了现有技术中外部设备的故障定位方案无法有效定位故障点的问题,减少了故障测试过程的故障之间的耦合度,提高了外部设备故障处理流程的效率及可靠性。
附图说明
图1示出了根据本申请的实施例中提供的外部设备的故障检测方法的移动终端的硬件结构框图;
图2是根据本申请实施例的外部设备的故障检测方法的流程图;
图3是根据本申请实施例的一种外部设备的故障检测方法的流程图;
图4是根据本申请实施例的另一种外部设备的故障检测方法的流程图;
图5是根据本申请实施例的再一种外部设备的故障检测方法的流程图;
图6是根据本申请实施例的外部设备的故障检测装置的结构框图。
其中,上述附图包括以下附图标记:
102、处理器;104、存储器;106、传输设备;108、输入输出设备。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本申请实施例的一种外部设备的故障检测方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,所述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对所述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的外部设备的故障检测方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现所述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。所述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。所述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于所述移动终端的外部设备的故障检测方法,外部设备与BIOS通信连接,图2是根据本申请实施例的外部设备的故障检测方法的流程图,如图2所示,该流程包括如下步骤:
步骤S1,根据目标信息,执行预设操作,其中,在所述目标信息包括第一错误信息的情况下,执行向外部设备中注入所述第一错误信息的所述预设操作,在所述目标信息包括第一寄存器数据的情况下,执行向所述BIOS发送所述第一寄存器数据的所述预设操作,所述第一寄存器数据为模拟所述外部设备的寄存器响应于第二错误信息生成的寄存器数据;
具体地,所述目标信息可以仅包括所述第一错误信息,也可以仅包括所述第一寄存器数据,还可以包括所述第一错误信息以及所述第一寄存器数据。所述第一错误信息以及所述第二错误信息为不符合代码运行逻辑的错误数据,所述第一错误信息和所述第二错误信息可从历史故障案例中提炼总结形成的案例数据库获取或从理论上推测可能发生错误的错误数据。在正常情况下,外部设备出错时外部设备的寄存器会响应该错误信息,生成反映错误信息的寄存器数据,本申请的所述第一寄存器数据就是模拟寄存器在正常响应所述第二错误信息时生成的寄存器数据而得到的数据,同样地,该第一寄存器数据也可以从历史故障案例中提炼总结形成的案例数据库获取,或者从理论上推测可能发生错误的错误数据对应的寄存器数据得到。
步骤S2,获取所述BIOS上报的第一日志和/或第二日志,所述第一日志为所述BIOS对第二寄存器数据进行解析得到的日志,所述第二寄存器数据为所述寄存器响应于所述第一错误信息生成的寄存器数据,所述第二日志为所述BIOS对所述第一寄存器数据进行解析得到的日志;
具体地,在执行向外部设备中注入所述第一错误信息的所述预设操作的情况下,获取所述BIOS上报的第一日志;在执行向所述BIOS发送所述第一寄存器数据的所述预设操作的情况下,获取所述BIOS上报的第二日志。所述第二寄存器数据为所述寄存器响应于所述第一错误信息生成的真实的寄存器数据。所述BIOS通过所述寄存器来传递数据和执行指令,所述BIOS对对应的寄存器数据进行解析,从而得到发生错误的外部设备的信息和错误源信息,将所述寄存器数据、发生错误的外部设备的信息以及错误源信息生成日志并上报给BMC或者OS,其中,错误源信息包括外部设备的错误类型,如包括可修复错误以及不可修复错误等类型,发生错误的外部设备的信息具体包括发生错误的外部设备的位置信息。
步骤S3,根据所述第一日志以及所述第一错误信息对应的标准寄存器数据,确定所述外部设备的运行状态,和/或,根据所述第二日志以及所述第一寄存器数据对应的标准日志,确定所述BIOS的运行状态,所述运行状态为故障状态或者正常状态。
具体地,所述标准寄存器数据为在所述寄存器正常的情况下响应于所述第一错误信息生成的寄存器数据。所述标准日志为在所述BIOS处于正常状态的情况下,按照错误处理流程进行处理,对所述第一寄存器数据进行解析得到的日志。具体应用中可以通过调用日志查看工具,来查看所述第一日志以及所述第二日志的日志信息。
通过所述步骤,首先向外部设备中注入第一错误信息,和/或向BIOS发送模拟寄存器响应于第二错误信息生成的第一寄存器数据;然后,获取BIOS解析所述第二寄存器数据得到的第一日志,该第二寄存器数据为寄存器响应于所述第一错误信息生成的数据,和/或获取BIOS解析第一寄存器数据得到的第二日志;最后,根据该第一日志和标准寄存器数据,确定外部设备是否为正常的运行状态,和/或根据该第二日志以及标准日志,确定BIOS是否为正常的运行状态,实现了外部设备与BIOS的故障检测解耦,即在对外部设备进行检测的过程中,如需要检测外部设备是否发生故障,只需通过向外部设备中注入第一错误信息、获取所述BIOS上报的第一日志、以及根据第一日志以及标准寄存器数据来确定,而如需要检测BIOS是否发生故障,只需通过向BIOS发送第一寄存器数据、获取所述BIOS上报的第二日志、以及根据该第二日志以及标准日志来确定,实现了精确定位到错误位置是BIOS还是外部设备自身的效果,有效解决了现有技术中外部设备的故障定位方案无法有效定位故障点的问题,减少了故障测试过程的故障之间的耦合度,提高了外部设备故障处理流程的效率及可靠性。
需要说明的是,所述外部设备的运行状态即为所述外部设备的寄存器的运行状态,具体为寄存器是否可以正常响应外部设备的错误信息。
本申请确定所述寄存器的运行状态结果并不依赖于注错工具版本是否匹配、注错前BIOS配置是否正确以及注错操作是否正确等的结果。同理,本申请确定所述BIOS的运行状态结果也不依赖于寄存器的运行状态,实现了外部设备故障处理流程的解耦,整个处理流程不存在不确定性,能够对故障位置进行准确定位,可以达到较好的检测效果。
具体地,可以存储在BIOS的NVRAM区域创建寄存器数据结构,根据真实的历史故障案例设置该第一寄存器数据结构中的每项数值,得到所述第一寄存器数据。
其中,所述步骤的执行主体可以为终端等,但不限于此。
在一些示例性实施例中,在所述S1之前,所述方法还包括:在所述BIOS启动的情况下,获取所述BIOS的标志位信息,所述标志位信息为表征所述BIOS的运行环境的信息;在所述标志位信息为目标标志位的情况下,确定所述BIOS的运行环境为开发环境;在所述标志位信息不为所述目标标志位的情况下,确定所述BIOS的运行环境为非开发环境。在进行外部设备的故障检测前,先判断BIOS的运行环境,再根据运行环境执行该故障检测方案。
在此基础上,所述S1包括:在所述BIOS的运行环境为所述开发环境,根据所述目标信息,执行所述预设操作。也就是说,本申请是在开发环境下对外部设备进行故障检测的方案。
具体地,所述目标标志位可以为任意的标志信息。所述BIOS用于初始化所述外部设备,具体包括检测外部设备是否正常工作,并对外部设备进行配置和初始化。在对外部设备进行初始化后,BIOS会进行自检,包括检测系统信息、检查硬件设备和执行启动操作系统等。
根据一些其他实施例,在所述BIOS的运行环境为非开发环境的情况下,所述方法还包括:利用注错工具不断模拟生成所述外部设备的第三错误信息;在第三错误信息的累计数量达到所述BIOS的报错抑制功能限定的预设阈值后,确定BMC日志中是否存在新增错误日志;在所述BMC日志中存在所述新增错误日志的情况下,确定外部设备未通过测试;在所述BMC日志中不存在所述新增错误日志的情况下,确定外部设备通过测试。在非开发环境下,从BIOS配置文件中解析所述外部设备的报错抑制功能项的预设阈值,所述预设阈值为BIOS的报错抑制功能的触发值,在所述外部设备的所述第三错误信息累计数量达到所述触发值时,BIOS不再向BMC上报所述外部设备的第三错误信息。
具体的,所述第三错误信息为所述外部设备的可纠正错误信息,可利用关键词查找功能从BIOS配置文件中定位该预设阈值,然后利用计数器记录当前正在模拟的外部设备的所有第三错误信息的数量,并当该数量达到预设阈值后,调用日志查看工具,日志查看工具收集BMC日志,并从BMC日志中筛选新增错误日志,新增错误日志是指BMC在外部设备的所有第三错误信息的数量达到预设阈值后又产生的错误日志。由于预设阈值是外部设备的报错抑制功能的触发值,因此预期效果应该是BIOS的报错抑制功能已经生效,BMC日志中没有新增错误日志,因此如果日志查看工具没有从BMC日志中筛选到新增错误日志就说明BIOS的报错抑制功能已经生效,否则说明BIOS的报错抑制功能未生效,需要重新设置。
示例性的一些实施例中,所述S1包括以下至少之一:
步骤S1011:从第一测试用例库中调用包括所述第一错误信息以及所述标准寄存器数据的第一测试用例,并根据所述第一测试用例,执行向所述外部设备中注入所述第一错误信息的所述预设操作,所述第一测试用例库中包括多个所述第一测试用例,不同的所述第一测试用例对应的所述第一错误信息不同;
具体地,所述第一测试用例库中,不同的所述第一测试用例对应测试所述外部设备的不同类型错误,所述第一错误信息不同,对应的所述标准寄存器数据也就不同。除了所述的第一错误信息以及标准寄存器数据之外,本领域技术人员可以根据实际需要在所述第一测试用例中添加外部设备的故障检测过程中所需的信息,比如,所述第一测试用例还可以包括所述第一错误信息的注入方式。再比如,所述第一测试用例还可以包括注错工具的版本信息等信息。
步骤S1012:从第二测试用例库中调用包括所述第一寄存器数据以及所述标准日志的第二测试用例,并根据所述第二测试用例,执行向所述BIOS发送所述第二寄存器数据的所述预设操作,所述第二测试用例库包括多个所述第二测试用例,不同的所述第二测试用例对应的所述第一寄存器数据不同。
具体地,所述第二测试用例库中,不同的所述第二测试用例对应测试所述BIOS的不同类型错误,所述第一寄存器数据不同,对应的所述标准日志也就不同。
所述实施例中,将测试所述外部设备的运行状态所需的第一错误信息以及对应的标准寄存器数据以测试用例的方式存储至第一测试用例库中,需要测试时只需调取对应的第一测试用例即可,同样地,将测试所述BIOS的运行状态所需的第一寄存器数据以及对应的标准日志以测试用例的方式存储至第二测试用例库中,需要测试时只需调取对应的第二测试用例即可,进一步地简化了测试流程,提高了外部设备故障测试的测试效率。
本申请实施例中,在所述S3之前,所述方法还包括:调用所述第一测试用例,以得到所述第一错误信息对应的所述标准寄存器数据;和/或调用所述第二测试用例,以得到所述第一寄存器数据对应的所述标准日志。
另一种可选方案中,在所述S3之后,所述方法还包括:S4,从所述第一测试用例库中调用新的所述第一测试用例和/或从所述第二测试用例库中调用新的所述第二测试用例;循环步骤,循环执行所述S4、所述S1、所述S2以及所述S3预定次数,直到从所述第一测试用例库中调用完所有的所述第一测试用例和/或从所述第二测试用例库中调用完所有的所述第二测试用例。通过所述循环步骤,依次对所述外部设备的不同类型错误处理流程进行检测,从而实现对外部设备的完整故障检测,进一步地实现对出现错误处理流程的外部设备的有效筛查,和/或依次对所述BIOS的不同类型错误处理流程进行检测,从而实现对BIOS的完整故障检测,进一步地实现对出现错误处理流程的BIOS的有效筛查。
为了进一步地方便相关人员知悉以及查看测试结果,根据本申请的一些示例性实施例中,在所述循环步骤之后,所述方法还包括以下至少之一:根据所述外部设备的运行状态与对应的各所述标准寄存器数据,生成第一测试报告,并将所述第一测试报告发送至显示终端,以使得所述显示终端显示所述第一测试报告;根据所述BIOS的运行状态与对应的各所述第一寄存器数据,生成第二测试报告,并将所述第二测试报告发送至显示终端,以使得所述显示终端显示所述第二测试报告。本实施例根据故障检测结果生成对应的测试报告并发送至显示终端显示,方便了相关人员知悉测试结果,同时方便了相关人员根据测试结果对出现故障的外部设备或者BIOS进行及时处理。
在一些示例性实施例中,执行向外部设备中注入所述第一错误信息的所述预设操作,包括:远程登陆所述外部设备的操作系统;在远程登陆至所述外部设备的操作系统的情况下,控制注错工具向所述外部设备的端口注入所述第一错误信息。通过远程登录外部设备的操作系统,实现与外部设备的通信,再通过注错工具将第一错误信息注入外部设备的端口,进一步保证了可以较为简单快捷地对外部设备进行注错。
在实际的应用过程中,所述注错工具一般以注错卡的方式与所述端口连接。远程登陆所述外部设备的操作系统的具体实现方式可以为:通过SSH通道登陆所述外部设备的操作系统。通过SSH通道与外部设备进行远程通信,SSH协议具有良好的可靠性和安全性,保证远程通信的通信安全,另外SSH协议的适用性较强,几乎可以在各种平台上实现运行。
当然,除了所述的SSH通信方式外,本申请的运行的所述故障检测方法的终端还可以通过其他通信方式与外部设备建立通信关系,如Telnet协议以及VNC协议等。
为了进一步地实现简单快捷地得到所述第二日志,从而进一步方便后续对所述BIOS进行故障检测,根据本申请的又一些具体实施例,执行向BIOS发送所述第二寄存器数据的所述预设操作,包括:远程登陆所述BIOS;在远程登陆至所述BIOS的情况下,生成携带有所述第二寄存器数据的中断指令;将所述中断指令发送至所述BIOS,使得所述BIOS响应于所述中断指令,对所述外部设备进行故障信息处理,生成所述第二日志。通过远程登录BIOS,实现与BIOS的通信,再将携带有所述第二寄存器数据的中断指令发送给BIOS,进一步保证了可以较为简单快捷地对BIOS进行故障检测。
在一些示例性实施例中,远程登陆所述BIOS,包括:通过SSH通道登陆所述BIOS。通过SSH通道与BIOS进行远程通信,SSH协议具有良好的可靠性和安全性,保证远程通信的通信安全,另外SSH协议的适用性较强,几乎可以在各种平台上实现运行。
进一步地,所述S3中,根据所述第一日志以及所述第一错误信息对应的标准寄存器数据,确定所述外部设备的运行状态的具体过程可以为:从所述第一日志中提取得到所述第二寄存器数据;在所述第二寄存器数据与所述标准寄存器数据不同的情况下,确定所述外部设备的运行状态为所述故障状态;在所述第二寄存器数据与所述标准寄存器数据相同的情况下,确定所述外部设备的运行状态为所述正常状态。本实施例中,通过从所述BIOS根据所述响应于所述第一错误信息生成的第二寄存器数据得到的日志中得到所述第二寄存器数据,并将所述第二寄存器数据与所述第一错误信息对应的标准寄存器数据进行比对,两者相同,说明所述寄存器是正常的,即说明所述外部设备自身处于正常状态,否则说明外部设备处于故障状态。
具体地,所述第二寄存器数据即为寄存器响应于所述第一错误信息生成的实际寄存器数据。所述第一日志以及第二日志中除了所述错误源信息、寄存器数据以及发生错误的外部设备的信息外,还包括硬件槽位号以及上报日志数量等信息。
再一种具体实施例中,所述S3中,根据所述第二日志以及所述第一寄存器数据对应的标准日志,确定所述BIOS的运行状态,包括:在所述第二日志与所述标准日志不同的情况下,确定所述BIOS的运行状态为所述故障状态;在所述第二日志与所述标准日志相同的情况下,确定所述BIOS的运行状态为所述正常状态。本实施例中,直接比较所述第二日志与标准日志,来确定BIOS是否处于故障状态,可以进一步地保证BIOS故障诊断的准确性较高。
除了所述方式外,为了进一步地简化故障检测过程,进一步地提升故障检测和处理效率,在一些示例性实施例中,根据所述第二日志以及所述第一寄存器数据对应的标准日志,确定所述BIOS的运行状态,包括:从所述第二日志中提取得到发生故障的所述外部设备的实际位置信息以及发生错误的所述外部设备对应的实际寄存器数据;从所述标准日志中提取得到标准出错位置信息;在所述实际位置信息与所述标准出错位置信息不同,或者所述实际寄存器数据与所述第一寄存器数据不同的情况下,确定所述BIOS的运行状态为所述故障状态;在所述实际位置信息与所述标准出错位置信息相同,且所述实际寄存器数据与所述第一寄存器数据相同的情况下,确定所述BIOS的运行状态为所述正常状态。本实施例仅比较第二日志与标准日志中关于寄存器数据与出错位置信息是否相同,比较信息较少,从而进一步地保证了比较过程可以较为快速地完成。
具体地,所述出错位置信息具体可以为所述外部设备的地址。所述实际寄存器数据为所述BIOS上报的日志中记录的寄存器数据。
另外,所述BIOS的所述第一日志以及所述第二日志会发送至BMC或者OS,所述S2具体可以通过以下方式实现:通过发送redfish指令获取所述BIOS发送至所述BMC中的所述第一日志和/或所述第二日志;通过SSH通道的登陆到OS中,输入dmesg命令获取所述OS中的所述第一日志和/或所述第二日志。
本申请中,所述外部设备可以包括任意的硬件设备,如CPU、内存、硬盘、键盘以及PCIe等设备。一种具体实施例中,所述外部设备包括PCIe设备。更为具体的一种实施例中,所述外部设备为所述PCIe设备。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据所述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
为了使得本领域技术人员能够更加清楚地了解本申请的技术方案,以下将结合具体的实施例对本申请的储水系数的确定方法的实现过程进行详细说明。
本实施例涉及一种外部设备的故障检测方法,其中,所述外部设备为PCIe,本申请的该故障检测方法应用于测试机,所述方法包括如下两个部分的步骤:
第一部分:具体如图3所示,检查PCIe设备自身响应是否正确,即检查寄存器是否正确响应:
S11:在被测试机器BIOS启动过程中根据标志位判断是否处于开发环境,如处于开发环境,则执行以下流程,如否,则按照原检测流程检测PCIe故障;
S12:测试机中运行测试脚本,调取其中一个第一测试用例,依据该第一测试用例,测试机通过特定通讯方式(包括但不限于使用SSH通讯),使用注错工具对被测试机器BIOS上的PCIe设备进行特定注错;
S13:PCIe设备的寄存器故障处理函数识别到注入的第一错误信息,生成第二寄存器数据,BIOS根据第二寄存器数据进行错误处理流程,生成第一日志并上报至BMC或者OS;
S14:测试机获取该第一日志,从第一日志中提取得到第二寄存器数据,并从第一测试用例中读取所述第一错误信息对应的标准寄存器数据,将该第二寄存器数据与标准寄存器数据进行比较,确认测试结果,若一样,则确定寄存器是正常的,否则,确定寄存器是故障的;
S15:测试机发出下一个第一测试用例的测试指令,全部测试完成后汇总测试结果。
第二部分:如图4所示,检查BIOS响应是否正确:
S16:在被测试机器BIOS启动过程中根据标志位判断是否处于开发环境,如处于开发环境,则执行以下流程,如否,则按照原检测流程检测PCIe故障;
S17:在测试机中运行测试脚本,调取其中一个第二测试用例,依据该第二测试用例,测试机通过特定通讯方式(包括但不限于使用ssh通讯),往被测试机器BIOS发送中断,其中,中断携带有第一寄存器数据,被测试机器BIOS进入错误处理程序;
S18:被测试机器BIOS根据该假设的第一寄存器数据对PCIe设备故障进行处理,生成第二日志并上报给OS或者BMC;
S19:测试机获取该第二日志,并从第二日志中提取出错的PCIe设备的位置信息以及实际寄存器数据,从所述第二测试用例提取得到标准出错位置以及所述第一寄存器数据,比较第一寄存器数据与所述实际寄存器数据,比较所述出错的PCIe设备的位置信息以及标准出错位置,确认测试结果,若一样,则确定BIOS是正常的,否则,确定BIOS是故障的;
S20:测试机发出下一个第二测试用例的测试指令,全部测试完成后汇总测试结果。
另外,在处于非开发环境,按照原检测流程检测PCIe故障的具体过程如图5所示,具体如下:
S21:使用注错工具不断模拟产生可纠正错误,即所述第三错误信息;
S22:比较可纠正错误的数量(保存在一个寄存器中)与阈值(保存在另一个寄存器中)大小后检查BMC日志,来判断该功能是否通过测试;
S23:在所述BMC日志中存在新增错误日志的情况下,确定外部设备未通过测试,在所述BMC日志中不存在新增错误日志的情况下,确定外部设备通过测试。
在本实施例中还提供了一种外部设备的故障检测装置,外部设备与BIOS通信连接,该装置用于实现所述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图6是根据本申请实施例的外部设备的故障检测装置的结构框图,如图6所示,该装置包括:
执行单元10,用于S1,根据目标信息,执行预设操作,其中,在所述目标信息包括第一错误信息的情况下,执行向外部设备中注入所述第一错误信息的所述预设操作,在所述目标信息包括第一寄存器数据的情况下,执行向所述BIOS发送所述第一寄存器数据的所述预设操作,所述第一寄存器数据为模拟所述外部设备的寄存器响应于第二错误信息生成的寄存器数据;
具体地,所述目标信息可以仅包括所述第一错误信息,也可以仅包括所述第一寄存器数据,还可以包括所述第一错误信息以及所述第一寄存器数据。所述第一错误信息以及所述第二错误信息为不符合代码运行逻辑的错误数据,所述第一错误信息和所述第二错误信息可从历史故障案例中提炼总结形成的案例数据库获取或从理论上推测可能发生错误的错误数据。在正常情况下,外部设备出错时外部设备的寄存器会响应该错误信息,生成反映错误信息的寄存器数据,本申请的所述第一寄存器数据就是模拟寄存器在正常响应所述第二错误信息时生成的寄存器数据而得到的数据,同样地,该第一寄存器数据也可以从历史故障案例中提炼总结形成的案例数据库获取,或者从理论上推测可能发生错误的错误数据对应的寄存器数据得到。
第一获取单元20,用于S2,获取所述BIOS上报的第一日志和/或第二日志,所述第一日志为所述BIOS对第二寄存器数据进行解析得到的日志,所述第二寄存器数据为所述寄存器响应于所述第一错误信息生成的寄存器数据,所述第二日志为所述BIOS对所述第一寄存器数据进行解析得到的日志;
具体地,在执行向外部设备中注入所述第一错误信息的所述预设操作的情况下,获取所述BIOS上报的第一日志;在执行向所述BIOS发送所述第一寄存器数据的所述预设操作的情况下,获取所述BIOS上报的第二日志。所述第二寄存器数据为所述寄存器响应于所述第一错误信息生成的真实的寄存器数据。所述BIOS通过所述寄存器来传递数据和执行指令,所述BIOS对对应的寄存器数据进行解析,从而得到发生错误的外部设备的信息和错误源信息,将所述寄存器数据、发生错误的外部设备的信息以及错误源信息生成日志并上报给BMC或者OS,其中,错误源信息包括外部设备的错误类型,如包括可修复错误以及不可修复错误等类型,发生错误的外部设备的信息具体包括发生错误的外部设备的位置信息。
第一确定单元30,用于S3,根据所述第一日志以及所述第一错误信息对应的标准寄存器数据,确定所述外部设备的运行状态,和/或,根据所述第二日志以及所述第一寄存器数据对应的标准日志,确定所述BIOS的运行状态,所述运行状态为故障状态或者正常状态。
具体地,所述标准寄存器数据为在所述寄存器正常的情况下响应于所述第一错误信息生成的寄存器数据。所述标准日志为在所述BIOS处于正常状态的情况下,按照错误处理流程进行处理,对所述第一寄存器数据进行解析得到的日志。具体应用中可以通过调用日志查看工具,来查看所述第一日志以及所述第二日志的日志信息。
通过所述方案,通过执行单元向外部设备中注入第一错误信息,和/或向BIOS发送模拟寄存器响应于第二错误信息生成的第一寄存器数据;通过第一获取单元获取BIOS解析所述第二寄存器数据得到的第一日志,该第二寄存器数据为寄存器响应于所述第一错误信息生成的数据,和/或获取BIOS解析第一寄存器数据得到的第二日志;通过第一确定单元根据该第一日志和标准寄存器数据,确定外部设备是否为正常的运行状态,和/或根据该第二日志以及标准日志,确定BIOS是否为正常的运行状态,实现了外部设备与BIOS的故障检测解耦,即在对外部设备进行检测的过程中,如需要检测外部设备是否发生故障,只需通过向外部设备中注入第一错误信息、获取所述BIOS上报的第一日志、以及根据第一日志以及标准寄存器数据来确定,而如需要检测BIOS是否发生故障,只需通过向BIOS发送第一寄存器数据、获取所述BIOS上报的第二日志、以及根据该第二日志以及标准日志来确定,实现了精确定位到错误位置是BIOS还是外部设备自身的效果,有效解决了现有技术中外部设备的故障定位方案无法有效定位故障点的问题,减少了故障测试过程的故障之间的耦合度,提高了外部设备故障处理流程的效率及可靠性。
需要说明的是,所述外部设备的运行状态即为所述外部设备的寄存器的运行状态,具体为寄存器是否可以正常响应外部设备的错误信息。
本申请确定所述寄存器的运行状态结果并不依赖于注错工具版本是否匹配、注错前BIOS配置是否正确以及注错操作是否正确等的结果。同理,本申请确定所述BIOS的运行状态结果也不依赖于寄存器的运行状态,实现了外部设备故障处理流程的解耦,整个处理流程不存在不确定性,能够对故障位置进行准确定位,可以达到较好的检测效果。
具体地,可以存储在BIOS的NVRAM区域创建寄存器数据结构,根据真实的历史故障案例设置该第一寄存器数据结构中的每项数值,得到所述第一寄存器数据。
其中,所述装置的执行主体可以为终端等,但不限于此。
在一些示例性实施例中,所述装置还包括:第二获取单元,用于在所述S1之前,在所述BIOS启动的情况下,获取所述BIOS的标志位信息,所述标志位信息为表征所述BIOS的运行环境的信息;第二确定单元,用于在所述标志位信息为目标标志位的情况下,确定所述BIOS的运行环境为开发环境;第三确定单元,用于在所述标志位信息不为所述目标标志位的情况下,确定所述BIOS的运行环境为非开发环境。在进行外部设备的故障检测前,先判断BIOS的运行环境,再根据运行环境执行该故障检测方案。
在此基础上,所述执行单元包括:执行模块,用于在所述BIOS的运行环境为所述开发环境,根据所述目标信息,执行所述预设操作。也就是说,本申请是在开发环境下对外部设备进行故障检测的方案。
具体地,所述目标标志位可以为任意的标志信息。所述BIOS用于初始化所述外部设备,具体包括检测外部设备是否正常工作,并对外部设备进行配置和初始化。在对外部设备进行初始化后,BIOS会进行自检,包括检测系统信息、检查硬件设备和执行启动操作系统等。
根据一些其他实施例,所述装置还包括:第一生成单元,用于在所述BIOS的运行环境为非开发环境的情况下,利用注错工具不断模拟生成所述外部设备的第三错误信息;第四确定单元,用于在第三错误信息的累计数量达到所述BIOS的报错抑制功能限定的预设阈值后,确定BMC日志中是否存在新增错误日志;第五确定单元,用于在所述BMC日志中存在所述新增错误日志的情况下,确定外部设备未通过测试;第六确定单元,用于在所述BMC日志中不存在所述新增错误日志的情况下,确定外部设备通过测试。在非开发环境下,从BIOS配置文件中解析所述外部设备的报错抑制功能项的预设阈值,所述预设阈值为BIOS的报错抑制功能的触发值,在所述外部设备的所述第三错误信息累计数量达到所述触发值时,BIOS不再向BMC上报所述外部设备的第三错误信息。
具体的,所述第三错误信息为所述外部设备的可纠正错误信息,可利用关键词查找功能从BIOS配置文件中定位该预设阈值,然后利用计数器记录当前正在模拟的外部设备的所有第三错误信息的数量,并当该数量达到预设阈值后,调用日志查看工具,日志查看工具收集BMC日志,并从BMC日志中筛选新增错误日志,新增错误日志是指BMC在外部设备的所有第三错误信息的数量达到预设阈值后又产生的错误日志。由于预设阈值是外部设备的报错抑制功能的触发值,因此预期效果应该是BIOS的报错抑制功能已经生效,BMC日志中没有新增错误日志,因此如果日志查看工具没有从BMC日志中筛选到新增错误日志就说明BIOS的报错抑制功能已经生效,否则说明BIOS的报错抑制功能未生效,需要重新设置。
示例性的一些实施例中,所述执行单元包括以下至少之一:
第一调用模块,用于从第一测试用例库中调用包括所述第一错误信息以及所述标准寄存器数据的第一测试用例,并根据所述第一测试用例,执行向所述外部设备中注入所述第一错误信息的所述预设操作,所述第一测试用例库中包括多个所述第一测试用例,不同的所述第一测试用例对应的所述第一错误信息不同;
具体地,所述第一测试用例库中,不同的所述第一测试用例对应测试所述外部设备的不同类型错误,所述第一错误信息不同,对应的所述标准寄存器数据也就不同。除了所述的第一错误信息以及标准寄存器数据之外,本领域技术人员可以根据实际需要在所述第一测试用例中添加外部设备的故障检测过程中所需的信息,比如,所述第一测试用例还可以包括所述第一错误信息的注入方式。再比如,所述第一测试用例还可以包括注错工具的版本信息等信息。
第二调用模块,用于从第二测试用例库中调用包括所述第一寄存器数据以及所述标准日志的第二测试用例,并根据所述第二测试用例,执行向所述BIOS发送所述第二寄存器数据的所述预设操作,所述第二测试用例库包括多个所述第二测试用例,不同的所述第二测试用例对应的所述第一寄存器数据不同。
具体地,所述第二测试用例库中,不同的所述第二测试用例对应测试所述BIOS的不同类型错误,所述第一寄存器数据不同,对应的所述标准日志也就不同。
所述实施例中,将测试所述外部设备的运行状态所需的第一错误信息以及对应的标准寄存器数据以测试用例的方式存储至第一测试用例库中,需要测试时只需调取对应的第一测试用例即可,同样地,将测试所述BIOS的运行状态所需的第一寄存器数据以及对应的标准日志以测试用例的方式存储至第二测试用例库中,需要测试时只需调取对应的第二测试用例即可,进一步地简化了测试流程,提高了外部设备故障测试的测试效率。
本申请实施例中,所述装置还包括:第一调用单元,用于在所述S3之前,调用所述第一测试用例,以得到所述第一错误信息对应的所述标准寄存器数据;和/或第二调用单元,用于调用所述第二测试用例,以得到所述第一寄存器数据对应的所述标准日志。
另一种可选方案中,所述装置还包括:第三调用单元,用于在所述S3之后,执行S4,从所述第一测试用例库中调用新的所述第一测试用例和/或从所述第二测试用例库中调用新的所述第二测试用例;循环单元,用于循环步骤,循环执行所述S4、所述S1、所述S2以及所述S3预定次数,直到从所述第一测试用例库中调用完所有的所述第一测试用例和/或从所述第二测试用例库中调用完所有的所述第二测试用例。通过所述循环步骤,依次对所述外部设备的不同类型错误处理流程进行检测,从而实现对外部设备的完整故障检测,进一步地实现对出现错误处理流程的外部设备的有效筛查,和/或依次对所述BIOS的不同类型错误处理流程进行检测,从而实现对BIOS的完整故障检测,进一步地实现对出现错误处理流程的BIOS的有效筛查。
为了进一步地方便相关人员知悉以及查看测试结果,根据本申请的一些示例性实施例中,所述装置还包括以下至少之一:第二生成单元,用于在所述循环步骤之后,根据所述外部设备的运行状态与对应的各所述标准寄存器数据,生成第一测试报告,并将所述第一测试报告发送至显示终端,以使得所述显示终端显示所述第一测试报告;第三生成单元,用于根据所述BIOS的运行状态与对应的各所述第一寄存器数据,生成第二测试报告,并将所述第二测试报告发送至显示终端,以使得所述显示终端显示所述第二测试报告。本实施例根据故障检测结果生成对应的测试报告并发送至显示终端显示,方便了相关人员知悉测试结果,同时方便了相关人员根据测试结果对出现故障的外部设备或者BIOS进行及时处理。
在一些示例性实施例中,所述执行单元包括:第一登陆模块,用于远程登陆所述外部设备的操作系统;控制模块,用于在远程登陆至所述外部设备的操作系统的情况下,控制注错工具向所述外部设备的端口注入所述第一错误信息。通过远程登录外部设备的操作系统,实现与外部设备的通信,再通过注错工具将第一错误信息注入外部设备的端口,进一步保证了可以较为简单快捷地对外部设备进行注错。
在实际的应用过程中,所述注错工具一般以注错卡的方式与所述端口连接。第一登陆模块包括:第一登陆子模块,用于通过SSH通道登陆所述外部设备的操作系统。通过SSH通道与外部设备进行远程通信,SSH协议具有良好的可靠性和安全性,保证远程通信的通信安全,另外SSH协议的适用性较强,几乎可以在各种平台上实现运行。
当然,除了所述的SSH通信方式外,本申请的运行的所述故障检测装置的终端还可以通过其他通信方式与外部设备建立通信关系,如Telnet协议以及VNC协议等。
为了进一步地实现简单快捷地得到所述第二日志,从而进一步方便后续对所述BIOS进行故障检测,根据本申请的又一些具体实施例,所述执行单元包括:第二登陆模块,用于远程登陆所述BIOS;生成模块,用于在远程登陆至所述BIOS的情况下,生成携带有所述第二寄存器数据的中断指令;第一发送模块,用于将所述中断指令发送至所述BIOS,使得所述BIOS响应于所述中断指令,对所述外部设备进行故障信息处理,生成所述第二日志。通过远程登录BIOS,实现与BIOS的通信,再将携带有所述第二寄存器数据的中断指令发送给BIOS,进一步保证了可以较为简单快捷地对BIOS进行故障检测。
在一些示例性实施例中,所述第二登陆模块包括:第二登陆子模块,用于通过SSH通道登陆所述BIOS。通过SSH通道与BIOS进行远程通信,SSH协议具有良好的可靠性和安全性,保证远程通信的通信安全,另外SSH协议的适用性较强,几乎可以在各种平台上实现运行。
进一步地,所述第一确定单元可以包括:第一提取模块,用于从所述第一日志中提取得到所述第二寄存器数据;第一确定模块,用于在所述第二寄存器数据与所述标准寄存器数据不同的情况下,确定所述外部设备的运行状态为所述故障状态;第二确定模块,用于在所述第二寄存器数据与所述标准寄存器数据相同的情况下,确定所述外部设备的运行状态为所述正常状态。本实施例中,通过从所述BIOS根据所述响应于所述第一错误信息生成的第二寄存器数据得到的日志中得到所述第二寄存器数据,并将所述第二寄存器数据与所述第一错误信息对应的标准寄存器数据进行比对,两者相同,说明所述寄存器是正常的,即说明所述外部设备自身处于正常状态,否则说明外部设备处于故障状态。
具体地,所述第二寄存器数据即为寄存器响应于所述第一错误信息生成的实际寄存器数据。所述第一日志以及第二日志中除了所述错误源信息、寄存器数据以及发生错误的外部设备的信息外,还包括硬件槽位号以及上报日志数量等信息。
再一种具体实施例中,所述第一确定单元包括:第三确定模块,用于在所述第二日志与所述标准日志不同的情况下,确定所述BIOS的运行状态为所述故障状态;第四确定模块,用于在所述第二日志与所述标准日志相同的情况下,确定所述BIOS的运行状态为所述正常状态。本实施例中,直接比较所述第二日志与标准日志,来确定BIOS是否处于故障状态,可以进一步地保证BIOS故障诊断的准确性较高。
除了所述方式外,为了进一步地简化故障检测过程,进一步地提升故障检测和处理效率,在一些示例性实施例中,所述第一确定单元包括:第二提取模块,用于从所述第二日志中提取得到发生故障的所述外部设备的实际位置信息以及发生错误的所述外部设备对应的实际寄存器数据;第三提取模块,用于从所述标准日志中提取得到标准出错位置信息;第五确定模块,用于在所述实际位置信息与所述标准出错位置信息不同,或者所述实际寄存器数据与所述第一寄存器数据不同的情况下,确定所述BIOS的运行状态为所述故障状态;第六确定模块,用于在所述实际位置信息与所述标准出错位置信息相同,且所述实际寄存器数据与所述第一寄存器数据相同的情况下,确定所述BIOS的运行状态为所述正常状态。本实施例仅比较第二日志与标准日志中关于寄存器数据与出错位置信息是否相同,比较信息较少,从而进一步地保证了比较过程可以较为快速地完成。
具体地,所述出错位置信息具体可以为所述外部设备的地址。所述实际寄存器数据为所述BIOS上报的日志中记录的寄存器数据。
另外,所述BIOS的所述第一日志以及所述第二日志会发送至BMC或者OS,所述第一获取单元包括以下至少之一:第二发送模块,用于通过发送redfish指令获取所述BIOS发送至所述BMC中的所述第一日志和/或所述第二日志;第三登陆模块,用于通过SSH通道的登陆到OS中,输入dmesg命令获取所述OS中的所述第一日志和/或所述第二日志。
本申请中,所述外部设备可以包括任意的硬件设备,如CPU、内存、硬盘、键盘以及PCIe等设备。一种具体实施例中,所述外部设备包括PCIe设备。更为具体的一种实施例中,所述外部设备为所述PCIe设备。
需要说明的是,所述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:所述模块均位于同一处理器中;或者,所述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行所述任一种方法实施例中的步骤。
在一些示例性实施例中,所述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行所述任一种方法实施例中的步骤。
在一些示例性实施例中,所述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和所述处理器连接,该输入输出设备和所述处理器连接。
本申请的实施例还提供了一种服务器的故障检测系统,所述故障检测系统包括:PCIe设备;BIOS,与所述PCIe设备通信连接,所述BIOS用于对所述PCIe设备进行故障信息处理,生成日志;测试设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述任一种方法实施例中的步骤,以对所述PCIe设备和/或所述BIOS的运行状态进行检测。
在一些示例性实施例中,所述服务器还包括:BMC,与所述BIOS通信,所述BIOS还用于将所述日志发送至所述BMC,所述BMC用于根据所述日志生成BMC日志。
本实施例中的具体示例可以参考所述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,所述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (20)

1.一种外部设备的故障检测方法,外部设备与BIOS通信连接,其特征在于,所述方法包括:
S1,根据目标信息,执行预设操作,其中,在所述目标信息包括第一错误信息的情况下,执行向外部设备中注入所述第一错误信息的所述预设操作,在所述目标信息包括第一寄存器数据的情况下,执行向所述BIOS发送所述第一寄存器数据的所述预设操作,所述第一寄存器数据为模拟所述外部设备的寄存器响应于第二错误信息生成的寄存器数据;
S2,获取所述BIOS上报的第一日志和/或第二日志,所述第一日志为所述BIOS对第二寄存器数据进行解析得到的日志,所述第二寄存器数据为所述寄存器响应于所述第一错误信息生成的寄存器数据,所述第二日志为所述BIOS对所述第一寄存器数据进行解析得到的日志;
S3,根据所述第一日志以及所述第一错误信息对应的标准寄存器数据,确定所述外部设备的运行状态,和/或,根据所述第二日志以及所述第一寄存器数据对应的标准日志,确定所述BIOS的运行状态,所述运行状态为故障状态或者正常状态。
2.根据权利要求1所述的方法,其特征在于,在所述S1之前,所述方法还包括:
在所述BIOS启动的情况下,获取所述BIOS的标志位信息,所述标志位信息为表征所述BIOS的运行环境的信息;
在所述标志位信息为目标标志位的情况下,确定所述BIOS的运行环境为开发环境;
在所述标志位信息不为所述目标标志位的情况下,确定所述BIOS的运行环境为非开发环境。
3.根据权利要求2所述的方法,其特征在于,所述S1包括:
在所述BIOS的运行环境为所述开发环境,根据所述目标信息,执行所述预设操作。
4.根据权利要求2所述的方法,其特征在于,在所述BIOS的运行环境为非开发环境的情况下,所述方法还包括:
利用注错工具不断模拟生成所述外部设备的第三错误信息;
在第三错误信息的累计数量达到所述BIOS的报错抑制功能限定的预设阈值后,确定BMC日志中是否存在新增错误日志;
在所述BMC日志中存在所述新增错误日志的情况下,确定外部设备未通过测试;
在所述BMC日志中不存在所述新增错误日志的情况下,确定外部设备通过测试。
5.根据权利要求1所述的方法,其特征在于,所述S1包括以下至少之一:
从第一测试用例库中调用包括所述第一错误信息以及所述标准寄存器数据的第一测试用例,并根据所述第一测试用例,执行向所述外部设备中注入所述第一错误信息的所述预设操作,所述第一测试用例库中包括多个所述第一测试用例,不同的所述第一测试用例对应的所述第一错误信息不同;
从第二测试用例库中调用包括所述第一寄存器数据以及所述标准日志的第二测试用例,并根据所述第二测试用例,执行向所述BIOS发送所述第二寄存器数据的所述预设操作,所述第二测试用例库包括多个所述第二测试用例,不同的所述第二测试用例对应的所述第一寄存器数据不同。
6.根据权利要求5所述的方法,其特征在于,在所述S3之后,所述方法还包括:
S4,从所述第一测试用例库中调用新的所述第一测试用例和/或从所述第二测试用例库中调用新的所述第二测试用例;
循环步骤,循环执行所述S4、所述S1、所述S2以及所述S3预定次数,直到从所述第一测试用例库中调用完所有的所述第一测试用例和/或从所述第二测试用例库中调用完所有的所述第二测试用例。
7.根据权利要求6所述的方法,其特征在于,在所述循环步骤之后,所述方法还包括以下至少之一:
根据所述外部设备的运行状态与对应的各所述标准寄存器数据,生成第一测试报告,并将所述第一测试报告发送至显示终端,以使得所述显示终端显示所述第一测试报告;
根据所述BIOS的运行状态与对应的各所述第一寄存器数据,生成第二测试报告,并将所述第二测试报告发送至显示终端,以使得所述显示终端显示所述第二测试报告。
8.根据权利要求5至7中任一项所述的方法,其特征在于,所述第一测试用例还包括所述第一错误信息的注入方式。
9.根据权利要求1至7中任一项所述的方法,其特征在于,执行向外部设备中注入所述第一错误信息的所述预设操作,包括:
远程登陆所述外部设备的操作系统;
在远程登陆至所述外部设备的操作系统的情况下,控制注错工具向所述外部设备的端口注入所述第一错误信息。
10.根据权利要求1至7中任一项所述的方法,其特征在于,执行向BIOS发送所述第二寄存器数据的所述预设操作,包括:
远程登陆所述BIOS;
在远程登陆至所述BIOS的情况下,生成携带有所述第二寄存器数据的中断指令;
将所述中断指令发送至所述BIOS,使得所述BIOS响应于所述中断指令,对所述外部设备进行故障信息处理,生成所述第二日志。
11.根据权利要求10所述的方法,其特征在于,远程登陆所述BIOS,包括:
通过SSH通道登陆所述BIOS。
12.根据权利要求1至7中任一项所述的方法,其特征在于,根据所述第一日志以及所述第一错误信息对应的标准寄存器数据,确定所述外部设备的运行状态,包括:
从所述第一日志中提取得到所述第二寄存器数据;
在所述第二寄存器数据与所述标准寄存器数据不同的情况下,确定所述外部设备的运行状态为所述故障状态;
在所述第二寄存器数据与所述标准寄存器数据相同的情况下,确定所述外部设备的运行状态为所述正常状态。
13.根据权利要求1至7中任一项所述的方法,其特征在于,根据所述第二日志以及所述第一寄存器数据对应的标准日志,确定所述BIOS的运行状态,包括:
在所述第二日志与所述标准日志不同的情况下,确定所述BIOS的运行状态为所述故障状态;
在所述第二日志与所述标准日志相同的情况下,确定所述BIOS的运行状态为所述正常状态。
14.根据权利要求1至7中任一项所述的方法,其特征在于,根据所述第二日志以及所述第一寄存器数据对应的标准日志,确定所述BIOS的运行状态,包括:
从所述第二日志中提取得到发生故障的所述外部设备的实际位置信息以及发生错误的所述外部设备对应的实际寄存器数据;
从所述标准日志中提取得到标准出错位置信息;
在所述实际位置信息与所述标准出错位置信息不同,或者所述实际寄存器数据与所述第一寄存器数据不同的情况下,确定所述BIOS的运行状态为所述故障状态;
在所述实际位置信息与所述标准出错位置信息相同,且所述实际寄存器数据与所述第一寄存器数据相同的情况下,确定所述BIOS的运行状态为所述正常状态。
15.根据权利要求1至7中任一项所述的方法,其特征在于,所述外部设备包括PCIe设备。
16.一种外部设备的故障检测装置,外部设备与BIOS通信连接,其特征在于,所述装置包括:
执行单元,用于S1,根据目标信息,执行预设操作,其中,在所述目标信息包括第一错误信息的情况下,执行向外部设备中注入所述第一错误信息的所述预设操作,在所述目标信息包括第一寄存器数据的情况下,执行向所述BIOS发送所述第一寄存器数据的所述预设操作,所述第一寄存器数据为模拟所述外部设备的寄存器响应于第二错误信息生成的寄存器数据;
第一获取单元,用于S2,获取所述BIOS上报的第一日志和/或第二日志,所述第一日志为所述BIOS对第二寄存器数据进行解析得到的日志,所述第二寄存器数据为所述寄存器响应于所述第一错误信息生成的寄存器数据,所述第二日志为所述BIOS对所述第一寄存器数据进行解析得到的日志;
第一确定单元,用于S3,根据所述第一日志以及所述第一错误信息对应的标准寄存器数据,确定所述外部设备的运行状态,和/或,根据所述第二日志以及所述第一寄存器数据对应的标准日志,确定所述BIOS的运行状态,所述运行状态为故障状态或者正常状态。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至15中任一项所述的方法的步骤。
18.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至15中任一项所述的方法的步骤。
19.一种服务器的故障检测系统,其特征在于,包括:
PCIe设备;
BIOS,与所述PCIe设备通信连接,所述BIOS用于对所述PCIe设备进行故障信息处理,生成日志;
测试设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述权利要求1至15中任一项所述的方法的步骤,以对所述PCIe设备和/或所述BIOS的运行状态进行检测。
20.根据权利要求19所述的故障检测系统,其特征在于,所述服务器还包括:
BMC,与所述BIOS通信,所述BIOS还用于将所述日志发送至所述BMC,所述BMC用于根据所述日志生成BMC日志。
CN202310657313.3A 2023-06-05 2023-06-05 外部设备的故障检测方法以及装置 Active CN116382968B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310657313.3A CN116382968B (zh) 2023-06-05 2023-06-05 外部设备的故障检测方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310657313.3A CN116382968B (zh) 2023-06-05 2023-06-05 外部设备的故障检测方法以及装置

Publications (2)

Publication Number Publication Date
CN116382968A true CN116382968A (zh) 2023-07-04
CN116382968B CN116382968B (zh) 2023-08-18

Family

ID=86963799

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310657313.3A Active CN116382968B (zh) 2023-06-05 2023-06-05 外部设备的故障检测方法以及装置

Country Status (1)

Country Link
CN (1) CN116382968B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391765A (zh) * 2014-10-27 2015-03-04 浪潮电子信息产业股份有限公司 一种自动诊断服务器启动故障的方法
CN109086155A (zh) * 2018-07-27 2018-12-25 郑州云海信息技术有限公司 服务器故障定位方法、装置、设备及计算机可读存储介质
CN109542752A (zh) * 2018-11-28 2019-03-29 郑州云海信息技术有限公司 一种服务器PCIe设备故障记录的系统及方法
CN109947596A (zh) * 2019-03-19 2019-06-28 浪潮商用机器有限公司 Pcie设备故障系统宕机处理方法、装置及相关组件
CN111767184A (zh) * 2020-09-01 2020-10-13 苏州浪潮智能科技有限公司 一种故障诊断方法、装置及电子设备和存储介质
CN114138527A (zh) * 2021-11-12 2022-03-04 浪潮电子信息产业股份有限公司 一种提高服务器性能的方法、装置及介质
CN115495301A (zh) * 2021-06-18 2022-12-20 华为技术有限公司 一种故障处理方法、装置、设备及系统
CN116185799A (zh) * 2023-02-20 2023-05-30 苏州浪潮智能科技有限公司 中断时间获取方法、装置、系统、通信设备及存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104391765A (zh) * 2014-10-27 2015-03-04 浪潮电子信息产业股份有限公司 一种自动诊断服务器启动故障的方法
CN109086155A (zh) * 2018-07-27 2018-12-25 郑州云海信息技术有限公司 服务器故障定位方法、装置、设备及计算机可读存储介质
CN109542752A (zh) * 2018-11-28 2019-03-29 郑州云海信息技术有限公司 一种服务器PCIe设备故障记录的系统及方法
CN109947596A (zh) * 2019-03-19 2019-06-28 浪潮商用机器有限公司 Pcie设备故障系统宕机处理方法、装置及相关组件
CN111767184A (zh) * 2020-09-01 2020-10-13 苏州浪潮智能科技有限公司 一种故障诊断方法、装置及电子设备和存储介质
CN115495301A (zh) * 2021-06-18 2022-12-20 华为技术有限公司 一种故障处理方法、装置、设备及系统
CN114138527A (zh) * 2021-11-12 2022-03-04 浪潮电子信息产业股份有限公司 一种提高服务器性能的方法、装置及介质
CN116185799A (zh) * 2023-02-20 2023-05-30 苏州浪潮智能科技有限公司 中断时间获取方法、装置、系统、通信设备及存储介质

Also Published As

Publication number Publication date
CN116382968B (zh) 2023-08-18

Similar Documents

Publication Publication Date Title
CN102244591B (zh) 客户端服务器及对其功能测试全程监测的方法
CN109510742B (zh) 一种服务器网卡远程测试方法、装置、终端及存储介质
US20170315818A1 (en) Dual purpose boot registers
CN112783703A (zh) 一种sas链路故障定位方法、装置、设备及存储介质
CN113672456A (zh) 应用平台的模块化自监听方法、系统、终端及存储介质
US11442831B2 (en) Method, apparatus, device and system for capturing trace of NVME hard disc
CN114003445B (zh) Bmc的i2c监控功能测试方法、系统、终端及存储介质
US9343181B2 (en) Memory module errors
CN116382968B (zh) 外部设备的故障检测方法以及装置
CN116680101A (zh) 一种操作系统宕机检测方法及装置、消除方法及装置
CN116302738A (zh) 一种测试芯片的方法、系统、设备和存储介质
CN116225802A (zh) 一种故障测试方法、装置及计算设备
CN112463504B (zh) 一种双控存储产品测试方法、系统、终端及存储介质
CN115794530A (zh) 一种硬件连接测试方法、装置、设备和可读存储介质
US20160026518A1 (en) Recovery program using diagnostic results
CN115168146A (zh) 一种异常检测方法和装置
CN112231170B (zh) 一种数据交互卡监管方法、系统、终端及存储介质
CN114510381A (zh) 故障注入方法、装置、设备和存储介质
CN116719712B (zh) 处理器串口日志输出方法、装置、电子设备及存储介质
CN117493065B (zh) 处理器信息的处理方法和装置,存储介质及电子设备
CN114816939B (zh) 一种内存通信方法、系统、设备及介质
CN108874420B (zh) 一种批量服务器fru的远程刷新系统及方法
TWI679530B (zh) 批次測試系統及其方法
CN116893928A (zh) 故障内存的监管方法、系统、终端及存储介质
CN115952037A (zh) Pcie可纠正报错抑制功能测试方法、系统、终端及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant