虚拟机设备的动态分配的制作方法

文档序号:6467775阅读:248来源:国知局
专利名称:虚拟机设备的动态分配的制作方法
虚拟机设备的动态分配
背景技术
近来对虚拟机软件的使用已经经历了空前的增长。虚拟机软件最初 被设计为软件测试平台,其对真实计算机系统的硬件进行模拟和/或仿 真,从而允许在不做修改的情况下在所模拟/仿真的环境中执行在实机上 执行的软件。对于在这种虛拟机上执行的软件来说,由虛拟化软件所给 出的虚拟化机器就好像是真实计算机系统。
随着真实计算机系统中的可热插拔设备的出现,现在可以获得能够
^t拟/仿真与实机相同的设备热插拔的虚拟机。这种虚拟热插拔能力允许 在单个真实计算机系统上执行的多个虚拟机在按需的基础上针对所述
虚拟机的配置动态地添加及去除虚拟化硬件资源。此外,由于所述虚拟 机才莫拟/仿真真实计算机系统,因此所述虚拟机还才莫拟/仿真真实计算机 系统的固件,其中包括到所述虚拟化硬件的工业标准固件接口 (比如
Intel⑧的可扩展固件接口 (EFI))以及作为开放式工业标准的高级配置 与电源接口 (ACPI)。
利用上述固件接口 ,由所述真实/虚拟化计算机系统内的嵌入式固件 把硬件表示为 一 系列对象,可以通过在所述计算机系统内的处理器上执 行的软件(例如操作系统)经由所述固件接口来管理其中的每 一 个对象。 这些对象特别允许把设备操作为"可热插拔"设备,即可以在无需断电 或重启所述计算机系统的情况下被插入该计算机系统或者从该计算机 系统拔出的设备。例如,当插入某一设备时, 一旦所述设备硬件已被初 始化,则所述固件就向所述操作系统通知该设备可用。所述通知是通过 由所述计算机系统所使用的固件接口 (例如通过一条或多条ACPI通知 消息)而提供的。类似地,如果将要拔出某一设备,则所述固件向所述 操作系统通知已经接收到针对弹出该设备的请求。所述操作系统验证该 设备不在使用中,并且随后通过所述固件接口(例如通过一条或多条 ACPI请求)向所述固件发出针对"弹出"所述硬件的请求。
所述虛拟化硬件资源的能力允许把实机的真实硬件资源的各子集 表示为具有减小的尺寸或性能的各单独的虚拟硬件资源,并且还允许把 这些虚拟化资源热插入及热拔出一个或多个虚拟才几。因此,例如可以4巴某一真实计算机系统内的一个1GB存储器表示为8个128MB虚拟存储 器,其中可以在该真实计算机系统上执行的 一个或多个虛拟机之间动态 分配所述虛拟存储器。被分配给某一虚拟机的每一项资源由该机的虛拟 固件表示为一个对象(例如ACPI对象),其中使得由到在该虛拟机上 执行的操作系统的固件接口能够访问该对象。可以在按需的基础上把每 一个虚拟存储器虚拟地热插入或热拔出在所述真实计算机系统上执行 的《壬何一 个所述虚拟才几。
然而,有时会使用较大数目的对象以便在给定资源的各子集的分配 过程中实现更大的灵活性。使用大数目的虚拟化资源允许以更精细的粒 度来分配所述真实资源,并且降低了由于虚拟资源在使用中并且不可用 于再分配而将拒绝针对弹出所述虚拟资源的请求的概率。但是随着虚拟 化资源的数目增大,与大量虚拟化资源的再分配相关联的开销可能会对 系统的性能造成不利影响,特别是那些执行大量所述再分配的系统(例 如在各虚拟机之间执行动态负载平衡的系统)。


现在将参考附图来详细描述本发明的示例性实施例,其中 图1示出根据至少一些说明性实施例的执行虚拟机软件的多个实例 的计算机系统;
图2A示出根据至少一些说明性实施例构造的图1的计算机系统的 一个例子;
图2B示出根据至少 一 些说明性实施例构造的图2 A的计算机系统的 方框图3A到3C示出根据至少一些说明性实施例把附加的虚拟存储器 资源添加到虚拟机的 一 个例子;
图4A到4E示出根据至少 一些说明性实施例把虚拟存储器资源从一 个虚拟才几再分配到另一个虚拟才几的一个例子;以及
图5示出根据至少一些说明性实施例的用于把虚拟设备从第 一虚拟 机弹出并且可选地把虚拟设备再分配到第二虚拟机的方法。
符号和命名法
在下面的描述以及权利要求书中使用特定术语来指代特定系统组件。本领域技术人员将认识到,各个计算机公司可能会用不同的名称来 指代某一组件。本文献不打算在名称不同而功能相同的组件之间进行区 分。在下面的讨论以及权利要求书中,术语"包括"是按照开放式方式 来使用的,因此其应当被解释为是指"包括但不限于..."。此外,术语 "耦合"打算指间接的、直接的、光学的或无线的电连接。因此,如果 第一设备耦合到第二设备,那么该连接可以是通过直接电连接、通过经 由其他设备和连接的间接电连接、通过光学电连接、或者通过无线电连 接。另外,术语"系统"指代两个或更多个硬件和/或软件组件的集合, 并且可以被用来指代电子设备,比如计算机、计算机的一部分、计算机 的组合等等。此外,术语"软件"包括能够在处理器上运行的任何可执 行代码,而不管被用来存储所述软件的介质如何。因此,在软件的定义 内包括了存储在非易失性存储器中并且有时被称作"嵌入式固件"的代 码。此外,术语"真实计算机系统,,指代实际的物理计算机系统,举例
来说,比如图2A和2B中示出的计算冲几系统。
术语"虛拟机"指代对计算机系统的仿真、模拟或者其他类似的功 能表示,由此所述虚拟机包括不受限定一个或多个真实或物理计算机系 统的物理边界的约束的一个或多个功能组件。所述功能组件可以包括真 实或物理设备、互连总线和网络、以及在一个或多个CPU上执行的软 件程序。虚拟机例如可以包括功能组件的子集,其包括某一真实或物理 计算机系统内的 一些而非全部功能组件;虚拟机可以包括多个真实或物 理计算机系统的 一些功能组件;虚拟机可以包括一个真实或物理计算机 系统的全部功能组件,但是仅仅包括另 一个真实或物理计算机系统的一 些组件;或者虚拟机可以包括多个真实或物理计算机系统的全部功能组 件。还可能有许多其他组合,并且所有这种组合都打算在本公开内容的 范围内。此外,在与其他组件、系统和/或子系统(例如存储器、固件、 资源、存储设备以及输入/输出设备)相关联时,术语"虚拟"类似地指 代对所述组件、系统和/或子系统的仿真、模拟或者其他类似的功能表示, 其#皮实施为虚拟才几的一部分或者纟皮实施为虚拟才几软件程序的一部分。
具体实施例方式
图1示出包括处理逻辑102(例如微处理器)和易失性存储装置110 (例如随机存取存储器或RAM)的计算机系统100,其适合用于执行虚拟化软件(包括管理程序以及一个或多个虚拟机)并且是根据至少一些
说明性实施例而构造的。管理程序200 (有时被称作"虚拟机监视器,,) 包括一个或多个虚拟机软件程序,所述虚拟机软件程序被加载到存储器 110中并且由处理器102执行。管理程序200保持对在由该管理程序200 创建的操作环境内执行的所述 一 个或多个虚拟机的控制并且保持所述 虛拟机之间的隔离。在一些说明性实施例中,管理程序200包括基本输 入输出系统(BIOS)软件,而在其他说明性实施例中,所述BIOS包括 管理程序200。在另一些说明性实施例中,管理程序200作为在处理器 102上执行的操作系统的一部分被包括,而在又一些说明性实施例中, 管理程序200作为已经在处理器102上执行的操作系统内的应用程序来 执行。BIOS软件、操作系统软件和管理程序软件的其他变型和组合对 于本领域技术人员而言将变得显而易见,并且所有这种变型和组合都在 本公开内容的范围内。
示出了在由图1的管理程序200创建的操作环境内执行的3个虚拟 机(VM 300、 VM400和VM 500)。每一个虚拟机都模拟和/或仿真类 似于计算机系统100的真实计算机系统。因此,每一个虚拟机都包括虚 拟处理器(vProc 312、 412和512 )、虚拟存储器设备(被包括在VM 300 内的vMem[O] ( 220 )和vMem[l] ( 221 ) 、 VM 400内的vMem[2] ( 222 )、 以及VM 500内的vMem[3] ( 223 ))以及虚拟固件(vF/W316、 416和 516)。所述虚拟固件包括类似于被包括在真实固件中的程序,比如BIOS 代码(未示出)以及硬件与电源控制接口代码(比如在虚拟机300的虚 拟固件316内示出的虚拟高级控制与电源接口 (vACPI)固件318)。 虽然图1的实施例包括虚拟ACPI接口 ,但是其他说明性实施例可以包 括其他虚拟化硬件接口固件(例如Intel 的可扩展固件接口 (EFI)), 并且所有这种虚拟化硬件接口固件都在本公开内容的范围内。
vACPI 318提供在虚拟处理器312上执行的软件,其具有到虚拟机 300的虚拟化硬件的接口。这种软件例如包括图1的操作系统314 (其 包括虛拟存储器资源驱动器(vMRDvr) 315) 。 vACPI 318保持一系列 对象,其中每一个对象对应于一个虚拟化硬件元件,并且其中每一个对 象包括与每一个虚拟化硬件元件的配置和状态相关的信息。因此,例如 vMemObj[O](虚拟存储器对象320 )是虛拟机300内的一个虚拟化ACPI 对象,其包括与vMem[O](虚拟存储器设备220)相关的信息,类似地,
8vMemObj[l](虚拟存储器对象321 )是包括与vMem[l](虚拟存储器设 备221 )相关的信息的虛拟化ACPI对象。被包括在这些对象内的信息 例如可以包括所述设备在虛拟机300的存l诸器地址空间内的基地址和地 址范围。
图1的说明性实施例的虛拟ACPI 318还保持虚拟存储器资源对象 (vMRsrcObj) 330,其与一组虚拟设备(这里在所示出的该-说明性实施 例中是一组虚拟存储器设备)的设备类型相关联。虛拟存储器资源对象 330提供单个状态点以及针对"热插拔"各组虚拟存储器设备(即在无 需复位或重启相应的虚拟机的情况下添加或去除虚拟存储器设备)的控 制。因此,例如如果由vACPI318 (例如通过通用事件或者说GPE)从 管理程序200接收到针对弹出特定数量的存储器的请求,则由vACPI 318 向虚拟存储器资源对象330发送单个聚集弹出通知,该虚拟存储器资源 对象330又向虚拟存储器资源驱动器315发送请求。虚拟存储器资源对 象330还提供用于获得关于各组设备对象的状态和/或信息的单个点。因 此,虚拟存储器资源驱动器315例如可以向虚拟存储器资源对象330发 出单个查询以便获得关于某 一虚拟机内的每一个所述虚拟存储器的信
表,或者将被弹出的存储器数量的^大小 :';''
虚拟存储器资源驱动器315与操作系统314进行交互,以便确定是 否有用以满足所述请求的足够的虚拟存储器设备不在使用中或者正被 可以移出存储器的可交换任务所访问(从而使得所述存储器可用于弹 出)。如果虛拟存储器资源驱动器315识别出满足所述请求的足够的虚 拟存储器设备,则由虚拟存储器资源驱动器315内部地(即在操作系统 314内)生成对应于每一个虛拟存储器设备的各单独的弹出请求,并且 将所述弹出请求发送到对应于将被弹出的存储器设备的每一个虚拟存 储器对象(例如图1的虛拟存储器对象320)。 一旦完成了所述各单独 的弹出操作,虚拟存储器资源对象330就(基于从虚拟存储器资源驱动 器315接收到的完成状态)把所述聚集弹出的完成状态返回到管理程序 200。
图1的说明性实施例的虚拟存储器资源对象330和虚拟存储器资源 驱动器315的操作允许利用单个请求来弹出多个虚拟存储器设备,并且 还允许在无需首先尝试弹出一个或多个虚拟存储器设备的情况下拒绝
9所述弹出请求。由于虛拟存储器资源驱动器315在把任何所述单独的弹 出请求发出到所述各单独的虛拟存储器对象之前确定是否有足够的存 储器设备可用于满足所述请求,因此所述请求将不会改变所述系统的配 置,除非该请求可以成功地弹出所请求的存储器数量。此外,与管理程 序尝试单独地弹出每一个虚拟存储器设备并且可能必须一次一个地弹 出所述虚拟机中的所有虚拟存储器设备的情况相比,通过使用被导向虚
拟存储器资源驱动器315的单个请求以及仅仅发出满足所述原始请求所 需的单独弹出的次数,得到更为高效的弹出操作。此外,如果有多于所 需的存储器设备可用,则虛拟存储器资源驱动器可以选择弹出那些需要 最小开销来弹出的虚拟存储器设备(例如是不在使用中的存储器,而不 是需要交换出数据的存储器)。这种选择允许总体上更快地执行所述弹 出。
在至少一些说明性实施例中,由管理程序200发送到虚拟资源对象 330的针对弹出虚拟存储器设备的请求包括被标识以供弹出的特定虛拟 存储器设备的列表而不是将要弹出的存储器数量。在这种实施例中,虛 拟资源对象330再次向虚拟存储器资源驱动器315发送单个请求,但是 取代扫描所有可用存储器以找到满足所述请求的足够的虚拟存储器设 备,仅仅检查在所述请求中列出的那些虚拟存储器设备以便确定对应于 所述虚拟存储器设备的存储器范围是否不在使用中(或者正被可交换任 务所使用)。如果任何所列出的设备不可用,则拒绝所述请求。否则就 把弹出请求发送到对应于每一个所列出的虚拟存储器设备的每一个虚 拟存储器对象。 一旦完成了所述各单独的弹出操作,虚拟存储器资源对 象330就(基于从虚拟存储器资源驱动器315接收到的完成状态)把所 述聚集弹出的完成状态返回到管理程序200。
在至少一些说明性实施例中,管理程序200保持未分配的虛拟存储
器设备(即尚未被添加到虚拟机的虚拟存储器设备)的存储库,正如图 1中所示出的那样(虛拟存储器设备224-227 (vMem[4-7]))。可以把 该存储库中的虚拟存储器设备与从一个或多个虚拟机弹出的虚拟存储 器设备一起利用来在按需的基础上向计算机系统100内的其他虚拟机提 供虛拟存储器设备。在其他说明性实施例中,可以"在操作中"按照需 要创建虚拟存储器设备并且将其分配给各虚拟机,而不是将其保持在管 理程序200内的未分配的虚拟存储器设备池中。个或多个真实存储器设备的细分或子集,所述真实存储器设备被包括在 存储器110内。因此,例如在至少一个说明性实施例中,存储器110包
括4个真实的1GB存储器设备(例如4个1GB双列直插存储器模块或 者说DIMM),而每一个虛拟存储器设备仅仅包括256MB的真实存储 器。虚拟存储器220-223利用第一 DIMM中的所述1GB的存储器,虚 拟存储器224-227利用第二 DIMM的所述1GB的存储器,以及剩余的2 个DIMM的剩余的2GB的存储器由管理程序200和/或在真实处理器102 上执行的任何其他应用程序来利用。真实与虚拟存储器设备的许多其他 组织和组合对于本领域技术人员而言将变得显而易见,并且所有这种组 织和组合都在本公开内容的范围内。
图2A和2B示出一个说明性计算机系统100,其适合用于执行图1 的虚拟化软件(管理程序200以及虚拟才几300、 400和500)。如所示, 所述说明性计算机系统100包括机箱180、显示器140和输入设备170。 所述计算机系统100包括处理逻辑102、易失性存储装置110和非易失 性存储装置164。处理逻辑102可以用硬件(例如微处理器)、软件(例 如微代码)、或者硬件与软件的组合来实施。计算机系统100还包括计 算机可读介质。所述计算机可读介质包括易失性存储装置IIO(例如随 机存取存储器(RAM))、非易失性存储装置164 (例如闪速RAM、 只读存储器(ROM)、硬盘驱动器、软盘(例如软盘194)、光盘只读 存储器(CD-ROM,例如CD196))、或其组合。
易失性存储装置110和非易失性存储装置164当中的任何一个或二 者例如包括软件,所述软件由处理逻辑102执行并且为所述计算机系统 100提供在此所述的一些或全部功能。所述计算机系统IOO还包括网络 接口 (网络I/F) 162,其使得该计算机系统100能够通过在图2A的例 子中由以太网插座192表示的局域网和/或有线或无线广域网来接收信 息。视频接口 (视频I/F) 142耦合到所述显示器140。用户通过耦合到 外围接口 168的所述输入设备170 (例如键盘)和/或定点设备172 (例 如鼠标)与所述站进行通信。所述显示器140可以与所述输入设备170 和/或定点设备172 —起作为用户接口来操作。
计算机系统IOO可以是基于总线的计算机,其中多种总线通过一系 列集线器或桥接器互连图2B中示出的各种元件,其中包括存储器控制
ii器集线器(MCH ) 104 (有时被称作"北桥")和接口控制器集线器(ICH ) 106(有时被称作"南桥")。图2B的说明性实施例的总线包括前端 总线103,其把处理逻辑102耦合到MCH 104;加速图形端口 ( AGP ) 总线141,其把一见频接口 142耦合到MCH 104;外围组件互连(PCI) 总线161,其把网络接口 162、非易失性存储装置164、外围接口 168和 ICH 106彼此耦合;PCI快速(PCIe)总线151,其4巴一个或多个PCI 快速设备152耦合到MCH 104;以及存储器总线lll,其把MCH 104 耦合到易失性存储装置110内的双列直插存储器;^莫块(DIMM) 120和 130。
所述外围接口 168接受来自所述输入设备170和其他输入设备(比 如定点设备172)的信号,并且把所述信号转换成适合用于在PCI总线 161上传送的形式。所述视频接口 142可以包括图形卡或者其他合适的 视频接口,其接受来自所述AGP总线141的信息并且将其转换成适合 用于所述显示器140的形式。所述处理逻辑102收集来自其他系统元件 的信息,其中包括来自所述外围接口 168的输入数据,以及来自非易失 性存储装置164或易失性存储装置IIO或者来自通过所述网络接口 162 耦合到局域网或广域网的其他系统(例如被用来存储及分发可执行代码 的拷贝的服务器)的程序指令或其他数据。所述处理逻辑102执行所述 程序指令(例如管理程序200)并且相应地处理所述数据。所述程序指 令可以进一步把所述处理逻辑102配置成向其他系统元件发送数据,比 如通过所述视频接口 142和显示器140呈现给用户的信息。所述网络接 口 162使得所述处理逻辑102能够通过网络(例如因特网)与其他系统 进行通信。易失性存储装置IIO可以充当用于所述处理逻辑102的信息 的低等待时间的临时存储装置,以及非易失性存储装置164可以充当信 息的长期(但是更高等待时间的)存储装置。
所述处理逻辑102 (以及从而作为一个整体的所述计算机系统100) 根据存储在非易失性存储装置164上的或者通过所述网络接口 162接收 的一个或多个程序进行操作。所述处理逻辑102可以把所述程序的各部 分拷贝到易失性存储装置110中以用于更快地访问,并且可以响应于所 述输入设备170的用户启动而在各程序之间进行切换或者实施附加的程 序。可以从非易失性存储装置164检索所述附加的程序,或者可以通过 所述网络接口 162从其他位置检索或接收所述附加的程序。这些程序当中的一个或多个在计算机系统ioo上执行,从而使得该计算机系统执行
在此公开的至少一些功能。
图3A到3C示出根据至少一些说明性实施例由管理程序300把虚拟 存储器设备添加到虚拟机300的一个例子。图3A示出已经分配了虚拟 存储器设备220的虚拟机300。虚拟存储器设备221和222由管理程序
可用于在请求时被分配。虽然图3A到3C的实施例示出未分配虚拟存储 器设备的静态池,但是在其他说明性实施例中,可以例如在以下情况下 在"按需"或者"在操作中"的基础上创建所述虚拟存储器设备在由 管理程序200 (例如通过与计算机系统100相关耳关的用户接口从发出请 求的操作者)接收到分配请求时;在由管理程序200基于该管理程序200 所监视的已经被分配给每一个虚拟机的存储器的存储器利用率水平来 内部地生成请求时;或者在由虚拟机基于该虚拟机所监视的该虚拟机的 存储器利用率水平向所述管理程序生成请求时。
图3A示出从管理程序200发送到vACPI 318的针对添加虚拟存4诸 器设备的初始请求351。管理程序200按照虚拟"热插入"指示的形式 (例如作为ACPI通用事件或者说GPE)把所述添加请求发送到vACPI 318。图3B示出对所述请求的初始响应,其中,先前未分配的虛拟存储 器设备221和222 ^皮添加到虚拟才几300,但是如由虚拟存4诸器设备221 和222与把虚拟处理器312耦合到虚拟存储器设备220的总线之间的虚 线所指示的那样,所述先前未分配的虚拟存储器设备221和222尚不可 用。虚拟存储器设备对象321和322由vACPI318添加,^f旦是尚未由搮: 作系统314识别(如由所述存储器对象周围的虚线所指示的那样)。在 至少一些说明性实施例中,所述虚拟存储器对象已经存在于所述ACPI
名称空间中,并且响应于虚拟存储器设备221和222的添加而从禁用状 态过渡到启用状态。所述热插入通知353由虛拟存储器资源对象330转 发到虚拟存储器资源驱动器315,并且向虛拟机300的虚拟硬件配置反 映了虚拟存储器设备221和222的添加。在至少一些说明性实施例中, 所述通知353包括新虛拟存储器对象的列表,而在其他说明性实施例中, 可以通过查询所述虚拟存储器资源对象而获得所述新虚拟存储器对象 的列表。虚拟存储器资源驱动器315内部地生成两个单独的热插入指示 (每一个指示对应于一个虛拟存储器设备),从而使得操作系统314识
13别出所添加的虚拟存储器设备并且把所述设备添加到操作系统314的配 置中,正如图3C中所示出的那样。 一旦完成了对各单独的虚拟存储器 设备的添加,虚拟存储器资源驱动器315就向虚拟存储器资源对象330 发送完成状态355,所述虛拟存储器资源对象330又向管理程序200返 回完成状态357。
图4A到4D示出才艮据至少一些说明性实施例的从一个虚拟才几到另 一个虚拟机的虚拟存储器设备的再分配。图4A示出已经被分配给虚拟 机300的虚拟存储器设备220、 221和222,以及已经被分配给虚拟机 400的虚拟存储器设备223。在接收到针对把虚拟存储器从虛拟机300 再分配到虚拟机400的请求时,管理程序200首先按照"热拔出"或者 "弹出"指示的形式向vACPI 318发出针对解除分配必要的存储器的请 求451。在一些说明性实施例中,所述请求可以列出将要弹出的虚拟存 储器设备,而在其他说明性实施例中,所述请求可以指定一个或多个量 度(例如存储器大小以及诸如回写、易失性/非易失性、以及存储器位置 之类的存储器属性),所述量度被虛拟存储器资源驱动器315内的一个 或多个功能转换成所需的虛拟存储器设备的数目。
参考图4B,虚拟聚集对象330把所述弹出请求453转发到虚拟存储 器资源驱动器315,该驱动器确定所需的资源是否可用。在图4A到4E 的例子中,所述请求要求两个可用的虚拟存储器设备,所述虛拟存储器 设备可用并且可以从虚拟机300解除分配(弹出)。图4B示出去除虚 拟存储器对象321和322 (由所述存储器对象的虛线边界来指示)以及 相应的虚拟存储器设备221和222 (由从虚拟存储器设备221和222到 把虛拟存储器设备220耦合到虚拟处理器312的总线的虚线来指示)。 如图4C中所示, 一旦完成了所述弹出,虛拟存储器资源驱动器315就 向虛拟存储器资源对象330发送完成状态455,所述虛拟存储器资源对 象330又向管理程序200发送完成状态457。
一旦从虚拟机300解除分配(弹出)虚拟存储器设备221和222, 管理程序200就使得"姿照"热插入,,指示的形式)向vACPI418发送 分配请求459 (图4C),所述vACPI418又创建虚拟存储器对象421和 422 (由虚线虚拟存储器对象来指示),并且向虚拟存储器资源驱动器 415发送热插入通知消息(461),如图4D中所示。图4D还示出4巴虛 拟存储器设备221和222添加到虚拟机400以及对所述添加的初始识别(由从虚拟存储器设备221和222到耦合虛拟存储器设备223与虛拟处 理器412的总线的虚线来指示)。图4E示出最终得到的虚拟存储器设 备221和222到虚拟机400的分配。 一旦完成了对虚拟存储器设备221 和222的添加,虛拟存储器资源驱动器就向虚拟存储器资源对象430发 送完成状态,所述虚拟存储器资源对象430又向管理程序200发送完成 状态465。
在至少 一 些说明性实施例中,所述针对弹出虚拟设备的请求包括反 映将要弹出的虚拟设备的特性的量度。因此,这种实施例(例如如图4A 到4C中所示)中的针对从虚拟机300弹出虛拟存储器设备221和222 的请求例如包括以字节计的将要弹出的存储器数量。基于所述虚拟存储 器设备的大小,通过虚拟存储器资源驱动器315内的一个或多个功能来 确定所需的设备的数目,并且如果满足所述请求的所需数目的设备不在 使用中或者正由可交换任务使用(从而是可用的),则弹出所请求的虚 拟存储器。例如,如果每一个虚拟存储器设备是128MB并且请求弹出 2GB的存储器,则如果至少16个存储器设备可用就将弹出所请求的存 储器。在针对弹出虚拟设备的请求内可以使用与不同类型的虚拟设备相 关联的其他量度,并且所有这种量度和虛拟设备类型都在本公开内容的 范围内。通过允许针对设备的请求是基于某一量度而不是所请求的特定 设备的列表,对资源的负载平衡得到简化,这是因为请求和/或管理所述 虚拟设备的程序(例如在虚拟机上执行的应用、或者管理程序)不需要 在作出所述请求之前跟踪或检查哪些设备正在使用中。
图5示出根据至少 一些说明性实施例的用于从一个虚拟机到另 一个 虚拟才几弹出及添加(即再分配) 一个或多个虚拟i殳备的方法600。向第 一虚拟机内的虚拟资源对象发送请求,以便弹出(解除分配)当前被分 配给第一虚拟机的一个或多个虚拟设备(块602)。如块604中所示, 如果满足所述请求所需的虛拟设备当前未被所述第一虚拟机使用或者 正在使用中但是可以使其可用(例如可以从存储器设备交换出和/或清除 出的内容),则从所述第一虛拟机弹出所请求的虛拟设备(块608)。 如块604中所示,如果所需的虚拟设备正在使用中并且无法使其可用(即 无法被清除),则拒绝所述请求(块606 ),从而结束所述方法(块616 )。 如果将不把所弹出的设备添加到另一个虛拟机(块610),则所述方法 结束(块616)。如果所请求的虚拟设备被弹出(块608)并且将把一
15个或多个所弹出的设备添加到第二虚拟机(块610),则向所述第二虚 拟机内的某一虚拟设备资源对象发送命令,以便把一个或多个虚拟设备 添加到该虚拟机(块612)。所述请求使得由所述虛拟冲几生成虛拟热插 入事件并为之服务,并且所请求的虚拟设备被添加到该虚拟机(块614 ), ,人而结束所述方法(块616)。
上面的讨论打算说明本发明的原理和各种实施例。对于本领域技术 人员而言, 一旦完全理解了上面的公开内容,许多变型和修改就将变得 显而易见。例如,虽然本公开内容的至少一些说明性实施例描述了添加 及弹出虚拟存储器设备,但是也可以如在此所述的那样添加及弹出许多 其他虚拟设备,其中包括诸如虚拟硬盘、虚拟网络适配器以及虚拟处理 器(每个虛拟机具有多于一个虚拟处理器,或者具有不同有效速度的虚 拟处理器)之类的设备,在这里仅仅举出几个例子。此外,在所述弹出 请求中提供的所述量度不限于存储器大小,并且可以是与可以被弹出的 所述许多虛拟设备相关联的任何数目的量度。这种量度的例子可以包括 虚拟硬盘的传输带宽、虚拟网络适配器的通信带宽、虚拟处理器的数目、 虚拟处理器的处理能力(例如以每秒百万指令或者说MIPS计)以及虚 拟处理器的速度,其中的每一项可以被表示为一个或多个真实设备的相 应量度的一定比例。后面的权利要求书打算被解释为包含所有上述的变 型和i奮改。
权利要求
1、一种方法,包括在真实计算机系统(100)上执行虚拟机软件(300),所述虚拟机软件包括管理程序(200)和虚拟机,所述虚拟机包括多个虚拟设备(220,221);把所述多个虚拟设备当中的每一个与所述真实计算机系统内的真实设备(110)的唯一子集相关联;所述管理程序向所述虚拟机内的虚拟固件(316)发送针对弹出的请求,所述请求要求从该虚拟机弹出所述多个虚拟设备当中的一个或多个虚拟设备;所述虚拟固件内的虚拟设备资源对象把所述针对弹出的请求转发到在所述虚拟机上执行的虚拟设备资源驱动器(315);以及所述虚拟设备资源驱动器导致响应于所转发的请求而从所述虚拟机单独弹出所述一个或多个虚拟设备当中的每一个。
2、 根据权利要求l所述的方法,还包括把所述虛拟设备资源对象 与所述多个虚拟设备(220, 221)的设备类型相关联。
3、 根据权利要求l所述的方法,还包括基于被包括在所述针对弹出的请求中的量度来确定满足所述针对 弹出的请求所需的虚拟设备(220, 221 )的数目;以及如果有足够数目的虛拟设备可用,并且确定了所述多个虚拟设备当 中的哪些被用来满足所述针对弹出的请求,则从所述虚拟机弹出被确定 需要的所述虛拟设备;其中,由所述虚拟设备资源驱动器(315)来执行对所需的虚拟设 备的数目的所述确定以及对使用所述多个虚拟设备当中的哪些的所述 确定。
4、 根据权利要求l所述的方法,还包括基于被包括在所述请求中的虚拟设备的列表来确定哪些虚拟设备 (220, 221)被识别以供弹出;以及如果在所述请求中列出的虚拟设备可用,则从所述虚拟机弹出所列 出的所述虚拟设备。
5、 根据权利要求l所述的方法,还包括所述管理程序(200 )向所述虛拟设备资源对象发送针对把一个或多个虛拟i殳备(220, 221 )添加到所述虚拟才几的请求;所述虚拟设备资源对象把所述针对添加的请求转发到所述虚拟设备资源驱动器(315);以及所述虚拟设备资源驱动器使得分别把所述一个或多个虚拟设备单独地添加到所述虚拟才几。
6、 一种计算机系统,包括执行虚拟^L软件(300)的真实处理器,所述虛拟机软件实施虛拟 机,所述虚拟机包括虚拟处理器、虚拟资源设备驱动器、包括虚拟设 备资源对象的虚拟固件(316)、以及多个虛拟设备(220, 221 );以 及耦合到所述处理器的真实设备(110),所述虚拟机软件把所述多 个虚拟设备当中的每一个与该真实设备的唯一细分相关联;求,所述请求要求从所述虚拟机弹出所述多个虚拟设备当中的一个或多 个虚拟i殳备;以及其中,所述虚拟设备资源对象使得所述虛拟资源设备驱动器从所述 虚拟机单独地弹出所请求的所述一个或多个虚拟设备。
7、 根据权利要求6所述的计算机系统,其中,所述虚拟设备资源对 象与所述多个虚拟设备(220, 221 )的设备类型相关联。
8、 根据权利要求6所述的计算机系统,其中,所述真实设备(110) 包括真实存储器设备,并且所述多个虚拟设备(220, 221 )包括多个虚 拟存储器设备,所述多个虛拟存储器设备中的每一个与由所述真实存储 器设备所占据的地址空间的唯一子范围相关联。
9、 根据权利要求6所述的计算机系统,其中,所述虚拟资源设备驱动器基于被包括在所述针对弹出的请求 中的量度来确定满足所述请求所需的虚拟设备(220, 221 )的数目,并 且还确定选择使用所述多个虛拟设备当中的哪些来满足所述针对弹出 的请求;以及其中,如果所述虚拟资源设备驱动器确定有足够数目的虚拟设备不 在使用中,则所述虚拟机软件(300)弹出被确定需要并且被选择使用 的所述虛拟设备。
10、 根据权利要求6所述的计算机系统,其中,所述虛拟资源设备驱动器基于在所述请求中提供的虚拟设备的列表来确定哪些虚拟设备(220, 221 )被识别以供弹出;以及如果在所述请求中列出的虚拟设备可用,则所述虚拟机软件(300) 从所述虚拟机弹出所列出的所述虚拟设备。
全文摘要
本发明公开了虚拟机设备的动态分配。在此描述了用于高效地动态分配虚拟机资源的系统和方法。至少一些说明性实施例包括一种方法,其包括在真实计算机系统(100)上执行虚拟机软件(300),所述虚拟机软件包括管理程序(200)和虚拟机,所述虚拟机包括多个虚拟设备(220,221);把所述多个虚拟设备当中的每一个与所述真实计算机系统(100)内的真实设备(110)的唯一子集相关联;所述管理程序(200)发送针对弹出的请求;虚拟设备资源对象(330)把所述针对弹出的请求转发到虚拟设备资源驱动器(315);以及所述虚拟设备资源驱动器(315)导致单独弹出所述虚拟设备(220,221)当中的每一个。
文档编号G06F9/50GK101425022SQ200810173958
公开日2009年5月6日 申请日期2008年10月31日 优先权日2007年10月31日
发明者T·卡尼 申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1