一种实现控制器复位的系统及方法与流程

文档序号:16525669发布日期:2019-01-05 10:19阅读:404来源:国知局
一种实现控制器复位的系统及方法与流程

本申请涉及计算机技术领域,具体涉及一种实现控制器复位的系统及方法。



背景技术:

随着信息技术的发展,在很多领域为了保证服务器系统的稳定性,会设置双控制器,例如作为支持云服务器后台存在的存储服务器就设置了双控制器,其主要目的和优势在于管理和计算上的冗余,当某个控制器出现问题时另一个控制器还可以继续工作,从而保证系统整体的运行、保证数据不丢失、业务不中断。那么当一个控制器出现问题后,系统对于出现问题的控制器的处理便是对于冗余系统的保证和支持至关重要的一点。

在现有技术中,控制器可修复的故障通常是软件系统的宕机,通常修复方式为将控制器拔出,使控制器下电后重新插入,对控制器进行强行复位,从而解决软件系统宕机问题,这种方法需要管理工程师发现并定位问题控制器,找到相应控制器后进入机房操作,操作复杂、需要耗费较多的人工成本。



技术实现要素:

有鉴于此,本申请实施例提供一种实现控制器复位的系统及方法,以解决现有技术中控制器复位操作复杂、耗费较多人工成本的技术问题。

为解决上述问题,本申请实施例提供的技术方案如下:

一种实现控制器复位的系统,所述系统包括:

第一控制器以及第二控制器;所述第一控制器包括第一控制单元以及第一可编程逻辑器件,所述第二控制器包括第二控制单元以及第二可编程逻辑器件;所述第一控制单元与所述第一可编程逻辑器件相连,所述第二控制单元与所述第二可编程逻辑器件相连;所述第一控制单元与所述第二控制单元相连,所述第一可编程逻辑器件与所述第二可编程逻辑器件相连;

所述第二控制单元,用于向所述第一控制单元发送心跳信号;

所述第一控制单元,用于接收所述心跳信号,判断所述心跳信号是否存在异常,如果存在异常,向所述第一可编程逻辑器件发送复位控制信息;

所述第一可编程逻辑器件,用于获取所述复位控制信息,将所述复位控制信息发送给第二可编程逻辑器件;

所述第二可编程逻辑器件,用于获取所述复位控制信息,根据所述复位控制信息,触发所述第二控制单元复位。

在一种可能的实现方式中,所述第二可编程逻辑器件,还用于在获取复位控制信息之后,向所述第二控制单元发送检测信号;

所述第二可编程逻辑器件,具体用于如果超过预设时间未接收到所述检测信号的响应信号,根据所述复位控制信息,触发所述第二控制单元复位。

在一种可能的实现方式中,所述第二可编程逻辑器件,还用于向所述第一可编程逻辑器件发送输入输出接口状态信息;

所述第一可编程逻辑器件,还用于接收并存储所述输入输出接口状态信息。

在一种可能的实现方式中,所述第一控制单元,具体用于接收所述心跳信号,判断所述心跳信号是否存在异常,如果存在异常,将复位控制信息写入所述第一可编程逻辑器件的寄存器;

所述第一可编程逻辑器件,具体用于读取所述寄存器获取所述复位控制信息,将所述复位控制信息发送给第二可编程逻辑器件。

在一种可能的实现方式中,所述第一可编程逻辑器件还包括第一i2c模块,所述第一可编程逻辑器件通过所述第一i2c模块与所述第一控制单元相连;所述第二可编程逻辑器件还包括第二i2c模块,所述第二可编程逻辑器件通过所述第二i2c模块与所述第二控制单元相连。

在一种可能的实现方式中,所述第一可编程逻辑器件为复杂可编程逻辑器件cpld或者现场可编程门阵列fpga;所述第二可编程逻辑器件为cpld或者fpga。

一种实现控制器复位的方法,所述方法应用于实现控制器复位的系统,所述系统包括:第一控制器以及第二控制器;所述第一控制器包括第一控制单元以及第一可编程逻辑器件,所述第二控制器包括第二控制单元以及第二可编程逻辑器件;所述第一控制单元与所述第一可编程逻辑器件相连,所述第二控制单元与所述第二可编程逻辑器件相连;所述第一控制单元与所述第二控制单元相连,所述第一可编程逻辑器件与所述第二可编程逻辑器件相连;

所述方法包括:

所述第二控制单元向所述第一控制单元发送心跳信号;

所述第一控制单元接收所述心跳信号,判断所述心跳信号是否存在异常;

如果存在异常,所述第一控制单元接收向所述第一可编程逻辑器件发送复位控制信息;

所述第一可编程逻辑器件获取所述复位控制信息;

所述第一可编程逻辑器件将所述复位控制信息发送给第二可编程逻辑器件;

所述第二可编程逻辑器件获取所述复位控制信息,根据所述复位控制信息,触发所述第二控制单元复位。

在一种可能的实现方式中,所述方法还包括:

所述第二可编程逻辑器件在获取复位控制信息之后,向所述第二控制单元发送检测信号;

所述根据所述复位控制信息,触发所述第二控制单元复位,包括:

如果超过预设时间未接收到所述检测信号的响应信号,根据所述复位控制信息,触发所述第二控制单元复位。

在一种可能的实现方式中,所述方法还包括:

所述第二可编程逻辑器件向所述第一可编程逻辑器件发送输入输出接口状态信息;

所述第一可编程逻辑器件接收并存储所述输入输出接口状态信息。

在一种可能的实现方式中,所述如果存在异常,所述第一控制单元接收向所述第一可编程逻辑器件发送复位控制信息,包括:

如果存在异常,所述第一控制单元将复位控制信息写入所述第一可编程逻辑器件的寄存器;

所述第一可编程逻辑器件获取所述复位控制信息,包括:

所述第一可编程逻辑器件读取所述寄存器获取所述复位控制信息。

由此可见,本申请实施例具有如下有益效果:

本申请实施例通过第一控制器中的第一控制单元不断接收第二控制器中的第二控制单元发送的心跳信号,当超过某预设时间未接收到心跳信号,说明第二控制器可能存在故障,则需要第一控制单元向第一控制器中的第一可编程逻辑器件写入复位控制信息,由第一可编程逻辑器件向第二控制器中的第二可编程逻辑器件发送该复位控制信息,以使第二可编程逻辑器件根据该复位控制信息自动复位第二控制器中的第二控制单元,从而实现第二控制器的复位,在该过程中,第二控制器的检测及复位均通过第一控制器以及第二控制器中的第二可编程逻辑器件完成,无需人工进行判断及处理,提高了控制器宕机后复位恢复的效率,节省了大量人工成本。

附图说明

图1为本申请实施例示出的一种实现控制器复位的系统的示意图;

图2为本申请实施例示出的另一种实现控制器复位的系统的示意图;

图3为本申请实施例示出的一种实现控制器复位的方法的流程图。

具体实施方式

为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请实施例作进一步详细的说明。

在很多领域为了保证服务器系统的稳定性,会设置双控制器,在存在双控制器的系统中,当一个控制器出现问题后,系统对于出现问题的控制器的处理便是对于冗余系统的保证和支持至关重要的一点。在现有技术中,通常由人工对出现问题的控制器进行强复位,以修复出现问题的控制器,操作复杂、需要耗费较多的人工成本。

为了解决上述问题,本申请实施例提供了一种实现控制器复位的系统及方法,在具有双控制器的系统中,由一个控制器检测另一个控制器的状态,当被检测的控制器存在异常,则向存在异常的控制器发送复位控制信息,实现自动将存在异常的控制器进行复位,提高了控制器宕机后复位恢复的效率,节省了大量人工成本。

以下将结合附图,对本申请实施例提供的实现控制器复位的系统及方法进行详细说明。

参见图1所示,示出了本申请实施例提供的一种实现控制器复位的系统,该系统可以包括:

第一控制器10以及第二控制器20;第一控制器10包括第一控制单元11以及第一可编程逻辑器件12,第二控制器20包括第二控制单元21以及第二可编程逻辑器件22。

第一控制单元11与第一可编程逻辑器件12相连,第二控制单元21与第二可编程逻辑器件22相连;第一控制单元11与第二控制单元21相连,第一可编程逻辑器件12与第二可编程逻辑器件22相连。

其中,第二控制单元21,用于向第一控制单元发送心跳信号;

第一控制单元11,用于接收心跳信号,判断心跳信号是否存在异常,如果存在异常,向第一可编程逻辑器件发送复位控制信息;

第一可编程逻辑器件12,用于获取复位控制信息,将复位控制信息发送给第二可编程逻辑器件;

第二可编程逻辑器件22,用于获取复位控制信息,根据复位控制信息,触发第二控制单元复位。

在本实施例中,实现控制器复位的系统可以包括两个控制器,第一控制器可以理解为检测对端的第二控制器是否存在异常的控制器,如果第二控制器存在异常向第二控制器发送复位控制信息;第二控制器可以理解为被检测的控制器,如果第二控制器存在异常,可以获取第一控制器发送的复位控制信息以实现复位。可以理解的是,在存在两个控制器的系统中,两个控制器的功能相同,即每一控制器既能作为第一控制器、也能作为第二控制器,例如存在控制器a与控制器b,控制器a可以作为第一控制器检测控制器b是否存在异常,如存在异常,则向控制器b发送复位控制信息,使控制器b复位,反之,控制器b也可以作为第一控制器检测控制器a是否存在异常,如存在异常,则向控制器a发送复位控制信息,使控制器a复位。

在实际应用中,每一控制器均包括控制单元和可编程逻辑器件,即第一控制器包括第一控制单元以及第一可编程逻辑器件,第二控制器包括第二控制单元以及第二可编程逻辑器件。第一控制单元和第二控制单元可以为bmc(baseboardmanagementcontroller,基板管理控制器),第一可编程逻辑器件和第二可编程逻辑器件可以为cpld(complexprogrammablelogicdevice,复杂可编程逻辑器件),也可以为fpga(field-programmablegatearray,现场可编程门阵列)。

第一可编程逻辑器件可以包括第一i2c(inter-integratedcircuit,集成电路)模块,则第一控制单元可以通过i2c总线连接到第一可编程逻辑器件的第一i2c模块,类似的,第二可编程逻辑器件可以包括第二i2c模块,则第二控制单元可以通过i2c总线连接到第二可编程逻辑器件的第一i2c模块。同时,第一可编程逻辑器件和第二可编程逻辑器件同样可以通过i2c总线相连。另外,第一控制单元与第二控制单元相连,可以用于收发心跳信号。

以下将继续说明本申请实施例对控制器进行复位的工作原理。

第二控制单元可以向第一控制单元不间断地发送心跳信号,第一控制单元接收第二控制单元发送的心跳信号,当超过预设时间未接收到心跳信号,可以认为心跳信号存在异常,即第二控制单元可能存在故障,需要将第二控制单元进行复位;从而第一控制单元向第一可编程逻辑器件发送复位控制信息,第一可编程逻辑器件将该复位控制信息发送给第二可编程逻辑器件,第二可编程逻辑器件根据该复位控制信息,可以触发第二控制单元复位,从而实现第二控制器的复位。

在本申请实施例一些可能的实现方式中,第二可编程逻辑器件,还用于在获取复位控制信息之后,向第二控制单元发送检测信号;

第二可编程逻辑器件,具体用于如果超过预设时间未接收到检测信号的响应信号,根据复位控制信息,触发第二控制单元复位。

在该种实现方式中,第二可编程逻辑器件在获取复位控制信息之后,并不立即对第二控制单元进行复位,而是先对第二控制单元进行检测,防止因为某些原因误收到复位控制信息。第二可编程逻辑器件通过向第二控制单元发送检测信号,如果超过预设时间为接收到响应信号,则可以认为第二控制单元确实存在故障,则根据复位控制信息,触发第二控制单元复位。通过该种方式可以防止第二控制单元被错误地执行复位。

在本申请实施例一些可能的实现方式中,第二可编程逻辑器件,还用于向第一可编程逻辑器件发送输入输出接口状态信息;第一可编程逻辑器件,还用于接收并存储输入输出接口状态信息。

在实际应用中,在第二控制单元正常工作时,第二可编程逻辑器件可以实时获取第二控制单元的输入输出接口状态信息,在第二可编程逻辑器件接收到复位控制信息之后,代表第二控制单元可能存在故障,则第二可编程逻辑器件可以将输入输出接口状态信息发送给第一可编程逻辑器件进行存储,以使得第一控制器中保存有第二控制器的相关日志,如输入输出接口状态信息,从而可以对第二控制器的故障原因等内容进行回溯。

在本申请实施例一些可能的实现方式中,第一控制单元,具体用于接收心跳信号,判断心跳信号是否存在异常,如果存在异常,将复位控制信息写入第一可编程逻辑器件的寄存器;

第一可编程逻辑器件,具体用于读取寄存器获取复位控制信息,将复位控制信息发送给第二可编程逻辑器件。

在具体实现中,第一控制单元可以编辑第一可编程逻辑器件的寄存器,通过该方式将复位控制信息写入第一可编程逻辑器件的寄存器,第一可编程逻辑器件可以读取自身的寄存器获取到复位控制信息。

这样,本申请实施例通过第一控制器中的第一控制单元不断接收第二控制器中的第二控制单元发送的心跳信号,当超过某预设时间未接收到心跳信号或心跳信号本身存在异常,说明第二控制器可能存在故障,则需要第一控制单元向第一控制器中的第一可编程逻辑器件写入复位控制信息,由第一可编程逻辑器件向第二控制器中的第二可编程逻辑器件发送该复位控制信息,以使第二可编程逻辑器件根据该复位控制信息自动复位第二控制器中的第二控制单元,从而实现第二控制器的复位,在该过程中,第二控制器的检测及复位均通过第一控制器以及第二控制器中的第二可编程逻辑器件完成,无需人工进行判断及处理,提高了控制器宕机后复位恢复的效率,节省了大量人工成本。

以下结合实际应用场景,对本申请实施例提供的一种实现控制器服务器的系统进行说明。参见图2所示,示出了本申请实施例中另一种实现控制器服务器的系统,可以包括:

控制器a和控制器b,控制器a具有主板(matherboard,mb)1,主板1上搭载有bmc1和cpld1,bmc1将两个gpio(generalpurposeinputoutput,通用输入/输出)接口设置为i2cmaster接口连接到cpld1,cpld1将两个gpio接口设置为i2cdevice接口连接到bmc1,从而实现bmc1和cpld1通过两根i2c总线连接;类似的,控制器b具有主板(matherboard,mb)2,主板2上搭载有bmc2和cpld2,bmc2将两个gpio(generalpurposeinputoutput,通用输入/输出)接口设置为i2cmaster接口连接到cpld2,cpld2将两个gpio接口设置为i2cdevice接口连接到bmc2,从而实现bmc2和cpld2通过两根i2c总线连接。

另外,在逻辑上,cpld1内部调用i2c模块1,将cpld1和bmc1所连接的gpio与i2c模块1连接,实现cpld1和bmc1之间的通信,类似的,cpld2内部调用i2c模块2,将cpld2和bmc2所连接的gpio与i2c模块2连接,实现cpld2和bmc2之间的通信。

同时,bmc1和bmc2均将另两个gpio接口设置为心跳信号输入接口和心跳信号输出接口,心跳信号输入接口用于接收对端bmc发送的心跳信号,心跳信号输出接口用于向对端bmc发送心跳信号。

bmc1或bmc2在超过预设时间接收到对端bmc发送的心跳信号时,向本端cpld发送对端控制器状态,使cpld确认对端控制器状态从而向对端cpld发送复位控制信息,控制对端cpld控制对端bmc触发复位动作。在本实施例中,双控制器中当前控制器可以认为是本端,另一个控制器可以认为是对端,例如,控制器a的对端为控制器b,控制器a的本端cpld为cpld1等等。

另外,cpld在对本端bmc进行复位之前,可以对bmc进行检测,cpld可以将gpio状态通过i2c模块及gpio接口传输至对端cpld,同时在i2c模块增加上行到bmc的控制端口用于bmc编辑cpld使用。

本申请实施例通过cpld和bmc搭配,监视对端bmc等管理芯片的心跳状态,在对端管理芯片宕机时通过cpld对对端控制器进行复位动作,从而代替了工程师的工作,提高了控制器宕机后复位恢复的效率。

参见图3所示,示出了本申请实施例提供的一种实现控制器复位的方法,该方法可以应用于实现控制器复位的系统,该系统可以包括:第一控制器以及第二控制器;第一控制器包括第一控制单元以及第一可编程逻辑器件,第二控制器包括第二控制单元以及第二可编程逻辑器件;第一控制单元与第一可编程逻辑器件相连,第二控制单元与第二可编程逻辑器件相连;第一控制单元与第二控制单元相连,第一可编程逻辑器件与第二可编程逻辑器件相连;该系统可以是上述实施例提供的任意一种实现控制器复位的系统,关于实现控制器复位的系统的说明可以参见上述实施例,在此不再赘述。

基于上述系统,本申请实施例提供的实现控制器复位的方法可以包括以下步骤:

步骤301:第二控制单元向第一控制单元发送心跳信号;

步骤302:第一控制单元接收心跳信号,判断心跳信号是否存在异常;

步骤303:如果存在异常,第一控制单元接收向第一可编程逻辑器件发送复位控制信息;

步骤304:第一可编程逻辑器件获取复位控制信息;

步骤305:第一可编程逻辑器件将复位控制信息发送给第二可编程逻辑器件;

步骤306:第二可编程逻辑器件获取复位控制信息,根据复位控制信息,触发第二控制单元复位。

在本申请实施例一些可能的实现方式中,该方法还可以包括:

第二可编程逻辑器件在获取复位控制信息之后,向第二控制单元发送检测信号;

则根据复位控制信息,触发第二控制单元复位,可以具体包括:

如果超过预设时间未接收到检测信号的响应信号,根据复位控制信息,触发第二控制单元复位。

在本申请实施例一些可能的实现方式中,该方法还可以包括:

第二可编程逻辑器件向第一可编程逻辑器件发送输入输出接口状态信息;

第一可编程逻辑器件接收并存储输入输出接口状态信息。

在本申请实施例一些可能的实现方式中,如果存在异常,第一控制单元接收向第一可编程逻辑器件发送复位控制信息,可以具体包括:

如果存在异常,第一控制单元将复位控制信息写入第一可编程逻辑器件的寄存器;

第一可编程逻辑器件获取复位控制信息,可以具体包括:

第一可编程逻辑器件读取寄存器获取复位控制信息。

这样,本申请实施例通过第一控制器中的第一控制单元不断接收第二控制器中的第二控制单元发送的心跳信号,当超过某预设时间未接收到心跳信号或心跳信号本身存在异常,说明第二控制器可能存在故障,则需要第一控制单元向第一控制器中的第一可编程逻辑器件写入复位控制信息,由第一可编程逻辑器件向第二控制器中的第二可编程逻辑器件发送该复位控制信息,以使第二可编程逻辑器件根据该复位控制信息自动复位第二控制器中的第二控制单元,从而实现第二控制器的复位,在该过程中,第二控制器的检测及复位均通过第一控制器以及第二控制器中的第二可编程逻辑器件完成,无需人工进行判断及处理,提高了控制器宕机后复位恢复的效率,节省了大量人工成本。

需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1