CN113986826B - 存储***容量使用率估计 - Google Patents
存储***容量使用率估计 Download PDFInfo
- Publication number
- CN113986826B CN113986826B CN202110418466.3A CN202110418466A CN113986826B CN 113986826 B CN113986826 B CN 113986826B CN 202110418466 A CN202110418466 A CN 202110418466A CN 113986826 B CN113986826 B CN 113986826B
- Authority
- CN
- China
- Prior art keywords
- milliindex
- tree
- reference count
- node
- index
- 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.)
- Active
Links
Images
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/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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- 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/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- 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/182—Distributed file systems
-
- 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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开的实施例涉及存储***容量使用率估计。公开了用于估计存储***容量的技术和架构。去重的数据和对象条目的索引被维护在存储***中。条目包含浅引用计数。浅引用计数值指示保持对对应对象的引用的父元数据对象的数目。对象条目的一个或多个树毫索引和一个或多个节点毫索引被维护在存储***中。条目与存储在存储***中的对象子集对应。条目还具有存储***中的对应对象的截断的对象签名值和深引用计数值。存储***的容量利用率基于利用深引用计数值来执行各种多集合操作的分析而被确定。
Description
背景技术
许多复杂的计算环境利用分布式计算资源以及分布式存储资源。这些复杂的计算环境需要高级别的互连性和优化。一组策略涉及对存储资源内的数据进行去重。
附图说明
在附图中的诸图中,通过示例的方式而不是通过限制的方式来对本发明的实施例进行说明,在附图中,相似的附图标记指代类似元件。
图1是节点的一个实施例的示意性框图。
图2图示了数据路径的示例实施例。
图3图示了对象存储库的一个实施例。
图4是从完整索引到毫索引(milli-index)的映射的概念性图示。
图5A至图5C提供了可以作为对应毫索引的基础的示例树的概念性图示。
图6是一种用于利用毫索引和深引用计数信息来估计***存储容量的技术的流程图。
图7是具有指令的计算机可读介质,该指令用于提供一种用于利用毫索引和深引用计数信息来估计***存储容量的技术。
具体实施方式
在以下描述中,阐述了若干具体细节。然而,可以在不具有这些具体细节的情况下实践本发明的实施例。在其他实例中,尚未详细地示出已知结构和技术,以免混淆对本说明书的理解。
如本文中所使用,“对象”是已知大小的数据块,该数据块可以由“签名”唯一地标识,该“签名”是从数据本身的加密摘要、对象的类型以及对象的大小中得出的。在备选实施例中,签名的定义还可以包括用于计算加密摘要的算法。即,签名可以包括加密摘要、用于计算加密摘要的算法、对象的大小以及对象的类型。
“对象记录”是将对象签名与引用计数和存储相关联数据的物理位置相关联的数据结构。“索引”是提供签名到对象记录的关联映射的数据结构。“对象存储库”通过访问索引和存储数据的(多个)磁盘来将对象签名映射到对象数据。
在本文中所描述的示例***中,文件***可以包含至少两种类型的对象:1)包含不透明用户对象的数据对象;和2)包含在树结构中的子对象的对象签名的元数据对象(还被称为hnode对象)。文件***可以被组织成树结构。在各种实施例中,文件***“inode”经由可以表示文件或目录中任一者的“inode hnode”而被映射到文件/目录内容。文件***树的根可以被称为“文件***根hnode”,该“文件***根hnode”具有被称为“根对象签名”的签名。
在一些实施例中,文件***树的前N个级别是“imap树”,该“imap树”通过索引到存储在imap树的叶节点中的签名中来提供inode号到inode hnode签名的映射。inode hnode可以包含三个签名:1)包含属性的数据对象的签名;2)包含扩展属性的数据对象的签名;以及3)inode根hnode的签名。以inode根hnode为根的树的叶节点提供与inode相关联的文件或目录的数据。
如上文所讨论的,数据可以被存储在各种类型的计算***(诸如服务器、计算机设备、工作站、存储***或存储阵列、融合或超融合***等)上。通过网络连接的计算***可以被称为节点。为了存储数据,一些计算***可以利用数据虚拟化平台,该数据虚拟化平台对在其上物理地存储数据的物理存储硬件的方面(例如,诸如寻址、配置等的方面)进行抽象化并且将虚拟化或逻辑存储装置呈现给用户环境(例如,呈现给操作***、应用、进程等)。虚拟化存储装置可以从多个存储硬件(例如硬盘驱动装置、固态驱动装置等)被合并到数据存储库中,虚拟化或逻辑存储装置可以从该数据存储库中被提供。数据虚拟化平台还可以提供数据服务,诸如去重、压缩、复制等。
除其他事物之外,示例性的基于对象的数据虚拟化平台的组件可以包括平面对象存储库和一个或多个文件***实例。数据可以作为对象而被存储在对象存储库中。例如,用户可访问的文件和目录可以由多个数据对象组成。如将在下文描述的,对象存储库还可以存储与数据虚拟化平台的操作相关的元数据对象。在示例中,对象可以在对象存储库中具有预定的固定大小(例如,针对数据对象为4kb或8kb或针对元数据对象为1kb或2kb)。每个对象可以通过其签名(还被称为对象指纹)进行标识。对象索引可以使对象存储库中的对象的签名与对象的内容的物理地址(即,存储硬件(诸如磁盘)上的物理地址)相互关联。
文件***实例可以指元数据对象和数据对象的组织,该元数据对象和数据对象将数据对象与根对象分层级地相关。因此,文件***实例可以通过其根对象进行标识。例如,文件***实例可以是Merkle树或任何其他层级布置(例如,有向无环图等)。在层级Merkle树的情况下,数据对象可以位于任何分支的最低树级别(即,离根对象最远)处,并且还可以被称为叶数据对象。父对象包括子对象的签名作为其内容。例如,叶数据对象的父对象是元数据对象,该元数据对象存储其子叶数据对象的签名作为其内容。树的根对象和其他内部对象也可以是元数据对象,该元数据对象存储相应子对象的签名作为内容。元数据对象可以能够存储至少等于层级树的分支因数的数目的签名,以使得其可以保持其所有子对象的签名。
数据去重的结果可能包括与容量利用率相关的信息的减少。另一结果可能是在估计可以通过从存储***中删除(或移动)一个或多个数据集而被释放的资源方面的困难和在估计通过将一个或多个数据集移动至第二存储***而将被消耗的资源方面的困难。
本文中描述的是用于基于采样、签名以及深引用计数的存储***容量估计的技术。更具体地,实施例涉及使用浅引用计数来估计存储***的容量消耗以支持包括例如采样、深引用计数以及多集合操作的数据管理和去重的技术。在各种实施例中,Merkle树可以与浅引用计数一起利用,该浅引用计数仅在发生共享的级别下递增/递减。
在示例实施方式中,一个或多个访客虚拟机的数据可以由一个或多个文件***实例(例如,使用来自多个文件***实例的存储装置的一个访客VM、使用来自单个文件***实例的存储装置的许多访客VM、或这两者之间的任何变型)存储。在示例中,每个访客虚拟机可以在一对一的基础上与相应文件***实例相关联。数据虚拟化平台可以导出文件协议安装点(例如,NFS或SMB安装点),访客虚拟机可以通过该文件协议安装点经由文件协议的命名空间访问由文件***实例提供的存储装置。
在一些实施方式中,该访客访问是经由由管理程序(hypervisor)提供的vSCSI层进行的,该vSCSI层将SCSI操作映射到文件操作。在其他实施方式中,文件***实例可以与其他存储单元(诸如块体、网络附接的存储共享、贮存器体等)相关联,并且可以针对该其他存储单元进行访问。在一些实施方式中,对象存储库中的对象可以在单个文件***实例中引用超过一次,或可以在文件***实例中被多次引用。因此,多重引用的对象可以被存储一次,但可以被多次引用以提供去重。
图1是节点的一个实施例的示意性框图。节点100可以是例如具有以软件为中心的架构的超融合基础设施节点,该以软件为中心的架构紧密地集成了计算、存储、联网和虚拟化资源以及其他技术。节点100可以托管任何数目的访客虚拟机(VM)102、104以及106,并且可以被配置为产生虚拟机的本地和远程备份和快照。在一些示例中,可以在如下文所描述的网络中布置多个这种节点。
在一些示例中,节点100可以包括虚拟设备108和管理程序110。虚拟设备108可以包括与控制面114和数据路径116进行通信的虚拟文件***112。控制面114可以处理节点100内的应用与资源之间的数据流。数据路径116可以在虚拟文件***112与操作***(OS)118之间提供合适的I/O接口,并且还可以使能诸如数据压缩、去重以及优化的特征。
节点100还可以包括由管理程序110管理的硬件组件。例如,节点100可以包括存储装置120,该存储装置可以是RAID存储控制器或主机总线适配器,该主机总线适配器具有与若干硬盘驱动器(HDD)122和/或固态驱动器(SSD)124的连接。节点100还可以包括存储器126(例如RAM、ROM、闪存等)和一个或多个处理器128。节点100还可以包括无线和/或有线网络接口组件130,以使得能够与其他节点进行通信。在一些实施例中,节点还可以包括加速器卡,该加速器卡可以提供计算卸载和/或非易失性RAM(图1中未图示)。
图2图示了数据路径的示例实施例。在各种实施例中,数据路径116可以与复制管理器200进行通信,复制管理器200被配置为至少执行远程备份操作。数据路径116还可以包括与控制面114进行通信的文件***202。在一个实施例中,文件***202负责诸如通过实例化文件***组件、维护目录和那些目录内的文件等来管理数据路径116内的文件***组件。
文件***202还可以确定节点的I/O处理能力,并且通过例如将数据写入从主节点(例如节点100)镜像到辅助节点来实施高可用性。文件***202还为数据路径116内的各种组件提供同步数据转移接口和异步数据转移接口两者。对象存储库204和存储管理器206负责数据路径116与I/O子***208之间的数据对象I/O操作。
图3图示了对象存储库的一个实施例。在一个实施例中,对象存储库310包含二进制不透明对象,该二进制不透明对象的示例分别是P312、Q 314以及R 316。对象可以具有不同大小,尽管在一种实施方式中,这些对象是2的幂。对象驻留在贮存器中的某一偏移处,该偏移可以是字节偏移或以最小对象大小为模的偏移(即,如果最小对象是512字节,那么偏移将乘以512以获得字节偏移)。
如上文所讨论的,每个对象具有在本文中被称为签名(或指纹)的名称,该名称是对象内容的加密摘要(例如散列)。例如,对象名称(签名)由H(p)、H(q)以及H(r)表示。以这种方式,可以包括数据和/或元数据的每个对象可以具有从其数据的内容得出的全局唯一签名。
在图3的示例中,索引结构325追踪(映射)对象名称、对象位置以及对象引用。在该去重文件***和对象存储库中,可以存储每个唯一数据或元数据对象的单个副本,该每个唯一数据或元数据对象的单个副本由其签名标识。在每次写入对象时,对对象的引用都会递增。换言之,虽然文件***可以生成相同对象的许多“副本”,但是对象存储库310可以仅存储一个副本,并且追踪命名空间具有多少副本并追踪对应映射。这样做,去重是***固有的。
对象存储库310可以具有数个接口分类352a至352d。读取、写入、删除接口352a执行所陈述的功能。在该上下文中,对象删除在功能上是对象的引用计数的递减。当引用计数变为0时,在对象存储库内部的对象的存储被释放。索引操作352b使能按名称列举对象、引用计数调整以及按名称查找对象。对象存储库310具有事务语义(ACID属性),并且事务边界通过事务操作352c进行管理。除列出未决事务之外,这还包括开始、提交以及中止事务。供应接口352d使得能够创建、删除、合并、拆分和聚合对象存储库。
在一个实施例中,索引325是其主要密钥是对象名称(签名)的映射。在***中存在针对每个对象的索引条目。在一个实施例中,每个条目包含至少:1)对象的内容的签名(例如通过内容的加密摘要(散列)生成签名);2)指示对象被引用了多少次的引用计数;3)位置;以及4)用于各种用途的标志。
在一个实施例中,引用计数可以使用饱和算术来节省空间。例如,索引325可以仅使用8位来追踪引用:引用计数可以被增加和递减,但是如果引用计数等于或超过255,那么计数“饱和”,并且不允许进一步的递减。因为对象具有引用计数,所以在存在相同对象的程度上,去重是***固有的。如果对象位于物理磁盘上,那么位置可以是逻辑块号LBN。如果对象由托管提供者(例如Amazon S3)托管,那么对象可以是对云对象的引用。一个标志指示对象是否以压缩方式进行存储,另一标志指示是否进行加密。其他标志是可用的,但未被分配给特定用途。
在一个实施例中,分配映射320是用于在对象贮存器330上的分配块的位图。对象贮存器330是可随机寻址的持久性存储抽象。示例包括跨局域网(LAN)或广域网(WAN)(即,在大地理距离(诸如大于60英里的距离)延伸的电信网络或计算机网络)的原始LUN、文件、磁盘上的分区或iSCSI设备。对象贮存器330可以具有数个组件340至348。除驻留在已知偏移处的贮存器描述符块340之外,其他组件的顺序并不重要。对象索引330可以具有贮存器驻留部分或索引325的部分或两者,诸如B树或另一树结构。分配映射320还可以部分地位于磁盘上和位于索引342中。这两者之间的迁移可以通过寻呼技术来完成。
随着对象存储库被修改,事务日志348被保持在持久性存储装置上。事务日志348追踪所有的对象活动,包括读取、写入、删除、引用调整等。在一个实施例中,事务日志348按时间顺序被保持,并且被周期性地滚动到主索引342中。在一个实施例中,在搜索主索引之前首先搜索日志中的对象活动。每个日志条目由操作类型352a、352b、352c、352d、指纹、引用计数、事务ID或时期(epoch)数目以及位置组成。日志条目在结构上类似于索引条目,但添加了事务ID。
全局对象命名使得对象存储库能够在仍然保留一致命名和访问的同时四处移动对象。用于移动对象的示例原因包括:1)出于性能原因,将相关对象在物理磁盘上移动以使接近彼此;2)跨故障边界(例如跨两个本地磁盘、本地磁盘以及远程磁盘、或他们中的任何多个磁盘)复制对象;3)对对象的后台操作,诸如压缩、解压缩、加密、解密;或4)基于对象的使用频率或预期使用频率来移动对象。复制还可以赋予读取性能益处。复制还可以包括诸如利用擦除代码来拆分对象。
如上文所提及的,与非去重***相比,在存储***中去重技术的使用产生了独特管理挑战。在去重***中不容易确定基本容量信息(比如可用存储容量),如同在非去重***中的情况一样。在非去重***中可用的大多数统计是累加的(或可以从累加统计中得出)。例如,使用中的存储容量可以随着每个事务而递增或递减,以维护有用信息。在去重***中,将数据集从一个节点移动到另一节点可以导致对每个节点的先前不可预测的且可能不相等的容量变化,例如,在第一节点中回收的空间量可以小于、等于或大于在第二节点消耗的空间量。
利用本文中所描述的技术,有用的存储***信息包括例如可以从各种动作中重新获得多少容量(例如,如果从节点中移除数据集,那么可以释放多少空间(数据集相对于当前存储其的节点的“可回收空间”)。还可以支持其他类似种类的统计。
在各种实施例中,利用浅引用计数来生成要用于存储***管理的统计。术语“浅引用计数”是指保持对对象的引用的父元数据对象的数目的签名计数,而不是指有多少树保持对对象的引用或对象在文件或文件***内出现了多少次。确定对象对于给定树是否是唯一的可能需要走过树以确定通往根的路径中的任何父对象是否不会通过删除树来将引用计数减少为零。在一个实施例中,可以通过维护具有唯一采样对象的深引用计数的单独数据结构来避免该开销。
在一些实施例中,可以在应用、蜂巢(hive)或节点级别处利用毫索引,并且可以将毫索引视为多集合。可以支持基于各种数据集操作来预测存储消耗的变化的多集合操作(例如,将数据从一个节点移动到另一节点、删除一个或多个数据集)。如上文所描述的,术语“蜂巢”是指包括数据的数据集和相关联的树结构的文件***。蜂巢在本文中还可以被称为文件***实例。
在一些实施例中,毫索引与上文所讨论的索引类似,例外之处在于:1)毫索引仅存储表示少量的可能对象签名的签名(例如使用采样技术,诸如散列的前N(例如13、15、9)位被清除);2)每个签名的仅一个子集(例如仅前M(例如64、32、128)位);以及3)维护深引用计数。这些深引用计数的大小(例如32位)可以设置为***内的任何预期冗余量(例如相同对象的多达40亿次逻辑出现)。
作为一个实施示例,在具有1TiB(2^40字节)的非零数据(全部都是唯一的,)的蜂巢中,在N=13且M=64并且数据对象的大小是2^13字节(即,8KiB)的情况下,毫索引包含大约2^(40-(13+13))个签名或大约16K个条目。大小减小的签名本身应消耗大约128KiB,而深引用计数应消耗附加的64KiB。
在一些实施例中,可以保存每个毫索引,以避免为每个请求重新生成毫索引并且满足实时容量估计。在一些实施例中,传入的写入操作生成意图日志条目,以追踪对hnode树结构的更新。这避免了在初始写入时针对树的根始终更新Merkle树结构的需要。将意图日志条目异步地应用于Merkle树的该进程可以被称为Merkle树“汇总”。
在一些实施例中,毫索引仅与Merkle树的最低级别的深引用计数一起利用。在一些实施例中,当在该最低级别下发生汇总进程时,存在用于针对满足采样标准的任何数据对象更新树毫索引的附加步骤。这包括对正在写入的采样签名的引用计数递增和对正在覆写的采样签名的引用计数递减。这可以作为原子操作来进行,以在发生故障(例如软件崩溃或电源中断)的情况下确保(多个)毫索引相对于存储***的内容的一致性。在一些实施例中,还可以将(多个)毫索引表示为Merkle树,其中采样签名及其引用计数位于树的最低级别。可以将意图日志用作用于提供对(多个)毫索引的原子更新的机制。
在一些实施例中,通过将每个树毫索引作为对应蜂巢树本身内的文件/inode进行存储,蜂巢的快照将捕获表示该个体树快照的样本的毫索引。快照操作还可以针对该快照树所包含的每个采样对象更新节点毫索引。这可以通过将节点毫索引记录引用计数递增在快照树毫索引内表示的量来进行。相反,删除现有快照可以导致从节点毫索引中减去树毫索引。
因此,在一些实施例中,响应于快照请求,未解决的意图日志条目针对树的未解决的意图日志条目进行汇总。结果是具有(多个)稳定毫索引的静态树。将(多个)树毫索引添加到(多个)节点毫索引,以考虑到附加的深引用计数。毫索引本身可以被表示为树,该树在最低级别下包含采样对象签名。在一些实施方式中,如2020年3月10日向Watkins等人授予的美国专利第10,587,454号中所描述的,可以以延缓方式(以将其中所包含的采样签名的完整深引用计数传播到(多个)节点毫索引的方式)对毫索引根签名引用计数进行持续地递增。这是一种用于提供完整快照的技术。
图4是从完整索引到毫索引的映射的概念性图示。在一些实施例中,完整索引(例如400)可以存在于每个节点上并且用于使用浅引用计数策略来追踪对象记录。可以针对在Merkle树的高级别下进行的去重来优化该策略,以减少与在较低树级别下更新每个对象索引记录相关联的***开销。
出于毫索引(例如450)的目的,该相同索引可以用于追踪节点级深引用计数。当用作所有对象记录持久性的公共结构时,完整索引400可以存储元数据对象和未采样的数据对象的浅引用计数。在一些实施例中,完整索引400可以是完全持久的,并且可以将对应毫索引450结构视为仅追踪容量估计功能性所需的样本的完整索引400的部分缓存。
在一些实施例中,当完整索引400中的采样对象记录(例如410、412、414、416、418)被更新时,毫索引450中的对应记录(例如460、462、464、466)也被更新。在图4的示例中,在完整索引450中具有前导零的任何散列都具备毫索引采样的资格。在截断散列时发生冲突的情况下(例如416、418),两个记录都可以在毫索引中被合并(例如466),以便考虑到总增加的引用计数。
图5A至图5C提供了可以作为对应毫索引的基础的示例树的概念性图示。可以将毫索引视为多集合的示例。图5A至图5C的示例提供与毫索引相关联的一组树(例如600、620、640、660、680)。
图5A至图5C的示例基于8字节的散列,但可以支持任何大小的散列。进一步地,图5A至图5C的示例基于1/N(其中N=2)的采样率,这意味着毫索引将包含每两个数据散列中的约一个数据散列。可以针对N利用任何值,包括例如大约数百或数千的值。可以将N的具体值例如选择为空间高效的,同时仍然提供期望益处。
图5A至图5C的示例是基于在两个字节(16位)处截断散列的模型;然而,可以利用任何截断级别。示例还假设每个数据对象的大小为8KiB,但可以支持任何大小。
在图5A至图5C的示例树中,每个树包括根节点(例如树600中的节点601、树620中的节点621、树640中的节点641、树660中的节点661、树680中的节点681)。图5A至图5C中的示例树仅运用三个级别进行了简化,但是可以支持任何复杂度的树结构。每个树包括一个或多个中间节点(例如树600中的节点602至605、树620中的节点622至625、树640中的节点642至645、树660中的节点662至665,树680中的节点682至685)。
进一步地,每个树包括一个或多个叶节点(例如树606中的节点606至613、树620中的节点626至633、树640中的节点646至653、树660中的节点668至675,树680中的节点688至695)。可以基于指定的采样策略对叶节点的子集进行采样。利用1/N(其中N=2)示例策略,对节点606、609、611、612、627、629、631、632、647、648、651、652、669、670、672、674、689、690、692以及694进行了采样。
作为采样的结果,树600的毫索引是:
截断的散列 | 引用计数 |
005c | 1 |
0a6e | 1 |
4fc6 | 1 |
B8ec | 1 |
树620的毫索引是:
截断的散列 | 引用计数 |
005c | 1 |
0a6e | 1 |
15df | 1 |
4fc6 | 1 |
树640的毫索引是:
截断的散列 | 引用计数 |
0a6e | 1 |
15df | 1 |
4fc6 | 1 |
dddf | 1 |
树660的毫索引是:
截断的散列 | 引用计数 |
0a6e | 1 |
15df | 1 |
27ce | 1 |
dddf | 1 |
树680的毫索引是:
截断的散列 | 引用计数 |
15df | 1 |
27ce | 2 |
dddf | 1 |
所得节点毫索引是:
截断的散列 | 引用计数 |
005c | 2 |
0a6e | 4 |
15df | 4 |
27ce | 3 |
4fc6 | 3 |
b8ec | 1 |
dddf | 3 |
给定表示上文所描述的毫索引的树和表格,可以基于表格数据的评估来估计容量信息。例如,为了确定通过删除单个树(例如树600)可以回收多少空间,从节点毫索引中的相同对象中减去指定树中的每个对象的引用计数:
对于要回收的对象,树引用计数必须与节点引用计数相匹配。换言之,多集合差引用计数必须为零。
在一些实施例中,为了从删除树600中获得预期的空间回收估计,基于树毫索引中的唯一样本的数目来外推树中的唯一对象的数目:
|树600毫索引样本|*N=4个唯一采样对象*2=8个唯一对象
给定以上多集合差引用计数,删除树600将释放具有截断的散列“b8ec”的对象,这是由于其多集合差引用计数在节点毫索引中将变为零。因此,将释放四个唯一对象中的一个唯一对象。将该比率应用于树中的唯一块的外推数目:
(所释放的1个对象/4个唯一采样对象)*8个唯一对象*8KiB/对象=所回收的16KiB
作为另一示例,为了确定通过删除不同的单个树(例如树680)可以回收多少空间,从节点毫索引中的相同对象中减去指定树中的每个对象的引用计数:
对于要回收的对象,树引用计数必须与节点引用计数相匹配。
在一些实施例中,为了从删除树680中获得预期的空间回收估计,基于树毫索引中的唯一样本的数目来外推树中的唯一对象的数目:
|树680毫索引样本|*N=3个唯一采样对象*2=6个唯一对象
给定以上多集合差引用计数,删除树600将释放具有截断的散列“27ce”的对象,这是由于其多集合差引用计数在节点毫索引中将变为零。因此,将释放三个唯一对象中的一个唯一对象。将该比率应用于树中的唯一块的外推数目:
(所释放的1个对象/3个唯一采样对象)*6个唯一对象*8KiB/对象=所回收的16KiB
作为更复杂的示例,可以利用这些技术来从删除两个树(例如树600和树620)中估计可回收空间。在一些实施例中,首先跨树的毫索引对引用计数进行求和,并且从节点毫索引中的对应对象中减去结果。来自个体树中所包括的所有对象的并集的多集合引用计数:
用于确定将回收多少个对象的在节点毫索引引用计数与多集合并集引用计数之间的差:
如上所述,对于要回收的对象,树引用计数的多集合并集必须与节点引用计数相匹配。
在一些实施例中,为了从删除树600和620中获得预期的空间回收估计,基于树毫索引的多集合并集中的唯一样本的数目来外推树中的唯一对象的数目:
|多集合并集毫索引样本|*N=5个唯一采样对象*2=10个唯一对象
给定以上多集合差引用计数,删除树600和620将释放具有截断的散列“005c”和“b8ec”的对象,这是由于其多集合差引用计数在节点毫索引中将变为零。因此,将释放五个唯一对象中的两个唯一对象。将该比率应用于树集合中的唯一块的外推数目:
(所释放的2个对象/5个唯一采样对象)*10个唯一对象*8KiB/对象=所回收的32KiB
在一些实施例中,针对虚拟机磁盘(VMDK)和虚拟硬盘(VHDX)文件(并且可能地,增长了大于例如64MiB的其他文件),可以维护Inode毫索引。在这些实施例中,针对其余的蜂巢,可以维护另一蜂巢毫索引。
在一个实施例中,在汇总期间主要更新了(多个)蜂巢毫索引和(多个)Inode毫索引,例如以避免过度更新,将这些毫索引存储在蜂巢内,将这些毫索引约束于针对虚拟磁盘文件和其他极大文件的每个Inode,选择哪些文件来约束这些索引可以是基于例如哪些文件名扩展最有可能涉及到服务器侧复制操作,并且针对其余蜂巢,可以将蜂巢毫索引约束于Inode 0或2。在一些实施方式中,Inode 2表示文件***的根目录。
在一个实施例中,当进行快照或备份时,快照(或备份)将继承蜂巢毫索引和所有(多个)Inode毫索引。在一个实施例中,当客户端(诸如管理程序管理***)请求Inode的服务器卸载副本时,文件的副本继承原始文件的Inode毫索引。将该Inode毫索引应用于(多个)节点毫索引,以准确地追踪所复制的文件中采样签名中的每个采样签名的深引用计数。这可以以与针对快照操作所描述的相同的持久方式来进行。
在一个实施例中,当执行删除链接、rmdir或截断操作时,更新蜂巢或Inode毫索引。在一个实施例中,可以按Inode维护毫索引,并且将毫索引作为目录结构的一部分进行汇总,以使得在任何给定时间都可以给定对目录、子目录或Inode使用率的估计。当移除Inode时,Inode毫索引中存在的采样签名使其深引用计数从节点毫索引中递减。
在一些实施例中,针对环境中的每个节点维护毫索引。每当执行节点上的蜂巢毫索引操作时,可以更新节点毫索引。
作为一个实施示例,在具有按2:1压缩(且数据对象大小为8KiB)的32TiB的数据的节点中,在N=13且M=64的情况下,节点毫索引包含大约2^(1+45-(13+13))个签名或大约1百万个签名。大小减小的签名本身应消耗大约8MiB。如果节点毫索引中的签名数目的log2小于M/2,那么冲突的机率为足够小的。
在一些实施例中,可以经由表述性状态转移(REST)应用编程接口(API)来取回(多个)节点毫索引。在一些实施例中,可以经由相同API来确定在节点毫索引内是否存在蜂巢毫索引签名。在例如经由REST API取回后,可以将(多个)毫索引视为多集合进行处理,这意味着并集和差操作是有效的。
利用本文中所描述的技术和结构,可以执行以下评估中的一项或多项评估。可以确定可通过删除备份而释放/回收的存储空间量。例如,将备份的毫索引与节点的毫索引进行比较可以提供该信息。在将备份与下一备份和前一备份进行比较的另一示例中,可以确定可通过删除备份而释放的空间量。
作为扩展,可以确定可通过删除备份集合而释放/回收的空间量。作为另一示例,可以确定在释放存储空间方面满足指定标准的备份集合。可以确定在节点之间移动一个或多个虚拟机的结果。可以确定蜂巢上的内容的变化率。还可以执行其他评估。
图6是一种用于利用毫索引和深引用计数信息来估计***存储容量的技术的流程图。如上文所讨论的,为任何数目的对象提供存储容量的存储***可以是去重***。还可以利用附加技术(例如压缩)。
***维护存储在***中的对象的一个或多个索引(框710)。索引条目包括与对象对应的签名和对象的浅引用计数。索引条目还可以包括附加信息。
***还针对在***中存储的对象子集维护毫索引(框715)。毫索引条目利用截断的签名值和深引用计数。浅引用计数指示保持对对象的引用的父元数据对象的数目,而非指示多少树保持对对象的引用。深引用计数表示树或节点内的对象的逻辑出现次数。
***可以接收存储***容量评估请求(框720)。评估请求可以是例如在存储在特定节点内的指定数据集中存在多少可回收空间。还可以执行更复杂的评估,例如,从节点中删除多个数据集或将数据集移动至***中的不同节点的结果。可以执行许多不同类型的评估。
利用毫索引信息来执行容量评估以生成存储***估计(框725)。如上文所讨论的,估计可以是基于采样和统计建模。可以将所得估计提供给请求者(框730)。
作为***容量评估请求的结果,可能需要将数据集树从一个节点迁移到另一节点,以提高总集群容量利用率。在一些实施例中,这将涉及两步进程:首先将数据集写入目的地节点,然后将其从源节点中删除。将在目的地节点上生成(多个)新的树毫索引以及对(多个)节点毫索引的对应更新。从第一节点中删除数据集树还将需要从(多个)节点毫索引的引用计数中减去(多个)相关联的毫索引。这是原子操作并且可以使用如针对快照删除所描述的延缓引用计数持久性。
图7是具有指令的计算机可读介质,该指令用于提供一种用于利用毫索引和深引用计数信息来估计***存储容量的技术。在示例实施例中,***800包括例如通过***总线(图7中未图示)通信耦合的处理器880和计算机可读介质885。处理器880可以是解释和执行存储在计算机可读存储介质885中的机器可读指令的任何类型的中央处理单元(CPU)、微处理器或处理逻辑。
计算机可读存储介质885可以是随机存取存储器(RAM)或另一种类型的动态存储设备,该动态存储设备可以存储信息和可以被处理器880执行的计算机可读指令。例如,计算机可读存储介质885可以是同步DRAM(SDRAM)、双倍数据速率(DDR)、Rambus DRAM(RDRAM)、Rambus RAM、非易失性存储器(NVM)等或可以是存储器介质,诸如硬盘、RAID阵列、DVD等。在一些示例中,计算机可读存储介质885可以是非暂态计算机可读介质。在一些示例中,计算机可读存储介质885可以是远程的,但是可被***800访问。
计算机可读存储介质885可以存储指令810、815、820、825以及830。在一些示例中,指令810可以由处理器880执行以维护去重存储***中的一个或多个索引。索引可以包括签名、浅引用计数和/或附加信息。指令815可以由处理器880执行以使用截断的签名和深引用计数来维护一个或多个毫索引。
指令820可以由处理器880执行以接收存储***容量评估请求。指令825可以由处理器880执行以利用毫索引和其中存储的信息来执行所请求的容量评估。指令830可以由处理器880执行以将容量估计的结果返回给请求者。
在本说明书中对“一个实施例”或“实施例”的引用是指结合实施例所描述的特定特征、结构或特点被包括在本发明的至少一个实施例中。在本说明书中的各个地方出现的短语“在一个实施例中”并不一定全部是指同一实施例。
虽然已经根据数个实施例描述了本发明,但本领域的技术人员将认识到,本发明不限于所描述的实施例,而是可以运用在所附权利要求书的精神和范围内的修改和更改来实践。因此,本说明书被视为是说明性的,而非限制性的。
Claims (21)
1.一种***,包括:
存储***,用于存储数据,所述存储***用于对存储在所述存储***中的所述数据进行去重,并且用于维护对象存储库中的对象的索引,所述对象中的每个相应对象与所述索引中的对应的对象签名值和对应的浅引用计数相关联,所述对应的浅引用计数指示保持对所述相应对象的引用的父对象的数目;以及
一个或多个硬件处理器,用于执行在机器可读存储介质上存储的指令,以:
维护毫索引,所述毫索引具有与由所述索引引用的所述对象的子集对应的条目,所述条目具有用于所述对象的所述子集中的对应对象的截断的对象签名值和深引用计数值,所述毫索引中的所述截断的对象签名值中的每个相应的截断的对象签名值是从所述索引中的相应对象签名值截断的,并且所述毫索引中的所述相应的截断的对象签名值具有比所述索引中的所述相应对象签名值少的位,所述深引用计数值中的每个深引用计数值指示相关联对象的逻辑出现次数,以及
基于利用来自所述毫索引的所述深引用计数值的分析,确定所述存储***的容量利用率。
2.根据权利要求1所述的***,其中所述毫索引是与相应的树结构的文件***相关联的树毫索引,并且其中所述一个或多个硬件处理器用于:
维护节点毫索引;以及
响应于所述树结构的文件***的快照,通过基于所述树毫索引中的所述条目递增所述节点毫索引中的引用计数,来基于所述树毫索引更新所述节点毫索引。
3.根据权利要求1所述的***,其中所述毫索引是与相应的树结构的文件***相关联的树毫索引,并且其中所述一个或多个硬件处理器用于:
维护节点毫索引;以及
响应于删除所述树结构的文件***的快照,通过基于所述树毫索引中的所述条目在所述节点毫索引中减去引用计数,来基于所述树毫索引更新所述节点毫索引。
4.根据权利要求1所述的***,其中所述分析包括:估计由于将对象从第一存储节点移动至第二存储节点而要在所述第一存储节点上重新获得、并且在所述第二存储节点上消耗的存储容量。
5.根据权利要求1所述的***,其中所述对象的所述子集少于由所述索引引用的所述对象中的全部对象。
6.根据权利要求1所述的***,其中所述毫索引是与相应的树结构的文件***相关联的树毫索引,所述相应的树结构的文件***包括由所述索引引用的所述对象,并且其中所述一个或多个硬件处理器用于:
维护节点毫索引,所述节点毫索引是所述树毫索引以及至少一个其他树毫索引的聚合。
7.根据权利要求6所述的***,其中基于利用来自所述毫索引的所述深引用计数值的所述分析来确定所述存储***的所述容量利用率使用所述节点毫索引的深引用计数值。
8.根据权利要求6所述的***,其中所述树毫索引的给定条目具有第一截断的对象签名值和相关联的深引用计数值,并且另一树毫索引的给定条目具有所述第一截断的对象签名值和相关联的深引用计数值,并且其中所述节点毫索引的条目包括所述第一截断的对象签名值以及所述树毫索引的所述给定条目中的所述相关联的深引用计数值和所述另一树毫索引的所述给定条目中的所述相关联的深引用计数值的求和。
9.一种非暂态计算机可读介质,包括指令,所述指令在执行时使***进行以下操作:
维护存储***中的对象的索引,所述存储***用于对存储在所述存储***中的数据进行去重,所述对象中的每个相应对象与所述索引中的对应的对象签名值和对应的浅引用计数相关联,所述对应的浅引用计数指示保持对所述相应对象的引用的父对象的数目;
维护毫索引,所述毫索引具有与由所述索引引用的所述对象的子集对应的条目,所述条目具有用于所述对象的所述子集中的对应对象的截断的对象签名值和深引用计数值,所述毫索引中的所述截断的对象签名值中的每个相应的截断的对象签名值是从所述索引中的相应对象签名值截断的,并且所述毫索引中的所述相应的截断的对象签名值具有比所述索引中的所述相应对象签名值少的位,所述深引用计数值中的每个深引用计数值指示相关联对象的逻辑出现次数;以及
基于利用来自所述毫索引的所述深引用计数值的分析,确定所述存储***的容量利用率。
10.根据权利要求9所述的非暂态计算机可读介质,其中所述毫索引是与相应的树结构的文件***相关联的树毫索引,所述相应的树结构的文件***包括由所述索引引用的所述对象,并且其中所述指令在执行时使所述***进行以下操作:
维护节点毫索引;以及
响应于所述树结构的文件***的快照,通过基于所述树毫索引中的所述条目递增所述节点毫索引中的引用计数,来基于所述树毫索引更新所述节点毫索引。
11.根据权利要求9所述的非暂态计算机可读介质,其中所述毫索引是与相应的树结构的文件***相关联的树毫索引,所述相应的树结构的文件***包括由所述索引引用的所述对象,并且其中所述指令在执行时使所述***进行以下操作:
维护节点毫索引;以及
响应于删除所述树结构的文件***的快照,通过基于所述树毫索引中的所述条目在所述节点毫索引中减去引用计数,来基于所述树毫索引更新所述节点毫索引。
12.根据权利要求9所述的非暂态计算机可读介质,其中所述对象的所述子集少于由所述索引引用的所述对象中的全部对象。
13.根据权利要求9所述的非暂态计算机可读介质,其中所述毫索引是与相应的树结构的文件***相关联的树毫索引,并且其中所述指令在执行时使所述***进行以下操作:
维护节点毫索引,所述节点毫索引是所述树毫索引以及至少一个其他树毫索引的聚合。
14.根据权利要求13所述的非暂态计算机可读介质,其中基于利用来自所述毫索引的所述深引用计数值的所述分析来确定所述存储***的所述容量利用率使用所述节点毫索引的深引用计数值。
15.根据权利要求13所述的非暂态计算机可读介质,其中所述树毫索引的给定条目具有第一截断的对象签名值和相关联的深引用计数值,并且另一树毫索引的给定条目具有所述第一截断的对象签名值和相关联的深引用计数值,并且其中所述节点毫索引的条目包括所述第一截断的对象签名值以及所述树毫索引的所述给定条目中的所述相关联的深引用计数值和所述另一树毫索引的所述给定条目中的所述相关联的深引用计数值的求和。
16.一种由包括硬件处理器的***执行的方法,所述方法包括:
维护存储***中的对象的索引,所述存储***用于对存储在所述存储***中的数据进行去重,所述对象中的每个相应对象与所述索引中的对应的对象签名值和对应的浅引用计数相关联,所述对应的浅引用计数指示保持对所述相应对象的引用的父对象的数目;
维护毫索引,所述毫索引具有与由所述索引引用的所述对象的子集对应的条目,所述条目具有用于所述对象的所述子集中的对应对象的截断的对象签名值和深引用计数值,所述毫索引中的所述截断的对象签名值中的每个相应的截断的对象签名值是从所述索引中的相应对象签名值截断的,并且所述毫索引中的所述相应的截断的对象签名值具有比所述索引中的所述相应对象签名值少的位,所述深引用计数值中的每个深引用计数值指示相关联对象的逻辑出现次数;以及
基于利用来自所述毫索引的所述深引用计数值的分析,确定所述存储***的容量利用率。
17.根据权利要求16所述的方法,其中所述毫索引是与相应的树结构的文件***相关联的树毫索引,所述方法包括:
维护节点毫索引;以及
响应于所述树结构的文件***的快照,通过基于所述树毫索引中的所述条目递增所述节点毫索引中的引用计数,来基于所述树毫索引更新所述节点毫索引。
18.根据权利要求16所述的方法,其中所述毫索引是与相应的树结构的文件***相关联的树毫索引,所述方法包括:
维护节点毫索引;以及
响应于删除所述树结构的文件***的快照,通过基于所述树毫索引中的所述条目在所述节点毫索引中减去引用计数,来基于所述树毫索引更新所述节点毫索引。
19.根据权利要求16所述的方法,其中所述毫索引是与相应的树结构的文件***相关联的树毫索引,所述方法包括:
维护节点毫索引,所述节点毫索引是所述树毫索引以及至少一个其他树毫索引的聚合。
20.根据权利要求19所述的方法,其中基于利用来自所述毫索引的所述深引用计数值的所述分析来确定所述存储***的所述容量利用率使用所述节点毫索引的深引用计数值。
21.根据权利要求19所述的方法,其中所述树毫索引的给定条目具有第一截断的对象签名值和相关联的深引用计数值,并且另一树毫索引的给定条目具有所述第一截断的对象签名值和相关联的深引用计数值,并且其中所述节点毫索引的条目包括所述第一截断的对象签名值以及所述树毫索引的所述给定条目中的所述相关联的深引用计数值和所述另一树毫索引的所述给定条目中的所述相关联的深引用计数值的求和。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/939,234 | 2020-07-27 | ||
US16/939,234 US11481371B2 (en) | 2020-07-27 | 2020-07-27 | Storage system capacity usage estimation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113986826A CN113986826A (zh) | 2022-01-28 |
CN113986826B true CN113986826B (zh) | 2023-02-24 |
Family
ID=79179581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110418466.3A Active CN113986826B (zh) | 2020-07-27 | 2021-04-19 | 存储***容量使用率估计 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11481371B2 (zh) |
CN (1) | CN113986826B (zh) |
DE (1) | DE102021109729A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11803652B2 (en) | 2020-12-21 | 2023-10-31 | Dropbox, Inc. | Determining access changes |
US11799958B2 (en) | 2020-12-21 | 2023-10-24 | Dropbox, Inc. | Evaluating access based on group membership |
US12001574B2 (en) | 2020-12-21 | 2024-06-04 | Dropbox, Inc. | Evaluating an access control list from permission statements |
US11366793B1 (en) | 2020-12-21 | 2022-06-21 | Dropbox, Inc. | Data model and data service for content management system |
US20220197883A1 (en) * | 2020-12-21 | 2022-06-23 | Dropbox, Inc. | Aggregates index |
US11789976B2 (en) | 2020-12-21 | 2023-10-17 | Dropbox, Inc. | Data model and data service for content management system |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591946A (zh) * | 2010-12-28 | 2012-07-18 | 微软公司 | 使用索引划分和协调来进行数据去重复 |
US8806154B1 (en) * | 2011-05-06 | 2014-08-12 | Chelsio Communications, Inc. | Thin provisioning row snapshot with reference count map |
US8924364B1 (en) * | 2012-12-14 | 2014-12-30 | Emc Corporation | Efficient management of file system quota trees |
CN105359099A (zh) * | 2013-05-20 | 2016-02-24 | 亚马逊技术有限公司 | 索引更新管线 |
CN110347685A (zh) * | 2019-06-28 | 2019-10-18 | 华中科技大学 | 基于字典树的索引结构、数据查询优化方法、主存管理器 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7720892B1 (en) * | 2006-06-30 | 2010-05-18 | Emc Corporation | Bulk updates and tape synchronization |
US7930559B1 (en) * | 2006-06-30 | 2011-04-19 | Emc Corporation | Decoupled data stream and access structures |
US9705730B1 (en) | 2013-05-07 | 2017-07-11 | Axcient, Inc. | Cloud storage using Merkle trees |
US8595239B1 (en) * | 2012-01-03 | 2013-11-26 | Google Inc. | Minimally disruptive hash table |
US9361321B1 (en) | 2013-04-15 | 2016-06-07 | Emc Corporation | Backend capacity report for de-duplicated storage systems |
US10459648B1 (en) | 2015-12-14 | 2019-10-29 | EMC IP Holding Company LLC | Change rate estimation |
WO2017180144A1 (en) * | 2016-04-15 | 2017-10-19 | Hitachi Data Systems Corporation | Deduplication index enabling scalability |
US10331350B1 (en) | 2017-04-27 | 2019-06-25 | EMC IP Holding Company LLC | Capacity determination for content-based storage |
CN107368545B (zh) | 2017-06-28 | 2019-08-27 | 深圳神州数码云科数据技术有限公司 | 一种基于Merkle Tree变形算法的去重方法及装置 |
WO2019000388A1 (en) * | 2017-06-30 | 2019-01-03 | Microsoft Technology Licensing, Llc | ANCHORING TREE STRETCHING FOR IMPROVED SIMULTANEITY AND PERFORMANCE IN PAGES BEACH INDEX MANAGEMENT |
US10587454B2 (en) | 2018-01-30 | 2020-03-10 | Hewlett Packard Enterprise Development Lp | Object counts persistence for object stores |
US10795861B2 (en) | 2018-06-20 | 2020-10-06 | International Business Machines Corporation | Online measurement of potential deduplication efficiency |
-
2020
- 2020-07-27 US US16/939,234 patent/US11481371B2/en active Active
-
2021
- 2021-04-19 DE DE102021109729.0A patent/DE102021109729A1/de active Pending
- 2021-04-19 CN CN202110418466.3A patent/CN113986826B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591946A (zh) * | 2010-12-28 | 2012-07-18 | 微软公司 | 使用索引划分和协调来进行数据去重复 |
US8806154B1 (en) * | 2011-05-06 | 2014-08-12 | Chelsio Communications, Inc. | Thin provisioning row snapshot with reference count map |
US8924364B1 (en) * | 2012-12-14 | 2014-12-30 | Emc Corporation | Efficient management of file system quota trees |
CN105359099A (zh) * | 2013-05-20 | 2016-02-24 | 亚马逊技术有限公司 | 索引更新管线 |
CN110347685A (zh) * | 2019-06-28 | 2019-10-18 | 华中科技大学 | 基于字典树的索引结构、数据查询优化方法、主存管理器 |
Also Published As
Publication number | Publication date |
---|---|
US20220027334A1 (en) | 2022-01-27 |
US11481371B2 (en) | 2022-10-25 |
DE102021109729A1 (de) | 2022-01-27 |
CN113986826A (zh) | 2022-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113986826B (zh) | 存储***容量使用率估计 | |
US10216757B1 (en) | Managing deletion of replicas of files | |
US9563654B2 (en) | Dense tree volume metadata organization | |
US9405473B2 (en) | Dense tree volume metadata update logging and checkpointing | |
US10296219B2 (en) | Data deduplication in a block-based storage system | |
US10929022B2 (en) | Space savings reporting for storage system supporting snapshot and clones | |
US9152684B2 (en) | Snapshots and clones of volumes in a storage system | |
CN115668166A (zh) | 由区块对象构成的文件*** | |
US20170032005A1 (en) | Snapshot and/or clone copy-on-write | |
US20160077744A1 (en) | Deferred reference count update technique for low overhead volume metadata | |
US11061770B1 (en) | Reconstruction of logical pages in a storage system | |
US20170315878A1 (en) | Method for low overhead, space tracking, high performance snapshots and clones by transfer of extent ownership | |
US10809932B1 (en) | Managing data relocations in storage systems | |
US20160070714A1 (en) | Low-overhead restartable merge operation with efficient crash recovery | |
US10482065B1 (en) | Managing deletion of replicas of files | |
US20230046216A1 (en) | Data management system and method of controlling | |
US10242012B1 (en) | Managing truncation of files of file systems | |
US10261944B1 (en) | Managing file deletions in storage systems | |
US10387369B1 (en) | Managing file deletions of files and versions of files in storage systems | |
US11099940B1 (en) | Reconstruction of links to orphaned logical pages in a storage system | |
US10242011B1 (en) | Managing truncation of files of file systems | |
US11232043B2 (en) | Mapping virtual block addresses to portions of a logical address space that point to the virtual block addresses | |
US11334523B2 (en) | Finding storage objects of a snapshot group pointing to a logical page in a logical address space of a storage system | |
US20210342271A1 (en) | Cache retention for inline deduplication based on number of physical blocks with common fingerprints among multiple cache entries | |
US20220414102A1 (en) | Tracking utilization of data blocks in a 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 | ||
GR01 | Patent grant |