CN115004147A - 利用去重的主存储 - Google Patents

利用去重的主存储 Download PDF

Info

Publication number
CN115004147A
CN115004147A CN202180010301.0A CN202180010301A CN115004147A CN 115004147 A CN115004147 A CN 115004147A CN 202180010301 A CN202180010301 A CN 202180010301A CN 115004147 A CN115004147 A CN 115004147A
Authority
CN
China
Prior art keywords
entry
data
signature
location
write
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
Application number
CN202180010301.0A
Other languages
English (en)
Inventor
J.王
S.纳扎里
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nabil Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/748,454 external-priority patent/US20210224161A1/en
Application filed by Nabil Corp filed Critical Nabil Corp
Publication of CN115004147A publication Critical patent/CN115004147A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (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

存储系统(100)和方法(200)提供高效的去重,其中支持细粒度去重或具有可变大小的区块的去重。存储系统(100)不覆写后端介质(110)中的数据,而是跟踪诸如使用生成号的写入之类的操作,例如,以区分向相同虚拟位置的写入。去重索引(136)、数据索引(132)和引用索引(134)可以在执行诸如读取(500)、利用去重的写入(200)、后端介质(110)内的数据区块的重定位(600)和垃圾收集(810,820,830)之类的操作时使用。

Description

利用去重的主存储
背景技术
主存储系统一般要求高效使用存储空间,并且当前的存储系统通常使用诸如去重(deduplication)和压缩之类的技术来减少在用以存储数据的后端介质中所需的存储空间的量。去重一般涉及检测重复的数据模式并且使用数据模式的一个存储的副本(copy)和对数据模式的多个指针或引用,而非使用重复数据的多个存储的副本。通常,常规的存储系统通过在接收到数据时将所有数据写入到后端存储介质来提供更快的写入操作,并且这种系统可以执行作为后台过程的去重,该去重检测和移除后端介质中的重复的数据区块(block)。一些其他的存储系统使用在线(inline)去重,其中重复的数据在该数据被存储在后端介质中之前被检测到,并且代替将重复的数据写入到后端介质,写入操作使得创建对后端介质中已存在的数据的副本的指针或引用。在线去重可能是有问题的,这是因为检测存储的数据的重复(duplicate)所需的处理可能是复杂的,并且可能不可接受地减缓写入操作。无论执行后台去重过程还是在线去重过程,高效的去重系统和过程是期望的。
附图说明
图1是说明本公开的一些示例中的网络存储系统的框图。
图2是说明根据本公开的一些示例的用于在存储系统中处理写入请求的过程的流程图。
图3-1、图3-2、图3-3和图3-4说明响应于一系列写入请求的本公开的一些示例中的存储系统的虚拟卷、数据库和后端介质中的改变。
图4说明在响应于包括具有相同去重签名的不同数据的写入的一系列写入之后的根据本公开的一些示例的存储系统的虚拟卷、数据库和后端介质中的改变。
图5是根据本公开的一些示例的说明用于处理对由存储系统提供的虚拟卷的读取请求的过程的流程图。
图6是说明过程的流程图,通过该过程,在本公开的一些示例中存储系统可以将后端介质中的实时数据(live data)移动到后端介质中的另一位置。
图7说明在实时数据在后端介质中从一个位置移动到另一位置之后图3-3的系统的虚拟卷、数据库和后端介质中的改变。
图8-1是垃圾收集处理的流程图,在该垃圾收集处理中,根据本公开的一些示例的存储系统更新数据索引数据库。
图8-2是垃圾收集处理的流程图,在该垃圾收集处理中,根据本公开的一些示例的存储系统更新引用索引数据库。
图8-3是垃圾收集处理的流程图,在该垃圾收集处理中,根据本公开的一些示例的存储系统更新去重索引数据库。
图9-1说明在一系列写入操作之后的本公开的一些示例中的存储系统的虚拟卷、数据库和后端介质。
图9-2说明在根据本公开的一些示例的垃圾收集过程之后的图9-1的存储系统的虚拟卷、数据库和后端介质。
在不同图中使用相同附图标记指示类似的或相同的项目。
具体实施方式
本公开的一些示例可以在存储系统中高效地实施去重,其不覆写现有数据,而仅将数据写入到后端介质中的未使用位置。这种系统可以采用生成号(在本文中有时被称为gennumber)来区分可能已被写入到相同虚拟位置(例如,虚拟卷中的相同的地址或偏移)的不同数据版本。存储系统可以进一步采用利用高效数据库集合的输入/输出处理器、去重模块和垃圾收集器模块,这使得能够进行输入和输出操作、对重复数据的检测、以及对不再存储需要的数据的后端存储的释放(freeing)。
一个数据库或索引(本文中有时被称为数据索引)可以被用于将虚拟存储位置的标识符转换为数据在后端介质中的物理存储位置以及转换为数据的去重签名。可以将查找数据的与虚拟存储位置的标识符对应的物理位置的能力用于读取操作,以确定应当响应于对识别出的虚拟存储位置的读取操作来访问存储系统中的哪个位置。虚拟存储位置到与该虚拟存储位置相关联的数据的签名的转换可以用于去重处理或垃圾收集处理,诸如下文所进一步描述的。
另一数据库或索引(本文中有时被称为去重索引或ddindex)将数据的签名和数据模式的唯一ID的组合转换成该数据模式在存储系统中可用的物理位置。ddindex可以具体而言被用于检测和解析数据重复。例如,在给定数据的签名的情况下,可以找到存储与该签名对应的数据的位置。
引用索引(本文中有时被称为refindex)映射数据的签名、虚拟存储位置的标识符以及对虚拟存储位置的写入的gennumber和实际导致数据被存储在后端介质中的写入(也即,相同或不同的写入操作)的gennumber。在给定签名的情况下,引用索引可以返回指示与具有该签名的特定数据对应的虚拟存储位置(例如,通过虚拟卷ID、偏移和gennumber识别的虚拟页)的所有条目,并且可以区分具有相同的签名但具有不同的数据模式的数据。引用索引对于检测垃圾以及在进行数据重定位时可能特别有用。
根据本公开的一些实施例的存储系统可以基于存储客户端的I/O模式或基于不同大小的数据区块进行指纹识别(fingerprinting)和重复检测。一般来说,存储客户端可以以与存储系统在后端介质中使用的粒度不同的粒度或与其他存储客户端使用的粒度不同的粒度来写入数据。例如,在后端介质中使用8K页的存储系统可以具有在4K块(chunk)中或对4K虚拟页进行随机写入的存储客户端,并且去重在对4K块而非8K页执行的情况下可能是最高效的。本文所公开的存储系统的一些实施方式可以基于存储客户端采用的数据块的一个或多个大小来检测重复数据和对写入进行去重。此外,一些存储系统可以对具有虚拟页的大小的块和对小于虚拟页的块执行去重。
在本公开的一些示例中,存储系统通过从不覆写底层存储(即,后端介质)中的现有数据来提供高性能。相反,当向后端介质进行写入时,存储系统仅向未使用的(即,空的或可用的)物理位置写入数据。换句话说,存储系统从不就地(in place)覆写。当再次写入给定的虚拟存储位置时,针对该虚拟存储位置的新的(且不重复的)数据可以被写入底层存储中的新位置,该新位置与同一虚拟存储位置的旧数据的原始物理位置不同。
在本公开的一些示例中,存储系统用每个传入的写入的生成号对该写入进行标记。存储系统改变(例如,增加)每个写入的全局生成号,因此在不同时间写入到同一虚拟位置的数据的不同版本可以通过两个写入的不同生成号来区分。使用垃圾收集过程,存储系统可以删除数据的不需要的版本,该不需要的版本可以被识别为与落在期望范围之外的生成号相关联。
图1是说明本公开的一些示例中的存储网络100的框图。网络100包括计算机系统,诸如,一个或多个存储客户端102和(主)存储系统104。存储客户端102和存储系统104可以通过具有硬件和相关联的通信协议的任何合适的通信系统103(例如,通过诸如互联网之类的公用网络、诸如局域网之类的专用网络或诸如SCSI连接之类的非网络连接,仅举几例)互连。存储系统104一般包括底层存储或后端介质110。存储系统104的后端存储介质110可以包括硬盘驱动器、固态驱动器或可以将数据物理存储在其中的其他非易失性存储设备或介质,并且具体而言可以具有独立磁盘冗余阵列(RAID)5或6配置,以实现性能和冗余。处理系统120向存储客户端102提供接口,该接口将基础虚拟卷114暴露给诸如数据区块的写入和读取之类的存储操作。每个基础虚拟卷114逻辑上可以包括可以通过虚拟卷内的地址或偏移来彼此区分的页的集合。虚拟卷114中使用的页大小可以与后端介质110中使用的页大小相同或不同。
存储系统104可以采用被称为快照(snapshot)115的进一步的虚拟结构,快照115反映基础虚拟卷114在与该快照115对应的时间所具有的状态。在本公开的一些示例中,存储系统104避免了针对基础虚拟卷114的快照115读取旧数据并且将旧数据保存在后端介质110的其他地方的需要,这是因为存储系统104将传入数据写入到新的物理位置,并且如果快照115存在,那么对于快照115,传入数据的较旧的版本仍然可用。如果虚拟卷114中的同一页或偏移被多次写入,那么页的不同版本可以被存储在后端介质110中的不同物理位置,并且虚拟页的版本可以被分配生成号,这些生成号区分页的不同版本。虚拟卷114可能只需要具有最高生成号的页版本。虚拟卷114的快照115一般需要每个页的、在虚拟卷114创建时的生成号和在快照115创建时的生成号之间的范围内具有最高生成号的版本。不对应于任何虚拟卷114或快照115的版本是不需要的,并且垃圾收集器124可以在可以将物理页的状态从已使用改变为未使用的“垃圾收集”过程期间移除或释放不需要的页。
存储系统104的处理系统120一般包括具有用于通过通信系统103进行通信和用于访问后端介质110以及易失性和非易失性存储器130的接口硬件的一个或多个微处理器或微控制器。除了将虚拟卷114以及可能将快照115暴露给存储客户端102的接口外,处理系统120还实施输入/输出(I/O)处理器122、垃圾收集器124和去重模块126。I/O处理器122、垃圾收集器124和去重模块126可以例如被实现为在处理系统120中采用单独硬件的单独模块,或者可以是由处理系统120中的相同微处理器或不同微处理器执行的软件或固件模块。
I/O处理器122被配置为执行数据操作,诸如存储和检索后端介质110中的与虚拟卷114对应的数据。I/O处理器122使用存储或数据库或索引132、134和136来跟踪可以在后端介质110中找到虚拟卷114的页或快照115的位置。I/O处理器122也可以为整个存储网络100维护全局生成号。具体而言,I/O处理器122可以在针对虚拟卷114的写入可能到达时或在执行其他操作时改变(例如,增加)全局生成号,并且每个写入或其他操作可以被分配生成号,该生成号对应于全局生成号在执行该写入或其他操作时的当前值。
垃圾收集器124检测并释放后端介质110中的被分配来存储数据但现在存储有不再需要的数据的存储。垃圾收集器124可以执行垃圾收集作为周期性执行的过程或后台过程。在本公开的一些示例中,垃圾收集器124可以查看每个存储的页,并确定与存储的页相关联的任何生成号是否落在快照115及其基础虚拟卷114的任何所需范围内。如果存储的页与在所需范围内的生成号相关联,则垃圾收集器124保持该页不受影响。否则,垃圾收集器124将该页视为垃圾,在后端介质110中收回该页,并在存储器130中更新索引132、134和136。
去重模块126检测重复的数据,并且在本公开的至少一些示例中,防止将重复的数据写入后端介质110。在本公开内容的一些替代性示例中,去重模块126可以执行去重作为定期或后台过程。去重模块126可以被认为是I/O处理器122的一部分,特别是当在写入期间执行去重时。
I/O处理器122、垃圾收集器124和去重模块126共享或维护存储器130中(例如,在存储器130的非易失性部分中)的数据库132、134和136。例如,I/O处理器122可以在写入操作期间使用数据索引132来记录虚拟卷114中的虚拟存储位置和后端介质110中的物理存储位置之间的映射,并且可以在读取操作期间使用该映射来识别虚拟卷112的页在后端介质110中的存储位置。数据索引132可以附加地包括虚拟卷114中的页的去重签名,该去重签名可以用于去重或垃圾收集,如下文所述。数据索引132可以是任何类型的数据库,但是在一个示例中,数据索引132是键-值(key-value)数据库,该键-值数据库包括作为键-值对(key-value pair)的条目133的集合。具体而言,数据索引132中的每个条目133对应于识别虚拟卷114或快照115中的虚拟存储位置的特定版本的键,并提供指示包含与虚拟存储位置对应的数据的物理位置以及数据的去重签名的值。例如,给定的键-值对133的键可以包括虚拟卷标识符、识别的虚拟卷中的页的偏移以及对识别的虚拟卷中的页的写入的生成号,并且与该键相关联的值可以指示后端介质110中的物理存储位置和数据的去重签名。
引用索引134和去重索引136可以被维护并与数据索引132一起用于去重过程和垃圾收集过程。引用索引134可以是任何类型的数据库,但是在本公开的一个示例中,引用索引134也是包括作为键-值对的条目135的数据库,每个对包括:由数据的签名、用于数据的写入的虚拟存储位置的标识符和用于写入的生成号组成的键;以及由虚拟存储位置的标识符和用于相同数据的“初始”写入的生成号组成的值。在一个实施方式中,虚拟存储位置的每个标识符包括识别虚拟卷的卷ID和虚拟卷中对页的偏移。数据的签名和卷ID、偏移以及数据的初始写入的生成号的组合可以被用作存储系统104中可用的数据模式的唯一标识符。去重索引136可以是任何类型的数据库,但在一个示例中是包括作为键-值对137的条目137的数据库。具体而言,每个条目137与包括存储系统104中可用的数据模式的唯一标识符的键对应,提供指示数据模式在后端介质110中的物理位置的值。
图2是说明本公开的一些示例中的用于处理来自存储客户端102的写入的方法200的框图。(本文中具体而言参照图1的结构来描述方法200以说明具体示例,但是可以在替代的存储系统结构中类似地采用该过程。)方法200可以开始于框210。在框210中,I/O处理器122收到对虚拟卷114中的偏移的写入。写入一般包括要写入的数据,也被称为写入数据,并且写入数据可以对应于虚拟卷中的单个页的全部或部分,或者可以对应于有或没有一个或多个部分虚拟页的多个完整的虚拟页。以下描述主要是针对单个页或部分页的写入,但更一般地,可以通过重复单个页的过程来执行多个页的写入。在任何情况下,最初可以将写入数据存储在存储系统104中的存储器130的非易失性部分中的缓冲器138中。在一些示例中,框210的接收数据包括在写入数据处于缓冲器138中时向存储客户端报告写入已经完成,即使写入数据在那时尚未被存储到后端介质110。存储器130的非易失性部分可以用于在电力中断的情况下保持写入数据和存储系统104的状态,使得一旦电力恢复存储系统104就能够完成写入操作。框210之后可以是框212。
在框212中,I/O处理器122响应于写入而增加当前生成号或以其他方式改变当前生成号。生成号对于整个存储网络100是全局的,因为针对多个基础卷114以及来自多个不同的存储客户端102的写入可能到达。框212之后可以是框214。
在框214中,去重模块126确定写入数据的签名,例如,写入的完整或部分虚拟页的签名。该签名可以具体而言是数据的哈希,并且去重模块126可以评估数据的哈希函数以确定该签名。签名一般比数据小得多,例如,对于8KiB的数据页,签名可能在32个比特到256个比特之间。可以在去重操作中使用的一些示例哈希函数包括加密哈希(如SHA256)和非加密哈希(如xxHash)。在一些示例中,可以针对不同大小的区块(例如,任何大小的部分页)计算签名。因此,去重过程可以是灵活的,以检测存储客户端102所使用的区块或页大小的重复数据,并且不限于与后端介质110中的页大小对应的数据的去重。相反,常规的存储系统通常使用固定的预定粒度(通常是后端介质的页大小)执行去重。例如,采用8KiB的页大小的常规存储系统可以将传入的写入的数据分成一个或多个8KiB页,并为每个8K页计算去重签名。本公开中提供的一些示例中的存储系统可以不关心被写入的数据的大小,并且可以为任何数量的写入数据计算签名。如下文进一步描述的,如果签名(和数据模式)与存储的数据的签名(和数据模式)匹配,那么代替将数据再次写入后端介质110并设置指向新写入的数据的指针,去重写入可以设置指向先前保存重复数据的位置的指针。框214之后可以是框216。
在框216中,去重模块126在去重索引136中查找计算出的签名的匹配。如果决策框218确定计算出的签名尚未处于去重索引136中,则数据在存储系统104中不可用,并且过程200从框218分支到框226,其中I/O处理器122将写入数据存储在后端介质110中新位置(即,不包含现有数据的位置)处。(为了高效或安全的存储,在后端介质110中存储写入数据可以包括对写入到后端介质110中的位置处的写入数据的压缩或加密。)对于向任何虚拟卷114的任何写入,框226不会用写入的新数据覆写后端介质110中的任何旧数据。当框226写入到后端介质110时,框228将新的键-值对137添加到去重索引136。新的键-值对137具有键,该键包括:框214为数据计算出的签名;被写入的虚拟存储位置的标识符,即虚拟卷ID和偏移;以及当前的生成号。新的键-值对137具有指示数据在后端介质110中存储的位置的值。框228之后可以是框230。
在框230中,I/O处理器122在数据索引132中添加键-值对133。具体而言,I/O处理器122添加键-值对133,该键-值对133中的键包括虚拟存储位置的标识符(例如,卷ID和虚拟页的偏移)和写入的生成号,并且该键-值对133中的值包括数据的签名和数据在后端介质110中的物理位置。框230之后可以是框232。
在框232中,I/O处理器122将键-值对135添加到引用索引134。具体而言,I/O处理器122添加键-值对,该键-值对中的键包括签名、卷ID、偏移和当前写入的生成号,并且值包括卷ID、偏移和导致写入数据存储在后端介质110中的初始写入的生成号。可以根据指向数据可用的位置的键-值对137的键中的去重索引136来确定添加到引用索引134的键-值对135的值。框232的完成可以完成写入操作。
如果决策框218确定当前写入的签名已经在去重索引136中,则框220将写入数据与具有匹配签名的每个存储数据区块进行比较。具体而言,框220将写入数据与去重索引136识别为存储具有与该写入数据相同的签名的数据的每个物理位置中的数据进行比较。一般来说,因为具有不同数据模式的许多不同页可能生成相同的签名,所以去重索引136中的一个或多个键-值对137可以具有包含匹配的签名的键。决策框222确定框220是否找到具有与写入数据相匹配的模式的存储数据。如果没有,则方法200从决策框222分支到框226,并如上所述进行通过框226、228、230和232。具体而言,数据被写入后端介质110中的新位置,并且新的条目133、135和137分别被添加到数据索引132、引用索引134和去重索引136。如果决策框222确定框220找到了与写入数据相匹配的存储数据,则写入数据是不需要被写入后端介质110的重复数据,并且框224从去重索引136中提取已经可用的匹配数据的物理位置。过程200从框224进行到框230,该框230在数据索引数据库132中创建键-值对133以指示在哪里找到与虚拟存储位置和写入的生成号相关联的数据。引用索引134也被更新,如上文参照框232所描述的。
图3-1、图3-2、图3-3和图3-4说明了在诸如图1的存储系统104之类的存储系统中的一系列写入操作的结果。图3-1具体而言示出了虚拟卷114、数据索引132、引用索引134、去重索引136和存储110。初始,存储110、数据索引132、引用索引134和去重索引136是空的。在说明的示例中,初始写入具有生成号20,发生在时间T0,并指导存储系统104将数据写入卷ID为3的虚拟卷114中偏移为0x40的虚拟页。由于存储系统中没有可用的数据具有签名S0,所以写入的数据被存储在后端介质110的新位置L0中。在写入后,数据索引132包括键-值对133-1,该键-值对133-1包括作为键的卷ID值3、偏移值0x40以及写入的生成号20。键-值对133-1中的值包括签名S0和存储数据的位置L0。去重索引136包括键-值对137-1,该键-值对137-1包括作为键的签名S0、卷ID 3、偏移0x40和写入的生成号20。键-值对137-1中的值指示存储数据的位置L0。引用索引134包括键-值对135-1,该键-值对135-1具有作为键的签名S0、卷ID 3、偏移0x40以及写入的生成号20。键-值对135-1中的值包括来自指示数据模式在后端介质110中的位置的去重条目137-1的键的卷ID 3、偏移0x40和生成号20。
图3-2示出了在具有与在时间T0的写入的数据相同的数据模式的数据的写入的时间T1之后的两个虚拟卷114、数据索引132、引用索引134、去重索引136和存储110。在时间T1的写入具有生成号30,并指导存储系统104将数据写入到具有卷ID 4的虚拟卷114中的偏移0x60。写入数据具有签名S0以及与之前写入到后端介质110中的位置L0相同的数据模式。对于具有生成号30的写入,去重模块126检测到去重索引136中的条目137-1具有相同的签名S0,并且写入数据与条目137-1中给出的位置L0处的数据的比较识别出两者的相同数据模式。条目133-2被添加到数据索引132,并且包括作为键的卷ID 4、偏移0x60和该写入的生成号30。键-值对133-2中的值包括签名S0和数据在具有生成号20的写入期间被存储在的位置L0。具有生成号30的写入不改变去重索引136,但条目135-2被添加到引用索引134,并且包括作为键的签名S0、卷ID 4、偏移0x60以及写入的生成号30。键-值对135-2中的值包括来自指示数据模式在存储110中的位置的去重条目137-1的键的卷ID 3、偏移0x40以及生成号20。
图3-3示出了在数据到具有卷ID 5的虚拟卷114中的偏移0x80的写入的时间T2之后的三个虚拟卷114、数据索引132、引用索引134、去重索引136以及存储110。对于这个示例,在时间T2的写入具有生成号40,并且写入数据再次具有与初始写入操作的数据相同的签名S0和相同的数据模式。对于在时间T2的写入,去重模块再次将去重索引136中的条目137-1检测为具有与写入数据相同的签名S0,并且写入数据与条目137-1中给出的位置L0处存储的数据的比较识别出在时间T2的写入的相同数据模式。条目133-3被添加到数据索引132,并包括作为键的卷ID 5、偏移0x80和写入的生成号40。键-值对133-3中的值包括写入数据的签名S0和存储数据模式的位置L0。去重索引136保持不被在时间T2的写入改变。条目135-3被添加到引用索引134,并包括作为键的签名S0、卷ID 5、偏移0x80以及写入的生成号40。条目135-3中的值包括来自指示数据模式在存储110中的位置的去重条目137-1的键的卷ID 3、偏移0x40以及生成号20。
图3-4说明了在时间T3的写入操作之后的三个虚拟卷114、数据索引132、引用索引134、去重索引136和存储110。在时间T3的写入操作指导存储系统覆写卷ID为3的虚拟卷114中偏移0x40处的页。在这个示例中,在时间T3的写入被分配生成号50,并且写入数据被确定为具有签名S1。由于去重索引136指示系统中没有可用的数据具有签名S1,所以在时间T3的写入的数据被存储在存储110中的新位置L1。具体而言,位置L0处的数据模式没有被覆写,这在这种情况下是重要的,因为其他需要的虚拟页的数据具有存储在位置L0中的数据模式。在时间T3的写入之后,数据索引132包括键-值对133-4,该键-值对133-4具有作为键的卷ID 3、偏移0x40和在时间T3的写入的生成号50。键-值对133-4中的值包括签名S1和存储数据模式的位置L1。去重索引136被更新为包括键-值对137-2,该键-值对137-2具有作为键的签名S1、卷ID 3、偏移0x40和写入的生成号50。键-值对137-2中的值指示具有生成号50的写入的数据模式的位置L1。引用索引134包括新的键-值对135-4,该键-值对135-4具有作为键的签名S1、卷ID 3、偏移0x40和在时间T3的写入的生成号50。键-值对135-4中的值包括来自指示具有签名S1的数据模式在后端介质110中的位置的去重条目137-2的键的卷ID 3、偏移0x40和生成号50。
图3-4将数据索引132示出为仍然包括键-值对133-1并且将引用索引134示出为仍然包括键-值对135-1。如果具有卷ID 3的虚拟卷114的部分没有快照115,或者如果具有卷ID 3的虚拟卷114的所有仍然存在的快照115是在生成号50之后创建的,那么可以从数据索引132中删除键-值对133-1。在同样情况下,可以从引用索引134中删除键-值对135-1。I/O处理器122可以更新数据索引132和引用索引134,以作为写入过程的一部分删除不再需要的键-值对,例如,在执行具有生成号50的写入时删除或覆写键-值对133-1和135-1。或者,垃圾收集过程可以删除不再需要的键-值对。
图4说明了存储系统104在写入的集合之后的状态,该写入的集合包括产生去重冲突的数据的写入,即,具有相同签名S0的数据的两个写入具有不同的数据模式。图4具体而言示出了一系列写入操作之后的虚拟卷114、数据索引132、引用索引134、去重索引136和存储110。在时间T0,生成号为20,写入操作指导存储系统104将有签名S0的具有第一数据模式的数据写入到卷ID为3的虚拟卷114中的偏移0x40。在时间T0的写入是第一数据模式的第一次写入,并且导致具有第一数据模式的数据被存储在后端介质110中的新位置L0中。数据索引132中的条目433-1被设置为<3,0x40,20>→<S0,L0>,引用索引134中的条目435-1被设置为<S0,3,0x40,20>→<3,0x40,20>,并且去重索引136中的条目437-1被设置为<S0,3,0x40,20>→<L0>。
图4中在时间T1的写入被分配生成号30,并且指导存储系统104将具有第二数据模式但具有相同签名S0的数据写入卷ID为3的虚拟卷114中的偏移0x60。在具有生成号30的写入期间,去重模块126从具有第二数据模式的数据计算(例如,框214,图2)签名S0,在去重索引136的条目437-1中寻找(例如,框218,图2)签名S0,将具有第二数据模式的写入数据与去重索引136识别为存储在位置L0中的数据进行比较(例如,框220,图2),以及确定(例如,图2的框222)第一数据模式和第二数据模式不匹配。在时间T1的写入导致具有第二数据模式的数据被存储在后端介质110的新位置L1中。数据索引132中的条目433-2被设置为<3,0x60,30>→<S0,L1>,引用索引134中的条目435-2被设置为<S0,3,0x60,30>→<3,0x60,30>,以及去重索引136中的条目437-2被设置为<S0,3,0x60,30>→<L1>。此时,去重索引136包含两个条目,这两个条目具有包括相同签名S0的键,但是这些键是唯一的,这是因为这些键还包括各自的标识符,即,<3,0x40,20>和<3,0x60,30>,这些标识符是唯一的,这至少是由于不同数据模式被首次写入时的生成号必须是不同的。
图4中在时间T2的写入被分配生成号40,并且指导存储系统104将具有第一数据模式的数据写入卷ID为3的虚拟卷114中的偏移0x80。因为去重模块126发现去重索引136中的条目437-1指向已经包含第一数据模式的位置<L0>,所以具有生成号40的写入不需要写入到后端介质110。具体而言,在去重索引136中找到(例如,图2的框218)具有签名S0的条目437-1和437-2,并且比较(例如,图2的框220)发现了位置<L0>存储第一数据模式。具有生成号40的写入导致数据索引132中的条目433-3被设置为<3,0x80,40>→<S0,L0>,引用索引134中的条目435-3被设置为<S0,3,0x80,40>→<3,0x40,20>。对于在时间T2的写入,去重索引136不被改变。
图4中在时间T3的写入被分配为生成号50,并且指导存储系统104将具有第二数据模式的数据写入卷ID为3的虚拟卷114中的偏移0xA0。因为去重模块126检查去重索引136中的条目并且发现去重索引136中的条目437-2指向已经包含第二数据模式的位置<L1>,所以具有生成号50的写入也不需要写入到后端介质110。具有生成号50的写入导致数据索引132中的条目433-4被设置为<3,0xA0,50>→<S0,L1>,并且引用索引134中的条目435-4被设置为<S0,3,0xA0,50>→<3,0x60,30>。对于在时间T3的写入,去重索引136不被改变。
图5是说明在本公开的一些示例中用于I/O处理器122处理对虚拟卷114的读取请求的方法500的框图。方法500可以开始于框510,其中存储系统104从存储客户端102接收指示要读取的虚拟存储位置(例如,虚拟卷中的偏移)的读取请求。框510之后可以是框520。
在框520中,I/O处理器122针对与读取的偏移和虚拟卷114对应的所有条目搜索数据索引132。具体而言,I/O处理器122针对具有包含在读取请求中识别出的偏移和虚拟卷的键的所有键-值对来查询数据索引132。框520进一步寻找所找到的条目133中的哪个条目具有最新(例如,最大)的生成号。框520之后可以是框530。
在框530中,I/O处理器122从后端介质110中的由框520在数据索引132中找到的条目133识别出的位置读取数据,并将数据返回到发送读取请求的存储客户端102。一般来说,从后端介质110的读取可以包括对在写入到后端介质110期间被压缩和/或加密的数据的解压缩和/或解密。框530可以完成读取过程500。
图6是用于将实时数据从后端介质中的一个位置移动到另一个位置的过程600的框图。诸如存储系统104之类的存储系统可以例如在碎片整理过程中采用过程600,以更高效地安排后端介质110中的存储数据。图3-3示出了存储系统将具有签名S0的数据模式存储在后端介质110的位置L0的示例,以及图7示出了将数据模式从后端介质110中的位置L0移动到后端介质110中的新位置L1的移动操作的结果。当后端介质上保存数据的位置改变时,指向后端位置的所有条目(例如,键-值对)需要被改变。过程600可以在高效的反向查找中使用去重索引、引用索引和数据索引来识别需要为移动操作而改变的条目。
过程600可以开始于框610,其中存储系统104将数据从后端介质110中的一个位置写入到后端介质110中的新位置。新位置是后端介质110中紧接在框610之前没有存储需要的数据的一部分。图6的框610之后可以是框620。
在框620中,存储系统104可以使用被移动的数据的签名来寻找去重索引中的与被移动的数据的原始位置对应的条目。被移动的数据的签名可以是根据被移动的数据(可能根据该数据的解压缩或解密的版本)计算的。对去重索引136的查询可以请求具有计算出的签名的所有条目,并且可以基于条目的位置值来识别去重索引136中的与被移动的区块对应的条目。例如,请求具有位置L0处的区块的签名S0的条目的、对图3-3中的去重索引136的查询返回了单个条目137-1,并且条目137-1的值是位置L0,这指示条目137-1与被移动的区块对应并且到移动操作完成时需要被更新。图6的框620后面可以是框630。
在框630中,存储系统104可以使用被移动的数据的签名来寻找引用索引134中的与被移动的数据模式对应的条目135。对引用索引134的查询可以请求具有先前确定的签名的所有条目,并且可以检查从引用索引134返回的条目以确定从引用索引135返回的条目的值是否与作为框620找到的去重索引条目的键的一部分的虚拟卷ID、偏移和生成号相匹配。匹配(或不匹配)的引用条目135与被移动的数据模式对应(或不对应)。例如,请求具有签名S0的条目的对图3-3中的引用索引134的查询返回了条目135-1、135-2和135-3,以及来自条目135-1、135-2和135-3的值与去重索引136的识别出的条目137-1的键的比较指示条目135-1、135-2和135-3都对应于被移动的区块。图6的框630后面可以是框640。
在框640中,来自从引用索引中被发现与被移动的数据模式对应的条目的键被用于识别数据索引中的与被移动的数据模式对应的条目。例如,请求具有来自条目135-1、135-2和135-3的虚拟位置的条目的、对图3-3中的数据索引132的查询分别返回来自数据索引132的条目133-1、133-2和133-3,这指示来自数据索引132的条目133-1、133-2和133-3到移动操作完成时需要被更新。图6的框640之后可以是框650。
在框650中,去重索引和数据索引中识别出的条目被更新为使用被移动的数据模式的新位置。例如,图7示出了以图3-3中所示的状态开始对系统执行移动操作时的三个虚拟卷114、数据索引132、引用索引134、去重索引136和后端介质110。具体而言,图3-3的去重索引136的条目137-1从<S0,3,0x40,20>→<L0>更新到图7的去重索引136的条目737-1,其具有键-值<S0,3,0x40,20>→<L1>。图3-3的数据索引132的条目133-1、133-2和133-3分别从<3,0x40,20>→<L0>、<4,0x60,30>→<L0>和<5,0x80,40>→<L0>更新到图7的数据索引132的条目733-1、733-2和733-2,其具有键-值<3,0x40,20>→<L1>、<4,0x60,30>→<L1>、和<5,0x80,40>→<L1>。更一般地,当例如在框620和框640中找到条目时,可以针对移动操作执行更新去重索引和数据索引的条目。框650可以通过释放旧位置(即,可以使旧位置可用于存储新数据)来完成该移动操作。
图8-1、图8-2和图8-3是说明根据本公开的一些示例的垃圾收集处理的示例的流程图。根据本公开的一些示例,垃圾收集程序可以用于释放后端介质中的存储空间以及从存储系统中的数据索引、引用索引和去重索引删除不需要的条目。例如,图9-1示出了存储系统104的具有卷ID 3的虚拟卷114、数据库132、134和136以及后端介质110在一系列写入请求之后的状态。具体而言,到具有卷ID 3的虚拟卷114中具有偏移0x40的虚拟页的、具有生成号20以及具有签名S0的数据模式的写入请求导致数据写入存储110中的位置L0。具有生成号20的写入请求的执行导致数据索引132中的条目933-1、引用索引134中的条目935-1以及去重索引138中的条目937-1的创建。具有签名S0的相同数据模式的、具有生成号30的写入请求写入到具有卷ID3的虚拟卷114中具有偏移0x60的虚拟页,并且不导致写入到存储110,这是因为数据模式已经存储在位置L0。具有生成号30的写入请求的执行导致数据索引132中的条目933-2和引用索引134中的条目935-2的创建。具有生成号40的写入请求用具有签名S1的数据来覆写具有卷ID 3的虚拟卷114中具有偏移0x40的虚拟页,并导致将具有签名S1的数据写入存储110中的位置L1。具有生成号40的写入请求的执行导致数据索引132中的条目933-3、引用索引134中的条目935-3以及去重索引138中的条目937-3的创建。具有生成号50的写入请求用具有签名S2的数据来覆写具有卷ID 3的虚拟卷114中具有偏移0x60的虚拟页,并导致将具有签名S2的数据写入存储110中的位置L2。具有生成号50的写入请求的执行导致数据索引132中的条目933-4、引用索引134中的条目935-4以及去重索引138中的条目937-4的创建。导致图9-1中所示的存储系统状态的一系列写入操作覆写了与具有签名S0的数据对应的所有虚拟位置,从而如果不存在快照115或者与被覆写的虚拟存储位置对应的所有快照115是在生成号50之后创建的,则存储110中的位置L0和数据库中的一些条目是不需要的。
图8-1示出了基于存储系统的数据索引的垃圾收集的过程810的示例。垃圾收集器(例如,图1的垃圾收集器124)可以通过选择数据索引数据库中的条目(例如,图9-1的数据索引132中的条目933-1)以框812开始过程810。在框814中,垃圾收集器然后可以扫描数据索引数据库以获取具有如同数据索引数据库中的选定的条目的键一样识别相同的虚拟卷的相同部分的键的所有条目,例如,这些条目具有包含相同的虚拟卷ID和相同的偏移的键。例如,图9-1中的条目933-1和933-3具有包括相同的虚拟卷和偏移但具有不同的生成号的键。对于针对相同的虚拟卷部分找到的所有键,框816中垃圾收集器检查键中的生成号以确定哪些条目需要被保留。具体而言,具有最新(例如,最大)的生成号的条目(例如,条目933-3)需要被保留以用于虚拟卷114的部分的读取。另外,具有比与快照115的创建对应的相应生成号大的最新生成号的任何条目是快照115所需要的,并且需要被保留。虚拟卷114或快照115不需要的任何条目(例如,条目933-1)可以被删除,例如,可以被视为垃圾。框818中垃圾收集器处理每个不需要的数据索引条目。框818可以具体而言包括从数据索引数据库中删除不需要的条目以及更新引用索引数据库。
图8-2是用于更新引用索引数据库的过程820的流程图,该过程820可以在图8-1的框818中对每个识别出的不需要的数据索引条目执行。过程820可以开始于框822,其中从数据索引数据库中的不需要的条目构建引用键。例如,来自不需要的数据索引条目933-1的值提供了签名(例如,S0),该签名可以与来自不需要的数据索引条目933-1的键(例如,<3,0x40,20>)结合以创建用于对引用索引数据库的查询的键(例如,<S0,3,0x40,20>)。作为在对引用索引数据库的查询中使用所构建的键的结果而返回的条目(例如,条目935-1)是不需要的,并且在框824中,垃圾收集器可以从引用索引数据库中删除不需要的条目。框824可以完成过程820,但是垃圾收集器可以为每个不需要的数据索引条目(如,为图9-1中的条目933-2)重复过程820。图9-2示出了在垃圾收集处理移除条目933-1、933-2、935-1和935-2之后的图9-1的存储系统。
图8-3是用于更新去重索引数据库(例如,图9-2的去重索引136)以及释放存储空间(例如,图9-2的后端介质110中的位置L0)的进一步的垃圾收集过程830的流程图。垃圾收集器(例如,图1的垃圾收集器124)可以以框832开始过程830,该框832选择去重索引数据库中的条目(例如,图9-2的去重索引136中的条目937-1)。在框834中,垃圾收集器在引用索引的查询中(例如,在图9-2的引用索引134的查询中)使用来自选定的去重索引条目的键。例如,用于搜索引用索引的键是来自选定的去重索引条目937-1的签名S0,并且然后对来自refindex的与该签名匹配的所有条目进行比较以查看其值是否与来自ddindex键或条目937-1的<3,0x40,20>的唯一数据标识符(例如,卷ID、偏移和gennumber)相匹配。如果查询或搜索未能返回与选定的去重索引条目的键相对应的引用索引条目,则该去重条目是不需要的,图9-2中的条目937-1就是这种情况,并且在框836中,垃圾收集器释放或以其他方式使选定的去重索引条目指向的位置(例如,条目937-1指向的L0)可用于新数据存储。垃圾收集器还删除不需要的去重索引条目,例如,在本示例中删除条目937-1。
上述系统和方法中的一些系统和方法的全部或部分可以在计算机可读介质(例如,非瞬时介质,诸如光盘或磁盘、存储卡或其他固态存储装置)中实现,在该计算机可读介质中包含计算设备可以执行的指令以执行本文所述的具体过程。这样的介质可以进一步是或被包含在连接到诸如互联网之类的网络的服务器或其他设备中,该服务器或其他设备提供数据和可执行指令的下载。
尽管已经公开了特定的实施方式,但这些实施方式仅仅是示例,并且不应被视为限制。所公开的实施方式的各种调整和特征组合都在以下权利要求的范围内。

Claims (20)

1.一种用于操作存储系统的过程,所述存储系统包括处理系统和后端介质,所述过程包括:
所述存储系统接收用于分别写入到一系列虚拟存储位置的一系列请求,以及
针对每个请求,执行包括以下步骤的操作:
为所述请求分配唯一地识别所述请求的生成号;
根据与所述请求相关联的写入数据计算签名;以及
在数据索引数据库中提供与所述生成号和虚拟存储位置的标识符对应的第一条目,所述第一条目提供所述签名和与所述写入数据匹配的数据模式在后端介质中被存储在其中的物理位置的标识符。
2.根据权利要求1所述的过程,其中,针对每个请求的操作还包括在引用数据库中提供与所述签名、所述请求的虚拟存储位置的标识符以及所述请求的生成号对应的第二条目,所述第二条目提供来自请求的所述生成号和所述虚拟存储位置的标识符,所述请求使得所述写入数据写入到与所述写入数据匹配的数据模式在所述后端介质中被存储在其中的物理位置。
3.根据权利要求2所述的过程,其中,针对每个请求的操作还包括:
查询去重数据库以确定所述去重数据库中的任何条目是否对应于针对所述请求的写入数据的签名;
响应于确定所述去重数据库中的条目均不对应于所述签名,将所述写入数据存储在所述后端介质中的物理位置,并且在所述去重数据库中提供与所述签名、所述虚拟存储位置的标识符和所述生成号对应的第三条目,所述第三条目提供所述写入数据在所述后端介质中被存储在其中的物理位置的标识符;
响应于确定所述去重数据库中的一个或多个条目对应于所述签名,执行包括以下步骤的子过程:
确定所述写入数据是否是在所述后端介质中由通过查询所述去重数据库而返回的所述一个或多个条目分别提供的一个或多个位置处的任何存储数据的重复;
响应于所述写入数据不是重复,将所述写入数据存储在所述后端介质中的物理位置,并且在所述去重数据库中提供与所述签名、所述虚拟存储位置的标识符和所述生成号对应的第三条目,所述第三条目提供所述物理位置的标识符;以及
响应于所述写入数据是重复,保持所述去重数据库不变。
4.根据权利要求3所述的过程,其中,所述数据索引数据库、所述引用数据库和所述去重数据库中的每一个包括键-值数据库。
5.根据权利要求1所述的过程,其中,所述第一条目中的每一个包括键和值,所述键包含生成号和与所述第一条目对应的请求的虚拟存储位置的标识符,并且所述值包含所述签名和与所述第一条目对应的请求的写入数据在所述后端介质中被存储在其中的物理位置的标识符。
6.一种由存储系统执行的过程,所述存储系统包括处理系统和后端介质,所述过程包括:
为包括写入数据和虚拟存储位置的标识符的写入请求分配生成号;
确定所述写入数据的签名;
查询去重数据库以确定所述去重数据库中的任何条目是否对应于所述签名;
响应于确定所述去重数据库中的条目均不对应于所述签名,执行包括以下步骤的第一子过程:
将所述写入数据存储在所述后端介质中的未使用位置处;
在所述去重数据库中提供与所述签名、所述虚拟存储位置的标识符和所述生成号对应的第一条目,所述第一条目提供所述写入数据被写入到的位置的标识符;以及
在数据索引数据库中提供与所述虚拟存储位置的标识符和所述请求的所述生成号对应的第二条目,所述第二条目提供所述写入数据被写入到的位置的标识符;
响应于确定所述去重数据库中的一个或多个条目对应于所述签名,执行包括以下步骤的第二子过程:
确定所述写入数据是否是所述后端介质中由所述去重数据库中的与所述签名对应的所述一个或多个条目分别提供的一个或多个位置处的任何存储数据的重复;
响应于所述写入数据不是重复,执行所述第一子过程;以及
响应于所述写入数据是重复,执行第三子过程,所述第三子过程包括在所述数据索引数据库中提供与所述虚拟存储位置的标识符和所述请求的生成号对应的第三条目,所述第三条目提供与所述写入数据重复的存储数据在所述后端介质中的位置的标识符。
7.根据权利要求6所述的过程,其中,所述第三子过程还包括:
(a)识别所述去重数据库中的哪个条目对应于所述签名并且提供与所述写入数据重复的存储数据在所述后端介质中的位置的标识符;以及
(b)在引用数据库中提供与所述签名、所述虚拟存储位置的标识符和所述请求的所述生成号对应的第四条目,所述第四条目提供与在(a)中识别出的所述条目对应的生成号和虚拟位置的标识符。
8.根据权利要求7所述的过程,其中,所述第一子过程还包括在所述引用数据库中提供与所述签名、所述虚拟存储位置的标识符和所述请求的生成号对应的第五条目,所述第五条目提供所述虚拟存储位置的标识符和所述请求的所述签名。
9.根据权利要求6所述的过程,其中,所述第二条目和所述第三条目中的每一个还提供所述签名。
10.根据权利要求6所述的过程,其中,所述虚拟存储位置的标识符包括虚拟卷ID和偏移。
11.根据权利要求6所述的过程,其中,接收所述写入请求包括:
将所述写入数据写入到非易失性缓冲器;以及
向存储客户端报告所述写入请求完成。
12.根据权利要求6所述的过程,其中,确定所述写入数据的所述签名包括计算所述写入数据的哈希。
13.根据权利要求6所述的过程,其中:
所述写入数据具有第一大小;以及
所述后端介质采用具有第二大小的页,所述第二大小不同于所述第一大小。
14.根据权利要求13所述的过程,还包括:
将第二生成号分配给包括第二写入数据和第二虚拟存储位置的标识符的第二写入请求,所述第二写入数据具有与所述第一大小和所述第二大小不同的第三大小;以及
确定所述第二写入数据的签名。
15.一种存储系统,包括:
后端介质;
包含第一条目的集合的去重数据库,每个第一条目对应于与所述第一条目相关联的数据模式的签名并且对应于来自使得所述数据模式被写入所述后端介质的写入的生成号和虚拟存储位置的标识符,所述第一条目提供与所述第一条目相关联的所述数据模式在所述后端介质中被存储的位置的标识符;
包含第二条目的集合的数据索引数据库,每个第二条目对应于与所述第二条目相关联的写入的虚拟存储位置的标识符和生成号,所述第二条目提供与所述相关联的写入的写入数据匹配的数据模式在所述后端介质中被存储的位置以及与所述相关联的写入的写入数据匹配的数据模式的签名;
包含第三条目的集合的引用数据库,每个第三条目对应于与所述第三条目相关联的写入的生成号和虚拟存储位置的标识符以及与所述第三条目相关联的所述写入的写入数据的签名,所述第三条目提供使得所述数据模式被写入所述后端介质的写入操作的生成号和虚拟存储位置的标识符;以及
处理系统,所述处理系统采用所述去重数据库、所述数据索引数据库和所述引用数据库来执行存储系统操作。
16.根据权利要求15所述的存储系统,还包括非易失性存储器,所述去重数据库、所述数据索引数据库和所述引用数据库驻留在所述非易失性存储器中。
17.根据权利要求15所述的存储系统,其中,所述存储系统操作包括处理系统通过以下来实施的写入操作:
接收写入请求;
将新的生成号分配给所述写入请求;
确定所述写入请求的写入数据的签名;
针对所述第一条目中的与所述写入数据的所述签名对应的任何第一条目查询所述去重数据库;
响应于找到所述第一条目中的与所述写入数据的所述签名对应的一个或多个第一条目,执行包括以下步骤的第一过程:
将所述写入请求的所述写入数据与所述后端介质中由所述一个或多个第一条目分别提供的一个或多个位置处的存储数据进行比较;
响应于发现所述写入请求的所述写入数据与所述一个或多个位置中的一个位置处的存储数据匹配,将新的第二条目添加到所述数据索引数据库,并且将新的第三条目添加到所述引用数据库,所述新的第二条目提供所述一个位置;
否则,执行包括以下步骤的第二过程:
将写入数据存储在所述后端介质中的未使用位置处;
将新的第一条目添加到所述去重数据库;
将新的第二条目添加到所述数据索引数据库;以及
将新的第三条目添加到所述引用数据库。
18.根据权利要求15所述的存储系统,其中,所述存储系统操作包括所述处理系统通过以下来实施的移动操作:
(a)将数据的区块从所述后端介质中的旧位置复制到所述后端介质中的新位置;
(b)确定所述区块中的数据的签名;
(c)识别所述第一条目中的哪个第一条目与所述签名对应并且提供所述旧位置;
(d)识别所述第三条目中的与所述签名对应并且提供与在(c)中识别出的所述第一条目对应的所述生成号和所述标识符的所有第三条目;
(e)识别所述第二条目中的与对应于在(d)中识别出的第三条目的生成号和标识符对应的所有第二条目;
(f)更新在(c)中识别出的所述第一条目和在(e)中识别出的所述第二条目以提供所述新位置。
19.根据权利要求15所述的存储系统,其中,所述存储系统操作包括处理系统通过以下来实施的垃圾收集操作:
(a)在第二索引中识别所述第二条目中的与目标虚拟存储位置对应的多个第二条目;
(b)将与在(a)中识别出的第二条目对应的生成号和生成号的范围进行比较以识别所述多个第二条目中的在所述范围之外的子集,所述子集中的第二条目是不需要的第二条目;
(c)对于在(b)中识别出的不需要的第二条目中的每一个,在所述引用数据库中识别所述第三条目中的与由不需要的第二条目提供的签名对应并且与不需要的第二条目对应的生成号对应的一个第三条目;以及
(d)删除在(c)中识别出的所述第三条目和在(b)中识别出的不需要的第二条目。
20.根据权利要求19所述的存储系统,其中,所述垃圾收集操作还通过以下来实施:
(a)在所述去重数据库中选择第一条目;
(b)在所述引用数据库中识别所述第三条目中的与对应于在(a)中选定的第一条目的签名对应的任何第三条目;
(c)响应于在(b)中没有识别出第三条目或者响应于确定在(b)中识别出的第三条目均未提供与所述选定的第一条目对应的虚拟卷的标识符和生成号,删除所述选定的第一条目。
CN202180010301.0A 2020-01-21 2021-01-20 利用去重的主存储 Pending CN115004147A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US16/748,454 US20210224161A1 (en) 2020-01-21 2020-01-21 Efficient io processing in a storage system with instant snapshot, xcopy, and unmap capabilities
US16/748,454 2020-01-21
US16/783,035 2020-02-05
US16/783,035 US20210224236A1 (en) 2020-01-21 2020-02-05 Primary storage with deduplication
PCT/US2021/014136 WO2021150576A1 (en) 2020-01-21 2021-01-20 Primary storage with deduplication

Publications (1)

Publication Number Publication Date
CN115004147A true CN115004147A (zh) 2022-09-02

Family

ID=76856320

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180010301.0A Pending CN115004147A (zh) 2020-01-21 2021-01-20 利用去重的主存储

Country Status (5)

Country Link
US (1) US20210224236A1 (zh)
CN (1) CN115004147A (zh)
DE (1) DE112021000665T5 (zh)
GB (1) GB2607488A (zh)
WO (1) WO2021150576A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10963436B2 (en) * 2018-10-31 2021-03-30 EMC IP Holding Company LLC Deduplicating data at sub-block granularity
US20210224161A1 (en) 2020-01-21 2021-07-22 Nebulon, Inc. Efficient io processing in a storage system with instant snapshot, xcopy, and unmap capabilities
US11748020B2 (en) 2020-02-28 2023-09-05 Nebuon, Inc. Reestablishing redundancy in redundant storage
US20210326271A1 (en) * 2020-04-18 2021-10-21 International Business Machines Corporation Stale data recovery using virtual storage metadata
US11829291B2 (en) 2021-06-01 2023-11-28 Alibaba Singapore Holding Private Limited Garbage collection of tree structure with page mappings
US20220382760A1 (en) * 2021-06-01 2022-12-01 Alibaba Singapore Holding Private Limited High-performance key-value store
WO2023147067A1 (en) * 2022-01-28 2023-08-03 Nebulon, Inc. Promotion of snapshot storage volumes to base volumes
US20230273742A1 (en) * 2022-02-28 2023-08-31 Nebulon, Inc. Recovery of clustered storage systems

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8205065B2 (en) * 2009-03-30 2012-06-19 Exar Corporation System and method for data deduplication
US20120159098A1 (en) * 2010-12-17 2012-06-21 Microsoft Corporation Garbage collection and hotspots relief for a data deduplication chunk store
US9135269B2 (en) * 2011-12-07 2015-09-15 Egnyte, Inc. System and method of implementing an object storage infrastructure for cloud-based services
US8868520B1 (en) * 2012-03-01 2014-10-21 Netapp, Inc. System and method for removing overlapping ranges from a flat sorted data structure
US20170192868A1 (en) * 2015-12-30 2017-07-06 Commvault Systems, Inc. User interface for identifying a location of a failed secondary storage device

Also Published As

Publication number Publication date
US20210224236A1 (en) 2021-07-22
GB202211308D0 (en) 2022-09-14
WO2021150576A1 (en) 2021-07-29
GB2607488A (en) 2022-12-07
DE112021000665T5 (de) 2022-12-01

Similar Documents

Publication Publication Date Title
US20210224236A1 (en) Primary storage with deduplication
USRE49148E1 (en) Reclaiming space occupied by duplicated data in a storage system
US11650976B2 (en) Pattern matching using hash tables in storage system
US10620862B2 (en) Efficient recovery of deduplication data for high capacity systems
US11157372B2 (en) Efficient memory footprint in deduplicated system storing with content based addressing
JP6200886B2 (ja) フラッシュストレージアレイにおける論理セクタマッピング
US10768843B2 (en) Optmizing metadata management in data deduplication
US9424185B1 (en) Method and system for garbage collection of data storage systems
US9367448B1 (en) Method and system for determining data integrity for garbage collection of data storage systems
US10990310B2 (en) Sub-block data deduplication
US8572039B2 (en) Focused backup scanning
US9740422B1 (en) Version-based deduplication of incremental forever type backup
US10078648B1 (en) Indexing deduplicated data
US11157188B2 (en) Detecting data deduplication opportunities using entropy-based distance
US10430273B2 (en) Cache based recovery of corrupted or missing data
JP6807395B2 (ja) プロセッサ・グリッド内の分散データ重複排除
CN113535670B (zh) 一种虚拟化资源镜像存储系统及其实现方法
US10380141B1 (en) Fast incremental backup method and system
US10649807B1 (en) Method to check file data integrity and report inconsistencies with bulk data movement
US20230236725A1 (en) Method to opportunistically reduce the number of SSD IOs, and reduce the encryption payload, in an SSD based cache in a deduplication file system
WO2023147067A1 (en) Promotion of snapshot storage volumes to base volumes

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20240423

Address after: California, USA

Applicant after: NVIDIA Corp.

Country or region after: U.S.A.

Address before: California, USA

Applicant before: Nabil Corp.

Country or region before: U.S.A.