公开/公告号CN105824720A
专利类型发明专利
公开/公告日2016-08-03
原文格式PDF
申请/专利权人 中国人民解放军国防科学技术大学;
申请/专利号CN201610135198.3
申请日2016-03-10
分类号
代理机构湖南省国防科技工业局专利中心;
代理人冯青
地址 410073 湖南省长沙市砚瓦池正街47号
入库时间 2023-06-19 00:11:02
法律状态公告日
法律状态信息
法律状态
2020-03-10
未缴年费专利权终止 IPC(主分类):G06F11/14 授权公告日:20181120 终止日期:20190310 申请日:20160310
专利权的终止
2018-11-20
授权
授权
2016-08-31
实质审查的生效 IPC(主分类):G06F11/14 申请日:20160310
实质审查的生效
2016-08-03
公开
公开
技术领域
本发明适用于重复数据删除和纠删码技术领域,提供了一种面向数据连续读取的重复数据删除(DataDeduplication)和纠删码(Erasurecode)混合系统的数据放置方法,在不改变系统可靠性的前提下消除对数据连续读取的负载瓶颈,提高系统的读性能。
背景技术
大数据时代,数据的爆炸性增长以及以CPU和GPU为代表的处理器件的计算性能的飞速增长对存储系统容量、性能和可靠性等方面提出了更高的要求,存储系统面临着巨大挑战。
一方面,就庞大和日益增长的数据规模而言,盲目地通过增加存储设备来实现存储规模的扩张并不是一种解决容量问题的有效方式,其还涉及资金、空间、能耗和管理等诸多问题。多种研究表明,各类存储系统中大约60%以上的数据都是重复的,尤其在备份和归档系统中由于数据共享和多版本发布等因素,数据的重复率可达80%~90%,使用数据缩减技术才是根本解决大数据存储的有效方式。
数据缩减技术是一种通过某种有效的技术手段删除冗余数据以提高数据存储效率的方式。经典的数据缩减技术通常包括数据压缩(DataCompression)技术、Delta编码(DeltaEncoding)技术和重复数据删除(DataDeduplication)技术三类。其中,传统数据压缩技术只能消除对象内的冗余数据,而重复数据删除后还可以消除对象间的冗余;而相比Delta编码技术需要的额外的计算开销和内存资源,而重复数据删除的开销更低。因此,重复数据删除技术已经成为当今大数据存储领域应用研究的热点问题。
另一方面,新旧存储介质本身的可靠性问题和不断攀升的存储规模使得存储系统可靠性问题日益突出。对于任何系统而言,没有了可靠性,就谈不上任何性能。因此为了保证数据的可靠性和可用性,分布式存储系统必须采用一定的数据容错技术。数据容错技术是指通过某种方式对数据对象进行处理后产生一定的冗余,并将处理后的数据放置到不同的节点上,使得在其中一部分数据因节点失效而丢失时,能够使用存活节点上剩余的部分数据来恢复出原数据对象。当前,常见的数据容错技术包括“多副本(Replication)”技术和“纠删码(ErasureCodes)”技术两种。虽然多副本技术有着无法比拟的数据可用性,但是随着数据规模的增大,其昂贵的存储开销使得其应用日益减少。相反,能够使用更少存储代价实现更高可靠性的纠删码技术逐渐成为了存储可靠性的主流,对各类纠删码及其应用问题的研究已经成为了存储领域研究的绝对热点。
综上,既要有效去除重复数据,实现有效存储,又要通过添加冗余来保证系统的可靠性,因此构建重复数据删除和纠删码的混合存储系统成为解决问题的关键。
在各类大数据存储系统中,高效地读取数据才是数据存储的最终目的。因此如何有效地组织和存储重复数据删除之后的数据和编码之后生成的冗余,以提高吞吐率和读性能成为研究的重点问题。就现有大数据存储系统而言,大部分都采用WORM(WriteOnceandReadManytimes,一次写入,多次读出)的文件访问模型,因此提升读性能显得尤为重要。然而,系统的读性能与数据的布局密切相关,如何将去重之后的数据和编码之后的冗余更好地放置在各个节点上,实现对存储节点间的并行性的充分利用,从而提高读取性能,成为是人们日益关注的问题。
在没有纠删码编码的重复数据删除系统中,已有研究对去重后的数据放置问题进行了研究,提出了具有请求感知的数据放置方法,并以此为基础构建了RE-Dedupe来提升文件的读性能。该方法通过将同一个请求下的多个数据分块尽可能独立地放置在不同的节点上,尽可能多地利用存储节点间的并行性,从而提高读性能。该方法引入了一定量的写延迟,而且无法应用于存在重删和纠删的混合系统中。
由于重复数据删除和纠删码的结合是比较新的课题,针对其数据放置的研究并不多。在多节点的分布式环境下,有基于容量感知的数据放置策略,以实现节点间存储容量的负载均衡,但并不考虑性能问题;因此有研究采用EDP(EvenDataPlacement)算法对放置后的数据进行迁移,从而达到读负载的均衡提升系统性能。但是,EDP算法需要多项式的时间对数据进行迁移从而达到均衡读性能的目的,因此工作量和开销都很大。
另外,数据的连续读取作为读操作中的重要类型,其性能直接关系着系统吞吐率的大小。然而,上述研究都未针对重删纠删的混合系统中的数据连续读取问题进行针对性研究。具体而言,数据在经过去重之后,需要分组进行编码,生成冗余,然而由于分组大小的限制和冗余分块的产生,会在各分组间穿插放置对应的冗余分块,中断编码前连续放置的数据分块。由于冗余分块不会被用户访问,因此数据分块中夹杂冗余分块的布局会造成数据连续读取时的负载不均衡现象,导致无法最大限度地利用节点间的并行性。
发明内容
本发明所要解决的技术问题是面向各类分布式重复数据删除和纠删码并存的混合存储系统,通过改变对数据分块和校验分块的放置策略,在保证系统可靠性不受任何影响的前提下,进一步提升数据连续读取时的读性能。其特征在于,不改变各条带的构成,通过将多个条带中所有的数据元素和所有校验元素分别连续放置,从而保证所有数据元素放置的连续性,消除原校验元素中断数据元素放置所带来的负载瓶颈,从而最大限度地提升数据连续读取时的并行度,提升连续读时的系统读性能。
本发明的技术方案是:由于现有的重删纠删混合存储系统继承了简单放置策略或者传统的轮转放置策略,对原来数据分块和编码后产生的冗余分块统一进行放置,使得不会被用户访问的冗余分块中断了数据分块的连续性,导致出现对数据连续读取时的负载不均衡现象,无法最大限度地利用节点间的并行性。所以本发明针对重删纠删混合存储系统中的数据连续读取的问题进行优化,提出了将多个分组的全部数据分块和全部冗余分块分别进行独立连续放置的方法,用以提升数据连续读取时的系统性能。
所以,本发明中对于重复数据删除后的数据分块和分组之后编码产生的冗余分块放置的关键在于如何在保证不影响系统可靠性和重删率的前提下,尽可能地保证更多的数据分块连续独立地放置在相对独立的存储节点上,尽可能多地有效地利用多节点的并行性实现读负载均衡,提升读性能。
具体技术方案为:
第一步,数据分块:采用定长分块的方式将文件或数据流进行分割,将其分割为若干个chunk(数据分块)。分块粒度的大小应当根据应用场景来进行选择。如果分块粒度越大,则后期计算开销越小,但是重删效果不够明显,反之,如果粒度过小,则会引入过多的计算开销,影响系统性能。
第二步,计算特征值:计算每一块chunk的特征值,该特征值将作为该chunk的唯一标识,并作为下一步判断是否重复的依据。通常特征值的计算采用抗冲突能力较强的hash加密算法,如MD5、SHA-1等;
第三步,查询索引表:将计算好的特征值与现有的索引表中的特征值逐一对比,用以判断其代表的chunk是否重复。该索引表会随着数据量的增大而增大,因此当数据量庞大时会降低系统性能;
第四步,去除重复数据:根据查询结果,如果是重复的chunk则可以直接丢弃,但需要将节点号保存下来,将其元数据指针指向重复的chunk,以便后面需要访问时找到数据;
第五步,冗余编码:查询后判断是不重复的chunk,则将其特征值作为一个新的条目追加到索引表中,并根据分组大小对k个此类唯一块进行冗余编码,生成m个冗余分块。所使用的具体的编码和编码参数应该根据系统的可靠性需求进行选择。
第六步,放置存储分块:根据节点数和冗余编码参数确定多个分组内数据和冗余的放置位置,根据放置算法为每个数据分块和冗余分块分配适当的地址,并进行存储。
本发明涉及的重复数据删除原理、纠删码编码原理和具体流程,以及面向数据连续读取的重删纠删数据放置方法的具体过程详见附图说明。
使用本发明能达到以下有益效果:
1、保证系统原有的重删率。重删率由数据查询比对过程决定,本发明针对的是数据放置过程,因此不会对系统原有的重删率造成任何影响;
2、保证系统原有的可靠性。系统的可靠性由冗余编码参数和放置策略共同决定。本发明在对放置策略的修改过程中,严格保证分组内部的元素放置节点的互斥性,从而保证系统的可靠性。
3、提升系统的连续读性能。由于本发明尽可能地保证更多的数据分块连续独立地放置在相对独立的存储节点上,在数据连续读取时,能够尽可能多地有效地利用多节点的并行性实现读负载均衡,尽可能多地并发地读取多个数据分块,从而消除读负载瓶颈,提升读性能。
附图说明
图1是重复数据删除原理图;
图2是重复数据删除和纠删码混合系统的基本流程图(简单放置策略和轮转放置);
图3是本发明面向数据连续读取的重删纠删混合系统的数据放置方法的示意图;
图4本发明面向数据连续读取的重删纠删混合系统的数据放置方法的流程图。
具体实施方式
图1是仅采用重复数据删除的存储系统原理示意图。文件首先进行分块,然后对每一分块通过计算哈希值生成对应的指纹,将指纹与索引表中的指纹进行比对,去除重复数据,最后将唯一数据分块按照节点号依次轮转进行放置并存储到相应节点。
图2是重复数据删除和纠删码混合系统的基本流程图,包括数据分块、计算特征值、查询索引表、删除重复块、冗余编码和放置并存储分块。其放置策略为不区分冗余分块和数据分块的前提下,按条带分组依次顺序轮转放置分块。
图3是本发明面向数据连续读取的重删纠删混合系统的数据放置方法的示意图。具体的执行过程为:(假设为纠删码编码参数为
第一步,定义变量整型变量
第二步,设条带stripe的编号为i,当第一条条带生成时,初始化i=0。
第三步,令临时变量
第四步,将元素(分块)Cij分发给指定的第
第五步,判断是否有新条带生成,如果有,则,并进入第三步,否则结束。
图4为本发明面向数据连续读取的重删纠删混合系统的数据放置方法的流程图。
对于现有的重删纠删混合系统,其分块放置策略为不区分冗余分块和数据分块的前提下,按条带分组依次简单放置或者顺序轮转放置分块,使得单个文件的多个数据块可能位于同一个节点上,如图2中不管是简单放置策略还是轮转放置策略中的文件File1,其数据分块A和E都存储在Node#0上,造成File1读取时的负载瓶颈,无法尽可能地利用系统的并发性,制约读性能。
本发明针对上述情况,在放置时有区别地对待数据分块和冗余分块,在保证原系统重删率和可靠性不变的前提下,根据节点数目和编码参数选定特定数目的条带构成一个分组,在一个分组内保证所有数据分块和冗余分块分别独立连续放置,解决条带间冗余分块中断数据分块的问题,最大限度地消除数据连续读取时的负载瓶颈,实现各独立节点并行性的最大化利用,提升系统读性能。
由此可以看出,本发明能够针对重删纠删混合系统中的数据连续读问题,在保证系统可靠性的前提下,最大可能地保证更多数目的数据分块顺序连续放置,从而在连续读取数据时尽可能地利用节点间的并行性,消除读负载的不均衡,达到了提升连续读性能的效果。
机译: 流数据中的纠删和有限接收执行方法和装置以及数据通信设备
机译: 用于数据传输系统的级联纠错方案中的纠删解码器和解码方法
机译: 用于数据传输系统的级联纠错方案中的纠删解码器和解码方法