CN101826029B - 用于合并虚拟化子层的方法与*** - Google Patents
用于合并虚拟化子层的方法与*** Download PDFInfo
- Publication number
- CN101826029B CN101826029B CN201010122727.9A CN201010122727A CN101826029B CN 101826029 B CN101826029 B CN 101826029B CN 201010122727 A CN201010122727 A CN 201010122727A CN 101826029 B CN101826029 B CN 101826029B
- Authority
- CN
- China
- Prior art keywords
- virtualization sublayers
- read
- virtualization
- sublayers
- write
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种计算机实施的方法可以包括识别一个虚拟化的应用程序的第一与第二子层。该第一和/或第二虚拟化子层可以包括一个读写子层、一个只读子层、一个虚拟重置点子层、和/或一个补丁子层。该计算机实施的方法还可以包括将该第一虚拟化子层的一个实例与该第二虚拟化子层的一个实例合并。在此还披露了不同的其他的方法、***、以及计算机可读的媒介。
Description
背景技术
信息技术(IT)管理员们可能要花大量的时间来管理软件应用程序。管理软件应用程序可能包括解决应用程序冲突、修复损坏的应用程序、迁移到应用程序的新版本、安装应用程序、以及修补应用程序。这些任务可能是令人沮丧的且耗时的。
应用程序虚拟化技术可以简化IT管理任务。例如,应用程序虚拟化可以允许一个管理员打开或者关闭用户对应用程序和数据的访问,这可以减少为用户提供他们所需资源而花费的时间。应用程序虚拟化还可以允许管理员将破坏的应用程序重置到一个已知的良好的状态而无需担心损坏其他应用程序。应用程序虚拟化可以确保每个虚拟化的应用程序拥有自己的DLL文件的备份,而这些文件它通常要与其他应用程序共享。这消除了当两个或者更多应用程序可能要求同一个DLL的不同版本时所发生的冲突,由此使管理员们从一种通常被称作“DLL地狱”情况中摆脱出来。
应用程序虚拟化可以允许同一个应用程序的不同版本和平共存。这意味着管理员可以在测试新版本的同时保持旧版本完整并可供使用。即使在迁移到一个新版本之后,管理员可以在任何时刻快速返回到先前的版本。尽管应用程序虚拟化的许多优点,但是传统的虚拟化技术不能有效地更新和修改已安装的虚拟化的应用程序。
发明内容
本披露是针对用于合并一个虚拟化的应用程序的多个子层的方法与***。本披露的多个实施方案可以将一个虚拟化的应用程序的任何虚拟化子层与任何其他虚拟化子层合并。例如,一个读写子层可以与一个只读子层合并。通过将一个虚拟化的应用程序的一个读写子层与一个只读子层合并,本披露的多个实施方案可以为该虚拟化的应用程序建立一个新的重置点。在一些实施方案中,可以为一个虚拟化的应用程序建立一个新的重置点,以更新一个虚拟化的应用程序。在其他实施方案中,可以为一个虚拟化的应用程序建立一个新的重置点,以便将针对一个虚拟化的应用程序的多个插件程序、用户特有的设置、和/或其他变更包裹(wrap)到该虚拟化的应用程序的一个只读子层之中。
在一些实施方案中,一个层合并模块可以用一个只读虚拟化子层与一个读写虚拟化子层来识别一个虚拟化的应用程序。该只读虚拟化子层可以代表该虚拟化的应用程序的一个第一基本状态,并且该读写虚拟化子层可以存储对该虚拟化的应用程序的第一基本状态的改变。该层合并模块可以将该只读虚拟化子层的一个实例与该读写虚拟化子层的一个实例合并以创建一个修改的只读虚拟化子层,该修改的只读虚拟化子层包括该虚拟化的应用程序的一个第二基本状态。该虚拟化的应用程序的第二基本状态可以是用于该虚拟化的应用程序的一个新的重置点。
本披露的多个实施方案还可以合并不同的其他类型的虚拟化子层。例如,一个第一虚拟重置点子层可以与一个第二虚拟重置点子层合并。在一些实施方案中,一个补丁子层、一个虚拟重置点子层、一个只读子层、和/或一个读写子层可以与任何其他的补丁子层、虚拟重置点子层、只读子层、和/或读写子层合并。本披露还包括用于合并多个虚拟化子层的不同的其他实施方案、替代方案、以及实例。
本发明的一个方面包括一种用于合并虚拟化子层的计算机实施的方法,该方法包括:识别一个虚拟化的应用程序的一个第一虚拟化子层;识别该虚拟化的应用程序的一个第二虚拟化子层;将该第一虚拟化子层的一个实例与该第二虚拟化子层的一个实例合并。
在该方法中,该第二虚拟化子层可以包括一个只读虚拟化子层;该只读虚拟化子层可以包括该虚拟化的应用程序的一个第一基本状态;该第一虚拟化子层可以包括一个读写虚拟化子层;该读写虚拟化子层可被配置为用于存储对于该虚拟化的应用程序的第一基本状态的改变;将该第一虚拟化子层的实例与该第二虚拟化子层的实例合并可以包括将该读写虚拟化子层的一个实例与该只读虚拟化子层的一个实例合并以创建一个修改的只读虚拟化子层,该修改的只读虚拟化子层可以包括该虚拟化的应用程序的一个第二基本状态。
该方法还可包括:在将该读写虚拟化子层的实例与该只读虚拟化子层的实例合并之前对该读写虚拟化子层应用一个更新;在应用该更新之后并且在合并之前测试该读写虚拟化子层以确定是否要将该只读虚拟化子层的实例与该读写虚拟化子层的实例合并。
该方法还可包括:确定在该第一虚拟化子层与该第二虚拟化子层之间的一个差异,其中:该差异代表该第一虚拟化子层;将该第一虚拟化子层的实例与该第二虚拟化子层的实例合并包括将该差异与该第二虚拟化子层的实例合并;使用该差异创建一个补丁,该补丁被配置为用来自该第一虚拟化子层的实例的数据来更新该第二虚拟化子层的实例;将该补丁部署到一台远程计算装置上,该远程计算装置包括该第二虚拟化子层的实例,其中:该补丁代表该第一虚拟化子层;将该第一虚拟化子层的实例与该第二虚拟化子层的实例合并包括将该补丁与该第二虚拟化子层的实例合并。
在该方法中,将该第一虚拟化子层的实例与该第二虚拟化子层的实例合并可以包括将来自该第一虚拟化子层的实例的用户特有的数据合并到该第二虚拟化子层的实例之中。
在该方法中,该第一虚拟化子层可以包括一个读写虚拟化子层;该第二虚拟化子层可以包括一个只读虚拟化子层;将来自该第一虚拟化子层的实例的用户特有的数据合并到该第二虚拟化子层的实例之中可以包括以下至少一项:从该读写虚拟化子层的一个实例中检索文件***数据;将该文件***数据复制到该只读虚拟化子层的一个实例的一个用户模版区域上;从该读写虚拟化子层的实例中检索注册表数据;将该注册表数据复制到该只读虚拟化子层的一个用户模版区域上。
在该方法中,该第一虚拟化层可以包括一个第一虚拟重置点子层;该第二虚拟化层可以包括一个第二虚拟重置点子层;将该第一虚拟化子层的实例与该第二虚拟化子层的实例合并可以包括将来自该第二虚拟重置点子层的与至少两个不同用户相关联的用户特有的数据复制到该第一虚拟重置点子层之中。
在该方法中,将该第一虚拟化子层的实例与该第二虚拟化子层的实例合并可以包括将来自该第一虚拟化子层的实例的用户公有的数据合并到该第二虚拟化子层的实例之中。
该方法还可包括:确定在该第一虚拟化子层的实例的用户公有的数据与该第二虚拟化子层的实例的用户公有的数据之间的一个差异;将在来自该第一虚拟化子层的实例的差异中识别的用户公有的数据复制到该第二虚拟化子层的实例上。
在该方法中,确定在该第一虚拟化子层的实例的用户公有的数据与该第二虚拟化子层的实例的用户公有的数据之间的差异可以包括以下至少一项:在该第一虚拟化子层的实例中识别至少一个文件,该文件不是位于该第二虚拟化子层的实例之中;在该第一虚拟化子层的实例中识别至少一个文件,该文件是该第二虚拟化子层的实例中的一个对应文件的一个修改的版本;在该第一虚拟化子层的实例中识别至少一个目录,该目录不是位于该第二虚拟化子层的实例之中;识别以下至少一项:在一个已删除对象文件中所识别的一个文件,该已删除对象文件识别了从该第一虚拟化子层的实例中所删除的多个对象;在该已删除对象文件中所识别的一个目录;将该第一虚拟化子层的一个实例与该第二虚拟化子层的一个实例合并包括以下至少一项:将不是位于该第二虚拟化子层的实例中的至少一个文件复制到该第二虚拟化子层的实例上;将是该第二虚拟化子层的实例中的一个对应文件的一个修改的版本的至少一个文件复制到该第二虚拟化子层的实例上;将不是位于该第二虚拟化子层的实例中的至少一个目录复制到该第二虚拟化子层的实例上;从该第二虚拟化子层的实例中删除在该已删除对象文件中所识别的文件;从该第二虚拟化子层的实例中删除在该已删除对象文件中所识别的目录。
该方法还可包括以下至少一项:从该第一虚拟化子层的实例中的一个注册表中将用户公有的注册表数据复制到该第二虚拟化子层的实例中的一个注册表上;将在一个已删除对象文件中所识别的用户公有注册表数据定位,该已删除对象文件识别了从该第一虚拟化子层的实例中所删除的多个对象;从该第二虚拟化子层的实例中删除在该已删除对象文件中所识别的用户公有的注册表数据。
本发明的另一个方面包括一种用于合并虚拟化子层的***,该***包括:一个层合并模块,该层合并模块被编程为用于:识别一个虚拟化的应用程序,该虚拟化的应用程序包括一个只读虚拟化子层以及一个读写虚拟化子层,该只读虚拟化子层包括该虚拟化的应用程序的一个第一基本状态并且该读写虚拟化子层被配置为用于存储对该虚拟化的应用程序的第一基本状态的多个修改;将该只读虚拟化子层的一个实例与该读写虚拟化子层的一个实例合并以创建一个修改的只读虚拟化子层,该修改的只读虚拟化子层包括该虚拟化的应用程序的一个第二基本状态;被配置为用于执行该层合并模块的一个处理器。
该***还可包括一个部署模块,该部署模块被编程为用于:确定在该只读虚拟化子层与该读写虚拟化子层之间的一个差异;使用该差异来创建一个补丁,该补丁被配置为用于自该读写虚拟化子层的实例的数据更新该只读虚拟化子层的实例;将该补丁部署到一台远程计算装置上,该远程计算装置包括该只读虚拟化子层的实例以及该层合并模块。
在该***中,该层合并模块可被编程为用于:在该读写虚拟化子层的实例中识别至少一个文件,该文件不是位于该只读虚拟化子层的实例之中;在该读写虚拟化子层的实例中识别至少一个文件,该文件是该只读虚拟化子层的实例中的一个对应文件的一个修改的版本;识别从该读写虚拟化子层的实例中删除的至少一个文件;识别从该读写虚拟化子层的实例中删除的至少一个注册表项;将来自该读写虚拟化子层的实例的至少一个文件复制到该只读虚拟化子层的实例上;将来自该读写虚拟化子层的实例的至少一个注册表项复制到该只读虚拟化子层的实例上;从该只读虚拟化子层的实例中删除至少一个文件;从该只读虚拟化子层的实例删除至少一个注册表项。
附图说明
附图展示了多个示例性实施方案、并且它们是本说明书的一部分。这些附图与以下的说明一起展现并解释了本披露的不同的原理。
图1是根据某些实施方案用于合并多个虚拟化子层的一个示例性***的框图。
图2是根据某些实施方案用于合并多个虚拟化子层的另一个示例性***的框图。
图3是根据某些实施方案用于合并多个虚拟化子层的一种示例性方法的流程图。
图4是根据某些实施方案用于合并多个虚拟化子层的另一种示例性方法的流程图。
图5是根据某些实施方案被配置为提供应用程序虚拟化的一个计算***的概念层的多个示例性部件的框图。
图6是根据某些实施方案示出了虚拟化层优先级的框图。
图7是根据某些实施方案的一个包括多个虚拟化层的计算***的部件的框图。
图8是根据某些实施方案示出了在计算***上的多个虚拟化层的组织的框图。
图9是能够实施在此说明和/或展示的一个或者多个实施方案的一个示例性计算***的框图。
图10是能够实施在此说明和/或展示的一个或者多个实施方案的一个示例性计算网络的框图。
在所有的附图中,相同的参考符号与说明表示相似的但不一定完全等同的要素。尽管在此说明的这些示例性实施方案是适合于进行不同的修改以及多种替代形式,在此仍在附图中以举例的方式示出多个具体的实施方案并且对其进行了详细的说明。然而,在此说明的这些示例性实施方案并非旨在限制所披露的这些特定形式。而是,本披露覆盖落入所附权利要求范围之内的所有修改、等效物、以及替代方案。
具体实施方式
本披露的多个实施方案提供了用于合并虚拟化子层的多种方法和***。不同的实施方案可以借助多种虚拟化技术的特征,这些技术为虚拟化的应用程序提供只读子层、读写子层、以及其他虚拟化子层(即,一个虚拟化层的多个子层)。这些技术中,一个只读子层可以为一个虚拟化的应用程序提供一个基本状态,而一个读写子层可以捕获对于该基本状态的变化。在一些实施方案中,来自一个虚拟化的应用程序的读写子层的数据可以被移动到一个虚拟化的应用程序的一个只读子层,由此为该虚拟化的应用程序创建一个新的重置点。在其他实施方案中,来自一个第一虚拟重置点子层的数据可以被移动到一个第二虚拟重置点子层上。在某些实施方案中,来自一个补丁子层的数据可以与一个只读子层和/或一个读写子层合并。
图1和图2示出用于合并多个虚拟化子层的示例性***,而图3和图4示出完成它们的方法。图5至图8示出不同的应用程序分层技术,而图9和图10示出用于实施本披露的多个实施方案一种示例性计算***和网络体系结构。如在此所使用的,术语“子层”和“虚拟化子层”是指一个虚拟化层的子实体。一个虚拟化子层可以包括一个读写子层、一个只读子层、一个补丁子层、一个虚拟重置点子层、和/或一个虚拟化层的任何其他子层。
图1展示了用于合并多个虚拟化子层的一种示例性***100。***100可以包括多个模块110和一个虚拟化的应用程序120。模块100可以包括一个层合并模块112和一个部署模块114。层合并模块112可以被编程为用于识别具有第一和第二子层的一个虚拟化的应用程序。层合并模块112还可以被编程为将该第二子层的一个实例与该第一子层的一个实例合并。部署模块114可以被编程为用于确定该第一子层与该第二子层之间的一个差异。部署模块114也可以被编程为使用该差异来创建一个补丁并且将该补丁部署到一台远程计算装置上。
在某些实施方案中,图1中的一个或者多个模块110可以代表一个或者多个软件应用或者程序,当由一个计算***来执行时,它们可以使该计算***执行在此披露的一个或者多个步骤。例如,如以下将要更加详细说明的,一个或者多个模块110可以代表被配置为在一个或多个计算装置中运行的软件模块,如图9中的计算***910和/或图10中的示例性网络体系结构1000中的多个部分。图1中的一个或者多个模块110还可以代表被配置为执行与在此披露的多个步骤相关联的一个或者多个任务的一种或者多种专用计算机的全部或者多个部分。
如前所述,***100可以包括一个虚拟化的应用程序120,该虚拟化的应用程序可以包括一个读写虚拟化子层122、一个只读虚拟化子层124、一个虚拟重置点子层126、一个虚拟重置点子层128、以及一个补丁子层130。一个只读子层(在此也称之为只读虚拟化子层)可以包括禁止一个或者多个用户进行修改的任何子层。例如,一个只读子层可以包括一个只能被管理员修改的子层。一个只读子层可以为一个应用程序安装提供一个基本状态。相比之下,一个读写子层可以被配置为用于捕获被禁止修改该只读子层的用户们所做出的应用程序的修改。
一个虚拟重置点子层可以包括与一个或者多个用户相关联的数据的一个时间点表述。例如,虚拟重置点子层126可以包括在一个第一时间点时不同用户的数据(例如,文件、目录、注册表键、注册表项、删除项),而虚拟重置点子层128可以包括在一个第二时间点的这些用户的数据。一个补丁层可以包括用于更新一个虚拟化的应用程序的数据。在对应于图5到图8的讨论中提供了虚拟化层与虚拟化的应用程序的不同实例。
图2是用于合并多个虚拟化子层的一个示例性***200的框图。***200可以包括一个计算子***210、一个计算子***220、一个计算子***230、一个计算子***240、以及一个网络250。计算子***210、220、230、以及240可以包括或者被实施为硬件、计算指令(例如,软件)、或者它们的组合。例如,计算子***210可以包括一台管理员的计算机,而计算子***220、230和240可以包括在一个企业环境中的终端用户计算装置。在一些实施方案中,一个或者多个计算子***210、220、230、240可以包括一个台式计算机、一台膝上型计算机、一台便携式计算装置、一台工作站、一台服务器、和/或任何其他适当的计算装置。
如图2所示,计算***210可以包括层合并模块112、部署模块114、以及虚拟化的应用程序120。计算子***220、230和240可以各自包括虚拟化的应用程序120的一个实例。例如,计算子***220可以包括一个虚拟化的应用程序实例222,计算子***230可以包括一个虚拟化的应用程序实例232,而计算子***240可以包括一个虚拟化的应用程序实例242。在一些实施方案中,计算子***220、230和240还可以包括层合并模块112。
计算子***210、220、230和240可以在一个网络250上进行通信。网络250总体上代表能够协助通信或者数据传输的任何媒介或者体系结构。网络250可以包括但不限于互联网、一个广域网(WAN)、一个局域网(LAN)、一个个人区域网(PAN)、电力线通信(PLC)、一个蜂窝网(如,一个GSM网络)、或者类似网络。网络250可以使用无线和/或有线通信来协助通信或数据传输。
图3展示了用于合并多个虚拟化子层的一种示例性方法300。图3中的这些步骤可以由***100和/或***200的一个或者多部件来执行。例如,在步骤310层合并模块112可以识别虚拟化的应用程序120的第一和第二子层。
层合并模块112可以在多种情景中和/或使用多种不同的过程来识别虚拟化的应用程序120的多个子层。例如,一个IT管理员可以使用层合并模块112来创建基于虚拟化的应用程序120的一个补丁。在这些实施方法案中,该IT管理员可以致使层合并模块112访问虚拟化的应用程序120以进行处理。在其他实施方案中,虚拟化的应用程序120可以安装在一台用户机上,并且该用户可能想要将读写虚拟化子层122中的变化结合到只读虚拟化子层124之中。在此类实施方案中,该用户可以致使层合并模块112访问虚拟化的应用程序120以进行处理。
在一些实施方案中,层合并模块112可以访问在一个本地存储装置中的虚拟化的应用程序120。在其他实施方案中,层合并模块112可以访问一个远程存储装置中的虚拟化的应用程序120。层合并模块112可以通过从读写虚拟化子层122和/或只读虚拟化子层124中读取数据来访问虚拟化的应用程序120,以此准备将读写虚拟化子层122与只读虚拟化子层124合并。在其他实施方案中,层合并模块112可以从虚拟化的应用程序120的任何其他虚拟化子层中读取数据来准备这些子层进行合并。
在步骤320,层合并模块112可以将一个第一子层的一个实例与该第二子层的一个实例合并。一个虚拟化子层的一个实例可以包括该虚拟子层的任何安装或者备份。在一些实施方案中,一个虚拟化子层的一个实例可以是该虚拟化子层。例如,读写虚拟化子层122可以是步骤320中所提及的第一子层的实例。相似地,只读虚拟化子层124可以是步骤320中所提及的第二虚拟化子层的实例。在此类实施方案中,层合并模块112可以通过将只读虚拟化子层124与读写虚拟化子层122合并来将该只读虚拟化子层的一个实例与该读写虚拟化子层的一个实例合并。
在其他实施方案中,在步骤320中提及的只读虚拟化子层的实例可以是在虚拟化的应用程序120的一个备份或者其他安装之中。例如,在步骤320中所提及的第二虚拟化子层可以是虚拟化的应用程序实例222、虚拟化的应用程序实例232、和/或虚拟化的应用程序实例242的一个只读虚拟化子层。在此类实施方法案中,步骤320中所提及的第一虚拟化子层的实例可以是由部署模块114部署到一个或者多个计算子***220、230、和/或240上的一个补丁。该补丁可以代表读写虚拟化子层122的一个实例并且可以与虚拟化的应用程序实例222、232、和/或242的一个只读子层合并。
在一些实施方案中,层合并模块112可将来自一个第一虚拟化子层的用户特有的数据合并到一个第二虚拟化子层之中。在一些实施方案中,当用户想要将用户特有的一些设置和/或由用户所做出的其他修改(如,更新件或者加入一个应用程序的插件)包括到该应用程序的一个只读虚拟化子层之中时,合并用户特有的数据可以是有用的。通过将用户特有的数据合并到一个只读虚拟化子层之中,一个用户可以提供包括这些用户的设置的一个虚拟化的应用程序的基本状态(即,重置点)。
层合并模块112通过从该读写虚拟化子层的实例中检索文件***数据并且将该文件***数据复制到该只读虚拟化子层的实例的一个用户模版区上可以将来自一个读写虚拟化子层(或者任何其他虚拟化子层)的一个实例的用户特有的数据合并到一个只读虚拟化子层的一个实例之中。文件***数据可以包括存储在该读写虚拟化子层的文件结构中的任何文件、目录、或者其他数据。
一个只读虚拟化子层的用户模版区可以包括存储用户特有的数据的子层的任何区域。例如,一个只读子层的用户模版区可以包括在一个虚拟化层被重置时被复制到一个读写子层中的文件、文件夹、和/或注册表设置。换言之,当一个虚拟化层被重置时(即,当该读写层被清空时),来自该只读子层的用户模版区的数据可以被复制到该读写子层,以便在重置之后为该读写子层建立一个新的基线。
在一些实施方案中,将来自一个读写虚拟化子层的一个实例的用户特有的数据合并到一个只读虚拟化子层的一个实例中可以包括从该读写虚拟化子层的实例中检索注册表数据并且将该注册表数据复制到该只读虚拟化子层的一个用户模版区上。注册表数据可以包括注册表项,如注册表键和/或注册表值。在一些实施方案中,注册表数据可以指储存在一个WINDOWS操作***的注册表中的数据。
将来自一个读写虚拟化子层的一个实例的用户特有的数据合并到一个只读虚拟化子层的一个实例中可以包括将与两个或者更多不同用户相关联的用户特有的数据合并到该只读虚拟化子层之中。例如,储存在两个不同的用户配置文件中的用户特有的数据可以被合并到一个单一的只读虚拟化子层之中。在此类实施方案中,在不同用户的设置之间的冲突能够以任何适当的方式来解决。例如,一个第一用户可以拥有高于一个第二用户的优先权(优先权可以基于用户群、用户头衔、等等)。若该第一与第二用户对于同一个设置具有不同的数值,则该第一用户的值可用于该设置。
除了合并用户特有的数据之外和/或代替合并用户特有的数据,层合并模块112可以将来自该第一虚拟化子层的实例的用户公有的数据合并到该第二虚拟化子层的实例之中。用户公有的数据可以指由多个用户共享的数据和/或不是专门针对一个特定用户的数据。换言之,用户公有的数据可以包括对一台计算机上所有用户的通用的多个设置和文件。例如,用户公有的注册表数据可以包括存储在一个HKEY_LOCAL_MACHINEWINDOWS注册表单元中的注册表数据。相比之下,用户特有注册表数据可以被存储在一个HKEY_CURRENT_USER注册表单元之中。作为另一个实例,用户公有的数据可以包括在一台计算装置上多个用户都可以访问的多个文件。相比之下,用户特有的数据可以包括只可由该计算装置的一个单一用户访问和/或与其相关联的(例如,与该用户的账户相关)的那些文件。
在一些实施方案中,层合并模块112可以确定该第一虚拟化子层的实例与该第二虚拟化子层的实例之间的一个差异,以确定要合并哪些用户公有的文件***数据。例如,层合并模块112可以识别在一个读写虚拟化子层的一个实例中而并没有位于一个只读虚拟化子层的一个实例中的至少一个文件。层合并模块112可以额外地或者可替代地识别在该读写虚拟化子层的实例中的至少一个文件,它是该只读虚拟化子层的实例中的一个对应文件的修改的版本,和/或识别在该读写虚拟化子层的实例中而并没有位于该只读虚拟化子层的实例中的至少一个目录。层合并模块112可以从该读写虚拟化子层的实例中将这些文件和/或目录中的一个或者多个复制和/或被移动到该只读虚拟化子层的实例之中。
在合并用户公有的注册表数据时,层合并模块112可以将一个或者多个注册表键和/或值从一个第一虚拟化层注册表区复制到一个第二虚拟化层注册表区。例如,层合并模块112可以用来自该第一虚拟化层的多个键和值来重写该第二虚拟化子层的注册表键和/或值。层合并模块112可以额外地或者可替代地将多个注册表键和/或值添加到该第二虚拟化子层上。
对于用户公有的和/或用户特有的数据,层合并模块112可以识别从该第一虚拟化子层中所删除的文件***数据和/或注册表数据。在一些实施方案中,一个虚拟化***可以在一个或者多个删除对象文件中跟踪被删除的文件。例如,一个虚拟化***可以将用于已删除的文件和/或目录的多个项存储在一个已删除文件***数据文件(如一个DELLIST.TXT文件)之中。该虚拟化***可以将用于已删除的注册表键和/或值的多个项存储在一个已删除注册表数据文件(如一个DELREG.TXT文件)之中。
层合并模块112可以分析一个或者多个已删除对象文件并且可以在该第二虚拟化子层中查找在一个已删除对象文件中识别的任何文件、目录、注册表键、注册表值、和/或其他数据。层合并模块112可以从该第二虚拟化子层中移除在一个已删除对象文件中识别的文件、目录、注册表键、和/或注册表值。
如前所述,多个虚拟化子层可以在多种背景下被合并。在一些实施方案中,来自一个第一虚拟化子层的数据可以被直接移动到一个第二虚拟化子层之中。在其他的实施方案中,可以计算第一与第二虚拟化子层之间的差异,并且该差异可以被用于合并这些虚拟化子层。
尽管对应于图3的讨论集中在将多个读写子层与多个只读子层合并的实例上,不同的其他类型的子层也可以按照图3的讨论中说明的进程进行合并。例如,一个第一虚拟重置点子层可以与一个第二虚拟重置点子层合并。该第一虚拟重置点子层可以是来自比该第二虚拟重置点子层更为近期的一个时间点,并且合并这两个子层可以包括从该更为近期的子层(该第一虚拟重置点子层)将数据复制到该更旧的子层(该第二虚拟重置点子层)上。在此类实施方案中,用于多个用户的数据可以从该第一虚拟重置点子层被复制到该第二虚拟重置点子层上。
在其他实施方案中,一个补丁虚拟化层可以与一个只读虚拟化层合并。将该补丁虚拟化层复制到该只读虚拟化子层上可以提供包括了该补丁的一个重置点(即,该只读虚拟化子层)。
图4示出了一种示例性方法400,它用于使用一种差异来创建用于合并读写和只读虚拟化子层的一个补丁。图4中所示的这些步骤可以由任何适当的计算机可执行的代码和/或计算***来执行。在一些实施方案中,图4中所示的这些步骤可以由一个或者多个层合并模块112以及部署模块114来执行。例如,在步骤410部署模块114可以识别虚拟化的应用程序120。
在步骤420,部署模块114可以确定在虚拟化的应用程序120的只读虚拟化子层124与读写虚拟化子层122之间的一个差异。部署模块114能够以任何适当的方式来确定在只读虚拟化子层124与读写虚拟化子层122之间的这种差异。例如,部署模块114通过扫描这些子层来识别在这些子层中的文件可以确定在只读虚拟化子层124与读写虚拟化子层122之间的这种差异。然后部署模块114可以将只读虚拟化子层124中的文件与读写虚拟化子层122中的文件进行比较。在一些实施方案中,确定在只读虚拟化子层124与读写虚拟化子层122之间的这种差异可以包括将只读虚拟化子层124中的一个注册表区与读写虚拟化子层122中一个注册表区进行比较。
在一些实施方案中,部署模块114通过创建这些子层之间的一个二进制差值(即,一个二进制增量)可以确定第一与第二只读虚拟化子层之间的差异。这些子层之间的一个二进制差值可以通过产生在只读虚拟化子层124与读写虚拟化子层122的注册表和/或文件***重定向区之间的差异来创建。
部署模块114可以使用上述的任何进程来确定只读虚拟化子层124与读写虚拟化子层122之间的差异。该差异可以识别有待添加到该只读虚拟化子层上的文件***和/或注册表数据。该差异还可以识别有待从该只读虚拟化子层中删除的文件***和/或注册表数据。
在步骤430,部署模块114可以使用该差异来创建一个补丁,该补丁被配置为用来自该读写虚拟化子层的数据更新该只读虚拟化子层的一个实例。该补丁可以代表并/或包括在只读虚拟化子层124与读写虚拟化子层122之间的任何差异。例如,该补丁可以包括在只读虚拟化子层124与读写虚拟化子层122之间的一个二进制差值。
部署模块114能够以任何适当的方式来创建一个补丁。在一些实施方案中,部署模块114可以通过将这些子层之间的差异压缩成一个虚拟补丁档案(Virtual Patch Archive,VPA)来创建该补丁。该补丁还可以使用任何其他格式化和/或打包技术来进行格式化和/或打包。
在步骤440,部署模块114可以将该补丁部署到一台远程计算装置上。该远程计算装置可以包括该只读虚拟化子层的一个实例。可以使用任何适当的部署和/或传输技术来部署该补丁。在一些实施方案中,该补丁可以与一个本地的虚拟化的应用程序合并,而不是被部署到一台远程计算装置上。
在步骤450,层合并模块112可以将该补丁与在该计算装置上的只读虚拟化子层的实例合并。因为该补丁可以代表和/或包括来自读写虚拟化子层122的数据,所以该补丁可以被称作该读写虚拟化子层的一个实例。因此,将该只读虚拟化子层的一个实例与该读写虚拟化子层的一个实例合并可以是指将一个补丁与该只读虚拟化子层的实例合并。在其他实施方案中,将该只读虚拟化子层的一个实例与该读写虚拟化子层的一个实例合并可以是指直接将该只读虚拟化子层与该读写虚拟化子层合并。
层合并模块112能够以任何适当的方式将该补丁与该只读虚拟化子层的实例合并。层合并模块112可以使用以上在步骤320中说明的任何进程,或者任何其他适当的进程,以便将该补丁与该只读虚拟化子层的实例合并。例如,层合并模块112可以使用该补丁来直接修改该只读虚拟化子层的实例。此类实施方案可以被称作“就地”更新或者修改。在其他实施方案中,层合并模块112可以创建一个新虚拟化层并且可以将一个或者多个文件和/或设置从该原始虚拟化层的只读虚拟化子层复制到该新虚拟化层的一个只读虚拟化子层上。层合并模块112可以将该补丁合并到新虚拟化层中的只读虚拟化子层之中。
以下讨论提供了关于图4所示的方法如何由***100和200的部件实施的一个实例。使用计算子***210的一个管理员可能想要将一个更新(例如,用于一个应用程序的来自销售商的安全更新、一个故障修复、新的特征、或者任何其他修改)应用到虚拟化的应用程序实例222、232、和242上。在某些实施方案中,该更新可以是一种自动更新(即,被配置为自动地安装到一个应用程序上的一种更新)。该管理员可以将该更新应用到读写虚拟化子层122上。在某些实施方案中,该管理员可以对该虚拟化的应用程序进行错误核查测试和/或其他验证测试以确定对读写虚拟化子层122的更新是否在该虚拟化的应用程序中造成了任何问题。
如果该虚拟化的应用程序通过了该验证测试,管理员可以使用部署模块114来创建一个补丁,它可以代表读写虚拟化子层122与只读虚拟化子层124之间的差异。部署模块114可以使用本披露中对应于图4所提出的任何进程来创建该补丁。然后管理员可以使用部署模块114将补丁部署到计算子***220、230、与240上。
该补丁可以使用在此所说明的任何进程来应用到虚拟化的应用程序的实例222、232、和242上。在某些实施方案中,该补丁可以包括被编程为用于自动地将该补丁与这些虚拟化的应用程序的实例222、232、和242合并的代码。除此之外或者可替代地,该补丁之外的代码(例如,层合并模块112,它可以被安装在计算子***220、230、和240中的一个或者多个上)可以将该补丁与只读虚拟化子层124多个实例合并。
作为另一个实例,一个用户可以对一个虚拟化的应用程序的一个读写虚拟化子层做出多种改变。该用户可以对该虚拟化的应用程序中的用户特有的数据与/或用户公有的数据做出一种或者多种改变。该用户可以在该虚拟化的应用程序中改变一些设置、优选项、添加多个书签、安装更新、和/或安装多个插件。为了捕获这些改变作为该虚拟化的应用程序的一个重置点,该用户可以将该虚拟化的应用程序的读写虚拟化子层合并到该虚拟化的应用程序的只读虚拟化子层之中。
尽管对图4的说明集中在合并多个读写子层与只读子层的一些实例上,但不同的其他的子层也是可以按照图4的讨论中所说明的这些进程来合并的。
如前所述,本披露的多个实施方案可以通过合并一个虚拟化的应用程序的多个子层来为多个虚拟化的应用程序提供新的重置点。如在此使用的,该术语“重置点”可以是指一个应用程序的一种基本状态。一个管理员可以通过删除现有的只读虚拟化子层并且用一个新的只读虚拟化子层代替它来将一个虚拟化的应用程序重置到该重置点(即,基本状态)上。
图5至图8提供了多种虚拟化技术以及可以对其应用多个用于将只读与读写虚拟化子层合并的实施方案的虚拟化的应用程序的多个实例。图5示出具有一个虚拟化层的计算***500的一种概念上的部件结构。一个基本操作***510可以形成一个平台,通过该平台可以执行多个应用程序并且从该平台上可以在文件***中访问多个文件。基本操作***510可以包括注册表设置,它们对于多个应用程序的读和写可以是全局可供使用的。计算***500可包括用于执行该操作***的多种功能多个库508。多个库508可以包括多个操作***文件和注册表项。多个分层***库与软件506可以被绑定到库508上。多个分层***库与软件506可以解释文件***以及来自多个应用程序504的注册表访问。分层***软件506可以进行计算以确定对基本操作***510的访问是否应该允许继续或应该被重指向层信息512。层信息512可以包括关于文件与注册表设置内容的信息。层管理器501可以通过一个管理应用编程接口(API)502来控制分层***软件506的配置。
如前所述,在某些应用程序虚拟化技术中,每个虚拟化层可以包括两个子层:一个只读子层以及一个可写子层。使用只读以及读写子层的虚拟化技术的一个实例是SYMANTEC WORKSPACE VIRTUALIZATION(SWV)。
一个只读子层可包括一个应用程序的一种不可变的基本状态。在某些实施方案中,用户们即使无意地也不可以对该只读子层做出改变。例如,在SVS中,只有管理员们能够编辑、更新、和/或删除多个只读子层的内容。一个应用程序可以通过删除现有只读子层并且代之以一个新的只读子层来进行重置。
一个读写(即,可写的)子层可以捕获对一个应用程序的一种基本状态的改变。例如,当一个用户通过变更缺省优选项来改变一个应用程序时,这些改变可以被写入该读写子层之中。
可以通过任何合适的方式创建包括多个只读子层与读写子层的多个虚拟化的应用程序。例如,SVS可以允许一个用户为了虚拟化一个应用程序的目的对于该用户想要捕获的一个应用程序设定一个安装程序。SVS可以启动该安装程序并且在一个单独的虚拟软件包(VSP)中捕获所有的应用程序、文件、以及进程,包括子进程与进程引发的变化。SVS还可以捕获MICROSOFT安装程序(MSI)与服务控制管理器的变化。该安装进程完成时,SVS可以自动地停止该捕获进程。然后一个管理员可以编辑该VSP以包括该管理员想要分发该多个用户的那些设置。
图6示出具有多个虚拟化层的一种计算***600的操作。图6展示了一个应用程序601,它可以是一个应用程序的一个第一和/或第二个版本。与该应用程序601相关联的一个或者多个文件可以位于虚拟化层B 602和/或虚拟化层A 604上。虚拟化层B 602可以拥有高于虚拟化层A 604的优先级,后者进而可以拥有高于一个基本文件***606的优先级。应用程序601可以进行如下操作。可以由应用程序601进行一个第一文件访问608。一个虚拟化***可以首先在层B 602中查找所请求的文件。层B 602可以包括对于文件访问608的一个项,并且在层B 602中的对应文件可以被返回到该应用程序上。因为层B 602拥有高于层A 604以及基本文件***606的优先级,即使如果层A 604与基本文件***606具有对应于文件访问608的那些项,该虚拟化***仍将来自层B 602的项返回。
应用程序601可以做出另外一个文件访问610。该虚拟化***也许在层B 602中没找到一条对应的项,但是在层A 604中也许找到了一个项。一个第三文件访问请求612在层B 602或者层A 604中也许没有得到一个对应的项,而该虚拟化***可以因此从该基本文件***606返回一个项。
图7示出安装了一个虚拟化层的计算***700的一个实例。该计算***可以包括一个操作***714。操作***714可以包括一个注册表子***716和一个文件***的子***718。一个文件***过滤驱动器712可以安装在操作***714上并且可以具有对于注册表与文件***访问的第一处理优先权。一个管理应用程序701可以为一个管理员提供一个界面来与文件***过滤驱动器712进行互动并且对多个层做出改变。一个API库708可以为管理应用程序701提供一个便利的接口来与文件***过滤驱动器712进行连接。
管理应用程序701可以将多个通告提供给WINDOWS EXPLORER702,指明一个安装好的文件***的内容已经被改变。其他的应用程序704可以与该***进行互动,通过文件***过滤驱动器712来对文件***与注册表进行读和写操作。可以提供一个压缩库710用于压缩层信息。
文件***过滤驱动器712可以将每个层和子层的部件存储到两个重定向区(即,将***调用重新定向所到达的区域)之一中。例如,文件***过滤驱动器712可以将多个注册表设置与属性存储到一个注册表子***716中并且可以将多个文件存储到一个文件***子***718之中。
在每个子层的注册表重定向区中,文件***过滤驱动器712可以存储关于该子层所属的层的状态的信息。文件***过滤驱动器712还可以存储对于该子层的文件重定向区的多个参考项、参考计数、以及多个子键,它们可以通过一个服务控制管理器来使其能够处理正在多个层中运行的重复的服务。此外,文件***过滤驱动器712还可以存储对于多个注册表键的多个参考项,这些键包括了用户识别信息、数据层规格、用于关于排斥项的信息一个子键、以及管理特有文件的位置的一个变量列表。正如其名字所提示的,排斥项可以定义一个用户想要从多个层中排除的多个应用程序文件以及多个进程。
在该文件重定向区的根中,文件***过滤驱动器712可以存储多个变量项,它们概括了操作***特有文件的位置,以使多个用户能够将虚拟软件档案(VSA)部署在多台运行不同的类型的操作***的计算机上。当文件***过滤驱动器712被装载在一台用户计算机上时,文件***过滤驱动器712可以为用户与多个***变量确定数值。
文件***过滤驱动器712可以在一个文件重定向区目录下存储那些包括多个子层与多个编号文件夹的文件。文件***过滤驱动器712可以使用注册表以及多个文件重定向区来将一个虚拟化文件与数据的集合体概览(并通过扩展名、应用程序与用户)呈现给一个操作***。
例如,一个用户可以启动WINDOWS EXPLORER来浏览一个程序文件夹的内容。该用户的机器可以正在运行一个虚拟化的应用程序,如MOZILLA FIREFOX,并且该FIREFOX层可以是启动的。文件***过滤驱动器712可以拦截EXPLORER对该文件***的调用。在此基础上(它可以包括所有文件、设置、以及并不驻留在该用户的机器上的那些层中的进程),文件***过滤驱动器712可以收集驻留在该程序文件的文件夹中那些非虚拟化的应用程序的一个清单。文件***过滤驱动器712还可以将Explorer的多个调用进行重定向以便包括FIREFOX(它通常驻留在该程序文件的文件夹中),但是在这种情况下它驻留在文件重定向区中。然后文件***过滤驱动器712可以用该***预期在该程序文件目录中见到的多个文件夹的一个完整的清单(包括FIREFOX)来响应EXPLORER的调用。在本实例中,若该FIREFOX层是未启动的,文件***过滤驱动器712将隐藏其存在。
图8展示了包括虚拟化的应用程序806a-n的计算***802的一个实例。计算***802可以包括多个层804a-n。应用程序806a-n可以对应地安装在层804a-n上。如在此提及的,一个层(或者虚拟化层)可以指文件***与多个注册表变化的一个集合,它可以由应用程序虚拟化软件来管理。在某些实施方案中,一个层可以包括对一个或者多个文件***的改变但可以不包括注册表的改变。
一个层可以将一个应用程序从一个基本文件***中孤立出来并且可以包括多个文件以及该应用程序安装的一个目录结构。这些应用程序文件与目录可以被遮蔽或者被覆盖在常规文件***之上。共享的多个库(如DLL)、***可访问的配置(例如注册表项)、以及版本控制可以由一个分层子***来管理。
尽管在一个计算***内每一个层可以是一个分立的并且单独的实体,这些应用程序文件、数据、以及***可访问的配置还是可以展示为就像它们驻留在它们对应的平常的位置中一样。因此,存储在一个层中的一个应用程序对于一个计算***的操作***可以表现为就好像它已经使用传统的安装技术进行了安装一样。
安装在一个虚拟化层中的一个软件应用程序可以是任何通常使用的含义中的一个应用程序,包括文字处理器、浏览器、***工具、游戏、以及类似程序,并且在此所说明的原理也可以扩展到安装在一个计算***上的任何其他软件。
图9是示例性计算***910的一个框图,该***能够实施在此说明和/或展示的这些实施方案中的一个或多个。计算***910广义地代表能够执行计算机可读指令的任何单或者多处理器的计算装置或***。计算***910的实例包括,而不限于,工作站、膝上电脑、客户侧终端、服务器、分布式计算***、手持装置、或者任何其他计算***或者装置。在其最基本的结构中,计算***910可以包括至少一个处理器914和***内存916。
处理器914总体上代表任何类型或形式的能够处理数据或者解释并执行指令的处理单元。在某些实施方案中,处理器914可以接收来自一个软件应用程序或者模块的指令。这些指令可以致使处理器914执行在此说明和/或展示的一个或者多个示例性实施方案的功能。例如,处理器914可以单独地或者与其他元件结合执行和/或作为一种手段来执行在此说明的以下的一项或者多项:识别、合并、确定、使用、部署、检索、复制、删除、定位、应用、以及测试步骤。处理器914还可以执行和/或作为一种手段来执行在此说明和/或展示的任何其他的步骤、方法、或进程。
***内存916总体上代表能够存储数据和/或其他计算机可读指令的任何类型或者形式的易失性或者非易失性存储装置或媒介。***内存916的实例包括,但不限于,随机存取存储器(RAM)、只读存储器(ROM)、闪存、或者任何其他合适的存储装置。尽管并不要求,在某些实施方案中计算***910可以既包括一个易失性存储单元(例如像***内存916)又包括一个非易失性存储装置(例如像主存储装置932,如以下详细说明)。
在某些实施方案中,示例性计算***910除处理器914与***内存916之外还可以包括一个或者多个部件或者元件。例如,如图9所示,计算***910可以包括一个内存控制器918、一个输入/输出(I/O)控制器920、和一个通信接口922,它们各自可以通过一个通信基础结构912来互连。通信基础结构912总体上代表能够协助一个计算装置的一个或者多个部件之间通信的任何类型或者形式的基础结构。通信基础结构912的实例包括,但不限于,一种通信总线(例如一个ISA、PCI、PCIe、或者类似的总线)和一种网络。
内存控制器918总体上代表能够处理内存或数据或者能够控制计算***910的一个或者多个部件之间的通信的任何类型或者形式的装置。例如,在某些实施方案中内存控制器918可以通过通信基础结构912来控制处理器914、***内存916、与I/O控制器920之间的通信。在某些实施方案中,内存控制器918可以执行和/或作为一种手段来执行(单独地或者与其他元件结合)在此说明的和/或展示的一个或者多个步骤或者特征,如识别、合并、确定、使用、部署、检索、复制、删除、定位、应用、以及测试。
I/O控制器920总体上代表能够协调和/或控制一个计算装置的输入与输出功能的任何类型或者形式的模块。例如,在某些实施方案中I/O控制器920可以控制或者协助计算***910的一个或者多个元件(如处理器914、***内存916、通信接口922、显示适配器926、输入接口930、以及存储接口934)之间的数据传输。例如,I/O控制器920可以被用于执行和/或作为一种手段用于在此说明的识别、合并、确定、使用、部署、检索、复制、删除、定位、应用、以及测试步骤。I/O控制器920还可以用于执行和/或作为一种手段用于执行本披露所阐述的其他步骤与特征。
通信接口922广义地代表能够实现示例性计算***910与一个或者多个附加装置之间通信的任何类型或者形式的通信装置或者适配器。例如,在某些实施方案中通信接口922可以协助在计算***910与包括多个额外计算***一个私有或者公共的网络之间的通信。通信接口922的实例包括,但不限于,一个有线网络接口(例如一块网络接口卡)、一个无线网络接口(例如一块无线网络接口卡)、一个调制解调器、以及任何其他合适的接口。在至少一个实施方案中,通信接口922可以通过到一个网络(如互联网)的一个直接链接来提供到一个远程服务器的一个直接连接。通信接口922还可以通过,例如,一个局域网(例如一个以太网或者一个无线IEEE802.11网)、一个个人区域网(例如一个蓝牙或者IEEE标准802.15.1-2002网)、一个电话或者有线网、一种蜂窝电话连接、一种卫星数据连接、或者任何其他合适的连接来间接地提供这样一个连接。
在某些实施方案中,通信接口922还可以代表一个主机适配器,它被配置为通过一个外部总线或者通信信道协助在计算***910与一个或者多个附加网络或者存储装置之间的通信。主机适配器的实例包括,但不限于,SCSI主机适配器、USB主机适配器、IEEE 1394主机适配器、SATA与eSATA主机适配器、ATA与PATA主机适配器、光纤通道接口适配器、以太网适配器、或者类似装置。通信接口922还可以允许计算***910参与分布式或者远程的计算。例如,通信接口922可以接收来自一个远程装置的指令或者将指令发送到一个远程装置用于执行。在某些实施方案中,通信接口922可以执行和/或作为一种手段用于执行(单独地或者结合其他元件)在此披露的一个或者多个的识别、合并、确定、使用、部署、检索、复制、删除、定位、应用、以及测试步骤。通信接口922还可以被用于执行和/或作为一种手段用于执行本披露所阐述的其他步骤与特征。
如图9所示,计算***910还可以包括通过一个显示适配器926连接到通信基础结构912上的至少一个显示装置924。显示装置924总体上代表能够将由显示适配器926传送的信息可视化地进行显示的任何类型或者形式的装置。类似地,显示适配器926总体上代表被配置为用于传送来自通信基础结构912(或者来自一个帧缓冲器,如本技术领域所已知)的图形、文本或者其他数据以显示在显示装置924上的任何类型或者形式的装置
如图9所示,示例性计算***910还可以包括至少一个输入装置928,它通过一个输入接口930连接到通信基础结构912上。输入装置928总体上代表能够将计算机产生或者人产生的输入提供到示例性计算***910的任何类型或者形式的输入装置。输入装置928的实例包括,但不限于,一个键盘、一个指示装置、一个语音识别装置、或者任何其他的输入装置。在至少一个实施方案中,输入装置928可以执行和/或作为一种手段用于执行(单独地或者结合其他元件)在此披露的识别、合并、确定、使用、部署、检索、复制、删除、定位、应用、以及测试步骤中的一个或者多个。输入装置928还可以执行和/或作为一种手段用于执行本披露所阐述的其他步骤与特征。
如图9所示,示例性计算***910还可以包括通过一个存储接口934连接到通信基础结构912上的一个主存储装置932以及一个后备存储装置933。存储装置932和933总体上代表能够存储数据和/或其他计算机可读指令的任何类型或形式的存储装置或者媒介。例如,存储装置932与933可以是一个磁盘驱动器(例如,一个所谓的硬盘驱动器)、一个软盘驱动器、一个磁带驱动器、一个光盘驱动器、一个闪存驱动器、或者类似装置。存储接口934总体上代表任何类型或形式的用于在存储装置932和933与计算***910的其他部件之间传输数据的接口或者装置。
在某些实施方案中,存储装置932与933可以被配置为用于读自和/或写入一个可移除的存储单元,该存储单元被配置为用于存储计算机软件、数据、或者其他计算机可读的信息。合适的可移除存储单元的实例包括,但不限于,一个软盘、一个磁带、一个光盘、一个闪存装置、或者类似装置。存储装置932与933还可以包括其他类似的结构或者装置,用于允许将计算机软件、数据、或者其他计算机可读的指令装入计算***910。例如,存储装置932与933可以被配置为用于读取和写入软件、数据、或者其他计算机可读的信息。存储装置932与933还可以是计算***910的一个部分或者可以是通过其他接口***访问的一个分离的装置。
例如,存储装置932与933还可以用于执行和/或作为一种手段用于执行(单独地或者结合其他元件)在此披露的识别、合并、确定、使用、部署、检索、复制、删除、定位、应用、以及测试步骤中的一个或者多个。存储装置932与933还可以用于执行和/或作为一种手段用于执行本披露所阐述的其他步骤与特征。
很多其他装置或子***可以连接到计算***910上。相反,并不是图9所示的所有部件与装置都需要存在以便用于实施在此说明和/或展示的这些实施方案。以上提及的这些装置与子***还可以按照不同于图9所示的方式来互连。计算***910还可以采用任何数量的软件、固件、和/或硬件配置。例如,在此披露的一个或者多个示例性实施方案可以被编码为在一种计算机可读媒介上的一个计算机程序(也称作计算机软件、软件应用程序、计算机可读指令、或者计算机控制逻辑)。短语“计算机可读媒介”总体上是指能够存储或者携带计算机可读指令的任何形式的装置、载体、或者媒介。计算机可读媒介的实例包括,而不限于,传输型媒介,如载波;以及物理性媒介,如磁存储媒介(例如,硬盘驱动器和软盘驱动器)、光存储媒介(例如,CD或者DVD-ROM)、电子存储媒介(例如固态驱动器与闪存媒介);以及其他分布式***。
包含计算机程序的计算机可读媒介可以被装入计算***910之中。然后存储在该计算机可读媒介上的计算机程序的全部或者一部分可以存储在***内存916和/或存储装置932和933的不同部分之中。在由处理器914执行时,装入计算***910的一个计算机程序可以致使处理器914执行和/或作为一种手段用于执行在此说明和/或展示的一个或者多个示例性实施方案的功能。除此之外或者可替代地,在此说明和/或展示的一个或者多个示例性实施方案可以在固件和/或硬件中实现。例如,计算***910可以被配置为一种专用集成电路(ASIC),它被适配为用于实施在此披露的一个或者多个示例性实施方案。
图10是一种示例性网络体系结构1000的框图,其中客户***1010、1020、和1030以及服务器1040和1045可以连接到一个网络1050上。客户***1010、1020、以及1030总体上代表任何类型或者形式的计算装置或者***,如图9中的示例性计算***910。类似地,服务器1040和1045总体上代表计算装置或者***,如应用程序服务器或者数据库服务器,它们被配置为用于提供不同的数据库服务和/或运行某些软件应用程序。网络1050总体上代表任何的电信或者计算机网络,例如,包括一个内部网、一个广域网(WAN)、一个局域网(LAN)、一个个人区域网(PAN)、或者互联网。
如图10所示,一个或者多个存储装置1060(1)-(N)可以被直接连接到服务器1040上。类似地,一个或者多个存储装置1070(1)-(N)可以被直接连接到服务器1045上。存储装置1060(1)-(N)以及1070(1)-(N)总体上代表能够存储数据和/或其他计算机可读指令的任何类型或形式的存储装置或者媒介。在某些实施方案中,存储装置1060(1)-(N)以及存储装置1070(1)-(N)可以代表网络附联的存储(NAS)装置,它们被配置为使用不同的协议,如NFS、SMB、或者CIFS,与服务器1040和1045进行通信。
服务器1040和1045还可以被连接到一个存储区域网络(SAN)光纤通道1080上。SAN光纤通道1080总体上代表能够协助多个存储装置之间的通信的任何类型或者形式的计算机网络或者体系结构。SAN光纤通道1080可以协助服务器1040与1045和多个存储装置1090(1)-(N)和/或一个智能存储阵列1095之间的通信。SAN光纤通道1080还可以通过网络1050以及服务器1040和1045协助客户***1010、1020、与1030与存储装置1090(1)-(N)和/或智能存储阵列1095之间的通信,其方式为使得装置1090(1)-(N)以及阵列1095对于客户***1010、1020和1030而言表现为好像是本地附联的装置。如同对于存储装置1060(1)-(N)和存储装置1070(1)-(N)一样,存储装置1090(1)-(N)与智能存储阵列1095总体上代表能够存储数据和/或其他计算机可读指令的任何类型或形式的存储装置或者媒介。
在某些实施方案中,并且参见图9的示例性计算***910,一个通信接口,如图9中的通信接口922,可以被用来提供各客户***1010、1020、以及1030与网络1050之间的连接性。客户***1010、1020、和1030也许能够使用(例如)一个网络浏览器或者其他客户端软件来访问服务器1040或者1045上的信息。此类软件可以允许客户***1010、1020、和1030访问由服务器1040、服务器1045、存储装置1060(1)-(N)、存储装置1070(1)-(N)、存储装置1090(1)-(N)、或者智能存储阵列1095托管的数据。尽管图10描绘了使用一个网络(如互联网)进行数据交换,在此说明/或展示的这些实施方案并不局限于互联网或者任何特别的基于网络的环境。
在至少一个实施方案中,在此披露的一个或者多个示例性实施方案的全部或者部分可以被编码成为一个计算机程序并装载到服务器1040、服务器1045、存储装置1060(1)-(N)、存储装置1070(1)-(N)、存储装置1090(1)-(N)、智能存储阵列1095、或者它们的任何组合上,并由它们执行。在此披露的一个或者多个示例性实施方案的全部或者部分还可以被编码成为一个计算机程序,该程序存储储在服务器1040中、由服务器1045来运行,并且分布到1050网络上的客户***1010、1020、和1030上。因此,网络体系结构1000可以执行和/或作为一种手段用于执行(单独地或者结合其他元件)在此披露的识别、合并、确定、使用、部署、检索、复制、删除、定位、应用、以及测试步骤中的一个或者多个。网络体系结构1000还可以被用于执行和/或作为一种手段用于执行本披露所阐述的其他步骤和特征。
如以上详细说明的,计算***910和/或网络体系结构1000的一个或者多个部件可以执行和/或作为一种手段用于执行(单独地或者结合其他元件)在此说明和/或展示的这些示例性实施方案的一个或者多个步骤。例如,一个计算***(例如,计算***910和/或网络体系结构1000的一个或者多个部件)可以执行用于合并只读与读写虚拟化子层的一种计算机实施的方法。该计算***可以识别一个虚拟化的应用程序,该程序包括了一个只读虚拟化子层与一个读写虚拟化子层。该只读虚拟化子层可以包括该虚拟化的应用程序的一个第一基本状态。该读写虚拟化子层可以被配置为用于存储对该虚拟化的应用程序的第一基本状态的多个改变。该计算***可以将该只读虚拟化子层的一个实例与该读写虚拟化子层的一个实例合并,以创建一个修改的只读虚拟化子层,它可以包括该虚拟化的应用程序的一个第二基本状态。
在某些实施方案中,该计算***可以确定在该只读虚拟化子层与该读写虚拟化子层之间的一个差异。该差异可以代表该只读虚拟化子层。此外,将该只读虚拟化子层的实例与该读写虚拟化子层的实例合并可以包括将该差异与该只读虚拟化子层的实例合并。
在某些实施方案中,该计算***可以使用该差异来创建一个补丁,该补丁被配置为用来自该读写虚拟化子层的实例的数据更新该只读虚拟化子层的实例。该计算***还可以将该补丁部署到一台远程计算装置上。该远程计算装置可以包括该只读虚拟化子层的实例。该补丁可以代表该读写虚拟化子层。此外,将该只读虚拟化子层的实例与该读写虚拟化子层的实例合并可以包括将该补丁与该只读虚拟化子层的实例合并
在其他实施方案中,将该只读虚拟化子层的实例与该读写虚拟化子层的实例合并可以包括将来自该读写虚拟化子层的实例的用户特有数据合并到该只读虚拟化子层的实例之中。在至少一个实施方案中,将来自该读写虚拟化子层的实例的用户特有数据合并到该只读虚拟化子层的实例之中可以包括从该读写虚拟化子层的实例检索文件***数据,和/或将该文件***数据复制到该只读虚拟化子层的实例的一个用户模版区上。
在某些实施方案中,将来自该读写虚拟化子层的实例的用户特有数据合并到该只读虚拟化子层的实例之中可以包括从该读写虚拟化子层的实例检索注册表数据,和/或将该注册表数据复制到该只读虚拟化子层的实例的一个用户模版区上。在其他实施方法案中,将来自该读写虚拟化子层的实例的用户特有数据合并到该只读虚拟化子层的实例之中可以包括将与至少两个不同用户配置文件相关联的用户特有数据合并到该只读虚拟化子层之中。在某些实施方案之中,将该只读虚拟化子层的实例与该读写虚拟化子层的实例合并可以包括将来自该读写虚拟化子层的实例的用户公有数据合并到该只读虚拟化子层的实例之中。
在某些实施方案中,该计算***可以确定在该只读虚拟化子层的实例与该读写虚拟化子层的实例之间的一个差异。该计算***还可以将来自该读写虚拟化子层的实例的差异中所识别的数据复制到该只读虚拟化子层的实例上。在某些实施方案中,确定该只读虚拟化子层的实例与该读写虚拟化子层的实例之间的一个差异可以包括在该读写虚拟化子层的实例中识别至少一个文件,该文件不位于该只读虚拟化子层的实例之中;在该读写虚拟化子层的实例中识别至少一个文件,该文件是该只读虚拟化子层的实例中的一个对应文件的一个修改版本;和/或在该读写虚拟化子层的实例中识别至少一个目录,该目录不位于该只读虚拟化子层的实例之中。
在某些实施方案中,该计算***可以识别一个文件,该文件在一个已删除对象文件(它识别从该读写虚拟化子层的实例删除的多个对象)中被识别。该计算***可以识别在该已删除对象文件中所识别的一个目录。该计算***还可以从该只读虚拟化子层的实例中删除在该已删除对象文件中所识别的文件和/或在该已删除对象文件中所识别的目录。
在某些实施方案中,该计算***可以从该读写虚拟化子层的实例中的一个注册表将注册表数据复制到该只读虚拟化子层的实例中的一个注册表上。在其他实施方案中,该计算***可以定位在一个已删除对象文件中识别的注册表数据。该已删除对象文件可以识别从该读写虚拟化子层的实例所删除的多个对象。该计算***可以从该只读虚拟化子层的实例中删除在该已删除对象文件中所识别的注册表数据。
在某些实施方案中,该计算***可以在将该只读虚拟化子层的实例与该读写虚拟化子层的实例合并之前对该只读虚拟化子层应用一个更新。在其他实施方案中,该计算***可以在应用该更新之后并且在合并之前测试该更新,以确定是否要将该只读虚拟化子层的实例与该读写虚拟化子层的实例合并。
在至少一个实施方案中,该计算***可以包括一个层合并模块。该层合并模块可以识别一个虚拟化的应用程序,该程序包括了一个只读虚拟化子层与一个读写虚拟化子层。该只读虚拟化子层可以包括该虚拟化的应用程序的一个第一基本状态。该读写虚拟化子层可以被配置为用于存储对该虚拟化的应用程序的第一基本状态的多个改变。该层合并模块可以将该只读虚拟化子层的一个实例与该读写虚拟化子层的一个实例合并,以创建一个修改的只读虚拟化子层,它可以包括该虚拟化的应用程序的一个第二基本状态。该计算***还可以包括一个处理器,该处理器被配置为用于执行该层合并模块。
在某些实施方案中,该计算***可以包括一个部署模块。该部署模块可以确定在该只读虚拟化子层与该读写虚拟化子层之间的一个差异。该部署模块还可以使用该差异来创建一个补丁,该补丁被配置为用来自该读写虚拟化子层的实例的数据来更新该只读虚拟化子层的实例。该部署模块可以进一步将该补丁部署到一台远程计算装置上。该远程计算装置可以包括该只读虚拟化子层的实例以及该层合并模块。
在一些实施方案中,该层合并模块可以在该读写虚拟化子层的实例中识别至少一个文件,该文件不位于该只读虚拟化子层的实例之中。该层合并模块可以在该读写虚拟化子层的实例中识别至少一个文件,该文件是在该只读虚拟化子层的实例中的一个对应文件的一个修改的版本。该层合并模块还可以识别从该读写虚拟化子层的实例中删除的至少一个文件。该层合并模块可以进一步识别从该读写虚拟化子层的实例中删除的至少一个目录。
该层合并模块可以从该读写虚拟化子层的实例中将至少一个文件复制到该只读虚拟化子层的实例上。该层合并模块还可以从该读写虚拟化子层的实例中将至少一个注册表项复制到该只读虚拟化子层的实例上。该层合并模块可以从该只读虚拟化子层的实例中删除至少一个文件。该层合并模块还可以从该只读虚拟化子层的实例中删除至少一个注册表项。在至少一个实施方案中,该层合并模块可以将数据从该读写虚拟化子层的实例中移动到该只读虚拟化子层的实例上。
虽然前述的披露使用了多个具体的框图、流程图、以及实例阐明了不同的实施方案,在此说明和/或展示的每个框图部件、流程图步骤、操作、和/或部件都可以单独地和/或共同地使用一个大范围的硬件、软件、或者固件(或者它们的任何组合)配置来实现。另外,在其他部件之中所包含的任何部件的披露都应该看作本质上是示例性的,因为可以实施许多其他的体系结构来实现同样的功能。
在此说明和/或展示的进程的参数以及步骤的顺序仅仅是以举例的方式给出并且可以按希望来更改。例如,虽然在此展示和/或说明的这些步骤可以按照一个具体的顺序来示出或讨论,但这些步骤并非必须按照所展示或者所讨论的顺序来执行。在此说明和/或展示的不同的示例性方法还可以省略在此说明或展示的一个或者多个步骤或者还可以包括除所披露的那些之外的其他步骤。
此外,虽然不同的实施方案在此已经在全功能性计算***的背景下进行了说明和/或展示,这些示例性实施方案的一个或者多个能够以多种形式为一个程序产品来分发,而无论实际用于进行该分发的计算机可读媒介的具体形式如何。在此披露的这些实施方案还可以使用执行某些特定任务的软件模块来实施。这些软件模块可以包括脚本、成批文件、或者其他可执行文件,它们可以存储在一种计算机可读的存储媒介上或者在一种计算***中。在某些实施方案中,这些软件模块可以将一个计算***配置成用于实现在此披露的一个或者多个示例性的实施方案。
已经提供了以上说明用于使本领域的其他技术人员能够最好地利用在此说明的这些示例性实施方案的不同方面。这一示例性说明并非旨在是穷尽性的或者被限制在所披露的任何精确的形式上。许多改进与变形都是可能的而不背离本披露的精神与范围。希望在此说明的这些实施方案在所有方面均被考虑为是解说性的而非限制性的,并且应该参见所附权利要求以及它们的等效物来确定本披露的范围。
除非另外说明,如在本说明书与权利要求中所使用的,术语“一个”或者“一种”应理解为含义是“至少一个”。此外,为便于使用起见,如在本说明书与权利要求中所使用的,单词“包含”和“具有”是可以互换的并且具有与单词“包括”相同的含义。
Claims (9)
1.一种用于合并虚拟化子层的计算机实施的方法,包括:
识别一个虚拟化的应用程序的一个第一虚拟化子层;
识别该虚拟化的应用程序的一个第二虚拟化子层;
确定在该第一虚拟化子层和该第二虚拟化子层之间的一个差异,其中该差异代表该第一虚拟化子层;
使用该差异创建一个补丁,该补丁被配置为用来自该第一虚拟化子层的实例的数据来更新该第二虚拟化子层的实例;
将该补丁部署到一台远程计算装置上,该远程计算装置包括该第二虚拟化子层的该实例,其中该补丁代表该第一虚拟化子层;
将该第一虚拟化子层的该实例与该第二虚拟化子层的该实例合并,其中:
识别该第一虚拟化子层的步骤、识别该第二虚拟化子层的步骤以及合并的步骤是由一个计算***执行的,该计算***包括存储设备,该存储设备被配置为在该第一虚拟化子层和该第二虚拟化子层中存储数据,以及
将该第一虚拟化子层的该实例与该第二虚拟化子层的该实例合并包括:在该远程计算装置上将该补丁与该第二虚拟化子层的该实例合并。
2.如权利要求1所述的计算机实施的方法,其中:
该第二虚拟化子层包括一个只读虚拟化子层;
该只读虚拟化子层包括该虚拟化的应用程序的一个第一基本状态;
该第一虚拟化子层包括一个读写虚拟化子层;
该读写虚拟化子层被配置为用于存储对于该虚拟化的应用程序的第一基本状态的改变;
将该第一虚拟化子层的实例与该第二虚拟化子层的实例合并包括将该读写虚拟化子层的一个实例与该只读虚拟化子层的一个实例合并以创建一个修改的只读虚拟化子层,该修改的只读虚拟化子层包括该虚拟化的应用程序的一个第二基本状态。
3.如权利要求2所述的计算机实施的方法,进一步包括:
在确定该差异以及创建该补丁之前对该读写虚拟化子层应用一个更新;
在应用该更新之后并且在确定该差异以及创建该补丁之前测试该读写虚拟化子层以确定该更新在该虚拟化的应用程序中是否造成了任何问题。
4.如权利要求1所述的计算机实施的方法,其中确定在该第一虚拟化子层与该第二虚拟化子层之间的一个差异包括:
扫描该第一虚拟化子层与该第二虚拟化子层以识别在该第一虚拟化子层与该第二虚拟化子层中的文件;
对所识别的该第一虚拟化子层与该第二虚拟化子层中的文件进行比较以确定在该第一虚拟化子层与该第二虚拟化子层之间的该差异。
5.如权利要求1所述的计算机实施的方法,其中确定在该第一虚拟化子层与该第二虚拟化子层之间的该差异包括将该第一虚拟化子层的注册表区与该第二虚拟化子层的注册表区进行比较。
6.如权利要求2所述的计算机实施的方法,其中:
该差异识别待被添加到该第二虚拟化子层的该实例和待从该第二虚拟化子层的该实例删除的文件***以及注册表数据,以将该第一虚拟化子层的该实例与该第二虚拟化子层的该实例合并。
7.一种用于合并虚拟化子层的***,包括:
用于识别一个虚拟化的应用程序的装置,该虚拟化的应用程序包括一个只读虚拟化子层以及一个读写虚拟化子层,该只读虚拟化子层包括该虚拟化的应用程序的一个第一基本状态并且该读写虚拟化子层被配置为用于存储对该虚拟化的应用程序的第一基本状态的多个修改;
用于将该只读虚拟化子层的一个实例与该读写虚拟化子层的一个实例合并以创建一个修改的只读虚拟化子层的装置,该修改的只读虚拟化子层包括该虚拟化的应用程序的一个第二基本状态,其中将该只读虚拟化子层的一个实例与该读写虚拟化子层的一个实例合并包括:将来自该读写虚拟化子层的用户数据并入该只读虚拟化子层中,该用户数据包括一个或多个用户的设置和/或优选项。
8.如权利要求7所述的***,其中该用户数据包括用户特有数据,该用户特有数据是一个特定用户所特有的,并且被存储在一个HKEY_CURRENT_USER注册表单元。
9.如权利要求7所述的***,进一步包括:
用于在该读写虚拟化子层的实例中识别至少一个文件的装置,该文件不是位于该只读虚拟化子层的实例之中;
用于在该读写虚拟化子层的实例中识别至少一个文件的装置,该文件是该只读虚拟化子层的实例中的一个对应文件的一个修改的版本;
用于识别从该读写虚拟化子层的实例中删除的至少一个文件的装置;
用于识别从该读写虚拟化子层的实例中删除的至少一个注册表项的装置;
用于将来自该读写虚拟化子层的实例的至少一个文件复制到该只读虚拟化子层的实例上的装置;
用于将来自该读写虚拟化子层的实例的至少一个注册表项复制到该只读虚拟化子层的实例上的装置;
用于从该只读虚拟化子层的实例中删除至少一个文件的装置;
用于从该只读虚拟化子层的实例删除至少一个注册表项的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/396,969 | 2009-03-03 | ||
US12/396969 | 2009-03-03 | ||
US12/396,969 US8407700B2 (en) | 2009-03-03 | 2009-03-03 | Methods and systems for merging virtualization sublayers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101826029A CN101826029A (zh) | 2010-09-08 |
CN101826029B true CN101826029B (zh) | 2014-09-17 |
Family
ID=42237076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010122727.9A Active CN101826029B (zh) | 2009-03-03 | 2010-03-02 | 用于合并虚拟化子层的方法与*** |
Country Status (4)
Country | Link |
---|---|
US (1) | US8407700B2 (zh) |
EP (1) | EP2226722A1 (zh) |
JP (1) | JP5781736B2 (zh) |
CN (1) | CN101826029B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8261254B2 (en) | 2008-03-31 | 2012-09-04 | Symantec Corporation | Dynamic insertion and removal of virtual software sub-layers |
US8881140B1 (en) | 2009-09-04 | 2014-11-04 | Symantec Corporation | Systems and methods for virtualizing software associated with external computer hardware devices |
US8346854B2 (en) * | 2010-06-30 | 2013-01-01 | Deskstream, Inc. | Method and system of operating system independence |
US9116725B1 (en) | 2011-03-15 | 2015-08-25 | Symantec Corporation | Systems and methods for using virtualization of operating-system-level components to facilitate software testing |
US8713088B2 (en) * | 2011-03-27 | 2014-04-29 | Hewlett-Packard Development Company, L.P. | Identifying users of remote sessions |
CN102843252B (zh) * | 2011-06-23 | 2018-06-19 | 南京中兴软件有限责任公司 | 一种通过网管升级网元的方法和装置 |
US9060004B1 (en) * | 2011-11-16 | 2015-06-16 | Symantec Corporation | Systems and methods for maintaining location-aware virtualization layers |
US20130152076A1 (en) * | 2011-12-07 | 2013-06-13 | Cisco Technology, Inc. | Network Access Control Policy for Virtual Machine Migration |
CN103116544A (zh) * | 2013-01-25 | 2013-05-22 | 浪潮电子信息产业股份有限公司 | 一种自动化的跨平台多服务器多应用测试方法 |
US9223966B1 (en) | 2014-05-04 | 2015-12-29 | Symantec Corporation | Systems and methods for replicating computing system environments |
CN105740736A (zh) * | 2014-12-12 | 2016-07-06 | 北京元心科技有限公司 | 实现文件***安全操作的方法和装置 |
US9852077B2 (en) * | 2015-05-21 | 2017-12-26 | Dell Products L.P. | Preserving user changes to a shared layered resource |
US10169351B2 (en) * | 2015-08-19 | 2019-01-01 | International Business Machines Corporation | Merging directory information from a user directory to a common directory |
CN105740134B (zh) * | 2016-01-29 | 2018-03-20 | 浪潮(北京)电子信息产业有限公司 | 一种基于文件的测试方法及装置 |
US10216939B2 (en) * | 2016-04-29 | 2019-02-26 | Wyse Technology L.L.C. | Implementing a security solution using a layering system |
KR20170133120A (ko) * | 2016-05-25 | 2017-12-05 | 삼성에스디에스 주식회사 | 컨테이너 이미지 관리 시스템 및 방법 |
WO2020252081A1 (en) * | 2019-06-10 | 2020-12-17 | Argos Labs Inc. | Systems and methods for robotic process automation |
US11481487B2 (en) * | 2019-07-08 | 2022-10-25 | Google Llc | System and method of detecting file system modifications via multi-layer file system state |
US11983146B2 (en) * | 2022-05-12 | 2024-05-14 | Microsoft Technology Licensing, Llc | Copy-on-write union filesystem |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1818873A (zh) * | 2005-02-11 | 2006-08-16 | 戴尔产品有限公司 | 用于虚拟机中的集中式软件管理的***和方法 |
CN101334825A (zh) * | 2007-06-29 | 2008-12-31 | 联想(北京)有限公司 | 应用程序管理和运行***及方法 |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7028305B2 (en) * | 2001-05-16 | 2006-04-11 | Softricity, Inc. | Operating system abstraction and protection layer |
US7461096B1 (en) | 2003-06-11 | 2008-12-02 | Symantec Corporation | Weighted prioritizing layered computing system |
US7620956B2 (en) | 2003-06-11 | 2009-11-17 | Symantec Corporation | Portable memory storage devices with application layers |
US7165260B2 (en) | 2002-06-12 | 2007-01-16 | Fsl, L.L.C. | Layered computing systems and methods for insecure environments |
US7886291B1 (en) | 2003-06-11 | 2011-02-08 | Symantec Corporation | Layer typed prioritizing application layered systems |
US7970789B1 (en) | 2003-06-11 | 2011-06-28 | Symantec Corporation | Sublayered application layered system |
US8010961B1 (en) | 2003-06-11 | 2011-08-30 | Symantec Corporation | Data layer prioritization in an application layered system |
US7877413B1 (en) | 2002-06-12 | 2011-01-25 | Symantec Corporation | Path variablizing layered system |
US7461086B1 (en) | 2006-01-03 | 2008-12-02 | Symantec Corporation | Run-time application installation application layered system |
AU2003243543A1 (en) | 2002-06-12 | 2003-12-31 | Fslogic Inc. | Layered computing systems and methods |
US7542988B1 (en) | 2006-01-03 | 2009-06-02 | Symantec Corporation | File type associative application layered system |
US7496931B2 (en) | 2003-12-30 | 2009-02-24 | Symantec Corporation | Portable memory storage devices containing public context application layers |
US8112767B1 (en) | 2002-06-12 | 2012-02-07 | Symantec Corporation | Systems, apparatus, and methods for layered execution |
US7945897B1 (en) | 2002-06-12 | 2011-05-17 | Symantec Corporation | Method and system for running an application in a clean operating environment using a layered computing system |
US7549164B2 (en) | 2003-06-11 | 2009-06-16 | Symantec Corporation | Intrustion protection system utilizing layers and triggers |
US7512977B2 (en) | 2003-06-11 | 2009-03-31 | Symantec Corporation | Intrustion protection system utilizing layers |
US7774596B2 (en) * | 2005-02-02 | 2010-08-10 | Insyde Software Corporation | System and method for updating firmware in a secure manner |
US20070174429A1 (en) | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
US8776041B2 (en) * | 2007-02-05 | 2014-07-08 | Microsoft Corporation | Updating a virtual machine monitor from a guest partition |
JP2010522370A (ja) * | 2007-03-20 | 2010-07-01 | サンギュ イ | 移動型仮想マシンイメージ |
US8024396B2 (en) * | 2007-04-26 | 2011-09-20 | Microsoft Corporation | Distributed behavior controlled execution of modeled applications |
US20110040812A1 (en) | 2007-12-20 | 2011-02-17 | Virtual Computer, Inc. | Layered Virtual File System |
EP2274674A1 (en) | 2008-04-25 | 2011-01-19 | VMWare, Inc. | Linking virtualized application namespaces at runtime |
US8108346B1 (en) | 2008-06-27 | 2012-01-31 | Symantec Corporation | Systems and methods for maintaining settings for multiple applications |
US8060940B2 (en) | 2008-06-27 | 2011-11-15 | Symantec Corporation | Systems and methods for controlling access to data through application virtualization layers |
US8112392B1 (en) | 2009-02-13 | 2012-02-07 | Symantec Corporation | Methods and systems for creating snapshots of virtualized applications |
-
2009
- 2009-03-03 US US12/396,969 patent/US8407700B2/en not_active Expired - Fee Related
-
2010
- 2010-03-01 EP EP10275023A patent/EP2226722A1/en not_active Withdrawn
- 2010-03-02 JP JP2010045420A patent/JP5781736B2/ja active Active
- 2010-03-02 CN CN201010122727.9A patent/CN101826029B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1818873A (zh) * | 2005-02-11 | 2006-08-16 | 戴尔产品有限公司 | 用于虚拟机中的集中式软件管理的***和方法 |
CN101334825A (zh) * | 2007-06-29 | 2008-12-31 | 联想(北京)有限公司 | 应用程序管理和运行***及方法 |
Non-Patent Citations (2)
Title |
---|
《On the Design of Virtual Machine Sandboxes for Distributed Computing in Wide-area Overlays of Virtual Workstations》;David Isaac Wolinsky et al;《Second International Workshop on Virtualization Technology in Distributed Computing》;20061117;正文第1页-第7页 * |
David Isaac Wolinsky et al.《On the Design of Virtual Machine Sandboxes for Distributed Computing in Wide-area Overlays of Virtual Workstations》.《Second International Workshop on Virtualization Technology in Distributed Computing》.2006,正文第1页-第7页. |
Also Published As
Publication number | Publication date |
---|---|
US20100229169A1 (en) | 2010-09-09 |
US8407700B2 (en) | 2013-03-26 |
CN101826029A (zh) | 2010-09-08 |
EP2226722A1 (en) | 2010-09-08 |
JP5781736B2 (ja) | 2015-09-24 |
JP2010205267A (ja) | 2010-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101826029B (zh) | 用于合并虚拟化子层的方法与*** | |
CN102667772B (zh) | 文件级分级存储管理***、方法和设备 | |
CN101777062B (zh) | 场境感知的实时计算机保护***和方法 | |
CN102754104B (zh) | 在相关计算***之间共享计算操作结果的***和方法 | |
US7890626B1 (en) | High availability cluster server for enterprise data management | |
US7747579B2 (en) | Metabase for facilitating data classification | |
CN110196725A (zh) | 配置文件管理方法、装置、计算机设备及存储介质 | |
US20140324920A1 (en) | Object storage using multiple dimensions of object information | |
US20060101092A1 (en) | Computer system and method for managing file versions | |
US11645245B2 (en) | Container software discovery and cataloging | |
CN104781791A (zh) | 通用可插拔云灾难恢复*** | |
CN103354931A (zh) | 用于查找反恶意软件元数据的***和方法 | |
CN101836186A (zh) | 用于在隔离环境之间通信的方法和*** | |
CN102360410B (zh) | 一种文件***的用户操作发现方法和装置 | |
CN105474206A (zh) | 支持按需数据传输的虚拟同步 | |
CN104769598B (zh) | 用于检测非法应用程序的***和方法 | |
CN102938784A (zh) | 应用于分布式存储***中的数据存储方法和*** | |
CN102591909A (zh) | 在去重复存储***中提供增强的可扩展性的***及方法 | |
CN103460197A (zh) | 计算机***、文件管理方法以及元数据服务器 | |
CN112912868B (zh) | 用于批量移除数据库中的记录的***和方法 | |
CN105339903A (zh) | 恢复文件***对象 | |
CN102804137B (zh) | 控制对软件构件状态的访问 | |
CN104903871A (zh) | 虚拟磁带库*** | |
CN109857519A (zh) | 虚拟磁盘的处理方法及相关装置 | |
KR102618274B1 (ko) | 컨테이너에 포함된 데이터에 대한 관리 시스템 및 그 제어방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200106 Address after: California, USA Patentee after: CA,INC. Address before: California, USA Patentee before: Symantec Corporation |