一种用数据日志提高分布式存储系统可用性的方法

文档序号:7775710阅读:172来源:国知局
一种用数据日志提高分布式存储系统可用性的方法
【专利摘要】本发明提供了一种用数据日志提高分布式存储系统可用性的方法,该方法包括:在分布式存储系统中处理数据写请求并依据数据写请求生成数据日志;在从服务器离线又上线后,通过恢复其离线状态时缺失的数据日志来恢复其离线状态时缺失的数据;在主服务器离线时,通过数据日志来更快的生成一个新的主服务器。本发明提供的一种用数据日志提高分布式存储系统可用性的方法,使得分布式存储系统的可用性不受从服务器恢复的影响,即在从服务器恢复过程中主服务器仍然可以接收对数据修改的请求;同时使得分布式存储系统的可用性得到极大的提升。
【专利说明】一种用数据日志提高分布式存储系统可用性的方法
【技术领域】
[0001]本发明涉及分布式存储领域,特别是涉及一种用数据日志提高分布式存储系统可用性的方法。
【背景技术】
[0002]衡量存储系统性能有三个指标:可靠性(Reliability)、存储速度(IOPS)和可用性(Availability)。分布式存储系统为了保证数据的高可靠性,通常把写入存储系统的数据存储到多台独立的存储服务器(以后简称为服务器)上,这些存放同一个数据的服务器叫做服务器组(server group)。为了保证分布式存储系统的高存储效率即读写速度,服务器组中的服务器分为主服务器(master)和从服务器(slave)。数据首先写入主服务器,主服务器将数据写到自己的磁盘,还负责将数据传输到从服务器。从服务器将数据写入自己的磁盘,并响应主服务器它的写成功,只有主服务器的数据写成功同时它收到了大多数从服务器的成功响应,数据的写才成功。因为分布式存储系统中主服务器有完整的数据,所以分布式存储系统中数据直接从主服务器中读取。
[0003]尽管这种分布式存储系统的可靠性高、读写速度快,但可用性不高,所谓可用性是指分布式存储系统的读写是否能正常进行。在分布式环境中,由于网络不稳定和服务器超负荷运行(overloaded)等诸多因素的影响,存储服务器在离线状态(offline)和在线状态(online)的反复跳转发生得非常频繁。因为在分布式存储系统中,数据的读写必须通过主服务器完成,所以主服务器的离线将直接导致整个分布式存储系统的不可用(unavailable),而且在从服务器离线期间写入服务器组的数据不会出现在离线从服务器上。
[0004]现有分布式存储系统中,当离线从服务器重新上线回到服务器组,主服务器需要将未曾写入离线从服务器的数据恢复到从服务器上,以确保数据的完整性。由于分布式存储系统不知道哪些数据是在从服务器离线期间写入的,哪些不是。因此,主服务器需要将其全部数据写回到从服务器上。然而在从服务器数据恢复期间,新的数据不允许写入分布式存储系统中,否则从服务器的恢复过程将一直持续下去。因此,在现有的分布式存储系统中,从服务器的离线将导致数据无法写入分布式存储系统,即此分布式存储系统变为只读系统(read-only),如此也导致了分布式存储系统的可用性不高。
[0005]当主服务器离线后,分布式存储系统的读写被暂停,此分布式存储系统变为不可用。现有的分布式存储系统是通过比较所有从服务器中的所有的数据,生成一份完整的数据,然后产生一个新的主服务器。然而,这个过程费时很长,因此进一步导致了分布式存储系统的可用性不高。

【发明内容】

[0006]本发明所要解决的技术问题是上述现有技术中分布式存储系统可用性不高的问题。为解决上述技术问题,本发明是通过以下技术方案来实现的。[0007]—种用数据日志提高分布式存储系统可用性的方法,包括以下内容:
①分布式存储系统处理数据写请求并生成数据日志,包括以下步骤:
1)数据写请求发送给服务器组中的主服务器;若主服务器离线,返回处理数据写请求失败;若主服务器在线,执行步骤2);
2)主服务器根据接收到的数据写请求的内容生成对应的数据日志,所述的数据日志包括数据日志的Id、数据地址和数据;所述的主服务器存放数据日志的逻辑结构为队列,主服务器数据日志保存的位置包括但不限于其磁盘、缓存,所述的队列从头到尾对应的数据日志的Id单调增长;所述的队列上设有一指针,且所述的队列队头和指针之间的数据日志,包括指针所指向的数据日志都是完整的;
3)主服务器根据数据地址,将数据写入其存储中的对应位置,主服务器中数据写入的位置包括但不限于其磁盘、缓存;
4)主服务器将步骤2)中生成的数据日志插入到数据日志队列队尾,然后移动其数据日志队列的指针并指向队尾;
5)主服务器将步骤2)中生成的数据日志传输给服务器组中的每个从服务器,并等待从服务器向其发送写成功的响应;
6 )若从服务器离线,其无法收到主服务器传输的数据日志,也无法给主服务器响应;否则从服务器接收主服务器传输的数据日志,并根据接收的数据日志中的数据地址,将数据写入其存储中的对应位置,从服务器中数据写入的位置包括但不限于其磁盘、缓存,所述的从服务器存放数据日志的逻辑结构为队列,数据日志保存的位置包括但不限于其磁盘、缓存,所述的队列从头到尾对应的数据日志的Id单调增长;所述的队列上设有一指针,且所述的队列队头和指针之间的数据日志,包括指针所指向的数据日志都是完整的;从服务器将接收到的数据日志插入其数据日志队列队尾并向主服务器返回写成功的响应;
7)若主服务器在用户设定的时间内未收到大于或等于N/2个从服务器写成功的响应,主服务器返回处理数据写请求失败,处理数据写请求结束;否则主服务器返回处理数据写请求成功,处理数据写请求结束;所述的N是数据服务器组中所有从服务器的数目,所述的用户设定的时间为小于5分钟;
上述步骤2)中主服务器根据接收到的数据写请求的内容生成对应的数据日志的方法为:主服务器选取一个新的数据日志Id,使其比上一个数据日志的Id大,然后将接收的数据写请求中的数据和数据地址复制到数据日志中的对应位置。
[0008]上述步骤3)中主服务器数据的写入、步骤4)中数据日志插入到数据日志队列队尾、步骤5)中主服务器将数据日志传输给所有从服务器的进行方式包括但不限于并发方式。
[0009]②分布式存储系统中主服务器离线,通过数据日志恢复主服务器,包括以下步骤:
I)在从服务器间选取一个作为主服务器的候选服务器,其他从服务器将各自的指针、指针所指数据日志以及比指针所指数据日志大的数据日志传输到侯选服务器,候选服务器依据Id对接收的数据日志进行排序并按从小到大的顺序对其逐个进行分析,分析出有效数据日志和无效数据日志,包括:
情况一,若被分析的数据日志的Id比候选服务器的指针所指的数据日志的Id小,则此数据日志已存在于候选服务器的数据日志队列中,此数据日志是无效数据日志;
情况二,若被分析的数据日志的Id比候选服务器的指针所指的数据日志的Id大,但比任何一个从服务器的指针所指的数据日志的Id小,包括比任何一个从服务器的指针所指的数据日志的Id小,则这个数据日志是有效数据日志;
情况三,若被分析的数据日志的Id比任何一个从服务器的指针所指的数据日志的Id大,且大于或等于M/2个的从服务器有这个数据日志,M是数据服务器组所有服务器的数目,则这个数据日志是有效数据;
情况四,若被分析的数据日志的Id比任何一个从服务器的指针所指的数据日志的Id大,且小于M/2个的从服务器有这个数据日志,M是数据服务器组所有服务器的数目,则这个数据日志是无效数据日志;
2)将步骤I)中的所有效数据日志插入侯选服务器的数据日志队列中,忽略无效数据日
志;
3)候选服务器成为主服务器并通知所有从服务器;分布式存储系统中离线的主服务器恢复过程结束;
上述步骤I)中候选服务器的选取方法包括但不限于随机选取从服务器、选取指针所指向数据日志队列Id最大的从服务器。
[0010]上述步骤2)中有效数据日志插入侯选服务器的数据日志队列的加入方法为包括但不限于插入排序法。
[0011]③分布式存储系统中从服务器离线后回到在线状态,通过数据日志恢复从服务器缺失数据,包括以下步骤:
1)离线后重新上线的从服务器向主服务器发送数据恢复请求;
2)主服务器收到从服务器的恢复请求后,向所述的从服务器返回同意恢复响应;同时主服务器从此刻起向从服务器传送新数据日志,所述的新数据日志指从服务器变成在线状态后主服务器产生的数据日志;
3)从服务器收到主服务器的同意恢复响应;
4)从服务器将其指针及比其指针所指数据日志Id大的数据日志发送给主服务器;
5)主服务器将其数据日志与从服务器发送过来的数据日志Id列表进行分析,分析出从服务器在离线时缺失的数据日志,以及从服务器指针的新位置;所述的缺失日志指从服务器在离线状态期间主服务器产生的数据日志;
6)主服务器将步骤5)中分析出的从服务器缺失的数据日志和从服务器的指针的新位置传送给从服务器;
7)从服务器在接收到主服务器传送过来的从服务器缺失的数据日志后,将其插入到从服务器数据日志队列中的对应位置上,并将从服务器数据日志队列的指针移动到新位置;若所述的指针的新位置未超过从服务器接收到步骤2)中主服务器传送的新数据日志的第一个数据日志的位置,则回到步骤4)并执行;否则从服务器离线后回到在线状态,通过数据日志恢复从服务器缺失数据的过程结束。
[0012]上述步骤5)中分析从服务器离线时缺失的数据日志的方法为:从服务器发给主服务器的Id最小数据日志为Q,主服务器在其数据日志队列中选取一个比Q大的数据日志P,主服务器对其数据日志队列中所有大于Q但小于P的数据日志逐个分析,若被分析的数据日志的Id不在从服务器发过来的数据日志Id列表中,此数据日志是从服务器缺失的数据日志,否则忽略这个日志;
P的选取方法包括但不限于使得Q和P之间的所有日志大小之和不超过设定的值,此设定的值可根据实际需求选取;此处仅举例设为1MB,所举例的IMB并不代表本发明的保护范围仅为1MB,任何在本发明的方法之内的选值都是本发明方法的保护范围;
步骤5)中从服务器从指针的新位置为主服务器返回的指针的位置。
[0013]步骤7)中从服务器将接收到的缺失数据日志插入其数据日志队列的插入方法是根据其接收到缺失的数据日志Id的大小,使用包括但不限于插入排序法。
[0014]上述的一种用数据日志提高分布式存储系统可用性的方法中,从服务器指针的移动和从服务器数据日志的写入的进行方式包括但不限于并发方式。
[0015]本发明具有以下有益效果:
其一,使用本发明的分布式存储系统的可用性不受从服务器恢复的影响,即在从服务器恢复过程中主服务器仍然可以接收对数据修改的请求。
[0016]其二,使用本发明的分布式存储系统的可用性得到极大的提升。使用本发明的分布式存储系统的不可用时间与不使用本方法的分布式存储系统相比至少减少60000倍,具体比较方式如下:
不使用本方法的分布式存储系统,以下简称普通系统,在两种情况下普通系统不可用:一是在主服务器离线,新的主服务器产生之前普通系统不可用;二是在主服务器恢复任何一个曾离线的从服务器期间普通系统不可用。使用本方法的分布式存储系统,包括任何服务器上的分布式存储系统,只有在其主服务器离线,新主服务器产生之前其才会不可用。
[0017]假设分布式存储系统中每个服务器的离线率是t,服务器组共有η个从服务器,一个主服务器,每个服务器的上所有数据的大小为D字节,所有比指针所指的数据日志Id大的数据日志的大小为d字节,数据传输率为k字节/秒。则普通系统的不可用的时间为Ul=(t*l)*(n*D/k) + (t*n)*(D/k),其中(t*l)*(n*D/k)表示主服务器离线,新的主服务器产生之前系统不可用时间,(t*n)*(D/k)表示主服务器恢复任何一个离线从服务器期间系统不可用总和。
[0018]而使用本方法后分布式存储系统的不可用时间为U2=(t*l)* (n*d/k),其中(t*l)表示主服务器离线时系统不可用,(n*d/k)表示传输η个从服务器比指针所指日志大的日志的时间。和普通系统比较,采用新方法可以减少系统不可用时间Ul/U2=2D/d。假设整个数据的大小是3TB,通常比指针所指日志大的日志的大小为100MB,即D=3TB,d=100MB。则在这种情况下,使用本发明方法的分布式存储系统比普通系统的不可用时间减少2D/d=60000倍。
【专利附图】

【附图说明】
[0019]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性附图及其说明用于解释本发明,并不构成对本发明的不当限定。显而易见,对本领域普通技术人员而言,在不付出创造性的前提下,还可以依据这些附图得到其他附图。
[0020]图1是分布式存储系统结构示意图;
图2是数据写请求的格式示意图; 图3是数据日志的格式示意图;
图4是分布式存储系统处理数据写请求步骤示意图;
图5是主服务器离线时恢复主服务器的步骤示意图;
图6是从服务器离线后上线恢复离线时数据的步骤示意图;
图7是主服务器数据日志队列格式示意图;
图8是从服务器在线时数据日志队列格式示意图;
图9是从服务器离线后重新上线,恢复其离线数据日志时的数据日志队列格式示意图。
【具体实施方式】
[0021]下面以实施例来说明一种用数据日志提高分布式存储系统可用性的方法。
[0022]实施例一
图1为分布式数据存储系统的结构示意图,如图所示,整个系统由客户机10,主服务器11,从服务器12组成。
[0023]该示意图为实施本发明所提供的一种用数据日志提高分布式存储系统可用性的方法的一个示例性系统,并非唯一的可用于实施本发明方法的系统架构,本领域内技术人员可以根据本章节中提供的分布式存储系统示意图和本发明方法的的【具体实施方式】,构造其他未实质性变换的系统。
[0024]图4为处理数据写请求步骤示意图,如图所示:
数据写请求发送给服务器组中的主服务器,所述的数据写请求的格式如图2所示,数据写请求由数据地址和数据组成;若主服务器离线,则返回处理数据写请求失败,处理数据写请求结束;若主服务器在线,则主服务器生成数据日志;主服务器生成的数据日志的格式如图3所示,数据日志由Id、数据地址和数据组成。
[0025]所述的主服务器存放数据日志的逻辑结构为队列,主服务器数据日志保存的位置包括但不限于其磁盘、缓存。图7是主服务器数据日志队列格式示意图,如图所示队列从头到尾对应的数据日志的Id单调增长;所述的队列上设有一指针,且所述的队列队头和指针之间的数据日志,包括指针所指向的数据日志都是完整的;主服务器根据数据地址,将数据写入其存储中的对应位置,主服务器中数据写入的位置包括但不限于其磁盘、缓存;主服务器将其生成的数据日志插入到数据日志队列队尾,然后移动其数据日志队列的指针并指向队尾;
主服务器将其生成的数据日志传输给服务器组中的每个从服务器,并等待从服务器向其发送写成功的响应;
若从服务器离线,其无法收到主服务器传输的数据日志,也无法给主服务器响应;否则从服务器接收主服务器传输的数据日志,并根据接收的数据日志中的数据地址将数据写入其存储中的对应位置,从服务器中数据写入的位置包括但不限于其磁盘、缓存,所述的从服务器存放数据日志的逻辑结构为队列,数据日志保存的位置包括但不限于其磁盘、缓存,所述的队列从头到尾对应的数据日志的Id单调增长;所述的队列上设有一指针,且所述的队列队头和指针之间的数据日志,包括指针所指向的数据日志都是完整的;从服务器将接收到的数据日志插入其数据日志队列队尾并向主服务器返回写成功的响应; 若主服务器在用户设定的时间内未收到大于或等于N/2个从服务器写成功的响应,主服务器返回处理数据写请求失败,处理数据写请求结束,N是数据服务器组中所有从服务器的数目,所述的用户设定的时间为小于5分钟;否则返回处理数据写请求成功,处理数据写请求结束;
上述实施例中主服务器根据接收到的数据写请求的内容生成对应的数据日志的方法为:主服务器选取一个新的数据日志Id,使其比上一个数据日志的Id大,然后将接收的数据写请求中的数据和数据地址复制到数据日志中的对应位置。
[0026]上述实施例中主服务器数据的写入、主服务器将数据日志插入到数据日志队列队尾、主服务器将数据日志传输给所有的从服务器的进行方式包括但不限于并发方式。
[0027]实施例二
图5是主服务器离线时恢复主服务器的步骤示意图,如图所示分布式存储系统中主服务器离线,通过数据日志恢复主服务器,包括:
在从服务器间选取一个作为主服务器的候选服务器,其他从服务器将各自的指针、指针所指数据日志以及比指针所指数据日志大的数据日志传输到侯选服务器,候选服务器依据Id对接收的数据日志进行排序并按从小到大的顺序对其逐个进行分析,分析出有效数据日志和无效数据日志,包括:
情况一,若被分析的数据日志的Id比候选服务器的指针所指的数据日志的Id小,则此数据日志已存在于候选服务器的数据日志队列中,此数据日志是无效数据日志;
情况二,若被分析的数据日志的Id比候选服务器的指针所指的数据日志的Id大,但比任何一个从服务器的指针所指的数据日志的Id小,包括比任何一个从服务器的指针所指的数据日志的Id小,则这个数据日志是有效数据日志;
情况三,若被分析的数据日志的Id比任何一个从服务器的指针所指的数据日志的Id大,且大于或等于M/2个的从服务器有这个数据日志,M是数据服务器组所有服务器的数目,则这个数据日志是有效数据;
情况四,若被分析的数据日志的Id比任何一个从服务器的指针所指的数据日志的Id大,且小于M/2个的从服务器有这个数据日志,M是数据服务器组所有服务器的数目,则这个数据日志是无效数据日志;
将所有效数据日志插入侯选服务器的数据日志队列中,忽略无效数据日志;候选服务器成为主服务器并通知所有从服务器;分布式存储系统中离线的主服务器恢复过程结束;上述实施例中候选服务器的选取方法包括但不限于随机选取从服务器、选取指针所指向数据日志队列Id最大的从服务器。
[0028]上述实施例中有效数据日志插入侯选服务器的数据日志队列的加入方法为包括但不限于插入排序法。
[0029]实施例三
图6为从服务器离线后上线恢复离线时数据的步骤示意图。
[0030]离线后重新上线的从服务器向主服务器发送数据恢复请求;主服务器收到从服务器的恢复请求,向所述的从服务器返回同意恢复响应;同时主服务器从此刻起向从服务器传送新数据日志,所述的新数据日志指从服务器变成在线状态后主服务器产生的数据日志;从服务器收到主服务器的同意恢复响应; 从服务器将其指针及比其指针所指数据日志Id大的数据日志发送给主服务器;
主服务器接收到指针及数据日志;主服务器将其数据日志与从服务器发送过来的数据日志Id列表进行分析,分析出从服务器在离线时缺失的数据日志,以及从服务器指针的新位置;所述的缺失日志指从服务器在离线状态期间主服务器产生的数据日志;
主服务器将分析出的从服务器缺失的数据日志和从服务器的指针的新位置传送给从服务器;从服务器在接收到主服务器传送过来的从服务器缺失的数据日志后,将其插入到数据日志队列中的对应位置上,所述从服务器将接收到的缺失数据日志插入其数据日志队列的插入方法是根据其接收到缺失的数据日志Id的大小,使用包括但不限于插入排序法;将数据日志队列的指针移动到新位置,所述从服务器从指针的新位置为主服务器返回的指针的位置。
[0031]判断所述的指针的新位置是否超过从服务器接收到主服务器传送的新数据日志的第一个数据日志的位置;若未超过则回到从服务器发送其指针及比其指针所指数据日志Id大的数据日志并执行,否则从服务器上线后恢复离线时的数据过程结束。
[0032]上述实施例中分析从服务器离线时缺失的数据日志的方法为:从服务器发给主服务器的Id最小数据日志为Q,主服务器在其数据队列中选取一个比Q大的数据日志P,主服务器对其数据日志队列中所有大于Q但小于P的数据日志逐个分析,若被分析的数据日志的Id不在从服务器发过来的数据日志Id列表中,此数据日志是从服务器缺失的数据日志,否则忽略这个日志;
P的选取方法包括但不限于使得Q和P之间的所有日志大小之和不超过设定的值,此设定的值可根据实际需求选取,此处仅举例设为1MB,所举例的IMB并不代表本发明的保护范围为1MB,任何在本发明的方法之内的选值都是本发明方法的保护范围;
实施例四
图8为从服务器在线时数据日志队列格式示意图。当从服务器在线,且无需要恢复的离线数据日志,从服务器将主服务器传送过来的数据日志以包括但不限于插入排序法插入到其数据日志队列中,并将从服务器指针移动到数据日志队列队尾。
[0033]图9为从服务器离线后重新上线,恢复离线数据日志时的数据日志队列格式示意图。当从服务器离线后又重新上线,从服务器接收主服务器发送的数据日志后,将这些数据日志按照接收到缺失的数据日志Id的大小,使用包括但不限于插入排序法插入到从服务器的数据日志队列中;主服务器将从服务器指针的新位置传送给从服务器,从服务器接收后将其指针移动到新位置,直到指针的新位置超过从服务器离线又上线后接收到的主服务器传送的第一个新数据日志的位置,从服务器恢复离线数据结束,并且将其指针移动到其数据日志队列队尾。
[0034]上述实施例一、实施例三和实施例四中从服务器指针的移动和从服务器数据日志的写入的进行方式包括但不限于并发方式。
[0035]以上所述实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述的【具体实施方式】对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述【具体实施方式】所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明技术方案的范围。
【权利要求】
1.一种用数据日志提高分布式存储系统可用性的方法,其特征在于:包括以下内容: ①分布式存储系统处理数据写请求并生成数据日志,包括以下步骤: 数据写请求发送给服务器组中的主服务器;若主服务器离线,则返回处理数据写请求失败;若主服务器在线,则执行步骤2); 主服务器根据接收到的数据写请求的内容生成对应的数据日志,所述的数据日志包括数据日志的Id、数据地址和数据;所述的主服务器存放数据日志的逻辑结构为队列,所述的队列从头到尾对应的数据日志的Id单调增长;所述的队列上设有一指针,且所述的队列队头和指针之间的数据日志,包括指针所指向的数据日志都是完整的; 主服务器根据数据地址,将数据写入其存储中的对应位置; 主服务器将步骤2)中生成的数据日志插入到数据日志队列队尾,然后移动其数据日志队列的指针并指向队尾; 主服务器将步骤2)中生成的数据日志传输给服务器组中的每个从服务器,并等待从服务器向其发送写成功的响应; 若从服务器离线,其无法收到主服务器传输的数据日志,也无法给主服务器响应;否则从服务器接收主服务器传输的数据日志,并根据接收的数据日志中的数据地址,将数据写入其存储中的对应位置,所述的从服务器存放数据日志的逻辑结构为队列,所述的队列从头到尾对应的数据日志的Id单调增长;所述的队列上设有一指针,且所述的队列队头和指针之间的数据日志,包括指针所指向的数据日志都是完整的;从服务器将接收到的数据日志插入其数据日志队列队尾并向主服务器返回写成功的响应; 若主服务器在用户设定的时间内未收到大于或等于N/2个从服务器写成功的响应,主服务器返回处理数据写请求失败,处理数据写请求结束,N是数据服务器组中所有从服务器的数目,所述的用户设定的时间为小于5分钟;否则主服务器认为所述的数据写入成功,处理数据写请求结束; ②分布式存储系统中主服务器离线,通过数据日志恢复主服务器,包括以下步骤: 1)在从服务器间选取一个作为主服务器的候选服务器,其他从服务器将各自的指针、指针所指数据日志以及比指针所指数据日志大的数据日志传输到侯选服务器,候选服务器依据Id对接收的数据日志进行排序并按从小到大的顺序对其逐个进行分析,分析出有效数据日志和无效数据日志,包括: 情况一,若被分析的数据日志的Id比候选服务器的指针所指的数据日志的Id小,则此数据日志已存在于候选服务器的数据日志队列中,此数据日志是无效数据日志; 情况二,若被分析的数据日志的Id比候选服务器的指针所指的数据日志的Id大,但比任何一个从服务器的指针所指的数据日志的Id小,包括比任何一个从服务器的指针所指的数据日志的Id小,则这个数据日志是有效数据日志; 情况三,若被分析的数据日志的Id比任何一个从服务器的指针所指的数据日志的Id大,且大于或等于M/2个的从服务器有这个数据日志,M是数据服务器组所有服务器的数目,则这个数据日志是有效数据; 情况四,若被分析的数据日志的Id比任何一个从服务器的指针所指的数据日志的Id大,且小于M/2个的从服务器有这个数据日志,M是数据服务器组所有服务器的数目,则这个数据日志是无效数据日志;2)将步骤I)中的所有效数据日志插入侯选服务器的数据日志队列中,忽略无效数据日志; 3)候选服务器成为主服务器并通知所有从服务器;分布式存储系统中离线的主服务器恢复过程结束; ③分布式存储系统中从服务器离线后回到在线状态,通过数据日志恢复从服务器缺失数据,包括以下步骤: 离线后重新上线的从服务器向主服务器发送数据恢复请求; 主服务器收到从服务器的恢复请求后,向所述的从服务器返回同意恢复响应;同时主服务器从此刻起向从服务器传送新数据日志,所述的新数据日志指从服务器变成在线状态后主服务器产生的数据日志; 从服务器收到主服务器的同意恢复响应; 从服务器将其指针及比其指针所指数据日志Id大的数据日志发送给主服务器; 5)主服务器将其数据日志与从服务器发送过来的数据日志Id列表进行分析,分析出从服务器在离线时缺失的数据日志,以及从服务器指针的新位置;所述的缺失日志指从服务器在离线状态期间主服务器产生的数据日志; 6)主服务器将步骤5)中分析出的从服务器缺失的数据日志和从服务器的指针的新位置传送给从服务器; 从服务器在接收到主服务器传送过来的从服务器缺失的数据日志后,将其插入到从服务器数据日志队列中的对应位置上,并将从服务器数据日志队列的指针移动到新位置;若所述的指针的新位置未超过从服务器接收到步骤2)中主服务器传送的新数据日志的第一个数据日志的位置,则回到步骤4)并执行;否则从服务器离线后回到在线状态,通过数据日志恢复从服务器缺失数据过的程结束。
2.根据权利要求1所述的一种用数据日志提高分布式存储系统可用性的方法,其特征在于,所述方法中服务器中数据日志保存的位置包括但不限于其磁盘、缓存,服务器中数据写入的位置包括但不限于其磁盘、缓存。
3.根据权利要求1所述的一种用数据日志提高分布式存储系统可用性的方法,其特征在于,所述方法中从服务器指针的移动和从服务器数据日志的写入的进行方式包括但不限于并发方式。
4.对于权利要求1中所述的一种用数据日志提高分布式存储系统可用性的方法,其特征在于,所述分布式存储系统处理数据写请求并生成数据日志的步骤2)中主服务器根据接收到的数据写请求的内容生成对应的数据日志的方法为:主服务器选取一个新的数据日志Id,使其比上一个数据日志的Id大,然后将接收的数据写请求中的数据和数据地址复制到数据日志中的对应位置。
5.对于权利要求1中所述的一种用数据日志提高分布式存储系统可用性的方法,其特征在于,所述分布式存储系统处理数据写请求并生成数据日志的步骤3)中主服务器数据的写入、步骤4)中数据日志插入到数据日志队列队尾、步骤5)中主服务器将数据日志传输给所有从服务器的进行方式包括但不限于并发方式。
6.根据权利要求1所述的一种用数据日志提高分布式存储系统可用性的方法,其特征在于,所述分布式存储系统中主服务器离线,通过数据日志恢复主服务器的步骤I)中候选服务器的选取方法包括但不限于随机选取从服务器、选取指针所指向数据日志队列Id最大的从服务器。
7.根据权利要求1所述的一种用数据日志提高分布式存储系统可用性的方法,其特征在于,所述分布式存储系统中主服务器离线,通过数据日志恢复主服务器的步骤2)中有效数据日志插入侯选服务器的数据日志队列的加入方法为包括但不限于插入排序法。
8.根据权利要求1所述的一种用数据日志提高分布式存储系统可用性的方法,其特征在于,所述分布式存储系统中从服务器离线后回到在线状态,通过数据日志恢复从服务器缺失数据的步骤5)中分析从服务器离线时缺失的数据日志的方法为:从服务器发给主服务器的Id最小数据日志为Q,主服务器在其数据队列中选取一个比Q大的数据日志P,主服务器对其数据日志队列中所有大于Q但小于P的数据日志逐个分析,若被分析的数据日志的Id不在从服务器发过来的数据日志Id列表中,此数据日志是从服务器缺失的数据日志,否则忽略这个日志。
9.根据权利要求1所述的一种用数据日志提高分布式存储系统可用性的方法,其特征在于,所述分布式存储系统中从服务器离线后回到在线状态,通过数据日志恢复从服务器缺失数据的步骤5)中从服务器从指针的新位置为主服务器返回的指针的位置。
10.根据权利要求1所述的一种用数据日志提高分布式存储系统可用性的方法,其特征在于,所述分布式存储系统中从服务器离线后回到在线状态,通过数据日志恢复从服务器缺失数据的步骤7)中从 服务器将接收到的缺失数据日志插入其数据日志队列的插入方法是根据其接收到缺失的数据日志Id的大小,使用包括但不限于插入排序法。
【文档编号】H04L29/08GK103546579SQ201310546434
【公开日】2014年1月29日 申请日期:2013年11月7日 优先权日:2013年11月7日
【发明者】陈靓 申请人:陈靓
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1