一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

主从关系的确定方法和装置、存储介质和电子设备与流程

2023-02-01 21:09:38 来源:中国专利 TAG:


1.本技术实施例涉及计算机领域,具体而言,涉及一种主从关系的确定方法及装置、存储介质和电子设备。


背景技术:

2.在云计算、大数据时代,海量数据存储需要性能更优、存储量更大、传输速率更快、备份机制更完善的存储产品,特别是在银行、政务等领域存储产品的灾备功能更是重中之重,灾备性是对一款存储产品性能优劣的重要考核指标,因而满足传输速率更高、更快的同时还要保证数据的完整性、可靠性、容灾性,这就意味着存储服务器一般至少会有上下两个控制器,而在存储服务器正常运行中要区分双控制器的主从,进而使主控制器完成与大系统的各种信息交互,从设备处于预备态,并当主控制器有异常时从设备切换为主,继续完成存储服务器的正常运转,保证存储服务器的容灾性,因此存储服务器的主从识别策略对于存储服务器的正常运行至关重要。而目标存储服务器无法准确的在存储系统运行的过程中根据实时状态准确的作出响应主从状态的判定,无法及时准确的确定双控制器的主从关系,进而无法较好的保障存储数据的安全、可靠以及存储系统的容灾性。
3.针对相关技术中,现有主从识别策略无法及时准确的确定双控制器的主从关系的问题,尚未提出有效的解决方案。


技术实现要素:

4.本技术实施例提供了一种主从关系的确定方法和装置、存储介质和电子设备,以至少解决现有主从识别策略无法及时准确的确定双控制器的主从关系的问题。
5.根据本技术的一个实施例,提供了一种主从关系的确定方法,包括:指示第一控制器对应的第一服务根据同步链路的状态和第二控制器的状态确定所述第一控制器与所述第二控制器的第一主从信息,其中,所述同步链路为所述第一控制器与所述第二控制器之间的链路;指示所述第二控制器对应的第二服务根据所述同步链路的状态和所述第一控制器的状态确定所述第一控制器与所述第二控制器的第二主从信息;根据所述第一主从信息和所述第二主从信息确定所述第一控制器和所述第二控制器的主从关系。
6.在一个示例性实施例中,指示所述第一控制器对应的第一服务根据同步链路的状态和第二控制器的状态确定所述第一控制器与所述第二控制器的第一主从信息之前,所述方法包括:通过所述第一服务确定所述第一控制器的属性值;指示所述第一服务在根据所述第一控制器的属性值确定所述第一控制器位于底板的下方的情况下,设置所述第一控制器为主控制器、所述第二控制器为主从未知的控制器。
7.在一个示例性实施例中,通过所述第一服务确定所述第一控制器的属性值,包括:通过所述第一服务获取所述第一控制器对应的复杂可编程逻辑器件cpld的第一寄存器中存储的第一值,并将所述第一值确定为所述第一控制器的属性值,其中,所述第一值为所述第一控制器对应的cpld读取的所述第一控制器对应的通用输入/输出口gpio管脚的值;其
中,在所述第一控制器的属性值等于目标值的情况下,确定所述第一控制器位于所述底板的下方,在所述第一控制器的属性值不等于目标值的情况下,确定所述第一控制器位于所述底板的上方。
8.在一个示例性实施例中,在所述第一控制器位于底板的下方的情况下,指示所述第一控制器对应的第一服务根据同步链路的状态和第二控制器的状态确定所述第一控制器与所述第二控制器的第一主从信息,包括:指示第一服务在确定所述同步链路的状态为正常状态的情况下,确定所述第一控制器为主控制器以及所述第二控制器为从控制器;指示第一服务在确定所述同步链路的状态为异常状态且所述第二控制器的状态为未知状态、或者所述同步链路的状态为异常状态且所述第二控制器的状态为非活跃状态、或者所述同步链路的状态为未知状态且所述第二控制器的状态为非活跃状态的情况下,确定所述第一控制器为主控制器以及识别所述第二控制器的主从状态失败;指示第一服务在确定所述同步链路的状态为未知状态且所述第二控制器的状态为活跃状态、或者所述同步链路的状态为异常状态且所述第二控制器的状态为活跃状态的情况下,确定所述第一控制器为主控制器以及所述第二控制器为从控制器的概率大于预设阈值的控制器。
9.在一个示例性实施例中,指示所述第二控制器对应的第二服务根据所述同步链路的状态和所述第一控制器的状态确定所述第一控制器与所述第二控制器的第二主从信息之前,所述方法包括:通过所述第二服务确定所述第二控制器的属性值;指示所述第二服务在根据所述第二控制器的属性值确定所述第一控制器位于底板的上方的情况下,设置所述第一控制器为主从未知的控制器、所述第二控制器为从控制器的概率大于预设阈值的控制器。
10.在一个示例性实施例中,通过所述第二服务确定所述第二控制器的属性值,包括:通过所述第二服务获取所述第二控制器对应的复杂可编程逻辑器件cpld的第一寄存器中存储的第二值,并将所述第二值确定为所述第二控制器的属性值,其中,所述第二值为所述第二控制器对应的cpld读取的所述第二控制器对应的通用输入/输出口gpio管脚的值;其中,在所述第二控制器的属性值等于目标值的情况下,确定所述第一控制器位于所述底板的下方,在所述第二控制器的属性值不等于目标值的情况下,确定所述第一控制器位于所述底板的上方。
11.在一个示例性实施例中,在所述第二控制器位于底板的上方的情况下,指示所述第二控制器对应的第二服务根据所述同步链路的状态和所述第一控制器的状态确定所述第一控制器与所述第二控制器的第二主从信息,包括:指示第二服务在确定所述同步链路的状态为正常状态的情况下,确定所述第一控制器为主控制器以及所述第二控制器为从控制器;指示第二服务在确定所述同步链路的状态为异常状态且所述第一控制器的状态为未知状态、或者所述同步链路的状态为异常状态且所述第一控制器的状态为非活跃状态、或者所述同步链路的状态为未知状态且所述第一控制器的状态为非活跃状态的情况下,确定识别所述第一控制器主从状态失败以及所述第二控制器为主控制器;指示第二服务在确定所述同步链路的状态为未知状态且所述第一控制器的状态为活跃状态、或者所述同步链路的状态为异常状态且所述第一控制器的状态为活跃状态的情况下,确定所述第一控制器为主控制器的概率大于预设阈值的控制器以及所述第二控制器为从控制器;指示第二服务在确定所述同步链路的状态为未知状态且所述第一控制器的状态为非活跃状态的情况下,确
定识别所述第一控制器主从状态失败的概率大于预设阈值以及所述第二控制器为主控制器。
12.在一个示例性实施例中,在所述第一控制器位于底板的下方、所述第二控制器位于所述底板的上方的情况下,根据所述第一主从信息和所述第二主从信息确定所述第一控制器和所述第二控制器的主从关系,包括:在所述第一主从信息与所述第二主从信息不存在矛盾的情况下,根据所述第一主从信息确定所述第一控制器和所述第二控制器的主从关系;在所述第一主从信息与所述第二主从信息存在矛盾的情况下,根据所述第二主从信息确定所述第一控制器和所述第二控制器的主从关系。
13.在一个示例性实施例中,根据所述第一主从信息确定所述第一控制器和所述第二控制器的主从关系,包括:根据所述第一主从信息中所述第一控制器的信息确定所述第一控制器的主从属性;根据所述第一控制器的主从属性确定所述第二控制器的主从属性;根据所述第二主从信息确定所述第一控制器和所述第二控制器的主从关系,包括:根据所述第二主从信息中所述第二控制器的信息确定所述第二控制器的主从属性;根据所述第二控制器的主从属性确定所述第一控制器的主从属性。
14.根据本技术的另一个实施例,提供了一种主从关系的确定装置,包括:第一确定模块,用于指示第一控制器对应的第一服务根据同步链路的状态和第二控制器的状态确定所述第一控制器与所述第二控制器的第一主从信息,其中,所述同步链路为所述第一控制器与所述第二控制器之间的链路;第二确定模块,用于指示所述第二控制器对应的第二服务根据所述同步链路的状态和所述第一控制器的状态确定所述第一控制器与所述第二控制器的第二主从信息;第三确定模块,用于根据所述第一主从信息和所述第二主从信息确定所述第一控制器和所述第二控制器的主从关系。
15.根据本技术的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
16.根据本技术的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
17.通过本技术,通过获取双控制器中每个控制器确定的主从信息来确定双控制器的主从关系,提高了识别的准确性,并且通过指示双控制器中每个控制器对应的服务根据双控制器同步链路的状态和对方控制器的状态来确定主从关系,使得每个控制器可以及时准确的确定主从信息,进一步的提高了识别控制器主从关系的及时准确性,解决了现有主从识别策略无法及时准确的确定双控制器的主从关系的问题,达到可以及时准确的确定双控制器的主从关系的效果。
附图说明
18.图1是根据本技术实施例的一种网络架构图;
19.图2是根据本技术实施例的一种主从关系的确定的应用场景图;
20.图3是根据本技术实施例的一种主从关系的确定的流程图;
21.图4是根据本技术实施例的第一服务确定第一主从信息的逻辑示意图;
22.图5是根据本技术实施例的第二服务确定第二主从信息的逻辑示意图;
23.图6是根据本技术实施例的主从关系的确定装置的结构框图。
具体实施方式
24.下文中将参考附图并结合实施例来详细说明本技术的实施例。
25.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
26.图1是根据本技术实施例的一种网络架构图,本技术实施例可以运行于图1所示的网络架构上,如图1所示,该网络架构可以但不限于包括:服务器102、服务器104和服务器106。
27.可以但不限于以服务器102为例,对本技术实施例的主从关系的确定方法的应用场景进行解释说明。图2是根据本技术实施例的一种主从关系的确定的应用场景图,如图2所示,服务器102上可以但不限于部署了大系统、第一服务、第二服务、第一控制器以及第二控制器;其中,大系统指服务器上cpu运行的系统,例如linux/ubantu/centos;第一服务为第一控制器对应的支持scsi协议的机箱管理服务(organic scsi enclosure service,简称为oses),第二服务为第二控制器对应的支持scsi协议的机箱管理服务,上述服务器102包括但不限于:存储服务器;第一控制器和第二控制器为服务器上的两个控制器。其中,第一服务确定第一控制器对应的主从信息,并上报至大系统,第二服务确定第二控制器对应的主从信息,并上报至大系统,进而大系统根据第一主从信息和第二主从信息来确定第一控制器和第二控制器的主从关系,其中,第一主从信息包括:第一控制器的主从属性、第二控制器的主从属性(例如,第一控制器为主控制器,第二控制器为从控制器);第二主从信息包括:第一控制器的主从属性、第二控制器的主从属性。在本实施例中提供了一种运行于上述网络架构中每个服务器的方法,图3是根据本技术实施例的一种主从关系的确定的流程图,如图3所示,该流程包括如下步骤s302-s306:
28.步骤s302,指示第一控制器对应的第一服务根据同步链路的状态和第二控制器的状态确定所述第一控制器与所述第二控制器的第一主从信息,其中,所述同步链路为所述第一控制器与所述第二控制器之间的链路;
29.可选的,第一服务为第一控制器对应的支持scsi协议的机箱管理服务。
30.需要说明的是,第一控制器和第二控制器为存储服务器的两个控制器,第一控制器和第二控制器位于同一底板上。同步链路的状态包括:正常状态,异常状态,未知状态;第二控制器的状态包括:活跃状态、非活跃状态、未知状态。第一主从信息用于描述第一服务确定的第一控制器和第二控制器的从主属性。在一个示例性的实施例中,第一主从信息可以为:第一控制器确定为主控制器,第二控制器确定为从控制器。
31.可选的,在执行步骤s302之前,还可以执行以下步骤s11-s12:
32.步骤s11:通过所述第一服务确定所述第一控制器的属性值;
33.可选的,上述步骤s11可以通过以下方式实现:
34.通过所述第一服务获取所述第一控制器对应的复杂可编程逻辑器件cpld的第一寄存器中存储的第一值,并将所述第一值确定为所述第一控制器的属性值,其中,所述第一值为所述第一控制器对应的cpld读取的所述第一控制器对应的通用输入/输出口gpio管脚
的值;其中,在所述第一控制器的属性值等于目标值的情况下,确定所述第一控制器位于所述底板的下方,在所述第一控制器的属性值不等于目标值的情况下,确定所述第一控制器位于所述底板的上方。
35.需要说明的是,根据控制器在底板中的位置不同,可以将控制器分为上控制器(即控制器位于底板的上方)和下控制器(即控制器位于底板的上方),而在本实施例中,第一控制器对应的第一服务可以通过读取对应的cpld的第一寄存器中的值来识别第一控制器的上下控属性,而由于第一控制器对应的cpld可以读取第一控制器对应的通用输入/输出口gpio管脚的值,进而将读取到的脚管的值存放进行cpld的第一寄存器中,进而第一服务可以从第一控制器对应的cpld的第一寄存器获取第一控制器的属性值,从而判断第一控制器是上控制器还是下控制器。
36.需要说明的是,第一控制器对应的cpld还具有第二寄存器,其中,第二寄存器用于存放第二控制器的状态。
37.步骤s12:指示所述第一服务在根据所述第一控制器的属性值确定所述第一控制器位于底板的下方的情况下,设置所述第一控制器为主控制器、所述第二控制器为主从未知的控制器。
38.需要说明的是,在本实施例中,默认上控制器为主控制器,下控制器为从控制器,第一服务如果确定第一控制器为下控制器,则在没有检测第二控制器的状态和同步链路的情况下,可以预先设置第一控制器为主控制器、所述第二控制器为主从未知的控制器,即在此时,第一主从信息可以为:第一控制器为主控制器、所述第二控制器为主从未知的控制器。
39.需要说明的是,在执行步骤s302之前,第一服务需要去检测同步链路的状态并获取到第二控制器的状态,其中,第二服务可以通过读取第一控制器对应的cpld的第二寄存器中存储的值来确定第二控制器的状态。
40.在一个可选的实施例中,在所述第一控制器位于底板的下方的情况下,上述步骤s302可以通过以下方式实现:
41.指示第一服务在确定所述同步链路的状态为正常状态的情况下,确定所述第一控制器为主控制器以及所述第二控制器为从控制器;指示第一服务在确定所述同步链路的状态为异常状态且所述第二控制器的状态为未知状态、或者所述同步链路的状态为异常状态且所述第二控制器的状态为非活跃状态、或者所述同步链路的状态为未知状态且所述第二控制器的状态为非活跃状态的情况下,确定所述第一控制器为主控制器以及识别所述第二控制器的主从状态失败;指示第一服务在确定所述同步链路的状态为未知状态且所述第二控制器的状态为活跃状态、或者所述同步链路的状态为异常状态且所述第二控制器的状态为活跃状态的情况下,确定所述第一控制器为主控制器以及所述第二控制器为从控制器的概率大于预设阈值的控制器。
42.需要说明的是,第一服务确定同步链路的具体状态(正常状态和异常状态)和第二控制器的具体状态(活跃状态和非活跃状态)具有时间差,进而第一服务在没有检测出同步链路的具体状态的情况下,则先确定同步链路的状态为未知状态,在没有获取到第二控制器的具体状态的情况下,则先确定第二控制器的状态为未知状态。需要说明的是,如果第一服务检测出同步链路的状态为正常状态,则可以直接确定第二控制器的状态为活跃状态。
43.具体的,在第一服务确定检测到同步链路的具体状态但未获取到第二控制器的具体状态(即确定同步链路的状态为正常状态或异常状态,第二控制器的状态为未知状态)的情况下,则直接根据同步链路的状态先确定第一主从信息,如果后续再获取到第二控制器的具体状态,则再结合第二控制器的具体状态,再次确定第一主从信息。
44.如果在第一服务确定获取到第二控制器的具体状态但未检测到同步链路的具体状态(即确定同步链路的状态为未知状态,第二控制器的状态为活跃状态或非活跃状态)的情况下,则直接根据第二控制器的状态先确定第一主从信息,如果后续再获取到同步链路的具体状态,则再结合同步链路的具体状态,再次确定第一主从信息。
45.为了更好的理解,图4是根据本技术实施例的第一服务确定第一主从信息的逻辑示意图,上述逻辑可参见图4,其中,图4中的local表示第一控制器,remote表示第二控制器,link_up表示同步链路正常,link_down表示同步链路异常,remote_active表示第二控制器的状态为活跃状态,remote_inactive表示第二控制器的状态为非活跃状态。dm表示确定为主控制器,ps表示确定为从控制器的概率大于预设阈值的控制器,ds表示确定为从控制器,do表示识别控制器的主从状态失败。
46.在本实施例中,第一服务器在获取到同步链路的具体状态和第二控制器的具体状态中的其中一个的时候,就先确定第一主从信息,使得判断及时性得到了保障,在后续同步链路的具体状态和第二控制器的具体状态均获取到的情况下,再做具体的判断,使得判断的准确性得到了保障。即采用上述技术方案,可以使得第一服务准确、无误、快速、实时的对两个控制器作出主从的状态判定。
47.步骤s304,指示所述第二控制器对应的第二服务根据所述同步链路的状态和所述第一控制器的状态确定所述第一控制器与所述第二控制器的第二主从信息;
48.可选的,第二服务为第二控制器对应的支持scsi协议的机箱管理服务。
49.需要说明的是,第一主从信息是用于描述第二服务确定的第一控制器和第二控制器的从主属性。在一个示例性的实施例中,第二主从信息可以为:第一控制器确定为主控制器,第二控制器确定为从控制器。
50.可选的,在执行上述步骤s304之前,还可以具有以下步骤s21-s22:
51.步骤s21:通过所述第二服务确定所述第二控制器的属性值;
52.在一个示例性的实施例中,上述步骤s21可以通过以下方式实现:通过所述第二服务获取所述第二控制器对应的复杂可编程逻辑器件cpld的第一寄存器中存储的第二值,并将所述第二值确定为所述第二控制器的属性值,其中,所述第二值为所述第二控制器对应的cpld读取的所述第二控制器对应的通用输入/输出口gpio管脚的值;其中,在所述第二控制器的属性值等于目标值的情况下,确定所述第一控制器位于所述底板的下方,在所述第二控制器的属性值不等于目标值的情况下,确定所述第一控制器位于所述底板的上方。
53.需要说明的是,在本实施例中,第二控制器对应的第二服务可以通过读取cpld的第一寄存器中的值来识别第二控制器的上下控属性,而由于第二控制器对应的cpld可以读取第二控制器对应的通用输入/输出口gpio管脚的值,进而将读取到的脚管的值存放进行cpld的第一寄存器中,进而第二服务可以从第二控制器对应的cpld的第一寄存器获取第二控制器的属性值,从而判断第二控制器是上控制器还是下控制器。
54.步骤s22:指示所述第二服务在根据所述第二控制器的属性值确定所述第一控制
器位于底板的上方的情况下,设置所述第一控制器为主从未知的控制器、所述第二控制器为从控制器的概率大于预设阈值的控制器。
55.需要说明的是,在本实施例中,默认上控制器为主控制器,下控制器为从控制器,如果第二服务确定第二控制器为上控制器,则第一服务可以在没有检测第二控制器的状态和同步链路的情况下,可以预先设置第一控制器为主从未知的控制器、第二控制器为从控制器的概率大于预设阈值的控制器,即在此时,第二主从信息可以为:第一控制器为主从未知的控制器、第二控制器为从控制器的概率大于预设阈值的控制器。
56.在一个示例性的实施例中,在第二控制器位于底板的上方的情况下,上述步骤s304可以通过以下方式实现:指示第二服务在确定所述同步链路的状态为正常状态的情况下,确定所述第一控制器为主控制器以及所述第二控制器为从控制器;指示第二服务在确定所述同步链路的状态为异常状态且所述第一控制器的状态为未知状态、或者所述同步链路的状态为异常状态且所述第一控制器的状态为非活跃状态、或者所述同步链路的状态为未知状态且所述第一控制器的状态为非活跃状态的情况下,确定识别所述第一控制器主从状态失败以及所述第二控制器为主控制器;指示第二服务在确定所述同步链路的状态为未知状态且所述第一控制器的状态为活跃状态、或者所述同步链路的状态为异常状态且所述第一控制器的状态为活跃状态的情况下,确定所述第一控制器为主控制器的概率大于预设阈值的控制器以及所述第二控制器为从控制器;指示第二服务在确定所述同步链路的状态为未知状态且所述第一控制器的状态为非活跃状态的情况下,确定识别所述第一控制器主从状态失败的概率大于预设阈值以及所述第二控制器为主控制器。
57.需要说明的是,第二服务确定同步链路的具体状态(正常状态和异常状态)和第一控制器的具体状态(活跃状态和非活跃状态)具有时间差,进而第二服务在没有检测出同步链路的具体状态的情况下,则先确定同步链路的状态为未知状态,在没有获取到第一控制器的具体状态的情况下,则先确定第一控制器的状态为未知状态。需要说明的是,如果第二服务检测出同步链路的状态为正常状态,则可以直接确定第一控制器的状态为活跃状态。
58.具体的,在第二服务确定检测出同步链路的具体状态但未获取到第一控制器的具体状态(即确定同步链路的状态为正常状态或异常状态,第一控制器的状态为未知状态)的情况下,则直接根据同步链路的状态先确定第二主从信息,如果后续再获取到第一控制器的具体状态,则再结合第一控制器的具体状态,再次确定第二主从信息。
59.如果在第二服务确定获取到第一控制器的具体状态但未检测到同步链路的具体状态(即确定同步链路的状态为未知状态,第一控制器的状态为活跃状态或非活跃状态)的情况下,则直接根据第一控制器的状态先确定第二主从信息,如果后续再获取到同步链路的具体状态,则再结合同步链路的具体状态,再次确定第二主从信息。
60.为了更好的理解,图5是根据本技术实施例的第二服务确定第二主从信息的逻辑示意图,上述逻辑可参见图5,其中,图5中的local表示第二控制器,remote表示第一控制器,link_up表示同步链路正常,link_down表示同步链路异常,remote_active表示第一控制器的状态为活跃状态,remote_inactive表示第一控制器的状态为非活跃状态。dm表示确定为主控制器,ps表示确定为从控制器的概率大于预设阈值的控制器,ds表示确定为从控制器,pm表示确定为主控制器的概率大于预设阈值的控制器,xx表示确定为主从未知的控制器,do表示识别控制器的主从状态失败,am表示确定为主控制器,po表示可能识别控制器
的主从状态失败。
61.在本实施例中,第二服务器在获取到同步链路的具体状态和第一控制器的具体状态中的其中一个的时候,就先确定第二主从信息,使得判断的及时性得到了保障,在后续同步链路的具体状态和第一控制器的具体状态均获取到的情况下,再做具体的判断,使得判断的准确性得到了保障。即采用上述技术方案,可以使得第二服务准确、无误、快速、实时的对两个控制器作出主从的状态判定。
62.步骤s206,根据所述第一主从信息和所述第二主从信息确定所述第一控制器和所述第二控制器的主从关系。
63.在一个示例性的实施例中,在所述第一控制器位于底板的下方、所述第二控制器位于所述底板的上方的情况下,上述步骤s206可以通过以下方式实现:在所述第一主从信息与所述第二主从信息不存在矛盾的情况下,根据所述第一主从信息确定所述第一控制器和所述第二控制器的主从关系;在所述第一主从信息与所述第二主从信息存在矛盾的情况下,根据所述第二主从信息确定所述第一控制器和所述第二控制器的主从关系。
64.需要说明的是,由于第一控制器位于底板的下方,即第一控制器为下控制器,而在本实施例中,大系统默认上控制器为主控制器,下控制器为从控制器,进而在第一主从信息与第二主从信息不存在矛盾,大系统会信任第一服务确定的第一主从信息,进而根据第一主从信息来确定第一控制器和所述第二控制器的主从关系,而由于不管系统出现何种状态,第一服务均会确定第一控制器为主控制器,进而如果第一主从信息与第二主从信息存在矛盾,则大系统此时不再信任第一服务确定的主从信息,进而会根据第二主从信息确定第一控制器和所述第二控制器的主从关系。
65.在本实施例中,采用上述技术方案,可以使得双控制器运行正常时,杜绝出现双主的情况;当当前的从控制器出现异常时,使得当前的主控制器能迅速识别更新从控制器的状态;当前的主控制器出现异常时,使得当前的从控制器能迅速准确的切换为主控制器。
66.在一个示例性的实施例中,根据所述第一主从信息确定所述第一控制器和所述第二控制器的主从关系,可以通过以下方式实现:根据所述第一主从信息中所述第一控制器的信息确定所述第一控制器的主从属性;根据所述第一控制器的主从属性确定所述第二控制器的主从属性。
67.例如,在第一主从信息指示第一控制器为主控制器以及第二控制器为从控制器的概率大于预设阈值的控制器,则直接确定第一控制器为主控制器,第二控制器为从控制器。
68.在一个示例性的实施例中,根据所述第二主从信息确定所述第一控制器和所述第二控制器的主从关系,可以通过以下方式实现:根据所述第二主从信息中所述第二控制器的信息确定所述第二控制器的主从属性;根据所述第二控制器的主从属性确定所述第一控制器的主从属性。
69.例如,在第二主从信息指示第一控制器主从状态失败以及第二控制器为主控制器的情况下,则直接确定第一控制器为从控制器,第二控制器为主控制器。
70.通过上述方式,可以使得大系统准确的确定第一控制器和第二控制器的主从关系。
71.上述步骤s202-s206,由于通过获取双控制器中每个控制器确定的主从信息来确定双控制器的主从关系,提高了识别的准确性,并且通过指示双控制器中每个控制器对应
的服务根据双控制器同步链路的状态和对方控制器的状态来确定主从关系,使得每个控制器可以及时准确的确定主从信息,进一步的提高了识别控制器主从关系的及时准确性,解决了现有主从识别策略无法及时准确的确定双控制器的主从关系的问题,达到可以及时准确的确定双控制器的主从关系效果。
72.需要说明的是,上述步骤的执行主体可以为服务器上cpu运行的系统,但不限于此。
73.需要说明的是,步骤s302和步骤s304的执行顺序是可以互换的,即可以先执行步骤s304,然后再执行s302。
74.为了更好的理解上述主从关系的确定方法的过程,以下再结合可选实施例对上述主从关系的确定方法流程进行说明,但不用于限定本技术实施例的技术方案。
75.需要说明的是,大系统的主从识别的策略结果必须是一主一从,而不能出现双主、双从的情况,本实施例通过读取每个控制器的cpld寄存器识别控制器的上下控,并默认下控为主,上控为从,在设备运行中每个控制器对应的oses根据实际情况以及设定的参考条件实现主从识别,可以实时、迅速的判定双控制器的主从状态,并将最终的主从识别的结果,同步给大系统和其他模块,做其他的相应逻辑处理,保障存储服务器不会因双控制器中某一控制器出现异常而无法正常运行的情况发生,保障存储数据的安全、可靠,提高存储系统的容灾性。
76.具体的,每个控制器对应的cpld通过读取地板固定gpio管脚而区分控制器的上下控,并将识别结果写入cpld的固定寄存器(相当于上述第一寄存器);每个控制器对应的oses通过读取cpld的寄存器识别到控制器的上下属性(可选的,当寄存器值为1,则确定为下控制器,当寄存器值不为1,则确定为上控制器)。每个控制器对应的oses通过读取cpld存放对方控制器的健康状态的寄存器(相当于上述第二寄存器),判断对方控制器的状态:active(活跃)或者inactive(不活跃)。
77.需要说明的是,在本实施例中,定义如下术语:local:本控;remote:对控;dm(definitely master):确实为主;ds(definitely slave):确实为从;pm(probably master):可能为主;ps(probably master):可能为从;xx(unknown):情况不明;d0(definitely nothing):确实识别失败;p0(probably nothing):可能识别失败;am(acting as master):作为主;link_up:连接正常;link_domn:连接断开。
78.需要说明的是,若控制器对应的oses读取对应的cpld的固定寄存器中的寄存器值为1,表示该控制器为下控,则此控制器对应的oses具体处理逻辑图如图4所示。
79.具体的实现过程如下:
80.1)如果控制器对应的oses读取到寄存器值为1,确定当前控制器为下控,则设定本控确定为主,对控情况未知;
81.2)状态:本控确定为主,对控情况未知(即此同步链路状态未知,对控状态未知);
82.动作1:检测双控同步链路;
83.动作2:识别对控状态;
84.如果同步链路连接正常,则设定本控确定为主,对控确定为从;
85.如果同步链路连接异常,则设定本控确定为主,对控确定识别失败;
86.如果对控状态为活跃,则设定本控确定为主,对控可能为从;
87.如果对控状态为不活跃,则设定本控确定为主,对控确定识别失败;
88.3)状态:本控确定为主,对控可能为从(即此时同步链路异常、对控为活跃状态,或者对控为活跃状态);
89.如果同步链路连接正常,则设定本控确定为主,对控确定为从;
90.如果对控状态为不活跃,则设定本控确定为主,对控确定识别失败;
91.4)状态:本控确定为主,对控确定识别失败(即此时同步链路异常,和/或对控为非活跃状态);
92.如果同步链路连接正常,则设定本控确定为主,对控确定为从;
93.如果对控状态为活跃,则设定本控确定为主,对控可能为从;
94.5)状态:本控确定为主,对控确定为从(即此时同步链路正常);
95.如果同步链路连接异常,则设定本控确定为主,对控确定识别失败。
96.需要说明的是,若控制器对应的oses读取对应的cpld的固定寄存器中的寄存器值不为1,表示该控制器为上控,则此控制器对应的oses具体处理逻辑图如图5所示。
97.具体的实现过程如下:
98.1)步骤2中读取到寄存器值不为1,确定当前控制器为上控,则设定本控可能为从,对控情况未知;
99.2)状态:本控可能为从,对控情况未知(即此同步链路状态未知,对控状态未知);
100.动作1:检测双控同步链路;
101.动作2:步骤3中识别对控状态;
102.如果同步链路连接异常,则设定本控做为主运行,对控确定识别失败;
103.如果同步链路连接正常,则设定本控确定为从,对控确定为主;
104.如果对控状态为不活跃,则设定本控做为主运行,对控可能识别失败;
105.如果对控状态为活跃,则设定本控确定为从,对控可能为主;
106.3)状态:本控做为主运行,对控可能识别失败(即此对控状态非活跃);
107.如果同步链路连接异常,则设定本控做为主运行,对控确定识别失败;
108.如果同步链路连接正常,则设定本控确定为从,对控确定为主;
109.如果对控状态为活跃,则设定本控确定为从,对控可能为主;
110.4)状态:本控确定为从,对控可能为主(即此同步链路异常,对控状态活跃,或者对控状态活跃);
111.如果同步链路连接正常,则设定本控确定为从,对控确定为主;
112.如果对控状态为不活跃,则设定本控做为主运行,对控确定识别失败;
113.5)状态:本控做为主运行,对控确定识别失败(即此同步链路异常,对控状态活跃,和/或对控状态非活跃);
114.如果同步链路连接正常,则设定本控确定为从,对控确定为主;
115.如果对控状态为活跃,则设定本控确定为从,对控可能为主;
116.6)状态:本控确定为从,对控确定为主(即此同步链路正常);
117.如果同步链路连接异常,则设定本控做为主运行,对控确定识别失败。
118.通过上述方式,在存储系统运行中,根据实时情况,经过每个控制器对应的oses做出判定之后就能判定出两个控制器的实时主从状态,以供大系统或其他模块做进一步的处
理。
119.需要说明的是,本技术的关于存储服务器的双控制器的主从关系的确定方法、通过和cpld协商确认由cpld读取gpio状态存放至固定寄存器,再由oses读取该固定寄存器判断控制器的上下控属性,并执行默认下控为主,上控为从的初步策略,在设备运行中根据具体的双控同步链路连接状态和控制器的健康状态,通过一系列试探性的逻辑判断,实时识别更新双控的主从状态信息,从而为大系统和其他模块的健康运行和进一步处理做判断,保障存储系统的灾备性,使得可以准确、无误、快速、实时的对两个控制器作出主从的状态判定,使得当双控运行正常时,杜绝出现双主的情况;当当前的从出现异常时,当前的主能迅速识别更新从的状态;当当前的主出现异常时,当前的从能迅速准确的切换为主,并识别更新异常控制器的状态,起到灾备的作用。在控制器异常时,迅速、有效的主从切换对保护存储服务器的核心数据,保证服务器的继续正常运行起到至关重要的作用,当双控中某一控出现异常时,不会影响到存储系统的正常运行,保障存储数据的安全、可靠。
120.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。
121.在本实施例中还提供了一种主从关系的确定装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
122.图6是根据本技术实施例的主从关系的确定装置的结构框图,如图6所示,该装置包括
123.第一确定模块62,用于指示第一控制器对应的第一服务根据同步链路的状态和第二控制器的状态确定所述第一控制器与所述第二控制器的第一主从信息,其中,所述同步链路为所述第一控制器与所述第二控制器之间的链路;
124.第二确定模块64,用于指示所述第二控制器对应的第二服务根据所述同步链路的状态和所述第一控制器的状态确定所述第一控制器与所述第二控制器的第二主从信息;
125.第三确定模块66,用于根据所述第一主从信息和所述第二主从信息确定所述第一控制器和所述第二控制器的主从关系。
126.通过上述模块,由于通过获取双控制器中每个控制器确定的主从信息来确定双控制器的主从关系,提高了识别的准确性,并且通过指示双控制器中每个控制器对应的服务根据双控制器同步链路的状态和对方控制器的状态来确定主从关系,使得每个控制器可以及时准确的确定主从信息,进一步的提高了识别控制器主从关系的及时准确性,解决了现有主从识别策略无法及时准确的确定双控制器的主从关系的问题,达到可以及时准确的确定双控制器的主从关系效果。
127.可选的,上述第一确定模块62,还包括:
128.第一确定单元,用于指示所述第一控制器对应的第一服务根据同步链路的状态和
第二控制器的状态确定所述第一控制器与所述第二控制器的第一主从信息之前,通过所述第一服务确定所述第一控制器的属性值;
129.第一设置单元,用于指示所述第一服务在根据所述第一控制器的属性值确定所述第一控制器位于底板的下方的情况下,设置所述第一控制器为主控制器、所述第二控制器为主从未知的控制器。
130.可选的,所述第一确定单元还用于根据以下方式通过第一服务确定所述第一控制器的属性值:通过所述第一服务获取所述第一控制器对应的复杂可编程逻辑器件cpld的第一寄存器中存储的第一值,并将所述第一值确定为所述第一控制器的属性值,其中,所述第一值为所述第一控制器对应的cpld读取的所述第一控制器对应的通用输入/输出口gpio管脚的值;其中,在所述第一控制器的属性值等于目标值的情况下,确定所述第一控制器位于所述底板的下方,在所述第一控制器的属性值不等于目标值的情况下,确定所述第一控制器位于所述底板的上方。
131.可选的,第一确定模块62,还包括:
132.第二确定单元,用于在所述第一控制器位于底板的下方的情况下,指示第一服务在确定所述同步链路的状态为正常状态的情况下,确定所述第一控制器为主控制器以及所述第二控制器为从控制器;指示第一服务在确定所述同步链路的状态为异常状态且所述第二控制器的状态为未知状态、或者所述同步链路的状态为异常状态且所述第二控制器的状态为非活跃状态、或者所述同步链路的状态为未知状态且所述第二控制器的状态为非活跃状态的情况下,确定所述第一控制器为主控制器以及识别所述第二控制器的主从状态失败;指示第一服务在确定所述同步链路的状态为未知状态且所述第二控制器的状态为活跃状态、或者所述同步链路的状态为异常状态且所述第二控制器的状态为活跃状态的情况下,确定所述第一控制器为主控制器以及所述第二控制器为从控制器的概率大于预设阈值的控制器。
133.可选的,第二确定模块64,还包括:
134.第三确定单元,用于在指示所述第二控制器对应的第二服务根据所述同步链路的状态和所述第一控制器的状态确定所述第一控制器与所述第二控制器的第二主从信息之前,通过所述第二服务确定所述第二控制器的属性值;
135.第二设置单元,用于指示所述第二服务在根据所述第二控制器的属性值确定所述第一控制器位于底板的上方的情况下,设置所述第一控制器为主从未知的控制器、所述第二控制器为从控制器的概率大于预设阈值的控制器。
136.可选的,第三确定单元还用于根据以下方式通过所述第二服务确定所述第二控制器的属性值:通过所述第二服务获取所述第二控制器对应的复杂可编程逻辑器件cpld的第一寄存器中存储的第二值,并将所述第二值确定为所述第二控制器的属性值,其中,所述第二值为所述第二控制器对应的cpld读取的所述第二控制器对应的通用输入/输出口gpio管脚的值;其中,在所述第二控制器的属性值等于目标值的情况下,确定所述第一控制器位于所述底板的下方,在所述第二控制器的属性值不等于目标值的情况下,确定所述第一控制器位于所述底板的上方。
137.可选的,第二确定模块64,还包括:
138.第四确定单元,用于在所述第二控制器位于底板的上方的情况下,指示第二服务
在确定所述同步链路的状态为正常状态的情况下,确定所述第一控制器为主控制器以及所述第二控制器为从控制器;指示第二服务在确定所述同步链路的状态为异常状态且所述第一控制器的状态为未知状态、或者所述同步链路的状态为异常状态且所述第一控制器的状态为非活跃状态、或者所述同步链路的状态为未知状态且所述第一控制器的状态为非活跃状态的情况下,确定识别所述第一控制器主从状态失败以及所述第二控制器为主控制器;指示第二服务在确定所述同步链路的状态为未知状态且所述第一控制器的状态为活跃状态、或者所述同步链路的状态为异常状态且所述第一控制器的状态为活跃状态的情况下,确定所述第一控制器为主控制器的概率大于预设阈值的控制器以及所述第二控制器为从控制器;指示第二服务在确定所述同步链路的状态为未知状态且所述第一控制器的状态为非活跃状态的情况下,确定识别所述第一控制器主从状态失败的概率大于预设阈值以及所述第二控制器为主控制器。
139.可选的,第三确定模块66,还包括:
140.第五确定单元,用于在所述第一控制器位于底板的下方、所述第二控制器位于所述底板的上方的情况下,在所述第一主从信息与所述第二主从信息不存在矛盾的情况下,根据所述第一主从信息确定所述第一控制器和所述第二控制器的主从关系;在所述第一主从信息与所述第二主从信息存在矛盾的情况下,根据所述第二主从信息确定所述第一控制器和所述第二控制器的主从关系。
141.可选的,第五确定单元,用于通过以下方式根据所述第一主从信息确定所述第一控制器和所述第二控制器的主从关系:根据所述第一主从信息中所述第一控制器的信息确定所述第一控制器的主从属性;根据所述第一控制器的主从属性确定所述第二控制器的主从属性;
142.可选的,第三确定单元,用于通过以下方式根据所述第二主从信息确定所述第一控制器和所述第二控制器的主从关系:根据所述第二主从信息中所述第二控制器的信息确定所述第二控制器的主从属性;根据所述第二控制器的主从属性确定所述第一控制器的主从属性。
143.需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
144.本技术的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
145.在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:u盘、只读存储器(read-only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
146.本技术的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
147.在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
148.本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
149.显然,本领域的技术人员应该明白,上述的本技术的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本技术不限制于任何特定的硬件和软件结合。
150.以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献