虚拟机的动态资源分配
相关申请的交叉引用
本申请要求标题为“DYNAMIC RESOURCE ALLOCATION FOR VIRTUAL MACHINE”的于2012年6月29日提交的第61/666,227号美国临时申请和标题为“DYNAMIC RESOURCEALLOCATION FOR VIRTUAL MACHINES”的于2013年3月12日提交的第13/796,136号美国非临时申请的权益,第13/796,136号美国非临时申请要求第61/666,227号美国临时申请的优先权。61/666,227和13/796,136申请的全部内容为了所有目的而通过引用合并于此。
背景技术
本公开内容一般地涉及虚拟化,并且更具体地讲,涉及用于在虚拟机(VM)操作的同时动态地改变分配给VM的资源的技术。
与虚拟化技术的进步关联的具有多个处理器或有着多个核的处理器的系统和装置的增加已导致虚拟机(VM)的使用的迅速增长。包括多个单核或多核CPU甚至具有有着多个核的单个CPU的系统或装置现在可以并行地支持和执行多个分离的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操作的同时被从VM去除或解除分配。作为另一例子,分配给VM的资源的数量可从第一水平减小至更小的第二水平。例如,减小分配给VM的存储器的量。
在某些实施例中,可在多个VM操作的同时在多个VM之间动态地分配资源并且不必停止、重新开始或重新启动多个VM。例如,分配给第一操作VM的一定数量的资源可被从第一操作VM去除或解除分配并且随后被分配给第二操作VM。可在第一VM和第二VM操作的同时执行解除分配操作和分配操作并且不必停止、重新启动或重新开始第一VM和第二VM。
各种资源可在VM操作的同时被动态地分配给VM或从VM解除分配。资源的例子非限制性地包括处理资源、存储器资源、输入/输出资源(例如,端口)、网络资源(例如,带宽)、非易失性存储器资源(例如,盘贮存器、SSD)等。例如,网络装置可执行一个或多个VM,所述一个或多个VM包括这样的VM,该VM具有分派给该VM的第一数量的处理单元。第一数量的处理单元中的处理单元可以是CPU、CPU核或CPU核的一部分。这种分配给VM的第一数量的处理单元可在VM执行的同时被动态地改变并且不必停止、重新启动或重置VM。所述改变可包括:将另外的处理单元分配给VM和/或减少分派给VM的处理单元的数量。
在某些实施例中,可根据或响应于由用户签署的服务水平协议(SLA)执行为用户(例如,顾客)提供的对一个或多个VM的资源分配改变。例如,顾客的SLA信息可被用来确定将要为顾客提供的一个或多个VM和将要被分派给VM的资源。分配给VM的资源随后可动态地改变以便满足或符合在SLA中达成的协议。SLA的改变还可自动地触发VM的资源分配的动态改变。
在某些实施例中,装置可执行第一虚拟机和第二虚拟机。第一虚拟机可被分配第一数量的资源并且第二虚拟机可被分配第二数量的资源,其中第二数量不同于第一数量。响应于事件(例如,故障切换事件),装置可动态地将分配给第一虚拟机的资源的量从第一数量改变为第二数量并且将分配给第二虚拟机的资源的数量从第二数量改变为第一数量。可在不停止第一虚拟机或第二虚拟机的情况下执行分配给第一虚拟机和第二虚拟机的资源的数量的改变。
资源可以具有各种类型,诸如处理资源(例如,由装置提供的处理单元)、系统存储器资源、非易失性存储器资源、输入/输出(I/O)资源、装置的端口、带宽资源等。
在某些实施例中,第一虚拟机和第二虚拟机可各自执行被配置为监测虚拟机的资源使用的程序。这些程序可将虚拟机的资源使用信息传送给由装置执行的第三虚拟机(例如,管理虚拟机)。在一些实施例中,由管理虚拟机执行的程序可基于接收到的资源使用信息导致执行分配给第一虚拟机和第二虚拟机的资源的改变。
在某些实施例中,由第三虚拟机执行的一个或多个程序可导致执行将分配给第一个虚拟机的资源的数量从第一数量改变为第二数量并且将分配给第二虚拟机的资源的数量从第二数量改变为第一数量。
在某些实施例中,第一虚拟机可由装置使用该装置的第一组处理单元来执行。第一虚拟机可在第一模式下操作,其中与第一模式对应的一组功能被由第一虚拟机执行的一个或多个程序执行。在第一模式下操作的同时,第一虚拟机可被分配第一数量的资源。该装置还可使用该装置的第二组处理单元执行第二虚拟机。在第一虚拟机在第一模式下操作的同时,第二虚拟机可在第二模式下操作,其中所述一组功能不被第二虚拟机执行。事件(例如,故障切换)可使得装置使第二虚拟机在第一模式下操作,其中与第一模式对应的一组功能被由第二虚拟机执行的一个或多个程序执行。另外,该装置可使第一虚拟机在第二模式下操作,其中所述一组功能不被在第二模式下的第一虚拟机执行。当第二虚拟机在第一模式下操作时,该装置可自动地将分配给第二虚拟机的资源的数量从第二数量改变为第一数量。在一些实施例中,当发生事件时,分配给在第二模式下操作的第一虚拟机的资源的数量可被从第一数量改变为当第二虚拟机在第二模式下操作时分配给第二虚拟机的数量。
在某些实施例中,装置可存储与服务水平协议(SLA)有关的信息。装置可执行虚拟机,并且可基于SLA信息动态地改变分配给虚拟机的资源。
附图说明
图1是可包括本发明的实施例的计算装置的简化方框图;
图2描述示出根据本发明的实施例的当启动VM时执行的处理的简化流程图;
图3描述示出根据本发明的另一实施例的当启动VM时执行的处理的简化流程图;
图4描述示出根据本发明的实施例的在监测阶段执行的处理的简化流程图;
图5描述示出根据本发明的实施例的为了动态地从VM解除分配一定数量的资源而执行的处理的简化流程图;
图6描述示出根据本发明的实施例的为了动态地将一定数量的资源分配给VM而执行的处理的简化流程图;
图7描述示出根据本发明的实施例的用于动态地从VM释放资源并且使其可被分配给VM的基于优先级的技术的简化流程图;
图8显示根据本发明的实施例的主动VM和被动VM之间的自动动态资源分配的例子;
图9显示根据本发明的实施例的与SLA对应的VM可分布在多个联网系统上的联网环境的例子;和
图10提供可包括本发明的实施例的网络装置的例子。
当参照下面的说明书、权利要求和附图时,前述内容以及其它特征和实施例将会变得更加清楚。
具体实施方式
在下面的描述中,为了解释的目的,阐述具体细节以便提供对本发明的实施例的透彻理解。然而,将会清楚的是,可在没有这些具体细节的情况下实施各种实施例。附图和描述不旨在是限制性的。
本发明的某些实施例使得能够在虚拟机(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。可在第一VM和第二VM操作的同时执行解除分配操作和分配操作并且不必停止、重新启动或重新开始第一VM和第二VM。
在VM之间执行资源的动态改变的能力可被能够支持多个VM的任何系统或装置使用。能够支持多个VM的系统非限制性地包括:单CPU核系统,其中该核的一部分被分配给第一VM并且另一部分被分配给第二VM;多核CPU系统,其中第一组一个或多个核被分配给第一VM并且第二组一个或多个核被分配给第二VM;多处理器系统,其中第一组一个或多个处理器被分配给第一VM并且第二组一个或多个处理器被分配给第二VM;及其各种组合。
各种资源可在VM操作的同时被动态地分配给VM或从VM解除分配。例子非限制性地包括:
(1)处理资源-分派给VM的处理单元的数量可以在VM操作的同时改变(例如,增加或减少)。处理单元可对应于CPU核、CPU或处理器、或CPU核的一部分。
(2)存储器资源-分派给VM的系统存储器(例如,RAM)的量可以在VM操作的同时改变(例如,增加或减少)。
(3)网络资源,诸如带宽资源、端口等。
(4)非易失性存储器或存储资源,诸如贮存器、固态驱动器(SSD)等。
(5)I/O资源(例如,I2C、PCIe、PLB等。)
图1是可包括本发明的实施例的计算装置100的简化方框图。如图所示,装置100包括经由互连件/总线110耦合到系统存储器104、输入/输出(I/O)装置106和其它硬件资源108的多个物理处理器(P1至PN)102。互连件110可包括一个或多个互连件或总线。图1中描述的装置100仅是例子,并且不是旨在不适当地限制如权利要求中记载的本发明的实施例的范围。本领域普通技术人员将会意识到许多变化、替代物和变型。装置100可被实现为各种不同形式。例如,在一个实施例中,装置100可被实现为网络装置,诸如由加利福尼亚州的圣何塞的Brocade Communications Systems,Inc.提供的交换机或路由器。
在图1中描述的实施例中,装置100包括多个处理器102。每个处理器可以是单核或多核处理器。例如,如图所示,处理器P1和PN是多核处理器,每个多核处理器包括两个核C1和C2。然而,这不旨在是限制性的。在某些实施例中,装置100可仅包括单个多核处理器。在其它实施例中,装置100可包括多个处理器,所述多个处理器中的一个或多个可以是多核处理器。在其它实施例中,装置100可包括多个单核处理器。多核处理器的例子包括但不限于由Freescale Semiconductor,Inc.提供的各种多核处理器(诸如,由Freescale提供的QorIQ和PowerQUICC系列的处理器)和其它处理器。由装置100提供的核和处理器代表了可被分配给由装置100执行的VM的处理资源。核和处理器可被称为装置100的处理单元。
存储器104代表可用于由装置100执行的VM的系统存储器资源。与由处理器102执行的运行时处理有关的信息可被存储在存储器104中。存储器104可以是RAM(例如,SDRRAM、DDR RAM)并且有时被称为装置或系统的主存储器。I/O装置106可非限制性地包括各种装置,诸如以太网装置、PCIe装置、eLBC装置和其它装置。硬件资源108可非限制性地包括硬件装置,诸如FPGA、ASIC、其它商业芯片等。硬件资源可以是能够由任何VM单独拥有或在一组VM之间共享的任何硬件装置。不支持本地虚拟化的硬件装置(例如,芯片的一部分可被分配给不同VM的SR-IOV)由一个VM单独拥有或在管理程序内被虚拟化。
装置100可被配置为使用装置100的一个或多个处理单元同时执行多个VM。装置100因此用作VM的主机。由使得能够实现虚拟化的软件程序来促进VM的创建和管理。这种程序的例子是在装置100的系统存储器104中执行的管理程序118。管理程序118可在通电或装置停止、重新启动或重新开始时由装置100加载。管理程序118被配置为启动一个或多个VM并且在启动时将资源分配给VM。可由管理程序118在VM之间分割可用资源(例如,装置100的处理资源、存储器资源和硬件资源)。根据本发明的某些实施例,管理程序118还在VM操作的同时促进分派给VM的一个或多个资源的动态修改并且不必停止、重新启动或重新开始VM。
多个VM 112(例如,图1中示出的VM1、VMN、pVM、mVM)可由装置100同时执行。每个VM通常具有其自己的操作系统,该操作系统通常被称为客户操作系统(或GOS)116。当创建VM时,由管理程序118加载VM的GOS。由一个VM执行的GOS可与另一VM的GOS相同或不同。GOS的例子非限制性地包括不同版本的Linux OS、Windows OS、联网操作系统(NOS)等。例如,在一种情况下,VM1可执行LinuxV1,mVM可执行LinuxV2,VM2可执行一个版本的Windows OS等。以这种方式,多个操作系统可在装置100上同时运行。
每个VM可独立于其它VM而操作。特定VM可能甚至不知道在装置100上与该特定VM并行地操作的其它VM的存在。因此,每个虚拟机可以作为独立的虚拟系统来操作。
在一个实施例中,为了促进VM的动态修改,管理程序118被配置为创建管理VM(mVM)114,该管理VM(mVM)114用于执行用于促进分配给一个或多个VM的一个或多个资源的动态修改的代码、指令和程序。可由mVM 114执行使得能够在VM操作时促进分配给VM的资源的动态改变而不必停止、重新启动或重新开始VM的一个或多个程序。例如,如图1中所示,在一个实施例中,资源管理器程序122可由mVM 114执行。资源管理器122可被配置为确定将要被启动的VM(例如,VM1、VM2等)的数量和针对每个VM将要在创建或启动VM时分配给VM的资源的数量,并且将其传送给管理程序118。然后,管理程序118被配置为基于从资源管理器122接收到的信息创建或启动VM并且在创建时将资源分配给VM。在替代实施例中,资源管理器122的功能可被由mVM 114执行的多个程序执行。
在某些实施例中,识别将要被启动的VM和将要在启动时分配给VM的资源的信息可由资源配置信息126和装置配置信息128预先定义并且指定。在一个实施例中,装置配置信息可被存储在文件(例如,装置配置文件或DCF)中,并且可识别可被由装置100执行的一个或多个VM使用的装置。资源配置信息126也可被存储在文件(例如,资源配置文件或RCF)中,并且可识别将要被启动的VM和将要在启动时分配给每个VM的资源。在RCF中指定的用于VM的预定义的资源可包括处理资源、系统存储器资源、非易失性存储器资源、联网资源、带宽资源、I/O资源等。例如,RCF可指定将要在创建时分派给VM的系统存储器104的量。在一个实施例中,资源管理器122被配置为访问资源配置信息126,确定将要被创建的VM和将要被分配给VM的资源,并且将该信息传送给管理程序118。然后,管理程序118按照从资源管理器122接收到的信息创建指定的VM并且在创建时将资源分配给VM。在一个实施例中,mVM 114自身和将要被分配给mVM 114的资源可由资源配置信息126指定。
管理程序118被配置为利用由资源配置信息126指定的一组预定义的资源启动每个VM。随后,VM可使用在启动时分配给VM的资源在它的分配的系统存储器的一部分内执行。可在分配给VM的系统存储器空间内执行由VM执行的GOS和其它软件组件。可由VM执行的软件组件的类型可非限制性地包括应用、过程、线程、操作系统(包括操作系统的组件,诸如操作系统内核模块)、装置驱动器、管理程序等。可在分配给VM的系统存储器内加载和执行与这些组件对应的软件代码。另外,可在分配给VM的系统存储器空间中加载和存储由VM的各种执行组件使用的数据。
每个VM可被分配一个或多个处理资源。在某些实施例中,可按照由装置(诸如,装置100)提供的一个或多个处理单元来度量处理资源。在一个实施例中,处理单元可对应于处理器、处理器核或处理器核的一部分。一个或多个处理单元可被分配给VM。根据本发明的实施例,装置100可提供可在由装置100执行的VM之间共享的有限数量的处理单元。可以支持多个VM(例如,图1中描述的VM)的配置的例子非限制性地包括:处理器P1的核C1可被分配给VM1,处理器P1的核C2和处理器P2的核C1可被分配给mVM,处理器P3可被分配给VM2,处理器P4的核C1的60%可被分派给VM3并且P4的核C1的40%可被分派给VM4等。
当创建VM时,其它资源(包括I/O装置106、联网资源和其它硬件资源108)的一部分也可被分配给VM。
未分配并且可使用的资源可被汇聚到资源池120中。例如,可在资源池120中表示未被分派或分配给任何VM的资源。因此,资源池120代表可根据需要分配给VM的资源。
一旦VM已被管理程序118启动,则资源管理器122被配置为监测多个操作的VM的资源分配和资源使用,并且在需要时启动分配给VM的资源的动态改变。各种不同条件可被监测以确定将要在何时执行改变。在一个实施例中,为了促进VM的监测,可由每个操作的VM执行被称为“监测代理”(也被称为SLA代理)的特殊程序(或多个程序)。例如,如图1中所示,由VM执行监测代理124。在某些实施例中,VM的监测代理124被配置为监测VM的资源使用并且将该信息传送给资源管理器122。由VM执行的监测代理124可按照定期可编程间隔和/或在发生某些事件时将VM的资源使用信息传送给资源管理器122。可使用推模型或拉模型将资源使用信息从监测代理124传送给资源管理器122。
资源管理器122可从由VM执行的监测代理124接收一个或多个VM的资源使用信息。基于这种接收到的信息并且还基于各种系统条件,资源管理器122被配置为确定将要在何时执行VM的资源的分配的改变。当要执行改变时,资源管理器122可确定将要针对其执行改变的VM、其分配将要被改变的特定资源、和资源的分配将要被改变的数量。例如,资源管理器122可基于从VM1的监测代理124接收到的信息确定VM1的存储器分配将要被从它的当前分配增加至更高的分配。
在确定VM的资源的分配将要被改变时,资源管理器122可随后将信号发送给管理程序118以执行改变。在一个实施例中,作为该处理的一部分,资源管理器122可向管理程序118发送识别其分配将要被改变的VM、其分配将要被改变的资源和分配将要被改变的数量的信息。管理程序118随后执行为动态地调整识别的VM的分配所需的处理而不必停止、重新开始或重新启动该特定VM。以这种方式,协同工作的监测代理124、资源管理器122和管理程序118使得能够执行分配给VM的资源的动态改变,全都不必停止、重新启动或重新开始VM。
如上所述,在某些实施例中,将要由装置100启动的VM和将要在启动VM时分派给每个VM的资源可由资源配置文件(RCF)和装置配置文件(DCF)预先定义并且指定。RCF可由装置100的用户或由系统管理员创建。在一个实施例中,RCF可包括识别阈值的信息(例如,规则)以及指示将要在何时执行改变的条件和将要执行的改变的类型。在一些实施例中,由mVM 114(诸如,资源管理器122)执行的程序被配置为监测装置100,基于RCF中的信息确定将要在何时执行改变和将要执行的改变的类型。不支持本地虚拟化的硬件装置(例如,芯片的一部分可被分配给不同VM的SR-IOV)由一个VM单独拥有或在管理程序内被虚拟化。对于由DCF识别的完全分配给VM的装置,管理程序118可在启动VM时将该装置映射到该VM。
可被存储在样本RCF中的信息的非限制性例子在以下被示出在表A中。
表A:资源配置文件
表A中描述的RCF包括多个列。第一列“VM”识别将要被启动的VM。例如,如以上所示,将要被启动的VM包括mVM、VM1(“1”)、VM2(“2”)和VM3(“3”)。第二列“资源”识别分配给VM的资源。在表A中,为每个VM指定的资源包括CPU核(即,处理资源)、存储器、网络带宽、网络端口和非易失性存储器。
“基础”列识别将要在启动VM时分派给VM的资源的基础数量。对于每个资源,该列识别VM所需的资源的最小数量或基础数量。不允许VM的资源下降至低于它们的对应的最小水平或基础水平。如果不可获得用于特定VM的一组基础资源,则可能无法创建该VM。仅当可获得由用于特定VM的一组基础资源指定的足够系统资源时,才可启动该VM。例如,按照表A,将要在启动VM1时分配给VM1的基础存储器资源是2GB。
“最大”列识别可被分配给VM的资源的最大数量(即,允许VM拥有或消耗的具体资源的最大数量)。当针对特定资源为VM设置了这种参数时,VM不被分配超过该最大数量的特定资源。例如,按照表A,允许分派给VM1的最大存储器资源是3GB。
表A中的“分配”列识别当额外数量的资源可被动态地分配给VM时的条件(例如,阈值)。在某些实施例中,当VM的资源的资源利用率在RCF中指定的时间量期间处于或超过分配阈值时,尝试为VM分配额外数量的资源。可从可用资源池120分配额外资源,或者额外资源的一部分可被动态地从其它一个或多个VM解除分配并且随后被分配给该VM。在某些实施例中,资源管理器122监测VM的这个阈值,并且基于从VM的监测代理接收到的使用信息确定分配给VM的资源的数量将要在何时动态地增加。例如,表A指示:VM1的CPU核的“分配”值是“90%/60秒”。这意味着:如果分配给VM1的CPU资源在60秒的时间段上处于或超过90%的利用率,则额外的CPU资源可被分派或分配给VM1。
表A中的“释放”列识别当分配给VM的资源可被从VM释放或解除分配并且返回到系统资源池时的条件(例如,阈值)。在某些实施例中,当VM的资源的资源利用率在RCF中指定的时间量期间处于或下降至低于释放阈值时,尝试从该VM解除分配资源的一部分。解除分配并且未使用的资源被返回到可用资源池120。在某些实施例中,资源管理器122监测VM的这个阈值,并且基于从VM的监测代理接收到的使用信息确定分配给VM的资源的数量何时可以减少。例如,表A指示:VM1的CPU核的“释放”值是“30%/60秒”。这意味着:如果分配给VM1的CPU资源在60秒的时间段上处于或低于30%利用率,则一些CPU资源可被动态地从VM1去除或解除分配。
表A中的“优先级”列指定VM的优先级值。VM的优先级值可被用来分配和解除分配用于VM的一个或多个资源。如上所述,资源可被动态地从可用资源池120分配给VM。在某些实施例中,如果资源将要被分配给特定优先级的VM并且在可用资源池120中不可获得需要数量的资源,则资源管理器122可检查优先级比该特定优先级低的VM,以查看需要数量的资源是否可以被从一个或多个这些VM解除分配并且随后被分配给具有该特定优先级的VM。在一个实施例中,执行检查以查看较低优先级的VM是否已被分配超过它们的基础配置的额外资源。如果较低优先级的VM已被分配超过它们的基础配置的额外资源,则资源管理器122可回收所述额外资源并且使其可被可用资源池120获得以分配给较高优先级的VM。在某些实施例中,较高优先级的VM在较低优先级的VM之前被分配资源。在一些实施例中,在相同优先级的VM内,可在先到先服务的基础上分配资源。在某些实施例中,可分派代表最低优先级的“可回收”级的优先级。mVM可关闭被标记为“可回收”的VM并且回收该VM的所有资源。
在表A中描述的实施例中,在按照VM的基础上指定优先级。例如,mVM的优先级为高,VM1的优先级为中,VM2的优先级为低,等等。在某些实施例中,可在按照VM和资源的基础上指定优先级。在表B中描述在按照VM和资源的基础上指定优先级的RCF的例子。
表B:资源配置文件(另一实施例)
如表B中所示,对于VM1,优先级针对CPU资源为高,针对存储器资源、网络带宽资源和网络端口为中,并且针对非易失性存储器资源为低。以类似方式,对于VM3,优先级针对CPU资源、存储器资源和网络端口为高,针对网络带宽资源为中,并且针对非易失性存储器资源为低。
在一些实施例中,由装置100执行的VM可包括特殊策略VM(pVM),该特殊策略VM可被管理程序118启动以执行诸如在联网装置上执行策略管理功能的策略管理器136的程序。可基于策略信息132执行策略管理。在替代实施例中,策略管理器136可以位于与执行各种VM的系统分离的服务器上。策略信息132也可被存储在这个分离的服务器上。以下提供进一步的细节。
图2描述示出根据本发明的实施例的当启动VM时执行的处理的简化流程图200。图2中描述的处理可以以由一个或多个处理单元(例如,处理器、核、核的某一部分)执行的软件(例如,代码、指令、程序)、硬件或其组合来实现。在某些实施例中,软件可被存储在非暂态计算机可读存储装置或介质上。图2中描述的一系列特定处理步骤不旨在是限制性的。
在202,管理程序118确定mVM将要被启动并且确定将要被分配给mVM的资源。在某些实施例中,管理程序118可从资源配置文件(诸如,以上在表A中描述的文件)确定这种信息。作为202的一部分,管理程序118可确定将要被分配给mVM的资源的基础数量。例如,对于在表A中描述的资源配置文件,管理程序118可确定mVM被分配1个CPU核、1GB的系统存储器、2GB/秒的网络带宽、20个网络端口和5GB的非易失性存储器(例如,盘贮存器)。
在204,管理程序118利用在204中确定的资源启动mVM。在一个实施例中,如果不可获得为启动mVM所需的基础资源,则可能无法启动mVM并且可报告错误状况。在某些实施例中,mVM可以与pVM同步以获得最新资源分配并且相应地更新RCF。pVM可基于它从监测代理接收到的实时输入来动态地改变与之通信的所有mVM的RCF。
在206,在mVM中执行促进并且使得能够实现VM的动态修改的一个或多个程序。例如,在一个实施例中,可在mVM中启动并且执行资源管理器122。
在208,资源管理器122随后确定将要被启动的各个VM。在某些实施例中,资源管理器122可从资源配置文件确定这种信息。例如,从表A中描述的RCF,资源管理器122可确定三个VM(1或VM1、2或VM2、和3或VM3)将要被启动。
在210,对于在208中确定的每个VM,资源管理器122可确定将要在启动时分派给VM的资源。在某些实施例中,资源管理器122可从RCF确定这种信息。例如,从表A中描述的RCF,资源管理器122可确定:
·对于VM1,将要在启动时分配给VM的基础资源包括2个CPU核、2GB的系统存储器、5GB/秒的网络带宽、100个网络端口和10GB的非易失性存储器(例如,盘贮存器);
·对于VM2,将要在启动时分配给VM的基础资源包括2个CPU核、4GB的系统存储器、5GB/秒的网络带宽、250个网络端口和10GB的非易失性存储器;和
·对于VM3,将要在启动时分配给VM的基础资源包括2个CPU核、4GB的系统存储器、5GB/秒的网络带宽、250个网络端口和10GB的非易失性存储器。
在212,由资源管理器122在208和210中确定的信息被传送给管理程序118。在214,基于在212中从资源管理器122接收到的信息,管理程序118利用在212中确定的分配给VM的资源启动在208中确定的每个VM。在一个实施例中,如果针对特定VM不可获得基础数量的资源,则不启动该VM并且可报告错误状况。以这种方式,当VM开始或启动(即,开始操作)时,一组预先配置的基础资源可被分配给每个VM。
在216,新启动的VM可启动和执行促进并且使得能够实现分配给VM的资源的动态修改的一个程序或一组程序。例如,VM可启动和执行监测代理,该监测代理被配置为监测由VM使用的资源并且将该信息传送给资源管理器122。
在218,系统进入监测阶段。在这个阶段,监测各种VM对资源的使用。例如,由VM执行的监测代理可监测由VM使用的资源并且将这种信息传送给在mVM中执行的资源管理器122。监测代理可按照定期可编程间隔和/或在发生某些事件时将资源使用信息传送给资源管理器122。推模型或拉模型可被用于该传送。在监测阶段,由mVM执行的资源管理器122被配置为从各种监测代理接收信息,并且基于接收到的信息确定是否将要执行一个或多个VM的资源分配修改。资源管理器122还可监测可触发VM的资源分配修改的其它系统状况或信号。如果将要执行这种修改,则资源管理器122可将该信息传送给管理程序118,并且管理程序118随后使该修改动态地发生而不必停止、重新启动或重新开始VM。
可在监测阶监测各种不同资源。例如,在某些实施例中,对VM的监测可非限制性地包括监测VM的CPU利用率、存储器利用率、网络带宽利用率、非易失性存储器(例如,盘贮存器)利用率等。在一个实施例中,可为VM定义具体利用率参数。例如,CPU利用率可被定义为(路线更新)/秒。定制公式可被用来基于定制度量计算CPU利用率。可在VM的资源监测配置文件(RMCF)中定义利用率度量。在某些实施例中,RMCF是将专用度量转换成实现它们所需的资源的映射公式。例如,可以以每秒服务的页来测量web服务器。为了服务100,000页/秒可能需要可获得的一组具体资源。例如,2个CPU核、4GB存储器、4个网络端口等。在一些实施例中,在操作时,mVM可定期地轮询每个VM以确定每个VM的资源利用率。
图3描述示出根据本发明的另一实施例的当启动VM时执行的处理的简化流程图300。图3中描述的处理可以以由一个或多个处理单元(例如,处理器、核、核的某一部分)执行的软件(例如,代码、指令、程序)、硬件或其组合来实现。在某些实施例中,软件可被存储在非暂态计算机可读存储装置或介质上。图3中描述的一系列特定处理步骤不旨在是限制性的。
在302,管理程序118确定将要被启动的所有VM。在某些实施例中,管理程序118可从RCF确定这种信息。例如,从表A中描述的RCF,管理程序118可确定将要被启动的VM包括mVM、VM1、VM2和VM3。
在304,对于在302中确定的每个VM,管理程序118确定将要在启动VM时分配给VM的资源。在某些实施例中,管理程序118可从RCF确定这种信息。例如,从表A中描述的RCF,管理程序118可确定将要在启动时分配给VM的基础资源是:
·对于mVM,将要在启动时分配给VM的基础资源包括1个CPU核、1GB的系统存储器、2GB/秒的网络带宽、20个网络端口和5GB的非易失性存储器;
·对于VM1,将要在启动时分配给VM的基础资源包括2个CPU核、2GB的系统存储器、5GB/秒的网络带宽、100个网络端口和10GB的非易失性存储器;
·对于VM2,将要在启动时分配给VM的基础资源包括2个CPU核、4GB的系统存储器、5GB/秒的网络带宽、250个网络端口和10GB的非易失性存储器;和
·对于VM3,将要在启动时分配给VM的基础资源包括2个CPU核、4GB的系统存储器、5GB/秒的网络带宽、250个网络端口和10GB的非易失性存储器。
在306,管理程序118利用在306中确定的分配给VM的资源启动在302中确定的每个VM。在一个实施例中,如果针对特定VM不可获得基础数量的资源,则不启动该VM并且可报告错误状况。
在308,在mVM中执行促进并且使得能够实现VM的动态修改的一个或多个程序。例如,在一个实施例中,可在mVM中启动并且执行资源管理器122。
在310,除mVM之外的VM可启动和执行促进并且使得能够实现分配给VM的资源的动态修改的一个程序或一组程序。例如,VM可启动和执行监测代理,该监测代理被配置为监测由VM使用的资源并且将该信息传送给资源管理器122。
在312,系统进入如以上参照图2中的218所述的监测阶段。
图4描述示出根据本发明的实施例的在监测阶段执行的处理的简化流程图400。图4中描述的处理可以以由一个或多个处理单元(例如,处理器、核、核的某一部分)执行的软件(例如,代码、指令、程序)、硬件或其组合来实现。在某些实施例中,软件可被存储在非暂态计算机可读存储装置或介质上。图4中描述的一系列特定处理步骤不旨在是限制性的。
在402,检测保证VM的资源分配的改变的状况的发生。在一个实施例中,由mVM 114执行的资源管理器122可被配置为检测当将要修改VM的资源分配时的状况。例如,在一些实例中,资源管理器122可从VM的监测代理接收信息,并且基于接收到的信息和RCF中的信息确定将要执行VM的资源分配的改变。
例如,资源管理器122可从由VM执行的监测代理接收由VM使用的资源(或多个资源)的资源利用率信息。资源管理器122可将这种信息与在RCF中针对VM的该资源指定的“分配”和“释放”信息进行比较。如果VM的该资源的资源利用率处于或超过在RCF中针对该VM的该资源指定的分配阈值,则资源管理器122可将此识别为保证分配给该VM的资源的数量的改变(在这种情况下,保证分配给该VM的资源的数量的增加)的状况。例如,表A中描述的资源配置文件指示:VM1的CPU核的“分配”值为“90%/60秒”。这意味着:如果分配给VM1的CPU资源在60秒的时间段上处于或超过90%利用率,则额外CPU资源需要被分派或分配给VM1。
作为另一例子,如果资源管理器122接收到这样的信息,即VM的资源的资源利用率处于或低于在RCF中针对该VM的该资源指定的释放阈值,则资源管理器122可将此识别为保证分配给该VM的资源的数量的改变(在这种情况下,保证分配给该VM的资源的数量的减小)的状况。以这种方式,基于从一个或多个监测代理接收到的信息并且基于RCF中的信息,资源管理器122可确定是否存在需要VM的资源分配的改变的状况。
资源管理器122还可监测其它状况,所述其它状况可使得分配给VM的资源的数量被动态地改变而不必停止、重新开始或重新启动VM。在一些实施例中,可根据或响应于由用户签署的服务水平协议(SLA)来改变分配给为用户(例如,顾客)提供的一个或多个VM的资源。由用户签署的SLA通常识别用于管理向用户允诺的服务水平的条款。在最终顾客和通信使能器(诸如,网络载体、因特网服务提供商(ISP)等)之间的通信行业中,SLA是非常常见的。例如,一个或多个SLA通常被包括在用户和服务提供商之间签署的服务合同中。这种SLA可设置各种条款,诸如针对由服务提供商提供的服务由用户经历的最大停机时间、提供服务所花费的最大时间、提供给用户的服务的质量、故障之间的平均时间、吞吐量、各种数据速率或任何其它可测量准则。因此,SLA可指定可用性、可维修性、性能、操作或由服务提供商向用户允诺的服务的其它属性的水平。在许多情况下,用户和服务提供商之间的服务合同还指定在不满足SLA中指定的条款的情况下对服务提供商施加的惩罚。因此,不符合SLA通常导致服务提供商的惩罚费用或损失。与SLA有关的信息可被存储为SLA信息130。在一个实施例中,SLA信息130可被存储在由mVM 114执行的程序可访问的数据库中。监测代理124也可访问SLA信息130。
在某些实施例中,可根据或响应于SLA信息130执行分配给一个或多个VM的资源的改变。例如,新的SLA协议可使得分配给受SLA影响的VM的资源被修改。顾客的SLA信息可被用来确定将要为顾客提供的一个或多个VM和将要被分派给VM的资源。与SLA对应的VM的性能可随后被监测,并且VM的资源可被动态地改变以便确保性能符合SLA条款。
已有SLA协议的改变可使得分配给与SLA对应的VM的资源被修改。在这种实例中,资源管理器122可被配置为监测SLA信息130的任何这种改变,并且合适地触发一个或多个VM的资源分配的改变以符合SLA条款。以下在使用情况部分中提供进一步的细节。
作为另一例子,资源管理器122可监测故障切换事件,并且在检测到这种事件时执行分配给主动VM和被动VM的资源的合适的改变。以下在使用情况部分中提供进一步的细节。
返回参照图4,在404,确定资源分配将要响应于在404中检测到的状况而被改变的VM。例如,如果资源管理器122基于接收到的资源使用信息并且基于表A中描述的RCF确定分配给VM1的CPU资源在60秒的时间段上处于或超过90%利用率,则VM1在404中被识别为资源分配将要被改变(在这种情况下,增加)的VM。
在406中,对于在404中确定的VM,确定分配将要被改变的资源和VM的资源的分配将要被改变的数量。例如,对于表A中描述的RCF,在确定分配给VM1的CPU资源在60秒的时间段上处于或超过90%利用率时,可在406中确定:响应于这种状况,额外的CPU核将要被分配给VM1。作为另一例子,对于表A中描述的RCF,在确定分配给VM1的CPU资源在60秒的时间段上处于或低于30%利用率时,可在406中确定:响应于这种状况,CPU核可以被从VM1解除分配。
在408,确定资源分配的改变是VM的资源分配的增加还是VM的资源分配的减小。如果它是减小,则处理继续至410,而如果它是增加,则处理继续至416。
在410,确定将资源的分配减小在406中确定的数量是否将会违反针对VM的该资源指定的基础限制阈值。如前所述,可在RCF中指定VM的资源的基础限制。基础阈值指示VM所需的一组最小或基础资源。不允许VM的资源的数量下降至低于这个最小或基础水平。例如,表A中示出的RCF指示:VM1的CPU核的基础限制为2个CPU核。因此,如果在406中确定CPU核将要被从VM1解除分配,则在410中检查这种解除分配是否将会使得分配给VM1的CPU核下降至低于2个CPU核的基础限制。
如果在410中确定将资源的分配减小在406中确定的数量违反针对VM的该资源指定的基础限制阈值,则不允许资源解除分配。在某些实施例中,指示无法执行资源解除分配的消息可被输出给用户,因为这种解除分配将会使得该VM的资源分配下降至低于基础限制。
如果在410中确定将资源的分配减小在406中确定的数量不违反针对VM的该资源指定的基础限制阈值,则在412执行处理以从在404中确定的VM解除分配在406中确定的资源的数量。实时地执行资源解除分配,而不必停止、重新开始或重新启动受影响的VM。一旦资源已被解除分配,按照420,继续执行监测阶段。作为412的一部分,解除分配的数量的资源可被返回到可用资源池120。以下参照图5提供与在412中执行的处理有关的进一步细节。
在416,确定将资源的分配增加在406中确定的数量是否将会违反针对VM的该资源指定的最大限制阈值。如前所述,可在RCF中指定VM的资源的最大限制。例如,表A中的“最大”列识别可被分配给VM的资源的最大数量。例如,按照表A中示出的RCF,VM1的CPU核的最大限制为4个CPU核。因此,如果在406中确定CPU核将要被分配给VM1,则在416中检查这种分配是否将会使得分配给VM1的CPU核增加至超过4个CPU核的最大限制。
如果在416中确定将资源的分配增加在406中确定的数量违反针对VM的该资源指定的最大限制阈值,则按照414,不允许资源分配。在某些实施例中,指示无法执行资源分配的消息可被输出给用户,因为这种分配将会使得该VM的资源分配增加至超过允许的VM的最大限制。
如果在416中确定将资源的分配增加在406中确定的数量不违反针对VM的该资源指定的最大限制阈值,则在418执行处理以针对在404中确定的VM将在406中确定的资源的分配增加在406中确定的数量。实时地执行资源分配,而不必停止、重新开始或重新启动受影响的VM。一旦资源已被分配,按照420,继续执行监测阶段。以下参照图6提供与在418中执行的处理有关的进一步细节。
尽管图4中描述的实施例和附图描述讨论了一定数量的单个资源如何可被分配给单个VM或从单个VM解除分配,但这不旨在是限制性的。在402中检测到的状况可导致一个或多个VM的一个或多个资源的资源分配的动态改变。可针对每个VM和每个资源执行以上在图4中示出和描述的处理。
图5描述示出根据本发明的实施例的为了动态地从VM解除分配一定数量的资源而执行的处理的简化流程图500。图5中描述的处理可以以由一个或多个处理单元(例如,处理器、核、核的某一部分)执行的软件(例如,代码、指令、程序)、硬件或其组合来实现。在某些实施例中,软件可被存储在非暂态计算机可读存储装置或介质上。图5中描述的一系列特定处理步骤不旨在是限制性的。
在502,由mVM执行的资源管理器122(或替代地,由mVM执行的一个或多个程序)可向管理程序118发送请求以从特定VM解除分配特定数量的特定资源。在504,管理程序118向在502中识别的VM的客户操作系统(GOS)通知:将在502中识别的资源解除分配在502中识别的数量即将发生。在某些实施例中,GOS可支持热插拔API(例如,高级配置和电源接口(ACPI)),并且可使用该API来接收通知。GOS可接收资源的API去除通知。
在506,在从管理程序118接收到通知时,GOS可执行处理以便能够从VM解除分配请求数量的资源。例如,GOS可执行清理操作以释放将要被解除分配的数量的资源。例如,如果资源是CPU核,则作为506的一部分,GOS可执行把由将要被解除分配的CPU核执行的所有过程和线程移至分配给VM的另一CPU核的处理。如果将要被解除分配的资源是系统存储器的一部分,则作为506的一部分,GOS可将存储在系统存储器的该部分中的任何数据或过程移至分配给VM的系统存储器的另一部分。如果将要被解除分配的资源是非易失性存储器(例如,盘贮存器),则作为506的一部分,GOS可将存储在将要被解除分配的非易失性存储器的该部分中的任何数据移至分配给VM的非易失性存储器的另一部分。如果将要被解除分配的资源是网络端口,则作为506的一部分,GOS可执行这样的操作:使该端口脱机以使得它不被使用并且可被解除分配。当去除网络端口时,由端口使用的任何网络路线可被重新路由至其它剩余端口。然后,可以使网络端口脱机。如果将要被解除分配的资源是网络带宽,则作为506的一部分,GOS可在某些实施例中,VM的网络带宽取决于用于处理它的对应的CPU和存储器资源。在一个实施例中,可以通过减少(减少带宽)或增加(增加带宽)CPU和存储器资源来改变网络带宽。当资源改变需要修改硬件装置配置时,mVM或其它指定的“监督者(supervisor)”VM可执行硬件的改变。可实现这一点以提供保护从而防止普通VM错误配置硬件,普通VM错误配置硬件将会影响系统上的所有VM。
在已在506中执行必要的清理之后,在508,GOS向管理程序118发送现在将要安全地从VM解除分配请求数量的资源的信号。在510,管理程序118随后通过从VM解除映射将要被解除分配的数量的资源来执行解除分配并且管理硬件装置。
在512,已被解除分配的数量的资源可被放置在可用资源池中并且可分配给某一其它VM。
以上述方式,由与管理程序协作的mVM(诸如,资源管理器122)执行的程序可执行与VM的资源的解除分配有关的处理。实时地动态地执行资源分配的这些改变,而不必停止、重新启动或重新开始VM。这促进了各种资源消耗者之间的有限资源的更好利用。
图6描述示出根据本发明的实施例的为了动态地将一定数量的资源分配给VM而执行的处理的简化流程图600。图6中描述的处理可以以由一个或多个处理单元(例如,处理器、核、核的某一部分)执行的软件(例如,代码、指令、程序)、硬件或其组合来实现。在某些实施例中,软件可被存储在非暂态计算机可读存储装置或介质上。图6中描述的一系列特定处理步骤不旨在是限制性的。
在602,检查是否可完全从可用资源池获得将要被分配给VM的数量的资源。该检查可被由mVM(诸如,资源管理器122)执行的程序执行。如果在602中确定可完全从可用资源池获得将要被分配给VM的数量的资源,则处理前进至610,否则前进至604。
在604中,对于无法从可用资源池获得的将要被分配的数量的资源,尝试从可由该装置执行的其它VM释放所述数量的资源。各种不同技术可被用来从其它VM释放资源。释放的资源可被放置在可用资源池中。以下在图7中示出并且描述这样的一种技术。然而,这个技术不旨在是限制性的。也可使用各种其它技术。
在606,执行检查以查看可从可用资源池获得的资源的数量加上从其它VM释放的资源的数量是否满足将要被分配的资源的数量。如果足够,则处理前进至610,否则按照608不执行分配,因为不存在可用于完成分配的足够资源。可在608中输出错误消息,该错误消息指示无法执行资源分配的改变。
在610中,资源管理器122向管理程序118发送用于将来自可用池的一定数量的资源映射到将要被分配资源的VM的请求。在612中,管理程序118将所述一定数量的资源映射到VM。在614,管理程序118可向正被分配资源的VM的GOS通知:所述一定数量的资源已被映射到VM并且可由VM使用。在某些实施例中,支持热插拔事件API(例如,ACPI)的GOS可使用API接收通知:映射的资源可由VM使用。在616,GOS可执行处理以便使得VM能够使用新映射的资源。在某些实施例中,如果在上述处理期间发生错误状况,诸如如果VM无法实现该请求,则VM可被重新启动,并且可启动故障切换或某一其它校正动作。
在某些实施例中,一些限制可被施加到由VM使用新映射的资源部分的方式。例如,在一些实施例中,根据需要,VM可被限制以这种方式使用新映射的资源,即不允许资源被从VM解除映射并且可用于可用资源池。例如,在一个实施例中,如果新分配的资源是系统存储器,则该存储器不可被用作外部直接存储器存取(DMA)装置的目标或用于存储固定内核对象,因为这样操作会妨碍存储器被安全地从VM去除。因此,在618,GOS可监测VM对新分配的资源的使用并且限制使用该资源的方式。
在某些实施例中,GOS处理资源映射/解除映射。如果由于某种原因,资源无法被正确地映射/解除映射,则校正动作可包括关闭和重新启动VM。
如上所述,由与管理程序协作的mVM(诸如,资源管理器122)执行的程序、VM的GOS和由VM执行的监测代理可执行与VM的资源的分配有关的处理。动态地执行资源分配的这些改变,而不必停止、重新启动或重新开始正被分配资源的VM。另外,如果可用资源池不具有足够数量的将要被分配的资源,则尝试从其它VM释放需要数量的资源。从其它VM释放的资源被添加到可用资源池以分配给该VM。也可执行其它VM的资源的释放,而不必停止、重新启动或重新开始这些其它VM。以这种方式,实时地执行分配和解除分配而不会严重地影响任何VM,同时使得能够实现VM之间的有限资源的更好利用。
如上所述,各种不同技术可被用来从其它VM释放资源并且使这些资源可用于将要被分配资源的VM。图7描述示出根据本发明的实施例的用于动态地从VM释放资源并且使其可被分配给VM的基于优先级的技术的简化流程图700。图7中描述的处理可以以由一个或多个处理单元(例如,处理器、核、核的某一部分)执行的软件(例如,代码、指令、程序)、硬件或其组合来实现。在某些实施例中,软件可被存储在非暂态计算机可读存储装置或介质上。图7中描述的一系列特定处理步骤不旨在是限制性的。
在701,确定需要被释放并且可用于分配的需要数量的资源。在某些实施例中,需要数量是需要被分配给VM的资源数量减去可用资源池中可用的资源的数量。例如,如果3GB的系统存储器将要被分配给VM并且仅可从可用资源池获得1GB,则需要释放或解除分配、并且可用于重新分配的存储器的需要数量是(3-1)=2GB。
在702,确定将要被分配资源的VM的优先级。在一个实施例中,可在RCF中提供VM的优先级信息。例如,表A中描述的RCF包括指定VMS的优先级的“优先级”列。例如,按照表A,VM1的优先级为高,VM2的优先级为中,等等。
在704,确定优先级比在702中确定的优先级低的VM的列表。在706,基于优先级来排序在704中确定的VM的列表。
在708,变量可被初始化以用于进一步的处理。例如,“VMP”变量可被用来代表来自正被处理的排序列表的VM。VMP可被初始化为排序列表中的最低优先级VM的VM。另一变量“Aggregate(合计)”被设置为零。
按照710、712、714、716和722,开始于列表中的最低优先级VM,对排序列表中的VM进行迭代,以针对每个VM确定可以从该VM释放的资源的数量。继续这种迭代,直至可以释放将要被分配的需要数量的资源并且该资源可用于分配。因此,在710,开始于排序列表中的最低优先级VM,确定可以从VMP释放的资源的数量。在执行这种确定的同时,可考虑VMP的资源的基础限制以确保在资源的释放之后仍然分配给VMP的资源的总量不会下降至低于该VMP的基础限制。
在712,将在710中确定的可以释放的资源的数量与Aggregate变量相加。以这种方式,Aggregate变量记录可以从VM的排序列表中的各种VM释放的资源的总量的统计。
在714,检查Aggregate是否大于或等于需要的数量。如果Aggregate大于或等于需要的数量,则在720,从VM释放或解除分配在710中针对来自该列表的各个VM的各个迭代确定的数量的资源。在一个实施例中,可根据以上在图5中示出和描述的处理来执行一个或多个VM的资源的解除分配。解除分配的资源可被归还给可用资源池。处理随后可返回到图6中的606并且随后继续至610。
如果在714中确定Aggregate仍然小于需要的数量,则在716执行检查以查看在706中产生的VM的排序列表中是否存在尚未根据710和712处理的任何VM。如果存在至少一个这样的VM,则在722,VMP变量被设置为具有最低优先级的VM的排序列表中的下一个未处理的VM。处理随后使用新的VMP继续至710。
如果在716中确定排序列表中的所有VM已被处理,则这意味着:不再存在可用于释放资源的VM。由于Aggregate仍然小于需要的数量,所以这意味着:列表中的VM无法满足需要的数量。因此,在718,可传送这样的指示:无法通过从VM的列表中的VM释放资源来满足需要数量的资源。在这种情况下,处理可继续至606(在图6中),其中确定可从可用资源池获得的资源的数量加上从其它VM释放的资源的数量仍然小于将要被分配的资源的数量。随后可按照608不执行资源分配。
在某些实施例中,在702、704、706、708、710、712、714、716、718和716中描述的处理可被由mVM(诸如,由资源管理器122)执行的一个或多个程序执行。720中的处理可由资源管理器122结合管理程序118来执行。
在某些实施例中,“可回收”级的优先级可被分派给一个或多个VM,代表最低优先级。mVM可以关闭被标记为“可回收”的VM并且回收该VM的所有资源,以及使该资源可分配给其它较高优先级的VM。
以上在图7中示出和描述的处理假设:在按照VM的基础上分派优先级。然而,如以上参照表B所述,可在按照VM和资源的基础上指定优先级。在这种实施例中,在702中,该处理可针对将要被分配的资源确定按照VM和资源的优先级。在704中,确定按照VM和资源(正被分配的资源)的优先级比在702中确定的按照VM和资源的优先级低的VM的列表。这个VM的列表随后被处理,并且它们的针对正被分配的资源的按照VM和资源的优先级被用于该处理。
如上所述,分配给VM的资源可被动态地改变(例如,增加或减小)而不必停止、重新启动或重新开始VM。资源可包括各种类型的资源,包括但不限于处理资源、系统存储器资源、网络资源(诸如,网络带宽资源和端口)、非易失性存储器资源、输入/输出(I/O)资源等。
处理资源
装置或系统可提供代表装置或系统的处理资源的一个或多个处理单元。这些处理单元可以是一个或多个处理器、一个或多个CPU核、核的某个部分及其组合。例如,在包括一个或多个多核CPU的系统或装置中,基本处理单元可以是CPU核并且一个或多个CPU核可被分配给每个VM。这些一个或多个处理单元可被动态地添加到VM或从VM去除。在一个实施例中,当由mVM指示时,管理程序118将一个或多个核映射到VM并且通知VM的GOS。GOS随后将会使额外的核联机并且使其可被VM使用。
在某些实施例中,为了安全地从VM去除一个或多个核,向底层的GOS通知即将发生的核去除。对于将要被去除的核,GOS将在该核上运行的所有过程移至VM中的其它核并且使指定的核脱机。管理程序118随后可从VM去除或解除分配该核并且将它放置在可用资源池中。在一些实施例中,如果在使核脱机时发生错误,则该核可能无法从GOS去除并且VM可被标记为故障。例如,随后,可由被mVM执行的程序(诸如,资源管理器122)开始一个或多个校正动作。这些动作可包括例如停止和重新启动故障VM。
系统存储器(例如,RAM)
在一些实施例中,存储器(通常被称为系统存储器或RAM)可被动态地添加到VM和/或从VM去除。在一个实施例中,按照固定大小块添加和/或去除存储器。可从由VM的底层的GOS支持的大小确定存储器块的大小。在一个实施例中,为了将存储器添加到VM,由mVM执行的程序(诸如,资源管理器122)可请求管理程序118将一个或多个存储器块映射到VM。管理程序118随后通知底层的GOS:可使用额外的存储器。
已被分配存储器的VM的GOS可监测如何使用所述额外的动态存储器。在一个实施例中,该存储器不应该被用作外部DMA装置的目标或用于存储固定内核对象,因为这样操作会妨碍动态存储器被安全地去除。
在一些实施例中,为了从VM去除动态存储器,管理程序118向GOS通知即将发生的存储器去除。GOS随后将存储在即将发生的存储器中的所有数据移至其它存储器区域或将该存储器与盘交换。一旦完成,存储器随后可脱机并且管理程序118可将存储器返回给可用资源池。
在一些实例中,GOS可能在重新定位数据结构的时候达到存储器溢出的状况。在这种情况下,GOS继续执行存储器溢出过程的正常操作以恢复足够的自由存储器从而完成重新定位。没有预期从VM去除动态存储器的请求会失败。如果发生错误,则VM可能发生故障并且它可被由mVM执行的一个或多个程序(诸如,资源管理器122)停止和重新启动。
网络资源
各种网络资源可被动态地分配给VM或从VM解除分配,诸如VM可被允许消耗的带宽的量、由VM单独拥有的外部网络端口的数量等。
(1)网络带宽
每个VM可具有它自己的一组进入速度限制参数。这组参数可被用来控制由VM接收的通信的速度。由mVM执行的程序可调整速度限制参数以增加或减小由每个VM接收的数据通信的数量。不同类型的流可具有不同的速度限制参数。对于每个VM,可存在一组输出通信整形参数。这组参数控制由VM发送的通信的速度。由mVM执行的一个或多个程序可调整通信整形参数以增加或减小VM的发送数据速度。
(2)端口
在虚拟化环境中,每个VM需要访问它自己的一组数据端口。由mVM(诸如,资源管理器122)执行的程序可以使得外部端口能够被添加到每个VM和/或从每个VM去除。在一些实施例中,为了允许VM直接配置和管理外部端口上的流,资源管理器122可配置转发硬件以将数据端口映射到由VM拥有的控制接口。
非易失性存储器
在某些实施例中,单个非易失性存储器(例如,存储装置)可由系统上的多个VM共享。在这种情况下,管理程序118可提供对所述单个非易失性存储器的虚拟化访问。VM可经由管理程序118使用虚拟存储装置驱动器来执行磁盘I/O。每个VM可具有它自己的私有盘分区。为了允许动态调整盘分区的尺寸,管理程序118可将存储装置分割成等尺寸逻辑块。对于支持动态盘分区改变的VM,VM的底层的GOS可支持逻辑卷管理器(LVM)或等同技术。
在一些实施例中,由mVM(诸如,资源管理器122)执行的一个或多个程序可动态地增加分配给VM的存储空间的数量。管理程序118可通过在未分配逻辑块中进行映射来增加VM的逻辑分区尺寸。向VM的GOS通知额外的存储器,并且VM的GOS可以使用LVM来扩展它的盘分区尺寸。
在一些实施例中,安全地从VM去除存储空间可能需要管理员去除不需要的文件,以在没有数据丢失的情况下允许完整逻辑块被解除分配。
I/O资源
在某个实施例中,虚拟化驱动器可被实现在管理程序118中以允许VM之间的装置的共享。由mVM执行的资源管理器122可指示管理程序118在VM之间动态地移动装置。底层的GOS可支持装置类型的热插拔。不支持本地虚拟化的硬件装置(例如,芯片的一部分可被分配给不同VM的SR-IOV)由一个VM单独拥有或在管理程序内被虚拟化。
示例性使用情况
(1)根据灵活方式的地址系统可扩展性
当前,如果要增加系统的可扩展性要求,则实现这一点的唯一机制是针对该系统建立或添加更强大的硬件(HW)。在可以执行多个VM的系统或装置中,每个VM可以用作单独的虚拟系统。以这种方式,物理装置可以提供多个虚拟系统,每个虚拟系统具有它自己的一组分配的资源。实现虚拟系统的资源的动态分配和解除分配使得分派给虚拟系统的资源能够被动态地改变以满足可扩展性要求,而不必将更多硬件添加到该系统。因此,动态地将资源分配给VM的能力在解决系统可扩展性问题方面打开了新的方式,而不必每次建立或添加新的硬件。
例如,基础系统可具有“n”数量的核,其中“m”个核(其中“m”小于“n”)可被分配给用作虚拟系统的VM。这个虚拟系统可被证明扩展为网络中的“x”数量的装置。如果以后该用户需要系统可扩展性超过“x”,则可通过动态地将额外的可用核分配给VM来执行这个升级。新分配的核被动态地热插拔至VM。
(2)虚拟路由器(VR)
VM可运行执行路由器或交换机的功能的程序。以这种方式,每个VM可用作个体虚拟路由器(VR)或交换装置。由于装置或系统可以并行地执行多个VM,所以几个这种VR可以并行地在系统上共存,共享系统的资源。VR可被提供给不同顾客(或租户)。例如,第一VR可被提供给第一租户,而第二VR可被提供给第二租户。以这种方式,提供多个VR的单个系统或装置可以为多个租户和多个应用提供服务。
由VR执行的处理的量可以随着时间而变化。例如,VR可能通常不是非常活跃,因为大多数路由相关操作可直接由被定制为执行路由功能的路由硬件来处理。在这个阶段,VR可仅需要一组最小或基础资源。然而,存在这样的时候:VR会变得非常繁忙并且由于所述一组基础资源而结束于资源限制或缺乏。具有动态地将额外的资源分配给VR的能力允许它在需要时进行扩展以满足大量需求。以这种方式,当出现需要时,额外的资源可在出现VR对资源的需要时被动态地分配给VR。
在执行多个VR的系统中,针对VR动态地分配和解除分配资源的能力使得能够在基于需要的基础上分配资源。另外,由于系统中的总资源通常是固定的,所以将资源从不是那么活跃的VR解除分配给繁忙的VR的能力使得资源能够在VR之间被高效地使用和共享。这提供显著的竞争优势,因为可以由相同硬件来服务更多VR。另外,VR在需求的高峰期间更容易做出响应。在某些实施例中,VR还可以根据个体SLA而被分派不同资源水平。此外,也不需要预先将所有资源分配(或静态地将资源分配)给VR,因为系统可以动态地适应于需要。
(3)虚拟高可用性(HA)
现代网络架构努力提供这样的解决方案:路由或转发功能不被网络或网络装置故障中断。增加系统的可用性(被称为高可用性)的一个技术是通过提供冗余。例如,网络装置可包括两个处理器,其中一个处理器被配置为在“主动”模式下操作并且另一处理器被配置为在“被动”(或待机)模式下操作。在主动模式下操作的处理器(被称为主动处理器)通常被配置为执行一组全部的联网功能,而在被动模式下操作的处理器(被称为被动处理器)被配置为不执行一组全部的联网功能,或仅执行由主动处理器执行的功能的小子集。当例如由于主动处理器中的错误而可能发生使主动处理器重新启动或发生故障的事件(被称为故障切换事件)时,被动处理器作为主动处理器进行接管并且开始执行在主动模式下执行的功能。以这种方式,由主动处理器执行的联网功能不会由于故障切换而被中断。以前的主动处理器变为被动处理器。
主动被动模型可被实现在执行多个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解除分配的所述一定数量的资源可被分配给主动VM。
在一个这种实施例中,用户可简单地指定用于主动VM的资源的数量和用于被动VM的资源的数量。例如,用户可指定:系统中的75%的资源(例如,75%的处理资源和系统存储器资源等)将要被分配给主动VM并且25%的资源将要被分配给被动VM。在一个实施例中,可在RCF中指定这些数量。当启动VM时,这些指定数量的资源随后被分配给VM。例如,当启动第一VM时,作为主动VM操作的第一VM可被分配75%的资源。作为被动VM操作的第二VM可被分配25%的资源。稍后,当故障切换事件发生时,第二VM可变为主动VM并且第一VM可变为被动VM。在这种情况下,由mVM(诸如,资源管理器122)执行的一个或多个程序可被配置为自动地从第一VM(第一VM现在是被动VM)解除分配资源并且将额外的资源分配给第二VM(第二VM现在是主动VM),从而在故障切换的末尾,第二VM(现在是主动VM)具有分配给它的75%的资源并且第一VM(现在是被动VM)具有分配给它的25%的资源。以这种方式,分配给主动VM的资源跟随主动的VM,并且同样地,分配给被动VM的资源跟随被动的VM。mVM位于主动的VM上,即位于主动VM上。在故障切换期间,mVM自动地切换至新的主动VM。
图8显示根据本发明的实施例的主动VM和被动VM之间的自动动态资源分配的例子。如图8中所示,VM 802可被启动作为主动VM,并且在启动VM 802时被管理程序118分配3个CPU核、2GB系统存储器和3GB的非易失性存储器。VM 804可被启动作为被动VM,并且在启动VM 804时被管理程序118分配1个CPU核、1GB系统存储器和1GB的非易失性存储器。
指定将要被分配给主动VM和被动VM的资源的信息可被存储在管理程序118(或资源管理器122)可访问的位置。例如,该信息可被存储在RCF中。在一个实施例中,管理程序118可被配置为访问这种信息,以及启动VM 802作为主动VM并且向它分配针对主动VM指定的资源,以及启动VM 804作为被动VM并且向它分配针对被动VM指定的资源。
在另一实施例中,由mVM执行的资源管理器122可被配置为读取主动VM和被动VM资源分配信息。资源管理器122可随后将这种信息传送给管理程序118,管理程序118随后被配置为启动VM并且在启动时分配指定的资源。
在启动之后的某个点,可能发生故障切换事件。故障切换事件可以是自愿的(例如,由系统管理员引起)或非自愿的(例如,由系统中的错误引起)。作为故障切换的结果,以前是被动VM的VM 804现在可变为主动VM,并且以前是主动VM的VM 802可变为被动VM,如图8中所示。在故障切换时,VM 802和804的资源分配可被自动地改变,从而新的主动VM 804获得针对主动VM指定的分配资源,并且新的被动VM 802获得针对被动VM指定的资源。例如,如图8中所示,额外的资源被分配给主动VM 804,从而主动VM 804具有3个CPU核、2GB系统存储器和3GB的非易失性存储器。资源被从VM 802解除分配,从而VM 802具有1个CPU核、1GB系统存储器和1GB的非易失性存储器。
在一些实施例中,这些改变可由与管理程序118协同工作的资源管理器122自动地执行。在故障切换时,资源管理器可确定作为主动VM的VM和作为被动VM的VM,并且确定将要被分配给每个VM的资源的数量。资源管理器122可随后将该信息传送给管理程序118,管理程序118可将一个或多个资源(通过解除分配资源)从以前的主动VM 802移至新的主动VM804(通过将解除分配的资源分配给主动VM)。在实施例中,对资源(例如,CPU资源和存储器资源)的热插拔支持可由Linux GOS提供。
以这种方式,应该被分配给主动VM的资源被分派给或跟随在主动模式下操作的VM。类似地,应该被分配给被动VM的资源跟随在被动模式下操作的VM。自动地改变分配给主动VM和被动VM的资源的这种能力提供几个益处。它使得能够以与非高可用性系统相同的成本实现虚拟高可用性。这使得系统提供商能够以最小的额外成本提供优于竞争者的可靠性和可用性。
使用资源的动态重新分配的虚拟高可用性可被部署在各种不同系统上,包括但不限于单个多核CPU系统(例如,比萨盒(pizza box)系统)、具有有着一个或多个核的多个CPU的系统、基于底盘的系统等。例如,在包括一个或多个线卡和一个或多个管理卡的基于底盘的网络装置中,可在线卡级或在管理处理器级提供使用动态资源分配的虚拟高可用性。
(4)动态FlexNOS平台
FlexNOS通常被配置为允许第三方开发者建立将会在系统硬件(诸如,由加利福利亚州的圣何塞的Brocade Communications Systems,Inc.提供的硬件)上运行的定制应用。FlexNOS特别适合在VM内运行,因为它帮助隔离第三方应用与系统的其余部分。动态地将资源分配给FlexNOS VM的能力提供几个益处。它使得更多的FlexNOS VM能够由相同的底层硬件来服务。由于可以在按需的基础上执行资源分配,所以它使得FlexNOS VM能够在需求的高峰期间更容易做出响应,并且不需要向FlexNOS VM过度提供资源。另外,不同资源水平的SLA可被分派给FlexNOS VM。
(5)SLA管理
如以上所指示,由用户签署的服务水平协议(SLA)通常识别用于管理向用户允诺的服务水平的条款。SLA可包括与可用性、可维修性、性能、操作或由服务提供商向用户提供的服务的其它属性的水平有关的条款。基于SLA的条款,顾客被多次收费。例如,较高的收费可与允诺比允诺较低服务水平的SLA更高的服务水平的SLA相关联。由于顾客必须为由SLA允诺的服务的水平付费,所以SLA也通常指定在不满足在SLA中指定的条款的情况下对服务提供商施加的惩罚(例如,惩罚费用)。因此,对于服务提供商来说,符合SLA非常重要。
SLA条款可识别服务相关准则和与该准则关联的可测量阈值或范围。准则的例子非限制性地包括:
针对服务由用户经历的停机时间、提供服务所花费的时间、提供给用户的服务的质量、故障之间的平均时间、吞吐量、各种数据速率或任何其它可测量准则。准则可与各种参数有关,诸如可用性、可维修性、性能、操作或由服务提供商提供的服务的其它属性的水平。阈值或范围可与每个准则关联,并且可指示针对该准则的服务的预期或允诺水平。如果针对准则的服务的可测量水平下降至超过与准则关联的阈值或下降至与准则关联的范围以外,则提供的服务可被视为不符合或违反该准则的SLA。
由服务提供商提供并且可被SLA覆盖的服务可映射到由一个或多个VM执行的处理。这些VM可由一个装置或系统执行或者可分布在多个装置或系统上。SLA的条款可确定将要被使用的VM的数量和将要被分配给VM的资源以提供符合SLA的服务。例如,在一个实施例中,资源管理器122可被配置为在启动VM时将SLA中的条款映射为VM的数量和将要被分配给VM的资源。
参照图1,在某些实施例中,SLA信息130可存储一个或多个SLA的信息。资源管理器122可使用这种信息针对每个SLA确定将要针对SLA启动的VM的数量和将要在启动时被分配给VM的资源。如以上在图2中示出以及描述的,VM随后可由资源管理器122结合管理程序118来启动。
针对SLA启动的VM随后可被由VM执行的监测代理124监测。单独地或协同地操作的一个或多个监测代理可在SLA中提供的条款的上下文中监测一个或多个VM的操作。在一个实施例中,监测代理可被配置为监测VM(或一组VM)以确定所述VM(或所述一组VM)的操作是否符合SLA条款,并且将相关信息传送给资源管理器122。因此,资源管理器122可定期地从由与SLA信息对应的VM执行的监测代理124接收与由VM使用的资源有关的信息。
基于从监测代理接收到的信息,资源管理器122可确定分配给一个或多个VM的资源是否将要被动态地增加或减小从而保持符合SLA。在某些实施例中,资源管理器122可被配置为基于从监测代理124接收到的信息来检测SLA的一个或多个条款是否被违反或者处于被违反的危险中。资源管理器122随后可采取校正动作。这些校正动作可包括:使一个或多个VM的资源分配被动态地改变,从而由VM提供的服务符合SLA。可如以上参照图3、4、5、6和7所述地执行VM的资源分配的改变,并且实时地执行VM的资源分配的改变而不必停止、重置或重新启动VM。例如,如果资源管理器122确定服务质量降低并且处于下降至低于SLA允诺的阈值的危险中,则资源管理器122可使管理程序118增加分配给一个或多个SLA相关VM的处理资源以提高服务质量。
SLA的条款还可随着时间而改变或被修改。这些改变可被反映在图1中的SLA信息130中。资源管理器122(或由mVM 114执行的其它程序)可被配置为监测SLA信息130的任何这种改变,并且采取合适的动作。这些动作可非限制性地包括:改变用于提供SLA相关服务的VM的数量、改变一个或多个SLA相关VM的资源分配等。因此,动态地改变一个或多个VM的资源分配的能力使得系统能够动态地适应于SLA信息,并且确保提供的总体服务满足SLA条款。
受SLA影响的VM可由一个系统执行,或者可由经由网络以可通信方式彼此耦合的多个系统或装置执行。网络的例子包括因特网、局域网、企业网络等。对于在单个系统或装置内本地地执行的VM,VM的监测和管理(包括动态地改变VM的资源分配)可在某些实施例中被由在系统或装置上执行的本地mVM 114(诸如,资源管理器122)执行的一个或多个程序来处理。资源管理器122可使用SLA信息130和从由VM执行的监测代理接收到的信息来执行这些监测和管理活动。当将要执行VM的资源分配的改变时,或者如果将要启动新的VM,则资源管理器122可将信号发送给管理程序118,管理程序118可随后按照图2-7中描述的方法及其相应描述来执行分配/解除分配操作或启动新的VM。
在某些实施例中,可配置指定SLA的信息将要被如何映射为VM和分配给VM的资源的策略。这些策略可被存储在策略信息132中,并且被资源管理器122用来执行监测和管理活动。在一个实施例中,给定SLA的信息,策略可指定SLA信息将要被如何映射到将要针对SLA启动的VM并且映射到将要被分配给VM的资源。策略信息还可指定当VM的资源分配将要被动态地改变时的状况。例如,SLA可能声明web服务器必须处理100,000页/秒。如果监测代理观测到仅90,000页/秒并且配置的资源被完全使用(例如,CPU处于100%),则它可以请求更多CPU核以实现SLA。
与SLA对应的VM还可分布在网络上,并且被多个系统或装置执行。例如,当顾客的SLA覆盖提供给顾客的几个服务(包括但不限于联网服务、应用服务、存储服务等)时,可存在这样的情况。例如,SLA可应用于顾客的应用服务器、数据库和web服务器。可使用多个VM在不同的系统或装置上执行这些服务器和数据库。图9显示根据本发明的实施例的与SLA对应的VM可分布在多个联网系统上的这种联网环境900的例子。对于图9中描述的实施例,顾客可能已与服务提供商签署了用于数据库服务、应用服务和web服务器服务的SLA。这些服务可由多个系统提供。如图9中所示,数据库服务916可由系统902提供,web服务器服务922可由系统904提供,并且应用服务器服务可由系统906提供。系统902、904和906可经由网络908以可通信方式彼此耦合。网络908可具有各种类型,包括但不限于因特网、局域网、企业网络、广域网等。网络908可使用有线或无线通信链路。
提供数据库服务的数据库916可由系统902提供。可使用由系统902执行的一个或多个VM 918来实现数据库服务。本地管理程序910可促进系统902上的VM的创建和管理。mVM920还可在本地由系统902执行,以运行使得能够执行分配给VM 918的资源的动态改变的一个或多个程序(例如,资源管理器)。
提供web服务器服务的一个或多个web服务器922可由系统904提供。可使用由系统904执行的一个或多个VM 924实现web服务器服务。本地管理程序912可促进系统904上的VM的创建和管理。mVM 926还可在本地由系统904执行,以运行使得能够执行分配给VM 924的资源的动态改变的一个或多个程序。
提供应用服务的一个或多个应用服务器928可由系统906提供。可使用由系统906执行的一个或多个VM 930实现应用服务。本地管理程序914可促进系统906上的VM的创建和管理。mVM 932还可在本地由系统906执行,以运行使得能够执行分配给VM 930的资源的动态改变的一个或多个程序。
对于系统的本地的VM,分配给VM的资源的动态改变可被由本地mVM结合本地管理程序执行的程序来处理。例如,对于系统902的本地的VM(诸如,VM 918),VM之间的资源的动态分配可被由mVM 920结合本地管理程序910执行的程序来处理。
在某些实施例中,提供策略管理器136以监测和协调由各种联网mVM执行的操作。策略管理器136可位于与执行SLA的各种VM的系统分离的服务器上,或者也可由执行SLA的VM的系统之一上的单独VM来执行。例如,返回参照图1,特殊策略VM(pVM)可由管理程序118启动,以运行执行策略管理功能的程序(诸如,策略管理器136)。
对于SLA,策略管理器136可被配置为监测和协调由与SLA对应的VM执行的操作,其中VM可分布在多个系统上。由pVM控制的所有mVM可被视为属于相同域。可以存在多个这种pVM,每个pVM控制它自己的域。策略管理器136被配置为监测和协调各种mVM。策略管理器136可动态地调整由mVM使用的策略以确保满足顾客SLA条款。这使得能够在多个系统上协调分配给VM的资源的动态改变。
在某些实施例中,策略管理器136可基于SLA的策略信息132执行协调活动。策略管理器136可将SLA信息映射到将要在多个系统上启动的一组VM和将要在启动时分配给VM的资源。策略管理器134随后可将这种信息传送给多个系统上的个体mVM,从而与每个mVM的本地的管理程序协作的该mVM可以利用合适的资源启动本地VM。策略管理器136随后可结合本地mVM来监测和管理VM,包括分配给VM的资源。以这种方式,策略管理器136通过协调由mVM执行的VM的资源的分配来帮助实现多个系统上的多个VM上的SLA要求。在某些实施例中,协调活动可包括移动系统上的全部VM以满足SLA要求。
通过提供处理系统或装置的本地的资源分配的mVM并且通过具有用于监测和协调多个系统上的资源分配的策略管理器,本发明的某些实施例提供对使用多层虚拟化提供的多层应用的SLA的支持。不需要静态地将资源分派给VM。替代地,动态地改变资源分配而不必重新开始、重新启动或停止VM的能力在VM如何分配和使用资源方面提供了巨大的灵活性,甚至在密集VM环境中也是如此。
因此,某些实施例可以提供一个或多个系统或装置上的VM上的多层SLA管理。在多层应用中为资源提供完整的动态可管理性。应用可以具有各种类型,包括但不限于联网应用和服务、虚拟化应用和服务、基于云的计算应用和服务等。针对资源的分配提供完整的端对端解决方案,这又导致提供的服务的更高的可用性。
(6)VM之间的动态资源分配
部分(5)在以上描述了一个或多个VM的资源分配如何可以在SLA的上下文中被动态地改变。然而,这不旨在是限制性的。也可在其它上下文中执行分配给VM的资源的动态改变。例如,在某些实施例中,可基于正在执行的VM的特性来执行动态资源分配改变。这种特性的例子是与VM关联的优先级。
如上所述,优先级可被分派给VM。在一个实施例中,可在RCF中指定在启动时分派给VM的优先级。例如,表A中描述的RCF指示各种VM的优先级(“高”、“中”、“低”)。在VM在启动之后执行的时候,VM的优先级也可随着时间而改变。
某些实施例使得能够基于与VM关联的优先级在VM之间执行动态资源分配。可在策略信息132中或在RCF中指定用于基于VM的优先级控制VM之间的资源分配的规则。对于在系统或装置上本地地执行的VM,在系统或装置上本地地执行的资源管理器122可基于关于RCF中的信息的策略信息132来确定VM之间的资源分配何时将会被改变。当要执行改变时,资源管理器122可将信号发送给本地管理程序。管理程序随后可执行改变。在分布级,策略管理器136可基于策略信息136监测和管理各种系统上的动态资源分配。
网络装置实施例
各种不同系统和装置可包括本发明的实施例。图10提供可包括本发明的实施例的网络装置的例子。图10描述可包括本发明的实施例的网络装置1000的简化方框图(例如,网络装置1000可对应于图1中描述的装置100)。在图10中描述的实施例中,网络装置1000包括:多个端口1012,用于接收和转发数据包;和多个卡,被配置为执行处理以促进将数据包转发到它们的预期目的地。所述多个卡可包括一个或多个线卡1004和管理卡1002。在一个实施例中,卡(有时也被称为刀片或模块)可被插入到网络装置1000的底盘上的多个槽中的一个槽中。这种模块化设计允许根据不同网络拓扑和切换要求而具有装置的各种槽中的卡的不同组合的灵活配置。图10中描述的网络装置1000的部件仅用于说明性目的,而非意图以任何方式限制本发明的范围。替代实施例可具有比图10中示出的部件多或比图10中示出的部件少的部件。
端口1012代表网络装置1000的I/O平面。网络装置1000被配置为使用端口1012接收和转发包。端口1012内的端口可根据网络装置1000使用该端口接收数据包还是发送数据包而被归类为输入端口或输出端口。由网络装置1000用来接收包的端口被称为输入端口。用于从网络装置1000传送或转发包的端口被称为输出端口。特定端口可既用作输入端口又可用作输出端口。端口可通过链路或接口连接到邻近的网络装置或网络。端口1012可能能够按照不同速度(包括1千兆比特/秒、10千兆比特/秒、100千兆比特/秒甚至更快速度)接收和/或发送不同类型的通信。在一些实施例中,网络装置1000的多个端口可在逻辑上被分组为一个或多个组(trunk)。
在经由输入端口接收数据包时,网络装置1000被配置为确定将要被用来从网络装置1000发送数据包的装置1000的输出端口,以促进将包传送到它的预期目的地。在网络装置1000内,包被从输入端口转发到确定的输出端口,然后使用输出端口从网络装置1000发送。在一个实施例中,从输入端口到输出端口的包的转发由一个或多个线卡1004执行。线卡1004代表网络装置1000的数据转发平面。每个线卡可包括一个或多个包处理器,所述一个或多个包处理器被编程为执行从输入端口到输出端口的数据包的转发。在一个实施例中,由线卡执行的处理可包括:从接收到的包中提取信息,使用提取的信息执行查询以确定包的输出端口从而包可被转发到它的预期目的地,以及将包转发到输出端口。提取的信息可包括例如接收到的包的头部。
管理卡1002被配置为执行网络装置1000的管理和控制功能,并且代表网络装置1000的管理平面。在一个实施例中,管理卡1002经由交换机结构1006以可通信方式耦合到线卡1004。管理卡1002可包括一个或多个物理处理器1008,处理器1008中的一个或多个可以是多核处理器。这些管理卡处理器可以是在存储在关联的存储器1010中的软件的控制下进行操作的通用多核微处理器,诸如由Intel、AMD、ARM、Freescale Semiconductor,Inc.等提供的通用多核微处理器。处理器可运行一个或多个VM。分配给这些VM的资源可被如上所述动态地改变。在一些实施例中,可提供多个管理卡以用于冗余以及增加可用性。
在一些实施例中,一个或多个线卡1004各自可包括一个或多个物理处理器1014,一些处理器1014可以是多核的。这些处理器可运行一个或多个VM。分配给这些VM的资源可被如上所述动态地改变。
图10中描述的实施例描述基于底盘的系统。然而,这不旨在是限制性的。本发明的某些实施例还可被实现在基于非底盘的网络装置中,基于非底盘的网络装置有时被称为“比萨盒”。这种网络装置可包括单个物理多核CPU或多个物理多核CPU。
执行分配给VM的资源的动态改变的能力显著提高有限资源的利用率。资源不再需要被静态地绑定到VM。替代地,资源可在基于需要的基础上被高效地分配给VM。以这种方式,分配给VM的资源可在VM的生命周期内被改变,而不必停止、重新开始或重新启动VM。
本发明的某些实施例促进各种VM之间的有限资源的改进的共享并且更好地使用可用资源。例如,在VM之间执行资源的动态改变的能力可被能够支持多个VM的任何系统或装置使用。
执行分配给VM的资源的动态改变的能力还在各种应用中扩展VM的使用。例如,如上所述,利用这种能力,VM可被更高效地用作虚拟路由器,以根据主动被动模型提供高可用性,确保满足SLA条款和条件,提供多层动态虚拟化等。通常,以上教导可被应用于使用VM的任何应用。不再需要静态地将资源分派给VM。
可以使用专用部件和/或可编程处理器和/或其它可编程装置的任何组合来实现上述各种实施例。各种实施例可被仅以硬件来实现,或仅以软件来实现,或使用其组合来实现。例如,软件可具有存储在计算机可读存储器中的指令、程序等形式,并且可被一个或多个处理单元执行,其中处理单元是处理器、处理器的核、或核的一部分。在某些实施例中,可以以软件来执行上述各种处理(包括图2-7中的流程图中描述的处理)而不需要改变已有装置硬件(例如,路由器硬件),由此增加该解决方案的经济可行性。由于某些发明实施例可以完全以软件来实现,所以它允许快速展示或转变以及较小的资本投资,这进一步增加该解决方案的经济可行性和吸引力。
这里描述的各种处理可以按照任何组合被实现在同一处理器或不同处理器上,每个处理器具有一个或多个核。因此,在部件或模块被描述为适于或被配置为执行某个操作的情况下,例如可通过以下方式实现这种配置:设计用于执行该操作的电子电路;对可编程电子电路(诸如,微处理器)进行编程以执行该操作;提供可由部件或模块(例如,一个或多个处理器)执行的软件或代码指令以执行该操作;或其任何组合。过程可使用各种技术(包括但不限于用于过程间通信的传统技术)通信,并且不同对的过程可使用不同技术,或者相同对的过程可在不同时间使用不同技术。另外,尽管上述实施例可参照特定硬件和软件部件,但本领域技术人员将会理解,也可使用硬件和/或软件部件的不同组合,并且描述为以硬件实现的特定操作也可以软件来实现,反之亦然。
各种实施例不限于某个特定数据处理环境内的操作,而是自由地在多个数据处理环境内操作。另外,虽然已使用一系列特定事务描述了实施例,但这不旨在是限制性的。
因此,虽然已描述了特定发明实施例,但这些不旨在是限制性的。各种变型和等同物落在下面的权利要求的范围内。