CN102334114B - 用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统和方法 - Google Patents

用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统和方法 Download PDF

Info

Publication number
CN102334114B
CN102334114B CN200980157201XA CN200980157201A CN102334114B CN 102334114 B CN102334114 B CN 102334114B CN 200980157201X A CN200980157201X A CN 200980157201XA CN 200980157201 A CN200980157201 A CN 200980157201A CN 102334114 B CN102334114 B CN 102334114B
Authority
CN
China
Prior art keywords
file
data
address
virtual hard
chained
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN200980157201XA
Other languages
English (en)
Other versions
CN102334114A (zh
Inventor
J·T·怀尔斯
A·K·沃菲尔德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN102334114A publication Critical patent/CN102334114A/zh
Application granted granted Critical
Publication of CN102334114B publication Critical patent/CN102334114B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统包括虚拟硬盘、管理器、多个链接文件和表格。多个链接文件包括包含主文件的增量的第一个文件和包含在多个链接文件中的前一文件的增量的各个后续文件。所述表格列举在多个虚拟硬盘地址的每一个地址与主文件和多个链接文件中的文件的其中一个之间的关联。虚拟硬盘存储主文件、多个链接文件和表格。管理器拦截以虚拟硬盘地址访问数据的请求、基于所述表格来识别包含所请求的数据的文件以及用对所请求的数据的访问来对该请求进行响应。

Description

用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统和方法
相关申请
本申请要求2008年12月23日提交的美国专利申请序列号12/342,861的优先权,将其公开内容视为本申请公开的一部分并且通过引用将其整体包含于此。
技术领域
本发明总的涉及用于优化虚拟机执行的系统和方法。本发明尤其涉及用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统和方法。
背景技术
在实现管理器以在主机计算装置上执行虚拟机的传统计算环境中,管理器通常向虚拟机提供对包括虚拟盘的虚拟资源的访问。在通常的环境中,当对虚拟盘做出修改时,可以对虚拟盘映像做出新的映像;例如,写时复制的方式可导致虚拟盘映像链,其中产生了主文件和主文件经修改的版本,对映像的新的修改产生了新的、与较旧文件关联的“子”映像。在这些环境中,来自虚拟机的从虚拟盘读取或写入的请求可被路由到该子映像。然而,读请求可能需要额外的路由,这是因为通常首先查询子映像来确定其是否包含所请求的数据;如果该子映像不包含所请求的数据,那么该请求接着被重新路由到父文件(也检查其元数据);这个过程在到主文件的链向上递归直到数据被定位为止。因此在传统的写时复制的环境中对读请求的处理引起额外的延迟以及处理负担,其随着子映像的数量而增加。
发明内容
一方面,一种用于优化确定由虚拟硬盘地址标识的数据位置的过程的方法包括由在物理计算装置上存储的虚拟硬盘存储主文件和多个链接文件,所述多个链接文件中的第一个文件包括主文件的增量而每个后续文件包括所述多个链接文件中的前一文件的增量。该方法包括维护将多个虚拟硬盘地址的每一个地址与多个链接文件中的包含存储在该多个虚拟硬盘地址的其中一个地址上的数据的当前版本的文件关联的表格。该方法包括拦截以虚拟硬盘地址访问数据的请求。该方法包括基于该表格识别包含所寻址的数据的文件。该方法包括响应于所拦截的请求,提供对来自所识别的文件的所寻址的数据的访问。
一个实施例中,该方法包括确定所请求的数据的当前版本没有被存储在多个链接文件中的最后一个文件中以及响应于所述确定,基于所述表格来识别多个链接文件中的包含数据的当前版本的文件。又一个实施例中,该方法包括维护表格,所述表格将多个虚拟硬盘地址的每一个地址关联到主文件或者多个链接文件中的包含存储在该地址上的数据的当前版本的文件,以及将第二多个虚拟硬盘地址的每一个地址关联到既不是主文件也不是多个链接文件中的文件的至少一个文件;所述至少一个文件可包括在虚拟硬盘上复制的一个或多个块。
又一个方面,一种用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统包括虚拟硬盘、管理器、多个链接文件和表格。所述多个链接文件包括包含主文件的增量的第一个文件和包含所述多个链接文件中的前一文件的增量的各个后续文件。所述表格列举在多个虚拟硬盘地址的每一个地址与主文件和多个链接文件中的包含存储在多个虚拟硬盘地址的其中一个地址上的数据的当前版本的文件的其中一个之间的关联。存储在物理计算装置上的虚拟硬盘存储主文件、多个链接文件和表格。与虚拟硬盘通信的管理器拦截以虚拟硬盘地址访问数据的请求、基于该表格来识别包含所请求的数据的文件以及用对所请求的数据的访问来对该请求进行响应。
附图说明
本发明的前述和其它目的、方面、特征和优点通过参考下述结合附图的描述将会更加明显并更易于理解,其中:
图1A是描述包括管理器层、虚拟化层和硬件层的计算环境的实施例的框图;
图1B和1C是描述有益于与此处所描述的方法和系统的相关的计算装置的实施例的框图;
图2A是描述用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统的实施例的框图;
图2B是描述多个链接文件的一个实施例的框图;以及
图3是描述用于优化确定由虚拟硬盘地址标识的数据位置的过程的方法的实施例的流程图。
具体实施方式
现参考图1A,框图描述了虚拟化环境的一个实施例。简而言之,计算装置100包括管理器层、虚拟化层和硬件层。管理器层包括管理器101(也称为虚拟化管理器),其通过在虚拟化层中执行的至少一个虚拟机来分配和管理对硬件层中的多个物理资源的访问(例如处理器221和盘228)。虚拟化层包括至少一个操作系统110和分配给至少一个操作系统110的多个虚拟资源,虚拟资源可包括而不限于多个虚拟处理器132a、132b、132c(总称为132)和虚拟盘142a、142b、142c(总称为142)。可将多个虚拟资源和操作系统110称为虚拟机106。虚拟机106可包括控制操作系统105,该控制操作系统105与管理器101通信,并用于执行应用以管理并配置计算装置100上的其他虚拟机。
现参考图1A,具体而言,管理器101可以以模拟可访问物理设备的操作系统的任何方式向操作系统提供虚拟资源。管理器101可以向任一数量的客户操作系统110a、110b(总称为110)提供虚拟资源。一些实施例中,计算装置100执行一种或多种管理器。这些实施例中,管理器可用于模拟虚拟硬件、划分物理硬件、虚拟化物理硬件并执行提供对计算环境的访问的虚拟机。管理器可包括由位于美国加利福尼亚州的Palo Alto的VMWare公司制造的这些程序、XEN管理器(一种开源产品,其开发由开源Xen.org协会监管)、由Microsoft公司提供的HyperV、VirtualServer或虚拟PC管理器或其他。一些实施例中,计算装置100执行创建客户操作系统可在其上执行的虚拟机平台的管理器,该计算装置100被称为宿主服务器。在这些实施例的一个中,例如,计算装置100是由位于美国佛罗里达州Fort Lauderdale的CitrixSystems公司提供的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上执行。一些实施例中,计算装置100a上的控制操作系统105a可经由管理器101a和管理器101b之间的通信与计算装置100b上的控制操作系统105b交换数据。这样,一个或多个计算装置100可以与一个或多个其他计算装置100交换关于资源池中可用的处理器和其他物理资源的数据。在这些实施例的一个中,该功能允许管理器管理分布在多个物理计算装置上的资源池。在这些实施例的又一个中,多个管理器管理在其中一个计算装置100上执行的一个或多个客户操作系统。
一个实施例中,控制操作系统105在被授权与至少一个客户操作系统110交互的虚拟机106上执行。另一个实施例中,客户操作系统110通过管理器101与控制操作系统105通信,以请求访问盘或网络。在又一个实施例中,客户操作系统110和控制操作系统105可通过由管理器101建立的通信信道通信,例如,通过由管理器101提供的多个共享存储器页面通信。
一些实施例中,控制操作系统105包括用于直接与由计算装置100提供的网络硬件通信的网络后端驱动器。在这些实施例的一个中,网络后端驱动器处理来自至少一个客户操作系统110的至少一个虚拟机请求。其他实施例中,控制操作系统105包括用于与计算装置100上的存储单元通信的块后端驱动器。在这些实施例的一个中,块后端驱动器根据从客户操作系统110接收的至少一个请求从存储单元读写数据。
一个实施例,控制操作系统105包括工具堆栈104。其他实施例中,工具堆栈104提供如下功能:和管理器101交互、和其他控制操作系统105(例如位于第二计算装置100b上)通信,或者管理计算装置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可以被部署为任意类型和形式的计算装置和/或在其上执行,例如能够与任意类型和形式的网络通信并且执行此处所描述的操作的计算机、网络装置或设备。图1B和1C描述了用于实施此处所描述的方法和系统的实施例的计算装置100的框图。如图1B和1C所示,计算装置100包括中央处理单元121和主存储器单元122。如图1B所示,计算装置100可包括存储装置128、安装装置116、网络接口118、I/O控制器123、显示装置124a-124n、键盘126和诸如鼠标的指示装置127。存储装置128可包括但不限于操作系统、软件和客户机代理120。如图1C所示,每个计算装置100也可包括另外的可选部件,例如存储器端口103、桥170、一个或多个输入/输出装置130a-130n(总的使用标号130表示)以及与中央处理单元121通信的高速缓存存储器140。
中央处理单元121是响应并处理从主存储器单元122取出的指令的任意逻辑电路。在一些实施例中,中央处理单元121由微处理器单元提供,例如:由位于美国加利福尼亚州Mountain View的Intel公司制造的微处理器单元;由位于美国伊利诺伊州Schaumburg的Motorola公司制造的微处理器单元;由位于美国加利福尼亚州Santa Clara的Transmeta公司制造的微处理器单元;RS/6000处理器,由位于美国纽约州White Plains的InternationalBusiness Machines公司制造的微处理器单元;或者由位于美国加利福尼亚州Sunnyvale的Advanced Micro Devices公司制造的微处理器单元。计算装置100可以基于这些处理器中的任意一种,或者能够按照这里所说明的那样运行的任意其它处理器。
主存储器单元122可以是能够存储数据并允许微处理器121直接访问任意存储位置的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、突发SRAM或同步突发SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页模式DRAM(FPM DRAM)、增强DRAM(EDRAM)、扩展数据输出DRAM(EDO DRAM)、突发扩展数据输出DRAM(BEDO DRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100SDRAM、双倍数据速率SDRAM(DDR SDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接RambusDRAM(DRDRAM)或铁电RAM(FRAM)。主存储器122可以基于上述存储器芯片的任意一种,或者能够像这里所说明的那样运行的任意其它可用存储器芯片。在图1B所示的实施例中处理器121通过系统总线150(在下面进行更详细的描述)与主存储器122进行通信。图1C描述了在其中处理器通过存储器端口103直接与主存储器122通信的计算装置100的实施例。例如,在图1C中主存储器122可以是DRDRAM。
图1C描述在其中主处理器121通过有时被称为背侧总线的次级总线直接与高速缓存存储器140通信的实施例。其他实施例中,主处理器121使用系统总线150与高速缓存存储器140通信。高速缓存存储器140通常有比主存储器122更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。在图1C所示的实施例中,处理器121通过本地系统总线150与各种I/O装置130进行通信。可以使用各种不同的总线将中央处理单元121连接到任意I/O装置130,包括VESA VL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O装置是视频显示器124的实施例,处理器121可以使用高级图形端口(AGP)与显示装置124通信。图1C描述了在其中主处理器121通过HYPERTRANSPORT、RAPIDIO、或INFINIBAND通信技术直接与I/O装置130b通信的计算机100的实施例。图1C也描述了在其中本地总线和直接通信相混合的实施例:处理器121使用本地互连总线与I/O装置130a通信同时直接与I/O装置130b通信。
计算装置100中可以有多种I/O装置130a-130n。输入装置包括键盘、鼠标、触控板、轨迹球、话筒、拨号盘和绘图板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机。如图1B所示,I/O装置可以由I/O控制器123控制。I/O控制器可以控制一个或多个I/O装置,例如键盘126和指示装置127(如鼠标或光笔)。此外,I/O装置还可以为计算装置100提供存储和/或安装介质116。在其它实施例中,计算装置100可以提供USB连接(未示出)以接收手持USB存储装置,例如由位于美国加利福尼亚州Los Alamitos的Twintech Industry公司生产的设备的USB闪存驱动线。
再次参考图1B,计算装置100可以支持任意适当的安装装置116,例如用于接收像3.5英寸、5.25英寸磁盘或ZIP磁盘这样的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、闪存驱动器、多种格式的磁带驱动器、USB设备、硬盘驱动器或适于安装软件和程序的任意其它设备。计算装置100还可以包括存储装置,诸如一个或者多个硬盘驱动器或者独立磁盘冗余阵列,用于存储操作系统和其它相关软件,以及用于存储诸如涉及客户机代理120的任意程序的应用软件程序。或者,可以使用安装装置116的任意一种作为存储装置。此外,操作系统和软件可从可引导介质运行,可引导介质例如是可引导CD,诸如KNOPPIX,其为一种用于GNU/Linux的可引导CD,可自knoppix.net作为GNU/Linux分发获得。
此外,计算装置100可以包括网络接口118以通过多种连接来与网络104对接,所述连接包括但不限于标准电话线路、LAN或WAN链路(例如802.11、T1、T3、56kb、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.11b、IEEE802.11g、CDMA、GSM、WiMax和直接异步连接)来建立连接。在一个实施例中,计算装置100可以通过任意类型和/或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS)协议,或由位于美国佛罗里达州Ft.Lauderdale的Citrix Systems公司制造的Citrix网关协议的隧道协议来与其他计算装置100’通信。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置100对接到能够通信并执行这里所说明的操作的任意类型的网络的任意其它设备。
在一些实施例中,计算装置100可以包括多个显示装置124a-124n或与其相连,这些显示装置各自可以是相同或不同的类型和/或形式。因而,任意一种I/O装置130a-130n和/或I/O控制器123可以包括任一类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算装置100连接和使用多个显示装置124a-124n。例如,计算装置100可以包括任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示装置124a-124n对接、通信、连接或以其他方式使用显示装置124a-124n。在一个实施例中,视频适配器可以包括多个连接器以与多个显示装置124a-124n对接。在其它实施例中,计算装置100可以包括多个视频适配器,每个视频适配器与显示装置124a-124n中的一个或多个连接。在一些实施例中,计算装置100的操作系统的任一部分都可以被配置用于使用多个显示器124a-124n。在其它实施例中,显示装置124a-124n中的一个或多个可以由一个或多个其它计算装置提供,诸如(例如通过网络)与计算装置100连接的计算装置100a和100b。这些实施例可以包括被设计和构造来使用另一个计算机的显示装置作为计算装置100的第二显示装置124a的任何类型的软件。本领域的普通技术人员会认识和意识到可以将计算装置100配置成拥有多个显示装置124a-124n的各种方式和实施例。
在进一步的实施例中,I/O装置130可以是系统总线150和外部通信总线之间的桥,所述外部通信总线如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线、串行SCSI总线或HDMI总线。
图1B和1C中所描述类型的计算装置100通常地在操作系统的控制下运行,操作系统控制任务的调度和对系统资源的访问。计算装置100可运行任一操作系统,诸如任一版本的MICROSOFT WINDOWS操作系统;不同发行版本的Unix和Linux操作系统;用于Macintosh计算机的MAC OS的任意版本;任意嵌入式操作系统;任意实时操作系统;任意开源操作系统;任意专有操作系统;任意用于移动计算装置的操作系统,或者能够在计算装置上运行且执行此处所描述的操作的任意其它操作系统。典型的操作系统包括但不限于:WINDOWS 3.x、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;以及由位于美国犹他州Salt LakeCity的Caldera公司发布的可免费使用的Linux操作系统或者任意类型和/或形式的Unix操作系统,以及其它。
计算机系统100可以是任意工作站、电话、台式计算机、膝上型或笔记本电脑、服务器、掌上电脑、移动电话或其他便携电信设备、媒体播放设备、游戏系统、移动计算装置,或能够通信的任意其它类型和/或形式的计算、电信或者媒体装置。计算机系统100有足够的处理器能力和存储容量以执行此处所述的操作。例如,计算机系统100可包括由位于美国加利福尼亚州Cupertino的苹果计算机公司出品的IPOD系列设备、由位于日本Tokyo的索尼公司出品的PLAYSTATION2、PLAYSTATION3或PERSONAL PLAYSTATIONPORTABLE(PSP)设备,由位于日本Kyoto的Nintendo有限公司出品的NINTENDO DS、NINTENDO GAMEBOY、NINTENDO GAMEBOY ADVANCED或NINTENDOREVOLUTION设备,或者由位于美国华盛顿州Redmond的微软公司出品的XBOX或XBOX 360设备。
在一些实施例中,计算装置100可以有不同的处理器、操作系统以及与该装置一致的输入设备。例如,在一个实施例中,计算装置100是由Palm公司出品的TREO180、270、600、650、680、700p、700w/wx、750、755p、800w、Centro或Pro智能电话。在这些实施例的一些中,TERO智能电话是在PalmOS操作系统的控制下操作并且包括笔输入设备以及五向导航设备。
在其他实施例中,计算装置100是移动设备,例如,JAVA使能蜂窝电话或个人数字助理(PDA),诸如i55sr、i58sr、i85s、i88s、i90c、i95c1、i335、i365、i570、I576、i580、i615、i760、i836、i850、i870、i880、i920、i930、ic502、ic602、ic902、i776或im1100,以上这些均由位于美国伊利诺伊州Schaumburg的摩托罗拉公司制造;由位于日本Kyoto的Kyocera公司制造的6035或7135;或者由位于韩国首尔的Samsung电子有限公司制造的i300或i330。在一些实施例中,计算装置100是由位于芬兰的诺基亚公司制造或由位于瑞典Lund的Sony Ericsson MobileCommunications AB公司制造的移动设备。
在其他实施例中,计算装置100是黑莓(Blackberry)手持或智能电话,诸如由Research In Motion有限公司制造的设备,包括黑莓7100系列、8700系列、7700系列、7200系列、黑莓7520、黑莓PERAL 8100、8700系列、8800系列、黑莓Storm、黑莓Bold、黑莓Curve 8900、黑莓Pearl Flip。在其他实施例中,计算装置100是智能电话、Pocket PC、Pocket PC电话,或支持Microsft Windows Mobile Software的其它手持移动设备。此外,计算装置100可以是任意工作站、台式计算机、膝上型或笔记本电脑、服务器、掌上电脑、移动电话、任意其它计算机、或能够通信并有足够的处理器能力和存储容量以执行此处所述操作的其它形式的计算或者电信设备。
在一些实施例中,计算装置100是数字音频播放器。在这些实施例的一个中,计算装置100是诸如由位于美国加利福尼亚州Cupertino的苹果计算机公司制造的Apple IPOD、IPOD Touch、IPOD NANO和IPOD SHUFFLE系列设备的数字音频播放器。在这些实施例的又一个中,数字音频播放器可作为便携媒体播放器和作为大容量存储装置来工作。在其他实施例中,计算装置100是诸如由位于美国新泽西州Ridgefield Park的Samsung ElectronicsAmerica公司制造的Digital Audio Player Select MP3播放器,或由位于美国伊利诺伊州Schaumburg的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 InMotion有限公司制造的黑莓设备。又一个实施例中,计算装置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的CitrixApplication Networking Group、位于美国加州Mountain View的SilverPeak Systems公司、位于美国加州San Francisco的Riverbed Technology公司、位于美国华盛顿州Seattle的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);X11协议;由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)通信有关的任意类型的软件。在进一步的实施例中,应用包括与实时数据通信有关的任何应用,例如用于流式传输视频和/或音频的应用。
一些实施例中,第一计算装置100a代表客户机计算装置100b的用户执行应用。其他实施例中,计算装置100a执行虚拟机,其提供执行会话,在该会话中,代表用户或客户机计算装置100b执行应用。一个这样的实施例中,执行会话是寄载的桌面会话。另一个这样的实施例中,计算装置100执行终端服务会话。终端服务会话可以提供寄载的桌面环境。在另一个这样的实施例中,执行会话提供对计算环境的访问,计算环境可包括以下的一个或多个:应用、多个应用、桌面应用以及在其中可执行一个或多个应用的桌面会话。
现参考图2A,框图描述了用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统的一个实施例。总的来说,该系统包括虚拟硬盘142、管理器101、表格260和多个链接文件265。多个链接文件265包括包含主文件262的增量的第一个文件和包含多个链接文件265中的前一文件的增量的各个后续文件。表格260列举在多个虚拟硬盘地址的每一个地址与主文件262和多个链接文件265中的包含存储在多个虚拟硬盘地址的其中一个地址上的数据的当前版本的文件的其中一个之间的关联。存储在物理计算装置100上的虚拟硬盘142存储主文件262、多个链接文件265和表格260。与虚拟硬盘142通信的管理器101拦截以虚拟硬盘地址访问数据的请求、基于表格260来识别包含所请求的数据的文件以及用对所请求的数据的访问来对该请求进行响应。
现参考图2A,更具体地,多个链接文件265包括包含主文件262的增量的第一个文件和包含多个链接文件265中的前一文件的增量的各个后续文件。一个实施例中,多个链接文件265是写时复制的虚拟盘映像的一个链。在又一个实施例中,该链中的每个文件包含从虚拟盘地址到文件偏移的映射。在又一个实施例中,该链中的文件与跟踪文件的哪个区域包含有效数据的元数据相关联。在一些实施例中,在虚拟机内执行的进程可能写入多个链接文件265中的最后一个文件。
在一些实施例中,多个链接文件265中的文件存储映像。在这些实施例的一个中,该文件是虚拟机映像。在这些实施例的又一个中,该文件是操作系统映像。其他实施例中,多个链接文件265中的文件不存储可执行的数据。在这些实施例的一个中,该文件是数据库。
现参考图2B,框图描述了多个链接文件265的一个实施例。如图2B所示,主文件262是多个链接文件265中的第一个文件。一个实施例中,主文件262可被称为原始文件。在一些实施例中,主文件262是只读的主文件。反映对主文件262的修改的增量文件是多个链接文件265中的第二个文件265a。如图2B所示,在一些实施例中,反映对增量文件265a的修改的增量文件265b被称为子文件265b,而增量文件265a被称为父文件265a。
在一个实施例中,访问多个链接文件中的子文件265b的进程具有读取和写入该文件的能力。在又一个实施例中,访问多个链接文件中的父文件265a的进程只具有读文件的能力。例如,在又一个实施例中,文件265a可允许读和写访问直到创建了新的增量文件265b为止;此时,该文件265可允许只读访问。一些实施例中,多个链接文件265中的最后一个文件对在虚拟机250中执行的进程是可写的。
现参考回到图2A,表格260列举在多个虚拟硬盘地址的每一个地址与主文件262和多个链接文件265中的包含存储在多个虚拟硬盘地址的其中一个地址上的数据的当前版本的文件的其中一个之间的关联。在一些实施例中,表格260被称为文件描述符表。
在一个实施例中,表格260具有存储文件标识符(文件ID)、文件路径、文件访问和虚拟硬盘文件的通用唯一标识符(UUID)的数据结构。在又一个实施例中,表格260中的每一行代表多个链接文件265中的一个文件。在一些实施例中,一个文件描述符表260存储与多个链接文件265中的每个文件关联的数据。其他实施例中,为多个链接文件提供多个表格260。进一步的实施例中,表格260可包括头部,所述头部识别用于验证表格260的一致性以及用于定位与表格260关联的文件或表格的至少一个字段。在这些实施例的一个中,UUID和时间戳字段也提供可用于确认表格260中的数据的一致性的数据。
在一个实施例中,表格260中的文件ID指定多个链接文件265中的一个文件的唯一标识符。又一个实施例中,表格260中的文件路径指定由虚拟硬盘142提供的文件系统中的文件的位置。在又一个实施例中,表格260中的文件访问时间指定具有所指出的文件ID的文件被计算装置100上的进程修改的时间;例如,在与虚拟硬盘142关联的虚拟机250中执行的进程。在又一个实施例中,表格260中的虚拟硬盘地址是嵌入在虚拟硬盘元数据和说明中的唯一标识符。
在一些实施例中,提供第二表格,其指定表格260的文件ID以及指定识别虚拟硬盘的扇区的偏移。虚拟硬盘的扇区可以是例如由虚拟硬盘存储的512字节的数据。在这些实施例的一个中,该偏移识别存储所识别的文件中的数据的虚拟硬盘的分区。在这些实施例又一个中,第二表格被称为块描述符表。在这些实施例的又一个中,块描述符表由多个逻辑块组成,其各自表示虚拟硬盘142的一个区域;例如,多个逻辑块中的一个逻辑块可表示虚拟硬盘142的2MB的连续区域。在这些实施例的又一个中,对多个链接文件265中的每个文件产生块描述符表。在其他实施例中,一个块描述符表存储与多个链接文件中的每个文件关联的数据。在进一步的实施例中,多个块描述符表与多个链接文件265相关联。
在一些实施例中,提供两个表格:表格260和块描述符表。在这些实施例的一个中,提供第二表格的结果是对于块描述符表中的每个块存储文件标识符,而不是文件的完整路径名,其结果是可减小表格260的大小。在这些实施例的又一个中,表格260提供改善的能力以增加或删除或以其他方式修改表格260的条目。
在其他实施例中,提供第三表格,其识别虚拟硬盘地址的至少一个范围。在这些实施例的一个中,第三表格是将虚拟硬盘地址的范围映射到由第二表格指定的偏移的数组。在这些实施例的又一个中,例如,该数组将虚拟扇区地址的2MB的区域映射到由块描述符表识别的偏移。在这些实施例的又一个中,第三表格被称为块分配表。在这些实施例的又一个中,例如,块分配表的每一行指向在块描述符表中为2MB区域的数据识别的字节偏移。在一些实施例中,一个块分配表存储与多个链接文件中的每个文件关联的数据。在进一步的实施例中,多个块分配表与多个链接文件265相关联。
下面是表格260的一个实施例的例子:
  文件ID   文件路径   时间   VHD UUID
  1   /root/grandparent.vhd   12:30   <uuid>
  2   /root/parent.vhd   02:15   <uuid>
下面是与上面的表格260的例子关联的块描述符表的一个实施例的例子:
块描述符表:
  文件ID   VHD文件中的偏移
(第一块:)
  1   0x2200   (块描述表中的字节偏移0x00000)
  1   0x2200   (块描述表中的字节偏移0x00008)
  NULL(空)   NULL   (块描述表中的字节偏移0x00010)
(第二块:)
  1   0x4000   (块描述表中的字节偏移0x08000)
  2   0x7200   (块描述表中的字节偏移0x08008)
  2   0x7400   (块描述表中的字节偏移0x08010)
(第三块:)
  2   0x8400   (块描述表中的字节偏移0x10000)
  2   0x8600   (块描述表中的字节偏移0x10008)
  2   0x8800   (块描述表中的字节偏移0x10010)
(第四块:)
  2   0x0000   (块描述表中的字节偏移0x18000)
  2   0x0200   (块描述表中的字节偏移0x18008)
  2   0x0400   (块描述表中的字节偏移0x18010)
下面是与上文的表格260和块描述符表的例子关联的块分配表的一个实施例的例子:
对于多个链接文件265中的原始文件(Grandparent File)的块分配表:
  0x00000   (逻辑块0)
  0x08000   (逻辑块1)
  NULL   (逻辑块2)
  NULL   (逻辑块3)
对于多个链接文件265中的父文件(Parent File)的块分配表:
  0x00000   (逻辑块0)
  0x08000   (逻辑块1)
  0x10000   (逻辑块2)
  0x18000   (逻辑块3)
在上面的例子中,在块分配表和块描述表中的NULL区域指示没有有效数据被写入到对应的逻辑扇区地址;在这些例子中返回零。在一个实施例中,块分配表中的NULL区域不必由块描述符表来表示,这可节约资源。在又一个实施例中,文件描述符表260的副本被存储在高速缓存中。在又一个实施例中,块分配表的副本被存储在高速缓存中。在又一个实施例中,对于多个链接文件中的第一个文件的块分配表的副本被存储在高速缓存中。在又一个实施例中,一组最近使用最少的块描述符表中的数据块被存储在计算装置100的随机存储存储器(RAM)中。
一些实施例中,表格260以及所提供的任何关联的表格的使用的结果是优化了识别存储文件的当前(最近被修改的)版本的文件的过程。
一个实施例中,文件描述符表260和块描述符表是在全部的多个链接文件间共享的,而每个块分配表专用于其对应的文件;这使得该索引同时服务于多个活动的虚拟硬盘。在又一个实施例中,对于块描述符表和块分配表使用分开的文件也使得不必无效先前文件的条目就可以修改表格260;在这个实施例中,表格260本身以写时复制的方式进行修改。在又一个实施例中,通过继续使用较旧的块分配表,可以在后台更新表格260。
存储在物理计算装置100上的虚拟硬盘142存储主文件262、多个链接文件265和表格260。在一个实施例中,管理器101提供虚拟硬盘142。其他实施例中,管理器101将虚拟硬盘142提供为初始化和执行虚拟机250的进程的一部分。
一个实施例中,与虚拟硬盘142通信的管理器101拦截以虚拟硬盘地址访问数据的请求、基于表格260来识别包含所请求的数据的文件以及用对所请求的数据的访问来对该请求进行响应。又一个实施例中,管理器101包括拦截以虚拟硬盘地址访问数据的请求以及基于表格260识别包含所请求的数据的文件的组件。一些实施例中,管理器101包括拦截和转换功能,这些功能允许管理器101拦截来自虚拟机的对物理盘的访问请求,以及将该请求中包括的地址转换为物理盘能够处理的地址格式。在这些实施例的一个中,拦截和转换功能被修改为包括拦截以虚拟硬盘地址访问数据的请求、基于表格260来识别包含所请求的数据的文件以及用对所请求的数据的访问来对该请求进行响应的功能。在这些实施例又一个中,拦截和转换功能被称为块抽头(block tap)模块。
在一个实施例中,提供产生表格260的实用程序。在又一个实施例中,实用程序提供用于在表格260中增加条目的功能。在又一个实施例中,实用程序提供用于更新表格260中的条目的功能。在又一个实施例中,实用程序提供用于向用户显示表格260的功能。在又一个实施例中,实用程序存储所产生的或修改的表格;例如,实用程序可将表格260存储在虚拟盘142中。一些实施例中,实用程序给管理器提供用于当新的文件被加入到多个链接文件265时,通过将多个链接文件265中的文件与虚拟硬盘地址相关联来更新表格中的条目的功能。
一些实施例中,虚拟机250包括用于产生和维护表格260的实用程序。其他实施例中,实用程序作为多个磁盘管理工具中的一个被安装在计算装置100上。在其他实施例中,用户指定虚拟硬盘是否应访问表格260。在其他实施例中,与管理器101通信的控制操作系统105执行该实用程序。其他实施例中,实用程序是命令行实用程序。进一步的实施例中,实用程序提供图形用户接口。
现参考图3,流程图描述了用于优化确定由虚拟硬盘地址标识的数据位置的过程的方法的一个实施例。总的来说,该方法包括由物理计算装置上存储的虚拟硬盘存储主文件和多个链接文件,所述多个链接文件中的第一个文件包括主文件的增量并且每个后续文件包括所述多个链接文件中的前一文件的增量(302)。该方法包括维护将多个虚拟硬盘地址的每一个地址与多个链接文件中的包含存储在多个虚拟硬盘地址的其中一个地址上的数据的当前版本的文件关联的表格(304)。该方法包括拦截以虚拟硬盘地址访问数据的请求(306)。该方法包括基于该表格识别包含所请求的数据的当前版本的文件(308)。该方法包括响应于所拦截的请求,提供对来自所识别的文件的所寻址的数据的访问(310)。一些实施例中,提供在其上具有指令的计算机可读介质,当执行所述指令时,提供用于优化确定由虚拟硬盘地址标识的数据的位置的过程的方法。
现参考图3,更具体地,物理计算装置上存储的虚拟硬盘存储主文件和多个链接文件,所述多个链接文件中的第一个文件包括主文件的增量并且每个后续文件包括所述多个链接文件中的前一文件的增量(302)。维护将多个虚拟硬盘地址的每一个地址与多个链接文件中的包含存储在多个虚拟硬盘地址的其中一个地址上的数据的当前版本的文件关联的表格(304)。在一个实施例中,该表格是如上所述的文件描述表格260。在又一个实施例中,表格260被称为索引。在又一个实施例中,实用程序组件产生和维护表格260。在一些实施例中,表格260将虚拟硬盘地址关联到既不是主文件也不是多个链接文件中的文件的文件。在这些实施例的一个中,虚拟硬盘地址与已经被复制到至少一个虚拟硬盘上的至少一个块相关联。
在一个实施例中,当新文件被加入到多个链接文件265中时,对表格260进行更新。在又一个实施例中,当创建了该新文件时,改变对之前是多个链接文件265中的最后一个文件的文件的修改的授权,使得该文件成为只读文件,而该新文件被修改为允许读-写访问。在又一个实施例中,与新文件关联的元数据被用于为包含数据的文件的至少一个区域创建块描述符表中的条目。在又一个实施例中,表示该文件的新的条目被加入表格260中。在又一个实施例中,为该新文件创建块分配表。在一些实施例中,通过将多个链接文件265中的文件与虚拟硬盘地址相关联来更新表格260中的条目。在其他实施例中,与和图2A有关的上文所描述的实用程序更新表格260。
下面是更新表格260所采取的步骤的一个实施例的例子:一个实施例中,实用程序将产生新的文件描述符表,例如:
  文件ID   文件路径   时间   VHD UUID
  1   /root/grandparent.vhd   12:30   <uuid>
  2   /root/parent.vhd   02:15   <uuid>
  3   /root/child.vhd   06:44   <uuid>
在又一个实施例中,例如,通过克隆parent.vhd的块分配表并覆盖所克隆的表中的至少一行(其对应于包含有效数据的child.vhd中的至少一个区域)来为child.vhd创建块分配表。
  0x20000   (逻辑块0)
  0x08000   (逻辑块1)
  0x10000   (逻辑块2)
  0x18000   (逻辑块3)
在又一个实施例中,新的块被附加到描述child.vhd的逻辑块0的块描述符表:
(块描述符表的第五块)
 3   0x0000   (块描述表中的字节偏移0x20000)
 3   0x0200   (块描述表中的字节偏移0x20008)
 3   0x0400   (块描述表中的字节偏移0x20010)
拦截以虚拟硬盘地址访问数据的请求(306)。在一个实施例中,管理器101拦截访问数据的请求。在又一个实施例中,管理器101拦截来自虚拟机的访问由物理盘228存储的数据的请求。
在一些实施例中,拦截写文件的请求。在这些实施例的一个中,请求被重定向到多个链接文件中的最后一个文件。其他实施例中,请求是来自在包括虚拟硬盘142的虚拟机内执行的进程的输入/输出请求。在其他实施例中,拦截复制、打开、读取或以其他方式访问文件的数据而不修改原文件的请求。在这些实施例的一个中,访问表格260以确定多个链接文件265中的最后一个文件是否存储文件的当前(最近被更新的)版本,或者多个链接文件265中的另一个文件是否存储该数据。
基于表格来识别包含所请求的数据的当前版本的文件(308)。在一个实施例中,管理器101识别包含该数据的文件。在又一个实施例中,管理器包含组件,所述组件访问表格260以识别多个链接文件265中的哪个文件存储所请求的数据。在一些实施例中,管理器101确定所请求的数据的当前版本没有被存储在多个链接文件中的最后一个文件中。在这些实施例的一个中,响应于该确定,管理器101基于表格260来识别多个链接文件265中的包含该数据的当前版本的文件。
响应于所拦截的请求,提供对来自所识别的文件的所寻址的数据的访问(310)。一些实施例中,虚拟硬盘142维护多个打开的文件,使这些文件可用于客户操作系统110的访问,从而最小化提供该访问所需的时间。其他实施例中,基于在表格260搜索所寻址的数据的结果,管理器101上的组件代表虚拟机请求对文件的访问。
一个实施例中,例如,为了找到存储数据的文件,管理器101识别多个链接文件265中的文件的扇区位置(例如“扇区1”),在这个例子中,其形成虚拟硬盘142。在又一个实施例中,管理器101评估文件child.vhd(多个链接文件265中的最后一个文件)以确定它是否包含扇区1的有效数据以及确定如果包含有效数据则返回该数据值。然而,在又一个实施例中,child.vhd文件不包含有效数据。在这个实施例中,管理器101在对应于扇区1的块分配表中识别parent.vhd文件(在多个链接文件265中的child.vhd文件之前的文件)的索引。在又一个实施例中,管理器101确定从parent.vhd块分配表项目0的偏移,其指向包含文件parent.vhd的扇区1的映射的块描述符表的2MB的块(在本例中,字节偏移0x00)。在又一个实施例中,管理器101从块描述符表读取文件标识符和偏移并且从对应于从块描述符表提取的文件标识符的文件描述符表读取文件路径。如上所示的示例表格中,得到的路径将是到文件的路径(/root/grandparent.vhd)和所请求的数据位于该文件中的偏移(0x2400)。又一个实施例中,通过访问表格260来识别存储所请求的数据的最新版本的文件,管理器执行单次查找而不是n次查找,其中n是多个链接文件265中文件的数量;这导致更有效的、更优化的文件识别过程。
应该理解,此处描述的系统可提供多个组件或每个组件并且这些组件或者可以在单独机器上提供,或者在一些实施例中,可在分布式系统的多个机器上提供。此外,上述系统和方法可作为一件或多件产品上所体现的或在其中的一个或多个计算机可读程序而被提供。所述产品可以是软盘、硬盘、CD-ROM,闪存卡、PROM、RAM、ROM或磁带。通常,计算机可读程序可以任何编程语言来实现,如LISP、PERL、C、C++、C#、PROLOG,或者诸如JAVA的任何字节码语言。软件程序可以作为目标代码被存储在一件或多件产品上或其中。
已经描述了用于优化确定由虚拟硬盘地址标识的数据位置的过程的方法和系统的某些实施例,对本领域技术人员而言,显而易见可以使用包含所述公开内容的概念的其他实施例。本发明应该不限于某些实施例,而是应由下列权利要求的精神和范围进行限制。

Claims (10)

1.一种用于优化确定由虚拟硬盘地址标识的数据位置的过程的方法,所述方法包括:
由在物理计算装置上存储的虚拟硬盘存储主文件和多个链接文件,所述多个链接文件中的第一个文件包括主文件的增量而且每个后续文件包括所述多个链接文件中的前一文件的增量;
维护表格,所述表格将多个虚拟硬盘地址的每一个地址与多个链接文件中的包含存储在所述多个虚拟硬盘地址的其中一个地址上的数据的当前版本的文件相关联;
拦截以虚拟硬盘地址访问数据的请求;
基于所述表格来识别包含所请求的数据的文件;以及
响应于所拦截的请求,提供对来自所识别的文件的所请求的数据的访问。
2.根据权利要求1所述的方法,还包括当新的文件被加入到多个链接文件时,通过将多个链接文件中的文件与虚拟硬盘地址相关联来更新所述表格中的条目。
3.根据权利要求1所述的方法,其中所述识别步骤包括:
确定所请求的数据的当前版本没有被存储在多个链接文件中的最后一个文件中;以及
响应于所述确定,基于所述表格来识别多个链接文件中的包含数据的当前版本的文件。
4.根据权利要求1所述的方法,其中所述表格还将第二多个虚拟硬盘地址的每一个地址关联到既不是主文件也不是多个链接文件中的包含所述地址上的数据的当前版本的文件的至少一个文件。
5.根据权利要求4所述的方法,其中所述至少一个文件包括在至少一个虚拟硬盘上复制的一个或多个块。
6.一种用于优化确定由虚拟硬盘地址标识的数据位置的过程的装置,所述装置包括:
用于由在物理计算装置上存储的虚拟硬盘存储主文件和多个链接文件的模块,所述多个链接文件中的第一个文件包括主文件的增量而且每个后续文件包括所述多个链接文件中的前一文件的增量;
用于维护表格的模块,所述表格将多个虚拟硬盘地址的每一个地址与多个链接文件中的包含存储在所述多个虚拟硬盘地址的其中一个地址上的数据的当前版本的文件相关联;
用于拦截以虚拟硬盘地址访问数据的请求的模块;
用于基于所述表格来识别包含所请求的数据的文件的模块;以及
用于响应于所拦截的请求,提供对来自所识别的文件的所请求的数据的访问的模块。
7.根据权利要求6所述的装置,还包括用于当新的文件被加入到多个链接文件时,通过将多个链接文件中的文件与虚拟硬盘地址相关联来更新所述表格中的条目的模块。
8.根据权利要求6所述的装置,其中用于识别的模块包括:
用于确定所请求的数据的当前版本没有被存储在多个链接文件中的最后一个文件中的模块;以及
用于响应于所述确定,基于所述表格来识别多个链接文件中的包含数据的当前版本的文件的模块。
9.根据权利要求6所述的装置,其中所述表格还将第二多个虚拟硬盘地址的每一个地址关联到既不是主文件也不是多个链接文件中的包含所述地址上的数据的当前版本的文件的至少一个文件。
10.根据权利要求9所述的装置,其中所述至少一个文件包括在至少一个虚拟硬盘上复制的一个或多个块。
CN200980157201XA 2008-12-23 2009-11-30 用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统和方法 Active CN102334114B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/342861 2008-12-23
US12/342,861 US8132168B2 (en) 2008-12-23 2008-12-23 Systems and methods for optimizing a process of determining a location of data identified by a virtual hard drive address
PCT/US2009/066061 WO2010074884A1 (en) 2008-12-23 2009-11-30 Systems and methods for optimizing a process of determining a location of data identified by a virtual hard drive address

Publications (2)

Publication Number Publication Date
CN102334114A CN102334114A (zh) 2012-01-25
CN102334114B true CN102334114B (zh) 2013-09-25

Family

ID=41581039

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980157201XA Active CN102334114B (zh) 2008-12-23 2009-11-30 用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统和方法

Country Status (4)

Country Link
US (1) US8132168B2 (zh)
EP (1) EP2370916A1 (zh)
CN (1) CN102334114B (zh)
WO (1) WO2010074884A1 (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2010097933A1 (ja) * 2009-02-27 2012-08-30 富士通株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
US8140735B2 (en) * 2010-02-17 2012-03-20 Novell, Inc. Techniques for dynamic disk personalization
US9928091B2 (en) * 2010-09-30 2018-03-27 Microsoft Technology Licensing, Llc Techniques for streaming virtual machines from a server to a host
US9038066B2 (en) * 2010-12-22 2015-05-19 Vmware, Inc. In-place snapshots of a virtual disk configured with sparse extent
CN103034453B (zh) * 2011-09-30 2015-11-25 国际商业机器公司 管理虚拟机实例中预安装应用的持久数据的方法和装置
US20130219069A1 (en) * 2012-02-22 2013-08-22 Computer Associates Think, Inc. System and method for managing virtual hard disks in cloud environments
US9628438B2 (en) 2012-04-06 2017-04-18 Exablox Consistent ring namespaces facilitating data storage and organization in network infrastructures
US8819090B2 (en) 2012-04-23 2014-08-26 Citrix Systems, Inc. Trusted file indirection
CN103685408A (zh) * 2012-09-18 2014-03-26 英业达科技有限公司 以存储区域网络提供读取基础镜像的服务器、主机及方法
US20140280377A1 (en) * 2013-03-14 2014-09-18 Scribestar Ltd. Systems and methods for collaborative document review
US9552382B2 (en) 2013-04-23 2017-01-24 Exablox Corporation Reference counter integrity checking
US9514137B2 (en) 2013-06-12 2016-12-06 Exablox Corporation Hybrid garbage collection
JP2016526720A (ja) 2013-06-19 2016-09-05 エグザブロックス・コーポレーション クラスタベースの記憶システムにおけるデータスクラビング
US9934242B2 (en) 2013-07-10 2018-04-03 Exablox Corporation Replication of data between mirrored data sites
WO2015054664A1 (en) * 2013-10-11 2015-04-16 Exablox Corporation Hierarchical data archiving
US10248556B2 (en) 2013-10-16 2019-04-02 Exablox Corporation Forward-only paged data storage management where virtual cursor moves in only one direction from header of a session to data field of the session
CN103617175A (zh) * 2013-11-04 2014-03-05 广东电子工业研究院有限公司 一种用于大规模分布异构数据的虚拟化方法
US9985829B2 (en) 2013-12-12 2018-05-29 Exablox Corporation Management and provisioning of cloud connected devices
US9774582B2 (en) 2014-02-03 2017-09-26 Exablox Corporation Private cloud connected device cluster architecture
WO2015120071A2 (en) 2014-02-04 2015-08-13 Exablox Corporation Content based organization of file systems
US9684567B2 (en) 2014-09-04 2017-06-20 International Business Machines Corporation Hypervisor agnostic interchangeable backup recovery and file level recovery from virtual disks
JP6072352B2 (ja) * 2014-11-01 2017-02-01 株式会社シー・オー・コンヴ ディスク配信システム
CN105893171B (zh) * 2015-01-04 2019-02-19 伊姆西公司 存储设备中用于故障恢复的方法和装置
US9852028B2 (en) * 2015-04-21 2017-12-26 International Business Machines Corporation Managing a computing system crash
US10474654B2 (en) 2015-08-26 2019-11-12 Storagecraft Technology Corporation Structural data transfer over a network
US9846553B2 (en) 2016-05-04 2017-12-19 Exablox Corporation Organization and management of key-value stores
US10866912B2 (en) 2017-03-10 2020-12-15 Toshiba Memory Corporation Integrated heterogeneous solid state storage drive

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5806078A (en) * 1994-06-09 1998-09-08 Softool Corporation Version management system
US6374268B1 (en) * 1998-04-14 2002-04-16 Hewlett-Packard Company Methods and systems for an incremental file system
CN1873622A (zh) * 2006-04-20 2006-12-06 北京艾德斯科技有限公司 San环境下数据备份、复制和恢复的方法及其装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5729735A (en) * 1995-02-08 1998-03-17 Meyering; Samuel C. Remote database file synchronizer
US5870757A (en) * 1995-09-11 1999-02-09 Sun Microsystems, Inc. Single transaction technique for a journaling file system of a computer operating system
WO2001093263A1 (en) * 2000-05-31 2001-12-06 Matsushita Electric Industrial Co., Ltd. Information recording medium, information recording method, information recording apparatus, information reproducing method, and information reproducing apparatus
US6735601B1 (en) * 2000-12-29 2004-05-11 Vmware, Inc. System and method for remote file access by computer
US7257584B2 (en) * 2002-03-18 2007-08-14 Surgient, Inc. Server file management
US7281124B2 (en) * 2004-06-17 2007-10-09 Intel Corporation Establishing a virtual drive accessible to pre-boot and operating system runtime phases
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US7647468B2 (en) * 2005-12-09 2010-01-12 Microsoft Corporation Compaction, de-fragmentation, and merging of virtual storage device of virtual machine
US20080005195A1 (en) * 2006-06-30 2008-01-03 Microsoft Corporation Versioning synchronization for mass p2p file sharing
US8589341B2 (en) * 2006-12-04 2013-11-19 Sandisk Il Ltd. Incremental transparent file updating
EP1933248A1 (de) * 2006-12-12 2008-06-18 secunet Security Networks Aktiengesellschaft Verfahren zur sicheren Datenverarbeitung auf einem Computersystem
US9563640B2 (en) * 2007-02-09 2017-02-07 Micro Focus Software Inc. Techniques for versioning files
US8365167B2 (en) * 2008-04-15 2013-01-29 International Business Machines Corporation Provisioning storage-optimized virtual machines within a virtual desktop environment
US8032680B2 (en) * 2008-06-27 2011-10-04 Microsoft Corporation Lazy handling of end of interrupt messages in a virtualized environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5806078A (en) * 1994-06-09 1998-09-08 Softool Corporation Version management system
US6374268B1 (en) * 1998-04-14 2002-04-16 Hewlett-Packard Company Methods and systems for an incremental file system
CN1873622A (zh) * 2006-04-20 2006-12-06 北京艾德斯科技有限公司 San环境下数据备份、复制和恢复的方法及其装置

Also Published As

Publication number Publication date
EP2370916A1 (en) 2011-10-05
CN102334114A (zh) 2012-01-25
WO2010074884A1 (en) 2010-07-01
US8132168B2 (en) 2012-03-06
US20100162239A1 (en) 2010-06-24

Similar Documents

Publication Publication Date Title
CN102334114B (zh) 用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统和方法
CN102257481B (zh) 用于由管理程序控制对物理资源的访问的系统和方法
CN102317909A (zh) 便于在多个物理机器间迁移虚拟机的系统和方法
CN102272726B (zh) 便于异构处理器池虚拟化的系统和方法
CN102804140B (zh) 用于将设备驱动程序导入到客户计算环境中的方法和系统
CN107209681B (zh) 一种存储设备访问方法、装置和系统
CN102292698B (zh) 用于在云计算环境中自动管理虚拟资源的系统和方法
CN102257479A (zh) 用于优化运行至少一个进程的虚拟机的配置的系统和方法
CN102971706B (zh) 将信息从安全虚拟机重定向到不安全虚拟机
CN102754091B (zh) 用于生成在本地机器上和远程机器上生成的任务栏按钮组条目的组合显示的方法和系统
US8032883B2 (en) Controlling access from the virtual machine to a file
TW201246072A (en) Direct sharing of smart devices through virtualization
US9122414B2 (en) Methods and systems for optimizing a process of archiving at least one block of a virtual disk image
CN114691300A (zh) 一种虚拟机实例的热迁移方法
CN114153779A (zh) 一种i2c通信方法、系统、设备、及存储介质
CN104487932B (zh) 用于远程应用和桌面的语音识别支持
US9208073B2 (en) Firmware storage and maintenance
CN102754092B (zh) 用于优化对虚拟盘映像的至少一个块进行归档的过程的方法和系统
CN118605996A (zh) 基于模拟器的双核异构系统构建方法和装置、设备及介质
Yang Programming for I/O and Storage

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant