发明内容
本发明实施例提供一种集群存储系统及其脑裂处理方法。
本发明提供一种集群存储系统,包括:控制通道接口模块、控制器集群模块、数据通道接口模块,
所述控制通道接口模块,用于控制所述控制器集群模块中各个控制器对所述磁盘框中对应的磁盘进行读写处理;
所述控制器集群模块,用于在所述控制通道接口模块的控制下对所述磁盘框中对应的磁盘进行读写处理,并通过所述数据通道接口模块在所述控制器集群模块中各个控制器之间交换数据;
所述数据通道接口模块,用于在所述控制通道接口模块的控制下为所述控制器集群模块提供数据交换通道。
相应地,本发明实施例提供一种集群存储系统的脑裂处理方法,包括:
检测控制器集群模块与控制通道接口模块之间的心跳网络是否发生故障;
当发生故障时,应用所述控制器集群模块与数据通道接口模块之间的数据网络传输用于通信的心跳信号。
本发明实施例,通过将数据网络作为心跳网络的备份网络,当心跳网络中某一条或几条控制通道出现故障时,可以采用数据网络中对应的数据通道传送心跳信号,从而使得控制器集群模块中各个控制器之间保持通信,避免由于控制器之间无法传送心跳信号进行通信,而出现多个控制器同时访问同一磁盘,造成数据不一致的问题。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明集群存储系统一个实施例的结构示意图,如图1所示,本实施例的系统包括:控制通道接口模块1、控制器集群模块2、数据通道接口模块3,其中,控制通道接口模块1用于控制控制器集群模块2中各个控制器对磁盘框中对应的磁盘进行读写处理;控制器集群模块2用于在控制通道接口模块1的控制下对磁盘框中对应的磁盘进行读写处理,并通过数据通道接口模块3在控制器集群模块2中各个控制器之间交换数据;数据通道接口模块3用于在控制通道接口模块1的控制下为控制器集群模块2提供数据交换通道。
具体来说,本实施例的系统中,控制通道接口模块1可以为GE交换机,通过控制通道接口模块1即可将控制器集群模块2中各个控制器连接在一起,从而在各个控制器与该控制通道接口模块1之间形成心跳网络,使得控制器集群模块2中的控制器连接为一个整体集群,在该心跳网络上传输心跳信号,使得控制器集群模块2中各个控制器保持通信。数据通道接口模块3可以为PCIE交换机,通过数据通道接口模块3也可以将控制器集群模块2中各个控制器连接在一起,在各个控制器与数据通道接口模块3之间形成数据网络,在该数据网络上传送数据信号。
当系统需要对与控制器集群模块2中的控制器B连接的磁盘进行写操作,但系统由于错误定向,将需要写入与控制器B连接的磁盘中的数据发送给控制器集群模块2中的控制器A,则控制器A可以通过数据网络将该数据发送给控制器B,从而使得控制器B将该数据写入与其连接的磁盘中,而无需系统重新对数据进行定位,从而提高了对数据的操作效率。而且,当心跳网络中与控制器集群模块2中的控制器C对应的控制通道发生故障时,控制器C可以采用对应的数据通道向其它控制器传送心跳信号,从而在心跳网络出现脑裂问题时,也可以保证出现脑裂的控制通道处的控制器与其它控制器之间传送心跳信号,从而能够继续保持通信。
本实施例的系统,通过将控制器集群模块与数据通道接口模块连接,使得在对需要进行操作的控制器进行错误定位时,无需对控制器进行重新定位,通过数据网络即可将数据传送到正确的控制器处,并通过正确的控制器将该数据写入对应的磁盘中,从而提高了对数据操作的效率;而且,本实施例的系统可以将数据网络作为心跳网络的备份网络,当心跳网络中某一条或几条控制通道出现故障时,可以采用数据网络中对应的数据通道传送心跳信号,从而使得控制器集群模块中各个控制器之间保持通信,避免由于控制器之间无法传送心跳信号进行通信,而出现多个控制器同时访问同一磁盘,造成数据不一致的问题。
图2为本发明集群存储系统另一个实施例的结构示意图,如图2所示,实施例以图1所示的系统为基础,进一步地,控制通道接口模块1可以包括相互连接的主控制通道接口单元11和备控制通道接口单元12,所述主控制通道接口单元11和备控制通道接口单元12分别与所述控制器集群模块2中各个控制器连接。通过在控制通道接口模块1中设置主控制通道接口单元11和备控制通道接口单元12,使得当主控制通道接口单元11出现故障时,该备控制通道接口单元12可以接替主控制通道接口单元11的工作,从而保证系统的可靠性。数据通道接口模块3可以包括相互连接的主数据通道接口单元31和备数据通道接口单元32,所述主数据通道接口单元31和备数据通道接口单元32分别与所述控制通道接口模块1和控制器集群模块2连接。通过在数据通道接口模块3中设置主数据通道接口单元31和备数据通道接口单元32,使得当主数据通道接口单元31出现故障时,该备数据通道接口单元32可以接替主数据通道接口单元31的工作,从而保证系统的可靠性。控制器集群模块2可以包括至少两对控制器(在图2中仅示出了两对控制器,当然也可以有更多对,其连接关于这两对控制器的连接关系类似),每对控制器包括相互连接的主控制器21和备控制器22,所述主控制器21和备控制器22分别与所述控制通道接口模块1、数据通道接口模块3连接。通过主控制器21和备控制器22,使得当主控制器21出现故障,或者与主控制器21连接的控制通道和数据通道同时出现故障时,该备控制器22可以接替主控制器21的工作,从而保证系统的可靠性。
另外,该系统还可以包括:监控模块4和磁盘框5,监控模块4用于监控所述控制通道接口模块1的控制操作,磁盘框5用于存储控制器集群模块2进行读写处理时的数据。
下面以一个具体实施例对本发明集群存储系统的技术方案进行详细说明。
图3为本发明集群存储系统再一个实施例的结构示意图,如图3所示,本实施例的系统中,控制通道接口模块可以包括交换机Ge SW A和Ge SW B两个控制通道接口单元,其中一个可以作为主控制通道接口单元,另一个即可以作为备控制通道接口单元。数据通道接口模块可以包括交换机PCIe SWA和PCIe SW B两个数据通道接口单元,其中一个可以作为主数据通道接口单元,另一个即可以作为备数据通道接口单元。而且,PCIe SW A与Ge SW A和Ge SW B分别连接,PCIe SW B与Ge SW A和Ge SW B分别连接。控制器集群模块可以包括A1~B4这8个控制器,其中,A1和B 1为一对控制器,A2和B2为一对控制器,A3和B3为一对控制器,A4和B4为一对控制器,这8个控制器在上半平面均与Ge SW A和Ge SW B连接,从而形成心跳网络,在下半平面均与PCIe SW A和PCIe SW B,从而形成数据网络,每对控制器均与该对控制器对应的磁盘挂接。为了方便系统监控,该系统还可以包括Server&KVM,即监控模块。
在现有技术,假设控制器A1到心跳网络的线缆、端口出现故障时,集群控制机制会让控制器B1认为控制器A1发生故障,而控制器A1也会认为控制器B1发生故障,从而出现两个控制器同时接管对方的业务,同时访问同一磁盘,从而导致数据不一致的问题。而在实施例中,为了解决该问题,在两个A1的控制通道发生故障时,控制器A1可以在数据网络上传输心跳信号,即可以暂时将控制通道切换到数据通道,从而使得控制器A1和控制器B1以及控制器A1与其它控制器之间保持通信,而不会出现控制器A1和控制器B1同时访问与其连接的磁盘,造成数据不一致的问题。
优选地,系统可以在控制器A1采用数据网络传送心跳信号时,修复控制器A1的控制通道,在控制器A1的控制通道修复好后,可以再切换回控制通道传送心跳信号。
当心跳网络发生故障,控制器A1的控制通道无法传送控制器A1的心跳信号后,再次遇到控制器A1的数据通道发生故障,比如控制器A1到PCIe SWA交换机的链路故障,此时控制器A1进入挂死状态(PANIC),不再处理IO操作,而B1控制器能够和其它控制器通信,并确认和它联通的其它控制器能够提供完整的IO服务,则控制器B1可以接管控制器A1上运行的业务,从而保证系统的工作的可靠性,进一步避免了控制器A1和控制器B1同时访问与其连接的磁盘,造成数据不一致的问题。
需要说明的是,上述实施例仅以四对控制器为例进行说明,本领域技术人员可以理解的是,本实施例的系统可以根据需要设置控制器的对数,例如两对、三对、五对或者更多对控制器。而且,上述实施例也仅以一对控制器中的一个控制器的控制通道出现故障为例来说,对于更多控制器出现故障的情况也是类似的,此处不再赘述。
本实施例的系统可以采用数据网络作为心跳网络的备份网络,当心跳网络出现故障时,可以采用数据网络来传送出现故障处的控制器的心跳信号,从而保持控制通道出现故障的控制器通过数据通道与其它控制器保持通信;当心跳网络出现故障处的控制器,其数据网络也出现故障,则此时该控制器可以将其工作托管给对端控制器,例如心跳网络和数据网络同时出现故障的主控制器可以将其工作托管给对应的备控制器。本实施例的系统工作性能可靠性,而且可以避免多个控制器同时访问与其连接的磁盘造成数据不一致的问题。
图4为本发明集群存储系统的脑裂处理方法一个实施例的流程图,如图4所示,本实施例的方法可以包括:
步骤401、检测控制器集群模块与控制通道接口模块之间的心跳网络是否发生故障;
本实施例的方法即可应用在图1或2或3所示的集群存储系统上,具体来说,控制器集群模块中的各个控制器或者各对控制器可以检测心跳网络是否发生故障,即该心跳网络是否发生脑裂。如果发生故障,则发生故障处的控制器即无法与其它控制器之间保持通信。控制通道接口模块可以为GE交换机,通过控制通道接口模块即可将控制器集群模块中各个控制器连接在一起,从而在各个控制器与该控制通道接口模块之间形成心跳网络,使得控制器集群模块中的控制器连接为一个整体集群,在该心跳网络上传输心跳信号,使得控制器集群模块中各个控制器保持通信。
步骤402、当发生故障时,应用所述控制器集群模块与数据通道接口模块之间的数据网络传输用于通信的心跳信号。
数据通道接口模块可以为PCIE交换机,通过数据通道接口模块也可以将控制器集群模块中各个控制器连接在一起,在各个控制器与数据通道接口模块之间形成数据网络,在该数据网络上传送数据信号。
当控制器集群模块中的各个或者某些控制器检测出心跳网络,即与控制器对应的控制通道无法传送心跳信号时,控制器可以暂时将控制通道切换到数据通道,在数据通道上传送心跳信号,从而使得心跳网络出现故障处的控制器仍然可以与其它控制器之间保持通信,而不会出现多个控制器同时访问与其连接的磁盘,造成数据不一致的问题。
以图3所示的系统举例来说,控制通道接口模块可以包括交换机Ge SW A和Ge SW B两个控制通道接口单元,其中一个可以作为主控制通道接口单元,另一个即可以作为备控制通道接口单元。数据通道接口模块可以包括交换机PCIe SW A和PCIe SW B两个数据通道接口单元,其中一个可以作为主数据通道接口单元,另一个即可以作为备数据通道接口单元。而且,PCIe SW A与Ge SW A和Ge SW B分别连接,PCIe SW B与Ge SW A和Ge SW B分别连接。控制器集群模块可以包括A1~B4这8个控制器,其中,A1和B1为一对控制器,A2和B2为一对控制器,A3和B3为一对控制器,A4和B4为一对控制器,这8个控制器在上半平面均与Ge SW A和Ge SW B连接,从而形成心跳网络,在下半平面均与PCIe SW A和PCIe SW B,从而形成数据网络,每对控制器均与该对控制器对应的磁盘挂接。
在现有技术,假设控制器A1到心跳网络的线缆、端口出现故障时,集群控制机制会让控制器B1认为控制器A1发生故障,而控制器A1也会认为控制器B1发生故障,从而出现两个控制器同时接管对方的业务,同时访问同一磁盘,从而导致数据不一致的问题。而在实施例中,为了解决该问题,在两个A1的控制通道发生故障时,控制器A1可以在数据网络上传输心跳信号,即可以暂时将控制通道切换到数据通道,从而使得控制器A1和控制器B1以及控制器A1与其它控制器之间保持通信,而不会出现控制器A1和控制器B1同时访问与其连接的磁盘,造成数据不一致的问题。
优选地,本实施例的方法还可以包括:对所述心跳网络进行故障处理,并在所述心跳网络恢复后重新在所述心跳网络上传送所述心跳信号。本实施例的方法可以在心跳网络出现故障处的控制器采用数据网络传送心跳信号时,修复该控制器的控制通道,在该控制器的控制通道修复好后,可以再切换回控制通道传送心跳信号。
本实施例的方法,通过将数据网络作为心跳网络的备份网络,当心跳网络中某一条或几条控制通道出现故障时,可以采用数据网络中对应的数据通道传送心跳信号,从而使得控制器集群模块中各个控制器之间保持通信,避免由于控制器之间无法传送心跳信号进行通信,而出现多个控制器同时访问同一磁盘,造成数据不一致的问题。
本发明集群存储系统的脑裂处理方法另一个实施例在图3所示的方法实施例的基础上,当所述心跳网络与所述数据网络都发生故障时,向备控制器发送通知消息,所述通知消息包括通知所述备控制器进行接管工作。
仍以图3所示的系统为例来说,当心跳网络发生故障,控制器A1的控制通道无法传送控制器A1的心跳信号后,再次遇到控制器A1的数据通道发生故障,比如控制器A1到PCIe SW A交换机的链路故障,此时控制器A1进入PANIC状态,不再处理IO操作,而B1控制器能够和其它控制器通信,并确认和它联通的其它控制器能够提供完整的IO服务,则控制器B1可以接管控制器A1上运行的业务,从而保证系统的工作的可靠性,进一步避免了控制器A1和控制器B1同时访问与其连接的磁盘,造成数据不一致的问题。
需要说明的是,上述方法实施例仅以四对控制器为例进行说明,本领域技术人员可以理解的是,本实施例的方法可以根据需要设置控制器的对数,例如两对、三对、五对或者更多对控制器。而且,上述实施例也仅以一对控制器中的一个控制器的控制通道出现故障为例来说,对于更多控制器出现故障的情况也是类似的,此处不再赘述。
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的精神和范围。