确定针对垃圾收集的去重复存储区中的未引用页面的制作方法

文档序号:11530672阅读:134来源:国知局
确定针对垃圾收集的去重复存储区中的未引用页面的制造方法与工艺



背景技术:

消费者和公司生成和使用的电子数据的数量和大小在规模和复杂性上都会随着相关应用的规模和复杂性的增长而继续增长。作为响应,容纳越来越多且复杂的数据以及相关应用的数据中心已开始实施各种各样的联网和服务器配置来提供数据的存储和对数据的访问。

附图说明

下面的详细描述参考附图,在其中:

图1图示根据本公开的示例的确定去重复(deduplication)存储区中的未引用页面的计算系统的框图;

图2图示根据本公开的示例的确定去重复存储区中的未引用页面的另一计算系统的框图;

图3图示根据本公开的示例的存储用于确定去重复存储区中的未引用页面的指令的计算系统的非瞬时计算机可读存储介质的框图;

图4图示根据本公开的示例的确定去重复存储区中的未引用页面的方法的流程图;

图5图示根据本公开的示例的确定去重复存储区中的未引用页面的方法的流程图;以及

图6图示根据本公开的示例的三级表方案的框图。

具体实施方式

随着用户生成和消费更大数量的数据,对这些数据的存储需求也会增加。较大的数据卷(volume)变得越来越昂贵、耗费时间且耗费空间来存储和访问。此外,重复数据(即与先前存在的数据相同的数据)的数量是常见的。此类重复数据进一步使存储资源担负重担。

在将固态盘(ssd)添加到主要的基于块的存储阵列中所支持的介质中的情况下,这些阵列中的数据重复删除(即检测重复数据)越来越有用。ssd和传统硬盘驱动器之间的成本差异利用比如去重复和压缩之类的解决方案来降低这些存储阵列的每字节成本。在低延时和高吞吐量方面,主机操作系统对主存储阵列的要求是高性能。

随着存储容量增长地越来越大,找出重复数据是对存储阵列的存储控制器的存储器和中央处理单元(cpu)有要求的可伸缩问题。通过各种参数(诸如数据是联机还是在后台去重复、以及去重复的粒度)来确定去重复对输入/输出性能的影响。在提供更好的空间节省的同时在基于块的存储系统中以较小的粒度(诸如16千字节页面)对数据进行去重复需要cpu处理和存储器方面的增加。一些主要的基于块的存储阵列不能够处理输入/输出性能与联机数据去重复的冲突的需求,并且因此诉诸于后台去重复。一些存储阵列还通过以较大的区块(诸如每次多个千兆字节)对数据进行去重复来解决去重复。在其他示例中,例如通过使用密码散列确定重复数据来检测数据重复。这些密码散列利用更多空间来存储和更多处理资源来比较。

在具有去重复功能的基于块的存储系统中,多个客户端页面可能指向去重复存储区中的相同的经去重复的页面。当客户端页面被修改时,客户端页面停止指向去重复存储区中的前一页面并且作为代替指向别处。当所有客户端页面停止指向去重复存储区中的特定页面时,去重复存储区中的页面不再被引用并且可以被解放(free)。因此,跟踪指向去重复存储区中的页面的指针并且当去重复存储区中的页面不再在使用时解放那些页面是经去重复的基于块的存储系统中的根本问题。可以克服这点的一种方式是通过主动维护引用计数并当引用计数减小至零时解放页面。这被称为“标记和清扫(markandsweep)”技术。然而,当去重复客户端和存储卷在共享的、分布式、基于块的存储系统的不同计算实体上时以容错且原子的(atomic)方式维护引用计数是复杂的。

下面通过参考所公开的用于确定去重复存储区中的未引用页面的若干示例来描述各种实施方式。在根据本公开的方面的一个示例实施方式中,针对对于客户端卷上的数据的接收垃圾(garbage)收集数据请求而计算循环冗余校验(crc)值。通过使用如图6图示以及下面描述的三级表方案,crc值被变换成对于客户端卷的去重复存储区中的物理页面位置。然后确定去重复存储区中的物理页面是否是未引用的。在一个示例中,对物理页面是否在去重复存储区中的确定是基于经变换的crc值、通过将经变换的crc值与去重复存储区中所存储的多个现有crc值相比较的。在另一示例中,该确定是基于对物理页面的直接引用的缺乏、通过将经变换的crc值与去重复存储区中所存储的多个现有crc值相比较的。

在一些实施方式中,所描述的技术消除了对维护引用计数的传统复杂实施方式的需要。例如,本文所述的技术检测去重复存储区中的使它们的指针被重写的块(即不再处于使用中的块)。然后可以解放这些块以变成随后可重用的自由独立块。本技术不依赖于现有的“标记和清扫”技术,它们也不要求离线地采用卷。容错要求也被简化。另外,如果特定计算实体在本公开的垃圾收集过程期间变得不可用,则后续的垃圾收集执行可再次要求任何未使用的空间。根据下面的描述,这些和其他优点将变得显而易见。

图1-3包括根据如本文所述的各种示例的特定部件、模块等。在不同实施方式中,根据本文所述的教导可使用更多、更少和/或其他部件、模块、部件/模块的布置等等。此外,本文所述的各种部件、模块等可被实施为一个或多个软件模块、硬件模块、专门目的硬件(例如专用硬件、专用集成电路(asic)、嵌入式控制器、硬连线电路等等)、或这些的某一组合。

总体来说,图1-3涉及计算系统(诸如图1的计算系统100和图2的计算系统200)的部件和模块。应该理解,计算系统100和200可包括任何适当类型的计算系统和/或计算设备,包括例如智能电话、平板电脑、台式电脑、膝上型电脑、工作站、服务器、智能监视器、智能电视、数字标牌、科学仪器、零售销售点设备、视频墙、成像设备、外围设备、联网设备等等。

图1图示根据本公开的示例的确定去重复存储区中的未引用页面的计算系统100的框图。该计算系统100可包括处理资源102,其通常表示能够处理数据或者解译和执行指令的任何适当类型或形式的一个或多个处理单元。该处理资源102可以是一个或多个中央处理单元(cpu)、微处理器、和/或适用于检索和执行指令的其他硬件设备。该指令可被存储在例如非瞬时有形计算机可读存储介质(诸如存储器资源104(以及图3的计算机可读存储介质304))上,该非瞬时有形计算机可读存储介质可包括存储可执行指令的任何电子、磁性、光学或其他物理存储设备。因此,存储器资源104可以是例如随机存取存储器(ram)、电可擦除可编程只读存储器(epprom)、存储驱动器、光盘、和存储指令以使可编程处理器执行本文所述的技术的任何其他适当类型的易失性或非易失性存储器。在示例中,存储器资源104包括:主存储器(诸如ram),在运行时间期间指令可被存储在其中;以及辅助存储器(诸如非易失性存储器),在其中存储指令的拷贝。

可替换地或另外地,计算系统100可包括用于执行本文所述的技术的专用或分立硬件,诸如一个或多个集成电路、专用集成电路(asic)、专用特殊处理器(assp)、现场可编程门阵列(fpga)、或专用或分立硬件的前述示例的任何组合。在一些实施方式中,可酌情使用多个处理资源(或利用多个处理核的处理资源),连同多个存储器资源和/或多个类型的存储器资源。

另外,该计算系统100可包括循环冗余校验(crc)指令120、三级表指令122和垃圾收集指令124。该指令120、122、124可以是存储在有形存储器资源(诸如存储器资源104)上的处理器可执行指令,并且硬件可包括用于执行那些指令的处理资源102。因此,存储器资源104可以被认为存储程序指令,当由处理资源102执行时实施本文所述的模块。如下面将在其他示例中进一步讨论的,还可利用其他指令。

在示例中,如图1中所图示的,计算系统100包括存储设备或存储设备阵列(诸如数据存储区106),其可存储包括一个或多个操作系统、客户端卷和去重复存储区的数据。某些操作系统提供在数据存储区106上配置各种虚拟卷以及跨多个系统分布虚拟卷的能力。应该理解,数据存储区106可驻留在计算系统100处和/或远离计算系统100,并且可包括多个存储设备或存储设备阵列。

主机可通过使用例如scsi命令、提供lun标识符、逻辑块地址(lba)、以及输入/输出(i/o)操作的长度来访问数据存储区106上的这些卷。在一些实施方式中,卷类型可以是精简配置(thinprovisioned)虚拟卷(即,使用用于利用数据块的按需分配对最初分配块的传统方法来优化可用存储的利用率的过程而创建的虚拟卷)。在精简配置虚拟卷的情况下,使用三级页表变换机制来对被主机访问的数据定位。

一个或多个客户端卷可被生成并存储在数据存储区106中。在示例中,客户端卷可以是充当分布式系统的多个虚拟精简配置虚拟卷。

另外,数据去重复存储区可以被生成并存储在数据存储区106中。该数据去重复存储区(或去重存储区)是用于检测重复数据并通过对数据进行去重复来最小化重复数据的大小的精简配置虚拟卷。作为数据去重复过程的结果,去重复存储区内的页面可被用来存储数据连同对于每一个页面的crc值。三级页表中的指针引用指向在去重复存储区内数据所位于的页面。希望检测并释放不再使用的页面(即没有引用指向的页面)。这被称为垃圾收集过程。通过执行垃圾过程,去重复存储区内的效率被增加,并且去重复存储区需要更少的空间用于去重复存储区精简配置虚拟卷。为了执行垃圾收集过程来检测并释放未引用页面,计算系统100利用指令120、122、124。

具体来说,crc计算指令120针对对于客户端卷(例如数据存储区106)上的数据的接收垃圾收集数据请求而计算循环冗余校验(crc)值或签名。例如,crc指令120计算传入数据的crc值(或签名)。一旦由crc模块110计算了传入的垃圾收集数据请求的crc值(或签名),就将crc值与针对已经存储在去重存储区(诸如图1的数据存储区106)中的现有页面的crc值相比较。

在示例中,crc指令120可被存储在专用硬件模块或卸载引擎中,其可以使用例如crc32算法来计算垃圾收集接收数据请求的crc。在其他示例中,crc指令120的专用硬件实施方式可使用数据的更高精度散列(诸如sha-2算法)来计算crc值。因此,通过将传统处理资源密集型crc值计算卸载到专用硬件模块,使处理资源(诸如处理资源102)再生执行处理密集型计算。

一旦由crc指令120计算了传入数据的crc值或签名,三级表指令122就通过执行三级变换(也被称为三级页表方案或游走(walk))来将crc值变换成去重复存储区的物理页面位置或逻辑块地址。当针对页面计算crc值时,所计算的crc被用作到数据去重存储区精简配置虚拟卷内的页面偏移。通过三级表指令122来执行三级表方案以便将crc值变换成物理页面位置,并且然后基于三级页表方案来将数据存储在去重复存储区内的适当位置处。

垃圾收集指令124可发起垃圾收集。该垃圾收集可在预定时间由系统管理员发起,或者在另一适当时间发起。还可迭代地发起垃圾收集过程,因为物理页面可能持续变化并变成未引用的。然而,不管时间如何,可在数据存储区106保持在线的同时通过垃圾收集指令124来执行垃圾收集过程。特别地,如去重复存储区那样,客户端可见的一个或多个虚拟客户端卷在垃圾收集过程期间保持对客户端可访问。一旦垃圾收集过程开始,就通知去重复存储区跟踪对去重复存储区的新的添加。

通过将经变换的crc值与去重复存储区中存储的多个现有crc值进行比较,垃圾收集指令124基于对物理页面的直接引用的缺乏而确定去重复存储区中的物理页面是否是未引用的。这可进一步通过垃圾收集指令124扫描客户端卷以收集客户端正使用的去重复存储区中的页面的crc值(其充当标识符)来完成。然后所收集的crc值被发送至去重复存储区并且可与在垃圾收集过程期间创建的任何新页面标识符合并。

当确定存在对去重复存储区中的物理页面的直接引用的缺乏时,去重复存储区中的物理页面是未引用的。这些未引用页面可在去重复存储区中释放。在示例中,计算系统100可包括释放去重复存储区中的未引用物理页面的指令。这使得未引用页面能够被解放或被释放,以使得物理页面可被用于写入新数据。然而,当不存在对去重复存储区中的物理页面的直接引用的缺乏时,去重复存储区中的物理页面不是未引用的。在这种情况下,物理页面不被解放并且物理页面保持不变。

图2图示根据本公开的示例的确定去重复存储区中的未引用页面的另一计算系统的框图。该计算系统200可包括crc计算模块220、三级表模块222、未引用模块224和页面释放模块226。

在示例中,本文所述的模块可以是硬件和编程指令的组合。编程指令可以是存储在有形存储器资源(诸如存储器资源)上的处理器可执行指令,并且硬件可包括用于执行那些指令的处理资源。因此,存储器资源可被认为存储程序指令,所述程序指令当由处理资源执行时实施本文所述的模块。如下面将在其他示例中进一步讨论的,还可利用其他模块。在不同实施方式中,根据本文所述的技术可使用更多、更少和/或其他部件、模块、指令以及其布置。此外,本文所述的各种部件、模块等可被实施为计算机可执行指令、硬件模块、特殊目的硬件(例如专用硬件、专用集成电路(asic)、等等)或这些的某一或某些组合。

crc计算模块220针对对于客户端卷上的数据的垃圾收集接收数据请求计算循环冗余校验(crc)值或签名。一旦传入数据的crc值或签名被crc计算模块222计算,三级表模块222就通过执行三级表方案将crc值变换成去重复存储区的物理页面位置或逻辑块地址。

垃圾收集模块224然后发起垃圾收集过程来通过将经变换的crc值与去重复存储区中存储的多个现有crc值进行比较基于对物理页面的直接引用的缺乏来确定去重复存储区中的物理页面是否是未引用的。

在一个示例中,当垃圾收集模块224确定存在对去重复存储区中的物理页面的直接引用的缺乏时,去重复存储区中的物理页面是未引用的。相反,当垃圾收集模块224确定不存在对去重复存储区中的物理页面的直接引用的缺乏时,去重复存储区中的物理页面不是未引用的。这些未引用页面可在去重复存储区中释放。在示例中,计算系统100可包括释放去重复存储区中的未引用物理页面的指令。这使得未引用页面被页面释放模块226解放或释放,以使得物理页面可被用于写入新数据。特别地,当确定去重复存储区中的物理页面是未引用的时,页面释放模块226然后可释放去重复存储区中的未引用物理页面。

在另一示例中,当确定经变换的crc值与去重复存储区中存储的现有crc值中的至少一个不匹配时,该去重复存储区中的物理页面是未引用的。然而,当经变换的crc值与去重复存储区中存储的现有crc值中的至少一个匹配时,该去重复存储区中的物理页面不是未引用的。在这种情况下,物理页面不被页面释放模块226解放,并且物理页面保持不变。

图3图示根据本公开的示例的存储用于确定去重复存储区中的未引用页面的指令的计算系统的非瞬时计算机可读存储介质304的框图。该计算机可读存储介质304是非瞬时,在这个意义上它不包含瞬时信号,而是作为代替由被配置成存储指令的一个或多个存储器部件构成。计算机可读存储介质可以代表图1的存储器资源104,并且可以模块的形式存储机器可执行指令,所述机器可执行指令可在计算系统(诸如图1的计算系统100和/或图2的计算系统200)上执行。

在图3中所示的示例中,该指令可包括循环冗余校验(crc)指令320、三级表指令322、和垃圾收集指令324。计算机可读存储介质304的指令320、322、324可以是可执行的,以便执行本文所述的技术(包括关于图4的方法400描述的功能)。尽管在下面参考图4的功能块描述了指令320、322、324的功能,但是此类描述不意图限于此。

特别地,图4图示根据本公开的示例的确定去重复存储区中的未引用页面的方法400的流程图。该方法400可被存储为非瞬时计算机可读存储介质(诸如图3的计算机可读存储介质304)或另一适当存储器(诸如图1的存储器资源104)上的指令,所述指令当被处理器(例如图1的处理资源102)执行时使处理器实行方法400。应该认识到,方法400可由计算系统或计算设备来执行,诸如图1的计算系统100和/或图2的计算系统200。

在块402处,该方法400开始并继续到块404。在块404处,crc计算指令320针对对于客户端卷上的数据的接收垃圾收集数据请求计算循环冗余校验(crc)值。该方法400继续到块406。

在块406处,三级表指令322使用三级表方案将crc值变换成对于客户端卷的去重复存储区中的物理页面位置。该方法400继续到块408。

在块408处,垃圾收集指令324通过将经变换的crc值与去重复存储区中存储的多个现有crc值进行比较基于对物理页面的直接引用的缺乏来确定去重复存储区中的物理页面是否是未引用的。例如,当存在对去重复存储区中的物理页面的直接引用的缺乏时,可以确定去重复存储区中的物理页面是未引用的。类似地,当不存在对去重复存储区中的物理页面的直接引用的缺乏时,可以确定去重复存储区中的物理页面不是未引用的。垃圾收集指令324可迭代地确定物理页面是否是未引用的。

还可包括附加的过程。例如,方法400可包括当确定存在对去重复存储区中的物理页面的直接引用的缺乏时释放去重复存储区中的未引用的物理页面。应该理解,图4中描绘的过程表示说明,并且在不偏离本公开的范围和精神的情况下其他过程可被添加,或者现有过程可被移除、修改或重新布置。

图5图示根据本公开的示例的确定去重复存储区中的未引用页面的方法500的流程图。该方法500可由计算系统或计算设备来执行,诸如图1的计算系统100和/或图2的计算系统200。该方法500还可被存储为非瞬时计算机可读存储介质(诸如图3的计算机可读存储介质304)上的指令,所述指令当被处理器(例如图1的处理资源102)执行时使处理器实行方法500。

在块502处,该方法500开始并继续到块504。在块504处,该方法500包括计算系统(例如图1的计算系统100和/或图2的计算系统200)生成多个客户端卷和基于多个客户端卷的去重复存储区。该方法500然后继续到块506。

在块506处,该方法500包括计算系统针对对于多个客户端卷上的数据的接收垃圾收集数据请求计算循环冗余校验(crc)值。在示例中,由计算系统的第一分立硬件部件来执行计算循环冗余校验值。该方法500然后继续到块508。

在块508处,该方法500包括计算系统使用三级表方案将crc值变换成对于多个客户端卷的去重复存储区中的物理页面位置。该方法500然后继续到块510。

在块510处,该方法500包括计算系统通过将经变换的crc值与去重复存储区中存储的多个现有crc值进行比较基于经变换的crc值来确定去重复存储区中的物理页面是否是未引用的。在示例中,将经变换的crc值与去重复存储区中存储的多个现有crc值进行比较利用xor(异或)操作。此外,使用三级表游走将crc值变换成去重复存储区中的物理页面位置可将crc值用作针对三级表游走的逻辑块地址。该方法500然后继续到块512。

在块510处,该方法500包括当确定去重复存储区中的物理页面是未引用的时计算系统释放去重复存储区中的未引用页面。

还可包括附加过程。在示例中,多个客户端卷和去重复存储区在计算、变换、确定和释放期间保持在线。应该理解,图5中描绘的过程表示说明,并且在不偏离本公开的范围和精神的情况下其他过程可被添加,或者现有过程可被移除、修改或重新布置。

图6图示根据本公开的示例的三级表方案600的框图。在诸如图2中所示的示例中,精简配置卷使用16千字节分配单元,尽管在不同示例中可利用其他大小。这些分配单元可使用标准文件系统技术,诸如位图和三级块指针。通过在该卷中查找区域来看被写入或读取的区是否先前已被写入来变换以精简配置卷为目标的输入/输出数据请求。对先前没有被写入的区域的“写入”请求可分配备用存储并且将其与精简配置卷的虚拟地址相关联。在图2中所示的示例中,三级页面查找和分配的粒度是16kb。在该示例中,使用三级页表系统来表示精简配置卷的空间,其被称为l1ptbl、l2ptbl和l3ptbl。第一和第二表(l1ptbl和l2ptbl)包含指向下一级页表的指针。例如,l1ptbl包含指向在l2ptbl处的位置的指针,并且l2ptbl包含指向在l3ptbl处的位置的指针。级3的页表(l3ptbl)包含指向实际盘页面的指针,所述实际盘页面提供针对对应虚拟精简配置卷偏移的16kb备用存储区。

应该强调,上述示例仅仅是实施方式的可能示例并且为了对本公开的清楚理解而阐述。在不显著偏离本公开的精神和范围的情况下可对上述示例作出许多变化和修改。此外,本公开的范围意图覆盖上面讨论的所有元件、特征和方面的任何和所有适当组合以及子组合。所有这样的适当的修改和变化意图被包括在本公开的范围内,并且对于元件或步骤的各个方面或组合的所有可能的权利要求意图被本公开所支持。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1