分布式存储系统数据存储方法、装置、系统及存储介质与流程

文档序号:16667522发布日期:2019-01-18 23:22阅读:142来源:国知局
分布式存储系统数据存储方法、装置、系统及存储介质与流程

本发明涉及计算机领域,特别涉及一种分布式存储系统数据存储方法、装置、系统及可读存储介质。



背景技术:

伴随数据信息高速发展,云计算、大数据、物联网等各种数据交互导致存储数据迅速增长,对存储设备存储的数据管理已成为一个较为关键的问题。

存储设备中存放的数据普遍具有高冗余性,即在不同文件间重复存储的数据较多,尤其是各种备份存储系统和各类操作系统。降低数据重复冗余度可以有效提升存储空间的利用率,是存储系统中的重要研究项目。

目前降低数据重复冗余度通常直接进行文件的比对,将重复文件删除的方法。而目前重复的文件多为容灾备份等大文件,文件内容较多,目前的文件很少存在文件间的完全重复,主要是文件内部存在较多的冗余数据,通过对文件进行整体比对能够检测的重复文件较少,系统中的重复冗余数据仍较多,对系统内存的过度占用情况缓解效果较小。

因此,如何实现精确化数据重删,缓解系统内存的占用情况,是本领域技术人员需要解决的技术问题。



技术实现要素:

本发明的目的是提供一种分布式存储系统数据存储方法,该方法通过将待存储的文件进行分块,通过分割文件块进行数据比对确定冗余数据的确定,可以提高对文件中部分重复数据的检测概率,实现了精确化数据重删;本发明的另一目的是提供一种分布式存储系统数据存储装置系统及可读存储介质,具有上述有益效果。

为解决上述技术问题,本发明提供一种分布式存储系统数据存储方法,包括:

对待存储文件分块,得到若干待存储文件块;

将所述待存储文件块与预先存储的文件块进行内容比对,判断系统中是否存在与所述待存储文件块内容匹配的文件块;

如果有,获取系统中所述内容匹配的文件块的数据存储位置;

根据所述数据存储位置对匹配的待存储文件块建立数据索引。

优选地,所述将所述待存储文件块与预先存储的文件块进行内容比对,判断系统中是否存在与所述待存储文件块内容匹配的文件块包括:

计算所述待存储文件块的hash值,得到待存储hash值;

将所述待存储hash值与索引表中文件块hash值进行比对,判断所述索引表中是否有与所述待存储hash值相同的文件块hash值;其中,所述索引表中存储有系统中已存储文件的文件块hash值以及对应的文件块存储位置。

优选地,所述分布式存储系统数据存储方法还包括:

如果所述索引表中没有与所述待存储hash值相同的文件块hash值,存储所述待存储数据,并将所述待存储hash值以及对应的数据存储位置添加至所述索引表中。

优选地,所述分布式存储系统数据存储方法还包括:

将更新后的索引表实时发布至系统中各节点。

优选地,计算所述待存储文件块的hash值包括:

通过sha-1哈希函数计算所述待存储文件块的hash值。

优选地,所述索引表的生成方法包括:

判断系统中是否存在预先存储的文件;

如果有,根据已存储文件的文件块占用情况计算所述已存储文件的文件块hash值;

统计计算得到所述已存储文件的各文件块hash值以及对应的数据存储位置,生成索引表。

优选地,所述分布式存储系统数据存储方法还包括:

对所述索引表中各文件块hash值两两比对,判断所述索引表中是否存在相同hash值的文件块;

如果有,确定保留文件块与非保留文件块;

将所述保留文件块的数据存储位置替换所述非保留文件块的存储数据。

本发明公开一种分布式存储系统数据存储装置,包括:

分块单元,用于对待存储文件分块,得到若干待存储文件块;

比对单元,用于将所述待存储文件块与预先存储的文件块进行内容比对,判断系统中是否存在与所述待存储文件块内容匹配的文件块;

数据信息获取单元,用于如果有,获取系统中所述内容匹配的文件块的数据存储位置;

索引建立单元,用于根据所述数据存储位置对匹配的待存储文件块建立数据索引。

本发明公开一种分布式存储系统数据存储设备,包括:

存储器,用于存储程序;

处理器,用于执行所述程序时实现所述分布式存储系统数据存储方法的步骤。

本发明公开一种可读存储介质,所述可读存储介质上存储有程序,所述程序被处理器执行时实现所述分布式存储系统数据存储方法的步骤。

本发明所提供的分布式存储系统数据存储方法,通过将待存储的文件进行分块,通过将文件划分为数据块进行数据的分析,将待存储文件块与预先存储的文件块进行内容比对,可以实现提高文件中部分重复数据的检测概率,可查询到的冗余文件块会大大增加,通过分割文件块进行数据比对精确化实现了冗余数据的确定,相比对整个文件进行整体分析可以大大提高冗余数据的检测概率;如果系统中存在与待存储文件块内容匹配的文件块,表明当前存储的该文件块的内容在系统中有内容匹配的文件块,即该待存储文件块为冗余文件块,根据系统中内容匹配的文件块的数据存储位置对该冗余文件块建立数据索引,即不存储该冗余文件块的数据,通过将当前文件块指向预先存储的匹配数据,即满足待存储文件系统存储的需求,又大大减少了冗余数据的内存占用。

此外,本发明另一实施例公开了通过文件块hash值进行文件块内容比对这一技术特征,文件块的hash值可以通过简单的特征值体现文件块内容的唯一性特征,不仅可以大大简化在文件内容的比对过程中系统资源和负载的消耗,而且可以提高数据重删的效率,实现高效化重删。

本发明还提供了一种分布式存储系统数据存储装置、系统及可读存储介质,具有上述有益效果,在此不再赘述。

附图说明

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

图1为本发明实施例提供的一种分布式存储系统数据存储方法的流程图;

图2为本发明实施例提供的一种分布式存储系统数据存储装置的结构框图;

图3为本发明实施例提供的一种分布式存储系统数据存储设备的结构框图;

图4为本发明实施例提供的一种分布式存储系统数据存储设备的结构示意图。

具体实施方式

本发明的核心是提供一种分布式存储系统数据存储方法,该方法通过将待存储的文件进行分块,通过分割文件块进行数据比对确定冗余数据的确定,可以提高对文件中部分重复数据的检测概率,实现了精确化数据重删;本发明的另一核心是提供一种分布式存储系统数据存储装置、系统及可读存储介质。

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

请参考图1,图1为本实施例提供的分布式存储系统数据存储方法的流程图;该方法主要可以包括:

步骤s110、对待存储文件分块,得到若干待存储文件块。

客户端接收到数据存储请求后,系统首先对带存储的文件进行数据分块,本实施例对文件的分块方法不做限定,可以规定统一的分块规则,将所有待存储文件分为固定大小的文件块,也可以根据文件内容以及存储节点对带存储数据的分块规则进行自定义。

具体地,自定义方法可以根据分块大小可通过数据大小和存储节点(重删节点)来确定,如果存储节点较多,且数据文件数据量不大,则可以将块大小定义为较低值,如1kb,如果数据量较大且存储节点未达到较大值则可以将块大小定义为较高值,如512k。

将待存储文件分块后可以得到该文件对应的若干文件块,每个文件块中存储有文件数据。

步骤s120、将待存储文件块与预先存储的文件块进行内容比对,判断系统中是否存在与待存储文件块内容匹配的文件块。

将分割后的文件块与系统中预先存储的文件块进行内容比对,判断系统中预先存储的数据中是否有与分割后的待存储文件块内容匹配的文件块,确定匹配的规则可以根据文件内容确定,可以在内容相似度达到98%以上算作两文件块内容匹配,也可以在内容相似度达到100%才算作两文件块内容匹配等,在此对具体的匹配规则不做限定,当文件重要级别较高、文件内容精确化程度较高时,可以设置较高的匹配度。

内容匹配即文件重复,若出现文件块内容匹配即可判定出现文件块重复,待存储的文件块即可判定为冗余块。

本实施例对文件块的内容比对的具体方法不做限定,可以参照目前对文件进行整体匹配的方法逐一进行文件块内容的比对,也可以提取文件块内容的特征值,对待存储文件块以及预先存储的文件块特征值进行比对,通过提取特征值进行比对可以大大简化数据比对过程,减少比对过程的资源占用。

如果系统中存在与待存储文件块内容匹配的文件块,则执行步骤s130。

步骤s130、获取系统中内容匹配的文件块的数据存储位置。

步骤s140、根据数据存储位置对匹配的待存储文件块建立数据索引。

如果系统中存在与待存储文件块内容匹配的文件块,表明当前待存储的文件块为冗余块,在系统预先存储的文件块中包括与该文件块内容匹配的文件块,该待存储文件块为冗余文件块。为减少冗余文件块的数据内存占用,则不存储该部分冗余数据,将系统中预先存储的与该部分数据匹配的数据当作该部分数据,将该待存储的匹配文件块的数据索引迁移至对应匹配的预先存储的文件块处,根据匹配数据的存储位置对匹配的待存储文件块建立数据索引。

如果未发现匹配,说明待存储数据块是非冗余数据,此种情况下的数据存储规则不做限定,可以参照现有的数据存储规则进行数据存储。

基于上述介绍,本发明实施例公开的分布式存储系统数据存储方法,通过将待存储的文件进行分块,通过将文件划分为数据块进行数据的分析,将待存储文件块与预先存储的文件块进行内容比对,可以实现提高文件中部分重复数据的检测概率,可查询到的冗余文件块会大大增加,通过分割文件块进行数据比对精确化实现了冗余数据的确定,相比对整个文件进行整体分析可以大大提高冗余数据的检测概率;如果系统中存在与待存储文件块内容匹配的文件块,表明当前存储的该文件块的内容在系统中有内容匹配的文件块,即该待存储文件块为冗余文件块,根据系统中内容匹配的文件块的数据存储位置对该冗余文件块建立数据索引,即不存储该冗余文件块的数据,通过将当前文件块指向预先存储的匹配数据,即满足待存储文件系统存储的需求,又大大减少了冗余数据的内存占用。

上述实施例中对文件块的内容比对的具体方法不做限定,可以提取文件块内容的特征值,对待存储文件块以及预先存储的文件块特征值进行比对,以减少比对过程的资源占用。本实施例具体对文件块的内容比对方法进行介绍。

文件块特征数据的提取方法有多种,可以参照现有的特征数据提取方法,例如,nmf算法、fast算法、surf算法、hash算法等。其中hash值数据较为精炼,计算得到的特征值较为简单,而且具有唯一性,可以精确体现文件块内容特征。优选地,可以通过计算文件块的hash值进行比对实现对文件块的内容比对,具体地,将待存储文件块与预先存储的文件块进行内容比对,判断系统中是否存在与待存储文件块内容匹配的文件块具体可以包括以下步骤:

计算待存储文件块的hash值,得到待存储hash值;

将待存储hash值与索引表中文件块hash值进行比对,判断索引表中是否有与待存储hash值相同的文件块hash值;其中,索引表中存储有系统中已存储文件的文件块hash值以及对应的文件块存储位置。

通过对文件块hash值进行文件块内容比对不仅可以大大简化在文件内容的比对过程中系统资源和负载的消耗,而且可以提高数据重删(删除重复数据)的效率,实现高效化重删。其中,计算文件块hash值的具体步骤可以参照现有技术,在此不再赘述。

基于上述实施例,对索引表中没有与待存储hash值相同的文件块hash值的情况不做限定,可以直接存储该部分数据,优选地,在进行数据存储的同时,还可以将待存储hash值以及对应的数据存储位置添加至索引表中,以实现对索引表中文件块内容的实时更新。

另外,分布式存储系统中包括若干节点,分别实现不同的数据功能,包括数据存储、数据管理等,索引表一般存储于管理节点中,而为缓解管理节点的管理压力,一般会选取若干普通节点分担管理节点的管理任务,若索引表更新后系统中其它节点可能会出现信息延迟的情况,仍然按照之前的索引表进行信息比对,为减少这种情况,避免数据的重复存储,可以将更新后的索引表实时发布至系统中各节点,以实现对系统中各节点索引信息的更新提示。

其中,hash算法包括锁种多种函数,对具体选用的hash函数不做限定,优选地,可以通过sha-1哈希函数计算待存储文件块的hash值。sha-1哈希函数计算速度快,可以提升信息比对速度,提升数据存储效率。

此外,由于在应用本发明提供苹果呢的数据存储方法进行数据存储之前,系统磁盘中可能已有数据预先存储,可以不对该部分数据进行比对,仅对应用该存储方法之后的系统待存储文件进行数据比对,即索引表中可以不包括该部分预先存储的数据,以减少对系统资源的占用。

而在该部分预存储的数据量较大时,在新存储的文件块中可能会存在大量与该部分数据重复的数据,为进一步减少系统空间的占用,提升重删率,优选地,可以判断系统中是否存在预先存储的文件;如果有,根据已存储文件的文件块占用情况计算已存储文件的文件块hash值;统计计算得到已存储文件的各文件块hash值以及对应的数据存储位置,生成索引表。

另外,由于预存储的数据本身可能存在重复数据,为减少预存储数据的重复率,提升系统存储性能,优选地,可以对索引表中各文件块hash值两两比对,判断索引表中是否存在相同hash值的文件块;如果有,确定保留文件块与非保留文件块;将保留文件块的数据存储位置替换非保留文件块的存储数据。通过将索引表中hash值进行比对,如果有重复数据,将重复数据替换为该部分数据对应的数据索引,实现对预存储数据中重复数据的重删,降低系统数据存储内存占用。

为加深对发明提供的数据存储方法的理解,在此以进行文件块hash比对为例对整体存储流程进行介绍,其它基于本发明提供的分布式存储系统数据存储方法的实现方式均可参照本实施例的介绍。

客户端接收数据存储请求,对接收到的待存储文件进行分块。

分块完毕后将各个文件块分配给集群的存储节点(重删节点),实现多个节点并行重删业务。

通过sha-1哈希函数进行计算待存储数据块的hash值,得到数据块hash值后查询数据索引表,如果索引表中存在该hash值则表示该数据块已存在并存储,该待存储文件块对应的数据块为冗余数据,则只记录该查询到的hash值指针位置即可;如果在数据索引表中未发现匹配,说明该数据块是非冗余数据,则进行数据存储,并将数据块的指针位置存入到数据索引表,并将数据块的指针位置存入到数据索引表。

其中,索引表存放于数据库中,每个文件块对应索引表中的一组数据,以hash值作为索引关键字,因为hash值作为唯一块识别可以确保数据索引表所存储的数据块准确性,也可以提高数据索引表查询速度提高重删效率。

由于分布式海量存储系统的多节点存储数据,可以通过重删算法实现节点并行执行重删服务,重删服务在数据块下发后根据所有节点共享的数据索引校验是否为重删数据,如果为冗余数据则直接存储数据索引中的指针,如果非冗余数据则更新共享的数据索引表,并实时发布至各个节点更新。通过上述海量存储(数据存储中的容量增长是趋于无限,没有上限)分布式重删技术实现多节点并行数据重删,优化重删过程,实现较高效率的数据重删

本实施例通过对准备存储的文件进行存储校验,使用sha-1哈市函数计算文件块hash值,并根据指针建立数据索引表,对已存在的数据块hash值校验,通过判定索引表中是否含有与该数据块相同的hash值,如果存在则表明该数据为冗余数据,可存储该数据块hash值指针,降低存储设备数据使用容量,提升存储利用率,且可以降低系统负载压力,减小数据读写延迟;如果不存在则表明该数据块不是冗余数据,则将该hash值记录于数据索引表中,同时海量存储系统具有多节点数据分布共享特性,所以不同数据存储不同节点时可直接并行进行块(kb)级数据重删,对于备份,灾备数据等数据可有效提高数据存储效率。

请参考图2,图2为本发明实施例提供的分布式存储系统数据存储装置的结构框图;可以包括:分块单元210、比对单元220、数据信息获取单元230以及索引建立单元240。本实施例提供的分布式存储系统数据存储装置可与上述分布式存储系统数据存储方法相互对照。

其中,分块单元210主要用于对待存储文件分块,得到若干待存储文件块;

比对单元220主要用于将待存储文件块与预先存储的文件块进行内容比对,判断系统中是否存在与待存储文件块内容匹配的文件块;

数据信息获取单元230主要用于如果系统中存在与待存储文件块内容匹配的文件块,获取系统中内容匹配的文件块的数据存储位置;

索引建立单元240主要用于根据数据存储位置对匹配的待存储文件块建立数据索引。

优选地,比对单元具体可以为hash比对单元,包括:

hash值计算子单元,用于计算待存储文件块的hash值,得到待存储hash值;

hash值比对子单元,用于将待存储hash值与索引表中文件块hash值进行比对,判断索引表中是否有与待存储hash值相同的文件块hash值;其中,索引表中存储有系统中已存储文件的文件块hash值以及对应的文件块存储位置。

优选地,本实施例提供的分布式存储系统数据存储装置可以还包括:存储单元,存储单元与hash值比对子单元连接,主要用于如果索引表中没有与待存储hash值相同的文件块hash值,存储待存储数据,并将待存储hash值以及对应的数据存储位置添加至索引表中。

优选地,本实施例提供的分布式存储系统数据存储装置可以还包括:更新单元,更新单元与存储单元连接,主要用于将更新后的索引表实时发布至系统中各节点。

优选地,hash值计算子单元具体可以用于:通过sha-1哈希函数计算待存储文件块的hash值。

优选地,分布式存储系统数据存储装置中索引表生成单元主要可以包括:

判断子单元,用于判断系统中是否存在预先存储的文件;

预存储计算子单元,用于如果系统中存在预先存储的文件,根据已存储文件的文件块占用情况计算已存储文件的文件块hash值;

统计计算得到已存储文件的各文件块hash值以及对应的数据存储位置,生成索引表。

优选地,索引表生成单元中可以还包括:索引表重复比对单元;

索引表重复比对单元主要包括

预存储比对子单元,用于对索引表中各文件块hash值两两比对,判断索引表中是否存在相同hash值的文件块;

文件块确定子单元,用于如果索引表中存在相同hash值的文件块,确定保留文件块与非保留文件块;

数据替换子单元,用于将保留文件块的数据存储位置替换非保留文件块的存储数据。

本实施例提供的分布式存储系统数据存储装置通过分块单元将待存储的文件进行分块,比对单元通过分割文件块进行数据比对确定冗余数据的确定,可以提高对文件中部分重复数据的检测概率,实现了精确化数据重删。

请参考图3,图3为本实施例提供的分布式存储系统数据存储设备的结构框图;该设备可以包括:存储器300以及处理器310。分布式存储系统数据存储设备可参照上述分布式存储系统数据存储方法的介绍。

其中,存储器300主要用于存储程序;

处理器310主要用于执行程序时实现上述分布式存储系统数据存储方法的步骤。

请参考图4,为本实施例提供的分布式存储系统数据存储设备的结构示意图,该数据存储设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)322(例如,一个或一个以上处理器)和存储器332,一个或一个以上存储应用程序342或数据344的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器332和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储介质330通信,在数据存储设备301上执行存储介质330中的一系列指令操作。

数据存储设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作系统341,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上面图1所描述的分布式存储系统数据存储方法中的步骤可以由分布式存储系统数据存储设备的结构实现。

本实施例公开了一种可读存储介质,可读存储介质上存储有程序,程序被处理器执行时实现分布式存储系统数据存储方法的步骤,其中,分布式存储系统数据存储方法可参照图1对应的实施例,在此不再赘述。

该可读存储介质具体可以为u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可存储程序代码的可读存储介质。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的分布式存储系统数据存储方法、装置、设备及可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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