专利名称:用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统和方法
技术领域:
本发明总的涉及用于优化虚拟机执行的系统和方法。本发明尤其涉及用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统和方法。
背景技术:
在实现管理器以在主机计算装置上执行虚拟机的传统计算环境中,管理器通常向虚拟机提供对包括虚拟盘的虚拟资源的访问。在通常的环境中,当对虚拟盘做出修改时,可以对虚拟盘映像做出新的映像;例如,写时复制的方式可导致虚拟盘映像链,其中产生了主文件和主文件经修改的版本,对映像的新的修改产生了新的、与较旧文件关联的“子”映像。 在这些环境中,来自虚拟机的从虚拟盘读取或写入的请求可被路由到该子映像。然而,读请求可能需要额外的路由,这是因为通常首先查询子映像来确定其是否包含所请求的数据; 如果该子映像不包含所请求的数据,那么该请求接着被重新路由到父文件(也检查其元数据);这个过程在到主文件的链向上递归直到数据被定位为止。因此在传统的写时复制的环境中对读请求的处理引起额外的延迟以及处理负担,其随着子映像的数量而增加。
发明内容
一方面,一种用于优化确定由虚拟硬盘地址标识的数据位置的过程的方法包括由在物理计算装置上存储的虚拟硬盘存储主文件和多个链接文件,所述多个链接文件中的第一个文件包括主文件的增量而每个后续文件包括所述多个链接文件中的前一文件的增量。 该方法包括维护将多个虚拟硬盘地址的每一个地址与多个链接文件中的包含存储在该多个虚拟硬盘地址的其中一个地址上的数据的当前版本的文件关联的表格。该方法包括拦截以虚拟硬盘地址访问数据的请求。该方法包括基于该表格识别包含所寻址的数据的文件。 该方法包括响应于所拦截的请求,提供对来自所识别的文件的所寻址的数据的访问。一个实施例中,该方法包括确定所请求的数据的当前版本没有被存储在多个链接文件中的最后一个文件中以及响应于所述确定,基于所述表格来识别多个链接文件中的包含数据的当前版本的文件。又一个实施例中,该方法包括维护表格,所述表格将多个虚拟硬盘地址的每一个地址关联到主文件或者多个链接文件中的包含存储在该地址上的数据的当前版本的文件,以及将第二多个虚拟硬盘地址的每一个地址关联到既不是主文件也不是多个链接文件中的文件的至少一个文件;所述至少一个文件可包括在虚拟硬盘上复制的一个或多个块。又一个方面,一种用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统包括虚拟硬盘、管理器、多个链接文件和表格。所述多个链接文件包括包含主文件的增量的第一个文件和包含所述多个链接文件中的前一文件的增量的各个后续文件。所述表格列举在多个虚拟硬盘地址的每一个地址与主文件和多个链接文件中的包含存储在多个虚拟硬盘地址的其中一个地址上的数据的当前版本的文件的其中一个之间的关联。存储在物理计算装置上的虚拟硬盘存储主文件、多个链接文件和表格。与虚拟硬盘通信的管理器拦截以虚拟硬盘地址访问数据的请求、基于该表格来识别包含所请求的数据的文件以及用对所请求的数据的访问来对该请求进行响应。
本发明的前述和其它目的、方面、特征和优点通过参考下述结合附图的描述将会更加明显并更易于理解,其中图IA是描述包括管理器层、虚拟化层和硬件层的计算环境的实施例的框图;图IB和IC是描述有益于与此处所描述的方法和系统的相关的计算装置的实施例的框图;图2A是描述用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统的实施例的框图;图2B是描述多个链接文件的一个实施例的框图;以及图3是描述用于优化确定由虚拟硬盘地址标识的数据位置的过程的方法的实施例的流程图。
具体实施例方式现参考图1A,框图描述了虚拟化环境的一个实施例。简而言之,计算装置100包括管理器层、虚拟化层和硬件层。管理器层包括管理器101 (也称为虚拟化管理器),其通过在虚拟化层中执行的至少一个虚拟机来分配和管理对硬件层中的多个物理资源的访问 (例如处理器221和盘228)。虚拟化层包括至少一个操作系统110和分配给至少一个操作系统110的多个虚拟资源,虚拟资源可包括而不限于多个虚拟处理器13加、132b、132c (总称为132)和虚拟盘142a、142b、142c (总称为142)。可将多个虚拟资源和操作系统110称为虚拟机106。虚拟机106可包括控制操作系统105,该控制操作系统105与管理器101通信,并用于执行应用以管理并配置计算装置100上的其他虚拟机。现参考图1A,具体而言,管理器101可以以模拟可访问物理设备的操作系统的任何方式向操作系统提供虚拟资源。管理器101可以向任一数量的客户操作系统110a、 110b(总称为110)提供虚拟资源。一些实施例中,计算装置100执行一种或多种管理器。 这些实施例中,管理器可用于模拟虚拟硬件、划分物理硬件、虚拟化物理硬件并执行提供对计算环境的访问的虚拟机。管理器可包括由位于美国加利福尼亚州的I^alo Alto的VMWare 公司制造的这些程序、XEN管理器(一种开源产品,其开发由开源Xen. org协会监管)、由 Microsoft公司提供的HyperV、Virtualkrver或虚拟PC管理器或其他。一些实施例中,计算装置100执行创建客户操作系统可在其上执行的虚拟机平台的管理器,该计算装置100 被称为宿主服务器。在这些实施例的一个中,例如,计算装置100是由位于美国佛罗里达州 Fort Lauderdale 的 Citrix Systems 公司提供的 XEN SERVER。
一些实施例中,管理器101在计算装置上执行的操作系统之内执行。在这些实施例的一个中,执行操作系统和管理器101的计算装置可被视为具有宿主操作系统(在计算装置上执行的操作系统)和客户操作系统(在由管理器101提供的计算资源分区内执行的操作系统)。其他实施例中,管理器101和计算装置上的硬件直接交互而不是在宿主操作系统上执行。在这些实施例的一个中,管理器101可被视为是在“裸金属(bare metal) ”上执行,所述“裸金属”指包括计算装置的硬件。一些实施例中,管理器101可以创建操作系统110在其中执行的虚拟机 106a-c(总称为106)。在这些实施例的一个中,管理器101加载虚拟机映像以创建虚拟机 106。在这些实施例的又一个中,管理器101在虚拟机106内执行操作系统110。在这些实施例的又一个中,虚拟机106执行操作系统110。一些实施例中,管理器101控制对在计算装置100上执行的虚拟机106的处理器调度和内存划分。在这些实施例的一个中,管理器101控制至少一个虚拟机106的执行。在这些实施例的又一个中,管理器101向至少一个虚拟机106呈现对由计算装置100提供的至少一个硬件资源的抽象。其他实施例中,管理器101控制是否以及如何把物理处理器能力呈现给虚拟机106。控制操作系统105可以执行用于管理和配置客户操作系统的至少一个应用。一个实施例中,控制操作系统105可以执行管理应用,如包括如下用户接口的应用,该用户接口为管理员提供对用于管理虚拟机执行的功能的访问,这些功能包括用于执行虚拟机、终止虚拟机执行或者识别要分配给虚拟机的物理资源类型的功能。另一个实施例中,管理器101 在由管理器101创建的虚拟机106内执行控制操作系统105。在又一个实施例中,控制操作系统105在被授权直接访问计算装置100上的物理资源的虚拟机106上执行。一些实施例中,计算装置IOOa上的控制操作系统10 可经由管理器IOla和管理器IOlb之间的通信与计算装置IOOb上的控制操作系统10 交换数据。这样,一个或多个计算装置100可以与一个或多个其他计算装置100交换关于资源池中可用的处理器和其他物理资源的数据。 在这些实施例的一个中,该功能允许管理器管理分布在多个物理计算装置上的资源池。在这些实施例的又一个中,多个管理器管理在其中一个计算装置100上执行的一个或多个客户操作系统。一个实施例中,控制操作系统105在被授权与至少一个客户操作系统110交互的虚拟机106上执行。另一个实施例中,客户操作系统110通过管理器101与控制操作系统 105通信,以请求访问盘或网络。在又一个实施例中,客户操作系统110和控制操作系统105 可通过由管理器101建立的通信信道通信,例如,通过由管理器101提供的多个共享存储器页面通信。一些实施例中,控制操作系统105包括用于直接与由计算装置100提供的网络硬件通信的网络后端驱动器。在这些实施例的一个中,网络后端驱动器处理来自至少一个客户操作系统110的至少一个虚拟机请求。其他实施例中,控制操作系统105包括用于与计算装置100上的存储单元通信的块后端驱动器。在这些实施例的一个中,块后端驱动器根据从客户操作系统110接收的至少一个请求从存储单元读写数据。一个实施例,控制操作系统105包括工具堆栈104。其他实施例中,工具堆栈104 提供如下功能和管理器101交互、和其他控制操作系统105(例如位于第二计算装置IOOb上)通信,或者管理计算装置100上的虚拟机106b、106c。另一个实施例中,工具堆栈104 包括自定义应用,其用于向虚拟机群的管理员提供改进的管理功能。一些实施例中,工具堆栈104和控制操作系统105中的至少一个包括管理API,其提供用于远程配置并控制计算装置100上运行的虚拟机106的接口。其他实施例中,控制操作系统105通过工具堆栈104 与管理器101通信。一个实施例中,管理器101在由管理器101创建的虚拟机106内执行客户操作系统110。另一个实施例中,客户操作系统110为计算装置100的用户提供对计算环境中的资源的访问。另一个实施例中,资源包括程序、应用、文档、文件、多个应用、多个文件、可执行程序文件、桌面环境、计算环境或对计算装置100的用户可用的其他资源。另一个实施例中,可通过多个访问方法将资源传送给计算装置100,这些方法包括但不限于常规的直接安装在计算装置100上、通过应用流的方法传送给计算装置100、将由在第二计算装置 100'上执行资源产生的并通过表示层协议传送给计算装置100的输出数据传送给计算装置100、将由在第二计算装置100'上执行的虚拟机执行资源所产生的输出数据传送给计算装置100、或者从连接到计算装置100的移动存储装置(例如USB设备)执行,或者通过在计算装置100上执行的虚拟机执行并且产生输出数据。一些实施例中,计算装置100把执行资源所产生的输出数据传输给另一个计算装置100'。一个实施例中,客户操作系统110和该客户操作系统110在其上执行的虚拟机结合形成完全虚拟化虚拟机,该完全虚拟化虚拟机并不知道自己是虚拟机,这样的机器可称为“Domain U HVM(硬件虚拟机)虚拟机”。另一个实施例中,完全虚拟化机包括模拟基本输入/输出系统(BIOS)的软件以便在完全虚拟化机中执行操作系统。在另一个实施例中, 完全虚拟化机可包括驱动器,其通过和管理器101通信提供功能。这样的实施例中,驱动器通常意识到自己在虚拟化环境中执行。另一个实施例中,客户操作系统110和该客户操作系统110在其上执行的虚拟机结合形成超虚拟化虚拟机(paravirtualized),该超虚拟化虚拟机意识到自己是虚拟机,这样的机器可称为“Domain U PV虚拟机”。另一个实施例中,超虚拟化机包括完全虚拟化机不包括的额外驱动器。另一个实施例中,超虚拟化机包括如上所述的被包含在控制操作系统105中的网络后端驱动器和块后端驱动器。计算装置100可以被部署为任意类型和形式的计算装置和/或在其上执行,例如能够与任意类型和形式的网络通信并且执行此处所描述的操作的计算机、网络装置或设备。图IB和IC描述了用于实施此处所描述的方法和系统的实施例的计算装置100的框图。 如图IB和IC所示,计算装置100包括中央处理单元121和主存储器单元122。如图IB所示,计算装置100可包括存储装置128、安装装置116、网络接口 118、I/O控制器123、显示装置12如-1对11、键盘1 和诸如鼠标的指示装置127。存储装置1 可包括但不限于操作系统、软件和客户机代理120。如图IC所示,每个计算装置100也可包括另外的可选部件, 例如存储器端口 103、桥170、一个或多个输入/输出装置130a-130n(总的使用标号130表示)以及与中央处理单元121通信的高速缓存存储器140。中央处理单元121是响应并处理从主存储器单元122取出的指令的任意逻辑电路。在一些实施例中,中央处理单元121由微处理器单元提供,例如由位于美国加利福尼亚州Mountain View的hte 1公司制造的微处理器单元;由位于美国伊利诺伊州khaumburg的Motorola公司制造的微处理器单元;由位于美国加利福尼亚州Santa Clara 的"Transmeta公司制造的微处理器单元;RS/6000处理器,由位于美国纽约州White Plains 的hternational Business Machines公司制造的微处理器单元;或者由位于美国加利福尼亚州Sunnyvale的Advanced Micro Devices公司制造的微处理器单元。计算装置100 可以基于这些处理器中的任意一种,或者能够按照这里所说明的那样运行的任意其它处理器。主存储器单元122可以是能够存储数据并允许微处理器121直接访问任意存储位置的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM (BSRAM)、动态随机存取存储器(DRAM)、快速页模式DRAM (FPM DRAM)、增强DRAM (EDRAM)、扩展数据输出DRAM (EDO DRAM)、突发扩展数据输出DRAM (BED0 DRAM)、 同步 DRAM (SDRAM)、JEDEC SRAM、PC100SDRAM、双倍数据速率 SDRAM (DDR SDRAM)、增强 SDRAM (ESDRAM)、同步链路 DRAM (SLDRAM)、直接 RambusDRAM(DRDRAM)或铁电 RAM(FRAM)。主存储器122可以基于上述存储器芯片的任意一种,或者能够像这里所说明的那样运行的任意其它可用存储器芯片。在图IB所示的实施例中处理器121通过系统总线150 (在下面进行更详细的描述)与主存储器122进行通信。图IC描述了在其中处理器通过存储器端口 103直接与主存储器122通信的计算装置100的实施例。例如,在图IC中主存储器122可以是 DRDRAM。图IC描述在其中主处理器121通过有时被称为背侧总线的次级总线直接与高速缓存存储器140通信的实施例。其他实施例中,主处理器121使用系统总线150与高速缓存存储器140通信。高速缓存存储器140通常有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图IC所示的实施例中,处理器121通过本地系统总线 150与各种1/0装置130进行通信。可以使用各种不同的总线将中央处理单元121连接到任意1/0装置130,包括VESA VL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、 PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于1/0装置是视频显示器124的实施例,处理器121可以使用高级图形端口(AGP)与显示装置IM通信。图IC描述了在其中主处理器121通过HYPERTRANSPORT、RAPIDI0、或INFINIBAND通信技术直接与1/0装置130b 通信的计算机100的实施例。图IC也描述了在其中本地总线和直接通信相混合的实施例 处理器121使用本地互连总线与1/0装置130a通信同时直接与1/0装置130b通信。计算装置100中可以有多种1/0装置130a-130n。输入装置包括键盘、鼠标、触控板、轨迹球、话筒、拨号盘和绘图板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机。如图IB所示,1/0装置可以由1/0控制器123控制。1/0控制器可以控制一个或多个1/0装置,例如键盘1 和指示装置127 (如鼠标或光笔)。此外,1/0装置还可以为计算装置100提供存储和/或安装介质116。在其它实施例中,计算装置100可以提供USB连接(未示出)以接收手持USB存储装置,例如由位于美国加利福尼亚州Los Alamitos的Twintech Industry公司生产的设备的USB闪存驱动线。 再次参考图1B,计算装置100可以支持任意适当的安装装置116,例如用于接收像 3. 5英寸、5. 25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、⑶-ROM驱动器、⑶-R/RW驱动器、DVD-ROM驱动器、闪存驱动器、多种格式的磁带驱动器、USB设备、硬盘驱动器或适于安装软件和程序的任意其它设备。计算装置100还可以包括存储装置,诸如一个或者多个硬盘驱动器或者独立磁盘冗余阵列,用于存储操作系统和其它相关软件,以及用于存储诸如涉及客户机代理120的任意程序的应用软件程序。或者,可以使用安装装置116的任意一种作为存储装置。此外,操作系统和软件可从可引导介质运行,可引导介质例如是可引导 CD,诸如ΚΝ0ΡΡΙΧ,其为一种用于GNU/Linux的可引导CD,可自knoppix. net作为GNU/Linux 分发获得。此外,计算装置100可以包括网络接口 118以通过多种连接来与网络104对接,所述连接包括但不限于标准电话线路、LAN或WAN链路(例如802. 11、Tl、Τ3、561Λ、 X. 25、SNA、DECNET)、宽带连接(如ISDN、帧中继、ATM、千兆以太网、SONET上以太网 (Ethernet-over-SONET))、无线连接、或上述任意或全部的某种组合。可使用多种通信协议(例如 TCP/IP、IPX、SPX、NetBIOS、Ethernet、ARCNET、SONET、SDH、光纤分布数据接口 (FDDI)、RS232、RS485、IEEE802. 11、IEEE802. 11a、IEEE802. lib、IEEE802. llg、CDMA、GSM、 WiMax和直接异步连接)来建立连接。在一个实施例中,计算装置100可以通过任意类型和/或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS)协议,或由位于美国佛罗里达州Ft. Lauderdale的Citrix Systems公司制造的Citrix网关协议的隧道协议来与其他计算装置100’通信。网络接口 118可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置100对接到能够通信并执行这里所说明的操作的任意类型的网络的任意其它设备。在一些实施例中,计算装置100可以包括多个显示装置1对『12如或与其相连,这些显示装置各自可以是相同或不同的类型和/或形式。因而,任意一种1/0装置130a-130n 和/或1/0控制器123可以包括任一类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算装置100连接和使用多个显示装置12如-1对11。例如, 计算装置100可以包括任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示装置对接、通信、连接或以其他方式使用显示装置12如-1对11。在一个实施例中,视频适配器可以包括多个连接器以与多个显示装置1对『12如对接。在其它实施例中,计算装置100可以包括多个视频适配器,每个视频适配器与显示装置1对『12如中的一个或多个连接。在一些实施例中,计算装置100的操作系统的任一部分都可以被配置用于使用多个显示器12如-1对11。在其它实施例中,显示装置中的一个或多个可以由一个或多个其它计算装置提供,诸如(例如通过网络)与计算装置100连接的计算装置 100a和100b。这些实施例可以包括被设计和构造来使用另一个计算机的显示装置作为计算装置100的第二显示装置12 的任何类型的软件。本领域的普通技术人员会认识和意识到可以将计算装置100配置成拥有多个显示装置的各种方式和实施例。在进一步的实施例中,1/0装置130可以是系统总线150和外部通信总线之间的桥,所述外部通信总线如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire 总线、FireffireSOO总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、krialPlus总线、SCI/LAMP总线、光纤信道总线、串行 SCSI总线或HDMI总线。图IB和IC中所描述类型的计算装置100通常地在操作系统的控制下运行,操作系统控制任务的调度和对系统资源的访问。计算装置100可运行任一操作系统,诸如任一版本的MICROSOFT WINDOWS操作系统;不同发行版本的Unix和Linux操作系统;用于Macintosh计算机的MAC OS的任意版本;任意嵌入式操作系统;任意实时操作系统;任意开源操作系统;任意专有操作系统;任意用于移动计算装置的操作系统,或者能够在计算装置上运行且执行此处所描述的操作的任意其它操作系统。典型的操作系统包括但不限于WINDOWS 3. χ、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT 3. 51、WINDOWS NT 4. 0,WINDOWS CE,WINDOWS MOBILE,WINDOWS XP 禾Π WINDOWS VISTA,所有这些均由位于美国华盛顿州Redmond的微软公司出品;由位于美国加利福尼亚州Cupertino的苹果计算机公司出品的Mac OS ;由位于美国纽约州Armonk的国际商业机器公司出品的OS/2 ;以及由位于美国犹他州Mlt Lake City的Caldera公司发布的可免费使用的Linux操作系统或者任意类型和/或形式的Unix操作系统,以及其它。计算机系统100可以是任意工作站、电话、台式计算机、膝上型或笔记本电脑、服务器、掌上电脑、移动电话或其他便携电信设备、媒体播放设备、游戏系统、移动计算装置, 或能够通信的任意其它类型和/或形式的计算、电信或者媒体装置。计算机系统100有足够的处理器能力和存储容量以执行此处所述的操作。例如,计算机系统100可包括由位于美国加利福尼亚州Cupertino的苹果计算机公司出品的IPOD系列设备、由位于日本Tokyo 的索尼公司出品的 PLAYSTATI0N2、PLAYSTATI0N3 或PERSONAL PLAYSTATION PORTABLE (PSP) 设备,由位于日本Kyoto的Nintendo有限公司出品的NINTENDO DS、NINTENDO GAMEB0Y、 NINTENDO GAMEB0Y ADVANCED或NINTENDO REVOLUTION设备,或者由位于美国华盛顿州 Redmond的微软公司出品的XBOX或XBOX 360设备。在一些实施例中,计算装置100可以有不同的处理器、操作系统以及与该装置一致的输入设备。例如,在一个实施例中,计算装置100是由I^lm公司出品的TRE0180、270、 600、650、680、700p、700w/wx、750、755p、800w、Centro 或 Pro 智能电话。在这些实施例的一些中,TERO智能电话是在I^lmOS操作系统的控制下操作并且包括笔输入设备以及五向导航设备。在其他实施例中,计算装置100是移动设备,例如,JAVA使能蜂窝电话或个人数字助理(PDA),诸如 i55sr、i58sr、i85s、i88s、i90c、i95cl、i335、i365、i570、1576、i580、 i615、i760、i836、i850、i870、i880、i920、i930、ic502、ic602、ic902、 776 或 imllOO,以上这些均由位于美国伊利诺伊州khaumburg的摩托罗拉公司制造;由位于日本Kyoto的 Kyocera公司制造的6035或7135 ;或者由位于韩国首尔的Samsung电子有限公司制造的 300或i330。在一些实施例中,计算装置100是由位于芬兰的诺基亚公司制造或由位于瑞典 Lund 的 Sony Ericsson Mobile Communications AB 公司制造的移动设备。在其他实施例中,计算装置100是黑莓(Bladcberry)手持或智能电话,诸如由 Research In Motion有限公司制造的设备,包括黑莓7100系列、8700系列、7700系列、7200 系列、黑莓7520、黑莓PERAL 8100,8700系列、8800系列、黑莓Morm、黑莓Bold、黑莓Curve 8900、黑莓Pearl Flip。在其他实施例中,计算装置100是智能电话、Pocket PC、Pocket PC 电话,或支持Microsft Windows Mobile Software的其它手持移动设备。此外,计算装置 100可以是任意工作站、台式计算机、膝上型或笔记本电脑、服务器、掌上电脑、移动电话、任意其它计算机、或能够通信并有足够的处理器能力和存储容量以执行此处所述操作的其它形式的计算或者电信设备。在一些实施例中,计算装置100是数字音频播放器。在这些实施例的一个中,计算装置100是诸如由位于美国加利福尼亚州Cupertino的苹果计算机公司制造的Apple IPOD、IPOD Touch, IPOD ΝΑΝΟ和IPOD SHUFFLE系列设备的数字音频播放器。在这些实施例的又一个中,数字音频播放器可作为便携媒体播放器和作为大容量存储装置来工作。 在其他实施例中,计算装置100是诸如由位于美国新泽西州Ridgefield Park的Samsung Electronics America 公司制造的 Digital Audio Player Select MP3 播放器,或由位于美国伊利诺伊州khaumburg的Motorola公司制造的Motorola m500或m25的数字音频播放器。在其他实施例中,计算装置100是便携媒体播放器,诸如由Creative Technologies 有限公司制造的 ZEN VISION W、ZEN VISION 系列、ZEN PORTABLE MEDIA CENTER 设备或 MP3播放器的Digital MP3系列。仍在其他实施例中,计算装置100是支持以下文件格式的便携媒体播放器或数字音频播放器,这些文件格式包括,但不限于MP3、WAV、M4A/AAC、 WMAProtected AAC、AIFF、Audible 音频书、Apple Lossless 音频文件格式和.mov、. m4v 以及.mp4MPEG-4(H. 264/MPEG-4AVC)视频文件格式。在一些实施例中,计算装置100包括设备的组合,例如与数字音频播放器或便携媒体播放器相组合的移动电话。在这些实施例的一个中,计算装置100是智能电话,例如由苹果计算机公司制造的iPhone,或由Research In Motion有限公司制造的黑莓设备。又一个实施例中,计算装置100是装有web浏览器和麦克风与扬声器系统(如电话耳机)的笔记本电脑或台式计算机。在这样的实施例中,计算装置100是web使能的(web-enabled) 的并且能接听和启动电话呼叫。在其他实施例中,计算装置100是组合数字音频播放器和移动电话的 Motorola RAZR 或 Motorola ROKR 系列。计算装置100可以是文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器或防火墙。在一些实施例中,计算装置100提供远程认证拨入用户服务,并被称为RADIUS服务器。 在其他实施例中,计算装置100可以有作为应用服务器或者作为主应用服务器工作的能力。在其他实施例中,计算装置100是刀片服务器。在一个实施例中,计算装置100可包括活动目录。计算装置100可以是应用加速设备。对于其中计算装置100是应用加速设备的实施例,计算装置100可提供包括防火墙功能、应用防火墙功能,或负载平衡功能的功能。在一些实施例中,计算装置100包括诸如由位于美国加州San Jose的Citrix Application Networking Group、位于美国力口州 Mountain View 的 Silver Peak Systems 公司、位于美国力口州 San Francisco 的 Riverbed ^Technology公司、位于美国华盛顿州kattle的F5 Networks公司或位于美国加州Sunnyvale的Juniper Networks公司制造的设备系列中的一个设备。在其他实施例中,计算装置100可被称为客户机节点、客户机器、端节点或端点。 在一些实施例中,客户机100具有作为客户机节点寻求访问服务器所提供的资源的能力以及作为服务器节点为其它客户机提供对所寄载的资源访问的能力。在一些实施例中,第一客户机计算装置100a与第二服务器计算装置100b通信。在一个实施例中,客户机与服务器群中的计算装置100之一进行通信。例如,通过网络,客户机可以请求执行由服务器群中的计算装置100所寄载的各种应用以及接收应用执行结果的输出数据以用于显示。在一个实施例中,客户机执行程序邻近应用(program neighborhood application)以与服务器群中的计算装置100通信。
计算装置100可以执行、操作或者以其它方式提供应用,该应用可以是任何类型和/或形式的软件、程序或可执行指令,诸如任何类型和/或形式的web浏览器、基于web 的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、或Java小程序,或者能够在计算装置100上执行的任何其他类型和/或形式的可执行指令。在一些实施例中,应用可以是由第二计算装置代表第一计算装置的用户执行的基于服务器的或者基于远程的应用。在其他实施例中,第二计算装置可使用任何瘦客户端或远程显示协议向第一客户计算装置显示输出的数据,所述协议如由位于美国佛罗里达州Ft. Lauderdale的 Citrix Systems公司制造的独立计算架构(ICA)协议;或由位于美国华盛顿州Redmond的 Microsoft公司制造的远程桌面协议(RDP) ;Xll协议;由AT&T贝尔实验室制造的虚拟网络计算(VNC)协议;由位于美国加州Sunnyvale和以色列Raanana的Qumranet公司制造的 SPICE协议;由位于美国加州Milpitas的VESA公司制造的Net2Display协议;由位于加拿大不列颠哥伦比亚省Burnaby的Teradici公司制造的PC-over-IP协议;由位于美国加州 San Jose的Wyse Technology公司制造的TCX协议;由位于美国纽约州NewYork的纽约市哥伦比亚大学开发的THINC协议;或者由位于美国马萨诸塞州Chelmsford的De sktone公司制造的Vi rtual-D协议。应用可以使用任何类型的协议,并且其可以是例如HTTP客户机、FTP客户机、Oscar客户机或Telnet客户机。在其他实施例中,应用包括与诸如软IP电话的网络电话(VoIP)通信有关的任意类型的软件。在进一步的实施例中,应用包括与实时数据通信有关的任何应用,例如用于流式传输视频和/或音频的应用。一些实施例中,第一计算装置IOOa代表客户机计算装置100b的用户执行应用。 其他实施例中,计算装置100a执行虚拟机,其提供执行会话,在该会话中,代表用户或客户机计算装置100b执行应用。一个这样的实施例中,执行会话是寄载的桌面会话。另一个这样的实施例中,计算装置100执行终端服务会话。终端服务会话可以提供寄载的桌面环境。 在另一个这样的实施例中,执行会话提供对计算环境的访问,计算环境可包括以下的一个或多个应用、多个应用、桌面应用以及在其中可执行一个或多个应用的桌面会话。现参考图2A,框图描述了用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统的一个实施例。总的来说,该系统包括虚拟硬盘142、管理器101、表格260和多个链接文件沈5。多个链接文件265包括包含主文件沈2的增量的第一个文件和包含多个链接文件265中的前一文件的增量的各个后续文件。表格260列举在多个虚拟硬盘地址的每一个地址与主文件262和多个链接文件265中的包含存储在多个虚拟硬盘地址的其中一个地址上的数据的当前版本的文件的其中一个之间的关联。存储在物理计算装置100上的虚拟硬盘142存储主文件沈2、多个链接文件265和表格沈0。与虚拟硬盘142通信的管理器101 拦截以虚拟硬盘地址访问数据的请求、基于表格260来识别包含所请求的数据的文件以及用对所请求的数据的访问来对该请求进行响应。现参考图2A,更具体地,多个链接文件265包括包含主文件262的增量的第一个文件和包含多个链接文件265中的前一文件的增量的各个后续文件。一个实施例中,多个链接文件265是写时复制的虚拟盘映像的一个链。在又一个实施例中,该链中的每个文件包含从虚拟盘地址到文件偏移的映射。在又一个实施例中,该链中的文件与跟踪文件的哪个区域包含有效数据的元数据相关联。在一些实施例中,在虚拟机内执行的进程可能写入多个链接文件265中的最后一个文件。
在一些实施例中,多个链接文件沈5中的文件存储映像。在这些实施例的一个中, 该文件是虚拟机映像。在这些实施例的又一个中,该文件是操作系统映像。其他实施例中, 多个链接文件265中的文件不存储可执行的数据。在这些实施例的一个中,该文件是数据库。现参考图2B,框图描述了多个链接文件沈5的一个实施例。如图2B所示,主文件 262是多个链接文件沈5中的第一个文件。一个实施例中,主文件262可被称为原始文件。 在一些实施例中,主文件沈2是只读的主文件。反映对主文件262的修改的增量文件是多个链接文件265中的第二个文件沈如。如图2B所示,在一些实施例中,反映对增量文件的修改的增量文件26 被称为子文件沈恥,而增量文件被称为父文件沈如。在一个实施例中,访问多个链接文件中的子文件沈恥的进程具有读取和写入该文件的能力。在又一个实施例中,访问多个链接文件中的父文件26 的进程只具有读文件的能力。例如,在又一个实施例中,文件26 可允许读和写访问直到创建了新的增量文件 265b为止;此时,该文件265可允许只读访问。一些实施例中,多个链接文件沈5中的最后一个文件对在虚拟机250中执行的进程是可写的。现参考回到图2A,表格260列举在多个虚拟硬盘地址的每一个地址与主文件262 和多个链接文件265中的包含存储在多个虚拟硬盘地址的其中一个地址上的数据的当前版本的文件的其中一个之间的关联。在一些实施例中,表格260被称为文件描述符表。在一个实施例中,表格260具有存储文件标识符(文件ID)、文件路径、文件访问和虚拟硬盘文件的通用唯一标识符(UUID)的数据结构。在又一个实施例中,表格沈0中的每一行代表多个链接文件265中的一个文件。在一些实施例中,一个文件描述符表260存储与多个链接文件265中的每个文件关联的数据。其他实施例中,为多个链接文件提供多个表格沈0。进一步的实施例中,表格260可包括头部,所述头部识别用于验证表格沈0的一致性以及用于定位与表格260关联的文件或表格的至少一个字段。在这些实施例的一个中,UUID和时间戳字段也提供可用于确认表格沈0中的数据的一致性的数据。在一个实施例中,表格沈0中的文件ID指定多个链接文件265中的一个文件的唯一标识符。又一个实施例中,表格260中的文件路径指定由虚拟硬盘142提供的文件系统中的文件的位置。在又一个实施例中,表格沈0中的文件访问时间指定具有所指出的文件 ID的文件被计算装置100上的进程修改的时间;例如,在与虚拟硬盘142关联的虚拟机250 中执行的进程。在又一个实施例中,表格沈0中的虚拟硬盘地址是嵌入在虚拟硬盘元数据和说明中的唯一标识符。在一些实施例中,提供第二表格,其指定表格沈0的文件ID以及指定识别虚拟硬盘的扇区的偏移。虚拟硬盘的扇区可以是例如由虚拟硬盘存储的512字节的数据。在这些实施例的一个中,该偏移识别存储所识别的文件中的数据的虚拟硬盘的分区。在这些实施例又一个中,第二表格被称为块描述符表。在这些实施例的又一个中,块描述符表由多个逻辑块组成,其各自表示虚拟硬盘142的一个区域;例如,多个逻辑块中的一个逻辑块可表示虚拟硬盘142的2MB的连续区域。在这些实施例的又一个中,对多个链接文件沈5中的每个文件产生块描述符表。在其他实施例中,一个块描述符表存储与多个链接文件中的每个文件关联的数据。在进一步的实施例中,多个块描述符表与多个链接文件265相关联。在一些实施例中,提供两个表格表格260和块描述符表。在这些实施例的一个中,提供第二表格的结果是对于块描述符表中的每个块存储文件标识符,而不是文件的完整路径名,其结果是可减小表格260的大小。在这些实施例的又一个中,表格260提供改善的能力以增加或删除或以其他方式修改表格260的条目。在其他实施例中,提供第三表格,其识别虚拟硬盘地址的至少一个范围。在这些实施例的一个中,第三表格是将虚拟硬盘地址的范围映射到由第二表格指定的偏移的数组。 在这些实施例的又一个中,例如,该数组将虚拟扇区地址的2MB的区域映射到由块描述符表识别的偏移。在这些实施例的又一个中,第三表格被称为块分配表。在这些实施例的又一个中,例如,块分配表的每一行指向在块描述符表中为2MB区域的数据识别的字节偏移。 在一些实施例中,一个块分配表存储与多个链接文件中的每个文件关联的数据。在进一步的实施例中,多个块分配表与多个链接文件265相关联。下面是表格沈0的一个实施例的例子
权利要求
1.一种用于优化确定由虚拟硬盘地址标识的数据位置的过程的方法,所述方法包括 由在物理计算装置上存储的虚拟硬盘存储主文件和多个链接文件,所述多个链接文件中的第一个文件包括主文件的增量而且每个后续文件包括所述多个链接文件中的前一文件的增量;维护表格,所述表格将多个虚拟硬盘地址的每一个地址与多个链接文件中的包含存储在所述多个虚拟硬盘地址的其中一个地址上的数据的当前版本的文件相关联; 拦截以虚拟硬盘地址访问数据的请求; 基于所述表格来识别包含所寻址的数据的文件;以及响应于所拦截的请求,提供对来自所识别的文件的所寻址的数据的访问。
2.根据权利要求1所述的方法,还包括当新的文件被加入到多个链接文件时,通过将多个链接文件中的文件与虚拟硬盘地址相关联来更新所述表格中的条目。
3.根据权利要求1所述的方法,还包括确定所请求的数据的当前版本没有被存储在多个链接文件中的最后一个文件中;以及响应于所述确定,基于所述表格来识别多个链接文件中的包含数据的当前版本的文件。
4.根据权利要求1所述的方法,其中维护还包括维护表格,所述表格将多个虚拟硬盘地址的每一个地址关联到主文件或多个链接文件中的包含该地址上的数据的当前版本的文件,并且将第二多个虚拟硬盘地址的每一个地址关联到既不是主文件也不是多个链接文件中的文件的至少一个文件。
5.根据权利要求4所述的方法,其中所述至少一个文件包括在至少一个虚拟硬盘上复制的一个或多个块。
6.一种用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统,所述系统包括 多个链接文件,所述多个链接文件中的第一个文件包括主文件的增量而每个后续文件包括所述多个链接文件中的前一文件的增量;表格,用于将多个虚拟硬盘地址的每一个地址与所述主文件和多个链接文件中的包含存储在所述多个虚拟硬盘地址的其中一个地址上的数据的当前版本的文件的其中一个相关联;在物理计算装置上存储的虚拟硬盘,所述虚拟硬盘存储所述主文件、所述多个链接文件和表格;以及与虚拟硬盘通信的管理器,用于拦截以虚拟硬盘地址访问数据的请求,基于所述表格识别包含所请求的数据的文件以及用对所请求的数据的访问来响应所述请求。
7.根据权利要求6所述的系统,还包括多个链接文件中的最后一个文件,其由在包括所述虚拟硬盘的虚拟机中执行的进程可写。
8.根据权利要求6所述的系统,其中管理器还包括用于当新的文件被加入到所述多个链接文件时,通过将多个链接文件中的文件与虚拟硬盘地址相关联来更新所述表格中的条目的装置。
9.根据权利要求6所述的系统,其中管理器还包括用于确定所请求的数据的当前版本没有被存储在最新的增量文件中的装置;以及用于响应于所述确定,基于所述表格来识别多个链接文件中的包含数据的当前版本的文件的装置。
10.根据权利要求6所述的系统,其中所述表格还包括在第二多个虚拟硬盘地址和既不是主文件也不是增量文件的至少一个文件之间的关联。
11.根据权利要求10所述的系统,其中所述至少一个文件包括在至少一个虚拟硬盘上复制的一个或多个块。
12.—种在其上具有指令的计算机可读介质,当执行所述指令时提供用于优化确定由虚拟硬盘地址标识的数据位置的过程的方法,所述计算机可读介质包括用于由在物理计算装置上存储的虚拟硬盘存储主文件和多个链接文件的指令,所述多个链接文件中的第一个文件包括主文件的增量而每个后续文件包括所述多个链接文件中的前一文件的增量;用于维护表格的指令,所述表格将多个虚拟硬盘地址的每一个地址与多个链接文件中的包含存储在所述多个虚拟硬盘地址的其中一个地址上的数据的当前版本的文件相关联;用于拦截以虚拟硬盘地址访问数据的请求的指令;用于基于所述表格来识别包含所寻址的数据的文件的指令;以及用于响应于所拦截的请求提供对来自所识别的文件的所寻址的数据的访问的指令。
13.根据权利要求12所述的计算机可读介质,还包括用于当新的文件被加入到多个链接文件时,通过将多个链接文件中的文件与虚拟硬盘地址相关联来更新所述表格中的条目的指令。
14.根据权利要求12所述的计算机可读介质,还包括用于确定所请求的数据的当前版本没有被存储在所述多个链接文件中的最后一个文件中的指令;以及用于响应于所述确定,基于所述表格来识别多个链接文件中的包含数据的当前版本的文件的指令。
15.根据权利要求12所述的计算机可读介质,还包括用于维护表格的指令,所述表格将多个虚拟硬盘地址的每个地址关联到主文件或多个链接文件中的包含该地址上的数据的当前版本的文件,并且将第二多个虚拟硬盘地址的每一个地址关联到既不是主文件也不是多个链接文件中的文件的至少一个文件。
全文摘要
一种用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统包括虚拟硬盘、管理器、多个链接文件和表格。多个链接文件包括包含主文件的增量的第一个文件和包含在多个链接文件中的前一文件的增量的各个后续文件。所述表格列举在多个虚拟硬盘地址的每一个地址与主文件和多个链接文件中的文件的其中一个之间的关联。虚拟硬盘存储主文件、多个链接文件和表格。管理器拦截以虚拟硬盘地址访问数据的请求、基于所述表格来识别包含所请求的数据的文件以及用对所请求的数据的访问来对该请求进行响应。
文档编号G06F17/30GK102334114SQ200980157201
公开日2012年1月25日 申请日期2009年11月30日 优先权日2008年12月23日
发明者A·K·沃菲尔德, J·T·怀尔斯 申请人:思杰系统有限公司