本申请涉及标题为“用来创建和恢复图像文件的方法和系统”的共同未决(co-pending)的申请,其中该申请由Wesley Witt和Edward Miller在归档(相应于律师诉讼事件表编号LVM 215712),因此该文档作为参考清楚的合并于此。
具体实施方式
本发明涉及用来管理图像文件的方法和系统。图像文件包括保存在源存储媒体卷中的数据副本。保存在源存储媒体卷中的数据类型通常包括操作系统文件、应用程序、数据文件和其它用来管理保存在卷中数据的控制信息。在本发明中,图像文件包含许多流,这包括控制流、数据流、位图流、修补流和簇地图流。诸如性质流和查账索引这样的可选择流可包括在图像文件内。
图像文件的数据流包括从源存储媒体卷复制的数据。控制流、位图流和簇地图流包括需要管理数据流中数据的信息。图像文件由将虚拟存储媒体参考提供给图像文件的设置过程来存取。在设置了图像文件后,操作系统通过参考虚拟簇存取数据流中的数据。簇地图流用来将虚拟簇转换为数据流中的位置。本发明允许操作系统像图像文件是诸如硬盘驱动器这样的存储媒体卷一样,存取图像文件。例如,可查看、编辑、创建或删除保存在数据流中的文件。
在本发明的一个实施例中,源存储媒体卷的多版本保存在一个或多个图像文件中。在第一时间段创建了源存储媒体卷中作为父图像文件的第一图像文件。在第二时间段创建了源存储媒体卷中作为子图像文件的第二图像文件。子图像文件仅包括来自从第一时间段开始就已改变的源存储媒体卷的数据。第一和第二图像文件被保存为单独文件。做为选择,第一和第二图像文件保存为单图像文件的一部分。第一和第二图像文件允许将来自在第一或第二时间段的源存储媒体卷的数据提供给目标存储媒体卷。
转到附图,其中相同的参考数字表示相同的元素,阐述的本发明是在合适的计算环境中实施的。这里将在计算机可执行指令的通用上下文中来说明本发明,尽管不需要这样做,其中该计算机可执行指令的通用上下文诸如由个人计算机正执行的程序模块。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明也可在分布计算环境中应用,其中由通过通信网络连接的远程处理装置来执行任务。在分布计算环境中,程序模块既可位于本地存储器存储装置中,也可位于远程存储器存储装置中。
图1阐明了可实施本发明的合适计算系统环境100的例子。该计算系统环境100仅为合适计算环境的一个例子,且并没有暗示对本发明使用性或功能性范围的限制。该计算环境100也不应认为依赖或需要涉及范例操作环境100中阐明的任何一个组件和其组合。
本发明可用于许多其它的普通用途或专用计算系统环境或配置。可适合用于本发明的熟知计算系统、环境和/或配置的例子包括,但不仅限于,个人计算机、服务器计算机、手持或膝上装置、多处理器系统、基于微处理器的系统、机顶盒、可编程消费者电子装置、网络PC、小型机、大型计算机、以及包括上述这些系统或装置中的任何一个和类似系统和装置的分布计算环境。
本发明可在诸如由计算机正执行的程序模块这样的计算机可执行指令的通用上下文中说明。通常,程序模块包括执行特定任务或实现特定的抽象数据类型的例程、程序、对象、组件、数据结构等。本发明也可在分布计算环境中应用,其中由通过通信网络连接的远程处理装置来执行任务。在分布计算环境中,程序模块既可位于包括存储器存储装置的本地计算机存储媒体中,也可位于包括存储器存储装置的远程计算机存储媒体中。
结合图1,用来实施本发明的范例系统包括形式为计算机110的通用计算装置。计算机110的组件可包括,但不局限于,处理单元120、系统存储器130和将包括系统存储器的不同系统组件与处理单元120结合起来的系统总线121。该系统总线121可为几种总线结构类型中的任何一种,这些总线结构类型包括存储器总线或存储器控制器、外围总线和使用多种总线结构中任何一种的本地总线。通过例子,但不局限于此,这样的结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线和外围组件互连(PCI)总线,其中该PCI总线也是所知的Mezzanine总线。
计算机110通常包括多种计算机可读媒体。计算机可读媒体可为任何可被计算机110存取的可用媒体,它包括易失性和非易失性媒体、可移动和不可移动媒体。通过例子,但不局限于此,计算机可读媒体可包含计算存储媒体和通信媒体。计算机存储媒体包括在任何方法或技术中应用来存储诸如计算机可读指令、数据结构、程序模块或其它数据这样信息的易失性和非易失性、可移动和不可移动媒体。计算机存储媒体包括,但不局限于,RAM、ROM、EEPROM、闪存或其它存储器技术,CD ROM、数字多用途盘(DVD)或其它光盘存储器,盒式磁带、磁带、磁盘存储或其它磁存储器装置,或能用来保存所需信息并可由计算机110存取的任何其它媒体。通信媒体通常具体体现在计算机可读指令、数据结构、程序模块或其它诸如载波或其它传送机制这样的已调制数据信号中的数据上,通信媒体包括也包括任何信息传递媒体。术语“已调制的数据信号”意指将其一个或多个特性设置或改变为对信号中的信息编码的形式。通过例子,但不局限于此,通信媒体包括诸如有线网络或单线连接(direct-wiredconnection)这样的有线媒体和诸如声音、RF、红外线和其它无线媒体这样的无线媒体。上述任何媒体的组合也应包括在计算机可读媒体的范围之内。
系统存储器130包括形式为诸如只读存储器(ROM)131和随机存取存储器(RAM)132这样的易失性和/或非易失性存储器的计算机存储媒体。基本输入/输出系统133(BIOS),包括帮助在计算机110中的元素间传送信息的基本例程,如在开始阶段,该基本例程通常保存在ROM 131中。RAM 132通常包含可直接存取和/或当前在处理单元120上运行的数据和/或程序模块。通过例子,但不局限于此,图1阐明了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可包括其它的可移动/不可移动、易失性/非易失性计算机存储媒体。仅通过例子,图1阐明了读入或写出到不可移动、非易失性磁媒体的硬盘驱动器141,读入或写出到可移动、非易失性磁盘152的磁盘驱动器151,以及读入或写出到诸如CD ROM或其它光媒体这样的可移动、非易失性光盘156的光盘驱动器155。其它可用在范例操作环境中的可移动/不可移动、易失性/非易失性计算机存储媒体包括,但不局限于,盒式磁带、闪存卡、数字多用途盘、数字视频带(digital video tape)、固态RAM、固态ROM和类似的媒体。硬盘驱动器141通常通过诸如接口140这样的不可移动存储器接口与系统总线121相连,磁盘驱动器151和光盘驱动器155通常通过诸如接口150这样的可移动存储器接口与系统总线121相连。
图1阐明的上述驱动器和与之相关联的计算机存储媒体提供了计算机可读指令、数据结构、程序模块和计算机110的其它数据的存储。例如,在图1中,硬盘驱动器141被阐明为保存操作系统144、应用程序145、其它程序模块146和程序数据147。注意到这些组件可与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。操作系统144、应用程序145、其它程序模块146和程序数据147被赋予关于阐明它们是不同副本最小的不同数字。用户可通过诸如键盘162和指点装置161这样的输入装置将命令或信息输入到计算机110中,其中该指点装置161通常指鼠标器、跟踪球或触摸板。其它的输入装置(未示出)可包括扩音器、操纵杆、游戏垫、圆盘式卫星电视天线、扫描仪或类似的装置。这些和其它的输入装置通常通过与系统总线结合的用户输入接口160与处理单元120相连,其中用户输入接口160也可与其它的接口和总线结构相连,如并行端口、游戏端口或通用串行总线(USB)。监视器191或其它类型的显示装置也通过诸如视频接口190这样的接口与系统总线121相连。除了监视器之外,计算机也可包括诸如扬声器197和打印机196这样可通过输出外围接口195相连的其它外围输出装置。
计算机110可在使用到一个或多个诸如远程计算机180这样的远程计算机逻辑连接的网络化环境中工作。远程计算机180可为另一台个人计算机、服务器、路由器、网络PC、对等装置(peer device)或其它共用网络节点,该远程计算机180通常包括上述相对个人计算机110的许多或所有元素,尽管图1仅阐明了存储器存储装置181。图1中描述的逻辑连接包括本地网(LAN)171和广域网(WAN)173、但也可包括其它的网络。这样的网络环境常见于办公室、全企业计算机网络、局内网和国际互联网。
当在LAN网络环境中使用个人计算机110时,该个人计算机110通过网络接口或适配器170与LAN 171相连。当在WAN网络环境中使用计算机110时,计算机110通常包括调制解调器172或其它确立WAN 173上,如国际互联网上通信的装置。可为内置或外置的调制解调器172可通过用户输入接口160或其它合适的机制与系统总线121相连。在网络化环境中,相对个人计算机110描述的程序模块或其部分可保存在远程存储器存储装置中。通过例子,但不局限于此,图1阐明了驻留在存储器装置181中的远程应用程序185。需要注意,所示的网络连接是范例性的,可也使用在计算机间确立通信连接的其它装置。
在下列的说明中,除非另外指出,将结合由一台或多台计算机实施的动作和符号表示法来说明本发明。这样,我们会了解这样的动作和操作,有时指计算机可执行的,包括表现结构形式中数据的电子信号计算机处理单元的操作。该操作将数据转换或将数据保持在计算机存储器系统中的位置上,其将计算机的操作重新配置或改变为本领域的熟练技术人员易于理解的形式。数据保持的数据结构是具有用数据格式定义的特定性质的存储器物理位置。然而,虽然本发明用前述的上下文来描述,这并不意味着局限性,本领域的熟练技术人员可以理解,也可在硬件中实施下文中说明的不同动作和操作。
图2阐明了具体体现本发明的范例操作安排。该操作安排包括与源存储媒体204和目标存储媒体206相接的计算机200。操作系统202在计算机200中执行。该操作系统202包括诸如文件系统驱动器208、图像驱动器210和装置驱动器212这样帮助在计算机200和存储媒体204及206之间通信的组件。
每个存储媒体在逻辑上被划分为一个或多个卷。存储媒体204被划分为第一卷214和第二卷216。存储媒体206被划分为单卷。每个存储媒体卷是操作系统202可存取的。
每个存储媒体204和206包括几何特性。存储媒体的几何特性包括许多圆柱面、每圆柱面磁轨和每磁轨扇区。扇区是存储媒体上的物理单位。每个扇区能保存特定数量的信息,例如,512字节。每个存储媒体204和206的几何特性不必相同。
簇是一组一个或多个扇区。操作系统202,尤其指文件系统驱动器208通过标识簇的数量将读写需求发送到装置驱动器。文件系统确定包含簇的扇区数量。存在不同的已知文件系统,如文件分配表16(FAT 16)、文件分配表32(FAT32)、紧密盘文件系统(CDFS)和新技术文件系统(NTFS)。
如所示,源存储媒体204的第一卷214包括源数据218。源数据218包括许多诸如操作系统文件236这样的操作系统、诸如应用程序这样的可执行程序238和使用在应用程序中的数据文件240。源数据218也包括控制信息242。该控制信息包括标识包括每个文件数据存储媒体卷214中的簇的文件分配数据249。控制信息242也包括位掩码(bitmask)248。该位掩码248包含许多位,且每个位相应于存储媒体卷中的一个簇。位掩码中的每个位具有标识相应簇是否包括至少一个文件的已保存数据以及该簇是否保持未分配的值。
用来组织和保存控制信息242和文件236、238、240的方式依赖使用的文件系统。通过例子,NTFS文件系统在存储媒体中保存了主文件表(Master FileTable)(MFT)。该MFT包括每个保存在存储媒体中文件的范围列表(extent list)。该范围列表包括一连串的标识开始方块和长度的条目。该开始方块和长度定义了一连串的包括文件数据的邻近簇。
包括作为源数据218部分的其它信息包括页面存储器(paged memory)244和BIOS参数块(BPB)。页面存储器244是计算机存储器中被写到存储媒体中的部分。BPB包括关于存储媒体卷的数据,如媒体的大小和存储媒体中特定文件的位置。
目标存储媒体206包括图像文件220。该图像文件是包括源数据218信息的逻辑捕获(logical capture)。在本发明中,图像文件220被用来恢复到存储媒体卷的源数据218。例如,图像文件220被用来将已恢复的数据创建到存储媒体卷216中。该已恢复的数据215包括操作系统文件236、可执行程序、238、数据文件240和原本源数据218的控制信息242。如在下面将更详细说明的,已恢复数据215中数据的簇位置不必直接相应于来自源数据218数据的簇位置。例如,当创建图像文件220时,可进行源数据218的碎片整理。已恢复的数据215也可置于源卷214中,那里生成了图像文件220,从而将源存储媒体卷214恢复到先前的状态。
图像文件220也可用来将源数据218置于与单独计算机相接的存储媒体上。可通过诸如LAN、WAN或国际互联网这样的计算机网络将图像文件220恢复到远程计算机的存储媒体上。若图像文件220被置于诸如CD ROM或DVD盘这样的可移动媒体上,则也可将图像文件220恢复到单独计算机上。可移动媒体与单独计算机相接,并被恢复到与单独计算机相接的另一个存储媒体卷中。
目标存储媒体206也包括标注为220a、220b、220c的图像文件。本发明允许编辑图像文件220。在编辑了图像文件220后,该图像文件可保存为诸如图像文件220a这样的单独文件。这样,就创建了图像文件的多版本。在可选择的实施例中,图像文件220是包括第一时间段处源数据218的父图像文件。图像文件220a、220b、220c是在后续时间段生成的子图像文件。每个子图像文件220a、220b、220c仅包括在创建父图像文件220后,对源数据218所做的改变。做为选择,子图像文件220a、220b、220c保存为图像文件220的一部分,从而用源数据218的多版本创建了单图像文件。
图像文件220包括许多图像流。如所示,图像220包括控制流222、数据流224、位图流226、簇地图流228、查账索引流230和性质流232。图像流保存在目标存储媒体206中,作为图像文件220的一部分。图像文件220也包括修补流234。该修补流234是在其它图像流中的数据被写到图像文件220中之前,用来调整其它图像流中数据的临时流。一旦调整了其它流中的数据,该修补流234就被从图像文件中移除。在本发明的一个实施例中,查账索引流230和性质流232是可选的。图像文件220a、220b、220c包括与图像文件220相同的图像流。
在所示的实施例中,目标存储媒体206和源存储媒体214通过共用装置驱动器212和文件系统驱动器208连接到计算机200上,从而假设这两个存储媒体使用共用文件系统和相同的存储媒体类型。如本领域的熟练技术人员会认识到的,可使用不同的存储媒体类型,而且每个存储媒体卷可利用不同的文件系统。例如,当存储媒体卷214是使用FAT 16或FAT 32的硬盘时,存储媒体卷206是使用CDFS文件系统的CD ROM。在那种情况下,通常需要许多文件系统驱动器208和装置驱动器212。
操作管理包括装配工具250、捕获工具252、恢复工具254和应用程序256。应用程序256包括,如字处理应用程序、基于数据的程序和其它诸如用来管理存储媒体那样的系统资源。用来管理存储媒体的已知资源允许用户查看存储媒体中的文件、复制文件、删除文件、移动文件以及类似的操作。捕获工具252从源数据218中创建图像文件220。恢复工具254从诸如原本源存储媒体卷214这样的存储媒体卷中或诸如卷216这样的单独存储媒体卷中的图像文件220中创建已保存的数据215。
在本发明的一个实施例中,装配工具250、捕获工具252和恢复工具254被应用为孤立应用程序(stand alone applications)。然后,该工具可通过用户接口、应用程序、其它程序模块或命令行需求来执行。在本发明的另一个实施例中,装配工具250、捕获工具252和恢复工具254作为用户接口、应用程序或其它程序模块的一部分来实施。
工具250、252和254将请求发送到操作系统202。做为选择,来自工具250、252、254的请求通过接口232发送。接口232提供到图像文件220中单独流222-234中信息的存取。这样,就提供了可扩展的工具集合,如可创建新工具来操作图像文件220。
装配工具250被用来初始化允许操作系统202与图像文件220互相作用的序列,就像图像文件220是存储媒体卷一样。装配工具250与诸如图像驱动器210和文件系统驱动器208这样的操作系统组件协作,来提供图像文件220的可设定地址驱动器号装配点,从而就创建了虚拟存储媒体。在装配工具250执行后,操作系统可从图像文件220读数据和将数据写到图像文件220中。该装配工具由任何应用程序、用户接口、系统资源或命令行需求来初始化。例如,装配工具在引导序列阶段初始化,从而允许计算机200从图像文件220导入。
图3是本发明使用的图像文件220的实施例。该图像文件220包括控制流222、数据流224、位图流226、簇地图流228、查账索引流230、性质流232和修补流234。如前所述,查账索引流230和性质流232是可选的,并实施用来提供图像文件220的附加功能性。修补流234是临时性的,被用来在其它图像文件流被写到目标存储媒体206中的图像文件220之前修正其它的图像文件流。
控制流222是起说明需要打开和解释包括在图像文件220中其它数据的图像文件220属性的标题作用的数据结构。控制流中的数据包括图像标识符260、卷信息262、存储媒体几何特性264、文件系统信息266、操作系统信息268和压缩信息270。
图像标识符260是唯一标识图像的数据,也是标识控制流222字节大小的数据。卷信息262包括定义源存储媒体卷214的数据。卷信息262中的数据包括距存储媒体204开始部分的卷偏移、卷的长度、卷中隐藏扇区的数量、卷标号和卷使用的文件系统类型。
存储媒体几何特性264包括说明源存储媒体264物理属性的数据,其中该源存储媒体264包括柱面数、每柱面磁轨数和每磁轨扇区数。文件系统信息266包括标识全部簇数、每簇字节和每记录簇数的数据。
操作系统信息268包括标识保存为源数据218一部分的操作系统版本的数据。该操作系统信息268也包括标识所做到诸如服务包标识这样操作系统的任何更新的数据。服务包是到软件程序的更新,其中该更新用软件程序修补已知的问题或进行该软件程序增强。服务包标识标识任何保存在源存储媒体卷214中对操作系统文件236的服务包。压缩/加密信息包括标识图像文件是否被压缩和图像文件220是否被加密的数据。
数据流224包括来自源存储媒体卷214的源数据218。如前所述,源数据218包括用来在源存储媒体卷214中保存文件的数据。使用已知的方法对每个文件的数据进行有选择的压缩和加密。压缩或加密数据的决定是在一个文件接着一个文件为基础上做出的。这样,数据流224中的某些数据可被压缩,而其它数据却不能。同样的,数据流224中的某些数据可被加密,而其它数据却不能。形成源数据218一部分的控制信息242也包含文件,并保存为数据流224的一部分。
在本发明的一个实施例中,数据流224不包括同样数据的多副本。例如,若相同数据文件240的多副本被保存在源存储媒体卷214中,则数据文件240的仅一个副本保存在数据流224中。页面存储器244也不必包括在数据流224中。当图像文件220在存储媒体卷中恢复时,操作系统220根据需要在存储媒体卷中创建了页面存储器244。消除数据的多副本和页面存储器文件减小了图像文件220的大小。
簇地图流228包括许多记录,每个记录标识虚拟簇的位置和数据流的位置。每条记录中虚拟簇的位置包括开始簇272和结束簇274。开始簇272和结束簇274标识了当一组源数据保存到存储媒体卷中时这组源数据属于的邻近簇。数据流位置包括偏移278、长度276、压缩大小280,该数据流标识了该组数据存在于数据流224中的位置。偏移278标识了如从数据流的开始位置测得的数据流224中数据的开始位置。对已压缩的文件,图像文件220中该组数据的长度与已压缩的大小280相等。对未压缩的数据,图像文件220中该组数据的长度是长度276和每簇字节数的乘积,这如在控制流222中标识的一样。标志区域282标识了图像文件220中的数据是否被压缩或未被压缩。簇地图流228中的记录允许将图像220作为虚拟存储媒体卷和要读的数据流224中的数据来查看、编辑或操作。
图4阐明了数据流中数据的位置如何与虚拟簇位置相关的例子。该虚拟簇位置相应于当图像文件被恢复到卷中时数据将置于存储媒体中位置的簇。在图4中,假设每簇字节是如在控制流222中标识的512。标注为346的虚拟存储媒体包括连续标号的块。每个块表示一个簇。数据流224也包括连续标注的块。数据流224中的每个块表示数据流224中的字节,该数量表示字节中从数据流224开始处的偏移。
簇地图记录228中的开始簇区域262包括开始簇100,结束簇区域149包括结束簇149。开始和结束簇定义了一组邻近块,其为当图像文件被恢复到存储媒体中时放置的一组数据;如虚拟簇位置。偏移区域具有值1000。因此,数据从偏移数据流224开始处1000字节的地方开始。区域272表示数据没有被压缩。这样,数据流224中数据的长度是标识为长度区域266中50的长度和每簇字节数512的乘积(50簇×512字节每簇=25,600字节)。如所示,图像文件中相应的数据以数据流224的开始为参考,通过26599定位在字节1000处。
如上所述,当创建图像文件220时,可进行源数据218的碎片整理。在该情况下,开始簇和结束簇可能不相应于源存储媒体卷214的原本位置。开始和结束簇的数量而是标识了当图像文件220被恢复到存储媒体卷中时数据保存位置的簇,这如虚拟存储媒体346表示的一样。
若相同数据的多副本保存在源存储媒体卷214中,则该数据仅被放置在数据流224中一次。在该事件发生的地方,创建了簇流228中的多记录,源存储媒体卷214中数据每出现一次,就有一条记录。每条记录包括相同的长度266、偏移262、压缩大小270和压缩272领域,从而指向数据流224中的相同数据。开始簇262和结束簇264领域是不同,因此就标识了当图像文件被恢复到存储媒体卷中时数据将保存的多位置。
返回图3,位图流226被用来标识虚拟分配和未分配的簇。该虚拟分配的簇是将包括当图像文件被恢复到存储媒体卷中时数据的簇。虚拟未分配的簇表示当图像文件被恢复到存储媒体卷中时将可保存新数据的簇。在所示范例中,位图流被实施为位图。位图中的每一位相应于簇。具有值“1”的位表示虚拟分配的簇,而具有值“0”的位表示虚拟未分配的簇。位图流执行与位掩码240相同的功能。然而,由于位图流226在数据流224的外部,所以很容易在图像文件220中存取该位图流226。
查账索引流230包括标识对图像文件所做的任何改变、初始化该变化的用户、文件,是否有任何修正以及实施改变的日期和时间。性质流232包括标识诸如操作系统版本这样图像文件220属性的数据。性质流232被询问来定位包括操作系统特定版本的图像文件。查账索引流和性质流以任何合适的方式来实施。
修补流被用来在操作系统202读源数据218之后和在将许多流写到图像文件220中之前修正图像流。例如,在NTFS文件系统的情况下,若当创建图像文件时进行文件的碎片整理,则修补流修正该MFT。
图5阐明了用来从源存储媒体卷214创建图像文件220的过程。该过程290可由诸如在图像驱动器210中工作的程序模块这样的操作系统202来执行。做为选择,该过程290可由诸如捕获工具252这样的系统工具232完全或部分的执行。
通常,通过来自系统工具232的用户需求来创建图像文件220。如前所述,系统工具232通过部分用户接口、应用程序或其它程序模块来执行或实施为部分用户接口、应用程序或其它程序模块。系统工具232也从命令行需求来执行。在接收了来自系统工具232的需求后,操作系统202打开步骤292所示的源存储媒体卷214。为打开源存储媒体卷214,图像驱动器210通过文件系统驱动器208获得源存储媒体卷214的参考。一旦获得了该存储媒体卷214的参考,操作系统202就通过图像驱动器210和装置驱动器212与存储媒体214进行通信。
在步骤294中,过程290创建了许多包括控制流222图像文件220的图像流、数据流224、位图流226、簇地图流228、查账索引流230、性质流232和修补流234。在这一点,许多包括图像文件220的流可在存储器结构中实施,或做为选择,可在目标存储媒体卷206中直接实施。
在步骤296中,过程290读源存储媒体卷214中的控制信息242。该控制信息242标识了许多源存储媒体卷214中的文件和分配到每个这样文件中的簇。例如,若源存储媒体卷使用NTFS文件系统,过程290就读存储媒体卷214中的MFT。
在步骤298中,过程290读由控制信息242标识的第一文件的数据。在步骤300中,过程将该文件数据置于数据流224中。如前所述,若存在文件数据的多副本,则该数据仅被置于数据流中一次。另外,若文件数据是页面存储器244的一部分,则该文件数据不必置于数据流224中。当该文件数据置于数据流224中时,其可进行有选择的碎片整理。
在步骤302中,通过将与虚拟簇位置相关的记录添加到其数据流位置来更新簇流228。在步骤304中,过程290确定源存储媒体卷214是否包括更多的文件数据。若存在更多的文件数据,过程290则返回到步骤298,并读下一个文件的数据。
若不存在更多的文件数据,过程290则前进到步骤306并将进行图像文件流的修补。进行的修补用来解决数据移动。例如,如前所述,过程290可对许多源存储媒体卷214中文件的数据进行碎片整理。这样,过程290就修正了位于数据流224中的控制信息242,以使控制信息242标识现在分配给每个文件的簇。在NTFS卷的情况下,过程纠正了MFT中每个文件的范围列表。因为每个文件的数据进行了碎片整理,所以每个文件的范围列表包括单范围。考虑到数据位置的变化,位掩码248也被修正来正确反映已分配的和未分配的簇。修补也被应用到BPB 246中。因为参考BPB中的文件位置发生了变化,所以修正BPB,以使参考正确的文件位置。
一旦完成了该过程,控制流222、数据流224、位图流226、簇地图流228、查账索引流230和性质流232就被写到目标存储媒体206中,从而形成了步骤308中所示的图像文件220。
图6示出了标注为310的过程,其用来将图像文件220恢复到诸如源存储媒体卷214这样的存储媒体卷中。过程310可由操作系统202来执行。做为选择,过程340由诸如恢复工具254这样的系统工具232完全或部分执行。在步骤312中,过程310打开图像文件220并获得目标存储媒体卷206的参考。
在步骤314中,过程310读许多包括在簇地图流228中的簇地图记录的其中一个。该簇地图记录标识了数据流224中数据的位置,也标识了源存储媒体卷214中数据的意向位置;如虚拟簇位置。在读过簇地图记录后,如步骤316所示,该数据从数据流224中读出。然后,该数据被写到簇中的存储媒体214,其中该簇由簇地图228中的开始和结束簇标识。
在步骤320中,过程310确定是否有更多的记录存在于簇地图流228中。若存在更多的记录,过程则返回到步骤314,在那里检查下一个簇地图记录。若不存在更多的记录,过程310就前进到步骤322,那里进行修补。若用来创建图像文件的源存储媒体卷214和源数据218被恢复处的存储媒体卷之间的几何特性不同,则需要修补。例如,若在BPB中标识的文件位置改变了,则更新BPB来反映文件的新位置。BPB也包括存储媒体的几何信息。BPB中的几何信息需要更新来反映包括已恢复源数据218存储媒体的实际几何特性。
图7阐明了标注为328的过程,该过程用来提供由操作系统202对图像文件220进行的存取。过程328被初始化为来自装配工具250的用户需求的结果。做为选择,当应用程序256试图存取图像文件220时或当接收到命令行需求时,过程328被初始化了。在步骤330,图像驱动器210接收到了装配需求。
在图像驱动器210接收到装配需求时,图像驱动器210将需求发送到文件系统驱动器208来打开步骤332所示的图像文件220。打开文件是操作系统202进行的标准过程,其允许存取存储媒体中的文件。因为图像文件220保存为存储媒体206中的文件,所以必须在其被存取之前打开它。
一旦打开了图像文件220,图像驱动器210就绕过文件系统驱动器208并直接读图像文件220。该图像驱动器210读步骤334和336所示的控制流222和簇地图流228。如前所述,控制流包括标识用来组织源数据218的文件系统类型以及源存储媒体214的几何特性。控制流中的数据有必要说明诸如数据流224这样其它流中的信息。簇地图流228包括必要的信息来将虚拟簇位置于数据流位置相关联。
在步骤338中,图像驱动器210需求图像文件220的驱动器号装配点任务。该任务由负责分配驱动器号装配点的操作系统202的部分来执行。
图8阐明了图像驱动器210如何与图像文件220合作以从图像文件220中的数据来创建虚拟存储媒体卷。一旦装配了图像文件220,该文件系统驱动器208就像图像文件是存储媒体卷一样来存取该图像文件220。如下,图像驱动器210操作所示的文件系统驱动器208并从文件系统驱动器208转换存取需求。为简单起见,未示出装置驱动器212。
通过例子,当文件系统驱动器208发布数据请求340来从图像文件中读数据时,该文件系统驱动器208标识了一组簇。该簇相应于需要的数据将驻留在已恢复数据215中的位置上。这样,操作系统202实际提供了一组虚拟簇。图像驱动器210截取(intercepts)了数据请求340。然后,图像驱动器检查簇地图流228,并用相应于由文件系统驱动器208提供虚拟簇的开始簇和结束簇来定位记录。然后,图像驱动器在基于簇地图记录的数据流中定位需要的数据,从数据流中读数据,并将需要的数据342传送到文件系统驱动器208中。
上面的安排允许操作系统就像其是存储媒体卷一样来请求来自该图像文件220的数据。这样,操作系统202可读控制信息242、数据文件240、可执行程序238和其它保存在数据流224中的数据。结果,操作系统202将图像文件作为通常标注为346的虚拟存储媒体来查看。例如,应用程序256可通过操作系统202从图像文件220中读数据文件240。然后,应用程序256可编辑数据文件240。如另一个例子,诸如那些用来读和显示存储媒体内容的存储媒体资源用于图像文件。该存储媒体资源显示了图像文件的内容,就像该图像文件是已恢复的数据215一样。
因为允许图像文件的存取,可用工具的集合是可扩展的。例如,接口232可形成允许存取图像文件220中数据流的应用程序设计接口232。这样,该结构就允许创建新工具来创建、恢复、查看、编辑或者操作图像文件220。
操作安排也允许编辑图像文件220。文件系统驱动器208发送数据请求340以将数据写到一组簇中。该组簇相应于一组虚拟未分配簇。图像驱动器210截取该请求并将标注为248的数据写到数据流224的末端。若该数据表示新文件,图像文件驱动器210则创建标识虚拟簇位置的新簇地图记录。该簇地图记录进一步包括数据流位置。
若该数据表示已编辑的文件,图像驱动器则将数据写到通常标注为248数据流224的末端。然而,没有创建新的簇地图228记录。图像驱动器而是定位标识文件数据前面位置的记录,并修正该记录来包括新的虚拟簇和数据流位置。
图9阐明了图像文件的多版本。父图像文件220是第一时间段处的源数据218捕获。如前所述,控制流包括唯一标识图像文件220的数据。子图像文件220a是第二时间段处的源数据218捕获。然而,子图像文件220a的数据流和簇地图流仅表示从第一时间段到第二时间段对源数据218所做的数据改变。例如,若在生成父图像文件220之后添加新的操作系统程序236,子图像文件220a则仅包括新文件的数据。在子文件220a中创建簇地图记录以支持数据流中和盘上新文件数据的位置。子图像文件220a包括在其控制流中的数据,其标识了父图像文件220。子图像文件220c同样表示在第三时间段处的源数据218。
父图像文件220和子图像文件220a、220b保存为分离文件。做为选择,父文件220和子图像文件220a、220b保存为更大文件206的一部分。使用父和子图像文件的优点是保持了图像的多版本,而不必重新创建(recreate)整个图像文件。这样,就减少了图像文件多版本的总体大小。
图10阐明了在诸如网络这样的媒体上传送图像文件的方法。如所示,图像文件220被破解为多个段360、362、364、366。每个段表示一组可在网络上单独传送的数据。第一段360包括控制流222、位图流226、性质流232、查账索引流230、修补流234和簇地图流228。第一段也包括标注为224a数据流的一部分。剩余段362、363、364包括数据流224b、224c、224d的其它部分。224a、224b、224c和224d部分共同形成了整个数据流224。
每个段360、362、363、364是可在网络上单独传送的。这样,若第一计算机将图像文件220发送到网络中的第二计算机,并在没有网络连接的过程中,第一计算机则仅需要重新发送那些没有被第二计算机完全接收的段。
这里所引用的所有参考资料通过引用在此合并其全部内容。
考虑到本发明的原理可应用到许多可能的实施例中,应认识到这里结合附图说明的实施例仅是例证性的,且不应对本发明范围做出限制。例如,那些在本领域熟练的技术人员会认识到软件中所示已阐明实施例中的元素可在硬件中实施,(反之亦然),且已阐明的实施例在不背离本发明的主旨的情况下可进行修正和详细修正。因此,这里所述的发明包括所有符合下列权利要求和其等价技术方案的实施例。