便于在多个物理机器间迁移虚拟机的系统和方法

文档序号:6596308阅读:219来源:国知局
专利名称:便于在多个物理机器间迁移虚拟机的系统和方法
技术领域
本发明总的涉及用于迁移虚拟机的系统和方法。本发明尤其涉及便于在多个物理机器间迁移虚拟机的系统和方法。
背景技术
在实现管理程序以在宿主计算装置上执行虚拟机的传统计算环境中,管理程序通常向虚拟机提供对由主机计算装置提供的硬件资源的访问。管理程序可分配来自物理计算装置池中的物理资源,所述物理计算装置池可包括提供不同层次的功能的异构处理器。在一些环境中,管理程序可能需要将虚拟机从一个物理计算装置迁移到第二物理计算装置; 例如,当第一物理计算装置需要维护或者不再具有给虚拟机提供所分配的硬件资源的能力时。如果两个物理计算装置提供不同的功能(例如,第一物理计算装置可访问某个物理资源(例如,网络存储装置或物理盘)而第二物理计算装置不提供对该物理资源的访问),那么从第一物理计算装置向第二物理计算装置迁移虚拟机可能会失败。例如,虚拟机可能执行要求访问由第一物理计算装置而不是由第二物理计算装置提供的功能的进程,那么虚拟机的迁移将导致难以预料的执行错误或者不希望的虚拟机的终止。对这个问题的常规解决方案通常涉及到在物理计算装置池中提供同构的功能,例如,通过从池中排除对不能被池中的每个物理计算装置普遍访问的物理资源提供访问的物理计算装置,或通过禁止对该物理资源的访问。然而,这个方法通常限制了管理员为用户提供各种范围的功能的能力。而且,当物理资源老化以及要求更换时,管理员可能找不到提供相同功能的替代装置。

发明内容
一方面,一种便于在多个物理机器间迁移虚拟机的方法包括将虚拟机与至少一个物理资源相关联,所述至少一个物理资源对于多个物理机器的第一子集是不可访问的而对于所述多个物理机器的第二子集是可用的,所述虚拟机在多个物理机器的第二子集中的第一物理机器上执行。该方法包括接收向多个物理机器中的第二物理机器迁移虚拟机的请求。该方法包括识别多个物理机器的第二子集中的第二物理机器。该方法包括将虚拟机迁移到第二物理机器。在一个实施例中,该方法包括接收识别与包括处理器类型的至少一个物理资源关联的虚拟机的请求。在又一个实施例中,该方法包括接收识别与包括网络的至少一个物理资源关联的虚拟机的请求。在又一个实施例中,该方法包括接收识别与包括网络存储装置的至少一个物理资源关联的虚拟机的请求。在又一个实施例中,该方法包括接收识别与包
4括多个资源的至少一个物理资源关联的虚拟机的请求。在一些实施例中,该方法包括响应于第一物理机器上的迁移事件来识别能访问至少一个物理资源的第二物理机器。在这些实施例的一个中,迁移事件是在第一物理机器上的软件安装。在又一个方面,便于在多个物理机器间迁移虚拟机的系统包括管理程序和管理组件。管理组件将虚拟机与至少一个物理资源相关联,所述至少一个物理资源对于所述多个物理机器的第一子集是不可访问的而对于所述多个物理机器的第二子集是可用的,所述虚拟机在所述多个物理机器的第二子集中的第一物理机器上执行。管理组件接收向多个物理机器中的第二物理机器迁移虚拟机的请求。管理组件识别多个物理机器的第二子集中的第二物理机器。管理程序从管理组件接收第二物理机器的标识并将虚拟机迁移到第二物理机器。一个实施例中,管理组件包括用于接收请求的用户接口。一些实施例中,管理组件接收向多个物理机器的第一子集中的物理机器迁移虚拟机的请求。在这些实施例的一个中,管理组件指示管理程序向多个物理机器的第二子集中的第二物理机器迁移虚拟机。在这些实施例又一个中,管理组件拒绝向多个物理机器的第一子集中的物理机器迁移虚拟机的请求。


本发明的前述和其它目的、方面、特征和优点通过参考下述结合附图的描述将会更加明显并更易于理解,其中图IA是描述包括管理程序层、虚拟化层和硬件层的计算环境的实施例的框图;图IB和IC是描述有益于与此处所描述的方法和系统的相关的计算装置的实施例的框图;图2是描述便于在多个物理机器间迁移虚拟机的系统的实施例的框图;图3是描述便于在多个物理机器间迁移虚拟机的方法的实施例的流程图;以及图4是描述由便于在多个物理机器间迁移虚拟机的系统所提供的用户接口的实施例的屏幕快照。
具体实施例方式现参考图1A,框图描述了虚拟化环境的一个实施例。简而言之,计算装置100包括管理程序层、虚拟化层和硬件层。管理程序层包括管理程序101 (也称为虚拟化管理器), 其通过在虚拟化层中执行的至少一个虚拟机来分配和管理对硬件层中的多个物理资源的访问(例如处理器221和盘228)。虚拟化层包括至少一个操作系统110和分配给至少一个操作系统110的多个虚拟资源,虚拟资源可包括而不限于多个虚拟处理器13h、132b、 132c (总称为13 和虚拟盘14加、142b、142c (总称为142)、以及例如虚拟存储器和虚拟网络接口的虚拟资源。可将多个虚拟资源和操作系统110称为虚拟机106。虚拟机106可包括控制操作系统105,该控制操作系统105与管理程序101通信,并用于执行应用以管理并配置计算装置100上的其他虚拟机。现参考图1A,具体而言,管理程序101可以以模拟可访问物理设备的操作系统的任何方式向操作系统提供虚拟资源。管理程序101可以向任一数量的客户操作系统110a、
5110b(总称为110)提供虚拟资源。一些实施例中,计算装置100执行一种或多种管理程序。 这些实施例中,管理程序可用于模拟虚拟硬件、划分物理硬件、虚拟化物理硬件并执行提供对计算环境的访问的虚拟机。管理程序可包括由位于美国加利福尼亚州的I^alo Alto的 VMWare公司制造的这些程序、XEN管理程序(一种开源产品,其开发由开源Xen. org协会监管)、由Microsoft公司提供的HyperV、VirtualServer或虚拟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所
7示,计算装置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公司制造的微处理器单元;由位于美国伊利诺伊州 Schaumburg的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控制器可
8以控制一个或多个I/O装置,例如键盘1 和指示装置127 (如鼠标或光笔)。此外,I/O装置还可以为计算装置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配置成拥有多个显示装置的各种方式和实施例。
在进一步的实施例中,I/O装置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或750智能电话。在这些实施例的一些中,TERO智能电话是在1 ImOS操作系统的控制下操作并且包括笔输入设备以及五向导航设备。在其他实施例中,计算装置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
10系列、黑莓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 ElectronicsAmerica 公司制造的 DigitalAudioPlayer 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 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 的 CitrixApplication Networking Group、位于美国力口州Mountain View 的 Silver Peak Systems 公司、位于美国力口州 San Francisco 的 Riverbed Technology 公司、位于美国华盛顿州Seattle的F5Ne tworks公司或位于美国加州Sunnyvale的 Juniper Networks公司制造的设备系列中的一个设备。在其他实施例中,计算装置100可被称为客户机节点、客户机器、端节点或端点。在一些实施例中,客户机100具有作为客户机节点寻求访问服务器所提供的资源的能力以及作为服务器节点为其它客户机提供对所寄载的资源访问的能力。在一些实施例中,第一客户机计算装置IOOa与第二服务器计算装置IOOb通信。在一个实施例中,客户机与服务器群中的计算装置100之一进行通信。例如,通过网络,客户机可以请求执行由服务器群中的计算装置100所寄载的各种应用以及接收应用执行结果的输出数据以用于显示。在一个实施例中,客户机执行程序邻近应用(program neighborhood application)以与服务器群中的计算装置100通信。计算装置100可以执行、操作或者以其它方式提供应用,该应用可以是任何类型和/或形式的软件、程序或可执行指令,诸如任何类型和/或形式的web浏览器、基于web 的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、或Java小程序,或者能够在计算装置100上执行的任何其他类型和/或形式的可执行指令。在一些实施例中,应用可以是由第二计算装置代表第一计算装置的用户执行的基于服务器的或者基于远程的应用。在其他实施例中,第二计算装置可使用任何瘦客户端或远程显示协议向第一客户计算装置显示输出的数据,所述协议如由位于美国佛罗里达州Ft. Lauderdale的 CitrixSystems公司制造的独立计算架构(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的Desktone公司制造的Virtual-D协议。应用可以使用任何类型的协议,并且其可以是例如HTTP客户机、 FTP客户机、Oscar客户机或Telnet客户机。在其他实施例中,应用包括与诸如软IP电话的网络电话(VoIP)通信有关的任意类型的软件。在进一步的实施例中,应用包括与实时数据通信有关的任何应用,例如用于流式传输视频和/或音频的应用。一些实施例中,第一计算装置100a代表客户机计算装置100b的用户执行应用。 其他实施例中,计算装置100a执行虚拟机,其提供执行会话,在该会话中,代表用户或客户机计算装置100b执行应用。一个这样的实施例中,执行会话是寄载的桌面会话。另一个这样的实施例中,计算装置100执行终端服务会话。终端服务会话可以提供寄载的桌面环境。 在另一个这样的实施例中,执行会话提供对计算环境的访问,计算环境可包括以下的一个或多个应用、多个应用、桌面应用以及在其中可执行一个或多个应用的桌面会话。现参考图2,框图描述了便于在多个物理机器间迁移虚拟机的系统的一个实施例。 总的来说,该系统包括管理组件104和管理程序101。该系统包括多个计算装置100、多个虚拟机106、多个管理程序101、多个被称为工具堆栈104的管理组件和物理资源沈0。多个物理机器100可以各自作为与图IA-C有关的上文所描述的计算装置100而被提供。现参考图2,更具体地,管理组件将虚拟机与至少一个物理资源相关联,所述至少一个物理资源对于多个物理机器的第一子集是不可访问的而对于多个物理机器的第二子集是可用的,所述虚拟机在多个物理机器的第二子集中的第一物理机器上执行。管理组件接收向多个物理机器中的第二物理机器迁移虚拟机的请求。管理组件识别多个物理机器的第二子集中的第二物理机器。一个实施例中,计算装置100a、计算装置IOOb和计算装置IOOc是多个物理机器的一部分。又一个实施例中,计算装置IOOc在多个物理机器的第一子集中,因为它不能访问物理资源沈0。又一个实施例中,计算装置IOOa和IOOb是多个物理机器的第二子集的一部分,因为它们各自都可以访问物理资源260。一个实施例中,物理资源260驻留在计算装置中;例如,物理资源260可以是由计算装置IOOd提供的物理存储器或者由计算装置IOOd提供的数据库或应用。又一个实施例中,物理资源260是计算装置;例如,物理资源260可以是网络存储装置或应用服务器。又一个实施例中,物理资源260是计算装置的网络;例如,物理资源260可以是存储区域网络。一个实施例中,管理组件被称为工具堆栈10如。又一个实施例中,管理操作系统 105a(其可以被称为控制操作系统105a)包括管理组件。在一些实施例中,管理组件被称为工具堆栈。在这些实施例的一个中,管理组件是与图1A-1C有关的上文所描述的工具堆栈 104。一个实施例中,管理组件104提供用户接口,该用户接口用于从用户(例如管理员)接收信息,识别虚拟机106请求或要求访问的物理资源260的类型。又一个实施例中, 管理组件104提供用于从用户(例如管理员)接收迁移虚拟机106b的请求的用户接口。又一个实施例中,管理组件104访问数据库,所述数据库将至少一个虚拟机的标识与由所识别的虚拟机106要求的、请求的或者对其可用的至少一个物理资源的标识相关联。管理程序IOla在计算装置IOOa上执行。管理程序101将虚拟机250迁移到物理机器100b。一个实施例中,管理程序IOla从管理组件10 接收第二计算装置IOOb的标识和向所识别的第二计算装置迁移虚拟机106b的命令。现参考图3流程图描述了便于在多个物理机器间迁移虚拟机的方法的一个实施例。总的来说,该方法包括将虚拟机与至少一个物理资源相关联,所述至少一个物理资源对于多个物理机器的第一子集是不可访问的而对于多个物理机器的第二子集的可用的,所述虚拟机在多个物理机器的第二子集中的第一物理机器上执行(302)。该方法包括接收向多个物理机器中的第二物理机器迁移虚拟机的请求(304)。该方法包括识别多个物理机器的第二子集中的第二物理机器(306)。该方法包括将虚拟机迁移到第二物理机器(308)。一些实施例中,提供具有便于在多个物理机器间迁移虚拟机的可执行代码的计算机可读介质。现参考图3,更具体地,管理组件将虚拟机与至少一个物理资源相关联,所述至少一个物理资源对于多个物理机器的第一子集是不可访问的而对于多个物理机器的第二子集是可用的,所述虚拟机在多个物理机器的第二子集中的第一物理机器上执行(302)。一个实施例中,管理组件104经由用户接口接收虚拟机请求或要求访问的物理资源沈0的标识;例如,管理员可以经由用户接口来配置虚拟机并在配置文件中包含物理资源沈0的标识。又一个实施例中,管理组件104接收虚拟机106b将要提供的服务的标识,而且,管理组件104识别虚拟机106需要访问的物理资源沈0。管理组件接收向多个物理机器中的第二物理机器迁移虚拟机的请求(304)。一个实施例中,管理组件104经由用户接口接收来自管理员的请求,所述用户接口是由管理组件104在其中执行的控制操作系统105提供的。又一个实施例中,管理组件104接收当该事件发生时应自动迁移虚拟机的迁移事件的标识;例如,管理员可识别对于执行虚拟机106b的第一物理机器IOOa的维护计划(用于安装软件更新或执行病毒扫描或执行其他管理任务的时间)并且指引管理组件104在维护事件之前将虚拟机106b迁移到多个物理机器中的另一个物理机器106。一个实施例中,管理组件104接收未指定目的物理计算装置的请求;例如,管理员可指示虚拟机106b应该迁移到多个物理机器的任何一个而不是指定虚拟机106b应该迁移到计算装置100b。又一个实施例中,管理组件104识别物理计算装置100b,其提供对虚拟机106b需要访问的任何物理资源沈0的访问。一个实施例中,管理组件104接收将虚拟机迁移到指定的目的物理计算装置的请求;例如,管理员可选择计算装置IOOb或IOOc并且指示管理组件104将虚拟机106b迁移到所选择的计算装置。又一个实施例中,管理组件104确认管理员已经选择了计算装置100, 所述计算装置100提供对虚拟机106b需要访问的物理资源的每一个的访问。一些实施例中,管理组件104确定管理员已经选择了计算装置100c,所述计算装置IOOc不提供对虚拟机106b要求的物理资源260的访问。在这些实施例的一个中,管理组件104拒绝迁移虚拟机的请求。在这样的实施例中,管理组件104可提供计算装置IOOc未能提供的物理资源的标识。在这些实施例的又一个中,管理组件104识别供替代的计算装置100b,其提供对物理资源260的访问。在这个实施例中,管理组件104可请求向所识别的计算装置IOOb迁移虚拟机106b的许可;或者,管理组件104可自动地将虚拟机迁移到所识别的物理机器并传输该迁移的标识。又一个实施例中,管理组件204确认所识别的物理计算装置提供对物理资源沈0的访问的能力。在一个实施例中,请求识别与具有处理器类型的至少一个物理资源关联的虚拟机。在又一个实施例中,请求识别与至少一个网络存储装置关联的虚拟机。又一个实施例中,请求识别与网络关联的虚拟机。又一个实施例中,请求识别与多个资源关联的虚拟机。 一些实施例中,管理组件104基于虚拟机106b的标识来识别物理资源沈0。管理组件识别多个物理机器的第二子集中的第二物理机器(306)。如上面所指出的,一些实施例中,管理组件104接收向其迁移虚拟机106b的指定的物理机器IOOb的标识。在这些实施例的一个中,管理组件104确认物理机器IOOb的提供虚拟机106b所期望的物理资源沈0的能力。在这些实施例的又一个中,管理组件104识别所指定的物理机器 IOOc的替代机器。其他实施例中,管理组件104不接收物理机器IOOb的标识而是响应于被包含在与虚拟机106b关联的数据和请求中的数据来识别物理机器100b。进一步的实施例中,管理组件104通过访问虚拟机106b与物理资源260之间的关联和物理资源260与物理机器IOOb之间的关联来识别物理机器100b。一些实施例中,举例来说,虚拟机配置对象可包括至少一个关联的虚拟块设备 (VBD)对象的标识。在这些实施例的一个中,VBD对象定义引导时将要出现在虚拟机106b 内的磁盘设备(因此,其对运行在虚拟机106b内的应用将是可访问的)。在这些实施例的又一个中,VBD对象ν指向虚拟磁盘映像对象(VDI) ;VDI对象代表可经由对应于VBD ν的磁盘设备从虚拟机106内读/写的虚拟硬盘映像。在这些实施例的又一个中,VDI对象指向存储仓库(SR)对象,其定义虚拟磁盘映像如何被表示为一些物理块存储上的位。在这些实施例的又一个中,SR s对物理资源池ρ中的物理机器IOOb (其可被称为主机h)是可访问的,如果物理块设备(PBD)对象连接对应于s和h的对象,并且h被连接到表示池ρ的对象。在这些实施例的又一个中,PBD对象的字段可指定特定的主机如何访问与特定的SR有关的存储。在这些实施例的又一个中,考虑到上文所描述的对象和关系,为了识别哪个物理主机100可访问物理资源,例如实例化虚拟机106b,v,所需的存储资源,管理组件识别与V 关联的VBD、识别与这些VBD关联的VDI、识别与这些VDI关联的SR、识别与这些SR关联的 PBD以及识别与这些PBD关联的Host (主机)。在其他实施例中,其中物理资源260不是存储相关的资源,管理组件104可执行类似的步骤来识别定义物理资源沈0的对象的类型以及确定物理主机是否能访问支持给定的虚拟机106所需要的物理网络资源。在这些实施例的一个中,作为又一个例子,所涉及的对象代表网络资源而不是存储配置。在这些实施例的又一个中,为了识别能够给虚拟机 106η提供物理资源沈0的物理机器100b (主机h),管理组件104确定h属于能访问虚拟机 106b所需的所有存储的主机集合以及确定h是否属于能看到虚拟机106b所需的所有网络的主机集合。在这些实施例的又一个中,管理组件104确定主机h是否有足够的物理资源来开始执行虚拟机106b ;例如,管理组件104可确定h是否由足够的空闲物理RAM来启动虚拟机10 。在其他实施例中,管理组件104维护配置对象和配置对象之间的关系的至少一个数据库。在这些实施例的一个中,管理组件104通过访问这些数据库的其中一个来识别多个物理机器100的第二子集中的第二物理机器100b。管理程序将虚拟机迁移到第二物理机器(308)。在一个实施例中,管理程序IOla 从管理组件104接收虚拟机106b的标识。在又一个实施例中,管理程序IOla从管理组件 104接收计算装置IOOb的标识。在又一个实施例中,管理程序IOla向管理程序IOlb传输虚拟机106b的标识。在又一个实施例中,管理程序IOla向管理程序IOlb传输虚拟机106b 的存储器映像。在又一个实施例中,管理程序IOla向管理程序IOlb传输虚拟机106b的执行状态的标识和由执行的虚拟机106b访问的数据。在又一个实施例中,管理组件10 和管理组件104b经由管理程序IOla和IOlb通信以完成虚拟机的迁移。现参考图7,屏幕快照描述了用户接口的一个实施例,所述用户接口显示所识别的在多个物理机器的第二子集中的物理机器100b。在一个实施例中,在控制操作系统105 (其本身在虚拟机106a内执行)内执行的管理组件向用户(诸如多个物理机器的管理员)显示用户接口 702。又一个实施例中,用户接口包括物理机器的列举704。又一个实施例中,管理组件104提供用户接口 706,通过该用户接口 706,用户可管理一个或多个所列举的物理机器和虚拟机。又一个实施例中,用户接口 706提供接口元件,用户可使用该元件来请求虚拟机的迁移。如图7所描述的,该接口元件可以是上下文菜单。图7也包括接口元件708,其显示哪个物理机器在多个物理机器的第一子集中以及哪个物理机器在第二子集中。如图7 所示,“hl3”指的是诸如不提供对物理资源沈0的访问的计算装置IOOc的机器,而“h09”和 “hl2”指的是诸如多个物理机器的第二子集中的第一计算装置IOOa和第二计算装置IOOb 的机器。在一些实施例中,如图7所示,管理组件104可拒绝向多个物理机器的第一子集中的一个物理机器迁移虚拟机的请求;例如通过禁用与物理机器IOOc管理的交互元件(在图 4中,通过禁用与“hl3”关联的超链接)。在这些实施例的一个中,管理组件104可显示关于为什么机器是第一子集而不是第二子集的一部分的解释;例如,用户接口元件708显示 “hl3”不能访问用户试图迁移的虚拟机所需的物理存储资源的指示。
一些实施例中,此处所描述的方法和系统提供了便于迁移虚拟机的功能。在这些实施例的一个中,通过确定用户是否试图将虚拟机迁移到不能提供对该虚拟机所请求或要求的物理资源的访问的物理机器,以及通过将虚拟机仅迁移到提供该物理资源的多个物理机器的其中一个子集,此处描述的方法和系统提供改善的迁移功能而不要求同构的物理机器池。应该理解,此处描述的系统可提供多个组件或每个组件并且这些组件可以在单独机器上提供,或者在一些实施例中,可在分布式系统的多个机器上提供。此外,上述系统和方法可作为一件或多件产品上所体现的或在其中的一个或多个计算机可读程序而被提供。 所述产品可以是软盘、硬盘、CD-ROM,闪存卡、PROM、RAM、ROM或磁带。通常,计算机可读程序可以任何编程语言来实现,如LISP、PERL、C、C++、C#、PROLOG,或者诸如JAVA的任何字节码语言。软件程序可以作为目标代码被存储在一件或多件产品上或其中。已经描述了便于在多个物理机器之间迁移虚拟机的方法和系统的某些实施例,对本领域技术人员而言,显而易见可以使用包含所述实施例的概念的其他实施例。本发明应该不限于某些实施例,而是应由下列权利要求的精神和范围进行限制。
权利要求
1.一种便于在多个物理机器间迁移虚拟机的方法,所述方法包括将虚拟机与至少一个物理资源相关联,所述至少一个物理资源对于所述多个物理机器的第一子集是不可访问的而对于所述多个物理机器的第二子集是可用的,所述虚拟机在所述多个物理机器的第二子集中的第一物理机器上执行;接收向所述多个物理机器中的第二物理机器迁移虚拟机的请求;识别所述多个物理机器的第二子集中的第二物理机器;以及将虚拟机迁移到所述第二物理机器。
2.根据权利要求1所述的方法,其中接收还包括接收向所述多个物理机器的第一子集中的物理机器迁移虚拟机的请求。
3.根据权利要求2所述的方法,还包括向所述多个物理机器的第二子集中的第二物理机器迁移虚拟机。
4.根据权利要求2所述的方法,还包括拒绝迁移虚拟机的请求。
5.根据权利要求1所述的方法,其中接收还包括接收识别与包括处理器类型的至少一个物理资源关联的虚拟机的请求。
6.根据权利要求1所述的方法,其中接收还包括接收识别与包括网络的至少一个物理资源关联的虚拟机的请求。
7.根据权利要求1所述的方法,其中接收还包括接收识别与包括网络存储装置的至少一个物理资源关联的虚拟机的请求。
8.根据权利要求1所述的方法,其中接收还包括接收识别与包括多个资源的至少一个物理资源关联的虚拟机的请求。
9.根据权利要求1所述的方法,还包括响应于迁移事件来识别能访问所述至少一个物理资源的第二物理机器。
10.根据权利要求9所述的方法,其中所述迁移事件包括在所述第一物理机器上的软件安装。
11.根据权利要求9所述的方法,其中所述迁移事件包括在所述第一物理机器上的补丁安装。
12.—种在其上具有指令的计算机可读介质,当执行所述指令时提供便于在多个物理机器间迁移虚拟机的方法,所述计算机可读介质包括将虚拟机与至少一个物理资源相关联的指令,所述至少一个物理资源对于所述多个物理机器的第一子集是不可访问的而对于所述多个物理机器的第二子集是可用的,所述虚拟机在所述多个物理机器的第二子集中的第一物理机器上执行;接收向所述多个物理机器中的第二物理机器迁移虚拟机的请求的指令;识别所述多个物理机器的第二子集中的第二物理机器的指令;以及将虚拟机迁移到所述第二物理机器的指令。
13.根据权利要求12所述的计算机可读介质,其中接收的指令还包括接收向所述多个物理机器的第一子集中的物理机器迁移虚拟机的请求的指令。
14.根据权利要求13所述的计算机可读介质,还包括向所述多个物理机器的第二子集中的第二物理机器迁移虚拟机的指令。
15.根据权利要求13所述的计算机可读介质,还包括拒绝迁移虚拟机的请求的指令。
16.根据权利要求12所述的计算机可读介质,其中接收的指令还包括接收识别与包括处理器类型的至少一个物理资源关联的虚拟机的请求的指令。
17.根据权利要求12所述的计算机可读介质,其中接收的指令还包括接收识别与包括网络的至少一个物理资源关联的虚拟机的请求的指令。
18.根据权利要求12所述的计算机可读介质,其中接收的指令还包括接收识别与包括网络存储装置的至少一个物理资源关联的虚拟机的请求的指令。
19.根据权利要求12所述的计算机可读介质,其中接收的指令还包括接收识别与包括多个资源的至少一个物理资源关联的虚拟机的请求的指令。
20.一种便于在多个物理机器间迁移虚拟机的系统,所述系统包括管理组件,其i)将虚拟机与至少一个物理资源相关联,所述至少一个物理资源对于所述多个物理机器的第一子集是不可访问的而对于所述多个物理机器的第二子集是可用的, 所述虚拟机在所述多个物理机器的第二子集中的第一物理机器上执行,ii)接收向所述多个物理机器中的第二物理机器迁移虚拟机的请求,以及iii)识别所述多个物理机器的第二子集中的第二物理机器;以及管理程序,其从管理组件接收所述第二物理机器的标识并将虚拟机迁移到所述第二物理机器。
21.根据权利要求20所述的系统,其中管理组件还包括用户接口,所述用户接口接收向所述多个物理机器的第一子集中的物理机器迁移虚拟机的请求。
22.根据权利要求20所述的系统,其中管理组件还包括用于指示管理程序向所述多个物理机器的第二子集中的第二物理机器迁移虚拟机的装置。
23.根据权利要求20所述的系统,其中管理组件还包括用于拒绝迁移虚拟机的请求的直ο
全文摘要
一种便于在多个物理机器间迁移虚拟机的方法包括将虚拟机与至少一个物理资源相关联,所述至少一个物理资源对于多个物理机器的第一子集是不可访问的而对于多个物理机器的第二子集是可用的,所述虚拟机在多个物理机器的第二子集中的第一物理机器上执行。该方法包括接收向多个物理机器中的第二物理机器迁移虚拟机的请求。该方法包括识别多个物理机器的第二子集中的第二物理机器。该方法包括将虚拟机迁移到第二物理机器。
文档编号G06F9/455GK102317909SQ200980156630
公开日2012年1月11日 申请日期2009年11月19日 优先权日2008年12月19日
发明者D·J·斯科特, J·J·鲁德拉姆, R·W·夏普, V·汉奎兹 申请人:思杰系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1