CN102037444B - 用于修补从通用基础磁盘映像获取的多个磁盘映像的方法和系统 - Google Patents

用于修补从通用基础磁盘映像获取的多个磁盘映像的方法和系统 Download PDF

Info

Publication number
CN102037444B
CN102037444B CN200980118102.0A CN200980118102A CN102037444B CN 102037444 B CN102037444 B CN 102037444B CN 200980118102 A CN200980118102 A CN 200980118102A CN 102037444 B CN102037444 B CN 102037444B
Authority
CN
China
Prior art keywords
disk image
basic
basic disk
copy
file
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.)
Expired - Fee Related
Application number
CN200980118102.0A
Other languages
English (en)
Other versions
CN102037444A (zh
Inventor
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.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
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 Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN102037444A publication Critical patent/CN102037444A/zh
Application granted granted Critical
Publication of CN102037444B publication Critical patent/CN102037444B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates

Landscapes

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

Abstract

本发明涉及用于更新多个磁盘映像的方法,多个磁盘映像的每一个取自通用基础磁盘映像和增量映像,其中该增量映像包括多个增量文件,该方法包括将增量文件应用到基础磁盘映像来产生第二磁盘映像,第二磁盘映像包括基础磁盘映像的由增量文件修改的部分和基础磁盘映像的未修改的部分。每个增量文件表示多个用户磁盘映像的其中一个和基础磁盘映像之间的至少一个区别。该方法包括将补丁应用到基础磁盘映像的拷贝,并且确定补丁应用到基础磁盘映像的和基础磁盘映像的未修改的部分对应的部分。该增量文件应用到基础磁盘映像的修补拷贝。

Description

用于修补从通用基础磁盘映像获取的多个磁盘映像的方法和系统
技术领域
本发明涉及用于更新多个磁盘映像的方法和系统。更具体地,本发明涉及用于修补从通用基础磁盘映像获取的多个磁盘映像的方法和系统。
背景技术
在用于中央管理桌面的环境中,基于单个“黄金主盘”桌面磁盘映像的拷贝,多个客户机器接收对于计算环境的访问或者执行计算环境。机器磁盘映像或者桌面磁盘映像可以是操作系统(OS)的映像,并且可以包括表示用户的工作环境的应用和定制程序集。在一些环境中,机器映像包括用来执行虚拟机器的文件,虚拟机器随后执行操作系统或者其它用户应用。在其他环境中,桌面映像包括用来执行操作系统或者其它用户应用的文件,并且或者物理机器或者虚拟机器可以执行该桌面映像。机器或者桌面的映像可以总地称之为磁盘映像。
桌面管理的一个方面是需要改变操作系统或者桌面环境中所安装的应用,例如执行升级或者其它维护。此外,还可能需要修改设置来重新对准公司策略中的变化并且阻碍安全威胁。在桌面磁盘映像的中央管理的情况中,通常应用改变或者修补的通用集(common set)。
在一些实施例中,实际上每个用户具有他们各自独立的机器映像。在其中一个这样的实施例中,用户请求对基础磁盘映像的改变保存在和用户相关的增量文件中并且基础磁盘映像和与该用户相关的一个或者多个增量文件的组合称为用户的机器磁盘映像。在另一个这样的实施例中,分别修补机器磁盘映像。由于通常每个机器都要启用、修补并且随后关闭和重启,所以通常在时间消耗方面成本较大。此外,通常由于修补将导致单个增量文件的改变而不是改变通用基础磁盘映像,所以在磁盘利用方面成本较大。在这些实施例中,由于修补而导致的改变通常应用到增量文件,而不是基础磁盘映像,从而迅速增加增量映像的大小并且增加增量所需的存储空间。
在一个替代系统中,分别修补增量磁盘并且随后外部过程搜索对于多个映像或者增量通用的块,并且使用对单个通用块的参考来替换通用块,该增量磁盘可以是保存和用户相关的一个或者多个增量文件的磁盘。这可以降低磁盘存储需求,但代价是附加的复杂度和可能的运行时间开销。该“提取”方法通常应用在块级并且通常不能识别小于块的共享的数据,或者其中相同的文件存在于多个磁盘映像中但是具有不同的块级布局。通常,在使用存储区域网络(SAN)的环境中提供该方法。
在其它典型实施例中,补丁应用到通用磁盘映像并且丢弃任意增量磁盘。在其中一个这样的实施例中,例如,每当机器断电时系统丢弃增量映像。文件(诸如用户产生的文档)通常保存在外部磁盘上,使得它们通常不会和所丢弃的增量映像一起丢失;然而,用户通常不能将应用或者其它资源永久安装到他们的磁盘映像上。从而,在一些这样的实施例中,不管何时修补应用,丢弃增量都会导致更受限的用户体验。
发明内容
在一个方面,描述一种提供修补基础磁盘映像而不会使增量文件无效的功能性的方法和系统。在一个实施例中,平衡现存增量映像同时将修补应用到通用基础磁盘映像来更新多个桌面磁盘映像的方法避免了和传统修补增量文件的方法所关联的高的存储和计算成本。
在另一个方面,一种用于更新多个磁盘映像的方法,多个磁盘映像的每一个取自通用基础磁盘映像和增量映像,并且该增量映像包括多个增量文件,该方法包括将增量文件应用到基础磁盘映像来产生初始虚拟磁盘映像,初始虚拟磁盘映像包括通过增量文件修改的基础磁盘映像的一部分和基础磁盘映像的未修改的一部分。每个增量文件可以表示多个用户磁盘映像的其中一个和基础磁盘映像之间的至少一个区别。该方法包括将补丁应用到基础磁盘映像的拷贝。该方法包括确定补丁应用到和基础磁盘映像的未修改的一部分相对应的基础磁盘映像的一部分。该方法包括应用该增量文件到基础磁盘映像的修补拷贝。
在一些实施例中,该方法包括确定将补丁应用到和由至少一个增量文件修改的基础磁盘映像的一部分相对应的基础磁盘图像的一部分,并且将至少一个增量文件应用到基础磁盘映像的修补拷贝。在另一个例子中,该方法包括确定将补丁应用到和由至少一个增量文件修改的基础磁盘映像的一部分相对应的基础磁盘映像的一部分并且确定不将至少一个增量文件应用到基础磁盘映像的修补拷贝。
在一个实施例中,该方法包括在计算环境中安装基础磁盘映像、初始虚拟磁盘映像以及基础磁盘映像的修补拷贝。在另一个例子中,该方法包括在虚拟机器环境中安装基础磁盘映像、初始虚拟磁盘映像以及基础磁盘映像的修补拷贝。仍旧是另一个实施例中,该方法包括响应于该确定,将增量文件拷贝到和基础磁盘映像的修补拷贝相关联的第二增量磁盘映像。
在一个实施例中,该方法包括将增量磁盘映像的增量文件应用到基础磁盘映像来产生初始虚拟磁盘映像,该增量磁盘映像包括表示用户磁盘映像和基础磁盘映像之间的至少一个区别的多个增量文件的至少一个。在另一个例子中,该方法包括经由合并过程确定将补丁应用到和基础磁盘映像的未修改的部分对应的基础磁盘映像的一部分。仍在另一个实施例中,该方法包括经由合并过程将增量文件应用到基础磁盘映像的修补拷贝。
在一个实施例中,该方法包括确定将补丁应用到和基础磁盘映像的未修改的部分相对应的基础磁盘映像的至少一个文件并且将增量文件应用到基础磁盘映像的修补拷贝的至少一个文件。在另一个例子中,该方法包括确定将补丁应用到和基础磁盘映像的修改部分相对应的基础磁盘映像的注册部分并且在注册键值级将增量文件合并到和基础磁盘映像的修改部分对应的基础磁盘映像的修补拷贝。
在一个实施例中,该方法包括确定该补丁应用到以下其中一个:与基础磁盘映像的修改部分相对应的基础磁盘映像的日志文件部分以及数据库,并且使用时间戳和试探法中的至少一个将增量文件合并到与基础磁盘映像的修改部分相对应的基础磁盘映像的修补拷贝的一部分。在另一个实施例中,该方法包括产生新的增量磁盘映像,该增量磁盘映像在应用到基础磁盘映像的修补拷贝时映像,产生和通过在初始虚拟磁盘映像上应用该补丁所产生的第二磁盘映像大体类似的第一磁盘映像。仍在另一个实施例中,该方法包括通过规则引擎来确定将增量文件应用到基础磁盘映像的修补拷贝。
在一个实施例中,该方法包括将补丁应用到初始虚拟磁盘映像,确定该补丁应用到和通过增量文件修改的基础磁盘文件的一部分相对应的初始虚拟磁盘映像的拷贝的一部分,确定基础磁盘映像的修补拷贝中的补丁应用到未通过增量文件修改的基础磁盘映像的一部分,并且将增量文件应用到基础磁盘映像的修补拷贝。
在另一个方面中,用于更新多个用户磁盘映像的系统,多个磁盘映像的每一个取自通用基础磁盘映像和增量映像,并且该增量映像包括多个增量文件,该系统包括基础磁盘映像、增量磁盘映像、补丁和计算环境。该系统包括将增量文件应用到基础磁盘映像来产生初始虚拟磁盘映像的装置,初始虚拟磁盘映像包括通过增量文件修改的基础磁盘映像的一部分和基础磁盘映像的未修改的一部分。该系统包括将补丁应用到基础磁盘映像的拷贝的装置。计算环境包括确定补丁应用到和基础磁盘映像的未修改的一部分对应的基础磁盘映像的一部分的装置。该计算环境包括应用该增量文件到基础磁盘映像的修补拷贝的装置。
在一个实施例中,该系统包括用于保存多个增量文件的增量磁盘映像,每个增量文件表示用户磁盘映像和基础磁盘映像之间的至少一个区别。在另一个实施例中,计算环境是虚拟机器环境。仍在另一个实施例中,计算环境包括用于管理磁盘映像格式和增量文件格式之间的文件的装置。在又一个实施例中,计算环境包括操作系统和用于管理磁盘映像的至少一个工具。甚至在又一个实施例中,计算环境包括用于读写磁盘映像的工具。
附图说明
参考结合附图的以下描述,本发明的前述和其他对象、方面、特征和优势将会变得更加明显且更好理解,其中:
图1A是描述包括和远程机器通信的客户机器的网络环境的实施例的框图;
图1B和1C是描述结合此处描述的方法和系统使用的计算机的实施例的框图;
图1D是描述在现有技术的虚拟机器中构建和使用增量磁盘的方法的实施例的框图;
图2是描述用于更新从通用基础磁盘映像和多个增量文件获取的多个磁盘映像的系统的实施例的框图;
图3A是描述用于更新从通用基础磁盘映像和多个增量文件获取的多个磁盘映像的方法的一个实施例的流程图;和
图3B是描述用于更新从通用基础磁盘映像和多个增量文件获取的多个磁盘映像的方法的实施例的流程图。
具体实施方式
现在参考图1A,描述了网络环境的实施例。总的来说,网络环境包括经由一个或多个网络104与一个或多个远程机器106a-106n(通常也被称为服务器106或远程机器106)通信的一个或多个客户机102a-102n(通常也被称为本地机器102、客户机102、客户机节点102、客户机器102、客户计算机102、客户机装置102、端点102或者端点节点102)。在一些实施例中,客户机102有能力用作寻求对服务器提供的资源的访问的客户机节点并且用作为其他客户机102a-102n提供对所寄载资源的访问的服务器。
图1A示出客户机102和远程机器106之间的网络104,客户机102和远程机器106可以在同一个网络104上。网络104可以是像公司内联网的局域网(LAN)、城域网(MAN)或者诸如因特网或万维网的广域网(WAN)。在一些实施例中,在客户机102和远程机器106之间存在多个网络104。在一个这样的实施例中,网络104′(未示)可以是专用网而网络104可以是公用网。在另外的这样的实施例中,网络104可以是专用网而网络104′可以是公用网。在另一个实施例中,网络104和104′可以都是专用网。
网络104可以是任意类型和/或形式的网络,并且可以包括下列任意网络:点到点网络、广播网、广域网、局域网、远程通信网、数据通信网、计算机网络、ATM(异步传送模式)网络、SONET(同步光学网络)网络、SDH(同步数字系列)网络、无线网络和有线网络。在一些实施例中,网络104可以包括诸如红外信道或卫星频带的无线链路。网络104的拓扑结构可以是总线型、星型或环型网络拓扑结构。网络104可以是本领域内普通技术人员所知的能够支持此处描述的操作的任意这样的网络拓扑结构。该网络可以包括利用任意协议来在移动装置之间通信的移动电话网络,包括:AMPS、TDMA、CDMA、GSM、GPRS或者UMTS。在一些实施例中,不同类型的数据可以经由不同的协议传输。在其他实施例中,相同类型的数据可以经由不同协议传输。
在一些实施例中,该系统可以包括多个、逻辑分组的远程机器106。在其中一个这样的实施例中,远程机器的逻辑分组可以被称为服务器群组38。在这些实施例中的另一个实施例中,远程机器106可以是在地理上分散的。在其他实施例中,服务器群组38可以被管理为单一的实体。在其它实施例中,服务器群组38包括多个服务器群组38。在每个服务器群组38中的远程机器106可以是不同种类的,一个或多个远程机器106可以根据一种类型的操作系统平台(例如,由位于Redmond,Washington的微软公司出品的WINDOWS NT)来进行操作,但一个或多个其它的远程机器106可以根据另一种类型的操作系统平台(例如,Unix或Linux)来进行操作。
每个服务器群组38中的远程机器106不需要与同一服务器群组38中的另一个远程机器106物理上接近。因此,逻辑上被分组为服务器群组38的远程机器106的组可以使用广域网(WAN)连接或城域网(MAN)连接来互连。例如,服务器群组38可以包括在物理上位于不同的洲或位于一个洲、国家、州、城市、校园或房间的不同区域的远程机器106。如果使用局域网(LAN)连接或一些形式的直接连接来连接远程机器106,则可以增加在服务器群组38中的远程机器106之间的数据传输速度。
远程机器106可以是文件服务器、应用服务器、web服务器、代理服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟服务器、配额制服务器、SSL VPN服务器或者防火墙。在一些实施例中,远程机器106提供远程验证拨入用户服务,并且称之为RADIUS服务器。在其他实施例中,远程机器106可以有能力起到应用服务器或主应用服务器的作用。在其他实施例中,远程机器106是刀片服务器。在又一个实施例中,远程机器106执行为用户或者客户计算机102提供对计算环境的访问的虚拟机器。
在一个实施例中,远程机器106可以包括活动目录(ActiveDirectory)。远程机器106可以是应用加速设备。对于远程机器106是应用加速设备的实施例,远程机器106可以提供的功能性包括防火墙功能性、应用防火墙功能性或者负载平衡功能性。在一些实施例中,远程机器106包括诸如以下公司生产的设备中一个的设备:CA San Jose的Citrix应用网络公司,或者CA Mountain View的Silver Peak Systems公司,或者CA San Francisco的Riverbed技术公司或者WA Seattle的F5网络公司或者CA Sunnyvale的Juniper网络公司。
在一些实施例中,远程机器106代表客户机102的用户执行应用。在其他实施例中,远程机器106执行虚拟机器,其提供执行会话,在该执行会话中应用代表客户机102或者用户来执行。在其中一个这样的实施例中,执行会话是寄载的桌面会话。在另一个这样的实施例中,执行会话提供对计算环境的访问,其可以包括以下的一个或者多个:应用、多个应用、桌面应用、和一个或者多个应用可以在其中执行的桌面会话。
在一些实施例中,客户机102与远程机器106进行通信。在一个实施例,客户机102直接与服务器群组38中的远程机器106的其中一个进行通信。在另一个实施例中,客户机102执行程序邻域应用以与服务器群组38中的远程机器106进行通信。在又一个实施例中,远程机器106提供主节点的功能。在一些实施例中,客户机102通过网络104与服务器群组38中的远程机器106进行通信。例如,通过网络104,客户机102可以请求执行由服务器群组38中的远程机器106a-106n寄载的多个应用,并接收应用执行结果的输出用于显示。在一些实施例中,只有主节点提供识别并提供与寄载被请求的应用的远程机器106b相关的地址信息所要求的功能。
在一个实施例中,远程机器106提供web服务器的功能。在另一个实施例中,远程机器106a从客户机102接收请求,将请求转发到第二远程机器106b,并使用来自于远程机器106b的对请求的响应来对客户机102的请求进行响应。在又一个实施例中,远程机器106a获得客户机102可用的应用的列举以及与寄载由所述应用的列举所识别的应用的远程机器106b相关的地址信息。在又一个实施例中,远程机器106使用web接口将对请求的响应提供给客户机102。在一个实施例中,客户机102直接与远程机器106进行通信以访问所识别的应用。在另一个实施例中,客户机102接收由执行远程机器106上的所识别的应用所生成的诸如显示数据的输出数据。
在一些实施例中,远程机器106或服务器群组38可以运行一个或多个应用,例如提供瘦-客户机计算的应用或远程显示表示应用。在一个实施例中,远程机器106或服务器群组38作为应用而执行Citrix Systems公司的CITRIX ACCESS SUITE的任意部分,例如METAFRAME或者CITIXPRESENTATION SERVER、CITRIX XEN APP、CITRIX XEN DESKTOP、CITRIXXEN SERVER,和/或由微软公司出品的任意一种微软Windows终端服务。在另一个实施例中,应用是由位于Fort Lauderdale,Florida的CitrixSystems公司开发的独立计算架构(ICA)客户机。在又一个实施例中,远程机器106可以运行应用,例如,所述远程机器106可以是提供例如由位于Redmond,Washington的微软公司出品的微软EXCHANGE的电子邮件服务的应用服务器、web或Internet服务器、或桌面共享服务器、或协作服务器。在又一实施例中,任意一种应用可以包括任意类型的寄载服务或产品,例如由California Santa Barbara的Citrix Online Division公司提供的GOTOMEETING、由位于Santa Clara,California的WebEx公司提供的WEBEX、或由位于Redmond,Washington的微软公司提供的微软Office LIVE MEETING。
客户机102可以执行、操作或以其他方式提供应用,所述应用可以是任意类型和/或形式的软件、程序或可执行指令,例如任意类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用、瘦-客户机的计算客户机、ActiveX控件、或Java小程序、或可以在客户机102上执行的任意其它类型和/或形式的可执行指令。在一些实施例中,应用可以是代表客户机102在远程机器106上执行的基于服务器或基于远程的应用。在一个实施例中,远程机器106可以使用任意瘦-客户机或远程显示协议来显示输出到客户机102,所述瘦-客户机或远程显示协议例如由位于Ft.Lauderdale,Florida的Citrix Systems公司出品的独立计算架构(ICA)协议或由位于Redmond,Washington的微软公司出品的远程桌面协议(RDP)。应用可以使用任意类型的协议,并且它可以是例如HTTP客户机、FTP客户机、Oscar客户机或Telnet客户机。在其它实施例中,应用包括与因特网语音协议(VoIP)通信相关的任意类型的软件,例如软IP电话。在进一步的实施例中,应用包括与实时数据通信相关的任意应用,例如用于流式传输视频和/或音频的应用。
客户机102和远程机器106可以被部署和/或执行在任意类型和形式的计算装置上,例如可以在任意类型和形式的网络上通信并执行此处描述的操作的计算机、网络装置或设备。图1B和1C描述了用于实施客户机102或者远程机器106的实施例的计算装置100的框图。如图1B和1C所示,每个计算装置100包括中央处理单元121和主存储器单元122。如图1B所示,计算装置100可以包括存储装置128、安装装置116、网络接口118和I/O控制器123、显示装置124a-124n、键盘126和诸如鼠标的点击装置127。存储装置128可以包括但不限于操作系统、软件和客户机代理120。如图1C所示,每个计算装置100也可以包括另外的可选元件,例如存储器端口103、桥接器170、一个或多个输入/输出装置130a-130n(通常使用附图标记130来指示)以及与中央处理单元121通信的高速缓存140。
中央处理单元121是响应并处理取自主存储器单元122的指令的任意逻辑电路。在许多实施例中,中央处理单元121由微处理器单元提供,例如:由位于Mountain View,California的Intel公司出品的产品;由位于Schaumburg,Illinois的Motorola公司出品的产品;由位于SantaClara,California的Transmeta公司出品的产品;由位于WhitePlains,New York的国际商业机器公司出品的RS/6000处理器;或者由位于Sunnyvale,California的Advanced Micro Devices公司出品的产品。计算装置100可以基于任意的这些处理器、或者可以如此处所描述进行操作的任意其它处理器。
主存储器单元122可以是可以保存数据并允许由微处理器121直接访问任意存储位置的一个或多个存储芯片,例如静态随机存取存储器(SRAM)、突发式SRAM或同步突发式SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页面模式DRAM(FPM DRAM)、增强型DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、突发式扩展数据输出DRAM(BEDO DRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100SDRAM、双数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)、直接内存总线DRAM(DRDRAM)、或铁电RAM(FRAM)。主存储器122可以基于任意一种上面描述的存储芯片、或者可以如此处描述进行操作的任意其它可用的存储芯片。在图1B中所示的实施例中,处理器121通过系统总线150(在下面进行更详细的描述)与主存储器122进行通信。图1C描述了在其中处理器通过存储器端口103直接与主存储器122通信的计算装置100的实施例。例如,在图1C中,主存储器122可以是DRDRAM。
图1C描述了在其中主处理器121通过有时被称为后端总线的次级总线来直接与高速缓存140通信的实施例。在其它实施例中,主处理器121使用系统总线150与高速缓存140进行通信。高速缓存140典型地具有比主存储器122更快的响应时间,并且典型地由SRAM、BSRAM或EDRAM来提供。在图1C中所示的实施例中,处理器121通过本地系统总线150与多个I/O装置130进行通信。多种总线可以用来将中央处理单元121连接到任意的I/O装置130,所述总线包括VESA VL总线、ISA总线、EISA总线、微通道架构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O装置是视频显示器124的实施例,处理器121可以使用高级图形端口(AGP)来与显示器124进行通信。图1C描述了在其中主处理器121通过HYPERTRANSPORT、RAPIDIO或INFINIBAND通信技术来直接与I/O装置130b通信的计算机100的实施例。图1C还描述了混合本地总线和直接通信的实施例:处理器121使用本地互连总线与I/O装置130a进行通信,但直接与I/O装置130b进行通信。
各式各样的I/O装置130a-130n可以存在于计算装置100中。输入装置包括键盘、鼠标、轨道垫、轨道球、麦克风以及绘画板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和染料升华打印机。I/O装置可以由如图1B所示的I/O控制器123控制。I/O控制器可以控制诸如键盘126和例如鼠标或光笔的指示装置127的一个或多个I/O装置。进一步地,I/O装置还可以为计算装置100提供存储和/或安装介质116。在其它实施例中,计算装置100可以提供USB连接(未图示)以接收诸如由位于Los Alamitos,California的Twintech Industry公司出品的USB闪存驱动器系列装置的便携USB存储装置。
再次参考图1B,计算装置100可以支持任意适当的安装装置116,例如用于接收像3.5英寸、5.25英寸磁盘或ZIP磁盘的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB装置、硬盘驱动器或适于安装软件和程序的任意其它合适装置。计算装置100还可以包括存储装置,例如一个或多个硬盘驱动器或独立磁盘的冗余阵列,用于保存操作系统及其它相关软件,以及用于保存诸如与客户机代理120相关的任意程序的应用软件程序。可选地,任意一种安装装置116还可以被用作存储装置。另外,操作系统和软件可以从可引导介质中运行,所述可引导介质例如像KNOPPIX的可引导CD,作为来自于knoppix.net可用作GNU/Linux套件的GNU/Linux的可引导CD。
进一步地,计算装置100可以包括通过多种连接接口连接到网络104的网络接口118,所述多种连接包括但不限于标准电话线、LAN或WAN链路(例如,802.11、T1、T3、56kb、X.25、SNA、DECNET)、宽带连接(例如,ISDN、帧中继、ATM、吉比特以太网、SONET上的以太网)、无线连接或上述任意或所有连接的一些组合。连接可以使用多种通信协议建立(例如,TCP/IP、IPX、SPX、NetBIOS、以太网、ARCNET、SONET、SDH、光纤分布数据接口(FDDI)、RS232、IEEE802.11、IEEE802.11a、IEEE802.11b、IEEE802.11g、CDMA、GSM、WiMax和直接异步连接)。在一个实施例中,计算装置100经由任意类型和/或形式的网关或者隧道协议和其他计算装置100’通信,诸如安全套接字层(SSL)或者传输层安全协议(TLS)或者Florida的Ft.Lauderdale的Citrix Systems公司出品的Citrix网关协议。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网卡、card bus网络适配器、无线网络适配器、USB网络适配器、调制解调器或适于将计算装置100接口连接到可以通信并执行此处所描述的操作的任意类型的网络的任意其它装置。
在一些实施例中,计算装置100可以包括或连接到多个显示装置124a-124n,每个显示装置可以是相同或不同的类型和/或形式。因而,任意I/O装置130a-130n和/或I/O控制器123可以包括任意类型和/或形式的适当的硬件、软件或硬件和软件的组合,以支持、允许或提供通过计算装置100连接和使用多个显示装置124a-124n。例如,计算装置100可以包括任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以接口连接、通信、连接或以其他方式使用显示装置124a-124n。在一个实施例中,视频适配器可以包括多个连接器以接口连接多个显示装置124a-124n。在其它实施例中,计算装置100可以包括多个视频适配器,每个视频适配器连接到一个或多个显示装置124a-124n。在一些实施例中,计算装置100的操作系统的任意部分可以被配置用于使用多个显示器124a-124n。在其它实施例中,一个或多个显示装置124a-124n可以由一个或多个诸如例如通过网络连接到计算装置100的计算装置100a和100b的其它的计算装置来提供。这些实施例可以包括被设计和构建为将另一个计算机的显示装置用作计算装置100的第二显示装置124a的任意类型的软件。本领域普通技术人员将认识和理解计算装置100可以被配置为具有多个显示装置124a-124n的多个方式和实施例。
在进一步的实施例中,I/O装置130可以是在系统总线150和外部通信总线之间的网桥,所述外部通信总线例如USB总线、Apple Desktop总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire 800总线、以太网总线、AppleTalk总线、吉比特以太网总线、异步传送模式总线、HIPPI总线、超HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannel总线或串行附加小型计算机系统接口总线。
图1B和1C中描述类型的计算装置100典型地在控制任务的调度且对系统资源进行访问的操作系统的控制下操作。计算装置100可以运行任意操作系统,例如任意版本的微软Windows操作系统、不同版本的Unix和Linux操作系统、用于Macintosh计算机的任意版本的MAC操作系统、任意嵌入式操作系统、任意实时操作系统、任意开源操作系统、任意专用操作系统、用于移动计算装置的任意操作系统、或者可以运行在计算装置上并执行此处所描述的操作的任意其它操作系统。典型的操作系统包括但不限于:WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWS NT 3.51、WINDOWS NT 4.0、WINDOWS CE、WINDOWS XP和WINDOWSVISTA,所有这些均由位于Redmond,Washington的微软公司出品;由位于Cupertino,California的苹果公司出品的MAC操作系统;由位于Armonk,New York的国际商业机器公司出品的OS/2;以及由位于Salt LakeCity,Utah的Caldera公司发布的可免费使用的操作系统或者任意类型和/或形式的Unix操作系统,以及其它。
计算装置100可以是任意工作站、台式计算机、膝上型或笔记本计算机、服务器、便携计算机、移动电话或者其他便携通信装置、媒体播放装置、游戏系统、移动计算装置、或者可以通信并具有执行此处所描述的操作的足够的处理器能力和存储容量的任意其它类型和/或形式的计算、通信或者媒体装置。例如,计算装置100可以包括CaliforniaCupertino的苹果公司出品的IPOD系列产品的一员,Japan Tokyo的索尼公司出品的PLAYSTATION 2、PLAYSTATION 3或者PERSONAL PLAYSTATIONPORTABLE(PSP),Japan Kyoto的任天堂公司出品的NINTENDO DS、NINTENDOGAMEBOY、NINTENDO GAMEBOY ADVANCED或者NINTENDO REVOLUTION,或者Washington Redmond的微软公司出品的XBOX、或者XBOX 360产品。
在一些实施例中,计算装置100可以具有和所述装置相容的不同的处理器、操作系统和输入装置。例如,在一个实施例中,计算装置100是由Palm公司出品的TREO 180、270、600、650、680、700p、700w/wx、750、755p、800w、Centro或者Pro智能电话。在一些这样的实施例中,TREO智能电话在PalmOS操作系统的控制下操作,并包括指示笔输入装置以及五向导航装置。
在其他实施例中,计算装置100是移动装置,诸如JAVA使能的蜂窝电话或者个人数字助手(PDA),诸如Illinios Schaumburg的摩托罗拉公司出品的i55sr、i58sr、i85s、i88s、i90c、i95cl、i335、i365、i570、i576、i580、i615、i760、i836、i850、i870、i880、i920、i930、ic502、ic602、ic902、i776或者im1100,Japan Kyoto的Kyocera出品的6035或者7135,或者Korea Seoul的三星电子公司出品的i300或者i330。在一些实施例中,计算装置100可以是芬兰的诺基亚公司或者SwedenLund的索尼爱立信移动通信AB出品的移动装置。
在其他实施例中,计算装置100是黑莓便携或者智能电话,诸如Research In Motion Limited出品的装置,包括Blackberry7100系列、8700系列、7700系列、7200系列、Blackberry7520或者BlackberryPEARL8100、8700系列、8800系列、Blackberry Storm、Blackberry Bold、Blackberry Curve 8900、Blackberry Pearl Flip。在又一些实施例中,计算装置100是智能电话、Pocket PC、Pocket PC电话或者其它支持微软Windows移动软件的便携移动装置。此外,计算装置100可以是任意工作站、台式计算机、膝上型或笔记本计算机、服务器、便携计算机、移动电话或者或者任意其它计算机、或者可以通信并具有执行此处所描述的操作的足够的处理器能力和存储容量的任意其它形式的计算或通信装置。
在一些实施例中,计算装置100是数字音频播放器。在其中一个这样的实施例中,计算装置100是诸如California Cupertino的苹果公司出品的苹果IPOD、IPOD Youch、IPOD NANO、和IPOD SHUFFLE系列产品的数字音频播放器。在另一个这样的实施例中,数字音频播放器可以用作便携式媒体播放器并且用作大容量存储装置。在其他实施例中,计算装置100是诸如NJ Ridgefield Park的Samsung Electronics America出品的DigitalAudioPlayer Select MP3播放器或者IL Schaumburg的Motorola公司出品的Motorola m500或者m25数字音频播放器的数字音频播放器.在又一些实施例中,计算装置100是便携式媒体播放器,诸如Creative Technologies公司出品的MP3播放器的数字MP3系列、ZenVision W、Zen Vision系列,或者Zen便携媒体中心装置。在又一个实施例中,计算装置100是支持以下文件格式的便携媒体播放器或者数字音频播放器,该文件格式包括但不限于:MP3,WAV,M4A/AAC,保护WMA的AAC,AIFF,Audible音频书,Apple无损音频文件格式和.mov,.m4v,和.mp4 MPEG-4(H.264/MPEG-4 AVC)视频文件格式。
在一些实施例中,计算装置100包括装置的组合,诸如组合有数字音频播放器或者便携媒体播放器的移动电话。在其中一个这样的实施例中,计算装置100是组合数字音频播放器和移动电话的Motorola RAZR或者Motorala ROKR系列。在另一个这样的实施例中,计算装置100是California Cupertino的苹果公司出品的iPhone智能电话。
尽管总的称为桌面磁盘映像,本发明并不限于桌面磁盘映像,还包括诸如服务器磁盘映像的其他映像实施例。在用于中央管理桌面的环境中,多个客户机器102接收单个“黄金主盘”桌面磁盘映像的拷贝。在一个实施例中,桌面磁盘映像包括用来执行操作系统的文件-操作系统的映像。在另一个实施例中,桌面磁盘映像可以包括一组应用和自定义程序。在另一个实施例中,桌面磁盘映像表示用于用户的工作环境。在又一个实施例中,桌面磁盘映像还称为机器磁盘映像。在一些实施例中,当每个用户改变其工作环境时,客户机器102提供给用户的主桌面磁盘映像的拷贝随时间发展变化,从而不同于该主桌面磁盘映像。例如,由于修改设置、增加或者删除信息和安装新应用导致的变化可以在主桌面磁盘映像和其一个拷贝之间以及在一个拷贝和另一个拷贝之间产生区别。
现在参考图1D,描述用于维持用户的桌面磁盘映像的传统系统的一个实施例的框图。为了降低用于管理多个桌面的存储开销,典型的方法包括将每个用户的桌面环境表示为一组与通用基础磁盘映像180之间的区别,即识别至少一个用户请求的修改的增量文件。在一个实施例中,通用基础磁盘映像180表示初始映像,随后的拷贝从该初始映像演化而来的映像。通常例如在虚拟机器环境中支持该方法,诸如Citrix Systems公司出品的Citrix Provisioning Server或者Citrix XEN SERVER提供的虚拟机器环境或者VMWare公司出品的VMWare ESX提供的虚拟机器环境。为了说明这些环境中的存储需求,如果每个映像是10GB并且其中8GB源自通用磁盘映像,则用于10个用户的成本是8GB+10*2GB=28GB,而不是如果不使用增量文件时所需要的10*10GB=100GB。
在一个虚拟机器环境中,增量文件通常通过“写时拷贝”过程来产生。在另一个实施例中,使用基础磁盘映像180或者保存为文件的磁盘的表示来示例虚拟机器。其他技术包括将基础磁盘映像180提供为经由接附网络的存储设备访问的逻辑卷(volume)。在一个实施例中,当基于基础磁盘映像180执行的虚拟机器中运行的操作系统或者应用尝试写新的或者修改的数据到基础磁盘映像180时,这些改变可以自动拷贝到或者布置到次级或者“增量”磁盘182。在另一个实施例中,该实现过程使得一个基础磁盘映像180可以由多个虚拟机器使用。在另一个实施例中,对于多个桌面磁盘映像190,关于通用基础磁盘映像180的单独的定制随后可以被记录和并包括在和多个修改的桌面磁盘映像190的每一个对应的各个增量磁盘182中。在一些实施例中,基础磁盘映像180可以表示为基础磁盘映像180和至少一个增量磁盘映像,例如为单个逻辑单元。在一个实施例中,可以访问和/或控制逻辑单元的基础磁盘映像部分和每个增量磁盘映像部分,而不会影响其它部分。
在一个实施例中,虚拟机器可以包括四个级别:
级别0)用于虚拟化磁盘的容器180,例如文件或者文件集(诸如逻辑单元、虚拟硬盘驱动器映像或者磁盘分区),其可以用来示例虚拟机器;
级别1)块抽象184A,将物理磁盘表示到块抽象184A上执行的应用;
级别1a)一组增量块,用来支持‘写时拷贝’功能性。这些通常保存在第二容器182中;
级别2)文件系统抽象188,其例子是新技术文件系统(NTFS);以及
级别3)文件190,表示操作系统、应用和数据。
在虚拟机器环境的一个实施例中,使用标准的“写时拷贝”增量磁盘系统,根据已经改变的块来描述增量文件。在另一个实施例中,在增量磁盘182中保存表示对于块抽象184b的改变的多个增量文件。在另一个实施例中,增量磁盘系统根据已经改变的文件来描述增量文件。在又一个实施例中,包括增量文件的操作可以在块级、文件级或者在这两个级执行。
在一个实施例中,当应用补丁时,对于每个机器的改变可以大体相同,并且共享。在另一个实施例中,这些大体相同的改变被应用到且保持在基础磁盘映像上,而不是传送到每一个增量映像。然而,在另一个实施例中,如果基础磁盘映像180单独安装和修补(而不参考增量磁盘182)并且如果文件通过增量修改,则基础映像中的块的布置可以改变,使得增量不再精确识别对于用户所请求数据的修改。此处描述的方法和系统提供一种解决方法,用来更新取自通用基础磁盘映像的多个磁盘映像,而不会使增量文件无效。
现在参考图2,描述了用于更新取自通用基础磁盘映像202的多个磁盘映像的系统的一个实施例的框图。总的来说,该系统包括服务映像220,基础磁盘映像202,多个增量磁盘204的其中一个,修改的补丁或者通用集206,通用基础磁盘映像的拷贝202’、第二增量磁盘212、最终的磁盘映像214、和表示通用基础磁盘映像202的安装磁盘、修改的磁盘映像磁盘210和初始虚拟磁盘映像208。在一个实施例中,服务映像220提供计算环境,该计算环境可以读、写和建立增量映像,并且可以解释磁盘堆叠。在另一个实施例中,服务映像220是计算环境。在另一个实施例中,服务映像220是至少一个工具的集合。
在一个实施例中,服务映像220包括操作系统和工具集,该工具对数据进行操作。在另一个实施例中,服务映像220包括至少一个工具,用来控制磁盘映像,包括增量磁盘。在另一个实施例中,服务映像220包括至少一个工具,用来控制磁盘映像格式和增量文件格式之间的文件。在另一个实施例中,服务映像220在服务映像220提供的计算环境中安装一个或者多个基础磁盘映像202、基础磁盘映像的拷贝202’、修改的磁盘映像210和初始虚拟磁盘映像208。在又一个实施例中,计算环境是虚拟机器环境。在一些实施例中,虚拟机器的对应堆叠和兼容操作系统用在解释堆叠的服务映像220中。在其他实施例中,服务映像220可以从磁盘映像和增量文件读出和向其写入并且可以从磁盘映像和增量磁盘所使用的文件系统读出和向其写入。
在一个实施例中,服务映像220包括将来自增量磁盘204的增量文件应用到基础磁盘映像202的功能性,以产生包括基础磁盘映像的由增量文件修改的部分和基础磁盘映像的未修改的部分的初始虚拟磁盘映像208。在另一个实施例中,服务映像220包括将补丁206应用到基础磁盘映像的拷贝202’的功能性。在另一个实施例中,服务映像220包括用于确定将补丁206应用到基础磁盘映像202的和基础磁盘映像202的未修改的部分对应的部分的功能性。在又一个实施例中,服务映像220包括用于将来自增量磁盘204的增量文件应用到基础磁盘映像202的修补拷贝210的功能性。在一些实施例中,服务映像220包括用于识别在保存在所安装映像上的文件目录中列出的文件的工具。
在一些实施例中,计算装置100执行提供结合服务映像描述的功能性的工具。在其中一个这样的实施例中,该工具是所执行的软件应用。在另一个这样的实施例中,可以执行该工具来提供服务映像的功能性,而不需要执行服务映像。在另一个这样的实施例中,该工具包括用于将来自增量磁盘204的增量文件应用到基础磁盘映像202的功能性,来产生包括基础磁盘映像的由增量文件修改的部分和基础磁盘映像的未修改的部分的初始虚拟磁盘映像208。在另一个这样的实施例中,该工具包括将补丁206应用到基础磁盘映像的拷贝202’的功能性。在另一个这样的实施例中,该工具包括用于确定将补丁206应用到基础磁盘映像202的和基础磁盘映像202的未修改的部分对应的部分的功能性。在又一个这样的实施例中,该工具包括用于将来自增量磁盘204的增量文件应用到基础磁盘映像202的修补拷贝210的功能性。
在一个实施例中,基础磁盘映像202是计算装置200可以用其执行虚拟机器的映像。在另一个实施例中,基础磁盘映像202安装在服务映像220提供的计算环境中。在另一个实施例中,基础磁盘映像202不由服务映像220来安装。
在一个实施例中,基础磁盘映像202在合并过程中映像对于修改的磁盘映像磁盘210和初始虚拟磁盘映像208用作参考映像。在另一个实施例中,合并过程是经典的使用参考和两个修改的参考版本的“三路合并过程”。在另一个实施例中,合并过程产生第二增量映像212,包括来自修改组206的改变。在又一个实施例中,服务映像220提供的计算环境通过使用包括在服务映像220中工具中的一个来实现合并过程。
在一个实施例中,基础磁盘映像的拷贝202’是基础磁盘映像202的深拷贝。在另一个实施例中,深拷贝是基础磁盘拷贝202的完整拷贝。在另一个实施例中,服务映像220建立基础磁盘映像202中所有文件的拷贝,其称为基础磁盘映像202的深拷贝,相对于建立和基础磁盘映像相关的空的增量磁盘,其将保存随后由基础磁盘映像202的用户建立的任意增量文件,并且其可以称为基础磁盘映像202的浅拷贝。在又一个实施例中,相对于虚拟拷贝,深拷贝意味着真实物理拷贝。在又一个实施例中,虚拟拷贝是空的增量磁盘并且是原来的磁盘映像的参考。
在一个实施例中,修改的通用集206是对于基础磁盘映像202的补丁、升级或者其他修改。在另一个实施例中,修改的磁盘映像210是通过将修改集206应用到基础磁盘映像的拷贝202’产生的虚拟磁盘映像。在另一个实施例中,修改的磁盘映像210用作对于合并过程的输入。尽管本发明中描述的不同操作可以直接应用到修改的磁盘映像210,但这些操作还可以被应用或者修改来应用到补丁206上(或者修改的通用集)和用来产生修改的磁盘映像208的基础磁盘映像202的任意版本。
在一个实施例中,增量磁盘204保存多个磁盘映像的其中一个和基础磁盘映像202之间的一个或者多个区别的标识。在另一个实施例中,一个或者多个区别的每一个以块级维持或者处理。在另一个实施例中,增量磁盘204是多个增量磁盘的其中一个,其每一个包含至少一个增量块。在又一个实施例中,每个增量块识别对于用户或者应用所请求的基础磁盘映像202的修改;例如,增量磁盘204可以保存识别通过用户请求的定制程序的至少一个增量块。在一个实施例中,增量磁盘的内容以块级处理。在另一个实施例中,增量磁盘的内容以文件级抽象处理,例如即使该内容以块级保存。
在另一个实施例中,一个或者多个区别的每一个以文件级维持或者处理。在另一个实施例中,增量磁盘204是多个增量磁盘的其中一个,其每一个包括至少一个增量文件。又一个实施例中,每个增量文件识别对于用户或者应用所请求的基础磁盘映像202的修改;例如,增量磁盘204可以保存识别用户所请求的定制程序的至少一个增量文件。在又一个实施例中,增量磁盘的内容以文件级处理。在另一个实施例中,增量磁盘的内容以块级抽象处理,例如即使该内容以文件级保存。在另一个实施例中,每个增量文件包括至少一个增量块。在又一个实施例中,增量磁盘204是空的,指示在多个磁盘映像的其中一个和基础磁盘映像202之间不存在区别。
在一些实施例中,增量文件识别用户所请求的对于基础磁盘映像202的修改。在其中一个这样的实施例中,增量文件表示基础磁盘映像202的一个示例提供对其进行访问的应用或者操作系统的修改。在另一个这样的实施例中,增量文件表示对使用基础磁盘映像202示例的虚拟机器的修改。在其他实施例中,增量文件保存在增量磁盘204中。在其他实施例中,增量文件是增量磁盘204。
在一个实施例中,增量磁盘204等价于增量、增量文件或者增量磁盘映像。在一些实施例中,增量磁盘204和增量文件不等价。例如,在其中一个这样的实施例中,增量磁盘204包括多个增量文件的至少一个,每一个表示用户磁盘映像和基础磁盘映像之间的至少一个区别。在其他实施例中,此处描述的方法和系统可以应用到增量磁盘204或者增量磁盘204中的增量文件。在其他实施例中,增量磁盘204保存至少一个增量文件,每个增量文件表示用户磁盘映像和基础磁盘映像202之间的至少一个区别。在另一个实施例中,增量磁盘204保存多个增量文件,其每一个表示用户磁盘映像和基础磁盘映像202之间的至少一个区别。尽管本申请将增量文件文件的使用总地称为和此处描述的多个操作相关联的单元,但是诸如增量块或者增量磁盘的其他单元类型可以用来代替增量文件。
在一个实施例中,初始虚拟磁盘映像208表示通过将保存在多个增量磁盘204的其中一个中的至少一个增量文件应用到基础磁盘映像202的示例而形成的虚拟磁盘映像。在另一个实施例中,初始虚拟磁盘映像208表示基础磁盘映像202的示例上的至少一个增量文件的投影(projection)。在另一个实施例中,用户在正常使用基础磁盘映像202提供的计算环境期间建立该虚拟磁盘映像。在又一个实施例中,增量磁盘204开始是空的,并且当用户改变时例如使用写时拷贝过程将改变保存在增量磁盘204中。在一些实施例中,初始虚拟磁盘映像208是合并过程的输入。尽管本申请中描述的不同操作直接应用到初始虚拟磁盘映像208,但这些操作还可以被应用或者修改为应用到至少一个增量文件和可以建立初始虚拟磁盘映像208的基础磁盘映像202的任意版本上。
在一个实施例中,最终的磁盘映像214表示通过将来自第二增量映像212的至少一个文件应用到修改的磁盘映像210而形成的虚拟磁盘映像。在另一个实施例中,最终的磁盘映像214表示通过将补丁206应用到基础磁盘映像202而形成的映像,基础磁盘映像202已经具有应用到其的多个增量文件(例如来自增量磁盘204)的其中一个。在另一个实施例中,最终的磁盘映像214基本上类似于通过将补丁206应用到基础磁盘映像202所产生的映像,基础磁盘映像202已经具有应用到其的多个增量文件的其中一个。在又一个实施例中,最终的磁盘映像214基本上类似于通过将多个增量文件的其中一个应用到基础磁盘映像202所产生的映像,基础磁盘映像202已经具有应用到其的补丁206。
现在参考图3A,描述用于更新来自通用基础磁盘映像的多个磁盘映像的方法300的一个实施例的流程图。总的来说,该方法包括拷贝基础磁盘映像202来建立基础磁盘映像202的拷贝(302)。该方法包括使用补丁206来更新基础磁盘映像202的拷贝,以建立修补的映像(304)。该方法包括建立和修改的磁盘映像相关的第二增量磁盘映像212(306)。该方法包括将来自多个增量磁盘的其中一个的增量文件应用到基础磁盘映像202来建立初始虚拟磁盘映像208(308)。该方法包括选择性地将来自多个增量磁盘204的其中一个的增量文件拷贝到第二增量磁盘映像212中(310)。在一些实施例中,补丁206指的是应用到基础磁盘映像202的修改的通用集。
在一些实施例中,该方法包括使用在虚拟机器提供的操作系统中安装的工具集来示例服务映像220提供的虚拟机器。在其中一个这样的实施例中,该方法包括初始化服务映像220提供的计算环境。在另一个这样的实施例中,该方法包括初始化包括在服务映像220中的一个或者多个工具,用于执行合并过程。在另一个实施例中,该方法包括初始化一个或者多个工具用于执行写时拷贝特征。在又一个这样的实施例中,虚拟机器中的工具用来建立磁盘映像208、210和214。
现在参考图3A,并且更详细地,该方法包括拷贝基础磁盘映像来建立基础磁盘映像的拷贝(302)。在一个实施例中,执行深拷贝来建立基础磁盘映像202的拷贝202’。在另一个实施例中,服务映像220建立基础磁盘映像202的拷贝202’。在另一个实施例中,拷贝基础磁盘映像的操作包括建立第二增量磁盘映像212。在又一个实施例中,第二增量磁盘映像212在建立时开始是空的。在另一个实施例中,建立基础映像的虚拟拷贝,包括至少一个增量磁盘映像和对于基础磁盘映像202的参考。
该方法包括使用补丁206来更新基础磁盘映像202的拷贝,以建立修改的磁盘映像(304)。在一个实施例中,如下结合图3B的354的描述,将补丁206应用到基础磁盘映像202的拷贝202’。在另一个实施例中,补丁206是修改的通用集206。在另一个实施例中,更新拷贝202’导致建立修补的虚拟机器引擎210。在一个实施例中,建立修改的磁盘映像210产生作为基础磁盘映像的修补拷贝的磁盘映像。在另一个实施例中,来自修改的集206的文件应用到基础磁盘映像202的拷贝202’以建立修改的磁盘映像210。在又一个实施例中,建立修改的磁盘映像210不需要了解映像和增量文件中的文件系统或者块布局,也不需要了解增量文件或者映像文件格式。
在一个实施例中,建立最终的磁盘映像214,包括修改的磁盘映像210。在另一个实施例中,建立最终的磁盘映像214,包括修改的磁盘映像210和第二增量磁盘212。在另一个实施例中,建立最终的磁盘映像214作为修改的磁盘映像210上的第二增量磁盘212的投影。在一些实施例中,修改的磁盘映像210表示对于多个用户的新的通用基础映像。
建立和修改的磁盘映像相关的第二增量磁盘映像212(306)。在一个实施例中,建立空的第二增量磁盘映像212。在另一个实施例中,结合修改的磁盘映像210来建立增量磁盘映像212。在另一个实施例中,当建立最终的磁盘映像214时建立增量磁盘映像212。在又一个实施例中,独立于修改的磁盘映像210,建立第二增量磁盘212。在另一个实施例中,在建立第二增量磁盘212和修改的磁盘映像210之后,第二增量磁盘212和修改的磁盘映像210相关联。在一些实施例中,第二增量磁盘212为用户表示和原来的增量磁盘204相关联的新的增量磁盘。
将多个增量磁盘204的其中一个应用到基础磁盘映像202来产生初始虚拟磁盘映像208(308)。在一个实施例中,该方法包括将增量磁盘204中的增量文件应用到基础磁盘映像202来产生初始虚拟磁盘映像208,初始虚拟磁盘映像208包括基础磁盘映像202的由增量映像修改的部分和基础磁盘映像202的未修改的部分,如下结合图3B的352所更详细地描述的。在另一个实施例中,引导过程用来影响来自多个增量磁盘的其中一个的变化,导致建立初始虚拟磁盘映像208。
在一个实施例中,该方法包括将修改的磁盘映像210和初始虚拟磁盘映像208安装在虚拟机器服务映像中。在另一个实施例中,该方法包括除了修改的磁盘映像210和初始虚拟磁盘映像208之外,还安装基础磁盘映像202。在另一个实施例中,安装基础、修改的和初始虚拟磁盘映像为经典的“三路合并”做准备。在一些实施例中,“三路合并”包括原来的映像和两个改变集的合并。在又一个实施例中,使用双路合并,而不安装基础磁盘映像202作为参考。然而,在一些实施例中,双路合并比三路合并更低效并且不能检查一个映像中删除的文件和另一个映像中建立的文件之间的区别。
该方法包括选择性地将来自多个增量磁盘204的其中一个的增量文件拷贝到第二增量映像212中(310)。在一个实施例中,增量文件从初始虚拟磁盘208或者从增量磁盘204拷贝到和基础磁盘映像202的修补拷贝210相关的第二增量磁盘212。在另一个实施例中,文件或者块从以下至少一个写到最终的磁盘映像214中:初始虚拟磁盘映像208、修改的磁盘映像210、基础磁盘映像202;例如选择合并过程可以用来写到最终的磁盘映像214。在另一个实施例中,“写时拷贝”过程记录写到最终的磁盘映像214的文件或者块。在又一个实施例中,“写时拷贝”过程还记录修改的磁盘映像210和写到最终的磁盘映像214的文件或者块之间的区别。在又一个实施例中,“写时拷贝”过程将这些区别拷贝到第二增量磁盘212中。在一些实施例中,由来自增量磁盘204的增量文件来表示一些这样的区别。
在一个实施例中,“写时拷贝”过程用来将来自增量磁盘204的增量文件选择性拷贝到第二增量映像212。在另一个实施例中,选择性拷贝增量文件避免了拷贝影响基础磁盘映像的和基础磁盘映像的修补部分对应的部分的任意增量文件。在另一个实施例中,该方法包括确定不拷贝影响基础磁盘映像的和基础磁盘映像的修补部分对应的部分的一个或者多个增量文件。在又一个实施例中,可以应用规则来确定是否和如何拷贝对应于基础磁盘映像的修补部分的增量文件。
在一个实施例中,增量文件被拷贝到第二增量磁盘映像212,用于应用到基础磁盘映像202的修补拷贝210。在另一个实施例中,将来自第二增量磁盘映像212的增量文件应用到基础磁盘映像的修补拷贝。在又一个实施例中,来自第二增量磁盘映像212的增量文件可以顺序(即,一次一个增量文件)或者同时(例如,作为文件集合或者单个合并的文件)应用到基础磁盘映像的修补拷贝。
在一些实施例中,该方法包括检查初始虚拟磁盘映像208来发现处于多个增量映像204的其中一个中并且不在基础磁盘映像202中的文件。在其中一个这样的实施例中,该方法包括确定增量磁盘204中的增量文件不影响和基础磁盘映像202的修补部分相对应的基础磁盘映像202的部分。在另一个这样的实施例中,检查初始虚拟磁盘映像208包括确定该补丁应用到基础磁盘映像202的和基础磁盘映像202的未修改的部分对应的部分,如下结合图3B的356所描述的。在另一个这样的实施例中,该方法包括经由合并过程确定该补丁应用到基础磁盘映像202的和基础磁盘映像202的未修改的部分对应的部分。例如,合并过程可以是三路合并过程。在又一个这样的实施例中,该方法包括将增量磁盘204中的增量文件应用到基础磁盘映像202的修补拷贝,如下结合图3B的358所描述的。在此实施例中,该补丁206不和增量文件相冲突。
现在参考图3B,描述用于更新来自通用基础磁盘映像的多个磁盘映像的方法350的一个实施例的流程图。该方法包括将增量文件应用到基础磁盘映像来产生初始虚拟磁盘映像,该初始虚拟磁盘映像包括基础磁盘映像的由增量文件修改的部分和基础磁盘映像的未修改的部分(352)。该方法包括应用补丁到基础磁盘映像的拷贝(354)。该方法包括确定该补丁应用到基础磁盘映像的和基础磁盘映像的未修改的部分对应的部分(356)。该方法包括应用增量文件到基础磁盘映像的修补拷贝(358)。
将增量文件应用到基础磁盘映像来产生虚拟磁盘映像,该虚拟磁盘映像包括基础磁盘映像的由增量文件修改的部分和基础磁盘映像的未修改的部分(352)。在一个实施例中,来自增量磁盘204的增量文件应用到基础磁盘映像202以产生初始虚拟磁盘映像208。在另一个实施例中,初始虚拟磁盘映像208包括i)基础磁盘映像202的由增量文件修改的部分ii)基础磁盘映像202的未由增量文件修改的部分。
将补丁应用到基础磁盘映像的拷贝(354)。在一个实施例中,将补丁206应用到基础磁盘映像202的拷贝202’。在另一个实施例中,补丁更新包括安装基础磁盘映像202作为服务映像220提供的计算环境中的磁盘,并且应用来自基础磁盘映像202可用的操作系统中的补丁206。在另一个实施例中,使用引导过程来影响产生修补映像的更新。
该方法包括确定该补丁应用到基础磁盘映像的和基础磁盘映像的未修改的部分对应的部分(356)。在一个实施例中,该方法包括确定来自增量磁盘204的文件是否识别将影响基础磁盘映像202的和基础磁盘映像的修补部分对应的部分的修改。在另一个实施例中,该方法包括确定补丁206应用到基础磁盘映像的和基础磁盘映像的未修改的部分对应的部分还是由增量文件修改的部分。在另一个这样的实施例中,该方法包括将来自增量磁盘204的至少一个增量文件应用到基础磁盘映像202的修补拷贝。在此实施例中,因为该确定指示在补丁识别的修改和增量文件识别的修改之间不存在冲突,所以允许增量磁盘204来修改修补的基础磁盘映像202。在另一个这样的实施例中,该方法包括响应于该确定,将增量磁盘204的至少一个增量文件拷贝到第二增量磁盘212中。
在一个实施例中,该方法包括响应于确定将补丁206应用到基础磁盘映像的和基础磁盘映像202的修改部分对应的部分,确定不将来自增量磁盘204的至少一个增量文件应用到基础磁盘映像202的修补拷贝。在此实施例中,应用该补丁206优先于应用由至少一个增量文件识别的修改。在另一个实施例中,响应于该确定并且为了避免补丁和至少一个增量文件之间的潜在冲突,增量磁盘204的增量文件不拷贝到第二增量磁盘映像212。
在一个实施例中,服务映像220中的工具可以执行任意这样的确定。在另一个实施例中,通过将修改的磁盘映像210与基础磁盘映像202和初始虚拟磁盘映像208相比较,来确定补丁是否会影响由增量磁盘204中的文件修改的基础磁盘映像208的部分。在另一个实施例中,基于可以包括文件修改次数的文件修改记录来做出该确定。
在一个实施例中,无需安装基础磁盘映像202,做出该确定。在另一个实施例中,通过执行文件内容或者属性的深入比较来做出该确定。在又一个实施例中,通过将增量磁盘204或者增量文件和初始虚拟磁盘映像208相比较来做出该确定。
在一个实施例中,磁盘的一部分可以以块级量化为块并且应用相关操作。在另一个实施例中,磁盘的一部分可以以文件级量化为文件,并且相关操作以文件级应用。在另一个实施例中,本申请中描述的一些步骤可以以文件级操作,而其它步骤可以以块级操作。在又一个实施例中,本申请中描述的一些步骤可以以文件级或者块级操作。
在一个实施例中,并且关于注册表文件,通过在键值级(key level)而不是文件级评估修补磁盘映像210来确定是否应用增量文件到磁盘映像202的修补拷贝210。在另一个实施例中,确定该补丁206应用到基础磁盘映像202的和基础磁盘映像的修改部分对应的部分中的注册表键值。在另一个实施例中,确定是否在注册表键值级应用由增量文件识别的修改到基础磁盘映像的和基础磁盘映像的修改部分相对应的修补拷贝的部分。在另一个实施例中,注册表文件处理为包含大量项目的迷你文件系统,每个项目类似于一个文件。例如,在合并两个拷贝中,二者已经修改不同的项目,可以建立包含这些改变的合并拷贝。两个拷贝可以包括具有所应用的补丁206的注册表文件的拷贝,和具有所应用的增量磁盘204的注册表文件的拷贝;如果在两个拷贝中改变同样的项目,则在确定谁保持或者如何合并文件中可使用时间戳或者试探法。在另一个实施例中,可以执行注册表键值的合并过程,诸如三路合并过程。例如,三路合并可以具有作为输入的:原来的注册表文件、具有应用的补丁206的注册表文件的拷贝,和具有来自所应用的增量磁盘204的增量文件的注册表文件的拷贝。在另一个实施例中,响应于该确定,增量文件不拷贝到和基础磁盘映像的修补拷贝相关联的第二增量磁盘映像212。
在一个实施例中,确定将补丁应用到和基础磁盘映像的未由增量文件修改的部分对应的基础磁盘映像202中的注册表键值。在另一个实施例中,因为在由增量文件识别的修改(对于基础磁盘映像的修改部分)和基础磁盘映像的由补丁修改的部分(对于基础磁盘映像的未修改的部分)之间不存在冲突,所以在键值级将由增量文件识别的修改应用到基础磁盘映像的修补拷贝。在此实施例中,增量文件不和补丁206相冲突。在另一个实施例中,响应于该确定,增量文件被拷贝到和基础磁盘映像的修补拷贝相关联的第二增量磁盘映像212.
在一个实施例中,该方法包括确定将补丁应用到基础磁盘映像的和基础磁盘映像的修改部分相对应的注册表部分并且在键值级将增量文件应用到基础磁盘映像的修补拷贝。在此实施例中,允许增量文件来修改基础磁盘映像的修补拷贝,而不管由补丁的修改和由增量文件的修改之间的潜在冲突。在另一个实施例中,响应于该确定,将增量文件拷贝到和基础磁盘映像的修补拷贝相关联的第二增量磁盘映像212。
在一个实施例中,该方法包括以下步骤:确定将补丁应用到基础磁盘映像的和基础磁盘映像的修改部分对应的注册表部分,和确定不应用增量文件到基础磁盘映像的修补拷贝。在此实施例中,该补丁206优先于该增量文件。在另一个实施例中,响应于该确定,不将增量文件拷贝到和基础磁盘映像的修补拷贝相关联的第二增量磁盘映像212。
在一些实施例中,上述方法可以应用到数据库或者日志文件。数据库文件包括许多项目并且在一些实施例中可以以上述结合注册表文件描述的方式来合并。日志文件包括项目的列表,每个具有时间戳并且按时间顺序抽取。可以通过聚集并且重新分类该项目来合并两个这样的文件。例如并且在一个实施例中,该方法包括确定将补丁应用到基础磁盘映像的和基础磁盘映像的修改部分对应的数据库或者日志文件部分,并且使用时间戳和/或试探法将增量文件合并到基础磁盘映像的和基础磁盘映像的修改部分对应的修补拷贝的部分。在另一个实施例中,可以执行数据库或者日志文件的三路合并。在另一个实施例中,不将增量文件拷贝到和基础磁盘映像的修补拷贝相关联的第二增量磁盘映像212。
在一个实施例中,该方法包括确定将补丁应用到基础磁盘映像的和基础磁盘映像的未修改的部分对应的数据库或者日志文件部分,并且将增量文件应用到基础磁盘映像的修补拷贝。在此实施例中,增量文件不和补丁206相冲突。在另一个实施例中,响应于该确定,将增量文件拷贝到和基础磁盘映像的修补拷贝相关联的第二增量磁盘映像212。
在一个实施例中,该方法包括确定将补丁应用到基础磁盘映像的和基础磁盘映像的修改部分对应的数据库或者日志文件部分,并且将增量文件应用到基础磁盘映像的修补拷贝。在此实施例中,允许增量文件来修改基础磁盘映像的修补拷贝。在另一个实施例中,响应于该确定,将增量文件拷贝到和基础磁盘映像的修补拷贝相关联的第二增量磁盘映像212。
在一个实施例中,该方法包括确定将补丁应用到基础磁盘映像的和基础磁盘映像的修改部分对应的数据库或者日志文件部分,并且确定不将增量文件应用到基础磁盘映像的修补拷贝。在此实施例中,补丁206优先于增量文件。在另一个实施例中,响应于该确定,不将增量文件拷贝到和基础磁盘映像的修补拷贝相关联的第二增量磁盘映像212。
在一些这样的实施例中,使用规则引擎来解决文件级冲突。文件级冲突可以发生在基础磁盘映像202中的文件由于补丁206和增量磁盘映像204而改变时。在一个实施例中,该规则指示来自补丁206或者增量磁盘映像204的改变是否应该获得优先,或者是否需要特定的合并操作。例如,规则可以是文件的通配符列表的形式,其应该优先于其他修改:
C:/Windows/System32/<any>:D″wins″
<any>/NTUser.Dat:使用Registry_merge技术来合并
在一个实施例中,规则引擎确定是否拷贝增量文件到第二增量映像212。在另一个实施例中,规则引擎结合三路合并过程来操作或者使用。在另一个实施例中,管理员可以指定规则。在又一个实施例中,机器可以基于任意算法、指南、方程或者任意历史和/或统计数据来产生规则。
在一些实施例中,以下列表包括与文件级冲突相关联使用的规则或者命令的例子。在一个实施例中,文件级冲突可以发生在对于修改的磁盘映像210中的文件的改变不同于应用到初始虚拟磁盘映像208中的对应文件的改变时。在另一个实施例中,这些规则或命令的一个或者多个和规则引擎相关联。在一些实施例中,以下列表包括和以下一个或者多个相关联使用的规则或者命令的例子:注册表键值、日志文件和数据库文件。
在一些实施例中,响应于文件级冲突来应用规则。在其他实施例中,规则引擎包括用于初始化规则引擎中的规则的命令。在其他实施例中,规则引擎包括用于将规则增加到规则引擎中的命令。在其中一个这样的实施例中,响应于执行每一个这样的命令来产生一个或者多个规则。在另一个这样的实施例中,规则引擎包括可以响应于文件级冲突来应用的一个或者多个规则。例如,在另一个这样的实施例中,如果基础磁盘映像202具有文件X并且该文件在第一和第二映像中删除,则这可以不认为是文件级冲突。然而如果X在初始虚拟磁盘映像208中修改并且在修改的磁盘映像210中删除,则这可以认为是文件级冲突。
在一些实施例中,命令或者规则可以具有多个变元。在其中一个这样的实施例中,命令的第一变元识别受到规则影响的一个或者多个文件或者注册表键值。第一变元可以识别一个或者多个注册表键值、日志文件、数据库文件、其他类型的文件或者不同类型文件的集合。在另一个这样的实施例中,命令的第一变元包括以下一个或者多个:目录路径描述、文件名、用于目录、文件或者路径名称的模式匹配串。在一些这样的实施例中,第二变元描述规则的动作。在另一个这样的实施例中,第二变元描述所识别的一个或者多个文件上的动作。在又一个这样的实施例中,第三变元包括例如来自管理员的描述或者注释。在另一个这样的实施例中,第三变元是可选的。
在一些实施例中,第二变元可以是以下至少一个:HandleBy.copy,HandleBy.ignore,HandleBy.registryMerge。在其中一个这样的实施例中,动作“HandleBy.copy”指示系统将来自增量磁盘204的对应的增量文件拷贝到第二增量磁盘212。在另一个这样的实施例中,动作“HandleBy.copy”指示系统将来自初始虚拟磁盘映像208的对应的增量文件拷贝到第二增量磁盘212。在此实施例中,该规则可以确定来自增量文件的改变优先于来自补丁206的改变。在另一个这样的实施例中,动作“HandleBy.ignore”指示系统不拷贝对应的增量文件或者增量改变到第二增量磁盘212。在此实施例中,该规则可以确定来自补丁206的改变优先于由增量文件识别的改变。在另一个这样的实施例中,动作“HandleBy.registryMerge”指示系统来执行合并过程,用于由规则识别的注册表文件。在又一个这样的实施例中,特定的动作仅应用到一种类型的文件。例如,在其中一个这样的实施例中,HandleBy.registryMerge可以仅应用到注册表键值。
作为例子并且在一个实施例中,示出以下命令:rules.Add(″\windows\security\*″,HandleBy.ignore,″security″);当其执行时,增加规则到规则引擎。在此例子中,规则应用到匹配由“\windows\security\*”指定的搜索补丁的文件,包括任意子目录。在另一个实施例中,该动作指示系统忽略由增量文件进行的改变并且从而不拷贝增量文件到第二增量磁盘212中。在另一个实施例中,管理员增加注释(“security”)到规则,指示该规则应用到安全文件。
在一个实施例中,HandleBy.copy和HandleBy.ignore属于多个基本规则。在另一个实施例中,HandleBy.registryMerge是多个次级规则的其中一个。在另一个实施例中,HandleBy.copy,HandleBy.ignore和HandleBy.registryMerge可以是基本或者次级规则。在一个实施例中,通过实验、分析或者其它方式,可以确定一个或者多个这样的规则,来以优选的方式处理特定的文件或者注册表键值,或者来满足特定性能标准、服务质量或者用户体验的标准。可以理解样本规则的以下列表用于说明而非限制:
rules.Add(″\pagefile.sys″,HandleBy.ignore);
rules.Add(″\windows\schedlgu.txt″,HandleBy.copy);
rules.Add(″\windows\oewablog.txt″,HandleBy.ignore);
rules.Add(″\windows\debug\oakley.log″,HandleBy.copy,″from experiments″);
rules.Add(″\windows\debug\oakley.log.sav″,HandleBy.copy,″from experiments″);
rules.Add(″\windows\debug\usermode\userenv.log″,HandleBy.copy);
rules.Add(″\windows\prefetch\layout.ini″,HandleBy.ignore);
rules.Add(″\windows\prefetch\*.pf″,HandleBy.ignore);
rules.Add(″\windows\softwaredistribution\datastore\datastore.edb″,HandleBy.copy);
rules.Add(″\windows\softwaredistribution\datastore\logs\*″,HandleBy.copy);
rules.Add(″\windows\windowsupdate.log″,HandleBy.ignore);
rules.Add(″\system volume information\_restore*″,HandleBy.ignore,″guess″);
rules.Add(″\system volume information\*″,HandleBy.ignore,″guess″);
rules.Add(″\windows\security\edb.chk″,HandleBy.copy,″from experiments″);
rules.Add(″\windows\security\edb.log″,HandleBy.copy,″from experiments″);
rules.Add(″\windows\system32\catroot2\*″,HandleBy.copy,″guess″);
rules.Add(″\windows\security\*″,HandleBy.ignore,″security TODO″);
rules.Add(″\windows\system32\perfc009.dat″,HandleBy.ignore);
rules.Add(″\windows\system32\perfh009.dat″,HandleBy.ignore);
rules.Add(″\windows\system32\perfstringbackup.ini″,HandleBy.ignore,″perf counterbackup″);
rules.Add(″\windows\system32\fntcache.dat″,HandleBy.ignore,″font cache″);
rules.Add(″\windows\system32\wpa.dbl″,HandleBy.copy,″windows activation″);
rules.Add(″\windows\system32\config\*.evt″,HandleBy.ignore);
rules.Add(″\windows\system32\config\default″,HandleBy.registryMerge);
rules.Add(″\windows\system32\config\sam″,HandleBy.registryMerge);
rules.Add(″\windows\system32\config\security″,HandleBy.registryMerge);
rules.Add(″\windows\system32\config\software″,HandleBy.registryMerge);
rules.Add(″\windows\system32\config\system″,HandleBy.registryMerge);
rules.Add(″\windows\system32\config\default.log″,HandleBy.ignore);
rules.Add(″\windows\system32\config\sam.log″,HandleBy.ignore);
rules.Add(″\windows\system32\config\security.log″,HandleBy.ignore);
rules.Add(″\windows\system32\config\software.log″,HandleBy.ignore);
rules.Add(″\windows\system32\config\system.log″,HandleBy.ignore);
rules.Add(″\windows\system32\config\newsid backup\*″,HandleBy.copy);
rules.Add(″\windows\system32\config\systemprofile\ntuser.dat″,HandleBy.registryMerge);
rules.Add(″\windows\system32\config\systemprofile\ntuser.dat.log″,HandleBy.registryMerge);
rules.Add(″\windows\system32\config\systemprofile\local settings\temporary internetfiles\content.ie5\index.dat″,HandleBy.ignore);
rules.Add(″\windows\system32\config\systemprofile\localsettings\history\history.ie5\index.dat″,HandleBy.ignore);
rules.Add(″\windows\system32\wbem\logs\*.log″,HandleBy.ignore);
rules.Add(″\windows\system32\wbem\repository\fs″,HandleBy.wmiMerge);
rules.Add(″\documents and settings\″+BaseAdminAccount,HandleBy.ignore);
rules.Add(″\documents and settings\*\ntuser.dat″,HandleBy.registryMerge);
rules.Add(″\documents and settings\*\ntuser.dat.log″,HandleBy.ignore);
rules.Add(″\documents and settings\*\local settings\applicationdata\microsoft\windows\usrclass.dat″,HandleBy.registryMerge);
rules.Add(″\documents and settings\*\local settings\applicationdata\microsoft\windows\usrclass.dat.log″,HandleBy.ignore);
rules.Add(″\documents and settings\*\startmenu\programs\accessories\entertainment\windows media player.lnk″,HandleBy.copy);
rules.Add(″\Microsoft\WindowsNT\CurrentVersion\Winlogon\Notify\WgaLogon\Settings\Data″,HandleBy.copy);
rules.Add(″\Microsoft\WZCSVC\Parameters\Interfaces\ActiveSettin gs″,HandleBy.copy);
rules.Add(″\Microsoft\Windows NT\CurrentVersion\Prefrtcher\StartTime″,HandleBy.ignore);
rules.Add(″\Microsoft\Windows NT\CurrentVersion\Prefetcher\TracesProcessed″,HandleBy.ignore);
rules.Add(″\Microsoft\Windows NT\CurrentVersion\Prefacher\TracesSuccessful″,HandleBy.ignore);
rules.Add(″\Micrpsoft\Windows NT\CurrentVersion\Prefetcher\ExitTime″,HandleBy.ignore);
rules.Add(″\Microsoft\DirectDraw\MostRecentApplication\ID″,HandleBy.ignore);
rules.Add(″\Microsoft\Windows NT\CurrentVersion\Prefetcher\ExitTime″,HandleBy.ignore);
rules.Add(″\Microsoft\Windows NT\CurrentVersion\ProfileList\*\ProfileLoadTimeLow″,HandleBy.ignore);
rules.Add(″\Microsoft\Windows NT\CurrentVersion\ProfileList\*\ProfileLoadTimeHigh″,HandleBy.ignore);
rules.Add(″\Microsoft\WindowsNT\CurrentVersion\Winlogon\Notify\WgaLogon\Settings\Data″,HandleBy.copy);
rules.Add(″\ControlSet*\Control\Lsa\SspiCache\Time″,HandleBy.ignore);
rules.Add(″\ControlSet*\Control\Print\Providers\LogonTime″,HandleBy.ignore);
rules.Add(″\ControlSet*\Control\Watchdog\Display\ShutdownCount″,HandleBy.ignore);
rules.Add(″\ControlSet*\Control\Windows\ShutdownTime″,HandleBy.ignore);
rules.Add(″\Microsoft\Rpc\UuidSequenceNumber″,HandleBy.copy);
rules.Add(″\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\AppData″,HandleBy.copy);
rules.Add(″\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cookies″,HandleBy.copy);
rules.Add(″\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache″,HandleBy.copy);
rules.Add(″\Classes\ftp\DefaultIcon\″,HandleBy.copy,″user installed alt browser″);
rules.Add(″\Classes\ftp\shell\open\command\″,HandleBy.copy,″user installed alt browser″);
rules.Add(″\Classes\http\shell\open\command\″,HandleBy.copy,″user installed alt browser″);
rules.Add(″\Classes\https\shell\open\command\″,HandleBy.copy,″user installed altbrowser″);
rules.Add(″\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Extension-List\*\StartTimeLo″,HandleBy.ignore);
rules.Add(″\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Extension-List\*\StartTimeHi″,HandleBy.ignore);
rules.Add(″\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Extension-List\*\EndTimeLo″,HandleBy.ignore);
rules.Add(″\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Extension-List\*\EndTimeHi″,HandleBy.ignore);
rules.Add(″\Microsoft\Windows\CurrentVersion\Group Policy\State\*\Extension-List\*\StartTimeLo″,HandleBy.copy);
rules.Add(″\Microsoft\Windows\CurrentVersion\Group Policy\State\*\Extension-List\*\StartTimeHi″,HandleBy.copy);
rules.Add(″\Microsoft\Windows\CurrentVersion\Group Policy\State\*\Extension-List\*\EndTimeLo″,HandleBy.copy);
rules.Add(″\Microsoft\Windows\CurrentVersion\Group Policy\State\*\Extension-List\*\EndTimeHi″,HandleBy.copy);
rules.Add(″\Microsoft\Windows\CurrentVersion\Internet Settings\Cache\Paths\Directory″,HandleBy.copy);
rules.Add(″\Microsoft\Windows\CurrentVersion\InternetSettings\Cache\Paths\path1\CachePath″,HandleBy.copy);
rules.Add(″\Microsoft\Windows\CurrentVersion\InternetSettings\Cache\Paths\path2\CachePath″,HandleBy.copy);
rules.Add(″\Microsoft\Windows\CurrentVersion\InternetSettings\Cache\Paths\path3\CachePath″,HandleBy.copy);
rules.Add(″\Microsoft\Windows\CurrentVersion\InternetSettings\Cache\Paths\path4\CachePath″,HandleBy.copy);
rules.Add(″\ControlSet*\Services\Tcpip\Parameters\Interfaces\*\LeaseObtainedTime″,HandleBy.copy);
rules.Add(″\ControlSet*\Services\Tcpip\Parameters\Interfaces\*\T1″,HandleBy.copy);
rules.Add(″\ControlSet*\Services\Tcpip\Parameters\Interfaces\*\T2″,HandleBy.copy);
rules.Add(″\ControlSet*\Services\Tcpip\Parameters\Interfaces\*\LeaseTerminatesTime″,HandleBy.copy);
rules.Add(″\ControlSet*\Services\*\Parameters\Tcpip\LeaseObtainedTime″,HandleBy.copy);
rules.Add(″\ControlSet*\Service\*\Parameters\Tcpip\T1″,HandleBy.copy);
rules.Add(″\ControlSet*\Services\*\Parameters\Tcpip\T2″,HandleBy.copy);
rules.Add(″\ControlSet*\Services\*\Parameters\Tcpip\LeaseTerminatesTime″,HandleBy.copy);
rules.Add(″\ControlSet*\Services\*\parameters\Guid″,HandleBy.copy);
rules.Add(″\ControlSet*\Services\SharedAccess\Epoch\Epoch″,HandleBy.copy);
rules.Add(″\Microsoft\Cryptography\RNG\Seed″,HandleBy.copy);
rules.Add(″\Microsoft\Windows NT\CurrentVersion\LastFontSweep\LastSweepTime″,HandleBy.copy);
rules.Add(″\Microsoft\SystemCertificates\AuthRoot\Certificates\*\Blob″,HandleBy.copy);
rules.Add(″\Microsoft\SystemCertificates\CA\Certificates\*\Blob″,HandleBy.copy);
rules.Add(″\SAM\Domains\Account\Users\*\F″,HandleBy.copy);
rules.Add(″\Classes\*\shell\open\command\″,HandleBy.copy);
rules.Add(″\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\AppData″,HandleBy.ignore);
rules.Add(″\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cookies″,HandleBy.ignore);
rules.Add(″\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cache″,HandleBy.ignore);
rules.Add(″\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\History″,HandleBy.ignore);
rules.Add(″\Software\Microsoft\Windows\CurrentVersion\InternetSettings\Connections\SavedLegacySettings″,HandleBy.ignore);
rules.Add(″\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\*\*″,HandleBy.ignore);
rules.Add(″\ControlSet*\Services\*\Performance\*″,HandleBy.ignore);
rules.Add(″\ControlSet*\Services\Eventlog\System\Sources″,HandleBy.ignore);
rules.Add(″\ControlSet*\Services\Tcpip\Performance.WbemAdapFileSignature″,HandleBy.ignore);
rulesAdd(″\Microsoft\WBEM\CIMOM\LastFullDredgeTimestamp″,HandleBy.copy);
rulesAdd(″\Microsoft\WBEM\PROVIDERS\Performance\Performance Data″,HandleBy.ignore);
rules.Add(″\ControlSet*\Services\Tcpip\Performance.WbemAdapFileSize″,HandleBy.ignore);
rules.Add(″\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\History″,HandleBy.copy);
rules.Add(″\Software\Microsoft\Windows\CurrentVersion\InternetSettings\Connections\SavedLegacySettings″,HandleBy.copy);
rules.Add(″\Microsoft\Cryptography\RNG.Seed\″,HandleBy.copy);
rules.Add(″\Microsoft\DirectDraw\MostRecentApplication\ID″,HandleBy.copy);
rules.Add(″\Microsoft\PCHealth\PchSvc\DataCollection″,HandleBy.copy);
rules.Add(″\Microsoft\Windows NT\CurrentVersion\LicenseInfo″,HandleBy.copy);
rules.Add(″\ControlSet*\Control\Session Manage\AppCompatibility\AppCompatCache″,HandleBy.copy);
rules.Add(″\ControlSet*\Control\Session Manager\MemoryManagement\Pre\PtchParameters\VideoInitTime″,HandleBy.copy);
rules.Add(″\ControlSet*\Control\Session Manager\Power\AcPolicy″,HandleBy.copy);
rules.Add(″\ControlSet*\Control\Session Manager\Power\DcPolicy″,HandleBy.copy);
rules.Add(″\ControlSet*\Services\Dhcp\Parameters\*″,HandleBy.copy);
rules.Add(″\ControlSet*\Services\Tcpip\Parameters\Interfaces\*\DhcpIPAddress″,HandleBy.copy);
rules.Add(″\ControlSet*\Services\*\Parameters\Tcpip\DhcpIPAddress″,HandleBy.copy
在一些实施例中,工具(例如,服务映像220提供的工具)分析基础磁盘映像、第一磁盘映像210和初始虚拟磁盘映像208的部分来确定如何解决冲突。在其中一个这样的实施例中,工具访问对操作的改变的映射来确定如何解决冲突。在另一个这样的实施例中,该映射具有以下形式,上述形式仅是例子并且不限于此,:
在一些实施例中,由规则或者规则引擎来确定操作。在其他实施例中,一个或者多个拷贝和合并操作是如上结合不同文件类型描述的操作。在一个实施例中,该方法包括第一扫描来确定对应于基础磁盘映像202的改变。在另一个实施例中,该方法包括第一扫描来确定对应于权威参考映像的改变。在另一个实施例中,关于这些改变的信息被高速缓存或者保存以对应于其他用户的随后的增量映像来使用。
该方法包括应用增量文件到基础磁盘映像的修补拷贝(358)。在一个实施例中,该方法包括经由三路合并过程将增量磁盘204应用到基础磁盘映像的修补拷贝。在另一个实施例中,该方法包括响应于该确定,将增量磁盘204的一个或者多个增量文件拷贝到第二增量磁盘映像212中。在另一个实施例中,第二增量磁盘映像212和基础磁盘映像的修补拷贝210相关联。
在一个实施例中,作为将第二增量磁盘映像212应用到修改的磁盘映像的结果,对应于多个增量磁盘204的其中一个的最终的虚拟磁盘映像214包括来自补丁206和增量磁盘204的改变。获取该结果,如同补丁206已经直接应用到带有修改的基础磁盘映像202上,其中由已经应用到基础磁盘映像202上的增量磁盘204中的文件识别该修改。
在另一个实施例中,由于每个事件都会在一个“服务”映像操作系统中运行,所以在应用来自增量磁盘212的文件之后,不需要启动每个映像。在另一个实施例中,引导过程用在服务映像220提供的计算环境中的操作系统上,随后将磁盘安装到计算环境。尽管正常来说不必须重新启动操作系统就可完成上述操作,但是虚拟机器系统的一些实施例可以实现重新启动每组磁盘。在一些实施例中,当出现此情况时,初始化服务映像220,并且通过降低服务映像220的尺寸和复杂性,这会比“正常”启动要快。
在一个实施例中,该方法包括在第一次扫描期间高速缓存关于基础磁盘映像202和修改的磁盘映像210中的文件的信息,其对于其他随后的增量磁盘204消除了该步骤。在另一个实施例中,该方法包括当已经建立第二增量映像集合时,抛弃原来的基础磁盘映像202和所有的多个增量映像。
在一个实施例中,和用修改的通用集更新来自通用基础磁盘映像和多个增量映像的多个磁盘映像的典型的现有方法相比,应用该方法导致更少的整体处理和存储开销。
在另一个实施例中,该方法处理磁盘映像,该磁盘映像支持多个增量文件或者“链式增量”。该方法包括下列步骤:识别对于多个增量磁盘通用的文件,但不在基础磁盘映像202中,并且重新建立增量文件的更复杂的布置以将这样的通用文件置于共享的中间映像中。
在一些实施例中,该方法包括:对于多个增量映像的每一个,将修改或者补丁206的集合应用到基础磁盘映像202,该基础磁盘映像202已经具有应用到其上的增量磁盘映像204,生成权威参考映像。在一些这样的实施例中,这称为“保守性基础重置(conservative rebasing)”。在一个实施例中,该方法包括将补丁应用到初始虚拟磁盘映像208.在另一个实施例中,该方法包括将补丁应用到初始虚拟磁盘映像208的拷贝来建立权威参考映像。在另一个实施例中,该方法包括确定将该补丁应用到初始虚拟磁盘映像208的和由增量文件修改的基础磁盘映像的部分对应的拷贝部分并且确定将基础磁盘映像的修补拷贝中的补丁应用到基础磁盘映像的未被增量文件修改的部分。在又一个实施例中,该方法包括将增量文件应用到基础磁盘映像的修补拷贝。
在一个实施例中,该方法包括响应于该确定,将增量文件拷贝到第二增量磁盘映像212。在另一个实施例中,该方法包括将增量文件应用到基础磁盘映像的修补拷贝。在一些实施例中,该方法包括应用在映射中识别的规则,诸如在以下形式的表格中识别的规则:
在一些实施例中,如上结合图3A和图3B所描述的,由规则引擎来识别该操作。在其他实施例中,如上结合图3A和图3B来描述一个或者多个拷贝和合并操作。在一个实施例中,第一扫描确定改变并且将该信息高速缓存或者保存用于以对应于其他用户的随后的增量映像来使用。
在一个实施例中,关于多个增量磁盘映像的每一个,应用保守垫底。在另一个实施例中,将保守垫底选择性地应用到多个增量磁盘映像中的一些增量磁盘映像中。在另一个实施例中,关于第一增量磁盘映像应用保守垫底,以确定是否将保守垫底应用到第二增量磁盘映像。例如,优选地,使用保守垫底来产生和特定补丁206或者对于基础磁盘映像的特定部分的改变相关的新的增量磁盘映像212。
在其中一个这样的实施例中,当确定如何合并文件时,保守垫底使用并行于规则引擎的权威参考。在另一个这样的实施例中,保守垫底包括在不再需要权威参考映像时将其抛弃。在另一个这样的实施例中,通过在处理冲突中提供明确的参考,保守垫底提供使用规则引擎的替代方式来确定如何处理冲突。在规则引擎的一些实施例中,所承载的规则集包括对于应该如何处理文件冲突的理解,但这种理解是近似的,如同在实际执行时补丁可以执行任意的改变。在又一个实施例中,保守垫底在修补时产生较大的计算代价,但仍保留了上述实施例的存储花销的优势。
在一些实施例中,建立基础映像202的拷贝。在其中一个这样的实施例中,基础磁盘映像的拷贝和多个增量磁盘映像的其中一个相关联,多个增量磁盘映像的每一个保存至少一个用户产生的磁盘映像修改。在另一个这样的实施例中,使用至少一个共享的修改文件(例如至少一个补丁)来修改基础磁盘映像。在另一个这样的实施例中,建立修改的基础磁盘映像210的拷贝。在又一个这样的实施例中,修改的基础磁盘映像210的拷贝和多个增量磁盘映像的其中一个相关联;例如,通过将增量磁盘识别的修改应用到修改的基础磁盘映像210的拷贝,可以关联增量磁盘和修改的基础磁盘映像的拷贝。
在一些实施例中,上述方法提供了用于在文件级而不是在块级管理增量磁盘映像的功能性,使得可以修补通用基础磁盘映像202,而不需要重新建立增量文件。在一个实施例中,使用规则引擎来处理文件冲突。在另一个实施例中,确定来自补丁206的改变还是来自增量磁盘映像204的改变应该优先。
在虚拟机器环境中,用于使用补丁206更新多个磁盘映像的方法包括在至少一个文件中将补丁应用到磁盘映像202’的第一拷贝,多个磁盘映像的每一个包括取自通用基础磁盘映像202的增量磁盘映像204。该方法包括产生修改的磁盘映像210,修改的磁盘映像210包括磁盘映像的修补的第一拷贝。该方法包括将来自增量磁盘映像204的至少一个修改应用到包括通用基础磁盘映像的第二拷贝的初始虚拟机器映像208。该方法包括确定增量磁盘映像204是否影响磁盘映像210的修补的第一拷贝的一部分。
该方法包括应用规则来确定应用增量磁盘映像204到受影响的部分,还是使用新文件替代受影响的部分。在一些实施例中,该确定依赖于文件类型、文件位置、文件属性或者文件性质的一个或者多个的组合。在其他实施例中,通过来自增量磁盘映像204的修改产生的对于文件的改变的程度影响该确定。在其他实施例中,通过修改的通用集产生的对于文件的改变的程度影响该确定。
在一个实施例中,新文件把原来的磁盘映像文件表示成补丁206修改的。在另一个实施例中,新文件表示由补丁206和增量磁盘映像204的组合修改的原来的磁盘映像文件。在另一个实施例中,由用户定义的规则来产生新文件,以近似于取自用于更新增量磁盘映像的现有方法的文件。现有方法的一个实施例包括使用已经应用的增量磁盘映像来直接应用修改的通用集206到通用基础磁盘映像202。
在一些实施例中,第二增量磁盘映像212包括来自原来的增量映像的原来的文件和替代的文件。在一个实施例中,将第二增量磁盘映像应用到修改的磁盘映像210导致磁盘映像,该磁盘映像相当于取自现有方法中通过增量磁盘映像204和修改的通用集206二者直接修改的通用基础磁盘映像202的磁盘映像。在另一个实施例中,将第二增量磁盘映像212应用到修改的磁盘映像210导致磁盘映像,且该磁盘映像近似于取自现有方法中通过增量磁盘映像204和补丁206二者直接修改的通用基础磁盘映像202的磁盘映像。
可以理解上述系统可以提供这些部件的每一个或者任意多个,并且这些部件可以提供在独立机器上,或者在一些实施例中提供在分布式系统中的多个机器上。上述系统和方法可以实现为方法、设备或者制造产品,其使用编程和/或引擎技术来产生软件、固件、硬件和其任意组合。此外,上述系统和方法可以提供为嵌入在一个或多个制造产品上的一个或者多个计算机可读程序。此处所采用的术语“制造产品”意欲包括代码或者逻辑,该代码或者逻辑可以嵌入一个或者多个计算机可读装置、固件、可编程逻辑、存储器装置(例如,EEPROM、ROM、PROM、RAM、SRAM等)、硬件(例如,集成电路芯片、现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)、电子装置、计算机可读非易失性存储器单元(例如,CD-ROM、软盘、硬盘驱动器等)或者可从其访问。制造产品可以从文件服务器访问,文件服务器经由网络传输线、无线传输媒体、空间传播信号、无线电波、红外信号等来访问计算可读程序。制造产品可以是闪存卡或者磁带。制造产品包括硬件逻辑和嵌入处理器执行的计算机可读媒介的软件或者可编程代码。通常,计算机可读程序可以以任意编程语言实现,例如,LISP、PERL、C、C++、C#、PROLOG、或者诸如JAVA的任意字节码语言。软件程序可以作为对象代码被存储在一个或者多个制造产品上或被存储到该一个或者多个制造产品中。
已经描述的方法和系统的特定实施例,该方法和系统用于在虚拟机器环境中用修改的通用集更新多个磁盘映像,多个磁盘映像的每一个包括从通用基础磁盘映像获得的增量磁盘映像,对于本领域的技术人员来说很明显可以使用包括本发明思想的其它实施例。因此,本发明不应该受限于特定实施例,而是应该由下面的权利要求的精神和范围来限制。

Claims (23)

1.一种用于更新多个用户磁盘映像的方法,多个用户磁盘映像的每一个取自通用基础磁盘映像和增量映像,其中增量映像包括多个增量文件,每个增量文件表示多个用户磁盘映像的其中一个和基础磁盘映像之间的至少一个区别,该方法包括:
将增量文件应用到基础磁盘映像来产生第二磁盘映像,第二磁盘映像包括基础磁盘映像的由增量文件修改的部分和基础磁盘映像的未修改的部分;
将补丁应用到基础磁盘映像的拷贝,以产生所述基础磁盘映像的修补拷贝;
响应于确定将补丁应用到了基础磁盘映像的和基础磁盘映像的未修改的部分对应的部分,应用该增量文件到基础磁盘映像的修补拷贝;以及
响应于确定将补丁应用到了基础磁盘映像的和由增量文件修改的基础磁盘映像的部分相对应的部分,确定不将至少一个增量文件应用到基础磁盘映像的修改的部分。
2.权利要求1的方法,还包括:
在计算环境中安装基础磁盘映像、第二磁盘映像以及基础磁盘映像的修补拷贝。
3.权利要求1的方法,还包括:
在虚拟机器环境中安装基础磁盘映像、第二磁盘映像以及基础磁盘映像的修补拷贝。
4.权利要求1的方法,还包括:
响应于确定将补丁应用到了基础磁盘映像的和基础磁盘映像的未修改的部分对应的部分,将增量文件拷贝到和基础磁盘映像的修补拷贝相关联的第二增量磁盘映像。
5.权利要求1的方法,其中,将增量文件应用到基础磁盘映像还包括将增量磁盘映像的增量文件应用到基础磁盘映像来产生第二磁盘映像,该增量磁盘映像包括表示用户磁盘映像和基础磁盘映像之间的至少一个区别的多个增量文件的至少一个。
6.权利要求1的方法,其中,确定还包括经由合并过程确定将补丁应用到了基础磁盘映像的和基础磁盘映像的未修改的部分对应的部分。
7.权利要求1的方法,其中应用还包括经由合并过程将增量文件应用到基础磁盘映像的修补拷贝。
8.权利要求1的方法,还包括将增量文件应用到基础磁盘映像的修补拷贝的至少一个文件。
9.权利要求1的方法,还包括:
确定将补丁应用到了基础磁盘映像的和基础磁盘映像的修改部分相对应的注册表部分;
在注册键值级将增量文件合并到基础磁盘映像的修补拷贝的和基础磁盘映像的修改部分相对应的部分。
10.权利要求1的方法,还包括:
确定该补丁应用到了以下其中一个:基础磁盘映像的与基础磁盘映像的修改部分相对应的日志文件部分以及数据库,并且
使用时间戳和试探法中的至少一个将增量文件合并到基础磁盘映像的修补拷贝的与基础磁盘映像的修改部分相对应的部分。
11.权利要求1的方法,还包括:产生用于保存至少一个增量文件的第二增量磁盘映像,当所述至少一个增量文件应用到基础磁盘映像的修补拷贝时产生第三磁盘映像。
12.权利要求1的方法,其中,将增量文件应用到基础磁盘映像的修补拷贝还包括通过规则引擎来确定将增量文件应用到基础磁盘映像的修补拷贝。
13.权利要求1的方法,还包括:
将补丁应用到第二磁盘映像的拷贝;
确定该补丁应用到了第二磁盘映像的拷贝的和由增量文件修改的基础磁盘映像的一部分相对应的部分;
确定基础磁盘映像的修补拷贝中的补丁应用到了基础磁盘映像的未由增量文件修改的部分;并且
将增量文件应用到基础磁盘映像的修补拷贝。
14.一种用于更新多个用户磁盘映像的设备,多个增量磁盘的每一个取自通用基础磁盘映像和增量映像,其中该增量映像包括多个增量文件,每个增量文件表示多个用户磁盘映像的其中一个和基础磁盘映像之间的至少一个区别,该设备包括:
用于将增量文件应用到基础磁盘映像来产生第二磁盘映像的装置,第二磁盘映像包括基础磁盘映像的由增量文件修改的部分和基础磁盘映像的未修改的部分;
用于将补丁应用到基础磁盘映像的拷贝以产生所述基础磁盘映像的修补拷贝的装置;和
用于响应于确定将补丁应用到了基础磁盘映像的和基础磁盘映像的未修改的部分相对应的拷贝的至少一个文件,应用该增量文件到基础磁盘映像的修补拷贝的装置;以及
用于响应于确定将补丁应用到了基础磁盘映像的和由增量文件修改的基础磁盘映像的部分相对应的部分,确定不将至少一个增量文件应用到基础磁盘映像的修改的部分的装置。
15.权利要求14的设备,还包括用于执行基础磁盘映像、第二磁盘映像和基础磁盘映像的修补拷贝的合并的装置。
16.权利要求14的设备,还包括虚拟机器环境。
17.权利要求14的设备,还包括用于管理磁盘映像格式和增量文件格式之间的文件的装置。
18.权利要求14的设备,还包括具有操作系统的计算环境和用于管理磁盘映像的至少一个工具。
19.权利要求14的设备,还包括用于确定将增量文件应用到基础磁盘映像的修补拷贝的装置。
20.权利要求14的设备,还包括经由合并过程将增量文件应用到基础磁盘映像的修补拷贝的装置。
21.权利要求14的设备,其中,用于确定将该补丁应用到了基础磁盘映像的和基础磁盘映像的未修改的部分相对应的部分的装置还包括用于确定将补丁应用到了基础磁盘映像的和基础磁盘映像的未修改的部分对应的至少一个文件的装置。
22.权利要求14的设备,其中将增量文件应用到基础磁盘映像的修补拷贝的装置还包括用于将增量文件应用到基础磁盘映像的修补拷贝的至少一个文件的装置。
23.权利要求14的设备,其中,计算环境还包括用于读写磁盘映像的工具。
CN200980118102.0A 2008-05-20 2009-05-19 用于修补从通用基础磁盘映像获取的多个磁盘映像的方法和系统 Expired - Fee Related CN102037444B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US5453408P 2008-05-20 2008-05-20
US61/054534 2008-05-20
PCT/US2009/044478 WO2009143124A1 (en) 2008-05-20 2009-05-19 Methods and systems for patching multiple disk images derived from a common base disk image

Publications (2)

Publication Number Publication Date
CN102037444A CN102037444A (zh) 2011-04-27
CN102037444B true CN102037444B (zh) 2014-07-30

Family

ID=40957684

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980118102.0A Expired - Fee Related CN102037444B (zh) 2008-05-20 2009-05-19 用于修补从通用基础磁盘映像获取的多个磁盘映像的方法和系统

Country Status (4)

Country Link
US (1) US8464241B2 (zh)
EP (1) EP2283422B1 (zh)
CN (1) CN102037444B (zh)
WO (1) WO2009143124A1 (zh)

Families Citing this family (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727331B (zh) * 2008-10-24 2013-03-20 国际商业机器公司 升级活动虚拟机的客户操作系统的方法和设备
WO2010100769A1 (ja) 2009-03-06 2010-09-10 株式会社日立製作所 セキュリティ管理装置及び方法
US8191065B2 (en) * 2009-04-06 2012-05-29 Red Hat Israel, Ltd. Managing virtual machine images
CN101741866B (zh) * 2010-02-01 2012-12-12 浪潮(北京)电子信息产业有限公司 一种在线存储系统及方法
US8549272B2 (en) * 2010-02-10 2013-10-01 Dell Products L.P. Information handling system image management deployment of virtual machine images to physical information handling systems
CN102193807B (zh) * 2010-03-19 2015-04-29 联想(北京)有限公司 一种镜像文件升级的方法、服务器及计算机网络系统
US8898668B1 (en) 2010-03-31 2014-11-25 Netapp, Inc. Redeploying baseline virtual machine to update a child virtual machine by creating and swapping a virtual disk comprising a clone of the baseline virtual machine
TWI505189B (zh) * 2010-08-27 2015-10-21 Ibm 用於虛擬裝置之自動升級之方法、電腦程式及系統
US9037547B1 (en) * 2010-09-15 2015-05-19 Symantec Corporation Backup time deduplication of common virtual disks from virtual machine backup images
CN102419753B (zh) * 2010-09-28 2014-02-12 联想(北京)有限公司 信息处理设备、信息处理方法和信息处理系统
US8856486B2 (en) * 2011-02-23 2014-10-07 Citrix Systems, Inc. Deploying a copy of a disk image from source storage to target storage
US9141368B2 (en) * 2011-03-10 2015-09-22 Microsoft Technology Licensing, Llc Managing boot loaders for virtual hard disks
JP5772127B2 (ja) * 2011-03-25 2015-09-02 富士通株式会社 仮想マシン管理方法、情報処理装置および仮想マシン管理プログラム
US9176744B2 (en) * 2011-05-20 2015-11-03 Citrix Systems, Inc. Quickly provisioning a virtual machine by identifying a path to a differential file during pre-boot
US8819660B2 (en) * 2011-06-29 2014-08-26 Microsoft Corporation Virtual machine block substitution
CN102929884B (zh) 2011-08-10 2016-05-04 阿里巴巴集团控股有限公司 一种收缩虚拟磁盘镜像文件的方法及装置
CN103034453B (zh) * 2011-09-30 2015-11-25 国际商业机器公司 管理虚拟机实例中预安装应用的持久数据的方法和装置
US8751549B2 (en) * 2012-01-06 2014-06-10 International Business Machines Corporation Persistent data management in multi-image code load systems
WO2013140460A1 (en) * 2012-03-23 2013-09-26 Hitachi, Ltd. Patch applying method for virtual machine by cloning an operating system image on shared storage and applying a patch to this cloned image
US9934044B2 (en) * 2012-03-30 2018-04-03 Lenovo (Singapore) Pte. Ltd. Methods for customizing an operating system at an information handling device
US8935688B2 (en) * 2012-03-30 2015-01-13 Lenovo (Singapore) Pte. Ltd. Methods for facilitating updates at an information handling device
US9182970B2 (en) * 2012-03-30 2015-11-10 Lenovo (Singapore) Pte. Ltd. Methods for creating device preload via manufacturing and cloud content
US20130283267A1 (en) * 2012-04-23 2013-10-24 Hewlett-Packard Development Company Lp Virtual machine construction
US8904081B1 (en) * 2012-05-08 2014-12-02 Vmware, Inc. Composing a virtual disk using application delta disk images
US8997095B2 (en) 2012-07-16 2015-03-31 International Business Machines Corporation Preprovisioning using mutated templates
US9047158B2 (en) 2012-08-23 2015-06-02 International Business Machines Corporation Using preprovisioned mutated templates
CN103677878B (zh) * 2012-09-12 2017-07-14 国际商业机器公司 一种打补丁的方法和装置
CN103729203A (zh) * 2012-10-12 2014-04-16 英业达科技有限公司 重建差异虚拟硬盘文档以更新操作系统的系统及其方法
US9244693B2 (en) 2012-11-05 2016-01-26 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for booting multiple servers from snapshots of an operating system installation image while reducing access to unmodified portions of the installation image and reducing latencies between server ports
CN103019802B (zh) * 2012-11-20 2015-11-25 中标软件有限公司 一种虚拟机管理方法及平台
US8924351B2 (en) 2012-12-14 2014-12-30 Lsi Corporation Method and apparatus to share a single storage drive across a large number of unique systems when data is highly redundant
CN102999369B (zh) * 2012-12-25 2016-08-17 杭州华三通信技术有限公司 虚拟机升级的方法及装置
US9122511B2 (en) 2013-01-10 2015-09-01 International Business Machines Corporation Using preprovisioned mutated templates
US9069590B2 (en) 2013-01-10 2015-06-30 International Business Machines Corporation Preprovisioning using mutated templates
GB2510185A (en) 2013-01-29 2014-07-30 Ibm Data de-duplication between emulated disk sub-systems
US9148465B2 (en) 2013-04-01 2015-09-29 Oracle International Corporation Update management for a distributed computing system
JP6098392B2 (ja) * 2013-06-24 2017-03-22 富士通株式会社 ソフトウェア修正パッチ抽出プログラム、ソフトウェア修正パッチ抽出方法および情報処理装置
US8955144B2 (en) * 2013-06-28 2015-02-10 Intel Corporation Protecting information processing system secrets from debug attacks
WO2015020661A1 (en) * 2013-08-08 2015-02-12 Hewlett-Packard Development Company, L.P. Boot from modified factory image
US9641406B1 (en) * 2013-12-18 2017-05-02 Amazon Technologies, Inc. Updating virtual machine images
US9436489B2 (en) * 2013-12-20 2016-09-06 Red Hat Israel, Ltd. Virtual machine data replication with shared resources
CN103778032A (zh) * 2014-01-26 2014-05-07 宝龙计算机系统(湖南)有限公司 一种类Unix操作系统备份的方法及装置
CN103777987B (zh) * 2014-01-26 2017-09-15 北京国电通网络技术有限公司 一种类unix操作系统的升级方法及装置
CN103778033A (zh) * 2014-01-26 2014-05-07 宝龙计算机系统(湖南)有限公司 一种类Unix操作系统多时间点备份的方法及装置
CN103777986B (zh) * 2014-01-26 2017-12-12 江苏智光创业投资有限公司 一种类Unix操作系统保存修改的方法及装置
US9639340B2 (en) * 2014-07-24 2017-05-02 Google Inc. System and method of loading virtual machines
US9921828B2 (en) * 2015-09-22 2018-03-20 Oracle International Corporation Merging versions of an inclusion application that is incorporated into a master application
US9823919B2 (en) * 2015-12-30 2017-11-21 Microsoft Technology Licensing, Llc Controlled deployment of application feature in mobile environment
US10185648B2 (en) 2016-05-24 2019-01-22 Red Hat, Inc. Preservation of modifications after overlay removal from a container
US10318486B2 (en) 2016-07-08 2019-06-11 International Business Machines Corporation Virtual machine base image upgrade based on virtual machine updates
US11947489B2 (en) 2017-09-05 2024-04-02 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US10795659B1 (en) * 2017-11-02 2020-10-06 Virtuozzo International Gmbh System and method for live patching processes in user space
US10782887B2 (en) 2017-11-08 2020-09-22 Robin Systems, Inc. Window-based prority tagging of IOPs in a distributed storage system
US10846001B2 (en) 2017-11-08 2020-11-24 Robin Systems, Inc. Allocating storage requirements in a distributed storage system
CN110019010B (zh) * 2017-11-14 2023-06-13 阿里巴巴集团控股有限公司 处理方法、装置、设备和机器可读介质
US11132331B2 (en) * 2017-12-12 2021-09-28 Rubrik, Inc. Sharding of full and incremental snapshots
US11392363B2 (en) 2018-01-11 2022-07-19 Robin Systems, Inc. Implementing application entrypoints with containers of a bundled application
US11582168B2 (en) 2018-01-11 2023-02-14 Robin Systems, Inc. Fenced clone applications
US11099937B2 (en) 2018-01-11 2021-08-24 Robin Systems, Inc. Implementing clone snapshots in a distributed storage system
US10896102B2 (en) 2018-01-11 2021-01-19 Robin Systems, Inc. Implementing secure communication in a distributed computing system
US10642697B2 (en) 2018-01-11 2020-05-05 Robin Systems, Inc. Implementing containers for a stateful application in a distributed computing system
US11748203B2 (en) 2018-01-11 2023-09-05 Robin Systems, Inc. Multi-role application orchestration in a distributed storage system
US10628235B2 (en) 2018-01-11 2020-04-21 Robin Systems, Inc. Accessing log files of a distributed computing system using a simulated file system
US10845997B2 (en) 2018-01-12 2020-11-24 Robin Systems, Inc. Job manager for deploying a bundled application
US10846137B2 (en) 2018-01-12 2020-11-24 Robin Systems, Inc. Dynamic adjustment of application resources in a distributed computing system
US10642694B2 (en) 2018-01-12 2020-05-05 Robin Systems, Inc. Monitoring containers in a distributed computing system
US10579364B2 (en) * 2018-01-12 2020-03-03 Robin Systems, Inc. Upgrading bundled applications in a distributed computing system
CN108572889B (zh) * 2018-03-12 2019-10-18 新华三云计算技术有限公司 一种系统还原方法及装置
US10976938B2 (en) 2018-07-30 2021-04-13 Robin Systems, Inc. Block map cache
US11023328B2 (en) 2018-07-30 2021-06-01 Robin Systems, Inc. Redo log for append only storage scheme
US10817380B2 (en) 2018-07-31 2020-10-27 Robin Systems, Inc. Implementing affinity and anti-affinity constraints in a bundled application
US10599622B2 (en) 2018-07-31 2020-03-24 Robin Systems, Inc. Implementing storage volumes over multiple tiers
US10908848B2 (en) 2018-10-22 2021-02-02 Robin Systems, Inc. Automated management of bundled applications
US11036439B2 (en) 2018-10-22 2021-06-15 Robin Systems, Inc. Automated management of bundled applications
US10620871B1 (en) 2018-11-15 2020-04-14 Robin Systems, Inc. Storage scheme for a distributed storage system
CN111221537A (zh) * 2018-11-23 2020-06-02 中兴通讯股份有限公司 云桌面升级方法、装置、云端服务器及存储介质
US11086725B2 (en) 2019-03-25 2021-08-10 Robin Systems, Inc. Orchestration of heterogeneous multi-role applications
US11256434B2 (en) 2019-04-17 2022-02-22 Robin Systems, Inc. Data de-duplication
US10831387B1 (en) 2019-05-02 2020-11-10 Robin Systems, Inc. Snapshot reservations in a distributed storage system
US10877684B2 (en) 2019-05-15 2020-12-29 Robin Systems, Inc. Changing a distributed storage volume from non-replicated to replicated
US11226847B2 (en) 2019-08-29 2022-01-18 Robin Systems, Inc. Implementing an application manifest in a node-specific manner using an intent-based orchestrator
US11249851B2 (en) 2019-09-05 2022-02-15 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US11520650B2 (en) 2019-09-05 2022-12-06 Robin Systems, Inc. Performing root cause analysis in a multi-role application
US11347684B2 (en) 2019-10-04 2022-05-31 Robin Systems, Inc. Rolling back KUBERNETES applications including custom resources
US11113158B2 (en) 2019-10-04 2021-09-07 Robin Systems, Inc. Rolling back kubernetes applications
US11403188B2 (en) 2019-12-04 2022-08-02 Robin Systems, Inc. Operation-level consistency points and rollback
US11108638B1 (en) 2020-06-08 2021-08-31 Robin Systems, Inc. Health monitoring of automatically deployed and managed network pipelines
US11528186B2 (en) 2020-06-16 2022-12-13 Robin Systems, Inc. Automated initialization of bare metal servers
US11740980B2 (en) 2020-09-22 2023-08-29 Robin Systems, Inc. Managing snapshot metadata following backup
US11743188B2 (en) 2020-10-01 2023-08-29 Robin Systems, Inc. Check-in monitoring for workflows
US11456914B2 (en) 2020-10-07 2022-09-27 Robin Systems, Inc. Implementing affinity and anti-affinity with KUBERNETES
US11271895B1 (en) 2020-10-07 2022-03-08 Robin Systems, Inc. Implementing advanced networking capabilities using helm charts
US11750451B2 (en) 2020-11-04 2023-09-05 Robin Systems, Inc. Batch manager for complex workflows
US11556361B2 (en) 2020-12-09 2023-01-17 Robin Systems, Inc. Monitoring and managing of complex multi-role applications
TWI808713B (zh) * 2022-01-27 2023-07-11 楊明勳 用以部屬作業環境的方法與系統
WO2024065531A1 (en) * 2022-09-29 2024-04-04 Intel Corporation Server, end client, methods and program code

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4937036A (en) 1986-04-28 1990-06-26 Xerox Corporation Concurrent display of data from two different display processors and user interface therefore
US6075938A (en) 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6080207A (en) 1998-06-04 2000-06-27 Gateway 2000, Inc. System and method of creating and delivering software
US6735601B1 (en) 2000-12-29 2004-05-11 Vmware, Inc. System and method for remote file access by computer
US7664984B2 (en) * 2002-10-09 2010-02-16 Xpoint Technologies, Inc. Method and system for updating a software image
WO2005043360A1 (en) 2003-10-21 2005-05-12 Green Border Technologies Systems and methods for secure client applications
US20060184937A1 (en) * 2005-02-11 2006-08-17 Timothy Abels System and method for centralized software management in virtual machines
US7523110B2 (en) * 2005-03-03 2009-04-21 Gravic, Inc. High availability designated winner data replication
US8370819B2 (en) * 2005-03-25 2013-02-05 Microsoft Corporation Mechanism to store information describing a virtual machine in a virtual disk image
US7805600B2 (en) * 2005-09-15 2010-09-28 Sas Institute Inc. Computer-implemented systems and methods for managing images
US20070132774A1 (en) * 2005-12-01 2007-06-14 Samsung Electronics Co., Ltd. System and method for a patch minimization tool
JP5198584B2 (ja) * 2008-02-26 2013-05-15 ヴイエムウェア インク 拡張されたサーバーベースのクライアント用デスクトップ仮想マシン構成

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《Partition Repositories for Partition Cloning OS Independent Software Maintenance in Large Clusters of PCs》;Felix Rauch;《Cluster Compuing,2000》;20001231;全文 *
Felix Rauch.《Partition Repositories for Partition Cloning OS Independent Software Maintenance in Large Clusters of PCs》.《Cluster Compuing,2000》.2000,

Also Published As

Publication number Publication date
US20090292737A1 (en) 2009-11-26
WO2009143124A1 (en) 2009-11-26
US8464241B2 (en) 2013-06-11
EP2283422B1 (en) 2018-07-18
CN102037444A (zh) 2011-04-27
EP2283422A1 (en) 2011-02-16

Similar Documents

Publication Publication Date Title
CN102037444B (zh) 用于修补从通用基础磁盘映像获取的多个磁盘映像的方法和系统
CN102804140B (zh) 用于将设备驱动程序导入到客户计算环境中的方法和系统
CN102754077B (zh) 可从外部媒体装置引导的安全虚拟化环境
US11314499B2 (en) Simulating end-to-end upgrade process in production environment
CN102272726B (zh) 便于异构处理器池虚拟化的系统和方法
CN102368201B (zh) 虚拟化环境中存储优化选择
CN102197374B (zh) 用于在组合的计算环境中给可修改的机器基本映像提供个性化桌面环境的方法和系统
CN103559052B (zh) 固件更新的设备与方法
CN102334114B (zh) 用于优化确定由虚拟硬盘地址标识的数据位置的过程的系统和方法
US10445122B2 (en) Effective and efficient virtual machine template management for cloud environments
CN102656578B (zh) 用于在第一机器上显示与第二机器的驱动器关联的数据而不必映射该驱动器的方法和系统
CN104981776B (zh) 对个人虚拟磁盘的系统更新
CN102317909A (zh) 便于在多个物理机器间迁移虚拟机的系统和方法
EP2513811B1 (en) Methods and systems for optimizing a process of archiving at least one block of a virtual disk image
CN104956329A (zh) 在云计算环境中的网络方案
CN101743532A (zh) 用于提供对计算装置的访问水平的方法和系统
CN111868685A (zh) 用于对装置的云环境进行版本控制的系统和方法
CN104487932A (zh) 用于远程应用和桌面的语音识别支持
CN102754092B (zh) 用于优化对虚拟盘映像的至少一个块进行归档的过程的方法和系统
US20230261876A1 (en) Trust and traceability for software development life cycle
Barrett et al. Staging for z/OS Optimization

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140730