CN105009119B - 经去重复文件的细粒度部分召回 - Google Patents

经去重复文件的细粒度部分召回 Download PDF

Info

Publication number
CN105009119B
CN105009119B CN201480010936.0A CN201480010936A CN105009119B CN 105009119 B CN105009119 B CN 105009119B CN 201480010936 A CN201480010936 A CN 201480010936A CN 105009119 B CN105009119 B CN 105009119B
Authority
CN
China
Prior art keywords
file
data
bitmap
dirty
range
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
Application number
CN201480010936.0A
Other languages
English (en)
Other versions
CN105009119A (zh
Inventor
P·谢
C·H·张
K·汉萨恩
A·古普塔
R·卡拉赫
D·赫芬布罗克
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN105009119A publication Critical patent/CN105009119A/zh
Application granted granted Critical
Publication of CN105009119B publication Critical patent/CN105009119B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及基于跟踪脏(写修改)范围(用户写)以消除或最小化读和写已优化相邻数据的方式,来部分召回经去重复文件的文件范围。范围的粒度不依赖于用于跟踪范围的任何文件系统粒度。在一个方面,提供了保留数据完整性和崩溃一致性的跟踪数据的懒惰转储清除在一个方面,还描述了在数据去重复系统正在优化打开文件的同时,支持在该文件上的细粒度部分召回。

Description

经去重复文件的细粒度部分召回
背景
数据优化(有时称为数据去重复)指的是减少需要储存在盘上或需要跨网络进行传送的数据的物理字节量而不会损害原始数据的保真性或完整性。通过减少存储和/或传送数据所需的资源,数据优化因此导致硬件成本(用于存储)以及数据管理成本(例如,备份)的节约。随着数字存储的数据的数量增长,这些成本节约变得重要。
数据优化通常使用用于消除持久存储的文件之内和之间的冗余的技术的组合。一种数据去重复技术用于标识一个或多个文件中的数据的相同部分,并在物理上只存储一个唯一区域(块),同时与文件相关联地维护对该块的引用。另一优化技术是例如通过存储经压缩的块来将数据去重复与压缩混合。
经优化/去重复的文件的数据因此被存储在块存储中的诸个块或压缩的块中,其中文件本身被保留为包括对这些块的引用的“残根”。当用户或应用需要访问经去重复的文件时,去重复引擎将数据带回到存储器中(被称为再融合(rehydration))或带回到盘中(被称为召回)。当用户或应用修改该数据时,可能需要召回/再融合旧的经优化数据来确保数据一致性和完整性。
因为需要(可能)解压各块、因为分块引入的文件分割、以及因为块存储的位置/实现,再融合或召回的过程在数据访问时引入等待时间。完整文件召回引入高等待时间和相对可观的I/O开销。当文件较大时,等待时间和资源消耗问题更为恶化。
此外,在完整大文件已被召回时,去重复邀请可能需要再次将该文件去重复。这要求大量资源并影响总体数据去重复吞吐量,考虑到典型的去重复系统需要管理的大量数据,这也是一挑战。
发明内容
提供本概述以便以简化形式介绍将在以下的详细描述中进一步描述的一些代表性概念的选集。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在以限制所要求保护的主题的范围的任何方式来使用。
简言之,本文公开的主题的各方面涉及一种技术,其中细粒度部分召回机制被配置成与文件相关联地维护跟踪哪一个或多个文件数据范围相对于包括块存储中的干净数据的干净范围而言是脏范围(例如,因为数据写)的信息。每一个脏范围具有独立于文件系统范围跟踪粒度的大小。
在一个方面,描述了在一个或多个跟踪数据结构中跟踪部分召回的文件的哪些范围是脏的。基于一个或多个转储清除准则,可将所述一个或多个跟踪结构从易失性存储器中懒惰地转储清除到非易失性存储器。
在一个方面,描述了优化打开文件,包括使用跟踪哪一个或多个文件范围是脏的以及哪一些是干净的数据。在优化结束时,只有干净范围被截除。
结合附图阅读以下具体实施方式,本发明的其他优点会变得显而易见。
附图简述
作为示例而非限制,在附图中示出了本发明,附图中相同的附图标记指示相同或相似的元素,附图中:
图1是根据一个示例实施例的表示将经去重复文件的各范围召回成部分经去重复文件和/或访问部分经去重复文件的数据的示例组件的框图。
图2是根据一个示例实施例的可被用来跟踪相对大文件的更细颗粒的召回范围的示例分层数据结构的表示。
图3是根据一个示例实施例的可被用来跟踪相对大文件的更细颗粒的召回范围的示例分层数据结构的另一表示。
图4是根据一个示例实施例的表示延迟转储清除操作的的示例步骤的流程图。
图5是根据一个示例实施例的将写数据从存储器转储清除到盘同时保留数据完整性和崩溃一致性的延迟转储清除所涉及的组件和操作的表示。
图6A-6C是根据一个示例实施例的在打开文件来写入时优化文件的表示。
图7是根据一个示例实施例的表示在打开文件来写入的同时如何优化文件的流程图。
图8是表示示例性非限制联网环境的框图,其中可实现本文所描述的各种实施例。
图9是表示示例性非限制计算系统或运行环境的框图,其中可实现本文所描述各种实施例的一个或多个方面。
具体实施方式
美国专利申请S/N 12/970,848(微软代理案卷号331301.01,现已于2014年2月4日授权为美国专利No.8,645,335)一般涉及只将经优化文件的各范围召回到盘(即,部分召回),以减轻完整文件召回的性能惩罚和等待时间。尽管这在许多情况下工作极其良好,但部分召回的粒度由文件系统范围跟踪粒度(例如,在NTFS稀疏文件的情况下是64KB)来规定,从而在小随机写的情况下仍然导致高等待时间和IOPS(每秒输入/输出操作)浪费。此外,在此描述的技术在每一个写上使用文件系统和盘转储清除,从而增加了等待时间和IOPS开销。这些特性限制了部分召回解决方案支持具有小读/写简档(如VDI(虚拟桌面基础结构)或其他超V(管理程序)场景)的工作负荷的能力。
本文描述的技术的各方面一般涉及基于应用所写的跟踪数据范围(即“脏”范围)的更细颗粒(细粒度)的部分召回,其中跟踪数据范围的粒度不依赖于范围跟踪的任何文件系统粒度。如将理解的,这样的更细颗粒细粒度部分召回避免了在就地写入新数据时对从块存储读取数据的需求(避免写时复制),并从而降低等待时间和IOPS问题。
还提供了保留数据完整性和崩溃一致性的延迟转储清除机制,而无需在每一个写时的转储清除,从而节省甚至更多IOPS并降低写的等待时间。在一个方面,还描述了支持在数据去重复解决方案优化文件时进行细粒度部分召回的能力,基本上允许数据去重复解决方案优化打开文件,同时支持在去重复系统优化它们时正被用户/应用修改的文件。
应当理解,本文中的任何示例均是非限制的。因此,本发明不限制于在此描述的任何具体的实施例、方面、概念、结构、功能或示例。相反,此处所描述的任何一个实施例、方面、概念、结构、功能或示例都是非限制性的,可以以一般而言在计算和进行数据处理时提供好处和优点的各种方式来使用本发明。
图1示出相对于经去重复的文件102的细粒度部分召回示例概念。一般而言,当文件被完全去重复时,该文件与元数据104相关联,该元数据104包括将块存储108中的文件块(例如,C3、C6和C7)映射回逻辑文件的去重复(去重)元数据106。例如,对于完全去重复,当应用110请求读取文件时,去重复机制112(例如,实现在文件系统过滤器中)访问块存储108中所引用的各个块(或者,当仅有一个块时访问一个块),并在适当的任何解压之后,将块作为召回的文件数据来返回到存储器。从应用110的角度而言,数据是原封不动的,因此若非延迟,应用110的用户不了解或不关心文件是否被去重复。
存在使文件从经去重复的状态改变成非经去重复的状态的一个或多个操作。这包括当用户或进程向文件写入时,使得位于写偏移位置处的经修改的文件数据不再匹配于否则包含“干净”数据的一个或多个。完全召回整个文件以支持这样的文件修改通常是低效的。上述美国专利申请SN.12/970,848提供只召回文件的一部分的更高效的“部分召回”操作,但如上所述,具有各种低效性。
如本文所描述的,提供了跟踪脏数据范围的细粒度部分召回机制114,其中脏范围对应于写,且是在文件上分配且被去重复系统跟踪的范围。这将经去重复的文件留在部分经去重复的状态(部分经去重复的文件102),包含脏(已写)文件数据116以及对干净数据的引用,例如块存储中的各个块。所跟踪的脏文件范围的示例粒度可例如在512字节边界上对齐(但在给定实现中,可以使用更小或更大的对齐边界)。粒度与文件系统范围跟踪粒度无关,且因而一般可被显著地更细颗粒化。
脏范围中的数据包含已写数据,并且如果这一已写数据与部分召回对齐相对齐(例如,默认512字节),则对于这一范围,没有数据需要从块存储中被召回。如果文件修改(“写”)没有对齐,则边缘(脏数据之前和/或之后的任何数据)被从块存储召回,使得文件数据范围被对齐;在这种情况下,脏范围包含旧数据(在来自块存储的未对齐的一个或多个边缘中)和已写数据两者。注意,一些数据写(例如,超V写)是扇区对齐的,由此对于跟踪脏范围而言无需召回。然而,如本文所使用的,“召回”的范围指的是脏范围,因为脏数据在文件中,而不论来自块存储的任何实际召回是否发生。
例如,在图1中,考虑512字节的范围是脏的,因为其对应数据中的至少一些自最后优化以来被写(变脏)。为了跟踪这一范围,去重复元数据106和召回跟踪数据结构118(下文参考图2和3描述)被更新以反映这一部分召回状态,以知晓文件102包含脏数据,并且以不再为这一新过期(相对于这一文件而言)的数据范围使用块存储。
因而,细粒度部分召回一般指的是跟踪文件的哪一个或多个范围已被写(是脏的)以及哪一些保持干净。文件因此可存在于非去重复状态、细粒度部分经去重复(细粒度部分召回)状态或完全经去重复状态中。
在一个实现中,去重复机制112被实现为文件系统过滤器120,结合有细粒度部分召回机制114作为去重复机制112的子组件(例如,软件代码行)。如此处所述的,细粒度部分召回机制114执行各种跟踪操作,包括维护关于文件的哪些范围是脏的以及哪些被保留在块存储块中的跟踪数据。
上述美国专利申请SN.12/970,848的一个或多个实现利用NTFS所提供的崩溃一致性保证来用于重解析点,使用重解析点来用于召回范围跟踪。然而,重解析点的大小限制(没有更多)允许只以相对大的粒度来跟踪召回范围,这使得在支持需要对经优化文件的频繁小写入的场景时是低效的。
为了改进针对这样的场景的写性能,本文描述了一种以更细粒度跟踪召回范围的技术,如在图2和3概括地例示的。在一个实现中,基于(例如,VDI)工作负荷的I/O特性,并且因为大多数I/O是扇区对齐(且未高速缓存)的(对于虚拟硬盘文件而言这默认是4KB(或对于等待时间虚拟硬盘文件而言默认是512B)),512字节或4KB粒度被选择。使用4KB作为召回粒度还消除了如上所述针对VDI的大多数情况下的对读取原始数据的需求。然而,任何实际粒度可被使用,并且如可容易理解的,本文描述的机制能适用于其他粒度。
为了跟踪与更细粒度相对应的更多召回范围,本文描述的一个方面使用基本上更大的召回位图。然而,在与大小为千兆字节或更大的量级的文件的更细粒度一起使用时,这样的更大召回位图不能整个适合在重解析点222,并且因而在一个实现中,重解析点外部的一个或多个其他数据结构224和226被使用。然而,重解析点222外部的任何数据结构不具有与重解析点一起提供的崩溃一致性保证。
此外,具有单个大位图消耗大量存储器,这一般是不需要的,因为大多数文件通常保持未变脏。因而,本文描述了针对大文件223使用分层安排的多层位图,其中一个位图(称为召回单元226或主召回位图)跟踪实际脏范围,而其他位图(称为辅位图或召回位图索引表224)以更大粒度来跟踪聚集的脏范围。根召回位图索引表228保持足够小(4KB)以适合重解析点。主召回位图226和中间召回位图索引表224因为它们的大小而驻留在分开的物理文件上,并且因此遭受各种数据损坏和数据丢失;下文描述了对损坏和丢失的保护。
在一个实现中,在最简单形式的两层召回位图中,只存在一个(根)召回位图索引表和一个主召回位图文件226(不存在一个或多个中间索引表)。使用4KB根召回位图索引表228,两层召回位图允许跟踪多达229个召回粒度字节,对于4KB的召回粒度而言这是约2TB。如果文件更大或变得更大,和/或使用不同范围粒度,则召回位图索引表的另一中间层被使用,以使得根索引表不溢出。一般概念是一旦召回位图被初始化并且工作,就不改变(降低)粒度,因为这样做涉及对现有脏范围和部分召回的非常昂贵的处理,这是(脏)范围折叠的结果。因而,对于过大而不能通过两层召回位图来跟踪的文件,中间召回位图索引表被使用。
具有多层召回位图(包括两层召回位图)的缺点是额外的读请求。然而,影响一般是可忽略的,给定空间位置是在大多数(如果不是全部的话)真实世界工作负荷中的公共特性,且对召回位图文件的访问被高速缓存。
图2和3示出了三层召回位图。为了确保分层召回位图的数据完整性和崩溃一致性,召回位图和召回位图索引表可被组织,如在此概括地示出的。在这一示例中,召回位图和中间召回位图索引表被分解成4KB的块,其中每一个块以4字节CRC32校验和结束。因而,主召回位图文件226中的每一个块可以跟踪多达(4096-4)*8*召回_大小字节的用户数据。中间召回位图索引文件226中的每一个块可以跟踪较低层召回位图索引文件的多达128MB((4096-4)*8*4K)的范围。
注意,如图2和3所示,每一个块具有两个副本,并且对文件的变更在这两个副本之间交替进行。使用两个副本允许崩溃一致性,使得该结构不会以因拆毁写而造成的旧位图结束。在位腐坏的情况下,没有从一个副本到另一副本的撤退。
根召回位图索引表228(在该示例中是重解析点222)跟踪召回位图索引文件224中的活动块副本。根召回位图索引表228是以用于填充的四个字节的零(0000)结束的4KB。在一个实现优化中,每块两个位被分配来跟踪下一层召回位图文件的块状态。类似地,召回位图索引文件224(在活动副本中)跟踪召回位图226中的活动块副本。
注意,在该模式中,在被设置之后,召回粒度不必被改变。相反,如果需要,召回位图垂直地生长,因为在文件大小生长得超出当前召回位图可接纳的情况下,中间召回位图索引文件的附加层被注入。在生长召回位图时,召回位图的当前高度330(即作为重解析点228中的数据来维持)递增1。与新高度相关联的新索引表文件被用旧根索引表来填充,且新根索引表被创建。注意,在NTFS实现中,根召回位图索引表228和召回位图索引高度330是经去重复文件的重解析点222的一部分,并且因而这些数据被保护免于NTFS的崩溃引入的数据不一致性。
对于盘上结构,主召回位图226被存储在外部文件中。召回粒度由优化作业来控制,且在一个实现(例如,在VDI情况下)中,4KB被使用,因为4KB是虚拟硬盘文件的默认扇区大小。使用这一召回粒度,虚拟硬盘情况中的高速缓存的扇区对齐写不需要针对原始数据的读和写。
参考召回位图索引文件224,与重解析点222(它针对每一更新都完全重新写)不同,对于大位图,该位图被部分更新。为了检测位图中的损坏,位图被按(4KB–4B)单位来存储,每一单位具有四字节CRC32校验和。换言之,在该示例中,每一单位(称为召回位图块)占据4KB盘空间。
除了检测损坏,本文描述的技术防止拆毁写所造成的损坏并确保对位图的更新是崩溃一致的。为此,对于每一4KB召回位图块,存在两个存储位置(图3中的副本1和副本2),也被示为226A和226B。只有一个存储位置是活动的,从而意味着在任何时刻,一个副本包含最当前数据。如果位置一(副本1)是活动的,则下一更新去往位置二(副本2),并且随后在更新成功完成之后位置二(副本2)变成活动的。如果在更新中间发生崩溃,则位置一(副本1)处的数据保持有效,因为没有对位置一(副本1)的写。
分开的表(召回位图索引表224)被用来描述召回位图块224A和224B(每一个块消耗召回位图索引表224中的两个位)的以下状态:
00b(十进制零)——该块中的所有位(校验和除外)是0(初始状态)
01b(十进制一)——位置零(副本1)活动
01b(十进制二)——位置一(副本2)活动
11b(十进制三)——该块中的所有位(校验和除外)是1。
注意,位00b和11b允许在较高数据结构处只使用该较高数据结构中的两个位来为分层结构中的较低数据结构中的大量信息知晓/设置干净或脏状态。
中间召回位图索引表被类似地存储在外部文件(例如,文件224)中。中间召回位图索引表224被按与主召回位图文件226中的副本相同的方式分解成4KB块(224A和224B)。从召回位图索引表层到实际召回位图索引表的映射在重解析点222中维护。与主召回位图块226A和226B一样,每一召回位图索引表具有两个存储位置(块224A和224B),并且更新在这两者之间交替进行。类似地,索引块被使用CRC32来单独地进行校验和计算。
使用召回位图索引表的一种替换方案是存储每一召回位图块的更新序列号(作为CRC32的补充)。更新序列号在每次更新该块时递增。在读取块时,这两个位置被读取,且具有有效CRC校验和和较高更新序列号的那一个被使用。然而,这不允许区分崩溃或位腐坏引入的损坏;例如,在块的活动位置中发生位翻转是可能的,从而导致活动副本无效。使用这样的方法,该系统退回到较旧和不准确的副本,并且将旧数据返回给用户,从而造成未检测到的数据损坏。
对于文件大小,重解析点具有最大大小16KB,其中4KB被用于根召回位图索引表。因此,使用4KB,可由根索引表跟踪的、两层设置(或召回位图索引表)中的召回位图的最大大小是约64MB。
召回位图索引表中的条目的最大数量是约4KB/2位=约16K。
召回位图文件的最大大小是约16KB*4KB=约64MB。
对于4096字节的召回大小,可由两层位图跟踪的最大文件大小是约2TB。
最大文件大小:约64M*8*4096B=约2TB
对于约128GB的VHD文件,召回位图文件大小是约16MB且根召回位图索引表大小是约1KB。对于大于约2TB的文件,中间召回位图索引文件可被使用,或者召回粒度可被增加。注意,在召回位图被初始化之后改变召回粒度是可能的,但这是非常昂贵的操作,因为使用较粗召回粒度来折叠召回范围涉及部分召回旧数据。对于生长超过大小限度的文件,如果召回位图不能被复位(经由完全重新优化),则一选项是增加召回位图高度。
下表示出了具有4KB召回粒度的每一召回位图高度所支持的大致最大文件大小。
召回位图高度 最大文件大小
0 多达约2TB
1 多达约16PB
2 多达约256EB
下表示出了具有两层召回位图的每一召回粒度所支持的大致最大文件大小。
召回大小 最大文件大小
512 多达约256GB
1024 多达约512GB
2048 多达约1TB
4096 多达约2TB
8192 多达约4TB
下表示出了示例文件格式:
下表示出了示例头部格式:
下表示出了示例块格式:
字段 描述 偏移 大小
位图 召回范围跟踪 0 4092字节
校验和 位图的CRC32校验和 4092 4字节
转向另一方面,即延迟转储清除,召回位图不必在部分召回完成之后立即被持久存储,而是该系统可以懒惰地做这一点。对于5秒延迟,这提供了例如IOP方面的几乎百分之四十改进增加。然而,风险是任何未被转储清除的元数据可导致用户数据丢失,可能是不可预测的。
召回位图变化基于用户/程序请求来转储清除,例如作为接口的合同的一部分。由于VHD情况中发出的大多数写是非高速缓存的非直写(non-write-through),所以它们在盘写高速缓存没有及时转储清除的情况下遭受损失。因此,VHD解析器在适当的时刻发出转储清除,这消除了对具有延迟定时器的需求。
直写I/O在完成之前被持久存储在盘上。召回位图被就地同步地转储清除。转储清除还结合文件关闭、转储清除卷、锁定卷以及解除安装卷来发生。任何待决/延迟召回位图更新在请求被转发给文件系统之前被转储清除出去。注意,锁定卷还包括以独占访问来打开卷句柄。
理论上,延迟转储清除召回位图是可接受的,因为高速缓存的写和非高速缓存的非直写不确定地写(除非盘不报告具有写高速缓存),而不必关心破坏合同。然而,在一个实现中,周期性地转储清除召回位图的更激进的方法被使用。
图4示出了可以相对于延迟转储清除采取的示例步骤,包括周期性转储清除方法。在步骤402,作出与是否关闭延迟转储清除有关的检查,例如,最大延迟时间被用户或程序命令设置成零,这可例如对直写高速缓存发生。如果是,则变窄404被执行以执行转储清除而无需延迟。否则,步骤402分支到步骤406。
在步骤406,对照阈值最大值来评估待决转储清除的数量;如果是,则步骤406进至步骤410,如下所述。如果否,则执行步骤408,它基于当前时间和最后转储清除时间来检查转储清除延迟是否已到达;(注意,时间是可配置的,并且例如可以是5秒、30秒等,作为崩溃保护与效率之间的所选折中)。如果否,则步骤408结束该过程,基本上等待直至待决转储清除的数量超过最大数量或达到等待时间。
如果待决转储清除的数量超过最大数量会达到等待时间,则步骤410确定是否已调度异步转储清除。如果是,则不需要做任何事;如果否,则步骤412调度异步转储清除。注意,文件数据被首先转储清除,随后元数据,使得如果其间发生崩溃,原始元数据保存不变,并且恢复先前文件状态。
图5示出了各组件501-507和它们相对于数据写的通信/数据流。如可看到的,在对范围进行写之前,去重复过滤器从块存储召回数据,其中它是从高速缓存或盘来读取的。在读回时,该范围在上述位图结构中被标记为脏的。对高速缓存(或盘,如果直写开启的话)的写随后发生。
在数据被提交时,写后操作和转储清除(它可被延迟)随后发生。高速缓存直至转储清除被允许,如上所述,其中重解析点在转储清除之后设置。
转向另一方面,即,打开文件的优化,一般而言,同一位图结构可被用来跟踪文件的一部分是否是脏的以及文件的一部分是否已被截除(变零,其中数据被移至块存储)。如将理解的,文件的脏部分不能被截除,即,写被留在文件中。
图6A示出先前未被优化的文件的优化如何发生。一般而言,写必须被跟踪,因为去重复系统600处理文件,使得这些变脏的一个或多个区域(范围被写,同时文件被优化,例如D)不被截除。截除准备块存储中的各个块,但只同时提交它们,使得对于整个文件的各个块或对于文件的某一子部分(例如,1千兆字节或2千兆字节增量),截除基本上一次性发生。在提交时,标记为脏的任何区域不被截除。脏跟踪数据结构662被用于这一目的,并且因为图1-3的上述数据结构已经具有这一数据,所以去重复系统也可以使用现有数据结构来用于这一目的。
对于先前已被优化但具有部分召回的一些数据的文件,使用辅助截除数据结构664。辅助数据结构664允许区分发生在区域的优化处理之前的写与发生在之后的写。发生在之前的写在截除提交时被优化(因为它们在截除后将不是干净的),然而,发生在之后的写需要在文件中保持是脏的。
注意,优化可以发生在文件的各子部分,例如,2千兆字节部分。这被称为持续优化。在当前子部分被优化之前变脏的区域不被关心,因为它们将需要等待另一优化。
关于对读进行服务,直至提交的时刻,读可正常继续,例如从文件流中。在截除时,对被优化的区域的读取随后需要来自块存储,因为文件流针对这些区域被变零。然而,理论上,读请求可以在截除时刻之前开始,但未完成。然而,截除之前的时刻被用作截除状态变更开始点,并且文件流数据不变零直至到达截除结束点。图6C经由时序图示出了这一点,其中向上箭头示出了状态变更开始点,且另一箭头示出了截除(结束点),其中向下箭头示出了示例读开始和结束。在截除开始点和截除结束点的时刻之间,块存储中的数据被提交并校正,但文件流数据尚未变零。在开始点之前开始的读被允许在截除结束(数据变零)点发生之前完成,即,截除延迟直至这些读完成为止。以此方式,读将得到正确数据。发生在状态变更开始点之后的读去往块存储,它现在包含正确数据(加标记为脏且将不被变零的任何文件流数据)。计数器被用来跟踪发生在截除开始点之前的待决读请求,并且在计数器随每一读完成递减而到达零时,截除结束点发生。然而,使用两个计数器,一个活动用于“开始点之前”读且一个对“开始点之后读”进行计数,因为这些“之后”读将一到达截除结束点就将变成下一“之前”读,即,计数器彼此交换,使得“之后”计数器现在变成活动“之前”计数器,且反之亦然。
去重复优化过程的各示例步骤在图7中表示。如将理解的,步骤704、718和720被提供以支持具有打开句柄的文件的优化。
步骤702确定被考虑优化的文件是否满足优化策略准则;如果否,步骤703表示以其他方式处理该文件,这可简单地跳过该文件。否则,文件760是要优化的目标文件,且步骤702继续至步骤704。
通过允许在优化期间对文件的变更(经由打开句柄),在开始时间tstart和结束时间tend之间作出的变更中的一些被反映在块存储762中,而其他则没有。删除文件的主数据流将因此丢失一些变更。为了防止丢失变更,主数据的在tstart和tend之间变更的各部分需要被维护,并且因而只有文件的未变更的部分可被截除(即,用对块存储中的各块的引用来替换)。
为此,去重复过滤器跟踪发生在tstart和tend之间的变更,如步骤704概括表示的,它开始跟踪对文件的写。注意,去重复过滤器被使用,因为该过滤器还是文件的主数据流在优化之后被截除的地方。还要注意,变更只需针对一个文件来跟踪,如果该特定文件正被优化的话。因此,在去重复系统开始优化任何文件之前,去重复系统通知过滤器。
优化(或重新优化)文件按典型的方式进行,例如在优化期间该文件被顺序地读取且其数据被存储作为块存储762中的块,如步骤708-716概括表示的。当优化在时刻tend完成时,文件760(其数据)被重解析点764替换且文件的主数据流被删除(变零)。注意,这一过程对首次优化以及先前已优化文件的重新优化同样有效。
过滤器在重解析点被去重复系统更新之后停止跟踪写,如步骤718概括表示的。
因而,优化系统在它开始优化文件之前(即,在它开始读取并将文件分块之前)向去重复过滤器下发通知。这一通知的接收使得过滤器在步骤704开始跟踪该文件的写。在结束点去重复之后,过滤器通过在它上面设置相关标志来对流句柄上下文加标签。以此方式,在该过程崩溃时,过滤器在句柄清除期间检测到这一点,所以正确的清除可被执行(包括停止跟踪写)。
写范围被跟踪在存储器中。如果存在崩溃,则该信息丢失,但这不是问题,因为无论如何优化都需要从头开始。写范围(偏移、长度)按召回(位图)粒度来缩放,并且被存储在数据结构中(如召回/数据访问)。指向数据结构的指针被添加到流上下文。如果这一指针是NULL(空),则这指示对于给定文件(默认),范围没有被跟踪。
写跟踪保持活动,直至文件的重解析点被更新之后,这经由发送给去重复过滤器的另一通知来知晓。文件将被写的范围维护在其数据流766中,因为它们没有被截除(标志720)。写跟踪通常在写前状态下完成,除了在过滤器开始跟踪写之前开始的写;那些写在写后状态中被跟踪。写被加标签,以告知它们是否被跟踪。
在存在处于写前状态的写时,写范围在以下位置被更新:
如果范围已经是脏的(被召回),则过滤器将写下发到文件系统。在这种情况下,在范围状态检查完成时,该范围被标记为已写。
如果该范围是干净的且写与召回大小对齐,则该范围在该范围被标记为脏的同一位置被标记为已写。这将原子地发生(同时使文件的流上下文保持锁定)。
如果该范围是干净的且未对齐,则召回首先发生。被写的范围在召回执行时在写时复制线程中被更新,同样是原子地执行的。
使用以上策略,不存在范围被标记为脏的但没有被写在被优化的文件的区域内的情况。
在首次优化或持续的情况下,该系统可以执行部分提交,例如,约每1千兆字节。作为部分提交的一部分,重解析点被更新,并且文件的主数据流被截除(设置成零数据),直至文件中在块存储中被备份的点。这允许针对写跟踪的有价值的优化,即代替跟踪从文件的开头到提交偏移的写,该系统只需跟踪从先前提交偏移到新提交点的写(提交点之间的距离是约1GB)。因为提交偏移在提交之前是未知的,所以它可以通过将每会话最大块的注册表把手(registry knob)和最大块大小(默认是2GB)相乘来逼近它。
在重新优化期间,当前不存在“真实”部分提交。即,重解析点不能被更新,直至重新优化到达文件偏移,至此文件被块存储所备份(它是文件的结束,除非它已被扩展)。因此,在重新优化期间,文件的主数据流不能被截除。一旦提交点通过由块存储所备份的大小,截除就发生。这意味着过滤器需要跟踪从文件的开始到提交点的写(这使用更多存储器)。
示例联网以及分布式环境
本领域技术人员可以理解,此处描述的各实施例和方法可结合任何计算机或其它客户机或服务器设备来实现,其可被部署为计算机网络的部分或在分布式计算环境中,并且可以被连接到任何类型一个或多个数据存储。在这一点上,此处描述的各实施例可在具有任何数量的存储器或存储单元的、并且任何数量的应用和进程跨任何数量的存储单元发生的任何计算机系统或环境中实现。这包括但不限于具有部署在具有远程或本地存储的网络环境或分布式计算环境中的服务器计算机和客户计算机的环境。
分布式计算通过计算设备和系统之间的通信交换来提供计算机资源和服务的共享。这些资源和服务包括信息的交换、对于诸如文件之类的对象的高速缓存存储和盘存储。这些资源和服务还包括多个处理单元之间的处理能力共享以便进行负载平衡、资源扩展、处理专门化等等。分布式计算利用网络连接,从而允许客户机利用其集体力量来使整个企业受益。就此,各种设备可具有可如参考本发明的各实施例描述地参与资源管理机制的应用、对象或资源。
图8提供了示例性的联网或分布式计算环境的示意图。该分布式计算环境包括计算对象810、812等以及计算对象或设备820、822、824、826、828等,这些计算对象或设备可包括如由示例应用830、832、834、836、838表示的程序、方法、数据存储、可编程逻辑等。可以理解,计算对象810、812等以及计算对象或设备820、822、824、826、828等可包括不同的设备,诸如个人数字助理(PDA)、音频/视频设备、移动电话、MP3播放器、个人计算机、膝上型计算机等。
每一个计算对象810、812等以及计算对象或设备820、822、824、826、828等可通过通信网络840直接或间接与一个或多个其他计算对象810、812等以及计算对象或设备820、822、824、826、828等进行通信。尽管在图8中被示为单个元件,但通信网络840可包括向图8的系统提供服务的其他计算对象和计算设备和/或可表示未示出的多个互连网络。每个计算对象810、812等或计算对象或设备820、822、824、826、828等还可以包含应用,诸如可以利用API或其他对象、软件、固件和/或硬件的、适于根据本发明的各实施例所提供的应用实现与其进行通信的应用830、832、834、836、838。
存在支持分布式计算环境的各种系统、组件和网络配置。例如,计算系统可由有线或无线系统、本地网络或广泛分布的网络连接在一起。当前,许多网络被耦合至因特网,因特网为广泛分布的计算提供了基础结构并包含许多不同的网络,但任何网络基础结构都可用于便于与如各实施例中所描述的系统的示例通信。
由此,可使用诸如客户机/服务器、对等、或混合体系结构之类的网络拓扑结构和网络基础结构的主机。“客户机”是使用与其无关的另一类或组的服务的一类或组中的成员。客户机可以是进程,例如大致上是请求由另一程序或进程提供的服务的一组指令或任务。客户机进程使用所请求的服务,而无需“知道”关于其他程序或服务本身的任何工作细节。
在客户机/服务器体系结构中,尤其在联网系统中,客户机通常是访问另一计算机(例如,服务器)所提供的共享网络资源的计算机。在图8的图示中,作为非限制性示例,计算对象或设备820、822、824、826、828等可被认为是客户机而计算对象810、812等可被认为是服务器,其中计算对象810、812等作为提供数据服务的服务器,诸如从客户机计算对象或设备820、822、824、826、828等接收数据、存储数据、处理数据、向客户机计算对象或设备820、822、824、826、828等发送数据,但任何计算机都可取决于环境而被认为是客户机、服务器、或两者。
服务器通常是可通过诸如因特网或无线网络基础架构之类的远程网络或本地网络访问的远程计算机系统。客户机进程可在第一计算机系统中活动,而服务器进程可在第二计算机系统中活动,它们通过通信介质相互通信,由此提供分布式功能性并允许多个客户机利用服务器的信息收集能力。
在通信网络840或总线是因特网的网络环境中,例如,计算对象810、812等可以是其他计算对象或设备820、822、824、826、828等经由诸如超文本传输协议(HTTP)之类的多种已知协议中的任一种与其通信的web服务器。计算对象810、812等作为服务器还可用作例如计算对象或设备820、822、824、826、828等的客户机,这可以是如分布式计算环境的特性。
示例计算设备
如上所述,有利地,本文所描述的技术可应用于任何设备。因此,应当理解,构想了结合各实施例使用的所有种类的手持式、便携式和其它计算设备和计算对象。因此,以下在图9中所述的通用远程计算机只是计算设备的一个示例。
各实施例可部分地经由操作系统来实现,以供设备或对象的服务开发者使用和/或被包括在用于执行本文中所述的各实施例的一个或多个功能方面的应用软件内。软件可以在由诸如客户机工作站、服务器或其它设备等一个或多个计算机执行的诸如程序模块等计算机可执行指令的通用上下文中描述。本领域的技术人员将理解,计算机系统具有可用于传递数据的各种配置和协议,并且由此没有特定配置或协议应当被认为是限制性的。
图9由此示出了其中可实现本文所述的各实施例的一个或多个方面的合适的计算系统环境900的一个示例,尽管如上所述,计算系统环境900仅为合适的计算环境的一个示例,并非对使用范围或功能提出任何限制。另外,计算系统环境900也不旨在被解释为对在示例计算系统环境900中所例示的组件中的任何一个或其组合有任何依赖。
参考图9,用于实现一个或多个实施例的示例性远程设备包括计算机910形式的通用计算设备。计算机910的组件可包括但不限于:处理单元920、系统存储器930以及将包括系统存储器在内的各种系统组件耦合到处理单元920的系统总线922。
计算机910通常包括各种计算机可读介质,并且可以是可由计算机910访问的任何可用介质。系统存储器930可包括诸如只读存储器(ROM)和/或随机存取存储器(RAM)之类的易失性和/或非易失性存储器形式的计算机存储介质。作为示例而非限制,系统存储器930还可包括操作系统、应用程序、其他程序模块、以及程序数据。
用户可通过输入设备940向计算机910输入命令和信息。监视器或其他类型的显示设备也经由诸如输出接口950之类的接口连接到系统总线922。除监视器以外,计算机还可包括诸如扬声器和打印机之类的其他外围输出设备,它们可通过输出接口950连接。
计算机910可使用到一个或多个其他远程计算机(诸如远程计算机970)的逻辑连接在联网或分布式环境中操作。远程计算机970可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点、或者任何其他远程媒体消费或传输设备,并且可包括以上关于计算机910所述的任何或全部元件。图9所示的逻辑连接包括诸如局域网(LAN)或广域网(WAN)之类的网络972,但也可包括其他网络/总线。这些联网环境在家庭、办公室、企业范围的计算机网络、内联网和因特网中是常见的。
如上所述,尽管结合各种计算设备和网络体系结构描述了各示例性实施例,但基本概念可被应用于其中期望改进资源使用的效率的任何网络系统和任何计算设备或系统。
而且,存在实现相同或相似功能性的多种方法,例如适当的API、工具箱、驱动程序代码、操作系统、控件、独立或可下载软件对象等,它们使得应用和服务能够使用本文中提供的技术。由此,本文中的各实施例从API(或其他软件对象)的观点以及从实现如本文中描述的一个或多个实施例的软件或硬件对象构想。由此,本文中所述的各实施例可具有完全采用硬件、部分采用硬件并且部分采用软件、以及采用软件的方面。
本文中所使用的词语“示例”意味着用作示例、实例或说明。为避免疑惑,本文所公开的主题不限于这些示例。另外,在此所述的被描述为“示例”的任意方面或设计并不一定要被解释为相比其它方面或设计更优选或有利。此外,在使用术语“包括”、“具有”、“包含”和其他类似词语的程度上,为避免疑惑,这些术语旨在当用于权利要求中时以类似于术语“包括”作为开放的过渡词的方式是包含性的而不排除任何附加或其他元素。
如所述的,本文中所述的各种技术可结合硬件或软件或,在适当时,以两者的组合来实现。如本文中所使用的,术语“组件”、“模块”、“系统”等同样旨在指计算机相关实体,或者是硬件、硬件和软件的组合、软件或者是执行中的软件。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、可执行件、执行的线程、程序、和/或计算机。作为说明,在计算机上运行的应用和计算机都可以是组件。一个或多个组件可驻留在进程和/或执行的线程内,并且组件可位于一个计算机上和/或分布在两个或更多的计算机之间。
如前所述的系统已经参考若干组件之间的交互来描述。可以理解,这些系统和组件可包括组件或指定的子组件、某些指定的组件或子组件和/或附加的组件,并且根据上述内容的各种置换和组合。子组件还可作为通信地耦合到其他组件的组件来实现,而不是被包括在父组件内(层次性)。另外,应注意到一个或多个组件可被组合成提供聚集功能性的单个组件,或被分成若干单独的子组件,且诸如管理层等任何一个或多个中间层可被设置成通信耦合到这样的子组件以便提供集成功能性。本文中所述的任何组件也可与一个或多个本文中未专门描述的但本领域技术人员一般已知的其他组件进行交互。
鉴于本文所述的示例系统,可根据参考各附图的流程图还可理解根据所述的主题来实现方法。尽管为了说明简洁起见,作为一系列框示出和描述的方法,但是应当理解,各实施例不仅仅限于框的次序,因为一些框可以与本文中所描绘和描述的框不同的次序发生和/或与其他框并发地发生。尽管经由流程图示出了非顺序或分支的流程,但可以理解,可实现达到相同或类似结果的各种其他分支、流程路径和框的次序。此外,一些所示的框在实现下面所述的方法时是任选的。
结语
尽管本发明易于作出各种修改和替换构造,但其某些说明性实施例在附图中示出并在上面被详细地描述。然而应当了解,这不旨在将本发明限于所公开的具体形式,而是相反地,旨在覆盖落入本发明的精神和范围之内的所有修改、替换构造和等效方案。
除本文中所述的各实施例以外,应当理解,可使用其他类似实施例,或者可对所述实施例作出修改和添加以便执行对应实施例的相同或等效功能而不背离这些实施例。此外,多个处理芯片或多个设备可共享本文中所述的一个或多个功能的性能,并且类似地,存储可跨多个设备实现。因此,本发明不限于任何单个实施例,而是要根据所附权利要求书的广度、精神和范围来解释。

Claims (9)

1.一种在计算环境中的系统,包括:细粒度部分召回机制,配置成与文件相关联地维护哪一个或多个文件数据范围相对于包括块存储中的干净数据的干净范围而言是脏的信息,其中每一个脏范围具有独立于文件系统范围跟踪粒度的大小,并且其中所述细粒度部分召回机制在多个分层安排的位图数据结构中与所述文件相关联地维护所述信息,其中所述多个分层安排的位图数据结构包括用于跟踪实际脏范围的主召回位图和以更大粒度来跟踪聚集的脏范围的召回位图索引表。
2.如权利要求1所述的系统,其特征在于,将一个或多个范围变脏成一个或多个脏范围的写数据量不与范围对齐相对齐,并且其中所述细粒度部分召回机制还被配置成从所述块存储召回数据以与所述一个或多个脏范围相对齐。
3.如权利要求1所述的系统,还包括:去重复系统,配置成将所述文件的状态从部分经去重复状态变回完全经去重复状态或较少部分经去重复状态,包括在所述文件被打开以供写入时。
4.一种在计算环境中的方法,包括:在一个或多个跟踪数据结构中跟踪部分召回的文件的哪些范围是脏的,其中每一个脏范围具有独立于文件系统范围跟踪粒度的大小,所述跟踪数据结构是多个分层安排的位图数据结构,其中所述多个分层安排的位图数据结构包括用于跟踪实际脏范围的主召回位图和以更大粒度来跟踪聚集的脏范围的召回位图索引表;以及基于一个或多个转储清除准则,将所述一个或多个跟踪结构从易失性存储器懒惰地转储清除到非易失性存储器。
5.如权利要求4所述的方法,其特征在于:基于一个或多个转储清除准则懒惰地转储清除所述一个或多个跟踪结构包括基于最后转储清除对照阈值时间值来评估时间,或对照最大值来评估待决转储清除的数量。
6.一种方法,包括:优化打开文件,包括使用跟踪哪一个或多个文件范围是脏的以及哪些是干净的数据,其中每一个脏范围具有独立于文件系统范围跟踪粒度的大小,其中所述数据被维护在多个分层安排的位图数据结构中,并且其中所述多个分层安排的位图数据结构包括用于跟踪实际脏范围的主召回位图和以更大粒度来跟踪聚集的脏范围的召回位图索引表,并截除所述干净范围。
7.如权利要求6所述的方法,其特征在于,还包括跟踪哪些写发生在范围已被优化之后。
8.根据权利要求6所述的方法,其特征在于:优化所述文件包括在持续优化中优化所述文件,其中所述文件的各子部分在不同的时间被优化。
9.如权利要求6所述的方法,其特征在于,还包括:跟踪发生在截除开始点之前的一个或多个读请求,并且不截除文件流数据直至发生在所述截除开始点之前的每一读请求完成为止;以及跟踪在截除点之前开始的一个或多个读请求,并避免未完成的读请求的截除。
CN201480010936.0A 2013-02-28 2014-02-26 经去重复文件的细粒度部分召回 Active CN105009119B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/781,585 2013-02-28
US13/781,585 US10180943B2 (en) 2013-02-28 2013-02-28 Granular partial recall of deduplicated files
PCT/US2014/018457 WO2014134079A1 (en) 2013-02-28 2014-02-26 Granular partial recall of deduplicated files

Publications (2)

Publication Number Publication Date
CN105009119A CN105009119A (zh) 2015-10-28
CN105009119B true CN105009119B (zh) 2019-10-01

Family

ID=50390180

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480010936.0A Active CN105009119B (zh) 2013-02-28 2014-02-26 经去重复文件的细粒度部分召回

Country Status (5)

Country Link
US (1) US10180943B2 (zh)
EP (1) EP2962223B1 (zh)
CN (1) CN105009119B (zh)
BR (1) BR112015020193B1 (zh)
WO (1) WO2014134079A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10621144B2 (en) 2017-03-23 2020-04-14 International Business Machines Corporation Parallel deduplication using automatic chunk sizing
US10452496B2 (en) * 2017-10-06 2019-10-22 Vmware, Inc. System and method for managing storage transaction requests

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567503A (zh) * 2010-12-16 2012-07-11 微软公司 用于数据去重复的可扩展流水线
CN102591944A (zh) * 2010-12-16 2012-07-18 微软公司 去重复的文件的部分召回
CN102609442A (zh) * 2010-12-28 2012-07-25 微软公司 用于数据去重复的自适应索引

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2366014B (en) * 2000-08-19 2004-10-13 Ibm Free space collection in information storage systems
US20060075007A1 (en) * 2004-09-17 2006-04-06 International Business Machines Corporation System and method for optimizing a storage system to support full utilization of storage space
US7613750B2 (en) 2006-05-29 2009-11-03 Microsoft Corporation Creating frequent application-consistent backups efficiently
US7627621B2 (en) * 2007-02-12 2009-12-01 Sun Microsystems, Inc. Method and system for minor garbage collection
US20090198704A1 (en) * 2008-01-25 2009-08-06 Klavs Landberg Method for automated network file and directory virtualization
US8346730B2 (en) * 2008-04-25 2013-01-01 Netapp. Inc. Deduplication of data on disk devices based on a threshold number of sequential blocks
US7814149B1 (en) 2008-09-29 2010-10-12 Symantec Operating Corporation Client side data deduplication
US8312242B2 (en) * 2008-10-30 2012-11-13 Hewlett-Packard Development Company, L.P. Tracking memory space in a storage system
US8140491B2 (en) 2009-03-26 2012-03-20 International Business Machines Corporation Storage management through adaptive deduplication
US20100274772A1 (en) 2009-04-23 2010-10-28 Allen Samuels Compressed data objects referenced via address references and compression references
US8996826B2 (en) * 2009-04-28 2015-03-31 Symantec Corporation Techniques for system recovery using change tracking
US8321648B2 (en) 2009-10-26 2012-11-27 Netapp, Inc Use of similarity hash to route data for improved deduplication in a storage server cluster
US8140821B1 (en) * 2009-12-18 2012-03-20 Emc Corporation Efficient read/write algorithms and associated mapping for block-level data reduction processes
US20110202329A1 (en) 2010-02-12 2011-08-18 James Howard Goodnight Scenario State Processing Systems And Methods For Operation Within A Grid Computing Environment
US8612401B2 (en) * 2010-04-28 2013-12-17 Dell Products L.P. Heat indices for file systems and block storage
US9823981B2 (en) 2011-03-11 2017-11-21 Microsoft Technology Licensing, Llc Backup and restore strategies for data deduplication
US8612392B2 (en) 2011-05-09 2013-12-17 International Business Machines Corporation Identifying modified chunks in a data set for storage
US8762349B2 (en) 2011-07-14 2014-06-24 Dell Products L.P. Intelligent deduplication data prefetching
US8589640B2 (en) * 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567503A (zh) * 2010-12-16 2012-07-11 微软公司 用于数据去重复的可扩展流水线
CN102591944A (zh) * 2010-12-16 2012-07-18 微软公司 去重复的文件的部分召回
CN102609442A (zh) * 2010-12-28 2012-07-25 微软公司 用于数据去重复的自适应索引

Also Published As

Publication number Publication date
US20140244601A1 (en) 2014-08-28
BR112015020193A2 (pt) 2017-08-29
CN105009119A (zh) 2015-10-28
EP2962223A1 (en) 2016-01-06
US10180943B2 (en) 2019-01-15
BR112015020193B1 (pt) 2021-12-28
WO2014134079A1 (en) 2014-09-04
EP2962223B1 (en) 2019-12-11
BR112015020193A8 (pt) 2017-11-07

Similar Documents

Publication Publication Date Title
JP7329518B2 (ja) 追加専用記憶デバイスを使用するデータベース管理のためのシステム及び方法
US9740566B2 (en) Snapshot creation workflow
CN103502926B (zh) 基于扩展区的存储架构
US9037544B1 (en) Snapshots and clones of volumes in a storage system
US8683152B2 (en) Fast migration of virtual storage partition data across storage systems
US7702866B2 (en) Use of volume containers in replication and provisioning management
US11301159B2 (en) Storage system and data transfer method
WO2011027775A1 (ja) 分散ストレージシステム、分散ストレージ方法および分散ストレージ用プログラムとストレージノード
US10572184B2 (en) Garbage collection in data storage systems
JP4220174B2 (ja) ストレージシステムのコンテンツ更新方法
US20220043582A1 (en) Read and Write Load Sharing in a Storage Array Via Partitioned Ownership of Data Blocks
CN110221779A (zh) 分布式持久性内存存储系统的构建方法
US10761764B1 (en) Storage system and data transfer method
US20160246522A1 (en) Exactly once semantics
CN105009119B (zh) 经去重复文件的细粒度部分召回
US11436256B2 (en) Information processing apparatus and information processing system
US11875060B2 (en) Replication techniques using a replication log
US20240004798A1 (en) Techniques for efficient user log flushing with shortcut logical address binding and postponing mapping information updates
US10846012B2 (en) Storage system for minimizing required storage capacity during remote volume replication pair duplication
KR101295210B1 (ko) 데이터베이스 관리 방법 및 장치
US11853592B2 (en) Reversible write techniques using physical storage device offloading
US20240111429A1 (en) Techniques for collecting and utilizing activity metrics
US20240176741A1 (en) Caching techniques using a two-level read cache
US20240020167A1 (en) Key-value storage engine for range scan sorted queries
JP2012168840A (ja) ストレージシステム、ストレージ方法、及びプログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20171027

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant