利用写时差异的数据共享的制作方法

文档序号:6532666阅读:203来源:国知局
利用写时差异的数据共享的制作方法
【专利摘要】当虚拟机对跨多个VM共享的页面进行写时,计算共享值用以确定如果实现所述写命令则该页面将会多么不同。如果该共享值低于预定义的阈值(意为页面将不会“太不同”),则不拷贝该页面(如将以标准的写时拷贝操作)。而是,将页面的内容之间的差异存储为自包含差量。物理-机器的存储器映射被更新为指向差量,并且差量包含到原始页面的指针。当VM需要访问被存储为差量的页面时,从存储器取得差量和原始页面,并且重建页面。
【专利说明】利用写时差异的数据共享
【技术领域】
[0001]本发明涉及数据处理,尤其涉及用于共享数据的系统、方法和计算机程序产品。
【背景技术】
[0002]在过去的十年间,虚拟化技术已经十分成熟,并且已经遍及服务业特别是用于服务器整合。目前,研究和商业行业正专注于优化虚拟环境,从而能够在单个服务器上封装更多的虚拟机(VM),降低在数据中心环境中所消耗的功率,降低虚拟化方案的成本,并且高效地使用可用的计算资源。由于操作系统(OS)和应用程序变得更加资源密集并且需要大量物理存储器以避免频繁分页(frequent paging),所以在服务器上容纳更多VM的一个重大限制因素是存储器。
[0003]用于更高效地使用存储器的已知技术包括(I)基于内容的页面共享(content-based page sharing)以及(2)差分机(difference engine)。基于内容的页面共享在多个VM中共享相同的页面,从而减少了所需的物理存储器的量。差分机共享相同的以及相似的页面(大部分内容相同但是一些内容不同),并且也减少了所需的物理存储器的量。与基于内容的共享相比,差分机技术显著地减少了所需的物理存储器的量,但是由于其实现了最近未使用(Not Recently Used,NRU)策略并且需要对全部存储器进行定期扫描,所以其在计算上开销巨大。
[0004]两种技术均实现写时拷贝(copy-on-write)技术从而避免页面被毁坏(corrupt)。当接收到写命令以修改共享页面时,写时拷贝技术使共享页面被拷贝并且对该拷贝实现写命令。写时拷贝技术由此防止共享页面被毁坏,但是由于共享页面必需被拷贝,所以只要接收到写命令,那么任何存储器的减少都被逆转。

【发明内容】

[0005]在本发明的一个实施例中,一种计算机实现的用于共享数据的方法,包括:由计算机接收用于修改共享数据的写命令;由计算机确定(i)共享数据与(ii)在实现写命令情况下的共享数据之间的共享内容的量;由计算机将所确定的共享内容的量与预定义的阈值进行比较;如果所确定的共享内容的量高于预定义的阈值,则由计算机创建并存储差量,差量描述(i)共享数据与(ii)在实现写命令情况下的共享数据之间的差异;以及如果所确定的共享内容的量不高于预定义的阈值,则由计算机创建共享数据的拷贝、根据写命令所指示来修改共享数据的拷贝、并且存储经修改的共享数据的拷贝。
[0006]除了如上所述的用于共享数据的方法以外,本发明的其它方面还涉及用于共享数据的相应的系统和计算机程序产品。
【专利附图】

【附图说明】
[0007]如此已经概括地描述了本发明,现在将对附图进行参照,所述附图并不必须按比例绘制,并且其中:[0008]图1是根据本发明一实施例的共享数据的方法的流程图;
[0009]图2A-图2D示出了根据本发明的实施例的存储器映射的实例;
[0010]图3是本发明的实施例可在其中操作的计算机网络的示意性框图;以及
[0011]图4是图3的网络中的计算机的示意性框图。
【具体实施方式】
[0012]本发明的实施例可提供用于改进当前的存储器共享技术的能力。尽管在本文中将关于虚拟机描述本发明的实施例,但是应当理解的是,本发明的实施例可应用于其中期望进行数据共享的任何计算环境中。
[0013]在基于内容的共享中,当VM对一页面进行写时,产生该页面的拷贝。这些页面不再相同,但是在大部分情形中,这些页面具有十分相似的内容。如果所述相似内容可被共享,那么存储器的节省将是显著的。在本发明的实施例中,当VM对在跨多个VM共享的页面进行写时,计算共享值(share value)用以确定如果实现所述写命令则该页面将会多么不同。如果该共享值低于预定义的阈值(意为页面将不会“太不同”),则不拷贝该页面(与此相反,标准的写时拷贝操作)。而是,将页面的内容之间的差异(difference)存储为自包含差量(self-contained delta)。物理-机器的存储器映射被更新为指向差量,并且差量包含到原始页面的指针。该过程可被称为写时差异(difference-on-write)。当VM需要访问被存储为差量的页面时,虚拟存储器指向存储差量的机器存储器位置,并且差量转而指向正在被共享的页面。然后,从存储器取得差量和原始页面,并且重建页面。
[0014]使用分页频繁地实现虚拟存储器。由此,在本文将关于对数据页面进行共享描述本发明的实施例。然而,可以对通过使用不同于分页的技术而组织/存储/引用的数据使用本发明的实施例。在分页中,在虚拟地址空间中的连续地址的范围(由处理器所使用的地址的范围)被映射至存储介质的物理地址的相应范围。由这种范围引用的存储器被称为页面。页面的大小通常在512字节至8192字节的范围内,几千字节(例如4千字节)为常见的选择。
[0015]现在参照图1以及图2A至图2D,根据本发明的实施例分别示出了共享数据的方法的流程图以及存储器映射的实例。扫描存储器(例如,图2A至图2D中的机器存储器)以识别要共享的页面(框10)。可通过识别相同的页面或者仅是相似的页面来识别待共享的页面。尽管在图1中这种扫描被示出为仅执行一次,但是这种扫描可诸如周期地或基于需要而多次发生。另外,要共享的相同或相似的页面的识别可以基于持续或实时(on-the-fly)地发生。图2A示出了在任何页面共享发生之前的示例存储器映射。图2A示出了虚拟机VM1至VMn。每个虚拟机执行客户操作系统(“客户操作系统(Guest OS)”),并且可运行一个或多个应用(“应用”)。每个虚拟机利用被映射至机器存储器的虚拟存储器。VM1引用虚拟存储器中的页面1、页面2和页面3。转而,这些页面被映射至机器存储器中的相应页面。VM2和VMn被示出具有相似的映射后的页面。出于本实例的目的,假定VM1,页面2与VMn,页面I相同。还假定对于共享,VM2,页面I与VM1、页面I足够相似。
[0016]可通过使用任何适当的技术来完成对相同页面和相似页面的识别。例如,可为每个页面(为整个页面)以及具有已识别的相同哈希值的页面确定哈希值。所述技术在计算上是密集的。作为不仅精度较低而且计算上较不密集的另一实例,可为每个页面识别两个哈希函数。可假定与那两个哈希函数相匹配的页面是相同的。
[0017]不论用于识别要共享的页面的技术如何,均共享相同的页面(框12)。共享相同的页面包括删除页面的重复拷贝、更新存储器映射以使得所有的引用均指向保留的共享页面以及将保留的页面标记为“已共享”。通过产生(“编码”)并存储描述一个页面与另一相似页面的差异的差量,也共享相似的页面(框14)。删除已为其编码差量的页面并且为该页面将存储器映射更新为指向差量。转而,差量指向保留的共享页面。保留的共享页面被标记为“已共享”。
[0018]如上所述,出于本实例的目的,假定VM1,页面2与VMn,页面I相同,并且假定VM2,页面I与VM1,页面I对于共享足够相似。图2B示出了在这些页面被共享之后的存储器映射。如图2B中所示,由于VMn,页面I与VM1,页面2相同,所以VMn,页面I已被删除,并且存储器映射已被更新以使得VMn的虚拟存储器中的页面I指向机器存储器中的VM1,页面2。尽管未示出,VM1,页面2被标记为“已共享”。
[0019]类似地,由于VM2,页面I与VM1,页面I相似,所以VM2,页面I已被删除,并且差量(Dl)已被编码以便描述VM2,页面I与VM1,页面I之间的差异。存储器映射已被更新以使得VM2的虚拟存储器中的页面I指向机器存储器中的Dl,所述机器存储器中的Dl转而指向VM1,页面I。尽管未示出,VM1,页面I被标记为“已共享”。
[0020]当接收到将修改页面的写命令时(框16),确定该页面是否被共享(框18)。如果该页面未被共享,则执行写命令(框20)。如果该页面被共享,则计算共享值(框22)。该共享值提供一种确定如果执行写命令则所产生的页面将(与原始的共享页面)多么不同的方式。尽管基于如果执行写命令则该页面将看上去的样子来计算共享值,但是在执行写命令之前就计算共享值(并且如下所述,可能导致不执行写命令)。
[0021]通过为共享数据计算第一布隆过滤器(Bloomfilter)并且在实现了写命令的情况下为共享数据计算第二布隆过滤器来计算共享值。布隆过滤器是空间有效概率数据结构,其用于测试要素是成员还是集合。本发明的实施例使用布隆过滤器来简要地表现页面中所包含的信息。将逻辑AND操作应用于第一布隆过滤器和第二布隆过滤器,并且对所产生的位进行求和。所产生的和为共享值。作为计算共享值的实例,考虑具有由下面24位数据所表示的内容的页面X(PgX):
[0022]1000 0001 1100 0110 0000 0001。
[0023]尽管未示出,这些24位通常引用(从左至右)23至O。出于计算布隆过滤器的目的,这些24位被“分块”为所示出的六个块。(实际的数据页面通常会具有远远多于24位,并且每个页面被分成的块的数量也可能不同。典型的4K页面将具有4X 1024或4096位,并且可被“分块”为16块,每块256位。)之前页面Y(PgY)被确定为与页面X相同,并且因而页面Y被删除并且存储器映射被更新以使得页面Y指向页面X。现在假定,已接收到写命令,以将作为左起第二组(位19至16)的4位组从“0001”变为“0100”。
[0024]用于页面X(BPx)的布隆过滤器被计算为:
[0025]0001000101000011。
[0026]类似地,计算用于页面Y的布隆过滤器,就像页面Y如写命令中所指示的那样被改变。用于页面Y(BPy)的布隆过滤器被计算为:
[0027]0001000100010011。[0028]执行BPx与BPy的逻辑AND操作,结果为:
[0029]0001000100000011。
[0030]将所产生的位求和,结果为共享值4。该共享值提供如果实现写命令则页面Y仍将与页面X多么相似的数字表示。
[0031]将经计算的共享值与预定义的阈值进行比较,从而确定共享值是否大于阈值(框24)。阈值通常基于最大共享值。最大共享值与为了计算布隆过滤器而将页面所分成的块的数量相对应。在该实例中,24位页面被分成6个块,因此,最大共享值为6。如上所述,实际的数据页面的大小可能为4K,并且可能被“分块”为16个块,每块256位,从而具有最大共享值16。在本发明的一个实施例中,阈值基于最大共享值的百分比(例如50% )。
[0032]将阈值设置为最大共享值的50%意味着:当写命令将使页面具有小于其内容的50%仍与原始共享页面共同时,框24中的比较的结果将为“否”。理论是,当差异变得过大时,共享页面将不再有意义。继续上文的实例,将经计算的共享值4与阈值进行比较,所述阈值为最大共享值的50%,即阈值为3。当共享值不再大于阈值时(如框24所确定的),执行写时拷贝操作(即,拷贝原始共享页面,并且对拷贝执行写命令),原始共享页面和拷贝均被标记为“未共享”(框26)。
[0033]如果在框24中确定经计算的共享值大于阈值(在本实例中,由于经计算的共享值为4并且阈值为3),则编码差量以描述在实现写命令的情况下页面Y与页面X之间的差异(框28)。差量包含到页面X的指针。可将原始共享页面(页面X)标记为“写时差量”,以表示存在指向原始共享页面的差量。可使用任何适当的差量编码方法。在上文的实例中,其中写命令已被接收,以将作为左起第二组(位19-16)的4位的组从“0001”变为“0100”,经编码的差量可具有下面的格式:
[0034]拷贝5,23
[0035]求和3,100
[0036]拷贝16,15
[0037]所述差量表示:通过(a)拷贝页面X从位置23处开始的5个位(S卩,位23_19),(b)将接下来的3个位(S卩,位18-16)变为“100”,以及(c)拷贝页面X从位置15处开始的16个位(即,位15-0),可从页面X重构页面Y。
[0038]在图2C中,我们看到存储器映射的变化,如果对VMn的页面I进行写则会发生该变化。假定如果实现写命令,共享值仍高于阈值,则对差量(“D2”)进行编码以描述在实现写命令的情况下VMn,页面I与VM1,页面2之间的差异。存储器映射已被更新,使得VMn的虚拟存储器中的页面2指向机器存储器中的D2,并且转而,差量D2指向VM1,页面2。尽管未示出,VM1,页面2被标记为“写时差量”。为所接收的每个写命令重复框16-28。
[0039]只要共享值保持为大于阈值,那么对同一页面的多次写将产生连续编码的差量。在图2D中,我们看到存储器映射的变化,如果再次对VMn的页面I进行写则会发生该变化。假定如果实现写命令,共享值仍高于阈值,则对差量(D3)进行编码以描述(a)在实现写命令的情况下的VMn,页面I与(b)在实现差量D2中所描述的变化的情况下的VM1,页面2之间的差异(注意,这将需要重构页面(即,实现D2中所描述的变化),以便能够确定D3中要描述的差异)。存储器映射已被更新,使得VMn的虚拟存储器中的页面2指向D3,转而D3指向D2,转而D2指向VM1,页面2。[0040]通过对差量(或多个差量)进行解码以识别在差量中被编码的变化并且通过将那些变化应用于原始共享页,可易于根据需要来重构已对其编码差量(或多个差量)的任何页面。如果多个差量被编码,则为了适当地重构页面,以正确的顺序(最早至最新)对所述多个差量进行解码是非常重要的。
[0041]图3是本发明的实施例可在其中操作的计算机网络的示意性框图。计算机72和服务器74提供运行应用程序等的处理装置、存储、和输入/输出装置。计算机72可通过通信链路76经通信网络70而彼此链接,并且可与包括服务器74的其它计算装置链接。通信网络70可以是当前使用TCP/IP协议组以彼此通信的因特网、计算机的世界范围的集合、网络和网关的一部分。因特网在主要节点之间或主机计算机之间提供高速数据通信线路的主干线,该主干线由数以千计的路由(route)数据和消息的商业、政府、教育和其它计算机网络组成。然而,计算机72和服务器74可通过任何适当的通信网络链接。
[0042]除了图3的客户机-服务器布置以外,本发明的实施例还可在任何客户机-服务器布置中或者在任何联网布置中操作,在所述客户机-服务器布置和所述联网布置中,发起通信的资源以及接收通信的资源可驻留在网络中的独立元件上。例如,本发明的实施例可在移动通信/数据结构(诸如,依附于国际移动电信-2000(也称作3G)标准或者MT-Advanced (也称作4G)标准的移动电信网络)中操作,移动电信装置(例如蜂窝/移动电话)在所述移动通信/数据结构中进行通信。
[0043]图4是图3的系统中的计算机(例如计算机72)或服务器的一种可能的内部结构的示图。每个计算机通常包括系统总线92,其中总线是用于在计算机的组件之间进行数据传输的一组硬件线路。本质上,总线92是连接计算机系统的不同元件(例如,处理器、磁盘存储、存储器、输入/输出端口、网络端口等)的共享管道,其使信息能够在元件之间传输。用于将各种输入和输出装置(例如,显示器、打印机、扬声器、麦克风等)与计算机连接的I/O装置接口 96附接到系统总线92。可替代地,I/O装置可通过与系统总线92附接的一个或多个I/O处理器连接。网络接口 100使计算机与附接于网络(例如图3的网络70)的各种其它装置相连接。存储器80为用于实现本发明的实施例的计算机软件指令82和数据84提供易失性存储。磁盘存储86为用于实现本发明的实施例的计算机软件指令88和数据90提供非易失性存储。中央处理器98也附接到系统总线92并提供用于计算机指令的运行。
[0044]所属【技术领域】的技术人员知道,本发明的各个方面可以执行为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体执行为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以执行为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0045]可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于一电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0046]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括一但不限于一电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0047]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0048]可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。如果服务还可以作为应用的REST界面,那么加载的应用能够使用描述性语言(比如JavaScript)来访问该REST界面)程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0049]下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令执行。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了执行流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0050]也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括执行流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
[0051]计算机程序指令还可加载在计算机、其它可编程数据处理设备或其它装置上,从而使得能够在计算机、其它可编程设备或其它装置上执行一系列操作步骤,以产生计算机所执行的处理,以便在计算机或其它可编程设备上运行的指令提供用于执行流程图和/或框图中的一个或多个方框中规定的功能/动作的处理。
[0052]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能执行的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于执行规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的执行中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来执行,或者可以用专用硬件与计算机指令的组合来执行。
[0053]“计算机”或“计算装置”广义地指接收输入数据、通过程序中的计算机指令来处理数据、并且生成输出数据的任何类型的装置。这种计算机可以是手持装置、膝上型或笔记本计算机、台式计算机、微型计算机、大型机、服务器、蜂窝电话、个人数字助理、其它装置、或它们的任意组合。
[0054]在本文中所使用的术语仅出于描述特定实施方式的目的,而非意在对本发明进行限制。除非上下文另外明确指出,否则如本文中所使用的单数形式的“一”、“一个”和“该”也意在包括复数形式。还应该理解的是,当在本说明书中所使用时,术语“包括”和/或“包含”具体说明所述特征、整数、步骤、操作、元素、和/或组件的存在,但是不排除存在或添加一个或多个其它特征、整数、步骤、操作、元素、组件、和/或它们的组合。
[0055]在下文权利要求中的所有装置或步骤及功能元素的相应的结构、材料、动作及等效物意在包括如具体要求权利保护的用于执行与其它要求保护的元素相结合的功能的任何结构、材料、或动作。为了图示和说明的目的已经呈现了本发明的说明,但是本发明的说明并不意在穷尽或限于所公开的形式中的发明。在不背离本发明的范围和精神的情况下,很多修改和变化对于本领域技术人员而言将是显而易见的。实施方式被选择并描述,以便对本发明和实际应用的原理进行最佳解释,并且使本领域其他普通技术人员能够对适于所预期的特定使用的具有各种修改的各种实施方式的本发明进行理解。
【权利要求】
1.一种计算机实现的用于共享数据的方法,包括: 由计算机接收用于修改共享数据的写命令; 由所述计算机确定(i)所述共享数据与(ii)在实现所述写命令情况下的共享数据之间的共享内容的量; 由所述计算机将所确定的共享内容的量与预定义的阈值进行比较; 如果所确定的共享内容的量高于所述预定义的阈值,则由所述计算机创建并存储差量,所述差量描述(i)所述共享数据与(ii)在实现所述写命令情况下的共享数据之间的差异;以及 如果所确定的共享内容的量不高于所述预定义的阈值,则由所述计算机创建所述共享数据的拷贝、根据所述写命令所指示来修改所述共享数据的拷贝、并且存储经修改的所述共享数据的拷贝。
2.根据权利要求1所述的方法,还包括: 如果所确定的共享内容的量高于所述预定义的阈值,则由所述计算机将指向所述共享数据的页面指针修改为替代指向所述差量; 其中所述差量包括到所述共享数据的指针。
3.根据权利要 求1所述的方法,其中确定共享内容的量包括计算共享值,并且计算所述共享值包括: 由所述计算机为所述共享数据计算第一布隆过滤器; 由所述计算机为在实现所述写命令情况下的共享数据计算第二布隆过滤器; 由所述计算机将逻辑AND操作应用于所述第一布隆过滤器和所述第二布隆过滤器;以及 由所述计算机对所述逻辑AND操作的结果的位进行求和。
4.根据权利要求3所述的方法,其中基于分别将所述共享数据和在实现所述写命令情况下的共享数据分成预定义数量的数据块来计算所述第一布隆过滤器和所述第二布隆过滤器。
5.根据权利要求4所述的方法,其中所述预定义的阈值包括所述预定义数量的数据块的预定义百分比。
6.根据权利要求1所述的方法,其中所述写命令是第一写命令,并且所述差量是第一差量;并且其中所述方法还包括: 由所述计算机接收第二写命令,所述第二写命令用以修改在实现所述第一写命令情况下的共享数据; 由所述计算机确定(i)所述共享数据与(ii)在实现所述第一写命令和所述第二写命令情况下的共享数据之间的共享内容的量; 由所述计算机将所确定的共享内容的量与所述预定义的阈值进行比较; 如果所确定的共享内容的量高于所述预定义的阈值,则由所述计算机创建并存储第二差量,所述第二差量描述(i)在实现所述第一写命令情况下的共享数据与(ii)在实现所述第一写命令和所述第二写命令二者情况下的共享数据之间的差异;以及 如果所确定的共享内容的量不高于所述预定义的阈值,则由所述计算机(i)创建所述共享数据的拷贝,(ii)解码所述第一差量,(iii)根据所述第一差量所指示来修改所述共享数据的拷贝,(iv)根据所述第二写命令所指示进一步修改所共享的差量的拷贝,(V)删除所述第一差量,以及(Vi)存储经两次修改的所述共享数据的拷贝。
7.一种用于共享数据的系统,所述系统包括:计算机处理器、可操作地耦接于所述计算机处理器的计算机存储器,所述计算机存储器具有设置在其中的计算机程序指令,所述计算机程序指令经配置用于: 接收用于修改共享数据的写命令; 确定(i)所述共享数据与(ii)在实现所述写命令情况下的共享数据之间的共享内容的量; 将所确定的共享内容的量与预定义的阈值进行比较; 如果所确定的共享内容的量高于所述预定义的阈值,则创建并存储差量,所述差量描述(i)所述共享数据与(ii)在实现所述写命令情况下的共享数据之间的差异;以及 如果所确定的共享内容的量不高于所述预定义的阈值,则创建所述共享数据的拷贝、根据所述写命令所指示来修改所述共享数据的拷贝、并且存储经修改的所述共享数据的拷贝。
8.根据权利要求7所述的系统,其中所述计算机程序指令还经配置用于: 如果所确定的共享内容的量高于所述预定义的阈值,则将指向所述共享数据的页面指针修改为替代指向所述差量; 其中所述差量包括到所述共享数据的指针。
9.根据权利要求7所述的系统,其中确定共享内容的量包括计算共享值,并且计算所述共享值包括: 为所述共享数据计算第一布隆过滤器; 为在实现所述写命令情况下的共享数据计算第二布隆过滤器; 将逻辑AND操作应用于所述第一布隆过滤器和所述第二布隆过滤器;以及 对所述逻辑AND操作的结果的位进行求和。
10.根据权利要求9所述的系统,其中基于分别将所述共享数据和在实现所述写命令情况下的共享数据分成预定义数量的数据块来计算所述第一布隆过滤器和所述第二布隆过滤器。
11.根据权利要求10所述的系统,其中所述预定义的阈值包括所述预定义数量的数据块的预定义百分比。
12.根据权利要求7所述的系统,其中所述写命令是第一写命令,并且所述差量是第一差量;并且其中所述计算机程序指令还经配置用于: 接收第二写命令,所述第二写命令用以修改在实现所述第一写命令情况下的共享数据; 确定(i)所述共享数据与(ii)在实现所述第一写命令和所述第二写命令情况下的共享数据之间的共享内容的量; 将所确定的共享内容的量与所述预定义的阈值进行比较; 如果所确定的共享内容的量高于所述预定义的阈值,则创建并存储第二差量,所述第二差量描述(i)在实现所述第一写命令情况下的共享数据与(ii)在实现所述第一写命令和所述第二写命令二者情况下的共享数据之间的差异;以及如果所确定的共享内容的量不高于所述预定义的阈值,则(i)创建所述共享数据的拷贝,(ii)解码所述第一差量,(iii)根据所述第一差量所指示来修改所述共享数据的拷贝,(iv)根据所述第二写命令所指示进一步修改所共享的差量的拷贝,(V)删除所述第一差量,以及(vi)存储经两次修改的所述共享数据的拷贝。
13.一种用于共享数据的计算机程序产品,所述计算机程序产品包括其中包含有计算机可读程序代码的计算机可读存储介质,所述计算机可读程序代码包括: 经配置用于接收用于修改共享数据的写命令的计算机可读程序代码; 经配置用于确定(i)所述共享数据与(ii)在实现所述写命令情况下的共享数据之间的共享内容的量的计算机可读程序代码; 经配置用于将所确定的共享内容的量与预定义的阈值进行比较的计算机可读程序代码; 经配置用于如下操作的计算机可读程序代码:如果所确定的共享内容的量高于所述预定义的阈值,则创建并存储差量,所述差量描述(i)所述共享数据与(ii)在实现所述写命令情况下的共享数据之间的差异;以及 经配置用于如下操作的计算机可读程序代码:如果所确定的共享内容的量不高于所述预定义的阈值,则创建所述共享数据的拷贝、根据所述写命令所指示来修改所述共享数据的拷贝、并且存储经修改的所述共享数据的拷贝。
14.根据权利 要求13所述的计算机程序产品,还包括: 经配置用于如下操作的计算机可读程序代码:如果所确定的共享内容的量高于所述预定义的阈值,则将指向所述共享数据的页面指针修改为替代指向所述差量; 其中所述差量包括到所述共享数据的指针。
15.根据权利要求13所述的计算机程序产品,其中确定共享内容的量包括计算共享值,并且计算所述共享值包括: 为所述共享数据计算第一布隆过滤器; 为在实现所述写命令情况下的共享数据计算第二布隆过滤器; 将逻辑AND操作应用于所述第一布隆过滤器和所述第二布隆过滤器;以及 对所述逻辑AND操作的结果的位进行求和。
16.根据权利要求15所述的计算机程序产品,其中基于分别将所述共享数据和在实现所述写命令情况下的共享数据分成预定义数量的数据块来计算所述第一布隆过滤器和所述第二布隆过滤器。
17.根据权利要求16所述的计算机程序产品,其中所述预定义的阈值包括所述预定义数量的数据块的预定义百分比。
18.根据权利要求13所述的计算机程序产品,其中所述写命令是第一写命令,并且所述差量是第一差量;并且其中所述计算机可读程序代码还包括: 经配置用于接收第二写命令的计算机可读程序代码,所述第二写命令用以修改在实现所述第一写命令情况下的共享数据; 经配置用于确定(i)所述共享数据与(ii)在实现所述第一写命令和所述第二写命令情况下的共享数据之间的共享内容的量的计算机可读程序代码; 经配置用于将所确定的共享内容的量与所述预定义的阈值进行比较的计算机可读程序代码; 经配置用于如下操作的计算机可读程序代码:如果所确定的共享内容的量高于所述预定义的阈值,则创建并存储第二差量,所述第二差量描述(i)在实现所述第一写命令情况下的共享数据与(ii)在实现所述第一写命令和所述第二写命令二者情况下的共享数据之间的差异;以及 经配置用于如下操作的计算机可读程序代码:如果所确定的共享内容的量不高于所述预定义的阈值,则(i)创建所述共享数据的拷贝,(ii)解码所述第一差量,(iii)根据所述第一差量所指示来修改所述共享数据的拷贝,(iv)根据所述第二写命令所指示进一步修改所共享的差量的拷贝,(V)删除所述第一差量,以及(vi)存储经两次修改的所述共享数据的 拷贝。
【文档编号】G06F17/00GK104040533SQ201380005042
【公开日】2014年9月10日 申请日期:2013年1月7日 优先权日:2012年1月9日
【发明者】M.R.霍格斯特罗姆, T.萨洛, N.沃克, M.亚达夫 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1