一种基于库复制的分布式存储系统的制作方法

文档序号:12666481阅读:477来源:国知局

本发明属于数据存储领域,尤其涉及一种基于库复制的分布式存储系统。



背景技术:

分布式存储系统,是将数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。

现有技术中的采用垂直扩展或者水平扩展方式进行分布式存储,垂直扩展就是按照功能切分数据库,将不同功能的数据,存储在不同的数据库中,这样一个大数据库就被切分成多个小数据库,从而达到了数据库的扩展。水平扩展是将数据的水平切分理解为按照数据行来切分,就是将表中的某些行切分到一个数据库中,而另外的某些行又切分到其他的数据库中。上述存储方法均没有考虑到存储单元的能力和分布开销,也不能进行自动的数据分库管理。基于上述诸多问题,现在亟需一种新的分布式存储系统,利用对照表和目录表进行文件和库的管理,通过对数据进行切分、复制、自动并行修复,构建了一个高可靠、自管理的分布式存储系统,在机器数量大于故障机器上的库的数量时,整个修复过程的耗时通常仅需几十分钟,解决了数据高效自动修复的问题。



技术实现要素:

为了解决现有技术中的上述问题,本发明采用的技术方案如下:一种基于库复制的分布式存储系统,其特征在于,该系统包括:多个数据端,多个镜像服务器,控制服务器;在控制服务器的控制下,将数据端中的数据保存到一个或多个镜像服务器中;

控制服务器用于根据数据端的优先级和所保存的文件信息确定分库策略,并将该分库策略提供给数据端;还用于对每个数据端的运行状态进行监测,当数据端发生故障时,控制镜像服务器根据其保存的库数据对故障数据端进行数据恢复;

数据端用于在设定时刻到来时向控制服务器发送镜像请求,还用于存储业务数据,根据控制服务器发送的分库策略进行文件分库,和所分配的镜像服务器建立端口绑定关系;基于该端口绑定关系进行库包含的文件数据的恢复;还用于建立文件和库对照表、库目录表,并将该表信息保存在本地存储空间和控制服务器中;

镜像服务器用于通过所建立的端口绑定关系,基于文件和库对照表、库目录表,将库数据恢复到数据端的文件所在原始位置;

其中,将文件编号和文件在数据端的物理位置、文件所在的库,文件在库中的位置关联保存在文件和库对照表中;将库及其包含的文件编号、文件在库中的位置保存在库目录表中。

进一步的:数据端为业务端或业务服务器,用户将业务数据保存在该数据端中。

进一步的:监控获取针对数据端的数据产生高峰时间段,将高峰时间段过去后的第一时刻设置为设定时刻。

进一步的:数据端将数据量达到预设值的时刻设置为设定时刻。

进一步的:将预设周期到达后的第一时刻设置为设定时刻。

进一步的:支持全量和增量数据镜像。

进一步的:在增量数据镜像时,控制服务器控制数据端仅对增量文件进行分库和镜像,并增量的更新文件和库对照表、库目录表。

进一步的:支持大数据文件的分布式存储。

进一步的:镜像服务器在发生故障或者没有可用存储空间时,可以暂停提供镜像服务,控制服务器不再提供该镜像服务器进行镜像。

进一步的:镜像服务器分散于云存储系统中。

本发明的有益效果包括:利用对照表和目录表进行文件和库的管理,通过对数据进行切分、复制、自动并行修复,构建了一个高可靠、自管理的分布式存储系统,在机器数量大于故障机器上的库的数量时,整个修复过程的耗时通常仅需几十分钟,解决了数据高效自动修复的问题。

【附图说明】

此处所说明的附图是用来提供对本发明的进一步理解,构成本申请的一部分,但并不构成对本发明的不当限定,在附图中:

图1是本发明的一种基于库复制的分布式存储系统的结构图。

【具体实施方式】

下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的限定。

参见附图1,是本发明所应用的一种基于库复制的分布式存储系统,该系统包括多个数据端,多个镜像服务器;控制服务器,在控制服务器的控制下,将数据端中的数据保存到一个或多个镜像服务器中;

控制服务器用于根据数据端的优先级和所保存的文件信息确定分库策略,并将该分库策略提供给数据端;还用于对每个数据端的运行状态进行监测,当数据端发生故障时,控制镜像服务器根据其保存的库数据对故障数据端进行数据恢复;

数据端用于在设定时刻到来时向控制服务器发送镜像请求,还用于存储业务数据,根据控制服务器发送的分库策略进行文件分库,和所分配的镜像服务器建立端口绑定关系;基于该端口绑定关系进行库包含的文件数据的恢复;还用于建立文件和库对照表、库目录表,并将该表信息保存在本地存储空间和控制服务器中;

镜像服务器用于通过所建立的端口绑定关系,基于文件和库对照表、库目录表,将库数据恢复到数据端的文件所在原始位置;

其中,将文件编号和文件在数据端的物理位置、文件所在的库,文件在库中的位置关联保存在文件和库对照表中;将库及其包含的文件编号、文件在库中的位置保存在库目录表中;

基于上述系统,下面对本发明的一种基于库复制的分布式存储方法进行详细说明:

(1)数据端向控制服务器发送镜像请求,请求中携带该数据端本次需要镜像的文件个数n、文件平均大小FS、数据端标识ID;

数据端周期性的、在空闲时段、或发起重要数据操作前发出镜像请求;

(2)控制服务器接收镜像请求,根据当前镜像服务器存储资源可用情况,确定并发送分库策略给该请求数据端;分库策略中包含本次分库基准值Z,库文件冗余份数基准值R;

具体的:根据数据端标识ID从本地预存的数据端标识ID和数据端优先级PR之间的对应表获取该数据端的优先级PR;

基于该优先级PR和文件平均大小FS,根据公式(1)计算文件分库基准值Z;考虑到文件大小较大时,应当将文件尽量分派到不同的镜像服务器以提高文件的修复速度,同时当数据端优先级较高时,将文件分配到多个镜像服务器可以提高文件的修复速度,从而给高优先级用户更好的修复体验,因此,对高优先级数据端和大文件镜像提供更高的基准值从而提高文件的分散度,以保证数据的安全性和恢复速度;

分库基准值的最大值Zmax根据公式(3)计算得到;

Zmax=FS×n/∑(CP/NM)×Rmax×w 公式(3)

其中,CP为一个镜像服务器的可用空间大小,∑(CP/NM)为所有可用镜像服务器的平均可用空间大小;NM为可用镜像服务器总数;Rmax最大冗余份数,w为调节系数,可以由控制服务器根据当前镜像服务器运行状况来预设,镜像服务器运行状况包括:镜像服务器可用计算资源,可用端口,可用存储资源;当冗余份数过多时,数据端不能提供足够的端口进行并行恢复,且安全性也不能再提高更多,因此,可以根据经验来设置该Rmax值;

冗余份数基准值R由控制服务器根据当前可用镜像服务器个数或系统中镜像服务器总数来设置;R是可以动态调节的;

(3)数据端根据文件分库基准值Z进行文件分库,并计算库Lj的冗余份数Rj;具体的:数据端的数据以文件为组织单位进行顺序编号;顺序编号后的文件为:F1,F2,···,Fi,···,Fn;其中,n为数据端总的文件个数;将n个文件分为Z个库文件,L1,L2···,Lj,···LZ;其中:Fi将被分配到库LimodZ中;根据公式(2)计算库Lj的冗余份数Rj,其中NLj为库文件Lj中文件的数量,FPRj,k为库Lj中的第k个文件Lj,k的文件优先级,FPRmax为最高文件优先级;

文件优先级可以由数据端根据文件重要程度来设置;也可以在提交文件基本信息后由控制服务器设置;FPRmax为最高文件优先级,由控制服务器统一设置;预设数量由控制服务器预先设置;

将文件编号和文件在数据端的物理位置(文件存储的起始位置)、文件所在的库,文件在库中的位置,关联保存在文件和库对照表中;将库及其包含的文件编号、文件在库中的位置保存在库目录表中;

优选的:按照文件在数据端的物理位置的前后顺序进行编号;

(4)控制服务器计算每个库文件对应的镜像服务器集合Sj,Sz+j···,SRj;其中,S为镜像服务器的编号;具体的:计算所有镜像服务器到该数据端ID的通信开销C,并将通信开销按照从小到大排序,从中选取前Z个镜像服务器构成第一镜像服务器组{S1,S2,···Sj,···Sz};继续从第Z+1个镜像服务器开始选取第二镜像服务器组{Sz+1,S z+2,···S z+j,···S z+z},如果库Lj的冗余份数Rj小于2,则S z+j=0,表示没有选取任何镜像服务器;类似的,继续选取下一镜像服务器组,直到镜像服务器组数量大于FPRmax×R,或者所有的镜像服务器均被分配完毕为止;类似的,如果当次分配已经超过了库Lj的冗余份数Rj,则将相应的镜像服务器分配编号设置为0,表示没有选取任何镜像服务器;库文件Lj对应的镜像服务器集合为{Sj,Sz+j···,SRj}(如果镜像服务器被分配完,则分配的镜像服务器数量会少于Rj个);

考虑到通信开销小的情况下,修复的速度也会高,因此保证为每个库文件均优先选择通信开销最小的镜像服务器进行库镜像;而为冗余份数较多的库选择较多的镜像服务器进行备份;

(5)数据端依次向每个库Lj对应的镜像服务器集合Sj,Sz+j···,SRj进行库镜像;具体为:从L1开始到LZ,对于每个Lj,首先向Lj对应的镜像服务器集合中的第一个镜像服务器Sj发出镜像请求,并进行库文件的镜像,将Lj中包含的所有文件镜像到镜像服务器Sj中;然后对Lj+1对应的镜像服务器集合中的第一个镜像服务器Sj+1发出镜像请求,并进行库文件的镜像,将Lj+1中包含的所有文件镜像到镜像服务器Sj+1中;直到对所有库对应的镜像服务器集合中的第一个镜像服务器均完成镜像为止;然后开始对每个Lj完成向其对应的镜像服务器集合中的第二镜像服务器的镜像,具体为:向Lj对应的镜像服务器集合中的第二个镜像服务器Sz+j发出镜像请求,并进行库文件的镜像,将Lj中包含的所有文件镜像到镜像服务器Sz+j中;直到对所有库对应的镜像服务器集合中的第二个镜像服务器均完成镜像为止;按照这样的方式进行镜像,直到对所有库对应的所有镜像服务器集合中的每个镜像服务器的镜像均完毕为止;其中,如果镜像服务器编号为0,则表示该库Lj对应的冗余份数已经镜像完毕,跳过直接处理下一个镜像服务器的镜像;

将一个库中包含的所有文件镜像到一个镜像服务器中,具体为:将库Lj中包含的所有文件保存到镜像服务器Sj中合适的可用空间中并保存该Lj和其保存位置的对应关系;还包括选择合适的可用空间的步骤,具体为:查找镜像服务器Sj中的所有可用空间的大小,计算Lj的大小,选择和Lj的大小最接近的可用空间作为合适的可用空间;在所有的可用空间均小于Lj的时候,将Lj进行分块,并将Lj按照可用空间的大小从大到小进行分块,直到剩余库大小不再需要分块为止,将这些分块分别保存在对应大小的可用空间中,这些对应大小的可用空间为合适的可用空间;保存Lj的分块和该些合适的可用空间位置之间的对应关系;优选的:该对应关系可以保存在镜像服务器Sj中或保存在控制服务器中;优选的:将库Lj或者库Lj的分块保存在合适的可用空间的开始位置处;

(6)控制服务器对每个数据端的运行状态进行实时监测,当数据端发生故障时,根据镜像服务器中保存的数据对故障数据端进行数据恢复;

具体的:判断数据端的故障类型,如果是局部故障,则确定发生故障的文件编号,查找文件和库对照表获取故障文件所在库Lj,将库Lj中的所有文件均作恢复;如果是全局故障,则依次对数据端的所有库中的每个库Lj,将库Lj中的所有文件均作恢复;

确定局部故障,具体为:确定发生故障的文件的个数,当故障文件的个数超过第一预订数量或者故障文件中包含的高于指定优先级的故障文件的数量高于第二预定数量时,确定为局部故障;否则,继续保持数据端的运行而不作恢复;由于每次恢复需要不小的时间和空间开销,因此,只有在故障达到一定程度时才考虑做局部故障;

确定全局故障,具体为:确定发生故障的文件的个数超过第三预定数量或者数据端发生硬件故障时,确定为全局故障;

其中,将库Lj中的所有文件均作恢复,具体为:获取库Lj所在的所有镜像服务器集合{Sj,Sz+j···,SRj},获取故障数据端的端口数目NP,从所有镜像服务器集合中选择NP个镜像服务器用于本次镜像;该NP个镜像服务器为:第一镜像服务器、第二镜像服务器,···,第NP镜像服务器;建立该NP个镜像服务器和数据端NP个端口之间绑定关系,通过该NP个端口使该NP个镜像服务器对数据端的包含在库Lj中的文件作并行恢复;

从所有镜像服务器集合中选择NP个镜像服务器用于本次镜像,具体为:对所有镜像服务器集合中的每个镜像服务器中保存的库Lj计算该库Lj的数据签名,计算所有数据签名值的平均值;计算每个镜像服务器中保存的库Lj的数据签名和该平均值之间的距离,选择距离最小的前NP个数据签名对应的NP个镜像服务器为所选择的NP个镜像服务器;

优选的:采用公式计算距离;

由于镜像服务器中保存的数据也可能会发生错误,因此,需要对镜像服务器中保存的数据正确性做检查,选择正确性高的镜像服务器作恢复;

通过该NP个端口使该NP个镜像服务器对数据端的包含在库Lj中的文件作并行恢复,具体为:考虑通信开销的同时,使NP个镜像服务器中的每个不同镜像服务器存储的Lj镜像对Lj包含的不同文件做恢复;优选的:通过查找文件和库对照表获取文件在数据端的物理位置,将文件恢复到该保存的物理位置处;通过这样的方式,可以在文件恢复的同时,将文件恢复到原始位置处;查找库目录表获取Lj中包含的所有文件,获取文件大小信息,将文件按照从大到小的顺序排序,获取该NP个镜像服务器和数据端之间的通信开销C,依次将文件从大到小分配给通信开销从小到大排序的镜像服务器作恢复;通过均衡大小和通信开销,使得并行恢复的各个文件进展速度能够大致保持一致,避免短板情况的出现;

建立该NP个镜像服务器和数据端NP个端口之间绑定关系,具体为:在控制服务器的控制下,NP个镜像服务器中的每个镜像服务器分别和NP个端口中的每一个建立绑定关系,建立绑定关系后,镜像服务器主动的进行数据恢复,将保存的数据保存到数据端对应的位置中;

本发明的一种库复制的分布式存储系统,利用对照表和目录表进行文件和库的管理,通过对数据进行切分、复制、自动并行修复,构建了一个高可靠、自管理的分布式存储系统,一般情况下,一台机器对外提供的吞吐最高也只能达到几百Bps,若采用通常的机器镜像即几台机器上的数据完全一致的方式,修复几十TB的数据需要耗时几十多个小时,考虑到正常的服务压力,修复的时间将达到几十个小时,采用本发明中的技术方案在机器数量大于故障机器上的库的数量时,整个修复过程的耗时通常仅需几十分钟,解决了数据高效自动修复的问题。

以上所述仅是本发明的较佳实施方式,故凡依本发明专利申请范围所述的构造、特征及原理所做的等效变化或修饰,均包括于本发明专利申请范围内。

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