被克隆的虚拟机的负载均衡的制作方法

文档序号:11935118阅读:271来源:国知局
被克隆的虚拟机的负载均衡的制作方法与工艺

云计算和虚拟机(VM)网络极大地改进了资源分配的灵活性以解决计算中心中的工作负载。灵活性源于根据工作负载的需求利用真实数目的物理机和VM实例的能力。通常,当在VM网络中启动进程时,进程以低资源需求开始(例如,在一个VM上运行)。随着进程处理的工作负载增加,额外的VM可以根据需要被实例化以支持该进程。例如,简单计算最初由单个VM所支持。当针对计算的请求开始以比VM能够执行计算更快的速率进行时,第二VM被实例化以与第一VM并行地执行计算。

在典型的VM网络中,工作负载可以快速地增加和减少。因此,期望额外的VM的快速实例化。然而,通常,新实例化的VM的配置可以是耗时的过程,并且经常限制VM网络对工作负载中的增加的响应性。替选地,可以通过克隆已经被配置为支持该进程的VM(父VM)来实例化新的VM(子VM)。通过克隆父VM,父VM的设置和状态可以被快速地映射到子VM,而没有必要配置子VM。因此,可以使用该进程所需的适当设置和状态来创建新的子VM。

然而,新的子VM的创建对由现有VM利用的资源提出了进一步的需求,这可能否定克隆的好处或导致现有VM的性能不足。为了管理资源利用,VM可能需要在整个VM网络中被迁移或移动。例如,如果在相同主机计算机上被实例化的父VM和几个子VM过度利用主机计算机中可用的存储器(例如,需要比可用的存储器更多的存储器),则VM的子集可能需要被迁移到另一主机计算机。



技术实现要素:

在一个实施例中,公开了一种用于管理虚拟机网络中的虚拟机的布置的方法。该方法包括确定虚拟机的集合中的至少一个虚拟机是否需要与该集合中的其他虚拟机分离,该虚拟机的集合支持进程并在第一主机计算机上运行。如果至少一个虚拟机需要被分离,则至少一个虚拟机基于被改变的存储器页的数目被选择被分离。然后所选择的VM与该集合中的其他虚拟机分离。

在第二实施例中,公开了一种非暂时性计算机可读存储介质。该非暂时性计算机可读存储介质包含程序指令,当由一个或多个处理器执行时,使得该一个或多个处理器确定虚拟机的集合中的至少一个虚拟机是否需要与该集合中的其他虚拟机分离,该虚拟机的集合支持进程并在第一主机计算机上运行。如果该虚拟机的集合中的至少一个虚拟机需要与该虚拟机的集合分离,则来自该虚拟机的集合的该虚拟机中的至少一个基于被改变的存储器页的数目而被选择,并且该虚拟机与该集合中的该其他虚拟机分离。

在第三实施例中,公开了一种具有至少一个主机计算设备的计算机系统,该主机计算设备包括用于运行被实例化的虚拟机的处理器和存储器。至少一个主机计算设备被配置为确定虚拟机的集合中的至少一个虚拟机是否需要与该集合中的其他虚拟机分离,该虚拟机的集合支持进程并在第一主机计算机上运行,以及如果该虚拟机的集合中的至少一个虚拟机需要与该虚拟机的集合分离,则基于被改变的存储器页的数目从该虚拟机的集合选择该虚拟机中的至少一个,并且将该虚拟机与该集合中的该其他虚拟机分离。

从结合附图的以下详细描述中,本发明的实施例的其他方面和优点将变得显而易见,附图通过本发明的原理的示例被示出。

附图说明

图1是虚拟机网络的框图。

图2是来自图1的虚拟机网络的主机计算机的框图。

图3示出了支持进程的父虚拟机,该父虚拟机具有从该父虚拟机克隆几个子VM以帮助支持该进程。

图4是示出了图1的子VM的存储器使用的框图。

图5是根据本发明的实施例的用于管理虚拟机网络中的虚拟机的布置并选择要分离的虚拟机的技术的流程图。

图6A示出了根据本发明的实施例通过将VM迁移到第二主机计算机以将该VM与支持进程的其他VM分离。

图6B示出了根据本发明的实施例通过将其他VM迁移到第二主机计算机以将该VM与支持进程的其他VM分离。

在整个说明书中,相似的附图标记可以用于标识相似的元件。

具体实施方式

将容易理解,如在本文中大体描述的和在附图中示出的实施例的组件可以以各种各样的不同配置来布置和设计。因此,如图所示,以下各种实施例的更详细的描述不旨在限制本公开的范围,而仅是代表各种实施例。虽然在附图中呈现了实施例的各个方面,但是除非特别指出,附图不必按比例绘制。

在不脱离本发明的精神或本质特性的情况下,本发明可以以其他具体形式被实施。所描述的实施例在所有方面都被认为仅是说明性的而非限制性的。因此,本发明的范围由所附权利要求书而不是由本具体实施方式来指示。在权利要求的等同物的含义和范围内的所有改变将被包括在其范围内。

贯穿本说明书对特征、优点或类似语言的引用并不意味着可以用本发明实现的所有特征和优点应当或在本发明的任何单个实施例中。相反,涉及特征和优点的语言被理解为意味着结合实施例描述的具体特征、优点或特性被包括在本发明的至少一个实施例中。因此,贯穿本说明书的特征和优点以及类似语言的讨论可以,但不必,指代相同的实施例。

此外,本发明的所描述的特征、优点和特性可以以任何合适的方式组合在一个或多个实施例中。根据本文的描述,相关领域的技术人员将认识到本发明可以在没有特定实施例的具体特征或优点的一个或多个具体特征或优点的情况下实施。在其他示例中,在某些实施例中可以识别到可能不存在于本发明的所有实施例中的额外的特征和优点。

贯穿本说明书对“一个实施例”、“实施例”或类似语言的引用意味着结合所指示的实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,贯穿本说明书的短语“在一个实施例中”、“在实施例中”和类似语言可以,但不必,都指代相同的实施例。

现在转到图1,示出了虚拟机网络100(VM网络)的框图。VM网络包括网络102,主机计算机的集群C-1、C-2...CN(其中N是正整数)和数据存储集群104。包括在分布式计算机系统中的主机计算机集群的准确数目可以是,例如从几个集群到几十个集群或更多。不同集群的主机计算机和数据存储集群连接到网络。因此,集群中的每个主机计算机能够经由网络访问数据存储集群,并且可以与其他主机计算机共享由数据存储集群提供的资源。因此,在任何主机计算机上运行的任何进程也可以经由网络访问数据存储集群。

在图示的实施例中,集群C-1、C-2...CN中的每一个包括多个主机计算机H-1、H-2...HM(其中M是正整数)以及集群管理服务器110。包括在每个集群中的主机计算机的数目可以是任何数目,例如从一个到几百个或更多。此外,包括在每个集群中的主机计算机的数目可以变化,使得不同集群可以具有不同数目的主机计算机。虽然主机计算机中的至少一些主机计算机可以被虚拟化,但在图1的实施例中,主机计算机是物理计算机系统,该物理计算机系统托管或支持一个或多个VM,使得VM在物理计算机系统上执行。主机计算机可以是通常在数据中心中找到的服务器。作为示例,主机计算机可以是安装在一个或多个服务器机架中的服务器。通常,一个集群的主机计算机位于相同的服务器机架内。

集群C-1、C-2...C-N中的每个集群管理服务器110操作以监视和管理相应集群中的主机计算机H-1、H-2...H-M。每个集群管理服务器可以被配置为监视主机计算机和在相应集群中的主机计算机上运行的VM(例如,虚拟机(VM))的当前配置。所监视的配置可以包括每个主机计算机的硬件配置、诸如CPU类型和存储器大小,和/或每个主机计算机的软件配置、诸如操作系统(OS)类型和安装的应用或软件程序。所监视的配置还可以包括VM托管信息,即,哪些VM被托管并运行在哪些主机计算机上。所监视的配置还可以包括VM信息。VM信息可以包括每个VM的大小、针对每个VM的虚拟化硬件配置(诸如虚拟CPU类型和虚拟存储器大小)、针对每个VM的软件配置(诸如OS类型和在每个VM上运行的安装的应用或软件程序)、以及每个VM的虚拟存储大小。VM信息还可以包括资源参数设置,诸如VM所消耗的各种资源(例如,CPU、存储器、网络带宽和存储装置)的需求、限制、预留和共享值。VM针对可消耗资源的需求由托管VM的主机通过监视VM对资源的当前使用(例如CPU处理使用、存储器使用、网络使用和/或存储装置使用)而被确定,并且被提供给相应的集群管理服务器。

在一些实施例中,集群管理服务器110可以在单独的物理计算机上实现。在其他实施例中,集群管理服务器可以被实现为在主机计算机上运行的或在主机计算机上运行的虚拟计算机(未示出)上运行的软件程序。在一个实现中,集群管理服务器是具有可用于这样的服务器的特征中的至少一些的VMware vCenterTM服务器,并且每个资源管理模块(RMM)112是VMware分布式资源调度器TM,其提供如本领域所知的分布式资源调度器(DRS)服务。

网络102可以是允许连接到网络的设备之间的、使用例如TCP或UDP传输层的通信的任何类型的计算机网络或网络的组合。网络102可以包括因特网、广域网(WAN)、局域网(LAN)、存储区域网络(SAN)、光纤信道网络和/或其他网络。网络102可以被配置为支持适于与存储阵列通信的协议,诸如光纤信道、因特网小型计算机系统接口(iSCSI)、以太网光纤信道(FCoE)和HyperSCSI。

数据存储集群104用于存储针对集群C-1、C-2...C-N的主机计算机的数据,其可以像通常连接到计算机系统的任何其他类型的存储设备那样被访问。在一个实施例中,可以由使用任何文件系统(例如,虚拟机文件系统(VMFS)或网络文件系统(NFS))的实体(例如在主机计算机上运行的VM)访问数据存储集群。数据存储集群包括一个或多个计算机数据存储设备116,其可以是任何类型的存储设备,诸如固态设备(SSD)、硬盘或两者的组合。这些存储设备中的至少一些可以是主机计算机的本地存储设备,例如主机计算机内的本地附接盘或SSD。存储设备可以作为网络附加存储(NAS)和/或存储区域网络(SAN)的组件来操作。数据存储集群包括存储管理模块118,其管理数据存储集群的操作。在一个实施例中,存储管理模块是在数据存储集群的一个或多个计算机系统(未示出)上执行的计算机程序。数据存储集群支持多个数据存储DS-1、DS-2...DS-X(其中X是正整数),其可以使用逻辑单元号(LUN)来标识。在一个实施例中,数据存储是存储设施的虚拟化表示。因此,每个数据存储可以使用来自包括在数据存储集群中的多于一个存储设备的资源。数据存储用于存储与由集群C-1、C-2...C-N的主机计算机支持的VM相关联的数据。对于虚拟机,数据存储可以用作虚拟存储或虚拟盘来存储虚拟机需要的用于操作的文件。一个或多个数据存储可以与一个或多个集群相关联。在一个实施例中,相同的数据存储可以与多于一个集群相关联。

现在转到图2,代表主机计算机H-1、H-2...H-M的主机计算机200的组件被示出。在图2中,主机计算机的各种组件之间的物理连接未被图示出。在图示的实施例中,主机计算机被配置为支持多个VM 220A、220B...220L(其中L是正整数)。主机计算机支持的VM的数目可以是从一个到多于一百的任何数目。主机计算机支持的VM的准确数目由主机计算机的物理资源或诸如许可的其他约束而被限制。VM共享主机计算机的硬件资源中的至少一些硬件资源,其包括系统存储器222、一个或多个处理器224、存储接口226和网络接口228。系统存储器222(其可以是随机存取存储器(RAM))是主机的主存储器。处理器224可以是任何类型的处理器,诸如通常在服务器中找到的中央处理单元(CPU)。存储接口226是允许主机计算机与图1中的数据存储集群104通信的接口。作为示例,存储接口可以是主机总线适配器或网络文件系统接口。网络接口228是允许主机计算机与集群中的其他设备以及连接到图1中的网络102的设备通信的接口。作为示例,网络接口可以是网络适配器。客户操作系统是客户VM的主控制程序,并且除了其他之外形成客户应用在其上运行的软件平台。在一个实施例中,客户应用是个体程序,诸如例如电子邮件管理器、系统记录器或用户直接与其通信的另一程序。

在图2的实施例中,VM 220A、220B...220L在包括内核(未示出)的管理程序230上运行。在其他实施例中,VM中的一个或多个可以是嵌套的,即,在另一VM中运行的VM。例如,VM中的一个可以在同样运行在另一个VM中的VM中运行。管理程序可以在主机计算机的操作系统上或直接在主机计算机的硬件上运行。在具有管理程序的支持的情况下,VM提供虚拟化的计算机系统,其给出与主机计算机不同并且彼此不同的外观。

类似于连接到图1中的网络102的任何其他计算机系统,图2所示的VM 220A、220B...220L能够使用主机计算机200的网络接口228与连接到网络的其他计算机系统通信。此外,VM能够使用图2中的主机计算机的存储接口226访问图1中的数据存储集群104。

主机计算机200还包括作为资源管理系统(例如分布式资源调度器系统)的一部分操作的本地资源分配模块236,以管理由VM 220A、220B...220L所消耗的资源。每个主机计算机中的本地资源分配模块与网络计算机系统100的其他主机计算机中的本地资源分配模块协同地操作,以生成资源分配设置和执行资源调度,其包括在主机计算机集群C-1、C-2...CN的主机计算机H-1、H-2...H-M之间均衡软件进程的负载和/或存储资源调度。虽然本地资源分配模块在图2中被示出为与管理程序230分离,但是本地资源分配模块可以被实现为管理程序的一部分。在一些实施例中,本地资源分配模块被实现为在主机计算机上运行的软件程序。然而,在其他实施例中,本地资源分配模块可以使用软件和硬件的任何组合来实现。

如上文参考图2所描述的主机计算机中的VM可以被配置为支持用于处理给定工作负载的进程。图3是被配置为运行VM的集合的主机计算机的框图,该VM的集合支持用于处理给定工作负载的进程。如图3所示,主机计算机包括父VM 302、四个子VM 304和由VM使用的存储器306。通常,当主机计算机被配置为支持进程时,被实例化为支持该进程的第一VM被称为“父VM”。如图3的示例中,当父VM被实例化和配置时,配置被存储在配置文件308中,配置文件308指示父VM在主机计算机的存储器中或从另一共享存储器源访问存储器的选择页310。父VM处理工作负载,直到到达称为“分叉点(fork point)”的预定义点,并且一旦到达分叉点,则从父VM克隆被称为“子VM”的额外的VM(即,用与父VM相同的配置文件被实例化)以帮助支持父VM。例如,如图3所示,父VM的配置文件被复制到每个子VM,并且子VM被指示也使用主机计算机的存储器或共享存储器源中的页。因此,最初,父VM被实例化为支持处理新的工作负载,并且配置文件指示父VM利用主机计算机的存储器中或共享存储器源的页。在父进程对工作负载执行一些初始计算之后,到达分叉点,并且子VM被实例化为运行子进程以进一步修改初始计算的结果或增加处理工作负载的VM的数目。子VM用与父VM相同的配置文件被实例化,并且被指示也使用主机计算机的存储器或共享存储器源的页。

实例化子VM以进一步修改初始计算的结果或增加支持进程的VM的数目可以产生资源消耗的显著节省以及增加吞吐量。然而,增加可用于支持进程的VM的数目并非没有成本。每个子VM用与父VM相同的配置(例如,相同的存储器量)被实例化。因此,除了所需的其他资源之外,支持进程的VM所需的总存储器量与VM的数目成比例地增加。例如,所需的存储器量可以计算如下:

总存储器=n*MemSize

其中n等于支持进程的VM的数目,并且MemSize等于父VM所需的存储器量。通过用固定的存储器量来实例化每个子VM,所需的存储器量可以增长非常大。

为了减少所需的存储器量,子VM可以被配置为共享父VM的存储器页,并且如果子VM中的一个需要写入页,则共享存储器页的页可以在VM需要写入该页时被复制到针对子VM的专用存储器。图4是示出了图3的子VM的存储器使用的框图。在图4的框图中,子VM 304每个使用共享存储器402和专用存储器404。共享存储器和专用存储器由如索引切片所指示的存储器的页412、414组成。当子VM需要读取共享存储器中的页时,子VM访问共享存储器中的页。备选地,当子VM尝试写入页时,子VM从共享存储器创建页412的副本到针对子VM的专用存储器中,并且写入专用存储器中的复制页414。因此,不是为每个子VM创建共享存储器中的所有页的完整复制,而是可以针对每个子VM根据需要创建来自共享存储器的页的复制。例如,在图4中,当子VM1需要写入页x007和x011时,每个页被复制到针对VM1的专用存储器中,并且子VM1在其专用存储器中写入复制的页。

通过共享存储器的页,被实例化为支持该进程的所有VM所需的存储器量可以计算如下:

总存储器=(n*(1-△))*MemSize

其中n等于支持该进程的VM的数目,△等于由支持该进程的VM共享的页的百分比,并且MemSize等于父VM所需的存储器量。因此,共享存储器的页需要当针对每个VM的存储器的全部页被复制时所需的存储器的一部分。例如,在图4中,不需要存储器的100页(即,针对每个子VM的共享存储器的25页的完整复制),仅需要存储器的35页(即,共享存储器的25页的一个复制,针对子VM 1的专用存储器的2页,针对子VM 2的专用存储器的1页,以及针对子VM 4的专用存储器的7页)。

尽管使用共享存储器减少了父VM和子VM所需的存储器量,但是为了使子VM使用存储器的共享页,子VM必须能够访问与共享该页的其他VM相同的存储器。通常,在相同主机计算机上运行的VM都可以访问相同存储器,而存储在不同主机计算机上的VM可能不能访问相同存储器。因此,如果支持父进程所需的额外的子VM被创建或迁移到不能访问与父VM相同的存储器的主机计算机,则存储器页不能与额外的子VM共享。

虽然在与父VM相同的主机计算机上的或者使用相同共享存储器源的VM可以共享存储器页,但是并非所有VM都将共享相同量的存储器页(例如,一个子VM可能不需要任何页被复制到其专用存储器,而另一子VM可能需要许多页被复制到其专用存储器)。因此,一些子VM将需要比其他VM更少的存储器。例如,在图4中,子VM 3不写入存储器的任何页,并且因此除了来自共享存储器的页之外不需要存储器的专用页,而子VM 4写入存储器的七个页,并且除了来自共享存储器的页之外需要专用存储器的七个页。

如果比单个主机计算机可以支持的更多的子VM被实例化,则一些子VM将需要与其他子VM分离。根据本发明的实施例,如果确定VM需要与其他VM分离,则将基于已经被改变的存储器页的数目(例如,被复制到VM的专用存储器的页的数目)来选择VM。例如,被复制到专用存储器的页的数目被用作确定如何最佳迁移VM的指示器。在一个实施例中,已经改变了最高数目的存储器页(例如,将最高数目的页复制到其专用存储器)的VM将被选择并被分离到单独的主机计算机上。因此,通过从支持进程的VM的集合选择已经改变了最高数目的存储器页的VM,并且将该VM分离到单独的主机计算机上,与在已经改变了更少的存储器页的VM被选择和分离的情况相比,更多的存储器将对支持该进程的其他VM可用。

图5是用于管理虚拟机网络中的VM的布置的技术的流程图。在判断点502,确定在第一主机计算机上的VM中运行的进程是否需要额外的VM来帮助支持该进程。在一个实施例中,由在主机计算机位于的集群中运行的DRS进行确定。如果需要额外的VM(即,子VM),则在判断点504,确定额外的VM是否可以被添加到第一主机计算机。如果额外的VM可以被添加到第一主机计算机,则在框506,在第一主机计算机上实例化额外的VM,VM被添加到支持进程的VM的集合,并且流程返回到判断点502。在一个实施例中,被实例化的VM是从已经在第一主机计算机上运行的父VM克隆的子VM(即,具有与已经在第一主机计算机上运行的VM相同的配置文件)。备选地,如果VM不能被添加到第一主机计算机,则在框508,计算由在第一主机计算机上运行的每个VM改变的存储器页的数目。在框510,基于被改变的存储器页的数目,VM被选择与其他VM分离。在一个实施例中,已经改变了最高数目的存储器页的VM被选择。在另一实施例中,已经改变了超过预定义阈值的数目的存储器页的至少一个VM被选择。例如,如果用户将阈值设置为20%,则已经改变了20%或更多存储器页的几个VM中的至少一个被选择。一旦VM已经被选择,则将VM与支持该进程的VM的集合中的其他VM分离,并且流程返回到判断点504,以确定所需的额外的VM是否现在可以被添加到第一主机计算机。如果额外的VM仍然不能被添加,则重复用于选择要被分离的VM的步骤。

根据本发明的一个实施例,VM可以以许多方式与其他VM分离。图6A描绘了将VM与其他VM分离的第一种方式。在图6A中,子VM 1 304、子VM 2 304、子VM 3 304和子VM 4 304在主机计算机A 200上运行。如上面参考图4所描述的,子VM 4已经改变了最高数目的存储器页。根据本发明的一个实施例,子VM 4被选择,并且通过被迁移到主机计算机B 200而与子VM 1、子VM 2和子VM 3分离。图6B描绘了将VM与其他VM分离的第二种方式。在图6B中,子VM 1 304、子VM 2 304、子VM 3 304和子VM 4 304在主机计算机A 200上运行。如上面参考图4所描述的,子VM 4已经改变了最高数目的存储器页,并且因此被选择为与支持该进程的VM的集合中的其他VM分离。根据本发明的一个实施例,子VM4被选择,并且通过将子VM1、子VM2和子VM3迁移到主机计算机B200而与子VM1、子VM2和子VM3分离。

因此,当需要额外的VM时,分离对存储器页做出较少改变的VM(被称为具有“低脏(dirtying)率”)比分离对存储器页做出许多改变的VM(被称为具有“高脏率”)更被偏好。通过偏好具有低脏率的VM,除了共享存储器之外,需要更少的专用存储器,允许VM使用更少的存储器。

尽管本文中的一个或多个方法的操作以特定顺序被示出和描述,但是每个方法的操作的顺序可以被改变,使得某些操作可以以相反的顺序被执行,或者使得某些操作可以至少部分地与其他操作同时地被执行。在另一实施例中,不同操作的指令或子操作可以以间歇和/或交替方式被实现。

还应当注意,针对该方法的操作中的至少一些操作可以使用存储在计算机可用存储介质上的用于由计算机执行的软件指令而被实现。作为示例,计算机程序产品的实施例包括用于存储计算机可读程序的计算机可用存储介质,当在计算机上执行该计算机可读程序时,使得计算机执行如本文所述的操作。

此外,本发明的至少部分的实施例可以采用从计算机可用或计算机可读介质可访问的计算机程序产品的形式,该计算机可用或计算机可读介质提供由计算机或任何指令执行系统使用或与其结合使用的程序代码。为了本描述的目的,计算机可用或计算机可读介质可以是可以包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或与其结合使用的程序的任何装置。

计算机可用或计算机可读介质可以是电子、磁、光、电磁、红外或半导体系统(或装置或设备)或传播介质。计算机可读介质的示例包括半导体或固态存储器、磁带、可移除计算机磁盘、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘和光学盘。光学盘的当前示例包括具有只读存储器的光盘(CD-ROM)、具有读/写的光盘(CD-R/W)、数字视频盘(DVD)和蓝光盘。

在上面的描述中,提供了各种实施例的具体细节。然而,一些实施例可以用少于所有这些具体细节来实践。在其他实例中,为了简洁和清楚起见,不再比实现本发明的各种实施例更详细描述某些方法、过程、组件、结构和/或功能。

虽然已经描述和示出了本发明的具体实施例,但是本发明不限于如此描述和示出的部分的具体形式或布置。本发明的范围由所附的权利要求及其等同物限定。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1