基于分散位置的去重的性能改进的制作方法

文档序号:20921612发布日期:2020-05-29 14:13阅读:224来源:国知局
基于分散位置的去重的性能改进的制作方法



背景技术:

本申请总体上涉及一种改进的数据处理装置和方法,更具体地涉及用于改进基于分散位置的去重的性能的机制。

在存储系统中,去重(deduplication)是用针对数据的单个实例的指针、引用等替换整个系统中的重复数据并且因此降低整体存储需求的过程。一般来说,去重引用(deduplicationreference)是指向要么是数据本身要么是代表数据的元数据的拥有者的元数据条目。存储数据有两种主要方案:基于内容的去重和基于位置的去重。在基于内容的去重中,位于存储器内的数据由数据的指纹、哈希值等确定。在基于位置的重复删除中,位于存储器内的数据由数据的用户-空间位置(卷偏移量)确定。

基于位置的去重的一个主要优点是当执行大型读取或顺序读取时的数据局部性。基于位置的去重需要的磁盘输入/输出(i/o)较少。另一方面,当系统中的i/o为数不多时,基于内容的去重具有更好的资源平衡。因为去重需要大量的随机存取存储器(ram),所以有些实现方式为了简化管理和/或交换而将元数据划分为区域(空间划分),诸如拥有者(owner)区域和引用者(referrer)区域。



技术实现要素:

提供本概述以便以简化的形式介绍将在本文的具体实施方式部分进一步描述的一些概念。本概述并不旨在标识所要求保护的主题的关键因素或基本特征,也不旨在限制所要求保护的主题的范围。

在一个说明性实施例中,提供了一种在数据处理系统中用于基于分散位置的数据存储的方法。说明性实施例从主机系统接收将数据文件写入一组存储器区域中的引用者存储器区域的请求。针对该数据文件的每个数据块,说明性实施例响应于该数据块的哈希值与引用者存储器区域中所引用的其他存储的数据块的其他哈希值的比较来确定该数据是否存在于该组存储器区域中的另一个存储器区域中—这表明该数据块未能存在于引用者存储器区域中。说明性实施例响应于该数据块存在于该组存储器区域中的另一存储器区域中,确定该存储器区域是否是与引用者存储器区域相关联的预定数量n个拥有者存储器区域之一。说明性实施例响应于该存储器区域未能是与引用者存储器区域相关联的预定数量n个拥有者存储器区域之一,确定所述预定数量n个拥有者存储器区域中的拥有者存储器区域的数量是否已经达到。说明性实施例响应于所述预定数量n个拥有者存储器区域尚未达到,将对所述数据块的引用存储在所述引用者存储器区域中。

在其他说明性实施例中,提供了一种包括具有计算机可读程序的计算机可用或可读介质的计算机程序产品。当在计算设备上执行时,计算机可读程序使得计算设备执行以上关于方法说明性实施例概述的操作中的不同操作和组合。

在另一个说明性实施例中,提供了一种系统/装置。所述系统/装置可以包括一个或多个处理器和耦合到所述一个或多个处理器的存储器。存储器可以包括当由一个或多个处理器执行时促使该一个或多个处理器执行以上关于方法说明性实施例概述的操作中的不同操作和操作的组合的指令。

本发明的这些和其他特征和优点将在本发明的举例实施例的以下详细说明中进行描述,或鉴于以下详细说明对本领域的普通技术人员来说将变得清楚。

附图说明

当结合附图阅读时,通过参考以下说明性实施例的详细说明,将最好地理解本发明、以及其优选的使用方式以及其他目的和优点,在附图中:

图1示出了根据说明性实施例将40kb文件写为导致许多类型的开销的八个不同拥有者区域中的五个8kb块;

图2是其中可以实现说明性实施例的各个方面的分布式数据处理系统的示例图;

图3是其中可实施说明性实施例的各个方面的计算装置的实例框图;

图4示出了根据一个说明性实施例的存储机制的功能框图,该存储机制在对去重效率具有最小影响的情况下改进了基于分散位置的去重的性能;

图5示出了根据一个说明性实施例的存储机构所执行的操作的流程图,该存储机构在对去重效率具有最小影响的情况下改进了基于分散位置的去重的性能;以及

图6描绘了根据一个说明性实施例、如果要在存储器区域的一个子集(即,引用者存储器区域和相关联的一个或多个拥有者存储器区域)之间实施去重则存储机构所执行的操作的流程图。

具体实施方式

如前所述,存在用于存储数据的两种主要方案:基于内容的去重和基于位置的去重。在基于内容的去重中,位于存储器内的数据由数据的指纹、哈希值等确定。在基于位置的重复删除中,位于存储器内的数据由数据的用户空间位置(卷偏移量)确定。以基于元数据区域的系统中的基于位置的去重为例,当存在大量去重,而数据(或拥有元数据)分散在整个存储器中去重时,局部性(locality)的任何优势都可能受到损害。例如,当64kb文件被存储为八个8kb块时,读取64kb文件可能需要访问八个不同的拥有者区域,这可导致如根据说明性实施例的图1所示的许多类型的开销。

也就是说,如图1所示,主机系统102从存储器区域108执行对一个文件的读取。在存储器区域108处,读取与文件相关联的元数据,识别出拥有者存储器区域包括该文件的至少一部分的五个不同的拥有者存储器区域:存储器区域104、106、110、112和114。因此,存储器区域108执行针对驻留在存储器区域104上的文件的部分的读取,存储器区域108执行针对驻留在存储器区域106上的文件的部分的读取,存储器区域108执行针对驻留在存储器区域110上的文件的部分的读取,存储器区域108执行针对驻留在存储器区域112上的文件的部分的读取,存储器区域108执行针对驻留在存储器区域114上的文件的部分的读取。基于这些读取,存储器区域108从存储器区域104接收针对驻留在存储器区域104上的文件的部分的响应h1,存储器区域108从存储器区域106接收针对驻留在存储器区域106上的文件的部分的响应h2,存储器区域108从存储器区域110接收针对驻留在存储器区域110上的文件的部分的响应h3,存储器区域108从存储器区域112接收针对驻留在存储器区域112上的文件的部分的响应h4,存储器区108从存储器区114接收针对驻留在存储器区114上的文件的部分的响应h5。在接收到响应h1、h2、h3、h4和h5时,存储器区域108用包括h1、h2、h3、h4和h5的响应对主机系统102做出响应。因此,由于拥有者存储器区域对文件的块的存储跨越五个不同的拥有者存储器区域,对一个存储器区域(存储器区域108)的一个读取包括更多的从其他拥有者存储器区域的读取、更多的集群存储器区域之间的通信、以及在并非所有元数据都包含在原始读取的存储器区域中的情况下在存储器区域之间交换元数据。达到这些额外的读取的开销,导致系统的严重性能下降。

因此,说明性实施例提供了用于在对去重效率具有最小影响的情况下改进基于分散位置的去重的性能的机制。说明性实施例通过在引用者)存储器区域内对拥有者存储器区域选择应用动态管理逻辑,来智能地创建不同引用者和拥有者存储器区域之间的复制链路。这通过两个基本机制来实现。第一机制按以下方式之一限制可以被链接到给定引用者的拥有者存储器区域的数量(多达预定数量n个拥有者存储器区域):

·利用“先到先服务”策略来让数据能存储在预定数量n个拥有者存储器区域上。

·利用“流行度”策略来让数据能基于拥有者存储器区域的流行度而存储在引用者存储器区域中。

ο拥有者存储器区域的流行度可以在单个写入内确定。

ο拥有者存储器区域的流行度可以在多个写入中确定。

·利用混合策略,起初允许按“先到先服务”策略在第二预定数量m个拥有者存储器区域上存储数据,m<n;然后,仅基于拥有者存储器区域在引用者存储器区域中的流行度来存储数据,直到达到预定数量n个拥有者存储器区域。

第二机制用较流行的拥有者存储器区域替换较不流行的拥有者存储器区域,使得当识别出更有益的拥有者存储器区域时,使较不流行的拥有者存储器区域作为优选拥有者存储器区域退役。

在开始对说明性实施例的各个方面的讨论之前,应当首先认识到,贯穿本说明书,术语“机制”将用于指代本发明的执行不同操作、功能等的元素。如在此使用的术语“机制”,可以是说明性实施例的功能或方面的以装置、过程或计算机程序产品形式的实现。在实现形式为过程的情况下,所述过程由一个或多个设备、装置、计算机、数据处理系统等实现。在实现形式为计算机程序产品的情况下,由体现在计算机程序产品中或上的计算机代码或指令所表示的逻辑由一个或多个硬件设备执行以便实现功能或执行与特定“机制”相关联的操作。由此,本文描述的机制可被实现为专用硬件、在通用硬件上执行的软件、存储在介质上的软件指令,使得这些指令可容易地由专用或通用硬件、用于执行功能的过程或方法、或上述各项的任意组合执行。

本说明书和权利要求书可以针对说明性实施例的具体特征和元素利用术语“一个”、“至少一个”和“一个或多个”。应当理解,这些术语和短语旨在说明特定说明性实施例中存在至少一个特定特征或元件,但是也可以存在多于一个。即,这些术语/短语不旨在将描述或权利要求限制为存在单个特征/元件或需要存在多个此类特征/元件。相反,这些术语/短语仅需要至少单个特征/元件,其中多个这样的特征/元件落在说明书和权利要求的范围内。

此外,应了解,如果在此关于描述本发明的实施例和特征而使用术语“引擎”,则其不旨在限制用于完成和/或执行归因于和/或由该引擎执行的动作、步骤、过程等的任何特定实现方式。引擎可以是但不限于执行指定功能的软件、硬件和/或固件或其任意组合,包括但不限于与加载或存储在机器可读存储器中并且由处理器执行的合适软件组合的通用和/或专用处理器的任意使用。此外,除非另外指明,否则与特定引擎相关联的任何名称是为了便于引用的目的而并非旨在限制特定实现方式。另外,属于引擎的任何功能性可以同样地由多个引擎执行,并入到相同或不同类型的另一引擎的功能性中和/或与其组合,或分布在各种配置的一个或多个引擎上。

此外,应当理解,以下描述使用说明性实施例的各个元素的多个不同示例来进一步说明说明性实施例的示例实现并且帮助理解说明性实施例的机制。这些示例旨在是非限制性的并且不是对实施说明性实施例的机制的不同可能性的穷举。鉴于本说明书,本领域普通技术人员将清楚的是,除了或代替在此所提供的这些实例之外,存在针对这些不同元素的许多其他替代性实现方式,而不背离本发明的精神和范围。

因此,说明性实施例可以用于许多不同类型的数据处理环境中。为了提供用于描述说明性实施例的具体元素和功能的上下文,下文提供图2和图3作为可在其中实现说明性实施例的方面的示例环境。应当理解,图2和图3仅是示例,并且不旨在声明或暗示关于可实现本发明的各方面或实施例的环境的任何限制。可以对所描绘的环境做出许多修改而不背离本发明的精神和范围。

图2描绘了其中可以实现说明性实施例的各方面的示例分布式数据处理系统的图形表示。分布式数据处理系统200可以包括其中可以实现说明性实施例的方面的计算机网络。分布式数据处理系统200包含至少一个网络202,该网络是用于在分布式数据处理系统200内连接在一起的不同设备和计算机之间提供通信链路的介质。网络202可包括诸如有线、无线通信链路或光纤电缆等的连接。

在所描绘的示例中,服务器204和服务器206与存储单元208一起连接至网络202。此外,客户端210、212和214也连接到网络202。这些客户端210、212和214可以是例如个人计算机、网络计算机等。在所描绘的示例中,服务器204向客户端210、212和214提供诸如引导文件、操作系统映像和应用之类的数据。在所描绘的示例中,客户端210、212和214是服务器204的客户端。分布式数据处理系统200可以包括附加的服务器、客户端和未示出的其他设备。

在所描绘的示例中,分布式数据处理系统200是互联网,其中网络202表示使用传输控制协议/互联网协议(tcp/ip)协议组来彼此通信的网络和网关的全球集合。在互联网的中心是主节点或主机计算机之间的高速数据通信线路的主干,其由数以千计的商用、政府、教育和路由数据和消息的其他计算机系统组成。当然,分布式数据处理系统200也可以被实现为包括许多不同类型的网络,例如内联网、局域网(lan)、广域网(wan)等。如上所述,图2旨在作为实例,而不是作为本发明的不同实施例的架构限制,并且因此,图2所示的特定元件不应当被视为关于其中可以实现本发明的说明性实施例的环境的限制。

如图2所示,一个或多个计算设备,例如服务器204,可以被具体配置为实现用于在对去重效率影响最小的情况下提高基于分散位置的去重的性能的机制。计算设备的配置可以包括提供专用硬件、固件等,以促进本文关于说明性实施例描述的操作的执行和输出的生成。计算设备的配置还可以或备选地包括提供存储在一个或多个存储设备中并且加载到诸如服务器204的计算设备的存储器中的软件应用,用于使计算设备的一个或多个硬件处理器执行配置处理器以执行操作并且生成本文关于说明性实施例描述的输出的软件应用。此外,在不脱离说明性实施例的精神和范围的情况下,可以使用专用硬件、固件、在硬件上执行的软件应用等的任何组合。

应当理解,一旦以这些方式之一配置了计算设备,计算设备就变成了专门被配置成实现说明性实施例的机制的专用计算设备,而不是通用计算设备。此外,如下文所述,说明性实施例的机制的实现改进了计算设备的功能,并且提供了有助于在对去重效率影响最小的情况下改进基于分散位置的去重的性能的有用和具体的结果。

如上所述,说明性实施例的机制利用特别配置的计算设备或数据处理系统来执行用于在对去重效率影响最小的情况下改进基于分散位置的去重的性能的操作。这些计算设备或数据处理系统可以包括各种硬件元件,这些硬件元件通过硬件配置、软件配置或硬件和软件配置的组合被具体配置成实现本文描述的系统/子系统中的一个或多个。图3只是其中可以实现说明性实施例的各方面的一个示例数据处理系统的框图。数据处理系统300是诸如图2中的服务器204的计算机的示例,其中可以定位和/或执行实现本发明的说明性实施例的各个过程和各个方面的计算机可用代码或指令,以便实现如本文描述的说明性实施例的操作、输出和外部效果。

在所示的示例中,数据处理系统300采用集线器体系结构,其包括北桥和存储器控制器集线器(nb/mch)302以及南桥和输入/输出(i/o)控制器集线器(sb/ich)304。处理单元306、主存储器308和图形处理器310连接到nb/mch302。图形处理器310可以通过加速图形端口(agp)连接到nb/mch302。

在所示的示例中,局域网(lan)适配器312连接到sb/ich304。音频适配器316、键盘和鼠标适配器320、调制解调器322、只读存储器(rom)324、硬盘驱动器(hdd)326、cd-rom驱动器330、通用串行总线(usb)端口和其它通信端口332、以及pci/pcie设备334通过总线338和总线340连接到sb/ich304。pci/pcie设备可以包括例如以太网适配器、附加卡和用于笔记本计算机的pc卡。pci使用卡总线控制器,而pcie不使用。rom324可以是例如闪速基本输入/输出系统(bios)。

hdd326和cd-rom驱动器330通过总线340连接到sb/ich304。hdd326和cd-rom驱动器330可以使用例如集成驱动电子设备(ide)或串行高级技术附件(sata)接口。超级i/o(sio)设备336可以连接到sb/ich304。

操作系统在处理单元306上运行。操作系统协调并提供对图3中的数据处理系统300内的各种组件的控制。作为客户端,操作系统可以是商业上可获得的操作系统,诸如windows面向对象的编程系统,例如javatm编程系统,可以与操作系统一起运行,并且提供从在数据处理系统300上执行的javatm程序或应用程序向操作系统的调用。

作为服务器,数据处理系统300可以是例如运行advancedinteractiveexecutive操作系统或操作系统的ibmeservertmsystem计算机系统或基于powertm处理器的计算机系统等。数据处理系统300可以是在处理单元306中包括多个处理器的对称多处理器(smp)系统。或者,可以采用单处理器系统。

用于操作系统、面向对象的编程系统以及应用或程序的指令位于诸如hdd326的存储设备上,并且可以被加载到主存储器308中以供处理单元306执行。本发明的说明性实施例的过程可以由处理单元306使用计算机可用程序代码来执行,该计算机可用程序代码可以位于例如主存储器308、rom324的存储器中,或者位于例如一个或多个外围设备326和330中。

诸如图3所示的总线338或总线340之类的总线系统可以包括一个或多个总线。当然,总线系统可以使用任何类型的通信结构或体系结构来实现,所述通信结构或体系结构提供在附接到该结构或体系结构的不同组件或设备之间的数据传输。诸如图3的调制解调器322或网络适配器312之类的通信单元可以包括用于发送和接收数据的一个或多个设备。存储器可以是例如主存储器308、rom324或诸如在图3中的nb/mch302中找到的高速缓存。

如上所述,在一些说明性实施例中,说明性实施例的机制可以实现为专用硬件、固件等、存储在诸如hdd326的存储设备中并加载到诸如主存储器308的存储器中以便由诸如处理单元306的一个或多个硬件处理器执行的应用软件等。这样,图3中所示的计算设备变为被具体配置成实现说明性实施例的机制,并且被具体配置成执行以下关于用于在对去重效率的影响最小的情况下改进基于分散位置的去重的性能的机制所描述的操作和生成输出。

本领域的普通技术人员将理解,图2和3中的硬件可以根据具体实现而变化。除了图2和3中描述的硬件之外,或者代替它们,可以使用其它内部硬件或外围设备,例如闪存、等效的非易失性存储器或光盘驱动器等。此外,在不脱离本发明的精神和范围的情况下,除了前面提到的smp系统之外,示例性实施例的处理可以应用于多处理器数据处理系统。

此外,数据处理系统300可以采取多种不同数据处理系统中的任何一种的形式,包括客户端计算设备、服务器计算设备、平板计算机、膝上型计算机、电话或其他通信设备、个人数字助理(pda)等。在一些说明性示例中,数据处理系统300可以是便携式计算设备,其配置有闪存以提供用于存储例如操作系统文件和/或用户生成的数据的非易失性存储器。本质上,数据处理系统300可以是任何已知的或以后开发的数据处理系统,而没有架构限制。

图4示出了根据说明性实施例的在对去重效率影响最小的情况下改进基于分散位置的去重的性能的存储机制的功能框图。如前所述,存储机构通过在引用者存储器区域内对拥有者存储器区域选择应用动态管理逻辑来智能地创建不同引用者存储器区域与拥有者存储器区域之间的复制链接。根据说明性实施例,引用者区域(referrerregion)是数据最初被写入的存储器区域,具有对存储数据的其它存储器区域(即,拥有者区域)的引用(reference),或者对引用者区域本身的引用—因为引用者存储器区域可能也存储数据。在第一实施例中,存储机构406利用允许将数据存储在预定数量n个拥有者存储器区域上的“先到先服务”策略来限制可以被链接到给定引用者存储器区域的拥有者存储器区域的数量(多达预定数量n个拥有者存储器区域)。

在第一实施例中,当数据处理系统400中的主机系统402向存储器区域写入数据时,存储机构406例如以8kb数据块写入/存储数据。因此,当主机系统402将16kb数据文件写入存储器区域时,例如写入存储器区域404a-404max中的存储器区域404a时,被写入的存储器变成如虚线框所示的引用者存储器区域408。存储机构406为16kb数据文件的两个8kb数据块中的每一个都生成散列值,并将每个8kb数据块的散列值与在存储器区域404a-404max被引用的其它存储的数据块的散列值进行比较。存储机构406是可以驻留在主机402中的、在一个或多个存储器区域404a-404max中的、或作为独立机构的设备。如果引用者存储器区域408指示在引用者存储器区域408中或拥有者存储器区域410a-410n的一个或多个拥有者存储器区域中已经存在一个或两个匹配的数据块,则存储机构406不存储这些8kb数据块,而是认识到将来能通过与引用者存储器区域408或拥有者存储器区域410a-410n的一个或多个拥有者存储器区域的散列值比较而识别出以后对这些数据块的引用。然而,如果与存储器区域404a-404max的比较指示数据块中的一个或两个并非已经存在于引用者存储器区域408和相关联的拥有者存储器区域410a-410n中,则存储机构406将不存在的数据块存储在引用者存储器区域408中。

在“先到先服务”策略中,将先前未存储的数据块写入引用者存储器区域408。然而,每当在引用存储器区408和/或与引用存储器区408相关联的拥有者存储器区410a-410n中的相关联的一个或多个上访问数据时,存储机构406就要加载(load)该数据所存在的那些存储器区。因此,如果一个64kb数据文件具有存储在八个不同拥有者存储器区域上的八个8kb数据块,则存储机构406加载包括该64kb数据文件的8kb块的所有八个不同存储器区域。对于一个256kb数据文件来说,要是8kb数据块是在32个不同的拥有者存储器区域中存储的,则问题将更加显著。因此,根据说明性实施例,存储机构406仅在预定数量n个拥有者存储器区域上存储8kb数据块。因此,由于数据是以分散方式存储的,存储机构406使用诸如数据结构、列表、表等跟踪机制来跟踪数据块被存储在哪里。因此,当将数据存储在引用者存储器区域408的群组中的特定拥有者存储器区和相关联的拥有者存储器区410a-410n上时,将所述特定存储器区域添加到该预定数量n个拥有者存储器区域。一旦达到拥有者存储器区域的数目n,存储机构406就只将该预定数量n个拥有者存储器区域中的那些拥有者存储器区域用于将来的数据块的存储。

在存储机构406写入或读取一个在与引用者存储器区域408和/或预定数量n个拥有者存储器区域中的拥有者存储器区域410a-410n不同的拥有者存储器区域上存在的8kb数据块的情况下,存储机构406认识到该拥有者存储器区域不是预定数量n个拥有者存储器区域中的拥有者存储器区域之一。在这种情况下,存储机构406将该8kb数据块写入引用者存储器区域408。虽然这会在引用者存储器区域408和相关联的拥有者存储器区域410a到410n内产生重复的8kb块,但产生重复的8kb块通过不加载多于预定数量n个拥有者存储器区域而减少了存储机构406所经历的开销。因此,使用“先到先服务”策略,存储机构406减少了存储器或处理中的任何开销,并且不依赖于用户输入/输出大小。

在第二实施例中,存储机构406利用允许基于引用者存储器区域408和由引用者存储器区域408识别的相关联的拥有者存储器区域410a-410n的流行度来创建去重的“流行度”策略。同样,当数据处理系统400中的主机系统402在引用者存储器区域408和相关联的拥有者存储器区域410a-410n中的一个或多个中存储数据时,数据例如是按8kb数据块来存储的。因此,在主机系统402将一个16kb数据文件写入至引用者存储器区域408的情况下,存储机构406生成16kb数据文件的两个8kb数据块中的每一个的散列值,并将每个8kb数据块的散列值与存储器区域404a-404max中引用的其他存储的数据块的散列值进行比较。如果引用者存储器区域408指示在引用者存储器区域408中或拥有者存储器区域410a-410n的一个或多个拥有者存储器区域中已经存在一个或两个匹配的数据块,则存储机构406不存储这些8kb数据块,而是认识到将来能通过与引用者存储器区域408或拥有者存储器区域410a-410n的一个或多个拥有者存储器区域的散列值比较而识别出以后对这些数据块的引用。然而,如果与存储器区域404a-404max的比较指示数据块中的一个或两个并非已经存在于引用者存储器区域408和相关联的拥有者存储器区域410a-410n中,则存储机构406将不存在的数据块存储在引用者存储器区域408中。

在“流行度”策略中,随着数据块被写入以及从存储器区域404a-404max中读取,存储机构406通过计数器、数据结构等来跟踪每一拥有者存储器区域的流行度。当跟踪的值指示某特定拥有者存储器区域高于阈值时,则将该特定拥有者存储器区域添加到预定数量n个拥有者存储器区域。因此,对该预定数量n个拥有者存储器区域中的拥有者存储器区域的读和写的频率指示这些拥有者区域应当是新的写入被定向到的拥有者区域。同样,每次在引用者存储器区域408上和/或在相关联的拥有者存储器区域410a-410n上访问数据时,存储机构406必须加载存在数据的那些拥有者存储器区域。因此,根据说明性实施例,存储机构406识别最流行的拥有者存储器区域,将这些拥有者存储器区域添加到预定数量n个拥有者存储器区域,并且将该预定数量n个拥有者存储器区域中的那些拥有者存储器区域用于将来的数据块的存储。

在存储机构406写入或读取在与引用者存储器区域408和/或预定数量n个拥有者存储器区域中的拥有者存储器区域410a-410n不同的拥有者存储器区域上存在的8kb数据块的情况下,存储机构406认识到该拥有者存储器区域不是预定数量n个拥有者存储器区域中的拥有者存储器区域之一。在这种情况下,存储机构406将该8kb数据块写入引用者存储器区域408。虽然这会在引用者存储器区域408和相关联的拥有者存储器区域410a-4104n内产生重复的8kb块,但产生重复的8kb块通过不加载多于预定数量n个拥有者存储器区域而减少了存储机构406所经历的开销。因此,使用“流行度”策略,存储机构406减少了存储器或处理中的任何开销,并且不依赖于用户输入/输出大小。

在第三实施例中,存储机构406利用“先到先服务”策略和“流行度”策略二者的组合。例如,存储机构406允许在“先到先服务”策略下将拥有者存储器区域添加到预定数量n个拥有者存储器区域。然后,可以使用与“流行度”策略相关联的阈值,基于拥有者区域的流行度来添加其他拥有者存储器区域m,直到存在预定数量n+m个拥有者存储器区域。然而,如果存储机构406被配置得仅使用预定数量n个拥有者存储器区域,则一旦达到了“先到先服务”策略下的预定数量n个拥有者存储器区域,存储机构406就可以使用与“流行度”策略相关联的阈值来确定添加一个(新的)潜在拥有者存储器区域来替换一个已经在预定数量n个拥有者存储器区域中已经存在的拥有者存储器区域是否足够有利。

就是说,为了让较不流行的拥有者被较流行的拥有者替换,存储机构406提供解除较不流行拥有者存储器区域的链接,以腾出空间用于较流行或有益的拥有者存储器区域。当拥有者的数量接近或已经达到拥有者存储器区域的预定数量n时,这是特别有价值的。同样,存储机构406通过计数器、数据结构等来维护每个拥有者存储器区域的流行度的跟踪值,而不管拥有者存储器区域是否是预定数量n个拥有者存储器区域的一部分。

基于该信息,不是预定数量n个拥有者存储器区的一部分但被发现具有比作为预定数量n个拥有者存储器区的一部分的拥有者存储器区更大的流行度值的拥有者存储器区,重新获得内容。如果识别出更流行的拥有者存储器区域,则移除预定数量n个拥有者存储器区域中最不流行的拥有者区域,加入当前不在预定数量n个拥有者存储器区域中的该更流行的拥有者区域。应注意,必须将已经被移除的拥有者存储器区上的数据块写入到预定数量n个拥有者存储器区中的一者。即,存储机构406可结束将在被移除的拥有者存储器区上的8kb数据块的重复副本写入到当前在预定数量n个拥有者存储器区中的拥有者存储器区之一。虽然这会在引用者存储器区域408和相关联的拥有者存储器区域410a-4104n内产生重复的8kb块,但产生重复的8kb块通过不加载多于预定数量n个拥有者存储器区域而减少了存储机构406所经历的开销。因此,使用“先到先服务”策略和“流行度”策略的组合,存储机构406进一步减少了存储器或处理中的任何开销,并且不依赖于用户输入/输出大小。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有计算机可读程序指令的计算机可读存储介质(或多个介质),所述计算机可读程序指令用于使处理器执行本发明的各个方面。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言,例如java、smalltalk、c++等,以及常规的过程式编程语言,例如“c”编程语言或类似的编程语言。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包执行,部分在用户的计算机上并且部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括通过局域网(lan)或广域网(wan),或者可以连接到外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

图5描绘了根据说明性实施例的由在对去重效率影响最小的情况下改进基于分散位置的去重的性能的存储机构执行的操作的流程图。当操作开始时,存储机构接收将数据文件写入一组存储器区域内的存储器区域的请求(步骤502)。针对数据文件的每个数据块,存储机构生成该数据块的散列值(步骤504),并将该散列值与该组存储器区域中所引用的其他存储的数据块的散列值进行比较(步骤506)。如果在步骤506的比较指示该数据块已经存在于引用者存储器区域中或与引用者存储器区域相关联的拥有者存储器区域之一中,则存储机构存储指向该数据块的指针(步骤508),此后操作终止。如果在步骤506的比较指示数据块未能存在于被写的存储器区域(即,引用者存储器区域或相关联的一个或多个拥有者存储器区域)中,则存储机构将该数据块存储在引用者存储器区域中(步骤510),此后操作终止。

图6描绘了根据说明性实施例的、如果要在一组存储器区域(即引用者存储器区域和相关联的一个或多个拥有者存储器区域)之间实施去重则由存储机构执行的操作的流程图。在将数据文件的数据块存储在主机系统向其写入数据的一个引用者区域中之前,存储机构确定数据是否存在于该组存储器区域中的另一存储器区域中(步骤602)。如果在步骤602,数据不能存在于该组存储区域中的另一存储区域中,则存储机构将数据存储在引用者存储器区域中(步骤604),此后操作终止。

如果在步骤602,数据存在于该组存储器区域中的另一存储器区域中,则存储控制器确定拥有者存储器区域是否已经达到预定数量n(步骤606)。如果在步骤606拥有者存储器区域已经达到预定数量n,则存储机构将数据块存储在预定数量n个拥有者存储器区域中的引用者存储器区域中(步骤608),此后操作终止。如果在步骤606,拥有者存储器区域尚未达到的预定数量n,则存储机构将对数据块的引用存储在引用者存储器区域中(步骤610)。然后,存储机构可以根据存储机构当前实行的策略将该存储器区域添加到预定数量n个拥有者存储器区域(步骤612),此后操作终止。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

因此,说明性实施例提供了用于在对去重效率影响最小的情况下改进基于分散位置的去重的性能的机制。通过智能地创建不同引用者和拥有者存储器区域之间的复制链接,以对去重比的最小影响最小化了读取所有被引用的数据的需要,以对去重比的最小影响最小化了用于交换的元数据区域的量,以对去重比的最小影响最小化了存储机构与拥有者存储器区域之间的通信量;和/或提供了对系统的元数据区域上去重链接的分散的精细粒度的控制。

如上所述,应当理解,说明性实施例可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元素两者的实施例的形式。在一个示例实施例中,以软件或程序代码来实现说明性实施例的机制,所述软件或程序代码包括但不限于固件、驻留软件、微代码等。

适于存储和/或执行程序代码的数据处理系统将包括至少一个处理器,该处理器通过诸如系统总线的通信总线直接或间接地耦合到存储器元件。存储器元件可以包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置和高速缓冲存储器,高速缓冲存储器提供至少一些程序代码的临时存储以便减少在执行期间必须从大容量存储装置检索代码的次数。存储器可以是各种类型,包括但不限于rom、prom、eprom、eeprom、dram、sram、闪存、固态存储器等。

输入/输出或i/o设备(包括但不限于键盘、显示器、指示设备等)可以直接或通过居间的有线或无线i/o接口和/或控制器等耦合到系统。i/o设备可以采取除了常规键盘、显示器、指示设备等之外的许多不同形式,例如通过有线或无线连接耦合的通信设备,包括但不限于智能电话、平板计算机、触摸屏设备、语音识别设备等。任何已知的或以后开发的i/o设备都旨在处于说明性实施例的范围内。

网络适配器也可以耦合到系统,以使数据处理系统能够通过居间的专用或公共网络耦合到其它数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡只是用于有线通信的网络适配器的当前可用类型中的几种。还可以利用基于无线通信的网络适配器,包括但不限于802.11a/b/g/n无线通信适配器、蓝牙无线适配器等。任何已知的或以后开发的网络适配器都旨在落入本发明的精神和范围内。

本发明的描述是为了说明和描述的目的而呈现的,并且不旨在是穷尽的或将本发明限制于所公开的形式。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择和描述实施例是为了最好地解释本发明的原理、实际应用,并且使本领域的其他普通技术人员能够理解本发明的具有各种修改的各种实施例,这些修改适合于所设想的特定用途。本文所使用的术语的选择是为了最好地解释实施例的原理、实际应用或对市场上存在的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。

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