三控制器集群的数据处理方法、装置、设备及存储介质与流程

文档序号:16998383发布日期:2019-03-02 01:33阅读:129来源:国知局
三控制器集群的数据处理方法、装置、设备及存储介质与流程

本发明涉及存储技术领域,特别是涉及一种三控制器集群的数据处理方法、装置、设备及存储介质。



背景技术:

在云计算时代,海量数据的爆发式增长对存储技术的性能和安全性、稳定性提出了更高的要求。为了提高存储设备的性能和稳定性,目前普通采用两个控制器构成一个i/o组,再由多个i/o组构成集群来管理后端磁盘和下发i/o请求,同一i/o组中的两个控制器各承担50%的负载。当i/o组中一个控制器发生故障时,另一控制器可接替它的工作,承担100%负载,保证i/o处理不中断。这其中包括两个方面:一方面是失效接管,即一个控制器发生故障时,其它控制器能够接管其工作,保证数据不丢失、i/o处理不中断;另一方面是失效恢复,即发生故障的节点在故障排除之后,能够重新加入集群,其状态能够自动恢复到与另一节点一致,并重新开始承担50%的负载。

然而,随着存储技术的不断进步,目前出现了三控制器架构的存储集群,由三个控制器构成一个i/o组,互为备份,各承担三分之一的i/o负载,提供了更高的可靠性,在故障发生时性能损失更小。但三控架构通常要求每个控制器对其它两个控制器的缓存数据进行备份,以实现控制器故障时数据不丢失,这样会提高控制器的缓存成本,且缓存同步会对系统性能造成影响。



技术实现要素:

有鉴于此,本发明的目的在于提供一种三控制器集群的数据处理方法、装置、设备及存储介质,可以有效节省控制器的缓存成本,降低缓存同步对系统性能的影响。其具体方案如下:

一种三控制器集群的数据处理方法,包括:

采用循环备份的缓存数据备份机制,将每个控制器的缓存数据均在其后一控制器上同步保留一份备份;

当某控制器发生故障时,控制其后一控制器立即接管故障控制器的i/o负载,及控制所有正常控制器自动执行负载均衡;

在所述故障控制器恢复后,再次采用所述缓存数据备份机制进行缓存备份的调整,并重新进行负载均衡。

优选地,在本发明实施例提供的上述三控制器集群的数据处理方法中,采用循环备份的缓存数据备份机制,将每个控制器的缓存数据均在其后一控制器上同步保留一份备份,具体包括:

在每个控制器收到i/o请求后,对其缓存数据进行修改,并同步将缓存修改请求备份到其后一控制器;

在每个控制器处理i/o请求时,维护其缓存数据的同时,保存一份前一控制器的缓存数据,并接收前一控制器的缓存修改请求,使备份保持同步。

优选地,在本发明实施例提供的上述三控制器集群的数据处理方法中,在当某控制器发生故障时,控制其后一控制器立即接管故障控制器的i/o负载的同时,还包括:

对所述故障控制器的缓存数据进行标记;

将标记后的低优先级的缓存数据下刷到磁盘,以缩小缓存使用量。

优选地,在本发明实施例提供的上述三控制器集群的数据处理方法中,控制所有正常控制器自动执行负载均衡,具体包括:

将所述故障控制器的前一控制器的缓存数据备份到其后一控制器中,使剩余的所有正常控制器再次形成循环备份,并自动调整i/o负载,使所述i/o负载重新均衡。

优选地,在本发明实施例提供的上述三控制器集群的数据处理方法中,自动调整i/o负载,使所述i/o负载重新均衡,具体包括:

自动平衡各控制器间的i/o请求分发比例,降低接管控制器的i/o负载,增加其它控制器的i/o负载。

优选地,在本发明实施例提供的上述三控制器集群的数据处理方法中,在所述故障控制器恢复后,再次采用所述缓存数据备份机制进行缓存备份的调整,并重新进行负载均衡,具体包括:

在所述故障控制器恢复后,通知除所述故障控制器之外的其它控制器;

将前一控制器的缓存数据备份到刚恢复的控制器,并将后一控制器中的缓存备份清空;

为刚恢复的控制器分配i/o负载,将刚恢复的控制器在处理i/o请求中产生的缓存数据,同步备份到后一控制器;

将其它控制器的i/o负载逐渐分配到刚恢复的控制器,直至负载均衡。

本发明实施例还提供了一种三控制器集群的数据处理装置,包括:

循环备份模块,用于采用循环备份的缓存数据备份机制,将每个控制器的缓存数据均在其后一控制器上同步保留一份备份;

故障接管模块,用于当某控制器发生故障时,控制其后一控制器立即接管故障控制器的i/o负载,及控制所有正常控制器自动执行负载均衡;

故障恢复模块,用于在所述故障控制器恢复后,再次采用所述缓存数据备份机制进行缓存备份的调整,并重新进行负载均衡。

本发明实施例还提供了一种三控制器集群的数据处理设备,包括处理器和存储器,其中,所述处理器执行所述存储器中保存的计算机程序时实现如本发明实施例提供的上述三控制器集群的数据处理方法。

本发明实施例还提供了一种计算机可读存储介质,用于存储计算机程序,其中,所述计算机程序被处理器执行时实现如本发明实施例提供的上述三控制器集群的数据处理方法。

从上述技术方案可以看出,本发明所提供的一种三控制器集群的数据处理方法、装置、设备及存储介质,该方法包括:采用循环备份的缓存数据备份机制,将每个控制器的缓存数据均在其后一控制器上同步保留一份备份;当某控制器发生故障时,控制其后一控制器立即接管故障控制器的i/o负载,及控制所有正常控制器自动执行负载均衡;在故障控制器恢复后,再次采用缓存数据备份机制进行缓存备份的调整,并重新进行负载均衡。

本发明提出了循环备份和负载均衡的机制,保证在两个控制器依次(间隔一定时间)发生故障的情况条件下仍能保证数据不丢失、i/o处理不中断,并且每个控制器的缓存大小要求仍与双控相同,每个控制器只备份另外一个控制器的缓存数据,不要求每个控制器都备份其他两个控制器的缓存数据,这样有效控制了控制器的缓存成本,降低了缓存同步对系统性能的影响,提高了系统的可靠性和安全性。

附图说明

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

图1为本发明实施例提供的三控制器集群的数据处理方法的流程图。

具体实施方式

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

本发明提供一种三控制器集群的数据处理方法,如图1所示,包括以下步骤:

s101、采用循环备份的缓存数据备份机制,将每个控制器的缓存数据均在其后一控制器上同步保留一份备份;

在实际应用中,由第一控制器、第二控制器和第三控制器这三个控制器组成i/o组,为了实现缓存数据的循环备份,每个控制器的缓存数据都会同步写入到其后一控制器,如第一控制器的缓存数据会同步备份到第二控制器,第二控制器的缓存数据会同步备份到第三控制器,第三控制器的缓存数据会同步备份到第一控制器,依次类推。

s102、当某控制器发生故障时,控制其后一控制器立即接管故障控制器的i/o负载,及控制所有正常控制器自动执行负载均衡;

在实际应用中,该步骤是三控制器集群的失效接管方案,采用三控制循环备份的失效接管机制,当第一控制器失效时由第二控制器接管、第二控制器失效时由第三控制器接管、第三控制器失效时由第一控制器接管,从而保证i/o处理不中断;

当某控制器发生故障、其备份控制器接管的同时,各控制器的缓存备份也需要调整。例如,当第二控制器发生故障时,在第三控制器接管第二控制器的负载之后,会重新调整剩余正常控制器的缓存备份,逐渐调整i/o负载,使得剩余正常控制器的i/o负载逐渐平衡,此时i/o组变为双控模式;

当两个控制器逐个发生故障的条件下,由剩余的那个正常控制器接管,仍然可以保持i/o不中断,不丢失数据;例如:如果在第一控制器失效、第二控制器接管第一控制器的负载、并且缓存备份的重新调整已经完成的情况下,第二控制器又失效,则由第三控制器接管第二控制器和第一控制器的i/o负载,即第三控制器接管所有负载,此时i/o组变为单控模式,此时第三控制器的缓存数据不进行备份。

s103、在故障控制器恢复后,再次采用缓存数据备份机制进行缓存备份的调整,并重新进行负载均衡;

在实际应用中,该步骤是三控制器集群的失效恢复方案,同样基于循环备份的缓存机制和自动负载均衡。具体地,失效恢复的流程与失效接管的流程正相反,当i/o组中只有一个控制器时,由该控制器承担全部负载;当有两个控制器时,分别承担一半负载,并且互相备份缓存数据;当有三个控制器时,每个控制器承担三分之一的负载,并且缓存数据循环备份。

需要注意的是,由于缓存备份的再调整需要时间,因此,本发明的方案不支持极短时间内两个或两个以上控制器同时发生故障的场景,此时会导致未备份的缓存数据彻底丢失,i/o中断。

进一步地,在具体实施时,在本发明实施例提供的上述三控制器集群的数据处理方法中,步骤s101采用循环备份的缓存数据备份机制,将每个控制器的缓存数据均在其后一控制器上同步保留一份备份,具体可以包括以下步骤:

首先,在每个控制器收到i/o请求后,对其缓存数据进行修改,并同步将缓存修改请求备份到其后一控制器;

然后,在每个控制器处理i/o请求时,维护其缓存数据的同时,保存一份前一控制器的缓存数据,并接收前一控制器的缓存修改请求,使备份保持同步。

在具体实施时,在本发明实施例提供的上述三控制器集群的数据处理方法中,在执行步骤s102当某控制器发生故障时,控制其后一控制器立即接管故障控制器的i/o负载的同时,还可以包括:对故障控制器的缓存数据进行标记,将其设置为自身缓存的一部分,此时总缓存使用量为正常的两倍大小,此时它会立即开始依据“最近最久未使用”原则,将低优先级的缓存数据下刷到磁盘,将缓存使用量缩小到正常大小。

进一步地,在具体实施时,在本发明实施例提供的上述三控制器集群的数据处理方法中,步骤s102控制所有正常控制器自动执行负载均衡,具体可以包括:将故障控制器的前一控制器的缓存数据备份到其后一控制器中,使剩余的所有正常控制器再次形成循环备份,并自动调整i/o负载,使i/o负载重新均衡。

具体地,当负载接管之后,需要调整各控制器的缓存备份,将故障控制器的前一控制器的缓存数据备份到其后一控制器中,保证剩余的每个控制器的缓存数据都在另一控制器上有备份。例如,当第二控制器发生故障时,不光其自身缓存数据会丢失,其备份的第一控制器的缓存数据也会丢失,因此,当第三控制器接管第二控制器的负载之后,会重新调整剩余正常控制器的缓存备份,使第一控制器的缓存同步备份到第三控制器、第三控制器的缓存同步备份到第一控制器,并逐渐自动调整i/o负载,使得剩余两个正常控制器的i/o负载逐渐平衡。

更进一步地,在具体实施时,在本发明实施例提供的上述三控制器集群的数据处理方法中,上述步骤中自动调整i/o负载,使i/o负载重新均衡,具体包括:自动平衡各控制器间的i/o请求分发比例,降低接管控制器的i/o负载,增加其它控制器的i/o负载。

具体地,在自动调整i/o负载时,需要自动平衡各控制器间的i/o请求分发比例,例如:当第二控制器发生故障时,在第三控制器接管第二控制器的负载之后,此时第三控制器的负载较高,为了使第三控制器和第一控制器的i/o负载平衡,需要降低第三控制器的i/o负载,增加第一控制器的i/o负载。

在具体实施时,在本发明实施例提供的上述三控制器集群的数据处理方法中,执行步骤s103在故障控制器恢复后,再次采用缓存数据备份机制进行缓存备份的调整,并重新进行负载均衡,具体可以包括以下步骤:

首先,在故障控制器恢复后,恢复其集群状态,将恢复信息通知给除故障控制器之外的其它控制器;

然后,将前一控制器的缓存数据备份到刚恢复的控制器,并将后一控制器中的缓存备份清空;

之后,为刚恢复的控制器分配i/o负载,将刚恢复的控制器在处理i/o请求中产生的缓存数据,同步备份到后一控制器;

最后,将其它控制器的i/o负载逐渐分配到刚恢复的控制器,直至负载均衡。

基于同一发明构思,本发明实施例还提供了一种三控制器集群的数据处理装置,由于该三控制器集群的数据处理装置解决问题的原理与前述一种三控制器集群的数据处理方法相似,因此该三控制器集群的数据处理装置的实施可以参见三控制器集群的数据处理方法的实施,重复之处不再赘述。

在具体实施时,本发明实施例提供的三控制器集群的数据处理装置,具体包括:

循环备份模块,用于采用循环备份的缓存数据备份机制,将每个控制器的缓存数据均在其后一控制器上同步保留一份备份;

故障接管模块,用于当某控制器发生故障时,控制其后一控制器立即接管故障控制器的i/o负载,及控制所有正常控制器自动执行负载均衡;

故障恢复模块,用于在故障控制器恢复后,再次采用缓存数据备份机制进行缓存备份的调整,并重新进行负载均衡。

在本发明实施例提供的上述三控制器集群的数据处理装置中,可以通过上述三个模块的相互作用,将缓存数据以循环备份的机制保存在其它控制器上,当控制器数量变化时,动态得负载均衡机制,当控制器故障恢复后,重新建立循环备份和负载均衡,保证在两个控制器依次(间隔一定时间)发生故障的情况下仍能保证数据不丢失、i/o处理不中断,并且每个控制器只备份另外一个控制器的缓存数据,不要求每个控制器都备份其他两个控制器的缓存数据,这样有效控制了控制器的缓存成本,降低了缓存同步对系统性能的影响,提高了系统的可靠性和安全性。

关于上述各个模块更加具体的工作过程可以参考前述实施例公开的相应内容,在此不再进行赘述。

相应的,本发明实施例还公开了一种三控制器集群的数据处理设备,包括处理器和存储器;其中,处理器执行存储器中保存的计算机程序时实现前述实施例公开的三控制器集群的数据处理方法。

关于上述方法更加具体的过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

进一步的,本发明还公开了一种计算机可读存储介质,用于存储计算机程序;计算机程序被处理器执行时实现前述公开的三控制器集群的数据处理方法。

关于上述方法更加具体的过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。

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

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

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

综上,本发明实施例提供的一种三控制器集群的数据处理方法、装置、设备及存储介质,该方法包括:采用循环备份的缓存数据备份机制,将每个控制器的缓存数据均在其后一控制器上同步保留一份备份;当某控制器发生故障时,控制其后一控制器立即接管故障控制器的i/o负载,及控制所有正常控制器自动执行负载均衡;在故障控制器恢复后,再次采用缓存数据备份机制进行缓存备份的调整,并重新进行负载均衡。本发明提出了循环备份和负载均衡的机制,保证在两个控制器依次(间隔一定时间)发生故障的情况条件下仍能保证数据不丢失、i/o处理不中断,并且每个控制器的缓存大小要求仍与双控相同,每个控制器只备份另外一个控制器的缓存数据,不要求每个控制器都备份其他两个控制器的缓存数据,这样有效控制了控制器的缓存成本,降低了缓存同步对系统性能的影响,提高了系统的可靠性和安全性。

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

以上对本发明所提供的三控制器集群的数据处理方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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