一种双控系统中利用串口备份心跳通道的方法

文档序号:9667070阅读:566来源:国知局
一种双控系统中利用串口备份心跳通道的方法
【技术领域】
[0001]本发明涉及计算机存储技术领域,特别是涉及一种双控系统中利用串口备份心跳通道的方法。
【背景技术】
[0002]目前,存储区域网络(StorageArea Network and SAN Protocols,简写 SAN,即存储区域网络及其协议)是一种高速网络或子网络,提供在计算机与存储系统之间的数据传输。存储设备是指一台或多台用以存储计算机数据的磁盘设备,通常指磁盘阵列。
[0003]现有的磁盘阵列通常包括两个或多个控制器,俗称双控或多控。双控系统即含有两个控制器,磁盘阵列作为储存数据的设备,其数据安全性和完整性是必须得到保障的。因此,现有的磁盘阵列在高可用性上都做了大量的工作,以此来保障业务的连续性和数据的安全性。
[0004]在双控或多控磁盘阵列中,通常都会在控制器之间有数据链路和心跳链路,数据链路和心跳链路可以独立,也可以共用。磁盘阵列来说,如果心跳链路发生故障导致脑裂,双控系统中的两个控制器都接管所有的资源和业务,导致数据不一致,降低磁盘阵列业务连续性、数据安全性和数据一致性。

【发明内容】

[0005]本发明的目的是提供一种双控系统中利用串口备份心跳通道的方法,以实现保持数据一致性,提高磁盘阵列业务连续性、数据安全性和数据一致性。
[0006]为解决上述技术问题,本发明提供一种双控系统中利用串口备份心跳通道的方法,该方法包括:
[0007]当数据链路发生故障后,第一控制器通过串口向第二控制器发送通信包数据;
[0008]所述第二控制器接收所述通信包数据,对所述通信包数据进行解析得到所述通信包数据的包信息;
[0009]所述第二控制器通过所述包信息检测所述第一控制器和所述第二控制器之间的心跳链路是否正常;若否,向所述第一控制器发送表明心跳链路失效的第一响应信息;
[0010]所述第一控制器接收所述第一响应信息,依据所述第一响应信息确定所述第一控制器和所述第二控制器之间发生脑裂现象;
[0011]所述第一控制器接管所述第二控制器的资源和服务。
[0012]优选的,所述第一控制器接管所述第二控制器的资源和服务之后,包括:所述第一控制器硬复位所述第二控制器。
[0013]优选的,若所述第二控制器通过所述包信息检测所述第一控制器和所述第二控制器之间的心跳链路为正常,所述第二控制器向所述第一控制器发送表明心跳链路正常的第二响应信息。
[0014]优选的,所述第二控制器向所述第一控制器发送表明心跳链路正常的第二响应信息之后,所述第一控制器接收所述第二响应信息,确定所述第一控制器和所述第二控制器之间心跳链路正常,不做任何处理。
[0015]优选的,若所述第一控制器在预设时间内没有接收到所述第二控制器的响应信息,所述第一控制器确定所述第一控制器和所述第二控制器之间未发生脑裂现象,确定第二控制器发生宕机故障。
[0016]优选的,所述第一控制器确定第二控制器发生宕机故障之后,所述第一控制器接管所述第二控制器的资源和服务。
[0017]优选的,所述通信包的格式包括包头、具体包信息和结束符。
[0018]优选的,所述第一控制器通过串口向第二控制器发送通信包数据之前,还包括:
[0019]利用第一控制器和第二控制器之间的串口建立串口通信协议,用于在第一控制器和第二控制器之间进行通信,形成通信通道。
[0020]本发明所提供的一种双控系统中利用串口备份心跳通道的方法,当数据链路发生故障后,第一控制器通过串口向第二控制器发送通信包数据;第二控制器接收通信包数据,对通信包数据进行解析得到通信包数据的包信息;第二控制器通过包信息检测第一控制器和第二控制器之间的心跳链路是否正常;若否,向第一控制器发送表明心跳链路失效的第一响应信息;第一控制器接收第一响应信息,依据第一响应信息确定第一控制器和第二控制器之间发生脑裂现象;第一控制器接管第二控制器的资源和服务。
[0021]可见,该方法在数据链路和心跳链路共用的双控系统中,当数据链路发生故障后,可通过控制器的串口来建立新的通信通道,将通信通道作为新的心跳链路通道,利用串口来检测是否是发生脑裂,即在现有的心跳链路的基础上,增加了一条串口形式的心跳链路通道,增加了串口心跳链路通道作为备份,在利用串口通道确定第一控制器和第二控制器之间发生脑裂现象后,由第一控制器接管第二控制器的资源和服务,这样避免了双控系统中两个控制器都接管所有的资源和服务而导致数据不一致问题,实现保持数据一致性,提高磁盘阵列业务连续性、数据安全性和数据一致性。
【附图说明】
[0022]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0023]图1为本发明所提供一种双控系统中利用串口备份心跳通道的方法的流程图。
【具体实施方式】
[0024]本发明的核心是提供一种双控系统中利用串口备份心跳通道的方法,以实现保持数据一致性,提高磁盘阵列业务连续性、数据安全性和数据一致性。
[0025]为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0026]请参考图1,图1为本发明所提供一种双控系统中利用串口备份心跳通道的方法的流程图,该方法包括:
[0027]Sll:当数据链路发生故障后,第一控制器通过串口向第二控制器发送通信包数据;
[0028]其中,通信包的格式包括包头、具体包信息和结束符。
[0029]其中,第一控制器通过串口向第二控制器发送通信包数据之前,利用第一控制器和第二控制器之间的串口建立串口通信协议,用于在第一控制器和第二控制器之间进行通
?目O
[0030]S12:第二控制器接收通信包数据,对通信包数据进行解析得到通信包数据的包信息;
[0031]S13:第二控制器通过包信息检测第一控制器和第二控制器之间的心跳链路是否正常;若否,向第一控制器发送表明心跳链路失效的第一响应信息;
[0032]其中,若第二控制器通过包信息检测第一控制器和第二控制器之间的心跳链路为正常,第二控制器向第一控制器发送表明心跳链路正常的第二响应信息。第二控制器向第一控制器发送表明心跳链路正常的第二响应信息之后,第一控制器接收第二响应信息,确定第一控制器和第二控制器之间心跳链路正常,不做任何处理。
[0033]其中,若第一控制器在预设时间内没有接收到第二控制器的响应信息,第一控制器确定第一控制器和第二控制器之间未发生脑裂现象,确定第二控制器发生宕机故障。第一控制器确定第二控制器发生宕机故障之后,第一控制器接管第二控制器的资源和服务。
[0034]S14:第一控制器接收第一响应信息,依据第一响应信息确定第一控制器和第二控制器之间发生脑裂现象;
[0035]S15:第一控制器接管第二控制器的资源和服务。
[0036]其中,第一控制器接管第二控制器的资源和服务之后,第一控制器硬复位第二控制器。
[0037]以上方法,在数据链路和心跳链路共用的双控系统中,当数据链路发生故障后,可通过控制器的串口来建立新的通信通道,将通信通道作为新的心跳链路通道,利用串口来检测是否是发生脑裂,即在现有的心跳链路的基础上,增加了一条串口形式的心跳链路通道,增加了串口心跳链路通道作为备份,在利用串口通道确定第一控制器和第二控制器之间发生脑裂现象后,由第一控制器接管第二控制器的资源和服务,这样避免了双控系统中两个控制器都接管所有的资源和服务而导致数据不一致问题,实现保持数据一致性,提高磁盘阵列业务连续性、数据安全性和数据一致性。
[0038]现有的磁盘阵列,特别是双控或多控,其模式主要包括Active-Active、Active-Passive, ALUA,不管是哪种模式,在发生心跳链路故障后,均会发生脑裂,而导致整个磁盘阵列进入一种异常状态,严重影响到数据安全性和数据一致性。本发明在原心跳链路的基础上,增加了串口心跳链路通道作为备份,提高了磁盘阵列的高可用性,以及数据安全性。
[0039]具体的,本发明提供的一种双控系统中利用串口备份心跳通道的方法,用于数据链路和心跳链路共用的磁盘阵列中,磁盘阵列即为双控系统,包括两个控制器。具体的,该方法包括实现一种定制化的串口通信协议,用于在控制器之间进行通信;包括收包解析模块,用于接收和解析包信息;包括包处理模块,用于根据解析的包信息对系统做相应处理;包括发送模块,用于发送包信息;包括一定时器,用于定时检测串口链路状态;包括一全局锁机制,用于处理并发发送串口信息问题;包括故障诊断处理模块,用于在数据链路和心跳链路失效后,对故障
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1