重复数据的处理方法

文档序号:6426196阅读:246来源:国知局
专利名称:重复数据的处理方法
技术领域
本发明涉及一种重复数据的处理方法,特别涉及一种快速的重复数据的处理方法。
背景技术
重复数据删除是一种数据缩减技术,通常用于基于磁盘的备份系统,主要目的在于减少存储系统中使用的存储容量。它的工作方式是在某个时间周期内查找不同文件中不同位置的重复可变大小数据块。重复的数据块用指示符取代。由于存储系统中总是充斥着大量的冗余数据。为了解决这个问题,节省更多空间,重复删除的技术便顺理成章地成了人们关注的焦点。采用重复删除的技术可以将存储的数据缩减为原来的1/20,从而让出更多的备份空间,不仅可以使存储系统上的备份数据保存更长的时间,而且还可以节约离线存储时所需的大量的频宽。 由于欲存储的数据都会被储存在服务器中,因此客户端需要时时的将数据传送至服务器。接着,服务器再对数据进行重复数据删除的处理。然而为了判断客户端欲备份的数据是否已储存在服务器的磁盘中,需要将相关的整个数据块加载记忆体,再读取整个数据块中的元数据(meta data)的部分。但不论此数据块是不是重复数据,都不会用到被加载记忆体的数据块中的原始数据(raw data)。

发明内容
本发明的目的在于提供一种重复数据的处理方法。重复数据的处理方法先将一储存文件分割成多个原始数据块Craw tank)以及多个元数据块(meta tank),其中原始数据块以及元数据块为一对一对应,且每一个元数据块中存有对应的原始数据块的一储存指纹值(fingerprint)。接着接收一判断重复数据请求,其中判断重复数据请求包括一请求指纹值。重复数据的处理方法读取至少一个元数据块,并对比请求指纹值与读取的元数据块的储存指纹值。当请求指纹值与读取的元数据块的储存指纹值相同时,修改读取的元数据块的一引用计数值(referred counter),并将修改过的元数据块回存。其中每一个原始数据块可包括多个原始数据单元(raw chunk),每一个元数据块可包括多个元数据单元(meta chunk),且原始数据单元以及元数据单元为一对一对应。根据一实施范例,储存文件可储存于一服务器的一磁盘,且修改过的元数据块可回存于磁盘。“读取至少一个元数据块,并对比请求指纹值与读取的元数据块的储存指纹值”的步骤中,可先判断对应于请求指纹值的元数据块是否存在于一记忆体。当对应于请求指纹值的元数据块存在于记忆体时,读取记忆体中对应于请求指纹值的元数据块,并对比请求指纹值与读取的元数据块的储存指纹值。“读取至少一个元数据块,并对比请求指纹值与读取的元数据块的储存指纹值”的步骤中,当对应于请求指纹值的元数据块不存在于记忆体时,可由磁盘将对应于请求指纹值的元数据块读入记忆体,并对比请求指纹值与读取的元数据块的储存指纹值。根据另一实施范例,多个元数据块可被作为一分配组。“读取至少一个元数据块,并对比请求指纹值与读取的元数据块的储存指纹值”的步骤中则可先读取至少一个分配组,再对比请求指纹值与读取的分配组中的元数据块的储存指纹值。其中分配组的数据大小可以是16千字节(KB)的正整数倍。此外,“改读取的元数据块的引用计数值,并将修改过的元数据块回存”的步骤中,可修改读取的元数据块的引用计数值,并将修改过的元数据块所对应的分配组回存。以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。


图I为根据本发明一实施范例的服务器的示意图; 图2为根据本发明一实施范例的重复数据的处理方法的流程图;图3为根据本发明一实施范例的元数据单元以及原始数据单元的示意图;图4为根据本发明一实施范例的步骤S130的流程图;图5为根据本发明一实施范例的分配组的示意图。其中,附图标记10客户端20服务器30记忆体40 磁盘50储存文件60,60A,60B,60C 元数据块62元数据单元64分配组70,70A,70B,70C 原始数据块72原始数据单元
具体实施例方式以下在实施方式中详细叙述本发明的详细特征以及优点,其内容足以使任何本领域技术人员了解本发明的技术内容并据以实施,且根据本说明书所揭露的内容、权利要求范围及附图,任何本领域技术人员可轻易地理解本发明相关的目的及优点。本发明关于一种重复数据的处理方法,其适用于一服务器。实施重复数据的处理方法的服务器可被用以备份至少一客户端的数据,且服务器可具有重复数据删除的功能。请参照图1,其为根据本发明一实施范例的服务器的示意图。服务器20可通过因特网(Internet)或内网(internet)等各种网络(network)与多个客户端10连接,并备份由客户端10传送来的数据。服务器20可具有一记忆体30、一磁盘40以及处理器等硬件。磁盘40储存多个已从客户端10完整接收的多个储存文件50 ;而在处理储存文件50时,可将欲处理的数据从磁盘40加载记忆体30再进行处理。储存文件50可以例如是纯文本文件、各种多媒体文件或是客户端10进行系统备份时产生的快照(snapshot)。重复数据的处理方法能够在客户端10欲进行备份时,快速地判断在欲进行备份的文件是否是服务器20的储存文件50之一。请参照图2,其为根据本发明一实施范例的重复数据的处理方法的流程图。首先,服务器20可预先将储存文件50分割成多个元数据块(meta tank) 60A、60B以及60C,以及多个原始数据块(raw tank)70A、70B以及70C (步骤S100)。另,以下统称为元数据块60以及原始数据块70。原始数据块70以及元数据块60为一对一对应。其中每一个元数据块60中存有对应的原始数据块70的一储存指纹值(fingerprint)。举例来说,元数据块60A、60B以及60C可以是分别对应于原始数据块70A、70B以及70C ;且元数据块60A中存有原始数据块70A的储存指纹值。服务器20可以利用固定长度方式(fixed-size partition)或基于内容变长度分割方式(content-defined chunking, CDC)等方式先将整个储存文件50分割成多组数据块,其中每一组数据块包括对应的一个元数据块60以及原始数据块70。接着再将成对的元 数据块60以及原始数据块70分别存放,以利后续读取。然而服务器20也可以先将储存文件50的内容部分分割成原始数据块70,再依据分割好的原始数据块70得到对应的元数据块60。服务器20并可通过1 5、5撤-1、5撤-256、SHA-512或单向哈希(One-way HASH)等算法计算每一个原始数据块70的储存指纹值,并将这些储存指纹值存入对应的元数据块60之中。于一实施范例中,每一个原始数据块70可包括多个原始数据单元(rawchunk) 72,如图3所示。相对地,每一个元数据块60可包括多个元数据单元(metachunk) 62,且这些原始数据单元72以及元数据单元62也是一对一对应。例如元数据块60A中的6个元数据单元62 —对一对应于原始数据块70A中的6个原始数据单元72。以固定长度的分割方式为例,假设每一个原始数据单元72的长度为64千字节(KB),对应的元数据单元62的长度会是28字节(byte),并固定每个原始数据块70的长度为2兆字节(MB)。则可计算出每个数据块中包括32个单元,而元数据块60的长度为896KB。接着服务器20可从任一个客户端10接收一重复数据判断请求,其中重复数据判断请求包括一请求指纹值(步骤S120)。为了尽量减少客户端10与服务器20之间的数据传输,客户端10预备份一请求数据块时可以只传送代表请求数据块的请求指纹值给服务器20。但依据请求数据块计算请求指纹值的算法须与依据原始数据块70计算储存指纹值的算法相同。接收重复数据判断请求之后,服务器20读取对应此重复数据判断请求的储存文件50的至少一个元数据块60,并对比请求指纹值与读取的元数据块60的储存指纹值(步骤 S130)。请同时参照图4,其为根据本发明一实施范例的步骤S130的流程图。服务器20首先判断对应于请求指纹值的元数据块60是否存在于记忆体30 (步骤S132)。当对应于请求指纹值的元数据块60已存在于记忆体30时,服务器20可直接读取记忆体30中对应于请求指纹值的元数据块60 (步骤S134),并对比请求指纹值与读取的元数据块60的储存指纹值(步骤S136)。相反地,若在记忆体30中搜寻后找不到对应于请求指纹值的元数据块60,则先由磁盘40将对应于请求指纹值的元数据块60读入记忆体30 (步骤S138),在执行步骤S134以及步骤S136。
举例而言,假设元数据块60C对应于请求指纹值。由于在记忆体30中找不到元数据块60C,因此先将元数据块60C加载记忆体30。须注意的是,在步骤S138之中只需加载数据长度极小的元数据块60C,而不用加载对应的原始数据块70C。在元数据块60C尚未因记忆体30的空间不足而被交换出记忆体30的期间内,若再有接收到对应元数据块60C的请求指纹值,则服务器20可以直接执行步骤S134以及S136。服务器20接着判断请求指纹值与读取的元数据块60的储存指纹值是否相同(步骤S140)。当请求指纹值与读取的元数据块60的储存指纹值相同时,表示请求指纹值对应到一个已存在的原始数据块70,因此请求指纹值代表的请求数据块为重复数据。针对重复数据,服务器20仅须修改读取的元数据块60的一引用计数值(referred counter),并将修改过的元数据块60回存(步骤S150)。其中引用计数值是代表对应的原始数据块70被引用的次数;同一个原始数据块70可能被相同客户端10多次引用,也可能被不同客户端10同时引用。修改过的元数据块60是由记忆体30回存于磁盘40。若在步骤S130中找不到与请求指纹值对应的储存文件50或元数据块60,则表示请求指纹值对应的请求数据块是新的数据块,而非重复数据。则服务器20可执行一新增程 序,要求客户端10传输请求数据块,并将接收到的请求数据块新增至磁盘40。而当请求指纹值与读取的元数据块60的储存指纹值不同时,则表示发生哈希冲突。服务器20可以通过查找一哈希冲突表等方式,重新搜寻记忆体30或是磁盘40中重新搜寻是否有存在与请求指纹值对应的储存文件50或元数据块60,并判断是否执行上数步骤 S130 到 S150。须注意的是,虽然图2是以在单一个储存文件50的元数据块60中寻找请求指纹值为例,但重复数据的处理方法也可在多个储存文件50之中搜寻与请求指纹值对应的元数据块60。此外,服务器20还可将多个连续的元数据块60作为一分配组,并以分配组做为存取元数据块60的单位。请参照图5,其为根据本发明一实施范例的分配组的示意图。服务器20可以将多个连续的元数据块60作为一个分配组64,且一次将整个分配组64加载记忆体30,再读取其中的至少一个元数据块60。则于步骤S130时,服务器20可以先读取至少一个分配组64 ;再对比请求指纹值与读取的分配组64中的元数据块60的储存指纹值。而在步骤S150进行回存时,也可一次将整个修改过的元数据块60所对应的分配组64。分配组64的数据大小可以是16KB的正整数倍,例如16KB、64KB或是128KB。分配组64的数据大小可以配合磁盘磁区来选用。以磁盘磁区为64KB的服务器20为例,单次的数据输入输出(input/output, 10)的单位就是64KB。因此配合磁盘磁区的设定将多个元数据块60凑成一个分配组64,可以在一次的磁盘IO中读写最大数量的元数据块60。如此一来,可避免每次都为了大小仅为3k的单一元数据块60去读写64KB的数据。综上所述,重复数据的处理方法在判断请求指纹值对应的请求数据块是否已存在时,仅需将对应的元数据块加载记忆体当中。如此一来,服务器不须要把整个相关的元数据块以及原始数据块都加载记忆体,而能够节省大量的磁盘IO时间。以前述实施范例的数值而言,重复数据的处理方法只需加载约3KB的元数据块即可进行判别,而不需将用不到的2MB的原始数据块也加载磁盘中。
更进一步地,重复数据的处理方法能配合磁盘磁区的设定分配组,并一次存取连续的多个元数据块。因此对于文件或数据块数量庞大的全备份(full backup)等服务,由于请求数据块的连续性很高,因此一次加载连续多个元数据块的做法可提高搜寻的命中率,并且进一步减少所需的磁盘IO次数。更甚者,由于元数据块的数据长度较小,重复数据的处理方法也可由服务器提供需用以比较的储存指纹值给客户端,并由各客户端进行比较以及去除重复数据的步骤。 当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种重复数据的处理方法,其特征在于,包括 将一储存文件分割成多个原始数据块以及多个元数据块,其中该些原始数据块以及该些元数据块为一对一对应,且每一该元数据块中存有对应的该原始数据块的一储存指纹值; 接收一重复数据判断请求,其中该重复数据判断请求包括一请求指纹值; 读取至少一该元数据块,并对比该请求指纹值与读取的该元数据块的该储存指纹值;以及 当该请求指纹值与读取的该元数据块的该储存指纹值相同时,修改读取的该元数据块的一引用计数值,并将修改过的该元数据块回存。
2.根据权利要求I所述的重复数据的处理方法,其特征在于,每一该原始数据块包括多个原始数据单元,每一该元数据块包括多个元数据单元,且该些原始数据单元以及该些元数据单元为一对一对应。
3.根据权利要求I所述的重复数据的处理方法,其特征在于,该储存文件储存于一服务器的一磁盘,且修改过的该元数据块回存于该磁盘。
4.根据权利要求3所述的重复数据的处理方法,其特征在于,该读取至少一该元数据块,并对比该请求指纹值与读取的该元数据块的该储存指纹值的步骤包括 判断对应于该请求指纹值的该元数据块是否存在于一记忆体;以及 当该对应于该请求指纹值的该元数据块存在于该记忆体时,读取该记忆体中对应于该请求指纹值的该元数据块,并对比该请求指纹值与读取的该元数据块的该储存指纹值。
5.根据权利要求4所述的重复数据的处理方法,其特征在于,该读取至少一该元数据块,并对比该请求指纹值与读取的该元数据块的该储存指纹值的步骤包括 当该对应于该请求指纹值的该元数据块不存在于该记忆体时,由该磁盘将对应于该请求指纹值的该元数据块读入该记忆体,并对比该请求指纹值与读取的该元数据块的该储存指纹值。
6.根据权利要求I所述的重复数据的处理方法,其特征在于,多个该些元数据块作为一分配组,且该读取至少一该元数据块,并对比该请求指纹值与读取的该元数据块的该储存指纹值的步骤包括 读取至少一该分配组;以及 对比该请求指纹值与读取的该分配组中的该些元数据块的该储存指纹值。
7.根据权利要求6所述的重复数据的处理方法,其特征在于,该些分配组的数据大小为16千字节的正整数倍。
8.根据权利要求6所述的重复数据的处理方法,其特征在于,该修改读取的该元数据块的该引用计数值,并将修改过的该元数据块回存的步骤包括 修改读取的该元数据块的该引用计数值,并将修改过的该元数据块所对应的该分配组回存。
全文摘要
一种重复数据的处理方法,包括将储存文件分割成多个原始数据块以及多个元数据块,其中原始数据块以及元数据块为一对一对应,且每一个元数据块中存有对应的原始数据块的储存指纹值;接收重复数据判断请求,其中重复数据判断请求包括请求指纹值;读取至少一个元数据块,并对比请求指纹值与读取的元数据块的储存指纹值;以及当请求指纹值与读取的元数据块的储存指纹值相同时,修改读取的元数据块的引用计数值,并将修改过的元数据块回存。
文档编号G06F17/30GK102810108SQ20111015816
公开日2012年12月5日 申请日期2011年6月2日 优先权日2011年6月2日
发明者朱明胜, 陈志丰 申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1