应用感知的重复数据删除
文献发布时间:2023-06-19 11:14:36
技术领域
本发明的实施方式涉及数据保护操作。更具体地,本发明的实施方式涉及用于应用感知的重复数据删除(application aware deduplication)的系统、装置和方法。
背景技术
重复数据删除操作试图减少存储在存储系统中的数据量。例如,如果同一对象在存储系统中存储了两次,则可以通过删除其中一个对象来对这些数据进行重复数据删除。当然,将保留或创建对该对象的任何必要引用,以便可以正确还原或访问该对象。例如,可以维持索引或映射,该索引或映射将剩余的或被执行重复数据删除的对象映射到所有需要该对象的应用或备份。当对象是文件的一部分时,可以维持包括该对象的所有文件的映射或索引。
重复数据删除中的问题之一是实现良好的重复数据删除率。具有重复数据删除率或增加重复数据删除率的困难有许多来源。例如,压缩和/或加密导致难以获得良好的重复数据删除率,这至少是因为这些对象在被压缩和/或加密时看起来与其未压缩和/或解密的形式非常不同,即使它们有很多相同的内容,也不会很好地进行重复数据删除。此外,未压缩时具有小的差异的两个对象在压缩时可能具有很大的差异。
附图说明
为了描述可以获得本发明的至少一些方面的方式,将参考在附图中示出的本发明的特定实施方式来进行更具体的描述。将理解这些附图仅描绘了本发明的示例性实施方式,因此不应被认为是对其范围的限制,将通过使用附图以附加的特征和细节来描述和解释本发明的实施方式,其中:
图1是文件的示例,该文件的格式包括子文件,并且与应用相关联;
图2示出了文件格式的另一示例,其中较大的文件或容器包括子文件;
图3示出了配置为对文件进行重复数据删除的应用感知的重复数据删除文件系统的示例;
图4是用于应用感知的文件重复数据删除的方法的示例;以及
图5示出了差分压缩的示例。
具体实施方式
本发明的实施方式涉及用于在包括但不限于基于文件的存储系统、基于对象的存储系统等的存储系统中存储数据的系统、装置和方法。在存储系统中执行的存储操作可以包括但不限于重复数据删除操作、应用感知的重复数据删除操作、压缩操作、重构操作(从文件的被重复数据删除和/或分块的部分生成原始文件)等或其组合。本发明的实施方式还涉及数据保护操作以及用于执行数据保护操作和/或存储操作的系统、方法和装置。数据保护操作包括但不限于重复数据删除操作(包括应用感知的重复数据删除操作)、备份操作、还原操作等或其组合。存储操作和/或数据保护操作可以包括其他相关操作,例如分块操作、加密/解密操作、哈希操作、索引操作等。
本发明的实施方式提高了文件系统(例如,Data Domain(数据域)FS)利用多种技术并实现高重复数据删除率的能力。针对文件讨论了本发明的实施方式,但是本发明的实施方式可以应用于对象和其他数据或数据格式。例如,可以通过在特定位置剪切文件来对文件(或对象或其他数据)进行重复数据删除。将文件或对象划分或剪切成多个部分或多个片段是对文件进行分块的示例。块尺寸可以不同或可以相同,并且可以取决于文件被如何分块。在一个示例中并且没有限制,块的尺寸可以为约20KB至30KB。块的尺寸可以和与进行重复数据删除的块相关联的元数据的量平衡。太小的块尺寸可以与太多的元数据相关联。太大的块尺寸不能很好地进行重复数据删除。此外,可以调整块尺寸,并且可以取决于被分块的文件。
某些应用(例如,文字处理应用、演示文稿应用)使用特定格式存储文件。例如,
在一个示例中,文档格式可以包括多个文件。特别地,文档格式可以体现为ZIP文件,该ZIP文件存储较小的XML(可扩展标记语言)文件以及诸如JPEG和AVI文件之类的媒体文件。为了方便和清楚起见,使用术语“文件”指代整体文件(例如,ZIP文件)来讨论包括文件格式的本发明的实施方式。文件中包含的文件(例如,XML文件)在本文中称为子文件。因此,文档格式实质上包括包含较小子文件的容器或包(例如ZIP文件的文件)。文件的格式可以特定于应用。例如,文档格式可以不同于演示文稿格式或电子表格格式。本发明的实施方式还可以应用于其他应用及其关联的文件类型。在对这些类型的文件进行重复数据删除时,文件系统或数据保护系统会考虑文件的格式。
本发明的实施方式还可以考虑文件被压缩的方式。例如,文件可以整体上被压缩(和/或加密)。可替选地,每个子文件可以单独压缩。在一个示例中,压缩整个文件——实现双级压缩。此外,与压缩的单独文件的重复数据删除率相比,未压缩文件的重复数据删除量或重复数据删除率可以不同。未压缩文件的微小变化会导致完全不同的压缩文件,并且此因素可能会影响重复数据删除率。
更一般而言,重复数据删除系统通常通过对文件进行分块并在系统中查找相同的块(例如,查看来自系统中所有应用或数据源的块)来分别或独立地对每个文件进行重复数据删除。本发明的实施方式还以考虑格式的方式对文件进行分块。通过考虑文件格式,可以提高重复数据删除率。
例如,以考虑格式和/或内容的方式对文件进行分块可以允许文件中包含的图像被一致地分块。如果将文件分块而不考虑格式,则包括图像的块也可能包括其他内容,例如文本。结果,即使在其他文件中包含图像,该图像也可能无法很好地进行重复数据删除。在考虑格式的情况下,图像可以自己分块。这样允许更有效地对图像进行重复数据删除,并提高重复数据删除率。
在一些示例中,对未压缩文件执行重复数据删除。更具体地,由于对文件的较小更改能够导致与未压缩文件有很大不同的压缩文件,因此在重复数据删除之前对文件进行解压缩可以更有效地对文件中的与其他文件相同的那些部分进行重复数据删除。通过对未压缩文件进行重复数据删除,可以实现更高的重复数据删除率。
在一个示例中,存储操作(或数据保护操作)可以通过对文件进行剪切或分块来开始重复数据删除操作。可以在与子文件末尾/开头的位置相对应的位置剪切文件。可能没有必要将所有子文件都分成多个块。而是,一些块可以包括多个子文件。例如,可以将包括的以特定格式的媒体文件分别剪切或分块,因为它们通常保持不变。图像也可以在被压缩时有效地进行重复数据删除,因为通常会应用相同的压缩方式。
在重复数据删除文件系统的操作期间,文件可以作为单个文件(例如docx文件)呈现给用户或客户端。然而,在内部,重复数据删除文件系统可以对解压缩的文件进行操作或执行重复数据删除,并且可以分别在每个子文件上工作。这样允许实现更高的重复数据删除率。此外,可以将各个子文件分别存储在重复数据删除存储器中。子文件可以以压缩形式或未压缩形式存储。因此,在访问或读取文件时,重复数据删除文件系统将通过收集子文件来以文件的原始格式重建文件。当从子文件重建文件时,子文件和/或文件根据需要是压缩/未压缩的。
另外,可以利用差分压缩。对于相似的文件(例如,具有相同的名称和/或相似的内容),重复数据删除文件系统可以对重复数据删除较低的文件使用差分压缩,但是文档的先前版本中存在具有相似属性的子文件。
本发明的实施方式提供了一种系统,其中即使在文件系统存储器中文件被存储为块,文件也作为整体文件被呈现给客户端。块可以以压缩形式或未压缩形式存储。除了重复数据删除之外,本发明的实施方式还可以采用差分压缩。在该示例中,文件可以以压缩状态存储以便利用差分压缩。
图1示出了包括多个子文件的文件(此示例中为文档)的示例。从用户的角度来看,文档可以对应于单个文件100。图1示出了处于展开(例如,解压)状态的文件100,以示出该文件包括诸如子文件102之类的子文件。通过将这些子文件独立地或以小组的形式处理,可以改善文件的重复数据删除和/或压缩。例如,在给定的文档中,文本可能会从一个版本更改为另一个版本。然而,文件100的各部分可能不会改变。子文件104(或其他子文件)可能不会改变。通过基于子文件的位置对文件100进行分块,可以更有效地对文件100进行重复数据删除。此外,可以以更高的压缩率来压缩相似的文件。重复数据删除和差分压缩均可节省存储空间。
这在图2中进一步示出,该图示出了文件的示例,该文件部分地基于相应子文件的开头/末尾的位置被分块成多个部分。图2示出了包括子文件202、204、206和210的文件200。子文件208可以包含图像208,子文件210可以包含文本212。子文件202和204可以包含与文件200有关的其他信息,例如标头、样式、属性等。
图2仅通过示例示出了文件200被分块为三个块。在位置214和位置216处剪切文件200。位置214在子文件204的末尾与子文件206的开头之间。位置216在子文件206的末尾与子文件210的开头之间。除了基于子文件的开头/末尾对文件进行剪切或分块外,还可以考虑块的尺寸。因此,特定的块可以包括多个子文件但不必须包括多个子文件。如果是这种情况,则可以选择可能没经过更改的子文件。另外,所选文件在文件200内可以不彼此直接相邻。
因此,第一块218包括子文件202和204。第二块220包括子文件206,而第三块包括子文件210。通过以这种方式对文件进行分块,图像208可以自身被分块。这确保了即使在压缩图像208的情况下,也可以对图像208进行重复数据删除。例如,如果分块得到包括图像208和一些文本的块,则对文本的任何改变将降低重复数据删除效率。文本212也可以是子文件210的一部分。在一个示例中,文本212可以相对于其他文件的文本改变很多或很少。然而,重复数据删除至少由于其他子文件可能不会更改并且可能已被重复数据删除而可以是有效的。
图3示出了重复数据删除文件系统的示例。图3所示的系统也可以表示备份系统或数据保护系统。图3示出了正在使用文件304的客户端302和正在使用文件308的客户端306。服务器314可以作为重复数据删除文件系统318的一部分而被包括在内。服务器314与重复数据删除引擎316相关联。重复数据删除文件系统318还可以与存储数据312的存储器310相关联。数据312表示由重复数据删除文件系统318存储的文件。可以至少部分地对数据312进行重复数据删除和/或压缩数据312。
当客户端302保存文件304时,重复数据删除引擎316可在将文件304存储在存储器310的数据312中时对文件304进行重复数据删除。当在客户端(和/或服务器314)上运行的应用呈现文件304时,文件304可以被呈现为单个文件。在一个示例中,至少从理解格式的客户端302和/或相应应用的角度来看,文件304是单个文件。当存储文件304时,重复数据删除引擎316可以确定文件304的格式。然后,重复数据删除引擎316可以解压(unzip)文件304并解压缩(decompress)文件304,使得可以识别子文件,并且使得重复数据删除引擎316可以使用未压缩的子文件工作。然后,如先前所讨论的,处于解压缩状态的文件304然后可以被分块。在一些示例中,文件304可以在处于压缩状态时被分块,因为文件的格式是已知的。例如,每个子文件可以独立地被压缩。这样允许文件在被压缩时被分块。
在对文件进行分块和解压缩之后,重复数据删除引擎316然后可以对每个块或每个子文件进行操作,以便关于数据312对文件304进行重复数据删除或对子文件进行重复数据删除。在一个示例中,重复数据删除引擎316可以作为单独的实体对每个子文件进行操作。
一旦已进行重复数据删除,就可以存储与被重复数据删除的子文件(或其他块)相关的元数据,并且可以将文件304的在数据312中未找到的块或子文件添加到数据312中(在重复数据删除之后,子文件也可以由存储系统压缩)。同时,服务器314(或重复数据删除引擎316)也可以存储如下元数据,该元数据允许文件在被读取并呈现给客户端302时或出于其他原因而重建或重构。当存储已被重复数据删除的文件304时,可以采用压缩。
在一个示例中,可以使用哈希值或其他标识符来执行子文件的重复数据删除。当数据以压缩形式存储时,可以使用这些标识符执行重复数据删除。在重复数据删除之后,子文件也可以由系统压缩。
图3还示出了,本发明的实施方式以将文件304作为整体呈现给客户端302(或用户)的方式执行重复数据删除,同时将文件以块保持在存储器310中。块可以在存储器310中是压缩的或未压缩的。从子文件的角度对文件304进行重复数据删除。重复数据删除文件系统318可以维持索引320。索引320可以用于标识与文件304或文件308相对应的子文件。因此,如果客户端302请求文件304,则索引304可用于定位文件的所有子文件。这允许文件304被重构并返回给客户端302。如果必要,子文件被设置成与请求文件304的应用相关联的格式。因此,子文件可以根据相关格式被压缩或以其他方式处理。
图4示出了用于执行存储系统操作或文件系统操作或数据保护操作的方法的示例。在图4中,可以在文件系统(或在备份服务器或文件系统服务器)处接收404文件。由文件系统接收的文件可以与应用相关联并且可以具有特定格式。文件系统可以确定文件格式以准备重复数据删除。
在一个示例中,重复数据删除的文件系统可以解压缩404文件。解压缩文件允许文件系统识别子文件。然而,如前所述,在压缩文件时可以识别子文件。因此,一旦解压缩了文件(如果需要),则解压缩的文件被分块406或分为多个块或多个部分或多个片段。在一个示例中,每个块包含一个或多个子文件。出于重复数据删除的目的,每个子文件可以被独立地对待以供重复数据删除,并且执行重复数据删除操作408。
重复数据删除可以涉及针对每个块确定该块是否已经存在于文件系统中。这可以通过生成每个块的哈希并将该块的哈希与已存储的块的哈希进行比较来实现。匹配表示该块已经存在,而不匹配表示该块应被添加到文件系统。
索引可以用于将文件的子文件映射到文件。因此,当客户端读取文件或以其他方式使用文件时,该索引允许检索和重构各个子文件。存储在存储系统中的每个块可以映射到多个文件。
在一个示例中,也可以使用差分压缩。在一个示例中,差分压缩可以用于重复数据删除率低但一个或多个文件的先前版本具有相似属性的文件。在一个示例中,差分压缩允许涉及使用两个文件之间的相似性进行压缩。
图5示出了差分压缩的示例。在一个示例中,数据以压缩形式被维持,但是被分成多个部分或块。然后引用参考文件502来执行文件506的压缩。当文件506被压缩时,引用508可以指向参考文件中的数据504。在该示例中,引用508对应于数据504。当还原或重构文件506时,从参考文件502中检索必要的数据504。当解压缩文件506时,参考文件502也被解压缩。
换句话说,差分压缩可用于利用两个文件之间的相似性来压缩文件。例如,具有相同名称或存储在相同位置等中的文件可能足够相似。例如,可能通过添加幻灯片来更改演示文稿文件。新文档与先前的版本具有极大的相似性。使用先前的版本作为参考文件,可以用指针或引用替换新版本的大部分。这导致高压缩率。
在另一个示例中,由于较小的更改,可能无法很好地对特定文件进行重复数据删除。然而,可以出于压缩目的对两个文件进行不同的评估,以便可以使用对参考文件的引用来代替数据。这样允许更有效地压缩文件。在一个示例中,这些文件可以仍被分块。然而,压缩能够比较块内数据的较小部分。即使文件由于小的更改而不会进行重复数据删除,这也允许更高的压缩率。
应当理解,本发明可以以多种方式实现,包括作为以下方式来实现:进程、装置、系统、设备、方法、或诸如计算机可读存储介质之类的计算机可读介质、或计算机网络,在计算机网络中计算机程序指令是通过光学或电子通信链路发送的。应用可以采取在通用计算机上执行的软件的形式,也可以采用硬件方式进行硬连线或硬编码。在本说明书中,这些实现方式或本发明可以采用的任何其他形式可以被称为技术。通常,可以在本发明的范围内改变所公开的过程的步骤的顺序。
本文公开的实施方式可以包括使用包括各种计算机硬件或软件模块的专用或通用计算机,如下面更详细地讨论的。计算机可以包括处理器和载有指令的计算机存储介质,该指令在由处理器执行和/或使得由处理器执行时执行本文公开的任何一种或多种方法。
如上所述,本发明范围内的实施方式还包括计算机存储介质,其是用于加载或在其上存储计算机可执行指令或数据结构的物理介质。这样的计算机存储介质可以是可由通用或专用计算机访问的任何可用物理介质。
作为示例而非限制,这种计算机存储介质可以包括:诸如固态磁盘(SSD),RAM、ROM、EEPROM、CD-ROM、闪存、相变存储器(“PCM”)之类的硬件,或其他光盘存储设备,磁盘存储设备或其他磁性存储设备,或可用于存储计算机可执行指令或数据结构形式的程序代码的任何其他硬件存储设备,这些代码可由通用计算机系统或专用计算机系统访问和执行以实现本发明公开的功能。以上各项的组合也应包括在计算机存储介质的范围内。这样的介质也是非暂时性存储介质的示例,并且非暂时性存储介质也包括基于云的存储系统和结构,然而本发明的范围不限于非暂时性存储介质的这些示例。
计算机可执行指令包括例如使得通用计算机、专用计算机或专用处理设备执行特定功能或一组功能的指令和数据。尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应该理解,所附权利要求书中定义的主题不必限于上述特定特征或动作。而是,本文中公开的特定特征和动作被公开为实现权利要求的示例形式。
如本文所使用的,术语“模块”或“组件”可以指在计算系统上执行的软件对象或例程。本文描述的不同组件、模块、引擎和服务可以被实现为在计算系统上执行的对象或进程,例如,被实现为单独的线程。尽管本文描述的系统和方法可以以软件实现,但是以硬件、或软件和硬件的组合实现也是可能的并且可以预期的。在本发明中,“计算实体”可以是如本文先前所述的任何计算系统,或者可以是在计算系统上运行的任何模块或模块的组合。
在至少一些实例中,提供硬件处理器,该硬件处理器可操作以执行用于执行方法或过程(例如,本文公开的方法和过程)的可执行指令。硬件处理器可以包括或可以不包括其他硬件的元件,例如本文公开的计算设备和系统。
就计算环境而言,本发明的实施方式可以在客户端-服务器环境中执行,无论是在网络环境还是本地环境中,或者在任何其他合适的环境中执行。用于本发明的至少一些实施方式的合适的操作环境包括客户端、服务器或目标虚拟机中的一者或多者可以驻留并在云环境中操作的云计算环境。
在不脱离本发明的精神或本质特性的情况下,本发明可以以其他特定形式来体现。所描述的实施方式在所有方面仅应被认为是说明性的而非限制性的。因此,本发明的范围由所附权利要求书而不是前面的描述指示。落入权利要求等同含义和范围内的所有改变均应包含在其范围之内。
- 应用感知的重复数据删除
- 基于应用感知的重复数据删除存储系统中的数据重构方法