发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种设备故障处理方法及***,可以通过二层的数据包远程收集目标设备实时获取的状态信息和/或保留内存中的日志信息,兼顾目标设备的实时信息以及信息收集的效率,提高故障排查效率,并控制目标设备重启以恢复业务。
本发明提供一种设备故障处理方法,其包括:
目标设备定时将状态信息和日志信息写入预设的保留内存中,以及监听网卡驱动接收诊断设备发送的诊断数据包所产生的中断,诊断数据包包括MAC地址、诊断数据包的标识和目标设备的标识ID;
根据诊断数据包携带的信息收集命令,将实时获取的状态信息和/或保留内存中的日志信息组装成第一响应数据包后发送给诊断设备;或者,根据诊断数据包携带的重启设备命令,向诊断设备发送命令收到的第二响应数据包,并触发设备重启操作。
在上述技术方案的基础上,执行设备重启操作之后,所述方法还包括:
将所述保留内存中的所述状态信息和/或日志信息组装成第三响应数据包后发送给诊断设备;或者,
接收诊断设备重新发送的所述诊断数据包,根据所述诊断数据包携带的所述信息收集命令,将所述保留内存中的所述状态信息和/或日志信息组装成第三响应数据包后发送给诊断设备。
在上述技术方案的基础上,所述方法还包括以下操作中的一种或几种:
根据所述诊断数据包携带的复位设备命令触发设备复位操作;
根据所述诊断数据包携带的重启进程命令触发进程重启操作;
根据所述诊断数据包携带的所述信息收集命令,收集指定的运行信息,将指定的运行信息组装成第四响应数据包后发送给诊断设备。
在上述技术方案的基础上,所述方法还包括:
实时检测运行信息,将异常的运行信息组装成第五响应数据包后发给诊断设备;或者,
周期性地检测网口数据,如果在检测周期内网口数据没有变化,则将异常的运行信息、所述状态信息和日志信息写入所述保留内存中,重启设备。
在上述技术方案的基础上,具有内存检测器件的目标设备执行重启操作时,首先关闭内存检测器件对所述保留内存的错误检测使能,通过直接内存存取DMA对所述保留内存进行快速刷新,再打开错误检测使能。
本发明还提供一种设备故障处理方法,其包括:
诊断设备通过网卡驱动向目标设备发送携带信息收集命令的诊断数据包;
监听网卡驱动接收目标设备返回的响应数据包所产生的中断,如果在预定时限内收到第一响应数据包,则从第一响应数据包中解析出实时获取的状态信息和/或保留内存中的日志信息,以进行故障诊断分析;否则,向目标设备发送携带重启设备命令的诊断数据包,接收并解析目标设备返回的命令收到的第二响应数据包;
其中,诊断数据包均包括MAC地址、诊断数据包的标识和目标设备的标识ID。
本发明还提供一种设备故障处理***,设于目标设备中,所述***包括第一通信模块、第一处理模块、检测模块、收集模块和预设的保留内存;
所述检测模块用于定时将状态信息和日志信息写入所述保留内存中;
所述第一通信模块用于监听网卡驱动接收诊断设备发送的诊断数据包所产生的中断,并通知所述第一处理模块,其中,诊断数据包包括MAC地址、诊断数据包的标识和目标设备的标识ID;还用于将所述第一处理模块组装的所有响应数据包发送给诊断设备;
所述收集模块用于收集实时的状态信息;
所述第一处理模块用于根据诊断数据包携带的信息收集命令,将实时获取的状态信息和/或所述保留内存中的日志信息组装成第一响应数据包;还用于根据诊断数据包携带的重启设备命令,组装命令收到的第二响应数据包并发送给诊断设备,并触发设备重启操作。
在上述技术方案的基础上,所述第一处理模块还用于将所述保留内存中的所述状态信息和/或日志信息组装成第三响应数据包;
所述第一处理模块还用于根据所述诊断数据包携带的复位设备命令触发设备复位操作;根据所述诊断数据包携带的重启进程命令触发进程重启操作;
所述收集模块还用于根据所述诊断数据包携带的所述信息收集命令,收集指定的运行信息;所述第一处理模块还用于将指定的运行信息组装成第四响应数据包。
在上述技术方案的基础上,所述检测模块还用于实时检测运行信息;
所述第一处理模块还用于将异常的运行信息组装成第五响应数据包;
所述检测模块还用于周期性地检测网口数据,如果在检测周期内网口数据没有变化,则将设备异常信息、所述状态信息和日志信息写入所述保留内存中,通知所述第一处理模块触发重启设备。
本发明还提供一种设备故障处理***,设于诊断设备中,所述***包括第二通信模块和第二处理模块;
所述第二通信模块用于通过网卡驱动向目标设备发送携带信息收集命令的诊断数据包以及携带重启设备命令的诊断数据包;还用于监听网卡驱动接收目标设备返回的响应数据包所产生的中断,并通知所述第二处理模块;其中,诊断数据包均包括MAC地址、诊断数据包的标识和目标设备的标识ID;
所述第二处理模块用于解析在预定时限内收到的第一响应数据包,得到实时获取的状态信息和/或保留内存中的日志信息,以进行故障诊断分析;解析目标设备返回的命令收到的第二响应数据包。
与现有技术相比,本发明实施例通过设备故障处理方法,目标设备定时将状态信息和日志信息写入预设的保留内存中,以及监听网卡驱动接收诊断设备发送的诊断数据包所产生的中断,诊断数据包包括MAC地址、诊断数据包的标识和目标设备的标识ID;根据诊断数据包携带的信息收集命令,将实时获取的状态信息和/或保留内存中的日志信息组装成第一响应数据包后发送给诊断设备;或者,根据诊断数据包携带的重启设备命令,向诊断设备发送命令收到的第二响应数据包,并触发设备重启操作。
本发明实施例在***调度异常或者通信协议栈异常,无法使用远程网络登录,甚至无法PING通故障设备时,仍然可以通过二层的数据包远程收集目标设备实时获取的状态信息和/或保留内存中的日志信息,兼顾目标设备的实时信息以及信息收集的效率,提高故障排查效率,并控制目标设备重启以恢复业务。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
参见图1所示,本发明实施例提供一种设备故障处理方法,用于目标设备,设备故障处理方法包括:
S110目标设备定时将状态信息和日志信息写入预设的保留内存中,以及监听网卡驱动接收诊断设备发送的诊断数据包所产生的中断,其中,诊断数据包均包括媒体接入控制(Media Access Control,MAC)地址、诊断数据包的标识和目标设备的标识ID。
根据诊断数据包携带的命令执行步骤S120或者S130。
S120根据诊断数据包携带的信息收集命令,将实时获取的状态信息和/或保留内存中的日志信息组装成第一响应数据包后发送给诊断设备。
S130根据诊断数据包携带的重启设备命令,向诊断设备发送命令收到的第二响应数据包,并触发设备重启操作。
具体的,状态信息包括中央处理器(Central Processing Unit,CPU)、内存、高速***组件互连(Peripheral Component Interconnect express,PCIe)总线接口、进程和堆栈等信息。
具体的,诊断数据包和响应数据包都是二层报文,包括目的MAC地址、源MAC地址和净荷部分。
图2所示为诊断数据包净荷部分的一个示例,净荷部分包括关键字、目标ID、命令码、数据长度和数据信息,其中,关键字包括诊断数据包的标识,用于区别于其他类型的数据包;目标ID包括目标设备的标识ID,目标设备的标识ID是网络内的唯一标识ID,例如,对于有框槽号的目标设备,可以采用框槽号作为目标设备的标识ID,对于没有框槽号的目标设备,可以根据生产信息序号设置,不作限定。命令码包括诊断数据包所携带的信息收集命令或者重启设备命令。
响应数据包净荷部分包括关键字、目标ID、命令码、数据长度和数据信息,实时获取的状态信息和/或保留内存中的日志信息写入数据信息字段。其中,响应数据包可以包含状态信息中的一项或多项信息。
根据响应数据包携带的内容不同,响应数据包分为第一响应数据包和第二响应数据包等。
诊断设备向目标设备发送的诊断数据包一般是单播,但也支持多播和组播。为了安全性和可靠性,诊断数据包有循环冗余校验(Cyclic Redundancy Check,CRC)校验字段,诊断内容是密文,对收到的数据包进行解析后,确定是自发时则丢弃。
目标设备网口中断处理根据关键字判断诊断数据包,只处理目标ID与本设备的标识ID相同的数据包(0xff广播包除外)。
具体的,目标设备启动时,为故障诊断设置保留内存。
在没有内存检测器件的目标设备中,保留内存为高端内存,高端内存能避免***启动时被初始化。
对具有硬件内存检测器件(如错误检查和纠正(Error Checking andCorrecting,ECC))的设备,采用以下方法实现保留内存。
具体的,具有内存检测器件的目标设备执行重启操作时,在引导启动boot阶段首先关闭内存检测器件对保留内存的错误检测使能,通过直接内存存取(Direct MemoryAccess,DMA)对保留内存进行快速刷新,再打开错误检测使能,在目标设备重启时,保留内存内存储的信息仍然保留。***启动阶段设置保留内存不被***初始化,保证保留内存空间既不被ECC判为内存异常,也不会被***初始化。故障信息和关键历史资源信息保存在保留内存中,能热重启后依然存在。
通信设备通过保留内存记录诊断信息,而有硬件内存检测器件的新设备无法建立有效保留内存。本发明实施例对热重启保留内存实现方法改进,能用于有硬件检测模块ECC内存管理的设备。
在步骤S130中,触发设备重启操作可以包括:生成运行异常标志并写入保留内存中,然后执行设备重启。
如果目标设备具有非易失性存储器(例如FLASH),目标设备还可以在重启前将保留内存中的信息转储到非易失性存储器中,然后执行设备重启操作,避免目标设备掉电而失去保留内存中的信息。
在一种示例中,如果诊断设备超时没收到响应数据包,可能目标设备能在通信驱动层接收诊断数据包,但不能发送响应数据包,诊断设备可执行转储命令后,发送携带重启设备命令的诊断数据包。
本发明实施例中,目标设备监听网卡驱动接收诊断设备发送的诊断数据包所产生的中断,根据诊断数据包携带的信息收集命令,将实时获取的状态信息和/或保留内存中的日志信息组装成第一响应数据包后发送给诊断设备。根据诊断数据包携带的重启设备命令,向诊断设备发送命令收到的第二响应数据包,并触发设备重启操作。在***调度异常或者通信协议栈异常,无法使用远程网络登录,甚至无法PING通故障设备时,使得诊断设备仍然可以通过二层的数据包远程收集目标设备的信息并控制目标设备。
保留内存中的状态信息和日志信息为目标设备的历史信息,实时获取的状态信息是目标设备的当前状态信息,向诊断设备发送实时获取的状态信息和/或保留内存中的日志信息,兼顾目标设备的实时信息以及信息收集的效率,提高诊断设备进行故障排查的效率。
在一种可选的实施方式中,步骤S120还可以包括:
根据诊断数据包携带的信息收集命令,收集指定的运行信息,将运行信息组装成第四响应数据包后发给诊断设备。
具体的,目标设备可以通过***函数或Linux的内核动态探针(Kernel DynamicProbes,Kprobe)技术获取指定的运行信息,使得诊断设备能够获得指定的运行信息。
在一种可选的实施方式中,步骤S130之后,目标设备重启后,重新接收诊断数据包并发送保留内存中的信息。设备故障处理方法还包括:
S140接收诊断设备重新发送的诊断数据包。
具体的,目标设备监听网卡驱动接收诊断设备发送的诊断数据包所产生的中断。
S150根据诊断数据包携带的信息收集命令,将保留内存中的状态信息和/或日志信息组装成第三响应数据包后发送给诊断设备。
在本发明实施例中,由于目标设备定时将状态信息和日志信息写入预设的保留内存中,保留内存中的信息在设备重启后不会丢失,从而在设备重启后,再向诊断设备发送状态信息和/或日志信息,确保诊断设备获得状态信息和/或日志信息,以进行远程故障诊断。
在一种可选的实施方式中,在步骤S130之后,目标设备还可以直接向诊断设备发送保留内存中的信息,设备故障处理方法还包括:
S160将保留内存中的状态信息和/或日志信息组装成第三响应数据包后发送给诊断设备。
具体的,目标设备根据重启前写入保留内存中的运行异常标志,组装第三响应数据包并发送给诊断设备。
参见图3所示,本发明另一实施例设备故障处理方法包括:
S210目标设备定时将状态信息和日志信息写入预设的保留内存中,以及监听网卡驱动接收诊断设备发送的诊断数据包所产生的中断,其中,诊断数据包包括MAC地址、诊断数据包的标识和目标设备的标识ID。
根据诊断数据包携带的命令执行步骤S220或者S230。
S220根据诊断数据包携带的复位设备命令触发设备复位操作。
S230根据诊断数据包携带的重启进程命令触发进程重启操作。
具体的,执行步骤S220和S230之后,均还可以向诊断设备发送执行结果的响应数据包。
在其他可选的实施方式中,步骤S220或者S230也可以在步骤S120之后执行。步骤S220或者S230也可以在步骤S150之后执行。步骤S220或者S230也可以在步骤S160之后执行。不作限定。
在上述实施例的基础上,本发明实施例设备故障处理方法还包括:
S310实时检测运行信息,将异常的运行信息组装成第五响应数据包后发给诊断设备。
具体的,目标设备可以通过***函数或Linux的Kprobe技术获取指定的运行信息。目标设备除了响应诊断设备的诊断数据包,进行收集信息、控制进程重启、设备重启或者设备复位之外,目标设备还可以主动向诊断设备发送异常的运行信息。
在上述实施例的基础上,本发明实施例设备故障处理方法还包括:
S320周期性地检测网口数据,如果在检测周期内网口数据没有变化,则将异常的运行信息、状态信息和日志信息写入保留内存中,重启设备。
具体的,网口数据包括接收包计数、发送包计数和错误包计数等参数。
本发明实施例中,如果目标设备检测到通信网口超时数据无变化时(例如超过2小时),表明此时目标设备已经长期脱管运行,网口软件彻底异常,目标设备可能无法收到诊断数据包,必须重启以恢复业务。重启前,目标设备在保留内存记录异常标志和故障信息(如进程和堆栈信息,其他关键信息),如果目标设备具有非易失性存储器(例如FLASH),则转储重要数据和诊断信息等设备异常信息,然后重启设备。目标设备恢复后,诊断设备远端能获取保留内存内的故障信息和历史关键信息记录,用于故障诊断。
参见图4所示,本发明实施例提供一种设备故障处理方法,用于诊断设备,设备故障处理方法包括:
S410诊断设备通过网卡驱动向目标设备发送携带信息收集命令的诊断数据包。
S420监听网卡驱动接收目标设备返回的响应数据包所产生的中断。
S430判断是否在预定时限内收到第一响应数据包,若是,则进入步骤S440;若否,则进入步骤S450。
S440从第一响应数据包中解析出实时获取的状态信息和/或保留内存中的日志信息,以进行故障诊断分析,结束。
S450向目标设备发送携带重启设备命令的诊断数据包。
S460接收并解析目标设备返回的命令收到的第二响应数据包。
在一种可选的实施方式中,步骤S410中,信息收集命令携带指定的运行信息。设备故障处理方法还包括:接收并解析目标设备返回的第四响应数据包,第四响应数据包包括运行信息。
在一种可选的实施方式中,在步骤S460之后,设备故障处理方法还包括:
S470向目标设备重新发送携带信息收集命令的诊断数据包。
S480接收并解析目标设备返回的第三响应数据包。
在一种可选的实施方式中,在步骤S460之后,设备故障处理方法还包括:
S490接收目标设备返回的第三响应数据包,从第三响应数据包中解析出保留内存中的状态信息和/或日志信息。
在一种可选的实施方式中,设备故障处理方法包括:
S510向目标设备发送携带复位设备命令的诊断数据包。
在一种可选的实施方式中,设备故障处理方法包括:
S520向目标设备发送携带重启进程命令的诊断数据包。
在一种可选的实施方式中,设备故障处理方法还包括:接收并解析目标设备发送的第五响应数据包,第五响应数据包包括异常的运行信息。
参见图5所示,本发明实施例设备故障处理方法的一种应用流程图,目标设备中设备故障处理方法包括:
S601目标设备***启动,设置保留内存。
S602加载诊断程序。
S603a设置目标设备的标识ID,进入步骤S604。
S603b状态信息和日志信息写入保留内存,进入步骤S608。
S604监听网卡驱动中断。
S605是否是诊断数据包,若是,进入步骤S606;若否,返回步骤S604。
S606解析诊断数据包。
S607执行并返回响应数据包。
S608检查运行信息是否正常,若是,进入步骤S609;若否,进入步骤S610。
S609检查网口数据是否正常,若是,返回步骤S603b;若否,进入步骤S611。
S610发送异常的运行信息。
诊断设备中设备故障处理方法包括:
S701发起诊断。
S702选择功能选项。
功能选项包括信息收集、重启设备、重启进程和设备复位等。信息收集可以收集状态信息中的一项或几项、日志信息等。
S703是否退出诊断,若是,进入步骤S704;若否,进入步骤S705。
S704退出诊断。
S705发送诊断数据包,其中,诊断数据包携带步骤S702中选择的功能选项对应的命令。
S706监听网卡驱动中断。
S707判断是否收到响应数据包或超时,若是,进入步骤S708;若否,返回步骤S706。
S708显示解析响应数据包的结果,返回步骤S702。
参见图6所示,本发明实施例提供一种设备故障处理***,设于目标设备中,设备故障处理***包括第一通信模块、第一处理模块、检测模块、收集模块和预设的保留内存。第一通信模块位于网卡驱动中。在操作***(Operating System,OS)网卡驱动层修改增加第一通信模块,用于不同设备间通信,第一通信模块和第一处理模块通过套接字通信。
检测模块用于定时将状态信息和日志信息写入保留内存中。
第一通信模块用于监听网卡驱动接收诊断设备发送的诊断数据包所产生的中断,并通知第一处理模块,其中,诊断数据包包括MAC地址、诊断数据包的标识和目标设备的标识ID;还用于将第一处理模块组装的所有响应数据包发送给诊断设备。
收集模块用于收集实时的状态信息。
第一处理模块用于根据诊断数据包携带的信息收集命令,将实时获取的状态信息和/或保留内存中的日志信息组装成第一响应数据包;还用于根据诊断数据包携带的重启设备命令,组装命令收到的第二响应数据包并发送给诊断设备,以及触发设备重启操作。
在一种可选的实施方式中,第一处理模块还用于根据诊断数据包携带的复位设备命令触发设备复位操作;根据诊断数据包携带的重启进程命令触发进程重启操作;
收集模块还用于根据诊断数据包携带的信息收集命令,收集指定的运行信息;第一处理模块还用于将指定的运行信息组装成第四响应数据包。
在一种可选的实施方式中,检测模块还用于实时检测运行信息;第一处理模块还用于将异常的运行信息组装成第五响应数据包。
在一种可选的实施方式中,检测模块还用于周期性地检测网口数据,如果在检测周期内网口数据没有变化,则将设备异常信息、状态信息和日志信息写入保留内存中,通知第一处理模块触发重启设备。
在具有内存检测器件的目标设备中,设备故障处理***还包括控制模块,控制模块用于执行重启操作时,首先关闭内存检测器件对保留内存的错误检测使能,通过直接内存存取DMA对保留内存进行快速刷新,再打开错误检测使能。
进一步的,设备故障处理***还包括配置模块,配置模块用于设置本网络内唯一标识ID,有框槽号则根据框槽号,无框槽号则根据生产信息序号设置。
参见图6所示,本发明实施例还提供一种设备故障处理***,设于诊断设备中,设备故障处理***包括第二通信模块、第二处理模块、存储模块和交互模块。
第二通信模块位于网卡驱动中。在操作***OS网卡驱动层修改增加第二通信模块,用于不同设备间通信,第二通信模块和第二处理模块通过套接字通信。
第二通信模块用于通过网卡驱动向目标设备发送携带信息收集命令的诊断数据包以及携带重启设备命令的诊断数据包;还用于监听网卡驱动接收目标设备返回的响应数据包所产生的中断,并通知第二处理模块;其中,诊断数据包均包括MAC地址、诊断数据包的标识和目标设备的标识ID。
第二处理模块用于解析在预定时限内收到的第一响应数据包,得到实时获取的状态信息和/或保留内存中的日志信息,以进行故障诊断分析;解析目标设备返回的命令收到的第二响应数据包。
存储模块用于保存故障诊断分析的结果。
交互模块用于接收维护人员或者网管下发的消息,并显示故障诊断分析的结果。
以Linux操作***为例,需要诊断时,诊断设备的第二通信模块在网域内发送二层报文用于诊断协商,使用内核dev_queue_xmit函数发送。目标设备的通信网口以IntelPRO/1000网卡为例,第一通信模块通过e1000_request_irq注册中断处理函数e1000_intr,当收到诊断数据包时,根据诊断数据包中的关键字是否匹配来判断是否诊断诊断包,非诊断诊断包则按正常数据包处理流程。第一处理模块对诊断协商命令会响应发起的诊断设备,诊断数据包含本目标设备的信息如标识ID和MAC地址。目标设备后续会对诊断协商命令响应的数据包解析,建立设备标识ID和MAC地址关系表,用于根据MAC地址发送响应数据包。
在一种可选的实施方式中,第二处理模块还用于解析目标设备返回的第三响应数据包,得到保留内存中的状态信息和/或日志信息。
在一种可选的实施方式中,第二通信模块还用于向目标设备发送携带复位设备命令的诊断数据包以及携带重启进程命令的诊断数据包。
信息收集命令携带指定的运行信息;第二处理模块还用于解析目标设备返回的第四响应数据包,第四响应数据包包括指定的运行信息。
在一种可选的实施方式中,第二通信模块还用于接收目标设备发送的第五响应数据包,第五响应数据包包括异常的运行信息。
第二处理模块还用于解析第五响应数据包。
本发明实施例在Linux操作***上开发,也适用于其他类似软件描述。设备故障诊断与处理方法不仅适用于上述的收集和控制命令,也适用于对诊断设备的其他操作,诊断数据包格式和内容可以根据实际情况进行相应调整。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。