CN116561108A - 用于元数据内务处理操作的日志分组 - Google Patents
用于元数据内务处理操作的日志分组 Download PDFInfo
- Publication number
- CN116561108A CN116561108A CN202210397340.7A CN202210397340A CN116561108A CN 116561108 A CN116561108 A CN 116561108A CN 202210397340 A CN202210397340 A CN 202210397340A CN 116561108 A CN116561108 A CN 116561108A
- Authority
- CN
- China
- Prior art keywords
- container
- log packet
- indexes
- index
- log
- 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
- 238000003860 storage Methods 0.000 claims abstract description 158
- 230000004044 response Effects 0.000 claims abstract description 23
- 238000000034 method Methods 0.000 claims description 45
- 230000008569 process Effects 0.000 claims description 29
- 230000002085 persistent effect Effects 0.000 claims description 26
- 230000008859 change Effects 0.000 claims description 13
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000010923 batch production Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000006837 decompression Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- 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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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
- 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/2282—Tablespace storage structures; Management thereof
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种用于元数据内务处理操作的日志分组。示例实施方式涉及存储系统中的元数据操作。示例包括由重复数据删除存储系统的存储控制器检测内务处理操作,以对存储的去重数据的一组容器索引的数据执行更新;响应于检测到内务处理操作,存储控制器在所述一组容器索引中识别与特定日志分组相关联的多个容器索引,特定日志分组包括多个日志以分别存储对所述多个容器索引的数据的更新;以及由存储控制器维持加载在存储器中的特定日志分组,直到内务处理操作对所述多个容器索引的所有更新都已被存储在特定日志分组的相应日志中。
Description
背景技术
可以应用数据归约技术来减少存储在存储系统中的数据量。示例数据归约技术包括重复数据删除。重复数据删除识别重复的数据单元,并且力图缩减或消除存储在存储系统中的重复数据单元的实例的数量。
附图说明
关于以下附图描述了一些实施方式。
图1是根据一些实施方式的示例存储系统的示意图。
图2是根据一些实施方式的示例数据结构的图示。
图3是根据一些实施方式的示例数据结构的图示。
图4是根据一些实施方式的示例过程的图示。
图5A至图5B是根据一些实施方式的示例数据结构的图示。
图6是根据一些实施方式的存储有指令的示例机器可读介质的图。
图7是根据一些实施方式的示例计算设备的示意图。
图8是根据一些实施方式的示例过程的图示。
在所有附图中,相同的附图标记指代相似但不一定相同的元件。附图不一定是成比例的,并且一些部分的尺寸可以被放大以更清楚地图示所示的示例。此外,附图提供了与描述一致的示例和/或实施方式;然而,描述不限于附图中提供的示例和/或实施方式。
具体实施方式
在本公开中,除非上下文另外明确指示,否则使用术语“一个(a)”、“一种(an)”或“所述(the)”旨在同样包括复数形式。同样地,当在本公开中使用时,术语“包括(includes/including/comprises/comprising)”或“具有(have/having)”指明存在所述元件,但不排除存在或添加其他元件。
在一些示例中,存储系统可以对数据进行重复数据删除以减少存储数据所需的空间量。存储系统可以执行重复数据删除(deduplication)过程,包括将数据流分解为离散的数据单元或“组块(chunk)”。进一步地,存储系统可以确定传入的数据单元的标识符或“指纹”,并且可以确定哪些传入的数据单元是先前存储的数据单元的复制品。在数据单元是复制品的情况下,存储系统可以存储对先前数据单元的引用,而不是存储重复的传入数据单元。
如本文所使用的,“指纹”是指通过对数据单元的内容应用函数而得到的值(其中“内容”可以包括数据单元的内容的全部或子集)。可以应用的函数的示例包括基于传入的数据单元产生散列值的散列函数。散列函数的示例包括密码散列函数,如安全散列算法2(SHA-2)散列函数(例如,SHA-224、SHA-256、SHA-384等)。在其他示例中,可以采用其他类型的散列函数或其他类型的指纹函数。
“存储系统”可以包括存储设备或存储设备阵列。存储系统还可以包括管理对(多个)存储设备的访问的(多个)存储控制器。“数据单元”可以指可以在存储系统中单独识别的任何数据部分。在一些情况下,数据单元可以指组块、组块的集合、或任何其他数据部分。在一些示例中,存储系统可以将数据单元存储在持久性存储装置中。可以使用一种或多种(多个)持久性(例如,非易失性)存储设备(比如(多个)基于磁盘的存储设备(例如,(多个)硬盘驱动器(HDD))、(多个)固态设备(SSD)(比如(多个)闪速存储设备)等或者其组合)来实施持久性存储装置。
“控制器”可以指硬件处理电路,其可以包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列、数字信号处理器或其他硬件处理电路中的任一项或某种组合。可替代地,“控制器”可以指硬件处理电路与可在硬件处理电路上执行的机器可读指令(软件和/或固件)的组合。
在一些示例中,重复数据删除存储系统可以使用元数据以用于处理一个或多个入站数据流(例如,多个并发的入站数据流)。例如,这样的元数据可以包括指定特定数据单元的接收顺序(例如,在数据流中)的数据配方(本文也称为“清单”)。随后,响应于读取请求,重复数据删除系统可以使用一组清单(本文也称为“项目元数据”)来确定数据单元的接收顺序,从而可以重新创建原始数据流。相应地,该组清单可以是原始数据流的表示。清单可以包括一系列记录,每个记录代表一组特定的数据单元。清单中的记录可以包括标识索引的一个或多个字段(本文也称为“指针信息”),这些索引包括数据单元的存储信息。例如,索引可以包括一个或多个字段,该字段指定所存储的数据单元的位置信息(例如,容器、偏移量等)、所存储的数据单元的压缩和/或加密特性等。进一步地,索引可以包括引用计数,所述引用计数指示引用每个数据单元的清单的数量。
在一些示例中,重复数据删除存储系统可以执行内务处理(housekeeping)过程以维持所包括的元数据的准确性。例如,当数据单元从给定清单中被删除时(例如由于对该清单所代表的数据流或项目的更改而导致),可以使数据单元的引用计数递减一(即,表明引用该数据单元的清单减少一个)。在一些示例中,这种内务处理操作可以涉及将索引加载到存储器中以使包括在索引中的引用计数递减。进一步地,在使引用计数递减之后,可以将索引写入持久性存储装置(例如,在存储器清除(flush)期间)。在一些示例中,可能必须将整个索引作为整体单元写入持久性存储装置,以保持索引的加密和/或压缩,维持与存储系统的兼容性等。然而,在一些示例中,当索引被加载到存储器中时,引用计数更改可能仅影响索引的相对较小部分(例如,索引中的一万个记录中的一个记录)。因此,在这样的示例中,将整个索引写入持久性存储装置将消耗的系统处理时间和带宽比仅将更改的部分写入持久性存储装置所需的系统处理时间和带宽多得多。相应地,在一些示例中,对引用计数的更改可以被存储在与索引相关联的日志中,而不是存储在索引本身中。因为日志被限制为记录对索引(而不是索引的全部数据)的更改,所以将日志写入持久性存储装置将消耗的处理时间和带宽比将整个索引写入持久性存储装置的处理时间和带宽相对更少。
在一些示例中,可以由多个日志形成日志分组,其中,日志分组中的每个日志与相应的索引相关联,该相应的索引存储与存储在重复数据删除系统中的单个对象(例如,文件、表等)相关联的元数据。因此,日志分组可以仅包括与单个存储对象相关联的日志。在一些示例中,对单个存储对象的数据单元进行的任何元数据更改更有可能在彼此接近的时间发生(即,在时间上接近)。相应地,通过将整个日志分组(例如,在时间上彼此接近地被写入的一个或多个日志)写入持久性存储装置、而不是将各个日志逐个写入持久性存储装置,可以减少对持久性存储装置的写入操作的总数。
在一些示例中,内务处理过程可以涉及成批处理清单,其中,每批包括多个清单,所述多个清单共同地表示提供给系统的连续范围的用户数据。这种批处理可以减少为相同索引执行的加载和写入操作的数量。在一些示例中,批处理可以包括:将针对一批的所有清单加载到存储器中,识别受到对清单更改的影响的一组索引,将所识别的索引加载到存储器中,将相关联的日志分组(即,包括与所识别的索引相关联的日志的日志分组)加载到存储器中,更新日志,以及将日志分组写入存储装置。然而,在一些示例中,单批的处理可能涉及针对每个日志分组的多个加载和写入操作(即,从存储装置读取到存储器,以及从存储器写入到存储装置)。例如,当处理与特定日志分组相关联的一组索引时,处理可能按照在不同时间点更新日志分组的顺序进行。因此,日志分组可能从存储器中被移除(即,以便为(多个)其他日志分组提供存储器空间),并然后再次被重新加载到存储器中以进行进一步更新。因此,在这种示例中,在批处理期间,针对同一日志分组的多个加载和写入操作所消耗的系统处理时间和带宽可能会比仅将日志分组加载到存储器中(和将日志分组写入存储装置)一次所需的系统处理时间和带宽更多。
根据本公开的一些实施方式,重复数据删除存储系统可以执行内务处理操作,该内务处理操作包括根据与一组索引关联的日志分组对这些索引进行排序,然后根据这些索引的排序顺序将这些索引加载到存储器中。在处理与每个日志分组相关联的索引期间,可以将该日志分组维持(或本文中的“固定的”)在存储器中(该日志分组即为本文中的“被固定的”日志分组)。被固定的日志分组可以存储对包括在相关联的索引中的引用计数的更改。在一些实施方式中,倒数计数器可以用相关联的索引的数量来初始化,所述相关联的索引具有对其引用计数的更改。在每个索引完成时,倒数计数器可以递减一。因此,当倒数计数器等于零时,日志分组已更新为包括相关联的索引的所有引用计数更改,并且作为响应,日志分组从存储器中被移除并写入存储装置。以这种方式,所公开的技术可以减少将日志分组加载到存储器(以及将日志分组写入存储装置)的实例的数量,并且从而可以提高重复数据删除存储系统的性能。
图1-示例存储系统
图1示出了根据一些实施方式的包括存储控制器110、存储器115和持久性存储装置140的存储系统100的示例。如图所示,持久性存储装置140可以包括任何数量的清单150、索引160和数据容器170。持久性存储装置140可以包括一个或多个非暂态存储介质,如硬盘驱动器(HDD)、固态驱动器(SSD)、光盘等、或其组合。存储器115可以用诸如随机存取存储器(RAM)等半导体存储器实施。在一些示例中,存储控制器110可以经由硬件(例如,电子电路)或硬件和编程的组合(例如,包括至少一个处理器和可由该至少一个处理器执行并存储在至少一个机器可读存储介质上的指令)来实施。
在一些实施方式中,存储系统100可以对所存储的数据执行重复数据删除。例如,存储控制器110可以将输入数据流划分成数据单元,并且可以在数据容器170中存储每个数据单元的至少一个副本(例如,通过将数据单元附加到容器170的末端)。在一些示例中,每个数据容器170可以被划分成多个部分(本文也称为“实体”)。
在一个或多个实施方式中,存储控制器110可以为每个数据单元生成指纹。例如,指纹可以包括基于数据单元的完整或部分散列值。为了确定传入的数据单元是否是存储的数据单元的复制品,存储控制器110可以将针对传入的数据单元生成的指纹与存储的数据单元的指纹进行比较。如果该比较产生匹配,则存储控制器110可以确定存储系统100已经存储了传入的数据单元的复制品。
如图1所示,持久性存储装置140可以存储清单150、索引160、数据容器170和日志分组120。在一些实施方式中,存储控制器110可以生成清单150以记录数据单元的接收顺序。进一步地,清单150可以包括指示与每个数据单元相关联的索引160的指针或其他信息。在一些实施方式中,相关联的索引160可以指示数据单元的存储位置。例如,相关联的索引160可以包括指定数据单元以特定偏移量存储在实体中并且实体以特定偏移量存储在数据容器170中的信息。进一步地,索引160可以包括引用计数,所述引用计数指示引用每个数据单元的清单150的数量。
在一些实施方式中,存储控制器110可以接收读取请求以访问所存储的数据,并且作为响应可以访问清单150以确定构成原始数据的数据单元的序列。存储控制器110然后可以使用包括在清单150中的指针数据来识别与数据单元相关联的索引160。进一步地,存储控制器110可以使用包括在所识别的索引160中的信息(以及包括在清单150中的信息)来确定数据单元(例如,数据容器170、实体、偏移量等)的存储位置,并且然后可以从所确定的位置中读取数据单元。
在一些实施方式中,日志130可以与每个索引160相关联。每个日志130可以包括这样的信息,该信息指示对存储在与日志130相关联的索引160中的数据的更改。例如,当存在于存储器115中的索引160的副本被修改以反映对元数据的更改时,该更改也可以被记录为相关联的日志130中的条目。在一些实施方式中,多个日志130可以分组到日志分组120中,所述日志分组120与存储在重复数据删除系统中的单个文件或对象相关联。例如,多个日志可以对应于索引,所述索引存储与单个文件相关联的元数据。
在一些实施方式中,存储控制器110可以对一批清单150执行内务处理操作(例如,响应于命令或请求,基于周期性时间表等)。内务处理操作可以涉及更新(例如,包括在索引160中的)引用计数以反映(多个)数据单元从清单150中的删除(例如,由于对清单150所表示的数据流或项目的更改)。在一些实施方式中,存储控制器110可以识别由内务处理操作的该批清单150引用的一组索引160,并且可以生成工作映射180,该工作映射180指示由该批清单150引用的每个索引160中的引用计数更改。进一步地,存储控制器110可以使用存储的查找表186来识别与那些索引160相关联的日志分组120,并且可以根据与索引160相关联的日志分组120(例如,根据日志分组120的标识符)对这些索引160进行排序。
在一些实施方式中,存储控制器110可以将日志分组120加载到存储器115中,并且将倒数计数器182(“CD计数器”)设置为与该日志分组120相关联的索引160的数量。然后,存储控制器110可以根据排序顺序处理索引160,这包括:针对每个索引160,根据工作映射180来更新日志分组120以包括该索引160的引用计数更改。针对已完成的每个索引160,存储控制器110可以使倒数计数器182递减一。当倒数计数器182达到零(即,日志分组120已更新为包括其相关联的索引160的所有引用计数更改)时,存储控制器110将日志分组120写入持久性存储装置140,并且从存储器115中移除日志分组120。以这种方式,存储控制器110可以减少在内务处理过程期间将各个日志130(和日志分组120)加载到存储器115中和写入持久性存储装置140的次数。所公开的内务处理技术将在下面参考图2至图8进一步讨论。
图2-示例数据结构
现在参考图2,示出了根据一些实施方式的在重复数据删除中使用的示例数据结构200的图示。如图所示,数据结构200可以包括项目元数据202、清单记录210、容器索引220和容器250。在一些实施方式中,项目元数据202可以包括多个清单记录210、和查找表205。在一些示例中,清单记录210、容器索引220、容器250和查找表205可以大体上分别对应于清单150、索引160、数据容器170和查找表186(如图1所示)的示例实施方式。在一些示例中,数据结构200可以由存储控制器110(如图1所示)生成和/或管理。
如图2所示,在一些示例中,清单记录210可以包括各种字段,如偏移量、长度、容器索引和单元地址或指纹。在一些实施方式中,每个容器索引220可以包括任何数量的数据单元记录230和实体记录240。每个数据单元记录230可以包括各种字段,如指纹(例如,数据单元的散列)、单元地址、实体标识符、单元偏移量(即,数据单元在实体内的偏移量)、引用计数值、单元长度等或其组合。在一些示例中,引用计数值可以指示引用数据单元记录230的清单记录210的数量。进一步地,每个实体记录240可以包括各种字段,如实体标识符、实体偏移量(即,实体在容器内的偏移量)、存储长度(即,数据单元在实体内的长度)、解压缩长度、校验和值和压缩/加密信息(例如,压缩类型、加密类型等)。在一些实施方式中,每个容器250可以包括任何数量的实体260,并且每个实体260可以包括任何数量的存储的数据单元。
在一个或多个实施方式中,数据结构200可以用于取得存储的去重数据。例如,读取请求可以指定给定文件中的数据的偏移量和长度。可以将这些请求参数与特定清单记录210的偏移量和长度字段进行匹配。然后可以将特定清单记录210的容器索引和单元地址与包括在容器索引220中的特定数据单元记录230进行匹配。进一步地,可以将特定数据单元记录230的实体标识符与特定实体记录240的实体标识符进行匹配。此外,可以使用特定实体记录240的一个或多个其他字段(例如,实体偏移量、存储长度、校验和等)来识别容器250和实体260,然后可以从所识别的容器250和实体260中读取数据单元。
在一些实施方式中,查找表205可以是标识索引及其相关联的日志分组的存储结构。例如,查找表205可以包括多个条目,每个条目指定特定索引,并且还指定特定日志分组,所述特定日志分组包括用于存储针对该特定索引的元数据更改的日志。在一些实施方式中,可以在最初将日志分组分配给索引时(例如,在创建索引时)将每个条目添加到查找表205。下文参考图5A讨论查找表205的示例。尽管为了简化图2中的图示,每种仅示出了一个,但是数据结构200可以包括项目元数据202的多个实例,每个实例包括或指向一个或多个清单记录210。在这种示例中,数据结构200可以包括多个清单记录210。清单记录210可以引用多个容器索引220,每个容器索引对应于多个容器250之一。每个容器索引220可以包括一个或多个数据单元记录230以及一个或多个实体记录240。
图3-示例数据结构
现在参考图3,示出了包括日志分组310和多个索引330的存储器115的图示。如图所示,日志分组310包括多个日志320。在一些示例中,日志分组310、日志320和索引330可以大体上分别对应于日志分组120、日志130和索引160(如图1所示)的示例实施方式。
在一些实施方式中,每个日志320可以与对应的索引330相关联,并且可以记录对存储在对应索引330中的元数据的更改。进一步地,对于每个日志分组310,所有对应的索引330都可以与单个存储对象(例如,用户备份、文档、数据库表、数据文件等)相关联。例如,所有的对应索引330可以包括用于被存储在重复数据删除系统(例如,图1中所示的存储系统100)中的单个文件中所包括的数据单元的元数据。在一些实施方式中,索引330与日志分组310之间的关联可以记录在存储的查找表(例如,图1中所示的存储的查找表186)的条目中。
在一些实施方式中,每个日志320可以包括或与版本号325相关联。进一步地,每个索引330可以包括或与版本号335相关联。在一些实施方式中,可以将版本号325与版本号335进行比较以确定日志320或相关联的索引330是否反映了元数据的最新版本。例如,如果版本号325大于版本号335,则可以确定包括在日志320中的更改数据反映了比存储在索引330中的元数据更加新的元数据状态。如果是这样,则可以更新索引330以包括记录在日志320中的更改。然而,如果版本号325小于版本号335,则可以确定包括在日志320中的更改数据反映了比存储在索引330中的元数据更加旧的元数据状态。在这种情况下,可以清除日志320,而不更新索引330。在一些实施方式中,可以响应于将日志320或相关联的索引330从持久性存储装置加载到存储器中(例如,从持久性存储装置140到存储器115中,如图1所示)来执行版本号325与版本号335的比较。
在一个或多个实施方式中,可以在存储的参数(例如,用户设置、配置变量等)中指定包括在日志分组310中的日志320的数量。在一些示例中,可以调整或调节该参数以修改存储系统中的输入/输出(I/O)操作的性能特性。例如,可以增大该参数以尝试获得相对更低频率的相对较大尺寸的写入操作。在另一示例中,可以减小该参数以尝试获得相对更高频率的相对较小尺寸的写入操作。
图4-示例元数据内务处理过程
现在参考图4,示出了根据一些实施方式的示例元数据内务处理的过程400。过程400可以由执行指令的存储控制器110执行。可以以硬件或硬件与编程的组合(例如,可由(多个)处理器执行的机器可读指令)的方式来实施过程400。机器可读指令可以存储在如光学存储设备、半导体存储设备或磁性存储设备等非暂态计算机可读介质中。机器可读指令可以由单个处理器、多个处理器、单个处理引擎、多个处理引擎等来执行。为了便于说明,下面参考示出了根据一些实施方式的示例的图1至图3来描述过程400的细节。然而,其他实施方式也是可能的。
框410可以包括在内务处理操作期间将一批清单加载到存储器中。框415可以包括识别在这批清单中引用的索引并将这些索引加载到存储器中。例如,参考图1,存储控制器110可以(例如从内部进程、周期性定时器、客户端等)接收命令或请求以对一批清单150执行内务处理过程(例如,以减少对于不再包括在清单150中的数据单元的引用计数)。响应于命令或请求,存储控制器110可以识别由这批清单150引用的一组索引160,并且可以将所识别的索引160加载到存储器115中。
再次参考图4,框420可以包括在存储器中生成工作映射以记录每个索引中的引用计数更改。框425可以包括从存储器中卸载这批清单。例如,参考图1,存储控制器110可以使用这批清单150来确定每个索引160的引用计数更改(例如,针对索引160所引用的每个数据单元),并且可以将该信息存储在工作映射180中。在与每个清单150相关联的更改被包括在工作映射180中之后,存储控制器110可以从存储器115中移除该清单150。
再次参考图4,框430可以包括使用存储的查找表来识别与索引相关联的日志分组。框435可以包括根据相关联的日志分组将索引排序为排序顺序。框440可以包括针对每个日志分组,确定与该日志分组相关联的索引的计数。例如,参考图1,存储控制器110可以使用存储的查找表186来识别与索引160相关联的日志分组120,并且可以根据与索引160相关联的日志分组120(例如,根据日志分组120的标识符)对这些索引160进行排序。存储控制器110还可以针对每个日志分组120确定包括在工作映射中的(即,具有被内务处理过程更改的引用计数的)相关联的索引160的数量。
再次参考图4,在框450处,可以进入循环(由框450、460、465、470、475和480定义的循环)以按照(在框435处确定的)排序顺序来处理每个索引。框460可以包括如果当前索引是针对给定日志分组要处理的初始(即,第一个)索引,则将该日志分组加载到存储器中,并且将倒数计数器设置为(在框440处确定的)索引的数量。例如,参考图1,存储控制器110可以确定正在处理新的索引160,并且这个新的索引160是针对特定日志分组120的要按照排序顺序处理的第一个索引160。相应地,存储控制器110可以将日志分组120加载到存储器115中,并且可以将倒数计数器182(“CD计数器”)设置为等于与该日志分组120相关联的索引160的计数。在一些实施方式中,存储控制器110可以将日志分组120维持或“固定”在存储器115中,直到所有引用计数更改都已经包括在日志分组120中为止。
再次参考图4,框465可以包括更新日志分组以存储来自工作映射的引用计数更改。框470可以包括当索引的更改完成时使倒数计数器递减。框475可以包括当倒数计数器达到零时,将当前日志分组写入存储装置,并从存储器中移除当前日志分组。例如,参考图1,存储控制器110可以更新固定在存储器115中的日志分组120以包括针对当前索引160的引用计数更改,如工作映射180所指示的。一旦当前索引160的所有更改都完成(即,被存储在日志分组120中),存储控制器110就可以使倒数计数器182递减一。如果倒数计数器182达到零(即,日志分组120已更新为包括相关联的索引160的所有引用计数更改),则存储控制器110可以将日志分组120写入持久性存储装置140,并且可以从存储器115中移除日志分组120。
再次参考图4,决策框480可以包括确定是否所有索引都已被处理。如果是这样,则过程400可以完成。否则,如果尚未处理完所有索引,则过程400可以返回到框450(即,开始处理另一索引)。例如,参考图1,存储控制器110可以根据排序顺序继续处理索引160,直到所有索引160都被处理为止。以这种方式,存储控制器110可以执行具有数量减少的将日志分组120加载到存储器115中的实例和数量减少的将日志分组160写入持久性存储装置140的实例的内务处理过程。
图5A至图5B-示例数据结构
现在参考图5A,示出了查找表186的示例实施方式。如图所示,查找表186可以包括多个条目或行。每个条目可以与特定容器索引相对应。进一步地,每个条目可以标识被分配给特定容器索引的日志分组。在一些实施方式中,可以在最初将日志分组分配给索引时(例如,在创建索引时)将每个条目添加到查找表186。进一步地,在一些实施方式中,查找表186可以持久地存储在项目元数据中(例如,在图中所示的持久性存储装置140中)。
现在参考图5B,示出了工作映射180的示例实施方式。如图所示,工作映射180可以包括多个条目或行,每个条目对应于包括在特定容器索引中的特定引用计数(即,针对特定地址或位置)。进一步地,每个条目可以指定每个引用计数的更改量。在一些实施方式中,可以在内务处理过程期间将每个条目添加到工作映射180。例如,参考图1,存储控制器110可以使用加载到存储器中的清单150来确定每个索引160的引用计数更改(例如,针对索引160所引用的每个数据单元),并且可以将该信息存储在工作映射180的对应条目中。在一些实施方式中,工作映射180可以仅存储在存储器115中,并且可以在完成内务处理过程之后删除。
图6-示例机器可读介质
图6示出了根据一些实施方式的存储指令610-630的机器可读介质600。指令610-630可以由单个处理器、多个处理器、单个处理引擎、多个处理引擎等来执行。机器可读介质600可以是非暂态存储介质,如光学存储介质、半导体存储介质或磁性存储介质。
可以执行指令610以检测内务处理操作,以对存储的去重数据的一组容器索引的数据执行更新。可以执行指令620以响应于检测到内务处理操作而在这组容器索引中识别与特定日志分组相关联的多个容器索引,该特定日志分组包括多个日志以分别存储对该多个容器索引的数据的更新。可以执行指令630以维持加载到存储器中的特定日志分组,直到内务处理操作对该多个容器索引的所有更新都已被存储在特定日志分组的相应日志中为止。
例如,参考图1,存储控制器110可以接收针对一批清单150执行内务处理过程的命令或请求。作为响应,存储控制器110可以识别由这批清单150引用的一组索引160。进一步地,存储控制器110可以识别与索引160相关联的日志分组120,并且可以根据与索引160相关联的日志分组120对这些索引160进行排序。此外,存储控制器110可以将日志分组120加载到并维持在存储器115中,直到所有引用计数更改都已经被包括在日志分组120中为止。
图7-示例计算设备
图7示出了示例计算设备700的示意图。在一些示例中,计算设备700可以大体上对应于存储系统100(如图1所示)的一些或全部。如图所示,计算设备700可以包括硬件处理器702、存储器704以及包括指令710-730的机器可读存储装置705。机器可读存储装置705可以是非暂态介质。指令710-730可以由硬件处理器702或者由硬件处理器702中所包括的处理引擎执行。
可以执行指令710以检测内务处理操作,以对存储的去重数据的一组容器索引的数据执行更新。可以执行指令720以响应于检测到内务处理操作而在这组容器索引中识别与特定日志分组相关联的多个容器索引,该特定日志分组包括多个日志以分别存储对该多个容器索引的数据的更新。可以执行指令730以维持加载到存储器中的特定日志分组,直到内务处理操作对该多个容器索引的所有更新都已被存储在特定日志分组的相应日志中为止。
图8-示例过程
现在参考图8,示出了根据一些实施方式的示例过程800。在一些示例中,可以使用存储控制器110(图1所示)来执行过程800。可以以硬件或硬件与编程的组合(例如,可由(多个)处理器执行的机器可读指令)的方式来实施过程800。机器可读指令可以存储在如光学存储设备、半导体存储设备或磁性存储设备等非暂态计算机可读介质中。机器可读指令可以由单个处理器、多个处理器、单个处理引擎、多个处理引擎等来执行。为了便于说明,下面可以参考示出了根据一些实施方式的示例的图1至图3来描述过程800的细节。然而,其他实施方式也是可能的。
框810可以包括由重复数据删除存储系统的存储控制器检测内务处理操作,以对存储的去重数据的一组容器索引的数据执行更新。框820可以包括响应于检测到内务处理操作,存储控制器在这组容器索引中识别与特定日志分组相关联的多个容器索引,该特定日志分组包括多个日志以分别存储对该多个容器索引的数据的更新。框830可以包括由存储控制器维持加载到存储器中的特定日志分组,直到内务处理操作对该多个容器索引的所有更新都已被存储在特定日志分组的相应日志中为止。在框830之后,过程800可以完成。
根据本文所描述的实施方式,重复数据删除存储系统可以执行内务处理操作,该内务处理操作包括根据与一组索引关联的日志分组对这些索引进行排序,然后根据这些索引的排序顺序将其加载到存储器中。在处理与每个日志分组相关联的索引期间,可以将该日志分组维持在存储器中。被固定的日志分组可以存储对包括在相关联的索引中的引用计数的更改。在一些实施方式中,倒数计数器可以用相关联的索引的数量来初始化,所述相关联的索引具有对其引用计数的更改。当每个索引完成时,可以使倒数计数器递减。因此,当倒数计数器等于零时,日志分组已更新为包括相关联的索引的所有引用计数更改。相应地,将日志分组从存储器中移除,并写入存储装置。以这种方式,所公开的技术可以减少将日志分组加载到存储器中的实例的数量以及将日志分组写入存储装置的实例的数量,并且从而可以提高重复数据删除存储系统的性能。
注意,尽管图1至图8示出了各种示例,但是实施方式在这方面不受限制。例如,参考图1,可以设想存储系统100可以包括附加的设备和/或部件、更少的部件、不同的部件、不同的布置等。在另一示例中,可以设想上述存储控制器110的功能可被包括在存储系统100的任何另一引擎或软件中。其他组合和/或变化也是可能的。
数据和指令存储在被实施为一个或多个计算机可读或机器可读存储介质的相应存储设备中。存储介质包括不同形式的非暂态存储器,包括:半导体存储器设备,比如动态随机存取存储器或静态随机存取存储器(DRAM或SRAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪速存储器;磁盘,比如硬盘、软盘和可移动盘;其他磁性介质,包括磁带;光学介质,比如光盘(CD)或数字视盘(DVD);或者其他类型的存储设备。
注意,上文讨论的指令可以在一个计算机可读或机器可读存储介质上提供,或者可替代地,可以在分布在具有可能的多个节点的大型系统中的多个计算机可读或机器可读存储介质上提供。这种一个或多个计算机可读或机器可读存储介质被认为是物品(或制品)的一部分。物品或制品可以指任何制造的单个部件或多个部件。一个或多个存储介质可以位于运行机器可读指令的机器中、或者位于远程站点处,可以通过网络从所述远程站点下载机器可读指令以供执行。
在前述描述中,阐述了许多细节以使得理解本文中所公开的主题。然而,可以在没有这些细节中的一些细节的情况下实践实施方式。其他实施方式可以包括上文所讨论的细节的修改和变化。所附权利要求旨在覆盖这样的修改和变化。
Claims (20)
1.一种存储系统,包括:
处理器;
存储器;以及
存储指令的机器可读存储装置,所述指令能够由所述处理器执行以进行以下操作:
检测内务处理操作以对存储的去重数据的一组容器索引的数据执行更新;
响应于检测到所述内务处理操作,在所述一组容器索引中识别与特定日志分组相关联的多个容器索引,所述特定日志分组包括多个日志以分别存储对所述多个容器索引的数据的更新;以及
维持加载在所述存储器中的所述特定日志分组,直到所述内务处理操作对所述多个容器索引的所有更新都已被存储在所述特定日志分组的相应日志中。
2.如权利要求1所述的存储系统,其中,所述内务处理操作基于一批清单来更新包括在所述一组容器索引中的引用计数,并且其中,所述一组容器索引被所述一批清单引用。
3.如权利要求1所述的存储系统,包括能够由所述处理器执行以进行以下操作的指令:
将所述一组容器索引加载在所述存储器中;
确定与所述一组容器索引相关联的多个引用计数更改;以及
基于所述多个引用计数更改来生成工作映射。
4.如权利要求1所述的存储系统,包括能够由所述处理器执行以进行以下操作的指令:
使用存储的查找表识别与所述一组容器索引相关联的多个日志分组;以及
根据与所述一组容器索引相关联的日志分组将所述一组容器索引排序为经排序的顺序。
5.如权利要求4所述的存储系统,包括能够由所述处理器执行以进行以下操作的指令:
针对所述多个日志分组中的每个日志分组,确定与该日志分组相关联的容器索引的计数。
6.如权利要求5所述的存储系统,包括能够由所述处理器执行以进行以下操作的指令:
根据所述经排序的顺序选择特定容器索引,其中,所述特定容器索引与特定日志分组相关联;以及
响应于确定所述特定容器索引是针对所述特定日志分组要处理的初始容器索引:
将所述特定日志分组加载在所述存储器中;以及
将倒数计数器设置为等于与所述特定日志分组相关联的容器索引的所述计数。
7.如权利要求6所述的存储系统,包括能够由所述处理器执行以进行以下操作的指令:
更新所述特定日志分组以存储与所述特定容器索引相关联的引用计数更改;以及
响应于确定所述特定日志分组包括与所述特定容器索引相关联的所有引用计数更改,使所述倒数计数器递减。
8.如权利要求7所述的存储系统,包括能够由所述处理器执行以进行以下操作的指令:
响应于确定所述倒数计数器已达到零:
将所述特定日志分组写入持久性存储装置;以及
将所述特定日志分组从所述存储器移除。
9.一种方法,包括:
由重复数据删除存储系统的存储控制器检测内务处理操作,以对存储的去重数据的一组容器索引的数据执行更新;
响应于检测到所述内务处理操作,所述存储控制器在所述一组容器索引中识别与特定日志分组相关联的多个容器索引,所述特定日志分组包括多个日志以分别存储对所述多个容器索引的数据的更新;以及
由所述存储控制器维持加载在存储器中的所述特定日志分组,直到所述内务处理操作对所述多个容器索引的所有更新都已被存储在所述特定日志分组的相应日志中。
10.如权利要求9所述的方法,其中,所述内务处理操作基于一批清单来更新包括在所述一组容器索引中的引用计数,并且其中,所述一组容器索引被所述一批清单引用。
11.如权利要求9所述的方法,进一步包括:
将所述一组容器索引加载在所述存储器中;
确定与所述一组容器索引相关联的多个引用计数更改;以及
基于所述多个引用计数更改来生成工作映射。
12.如权利要求9所述的方法,进一步包括:
使用存储的查找表识别与所述一组容器索引相关联的多个日志分组;以及
根据与所述一组容器索引相关联的日志分组将所述一组容器索引排序为经排序的顺序。
13.如权利要求12所述的方法,进一步包括:
针对所述多个日志分组中的每个日志分组,确定与该日志分组相关联的容器索引的计数;
根据所述经排序的顺序选择特定容器索引,其中,所述特定容器索引与特定日志分组相关联;以及
确定所述特定容器索引是否是针对所述特定日志分组要处理的初始容器索引;以及
响应于确定所述特定容器索引是针对所述特定日志分组要处理的所述初始容器索引:
将所述特定日志分组加载在所述存储器中;以及
将倒数计数器设置为等于与所述特定日志分组相关联的容器索引的所述计数。
14.如权利要求13所述的方法,进一步包括:
更新所述特定日志分组以包括与所述特定容器索引相关联的引用计数更改;以及
响应于确定所述特定日志分组包括与所述特定容器索引相关联的所有引用计数更改,使所述倒数计数器递减。
15.如权利要求14所述的方法,进一步包括:
确定所述倒数计数器是否已达到零;以及
响应于确定所述倒数计数器已达到零:
将所述特定日志分组写入持久性存储装置;以及
将所述特定日志分组从所述存储器移除。
16.一种存储指令的非暂态机器可读介质,所述指令在执行时使处理器进行以下操作:
检测内务处理操作以对存储的去重数据的一组容器索引的数据执行更新;
响应于检测到所述内务处理操作,在所述一组容器索引中识别与特定日志分组相关联的多个容器索引,所述特定日志分组包括多个日志以分别存储对所述多个容器索引的数据的更新;以及
维持加载在存储器中的所述特定日志分组,直到所述内务处理操作对所述多个容器索引的所有更新都已被存储在所述特定日志分组的相应日志中。
17.如权利要求16所述的非暂态机器可读介质,其中,所述内务处理操作基于一批清单来更新包括在所述一组容器索引中的引用计数,并且其中,所述一组容器索引被所述一批清单引用。
18.如权利要求16所述的非暂态机器可读介质,包括在执行时使所述处理器执行以下操作的指令:
将所述一组容器索引加载在所述存储器中;
确定与所述一组容器索引相关联的多个引用计数更改;
基于所述多个引用计数更改来生成工作映射;
使用存储的查找表识别与所述一组容器索引相关联的多个日志分组;以及
根据与所述一组容器索引相关联的日志分组将所述一组容器索引排序为经排序的顺序。
19.如权利要求18所述的非暂态机器可读介质,包括在执行时使所述处理器执行以下操作的指令:
针对所述多个日志分组中的每个日志分组,确定与该日志分组相关联的容器索引的计数;
根据所述经排序的顺序选择特定容器索引,其中,所述特定容器索引与特定日志分组相关联;以及
响应于确定所述特定容器索引是针对所述特定日志分组要处理的初始容器索引:
将所述特定日志分组加载在所述存储器中;以及
将倒数计数器设置为等于与所述特定日志分组相关联的容器索引的所述计数。
20.如权利要求19所述的非暂态机器可读介质,包括在执行时使所述处理器执行以下操作的指令:
更新所述特定日志分组以存储与所述特定容器索引相关联的引用计数更改;
响应于确定所述特定日志分组包括与所述特定容器索引相关联的所有引用计数更改,使所述倒数计数器递减;以及
响应于确定所述倒数计数器已达到零:
将所述特定日志分组写入持久性存储装置;以及
将所述特定日志分组从所述存储器移除。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/586,131 US12019620B2 (en) | 2022-01-27 | 2022-01-27 | Journal groups for metadata housekeeping operation |
US17/586,131 | 2022-01-27 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116561108A true CN116561108A (zh) | 2023-08-08 |
Family
ID=87068389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210397340.7A Pending CN116561108A (zh) | 2022-01-27 | 2022-04-15 | 用于元数据内务处理操作的日志分组 |
Country Status (3)
Country | Link |
---|---|
US (1) | US12019620B2 (zh) |
CN (1) | CN116561108A (zh) |
DE (1) | DE102022108668A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11940882B2 (en) | 2022-07-25 | 2024-03-26 | Hewlett Packard Enterprise Development Lp | Migration of journal groups in a storage system |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4819156A (en) | 1986-06-13 | 1989-04-04 | International Business Machines Corporation | Database index journaling for enhanced recovery |
US6298345B1 (en) * | 1998-07-10 | 2001-10-02 | International Business Machines Corporation | Database journal mechanism and method that supports multiple simultaneous deposits |
US6947956B2 (en) | 2002-06-06 | 2005-09-20 | International Business Machines Corporation | Method and apparatus for selective caching of transactions in a computer system |
US20050015416A1 (en) * | 2003-07-16 | 2005-01-20 | Hitachi, Ltd. | Method and apparatus for data recovery using storage based journaling |
US7698294B2 (en) | 2006-01-11 | 2010-04-13 | Microsoft Corporation | Content object indexing using domain knowledge |
US8364648B1 (en) * | 2007-04-09 | 2013-01-29 | Quest Software, Inc. | Recovering a database to any point-in-time in the past with guaranteed data consistency |
US8200627B2 (en) | 2008-10-30 | 2012-06-12 | International Business Machines Corporation | Journaling database changes using a bit map for zones defined in each page |
WO2011159322A1 (en) | 2010-06-18 | 2011-12-22 | Hewlett-Packard Development Company, L.P. | Data deduplication |
US9043294B2 (en) * | 2011-03-21 | 2015-05-26 | International Business Machines Corporation | Managing overflow access records in a database |
US9710535B2 (en) * | 2011-08-12 | 2017-07-18 | Nexenta Systems, Inc. | Object storage system with local transaction logs, a distributed namespace, and optimized support for user directories |
US20150066877A1 (en) | 2012-05-01 | 2015-03-05 | Mark D. Lillibridge | Segment combining for deduplication |
US9600558B2 (en) * | 2013-06-25 | 2017-03-21 | Google Inc. | Grouping of objects in a distributed storage system based on journals and placement policies |
US10423493B1 (en) | 2015-12-21 | 2019-09-24 | Amazon Technologies, Inc. | Scalable log-based continuous data protection for distributed databases |
US10853182B1 (en) | 2015-12-21 | 2020-12-01 | Amazon Technologies, Inc. | Scalable log-based secondary indexes for non-relational databases |
US10896168B2 (en) * | 2017-04-28 | 2021-01-19 | Hewlett Packard Enterprise Development Lp | Application-defined object logging through a file system journal |
US11182256B2 (en) * | 2017-10-20 | 2021-11-23 | Hewlett Packard Enterprise Development Lp | Backup item metadata including range information |
US10732881B1 (en) | 2019-01-30 | 2020-08-04 | Hewlett Packard Enterprise Development Lp | Region cloning for deduplication |
US11940956B2 (en) | 2019-04-02 | 2024-03-26 | Hewlett Packard Enterprise Development Lp | Container index persistent item tags |
US11803518B2 (en) | 2020-10-01 | 2023-10-31 | Hewlett Packard Enterprise Development Lp | Journals to record metadata changes in a storage system |
US11663234B2 (en) | 2021-04-23 | 2023-05-30 | Hewlett Packard Enterprise Development Lp | Storage of a small object representation in a deduplication system |
-
2022
- 2022-01-27 US US17/586,131 patent/US12019620B2/en active Active
- 2022-04-10 DE DE102022108668.2A patent/DE102022108668A1/de active Pending
- 2022-04-15 CN CN202210397340.7A patent/CN116561108A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US12019620B2 (en) | 2024-06-25 |
US20230237048A1 (en) | 2023-07-27 |
DE102022108668A1 (de) | 2023-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303363B2 (en) | System and method for data storage using log-structured merge trees | |
US9766983B2 (en) | Proximity and in-memory map based signature searching for duplicate data | |
US11803518B2 (en) | Journals to record metadata changes in a storage system | |
US9430164B1 (en) | Memory efficient sanitization of a deduplicated storage system | |
US9317218B1 (en) | Memory efficient sanitization of a deduplicated storage system using a perfect hash function | |
US8914338B1 (en) | Out-of-core similarity matching | |
US11494334B2 (en) | Embedded reference counts for file clones | |
US20230394010A1 (en) | File system metadata deduplication | |
CN113868244B (zh) | 生成键-值索引快照 | |
CN116561108A (zh) | 用于元数据内务处理操作的日志分组 | |
US11803483B2 (en) | Metadata cache for storing manifest portion | |
US20240037078A1 (en) | Matching operation for a deduplication storage system | |
CN114442917B (zh) | 用于存储系统的方法、可读介质以及存储系统 | |
US11940882B2 (en) | Migration of journal groups in a storage system | |
US20240086098A1 (en) | Temporary sparse index for a deduplication storage system | |
US20230259488A1 (en) | Data index for deduplication storage system | |
CN114442919B (zh) | 将容器索引写入持久性存储装置 | |
US20240037034A1 (en) | Data intake buffers for deduplication storage system | |
US20240143213A1 (en) | Fingerprint tracking structure for storage system | |
CN117951689A (zh) | 重复数据删除存储系统中的勒索软件检测 | |
Bobbarjung | Improving the performance of highly reliable storage systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |