基于分布式文件系统的多层重复数据删除方法及装置与流程

文档序号:11155304阅读:397来源:国知局
基于分布式文件系统的多层重复数据删除方法及装置与制造工艺

本发明涉及信息存储领域,尤其涉及基于分布式文件系统的多层重复数据删除方法及装置。



背景技术:

现有的分布式文件系统中会使用重复数据删除技术对重复数据进行存储以提高磁盘利用率,降低成本。但是随着技术和信息的发展,文件变得越来越多样化,整个文件内容完全相同的几率越来越小。例如,开发者会根据自己的需求对软件做出针对性的修改,这种情况下,修改后的软件与原软件存在细微差异,现有的重复数据删除方法对重复数据的删除率较低。



技术实现要素:

本发明的主要目的在于提供一种基于分布式文件系统的多层重复数据删除方法及装置,旨在提高对重复数据的删除率。

为实现上述目的,本发明提供一种基于分布式文件系统的多层重复数据删除方法,所述方法包括以下步骤:

获取待写入文件的数字指纹;

判断全局文件数字指纹列表中是否存在所述待写入文件的数字指纹;

若是,则记录所述待写入文件的元数据信息;

若否,则将待写入文件按预设方式切片,并获取每个切片的数字指纹;

判断全局文件切片数字指纹列表中是否存在所述切片的数字指纹;

若是,则将所述切片的元数据信息记录到存储节点中;

若否,则将所述切片及该切片的数字指纹发送到对应的存储节点。

优选的,所述将所述切片及该切片的数字指纹发送到对应的存储节点之后还包括步骤:

判断当前存储节点的切片数字指纹列表中是否存在所述切片的数字指纹;

若是,则确认该切片写入成功;

若否,则写入所述切片,并将所述切片的数字指纹记录到本存储节点的切片数字指纹列表。

优选的,所述将所述切片写入磁盘,并将所述切片的数字指纹记录到本存储节点的切片数字指纹列表之后还包括步骤:

定时获取系统负载;

当系统负载低于预设值时,将每个存储节点的切片数字指纹列表中的信息上传至所述全局切片数字指纹列表。

优选的,所述将待写入文件按预设方式切片,并获取每个切片的数字指纹具体包括步骤:

判断所述待写入文件的大小是否大于预设值;

若是,则将所述待写入文件按预设大小切片;

若否,则将所述待写入文件整体确定为一个切片。

优选的,所述获取待写入文件的数字指纹具体包括步骤:

获取所述待写入文件的MD5校验值和sha值;

将所述MD5校验值和sha值的字符串叠加作为待写入文件的数字指纹。

此外,为实现上述目的,本发明还提供一种基于分布式文件系统的多层重复数据删除装置,包括:

第一获取模块,用于获取待写入文件的数字指纹;

第一判断模块,用于判断全局文件数字指纹列表中是否存在所述待写入文件的数字指纹;

第一记录模块,用于在所述第一判断模块的判断结果为“是”时,记录所述待写入文件的元数据信息;

切片模块,用于在所述第一判断模块的判断结果为“否”时,将待写入文件按预设方式切片,并获取每个切片的数字指纹;

第二判断模块,用于判断全局文件切片数字指纹列表中是否存在所述切片的数字指纹;

第二记录模块,用于在所述第二判断模块的判断结果为“是”时,将所述切片的元数据信息记录到存储节点中;

发送模块,用于在所述第二判断模块的判断结果为“否”时,将所述切片及该切片的数字指纹发送到对应的存储节点。

优选的,还包括:

第三判断模块,用于判断当前存储节点的切片数字指纹列表中是否存在所述切片的数字指纹;

确认模块,用于在所述第三判断模块判断为“是”时时,确认该切片写入成功;

写入模块,用于在所述第三判断模块判断为“否”时,写入所述切片,并将所述切片的数字指纹记录到本存储节点的切片数字指纹列表。

优选的,还包括:

第二获取模块,用于定时获取系统负载;

上传模块,用于在系统负载低于预设值时,将每个存储节点的切片数字指纹列表中的信息上传至所述全局切片数字指纹列表。

优选的,所述切片模块具体包括:

判断单元,用于判断所述待写入文件的大小是否大于预设值;

切片单元,用于在所述判断单元判断为“是”时,将所述待写入文件按预设大小切片;

确定单元,用于在所述判断单元判断为“否”时,将所述待写入文件整体确定为一个切片。

优选的,所述第一获取模块具体包括:

获取单元,用于获取所述待写入文件的MD5校验值和sha值;

叠加单元,用于将所述MD5校验值和sha值的字符串叠加作为待写入文件的数字指纹。

本发明的实施例包括以下步骤:获取待写入文件的数字指纹;判断全局文件数字指纹列表中是否存在所述待写入文件的数字指纹;若是,则记录所述待写入文件的元数据信息;若否,则将待写入文件按预设方式切片,并获取每个切片的数字指纹;判断全局文件切片数字指纹列表中是否存在所述切片的数字指纹;若是,则将所述切片的元数据信息记录到存储节点中;若否,则将所述切片及该切片的数字指纹发送到对应的存储节点。本发明的技术方案通过对文件或切片的数字指纹进行存储,提高了对重复数据的删除率,节约了存储空间。

附图说明

图1为本发明的方法一实施例的流程示意图;

图2为本发明的方法第二实施例的流程示意图;

图3为本发明的方法第三实施例的流程示意图;

图4为本发明的装置一实施例的功能模块示意图;

图5为本发明的装置第二实施例功能模块示意图;

图6为本发明的装置第四实施例中切片模块的细化功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供一种基于分布式文件系统的多层重复数据删除方法。

分布式系统(distributed system)是建立在网络之上的软件系统,具有高度的内聚性和透明性。内聚性是指每一个数据库分布节点高度自治,有本地的数据库管理系统。透明性是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。在分布式数据库系统中,用户感觉不到数据是分布的,即用户不须知道关系是否分割、有无副本、数据存于哪个站点以及事务在哪个站点上执行等。独立的计算机展现给用户的是一个统一的整体,就好像是一个系统,该系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。最典型的的分布式系统就是万维网(World Wide Web)。

现在提出本申请的方法的第一实施例。如图1所示,所述方法包括以下步骤:

S100、获取待写入文件的数字指纹。

数字指纹是根据文件的内容生成的唯一性的数字编码,常见的数字指纹通常有MD5(Message Digest Algorithm信息摘要算法第5版)、sha1(安全哈希算法Secure Hash Algorithm)等。每个文件通过预设的函数或算法生成唯一的数字指纹,由于函数和算法的唯一性,即使两个文件中仅有细微差异,得到的数字指纹也相距甚远,因此校验文件的数字指纹是判断文件是否相同的可靠依据。

本实施例中,当接收到来自客户端的文件写入请求时,先获取该待写入文件的数字指纹。

S200、判断全局文件数字指纹列表中是否存在所述待写入文件的数字指纹;若是,则执行S210步骤,若否,则执行S220步骤。

进一步的,当在获取所述待写入文件的数字指纹后,在判断全局文件数字指纹列表中是否存在相应的数字指纹。这里的全局文件数字指纹列表指的是存储有所述分布式文件系统中所有完整文件数字指纹的列表。若该全局文件数字指纹列表中存在待写入文件的数字指纹,则原文件系统中存在数字指纹与待写入文件数字指纹相同的文件,由数字指纹的唯一性可以确定,原文件系统中已经存在与待写入文件相同的文件,此时继续执行S210步骤;反之,若全局文件数字指纹列表中不存在待写入文件的数字指纹,则原文件系统中存在数字指纹与待写入文件数字指纹相同的文件,则证明原文件系统中不存在与待写入文件相同的文件,此时继续执行S220步骤。

S210、记录所述待写入文件的元数据信息。

本实施例中,待写入文件的元数据信息记录于元数据服务器中。当原文件系统中存在数字指纹与待写入文件数字指纹相同的文件时,显然如果再次将待写入文件上传,则会重复占用空间,所以本实施例中并不将原文件上传,而是直接在元数据服务器中记录待写入文件的元数据,实现了被重复上传的文件的删除。由公知的解释可知,元数据(Metadata),又称中介数据、中继数据,主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。简而言之,元数据就是描述数据的数据(data about data)。本实施例中,元数据主要包括系统中原有的与待写入文件相同的文件的路径和资源信息,待写入文件的元数据记录于元数据服务器中之后,再次调用待写入文件时,直接通过记录的待写入文件信息调用系统中原有的与待写入文件相同的文件就可以获取与待写入文件完全相同的文件。通过记录待写入文件的元数据信息代替了现有技术中直接上传文件,可以有效节约存储空间和数据交换时间。

S220、将待写入文件按预设方式切片,获取每个切片的数字指纹,并执行S300步骤。

当全局文件数字指纹列表中不存在待写入文件的数字指纹,则原文件系统中存在数字指纹与待写入文件数字指纹相同的文件,则证明原文件系统中不存在与待写入文件相同的文件。此时,本实施例中进一步将待写入文件按预设方式切片。应对理解的是,随着技术和信息的发展,文件呈多样性趋势变化,基于同一文件会衍生出多种不同的版本。以操作系统为例,为公知熟知的Windows10操作系统(视窗操作系统10)包括区分为32位系统和64位系统,进一步的又区分为家庭版、企业版、专业版等多个版本,这些不同操作版本的部分文件内容是完全相同的,其中每个镜像文件的大小约为4GB,如果仅校验数字指纹,则上述6种不同版本的操作系统属于不同的文件,存储上述镜像文件合计约存储空间24GB,而其中重复数据占用了绝大部分空间。

本实施例中,进一步将每个文件按照预设模式切片,将一个完整的文件分为若干个小的切片文件。在对文件切片完成后,按照预设算法或函数获取每个切片的数字指纹,并进一步执行S300步骤。

S300、判断全局文件切片数字指纹列表中是否存在所述切片的数字指纹;若是,则执行S310步骤,若否则执行S320步骤。

获取每个切片的数字指纹后,判断全局文件切片数字指纹列表中是否存在与所述切片的数字指纹相同的数字指纹,显然,如果存在,则证明存在相同的切片,反之则证明不存在相同的切片。当存在相同的切片时,执行S310步骤,当不存在相同的切片时,执行S320步骤。

S310、将所述切片的元数据信息记录到存储节点中。

当分布式文件系统中存在相同的切片时,将元数据信息记录到相应的存储节点中。显然,当需要再次调用待写入文件时,通过调用待写入文件的元数据,获取其切片的相关信息,并进一步通过调用切片的元数据信息,获取切片的存储信息将原待写入文件还原实现对原待写入文件的调用。

S320、将所述切片及该切片的数字指纹发送到对应的存储节点。

当分布式文件系统中不存在相同的切片时,则将所述切片及该切片的数字指纹发送到对应的存储节点,并进行存储。

显然本实施例中,如果需要存储上述6个版本的操作系统的镜像文件,在切片后,文件中绝大部分相同内容的文件构成的切片只需要存储一次,构成差异的切片文件需要单独存储,则仅需要不到5GB的存储空间就可以实现对原需要占用24GB存储空间的文件的存储。

本实施例中通过对文件的数字指纹的校验,并进一步通过对具有不同数字指纹的文件进行切片并再次对切片的数字指纹进行校验,有效的避免了对重复数据的多次存储,节约了存储空间。也相应的节约了数据传输时间和数据存储成本。

进一步的,请参阅图2,基于上述实施例,提出本发明方法的第二实施例。所述S320步骤之后还包括步骤:

S400判断当前存储节点的切片数字指纹列表中是否存在所述切片的数字指纹;若是,则执行S410步骤,若否,则执行S420步骤。

S410确认该切片写入成功。

S420写入所述切片,并将所述切片的数字指纹记录到本存储节点的切片数字指纹列表。

应当理解的是,本实施例中,每个存储节点中设有该存储节点对应的切片数字指纹列表,当切片发送至对应的存储节点之后,判断当前存储节点的切片数字指纹列表中是否存在所述切片的数字指纹。如果当前存储节点的切片数字指纹列表中存在所述切片的数字指纹,则证明当前存储节点中已经存储有相同的切片,则只需要返回元数据服务器该切片以写入成功。如果当前存储节点的切片数字指纹列表中不存在所述切片的数字指纹,则将该切片写入磁盘。

如图3所示,在基于本发明的方法上述第二实施例的第三实施例中,所述步骤S420之后还包括步骤:

S500、定时获取系统负载。

S600、当系统负载低于预设值时,将每个存储节点的切片数字指纹列表中的信息上传至所述全局切片数字指纹列表。

显然,系统在运行过程中,如果占用过多系统负载,则会影响数据和文件的存储和传输速度,所有本实施例中,进一步获取系统的负载,并只有在系统负载低于某预设值时才进行进一步操作。本实施例中,当系统负载低于预设值时,将每个存储节点的切片数字指纹列表中的信息上传至所述全局切片数字指纹列表。

在本发明的方法基于上述实施例的第四实施例中,所述步骤S220具体包括:

S221判断所述待写入文件的大小是否大于预设值;若是,则执行S222步骤,若否,则执行S223步骤。

S222将所述待写入文件按预设大小切片。

S223将所述待写入文件整体确定为一个切片。

应当理解的是,对于文件来说,如果切片较小,相对来说更容易查找到到相同的切片,但是相应的,文件会被分割成更小的文件,则切片和获取切片的数字指纹所需时间会更长。而切片的大小相对较大的时候,由于切片数量较少,则切片时间和获取切片数字指纹的时间均会相应缩短,但是切片与现有切片相同的可能性会相对降低。具体使用时应对根据需求而设定,具体的设定值可以是4MB、8MB、16MB、32MB等,其中优选设定为64MB,一般设定为不超过4TB。

基于上述实施例,提出本发明方法的第五实施例,所述步骤S100具体包括:

S110获取所述待写入文件的MD5校验值和sha值。

S120将所述MD5校验值和sha值的字符串叠加作为待写入文件的数字指纹。

应当理解的是,具体使用中,数字指纹的种类是多种多样的,本实施例中,提供一种优选的数字指纹,具体为获取待写入文件的MD5校验值记为x,并获取待写入文件的sha值,更为优选的为sha1值,记为y,将两个值的字符串叠加为xy作为该文件的数字指纹。以Win10正式版64位简体中文版原版镜像文件为例,该文件的MD5值为2F8691F7FE2F569A70418A8633AC63F6记为x,sha1值为C71D49A6144772F352806201EF564951BE55EDD5记为y,将x和y串联获得2F8691F7FE2F569A70418A8633AC63F6C71D49A6144772F352806201EF564951BE55EDD5作为校验文字的数字指纹。

此外,为实现上述目的,本发明还提供一种基于分布式文件系统的多层重复数据删除装置,请参阅图4,该装置包括:

第一获取模块10,用于获取待写入文件的数字指纹。

数字指纹是根据文件的内容生成的唯一性的数字编码,常见的数字指纹通常有MD5(Message Digest Algorithm信息摘要算法第5版)、sha1(安全哈希算法Secure Hash Algorithm)等。每个文件通过预设的函数或算法生成唯一的数字指纹,由于函数和算法的唯一性,即使两个文件中仅有细微差异,得到的数字指纹也相距甚远,因此校验文件的数字指纹是判断文件是否相同的可靠依据。

本实施例中,当接收到来自客户端的文件写入请求时,先获取该待写入文件的数字指纹。

第一判断模块20,用于判断全局文件数字指纹列表中是否存在所述待写入文件的数字指纹。

进一步的,当在获取所述待写入文件的数字指纹后,在判断全局文件数字指纹列表中是否存在相应的数字指纹。这里的全局文件数字指纹列表指的是存储有所述分布式文件系统中所有完整文件数字指纹的列表。若该全局文件数字指纹列表中存在待写入文件的数字指纹,则原文件系统中存在数字指纹与待写入文件数字指纹相同的文件,由数字指纹的唯一性可以确定,原文件系统中已经存在与待写入文件相同的文件,此时继续执行S210步骤;反之,若全局文件数字指纹列表中不存在待写入文件的数字指纹,则原文件系统中存在数字指纹与待写入文件数字指纹相同的文件,则证明原文件系统中不存在与待写入文件相同的文件,此时继续执行S220步骤。

第一记录模块30,用于在所述第一判断模块20的判断结果为“是”时,记录所述待写入文件的元数据信息。

本实施例中,待写入文件的元数据信息记录于元数据服务器中。当原文件系统中存在数字指纹与待写入文件数字指纹相同的文件时,显然如果再次将待写入文件上传,则会重复占用空间,所以本实施例中并不将原文件上传,而是直接在元数据服务器中记录待写入文件的元数据,实现了被重复上传的文件的删除。由公知的解释可知,元数据(Metadata),又称中介数据、中继数据,主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,必须在描述并收藏数据的内容或特色,进而达成协助数据检索的目的。简而言之,元数据就是描述数据的数据(data about data)。本实施例中,元数据主要包括系统中原有的与待写入文件相同的文件的路径和资源信息,待写入文件的元数据记录于元数据服务器中之后,再次调用待写入文件时,直接通过记录的待写入文件信息调用系统中原有的与待写入文件相同的文件就可以获取与待写入文件完全相同的文件。通过记录待写入文件的元数据信息代替了现有技术中直接上传文件,可以有效节约存储空间和数据交换时间。

切片模块40,用于在所述第一判断模块20的判断结果为“否”时,将待写入文件按预设方式切片,并获取每个切片的数字指纹。

当全局文件数字指纹列表中不存在待写入文件的数字指纹,则原文件系统中存在数字指纹与待写入文件数字指纹相同的文件,则证明原文件系统中不存在与待写入文件相同的文件。此时,本实施例中进一步将待写入文件按预设方式切片。应对理解的是,随着技术和信息的发展,文件呈多样性趋势变化,基于同一文件会衍生出多种不同的版本。以操作系统为例,为公知熟知的Windows10操作系统(视窗操作系统10)包括区分为32位系统和64位系统,进一步的又区分为家庭版、企业版、专业版等多个版本,这些不同操作版本的部分文件内容是完全相同的,其中每个镜像文件的大小约为4GB,如果仅校验数字指纹,则上述6种不同版本的操作系统属于不同的文件,存储上述镜像文件合计约存储空间24GB,而其中重复数据占用了绝大部分空间。

本实施例中,进一步将每个文件按照预设模式切片,将一个完整的文件分为若干个小的切片文件。在对文件切片完成后,按照预设算法或函数获取每个切片的数字指纹。

第二判断模块50,用于在将待写入文件按预设方式切片,并获取每个切片的数字指纹后判断全局文件切片数字指纹列表中是否存在所述切片的数字指纹。

获取每个切片的数字指纹后,判断全局文件切片数字指纹列表中是否存在与所述切片的数字指纹相同的数字指纹,显然,如果存在,则证明存在相同的切片,反之则证明不存在相同的切片。

第二记录模块60,用于在所述第二判断模块50的判断结果为“是”时,将所述切片的元数据信息记录到存储节点中。

当分布式文件系统中存在相同的切片时,将元数据信息记录到相应的存储节点中。显然,当需要再次调用待写入文件时,通过调用待写入文件的元数据,获取其切片的相关信息,并进一步通过调用切片的元数据信息,获取切片的存储信息将原待写入文件还原实现对原待写入文件的调用。

发送模块70,用于在所述第二判断模块50的判断结果为“否”时,将所述切片及该切片的数字指纹发送到对应的存储节点。

当分布式文件系统中不存在相同的切片时,则将所述切片及该切片的数字指纹发送到对应的存储节点,并进行存储。

显然本实施例中,如果需要存储上述6个版本的操作系统的镜像文件,在切片后,文件中绝大部分相同内容的文件构成的切片只需要存储一次,构成差异的切片文件需要单独存储,则仅需要不到5GB的存储空间就可以实现对原需要占用24GB存储空间的文件的存储。

本实施例中通过对文件的数字指纹的校验,并进一步通过对具有不同数字指纹的文件进行切片并再次对切片的数字指纹进行校验,有效的避免了对重复数据的多次存储,节约了存储空间。也相应的节约了数据传输时间和数据存储成本。

进一步的,请参阅图5,基于上述实施例,提出本发明装置的第二实施例。还包括:

第三判断模块80,用于判断当前存储节点的切片数字指纹列表中是否存在所述切片的数字指纹。

确认模块90,用于在所述第三判断模块90的判断结果为“是”时,确认该切片写入成功。

写入模块100,用于在所述第三判断模块90的判断结果为“否”时,写入所述切片,并将所述切片的数字指纹记录到本存储节点的切片数字指纹列表。

应当理解的是,本实施例中,每个存储节点中设有该存储节点对应的切片数字指纹列表,当切片发送至对应的存储节点之后,判断当前存储节点的切片数字指纹列表中是否存在所述切片的数字指纹。如果当前存储节点的切片数字指纹列表中存在所述切片的数字指纹,则证明当前存储节点中已经存储有相同的切片,则只需要返回元数据服务器该切片以写入成功。如果当前存储节点的切片数字指纹列表中不存在所述切片的数字指纹,则将该切片写入磁盘。

在基于本发明的装置上述第二实施例的第三实施例中,还包括:

第二获取模块,用于定时获取系统负载;

上传模块,用于在系统负载低于预设值时,将每个存储节点的切片数字指纹列表中的信息上传至所述全局切片数字指纹列表。

显然,系统在运行过程中,如果占用过多系统负载,则会影响数据和文件的存储和传输速度,所有本实施例中,进一步获取系统的负载,并只有在系统负载低于某预设值时才进行进一步操作。本实施例中,当系统负载低于预设值时,将每个存储节点的切片数字指纹列表中的信息上传至所述全局切片数字指纹列表。

请进一步参阅图6,在本发明的装置基于上述实施例的第四实施例中,所述切片模块40具体包括:

判断单元41,用于判断所述待写入文件的大小是否大于预设值;

切片单元42,用于在所述判断单元41的判断结果为“是”时,将所述待写入文件按预设大小切片;

确定单元43,用于在所述判断单元41的判断结果为“否”时,将所述待写入文件整体确定为一个切片。

应当理解的是,对于文件来说,如果切片较小,相对来说更容易查找到到相同的切片,但是相应的,文件会被分割成更小的文件,则切片和获取切片的数字指纹所需时间会更长。而切片的大小相对较大的时候,由于切片数量较少,则切片时间和获取切片数字指纹的时间均会相应缩短,但是切片与现有切片相同的可能性会相对降低。具体使用时应对根据需求而设定,具体的设定值可以是4MB、8MB、16MB、32MB等,其中优选设定为64MB,一般设定为不超过4TB。

基于上述实施例,提出本发明装置的第五实施例,所述第一获取模块10具体包括:

获取单元,用于获取所述待写入文件的MD5校验值和sha值;

叠加单元,用于将所述MD5校验值和sha值的字符串叠加作为待写入文件的数字指纹。

应当理解的是,具体使用中,数字指纹的种类是多种多样的,本实施例中,提供一种优选的数字指纹,具体为获取待写入文件的MD5校验值记为x,并获取待写入文件的sha值,更为优选的为sha1值,记为y,将两个值的字符串叠加为xy作为该文件的数字指纹。以Win10正式版64位简体中文版原版镜像文件为例,该文件的MD5值为2F8691F7FE2F569A70418A8633AC63F6记为x,sha1值为C71D49A6144772F352806201EF564951BE55EDD5记为y,将x和y串联获得2F8691F7FE2F569A70418A8633AC63F6C71D49A6144772F352806201EF564951BE55EDD5作为校验文字的数字指纹。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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