一种用于数据去重的方法、设备和系统技术方案

技术编号:17615360 阅读:42 留言:0更新日期:2018-04-04 06:38
本公开提供了一种用于数据去重的方法、设备和系统。在根据本公开的一个实施方式中,该用于数据去重的方法包括:针对待被去重数据块,将指向所述待被去重数据块的指针设置为指向对应的待保留数据块的指针,并设置指向所述待被去重数据块的虚拟指针;响应于可用存储容量达到预定值,取消指向各个将被回收的待被去重数据块的虚拟指针,并回收所述各个将被回收的待被去重数据块的存储空间,其中在指向所述待被去重数据块的虚拟指针可用的情况下,通过所述虚拟指针来访问所述待去重的数据块。在本公开的实施方式中,重复的数据块在可用存储容量不足之前并不会被回收,而借助于设置的虚拟指针,可以在重复数据块被回收之前,通过该虚拟指针来直接访问数据块,因此可以得到良好的数据访问性能。

A method, device, and system for data removal

【技术实现步骤摘要】
一种用于数据去重的方法、设备和系统
本公开的实施方式涉及数据存储
,并且更具体地涉及用于数据去重的方法和系统。
技术介绍
“去重”是数据存储中常用的一项技术,其目的是要尽量去除存储区中重复的数据,以便节约存储空间,提高存储效率。现有的去重技术是采用虚拟块管理(VBM)方法,利用该方法,可以通过仅仅扫描文件管理系统而无需访问文件节点和间接块,来提供一种有效的数据块去重手段。通常,在通过去重扫描发现重复数据后,将会把所发现的重复数据的VBM模块的指针重新导向至已有的数据的VBM模块,并回收重复数据的存储空间,使其变为空闲存储空间。然而,由于重复数据的虚拟块管理模块的指针重新导向,将会造成读取操作的重新导向以及写入操作被分隔(writesplit),而这些都会引起性能降级。写入被分隔主要是由于引入了碎片,这是因为去重操作在大多数情况下都会把原本连续的数据存储区打碎成若干片,引入碎片是这种去重操作与生俱来的劣势。目前,去重方法所引发的性能问题已经潜在地对该技术的使用造成了一些障碍。
技术实现思路
有鉴于此,本公开提供了一种新的数据去重的技术方案,以克服或者缓解如前所述的现有技术中存在的至少一部分缺陷。根据本公开的第一方面,提供了一种用于数据去重的方法。该方法可以包括:针对待被去重数据块,将指向所述待被去重数据块的指针设置为指向对应的待保留数据块的指针,并设置指向所述待被去重数据块的虚拟指针;响应于可用存储容量达到预定值,取消指向各个将被回收的待被去重数据块的虚拟指针,并回收所述各个将被回收的待被去重数据块的存储空间。特别地,在指向所述待被去重数据块的虚拟指针可用的情况下,通过所述虚拟指针来访问所述待去重的数据块。在根据本公开的一个实施方式中,所述方法可以进一步包括在双指针结构中采用与被设置为指向对应的待保留数据块的指针的所述指针类似的结构,存储指向所述待被去重数据块的所述虚拟指针。在根据本公开的另一实施方式中,所述方法可以进一步包括:针对指向所述待被去重数据块的所述虚拟指针,设置指示所述虚拟指针是否可用的虚拟指针指示位。在根据本公开的又一实施方式中,取消指向各个将被回收的待被去重数据块的虚拟指针可以包括:将所述虚拟指针指示位设置为指示所述虚拟指针不可用的值。在根据本公开的再一实施方式中,所述方法可以进一步包括:针对指向每个数据块的指针,设置用于指示该指针被多少个其他数据块的指针所共享的共享计数位,其中在所述共享计数位的值大于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.一种用于数据去重的方法,包括:针对待被去重数据块,将指向所述待被去重数据块的指针设置为指向对应的待保留数据块的指针,并设置指向所述待被去重数据块的虚拟指针;响应于可用存储容量达到预定值,取消指向各个将被回收的待被去重数据块的虚拟指针,并回收所述各个将被回收的待被去重数据块的存储空间,其中在指向所述待被去重数据块的虚拟指针可用的情况下,通过所述虚拟指针来访问所述待去重的数据块。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且所述虚拟指针不可用的情况下,在执行写操作时为所述写操作分配新...

【专利技术属性】
技术研发人员:鄢彪黄佳廖睿胡博吴迁
申请(专利权)人:伊姆西IP控股有限责任公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1