CN107870922B - 一种用于数据去重的方法、设备和*** - Google Patents
一种用于数据去重的方法、设备和*** Download PDFInfo
- Publication number
- CN107870922B CN107870922B CN201610849588.7A CN201610849588A CN107870922B CN 107870922 B CN107870922 B CN 107870922B CN 201610849588 A CN201610849588 A CN 201610849588A CN 107870922 B CN107870922 B CN 107870922B
- Authority
- CN
- China
- Prior art keywords
- pointer
- deduplicated
- data
- data block
- vbm
- 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/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/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开提供了一种用于数据去重的方法、设备和***。在根据本公开的一个实施方式中,该用于数据去重的方法包括:针对待被去重数据块,将指向所述待被去重数据块的指针设置为指向对应的待保留数据块的指针,并设置指向所述待被去重数据块的虚拟指针;响应于可用存储容量达到预定值,取消指向各个将被回收的待被去重数据块的虚拟指针,并回收所述各个将被回收的待被去重数据块的存储空间,其中在指向所述待被去重数据块的虚拟指针可用的情况下,通过所述虚拟指针来访问所述待去重的数据块。在本公开的实施方式中,重复的数据块在可用存储容量不足之前并不会被回收,而借助于设置的虚拟指针,可以在重复数据块被回收之前,通过该虚拟指针来直接访问数据块,因此可以得到良好的数据访问性能。
Description
技术领域
本公开的实施方式涉及数据存储技术领域,并且更具体地涉及用于数据去重的方法和***。
背景技术
“去重”是数据存储中常用的一项技术,其目的是要尽量去除存储区中重复的数据,以便节约存储空间,提高存储效率。现有的去重技术是采用虚拟块管理(VBM)方法,利用该方法,可以通过仅仅扫描文件管理***而无需访问文件节点和间接块,来提供一种有效的数据块去重手段。
通常,在通过去重扫描发现重复数据后,将会把所发现的重复数据的VBM模块的指针重新导向至已有的数据的VBM模块,并回收重复数据的存储空间,使其变为空闲存储空间。
然而,由于重复数据的虚拟块管理模块的指针重新导向,将会造成读取操作的重新导向以及写入操作被分隔(write split),而这些都会引起性能降级。写入被分隔主要是由于引入了碎片,这是因为去重操作在大多数情况下都会把原本连续的数据存储区打碎成若干片,引入碎片是这种去重操作与生俱来的劣势。目前,去重方法所引发的性能问题已经潜在地对该技术的使用造成了一些障碍。
发明内容
有鉴于此,本公开提供了一种新的数据去重的技术方案,以克服或者缓解如前所述的现有技术中存在的至少一部分缺陷。
根据本公开的第一方面,提供了一种用于数据去重的方法。该方法可以包括:针对待被去重数据块,将指向所述待被去重数据块的指针设置为指向对应的待保留数据块的指针,并设置指向所述待被去重数据块的虚拟指针;响应于可用存储容量达到预定值,取消指向各个将被回收的待被去重数据块的虚拟指针,并回收所述各个将被回收的待被去重数据块的存储空间。特别地,在指向所述待被去重数据块的虚拟指针可用的情况下,通过所述虚拟指针来访问所述待去重的数据块。
在根据本公开的一个实施方式中,所述方法可以进一步包括在双指针结构中采用与被设置为指向对应的待保留数据块的指针的所述指针类似的结构,存储指向所述待被去重数据块的所述虚拟指针。
在根据本公开的另一实施方式中,所述方法可以进一步包括:针对指向所述待被去重数据块的所述虚拟指针,设置指示所述虚拟指针是否可用的虚拟指针指示位。
在根据本公开的又一实施方式中,取消指向各个将被回收的待被去重数据块的虚拟指针可以包括:将所述虚拟指针指示位设置为指示所述虚拟指针不可用的值。
在根据本公开的再一实施方式中,所述方法可以进一步包括:针对指向每个数据块的指针,设置用于指示该指针被多少个其他数据块的指针所共享的共享计数位,其中在所述共享计数位的值大于0且所述虚拟指针不可用的情况下,在针对数据块执行写操作时为所述写操作分配新存储资源,并将所述写操作所针对的数据块的指针设置为指向用新分配的存储资源存储的数据块。
在根据本公开的另一实施方式中,在为所述写操作分配新存储资源时,在没有空闲存储资源可用的情况下,执行以下操作其中之一:将可回收资源中长度较长的连续数据块回收,以便分配给所述写操作;以及将所述可回收资源中长度与所述写操作更为匹配的连续数据块回收,以便分配给所述写操作。
在根据本公开的又一实施方式中,所述方法可以进一步包括:确定所有可被回收的待被去重数据块,以及将所述所有可被回收的待被去重数据块中的一部分确定为所述将被回收的待被去重数据块。
在根据本公开的再一实施方式中,所述所有待被去重数据块中的一部分包括所述所有待被去重数据块中的连续数据块。
根据本公开的第二方面,提供了一种用于数据去重的设备。所述设备可以包括:指针设置模块和空间回收模块。所述指针设置模块可以被配置为针对待被去重数据块,将指向所述待被去重数据块的指针设置为指向对应的待保留数据块的指针,并设置指向所述待被去重数据块的虚拟指针。所述空间回收模块可以被配置为响应于可用存储容量达到预定值,取消指向各个将被回收的待被去重数据块的虚拟指针,并回收所述各个将被回收的待被去重数据块的存储空间。特别地,在指向所述待被去重的虚拟指针可用的情况下,通过所述虚拟指针来直接访问所述待去重的数据块。
根据本公开的第三方面,提供了一种用于数据去重的***。所述***包括:VBM地址解析器,空间监测器和VBM扫描器。所述VBM地址解析器,被配置为从各个VBM模块获取被访问的数据块的地址。所述空间监测器,被配置为监测可用存储空间。所述VBM扫描器可以被配置为扫描各个VBM模块,以及针对待被去重数据块,将相应的VBM模块的指针设置为指向对应的待保留数据块的VBM模块的指针,以及针对所述相应的VBM设置指向所述待被去重数据块的虚拟指针,并且响应于确定所述空间监测器所监测的可用存储空间达到预定值,取消指向各个将被回收的待被去重数据块的虚拟指针,并回收所述各个将被回收的待被去重数据块的存储空间。所述VBM地址解析器还可以进一步被配置为在指向被访问数据块的虚拟指针可用的情况下,将所述虚拟指针所指向的地址作为所述数据块的地址。
根据本公开的第四方面,还提供了一种计算机程序产品,其上包括程序代码,当所述程序代码在处理器上执行时致使所述处理器中执行根据本公开的第一方面的方法。
在本公开的实施方式中,提供了一种改进的用于数据去重的技术方案。根据该技术方案,针对待去重的数据块,在将指向其的指针重定向的同时,还进一步为其设置一个对应的指向该待去重数据的虚拟指针,同时在可用存储容量不足之前不会对待去重的数据块所占用的空间进行回收。这样,在可用存储容量不足之前,该数据块的虚拟指针是可用的,这时可以借助于该虚拟指针来直接访问数据块。因而,数据访问的性能可以得到显著提高。
附图说明
通过结合附图并参考以下详细说明,本公开各实施方式的特征、优点及其他方面将变得更加明显,在附图中:
图1示意性地示出了可以在其中实现根据本公开的实施方式的计算机设备的结构方框图;
图2示意性地示出了在传统去重方案中在去重之前VBM模块与叶子间接块和物理数据块之间的关系的示意图;
图3示意性地示出了在传统去重方案中在去重之后VBM模块与叶子间接块和物理数据块之间的关系的示意图;
图4示意性地示出了根据本公开的一个实施方式的用于数据去重的方法的流程图;
图5示意性的示出了根据本公开的一个实施方式的在去重扫描之后的虚拟管理模块与叶子间接块和物理数据块之间的关系的示意图;
图6示意性地示出了根据本公开的一个实施方式的用于VBM模块的示例性数据结构的图示;
图7示意性地示出了根据本公开的一个实施方式的用于执行写操作的过程的流程图;
图8示意性地示出了根据本公开的一个实施方式的在写入操作时的VBM属性修改的示意图;
图9示意性地示出了根据本公开的一个实施方式的用于执行资源重新分配的过程的流程图;
图10示意性地示出了根据本公开的一个实施方式的用于执行读操作的过程的流程图;
图11示意性地示出了根据本公开的一个实施方式的用于执行资源回收扫描的过程的流程图;
图12示意性地示出了根据本公开的一个实施方式的用于数据去重的设备的方框图;以及
图13示意性地示出了根据本公开的一个实施方式的用于数据去重的***的方框图。
具体实施方式
在下文中,将参考附图详细描述本公开的各个示例性实施方式。应当注意,这些附图和描述涉及的仅仅是作为示例的优选实施方式。应该指出的是,根据随后描述,很容易设想出此处公开的结构和方法的替换实施方式,并且可以在不脱离本公开要求保护的公开的原理的情况下使用这些替代实施方式。
应当理解,给出这些示例性实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。此外,在附图中,出于说明的目的,将可选的步骤、模块、单元等以虚线框示出。
在此使用的术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”。其他术语的相关定义将在下文描述中给出。
在详细描述根据本公开的用于数据去重的技术方案之前,将首先参考图1来描述可以在其中实现本公开的实施方式的计算机设备。图1示意性地示出了可以实现根据本公开的实施方式的计算机设备的结构方框图。
图1中所示的计算机***包括CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、***总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示器控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。在这些部件中,与***总线104相连的有CPU 101、RAM 102、ROM 103、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108和显示器控制器109。硬盘110与硬盘控制器105相连,键盘111与键盘控制器106相连,串行外部设备112与串行接口控制器107相连,并行外部设备113与并行接口控制器108相连,以及显示器114与显示器控制器109相连。
需要说明的是,图1所述的结构方框图仅仅为了示例的目的而示出的,并非是对本公开的限制。在一些情况下,可以根据需要添加或者减少其中的一些设备。此外,本公开的实施方式是针对在诸如硬盘110中的存储设备中存储的数据进行去重的技术方案,其可以作为计算机程序代码存储在上计算机的存储设备中,在被载入诸如内存中运行时,将使得CPU 101执行根据本公开的用于数据去重的技术方案。
为了使得本领域技术人员更加理解本公开的实施例中所提出的方案的精神,将会将参考图2和图3来首先简要描述一下传统的去重技术方案。
图2示意性地示出了在去重之前VBM模块与叶子间接块和物理数据块之间的关系的图示。此处的“间接块”是索引块或者是地址索引块,其是指向数据块的地址指针。图2所示的IB1至IB3间接块是在物理数据块之间的最后一层的间接块,即叶子间接块。一个间接块可以指向一个或多个数据块。DB1-DB4是位于物理存储设备上的物理数据块。为了去重操作,在叶子间接块IB1至IB3和物理数据块DB1-DB4直接设置了VBM模块(在下文中,为了描述方面将会将其简称为“VBM”),VBM模块是为了对物理数据进行管理而设置的虚拟数据管理模块。一个VBM模块仅仅可以指向一个物理数据块;而针对指向多个物理数据块的间接块设置多个对应的VBM模块,并通过这多个VBM模块分别指向对应的物理数据块。借助于VBM,就有可能针对每个数据块执行去重。
图3示出了示意性地示出了在去重之后VBM模块与叶子间接块和物理数据块之间的关系的图示。如图3所示,在执行去重扫描之后确定DB2和DB3是与DB1重复的数据块,因此需要对其去重。针对待被去重数据块DB2和DB3,将分别把指向他们的VBM2和VBM3的指针设置为指向与待被保留数据块DB1对应的VBM1,即将其重新定向为指向该数据块DB1的VBM1,并将DB2和DB3所占用的空间回收,以使其成为空闲存储空间。
这样,根据传统的去重方案,在对数据DB2和DB3进行访问时,又一DB2和DB3因与DB1相同而被去重,因此将首先经过VBM2和VBM3的指针而重新导向到VBM1,然后再经由VBM1的指针来访问与他们相同的DB1。因此,VBM2和VBM3的指针的重新导向将会造成读取操作的重新导向,并且还会引起写入操作的写入被分隔(write split),这继而引起性能降级。去重操作把原本连续的数据区打破成若干片,引入了不期望的碎片,这是写入被分隔的主要原因。因此,原本具有优良性能的连续读写变成了性能较差的随机读写。
为此,在本公开中提供了一种用于数据去重的解决方案,以便至少部分上克服现有技术中的问题。根据本公开的实施方式,在针对待被去重数据块,将指向所述待被去重数据块的指针设置为指向对应的待保留数据块的指针,并设置指向所述待被去重数据块的虚拟指针,此外,响应于可用存储容量达到预定值,取消指向各个将被回收的待被去重数据块的虚拟指针,并回收所述各个将被回收的待被去重数据块的存储空间。同时,在指向所述待被去重数据块的虚拟指针可用的情况下,通过所述虚拟指针来直接访问所述待去重的数据块。因此,根据该技术方案,针对待去重的数据块,在将指向其的指针重定向的同时,还进一步为其设置一个对应的指向该待去重数据的虚拟指针,同时在可用存储容量不足之前不会对待去重的数据块所占用的空间进行回收。这样,在可用存储容量不足之前,该数据块的虚拟指针仍然是可用的,这时可以借助于该虚拟指针来直接访问数据块。因而,数据访问的性能可以得到显著提高。
在下文中,将参考图4来描述根据本公开的一个实施方式的用于数据去重的方法的流程图。
如图4所示,首先在步骤401,针对待被去重数据块,将指向所述待被去重数据块的指针设置为指向对应的待保留数据块的指针,并设置指向所述待被去重数据块的虚拟指针。
在本公开的实施方式中,去重扫描也可称为资源回收扫描,是在需要去重时扫描VBM模块以便确定可回收数据块的过程。该过程可以按照预定的频率或者时间间隔周期性执行,或者也可以在可用空间达到一个预定阈值时或者空间不足无法完成一个正在进行的操作时强制执行,该预定阈值可以比用于回收存储空间时使用的阈值小得多。在执行去重扫描发现重复数据后,可以针对待去重的数据块,将指向其的VBM模块的指针重新导向到待被保留数据块的VBM模块的指针,而且与此同时,针对该待被去重数据块还设置指向其的虚拟指针。此外,需要说明的是,针对待去重的数据块,也可以保留指向其的VBM模块的指针,将该指针设置为虚拟指针,同时可以针对该VBM新增一个指向待被保留数据块的VBM模块的指针。这样同样能够实现前述“将指向所述待被去重数据块的指针设置为指向对应的待保留数据块的指针,并设置指向所述待被去重数据块的虚拟指针”的操作。
根据前面的描述可知,在根据本公开的实施方式中,针对待被去重数据块存在两个指针,一个指针指向与对应的待保留数据块相关的指针,其间接地指向于待被去重数据相同的数据块,另一指针是虚拟指针,其直接指向待被去重数据块。此处的虚拟指针的“虚拟”并非意味着这个指针是虚拟的或者是不存在的,而是意味着原本由于数据要被去重而不存在但是根据本公开而特别设置的一个指针,因此,虚拟指针的设置本身表明了相关数据块当前所处的一个特殊状态,换句话说,该虚拟指针指向的数据块是将被去重但尚未被回收资源的数据块。
出于说明的目的,图5示出了根据本公开的一个实施方式在执行去重扫描之后的VBM模块与叶子间接块和物理数据块之间的关系的图示。如图5所示,针对对待被去重数据块的DB2和DB3,将其对应的VBM2和VBM3的指针重新导向到与待被保留数据块DB1对应的VBM1,同时针对VBM 2和VBM 3设置指向DB2和DB3的虚拟指针。因此,从图5可以看出,对于与待被去重数据块相关的VBM2和VBM3中的每个,均存在两个指针结构,一个是指向将被保留的数据块的VBM的指针,一个是直接指向待去重数据块的虚拟指针。
针对上述指针结构可以采用任何适当的结构来存储。在根据本公开的一个实施方式中,可以采用双指针结构来存储VBM的这两个指针。而且这两个指针可以例如采用类似的结构进行存储。出于说明的目的,在图6中示出了一个示例性的双指针结构。
参考图6,在图中所述的示例性结构具有128比特的大小,前面64个比特用于存储VBM的真实指针,后面64比特用于存储VBM的虚拟指针。特别地,前面64比特例如可以具有与传统的VBM的指针类似的结构,以便考虑到兼容性。在前面的64比特中,前四个比特是属性比特,指示该映射是否是VBM映射;后面的17个比特是权重比特,指示VBM更新的优先级;随后的1个比特被预留;后面的42个比特是指示物理数据块地址的文件***块编号FSBN,其可能指示其原物理数据块的地址,在将被去重或者已被去重的情况下,还可能指示与待保留的数据块对应的FSBN。后面的64比特用于存储虚拟指针,其结构域前面的64比特基本类似,但是有些比特的含义是不同的。如图6所示,在后面的64个比特中,前四个比特是预留比特;后面的17个比特是共享计数比特,指示该VBM的指针被多少个其他VBM共享,换句话说,有多少个其他VBM的指针被重新定向到该VBM,对于新VBM,其值被设为0;随后的1个比特是用于指示虚拟指针是否可用的虚拟数据共享位VDS,为1指示该VBM具有一个可用的虚拟指针,为0指示没有可用虚拟指针,对于新的VBM,VDS被设置为0;最后的42个比特是指示与待被去重数据的地址的虚拟文件***块编号vFSBN,其存储在将被去重的数据块的FSBN。
接着返回参考图4,在步骤402,响应于可用存储容量达到预定值,取消指向各个将被回收的待被去重数据块的虚拟指针,并回收所述各个将被回收的待被去重数据块的存储空间。在待去重数据块的存储空间被实际回收之前,指向所述待被去重数据块的虚拟指针是可用的,在这种情况下,可以通过所述虚拟指针来访问所述待去重的数据块。
因此,在根据本公开的实施方式中,与传统去重方案不同,其采用的是延迟回收资源的方式,即尽在需要时才会对可回收资源进行后水。因此,通过这种去重方式,借助于虚拟指针,可以在保证充足的可用存储空间的同时,提供较佳的数据访问性能。
在根据本公开的一个实施方式中,取消指向各个将被回收的待被去重数据块的虚拟指针具体可以通过将所述虚拟指针指示位(例如图6所示结构中的VDS)设置为指示所述虚拟指针不可用的值(例如0,或者其他指示不可用的值)来实现。另外,实际上也有可能直接删除相应数据结构中存储的所有虚拟指针信息或仅仅删除vFSBN来实现该虚拟指针的取消。
此外,在回收所述各个将被回收的待被去重数据块的存储空间时,可以进一步地执行优化操作。在根据本公开的一个实施方式中,在执行存储空间回收之前,可以首先查找所有可被回收的待被去重数据块。然后从所有这些可被回收的待被去重数据块中确定出一部分数据块来作为将被回收的数据块。这一部分数据是能够满足可用存储空间要求的数据,也即不必将所有的可回收存储空间都回收,这样可以尽量保持虚拟指针可用。同时还可以进一步从中确定出能够减小碎片产生风险的数据块来作为将被回收的数据块。特别地,所述所有待被去重数据块中的连续数据块被确定为被回收数据块的那部分数据块。这样,在进行存储空间回收时,并非是直接进行简单回收,而是会考虑到碎片产生的可能。针对较为连续的存储空间进行优先回收,而对于不连续或者连续长度较小容易产生碎片的空间将不进行回收。而是尽量保持占用不连续或者连续长度较小容易产生碎片的空间的数据块的虚拟指针继续可用。这些数据将会待其与其他待回收数据块形成连续的较大块存储区域后在进行回收。因而,一方面可以保证数据块的访问效率,同时可以尽量减少碎片的产生。
此外,如果在执行写入操作时发现VBM的虚拟指针不可用且该VBM还与其他VBM共享指针的VBM,这意味着该写入操作是对已去重数据块的写操作。此时,将要针对所述写操作分配新存储空间,将对原数据块拷贝并将其存储在新分配存储空间中,以便能够对已去重的数据块进行改写。这时,还需要将该VBM的SC数目减1,同时将作为真实访问目标的VBM的指针将被重新定向到存储在新分配资源的新数据块,并将虚拟指针设置为无效值。如果在为所述写操作分配资源时,发现已经没有足够的空闲空间,这时可以执行资源重新分配操作,即回收扫描可用资源执行资源回收。优选地将可用资源中长度较长的连续数据块分配给所述写操作,这样可以尽可能保证高效的顺序读/写。替换地,也可以将所述可用资源中长度与所述写操作更为匹配的连续数据块分配给所述写操作。这样可以更好地利用资源,但是同时也增加了分配资源时的处理开销。此外,需要说明的是,此时的资源重新分配操作本身是为了解决突发的存储空间不足问题,其可以是仅仅解决目前空间不足的紧急需求的简化资源回收操作。此外,备选地,也可以考虑采用与步骤402中资源回收类似的操作。
为了更加充分的说明本公开中提供的数据去重方案,将在下文中参考图7至图11来描述在根据本公开的实施方式中的数据去重方案下的各种相关操作。
首先参考图7,图7示意性地示出了根据本公开的一个实施方式的用于执行写操作的过程的流程图。过程700从步骤701开始,在该步骤701确定是否需要创建新的VBM,即这次写入操作是新数据的写入操作还是对已有数据的改写操作。例如,可以提供检查待被写入数据的目标地址来执行步骤701。如果待被写入数据的目标地址是新地址,则需要创建新的VBM,于是可以在步骤702创建相应的VBM并进行初始化,然后过程700从步骤702进行至步骤703。如果待被写入数据的目标地址是已有数据的地址,则不需要创建新的VBM,过程700直接跳转到步骤703。在步骤703,将会扫描被访问数据块的VBM并获得VBM的属性信息。接着在步骤704,确定是否SC或者VDS为真,即是两者中是否有一个不为零。
如果在步骤704确定两者都为0,即SC=0且VDS=0,这意味着没有任何一个VBM的指针被重新导向到该VBM,且该VBM没有虚拟指针,这时过程700直接跳转到步骤712,将数据写入目标地址的数据块。如果相反,在步骤704确定SC和VDS中至少有一个不为0,则进一步在步骤705确定VDS是否等于1,即是否存在虚拟指针。如果VDS=1,即存在虚拟指针,这意味着,该写入操作时针对一个将被去重但尚未被回收的数据块的操作。此时可以直接针对数据块进行写入,但是需要在步骤706修改相关的VBM属性。出于说明的目的,将参考图8对写入操作时的VBM属性修改进行描述。
如图8所示,在写入I/O操作针对VBM2的情况下,在VBM2的VDS=1时,意味着对应的数据块DB2尽管已经被标记为重复数据,但是其存储空间尚未被回收,数据块DB2还实际存储在原来的位置,因而可以直接对DB2进行操作。此时,可以修改待被去重数据DB 2的VBM模块VBM2。例如,可以首先经由VBM2的FSBN获取VBM1的属性,然后将VBM1的SC值减小1,然后将VBM2实际指针设置为虚拟指针指向的地址,或者说将VBM2的指针重新定向到数据块DB2,这可以通过将VBM2的vFSBN拷贝并复制到VBM2的FSBN中来实现。同时,还可以将VBM2的VDS设置为0,取消虚拟指针。这时VBM模块与物理数据块之间的关系如图8下图所示。在执行完相关VBM属性的修改后,方法可以跳转到步骤712,将数据写入目标VBM的指针所指向的数据块。
另一方面,当在步骤705确定VDS=0的情况下,将在步骤707进一步判断CS是否大于0,即是否存在其他VBM指向该VBM。如果在步骤707确定SC=0或者其他无效的值,则这意味着存在错误,因为在步骤704已经确定SC或者VDS中至少一个为真,而此时却出现了VDS和SC均为零的情况。在这种情况下,可以在步骤708抛出错误,指示错误的发生,并退出此过程。相反,如果在步骤707确定CS大于0,则意味着这是一个指向被去重数据的写操作。此时在步骤709确定是否存在空闲块空间,如果没有则在步骤710针对该空闲块执行资源重新分配的操作(该操作将会参考图9进行描述,此处不再详述),此后过程700进入到步骤711。如果在步骤709确定存在空闲块空间,则过程700将跳过步骤710,直接进入到步骤711。在步骤711,为写操作分配空间,即为写操作所针对的数据块分配存储空间,并将相应的VBM定向到新数据块,即重新定位到存储在新分配空间出的数据块。然后该过程进行到步骤712,在该步骤中,将数据写入到新数据块中。
在新的写入I/O请求到来时,如果数据块意外地已经被填满,不存在空闲数据块空间,则此时需要找到一些可回收数据块来释放资源,以便能够继续进行操作,即图7中的步骤710的情况。在下文中,将参考图9来描述根据本公开的一个实施方式的用于执行资源重新分配的过程。
在图9所示的实施方式中,基本考虑是可回收数据块应该是VDS=1(即虚拟指针可用)的数据块,此外找到的这些可回收数据块的地址优选是连续地址。根据这些要求可以从可回收数据块中找到较优化的数据块,以满足不可预测的I/O请求。具体地,如图9所示,首先在步骤901,从存储池中获取至少一部分VBM,然后在步骤902从这些VBM中查找VDS=1的VBM,以形成VBM列表。例如,可以获得各个VBM的属性,如果其属性VDS=1,则将其放入到一个VBM列表中,如果VDS≠1,则抛弃该VBM。在形成上述VBM列表后,在步骤903按照可回收数据块的地址以从大到小的顺序对VBM列表中的VBM进行排序。接着,在步骤904中根据排序找到最大长度的连续地址,并在步骤905返回该最大长度连续地址的低位地址。该低位地址指示了针对数据块重新分配的资源的起始位置。需要说明的是,尽管在图9中将分配的地址描述为最大长度的连续地址,然而需要说明的是,本公开并不局限于此,也可以分配长度与所述写操作更为匹配的连续数据块。此外,需要说明的是,图9所示的资源重新分配操作本身是为了解决突发的存储空间不足问题,因此其可以是仅仅解决目前空间不足的紧急需求的简化资源回收操作。此外,备选地,也可以考虑采用前面所述的去重扫描类似的操作。该去重扫描将参考图11详细说明,此处不再赘述。
此外,图10还示意性地示出了根据本公开的一个实施方式的执行读操作的过程的流程图。如图10所示,首先该过程从步骤1001开始,在步骤1001,获取目标数据块的VBM属性。例如当存在读I/O请求时,过程将会扫描数据块的VBM并获得VBM的属性。然后在步骤1002,该过程将会检查VBM的属性值中的VDS的值,确定其是否为1或者任何其他指示虚拟指针是可用的值。如果VDS=0,则表示没有可用虚拟指针,这可能是目标数据不是重复数据的情况或者目标数据已被去重的情况。此时,该过程1000将会获取该VBM的FSBN,然后从该指针所指向的地址或者从该指针指向的另一指针所指向的地址取回数据,并将取回的数据反馈给读I/O请求。如果VDS=1,这意味着存在虚拟指针,即与该VBM相关的数据块是待去重但尚未被回收空间的数据块。此时,可以获取该VBM的vFSBN,直接从该虚拟指针所指向的地址取回数据值,将其反馈给读I/O请求。根据上面的描述,可以清楚看出读操作要比写操作的过程简单得多,这是因为读操作并不涉及资源分配与VBM属性修改等操作。
在图11中还示意性地示出了根据本公开的一个实施方式的执行资源回收扫描的过程的流程图。资源回收扫描也称作去重扫描,是在需要进行存储空间释放时扫描VBM,以查找可回收数据块的过程。该过程可以是按照一定频率或者时间间隔执行的周期性扫描过程,也可以是在存储空间达到一个预定的较低阈值时或者存储空间无法完成当前正在进行的操作时强制执行的过程。特别地,在该过程中可以将可回收数据块的空间和碎片尺寸考虑在内。
如图11所示,该过程1000从步骤1101开始,在该步骤中查找所有可被回收的VBM,即所待去重数据块,这些数据块的VBM的VDS=1。然后,在步骤1102查看***是否具有足够的可用空间,例如已用空间是否大于80%,或者其他预定值。如果已用空间小于预定值,表明具有充足的可用空间,此时不会执行空间资源回收操作,因而直接退出本次扫描过程。如果在步骤1102确定已用空间高于80%,即可用存储空间低于20%,则表明可用存储空间不足,此时在步骤1103可以确定将被回收的数据块。将被回收的数据块可以是所有可被回收的数据块中的一部分。其能够满足足够的存储空间即可,而且还也可以进一步返回优化的数据块,这些优化的数据块例如是待被去重数据块中的连续数据块,更进一步地可以是长度较大的连续数据块。这样可以在避免产生碎片的同时,尽量保证那些长度较小的待去重数据块的I/O读取性能。最后在步骤1104返回确定的回收数据块,以便回收其相应的空间资源。
为此,在本公开的实施方式中,提供了一种改进的用于数据去重的技术方案。根据该技术方案,针对待去重的数据块,在将指向其的指针重定向的同时,还进一步为其设置一个对应的指向该待去重数据的虚拟指针,同时在可用存储容量不足之前不会对待去重的数据块所占用的空间进行回收。这样,在可用存储容量不足之前,该数据块的虚拟指针是可用的,这时可以借助于该虚拟指针来直接访问数据块。因而,数据访问的性能可以得到显著提高。此外,在进行资源回收时,还可以采用优化方式,减少碎片产生的可能性,而在重新分配资源时也可以考虑存储空间的特点进而保证数据的顺序读取,进一步提高数据访问性能。
图12中示意性地示出了根据本公开的一个实施方式的用于数据去重的设备的方框图。如图12所示,设备1200可以包括指针设置模块1201和空间回收模块1202。所述指针设置模块1201可以被配置为针对待被去重数据块,将指向所述待被去重数据块的指针设置为指向对应的待保留数据块的指针,并设置指向所述待被去重数据块的虚拟指针。所述空间回收模块1202可以被配置为响应于可用存储容量达到预定值,取消指向各个将被回收的待被去重数据块的虚拟指针,并回收所述各个将被回收的待被去重数据块的存储空间。在指向所述待被去重的虚拟指针可用的情况下,通过所述虚拟指针来直接访问所述待去重的数据块。
在根据本公开的一个实施方式中,所述指针设置模块1201可以进一步被配置为在双指针结构中采用与被设置为指向对应的待保留数据块的指针的所述指针类似的结构,存储指向所述待被去重数据块的所述虚拟指针。
在根据本公开的另一实施方式中,所述指针设置模块1202可以进一步被配置为针对指向所述待被去重数据块的所述虚拟指针,设置指示所述虚拟指针是否可用的虚拟指针指示位。
在根据本公开的再一实施方式中,所述指针设置模块1202可以进一步被配置为通过将所述虚拟指针指示位设置为指示所述虚拟指针不可用的值,来取消指向各个将被回收的待被去重数据块的虚拟指针。
在根据本公开的又一实施方式中,所述指针设置模块1201可以进一步被配置为:针对指向每个数据块的指针,设置用于指示该指针被多少个其他数据块的指针所共享的共享计数位,以及其中在所述共享计数位的值大于0且所述虚拟指针不可用的情况下,在执行写操作时为所述写操作分配新存储资源,并将相应的数据块的指针设置为指向利用新分配的存储资源存储的数据块。
在根据本公开的又一实施方式中,在为所述写操作分配新的存储资源时,在没有空闲存储资源的情况下,可回收资源中长度较长的连续数据块可以被回收,以便分配给所述写操作。或者备选地,可回收资源中长度与所述写操作更为匹配的连续数据块可以被回收,以便分配给所述写操作。
此外,如图所示,设备1200还可以进一步包括回收数据块确定模块1203。所述回收数据块确定模块1203可以被配置为确定所有可被回收的待被去重数据块,以及将所述所有可被回收的待被去重数据块中的一部分确定为所述将被回收的待被去重数据块。优选地,所述所有待被去重数据块中的一部分包括所述所有待被去重数据块中的连续数据块。
图13还示意性地示出了根据本公开的一个实施方式的用于数据去重的***的方框图。该***1300还可以包括VBM地址解析器1301,空间监测器1302以及VBM扫描器1303。
该VBM地址解析器1301与现有的VBM地址解析器不同,其是具有增强功能的VBM地址解析器。该VBM地址解析器1301可以被配置为从各个VBM模块获取被访问的数据块的地址。该地址是被访问数据块的实际地址。当出现I/O请求时,该VBM地址解析器将会读取相应的VBM模块,并返回能够访问数据的较佳方式。也就是说,VBM地址解析器1301可以进一步被配置为在被访问数据块的虚拟指针可用的情况下,将所述虚拟指针所指向的地址作为所述数据块的地址。以便增强数据访问的性能。
所述空间监测器1302可以被配置为监测可用存储空间。在本公开中,对于存在虚拟指针的VBM模块,还可以通过虚拟指针区访问那些待被去重的数据块,这些数据块本身可被去重但是由于尚未到资源回收时机,所以还实际存在。因此,这些待被去重数据块的资源属于可回收存储空间,但尚不属于可用存储空间。因此在本公开的实施方式中,空间检测器1302将不会将这些待被去重数据块的资源计算可用存储空间内。
所述VBM扫描器1303负责扫描VBM模块以及处理重复数据和管理对应的VBM模块。具体地,VBM扫描器1303可以被配置为扫描各个VBM模块,以及针对待被去重数据块,将相应的VBM模块的指针设置为指向对应的待保留数据块的VBM模块的指针,以及设置指向所述待被去重数据块的虚拟指针。而且VBM扫描器1303还可以被配置为响应于确定所述空间监测器所监测的可用存储空间达到预定值,取消指向各个将被回收的待被去重数据块的虚拟指针,并回收所述各个将被回收的待被去重数据块的存储空间。
在根据本公开的一个实施方式中,所述VBM扫描器1303可以被配置为在双指针结构中采用与被设置为对应的待保留数据块的所述指针类似的结构,存储指向所述待被去重数据块的所述虚拟指针。
在根据本公开的另一实施方式中,所述VBM扫描器1303可以被配置为:针对指向所述待被去重数据块的所述虚拟指针,设置指示所述虚拟指针是否可用的虚拟指针指示位,以及通过将所述虚拟指针指示位设置为指示所述虚拟指针不可用的值,来取消指向各个将被回收的待被去重数据块的虚拟指针。
在根据本公开的再一实施方式中,所述VBM扫描器1303可以被配置为针对指向每个数据块的指针,设置用于指示该指针被多少个其他数据块的指针所共享的共享计数位,以及在所述共享计数位的值大于0且所述虚拟指针不可用的情况下,在针对数据块执行写操作时为所述写操作分配新存储资源,并将所述写操作所针对的数据块的指针设置为指向利用新分配的存储资源存储的数据块。
在根据本公开的又一实施方式中,在为所述写操作分配新存储资源时,在没有空闲存储资源可用的情况下,可用资源中长度较长的连续数据块可以被回收,以便分配给所述写操作。或者备选地,所述可用资源中长度与所述写操作更为匹配的连续数据块可以被回收,以便分配给所述写操作。
在根据本公开的另一实施方式中,所述VBM扫描器1303可以被进一步配置为:确定所有可被回收的待被去重数据块,以及将所述所有可被回收的待被去重数据块中的一部分确定为所述将被回收的待被去重数据块,其中所述所有待被去重数据块中的一部分包括所述所有待被去重数据块中的连续数据块。
在根据本公开的另一实施方式中,***1300可以进一步包括VBM管理器1304。所述VBM管理器1304是用于管理VBM的模块,主要用于实现针对外部调用模块的重要接口,并提供API给外部调用模块。具体地,所述VBM管理器1304可以被配置为向文件***提供用来分配数据块的接口,例如应用编程接口API,以及分配和回收用于VBM和数据块的资源。其功能例如包括但不局限于管理VBM,包括分发VBM,回收利用不再使用的VBM;向外部文件***提供API,以便分配数据块资源;从池空间中分配数据块资源,以及从池空间中数据块资源。
在根据本公开的再一实施方式中,***1300可以进一步包括VBM处理单元,被配置为针对数据访问操作修改或者创建VBM,以及为调用程序提供经过封装的操作。这样,中间操作对于外部调用模块而言是透明的,它看起来就像在直接访问实际物理数据块。
需要说明的是,在上文中出于简化的目的,简要描述了设备1200和1300的各个部件的操作。关于这些部件的操作的详细细节,可以参考图1至图11对方法的详细描述中的相关部分。
此外,还需要说明的是,本公开的数据去重方案还可以通过一种计算机程序产品来实现。该计算机程序其上包括程序代码,所述程序代码在被处理器上执行时,致使所述处理器执行根据本公开用于对文本数据去重的方法。
另外,还需要说明的是,尽管在本文中参考采用VBM的去重方案对本发明进行了详细说明,但可以理解本发明的核心思想在于在延迟资源回收以及虚拟指针的使用,因此显然公开并不局限于采用VBM的实施方式,而是还可以应用于并未使用VBM的其他去重方案,只要能够为此使其受益。
此外,需要注意的是,本公开的实施方式可以在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本公开的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本公开的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本公开的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本公开的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本公开的方法和/或技术方案。而调用本公开的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本公开的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本公开的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本公开不限于上述示范性实施例的细节,而且在不背离本公开的精神或基本特征的情况下,能够以其他的具体形式实现本公开。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本公开的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本公开内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
另外,还可以理解的是,根据此处的公开内容和教导,本领域技术人员还可以设想到各种修改、变形、替换或等效而并不背离本公开的精神和范围。这些修改、变形、替换或等效均包括在仅由权利要求书限定的本公开的范围内。
Claims (24)
1.一种用于数据去重的方法,包括:
针对待被去重数据块,将指向所述待被去重数据块的指针设置为指向对应的待保留数据块的指针,并设置指向所述待被去重数据块的虚拟指针;
响应于可用存储容量达到预定值,取消指向各个将被回收的待被去重数据块的虚拟指针,并回收所述各个将被回收的待被去重数据块的存储空间,
其中在指向所述待被去重数据块的虚拟指针可用的情况下,通过所述虚拟指针来访问所述待被去重数据块。
2.根据权利要求1所述的方法,进一步包括:
在双指针结构中采用与被设置为指向对应的待保留数据块的指针的所述指针类似的结构,存储指向所述待被去重数据块的所述虚拟指针。
3.根据权利要求1或2所述的方法,进一步包括:
针对指向所述待被去重数据块的所述虚拟指针,设置指示所述虚拟指针是否可用的虚拟指针指示位。
4.根据权利要求3所述的方法,其中取消指向各个将被回收的待被去重数据块的虚拟指针包括:将所述虚拟指针指示位设置为指示所述虚拟指针不可用的值。
5.根据权利要求1或2所述的方法,进一步包括:
针对指向每个数据块的指针,设置用于指示该指针被多少个其他数据块的指针所共享的共享计数位,
其中在所述共享计数位的值大于0且所述虚拟指针不可用的情况下,在针对数据块执行写操作时为所述写操作分配新存储资源,并将所述写操作所针对的数据块的指针设置为指向用新分配的存储资源存储的数据块。
6.根据权利要求5所述的方法,其中在为所述写操作分配新存储资源时,在没有空闲存储资源可用的情况下,执行以下操作其中之一:
将可回收资源中长度较长的连续数据块回收,以便分配给所述写操作;以及
将所述可回收资源中长度与所述写操作更为匹配的连续数据块回收,以便分配给所述写操作。
7.根据权利要求1或2所述的方法,进一步包括:
确定所有可被回收的待被去重数据块,以及
将所述所有可被回收的待被去重数据块中的一部分确定为将被回收的待被去重数据块。
8.根据权利要求7所述的方法,其中所述所有可被回收的待被去重数据块中的一部分包括所述所有可被回收的待被去重数据块中的连续数据块。
9.一种用于数据去重的设备,包括:
指针设置模块,被配置为针对待被去重数据块,将指向所述待被去重数据块的指针设置为指向对应的待保留数据块的指针,并设置指向所述待被去重数据块的虚拟指针;
空间回收模块,被配置为响应于可用存储容量达到预定值,取消指向各个将被回收的待被去重数据块的虚拟指针,并回收所述各个将被回收的待被去重数据块的存储空间,
其中在指向所述待被去重的虚拟指针可用的情况下,通过所述虚拟指针来直接访问所述待被去重数据块。
10.根据权利要求9所述的设备,其中所述指针设置模块进一步被配置为在双指针结构中采用与被设置为指向对应的待保留数据块的指针的所述指针类似的结构,存储指向所述待被去重数据块的所述虚拟指针。
11.根据权利要求9或10所述的设备,其中所述指针设置模块进一步被配置为针对指向所述待被去重数据块的所述虚拟指针,设置指示所述虚拟指针是否可用的虚拟指针指示位。
12.根据权利要求11所述的设备,其中所述指针设置模块进一步被配置为通过将所述虚拟指针指示位设置为指示所述虚拟指针不可用的值,来取消指向各个将被回收的待被去重数据块的虚拟指针。
13.根据权利要求9或10所述的设备,其中所述指针设置模块进一步被配置为:
针对指向每个数据块的指针,设置用于指示该指针被多少个其他数据块的指针所共享的共享计数位,以及
其中在所述共享计数位的值大于0且所述虚拟指针不可用的情况下,在执行写操作时为所述写操作分配新存储资源,并将相应的数据块的指针设置为指向利用新分配的存储资源存储的数据块。
14.根据权利要求13所述的设备,其中在为所述写操作分配新的存储资源时,在没有空闲存储资源可用的情况下,
可回收资源中长度较长的连续数据块被回收,以便分配给所述写操作;或者
可回收资源中长度与所述写操作更为匹配的连续数据块被回收,以便分配给所述写操作。
15.根据权利要求9或10所述的设备,进一步包括回收数据块确定模块,被配置为:
确定所有可被回收的待被去重数据块,以及
将所述所有可被回收的待被去重数据块中的一部分确定为将被回收的待被去重数据块。
16.根据权利要求15所述的设备,其中所述所有可被回收的待被去重数据块中的一部分包括所述所有可被回收的待被去重数据块中的连续数据块。
17.一种用于数据去重的***,包括:
虚拟块管理VBM地址解析器,被配置为从各个VBM模块获取被访问的数据块的地址;
空间监测器,被配置为监测可用存储空间;以及
VBM扫描器,被配置为扫描各个VBM模块,以及针对待被去重数据块,将相应的VBM模块的指针设置为指向对应的待保留数据块的VBM模块的指针,以及针对所述相应的VBM模块设置指向所述待被去重数据块的虚拟指针,并且响应于确定所述空间监测器所监测的可用存储空间达到预定值,取消指向各个将被回收的待被去重数据块的虚拟指针,并回收所述各个将被回收的待被去重数据块的存储空间;
以及其中所述VBM地址解析器进一步被配置为在被访问数据块的虚拟指针可用的情况下,将所述虚拟指针所指向的地址作为所述数据块的地址。
18.根据权利要求17所述的***,其中所述VBM扫描器被配置为在双指针结构中采用与被设置为对应的待保留数据块的所述指针类似的结构,存储指向所述待被去重数据块的所述虚拟指针。
19.根据权利要求17或18所述的***,其中所述VBM扫描器被配置为:
针对指向所述待被去重数据块的所述虚拟指针,设置指示所述虚拟指针是否可用的虚拟指针指示位,以及
通过将所述虚拟指针指示位设置为指示所述虚拟指针不可用的值,来取消指向各个将被回收的待被去重数据块的虚拟指针。
20.根据权利要求17或18所述的***,其中所述VBM扫描器被配置为针对指向每个数据块的指针,设置用于指示该指针被多少个其他数据块的指针所共享的共享计数位,以及
在所述共享计数位的值大于0且所述虚拟指针不可用的情况下,在针对数据块执行写操作时为所述写操作分配新存储资源,并将所述写操作所针对的数据块的指针设置为指向利用新分配的存储资源存储的数据块。
21.根据权利要求20所述的***,其中在为所述写操作分配新存储资源时,在没有空闲存储资源可用的情况下,
可回收资源中长度较长的连续数据块被回收,以便分配给所述写操作;或者
所述可回收资源中长度与所述写操作更为匹配的连续数据块被回收,以便分配给所述写操作。
22.根据权利要求17或18所述的***,其中所述VBM扫描器被进一步配置为:
确定所有可被回收的待被去重数据块,以及
将所述所有可被回收的待被去重数据块中的一部分确定为将被回收的待被去重数据块,其中所述所有可被回收的待被去重数据块中的一部分包括所述所有可被回收的待被去重数据块中的连续数据块。
23.根据权利要求17或18所述的***,进一步包括VBM管理器,被配置为向文件***提供用来分配数据块的接口以及分配和回收用于VBM模块和数据块的资源。
24.根据权利要求17或18所述的***,进一步包括VBM处理单元,被配置为针对数据访问操作修改或者创建VBM模块,以及为调用程序提供经过封装的操作。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610849588.7A CN107870922B (zh) | 2016-09-23 | 2016-09-23 | 一种用于数据去重的方法、设备和*** |
US15/712,280 US10789210B2 (en) | 2016-09-23 | 2017-09-22 | Method, apparatus, and system for data deduplication |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610849588.7A CN107870922B (zh) | 2016-09-23 | 2016-09-23 | 一种用于数据去重的方法、设备和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107870922A CN107870922A (zh) | 2018-04-03 |
CN107870922B true CN107870922B (zh) | 2022-02-22 |
Family
ID=61685461
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610849588.7A Active CN107870922B (zh) | 2016-09-23 | 2016-09-23 | 一种用于数据去重的方法、设备和*** |
Country Status (2)
Country | Link |
---|---|
US (1) | US10789210B2 (zh) |
CN (1) | CN107870922B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124254B (zh) | 2018-10-30 | 2023-09-29 | 伊姆西Ip控股有限责任公司 | 调度存储空间回收请求的方法、电子设备和程序产品 |
US11620049B2 (en) | 2020-07-31 | 2023-04-04 | EMC IP Holding Company LLC | Method, electronic device and computer program product for managing storage space |
US11797207B2 (en) | 2020-08-03 | 2023-10-24 | Cornell University | Base and compressed difference data deduplication |
CN112181291B (zh) * | 2020-09-04 | 2022-08-02 | 杭州宏杉科技股份有限公司 | 数据回写方法、装置、电子设备及机器可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101809559A (zh) * | 2007-09-05 | 2010-08-18 | 伊姆西公司 | 在虚拟化服务器和虚拟化存储环境中的去重复 |
US8195636B2 (en) * | 2009-04-29 | 2012-06-05 | Netapp, Inc. | Predicting space reclamation in deduplicated datasets |
CN103873506A (zh) * | 2012-12-12 | 2014-06-18 | 鸿富锦精密工业(深圳)有限公司 | 存储集群中的数据块去重***及方法 |
CN104583966A (zh) * | 2012-10-01 | 2015-04-29 | 株式会社日立制作所 | 用于去重复文件***的备份和恢复***以及对应的服务器和方法 |
CN105430480A (zh) * | 2015-11-13 | 2016-03-23 | Tcl集团股份有限公司 | 一种视频数据存储的方法及*** |
US9384206B1 (en) * | 2013-12-26 | 2016-07-05 | Emc Corporation | Managing data deduplication in storage systems |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8412682B2 (en) * | 2006-06-29 | 2013-04-02 | Netapp, Inc. | System and method for retrieving and using block fingerprints for data deduplication |
US7747584B1 (en) * | 2006-08-22 | 2010-06-29 | Netapp, Inc. | System and method for enabling de-duplication in a storage system architecture |
US9047305B2 (en) * | 2012-11-12 | 2015-06-02 | Quantum Corporation | Methods and systems for vectored data de-duplication |
US8671082B1 (en) * | 2009-02-26 | 2014-03-11 | Netapp, Inc. | Use of predefined block pointers to reduce duplicate storage of certain data in a storage subsystem of a storage server |
US8442952B1 (en) * | 2011-03-30 | 2013-05-14 | Emc Corporation | Recovering in deduplication systems |
US8620973B1 (en) * | 2012-09-25 | 2013-12-31 | Emc Corporation | Creating point-in-time copies of file maps for multiple versions of a production file to preserve file map allocations for the production file |
US9298726B1 (en) * | 2012-10-01 | 2016-03-29 | Netapp, Inc. | Techniques for using a bloom filter in a duplication operation |
EP2799973B1 (en) * | 2013-04-30 | 2017-11-22 | iNuron NV | A method for layered storage of enterprise data |
US9891860B1 (en) * | 2013-06-28 | 2018-02-13 | EMC IP Holding Company, LLC. | Managing copying of data in storage systems |
US9460102B1 (en) * | 2013-12-26 | 2016-10-04 | Emc Corporation | Managing data deduplication in storage systems based on I/O activities |
WO2015195936A1 (en) * | 2014-06-18 | 2015-12-23 | Citrix Systems, Inc. | Range-based data deduplication |
US10222987B2 (en) * | 2016-02-11 | 2019-03-05 | Dell Products L.P. | Data deduplication with augmented cuckoo filters |
WO2017196315A1 (en) * | 2016-05-11 | 2017-11-16 | Hitachi, Ltd. | Data storage system and process for reducing read and write amplifications |
CN107506314B (zh) | 2016-06-14 | 2021-05-28 | 伊姆西Ip控股有限责任公司 | 用于管理存储***的方法和装置 |
CN110413444B (zh) | 2018-04-27 | 2023-05-09 | 伊姆西Ip控股有限责任公司 | 实现存储卷的一致性组的快照集 |
-
2016
- 2016-09-23 CN CN201610849588.7A patent/CN107870922B/zh active Active
-
2017
- 2017-09-22 US US15/712,280 patent/US10789210B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101809559A (zh) * | 2007-09-05 | 2010-08-18 | 伊姆西公司 | 在虚拟化服务器和虚拟化存储环境中的去重复 |
US8195636B2 (en) * | 2009-04-29 | 2012-06-05 | Netapp, Inc. | Predicting space reclamation in deduplicated datasets |
CN104583966A (zh) * | 2012-10-01 | 2015-04-29 | 株式会社日立制作所 | 用于去重复文件***的备份和恢复***以及对应的服务器和方法 |
CN103873506A (zh) * | 2012-12-12 | 2014-06-18 | 鸿富锦精密工业(深圳)有限公司 | 存储集群中的数据块去重***及方法 |
US9384206B1 (en) * | 2013-12-26 | 2016-07-05 | Emc Corporation | Managing data deduplication in storage systems |
CN105430480A (zh) * | 2015-11-13 | 2016-03-23 | Tcl集团股份有限公司 | 一种视频数据存储的方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN107870922A (zh) | 2018-04-03 |
US10789210B2 (en) | 2020-09-29 |
US20180089218A1 (en) | 2018-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10929341B2 (en) | Iterative object scanning for information lifecycle management | |
CN107870922B (zh) | 一种用于数据去重的方法、设备和*** | |
US8504792B2 (en) | Methods and apparatuses to allocate file storage via tree representations of a bitmap | |
US7716448B2 (en) | Page oriented memory management | |
US10108653B2 (en) | Concurrent reads and inserts into a data structure without latching or waiting by readers | |
CN107533508B (zh) | 用于减少压缩存储器时的存储器承诺用量的方法和*** | |
US11245774B2 (en) | Cache storage for streaming data | |
US20070136385A1 (en) | Defensive Heap Memory Management | |
CN109697016B (zh) | 用于改进容器的存储性能的方法和装置 | |
US20060123215A1 (en) | Advanced memory management architecture for large data volumes | |
US20060282620A1 (en) | Weighted LRU for associative caches | |
US9304946B2 (en) | Hardware-base accelerator for managing copy-on-write of multi-level caches utilizing block copy-on-write differential update table | |
WO2024099448A1 (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
US20210089442A1 (en) | Dynamically allocating memory pool subinstances | |
CN114327917A (zh) | 内存管理方法、计算设备及可读存储介质 | |
CN115599544A (zh) | 内存管理方法、装置、计算机设备及存储介质 | |
US10210067B1 (en) | Space accounting in presence of data storage pre-mapper | |
US10289345B1 (en) | Contention and metadata write amplification reduction in log structured data storage mapping | |
US7711921B2 (en) | Page oriented memory management | |
KR100907477B1 (ko) | 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법 | |
US20100283793A1 (en) | System available cache color map | |
WO2018233820A1 (en) | SYSTEMS AND METHODS FOR MANAGING JOURNAL STRUCTURE | |
US7836248B2 (en) | Methods and systems for managing persistent storage of small data objects | |
US10209909B1 (en) | Storage element cloning in presence of data storage pre-mapper | |
CN115756838A (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 |
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 |