用于分布式存储的数据存储方法及系统的制作方法

文档序号:10654104
用于分布式存储的数据存储方法及系统的制作方法
【专利摘要】本发明实施例提供一种用于分布式存储的数据存储方法,包括:监控集群中各存储装置的工作状态;当存在失效存储装置时,确定失效存储装置所在的至少一个存储阵列、至少一个存储阵列中剩余的存活存储装置及与所述至少一个存储阵列相关的全部数据组;基于用户对全部数据组中的至少一个数据组的访问,生成第一队列和第二队列,其中,第一队列与全部数据组中未被访问的数据组对应,第二队列与全部数据组中被访问的数据组对应;从集群中选择可用存储装置替换失效存储装置;基于第二队列先于第一队列的顺序,利用所述至少一个存储阵列中剩余的存活存储装置向可用存储装置迁移数据组。本发明优先迁移热点数据,降低热点数据丢失的概率,提高数据安全性。
【专利说明】
用于分布式存储的数据存储方法及系统
技术领域
[0001] 本发明设及计算机网络领域,尤其设及一种用于分布式存储的数据存储方法及系 统。
【背景技术】
[0002] 分布式存储系统,是将数据按照一定规则切分并打散存储在多台独立通用存储服 务器上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统 性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要,而分布式存储 系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置存储服务器定 位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。存储集群的成 千上万台存储模块可W将数据充分冗余,从而可W显著提高数据的安全性。
[0003] 在存储领域,通常使用年故障率(AFR)来表征磁盘的可靠性,现在市场上通用的磁 盘的AFR-般是4%左右,即如果一个集群中有365块磁盘,那么一年中有磁盘损害的概率为 pow(0.96,365) =0.9999996619351175,即一年中几乎肯定有磁盘失效。而对于分布式存储 集群,实际上磁盘个数通常都达到了上千块,因此应对磁盘损坏成为了每一个存储系统都 要解决的问题。
[0004] 现有技术中,通过数据冗余来处理磁盘失效的问题,通常是每一份数据都可W存 储于=块甚至更多块磁盘上,当某块磁盘失效时,可W依靠剩下的两个副本做数据恢复,防 止在磁盘损坏或者存储模块岩机时数据丢失。但实际上,数据恢复策略必须要得到完善的 设计,否则还是会遇到数据丢失的问题。企业在搭建存储集群时,通常都会同批次购买很多 的存储服务器和磁盘,同批次的磁盘往往具备类似的硬件规格和驱动固件,即可能出现同 时失效的情况,在运种情况下,某一块磁盘开始失效之时,存储于此块磁盘上的数据都处于 降级的状态,更坏的是,与之同批次的其他磁盘也随之失效的概率就会提高,如果此时另外 一块磁盘也失效,则一部分数据将仅剩下一个存活的副本,并且降级程度进一步恶化,如果 数据不能尽快修复,降级的数据可能会因最后一个副本所在的磁盘的失效而完全丢失。
[0005] 处理磁盘失效问题,通常的方案是增加副本数,即由原来的=副本策略修改为四 副本,运种简单粗暴的方案会严重增加企业的存储成本,另外增加副本数之后,数据的写入 性能也会降低,因此不是一个好的方案。
[0006] 通常而言,用户的数据都具有明显的冷热区别,越热的数据即越经常被访问的数 据,对于用户而言也是越重要的数据。运也是计算机系统中著名的局部性原理的一种体现, 即用户在某一天某一时刻访问的数据在未来仍需被访问的概率较高。分布式存储系统都提 供了较高的可用性,即使数据的某一个副本损坏,当用户访问运个数据时,仍然可W从其他 副本中读取并返回给用户。但是对于被用户访问到的重要的热点数据,如果不能够尽快修 复,那么如果磁盘继续损坏,那么运些重要数据将会出现丢失,给用户带来的损失也就更 大。

【发明内容】

[0007]本发明实施例提供一种用于分布式存储的数据存储方法及系统,优先选择用户访 问的热点数据进行迁移,降低热点数据丢失的概率,保障热点数据的安全,从而显著提高系 统的数据安全性和可用性。
[000引本发明实施例提供一种用于分布式存储的数据存储方法,包括:
[0009] 监控分布式存储的集群中各存储装置的工作状态;
[0010] 当存在失效存储装置时,确定所述失效存储装置所在的至少一个存储阵列、所述 至少一个存储阵列中剩余的存活存储装置及与所述至少一个存储阵列相关的全部数据组.
[0011] 基于用户对所述全部数据组中的至少一个数据组的访问,生成第一队列和第二队 列,其中,第一队列与所述全部数据组中未被访问的数据组对应,第二队列与所述全部数据 组中被访问的数据组对应;
[0012] 从集群中选择可用存储装置替换所述失效存储装置;
[0013] 基于第二队列先于第一队列的顺序,利用所述至少一个存储阵列中剩余的存活存 储装置向替换后的可用存储装置迁移数据组。
[0014] 本发明实施例提供一种用于分布式存储的数据存储系统,包括:
[0015] 监控模块,用于监控分布式存储的集群中各存储装置的工作状态;
[0016] 迁移数据确定模块,用于当存在失效存储装置时,确定所述失效存储装置所在的 至少一个存储阵列、所述至少一个存储阵列中剩余的存活存储装置及与所述至少一个存储 阵列相关的全部数据组;
[0017] 迁移序列生成模块,基于用户对所述全部数据组中的至少一个数据组的访问,生 成第一队列和第二队列,其中,第一队列与所述全部数据组中未被访问的数据组对应,第二 队列与所述全部数据组中被访问的数据组对应;
[0018] 存储修复模块,从集群中选择可用存储装置替换所述失效存储装置;
[0019] 数据迁移模块,基于第二队列先于第一队列的顺序,利用所述至少一个存储阵列 中剩余的存活存储装置向替换后的可用存储装置迁移数据组。
【附图说明】
[0020] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可W根 据运些附图获得其他的附图。
[0021 ]图1为本发明实施例用于分布式存储的数据存储方法的流程图;
[0022] 图2为本发明用于分布式存储的数据存储方法的一个实施例的流程图;
[0023] 图3为本发明用于分布式存储的的数据存储方法的另一个实施例的流程图;
[0024] 图4为本发明实施例用于分布式存储的数据存储系统的结构示意图;
[0025] 图5为本发明用于分布式存储的数据存储系统的实施例的结构示意图。
【具体实施方式】
[0026] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0027] 根据本发明实施例提供的一种用于分布式存储的数据存储方法,如图1所示,包 括:
[0028] 监控分布式存储的集群中各存储装置的工作状态;
[0029] 当存在失效存储装置时,确定所述失效存储装置所在的至少一个存储阵列、所述 至少一个存储阵列中剩余的存活存储装置及与所述至少一个存储阵列相关的全部数据组.
[0030] 基于用户对所述全部数据组中的至少一个数据组的访问,生成第一队列和第二队 列,其中,第一队列与所述全部数据组中未被访问的数据组对应,第二队列与所述全部数据 组中被访问的数据组对应;
[0031] 从集群中选择可用存储装置替换所述失效存储装置;
[0032] 基于第二队列先于第一队列的顺序,利用所述至少一个存储阵列中剩余的存活存 储装置向替换后的可用存储装置迁移数据组。
[0033] 分布式存储是将每个数据组均存储到集群中的N个存储装置上,N为常数,在优选 的实施例中,N=3。
[0034] 在可选的实施例中,将每个数据组均存储到集群中的3个存储装置上,并建立数据 组对应存储阵列的映射列表和集群中的可用存储装置列表,其中,可用存储装置可W是已 经使用但还有存储空间的存储装置,也可W是没有被使用的存储装置。
[0035] 在可选的实施例中,第一队列和第二队列可W通过W下步骤获得:在确定所述失 效存储装置所在的至少一个存储阵列、所述至少一个存储阵列中剩余的存活存储装置及与 所述至少一个存储阵列相关的全部数据组之后,生成一个包含全部数据组的第一队列和一 个空的第二队列,若用户对全部数据组中的至少一个数据组访问,则将用户访问的至少一 个数据组添加到第二队列中,添加完成后,将该至少一个数据组从第一队列中删除,其中, 第一队列和第二队列存储的均是数据组的名称而不是数据组本身。
[0036] 在利用所述至少一个存储阵列中剩余的存活存储装置向替换后的可用存储装置 迁移数据组期间,用户请求访问全部数据组中的一个数据组,若该数据组在第一队列中,贝U 将该数据组移至第二队列,若该数据组在第二队列中,则将该数据组移至第二队列的队首, 优先进行迁移。对于第二队列中的数据组,被访问次数越多,在第二队列中越靠前。
[0037] 在一些可选的实施例中,存储装置可W是各式存储器,如RAM、R0M等,也可W是磁 盘或软盘等其他能够存储数据的存储介质。
[0038] 在一些可选的实施例中,在每个存储装置上承载至少一组数据组,W便提高存储 装置的利用率,降低存储成本。
[0039] 在一些可选的实施例中,将每组数据组均存储到集群中的3个磁盘上,W形成数据 组对应存储阵列的映射列表和集群中的可用磁盘列表,所述映射列表中的部分列表如下表 1所示,所述可用磁盘列表中的部分列表如下表2所示,
[0040] 表1:
[0041]
[0044] ~在本实施例中,"dg+常数"用于标记不同的数据组,"d+常数"用于标记不同的磁 盘,本公开在此方面没有限制。
[0045] 在一些可选的实施例中,存储阵列中存储装置的位置是有顺序的,一方面,在存储 阵列中位置靠前的存储装置负责接收写入的数据组,并转发给其所在存储阵列中剩余的存 储装置,另一方面,当存在失效存储装置时,利用位置靠前的存储装置向新的存储装置进行 数据组迁移。
[0046] 在一些可选的实施例中,监控映射列表中磁盘的工作状态,可W通过不断地对磁 盘进行读写操作来监控其工作状态,也可W通过每隔20s对磁盘进行一次读写操作,还可W 利用现有技术中的监控工具如smartmontools来监控磁盘的工作状态。
[0047] 当存在失效磁盘时,如磁盘d4失效时,由表1确定失效磁盘d4所在的存储阵列: ((14,(1666,(177)、((14,(18,(1666)和((14,(1123,(110),与存储阵列((14,(1666,(177)相关的数据组 包括数据组dgl和数据组dg2,与存储阵列(d4,d8,d666)相关的数据组包括数据组d的和数 据组dg4,与存储阵列(d4,dl23,dl0)相关的数据组包括数据组dg5,遍历全部数据组,生成 待迁移数据的第一队列化和空的第二队列化,其中,化={数据组dgl、数据组dg2、数据组 dg3、数据组dg4、数据组dg5}。
[004引此时,用户请求访问数据组dgl和数据组dg4,则将数据组dgl和数据组dg4从第一 队列化中删除并移至第二队列化,此时化={数据组dgl、数据组dg4}。
[0049]其中,第一队列和第二队列中存储的均是数据组的名称而不是数据组本身。
[0化0] 在进行数据组迁移期间,用户再一次请求访问数据组dg4,此时数据组dg4已经在 第二队列中,且数据组dg4不在第二队列的队首,则将其移至队首进行优先迁移。
[0051] 在一些可选的实施中,各数据组迁移完成后从其所在的队列中删除,当全部数据 组迁移完成后删除第一队列和第二队列。
[0052] 在一些可选的实施例中,第一队列中的数据组可W按照数据组的名称或数据组的 大小进行排序,也可W根据用户的具体需求进行排序。本发明对第一队列中数据组的顺序 不做限制,在此不做寶述。
[0053] 在一些可选的实施例中,可W根据可用磁盘列表选择=块不同的可用磁盘分别替 换S个存储阵列中的失效磁盘d4,如(dll0,d666,d77)、(d20,d8,d666WP(d456,dl23, dio),也可W选择一块可用磁盘替换替换S个存储阵列中的失效磁盘d4,如(dll0,d666, d77)、(dll0,d8,d666WP(dll0,dl23,dl0)。
[0054] 在一些可选的实施例中,可W在确定磁盘d4失效之后立即从可用磁盘列表中选择 新的可用磁盘如磁盘d 110替换磁盘d4,也可W在确定磁盘d4失效后一定时间内如15分钟 内,磁盘d4没有修复,则从可用磁盘列表中选择新的磁盘替换磁盘d4。失效磁盘被替换后更 新映射列表。
[0055] 请参考图2,当剩余的存活存储装置的数量为两个W上时,根据剩余的各存活存储 装置在存储阵列中的位置,生成存储装置恢复顺序,具体而言,存储装置恢复顺序可W为存 储阵列中存储装置的位置顺序,利用位置靠前的存储装置向新的存储装置进行数据迁移。 如磁盘d4失效时,确定其所在的存储阵列包括(d4,d666,d77)、(d4,d8,d666WP(d456, dl23,dl0),对于数据组dgl和数据组dg2而言,利用磁盘d666向新的磁盘如dllO按照第二队 列先于第一队列的顺序迁移数据组。对于数据组d3和数据组d4,利用磁盘d8向新的磁盘如 dllO按照第二队列先于第一队列的顺序迁移数据组。对于数据组d5,利用磁盘dl23向新的 磁盘如dllO按照第二队列先于第一队列的顺序迁移数据组。
[0056] 请参考图3,当失效存储装置的数量为两个W上时,根据与所述失效存储装置对应 的至少两个可用存储装置在存储阵列中的位置,生成存储装置恢复顺序,具体而言,所述存 储装置恢复顺序可W为可用存储装置在存储阵列的位置顺序,位置靠前的可用存储装置先 于位置靠后的可用存储装置。如存储阵列(d4,d666,d77)中磁盘d4和磁盘d666均失效后,由 磁盘dl 10替换磁盘d4,磁盘d20替换磁盘d666,则优先向磁盘dl 10迁移相关的数据组,然后 再向磁盘d20迁移相关的数据组。
[0057] 下面W失效磁盘d4为例,具体说明该数据存储方法。
[005 引失效磁盘 d4 所在的存储阵列包括:(d4,d666,d77)、(d4,d8,d666WP(d4,dl23, dlO),剩余存活磁盘包括:磁盘d666、磁盘d77、磁盘d8、磁盘dl23和磁盘dlO。与上述存储阵 列相关的全部数据组包括数据组dgl、数据组dg2、数据组dg3、数据组dg4和数据组dg5。遍历 全部数据组,生成第一队列和空的第二队列,其中,第一队列化={数据组dgl,数据组dg2, 数据组dg3,数据组dg4,数据组dg引。根据可用磁盘列表选择磁盘dl 10替换失效磁盘d4,贝。 替换后的存储阵列为(dllO, d666,d77)、(dllO, d8,d666)和(dllO, dl23,dl0)。
[0059] 此时,用户请求访问数据组dgl和dg4,则将数据组dgl和数据组dg4从第一队列中 删除并移至第二队列,则第二队列化={数据组dgl,数据组dg4},
[0060] 利用剩余存活磁盘向磁盘dllO迁移数据组时,优先迁移第二队列中的数据组。在 数据组迁移期间,用户请求访问数据组dg3,则将数据组d的移至第二队列,第二队列化变为 Q2'= {数据组dgl,数据组dg4,数据组dg3}(数据组dgl还没有迁移完成),若用户再次请求 访问数据组dg3,数据组d的被访问了 2次,数据组dgl和数据组dg4被访问了 1次,则将数据组 d的移至队首,第二队列化'变为Q2" = {数据组dg3,数据组dgl,数据组dg4}。优先向磁盘dllO 迁移第二队列Q2"中的数据组,迁移完成之后,迁移第一队列中的数据组。
[0061] 根据本发明实施例提供的一种用于分布式存储的数据存储系统1000,如图4所示, 包括:
[0062] 监控模块100,用于监控分布式存储的集群中各存储装置的工作状态;
[0063] 迁移数据确定模块200,用于当存在失效存储装置时,确定所述失效存储装置所在 的至少一个存储阵列、所述至少一个存储阵列中剩余的存活存储装置及与所述至少一个存 储阵列相关的全部数据组;
[0064] 迁移序列生成模块300,基于用户对所述全部数据组中的至少一个数据组的访问, 生成第一队列和第二队列,其中,第一队列与所述全部数据组中未被访问的数据组对应,第 二队列与所述全部数据组中被访问的数据组对应;
[0065] 存储修复模块400,从集群中选择可用存储装置替换所述失效存储装置;
[0066] 数据迁移模块500,基于第二队列先于第一队列的顺序,利用所述至少一个存储阵 列中剩余的存活存储装置向替换后的可用存储装置迁移数据组。
[0067] 该数据存储系统用于执行上述数据存储方法,并能达到与数据存储方法相同的技 术效果。
[0068] 图5为本申请实施例提供的又一种数据存储系统1200的结构示意图,本申请具体 实施例并不对用户设备1200的具体实现做限定。如图5所示,该用户设备1200可W包括:
[0069] 处理器(processor) 1210、通信接口(Communications Interface) 1220、存储器 (memory) 1230、W及通信总线1240。其中:
[0070] 处理器1210、通信接口 1220、W及存储器1230通过通信总线1240完成相互间的通 信。
[0071] 通信接口 1220,用于与比如客户端等的网元通信。
[0072] 处理器1210,用于执行程序1232,具体可W执行上述方法实施例中的相关步骤。
[0073] 具体地,程序1232可W包括程序代码,所述程序代码包括计算机操作指令。
[0074] 处理器1210可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电 路。
[0075] W上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可 W是或者也可W不是物理上分开的,作为单元显示的部件可W是或者也可W不是物理单 元,即可W位于一个地方,或者也可W分布到多个网络单元上。可W根据实际的需要选择其 中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性 的劳动的情况下,即可W理解并实施。
[0076] 通过W上的实施方式的描述,本领域的技术人员可W清楚地了解到各实施方式可 借助软件加必需的通用硬件平台的方式来实现,当然也可W通过硬件。基于运样的理解,上 述技术方案本质上或者说对现有技术做出贡献的部分可WW软件产品的形式体现出来,该 计算机软件产品可W存储在计算机可读存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指 令用W使得一台计算机设备(可W是个人计算机,存储模块,或者网络设备等)执行各个实 施例或者实施例的某些部分所述的方法。
[0077] 最后应说明的是:W上实施例仅用W说明本发明的技术方案,而非对其限制;尽管 参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可 W对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换; 而运些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和 范围。
【主权项】
1. 一种用于分布式存储的数据存储方法,其特征在于,包括: 监控分布式存储的集群中各存储装置的工作状态; 当存在失效存储装置时,确定所述失效存储装置所在的至少一个存储阵列、所述至少 一个存储阵列中剩余的存活存储装置及与所述至少一个存储阵列相关的全部数据组; 基于用户对所述全部数据组中的至少一个数据组的访问,生成第一队列和第二队列, 其中,第一队列与所述全部数据组中未被访问的数据组对应,第二队列与所述全部数据组 中被访问的数据组对应; 从集群中选择可用存储装置替换所述失效存储装置; 基于第二队列先于第一队列的顺序,利用所述至少一个存储阵列中剩余的存活存储装 置向替换后的可用存储装置迀移数据组。2. 根据权利要求1所述的数据存储方法,其特征在于,对于第二队列中的数据组,被访 问次数越多,在第二队列中越靠前。3. 根据权利要求1所述的数据存储方法,其特征在于,在确定所述失效存储装置所在的 至少一个存储阵列、所述至少一个存储阵列中剩余的存活存储装置及与所述至少一个存储 阵列相关的全部数据组后,所述方法还包括: 当剩余的存活存储装置的数量为两个以上时,根据剩余的各存活存储装置在存储阵列 中的位置,生成存储装置恢复顺序; 基于第二队列先于第一队列的顺序,利用所述至少一个存储阵列中剩余的存活存储装 置向替换后的可用存储装置迀移数据组包括: 基于第二队列先于第一队列的顺序,按照存储装置恢复顺序,利用所述至少一个存储 阵列中剩余的存活存储装置向替换后的可用存储装置迀移数据组。4. 根据权利要求1所述的数据存储方法,其特征在于,在确定所述失效存储装置所在的 至少一个存储阵列、所述至少一个存储阵列中剩余的存活存储装置及与所述至少一个存储 阵列相关的全部数据组,所述方法还包括: 当失效存储装置的数量为两个以上时,根据与所述失效存储装置对应的至少两个可用 存储装置在存储阵列中的位置,生成存储装置恢复顺序; 基于第二队列先于第一队列的顺序,利用所述至少一个存储阵列中剩余的存活存储装 置向替换后的可用存储装置迀移数据组包括: 基于第二队列先于第一队列的顺序,按照存储装置恢复顺序,利用所述至少一个存储 阵列中剩余的存活存储装置向替换后的可用存储装置迀移数据组。5. -种用于分布式存储的数据存储系统,其特征在于,包括: 监控模块,用于监控分布式存储的集群中各存储装置的工作状态; 迀移数据确定模块,用于当存在失效存储装置时,确定所述失效存储装置所在的至少 一个存储阵列、所述至少一个存储阵列中剩余的存活存储装置及与所述至少一个存储阵列 相关的全部数据组; 迀移序列生成模块,基于用户对所述全部数据组中的至少一个数据组的访问,生成第 一队列和第二队列,其中,第一队列与所述全部数据组中未被访问的数据组对应,第二队列 与所述全部数据组中被访问的数据组对应; 存储修复模块,从集群中选择可用存储装置替换所述失效存储装置; 数据迀移模块,基于第二队列先于第一队列的顺序,利用所述至少一个存储阵列中剩 余的存活存储装置向替换后的可用存储装置迀移数据组。6. 根据权利要求5所述的数据存储系统,其特征在于,对于第二队列中的数据组,被访 问次数越多,在第二队列中越靠前。7. 根据权利要求5所述的数据存储系统,其特征在于,所述系统还包括存储顺序确定模 块,用于当剩余的存活存储装置的数量为两个以上时,根据剩余的各存活存储装置在存储 阵列中的位置,生成存储装置恢复顺序; 所述数据迀移模块用于基于第二队列先于第一队列的顺序,按照存储装置恢复顺序, 利用所述至少一个存储阵列中剩余的存活存储装置向替换后的可用存储装置迀移数据组。8. 根据权利要求5所述的数据存储系统,其特征在于,所述系统还包括存储顺序确定模 块,用于当失效存储装置的数量为两个以上时,根据与所述失效存储装置对应的至少两个 可用存储装置在存储阵列中的位置,生成存储装置恢复顺序; 所述数据迀移模块用于基于第二队列先于第一队列的顺序,按照存储装置恢复顺序, 利用所述至少一个存储阵列中剩余的存活存储装置向替换后的可用存储装置迀移数据组。
【文档编号】G06F3/06GK106020739SQ201610547862
【公开日】2016年10月12日
【申请日】2016年7月12日
【发明人】吴兴义
【申请人】乐视控股(北京)有限公司, 乐视云计算有限公司
再多了解一些
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1