虚拟盘存储技术的制作方法

文档序号:6484662阅读:190来源:国知局
虚拟盘存储技术的制作方法
【专利摘要】在一个示例性实施例中,可以为虚拟盘文件指派标识符,并且依赖于所述虚拟盘文件的虚拟盘文件可以包括所述标识符的拷贝。如果所述虚拟盘文件被打开并且数据被修改从而导致虚拟盘区段的内容发生改变,则可以改变所述标识符。如果所述虚拟盘文件和依赖性的虚拟盘文件被用来实例化虚拟盘,则可以检测到标识符之间的差异,其表明所述虚拟盘可能被破坏的事实。在构成本发明的一部分的详细描述部分、权利要求书和附图中还描述了其他技术。
【专利说明】虚拟盘存储技术
【背景技术】
[0001]存储虚拟化技术允许把逻辑存储与物理存储分开。对应于存储虚拟化的一种示例性使用情况是在虚拟机内。虚拟化软件层(典型地,被称作管理程序或虚拟机监视器)被安装在计算机系统上,并且控制虚拟机与物理硬件交互的方式。由于访客操作系统典型地被编码成对于物理硬件施行排他性控制,因此虚拟化软件可以被配置成细分物理硬件的资源,并且在虚拟机内模拟物理硬件的存在。对应于存储虚拟化的另一种使用情况是在被配置成实施存储阵列的计算机系统内。在这种情况下,可以利用iSCSI协议等等将物理计算机系统或虚拟机连接到存储阵列。
[0002]可以使用存储应对模块来模拟对应于虚拟或物理机的存储。举例来说,存储应对模块可以通过对一个或更多虚拟盘文件进行读取和写入来应对由虚拟或物理机发出的存储IO工作,所述虚拟盘文件可以被用来描述(即存储)虚拟盘的区段(extent),即例如块之类的连续存储区域。同样地,存储应对程序可以通过把对应于虚拟盘的比特组合格式(bitpattern)数据写入到一个或更多虚拟盘文件来对写请求做出响应,并且通过读取存储在一个或更多虚拟盘文件中的比特组合格式来对读取请求做出响应。

【发明内容】

[0003]在一个示例性实施例中,可以为虚拟盘文件指派标识符,并且依赖于该虚拟盘文件的虚拟盘文件可以包括所述标识符的拷贝。如果所述虚拟盘文件被打开并且数据被修改从而导致虚拟盘区段的内容发生改变,则可以改变所述标识符。如果所述虚拟盘文件和依赖性的虚拟盘文件被用来实例化虚拟盘,则可以检测到标识符之间的差异,其表明所述虚拟盘可能被破坏的事实。
[0004]在同一个或另一个示例性实施例中,可以保存对应于一组虚拟盘区段的规范化比特图(bitmap)。可以把标识符存储在虚拟盘文件中,并且可以把该标识符的拷贝与所述规范化比特图相关联。当对所述虚拟盘文件做出修改时,可以更新所述标识符。如果所述规范化比特图准确地反映出对应于所述一组虚拟盘区段的扇区比特图,则可以更新与所述规范化比特图相关联的所述标识符的拷贝。当在后来的某一时间打开虚拟盘文件时,这两个标识符的匹配表明所述规范化比特图准确地反映出对应于所述一组虚拟盘区段的扇区比特图,并且可以使用该比特图。除了前述内容之外,在权利要求书、详细描述部分和附图中还描述了其他技术。
[0005]本领域技术人员可以认识到,本公开的一个或更多的各个方面可以包括但不限于用于实施这里涉及的方面的电路和/或编程;取决于系统设计者的设计选择,所述电路和/或编程可以实际上是被配置成实施这里涉及的方面的硬件、软件和/或固件的任意组合。
[0006]前面是概要,因此不可避免地包含对于细节的简化、一般化和省略。本领域技术人员将认识到,所述概要仅仅是说明性的,而不意图以任何方式做出限制。
【专利附图】

【附图说明】[0007]图1描绘出计算机系统的高层级方框图。
[0008]图2描绘出对应于虚拟化软件程序的一种示例性架构的高层级方框图。
[0009]图3描绘出对应于虚拟化软件程序的一种可替换架构的高层级方框图。
[0010]图4描绘出被配置成实施虚拟盘的计算机系统的较低层级方框图。
[0011]图5A描绘出被配置成实施虚拟盘的计算机系统的较低层级方框图。
[0012]图5B描绘出被配置成实施虚拟盘的计算机系统的较低层级方框图。
[0013]图6描绘出差异化虚拟盘文件的高层级图示。
[0014]图7描绘出虚拟盘与虚拟盘文件之间的关系。
[0015]图8描绘出规范化比特图与扇区比特图之间的关系。
[0016]图9描绘出虚拟盘文件与复合扇区比特图之间的关系。
[0017]图10描绘出可以具体实现在计算机可读存储介质内并且/或者由计算机系统执行的操作规程。
[0018]图11描绘出可以结合图10所图示的那些操作执行的附加操作。
[0019]图12描绘出可以具体实现在计算机可读存储介质内并且/或者由计算机系统执行的操作规程。
[0020]图13描绘出可以结合图12所图示的那些操作执行的附加操作。
[0021]图14描绘出可以具体实现在计算机可读存储介质内并且/或者由计算机系统执行的操作规程。
[0022]图15描绘出可以结合图14所图示的那些操作执行的附加操作。
【具体实施方式】
[0023]通篇所使用的术语电路可以包括例如硬件中断控制器、硬驱动器、网络适配器、图形处理器、基于硬件的视频/音频编解码器之类的硬件组件,以及用来操作这样的硬件的固件。术语电路还可以包括通过固件和/或软件配置的微处理器、专用集成电路和处理器,比如读取并执行指令的执行单元。可以通过从例如RAM、ROM、固件和/或大容量存储装置之类的存储器加载的指令来配置(多个)处理器等等,并且所述指令可以具体实现可操作来配置处理器以施行一项或更多项功能的逻辑。电路的具体实例可以包括硬件与软件的组合。在该具体实例中,实施者可以编写具体实现逻辑的源代码,其随后被汇编成可以由处理器执行的机器可读代码。
[0024]本领域技术人员可以认识到,现有技术的状态已经发展到在用硬件实施的功能与用软件实施的功能(其随后由硬件执行)之间几乎没有差别的阶段。因此,用硬件或软件实施的功能的描述仅仅是一种设计选择。简而言之,由于软件处理可以被转换成等效的硬件结构并且硬件结构本身可以被转换成等效的软件处理,因此被描述为用指令具体实现的功能可以可替换地用硬件来实施,反之亦然。
[0025]所公开的主题可以使用一个或更多计算机系统。图1和后面的讨论意图提供可以在其中实施所公开的主题的适当计算环境的一般性简要描述。
[0026]现在参照图1,描绘出示例性计算系统100。计算机系统100可以包括处理器102,例如执行核心。虽然图示出一个处理器102,但是在其他实施例中,计算机系统100可以具有多个处理器,例如每个处理器基板有多个执行核心和/或可以各自具有多个执行核心的多个处理器基板。如图所示,各种计算机可读存储介质110可以通过一条或更多条系统总线互连,所述系统总线把各种系统组件耦合到处理器102。所述系统总线可以是几种总线结构当中的任一种,其中包括利用多种总线架构当中的任一种的存储器总线或存储器控制器、外围总线以及局部总线。在示例实施例中,计算机可读存储介质110例如可以包括随机存取存储器(RAM) 104,例如电动机械硬驱动器、固态硬驱动器等存储设备106,例如闪速RAM或ROM之类的固件108,以及例如⑶-ROM、软盘、DVD、闪速驱动器、外部存储设备等可移除存储设备118。本领域技术人员应当认识到,可以使用其他类型的计算机可读存储介质,比如磁盒、闪存卡和/或数字视频盘。
[0027]计算机可读存储介质110可以提供对于处理器可执行指令122、数据结构、程序模块以及用于计算机100的其他数据(比如可执行指令)的非易失性和易失性存储。基本输入/输出系统(BIOS) 120可以被存储在固件108中,基本输入/输出系统(BIOS) 120包含有助于例如在启动过程中在计算机系统100内的元件之间传送信息的基本例程。许多程序可以被存储在固件108、存储设备106、RAM 104和/或可移除存储设备118上,并且由包括操作系统和/或应用程序的处理器102执行。在示例性实施例中,计算机可读存储介质110可以存储虚拟盘解析器404 (在后面的段落中将对其更加详细地进行描述),其可以由处理器102执行从而把计算机系统100转换成被配置用于特定目的的计算机系统,即根据本文献中描述的技术来配置的计算机系统。
[0028]可以由计算机100通过输入设备116接收命令和信息,所述输入设备可以包括但不限于键盘和指示设备。其他输入设备可以包括麦克风、操纵杆、游戏板、扫描仪等等。这些和其他输入设备常常通过耦合到系统总线的串行端口接口连接到处理器102,但是也可以通过其他接口连接,比如并行端口、游戏端口或通用串行总线(USB)。还可以通过接口把显示器或其他类型的显示设备连接到系统总线,所述接口比如是可以作为图形处理器单元112的一部分或者与之连接的视频适配器。除了显示器之外,计算机典型地包括其他外围输出设备,比如扬声器和打印机(未示出)。图1的示例性系统还可以包括主机适配器、小型计算机系统接口(SCSI)总线以及连接到SCSI总线的外部存储设备。
[0029]计算机系统100可以利用去到一台或更多台远程计算机(比如远程计算机)的逻辑连接而操作在网络化环境中。所述远程计算机可以是另一台计算机、服务器、路由器、网络PC、对等设备或者其他常用网络节点,并且典型地可以包括以上相对于计算机系统100描述的元件中的许多或所有元件。
[0030]当被用在LAN或WAN联网环境中时,计算机系统100可以通过网络接口卡114连接到LAN或WAN。NIC 114可以是内部的或外部的,可以连接到系统总线。在网络化环境中,相对于计算机系统100描绘的程序模块或其某些部分可以被存储在远程存储器存储设备中。应当认识到,这里描述的网络连接是示例性的,并且可以使用在计算机之间建立通信链接的其他方式。此外,虽然设想到本公开的许多实施例特别良好地适用于计算机化的系统,但是本文献绝不意图把本公开限制到这样的实施例。
[0031]转到图2和图3,图示出了可以被用来生成用于虚拟桌面会话的虚拟机的示例性虚拟化平台。在该实施例中,管理程序微核202可以被配置成控制并仲裁对于计算机系统200的硬件的访问。管理程序微核202可以生成被称作分区的执行环境,比如子分区I到子分区N (其中N是大于I的整数)。在这里,子分区是由管理程序微核202支持的基本隔离单位。管理程序微核202可以隔离一个分区中的处理以免其访问另一个分区的资源。每一个子分区可以被映射到处于管理程序微核202控制下的硬件资源集合,比如存储器、设备、处理器循环等等。在一些实施例中,管理程序微核202可以是独立的软件产品、操作系统的一部分、被嵌入在主板的固件内、专门的集成电路或者其组合。
[0032]管理程序微核202可以通过限制访客操作系统对物理计算机系统中的存储器的可视来施行分区。当管理程序微核202实例化虚拟机时,其可以把系统物理存储器(SPM)的页面(例如具有起始和结束地址的固定长度的存储器块)分配给所述虚拟机以作为访客物理存储器(GPM)。在这里,访客对于系统存储器的受限制可视由管理程序微核202控制。术语访客物理存储器是从虚拟机的角度描述存储器页面的简略方式,并且术语系统物理存储器是从物理系统的角度描述存储器页面的简略方式。因此,被分配给虚拟机的存储器页面将具有访客物理地址(由虚拟机使用的地址)和系统物理地址(该页面的实际地址)。
[0033]访客操作系统可以虚拟化访客物理存储器。虚拟存储器是一种管理技术,其允许操作系统超量调配存储器并且针对连续工作存储器给出应用唯一访问。在虚拟化环境中,访客操作系统可以使用一个或更多页面表来把已知为虚拟访客地址的虚拟地址转换成访客物理地址。在该例中,存储器地址可以具有访客虚拟地址、访客物理地址和系统物理地址。
[0034]在所描绘的实例中,父分区组件(其也可以被视为类似于Xen的开源管理程序的域O)可以包括主机204。主机204可以是操作系统(或者配置实用程序集合),并且主机204可以被配置成利用虚拟化服务提供者228 (VSP)为在子分区1-N中执行的访客操作系统提供资源。VSP 228在开源社区中典型地被称作后端驱动器,其可以被用来通过虚拟化服务客户端(VSC)(其典型地被称作在开源社区中的前端驱动器或准虚拟化设备)多路复用去到硬件资源的接口。如图所示,虚拟化服务客户端在访客操作系统的情境内执行。但是这些驱动器与访客中的其余驱动器的不同之处在于,其可以与管理程序一起提供而不是与访客一起提供。在一个示例性实施例中,被虚拟化服务提供者228使用来与虚拟化服务客户端216和218通信的路径可以被视为虚拟化路径。
[0035]如图所示,模拟器234 (例如虚拟化IDE设备、虚拟化视频适配器、虚拟化NIC等等)可以被配置成在主机204内运行,并且被附属于可用于访客操作系统220和222的资源。举例来说,当访客OS涉及存储器位置(其被映射到将是某一设备的寄存器所处的位置)或者存储器映射的设备时,管理程序微核202可以拦截所述请求并且把访客尝试写的数值传递到相关联的模拟器。在这里,该例中的资源可以被视为虚拟设备所处的位置。以这种方式使用模拟器可以被认为是模拟路径。模拟路径与虚拟化路径相比的效率低下,这是因为与在VSP与VSC之间传递消息相比,其需要更多CPU资源来模拟设备。举例来说,为了通过模拟路径把数值写入到盘上所需要的针对映射到寄存器的存储器的数以百计的动作可以被简化成在虚拟化路径中从VSC传递到VSP的单一消息。
[0036]每一个子分区可以包括一个或更多虚拟处理器(230和232),访客操作系统(220和222)可以管理及调度将在所述虚拟处理器上执行的线程。通常来说,虚拟处理器是为物理处理器的表示提供特定架构的可执行指令和相关联的状态信息。举例来说,一个虚拟机可以具有含Intel x86处理器的特性的虚拟处理器,而另一个虚拟处理器则可以具有PowerPC处理器的特性。该例中的虚拟处理器可以被映射到计算机系统的处理器,从而使得实施虚拟处理器的指令将被处理器支持。因此,在包括多个处理器的一个实施例中,虚拟处理器可以由处理器同时执行,而其他处理器则例如执行管理程序指令。分区中的虚拟处理器与存储器的组合可以被认为是虚拟机。
[0037]访客操作系统(220和222)可以是任何操作系统,比如来自Microsoft?、Apple?、开源社区等等的操作系统。访客操作系统可以包括用户/内核操作模式,并且可以具有能够包括调度器、存储器管理器等等的内核。通常来说,内核模式可以包括处理器中的执行模式,其授权访问至少有特权的处理器指令。每一个访客操作系统可以具有相关联的文件系统,所述文件系统上可以存储有应用,比如终端服务器、电子商务服务器、电子邮件服务器等等以及访客操作系统本身。访客操作系统可以调度线程以在虚拟处理器上执行,并且这样的应用的实例可以被实施。
[0038]现在参照图3,该图描绘出与图2的那些组件类似的组件;但是在该示例实施例中,管理程序302可以包括微核组件和类似于图2的主机204中的那些组件的组件,比如虚拟化服务提供者228和设备驱动器224,而管理操作系统304则例如可以包含被用来配置管理程序302的配置实用程序。在该架构中,管理程序302可以施行与图2的管理程序微核202和主机204相同或类似的功能。图3的管理程序302可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件内,并且/或者管理程序302的一部分可以由专门的集成电路实施。
[0039]现在转到图4,该图描述了计算机系统400,其图示出了可以被用来实施在本文献中描述的技术的组件的高层级方框图。简而言之,计算机系统400可以包括类似于前面关于图1到3描述的那些组件的组件。图4示出了虚拟化系统420,其可以被视为由图2或图3图示出的虚拟化平台的高层级表示。举例来说,虚拟化系统420可以被视为由管理程序微核202和主机环境204提供的特征的组合的高层级表示。可替换地,虚拟化系统420可以被视为管理程序302和管理OS 304的高层级表示。因此,在本文献中通篇使用术语“虚拟化系统420”表明可以在任何类型的虚拟化软件层内或者在任何类型的虚拟化平台中实施在后面的段落中描述的虚拟盘技术。
[0040]虚拟盘解析器404在特定的示例实施例中可以是可执行指令,其可以被用来代表虚拟机从虚拟盘文件实例化虚拟盘以及应对存储10。如图所示,虚拟盘解析器404可以打开诸如(多个)虚拟盘文件406之类的一个或更多虚拟盘文件并且生成虚拟盘402。
[0041]虚拟盘解析器404可以通过虚拟化系统文件系统408从存储设备106获得(多个)虚拟盘文件406。简而言之,虚拟化系统文件系统408代表组织虚拟化系统420的计算机文件和数据(比如(多个)虚拟盘文件406)的可执行指令。虚拟化系统文件系统408可以把该数据存储在固定尺寸物理区段(即物理存储设备上的连续存储区域)的阵列中。在一个具体实例中,区段可以是簇,即具有设定长度的比特字节序列。示例性的簇尺寸典型地是处于512字节到64千字节之间的2的乘方。在一种具体配置中,簇尺寸可以是4千字节。
[0042]当接收到用于打开虚拟盘文件406的请求时,虚拟化系统文件系统408确定该文件在盘上所处的位置,并且向盘设备驱动器发出IO工作以便从该盘的一个或更多物理区段读取数据。由文件系统408发出的IO工作确定描述虚拟盘文件406的永久性拷贝在存储设备106上的位置的盘偏移量和长度,并且向存储设备106发出IO工作。由于关于存储设备如何操作的语义,写IO工作可以被缓冲在由高速缓存器454代表的易失性存储器的一个或更多级别的高速缓存器中,直到存储设备106的电路确定访问永久性存储单元460 (例如磁盘、闪存单元等等)上的该位置为止,并且可以把表明(多个)虚拟盘文件406的所述永久性拷贝的新内容的所缓冲的比特组合格式写入到永久性存储单元460中。
[0043]虚拟盘解析器404可以获得表示(多个)虚拟盘文件406的比特组合格式,并且把所述(多个)虚拟盘文件406中的有效载荷(例如用户数据)暴露成包括多个虚拟盘区段的盘。在一个实施例中,这些虚拟盘区段可以是尺寸为512千字节上至64兆字节的固定尺寸块并且被划分成多个扇区;但是在另一个实施例中,所述虚拟盘区段可以是可变尺寸的区段。在一种示例性配置中,在引导访客操作系统412之前,设立与所模拟或所提示的存储控制器和虚拟盘的所模拟或所提示的方面有关的资源,以使得在虚拟机410的访客物理地址空间内实施具有存储器映射的寄存器的所模拟的存储控制器。引导代码可以运行并引导访客操作系统412。虚拟化系统420可以检测到对访问访客物理地址空间的该区域的尝试,并且返回使得访客操作系统412确定有存储设备附属于所模拟的存储控制器的结果。作为响应,访客操作系统412可以加载驱动器(准虚拟化驱动器或常规驱动器),并且使用该驱动器向所检测到的存储设备发出存储IO请求。虚拟化系统420可以把所述存储IO请求路由到虚拟盘解析器404。
[0044]在访客操作系统412运行之后,其可以通过文件系统414向虚拟盘402发出IO工作,文件系统414与虚拟化系统文件系统414的相似之处在于,其组织访客操作系统412的计算机文件和数据以及安装在访客操作系统412上的应用。访客操作系统412可以与虚拟盘402交互,其方式类似于操作系统与物理存储设备交互的方式,并且所述IO工作最终被路由到虚拟盘解析器404。虚拟盘解析器404可以包括用于确定如何按照模拟物理存储设备的方式对IO工作做出响应的逻辑。举例来说,虚拟盘解析器404可以从(多个)虚拟盘文件406读取数据并且将数据写入(多个)虚拟盘文件406。写入到(多个)虚拟盘文件406的数据转而被路由经过虚拟化系统文件系统408,并且被提交到存储在永久性存储单元460上或者处于其中的(多个)虚拟盘文件406的永久性拷贝。
[0045]简要参照图5A,该图图示出了用于实施在本文献中描述的技术的一种替换架构。如图5所示,虚拟盘解析器404还可以被实施在操作系统502中,例如由Microsoft?提供的操作系统。在该例中,虚拟盘解析器404可以被配置成运行在存储服务器500上,存储服务器500可以包括类似于图1的计算机系统100的组件。在该例中,存储服务器500可以包括物理存储设备510的阵列,并且可以被配置成使得存储装置可用于服务器,从而使得所述存储装置看起来局部附属于操作系统508。虚拟盘解析器404可以按照关于图4描述的相同方式操作;其差别在于在该配置中,由文件系统414发出的读取/写入IO工作可以通过网络连接被路由到虚拟盘解析器404。
[0046]简要参照图5B,该图图示出了用于实施在本文献中描述的技术的又一种架构。图5B与图5A的类似之处在于,虚拟盘解析器404被实施在操作系统502中,并且计算机系统512可以包括类似于图1的计算机系统100的组件。但是该例中的差别在于,该图图示出了回送附属的虚拟盘402。包括例如应用424之类的应用的文件系统414可以被存储在虚拟盘402中,并且(多个)虚拟盘文件406可以被存储在计算机系统文件系统514中。
[0047]现在将注意力转到虚拟盘402,虽然其可以由单一虚拟盘文件实施,但是在其他配置中,也可以使用一组差异化虚拟盘文件来产生虚拟盘402。图6图示出了可以被虚拟盘解析器404使用来把虚拟盘402实施为差异化盘的示例性虚拟盘文件链条。通常来说,与父图像相比,差异化虚拟盘文件将虚拟盘的当前状态描绘成被修改区段的集合。父图像可以是另一个差异化虚拟盘文件或者基础虚拟盘文件。
[0048]在一种示例性配置中,父虚拟盘文件与子虚拟盘文件之间的关联可以被存储在子内。具体来说,子可以包括父的标识符以及描述父位置的数值。当启动虚拟机时,虚拟盘解析器404可以接收描述链条中的最后一个虚拟盘文件的信息,也就是说虚拟盘文件612是包括虚拟盘文件612、610、606和600的链条中的最后一个虚拟盘文件,并且虚拟盘解析器404打开该文件。该文件可以包括其父(即虚拟盘文件610)的标识符以及去到其父的路径。虚拟盘解析器404可以查找并打开父,并且如此这般,直到查找到并打开基础虚拟盘文件为止。
[0049]虚拟盘解析器404可以使用表明在父虚拟盘文件中是否存在或存储有数据的信息。典型地,链条中的最后一个虚拟盘文件作为读取/修改被打开,而其他虚拟盘文件作为只读被打开。因此,典型地,对链条中的最后一个虚拟盘文件进行写入。在关于所述数据所处位置的信息没有被高速缓存的情况下,类似地,首先将读操作指引至链条中的最后一个虚拟盘文件,并且虚拟盘解析器404将按照从最后一个虚拟盘文件到基础虚拟盘文件的逻辑顺序逻辑地搜索虚拟盘文件,直到找到所述数据为止。在一个具体实例中,对应于虚拟盘文件(例如虚拟盘文件612)的分配表(未示出)可以包括这样的状态信息:其表明所述虚拟盘区段是由该虚拟盘文件的一部分定义,或者该虚拟盘区段是否是透明的(例如由沿着链条更进一步的不同的虚拟盘文件定义)。在一种实现方式中,虚拟盘解析器404可以确定该虚拟盘区段是否透明,以及访问对应于链条中的下一个虚拟盘文件(例如虚拟盘文件610)的分配表,并且如此这般,直到查找到链条中的定义了所述数据的虚拟盘文件为止。
[0050]问题在于,用户可能会有意或者无意地打开作为父的虚拟盘文件并且修改影响用户有效载荷的数据。这样又可能会影响使用该文件作为链条的一部分的任何虚拟盘,并且可能导致所述虚拟盘变为不可用。举例来说,假设用户打开了虚拟盘文件610并且应用了补丁或者对其进行了碎片整理。子虚拟盘文件612在该例中可能依赖于虚拟盘文件610中的现在已被移动或已失去的数据。当对应于子虚拟盘文件612的分配表指引虚拟盘解析器404从虚拟盘文件610进行读取时,虚拟盘解析器404可能返回错误的数据并且导致由虚拟盘文件600、606、610和612的组合描述的访客操作系统变为不可用。
[0051]在一个示例性实施例中,在创建各个虚拟盘文件时可以把唯一标识符插入其中。在创建子虚拟盘文件时,还可以把在创建子时的其父的唯一标识符的拷贝插入到该子中。因此,在创建虚拟盘文件604时,给予其唯一标识符(唯一标识符3),并且将其父的唯一标识符(唯一标识符I)插入到虚拟盘文件604中。
[0052]在一个示例性实施例中,虚拟盘解析器404可以被配置成在针对虚拟盘文件的写入将改变虚拟盘区段和/或虚拟盘的尺寸的情况下改变虚拟盘文件的唯一标识符。可能导致虚拟盘解析器404改变唯一标识符的实例是,例如,改变了用户有效载荷、盘标识符的结束或者分配表内的导致读取操作被指引到不同部分的条目。当虚拟盘解析器404打开虚拟盘文件链条时,其可以被配置成把虚拟盘文件的父的唯一标识符与存储在子中的唯一标识符进行比较。差异反映出对该父做出了影响虚拟盘区段和/或虚拟盘尺寸的修改。
[0053]现在转到图7,该图图示出了虚拟盘文件402与构成虚拟盘402的一个或更多虚拟盘文件之间的关系。在该例中图示出了两个虚拟盘文件(700和702);但是所图示出的该例并非限制性的,并且可以使用更多的虚拟盘文件来实施虚拟盘402。如图7所示,每一个虚拟盘文件可以包括元数据704和706。元数据706对应于虚拟盘文件702,其可以包括被存储为唯一标识符708的唯一标识符。元数据704对应于虚拟盘文件700,其可以包括被存储为父唯一 ID 710的对应于虚拟盘文件702的唯一标识符的拷贝,以及被存储为唯一 ID 712的其自身的唯一标识符。在一个示例性实施例中,如果父虚拟盘文件702被打开并写入从而导致虚拟盘区段的有效载荷和/或虚拟盘的尺寸发生改变,则虚拟盘解析器404可以把被存储为唯一标识符708的标识符改变到新的唯一标识符。如果虚拟盘解析器404随后把被存储为父唯一标识符710的标识符与被存储为唯一标识符708的标识符进行比较,则二者将不匹配,并且可以确定虚拟盘402可能受到破坏。
[0054]此外,元数据706和704还可以包括被存储为盘标识符(714和716)的标识符,其可以是在页面#83请求等等中作为虚拟盘402的标识符被返回到访客操作系统412的数值。在创建子虚拟盘文件时,被存储为父的盘标识符的所述数值的拷贝可以被拷贝到所述子中,或者可以指派新的盘标识符。所述盘标识符可以被访客操作系统412使用来识别虚拟盘,并且被讨论以将其与所述唯一标识符进行区分。除了盘标识符之外,还可以把柱面、磁头和扇区传统信息(CHS信息718和720)存储在元数据706和704中。所述CHS信息可以被用来把通过柱面、磁头和扇区数值来表示IO的IO工作转换成被表示为偏移量的IO工作。
[0055]继续图7的一般性总览,该图示出了虚拟盘402可以包括N个存储区段(其中N是大于I的整数),并且在该具体实例中,虚拟盘402包括10个区段。虚拟盘402被图示为包括对应于访客操作系统412的不同文件和数据的比特组合格式,通过虚拟盘区段内的不同图案区分这些比特组合格式。
[0056]由于虚拟盘402不是物理存储设备,因此对应于虚拟盘区段的底层有效载荷数据可以通过虚拟盘文件702和700内的不同部分来“描述”,即被存储在虚拟盘文件702和700内的不同部分中。分配表416在计算机系统400处于操作中时可以被存储在随机存取存储器中,其可以被保存在虚拟盘文件702的任何部分中并且可以跨越多个部分。简而言之,每一个虚拟盘文件可以与分配表(未示出)相关联,所述分配表可以包括把虚拟盘区段关联到虚拟盘文件702或700的部分的信息。
[0057]每一个虚拟盘区段可以与扇区比特图相关联。在一种示例性配置中,对应于虚拟盘区段的扇区比特图可以被存储在虚拟盘文件的被用来描述该虚拟盘区段的部分的开头处。在一种可替换配置中,正如在描述图9的段落中更加详细地描述的那样,对应于多个虚拟盘区段的各个扇区比特图可以被聚合并且存储在复合扇区比特图中。针对相应的虚拟盘区段中的每一个扇区,扇区比特图可以包括一个字节。因此,如果一个区段是2兆字节并且每一个扇区是4千字节,则每一个虚拟盘区段包括512个扇区,并且每一个扇区比特图将包括512个字节。I表明该扇区由子虚拟盘文件600描述,O表示该扇区由例如父的另一个虚拟盘文件描述。
[0058]由于从盘访问扇区比特图可能会对性能造成负面影响,因此在一个实施例中,虚拟盘解析器404可以被配置成生成规范化比特图。规范化比特图可以对于各个被完全描述的虚拟盘区段包括一个字节。如果虚拟盘区段的每一个扇区都存在,则该比特可以被设定到1,如果虚拟盘区段内的任何扇区是透明的,则该比特可以被设定到O。因此,虚拟盘解析器404可以首先检查规范化比特图以便确定是否需要检查扇区比特图。如果规范化比特图内的条目是I,则不需要查询扇区比特图。
[0059]例如,转到图8,该图示出了如何对于每一个虚拟盘区段生成扇区比特图以及如何将其用来生成规范化比特图的一个具体实例。图8示出了 4个扇区比特图表802、804、806和808,并且每一个扇区比特图可以对于虚拟盘区段中的每一个扇区包括一个比特。图8所图示的扇区比特图包括8个比特(并且每一个虚拟盘区段包括8个扇区)以说明本文献所描述的技术,并且其不是按比例绘制的。规范化比特图810和812示出了可以用I来标记被完全描述的每一个虚拟盘区段。举例来说,规范化比特图810包括对应于虚拟盘区段I和虚拟盘区段2的比特,其表明这些虚拟盘区段被子虚拟盘文件600完全描述。
[0060]问题在于,并非所有虚拟盘解析器都可以被配置成使用规范化比特图,并且这些规范化比特图可能未被保存。为了克服这一限制,在一个示例性实施例中,虚拟盘解析器404可以被配置成把规范化比特图存储在虚拟盘文件中;但是由于并非所有虚拟盘解析器都理解或使用规范化比特图并且虚拟盘解析器可能覆写、删除或者以其他方式使得表示存储在虚拟盘文件406中的规范化比特图的比特组合格式失效,因此虚拟盘解析器404可以被配置成在使用规范化比特图之前对其进行认证。
[0061]在一个示例性实施例中,这些规范化比特图可以由虚拟盘解析器404保存,并且虚拟盘解析器404可以被配置成在引导虚拟盘时对其进行认证。在一个实施例中,可以为每一个规范化比特图指派规范化比特图标识符(NB ID),其例如是随机数值、序号、时间标记等等,可以被存储在元数据704中。如图所示,元数据704包括被存储为NB ID 820的标识符以及被存储为NB ID 822的标识符。此外,如果规范化比特图的状态准确地描述了与之相关联的扇区比特图,则还可以与每一个规范化比特图相关联地存储所述标识符的拷贝。举例来说,规范化比特图810被示为包括被存储为NB ID 814的标识符,并且规范化比特图812被示为包括NB ID 816。虽然该图图示出NB ID被存储在其对应的规范化比特图内,但是并不一定要这样存储。相反其可以被存储在虚拟盘文件700内的任何位置处,比如存储在BAT中。
[0062]当虚拟盘解析器404打开虚拟盘文件时,其可以使用NB ID来确定相关联的规范化比特图是否有效以及是否可以被使用。这样,被配置成使用规范化比特图的虚拟盘解析器就可以确定规范化比特图是否有效以及虚拟盘文件是否仍然可以被不使用规范化比特图的虚拟盘解析器使用。举例来说,这两个标识符匹配的事实表明规范化比特图是有效的并且可以被使用,而不用必须重新生成规范化比特图。
[0063]当虚拟盘解析器404在写入/修改模式下打开虚拟盘文件之后(或者当检测到第一次写入时),虚拟盘解析器404可以被配置成把存储在元数据中的标识符改变到新的标识符(例如其可以递增序号),并且向存储设备106发出表明所述更新的IO工作,从而可以保存针对标识符的所述改变。如果规范化比特图准确地反映出其描述的扇区比特图的状态,则还可以更新与规范化比特图相关联地存储的标识符以匹配元数据。如果所述标识符不匹配,则虚拟盘解析器404可以重建规范化比特图。
[0064]现在转到图9,该图示出了在一个实施例中,对应于虚拟盘文件的多个虚拟盘区段的扇区比特图可以被聚合并且存储在复合扇区比特图中。举例来说,复合扇区比特图900包括对应于虚拟盘文件702的虚拟盘区段0-3的扇区比特图,并且复合扇区比特图902包括对应于虚拟盘文件700的虚拟盘区段0-3的扇区比特图。此外,可以利用前面描述的相同技术对于复合扇区比特图生成规范化比特图。其区别在于用来构造规范化比特图的数据被聚合。
[0065]在一个示例性实施例中,复合扇区比特图900和902可以被用来从被用来存储对应于虚拟盘区段的有效载荷的部分的开头去除扇区比特图。这样做的效果是使得所述有效载荷与底层存储设备的扇区尺寸对准。此外,被用来构成复合扇区比特图900和/或902的扇区比特图的数目可以被选择成至少等于由底层存储设备使用的扇区尺寸的倍数。
[0066]图9所示出的布置是示例性的而非按比例绘制的。相反,图9被用来说明聚合对应于虚拟盘区段的扇区比特图并且将其存储在复合扇区比特图的想法。在一个具体实例中,假设虚拟盘区段的尺寸为2mb,并且每一个扇区是4kb。这意味着每一个虚拟盘区段包括512个扇区,并且对应于该虚拟盘区段的扇区比特图可以是512字节。如果复合扇区比特图被配置成跨越I兆字节,则该复合扇区比特图可以被用来描述2048个虚拟盘文件区段。该复合扇区比特图的尺寸可以被选择成与底层存储设备和虚拟盘区段对准。
[0067]下面是描绘操作规程的一系列流程图。为了易于理解,所述流程图被组织成使得最初的流程图通过总体“全景”角度给出实现方式,后续的流程图则提供用虚线示出的进一步的附加内容和/或细节。此外,本领域技术人员可以认识到,通过虚线描绘的操作规程被认为是可选的。
[0068]现在转到图10,该图图示出了可以由比如图4的计算机系统400之类的计算机系统执行的操作规程。操作1000开始所述操作规程,操作1002表明计算机系统400可以包括被配置成打开虚拟盘文件的电路,所述虚拟盘文件包括第一唯一标识符和构成虚拟盘中的数据的至少一部分的虚拟盘区段数据。例如,转到图4,计算机系统400可以包括虚拟盘解析器404,其可以是可执行指令。在一个示例性实施例中,虚拟盘解析器404可以由处理器(比如图1的处理器102)执行,并且向虚拟化系统文件系统408发出针对打开虚拟盘文件的请求。在一个具体实例中,所述请求可以是打开作为另一个虚拟盘文件的父的虚拟盘文件,例如图6的虚拟盘文件600、604、606或610。在这里,用户可能已决定打开虚拟盘文件以便修改存储在其中的一些信息。举例来说,假设用户打开了作为虚拟机的虚拟盘的虚拟盘文件以便应用补丁,并且他或她可能不知道有另一个虚拟盘文件依赖于该虚拟盘文件的内容。在另一个具体实例中,用户可能把虚拟盘文件作为文本文件打开以查阅该文件的内容。转到图7,在一个具体实例中,假设所述虚拟盘文件是父虚拟盘文件702。在该例中,当虚拟盘解析器404打开父虚拟盘文件702时,可以检测到对应于虚拟盘区段的有效载荷数据和元数据704 (其包括被存储为唯一标识符708的第一标识符)。
[0069]回来参照图10,操作1004描述了可以由计算机系统400执行的操作。具体来说,在一个示例性实施例中,计算机系统400可以包括这样的电路,其响应于检测到向虚拟盘文件写入会影响对于虚拟盘区段数据的解释方式的信息的尝试而用第二唯一标识符覆写虚拟盘文件中的第一唯一标识符。在打开虚拟盘文件之后,虚拟盘解析器404可以由处理器102执行,并且检测已经对数据做出了将会影响其所存储的有效载荷的改变。虚拟盘解析器404可以包括能够检测到其何时被指引做出影响有效载荷的第一修改的逻辑,并且在做出所述改变之前,虚拟盘解析器404可以向存储设备106发出一项或更多项IO工作,所述IO工作把被存储为唯一 ID 708的第一唯一标识符改变到第二唯一标识符。
[0070]举例来说,假设从所述虚拟盘文件实例化虚拟盘,并且用户尝试对该虚拟盘进行碎片整理。虚拟盘解析器404可以接收把存储在第一虚拟盘区段中的数据移动到第二虚拟盘区段的一项或更多项IO工作。响应于接收到该IO工作,虚拟盘解析器404可以确定改变分配表中的关系,从而使得所述虚拟盘文件的被用来描述第一虚拟盘区段的部分被改变为描述第二虚拟盘区段。虚拟盘解析器404可以确定其所存储的虚拟盘区段数据自从被打开以来是否发生了改变,这例如是通过检查存储器中的比特并且确定该比特未被设定而实现的,这可以表明所述虚拟盘区段数据尚未发生改变。响应于这一确定,虚拟盘解析器404可以使用随机数值或随机字母数字值来生成第二数值并且向存储设备106发出一项或更多项IO工作,所述IO工作把被存储为唯一 ID 708的第一唯一标识符改变到第二唯一标识符。
[0071]回到图10,操作1006示出了计算机系统400可以可选地包括用于确定第二唯一标识符被写入到虚拟盘文件的永久性拷贝的电路。回来参照图4的情境,计算机系统400可以包括能够确定第二唯一标识符被保存到盘上的电路,例如运行在处理器102上的虚拟盘解析器404。例如,并且继续前一段中的实例,虚拟盘解析器404可以在向存储设备106发出一项或更多项IO工作之后向存储设备106发出刷新。存储设备106可以把高速缓存器454刷新为永久性存储单元460,并且被存储为虚拟盘文件702的盘上拷贝中的唯一标识符608的标识符可以被更新为第二唯一标识符。这一操作的结果是,虚拟盘解析器404可以确定从虚拟盘文件702和另一个虚拟盘文件建立的虚拟盘可能受到破坏。
[0072]回到图10,操作1008示出了计算机系统400可以附加地包括这样的电路,其响应于确定第二唯一标识符被写入到虚拟盘文件的永久性拷贝而修改虚拟盘文件的信息。简要地回到图4,虚拟盘解析器404可以确定被存储为虚拟盘文件702的盘上拷贝中的唯一标识符708的标识符已被更新为第二唯一标识符,并且修改存储在虚拟盘文件702中的信息。举例来说,虚拟盘解析器404可以通过接收到来自存储设备106的确认而确定刷新操作完成。可替换地,虚拟盘解析器404可以根据没有接收到失败消息而确定刷新操作完成。在刷新结束之后,虚拟盘解析器404可以对虚拟盘文件702做出修改,并且导致向存储设备106发送表明所述修改的一项或更多项IO工作。
[0073]现在转到图11,该图图示出了可以结合图10所描绘的那些操作而执行的可替换操作。图11示出了操作1110,其表明在一个实施例中,被配置成覆写第一唯一标识符的电路可以附加地被配置成覆写第一唯一标识符,可以附加地被配置成响应于检测到对虚拟盘区段的比特组合格式进行写入的尝试而覆写第一唯一标识符。例如,并且简要地转到图7,假设用户从父虚拟盘文件702实例化虚拟盘402并且改变数据,从而使得虚拟盘区段的比特组合格式发生改变。举例来说,假设用户将文件的内容置零。虚拟盘解析器404可以接收表明针对向虚拟盘区段写入全零的请求的IO工作,并且确定这是自从虚拟盘文件702被打开之后对其进行的第一次修改。响应于这一确定,虚拟盘解析器404可以向存储设备106发出一项或更多项IO工作,以便用第二唯一标识符来覆写被存储为唯一标识符708的第一标识符。
[0074]回到图11,操作1112示出了在一个示例性实施例中,计算机系统400可以可选地包括这样的电路,其被配置成响应于确定从虚拟盘文件获得的第二唯一标识符不等于存储在子虚拟盘文件中的唯一标识符而拒绝针对实例化虚拟盘的请求。例如,并且回到图7,假设后来的某一时间用户尝试从虚拟盘文件700和虚拟盘文件702 二者实例化虚拟盘402。在该例中,虚拟盘解析器404可以打开子虚拟盘文件700并且确定去到父虚拟盘文件702的路径以及被存储为父唯一标识符710的标识符,其在该例中是第一唯一标识符。虚拟盘解析器404随后可以查找到父虚拟盘文件702 ;将其打开;并且查找到被存储为唯一标识符708的标识符,其在该例中是第二唯一标识符。虚拟盘解析器404可以确定第一标识符不等于第二标识符(这表明父虚拟盘文件702被修改这一事实),因而虚拟盘解析器404拒绝针对实例化虚拟盘402的请求。在一个具体实例中,虚拟盘解析器404可以导致显示一个包括文字的对话框,所述文字表明虚拟盘402已受到破坏,这是因为对于基础虚拟盘文件的修改已使其失效。
[0075]回到图11,操作1114示出了在一个示例性实施例中,计算机系统400可以包括被配置成响应于用户输入而把第二唯一标识符改变为第一唯一标识符的电路。例如再次回到图7,假设用户尝试实例化虚拟盘402。取代如先前段落中描述的那样拒绝请求,虚拟盘解析器404可以使得对话框包括一个选项,如果该选项被选择,则指引虚拟盘解析器404尝试实例化虚拟盘402而不管虚拟盘402是否被破坏。如果虚拟盘402被成功打开,则虚拟盘解析器404可以拷贝被存储为父唯一标识符710的标识符(即第一唯一标识符),并且覆写被存储为唯一标识符708的标识符(即第二唯一标识符),并且表明修复操作成功。
[0076]回到图11,操作1116示出了在一个示例性实施例中,计算机系统400可以包括:被配置成把数字与标识出一组当中的被子虚拟盘文件完全描述的虚拟盘区段的信息相关联的电路;被配置成响应于确定虚拟盘文件中的数据被修改而把子虚拟盘文件中的所述数字的拷贝更新为第二数字的电路;以及被配置成响应于确定所述信息准确地反映出所述一组当中的虚拟盘区段的状态而把与所述信息相关联的数字更新为第二数字的电路。举例来说,假设虚拟盘402被实例化,并且虚拟盘解析器404把规范化比特图加载到随机存取存储器中。可以把规范化比特图与规范化比特图标识符(例如随机数、序号等等)相关联。在一个具体实例中,假设所述规范化比特图类似于图8的规范化比特图810。如图所示,可以把规范化比特图与被存储为规范化比特图标识符814的标识符相关联。
[0077]在一个示例性实施例中,虚拟盘解析器404可以被配置成确定虚拟盘文件700是否已被修改,并且响应于接收到针对改变虚拟盘文件700内的数据(例如元数据和/或有效载荷数据)的请求,虚拟盘解析器404可以检查存储器中的标识符以便检查这是否是自从虚拟盘文件700被打开之后的第一次修改。在这种配置中,当所述修改是自从虚拟盘文件700被打开之后的第一次修改时,虚拟盘解析器404可以通过使得向存储设备106发出表明所述改变的一项或更多项IO工作来把被存储为NB标识符820的标识符改变为第二 NB标识符。在一种可替换配置中,虚拟盘解析器404可以通过一旦在读取/修改模式下打开了虚拟盘文件700就使得向存储设备106发出表明所述改变的一项或更多项IO工作来把被存储为NB标识符720的标识符改变为第二 NB标识符。在这一时间点,虚拟盘文件700的盘上版本包括对应于规范化比特图数字720和规范化比特图数字814的不同标识符,如果虚拟盘解析器404崩溃,则下一次由虚拟盘解析器404打开虚拟盘文件700时所述数字将不匹配。这表明规范化比特图810可能没有准确地反映出其所涵盖的扇区比特图的内容。
[0078]如果虚拟盘解析器404被编程来保持规范化比特图,例如当对应于虚拟盘区段0-4的扇区比特图转变到完全被描述状态时更新规范化比特图810,则虚拟盘解析器404还可以被配置成把规范化比特图标识符814改变成等于所保存的规范化比特图标识符820,并且向存储设备106发出IO工作以保存所述改变。正如前面更加详细地描述的那样,如果使用了事务日志或者某种其他日志记录机制来确保把对于规范化比特图810的存储器中版本做出的改变成功提交到永久性存储单元460,则可以在虚拟盘解析器404关闭子虚拟盘文件700时或者一旦对所保存的规范化比特图数字820做出改变时对被存储为规范化比特图标识符814的标识符做出改变。
[0079]回来参照图11,操作1118图示出了在一个示例性实施例中,计算机系统400可以包括但不限于,被配置成访问对应于被写入到虚拟盘文件的一部分的一组虚拟盘区段的扇区比特图的电路,其中所述虚拟盘文件的第二个具有虚拟盘文件偏移量,该虚拟盘文件偏移量被选择成使得所述一部分与被配置成存储所述虚拟盘文件的存储设备的扇区对准。在一个示例性实施例中,可以由虚拟盘解析器404接收IO工作,其使得虚拟盘解析器404访问虚拟盘文件702的存储复合扇区比特图900的一部分。在该例中,复合扇区比特图900被写入到虚拟盘文件702,从而使其与存储设备106的底层扇区尺寸对准。这一对准改进了虚拟盘402的总体性能,这是因为复合扇区比特图900和虚拟盘区段有效载荷与存储设备106对准,从而降低了在从基于盘的存储设备进行读取时越过轨道边界的几率。
[0080]现在转到图12,该图图示出了包括操作1200、1202、1204、1206和1208的操作规程。转到操作1200,其示出了所述操作规程的开始,并且操作1202描述了可以由计算机系统400的电路执行的操作;即实例化虚拟盘,所述虚拟盘包括由第一虚拟盘文件描述的一组虚拟盘区段,所述第一虚拟盘文件包括第一标识符。例如并且参照图4,假设用户或管理程序决定启动虚拟机410。响应于接收到这样的信号,虚拟化系统420可以开始用于实例化虚拟机410的操作处理。所述处理的一部分可以是用信号通知虚拟盘解析器404打开合起来存储构成访客操作系统412的比特组合格式的虚拟盘文件。虚拟盘解析器404可以决定打开例如子虚拟盘文件700和父虚拟盘文件702,并且将其用来实例化图7的虚拟盘402。如图8所示,虚拟盘文件700可以包括元数据804,其可以包括被存储为规范化比特图标识符820的标识符。
[0081]回到图12,操作1204表明计算机系统400可以被配置成包括用于把标识出所述一组当中的被第一虚拟盘文件完全描述的虚拟盘区段的信息加载到随机存取存储器中的电路,所述信息与第一标识符的拷贝相关联。在该示例性实施例中,虚拟盘解析器404可以把规范化比特图加载到随机存取存储器104中。可替换地,可以把所述信息组织到表中或者组织到不同于规范化比特图的数据结构中。在利用规范化比特图的一个具体实例中,所述规范化比特图可以类似于图8的规范化比特图810,其可以被用来描述虚拟盘402的一组虚拟盘区段是否被子虚拟盘文件700完全描述。在运行时间期间,如果规范化比特图表明虚拟盘区段完全存在,即所有扇区都被虚拟盘文件700描述,则虚拟盘解析器404可以在不查询扇区比特图的情况下读取有效载荷。在该例中,被加载到随机存取104中的规范化比特图810还可以包括存储为NB ID 820被存储为NB ID 814的相同标识符。虚拟盘解析器404可以把所述标识符进行比较并且确定规范化比特图810是有效的,而且使用规范化比特图810而不是通过读取其所描述的每一个扇区比特图来重新创建规范化比特图810。
[0082]参照操作1206,其描述了这样的实施例,其中计算机系统400可以包括被配置成在打开第一虚拟盘文件之后把第一虚拟盘文件中的第一标识符改变为第二标识符的电路。例如并且简要地转到图8,在把规范化比特图810加载到存储器中之后,虚拟盘解析器404可以把被存储为规范化比特图标识符820的标识符改变为第二标识符,例如改变为第二随机生成的字母数字值等等。在一种示例性配置中,虚拟盘解析器404可以被配置成在虚拟盘文件700被修改时改变被存储为规范化比特图标识符820的标识符。
[0083]回到图12,操作1208示出了计算机系统400可以包括用于响应于确定所述信息准确地反映出所述一组当中的虚拟盘区段的状态而把与所述信息相关联的第一标识符的拷贝更新为第二标识符的电路。再次参照图8的情境,虚拟盘解析器404可以被配置成改变被存储为规范化比特图数字814的标识符,以及使得向存储设备106发送表明所述改变的一项或更多项IO工作并由永久性存储单元460保存。如果确定规范化比特图810准确地反映出其所涵盖的扇区比特图的状态,则虚拟盘解析器404可以被配置成改变被存储为NBID 814的标识符,从而使其与被存储为NB ID 820的标识符匹配。
[0084]现在参照图13,其示出了可以结合由图12描绘的那些操作执行的附加操作。将注意力转到操作1310,其描述了这样一个实施例,其中计算机系统400可以附加地包括用于响应于确定第一虚拟盘文件中的唯一标识符与位于父虚拟盘文件中的唯一标识符相匹配而实例化虚拟盘的电路。例如参照图7的情境,在更新对应于规范化比特图的标识符之前,虚拟盘解析器404可以通过确定被存储为父唯一 ID 710的标识符与被存储为唯一 ID 708的标识符相匹配,来确定虚拟盘文件700与702之间的关联是有效的。响应于这一确定,虚拟盘解析器404可以实施虚拟盘402。此外,所述标识符相匹配的事实表明自从子虚拟盘文件700被创建之后,父虚拟盘文件702未受到会影响其有效载荷数据的修改。
[0085]回到图13,操作1312示出了在一个实施例中,计算机系统400可以附加地包括但不限于用于响应于确定第一虚拟盘文件中的唯一标识符与位于父虚拟盘文件中的唯一标识符不匹配而拒绝针对实例化虚拟盘的请求的电路。例如并且回到图7,假设后来的某一时间用户尝试从虚拟盘文件700和虚拟盘文件702 二者实例化虚拟盘402。在该例中,虚拟盘解析器404可以打开子虚拟盘文件700并且确定去到父虚拟盘文件702的路径以及被存储为父唯一标识符710的标识符,其在该例中是第一唯一标识符。虚拟盘解析器404随后可以查找到父虚拟盘文件702 ;将其打开;并且查找到被存储为唯一标识符708的标识符,其在该例中是第二唯一标识符。虚拟盘解析器404可以确定第一标识符不等于第二标识符(这表明的事实是,父虚拟盘文件702被修改),并且虚拟盘解析器404拒绝针对实例化虚拟盘402的请求。在一个具体实例中,虚拟盘解析器404可以使得显示包括文字的对话框,所述文字表明虚拟盘402已受到破坏,这是因为对于基础虚拟盘文件的修改已使其失效。
[0086]回到图13,操作1314表明计算机系统400可以附加地包括被配置成响应于确定所述一组当中的虚拟盘区段被修改而把第一虚拟盘文件中的第一标识符改变为第二标识符的电路。在一个示例性实施例中,在实例化虚拟盘402时,当虚拟盘解析器404检测到针对修改虚拟盘文件700的内容的尝试时,虚拟盘解析器404可以发出表明这样的请求的IO工作,其用于把被存储为NB ID 820的第一标识符改变为第二标识符。
[0087]继续对于图13的描述,操作1316表明在一个示例性实施例中,计算机系统400可以包括用于在关闭虚拟盘文件的规程期间把与所述信息相关联的第一标识符的拷贝改变为第二标识符的电路。再次转到图8,虚拟盘解析器404可以被配置成在关闭虚拟盘402时改变被存储为规范化比特图数字814的数字。在关闭虚拟盘文件700之前,虚拟盘解析器404可以向虚拟盘文件700写入修改,所述修改把第一标识符改变为第二标识符。这又使得向存储设备106发出一项或更多项IO工作,以便把被存储为NB ID 810的盘上第一标识符改变为第二标识符。
[0088]简要地回到图13,操作1318图示出了在一个示例性实施例中,计算机系统400可以包括:被配置成响应于确定虚拟盘文件被修改而把与所述信息相关联的第一标识符的拷贝改变为第二标识符的电路;以及被配置成把对于所述信息的修改记入日志的电路。例如再次参照图8,虚拟盘解析器404可以被配置成在虚拟盘402的运行时间期间把被存储为规范化比特图标识符814的标识符从第一标识符改变为第二标识符,以便匹配被存储为规范化比特图标识符820的标识符。在该例中,可以使用事务日志等等来确保虚拟盘解析器404把规范化比特图810保持在一定状态下,其中该状态反映出对应于虚拟盘区段0-4的扇区比特图的状态。
[0089]回到图13,操作1320示出了计算机系统400可以可选地包括被配置成访问对应于被写入到虚拟盘文件的一部分的所述一组虚拟盘区段的扇区比特图的电路,其中虚拟盘文件的所述部分具有虚拟盘文件偏移量,该虚拟盘文件偏移量被选择成使得该部分与被配置成存储虚拟盘文件的存储设备的扇区对准。在一个示例性实施例中,可以由虚拟盘解析器404接收IO工作,其使得虚拟盘解析器404访问虚拟盘文件602的存储复合扇区比特图900的一部分。在该例中,复合扇区比特图900被写入到虚拟盘文件702,从而使其与存储设备106的底层扇区尺寸对准。这一对准改进了虚拟盘402的总体性能,这是因为复合扇区比特图900和虚拟盘区段有效载荷与存储设备106对准,从而降低了在从基于盘的存储设备进行读取时越过轨道边界的几率。
[0090]现在回到图13,操作1322示出了计算机系统400可以可选地包括:被配置成检测针对修改父虚拟盘文件中的信息的尝试的电路,其中所述尝试影响解释基于父虚拟盘文件的虚拟盘的虚拟盘区段数据的方式,所述父虚拟盘文件包括第一随机数值;被配置成用第二随机数值覆写父虚拟盘文件中的第一随机数值的电路;被配置成刷新虚拟盘文件的电路;以及被配置成响应于接收到表明所述刷新完成的信号而修改父虚拟盘文件中的所述信息的电路。例如并转到图7,假设虚拟盘解析器404确定如果对虚拟盘文件702应用一项IO工作,则该IO工作将影响虚拟盘402被暴露的方式。举例来说,虚拟盘解析器404可以被配置成检测使得虚拟盘解析器404改变父虚拟盘文件702的有效载荷数据的写入操作,改变描述虚拟盘402的末尾的信息的写入操作,改变分配表条目从而又改变父虚拟盘文件702的哪部分被用来描述虚拟盘区段的写入操作等等。响应于检测到这样的写入操作,虚拟盘解析器404可以被配置成:把被存储为唯一标识符708的第一随机数改变为第二随机数;发出刷新(其使得第二随机数被存储设备106保存);以及随后对虚拟盘文件702应用所述写入操作。
[0091]回到图13,操作1324示出了计算机系统400可以可选地包括被配置成响应于确定所述信息与第一数字的拷贝相关联并且第一虚拟盘文件包括第二数字而导出更新后的信息的电路。例如并且参照图8,假设虚拟盘解析器404例如从子虚拟盘文件700和父虚拟盘文件702实例化虚拟盘402。在该例中,虚拟盘解析器404可以把规范化比特图810以及元数据704加载到主存储器中。虚拟盘解析器404可以把被存储为规范化比特图标识符814的标识符与被存储为规范化比特图标识符820的标识符进行比较,并且确定所述两个标识符不匹配,也就是说规范化比特图810可能未反映出对应于虚拟盘区段0-4的扇区比特图的状态。响应于这一确定,虚拟盘解析器404可以被配置成通过读取对应于虚拟盘区段O到4的扇区比特图来导出对应于规范化比特图810的新信息。对于由其相应的扇区比特图完全定义(也就是说相应的比特图包括全I)的每一个虚拟盘区段,虚拟盘解析器404可以在规范化比特图810中存储I。对于未由其相应的扇区比特图完全定义的每一个虚拟盘区段,虚拟盘解析器404可以在规范化比特图810中存储O。在更新了规范化比特图810以便反映出其相关联的虚拟盘区段的状态之后,虚拟盘解析器404可以在虚拟盘402的运行时间期间使用规范化比特图810。
[0092]现在转到图14,该图示出了可以由计算机系统400执行的包括操作1400、1402、1404、1406、1408和1410的操作规程。操作1400开始所述操作规程,并且操作1402图示出了在一个实施例中,计算机系统400可以被配置成包括用于打开父虚拟盘文件的电路,所述父虚拟盘文件关联到子虚拟盘文件,所述父虚拟盘文件包括第一标识符,并且所述子虚拟盘文件包括第一标识符的拷贝。例如并且转到图4,计算机系统400可以包括虚拟盘解析器404,其可以是可执行指令模块。在一个示例性实施例中,虚拟盘解析器404可以由例如图1的处理器102之类的处理器执行,并且向虚拟化系统文件系统408发出针对打开虚拟盘文件的请求。在一个具体事例中,所述请求可以是针对打开作为另一个虚拟盘文件的父的虚拟盘文件,例如图6的虚拟盘文件600、604、606或610。在这里,用户可能已决定打开虚拟盘文件以便修改存储在其中的某些信息。举例来说,假设用户打开了作为虚拟机的虚拟盘的虚拟盘文件以便应用补丁,并且他或她可能不知道另一个虚拟盘文件依赖于该虚拟盘的内容。
[0093]回到图14,操作1404示出了计算机系统400可以附加地包括这样的电路,其用于响应于检测到针对修改描述虚拟盘区段的数据的尝试而用第二标识符覆写虚拟盘文件中的第一标识符。在打开虚拟盘文件之后,虚拟盘解析器404可以由处理器102执行,并且检测已经对数据做出了将影响其所存储的有效载荷的改变。
[0094]回到图14,操作1406描述了这样一个事例,其中计算机系统400附加地包括用于向被配置成存储父虚拟盘文件的永久性拷贝的存储设备发出表明用第二标识符覆写第一标识符的输入/输出工作的电路。虚拟盘解析器404可以包括能够检测到其何时被指引做出会影响虚拟盘区段的有效载荷的修改的逻辑,并且在做出所述改变之前,向存储设备106发出一项或更多项IO工作,其把被存储为唯一 ID 708的第一唯一标识符的盘上拷贝改变为第二唯一标识符。
[0095]参照图14的操作1408,该图图示出了在一个实施例中,计算机系统400可以包括用于向存储设备发出刷新命令的电路。例如并且再次转到图4,在表明针对用第二标识符覆写第一标识符的请求的IO工作之后,虚拟盘解析器404可以向存储设备106发送刷新命令。存储设备106可以接收刷新命令并且把高速缓存器454的内容写入到永久性存储单元460 (例如磁盘或者一个或更多闪存单元),并且第二随机数值可以被保存。
[0096]图14的操作1410示出了计算机系统400可以附加地包括用于响应于接收到表明存储设备保存了内部高速缓存器的内容的信号而修改描述虚拟盘区段的数据的电路。在发出刷新命令并且没有接收到失败消息或者接收到表明刷新成功的确认之后,虚拟盘解析器404可以修改父虚拟盘文件的描述虚拟盘区段的一部分。这又会使得向存储设备106发送一项或更多项IO工作,其使得所述修改被保存。
[0097]现在转到图15,该图图示出了可以结合图14所示的那些操作执行的附加操作。参照操作1512,其示出了计算机系统可以被可选地配置成包括用于响应于确定虚拟盘文件的永久性拷贝中的第二标识符与存储在子虚拟盘文件中的第一标识符不匹配而拒绝针对实例化虚拟盘的请求的电路。例如并且回到图7,假设后来的某一时间用户尝试从虚拟盘文件702和虚拟盘文件702 二者实例化虚拟盘402。在该例中,虚拟盘解析器404可以确定第一标识符不等于第二标识符(这表明的事实是,父虚拟盘文件702被修改),并且虚拟盘解析器404拒绝针对实例化虚拟盘402的请求。在一个具体实例中,虚拟盘解析器404可以使得显示包括文字的对话框,所述文字表明虚拟盘402已受到破坏,这是因为对于基础虚拟盘文件的修改已使其失效。
[0098]继续对于图15的描述,操作1514示出了计算机系统400可以包括用于响应于用户输入把所述唯一标识符改变为先前数值的电路。例如并且再次回到图7,假设用户尝试实例化虚拟盘402。取代如在前面段中描述的那样拒绝所述请求,虚拟盘解析器404可以使得显示对话框,其指引虚拟盘解析器404尝试实例化虚拟盘402而不管虚拟盘402是否受到破坏。如果虚拟盘402被成功打开,则虚拟盘解析器404可以拷贝被存储为父唯一标识符710的标识符(即第一唯一标识符)并且覆写被存储为唯一标识符708的标识符(即第二唯一标识符),并且表明修复操作成功。
[0099]继续对于图15的描述,操作1516示出了计算机系统400可以包括:用于实例化虚拟盘的电路,所述虚拟盘包括由父虚拟盘文件描述的虚拟盘区段和由子虚拟盘文件描述的虚拟盘区段,子虚拟盘文件包括序号;用于把标识出子虚拟盘文件当中的由子虚拟盘文件完全描述的一个虚拟盘区段子集的信息加载到随机存取存储器中的电路,所述信息与所述序号的拷贝相关联;用于响应于确定子虚拟盘文件被修改而递增子虚拟盘文件中的序号的电路;以及用于响应于确定所述信息准确地反映出子虚拟盘文件中的所述虚拟盘区段子集的状态而递增与所述信息相关联的序号的电路。例如假设实例化虚拟盘402,并且虚拟盘解析器404把规范化比特图加载到随机存取存储器中。可替换地,可以把所述信息组织成表而不是规范化比特图。规范化比特图可以与规范化比特图标识符(例如随机数、序号等等)相关联,并且所述标识符可以表明所述规范化比特图对于其所涵盖的扇区比特图而言何时是准确的。在一个具体实例中,假设所述规范化比特图类似于图8的规范化比特图810。如图所示,规范化比特图可以与被存储为规范化比特图标识符814的标识符相关联。
[0100]在一个示例性实施例中,虚拟盘解析器404可以被配置成确定虚拟盘文件702是否已被修改,并且响应于接收到针对改变虚拟盘文件702内的数据(例如元数据和/或有效载荷数据)的请求,虚拟盘解析器404可以检查存储器中的标识符以便检查这是否是自从虚拟盘文件702被打开之后的第一次修改。在这种配置中,当所述修改是自从虚拟盘文件702被打开之后的第一次修改时,虚拟盘解析器404可以通过使得向存储设备106发出表明所述改变的一项或更多项IO工作来把被存储为NB标识符820的标识符改变为第二 NB标识符。在一种可替换配置中,虚拟盘解析器404可以通过一旦在读取/修改模式下打开虚拟盘文件702就使得向存储设备106发出表明所述改变的一项或更多项IO工作来把被存储为NB标识符820的标识符改变为第二 NB标识符。在这一时间点,虚拟盘文件702的盘上版本包括对应于规范化数字820和规范化比特图数字814的不同标识符,如果虚拟盘解析器404崩溃,则下一次由虚拟盘解析器404打开虚拟盘文件602时所述数字将不匹配。这表明规范化比特图810可能没有准确地反映出其所涵盖的扇区比特图的内容。
[0101]如果虚拟盘解析器404被编程来保持规范化比特图,例如当对应于虚拟盘区段0-4的扇区比特图转变到完全被描述状态时更新规范化比特图810,则虚拟盘解析器404还可以被配置成把规范化比特图标识符814改变成等于所保存的规范化比特图标识符820,并且向存储设备106发出IO工作以保存所述改变。如前面更加详细地描述的那样,如果使用了事务日志或者某种其他日志记录机制来确保把对于规范化比特图810的存储器中版本做出的改变成功提交到永久性存储单元460,则可以在虚拟盘解析器404关闭子虚拟盘文件700时或者一旦对所保存的规范化比特图数字820做出改变时对被存储为规范化比特图标识符814的标识符做出改变。
[0102]继续对于图15的描述,操作1518示出了计算机系统400可以包括用于把对应于一组虚拟盘区段的扇区比特图写入到虚拟盘文件的一部分的电路,其中虚拟盘文件的所述部分具有虚拟盘文件偏移量,该虚拟盘文件偏移量被选择成使得该部分与被配置成存储虚拟盘文件的存储设备的扇区对准。在一个示例性实施例中,可以由虚拟盘解析器404接收IO工作,其使得虚拟盘解析器404访问虚拟盘文件602的存储复合扇区比特图900的一部分。在该例中,复合扇区比特图900被写入到虚拟盘文件702,从而使其与存储设备106的底层扇区尺寸对准。这一对准改进了虚拟盘402的总体性能,这是因为复合扇区比特图900和虚拟盘区段有效载荷与存储设备106对准,从而降低了在从基于盘的存储设备进行读取时越过轨道边界的几率。
[0103]前面的详细描述通过实例和/或操作图示阐述了所述系统和/或处理的各种实施例。在这样的方框图和/或实例包含一项或更多项功能和/或操作的情况下,本领域技术人员将理解的是,可以通过多种硬件、软件、固件或者实际上其任意组合来单独地和/或共同地实施这样的方框图或实例内的每一项功能和/或操作。
[0104]虽然已经示出并描述了这里所描述的本主题的具体方面,但是本领域技术人员将显而易见的是,基于这里的教导,在不背离这里所描述的主题及其更宽泛方面的情况下可以做出改变和修改,因此所附权利要求将在其范围内涵盖处在这里所描述的主题的真实精神和范围内的所有这样的改变和修改。
【权利要求】
1.一种计算机可读存储介质,其包括在由处理器执行时使得所述处理器实施以下步骤的指令: 打开虚拟盘文件,所述虚拟盘文件包括第一唯一标识符以及构成虚拟盘中的数据的至少一部分的虚拟盘区段数据; 响应于检测到针对向虚拟盘文件写入影响对于虚拟盘区段数据的解释方式的信息的尝试,用第二唯一标识符覆写虚拟盘文件中的第一唯一标识符; 确定第二唯一标识符被写入到虚拟盘文件的永久性拷贝;以及响应于确定第二唯一标识符被写入到虚拟盘文件的永久性拷贝,向虚拟盘文件写入所述信息。
2.权利要求1的计算机可读存储介质,还包括在被执行时使得所述处理器实施以下步骤的指令: 把一个数字与标识出一组当中的被子虚拟盘文件完全描述的虚拟盘区段的信息相关联; 响应于确定虚拟盘文件中的数据被修改,把子虚拟盘文件中的所述一个数字的拷贝更新为第二数字;以及 响应于确定所述信息准确地反映出所述一组当中的虚拟盘区段的状态,把与所述信息相关联的所述一个数字更新为第二数字。
3.一种计算机系统,其包括: 处理器;以及 存储器,所述存储器在通电时与处理器进行电子通信,所述存储器包括在由处理器执行时使得所述处理器施行以下步骤的指令: 实例化虚拟盘,所述虚拟盘包括由第一虚拟盘文件描述的一组虚拟盘区段,所述第一虚拟盘文件包括第一标识符; 把标识出所述一组当中的被第一虚拟盘文件完全描述的虚拟盘区段的信息加载到随机存取存储器中,所述信息与第一标识符的拷贝相关联; 在打开第一虚拟盘文件之后把第一虚拟盘文件中的第一标识符改变为第二标识符;以及 响应于确定所述信息准确地反映出所述一组当中的虚拟盘区段的状态,把与所述信息相关联的第一标识符的所述拷贝改变为第二标识符。
4.权利要求3的计算机系统,在被执行时使得所述处理器实例化虚拟盘的所述指令还包括在被执行时使得所述处理器实施以下步骤的指令: 响应于确定第一虚拟盘文件中的唯一标`识符与位于父虚拟盘文件中的唯一标识符相匹配而实例化虚拟盘。
5.权利要求3的计算机系统,在被执行时使得所述处理器改变与所述信息相关联的第一标识符的所述拷贝的所述指令还包括在被执行时使得所述处理器实施以下步骤的指令: 响应于确定虚拟盘文件被修改,把与所述信息相关联的第一标识符的所述拷贝改变为第二标识符;以及 把对所述信息做出的修改记入日志。
6.权利要求3的计算机系统,还包括在被执行时使得所述处理器实施以下步骤的指令: 检测针对修改父虚拟盘文件中的影响对基于父虚拟盘文件的虚拟盘的虚拟盘区段数据的解释方式的信息的尝试,其中所述父虚拟盘文件包括第一随机数值; 用第二随机数值覆写父虚拟盘文件中的第一随机数值; 刷新虚拟盘文件;以及 响应于接收到表明刷新完成的信号而修改父虚拟盘文件中的所述信息。
7.一种计算机实施的方法,包括: 打开父虚拟盘文件,所述父虚拟盘文件关联到子虚拟盘文件,父虚拟盘文件包括第一标识符,并且子虚拟盘文件包括第一标识符的拷贝; 响应于检测到针对修改描述虚拟盘区段的数据的尝试,用第二标识符覆写虚拟盘文件中的第一标识符; 向被配置成存储父虚拟盘文件的永久性拷贝的存储设备发出表明用第二标识符覆写第一标识符的输入/输出工作; 向所述存储设备发出刷新命令;以及 响应于接收到表明所述存储设备保存了内部高速缓存器的内容的信号,修改描述所述虚拟盘区段的数据。`
8.权利要求7的计算机实施的方法,还包括: 响应于确定虚拟盘文件的所述永久性拷贝中的第二标识符与存储在子虚拟盘文件中的第一标识符不匹配,拒绝针对实例化虚拟盘的请求。
9.权利要求7的计算机实施的方法,还包括: 实例化所述虚拟盘,其中所述虚拟盘包括由父虚拟盘文件描述的虚拟盘区段和由子虚拟盘文件描述的虚拟盘区段,所述子虚拟盘文件包括序号; 把标识出子虚拟盘文件中的由子虚拟盘文件完全描述的虚拟盘区段子集的信息加载到随机存取存储器中,所述信息与所述序号的拷贝相关联; 响应于确定子虚拟盘文件被修改,递增子虚拟盘文件中的所述序号;以及响应于确定所述信息准确地反映出子虚拟盘文件中的所述虚拟盘区段子集的状态,递增与所述信息相关联的所述序号。
10.权利要求7的计算机实施的方法,还包括: 把对应于一组虚拟盘区段的扇区比特图写入到虚拟盘文件的一部分,虚拟盘文件的所述部分具有虚拟盘文件偏移量,该虚拟盘文件偏移量被选择成使得该部分与被配置成存储虚拟盘文件的存储设备的扇区对准。
【文档编号】G06F9/06GK103493028SQ201180070385
【公开日】2014年1月1日 申请日期:2011年10月10日 优先权日:2011年4月26日
【发明者】J.A.斯塔克斯, D.L.格林, T.W.哈里斯, M.约翰, S.拉加拉姆, E.特劳特 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1