CN114270315A - 应用的水合 - Google Patents

应用的水合 Download PDF

Info

Publication number
CN114270315A
CN114270315A CN202080058394.XA CN202080058394A CN114270315A CN 114270315 A CN114270315 A CN 114270315A CN 202080058394 A CN202080058394 A CN 202080058394A CN 114270315 A CN114270315 A CN 114270315A
Authority
CN
China
Prior art keywords
application
computing device
file
request
files
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080058394.XA
Other languages
English (en)
Inventor
A·K·纳拉瓦内卡
郝嫣然
N·R·克里斯蒂安森
谢平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN114270315A publication Critical patent/CN114270315A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/62Uninstallation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

公开了用于管理应用的技术。响应于接收到用于访问第一应用的请求,取回写入计算设备的本地驱动器的元数据。响应于元数据指示第一应用未被写入计算设备的本地驱动器,向应用提供方传输下载请求。接收包括一个或多个应用文件的针对应用的下载包,该应用文件可操作以在应用被存储在计算设备上时执行该应用,而不执行安装过程。

Description

应用的水合
背景技术
计算设备通常被配置具有远超过常规使用的应用和软件组件。在本地存储实现常规应用和很少使用的应用两者所需要的所有文件会消耗大量存储空间。这在具有低存储容量的计算设备中尤其麻烦。
一些技术可以通过移除很少使用的应用文件来减少计算设备上的总体软件占用空间。这样的技术使用户能够手动选择要卸载的应用以释放存储空间。但是,当将来需要该应用时,必须重新安装该应用。
关于这些和其他考虑,提出了本文中做出的公开。
发明内容
不管用户需要使用的应用有多少,该应用都必须被安装,即使它仅被使用一次。用户通常安装只被使用很短时间的应用,但大多数用户在使用之后不会卸载这些应用。此外,这些应用会占用设备上的存储空间。当应用被安装在虚拟化环境中的计算实例上时,当基于所使用的存储容量的量来向用户收费时,用户可能会增加成本。在这种情况下,用户的选项是:
1.安装-使用应用-在不需要时卸载
2.安装-使用应用-保留所安装的应用,占用存储空间
3.安装-使用应用-在不需要时卸载-在再次需要时发起重新安装过程-下载安装程序-再次安装并且重复
公开了用于以“占位符”格式安装应用的各种实施例。在一个实施例中,当安装应用时,不是安装整个文件集,而是创建一个或多个占位符。占位符包含元数据(文件名、大小、时间戳、权限、版本等),但不包含内容。与原始文件相比,该占位符的大小可以较小。当用户需要启动应用时,该文件从先前上传文件的远程位置被取回——由应用的作者、企业管理员或其他服务提供方。
通过以所描述的方式使设备的应用存储自动化,用户可以自由地安装多个应用,而不必担心存储要求。此外,企业管理员可以以无缝方式来提供企业用户可能需要的每个应用的超集,其中本地不存在的应用可以按需被提供,而无需经过安装过程。
在一些实施例中,如果存储设备已满或预定条件(例如,安装的寿命)被满足,所安装的应用的文件可以被转换为“占位符”。以这种方式,最近使用的应用可以被物理地安装在用户的设备上,并且旧的/陈旧的应用可以被转换为占位符。将应用转换为占位符不需要卸载过程。由于该应用未在功能上被卸载,所以该应用在用户看来就好像它完全物理地存在于设备上一样。如果用户需要启动已经被替换为占位符的应用,则该应用可以被启动而无需重新安装。在诸如其中游戏应用的大小非常重要的游戏控制台的场景中,用户可能仍然能够在有限容量的控制台上安装大量游戏。
在一些实施例中,可以提供基于web的服务,该服务允许上传针对应用必要的资产,包括二进制代码。在一个实施例中,可以实现操作系统(OS)组件,该OS组件在需要时拦截应用启动并且监测依赖性同时从web服务中取回它们。
本文中所描述的技术通过将应用所需要的文件预先写入本地存储并且在应用被调用时自动下载文件来使得计算设备能够节省存储空间。在示例实施例中,计算设备最初可以被配置具有处于水合状态的一些应用和处于脱水状态的其他应用。在脱水应用被调用的情况下,计算设备可以自动下载和本地存储与应用相关联的文件。
由于占位符文件的存在,从计算设备的用户以及甚至在计算设备上运行的其他应用的角度来看,应用(即,针对其的占位符被本地存储的应用,而不是实际应用文件)可以看起来是本地可用的。例如,针对应用的图标可以出现在计算设备的应用菜单内。然而,当由用户(或另一应用)生成针对该应用的请求时,计算设备可以快速确定其当前处于脱水状态。然后,基于该确定,计算设备可以通过执行中间步骤(即,在接收请求与服务请求之间的步骤)来进行响应,以完全下载和水合所需要的应用文件。在完成这个中间步骤之后,计算设备然后可以满足请求,就好像应用文件是在请求最初被接收到时被水合的一样。
在实施例中,计算设备具有存储介质,该存储介质包括以水合状态存储的一些应用文件和以脱水状态存储的其他应用文件。如本文中使用的,术语“水合状态”在用于描述文件的状态时是指其中针对文件的数据被本地存储在计算设备的存储介质上的状态。例如,如果确定应用将被水合,则对该应用唯一的、二进制文件中的一个或多个二进制文件实际上被写入存储介质并且占用存储介质上的空间(例如,字节)。相反,术语“脱水状态”在用于描述文件的状态时是指其中针对文件的数据未被本地存储在计算设备的存储介质上的状态。例如,如果应用以脱水状态存储在计算设备上,则对该应用唯一的二进制文件不会被写入存储介质并且不占用存储介质上的空间。
关于根据需要将应用自动水合到本地驱动器上,计算设备可以接收访问当前脱水的应用的请求。在接收到该请求时,计算设备可以取回与所请求的应用相关联地、被写入存储介质的至少一些元数据。例如,在一些实施例中,占位符文件可以被写入存储介质,以代替与脱水应用相关联的实际文件。占位符文件可以包括指示可以从其下载应用文件的地址的元数据。在一些实施例中,占位符文件还指示应用文件的应用提供方。简单地说,个体占位符文件可以指向它们用作其占位符的实际应用文件。
计算设备然后可以使用占位符元数据,以生成与所请求的应用文件相关联的下载请求。在一些实施例中,计算设备可以向同步引擎提供占位符元数据,以标识所请求的应用文件并且指示可以从其获取所请求的应用文件的适当位置。基于占位符元数据,同步引擎然后可以生成下载请求并且将其发送到适当的数据提供方。
进一步公开了用于以“占位符”格式安装虚拟机的操作系统和其他系统组件的各种实施例。在一个实施例中,当针对虚拟机来配置操作系统组件和应用时,不是安装整个文件集,而是创建一个或多个占位符。占位符包含元数据(文件名、大小、时间戳、权限、版本等)但不包含内容。本地只存储最小的操作系统组件和应用集,并且其他操作系统组件和应用是脱水的。当虚拟机需要启动脱水应用或脱水操作系统组件时,该文件从存储有针对该文件所需要的数据的远程位置(例如,远程主机)中被取回。
通过减少虚拟机所需要的存储直到文件实际被需要,可以显著减少一个或多个虚拟机所需要的存储量。如果服务提供方实现用于存储的即用即付定价模型,则所描述的实施例可以降低与获取和运行虚拟机相关联的成本。此外,企业管理员可以以无缝方式提供企业虚拟机用户可能需要的每个应用的超集,其中在虚拟机处不存在的应用可以按需提供,而无需经过安装过程。
在一些实施例中,如果预定条件(例如,安装的寿命、由虚拟机使用的存储)被满足,一个或多个文件可以被转换为“占位符”。如果虚拟机需要启动已经被替换为占位符的功能或应用,则该功能或应用可以被启动,而无需重新安装。
本文中描述的技术通过预先将针对操作系统和应用所需要的文件写入与虚拟机相关联的存储,并且在功能/应用被调用时自动下载文件而使虚拟化服务的用户能够节省存储空间。在示例实施例中,虚拟机最初可以被配置有处于水合状态的一些操作系统组件和应用以及处于脱水状态的其他系统组件和应用。在脱水系统组件或应用被调用的情况下,虚拟机可以自动下载和本地存储与该系统组件或应用相关联的文件。
由于占位符文件的存在,从虚拟机和在虚拟机上运行的其他应用的角度来看,脱水应用或功能可以看起来是可用的。然而,当生成针对脱水应用的请求时,虚拟机可以确定其当前处于脱水状态。然后,基于该确定,虚拟机可以通过执行中间步骤(即,在接收请求与服务请求之间的步骤)来进行响应以完全下载和水合所需要的应用文件。在完成这个中间步骤之后,虚拟机然后可以满足请求,就好像应用文件是在请求最初被接收到时被水合的一样。
通过阅读以下“具体实施方式”和回顾相关联的附图,这些和各种其他应用将是很清楚的。提供本“发明内容”以便以简化形式介绍选择的概念,这些概念在下面的“具体实施方式”中进一步描述。本“发明内容”不旨在标识所要求保护的主题的关键应用或基本应用,也不旨在将本“发明内容”用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任何部分中指出的任何或所有缺点的实现。
附图说明
“具体实施方式”参考附图进行描述。在图中,附图标记最左边的(多个)数字标识附图标记第一次出现的图。不同图中相同的附图标记表示相似或相同的项。对多个项中的单独项进行的引用可以使用带有括号内的另一数字(和/或不带括号的字母)的附图标记来引用每个单独项。对项的一般引用可以使用没有字母序列的特定引用编号。
图1示出了根据本公开的示例系统。
图2A示出了根据实施例的示例数据流场景。
图2B示出了根据实施例的示例数据流场景。
图2C示出了根据实施例的示例数据流场景。
图3是示出根据本公开的数据中心的图;
图4示出了根据本公开的示例系统。
图5是根据本公开的示例方法的流程图。
图6是根据本公开的示例方法的流程图。
图7是根据本公开的示例方法的流程图。
图8是根据本公开的示例方法的流程图。
具体实施方式
下面的“具体实施方式”描述通过将针对应用或操作系统文件的数据预先写入本地存储并且然后在相关联的应用被调用时自动下载应用或操作系统文件来使计算设备或虚拟机能够节省存储空间的技术。
如上所述,术语“脱水文件”可以是指以如下格式存储在客户端设备的本地驱动器上的数据文件:该格式使数据文件在文件浏览器GUI中对用户是可见的,同时本地驱动器中缺少数据文件的至少某些内容数据。例如,脱水文件可以是本地存储在客户端设备上相对较小的文件,以表示存储在云数据库中的水合对应文件。示例脱水文件可以包括缩略图像(例如,文件内容数据的缩小尺寸的视觉表示)和占位符元数据,该占位符元数据标识文件的名称并且指向其在云中的水合副本。更一般地,我们可以将脱水文件限定为具有元数据但不具有全部内容都在磁盘上的任何文件。因此,水合是一个通过从云中下载内容来取回尚未在磁盘上的任何内容的动作。
如上所述,术语“水合文件”是指其文件内容数据被存储在客户端设备的本地驱动器上使得数据文件可以在本地被访问而无需从云数据库中取回文件内容数据的文件。部分水合状态是其中文件在水合与脱水之间混合的状态。在部分水合状态下,一些但不是全部内容在磁盘上。本公开中描述的机制将解决部分水合文件以及完全脱水文件。
在更一般的实施例中,脱水文件可以被限定为具有元数据但不具有全部内容都在磁盘上的任何文件。因此,水合是一个通过从云中下载内容来取回尚未在磁盘上的任何内容的动作。
所公开的技术表现出优于其中应用和OS组件本地存储在计算设备或虚拟机处的现有系统的显著优势。这些缺点可能会加剧计算资源稀缺问题,包括处理资源的过度使用以及本地存储空间的有限性质。因此,可以理解,所公开的技术表示在减少与在计算设备和虚拟化资源上提供应用和功能相关联的处理器和存储使用方面的实质性进步。
一般而言,计算设备或虚拟机最初可以配置具有处于水合状态的文件和处于脱水状态的其他文件。作为具体示例,在虚拟机上运行的操作系统(OS)可以包括频繁使用的一些应用和很少使用的一些应用。为了节省存储空间,可以权衡各种应用的相对使用频率,作为用于选择一些批次的应用文件以便以水合状态存储在虚拟机上,以及选择其他批次的应用文件以便保持脱水状态的因素。例如,能够实现频繁使用的应用的各批次的应用文件可以完全水合,而能够实现很少使用的应用的其他批次的应用文件可以保持脱水。然后,当接收到请求访问个体脱水应用文件的请求时,虚拟机可以从适当的应用提供方自动取回与该脱水应用文件相关联的一个或多个应用文件。例如,可以取回请求与脱水应用文件相关联的一批文件。备选地,可以在单个文件被访问时取回该文件。在从适当的应用提供方接收到特定批次的应用文件之后,虚拟机可以通过提供对现在被水合、但是在先前在请求最初被接收时被脱水的应用的完全访问来满足该请求。以这种方式,预定批次的应用文件在虚拟机处保持立即可访问,而不会永久消耗虚拟机上的大量存储空间。即,如果在请求中实际被调用,则这样的预定批次的应用文件仅消耗大量存储空间——但否则仅被存储为不占用大量存储空间的元数据。
如下面更详细描述的,在一些实施例中,用于脱水应用文件的占位符文件被个体地存储,而不是这些应用文件的完整版本(即,有效载荷和所有内容)被存储。示例性的这样的占位符文件可以包括占位符元数据,该占位符元数据指示可以容易地从其获取对应应用文件的应用提供方和/或可以容易地从其获取对应应用文件的地址。元数据还可以指示与所请求的应用文件相关联的有效载荷当前是否被写入本地驱动器。
如本文中使用的,术语“应用”是指可以由计算设备或虚拟机通过使用个体应用文件和/或各批次的应用文件中的一个或多个来执行的特定计算功能。例如,针对个体批次的应用文件的有效载荷可以被下载和写入计算设备或虚拟机的本地存储,以使该计算设备能够支持附加应用,诸如附加硬件用例或附加软件用例。作为特定示例,计算设备或虚拟机可以配备有适合执行面部识别技术的相机,并且一批应用文件可以包括使计算设备或虚拟机能够经由相机实现这样的技术的软件代码。因此,该批应用文件可以包括可用于实现期望功能的驱动程序和/或任何其他合适类型的计算机可读指令。示例性应用包括但不限于可以经由可以在微软WINDOWS 10操作系统上使用的按需应用(通常被称为“FOD”)从计算设备添加或删除的各种计算功能。
如本文中使用的,术语“应用文件”是指可以个体地使用和/或与一个或多个其他计算文件结合使用,以使功能性计算设备(例如,执行典型的操作系统的通用计算机)或虚拟机能够实现本文中所限定的“应用”的任何计算文件。例如,使得通用计算机能够执行面部识别应用的一组或一批计算文件中的个体计算文件可以被恰当地称为应用文件。这样的文件可以包括二进制文件、媒体、扩展关联、
在一些实施例中,在下载所有相关联的应用文件之前,当核心组件已经被下载并且存储在本地时,可以启动脱水应用。这可以更快地执行脱水应用,特别是当尚未下载启动应用并非立即需要的大量数据时。附加数据可以在应用执行时在后台下载。
在一些实施例中,当购买应用时,元数据的核心集可以被存储在计算设备上,并且诸如二进制文件和媒体等较大文件可以在应用稍后被启动时被下载。这在设备处于有限带宽连接并且用户希望购买或以其他方式安装应用以供稍后使用时可能很有用。
可以理解,当应用被脱水时,卸载这样的应用将相对简单,因为仅需要从设备中移除与脱水应用相关联的所存储的元数据。
在一些实施例中,可以基于一个或多个标准而自动地选择用于脱水的应用。例如,这样的标准可以包括:
超过指定时间段未访问的应用
关于要用于应用的存储量的限制(可以基于优先化方案来确定对哪些应用要被脱水的选择)
可以允许用户或管理员选择哪些应用要被脱水;在一些实施例中,可以允许用户或管理员固定应用,从而不允许该应用被脱水。
脱水应用可以被存储在远程服务处,诸如存储服务或被配置为存储脱水应用的服务。对于虚拟机,脱水应用可以存储在为应用提供中央存储库的主机处。在一些实施例中,主机可以定位为在地理上对虚拟机是有利的。在一些实施例中,远程服务或中央存储库可以跟踪应用的版本并且提供应用的最新版本,使得下载脱水应用的设备或虚拟机将始终接收应用的最新版本。
现在转向图1,示出了系统100,该系统100用于使计算设备106能够在本地驱动器124上以脱水状态存储预定文件,同时在计算设备106处保持该文件的按需可访问性。在所示示例中,与名为“App1”的应用相对应的第一批文件以水合状态存储,使得第一批内的每个个体应用文件的有效载荷被存储在计算设备106的本地驱动器124上。个体应用文件的相应有效载荷可以包括例如二进制文件、权限、注册表设置、扩展设置、和可用于实现应用的其他数据。在所示示例中还示出,与名为“App2”的应用相对应的第二批文件以脱水状态存储,使得占位符文件被存储以代替该批的实际应用文件。在一些实施例中,占位符文件存储在计算设备106的本地目录126内,其存储路径与实际应用文件在被水合(例如,利用有效载荷被写入本地存储)到计算设备106上时将被存储的路径相同。以这种方式,如果所调用的应用文件没有被水合到计算设备106上,则导致在特定文件路径处所调用的实际应用文件的、与计算设备106的用户交互将打开实际应用文件(如果存在的话)或相应占位符。占位符文件不包括相关联的实际文件的有效载荷,而是包括指示对应实际文件(例如,具有对应有效载荷的完整文件)的属性的元数据。与任何特定文件相关联的元数据可以指示应用提供方,从该应用提供方可以获取包括对应有效载荷的特定文件。如下面更详细描述的,当特定批次的文件处于脱水状态时,当该批次中的与占位符文件相关联的单个文件被请求时,来自该特定批次中的占位符文件的元数据可以由计算设备106用来按需取回针对该特定批次的所有实际文件。
为了充分传达本文中所描述的概念和技术优点,为针对实际应用文件的相应有效载荷和针对占位符文件的元数据规定数据大小可能是有益的。因此,如图所示,第二批文件包括名为“App2.exe”和“App2.dll”并且有效载荷分别为91MB和15MB的两个实际文件(在应用提供方102(1)上的云数据层中示出)。如进一步说明的,与这两个实际文件相对应的两个占位符文件各自仅为1KB(在本地驱动器124上的本地数据层中示出)。因此,在这些特定但非限制性的情况下,第二批应用文件在以脱水状态存储时将仅消耗2KB的本地存储空间,而在以水合状态存储时将消耗106MB的本地存储空间。
计算设备106可以包括安装到本地驱动器124上的应用110。在一些实施例中,可用于实现应用110的各种应用的至少一些批次的文件可以以脱水状态被存储在本地驱动器124上。特别地,应当理解,本文中所描述的技术可用于减少OS 108和/或应用110的软件占用空间。软件占用空间的这种减少是通过以脱水状态存储可用于实现应用110的文件来实现的。根据本文中所描述的技术来配置计算设备106使用户和/或软件组件能够发出对脱水应用文件的请求(例如,调用)并且使这些请求得到服务,就像脱水应用文件在当请求被生成时被完全水合一样。这是通过在接收到请求时立即自动对所请求的应用文件(以及在一些实施例中其他通用批处理的应用文件)进行水合来实现的。然后,在对所请求的应用文件进行水合的这个中间步骤之后,计算设备106然后可以通过供应对新水合的应用文件的有效载荷的访问,来响应于该请求。即,计算设备106在有效载荷在本地不可用时接收请求并且稍微延迟对请求的响应,直到在将有效载荷下载和/或写入本地驱动器124之后。
在一些实现中,在发出寻求访问当前在计算设备106上脱水的文件的请求时,计算设备106可以利用同步引擎112来取回下载包。例如,当OS 108接收到标识当前脱水的特定应用的请求时,OS 108可以取回存储在针对特定应用的占位符文件中的元数据。OS 108然后可以向同步引擎112提供元数据,以使下载请求128被传输到与特定应用相关联的应用提供方102(1)。如上所述,存储在占位符文件中的元数据可以包括:可以从其获取所请求的应用文件的应用提供方(众多潜在的应用提供方中的)的标识。如本文中使用的,术语“元数据”具体是指提供关于对应文件的信息的数据集,并且更具体地是关于计算设备106如何获取与对应文件相关联的有效载荷的信息。在一些实施例中,元数据还可以指示针对所请求的应用的有效载荷当前是否被写入计算设备的本地驱动器。换而言之,元数据可以包括关于特定请求的应用当前是否在计算设备处被水合的指示。
下载请求128可以包括已经请求访问的所请求的应用的标识。在一些实例中,下载请求128可以省略个体文件的任何特定标识。例如,该请求可以基于用户输入运行命令,以通过访问相关联的可执行文件(例如,“.exe”)来启动当前脱水应用来生成。在该示例中,运行命令可以具体引用名为“App2.exe”的文件,而不引用名为“App2.dll”的相关文件。因此,该运行命令可以使OS 108生成访问名为“App2.exe”的文件的请求。响应于该请求,同步引擎112可以仅针对该特定请求的应用文件而生成下载请求128,但不请求名为“App2.dll”的相关文件——即使这些文件通常被批处理。同步引擎112可能不会标识下载请求128中的所有这些共同批处理的应用文件的一个原因是,计算设备106的各种组件可能缺乏关于哪些文件一起被批处理的可见性。例如,OS 106可以被设计为简单地在应用的基础上满足请求,并且所请求的文件可以省略关于与它们可能具有的其他文件的任何关系的指示。示例性同步引擎112包括但不限于由DROPBOX开发的同步API、由谷歌开发的备份和同步、以及用于’微软的WINDOWS 10的ONEDRIVE通用WINDOWS平台(UWP)APP。因此,可以理解,同步引擎112可以是OS 108的本机组件,或者可以是与OS 108分开下载并且安装到客户端设备106上的附加组件。
在接收到下载请求128时,第一应用提供方102(1)可以标识所请求的应用所属的整个预定义批次的文件。例如,如图所示,第一应用提供方102(1)可以确定所请求的应用(例如,名为“App2.exe”的文件)属于名为“File Batch:App2”的一批应用文件。然后,不是仅仅返回所请求的文件,第一应用提供方102(1)可以返回下载包130,该下载包包括整个标识出的应用文件批次。因此,在所示示例中,响应于下载请求128标识名为“App2.exe”的单个文件,第一应用提供方102(1)返回所请求的“App2.exe”文件和“App2.dll”文件两者——以及通常被批处理的任何其他应用文件。在一些实施例中,第一应用提供方102(1)可以以压缩存档文件的形式返回下载包130,以增加整批应用文件在计算设备106上变得水合的速度。由于当在期望应用中实现时,计算设备106可能会请求访问批次内的其他应用文件,所以将下载包130作为压缩存档文件夹进行递送还减少了总网络带宽,否则该总网络带宽在每个应用文件根据计算设备106的请求被个体递送时将被消耗。
在接收到下载包130时,计算设备106可以将个体文件中的每个个体文件写入本地驱动器124(例如,硬盘、固态硬盘驱动器、或任何其他合适的易失性或非易失性存储介质)上,以便将个体应用文件从脱水状态转换为水合状态。在一些实施例中,一旦整批文件被完全水合(或当该批次被主动水合时),计算设备106通过使用其新下载的有效载荷用于供应对所请求的应用的访问来服务该请求。备选地,计算设备106可以通过甚至在有效载荷被写入本地驱动器124之前,供应对所请求的应用的新下载的有效载荷的访问来服务该请求。例如,可以通过将有效载荷从下载包直接加载到计算设备106的存储器或高速缓存中来服务该请求。
在一些实现中,例如,计算设备106还包括更新服务114,更新服务114被配置为自动更新各种组件,诸如OS 108和/或应用110。例如,作为OS 108和/或应用110的新版本变得从对应提供方处可获取时,更新服务114可以下载安装文件(例如,具有“.cab”扩展名的封包档),然后在适当安排的时间(例如,在非高峰使用期间)安装已经下载的安装文件。在一些实施例中,更新服务114还被配置为当对脱水应用的更新变得从应用提供方102可获取时,自动更新与特定脱水应用相对应的元数据。例如,更新服务114可以针对在计算设备106上当前脱水的各种应用而周期性地与(多个)应用提供方102通信,以确定文件的(多个)新版本何时变得可获取。然后,随着文件的(多个)新版本变得可获取,更新服务114可以更新存储在针对文件的占位符中的元数据,使得“经更新的”元数据现在指示如何获取经更新的文件和其经更新的有效载荷。例如,元数据可以是未注明日期的,使得元数据中先前地址被新地址覆盖,该先前地址指示从何处下载应用文件的先前版本,该新地址指示从何处下载文件的新版本。
如进一步所示,计算设备106包括中央处理单元(“CPU”)116,CPU 116经由总线(图1中未示出)连接到各种组件,诸如本地驱动器124、存储器118、输入/输出(I/O)控制器120和/或网络接口122。可以理解,本文中所描述的系统组件(例如,(多个)应用110、OS 108和/或同步引擎112)可以在加载到CPU 116中并且被执行时将CPU 116和整个计算设备106从通用计算系统变换为被定制为促进本文中呈现的功能的专用计算系统。CPU 116可以由任何数目的晶体管或其他分立电路元件构成,该晶体管或其他分立电路元件可以个体或共同地呈现任何数目的状态。更具体地,CPU 116可以响应于本文中公开的软件模块内包含的可执行指令而作为有限状态机进行操作。这些计算机可执行指令可以通过指定CPU 116如何在状态之间转变来变换CPU 116,从而变换构成CPU 116的晶体管或其他分立硬件元件。
本地驱动器124和相关联的计算机可读介质为计算设备106提供非易失性存储。虽然本文中包含的计算机可读介质的描述是指大容量存储设备(诸如,固态驱动器和/或硬盘),但是本领域技术人员应当理解,计算机可读介质可以是任何可用的计算机存储介质或通信介质,该介质可以由诸如系统100的计算架构访问。通信介质包括计算机可读指令、数据结构、程序模块、和/或调制数据信号中的其他数据(诸如,载波或其他传输机制),并且包括任何传送介质。术语“调制数据信号”是指一种信号,该信号的特性中的一个或多个特性以某种方式改变或设置,以便在信号中对信息进行编码。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接等有线介质、以及诸如声学、RF、红外线和其他无线介质等无线介质。上述各项的任何组合也被包括在计算机可读介质的范围内。
作为示例而非限制,计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性的可移动和不可移动介质。例如,计算机存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其他固态存储技术、CD-ROM、数字多功能磁盘(“DVD”)、HD-DVD、BLU-RAY、或者其他光存储、盒式磁带、磁带、磁盘存储或其他磁存储设备、或者可以用于存储期望信息并且可以由计算设备106访问的任何其他介质。出于权利要求的目的,短语“计算机存储介质”、“计算机可读存储介质”及其变体本身不包括波、信号和/或其他暂态和/或无形通信介质。
I/O控制器120可以接收和处理来自多个其他设备的输入,包括键盘、鼠标或电子笔(图1中未示出)。类似地,I/O控制器120可以向显示屏(例如,用于显示本文中描述的文件浏览器GUI)、打印机或其他类型的输出设备(在图1中也未示出)提供输出。网络接口122可以使计算设备106能够连接到一个或多个网络104,诸如局域网(LAN)、广域网(WAN)、无线局域网(WLAN)、或用于在计算设备106与(多个)应用提供方102之间传递信息的任何其他合适的网络。
现在转向图2A,示出了示例数据流场景200,其中计算设备106对所请求的应用执行打开请求208,该应用以脱水状态当前被存储在本地驱动器124上。如图所示,计算设备106可以接收用户活动216,该用户活动基于用户220与输入设备218(例如,键盘、鼠标、触摸屏、麦克风或任何其他合适的输入组件)交互而生成。用户220可以经由输入设备218执行用户活动216以请求访问应用——而无论这些应用当前是否在计算设备106上水合。如图所示,OS 108包括可用于访问第一应用204(1)到第N应用204(N)中的每个应用的应用界面202。
在各种实施例中,应用界面202可以由计算设备106针对个体应用204以一致的方式向用户220表示(例如,以图形方式显示),而不管那些个体应用当前是否在计算设备106上被水合。例如,应用界面202中的特定一个应用界面可以被设计成向用户220展示的图标,该图标可选择以使计算设备106实现特定应用。即使当执行特定应用的底层应用204在计算设备106上被脱水时,应用界面202也可以使该图标向用户220被公开。即,该图标向用户公开和/或由用户220可选择,即使针对实际使计算设备106能够启动特定应用的文件206的有效载荷不存在于本地驱动器124中。
为了图2A的目的,计算设备106的状态使得应用界面202公开第一应用204(1)、第二应用204(2)和第N应用204(N)的表示。计算设备106的状态还被实现为使得第一应用204(1)和第N应用204(N)在计算设备106上完全水合。例如,如图所示,启用实现应用的多个应用文件206,第一应用204(1)和第N应用204(N)被示出为被写入(多个)本地驱动器124。具体地,名为“App1.exe”、“AppN.exe”、“App1.dll”和“AppN.dll”的应用文件中的每个应用文件被示出为将它们的有效载荷完全写入本地驱动器124。应用文件206中的个体应用文件可以包括各种属性,诸如文件名、文件路径、有效载荷大小、元数据大小和/或自动脱水参数。出于本讨论的目的,在从标记为206的黑色应用文件框向下延伸的表格中为这些属性中的每个规定了值。这些值仅用于传达本公开的各方面,并且非旨在以任何方式限制。
在所示示例中,第一应用204(1)的水合状态导致消耗33MB的存储来存储名为“Appl.exe”的应用文件,并且还消耗附加的12MB的存储来存储名为“App1.dll”的应用文件。如进一步说明的,消耗一些附加的41MB存储来保持第N应用204(N)的水合状态。与第一应用和第N应用相比,第二应用204(2)在图2A所示的计算设备106的状态下被脱水。即,唯一地对应于第二应用204(2)的个体应用文件206被示出为处于脱水状态,使得这些应用文件的有效载荷没有被本地存储在(多个)本地驱动器124上。因此,如图所示,即使第二应用204(2)是使用一批两个应用文件来实现的,这两个应用一起需要分配106MB的本地驱动器空间才能在计算设备106上完全水合,这些应用文件也以脱水状态而被本地存储,该脱水状态省略实际有效载荷,但包含元数据,该元数据具有可以在请求时用于获取有效载荷的信息。这些脱水应用文件可以用作水合应用文件(例如,包括有效载荷)的占位符,并且元数据可以指示可以从其很容易获取对应水合应用文件的应用提供方和/或可以从其很很容易获取对应水合应用文件的地址。在所示实施例中,完全水合的应用文件由应用提供方102存储为唯一地对应于第二应用204(2)的文件批次的部分。
关于图2A所示的特定数据流场景200,与应用界面202相关联地接收的用户活动216导致计算设备106的各种组件与应用提供方102之间的一系列交互。例如,如图所示,用户活动216导致打开请求208从OS 108被传输到过滤器驱动程序209。为了本讨论的目的,假定打开请求208正在请求与名为“App2.exe”的应用文件相关联的数据。例如,过滤器驱动程序209可以是文件系统驱动程序,诸如通常与微软的OneDrive一起部署的“cldflt.sys”驱动程序。如上所述,应用文件206包括完全水合的应用文件和脱水的应用文件(例如,占位符文件)。过滤器驱动程序209协助处理对访问存储在本地驱动器124中的各种应用文件的请求。例如,如图所示,当用户执行某个计算动作时,该计算动作导致与特定应用文件相关联地生成打开请求208,过滤器驱动程序209将打开请求208传递到本地驱动器124。在一些实施例中,打开请求208可以包括重解析点,该重解析点标记与所请求的文件相关联的元数据212的一个或多个字段。重解析点可以向过滤器驱动程序212通知元数据的哪个字段指示所请求的应用文件的水合状态。例如,过滤驱动器209可以基于打开请求208向本地驱动器124查询与所请求的应用文件相关联的数据。如果针对所请求的应用文件的有效载荷被本地存储在本地驱动器124上,则过滤器驱动程序209可以简单地照常服务打开请求208。相反,如果过滤器驱动程序209查询本地驱动器124并且确定所请求的应用文件被脱水使得有效载荷不能从本地驱动器124获取,则过滤器驱动程序209可以获取与脱水文件相关联地存储的元数据212并且将该元数据212存储在高速缓存210中。
现在转向图2B,示出了示例性数据流场景225,其中计算设备通过向适当的应用提供方传输下载请求128来响应于有效载荷访问请求211。如图所示,在过滤器驱动程序209已经响应于打开请求208而高速缓存元数据212之后,OS 108然后将有效载荷访问请求传输到过滤器驱动程序209。示例性有效载荷访问请求211可以是与所请求的应用文件相关联的读取请求(例如,OS可以请求读取针对所请求的应用文件的有效载荷的某个部分)。作为另一示例,有效载荷访问请求211可以是与所请求的应用文件相关联的写入请求(例如,OS可以请求向所请求的应用文件的有效载荷的某个部分写入数据)。
响应于有效载荷访问请求211,同步引擎112然后可以基于元数据212生成下载请求128。在一些实施例中,元数据212可以包括可以从其获取所请求的应用文件的地址。附加地或备选地,元数据212可以指示可以从其获取所请求的应用文件的适当的应用提供方。例如,如上所述,请求208是请求访问名为“App2.exe”的应用文件。因此,下载请求128可以包括图2A所示的特定应用提供方102的标识符,因为该特定应用提供方102可以提供对名为“App2”的文件批次213的访问。在一些实施例中,响应于在导致元数据212的高速缓存的初始打开请求208之后接收的第一有效载荷访问请求211,下载请求128被传输到应用提供方102。应当理解,这样的实施例可以减少不必要的网络业务,因为在各种情况下,可以接收打开请求208,该打开请求208仅请求与文件属性相关联的数据,而没有发出对有效载荷的实际访问的任何后续请求。因此,一些实施例可以在接收到对应打开请求时避免对应用文件进行水合,而是等待直到接收到有效载荷访问请求。
现在转向图2C,示出了示例数据流场景250,其中在通过获取对应有效载荷并且将其写入本地驱动器124而在中间下载和水合所请求的应用文件之后,计算设备106响应于图2B的有效载荷访问请求211。如图所示,计算设备106从应用提供方102接收下载包130。下载包130响应于下载请求128而被提供。此外,下载包130可以包括所请求的应用文件所属的整个一批文件。例如,在本示例中,假定下载请求128将“App2.exe”标识为在请求208中立即被请求的特定文件。在这些情况下,应用提供方102可以将名为“App2.exe”的文件标识为名为“App2”的文件批次213的部分。然后,不是仅仅返回所请求的应用文件,应用提供方102可以返回下载包130内的整个文件批次213。在当前情况下,由于下载请求128标识“App2.exe”文件,因此应用提供方102不仅可以取回“App2.exe”文件,还可以取回“App2.dll”文件、和/或当前在计算设备上脱水的第二应用204(2)的有效载荷的任何部分。然后,应用提供方102通过提供下载包130来响应于针对单个文件的下载请求128,该下载包130包括来自整个预定义批次的应用文件206的所有应用文件。在所示实施例中,下载包130包括第1有效载荷到第N有效载荷252。
在接收到下载包130时,同步引擎112将文件批次213内的针对个体应用文件的有效载荷写入本地驱动器124。例如,计算设备106和/或同步引擎112可以解压缩下载包130并且将所包括的应用文件中的每个应用文件写入本地驱动器124(例如,硬盘、固态硬盘驱动器或任何其他合适的易失性或非易失性存储介质)上,以便将这些应用文件从脱水状态转换为水合状态。因此,基于请求仅访问文件批次213的单个应用文件(例如,“App2.exe”文件)的初始请求208,各种系统组件(诸如,过滤器驱动程序209、同步引擎112和应用提供方102)通过下载并且然后本地存储其所有对应有效载荷来共同工作,以完全水合整批应用文件(甚至那些尚未请求的应用文件)。然后,一旦应用文件的整个批次213被完全水合(或当该批次被主动水合时),计算设备106通过向OS提供响应254来服务请求208——其中响应254提供对新下载到计算设备并且被写入其本地驱动器124的有效载荷252的访问。
在一些实施例中,针对所请求的应用文件的整个有效载荷可以响应于任何有效载荷访问请求的初始接收而被完全水合。以这种方式,只要针对特定应用文件而请求有效载荷的任何部分,整个有效载荷就变得完全水合并且从本地驱动器可获取。在其他实施例中,针对所请求的应用文件的有效载荷的特定部分可以随着接收到大量增量有效载荷访问请求而被逐渐水合到本地驱动器上。例如,可以接收第一有效载荷访问请求,其请求访问针对所请求的应用文件的有效载荷的特定部分。该第一有效载荷访问请求可以触发接近所请求的部分的有效载荷的一个或多个其他部分的水合。例如,如果所请求的应用文件是地图文件,该地图文件限定了三维第一人称视角视频游戏地图中的各个房间,则针对限定特定房间的有效载荷的部分的有效载荷访问请求可以触发限定相邻房间的有效载荷的其他部分的水合。以这种方式,如果玩家从特定房间走到任何其他相邻房间,则绘制适当相邻房间所需要的数据将被完全水合并且准备好从本地驱动器使用。
如图2A至2B所示,在一些实施例中,即使对于完全水合的应用文件,可用于标识和联系可以从其获取个体应用文件206的适当应用提供方102的元数据212存储在本地驱动器124上。以这种方式,可以简单地通过从本地驱动器124中删除相关联的有效载荷来将个体应用文件206从水合状态转换为脱水状态。以这种方式,对个体应用文件进行脱水不需要计算设备106与应用提供方102通信,以获取和存储元数据212。相反,在一些实施例中,元数据212可以永久存储在计算设备106上,使得在有效载荷252被破坏或删除(无意或有意)的情况下,计算设备106保留使过滤器驱动程序209和同步引擎112一起工作以获取并且完全水合任何期望应用文件206的能力。
在一些实施例中,应用文件206中的个体应用文件包括:指示一个或多个条件的自动脱水参数,在该条件下计算设备106将从用于任何特定应用文件206的有效载荷252解除分配本地驱动器124的存储容量。在一些实例中,为有效载荷252解除分配存储容量可以包括实际上从本地驱动器124中删除有效载荷。在一些实例中,为有效载荷252解除分配存储容量可以包括:允许计算设备106覆盖当前用于存储有效载荷252的存储容量。如图所示,例如,应用文件206可以与限制个体文件被脱水的自动脱水参数相关联,或者,备选地,设置不活动时间段,在该不活动时间段之后个体文件将被脱水。例如,与第一应用204(1)相关联的应用文件206具有自动脱水参数“否”,其限制这些应用文件206被脱水。这样的参数可以适用于“核心”OS应用、或者将在计算设备106上永久保持水合的任何其他应用或其应用文件。作为另一示例,与第二应用204(2)和第N应用204(N)相关联的应用文件206各自具有对应自动脱水参数,该脱水参数设置不活动时间段,在该不活动时间段之后这些应用文件将在计算设备106上被脱水。在图2A至2B所示的特定但非限制性示例中,名为“App2.exe”的应用文件如果5天没有被访问则将自动脱水。这样的参数可以适用于与很少使用的应用相对应的应用文件,使得这些应用文件在被调用时自动水合并且然后如果在规定时间段内(例如,在该示例中为5天)未使用则自动脱水。
图3示出了可以在其中实现本文中所描述的实施例的示例计算环境。图3示出了数据中心300,数据中心300被配置为经过通信网络330经由用户计算机302a、302b和302c(在本文中可以单独称为“计算机302”或联合称为“计算机302”)向用户300a、300b或300c(其在本文中可以单独称为“用户300”或联合称为“用户300”)提供计算资源。由数据中心300提供的计算资源可以包括各种类型的资源,诸如计算资源、数据存储资源、数据通信资源等。每种类型的计算资源可以是通用的,也可以以多个特定配置可用。例如,计算资源可以作为虚拟机可用。虚拟机可以被配置为执行应用,包括web服务器、应用服务器、媒体服务器、数据库服务器等。数据存储资源可以包括文件存储设备、块存储设备等。每种类型或配置的计算资源可以以不同配置可用,诸如处理器的数目、存储器的大小和/或存储容量。在一些实施例中,资源可以以称为实例(诸如,虚拟机实例或存储实例)的单位被提供给客户端。虚拟计算实例可以称为虚拟机,并且例如可以包括具有指定计算能力(其可以通过指示CPU的类型和数目、主存储器大小等来指定)和指定软件堆栈(例如,操作系统的特定版本,其可以在管理程序之上依次运行)的一个或多个服务器。
数据中心300可以包括服务器316a、316b和316c(其在本文中可以单独称为“服务器316”或联合称为“多个服务器316”),服务器316a、316b和316c提供可用作虚拟机318a和318b(其在本文中可以单独称为“虚拟机318”或联合称为“多个虚拟机318”)的计算资源。虚拟机318可以被配置为执行诸如web服务器、应用服务器、媒体服务器、数据库服务器等应用。可以提供的其他资源包括数据存储资源(图3中未示出)并且可以包括文件存储设备、块存储设备等。服务器316还可以执行管理和控制数据中心中的资源分配的功能(诸如,控制器315)。控制器315可以是结构控制器或被配置为管理服务器316上的虚拟机分配的另一种类型的程序。
参考图3,通信网络330可以例如是链接网络的公共可访问网络,并且可以由诸如互联网的各种实体操作。在其他实施例中,通信网络330可以是专用网络,诸如公众完全或部分不可访问的公司网络。
通信网络330可以提供对计算机302的访问。计算机302可以是用户300使用的计算机。计算机302a、302b或302c可以是服务器、台式或膝上型个人计算机、平板计算机、智能电话、机顶盒、或能够访问数据中心300的任何其他计算设备。用户计算机302a或302b可以直接连接到互联网(例如,经由电缆调制解调器)。用户计算机302c可以在数据中心300内部,并且可以经由内部网络直接连接到数据中心300中的资源。尽管仅描绘了三个用户计算机302a、302b和302c,但是应当理解,可以存在多个用户计算机。
计算机302还可以用于配置由数据中心300提供的计算资源的各方面。例如,数据中心300可以提供web界面,通过该web界面,可以通过使用在用户计算机302上执行的web浏览器应用程序来配置其操作的各方面。备选地,在用户计算机302上执行的独立应用程序可以用于访问由数据中心300公开的应用界面(API)以执行配置操作。
服务器316可以被配置为提供上述计算资源。服务器316中的一个或多个服务器可以被配置为执行管理器310a或310b(其在本文中可以单独称为“管理器310”或联合称为“多个管理器310”),管理器310a或310b被配置为执行虚拟机。例如,管理器320可以是虚拟机监测器(VMM)、结构控制器、或被配置为启用虚拟机318在服务器316上的执行的其他类型的程序。
应当理解,虽然以上公开的实施例是在虚拟机的上下文中讨论的,但是其他类型的实现可以与本文中公开的概念和技术一起使用。
在图3所示的示例数据中心300中,网络设备311可以用于互连服务器316a和316b。网络设备311可以包括一个或多个交换机、路由器或其他网络设备。网络设备311还可以连接到网关340,网关340连接到通信网络330。网络设备311可以促进数据中心300中的网络内的通信,例如,通过基于这样的通信的特性(例如,报头信息,包括源和/或目的地地址、协议标识符等)和/或专用网络的特性(例如,基于网络拓扑的路由等)适当地转发分组或其他数据通信。应当理解,为了简单起见,该示例的计算系统和其他设备的各个方面在没有示出某些常规细节的情况下被示出。附加计算系统和其他设备在其他实施例中可以互连并且可以以不同方式互连。
应当理解,图3所示的网络拓扑已经被极大地简化并且更多的网络和联网设备可以被利用以互连本文中所公开的各种计算系统。这些网络拓扑和设备对于本领域技术人员来说应当是很清楚的。
还应当理解,图3中描述的数据中心300仅是说明性的并且可以利用其他实现。附加地,应当理解,本文中公开的功能可以用软件、硬件或软件和硬件的组合来实现。其他实现对于本领域技术人员来说应当是很清楚的。还应当理解,服务器、网关或其他计算设备可以包括可以交互和执行所描述的类型的功能的硬件或软件的任何组合,包括但不限于台式或其他计算机、数据库服务器、网络存储设备和其他网络设备、PDA、平板计算机、智能电话、互联网设备、基于电视的系统(例如,使用机顶盒和/或个人/数字视频录像机)、以及包括适当通信功能的各种其他消费产品。此外,在一些实施例中,由所示模块提供的功能可以组合在更少的模块中或者分布在附加的模块中。类似地,在一些实施例中,一些所示模块的功能可以不提供和/或其他附加功能可以是可用的。
现在转向图4,示出了用于使虚拟机406能够以脱水状态存储预定批次的特征文件,同时在虚拟机406处保留预定批次的特征文件的按需可访问性的示例系统400。在所示示例中,与名为“Feature_Name2”的特征相对应的第一批次的特征文件以水合状态存储,使得该第一批次内的每个个体特征文件的有效载荷被存储在虚拟机406上。个体特征文件的相应有效载荷可以包括例如二进制文件、权限、注册表设置、和可用于实现特定特征的其他数据。同样,在所示示例中,与名为“Feature_Name2”的特征相对应的第二批次的特征文件以脱水状态存储,使得占位符文件被存储以代替该批次的实际特征文件。在一些实施例中,占位符文件被存储在虚拟机406内,其存储路径与实际特征文件在被水合(例如,有效载荷被写入本地存储)到虚拟机406上时将被存储的路径相同。以这种方式,如果被调用的特征文件没有被水合到虚拟机406上,则导致在特定文件路径处、被调用的实际特征文件的、与虚拟机406的用户交互将打开实际特征文件(如果存在的话)或相应占位符。占位符文件不包括相关联的实际特征文件的有效载荷,而是包括指示对应实际特征文件(例如,具有对应有效载荷的完整特征文件)的属性的元数据。与任何特定特征文件相关联的元数据可以指示可以从其获取包括对应有效载荷的特定特征文件的特征提供方。如下面更详细描述的,当特定批次的特征文件处于脱水状态时,来自该特定批次中的占位符文件的元数据可以由虚拟机406用来在该批次中的、与占位符文件相关联的、单个特征文件被请求时按需取回针对该特定批次的所有实际特征文件。
如图所示,虚拟机406可以包括操作系统(OS)。为了促进虚拟机406的操作,可用于实现OS 408的各种“核心”和/或频繁使用的特征的至少一些批次的特征文件可以在虚拟机406上完全水合。为了减少在虚拟机406上消耗的总存储空间量,可用于实现OS 408的其他特征的至少一些其他批次的特征文件在虚拟机406上保持脱水——除非如下所述被调用。
虚拟机406还可以包括安装到本地驱动器424上的应用440。在一些实施例中,可用于实现应用440的各种特征的至少一些批次的特征文件可以以脱水状态存储。特别地,应当理解,本文中描述的技术可用于减少OS 408和/或应用440的软件占用空间。软件占用空间的这种减少是通过选择性地存储个体批次的特征文件来实现的,该可用于以脱水状态实现OS 408和/或应用440的选择特征的。根据本文中描述的技术来配置虚拟机406使用户和/或软件组件能够发出针对脱水特征文件的请求(例如,调用)并且使这些请求得到服务,就像脱水特征文件在当请求被生成时被完全水合一样。这是通过在接收到请求时立即自动对所请求的特征文件(以及在一些实施例中其他通常批处理的特征文件)进行水合来实现的。然后,在对所请求的特征文件进行水合的这个中间步骤之后,虚拟机406然后可以通过供应对新水合的特征文件的有效载荷的访问来响应于该请求。即,虚拟机406在有效载荷在本地不可用时接收请求并且稍微延迟对请求的响应,直到在将有效载荷下载和/或写入虚拟机之后。
在一些实现中,在发出寻求访问当前在虚拟机406上脱水的特征文件的请求时,虚拟机406可以利用同步功能来取回下载包。例如,当OS 408接收到标识当前脱水的特定特征文件的请求时,OS 408可以取回存储在特定特征文件的针对占位符文件中的元数据。OS408然后可以向同步功能提供元数据,以使下载请求428被传输到与特定特征文件相关联的特征主机402(1)。如上所述,存储在占位符文件中的元数据可以包括可以从其获取所请求的特征文件的特征提供方(众多潜在的特征提供方中的)的标识。如本文中使用的,术语“元数据”具体是指提供关于对应特征文件并且更具体地是关于虚拟机406可以如何获取与对应特征文件相关联的有效载荷的信息的数据集。在一些实施例中,元数据还可以指示针对所请求的特征文件的有效载荷当前是否被写入虚拟机。换而言之,元数据可以包括关于特定请求的特征文件当前是否在虚拟机处被水合的指示。
下载请求428可以包括已经请求访问的所请求的特征文件的标识。在一些实例中,下载请求428可以省略其他特征文件(诸如,通常与所请求的特征文件一起批处理的那些特征文件)的任何特定标识。例如,该请求可以基于用户输入运行命令以通过访问相关联的可执行文件(例如,“.exe”)来启动当前脱水特征和/或应用来生成。在该示例中,运行命令可以具体引用名为“Feature_Name2.exe”的文件,而不引用名为“Feature_Name2.dll”的相关文件。因此,该运行命令可以使OS 408生成用于访问名为“Feature_Name2.exe”的文件的请求。响应于该请求,同步功能可以仅针对该特定请求的特征文件生成下载请求428,但不请求名为“Feature_Name2.dll”的相关文件——即使这些文件通常被批处理。同步功能可能不会标识下载请求428中的所有这些通常批处理的特征文件的一个原因是,虚拟机406的各种组件可能缺乏关于哪些文件一起被批处理的可见性。例如,OS406可以被设计为,简单地在逐文件的基础上满足请求,并且所请求的特征文件可以省略关于与它们可能具有的其他文件的任何关系的指示。同步功能可以是OS 408的本机组件,或者可以是与OS 408分开下载并且被安装到虚拟机406上的附加组件。
在接收到下载请求428时,第一特征主机402(1)可以标识所请求的特征文件所属的整个预定义批次的特征文件。例如,如图所示,第一特征主机402(1)可以确定所请求的特征文件(例如,名为“Feature_Name2.exe”的文件)属于名为“File Batch:Feature_Name2”的一批特征文件。然后,不是仅仅返回所请求的特征文件,第一特征主机402(1)可以返回包括整个所标识的特征文件批次的下载包430。因此,在所示示例中,响应于下载请求428标识名为“Feature_Name2.exe”的单个文件,第一特征主机402(1)返回所请求的“Feature_Name2.exe”文件和“Feature_Name2.dll”文件两者——以及通常批处理的任何其他特征文件。在一些实施例中,第一特征主机402(1)可以以压缩存档文件的形式返回下载包430,以增加整批特征文件在虚拟机406上变得水合的速度。
在接收到下载包430时,虚拟机406可以将个体特征文件中的每个个体特征文件写入本地虚拟机存储器424(例如,虚拟硬盘、或任何其他合适的易失性或非易失性虚拟化存储介质)上,以便将个体特征文件从脱水状态转换为水合状态。在一些实施例中,一旦整批特征文件被完全水合(或当该批次被主动地水合时),虚拟机406通过使用其新下载的有效载荷供应对所请求的特征文件的访问来服务该请求。备选地,虚拟机406可以通过甚至在有效载荷被写入虚拟机之前供应对所请求的特征文件的新下载的有效载荷的访问来服务该请求。例如,可以通过将有效载荷从下载包直接加载到虚拟机406的存储器或高速缓存中来服务该请求。
图5是用于在计算设备处的软件组件调用时将个体应用文件或应用文件批次水合到计算设备的本地驱动器上的示例方法500的流程图。本领域普通技术人员应当理解,本文中公开的方法的操作不必然以任何特定顺序呈现,并且以(多个)备选顺序执行一些或所有操作是可能的并且是预期的。为便于描述和说明,已经按演示顺序介绍了这些操作。在不脱离所附权利要求的范围的情况下,操作可以添加、省略、一起执行和/或同时执行。
在框501处,示例方法500开始。
在框503处,接收访问计算设备上的第一应用的请求。
在框505处,响应于接收到该请求,取回写入计算设备的本地驱动器的元数据,该元数据用于指示第一应用是否被写入计算设备的本地驱动器。
在框507处,响应于元数据指示第一应用未被写入计算设备的本地驱动器,使下载请求被传输到应用提供方,该应用提供方与应用相关联。
在框509处,基于下载请求,接收来自应用提供方的针对应用的下载包。在实施例中,下载包包括一个或多个应用文件,该一个或多个应用文件可操作以在应用被存储在计算设备上时在计算设备上执行该应用,而不执行安装过程。
步骤511处,基于针对应用文件的下载包:
将应用文件写入计算设备的本地驱动器。
在框513处,通过在计算设备上启动应用来服务该请求,而不执行安装过程。
一旦请求被服务,示例方法500在框515处结束。
图6是用于在计算设备处的软件组件调用时、将个体应用文件或应用文件批次水合到计算设备的本地驱动器上的示例方法600的流程图。本领域普通技术人员应当理解,本文中公开的方法的操作不必然以任何特定顺序呈现,并且以(多个)备选顺序执行一些或所有操作是可能的并且是预期的。为便于描述和说明,已经按演示顺序介绍了这些操作。在不脱离所附权利要求的范围的情况下,操作可以添加、省略、一起执行和/或同时执行。
在框601处,示例方法600开始。
在框603处,接收启动虚拟机上的第一应用的请求。
在框605处,响应于该请求,接收与第一应用相关联地被存储在虚拟机处的元数据,该元数据指示与第一应用相关联的文件没有存储在虚拟机处。
在框607处,从应用主机接收包括一个或多个应用文件的下载包,该一个或多个应用文件可操作以在第一应用被存储在虚拟机处时执行第一应用,而不执行安装过程。
在框609处,基于下载包,通过启动应用来服务该请求,而不执行安装过程。
一旦请求被服务,示例方法600在框611处结束。
图7是用于在计算设备处的软件组件调用时将个体应用文件或应用文件批次水合到计算设备的本地驱动器上的示例方法700的流程图。本领域普通技术人员应当理解,本文中公开的方法的操作不必然以任何特定顺序呈现,并且以(多个)备选顺序执行一些或所有操作是可能的并且是预期的。为便于描述和说明,已经按演示顺序介绍了这些操作。在不脱离所附权利要求的范围的情况下,操作可以添加、省略、一起执行和/或同时执行。
在框701处,示例方法700开始。
在框703处,在计算设备上安装第一应用,其中与第一应用相关联的文件被存储在计算设备的本地存储处。
在框705处,在计算设备上安装第二应用,其中与第二应用相关联的文件被存储在远程计算设备处。
在框707处,在计算设备的本地存储处存储指示第二应用未被写入计算设备的本地存储的元数据。
在框709处,响应于启动第二应用的请求,确定元数据指示第二应用未被写入计算设备的本地驱动器。
在框711处,使下载请求被传输到远程计算设备。
在框713处,基于下载请求,接收来自远程计算设备针对第二应用的下载包。在一个实施例中,下载包包括一个或多个应用文件,该一个或多个应用文件可操作以在计算设备上执行第二应用,而不执行安装过程。
在框715处,基于下载包,将应用文件写入计算设备的本地存储。
在框717处,通过在计算设备上启动第二应用来服务该请求,而不执行安装过程。
一旦请求被服务,示例方法700在框719处结束。
图8是用于在计算设备处的软件组件调用时、将个体应用文件或应用文件批次水合到计算设备的本地驱动器上的示例方法800的流程图。本领域普通技术人员应当理解,本文中公开的方法的操作不必然以任何特定顺序呈现,并且以(多个)备选顺序执行一些或所有操作是可能的并且是预期的。为便于描述和说明,已经按演示顺序介绍了这些操作。在不脱离所附权利要求的范围的情况下,操作可以添加、省略、一起执行和/或同时执行。
在框801处,示例方法800开始。
在框803处,在虚拟机处安装第一应用,其中与第一应用相关联的文件被存储在虚拟机的本地虚拟存储上。
在框805处,在虚拟机处安装第二应用,其中与第二应用相关联的文件被存储在远程主机上。
在框807处,在虚拟机处存储指示第二应用未被写入虚拟机的本地虚拟存储的元数据。
在框809处,响应于启动第二应用的请求,确定元数据指示第二应用未被写入虚拟机的本地虚拟存储。
在框811处,使下载请求被传输到远程主机。
在框813处,基于下载请求,接收来自远程主机的针对第二应用的下载包。在实施例中,下载包包括一个或多个应用文件,该一个或多个应用文件可操作以执行第二应用,而不执行安装过程。
在框815处,基于下载包,将应用文件写入虚拟机的本地虚拟存储。
在框817处,通过在不执行安装过程的情况下启动第二应用来服务该请求。
一旦请求被服务,示例方法800在框819处结束。
示例条款
考虑到以下条款,可以考虑本文中提出的公开内容。
1.一种计算设备,包括:
本地驱动器;
一个或多个处理器;
存储器,与一个或多个处理器通信,存储器上存储有计算机可读指令,该计算机可读指令在由一个或多个处理器执行时,使计算设备:
接收用于访问计算设备上的第一应用的请求;
响应于接收到请求,取回被写入计算设备的本地驱动器的元数据,元数据用于指示第一应用是否被写入计算设备的本地驱动器;
响应于元数据指示第一应用未被写入计算设备的本地驱动器,使下载请求被传输到与应用相关联的应用提供方;
基于下载请求,接收来自应用提供方的针对应用的下载包,其中下载包包括一个或多个应用文件,一个或多个应用文件可操作以在应用被存储在计算设备上时执行应用,而不执行安装过程;以及
基于针对应用文件的下载包:
将应用文件写入计算设备的本地驱动器;以及
通过启动应用来服务请求,而不执行安装过程。
2.一种计算机实现的方法,包括:
接收启动虚拟机上的第一应用的请求;
响应于请求,取回与第一应用相关联地被存储在虚拟机处的元数据,元数据指示与第一应用相关联的文件没有被存储在虚拟机处;
向与第一应用相关联的应用主机传输下载请求,下载请求包括用于标识第一应用的元数据的方面;
从应用主机接收包括一个或多个应用文件的下载包,一个或多个应用文件可操作以在第一应用存储在虚拟机处时执行第一应用,而不执行安装过程;以及
基于下载包,通过启动应用来服务请求,而在不执行安装过程。
3.一种方法,包括:
在计算设备上安装第一应用,其中与第一应用相关联的文件被存储在计算设备的本地存储处;
在计算设备上安装第二应用,其中与第二应用相关联的文件被存储在远程计算设备处;
将元数据存储在计算设备的本地存储处,元数据指示第二应用未被写入计算设备的本地存储的;
其中响应于启动第二应用的请求:
确定元数据指示第二应用未被写入计算设备的本地驱动器;
使下载请求被传输到远程计算设备;
基于下载请求,接收来自远程计算设备的针对第二应用的下载包,其中下载包包括一个或多个应用文件,一个或多个应用文件可操作以执行第二应用,而不执行安装过程;
基于下载包,将应用文件写入计算设备的本地存储;以及
通过启动第二应用来服务请求,而不执行安装过程。
4.一种方法,包括:
在虚拟机处安装第一应用,其中与第一应用相关联的文件被存储在虚拟机的本地虚拟存储上;
在虚拟机处安装第二应用,其中与第二应用相关联的文件被存储在远程主机上;
将元数据存储在虚拟机处,元数据指示第二应用未被写入虚拟机的本地虚拟存储;
响应于启动第二应用的请求,确定元数据指示第二应用未被写入虚拟机的本地虚拟存储;
使下载请求被传输到远程主机;
基于下载请求,接收来自远程主机的针对第二应用的下载包,其中下载包包括一个或多个应用文件,一个或多个应用文件可操作以执行第二应用,而不执行安装过程;
基于下载包,将应用文件写入虚拟机的本地虚拟存储;以及
通过启动第二应用来服务请求,而不执行安装过程。
最后,虽然已经用特定于结构应用和/或方法动作的语言描述了各种技术,但应当理解,在所附表示中限定的主题不必然限于所描述的特定应用或动作。相反,特定应用和动作被公开作为实现所要求保护的主题的示例形式。

Claims (15)

1.一种计算设备,包括:
本地驱动器;
一个或多个处理器;
存储器,与所述一个或多个处理器通信,所述存储器上存储有计算机可读指令,所述计算机可读指令在由所述一个或多个处理器执行时,使所述计算设备:
接收用于访问所述计算设备上的第一应用的请求;
响应于接收到所述请求,取回被写入所述计算设备的所述本地驱动器的元数据,所述元数据用于指示所述第一应用是否被写入所述计算设备的所述本地驱动器;
响应于所述元数据指示所述第一应用未被写入所述计算设备的所述本地驱动器,使下载请求被传输到与所述应用相关联的应用提供方;
基于所述下载请求,接收来自所述应用提供方的针对应用的下载包,其中所述下载包包括一个或多个应用文件,所述一个或多个应用文件可操作以在所述应用被存储在所述计算设备上时在所述计算设备上执行所述应用,而不执行安装过程;以及
基于针对所述应用文件的所述下载包:
将所述应用文件写入所述计算设备的所述本地驱动器;以及
通过在所述计算设备上启动所述应用来服务所述请求,而不执行所述安装过程。
2.根据权利要求1所述的计算设备,还包括被存储在所述计算设备上的计算机可读指令,所述计算机可读指令在由所述一个或多个处理器执行时,使所述计算设备:
接收用于访问所述计算设备上的第二应用的请求;
响应于接收到第二请求,取回被写入所述计算设备的所述本地驱动器的元数据,所述元数据用于指示所述第二应用是否被写入所述计算设备的所述本地驱动器;以及
响应于所述元数据指示所述第二应用被写入所述计算设备的所述本地驱动器,使所述第二应用安装在所述计算设备上,其中与所述第二应用相关联的文件被存储在所述计算设备的本地存储处。
3.根据权利要求1所述的计算设备,其中所述元数据包括以下一项或多项:文件名、大小、时间戳、权限和版本。
4.根据权利要求1所述的计算设备,其中如果所述第一应用未被写入所述计算设备的所述本地驱动器,与所述第一应用相关联的第一远离所述计算设备而被存储。
5.一种方法,包括:
在计算设备上安装第一应用,其中与所述第一应用相关联的文件被存储在所述计算设备的本地存储处;
在所述计算设备上安装第二应用,其中与所述第二应用相关联的文件被存储在远程计算设备处;
将元数据存储在所述计算设备的所述本地存储处,所述元数据指示所述第二应用未被写入所述计算设备的所述本地存储;
响应于启动所述第二应用的请求:
确定所述元数据指示所述第二应用未被写入所述计算设备的所述本地驱动器;
使下载请求被传输到所述远程计算设备;
基于所述下载请求,接收来自所述远程计算设备的针对所述第二应用的下载包,其中所述下载包包括一个或多个应用文件,所述一个或多个应用文件可操作以在所述计算设备上执行所述第二应用,而不执行安装过程;
基于所述下载包,将所述应用文件写入所述计算设备的所述本地存储;以及
通过在所述计算设备上启动所述第二应用来服务所述请求,而不执行所述安装过程。
6.根据权利要求5所述的方法,其中如果预定条件被满足,与所述第二应用相关联的所述文件从所述计算设备中被移除并且被存储在所述远程计算设备处。
7.根据权利要求5所述的方法,还包括:
如果预定条件被满足,与所述第二应用相关联的所述文件从所述计算设备中被移除并且被存储在所述远程计算设备处,以及
将元数据存储在所述计算设备的所述本地存储处,所述元数据指示所述第一应用未被写入所述计算设备的所述本地存储。
8.根据权利要求7所述的方法,其中所述预定条件是可用存储量和所述第二应用的安装寿命中的一项或多项。
9.根据权利要求5所述的方法,还包括:拦截应用启动,以确定所请求的应用是否被本地存储。
10.根据权利要求5所述的方法,其中哪些应用被存储在所述计算设备的所述本地存储处的确定在所述计算设备的初始配置期间被作出。
11.根据权利要求5所述的方法,其中所述第二应用经由针对所述计算设备的归档系统的用户界面指示而被指示为本地可用。
12.一种被配置为启动应用的系统,所述系统被配置为:
在计算设备上安装第一应用,其中与所述第一应用相关联的文件被存储在所述计算设备的本地存储处;
在所述计算设备上安装第二应用,其中与所述第二应用相关联的文件被存储在远程计算设备处;
将元数据存储在所述计算设备的所述本地存储处,所述元数据指示所述第二应用未被写入所述计算设备的所述本地存储;
响应于启动所述第二应用的请求:
确定所述元数据指示所述第二应用未被写入所述计算设备的所述本地驱动器;
使下载请求被传输到所述远程计算设备;
基于所述下载请求,接收来自所述远程计算设备的针对所述第二应用的下载包,其中所述下载包包括一个或多个应用文件,所述一个或多个应用文件可操作以在所述计算设备上执行所述第二应用,而不执行安装过程;
基于所述下载包,将所述应用文件写入所述计算设备的所述本地存储;以及
通过在所述计算设备上启动所述第二应用来服务所述请求,而不执行所述安装过程。
13.根据权利要求12所述的系统,其中如果预定条件被满足,与所述第二应用相关联的所述文件从所述计算设备中被移除并且被存储在所述远程计算设备处。
14.根据权利要求12所述的系统,还包括:
如果预定条件被满足,与所述第二应用相关联的所述文件从所述计算设备中被移除并且被存储在所述远程计算设备处,以及
将元数据存储在所述计算设备的所述本地存储处,所述元数据指示所述第一应用未被写入所述计算设备的所述本地存储。
15.根据权利要求14所述的系统,其中所述预定条件是在所述系统上可用的存储量或所述第二应用的安装寿命。
CN202080058394.XA 2019-08-23 2020-06-12 应用的水合 Pending CN114270315A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962891209P 2019-08-23 2019-08-23
US62/891,209 2019-08-23
US16/672,223 2019-11-01
US16/672,223 US11029932B2 (en) 2019-08-23 2019-11-01 Hydration of applications
PCT/US2020/037341 WO2021040843A1 (en) 2019-08-23 2020-06-12 Hydration of applications

Publications (1)

Publication Number Publication Date
CN114270315A true CN114270315A (zh) 2022-04-01

Family

ID=74645856

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080058394.XA Pending CN114270315A (zh) 2019-08-23 2020-06-12 应用的水合

Country Status (4)

Country Link
US (2) US11029932B2 (zh)
EP (1) EP4018302A1 (zh)
CN (1) CN114270315A (zh)
WO (2) WO2021040843A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7306910B2 (ja) * 2019-07-30 2023-07-11 ファナック株式会社 アプリケーション販売管理サーバシステム、アプリケーション販売管理システム、管理制御装置及び配信制御装置
CN115220609A (zh) * 2021-03-29 2022-10-21 北京小米移动软件有限公司 信息处理方法及装置、终端设备及存储介质
US11669404B2 (en) * 2021-05-28 2023-06-06 EMC IP Holding Company LLC Efficient access-based reallocation of backup data within an object storage
US11875196B1 (en) * 2023-03-07 2024-01-16 Appian Corporation Systems and methods for execution in dynamic application runtime environments

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6311221B1 (en) * 1998-07-22 2001-10-30 Appstream Inc. Streaming modules
US6523166B1 (en) * 1998-09-21 2003-02-18 Microsoft Corporation Method and system for on-demand installation of software implementations
US8005851B2 (en) 2008-05-21 2011-08-23 Microsoft Corporation Streaming virtual disk for virtual applications
US8910149B2 (en) * 2010-12-24 2014-12-09 Microsoft Corporation On-demand or incremental remote data copy
US8782053B2 (en) * 2011-03-06 2014-07-15 Happy Cloud Inc. Data streaming for interactive decision-oriented software applications
US20170161050A1 (en) * 2011-03-06 2017-06-08 Happy Cloud Inc. Methods for Downloading and Installing Computer Software Applications on Demand
US9086937B2 (en) 2012-05-16 2015-07-21 Apple Inc. Cloud-based application resource files
US9405767B2 (en) * 2013-05-01 2016-08-02 Microsoft Technology Licensing, Llc Streaming content and placeholders
WO2018147876A1 (en) * 2017-02-13 2018-08-16 Hitachi Data Systems Corporation Optimizing content storage through stubbing
CN108647527B (zh) * 2018-04-17 2020-11-17 创新先进技术有限公司 文件打包、文件包解包方法、装置及网络设备

Also Published As

Publication number Publication date
US11029932B2 (en) 2021-06-08
WO2021040843A1 (en) 2021-03-04
US20210055938A1 (en) 2021-02-25
US20210055922A1 (en) 2021-02-25
WO2021040844A1 (en) 2021-03-04
EP4018302A1 (en) 2022-06-29

Similar Documents

Publication Publication Date Title
US10579364B2 (en) Upgrading bundled applications in a distributed computing system
US11086725B2 (en) Orchestration of heterogeneous multi-role applications
US11029932B2 (en) Hydration of applications
JP5026509B2 (ja) マシンから仮想マシンへの変換
US11099937B2 (en) Implementing clone snapshots in a distributed storage system
US8630978B2 (en) Method of bi-directional synchronization of user data
US20120144391A1 (en) Provisioning a virtual machine
US9886388B2 (en) Dynamic block-level indexing for cache with overflow
US10740133B2 (en) Automated data migration of services of a virtual machine to containers
JP6285870B2 (ja) オン・デマンドのステージングを用いる高速アプリケーション・ストリーミング
JP2022076475A (ja) コンピュータ実装方法、コンピュータプログラム製品、およびシステム(コンテナイメージの作成および展開)
CN114860344A (zh) 容器启动方法、装置、计算机设备和存储介质
US11526362B2 (en) Automatic hydration of feature file batches
US11748203B2 (en) Multi-role application orchestration in a distributed storage system
US20220413888A1 (en) Virtualization engine for virtualization operations in a virtualization system
Thompson et al. Implementing a USB File System for Bare PC Applications
AU2012200600B2 (en) "Converting machines to virtual machines"

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination