文件系统中的集群角色切换方法、装置、设备及介质转让专利

申请号 : CN202310882845.7

文献号 : CN116610499B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王凯刘昌鑫李红韦新伟

申请人 : 联想凌拓科技有限公司

摘要 :

本公开提供了一种文件系统中的集群角色切换方法、装置、设备及介质。本公开提供的文件系统中的集群角色切换方法包括:接收从第一集群角色切换至第二集群角色的切换请求;响应于该切换请求,配置与要切换至的第二集群角色相关的存储区;向具有第二集群角色的第二集群发送从第二集群角色切换至第一集群角色的切换请求;以及响应于确认角色切换已经完成,设置当前状态为第二集群角色。

权利要求 :

1.一种文件系统中的集群角色切换方法,适用于具有第一集群角色的第一集群,其特征在于,所述方法包括:接收从所述第一集群角色切换至第二集群角色的切换请求;

响应于所述切换请求,配置与要切换至的所述第二集群角色相关的存储区;

向具有所述第二集群角色的第二集群发送从所述第二集群角色切换至所述第一集群角色的切换请求;以及响应于确认角色切换已经完成,设置当前状态为所述第二集群角色,其中,所述配置与要切换至的所述第二集群角色相关的存储区包括:创建节点映射存储区,其中,所述节点映射存储区用于存储所述第一集群与所述第二集群之间的目录和文件的节点映射关系数据,其中,所述节点映射关系数据用于执行所述第一集群与所述第二集群之间的远程复制任务,所述方法还包括:从所述第二集群接收节点映射反转存储区的节点映射关系反转数据,并将接收的所述节点映射关系反转数据作为所述节点映射关系数据保存至所述节点映射存储区,其中,在确认所述节点映射关系反转数据全部保存至所述节点映射存储区的情况下,确认角色切换已经完成。

2. 如权利要求1所述的文件系统中的集群角色切换方法,其特征在于,所述方法还包括:在接收所述切换请求之前,执行所述第一集群与所述第二集群之间的远程复制任务;

以及

在配置与要切换至的所述第二集群角色相关的存储区之前,确认停止所述第一集群与所述第二集群之间的远程复制任务,以及确认所述第一集群中的主从目录处于分裂状态。

3. 如权利要求1所述的文件系统中的集群角色切换方法,其特征在于,所述配置与要切换至的所述第二集群角色相关的存储区包括:移除复制任务控制存储区,其中,所述复制任务控制存储区用于存储所述第一集群与所述第二集群之间的远程复制任务的流程控制信息;以及创建元数据差异存储区,其中,所述元数据差异存储区用于存储所述第二集群的数据的最新快照与最近一次复制快照之间的快照差异。

4.如权利要求1所述的文件系统中的集群角色切换方法,其特征在于,所述方法还包括:在接收所述切换请求之后,设置角色切换标志位,其中,所述角色切换标志位用于角色切换发起端后台监听角色切换进程,所述角色切换标志位为第一状态时表示所述第一集群正在进行角色切换过程,所述角色切换标志位为第二状态时表示所述第一集群的角色切换过程结束。

5.一种文件系统中的集群角色切换方法,适用于具有第二集群角色的第二集群,其特征在于,所述方法包括:接收从所述第二集群角色切换至第一集群角色的切换请求;

响应于所述切换请求,配置与要切换至的所述第一集群角色相关的存储区;

向具有所述第一集群角色的第一集群发送从所述第一集群角色切换至所述第二集群角色的切换请求;以及响应于确认角色切换已经完成,设置当前状态为所述第一集群角色,其中,所述配置与要切换至的所述第一集群角色相关的存储区包括:创建节点映射反转存储区,其中,所述第二集群中包括有用于存储所述第一集群与所述第二集群之间的目录和文件的节点映射关系数据的节点映射存储区,其中,所述节点映射关系数据用于执行所述第一集群与所述第二集群之间的远程复制任务;

对所述节点映射存储区中存储的所述节点映射关系数据进行反转,得到节点映射关系反转数据,并将所述节点映射关系反转数据存储至所述节点映射反转存储区;以及将所述节点映射反转存储区存储的所述节点映射关系反转数据发送至所述第一集群。

6. 如权利要求5所述的文件系统中的集群角色切换方法,其特征在于,所述方法还包括:在接收所述切换请求之前,执行所述第一集群与所述第二集群之间的远程复制任务;

以及

在配置与要切换至的所述第一集群角色相关的存储区之前,确认停止所述第一集群与所述第二集群之间的远程复制任务,以及确认所述第一集群中的主从目录处于分裂状态。

7.如权利要求5所述的文件系统中的集群角色切换方法,其特征在于,所述方法还包括:从所述第一集群接收所述节点映射关系反转数据成功保存的反馈信息,其中,响应于接收所述反馈信息,确认角色切换已经完成。

8.如权利要求7所述的文件系统中的集群角色切换方法,其特征在于,所述方法还包括:响应于确认角色切换已经完成,移除所述节点映射反转存储区以及所述节点映射存储区。

9. 如权利要求5所述的文件系统中的集群角色切换方法,其特征在于,所述配置与要切换至的所述第一集群角色相关的存储区包括:创建复制任务控制存储区,其中,所述复制任务控制存储区用于存储所述第一集群与所述第二集群之间的远程复制任务的流程控制信息;以及创建元数据差异存储区,其中,所述元数据差异存储区用于存储所述第二集群的数据的最新快照与最近一次复制快照之间的快照差异。

10.如权利要求5所述的文件系统中的集群角色切换方法,其特征在于,所述方法还包括:在接收所述切换请求之后,设置角色切换标志位,其中,所述角色切换标志位用于角色切换发起端后台监听角色切换进程,所述角色切换标志位为第一状态时表示所述第二集群正在进行角色切换过程,所述角色切换标志位为第二状态时表示所述第二集群的角色切换过程结束。

11.如权利要求5所述的文件系统中的集群角色切换方法,其特征在于,所述方法还包括:在检测到集群角色切换过程中断的情况下,重新配置与要切换至的所述第二集群角色相关的存储区,无论集群角色切换过程当前所处的状态。

12. 如权利要求5所述的文件系统中的集群角色切换方法,其特征在于,所述方法还包括:在检测到集群角色切换过程中断的情况下,比较所述节点映射存储区的数据与所述节点映射反转存储区的数据,从反转中断位置处继续执行所述节点映射关系数据的反转;以及检查所述节点映射关系反转数据向所述第一集群的传输进度,从传输中断位置处继续传输所述节点映射关系反转数据。

13.一种文件系统中的第一集群装置,其特征在于,所述装置包括:接收单元,被配置为接收从所述第一集群角色切换至第二集群角色的切换请求;

处理单元,被配置为响应于所述切换请求,配置与要切换至的所述第二集群角色相关的存储区;

传输单元,被配置为向具有所述第二集群角色的第二集群发送从所述第二集群角色切换至所述第一集群角色的切换请求;以及所述处理单元还被配置为响应于确认角色切换已经完成,设置当前状态为所述第二集群角色,其中,所述处理单元配置与要切换至的所述第二集群角色相关的存储区包括:创建节点映射存储区,其中,所述节点映射存储区用于存储所述第一集群与所述第二集群之间的目录和文件的节点映射关系数据,其中,所述节点映射关系数据用于执行所述第一集群与所述第二集群之间的远程复制任务,所述处理单元还配置成:从所述第二集群接收节点映射反转存储区的节点映射关系反转数据,并将接收的所述节点映射关系反转数据作为所述节点映射关系数据保存至所述节点映射存储区,其中,在确认所述节点映射关系反转数据全部保存至所述节点映射存储区的情况下,确认角色切换已经完成。

14.一种文件系统中的第二集群装置,其特征在于,所述装置包括:接收单元,被配置为接收从所述第二集群角色切换至第一集群角色的切换请求;

处理单元,被配置为响应于所述切换请求,配置与要切换至的所述第一集群角色相关的存储区;

传输单元,被配置为向具有所述第一集群角色的第一集群发送从所述第一集群角色切换至所述第二集群角色的切换请求;以及所述处理单元还被配置为响应于确认角色切换已经完成,设置当前状态为所述第一集群角色,其中,所述处理单元配置与要切换至的所述第一集群角色相关的存储区包括:创建节点映射反转存储区,其中,所述第二集群中包括有用于存储所述第一集群与所述第二集群之间的目录和文件的节点映射关系数据的节点映射存储区,其中,所述节点映射关系数据用于执行所述第一集群与所述第二集群之间的远程复制任务;

对所述节点映射存储区中存储的所述节点映射关系数据进行反转,得到节点映射关系反转数据,并将所述节点映射关系反转数据存储至所述节点映射反转存储区;以及将所述节点映射反转存储区存储的所述节点映射关系反转数据发送至所述第一集群。

15. 一种文件系统中的集群设备,其特征在于,所述集群设备包括:处理器,以及

存储器,所述存储器存储有计算机可执行指令,所述计算机可执行指令当由所述处理器执行时促使所述处理器执行如权利要求1‑4中的任一项所述的文件系统中的集群角色切换方法,或者执行如权利要求5‑12中的任一项所述的文件系统中的集群角色切换方法。

16.一种非暂时性计算机可读存储介质,其特征在于,所述非暂时性计算机可读存储介质上存储有计算机可读指令,其中,所述计算机可读指令当由处理器执行时促使所述处理器执行如权利要求1‑4中的任一项所述的文件系统中的集群角色切换方法,或者如权利要求5‑12中的任一项所述的文件系统中的集群角色切换方法。

说明书 :

文件系统中的集群角色切换方法、装置、设备及介质

技术领域

[0001] 本公开涉及数据存储技术领域,更具体地,涉及一种文件系统中的集群角色切换方法、装置、设备及介质。

背景技术

[0002] 在文件系统存储领域,例如分布式的存储方式可以解决本集群内单节点或多节点发生故障时导致的文件系统业务访问问题。一套分布式文件系统,集群后端的物理节点的地理位置相对集中,多数情况下,集群所有物理节点布置在同一个机房内。由于物理节点的地域过于集中,可能会出现一些不可抗力的原因或定期维护,这将导致整个文件系统停止服务业务。

发明内容

[0003] 本公开的一些实施例提供了一种文件系统中的集群角色切换方法、装置、设备及介质,用于在文件系统中实现集群的角色切换,以提高文件系统的稳定性,提供稳定的文件服务。
[0004] 根据本公开的一方面,提供了一种文件系统中的集群角色切换方法,适用于具有第一集群角色的第一集群,包括:接收从第一集群角色切换至第二集群角色的切换请求;响应于切换请求,配置与要切换至的第二集群角色相关的存储区;向具有第二集群角色的第二集群发送从第二集群角色切换至第一集群角色的切换请求;以及响应于确认角色切换已经完成,设置当前状态为第二集群角色。
[0005] 根据本公开的一些实施例,集群角色切换方法还包括:在接收所述切换请求之前,执行所述第一集群与所述第二集群之间的远程复制任务;以及在配置与要切换至的第二集群角色相关的存储区之前,确认停止第一集群与第二集群之间的远程复制任务,以及确认第一集群中的主从目录处于分裂状态。
[0006] 根据本公开的一些实施例,配置与要切换至的第二集群角色相关的存储区包括:创建节点映射存储区,其中,节点映射存储区用于存储第一集群与第二集群之间的目录和文件的节点映射关系数据,其中,节点映射关系数据用于执行第一集群与第二集群之间的远程复制任务。
[0007] 根据本公开的一些实施例,集群角色切换方法还包括:从第二集群接收节点映射反转存储区的节点映射关系反转数据,并将接收的节点映射关系反转数据作为节点映射关系数据保存至节点映射存储区,其中,在确认节点映射关系反转数据全部保存至节点映射存储区的情况下,确认角色切换已经完成。
[0008] 根据本公开的一些实施例,配置与要切换至的第二集群角色相关的存储区包括:移除复制任务控制存储区,其中,复制任务控制存储区用于存储第一集群与第二集群之间的远程复制任务的流程控制信息;以及创建元数据差异存储区,其中,元数据差异存储区用于存储第二集群的数据的最新快照与最近一次复制快照之间的快照差异。
[0009] 根据本公开的一些实施例,集群角色切换方法还包括:在接收切换请求之后,设置角色切换标志位,其中,角色切换标志位用于角色切换发起端后台监听角色切换进程,角色切换标志位为第一状态时表示第一集群正在进行角色切换过程,角色切换标志位为第二状态时表示第一集群的角色切换过程结束。
[0010] 根据本公开的另一方面,提供了一种文件系统中的集群角色切换方法,适用于具有第二集群角色的第二集群,包括:接收从第二集群角色切换至第一集群角色的切换请求;响应于切换请求,配置与要切换至的第一集群角色相关的存储区;向具有第一集群角色的第一集群发送从第一集群角色切换至第二集群角色的切换请求;以及响应于确认角色切换已经完成,设置当前状态为第一集群角色。
[0011] 根据本公开的一些实施例,集群角色切换方法还包括:在接收所述切换请求之前,执行所述第一集群与所述第二集群之间的远程复制任务;以及在配置与要切换至的第一集群角色相关的存储区之前,确认停止第一集群与第二集群之间的远程复制任务,以及确认第一集群中的主从目录处于分裂状态。
[0012] 根据本公开的一些实施例,配置与要切换至的第一集群角色相关的存储区包括:创建节点映射反转存储区,其中,第二集群中包括有用于存储第一集群与第二集群之间的目录和文件的节点映射关系数据的节点映射存储区,其中,节点映射关系数据用于执行第一集群与第二集群之间的远程复制任务;对节点映射存储区中存储的节点映射关系数据进行反转,得到节点映射关系反转数据,并将节点映射关系反转数据存储至节点映射反转存储区;以及将节点映射反转存储区存储的节点映射关系反转数据发送至第一集群。
[0013] 根据本公开的一些实施例,集群角色切换方法还包括:从第一集群接收节点映射关系反转数据成功保存的反馈信息,其中,响应于接收反馈信息,确认角色切换已经完成。
[0014] 根据本公开的一些实施例,集群角色切换方法还包括:响应于确认角色切换已经完成,移除节点映射反转存储区以及节点映射存储区。
[0015] 根据本公开的一些实施例,配置与要切换至的第一集群角色相关的存储区包括:创建复制任务控制存储区,其中,复制任务控制存储区用于存储第一集群与第二集群之间的远程复制任务的流程控制信息;以及创建元数据差异存储区,其中,元数据差异存储区用于存储第二集群的数据的最新快照与最近一次复制快照之间的快照差异。
[0016] 根据本公开的一些实施例,集群角色切换方法还包括:在接收切换请求之后,设置角色切换标志位,其中,角色切换标志位用于角色切换发起端后台监听角色切换进程,角色切换标志位为第一状态时表示第二集群正在进行角色切换过程,角色切换标志位为第二状态时表示第二集群的角色切换过程结束。
[0017] 根据本公开的一些实施例,集群角色切换方法还包括:在检测到集群角色切换过程中断的情况下,重新配置与要切换至的第二集群角色相关的存储区,无论集群角色切换过程当前所处的状态。
[0018] 根据本公开的一些实施例,集群角色切换方法还包括:在检测到集群角色切换过程中断的情况下,比较节点映射存储区的数据与节点映射反转存储区的数据,从反转中断位置处继续执行节点映射关系数据的反转;以及检查节点映射关系反转数据向第一集群的传输进度,从传输中断位置处继续传输节点映射关系反转数据。
[0019] 根据本公开的又一方面,提供了一种文件系统中的第一集群装置,包括:接收单元,被配置为接收从第一集群角色切换至第二集群角色的切换请求;处理单元,被配置为响应于切换请求,配置与要切换至的第二集群角色相关的存储区;传输单元,被配置为向具有第二集群角色的第二集群发送从第二集群角色切换至第一集群角色的切换请求;以及处理单元还被配置为响应于确认角色切换已经完成,设置当前状态为第二集群角色。
[0020] 根据本公开的又一方面,提供了一种文件系统中的第二集群装置,包括:接收单元,被配置为接收从第二集群角色切换至第一集群角色的切换请求;处理单元,被配置为响应于切换请求,配置与要切换至的第一集群角色相关的存储区;传输单元,被配置为向具有第一集群角色的第一集群发送从第一集群角色切换至第二集群角色的切换请求;以及处理单元还被配置为响应于确认角色切换已经完成,设置当前状态为第一集群角色。
[0021] 根据本公开的又一方面,提供了一种文件系统中的集群设备,包括:处理器,以及存储器,其中,存储器上存储有计算机可执行指令,该计算机可执行指令当由处理器执行时促使处理器执行根据本公开一些实施例的文件系统中的集群角色切换方法。
[0022] 根据本公开的又一方面,提供了一种非暂时性计算机可读存储介质,其上存储有计算机可读指令,其中,该计算机可读指令当由处理器执行时促使处理器执行根据本公开一些实施例的文件系统中的集群角色切换方法。
[0023] 本公开提供了一种文件系统中的集群角色切换方法、装置、设备及介质。该文件系统中包括实现文件访问任务的主集群,以及作为备份的从集群,在主集群和从集群之间提供远程复制备份功能。在主集群发生故障或者进行定期检查等情况下,将主集群的角色切换为从集群,以及将从集群的角色切换为主集群,从而实现由之前的从集群作为新的主集群继续提供文件处理业务,以保证文件系统的服务稳定性,进一步地,保证在角色切换过程中文件系统中的元数据以及数据的正确性和可用性。

附图说明

[0024] 为了更清楚地说明本公开实施例的技术方案,下面将对实施例的描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本公开的一些示例性实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
[0025] 图1示出了根据本公开一些实施例的集群角色切换方法的示意性流程图;
[0026] 图2示出了根据本公开一些实施例的集群角色切换方法的另一示意性流程图;
[0027] 图3示出了根据本公开一些实施例的主集群同步角色切换执行流程图;
[0028] 图4示出了根据本公开一些实施例的从集群同步角色切换执行流程图;
[0029] 图5示出了根据本公开一些实施例的主集群异步角色切换执行流程图;
[0030] 图6A示出了根据本公开一些实施例的执行角色切换出现异常中断的示意图;
[0031] 图6B示出了根据本公开一些实施例的执行角色切换出现异常中断的另一示意图;
[0032] 图7示出了根据本公开一些实施例的第一集群装置的示意性框图;
[0033] 图8示出了根据本公开一些实施例的第二集群装置的示意性框图;
[0034] 图9示出了根据本公开一些实施例的集群设备的示意性框图;
[0035] 图10示出了根据本公开一些实施例的示例性计算设备的架构示意图;
[0036] 图11示出了根据本公开一些实施例的非暂时性计算机可读存储介质的示意图。

具体实施方式

[0037] 下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0038] 此外,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分或目标。同样,“包括”或者“包含”等类似的词语意指出现该词语前面的元件或者物件涵盖出现在该词语后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性连接,不管是直接的还是间接的。
[0039] 本公开中使用了流程图来说明根据本公开的实施例的方法的步骤。应当理解的是,前面或后面的步骤不一定按照顺序来精确地进行。相反,可以按照倒序或者同时处理或者按照其他可行的顺序来实现方法步骤。同时,也可以将其他操作添加到这些过程中。
[0040] 可以理解的是,本文中涉及的专业术语、名词具有本领域普通技术人员所公知的含义。
[0041] 在文件系统存储领域中,分布式存储一般用于解决本集群内单节点或多节点故障导致的文件系统业务访问问题。对于分布式文件系统,集群后端的物理节点的地理位置相对集中,多数情况下,集群所有物理节点布置在同一机房内,由于集群物理节点的地域过于集中,可能会出现由一些不可抗力导致的故障,或者需要对集群进行定期维护,这将导致整个文件系统停止服务业务。一般地,分布式文件系统中配置有主从集群架构,即,一般情形下,由主集群提供文件处理服务,由从集群作为主集群的备份设备,这使得需要在主集群和从集群之间提供远程复制功能,以将主集群中的数据例如定时地备份至从集群。可以理解的是,本文中的主集群与从集群的“主”和“从”仅是用于区分用于实现不同功能的集群,并不表示任何顺序或者重要性。例如,可以将具有相同物理结构的处理设备分别实现为主集群和从集群。
[0042] 本公开的一些实施例提出一种文件系统中的集群角色切换方法,适用于具有主、从集群架构的分布式文件系统。在例如主集群出现故障等情形下,将原来的主集群的角色切换为新的从集群,以及将原来的从集群的角色切换为新的主集群,从而实现在主集群出现故障或需要维护时,由原来的从集群(即,新的主集群)接管业务,继续提供文件访问服务,由原来的主集群(即新的从集群)作为备份设备,从而实现故障转移(failover)。此外,在原来的主集群恢复功能之后,切换回主集群状态,并将原来的从集群切换回从集群状态,从而实现故障恢复(failback)。由此,利用根据本公开实施例的集群角色切换方法,能够实现主从集群进行角色转换,提供稳定的文件服务业务,并且保证转换期间的数据的准确性和可用性,提高文件系统的性能以及使用体验。
[0043] 根据本公开的一些实施例,提供了一种文件系统中的集群角色切换方法,具体的,适用于具有第一集群角色的第一集群,即执行主体为第一集群。例如,第一集群角色为主角色,具有第一集群角色的第一集群为文件系统中的主集群,提供文件访问业务。例如,对应地,第二集群角色为从角色,具有第二集群角色的第二集群为文件系统中的从集群,作为主集群的备份设备,主从集群之间例如可以定期地执行远程复制备份过程。
[0044] 图1示出了根据本公开一些实施例的集群角色切换方法的示意性流程图,图1的流程对应于由主集群执行的角色切换步骤。为便于描述,结合图1描述的方法也可以称为主集群角色切换方法,即由主集群执行,以将主集群角色切换为从集群角色。如图1所示,主集群角色切换方法包括步骤S101至S104。
[0045] 在步骤S101,接收从第一集群角色切换至第二集群角色的切换请求。作为示例,此切换请求可以由角色切换发起端(例如,文件系统的管理者)发送至主集群,用于促使主集群由当前的主角色切换至从角色。例如,在管理者发现主集群存在故障或需要进行维护的情形下,将通过发送切换请求来促使主集群进行角色切换。作为另一示例,该切换请求可以由文件系统中的从集群发送至主集群。例如,在从集群端可能检测到主集群的故障,又例如,管理者也通过从集群来指示主集群进行角色切换。此外,可以理解的是,该切换请求也可以是由主集群的部件产生的,以使得主集群自触发地进行角色切换,在此不作限制。
[0046] 接着,在步骤S102,响应于切换请求,配置与要切换至的第二集群角色相关的存储区。由于当前的主集群将要切换至从角色,由此根据本公开的一些实施例提出在进行角色切换的过程中,由主集群在接收到切换请求之后配置与要切换至的从集群对应的存储区,目标在于切换完成后作为新的从集群进行运作。对于此步骤S102中需要进行配置的与从角色相关的存储区,将在下文详细描述。
[0047] 接着,在步骤S103,向具有第二集群角色的第二集群发送从第二集群角色切换至第一集群角色的切换请求。例如,在主集群自身设备中配置完成用于实现角色切换的存储区之后,向文件系统中的从集群发送指令,以使得其也进行角色切换,即,将从角色切换为主角色,以作为新的主集群实现文件服务。关于从集群进行角色切换的步骤,将在下文结合图2进行描述。
[0048] 在步骤S104,响应于确认角色切换已经完成,设置当前状态为第二集群角色。主集群只有在确认角色切换已经完成的情形下,才将当前状态设置为第二集群角色,即从角色,从而避免由角色切换引起数据丢失或者不可用。
[0049] 通过以上步骤S101至S104,文件系统中的主集群能够实现从主角色切换至从角色,作为从集群提供备份业务。
[0050] 根据本公开的一些实施例,主集群角色切换方法还可以包括:在接收切换请求之前,执行第一集群与第二集群之间的远程复制任务;以及在配置与要切换至的第二集群角色相关的存储区之前,确认停止第一集群与第二集群之间的远程复制任务,以及确认第一集群中的主从目录处于分裂状态。
[0051] 如上文所描述的,分布式文件系统中设置有主从集群架构,由主集群实现主要的文件服务业务,由从集群作为主集群的备份设备。为此,需要在主从集群之间定期地进行远程复制任务,即,将主集群中存储的文件备份到从集群。换句话说,主集群与从集群所实现的功能是有差别的:主集群一般负责驱动远程复制任务,以将主集群指定目录下的数据,包括目录元数据和文件数据,定时地同步到从集群指定目录下;从集群一般用于接收主集群发送的备份数据(元数据和文件数据),并将接收的数据保存到指定目录下。
[0052] 为了便于理解根据本公开实施例的集群角色切换方法的实现过程,在描述具体的方法步骤之前,首先描述分布式文件系统中主从集群进行远程复制任务的过程以及分别需要维护的存储区,再具体的描述根据本公开一些实施例的角色切换方法,以便于理解根据本公开实施例的方法中关于进行集群角色切换所进行的步骤。
[0053] 可以理解的是,对于文件系统中的主集群和从集群,在一般状态下,由主集群提供文件服务业务,由从集群作为备份设备,主集群需要定时地将数据备份至从集群,即,在接收步骤S101中涉及的切换请求之前,主集群需要定期地执行远程复制任务。在根据本公开实施例的方法中,主集群在接收到步骤S101中涉及的切换请求之后,可以首先确认当前是否正在进行主从集群之间的远程复制任务,如果在进行,则停止该任务,以进行稳定的角色切换,避免由于正在进行的远程复制任务造成数据丢失。进一步地,该第一集群还将进一步确认其中的主从目录处于分裂状态。在主集群(当前为第一集群)中,可能设置有定时地同步任务,因此在确认当前没有正在进行的远程复制任务的基础上,还可以通过命令来设置使得主集群中的主从目录处于分裂状态,防止自动地启动定时同步任务,从而保证进行稳定的角色切换过程,避免由于远程复制任务造成数据丢失或者角色切换失败。
[0054] 接下来,将详细描述主从集群在执行远程复制任务中所需要维护的存储区。
[0055] 作为一种示例,该存储区可以实现为分布式文件系统(例如,Ceph文件系统)中的块设备(RADOS Block Devices,RBD)。具体的,Ceph是一种统一的分布式文件系统,其具有良好的性能,并且具有高可用性和可扩展性。Ceph的统一体现在可以提供文件系统、块存储和对象存储,分布式体现在可以动态扩展。RADOS是Ceph最为关键的技术,其是一个完整的对象存储系统,所有存储在Ceph系统中的数据最终由这一层来实现存储。可以理解的是,将存储区实现为RBD仅是示例性的,在其他文件系统的实现方式中,还可以通过其他方式来实现上述存储区,在此不作限制。
[0056] 如上文所描述的,分布式文件系统中设置有主从集群架构,主集群与从集群所实现的功能是有差别的:主集群一般负责驱动远程复制任务,以将主集群指定目录下的数据,例如目录元数据和文件数据等,定时地同步到从集群指定目录下;从集群一般用于接收主集群发送的备份数据(元数据和文件数据),并将接收的数据保存到指定目录下。
[0057] 为了实现远程数据备份,主集群需要定时地将数据远程复制到从集群,从集群需要存储主集群发送过来的备份数据。为了实现上述功能,主集群中创建有用于实现远程复制任务的存储区,例如,维护一个或多个RBD。从集群也创建有用于实现备份任务的一些RBD。
[0058] 作为示例,对于主集群,需要维护复制任务控制存储区(control RBD)。该control RBD用于保存远程复制任务流程控制信息,远程复制任务进程启动或创建远程复制对(pair)时创建该control RBD,在完成本轮复制任务后删除并重建该RBD。作为另一示例,主集群还需要维护元数据差异存储区(metadiff RBD)。对于每轮远程复制任务,基于主集群目录最新快照与上一次快照之间的差异来实现元数据差异,该metadiff RBD用于保存二次快照之间的元数据差异,并同步到从集群。在远程复制任务进程启动或创建pair时创建该RBD,每轮复制任务完成后删除并重建该metadiff RBD。
[0059] 作为示例,对于从集群,远程复制任务涉及到的RBD包括元数据差异存储区(metadiff RBD),从集群中的此metadiff RBD用于接收并保存主集群发送的metadiff数据,接收完成后在从集群目录应用metadiff数据,以保证主从集群两端的目录元数据一致。在远程复制任务进程启动或创建pair时创建该RBD,每轮复制任务完成后删除并重建该metadiff RBD。作为另一示例,对于从集群,远程复制任务涉及到的RBD还包括节点映射存储区(inomap RBD),以保存主集群与从集群之间的目录和文件的节点映射关系数据。具体的,主集群与从集群之间的节点映射关系可以表示为一个远程复制对(pair),即主集群一个目录映射到从集群一个目录,称为一个pair。例如,主集群目录A与从集群目录A创建映射关系,即为一个pair,实现主集群目录A定期同步数据到从集群目录A,主从集群之间可以创建多个pair,每个pair可以设置不同的远程复制时间。由此,从集群中需要保存pair下主从目录和文件的节点(inode)映射关系,例如,主集群目录A下的文件a,节点数字(inode number)为1,创建pair后,映射到从集群目录A下的文件a,节点数字为2,并将主集群的节点数字1与从集群的节点数字2关于该文件a的节点映射关系保存在该inomap RBD内。在从集群中,在创建pair时创建此inomap RBD,删除pair时移除此inomap RBD。
[0060] 根据本公开的一些实施例,步骤S102中配置与要切换至的第二集群角色相关的存储区包括:创建节点映射存储区,其中,节点映射存储区用于存储第一集群与第二集群之间的目录和文件的节点映射关系数据,其中,节点映射关系数据用于执行第一集群与第二集群之间的远程复制任务。
[0061] 由于当前主集群将要切换至具有从角色,在角色切换完成之后即作为新的从集群实现从集群在远程复制中所需要进行的处理,由此,在接收到切换请求之后,主集群将创建用于存储上述节点映射关系数据的节点映射存储区inomap RBD,以用于实现从集群的功能。
[0062] 根据本公开一些实施例,步骤S102中配置与要切换至的第二集群角色相关的存储区还包括:移除复制任务控制存储区(control RBD),其中,复制任务控制存储区用于存储第一集群与第二集群之间的远程复制任务的流程控制信息;以及创建元数据差异存储区(metadiff RBD),其中,元数据差异存储区用于存储第二集群的数据的最新快照与最近一次复制快照之间的快照差异。
[0063] 可以理解的是,在主集群进行角色切换之前,其中维护有用于主导远程复制任务的control RBD。在从主角色切换为从角色的过程中,主集群可以删除此control RBD,因为,作为新的从集群不再需要此control RBD,将由新的主集群来配置新的control RBD。此外,在主集群进行角色切换的过程中,还需要创建用于实现从角色的metadiff RBD。如上文所描述的,尽管主从集群中均包括此metadiff RBD,但是这两者的功能是不同的。主集群中的metadiff RBD用于产生主集群两次快照之间的元数据差异,并将差异发送至从集群,而从集群中的metadiff RBD用于接收并保存主集群发送的元数据差异。由此,在接收到切换请求之后,第一集群将重新创建metadiff RBD,以用于实现从集群的功能。可以理解的是,该第一集群中重新创建的metadiff RBD是用于实现从集群的功能,即用于存储从新的主集群(即,第二集群)接收的数据快照差异。
[0064] 根据本公开一些实施例,主集群角色切换方法还包括:从第二集群接收节点映射反转存储区的节点映射关系反转数据,并将接收的节点映射关系反转数据作为节点映射关系数据保存至节点映射存储区。可以理解的是,在进行角色切换之前,从集群中可以配置有用于实现备份功能的metadiff RBD和inomap RBD。在从集群接收到角色切换请求之后,将对inomap RBD中的数据进行处理,并将处理后的数据发送至主集群,以使得主集群中包括用于实现从角色所需的inomap RBD。对于从集群获得节点映射关系反转数据的过程将在下文结合图2进行描述。
[0065] 根据本公开的一些实施例,在确认节点映射关系反转数据全部保存至节点映射存储区的情况下,主集群确认角色切换已经完成。这能够使得节点映射反转数据完整的保存在主集群中,避免此部分数据的丢失,从而能在角色切换完成之后作为新的从集群实现数据备份。
[0066] 利用此步骤S102中配置的存储区,经过角色切换后的主集群能够作为新的从集群提供稳定的备份业务,保证文件系统的性能稳定,避免由于故障等因素导致的文件业务终止。并且,文件系统中的主从集群通过简单的角色切换步骤就能够快速、高效地实现文件系统中的故障转移,确保主从角色切换后的正常服务。
[0067] 根据本公开的一些实施例,在角色切换发起端发送角色切换请求之后,可以将进程设置为等待主集群的执行反馈结果,即,在收到反馈结果之前,发起端将停留在角色切换进程中,此种实现方式可以理解同步切换方式,即,发起端在触发角色切换之后,等待主集群的执行反馈结果,在此期间不再进行其他操作。
[0068] 根据本公开的另一些实施例,主集群角色切换方法还包括:在接收切换请求之后,设置角色切换标志位,其中,角色切换标志位用于角色切换发起端后台监听角色切换进程,角色切换标志位为第一状态时表示第一集群正在进行角色切换过程,角色切换标志位为第二状态时表示第一集群的角色切换过程结束。
[0069] 以上设置角色切换标志位的角色切换方式可以理解为异步切换方式,例如,角色切换的发起端在向主集群发送执行角色切换指令后,进程会立刻返回。主集群的后台线程将进行角色切换流程,并通过设置例如pair状态下的角色切换标志位来更新后台切换流程状态。发起端通过检查该标志位来了解角色切换进程。如果标志位为第一状态(true),代表后台正在执行切换流程,如果标志位为第二状态(false),代表切换流程已经结束,即主从集群已经完成角色切换。由此,发起端首先向集群发送切换请求,告知该集群需要转换自己的角色,例如,主角色切换至从角色(Master to Slave),或者从角色切换至主角色(Slave to Master),接着,发起端通过标志位来监测角色切换进程是否结束。作为另一示例,当主集群完成自己的角色切换后,将返回网络应答告知发起端角色切换的结果,返回成功,则发起端继续执行自己的角色切换流程,若返回失败,由发起端根据错误信息进行相应的处理。
[0070] 此异步控制方式能够使得发起端在发出角色切换请求后立刻返回其他进程,前端进程诸如交互界面等不会阻塞在角色切换进程中,可以继续实现其他的操作。发起端只需要定时查询pair状态下标志位,以检测角色切换流程是否结束,此外还可以检查主从集群返回的错误信息以查询切换流程执行是否成功。
[0071] 以上结合图1描述了在文件系统中,主集群进行角色切换(Master to Slave)所进行的步骤。以上结合图1描述的根据本公开实施例的主集群角色切换方法,能够将第一集群的角色从第一集群角色(主角色)切换为第二集群角色(从集群),以作为新的从集群来进行后续操作。
[0072] 接下来,将结合图2描述根据本公开实施例的从集群进行角色切换的步骤(Slave to Master)
[0073] 根据本公开的一些实施例,提供了一种文件系统中的集群角色切换方法,具体的,适用于具有第二集群角色的第二集群,即执行主体为第二集群。例如,第一集群角色为主角色,具有第一集群角色的第一集群为文件系统中的主集群,提供文件访问业务。对应地,第二集群角色为从角色,具有第二集群角色的第二集群为文件系统中的从集群,作为主集群的备份设备,主从集群之间可以定期地执行远程复制备份过程。
[0074] 图2示出了根据本公开一些实施例的集群角色切换方法的另一示意性流程图,图2的流程对应于由从集群执行的角色切换步骤。为便于描述,结合图2描述的方法称为从集群角色切换方法,即由从集群执行,以将从集群切换为主集群(Slave to Master)。如图2所示,从集群角色切换方法包括步骤S201至S204。
[0075] 在步骤S201,接收从第二集群角色切换至第一集群角色的切换请求。作为示例,此切换请求可以由角色切换发起端(例如,文件系统的管理者)发送至从集群,用于促使从集群由当前的从角色切换至主角色。例如,在管理者发现主集群存在故障或需要进行维护的情形下,将通过发送切换请求来促使从集群进行角色切换,以用于接替主集群实现文件服务功能。作为另一示例,该切换请求也可以由文件系统中的主集群发送至从集群。例如,在主集群自身进行角色切换之后,可以指示文件系统中的从集群对应地也进行角色切换。此外,可以理解的是,该切换请求也可以是由从集群的部件产生的,以使得从集群自触发地进行角色切换,在此不作限制。
[0076] 接着,在步骤S202,响应于切换请求,配置与要切换至的第一集群角色相关的存储区。由于当前的从集群将要切换至主角色,由此根据本公开的一些实施例提出在进行角色切换的过程中,由从集群在接收到切换请求之后配置与要切换至的主集群对应的存储区,目标在于切换完成后作为新的主集群进行运作。对于此步骤S202中需要进行配置的与主角色相关的存储区,将在下文详细描述。
[0077] 接着,在步骤S203,向具有第一集群角色的第一集群发送从第一集群角色切换至第二集群角色的切换请求。例如,在从集群自身设备中配置完成用于实现角色切换的存储区之后,向文件系统中的主集群发送指令,以使得其也进行角色切换,即,将主角色切换为从角色,以作为新的从集群实现文件服务。关于主集群进行角色切换的步骤,可以参考上文结合图1进行的描述。
[0078] 在步骤S204,响应于确认角色切换已经完成,设置当前状态为第一集群角色。从集群只有在确认角色切换已经完成的情形下,才将当前状态设置为第一集群角色,即主角色,从而避免由角色切换引起数据丢失或者不可用。
[0079] 通过以上步骤S201至S204,文件系统中的从集群能够实现自从角色切换至主角色,作为新的主集群提供文件服务业务。
[0080] 根据本公开的一些实施例,从集群角色切换方法还可以包括:在接收所述切换请求之前,执行所述第一集群与所述第二集群之间的远程复制任务;以及在配置与要切换至的第一集群角色相关的存储区之前,确认停止第一集群与第二集群之间的远程复制任务,以及确认第一集群中的主从目录处于分裂状态。
[0081] 如上文所描述的,对于文件系统中的主集群和从集群,在一般状态下,由主集群提供文件服务业务,由从集群作为备份设备,主集群需要定时地将数据备份至从集群。即,在接收步骤S201中涉及的切换请求之前,从集群需要与主集群一起定期地执行远程复制任务,即,接收并保存主集群发送的元数据差异。在根据本公开实施例的方法中,从集群在接收到步骤S201中涉及的切换请求之后,可以首先确认当前是否正在进行主从集群之间的远程复制任务,如果在进行,则停止该任务,以进行稳定的角色切换,避免由于正在进行的远程复制任务造成数据丢失。
[0082] 根据本公开的一些实施例,在步骤S202中配置与要切换至的第一集群角色相关的存储区包括:创建节点映射反转存储区,其中,第二集群中包括有用于存储第一集群与第二集群之间的目录和文件的节点映射关系数据的节点映射存储区,其中,节点映射关系数据用于执行第一集群与第二集群之间的远程复制任务;对节点映射存储区中存储的节点映射关系数据进行反转,得到节点映射关系反转数据,并将节点映射关系反转数据存储至节点映射反转存储区;以及,将节点映射反转存储区存储的节点映射关系反转数据发送至第一集群。
[0083] 可以理解的是,在进行角色切换之前,从集群中维护有远程复制任务所需的inomap RBD和metadiff RBD。在进行角色切换的过程中,从集群需要将其自身中的inomap RBD中的节点映射关系数据进行反转,并将反转后的数据(即,节点映射关系反转数据)传输至即将作为新的从集群的主集群。对于inomap RBD中的数据,在进行角色切换前后,由于主从集群的角色发生了反转,由此映射关系也需要进行反转。由此,在根据公开实施例的从角色切换方法中,从集群中将创建节点映射反转存储区(inomap invert RBD),用于存储节点映射关系反转数据。
[0084] 根据本公开的一些实施例,在步骤S202中配置与要切换至的第一集群角色相关的存储区还包括:创建复制任务控制存储区,其中,复制任务控制存储区用于存储第一集群与第二集群之间的远程复制任务的流程控制信息;以及创建元数据差异存储区,其中,元数据差异存储区用于存储第二集群的数据的最新快照与最近一次复制快照之间的快照差异。由于从集群在进行角色切换之后将作为新的主集群进行操作,而主集群需要控制远程复制功能,因此,在从集群角色切换方法中,将创建主集群所需的control RBD和metadiff RBD。可以理解的是,在第二集群中新创建的元数据差异存储区是用于存储接下来作为主集群的数据的最新快照与最近一次复制快照之间的快照差异,即,第二集群的数据的最新快照与最近一次复制快照之间的快照差异。这是由于该第二集群在经过角色切换之后作为新的主集群来执行操作。
[0085] 根据本公开一些实施例的从集群角色切换方法,还包括:从第一集群接收节点映射关系反转数据成功保存的反馈信息,其中,响应于接收反馈信息,确认角色切换已经完成。根据本公开一些实施例的从集群角色切换方法,还可以包括:响应于确认角色切换已经完成,移除节点映射反转存储区以及节点映射存储区。这是因为从集群在进行角色切换之后将作为新的主集群进行操作,而主集群的功能不再需要上述inomap RBD和inomap invert RBD。进一步的,从集群只在确定角色切换已经完成之后(即,接收到来自主集群的节点映射关系反转数据成功保存的反馈信息)才删除从集群中的inomap RBD和inomap invert RBD,以避免角色切换过程中丢失文件系统中的节点映射关系数据,造成不必要的损失。
[0086] 根据本公开的一些实施例,在确认节点映射关系反转数据全部保存至主集群的节点映射存储区的情况下,例如,通过接收上述反馈信息,从集群确认角色切换已经完成。这能够使得节点映射反转数据完整的保存在主集群中,避免此部分数据的丢失,从而能在角色切换完成之后作为新的从集群实现数据备份。
[0087] 利用此步骤S202中配置的存储区,经过角色切换后的从集群能够作为新的主集群提供稳定的文件服务业务,保证文件系统的性能稳定,避免由于故障等因素导致的文件业务终止。并且,文件系统中的主从集群通过简单的角色切换步骤就能够快速、高效地实现文件系统中的故障转移,确保主从角色切换后的正常服务。
[0088] 根据本公开的一些实施例,在角色切换发起端向从集群发送角色切换请求之后,可以将进程设置为等待从集群的执行反馈结果,即,在收到反馈结果之前,发起端将停留在角色切换进程中,此种实现方式可以理解同步切换方式,即,发起端在触发角色切换之后,等待从集群的执行反馈结果,在此期间不再进行其他操作。
[0089] 根据本公开的另一些实施例,从集群角色切换方法还包括:在接收切换请求之后,设置角色切换标志位,其中,角色切换标志位用于角色切换发起端后台监听角色切换进程,角色切换标志位为第一状态时表示第二集群正在进行角色切换过程,角色切换标志位为第二状态时表示第二集群的角色切换过程结束。
[0090] 以上设置角色切换标志位的角色切换方式可以理解为异步切换方式,关于此异步切换方式的具体实现方式可以参照上文针对主集群角色切换方法进行的描述,在此不再重复。类似的,此异步控制方式能够使得发起端在发出角色切换请求后立刻返回其他进程,前端进程诸如交互界面等不会阻塞在角色切换进程中,可以继续实现其他的操作。发起端只需要定时查询pair状态下标志位,以检测角色切换流程是否结束,此外还可以检查主从集群返回的错误信息以查询切换流程执行是否成功。
[0091] 利用本公开实施例提供的上述主集群角色切换方法和从集群角色切换方法,在主集群发生故障或者进行定期检查等情况下,将主集群的角色切换为从集群,以及将从集群的角色切换为主集群,从而实现由之前的从集群作为新的主集群继续提供文件处理业务,以保证文件系统的服务稳定性,进一步地,保证在角色切换过程中文件系统中的元数据以及数据的正确性和可用性。
[0092] 根据本公开的一些实施例,从集群角色切换方法还可以包括:在检测到集群角色切换过程中断的情况下,重新配置与要切换至的第二集群角色相关的存储区,无论集群角色切换过程当前所处的状态。此种方式可以表示为完整重做的中断处理方式。
[0093] 从集群角色切换方法还可以包括:在检测到集群角色切换过程中断的情况下,比较节点映射存储区的数据与节点映射反转存储区的数据,从反转中断位置处继续执行节点映射关系数据的反转;以及检查节点映射关系反转数据向第一集群的传输进度,从传输中断位置处继续传输节点映射关系反转数据。此种方式可以表示为断点续传的中断处理方式。
[0094] 在执行角色切换的过程中,每一步执行操作,都有可能出现错误,或异常中断。角色切换异常处理的核心原则,是如何确保原先的从集群(即新的主集群)上的inomap RBD不丢失,以及新的从集群(即,原先的主集群)在本端能完整重建inomap RBD。
[0095] 为了保证上述inomap RBD数据的完整性,在根据本公开一些实施例的集群角色切换方法中,从集群在自主集群接收到inomap invert data成功保持的反馈信息之后才确认角色切换已经完成,并且,在确认角色切换已经完成之后才移除inomap RBD和inomap invert RBD。
[0096] 此外,为了保证角色切换不受异常中断的影响,根据本公开实施例的角色切换方法还包括上述完整重做和断点续传的中断处理方式。
[0097] 在完整重做的中断处理方式中,从集群不关心inomap数据反转是否已经执行完成。当中断结束之后,从集群再次重新执行角色切换,即,从第一条inomap记录开始重头执行反转操作,即使所有的inomap反转数据已经记录到inomap invert RBD。此外,从集群也不关心inomap invert RBD数据是否已经完成传输至主集群。当中断结束之后,从集群再次重新执行角色切换,从inomap invert RBD第一条记录开始重新发送反转数据至主集群,即使所有的反转数据已经发送到主集群并成功保存。
[0098] 在断点续传的中断处理方式中,当中断结束之后,从集群再次执行角色切换时,将对比inomap RBD与inomap invert RBD中的内容,从已经反转的最后一条inomap记录处继续执行反转处理。此外,从集群还将持久化inomap invert RBD数据传输进度,当中断结束之后从集群再次执行角色切换时,从断点记录处继续传输反转数据。
[0099] 此外,在根据本公开的其他实施例中,角色切换的发起端(例如,文件系统的管理者)还可以在指令主从集群执行角色切换任务之前,先持久化本轮角色切换的主从对应关系,并将角色切换标志位置位,然后再发起角色切换操作。当中断结束之后,管理者可以根据主从对应关系的持久化记录,再次发起相同主从对应关系的角色切换请求,以避免由于上一轮未完成的角色切换操作,而导致的inomap RBD数据丢失问题。
[0100] 通过以上描述的方式,根据本公开实施例的主从角色切换方法能够实现诸如inomap RBD中的重要数据不丢失,从而提供稳定的文件服务业务,用户可以不受主从集群角色切换过程的影响,持续性地进行文件访问。
[0101] 以上结合图2描述了在文件系统中,从集群进行角色切换(Slave to Master)所进行的步骤。以上结合图2描述的根据本公开实施例的从集群角色切换方法,能够将第二集群的角色从第二集群角色(从角色)切换为第一集群角色(主集群),以作为新的主集群来进行后续操作。
[0102] 为了更详细的理解本公开的方案,接下来将结合附图描述根据本公开一些实施例的角色切换流程图。可以理解的是,以下流程描述仅是示例性的,根据本公开实施例的方法的执行不仅限于流程图中所示出的顺序步骤。
[0103] 图3示出了根据本公开一些实施例的主集群同步角色切换执行流程图。如图3所示,发起端首先可以向主集群发起角色切换,即指示主集群切换为从集群。接着,主集群(Master)可以进行状态合法性检查,作为示例,可以检查当前是否正在执行远程复制任务,如果正在进行复制,例如可以停止远程复制,此外,状态合法性检查还可以包括确认主从目录处于分裂状态,避免启动定时同步任务。接着,主集群可以配置与要切换至的从角色相关的存储区,包括移除复制任务控制存储区(remove control RBD)、创建元数据差异存储区(rebuild metadiff RBD)以及创建节点映射存储区(rebuild inomap RBD)。在配置完成之后,主集群可以向对端发送网络请求以执行角色切换,即,主集群向文件系统中的从集群发送切换请求(Switch role to Master)。主集群在成功保存从集群发送的inomap invert数据之后确认角色切换已经完成,并将本端角色设置为从角色(Slave)。
[0104] 参考图3,从集群在接收到该切换请求之后,也将进行类似的状态合法性检查。接着,从集群可以配置与要切换至的主角色相关的存储区,包括创建复制任务控制存储区(rebuild control RBD)、创建元数据差异存储区(rebuild metadiff RBD)以及创建节点映射反转存储区(rebuild inomap invert RBD)。在完成RBD配置之后,从集群将对其自身的inomap RBD中的节点映射关系数据进行反转,并将反转后的数据保存到创建的inomap invert RBD中。此后,从集群将inomap invert RBD中的数据发送至对端(即,主集群),并进行一些必要的环境清理操作。在确认数据已经保存在主集群中的inomap RBD之后,从集群将本端角色设置为主角色(Master),最后,从集群删除inomap RBD以及inomap invert RBD。
[0105] 此外,如图3所示出的,主集群与从集群在进行角色切换的过程中,还可以不断地向角色切换发起端发送当前状态反馈信息,以告知发起端当前的角色切换执行进度,这可以使得发起端能够基于这些反馈信息获取切换进度以及发生切换故障的阶段等内容。
[0106] 图4示出了根据本公开一些实施例的从集群同步角色切换执行流程图,相比于图3,在图4所示的方法中,角色切换发起端将切换请求首先发送至从集群(Slave),即,首先由从集群开始进行角色切换,例如进行状态合法性检查、配置RBD等操作,并由从集群向主集群发送角色切换请求,以使得主集群进行角色切换。图4中示出的其他过程可以参考图3的描述,在此不再重复。
[0107] 图5示出了根据本公开一些实施例的主集群异步角色切换执行流程图,相比于图3,在图5中,角色切换发起端在向主集群发送切换请求之后,主集群首先进行状态合法性检查,确认当前是否能够进行角色切换。接着,主集群设置角色切换标志位(例如,通过设置pair),之后便开始后台进行角色切换流程。通过设置该标志位,发起端可以在后台进程中监听角色切换标志位、检查标志位是否被重置以确认角色切换是否完成。此外,发起端还可以在后台检查主集群或从集群发送的错误码,以检查角色切换错误信息,以记录执行结果。
主集群与从集群执行的后续角色切换步骤可以参照图3的描述,在此不再重复。
[0108] 图6A示出了根据本公开一些实施例的执行角色切换出现异常中断的示意图,在图6A的示例中,发起端持久化主从切换数据,即维护主从集群的角色切换记录,以使得在出现中断的情形下,能够通过查找记录获取集群切换状态。如图6A所示出的,可以通过设置切换标志符(set switch_role=True)的值来记录集群切换状态,例如,在标志符为True时表示当前时将主集群切换为从集群(Master to Slave),在标志符为False时表示当前时将从集群切换为主集群(Slave to Master)。相比于图3的角色切换过程,主集群在收到角色切换请求之后首先检查是否存储inomap RBD,在不存在的情形下再进行RBD配置。类似地,从集群在接收到切换请求之后首先检查是否存在inomap invert RBD,在不存在的情形下再进行RBD配置。进一步地,在图6A示出的切换流程中还示出有出现角色切换异常中断的情形,例如,数据传输错误远端异常下线,即,图6A中的从集群在向主集群传输inomap invert RBD数据的过程中由于异常原因下线,暂停传输。
[0109] 接着,图6B示出了根据本公开一些实施例的执行角色切换出现异常中断的另一示意图。图6B中示出了在出现了图6A所示的异常中断之后,从端(从集群)再次上线,继续进行角色切换的执行流程。在从集群上线之后,发起端获取主从切换持久化数据,例如,通过设置切换标志符(set switch_role=True)的值来记录集群切换状态。接着,发起者向主集群发送切换请求,类似于图6A,主集群首先检查是否存在inomap RBD,在存在的情形下,检查inomap RBD是否存在数据。由于在图6A中已经进行了部分的角色切换流程,在数据传输过程中由于异常原因中断了传输过程,由此主集群当前的inomap RBD中存在部分数据。接着,主集群向从集群发送切换请求,由从集群检查inomap invert RBD传输进度,从断点处继续传输数据。基于图6A和图6B描述了在执行角色切换的过程中出现中断,在异常情形消失之后从记录的中断位置处继续执行角色切换的实现方式。
[0110] 本公开提供了一种文件系统中的集群角色切换方法,该文件系统中包括实现文件访问任务的主集群,以及作为备份的从集群,即,在主集群和从集群之群发生间提供远程复制备份功能。在主集故障或者进行定期检查等情况下,将主集群的角色切换为从集群,以及将从集群的角色切换为主集群,从而实现由之前的从集群作为新的主集群继续提供文件处理业务,由之前的主集群作为新的从集群提供备份功能,以保证文件系统的服务稳定性,进一步地,利用根据本公开实施例的集群角色切换方法能够保证在角色切换过程中文件系统中的元数据以及数据的正确性和可用性。
[0111] 根据本公开的一些实施例,还提供了一种文件系统中的第一集群装置,作为示例,该第一集群装置可以是上文描述的文件系统中的主集群,即,具有第一集群角色。
[0112] 图7示出了根据本公开一些实施例的第一集群装置的示意性框图,下文将结合图7对其进行具体描述。
[0113] 如图7所示,第一集群装置1000可以包括接收单元1010、处理单元1020以及传输单元1030。根据本公开的一些实施例,接收单元1010被配置为接收从第一集群角色切换至第二集群角色的切换请求。处理单元1020被配置为响应于切换请求,配置与要切换至的第二集群角色相关的存储区。传输单元1030被配置为向具有第二集群角色的第二集群发送从第二集群角色切换至第一集群角色的切换请求。接着,处理单元1020还被配置为响应于确认角色切换已经完成,设置当前状态为第二集群角色。
[0114] 根据本公开的一些实施例,处理单元1020还被配置为在接收该切换请求之前,执行第一集群与第二集群之间的远程复制任务;以及在配置与要切换至的第二集群角色相关的存储区之前,确认停止第一集群与第二集群之间的远程复制任务,以及确认第一集群中的主从目录处于分裂状态。
[0115] 根据本公开的一些实施例,处理单元1020配置与要切换至的第二集群角色相关的存储区包括:创建节点映射存储区,其中,节点映射存储区用于存储第一集群与第二集群之间的目录和文件的节点映射关系数据,其中,节点映射关系数据用于执行第一集群与第二集群之间的远程复制任务。
[0116] 根据本公开的一些实施例,接收单元1010还被配置为从第二集群接收节点映射反转存储区的节点映射关系反转数据。根据本公开的一些实施例,处理单元1020还被配置为将接收的节点映射关系反转数据作为节点映射关系数据保存至节点映射存储区,其中,在确认节点映射关系反转数据全部保存至节点映射存储区的情况下,确认角色切换已经完成。
[0117] 根据本公开的一些实施例,处理单元1020配置与要切换至的第二集群角色相关的存储区还包括:移除复制任务控制存储区,其中,复制任务控制存储区用于存储第一集群与第二集群之间的远程复制任务的流程控制信息;以及创建元数据差异存储区,其中,元数据差异存储区用于存储第二集群的数据的最新快照与最近一次复制快照之间的快照差异。
[0118] 根据本公开的一些实施例,在接收切换请求之后,处理单元1020还被配置为:设置角色切换标志位,其中,角色切换标志位用于角色切换发起端后台监听角色切换进程,角色切换标志位为第一状态时表示第一集群正在进行角色切换过程,角色切换标志位为第二状态时表示第一集群的角色切换过程结束。
[0119] 根据本公开的一些实施例,还提供了一种文件系统中的第二集群装置,作为示例,该第二集群装置可以是上文描述的文件系统中的从集群,即,具有第二集群角色。
[0120] 图8示出了根据本公开一些实施例的第二集群装置的示意性框图,下文将结合图8对其进行具体描述。
[0121] 如图8所示,第二集群装置1100可以包括接收单元1110、处理单元1120以及传输单元1130。根据本公开的一些实施例,接收单元1110被配置为接收从第二集群角色切换至第一集群角色的切换请求。处理单元1120被配置为响应于切换请求,配置与要切换至的第一集群角色相关的存储区。传输单元1130被配置为向具有第一集群角色的第一集群发送从第一集群角色切换至第二集群角色的切换请求。接着,处理单元1120还被配置为响应于确认角色切换已经完成,设置当前状态为第一集群角色。
[0122] 根据本公开的一些实施例,处理单元1120还被配置为:在接收该切换请求之前,执行第一集群与第二集群之间的远程复制任务;以及在配置与要切换至的第一集群角色相关的存储区之前,确认停止第一集群与第二集群之间的远程复制任务,以及确认第一集群中的主从目录处于分裂状态。
[0123] 根据本公开的一些实施例,处理单元1120配置与要切换至的第一集群角色相关的存储区包括:创建节点映射反转存储区,其中,第二集群中包括有用于存储第一集群与第二集群之间的目录和文件的节点映射关系数据的节点映射存储区,其中,节点映射关系数据用于执行第一集群与第二集群之间的远程复制任务;对节点映射存储区中存储的节点映射关系数据进行反转,得到节点映射关系反转数据,并将节点映射关系反转数据存储至节点映射反转存储区。接着,传输单元1130还被配置为将节点映射反转存储区存储的节点映射关系反转数据发送至第一集群。
[0124] 根据本公开的一些实施例,接收单元1110还被配置为从第一集群接收节点映射关系反转数据成功保存的反馈信息,其中,响应于接收反馈信息,确认角色切换已经完成。
[0125] 根据本公开的一些实施例,处理单元1120还被配置为响应于确认角色切换已经完成,移除节点映射反转存储区以及节点映射存储区。
[0126] 根据本公开的一些实施例,处理单元1120配置与要切换至的第一集群角色相关的存储区包括:创建复制任务控制存储区,其中,复制任务控制存储区用于存储第一集群与第二集群之间的远程复制任务的流程控制信息;以及创建元数据差异存储区,其中,元数据差异存储区用于存储第二集群的数据的最新快照与最近一次复制快照之间的快照差异。
[0127] 根据本公开的一些实施例,在接收切换请求之后,处理单元1120还被配置为设置角色切换标志位,其中,角色切换标志位用于角色切换发起端后台监听角色切换进程,角色切换标志位为第一状态时表示第二集群正在进行角色切换过程,角色切换标志位为第二状态时表示第二集群的角色切换过程结束。
[0128] 根据本公开的一些实施例,处理单元1120还被配置为在检测到集群角色切换过程中断的情况下,重新配置与要切换至的第二集群角色相关的存储区,无论集群角色切换过程当前所处的状态。
[0129] 根据本公开的一些实施例,处理单元1120还被配置为:在检测到集群角色切换过程中断的情况下,比较节点映射存储区的数据与节点映射反转存储区的数据,从反转中断位置处继续执行节点映射关系数据的反转。接着,传输单元1130还被配置为检查节点映射关系反转数据向第一集群的传输进度,从传输中断位置处继续传输节点映射关系反转数据。
[0130] 关于根据本公开实施例的第一集群装置1000进行角色切换所涉及的具体实现过程,可以参照以上结合图1描述的集群角色切换方法,在此不再重复描述。类似地,关于根据本公开实施例的第二集群装置1100进行角色切换所涉及的具体实现过程,可以参照以上结合图2描述的集群角色切换方法,在此不再重复描述。利用本公开实施例的第一集群装置以及第二集群装置能够进行类似地集群角色切换过程并实现相似的技术效果。
[0131] 本公开除了提供上述文件系统中的集群角色切换方法及装置之外,还提供了文件系统中的集群设备以及介质。下面将结合附图进行说明。上述针对集群角色切换方法及装置的描述同样适用于下文将要描述的集群设备以及介质,除非另有明确说明。
[0132] 根据本公开的又一方面,提供了一种文件系统中的集群设备。图9示出了根据本公开实施例的集群设备的示意性框图。
[0133] 如图9所示,集群设备2000可以包括处理器2010以及存储器2020。根据本公开实施例,存储器2020中存储有可执行指令,该可执行指令当由处理器2010运行时,可以执行如上所述的集群角色切换方法。
[0134] 处理器2010可以根据存储在存储器2020中的程序执行各种动作和处理。具体地,处理器2010可以是一种集成电路,具有信号处理能力。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。例如,此处的处理器可以是指能够实施分布式文件系统的设备。
[0135] 存储器2020存储有计算机可执行指令,该指令在被处理器2010执行时能够促使处理器实施根据本公开一些实施例的集群角色切换方法。存储器2020可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。应注意,本文描述的存储器可以是任何适合类型的存储器。作为示例,通过执行存储器2020中的计算机可执行指令,处理器能够实现用于文件系统中的集群角色切换方法,例如,以上结合附图描述的集群角色切换方法的步骤。
[0136] 根据本公开实施例的集群角色切换方法或者装置也可以借助于如图10所示的示例性计算设备3000的架构来实现。如图10所示,计算设备3000可以包括总线3010、一个或多个中央处理器(Central Processing Unit,CPU)3020、只读存储器(ROM)3030、随机存取存储器(RAM)3040、连接到网络的通信端口3050、输入/输出组件3060、硬盘3070等。计算设备3000中的存储设备,例如ROM 3030或硬盘3070可以存储本公开提供的方法的处理和/或通信所需使用的各种数据或文件以及CPU所执行的程序指令。计算设备3000还可以包括用户界面3080。当然,图10所示的架构只是示例性的,在实现不同的设备时,根据实际需要,可以省略图10示出的计算设备中的一个或多个部件。
[0137] 根据本公开的又一方面,还提供了一种非暂时性计算机可读存储介质。图11示出了根据本公开实施例的存储介质的示意图。
[0138] 如图11所示,计算机可读存储介质4000上存储有计算机可读指令4010。当计算机可读指令4010由处理器运行时,可以执行参照以上附图描述的集群角色切换方法。计算机可读存储介质包括但不限于易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。例如,计算机可读存储介质4000可以连接于诸如计算机等的计算设备,接着,在计算设备运行计算机可读存储介质4000上存储的计算机可读指令4010的情况下,可以进行如上所描述的根据本公开实施例提供的集群角色切换方法。
[0139] 综上,本公开提供了一种文件系统中的集群角色切换方法、装置、设备及介质。该文件系统中包括实现文件访问任务的主集群,以及作为备份的从集群,即,在主集群和从集群之群发生间提供远程复制备份功能。在主集故障或者进行定期检查等情况下,将主集群的角色切换为从集群,以及将从集群的角色切换为主集群,从而实现由之前的从集群作为新的主集群继续提供文件处理业务,由之前的主集群作为新的从集群提供备份功能,以保证文件系统的服务稳定性,进一步地,利用根据本公开实施例的集群角色切换方法、装置、设备及介质能够保证在角色切换过程中文件系统中的元数据以及数据的正确性和可用性。
[0140] 本领域技术人员能够理解,本公开所披露的内容可以出现多种变型和改进。例如,以上所描述的各种设备或组件可以通过硬件实现,也可以通过软件、固件、或者三者中的一些或全部的组合实现。
[0141] 此外,虽然本公开对根据本公开的实施例的系统中的某些单元做出了各种引用,然而,任何数量的不同单元可以被使用并运行在客户端和/或服务器上。单元仅是说明性的,并且系统和方法的不同方面可以使用不同单元。
[0142] 本公开中使用了流程图用来说明根据本公开的实施例的方法的步骤。应当理解的是,前面或后面的步骤不一定按照顺序来精确的进行。相反,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中。
[0143] 本领域普通技术人员可以理解上述方法中的全部或部分的步骤可通过计算机程序来指令相关硬件完成,程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本公开并不限制于任何特定形式的硬件和软件的结合。
[0144] 除非另有定义,这里使用的所有术语具有与本公开所属领域的普通技术人员共同理解的相同含义。还应当理解,诸如在通常字典里定义的那些术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。
[0145] 以上是对本公开的说明,而不应被认为是对其的限制。尽管描述了本公开的若干示例性实施例,但本领域技术人员将容易地理解,在不背离本公开的新颖教学和优点的前提下可以对示例性实施例进行许多修改。因此,所有这些修改都意图包含在权利要求书所限定的本公开范围内。应当理解,上面是对本公开的说明,而不应被认为是限于所公开的特定实施例,并且对所公开的实施例以及其他实施例的修改意图包含在所附权利要求书的范围内。本公开由权利要求书及其等效物限定。