经优化的虚拟机迁移机制转让专利

申请号 : CN201080016628.0

文献号 : CN102388380B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : L·K·乌耶达

申请人 : 微软公司

摘要 :

虚拟机管理系统可以执行将虚拟机从较低效的主机移动到较高效的主机的三阶段迁移分析。在许多情况中,迁移可以允许低效的主机设备断电并可以减少数据中心或其他用户的总体能量花费。迁移分析可以包含在合并虚拟机和释放主机设备时执行第一合并、负载平衡和第二合并。迁移分析可以也包含在扩展容量时执行第一负载平衡、合并和第二负载平衡。

权利要求 :

1.一种将多个虚拟机放置在多个主机设备上的方法,所述方法包括:使用第一主机容量限制来执行第一仿真合并(208),所述第一仿真合并通过包括以下的方法来执行:将所述主机设备的第一组标识为已供电主机设备,并将所述主机设备的第二组标识为已断电主机设备,所述已供电主机设备中的每一个主控所述多个虚拟机中的至少一个;

确定所述多个主机设备中的每一个的效率;

将所述主机设备的第一组中的至少一个标识为低效的主机;

将一组虚拟机标识为在所述所述主机设备的第一组中的所述至少一个上运行的那些虚拟机;

将所述一组虚拟机放置在所述主机设备的第一组的其他成员上以创建第一映射,执行所述放置以使得所述主机设备中的每一个具有少于所述第一主机容量的容量;

使用所述第一映射来执行仿真负载平衡(210)操作以创建第二映射,所述仿真负载平衡包括移动至少一个虚拟机以使得所述主机设备中的所有都在第二主机容量限制之下;

使用所述第二映射来执行第二仿真合并(212)以创建第三映射,使用第三主机容量限制来执行所述第二仿真合并;以及根据所述第三映射将所述多个虚拟机(214)放置在所述多个主机设备上。

2.如权利要求1所述的方法,所述效率是功率效率。

3.如权利要求2所述的方法,通过所消耗的资源除以所消耗的功率来确定所述功率效率。

4.如权利要求3所述的方法,所述资源是CPU资源。

5.如权利要求3所述的方法,所述资源是存储资源。

6.如权利要求3所述的方法,所述资源是稀缺资源。

7.如权利要求1所述的方法,所述仿真负载平衡包括从所述主机设备的第二组标识新的主机并将所述虚拟机中的至少一个移动到所述新的主机。

8.如权利要求7所述的方法,所述新的主机是高效的主机。

9.如权利要求1所述的方法,所述第一主机容量限制高于所述第二主机容量限制。

10.如权利要求9所述的方法,所述第二主机容量限制高于所述第三主机容量限制。

11.如权利要求1所述的方法,对所述主机设备中的至少两个执行所述第一仿真合并。

12.如权利要求1所述的方法,所述执行仿真负载平衡是通过最坏适应递减算法来执行的。

13.如权利要求1所述的方法,使用主机设备的功率花费来计算所述效率,所述功率花费包括可归因于所述主机设备的供电花费和冷却花费。

14.一种将多个虚拟机放置在多个主机设备上的系统,所述系统包括:用于使用第一主机容量限制来执行第一仿真合并的装置,所述第一仿真合并通过包括以下的方法来执行:将所述主机设备的第一组标识为已供电主机设备,并将所述主机设备的第二组标识为已断电主机设备,所述已供电主机设备中的每一个主控所述多个虚拟机中的至少一个;

确定所述多个主机设备中的每一个的效率;

将所述主机设备的第一组中的至少一个标识为低效的主机;

将一组虚拟机标识为在所述所述主机设备的第一组中的所述至少一个上运行的那些虚拟机;

将所述一组虚拟机放置在所述主机设备的第一组的其他成员上以创建第一映射,执行所述放置以使得所述主机设备中的每一个具有少于所述第一主机容量的容量;

用于使用所述第一映射来执行仿真负载平衡操作以创建第二映射的装置,所述仿真负载平衡包括移动至少一个虚拟机以使得所述主机设备中的所有都在第二主机容量限制之下;

用于使用所述第二映射来执行第二仿真合并以创建第三映射的装置,使用第三主机容量限制来执行所述第二仿真合并;以及用于根据所述第三映射将所述多个虚拟机放置在所述多个主机设备上的装置。

说明书 :

经优化的虚拟机迁移机制

[0001] 背景
[0002] 虚拟机是计算机设备的计算机软件实现,其中虚拟机可以像物理计算机那样执行程序。虚拟机被广泛用于数据中心,在那里可能有成百上千主机机器正在运行。为了管理计算资源,许多数据中心运行作为虚拟机的服务器计算机,因为虚拟机可以被从一个主机设备移动到另一个。
[0003] 许多数据中心在循环基础上运行,其中在一天的某些时期或者一周的某些日子中,需求可能是较高的。在低需求时间期间,虚拟机可以被合并到某些主机机器,使得其他主机机器可以关闭或以降低功率模式运行。
[0004] 在许多情况中,数据中心可以消耗大量的电力。当在降低的计算机负载的周期期间关闭硬件时,数据中心可以显著降低其电力花费。
[0005] 将虚拟机放置在主机设备上的过程可能是复杂的包装问题。
[0006] 概述
[0007] 虚拟机管理系统可以执行将虚拟机从较低效的主机移动到较高效的主机的三阶段迁移分析。在许多情况中,迁移可以允许低效的主机设备断电并可降低数据中心或其他用户的总体能量花费。迁移分析可以包含在合并虚拟机和释放主机设备时执行第一合并、负载平衡和第二合并。迁移分析可以也包含在扩展容量时执行第一负载平衡、合并和第二负载平衡。
[0008] 提供本概述以便以简化形式介绍下面在详细描述中进一步描述的概念的选集。本概述不旨在标识所要求保护的本主题的关键特征或必要特征,也不预期被用来限制所要求保护的本主题的范围。
[0009] 附图简述
[0010] 附图中,
[0011] 图1是示出用于管理虚拟机的系统的实施方式的图示。
[0012] 图2是示出用于执行合并的方法的实施方式的流程图。
[0013] 图3是示出用于执行负载平衡的方法的实施方式的流程图。
[0014] 图4是示出用于收集数据和确定效率的方法的实施方式的流程图。
[0015] 图5是示出用于合并的方法的实施方式的流程图。
[0016] 图6是示出用于负载平衡的方法的实施方式的流程图。
[0017] 详细描述
[0018] 效率驱动的优化过程可以执行三阶段迁移分析,用于扩展或缩减数据中心或用于虚拟机的主机设备其他组中的容量。在许多情况中,用于合并或负载平衡虚拟机的三阶段迁移分析可以引起将虚拟机从低效的主机设备移动到较高效的主机设备,且可以包括开启较高效的主机设备和关闭低效的设备。
[0019] 该三阶段迁移分析可以包括收集数据,可从中确定主机设备的效率分数。在第一合并过程中,可以使用效率分数可以来标识断电的候选机,且可以尝试将该候选机上的虚拟机移动到其他主机。在第一合并过程期间,可以使用高的阀值来放置虚拟机。
[0020] 在合并过程的第二阶段,可以对过载的那些主机设备执行负载平衡操作。在一些情况中,负载平衡操作可以使得一个或多个主机供电以接受虚拟机的一些。可以从较高效的主机中选择新供电的主机。
[0021] 在合并过程的第三阶段中,可以执行第二合并操作以标识任何潜在地未充分利用的主机设备。在第二合并操作中,可以使用较低的阀值来放置虚拟机以使得主机设备不过载。
[0022] 负载平衡操作可以以与合并操作相似的方式来操作。在负载平衡操作的第一步骤中,使用低的阀值来标识可在其上放置虚拟机的主机设备。可以从最高效的主机设备中选择任何新的主机设备。第二步骤可以是合并步骤,且第三步骤可以是具有更高的阀值的第二负载平衡操作。
[0023] 优化过程可以考虑主机设备上的虚拟机的当前状态,且可以最小化虚拟机移动或颠簸。进一步,优化过程可以帮助将虚拟机从低效的主机设备移动到较高效的主机设备。
[0024] 贯穿本说明书和权利要求,术语“主机”被用来描述可以在其上执行虚拟机的物理硬件平台。在一些实施方式中,轻量操作系统可以运行在主机上,且可以支持一个、两个或更多个虚拟机。在一些实施方式中,可以在一个物理主机设备执行数十个或甚至数百个虚拟机。
[0025] 术语“主机”可以是能够在其上执行虚拟机的任何类型的硬件平台。在一些情况中,硬件平台可以是服务器计算机,其带有专门设计为运行虚拟机的专用处理器、存储器、盘存储,和网络连接。在其他情况中,主机可以是常规的台式或服务器计算机,或者可以是诸如移动电话、膝上型计算机,或其他设备等的便携式设备。出于本说明书的目的,许多示例可以涉及数据中心应用程序,然而,本领域中的技术人员将明白,许多其他实现可以是可能的。
[0026] 贯穿本说明书,贯穿附图的描述,相同的附图标记表示相同的元素。
[0027] 在元素被称为“被连接”或“被耦合”时,元素可以被直接地连接或耦合在一起,或也可以存在一个或多个中介元素。相反,在元素被称为“被直接地连接”或“被直接地耦合”时,不存在中介元素。
[0028] 本主题可以被具体化为设备、系统、方法和/或计算机程序产品。因此,可以以硬件和/或软件(包括固件、驻留的软件、伪代码、状态机、门阵列等等)具体化本主题中的一些或全部。此外,本主题可以采取计算机可用的或计算机可读的存储介质上的计算机程序产品的形式,在该介质中具体化有计算机可用的或计算机可读的程序代码,以便由使用指令执行系统使用或者与指令执行系统结合使用。在这一文档的上下文中,计算机可用的或计算机可读的介质可以是可以包含、存储、通信、传播,或传输程序以便由指令执行系统、装置,或设备使用,或与指令执行系统、装置,或设备结合使用的任何介质。
[0029] 计算机可用的或计算机可读的介质可以是例如但不限于电、磁、光学、电磁、红外,或半导体系统、装置、设备,或传播介质。作为示例而非限制,计算机可读的介质可以包括计算机存储介质和通信介质。
[0030] 计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等的信息的任何方法或技术实现的易失性介质和非易失性介质、可移动介质和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪速存储器或其他存储器技术、CD-ROM、数字多用盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或可以被用来存储所期望的信息且可由指令执行系统访问的任何其他介质。注意,计算机可用的或计算机可读的介质可以是可在其上打印程序的纸张或另一合适的介质,这是因为程序可以举例来说经由纸张或其他介质的光学扫描而被电子捕捉,然后被编译、被解释或者以另外方式以合适的方式被处理(如果必要的话),且然后被存储在计算机存储器中。
[0031] 通信介质通常在诸如载波或其他传输介质等的经调制的数据中具体化计算机可读指令、数据结构、程序模块或其他数据,且包括任何信息传输介质。术语“经调制的数据信号”意味着以在信号中编码信息的方式来设置或改变其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接等的有线介质和诸如声学、RF、红外和其他无线介质等的无线介质。上面的任何的组合也应被包括在计算机可读的介质的范围内。
[0032] 当计算机可执行指令的一般上下文中具体化本主题时,实施方式可以包括由一个或多个系统、计算机或其他设备执行的程序模块。一般地,程序模块包括执行特定的任务或实现特定的抽象数据类型的例程、程序、对象、组件、资源、数据结构等等。通常,在各种实施方式中,可以按照期望组合或分布程序模块的功能。
[0033] 图1是实施方式100的示意图,示出用于管理虚拟机的系统。实施方式100是可以管理若干主机设备上的虚拟机的系统的简化示例。
[0034] 图1的示意图解示出系统的功能组件。在一些情况中,组件可以是硬件组件、软件组件,或硬件和软件的组合。组件中的一些可以是应用程序级软件,而其他组件可以是操作系统级组件。在一些情况中,一个组件到另一个的连接可以是其中两个或更多组件在单个硬件平台上运行的封闭连接。在其他情况中,可以在网络连接上跨越长的距离而进行连接。每一实施方式可以使用不同的硬件、软件和互连体系结构以便取得所描述的功能。
[0035] 实施方式100是可以包含许多主机设备的数据中心的示例,每一主机设备可以执行多个虚拟机。虚拟机可以是设备的软件版本。在大的数据中心环境中,服务器计算机可以被实现为虚拟机。当需求萎缩时,虚拟机可以被合并到一些主机设备上,以使得可以将其他主机断电或以降低能量状态运行。当需求上升时,可以使得主机上线,且虚拟机可以分布在可用的主机当中。将虚拟机分布到可用的主机的过程可以被称为负载平衡。
[0036] 当数据中心的总体负载减少时,一些主机设备可能变得未充分利用。通过使得将主机上的虚拟机移动到其他主机来合并未充分利用的主机,然后,可以给主机断电。通常,合并动作可以在若干主机设备变得不完全利用时发生。
[0037] 在选择主机以合并时,可以选择低效的主机,而不考虑主机的利用。一旦所选择的主机上的虚拟机被从主机移除,则可以将主机断电或以降低功率模式操作。
[0038] 当数据中心的总体负载增加时,一些主机可能变得过载。可以通过将虚拟机从过载的主机移动到不过载的其他正在运行的主机来对过载的主机进行负载平衡。在一些情况中,没有其他正在运行的主机能够接受虚拟机而不使其本身过载。在这样的情况中,可以将新的主机标识为要开启,且可以将虚拟机移动到该新的主机。
[0039] 在负载平衡期间,在选择主机以开启时,可以选择高效的主机。
[0040] 可以通过主机所供应的资源除以所消耗的功率来确定主机的效率。在许多实施方式中,资源可以是CPU容量,尽管其他实施方式可以使用不同的资源。
[0041] 在许多情况中,主机可以具有不同的性能和不同的容量。主机上可用的资源可以被分类成可消耗的资源和不可消耗的资源。
[0042] 可消耗的资源是由虚拟机消耗的但不能与其他虚拟机或主机操作系统共享的资源。可消耗的资源的示例可以是随机存取存储器(RAM)。每一虚拟机可以具有被指派给该虚拟机的专用的量的RAM,且该RAM不可以由其他虚拟机使用。另一示例可以是盘空间或其他存储。
[0043] 在一些情况中,可消耗的资源可以被看作是各种组件资源的总和。例如,硬盘资源可以看作是盘读速度、盘写速度,和容量的总和。
[0044] 不可消耗的资源可以是可由虚拟机或主机操作系统共享的资源。一个示例可以是在主机设备上的许多可用的处理器。一些虚拟机可以使用两个、四个或更多个处理器或核心来运行。即使虚拟机使用四个处理器,其他虚拟机或主机操作系统可以也使用相同的处理器。
[0045] 二进制资源可以是不可消耗的资源的子集。二进制资源可以是出现在主机上或不出现在主机上的资源。例如,主机可以具有或可以不具有图形处理器或可由特定的虚拟机使用的其他功能部件。
[0046] 在本说明书中,各种资源可以被讨论为维度,以在将虚拟机放置到主机上时考虑。术语“维度”打算包括资源或在评估主机的效率时可以考虑的任何其他因素。在一些情况中,维度可以不对应于主机上可用的资源或由虚拟机使用的资源。
[0047] 在数据中心104中,机架108可以包含多个主机设备。典型的数据中心可以具有带有刀片外壳110的机架,刀片外壳110可以包括多个刀片服务器112。一些机架可以包括单机服务器114、存储设备116,和电源118。在许多情况中,机架或机架组可以具有冷却系统、功率调节单元、不间断电源,和其他组件。在大的数据中心中,可以存在数百个甚至数千个机架,其中的许多可以具有不同的配置。
[0048] 许多资源可以跨越若干主机设备而共享。在资源被共享时,可以在多个主机上分配资源的‘花费’或功率使用,且主机可以是非常高效的。在非常少的主机共享资源时,主机可以变得低效得多。在其他主机被断电、留下少量正在运行的主机消耗以另外方式共享的资源时,主机可以变得低效。
[0049] 将数据中心用作示例,装备的机架可以具有向整个机架提供诸如电源、冷却或其他服务等的服务的设备。即使一个服务器是在机架中运行,也可以开启基于机架的服务。在这样的情况中,单个服务器或主机设备可以是非常低效的,这是因为不能跨越多个主机设备共享基于机架的电源、机架冷却,或其他服务的功率消耗。
[0050] 在另一示例中,刀片外壳可以将功率、网络接入、冷却或其他服务提供给多个刀片。即使是支持在外壳中操作的单个刀片服务器操作,刀片外壳也可以是全面运行的。在这样的情况中,刀片外壳的功率消耗可以归因于正在运行的主机设备,使得主机低效。
[0051] 在合并数据中心内的虚拟机时,可以标识低效的主机,以便通过将虚拟机移动到其他设备来关闭。在负载平衡时,可以考虑高效的主机,以使其上线并接受和接收虚拟机。
[0052] 可以通过将主机提供的资源除以主机消耗的功率来确定主机的效率。由主机消耗的功率可以通过由共享设备消耗的功率除以正在使用共享设备的主机的数量来近似。在刀片外壳的上面的示例中,由刀片外壳消耗的功率可以在该外壳中运行的刀片服务器当中分配。如果刀片外壳具有十个服务器且所有十个都正在运行,则由刀片外壳消耗的功率可以除以十且归因于每一主机。如果相同的刀片外壳仅具有一个正在运行的服务器,由刀片外壳消耗的全部功率可以归因于该服务器。
[0053] 在许多实施方式中,主机的效率可以通过按主机所消耗的功率测量资源来表示。典型的实施方式可以是CPU容量除以所消耗的功率。主机所消耗的功率可以包括由诸如共享电源、共享冷却资源,或其他共享设备等的共享设备归因于主机的任何消耗。
[0054] 在其他实施方式中,主机的效率可以通过测量诸盘容量、网络容量,或其他资源的其他资源并除以功率消耗来表示。一些实施方式可以分析资源以标识稀缺资源,以确定效率。在这样的情况中,资源可以从一种分析改变成另一种。
[0055] 在一些实施方式中,可以仿真和分析许多放置场景以便标识优选的场景。在这样的实施方式中,可以仿真数千个或数百万个场景,且可以将分数指派给各场景。分数可以被用来选择可以实现的优选场景。
[0056] 实施方式100是用于管理数据中心环境中的虚拟机的系统的示例。虚拟机管理器102可以是组织数据中心104的设备,其中多个虚拟机106可以由各种主机设备执行。
[0057] 虚拟机管理器102可以是在硬件平台上运行的应用程序。虚拟机管理器102可以由在硬件组件122上运行的软件组件120组成。硬件组件122可以包括处理器、随机存取存储器126、盘或其他存储128,和网络连接130。在一些实施方式中,可以虚拟化硬件组件122中的一些或全部。
[0058] 虚拟机管理器102可以具有软件组件120,软件组件120包括数据收集器132、分析引擎134、放置服务136,和警报系统。数据收集器132可以从主机设备和虚拟机收集各种维度的状态。分析引擎134可以在主机上确定一组虚拟机的放置,且放置服务136可以将虚拟机移动到所指派的主机。警报系统138可以标识可能执行合并或负载平衡操作时的条件。
[0059] 数据收集器132可以收集关于主机所供应并由虚拟机所需要的维度或资源的数据。该供应和需求信息可以被用来确定各种维度的稀缺性,这又可以由放置管理器134用来确定虚拟机在主机上的各种放置。
[0060] 分析引擎134可以评估许多不同的放置配置。每一放置配置可以是在专用主机设备上执行的一组专用虚拟机。在一些实施方式中,可以评估数千、数百万,或更多种放置配置。对于每一放置配置,可以计算分数以得到优化参数。例如,每一配置可以具有功率消耗分数,从中可以选择经优化的配置。
[0061] 图2是示出用于执行虚拟机的合并的方法的实施方式200的流程图。实施方式200是可由实施方式100中示出的虚拟机管理器102所执行的方法的简化示例。
[0062] 其他实施方式可以使用不同的定序、附加的或较少的步骤以及不同的命名法或术语学来完成相似的功能。在一些实施方式中,可以与其他操作并行(无论是以同步方式还是异步方式)执行各种操作或操作集。选择在这里选择的步骤,以便以简化形式阐释操作的一些原理。
[0063] 实施方式200阐释一种用于执行合并例程的方法。在一个或多个主机设备变得未充分利用时可以触发合并,且该过程可以将虚拟机从主机设备移动到其他设备。
[0064] 在许多情况中,合并过程可以允许一个或多个主机设备断电。通常,合并可以在数据中心的总体负载减少时发生,且在许多情况下,若干主机设备可以变得未充分利用。未充分利用可以当主机上正在运行的一个或多个虚拟机消耗更少的主机资源、使得大多数主机资源未被使用时发生。
[0065] 合并过程可以使用松散约束来执行第一合并操作,然后,使用中度约束来执行负载平衡操作,且然后,使用较紧的约束来执行第二合并操作。
[0066] 约束可以是阀值或指示主机的容量的其他参数。例如,数据中心通常可以以80%容量操作各主机。通过选择80%容量因子,主机可以响应于负载波动而不会超出容量。
[0067] 不同的数据中心可以基于许多不同的因素建立不同的约束。在其中数据中心负载相当恒定且可预测的情况中,典型的容量因子可以较高,例如85%、90%,或甚至更高。在一些情况中,数据中心负载可能是不稳定的,导致管理员使用较低的容量因子,例如75%、70%、60%,或甚至更低。
[0068] 在一些实施方式中,容量因子可以由于日时或其他因素而改变。例如,明白在工作日时间期间有高负载的数据中心可以以较低的容量因子运行,以使得数据中心保持响应。在晚上以及在数据中心上的负载更加可预测和稳定时,相同的数据中心可以以较高的容量因子运行,以使得可以将更多主机设备断电。
[0069] 在实施方式200中,可以以松散约束执行第一合并。在这样的操作中,可以将虚拟机从低效的设备移动到较高效的设备,使得高效的设备可能过载。负载平衡操作可以将虚拟机从过载设备移动到其他设备,或者可以包括开启可以接收虚拟机的一个或多个新的设备。在执行负载平衡操作时,可以从较高效的设备中选择开启的设备。
[0070] 可以使用较紧的约束来执行第二合并操作,这可以引起一些主机设备没有负载和断电,但是可以选择约束以使得在其他设备上不发生过载条件。
[0071] 实施方式200的三阶段方法可以使得低效的主机设备断电和较高效的主机开启。在典型的过程中,可以将若干低效的主机设备断电,且少得多的数量的较高效的主机设备可以供电。
[0072] 实施方式200通过标识合并的条件在框202开始。不同的实施方式可以具有用于标识合并的条件的不同的机制。在一些实施方式中,监视系统可以从降低到某一容量阀值之下的主机设备接收警报。例如,降低到其资源利用的20%之下的主机设备可以向诸如实施方式100的警报系统138等的集中式监视系统发送警报。
[0073] 不同的实施方式可以具有可以标识未充分利用的主机的利用下限。在上面的示例中,使用了20%利用因子。一些实施方式可以将50%、40%、30%、25%、15%、10%或其他因子用作利用下限。如以上对于利用上限所描述的,利用下限可以在一天的过程、天或周、或者其他季节或周期期间而改变。
[0074] 在一些实施方式中,变得未充分利用的单个主机设备可以触发器实施方式200的合并操作。在其他实施方式中,来自特定数量的设备的警报可以被用来触发合并操作。
[0075] 在一些实施方式中,合并的条件可以在数据中心的总体负载显著地少于数据中心的当前容量时发生。除了个体主机设备的数据之外或代替个体主机设备的数据,这样的实施方式可以基于数据中心范围的容量和负载参数执行合并。
[0076] 在框204,可以收集主机和虚拟机数据。收集这样的数据的方法的示例被实施方式400示出。为每一主机和虚拟机收集的数据可以是可以被用来标识资源使用以及功率使用的数据。在一些实施方式中,可以标识稀缺资源并将其用来计算主机设备的效率。
[0077] 在框206,可以确定主机设备的功率效率。可以通过资源除以主机所消耗的功率来确定主机设备的效率。在将CPU用作资源的简单示例中,主机的效率可以以CPU容量除以所消耗的瓦特来度量。
[0078] 在框208,第一合并可以使用松散约束来执行。在本说明书中稍后示出的实施方式500中可以示出合并方法的示例。合并方法可以标识低效的主机设备并尝试将虚拟机从低效的主机设备移动到其他较高效的主机设备。
[0079] 可以以松散约束执行框208的第一合并。松散约束可以是其中主机可以负载超出它们的预期容量的虚拟机的约束。例如,在将虚拟机包装到主机上时,接受者主机可以包装超过所期望的80%容量的虚拟机。在一些情况中,松散约束可以允许接受者主机超过90%、100%、110%或甚至更高的容量。
[0080] 框208的合并可以作为仿真合并来执行而无需移动任何虚拟机。贯穿实施方式200,可以执行仿真动作以生成虚拟机到主机设备的映射。在确定该映射之后,可以根据该映射移动虚拟机。
[0081] 在框208中使用的约束可以是两种类型的约束。第一约束可以是接收虚拟机的主机的容量上限,如上所述。第二约束可以是考虑要断电的那些主机设备的容量下限。松散约束可以考虑将比紧约束更大的一组主机设备断电。
[0082] 例如,松散约束可以考虑将具有30%或更低的容量的主机断电。紧约束可以仅考虑断电具有10%或更低的容量的主机,这是小得多的一组主机设备。
[0083] 在框208的合并之后,可以创建第一中间映射。可以在框210中使用第一映射来执行使用中度约束的仿真负载平衡。在本说明书中稍后呈现的实施方式600中可以示出仿真负载平衡过程的示例。
[0084] 在仿真负载平衡中,可以检查超过容量限制的主机以将一些虚拟机从该主机移动到其他主机。在其中没有主机可以接受虚拟机的情况中,新的主机可以被供电并可以接收虚拟机。
[0085] 在负载平衡操作期间,可以从较高效的主机设备中选择新的主机。在许多情况中,可以基于效率创建主机设备的经排序的列表,且可以从该列表的顶部选择最高效的主机。
[0086] 在许多实施方式中,框210的中度约束可以是数据中心的典型的操作约束或目标约束。在一些实施方式中,框210的中度约束可以比数据中心的目标约束更紧或更松。
[0087] 框210的负载平衡可以产生虚拟机到主机的第二映射。在框212中可以使用第二映射来执行使用较紧的约束和最终的映射的第二合并。
[0088] 框212的第二合并可以是与框208相似的操作,但是以不同的一组约束来执行。在框212,可以考虑较紧的一组约束。在框212,可以考虑将具有更加受限的容量下限的设备断电,且可以将虚拟机移动到更加受限的容量上限的主机。
[0089] 在一些实施方式中,可以使用与在框210中用于负载平衡相同的上限约束来执行框212的第二合并,但是具有较紧的下限约束。
[0090] 在框212中执行第二合并之后,可以生成映射。在框214中可以使用映射来将虚拟机中的一些实际移动到新的位置并关闭一些主机设备。
[0091] 在一些实施方式中,可以多次执行框204到框212的分析以便生成许多不同的映射。一些实施方式可以执行生成数千个或更多的映射的仿真,其每一个可被评分。在框214中可以选择和实现映射中的一个。
[0092] 实施方式200的过程可以产生最大化主机的效率的合并映射。可以将低效率的主机断电,且如果新的主机开启,则新的主机可以是较高效的主机。
[0093] 实施方式200的过程允许第一合并以松散约束发生。第一合并可以允许一些主机变得超出容量,但是可以最大化可以断电的低效的主机的数量。负载平衡操作可以将一些负载从超出容量的主机设备传递到其他主机,包括可被开启以接收该容量的一个或多个高效的主机。如果一个或多个主机负载非常轻但不会使得其他主机过载,则第二合并操作可以进一步合并。
[0094] 框208和框212的合并操作可以尝试基于主机的效率来卸载主机设备并将主机设备断电,主机的效率可以不对应于主机的当前容量。在一些情况中,这样的主机可以正在以容量运行或高于容量运行。合并操作可以引起低效的主机断电同时将虚拟机移动到其他较高效的主机。最终结果可以是相当可观的功率节约。
[0095] 实施方式200的合并过程可以使得一些主机开启。在这样的情况中,所开启的主机可以比所断电的主机更为高效。在典型的情况中,开启的主机可以少于关闭的主机。
[0096] 图3是示出用于执行虚拟机的负载平衡的方法的实施方式300的流程图。实施方式300是可以由实施方式100中所示出的虚拟机管理器102执行的方法的简化示例。
[0097] 其他实施方式可以使用不同的定序、附加的或较少的步骤以及不同的命名法或术语学来完成相似的功能。在一些实施方式中,可以与其他操作并行(无论是以同步方式还是异步方式)执行各种操作或操作集。选择在这里选择的步骤,以便以简化形式阐释操作的一些原理。
[0098] 实施方式300在概念上类似于实施方式200的过程,但是执行负载平衡操作而不是合并操作。实施方式300以紧约束执行第一负载平衡过程、以中度约束执行合并操作,并且以松散约束执行第二负载平衡操作。
[0099] 实施方式300尝试在第一负载平衡操作中通过使用紧约束来分布大量的虚拟机。这一操作可以将虚拟机分布到大量的主机设备,且可以引起一个或多个高效的主机设备开启。随后的合并操作可以尝试关闭较低效的设备,且第二负载平衡操作可以清除任何过载设备。
[0100] 实施方式300的最终结果是,可以执行负载平衡操作,而帮助高效的主机设备胜过较低效的主机设备。在一些操作中,在合并操作期间可以关闭当前正在运行的低效的主机,且在第一负载平衡操作期间开启的高效的主机可以保持运行。在这样的情况中,负载平衡操作可以使得一些主机设备断电。
[0101] 合并操作可以尝试基于主机的效率卸载主机设备,主机的效率可以不对应于主机的当前容量。在一些情况中,在一些情况中,这样的主机可以正在以容量运行或高于容量运行。合并操作可以引起低效的主机断电同时将虚拟机移动到其他较高效的主机。
[0102] 负载平衡操作可以尝试跨越已经供电的主机设备移动虚拟机。然而,如果当前已供电的主机中没有容量,则新的主机可以供电并上线。可以从较高效的主机中选择要供电的任何新的主机。
[0103] 实施方式300通过标识负载平衡的条件在框302开始。不同的实施方式可以具有用于标识负载平衡的条件的不同的机制。在一些实施方式中,监视系统可以从超过某一容量阀值的主机设备接收警报。例如,超过其资源利用的80%的主机设备可以向诸如实施方式100的警报系统138等的集中式监视系统发送警报。
[0104] 在一些实施方式中,变得过度利用的单个主机设备可以触发实施方式300的负载平衡操作。在其他实施方式中,来自特定数量的设备的警报可以被用来触发负载平衡操作。
[0105] 在一些实施方式中,负载平衡的条件可以在数据中心的总体负载显著地大于所期望的数据中心容量时发生。除了个体主机设备的数据之外或代替个体主机设备的数据,这样的实施方式可以基于数据中心范围的容量和负载参数执行负载平衡。
[0106] 在框304,可以收集主机和虚拟机数据。收集这样的数据的方法的示例在实施方式400中示出。为每一主机和虚拟机收集的数据可以是可以被用来标识资源使用以及功率使用的数据。在一些实施方式中,可以标识稀缺资源并将其用来计算主机设备的效率。
[0107] 在框306,可以确定主机设备的功率效率。可以通过资源除以主机所消耗的功率来确定主机设备的效率。在将CPU用作资源的简单示例中,主机的效率可以以CPU容量除以所消耗的瓦特来度量。
[0108] 在框308,第一负载平衡操作可以使用紧约束来执行。在本说明书中稍后示出实施方式600中可以示出负载平衡方法的示例。负载平衡方法可以将虚拟机从负载重的设备推送到负载轻的设备。在一些情况中,可以向新的主机供电以便接受虚拟机中的一些。在这样的情况中,可以从高效的主机的经排序的列表选择新的主机。
[0109] 可以以紧约束来执行的框308的第一负载平衡。紧约束可以是其中主机被卸载到低于它们的期望容量限制的约束。例如,在从主机移除虚拟机时,主机可以卸载,直到容量是少于期望容量的某一容量。例如,期望容量可以是80%,但是框308的紧约束可以被设置为使得主机设备被卸载到少于60%容量。
[0110] 框308的负载平衡可以作为仿真负载平衡来执行而无需实际移动虚拟机。贯穿实施方式300,可以执行仿真动作以生成虚拟机到主机设备的映射。在确定该映射之后,可以根据映射移动虚拟机。
[0111] 在框308的负载平衡之后,可以创建第一中间映射。可以在框310使用第一映射来执行使用中度约束的仿真合并。在本说明书中稍后呈现的实施方式600中可以示出仿真合并过程的示例。
[0112] 在框310的仿真合并中,可以检查降低到容量限制之下的主机以便将一些虚拟机从该主机移动到其他主机。在其中没有主机可以被合并和断电时,合并操作可以停止。
[0113] 在框310中使用的约束可以是两种类型的约束。第一约束可以是接收虚拟机的主机的容量上限,如上所述。第二约束可以是考虑要断电的那些主机设备的容量下限。松散约束可以考虑将比紧约束更大的一组主机设备断电。
[0114] 例如,松散约束可以考虑断电具有30%或更低的容量的主机。紧约束可以仅考虑断电具有10%或更低的容量的主机,这是小得多的一组主机设备。在负载平衡操作期间,可以从较高效的主机设备中选择新的主机。在许多情况中,可以基于效率创建主机设备的经排序的列表,且可以从该列表的顶部选择最高效的主机。
[0115] 在许多实施方式中,框310的中度约束可以是数据中心的典型的操作约束或目标约束。在一些实施方式中,框310的中度约束可以比数据中心的目标约束更紧或更松。
[0116] 框310的合并可以产生虚拟机到主机的第二映射。在框312中可以使用第二映射来执行使用松散约束和最终的映射的第二负载平衡。
[0117] 框312的第二负载平衡可以是与框308相似的操作,但是以一组不同的约束来执行。在框312,可以考虑一组松散约束。在框312,对于具有比通常所期望的更高的使用的那些设备,可以发生负载平衡。在许多情况中,可以在数据中心正在经历需求上升时执行实施方式300的负载平衡操作。因而,可以执行框312的负载平衡,以使得以稍微少于目标利用来利用每一主机,这是因为可以预期数据中心上的负载会上升。
[0118] 在一些实施方式中,可以使用与在框310中所使用的相同的上限约束来执行框312的第二负载平衡。
[0119] 在框312中执行第二合并之后,可以生成映射。在框314中可以使用映射来将虚拟机中的一些实际移动到新的位置并关闭一些主机设备。
[0120] 在一些实施方式中,可以多次执行框304到框312的分析以生成许多不同的映射。一些实施方式可以执行生成数千个或更多映射的仿真,其每一个可被评分。在框314中可以选择和实现映射中的一个。
[0121] 实施方式300的过程可以产生最大化主机的效率的合并映射。可以将低效率的主机断电,且如果新的主机开启,则新的主机可以是较高效的主机。
[0122] 实施方式300的过程允许第一负载平衡以紧约束发生。第一负载平衡可以将虚拟机强加到可以供电的新的主机。合并操作可以尝试卸载低效的主机。第二负载平衡操作可以跨越剩余主机而分布虚拟机。
[0123] 实施方式300的负载平衡过程可以使得一些主机断电。在这样的情况中,开启的主机可以比断电的主机更为高效。在典型的情况中,开启的主机多于关闭的主机。
[0124] 图4是示出用于收集供应和需求数据的方法的实施方式400的流程图。实施方式400是可由实施方式100中所示出的数据收集器132和实施方式200中的框204以及实施方式300中的框304执行的方法的简化示例。
[0125] 其他实施方式可以使用不同的定序、附加的或较少的步骤以及不同的命名法或术语学来完成相似的功能。在一些实施方式中,可以与其他操作并行(无论是以同步方式还是异步方式)执行各种操作或操作集。选择在这里选择的步骤,以便以简化形式阐释操作的一些原理。
[0126] 实施方式400是可以收集供应和需求数据的一种方法。供应数据可以与主机设备上出现的资源或其他维度相关,而需求数据可以与虚拟机所使用的匹配资源或维度相关。在收集数据之后,对于每一主机设备,确定稀缺性,且确定稀缺性分数。也可以确定每一主机的效率。
[0127] 可以以不同的初始状态在一组主机设备上执行实施方式400。在一个场景中,仿佛当前没有虚拟机正在运行那样分析主机设备。在这样的场景中,可以标识虚拟机在整个数据中心上的经优化的放置。在另一场景中,可以以一些其他组的初始条件来执行合并或负载平衡。
[0128] 在框402,确定供分析的初始状态。
[0129] 在框404到框408中,对每一虚拟机的每一维度确定需求。在框404,分析每一虚拟机。在框406,对于每一维度,在框408,确定该维度的需求。
[0130] 在各实施方式之间,所分析的维度可以改变。在许多情况中,维度可以包括所消耗的资源、未被消耗的资源和二进制资源以及其他维度。
[0131] 在框410,对于每一主机设备,在框412分析每一维度。在框414,确定该维度的供应。
[0132] 在框416,可以确定功率消耗。框416的功率消耗可以包括主机本身以及该主机可以与其他主机共享的共享设备所消耗的功率。例如,电源、冷却系统和其他设备可以在各主机之间共享。在其中很少主机正在共享设备的情况中,所共享的设备的功率消耗可以仅归因于那些少数主机。在许多情况中,在共享设备的其他主机不供电时,主机的效率可以显著地降低。
[0133] 在简单的示例中,服务器的机架可以包含五十个服务器,且可以具有在所有服务器都运行时在五十个服务器当中共享的冷却系统和电源。在服务器中的四十九个关闭且一个服务器操作时,单个正在运行的服务器可以引起机架冷却和电源的所有功率。与在所有五十个服务器都在操作且共享冷却系统和电源的功率花费时的情况相比较,这样的服务器是非常低效的。
[0134] 在框416,对于每一维度,在框418确定稀缺性。
[0135] 可以通过下列公式确定稀缺性:
[0136]
[0137] 对于每一维度,可以通过所有虚拟机需求的总和除以在所有主机供应的总和以及所有虚拟机需求的总和之间的差来计算稀缺性。稀缺性是每一维度的无量纲数。高的稀缺性值指示该维度是稀缺的,而低的稀缺性值指示该维度是充足的。
[0138] 在框420,分析每一主机。在框422,确定主机的效率。可以通过所选择的资源除以归因于主机的所消耗的功率来计算效率。在一些实施方式中,稀缺资源可以被用作所选择的资源。稀缺资源可以是具有以上等式中所确定的最高的稀缺性因子的资源。
[0139] 在一些实施方式中,可以使用诸如CPU容量、盘容量或一些其他资源等的预定义资源来确定框422的效率。在其中使用稀缺资源的实施方式中,资源可以从一种分析改变成另一种分析。
[0140] 图5是示出用于合并的方法的实施方式500的流程图。实施方式500是可以由实施方式200中的框208和框212以及实施方式300中的框310的合并操作执行的方法的简化示例。
[0141] 其他实施方式可以使用不同的定序、附加的或较少的步骤以及不同的命名法或术语学来完成相似的功能。在一些实施方式中,可以与其他操作并行(无论是以同步方式还是异步方式)执行各种操作或操作集。选择在这里选择的步骤,以便以简化形式阐释操作的一些原理。
[0142] 实施方式500的操作可以将所有的虚拟机从一个主机放置到其他主机。在传递了所有的虚拟机时,主机可以关闭。实施方式500可以对许多主机执行该操作,直到满足接受者主机的容量,在该时刻,该过程可以结束。
[0143] 实施方式500尝试通过以效率次序处理主机来将主机断电,首先从最低效率的主机开始。在一些情况中,最低效率的主机可以是等于主机的容量限制或超过主机的容量限制的主机。
[0144] 在框502,可以读取开始映射。在框504,可以以递增效率来排序主机,且在框506,可以选择主机。在框506所选择的主机可以是基于在框504的列表的最低效的主机。
[0145] 在框508,对于主机上的每一虚拟机,在框510,在不违反接受者主机的上限约束的前提下,可以在其他主机上进行放置虚拟机的尝试。例如,在上限约束是80%容量时,在增加虚拟机不引起接受者主机超过80%容量时,可以将虚拟机放置在主机上。
[0146] 可以使用包括最坏适应递减算法在内的任何类型的包装算法来执行放置虚拟机的过程510。
[0147] 在框512,如果放置是成功的,则在框514,可以将该放置添加到映射,且在框508,可以分析下一虚拟机。
[0148] 在框512,如果放置是不成功的,则在框516,可以退出循环,这是因为不能合并主机。在框518,可以从映射移除对当前的主机的改变,且在框524,该过程可以结束。
[0149] 在框508,如果所有的虚拟机都被成功地放置,则在框520,在映射中可以将主机标记为关闭。在框522,如果要分析更多主机,则该过程可以返回到框506以便选择下一个低效的主机。否则,在框524,该过程可以结束。
[0150] 图6是示出用于负载平衡的方法的实施方式600的流程图。实施方式600是可以由实施方式200的框210以及实施方式300的框308和框312执行的方法的简化示例。
[0151] 其他实施方式可以使用不同的定序、附加的或较少的步骤以及不同的命名法或术语学来完成相似的功能。在一些实施方式中,可以与其他操作并行(无论是以同步方式还是异步方式)执行各种操作或操作集。选择在这里选择的步骤,以便以简化形式阐释操作的一些原理。
[0152] 实施方式600尝试将虚拟机从过载主机放置到未过载主机。如果不存在未过载主机,则新的主机可以开启且可以接收虚拟机。可以从可用的最高效的主机选择新的主机。
[0153] 在框602,可以读取开始映射。
[0154] 在框604,可以以递减效率来排序已关闭的主机。可以使用在框504中的已关闭的主机的经排序的列表来选择可以开启的新的主机。在选择了新的主机时,可以选择最高效的主机。
[0155] 在框606,可以按照为该操作定义的容量上限来标识过载主机。例如,如果容量上限是60%,则可以选择具有60%利用的那些主机。
[0156] 在框608,可以分析过载主机中的每一个。
[0157] 在框610,在不违反其他主机的上限约束的前提下,可以进行放置来自过载主机的虚拟机的尝试。可以对任何其他主机进行放置,以使得接收主机不违反容量上限。
[0158] 在框612,如果放置是成功的,则在框614,可以将该放置添加到映射。在框615,如果当前的主机仍然过载,则该过程可以返回到框610以便尝试放置另一虚拟机。在框615,如果当前的主机不再过载,则该过程可以返回到框609以便处理另一过载主机。
[0159] 在框612,如果放置是不成功的,则在框616可以标识要开启的新的主机。可以从在框604中生成的列表将新的主机选择为当前不开启的最高效的主机。
[0160] 在框618,可以将虚拟机放置在新的主机上,且在框620,可以将新的主机添加到映射。在框614,可以将虚拟机放置添加到映射,且该过程可以继续。
[0161] 在框608,在已经处理所有的过载主机时,在框622,该过程可以结束。
[0162] 已经出于阐释和描述的目的呈现了本主题的前述描述。该前述描述不旨在是详尽的或将本主题限制所公开的确切形式,并且,根据上面的教导,其他修改和变更也是可能的。选择和描述实施方式是为了最好地解释本发明的原理及其实际应用,以便由此允许本领域中的其他技术人员在各种实施方式中最好地利用本发明和适合所预期的特定用途的各种修改。预期所附权利要求应被解释为包括除了受先前技术所限制之外的其他替代的实施方式。