CN114296630A - 缓存存储器中重复数据删除指纹索引的更新 - Google Patents
缓存存储器中重复数据删除指纹索引的更新 Download PDFInfo
- Publication number
- CN114296630A CN114296630A CN202110407728.6A CN202110407728A CN114296630A CN 114296630 A CN114296630 A CN 114296630A CN 202110407728 A CN202110407728 A CN 202110407728A CN 114296630 A CN114296630 A CN 114296630A
- Authority
- CN
- China
- Prior art keywords
- fingerprint
- fingerprint index
- cached
- index
- block
- 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
Links
- 230000002085 persistent effect Effects 0.000 claims abstract description 128
- 238000013500 data storage Methods 0.000 claims description 51
- 238000000034 method Methods 0.000 claims description 32
- 230000004044 response Effects 0.000 claims description 15
- 238000011084 recovery Methods 0.000 claims description 14
- 238000012217 deletion Methods 0.000 abstract description 2
- 230000037430 deletion Effects 0.000 abstract 1
- 239000000872 buffer Substances 0.000 description 58
- 230000008569 process Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 10
- 239000007787 solid Substances 0.000 description 4
- 230000001174 ascending effect Effects 0.000 description 3
- 238000007596 consolidation process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1453—Management of the data involved in backup or backup restore using de-duplication of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
- G06F16/152—File search processing using file content signatures, e.g. hash values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1748—De-duplication implemented within the file system, e.g. based on file segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及缓存存储器中重复数据删除指纹索引的更新。在一些示例中,一种系统使用包括多个块的散列数据结构中的重复数据删除指纹索引执行重复数据删除,其中,所述多个块中的块包括基于相应数据值的内容计算的指纹。系统在合并操作中,将对重复数据删除指纹索引的更新合并到存储在持久性存储装置中的散列数据结构。作为所述合并操作的一部分,系统将更新镜像到缓存存储器中的散列数据结构的缓存的副本中,并在间接块中更新与所述散列数据结构的缓存的副本中的块的位置相关的信息。
Description
背景技术
可以应用数据缩减技术来缩减存储在存储系统中的数据量。示例数据缩减技术包括重复数据删除。重复数据删除标识重复的数据值,并且力图缩减或消除存储在存储系统中的重复数据值的实例的数量。
附图说明
关于以下附图描述了本公开的一些实施方式。
图1是根据一些示例的包括持久性指纹索引和缓存的指纹索引的数据存储系统的框图。
图2是根据一些示例的持久性指纹索引的框图。
图3是根据一些示例的合并过程的流程图。
图4是根据一些示例的查找过程的流程图。
图5是根据一些示例的恢复过程的流程图。
图6是根据一些示例的垃圾收集过程的流程图。
图7是根据一些示例的存储有机器可读指令的存储介质的框图。
图8是根据一些示例的数据存储系统的框图。
图9是根据一些示例的过程的流程图。
在所有附图中,相同的附图标记指代相似但不一定相同的元件。附图不一定成比例,并且可以放大一些零件的尺寸以更清楚地图示所示出的示例。此外,附图提供了与描述一致的示例和/或实施方式;然而,描述不限于附图中提供的示例和/或实施方式。
具体实施方式
在本公开中,除非上下文另外明确指示,否则使用术语“一(a/an)”或“所述(the)”旨在同样包括复数形式。同样地,当在本公开中使用时,术语“包括(includes/including/comprises/comprising)”、“具有(have/having)”指明存在所述元件,但不排除存在或添加其他元件。
在一些示例中,重复数据删除是通过计算要存储(写入)到数据存储系统中的传入数据值的指纹来完成的。“数据存储系统”可以包括存储设备或存储设备集合。数据存储系统可以包括数据存储阵列、数据存储装置等等。
数据存储系统还可以包括管理对(多个)存储设备的访问的(多个)存储控制器。“数据值”可以指可以在数据存储系统中单独标识的数据的任何部分。在一些情况下,数据值可以指组块、组块的集合、或任何其他数据部分。
“控制器”可以指硬件处理电路,其可以包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列、数字信号处理器或其他硬件处理电路中的任一项或某种组合。可替代地,“控制器”可以指硬件处理电路与可在硬件处理电路上执行的机器可读指令(软件和/或固件)的组合。
“指纹”是指通过对数据值的内容应用函数而得到的值(其中“内容”可以包括数据值的内容的全部或子集)。可以应用的函数的示例包括基于传入数据值产生散列值的散列函数(hash function)。散列函数的示例包括密码散列函数,比如安全散列算法2(SHA-2)散列函数,例如SHA-224、SHA-256、SHA-384等。在其他示例中,可以采用其他类型的散列函数或其他类型的指纹函数。
指纹表示存储在数据存储系统中的数据值。完整指纹唯一地标识相应的数据值(下面将进一步讨论完整指纹与部分指纹之间的区别)。可以将针对传入数据值计算的指纹与存储在用于重复数据删除的指纹索引中的指纹进行比较。指纹索引将用于数据值的指纹映射到数据值的存储位置指示符。“存储位置指示符”可以指提供对持久性存储装置中数据值的存储位置的指示的任何信息。可以使用一种或多种(多个)持久性(例如,非易失性)存储设备(比如(多个)基于磁盘的存储设备(例如,(多个)硬盘驱动器(HDD))、(多个)固态设备(SSD)(比如(多个)闪速存储设备)等或者其组合)来实施持久性存储装置。
在一些示例中,指纹索引将指纹映射到序列块号(SBN)。SBN是上述存储位置指示符的示例。SBN可用于确定数据值在持久性存储装置中物理存储的位置。然而,在一些示例中,SBN实际上并不标识物理位置,替代地,SBN可以用于得到标识物理位置的物理地址或其他值。
在对传入数据值执行重复数据删除操作期间,传入数据值的指纹与指纹索引中的指纹之间的匹配会指示传入数据值可能是已经存储在数据存储系统中的数据值的重复。如果传入数据值是已经存储的数据值的副本,则可以递增存储在数据存储系统中的引用计数以指示已接收到的数据值的实例的数量,而不是存储重复的传入数据值。
随着数据存储系统被数据值填充,存储在持久性存储装置中的指纹索引的大小增加。将较大的指纹索引保持为最新的在资源使用方面可能是非常昂贵的。
数据存储系统可以包括用于存储数据的多种不同类型的存储装置,包括持久性存储装置、非易失性随机存取存储器(NVRAM)和易失性存储器。
持久性存储装置可以使用相对较低成本的(多个)存储设备来实施,如(多个)基于磁盘的存储设备,(多个)固态存储设备等等。持久性存储装置可以具有相对较大的存储容量,但是可能具有相对较低的存储速度。
NVRAM可以使用(多个)电可擦除可编程只读存储器(EEPROM)设备来实施。在其他示例中,NVRAM可以使用(多个)电池支持的动态随机存取存储器(DRAM)设备或(多个)电池支持的静态随机存取存储器(SRAM)设备来实施。NVRAM在页或字节的基础上是可随机访问的(可读的且可写的)(换句话说,NVRAM的页或字节是可响应于请求而在不会取得NVRAM的另一页或字节)的情况下单独访问的。页或字节的大小小于另一种类型的存储设备中使用的物理块,如固态存储设备(例如,闪速存储器设备)。可以在块的基础上对固态存储设备进行写入;换句话说,对固态存储设备的写入将写入整个物理块,而不是写入小于物理块大小的部分。通常,NVRAM可能是相对较昂贵的(例如,比固态存储设备或基于磁盘的存储设备更昂贵),并且因此包括在数据存储系统中的NVRAM可以具有相对较小的大小。
易失性存储器可以使用(多个)DRAM设备、(多个)SRAM设备或从存储器移除电源会导致存储在存储器中的数据丢失的任何其他类型的存储器来实施。这与持久性存储装置或NVRAM形成对比,即使从持久性存储装置或NVRAM移除电源,持久性存储装置也可以保持所存储的数据。
在一些示例中,为了改善数据存储系统在执行重复数据删除时的性能,传入数据值的更新(其是写的一部分)被添加至B树索引,B树索引可以存储在NVRAM中。存储在NVRAM中的B树索引被认为是缓存索引,因为B树索引存储在访问速度比持久性存储装置快的存储器中。这种缓存索引被称作“B树缓存索引”。B树缓存索引包括以分层方式布置的节点。B树缓存索引的叶节点包括将指纹映射到存储位置指示符(例如,SBN)的更新条目。B树缓存索引的中间节点用于基于指纹来找到B树缓存索引的匹配条目。
B树缓存索引的大小可能会随着传入数据值(以及对应的更新条目)的数量增加而迅速增长。如果NVRAM的很大一部分被B树缓存索引消耗,则NVRAM可能无法用于由数据存储系统执行的其他服务。此外,将B树缓存索引的更新条目从NVRAM合并到B树缓存索引在处理资源的消耗方面可能是昂贵的。另外,执行B树缓存索引的读取涉及执行对B树缓存索引的分层节点的二分搜索,这也在处理资源的消耗方面可能是昂贵的。
根据本公开的一些实施方式,代替将用于指纹索引的缓存索引实施为B树,缓存索引可以替代地使用日志结构散列表来实施。另外,在一些示例中,被实施为日志结构散列表的缓存索引可以存储在与NVRAM分开的持久性缓存存储器中。例如,持久性缓存存储器可以使用(多个)固态存储设备(如(多个)闪速存储器设备)来实施。“持久性缓存存储器”是在从缓存存储器移除电源时也能保持存储在缓存存储器中的数据的缓存存储器。而且,通过将对缓存索引的更新存储在易失性存储器中而不是NVRAM中,可以使NVRAM的昂贵且有限的存储空间可用于系统的其他进程。
尽管在一些示例中参考了用(多个)固态存储设备来实施持久性缓存存储器,但是应该注意,持久性缓存存储器在其他示例中可以使用其他类型的(多个)存储器设备来实施。在替代性示例中,被实施为日志结构散列表的缓存索引可以存储在NVRAM中,而不是存储在单独的持久性缓存存储器中。在这样的替代性示例中,持久性缓存存储器是NVRAM。
在随后的讨论中,被实施为日志结构散列表的缓存索引被称为缓存的指纹索引。存储在持久性存储装置中的指纹索引被称为持久性指纹索引。注意,持久性指纹索引也可以呈日志结构散列表的形式。
根据本公开的一些实施方式,响应于传入数据值,创建对指纹索引的指纹索引更新,并在合并操作中将其合并到持久性存储装置中的持久性指纹索引。作为合并操作的一部分,还将指纹索引更新镜像到持久性缓存存储器中缓存的指纹索引中的叶块(leafblock),并且进一步地,更新包含对缓存的指纹索引中用于接收指纹索引更新的叶块的引用的间接块(indirect block)。
指纹索引包括不同类型的块,所述块包括叶块和间接块。指纹索引的叶块包含指纹索引条目,其中每个指纹索引条目将数据值的指纹映射到数据值的存储位置指示符(例如,SBN)。存储位置指示符可以用于确定由持久性存储装置所存储的数据值的存储位置。
间接块不包含任何指纹索引条目;替代地,间接块包含与叶块的位置相关的位置信息(“引用(reference)”)。
在一些示例中,日志结构散列表将指纹索引(缓存的指纹索引或持久性指纹索引)的条目存储在一系列叶块中,其中每个叶块包括多个桶(bucket)。指纹索引的每个叶块都是日志结构散列表的一个单元,并且可使用块标识符唯一标识(下面将进一步讨论)。每个桶是叶块的分区,并且可使用桶标识符唯一标识(下面将进一步讨论)。叶块可以包括多个桶。每个桶进而可以存储多个指纹索引条目。
随着日志结构散列表的大小增加,附加块(叶块和间接块)被添加到日志结构散列表中。根据一些示例,日志结构散列表的块是日志结构文件系统(LFS)的一部分。在日志结构散列表中,指纹索引的指纹索引条目按照指纹索引条目的指纹的值进行排序。
与B树不同,日志结构散列表未被布置为分层树结构,而是包括各个部分(各个桶)的序列,所述各个部分(各个桶)包含按排序顺序(例如,按指纹值升序或降序)的指纹索引条目。在一些示例中,桶可以包括在叶块中,叶块进而可以包括在段(segment)中。叶块和桶是大小可变的。
在一些示例中,搜索日志结构散列表不涉及二分搜索(如B树的情况),这使得指纹索引的搜索可以比搜索B树更高效。准确地说,日志结构散列表是随机可访问的,因为访问日志结构散列表的请求可以取得日志结构散列表的条目,而不必通过分层节点执行二分搜索。
与使用B树指纹索引相比,将指纹索引布置为日志结构散列表可以减少存储器的使用、减少数据存储系统的网络带宽消耗、减少处理资源的消耗等等。
图1示出了包括易失性存储器104、NVRAM 150、持久性缓存存储器152和持久性存储装置112的数据存储系统102的示例。尽管在图1中示出了特定的部件布置,但是应注意在其他示例中,数据存储系统102可以包括不同的部件布置。
数据存储系统102还包括存储控制器103,所述存储控制器包括各种引擎,包括重复数据删除引擎118、合并引擎109、恢复引擎170和垃圾收集器引擎180。尽管在图1的示例中描绘了特定的引擎,但是在其他示例中,存储控制器103可以包括更少或更多引擎。
每个引擎可以指存储控制器103的硬件处理电路的一部分,或者可替代地,可以指可由存储控制器103的硬件处理电路执行的机器可读指令(存储在至少一个机器可读存储介质上的软件和/或固件)。而且,在其他示例中,所述引擎中的一些可以与存储控制器103分开。
根据本公开的一些实施方式,持久性指纹索引110(以日志结构散列表的形式)存储在持久性存储装置112中,并且缓存的指纹索引154存储在持久性缓存存储器152中。缓存的指纹索引154也呈日志结构散列表的形式,并且包括持久性指纹索引110的一部分。
当数据存储系统102接收(写请求的)传入数据值114时,可以针对传入数据值114创建指纹索引更新。写请求可以通过如局域网(LAN)、广域网(WAN)、存储区域网(SAN)等网络从耦接到数据存储系统102的请求方设备(或多个请求方设备)接收。请求方设备可以指服务器计算机、台式计算机、笔记本计算机、平板计算机、智能手机或任何其他类型的电子设备。在由重复数据删除引擎118应用重复数据删除后,可以将写请求的数据值写入持久性存储装置112中的数据存储区156。
“指纹索引更新”可以指要存储在数据存储系统102中的传入数据值的指纹索引的更新信息。例如,传入数据值的指纹索引更新可以包括针对传入数据值计算的指纹(例如,散列值)和传入数据值的存储位置指示符(例如,SBN)。
接下来的讨论涉及指纹索引110、154所使用的SBN。注意,根据一些示例的技术或机制可以与指纹索引110、154中其他类型的存储位置指示符一起使用。
每个指纹索引更新都可以暂时存储在缓冲器中。易失性存储器104包括主动更新缓冲器106和同步缓冲器108(称为“sync缓冲器”)。尽管在图1中仅示出了一个主动更新缓冲器106和一个sync缓冲器108,但在其他示例中,数据存储系统102可以包括多个主动更新缓冲器106和/或多个sync缓冲器108。
更一般地,在其他示例中,数据存储系统102可以具有不同的布置。例如,代替包括主动更新缓冲器106和sync缓冲器108二者,可以使用仅一个缓冲器。
主动更新缓冲器106用于接收与传入数据值114相对应的指纹索引更新140。sync缓冲器108也存储指纹索引更新。合并引擎109将sync缓冲器108中的指纹索引更新与数据存储系统102的持久性存储装置112中的持久性指纹索引110合并。
主动更新缓冲器106和sync缓冲器108的角色可以随时间改变。主动更新缓冲器106用于接收指纹索引更新140,同时可以继续进行sync缓冲器108中的指纹索引更新140与持久性指纹索引110的合并。一旦sync缓冲器108中的指纹索引更新140与持久性指纹索引110的合并完成,当主动更新缓冲器106中填充了超过阈值的指纹索引更新140(例如,主动更新缓冲器106中指纹索引更新140的数量超过了阈值数量或更新缓冲器106的存储容量的阈值百分比)时,主动更新缓冲器106和sync缓冲器108的角色可以切换。缓冲器106和108的角色的切换使得先前被指定为主动更新缓冲器的缓冲器成为sync缓冲器,而先前被指定为sync缓冲器的缓冲器成为主动更新缓冲器。
进一步参考图2,描绘了根据一些示例的布置为日志结构散列表的持久性指纹索引110的进一步细节。缓存的指纹索引154的日志结构散列表可以具有类似的布置。
在图2所示的示例中,日志结构散列表包括日志段202、204、206、208和210。包含持久性指纹索引110的日志结构散列表的日志段在一些示例中可以具有固定的大小,如32兆字节(MB)或其他大小。每个日志段可以存储叶块(或多个叶块)和/或间接块(或多个间接块)。叶块(例如,日志段204中的叶块204-1中的任何一个)存储指纹索引条目。“指纹索引条目”包括指纹和对应的SBN。间接块(例如,日志段204中的204-2)包含对叶块的引用。对叶块的“引用”可以包括对持久性存储装置112中存储了叶块的位置(例如,物理地址)的指示。
在一些示例中,存储有包含指纹索引条目的桶的叶块可以具有16千字节(KB)的标称大小。如果叶块变满,则叶块的大小可以增长到高达32KB(示例叶块最大大小),以容纳更多指纹索引条目。在一些示例中,间接块的大小可以是5兆字节(MB)或另一大小。
虽然已为叶块和间接块指定了特定的大小值,但是应注意在其他示例中,叶块和间接块可以具有其他大小。
随着叶块被添加到持久性指纹索引110并且对应数量的块引用被添加到间接块,间接块可能变满(即,充满对叶块的块引用,使得间接块不具有足够的空间来接收额外的块引用),可以创建另一个间接块并添加到日志段。
如图2中进一步所示,包含持久性指纹索引110的日志结构散列表的大小通过在箭头212所指示的方向上对附加块进行附加来增长(例如,附加块可以附加到日志结构散列表的末尾)。
日志结构散列表进一步包括标识每个日志段内的间接块(如果存在)位置的头部信息214。叶块和间接块可以在同一日志段内混合。每个间接块的位置信息(在头部信息214中)标识(包含间接块的)日志段和包含间接块的日志段内的偏移。
如图2中进一步所示,日志段204包括多个叶块204-1。例如,多个叶块204-1包括M个叶块,包括块0、块1、块2、……、块M-1,其中,M≥2。每个叶块进一步包括P个桶,包括桶0、桶1、……、桶P-1,其中,P≥2。
每个桶包括多个指纹索引条目,其中每个指纹索引条目将指纹与存储位置指示符相关联。每个指纹索引条目包括键-值对,其中,键为指纹并且值为对应的SBN。
叶块信息还包括头部信息216,所述头部信息包括指示叶块大小的信息、指示叶块的N个桶中的每个桶中指纹索引条目的数量的信息、以及其他信息。
合并引擎109执行合并操作以将sync缓冲器108中的指纹更新条目与持久性指纹索引110中的叶块合并。sync缓冲器108中的每个指纹更新条目可以呈键-值对的形式(其中,键为指纹,而值为对应的SBN)。合并操作将sync缓冲器108中的键-值对按照sync缓冲器108中的键-值对的排序顺序(例如,指纹的升序)合并到持久性指纹索引110中。例如,在合并操作期间,合并引擎109可以按照从具有最低键(指纹)值的键-值对到具有最高键(指纹)值的键-值对的顺序来遍历sync缓冲器108。
由于将sync缓冲器108的键-值对按排序顺序合并到持久性指纹索引110中,持久性指纹索引110中所产生的键-值对也按键(指纹)值排序。
如果在进行合并操作之前,持久性指纹索引110的日志段已经包含了现有的键-值对,则可以将现有的键-值对从日志段取回到存储器104的暂存区(state area)(未示出)中,并且将sync缓冲器108的要合并的键-值对也移动到暂存区。将日志段的现有键-值对与sync缓冲器108的键-值对按照键(指纹)值的排序顺序进行合并,并然后将排序后的键-值对从暂存区写入持久性指纹索引110的日志段。
重复数据删除
存储控制器103的重复数据删除引擎118对传入数据值114执行重复数据删除。为了执行重复数据删除,重复数据删除引擎118使用指纹索引和位置索引116(存储在持久性存储装置112中)。对于每个传入数据值114,重复数据删除引擎118首先尝试执行缓存的指纹索引154的查找。如果缓存的指纹索引154中存在传入数据值114的对应指纹,则缓存的指纹索引154的条目可以用于重复数据删除。然而,如果缓存的指纹索引154中不存在传入数据值114的对应指纹,则重复数据删除引擎118访问来自持久性指纹索引110的对应条目以执行重复数据删除。
注意,虽然位置索引116被示出为存储在持久性存储装置112中,但是在一些情况下,可以将位置索引116的部分取回到存储器104中以用于快速查找。
在持久性存储装置112包括存储盘的示例中,位置索引116指“磁盘索引(diskindex)”。位置索引116可以呈B树的形式,或者在其他示例中可以具有不同的格式。
如上所述,指纹索引(例如,缓存的指纹索引154或持久性指纹索引110)将指纹映射到SBN。更具体地,指纹索引将部分指纹(partial fingerprint)映射到SBN。下面进一步讨论部分指纹。
在一些示例中,位置索引116将SBN映射到对应的物理位置,如持久性存储装置112的物理地址(ADDR)。更具体地,多个条目117中的每个条目(例如,存储了位置索引116的B树的叶节点)将SBN映射到相应的物理位置(例如,物理地址ADDR)以及完整指纹(fullfingerprint)——完整FP(下面进一步解释)。因此,给定传入数据值的指纹,如果使用给定指纹查找指纹索引(缓存的指纹索引154或持久性指纹索引110)产生与指纹索引的条目的匹配,则该匹配产生与给定指纹相对应的SBN。然后,将SBN用于查找位置索引116,所述位置索引将SBN映射到数据值的物理位置(例如,物理地址)的对应标识符。
由指纹索引110或154存储的部分指纹包括通过将指纹函数应用在数据值的内容上计算的完整指纹的一部分(即,小于全部)。例如,部分指纹可以包括部分散列值,所述部分散列值包括完整散列值的一部分(如构成完整散列值的位的子集)。构成部分散列值的位可以是构成完整散列值的位中的最低有效位。
如图1所示,持久性指纹索引110包括多个条目111,其中每个条目111将部分指纹(部分FP)映射到相应的SBN。类似地,缓存的指纹索引154包括多个条目155,其中每个条目155将部分指纹(部分FP)映射到相应的SBN。相应持久性/缓存的指纹索引110、154的条目111、155被包括在上面讨论的日志结构散列表的桶中。
在一些示例中,指纹索引154或110的查找是基于传入数据值114计算的部分指纹的查找。在这样的示例中,关于重复数据值是否已经存储在数据存储区156中,指纹索引中的部分指纹的匹配并不是决定性的。因为部分指纹由指纹索引154或110潜在使用,多个不同数据值可能产生相同的部分指纹。
在这样的示例中,为了确认指纹索引154或110(与给定传入数据值114的部分指纹匹配)的匹配条目155或111实际上对应于给定传入数据值114的重复,使用指纹索引154或110的匹配条目155或111的SBN来取得位置索引116的对应条目117,其中位置索引116的所取得的条目117将SBN映射到给定传入数据值114的物理位置和给定传入数据值114的完整指纹。
重复数据删除引擎118能够基于来自位置索引116的完整指纹来确定数据存储系统102实际上是否包含给定传入数据值114的重复。更具体地,重复数据删除引擎118将针对给定传入数据值114计算的完整指纹与从位置索引116取得的完整指纹进行比较。在这样的示例中,如果完整指纹匹配,则重复数据删除引擎118可以确定给定传入数据值114的重复已存储在数据存储系统102中(在数据存储区156中)。结果,重复数据删除引擎118可以决定不将给定传入数据值114写入持久性存储装置112,而可以替代地更新对已接收的(共享匹配的完整指纹的)数据值的实例的数量的计数。
另一方面,如果针对给定传入数据值114计算的完整指纹与从位置索引116取得的完整指纹不匹配,则这表示数据存储系统102没有存储给定传入数据值114的重复。结果,给定传入数据值114被写入持久性存储装置112的数据存储区156。另外,重复数据删除引擎118针对给定传入数据值生成指纹索引更新140。注意,没有对与已经存储在持久性存储装置112处的数据值重复的传入数据值产生指纹索引更新140。
如图1所示,重复数据删除引擎118包括数据值散列器120。数据值散列器120可以使用重复数据删除引擎118的硬件处理电路的一部分来实施,或者可替代地,可以包括可由存储控制器103的硬件处理电路执行的机器可读指令。尽管数据值散列器120被示出为重复数据删除引擎118的一部分,但是应注意在其他示例中,数据值散列器120可以与重复数据删除引擎118分开。
数据值散列器120产生的指纹可以包括散列值。在其他示例中,可以使用不同类型的指纹生成器来生成另一种类型的指纹。数据值散列器120产生要存储在位置索引116中的完整指纹(例如,完整散列值)和要存储在指纹索引154、110中的部分指纹(例如,部分散列值)两者。
指纹索引更新的合并
图3是根据一些示例的由存储控制器103执行的合并过程300的流程图。存储控制器103接收(在302处)传入数据值114。根据一些示例,基于传入数据值114,存储控制器103产生指纹索引更新140(图1),所述指纹索引更新被添加(在304处)到存储器104中的主动更新缓冲器106。具体地,针对传入数据值114,数据值散列器120产生相应的部分指纹(以及相应的完整指纹),其中部分指纹包括在指纹索引更新140中。每个指纹索引更新140进一步包含对应的SBN。
在使用了主动更新缓冲器106和sync缓冲器108二者的示例中,主动更新缓冲器106可以在某个时候(例如响应于主动更新缓冲器106变满)被切换成sync缓冲器108。在合并操作中,存储控制器103的合并引擎109将sync缓冲器108中的指纹索引条目合并(在306处)到持久性指纹索引110中。将指纹索引更新合并到持久性指纹索引110可以包括将指纹索引更新添加到持久性指纹索引110的现有叶块,和/或在持久性指纹索引110中创建新叶块以添加指纹索引条目。新叶块被创建以用于添加具有不与持久性指纹索引110的任何现有叶块相对应的指纹值的指纹索引条目。注意,持久性指纹索引110的每个现有叶块用于存储包含从前导指纹值跨越到结束指纹值的各指纹值的指纹索引条目。
作为将指纹索引更新合并到持久性指纹索引110中的合并操作的一部分,合并引擎109将指纹索引更新镜像(在308处)到持久性缓存存储器152中缓存的指纹索引154中,并且进一步将与指纹索引更新被复制到其中的叶块(缓存的指纹索引154中缓存的叶块)相关的位置信息添加(在310处)到间接块142(图1)中。间接块142是指代持久性缓存存储器152中缓存的指纹索引154中的叶块的位置的“阴影(shadow)”间接块。根据本公开的一些实施方式,位置信息被添加到间接块142而不是B树缓存索引中。
间接块142缓存在存储器104中,并且可以是持久性缓存存储器152中的间接块162的缓存版本。
使用其中指纹索引更新被镜像到缓存的指纹索引154并且缓存的叶块的位置被添加到易失性存储器104中的间接块142的技术或机制,不必使用NVRAM 150中的B树缓存索引,使得不必将指纹索引更新和对应的位置信息添加到这样的B树缓存索引中。
将指纹索引更新镜像到缓存的指纹索引154中是指将指纹索引更新复制到现有叶块,和/或创建新叶块以容纳指纹索引更新,这镜像了在持久性指纹索引110处执行的更新。
与缓存的叶块相关的位置信息是指示持久性缓存存储器152中存储叶块的位置的位置信息。在图1中,与叶块相关的位置信息呈叶块引用144的形式。叶块引用144可以包括持久性缓存存储器152中存储了缓存的指纹索引154的叶块的位置的物理地址。
在一些示例中,当镜像(在308处)到缓存的指纹索引154的指纹索引更新使得要在缓存的指纹索引154中创建新叶块(这镜像了持久性指纹索引110中的新叶块的创建)时,将新叶块的位置信息(叶块引用144)添加(在310处)到间接块142中。
根据本公开的一些实施方式,利用指纹索引更新对持久性指纹索引110和缓存的指纹索引154进行的更新为共享更新。共享更新允许缓存的指纹索引154相对于持久性指纹索引110保持在一致的状态。此外,在一些示例中,共享更新确保与持久性指纹索引110合并且复制到缓存的指纹索引154的指纹索引更新是一起提交的。合并指纹索引更新的合并操作可以被视为以其整体被提交的业务,或者在业务无法完成时被中止的业务。提交合并操作的指纹索引更新可以指将更新标记为成功地持久性存储到持久性指纹索引110和缓存的指纹索引154中。以此方式,对持久性指纹索引110和缓存的指纹索引154二者的更新是一起提交的或完全未提交的。
通过作为合并操作的一部分将与缓存的指纹索引154的指纹索引更新被复制到其中的叶块相关的位置信息添加到间接块142中,与(多个)叶块相关的位置信息不必作为单独的条目添加到NVRAM 150中(图1)。结果,没有为将指纹索引更新合并到持久性指纹索引110的目的而消耗NVRAM空间。
而且,通过将合并操作的指纹索引更新镜像到缓存的指纹索引154中,不必为缓存的指纹索引154在存储器104中提供单独的更新缓冲器和sync缓冲器。不为缓存的指纹索引154包括单独的更新缓冲器和sync缓冲器减少了合并操作所消耗的存储器104的量,以及还有执行指纹索引保持所涉及的处理量。
为重复数据删除进行的查找
图4是在由重复数据删除引擎118(图1)执行的重复数据删除操作期间执行缓存的指纹索引154的查找过程400的流程图。对传入数据值114执行重复数据删除操作,以确定传入数据值114的重复是否已经存储在持久性存储装置112中并因此不必再次存储。
查找过程400确定(在402处)在存储器104中是否存在针对传入数据值114的对应的叶块(在缓存的指纹索引154中的)。该确定通过基于从传入数据值114计算的部分指纹计算(叶块的)块标识符来实现。
在一些示例中,根据等式1计算叶块的块标识符:
根据等式2计算桶标识符:
其中fp表示传入数据值114的部分指纹值,S表示桶跨度,桶跨度为桶中第一个键(第一个指纹值)与最后一个键(最后一个指纹值)之间的距离。
块标识符可以用作到间接块142(图1)的索引,其中索引指向间接块142中的条目。由块标识符索引的条目包含指示缓存的指纹索引154中对应的叶块的位置的块引用144(图1)。
虽然一些示例中将特定的等式用于计算块标识符,但是注意,在其他示例中块标识符可以以不同的方式计算。
确定在存储器104中是否存在与传入数据值114相对应的叶块可以基于存储器104是否包含具有从传入数据值114的部分指纹计算的块标识符的叶块。
如果在存储器104中存储有对应的叶块(该叶块被称为“存储器中叶块(in-memoryleaf block)”),则为了执行重复数据删除,查找过程400可以从存储器中叶块取得(在404处)传入数据值114的相应条目。所取得的条目包含传入数据值114的部分指纹与对应的SBN之间的映射,所述映射可以用于执行位置索引116(图1)的查找以取得用于重复数据删除的对应的完整指纹(如上文进一步解释的)。
如果在存储器104中不存在对应的叶块,则查找过程400访问(在406处)存储器104中的间接块142以找到对应的叶块的位置。如上所述,从传入数据值114的部分指纹计算的块标识符被用作到间接块142的索引,以取得相应的块引用144。
所取得的块引用144用于定位包含在存储在持久性缓存存储器152中的缓存的指纹索引154中的对应的叶块。查找过程400将使用所取得的块引用144定位的对应的叶块复制(在408处)到存储器104中。为了执行重复数据删除,查找过程400然后从存储器中叶块取得(在404处)传入数据值114的相应条目。
与涉及二分搜索B树缓存索引以找到对应的叶块的B树缓存索引访问的情况相比,如上所述的基于使用存储器104中的间接块142来访问缓存的指纹索引154可以更快地执行。
在存在多个间接块的示例中,间接块162(图1)中的一些可以存储在持久性缓存存储器152中,并且可以不存储在存储器104中。例如,存储器104可以用于缓存某一数量的间接块(其中,数量可以是1或大于1)。当存储器104中的间接块142变满(即,间接块142充满块引用144,所以间接块142不再能接受更多的块引用)时,间接块142被写入持久性缓存存储器152,新间接块被创建并存储在存储器104中。
在存储器104中不存在对应的叶块,并且在存储器104中也不存在间接块142时,查找过程400可以访问例如存储在NVRAM 150中的间接块位置信息160。
间接块位置信息160指定存储在持久性缓存存储器152中的相应的间接块162的位置。间接块位置信息160可以将块标识符的范围映射到相应的间接块162。可以使用基于传入数据值114的部分指纹生成的块标识符来确定间接块162中的哪个间接块是与传入数据值114相关的,并且可以将相关的间接块162从持久性缓存存储器152取回到存储器104中。
在合并期间从崩溃恢复
在将指纹索引更新合并到持久性指纹索引110(并且还镜像到缓存的指纹索引154中)的合并操作期间,可能发生崩溃(crash)而导致合并操作无法完成。在合并操作期间,由于硬件错误、执行机器可读指令期间的错误、通信错误等等可能发生崩溃。
如上所述,作为合并操作的一部分,对存储器104中的间接块142进行更新。对间接块142的更新可能不会被持久性地存储在数据存储系统102中。结果,崩溃可能使存储器104中的间接块142的内容丢失。如果存储器104中的间接块142丢失,则存储控制器103不能确定缓存的指纹索引的哪些叶块由于合并操作被更新了(但是尚未提交)。
在崩溃之前,合并到持久性指纹索引110并镜像到缓存的指纹索引154的指纹索引更新可能尚未提交。为了执行从崩溃的恢复,存储在NVRAM 150中的信息可以用于确定缓存的指纹索引154中的哪些部分尚未被提交。
存储在NVRAM 150中的用于在合并操作期间从崩溃恢复的信息包括区段信息164。区段信息164包含标识缓存的指纹索引154的相应区段的区段标识符166。缓存的指纹索引154的“区段”的大小可以大于叶块,例如,区段可以包括多个叶块。在一些示例中,区段可以为图2中所示的日志段的大小(或者可以大于日志段)。在一些示例中,指纹索引更新的提交是在区段的粒度上执行的(即,整个区段被提交或完全未提交)。
区段信息164还包括与相应的区段标识符166相关联的状态指示符168。与对应的区段标识符相关联的状态指示符168指示缓存的指纹索引154的对应的区段是否已被提交。例如,如果状态指示符168具有第一值(例如,“1”或不同的值),则指示缓存的指纹索引154的对应的区段已被提交。例如,如果状态指示符168具有不同的第二值(例如,“0”或另一个值),则指示缓存的指纹索引154的对应的区段尚未被提交。
包含区段标识符和对应的状态指示符的区段信息164的大小与缓存的指纹索引154的区段相比相对较小。因此,在NVRAM 150中存储区段信息164没有消耗NVRAM 150大量的存储空间。
图5是可以由存储控制器103的恢复引擎170执行的恢复过程500的流程图。恢复过程500由恢复引擎170响应于崩溃而发起。崩溃可能由存储在NVRAM 150中的崩溃指示符指示,或者崩溃指示符可以由数据存储系统102的另一个实体提供,如操作系统(OS)、基本输入/输出系统(BIOS)等等。
恢复过程500访问(在502处)区段信息164以识别缓存的指纹索引154的尚未提交的(多个)区段。持久性指纹索引110的(多个)对应的区段也尚未提交,因为如上文进一步所述,指纹索引更新的提交涉及对持久性指纹索引110的更新以及对缓存的指纹索引154的镜像的更新二者的提交。
针对缓存的指纹索引154的尚未提交的(多个)所识别的区段,恢复过程500将(多个)所识别的标识区段提交(在504处)给持久性指纹索引110和缓存的指纹索引154。将(多个)所识别的区段提交给持久性指纹索引110和缓存的指纹索引154指将(多个)所识别的区段的指纹索引条目写入持久性指纹索引110和缓存的指纹索引154,并将这样的被写入的指纹索引条目标记为持久性存储的。
崩溃可能引起主动更新缓冲器106和sync缓冲器108中的指纹索引更新丢失。在一些示例中,主动更新缓冲器106和sync缓冲器108中的指纹索引更新未被恢复。因为主动更新缓冲器106和sync缓冲器108中的指纹索引更新用于重复数据删除的目的,不恢复主动更新缓冲器106和sync缓冲器18中的指纹索引更新可能导致重复数据删除没有识别出数据值的所有重复实例,使得一些重复数据值可能被存储到持久性存储装置112中。然而,在某些场景下不太理想的重复数据删除可能是可接受的,并且可能不会对数据存储系统102的整体性能产生任何明显的影响。
垃圾收集
可以执行垃圾收集以从持久性缓存存储器152中移除缓存的指纹索引154的较早的区段,从而为要添加到缓存的指纹索引154的附加指纹索引更新让出空间。
存储控制器103的垃圾收集器引擎180可以执行垃圾收集。垃圾收集器引擎180可以跟踪缓存的指纹索引154的相应叶块的使用频率。例如,缓存的指纹索引154的相应叶块的使用频率可以在块使用信息172中指示,所述块使用信息可以存储在存储器104中。
块使用信息172包括叶块标识符174和相应的使用指示符176。使用指示符176可以被设置为不同的值,以指示缓存的指纹索引154的对应的叶块的相应的不同使用频率。例如,使用指示符的第一值可以指示对应的叶块具有第一使用频率,使用指示符的第二值可以指示对应的叶块具有大于第一使用频率的第二使用频率,使用指示符的第三值可以指示对应的叶块具有大于第二使用频率的第三使用频率,以此类推。
当访问缓存的指纹索引154的叶块时,存储控制器可以更新块使用信息172中相应的使用指示符176。
图6是根据一些示例的垃圾收集过程600的流程图。例如,垃圾收集过程600可以由垃圾收集器引擎180执行。
垃圾收集过程600可以响应于缓存的指纹索引154已经增长到超过指定阈值(如持久性缓存存储器152的阈值百分比)的大小而被触发。响应于触发事件,垃圾收集过程600可以决定要从持久性缓存存储器152移除缓存的指纹索引154的哪个(哪些)叶块。
垃圾收集过程600访问(在602处)块使用信息172以决定哪些叶块与其他叶块相比较不频繁地被使用。基于块使用信息172,垃圾收集过程600识别(在604处)较不频繁地被使用的(多个)叶块,以供移除。这种识别基于将缓存的指纹索引154的相应叶块的使用指示符的值进行比较。(多个)所识别的叶块的数量可以取决于要释放持久性缓存存储器152中的多大的空间。
(多个)所识别的叶块可以是缓存的指纹索引154的给定区段的一部分。垃圾收集过程600可以将给定区段的(多个)剩余叶块移动(在606处)到缓存的指纹索引154的新区段。给定区段的(多个)剩余叶块指除了较不频繁地被使用的所识别的(多个)叶块以外的叶块。
垃圾收集过程600标记(在608处)给定区段以供移除,使得可以在下次机会(如在数据存储系统102的空闲时间段期间)时从持久性缓存存储器152移除给定区段。
进一步示例
图7是存储有机器可读指令的非暂态机器可读或计算机可读存储介质700的框图,所述机器可读指令在执行时使系统(例如,数据存储系统102或具有一个计算机或多个计算机的另一个计算系统)执行各种任务。
机器可读指令包括重复数据删除指令702,用于使用包括多个块的散列数据结构中的重复数据删除指纹索引执行重复数据删除,其中,所述多个块中的块包括基于相应数据值的内容计算的指纹。如在此所使用的,“散列数据结构”可以指以排序顺序(例如,升序、降序等)存储密钥(例如,部分指纹)的数据结构。散列数据结构的示例是基于日志的散列表。
机器可读指令包括合并指令704,用于在合并操作中,将对重复数据删除指纹索引的更新合并到存储在持久性存储装置中的散列数据结构。
机器可读指令包括镜像和间接块更新指令706,用于作为合并操作的一部分,将更新镜像到缓存存储器中的散列数据结构的缓存的副本中,并在间接块中更新与散列数据结构的缓存的副本中块的位置相关的信息。
在一些示例中,缓存存储器是持久性缓存存储器(例如,图1中的152)。
在一些示例中,间接块存储在易失性存储器(例如,图1中的104)中。
在一些示例中,机器可读指令用于作为重复数据删除的一部分,进一步使用间接块中的位置信息从散列数据结构的缓存的副本取得所述多个块中的块,使用所取得的块获得传入数据值的指纹,并使用获得的指纹对传入数据值执行重复数据删除。
在一些示例中,机器可读指令用于通过确定间接块是否存储在易失性存储器中来对传入数据值执行重复数据删除,并且响应于确定间接块未存储在易失性存储器中,将间接块从缓存存储器复制到易失性存储器中。
在一些示例中,机器可读指令用于响应于合并操作期间的崩溃,确定散列数据结构的缓存的副本的哪个区段尚未提交,并执行区段的恢复。
在一些示例中,机器可读指令用于识别相比于散列数据结构的缓存的副本中的多个块的第二块子集使用得更少的、散列数据结构的缓存的副本中的所述多个块的第一块子集,并对第一块子集执行垃圾收集。
图8是根据一些示例的数据存储系统800的框图。数据存储系统800包括:用于存储具有散列数据结构的持久性指纹索引804的持久性存储装置802、以及用于存储具有散列数据结构的缓存的指纹索引808的持久性缓存存储器806。
数据存储系统800包括用于执行各种任务的存储控制器810。任务包括指纹计算任务812,用于基于用于存储在数据存储系统800中的传入数据值计算指纹。
任务进一步包括指纹索引更新生成任务814,用于基于计算的指纹产生指纹索引更新。任务进一步包括合并任务816,用于执行合并操作以将指纹索引更新合并到持久性指纹索引。
任务进一步包括指纹索引更新镜像和间接块更新任务818,用于作为合并操作的一部分,将指纹索引更新镜像到缓存的指纹索引,并将缓存的指纹索引的已添加了指纹索引更新的叶块的位置信息添加到间接块,其中,位置信息指定叶块在持久性缓存存储器中的位置。
图9是根据一些示例的过程900的流程图,所述过程可以由存储控制器(例如,图1中的103)执行。
过程900包括基于要存储在数据存储系统中的传入数据值计算(在902处)指纹。
过程900包括对传入数据值执行(在904处)重复数据删除,并针对传入数据值的子集产生(在906处)指纹索引更新,所述子集包括与已经存储在持久性存储装置中的数据值不重复的数据值,并且指纹索引更新是基于子集中的传入数据值的指纹来计算的。
过程900包括执行(在908处)合并操作以将指纹索引更新合并到存储在持久性存储装置中的持久性指纹索引,持久性存储装置具有散列数据结构。
作为合并操作的一部分,过程900包括将指纹索引更新镜像(在910)到存储在缓存存储器中的缓存的指纹索引,并将缓存的指纹索引的已添加了指纹索引更新的叶块的位置信息添加(在912处)到间接块,其中,位置信息指定叶块在缓存存储器中的位置,并且缓存的指纹索引具有散列数据结构。
存储介质(例如,图7中的700)可以包括以下各项的任一项或某种组合:半导体存储器设备,如动态或静态随机存取存储器(DRAM或SRAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪速存储器或其他类型的非易失性存储器设备;磁盘,如固定的软盘和可移动盘;另一种磁介质,包括磁带;光学介质,如光盘(CD)或数字视频盘(DVD);或另一类型的存储设备。注意,上文讨论的指令可以在一个计算机可读或机器可读存储介质上提供,或者可替代地,可以在分布在具有可能多个节点的大型系统中的多个计算机可读或机器可读存储介质上提供。这种一个或多个计算机可读或机器可读存储介质被认为是物品(或制品)的一部分。物品或制品可以指任何制造的单个部件或多个部件。一个或多个存储介质可以位于运行机器可读指令的机器中、或者位于远程站点处,可以通过网络从所述远程站点下载机器可读指令以供执行。
在前述描述中,阐述了许多细节以使得理解本文中所公开的主题。然而,可以在没有这些细节中的一些细节的情况下实践实施方式。其他实施方式可以包括上文所讨论的细节的修改和变化。所附权利要求旨在覆盖这样的修改和变化。
Claims (20)
1.一种非暂态机器可读存储介质,包括指令,所述指令在执行时使系统进行以下操作:
使用包括多个块的散列数据结构中的重复数据删除指纹索引执行重复数据删除,其中,所述多个块中的块包括基于相应数据值的内容计算的指纹;
在合并操作中,将对所述重复数据删除指纹索引的更新合并到存储在持久性存储装置中的所述散列数据结构;以及
作为所述合并操作的一部分,将所述更新镜像到缓存存储器中的所述散列数据结构的缓存的副本中,并且在间接块中更新与所述散列数据结构的缓存的副本中的块的位置相关的信息。
2.如权利要求1所述的非暂态机器可读存储介质,其中,所述缓存存储器是持久性缓存存储器。
3.如权利要求1所述的非暂态机器可读存储介质,其中,所述间接块被缓存在易失性存储器中。
4.如权利要求3所述的非暂态机器可读存储介质,其中,存储在所述持久性存储装置中的所述散列数据结构包括包含位置信息的间接块,所述位置信息指示所述多个块在存储在所述持久性存储装置中的所述散列数据结构中的位置。
5.如权利要求1所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述系统进行以下操作:
作为所述重复数据删除的一部分,使用所述间接块中与所述散列数据结构的缓存的副本中的所述块的位置相关的信息,从所述散列数据结构的缓存的副本取得所述多个块中的块;
使用所取得的块获得传入数据值的指纹;以及
使用所获得的指纹来执行所述传入数据值的重复数据删除。
6.如权利要求1所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述系统进行以下操作:
为了对传入数据值执行重复数据删除,确定间接块是否存储在易失性存储器中,其中,所述间接块包含指示所述多个块在所述散列数据结构的缓存的副本中的位置的位置信息;以及
响应于确定所述间接块未存储在所述易失性存储器中,将所述间接块从所述缓存存储器复制到所述易失性存储器中。
7.如权利要求1所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述系统进行以下操作:
响应于所述合并操作期间的崩溃,
确定所述散列数据结构的缓存的副本的哪个区段尚未提交,以及
执行所述区段的恢复。
8.如权利要求7所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述系统进行以下操作:
保持与以下各项相关的指示符:所述散列数据结构的缓存的副本的哪些区段已经提交给存储在所述持久性存储装置中的所述散列数据结构,以及所述散列数据结构的缓存的副本的哪些区段尚未提交给存储在所述持久性存储装置中的所述散列数据结构。
9.如权利要求8所述的非暂态机器可读存储介质,其中,所述指示符存储在非易失性随机存取存储器中,并且其中,所述更新的镜像和所述在间接块中更新与所述散列数据结构的缓存的副本中的块的位置相关的信息不采用所述非易失性随机存取存储器中的B树缓存索引。
10.如权利要求1所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述系统进行以下操作:
识别所述散列数据结构的缓存的副本中的多个块的第一块子集,所述第一块子集相比于所述散列数据结构的缓存的副本中的所述多个块的第二块子集被使用得更少;以及
对所述第一块子集执行垃圾收集。
11.如权利要求10所述的非暂态机器可读存储介质,其中,所述第一块子集和所述第二块子集是所述散列数据结构的缓存的副本的第一区段的一部分,并且其中,执行所述垃圾收集包括:
将所述第二块子集移动到所述散列数据结构的缓存的副本的新区段;以及
标记所述第一区段以供移除。
12.一种数据存储系统,包括:
持久性存储装置,用于存储具有散列数据结构的持久性指纹索引;
持久性缓存存储器,用于存储具有散列数据结构的缓存的指纹索引;以及
存储控制器,用于:
基于用于存储在所述数据存储系统中的传入数据值计算指纹,
基于计算的指纹产生指纹索引更新,
执行合并操作,以将所述指纹索引更新合并到所述持久性指纹索引,以及
作为所述合并操作的一部分,将所述指纹索引更新镜像到所述缓存的指纹索引,并且将所述缓存的指纹索引的已添加了所述指纹索引更新的叶块的位置信息添加到间接块,其中,所述位置信息指定所述叶块在所述持久性缓存存储器中的位置。
13.如权利要求12所述的数据存储系统,其中,所述指纹索引更新中的指纹索引更新将指纹映射到用于传入数据值的相应存储位置指示符。
14.如权利要求12所述的数据存储系统,其中,所述存储控制器用于:
响应于给定传入数据值,访问所述间接块以确定所述缓存的指纹索引的包含针对所述给定传入数据值的指纹索引条目的叶块的位置;以及
使用所述指纹索引条目来执行对所述给定传入数据值的重复数据删除。
15.如权利要求14所述的数据存储系统,其中,在易失性存储器中访问所述间接块。
16.如权利要求12所述的数据存储系统,其中,所述存储控制器用于:
响应于所述合并操作期间的崩溃,
确定所述缓存的指纹索引的哪个区段尚未提交,以及
执行所述区段的恢复。
17.如权利要求12所述的数据存储系统,其中,所述存储控制器用于:
识别所述缓存的指纹索引中的多个叶块的第一叶块子集,所述第一叶块子集相比于所述缓存的指纹索引中的所述多个叶块的第二叶块子集被使用得更少;以及
对所述第一叶块子集执行垃圾收集。
18.如权利要求12所述的数据存储系统,其中,所述存储控制器用于:
响应于给定传入数据值,确定所述缓存的指纹索引的包含针对所述给定传入数据值的指纹索引条目的叶块是否在易失性存储器中,以及
响应于确定所述缓存的指纹索引的包含针对所述给定传入数据值的指纹索引条目的所述叶块不在所述易失性存储器中,访问所述间接块以确定所述叶块的位置,并且将所述叶块取回到所述易失性存储器中。
19.一种包括硬件处理器的数据存储系统的方法,所述方法包括:
基于用于存储在所述数据存储系统中的传入数据值计算指纹;
对所述传入数据值执行重复数据删除,并且对所述传入数据值的子集产生指纹索引更新,所述子集包括与已经存储在持久性存储装置中的数据值不重复的数据值,并且所述指纹索引更新是基于所述子集中的传入数据值的指纹来计算的;
执行合并操作,以将所述指纹索引更新合并到存储在所述持久性存储装置中的持久性指纹索引,所述持久性存储装置具有散列数据结构;以及
作为所述合并操作的一部分,将所述指纹索引更新镜像到存储在缓存存储器中的缓存的指纹索引,并且将所述缓存的指纹索引的已添加了所述指纹索引更新的叶块的位置信息添加到间接块,其中,所述位置信息指定所述叶块在所述缓存存储器中的位置,并且所述缓存的指纹索引具有散列数据结构。
20.如权利要求19所述的方法,包括:
响应于给定传入数据值,访问所述间接块以确定所述缓存的指纹索引的包含针对所述给定传入数据值的指纹索引条目的叶块的位置;以及
使用所述指纹索引条目来执行对所述给定传入数据值的重复数据删除。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/065,192 | 2020-10-07 | ||
US17/065,192 US11593328B2 (en) | 2020-10-07 | 2020-10-07 | Update of deduplication fingerprint index in a cache memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114296630A true CN114296630A (zh) | 2022-04-08 |
CN114296630B CN114296630B (zh) | 2024-07-02 |
Family
ID=80738148
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110407728.6A Active CN114296630B (zh) | 2020-10-07 | 2021-04-15 | 机器可读存储介质、数据存储系统和数据存储系统的方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11593328B2 (zh) |
CN (1) | CN114296630B (zh) |
DE (1) | DE102021108829B4 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210056085A1 (en) * | 2019-08-19 | 2021-02-25 | Gsi Technology Inc. | Deduplication of data via associative similarity search |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150127621A1 (en) * | 2013-11-04 | 2015-05-07 | Falconstor, Inc. | Use of solid state storage devices and the like in data deduplication |
US20160070726A1 (en) * | 2013-09-21 | 2016-03-10 | Oracle International Corporation | Automatic verification and triage of query results |
US20170115883A1 (en) * | 2015-10-21 | 2017-04-27 | Nimble Storage, Inc. | Processing of Incoming Blocks in Deduplicating Storage System |
US20170192864A1 (en) * | 2014-06-09 | 2017-07-06 | Oracle International Corporation | Sequential resilvering of storage devices with reduced restarts |
US20170255643A1 (en) * | 2016-03-02 | 2017-09-07 | Nimble Storage, Inc. | Multiple deduplication domains in network storage system |
CN109416681A (zh) * | 2016-08-29 | 2019-03-01 | 国际商业机器公司 | 使用幽灵指纹进行工作负载优化的重复数据删除 |
US10331561B1 (en) * | 2016-06-29 | 2019-06-25 | Emc Corporation | Systems and methods for rebuilding a cache index |
CN109977111A (zh) * | 2017-12-28 | 2019-07-05 | 英特尔公司 | 采用基于散列和基于树的键-值数据结构的数据管理系统 |
US10503717B1 (en) * | 2014-12-30 | 2019-12-10 | EMC IP Holding Company LLC | Method for locating data on a deduplicated storage system using a SSD cache index |
US20200133800A1 (en) * | 2018-10-26 | 2020-04-30 | Hewlett Packard Enterprise Development Lp | Key-value store on persistent memory |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8285918B2 (en) | 2009-12-11 | 2012-10-09 | Nimble Storage, Inc. | Flash memory cache for data storage device |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US10175894B1 (en) | 2014-12-30 | 2019-01-08 | EMC IP Holding Company LLC | Method for populating a cache index on a deduplicated storage system |
US9436392B1 (en) | 2015-02-17 | 2016-09-06 | Nimble Storage, Inc. | Access-based eviction of blocks from solid state drive cache memory |
US20160283920A1 (en) * | 2015-03-28 | 2016-09-29 | Justin Fisher | Authentication and verification of digital data utilizing blockchain technology |
US10620862B2 (en) * | 2017-03-01 | 2020-04-14 | Tintri By Ddn, Inc. | Efficient recovery of deduplication data for high capacity systems |
US10776276B2 (en) | 2018-11-30 | 2020-09-15 | Hewlett Packard Enterprise Development Lp | Bypass storage class memory read cache based on a queue depth threshold |
US10860232B2 (en) | 2019-03-22 | 2020-12-08 | Hewlett Packard Enterprise Development Lp | Dynamic adjustment of fingerprints added to a fingerprint index |
US11030107B2 (en) | 2019-04-19 | 2021-06-08 | Hewlett Packard Enterprise Development Lp | Storage class memory queue depth threshold adjustment |
US11226904B2 (en) | 2019-04-26 | 2022-01-18 | Hewlett Packard Enterprise Development Lp | Cache data location system |
US11403020B2 (en) | 2019-10-31 | 2022-08-02 | Hewlett Packard Enterprise Development Lp | Increasing sizes of buckets of a fingerprint index |
US11354289B2 (en) | 2019-10-31 | 2022-06-07 | Hewlett Packard Enterprise Development Lp | Merging buffered fingerprint index entries |
US11468030B2 (en) | 2019-10-31 | 2022-10-11 | Hewlett Packard Enterprise Development Lp | Indirect block containing references to blocks of a persistent fingerprint index |
US11307788B2 (en) | 2019-10-31 | 2022-04-19 | Hewlett Packard Enterprise Development Lp | Sampling fingerprints in bins |
-
2020
- 2020-10-07 US US17/065,192 patent/US11593328B2/en active Active
-
2021
- 2021-04-08 DE DE102021108829.1A patent/DE102021108829B4/de active Active
- 2021-04-15 CN CN202110407728.6A patent/CN114296630B/zh active Active
-
2023
- 2023-01-09 US US18/151,522 patent/US11860840B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160070726A1 (en) * | 2013-09-21 | 2016-03-10 | Oracle International Corporation | Automatic verification and triage of query results |
US20150127621A1 (en) * | 2013-11-04 | 2015-05-07 | Falconstor, Inc. | Use of solid state storage devices and the like in data deduplication |
US20170192864A1 (en) * | 2014-06-09 | 2017-07-06 | Oracle International Corporation | Sequential resilvering of storage devices with reduced restarts |
US10503717B1 (en) * | 2014-12-30 | 2019-12-10 | EMC IP Holding Company LLC | Method for locating data on a deduplicated storage system using a SSD cache index |
US20170115883A1 (en) * | 2015-10-21 | 2017-04-27 | Nimble Storage, Inc. | Processing of Incoming Blocks in Deduplicating Storage System |
US20170255643A1 (en) * | 2016-03-02 | 2017-09-07 | Nimble Storage, Inc. | Multiple deduplication domains in network storage system |
US10331561B1 (en) * | 2016-06-29 | 2019-06-25 | Emc Corporation | Systems and methods for rebuilding a cache index |
CN109416681A (zh) * | 2016-08-29 | 2019-03-01 | 国际商业机器公司 | 使用幽灵指纹进行工作负载优化的重复数据删除 |
CN109977111A (zh) * | 2017-12-28 | 2019-07-05 | 英特尔公司 | 采用基于散列和基于树的键-值数据结构的数据管理系统 |
US20200133800A1 (en) * | 2018-10-26 | 2020-04-30 | Hewlett Packard Enterprise Development Lp | Key-value store on persistent memory |
Also Published As
Publication number | Publication date |
---|---|
DE102021108829A1 (de) | 2022-04-07 |
US11593328B2 (en) | 2023-02-28 |
US20230195702A1 (en) | 2023-06-22 |
CN114296630B (zh) | 2024-07-02 |
US11860840B2 (en) | 2024-01-02 |
DE102021108829B4 (de) | 2024-09-26 |
US20220107925A1 (en) | 2022-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11341117B2 (en) | Deduplication table management | |
US10620862B2 (en) | Efficient recovery of deduplication data for high capacity systems | |
US10564850B1 (en) | Managing known data patterns for deduplication | |
US11157372B2 (en) | Efficient memory footprint in deduplicated system storing with content based addressing | |
US8924663B2 (en) | Storage system, computer-readable medium, and data management method having a duplicate storage elimination function | |
US8930307B2 (en) | Method for removing duplicate data from a storage array | |
US11841826B2 (en) | Embedded reference counts for file clones | |
CN113535670B (zh) | 一种虚拟化资源镜像存储系统及其实现方法 | |
US11169968B2 (en) | Region-integrated data deduplication implementing a multi-lifetime duplicate finder | |
US11860840B2 (en) | Update of deduplication fingerprint index in a cache memory | |
US20240143213A1 (en) | Fingerprint tracking structure for storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |