一种控制板卡上多个控制器进行主备切换的方法与流程

文档序号:16811273发布日期:2019-02-10 13:40阅读:335来源:国知局
一种控制板卡上多个控制器进行主备切换的方法与流程

本发明涉及存储领域,特别涉及一种控制板卡上多个控制器进行主备切换的方法及一种板卡。



背景技术:

随着多控制器系统的发展,为了增加对系统公共模块访问的可靠性,一般会设置多控制器中的某一个为主管理模块,其他为备管理模块,上层操作系统为主备切换的判决角色。

然而,在上层操作系统尚未启动时,由于板卡各控制器启动速度的快慢不一致,会出现意外的主备切换,可能导致管理模块上与控制器进行交互的芯片例如交换芯片等发生重启或者配置丢失,影响了整机系统的可靠性。



技术实现要素:

本发明的目的是提供一种控制板卡上多个控制器进行主备切换的方法及一种板卡,用以解决在上层操作系统尚未启动时,由于板卡各控制器启动速度的快慢不一会出现意外的主备切换,导致与控制器进行交互的芯片发生重启或者配置丢失,降低了整个系统的可靠性的问题。

为解决上述技术问题,本发明提供了一种控制板卡上多个控制器进行主备切换的方法,包括:

在上层操作系统启动前,监测板卡上控制器的启动状态;

若监测到多个控制器的启动状态为正在启动,从所述多个控制器中选取一个控制器作为主控制器运行,并将所述多个控制器中除去所述主控制器的控制器作为备控制器运行;

向所述备控制器发送模拟心跳包直至所述上层操作系统启动,以防止备控制器发起主备切换请求。

可选的,所述在上层操作系统启动前,监测板卡上控制器的启动状态,具体包括:

在上层操作系统启动前,监测板卡上控制器的启动日志。

可选的,所述在上层操作系统启动前,监测板卡上控制器的启动日志,具体包括:

在上层操作系统启动前,利用多个心跳模块监测板卡上控制器的启动日志,其中,所述心跳模块与所述控制器一一对应,所述心跳模块之间以无线通信方式共享所述启动日志。

可选的,在所述向所述备控制器发送模拟心跳包直至所述上层操作系统启动,以防止备控制器发起主备切换请求之后,还包括:

响应于上层操作系统的启动,停止向所述备控制器发送所述模拟心跳包。

可选的,所述从所述多个控制器中选取一个控制器作为主控制器,具体包括:

将所述多个控制器中的预设控制器作为主控制器。

此外,本发明还提供了一种板卡,包括:心跳模块以及多个控制器;

其中,所述心跳模块用于在上层操作系统启动前,监测各个所述控制器的启动状态,还用于在监测到预设数量的控制器的启动状态为正在启动时,从所述预设数量的控制器中选取一个控制器作为主控制器运行,将所述预设数量的控制器中除去所述主控制器的控制器作为备控制器运行,并向所述备控制器发送模拟心跳包直至所述上层操作系统启动,以防止备控制器发起主备切换请求,其中,所述预设数量为不小于两个。

可选的,所述心跳模块具体用于:在上层操作系统启动前,监测各个所述控制器的启动日志。

可选的,所述心跳模块的数量为多个,所述心跳模块与所述控制器一一对应,所述心跳模块之间以无线通信方式共享所述启动日志。

可选的,所述心跳模块还用于:响应于所述上层操作系统的启动,停止向所述备控制器发送所述模拟心跳包。

可选的,所述心跳模块具体用于:将所述预设数量的控制器中的预设控制器作为主控制器运行。本发明所提供的一种控制板卡上多个控制器进行主备切换的方法,能够在上层操作系统启动前,监测板卡上控制器的启动状态,并在监测到多个控制器的启动状态为正在启动时,从多个控制器中选取一个控制器作为主控制器,并将其余的控制器作为备控制器,然后向备控制器发送模拟心跳包直至上层操作系统启动,以防止备控制器发起主备切换请求。可见,该方法能够在监测到多个控制器正在启动的时候,选取一个控制器作为主控制器,并向备控制器发送心跳包以防止备控制器在优先于主控制器完成启动时发起主备切换请求,避免了由于主备切换导致的相关芯片重启或丢失配置信息的问题,提高了可靠性。

此外,本发明还公开了一种板卡,其作用与上述方法相对应,这里不再赘述。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明所提供的一种控制板卡上多个控制器进行主备切换的方法实施例一的实现流程图;

图2为本发明所提供的一种控制板卡上多个控制器进行主备切换的方法实施例二的实现流程图;

图3为本发明所提供的一种板卡实施例的结构框图。

具体实施方式

本发明的核心是提供一种控制板卡上多个控制器进行主备切换的方法及一种板卡,避免了在上层操作系统启动之前由于主备切换导致的相关芯片重启或丢失配置信息的问题,提高了可靠性。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

下面对本发明提供的一种控制板卡上多个控制器进行主备切换的方法实施例一进行介绍,参见图1,实施例一包括:

步骤s101:在上层操作系统启动前,监测板卡上控制器的启动状态。

本实施例主要针对设置有多个控制器的板卡,具体的控制器可以为bmc。作为一种可选的实施方式,本实施例的各个步骤可以利用预设的心跳模块实现,通过心跳模块监测板卡上各个控制器的启动状态,具体可以监测各个控制器的启动日志,从而获知各个控制器的启动状态。

作为一种可选的实施方式,可以设置多个如上所述的心跳模块,心跳模块与控制器一一对应,各个心跳模块分别与自身对应的控制器连接,通过这种方式来监测该控制器的启动日志,而各个心跳模块之间可以以无线的方式来共享各个被监测的控制器的启动日志。

步骤s102:若监测到多个控制器的启动状态为正在启动,从所述多个控制器中选取一个控制器作为主控制器运行,并将所述多个控制器中除去所述主控制器的控制器作为备控制器运行。

需要说明的是,步骤s102中监测到多个控制器的数量不一定为板卡上全部控制器的数量,只要保证不小于两个即可。另外,监测的状态是正在启动,也就是尚未完成启动,当存在控制器已经启动完成,那么则不存在监测的必要。

值得一提的是,这里选取的主控制器的依据,可以是按照预设规则选取出来的,也可以是随机选取的,本实施例对此不做限定。

步骤s103:向所述备控制器发送模拟心跳包直至所述上层操作系统启动,以防止备控制器发起主备切换请求。

这里简要说明,在上层操作系统没有启动之前,各个控制器进行主备切换的原理,该原理主要为:当第一个控制器启动完成时,该控制器会向其余控制器发送心跳包,以告知其他控制器作为备用控制器运行,同时自身作为主控制器运行。假设一个控制器在完成启动的时候,发现没有接收到其余控制器发送的心跳包,则会发起主备切换请求,请求自身作为主控制器运行。

基于上述原理,本实施例对除去主控制器之外的备控制器发送心跳包,以伪装成被选取的主控制器已经启动完成,并已经作为主控制器运行的假象,从而避免备控制器在优先于主控制器启动完后发起主备切换请求,避免了造成相关芯片的重新启动或丢失配置信息的问题,显著提高了整个系统的可靠性。

需要说明的是,在上层操作系统启动后,需要将控制主备的判决权交还给上层操作系统,也就是响应于上层操作系统的启动,停止向所述备控制器发送所述模拟心跳包。

综上,本实施例提供的一种控制板卡上多个控制器进行主备切换的方法,能够在上层操作系统启动前,监测板卡上控制器的启动状态,并在监测到多个控制器的启动状态为正在启动时,从多个控制器中选取一个控制器作为主控制器,并将其余的控制器作为备控制器,然后向备控制器发送模拟心跳包直至上层操作系统启动,以防止备控制器发起主备切换请求。

可见,该方法通过多控间无线互联的心跳模块,在上层操作系统尚未启动期间,对控制器的主备切换进行管理,具体的,在监测到多个控制器正在启动的时候,选取一个控制器作为主控制器,并向备控制器发送心跳包以防止备控制器在优先于主控制器完成启动时发起主备切换请求。防止出现因板卡各控制器启动速度的快慢不一致导致意外主备切换,并在上层操作系统启动后移交控制主备切换的判决权。减小了进行意外主备切换导致的与控制器进行交互的芯片的工作异常,进而大大提高了整机系统的可靠性。

下面对本发明提供的一种控制板卡上多个控制器进行主备切换的方法实施例二进行描述,实施例二基于实施例一实现,并在实施例一的基础上进行了一定程度的拓展。

具体的,在实施例二中,板卡上还可以设置串口模块,用于实现心跳模块与外界的信息交互,此外,还可以设置提示模块,用于将主备切换状态提示给外界,设置,还可以设置有无线模块,用于实现心跳模块与外界通过无线信号进行交互的目的。

具体的,如图2所示,实施例二具体包括:

步骤s201:在上层操作系统启动前,监测板卡上控制器的启动状态。

步骤s202:若监测到多个控制器的启动状态为正在启动,根据串口模块发送的选择指令,从所述多个控制器中选取一个控制器作为主控制器运行,并将所述多个控制器中除去所述主控制器的控制器作为备控制器运行。

具体的,上述选择指令可以是以无线信号的形式传递,先传递到板卡上的无线模块,再由无线模块传递给上述串口模块。

步骤s203:向所述备控制器发送模拟心跳包直至所述上层操作系统启动,以防止备控制器发起主备切换请求,同时将主备切换状态通过串口模块发送到提示模块,以便于提示模块向外界提示所述主备切换状态。

可见,本实施例在实施例一的基础上,实现了根据串口模块发送来的选择指令选取主控制器,此外还能够通过提示模块对外提示主备切换状态,使得主备控制更加灵活而直观。

下面对本发明提供的一种板卡实施例进行介绍,下文描述的一种板卡与上文描述的一种控制板卡上多个控制器进行主备切换的方法可相互对应参照。

参见图3,该板卡实施例包括:心跳模块301以及多个控制器302。

其中,所述心跳模块301用于在上层操作系统303启动前,监测各个所述控制器302的启动状态,还用于在监测到预设数量的控制器302的启动状态为正在启动时,从所述预设数量的控制器302中选取一个控制器作为主控制器运行,将所述预设数量的控制器302中除去所述主控制器的控制器作为备控制器运行,并向所述备控制器发送模拟心跳包直至所述上层操作系统303启动,以防止备控制器发起主备切换请求,其中,所述预设数量为不小于两个。

具体的,心跳模块301位于板卡上,主要应用例如cpld、fpga等可编程逻辑芯片。该模块在上层操作系统尚未启动期间,可以对控制器(以bmc为例)进行管理。具体通过多控间的无线互联,进行bmc等模块启动日志等信息的共享,在确认各控制器bmc正在启动后,将主bmc确认为系统默认槽位的bmc,不因其他控制器bmc启动速度快而进行主备切换。在上层操作系统启动后,移交控制主备切换的判决权,并将各个控制器的启动信息同步给上层操作系统,此时多控bmc间正常进行网络心跳链路互联。

作为一种可选的实施方式,所述心跳模块301具体用于:在上层操作系统303启动前,监测各个所述控制器302的启动日志。

作为一种可选的实施方式,所述心跳模块301的数量为多个,所述心跳模块301与所述控制器302一一对应,所述心跳模块301之间以无线通信方式共享所述启动日志。如图3所示,心跳模块有2个,控制器有2个,二者一一对应。

作为一种可选的实施方式,所述心跳模块301具体用于:将所述预设数量的控制器302中的预设控制器作为主控制器运行。

作为一种可选的实施方式,所述心跳模块301还用于:响应于所述上层操作系统303的启动,停止向所述备控制器发送所述模拟心跳包。

作为一种可选的实施方式,如图3所示,所述板卡还可以包括串口模块304,通过串口模块304可以进行外界与心跳模块301的信息交互。此外还可以包括指示模块305,该模块位于板卡上,受串口模块304的直接控制,对外指示当前主备切换状态。最后,还可以包括无线模块306,无线模块306可将串口模块304的信号转换成wifi等无线信号,或将外界的无线信号转换为串口模块304的串口信号,因此外界不用实体串口线就可与心跳模块301进行信息交互,各控制器302的心跳模块301也可以通过无线方式进行信息交互。

本实施例的一种板卡用于实现前述的一种控制板卡上多个控制器进行主备切换的方法,因此该板卡的具体实施方式可见前文中的一种控制板卡上多个控制器进行主备切换的方法的实施例部分,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再展开介绍。

另外,由于本实施例的一种板卡用于实现前述的一种控制板卡上多个控制器进行主备切换的方法,因此其作用与上述方法的作用相对应,这里不再赘述。

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

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

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

以上对本发明所提供的一种控制板卡上多个控制器进行主备切换的方法及一种板卡进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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