虚拟盘操纵操作的制作方法

文档序号:6359576阅读:191来源:国知局
专利名称:虚拟盘操纵操作的制作方法
虚拟盘操纵操作

背景技术
虚拟盘基本上是如下一组一个或者多个文件或者其他存储范围(例如盘、盘上的分区(partition)等),其被配置成如同它是用于计算机系统的物理硬盘驱动一样操作。虚拟盘输入和输出(“I/O”包括读取虚拟盘和向虚拟盘写入)操纵虚拟盘数据。虚拟盘的数据的各种方面也由“元操作”操纵,“元操作”包括如下操作,这些操作创建和删除快照、创建和删除校验点、改变数据的存储位置、删除未用数据等等。由于虚拟盘I/O和元操作都向虚拟盘写入,所以元操作有可能与虚拟盘I/O冲突,从而引起数据破坏。一种用于避免这样的潜在破坏问题的简单直接方式是在虚拟盘用作为 用于服务虚拟盘I/o的盘之时不允许元操作。然而这一方式不合需要,因为它限制了其中可以使用元操作的场景。需要一种允许元操作在虚拟盘用作盘之时安全进行的解决方案。

发明内容
提供这一发明内容以简化形式介绍下文在具体实施方式
中进一步描述的有代表性的概念的选择。这一发明内容不旨在标识要求保护的主题内容的关键特征或者必要特征,也并非旨在以将对要求保护的主题内容的范围进行限制的任何方式来使用。简言之,这里描述的主题内容的各种方面涉及一种技术,通过该技术,包括至少两个重叠层的虚拟盘可以在元操作(该元操作具有它自己的I/o)在虚拟盘上执行时继续用于服务虚拟盘I/o (读取和写入)。这包括防止至少一些向虚拟盘偏移范围(offset range)的元操作写入与向重叠虚拟盘偏移范围的虚拟盘写入并行。实例元操作包括复制、移动、删除、合并、压缩、碎片整理、加密签名、提升(I if ting)、下放(dropping)、转换或者紧缩虚拟盘数据。元操作可以操纵少于所有虚拟盘数据。在一个方面中,服务虚拟盘I/O与元操作执行协调以允许元操作完成、相对于元操作读取和写入控制虚拟盘读取和写入和/或控制元操作对其他数据流量(datatraffic)的干扰。例如,可以抑制和/或优先化虚拟盘读取和写入以允许元操作完成。也可以抑制和/或优先化元操作读取以控制对虚拟盘读取和写入的干扰和/或控制元操作对其他数据流量的干扰。在一个方面中,可以通过操纵一个或者多个去重复数据结构而不是实际上复制或者移动数据来执行元操作,例如紧缩虚拟盘、对虚拟盘进行碎片整理、合并虚拟盘的两个或者更多层、将虚拟盘转换成不同布局、提升虚拟盘或者下放虚拟盘。如果可能,则通过副本卸载操作、更新操作、删除操作和/或移动卸载操作来执行元操作。可以操纵净荷数据和元数据这二者。其他优点可以在与附图结合领会时根据下面的具体描述而变得清楚明白。


在附图中通过实例举例说明而非限制本发明,在附图中,相似标号指示相似元素,并且在附图中
图I是示出了如下机构的实例的框图,该机构允许虚拟盘在于虚拟盘上执行一个或者多个元操作时继续服务读取和写入。图2是可以用来经由基础层和diff (差异化)层维护虚拟存储盘的数据的两层虚拟盘的表示。图3是可以用来提供虚拟存储盘的数据的三层虚拟盘的表示。图4是经由去重复数据结构操纵来转换虚拟盘的表示。图5是经由去重复数据结构操纵来提升或者下放虚拟盘的表示。图6是示出了如下实例步骤的流程图,可以采取这些步骤来处置写入,使得虚拟盘读取和写入可以在于虚拟盘上执行元操作时继续。图7是示出了如下实例步骤的流程图,可以采取这些实例步骤来在可用时通过去重复数据结构操纵来处置元操作I/O。图8示出了本发明的各种方面可以被并入其中的计算环境的示例实例。
具体实施例方式这里描述的技术的各种方面总的涉及以如下方式在虚拟盘用作盘时在虚拟盘上执行元操作,所述方式避免了如果允许元操作数据改变与虚拟盘读取和写入混合则原本可能出现的破坏。也描述了多种如下技术,这些技术允许某些元操作仅操纵虚拟盘数据的部分而不是所有虚拟盘数据。另外描述了以没有不适当地影响其他通信流量的方式在元操作进行时动态移动数据并且移动对虚拟盘读取和写入的服务。应当理解,任何这里描述的实例是非限制实例;例如这里描述由一层或者多层构成的虚拟盘,然而,可以使用提供虚拟盘的其他布置。照这样,本发明不限于这里描述的任何特定实施例、方面、概念、结构、功能或者实例。而是,这里描述的任何实施例、方面、概念、结构、功能或者实例并非限制,并且可以用一般在计算和数据存储中提供益处和优点的各种方式使用本发明。图I示出了如下计算环境,在该计算环境中,计算机器102 (物理的或者虚拟的)耦合到虚拟盘104。虽然图I示出了代表虚拟盘104的单个部件,但是应当注意虚拟盘的数据可以位于单个物理存储设备中或者分布于多于一个物理存储设备(包括在物理上分离的位置(例如远程和/或本地)的设备)之中。另外,尽管图I示出了一个使用虚拟盘104的物理或者虚拟机器102,但是多于一个这样的机器可以使用它并且不同的机器可以在不同时间这样做。使用虚拟盘(作为虚拟盘)的机器或者一组机器可以在元操作数据操纵之前、期间或者之后改变。使用虚拟盘作为虚拟盘的机器不要求是服务虚拟盘I/o (读取和写入)的相同机器。然而在一个实施方式中,服务虚拟盘I/o的机器是执行元操作的相同机器。在一个实施方式中,对虚拟盘I/O的服务和元操作的正在进行的执行一起移向不同的机器(如果它们全然地移动)。注意,虚拟盘元操作即使在虚拟盘的使用从一个机器移向另一机器时仍然可以向着完成而继续。一般而言,虚拟盘服务例如由应用以及操作系统组件和服务进行的读取和写入(R/W)输入和输出(I/O)操作106。可以被服务的其他命令包括(但不限于)刷新(flush)、去映射、副本卸载。虚拟盘也让它的数据经由例如由实用应用和/或操作系统组件和服务发起的下文描述的元操作108来操纵。实例虚拟盘元操作包括如下操作,这些操作创建和删除快照、创建和删除校验点、改变数据的存储位置、删除未用数据、修改去重复数据结构等等。如下文描述的那样,I/O处置机构110保证正确盘语义,包括通过处置冲突,使得更旧的数据不能重写(overwrite)更近写入的数据,并且使得当已经(例如向一层)写入更新的数据时不(例如从另一层)读取更旧的数据。虚拟盘104可以经由基础层112和一个或者多个差异化(diff)层116如图I中所示由一个或者多个备份数据层(该层可以是文件)构造。然而注意,简单虚拟盘可以具有仅一个备份存储数据“层”,而读取和写入这二者从这一单层得到服务。注意如图I中所示,虚拟盘I/o操作106指向虚拟盘104,而元操作108可以指向虚拟盘104、diff层116和/、或基础层112。一般而言,多层虚拟盘通过在基础层上以由上至下的顺序叠加一个或者多个diff层来形成其内容,从而当存在时使用最上diff层中的任何数据,而如果不存在则使用下一diff层(如果有)的数据,并且以此类推直至到达基础层数据为止。在一个实施方式中,基础层为只读,而向最上diff层进行任何写入。注意,这样的层可以在不同物理存储设备上并且任何给定层也可以分布于多于一个存储设备中。每层具有在虚拟盘104的偏移处存在的数据的可能稀疏的表示。当出现从虚拟盘的读取时,读取被转译成与请求的虚拟块设备偏移范围对应的备份数据的对应读取。注意,如果稀疏地表示备份数据,则有可能的是读取将来自当前无任何备份存储数据的一个或者多个偏移,在该情况下,可以通过向读取缓冲器填充零来服务读取。通过转译虚拟盘偏移并且执行向备份数据的对应写入来服务写入,这可能需要在写入备份数据的新区域之前创建该新区域。图2是具有两层222和226 (即在其中diff层226具有数据的任何偏移范围处由diff层226覆盖(override)的基础层222)的虚拟盘220的实例。因此通过无论何处存在这样的数据都使用diff层226的数据、然后在无diff层数据存在时使用基础层222的数据来形成虚拟盘内容。Diff层包含写入的数据。注意,如果基础层并非只读则向基础层回写diff层的数据是可行的;一旦向基础层回写diff层的区域,如果希望则然后可以删除diff层区域。图3示出了具有三层的虚拟盘330。除了代表写入数据的diff层336和下面的基础层332之外,这一虚拟盘330还包括高速缓存层334。高速缓存层334可以用来代表从基础层332复制或者先前从基础层332读取的数据中的一些或者全部;例如如果基础层被远程定位,则可以通过无论本地高速缓存层334在何处具有数据都读取它并且仅在本地高速缓存层334无数据时访问基础层来获得更高效的访问。读取可以部分来自高速缓存层334并且部分来自基础层332或者部分来自diff层336、部分来自高速缓存层334并且部分来自基础层332。可以实施其他分层布置。例如,可以有按照时间顺序的多层,包括虚拟盘数据当它在各种时间存在时的快照,例如在时间TO的基础层、在时间Tl-Tn的一个或者多个diff层(这些diff层被快照成一个或者多个只读diff层)和最上diff层(该最上diff层跟踪自从上次快照起的当前写入)。Diff层的堆叠顺序无需对应于创建快照的时间顺序。在允许写入进行之前,通过首先将存在于目标diff层中的、尚未存在于相邻(在本说明书中进一步朝向顶部)diff层中的任何范围复制到相邻diff层中,可以允许向中间diff层的写入。在任何布置(包括图2或者图3的布置)中,每个diff层中的数据覆盖任何更下层(逐偏移下至基础层)中的数据。换而言之,如果最上diff层具有用于给定偏移的数据,则无论任何其他层(包括基础层)针对该偏移包含什么,该数据都是用于虚拟存储设备的该偏移的正式数据。可以按照由上至下的排序使用其他一层或者多层来服务未用最上diff层中的数据表示的任何偏移的读取。如果没有层具有用于给定偏移的数据,则在该偏移的读取将返回零。取决于在每层中读取范围的哪些部分被表示,可以部分地从一层并且部分地从更下层服务读取。完全通过向最上diff层写入来服务写入,尽管如果希望也可以向其他层(包括基础层)回传它们,只要任何这样的层在给定实施方式中并非只读。在这样的写入-直通情况下,在写入-直通层上的层需要使对应的虚拟盘偏移被去除或者被写入与向写入-直通层的写入相同的数据。
如这里描述的那样,可以在虚拟盘并行用作用于I/O的盘时通过元操作来操纵虚拟盘数据。通过让I/o处置机构110防止后退到虚拟盘偏移范围的数据的元操作操纵写入与重叠的虚拟盘偏移范围的虚拟盘写入并行来维持正确的盘语义。因此保护虚拟盘读取和写入免于元操作带来的改变。元操作操纵可以包括复制、移动、删除、压缩或者对虚拟盘数据的其他操作。另一潜在元操作是每块加密签名。复制或者移动的一个实例目的可以是将来自diff层的数据合并到基础层中。删除的实例目的是去除不再被虚拟盘上驻留的文件系统使用的数据。去 重复是例如减少冗余数据的另一元操作。注意,不同元操作可以以不同方式通过它们的虚拟盘数据的部分工作。例如,合并元操作可以按照虚拟盘偏移顺序处理虚拟盘数据,而层复制操作可以按照存储位置顺序(例如按照文件存储位置顺序或者文件系统聚类存储位置顺序)通过虚拟盘数据工作。通过具体实例“合并”元操作,考虑如图2中那样的具有两层的盘。一般而言,合并元操作向基础层226写入diff层数据、然后删除该diff层数据,从而产生如下基础层,该基础层代表每个合并的区域中的虚拟盘。因为盘偏移是一维的量,所以虚拟盘内容220仅代表存在于虚拟盘上的数据块的一维序列,并且diff层可以覆盖和替换一些数据块。合并操作通常融合数据,使得diff层的数据重写基础层222上的在相同虚拟盘偏移位置的任何事物。为了实现这一点,用于合并的实际操作序列是读取存在于diff层226中的块、向基础层222写入该数据块并且从diff层226删除块。然而,考虑同时向块在虚拟盘上的位置发出向虚拟盘的盘写入。如果合并操作未在进行,则写入如典型的那样被写入到diff层226,从而重写处于diff层226中的任何事物。这一数据然后取代(覆盖)基础层222中的在该位置的任何事物。在合并元操作期间,写入可以被配置成以diff层或者合并目标层(在这一实例中为基础层)为目标。如果虚拟盘写入以diff层为目标,那么如果新写入的数据由于合并元操作而丢失(例如,如果子操作的顺序如下)则出现问题
I)合并元操作从diff层读取任何旧数据。2)虚拟盘写入用新数据重写diff层中的数据。
3)合并元操作向基础层写入旧数据。4)合并元操作从diff层删除新数据。在替代实例中,写入数据可能在虚拟盘写入被配置成向基础层(而不是diff层)写入时由于合并元操作而丢失
I)合并元操作从diff层读取旧数据。2)虚拟盘写入向基础层写入新数据。3)虚拟盘写入也删除diff层中的任何数据,由此无数据存在于diff层中(从而无可以取代新写入数据的diff层数据)。4)合并元操作向基础层写入旧数据(并且因此重写由虚拟盘写入写入的新数据)。5)合并元操作尝试从diff层删除旧数据(尽管并无旧数据)。注意,这些是在与虚拟盘写入相同的时间执行元操作时固有的实例问题的仅两个可能变化。另外注意,一种用于解决这样的问题的方式是简单地防止元操作读取和写入与虚拟盘读取和写入并行出现,无论是读取还是写入,并且无论操作是否共享任何共同扇区(sector)。然而这一方式未必是保守的,并且未必在整个元操作的持续时间内减缓(或者停止)虚拟盘I/O。为了避免这些问题,I/O处置机构110允许元操作虚拟盘I/O在与其他写入相同的时间在相同虚拟盘上操作、但是不在相同时间在虚拟盘104的相同偏移处操作。在一个实施方式中,I/O处置机构110未允许元操作和虚拟盘I/O并行访问虚拟盘的相同偏移/区域(执行该偏移/区域的任何并行读取或者写入)。换而言之,防止了元操作读取和写入与共享共同扇区(等)的虚拟盘读取和写入并行出现。这仅影响在实际上与当前进展中的元操作I/O重叠的虚拟盘I/O上的执行,然而它仍然可能未必是保守的并且在某一程度上减缓虚拟盘I/o。在另一实施方式中,仅防止以相同diff层为目标并且共享共同扇区的写入并行出现。换而言之,I/O处置机构110允许在相同偏移处的并行读取,也就是说,它允许元操作和虚拟盘I/o 二者在相同时间从虚拟盘的相同偏移读取数据。如可以容易理解的那样,允许并行读取有些更复杂,但是也更有性能。因此,读取无论层如何都可以与其他读取和写入并行出现。向不同diff层的相同扇区的写入可以并行出现(这对于具有共计三层的实施方式而言有意义,因为向中间层的写入与向最上diff层的写入可以并行进行)。在一个并行读取实施方式中,涉及读取和写入二者的操作步骤(在该操作步骤中在写入之前执行读取)可以先获取用于读取的虚拟盘的偏移范围,然后在执行写入之前升级对写入的访问。这样的操作步骤的一个实例是如下合并步骤,在该步骤中从虚拟盘的diff层读取数据,然后在相同虚拟盘偏移向虚拟盘的母(例如基础)层写入。另一实例是如下虚拟盘读取1/0,该I/O从母层读取并且直接触发进行中的元操作以向虚拟盘的更高(“更近”)层回写读取的数据作为进行中的数据移动元操作的部分。在其中两个操作步骤均尝试将偏移范围从读取升级成写入的情形中,升级尝试失败,因为升级的目的是避免任何别的操作干预写入,并且不能向二者给予该特权。第一升级尝试在第一升级尝试最终成功而其他升级尝试失败的意义上“获胜”。当访问升级尝试失败时,跳过或者重新尝试操作步骤。跳过在机会性地执行该步骤的情况下适合,而重新尝试在执行该步骤作为扫过虚拟盘数据的具体部分(例如虚拟盘、的层)的部分时是适当的。取决于实施方式,可能有必要显式地排除向当前被写入的相同diff层的相同扇区的并行读取,因为该数据尚未完全存在。这可以通过直至向相关的diff层的写入完成才将扇区标记为存在于该diff层中来隐式地保证。在一个替代实施方式中,直至元操作写入完成才向虚拟盘读取准予针对虚拟盘读取的偏移范围。元操作写入的变成与diff层写入无关(由diff层覆盖)的任何部分不能重写该覆盖的diff层中的数据。这在两层布置中需要加以应对。注意(可能)将不从基础层读取已由diff层写入覆盖的数据。然而,一旦“从基础读取、然后向diff写入”操作开始,来自基础的读取就将潜在地与向重叠扇区的虚拟盘写入并行进行。一旦基础层读取已经完成,向diff层的写入就正常出现。 这一操作的向diff写入部分需要首先获取diff层的正在对其尝试写入的相关扇区上的写入锁定。在获取写入锁定(这确保当前无虚拟盘写入或者冲突读取于diff层并行进展)后,重新校验diff层。如果diff层的扇区被填充,这意味着虚拟盘的扇区被写入,则不能向diff层写入用于该扇区的元操作数据,而代之以丢弃之。在适当的实施方式中逐个扇区进行这一确定。如果实施方式使得以比每个扇区更大的粒度维持diff层,则向diff层的虚拟盘写入直至已经先从基础层复制对应块才能出现。这是在向块的虚拟盘写入首次出现时引起的附加开销,然而它简化了锁定,因为这样的操作仅需考虑diff层是否在每块的基础上而不是在每个扇区的基础上被填充。可以理解锁定的粒度可以不同于写入粒度;换而言之,锁定可以在比单个虚拟盘扇区的偏移范围大小更大的偏移范围上操作。作为又一优化,与典型的“读取器-写入器锁定”对照,I/O处置机构110的并行防止机构允许多个写入并行出现,只要所有写入来自相同源(元操作或者虚拟盘I/o)。换而言之,“写入器”不是单个虚拟盘写入、而是替代地包括存在向偏移范围的至少一个并且可能多于一个虚拟盘写入。进一步对照这一机构,来自典型的“读取器-写入器锁定”是该机构与偏移范围工作的方式。基于范围的数据结构,而不是单个锁定,可以用来跟踪已经被准予的访问类型、未决访问请求和如下子操作(读取或者写入)的数目,这些子操作需要在访问重新评估可以出现之前释放它们的访问。注意,典型读取器-写入器锁定阻止等待准予访问的执行线程。对照而言,这里描述的机构不阻止块线程,而是将未决操作排队到操作列表以在准予访问时继续。这有助于操作系统线程的更高效使用。另一优化是仅在操纵写入可能潜在地损害虚拟盘写入时防止写入的并行性。在一些情况下,元操作写入不能有可能影响虚拟盘读取或者写入,并且不能不恰当地覆盖任何读取或者写入。在这些情况下并且仅这些情况下,这一优化允许元操作写入与虚拟盘I/o(读取或者写入)并行进行。在一个实施方式中,潜在地影响整个虚拟盘的元操作操纵(例如重新链接虚拟盘层)被视为对总是与所有其他范围相交的“特殊”范围的访问请求。一个替代实施方式可以使用单独读取器-写入器锁定以在对虚拟盘层的布置进行改变之时防止虚拟盘I/o。虚拟盘写入可以被配置成以特定存储文件或者设备(例如代表虚拟盘层)为目标。虚拟盘写入可以通过从更高(“更近”)层删除并且向更下层写入或者通过向这两层写入来以更下层为目标。在上文描述的在合并元操作在进展中之时让虚拟盘I/O向基础层写入的情况下,当“深度写入”向diff层和基础层二者写入时,这一深度写入被视为元操作本身,因为不能与向相同偏移范围的另一虚拟盘写入并行执行深度写入。允许两个深度写入并行进行将潜在地导致diff层和基础层包含用于相同偏移的不同数据。如果这出现于虚拟盘的已经被合并的区域中,则有合并结果的不正确的语义,因为合并是为了造成如下基础层,该基础层代表具有与diff层代表的虚拟盘相同的数据的虚拟盘。这如果未被防止则可能随后造成虚拟盘的内容在去除diff层时自发地改变而无任何虚拟盘写入能起作用,这将违反盘语义。转向另一方面,虚拟盘元操作可能由于涉及到的数据量而需要花费长时间来完成。例如,当向新机器复制虚拟盘数据时,一种方式是从源机器向新机器复制所有虚拟盘数据,然而复制所有数据可能并非总是必要的。
在一个方面中,虚拟盘操纵可以仅操纵虚拟盘数据的部分(与所有虚拟盘数据对照)。举例而言,虚拟盘数据的各种布置是可能的,并且这些布置中的许多布置将虚拟盘数据拆分成逻辑组。出于性能原因,可以如组描绘的那样仅对一些数据执行元操作,其中组可以指代虚拟盘层或者虚拟盘的复制(例如镜像)的部分的一个部分。例如,考虑一些虚拟盘数据可从多于一个源(例如远程存储设备和共享存储设备)获得。如果访问共享存储设备更高效,则无需从远程存储设备复制数据。因此,操纵可以仅对尚未从具体机器高效可访问的数据进行操作,例如复制操作,该操作仅复制尚未高效可用于目的地机器的数据。在上下文中,“高效可访问”和“高效可用”指代具体机器(通常为复制或者移动操作的目的地机器)可以访问虚拟盘的部分的相对速度和延时。例如,虚拟盘可以具有两层,其中基础层存储于源和目的地机器二者均可访问的服务器上。Diff层可以存储于源机器的本地附着的驱动上。目的地机器可以能够访问存储于源机器的本地驱动上的diff层,但是它相对缓慢和低效,因为它需要源和目的地机器这二者的进行中的处置。对照而言,基础层同样可由源和目标机器这二者访问。在这一实例中,移动diff层,但是未移动基础层。源和目的地机器可以均参与移动diff层。一旦移动diff层,目的地机器就具有diff层的本地副本并且可以恰如源机器可以的那样访问通常可访问的服务器上的基础层。虚拟盘数据的操纵可以不操纵虚拟盘的所有层。换而言之,元操作无需触摸所有虚拟盘数据以让描述的机构应用于元操作。作为一个实例,可以独立于是否也对基础层进行碎片整理来对diff层进行碎片整理。作为另一实例,考虑机器A使用如下虚拟盘,该虚拟盘包括本地存储的diff层和远程存储的基础层。在盘在使用中时,向机器A本地复制远程基础层中的数据而不扰动diff层。一旦复制已经完成,虚拟盘就不再需要远程基础层。向diff层写入机器A写入的数据,从而允许基础层数据的复制继续下去,而来自虚拟盘写入的干扰更少。作为又一实例,考虑合并两个虚拟盘层。合并操作未影响相邻层,并且如果合并层与服务虚拟盘写入的层分离,则合并和虚拟盘写入可以在相同虚拟盘偏移上并行进行。又一实例是复制(或者移动)操纵,其中复制(或者移动)虚拟盘的仅一层。可以通过复制整层、然后删除源层来实现移动,或者可以通过反复复制源层的子部分、然后删除源层的该子部分来实现它。在这一情况下,虚拟盘分层机构通过使用来自源或者目的地(无论哪个具有数据)的数据来服务来自层的读取,并且通过强制移动或者删除源中的对应虚拟盘偏移范围、然后将写入的数据放入目的地位置来服务向层的写入。虚拟盘数据的操纵可以仅对当前使用虚拟盘的机器所读取的数据进行操作。如果机器正在使用远程存储的基础层,则基础层读取可能需要长时间来服务,因为需要从远程储存器传送数据。远程储存器也可以服务许多机器,这可能由于储存器上的高负荷水平而进一步降低性能。如果仅很偶然地创建虚拟盘以供使用,则适当的解决方案可以是向本地储存器复制整个基础层。一旦完成这一点,就无需从远程储存器服务更多读取,从而增加性能并且降低远程储存器上的负荷。然而,如果经常创建虚拟盘,则由于复制整个基础层所致的在远程储存器(和通信基础设施)上产生的负荷可以压倒由于最终让所有基础层数据被本地存储所致的任何节省。在这一情形中,适当的解决方案可以是让虚拟盘保持依赖于远程基础层,但是机会性地向本地储存器回写(例如本地高速缓存)从远程位置读取的任何数据作为服务虚拟盘读取的部分。然而注意,用来从储存器读取数据的缓冲器可以由更少信任的过程可写,因而可能需要存储器复制来隔离虚拟盘读取与远程读取和本地写入。如这里描述的那样,本地写入也被视为用于同步目的的元操作写入并且未被允许与来自相同层的任何虚拟盘写入或者读取并行进行。这里描述的技术也协调对虚拟盘I/O的服务和元操作的执行,从而元操作未花费无限量的时间、由此限制元操作对虚拟盘I/o的影响并且保证元操作未不合理地干扰其他
数据流量。这可以经由多个机构来实现,包括用来执行数据操纵的通信信道(一个或多个)与用来服务虚拟盘读取和写入的通信信道(一个或多个)可以分离。分离的通信信道可以帮助减少元操作对其他数据流量(包括虚拟盘I/o流量)的影响。信道也可以在虚拟盘数据的操纵完成之前改变。注意,数据的操纵独立于任何数据传送并且可以使用无论是预期用于本地还是联网使用的任何数据通信技术(例如以太网、光纤信道、无线联网、SATA、SAS等)。虽然分离的通信信道可以用于执行元操作和服务虚拟盘1/0,但是仍然维持写入的同步。也可以抑制或者优先化在操纵数据时生成的通信流量以显式地管理对共享相同通信介质的其他通信流量的破坏程度。例如,可以抑制与元操作有关的通信流量,从而更少的网络容量用于元操作I/O。这减少了对其他流量的影响,但是也可能不必要地减缓元操作进展。假如适当的网络基础设施可用,一种替代方式是用比其他数据流量更低的流量优先级标注元操作I/O数据流量。为了保证对元操作产生某一进展,可以用正常优先级标注某一量的经抑制的元操作I/O流量。用更低优先级标注的最终结果是原本未用的网络容量用来对“背景”元操作产生进展。用正常优先级标注作为虚拟盘I/o的部分而执行的前景元操作以避免拖延虚拟盘I/O落在其他正常优先级流量之后。可以抑制或者优先化元操作读取和写入以显式地管理元操作对虚拟盘I/O (读取和写入)和其他存储I/o (读取和写入)的性能影响。无论是否使用共享网络,都由于元操作而也有对存储设备本身的性能有影响。这可以用与网络使用相似的方式来减轻,例如可以抑制元操作I/o或者可以显式地使它们优先于相同存储设备的其他I/O以允许存储设备针对其他I/o保持响应。一般而言,虚拟盘读取相对于元操作I/O具有优先级。然而,有时可以抑制虚拟盘写入以例如避免如下任何情形,在该情形中,进行中的虚拟盘写入可能潜在地防止虚拟盘操纵曾经完成。例如,可以通过快照包含写入的每个diff文件并且创建用于任何新写入的新diff文件来构建diff文件树;可以完成这一点以将diff文件(并且可能地基础文件)移向目的地设备,而目标是随时间具有越来越小的diff文件,从而快速移动包含最近写入的(相对小的)diff文件的最后移动。然而,如果写入太快到来,则更新的diff文件可能相对于快照的diff文件增长而不是收缩,由此从未可以实现该目标。抑制写入防止这样的增长。当虚拟盘数据的操纵是从源向目的地移动或者复制数据时,这一抑制可以包括向目的地的“写入直通”虚拟盘写入以防止虚拟盘写入比虚拟盘操纵可以完成工作更快地产生用于虚拟盘操纵的附加工作。 抑制虚拟盘写入可以不同于抑制元操作I/O。当抑制元操作I/O时,主要目的是减少元操作对其他I/o和其他网络流量的影响。对照而言,虚拟盘写入抑制适用于虚拟盘I/O而不是元操作I/O。如果允许虚拟盘I/O以它们的最大速率进行,则在一些情况下,虚拟盘I/o可以撤消元操作进行的一些进展。如果虚拟盘写入能够比元操作可以进行进展更快地撤消进展,则元操作将可能未完成。一个实例是将来自diff层的数据合并到基础层中。如果合并元操作在将数据从diff层移入基础层中并且虚拟盘写入仍然被引向diff层,则可以有可能让虚拟盘写入比元操作可以将数据从diff层移向基础层更快地向diff层写入。在这一情况下,元操作可能从未完成。另一实例是将层从一个位置向另一位置复制,而又在进行向相同层的虚拟盘写入。在这一情况下,向源位置的虚拟盘写入可以比从源位置向目标位置复制数据更快。用于解决这一情形的各种方式可以考虑为一种抑制虚拟盘写入的形式。一种方式是通过调整虚拟盘写入的目标位置以向“目的地”位置而不是任何“源”位置写入或者除了任何“源”位置之外还向“目的地”位置写入来强制虚拟盘写入从未“撤消”元操作已经完成的工作。在合并的上述第一实例中,这意味着虚拟盘写入以基础层而不是diff层为目标。这要求虚拟盘写入也通过从diff层删除数据来在由写入改变的偏移范围中“揭开”基础层。在层复制操作的上述第二实例中,向源和目的地位置二者写入虚拟盘写入。这保证虚拟盘的任何已经复制的区域在另外的写入出现时保持相同。一种用于解决该情形的替代方式是显式地抑制虚拟盘写入。这保证元操作将最终胜过虚拟盘写入。在一个实施方式中,每个虚拟盘维持如下虚拟盘写入“限额(allowance)”值,该值始于小值(不完全是零)以避免在元操作正开始时拖延虚拟盘写入。每当进行中的元操作产生某一数量的进展时,限额数被增加某一数量(例如少于初始值)。当发起虚拟盘写入时,写入在它可以被发出之前先获取一些限额。如果限额值太接近零,则虚拟盘写入有序等待直至限额值充分大以允许虚拟盘写入分配一些限额,然后继续。在限额值在预设阈值以下之时,允许元操作无抑制地运行以增大限额值并且避免过度地减缓任何进行中的虚拟盘写入。在这一替代解决方案中,虚拟盘写入也向进行中的元操作通知源层中的任何已写区域,因为元操作可能已经处理那些区域并且现在需要再次处理它们以考虑虚拟盘写入所进行的改变。在又一替代实施方式中,跟踪虚拟盘写入所产生的而进行中的元操作尚未处理的额外数据(额外工作)量,并且抑制虚拟盘写入以防止虚拟盘写入带来的而进行中的元操作尚未处理的这一额外数据量增长超出设置的限制。元操作可以处理写入所产生的额外数据的部分以减少跟踪的值,从而虚拟盘写入可以再次继续。注意,在“从未撤消工作”方式中,虚拟盘写入可能需要以远程储存器而不是本地储存器为目标,这增加了虚拟盘写入的延 时并且由此不必要地降低性能。在“显式地抑制虚拟盘写入”方式中,元操作有时能够保持充分领先于虚拟盘写入,从而虚拟盘写入可以立即进行而无需等待数据的远程写入完成。这允许虚拟盘写入以具有低延时的本地储存器为目标从而提高性能。对于倾向于一次一个地发出虚拟盘写入的工作量,这一方式可以特别有用。元操作可以能够实现向远程位置的更高吞吐量的写入,因为它可以能够并行发出许多写入从而更好地隐藏远程存储的延时。虚拟盘元操作可以改变用来存储虚拟盘数据的文件或者设备集。当这一改变出现时,一般而言,I/o处置机构开始保持可以使用旧存储文件或者设备的任何I/O、等待使用旧存储文件或者设备的飞行中(in-flight) I/O完成、改变成使用新存储文件或者设备并且停止保持I/O (让它们再次被处理)。更具体而言,根据元操作,I/O处置机构采用不同方式。第一方式是开始保持可以使用旧存储文件或者设备的任何I/o、等待使用旧存储文件或者设备的飞行中I/O完成、改变数据结构以使用新存储文件或者设备、停止保持I/O (让它们再次被处理)并且清理旧文件或者设备(因为它不再由任何I/o使用)。另一方式开始保持可以使用旧存储文件或者设备的任何I/O、等待在向旧存储文件或者设备发起的I/o完成发起、改变数据结构以将新存储文件或者设备用于新发起I/O、停止保持1/0(让它们再次被发起)、等待使用旧存储文件或者设备的旧I/O完成、然后清理旧文件或者设备(因为它不再由任何I/o使用)。这一其他方式有些更复杂、但是对性能具有较小影响并且仅可用于未向在被操作的任何数据写入的元操作或者向在被操作的任何数据的所有副本写入的元操作或者服务虚拟盘读取、但是未服务写入的层。第一方式对于任何元操作起作用。转向另一方面,虚拟盘元操作可以操纵去重复数据结构以实现元操作的加速性能。一般而言,通过操纵去重复数据结构,可以执行数据的逻辑复制而无需实际复制任何数据。数据的移动卸载可以通过与其他存储操作一起置于低级事务中来直接提供益处。可替换地,可以通过在实施于存储设备以外的逻辑事务中执行复制-更新-删除来实现数据的逻辑移动。这样的复制卸载或者移动卸载操作可以可用于全部或者部分由虚拟盘使用(如经由SCSI和光纤信道协议中的命令确定的那样)。注意移动删除源数据而复制未删除数据、代之以留下删除作为选项。例如,可以设置实施于存储设备以外的事务以通过“复制-更新-删除”操作来“移动”数据,并且如果事务失败则操作可以回到源数据。注意,删除是去映射(SCSI)或者修整(ATA),这对于下面的存储而言是适合的。复制卸载复制块,这与移动块或者删除块一起很高效,因为它基本上调整指针而不是复制数据本身。在一个实施方式中,如果通过复制卸载(或者至少部分)来完成元操作,则元操作影响这一特征。
多个虚拟盘元操作可以从硬件和/或软件的下面的去重复能力中受益,去重复能力包括紧缩、碎片整理、合并和转换(也就是说变成例如具有不同块大小的新布局)。其他操作包括与将一个虚拟盘表示转换成另一虚拟盘表示(例如逻辑单元转换成VHD文件(提升)或者相反(下放))有关的“提升”和“下放”操作。例如,考虑在基础物理层上具有一层或者多层的虚拟盘的碎片整理。在这样的层堆叠中,可以有可以碎片整理虚拟盘的多种方式(例如作为文件系统的部分、以块为单位、在主系统中等等)。攀爬图(scramble map)基本上用于跟踪数据实际上是如何布置的,与一旦经碎片整理数据如何被布置相对。迄今为止,通过基于攀爬图实际复制数据来完成碎片整理,这经常造成多于一次复制相同数据,因为每层都经碎片整理。如果替代地使用复制卸载(或者移动卸载)(例如从最上层下至基础物理层),则可
以通过数据结构操纵来碎片整理基础物理层上的层而无对实际数据的任何复制。这颇为迅速并且被实现而未严重影响性能。注意,随着碎片整理每一层,一个或者多个更下层的攀爬图改变,并且复制卸载碎片整理有效地将攀爬图下推一层(或者多层)直至仅攀爬基础物理层。然后,仅在基础物理层完成实际数据复制(或者移动),这可以如希望的那样被全部或者部分调度。从复制或者移动卸载中受益的另一元操作是在将一个虚拟盘表示转换成另一虚拟盘表示时。例如,图4示出了将块(BI和B2)转换成不同块大小(B1+B2)。这可以无需复制数据、而是通过操纵指针以在逻辑上将两块组合成单块来完成。注意,也可以在使用这一技术的这样的零物理复制转换中涉及到某些虚拟盘元数据(以及净荷数据)形式(例如扇区位图)。图5示出了另一组元操作(即提升和下放),该组元操作向或者从能够去重复的存储池转换一组相关虚拟盘层文件,从而避免需要复制块数据,并且预先建立逻辑上重复的数据。一般而言,这提供使用在不同层提供的优点,例如通过下放至更下(块)层以完成一些工作、然后回升至更高(文件)层以便于管理。举例而言,虚拟盘可以具有与嵌套逻辑单元对应的多于一个表示,例如在VHD (虚拟硬盘)格式化文件(或者另一格式的文件)下的LUN。实际上,单元具有不同数据结构、但是共享用于数据净荷的相同下层储存器。使用复制或者移动卸载的提升或者下放基本上将一个改变成另一个并且由于共享而通过简单地改变去重复数据结构来执行提升或者下方,使得指针指向正确的偏移。注意,元数据也可以与净荷一起被下放和提升,例如可替换的净荷流或者位图。另夕卜,可以持续元数据中的一些或者所有元数据,以便在层(包括元数据)存在于给定时间时
重建层。图6概括始于步骤602 (其中接收向虚拟盘的写入)的处置写入的一般实例操作。步骤604确定写入是否与在相同虚拟盘偏移范围向重叠层的任何其他写入并行。如果不是,则步骤604转移到步骤608并且允许写入。注意,这可以如上文描述的那样通过将未决操作排队到操作列表以在准予访问时继续来完成。步骤606是如果希望则提供一些优化的可选步骤。一般而言,步骤606确定是否有允许元操作写入的例外。如上文描述的那样,这样的可能例外包括确定写入不能损害虚拟盘写入、确定写入和其他写入来自相同源或者确定写入是向更近的层和被更近的层覆盖的作为目标的层。如果有例外,则步骤606允许在步骤608写入。否则,在步骤612防止写入;可以如上文描述的那样通过锁定或者通过标记/延迟并且将未决操作排队到操作列表以在准予访问时继续来实现防止。冲突写入在步骤614完成,然后在步骤616触发先前延迟或者标记为未决的写入。该图示出了为了处理单个写入而采取的步骤,然而可以容易理解可以根据在步骤612与614之间的时间间隔期间的图6中的步骤处理其他写入。图7概括当如步骤704确定的那样可以通过去重复数据结构操纵来实现接收的I/0(步骤702)时处置元操作I/O的一般实例操作。如果是这样,则步骤706通过这样的操纵(例如经由复制卸载操作、更新操作、删除操作和/或移动卸载操作)来执行元操作的至少部分。否则,以先前的效率较低的方式(例如通过实际复制/移动/删除数据)在步骤708处置元操作I/O。实例操作环境
图8图示了图1-7的实例可以实施于其上的适当计算和联网环境800的实例。计算系 统环境800仅为适当计算环境的一个实例而并非旨在于暗示关于本发明的使用或者功能范围的任何限制。计算环境800也不应解释为具有涉及示例操作环境800中所示部件中的任何一个部件或者组合的任何依赖性或者要求。本发明与诸多其他通用或者专用计算系统环境或者配置一起操作。可以适合用于与本发明一起使用的公知计算系统、环境和/或配置的实例包括但不限于个人计算机、月艮务器计算机、手持或者膝上型设备、写字板设备、微处理器系统、基于微处理器的系统、机顶盒、可编程消费电子设备、网络PC、小型计算机、大型计算机、包括上述系统或者设备中的任何系统或者设备的分布式计算环境等。可以在计算机执行的计算机可执行指令(例如程序模块)的一般背景中描述本发明。一般而言,程序模块包括执行特定任务或者实施特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明也可以实施于分布式计算环境中,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和/或远程计算机存储介质中。参照图8,用于实施本发明的各种方面的示例系统可以包括形式为计算机810的通用计算设备。计算机810的部件可以包括但不限于处理单元820、系统存储器830和系统总线821,该系统总线821将包括系统存储器的各种系统部件耦合到处理单元820。系统总线821可以是若干类型的总线结构(包括存储器总线或者存储器控制器、外围总线和使用多种总线架构中的任何总线架构的本地总线)中的任何类型。举例而言而非限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA (EISA)总线、视频电子标准协会(VESA)本地总线和也称为Mezzanine总线的外围部件互连(PCI)总线。计算机810通常包括多种计算机可读介质。计算机可读介质可以是可以由计算机810访问的任何可用介质并且包括易失性和非易失性介质以及可拆卸和不可拆卸介质。举例而言而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储信息(例如计算机可读指令、数据结构、程序模块或者其他数据)的任何方法或者技术实施的易失性和非易失性、可拆卸和不可拆卸介质。计算机存储介质包括但不限于RAM、ROM、EEPR0M、闪存或者其他存储器技术、CD-ROM、数字万用盘(DVD)或者其他光盘储存器、磁盒、磁带、磁盘储存器或者其他磁存储设备或者可以用来存储所需信息并且可以由计算机810访问的任何其他介质。通信介质通常在调制的数据信号(例如载波或者其他传送机制)中具体化计算机可读指令、数据结构、程序模块或者其他数据并且包括任何信息递送介质。术语“调制的数据信号”是指如下信号,该信号的特性中的一个或者多个特性以对信号中的信息编码这样的方式来设置或者改变。举例而言而非限制,通信介质包括有线介质(例如有线网络或者直接有线连接)和无线介质(例如声学、RF、红外线和其他无线介质)。也可以在计算机可读介质的范围内包括上述介质中的任何介质的组合。系统存储器830包括形式为易失性和/或非易失性存储器(例如只读存储器(ROM)831和随机存取存储器(RAM) 832)的计算机存储介质。基本输入/输出系统833 (BI/0S)(该系统包含帮助例如在启动期间在计算机810内的元件之间传送信息的基本例程)通常存储于ROM 831中。RAM 832通常包含处理单元820立即可访问和/或当前操作的数据和/或程序模块。举例而言而非限制,图8图示了操作系统834、应用程序835、其他程序模块836和程序数据837。、计算机810也可以包括其他可拆卸/不可拆卸、易失性/非易失性计算机存储介质。仅举例而言,图8图示了 硬盘驱动841,其从不可拆卸、非易失性磁介质读取或者向不可拆卸、非易失性磁介质写入;磁盘驱动851,其从可拆卸、非易失性磁盘852读取或者向可拆卸、非易失性磁盘852写入;以及光盘驱动855,其从可拆卸、非易失性光盘856 (例如⑶ROM或者其他光学介质)读取或者向可拆卸、非易失性光盘856写入。可以在示例操作环境中使用的其他可拆卸/不可拆卸、易失性/非易失性计算机存储介质包括但不限于磁带盒、闪存卡、数字万用盘、数字视频带、固态RAM、固态ROM等。硬盘驱动841通常通过不可拆卸存储器接口(例如接口 840)连接到系统总线821,并且磁盘驱动851和光盘驱动855通过可拆卸存储器接口(例如接口 850)连接到系统总线821。上文描述和图8中图示的驱动及其关联的计算机存储介质提供用于计算机810的计算机可读指令、数据结构、程序模块和其他数据的存储。例如在图8中,将硬盘驱动841图示为存储操作系统844、应用程序845、其他程序模块846和程序数据847。注意这些组件可以与操作系统834、应用程序835、其他程序模块836和程序数据837相同或者不同。这里向操作系统844、应用程序845、其他程序模块846和程序数据847给予不同编号以最低限度说明它们是不同副本。用户可以通过输入设备(例如写字板或者电子数字转换器)864、麦克风863、键盘862和指示设备861 (惯称为鼠标、跟踪球或者触垫)向计算机810中录入命令和信息。图8中未示出的其他输入设备可以包括操纵杆、游戏垫、碟形卫星天线、扫描仪等。这些和其他输入设备经常通过用户输入接口 860 (该用户输入接口耦合到系统总线)连接到处理单元820,但是可以由其他接口和总线结构(例如并行端口、游戏端口或者通用串行总线(USB))连接。监视器891或者其他类型的显示设备也经由接口(例如视频接口 890)连接到系统总线821。监视器891也可以与触屏面板等集成。注意监视器和/或触屏面板可以物理地耦合到计算设备810例如在平板型个人计算机中并入于其中的外壳。此外,计算机(例如计算设备810)也可以包括可以通过输出外围接口 894等连接的其他外围输出设备(例如扬声器895和打印机896)。计算机810可以使用到一个或者多个远程计算机(例如远程计算机880)的逻辑连接在联网环境中操作。远程计算机880可以是个人计算机、服务器、路由器、网络PC、对等设备或者其他一般网络节点,并且通常包括上文相对于计算机810描述的元件中的多个或者所有单元,尽管在图8中仅已经图示存储存储设备881。图8中描绘的逻辑连接包括一个或者多个局域网(LAN) 871和一个或者多个广域网(WAN) 873,但是也可以包括其他网络。这样的联网环境在办公室、企业范围的计算机网络、内部网和因特网中司空见惯。当在LAN联网环境中使用时,计算机810通过网络接口或者适配器870连接到LAN871。当在WAN联网环境中使用时,计算机810通常包括调制解调器872或者用于通过WAN873 (例如因特网)建立通信的其他装置。可以是内部或者外部的调制解调器872可以经由用户输入接口 860或者其他适当机制连接到系统总线821。例如包括接口和天线的无线联网部件可以通过适当设备(例如接入点或者对等计算机)耦合到WAN或者LAN。在联网环境中,相对于计算机810描绘的程序模块或者其部分可以存储于远程存储器存储设备中。举例而言而非限制,图8图示了如驻留于存储器设备881上的远程应用程序885。可以理解,所示网络连接为举例并且可以使用在计算机之间建立通信链路的其他手段。辅助子系统899 (例如用于内容的辅助显示)可以经由用户接口 860来连接以即使计算机系统的主要部分在低功率状态中仍然允许向用户提供数据(例如程序内容、系统状态和事件通知)。辅助子系统899可以连接到调制解调器872和/或网络接口 870以允 许在主处理单元820处于低功率状态时这些系统之间的通信。结论
尽管本发明易于各种修改和替代构造,但是在附图中示出了并且上文已经具体描述了其某些例示实施例。然而,应当理解并无意于将本发明限于公开的具体形式,而是恰好相反,旨在覆盖落入本发明的精神实质和范围内的所有修改、替代构造和等效物。
权利要求
1.一种在计算环境中的系统,包括虚拟盘,其包括至少两个重叠层;以及机构,其处置与服务所述虚拟盘的虚拟盘读取和写入I/O并行的操纵所述虚拟盘的数据的元操作的.1/0,包括通过防止向虚拟盘偏移范围的至少一个元操作写入与向重叠的虚拟盘偏移范围的虚拟盘写入并行。
2.根据权利要求I所述的系统,其中所述元操作包括复制、移动、删除、合并、压缩、碎片整理、加密签名、提升、下放、转换或者紧缩虚拟盘数据。
3.根据权利要求I所述的系统,其中所述机构在元操作写入不能损害虚拟盘写入时或者在至少两个写入来自相同源并因此写入相同数据时允许并行的向虚拟盘偏移范围的元操作写入和虚拟盘写入。
4.根据权利要求I所述的系统,其中所述元操作操纵少于所有所述虚拟盘数据。
5.根据权利要求I所述的系统,其中所述机构协调所述对虚拟盘I/O的服务与元操作 执行以允许所述元操作完成、相对于元操作读取和写入控制虚拟盘读取和写入或者控制所述元操作对其他数据流量的干扰,或者允许所述元操作完成、相对于元操作读取和写入控制虚拟盘读取和写入或者控制所述元操作对其他数据流量的干扰的任何组合。
6.根据权利要求I所述的系统,其中由所述元数据操作使用的一个或者多个通信信道相对于在服务所述虚拟盘读取和写入时使用的一个或者多个通信信道可分离或者可改变或者可分离并且可改变。
7.根据权利要求I所述的系统,其中通过操纵一个或者多个去重复数据结构来至少部分地执行所述元操作。
8.根据权利要求7所述的系统,其中所述元操作复制或者移动或者复制并且移动净荷数据和元数据这二者。
9.一种在计算环境中的在至少一个处理器上执行的方法,包括在具有至少两层的虚拟盘处接收元操作写入;并且确定所述元操作写入是否与在相同虚拟盘偏移范围向重叠层的任何其他写入并行;并且如果不是则允许所述写入进行。
10.根据权利要求9所述的方法,还包括确定是否有允许所述元操作写入的例外,包括确定所述写入不能损害所述虚拟盘写入或者确定所述写入和其他写入来自相同源,并且如果是这样则允许所述写入而如果不是则防止所述写入。
11.根据权利要求9所述的方法,还包括抑制所述元操作的所述写入和其他I/O或者优先化所述元操作的所述写入和其他I/O、或者抑制并且优先化所述元操作的所述写入和其他I/O以控制对虚拟盘读取和写入的干扰、或者控制所述元操作对其他数据流量的干扰、或者控制对虚拟盘读取和写入的干扰并且控制所述元操作对其他数据流量的干扰。
12.根据权利要求9所述的方法,还包括将用来存储虚拟盘数据的一组一个或者多个文件或者设备改变成新的一组,包括保持使用所述一组一个或者多个文件或者设备的I/O、等待使用所述一组一个或者多个文件或者设备的飞行中I/O完成、改变成使用所述新的一组一个或者多个文件或者设备并且停止将相对于所述新的一组被处理的所述I/O的保持。
13.—种或者多种具有计算机可执行指令的计算机可读介质,所述计算机可执行指令在被执行时执行步骤,所述步骤包括 接收与虚拟盘上的元操作对应的I/O ;并且 确定是否可以通过操纵一个或者多个去重复数据结构来处置所述1/0,并且如果是这样则操纵所述一个或者多个去重复数据结构以执行所述元操作的至少部分。
14.根据权利要求13所述的一种或者多种计算机可读介质,其中所述元操作操纵所述一个或者多个去重复数据结构以紧缩所述虚拟盘,碎片整理所述虚拟盘,合并所述虚拟盘的两层或者更多层,将所述虚拟盘转换成不同布局,提升所述虚拟盘或者下放所述虚拟盘。
15.根据权利要求13所述的一种或者多种计算机可读介质,其中操纵所述一个或者多个去重复数据结构包括执行至少一个复制卸载操作、至少一个更新操作、至少一个删除操作或者至少一个移动卸载操作、或者执行至少一个复制卸载操作、至少一个更新操作、至少一个删除操作或者至少一个移动卸载操作的任何组合。
全文摘要
描述了一种技术,通过该技术,虚拟硬盘能够在在虚拟盘上执行元操作(例如复制、移动、删除、合并、压缩、碎片整理、加密签名、提升、下放、转换或者紧缩虚拟盘数据)时继续服务虚拟盘I/O(读取和写入)。可以例如通过抑制和/或优先化虚拟盘I/O来协调对虚拟盘I/O的服务与元操作执行。也描述了通过操纵一个或者多个去重复数据结构来执行元操作。
文档编号G06F12/08GK102741821SQ201180008703
公开日2012年10月17日 申请日期2011年1月16日 优先权日2010年2月8日
发明者D.L.格林, J.K.奥辛斯, M.L.奈尔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1