CN118159936A - 顺序存储介质上的并行重复数据删除机制 - Google Patents
顺序存储介质上的并行重复数据删除机制 Download PDFInfo
- Publication number
- CN118159936A CN118159936A CN202280070857.3A CN202280070857A CN118159936A CN 118159936 A CN118159936 A CN 118159936A CN 202280070857 A CN202280070857 A CN 202280070857A CN 118159936 A CN118159936 A CN 118159936A
- Authority
- CN
- China
- Prior art keywords
- data
- segments
- storage
- media
- target data
- 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.)
- Pending
Links
- 230000007246 mechanism Effects 0.000 title claims abstract description 53
- 238000000034 method Methods 0.000 claims description 37
- 238000013507 mapping Methods 0.000 claims description 12
- 238000011084 recovery Methods 0.000 claims description 10
- 238000013500 data storage Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 238000005096 rolling process Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 101100217298 Mus musculus Aspm gene Proteins 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000004615 ingredient Substances 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0682—Tape device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0686—Libraries, e.g. tape libraries, jukebox
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种用于管理存储集的设备。将目标数据划分为数据段,并计算指纹。选择代表集。访问在代表的指纹和存储集之间映射的全局索引,以识别一个或多个存储集,所述一个或多个存储集包括多个介质,所述多个介质可能存储段的重复。访问介质集特定重复数据删除机制,以识别存储在所述识别的存储集的多个介质上的段的重复。所述目标数据的非重复段可选地并行存储在所述存储集的所述多个介质上。针对相应的识别的重复段,更新所述识别的存储集的所述介质的所述一个或多个介质集特定重复数据删除机制,以指示所述目标数据的新存储的非重复段。更新所述全局索引、全局文件映射和标识表,以通过从所述存储集中读取所述段来实现所述目标数据的读取。
Description
背景技术
在本发明的一些实施例中,本发明涉及存储系统,更具体地但非排他地,涉及在顺序存储介质上存储数据的基于重复数据删除的存储系统的管理。
基于重复数据删除(deduplication,dedup)的存储系统通过存储指向先前存储的数据块的引用,而非存储同一数据块的另一副本,来消除相同数据块的冗余存储。但是,即使进行了重复数据删除,存储需求也越来越大,磁盘容量已无法满足需求。由于磁带价格较低和/或数据留存时间长,辅助存储和归档的重点正从具有重复数据删除的磁盘转移到顺序存储介质(如磁带技术)。由于磁带中的寻道时间相对较长(几十秒),因此大多数应用程序在使用磁带时除了内置压缩之外没有进行任何优化。
发明内容
本发明的一个目的是提供一种计算设备、系统、计算机程序产品和方法,用于管理由多个顺序存取存储设备访问的顺序存储介质,以对目标数据进行重复数据删除存储。
上述和其它目的通过独立权利要求的特征实现。其它实现方式在从属权利要求、说明书和附图中是显而易见的。
根据第一方面,一种用于数据的重复数据删除存储的设备,包括:处理器,所述处理器用于:访问目标数据以存储在多个存储集上,每个存储集包括多个顺序存取存储设备的多个介质;访问每个存储集与其中存储的数据段之间的全局索引映射,以识别存储集,所述存储集包括多个介质,所述多个介质可能存储所述目标数据的至少一个段的重复;访问介质集特定重复数据删除机制,以识别存储在所述识别的存储集的所述多个介质上的所述目标数据的段的重复;将所述目标数据的非重复段存储在所述识别的存储集的所述多个介质上;更新所述存储集的所述多个介质的所述介质集特定重复数据删除机制,以指示所述目标数据的所述识别的重复段和所述存储的非重复段;更新所述全局索引,以指示在所述访问过程中使用的所述目标数据的所述段之间的映射;更新用于存储所述目标数据的所述多个段的标识符的全局文件映射;更新标识表,以存储每个标识符的元数据。
根据第二方面,一种用于数据的重复数据删除存储的方法,包括:访问目标数据以存储在多个存储集上,每个存储集包括多个顺序存取存储设备的多个介质;访问每个存储集与其中存储的数据段之间的全局索引映射,以识别存储集,所述存储集包括多个介质,所述多个介质可能存储所述目标数据的至少一个段的重复;访问介质集特定重复数据删除机制,以识别存储在所述识别的存储集的所述多个介质上的所述目标数据的段的重复;将所述目标数据的非重复段存储在所述识别的存储集的所述多个介质上;更新所述存储集的所述多个介质的所述介质集特定重复数据删除机制,以指示所述目标数据的所述识别的重复段和所述存储的非重复段;更新所述全局索引,以指示在所述访问过程中使用的所述目标数据的所述段之间的映射;更新用于存储所述目标数据的所述多个段的标识符的全局文件映射;更新标识表,以存储每个标识符的元数据。
根据第三方面,一种非瞬时性介质,存储用于数据的重复数据删除存储的程序指令,当所述程序指令由至少一个处理器执行时,使得所述至少一个处理器执行以下操作:访问目标数据以存储在多个存储集上,每个存储集包括多个顺序存取存储设备的多个介质;访问每个存储集与其中存储的数据段之间的全局索引映射,以识别存储集,所述存储集包括多个介质,所述多个介质可能存储所述目标数据的至少一个段的重复;访问介质集特定重复数据删除机制,以识别存储在所述识别的存储集的所述多个介质上的所述目标数据的段的重复;将所述目标数据的非重复段存储在所述识别的存储集的所述多个介质上;更新所述存储集的所述多个介质的所述介质集特定重复数据删除机制,以指示所述目标数据的所述识别的重复段和所述存储的非重复段;更新所述全局索引,以指示在所述访问过程中使用的所述目标数据的所述段之间的映射;更新用于存储所述目标数据的所述多个段的标识符的全局文件映射;更新标识表,以存储每个标识符的元数据。
本文描述的至少一些实施例可以解决在顺序存取存储设备的介质(例如,磁带机的盒式磁带)上存储时提高写入数据的吞吐量的技术问题。由于磁带具有顺序存取特性,因此访问数据的速度慢。本文描述的至少一些实施例通过将目标数据写入顺序存取存储设备的多个介质(例如,盒式磁带),而非将数据写入单个介质,来提高将数据写入顺序存取存储设备的介质的吞吐量。
在所述第一方面、所述第二方面和所述第三方面的另一种实现方式中,所述目标数据的所述非重复段并行存储在所述识别的存储集的所述多个介质上。
与将目标数据存储在单个介质上相比,将目标数据并行存储在存储集的多个介质上可以提高性能。通过使用多个介质的集合,可以将数据并行写入多个介质。这可以将写入性能提高多达集合中介质数量的倍数,例如,对于4个盒带的集合,性能比单个盒带提高多达4倍。
在所述第一方面、所述第二方面和所述第三方面的另一种实现方式中,所述处理器还用于:将所述目标数据划分为多个数据段,计算所述多个数据段的多个指纹,选择所述多个指纹的代表子集,其中,针对所述代表子集访问所述全局索引,以识别所述存储集,其中,根据所述数据段的所述指纹选择所述存储集的用于数据段的重复数据删除存储的介质。
指纹以确定性的和可重复的方式将数据段链接到存储数据段的介质。
在所述第一方面、所述第二方面和所述第三方面的另一种实现方式中,通过执行取模运算,求出所述指纹除以所述存储集中的介质数量时的余数,从而选择所述存储集的用于重复数据删除存储的所述介质,其中,所述余数指示所述选定介质。
取模运算确保段只能在存储集的单个介质上找到,并且始终在同一个介质上找到。当使用加密哈希(例如,SHA1)或生成类似随机值的其它函数来计算指纹时,取模运算将段基本均匀地分布在存储集的介质之中。
在所述第一方面、所述第二方面和所述第三方面的另一种实现方式中,所述标识表中存储的每个元数据包括存储所述数据段的所述存储集的指示、所述介质的偏移、所述数据段的大小以及所述多个数据段中的每个数据段的指纹,其中,所述指纹用于确定所述存储集的所述介质。
用于检索索引的同一指纹可以用于选择将数据段存储在哪个介质上。
在所述第一方面、所述第二方面和所述第三方面的另一种实现方式中,每个存储集的介质数量是预配置且固定的。
可以选择每个存储集的介质数量,以提高并行读/写性能。一旦选择了每个存储集的介质数量,并且存储集已写入,则不能轻易更改该数量。
在所述第一方面、所述第二方面和所述第三方面的另一种实现方式中,每个介质分配给单个存储集。
将每个介质仅分配给一个存储集可以通过消除不同集访问同一介质产生的复杂性,提高性能。
在所述第一方面、所述第二方面和所述第三方面的另一种实现方式中,所述存储通过将所述非重复段添加到所述存储集的所述多个介质来完成。
在所述第一方面、所述第二方面和所述第三方面的另一种实现方式中,所述处理器还用于:接收读取所述目标数据的请求;访问所述全局文件映射,以获取所述目标数据的所述多个数据段的标识符;访问标识表,以获取所述多个数据段中的每个数据段的元数据;根据所述元数据规划并行读取所述多个数据段的顺序;按照所述顺序并行读取所述目标数据的所述多个数据段;根据所述多个数据段创建所述目标数据。
在所述第一方面、所述第二方面和所述第三方面的另一种实现方式中,每个元数据包括存储所述数据段的所述存储集的指示、所述介质的偏移、所述数据段的大小以及所述数据段的指纹,其中,所述指纹用于确定所述存储集的所述介质。
根据第四方面,一种用于数据恢复的设备,包括:处理器,所述处理器用于:接收读取存储在多个存储集中的一个存储集上的目标数据的请求,每个存储集包括多个顺序存取存储设备的多个介质;从全局文件映射中获取所述目标数据的多个数据段的标识符;从标识表中获取所述多个数据段中的每个数据段的元数据;根据所述元数据规划并行读取所述多个数据段的顺序;按照所述顺序从所述存储集的所述多个介质中并行读取所述目标数据的所述多个数据段;根据所述多个数据段创建所述目标数据。
根据第五方面,一种用于数据恢复的方法,包括:接收读取存储在多个存储集中的一个存储集上的目标数据的请求,每个存储集包括多个顺序存取存储设备的多个介质;从全局文件映射中获取所述目标数据的多个数据段的标识符;从标识表中获取所述多个数据段中的每个数据段的元数据;根据所述元数据规划并行读取所述多个数据段的顺序;按照所述顺序并行读取所述目标数据的所述多个数据段;根据所述多个数据段创建所述目标数据。
根据第六方面,一种非瞬时性介质,存储用于数据恢复的程序指令,当所述程序指令由至少一个处理器执行时,使得所述至少一个处理器执行以下操作:接收读取存储在多个存储集中的一个存储集上的目标数据的请求,每个存储集包括多个顺序存取存储设备的多个介质;从全局文件映射中获取所述目标数据的多个数据段的标识符;从标识表中获取所述多个数据段中的每个数据段的元数据;根据所述元数据规划并行读取所述多个数据段的顺序;按照所述顺序并行读取所述目标数据的所述多个数据段;根据所述多个数据段创建所述目标数据。
本文描述的至少一些实施例可以解决以下技术问题,即提高读取存储在顺序存取存储设备的介质(例如,磁带机的盒式磁带)上的数据的吞吐量。由于磁带具有顺序存取特性,因此访问数据的速度慢。本文描述的至少一些实施例通过从顺序存取存储设备的多个介质(例如,盒式磁带)读取目标数据,而非从单个介质读取数据,来提高从顺序存取存储设备的介质读取数据的吞吐量。
在所述第四方面、所述第五方面和所述第六方面的另一种实现方式中,每个元数据包括所述数据段的指纹,所述处理器还用于根据所述指纹确定所述存储集的所述介质。
与从单个介质读取目标数据相比,从存储集的多个介质并行读取目标数据可以提高性能。通过使用多个介质的集合,可以从多个介质并行读取数据。这可以将读取性能提高多达集合中介质数量的倍数,例如,对于4个盒带的集合,性能比单个盒带提高多达4倍。
在所述第四方面、所述第五方面和所述第六方面的另一种实现方式中,所述处理器还用于通过执行取模运算,求出所述指纹除以所述存储集中的介质数量时的余数,从而确定所述介质,其中,所述余数指示所述介质。
在所述第四方面、所述第五方面和所述第六方面的另一种实现方式中,所述处理器还用于:针对所述多个介质中的每个介质,根据所述数据段的位置和偏移来排列数据段以便进行顺序读取。
除非另有定义,否则本文所用的所有技术和/或科学术语都具有与本发明普通技术人员公知的含义相同的含义。虽然与本文描述的方法和材料类似或等效的方法和材料可以用于本发明实施例的实践或测试,但下文描述了示例性方法和/或材料。如有冲突,以本专利说明书(包括定义)为准。此外,这些材料、方法和示例仅是说明性的,并不一定具有限制性。
附图说明
本文仅通过示例,结合附图描述了本发明的一些实施例。现在具体结合附图,需要强调的是所示的细节只是举例说明和为了本发明实施例的说明性讨论的目的。就此而言,根据附图说明,如何实践本发明实施例对本领域技术人员而言是显而易见的。
在附图中:
图1是一些实施例提供的一种系统的组件的框图,该系统用于对由顺序存取存储设备访问的顺序存储介质的存储集上的目标数据进行重复数据删除存储;
图2是一些实施例提供的另一种示例性系统的框图,该系统用于对顺序存储介质(例如,磁带)的存储集上的目标数据进行重复数据删除存储;
图3是一些实施例提供的一种方法的流程图,该方法用于对由顺序存取存储设备访问的顺序存储介质的存储集上的目标数据进行重复数据删除存储;
图4是一些实施例提供的一种方法的流程图,该方法用于从由顺序存取存储设备访问的顺序存储介质的存储集读取目标数据;
图5是本发明一些实施例提供的由一个或多个顺序存取存储设备读取的多个介质的存储集上的目标数据(例如,文件)的数据段的存储示意图。
具体实施方式
在本发明的一些实施例中,本发明涉及存储系统,更具体地但非排他地,涉及在顺序存储介质上存储数据的基于重复数据删除的存储系统的管理。
一些实施例的一方面涉及系统、方法、计算设备和/或装置和/或计算机程序产品(存储可由一个或多个处理器执行的代码指令),用于管理多个顺序存取存储设备的多个顺序存储介质(在本文中也称为“介质”)的存储集,以对存储集上的目标数据进行重复数据删除存储。顺序存取存储设备不是可随机存取的,可以是具有数百个磁带机和数千个盒式磁带的磁带库等。目标数据被划分为多个数据段(在本文中也称为“段”)。例如,通过将数据段输入到哈希函数中,为数据段计算指纹。从指纹中选择代表集。访问在代表的指纹和存储集之间映射的全局索引,以识别一个或多个存储集,该一个或多个存储集包括多个介质,该多个介质可能存储目标数据的一个或多个段的重复。全局索引可以指示多个介质的存储集存储一个或多个重复段的可能性,而非确定性。访问介质集特定重复数据删除机制,以识别存储在识别的存储集的多个介质上的目标数据的段的重复。在读取和/或写入时执行实际IO之前,介质集被视为单个实体。每个相应介质集特定重复数据删除机制可以指示特定段是否存储在相应存储集上的确定性。目标数据的非重复段可选地并行存储在存储集的多个介质上。针对相应的识别的重复段,更新识别的存储集的介质的一个或多个介质集特定重复数据删除机制,以指示目标数据的新存储的非重复段。利用在访问过程中使用的目标数据的段之间的映射更新全局索引。通过包括目标数据的段的标识符来更新全局文件映射。通过包括每个新的段标识符的元数据来更新标识表。
一些实施例的一方面涉及用于恢复存储在包括多个介质的存储集上的数据的系统、方法、计算设备和/或装置和/或计算机程序产品(存储可由一个或多个处理器执行的代码指令)。接收读取目标数据的请求。从全局文件映射中获取目标数据的数据段的标识符。从标识表中获取每个数据段的元数据。根据元数据规划并行读取数据段的顺序。按照顺序并行读取目标数据的数据段。根据数据段创建目标数据。
本文描述的至少一些实施例可以解决在顺序存取存储设备的介质(例如,磁带机的盒式磁带)上存储时提高写入数据的吞吐量的技术问题。由于磁带具有顺序存取特性,因此访问数据的速度慢。本文描述的至少一些实施例通过将目标数据并行(例如,完全并行、部分并行)写入顺序存取存储设备的多个介质(例如,盒式磁带),而非将数据写入单个介质,来提高将数据写入顺序存取存储设备的介质的吞吐量。
本文描述的至少一些实施例可以解决以下技术问题,即提高读取存储在顺序存取存储设备的介质(例如,磁带机的盒式磁带)上的数据的吞吐量。由于磁带具有顺序存取特性,因此访问数据的速度慢。本文描述的至少一些实施例通过从顺序存取存储设备的多个介质(例如,盒式磁带)读取目标数据,而非从单个介质读取数据,来提高从顺序存取存储设备的介质读取数据的吞吐量。
本文描述的至少一些实现方式可以提高在多个数据存储设备(可选地,磁带)上存储大量数据的重复数据删除率。例如,在基于磁带的数据存储系统上,存储的数据量是基于磁盘的存储系统的大约100倍。例如,与不在磁带上实现重复数据删除的其它方法和/或重复数据删除率低的其它方法相比,本文描述的全局索引能够在布置在存储集中的多个磁带上实现重复数据删除,其中,每个存储集包括两个或两个以上磁带。
本文描述的至少一些实施例可以解决尤其在非可随机存取的存储介质和/或磁带等可顺序存取的介质上存储大量数据的技术问题,和/或改进这一技术领域。出于磁带存储大小的原因,管理存储在磁带上的数据在技术上具有挑战性。例如,虽然最大的辅助存储磁盘系统达到了拍字节(petabyte,PB)级,但大型磁带库包括数千个盒带,达到数百PB级。随着新的线性磁带开放(linear tape-open,LTO)协议的推出,该大小大约每2到3年就会翻倍,这使得每个盒带的大小翻倍(例如,当前版本是LTO-9 18TB盒带)。虽然存在不同的重复数据删除系统,但这些方案是为基于磁盘的存储系统(即可随机存取的数据存储设备,例如硬盘和/或固态硬盘(solid state drive,SSD))设计的。为基于磁盘的存储设计的重复数据删除无法轻松地迁移到磁带存储,因为存储的数据的大小较大(例如,相对于磁盘存储至少约为100倍)和/或磁带与磁盘存储的操作方式不同。
目前具有管理存储在磁带上的数据的现有方法。在最常用的方法中,不使用重复数据删除。当数据写入磁带时,数据以原始(即未重复数据删除的)形式写入。即使数据从重复数据删除形式移动(例如,在磁盘上),数据也会首先膨胀为原始未重复数据删除的形式,并以未重复数据删除的格式存储。在另一个方法示例中,将数据发送到磁带的方式是一起发送的数据仅与该组的其它部分一起进行重复数据删除。在这种操作中,对数据进行处理,以查找组内的匹配项,这些匹配项被保存为一个单元。例如,有一种这样的方法着重于如何以缩短恢复时间的方式保存该组数据。在另一个示例中,创建完全备份和一系列增量数据,并将完全备份和一系列增量数据一起保存为一个单元(称为SILO)。这种方法的限制是需要一个封闭组。这种封闭组需要大量的计算预处理,并且重复数据删除率显著降低。例如,由于增量数据与完全备份的公用块少(即,如果完全备份未更改,则不会包括在增量数据中),采用每月进行完全备份的SILO方法(假设每日更改2%,其中部分为之前的更改)将达到接近1:1的重复数据删除率。主要受益来自于对完全备份彼此之间进行的重复数据删除。由于(在常规情况下)完全备份也要大得多,因此进行一年的每月完全备份和每日增量数据将获得大约1:12的比率。
在详细解释本发明的至少一个实施例之前,应理解,本发明在应用时并不一定限于以下描述和/或附图和/或示例中阐述的组件和/或方法的构造和设置的细节。本发明能够有其它实施例,或者能够以各种方式实践或执行。
本发明可以是一种系统、方法和/或计算机程序产品。计算机程序产品可以包括具有计算机可读程序指令的一个或多个计算机可读存储介质,计算机可读程序指令使得处理器执行本发明的各方面。
计算机可读存储介质可以是能够保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以包括但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或上述设备的任何合适组合,等等。
本文中描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者通过互联网、局域网、广域网和/或无线网络等网络下载到外部计算机或外部存储设备。
计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包部分在用户的计算机上执行且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种场景中,远程计算机可以通过任何类型的网络连接到用户的计算机,这些网络包括局域网(local area network,LAN)或广域网(wide areanetwork,WAN),还可以(例如,通过使用互联网服务提供商的互联网)连接到外部计算机。在一些实施例中,包括可编程逻辑电路、现场可编程门阵列(field-programmable gatearray,FPGA)或可编程逻辑阵列(programmable logic array,PLA)等的电子电路可以通过利用计算机可读程序指令的状态信息使电子电路个性化,执行计算机可读程序指令,以执行本发明的各个方面。
本文结合本发明实施例提供的方法、装置(系统)和计算机程序产品的流程图说明和/或框图来描述本发明的各个方面。应当理解,流程图说明和/或框图的每个方框以及流程图说明和/或框图中的方框的组合可以由计算机可读程序指令实现。
图中的流程图和框图示出了本发明各个实施例提供的系统、方法和计算机程序产品的可能实现方式的架构、功能以及操作。就此而言,流程图或框图中的每个方框可以表示模块、区段或部分指令,该部分指令包括用于实现一个或多个指定逻辑功能的一个或多个可执行指令。在一些替代实现方式中,方框中说明的功能可以不按照图中说明的顺序实现。例如,事实上,连续示出的两个方框可以几乎同时执行,或者有时候可以按照相反的顺序执行,这取决于所涉及的功能。还需要说明的是,框图和/或流程图中的每个方框以及框图和/或流程图中的方框组合可以由基于专用硬件的系统实现,这些系统执行特定的功能或动作,或者执行专用硬件和计算机指令的组合。
现在参考图1。图1是一些实施例提供的一种系统100的组件的框图,该系统100用于对由顺序存取存储设备150访问的顺序存储介质160的存储集上的目标数据112A进行重复数据删除存储。再参考图2。图2是一些实施例提供的另一种示例性系统200的框图,该系统200用于对顺序存储介质(例如,磁带)252的存储集上的目标数据进行重复数据删除存储。再参考图3。图3是一些实施例提供的一种方法的流程图,该方法用于对由顺序存取存储设备访问的顺序存储介质的存储集上的目标数据进行重复数据删除存储。再参考图4。图4是一些实施例提供的一种方法的流程图,该方法用于从由顺序存取存储设备访问的顺序存储介质的存储集读取目标数据。再参考图5。图5是本发明一些实施例提供的由一个或多个顺序存取存储设备读取的多个介质的存储集上的目标数据(例如,文件)的数据段的存储示意图。
系统100和/或200可以通过计算设备104的一个或多个处理器102执行存储在存储器106中的代码指令(例如,代码106A)等方式实现结合图3至图5描述的方法的动作。
计算设备104获取目标数据112A,以在一个或多个顺序存取存储设备150的存储集上进行重复数据删除存储,可选地在由顺序存取存储设备150访问的介质160上进行重复数据删除存储。
顺序存取存储设备150和/或介质160在本文中可以称为顺序存取存储器和/或非随机存取存储器,例如磁带层。
介质160在本文中可以称为顺序存取存储介质和/或非随机存取存储介质。顺序存取存储设备按顺序读取和/或写入数据,即,不提供(例如,如同在随机存取存储器中一样)以任意顺序读取和/或写入数据的随机存取。介质160可以包括磁存储介质的盒带,例如磁带、顺序存取存储器(sequential access memory,SAM)和/或光存储介质。顺序存取存储设备可以包括用于光存储介质的磁带机和/或光盘驱动器。
例如,可以从一个或多个客户端终端112和/或一个或多个服务器110获取目标数据112A。计算设备104处理目标数据112A,例如,执行分段的计算、指纹计算(例如,哈希)和/或维护访问的不同数据结构,如本文所述。访问全局索引116A,以识别多个介质160的哪个存储集可能存储目标数据112A的重复段,如本文所述。对于每个识别的存储集,访问相应目标特定重复数据删除机制150A,以确认目标数据112A的重复数据段。非重复段可选地并行存储在存储集160的多个介质上。更新全局索引116A、全局文件映射116B、一个或多个相关介质集特定重复数据删除机制150A和相关联的标识表150B(例如,元数据),以指示存在重复段和/或新存储的非重复段,以便可选地并行读取目标数据的段。
计算设备104可以实现为以下中的一个或多个:计算云、云网络、计算机网络、一个或多个虚拟机(例如,虚拟机监视器、虚拟服务器)、网络节点(例如,交换机、虚拟网络、路由器、虚拟路由器)、单个计算设备(例如,客户端终端)、并行布置的一组计算设备、网络服务器、万维网服务器、存储服务器、本地服务器、远程服务器、客户端终端、移动设备和固定设备等。
可以实现系统100的不同架构。例如,计算设备104可以充当服务器,为从不同客户端终端112和/或服务器110获取的目标数据112A提供集中存储。在另一个示例中,计算设备104可以充当介质160的本地管理器,用于目标数据112A的本地存储。
计算设备104包括一个或多个处理器102,一个或多个处理器102实现为一个或多个中央处理器(central processing unit,CPU)、一个或多个图形处理单元(graphicsprocessing unit,GPU)、一个或多个现场可编程门阵列(FPGA)、一个或多个数字信号处理器(digital signal processor,DSP)、一个或多个专用集成电路(application specificintegrated circuit,ASIC)、一个或多个定制电路、用于与其它单元交互的处理器和/或专用硬件加速器等。一个或多个处理器102可以实现为单个处理器、多核处理器和/或布置用于并行处理的处理器集群(可以包括同构和/或异构处理器架构)。需说明的是,一个或多个处理器102可以设计为在硬件中实现存储为代码指令106A的一个或多个特征。
存储器106存储可由一个或多个处理器202执行的代码指令,例如,随机存取存储器(random access memory,RAM)、动态随机存取存储器(dynamic random access memory,DRAM)和/或存储级存储器(storage class memory,SCM)、非易失性存储器、磁介质、半导体存储设备、硬盘驱动器、可移动存储和光学介质(例如,DVD、CD-ROM)。例如,存储器106存储一个或多个代码106A,代码106A由一个或多个处理器102执行时实现一个或多个特征和/或结合图3至图5描述的方法的动作。可以选择足够大的存储器来存储全局索引116A。
计算设备104可以包括用于存储数据(例如,累积用于存储在介质160上的目标数据112A的队列、全局索引116A、全局文件映射116B和/或一个或多个介质集特定重复数据删除机制150A)的数据存储设备116,一个或多个介质集特定重复数据删除机制150A可以分别与标识表150B相关联,如本文所述。数据存储设备116可以实现为固态硬盘(SSD)、本地硬盘驱动器、虚拟存储、固态设备、存储设备等快速存储层和/或远程服务器和/或(例如,通过网络连接访问的)计算云等。
计算设备104与一个或多个顺序存取存储设备150通信,一个或多个顺序存取存储设备150访问(即,读取和/或写入)布置在存储集中的多个介质160。顺序存取存储设备150可以实现为磁带机等。例如,顺序存取介质160可以实现为磁带库、盒式磁带(例如,驱动器盒带和/或插槽盒带),例如,存储18太字节(terabyte,TB)的LTO-9盒带。顺序存取存储设备150可以包括内置压缩,例如,LTO-9规范中规定的平均值1:2.5。
计算设备104可以包括用于连接到网络114的网络接口118,例如,网络接口卡、连接到无线网络的无线接口、用于连接到用于网络连接的电缆的物理接口、以软件实现的虚拟接口、提供更高层的网络连接的网络通信软件和/或其它实现方式中的一个或多个。
网络114可以实现为互联网、局域网、虚拟专用网、无线网络、蜂窝网络、本地总线、点对点链路(例如,有线)和/或上述的组合等。
例如,计算设备104可以经由网络接口118通过网络114和/或经由虚拟和/或物理接口等另一接口通过无线和/或物理电缆链路与顺序存取存储设备150通信(例如,以便从布置在存储集中的介质160读取数据和/或将数据存储在布置在存储集中的介质160上)。
计算设备104可以包括一个或多个物理用户接口108和/或与一个或多个物理用户接口108通信,一个或多个物理用户接口108包括用于用户输入数据和/或查看数据的机制。示例性用户接口108包括触摸屏、显示器、键盘、鼠标、使用扬声器和麦克风的语音激活软件中的一个或多个等。
现在返回参考图1,结合系统200描述的组件可以对应于、结合、包括和/或可以表示结合图1描述的系统100的组件的示例性实现方式。系统200可以包括快速存储层202,快速存储层202包括一个或多个快速数据存储设备204,例如,一个或多个SSD。例如,快速存储层202可以存储正在处理以便存储在磁带存储层250上的目标数据。需要说明的是,磁带表示顺序存取存储设备和/或顺序存储介质的示例性实现方式,而磁带机和/或盒带不一定限制为顺序存取存储设备和/或顺序存储介质的其它实现方式。系统200包括磁带存储层250,磁带存储层250包括全局索引216A(例如,全局稀疏索引),如本文所述。全局稀疏索引216A可以存储在快速数据存储设备(例如,一个或多个SSD(206))上。磁带存储层250包括多个盒式磁带252,其中,每个盒式磁带252由磁带机(未示出)读取和/或写入。盒式磁带252布置在存储集260中,其中,每个存储集包括两个或两个以上的磁带。包括多个盒式磁带252(作为示例示出两个,应理解的是,可以有更多个盒式磁带)的每个存储集260与介质集特定重复数据删除机制相关联,如本文所述。磁带的每个存储集260与稀疏索引254和全索引256相关联,如本文所述。需要说明的是,可以使用本文描述的其它重复数据删除机制,稀疏索引和全索引表示一个示例,但不一定是限制性示例。例如,每组稀疏索引254和全索引256可以存储在快速数据存储设备206上。
现在返回参考图3。在300处,可以配置存储集,和/或访问存储集的预定义配置。
存储集的配置可以包括定义每个存储集的介质数量。例如,每个存储集的介质数量可以是2、3、4、5或以上。可以选择每个存储集的介质数量,以提高并行读/写性能。每个存储集中的介质数量可以通过最大值等进行限制,以免在数据恢复的情况下涉及太多介质,那样可能会使效率低下。发明者发现,数量相对较小(例如,在2到4的范围内)可使盒式磁带存储系统的性能最佳。
一旦定义了每个存储集的介质数量,并且存储集已写入,则不能轻易更改该数量。
该数量可以定义为全局值,适用于所有存储集。可替代地,可以为每个存储集定义该数量,或者为一组存储集定义该数量。
每个介质可以分配给单个存储集。即,同一介质不一定分配给两个不同的存储集。将每个介质仅分配给一个存储集可以通过消除不同集访问同一介质产生的复杂性,提高性能。
使用多个介质可以通过减少多个介质在全局稀疏索引中存储同一数据段的情况,提高存储器利用率和/或减少内存消耗。
在302处,获取用于存储在顺序存取存储设备的介质上的目标数据。目标数据可以是用于归档的数据等。
在303处,可以通过划分为段、计算这些段的指纹并选择这些段的代表,处理目标数据。
目标数据可以划分为更小的部分,在本文中称为分段,即,将目标数据划分为数据段(目标段)。
例如,目标数据可以分成恒定大小的数据段和/或可变大小的数据段。恒定大小分段是将数据划分为大小完全相同(例如,16KB、32KB或其它大小)的段的过程。需要说明的是,恒定分段在基于重复数据删除的系统中并未广泛使用,因为少量的插入或删除几个字节会改变从更改点开始的所有段,并且不会进行重复数据删除。可变大小分段是根据数据窗口将数据划分成段的过程。例如,对64字节至256字节的滚动窗口使用滚动哈希函数。当滚动哈希的哈希值满足一定条件时,该段被切断,并开始一个新的段。在选择条件时,可以使段的最小/平均/最大大小达到预期值。
可以提取目标数据的表示。可选地,识别数据段的样本,并为采样的数据段计算该表示。
本文中使用的术语“指纹”(或数据指纹)是指从目标数据和/或从存储在本文所述的顺序存取介质上的数据中提取的表示。例如,可以通过将从目标数据采样的数据段输入到强哈希函数(例如,输出20字节加密哈希的SHA1,或输出更长哈希值的较新版本的安全哈希算法(secure hash algorithm,SHA))中来提取指纹。指纹用于将目标数据与介质集特定重复数据删除机制的全局索引和/或一个或多个索引的指纹进行快速比较,即,并非逐字节比较实际目标数据。需要说明的是,可以选择误报比较的几率。例如,当使用强哈希时,误报几率非常低(对于段为约16千字节(KB)的1PB存储,获取236个段,其中,SHA1签名为20字节=2160,因此误报几率为1:2124)。
需要说明的是,可以通过介质的介质集特定重复数据删除机制所使用的相同分段和/或哈希对目标数据进行分段和/或哈希。例如,当磁盘重复数据删除和介质重复数据删除使用相同的值时,可以跳过分段和/或哈希,但在通常情况下,磁盘重复数据删除的段可能更小。
传入的目标数据可以写入快速层(带或不带重复数据删除),例如,快速数据存储设备。目标数据可以累积在快速数据存储设备上,例如,累积在缓冲区中。例如,可以根据为快速数据存储设备定义的阈值和/或数据留存策略将目标数据移动到介质中。可以将累积的一定量的目标数据移动到介质中。例如,目标数据每次可以以数百GB的分块进行移动。例如,存储目标数据的数据存储设备的大小为10TB,阈值规则为每当数据超过8TB的标记值,就会有2TB的目标数据移动到介质中。可替代地,可以直接将目标数据写入介质。快速层(或例如,磁带层内的HDD)可以用作暂存区,直到写入足够的目标数据。
在304处,访问全局索引。
全局索引在代表的指纹和具有介质的存储集之间进行映射,该介质上存储与代表的指纹相对应的数据段。全局索引用于高效地检索匹配指纹,该匹配指纹指示具有最大可能匹配指纹数量的存储集,以便进一步评估,以确定实际匹配项。在全局索引中检索(例如,查找)目标数据的一个或多个目标段(例如,目标数据的指纹),以确定相应目标段的重复是否可能存储在一个或多个存储集上,即与一个或多个目标指纹的候选匹配项。可检索的目标数据的指纹包括:所有指纹、使用与选择全局索引条目和/或介质集特定重复数据删除机制的稀疏索引条目相同的方法选择的指纹子集、或其组合(例如,在发现匹配项数量不足的情况下)。
全局索引可以快速查找目标数据集段,以快速识别需要更仔细检查从而验证是否存储重复段的存储集。例如,没有全局索引的操作需要访问所有存储集的所有介质的所有重复数据删除机制的所有索引,这具有计算密集性,并且/或效率低下,尤其在查找大量数据段的重复和/或在存储大量数据的大量介质上查找时。
获取指示一个或多个存储集(每个存储集包括两个或两个以上的介质)可能存储匹配数据段的检索结果,该匹配数据段是目标数据段的重复。例如,获取存储集列表,其中,每个存储集都有一个等级,该等级指示在存储器中找到匹配段的可能性。可以选择最佳匹配存储集,例如,选择具有最大匹配项数量(指示作为目标段的重复的数据段的最大数量)的预定义数量的存储集,例如,存储集最佳匹配数量为1、2、3、4或5(或其它数量)。介质集特定重复数据删除机制的进一步检索可以限于最佳匹配介质,以免检索时间过长和/或以提高处理器执行检索的效率。
例如,如本文所述,全局索引可以存储在与访问全局索引的处理器通信的高性能存储设备(例如,RAM、SSD等快速存储器)上。全局索引可以存储在快速存储器上,以通过启用快速查找来快速识别与进一步分析相关的存储集和/或验证是否存储相应目标段的重复,提高存储器利用率和/或系统性能。
可选地,全局索引实现为稀疏索引。稀疏索引包括从每个存储集选择的稀疏获取的数据段(例如,数据段的指纹),即存储在存储集上的数据段的指纹子集。例如,每4兆字节(megabyte,MB)数据或其它值选择2个指纹条目。全局索引的稀疏设计可以存储在所有存储集上存储的所有数据段中的数据段的样本,以快速识别可能存储重复数据的存储集,这些存储集可能非常大。
全局索引(可选地,稀疏索引)可以实现为键值数据库(key-value database,KVDB)和/或其它可检索数据结构,该可检索数据结构包括存储相关数据条目的所有存储集的条目。例如,检索键可以是指纹(或指纹的部分),或者根据指纹创建的弱哈希。对于每个键,可以有多个值指示一个或多个存储集,这些存储集可能存储该键表示的数据段的重复,即相同的数据段可以存储在一个或多个存储集上。
稀疏索引可以将目标数据段的指纹的弱哈希映射到一个或多个存储集,其中存在一定概率的误报结果,需要对误报结果进行验证,以确定目标数据段是否真正存储在映射的存储集上。弱哈希可以实现为强哈希的一部分(例如,20字节全哈希中的10字节至17字节)。弱哈希可以用于检测存储在存储集上的数据中包括相似数据的概率高的区域。需要说明的是,弱哈希不一定用于确定重复数据的实际识别,因为误报几率不一定低到足以确认存在重复数据。
确认存储集上存储目标段是由映射存储集的介质集特定重复数据删除机制执行的,如本文所述。弱哈希设计的大小相对较小,可以快速确定最有可能存储目标数据的重复数据的存储集。使用相对较小的弱哈希可以提高存储全局索引的存储器的利用率。
全局索引中表示的数据段从每个存储集的多个介质的多个介质集特定重复数据删除机制中表示的数据段中采样。对多个介质集特定重复数据删除机制中表示的数据段进行采样以包括在全局索引中能够高效地覆盖存储在存储集的多个介质中的大量数据,同时提高存储全局索引的存储器的利用率。
全局索引独立于每个存储集的重复数据删除机制的实现方式,提供了与不同存储集的重复数据删除机制的不同实现方式的兼容性。
全局索引的段大小和/或分辨率的值可以是可配置的。
现在提供全局索引作为稀疏索引的示例性计算。全局索引包括存储集的多个介质的介质集特定重复数据删除机制的索引条目子集。每10GB有M个条目,例如,10GB/M为>>1GB/N。全局索引的每个条目可以包括以下字段:[弱哈希(8字节至16字节),介质ID(4字节)]。
在306处,针对由全局索引识别为可能存储目标数据段的一个或多个重复数据的存储集的每个相应介质,访问介质集特定重复数据删除机制。
每个相应介质集特定重复数据删除机制可以存储在与存储集的特定介质通信的高性能存储设备上,以通过启用快速查找来快速确认实际存储目标数据段的重复的介质,提高存储器利用率和/或系统性能。例如,每个介质集特定重复数据删除机制可以存储在其自身的独立高性能数据存储设备上,这可以实现对多个介质集特定重复数据删除机制的并行访问。在另一个示例中,多个介质集特定重复数据删除机制可以存储在通用的高性能数据存储设备上。
现在描述用于检索介质集特定重复数据删除机制的示例性方法。在介质集特定重复数据删除机制的稀疏索引中检索目标数据的表示(例如,指纹)。例如,检索所有指纹,检索由全局索引指示的可能由介质存储的指纹子集,检索使用与选择用于包括在稀疏索引中的指纹相同的方法选择的指纹子集,或者例如在发现匹配项数量不足的情况下检索其组合。检索结果指示介质的哪些区域可能存储的数据段是目标数据段的重复。读取与稀疏索引的匹配项相对应的全索引的条目,并将该条目与目标数据段(例如,目标数据段的指纹)进行比较,以确定是否存在匹配项。匹配项指示存储在介质上的目标数据段的重复。
现在描述可以检索的介质集特定重复数据删除机制的示例性实现方式。需要说明的是,对于不同的介质,不同的介质集特定重复数据删除机制可以有不同的实现方式。介质集特定重复数据删除机制可以包括全索引,全索引包括存储在介质上的所有数据段的所有表示(例如,指纹)。对于存储在介质上的所有数据段,全索引可以将存储在介质上的数据的数据段(例如,指纹)的强哈希映射到介质上的偏移存储位置。全索引可以存储在快速数据存储设备上。现在提供全索引大小的示例性计算。每个完整介质的条目数量=45TB/段大小(45KB)=~1G条目。每个条目包括以下字段:[ID(8字节),介质中的偏移(8字节),大小(4字节),哈希(20字节SHA1)]。在没有优化的情况下,每个条目是40字节。完整介质(例如,盒带)的总大小为40GB。
由于全索引通常太大,无法高效和/或快速检索,因此在访问全索引之前,可以访问以下(与全索引相关联的)数据结构中的一个或多个:
*稀疏索引,包括指向全索引中可能包括目标数据的一个或多个指纹的位置的表示样本。然后,访问全索引,以比较全指纹,确认存在目标数据段的重复。现在提供稀疏索引大小的示例性计算。介质的稀疏索引按照每GB数据有N个哈希(例如,强哈希的部分指纹)的比率。例如,可以根据局部最小值或最大值来选择哈希(此比率可以通过精度和大小之间的权衡来调整)。稀疏索引中的条目数量为45TB×N/1GB=45K×N,每个条目包括以下字段:[弱哈希(8字节至16字节),磁带中的块ID(4字节)]。每个完整介质的稀疏索引的总大小为<1MB×N。
稀疏索引中表示的数据段的数量可以是全索引中表示的数据段的数量的定义百分比,例如,对于全索引的每100个数据段,稀疏索引中大约有1个数据段,或者采用其它值。全局索引中表示的数据段的数量可以是介质的稀疏索引中表示的数据段的数量的定义百分比,例如,对于介质的稀疏索引的每100个至1000个数据段,全局索引中大约有1个数据段。
例如,介质稀疏索引可以作为快速磁盘中的阵列和/或作为全局稀疏索引DB中的分离表驻留(例如,使用快速数据存储设备)。
*弱哈希表,包括从数据段的弱哈希(例如,全指纹的一部分)到全索引中数据段的段ID的映射。当在弱哈希表中找到弱哈希时,可以将找到的ID周围的一系列ID加载到高速缓存中,并在高速缓存中检索指纹。如果没有找到弱哈希,则该过程可以返回到弱哈希表中,直到在弱哈希表中检索完所有未找到的指纹。
*布隆过滤器,指示指纹是否可能存储在全索引中。布隆过滤器可能会给出误报答案。
在308处,为每个数据段的重复数据删除存储选择存储集的相应介质。
根据数据段的指纹,选择存储集的用于数据段的重复数据删除存储的介质。用于检索索引的同一指纹可以用于选择将数据段存储在哪个介质上。指纹以确定性的和可重复的方式将数据段链接到存储数据段的介质。
可选地,通过执行取模运算,求出余数,从而选择存储集的介质。当指纹除以存储集中的介质数量时,余数指示选定介质。取模运算确保段只能在存储集的单个介质上找到,并且始终在同一个介质上找到。当使用加密哈希(例如,SHA1)或生成类似随机值的其它函数来计算指纹时,取模运算将段基本均匀地分布在存储集的介质之中。
可以选择识别的存储集的组合,以在定义的约束条件下获取目标数据的最高目标重复数据删除率。例如,用于选择识别的存储集的组合的约束条件可以是将目标数据划分为预定义单元(例如,文件),和/或将同一单元的划分部分写入同一存储集以便从单个存储集恢复预定义单元。确保同一数据单元(例如,文件)的划分部分存储在同一存储集上可以便于从单个存储集高效地恢复该单元。例如,确保从单个存储集重建同一文件更为高效,并且可以更快地访问重建的文件,相比之下,对跨越多个不同存储集的文件进行恢复的效率较低。
在310处,非重复目标段存储在存储集的选定介质上。
目标数据的非重复段可以并行存储在识别的存储集的多个介质上。
与将目标数据存储在单个介质上相比,将目标数据并行存储在存储集的多个介质上可以提高性能。通过使用多个介质的集合,可以将数据并行写入多个介质。这可以将写入性能提高多达集合中介质数量的倍数,例如,对于4个盒带的集合,性能比单个盒带提高多达4倍。
存储可以通过将非重复段添加到存储集的每个介质中来完成。
非重复目标段是通过检索介质集特定重复数据删除机制在选定存储集上没有找到重复数据(即没有匹配数据段)的目标数据部分。
在312处,更新一个或多个选定存储集的一个或多个介质集特定重复数据删除机制,以指示选定存储集上存储的识别的目标重复段,并指示目标数据的新存储的非重复段。
对与一个或多个选定存储集相关联的每个介质集特定重复数据删除机制的全索引和相关数据结构(例如,稀疏索引、弱哈希表、布隆过滤器)进行更新。
为了使数据再次可读,更新包括添加元数据,元数据指示如何根据一个或多个存储集上的不同段构建目标数据,包括新添加的非重复段和先前存在的重复数据段。元数据可以是存储在一个或多个存储集上的数据段的映射,这些数据段被组合起来,以重建目标数据。元数据可以存储在快速层上。
更新介质集特定重复数据删除机制的标识表,以存储每个新的段标识符的元数据。例如,存储在标识表中的每个数据段的每个元数据可以包括以下中的一个或多个:存储数据段的存储集的指示、存储数据段的介质的偏移、数据段的大小,以及指纹。存储集中的介质的标识符可以包括在元数据中,和/或使用指纹计算,例如,计算为对指纹除以存储集中的介质数量执行取模运算的余数。包括在元数据中的指纹是用于确定存储集的介质的指纹,如结合308所述。
在314处,更新全局索引,以指示在访问过程中使用的目标数据的段之间的映射。
在316处,更新用于存储目标数据的段的标识符的全局文件映射。标识符可以是唯一标识每个数据段的代码,例如,数字、字母、符号和/或其组合。
现在返回参考图4,在402处,接收读取目标数据的请求。目标数据存储在包括多个介质(例如,盒带)的存储集上,如本文中结合图3所述。
在404处,例如,从全局文件映射中获取目标数据的数据段的标识符。
在406处,例如,从标识表中获取每个数据段的元数据。
在408处,当每个元数据包括数据段的指纹时,根据指纹确定存储集的介质。例如,通过执行取模运算,求出指纹除以存储集中的介质数量时的余数。余数指示介质。
在410处,根据元数据规划并行读取数据段的顺序。对于存储集的每个介质,根据数据段的位置和偏移排列数据段,以进行顺序读取。
在412处,按照顺序从存储集的多个介质中并行读取目标数据的数据段。与从单个介质读取目标数据相比,从存储集的多个介质并行读取目标数据可以提高性能。通过使用多个介质的集合,可以从多个介质并行读取数据。这可以将读取性能提高多达集合中介质数量的倍数,例如,对于4个盒带的集合,性能比单个盒带提高多达4倍。
在414处,根据数据段创建目标数据。通过按顺序排列从存储集的不同介质获取的数据段,创建目标数据。
现在返回参考图5,通过图5描述的数据段可以如结合图3所述存储在其中,和/或可以如结合图4所述从其中读取。
段元数据502可以包括与存储的目标数据(例如,文件)相关联的元数据。例如,段元数据502可以包括文件的数据段的ID指示。段元数据502可以包括每个ID(即每个数据段)的元数据,例如,存储数据段504的介质的ID、指纹(fingerprint,FP)506、介质中与数据段起点的偏移、和/或数据段的大小。
在图5所示的示例中,有七个数据段,ID为1至7(504)。每个数据段与指纹506相关联,指纹506可以存储为元数据和/或进行计算(例如,如本文所述通过输入到哈希中进行计算)。数据段存储在存储集上,该存储集包括预定义数量的介质(例如,盒式磁带)508,例如,在所述示例中包括4个盒带510A至510D。
每个数据段到存储该数据段512的存储集的盒带的映射可以存储(例如,作为元数据)和/或动态计算。该映射可以作为取模运算来计算,取模运算通过将指纹的值除以存储集中的盒带数量来计算余数。余数指示存储数据段的存储集的盒带。例如,对于ID=1的数据段,指纹为1234。1234mod(%)4=2指示ID=1的数据段存储在盒带2上,如图所示。
在研究下文附图和详细描述之后,本发明的其它系统、方法、特征和优点对于本领域技术人员来说是显而易见的或变得显而易见。所有这些其它系统、方法、特征和优点旨在包括在本说明书中和本发明的范围内,并且受所附权利要求的保护。
对本发明各个实施例的描述只是为了说明的目的,而这些描述并不旨在穷举或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对本领域技术人员而言是显而易见的。相比于市场上存在的技术,选择本文使用的术语可最好地解释本实施例的原理、实际应用或技术进步,或使本领域其它技术人员理解本文公开的实施例。
预计在本申请衍生的专利的有效期内,将开发许多相关的重复数据删除机制,并且术语重复数据删除机制的范围旨在先验地包括所有此类新技术。
本文所使用的术语“约”是指±10%。
术语“包括”、“具有”及其变化形式表示“包括但不限于”。该术语包括了术语“由……组成”以及“基本上由……组成”。
短语“基本上由……组成”表示组成物或方法可以包括附加成分和/或步骤,但前提是所述附加成分和/或步骤不会实质上改变所要求保护的组成物或方法的基本和新颖特性。
除非上下文另有明确说明,否则本文使用的单数形式“一个”和“所述”包括复数含义。例如,术语“一种复合物”或“至少一种复合物”可以包括多种复合物,包括其混合物。
本文中使用的词语“示例性”表示“作为一个示例、实例或说明”。任何描述为“示例性”的实施例不一定解释为比其它实施例更优选或更有利和/或排除其它实施例的特征的结合。
本文中使用的词语“可选地”表示“在一些实施例中提供而在其它实施例中没有提供”。除非多个“可选”特征冲突,否则本发明的任何特定实施例都可以包括这些特征。
在本申请中,本发明的各种实施例可以范围格式呈现。应理解,范围格式的描述仅为了方便和简洁起见,并且不应该被解释为对本发明范围的固定限制。因此,对范围的描述应被视为已具体公开了所有可能的子范围以及该范围内的单独数值。例如,对例如从1到6的范围的描述应被视为已具体公开了从1到3、从1到4、从1到5、从2到4、从2到6、从3到6等的子范围以及该范围内的单独数字,例如1、2、3、4、5和6。不论范围有多广,这都适用。
当本文指示一个数值范围时,表示包括所指示的范围内的任何所列举的数字(分数或整数)。短语“第一指示数字和第二指示数字之间的范围”以及“从第一指示数字到第二指示数字的范围”在本文中可互换使用,表示包括第一指示数字和第二指示数字以及二者之间的所有分数和整数。
应了解,为清晰起见,在单独实施例的上下文中描述的本发明的某些特征还可以组合提供于单个实施例中。相反地,为清晰起见,在单个实施例的上下文中描述的本发明的各个特征也可以单独地提供,或以任何合适的子组合提供,或作为本发明描述的任何合适的其它实施例提供。在各个实施例的上下文中描述的某些特征不视为是这些实施例的基本特征,除非在没有这些元素的情况下实施例是不可操作的。
申请人的目的是,本说明书中提及的所有出版物、专利和专利申请书都通过全文引用结合在本说明书中,如同每个单独的出版物、专利或专利申请书在提及要通过引用结合在本文中时被具体和单独指出。此外,对本申请的任何参考的引用或标识不可当做是允许这样的参考在现有技术中优先于本发明。就使用章节标题而言,不应该将章节标题理解成必要的限定。另外,本申请的任何一个或多个优先权文件的全部内容以引用的方式并入本申请。
Claims (18)
1.一种用于数据的重复数据删除存储的设备(104),包括:
处理器(102),所述处理器(102)用于:
访问目标数据(112A)以存储在多个存储集(160)上,每个存储集包括多个顺序存取存储设备(150)的多个介质;
访问每个存储集与其中存储的数据段之间的全局索引(116A)映射,以识别存储集,所述存储集包括多个介质,所述多个介质可能存储所述目标数据的至少一个段的重复;
访问介质集特定重复数据删除机制(150A),以识别存储在所述识别的存储集的所述多个介质上的所述目标数据的段的重复;
将所述目标数据的非重复段存储在所述识别的存储集的所述多个介质上;
更新所述存储集的所述多个介质的所述介质集特定重复数据删除机制,以指示所述目标数据的所述识别的重复段和所述存储的非重复段;
更新所述全局索引,以指示在所述访问过程中使用的所述目标数据的所述段之间的映射;
更新用于存储所述目标数据的所述多个段的标识符的全局文件映射(116B);
更新标识表(116C),以存储每个标识符的元数据。
2.根据权利要求1所述的设备,其特征在于,所述目标数据的所述非重复段并行存储在所述识别的存储集的所述多个介质上。
3.根据上述权利要求中任一项所述的设备,其特征在于,所述处理器还用于:
将所述目标数据划分为多个数据段(504);
计算所述多个数据段的多个指纹(506);
选择所述多个指纹的代表子集;
其中,针对所述代表子集访问所述全局索引,以识别所述存储集;
其中,根据所述数据段的所述指纹选择所述存储集的用于数据段的重复数据删除存储的介质。
4.根据权利要求3所述的设备,其特征在于,通过执行取模运算,求出所述指纹除以所述存储集(514)中的介质数量时的余数,从而选择所述存储集的用于重复数据删除存储的所述介质,其中,所述余数指示所述选定介质(510A至510D)。
5.根据权利要求3或4所述的设备,其特征在于,所述标识表中存储的每个元数据包括存储所述数据段的所述存储集的指示、所述介质的偏移、所述数据段的大小以及所述多个数据段中的每个数据段的指纹,其中,所述指纹用于确定所述存储集的所述介质。
6.根据上述权利要求中任一项所述的设备,其特征在于,每个存储集的介质数量是预配置且固定的。
7.根据上述权利要求中任一项所述的设备,其特征在于,每个介质分配给单个存储集。
8.根据上述权利要求中任一项所述的设备,其特征在于,所述存储通过将所述非重复段添加到所述存储集的所述多个介质来完成。
9.根据上述权利要求中任一项所述的设备,其特征在于,所述处理器还用于:
接收读取所述目标数据的请求;
访问所述全局文件映射,以获取所述目标数据的所述多个数据段的标识符;
访问标识表,以获取所述多个数据段中的每个数据段的元数据;
根据所述元数据规划并行读取所述多个数据段的顺序;
按照所述顺序并行读取所述目标数据的所述多个数据段;
根据所述多个数据段创建所述目标数据。
10.根据权利要求9所述的设备,其特征在于,每个元数据包括存储所述数据段的所述存储集的指示、所述介质的偏移、所述数据段的大小以及所述数据段的指纹,其中,所述指纹用于确定所述存储集的所述介质。
11.一种用于数据恢复的设备(104),包括:
处理器(102),所述处理器(102)用于:
接收读取存储在多个存储集(160)中的一个存储集上的目标数据(112A)的请求,每个存储集包括多个顺序存取存储设备(150)的多个介质;
从全局文件映射(116B)中获取所述目标数据的多个数据段的标识符;
从标识表(116C)中获取所述多个数据段中的每个数据段的元数据;
根据所述元数据规划并行读取所述多个数据段的顺序;
按照所述顺序从所述存储集的所述多个介质中并行读取所述目标数据的所述多个数据段;
根据所述多个数据段创建所述目标数据。
12.根据权利要求11所述的设备,其特征在于,每个元数据包括所述数据段的指纹,所述处理器还用于根据所述指纹确定所述存储集的所述介质。
13.根据权利要求11或权利要求12所述的设备,其特征在于,所述处理器还用于通过执行取模运算,求出所述指纹除以所述存储集中的介质数量时的余数,从而确定所述介质,其中,所述余数指示所述介质。
14.根据权利要求11至13所述的设备,其特征在于,所述处理器还用于:针对所述多个介质中的每个介质,根据所述数据段的位置和偏移来排列数据段以便进行顺序读取。
15.一种用于数据的重复数据删除存储的方法,包括:
访问目标数据以存储在多个存储集上,每个存储集包括多个顺序存取存储设备的多个介质(302);
访问每个存储集与其中存储的数据段之间的全局索引映射,以识别存储集,所述存储集包括多个介质,所述多个介质可能存储所述目标数据的至少一个段的重复(304);
访问介质集特定重复数据删除机制,以识别存储在所述识别的存储集的所述多个介质上的所述目标数据的段的重复(306);
将所述目标数据的非重复段存储在所述识别的存储集的所述多个介质上(310);
更新所述存储集的所述多个介质的所述介质集特定重复数据删除机制,以指示所述目标数据的所述识别的重复段和所述存储的非重复段(312);
更新所述全局索引,以指示在所述访问过程中使用的所述目标数据的所述段之间的映射(314);
更新用于存储所述目标数据的所述多个段的标识符的全局文件映射(316);
更新标识表,以存储每个标识符的元数据(318)。
16.一种用于数据恢复的方法,包括:
接收读取存储在多个存储集中的一个存储集上的目标数据的请求,每个存储集包括多个顺序存取存储设备的多个介质(402);
从全局文件映射中获取所述目标数据的多个数据段的标识符(404);
从标识表中获取所述多个数据段中的每个数据段的元数据(406);
根据所述元数据规划并行读取所述多个数据段的顺序(410);
按照所述顺序并行读取所述目标数据的所述多个数据段(412);
根据所述多个数据段创建所述目标数据(414)。
17.一种非瞬时性介质(106),存储用于数据的重复数据删除存储的程序指令(106A),当所述程序指令(106A)由至少一个处理器(102)执行时,使得所述至少一个处理器执行以下操作:
访问目标数据以存储在多个存储集上,每个存储集包括多个顺序存取存储设备的多个介质;
访问每个存储集与其中存储的数据段之间的全局索引映射,以识别存储集,所述存储集包括多个介质,所述多个介质可能存储所述目标数据的至少一个段的重复;
访问介质集特定重复数据删除机制,以识别存储在所述识别的存储集的所述多个介质上的所述目标数据的段的重复;
将所述目标数据的非重复段存储在所述识别的存储集的所述多个介质上;
更新所述存储集的所述多个介质的所述介质集特定重复数据删除机制,以指示所述目标数据的所述识别的重复段和所述存储的非重复段;
更新所述全局索引,以指示在所述访问过程中使用的所述目标数据的所述段之间的映射;
更新用于存储所述目标数据的所述多个段的标识符的全局文件映射;
更新标识表,以存储每个标识符的元数据。
18.一种非瞬时性介质(106),存储用于数据恢复的程序指令(106A),当所述程序指令(106A)由至少一个处理器(102)执行时,使得所述至少一个处理器执行以下操作:
接收读取存储在多个存储集中的一个存储集上的目标数据的请求,每个存储集包括多个顺序存取存储设备的多个介质;
从全局文件映射中获取所述目标数据的多个数据段的标识符;
从标识表中获取所述多个数据段中的每个数据段的元数据;根据所述元数据规划并行读取所述多个数据段的顺序;
按照所述顺序并行读取所述目标数据的所述多个数据段;
根据所述多个数据段创建所述目标数据。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2022/074201 WO2024046554A1 (en) | 2022-08-31 | 2022-08-31 | Parallel deduplication mechanism on sequential storage media |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118159936A true CN118159936A (zh) | 2024-06-07 |
Family
ID=83362556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280070857.3A Pending CN118159936A (zh) | 2022-08-31 | 2022-08-31 | 顺序存储介质上的并行重复数据删除机制 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN118159936A (zh) |
WO (1) | WO2024046554A1 (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2235640A2 (en) * | 2008-01-16 | 2010-10-06 | Sepaton, Inc. | Scalable de-duplication mechanism |
US9218133B2 (en) * | 2012-08-17 | 2015-12-22 | Spectra Logic, Corp | Data deduplication in a removable storage device |
GB2514555A (en) * | 2013-05-28 | 2014-12-03 | Ibm | Deduplication for a storage system |
-
2022
- 2022-08-31 CN CN202280070857.3A patent/CN118159936A/zh active Pending
- 2022-08-31 WO PCT/EP2022/074201 patent/WO2024046554A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2024046554A1 (en) | 2024-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303797B1 (en) | Clustering files in deduplication systems | |
US11144507B2 (en) | System and method for balancing compression and read performance in a storage system | |
US9880746B1 (en) | Method to increase random I/O performance with low memory overheads | |
US8914338B1 (en) | Out-of-core similarity matching | |
US9367448B1 (en) | Method and system for determining data integrity for garbage collection of data storage systems | |
JP5878548B2 (ja) | 重複排除ストレージ・システム、その内部の合成バックアップを容易にする方法、及び、プログラム | |
US8639669B1 (en) | Method and apparatus for determining optimal chunk sizes of a deduplicated storage system | |
US9411815B1 (en) | System and method for improving data compression in a deduplicated storage system | |
US9514146B1 (en) | System and method for improving data compression of a storage system in an online manner | |
US9424185B1 (en) | Method and system for garbage collection of data storage systems | |
US10678654B2 (en) | Systems and methods for data backup using data binning and deduplication | |
US9594674B1 (en) | Method and system for garbage collection of data storage systems using live segment records | |
US9715505B1 (en) | Method and system for maintaining persistent live segment records for garbage collection | |
US8825626B1 (en) | Method and system for detecting unwanted content of files | |
US8836548B1 (en) | Method and system for data compression at a storage system | |
US10838923B1 (en) | Poor deduplication identification | |
US9904480B1 (en) | Multiplexing streams without changing the number of streams of a deduplicating storage system | |
US9183218B1 (en) | Method and system to improve deduplication of structured datasets using hybrid chunking and block header removal | |
US8756249B1 (en) | Method and apparatus for efficiently searching data in a storage system | |
US10078648B1 (en) | Indexing deduplicated data | |
US10229127B1 (en) | Method and system for locality based cache flushing for file system namespace in a deduplicating storage system | |
US10459648B1 (en) | Change rate estimation | |
US10838990B1 (en) | System and method for improving data compression of a storage system using coarse and fine grained similarity | |
US10430383B1 (en) | Efficiently estimating data compression ratio of ad-hoc set of files in protection storage filesystem with stream segmentation and data deduplication | |
US11436092B2 (en) | Backup objects for fully provisioned volumes with thin lists of chunk signatures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |