掌桥专利:专业的专利平台
掌桥专利
首页

用于虚拟化系统中虚拟化操作的虚拟化引擎

文献发布时间:2024-04-18 20:00:50


用于虚拟化系统中虚拟化操作的虚拟化引擎

背景技术

用户依靠应用和服务来执行计算任务。分布式计算系统(例如,云计算平台)使用支持网络访问可配置计算和存储资源共享池的计算架构来托管应用和服务。云计算平台的虚拟化系统提供支持作为云计算平台的软件和硬件架构的一部分的客户工作负载和云计算对象(例如,用户帐户、应用和服务)的操作环境。例如,桌面虚拟化(或桌面即服务“DaaS”)技术支持提供全面的桌面环境,以实现高度灵活和安全的桌面交付模型。

通常,虚拟化系统没有配置计算逻辑和共享虚拟化服务来在云计算平台中交付虚拟桌面。例如,与虚拟桌面相关联的虚拟机是通过主要为传统客户工作负载和配置设计的传统部署模型来实现的。传统部署模型的虚拟化操作无法充分解决支持虚拟机所需的功能,以确保虚拟桌面环境的足够性能。因此,更全面的虚拟化系统(具有执行虚拟化操作的替代基础)可以改进云计算平台中虚拟化系统的计算操作和接口。

发明内容

本文描述的技术的各方面一般涉及尤其为虚拟化系统中的虚拟化管理提供虚拟化操作的系统、方法和计算机存储介质,虚拟化操作包括激活操作、挂起操作和恢复操作。虚拟化操作是被执行以完成与虚拟机相关联的特定任务(例如,激活、挂起或恢复)的操作。基于缓存(cache)引擎对虚拟机执行激活操作、挂起操作或恢复操作。缓存引擎管理(例如,存储和传送)运行虚拟机的应用的第一文件和第一文件的文件数据。管理第一文件和文件数据有助于避免在虚拟机的挂起操作期间将第一文件的文件数据写入操作系统盘,并且有助于避免在虚拟机的恢复操作期间从操作系统盘读取第一文件的文件数据。第一文件被维护在缓存引擎中作为可由与主机相关联的多个虚拟机(即,客户虚拟机)访问的第一文件的单个实例。使用唯一标识符和缓存索引从操作系统盘检索第一文件并将第一文件存储在缓存引擎中。唯一标识符和缓存索引支持执行虚拟化操作。缓存索引包括当在虚拟机或多个其他虚拟机上运行时被管理的多个应用文件(例如,操作系统盘中的不同类型应用的应用文件)。

通常,虚拟化系统没有配置用于与在云计算平台中交付虚拟桌面相关联的共享虚拟化服务的计算逻辑。针对传统虚拟化系统操作的局限性的技术方案为虚拟化系统中的虚拟化管理提供虚拟化操作,虚拟化操作包括激活操作、挂起操作和恢复操作。本文统称为“应用”的软件程序(例如,操作系统“OS”程序或应用程序)可以被识别用于支持共享虚拟化管理的计算逻辑,其中多个应用文件(例如,第一文件和第二文件)支持在虚拟机(例如,与虚拟桌面相关联的虚拟机)上运行应用。主机(例如,管理程序服务器)在主机上的缓存引擎(运行缓存索引)中维护多个应用文件(例如,只读文件或二进制文件)。主机上的虚拟机(例如,客户虚拟机)可以检索多个应用文件以支持运行应用。第一文件和第二文件支持运行应用,其中第一文件在虚拟存储器中作为运行进程存储器的一部分并且需要被写入持久存储设备。在操作中,在挂起操作期间,第一文件(但不是第二文件)的唯一标识符和文件元数据(例如,偏移量和长度信息)被传送到缓存引擎,并且在恢复操作期间,基于唯一标识符和文件元数据从缓存引擎检索第一文件的文件数据。有利地,基于唯一标识符、文件元数据和缓存索引来存储和检索第一文件可以减少需要为将要成功执行的挂起操作和恢复操作而保留的存储总量。

另外,主机提供具有缓存索引的缓存引擎,缓存索引支持存储与第一应用相关联的第一文件和与第二应用相关联的第二文件。第一文件可以是支持第一应用的多个文件中的至少一个文件,并且第二文件可以是支持第二应用的多个文件中的至少一个文件。缓存引擎使用用于第一虚拟机和第二虚拟机两者的第一文件的单个实例的第一唯一标识符,以及用于第一虚拟机和第二虚拟机两者的第二文件的单个实例的第二唯一标识符。第一虚拟机可以与访问运行第一应用(诸如文处理应用)的第一虚拟桌面的第一用户相关联,该文处理应用基于第一文件运行。第二虚拟机可以与访问运行第二应用(诸如电子表格应用)的第二虚拟桌面的第二用户相关联,该电子表格应用基于第二文件运行。第一虚拟机还可以与第二应用相关联,并且第二虚拟机也可以与第一应用相关联。

此外,主机和虚拟机可以基于虚拟化操作(例如,激活、挂起或恢复)来提供桌面虚拟化服务。主机包括缓存引擎和支持在虚拟机上运行应用的多个应用文件的缓存索引,每个应用文件具有唯一标识符。缓存引擎包括应用维护管理器(例如维护微服务),其逐步淘汰不支持的应用(例如应用文件或二进制文件)并将新应用引入到缓存索引中并引入新的二进制文件。例如,可以使用与所支持的应用的列表相关联的使用中计数器,基于流行的操作系统二进制文件和应用二进制文件来平衡缓存引擎中的可用缓存的消耗。

提供本发明内容是为了以简化的形式介绍下面在具体实施方式中进一步描述的概念的选择。本发明内容无意于识别所要求保护的主题的关键特征或基本特征,也无意于用来帮助确定所要求保护的主题的范围。

附图说明

下面结合附图对本发明所描述的技术进行详细说明,其中:

图1A是根据本文描述的技术的各方面的用于在虚拟化系统中使用虚拟化引擎提供虚拟化操作的示例性虚拟化系统环境的框图;

图1B是根据本文描述的技术的各方面的用于在虚拟化系统中使用虚拟化引擎提供虚拟化操作的示例性虚拟化系统环境的框图;

图2A-2D是根据本文描述的技术的各方面的用于在虚拟化系统中使用虚拟化引擎提供虚拟化操作的示例性虚拟化系统环境的图示;

图3提供了根据本文描述的技术的各方面的在虚拟化系统中使用虚拟化引擎提供虚拟化操作的第一示例性方法;

图4提供了根据本文描述的技术的各方面的在虚拟化系统中使用虚拟化引擎提供虚拟化操作的第二示例性方法;

图5提供了根据本文描述的技术的各方面的在虚拟化系统中使用虚拟化引擎提供虚拟化操作的第三示例性方法;

图6提供了适合用于实现本文描述的技术的各方面的示例性虚拟化系统环境的框图;

图7提供了适合用于实现本文描述的技术的各方面的示例性分布式计算环境的框图;以及

图8是适合用于实现本文描述的技术的各方面的示例性计算环境的框图。

具体实施方式

技术问题、技术方案和技术改进的概述

云计算基于共享资源提供按需计算资源(例如,网络、计算和存储)。云计算平台的客户可以为特定的云计算服务模型(例如,面向服务的架构)付费,以换取使用云计算平台的分布式计算资源。云计算平台可以提供不同的部署模型,其定义如何访问云计算平台上的共享资源。例如,云计算平台提供商可以支持桌面虚拟化或桌面即服务(“DaaS”)。桌面虚拟化技术支持提供全面的桌面环境,以实现高度灵活和安全的桌面交付模型。桌面虚拟化(例如,虚拟化系统)可以简单地用于在云计算平台上交付应用和服务,特别是管理不同的桌面实例(例如,向桌面部署模型添加新的应用和服务)。理想情况下,虚拟化系统管理应该大规模提供最终用户期望从传统桌面获得的用户体验类型,同时进一步提供更大的灵活性,以便在任何地方、任何设备上工作,并更轻松地进行协作。

通常,虚拟化系统没有配置用于在云计算平台中交付虚拟环境的共享虚拟化服务的计算逻辑。用于在云计算平台中交付虚拟环境的共享虚拟化服务的计算逻辑尚未实现,因为开发高效的虚拟化管理系统(其充分解决所需的虚拟化管理操作范围)以使与桌面虚拟化相关联的性能和始终运行与桌面虚拟化相关联的虚拟机的计算资源成本平衡存在挑战。在传统部署模型中,客户工作负载是不同的,并且最终用户计算设备仅访问单独的应用会话,其中应用在支持多个最终用户计算设备的虚拟机上运行。

另外,传统的桌面虚拟化可以使虚拟机保持关闭或挂起状态,以节省云计算平台中的计算资源。然而,如果虚拟机启动时间很慢,最终用户体验可能会降低。例如,虚拟桌面的虚拟机的文件是从不在虚拟机主机上的远程存储中检索的,从而延迟了访问计算资源的能力。管理不在传统部署模型中操作且启动时间较慢的虚拟机会暴露出传统系统管理虚拟机能力的局限性,尤其是在DaaS上下文中。例如,与虚拟桌面相关联的虚拟机是通过主要为传统客户工作负载设计的传统部署模型来实现的,并且配置不能充分解决支持虚拟机所需的功能,以确保虚拟桌面环境的足够性能。因此,更全面的虚拟化系统(具有执行虚拟化操作的替代基础)可以改进云计算平台中虚拟化系统的计算操作和接口。

本公开的实施例旨在为虚拟化系统中的虚拟化管理提供虚拟化操作,虚拟化操作包括激活操作、挂起操作和恢复操作。虚拟化操作是被执行以完成与虚拟机相关联的特定任务(例如,激活、挂起或恢复)的操作。基于缓存引擎对虚拟机执行激活操作、挂起操作或恢复操作。缓存引擎管理(例如,存储和传送)运行虚拟机的应用的第一文件。管理第一文件和文件数据有助于避免在虚拟机的挂起操作期间将第一文件的文件数据写入操作系统盘,并且有助于避免在虚拟机的恢复操作期间从操作系统盘读取第一文件的文件数据。第一文件被维护在缓存引擎中作为可由与主机相关联的多个虚拟机(即,客户虚拟机)访问的第一文件的单个实例。使用唯一标识符和缓存索引从操作系统盘检索第一文件并将第一文件存储在缓存引擎中。唯一标识符和缓存索引支持执行虚拟化操作。缓存索引包括当应用在虚拟机或多个其他虚拟机上运行时所管理的多个应用文件(例如,操作系统盘中的不同类型应用的应用文件)。

可以通过示例并参考图1A和图1B来描述技术方案的各方面。图1A示出虚拟化系统100,虚拟化系统100包括虚拟化引擎110、主机操作系统120、具有虚拟机存储132的虚拟机130、具有缓存索引142的缓存引擎140、操作系统盘150和虚拟桌面160。

虚拟化系统100为虚拟系统提供虚拟化操作。虚拟化系统100包括与主机操作系统和虚拟机(例如,主机操作系统120和虚拟机130)一起操作的缓存引擎(例如,缓存引擎110)以支持执行提供本文描述的功能的虚拟化操作。主机操作系统和虚拟机包括补充和增补用于提供虚拟化操作的虚拟化引擎110的缓存引擎计算逻辑和指令的计算逻辑和指令。例如,如本文所述,虚拟化引擎110可以执行与缓存索引(例如,缓存索引142)相关联的虚拟化操作,并且提供激活、挂起和恢复操作。

虚拟化系统100提供对提供DaaS的总体成本的平衡。改进的平衡为最终用户提供了应用性能优势,同时使维护虚拟桌面的计算资源成本低于传统虚拟化系统的成本。例如,虚拟机可以保持在关闭或挂起状态以节省虚拟化系统的运行成本,并且虚拟化引擎110基于包括具有缓存索引的缓存引擎和维护缓存引擎的主机服务器的计算逻辑,提供比传统虚拟化系统更快的虚拟化操作(即,激活、挂起和恢复操作)。

在高层次上,云计算提供商了解一组有限的应用(例如,应用程序或操作系统程序),诸如流行的操作系统和流行的应用程序,这些应用程序部署在通过云计算提供商的分布式计算环境支持的特定地理区域中。应用可以是只读文件或二进制文件。访问应用文件(例如,第一文件和第二文件)。还可以访问多个其他应用的应用文件。操作系统盘150远离正在运行主机操作系统120的计算节点(未示出)。

参考图1B,图1B示出与虚拟化系统100B对应的虚拟化系统100B,该虚拟化系统包括虚拟化引擎110;主机操作系统120;具有虚拟机存储器132和虚拟化操作逻辑134的虚拟机130;虚拟机130B;具有第一文件144A和第一唯一标识符144B、第二文件146A和第二唯一标识符146B、虚拟化操作逻辑148和应用维护管理器190的缓存引擎140;以及主机驱动170。在高层次上,虚拟化引擎(例如,管理程序服务器或主机)在缓存引擎140中存储具有对应标识符(例如,第一唯一标识符144B和第二唯一标识符146B)的应用文件(例如,第一文件144A和第二文件146A)。应用文件可以是用于客户虚拟机(例如,虚拟机130和虚拟机130B)操作系统或应用的只读文件或二进制文件。

应用文件可以是只读文件或二进制文件的单个实例,而不管可以使用多少个客户虚拟机实例的实例。例如,如果文件“System32.exe”属于Windows OS版本X.Y,并且存在运行Windows OS版本X.Y的三个不同的客户虚拟机,则文件System32.exe的单个副本位于缓存引擎140(例如,管理程序缓存)中。该文件的每个客户虚拟机OS访问操作都会从缓存引擎读取该文件的数据。此外,虚拟机可以与拦截对唯一标识符和文件元数据的读请求的过滤器驱动(例如,虚拟机驱动180)相关联,过滤器驱动与主机的主机驱动(例如,主机驱动170)通信以访问缓存引擎中的第一文件的文件数据。

缓存引擎140中的虚拟化操作逻辑148和虚拟机130中的虚拟化操作逻辑134提供对执行根据本文描述的实施例的虚拟化操作的支持。例如,在客户虚拟机(VM)挂起操作期间,客户VM操作系统将每个只读文件或二进制文件的唯一ID连同关于相关偏移量和长度组合(文件的部分)的信息写入缓存引擎140,相关偏移量和长度组合当前被挂起的客户VM使用。因为缓存引擎140存在于虚拟化引擎110上,所以属于作为缓存引擎140的一部分的任何文件的数据不需要作为挂起操作的一部分被写入到操作系统盘。仅文件的唯一标识符连同偏移量和长度信息将为恢复操作提供足够的信息以从本地缓存引擎140获取数据。并且,对于客户VM恢复操作,客户VM基于唯一标识符和关于相关偏移量/长度组合(之前被挂起的客户VM使用的文件的部分)的信息从缓存引擎140访问。

参考图1A,最初,在框10,主机操作系统120从主机(例如,管理程序服务器)的操作系统盘150访问应用的第一文件。在框12,主机操作系统120存储具有第一唯一标识符的第一文件,以支持避免在挂起操作期间将第一文件的文件数据写入操作系统盘。主机操作系统120与包括缓存索引142的缓存引擎140一起操作。在框14,主机操作系统120被配置为执行对应于与第一文件相关联的虚拟化操作(例如,激活、挂起、恢复)的指令,如本文更详细讨论的。在框16,主机操作系统120经由缓存引擎将第一文件的文件数据传送到虚拟机,以避免在恢复操作期间从操作系统盘读取第一文件的文件数据。

举例来说,主机操作系统120包括用于管理应用文件并使用缓存引擎140的计算逻辑。例如,主机操作系统120(例如,管理程序)支持将应用文件缓存为只读文件,其中实施方式包括具有唯一标识符的文件的查找表。缓存引擎140作为应用文件的数据存储进行操作并且支持用于访问应用文件的操作。主机操作系统120将应用文件和对应的唯一标识符存储在缓存索引142中。

在挂起操作或恢复操作期间,客户虚拟机(例如,虚拟机130)可以利用缓存索引中本地缓存的文件,而不是从操作系统盘150访问只读文件。缓存索引142可以被用于避免从操作系统盘150读取。例如,在挂起操作期间,一定百分比的文件或可执行文件(例如,第一文件而不是第二文件)作为运行进程存储器的一部分存储在虚拟存储器(即,虚拟机)中。这些文件必须写出到持久存储中。通过使用缓存引擎作为本地缓存,计算逻辑写入文件(例如,第一文件)的唯一标识符。唯一标识符可以与文件的文件元数据(例如,当前正在使用的相关偏移量/长度组合(文件的部分))一起写入。对于恢复操作,基于先前在挂起操作期间接收第一唯一标识符来传送第一文件。具体地,计算逻辑支持访问唯一标识符和文件元数据(紧凑信息),并经由缓存索引从缓存引擎140读取文件的所需部分。以这种方式,计算逻辑避免从操作系统盘150读取。

有利地,从缓存引擎140读取减少了挂起操作或恢复操作所花费的时间,因为不再需要写入操作并且来自持久存储(即,应用存储)的读取操作将仅是来自缓存引擎140的本地缓存读取。使用当前计算逻辑减少了为成功完成挂起操作和恢复操作而需要保留的存储量,并导致总体存储成本降低。

在框18,虚拟机130执行对应于与第一文件或第二文件相关联的虚拟化操作的指令。在高层次上,客户虚拟机(经由客户OS)可以包括用于挂起操作或恢复操作的计算逻辑,以识别缓存引擎142所需的文件列表(例如,使用校验和)并利用主机操作系统中的缓存索引142,而不是从OS盘(即,操作系统盘150)读取,由于云托管模型的性质,OS盘可能只能通过网络才可用。在框20,虚拟桌面160传送与虚拟化操作对应的指令。例如,虚拟桌面可以触发激活操作、挂起操作或恢复操作以使虚拟机执行激活操作、挂起操作或恢复操作,如本文所描述的。

缓存引擎140可以支持对本地缓存的文件的维护操作。例如,可以对每个服务器缓存进行维护,从而随着新操作系统和应用版本的推出,逐步淘汰不支持的二进制文件并将新的二进制文件引入缓存目标文件列表。缓存引擎的缓存消耗(例如,分配给存储的预定义大小)也可以基于最流行的操作系统和应用二进制文件进行平衡。用于此的示例计算逻辑可以基于保持使用中计数器与所支持的操作系统和应用的列表相关联。用于跟踪应用以触发从缓存引擎逐步淘汰应用的方法的其他变体和组合可以通过本公开的实施例来设想。

本公开的实施例包括提供对虚拟化操作的支持。传统的虚拟化系统可以基于作为微服务的预测性挂起或恢复算法。不幸的是,由于漫游用户的存在以及在区域活动、假日季节、随时随地工作场景等类似的大规模活动期间PC使用模式的变化,这些算法无法是准确的。相比之下,通过本文描述的实施例,主机上的OS和流行应用二进制文件的缓存模型经由主机操作系统、缓存引擎、缓存索引在不同类型的场景(包括无法由预测算法识别的场景)下加速了主机上托管的虚拟机的恢复操作或挂起操作。从操作上来说,缓存模型进一步改善了最终用户访问其虚拟桌面的体验。此外,当前缓存模型补充了预先存在的机制,从而进一步节省了获取所需的最少二进制文件的潜在延迟,而不会产生任何网络或盘相关的延迟。可以在主机(例如,管理程序服务器)启动期间填充缓存,以供以后发生的任何VM挂起或恢复使用。

用于在虚拟化系统中提供虚拟化操作的示例性环境的概述

可以通过示例并参考图2A、图2B、图2C、图2D以及图3-6来描述技术方案的各方面。图2A是基于参考图7和图8描述的示例环境的示例性技术方案环境的框图,图7和图8的示例环境用于实现所示技术方案的实施例。一般而言,技术方案环境包括适合于提供其中可以采用本公开的方法的示例虚拟化系统100的技术方案系统。具体地,图2A示出了根据本公开的实施方式的虚拟化系统100的高级架构。除了其他引擎、管理器、生成器、选择器或未示出的组件(本文统称为“组件”)之外,示出了虚拟化系统100的技术方案环境。

参考图2A,图2A是根据本公开的实施例的用于提供虚拟化操作的示例系统200,示例系统200对应于图1A中的虚拟化系统100。举例来说,举例来说,具有缓存项(例如,用于执行应用或操作系统的文件(例如,资源、资源数据或资源文件)的单个实例)的缓存(例如,整合缓存)存储在缓存中。缓存可以与根分区(例如,根分区缓存)或主机操作系统(例如,管理程序缓存)相关联。文件被分配了唯一的标识符,用于通过缓存管理该文件。然后,子虚拟机可以使与文件相关联的标识符存储在缓存(例如,虚拟盘根分区)中,而不是将文件(例如,文件的内容)存储在子虚拟盘(例如,与子虚拟机相关联的子分区的虚拟盘)上。这种通过子虚拟机存储标识符的方法有利于缓存效率、易于安装和增强安全性。

在一个实施例中,被缓存的资源是由多个不同的子虚拟机访问的只读资源。例如,子分区的资源文件(诸如system32.exe)支持执行子分区的子操作系统。存储在缓存中的资源文件可以在子虚拟机之间共享。例如,三个不同的子虚拟机使用相同的子操作系统,因此这些子虚拟机中的每个子虚拟机都请求相同的system32.exe,但主机分区中的缓存仅维护一份副本。子虚拟机基于对应的客户操作系统运行。每个客户操作系统传送对资源文件的访问请求并从根分区缓存或从管理程序缓存读取资源文件的数据。

资源文件被分配有用于与资源文件相关联的操作的唯一标识符。资源文件的唯一标识符被写入与缓存相关联的盘。唯一标识符标识特定资源。在一些情况下,唯一标识符基于偏移量和长度对来标识资源文件的一部分。偏移量和长度对与内存的一部分(例如,虚拟机挂起时正在使用的一部分)一起写入盘。资源文件是缓存的一部分,不需要作为挂起的一部分写入盘。只有文件的唯一标识符以及可能的偏移量/长度组合才能提供足够的信息来恢复或从缓存中获取资源文件的数据。

在与客户虚拟机(VM)相关联的恢复操作期间,客户VM从缓存访问资源文件(即,与资源文件对应的资源文件数据)并访问不在与虚拟机对应的虚拟盘的缓存中的其他文件。更具体地,来自虚拟盘的读操作读取存储在缓存中的已写入的资源文件的唯一标识符。该读操作可以进一步访问指定资源文件的一部分的相关信息(例如,偏移量/长度对),该部分资源文件先前由被挂起的客户虚拟机使用。

转向图2A,示例虚拟化系统100示出了向桌面服务176提供虚拟盘服务180的云服务199。虚拟化系统支持基于缓存对子机执行的激活操作、挂起操作或恢复操作。

参考激活操作,从设备B 115的远程桌面应用120传送与激活操作对应的激活请求。激活请求是传送到结构控制器179的桌面服务请求。结构控制器179访问并分析来自远程桌面应用(例如,远程桌面应用110、120、130、140)的服务请求(例如,激活请求)并识别子机(例如,子虚拟机或子机151、152、153和154))用于执行服务请求。结构控制器可以具体地将子机分配给物理服务器(例如,服务器集群178)。在所示的示例中,运行主机操作系统155的物理服务器(即,服务器177)操作子机151、152、153和154。

访问设备115的用户利用访问设备用户界面来通过远程桌面应用120启动要在访问设备115的显示区域中显示的桌面服务。启动桌面服务的请求从远程桌面应用120被发送到桌面服务179。结构控制器179将子机(例如,激活子机OS152的实例)分配给服务器177。桌面服务176利用虚拟盘驱动182在服务器177上启动存储在物理存储器分区172中的子机OS152。

管理程序160提供虚拟化显示适配器输出,该输出被发送到远程桌面应用120以在设备115的显示区域中显示。类似地,用户操作访问设备125从而与远程桌面应用130的用户界面交互,用户使用虚拟盘183来操作具有对应的物理存储器分区173的子机153。子机153使远程桌面应用130的显示区域显示子操作系统153的输出。另外,操作访问设备135的用户与远程桌面应用140的用户界面交互,用户使用虚拟盘184来操作具有对应的物理存储器分区174的子机154。子机154使远程桌面应用140的显示区域显示子操作系统154的输出。

云服务199可以是例如数据中心、混合云、私有云、公共云、亚马逊云服务(AmazonWeb Services)、

举例来说,桌面服务176基于为虚拟化子OS152提供的能力向用户提供不同的服务等级。例如,5层服务等级。例如,服务等级的一层提供一定量的可用内存、一定数量的物理核心、处理器速度以及一定量的可用盘存储。本技术的优点是为每个用户提供更大量的可用内存,并且显然响应更快(更高的盘效率和更高的感知处理器速度)。在一个实施例中,结构控制器179选择与适应用户购买的服务等级的服务层相匹配的服务器177。在另一示例中,结构控制器179将子机151和子机152聚集到服务器177上,因为客户已经购买了类似的服务等级。在另一示例中,结构控制器179还将子机151、152和153聚集到服务器177上,因为每个子机都支持具有公共组件的操作系统或应用。

在一个实施例中,本文描述的组件是本地的而不是由云服务提供的。在一个实施例中,当服务器177是在具有一个或多个物理附接的本地显示器的本地计算机上运行的虚拟机服务器时,服务器177可操作来执行本文所公开的操作。在一个实施例中,管理程序160提供对提供给虚拟机151、152、153、154和155的一个或多个本地显示器的物理访问。在一个实施例中,本地显示器的数量至少与正在操作的子虚拟机的数量一样多,从而提供多用户本地访问。在一个实施例中,盘分区181、182、183和184驻留在本地盘197上。

转向图2B,激活图101示出了提供用于激活内容的方法的计算机实现的系统。激活内容通常提供将可在子机152上操作的内容文件或资源文件的一部分143放入活动存储器分区172中。资源文件可以是操作系统资源,诸如Windows系统文件、smss.exe、lsass.exe等。资源文件也可以是诸如计算器、文字处理器、防病毒程序或浏览器之类的生产力应用,例如Calculator.exe、wordpad.exe、mcshield.exe、chrome.exe等。某些应用通常会启动资源文件的若干实例,因此同一资源的多个副本或同一资源的部分也可能在存储器中处于活动状态。

内容通常可以作为恢复进程、安装进程或启动进程的一部分被激活。激活结构142通常是在激活中使用的存储记录。因此,激活结构可以是恢复结构、安装结构或启动结构。恢复结构通常可以是诸如hiberfil.sys之类的操作系统子实例的休眠文件。恢复结构可以被记录在链表中。例如,恢复结构可以包含含有存储器映像标头、处理器状态和具有对应内容或标识符的链接表页序列的标头。恢复结构可以被组织为具有定义存储器映像和处理器状态的标头的单个连续内容记录。恢复结构可以是一起工作以记录系统状态的结构的集合。

为了说明的目的,顺序恢复结构例如是包含形成段列表的一个或多个资源段结构的序列的存储记录。与顺序恢复结构相关联的元数据定义与每个段相关联的资源的一部分。每个段结构对应于要从资源文件激活的内容的一部分。段结构可以包含资源标识符或来自对应资源的序列化内容段。段结构通常记录激活对应资源的一部分所需的信息。段结构可以包括资源标识符。段结构可以包括定义距资源开头的偏移量的整数和定义从资源提取的部分的长度的整数。整数可以反映诸如存储器页或存储量之类的存储器的一部分,例如,以千字节(kB)为单位计算存储器内容。在一个实施例中,当段结构是第一段时,或者当先前的段引用不同的资源时,段结构包含资源标识符,但是属于同一资源的后续段不再在段结构中记录资源标识符。资源列表通常是其中每个资源对应于段结构的资源的列表。

示例示出了图2B的激活系统101结合图2D的存储器映射200中示出的物理存储器内容进行操作的操作。顺序恢复结构存储在激活记录142中,并且具有用于在挂起时运行的三个资源的三个段结构:lsass.exe、wordpad.exe和mcshield.exe。第一段结构包含lsass.exe的资源标识符(诸如F1十六进制(F1h))以及资源文件lsass.exe在存储器中运行的部分的“偏移量/长度”(例如“4/8”)。第二段结构记录了关闭时存储器中处于活动状态的wordpad.exe的可执行文件。第三段结构记录了mcshield.exe的资源标识符,诸如F2h。子机152由服务器177实例化,并且激活组件215在子机152内运行。

激活操作还包括激活组件215访问子分区172和子机152的虚拟盘182上存储的记录142。在一个实施例中,记录142是存储器映像记录。激活组件215将激活记录142读入活动存储器以用于激活进程。激活组件215在子机152处接收来自记录142的包括三个段结构的顺序恢复结构。例如,激活组件215从存储在记录142中的顺序恢复结构接收包含标识符F1h和4/8的偏移量/长度的第一段结构。标识符F1h标识可在子机152上操作的资源文件lsass.exe。激活组件215将包括标识符F1h和偏移量/长度4/8的请求发送到与主机分区175相关联的缓存管理器145。

缓存管理器145管理缓存299。缓存管理器145在管理器索引203中查找标识符F1h并在缓存存储器部分262中定位对应的资源文件,并且缓存管理器145从缓存299中获得偏移量/长度为4/8的资源文件lsass.exe的部分。缓存管理器145将以偏移量/长度为4/8定位的存储器部分262处的数据复制到子分区172中。子分区152将资源文件lsass.exe的部分接收到活动存储器部分232中。为子机152激活lsass.exe进程。

转向图6,系统600示出了激活组件215的实施例,激活组件215使用Hyper-V数据交换服务(KPV)与缓存管理器145通信以提供标识符(例如,F2h)的通信。在一个实施例中,非侵入式实施方式利用KPV。在恢复期间,子虚拟机过滤器驱动拦截对具有指定偏移量和长度的缓存文件的唯一标识符的读请求,并使用数据交换服务通过与缓存感知的主机驱动交互来从管理程序缓存中获取对应的数据。在激活期间,子机152的驱动621拦截包括标识符F2h的第三段结构的读请求,并且虚拟化服务客户端624经由子机152中的VME总线接口620向VME总线接口610请求由F2h标识的资源。主机155中的驱动611执行缓存项266中的内容到存储器部分236的存储器传输。子分区152与用户应用626和内核空间611一起操作。在内核空间611中,虚拟化服务客户端/集成组件624通过I/O栈622将I/O请求传送到驱动621。

主机分区155操作虚拟化堆栈虚拟机工作进程618的用户模式组件。虚拟机管理服务616使用虚拟机管理服务来管理子分区中的虚拟机的状态,该虚拟机管理服务公开一组用于管理和控制虚拟机的基于Windows管理规范的API 617。虚拟机管理服务616通过虚拟化基础设施驱动615提供分区管理。主机155中的Windows管理程序接口库613通过超级调用651将分区操作系统驱动桥接到子机152中的Windows管理程序接口库623。管理程序160使用存储器服务例程622、高级可编程中断控制器653、调度器654、地址管理655和分区管理器656在分区执行环境之间提供虚拟化层。分区155、152、154和156通过管理程序160获得对通常访问的处理器660和存储器670的访问。未启蒙分区156与用户应用空间646和内核空间606一起操作。Linux分区154与用户应用636和内核空间602一起操作。LinuxHv607在分区的Linux机器154和根分区155之间执行桥接。

在激活期间,Linux分区154将资源标识符传送到根分区155以获得Linux二进制文件。例如,在子机154中,驱动631拦截包括诸如3Fh的emacs的标识符的段结构的读请求,并且虚拟化服务客户端634经由子机154中的VME总线接口630向VME总线接口610请求由3Fh识别的资源。主机155中的驱动611执行缓存项263中的内容到存储器部分253的存储器传输。在内核空间602中,Linux虚拟化服务客户端/集成组件634通过I/O堆栈632将I/O请求传送到驱动631。

在一个实施例中,对管理程序160进行改变以利用缓存299。实施例中的实施方式就像为索引145提供小的后备表一样简单。在一个实施例中,这样的索引与文件唯一标识符或校验和一起被添加到管理程序。子机151具有增强型挂起组件223和增强型恢复组件215。在一个实施例中,挂起组件223和/或恢复组件215通过其校验和来识别所需文件的列表,并且能够使用根分区175中或管理程序160中的索引203,而不是尝试从只能通过网络186才可用的虚拟盘181读取。主机和子机可以通过现有的数据交换API进行通信。

在一个实施例中,在子机恢复操作215期间,子机152从管理程序缓存299访问缓存中的资源文件(诸如二进制只读文件),并且从虚拟盘182访问可写二进制文件。子机从盘182读取资源的唯一标识符和诸如偏移量/长度组合之类的部分信息。子机过滤器驱动拦截对缓存的只读文件的唯一标识符以及可能的偏移量/长度信息的读请求,并使用KVP服务与主机驱动通信以从管理程序缓存299获取存储器的对应部分,并且还从盘182读取先前写入的可写文件。

在一个实施例中,缓存管理器145在来自激活组件215的请求的提示下,响应于来自激活组件215的请求而递增lsass.exe资源的激活计数。该激活计数反映了资源文件lsass.exe在系统中的流行度。

在另一个实施例中,子分区152将lsass.exe的段发布到缓存管理器145。缓存管理器145存储用于进入缓存299并由缓存索引203索引的候选资源文件的列表。

激活组件215通过读取第二段结构来获取要激活的下一个段结构。第二段结构包含原始内存数据,因为第二段结构记录的资源文件不是只读资源。在一个实施例中,第二段结构包含压缩的原始数据。在这种情况下,激活组件在放入活动存储器之前解压缩存储的数据。激活组件将数据从第二段结构(在关闭时在存储器中处于活动状态的wordpad.exe的可执行文件)复制到子分区172中,因为资源文件wordpad.exe不由缓存管理器145维护。活动存储器部分239在子机152处接收在关闭时在存储器中处于活动状态的资源文件wordpad.exe的内容。在一个实施例中,激活组件将从虚拟盘检索的资源的资源文件发布到缓存管理器145,并且缓存管理器145递增计数以反映尚未在缓存299中的资源的流行度。在一个实施例中,缓存管理器145将发布的二进制文件存储在盘197上的存储中,以便将来可能添加到缓存299。

激活组件215例如通过从记录142读取下一个段结构来获取要激活的下一个段。激活组件215从子记录142的第三段结构在子机152处接收内容标识符F2h,其标识资源文件mcshield.exe。激活组件215通过向与主机分区175相关联的缓存管理器145发送包括内容标识符F2h的请求来与缓存管理器145通信。缓存管理器145管理缓存299,缓存299包括存储器部分266中的资源文件mcshield.exe。缓存管理器145在管理器索引203中查找内容标识符F2h,并确定该标识符是指缓存部分266中的资源文件mcshield.exe。缓存管理器145将缓存部分266中包含的存储器复制到子分区172中的活动存储器部分236。分区172中的存储器部分236从存储器部分266接收内容。

缓存管理器145在主机155处维护缓存299,缓存299不包括资源文件wordpad.exe,但包括资源文件lsass.exe和mcshield.exe。缓存管理器145向子机151和子机152发送索引165,该索引165包括索引165中用于包括标识符F1h的lsass.exe的条目,以及用于包括标识符F2h的资源文件mcsheild.exe的另一个条目。当子机151向缓存管理器145发送激活由具有偏移量/长度4/8的F1h指示的内容的请求时,缓存管理器145接收子机151激活由具有偏移量/长度4/8的F1h指示的内容的请求。缓存管理器145确定lsass.exe由标识符F1h指示,并将内容资源文件lsass.exe的指定部分从存储器部分262复制到存储器部分232,并且激活lsass.exe的内容。当子机151向缓存管理器145发送激活由F2h指示的内容的请求时,缓存管理器145从子机151接收激活由标识符F2h指示的内容的请求。缓存管理器145确定mcshield.exe由F2h指示,并将内容资源文件mcshield.exe的部分从存储器部分266复制到存储器部分236,并且激活mcshield.exe的内容。

根据该示例,本技术的几个优点是显而易见的。缓存299可操作来服务若干个子分区171、172、173和174,从而提高存储效率。例如,缓存262中的相同资源可用于服务三个不同的子分区,从而缓存分区171的存储器部分222、子分区172的存储器部分232以及子分区173的子分区242。在该示例中,子分区171、172和173都能够运行由缓存项262表示的相同资源。当多个子机需要相同的资源(例如,操作系统的兼容版本(诸如

本方法还可以提供存储效率更高的激活进程。激活进程215可以使用更少的存储器,因为对于某些段来说,它只需要标识符的存储器空间,并且使用缓存299的存储器空间有利于减少图2D所示的存储器分区172中的激活组件215的存储器需求。

另外,在所公开的技术中,诸如Linux虚拟机之类的单独且不兼容的子虚拟机154能够使用相同的缓存299来操作。Linux子机174可以运行如apt、sed、grep、awk、top、tmux和ssh等Linux工具。Linux二进制文件可包括如Vim、emacs、git和GNU调试器(GDB)等开发工具。Linux二进制文件可以是如sshd、apache、nginx或MySQL等服务。Linux二进制文件可以是语言工具等。例如,子分区174在存储器部分253中运行文本编辑器emacs,并且在存储器部分255中运行安全外壳协议ssh。本技术允许缓存299在缓存部分263中存储emacs编辑器的缓存版本,并且在缓存部分265中存储ssh的缓存版本。

此外,由此激活的资源具有不易被开发的优点。中间人攻击旨在破坏子机版本或诸如lsass.exe或mcshield.exe之类的安全资源实例。如果激活进程依赖于子虚拟盘182来获取原始内容,则当激活进程发生时,本地损坏的安全资源将被恢复到存储器。但是本技术有利地通过标识符来恢复资源,该标识符将系统引导至安全地存储在主机缓存存储器项262中的资源的安全副本,并且因此可以比存储在子分区虚拟盘182中的资源受到更仔细的保护。这是一个安全优势。缓存部分262提供子机的安全策略,并且缓存部分266提供防病毒扫描程序。此类可执行文件经常成为漏洞利用攻击的目标。所描述的方法允许在子分区173中操作的子机153利用缓存299来激活运行lsass.exe的存储器部分242以及包含mcshield.exe的一部分的存储器部分248。子机152可操作以利用存储lsass.exe的缓存项262和存储mcshield.exe的缓存项266。

在另一示例中,图2C的挂起系统102结合图2D的存储器映射200中所示的物理存储器内容来挂起子机151的操作。系统102创建要存储在子虚拟机151的虚拟盘181的记录141中的顺序恢复结构。顺序恢复结构也可以被称为顺序激活结构或顺序挂起结构。缓存管理器145生成子机151的主机系统缓存299支持的内容的索引165。缓存索引165包含子机151可用的每个内容资源的条目。索引165通常是使得挂起组件223能够确定索引165中是否存在特定资源的标识符的结构。索引165的每个条目包含对应资源的标识符。索引165的每个条目还可以包括允许快速定位索引中的资源的条目的校验和或散列值。在一个实施例中,资源本身的散列或者资源的唯一名称的散列产生散列值,然后挂起组件223使用散列值来定位与资源对应的资源标识符。

另外,索引中的条目可以包括签名,该签名在被验证时证明资源的内容与资源的原始副本相同。另外,索引中的条目可以包括区域描述,其描述可以从主机系统缓存299加载的资源部分。在一个实施例中,索引165是包含子机151支持的那些资源的索引203的子集。缓存管理器145通过将索引203的所需部分发送到挂起组件223来生成索引165。挂起组件223接收由缓存管理器145生成的索引165。

系统102执行挂起操作,该挂起操作以标准形式将子机151的状态存储在记录141中,使得其可以稍后恢复。挂起操作可以由结构控制器176、主机155、使用设备105的用户的用户选择、或者子机151的操作来发起。例如,设备105的用户决定保存在远程桌面应用110上向用户显示的虚拟桌面。设备105的用户选择远程桌面应用110上的挂起图形控制以挂起子机151的操作。远程桌面应用110经由网络103向子机151发送挂起请求。子机151启动开始执行挂起操作的挂起组件223。作为挂起操作的一部分,挂起组件223开始将挂起组件223启动之前的所有存储器的状态转储到虚拟盘181。在子机151接收到挂起请求时,存储器中运行三个资源:存储器部分222中lsass.exe的一部分,存储器部分224中运行的calculator.exe以及存储器部分226中运行的mcshield.exe。

挂起组件223处理存储器的每个部分,直到处理完所有要保存的存储器。挂起组件223通过获取活动存储器的一部分、确定该部分是否出现在索引165中、以及将与该存储器部分对应的段结构存储为记录141中的段结构来处理存储器的一部分。存储器222的第一部分由挂起组件223获得,第一部分对应于从文件lsass.exe开头偏移4个存储器页的资源lsass.exe的一部分并且长度为8页。挂起组件223访问索引165以确定正在存储器部分222中使用的lsass.exe的部分是否在索引165中具有对应的条目。挂起组件223确定索引165具有包括对应的标识符F1h的lsass.exe的条目。

挂起组件223通过使用标识符F1h来处理存储器222的部分,将内容标识符F1h与“4/8”的“偏移量/长度”组合一起存储在记录141中的第一段结构中。挂起组件223处理对应于calculator.exe的下一个活动存储器部分224。挂起组件223访问索引165并确定不存在资源文件calculator.exe的对应条目。挂起组件223将活动存储器部分224的内容存储在记录141内的第二段结构中。在一个实施例中,224的内容在存储在记录141中之前被压缩。挂起组件223处理对应于mcshield.exe的下一个活动存储器部分226。第三部分(存储器部分226)由对应于资源文件mcshield.exe的挂起组件223获得。挂起组件223访问索引165以确定mcshield.exe在索引165中是否具有对应条目。挂起组件223确定索引165具有包括对应的标识符F2h的mcshield.exe的条目。

挂起组件223通过使用标识符F2h来处理存储器222的部分,将内容标识符F2h存储在记录141中的第三段结构中。因此,恢复记录141包含在挂起时在存储器中运行的三个资源的三个段:第一段结构包括标识符F1h和在存储器部分222中运行的lsass.exe的4/8的偏移量/长度,第二段结构包括在存储器部分224中运行的资源文件calculator.exe,并且第三段结构包括在请求挂起时在存储器部分226中运行的资源mcshield.exe的标识符F2h。挂起组件223完成操作,并向远程桌面应用110发送消息“挂起完成”。该消息随后导致设备105上显示“挂起完成”,并且主机操作系统155终止子机151。

系统102提供了几个优点。挂起操作有利地取决于安全高速缓冲存储器部分262和266,而不是取决于活动存储器部分222和226。因此,如果子机存储器在存储器部分222或存储器部分226中已被损坏,则系统在挂起时将是安全的。另外,挂起进程的缓存效率更高,因为子机171、172和173都共享用于诸如lsass.exe之类的资源的相同缓存部分262。此外,图2D所示的挂起进程223的存储器大小比其他技术需要更少的存储器来运行。

图2B所示的激活系统101可以用于执行启动激活方法。记录142包含启动激活结构。可以通过记录要在启动时启动的应用的段结构序列来创建启动激活结构。例如,系统管理员通过将lsass.exe和mcshield.exe的初始化进程状态存储在启动记录142中,将lsass.exe和mcshield.exe配置为当实例化子机151时自动从缓存299启动子系统。记录142包括第一段结构和第二段结构,第一段结构包括资源标识符F1h和偏移量/长度4/8,并且第二段结构包括资源标识符F2h。子机152被配置为在启动时读取记录142并利用启动记录142以高效的主机缓存进程来快速启动lsass.exe和mcshield.exe。在启动激活时,组件215访问记录142,在这种情况下记录142是启动记录。

激活组件215从记录142的第一段结构接收内容标识符F1h,并向缓存管理器145发送包括标识符F1h和偏移长度4/8的请求。作为响应,子机152将资源文件lsass.exe的内容接收到存储器部分232中。激活组件215访问记录142中的第二段结构并接收标识符F2h。激活组件215向缓存管理器145发送包括F2h的请求。缓存管理器145接收包括资源标识符F2h的请求,并在索引203中查找资源标识符F2h,并确定这是mcshield.exe的标识符。作为响应,缓存管理器145将存储器部分266中的二进制文件复制到分区172中。分区172接收存储器部分236中的mcshield.exe的二进制文件。在一个实施例中,通过提供适当的存储器引用或通过重定向而不是通过创建物理副本来实现存储器的副本。

图2B所示的激活系统101也可以用于执行安装激活方法。例如,设备115的用户已在安装服务器166处选择了要安装的二进制文件。记录167包含安装结构。安装结构例如是创建的结构,其包括要执行安装的应用的段结构序列。记录167可以是子机152可用于安装所选择的应用的必要组件的资源列表。例如,安装服务器166存储具有必须运行以在子机152处执行安装进程的两个资源(例如mcstartup.exe和mcshield.exe)的列表的结构。该例示中的安装结构包含两个段结构,对应于mcstartup.exe的第一段结构具有资源标识符04h。第二段结构具有资源标识符F2h。激活组件215访问记录167,记录167包括具有两个内容标识符04h和F2h的安装组件列表。

激活组件215接收标识资源文件mcstartup.exe的内容标识符04h。激活组件215将内容标识符04h传送到缓存管理器145。缓存管理器145在索引203中查找标识符04h并检测到该资源在缓存299中不可用。缓存管理器145还查阅存储在盘197上的库146以确定内容标识符04h在盘197中是否本地可用。缓存管理器145查阅库服务147以确定库148是否具有内容标识符04h。在一个实施例中,缓存管理器145将与内容标识符04h对应的内容添加到缓存299,并且更新索引203和索引165。在当前情况下,缓存管理器145为具有标识符04h的内容创建资源计数并且递增该计数,但是缓存管理器145确定与内容标识符04h对应的内容在缓存299中不可用。缓存管理器145利用指示资源不可用的消息来回复激活组件215。

激活组件215向安装服务器166发送包括标识符04h的请求以获取由标识符04h指示的资源。安装服务器166通过发送mcsetup.exe的二进制文件进行回复。激活组件215接收mcsetup.exe的内容并传输该内容,从而在分区172的存储器部分232中接收mcsetup.exe。在一个实施例中,接收压缩资源并且在解压缩之后将该资源放入存储器中。激活组件215接收可在子机152中操作的资源mcshield.exe的内容标识符F2h。激活组件152将包括资源标识符F2h的请求传送到缓存管理器145。缓存管理器在索引203中查找资源标识符F2h并发现该资源可用并且位于存储器部分266中。缓存管理器145将存储器部分266复制到分区172。分区172接收存储器部分236中的mcshield.exe。激活组件将安装的mcsetup.exe和mcshield.exe二进制文件复制到虚拟盘182上。安装完成。

在一个实施例中,缓存管理器145被合并到管理程序160中。在一个实施例中,缓存管理器145被全部或部分地合并到硬件(例如,处理器660和/或存储器670或170)中。分区管理器144通常是管理缓存299和/或缓存管理器145所驻留的分区的组件。在一个实施例中,分区管理器144被合并到管理程序160中。在一个实施例中,管理程序具有其自己的分区。

需要激活资源文件的激活上下文记录。资源文件是OS资源、应用资源。操作系统可以具有若干需要加载的系统资源。每个系统资源可以具有多个文件。资源是需要加载的文件。文字处理、电子表格、协作应用、遗留应用等。资源记录是内容和/或提供内容本身或提供允许子机获取资源的标识符的内容标识符的顺序列表。

用于在虚拟化系统中提供虚拟化操作的示例性方法

参考图3、图4和图5,提供了示出用于为虚拟化系统中的虚拟化管理提供虚拟化操作的方法的流程图。该方法可以使用本文描述的虚拟化系统来执行。在实施例中,其上包含计算机可执行或计算机可用指令的一种或多种计算机存储介质当由一个或多个处理器执行时可以使该一个或多个处理器在虚拟化系统(例如,计算机化系统或计算系统)中执行所述方法(例如,计算机实现的方法)。

转向图3,进程流程300呈现了可与图2B的系统101结合操作的用于激活内容的示例性方法。进程流程300提供恢复挂起的子机152的方法。挂起的机器的状态以存储在记录142中的顺序激活结构存储在虚拟盘182中。在310处,该进程等待激活挂起的机器的请求。在一个实施例中,进程的该步骤由云服务199和/或结构控制器179和/或主机155执行。例如,结构控制器179从设备115接收恢复由设备115的用户暂停的会话的请求。结构控制器将请求分配给服务器177,并且子机实例152与远程桌面应用120通信以认证设备115的用户。在准备有效认证时,子机152开始运行激活组件215。该方法进行到315,其中激活组件215接收来自记录142的第一段结构,并且该方法进行到320。在320处,执行测试以确定段结构是否具有标识符。在一个实施例中,段结构的第一部分包括对当前结构是否具有标识符进行编码的控制字段。例如,当存在标识符时,段结构中数据的第一字节的最低有效位(LSB)可被编码为1,而当不存在标识符时,段结构中数据的第一字节的LSB可被编码为0。作为另一个示例,顺序激活结构的标头可包含该结构中存在的段的长度,并且低于特定值的长度将指示存在标识符。当320处的测试确定存在标识符时,该方法进行到325。在325处,包括资源标识符以及可能还包括要加载的资源的一部分的描述(诸如正在使用的资源的段的列表)的请求由激活组件215发送到缓存管理器145。缓存管理器145接收请求,并且请求中的标识符用于通过查找缓存索引203中的标识符来确定缓存位置。例如,缓存索引203可以是提供作为输入索引的函数的起始存储器位置的反向查找表。在330处,请求所描述的内容部分被传输到发出请求的子分区。存储器部分232从缓存接收由资源标识符标识的资源的一部分。

返回到320,当段结构不具有标识符时,该方法进行到335,其中该方法将来自段结构的源的内容读取到子分区的存储器位置(诸如存储器部分232)中。所使用的源可以是记录142或库服务器166。在一个实施例中,段结构在存储在例如记录142中时被压缩,并且从源接收的数据在被加载到存储器部分232之前首先被解压缩。在340处,作为当前处理的段的内容的数据被发布到缓存管理器以用于对资源使用进行计数,并且/或用于通过缓存管理器145将资源添加到缓存299。在350处,执行测试以确定当前处理的段结构是否是激活结构中的最后一个,如果不是,则该方法返回到315,如果是,则该方法在360处完成。在一个实施例中,段的发布不是在340处发生,而是被延迟直到当进程退出350时加载存储器的进程才完成。然后,在该方法在360处终止之前,段的发布作为清理进程来完成。

转向图4,进程流程400执行用于挂起子虚拟机151的方法。从405开始,该方法进行到420,其中接收挂起子虚拟机151的请求。在410处,为顺序恢复结构创建标头部分。作为挂起的一部分,当前在存储器中运行的进程被记录在顺序恢复结构中,使得当子机151恢复时可以恢复存储器状态。存储器中正在运行的进程被逐部分保存,直到所有正在运行的进程都被记录下来,使得当子机151恢复时可以恢复所述进程。在415处,获得存储器的第一部分。在420处,执行测试以确定在存储器的当前处理部分中运行的进程是否在索引中。该测试可涉及对当前存储器部分中运行的资源的名称或内容进行哈希处理。检查索引165以查看在存储器的当前处理部分中运行的进程在缓存299中是否可用。如果当前部分在索引中,则该方法进行到425,其中从索引165返回的标识符被写入盘。在一个实施例中,还确定在当前处理的存储器部分中运行的资源的部分的偏移量/长度,并且将其与对应于存储器的当前处理的部分的段结构中的标识符一起写入盘。在420处,如果存储器的当前处理部分不在索引中,则该方法进行到435,其中来自当前存储器部分的数据以段结构被写入盘,该段结构存储正在使用当前处理部分的进程的活动存储器部分的内容。在一个实施例中,数据在被写入当前段结构之前被压缩。在430处,存储器的当前处理部分的资源内容可选地被发布到缓存管理器145。在一个实施例中,整个资源文件被发布。在350处,该方法确定是否所有活动存储器都已被处理,如果没有,则该方法返回到315。如果该进程完成,则该方法在360处终止。

转向图5,进程流程500执行管理缓存299的内容的方法。该进程从505开始,例如,当服务器177启动时。在510处,例如通过清除旧数据、将索引重置为空列表和/或将值重置为中性值,缓存被初始化。在515处,支持资源的列表被添加到盘197以供缓存管理器145使用。在一个实施例中,系统分析员确定支持资源,并且基于这些支持资源定义初始缓存内容。当计划部署有限数量的OS资源和流行应用时,可以通过支持至少最少数量的常用资源来增强用户的体验。第一步,可以添加支持集中的只读二进制文件。在一个实施例中,作为只读文件或具有只读部分的支持的操作系统和应用资源的源树被添加到盘197以提供可以填充到缓存299中的干净资源的参考集。在一个实施例中,通过比较内容签名来定位相同的文件,并且源树被修剪以仅包含资源的一个副本。标识表将来自不同机器的资源与源树中已表示的资源等同。在一个实施例中,通过将支持的操作系统分组在一起以形成组列表来创建索引列表,在组列表中每个组在组的成员之间具有合理量的资源重叠。在一个实施例中,索引203形成每个组的单独索引。组中的每个子机接收相同的索引165,索引165是该子机组的索引203的子集。缓存管理器145将支持资源列表中的资源加载到缓存299中,并且构建索引203以包括每个支持资源的资源标识符。在一个实施例中,缓存管理器145使用缓存管理器145已知的并且未包括在资源请求中的子机的属性(例如,机器组)来为子机选择资源的位置。例如,缓存管理器145从本地存储器知道子机属于哪个组。当从该子机接收到资源标识符时,该组用于选择组表,并且资源标识符用于在该组的资源列表中的资源中进行选择。此时,静态支持的二进制系统就可以运行了。

该方法进行到520,其中管理进程决定是否输入新的资源。此类资源输入可以在管理进程500中由520的“是”分支来支持。如果实时贡献不可用或不允许,则该方法进行到550,其中该进程检查新的支持资源输入,诸如支持输入文件的修改。当存在新的支持资源或删除支持资源时,该方法返回到550,其中添加新的支持资源输入,并且/或者删除不再支持的资源。修改源树和索引以更改支持的文件。例如,可以在服务器177重置时更改静态支持资源,使得在分布式索引不能被破坏时创建缓存内容和索引。在创建子机时分配索引145,这样就避免了索引203和索引165不一致的问题。在一个实施例中,此时,通过如535处所述对资源进行排名、如540处所述修改缓存内容、如545处所述修改索引以及如550处所述发布索引来考虑资源的流行度。因此,支持的OS资源和应用在缓存299中始终可用,使得永远不需要从网络虚拟盘181读取这些文件。作为示例,WindowsOS只读系统文件可以是几GB。Microsoft团队可执行文件可以大于9MB。每次完成挂起操作时,一定比例的这些系统文件和可执行文件始终作为运行进程存储器的一部分位于虚拟存储器中,并且不需要将它们写出到持久存储,因为它们始终在缓存中可用。在一个实施例中,每服务器缓存的维护可以由云服务176微服务管理进程来控制。在微服务管理过程中,随着新OS版本或新应用二进制文件的推出,不支持的二进制文件将被逐步淘汰,并且新的二进制文件将被引入到缓存目标文件列表中。

返回到520,提供了用于通过跟踪资源文件的流行度来平衡缓存299内容的过程。当在520处接收到新资源输入(诸如资源请求或要添加的资源的发布)时,管理进行到525。在525处,如果新资源输入是来自子机的新建议资源的发布,则该方法将新资源添加到盘197上的源树,并且建立新资源的计数。如果已经接收到包括请求的标识符的新资源请求,则缓存管理器145获得该标识符。在530处,更新主题资源的计数器。在535处,资源按流行度进行排名。在一个实施例中,排名仅周期性地(例如,每100个新资源投入)发生。

在540处,该方法确定哪些资源应当在缓存中。在一个实施例中,当缓存低于满阈值量时,添加所有请求的资源。在一个实施例中,当缓存高于该阈值量时,仅添加最流行的资源。该方法检查缓存中当前的资源是否未达到流行度阈值。如果资源低于阈值,则该项将被标记为从缓存中删除。然后,该方法沿着列表从最流行到最不流行进行,并添加当前不在缓存中的资源。在540处已经修改了缓存内容之后,该方法在545处修改索引并发布修改后的索引203和/或修改后的索引145。在一个实施例中,索引145由从缓存管理器145发送到挂起组件223和激活组件215的更新改变消息来更新。在一个实施例中,同一组件用于挂起和恢复,因此仅需要一个消息。当所有活动子机都已使用修改后的索引时,缓存管理器145更新索引203,并移除从缓存299中消除的项。修改后的缓存内容和修改后的索引的发布现已完成,并且该方法返回到550。在一个实施例中,对缓存内容和索引的修改是在服务器177下次具有诸如循环上电或软件重置之类的重置事件时进行的。

需要激活资源文件的激活上下文记录。资源文件是OS资源、应用资源。操作系统可以具有若干需要加载的系统资源。每个系统资源可以具有多个文件。资源是需要加载的文件。文字处理、电子表格、协作应用、遗留应用等。资源记录是内容和/或提供内容本身或提供允许子机获取资源的标识符的内容标识符的顺序列表。

技术改进和权利要求的文字支持

用于为虚拟化系统中的虚拟化管理提供虚拟化操作的方法、系统和计算机存储介质,虚拟化操作包括激活操作、挂起操作和恢复操作。在操作中,支持多个虚拟机的主机的缓存引擎接收与第一文件相关联的唯一标识符和文件元数据。第一文件存储在缓存引擎中,唯一标识符和文件元数据对应于虚拟机的挂起操作。基于恢复操作,缓存引擎访问缓存引擎中的第一文件的文件数据。恢复操作与虚拟机相关联,虚拟机与先前接收的用于挂起操作的文件元数据相关联。然后,缓存引擎将文件数据传送到与挂起操作和恢复操作相关联的虚拟机。

有利的是,从缓存引擎传送文件数据减少了挂起操作或恢复操作所花费的时间,因为不再需要写入操作并且从持久存储(即,操作系统盘)的读取操作将仅是从缓存引擎的本地读取。使用当前计算逻辑减少为成功完成挂起和恢复操作而需要保留的存储量,从而降低总体存储成本。

第一文件与第一应用相关联。第一文件作为可经由与主机相关联的多个虚拟机访问的只读文件或二进制文件的单个实例存储在缓存引擎中。文件元数据指示与第一文件的文件数据对应的偏移量和长度信息。在挂起操作之前,文件数据的实例先前已在虚拟机上使用。访问缓存引擎中的第一文件的文件数据避免了从主机的操作系统盘读取文件数据。虚拟机与拦截对唯一标识符和文件元数据的读请求的过滤器驱动相关联,过滤器驱动与主机的主机驱动通信以访问缓存引擎中的第一文件的文件数据。主机还包括应用维护管理器,其逐步淘汰与存储在缓存引擎中的文件相关联的多个应用中的不支持的应用。

示例分布式计算系统环境

现在参考图7,图7示出了其中可以采用本公开的实施方式的示例分布式计算环境700。具体地,图7示出了可以托管技术方案环境或其一部分(例如,数据受托人环境)的示例云计算平台710的高级架构。应当理解,本文描述的这种布置和其他布置仅作为示例进行阐述。例如,如上所述,本文描述的元件中的许多元件可以被实现为分立或分布式组件或者与其他组件结合实现并以任何合适的组合和位置实现。除了所示的布置和元件之外或代替所示的布置和元件,可以使用其他布置和元件(例如,机器、接口、功能、顺序和功能分组)。

数据中心可以支持分布式计算环境700,该分布式计算环境700包括云计算平台710、机架720和机架720中的节点730(例如,计算设备、处理单元或刀片)。技术方案环境可以利用云计算平台710来实现,云计算平台710跨不同数据中心和地理区域运行云服务。云计算平台710可以实现用于供应和管理云服务的资源分配、部署、升级和管理的结构控制器740组件。通常,云计算平台710用于以分布式方式存储数据或运行服务应用。数据中心中的云计算基础设施710可以被配置为托管并支持特定服务应用的端点的操作。云计算基础设施710可以是公共云、私有云或专用云。

节点730可以配备有在节点730上运行定义的软件堆栈的主机750(例如,操作系统或运行时环境)。节点730还可以被配置为执行云计算平台710内的专用功能(例如,计算节点或存储节点)。节点730被分配来运行租户的服务应用的一个或多个部分。租户可以指利用云计算平台710的资源的客户。支持特定租户的云计算平台710的服务应用组件可以被称为多租户基础设施或租赁。术语“服务应用”、“应用”或“服务”在本文中可互换使用,并且广泛地指在数据中心之上运行或访问数据中心内的存储和计算设备位置的任何软件或软件部分。

当节点730支持多于一个单独的服务应用时,节点730可被划分为虚拟机(例如,虚拟机752和虚拟机754)。物理机也可以同时运行单独的服务应用。虚拟机或物理机可以被配置为由云计算平台710中的资源760(例如,硬件资源和软件资源)支持的个性化计算环境。可以预期的是,资源可以被配置用于特定服务应用。此外,每个服务应用可以被划分为功能部分,使得每个功能部分能够在单独的虚拟机上运行。在云计算平台710中,可以使用多个服务器来运行服务应用并在集群中执行数据存储操作。具体地,服务器可以独立地执行数据操作,但是暴露为被称为集群的单个设备。集群中的每个服务器都可以实现为节点。

客户端设备780可以链接到云计算平台710中的服务应用。客户端设备780可以是任何类型的计算设备,其可以对应于参考图7描述的计算设备700。例如,客户端设备780可以被配置为向云计算平台710发出命令。在实施例中,客户端设备780可以通过虚拟网际协议(IP)和负载平衡器或将通信请求引导至云计算平台710中的指定端点的其他装置与服务应用进行通信。云计算平台710的组件可以通过网络(未示出)彼此通信,网络可以包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。

示例计算设备

已经简要描述了本发明的实施例的概述,下面描述可以实现本发明的实施例的示例操作环境,以便提供本发明的各个方面的一般上下文。首先具体地参考图8,示出了用于实现本发明的实施例的示例操作环境,并将该示例操作环境总体指定为计算设备800。计算设备800只是合适的计算环境的一个示例,并且不旨在建议对本发明的用途或功能范围的任何限制。计算设备800也不应当被解释为具有与所示组件中的任何一个或其组合相关的任何依赖性或要求。

本发明可以在计算机代码或机器可用指令的一般上下文中进行描述,机器可用指令包括由诸如个人数据助理或其他手持设备之类的计算机或其他机器执行的计算机可执行指令(诸如程序模块)。一般而言,包括例程、程序、对象、组件、数据结构等的程序模块是指执行特定任务或实现特定抽象数据类型的代码。本发明可以各种系统配置中实践,所述系统配置包括手持设备、消费电子装置、通用计算机、更专业的计算设备等。本发明还可以在分布式计算环境中实践,其中任务由通过通信网络而链接的远程处理设备来执行。

参考图8,计算设备800包括总线810,总线810直接或间接耦合以下设备:存储器812、一个或多个处理器814、一个或多个呈现组件816、输入/输出端口818、输入/输出组件820以及说明性电源822。总线810表示可以是一个或多个总线(诸如地址总线、数据总线或其组合)。为了概念清楚起见图8的各个框用线示出,并且还设想了所描述的组件和/或组件功能的其他布置。例如,人们可以将诸如显示设备之类的呈现组件视为I/O组件。此外,处理器具有存储器。我们认识到这就是本领域的本质,并重申图8的图表仅示出了可以结合本发明的一个或多个实施例使用的示例计算设备。在诸如“工作站”、“服务器”、“膝上型计算机”、“手持设备”等这样的类别之间不进行区分,因为所有类别都被设想在图8的范围内并且这些被称为“计算设备”。

计算设备800通常包括各种计算机可读介质。计算机可读介质可以是可由计算设备800访问的任何可用介质,并且包括易失性和非易失性介质、可移除和不可移除介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。

计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性介质、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能光盘(DVD)或其他光盘存储、盒式磁带、磁带、磁盘存储或其他磁存储设备、或可用于存储所需信息并且可由计算设备800访问的任何其他介质。计算机存储介质不包括信号本身。

通信介质通常以诸如载波或其他传输机构之类的调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传递介质。术语“调制数据信号”是指使得以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质以及诸如声学、RF、红外和其他无线介质之类的无线介质。上述任何的组合也应当包括在计算机可读介质的范围内。

存储器812包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移除的、不可移除的或其组合。示例性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。计算设备800包括从诸如存储器812或I/O组件820的各种实体读取数据的一个或多个处理器。(一个或多个)呈现组件816向用户或其他设备呈现数据指示。示例性呈现组件包括显示设备、扬声器、打印组件、振动组件等。

I/O端口818允许计算设备800逻辑地耦合到包括I/O组件820的其他设备,其中一些组件可以是内置的。示例性组件包括麦克风、操纵杆、游戏手柄、卫星天线、扫描仪、打印机、无线设备等。

技术方案的实施例的附加结构和功能特征

已经识别了本文所使用的各种组件,应当理解,可以采用任何数量的组件和布置来实现本公开的范围内的期望功能。例如,为了概念清楚起见,附图中描绘的实施例中的组件用线示出。也可以实现这些组件和其他组件的其他布置。例如,虽然一些组件被描绘为单个组件,但是本文描述的许多元件可以被实现为分立或分布式组件或者与其他组件结合实现并且以任何合适的组合和位置来实现。某些元件可以完全省略。此外,本文中描述为由一个或多个实体执行的各种功能可以由硬件、固件和/或软件来执行,如下所述。例如,各种功能可以由执行存储器中存储的指令的处理器来执行。因此,除了所示的布置和元件之外或代替所示的布置和元件,可以使用其他布置和元件(例如,机器、接口、功能、顺序和功能分组)。

下面段落中描述的实施例可以与具体描述的替代方案中的一个或多个组合。具体地,所要求保护的实施例可以替代地包含对多于一个其他实施例的引用。所要求保护的实施例可以指定所要求保护的主题的进一步限制。

本文具体描述本发明实施例的主题以符合法定要求。然而,描述本身并不旨在限制本专利的范围。相反,发明人已经设想,所要求保护的主题还可以以其他方式来体现,以结合其他现有技术或未来技术来包括与本文档中所描述的步骤类似的不同步骤或步骤的组合。此外,虽然术语“步骤”和/或“块”可以在本文中用于表示所采用的方法的不同要素,但是除非在明确描述了各个步骤的顺序时之外,否则这些术语不应被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序。

出于本公开的目的,词语“包括(including)”具有与词语“包括(comprising)”相同的广泛含义,并且词语“访问”包括“接收”、“引用”或“检索”。此外,词语“通信”具有与由使用本文描述的通信介质的基于软件或硬件的总线、接收机或发射机促进的词语“接收”或“发射”相同的广泛含义。另外,除非另有相反说明,否则诸如“一”和“一个”的词语包括复数以及单数。因此,例如,在存在一个或多个特征的情况下,满足“特征”的约束。此外,术语“或”包括连词、反意连词和两者(a或b因此包括a或b以及a和b)。

为了以上详细讨论的目的,参考分布式计算环境来描述本发明的实施例;然而,本文描述的分布式计算环境仅仅是示例性的。组件可以被配置为执行实施例的新颖方面,其中术语“配置为”可以指“编程为”执行特定任务或使用代码实现特定抽象数据类型。此外,虽然本发明的实施例通常可以参考本文描述的技术方案环境和示意图,但是应当理解,所描述的技术可以扩展到其他实施方式的上下文。

已经结合特定实施例描述了本发明的实施例,这些特定实施例在所有方面都是说明性的而不是限制性的。在不脱离本发明的范围的情况下,替代实施例对于本发明所属领域的普通技术人员来说将变得显而易见。

从前述内容可以看出,本发明非常适合于实现上文阐述的所有目标和目的以及对于结构来说显而易见的以及固有的其他优点。

应当理解,某些特征和子组合是有用的并且可以在不参考其他特征或子组合的情况下被采用。这是权利要求所设想的并且在权利要求的范围内。

相关技术
  • 2-肟氰乙酸乙酯钾盐的制备方法
  • 一种2-[N-(2-氰乙基)-4-[(2,6-二氯-4-硝基苯基)偶氮]苯胺基]乙酸乙酯的制备方法
技术分类

06120116543122