根据用户指定的虚拟机指标分配虚拟机的制作方法

文档序号:6425522阅读:247来源:国知局
专利名称:根据用户指定的虚拟机指标分配虚拟机的制作方法
技术领域
本申请总的涉及给用户分配虚拟机。本申请尤其涉及基于分配给具体用户的虚拟机指标来分配虚拟机。
背景技术
在许多系统中,与虚拟化系统关联的性能指标可以被存储或与一个或多个虚拟机相关联。当用户初始化这些虚拟机中的一个时,作出关于在哪里执行虚拟机的确定。在许多实例中,这个确定是部分地基于所存储的或与虚拟机关联的性能指标而作出的。因此,在这个实例以及许多其他系统中,虚拟化系统部分地根据与虚拟机关联的性能指标确定在哪里执行虚拟机。关于在哪里执行虚拟机的决定有时是基于那个虚拟机的性能而作出的。这些性能指标可包括处理器利用率、内存利用率、表示计算资源的平均利用率的值、带宽利用率等。 在许多实例中,这些指标不仅是虚拟机性能而且还是用户行为的结果。当选择机器来执行虚拟机时,可以作这样的假设这些性能指标表示虚拟机将施加在机器上的负载,所述机器被选择用于执行虚拟机。在池化的(pooled)虚拟桌面架构(VDI)环境中,可以从虚拟机池或组给用户分配虚拟机。因此施加在执行虚拟机的机器上的负载是登录到虚拟机上的用户和虚拟机所进行的活动的共同的结果。现在需要的是不仅考虑虚拟机的利用率指标,而且更具体考虑当利用率指标被记录时哪个用户登录到虚拟机的系统。针对具体用户所记录的利用率指标可被用于确定用户可能施加在虚拟机上的负载量。可以根据施加在虚拟机上的可能的负载量来给用户分配虚拟机。

发明内容
在一个方面,此处所描述的是用于确定在哪里执行虚拟机或如何根据与用户和被分配给用户的虚拟机相关联的指标来配置虚拟机的方法和系统。在许多虚拟化系统中,部分地根据虚拟机所关联的历史的性能指标确定在哪里执行虚拟机以及如何配置虚拟机。 在从虚拟机池或组中给用户分配虚拟机的环境中,由虚拟机施加在物理计算机器上的工作负载可能不仅是虚拟机而且还是访问虚拟机的用户的结果。此处所描述的方法和系统通过为虚拟机选择执行环境以及基于用户的和被分配给该用户的虚拟机的历史的性能指标配置该虚拟机来解决这个问题。在又一个方面,此处所描述的是用于根据用户的分类给用户分配虚拟机的方法和系统,其中用户的分类是根据历史的第一用户会话信息和虚拟机指标来确定的。在计算机器上执行的会话监控器接收第一用户会话终止的通知,其中第一用户会话访问第一虚拟机。响应于第一用户会话的终止,会话监控器记录第一用户会话信息。接着可以从虚拟机性能监控器获得用于第一虚拟机的虚拟机指标。然后,性能监控器使用第一用户会话信息和第一虚拟机指标来更新第一用户工作负载简档(profile)。第一用户工作负载简档对应于第一用户会话的第一用户。接着,根据第一用户工作负载简档来对第一用户进行分类。然后虚拟桌面架构可接收来自第一用户的对虚拟机的请求。响应于接收这个请求,根据第一用户的分类给第一用户分配虚拟机。在一些实施例中,会话监控器在虚拟桌面架构之外执行。在其他实施例中,根据第一用户工作负载简档,第一用户可以被分类为重度用户、 中度用户或轻度用户。在一些实施例中,性能监控器可将所记录的第一用户会话信息映射到所获得的第一虚拟机指标。在其他实施例中,第一用户的分类可被存储在存储仓库中。在一个实施例中,在虚拟桌面架构之外的计算机器上执行的分类模块可以执行对第一用户的分类。在其他实施例中,会话监控器接收第二用户会话终止的通知,其中第二用户会话访问第二虚拟机。接着,会话监控器可记录第二用户会话信息,以及可获得用于第二虚拟机的虚拟机指标。然后,性能监控器使用第二用户会话信息和第二虚拟机指标来更新第二用户工作负载简档。第二用户工作负载简档可对应于第二用户会话的第二用户。在一些实施例中,分类模块可使用第二用户工作负载简档来根据第二用户工作负载简档对第二用户进行分类。在一些实施例中,虚拟桌面架构可通过从虚拟机管理器请求虚拟机来响应第一用户对虚拟机的请求。虚拟机管理器响应于虚拟桌面架构所发出的请求,可根据第一用户的分类给第一用户分配虚拟机。在一些实施例中,分配虚拟机可包括根据第一用户的分类来配置虚拟机。在其他实施例中,分配虚拟机可包括根据第一用户的分类来选择虚拟机。


在下面的附图描述了此处描述的系统和方法的某些示意性实施例,其中相同的附图标记涉及相同的元件。这些所描述的实施例应被理解为对所公开的方法和系统的示意性说明,而不是对于本申请的任何限制。图IA描述了提供对可执行应用程序的计算设备的远程访问的网络环境的实施例;图IB和图IC是描述计算设备的实施例的框图;图2A和图2B是描述虚拟化环境的实施例的框图;图3是描述虚拟化环境和虚拟桌面架构环境的实施例的框图;图4是描述用于记录虚拟机利用率指标的方法的实施例的流程图;图5A和图5B是描述用于给用户分配虚拟机的方法的实施例的流程图;图6是描述更新用户工作负载简档的实施例的流程图。
具体实施例方式图IA描述了计算环境101的一个实施例,该计算环境包括与一个或多个服务器 106A-106N(总的称为“服务器106”)通信的一个或多个客户机102A_102N(总的称为“客户机102”)。网络被安装在客户机102与服务器106之间。在一个实施例中,计算环境101可包括安装在服务器106和客户机102之间的设备。这个设备可管理客户机/服务器连接,并且在一些情况下可在多个后端服务器之间负载平衡客户机连接。客户机102在一些实施例中可被认为是单个客户机102或客户机102的一个组, 而服务器106可被认为是单个服务器106或服务器106的一个组。在一个实施例中,单个客户机102与不只一个服务器106通信,而在另一个实施例中,单个服务器106与不只一个客户机102通信。在另一个实施例中,单个客户机102与单个服务器106通信。在一些实施例中,客户机102可被称为下面术语中的任何一个客户机102、客户端、客户计算机、客户设备、客户计算设备、本地机器、远程机器、客户节点、端点、端节点或第二机器。在一些实施例中,服务器106可被称为下列术语中的任何一个服务器、本地机器、远程机器、服务器群、主计算设备或第一机器。在一个实施例中,客户机102可以是虚拟机102C。虚拟机102C可以是任何虚拟机,而在一些实施例中虚拟机102C可以是由XenSolution、Citrix Systems、IBM、VMware公司开发的管理程序(hypervisor)或任何其他管理程序管理的任何虚拟机。在其他实施例中,虚拟机102C可以由任何管理程序管理,而在其他实施例中,虚拟机102C可由在服务器 106上执行的管理程序或在客户机102上执行的管理程序管理。在一些实施例中,客户机102可以执行、操作或者以其它方式提供应用,该应用可为下列应用中的任何一个软件、程序、可执行指令、虚拟机、管理程序、web浏览器、基于 web的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、Java小程序、与类似软IP电话的网络电话(VoIP)通信相关的软件、流式传输视频和/或音频的应用、便于实时数据通信的应用、HTTP客户机、FTP客户机、Oscar客户机、Telnet客户机或可执行指令的任何其他集合。其他实施例中包括显示由在服务器106或其他位于远程的机器上远程执行的应用所产生的应用输出的客户设备102。在这些实施例中,客户设备102可以在应用窗口、浏览器或其他输出窗口中显示应用输出。在一个实施例中,应用是桌面,而在其他实施例中,应用是产生桌面的应用。在一些实施例中,服务器106执行远程呈现客户端或其他客户端或程序,这些客户端或程序使用瘦客户端或远程显示协议来捕获由在服务器106上执行的应用产生的显示输出并且将应用显示输出传输到远程客户机102。瘦客户端或远程显示协议可以是下列协议的任何一个由位于佛罗里达州Ft. Lauderdale的Citrix Systems公司制造的独立计算架构(ICA)协议;或由位于Washington,Redmond的Microsoft (微软)公司制造的远程桌面协议(RDP)。计算环境可包括不只一个服务器106A-106N,这样的服务器106A-106N逻辑上一起聚合到服务器群106中。服务器群106可包括地理上分散并且逻辑上一起聚合到服务器群106中的服务器106,或者互相之间位置接近的并且逻辑上一起聚合到服务器群106中的服务器106。在一些实施例中,服务器群106中地理上分散的服务器106A-106N可使用 WAN、MAN或LAN通信,其中不同地理区域可以被表征为不同大陆、大陆的不同地区、不同国家、不同州、不同城市、不同校园、不同房间、或前述地理位置的任何组合。在一些实施例中, 服务器群106可以作为单个实体被管理,而在其它实施例中,服务器群106可包括多个服务器群106。在一些实施例中,服务器群106可包括执行实质上类似的类型的操作系统平台(例如,由 Washington,Redmond 的 Microsoft 公司制造的 WINDOWS NT,Unix,Linux 或 SNOW LEOPARD)的服务器106。在其他实施例中,服务器群106可包括执行第一类型操作系统平台的第一组服务器106和执行第二类型操作系统平台的第二组服务器106。在其他实施例中,服务器群106可包括执行不同类型操作系统平台的服务器106。在一些实施例中,服务器106可为任何服务器类型。在其他实施例中,服务器106 可以是下列服务器类型的任何一个文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器、 防火墙、web服务器、应用服务器或主应用服务器、执行活动目录的服务器106、或者执行提供防火墙功能、应用功能或负载平衡功能的应用加速程序的服务器106。在一些实施例中, 服务器106可以是包含远程认证拨入用户服务的RADIUS服务器。在服务器106包括设备的实施例中,服务器106可以是由下列制造商的任何一个制造的设备=Citrix应用网络组、 Silver Peak Systems 公司、RiVerbed Thechnology 公司、F5Networks 公司、或 Juniper Networks公司。一些实施例中包括第一服务器106A,其接收来自客户机102的请求、转发该请求到的第二服务器106B,以及使用来自第二服务器106B的响应来对客户机102所产生的请求进行响应。第一服务器106A可获得客户机102可用的应用列表,以及与寄载应用列表中所识别的应用的应用服务器106相关的地址信息。第一服务器106A还可使用web接口对客户机请求提供响应,并直接与客户机102通信以向客户机102提供对所识别应用的访问ο在一些实施例中,服务器106可执行下列应用中的任何一个使用瘦客户端协议传输应用显示数据到客户机的瘦客户端应用、远程显示呈现应用、Citrix Systems公司的 CITRIX ACCESS SUITE 的任何部分,诸如 METAFRAM 或者 CITRIX PRESENTATION SERVER ; Microsoft公司制造的MICROSOFT WINDOWS终端服务或由Citrix Systems公司开发的ICA 客户端。另一个实施例中包括为诸如下列应用服务器的服务器106 提供电子邮件服务的邮件服务器,例如由Microsoft公司制造的MICROSOFT EXCHANGE ;web或hternet服务器、 桌面共享服务器,协同服务器或任何其他类型的应用服务器。在其他实施例中服务器106 执行下列类型的所寄载的服务器应用的任何一个=CitrixOnline Division公司提供的 G0T0MEETING、位于加利福尼亚州Santa Clara的WebEx公司提供的TOBEX,或者Microsoft 公司提供的 Microsoft Office LIVE MEETING。在一些实施例中,客户机102可以是寻求对服务器106提供的资源进行访问的客户机节点。在其他实施例中,服务器106可为客户机102或客户机节点提供对所寄载的资源的访问。在一些实施例中,服务器106作为主节点运行,这样它可与一个或多个客户机102 或服务器106通信。在一些实施例中,主节点可识别并且向一个或多个客户机102或服务器106提供与寄载所请求的应用的服务器106相关的地址信息。在其他实施例中,主节点可以是服务器群106、客户机102、客户机节点102的集群,或者设备。一个或多个客户机102和/或一个或多个服务器106可以在被安装在计算环境 101中的机器和设备之间的网络104上传输数据。网络104可包括一个或多个子网,且可被安装在被包含在计算环境101中的客户机102、服务器106、计算机器和设备的任何组合之间。在一些实施例中网络104可以是局域网(LAN)、城域网(MAN)、广域网(WAN),包括位于客户机102和服务器106之间的多个子网104的主网104、具有专用子网104的主公共网104、具有公共子网104的主专用网104或者具有专用子网104的主专用网104。在进一步的实施例中网络104可以是任何的下列网络类型点对点网络、广播网络、电信网络、数据通信网络、计算机网络、ATM(异步传输模式)网络、SONET(同步光纤网络)网络、SDH(同步数字体系)网络、无线网络、有线网络或包括诸如红外信道或者卫星频带无线链路的网络 104。网络104的拓扑在不同的实施例中可以不同,可能的网络拓扑包括总线型网络拓扑、 星型网络拓扑、环型网络拓扑、基于中继器的网络拓扑或者分层星型网络拓扑。额外的实施例中包括使用协议在移动设备间通信的移动电话网络的网络104,其中,协议可以是下列协议的任何一个AMPS、TDMA, CDMA、GSM、GPRS UMTS或可在移动设备间传输数据的其他任何协议。图IB所示是计算设备100的实施例,其中如图IA所示的客户机102和服务器 106可以被部署为和/或被执行在此处所描述和图示的计算设备100的任何实施例上。被包含在计算设备100中的系统总线150可以和下列组件通信中央处理单元121、主存储器 122、存储装置128、输入输出(I/O)控制器123、显示设备124A-1MN、安装设备116和网络接口 118。在一个实施例中存储装置1 包括操作系统、软件程序和客户机代理120。在一些实施例中,I/O控制器123还连接到键盘1 和指示设备127。其他实施例中可包括连接到不只一个输入输出设备130A-130N的I/O控制器123。图IC描述了计算设备100的一个实施例,其中如图IA所示的客户机102和服务器 106可以被部署为和/或被执行在此处所描述和图示的计算设备100的任何实施例上。被包含在计算设备100中的系统总线150可以和下列组件通信桥170和第一 I/O设备130A。 在另一个实施例中,桥170还和主中央处理单元121通信,其中中央处理单元121可进一步与第二 I/O设备130B、主存储器122和高速缓冲存储器140通信。I/O端口、存储器端口 103和主处理器被包含在中央处理单元121中。在计算设备100的实施例中可包括被下列组件配置的任何一个表征的中央处理单元121 响应并处理从主存储器单元122取出的指令的逻辑电路;微处理器单元,诸如由htel公司制造的微处理器单元;由Motorola公司制造的微处理器单元;由加利福尼亚州Santa Clara的Transmeta公司制造的微处理器单元;诸如国际商业机器公 W] (International Bussiness Machines) ^it W RS/6000 ^hS^I ; Advanced Micro Devices公司制造的处理器;或逻辑电路的任何其他组合。中央处理单元122的其他实施例可包括下列任何组合微处理器、微控制器、具有单处理核的中央处理单元、具有两个处理核的中央处理单元或具有不只一个处理核的中央处理单元。尽管图IC描述了包括单个中央处理单元121的计算设备100,但在一些实施例中计算设备100可包括一个或多个处理单元121。在这些实施例中,计算设备100可存储和执行固件或其他可执行指令,这些固件或指令在被执行时,指引一个或多个处理单元121来同时执行指令或同时在一个数据片上执行指令。在其他实施例中,计算设备100可存储和执行固件或其他可执行指令,这些固件或指令在被执行时,指引一个或多个处理单元的每个执行一组指令的一部分。例如每个处理单元121可被指示执行程序的一部分或者程序中的特定模块。在一些实施例中,处理单元121可包括一个或多个处理核。例如处理单元121可有两个核、四个核、8个核等。在一个实施例中,处理单元121可包括一个或多个并行处理核。在一些实施例中处理单元121的处理核可访问作为全局地址空间的可用内存、或在其他实施例中,计算设备100的存储器可被分段并分配到处理单元121的特定核。在一个实施例中,计算设备100中的一个或多个处理核或处理器的每个可访问本地存储器。在又一个实施例中,计算设备100的存储器可在一个或多个处理器或处理核之间共享,而其他存储器可被特定处理器或处理器子集访问。在计算设备100包括不只一个处理单元的实施例中,多个处理单元可被包含在单个集成电路(IC)中。在一些实施例中,这些多个处理器可通过内部高速总线连接在一起,该总线可被称为元件互联总线。在计算设备100包括一个或多个处理单元121,或处理单元121包括一个或多个处理核的实施例中,处理器可同时在多片数据上执行单个指令(SIMD),或在其他实施例中处理器可同时在多片数据上执行多个指令(MIMD)。在一些实施例中,计算设备100可包括任意数量的SIMD和MIMD处理器。在一些实施例中,计算设备100可包括图像处理器或图形处理单元(未示出)。图形处理单元可包括软件和硬件的任何组合,并且还可输入图形数据和图形指令、从所输入的数据和指令渲染图形和输出所渲染的图形。在一些实施例中,图形处理单元可被包含在处理单元121的内部。在其他实施例中,计算设备100可包括一个或多个处理单元121,其中至少一个处理单元121被专用于处理和渲染图形。在计算设备100的一个实施例中包括通过也称为背侧总线的第二总线与高速缓冲存储器140通信的中央处理单元,而在计算设备100的又一个实施例中包括使用系统总线150与高速缓冲存储器140通信的中央处理单元121。在一些实施例中,本地系统总线 150也被中央处理单元所使用来与不只一种类型的I/O设备130A-130N进行通信。在一些实施例中,本地系统总线150可以是下列类型总线的任何一个VESA VL总线、ISA总线、 EISA总线、微通道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。 计算设备100的其他实施例中包括为与中央处理单元121通信的视频显示器124的I/O设备130A-130N。在计算设备100的其他形式中包括通过下列连接的任何一个连接到I/O设备130A-130N的处理器121,这些连接如下。超传输(HyperTransport)、快速I/O或者 InfiniBand.计算设备100的进一步的实施例包括处理器121,该处理器使用本地互连总线与一个I/O设备130A进行通信,并使用直接连接与第二 I/O设备130B进行通信。在一些实施例中,计算设备100包括主存储器单元122和高速缓冲存储器140。 高速缓冲存储器140可以是任何存储器类型,且在一些实施例中可以是下列类型存储器的任何一个SRAM、BSRAM或EDRAM。其他实施例中包括的高速缓冲存储器140和主存储器单元122,可以是下列类型存储器的任何一个静态随机访问存储器(SRAM)、Burst (脉冲串)SRAM或SynchBurst SRAM (BSRAM)、动态随机访问存储器DRAM、快速页模式DRAM (FPM DRAM)、增强 DRAM (EDRAM)、扩展数据输出 RAM (EDO RAM)、扩展数据输出 DRAM (EDO DRAM)、 脉冲串扩展数据输出 DRAM (BEDO DRAM)、增强型 DRAM (EDRAM)、同步 DRAM (SDRAM)、JEDEC SRAM、PClOO SDRAM、双数据传输率 SDRAM (DDR SDRAM)、增强 SDRAM (ESDRAM)、同步链路 DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)、铁电RAM(FRAM)或任何其他类型的存储器。进一步的实施例包括可通过下列方式访问主存储器122的中央处理单元121,这些方式包括 系统总线150、存储器端口 103、或允许处理器121访问存储器122的其他连接、总线或端
计算设备100的一个实施例支持下列安装设备116的任何一个⑶-ROM驱动器、 ⑶-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB设备、可引导介质、可引导 ⑶、诸如ΚΝ0ΡΡΙΧ 的用于GNU/Linux分发的可引导⑶、硬盘驱动器或适于安装应用或软件的任意其它设备。在一些实施例中应用可包括客户机代理120或客户机代理120的任意部分。计算设备100还可以包括可以为一个或多个硬盘驱动器或者一个或多个独立磁盘冗余阵列的存储设备128,这里存储设备被配置为存储操作系统、软件、程序应用、或者至少客户机代理120的一部分。计算设备100的进一步实施例中包括用作存储设备128的安装设备 116。计算设备100还可包括网络接口 118以通过多种连接,包括但不限于标准电话线路、LAN 或 WAN 链路(例如 802. 11,Tl,T3、56kb、X. 25、SNA、DECNET)、宽带连接(如 ISDN、帧中继、ATM、千兆以太网、SONET上以太网(Ethernet-over-SONET))、无线连接、或上述任意或全部的某个组合,来连接到局域网(LAN)、广域网(WAN)或因特网。使用多种通信协议(例如 TCP/IP、IPX、SPX、NetBIOS、Ethernet、ARCNET、SONET、SDH、光纤分布数据接口 (FDDI)、 RS232、RS485、IEEE802. 1UIEEE802. lla、IEEE802. lib、IEEE802. llg、CDMA、GSM、WiMax 和直接异步连接)也可建立连接。计算设备100的一个形式包括可以通过任意类型和/或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS),或Citrix Systems公司制造的 Gitrix网关协议的隧道协议来与其他计算设备100’通信的网络接口 118。网络接口 118 的形式可以包括内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算设备100连接到能够通信并执行这里所描述的方法和系统的网络的任意其它设备中的任何一个。计算设备100的实施例包括下列1/0设备130A-130N的任何一个键盘126、指示设备127、鼠标、触控板、光笔、轨迹球、话筒、绘图板、视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机、或可执行此处描述的方法和系统的任何其他输入/输出设备。在一些实施例中1/0控制器123可连接多个1/0设备130A-130N以便控制一个或多个1/0设备。1/0设备130A-130N的一些实施例被配置为提供存储或安装介质116,而其他实施例可为接收诸如由Twintech Industry公司制造的设备的USB闪存驱动线的USB存储设备提供通用串行总线(USB)。在其他实施例中1/0设备130可以是系统总线150和外部通信总线, 如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级 HIPPI总线、krialPlus总线、SCI/LAMP总线、光纤信道总线或串行连接的SCSI总线之间的桥。在一些实施例中,计算设备100可以连接多个显示设备124A-1MN,在其他实施例中计算设备100可以连接单个显示设备124,而仍在其他实施例中计算设备100可以连接相同类型或形式的显示设备1MA-124N或不同的类型或形式的显示设备。显示设备 124A-124N的实施例可被如下方式支持和实现一个或多个1/0设备130A-130N、1/0控制器123、1/0设备130A-130N和1/0控制器123的组合、能支持显示设备124A-1MN的硬件和软件的任何组合、任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示设备124A-124N对接、通信、连接或使用显示设备。在一些实施例中,计算设备100可被配置为使用一个或多个显示设备124A-1MN,这些配置包括有多个连接器以与多个显示设备124A-124N对接;多个视频适配器且每个视频适配器与显示设备124A-1MN中的一个或多个连接;有操作系统被配置用于支持多个显示设备124A-124N ;使用被包含在计算设备 100内部的电路和软件来连接并使用多个显示设备124A-1MN ;和在主计算设备100和多个次级计算设备上的执行软件来使主计算设备100能使用次级计算设备的显示设备作为用于主计算设备的显示设备124A-1MN。计算设备100的其它实施例可包括由多个次级计算设备提供的多个显示设备124A-1MN,所述多个显示设备124A-124N通过网络连接到主计算设备100。在一些实施例中,计算设备100可执行任意操作系统,而在其他实施例中,计算设备100可执行下列操作系统的任何一个诸如WINDOWS 3. X、WINDOWS 95、WINDOWS 98、 WINDOWS 2000、WINDOWS NT 3. 51、WINDOWS NT 4. 0、WINDOWS CE、WINDOWS XP 禾口 WINDOWS VISTA的版本的MICROSOFT WINDOWS的操作系统;不同发行版本的Unix和Linux操作系统; 由苹果计算机公司(Apple Computer)出品的MAC OS的任意版本;由国际商业机器公司出品的OS/2 ;任意嵌入式操作系统;任意实时操作系统;任意开源操作系统;任意专有操作系统;任意用于移动计算设备的操作系统,或者任意其它操作系统。在其他实施例中,计算设备100可执行多个操作系统。例如计算设备100可执行PARALLELS或能执行或管理执行第一操作系统的虚拟机的又一个虚拟化平台,而计算设备100执行不同于第一操作系统的第二操作系统。计算设备100可以体现为下列计算设备的任何一个计算工作站、桌面计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话、便携通信设备、媒体播放设备、游戏系统、移动计算设备、上网本、由苹果计算机公司出品的IPOD系列设备、由索尼公司出品的 PLAYSTATION系列设备的任何一个、由Nintendo公司出品的Nintendo系列设备的任何一个;由微软公司出品的XBOX系列设备的任何一个或能够通信并有足够的处理器能力和存储容量以执行此处所述的方法和系统的任意其它类型和/或形式的计算或者电信或媒体设备。在其它实施例中,计算设备100可以是诸如下列移动设备的任何一个的移动设备 JAVA使能(java-enabled)蜂窝电话或个人数据助理(PDA),诸如 i55sr、i58sr,i85s,i88s, i90c,i95cl或imllOO,以上这些均由摩托罗拉公司制造;由Kyocera公司制造的6035或 71;35 ;由Samsung电子有限公司制造的i300或i330 ;由Palm公司出品的Treol80、270、 600、650、680、700p、700w或750智能电话;或具有与设备一致的不同的处理器、操作系统和输入设备的任何计算设备;或能执行此处所述的方法和系统的任何其他移动计算设备。在其他实施例中,计算设备100可以是下列移动计算设备中的任何一个黑莓(BladAenr) 的任一系列,或由Research In Motion Limited公司出品的其他手持设备;由苹果计算机公司出品的iPhone ;Palm Pre ;掌上电脑;掌上电脑电话或任何其他手持移动设备。图2A示出虚拟化环境的一个实施例。被包括在计算设备201中的硬件层可包括一个或多个物理盘204、一个或多个物理设备206、一个或多个物理处理器208和物理存储器216。在一些实施例中,固件212可被存储在物理存储器216的存储器元件中并且由一个或多个物理处理器208执行。计算设备210还可包括被存储在物理存储器216的存储器元件中并且由一个或多个物理处理器208执行的操作系统214。进一步,管理程序202可被储在物理存储器216的存储器元件中并且由一个或多个物理处理器208执行。一个或多个虚拟机232A-C(总称为23 在一个或多个物理处理器208上执行。每个虚拟机232可以有虚拟盘226A-C和虚拟处理器228A-C。在一些实施例中,第一虚拟机232A可在虚拟处理器228A上执行包括工具堆栈224的控制程序220。在其他实施例中,一个或多个虚拟机 232B-C可在虚拟处理器228B-C上执行客户操作系统230A-B。进一步参考图2A,在一个实施例的更多细节中,所描述的虚拟化环境包括Type2 管理程序202,或执行在计算设备201上的操作系统214中的管理程序。在一些实施例中, Type2管理程序在操作系统214环境中执行并且虚拟机在管理程序之上的层次执行。在许多实施例中,Type2管理程序在用户的操作系统的上下文中执行,这样Type2管理程序与用户操作系统进行交互。在一些实施例中,虚拟化环境包括计算设备201。计算设备201可以是任何计算设备,在一些实施例中计算设备201可以是此处描述的任何计算机、设备或计算机器。尽管图 2A示出了单个计算设备201,在一些实施例中由计算设备201存储和执行的模块、程序、虚拟机和命令可以被不只一个计算设备201执行。仍在其他实施例中,计算设备201可以是服务器群。在一个实施例中,计算设备201可包括硬件层210,该硬件层包括与计算设备201 通信的一个或多个硬件。在一些实施例中,硬件层210可包括被包含在计算设备201中的任意硬件。在一些实施例中,硬件层210可包括一个或多个物理盘204、一个或多个物理设备206、一个或多个物理处理器208和存储器216。在一些实施例中,硬件层210可包括一个或多个物理盘204。物理盘204可以是任何硬盘,而在一些实施例中物理盘204可以是此处描述的任何硬盘。在一些实施例中, 硬件层210可包括一个物理盘204。在其他实施例中,硬件层210可包括不只一个物理盘 204。在一些实施例中,计算设备201可与被包含在硬件层210中作为物理盘204的外部硬
盘通^[曰ο在其他实施例中,硬件层210可包括处理器208。在一些实施例中,处理器208可以是任何处理器,而其他实施例中处理器208可以是此处描述的任何处理器。处理器208可包括一个或多个处理核。在其他实施例中计算设备201可包括一个或多个处理器208。在一些实施例中,计算设备201可包括一个或多个不同处理器,例如处理单元、图形处理单元或物理引擎。在一些实施例中,物理设备206可以是被包含在计算设备201中的任何设备。在一些实施例中,物理设备206可以是在计算设备201中所包含的设备和与计算设备201通信的外部设备的任何组合。在一些实施例中,计算设备201可包括一个或多个物理设备206。 物理设备206可以是下列设备中的任何一个网络接口卡、视频卡、键盘、鼠标、输入设备、 显示器、显示设备、扬声器、光驱、存储设备、通用串行总线连接、连接到计算设备201的任何设备、与计算设备201通信的任何设备、打印机、扫描仪或任何其他设备或此处所描述的任何设备。硬件层210还可包括可包含任何类型存储器的物理存储器216。在一些实施例中物理存储器216可包括此处描述的任何存储器类型。物理存储器216可存储数据,以及在一些实施例中可存储一个或多个程序或可执行指令集。图2A所示固件212被存储在计算设备201的物理存储器216中的实施例。被存储在物理存储器216中的程序或可执行指令可由计算设备201上的一个或多个处理器208所执行。
在一些实施例中,固件212可以是可执行指令和硬件的任一组合,其控制与计算设备201通信的硬件或被包含在计算设备201内的硬件。在一些实施例中,固件212可控制硬件层210内的一个或多个硬件。在多个实施例中,固件212可被计算设备201内的一个或多个处理器208所执行。在一些实施例中,固件212可以是诸如基本输入/输出系统 (BIOS)的启动固件。在计算设备201上执行的额外固件212可以与BIOS相接口。在一个实施例中,计算设备201可包括由一个或多个物理处理器208执行的操作系统214。在一些实施例中,操作系统214是能直接访问硬件层210中硬件设备的用户操作系统。操作系统214可以是任何操作系统并且在一些实施例中,操作系统214可以是此处所述的任何操作系统。图2A示出了一个实施例,其中管理程序202在计算设备201上执行的操作系统214的上下文中执行。在这个实施例中,操作系统214可被称为宿主(host) 操作系统214,而其他操作系统可被称为客户(guest)操作系统。客户操作系统可包括执行在虚拟机232上的客户操作系统230A-B,和/或控制程序220。在一些实施例中,计算设备201可包括管理程序202。在一些实施例中,管理程序 202可以是在计算设备201上由处理器208执行以便管理任一数量的虚拟机的程序。管理程序202可以被称为虚拟机监控器,或平台虚拟化软件。在一些实施例中,管理程序202可以是监控执行在计算设备上的虚拟机的可执行指令和硬件的任何组合。尽管图2A示出了包括Type2管理程序202的虚拟化环境,计算设备201可执行任何其他类型的管理程序。例如,计算设备201可以执行包括Typel管理程序202的虚拟化环境。在一些实施例中,计算设备201可执行一个或多个管理程序202。这些一个或多个管理程序202可以是相同类型的管理程序,或在其他实施例中可以是不同类型的管理程序。在一些实施例中,管理程序202可以以模拟直接访问系统资源的操作系统230或控制程序220的任何方式向在虚拟机232上执行的操作系统230或控制程序220提供虚拟资源。系统资源可包括物理设备、物理盘、物理处理器、物理存储器216和被包含在计算设备201硬件层210中的任何其他组件。在这些实施例中,管理程序202可被用来仿真虚拟硬件、划分物理硬件、虚拟化物理硬件和执行提供对计算环境的访问的虚拟机。仍在其他实施例中,管理程序202为在计算设备201上执行的虚拟机232控制处理器调度和存储器分区。管理程序202可包括由位于加利福尼亚州I^lo Alto的VMWare公司制造的管理程序; XEN管理程序,其开发由开源Xen. org团体监督的开源产品;由微软公司提供的HyperV、虚拟服务器和虚拟PC管理程序,或其他。在一些实施例中,计算设备201执行管理程序202, 该管理程序创建客户操作系统可在其上执行的虚拟机平台。在这些实施例中,计算设备201 可被称为宿主服务器。这样的计算设备的例子是由位于佛罗里达州i^ort Lauderdale的 Citrix Systems 公司提供的 XEN SERVER。在一个实施例中,管理程序202创建操作系统230在其中执行的虚拟机 232A-B (总的表示为23 。例如,在这些实施例的一个中,管理程序202加载虚拟机映像以创建虚拟机232。在这些实施例的另一个中,管理程序202在虚拟机232中执行操作系统 230。仍在这些实施例的另一个中,虚拟机232执行操作系统230。在一个实施例中,管理程序202控制至少一个虚拟机232的执行。在又一个实施例中,管理程序202将由计算设备201提供的至少一个硬件资源的抽象提供给至少一个虚拟机232。这个抽象还可被称为计算设备201上可利用的硬件、内存、处理器和其他系统资源的虚拟化或虚拟视图。在一些实施例中,硬件或硬件资源可以是在硬件层210中可利用的任何硬件资源。在其他实施例中,管理程序202控制虚拟机232访问计算设备201中可利用的物理处理器208的方式。控制对物理处理器208的访问可包括确定虚拟机232是否应该访问处理器208以及物理处理器性能如何呈现给虚拟机232。在一些实施例中,计算设备201可寄载或执行一个或多个虚拟机232。虚拟机232 可被称为域、客户和/或DOMAIN U。虚拟机232是一组可执行指令,当其被处理器208执行时,模拟物理计算机的操作,从而虚拟机232可类似物理计算设备执行程序或进程。尽管图2A计算设备201寄载3个虚拟机232的实施例,在其他实施例中,计算设备201可寄载任何数量的虚拟机232。在一些实施例中,管理程序202为每个虚拟机232提供物理硬件、 内存、处理器和对该虚拟机可利用的其他系统资源的唯一的虚拟视图。在一些实施例中,该唯一的虚拟视图可以基于下列的任何一个虚拟机许可;向一个或多个虚拟机标识符应用的策略引擎;访问虚拟机的用户;在虚拟机上执行的应用;被虚拟机访问的网络;或任何其他类似标准。在其他实施例中,管理程序202向每个虚拟机232提供物理硬件、存储器、处理器和对该虚拟机可利用的其他系统资源的基本上类似的虚拟视图。每个虚拟机232可包括虚拟盘226A-C (总称为226)和虚拟处理器228A-C (总称为228)。在一些实施例中,虚拟盘2 是计算设备201的一个或多个物理盘204的虚拟化视图,或计算设备201的一个或多个物理盘204的一部分的虚拟化视图。物理盘204的虚拟化视图可由管理程序202产生、提供和管理。在一些实施例中,管理程序202可为每个虚拟机232提供物理盘204的唯一视图。因此,在这些实施例中,当与其他虚拟盘2 相比较时,被包含在每个虚拟机232中的虚拟盘2 可以是唯一的。虚拟处理器2 可以是计算设备201的一个或多个物理处理器208的虚拟化视图。在一些实施例中,物理处理器208的虚拟化视图可由管理程序202产生、提供和管理。 在一些实施例中,虚拟处理器2 基本上具有至少一个物理处理器208的所有相同特征。在其他实施例中,虚拟处理器2 提供物理处理器208的经修改的视图,从而虚拟处理器228 的至少一些特征可以不同于相应的物理处理器208。控制程序220可执行至少一个应用来管理和配置在虚拟机232以及在一些实施例中计算设备上执行的客户操作系统。在一些实施例中,控制程序220可被称为控制操作系统、控制域、域0或dom 0。在一些实施例中,控制程序220可以是XEN管理程序的DOMAIN 0或DOM 0。控制程序220可以执行管理应用或程序以进一步显示可被管理员用来访问每个虚拟机232的功能和/或管理虚拟机232的用户接口。在一些实施例中,由管理程序产生的用户接口可被用于终止虚拟机232的执行、为虚拟机232分配资源、为虚拟机232指派权限或者管理与虚拟机232相关的安全证书。在一些实施例中,控制程序220可启动新的虚拟机232或终止正在执行的虚拟机232。在其他实施例中,控制程序220可直接访问硬件层210内的硬件和/或资源。仍在又一个实施例中,控制程序220可与在计算设备210上且在虚拟机232的上下文之外执行的程序和应用相接口。类似地,控制程序220可与在虚拟机232的上下文内执行的程序和应用相接口。在一个实施例中,管理程序202可执行虚拟机232内的控制程序220。管理程序 202可创建和启动虚拟机232。在管理程序202执行虚拟机232内的控制程序220的实施例中,该虚拟机232也可被称为控制虚拟机232。仍在又一个实施例中,控制程序220执行在被授权直接访问计算设备201上物理资源的虚拟机232中。在一些实施例中,在第一计算设备201A(未示出)上的控制程序220A(未示出) 可与在第二计算设备201B(未示出)上的控制程序220B(未示出)交换数据。在这些实施例中,第一计算设备201A可远离第二计算设备201B。控制程序220A-B可通过在第一计算设备201A上执行的管理程序202A(未示出)和在第二计算设备201B上执行的管理程序 202B(未示出)之间的通信链路交换数据。通过这条通信链路,计算设备201A-B可交换关于处理器和资源池中其他可利用的物理资源的数据。而且通过管理程序202A-B之间的连接,管理程序202A-B可管理分布在一个或多个计算设备201A-B上的资源池,例如在第一计算设备201A和第二计算设备201B上的可利用资源。管理程序202A-B还可虚拟化这些资源并使它们对于在计算设备201A-B上执行的虚拟机232成为可利用的。在本实施例的又一情况下,单个管理程序202可管理和控制在两个计算设备201A-B上执行的虚拟机232。在一些实施例中,控制程序220与一个或多个客户操作系统230A_B(总称为230) 交互。控制程序220可通过管理程序202与客户操作系统230通信。通过管理程序202,客户操作系统230可请求访问物理盘204、物理处理器208、存储器216、物理设备206和硬件层210中的任何其他组件。仍在其他实施例中,客户操作系统230可通过由管理程序202 建立的通信信道与控制程序220通信,诸如,例如通过由管理程序202使之可用的多个共享内存页。在一些实施例中,控制程序220包括用于与计算设备201所提供的网络硬件直接通信的网络后端驱动程序。在这些实施例中的一个,网络后端驱动程序处理来自至少一个客户操作系统230的至少一个虚拟机请求。在其他实施例中,控制程序220包括用于与计算设备201上存储元件通信的块后端驱动程序。在这些实施例的一个,块后端驱动程序根据从客户操作系统230接收到的至少一个请求从存储元件中读数据和写数据。在又一个实施例中,控制程序220包括工具堆栈224。在又一个实施例中,工具堆栈2M提供用于与管理程序202交互、与其他控制程序220 (例如,在第二计算设备20IB上) 通信或管理计算设备201上的虚拟机232的功能。在又一个实施例中,工具堆栈2M包括用于向虚拟机群的管理员提供改善的管理功能的经定制的应用。在一些实施例中,工具堆栈2M和控制程序220的至少一个包括提供接口的管理API,所述接口用于远程配置和控制在计算设备201上运行的虚拟机。在其他实施例中,控制程序220通过工具堆栈2M与管理程序202通信。在一个实施例中,管理程序202在由管理程序202创建的虚拟机232内执行客户操作系统230。在又一个实施例中,客户操作系统230向计算设备201的用户提供对计算环境中的资源的访问。仍在又一个实施例中,资源包括程序、应用、文档、文件、多个应用、多个文件、可执行程序文件、桌面环境、计算环境和对计算设备201的用户可用的其他资源。仍在又一个实施例中,资源可以通过多种访问方法传送到计算设备201,这些访问方法包括但不限于以下方法传统直接在计算设备201上安装、通过应用流的方法传送到计算设备201 上、将第二计算设备201’上资源的执行所产生的输出数据传送到计算设备201且通过表示层协议传达给计算设备201、将通过在第二计算设备201,上执行的虚拟机执行资源所产生的输出数据传送到计算设备201,或者从连接到计算设备201上的诸如USB设备的可移动存储设备上执行或通过在设备201上执行的虚拟机执行并且产生输出数据。在一些实施例中,计算设备201传输由资源的执行所产生的输出数据到另一个计算设备201’。在一个实施例中,客户操作系统230与该客户操作系统230在其上执行的虚拟机结合在一起,形成意识不到其是虚拟机的完全虚拟化的虚拟机;这样的机器可被称为 "Domain U HVM(硬件虚拟机)虚拟机”。在又一个实施例中,完全虚拟化机包括模拟基本输入/输出系统(BIOS)的软件以便在完全虚拟化机中执行操作系统。仍在又一个实施例中, 完全虚拟化机可包括通过与管理程序202通信提供功能的驱动程序。在这样的实施例中, 驱动程序典型地意识到自己执行在虚拟化的环境中。在又一个实施例中,客户操作系统230与该客户操作系统230在其上所执行的虚拟机结合在一起,形成意识到其是虚拟机的超虚拟化(paravirtualized)的虚拟机;这样的机器可被称为“Domain U PV虚拟机”。在又一个实施例中,超虚拟化机包括完全虚拟化机中所不包含的额外的驱动程序。仍在又一个实施例中,超虚拟化机包括如上所述的被包含在控制程序220中的网络后端驱动程序和块驱动程序。图2B中所示的是说明Typel管理程序202的虚拟化环境的又一个实施例。在计算设备201上执行的管理程序202可以直接访问硬件层210中的硬件和资源。由管理程序 202管理的虚拟机232可以是不安全的虚拟机232B和/或安全的虚拟机232C。尽管图2A 所描述的虚拟化环境中图示了宿主操作系统214,图2B中的虚拟化环境的实施例不执行宿主操作系统。进一步参考图2B,更详细地,虚拟化环境包括Typel管理程序202。在一些实施例中Typel管理程序202执行在“裸金属”上,从而管理程序202可以直接访问计算设备201 上执行的所有应用和进程、计算设备201上所有资源和计算设备201上所有硬件或与计算设备201通信的所有硬件。尽管Type2管理程序202通过宿主操作系统214访问系统资源, Typel管理程序202可直接访问所有系统资源。Typel管理程序202可直接执行在计算设备201的一个或多个物理处理器上,并且可包括存储在物理存储器216中的程序数据。在采用Typel管理程序202配置的虚拟化环境中,宿主操作系统可被一个或多个虚拟机232所执行。这样计算设备201的用户可以指派一个或多个虚拟机232作为该用户的个人机器。这个虚拟机可通过允许用户以与用户通过宿主操作系统214与计算设备201 交互的基本上相同方式来与计算设备201交互来模拟宿主操作系统。虚拟机232可以是不安全的虚拟机232B和安全的虚拟机232C。尽管图2B示出了安全的虚拟机和不安全的虚拟机,有时它们也被称为有特权的和无特权的虚拟机。在一些实施例中,可基于虚拟机与在相同虚拟化环境中执行的其他虚拟机的比较来确定虚拟机的安全。例如,要是第一虚拟机访问资源池则第二虚拟机不访问同样的资源池;当第一虚拟机被认为是安全虚拟机232A时第二虚拟机可被认为是不安全的虚拟机232B。在一些实施例中,虚拟机323访问一个或多个系统资源的能力可使用由控制程序220或管理程序202产生的配置接口来进行配置。在其他实施例中,虚拟机232可承受的访问量可以是查看下列标准的集合的任意的结果访问虚拟机的用户、在虚拟机上执行的一个或多个应用、虚拟机标识符、基于一个或多个因素指派给虚拟机的风险等级或任何其他类似标准。在一些实施例中,不安全虚拟机232B可被阻止访问安全虚拟机232A可以访问的资源、硬件、存储器位置和应用。例如安全虚拟机232C可访问一个或多个公司资源,而不安全虚拟机232B不能访问任何公司资源。
图3所示的是包括在虚拟化环境302执行的计算设备201和执行虚拟桌面架构 (VDI)平台310的计算设备203以及性能监控系统316的系统的一个实施例。在计算设备 201上执行的虚拟化环境302可为此处所描述的任一虚拟化环境。图示的实施例描述了包括管理程序202、控制虚拟机232A、一个或多个附加的虚拟机232B的虚拟化环境302。控制虚拟机232A可包括与包含元数据322A的虚拟盘226A通信的控制程序220,并且控制虚拟机232A可以执行VDI客户端320。附加的虚拟机232B可执行与包含元数据322B的虚拟盘226B通信的客户操作系统230A。计算设备201可包括与管理程序202相接口的硬件层210。另一个计算设备203可包括VDI平台310,该VDI平台310包括一组VDI用户会话 314和虚拟桌面代理350,所述一组VDI用户会话314包含一个或多个用户会话304A-N(此处总称为用户会话304)。在一些实施例中,计算设备203还可执行能够访问一个或多个虚拟机232A-N(此处总称为虚拟机23 的虚拟机池312的虚拟机管理器352.另一个计算设备203还可执行性能监控系统316,所述性能监控系统316包括分类系统318、用户工作负责简档存储仓库322、虚拟机指标存储仓库324、虚拟机性能监控器326、会话记录存储仓库 330和会话监控器332。进一步参考图3,在一个实施例的更多细节中,计算设备201和另一个计算设备 203可以是此处所述的任何计算设备100。在一些实施例中,计算设备201,203可以是服务器106、客户机102或又一类型的计算机器或移动设备。计算设备201,203可以被称为第一计算机、第二计算机、第三计算机等。而且,计算设备201,203可在诸如此处所述的任何网络104的网络上互相通信。正如计算设备201,203可以是此处所述的任何计算机器100,硬件层210也可以是此处所描述的任何硬件层210并且可包括此处描述的任何计算机硬件。执行在计算设备201上的虚拟化环境302可以是此处所描述的任何虚拟化环境。 尤其是,虚拟化环境302可包括图2A所示的管理程序配置或图2B所示的管理程序配置。在一个实施例中,被包含在虚拟化环境302中的管理程序202可以是任何管理程序202,或此处所描述的任何管理程序202。在一些实施例中,管理程序202可以被包含在诸如图2A和 2B所描述的那些配置的任何管理程序配置中。图3示出了包括虚拟化环境302的计算设备302,该虚拟化环境302包括诸如此处所描述的任一控制虚拟机232的控制虚拟机232。控制虚拟机232可执行诸如此处所述的任一控制程序220的控制程序220,并且可包括诸如此处所述的任一虚拟盘226的虚拟盘 226。尽管图3图示了包括控制虚拟机232A和另一个虚拟机232B的虚拟化环境302,在一些实施例中,虚拟化环境302可包括任何数量的虚拟机232。虚拟机232可执行诸如此处所描述的任一客户操作系统230的客户操作系统230,并且可包括诸如此处所述的任一虚拟盘226的虚拟盘226。在一个实施例中,被包含在每个虚拟机232中的虚拟盘2 还可包含元数据 322A-B (总称为元数据32 或与之相关联。虚拟盘2 可包含、存储元数据322或以其他方式与之相关联。在一些实施例中,元数据322可以是任意形式的元数据,例如电子信息、电子文件、标签、图像、文档、文本文件、表格、列表、或包含信息的电子数据的任何其他形式。 元数据322可包含关于虚拟盘226的信息,例如盘的类型、与盘相关联的功能特性、用于盘的压缩方案,或关于盘的任何其他信息。VDI客户端320可由控制虚拟机232执行。在一些实施例中,VDI客户端320可由任何虚拟机执行,而在其他实施例中计算设备201或管理程序202可执行VDI客户端320。 VDI客户端320可以是建立与在远程计算设备203上执行的VDI平台310的通信链路的程序或应用。当与VDI平台310建立链路时,VDI客户端320可流式传输或下载VDI平台310 所管理的资源,并且发送关于其他虚拟机232的VDI平台310信息,诸如虚拟机性能指标或用户活动数据。在一些实施例中,VDI客户端320可与VDI平台310通信来接收虚拟机数据。使用该虚拟机数据,VDI客户端320可从该虚拟机数据实例化、执行或以其他方式产生虚拟机。在一个实施例中,VDI客户端320使用虚通道与远程计算机通信。在其他实施例中,VDI客户端320可使用虚通道与在任何远程计算机上执行的任何客户机或任何应用通信。在一些实施例中,虚通道可以是通信通道或使用ICA协议的任何其他通信链路。尽管图3图示了 VDI客户端320,但在一些实施例中虚拟化环境302可以不包含 VDI客户端320。在一个实施例中,VDI客户端320也可与虚拟机管理器352通信。在一些实施例中,虚拟机管理器352可以是Citrix Systems发布的XENSERVER应用。在又一个实施例中,虚拟化环境302可以不包括VDI客户端320,而是包括控制程序220,所述控制程序 220与在远程计算机上执行的虚拟机部署应用或虚拟机管理器通信。在一些实施例中,在虚拟化环境302中执行的控制虚拟机232A或任何其他虚拟机 232或应用可以与性能监控系统316通信以便传输用于在虚拟化环境302中执行的虚拟机 232的虚拟机性能指标。在一些实施例中,虚拟机性能指标可包括任何下列指标盘的使用量统计;处理器负载统计;带宽使用量统计;平均负载统计;吞吐量统计;关于在任何一个时间周期的计算资源的使用量的统计;执行具体进程所用的时间;虚拟机已使用了多长时间;在任何时间周期计算系统资源的可利用性;以及任何其他有关的虚拟机性能指标。尽管在一些实施例中,控制虚拟机232A直接与性能监控系统316通信,但在其他实施例中,控制虚拟机232A通过虚拟机管理器352与性能监控系统316间接地通信。在其他实施例中,在虚拟化环境302中执行的控制虚拟机232A或任何其他虚拟机 232或应用可以与性能监控系统316直接地或间接地通信以便向性能监控系统316传输所记录的用户会话信息。在一些实施例中,具体用户可访问虚拟化环境302中的一个或多个虚拟机232。该用户可访问虚拟机上可利用的系统资源,可使用与虚拟机接口的网络,或以其他方式与虚拟机交互。在一些实施例中,通过与虚拟机交互,用户可以产生用户信息、用户数据、用户统计或用户性能信息。该用户信息可以被捆绑于特定用户或用户会话并且可以通过拦截响应于在用户会话上下文中的用户活动所产生的信息和数据而获得。用户信息可以包括在用户会话304期间用户所请求的资源量;用户所访问的应用数量;在用户会话 304期间由用户所产生的用户请求所引起的平均负载量;用户标识符;满足用户请求所需的带宽数量;以及任何其他有关的用户性能信息。在一些实施例中,用户会话信息可包括记录用户会话的开始时间和结束时间的会话记录。被传输到性能监控系统316的用户会话信息可包括会话记录,以及在一些实施例中可包括任何下列信息用户访问或以其他方式使用的时间周期(例如,日期和时间);用户的用户标识符;以及用户所访问的虚拟机的标识符。在一些实施例中,当虚拟机指标被传输到性能监控系统316时,这些指标根据访问虚拟机的用户而被记录或存储。例如当用户终止用户会话时,在用户会话期间所产生的用户会话信息和虚拟机指标可被传输到性能监控系统316。在一些实施例中,虚拟机指标可以以这种方式被映射到用户会话信息上,即虚拟机指标可与指示器一起被存储,所述指示器指示指标是在用户会话信息所描述的会话期间所产生的。因此,如果虚拟机指标被存储在数据库中,那么包含虚拟机指标的记录可包括识别在该用户会话期间产生了虚拟机指标的用户会话的字段。这个字段可进一步包括关于用户或用户会话的信息。在一些实例中, 该字段可指向所存储的信息的另一个记录或集合,其进一步描述用户会话、用户、用户工作负载简档或用户的分类。在一些实施例中,所存储的虚拟机信息和会话标识符的组合的集合可以被称为用户工作负载简档。其他实施例中,当虚拟机指标与用户会话信息相结合以便创建工作负载简档或者产生用户指定的虚拟机指标的记录时,虚拟机指标可以根据用户会话信息而被删减或者被修改。例如,当用户会话信息指示用户会话持续了从时间A到时间B的时间时,删除在从时间A持续到时间B的时间周期之外所产生的任何虚拟机指标。类似地,如果额外的虚拟机指标被识别为在从时间A持续到时间B的时间周期期间所产生的,则这些指标被附加到所存储的虚拟机指标。对用户指定的虚拟机指标的工作负载简档或记录的修改可以发生在当简档或记录产生时或者稍后的时刻。在一些实施例中,工作负载简档存储322(例如,性能数据库)可在此处所存储的工作负载记录上执行修改。在一个实施例中,远程计算设备203可执行VDI平台310。虚拟桌面架构(VDI)平台310可以是能实现和管理虚拟桌面架构的任何平台。在一个实施例中,VDI平台310可与在计算设备203上执行的其他应用或程序通信,并且在一些实施例中,可与性能监控系统316通信。在其他实施例中,VDI平台310可与虚拟机管理器352通信。VDI平台310可以是由位于佛罗里达州的Fort Lauderdale的Citrix Systems公司制造的XEN DESKTOP产品系列提供的任何平台。在一个实施例中,VDI平台310可以是在用户和VDI平台310间建立用户会话的平台。尽管图3示出了在VDI平台310之外的虚拟机池,但在一些实施例中,VDI平台310可访问虚拟机池312的虚拟机232并且可以向用户会话分配虚拟机232。在其他实施例中,VDI平台310可以向用户会话分配虚拟桌面和其他类似资源。VDI平台310也可管理被分配给用户会话的虚拟资源并且还可执行负载平衡功能以基于多种标准负载平衡用户会话间的虚拟资源。在一些实施例中,VDI平台310被称为虚拟桌面架构、虚拟桌面架构环境或虚拟桌面架构系统。在一些实施例中,VDI平台310可包含虚拟桌面代理350。在一些实施例中,虚拟桌面代理350可接收来自用户的对虚拟机的请求并且通过从虚拟机池312请求虚拟机来响应那些请求。尽管图3图示了其中在VDI平台310内执行虚拟桌面代理350的实施例,但其他实施例中,VDI平台310可以不包括虚拟桌面代理350。在那些实施例中,VDI平台310 可执行虚拟桌面代理350的功能。例如,VDI平台310可接收对虚拟机的请求,并且可以响应地为向VDI平台310发出虚拟机请求的用户请求虚拟机。在一个实施例中,VDI平台310 可向用户或用户的用户会话传输虚拟机,在其他实施例中虚拟机管理器352可向用户或用户的用户会话传输虚拟机。在一些实施例中,VDI平台310可管理用户会话池或用户会话组314(此处总称为用户会话池314)。用户会话池或组314可包括在用户和VDI平台310之间所创建的一个或多个用户会话304。在一些实施例中,当使用位于远离计算设备203的客户端计算设备的用户请求虚拟桌面或虚拟机,或者请求访问虚拟桌面或虚拟机时,可产生用户会话304。在其他实施例中,当用户通过远程客户端计算机登录到VDI平台310时可创建用户会话304。 仍在其他实施例中包括当用户请求通过虚拟机或虚拟桌面访问可利用的应用或资源时所创建的用户会话304。在一些实施例中,用户会话304可以是计算设备203和客户机的用户之间的会话, 或者是VDI平台310和客户机的用户之间的会话。在一个实施例中,响应于登录VDI平台 310的用户请求、访问应用或资源的用户请求,或者对虚拟机和虚拟桌面的用户请求,VDI 平台310可创建用户会话304。用户可从用户会话304中访问VDI平台310的一些方面,类似地,在用户会话304中用户可与被分配给用户的虚拟机232交互。计算设备203可存储和/或执行虚拟机的池或组(此处总称为虚拟机池31 。这个虚拟机池或组可包括一个、两个或多个虚拟机232。在一些实施例中,虚拟机232可以是虚拟机模板,当虚拟机模板被流式传输或下载到虚拟化环境302时,虚拟机模板可被配置和执行以便产生或实例化虚拟机232。在其他实施例中,虚拟机232可以是可执行指令、应用或其他计算资源的集合,所述集合在被流式传输或下载到虚拟化环境302中时,可以被配置和执行以便产生或实例化虚拟机232。尽管图3图示了其中虚拟机池312不依赖另一个应用而存在的实施例,但在一些实施例中虚拟机池312可被虚拟机管理器352所管理。仍在其他实施例中,虚拟机池312可以在虚拟机管理器352的上下文中被存储和被执行。仍在其他实施例中,虚拟机池312可以在远程计算机上被维护。仍在其他实施例中,虚拟机池 312可以被在远程计算机上执行的虚拟机管理器352维护。例如,虚拟机池312可以被在远程计算机上执行的XENSERVER应用所维护。仍在其他实施例中,虚拟机池312可以被VDI 平台310维护。在这些实施例的任何一个中,VDI平台310可以与管理虚拟机池312的应用通信并且可以请求该应用使虚拟机池312中的某个虚拟机成为可利用的。计算设备203还可执行虚拟机管理器352。虚拟机管理器352可根据一组标准配置虚拟机和以其他方式给用户分配虚拟机。在一些实施例中,虚拟机管理器352可与性能监控系统316通信以便获得用户工作负载简档、用户的分类、虚拟机指标、用户会话信息或其他用户指标或虚拟机指标。虚拟机管理器352可使用该信息来确定如何配置虚拟机、哪个虚拟机被分配给用户或用户会话或在哪里执行虚拟机。在一些实施例中,虚拟机管理器 352可以管理虚拟机池312。在其他实施例中,虚拟机管理器352可以是Citrix Systems 发布的XENSERVER应用。尽管图3图示了与VDI平台310和性能监控系统316在同一机器上执行的虚拟机管理器352,但在其他实施例中虚拟机管理器352可在远程机器上执行。在一些实施例中,虚拟机管理器352可以给用户会话和用户会话的用户分配虚拟机。给用户会话或用户分配虚拟机可包括产生虚拟机或者选择虚拟机。当分配包括产生或配置虚拟机时,虚拟机管理器352可根据用户需求创建虚拟机。这些需求可以由用户、用户会话、管理员、用户简档或虚拟机标准的任何其他集合所传送。在一些实施例中,虚拟机的组件可以根据过去的用户活动而被动态地确定。仍在其他实施例中,虚拟机可以至少部分地根据用户的分类而被配置或产生,例如用户分类为重度、中度或轻度用户。当分配包括选择虚拟机时,虚拟机管理器352可从现有虚拟机的池中选择虚拟机。该选择可以根据用户或用户会话标准、用户简档、用户的分类或类似信息而作出。在一些实施例中,计算设备203可以执行性能监控系统316。在一些实施例中,VDI平台310可以与性能监控系统316通信。在其他实施例中,性能监控系统316可以通过VDI 平台310所显露的应用接口与VDI平台310通信,或者通过VDI平台310和性能监控系统 316之间所建立的内部通信通道与VDI平台310通信。在一个实施例中,性能监控系统316 在VDI平台310之外执行,使得性能监控系统316作为不依赖于VDI平台310的独立应用而执行。在其他实施例中,性能监控系统316可以被包含在VDI平台310内。仍在其他实施例中,VDI平台310和性能监控系统316可在分开的计算机上执行,这样VDI平台310可在一个计算机上执行并且性能监控系统316在远离第一计算机的第二计算机上执行。在这个实施例中,VDI平台310可通过虚通道和/或VDI平台310和/或性能监控系统316所展示的应用接口与网络上的性能监控系统316通信。虚拟机指标信息和用户会话信息可以在VDI平台310和性能监控系统316之间共享。在一些实施例中,当VDI平台310接收VDI代理306所记录的会话信息或虚拟机指标时,VDI平台310可将那个信息转发到性能监控系统316。在其他实施例中,性能监控系统 316可通过应用接口或通信信道与VDI平台310交互,使得性能监控系统316可以基本上自动接收VDI代理306所记录的且被传输到VDI平台310的任何虚拟机指标信息或用户会话信息。仍在其他实施例中,VDI代理306可以直接地向远程计算机203上的性能监控系统316传输虚拟机指标信息和用户会话信息。仍在其他实施例中,性能监控系统316可以直接地从虚拟化环境302中接收用户会话信息和/或虚拟机指标信息。性能监控系统316可包括虚拟机指标存储仓库3M和会话记录存储仓库330。在一个实施例中,虚拟机指标存储仓库3M可以是存储虚拟机指标的数据库或其他存储仓库。虚拟机指标3M可根据其所对应的虚拟机而被存储,以及在一些实施例中,也可以根据访问虚拟机的用户而被存储,例如虚拟机可针对具体用户而被存储。性能监控系统316还可包括会话记录存储330。在一些实施例中,会话记录存储330存储用户会话信息。用户会话信息可根据会话信息所对应的用户而被存储。在其他实施例中,用户会话信息可根据会话信息所对应的用户和虚拟机而被存储。尽管图3图示了分开的会话记录存储330和虚拟机指标存储324,但在一些实施例中用户会话信息和虚拟机指标信息可以被存储在同一仓库中。在一些实施例中,性能监控系统316可以包括用户工作负载简档存储322。用户工作负载简档存储322可以存储从用户会话信息和虚拟机指标所产生的用户工作负载。在一些实施例中,用户工作负载简档存储322可以是单独的存储仓库,而在其他实施例中,用户工作负载简档存储322可以与会话记录存储330或虚拟机指标存储3M组合成为单个存储仓库。仍在其他实施例中,用户工作负载简档存储322可根据对应的用户和/或虚拟机存储用户工作负载简档。在一些实施例中,用户工作负载简档可指用户指定的虚拟机指标的记录。这些指标可以是与具体用户或用户会话相关联的虚拟机性能数据。在一些实施例中,用户工作负载简档可包括指向具体用户或用户会话的指针。这个指针用于识别在另一记录、存储仓库或数据库中所存储的用户信息、用户会话信息或者用户的分类信息。性能监控系统316还可包括虚拟机性能监控器3 和会话监控器332。在一些实施例中,虚拟机性能监控器3 和会话监控器332向虚拟化环境302中的控制程序220查询虚拟机性能指标和用户会话信息。在其他实施例中,虚拟机性能监控器3 和会话监控器332可直接从VDI平台310获得虚拟机性能指标和用户会话信息。仍在其他实施例中,虚拟机性能监控器3 和会话监控器332可从在虚拟化环境302中执行的VDI客户端320 获得虚拟机性能指标和用户会话信息。尽管图3示出了分开的虚拟机性能监控器3 和会话监控器332,但在一些实施例中,二者各自的功能可以被单独一个监控器处理。在一些实施例中,虚拟机性能监控器3 可以请求和获得虚拟机性能指标。当收到虚拟机性能指标时,虚拟机性能监控器3 可在虚拟机存储仓库3M中存储所接收的指标。会话监控器332 可请求和获得用户会话信息。当收到用户会话信息时,会话监控器332可在会话记录存储 330中存储所接收的会话信息。在一些实施例中,性能监控系统316可包括分类系统318,所述分类系统318可根据用户工作负载简档分类用户,所述用户工作负载简档可以被存储在用户工作负载简档存储322中。分类系统318可浏览用户工作负载简档数据并且使用该数据来将用户分为一个或多个类。这些分类可以是预定义的或者可以根据用户工作负载简档存储322中所存储的用户工作负载简档数据而动态地产生。例如,分类系统318可根据每个用户的工作负载简档将用户分类为“轻度”、“中度”或“重度”用户。在一些实施例中,分类反映了每个用户消耗的资源数量。例如,分类可反映具体用户通常所使用的磁盘容量、网络带宽或CPU周期。 在一个实施例中,归类“轻度”、“中度”或“重度”可包括确定用户的使用份额超过预先确定的阀值的百分比或倍数。图4所示的是用于记录虚拟机指标并将这些指标与用户相关联的方法400的一个实施例。VDI平台310或虚拟桌面代理350可接收登录VDI平台310的用户请求(步骤 402)。作为回应,VDI平台310可初始化用户会话(步骤404)并且虚拟机管理器352可给用户分配虚拟机(步骤406)。然后,VDI平台310可向性能监控系统316传输指示已将虚拟机传输到用户的信息(步骤408),接着,性能监控系统316可针对用户标识符记录虚拟机指标(步骤410)。进一步参考图4,且在一些实施例的更多细节中,方法400可包括接收登录VDI平台310的用户请求(步骤40 。在一些实施例中,用户请求是由使用远程客户端计算机的用户所发出的。用户请求可以是登录VDI平台310的请求,而在其他实施例中,请求可以是对虚拟机的请求、对桌面的请求或执行应用的请求。在一个实施例中,VDI平台310拦截用户请求,而在其他实施例中虚拟桌面代理350拦截用户请求。VDI平台310或虚拟桌面代理350可通过初始化用户会话来对接收用户请求作出响应(步骤404)。在一些实施例中,这个用户会话可与发出该请求的用户相关联或者以其他方式表示发出该请求的用户。因此,用户会话的用户会话信息可以是表示用户会话中的用户活动的信息。在一些实施例中,VDI平台310可以为用户开始新的用户会话,而在其他实施例中VDI平台310可以重启所缓存的与用户相关联的用户会话。在一些实施例中,当初始化用户会话时,VDI平台310可请求虚拟机管理器352 给用户分配或指定虚拟机(步骤406)。给用户分配虚拟机可包括流式、下载或以其他方式向用户的用户会话传输虚拟机。在一些实施例中,VDI平台310在收到对虚拟机的用户请求时,传输给用户分配虚拟机的请求。在其他实施例中,VDI平台310可在初始化用户会话时,传输给用户分配虚拟机的请求。当向用户的用户会话传输虚拟机时,可以将指示虚拟机已经被分配给用户的信息传输到性能监控系统(步骤408)。在一些实施例中,VDI平台310也可被通知虚拟机已被传输到用户的用户会话。仍在其他实施例中,方法400可不包括通知性能监控系统316的步骤;而是,虚拟机管理器352可为性能监控系统316管理获得用户会话信息和虚拟机指标。 向性能监控系统316或VDI平台传输指示已向用户会话传输虚拟机的信息可包括传输虚拟机的标识符、虚拟机的特征或其他识别信息。标识符可以是虚拟机ID、虚拟机名称、虚拟机序列号或其他标识符。虚拟机特征可包括被包含在虚拟机中的虚拟盘的类型和大小、被包含在虚拟机中的操作系统、被包含在虚拟机中的虚拟CPU、被包含在虚拟机中的应用以及被传输到用户的用户会话的虚拟机的任何其他特征。记录响应于用户请求初始化用户会话所产生的用户会话信息和被分配给用户会话的虚拟机的虚拟机指标(步骤410)。尽管方法400包括记录用户会话信息和虚拟机指标的步骤,但在一些实施例中该步骤可包括针对用户标识符记录虚拟机指标。在这些实施例中,可以不记录用户会话信息。而是,可记录用户标识符并且使用用户标识符来针对具体用户存储虚拟机指标。在一些实施例中,虚拟机指标可以被在虚拟机中执行的控制程序220、 VDI客户端320或应用的任何一个所记录。当用户会话终止时,虚拟机指标可被传输到VDI 平台310、虚拟机管理器352或性能监控系统316的任何一个。在其他实施例中,在用户会话期间,虚拟机指标可被传输或流式传输到VDI平台310、虚拟机管理器352或性能监控系统316的任何一个。类似地,用户会话信息可以被在虚拟机中执行的控制程序220、VDI客户端320或应用的任何一个所记录。当用户会话终止时或在用户会话的执行期间,用户会话信息可被传输或流式传输到VDI平台310、虚拟机管理器352或性能监控系统316的任何一个。在用户会话和/或虚拟机指标被流式传输或传输到VDI平台310或虚拟机管理器 352的实施例中,该信息和指标可以被传输到性能监控系统316,这些信息和指标被最终存储在性能监控系统316并且用于产生用户工作负载简档。图5A所示的是用于给用户或用户会话分配虚拟机的方法500的一个实施例。VDI 平台310或虚拟桌面代理350接收对虚拟机或虚拟桌面的用户请求(步骤504),接着虚拟桌面代理响应地发出对虚拟机的请求(步骤508)。给发出请求的用户的用户会话分配虚拟机(步骤51 ,以及虚拟桌面代理350接收关于所分配的虚拟机的信息(步骤516)。然后,虚拟桌面代理350将所分配的虚拟机通知性能监控系统316(步骤520)。进一步参考图5A,且在一些实施例的更多细节中,VDI平台310或虚拟桌面代理 350接收对虚拟机的请求(步骤504)。该请求可以是由用户、用户会话或者用户所访问的客户端计算机或执行用户会话的客户端计算机所发出的。在一些实施例中,这个请求可使 VDI平台310认证用户并初始化用户会话。在其他实施例中,用户可以在初始化用户会话后发出对虚拟机的请求。在一些实施例中,该请求可以包括信息诸如用户所请求的应用;用户标识符;用户名;用户会话标识符;用户所使用以便发出请求的客户端计算机的硬件配置;在用户所使用以便发出请求的客户端计算机上的执行的操作系统的类型或管理程序的类型;首选的CPU配置;或其他这样的信息。当收到请求时,VDI平台310或虚拟桌面代理350发出对虚拟机的请求(步骤 508)。这个请求可以直接发送到虚拟机池312,或者在一些实施例中可以发送到虚拟机管理器352。在一些实施例中,虚拟桌面代理350可包括关于用户、用户会话、最初的用户请求、 用户所访问的客户端计算机的信息,或对虚拟机请求的其他这样的信息。在其他实施例中, 当收到来自虚拟桌面代理350的虚拟机请求时,虚拟机管理器352可向VDI平台310或虚拟桌面代理350查询关于用户所使用的客户端计算机、用户或者用户会话的信息。虚拟机管理器352响应于接收请求,获得信息并给用户会话分配虚拟机(步骤 512)。在一些实施例中,虚拟机管理器352首先从性能监控系统316获得下列任何一个用于发出请求的用户的工作负载简档;或用于发出请求的用户的分类。虚拟机管理器352可通过向性能监控系统316传递用户标识符,例如,用户名或用户ID,来获得这个信息。进而, 性能监控系统316可以使用用户标识符从工作负载简档存储322检索用户工作负载简档, 并且使用用户标识符从分类系统318检索用户的分类。在进一步的实施例中,虚拟机管理器352可从VDI平台310获得关于用户所使用的客户端计算机的信息或在请求中用户所识别的任何具体配置信息。使用从性能监控系统316和/或VDI平台310所获得的信息, 虚拟机管理器352可产生和/或配置虚拟机或者选择虚拟机。在虚拟机管理器352配置虚拟机的实施例中,虚拟机管理器352根据所获得的信息配置虚拟机并且向用户的用户会话传输或流式传输该虚拟机。在虚拟机管理器352选择虚拟机的实施例中,虚拟机管理器 352检索关于可利用的虚拟机的信息、选择能处理用户的工作负载的虚拟机,以及可以向用户的用户会话传输该虚拟机。例如,如果工作负载简档指定用户是重度用户,那么虚拟机管理器352可选择能适应重度用户的虚拟机。仍在其他实施例中,虚拟机管理器352可以选择虚拟机并且根据用户的规定配置该虚拟机。图5B中所描述的是给用户会话分配虚拟机 (步骤512)的进一步的实施例。当给用户会话分配了虚拟机时,虚拟机管理器352可将该虚拟机通知虚拟桌面代理350或VDI平台310(步骤516)。这个通知可包括指示虚拟机已被分配给用户的用户会话的消息。其他实施例中,该通知可包括用户所分配的虚拟机的标识符。仍在其他实施例中,该通知可包括虚拟机的特征的列表。其他实施例还可包括包含上述任何组合的通知。在一些实施例中,方法500还包括将所分配的虚拟机通知性能监控系统316的步骤(步骤520)。在其他实施例中,方法500可以不包括这个步骤。图5B所示的是用于根据用户的分类或用户工作负载简档给用户分配虚拟机的方法550的一个实施例。虚拟机管理器352可接收对虚拟机的请求(步骤554)。当收到这个请求时,虚拟机管理器352可为请求虚拟机的用户识别用户的分类或工作负载简档(步骤阳6),以及虚拟机管理器352可根据用户的分类和/或工作负载简档给用户分配虚拟机 (步骤558)。进一步参考图5B,且在一些实施例的更多细节中,方法550可由虚拟机管理器352 执行。在其他实施例中,方法550可由VDI平台310执行。在一些实施例中,虚拟机管理器352可接收对虚拟机的请求(步骤554)。在其他实施例中,虚拟机池可接收对虚拟机的请求。这个请求可以是由用户或用户会话发出的并且可包括用户识别信息,例如,用户标识符。仍在其他实施例中,该请求可以是由虚拟桌面代理响应于接收来自用户会话的请求而发出的。当收到对虚拟机的请求时,虚拟机池或虚拟机管理器352可为用户识别用户分类和/或工作负载简档(步骤556)。在虚拟机管理器352在请求中收到用户标识符的实施例中,虚拟机管理器352可使用该用户标识符来为用户获得用户分类和/或工作负载简档。 在其他实施例中,虚拟机管理器352可直接向VDI平台310或用户会话查询用户的标识符。 获得用户分类和/或工作负载简档可包括向性能监控系统316、分类系统318或用户工作负载简档存储322查询与具体用户相关联的信息。通过向分类系统318、性能监控系统316 和/或用户工作负载简档存储322的任何一个传递用户标识符,这些实体可以获得与对应于用户标识符的用户相关联的信息,例如记录。例如,性能监控系统316可接收用户的用户标识符,并且可以获得针对该用户标识符所存储的工作负载简档和/或针对该用户标识符所存储的用户分类。针对标识符存储信息可包括使用用户标识符来标注或标记数据或者将用户标识符和其他信息一起存储在同一记录中或者作为元数据存储。所获得的工作负载简档和/或用户分类接着可以被发送回到虚拟机管理器352或虚拟机池。在其他实施例中, 虚拟机管理器352或虚拟机池可以检索工作负载简档和/或用户分类。当为用户识别出工作负载简档和/或用户分类时,虚拟机管理器352可给用户分配虚拟机(步骤558)。给用户分配虚拟机可包括给用户的用户会话分配虚拟机。在一些实施例中,虚拟机管理器352可给发出请求的用户分配虚拟机,在其他实施例中VDI平台310 可给用户分配虚拟机。在这些实施例中,虚拟机管理器352可将虚拟机信息转发到VDI平台310,接着VDI平台310可将该虚拟机信息传输到用户的用户会话。给用户分配虚拟机可包括产生和配置新的虚拟机,并接着向用户的用户会话传输该虚拟机。在其他实施例中给用户分配虚拟机可包括从现有的虚拟机的池中选择虚拟机,并接着向用户的用户会话传输所选择的虚拟机。选择或产生和/或配置虚拟机可根据用户、计算设备或虚拟机标准的任何集合而实现。在一些实施例中,给用户分配虚拟机可以根据用户的分类而实现。在这些实施例中,虚拟机管理器352可使用所获得的用户类别来确定将哪个虚拟机分配给用户。例如,如果用户是轻度用户,适合轻度用户的虚拟机可以被分配给用户或用户的用户会话。在其他实施例中,给用户分配虚拟机可以根据对用户的工作负载简档的分析而实现。当获得用户的工作负载简档时,虚拟机管理器352可分析工作负载简档来确定用户是否是轻度、中度或重度用户。当用户的分类被确定时,虚拟机管理器352可使用所确定的分类来给用户分配合适的虚拟机。图6所示的是用于分类用户并更新工作负载简档的方法600的一个实施例。性能监控系统316可接收用户会话终止的通知(步骤604)并且响应地记录用户会话信息(步骤 608)和记录虚拟机指标(步骤61 。然后,性能监控系统316可使用用户会话信息和虚拟机指标更新工作负载简档(步骤616),并使用工作负载简档对用户进行分类(步骤620)。进一步参考图6,且在一些实施例的更多细节中,性能监控系统316可可接收用户会话终止的通知(步骤604)。在一些实施例中,性能监控系统316可从虚拟机管理器352 接收该通知,而在其他实施例中,性能监控系统316可从VDI平台310接收该通知。在一些实施例中,该通知可包括用户会话标识符、用户标识符和/或虚拟机标识符。性能监控系统 316可使用这些标识符来识别、存储以及之后检索与该用户相关联的信息,例如,用户标识符和/或虚拟机指标。在一些实施例中,在性能监控系统316中执行的应用可接收该通知。 例如,在一个实施例中,会话监控器332从性能监控系统316或者直接从VDI平台310或虚拟机管理器352接收用户会话终止的通知。仍在其他实施例中,当直接终止性能监控系统 316的会话监控器332时,可以由用户会话发送该通知。会话监控器332响应于接收用户会话终止的通知,接着为所终止的会话记录用户会话信息(步骤608)。记录用户会话信息可包括从下列来源的任何一个获得用户会话信息虚拟机管理器352 ;VDI平台310 ;VDI客户端320 ;或从所终止的用户会话的用户所使用的客户端计算机上的存储仓库。在一些实施例中,在用户会话的执行期间,用户会话信息可被流式传输到性能监控系统316。在这些实施例中,记录用户会话信息可包括从临时存储单元检索用户会话信息并且将其存储在会话记录存储330中或者停止(close out)会话记录存储330中的某条记录。在许多实施例中,记录用户会话信息可包括将用户会话信息与识别标记一起存储在用户会话记录存储330中,所述识别标记指示用户会话信息来自终止通知中所识别的用户的用户会话。尽管在一个实施例中会话监控器332记录用户会话信息, 然而在其他实施例中性能监控系统316或在性能监控系统316的上下文中执行的另一个应用记录用户会话信息。接着,性能监控系统316可记录虚拟机指标(步骤61 。虚拟机指标是用于在用户会话(例如,所终止的用户会话)期间用户所访问的虚拟机的指标或性能数据。这些指标可包括此处所描述的任何机器指标或性能数据。在一些实施例中,性能监控系统316或在性能监控系统316的上下文中执行的任何应用可记录虚拟机指标。在其他实施例中,虚拟机性能监控器3 可以存储虚拟机指标。存储虚拟机指标可包括从下列来源的任何一个获得虚拟机指标虚拟机管理器352 ;VDI平台310 ;VDI客户端320 ;或从所终止的用户会话的用户所使用的客户端计算机上的存储仓库。在一些实施例中,在用户会话的执行期间,虚拟机指标可被流式传输到性能监控系统316。在这些实施例中,记录虚拟机指标可包括从临时存储单元检索虚拟机指标并且将其存储在虚拟机指标存储324中或者停止虚拟机指标存储324中的某条记录。在许多实施例中,记录虚拟机指标可包括将虚拟机指标与识别标记一起存储在虚拟机指标存储324中,所述识别标记指示虚拟机指标是在终止通知中所识别的用户的用户会话期间所产生的。用户和/或用户会话还可对应终止通知中所识别的虚拟机,从而在用户会话期间该用户访问该虚拟机。在一些实施例中,性能监控系统316可使用所记录的用户会话信息和虚拟机指标来对所终止的用户会话的用户更新用户工作负载简档(步骤616)。更新用户工作负载简档可包括存储在用户会话期间所产生的虚拟机指标并且将那些虚拟机指标映射到用户会话的用户。将虚拟机指标映射到用户可包括标注或以其他方式将用户标识符与虚拟机指标相关联。在其他实施例中,将虚拟机指标映射到用户可包括将虚拟机指标与用户会话记录相关联。在一些实施例中,性能监控系统316使用被包含在终止通知中的用户标识符来从用户工作负载简档存储322中获得用户工作负载简档。当获得对应于所终止的用户会话的用户的用户工作负载简档时,性能监控系统316接着可使用所记录的虚拟机指标更新所获得的用户工作负载简档。在一些实施例中,性能监控系统316接着可以将所更新的用户工作负载简档存储在用户工作负载简档存储322中。在其他实施例中,性能监控系统316可以在分类系统318对用户分类之后存储所更新的用户工作负载简档。在一个实施例中,更新用户工作负载简档的过程可以由分类系统318执行。在性能监控系统316的上下文中执行的分类系统318可使用所更新的工作负载简档来对用户进行分类(步骤620)。在一些实施例中,一旦用户工作负载简档被更新,分类系统318将接收用户可以被分类的通知。用户可能已经被分类,因而,对用户进行分类可包括使用反映所记录的虚拟机指标的新的分类来更新用户的分类。用户的分类可以是表示用户会话期间用户所使用的资源数量的任何值。在一些实施例中,这些值可以是轻度、中度和重度用户,其中轻度用户使用非常少的资源而重度用户使用相当大量的资源。资源可包括计算周期,内存使用量和用户访问的任何其他计算资源。可基于管理员指定的一组阀值,或者根据历史数据经验地确定的一组阀值来做出如用户是否是轻度、中度或重度用户的确定。 对用户进行分类可包括查看所终止的用户会话的用户的工作负载简档、给用户指定分类以及将该分类存储在存储仓库中。 尽管已经参照附图描述和示意了一些示例实施例,应该理解这些实施例仅是说明性的而不限于此处所描述的方法和系统。另外地,可在硬件、可编程设备、固件、软件或上述组合中实现此处描述的方法和系统或它们的部分特征。此处描述的方法和系统或此处描述的方法和系统的一部分也可以在诸如磁介质(例如,硬驱、软驱)、光介质(光盘,数字通用光盘)或半导体存储介质(易失的和非易失的)的处理器可读的存储介质或机器可读的介质中实现。
权利要求
1.用于根据用户分类分配虚拟机的方法,其中根据历史的第一用户会话信息和虚拟机指标对用户分类,所述方法包括由在计算机器上执行的会话监控器接收第一用户会话终止的通知,第一用户会话访问第一虚拟机;由会话监控器响应于第一用户会话的终止记录第一用户会话信息; 从虚拟机性能监控器获得用于第一虚拟机的虚拟机指标;由性能监控器使用第一用户会话信息和第一虚拟机指标来更新第一用户工作负载简档;根据第一用户工作负载简档对对应于第一用户会话的第一用户进行分类;由虚拟桌面架构从第一用户接收对虚拟机的请求;以及响应于接收所述请求,根据第一用户的分类给第一用户分配虚拟机。
2.权利要求1的方法,其中接收通知还包括由在虚拟桌面架构之外执行的会话监控器接收。
3.权利要求1的方法,其中分类还包括根据第一用户工作负载简档将第一用户分类为重度用户、中度用户和轻度用户中的一个。
4.权利要求1的方法,其中更新第一用户工作负载简档还包括将所记录的第一用户会话信息映射到所获得的第一虚拟机指标上。
5.权利要求1的方法,还包括将第一用户的分类存储在存储仓库中。
6.权利要求1的方法,其中分类还包括由在虚拟桌面架构之外的计算机器上执行的分类模块分类。
7.权利要求1的方法,还包括接收第二用户会话终止的通知,所述第二用户会话访问第二虚拟机;记录第二用户会话信息;获得用于第二虚拟机的虚拟机指标;以及使用第二用户会话信息和第二虚拟机指标来更新第二用户工作负载简档。
8.权利要求7的方法,还包括根据第二用户工作负载简档对对应于第二用户会话的第二用户进行分类。
9.权利要求1的方法,其中给第一用户分配虚拟机还包括由虚拟桌面架构从虚拟机管理器请求虚拟机,所述虚拟机管理器根据第一用户的分类分配虚拟机。
10.权利要求1的方法,其中分配虚拟机还包括根据第一用户的分类配置虚拟机。
11.权利要求1的方法,其中分配虚拟机还包括根据第一用户的分类选择虚拟机。
12.用于根据用户的分类分配虚拟机的系统,其中根据历史的第一用户会话信息和虚拟机指标对用户分类,所述系统包括在计算机器上执行的会话监控器,用于接收第一用户会话终止的通知,第一用户会话访问第一虚拟机,响应于第一用户会话的终止来记录第一用户会话信息,以及从虚拟机性能监控器获得用于第一虚拟机的虚拟机指标;性能监控器 使用第一用户会话信息和第一虚拟机指标来更新第一用户工作负载简档, 其中根据第一用户工作负载简档对对应于第一用户会话的第一用户进行分类;以及在计算机器上执行的虚拟桌面架构,用于从第一用户接收对虚拟机的请求,以及响应于接收所述请求,根据第一用户的分类来给第一用户分配虚拟机。
13.权利要求12的系统,其中会话监控器在虚拟桌面架构之外执行。
14.权利要求12的系统,其中根据第一用户工作负载简档,第一用户被分类为重度用户、中度用户和轻度用户中的一个。
15.权利要求12的系统,其中性能监控器还将所记录的第一用户会话信息映射到所获得的第一虚拟机指标上。
16.权利要求12的系统,还包括用于存储第一用户分类的存储仓库。
17.权利要求12的系统,还包括在虚拟桌面架构之外的计算设备上执行的分类模块, 其中分类模块对第一用户进行分类。
18.权利要求12的系统,其中,性能监控器接收第二用户会话终止的通知,第二用户会话访问第二虚拟机,记录第二用户会话信息,和获得用于第二虚拟机的虚拟机指标;以及性能监控器使用第二用户会话信息和第二虚拟机指标来更新第二用户工作负载简档。
19.权利要求18的系统,还包括根据第二用户工作负载简档对对应于第二用户会话的第二用户进行分类的分类模块。
20.权利要求12的系统,其中虚拟桌面架构通过从虚拟机管理器请求虚拟机来给第一用户分配虚拟机,以及虚拟机管理器根据第一用户的分类给第一用户分配虚拟机。
21.权利要求20的系统,其中虚拟机管理器通过根据第一用户的分类配置虚拟机来给第一用户分配虚拟机。
22.权利要求20的系统,其中虚拟机管理器通过根据第一用户的分类选择虚拟机来给第一用户分配虚拟机。
全文摘要
性能监控系统根据使用用户会话信息和虚拟机指标所确定的用户分类给用户或用户会话分配虚拟机。性能监控系统的会话监控器被通知用户会话终止,其中用户会话访问虚拟机。会话监控器响应地记录用户会话信息并且从虚拟机性能监控器获得用于所述虚拟机的虚拟机指标。性能监控系统使用用户会话信息和虚拟机指标更新用户工作负载简档,并且根据用户工作负载简档对用户会话的用户进行分类。当收到来自用户的对虚拟机的请求,虚拟桌面架构从虚拟机管理器请求虚拟机。虚拟机管理器响应地根据用户的分类给用户分配虚拟机。
文档编号G06F9/50GK102446121SQ201110148568
公开日2012年5月9日 申请日期2011年6月1日 优先权日2010年10月12日
发明者D·斯科特, R·夏普 申请人:思杰系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1