虚拟机间通信的方法

文档序号:7736918阅读:403来源:国知局
专利名称:虚拟机间通信的方法
技术领域
本发明涉及虚拟机管理,更具体地说,本发明涉及管理虚拟机环境内的系统资源。
背景技术
在云计算环境中,在计算云的某处为用户分配虚拟机。虚拟机提供了软件操作系统并且能够访问诸如输入/输出带宽、处理能力和存储器容量之类的物理资源以支持用户的应用。供应软件在云中的可用计算机节点当中管理和分配虚拟机。因为每个虚拟机独立于其他虚拟机运行,因此,同一物理计算机上可以有多个操作系统环境共存,并且它们相互完全隔离。

发明内容
本发明的一个实施例提供了一种由计算机实现的方法,包括监视分配给网络上多个计算节点的虚拟机之间的网络流量,以及识别在网络上的虚拟机间通信量大于网络流量阈值的第一和第二虚拟机。所述方法进一步包括迁移所述第一和第二虚拟机中的至少一个以使所述第一和第二虚拟机被分配给同一计算节点,并且所述第一和第二虚拟机之间的虚拟机间通信不再导向网络。


图1示出可以根据本发明使用的示例性计算机。图2示出可以根据本发明使用的示例性刀片机箱。图3示出使用虚拟化机架中多个物理计算机的本发明方法的另一实施例。图4是示出从网络交换机获取并由管理节点维护的网络流量数据的表。图5是示出从一个服务器到另一服务器的虚拟机迁移的方块图。图6是本发明的方法的流程图。
具体实施例方式本发明的一个实施例提供了一种由计算机实现的方法,包括监视分配给网络上多个计算节点的虚拟机之间的网络流量,识别在网络上的虚拟机间通信量大于网络流量阈值的第一和第二虚拟机。所述方法进一步包括迁移所述第一和第二虚拟机中的至少一个以使所述第一和第二虚拟机被分配给同一计算节点,并且所述第一和第二虚拟机之间的虚拟机间通信不再导向网络。在进一步的实施例中,计算节点与网络交换机的以太网链路相连,并且数据被从网络交换机的管理信息数据库中获取以确定用于所述第一和第二虚拟机之间的通信的通过以太网链路的网络带宽量。两个虚拟机之间的通信可被称为“虚拟机间”通信或“VM间”通信。在虚拟机位于多个计算节点的系统中,VM间通信会导致网络流量。网络交换机在其管理信息库(MIB)中收集网络统计信息。可选地,MIB数据可用来识别用于第一和第二虚拟机之间通信的网络带宽量,以及根据被指定给所述第一和第二虚拟机的媒体访问控制(MAC)地址或网际协议(IP)地址进行识别。例如,MIB数据可以识别,或用于识别,与表示两个虚拟机的MAC对 (couplet)关联的网络流量。因此,可以将源VM的MAC地址和目标VM的MAC地址两者与两个VM之间的网络流量相关联地记录。可以与每个机箱(chassis)中的管理节点共享和 /或直接与远程管理节点共享每个网络交换机MIB中的数据。无论远程管理节点直接获取网络流量数据,还是从机箱管理节点获取网络流量数据,远程管理实体能够访问所有VM间网络流量数据。可选地,具有最高虚拟机间通信的虚拟机可以进行排列,可能根据从最高到最低VM间网络流量的顺序排列,以便于识别要迁移的适当VM。在本发明的各实施例中,VM间流量可以在整个网络级上管理,也可以在整个网络级内管理,例如,在IP子网级,因为与网络流量关联的IP地址也可以被识别。可能管理IP 子级更容易,因为不需要路由器(能够将两个不同的子网连接在一起的设备)。因此,MIB 可以跨整个网络使用虚拟机的IP地址。如果网络只包含一个子网,那么使用与每个虚拟机关联的MAC地址会更简单,因为MAC地址是ISO第二层实体,而IP地址是第三层实体。可通过将两个具有高VM间网络流量的虚拟机置于同一物理计算节点降低网络流量。因此,所述方法包括迁移第一和第二虚拟机中的至少一个。一种选择是,所述迁移包括将第一虚拟机从第一计算节点迁移到运行第二虚拟机的第二计算节点。但是,有可能第一和第二计算节点的未用资源量不足以接纳更多的虚拟机。另一选择是,所述迁移包括将第一和第二虚拟机两者都迁移到具有可用于接纳第一和第二虚拟机的充足资源的计算节点, 例如第三计算节点。在另一实施例中,所述由计算机实现的方法进一步包括计算代表一段时间内第一和第二虚拟机之间的虚拟机间通信的值。这种代表值的非限制性示例包括一段时间内的平均(average)带宽、算术平均(mean)带宽和带宽标准偏差。因此,第一和第二虚拟机可以被识别为那些具有大于阈值的虚拟机间通信代表值的虚拟机。使用代表值而非瞬时值,将避免由于短时间VM间网络流量高峰而迁移VM。在更进一步的实施例中,所述由计算机实现的方法进一步包括确定第二计算节点具有充足的未用资源以运行第一虚拟机。此确定可包括读取第二计算节点的重要产品数据 (VPD)以确定第二计算节点的输入/输出容量、处理器容量和存储器容量。仍进一步地,可以直接从第二计算节点获取处理器使用量和存储器使用量。可通过从诸如服务器之类的给定计算节点的该资源的容量减去当前使用量来计算未用资源量。所述由计算机实现的方法的又一实施例进一步包括确定运行第一虚拟机的第一计算节点上的未用资源量以及运行第二虚拟机的第二计算节点上的未用资源量;确定第一和第二虚拟机的资源需求;以及在将第一虚拟机迁移到第二计算节点和将第二虚拟机迁移到第一计算节点之间进行选择,以便迁移之后的资源使用量被最平均地分布在第一和第二计算节点之间。应该理解,用于识别所述第一和第二虚拟机时的网络流量阈值可被陈述为绝对带宽量或者计算节点的链路带宽百分比。例如,绝对阈值可以是100Mbps,而百分比阈值可以是链路带宽的25%。一远程管理节点可负责识别在网络上的虚拟机间通信量大于网络流量阈值的第一和第二虚拟机。根据本发明的各实施例,远程管理节点从网络中网络交换机的MIB收集网络统计信息并且能够判定哪些虚拟机具有最高的VM间网络流量。远程管理节点然后可开始适当地迁移第一和第二虚拟机中的至少一个,以使这两个虚拟机位于同一物理服务器上。当两个虚拟机同时在单个物理服务器上运行时,这些VM之间的VM间通信不会离开所述物理服务器,而减少或消除其对网络流量的贡献。在本申请的上下文中,虚拟机可被描述为需要各种资源量,例如输入/输出容量、 存储器容量和处理器容量。但是应该理解,虚拟机所用的资源量大体上取决于分配给虚拟机的软件任务或进程。例如,计算机辅助制图和设计(CADD)应用和大型电子数据表应用需要大量的计算并且被视为处理器密集的,而它们需要的网络带宽非常少。Web服务器应用使用大量网络带宽,但是可能仅使用很少一部分可用存储器或处理器资源。相比之下,使用数据库管理的财务应用需要更多得多的处理容量和存储器容量,但是减少了对输入/输出带宽的使用。在又一实施例中,所述方法进一步包括直接从所述计算节点获取所述计算节点的处理器使用量和存储器使用量。本领域的技术人员将理解,可以从系统管理程序任务管理器获取此信息,所述任务管理器从物理计算节点上执行的所有进程获取所需的存储器和 CPU使用量。处理器和存储器使用量指示当前在用的处理器和存储器容量,或者相反地,允许确定当前未用的处理器和存储器容量。因此,可以作为虚拟机选择过程的一部分或者至少在迁移之前,判定目标计算节点具有充足的未用处理器和存储器容量来运行附加的虚拟机。结合所述方法的各种实施例,还可以通过读取计算节点的重要产品数据来确定计算节点的输入/输出容量、处理器容量和存储器容量。从所述输入/输出容量、处理器容量和存储器容量相应地减去输入/输出使用量、处理器使用量和存储器使用量,就可以得出这些资源中每种的未用量。因此,可以将虚拟机的输入/输出需求、处理器需求和存储器需求与特定计算节点上的未用资源量进行比较以识别可以在不过度分配任何资源的情况下在特定计算节点上容纳特定虚拟机。现在参考附图,图1是可以由本发明使用的示例性计算机102的方块图。需要指出,针对计算机102示出和在计算机102内示出的包括所示的硬件和软件两者的部分或全部示例性体系结构可以由软件部署服务器150以及下面在图2和图6中示出的供应管理器 /管理节点222和服务器刀片2(Ma-n使用。请注意,尽管本公开中所述的刀片以举例的方式被描述和示出为刀片机箱中的服务器刀片,但是此处所述的部分或全部计算机可以是单独的计算机、服务器或其他集成的或单独的计算设备。因此,术语“刀片”、“服务器刀片”、 “计算机”、“服务器”和“计算节点”在本说明书中是可互换地使用的。计算机102包括与系统总线106相连的处理器单元104。处理器单元104可以使用一个或多个处理器,每个处理器具有一个或多个处理器核心。驱动/支持显示器110的视频适配器108也与系统总线106相连。在一个实施例中,交换器107将视频适配器108 连接到系统总线106。或者,交换器107可将视频适配器108连接到显示器110。在任意一个实施例中,交换器107均为这样的交换器(优选为机械式的),其允许显示器110连接到系统总线106,且因此仅在执行支持此处所述的过程的指令(例如,虚拟机供应程序-下面所述的VMPP 148)时才发挥功能。
系统总线106通过总线桥112连接到输入/输出(I/O)总线114。I/O接口 116与 I/O总线114相连。I/O接口 116提供与各种I/O设备的通信,所述I/O设备包括键盘118、 鼠标120、媒体托盘122(可包括诸如⑶-ROM驱动器、多媒体接口等之类的存储设备)、打印机IM和(如果不按照下面所述的方式使用VHDL芯片137)外接USB端口 126。尽管与I/ 0接口 116连接的端口的格式可以是计算机体系结构领域的技术人员已知的任何格式,但是在优选实施例中,部分或全部这些端口均为通用串行总线(USB)端口。如上所述,计算机102能够使用网络接口 130通过网络1 与软件部署服务器150 通信。网络1 可以是诸如因特网之类的外部网络,也可以是诸如以太网或虚拟专用网 (VPN)之类的内部网络。硬盘驱动器接口 132也与系统总线106相连。硬盘驱动器接口 132与硬盘驱动器 134相接口。在优选实施例中,硬盘驱动器134与系统存储器136通信,系统存储器136也与系统总线106相连。系统存储器被定义为计算机102中最低级的易失性存储器。该易失性存储器包括其他更高级的易失性存储器(未示出),其中包括但不限于高速缓冲存储器、 寄存器和缓冲器。填充在系统存储器136中的数据包括计算机102的操作系统(OS) 138和应用程序144操作系统138包括用于提供对诸如应用程序144之类的资源的透明用户访问的外壳140。一般而言,外壳140是提供用户和操作系统之间的解释器和接口的程序。更具体地说,外壳140执行输入命令行用户接口的或来自文件的命令。因此,外壳140 (也称为命令处理器)通常是操作系统软件层次结构的最高级别并充当命令解释器。外壳提供系统提示,解释通过键盘、鼠标或其他用户输入媒体输入的命令,并将所解释的命令发送到操作系统的适当较低级别(例如,内核142)进行处理。需要指出,尽管外壳140是基于文本的、面向行的用户接口,但是本发明也将同样很好地支持其他用户接口模式,例如图形模式、语音模式、手势模式等。如上所述,操作系统138还包括内核142,内核142包括操作系统138的较低级功能,其中包括提供操作系统138的其他部分和应用程序144所需的基本服务,所述服务包括存储器管理、进程和任务管理、盘管理以及鼠标和键盘管理。应用程序144包括可选的呈现器,所述呈现器以举例的方式被示为浏览器146。浏览器146包括使万维网(WWW)客户机(例如,计算机10 能够使用超文本传输协议(HTTP) 消息传递在因特网上发送和接收网络消息,从而允许与软件部署服务器150和其他所描述的计算机系统进行通信的程序模块和指令。计算机102的系统存储器(以及软件部署服务器150的系统存储器)中的应用程序144还包括虚拟机供应程序(VMPP) 148。VMPP 148包括用于实现下面所描述的过程的代码,所述过程包括图2-6中所述的过程。VMPP 148能够与提供下面所述的必要VPD数据的重要产品数据(VPD)表151进行通信。在一个实施例中,计算机102能够从软件部署服务器150下载VMPP 148,其中包括按需下载。进一步需要指出,在本发明的一个实施例中,软件部署服务器150执行与本发明关联的所有功能(包括执行VMPP148),从而使计算机102 不必使用其自身的内部计算资源执行VMPP 148。可选地,系统存储器136中还存储了 VHDL(VHSIC硬件描述语言)程序139。VHDL 是用于现场可编程门阵列(FPGA)、专用集成电路(ASIC)和其他类似电子设备的示例性设计输入语言。在一个实施例中,执行来自VMPP 148的指令使得VHDL程序139配置VHDL芯片137,所述芯片可以是FPGA、ASIC等。在本发明的另一实施例中,执行来自VMPP 148的指令导致使用VHDL程序139对 VHDL仿真芯片152进行编程。VHDL仿真芯片152可以包含上面针对VHDL芯片137所述的类似体系结构。一旦VMPP 148和VHDL程序139对VHDL仿真芯片152进行编程,VHDL仿真芯片152便通过一次或多次执行VMPP 148中发现的部分或全部指令,来作为硬件执行所述的部分或全部功能。也就是说,VHDL仿真芯片152是对VMPP148中发现的部分或全部软件指令的硬件仿真。在一个实施例中,VHDL仿真芯片152可以是可编程只读存储器(PROM), 其一旦根据来自VMPP148和VHDL程序139的指令进行烧录,便永久地转化为执行在实施下面图2-6中所述的过程时所需的功能的新电路。计算机102中示出的硬件元素并非旨在是穷举的,而是代表性的以突出本发明所需的基本的组件。例如,计算机102可包括替代的存储器存储设备,例如磁带盒、数字通用盘(DVD)、伯努利盒等。这些和其他变化旨在处于本发明的精神和范围之内。图2是作为资源池的“云环境”运行的示例性刀片机箱202的图形。刀片机箱202 包括多个与机箱主干206相连的刀片2(Ma-n (其中“η”为整数)。每个刀片都能支持一个或多个虚拟机(VM)。计算机领域的技术人员知道,VM是物理计算机的软件实现(仿真)。 单个物理计算机(刀片)可以支持多个VM,每个VM运行相同的、不同的或共享的操作系统。 在一个实施例中,每个VM可以被专门定制和保留,以用于1)执行特定类型的软件任务(例如,数据库管理、图形、字处理等);幻针对特定用户、订阅者、客户、组或其他实体执行软件任务;幻在一天中的特定时间或一周中的特定一天(例如,在允许的时间或根据计划)执行软件任务等。如图2中所示,刀片20 支持多个VM 208a-n(其中“η”为整数),刀片20 支持进一步的多个VM 210a-n (其中“η”为整数)。刀片2(Ma-n与为用户(未示出)提供系统管理程序214、客户操作系统和应用的存储设备212相连。来自存储设备212的供应软件被加载到供应管理器/管理节点222以根据此处所述的本发明的各种实施例在刀片之间分配虚拟机。计算机硬件特性从VPD 151被传送给VMPP 148 (根据图1)。VMPP可通过网络216将计算机物理特性传送到刀片机箱供应管理器222、管理接口 220,然后传送到虚拟机工作负载实体218。需要指出,机箱主干206也与网络216相连,网络216可以是公共网络(例如,因特网)、专用网络(例如,虚拟专用网或实际的内部硬件网络)等。网络216允许将虚拟机工作负载218传送到刀片机箱202的管理接口 220。该虚拟机工作负载218是被请求在刀片机箱202内的任何一个VM上执行的软件任务。管理接口 220然后将此工作负载请求发送到供应管理器/管理节点222,此供应管理器/管理节点222是能够在刀片机箱202内配置VM以执行所请求的软件任务的硬件和/或软件逻辑。本质上,虚拟机工作负载218通过与刀片机箱管理接口 220和供应管理节点222通信,来管理VM的整个供应。然后,该请求进一步被传送到通用计算机系统中的VMPP 148(请参考图1)。需要指出,刀片机箱202是其中本发明的系统可以运行的示例性计算机环境。但是,本发明的系统的范围不应被仅限于刀片机箱。也就是说,本发明的方法和过程还可以在使用此处所述的某些工作负载管理类型的任意计算机环境中使用。因此,术语“刀片机箱”、“计算机机箱”和“计算机环境”是可互换地使用的,以描述管理多个计算机/刀片/服务器的计算机系统。图2还示出根据本发明的进一步实施例的诸如IBM Director krver之类的可选的远程管理节点230。远程管理节点230通过管理接口 220与刀片机箱202上的机箱管理节点222进行通信,但是也可以与任意数量的刀片机箱和服务器进行通信。因此,一全局供应管理器232能够与(本地)供应管理器222通信和协作以执行本发明的方法。可选的全局供应管理器主要在具有多个服务器机箱或机架的大规模安装中有利,在所述大规模安装中全局供应管理器可以协调VM的机箱间迁移或分配。全局供应管理器优选地跟踪具有多机箱或多机架配置的VM。如果启用本地供应管理器,则由该实体负责在机箱或机架内迁移VM,然后将此信息发送到全局供应管理器。全局供应管理器将参与在多个机箱或机架间迁移VM,还可能指示本地供应管理器迁移某些VM。 例如,全局供应管理器232可以构建和维护包含与本地供应管理器222相同的VM数据的表,只是全局供应管理器将需要该数据以用于多机箱或多机架系统中每个机箱或机架内的 VM0全局供应管理器232和每个本地供应管理器222所维护的表将通过持续的彼此通信时保持同步。有利地,所述多个表提供了允许在其中一个供应管理器停止工作时继续操作的冗余。图3示出具有19英寸机架环境内的多个物理服务器的本发明的一个实施例。此配置与图2中示出的配置202类似,只是图3示出了虚拟化机架302。用户304能够将执行软件任务的请求发送到管理节点306(与图2中示出的供应管理器/管理节点222类似)。 根据特定服务器308及其相连的网络交换机310与外部网络312和存储设备314通信(通过网关316和虚拟化存储阵列318)的I/O能力,用户的请求被定址到适当的和最佳的计算机(例如,服务器308)。虚拟化机架302例如是容纳多个服务器的刀片机箱。每个物理服务器(包括服务器308)都具有I/O网络适配器以支持输入/输出流量。为了确定能够在服务器上执行的最佳虚拟机数量,供应管理器必须能够检索物理服务器的网络配置(I/O 功能)并协调此信息以正确地在每个服务器上供应VM。图4是示出可从网络交换机的MIB获取并由管理节点维护的网络流量数据的一个实施例的表400。如图所示,第一列402列出发起通信的虚拟机并通过唯一 MAC地址标识该虚拟机。为了示出的目的,MAC地址由整体包括机箱编码、服务器编码和虚拟机编码的标签表示。例如,在标头下面的表的第一行,虚拟机ID “C1S1VM1”是指机箱#1中的服务器 #1上的虚拟机#1。第二列404列出作为通信目标的虚拟机。因此,在一行中标识的两个虚拟机可以被称为一个对,并且第三列406中示出的带宽是用于从一个虚拟机到另一虚拟机的通信的VM间网络流量(以每秒兆位(Mbps)为单位)。表中的第一行示出从C1S1VM1到 C2S1VM1的通信的VM间网络带宽平均为50Mbps。MIB还可包含用于所述对之间反方向的 VM间网络流量的项,所述反方向例如为从C2S1VM1到C1S1VM1 (数据项未示出)。但是,对于诸如运行CADD程序的VM之类的某些虚拟机,VM间网络流量可以基本上全部是一个方向的。本发明的实施例可以基于单向带宽,也可以基于双向带宽。为了判定服务器是否具有充足的未用资源以接收虚拟机迁移,表400可进一步包括每个虚拟机的处理器使用量和存储器使用量。仅示出了表的一部分,其中包括从虚拟机ID C1S1VM1起始并流向机箱2中服务器1上的三个不同的虚拟机(C2S1VM1、C2S1VM2和C2S1VM; )的网络流量,以及从虚拟机IDC1S1VM5起始并流向机箱2中服务器1上的单个虚拟机(C2S1VM1)的网络流量。机箱1的服务器1和机箱2的服务器1可以通过网络交换机相互通信以及与全局供应管理器进行通
fn °远程管理节点将定期从整个网络中每个网络交换机的MIB收集数据。为了确保网络稳定,远程管理节点优选地在确定迁移虚拟机之前对特定时段内的流量进行平均。一旦识别一VM到VM对(对)具有超过阈值水平的网络带宽,远程管理节点便会判定所述对中任意一个VM的物理服务器是否有资源来接收另一个VM,或者判定是否必须将两个VM迁移到不同的物理服务器,以便所述对中的两个VM驻留在同一物理服务器上。在图4的示例中, 机箱1、服务器1VM5 (ClSlViK)被移到机箱2、服务器1,因为具有足够的处理容量。(远程管理节点已部署VM映像并且先前已确定每个物理服务器的处理容量和存储器容量)。在该示例中,迁移单个VM(C1S1VM5)被认为会消除平均网络带宽300Mbps,直到VM对间的过程完成。尽管由图4中表400所表示的两个服务器的系统非常小,但是该示例代表具有任意数量的机箱内的任意数量服务器的系统中的两个服务器。为了准备表400,供应管理器将对管理信息库(MIB)统计信息的请求发送到每个网络交换机。例如,所述请求可以采取简单网络管理协议(SNMP)GET请求/命令(即,SNMP GET MIB Stats)的形式。交换机以被请求的统计信息,例如,以SNMP PUT(SNMP PUT MIB Stats)进行响应。MIB Stats允许供应管理器构建或填充该表以包括每个虚拟机正在使用的带宽。也可以针对每个服务器上每个其他虚拟机将其他SNMP PUT MIB Stats从每个交换机传送到供应管理器。如上所述,本地或全局供应管理器优选地将一段时间内的VM间网络流量进行平均,以确保瞬时的峰值不会导致VM迁移。类似地,本地或全局供应管理器将优选地使用滞后算法来避免VM跨网络连续移动并通过允许VM在一段时间内保留在同一物理服务器上来确保网络稳定。图5是示出图4的表400中表示的虚拟机从一个服务器到另一服务器的迁移的系统500的方块图。虚拟机C1S1VM5从机箱1(504)的服务器1 (50 到机箱2 (508)的服务器1 (506)的迁移由箭头(518)表示。作为迁移的结果,C1S1VM5和C2S1VM1的VM对将位于同一物理服务器506上,并消除该VM对产生的平均300Mbps的VM间网络流量。图6是由计算机实现的方法600的流程图。步骤602包括监视分配给网络上多个计算节点的虚拟机之间的网络流量。在步骤604,识别在网络上的虚拟机间通信量大于网络流量阈值的第一和第二虚拟机,然后,步骤606包括迁移所述第一和第二虚拟机中的至少一个以使所述第一和第二虚拟机被分配给同一计算节点,并且所述第一和第二虚拟机之间的虚拟机间通信不再导向网络。在单独的示例中,可能发生VMl和VM2位于第一计算节点上,具有高VM间通信(不通过网络),并且VM2还和第二计算节点上的VM3具有高VM间通信(通过网络)。在这种情况下,本发明的实施例可判定VM2应该迁移到第二计算节点以消除与VM2-VM3通信关联的网络流量。但是,在该示例中,将VM2迁移到第二计算节点会不经意地产生与VM1-VM2通信关联的新网络流量,因为VMl和VM2将不再位于同一物理计算节点上。但是对VM间网络带宽分析的后续迭代会识别MIB中此新的VM间网络带宽。因此,将识别具有最高VM间带宽的VM对并执行进一步的迁移。经过一段时间迭代本发明的方法,如果VM1-VM2网络带宽占用大量带宽,例如变为具有最高网络带宽的VM对,则将移动VMl和VM2中的一个以使VMl 和VM2将再次位于同一计算节点上。优选地,所述方法将包括防止重复地来回迁移VM的滞后功能。在该示例中,VM2迁移到第二计算节点应当开启一个时间段,在此期间,VM2不应该被再迁移回第一计算节点。因此,如果需要消除VM1-VM2通信的网络带宽并且当需要消除 VM1-VM2通信的网络带宽时,所述方法将考虑VM2不应该被迁移到第一计算节点(即,避免反向迁移),而将转而尝试移动VMl。如果第二计算节点没有充足的资源来接收VMlJU VMl 和VM2两者可能被移至第三计算节点。因此,经过一段时间多次迭代本发明的方法,如果多个VM具有高VM间通信,则这些VM应该最终位于同一物理计算节点,从而所述方法将达到移动VM的稳定点。本领域的技术人员将理解,本发明可以实现为系统、方法或计算机程序产品。因此,本发明可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等) 或组合了软件和硬件方面的实施例的形式,所有这些软件和硬件方面在此通常被称为“电路”、“模块”或“系统”。此外,本发明可以采取体现在一个或多个计算机可读存储介质(在介质中具有计算机可用程序代码)中的计算机程序产品的形式。可以使用一个或多个计算机可用或计算机可读存储介质的任意组合。所述计算机可用或计算机可读存储介质可以是(例如但不限于)电、磁、电磁或半导体装置或设备。计算机可读介质的更具体的示例(非穷举列表)可以包括以下项便携式计算机软盘、硬盘、 随机存取存储器(RAM)、只读存储器(ROM)、可擦写可编程只读存储器(EPR0M或闪存)、便携式光盘只读存储器(CD-ROM)、光存储设备或磁存储设备。所述计算机可用或计算机可读存储介质甚至可以是程序被打印在其上的纸张或其他适合的介质,因为所述程序可以通过例如光扫描所述纸张或其他介质被电子地捕获,然后被编译、解释或另外以适合的方式被处理(如果必要),然后被存储在计算机存储器中。在本文档的上下文中,所述计算机可用或计算机可读存储介质可以是任何能够包含或存储由计算机使用的程序的存储介质。所述计算机可用存储介质中包含的计算机可用程序代码可以通过传播数据信号进行传输(在基带中或作为载波的一部分)。可以使用任何适当的传输介质(包括但不限于无线、线缆、光缆、RF等)将计算机可用程序代码从一个存储介质传输到另一存储介质。用于执行本发明的操作的计算机程序代码可以使用一种或多种编程语言的任意组合来编写,所述编程语言包括诸如Java、Smalltalk, C++或类似语言之类的面向对象的编程语言以及诸如“C”编程语言或类似的编程语言之类的常规过程编程语言。所述程序代码可以完全地在用户计算机上执行,部分地在用户计算机上执行,作为独立的软件包执行, 部分地在用户计算机上并部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后者的情况中,所述远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型网络与用户的计算机相连,也可以与外部计算机进行连接(例如,使用因特网服务提供商通过因特网连接)。下面参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或方块图对本发明进行描述。将理解,所述流程图和/或方块图的每个方块以及所述流程图和/或方块图中的方块的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器, 以便通过所述计算机或其他可编程数据处理装置的处理器执行的所述指令产生用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的装置。这些计算机程序指令也可以被存储在引导计算机或其他可编程数据处理装置以特定方式执行功能的计算机可读存储介质中,以便存储在所述计算机可读存储介质中的所述指令产生一件包括实现在所述一个或多个流程图和/或方块图方块中指定的功能/操作的指令装置的制品。所述计算机程序指令还可被加载到计算机或其他可编程数据处理装置,以导致在所述计算机或其他可编程装置上执行一系列操作步骤以产生计算机实现的过程,从而在所述计算机或其他可编程装置上执行的指令提供用于实现在一个或多个流程图和/或方块图方块中指定的功能/操作的过程。附图中的流程图和方块图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在此方面,所述流程图或方块图中的每个方块都可以表示代码的模块、段或部分,所述代码包括用于实现指定的逻辑功能的一个或多个可执行指令。在某些备选实施方式中,在方块中说明的功能可以不按图中说明的顺序发生。例如,示为相继的两个方块可以实际上被基本同时地执行,或者某些时候,取决于所涉及的功能,可以以相反的顺序执行所述方块。所述方块图和/或流程图的每个方块以及所述方块图和/或流程图中的方块的组合可以由执行指定功能或操作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。在此使用的术语仅出于描述特定实施例的目的,并非对本发明进行限制。正如在此使用的那样,单数形式“一”、“一个”和“所述”、“该”旨在也包括复数形式,除非上下文另外明确指出。将进一步理解的是,当在本说明书中使用时,术语“包括”和/或“包含”指定存在所述特性、整体、步骤、操作、元件、组件和/或由此构成的组,但并不排除其中存在或增加一个或多个其他特性、整体、步骤、操作、元件、组件和/或由此构成的组。术语“优选地”、 “优选”、“优先”、“选择性地”、“可能”及类似的术语用于指示被认为是本发明的可选(非必要)特性的项、条件或步骤。下面权利要求中的所有装置或步骤加功能要素的对应结构、材料、操作和等同物旨在包括用于与其他如具体声明的那样所声明的要素结合执行所述功能的任何结构、材料或操作。出于说明和描述目的给出了对本发明的描述,但是所述描述并非旨在是穷举的或是将本发明限于所公开的形式。在不偏离本发明的范围和精神的情况下,许多修改和变化对于本领域的技术人员来说都将是显而易见的。实施例的选择和描述是为了最佳地解释本发明的原理、实际应用,并且当适合于所构想的特定使用时,使得本领域的其他技术人员能够理解本发明的具有各种修改的各种实施例。
权利要求
1.一种由计算机实现的方法,包括监视分配给网络上多个计算节点的虚拟机之间的网络流量; 识别在网络上的虚拟机间通信量大于网络流量阈值的第一和第二虚拟机;以及迁移所述第一和第二虚拟机中的至少一个以使所述第一和第二虚拟机被分配给同一计算节点,并且所述第一和第二虚拟机之间的虚拟机间通信不再导向网络。
2.如权利要求1中所述的由计算机实现的方法,其中所述计算节点与网络交换机的以太网链路相连,所述方法进一步包括从所述网络交换机的管理信息数据库获取数据以确定用于所述第一和第二虚拟机之间的通信的通过所述以太网链路的网络带宽量。
3.如权利要求2中所述的由计算机实现的方法,其中所述用于所述第一和第二虚拟机之间的通信的网络带宽量是根据指定给所述第一和第二虚拟机的媒体访问控制地址或网际协议地址识别的。
4.如权利要求1中所述的由计算机实现的方法,其中迁移所述第一和第二虚拟机中的至少一个包括将所述第一虚拟机从第一计算节点迁移到运行所述第二虚拟机的第二计算节点。
5.如权利要求1中所述的由计算机实现的方法,其中迁移所述第一和第二虚拟机中的至少一个包括将第一和第二虚拟机都迁移到一计算节点。
6.如权利要求1中所述的由计算机实现的方法,进一步包括计算代表一段时间内所述第一和第二虚拟机之间的虚拟机间通信的值;以及其中所述识别第一和第二虚拟机包括识别具有大于阈值的虚拟机间通信的代表值的第一和第二虚拟机。
7.如权利要求6中所述的由计算机实现的方法,其中所述计算的值是从平均、算术平均和标准偏差中选择的。
8.如权利要求1中所述的由计算机实现的方法,进一步包括 排列具有最高虚拟机间通信的虚拟机。
9.如权利要求4中所述的由计算机实现的方法,进一步包括 确定所述第二计算节点具有充足的未用资源以运行所述第一虚拟机。
10.如权利要求9中所述的由计算机实现的方法,其中所述确定未用资源量包括 读取所述计算节点的重要产品数据以确定所述计算节点的输入/输出容量、处理器容量和存储器容量。
11.如权利要求9中所述的由计算机实现的方法,其中确定未用资源量包括 直接从所述计算节点获取处理器使用量和存储器使用量。
12.如权利要求1中所述的由计算机实现的方法,进一步包括确定运行所述第一虚拟机的第一计算节点上的未用资源量以及运行所述第二虚拟机的第二计算节点上的未用资源量;确定所述第一和第二虚拟机的资源需求;以及在将所述第一虚拟机迁移到所述第二计算节点和将所述第二虚拟机迁移到所述第一计算节点之间进行选择,以便在所述第一和第二计算节点之间最平均地分布迁移之后的资源使用量。
13.如权利要求10中所述的由计算机实现的方法,其中确定未用资源量包括 读取所述计算节点的重要产品数据以确定所述计算节点的输入/输出容量、处理器容量和存储器容量。
14.如权利要求10中所述的由计算机实现的方法,其中确定未用资源量包括 直接从所述计算节点获取处理器使用量和存储器使用量。
15.如权利要求1中所述的由计算机实现的方法,其中所述网络流量阈值是链路带宽的阈值百分比。
全文摘要
提供了一种由计算机实现的方法,包括监视分配给网络上多个计算节点的虚拟机之间的网络流量,识别在网络上的虚拟机间通信量大于网络流量阈值的第一和第二虚拟机。所述方法进一步包括迁移所述第一和第二虚拟机中的至少一个以使所述第一和第二虚拟机被分配给同一计算节点,并且所述第一和第二虚拟机之间的虚拟机间通信不再导向网络。在一个实施例中,每个计算节点与网络交换机的以太网链路相连,从所述网络交换机的管理信息数据库获取数据以确定用于所述第一和第二虚拟机之间的通信的网络带宽量。
文档编号H04L29/06GK102457517SQ20111021383
公开日2012年5月16日 申请日期2011年7月28日 优先权日2010年10月26日
发明者E·S·萨费尔, J·L·伍尔德里奇, N·P·J·汉森, P·C·德拉姆 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1