专利名称:虚拟化环境中存储优化选择的制作方法
技术领域:
本申请总的涉及虚拟机配置。本申请尤其涉及配置虚拟机中的虚拟磁盘。
背景技术:
虚拟机典型地可以访问使用一个或多个存储优化所配置的虚拟磁盘。配置虚拟磁盘以具有特定存储优化通常要求了解虚拟磁盘的磁盘类型。当虚拟机被创建时,被包含在其内的虚拟磁盘的类型可能是不为所知的。在这些实例中,因为虚拟机创建器可能不了解虚拟磁盘的磁盘类型,所以虚拟机创建器不能够选择有效的存储优化。在虚拟桌面架构环境中,虚拟磁盘可以是任何磁盘类型。例如,虚拟磁盘可以存储操作系统映像,虚拟机可以从该操作系统映像启动;或者虚拟磁盘可包括存放当虚拟机重启时无效的和被损坏的数据的非持久性回写高速缓存。在一些实例中,虚拟磁盘可以是被创建以传递用于在虚拟机启动后定制虚拟机的数据和二进制数据的映像定制磁盘。不同的磁盘类型通常有不同的性能,因此这些不同磁盘类型通常映射到不同的磁盘存储优化。虚拟化平台通常不能识别被包含在特定虚拟机中的磁盘的类型。相反地,创建虚拟机的系统通常是了解特定虚拟机中虚拟磁盘的磁盘类型的唯一系统。因此为虚拟化平台选择存储特定的优化可能是困难的,因为该平台不了解被包含在特定虚拟机中的虚拟机磁盘是什么类型。
发明内容
从最广义的意义上,本发明描述了向虚拟化环境通知被包含在虚拟机中虚拟磁盘的磁盘类型的方法和系统。在多个实例中,虚拟化环境不了解虚拟机中虚拟磁盘的磁盘类型。因此虚拟化环境通常不能为虚拟机适当地选择存储特定的优化。通过向虚拟化环境通知虚拟机中虚拟磁盘的磁盘类型,那个虚拟化环境可为那个虚拟机选择合适的存储特定的优化。在一个方面,此处描述了使用指示磁盘的磁盘类型的元数据为虚拟化环境中的磁盘选择存储优化的方法。在计算设备上执行的虚拟桌面架构创建包括至少一个虚拟磁盘的虚拟机模板。接着,虚拟桌面架构响应于创建所述虚拟机模板修改所述至少一个虚拟磁盘以便与描述所述至少一个虚拟磁盘的磁盘类型的元数据相关联或者包括描述所述至少一个虚拟磁盘的磁盘类型的元数据。虚拟化环境执行使用由虚拟桌面架构创建的虚拟机模板所创建的虚拟机。虚拟化环境的存储子系统获得所述至少一个虚拟磁盘的元数据,并且部分地基于所述元数据中所描述的磁盘类型为所述至少一个虚拟磁盘选择存储优化。在一些实施例中,该方法还包括复制虚拟机模板以创建包括包含描述磁盘类型的元数据的所述至少一个虚拟磁盘的第二虚拟机模板。在其他实施例中,该方法还包括根据所选择的存储优化附接经优化的存储。仍在其他实施例中,存储子系统部分地基于所述磁盘类型和指定的磁盘存储类型选择存储优化。在一些实施例中,修改虚拟磁盘还包括修改所述虚拟磁盘以与描述操作系统映像磁盘类型的元数据的相关联或包括描述操作系统映像磁盘类型的元数据。在这些实施例中,存储子系统选择包括创建虚拟磁盘的高速缓存的存储优化。在一个实施例中,虚拟磁盘可以被修改以便与描述非持久性高速缓存磁盘类型的元数据相关联或者包括描述非持久性高速缓存磁盘类型的元数据。在这个实施例中,存储子系统可选择包括重排序写操作和提前的写确认的任何一个的存储优化。在又一个实施例中,虚拟磁盘可以被修改以便与描述映像定制磁盘类型的元数据相关联或者包括描述映像定制磁盘类型的元数据。在这个实施例中,存储子系统可选择包括安全措施的存储优化。在另一个方面,此处描述的是一种使用指示磁盘的磁盘类型的元数据为虚拟化环境中的磁盘选择存储优化的系统。所述系统包括在计算设备上执行以创建包括至少一个虚拟磁盘的虚拟机模板的虚拟桌面架构。该虚拟桌面架构接着响应于创建所述虚拟机模板,修改所述至少一个虚拟磁盘以便与描述所述至少一个虚拟磁盘的磁盘类型的元数据相关联或包括描述所述至少一个虚拟磁盘的磁盘类型的元数据。该系统还包括在虚拟化环境中执行的虚拟机,其中所述虚拟机是使用由所述虚拟桌面架构创建的虚拟机模板创建的。该系统也包括在虚拟化环境中执行以获得所述至少一个虚拟磁盘的元数据的存储子系统。当获得所述元数据时,存储子系统部分地基于所述元数据中所描述的磁盘类型为所述至少一个虚拟磁盘选择存储优化。
在下面的附图描述了此处描述的系统和方法的某些示意性实施例,其中相同的附图标记涉及相同的元件。这些所描述的实施例应被理解所公开的方法和系统的示意性说明,而不是对于本申请的任何限制。图IA描述了提供对可执行应用程序的计算设备的远程访问的网络环境的实施例;图IB和图IC是描述计算设备的实施例的框图;图2A和图2B是描述虚拟化环境的实施例的框图;图3是描述虚拟化环境和虚拟桌面架构环境的实施例的框图;图4A是描述用于修改虚拟磁盘的方法的实施例的流程图;图4B是描述用于选择存储优化的方法的实施例的流程图。
具体实施例方式图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、CitrixSystems、IBM、VMware公司开发的虚拟机监控程序或任何其他虚拟机监控程序管理的任何虚拟机。在其他实施例中,虚拟机102C可以由任何虚拟机监控程序管理,而仍在其他实施例中,虚拟机102C可由在服务器106上执行的虚拟机监控程序或在客户机102上执行的虚拟机监控程序管理。在一些实施例中,客户机102可以执行、操作或者以其它方式提供应用,该应用可为下列应用中的任何一个软件、程序、可执行指令、虚拟机、虚拟机监控程序、web浏览器、基于web的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、Java小程序、与类似软IP电话的网络电话(VoIP)通信相关的软件、流式传输视频和/或音频的应用、促进实时数据通信的应用、HTTP客户机、FTP客户机、Oscar客户机、Telnet客户机或可执行指令的任何其他集合。仍在其他实施例中包括显示由在服务器106或其他位于远程的机器上远程执行的应用所产生的应用输出的客户设备102。在这些实施例中,客户设备102可以在应用窗口、浏览器或其他输出窗口中显示应用输出。在一个实施例中,应用是桌面,而在其他实施例中,应用是产生桌面的应用。在一些实施例中,服务器106执行远程呈现客户端或其他客户端或程序,这些客户端或程序使用瘦客户端或远程显示协议来捕获由在服务器106上执行的应用产生的显示输出并且将应用显示输出传输到远程客户机102。瘦客户端或远程显示协议可以是下列协议的任何一个由位于Ft. LauderdaleFlorida的Citrix Systems公司制造的独立计算架构(ICA)协议;或由位于Washington,Redmond的Microsoft公司制造的远程桌面(RDP)协议。计算环境101可包括不只一个服务器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 或 SNOWLEOPARD)。在其他实施例中,服务器群106可包括执行第一类型操作系统平台的第一组服务器106和执行第二类型操作系统平台的第二组服务器106。在其他实施例中,服务器群106可包括执行不同类型操作系统平台的服务器106。
在一些实施例中,服务器106可为任何服务器类型。在其他实施例中,服务器106可以是下列服务器类型的任何一个文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、SSL VPN服务器、防火墙、应用服务器或主应用服务器、执行活动目录的服务器106、或者执行提供防火墙功能、应用功能或负载平衡功能的应用加速程序的服务器106。在一些实施例中,服务器106可以是包含远程认证拨入用户服务的RADIUS服务器。在服务器106包括设备的实施例中,服务器106可以是由下列制造商的任何一个制造的设备=Citrix应用网络组、Silver PeakSystems 公司、Riverbed Thechnology 公司、F5 Networks 公司、或 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执行下列类型的所寄载的服务器应用的任何一个Citrix Online Division公司提供的 G0T0MEETING、位于 California,SantaClara 的 WebEx 公司提供的 TOBEX,或者 Microsoft公司提供的 MicrosoftOffice LIVE MEETING。在一些实施例中,客户机102可以是寻求访问服务器106提供的资源的客户机节点。在其他实施例中,服务器106可为客户机102或客户机节点提供对所寄载的资源的访问。在一些实施例中,服务器106作为主节点运行,这样它可与一个或多个客户机102或服务器106通信。在一些实施例中,主节点可识别并且向一个或多个客户机102或服务器106提供与寄载所请求的应用的服务器106相关的地址信息。仍在其他实施例中,主节点可以是服务器群106、客户机102、客户机节点102的集群或设备。一个或多个客户机102和/或一个或多个服务器106可以在被安装在计算环境中的机器和设备之间的网络104上传输数据。网络104可包括一个或多个子网,且可被安装在客户机102、服务器106和被包含在计算环境101中的计算机器和设备的任何组合之间。在一些实施例中网络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、GPRSUMTS或可在移动设备间传输数据的其他任何协议。图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公司制造的微处理器单元;由Califirnia, Santa Clara的Transmeta公司制造的微处理器单元;诸如国际商业机器公司制造的RS/6000处理器;由Advanced Micro Devices公司制造的处理器;或逻辑电路的任何其他组合。仍在中央处理单元122的其他实施例可包括下列任何组合微处理器、微控制器、具有单处理核的中央处理单元、具有两个处理核的中央处理单元或具有不只一个处理核的中央处理单元。尽管图IC描述了包括单个中央处理单元121的计算设备,但在一些实施例中计算设备100可包括一个或多个处理单元121。在这些实施例中,计算设备100可存储和执行固件或其他可执行指令,这些固件或指令在被执行时,指引一个或多个处理单元121来同时执行指令或同时在一个数据片上执行指令。在其他实施例中,计算设备100可存储和执行固件或其他可执行指令,这些固件或指令在被执行时,指引一个或多个处理单元121各自执行一组指令的一部分。例如每个处理单元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或SynchBurstSRAM(BSRAM)、动态随机访问存储器DRAM、快速页模式DRAM(FPM DRAM)、增强DRAM (EDRAM)、扩展数据输出RAM (EDO RAM)、扩展数据输出DRAM (ED0DRAM)、脉冲串扩展数据输出 DRAM (BEDO DRAM)、增强型 DRAM (EDRAM)、同步 DRAM (SDRAM)、JEDEC SRAM、PC100SDRAM、双数据传输率 SDRAM(DDRSDRAM)、增强 SRAM(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、NetVIOS、Ehernet, ARCNET、SONET、SIDH、光纤分布数据接口 (FDDI)、RS232、RS485、IEEE802. 11、IEEE802. llaIEEE802. lib、IEEE802. llg、CDMA、GSM、WiMax 和直接异步连接)也可建立连接。计算设备100的一个形式包括可以通过任意类型和/或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS),或Citrix Systems公司制造的Gitrix网关协议的隧道协议来与其他计算设备100’通信的网络接口 118。网络接口 118的形式可以包括内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算设备100连接到能够通信并执行这里所描述的方法和系统的网络的任意其它设备中的任何一个。计算设备100的实施例包括下列I/O设备130A-130N的任何一个键盘126、定位设备127、鼠标、触控板、光笔、轨迹球、话筒、绘图板、视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机、或可执行此处描述的方法和系统的任何其他输入/输出设备。在一些实施例中I/O控制器123可连接多个I/O设备130A-130N以便控制一个或多个I/O设备。I/O设备130A-130N的一些实施例被配置为提供存储或安装介质116,而其他实施例可为接收诸如由Twintech Industry公司制造的设备的USB闪存驱动线的USB存储设备提供通用串行总线(USB)。仍在其他实施例中I/O设备130可以是系统总线150和外部通信总线,如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线或串行SCSI总线之间的桥。在一些实施例中,计算设备100可以连接多个显示设备124A-1MN,在其他实施例中计算设备100可以连接单个显示设备124,而仍在其他实施例中计算设备100可以连接相同类型或形式的显示设备1MA-124N或不同的类型或形式的显示设备。显示设备124A-124N的实施例可被如下方式支持和允许一个或多个I/O设备130A-130N、I/O控制器123、I/O设备130A-130N和I/O控制器123的组合、能支持显示设备124A-1MN的硬件和软件的任何组合、任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示设备124A-1MN对接、通信、连接或使用显示设备。在一些实施例中,计算设备100可被配置为使用一个或多个显示设备124A-1MN,这些配置包括有多个连接器以与多个显示设备124A-124N对接;多个视频适配器且每个视频适配器与显示设备124A-1MN中的一个或多个连接;有操作系统被配置用于支持多个显示设备124A-1MN ;使用被包含在计算设备100内部的电路和软件来连接并使用多个显示设备124A-1MN ;和在主计算设备100和多个次级计算设备上的执行软件来使主计算设备100能使用次级计算设备的显示设备作为用于主计算设备的显示设备124A-1MN。仍在计算设备100的其它实施例中,可包括由多个次级计算设备提供的多个显示设备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 禾口 WINDOWSVISTA的版本的MICROSOFT WINDOWS的操作系统;不同发行版本的Unix和Linux操作系统;由苹果计算机出品的MAC OS的任意版本;由国际商业机器公司出品的OS/2 ;任意嵌入式操作系统;任意实时操作系统;任意开源操作系统;任意专有操作系统;任意用于移动计算设备的操作系统,或者任意其它操作系统。仍在其他实施例中,计算设备100可执行多个操作系统。例如计算设备100可执行PARALLELS或能执行或管理执行第一操作系统的虚拟机的又一个虚拟化平台,而计算设备100执行不同于第一操作系统的第二操作系统。计算设备100可以体现为下列计算设备的任何一个计算工作站、桌面计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话、便携通信设备、媒体播放设备、游戏系统、移动计算设备、笔记本、由苹果计算机公司出品的IPOD系列设备、由索尼公司出品的PLAYSTATION系列设备的任何一个、由Nintendo公司出品的Nintendo系列设备的任何一个;由微软公司出品的XBOX系列设备的任何一个或能够通信并有足够的处理器能力和存储容量以执行此处所述的方法和系统的任意其它类型和/或形式的计算或者电信或媒体设备。在其它实施例中,计算设备100可以是诸如下列移动设备的任何一个的移动设备JAVA使能蜂窝电话或个人数据助理(PDA),诸如i55sr、i58sr,i85s,i88s,i90c, i95cl或imllOO,以上这些均由摩托罗拉公司制造;由Kyocera公司制造的6035或7135 ;由Samsung电子有限公司制造的 300或i330 ;由I^alm公司出品的Treol80、270、600、650、680、700p、700w或750智能电话;或能执行此处所述的方法和系统的任何其他移动计算设备。仍在其他实施例中,计算设备100可以是下列移动计算设备中的任何一个黑莓的任一系列,或由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上执行包括工具堆栈234的控制程序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可包括一个或多个物理磁盘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可包括一个或多个物理设备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可被称为宿主操作系统214,而其他操作系统可被称为客户操作系统。客户操作系统可包括执行在虚拟机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可包括由位于California,Palo Alto的VMWare公司制造的虚拟机监控程序;XEN虚拟机监控程序,其开发由开源Xen. org社区监督的开源产品;由微软公司提供的HyperV、虚拟服务器和虚拟PC虚拟机监控程序,或其他。在一些实施例中,计算设备201执行虚拟机监控程序202,该虚拟机监控程序创建客户操作系统可在其上执行的虚拟机平台。在这些实施例中,计算设备201可被称为宿主服务器。这样的计算设备的例子是由位于FL,R)rt 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可通过在第一计算设备20IA上执行的虚拟机监控程序202A (未示出)和在第二计算设备20IB上执行的虚拟机监控程序202B(未示出)之间的通信链路交换数据。通过这条通信链路,计算设备201A-B可交换关于处理器和资源池中其他可利用的物理资源的数据。而且通过虚拟机监控程序202A-B之间的连接,虚拟机监控程序202A-B可管理分布在一个或多个计算设备201A-B上的资源池,例如在第一计算设备201A和第二计算设备201B上的可利用资源。虚拟机监控程序202A-B还可虚拟化这些资源并使它们对于在计算设备201A-B上执行的虚拟机232成为可利用的。在本实施例的又一情况下,单个虚拟机监控程序202可管理和控制在计算设备20IA-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(例如,在第二计算设备201B上)通信或管理计算设备201上的虚拟机232的功能。在又一个实施例中,工具堆栈2M包括用于向虚拟机群的管理员提供改善的管理功能的经定制的应用。在一些实施例中,至少一个工具堆栈2M和控制程序220包括用于提供远程配置和控制运行在计算设备201上的虚拟机的接口的管理API。在其他实施例中,控制程序220通过工具堆栈2M与虚拟机监控程序202通信。 在一个实施例中,虚拟机监控程序202在由虚拟机监控程序202创建的虚拟机232内执行客户操作系统230。在又一个实施例中,客户操作系统230向计算设备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作为该使用者的个人机器。这个虚拟机可通过允许用户以与用户通过宿主操作系统与计算设备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可包括与和元数据322相关联的虚拟磁盘226A通信的控制程序220。控制程序220可进一步包括可存储和虚拟化环境302的虚拟磁盘2 相关联的元数据322的磁盘类型数据库350。附加虚拟机232B可执行与和元数据322相关联的虚拟磁盘226B通信的客户操作系统230A。计算设备201可包括与虚拟机监控程序202相接口并且包括存储子系统316的硬件层210。另一个计算设备203可包括VDI平台310,该VDI平台310包括一个或多个虚拟机模板323A-N(此处总称为虚拟机模板32 的虚拟机模板池318和包含一个或多个用户会话304A-N(此处总称为用户会话304)的一组VDI用户会话314。另一个计算设备203还可执行虚拟机创建器330。进一步参考图3,在一个实施例的更多细节中,每个计算设备201,203可以是此处所述的任何计算设备100。在一些实施例中,计算设备201,203可以是服务器106或客户机102。计算设备201,203可以被称为第一计算机、第二计算机、第三计算机等。而且,计算设备201,203可在诸如此处所述的任何网络104的网络上互相通信。在一个实施例中,计算设备201可以是远程计算机201,而另一个计算设备可以是本地计算机203。正如计算设备201,203可以是此处所述的任何计算机器100,硬件层210也可以是此处所描述的任何硬件层210并且可包括此处描述的任何计算机硬件。执行在计算设备201上的虚拟化环境302可以是此处所描述的任何虚拟化环境。尤其是,虚拟化环境302可包括任一虚拟机监控程序配置,或者图2A所示的虚拟机监控程序配置或图2B所示的虚拟机监控程序配置的任一个。在一个实施例中,被包含在虚拟化环境302中的虚拟机监控程序202可以是任何虚拟机监控程序202,或此处所描述的任何虚拟机监控程序202。图3示出了包括虚拟化环境302的计算设备302,该虚拟化环境302包括诸如此处所描述的任一控制虚拟机232的控制虚拟机232。控制虚拟机232可执行诸如此处所述的任一控制程序220的控制程序220,并且可包括诸如此处所述的任一虚拟磁盘2 的虚拟磁盘226。尽管图3图示了包括控制虚拟机232A和另一个虚拟机232B的虚拟化环境302,在一些实施例中,虚拟化环境302可包括任何数量的虚拟机232。虚拟机232可执行诸如此处所描述的任一客户操作系统230的客户操作系统230,并且可包括诸如此处所述的任一虚拟磁盘226的虚拟磁盘226。在一些实施例中,硬件层210包括存储子系统310。在一个实施例中,存储子系统316可以是包括计算设备201的物理硬盘以及管理读写那些物理磁盘的管理程序的系统。仍在其他实施例中,存储子系统316可包括计算设备的任何物理存储仓库,该物理存储仓库包括永久性存储器存储、暂时存储器存储、磁盘驱动器(例如,光盘、软盘、磁带),硬盘、外部硬驱动、闪存、网络附加存储、存储区域网络或计算设备201可访问的任何其他存储仓库。当存储子系统316根据被包含在虚拟机232中的虚拟磁盘2 优化存储器特性时,可包括确定读/写计算设备201的物理磁盘的优化方式以便服务于访问虚拟磁盘2 的请求。在一些实施例中,存储子系统316可选择存储优化以优化物理存储器资源的管理。在这些实施例中,虚拟化环境302不选择存储优化而是传递磁盘类型数据和虚拟盘2 信息到存储子系统316以便于子系统316可以选择存储优化。取决于可利用存储的类型和虚拟磁盘226的磁盘类型,存储子系统316可具访问不同的存储优化。通过插件或其他模块化应用可以利用这些优化。存储子系统316可以使用关于虚拟磁盘2 磁盘类型和计算设备201的物理存储的数量、类型及其上的限制的信息来选择合适的存储优化。在一个实施例中,被包含在每个虚拟机232中的虚拟磁盘2 还可存储、包含元数据322或与之相关联。元数据322可被存储在控制程序220中的磁盘类型数据库350中,或者被存储在计算设备201的任何集中式存储仓库中。例如,元数据322可被存储在控制虚拟机232的存储仓库中,或虚拟机监控程序202可访问的存储仓库中,或任何其他类似存储机制。在一些实施例中,元数据322可被直接存储在虚拟磁盘2 上。元数据322可以是任意形式的元数据,例如电子信息、电子文件、标签、图像、文档、文本文件、列表、或包含信息的电子数据的任何其他形式。元数据322可包含关于虚拟磁盘226的信息,例如磁盘类型、和磁盘相关联的功能特性、用于磁盘的压缩方案,或关于磁盘的任何其他信息。在一些实施例中,元数据322被存储在控制程序220的上下文中所存储的磁盘类型数据库350中。在其他实施例中,磁盘类型数据库350可被存储在控制虚拟机232A中或者可被虚拟化环境302中的每个虚拟机232和控制程序220访问的任何集中式存储区域。磁盘类型数据库350可以是任何数据库,且在一些实施例中可以是任何存储仓库。被存储在磁盘类型数据库350中的元数据322可以是此处所描述的任何类型的元数据322,以及可以是和虚拟化环境302的虚拟磁盘2 相关联的元数据322。尽管图3描述了单台物理机器201上的虚拟化环境302,在其他实施例中,存储元数据322的数据库350可作为磁盘类型数据库350为不在同一物理机器201上执行的虚拟机232中的虚拟磁盘2 存储元数据322。在其他实施例中,磁盘类型数据库350可为多个虚拟化环境302中多个虚拟磁盘2 存储元数据322,其中虚拟化环境可以在不同的和分开的物理计算机上执行。仍在其他实施例中,磁盘类型数据库350可位于远离计算设备201的计算机或存储设备上。在一个实施例中,每个虚拟磁盘2 可有磁盘类型。磁盘类型是虚拟磁盘执行的功能的表征。在一些实施例中,磁盘类型可以涉及虚拟磁盘226的基本用途。尽管磁盘类型可指示基本功能或目的,在一些实施例中虚拟磁盘2 可执行没有列入被指派给虚拟磁盘226的磁盘类型的典型特性的范围内的其他功能。下面的图表说明了示例磁盘类型和用于该磁盘类型的典型的存储优化。这个图表不是决定每种可能的磁盘类型或存储优化,而是描述磁盘类型和伴随的存储优化的实施例。
权利要求
1.一种使用指示磁盘的磁盘类型的元数据为虚拟化环境中磁盘选择存储优化的方法,所述方法包括由在计算设备上执行的虚拟桌面架构创建包括至少一个虚拟磁盘的虚拟机模板;由所述虚拟桌面架构响应于创建所述虚拟机模板修改所述至少一个虚拟磁盘以包括描述所述至少一个虚拟磁盘的磁盘类型的元数据;由虚拟化环境执行使用由所述虚拟桌面架构创建的所述虚拟机模板所创建的虚拟机;由所述虚拟化环境的存储子系统获得所述至少一个虚拟磁盘的元数据;以及;由所述存储子系统部分地基于所述元数据中所描述的所述磁盘类型为所述至少一个虚拟磁盘选择存储优化。
2.根据权利要求1所述的方法,还包括复制所述虚拟机模板以创建包括包含描述磁盘类型的元数据的所述至少一个虚拟磁盘的第二虚拟机模板。
3.根据权利要求1所述的方法,还包括根据所述虚拟机附接经优化的存储。
4.根据权利要求1所述的方法,其中选择所述存储优化还包括部分地基于所述磁盘类型和特定的磁盘存储类型选择存储优化。
5.根据权利要求1所述的方法,其中修改所述虚拟磁盘以包括描述磁盘类型的元数据还包括修改所述虚拟磁盘以包括描述操作系统映像磁盘类型的元数据。
6.根据权利要求5所述的方法,其中选择存储优化还包括选择包括创建虚拟磁盘的高速缓存的存储优化。
7.根据权利要求1所述的方法,其中修改所述虚拟磁盘以包括描述磁盘类型的元数据还包括修改所述虚拟磁盘以包括描述非持久性高速缓存磁盘类型的元数据。
8.根据权利要求7所述的方法,其中选择存储优化还包括选择包括重排序写操作和提前的写确认中的任何一个的存储优化。
9.根据权利要求1所述的方法,其中修改所述虚拟磁盘以包括描述磁盘类型的元数据还包括修改所述虚拟磁盘以包括描述映像定制磁盘类型的元数据。
10.根据权利要求9所述的方法,其中选择存储优化还包括选择包括安全措施的存储优化。
11.一种使用指示磁盘的磁盘类型的元数据为虚拟化环境中磁盘选择存储优化的系统,所述系统包括在计算设备上执行的虚拟桌面架构,用于创建包括至少一个虚拟磁盘的虚拟机模板,响应于创建所述虚拟机模板,修改所述至少一个虚拟磁盘以包括描述所述至少一个虚拟磁盘的磁盘类型的元数据;以及在虚拟化环境中执行的虚拟机,所述虚拟机是使用由所述虚拟桌面架构创建的所述虚拟机模板创建的;以及所述虚拟化环境的存储子系统,用于获得所述至少一个虚拟磁盘的元数据;并且部分地基于所述元数据中所描述的所述磁盘类型为所述至少一个虚拟磁盘选择存储优化。
12.根据权利要求11所述的系统,其中所述虚拟桌面架构复制虚拟机模板以创建包括包含描述磁盘类型的元数据的所述至少一个虚拟磁盘的第二虚拟机模板。
13.根据权利要求11所述的系统,其中所述存储子系统根据所选择的存储优化附接经优化的存储。
14.根据权利要求11所述的系统,其中所述存储子系统部分地基于所述磁盘类型和特定的磁盘存储类型选择所述存储优化。
15.根据权利要求11所述的系统,其中所述元数据描述操作系统映像磁盘类型。
16.根据权利要求15所述的系统,其中所述存储优化包括所述虚拟磁盘的高速缓存。
17.根据权利要求11所述的系统,其中所述元数据描述非持久性高速缓存磁盘类型。
18.根据权利要求17所述的系统,其中所述存储优化包括重排序写操作和提前的写确认中的任何一个。
19.根据权利要求11所述的系统,其中所述元数据描述映像定制磁盘类型。
20.根据权利要求19所述的系统,其中所述存储优化包括安全措施。
全文摘要
用于虚拟化环境的虚拟磁盘的存储优化选择,其中可部分地基于被包含在虚拟机中的虚拟磁盘的磁盘类型选择存储优化。由虚拟化环境向虚拟化环境中数据库查询与虚拟磁盘相关联的元数据可发现虚拟磁盘的磁盘类型。当虚拟桌面架构创建虚拟磁盘和包括至少一个虚拟磁盘的虚拟机模板时元数据可被创建。虚拟磁盘可被修改以包括描述虚拟磁盘的磁盘类型的元数据或者与之相关联。当执行包括经修改的虚拟磁盘的虚拟机时,虚拟化环境的存储子系统可获得虚拟磁盘的元数据以发现虚拟磁盘的磁盘类型。
文档编号G06F3/06GK102368201SQ201110079379
公开日2012年3月7日 申请日期2011年3月30日 优先权日2010年3月30日
发明者D·斯科特, R·夏普 申请人:思杰系统有限公司