重定向来自传统应用程序的实例化的可能冲突的i/o命令的主计算机i/o过滤器的制作方法

文档序号:6455640阅读:357来源:国知局
专利名称:重定向来自传统应用程序的实例化的可能冲突的i/o命令的主计算机i/o过滤器的制作方法
技术领域
本发明涉及应用程序在其上被实例化多次的主计算机。具体而言,本发明 涉及这样一种主计算机,其中应用程序的每一次实例化都可发出至少可能与该
应用程序的另一次实例化冲突的I/O命令。更具体而言,本发明涉及接收I/O 命令并以避免潜在冲突的方式重定向该I/O命令的I/O过滤器。
祖旦 Ff足
如可以理解的,在至少某些计算机设置中,计算设备可被安排来担当多个 处理环境的主机。例如,这样的一台计算设备可以是为多个客户机中的每一个 提供工作空间和计算服务的终端服务器等,或者可以是在其上运行多个虚拟机 的虚拟服务器等。在任一种情况下,该主机可能包括足够的处理能力来为每一 个客户机或每一个虚拟机的每一个进程服务并且以其他方式执行所有必要的 管理功能,包括内务管理、维护等。
如同样可以理解的,处于在任何计算设备上实例化和运行的正常过程中的
应用程序有时会发出关于该计算设备的输入/输出("I/O")命令。例如,1/0命
令可以是打开文件、从这一打开的文件读取或向其写入、打开诸如注册表等数 据存储、从这一打开的数据存储读取或向其写入等。如可以理解的,来自任何
特定应用程序的每一个I/O命令都是关于存储数据或将要存储数据的位置的,
并且都由该应用程序发到这一应用程序在其上实例化的计算设备。
在相对较新的应用程序中,每一个I/O命令的位置都是以相对形式来指定
的,并且期望应用程序的计算设备基于该相对形式、该应用程序、该应用程序
的用户和/或类似项目来导出该位置的绝对形式。1/0命令的位置的这一相对形
式的一个示例是虚拟地址,其由应用程序发出并且由相应的计算设备的地址转 换器来转换为物理地址(即,该位置的绝对形式)。位置的这一相对形式的另 一示例是计算设备的映射的网络驱动器,其实际上是物理服务器上的数据集(即,该位置的绝对形式)。如可以理解的,通过使得应用程序以这一相对形 式来指定位置,给予了该应用程序在其上实例化的计算设备在出于效率考虑可 能是必要的时候改变该位置的绝对形式及解决改变的情况等的至少某些灵活 性。
作为对照,在相对较老的"传统"应用程序中,每一个I/0命令的位置可能 不是以相对形式来指定的,而是可能以绝对形式来指定的。因此,应用程序可 指定物理地址而不是虚拟地址,或者可指定数据集而不是映射的网络驱动器, 如同上述示例一样。
值得注意的是,以绝对形式指定位置的这些传统应用程序当在上述主机上 实例化时呈现了一种担忧,尤其是在该主机具有特定应用程序的多个实例化的 副本,并且该应用程序的每一个副本都正在发出基于同一位置的相同的绝对形 式的关于该位置的冲突的I/0命令的情况下。具体而言,并且作为这种冲突的 I/O命令的示例,该应用程序的第一副本可将第一数据写入该位置,而该应用 程序的第二副本可用第二数据来在该位置处盖写第一副本的第一数据。作为这 些冲突的I/O命令的结果,第一副本可以在稍后从该位置读取被认为是该第一 副本的第一数据的数据,但该数据实际上是第二副本的第二数据。
作为一更具体的示例,假定一传统应用程序被编程为向在绝对C:\DATA\ 处的文件WBPA.DAT写入一特定类型的数据。此外,假定主机是运行用于第 一和第二客户机的工作空间的终端服务器,并且每一个客户机都已选择在该终 端服务器主机上其各自的工作空间中实例化传统应用程序。因此,第一客户机 在该终端服务器主机上的相应的第一工作空间中具有该应用程序的相应的第 一实例化的副本,而第二客户机在该终端服务器主机上的相应的第二工作空间 中具有该应用程序的相应的第二实例化的副本。
现在,如果该终端服务器主机上的应用程序的第一和第二副本中的每一个 都向该终端服务器主机的相同的C:\DATA\WBPA.DAT写入数据,并且应用程 序的第 一 和第二副本中的每 一 个都假定没有其他实体也在向这一 C:\DATA\WBPA.DAT写入数据,则实际上可以确定这一 C:\DATA\WBPA.DAT
将会在无意间被来自该应用程序的两个副本的冲突的数据损坏,假设该终端服 务器不包含可避免这一情况出现的干预实用程序。因此,存在对在主机处的传
8统应用程序的多个副本都各自向被指定为绝对形式的位置写入时防止这一冲 突的这一实用程序的需求。具体而言,存在对主机处实际上将来自应用程序的 每一个副本的数据重定向到特定于这一副本、特定于使用该副本的用户、特定 于这一用户所在的终端等的唯一位置的过滤器的需求。
概述
上述需求由本发明来满足,在本发明中,提供了一种关于其上具有传统应 用程序的多个实例化的副本的主机计算设备的方法,其中该传统应用程序的每 一个副本都处于不同的工作空间中并具有与其相关联的唯一 ID,并且其中该 传统应用程序的每一个副本都至少可能发出访问该主机处的传统应用程序的 所有副本所共有的该主机的绝对位置处的数据的数据请求。该方法用于响应来 自具有特定唯一 ID的传统应用程序的特定副本的数据请求。
在该方法中,确定数据请求的绝对位置具有与其相对应的重定向设备,其 中该重定向设备指定将代替该绝对位置使用的主机的替换位置,并且因此基于 该重定向设备不兑现该数据请求。此外,基于该重定向设备的替换位置以及该 传统应用程序的特定副本的特定唯一 ID来确定该主机的唯一位置,并且重新 发出访问在该主机的唯一位置处的数据的数据请求。由此,对于主机处的传统 应用程序的每一个不同的实例化的副本而言,来自该副本的数据请求并非被定 向到相同的绝对位置,而是到对应于该副本的唯一位置。


以上概述以及以下本发明实施例的详细描述在结合附图阅读时能够被更 好地理解。出于说明本发明的目的,在附图中示出目前优选的实施例。然而, 如应理解的,本发明不限于所示的精确安排和手段。在附图中
图1是表示其中可结合本发明和/或其各部分的各方面的通用计算机系统 的框图2是示出包括多个过滤器的计算设备的输入/输出(I/O)栈的框图; 图3是示出诸如具有图2所示的I/O栈的计算设备等计算设备的框图,其
中该计算设备是多个客户机的主机,并且其中每一个客户机都具有可在其中实例化应用程序的副本的工作空间;
图4是示出根据本发明的各实施例的图3的主机中的图2的I/O栈的框图, 其具有用于确保图3的应用程序的每一个副本在打开文件时引用唯一位置的扇 操作过滤器;以及
图5是示出根据本发明的各实施例的由图4的扇操作过滤器执行的关键步 骤的流程图。
详细描述 计算机环境
图1及以下讨论旨在提供对适于在其中实现本发明的合适的计算环境的 简要概括描述。尽管并非所需,但本发明在诸如程序模块等由诸如客户机工作 站或服务器等计算机执行的计算机可执行指令的一般上下文中描述。 一般而 言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、 组件、数据结构等。此外,应该理解,本发明和/或其各部分可用其它计算机系 统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费 电子产品、网络PC、小型机、大型计算机等。本发明也可以在其中任务由通 过通信网络链接的远程处理设备执行的分布式计算环境中实施。在分布式计算 环境中,程序模块可位于本地和远程存储器存储设备中。
如图1所示,示例性通用计算系统包括常规个人计算机120等,该计算机 包括处理单元121、系统存储器122和将包括系统存储器的各种系统组件耦合 到处理单元121的系统总线123。系统总线123可以是几种类型的总线结构中 的任何一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体 系结构中的任一种的局部总线。系统存储器包括只读存储器(ROM) 124和随 机存取存储器(RAM) 125。基本输入/输出系统126 (BIOS)包含有助于诸如 在启动时在个人计算机120中元件之间传递信息的基本例程,它被存储在ROM 124中。
个人计算机120还包括对硬盘(未示出)读写的硬盘驱动器127、对可移 动磁盘129读写的磁盘驱动器128、以及对诸如CD-ROM或其它光学介质等可 移动光盘131读写的光盘驱动器130。硬盘驱动器127、磁盘驱动器128和光
10盘驱动器130分别通过硬盘驱动器接口 132、磁盘驱动器接口 133和光盘驱动 器接口 134连接到系统总线123。驱动器及其相关联的计算机可读介质为个人 计算机120提供了对计算机可读指令、数据结构、程序模块和其它数据的非易 失性存储。
尽管此处所述的示例性环境使用硬盘、可移动磁盘129和可移动光盘131, 但是应该理解,在示例性操作环境中也可使用能够存储可由计算机访问的数据 的其它类型的计算机可读介质。这样的其它类型介质包括磁带盒、闪存卡、数 字视频盘、贝努利盒式磁带、随机存取存储器(RAM)、只读存储器(ROM) 等。
可在硬盘、磁盘129、光盘131、 ROM 124或RAM 125上存储多个程序 模块,包括操作系统135、 一个或多个应用程序136、其它程序模块137和程 序数据138。用户可通过诸如键盘140和定点设备142等输入设备向个人计算 机120中输入命令和信息。其它输入设备(未示出)可以包括话筒、操纵杆、 游戏手柄、圆盘式卫星天线、扫描仪等。这些和其它输入设备通常由耦合至系 统总线的串行端口接口 146连接至处理单元121,但也可以由其它接口,诸如 并行端口、游戏端口或通用串行总线(USB)连接。监视器147或其它类型的 显示设备也经由接口,诸如视频适配器148连接至系统总线123。除了监视器 147之外,个人计算机通常包括诸如扬声器和打印机等其它外围输出设备(未 示出)。图1的示例性系统还包括主机适配器155、小型计算机系统接口 (SCSI) 总线156以及连接到SCSI总线156的外置存储设备162。
个人计算机120可使用至一个或多个远程计算机,诸如远程计算机149 的逻辑连接在网络化环境中操作。远程计算机149可以是另一个人计算机、服 务器、路由器、网络PC、对等设备或其它常见的网络节点,且通常包括上文 相对于个人计算机120描述的许多或所有元件,尽管在图1中只示出存储器存 储设备150。图1中所示逻辑连接包括局域网(LAN) 151和广域网(WAN) 152。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是 常见的。
当在LAN联网环境中使用时,个人计算机120通过网络接口或适配器153 连接至LAN151。当在WAN联网环境中使用时,个人计算机120通常包括调制解调器154或用于通过诸如因特网等广域网152建立通信的其它装置。或为
内置或为外置的调制解调器154经由串行端口接口 146连接到系统总线123。 在网络化环境中,相对于个人计算机120所描述的程序模块或其部分可以存储 在远程存储器存储设备中。可以理解,所示的网络连接是示例性的,且可以使 用在计算机之间建立通信链路的其它手段。
I/O过滤器
在诸如微软公司的WINDOWS XP操作系统等具有诸如WINDOWS NTFS (NT文件系统)、FAT、 CDFS、 SMB重定向器文件系统或WebDav文件系 统等底层文件系统的当代操作系统中,可以在接收用户1/0 (输入/输出)请求 的I/O管理器和文件系统驱动程序之间插入一个或多个文件系统过滤器驱动程 序。 一般而言,过滤器驱动程序或"过滤器"是通过执行用户需要的各种文件 相关计算任务来增强底层文件系统的进程或组件,这些任务包括诸如让文件系
统I/O (请求和数据)通过反病毒软件、文件系统配额提供者、文件复制器、 加密/压缩产品等任务。
例如,反病毒产品可提供监视去往和来自特定文件类型(.exe、 .doc等) 的1/0以查找病毒签名的过滤器,而文件复制产品可提供执行文件系统级镜像 制作的过滤器。各种类型的文件系统过滤器的其他示例包括涉及系统还原、磁 盘配额实施、打开文件的备份、已删除文件的恢复、文件加密等的过滤器。一 般而言,通过安装文件系统过滤器,计算机用户能够以使得能够在不改变操作 系统或文件系统驱动程序的情况下升级、替换、插入和移除每一个过滤器的方 式来选择和实现所需文件系统特征。
现在转向图2,示出了其中可操作此处所描述的本发明的各方面的系统。 组件包括一个或多个应用程序205、应用程序编程接口 (API) 210、输入/输出 (I/O)管理器220、过滤器管理器230、文件系统240、以及一个或多个"传 统"过滤器225、 235和/或"小型过滤器"250-252。在该配置中,某些过滤器 是与过滤器管理器230相关联的而其他过滤器不是。过滤器230与其他过滤器 (例如,过滤器225和235) —起放置在桟中。
每一个应用程序205可能有时经由API 210例如通过函数或方法调用来向I/O管理器220发出文件系统请求。I/O管理器220然后可确定应发出哪个或哪 些I/O请求来实现该文件系统请求并且沿着可包括过滤器225和/或235和过滤 器管理器230的文件系统栈向下发送每一个I/O请求。I/O管理器220还可以 在与该文件系统请求相关联的操作继续、完成、异常中止等时将数据返回至应 用程序205。注意,所有过滤器都是可任选的,这表现在每一个这样的过滤器 都不必对任何特定I/0请求进行操作。也应注意,过滤器管理器230本身是以 提供用于写入文件系统过滤器的接口为目的的过滤器,并且被设计成允许同时 使用传统过滤器和使用过滤器管理器230的小型过滤器两者。
如可以理解的,图2的过滤器中的至少某一些在实例化时向过滤器管理器 230中的注册机制注册。原则上,这些己注册过滤器包括小型过滤器,并且有 时被称为托管过滤器。出于效率考虑,每一个托管过滤器通常都只注册该过滤 器可能感兴趣的I/0请求,诸如例如,创建、读取、写入、清除、关闭、重命 名、设置信息、査询信息等。作为一个示例,加密过滤器可注册读取和写入1/0 请求,但不注册其中数据无需加密或解密的其他I/0请求。
托管过滤器还可指定是否应向这一过滤器通知每一种类型的I/0请求的预 回调(pre-callback)和后回调(post-callback)。预回调在与I/O请求相关联的 数据从I/0管理器220向文件系统240传播时调用,而后回调在与I/0请求相 关联的数据从文件系统240向I/O管理器220传播时在I/O请求的完成期间调 用。
从每一个I/O请求中,过滤器管理器230可以按适于包括小型过滤器 250-252的托管过滤器使用的统一格式来创建数据结构。在下文中,该数据结 构有时被称为回调数据。过滤器管理器230然后可调用该回调数据或对其的引 用并将其传递给已注册接收对过滤器管理器230接收到的该类型的I/O的回调 的每一个过滤器。注册接收对过滤器管理器230接收到的该类型的I/O的回调 的任何过滤器都可被称为已注册过滤器。
通常,过滤器管理器230将与特定类型的I/O请求相关联的回调数据以预 定次序循序传递给每一个已注册过滤器。例如,如果小型过滤器250和252循 序排序以接收对所有读I/0请求的回调,则在接收到读I/0请求之后,过滤器 管理器230首先将该回调数据传递给过滤器250并且在过滤器250处理完该回
13调数据之后,过滤器管理器230然后将修改的(如果还有的话)该回调数据传
递给过滤器252。
可以将过滤器附连到一个或多个巻。目卩,过滤器可被注册成被调用并接收
与仅仅一个巻或与多于一个巻相关的I/O请求的回调数据。
过滤器可生成其自己的I/O请求,然后可将该I/O请求传递给其他过滤器。 例如,反病毒过滤器可能希望在打开一文件之前读取这一文件。过滤器可阻止 I/O请求进一步传播并且可报告诸如该I/O请求的成功或失败等状态码。过滤 器可以将数据存储在存储器中并持久存储所存储的数据。 一般而言,过滤器可 被创建成执行可由内核模式或用户模式进程执行的任何一组动作,并且可以是 反应性的,例如在行动之前等待直到接收到I/0请求,和/或主动的,例如相对 于由I/O管理器220处理的I/O请求异步地发起I/O请求或执行其他动作。
如以上所阐明的,过滤器管理器230可以与诸如过滤器225和235等其他 传统过滤器一起放在栈中。栈中的每一个传统过滤器225、 235都可处理I/O 请求并将请求传递给该栈中的另一过滤器或其他组件。例如,响应于从应用程 序205接收到的读请求,I/O管理器220可以将I/O请求发送至过滤器225,后 者进而可检查该I/O请求并确定这一 I/O请求并非是感兴趣的,并且之后将该 I/O请求未加改变地传递给过滤器管理器235。如果任何已注册小型过滤器对 该I/O请求感兴趣,则过滤器管理器230然后可将回调数据传递给这一感兴趣 的过滤器。在每一个感兴趣的已注册过滤器都检査了该回调数据并对其采取了 行动之后,过滤器管理器230然后可将该I/O请求传递给过滤器235。过滤器 235然后可基于该I/O请求执行某一动作并且然后可将该I/O请求传递给文件 系统240。
文件系统240为该I/O请求服务并且将结果传递给过滤器235。通常,该 结果按与该I/O请求行进的次序相反的次序传递,其在此将会首先到过滤器 235,然后到可将回调数据发送至每一个感兴趣的已注册过滤器的过滤器管理 器230,并且然后到过滤器225。每一个过滤器都可检査该结果并且或许在将 该结果向上传递之前基于其执行一动作。
在主机上实例化的传统应用程序的副本
14现在转向图3,可以看出计算设备IO被安排成担当多个处理环境的主机。 如以上所阐明的,这一主机10的示例包括为多个客户机14中的每一个提供工
作空间12和计算服务的终端服务器等,并且还包括在其上运行多个虚拟机12 的虚拟服务器等。在任一种情况下,主机10包括足够的处理能力来为每一个 工作空间/虚拟机12 (以下称为"工作空间12")的每一个进程服务。同样,主 机10包括足够的处理能力来执行必要的管理功能,包括内务管理、维护等。 这一担当终端服务器、虚拟服务器等的主机10 —般对相关公众是已知的或应 是显而易见的,并因此除所提供的之外,无需在此详细阐明。因此,这一主机 IO可以是任何合适的主机,而不背离本发明的精神和范围。
以类似于以上所阐明的方式,图3的主机10的每一个工作空间12都可能 已在其中实例化了一个或多个应用程序205。正常操作过程中的每一个应用程 序205自己都可发出导致主机10处的一个或多个I/O请求的文件系统请求等, 如以上结合图2所讨论的。例如,文件系统请求可以是打开文件、从这一打开 的文件中读取或向其写入等。以类似的方式,每一个应用程序205都可发出各 自导致不一定针对文件系统240的一个或多个I/O请求等的其他数据请求等。 例如,该其他数据请求可以是打开诸如注册表等数据存储,从这一打开的数据 存储中读取或向其写入等。如可以理解的,这一其他数据请求可以由与处理文 件系统请求的相同的栈来处理,或者可以由另一个栈来处理,或者可以由另一 结构或设备来处理。然而,出于本发明的目的,假设不管处理发出的请求的栈、 结构或设备,这样的栈、结构或设备都包括过滤器或类似过滤器的组件。
无论如何,来自任何特定工作空间12的任何特定应用程序205的每一个 文件系统或其他数据请求(以下称为"请求")都是关于存储数据或将要存储数 据的位置的,并且如由应用程序205发出的请求在这一应用程序205在其上实 例化的主机10处处理。因此,这一主机10包括如图2所示的栈等,其具有用 于处理应针对文件系统240、数据存储、注册表等的、对其指定位置的请求的 适当的过滤器。
如以上所阐明的,每一个应用程序205都可以是能够以相对形式指定每一 位置的相对较新的应用程序205,或者可以是只能够以绝对形式指定每一位置 的相对较老的"传统"应用程序205。如应当理解的,以相对形式来指定位置的
15应用程序205期望主机10基于该相对形式、该应用程序、该应用程序的用户、
客户机14和/或类似项目来导出该位置的绝对形式。这一主机20可以按任何适 当的方式从该相对形式中导出绝对形式,而不背离本发明的精神和范围。假设 主机20将采用适当的过滤器来从该相对形式中导出该位置的绝对形式,诸如 或者结合图2或者结合文件系统管理器230、另一管理器(未示出)等来阐明 的过滤器之一。这样做一般是已知的或应是显而易见的,并因此除所提供的之 外,无需在此详细阐明。
I/O命令的位置的这一相对形式的一个示例是虚拟地址,其由应用程序发 出并且由主机10的地址转换器来转换为物理地址(即,该位置的绝对形式)。 位置的这一相对形式的另一示例是实际上是物理服务器上的数据集(即,该位 置的绝对形式)的计算设备的映射的网络驱动器。位置的这一相对形式的又一 示例是根据诸如。/。homedrive。/。、 %homepath%、 。/。systemroot。/。等通配符来描述 的位置。在这一示例中,并且如应当理解的,。/。homedrive。/cAdataUogV^事实上 。/。homedrive。/。被确定为c:的情况下将会被解析成c:\data\log\。如可以理解的, 以相对形式指定位置提供了允许基于诸如例如不同的用户、不同的客户机14 等不同的情况来将该位置解析成不同的绝对形式的灵活性。
作为对照,像传统应用程序205那样以其绝对形式直接指定位置不提供允 许基于不同的情况来不同地解析位置的灵活性。最值得注意的是,传统应用程 序205在根据其绝对形式来指定位置方面的不灵活在这一传统应用程序205的 多个副本在主机10上的不同的工作空间12中实例化,但是应用程序205的所 有实例化的副本在执行数据请求时都引用相同的绝对位置的情况下存在问题。 具体而言,并且如应当理解的,应用程序205的所有实例化的副本引用相同的 绝对位置将会导致冲突和数据损坏。
具体而言,且如从图3中可以看出,如果传统应用程序205的每一个副本 都被编程为向在诸如CADATAX等主机10的绝对位置处的文件16写入特定类 型的数据,则第一工作空间12中的传统应用程序205的第一副本将向在这一 绝对位置处的这一文件16写入这一数据,第二工作空间12中的传统应用程序 205的第二副本将向在相同的绝对位置处的相同的文件16写入这一数据,以此 类推。如应该很明显的,且假设传统应用程序205的每一个副本都不知道该情形,则在主机10的相同的位置处的相同的文件16无意间从传统应用程序205 的多个副本接收数据将导致这一文件变为不可救药地被来自传统应用程序205 的两个副本的冲突的数据损坏。
扇操作过滤器(fanning filter)
于是,在本发明的一个实施例中,并且在传统应用程序205的多个副本在 主机10的相应工作空间12中实例化并且所有副本在执行数据请求时都引用在 相同的绝对位置处的相同的文件16的情况下,来自传统应用程序205的每一 个副本的数据请求都被扇出到在唯一的、非冲突位置处的文件16。具体而言, 现在转向图4,在本发明中,在图2的桟等中提供扇操作过滤器18,其中该扇 操作过滤器18用于将每一个这样的数据请求远离其绝对位置20重定向,并且 还指定一相应的唯一位置26。注意,如图4所示的扇操作过滤器18直插在栈 中并且是唯一示出的过滤器,但是扇操作过滤器18也可伴有其他过滤器并且 其自身可以在栈的主干的外部,所有这些都不背离本发明的精神和范围。因此, 扇操作过滤器18可被实现为传统过滤器或小型过滤器。
在本发明的一个实现中,事实上不应由传统应用程序205使用的主机10 的绝对位置20通过随其一起包括诸如例如重解析点24等重定向设备或将该重 定向设备附加到这一绝对位置20来这样标明。如已知的或应显而易见的,这 一重解析点24或其他重定向设备本质上是指定应采用的替换位置22而不是所 讨论的绝对位置20的指令。通常,遇到并采用重解析点24对于发出导致遇到 这一重解析点24的数据请求的应用程序205而言是透明的。例如,如果作为 打开在绝对位置20处的文件16的数据请求的一部分遇到重解析点,则返回给 这一数据请求的是句柄,应用程序205假设该句柄是对于在绝对位置20处的 文件16的,但实际上该句柄可以是对于在包括如在上述绝对位置20处的相应 的重解析点24中所引用的替换位置22的任何位置处的文件16的。
于是,本质上,在在绝对位置20处的重解析点24的帮助下,本发明的扇 操作过滤器18"翻新"传统应用程序205以使得主机10处的传统应用程序205 的每一个副本都具备基于重解析点24中所阐明的替换位置22的唯一位置26。 此处需注意,这一唯一位置26可基于用于区分传统应用程序205的每一个副本的任何适当的特性来选择而不背离本发明的精神和范围。例如,唯一位置26
可基于与传统应用程序205的每一个副本唯一地相关联的ID来选择,其中该 唯一ID可以是副本的ID、副本用户的ID、相应的客户机14的ID等。
在本发明的一个实施例中,假设重解析点24中所阐明的替换位置22是以 分层形式定义的。例如,替换位置22可以是目录、分支等,其可进而可以是 另一目录的子目录或另一分支的子分支,并且其本身可包括一个或多个子目录 或子分支(视情况而定)。于是,在这一实施例中,对于传统应用程序的任何 特定副本的扇操作过滤器18基于由该副本指定的绝对位置20的重解析点24 中所指定的替换位置22,并且还基于与该副本相关联的唯一 ID来确定其唯一 位置26,其中该唯一 ID用于将替换位置22的子目录或子分支指定为该副本 的唯一位置26。
例如,如果传统应用程序205指定其特定文件16将被存储在诸如 C:\DATA等绝对位置20处,并且这一绝对位置20具有将F:\SHARE指定为替 换位置22的重解析点24,并且如果副本的唯一 ID被指定为这一副本的用户 的用户ID USER—A,则扇操作过滤器将组合作为替换位置22的F:\SHARE和 作为该副本的唯一 ID的USER—A以产生作为将用于存储传统应用程序205的 文件16的唯一位置26的F:\SHARE/USER—A。此处需注意,情况可能是绝对 位置20的重解析点24可能将绝对位置20指定为替换位置22,在这种情况下, 唯一位置26将会是该绝对位置20的子目录然而,在任一种情况下,传统应用 程序205的每一个副本都具备存储其文件16的唯一的且不同的位置26,其中 每一个唯一位置26都是从替换位置22中扇出的,且不应引起各副本之间的冲 夭。
可以理解,为了实现本发明,被主机10的每一个传统应用程序205引用 的该主机10的每一个绝对位置20都需要相应的重解析点24等。创建每一个 这样的重解析点24等并将其附加到相应的绝对位置20可以按任何适当的方式 来执行而不背离本发明的精神和范围。例如,主机10可包括或可访问用于在 必要时创建并附加每一个重解析点24的适当的管理或维护实用程序。
现在转向图5,可以看出在本发明的一个实施例中,主机10处的I/O栈等 中的扇操作过滤器18使用由在该主机10处实例化的传统应用程序205的副本
18引用的绝对位置20的重解析点24按以下方式来确定该传统应用程序205的副 本的相应的唯一位置26。最初,假设传统应用程序205发出对于在绝对位置 20 (例如,C:\DATA)处的文件16 (例如,INFO.TXT)的数据请求(步骤501 ), 并且作为服务该数据请求的一部分,将通过如图4所示的I/O栈处的适当的(第 一)I/O请求来在该绝对位置20处打开文件16。因此,该第一 I/O请求可以从 I/O管理器220经由扇操作过滤器18向文件系统240传递。
通常,文件系统240在接收到打开在绝对位置20处的文件16的第一 I/O 请求时就注意到该绝对位置20具有附加的重解析点24,并因此不兑现这一第 一I/0请求,而是返回一重解析响应(步骤503)。通常,这一重解析响应具 有出错响应的本质,并且无论如何都将标识重解析点24和/或将包括包含替换 位置(例如,C:\DATA\REPARSE)在内的该重解析点24的数据。
重要的是,在本发明的一个实施例中,扇操作过滤器18是已注册的,以 使得来自文件系统240的重解析响应被传递给这一扇操作过滤器18。因此,在 遇到该重解析响应(步骤505)时,扇操作过滤器18标识其中的替换位置22 (步骤507)并且还标识发起该数据请求的传统应用程序205的副本的唯一 ID (例如,上述USER—A)(步骤509)。注意,传统应用程序205的副本的这 一唯一ID可以按任何适当的方式来标识而不背离本发明的精神和范围。例如, 扇操作过滤器可基于由主机10维护的数据来访问该唯一 ID。
无论如何,有了所标识的替换位置22和所标识的唯一ID,扇操作过滤器 将唯一位置26确定为所标识的替换位置22的子目录,其中该子目录的名称是 所标识的唯一ID (例如,C:\DATA\REPARSE\USER_A)(步骤511),并将 这一确定的唯一位置26传递回给I/O管理器作为忽略该第一 I/O请求并改为基 于该第一I/0请求发岀第二I/0请求的请求的一部分(步骤513)。如现在可 以理解的,第二I/0请求实质上与第一I/0请求相同,不同之处在于文件将在 所确定的唯一位置26而不是绝对位置20或替换位置22处打开。
如应当理解的,基于第二I/0请求,并且假设不存在不寻常情况,该第二 I/O请求从I/O管理器传递到文件系统240 (步骤515),其中文件系统240响 应于该请求实际上打开在唯一位置26处的文件16 (步骤517),并且将对于 在该唯一位置26处打开的文件16的句柄等经由I/O管理器220返回给做出请求的应用程序205。因此,应用程序205然后可使用该句柄来访问在该唯一位 置26处的文件16 (步骤519)。
值得注意的是,更改文件16的位置的过程对于传统语言程序205而言是 完全透明的。即,尽管文件16被请求在绝对位置20处打开但改为在唯一位置 26处打开,但是应用程序205在接收对于文件16的句柄时只关心该句柄实际 上访问所打开的文件16。因此,虽然文件16在唯一位置26而不是如传统应用 程序205所请求的绝对位置20处打开,但这一传统应用程序205并没有受到 不利的影响。更重要的是,通过使用唯一位置26而不是绝对位置20,避免了 主机处的传统应用程序205的多个副本之间的冲突,并且文件16中的数据不 会被损害,因为传统应用程序205的每一个副本都使用其文件16的单独的位 置。
在至此所阐明的本发明中,扇操作过滤器18使用如从文件系统240接收 到的重解析点24等来重定向打开文件16的请求。然而,注意,在至少某些系 统中文件系统240不能够使用这一重解析点24。也应注意,在至少某些系统中 请求不是被定向到文件系统240而是被定向到诸如数据存储、注册表等替换数 据源。在任一种情况下,并且在本发明的一替换实施例中,重解析点24并不 是从文件系统240等获得的。相反,在这一替换实施例中,扇操作过滤器18 访问具有与可从重解析点24处获得的信息相类似的信息的映射转换表等。因 此,并且如应当理解的,对于若干绝对位置20中的每一个而言,映射转换表 等将包括相应的相对位置22,并且扇操作过滤器18将在打开每一个文件16 之前参考该映射转换表以确定是否将要使用替换位置22而不是指定的绝对位 置20。
结论
实现结合本发明执行的过程所需的编程相当直接,且应对相关编程公众是 显而易见的。因而,这样的编程不附在此。因此,可采用任何特定的编程来实 现本发明,而不背离其精神和范围。
在以上描述中,可以看到,本发明包括当主机10处的传统应用程序205 的多个副本各自向被指定为绝对形式的位置20写入时防止冲突的新的且有用的扇操作过滤器18。主机IO处的扇操作过滤器18实际上将来自应用程序205 的每一个副本的数据重定向到特定于这一副本、特定于使用该副本的用户、特 定于这一用户所在的终端等的唯一位置26。
应当理解,可对上述实施例作出改变而不脱离其发明概念。仅作为一个示 例,虽然本发明主要是按照在文件系统位置处打开的文件16来阐明的,但本 发明同样适用于在文件系统位置处打开的子目录或目录。类似地,本发明同样 适用于通过适当的栈等在注册表中打开的注册表项、通过适当的栈等在数据存 储中打开的数据存储条目等等。从而应理解,本发明不限于所公开的具体实施 例,而是旨在覆盖落入如由所附权利要求书定义的本发明的精神和范围内的修 改。
2权利要求
1. 一种关于其上具有传统应用程序的多个实例化的副本的主机计算设备的方法,所述传统应用程序的每一个副本都处于不同的工作空间中并且具有与其相关联的唯一ID,所述传统应用程序的每一个副本都至少可能发出打开在所述主机处的传统应用程序的所有副本所共有的所述主机的绝对位置处的文件的数据请求,所述方法用于响应来自具有特定唯一ID的所述传统应用程序的特定副本的数据请求并且包括确定所述数据请求的绝对位置具有与其相对应的重定向设备,所述重定向设备指定将要代替所述绝对位置使用的所述主机的替换位置;基于所述重定向设备不兑现所述数据请求;基于所述重定向设备的替换位置以及所述传统应用程序的特定副本的特定唯一ID来确定所述主机的唯一位置;以及重新发出打开在所述主机的唯一位置处的文件的数据请求,由此对于在所述主机处的所述传统应用程序的每一个不同的实例化的副本而言,来自该副本的数据请求并非被定向到相同的绝对位置,而是到对应于所述副本的唯一位置。
2. 如权利要求1所述的方法,其特征在于,包括在I/O管理器处生成对应于所述数据请求的第一 I/O请求,所述第一 I/O 请求包括来自所述数据请求的所述文件及其绝对位置的标识;在文件系统处接收所生成的第一i/o请求并在所述文件系统处确定所接收到的第一 I/O请求的绝对位置具有与其相对应的重定向设备,所述重定向设备 指定将代替所述绝对位置使用的所述主机的替换位置;在所述文件系统处基于对应于所接收到的第一i/o请求的绝对位置的所述重定向设备不兑现所接收到的第一 I/O请求,并且返回包括所述重定向设备的 替换位置的重定向响应;在扇操作过滤器处接收返回的重定向响应,在所述扇操作过滤器处标识所 接收到的重定向响应中的替换位置,并且还标识发出所述数据请求的所述传统 应用程序的特定副本的特定唯一 ID;基于所标识的替换位置和所标识的唯一 ID在所述扇操作过滤器处确定所 述主机的唯一位置,并且将所确定的唯一位置传递给I/O管理器作为忽略所述 第一 I/O请求并改为基于所述第一 I/O请求生成第二 I/O请求的请求;以及在所述I/O管理器处生成包括所述文件和所述唯一位置的标识的第二 I/O 请求;由此对于在所述主机处的所述传统应用程序的每一个不同的实例化的副 本而言,来自该副本的数据请求并非被定向到相同的绝对位置,而是到对应于 所述副本的唯一位置。
3. 如权利要求2所述的方法,其特征在于,包括在所述扇操作过滤器处将 所述唯一位置确定为所标识的替换位置的分支,所述分支具有所标识的唯一 ID 作为其名称。
4. 如权利要求2所述的方法,其特征在于,还包括在所述文件系统处接收 所生成的第二 I/O请求并在所述文件系统处确定所接收到的第二 I/O请求的唯 一位置不具有与其相对应的任何重定向设备,并基于该确定在所述文件系统处 通过打开在所述第二 I/O请求中所指定的所述主机的唯一位置处的文件来兑现 所接收到的第二 I/O请求,并将对于在所述唯一位置处打开的文件的句柄返回 给所述传统应用程序的特定副本。
5. 如权利要求4所述的方法,其特征在于,还包括所述应用程序的特定副 本使用所述句柄来访问在所述唯一位置处的文件。
6. 如权利要求1所述的方法,其特征在于,包括将所述唯一位置确定为所 标识的替换位置的分支,所述分支具有所标识的唯一 ID作为其名称。
7. 如权利要求1所述的方法,其特征在于,还包括接收重新发出的数据请 求并确定所述重新发出的数据请求的唯一位置不具有与其相对应的任何重定 向设备,并基于该确定通过打开在所述重新发出的数据请求中所指定的所述主机的唯一位置处的文件来兑现所述重新发出的数据请求,并将对于在所述唯一 位置处打开的文件的句柄返回给所述传统应用程序的特定副本。
8. 如权利要求7所述的方法,其特征在于,还包括所述应用程序的特定副 本使用所述句柄来访问在所述唯一位置处的文件。
9. 如权利要求1所述的方法,其特征在于,包括将所请求的所述文件的位 置从所述绝对位置更改成所述唯一位置而不向所述传统应用程序的特定副本 通知这一更改。
10. 如权利要求l所述的方法,其特征在于,包括确定所述数据请求的绝对位置具有与其相对应的重定向设备,所述重定向设备选自附加到所述绝对 位置的重解析点以及如从转换表获得的对应于所述绝对位置的重定向信息。
11. 一种关于其上具有传统应用程序的多个实例化的副本的主机计算 设备的方法,所述传统应用程序的每一个副本都处于不同的工作空间中并且具有与其相关联的唯一 ID,所述传统应用程序的每一个副本都至少可能发出访 问在所述主机处的传统应用程序的所有副本所共有的所述主机的绝对位置处 的数据的数据请求,所述方法用于响应来自具有特定唯一ID的所述传统应用 程序的特定副本的数据请求并且包括确定所述数据请求的绝对位置具有与其相对应的重定向设备,所述重定向设备指定将要代替所述绝对位置使用的所述主机的替换位置; 基于所述重定向设备不兑现所述数据请求;基于所述重定向设备的替换位置以及所述传统应用程序的特定副本的特定唯一ID来确定所述主机的唯一位置;以及重新发出访问在所述主机的唯一位置处的数据的数据请求, 由此对于在所述主机处的所述传统应用程序的每一个不同的实例化的副本而言,来自该副本的数据请求并非被定向到相同的绝对位置,而是到对应于所述副本的唯一位置。
12. 如权利要求ll所述的方法,其特征在于,包括在I/O管理器处生成对应于所述数据请求的第一 I/O请求,所述第一 I/O 请求包括来自所述数据请求的所述数据及其绝对位置的标识;在数据存取系统处接收所生成的第一 I/O请求并在所述数据存取系统处确 定所接收到的第一 I/O请求的绝对位置具有与其相对应的重定向设备,所述重 定向设备指定将代替所述绝对位置使用的所述主机的替换位置;在所述数据存取系统处基于对应于所接收到的第一i/o请求的绝对位置的所述重定向设备不兑现所接收到的第一I/0请求,并且返回包括所述重定向设 备的替换位置的重定向响应;在扇操作过滤器处接收返回的重定向响应,在所述扇操作过滤器处标识所 接收到的重定向响应中的替换位置,并且还标识发出所述数据请求的所述传统 应用程序的特定副本的特定唯一 ID;在所述扇操作过滤器处基于所标识的替换位置和所标识的唯一 ID确定所 述主机的唯一位置,并且将所确定的唯一位置传递给1/0管理器作为忽略所述 第一 I/O请求并改为基于所述第一 I/O请求生成第二 I/O请求的请求;以及在所述I/O管理器处生成包括所述数据和所述唯一位置的标识的第二 I/O 请求权;由此对于在所述主机处的所述传统应用程序的每一个不同的实例化的副 本而言,来自该副本的数据请求并非被定向到相同的绝对位置,而是到对应于 所述副本的唯一位置。
13. 如权利要求12所述的方法,其特征在于,包括在所述扇操作过滤 器处将所述唯一位置确定为所标识的替换位置的分支,所述分支具有所标识的 唯一ID作为其名称。
14. 如权利要求12所述的方法,其特征在于,还包括在所述数据存取 系统处接收所生成的第二 I/O请求并在所述数据存取系统处确定所接收到的第 二 I/O请求的唯一位置不具有与其相对应的任何重定向设备,并基于该确定在所述数据存取系统处通过开放对在所述第二 I/O请求中所指定的所述主机的唯 一位置处的数据的访问来兑现所接收到的第二 I/O请求,并将对于在所述唯一 位置处的数据的句柄返回给所述传统应用程序的特定副本。
15. 如权利要求14所述的方法,其特征在于,还包括所述应用程序的特定副本使用所述句柄来访问在所述唯一位置处的数据。
16. 如权利要求11所述的方法,其特征在于,包括将所述唯一位置确 定为所标识的替换位置的分支,所述分支具有所标识的唯一 ID作为其名称。
17. 如权利要求11所述的方法,其特征在于,还包括接收重新发出的 数据请求并确定所述重新发出的数据请求的唯一位置不具有与其相对应的任 何重定向设备,并基于该确定通过开放对在所述重新发出的数据请求中所指定 的所述主机的唯一位置处的数据的访问来兑现所述重新发出的数据请求,并将 对于在所述唯一位置处的数据的句柄返回给所述传统应用程序的特定副本。
18. 如权利要求17所述的方法,其特征在于,还包括所述应用程序的 特定副本使用所述句柄来访问在所述唯一位置处的文件。
19. 如权利要求11所述的方法,其特征在于,包括将所请求的所述数 据的位置从所述绝对位置更改成所述唯一位置而不向所述传统应用程序的特 定副本通知这一更改。
20. 如权利要求11所述的方法,其特征在于,所请求的数据处于数据 存储和注册表中的一个中,所述方法包括确定所述数据请求的绝对位置具有与 其相对应的重定向设备,所述重定向设备是如从转换表获得的对应于所述绝对 位置的重定向信息。全文摘要
主机计算设备具有传统应用程序的多个实例化的副本。每一个副本都可发出访问在所有副本所共有的绝对位置处的数据的数据请求。为了响应来自特定副本的数据请求,确定该数据请求的绝对位置具有指定一替换位置的重定向设备,并且不兑现该数据请求。从该替换位置以及传统应用程序的特定副本的唯一ID中确定一唯一位置,并且重新发出访问在该唯一位置处的数据的数据请求。来自传统应用程序的不同副本的数据请求由此被定向到不同的唯一位置。
文档编号G06F15/16GK101501673SQ200780029592
公开日2009年8月5日 申请日期2007年8月7日 优先权日2006年8月11日
发明者A·A·杜什, N·R·克里斯琴森, V·拉玛纳坦 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1