从服务器到主机的流虚拟机技术的制作方法

文档序号:6435412阅读:157来源:国知局
专利名称:从服务器到主机的流虚拟机技术的制作方法
技术领域
本发明涉及虚拟机,尤其是从服务器到主机的流虚拟机。
背景技术
虚拟机平台通过在每一操作系统自己的虚拟机内运行该操作系统来允许多个客操作系统在物理机上的同时执行。可以在虚拟机中提供的一个示例性服务是虚拟桌面会话。虚拟桌面会话在本质上是在虚拟机内运行的将其用户界面发送到远程计算机的个人计算机环境。为了虚拟化桌面,操作系统以及用户的程序和数据的全部被封装在虚拟硬盘文件(VHD)中,该虚拟硬盘文件随后由虚拟机中的虚拟处理器执行并由远程客户机设备访问。这一体系结构类似于远程桌面环境,但不是使多个用户同时连接到操作系统,而是每个用户能够访问在虚拟桌面环境里的虚拟机中执行的他们自己的操作系统。当在数据中心中部署虚拟桌面时,通常在诸如存储区域网络(SAN)目标的集中式存储服务器上部署虚拟硬盘文件,并且虚拟主机从SAN目标中读取虚拟硬盘文件。该部署允许虚拟桌面在数据中心的任意虚拟主机上被动态地实例化。SAN目标使诸如磁盘的逻辑单元号(LUN)通过高速网络对虚拟主机可用,并且与网络附连存储不同,SAN目标不作为对虚拟主机的远程存储出现。但是,SAN目标是昂贵的,并且如果可以使用(带有低价的集中存储的)商用服务器来集中地部署虚拟硬盘文件将是有益的。

发明内容
示例性实施例描述了用于将虚拟硬盘驱动器部署到虚拟机主机的系统。在所示实施例中,系统可包括但不限于第一服务器,该第一服务器被配置为执行存储在第二服务器上的虚拟硬盘文件集合的客操作系统;在执行虚拟硬盘文件集合的客操作系统的同时,将虚拟硬盘文件集合的已接收副本存储到附连于第一服务器的存储设备中;并且响应于确定虚拟硬盘文件集合的副本存储在附连于第一服务器的存储设备中,执行虚拟硬盘文件集合的客操作系统。除以上之外,权利要求书具体实施方式
和附图中描述了其他技术。除计算机系统以外,示例性实施例提供了将虚拟硬盘驱动器部署到虚拟机主机的操作过程。示例性操作过程包括但不限于,从存储在第二服务器中的机器差异虚拟硬盘文件和存储在附连于第一服务器的存储设备中的主虚拟硬盘文件引导客操作系统,其中主虚拟硬盘文件包括操作系统的副本,并且机器差异虚拟硬盘文件包括用于为用户定制操作系统的副本的机器识别信息;在同时引导客操作系统时,从第二服务器下载机器差异虚拟硬盘文件的副本;并且,响应于确定机器差异虚拟硬盘文件的副本已被下载,从机器差异虚拟硬盘文件的副本和主虚拟硬盘文件执行客操作系统。除以上之外,权利要求书具体实施方式
和附图中描述了其他技术。在另一个示例中,包括可用于将虚拟硬盘驱动器部署到虚拟机主机的可执行指令的计算机可读存储介质。示例性计算机可读存储介质可包括在执行时使虚拟主机执行以下动作的指令将客操作系统从虚拟硬盘文件集合引导到虚拟机,其中集合的第一部分被存储到附连于第一服务器的存储设备上,第二部分被存储到第二服务器上;在引导客操作系统时,下载集合第二部分的至少子部分;并且响应于确定集合第二部分的至少子部分被下载到附连于第一服务器的存储设备,执行附连于第一服务器的存储设备上的客操作系统。除以上之外,权利要求书具体实施方式
和附图中描述了其他技术。本领域技术人员将理解,此处所描述的一个或多个方面可包括但不限于用于实现此处所引用的方面的线路和/或编程;该线路和/或编程实质上可以是配置成实现本文所述方面的硬件、软件和/或固件的任何组合,这取决于系统设计者的设计选择。以上是概述,并且因此必然包含细节的简化、一般化及省略。本领域技术人员将明白,本概述只是说明性的并且决不旨在是限制性的。


图1描述了示例计算机系统。
图2描绘了描述示例性虚拟平台的操作环境。
图3描绘了描述示例性虚拟平台的操作环境。
图4描绘了数据中心的高级框图。
图5描绘了虚拟主机和VHD存储服务器的高级框图。
图6描绘了虚拟主机和VHD存储服务器的高级框图。
图7描绘了虚拟主机和VHD存储服务器的高级框图。
图8描绘了虚拟主机和VHD存储服务器的高级框图。
图9描绘了两个虚拟主机和VHD存储服务器的高级框图。
图10描绘了操作过程。
图11描绘了图10的操作过程的替换实施例。
图12描绘了操作过程。
图13描绘了图12的操作过程的替换实施例。
图14描绘了操作过程。
图15描绘了图14的操作过程的替换实施例。
具体实施例方式本发明可使用一个或多个计算机系统。图1及以下讨论旨在提供可在其中实现所公开的主题的合适计算环境的简要概括描述。贯穿本说明书使用的术语线路可包括诸如硬件中断控制器、硬盘驱动器、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件。术语线路还可包括由固件和/或软件来配置的微处理器、应用程序专用集成线路、以及处理器,例如多核通用处理单元的核(被配置为读取并执行指令的单元)。处理器可由从例如RAM、R0M、固件和/或大容量存储等存储器加载的指令来配置,从而具体化可用于配置处理器来执行功能的逻辑。在其中线路包括硬件和软件的组合的示例实施例中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由硬件执行的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件实现的功能或软件实现的功能之间几乎没有差别的地步,因而选择硬件还是软件来实现此处描述的功能只是一个设计选择。换言之,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现留给了实现者。现在参考图1,描绘了示例性计算系统100。计算机系统100可包括处理器102, 例如,执行核。尽管示出了一个处理器102,但在其他实施例中,计算机系统100可具有多个逻辑处理器,例如每一处理器衬底有多个执行核,和/或各自可具有多个执行核的多个处理器衬底。如图1所示,各种计算机可读存储介质110可由一个或多个系统总线互连, 系统总线将各种系统组件耦合到处理器102。系统总线可以是几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。在示例实施例中,计算机可读存储介质110可以包括例如随机存取存储器 (RAM) 104、存储设备106(例如电机硬盘驱动器、固态硬盘驱动器等)、固件108(例如闪速 RAM或ROM)、以及可移动存储设备118 (例如CD-ROM、软盘、DVD、闪速驱动器、外部存储设备等)。本领域的技术人员应当理解,可使用其他类型的计算机可读存储介质,如磁带盒、闪存卡、和/或数字视频盘。计算机可读存储介质110可提供对计算机100的处理器可执行指令122、数据结构、程序模块和其他数据的非易失性和易失性存储。基本输入/输出系统(BIOS) 120可被存储在固件108中,它包含帮助在诸如启动期间在计算机系统100内的各元件之间拷贝信息的基本例程。包括操作系统和/或应用程序的多个程序可被存储在固件108、存储设备 106、RAM 104和/或可移动存储设备118上,并且可由处理器102来执行。命令和信息可由计算机100通过输入设备116来接收,输入设备可包括但不限于键盘和指向设备。其他输入设备可以包括话筒、操纵杆、游戏垫、扫描仪等等。这些和其他输入设备常通过耦合到系统总线的串行端口接口连接到处理器102,但也可通过其他接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器或其他类型的显示设备也可经由诸如视频适配器等可以是图形处理单元112的一部分或可连接到图形处理器单元112的接口来连接到系统总线。除显示器之外,计算机通常包括其他外围输出设备,如扬声器和打印机(未示出)。图1的示例性系统还可包括主适配器、小型计算机系统接口(SCSI)总线和连接到SCSI总线的外部存储设备。计算机系统100可使用至一个或多个远程计算机,如远程计算机的逻辑连接在网络化环境中操作。远程计算机可以是另一计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点,并且通常包括上面关于计算机系统100所述的许多或全部元件。当在LAN或WAN联网环境中使用时,计算机系统100可通过网络接口卡114连接至LAN或WAN。NIC 114可以是内置或外置的,其可以连接到系统总线。在联网环境中,相对于计算机系统100所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以理解,所描述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。 虽然可构想本发明的许多实施例尤其适用于计算机化的系统,然而在本说明中不意味着将本发明限于那些实施例。转向图2,示出了可被用来生成虚拟机的示例性虚拟平台。在该实施例中,系统管理程序微内核202可被配置成控制并仲裁对计算机系统200的硬件的访问。系统管理程序微内核202可以隔离一个分区中的进程,使其不能访问另一分区的资源。例如,系统管理程序微内核202可以生成称为分区的执行环境,如子分区1到子分区N(其中N是大于1的整数)。在该实施例中,子分区是系统管理程序微内核202支持的基本隔离单元。每一子分区可被映射到在系统管理程序微内核202控制之下的一组硬件资源,例如,存储器、设备、处理器周期等。在各实施例中,系统管理程序微内核202可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件中、专用集成线路、或其组合。系统管理程序微内核202可以通过限制物理计算机系统中的客操作系统的存储器视图来实施分区划分。当系统管理程序微内核202实例化一虚拟机时,它可以将系统物理存储器(SPM)的页(例如,具有开始和结束地址的固定长度存储器块)分配给虚拟机作为客物理存储器(GPM)。在该实施例中,客机的受限的系统存储器视图受系统管理程序微内核202控制。术语客物理存储器是从虚拟机的视点描述存储器页的简写方式,且术语系统物理存储器是从物理系统的观点描述存储器页的简写方式。因此,被分配给虚拟机的存储器页会有客物理地址(虚拟机所使用的地址)和系统物理地址(页的实际地址)。客操作系统可以虚拟化客物理存储器。虚拟存储器是一种管理技术,其允许操作系统过度提交存储器,并且给予应用程序对连续工作存储器的唯一访问。在虚拟化环境中,客操作系统可以使用一个或多个页表来将已知为虚拟客地址的虚拟地址转换成客物理地址。在该示例中,存储器地址可以具有客虚拟地址、客物理地址以及系统物理地址。在所描绘的示例中,父分区组件也可被认为是类似于Xen的开源系统管理程序的域0,父分区组件可以包括主机204。主机204可以是操作系统(或一组配置实用程序),并且主机204可以被配置成通过使用虚拟服务提供者228 (VSP)向在子分区1_N中执行的客操作系统提供资源。VPS 228(—般在开源社区中被称为后端驱动程序)可用来通过虚拟服务客户机(VSC)(在开源社区或类虚拟化设备中一般称为前端驱动程序)对到硬件资源的接口进行多路复用。如图所示,虚拟服务客户机可以在客操作系统的上下文中执行。然而,这些驱动程序不同于客机中的其余驱动程序,因为向它们提供了系统管理程序而非客机。在一示例性实施例中,虚拟服务提供者2 与虚拟服务客户机216和218通信所使用的路径可以被视为虚拟路径。如图所示,仿真器234(例如虚拟化IDE设备、虚拟化视频适配器、虚拟化NIC等)可被配置成在主机204中运行并被附连到可供客操作系统220和222使用的资源。例如,当客操作系统接触(被映射到设备的寄存器所处的)存储器位置或被映射到设备的存储器时,微内核系统管理程序202可截取该请求并将客机试图的值传递给相关联的仿真器。在该示例中,资源可被认为是虚拟设备所处的位置。该例中仿真器的使用可以被视为仿真路径。仿真路径与虚拟路径相比是低效的,因为与在VSP和VSC之间传递消息相比,它需要更多的CPU资源来仿真设备。例如,可以将经由仿真路径把值写入盘所需的、被映射至寄存器的存储器上的几百个动作减少为一个消息,该消息在虚拟路径中从VSC被传递至VSP。每一子分区可包括一个或多个虚拟处理器Q30和23 ,客操作系统Q20和222)可管理并调度线程以便在这些虚拟处理器上执行。一般而言,虚拟处理器是提供具有特定架构的物理处理器的表示的可执行指令以及相关联的状态信息。例如,一个虚拟机可具有带有英特尔x86处理器特性的虚拟处理器,而另一虚拟处理器可具有PowerPC处理器的特性。本例中的虚拟处理器可被映射到计算机系统的逻辑处理器,使得实现虚拟处理器的指令将受到逻辑处理器的支持。由此,在包括多个逻辑处理器的实施例中,在例如其他逻辑处理器执行系统管理程序指令时,虚拟处理器可以由逻辑处理器同时执行。分区中虚拟处理CN 102387197 A
说明书
5/17 页 器和存储器的组合可被认为是虚拟机。客操作系统Q20和222)可以是任何操作系统,如来自微软 、苹果 、开源社区等的操作系统。客操作系统可包括用户/内核操作模式,并且可具有能包括调度器、存储器管理器等的内核。一般而言,内核模式可包括处理器中的执行模式,该执行模式授予至少对特权处理器指令的访问。每一客操作系统可具有相关联的文件系统,该文件系统上存储有诸如终端服务器、电子商务服务器、电子邮件服务器等应用程序以及客操作系统本身。客操作系统可调度线程来在虚拟处理器上执行,并且可实现此类应用程序的实例。现在参考图3,示出了上述图2中的替换虚拟平台。图3描绘了与图2的组件相类似的组件;然而,在该示例实施例中,系统管理程序302可包括微内核组件以及和图2的主机204中的组件(如虚拟服务提供者2 和设备驱动程序224)相类似的组件,而管理操作系统304可包含例如用于配置系统管理程序302的配置实用程序。在该体系结构中,系统管理程序302可以执行与图2的系统管理程序微内核202相同或相似的功能;然而,在该体系结构中,系统管理程序302可被配置成向在子分区中执行的客操作系统提供资源。图3 的系统管理程序302可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件内,或者系统管理程序302的一部分可以由专用集成线路来实现。现在转向图4,它示出了示例性数据中心的高级框图。图4 一般地示出了将虚拟桌面部署到客户机的环境。简言之,图4中示出的某些元件是用虚线指示的,其指示了认为它们在其所示位置内可选地放置和/或可以以分布式的方式来实现它们。因此,存储传送引擎似4可位于管理员服务器408和/或VHD存储服务器410上。以下描述将调用如何以及何处实现存储传送引擎424的具体示例,然而,本发明不限于这些具体的样例。在所示示例中,数据中心可以包括内部网络,其将多个虚拟主机012和414)耦合到管理员服务器408和虚拟硬盘驱动器(VHD)存储服务器410,虚拟主机可包括类似于图 2或3所示组件的组件。本领域的技术人员可以理解,尽管示出了两个虚拟主机,但数据中心可具有更多个虚拟主机。同时,尽管每个虚拟主机G12和414)被示为运行一个虚拟机 G16和418),但是每个虚拟主机可以同时主存更多的虚拟机。或者换言之,数据中心可以有M个虚拟主机(其中M是大于1的整数),并且M个虚拟主机中的每一个可以主存N个虚拟机(其中N也是大于1的整数)。虚拟平台402和404是如上在图2和图3中所述的虚拟基础结构组件的逻辑抽象。在以下章节中被描述为在虚拟平台402或404 “以内”的功能可以在图2和图3所述的一个或多个元件中实现。可包括类似于图1的计算机系统100的组件的管理员服务器408还可包括用于连接中介426的线路,例如由从计算机可读存储介质载入的指令来配置的处理器。连接中介 426可从客户机接收虚拟桌面请求,并可选择主机来运行用户的虚拟机。管理员服务器408 可将用户的配置文件发送到虚拟主机412。虚拟主机412可包括在虚拟平台402内实现的虚拟机引擎(未示出),该虚拟机引擎可根据配置文件中的信息执行并实例化虚拟机416。 作为实例化过程的一部分及如以下段落中详细描述的,虚拟平台402可被配置为,为虚拟机416确定虚拟硬盘文件的位置,以便引导存储其上的客操作系统。VHD存储服务器410可包括类似于图1的计算机系统100的组件。在示例性实施例中,可从诸如通用处理单元、1或100GB网络适配器、串行高级技术附件(SATA)硬盘、小型计算机系统接口(SCSI)硬盘的商用部件来构建VHD存储服务器410,而不是在昂贵的SAN上实现。VHD存储服务器410可载入可控制计算机系统的硬件的例如Windows Server 2008 的商用操作系统。在此示例中,操作系统可执行用于实现应用层网络协议的指令,应用层网络协议提供对存储在由操作系统控制的文件系统中的文件的共享访问。VHD存储服务器410在内部网络上共享其文件系统428,而不像SAN那样展示LUN。这样,在该示例性实施例中,虚拟主机可将VHD存储服务器410作为联网存储设备来检测。操作中,虚拟主机发送读取VHD存储服务器的文件系统中的文件的请求,并且VHD存储服务器410上运行的操作系统检索所期望的数据。VHD存储服务器410可在其文件系统428中存储多个虚拟硬盘文件。简言之,虚拟硬盘文件是物理硬盘的虚拟表示并且存储数据块,例如,表示诸如客操作系统的数据结构和存储在客机的文件系统(文件、文件夹等)中的数据的字节或位序列。虚拟平台可接收已从客机发出的输入/输出(IO)任务,并代表客机来执行它们。但是,从VHD存储服务器410引导和运行客OS可能导致严重的等待时间问题,因为未针对该部署优化VHD存储服务器410。例如,当虚拟平台402必须读取VHD存储服务器410的VHD字节时,引导客机可能需要超过一分钟,例如从引导加载器开始到其退出的时间所测量的。如果多个用户试图同时登录到他们的虚拟桌面时,该操作将需要明显更长的时间。为了加速该过程,在示例性实施例中,每个VHD可被分解为多个差异VHD文件,并且存储传送引擎似4可将不同的文件(或其部分)选择性地高速缓存到数据中心的各位置中。在示例性实施例中,表示虚拟硬盘的数据可被分解为多个文件,并且数据的组合构成包括客操作系统的虚拟硬盘。差异虚拟硬盘文件将虚拟硬盘的当前状态表示为与父图像相比一组已修改的块。父图像可以是另一个差异虚拟硬盘文件或者基础虚拟硬盘文件。由于这一点,每个差异虚拟硬盘文件可包括唯一的标识符、其父的标识符和标识其父的位置的值。每个差异VHD文件可被链接在一起,并且链接链可指向基础虚拟硬盘文件的位置。在示例性实施例中,每个虚拟硬盘可被分解为三个虚拟硬盘文件。尽管示出了三个虚拟硬盘文件,但本发明并不限于此配置,并且虚拟硬盘可被分解为两个虚拟硬盘文件或更多个。在示例性实施例中,可从主VHD文件、机器差异VHD文件和用户差异VHD文件中生成虚拟硬盘文件。主VHD文件可包括类似于在OS安装DVD上找到且出售给消费者的操作系统的副本。主VHD文件还可包括数据中心中由用户使用的程序。例如,如果正向需要这样的软件的用户提供数据中心,则主VHD文件可与办公室生产性软件在一起。在另一个示例中,如果所预期的用户是web设计者,则主VHD文件可包括web设计软件。机器差异VHD文件可被链接到主VHD文件。实际上,机器差异VHD文件可包括向特定用户提供主VHD文件的数据块。例如,机器差异VHD文件可包括将一个用户的计算环境与另一个相区分的数据,诸如机器标识符、活动目录标识符等。在示例性实施例中,数据中心中可存在用于每个唯一的用户账户的机器差异VHD文件。在相同或另一个实施例中,每个主VHD文件可被链接到相同的主VHD文件。在另一个示例性实施例中,可以可选地使用用户差异VHD文件。在使用用户差异VHD文件的示例实施例中,它可被链接到主VHD文件并用于存储在会话期间被写到磁盘的数据块。例如,当用户与虚拟桌面交互时,客操作系统将信息写到磁盘。在示例性实施例中,这些数据块可被存储到用户差异VHD文件中。在相同或另一个实施例中,在快照期间写入磁盘的数据可被存储到用户差异VHD文件中。这样,用户差异VHD文件可以是可写的,而机器差异VHD文件和主VHD文件被设为只读。在该示例性配置中,当虚拟机运行时仅有用户差异VHD文件中的数据改变。在示例性配置中,链中最后的虚拟硬盘文件的位置可被存储到虚拟机的配置文件中。当虚拟平台接收请求以实例化虚拟机时,虚拟平台可读取配置文件以发现链中最后链接的位置。虚拟平台可随后发现其父的位置并打开父。虚拟平台可继续发现链中的虚拟硬盘文件直到它发现基础虚拟硬盘文件的位置并将其打开。在另一个示例性实施例中,链中最后的只读虚拟硬盘文件的位置可被存储到配置文件中,例如,机器差异VHD文件。在该示例中,当引导虚拟机时可动态地创建用户差异VHD 文件。例如,响应于检测到指示只读文件的父位置值,例如虚拟机引擎的虚拟平台402中的处理可创建用户差异VHD文件。在该示例中,虚拟机引擎可创建用户差异VHD文件并将其动态地链接到只读文件。虚拟平台可使用位图和预先配置的操作次序来读取并写入虚拟硬盘文件集合。例如,每个虚拟硬盘文件可包括位图和数据。位图指示哪些数据块位于差异磁盘(1)中而哪些数据块没有(0)。在该示例性实施例中,当虚拟平台(即,虚拟平台中运行的存储服务) 试图从文件集合进行读取时,它可被配置为首先试图从用户差异虚拟硬盘文件中读取,并且如果块不存在,则它可拷贝到机器差异虚拟硬盘文件。在任一文件中都没有该块的情况下,则虚拟平台402可被配置为从主虚拟硬盘文件中读取该块。对于写操作,虚拟平台402 可被配置为写入链中的第一个链接(例如,用户差异VHD文件)并将文件位图中的对应块标记为1。对该数据块的此后的读IO任务可被定向到用户差异VHD文件。转回到图4,在示例性实施例中,存储传送引擎4 可被配置为当虚拟机在运行时选择性地将VHD文件下载到虚拟主机本地存储。在虚拟硬盘文件被下载后,例如图2的微内核系统管理程序202的虚拟平台可使用“ktparent (设定父)”命令来重新配置每个VHD 文件和/或配置文件中的父位置值以指向文件的本地副本。通过选择性地下载VHD文件, 发生在VHD存储服务器410上的磁盘操作的数量被最小化并且处理用于M个虚拟机的存储操作的压力被消除。在用户退出之后,对用户差异VHD文件的写可被丢弃(在汇合部署中)或与例如机器差异VHD文件进行合并(在个人虚拟机部署中)。合并操作可在数据中心的多个位置之一进行。在第一个实施例中,可在虚拟主机上合并两个文件的本地副本。在第二个实施例中,可在VHD存储服务器410上合并两个文件的本地副本。在第三个实施例中,运行在虚拟主机上的存储传送引擎似4将本地存储420中的用户差异VHD文件的副本与存储在VHD 存储服务器410中的机器差异VHD文件相合并。在第四个实施例中,运行在VHD存储服务器410上的存储传送引擎似4可将本地存储420中的用户差异VHD文件的副本与存储在 VHD存储服务器410中的机器差异VHD文件相合并。合并操作的位置可由服务器管理员来选择。无论拷贝操作在何处进行,存储传送引擎4M可通过将用户差异VHD文件中的数据块拷贝到机器差异VHD文件的对应块中来合并存储在用户差异VHD文件中的差异与机器差异VHD文件。VHD存储服务器410可接收已修改的机器差异VHD文件的副本,并使用已修改的版本来重写文件的副本。在此处,例如虚拟主机412的虚拟主机可删除其副本或在例如本地存储420的本地存储中继续对其进行存储。在将其存储在本地存储420的实例中,
1可向管理员服务器408发送指示机器差异VHD文件的副本的时戳的信号。在用户再次登陆的情况下,连接中介4 可将存储在本地存储420中的机器差异VHD文件的时戳与VHD存储410中对应文件的时戳进行比较。在时戳相匹配的情况下,连接中介似6可被配置为试图在虚拟主机412上而非数据中心的不同主机上实例化虚拟机416。图5-8示出不同的部署配置。接着要实现对部署配置的选择,但是,可通过考虑内部网络的可用带宽以及将VHD存储服务410的处理器连接到物理存储设备(例如,内部SATA总线带宽)的内部总线的可用带宽来进行选择。例如,网络管理员可测试他或她的数据中心以观察从存储有全部VHD文件的VHD存储服务器410引导操作系统所需的时间。如果(基于偏好)所用时间过长,则管理员可使用此处描述的不同的部署配置中的一个。在管理员希望最大化性能的实例中,他或她可使用最小化必须通过内部网络发送的数据量的部署ο在相同或另一个实施例中,存储传送引擎4M可被配置为基于算法选择性地拷贝某些文件,该算法最小化用于拷贝VHD文件的可用带宽量。在相同或另一个实施例中,算法可被配置为检测哪个文件处理最多的IO任务并拷贝该文件。转向图5,它示出了示例性部署。在所示实施例中,在由图4的连接中介4 作出在虚拟主机412上实例化虚拟机416的决定之后,存储传送引擎424已被配置为将主VHD文件504、机器差异VHD文件506和用户差异VHD文件508拷贝到本地存储420。此图及以下各图中的虚线示出主VHD文件504、机器差异VHD文件506和用户差异VHD文件508的副本可从VHD存储服务器410拷贝到虚拟主机412。在示例性实施例中,拷贝操作可在引导之前开始。例如,虚拟平台402—确定文件集合的位置操作就可开始。在另一个实施例中,当VHD存储服务器410上的存储传送引擎4 接收请求以从虚拟平台402打开文件集合时,拷贝操作可开始。在两种情形中,虚拟平台402可响应于接收配置文件来开始该过程。虚拟平台402可打开文件并读取可包括例如用户差异VHD文件508的网络路径的VHD位置字段,可以是\\VHDstorageserver\share\. · · \userXXXuserdiff. vhd。虚拟平台 402 可向 VHD 存储服务器410发送打开该文件的请求,并且VHD存储服务器410可处理该请求。虚拟平台402随后可读取指示用户差异VHD文件的父的位置的值,可以是\\VHDstorageserver\share\. . . \userXXXmachinediff. vhd。类似地,虚拟平台402随后可发现机器差异VHD文件的父位于\\VHDstorageserver\share\. . . \master. vhd。在图中这些链接中的每一个被示为箭头。在替换的实施例中,配置文件可包括机器差异VHD文件506的VHD位置值,即\\VHDstorageserver\share\. . . \userXXXmachinediff. vhd。在该示例中,虚拟平台 402 可确定机器差异VHD文件506是只读的并且生成用户差异VHD文件508。虚拟平台402可将新生成的用户差异VHD文件的父位置设为指向机器差异VHD文件506,并修改配置文件以指向新生成的用户差异VHD文件的位置。在文件被打开后,虚拟平台可读取位图并启用虚拟机416中的虚拟处理器。虚拟机416中的OS引导加载器程序可发出对于第一块的IO任务,需要读取该第一块以便引导客操作系统。虚拟平台402可使用位图来确定哪个磁盘包括所请求的字节,从VHD存储服务器410上打开的文件取回字节,并将字节返回给引导加载器。在VHD链被存储到本地存储420之后,可以向虚拟平台402发送信号以重置存储在VHD文件中的链接和配置文件。当虚拟机416运行时,虚拟平台402可修改配置文件中的父位置以指向已下载的副本,例如本地用户差异VHD文件514,并且存储在机器差异VHD文件512的本地副本中的父位置信息可被重置为指向本地主VHD文件510。例如, 如微内核系统管理程序202的虚拟平台402可包括存储传送引擎似4可以访问以便修改父位置信息的接口。在特定的示例中,可以访问接口并且配置文件中的父位置信息可从 \\VHDstorageserver\share\. . . \userXXXuserdiff. vhd 变为 C:\ProgramData\. . . \ Virtual Machines\userXXXuserdiff. vhd。在此处,存储传送引擎424可关闭到VHD存储服务器410的连接,并且将之后的IO任务发送到VHD文件的本地副本而不是存储在VHD存储服务器410上的副本。例如,当由虚拟平台402接收读IO任务时,已更新的位置信息可被读取并使虚拟平台402发送任务到本地存储420由于链中的VHD文件可能非常大,例如主VHD文件504单独可有7或8GB,在示例性实施例中,可使用快速文件拷贝技术来减少拷贝时间。例如,可以在虚拟主机412和/或 VHD存储服务器410上执行后台智能传送服务(BITS)。BITS可使用空闲的网络带宽来拷贝文件并在后台拷贝数据。在操作中,BITS程序可以监控VHD存储服务器410上的网络通信并扼制其自己的拷贝以确保其他下载获得所需的带宽。在相同或另一个实施例中,VHD存储服务器410可被配置为将特定的字节块预先高速缓存到RAM中从而加速拷贝操作。例如,引导加载器通常需要来自主VHD文件504的相同的数据块以执行登录操作,在示例性实施例中,这些数据块可在VHD存储服务器410引导时被高速缓存到RAM中,以便VHD存储服务器410不必首先从大容量存储中取回字节。在另一个示例实施例中,在VHD存储服务器410具有足够RAM的实例中,可以预先高速缓存整个主VHD文件504。在示例性实施例中,主VHD文件504和机器差异VHD文件506可被标记为只读。这样,这些文件可以被拷贝到虚拟主机406而没有问题。但是,用户差异VHD文件508是读/ 写并且需要以确保用户数据不会丢失的方式来拷贝。在示例性实施例中,用户差异VHD文件508起始于0字节(引导时文件为空)并且大小快速增长。在该示例中,当存储传送引擎似4启动拷贝操作时,可创建本地用户差异VHD文件514,并且虚拟平台402可被配置为向用户差异VHD文件508和本地用户差异VHD文件514两者发送写IO任务。存储传送引擎4M可存储指示块拷贝行的值,并且可以串行地开始向本地用户差异VHD文件514拷贝块,从用户差异VHD文件508的起始到结尾,而客操作系统向两个副本写入。在向本地存储 510拷贝一块后,该值被递增。当该值到达用户差异VHD文件508的结尾时,两个文件已被同步,并且存储传送引擎似4可以停止镜像对用户差异VHD文件508的写入。转向图6,它示出主VHD文件的副本被预先高速缓存到虚拟主机412的替换实现。 在此部署中,数据中心的每个虚拟主机可以使本地主VHD文件510被预先高速缓存,从而不必从VHD存储服务器410拷贝该文件。在此部署中,VHD存储服务器410可以具有或可以不具有主VHD文件的副本,但是,它可包括副本使得被加至数据中心的虚拟主机可以下载副本。在此示例性配置中,机器差异VHD文件506可包括指向主VHD文件的本地副本的位置信息,从而消除了必须通过内部网络发送对主VHD文件的读操作的情况。与上面类似的, 在VHD链被存储到本地存储420之后,可以向虚拟平台402发送信号以调整存储在VHD文件中的父位置信息和配置文件。
转向图7,它示出了另一个替换的部署。在此示例性实施例中,配置文件可指向机器差异VHD文件506和主VHD文件504。在另一个配置中,配置文件可指向本地用户差异VHD文件514。在引导期间,下载主VHD文件504的副本和机器差异VHD文件506时,写可以被立即发送给本地用户差异VHD文件514。与上面类似的,在VHD链被存储到本地存储420之后,可以向虚拟平台402发送信号以调整存储在VHD文件中的父位置信息和配置文件。图8示出了另一个替换的部署。根据该示例性实施例,本地存储420可包括本地用户差异VHD文件514和本地主VHD文件510,并且VHD存储服务器410可包括机器差异VHD文件506。在此示例中,虚拟机416的配置文件可包括用户差异VHD文件514的本地副本的位置。本地用户差异VHD文件514可指向VHD存储服务器410上的机器差异VHD文件506,该机器差异VHD文件可指向本地主VHD文件510。与上述操作类似的,当虚拟机416正在运行时,可将机器差异VHD文件506的副本下载到虚拟主机406并将其存储为本地机器差异VHD文件512。与上面类似的,在本地机器差异VHD文件512被存储到本地存储420之后,可向虚拟平台402发送信号以调整存储在本地用户差异VHD文件中的链接,以指向本地机器差异VHD文件512的文件系统位置。现在转向图9,它示出将虚拟机416从虚拟主机412迁移到虚拟主机414的操作环境。在所示实施例中,假设当拷贝操作开始时,虚拟硬盘A的VHD文件链已被下载到虚拟主机406。但是,情况可能并非如此,并且当启动实况迁移操作时,虚拟主机412可能具有VHD文件的任意组合。当启动存储传送引擎424时,例如,虚拟主机412可以开始拷贝确保将VHD A拷贝到虚拟主机414所必需的VHD文件。在特定的示例中,这可以仅包括将本地用户差异VHD文件514拷贝到VHD存储服务器410,并且可以使用此处描述的镜像技术来拷贝文件。在需要被拷贝的文件被上载到VHD存储服务器410之后,对VHD A的控制可从虚拟主机412切换到虚拟主机414,并且虚拟平台404可以开始将其需要的文件下载到本地存储422。例如,虚拟主机414可能已经包括本地主VHD文件802和/或本地机器差异VHD文件804。这样,在此示例中,用户差异VHD文件508可被拷贝到虚拟主机414并被存储为本地用户差异VHD文件806。类似地,虚拟主机404可被配置为在下载结束后重置任意链接,从而将读和写定向到VHD文件的本地副本而非VHD存储服务器410上的副本。以下是描绘操作过程的一系列流程图。为便于理解,流程图被组织成使得初始流程图通过总体“大图”视点来演示各实现,并且后续的流程图提供以虚线示出的进一步的附加物和/或细节。此外,本领域的技术人员可以理解,虚线所描绘的操作过程被认为是任选的。现在转向图10,它示出始于操作1000的操作过程,并且操作1002示出包括用于执行存储在第二服务器上的虚拟硬盘文件集合的客操作系统的线路的虚拟主机412。例如,虚拟平台402之前可能已经打开了集合,例如存储在第二服务器上的一个或多个VHD文件,例如存储在VHD存储服务器410的文件系统428中。虚拟平台402(例如可执行指令)可以调度指示处理器上的虚拟处理器的线程,并且处理器可以执行客操作系统,该客操作系统向存储在文件系统428中的VHD文件集合发出IO任务。示例IO任务可以是读。在此示例中,虚拟平台402可接收IO任务并且通过内部网络从VHD文件读取所请求的数据块并将字节发送回到客OS。继续对图10的描述,操作1004示出在实施例中,虚拟主机可包括用于当同时执行
14虚拟硬盘文件集合的客操作系统时,存储附连于第一服务器的存储设备中的虚拟硬盘文件集合的已接收的副本的线路。例如,转回到图4,虚拟主机412可以接收指示来自VHD存储服务器410的虚拟硬盘文件集合的副本的一个或多个信息分组。此示例中的集合可包括但不限于用户差异虚拟硬盘文件、机器差异虚拟硬盘文件,和/或主虚拟硬盘文件。在此示例中,当客操作系统正在运行时,VHD存储服务器410可以同时地将集合拷贝到本地存储420。 即,在下载集合的副本时,虚拟机416可以执行存储在VHD存储服务410中的集合的客操作系统。转回到图10,操作1006示出在实施例中,虚拟主机可包括响应于确定虚拟硬盘文件集合的副本已被存储到附连于第一服务器的存储设备中,执行虚拟硬盘文件集合的副本的客操作系统的线路。转回到图4,在示例性实施例中,虚拟硬盘文件集合可由虚拟主机 412成功地接收并存储在本地存储420中。在此示例中,虚拟平台402可接收指示存储操作已结束的信号,并且设定配置文件和/或虚拟硬盘文件中的父位置信息,以便位置信息指向集合的本地副本。在修改父位置信息之后,虚拟平台402可以使用已更新的位置信息向集合的本地副本发出IO任务。因此,由于虚拟平台402不再需要通过内部网络从VHD存储服务410读取数据,因此减轻了 VHD存储服务410的处理压力以及对带宽的需求。参照图11,其示出图10的操作过程的替换实施例,包括操作1108-1122。转向操作1108,它示出在实施例中,虚拟主机412可包括用于从虚拟硬盘文件集合中引导客操作系统的线路,其中虚拟硬盘文件集合包括主虚拟硬盘文件、机器差异虚拟硬盘文件和用户差异虚拟硬盘文件。例如,转向图5,在此示例性实施例中,虚拟主机412可以从VHD存储服务器410引导客操作系统。在此示例中,存储其上的VHD文件集合可包括主VHD文件504、 机器差异VHD文件506和用户差异VHD文件,主VHD文件可包括操作系统的副本,机器差异 VHD文件可包括为诸如机器标识符等的特定用户定制操作系统的信息,用户差异VHD文件可包括在会话期间已被写到磁盘的数据。在包括操作1108的示例性实施例中,用于VHD文件集合的拷贝操作可在引导客操作系统之前已经开始,并且可以在客操作系统开始执行之后结束,即,在引导加载器退出并将对虚拟机416的控制转移给客OS之后。当虚拟平台402接收请求以引导客OS时,VHD A 的全部文件已被存储到VHD存储服务器410中,并且虚拟平台402可从配置文件确定用户差异VHD文件508的位置。虚拟平台402可以使用用户差异VHD文件508中的信息来确定机器差异VHD文件506的位置,并使用机器差异VHD文件506中的位置信息来确定主VHD 文件504的位置。在下载集合之后,虚拟平台402可以将配置文件中的位置设为指向本地用户差异VHD文件514的位置,将本地用户差异VHD文件514中的父位置信息设为指向本地机器差异VHD文件512,并将本地机器差异VHD文件512中的父信息设为指向本地主VHD 文件510。在此处,虚拟平台402将使用VHD文件的本地副本用于10。继续对图11的描述,操作1110示出在实施例中,虚拟主机412可包括用于从虚拟硬盘文件集合以及存储在附连于第一服务器的存储设备中的主虚拟硬盘文件的预先高速缓存的副本引导客操作系统的线路。例如,转向图6,在示例性实施例中,集合可包括机器差异VHD文件506和用户差异VHD文件508。主VHD文件504的副本可以作为本地主VHD文件510被预先高速缓存到本地存储420中。在此示例中,可以在数据中心中使用存储在本地存储420的本地主VHD文件510来部署虚拟主机412,或者当开启虚拟主机412时,虚拟主机可以预先拷贝主VHD文件504。在此配置中,消除了由迁移主VHD文件504引起的可达 8GB的网络通信。此外,可以本地处理定向到主VHD文件中的块的任意读IO任务。继续对图11的描述,操作1112示出在实施例中,虚拟主机412可包括用于从虚拟硬盘文件集合以及存储在附连于第一服务器的存储设备中的用户差异虚拟硬盘文件引导客操作系统的线路。在此示例性实施例中,转向图7,集合可包括主VHD文件504和机器差异VHD文件506。当客操作系统正在引导时,即引导加载器控制虚拟机416时,虚拟平台402 可通过从本地用户差异VHD文件514读和写来处理某些IO任务,并且通过从存储在VHD存储服务器410的集合中读取来处理其他任务。在此示例中,在引导之前本地用户差异VHD 文件514可以为空,或者,当虚拟平台402接收请求以实例化虚拟机416时可以动态地创建本地用户差异VHD文件。在第一种情形中,配置文件可包括空的本地用户差异VHD文件514 的位置。在第二种中,配置文件可包括机器差异VHD文件506的位置,并且虚拟平台402可以动态地生成本地用户差异VHD文件514并将其链接到机器差异VHD文件506。在任一情形中,可以确定机器差异VHD文件506和主VHD文件504的位置,并且存储传送引擎似4可以开始将其拷贝到本地存储420,从而存储本地机器差异VHD文件512和本地主VHD文件510。在下载集合之后,虚拟平台402可以修改本地用户差异VHD文件514 中的父位置字段以指向本地机器差异VHD文件512的位置,并且修改本地机器差异VHD文件512中的父位置字段以指向本地主VHD文件510的位置。在此处,虚拟平台402将使用 VHD文件的本地副本用于10。继续对图11的描述,操作1114示出在实施例中,虚拟主机412可包括被配置为将用户差异虚拟硬盘文件合并到机器差异虚拟硬盘文件中并将机器差异虚拟硬盘文件发送到第二服务器的线路。在退出后持久存储用户数据的部署中,虚拟平台402可被配置为将本地用户差异文件514中的数据与本地机器差异VHD文件512中的数据相合并,并将已修改的机器差异VHD文件发送回到VHD存储服务器410。例如,虚拟平台402可以通过将本地用户差异文件514中的每个数据块拷贝到本地机器差异VHD文件512的对应块中来合并两个文件。在VHD存储服务器410接收本地机器差异VHD文件512的已修改的副本之后,VHD 存储服务器将其存储为机器差异VHD文件506。在已修改的版本被设为机器差异VHD文件506之后,虚拟平台402可以可选地删除本地用户差异VHD文件514和本地机器差异VHD文件512。例如,虚拟平台402可被配置为在限制本地存储420的存储容量的实例中删除这些文件。在虚拟主机412将机器差异 VHD文件的已合并副本作为本地机器差异VHD文件512持久存储在本地存储420的实例中, 虚拟主机412可以发送信号到管理员服务器408以通知它,当客户机406下次连接时,虚拟主机412应当托管虚拟机416。继续对图11的描述,操作1116示出在实施例中,存储服务器410可包括用于将从第一服务器接收的用户差异虚拟硬盘文件合并到存储在第二服务器的机器差异虚拟硬盘文件中的线路。在此示例性实施例中,当用户退出后,虚拟平台402可以将本地用户差异文件514发送回到VHD存储服务器410并且指示存储传送引擎似4合并本地用户差异文件 514与机器差异VHD文件506。VHD存储服务器410随后可以将已修改的机器差异VHD文件存储为机器差异VHD文件506。继续对图11的描述,操作1118示出在实施例中,存储服务器可被配置为从第一服
16务器接收至少用户差异虚拟硬盘文件;并且将至少用户差异虚拟硬盘文件发送到第三服务器。例如,转向图9,在示例性实施例中,实况迁移操作可用于当虚拟机416正在运行时将虚拟机416从虚拟主机412迁移到虚拟主机414。例如,存储传送引擎似4可以接收指示虚拟机416将要从虚拟主机412迁移到虚拟主机414的信号。作为响应,存储传送引擎似4可以确定需要拷贝哪些虚拟硬盘文件以在虚拟主机414上运行虚拟机416。在此示例中,存储传送引擎4 可以确定需要拷贝至少本地用户差异VHD文件514。在此示例中,可以使用此处描述的镜像技术将本地用户差异VHD文件514发送到VHD存储服务410。发送存储在用户差异VHD文件508中的至少信息的操作与将虚拟机416的状态 (例如,RAM的内容和虚拟设备的状态)从虚拟主机412拷贝到虚拟主机414的操作可以并行进行。在另一个配置中,可在实况迁移操作开始之前进行存储拷贝操作。在任一情形中, 可以将只读文件拷贝到VHD存储服务器410并且可以镜像读/写文件。例如,运行在虚拟主机412上的存储传送引擎似4可以顺序地将来自本地用户差异VHD文件514的数据块拷贝到VHD存储服务器410,而将写发送到本地用户差异VHD文件514和用户差异VHD文件 508 二者。当拷贝操作结束时,虚拟平台402可以修改配置文件以将位置信息设为指向用户差异VHD文件508的位置,从而将写发送到VHD存储服务器410。当对虚拟机416的控制从虚拟平台402切换到虚拟平台404之后,虚拟平台404可以通过内部网络从VHD存储服务器410读取数据块。在此处,存储传送引擎4M可被配置为将至少用户差异VHD文件 508拷贝到虚拟主机414。继续对图11的描述,操作1120示出在实施例中,存储服务器410可包括用于将虚拟硬盘文件集合的至少部分预先高速缓存到第二服务器的随机访问存储器中的线路。例如,转回到图5,在示例性实施例中,作出关于在一种类型的操作系统的引导操作期间通常读取什么字节的判断。例如,可以通过连续的引导操作跟踪由虚拟平台402发出的读IO任务,并且确定通常读取的一组字节。在此示例中,VHD存储服务器410可被配置为在其引导时将这些字节预先高速缓存到RAM中,以便具有用于引导虚拟机的可用字节。这可以加快虚拟机的引导操作。例如,用于存储虚拟硬盘驱动器的持久存储可以是商用硬件,例如现货供应的SATA驱动器,并且使VHD存储服务器410读取这种类型的硬件的字节带来可由通过将这些字节预先高速缓存到RAM消除的另一层等待时间。继续对图11的描述,操作1122示出在实施例中,管理员服务器可包括用于响应于确定第一服务器包括机器差异虚拟硬盘文件的当前副本,指示客户机计算机系统连接到第一服务器的线路。例如,转回到图4,在实施例中,管理员服务器408可以包括线路,例如,由指示连接中介426的可执行指令配置的处理器。在此示例中,指令可以配置处理器以管理信息表,该信息表标识哪个虚拟主机具有带有指示其上一次修改时间的时戳的VHD文件。 响应于从客户机406接收连接到虚拟机416的连接请求,管理员服务器408可以执行程序, 该程序检查VHD存储服务器410中虚拟硬盘A的VHD文件集合的时戳,并将该时戳与表中的时戳进行比较。在存在匹配的实例中,例如,虚拟主机412包括具有与存储在VHD存储服务器410中的与机器差异虚拟硬盘文件相关联的时戳相同的时戳的机器差异虚拟硬盘文件, 管理员服务器408可以试图将虚拟机416加载到虚拟主机412上。这将消除必须将VHD文件中的至少某些拷贝到虚拟主机412。在大多数情形中,如果虚拟主机412包括机器差异 VHD文件的当前副本,则它还包括主VHD文件的当前副本。如果情况如此,则不必从VHD存储服务器410下载任何文件。转向操作1124,它示出响应于确定第一服务器上的负载为低,指示客户机计算机系统连接到第一服务器。例如,在实施例中,管理员服务器408可以包括线路,例如,由指示连接中介426的可执行指令配置的处理器。在此示例中,该指令可以配置处理器以管理信息表,该信息表标识每个虚拟服务器当前所处的当前负载。例如,负载信息可指示分配给虚拟机的RAM的数量以及每个虚拟服务器具有的RAM的总量。响应于从客户机406接收连接到虚拟桌面会话的连接请求,管理员服务器408可以执行程序,该程序检查每个服务器上的负载并选择最少负载的服务器来托管虚拟桌面会话。在执行操作1122和IlM 二者的示例实施例中,管理员服务器408可被配置为标识其上具有低负载的服务器,并随后检查VHD存储服务器410中虚拟硬盘A的VHD文件集合的时戳,并且将该时戳与表中的时戳进行比较。在存在匹配的实例中,例如,虚拟主机412 包括具有与存储在VHD存储服务器410中的与机器差异虚拟硬盘文件相关联的时戳相同的时戳的机器差异虚拟硬盘文件,管理员服务器408可以试图将虚拟机416加载到虚拟主机 412 上。现在转向图12,它示出用于描述涉及从联网存储执行虚拟机的操作的示例性实施例。操作1200开始操作过程,并且操作1202示出操作,从存储在第二服务器中的机器差异虚拟硬盘文件和存储在附连于第一服务器的存储设备中的主虚拟硬盘文件引导操作系统, 其中主虚拟硬盘文件包括操作系统的副本,并且机器差异虚拟硬盘文件包括用于为用户定制操作系统的副本的机器标识信息。例如,参考图6或8,在示例性实施例中,虚拟主机412 可包括本地主VHD文件510。例如,本地主VHD文件510可以之前已经被下载,或者可以使用副本来部署虚拟主机412。在任一情形中,虚拟平台402可从本地主VHD文件510中的信息的组合和机器差异VHD文件506来引导客操作系统。虚拟平台402可以响应于从图4的管理员服务器408接收的请求来启动引导操作。虚拟平台402可以接收与经由图4的客户机406登录的用户的用户账户相关联的配置文件。虚拟平台402可以访问配置文件,并且存储其中的字段可包括例如用户差异VHD磁盘文件的位置,用户差异VHD磁盘文件可被存储到本地存储420或VHD存储服务器410。根据用户差异VHD磁盘文件及其父的位置,可以发现机器差异VHD文件506。在此示例中,机器差异VHD文件506可位于VHD存储服务器410的存储中,并且其父可以是本地主VHD文件510。在打开构成VHD A的VHD文件之后,虚拟平台402可以通过将由机器差异VHD文件 506处理的读IO请求发送到VHD存储服务器410并将由本地主VHD文件510处理的读IO 请求发送到本地存储420来开始引导客操作系统。继续对图12的描述,操作1204示出了用于在同时引导客操作系统时,从第二服务器下载机器差异虚拟硬盘文件的副本的操作。例如,转向图6或8,虚拟主机412可从VHD 存储服务器410接收指示机器差异VHD文件506的副本的一个或多个信息分组,并且将副本存储为本地机器差异VHD文件512。在此示例中,VHD存储服务器410可以在引导操作期间同时地将机器差异VHD文件506拷贝到本地存储420。S卩,当虚拟机416从组合进行引导时,拷贝正同时地被下载。再次转回到图12,操作1206示出用于响应于确定机器差异虚拟硬盘文件已被下载,从机器差异虚拟硬盘文件的副本和主虚拟硬盘文件执行客操作系统的操作。转回到图6或8,在示例性实施例中,本地机器差异VHD文件512可被成功地存储到虚拟主机412的文件系统中。在此示例中,虚拟平台402可接收指示存储操作已结束的信号,并且将用户差异VHD文件的父位置字段中的父位置信息设为指向本地机器差异VHD文件512的位置。在修改位置之后,虚拟平台402可以使用已更新的位置信息来执行对于本地副本的IO操作。现在转向图13,其示出图12所描绘的操作过程的替换实施例,包括操作 1308-1320。如操作1308所示,在实施例中,虚拟主机412可包括用于从第二服务器下载用户差异虚拟硬盘文件的线路,用户差异虚拟硬盘文件存储在会话期间写到虚拟硬盘的数据块。转向图6,在此实施例中,用户差异VHD磁盘508可从VHD存储服务器410拷贝到虚拟主机412,并被存储为本地用户差异VHD磁盘514。如图所示,在此示例中,虚拟平台402可以接收包括父位置字段的配置文件,该父位置字段包括用户差异VHD文件508的位置。用户差异VHD文件508中的父位置字段可包括机器差异VHD文件506的位置,并且其父字段可包括本地主VHD文件510的位置。存储传送引擎4M可以顺序地将来自用户差异VHD文件508的数据块拷贝到本地用户差异VHD文件514。当数据块被拷贝时,虚拟平台402可向本地用户差异VHD文件514和用户差异VHD文件518 二者发送写,直到用户差异VHD文件 508的最后一块被拷贝。在此处,虚拟平台402可被配置为停止向用户差异VHD文件508写入,并可修改配置文件中的位置字段以指向本地用户差异VHD文件514的位置而非用户差异VHD文件508。在此处,虚拟平台402将使用用户差异VHD文件514的本地副本用于相关联的IO操作。继续对图13的描述,它示出了操作1310,该操作是用于将数据块写入被预先高速缓存到附连于第一服务器的存储设备中的用户差异虚拟硬盘文件的操作。例如,转向图8, 在此示例性实施例中,本地存储420可包括本地用户差异VHD文件514。在此示例性实施例中,用户差异VHD文件514可被预先高速缓存到本地存储420,从而不必跨网络对其进行拷贝。例如,当虚拟平台402引导虚拟机416时,其可被配置为生成空的本地用户差异VHD 文件514。虚拟处理器向VHD A写入时,该写可被存储到本地用户差异VHD文件514的块中,并且可以从0字节增长。在此示例性实施例中,每次虚拟平台402向虚拟平台402写入时,它可以在位图中设置一位。当由虚拟平台402接收读IO任务时,其可被配置为检查位图以查看是否为该块设置了位。若是,则虚拟平台402从本地用户差异VHD文件514读取存储在块中的字节。在未设置位的情况下,虚拟平台402可被配置为检查用于本地机器差异VHD文件512的位图。如果用于本地机器差异VHD文件512的位图未被设置,则虚拟平台402可从本地主VHD文件510读取块。操作1312示出在实施例中,虚拟主机412可包括用于将用户差异虚拟硬盘文件与机器差异虚拟硬盘文件的副本进行合并,并将机器差异虚拟硬盘文件的副本发送到第二服务器的线路。在持久存储用户数据的部署中,虚拟平台402可被配置为将本地用户差异文件514中的数据与本地机器差异VHD文件512中的数据进行合并,并将已修改的机器差异 VHD文件发送回到VHD存储服务器410。例如,虚拟平台402可以通过将本地用户差异文件 514中的每个数据块拷贝到本地机器差异VHD文件512的对应块中来合并两个文件。在VHD 存储服务器410接收本地机器差异VHD文件512的已修改的副本之后,VHD存储服务器将其存储为机器差异VHD文件506。操作1314示出在实施例中,虚拟主机412可包括用于将用户差异虚拟硬盘文件发送到第二服务器的线路。在此示例性实施例中,当用户退出后,虚拟平台402可以将本地用户差异文件514发送回到VHD存储服务器410并且指示存储传送引擎424合并本地用户差异文件514与机器差异VHD文件506。VHD存储服务器410随后可以将已修改的机器差异 VHD文件存储为机器差异VHD文件506。操作1316示出在实施例中,虚拟主机412可包括用于将存储在用户差异虚拟硬盘文件中的数据写入存储在第二服务器中的机器差异虚拟硬盘文件的线路。在此示例性实施例中,在虚拟主机412中执行的存储传送引擎似4可被配置为将本地用户差异VHD文件514 中的差异合并到机器差异VHD文件506中。例如,存储传送引擎4M可以打开机器差异VHD 文件506,并且将来自用户差异VHD文件514的数据块跨内部网络写入到机器差异VHD文件 506的对应块中。转向操作1318,它示出虚拟主机412可包括用于在迁移操作期间将用户差异虚拟硬盘文件发送到第二服务器的线路。例如,转向图9,在示例性实施例中,实况迁移操作可用于当虚拟机416正在运行时将虚拟机416从虚拟主机412迁移到虚拟主机414。例如,存储传送引擎似4可以接收指示虚拟机416将要从虚拟主机412迁移到虚拟主机414的信号。 作为响应,存储传送引擎似4可以确定需要拷贝哪些虚拟硬盘文件以便在虚拟主机414上运行虚拟机416。在此示例中,存储传送引擎4 可以确定需要迁移至少本地用户差异VHD 文件514。在此示例中,可以使用此处描述的镜像技术将本地用户差异VHD文件514发送到 VHD存储服务410。此外,该操作可以与将虚拟机416的状态从虚拟主机412拷贝到虚拟主机414的操作并行进行。参考回到图13,操作1320示出使用空闲带宽从第二服务器下载机器差异虚拟硬盘文件的副本。例如,在存储传送引擎4 执行的实施例中,例如虚拟主机412和/或VHD 存储服务器410可以确定使用内部网络的空闲带宽来下载机器差异VHD文件506。在此示例中,针对执行虚拟机416来优化系统,并且当网络以其他方式空闲时进行拷贝。或换言之,如果带宽的80%正被使用,则存储传送引擎4M可以使用剩余带宽的20%将机器差异 VHD文件506发送到虚拟主机412。现在转向图14,它示出了操作过程。操作1400开始该过程,并且操作1402示出用于将客操作系统从虚拟硬盘文件集合引导到虚拟机的操作,其中集合的第一部分被存储到附连于第一服务器的存储设备上,第二部分被存储到第二服务器上。例如,虚拟主机412中的处理器可以接收指示虚拟处理器运行引导加载器的线程。处理器可以运行虚拟平台402 并确定引导加载器正在请求存储在VHD文件集合中的字节。VHD文件集合中的某些可被存储到本地存储420,并且其余的可被存储到VHD存储服务器410。在此示例中,虚拟平台420 可以取回字节并将其返回到引导加载器,该引导加载器随后可以继续引导客OS。继续对图14的描述,操作1404示出了在引导客操作系统时,下载集合第二部分的至少子部分。例如,当引导加载器正在运行并控制虚拟机416时,虚拟主机412可以下载指示第一部分的至少子部分的副本的一个或多个信息分组。例如,在存储传送引擎4M执行的实施例中,例如VHD存储服务器410可被配置为将其正在存储的虚拟硬盘文件中的至少某些发送到虚拟主机412。在特定的示例中,转向图6,存储传送引擎似4可被配置为将机器差异VHD文件506和/或用户差异VHD文件508发送到虚拟主机412。可以基于内部网络的可用带宽和VHD存储服务器410所处的负载作出关于是否发送一个或两个的判断。例如,如果VHD存储服务器410正在处理来自多个虚拟机的多个请求,则其可被配置为延迟迁移VHD文件中的某些或全部直到有可用的空闲处理器周期。在相同或另一个实施例中,如果可用带宽为低,则存储传送引擎4M可被配置为延迟迁移VHD 文件中的某些或全部直到有可用的带宽。转向操作1406,它示出响应于确定集合第二部分的至少子部分被下载到附连于第一服务器的存储设备上,执行附连于第一服务器的存储设备上的客操作系统。在示例性实施例中,在引导加载器已经退出之后的某个时刻并且客OS受虚拟机416的控制,第一部分可被成功地下载到本地存储420。虚拟平台402可以接收指示存储操作已结束的信号,并将任意已下载的VHD文件中的父位置字段修改为指向已下载的副本。在此处,虚拟平台402 可以使用已更新的位置信息来执行针对VHD文件的本地副本的IO操作。因此,由于虚拟平台402不再需要通过内部网络向VHD存储服务410发送读/写操作,因此减轻了 VHD存储服务410的压力以及对带宽的需求。现在参考图15,它示出图14所示的操作过程的替换操作过程,包括细化1508。如图所示,细化1508示出在实施例中,集合的第二部分包括主虚拟硬盘文件和机器差异虚拟硬盘文件,并且集合的第一部分包括用户差异虚拟硬盘文件。在此示例性实施例中,转向图 7,集合可包括主VHD文件504和机器差异VHD文件506。当客操作系统正在引导时,虚拟平台402可以将写IO任务和某些读IO任务发送到本地用户差异VHD文件514,并将对集合的读IO任务发送到VHD存储服务器410。在此示例中,在引导之前本地用户差异VHD文件 514可以为空,或者,当虚拟平台402接收请求以实例化虚拟机416时可以动态地创建本地用户差异VHD文件。在第一种情形中,配置文件可包括空的本地用户差异VHD文件514的位置。在第二种中,配置文件可包括机器差异VHD文件506的位置以及指示虚拟平台402 创建本地用户差异VHD文件514并将其链接到机器差异VHD文件506的信息。前述的详细描述通过示例和/或操作图阐述了系统和/或进程的各实施例。在这样的框图和/或示例包含一个或多个功能和/或操作的范围内,本领域技术人员将理解,这样的框图,或示例内的每一功能和/或操作可以分别地和/或共同地通过范围广泛的硬件、 软件、固件或几乎其任何组合来实现。尽管示出和描述了此处所描述的本主题的特定方面,但是,对于本领域的技术人员显而易见的是,基于此处的原理,在不偏离此处所描述的主题以及其广泛的方面的情况下,可以作出更改和修改,因此,所附权利要求书将包含在它们的范围内,所有这样的更改和修改都将在此处所描述的主题的真正的精神和范围内。
权利要求
1.一种用于将虚拟硬盘驱动器部署到虚拟机主机的系统,包括第一服务器G12),包括第一处理器(102);以及耦合至所述第一处理器(102)的第一存储器(106和/或104),所述第一存储器(106和/或104)包括在执行时使所述第一服务器执行以下动作的指令执行存储在第二服务器(410)上的虚拟硬盘文件集合(VHD A的VHD文件,(图5的504、506和508),(图6的505和508)或(图7的504和506))的客操作系统(220);在同时执行虚拟硬盘文件集合(VHD A的VHD文件,(图5的504、506和508),(图6的505和508)或(图7的504和506))的所述客操作系统(220)时,存储附连于所述第一服务器G12)的存储设备G20)中的虚拟硬盘文件集合(VHD A的VHD文件,(图5的504、506和508),(图6的505和508)或(图7的504和506))的已接收的副本;以及响应于确定所述虚拟硬盘文件集合(VHD A的VHD文件,(图5、6或7的510、512和514))的所述副本已被存储在附连于所述第一服务器(41 的所述存储设备(420)中,执行所述虚拟硬盘文件集合(VHD A的VHD文件,(图5、6或7的510、512和514))的所述副本的所述客操作系统(220)。
2.如权利要求1所述的系统,其特征在于,所述第一存储器还包括在执行时使所述第一服务器执行以下动作的指令从所述虚拟硬盘文件集合引导所述客操作系统,其中所述虚拟硬盘文件集合包括主虚拟硬盘文件、机器差异虚拟硬盘文件和用户差异虚拟硬盘文件。
3.如权利要求1所述的系统,其特征在于,所述第一存储器还包括在执行时使所述第一服务器执行以下动作的指令从所述虚拟硬盘文件集合以及存储在附连于所述第一服务器的所述存储设备中的主虚拟硬盘文件的预先高速缓存的副本引导所述客操作系统。
4.如权利要求1所述的系统,其特征在于,所述第一存储器还包括在执行时使所述第一服务器执行以下动作的指令从所述虚拟硬盘文件集合以及存储在附连于所述第一服务器的所述存储设备中的用户差异虚拟硬盘文件弓I导所述客操作系统。
5.如权利要求1所述的系统,其特征在于,所述第一存储器还包括在执行时使所述第一服务器执行以下动作的指令将用户差异虚拟硬盘文件合并到机器差异虚拟硬盘文件中,并将所述机器差异虚拟硬盘文件发送到所述第二服务器。
6.如权利要求1所述的系统,其特征在于,还包括所述第二服务器,包括第二处理器;以及耦合至所述第二处理器的第二存储器,所述第二存储器包括在执行时使所述第二服务器执行以下动作的指令将从所述第一服务器接收的用户差异虚拟硬盘文件合并到存储在所述第二服务器上的机器差异虚拟硬盘文件中。
7.如权利要求1所述的系统,其特征在于,还包括所述第二服务器,包括 第二处理器;以及耦合至所述第二处理器的第二存储器,所述第二存储器包括在执行时使所述第二服务器执行以下动作的指令从所述第一服务器接收至少用户差异虚拟硬盘文件;以及将至少所述用户差异虚拟硬盘文件发送到第三服务器。
8.如权利要求1所述的系统,其特征在于,还包括 所述第二服务器,包括第二处理器;以及耦合至所述第二处理器的第二存储器,所述第二存储器包括在执行时使所述第二服务器执行以下动作的指令将所述虚拟硬盘文件集合的至少部分预先高速缓存到所述第二服务器的随机访问存储器中。
9.如权利要求1所述的系统,其特征在于,还包括 第四服务器,包括第四处理器;以及耦合至所述第四服务器的第四存储器,所述第四存储器包括在执行时使所述第四服务器执行以下动作的指令响应于确定所述第一服务器包括机器差异虚拟硬盘文件的当前副本,指示客户机计算机系统连接到所述第一服务器。
10.如权利要求1所述的系统,其特征在于,还包括 第四服务器,包括第四处理器;以及耦合至所述第四服务器的第四存储器,所述第四存储器包括在执行时使所述第四服务器执行以下动作的指令响应于确定所述第一服务器上的负载为低,指示客户机计算机系统连接到所述第一服务器。
11.一种用于流虚拟硬盘的第一服务器(412)方法,包括从存储在第二服务器G10)中的机器差异虚拟硬盘文件(图6的506)和存储在附连于所述第一服务器G12)的存储设备G20)中的主虚拟硬盘文件(图6的510)引导客操作系统020),其中所述主虚拟硬盘文件(510)包括操作系统的副本,并且所述机器差异虚拟硬盘文件(506)包括用于为用户定制所述操作系统的所述副本的机器识别信息;在同时引导所述客操作系统O20)时,从所述第二服务器(410)下载所述机器差异虚拟硬盘文件的副本(图6的512);以及响应于确定所述机器差异虚拟硬盘文件的所述副本(图6的51 已被下载,从所述机器差异虚拟硬盘文件的所述副本(图6的51 和所述主虚拟硬盘文件(图6的510)执行所述客操作系统(220)。
12.如权利要求11所述的方法,其特征在于,还包括将数据块写入被预先高速缓存到附连于所述第一服务器的所述存储设备中的用户差异虚拟硬盘文件。
13.如权利要求11所述的方法,其特征在于,还包括将存储在用户差异虚拟硬盘文件中的数据写入存储在第二服务器中的所述机器差异虚拟硬盘文件。
14.如权利要求11所述的方法,其特征在于,还包括在迁移操作期间,将用户差异虚拟硬盘文件发送到所述第二服务器。
15.如权利要求11所述的方法,其特征在于,从所述存储服务器下载所述机器差异虚拟硬盘文件的所述副本还包括使用空闲带宽从所述第二服务器下载所述机器差异虚拟硬盘文件的所述副本。
全文摘要
本发明涉及从服务器到主机的流虚拟机技术。此处公开了用于将商用服务器配置成主机虚拟硬盘的技术。在示例性实施例中,虚拟硬盘文件可被分成多个差异VHD文件,当虚拟主机运行存储在服务器上的VHD文件时,文件中的一个或多个可被下载到虚拟主机。在一个或多个VHD文件被下载之后,虚拟主机可被配置为使用本地副本代替商用服务器上的副本。除以上之外,权利要求书具体实施方式
和附图中描述了其他技术。
文档编号G06F9/455GK102387197SQ20111030831
公开日2012年3月21日 申请日期2011年9月29日 优先权日2010年9月30日
发明者A·帕勒卡, D·L·格林, I·本-沙哈尔, M·洛利卡, O·B·伊万诺瓦, S·萨姆帕斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1