一种多控制器之间的主从关系确认方法、系统及相关装置与流程

    专利2022-07-08  125


    本申请涉及存储设备领域,特别涉及一种多控制器之间的主从关系确认方法、系统及相关装置。



    背景技术:

    统一存储系列产品,典型架构为单框双控制器或者四控制器。双控制器或者四控制器之间存在冗余关系,即1块或者多块控制器出现故障时,可实现实时业务切换(移除故障控制器业务,将主机业务全部转移至其他控制器)。在双控或者多控架构下,某个控制器的管理单元(例如bmc)访问和管理机箱共享部件时,需要区分主从。例如某个控制器的bmc需要通过iic总线访问机箱挂耳温度时,需要与其他控制器的bmc进行主从协商,只有主控制器的bmc才能享有总线访问权和总线控制权,否则就会出现访问冲突。

    但此时各种异常处理较为复杂,两个控制器的bmc既需要共享器件访问及信息收集,又需要决策由哪个bmc进行共享器件的访问,另外一个是很难处理四控场景,多控制器下的主从协商需要每两个控制器的bmc之间预留一组通信总线,而且四个bmc要互通数据,主从协商过程极为复杂,协商过程耗时较长,很难满足上层业务的实时性要求。而且在控制器热插拔、控制器故障、bmc挂死、bmc复位等异常场景下,通过bmc两两之间的协商,处理逻辑将会更为复杂,实时性更差。



    技术实现要素:

    本申请的目的是提供一种多控制器之间的主从关系确认方法、系统、计算机可读存储介质和存储设备,能够快速确定控制器之间的主从关系。

    为解决上述技术问题,本申请提供一种多控制器之间的主从关系确认方法,各所述控制器通过总线相连,所述方法包括:

    所述控制器判断固定时间内所述总线是否存在电平变化;

    若是,目标控制器设置自身为从控制器;

    若否,进入抢主模式,并在所述抢主模式中确定所述控制器的主从关系。

    可选的,在所述抢主模式中确定所述控制器的主从关系包括:

    各所述控制器的cpld根据自身设备号得到抢主时间;其中,所述控制器包含设备号,所述设备号以预设顺序排序;

    按照所述预设顺序轮流发出抢主命令;

    在发送所述抢主命令后,若经过与自身设备号对应的抢主时间内所述总线不存在电平变化,则目标控制器置自身为主控制器。

    可选的,目标控制器置自身为主控制器之后,还包括:

    所述主控制器向剩余控制器发送抢主成功指令;

    剩余控制器若接收到所述抢主成功指令,或在与自身设备号对应的抢主时间内所述总线存在电平变化,所述控制器置自身为从控制器。

    可选的,目标控制器置自身为主控制器之后,还包括:

    所述主控制器每隔预设时间向与所述总线相连的从控制器发送数据同步申请,并将所述数据同步申请对应的同步数据写入寄存器。

    可选的,所述主控制器每隔预设时间向与所述总线相连的从控制器发送数据同步申请后,还包括:

    若所述主控制器向所述目标从控制器发送数据同步申请后的第二预设时间内未收到响应,设所述从控制器为离线状态;

    若目标从控制器为所述离线状态,在所述主控制器故障后,所述目标从控制器禁止发出所述抢主命令。

    可选的,所述主控制器每隔预设时间向与所述总线相连的从控制器发送数据同步申请,并将所述数据同步申请对应的同步数据写入寄存器包括:

    所述主控制器每隔预设时间以所述预设顺序向与所述总线相连的从控制器发送数据同步申请,并将所述数据同步申请对应的同步数据写入寄存器;

    其中,上一从控制器的数据同步过程与下一个从控制器的数据同步申请过程同时执行。

    可选的,还包括:

    若所述主控制器发起主从切换命令,或所述主控制器接收到所属bmc的故障消息,将所述预设顺序中当前主控制器的后一个控制器作为主控制器。

    本申请还提供一种多控制器之间的主从关系确认系统,应用于各所述控制器,各所述控制器通过一条总线相连,所述主从关系确认系统包括:

    判断模块,用于判断固定时间内所述总线是否存在电平变化;

    从控制器设定模块,用于所述判断模块判断结果为是时,设置自身为从控制器;

    抢主模块,用于所述判断模块判断结果为否时,进入抢主模式,并在所述抢主模式中确定所述控制器的主从关系。

    本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。

    本申请还提供一种存储设备,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的方法的步骤。

    本申请提供一种多控制器之间的主从关系确认方法,各所述控制器通过总线相连,所述方法包括:所述控制器判断固定时间内所述总线是否存在电平变化;若是,目标控制器设置自身为从控制器;若否,进入抢主模式,并在所述抢主模式中确定所述控制器的主从关系。

    本申请通过总线建立多控制器之间的连接,各控制器根据总线的电平变化确定自身为主控制器或从控制器,在抢主模式中可以直接确定主控制器,不必进行主从协商,从而高效完成多控选主及各控制器之间的数据同步。本申请还提供一种多控制器之间的主从关系确认系统、计算机可读存储介质和存储设备,具有上述有益效果,此处不再赘述。

    附图说明

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

    图1为本申请实施例所提供的一种多控制器之间的主从关系确认方法的流程图;

    图2为本申请实施例所提供的一种多控制器之间的主从关系确认系统结构示意图。

    具体实施方式

    为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

    请参考图1,图1为本申请实施例所提供的一种多控制器之间的主从关系确认方法的流程图,该方法包括:

    s101:控制器判断固定时间内总线是否存在电平变化;若是,进入s102;若否,进入s103;

    s102:目标控制器设置自身为从控制器;

    s103:进入抢主模式,并在抢主模式中确定控制器的主从关系。

    本实施例可以在任何需要执行多控制器之间主从关系确定时执行,例如可以在每次服务器上电时,或者服务器运行过程中主控制器发生故障时等情况。

    本实施例中,各控制器通过总线相连,具体的可以令各控制器cpld均与总线相连。总线中至少包含一个信号,也可以包含多个信号,例如时钟信号和数据信号。若总线采用两路以及两路以上的多路信号,可以在多路信号之间设备备份信号。特别的,以两路信号为例,两路总线可以互为备份,且备份总线传输数据与主总线完全一致。每个控制器包含对应的设备号,设备号以预设顺序排序,预设顺序为本领域技术人员对控制器配置的既定顺序,并无具体的规则限制,在设定预设顺序时,也可以参考各控制器性能,例如控制器性能越优,则其在排列顺序中越靠前等。每个设备的cpld芯片可以保留若干gpio连接至背板,使得背板可以根据槽位确定每个设备的设备号。例如若以二进制作为设备号,则控制器1的id为0001,控制器2的id为0010,…,控制器8的id为1000。特别的,当某个控制器首次上电后,首先判断设备号并对设备号进行校验(不符合规则的设备号视为错误),如果校验出错,则可以上报告警并停止响应总线命令。当然具体的校验过程应根据设备号的类型和内容作相应的配置,在此不作限定。

    对于每一个控制器而言,控制器判断固定时间内总线是否存在电平变化。该固定时间可以由本领域技术人员自由设定,例如可以设为1秒。控制器中的cpld可以判断总线是否存在高低电平变化。当进行控制器之间的数据同步申请和数据同步时,总线信号方才产生高低电平变化。因此,若总线信号在固定时间内存在高低电平变化,说明此时多控制器之间存在数据同步申请和数据同步,意味着此时已经确定了主从控制器。若在固定时间内不存在高低电平变化,该控制器进行抢主模式。抢主模式,顾名思义,即争抢主控制器的模式。抢主模式用于以预设的协商规则选择出当前控制器中的主控制器,各主控制器可以轮流发出抢主命令。本实施例对于抢主模式的具体实施过程不做详细限定。

    为了便于理解,下文以抢主模式下的一种优选的执行方式对抢主模式进行说明,该模式中,可以包含如下三个步骤:

    s1031:各控制器的cpld根据自身设备号得到抢主时间;

    s1032:按照预设顺序轮流发出抢主命令;

    s1033:在发送抢主命令后,若经过与自身设备号对应的抢主时间内总线不存在电平变化,则目标控制器置自身为主控制器。

    需要注意的是,抢主时间并不相同。以八控制器为例,若设备号分别为1-8,则各自赌对应的抢主时间可以为设备号与时间单位的乘积。以时间单位为100ms为例,某个控制器的id为5,可以设5*100ms时间内没有时钟和数据变化,则发送抢主命令。同理,发送抢主命令之后开始计时,n*100ms后未发现总线有高低电平变化,则可以设自身为主控制器。如果在n*100ms之内发现总线数据有变化,则立即置自己为从控制器。特别需要注意的是,由于主控制器仅能存在一个,在抢主成功之后,主控制器会持续检测总线上是否还有其他主控制器存在,一旦发现则立即设置自己为从,即以在前主控制器为真的主控制器,并记录错误状态。

    当采用上文所述的抢主模式时,很显然预设顺序中最前的控制器通常将一直会当选为主控制器。但实际应用中,若按照上文公开的抢主模式进行主控制器选择,预设顺序中靠前的控制器可能在上电后并不立即在位,则此时实际在位的控制器中预设顺序最靠前的控制器当选为主控制器。上文所公开的抢主模式,可以保证在控制器在位、不出现异常的情况下,主控制器不发生变更,能够有效保证业务的正常运行,降低重新选择主设备或反复选择主设备对业务的影响。

    上述过程仅为本实施例所提供的一种优选的抢主模式的实施方式,抢主时间的计算方式、抢主命令的发送顺序均可以采用其他方式相计算,在不脱离本申请思路的前提下,也应在本申请的保护范围内。

    本申请实施例通过总线建立多控制器之间的连接,各控制器根据总线的电平变化确定自身为主控制器或从控制器,在抢主模式中可以直接确定主控制器,不必进行主从协商,从而高效完成多控选主及各控制器之间的数据同步。

    基于上述实施例,作为优选的实施例,在目标控制器置自身为主控制器之后,主控制器还可以向剩余控制器发送抢主成功指令,剩余控制器若接收到抢主成功指令,或在与自身设备号对应的抢主时间内总线存在电平变化,控制器置自身为从控制器。

    此外,确定主控制器后,主控制器可以每隔预设时间向与总线相连的从控制器发送数据同步申请,并将数据同步申请对应的同步数据写入寄存器。当从控制器收到主控制器主动发出的带有指向自身设备号(从控制器的设备号)的消息时,响应并返回需同步的信息(附带主控制器设备号),其他从控制器只接收主控制器发送的信息,不接受任何其他从控制器发送的信息。当然,从控制器接收到主控制器发送的数据同步申请后,还可以在延时后响应。具体的延时时间在此不做具体限定,例如可以为1ms等。

    但若主控制器向目标从控制器发送数据同步申请后的第二预设时间内未收到响应,设置该从控制器为离线状态。一旦目标从控制器为离线状态,在主控制器故障后,目标从控制器禁止发出抢主命令,即该目标从控制器不允许成为主控制器,此时通常该控制器可能已经处于离线或者不在位状态。

    特别的,主控制器可以每隔预设时间按照上文所述的预设顺序向与总线相连的从控制器发送数据同步申请,并将数据同步申请对应的同步数据写入寄存器,且上一从控制器的数据同步过程与下一个从控制器的数据同步申请过程同时执行。举例而言,主控制器为控制器1,那么其首先同步自身的数据,并同时向控制器2发出数据同步申请,而执行控制器2的数据同步过程中继续向控制器3发出数据同步申请,以此类推,直至完成所有从控制器的数据同步。除此之外,该总线还支持手动设置主从控制器。如果主控制器发起主从切换命令,或者主控制器发现自身所属的bmc出现故障,例如bmc挂死等现象,则启动手动切换,切换指令指向当前主控制器的后一个控制器,当然也可以选择固定的设备号作为主控制器异常时的备用主控制器。此时,该从控制器实时接收指令,如果发现总线上存在主从切换指令,且设备号指向自身,可以延时1ms后响应该指令,同时设置自己为主控制器,并发出抢主成功命令。若是按照上文的预设顺序执行主从切换,当主控制器发出主从切换指令,如果发现超过一定时长例如5ms无响应,则继续切换至下一个从控制器,直至剩余所有从控制器全部切换,如果均无响应,则切换结束,同时上报主从切换失败。

    下面对本申请实施例提供的一种多控制器之间的主从关系确认系统进行介绍,下文描述的主从关系确认系统与上文描述的主从关系确认方法可相互对应参照。

    参见图2,图2为本申请实施例所提供的一种多控制器之间的主从关系确认系统结构示意图,本申请还提供一种多控制器之间的主从关系确认系统,应用于各控制器,各所述控制器通过一条总线相连所述主从关系确认系统可以包括:

    判断模块100,用于判断固定时间内所述总线是否存在电平变化;

    从控制器设定模块200,用于所述判断模块判断结果为是时,设置自身为从控制器;

    抢主模块300,用于所述判断模块判断结果为否时,进入抢主模式,并在所述抢主模式中确定所述控制器的主从关系。

    基于上述实施例,作为优选的实施例,抢主模块300可以包括:

    时间确定单元,用于根据自身设备号得到抢主时间;其中,所述控制器包含设备号,所述设备号以预设顺序排序;

    命令发送单元,用于按照所述预设顺序轮流发出抢主命令;

    电平检测单元,用于在发送所述抢主命令后,若经过与自身设备号对应的抢主时间内所述总线不存在电平变化,则目标控制器置自身为主控制器。

    基于上述实施例,作为优选的实施例,还可以包括:

    抢主成功确认模块,用于向剩余控制器发送抢主成功指令。

    基于上述实施例,作为优选的实施例,还包括:

    数据同步模块,用于所每隔预设时间向与所述总线相连的从控制器发送数据同步申请,并将所述数据同步申请对应的同步数据写入寄存器。

    基于上述实施例,作为优选的实施例,还可以包括:

    离线检测模块,用于若所述主控制器向所述目标从控制器发送数据同步申请后的第二预设时间内未收到响应,设所述从控制器为离线状态;若目标从控制器为所述离线状态,在所述主控制器故障后,所述目标从控制器禁止发出所述抢主命令。

    基于上述实施例,作为优选的实施例,还可以包括:

    主从切换模块,用于若所述主控制器发起主从切换命令,或所述主控制器接收到所属bmc的故障消息,将所述预设顺序中当前主控制器的后一个控制器作为主控制器。

    本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

    本申请还提供了一种存储设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述存储设备还可以包括各种网络接口,电源等组件。

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

    本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

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


    技术特征:

    1.一种多控制器之间的主从关系确认方法,其特征在于,各所述控制器通过总线相连,所述方法包括:

    所述控制器判断固定时间内所述总线是否存在电平变化;

    若是,目标控制器设置自身为从控制器;

    若否,进入抢主模式,并在所述抢主模式中确定所述控制器的主从关系。

    2.根据权利要求1所述的主从关系确认方法,其特征在于,在所述抢主模式中确定所述控制器的主从关系包括:

    各所述控制器的cpld根据自身设备号得到抢主时间;其中,所述控制器包含设备号,所述设备号以预设顺序排序;

    按照所述预设顺序轮流发出抢主命令;

    在发送所述抢主命令后,若经过与自身设备号对应的抢主时间内所述总线不存在电平变化,则目标控制器置自身为主控制器。

    3.根据权利要求2所述的主从关系确认方法,其特征在于,目标控制器置自身为主控制器之后,还包括:

    所述主控制器向剩余控制器发送抢主成功指令;

    剩余控制器若接收到所述抢主成功指令,或在与自身设备号对应的抢主时间内所述总线存在电平变化,所述控制器置自身为从控制器。

    4.根据权利要求2所述的主从关系确认方法,其特征在于,目标控制器置自身为主控制器之后,还包括:

    所述主控制器每隔预设时间向与所述总线相连的从控制器发送数据同步申请,并将所述数据同步申请对应的同步数据写入寄存器。

    5.根据权利要求4所述的主从关系确认方法,其特征在于,所述主控制器每隔预设时间向与所述总线相连的从控制器发送数据同步申请后,还包括:

    若所述主控制器向所述目标从控制器发送数据同步申请后的第二预设时间内未收到响应,设所述从控制器为离线状态;

    若目标从控制器为所述离线状态,在所述主控制器故障后,所述目标从控制器禁止发出所述抢主命令。

    6.根据权利要求4所述的主从关系确认方法,其特征在于,所述主控制器每隔预设时间向与所述总线相连的从控制器发送数据同步申请,并将所述数据同步申请对应的同步数据写入寄存器包括:

    所述主控制器每隔预设时间以所述预设顺序向与所述总线相连的从控制器发送数据同步申请,并将所述数据同步申请对应的同步数据写入寄存器;

    其中,上一从控制器的数据同步过程与下一个从控制器的数据同步申请过程同时执行。

    7.根据权利要求2所述的主从关系确认方法,其特征在于,还包括:

    若所述主控制器发起主从切换命令,或所述主控制器接收到所属bmc的故障消息,将所述预设顺序中当前主控制器的后一个控制器作为主控制器。

    8.一种多控制器之间的主从关系确认系统,其特征在于,应用于各所述控制器,各所述控制器通过一条总线相连,所述主从关系确认系统包括:

    判断模块,用于判断固定时间内所述总线是否存在电平变化;

    从控制器设定模块,用于所述判断模块判断结果为是时,设置自身为从控制器;

    抢主模块,用于所述判断模块判断结果为否时,进入抢主模式,并在所述抢主模式中确定所述控制器的主从关系。

    9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述的多控制器之间的主从关系确认方法的步骤。

    10.一种存储设备,其特征在于,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如权利要求1-7任一项所述的多控制器之间的主从关系确认方法的步骤。

    技术总结
    本申请提供一种多控制器之间的主从关系确认方法,各所述控制器通过总线相连,所述方法包括:所述控制器判断固定时间内所述总线是否存在电平变化;若是,目标控制器设置自身为从控制器;若否,进入抢主模式,并在所述抢主模式中确定所述控制器的主从关系。本申请通过总线建立多控制器之间的连接,各控制器根据总线的电平变化确定自身为主控制器或从控制器,在抢主模式中可以直接确定主控制器,不必进行主从协商,从而高效完成多控选主及各控制器之间的数据同步。本申请还提供一种多控制器之间的主从关系确认系统、计算机可读存储介质和存储设备,具有上述有益效果。

    技术研发人员:宋开鑫;江博
    受保护的技术使用者:苏州浪潮智能科技有限公司
    技术研发日:2020.11.27
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-22784.html

    最新回复(0)