CN105446964A - 用于文件的重复数据删除的方法及装置 - Google Patents

用于文件的重复数据删除的方法及装置 Download PDF

Info

Publication number
CN105446964A
CN105446964A CN201410239472.2A CN201410239472A CN105446964A CN 105446964 A CN105446964 A CN 105446964A CN 201410239472 A CN201410239472 A CN 201410239472A CN 105446964 A CN105446964 A CN 105446964A
Authority
CN
China
Prior art keywords
length
block
variable
length block
moving window
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410239472.2A
Other languages
English (en)
Other versions
CN105446964B (zh
Inventor
朱国峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN201410239472.2A priority Critical patent/CN105446964B/zh
Priority to US14/724,859 priority patent/US10769112B2/en
Publication of CN105446964A publication Critical patent/CN105446964A/zh
Application granted granted Critical
Publication of CN105446964B publication Critical patent/CN105446964B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种用于文件的重复数据删除的方法及装置。在该方法中,首先,将所述文件切分成至少一个组合数据块,其中,所述组合数据块包括固定长度块和可变长度块,所述可变长度块基于所述文件的内容而确定;然后,对所述至少一个组合数据块进行重复数据删除操作。通过将文件切分成包含固定长度块和可变长度块的组合数据块,能够快速且高效地执行重复数据删除。

Description

用于文件的重复数据删除的方法及装置
技术领域
本发明涉及重复数据删除技术,更具体地,涉及一种用于文件的重复数据删除的方法及装置。
背景技术
重复数据删除是一种在数据备份和归档过程中广泛使用的数据缩减技术,其通过删除数据集(例如,文件)中重复的数据来消除冗余数据,从而减少在存储空间中使用的存储容量。
通常,冗余数据可分为三种类型:文件级的冗余数据、数据块级的冗余数据、字节级的冗余数据。在文件级的类型中,冗余数据是整个文件,这意味着该文件与其它文件重复。在数据块级的类型中,冗余数据是文件内的某些数据块,这意味着在不同的文件之间有相同的数据块。在字节级的类型中,冗余数据是以字节表示的更细粒度的数据。
在现有技术中存在针对这三种类型的冗余数据的相应的重复数据删除的方法。单一实例存储(SingleInstanceStorage)是文件级的重复数据删除技术,其可有效地检测重复的文件。当将每个文件存储到内容寻址存储(CAS)设备上时,该CAS设备将对所存储的文件内容生成一个散列。如果CAS设备中已经存在具有相同散列的文件,则CAS设备将再创建表示副本的指针指向已存在的文件,而并不保存该重复的文件。字节级的重复数据删除技术可通过数据压缩技术来有效地消除冗余字节。
数据块级的重复数据删除技术是目前主要的重复数据删除技术。常用的重复数据删除的方法是基于散列(hash)的方法。在该方法中,首先将数据文件分割成一组数据块,并对每个数据块计算指纹(即,哈希值),然后以指纹为关键字进行哈希查找。如果匹配,则表示该数据块为重复数据块,仅存储数据块的索引号。如果不匹配,则表示该数据块是一个新的数据块,对该数据块进行存储并创建相关的元信息。
现有技术中有三种数据分块方法,即,固定长度切分(fixed-sizepartition)FSP、基于内容的切分(content-definedchunking)CDC和滑动块切分(sliding-windowblocking)SB。固定长度切分法是将文件切分成具有固定长度的数据块,从而能够快速地检测冗余数据。基于内容的切分法和滑动块切分法是基于文件的内容而将文件切分成可变大小的数据块,从而有效地找到冗余数据。
然而,在对文件进行重复数据删除时,如果该文件在先前被执行了重复数据删除后发生了修改,例如,该文件被插入了新的数据或者被删除了原有的数据或者被修改了数据,从而导致文件的长度发生了变化,则固定长度切分法对这样的修改非常敏感,处理十分低效。这是由于固定长度切分法将文件切分成固定长度的数据块而造成的。在对修改后的文件进行切分后获得的某个或某些数据块将包含修改后的数据,与对修改前的文件进行切分而获得的数据块相比,数据块中的内容发生了改变而成为新的数据块。由于数据块的长度是固定的,因此,由于文件的长度的变化,随后的数据块中的内容也发生变化,这些数据块也成为新的数据块。这样,文件中的冗余数据块实际上并没有被检测到,因此,降低了文件的重复数据删除率。
基于内容的切分法和滑动块切分法虽然可解决这一问题,但是数据块大小的确定比较困难,造成重复数据删除的速度低于固定长度切分法。
发明内容
本发明的实施例提供了一种用于文件的重复数据删除的方法及装置。
根据本发明的一个方面,提供了一种用于文件的重复数据删除的方法,其包括:将所述文件切分成至少一个组合数据块,其中,所述组合数据块包括固定长度块和可变长度块,所述可变长度块基于所述文件的内容而确定;以及对所述至少一个组合数据块进行重复数据删除操作。
根据本发明的另一个方面,提供了一种用于文件的重复数据删除的装置,其包括:切分模块,其被配置为将所述文件切分成至少一个组合数据块,其中,所述组合数据块包括固定长度块和可变长度块,所述可变长度块基于所述文件的内容而确定;以及重复数据删除模块,其被配置为对所述至少一个组合数据块进行重复数据删除操作。
本发明的实施例能够快速且高效地执行数据块级的重复数据删除,其利用固定长度块以加快重复数据删除的速度,并利用可变长度块以有效地消除由于文件内容的改变而造成的影响。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图;
图2是根据本发明的实施例的用于文件的重复数据删除的方法的流程图;
图3是图2所示的实施例中将文件切分成至少一个组合数据块的过程的示意性流程图;
图4是用于说明本发明的实施例的组合数据块的示意图;
图5是图3所示的实施例中确定可变长度块的终止边界的过程的一个实施例的示意性流程图;
图6是图3所示的实施例中确定可变长度块的终止边界的过程的另一个实施例的示意性流程图;
图7是图3所示的实施例中确定可变长度块的终止边界的过程的再一个实施例的示意性流程图;
图8是根据本发明的实施例的用于文件的重复数据删除的装置的示意性框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
现在参看图2,其示出了根据本发明的实施例的用于文件的重复数据删除的方法的流程图。下面结合附图,对本实施例进行详细描述。
如图2所示,在步骤S210中,将文件切分成至少一个组合数据块,其中,组合数据块包括固定长度块和可变长度块。在本实施例中,固定长度块是指具有固定长度的数据块,可变长度块是指长度可变化的数据块。因此,所切分的各个组合数据块的大小可能相同或者不同。另外,可变长度块是基于文件的内容而确定的。
与现有技术中将文件仅切分成固定长度数据块或者可变长度数据块不同,在本实施例中,文件被切分成固定长度块和可变长度块的组合,从而能够既加快重复数据删除的速度,又不降低重复数据删除率。
图3示出了将文件切分成至少一个组合数据块的过程(步骤S210)的示意性流程图。如图3所示,在步骤S301,首先,确定固定长度块的起始边界。当文件被读入时,从文件的头部开始,将文件的开始处确定为固定长度块的起始边界。接着,在步骤S305,确定固定长度块的终止边界,以使得该固定长度块的长度等于第一固定长度。第一固定长度可以是预先确定的任意长度。在一个例子中,第一固定长度可以被设置为8K字节。一旦确定了固定长度块的起始边界和终止边界,固定长度块即可被确定。
接着,在步骤S310,以所确定的固定长度块的终止边界作为可变长度块的起始边界,基于文件的内容而确定可变长度块的终止边界。关于可变长度块的终止边界的确定,将在后面详细描述。在确定了可变长度块的起始边界和终止边界后,可变长度块即可被确定。所确定的固定长度块和可变长度块将组成组合数据块。
然后,在步骤S315,判断是否已到达文件的结尾。如果还未到达文件的结尾,则返回到步骤S301,再次确定固定长度块的起始边界。此时,将前一个组合数据块的可变长度块的终止边界确定为下一个固定长度块的起始边界,并执行步骤S305,确定下一个固定长度块的终止边界。如果已到达文件的结尾,则文件的切分过程结束。
通过如图3所示的文件切分方法,文件可被切分成至少一个组合数据块,其包含长度不变的固定长度块和长度可变化的可变长度块,如图4所示。这种组合数据块中的固定长度块由于长度保持不变,因此可以加快重复数据删除的速度,而可变长度块由于基于文件的内容而确定,因此能够缓冲由于文件的修改而造成的内容的偏移。也就是说,即使文件在先前被执行了重复数据删除后进行了修改,在使用图3所示的文件切分方法对修改后的文件进行切分后,也只有一个组合数据块与对修改前的文件进行切分后获得的相应的组合数据块不同,而其它组合数据块不会受到影响。
例如,如果由于文件的修改而导致对修改后的文件进行切分后的某个固定长度块中的内容发生了变化,诸如增加了新的数据或者减少了数据,则这样的变化所造成的内容的偏移可由同一组合数据块中的可变长度块消除。由于固定长度块的长度保持不变,因此,可变长度块的长度发生变化。如果在固定长度块中增加了新的数据,则可变长度块的长度将变长。如果在固定长度块中减少了数据,则可变长度块的长度将变短。因此,在这种情况下,只有该固定长度块和同一组合数据块中的可变长度块受到影响,该组合数据块变成新的组合数据块,而随后的其它组合数据块不受到影响,仍然可以检测到冗余的组合数据块,从而不降低重复数据删除率。
再例如,如果由于文件的修改而导致切分后的某个可变长度块中的内容发生变化,则由于可变长度块是基于文件的内容而获得的并且可变长度块的长度可变化,因此,这种变化所造成的内容的偏移能够包含在该可变长度块中。因此,只有该可变长度块受到影响而成为新的可变长度块,同一组合数据块中的固定长度块和随后的其它组合数据块保持不变,仍然可以检测到冗余的组合数据块,从而确保重复数据删除率。
以下将通过几个实施例,详细描述确定可变长度块的终止边界的过程(步骤S305)。
图5示出了确定可变长度块的终止边界的过程的一个实施例的示意性流程图。如图5所示,在步骤S501,从所确定的固定长度块的终止边界开始,利用具有第二固定长度的滑动窗口在文件上滑过,以获取在滑动窗口内的数据块。第二固定长度可以是预先确定的任意长度。在一个例子中,第二固定长度可被设置为48字节。
接着,在步骤S505,计算滑动窗口内的数据块的哈希值,以用于检测可变长度块的终止边界。在该步骤中,可以使用例如RabinHash算法的计算弱哈希值的哈希算法。
然后,在步骤S510,确定所计算的数据块的哈希值是否满足第一预定条件。在本实施例中,第一预定条件是块边界条件,其可被定义为例如数据块的哈希值对预定整数取模的值等于预定值,其中预定值小于预定整数。预定整数和预定值可以任意设置。通常,预定值可以被设置为预定整数减一。预定整数可以被设置为可变长度块的期望平均长度,例如4K。例如,第一预定条件可以表示为:
H%M=R
其中,H表示数据块的哈希值,M表示预定整数,R表示预定值,其值为M-1。
如果数据块的哈希值满足第一预定条件,则在步骤S520,将滑动窗口的当前位置确定为当前的可变长度块的终止边界。在此,将滑动窗口的右侧边界所在的位置作为滑动窗口的位置。这里的右侧是指滑动窗口更靠近文件的结尾的一侧。如果数据块的哈希值不满足第一预定条件,则在步骤S530,使滑动窗口继续在文件上滑动,以获取下一个数据块。在该步骤中,可以使滑动窗口继续滑动,以使得滑动后的滑动窗口的位置与上一次的位置之间间隔预定长度,其中该预定长度小于或等于第二固定长度。这样,所获取的新的数据块与前一个数据块相邻或者部分重叠。
然后,返回到步骤S505,对所获取的下一个数据块计算哈希值。上述的步骤S505至S530被重复执行,直到当前的可变长度块的终止边界被确定。
然而,在该实施例中,可能出现可变长度块过大的问题。为解决该问题,进一步地,可预先确定可变长度块的最大长度。在这种情况下,如果步骤S510的确定结果是数据块的哈希值不满足第一预定条件,则在步骤S530之前,在步骤S522,确定从当前的可变长度块的起始边界到滑动窗口的当前位置的长度,即滑动窗口在当前的可变长度块的起始边界之后已经滑过的数据的大小。然后,在步骤S525,判断所确定的长度是否小于可变长度块的预定最大长度。如果所确定的长度小于可变长度块的预定最大长度,则执行步骤S520,使滑动窗口继续滑动以获取下一个数据块。如果所确定的长度大于或者等于可变长度块的预定最大长度,则在步骤S528,将预定最大长度的位置确定为当前的可变长度块的终止边界。
图6示出了确定可变长度块的终止边界的过程的另一个实施例的示意性流程图。在该实施例中,步骤S601、S605、S610和S620与图5所示的实施例中的步骤S501、S505、S510和S520相同,此处省略其说明。
如果在步骤S610中确定数据块的哈希值不满足第一预定条件,则在步骤S630,确定数据块的哈希值是否满足第二预定条件。在本实施例中,第二预定条件是分块粒度比第一预定条件更细的块边界条件,其定义与第一预定条件相同。在第二预定条件中,预定整数是比第一预定条件中的预定整数小的任意整数。例如,第二预定条件中的预定整数可以设置为第一预定条件中的预定整数的一半。这样,第二预定条件可以表示为:
H%M’=R’
其中,H表示数据块的哈希值,M’表示预定整数,R’表示预定值,其值为M’-1。
如果在步骤S630中确定数据块的哈希值满足第二预定条件,则执行步骤S620,将滑动窗口的当前位置确定为当前的可变长度块的终止边界。如果在步骤S630中确定数据块的哈希值不满足第二预定条件,则在步骤S640,使滑动窗口在文件上继续滑动以获取下一个数据块。然后,返回到步骤S605以计算下一个数据块的哈希值。
在本实施例中,通过设置第一预定条件和第二预定条件,可以更细粒度地调节可变长度块的大小。
进一步地,也可以预先确定可变长度块的最大长度,以防止可变长度块过大。在这种情况下,如果在步骤S630中确定数据块的哈希值不满足第二预定条件,则在步骤S640之前,在步骤S632,确定从当前的可变长度块的起始边界到滑动窗口的当前位置的长度,即滑动窗口从当前的可变长度块的起始边界开始已滑过的数据的大小。然后,在步骤S635,判断所确定的长度是否小于可变长度块的预定最大长度。如果所确定的长度小于所述可变长度块的预定最大长度,则执行步骤S640,使滑动窗口继续在文件上滑动以获取下一个数据块。然后,返回到步骤S605以计算下一个数据块的哈希值。如果所确定的长度大于或者等于可变长度块的预定最大长度,则在步骤S638,将预定最大长度的位置确定为当前的可变长度块的终止边界。
图7示出了确定可变长度块的终止边界的过程的再一个实施例的示意性流程图。在该实施例中,步骤S701、S705、S710和S720与图5所示的实施例中的步骤S501、S505、S510和S520相同,此处省略其说明。此外,还预先确定了可变长度块的最大长度。
在通过步骤S705计算了数据块的哈希值之后,与步骤S710并行地,在步骤S730,确定数据块的哈希值是否满足第二预定条件。在本实施例中,第二预定条件的定义和设置与图6所示的实施例中的第二预定条件相同。
如果在步骤S730中确定数据块的哈希值不满足第二预定条件,则不执行任何操作。如果在步骤S730中确定数据块的哈希值满足第二预定条件,则在步骤S735,检查针对当前的可变长度块是否先前记录了滑动窗口的位置,即对于当前的可变长度块,第二预定条件是否是第一次满足。如果检查到先前记录了滑动窗口的位置,即第二预定条件不是第一次满足,则在步骤S740,不记录滑动窗口的当前位置,而保留已记录的滑动窗口的位置。如果检查到先前没有记录过滑动窗口的位置,即,第二预定条件是第一次满足,则在步骤S745,记录滑动窗口的当前位置,作为当前的可变长度块的备选终止边界。
如果在步骤S710中确定数据块的哈希值不满足第一预定条件,则在步骤S750,确定从当前的可变长度块的起始边界到滑动窗口的当前位置的长度。然后,在步骤S755,判断所确定的长度是否小于可变长度块的预定最大长度。如果所确定的长度小于可变长度块的预定最大长度,则在步骤S760,使滑动窗口继续在文件上滑动以获取下一个数据块,然后返回到步骤S705以计算下一个数据块的哈希值。如果所确定的长度大于或者等于可变长度块的预定最大长度,则在步骤S765,检查是否存在可变长度块的备选终止边界。如果在步骤S765中检查到存在可变长度块的备选终止边界,则在步骤S770,将备选终止边界确定为当前的可变长度块的终止边界。如果在步骤S765中检查到不存在可变长度块的备选终止边界,则在步骤S780,将预定最大长度的位置确定为当前的可变长度块的终止边界。
返回到图2,在将文件切分成至少一个分组数据块之后,在步骤S220,对至少一个组合数据块进行重复数据删除操作。
在该步骤中,首先对于所切分的至少一个组合数据块的每一个,分别计算其中的固定长度块的哈希值和可变长度块的哈希值。在此,可使用例如MD5、SHA1等的哈希算法进行计算,以获得能够唯一标识固定长度块的哈希值和唯一标识可变长度块的哈希值。
接着,在哈希表中查找所计算的固定长度块的哈希值和可变长度块的哈希值。哈希表可用于存储数据块的哈希值和数据块的某些元数据,例如偏移、引用等。
如果在哈希表中查找到固定长度块的哈希值,这表明该固定长度块是重复数据块,则丢弃该固定长度块。如果在哈希表中未查找到固定长度块的哈希值,这表明该固定长度块是新的数据块,则存储该固定长度块,并在哈希表中存储该固定长度块的哈希值。
同样,如果在哈希表中查找到可变长度块的哈希值,这表明该可变长度块是重复数据块,则丢弃该可变长度块。如果在哈希表中未查找到可变长度块的哈希值,这表明该可变长度块是新的数据块,则存储该可变长度块,并在哈希表中存储该可变长度块的哈希值。
通过以上描述可以看出,本实施例的用于文件的重复数据删除的方法通过将文件切分成包含固定长度块和可变长度块的组合数据块,能够既加快重复数据删除的速度,又确保高的重复数据删除率。
虽然在以上的实施例中描述了先对文件进行切分以获得所有组合数据块后再对各个组合数据块执行重复数据删除操作,但是,本领域的技术人员知道也可以每当从文件中切分出一个固定长度块或可变长度块时就对该固定长度块或可变长度块执行重复数据删除操作。
在相同的发明构思下,图8示出了根据本发明的实施例的用于文件的重复数据删除的装置800的示意性框图。下面结合附图,对本实施例进行详细描述,其中,对于与前面实施例相同的部分,适当省略其说明。
如图8所示,本实施例的装置800可包括:切分模块801,其被配置为将文件切分成至少一个组合数据块,其中,组合数据块包括固定长度块和可变长度块,其中可变长度块基于文件的内容而确定;以及重复数据删除模块802,其被配置为对至少一个组合数据块进行重复数据删除操作。
在一个实施例中,在切分模块801中,固定长度块确定模块首先确定固定长度块的起始边界。当文件被读入时,固定长度块确定模块将文件的开始处确定为固定长度块的起始边界。然后,固定长度块确定模块确定固定长度块的终止边界,以使得该固定长度块的长度等于第一固定长度。第一固定长度可以是预先确定的任意长度。接着,可变长度块确定模块以所确定的固定长度块的终止边界作为可变长度块的起始边界,并基于文件的内容来确定可变长度块的终止边界。固定长度块和可变长度块组成一个组合数据块。如果未到达文件的结尾,则固定长度块确定模块再次确定固定长度块的起始边界。此时,固定长度块确定模块将前一个组合数据块的可变长度块的终止边界确定为下一个固定长度块的起始边界,并确定下一个固定长度块的终止边界。固定长度块确定模块和可变长度块确定模块交替地工作,直到文件的结尾。
在一个实施例中,在可变长度块确定模块中,数据块获取单元从固定长度块的终止边界开始,获取在具有第二固定长度的滑动窗口内的数据块。第二固定长度可以是预先确定的任意长度。接着,计算单元计算所获取的数据块的哈希值。在此,可使用例如RabinHash算法的计算弱哈希值的哈希算法。然后,边界确定单元在所计算的数据块的哈希值满足第一预定条件的情况下,将滑动窗口的当前位置确定为可变长度块的终止边界。在本实施例中,第一预定条件是块边界条件,其可以被定义为例如数据块的哈希值对预定整数取模的值等于预定值。如果所计算的数据块的哈希值不满足第一预定条件,则数据块获取单元使滑动窗口继续在文件上滑动以获取下一个数据块。
在另一个实施例中,在可变长度块确定模块中,如果所计算的数据块的哈希值不满足第一预定条件,则长度确定单元确定从当前的可变长度块的起始边界到滑动窗口的当前位置的长度。然后,如果所确定的长度小于可变长度块的预定最大长度,数据块获取单元使滑动窗口继续滑动以获取下一个数据块。如果所确定的长度大于或者等于可变长度块的预定最大长度,则边界确定单元将预定最大长度的位置确定为当前的可变长度块的终止边界。
在另一个实施例中,在可变长度块确定模块中,如果所计算的数据块的哈希值不满足第一预定条件但满足第二预定条件,则边界确定单元将滑动窗口的当前位置确定为当前的可变长度块的终止边界。在本实施例中,第二预定条件是分块粒度比第一预定条件更细的块边界条件,其定义可与第一预定条件相同。如果所计算的数据块的哈希值不满足第一预定条件且不满足第二预定条件,则数据块获取单元使滑动窗口继续在文件上滑动以获取下一个数据块。
在另一个实施例中,在可变长度块确定模块中,如果所计算的数据块的哈希值不满足所述第一预定条件且不满足所述第二预定条件,则长度确定单元确定从当前的可变长度块的起始边界到滑动窗口的当前位置的长度。如果所确定的长度小于可变长度块的预定最大长度,则数据块获取单元使滑动窗口继续在文件上滑动以获取下一个数据块。如果所确定的长度大于或者等于可变长度块的预定最大长度,则边界确定单元将预定最大长度的位置确定为当前的可变长度块的终止边界。
在另一个实施例中,在可变长度块确定模块中,检查单元在所计算的数据块的哈希值满足第二预定条件的情况下,检查针对当前的可变长度块是否先前记录了滑动窗口的位置。然后,记录单元在检查到先前记录了滑动窗口的位置的情况下,不记录滑动窗口的当前位置,而保留所记录的滑动窗口的位置,以及在检查到先前没有记录过滑动窗口的位置的情况下,记录滑动窗口的当前位置,作为可变长度块的备选终止边界。并行地,长度确定单元在所计算的数据块的哈希值不满足第一预定条件的情况下,确定从当前的可变长度块的起始边界到滑动窗口的当前位置的长度。然后,如果所确定的长度小于可变长度块的预定最大长度,则数据块获取单元使滑动窗口继续在文件上滑动以获取下一个数据块。如果所确定的长度大于或者等于可变长度块的预定最大长度,则检查单元检查是否存在可变长度块的备选终止边界。然后,边界确定单元在检查到存在可变长度块的备选终止边界的情况下,将备选终止边界确定为当前的可变长度块的终止边界,以及在检查到不存在可变长度块的备选终止边界的情况下,将预定最大长度的位置确定为当前的可变长度块的终止边界。
在一个实施例中,在重复数据删除模块中,计算单元对于由切分模块切分的至少一个组合数据块的每一个,分别计算其中的固定长度块的哈希值和可变长度块的哈希值。然后,查找单元在哈希表中查找固定长度块的哈希值和可变长度块的哈希值。如果在哈希表中查找到固定长度块的哈希值,则丢弃单元丢弃相应的固定长度块。如果在哈希表中未查找到固定长度块的哈希值,则存储单元存储相应的固定长度块,并在哈希表中存储该固定长度块的哈希值。如果在哈希表中查找到可变长度块的哈希值,则丢弃单元丢弃相应的可变长度块。如果在哈希表中未查找到可变长度块的哈希值,则存储单元存储相应的可变长度块,并在哈希表中存储该可变长度块的哈希值。
应当注意,本实施例的装置800能够在操作上实现图2、图3、图5至图7所示的实施例的用于文件的重复数据删除的方法。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (18)

1.一种用于文件的重复数据删除的方法,包括:
将所述文件切分成至少一个组合数据块,其中,所述组合数据块包括固定长度块和可变长度块,所述可变长度块基于所述文件的内容而确定;以及
对所述至少一个组合数据块进行重复数据删除操作。
2.根据权利要求1所述的方法,其中,将所述文件切分成至少一个组合数据块包括:
确定固定长度块的起始边界;
确定所述固定长度块的终止边界,以使得所述固定长度块的长度等于第一固定长度;以及
以所述固定长度块的终止边界作为可变长度块的起始边界,基于所述文件的内容而确定所述可变长度块的终止边界;
其中,所述固定长度块和所述可变长度块组成一个组合数据块。
3.根据权利要求2所述的方法,其中,确定固定长度块的起始边界包括:
将所述文件的开始处确定为所述固定长度块的起始边界;或者
将另一个组合数据块的可变长度块的终止边界确定为所述固定长度块的起始边界。
4.根据权利要求2或3所述的方法,其中,以所述固定长度块的终止边界作为可变长度块的起始边界,基于所述文件的内容而确定所述可变长度块的终止边界包括:
从所述固定长度块的终止边界开始,获取在具有第二固定长度的滑动窗口内的数据块;
计算所述滑动窗口内的所述数据块的哈希值;
如果所述滑动窗口内的所述数据块的所述哈希值满足第一预定条件,则将所述滑动窗口的当前位置确定为所述可变长度块的终止边界;
如果所述滑动窗口内的所述数据块的所述哈希值不满足所述第一预定条件,则滑动所述滑动窗口以获取下一个数据块;
重复执行上述计算步骤及其以后的步骤,直到确定所述可变长度块的终止边界。
5.根据权利要求4所述的方法,其中,以所述固定长度块的终止边界作为可变长度块的起始边界,基于所述文件的内容而确定所述可变长度块的终止边界还包括:
如果所述滑动窗口内的所述数据块的所述哈希值不满足所述第一预定条件,则确定从所述可变长度块的起始边界到所述滑动窗口的当前位置的长度;
如果所确定的长度小于所述可变长度块的预定最大长度,则滑动所述滑动窗口以获取下一个数据块;以及
如果所确定的长度大于或者等于所述可变长度块的预定最大长度,则将所述预定最大长度的位置确定为所述可变长度块的终止边界。
6.根据权利要求4所述的方法,其中,以所述固定长度块的终止边界作为可变长度块的起始边界,基于所述文件的内容而确定所述可变长度块的终止边界还包括:
如果所述滑动窗口内的所述数据块的所述哈希值不满足所述第一预定条件但满足第二预定条件,则将所述滑动窗口的当前位置确定为所述可变长度块的终止边界;以及
如果所述滑动窗口内的所述数据块的所述哈希值不满足所述第一预定条件且不满足所述第二预定条件,则滑动所述滑动窗口以获取下一个数据块。
7.根据权利要求6所述的方法,其中,以所述固定长度块的终止边界作为可变长度块的起始边界,基于所述文件的内容而确定所述可变长度块的终止边界还包括:
如果所述滑动窗口内的所述数据块的所述哈希值不满足所述第一预定条件且不满足所述第二预定条件,则确定从所述可变长度块的起始边界到所述滑动窗口的当前位置的长度;
如果所确定的长度小于所述可变长度块的预定最大长度,则滑动所述滑动窗口以获取下一个数据块;以及
如果所确定的长度大于或者等于所述可变长度块的预定最大长度,则将所述预定最大长度的位置确定为所述可变长度块的终止边界。
8.根据权利要求4所述的方法,其中,以所述固定长度块的终止边界作为可变长度块的起始边界,基于所述文件的内容而确定所述可变长度块的终止边界还包括:
如果所述滑动窗口内的所述数据块的所述哈希值满足第二预定条件,则检查针对所述可变长度块是否先前记录了所述滑动窗口的位置;
如果检查到先前记录了所述滑动窗口的位置,则不记录所述滑动窗口的当前位置,而保留所记录的所述滑动窗口的位置;
如果检查到先前没有记录过所述滑动窗口的位置,则记录所述滑动窗口的当前位置,作为所述可变长度块的备选终止边界;以及
如果所述滑动窗口内的所述数据块的所述哈希值不满足所述第一预定条件,则确定从所述可变长度块的起始边界到所述滑动窗口的当前位置的长度;
如果所确定的长度小于所述可变长度块的预定最大长度,则滑动所述滑动窗口以获取下一个数据块;
如果所确定的长度大于或者等于所述可变长度块的预定最大长度,则检查是否存在所述可变长度块的所述备选终止边界;
如果检查到存在所述可变长度块的备选终止边界,则将所述备选终止边界确定为所述可变长度块的终止边界;
如果检查到不存在所述可变长度块的备选终止边界,则将所述预定最大长度的位置确定为所述可变长度块的终止边界。
9.根据权利要求1所述的方法,其中,对所述至少一个组合数据块进行重复数据删除操作包括:
对于所述至少一个组合数据块的每一个,分别计算所述固定长度块的哈希值和所述可变长度块的哈希值;
在哈希表中查找所述固定长度块的哈希值和所述可变长度块的哈希值;
如果在所述哈希表中查找到所述固定长度块的哈希值,则丢弃所述固定长度块;
如果在所述哈希表中未查找到所述固定长度块的哈希值,则存储所述固定长度块,并在所述哈希表中存储所述固定长度块的哈希值;
如果在所述哈希表中查找到所述可变长度块的哈希值,则丢弃所述可变长度块;以及
如果在所述哈希表中未查找到所述可变长度块的哈希值,则存储所述可变长度块,并在所述哈希表中存储所述可变长度块的哈希值。
10.一种用于文件的重复数据删除的装置,包括:
切分模块,其被配置为将所述文件切分成至少一个组合数据块,其中,所述组合数据块包括固定长度块和可变长度块,所述可变长度块基于所述文件的内容而确定;以及
重复数据删除模块,其被配置为对所述至少一个组合数据块进行重复数据删除操作。
11.根据权利要求10所述的装置,其中,所述切分模块包括:
固定长度块确定模块,其被配置为确定固定长度块的起始边界,并确定所述固定长度块的终止边界,以使得所述固定长度块的长度等于第一固定长度;以及
可变长度块确定模块,其被配置为以所述固定长度块的终止边界作为可变长度块的起始边界,基于所述文件的内容而确定所述可变长度块的终止边界;
其中,所述固定长度块和所述可变长度块组成一个组合数据块。
12.根据权利要求11所述的装置,其中,所述固定长度块确定模块进一步被配置为将所述文件的开始处确定为所述固定长度块的起始边界,或者将另一个组合数据块的可变长度块的终止边界确定为所述固定长度块的起始边界。
13.根据权利要求11或12所述的装置,其中,所述可变长度块确定模块包括:
数据块获取单元,其被配置为从所述固定长度块的终止边界开始,获取在具有第二固定长度的滑动窗口内的数据块;
计算单元,其被配置为计算所述滑动窗口内的所述数据块的哈希值;
边界确定单元,其被配置为如果所述滑动窗口内的所述数据块的所述哈希值满足第一预定条件,则将所述滑动窗口的当前位置确定为所述可变长度块的终止边界;以及
其中,所述数据块获取单元还被配置为如果所述滑动窗口内的所述数据块的所述哈希值不满足所述第一预定条件,则滑动所述滑动窗口以获取下一个数据块。
14.根据权利要求13所述的装置,其中,所述可变长度块确定模块还包括:
长度确定单元,其被配置为如果所述滑动窗口内的所述数据块的所述哈希值不满足所述第一预定条件,则确定从所述可变长度块的起始边界到所述滑动窗口的当前位置的长度;
其中,所述数据块获取单元还被配置为如果所确定的长度小于所述可变长度块的预定最大长度,则滑动所述滑动窗口以获取下一个数据块;
所述边界确定单元还被配置为如果所确定的长度大于或者等于所述可变长度块的预定最大长度,则将所述预定最大长度的位置确定为所述可变长度块的终止边界。
15.根据权利要求13所述的装置,其中,所述边界确定单元还被配置为如果所述滑动窗口内的所述数据块的所述哈希值不满足所述第一预定条件但满足第二预定条件,则将所述滑动窗口的当前位置确定为所述可变长度块的终止边界;
所述数据块获取单元还被配置为如果所述滑动窗口内的所述数据块的所述哈希值不满足所述第一预定条件且不满足所述第二预定条件,则滑动所述滑动窗口以获取下一个数据块。
16.根据权利要求15所述的装置,其中,所述可变长度块确定模块还包括:
长度确定单元,其被配置为如果所述滑动窗口内的所述数据块的所述哈希值不满足所述第一预定条件且不满足所述第二预定条件,则确定从所述可变长度块的起始边界到所述滑动窗口的当前位置的长度;
其中,所述数据块获取单元还被配置为如果所确定的长度小于所述可变长度块的预定最大长度,则滑动所述滑动窗口以获取下一个数据块;
所述边界确定单元还被配置为如果所确定的长度大于或者等于所述可变长度块的预定最大长度,则将所述预定最大长度的位置确定为所述可变长度块的终止边界。
17.根据权利要求13所述的装置,其中,所述可变长度块确定模块还包括:
检查单元,其被配置为如果所述滑动窗口内的所述数据块的所述哈希值满足第二预定条件,则检查针对所述可变长度块是否先前记录了所述滑动窗口的位置;
记录单元,其被配置为如果检查到先前记录了所述滑动窗口的位置,则不记录所述滑动窗口的当前位置,而保留所记录的所述滑动窗口的位置,以及如果检查到先前没有记录过所述滑动窗口的位置,则记录所述滑动窗口的当前位置,作为所述可变长度块的备选终止边界;
长度确定单元,其被配置为如果所述滑动窗口内的所述数据块的所述哈希值不满足所述第一预定条件,则确定从所述可变长度块的起始边界到所述滑动窗口的当前位置的长度;
其中,所述数据块获取单元还被配置为如果所确定的长度小于所述可变长度块的预定最大长度,则滑动所述滑动窗口以获取下一个数据块;
所述检查单元还被配置为如果所确定的长度大于或者等于所述可变长度块的预定最大长度,则检查是否存在所述可变长度块的所述备选终止边界;
所述边界确定单元还被配置为如果检查到存在所述可变长度块的备选终止边界,则将所述备选终止边界确定为所述可变长度块的终止边界,以及如果检查到不存在所述可变长度块的备选终止边界,则将所述预定最大长度的位置确定为所述可变长度块的终止边界。
18.根据权利要求10所述的装置,其中,所述重复数据删除模块包括:
计算单元,其被配置为对于所述至少一个组合数据块的每一个,分别计算所述固定长度块的哈希值和所述可变长度块的哈希值;
查找单元,其被配置为在哈希表中查找所述固定长度块的哈希值和所述可变长度块的哈希值;
丢弃单元,其被配置为如果在所述哈希表中查找到所述固定长度块的哈希值,则丢弃所述固定长度块,以及如果在所述哈希表中查找到所述可变长度块的哈希值,则丢弃所述可变长度块;以及
存储单元,其被配置为如果在所述哈希表中未查找到所述固定长度块的哈希值,则存储所述固定长度块,并在所述哈希表中存储所述固定长度块的哈希值,以及如果在所述哈希表中未查找到所述可变长度块的哈希值,则存储所述可变长度块,并在所述哈希表中存储所述可变长度块的哈希值。
CN201410239472.2A 2014-05-30 2014-05-30 用于文件的重复数据删除的方法及装置 Active CN105446964B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201410239472.2A CN105446964B (zh) 2014-05-30 2014-05-30 用于文件的重复数据删除的方法及装置
US14/724,859 US10769112B2 (en) 2014-05-30 2015-05-29 Deduplication of file

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410239472.2A CN105446964B (zh) 2014-05-30 2014-05-30 用于文件的重复数据删除的方法及装置

Publications (2)

Publication Number Publication Date
CN105446964A true CN105446964A (zh) 2016-03-30
CN105446964B CN105446964B (zh) 2019-04-26

Family

ID=54701978

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410239472.2A Active CN105446964B (zh) 2014-05-30 2014-05-30 用于文件的重复数据删除的方法及装置

Country Status (2)

Country Link
US (1) US10769112B2 (zh)
CN (1) CN105446964B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710947A (zh) * 2019-01-22 2019-05-03 福建亿榕信息技术有限公司 电力专业词库生成方法及装置
US10938961B1 (en) 2019-12-18 2021-03-02 Ndata, Inc. Systems and methods for data deduplication by generating similarity metrics using sketch computation
CN113052752A (zh) * 2019-12-27 2021-06-29 畅想科技有限公司 用于在存储器中存储可变长度数据块的方法和系统
US11119995B2 (en) 2019-12-18 2021-09-14 Ndata, Inc. Systems and methods for sketch computation

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105446964B (zh) * 2014-05-30 2019-04-26 国际商业机器公司 用于文件的重复数据删除的方法及装置
CN106131134B (zh) * 2016-06-24 2019-11-19 武汉斗鱼网络科技有限公司 一种消息内容合并去重方法及系统
JP6841024B2 (ja) * 2016-12-09 2021-03-10 富士通株式会社 データ処理装置,データ処理プログラムおよびデータ処理方法
US11741051B2 (en) 2017-10-30 2023-08-29 AtomBeam Technologies Inc. System and methods for secure storage for data deduplication
US11449465B2 (en) 2019-09-11 2022-09-20 International Business Machines Corporation Fixed chunk size deduplication with variable-size chunking
EP4030310A4 (en) * 2020-06-11 2022-12-21 Huawei Technologies Co., Ltd. DATA PROCESSING METHODS AND STORAGE DEVICE
CN114091111B (zh) * 2021-09-09 2022-11-18 深圳前海微众银行股份有限公司 一种区块链智能合约的存储方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080133561A1 (en) * 2006-12-01 2008-06-05 Nec Laboratories America, Inc. Methods and systems for quick and efficient data management and/or processing
US20080159331A1 (en) * 2006-12-29 2008-07-03 Riverbed Technology, Inc. Data segmentation using shift-varying predicate function fingerprinting
CN102082575A (zh) * 2010-12-14 2011-06-01 江苏格物信息科技有限公司 基于预分块及滑动窗口的重复数据消除方法
CN102479245A (zh) * 2010-11-30 2012-05-30 英业达集团(天津)电子技术有限公司 数据区块的切分方法
CN102682086A (zh) * 2012-04-23 2012-09-19 华为技术有限公司 数据分块方法及设备
US20130238570A1 (en) * 2012-03-08 2013-09-12 Dell Products L.P. Fixed size extents for variable size deduplication segments
US8650162B1 (en) * 2009-03-31 2014-02-11 Symantec Corporation Method and apparatus for integrating data duplication with block level incremental data backup

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3422370B2 (ja) * 1992-12-14 2003-06-30 株式会社日立製作所 ディスクキャッシュ制御装置
KR100777271B1 (ko) * 2001-02-28 2007-11-20 엘지전자 주식회사 디지털 시스템의 메모리 관리 방법
US7249248B2 (en) * 2002-11-25 2007-07-24 Intel Corporation Method, apparatus, and system for variable increment multi-index looping operations
DE602005015435D1 (de) * 2004-04-26 2009-08-27 Storewiz Inc Verfahren und system zur komprimierung von dateien zur speicherung und operation an komprimierten dateien
JP4437953B2 (ja) * 2004-12-10 2010-03-24 富士通株式会社 データ書込み方法とチャネルアダプタ
US7844581B2 (en) * 2006-12-01 2010-11-30 Nec Laboratories America, Inc. Methods and systems for data management using multiple selection criteria
US8978155B2 (en) * 2008-07-25 2015-03-10 Brown University Apparatus, methods, and computer program products providing dynamic provable data possession
US7992037B2 (en) * 2008-09-11 2011-08-02 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
US8315985B1 (en) * 2008-12-18 2012-11-20 Symantec Corporation Optimizing the de-duplication rate for a backup stream
US8234468B1 (en) * 2009-04-29 2012-07-31 Netapp, Inc. System and method for providing variable length deduplication on a fixed block file system
US8352846B2 (en) * 2009-05-07 2013-01-08 Adeptence, Llc Method an apparatus for low density parity check codes encoding and decoding
US8321648B2 (en) * 2009-10-26 2012-11-27 Netapp, Inc Use of similarity hash to route data for improved deduplication in a storage server cluster
GB2471056B (en) * 2010-03-09 2011-02-16 Quantum Corp Controlling configurable variable data reduction
US8250325B2 (en) * 2010-04-01 2012-08-21 Oracle International Corporation Data deduplication dictionary system
US8364652B2 (en) * 2010-09-30 2013-01-29 Commvault Systems, Inc. Content aligned block-based deduplication
US9116909B2 (en) * 2010-12-29 2015-08-25 Amazon Technologies, Inc. Reduced bandwidth data uploading in data systems
US20150134623A1 (en) * 2011-02-17 2015-05-14 Jitcomm Networks Pte Ltd Parallel data partitioning
US8849768B1 (en) * 2011-03-08 2014-09-30 Symantec Corporation Systems and methods for classifying files as candidates for deduplication
US8612392B2 (en) * 2011-05-09 2013-12-17 International Business Machines Corporation Identifying modified chunks in a data set for storage
US9436292B1 (en) * 2011-06-08 2016-09-06 Emc Corporation Method for replicating data in a backup storage system using a cost function
US8521705B2 (en) * 2011-07-11 2013-08-27 Dell Products L.P. Accelerated deduplication
WO2013027230A1 (en) * 2011-08-19 2013-02-28 Hitachi, Ltd. Storage apparatus and duplicate data detection method
US8924366B2 (en) * 2011-09-16 2014-12-30 Symantec Corporation Data storage deduplication systems and methods
US8484170B2 (en) * 2011-09-19 2013-07-09 International Business Machines Corporation Scalable deduplication system with small blocks
WO2013051129A1 (ja) * 2011-10-06 2013-04-11 株式会社 日立製作所 格納データの重複排除方法、格納データの重複排除装置、及び重複排除プログラム
US9449014B2 (en) * 2011-11-29 2016-09-20 Dell Products L.P. Resynchronization of replicated data
US9635132B1 (en) * 2011-12-15 2017-04-25 Amazon Technologies, Inc. Service and APIs for remote volume-based block storage
US8688652B2 (en) * 2012-04-05 2014-04-01 International Business Machines Corporation Increased in-line deduplication efficiency
US8898121B2 (en) * 2012-05-29 2014-11-25 International Business Machines Corporation Merging entries in a deduplication index
US9563632B2 (en) * 2012-07-23 2017-02-07 Dell Products L.P. Garbage collection aware deduplication
JPWO2014030252A1 (ja) * 2012-08-24 2016-07-28 株式会社日立製作所 ストレージ装置及びデータ管理方法
IN2012KO01022A (zh) * 2012-09-05 2015-06-05 Indian Inst Technology Kharagpur
US10176189B2 (en) * 2012-09-19 2019-01-08 Hitachi Data Systems Engineering UK Limited System and method for managing deduplication using checkpoints in a file storage system
US9465808B1 (en) * 2012-12-15 2016-10-11 Veritas Technologies Llc Deduplication featuring variable-size duplicate data detection and fixed-size data segment sharing
US9396204B2 (en) * 2012-12-21 2016-07-19 Spectra Logic Data deduplication in a removable storage device
US8909605B1 (en) * 2013-02-28 2014-12-09 Emc Corporation Method and system for accelerating data movement using change information concerning difference between current and previous data movements
CN103324699B (zh) 2013-06-08 2016-03-02 西安交通大学 一种适应大数据应用的快速重复数据删除方法
US9244830B2 (en) * 2013-07-15 2016-01-26 Globalfoundries Inc. Hierarchical content defined segmentation of data
CN105446964B (zh) * 2014-05-30 2019-04-26 国际商业机器公司 用于文件的重复数据删除的方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080133561A1 (en) * 2006-12-01 2008-06-05 Nec Laboratories America, Inc. Methods and systems for quick and efficient data management and/or processing
US20080159331A1 (en) * 2006-12-29 2008-07-03 Riverbed Technology, Inc. Data segmentation using shift-varying predicate function fingerprinting
US8650162B1 (en) * 2009-03-31 2014-02-11 Symantec Corporation Method and apparatus for integrating data duplication with block level incremental data backup
CN102479245A (zh) * 2010-11-30 2012-05-30 英业达集团(天津)电子技术有限公司 数据区块的切分方法
CN102082575A (zh) * 2010-12-14 2011-06-01 江苏格物信息科技有限公司 基于预分块及滑动窗口的重复数据消除方法
US20130238570A1 (en) * 2012-03-08 2013-09-12 Dell Products L.P. Fixed size extents for variable size deduplication segments
CN102682086A (zh) * 2012-04-23 2012-09-19 华为技术有限公司 数据分块方法及设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KAVE ESHGHI等: "A Framework for Analyzing and Improving Content-Based Chunking Algorithms", 《HEWLETT》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710947A (zh) * 2019-01-22 2019-05-03 福建亿榕信息技术有限公司 电力专业词库生成方法及装置
CN109710947B (zh) * 2019-01-22 2021-09-07 福建亿榕信息技术有限公司 电力专业词库生成方法及装置
US10938961B1 (en) 2019-12-18 2021-03-02 Ndata, Inc. Systems and methods for data deduplication by generating similarity metrics using sketch computation
US11119995B2 (en) 2019-12-18 2021-09-14 Ndata, Inc. Systems and methods for sketch computation
US11627207B2 (en) 2019-12-18 2023-04-11 Ndata, Inc. Systems and methods for data deduplication by generating similarity metrics using sketch computation
US11995050B2 (en) 2019-12-18 2024-05-28 Granica Computing, Inc. Systems and methods for sketch computation
CN113052752A (zh) * 2019-12-27 2021-06-29 畅想科技有限公司 用于在存储器中存储可变长度数据块的方法和系统
US11748010B2 (en) 2019-12-27 2023-09-05 Imagination Technologies Limited Methods and systems for storing variable length data blocks in memory

Also Published As

Publication number Publication date
CN105446964B (zh) 2019-04-26
US20150347445A1 (en) 2015-12-03
US10769112B2 (en) 2020-09-08

Similar Documents

Publication Publication Date Title
CN105446964A (zh) 用于文件的重复数据删除的方法及装置
KR102007070B1 (ko) 메모리 관리 시의 중복 제거를 위해서 기준 세트로 기준 블록을 취합하는 기법
AU2011256912B2 (en) Systems and methods for providing increased scalability in deduplication storage systems
US9201949B2 (en) Index searching using a bloom filter
US10303797B1 (en) Clustering files in deduplication systems
JP5878548B2 (ja) 重複排除ストレージ・システム、その内部の合成バックアップを容易にする方法、及び、プログラム
CN106610790B (zh) 一种重复数据删除方法及装置
US20180196609A1 (en) Data Deduplication Using Multi-Chunk Predictive Encoding
US10656858B1 (en) Deduplication featuring variable-size duplicate data detection and fixed-size data segment sharing
US20180113767A1 (en) Systems and methods for data backup using data binning and deduplication
US10884926B2 (en) Method and system for distributed storage using client-side global persistent cache
US10540114B2 (en) System and method accelerated random write layout for bucket allocation with in hybrid storage systems
US9632720B2 (en) Data de-duplication
US10838923B1 (en) Poor deduplication identification
CN108027713A (zh) 用于固态驱动器控制器的重复数据删除
US20150261447A1 (en) Controlling segment size distribution in hash-based deduplication
JP2017501489A (ja) コントローラ、フラッシュメモリ装置、データブロック安定性を識別する方法、及びデータをフラッシュメモリ装置に記憶する方法
CN110888918A (zh) 相似数据检测方法及装置、计算机设备和存储介质
US11176034B2 (en) System and method for inline tiering of write data
US11347423B2 (en) System and method for detecting deduplication opportunities
Wang et al. SBBS: A sliding blocking algorithm with backtracking sub-blocks for duplicate data detection
JP2010191903A (ja) 分散ファイルシステムのストライピング種別選択方法及びその分散ファイルシステム
US11847333B2 (en) System and method for sub-block deduplication with search for identical sectors inside a candidate block
US20230409222A1 (en) System and method for indexing a data item in a data storage system
CN118159936A (zh) 顺序存储介质上的并行重复数据删除机制

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant