数据存储方法及系统与流程

文档序号:12362541阅读:221来源:国知局
数据存储方法及系统与流程

本发明涉及数据存储领域,尤其涉及一种数据存储方法及系统。



背景技术:

分布式存储系统,是将数据按照一定规则切分并打散存储在多台独立通用存储存储模块上。传统的网络存储系统采用集中的存储存储模块存放所有数据,存储存储模块成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要,而分布式存储系统采用可扩展的系统结构,利用多台存储存储模块分担存储负荷,利用位置存储模块定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。存储集群的成千上万台存储模块可以将数据充分冗余,从而可以显著提高数据的安全性。

在存储领域,通常使用年故障率(AFR)来表征磁盘的可靠性,现在市场上通用的磁盘的AFR一般是4%左右,即如果一个集群中有365块磁盘,那么一年中有磁盘损害的概率为pow(0.96,365)=0.9999996619351175,即一年中几乎肯定有磁盘失效。而对于分布式存储集群,实际上磁盘个数通常都达到了上千块,因此应对磁盘损坏成为了每一个存储系统都要解决的问题。

在分布式存储系统中,除了处理用户正常的读写请求之外,通常还会有在磁盘之间进行的数据迁移,考虑以下两种情况:

第一、为了解决磁盘失效问题,通常在一块磁盘损坏之后,在相同位置插入一块新的磁盘,之后分布式存储系统会将其他磁盘的相关数据写入到这块被替换的磁盘中。

第二,分布式存储集群通常面临着扩容的问题,当已有的数据量不足以支撑业务时,会通过增加服务器和磁盘的方式来提供更多的容量,为了让每一个磁盘都拥有相近的磁盘使用量,从而最大限度发挥所有磁盘的读写性能,通常会有一部分位于老集群的数据会迁移到新的磁盘中。

发明人在实现本发明的过程中发现,对于上述两种数据迁移问题,不论是对于数据迁出的一方,还是数据迁入的一方,都需要耗费一定量的CPU、内存和网络带宽资源,特别是集群扩容时,数据迁移量会比较大,从而会影响到已有用户的正常读写请求,在业务高峰期,过多的数据迁移会严重消耗资源,甚至会出现正常服务完全无法进行的情况,造成了服务的不可用。



技术实现要素:

本发明实施例提供一种用于分布式存储的数据存储方法及系统,通过配置传输阈值,即每个存储装置进行数据迁移的最大个数,达到限制数据迁移带宽的目的,从而实现数据迁移和用户请求之间的平衡。当进行集群扩容或者替换失效的存储装置时,利用集群中的存活存储装置向每个新增加的存储装置或替换后的可用存储装置迁入数据。对于新存储装置或替换后的可用存储装置而言,都会有一个迁入执行队列和迁入等待队列。迁入执行队列表示正在向新存储装置或可用存储装置迁入的数据组,该队列的最大长度即为传输阈值,迁入等待队列表示等待向新存储装置或可用存储装置迁入的数据组。对于集群中的存活存储装置而言,会有一个迁出执行队列和迁出等待队列。迁出执行队列表示存活存储装置正在迁出的数据组,该队列的最大长度即为传输阈值,迁出等待队列表示存活存储装置等待迁出的数据组。

本发明实施例提供一种数据存储方法,包括:

监控存储集群中各存储装置的工作状态;

当存在失效存储装置时,确定所述失效存储装置所在的存储阵列、所述存储阵列中剩余的存活存储装置及与所述存储阵列相关的全部数据组;

从集群中选择可用存储装置替换所述失效存储装置;

遍历所述全部数据组,生成用于可用存储装置的迁入执行队列、迁入等待队列以及用于存活存储装置的迁出执行队列、迁出等待队列,其中,迁入执行队列和迁出执行队列中数据组的数量均小于或等于传输阈值。

本发明实施例提供一种数据存储系统,包括:

监控模块,监控存储集群中各存储装置的工作状态;

迁移数据确定模块,当存在失效存储装置时,确定所述失效存储装置所在的至少一个存储阵列、所述至少一个存储阵列中剩余的存活存储装置及与所述至少一个存储阵列相关的全部数据组;

存储修复模块,从集群中选择可用存储装置替换所述失效存储装置;

迁移队列生成模块,遍历所述全部数据组,生成用于可用存储装置的迁入执行队列、迁入等待队列以及用于存活存储装置的迁出执行队列、迁出等待队列,其中,迁入执行队列和迁出执行队列中数据组的数量均小于或等于传输阈值。

附图说明

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

图1为本发明实施例用于分布式存储的数据存储方法的流程图;

图2为本发明数据存储方法的一个实施例的流程图;

图3为本发明数据存储方法的另一个实施例的流程图;

图4为本发明数据存储方法的再一个实施例的流程图;

图5为本发明实施例用于分布式存储的数据存储系统的结构示意图;

图6为本发明数据存储系统的一个实施例的结构示意图。

具体实施方式

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

根据本发明实施例提供的一种用于分布式存储的数据存储方法,如图1所示,包括:

监控分布式存储集群中各存储装置的工作状态;

当存在失效存储装置时,确定所述失效存储装置所在的存储阵列、所述存储阵列中剩余的存活存储装置及与所述存储阵列相关的全部数据组;

从集群中选择可用存储装置替换所述失效存储装置;

遍历所述全部数据组,生成用于可用存储装置的迁入执行队列、迁入等待队列以及用于存活存储装置的迁出执行队列、迁出等待队列,其中,迁入执行队列和迁出执行队列中数据组的数量均小于或等于传输阈值。

在一些可选的实施例中,如图2所示,在生成用于可用存储装置的迁入执行队列、迁入等待队列以及用于存活存储装置的迁出执行队列、迁出等待队列之后,还包括查询迁出执行队列中的数据组是否在所述迁入执行队列中,若在,则利用所述存活存储装置向所述可用存储装置迁移该数据组,若不在,可以每隔固定时间例如10分钟进行一次查询。

分布式存储是将每个数据组均存储到集群中的N个存储装置上,N为常数,在优选的实施例中,N=3。

在可选的实施例中,将每个数据组均存储到集群中的3个存储装置上,并建立数据组对应存储阵列的映射列表和集群中的可用存储装置列表,其中,可用存储装置可以是已经使用但还有存储空间的存储装置,也可以是没有被使用的存储装置。

在一些可选的实施例中,存储装置可以是各式存储器,如RAM、ROM等,也可以是磁盘或软盘等其他能够存储数据的存储介质。在本公开实施例中存储装置为磁盘。

在一些可选的实施例中,在每个存储装置上承载至少一组数据组,以便提高存储装置的利用率,降低存储成本。

在一些可选的实施例中,将每组数据组均存储到集群中的3个磁盘上,以形成数据组对应存储阵列的映射列表和集群中的可用磁盘列表,所述映射列表中的部分列表如下表1所示,所述可用磁盘列表中的部分列表如下表2所示,

表1:

表2:

在本实施例中,“dg+常数”用于标记不同的数据组,“d+常数”用于标记不同的磁盘,本公开在此方面没有限制。

在一些可选的实施例中,存储阵列中存储装置的位置是有顺序的,一方面,在存储阵列中位置靠前的存储装置负责接收写入的数据组,并转发给其所在存储阵列中其余的存储装置,另一方面,当存在失效存储装置时,利用位置靠前的存储装置向新的存储装置进行数据组迁移。

监控映射列表中磁盘的工作状态,在一些可选的实施例中,可以通过不断地对磁盘进行读写操作来监控其工作状态,也可以通过每隔20s对磁盘进行一次读写操作,还可以利用现有技术中的监控工具如smartmontools来监控磁盘的工作状态。

请参考图3,当剩余的存活存储装置的数量为两个以上时,根据剩余的各存活存储装置在存储阵列中的位置,生成存储装置恢复顺序,具体而言,存储装置恢复顺序可以为存储阵列中存储装置的位置顺序,利用位置靠前的存储装置向新的存储装置进行数据迁移。如磁盘d4失效时,确定其所在的存储阵列包括(d4,d666,d77)和(d4,d8,d666),磁盘d4的待迁移数据组包括数据组dg1至数据组dg8,利用磁盘d666向新磁盘d110迁移数据组dg1至数据组dg4,利用磁盘d8向新磁盘d110迁移数据组dg5至数据组dg8。

请参考图4,当失效存储装置的数量为两个以上时,根据与所述失效存储装置对应的至少两个新存储装置在存储阵列中的位置,生成存储装置恢复顺序,具体而言,所述存储装置恢复顺序可以为新存储装置在存储阵列的位置顺序,位置靠前的新存储装置先于位置靠后的新存储装置。如存储阵列(d4,d666,d77)中磁盘d4和磁盘d666均失效后,从集群中选择可用磁盘d110替换失效磁盘d4,可用磁盘d20替换失效磁盘d666,则优先利用存活磁盘d77向可用磁盘d110迁移数据组dg1至数据组dg4,再利用存活磁盘d77向可用磁盘d20迁移数据组dg1至数据组dg4。

本发明对存储装置恢复顺序不做限制,本领域技术人员可以根据不同需求具体设定。

在一些可选的实施例中,可以在确定磁盘d4失效之后立即从可用磁盘列表中选择新的磁盘替换磁盘d4,也可以在确定磁盘d4失效后一定时间内失效磁盘d4没有修复例如15分钟内失效磁盘d4没有修复,则从集群中选择可用磁盘替换失效磁盘d4。

下面以失效磁盘d4为例说明本公开用于分布式存储的数据存储方法。

当磁盘d4失效,从集群中选择可用磁盘d110替换失效磁盘d4,生成向可用磁盘d110迁入的数据组的迁入执行队列QT-110={dg1,dg2,dg3}、第迁入等待队列QW-110={dg4,dg5,dg6,dg7,dg8,dg9,dg10,dg11,dg12};与存活磁盘d666对应的第一迁出执行队列Qt2-666={dg1,dg2,dg3}、第一迁出等待队列Qw2-666={dg4};与存活磁盘d8对应的第二迁出执行队列Qt2-8={dg5,dg6,dg7}、第二迁出等待队列Qw2-666={dg8,dg9,dg10,dg11,dg12}。

因为Qt2-8中的数据组dg5至数据组dg7不在QT-110中,因此只利用存活磁盘d666向可用磁盘d110迁移数据组dg1至数据组dg3,不迁移数据组dg5至数据组dg7。

当数据组dg1至数据组dg3都迁移完成后,迁入执行队列QT-110变为QT-110’={dg4,dg5,dg6},此时由存活磁盘d666向可用磁盘d110迁移数据组dg4,同时由存活磁盘d8向可用磁盘d110迁移数据组dg5和数据组dg6。

重复上述步骤,直至全部数据组迁移完成。

对于集群扩容的情况,同样适用上述数据存储方法。

根据本发明实施例提供的一种用于分布式存储的数据存储系统1000,如图5所示,包括:

监控模块100,监控分布式存储的集群中各存储装置的工作状态;

迁移数据确定模块200,当存在失效存储装置时,确定所述失效存储装置所在的至少一个存储阵列、所述至少一个存储阵列中剩余的存活存储装置及与所述至少一个存储阵列相关的全部数据组;

存储修复模块300,从集群中选择可用存储装置替换所述失效存储装置;

迁移队列生成模块400,遍历所述全部数据组,生成用于可用存储装置的迁入执行队列、迁入等待队列以及用于存活存储装置的迁出执行队列、迁出等待队列,其中,迁入执行队列和迁出执行队列中数据组的数量均小于或等于传输阈值。

在一些可选的实施例,所述数据存储系统还包括数据迁移模块,用于查询迁出执行队列中的数据组是否在所述迁入执行队列中,若在,则利用所述存活存储装置向所述可用存储装置迁移该数据组。

图6为本申请实施例提供的又一种数据存储系统1200的结构示意图,本申请具体实施例并不对用户设备1200的具体实现做限定。如图6所示,该用户设备1200可以包括:

处理器(processor)1210、通信接口(Communications Interface)1220、存储器(memory)1230、以及通信总线1240。其中:

处理器1210、通信接口1220、以及存储器1230通过通信总线1240完成相互间的通信。

通信接口1220,用于与比如客户端等的网元通信。

处理器1210,用于执行程序1232,具体可以执行上述方法实施例中的相关步骤。

具体地,程序1232可以包括程序代码,所述程序代码包括计算机操作指令。

处理器1210可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路。

该数据存储系统用于执行上述用于分布式存储的数据存储方法,并能达到与该数据存储方法同样的效果。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,存储模块,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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