利用虚拟固件的虚拟机使用数据收集的制作方法

文档序号:11590066阅读:154来源:国知局

本发明的实施例涉及虚拟机,更具体地,涉及利用虚拟固件的虚拟机使用数据收集。



背景技术:

监视虚拟机(vm)的使用数据常常是有用的。例如,vm可以由客户使用,客户为使用vm向服务供应商付费。服务供应商常常根据对vm的特定使用来向客户收费。该使用例如可以包括中央处理单元(cpu)利用率、存储器利用率和网络利用率。进一步地,服务供应商能够向客户提供关于vm正在如何被使用的知识的改进的服务。

这样,vm常常被配置为收集使用数据,其中使用数据描述其自身对可用资源的使用。vm然后可以将该使用数据报告给其所运行于的主机。



技术实现要素:

根据本公开的一个实施例,一种计算机实现的用于收集使用数据的方法包括,由计算机处理器至少部分地在虚拟机的虚拟硬件层中运行虚拟固件。在该虚拟固件自虚拟机的内核子系统接收描述虚拟机的使用数据。将使用数据从虚拟固件发送到托管该虚拟机的主机上的收集器。

在另一个实施例中,一种用于收集使用数据的系统包括具有计算机可读指令的存储器以及用于执行该计算机可读指令的一个或多个处理器。计算机可读指令包括至少部分地在虚拟机的虚拟硬件层中运行虚拟固件。进一步地,根据该计算机可读指令,在该虚拟固件自虚拟机的内核子系统接收描述虚拟机的使用数据。将使用数据从虚拟固件发送到托管该虚拟机的主机上的收集器。

在又一个实施例中,一种用于收集使用数据的计算机程序产品包括其中包含有程序指令的计算机可读存储介质。该程序指令可由处理器执行,使得该处理器实现一个方法。该方法包括至少部分地在虚拟机的虚拟硬件层中运行虚拟固件。进一步地,根据该方法,在该虚拟固件自虚拟机的内核子系统接收描述虚拟机的使用数据。将使用数据从虚拟固件发送到托管该虚拟机的主机上的收集器。

通过本发明的技术实现了额外的特征和优点。这里详细描述了本发明的其他实施例和方面,这些其他实施例和方面也被认为是所请求保护的发明的一部分。参考下面的描述和附图可以更好地理解本发明的优点和特征。

附图说明

本发明的主题已经在说明书的权利要求书中特别指出和请求保护,本发明的前述和其他特征以及优点将在下面结合附图所进行的详细描述中变得明显,在附图中:

图1是根据本公开的一些实施例的收集系统的方框图;

图2是根据本公开的一些实施例的显示虚拟固件的加载的流程图;

图3是根据本公开的一些实施例的收集系统的另一个方框图;

图4是根据本公开的一些实施例的用于收集虚拟机的使用数据的方法的流程图;以及

图5是根据本公开的一些实施例的用于实现收集系统的一些或全部方面的计算机系统的方框图。

具体实施方式

虽然虚拟机(vm)在常规上能够收集使用数据并向其主机进行报告,由常规方法收集的使用数据是不可靠的。例如,客户对于其vm最感兴趣的可能是在vm使用数据中报告资源的低使用率,因为低使用率可能与低成本相关。由于客户控制着vm,因此客户很容易侵入vm内的收集机制来报告不准确的使用数据。

然而,一些类型的使用数据难以或者不可能从vm外部进行收集。例如,从vm外部,主机不能监视虚拟存储器使用、java虚拟机垃圾收集统计以及应用程序响应时间。另外,当物理的中央处理单元(cpu)以多个虚拟cpu的形式在vm中共享时,主机会发现很难确定每个不同vm的cpu利用率。进一步地,当这种收集需要使用vm内部的代理出于收集的目的来侵入式地改变vm映像时,主机端对使用数据的收集会变得不准确。

根据本公开的一些实施例,收集系统包括vm内部运行的虚拟固件,其中,虚拟固件收集vm的使用数据,并将该使用数据报告给主机,其中,虚拟固件是受保护的,除非通过特定组件,否则不能由vm访问。这样,收集系统能够收集在vm外部不能访问的使用数据,并能够提供可靠的信息。

图1是根据本公开的一些实施例的收集系统100的方框图。如图所示,vm110可以在主机130的管理程序(hypervisor)120之上运行。在一些实施例中,虚拟固件170可以安装在vm110上,可以收集描述vm110的状态的使用数据。虚拟固件170可以将使用数据报告给主机130上的收集器180。进一步地,在一些实施例中,由虚拟固件170收集的使用数据可在用户工具168上查看,该用户工具168可以由被授权人员访问。

如图所示,vm110可以包括三层或三组组件,其包括虚拟硬件140、内核150和用户空间160。vm110的虚拟硬件140可以包括中央处理单元(cpu)和存储器,这二者都可以是虚拟组件。和常规的内核一样,vm110的内核150可以是操作系统的一部分,可以在用户空间160和虚拟硬件140之间翻译指令。在一些实施例中,内核150可以包括一个或多个内核子系统155,每个内核子系统可以负责一组分配的内核任务。另外,在一些例子中,一个或多个应用程序可以运行在用户空间160。

在一些实施例中,虚拟硬件140可以进一步包括虚拟固件170,虚拟固件170可以包括代码174和缓存器178。代码174可以是包含在虚拟固件170中的程序代码,并在内核150中本地执行,以提供虚拟固件170的操作,其操作将在下面讨论。缓存器178可以是用于存储所收集的使用数据的存储器空间。

在vm110内部,虚拟硬件140可以保持比内核150更高级别的信任,而内核150可以保持比用户空间160更高级别的信任。由于与虚拟硬件140运行在同一抽象层,虚拟固件170可以运行在内核150之下,因此比内核150和用户空间160具有更高信任级别。虚拟固件170因而可以从一个或多个内核子系统155收集使用数据,该内核子系统155可以访问与用户空间160中的应用程序相关的使用数据。例如,在一些实施例中,虚拟固件170可以通过监视内核子系统155来收集该使用数据,而在另一些实施例中,内核子系统155可以向虚拟固件170主动报告。

虚拟固件170可以将vm110的使用数据发送给主机130上的收集器180,在这里,服务供应商或其他主体可以根据需要访问该使用数据。在一些实施例中,收集器180可以是诸如openstack中ceilometer的数据收集系统。

虚拟固件170可以被配置为以vm110的用户空间160中的用户工具168的形式显示一些或全部使用数据。通过这个用户工具168,vm110的用户可以查看使用数据。在一些实施例中,用户工具168可以以proc文件系统的方式操作,其中proc文件系统是一种用于向内核数据结构提供接口的机制。用户工具168可以受保护,使得用户需要输入证书来查看使用数据。

图2是根据本公开的一些实施例显示虚拟固件170的加载的流程图。为了确保该虚拟固件170不会被篡改,收集系统100的一些实施例可以使用虚拟可信平台模块(vtpm)190来保护虚拟固件170。

vtpm190类似于常规的可信平台模块(tpm),其提供密码密钥以确保过程保持可信。更具体地,例如,在生成vm110时,管理程序120可以将vtpm190加载到vm110的虚拟硬件140中。当vm110的操作系统(os)加载器220加载vm110的操作系统210时,os加载器也将虚拟固件170插入到虚拟硬件140中。vtpm190可以监视os210的加载,以确保虚拟固件170以可信方式实现与内核150的通信。

用于度量的核心可信根(crtm)230可以是可执行代码,其是在生成vm110时执行的引导组件。在一些实施例中,crtm位于vtpm190的安全存储器中。然而,在另一些实施例中,crtm可以位于vm110的固件中(例如bios),从而减小vtpm190的虚拟硬件成本。

在使用可信计算模型时,vtpm190可以作为可信根。然而,vtpm190可以是无源组件,使得度量和收集操作实际上在其他地方由来自不同层的引导组件执行(例如,crtm230,os加载器220)。crtm230与vtpm190一起可以形成用于提供安全的虚拟固件170的可信构造块(tbb)240。

如上面所讨论的,tbb240可以执行os加载器220,os加载器220可以加载虚拟固件170并执行os210。以这种方式,可以以可信方式将虚拟固件放置于位置上。

图3是根据本公开的一些实施例的收集系统100的另一个方框图。如图所示,除了参考图1所描述的组件之外,收集系统100还进一步包括代理310,其可以与一个或多个内核子系统155和虚拟固件170进行通信。

代理310可以是虚拟固件170的代码174的拷贝。在一些实施例中,代码174不能从虚拟固件170内部执行,因为内核150会将代码174看作数据段。在这种情况下,代码174可以被复制到vm110的主存储器,并构造成代码的要以内核150内的代理310的形式执行的可执行段。代理310然后可以根据需要从内核子系统155收集使用数据。代理310可以将使用数据存储在虚拟固件170的缓冲器178中。

图4是根据本公开的一些实施例的用于收集vm110的使用数据的方法的流程图。如图所示,在方框410,在生成vm110时,vtpm190可以作为虚拟硬件140的一部分提供。在方框420,在vtpm监视下,os加载器220可以在vm110上加载os210,还可以将虚拟固件170加载到虚拟硬件140中。在方框430,代理310可以在内核150内执行虚拟硬件170的代码174。在方框440,代理310可以收集关于vm110的使用数据。在方框450,虚拟固件170可以将使用数据发送到主机130上的收集器180以供收集。

图5示出了根据一些实施例的在实施收集系统100或方法400中使用的计算机系统500的方框图。本文中所描述的收集系统100和方法400可以以硬件、软件(例如,固件)、或者它们的组合来实现。在一些实施例中,所描述的方法可至少部分地在硬件中实现,可以是一个专用或通用计算机系统500、例如个人计算机、工作站、小型机或大型计算机的微处理器的一部分。例如,而非限制性的,在其上运行vm110的主机130可以是计算机系统500。

在一些实施例中,如图5所示,计算机系统500包括处理器505、耦合到存储器控制器515的存储器510、以及一个或多个输入设备545和/或输出设备540,诸如通过本地i/o控制器535通信地耦合的外围设备。这些设备540和545例如可以包括,打印机,扫描仪,麦克风等。输入设备、如常规的键盘550和鼠标555可耦合到i/o控制器535。如本领域所公知的,i/o控制器535例如可以是一个或多个总线或其他有线或无线连接。i/o控制器535可以具有使能通信的附加的元件,如控制器、缓冲器(高速缓存)、驱动器、中继器和接收器,这里为了简化而未示出。

i/o设备540、545还可以包括输入和输出通信设备,例如磁盘和磁带存储器、网络接口卡(nic)或调制器/解调器(用于访问其他文件、设备、系统或网络)、射频(rf)或其它收发机、电话接口、桥接器、路由器等。

处理器505是用于执行硬件指令或软件、特别是那些存储在存储器510中的硬件指令或软件的硬件设备。处理器505可以是定制的或市售的处理器、中央处理单元(cpu)、与计算机系统500相关联的几个处理器中的辅助处理器、基于半导体的微处理器(以微芯片或芯片组的形式)、宏处理器或用于执行指令的其他装置。处理器505包括高速缓存570,其可包括、但不限于用于加快可执行指令预取的指令高速缓冲存储器、用于加速数据读取和存储的数据高速缓存、以及用于为可执行指令和数据加速虚拟到物理的地址转换的翻译后备缓冲器(tlb)。高速缓存570可以被组织为多个高速缓存级别的层次结构(l1,l2,等等)。

存储器510可以包括易失性存储器元件(例如,随机存取存储器ram,如dram、sram、sdram等)和非易失性存储器元件(例如,rom、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁带、只读存储器光盘(cd-rom)、磁盘、软盘、盒式磁带、磁带盒或类似物,等等)或其组合。而且,存储器510可以包括电、磁、光或其他类型的存储介质。需要注意的是,存储器510可具有分布式体系结构,其中各种部件彼此远离,但可由处理器505访问。

在存储器510中的指令可以包括一个或多个独立的程序,其中每个程序包括用于执行逻辑功能的可执行指令的有序列表。在图5的例子中,在存储器510中的指令包括一个合适的操作系统511,操作系统511基本上可以控制其它计算机程序的执行并提供调度、输入-输出控制、文件和数据管理、存储器管理、以及通信控制和相关服务。

例如包括用于处理器505的指令或其他可检索信息的附加数据可存储在存储设备520上,其可以是一个诸如硬盘驱动器或固态驱动器的存储设备。在存储器510或存储设备520中所存储的指令可以包括那些使处理器执行本公开的收集系统100和方法400的一个或多个方面。

计算机系统500还可以包括耦合到显示器530的显示控制器525。在一些实施例中,计算机系统500还可以包括用于耦合到网络565的网络接口560。网络565可以是在计算机系统500和外部服务器、客户端等之间通过宽带连接通信的基于ip的网络。网络565在计算机系统500和外部系统之间发送和接收数据。在一些实施例中,网络565可以是由服务提供商管理的受管理ip网络。网络565可以以无线方式实现,例如使用无线协议和技术,例如wifi,wimax等。网络565还可以是一个分组交换网络,例如局域网、广域网、城域网域网、因特网,或其它类似类型的网络环境。网络565可以是固定无线网络、无线局域网(lan)、无线广域网(wan)、个人区域网(pan)、虚拟专用网(vpn)、内联网或其它合适的网络系统,其可以包括用于接收和发送信号的设备。

根据本公开的收集系统和方法可以全部或者部分地实现在计算机程序产品或者如图5所示的计算机系统500中。

一些实施例的技术效果和益处包括以安全方式从vm110内部度量使用数据的能力。该使用数据可以被发送给主机以供收集并用于各种目的。

本文所用的术语仅用于描述具体实施方案的目的,并非意在限制本发明的。如本文中所使用的,单数形式“一”,“一个”和“该”也意图包括复数形式,除非上下文另外明确指出。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指示所陈述的特征、整数、步骤、操作、元件和/或组件的存在,但不排除存在或附加一个或多个其它特征、整数、步骤、操作、元件、组件和/或其组合。

在下面的权利要求书中的所有手段或步骤加功能元件的相应的结构、材料、动作及其等同物旨在包括用于结合其他所特别请求保护的元件来执行这些功能的任何结构、材料或行为。本发明的描述是出于说明和描述的目的,但并不意图穷尽或以所公开的形式限制本发明。许多修改和变化对于本领域的普通技术人员是显而易见的,而不脱离本发明的范围和精神。对于实施例的选择和描述是为了最好地解释本发明的原理和实际应用,使得本领域的技术人员本发明的适合于所构想的特定使用的具有各种修改的各种实施例。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

出于说明和描述的目的给出了对本发明的描述,但所述描述并非旨在是穷举的或是将本发明限于所公开的形式。对于所属技术领域的普通技术人员来说,许多修改和变化都将是显而易见的,而不脱离本发明的范围和精神。这里所使用的术语的选择旨在最佳地解释实施例的原理、实际应用或对于市场上的各种工艺的技术改进,或使得所属技术领域的其他普通技术人员能够理解这里所公开的实施例。

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