一种双机存储系统及方法转让专利

申请号 : CN201610692191.1

文献号 : CN106325768B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 万胜刚朱铭方俊涛

申请人 : 华中科技大学

摘要 :

本发明公开了一种双机存储系统及方法。所述系统的管理节点由第一和第二管理节点组成,所述第一和第二管理节点互为镜像,用于存储元数据信息以及数据块版本信息,并监听客户端请求,根据客户端请求读取数据提供给客户端。所述方法,包括读操作、写操作和同步操作。本发明提出的一种双机存储系统及方法,相对与现有的三个以上管理节点,本发明框架结构简单,不再依靠额外的设备来维持数据一致性。双机系统中的两个管理节点是完全独立的。当一个管理节点失效时,另外一个管理节点可以继续对外提供有限的读写服务,可避免管理节点的单点故障问题,保证了存储系统的可靠性,提高了系统的可用性。

权利要求 :

1.一种双机存储系统,其特征在于,所述双机存储系统的管理节点由第一和第二管理节点组成,所述第一和第二管理节点互为镜像,用于存储元数据信息以及数据块版本信息,并监听客户端请求,根据客户端请求读取数据提供给客户端;

所述版本信息包括本地数据版本号和异地数据版本号,所述本地数据版本号为第一或第二管理节点上数据块本地保存版本的对应编号;所述异地数据版本号为第一或第二管理节点上数据块在相对的外部管理节点即第二或第一管理节点上保存版本的对应编号;

所述本地数据版本号可能值为“0”和“-1”,其中“0”表示“本地数据块写操作成功”,“-

1”表示“本地数据块写操作失败”;异地数据版本号可能值为“0”、“-1”和“?”,其中“0”表示“接收到外部管理节点的写成功信息”,“-1”表示“接收到外部管理节点的写失败信息”,“?”表示“没有接收到外部管理节点的反馈报告”。

2.如权利要求1所述的双机存储系统,其特征在于,所述第一管理节点,还用于存储第二管理节点的数据块版本信息。

3.如权利要求1所述的双机存储系统,其特征在于,所述第二管理节点,还用于存储第一管理节点的数据块版本信息。

4.如权利要求1所述的双机存储系统,其特征在于,还包括用于在本地文件系统存储数据的第一和第二数据节点;所述第一数据节点用于向第一管理节点提供数据;所述第二数据节点用于向第二管理节点提供数据。

5.一种双机存储方法,其特征在于,包括以下步骤:

读操作:本地管理节点接收来自客户端的读请求,核对双方管理节点的数据块版本信息,判断是否需要数据同步;处理读请求后,根据读请求完成请求给客户端反馈报告;

写操作:本地管理节点接收来自客户端的写请求,核对双方管理节点的数据块版本信息,判断是否需要数据同步;处理写请求后,给客户端和外部管理节点反馈报告,并根据写请求完成情况和外部的反馈报告完成本地版本对的更新;

同步:每次数据块的读写操作之前都会核对双方管理节点的数据块版本信息,发现需要同步时,需要等待一次同步的完成后才能执行读写操作;

所述双方管理节点由第一和第二管理节点组成,其中一个为本地管理节点,另一个为相对的外部管理节点,所述第一和第二管理节点互为镜像,用于存储元数据信息以及数据块版本信息,并监听客户端请求,根据客户端请求读取数据提供给客户端;

所述数据块版本信息包括本地数据版本号和异地数据版本号,所述本地数据版本号为第一或第二管理节点上数据块本地保存版本的对应编号;所述异地数据版本号为第一或第二管理节点上数据块在相对的外部管理节点即第二或第一管理节点上保存版本的对应编号;

所述本地数据版本号可能值为“0”和“-1”,其中“0”表示“本地数据块写操作成功”,“-

1”表示“本地数据块写操作失败”;异地数据版本号可能值为“0”、“-1”和“?”,其中“0”表示“接收到外部管理节点的写成功信息”,“-1”表示“接收到外部管理节点的写失败信息”,“?”表示“没有接收到外部管理节点的反馈报告”。

说明书 :

一种双机存储系统及方法

技术领域

[0001] 本发明属于存储技术领域,更具体地,涉及一种双机存储系统及方法。

背景技术

[0002] 随着信息技术的飞速发展,数据也呈现爆炸性的增长趋势。现在很多应用领域对存储系统的容错性方面有着很高的要求,如金融、军事、工业界、航空等。在这些应用环境中,很多因素会对存储系统的容错性带来极大的威胁。一旦引起存储节点部分甚至整体失效,便会增加服务不可用甚至是数据丢失的风险。因此,提高存储系统的容错能力是一个很关键的问题。
[0003] 常见的存储系统,例如分布式存储系统中,其节点错误可分为两类,一类是管理节点失效,二是数据节点失效。而对存储系统的访问将不可避免的途经管理节点,加上管理节点存在单点故障问题,一旦管理节点失效,整个存储系统极可能陷入瘫痪,无法对外提供服务。对此,已有研究者提出高可用性方案来保证管理节点的容错能力,降低系统中的可靠性与可用性风险。
[0004] 现有的管理节点的容错技术主要是以下三种:
[0005] 第一种,元数据备份法。该方法的主要思想是管理节点将元数据信息保存到多个目录以达到容错的目的。通常的做法,选择一个本地目录、一个远程目录,这两个目录通过NFS进行共享。当管理节点发生故障时,启动一个备用机器的管理节点,加载远程目录中的元数据信息,提供服务。
[0006] 第二种,第二管理节点法。该方法的目的就是对文件系统内存中的元数据进行检查,在固定的一段时间或者当日志文件的大小达到了设定的大小时,就将日志文件记录的内容更新到元数据镜像文件中,从而避免日志文件无限制的增加。
[0007] 第三种,热备管理节点法。该方法提供了一个热备管理节点,它备份主管理节点的所有数据,随时可以顶替主节点功能。主管理节点包括响应客户端请求,备份数据节点数据等功能。这两个管理节点的元数据会保持一致,当主管理节点发生故障宕机时,热备管理节点切换状态且切换的时间很短,这就保证了系统可靠性。
[0008] 上述的第一种和第二种方法是基于管理节点重启恢复服务的方式,只是减少启动时间,并没有做到热备。上述的第三种方法虽然突破了重启限制,但其依赖于独立的NFS服务器来保障两个管理节点的元数据一致性,并且热备管理节点状态的切换需要人工介入。

发明内容

[0009] 本发明的目的在于提供一种双机存储系统和方法,在保证存储系统的可靠性并提高系统可用性的同时,维持双机系统的数据一致性。该方法在读写过程中依据双机数据版本号的不同状态来区分数据的一致和不一致情况。
[0010] 为实现上述目的,按照本发明的一个方面,提供了一种双机存储系统,所述双击存储系统的管理节点由第一和第二管理节点组成,所述第一和第二管理节点互为镜像,用于存储元数据信息以及数据块版本信息,并监听客户端请求,根据客户端请求读取数据提供给客户端。
[0011] 优选地,所述双机存储系统,其第一管理节点,还用于存储第二管理节点的数据块版本信息。
[0012] 优选地,所述双机存储系统,其第二管理节点,还用于存储第一管理节点的数据块版本信息。
[0013] 优选地,所述双机存储系统,其还包括用于在本地文件系统存储数据的第一和第二数据节点;所述第一数据节点用于向第一管理节点提供数据;所述第二数据节点用于向第二管理节点提供数据。
[0014] 优选地,所述双机存储系统,其版本信息包括本地数据版本号和异地数据版本号,所述本地数据块版本号为第一或第二管理节点上该数据块本地保存版本的对应编号;所述异地数据块版本号为第一或第二管理节点上该数据块在相对的外部管理节点即第二或第一管理节点上保存版本的对应编号。
[0015] 优选地,所述双机存储系统,其本地版本号可能值为“0”和“-1”,其中“0”表示“本地数据块写操作成功”,“-1”表示“本地数据块写操作失败”;“0”、“-1”和“?”,其中“0”表示“接收到外部管理节点的写成功信息”,“-1”表示“接收到外部管理节点的写失败信息”,“?”表示“没有接收到外部管理节点的反馈报告”。
[0016] 按照本发明的另一方面,提供了一种双机存储方法,包括以下步骤:
[0017] 读操作:本地管理节点接收来自客户端的读请求,核对双方管理节点的版本状态,判断是否需要数据同步。处理读请求后,根据读请求完成请求给客户端反馈报告。
[0018] 写操作:本地管理节点接收来自客户端的写请求,核对双方管理节点的版本对状态,判断是否需要数据同步。处理写请求后,给客户端和外部管理节点反馈报告,并根据写请求完成情况和外部的反馈报告完成本地版本对的更新。
[0019] 同步:每次数据块的读写操作之前都会核对双方管理节点的版本对的状态,发现需要同步时,需要等待一次同步的完成后才能执行读写操作。
[0020] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
[0021] 1、本发明提出的一种双机存储系统及方法,相对与现有的三个以上管理节点,本发明框架结构简单,不再依靠额外的设备来维持数据一致性。双机系统中的两个管理节点是完全独立的。当一个管理节点失效时,另外一个管理节点可以继续对外提供有限的读写服务,可避免管理节点的单点故障问题,保证了存储系统的可靠性,提高了系统的可用性。
[0022] 2、本发明提出的一种双机系统的管理方法,每次通过比较双机数据版本号的状态,来区分数据的一致和不一致情况,从而维持了双机系统的数据一致性。

附图说明

[0023] 图1是本发明实施例提供的双机存储系统的框架图;
[0024] 图2是本发明实施例提供的双机存储方法的写请求的流程图;其中,图2a、图2b和图2c分别为3种情况写操作的流程;
[0025] 图3是本发明实施例提供的双机存储方法读请求下本地管理节点的操作步骤。

具体实施方式

[0026] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0027] 本发明提供的双机存储系统,包括:
[0028] 第一和第二管理节点,所述第一和第二管理节点互为镜像,用于存储元数据信息以及数据块版本信息,并监听客户端请求,根据客户端请求读取数据提供给客户端;
[0029] 所述第一管理节点,还用于存储第二管理节点的数据块版本信息;
[0030] 所述第二管理节点,还用于存储第一管理节点的数据块版本信息;
[0031] 所述系统,还包括用于在本地文件系统存储数据的第一和第二数据节点;所述第一数据节点用于向第一管理节点提供数据;所述第二数据节点用于向第二管理节点提供数据。
[0032] 所述数据块版本信息为版本号,包括本地数据块版本号和异地数据块版本。所述本地数据块版本号为第一或第二管理节点上该数据块本地保存版本的对应编号;所述异地数据块版本号为第一或第二管理节点上该数据块在相对的外部管理节点即第二或第一管理节点上保存版本的对应编号。具体例如,数据块保存在数据节点A/B上的同时会在对应的管理节点A/B上记录着一对数值版本号,形如(vera,verb)。其中vera为本地数据块版本,表示本地数据块的版本信息,verb为异地数据块版本,表示同一数据块对应的外部管理节点的版本信息。vera可能出现两种值:“0”和“-1”,其中“0”表示“本地数据块写操作成功”,“-1”表示“本地数据块写操作失败”;verb可能出现三种值:“0”、“-1”和“?”,其中“0”表示“接收到外部管理节点的写成功信息”,“-1”表示“接收到外部管理节点的写失败信息”,“?”表示“没有接收到外部管理节点的反馈报告”。第一管理节点,节点A中记录形式为(Avera,Averb),第二管理节点,节点B中记录形式为(Bvera,Bverb)。每个数据块的版本号的初始状态为(0,0)。
[0033] 本发明提供的双机存储方法,包括以下步骤:
[0034] 读操作:本地管理节点接收来自客户端的读请求,核对双方管理节点的版本状态,判断是否需要数据同步。处理读请求后,根据读请求完成请求给客户端反馈报告。
[0035] 写操作:本地管理节点接收来自客户端的写请求,核对双方管理节点的版本对状态,判断是否需要数据同步。处理写请求后,给客户端和外部管理节点反馈报告,并根据写请求完成情况和外部的反馈报告完成本地版本对的更新。
[0036] 同步:每次数据块的读写操作之前都会核对双方管理节点的版本对的状态,发现需要同步时,需要等待一次同步的完成后才能执行读写操作。
[0037] 以下为实施例:
[0038] 如图1所示,为本发明所提供的双机存储系统的框架图。第一管理节点A和第二管理节点B的地位是完全对等的,负责元数据信息以及数据块版本信息进行管理和维护,监听与处理客户端的请求,管理节点接收彼此版本信息的反馈并处理。第一管理节点A和第二管理节点B分别负责管理对应的一个数据节点。数据节点A和数据节点B负责将数据块存储在本地文件系统中。
[0039] 两个管理节点同时接收并处理用户的请求,这样可以有效地避免单点故障问题。在此情况下,会因多结点而产生数据不一致的问题。本发明提供了一种双机存储方法,包括:
[0040] (1)版本号初始化步骤:数据块保存在数据节点A/B上的同时会在对应的管理节点A/B上记录着一对数值版本号,形如(vera,verb),其中vera表示本地数据块的版本信息,verb表示同一数据块对应的外部管理节点的版本信息。管理节点A中记录形式为(Avera,Averb),管理节点B中记录形式为(Bvera,Bverb)。每个数据块的版本号的初始状态为(0,0)。
[0041] (2)版本号修改步骤:每一次执行数据块的写操作请求,本地管理节点会监听外部管理节点的写操作反馈报告,同时处理写操作请求,完成后会给客户端和外部管理节点反馈报告。以管理节点A的版本对(Avera,Averb)为例,本地数据块写操作成功后,Avera会被置为“0”,否则被置为“-1;Averb可能出现三种值:“0”、“-1”和“?”,其中“0”表示“接收到外部管理节点的写成功信息”,“-1”表示“接收到外部管理节点的写失败信息”,“?”表示“没有接收到外部管理节点的反馈报告”。
[0042] (3)数据同步步骤:每次数据块的读写操作之前都会核对双方管理节点的版本对的状态,发现需要同步时,需要等待一次同步的完成后才能执行读写操作。
[0043] (4)写请求下本地管理节点的操作步骤:本地管理节点接收来自客户端的写请求,核对双方管理节点的版本对状态,判断是否需要数据同步。处理写请求后,给客户端和外部管理节点反馈报告,并根据写请求完成情况和外部的反馈报告完成本地版本对的更新。
[0044] (5)读请求下本地管理节点的操作步骤:本地管理节点接收来自客户端的读请求,核对双方管理节点的版本对状态,判断是否需要数据同步。处理读请求后,根据读请求完成情况给客户端反馈报告。
[0045] 其中,步骤(1)在接收到新数据块的写请求时运行。步骤(2)在每次数据块的写操作时运行。当数据不一致需要同步时,运行步骤(3)。
[0046] 进一步,如图2所示,所述步骤(4)具体包括:
[0047] (4.1)收到来自客户端的写请求,核对双方管理节点的版本对状态,根据同一数据块的两个版本对状态作出判断,如果不需要同步,进入步骤(4.5);如果需要本地同步,进入步骤(4.2);如果需要外部同步,进入步骤(4.3);否则,进入步骤(4.4);
[0048] (4.2)本地需要同步,进行同步,同步成功进入步骤(4.6);否则进入步骤(4.7);
[0049] (4.3)等待外部同步完成,进入步骤(4.5);
[0050] (4.4)确认版本号发现该数据块无效,不执行写操作,给客户端反馈报告;
[0051] (4.5)执行写操作,接收外部报告,并根据写请求完成情况和外部的反馈报告完成本地版本对的更新。
[0052] (4.6)本地版本对更改为(0,0),执行写操作,接收外部报告,并根据写请求完成情况和外部的反馈报告完成本地版本对的更新;
[0053] (4.7)本地版本对更改为(-1,0),不执行写操作但接收外部管理节点的反馈报告,根据外部的反馈报告完成本地版本对的更新。
[0054] 进一步,如图3所示,所述步骤(5)具体包括:
[0055] (5.1)收到来自客户端的读请求,核对双方管理节点的版本对状态,根据同一数据块的两个版本对状态作出判断,如果不需要同步,进入步骤(5.5);如果需要本地同步,进入步骤(5.2);如果需要外部同步,进入步骤(5.3);否则,进入步骤(5.4);
[0056] (5.2)本地需要同步,进行同步,同步成功进入步骤(5.6);否则进入步骤(5.7);
[0057] (5.3)等待外部同步完成,进入步骤(5.5);
[0058] (5.4)确认版本号发现该数据块无效,不执行读操作,给客户端反馈报告;
[0059] (5.5)执行读操作;
[0060] (5.6)本地版本对更改为(0,0),执行读操作;
[0061] (5.7)本地版本对更改为(-1,0),不执行读操作,给客户端反馈报告。
[0062] 本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。