一种云存储系统中节约型重复数据删除方法_2

文档序号:9216984阅读:来源:国知局
所有副本所在节点的存储 负载较大的节点上的副本删除,以实现存储负载更加均衡。
【附图说明】
[0028]图1为云存储重复数据删除系统的体系架构图
[0029] 图2为延迟重复数据删除的过程图
[0030] 图3为存储端对数据块修改的处理示意图
【具体实施方式】
[0031] 为了方便描述,本发明给出了云存储重复数据删除系统的架构图,如附图1所示。 该系统由m个客户端(Client),1个元数据服务器(MetadataServer,MS),1个二级元数据 服务器(SecondaryMetadataServer,SMS)和n个存储节点(StorageNode,Snode)共同 构成。其中,客户端主要是发起文件上传、访问、修改、删除等操作的对象;元数据服务器主 要存放文件系统的所有元数据信息,提供存取控制和全局重删的依据,它相当于整个系统 架构的中枢。二级元数据服务器主要承担同步备份元数据的镜像文件和操作日志的工作; 存储节点则负责存储实际的数据块。此外,系统中各个构成部分之间有着紧密的联系,相互 协作。客户端与元数据服务器之间只进行元数据信息的交互,以减轻元数据的传输带宽负 载。当客户端要上传数据时,通过元数据服务器以确定非重复的数据信息;当客户端要访问 (包括修改)数据时,通过元数据服务器以确定数据所在节点信息。客户端与存储节点间会 进行数据传输。存储节点也会与元数据服务器进行交互,比如存储节点上被修改的数据的 元数据信息也要与元数据服务器交互,以确定是否为重复数据。同时,元数据服务器也会根 据存储节点上数据访问的情况为其创建一定的副本以降低访问负载。对于只有一个元数据 服务器的架构,一旦其出现故障,整个系统就会瘫痪,因此元数据服务器和二级元数据服务 器之间为主备的关系。
[0032] 客户端主要有文件预处理模块、局部重删模块、元数据管理模块和数据传输模块, 其中文件预处理模块依据文件的类型进行文件分类,后期进行数据块级重删时过滤掉小于 64MB的非重复文件;局部重删模块从文件级和数据块级两个角度进行重删操作;元数据管 理模块主要记录客户端已上传数据块的指纹值信息,以避免本地重复数据的上传;数据传 输模块负责将待上传文件的元数据信息上传到元数据服务器,将非重复数据块上传到存储 节点上。各模块之间有着一定的联系,文件预处理模块处理后的文件交给局部重删模块进 行文件级的重删,经过文件级重删后的非重复文件再返还给文件预处理模块进行过滤,最 后再由局部重删模块进行数据块级的重删。整个过程中涉及到元数据信息的部分都要与元 数据管理模块进行交互,数据传输模块则是客户端连接元数据服务器和存储节点的接口。
[0033] 元数据服务器上有过滤模块和更新模块,其中过滤模块通过元数据服务器上的索 引表(分布在内存和磁盘上)和写缓存区内的元数据信息过滤掉来自不同客户端的重复数 据信息。对于重复的数据块,直接通过更新模块更新对应数据块的元数据信息;对于非重复 的数据块,更新模块则在接收到存储节点反馈的信息后才将其元数据信息更新到磁盘上的 索引表中。当存储节点的数据发生修改时,也会与元数据服务器进行交互,从而触发更新模 块对元数据服务器上索引表的更新。
[0034]存储节点主要包括存储模块、元数据管理模块、自检报告模块和延迟重删模块,其 中存储模块主要负责数据块的存储,记录数据块的物理地址;元数据管理模块记录本节点 上的数据块的元数据信息;自检报告模块主要是检测数据块的修改所带来的重复数据,交 给延迟重删模块,并将修改的元数据信息报告给元数据服务器;延迟重删模块对于检测到 的重复数据块,则判断重复数据块是否为热点重复数据块,对于热点重复数据块延迟重删, 对于非热点重复数据块则选择合适的节点上的相同数据块删除,此模块中涉及到元数据信 息的部分需要与元数据管理模块和自检报告模块进行交互。
[0035] 本发明按照以下各步骤进行重复数据删除:
[0036] 步骤一:每个客户端对本地待上传文件进行预处理,进行文件级和数据块级的局 部重复数据删除操作以防重复数据的再次上传,然后将待上传文件的元数据信息(包括待 上传文件的指纹值及其所有数据块的指纹值)上传到元数据服务器。上传重复数据块的指 纹值是为了更新元数据服务器中的数据块引用次数。其中,局部重复数据删除操作的具体 描述如下:
[0037] ①文件级重复数据删除:利用MD5算法计算文件指纹值,比对大小和类型相等的 文件指纹值,然后再与本地的元数据信息表进行比对,确定重复文件和非重复文件;
[0038] ②数据块级重复数据删除:对于非重复文件(已过滤掉小于64MB的文件),利用 定长分块算法进行分块,块长设为64MB,利用MD5算法计算数据块的指纹值,比对块长相等 的数据块确定重复数据块。
[0039] 步骤二:元数据服务器接收到来自不同客户端的元数据信息,依次读取文件指纹、 数据块指纹,然后比对内存、硬盘和写缓存区的指纹索引信息,最后将未上传过的指纹值信 息返回到各个客户端。
[0040] 比对文件指纹时,若发现指纹值已存在,则不再比对数据块的指纹,否则还要比对 构成文件的数据块指纹。指纹索引表分布在内存和硬盘中,主要是因为内存的空间十分有 限,故大部分指纹索引表存放在硬盘中。此外,写缓存区中也有部分数据块指纹值信息,这 是因为存储端还未完成对客户端发送过来的新数据块的存储工作,而新数据的指纹值也不 能写入硬盘中。
[0041] 在指纹值比对的过程中,本发明通过牺牲文件分类、大小排序的时间,利用"类型 和大小相同的文件极有可能为相似文件"和"不同类型文件共享的相同数据块几乎可以忽 略"来不断缩小比对范围。
[0042] 步骤三:客户端将未上传过的新数据上传到存储端,存储端对新数据进行存储,并 更新存储端的元数据信息表。
[0043] 对于重复的数据,客户端通过步骤一和步骤二已更新了其在元数据服务器上的信 息,而对于非重复的数据,客户端将其直接上传到存储端。而每个存储端都保存着其上的数 据块指纹及其存储地址的映射关系。通过数据块指纹,即可确定数据块存放的物理地址。 [0044] 步骤四:客户端发出要修改数据的请求,通过元数据服务器获取待修改数据所在 的存储节点号,然后连接存储节点并直接对存储端的数据进行修改操作。
[0045] 客户端对数据的修改因用户而异,即享有同一数据块的用户修改的方式不同,而 不同的数据也有可能会被修改成相同的数据,这便是云存储数据的动态性,也是云存储与 备份系统的不同之处。备份系统是用户在本地对数据修改后再进行备份,备份的过程中过 滤掉未作修改的部分,而云存储给用户带来的云端体验如同在本地,用户获取到想要修改 的数据的地址,直接对数据进行修改。
[0046] 步骤五:存储端对修改后的数据块进行检测,并判断修改后的数据块属于表1中 的哪种情况并采取相应的措施,具体的方法原理如附图2所示。
[0047]表1数据块修改后的三种情况以及相应操作
[0048]
[0049] 对于修改后的数据块需要重新计算其指纹值,并比对本节点上的元数据信息进行 判断,若发现该数据块已经在本节点上,则直接对其进行重删;若发现修改后的数据块不 在本节点上,则先保存到本节点上,再比对元数据服务器发现在其他节点上,则进行延迟重 删;若发现修改后的数据块在比对本节点和元数据服务器上的指纹索引后,既不在本节点 上,又不在其他节点上,则元数据服务器还需要为该数据块创建副本。延迟重删包含对热点 重复数据块和非热点重复数据块两方面的操作,判断方法采用公式(1),对于热点重复数据 块则延迟重删以降低系统的访问响应时间;对于非热点重复数据块,则选择非热点重复数 据块所在存储节点剩余容量相对较少的节点上的删除以实现负载均衡。
[0050] 为了便于理解,补充定义一些概念:
[0051] 热点数据块:一段时间内平均访问频率达到一定阈值的数据块,即满足公式(1)。 不满足该条件的数据块,称为非热点数据块。
[0052] 热点重复数据块:修改后的数据块A'在本节点上未发现,但在其他节点上发现与 之相同的数据块A,并且该数据块A为热点数据块,则称A'为热点重复数据块。
[0053] 非热点重复数据块:修改后的数据块B'在本节点上未发现,但但在其他节点上发 现与之相同的数据块B,并且该数据块B为非热点数据块,则称B'为非热点重复数据块。
[0054] 本发明还针对所述步骤五结合附图3给出了用户修改存储节点i(i= 1,2, 3,……,n)上的数据块,存储端进行处理的具体实现步骤,如下:
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1