一种多控多活RAID同步方法及系统与流程

文档序号:11215860阅读:410来源:国知局
一种多控多活RAID同步方法及系统与流程

本发明涉及计算机存储计数领域,特别涉及一种多控多活raid同步方法及系统。



背景技术:

在存储系统中,有单控系统,双控系统,还有多控系统。单控系统,即整个系统只有一个节点,比较简单。为了提高系统的可靠性和io性能,又出现了双控和多控等集群系统。即整个存储系统中,或者一个机箱内有多个节点。控制器的数量越多,系统就越复杂。而raid(redundantarraysofindependentdisks独立冗余磁盘阵列)技术在多控系统中更为复杂。在多控系统中,raid既要保证数据的一致性,又要保证io的高效性。为了保证数据的一致性,多控之间需要进行加锁,为了保证io的高效性,raid通常采用双活或四活模式。然而多控之间的数据同步,常常有会导致io的性能下降。

因此,如何在保证raid数据的一致性基础上,提高raid同步之间的数据同步效率,保障io的高效性是当前的研究难点。



技术实现要素:

有鉴于此,本发明的目的在于提供一种多控多活raid同步方法及系统,保证raid数据的一致性,提高了raid同步之间的数据同步效率,保障了io的高效性。其具体方案如下:

一种多控多活raid同步方法,包括:

目标主raid节点接收目标raid的加锁请求;

所述目标主raid节点利用所述加锁请求查找目标条带,判断所述目标条带是否被占用;

如果否,则所述目标主raid节点发送授权信息至所述目标raid;

所述目标raid对所述目标条带加锁,以便于raid之间同步数据;

其中,所述目标主raid节点包括与所述目标raid具有相同的id的raid,所述目标主raid节点为k个目标主raid节点中的任意一个目标主raid节点,每个目标主raid节点负责不同id的raid的加锁请求,k个目标主raid节点均为按照轮询方式,利用id%n算法,从n个raid节点中选取出的raid节点,n为大于等于2的正整数,k为正整数。

可选的,所述所述目标主raid节点利用所述加锁请求查找目标条带的过程,包括:

所述目标主raid节点利用所述加锁请求中的所述目标条带的起始位置和条带大小,查找目标条带。

可选的,还包括:

当所述目标主raid节点停止工作,则按照轮询方式,利用id%n算法,重新从n-1个raid节点中选取出的一个新目标主raid节点。

本发明还公开了一种多控多活raid同步系统,包括目标主raid节点和目标raid;其中,所述目标主raid节点包括:

接收模块,用于接收目标raid的加锁请求;

查找模块,用于利用所述加锁请求查找目标条带;

判断模块,用于判断所述目标条带是否被占用;

发送模块,用于如果所述判断模块判定所述目标条带未被占用,则发送授权信息至所述目标raid;

所述目标raid包括:

加锁模块,用于对所述目标条带加锁,以便于raid之间同步数据;

其中,所述目标主raid节点包括与所述目标raid具有相同的id的raid,所述目标主raid节点为k个目标主raid节点中的任意一个目标主raid节点,每个目标主raid节点负责不同id的raid的加锁请求,k个目标主raid节点均为按照轮询方式,利用id%n算法,从n个raid节点中选取出的raid节点,n为大于等于2的正整数,k为正整数。

可选的,所述查找模块,具体用于利用所述加锁请求中的所述目标条带的起始位置和条带大小,查找目标条带。

可选的,所述目标主raid节点,还包括:

选取模块,用于当所述目标主raid节点停止工作,则按照轮询方式,利用id%n算法,重新从n-1个raid节点中选取出的一个新目标主raid节点。

本发明中,多控多活raid同步方法,包括:目标主raid节点接收目标raid的加锁请求;目标主raid节点利用加锁请求查找目标条带,判断目标条带是否被占用;如果否,则目标主raid节点发送授权信息至目标raid;目标raid对目标条带加锁,以便于raid之间同步数据;其中,目标主raid节点包括与目标raid具有相同的id的raid,目标主raid节点为k个目标主raid节点中的任意一个目标主raid节点,每个目标主raid节点负责不同id的raid的加锁请求,k个目标主raid节点均为按照轮询方式,利用id%n算法,从n个raid节点中选取出的raid节点,n为大于等于2的正整数,k为正整数。本发明实施例通过将负责不同id的raid的加锁请求的目标主raid节点分布在不同的raid节点中,使得不同id的raid的加锁请求分散在不同的目标主raid节点上,使负载均衡分布在多个raid节点上,避免了请求集中在一个raid节点上,导致该raid节点上的raid大量的负责处理加锁请求,只能少量的处理写io操作,同时,只需要通过目标raid与目标主raid节点之间进行加锁请求的通信,而不用在每个raid节点之间进行通信,避免了产生大量的加锁请求,减少了负载,综上所述,保证了raid数据的一致性,提高了raid同步之间的数据同步效率,多余的负载保障了io的高效性。

附图说明

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

图1为本发明实施例公开的一种多控多活raid同步方法流程示意图;

图2为本发明实施例公开的一种多控多活raid同步方法结构示意图;

图3为本发明实施例公开的一种多控多活raid同步系统结构示意图。

具体实施方式

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

本发明实施例公开了一种多控多活raid同步方法,参见图1和图2所示,该方法包括:

步骤s11:目标主raid节点接收目标raid的加锁请求。

具体的,目标主raid节点创建监听套接字,启动监听服务,以便接收目标raid的加锁请求。

其中,目标主raid节点包括与目标raid具有相同的id的raid,例如,rd0-1为目标主raid节点中的目标主raid,rd0-2为目标raid,rd0-1和rd0-2具有相同的id,目标主raid节点为k个目标主raid节点中的任意一个目标主raid节点,例如,第一节点、第二节点、第三节点和第四节点,k个目标主raid节点均匀分布在n个raid节点上,k个目标主raid节点均为按照轮询方式,利用id%n算法,从n个raid节点中选取出的节点,n为大于等于2的正整数,k为正整数。

需要说明的是,同一raid节点中的raid的id不相同,例如,第一节点中rd0-1、rd1-1、rd2-1和rd3-1的id均不相同,只有在不同raid节点之间,才会出现相同id的raid,例如,rd0-1、rd0-2、rd0-3和rd0-4的id均相同,同一节点中的raid数可以根据实际应用需求进行设定。

步骤s12:目标主raid节点利用加锁请求查找目标条带,判断目标条带是否被占用。

具体的,目标主raid节点利用加锁请求中的目标条带的特征信息,查找到目标条带,进而判断目标条带是否为占用状态。

可以理解的是,由于目标主raid节点中的目标主raid与目标raid具有相同id,目标主raid与目标raid共用相同的条带,当然目标条带也在其中,所以目标主raid节点可以直接查找到目标条带,并判断目标条带是否为占用状态。

其中,判断目标条带是否被占用的条件为判断目标条带是否正被写io,如果目标条带正被写io,则为被占用,如果目标条带未被写io,则未被占用。

步骤s13:如果否,则目标主raid节点发送授权信息至目标raid。

具体的,如果判定目标条带未被占用,则目标主raid节点响应目标raid的加锁请求,发送授权信息至目标raid,允许目标raid对目标条带加锁。

可以理解的是,如果是,目标条带被占用,则目标主raid节点可以发送拒绝信息至目标raid,目标raid则可以等待目标条带未被占用时,目标主raid节点再次向目标raid发送授权信息,也可以在一定时间后再次向目标主raid节点发送加锁请求。

需要说明的是,当目标raid的加锁请求被授权,目标条带被锁,其他与目标raid的id相同的raid需要向目标条带写io时,目标主raid节点会查询到目标条带被占用,因此目标主raid节点不会向其他与目标raid的id相同的raid发送授权信息,其他与目标raid的id相同的raid便无法再对目标条带进行写io操作。

步骤s14:目标raid对目标条带加锁,以便于raid之间同步数据。

可以理解的是,为防止多个用户数据同时通过不同的raid向同一个条带写入数据,而导致raid之间数据无法同步,最终导致数据的完整性被破坏,因此在一个用户对一个条带写入数据时,为条带加锁,使其他用户无法通过不同的raid向同一个条带写入数据,保证数据的完整性,保证raid之间数据的一致性,所以目标raid对目标条带加锁,以便于raid之间同步数据。

可见,本发明实施例通过将负责不同id的raid的加锁请求的目标主raid节点分布在不同的raid节点中,使得不同id的raid的加锁请求分散在不同的目标主raid节点上,使负载均衡分布在多个raid节点上,避免了请求集中在一个raid节点上,导致该raid节点上的raid大量的负责处理加锁请求,只能少量的处理写io操作,同时,只需要通过目标raid与目标主raid节点之间进行加锁请求的通信,而不用在每个raid节点之间进行通信,避免了产生大量的加锁请求,减少了负载,综上所述,保证了raid数据的一致性,提高了raid同步之间的数据同步效率,多余的负载保障了io的高效性。

本发明实施例公开了一种具体的多控多活raid同步方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:

本发明实施例中,上述步骤s12中目标主raid节点利用加锁请求查找目标条带的过程,可以具体为目标主raid节点利用加锁请求中的目标条带的起始位置和条带大小,查找目标条带。

其中,上一实施例中的id%n算法,具体为利用每个节点上的raid使用的id与n求余,得到余数,利用余数从n个raid节点中选取出作为目标主raid节点的raid节点。

在实际应用中,有可能发生raid节点offline或者被拔出的可能性,此时,可能会出现目标主raid节点缺失的情况,如果不能及时恢复目标主raid节点将无法进行锁操作,也无法进行与缺失的目标主raid节点相应的raid之间的数据同步,因此,还可以当目标主raid节点停止工作,则按照轮询方式,利用id%n算法,重新从n-1个raid节点中选取出的一个新目标主raid节点,即,在剩余的与缺失的目标主raid节点中目标raid具有相同的id的raid的raid节点中选取出的一个新目标主raid节点,替代缺失的目标主raid节点,从而能够继续工作,在缺失的目标主raid节点恢复后,可以根据按照轮询方式,利用id%n算法,将恢复的缺失的目标主raid节点重新选为目标主raid节点,当然,如果替代缺失的目标主raid节点的新目标主raid节点,仅有新目标主raid节点一个目标主raid,则在缺失的目标主raid节点恢复后也可以继续使用新目标主raid节点,而缺失的目标主raid节点则作为普通的raid节点继续工作。

相应的,本发明实施例还公开了一种多控多活raid同步系统,参见图3所示,该系统包括目标主raid节点11和目标raid12;其中,

目标主raid节点11包括:

接收模块111,用于接收目标raid12的加锁请求;

查找模块112,用于利用加锁请求查找目标条带;

判断模块113,用于判断目标条带是否被占用;

发送模块114,用于如果判断模块113判定目标条带未被占用,则发送授权信息至目标raid12;

目标raid12包括:

加锁模块121,用于对目标条带加锁,以便于raid之间同步数据;

其中,目标主raid节点11包括与目标raid12具有相同的id的raid,目标主raid节点11为k个目标主raid节点中的任意一个目标主raid节点,每个目标主raid节点负责不同id的raid的加锁请求,k个目标主raid节点均为按照轮询方式,利用id%n算法,从n个raid节点中选取出的raid节点,n为大于等于2的正整数,k为正整数。

可见,本发明实施例通过将负责不同id的raid的加锁请求的目标主raid节点分布在不同的raid节点中,使得不同id的raid的加锁请求分散在不同的目标主raid节点上,使负载均衡分布在多个raid节点上,避免了请求集中在一个raid节点上,导致该raid节点上的raid大量的负责处理加锁请求,只能少量的处理写io操作,同时,只需要通过目标raid12与目标主raid节点11之间进行加锁请求的通信,而不用在每个raid节点之间进行通信,避免了产生大量的加锁请求,减少了负载,综上所述,保证了raid数据的一致性,提高了raid同步之间的数据同步效率,多余的负载保障了io的高效性。

本发明实施例中,上述查找模块,可以具体用于利用加锁请求中的目标条带的起始位置和条带大小,查找目标条带。

本发明实施例中,目标主raid节点还可以包括:

选取模块,用于当目标主raid节点停止工作,则按照轮询方式,利用id%n算法,重新从n-1个raid节点中选取出的一个新目标主raid节点。

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

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

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