在本地缓存远程文件的方法和系统的制作方法

文档序号:6650362阅读:195来源:国知局
专利名称:在本地缓存远程文件的方法和系统的制作方法
技术领域
本发明通常涉及计算机,尤其涉及文件系统。
背景技术
在数据中心(如,服务器区)的一组内容服务器可以向各种位置的许多客户机提供内容服务。先前,由给定的服务器农场所包容的内容组总量相对较小,并且能够没有额外成本地被发送并存储在农场中每个内容服务器上。然而现在,服务器农场可提供的内容数量经常超过几千亿个字节。为服务器购买大存储量的硬盘、向它们提供数据中心的所有内容、并保持它们中的内容不断更新,这样它们可以提供任何所要求的存储和发送成本都非常巨大的内容。当使用超过一个数据中心来提供内容服务时这是尤其正确的。
所需要的是一种在本地有效缓存远程数据的方法和系统,这样当在内容服务器的硬盘上缓存内容的一个子集时,整个内容组可以被存储在分散的专用存储器中。理想地,该方法和系统对任何请求数据的应用而言是几乎或完全透明的。

发明内容
简要地,本发明提供了用于在本地缓存远程对象的方法和系统。接收到访问对象的请求。确定该对象是否被缓存。如果该对象被缓存且该请求不是要创建新的对象、修改已经存在的对象、或打开目录,则定向该请求至本地文件系统。否则,定向该请求至远程文件系统。
在本发明的一个方面,过滤器监视请求并向缓存服务报告在本地和远程文件系统上被访问的对象的名称。缓存服务可对该信息应用策略以确定在本地缓存哪些远程对象以及清除哪些本地已缓存对象。
在本发明的另一个方面,该过滤器监视对本地和远程文件系统的请求,且该过滤器本身可以应用策略以确定在本地缓存哪些远程对象以及清除哪些本地已缓存对象。
在本发明的另一个方面,该过滤器接收到对象已经在远程改变的通知,并删除本地已缓存的对象副本。
结合附图根据下面的详细描述,其他方面会变得更显而易见。


图1是表示可以结合本发明的计算机系统的框图。
图2是表示根据本发明的各个方面可运行本发明的系统组件的一个示例性安排的框图。
图3是表示根据本发明的各个方面可运行本发明的系统组件的另一个示例性安排的框图。
图4是表示根据本发明的各个方面可运行本发明的系统组件的另一个示例性安排的框图。
图5是表示根据本发明的各个方面可实现本发明的一个示例性环境的框图。
图6是表示根据本发明的各个方面可实现本发明的系统组件的一个示例性安排的框图。
图7是表示根据本发明的各个方面可实现本发明的系统组件的一个示例性安排的框图。
图8是通常表示根据本发明的各个方面在确定是否重定向I/0操作至本地缓存器时可能发生的动作的流程图。
图9是通常表示根据本发明的各个方面在确定是否重定向I/O操作至本地缓存器时可能发生的对应于图8中块835的动作的流程图。
图10是通常表示根据本发明的各个方面当远程对象改变时可能发生的动作的流程图。
图11是通常表示根据本发明的各个方面可实现本发明的系统组件的另一个示例性安排的框图。
具体实施例方式
示例性操作环境图1示出可实现本发明的示例性计算系统环境100的一个示例。计算系统环境100仅仅是合适的计算环境的一个示例且不旨在对本发明使用范围或功能提出任何限制。计算环境100也不能被解释是对示例性操作环境100中示出的任一组件或组合的有任何依赖或要求。
本发明可操作于多种其他通用功能或特定功能计算系统环境或配置。适合使用本发明的共知计算系统、环境、和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持或膝上设备、多处理器系统、基于微控制器的系统、机顶盒、可编程消费品电器、网络PC、小型机、大型机、包括任何上述系统或设备的分布式计算环境、以及诸如此类设备。
本发明可被描述在计算机可执行指令(诸如由一个计算机或其他设备执行的程序模块)的通常环境中。通常有,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、以及诸如此类。本发明还可被实现于分布式计算环境,其中的任务被由通信网络连接在一起的远程处理设备所执行。在一个分布式计算环境中,程序模块可位于本地和远程计算机存储介质,包括内存存储器设备。
参照图1,一个用于实现本发明的示例性系统包括一个如计算机110形式的通用功能计算设备。计算机110的组件可包括,但不限于,处理单元120、系统存储器130、以及将包括系统存储器在内的各种系统组件连接到处理单元120的系统总线121。系统总线121可为多种类型的总线结构的任何一种,包括存储器总线或存储器控制器、外围设备总线、以及使用任何的多种总线体系结构中任何一种的局部总线。作为示例,而非限制,这些体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及外围设备组件互连(PCI)总线(也被称为Mezzanine总线)。
计算机系统110通常包括多种计算机可读介质。计算机可读介质可为计算机110可访问的任何可用介质,并包括易失和非易失介质、可移动和不可移动介质。通过示例,而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括通过任何方法或技术实现的,用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的,易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪速存储器或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光学盘存储器、磁带盒、磁带、磁盘存储器或其他磁存储器设备、或任何其他可被用来存储所需信息并能够由计算机110访问的介质。通信介质通常以一个已调制的数据信号,诸如载波或其他传输机制的形式来体现计算机可读指令、数据结构、程序模块或其他的数据,并包括任何信息传递介质。术语“已调制的数据信号”表示为了在信号内编码信息而设置或改变其一个或多个特征的信号。通过示例,而非限制,通信介质包括有线介质,诸如有线网络或直线连接、以及无线介质诸如声学的、FR、红外以及其他无线介质。任何上述的组合也被包括在计算机可读介质的范围内。
系统存储器130包括易失和/或非易失存储器形式的计算机存储器介质,诸如只读存储器(ROM)131以及随机访问存储器(RAM)132。基本输入/输出系统133(BIOS)一般被存储在ROM 131中,它包括诸如在起动过程中有助于计算机110内基本元件间传递信息的基本例程。RAM 132通常包括可由处理单元120立即访问和/或当前进行操作的数据和/或程序模块。通过示例,而非限制,图1示出了操作系统134、应用程序135、其他程序模块136、以及程序数据137。
计算机110也可包括其他可移动/不可移动的易失/非易失计算机存储介质。仅仅作为示例,图1示出了从不可移动非易失磁性介质读取或写入的硬盘驱动器140、从可移动非易失磁盘152读取或写入的磁盘驱动器151、以及一个从诸如CD-ROM或其他光学介质的可移动非易失光盘156读取或写入的光盘驱动器155。其他可被用于示例性操作环境的可移动/不可移动,易失/非易失计算机存储介质包括,但不限于,磁带盒、闪速存储卡、数字通用光盘、数字录影带、固态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中。其他输入设备(没有示出)可包括麦克风、操纵杆、游戏垫、卫星天线、扫描仪、手持PC的触摸敏感屏幕或其他手写平板等等。这些及其他输入设备经常经由连接到系统总线用户输入接口160连接到处理单元120,但也可通过其他接口和总线结构进行连接,诸如并行端口、游戏端口或通用串行总线(USB)。一监视器191或其他类型的显示设备也经由诸如视频接口190的接口被连接到系统总线121。除了监视器以外,计算机也可包括其他外围输出设备,如扬声器197和打印机196,它们可通过输出外围接口195连接。
计算机110可操作在一个网络环境下,该网络环境使用连接到一个或多个诸如远程计算机180的远程计算机的逻辑连接。远程计算机180可为个人计算机、服务器、路由器、网络PC、对等设备或其他公共网络节点,并通常包括许多或所有上述对应于计算机110的元件,虽然在图1中只示出了一个内存存储设备181。图1描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也包括其他网络。这些网络化环境在办公室、企业级计算机网络、内部网和因特网上是普通的。
当用于LAN网络环境时,计算机110通过网络接口或适配器170连接到LAN 171上。当用于WAN网络环境时,计算机110通常包括调制解调器172或其他装置,用于在诸如因特网的WAN 173上建立通信。调制解调器172可以是内置的或外置的,它通过用户输入接口160或其他合适的机制连接到系统总线121上。在网络环境中,与计算机110相关描述的程序模块或它的部分可存储在远程存储器设备中。通过示例,而非限制,图1示出了远程应用程序185驻留在存储器设备181上。可以被理解的是,所示网络连接是示例性的,且可以使用在计算机之间建立通信连接的其他装置。
示例性过滤器和它的安排凭借现今的操作系统(诸如微软公司(Microsoft Corporation)的WindowsXP操作系统,并带有诸如WindowsNTFS(WindowsNT文件系统)、FAT、CDFS、SMB重定向文件系统、或WebDav文件系统的底层文件系统)可在接收用户I/O请求的I/O管理器和文件系统驱动器之间插入一个或多个文件系统过滤器驱动器。通常,过滤器驱动器(有时在此简单称为“过滤器”)为通过执行各种与文件相关的用户所期望的计算任务来增强底层文件系统的处理或组件,计算任务包括任务诸如将文件系统I/O(请求和数据)传递通过反病毒软件、文件系统定额提供者、文件复制器、以及加密/压缩产品。
例如,反病毒产品提供监视进入和离开特定文件类型(.exe、.doc、以及类似类型)的I/O以寻找病毒特征的过滤器,而文件复制产品执行文件系统级别的镜像。其他类型的文件系统过滤器驱动器针对系统还原(在要做出修改时备份系统文件,这样用户可以返回到原始的状态)、磁盘定额执行、开放文件的备份、恢复已删除的文件、文件加密,等等。这样,通过安装文件系统过滤器驱动器,计算机用户可选择它们想要并且需要的文件系统特征,在某种意义上不改变实际操作系统或文件系统驱动器代码而允许组件的升级、替换、插入、以及移动。
图2是表示根据本发明的各种方面运行本发明的系统组件的示例性安排的框图。组件包括一个或多个应用程序205、应用程序接口(API)210、输入/输出(I/O)管理器215、过滤器管理器220、文件系统225,以及一个或多个过滤器230-232。
应用程序205可通过API 210向I/O管理器215提出文件系统请求(如,通过功能/方法调用)。I/O管理器215会确定可以提出哪个或哪些I/O请求,以满足每个请求并将每个I/O请求发送至过滤器管理器220。I/O管理器210也可在与文件系统请求相关的操作处理、完成、或取消时将数据返回给应用程序205。
在一则实施例中,过滤器包括对象或类似物,在过滤器管理器220中使用注册机制初始化注册它们(如,在对象的初始化步骤中)。为了有效率,每个过滤器通常只注册它们在处理中关注的文件系统请求。为此,作为注册的一部分,每个过滤器通知过滤器管理器220它所关注的I/O请求的类型(如,创建、读取、写入、关闭、重命、以及类似)。例如,加密过滤器可注册读取和写入I/O,但不注册其他不需要加密或解密数据(的I/O)。类似地,定额过滤器会只关注对象创建以及对象写入。
除了指定所关注的I/O请求类型以外,过滤器还可以指定是否要将每个I/O类型的预回叫和在后回叫通知给该过滤器。预回叫是当与I/O请求相关的数据从I/O管理器215传送到文件系统225时调用的,而在后回叫是当与I/O请求相关的数据从文件系统225传送到I/O管理器215时,I/O请求完成期间调用的。
从每个I/O请求中,过滤器管理器220可创建统一格式的适合过滤器230-232使用的数据接口。以下,该数据结构有时被称为回叫数据。过滤器管理器220随后可调用并将回叫数据传递至每个过滤器,这些过滤器已经注册以接收由过滤器管理器220接收到的I/O类型的回叫。任何注册以接收用于由过滤器管理器220所接收的I/O类型的回叫的过滤器有时被称为已注册过滤器。
通常,过滤器管理器220按照排序已注册过滤器的顺序,将与特定I/O请求类型相关的回叫数据顺序地传递给每个已注册过滤器。例如,如果注册过滤器230和232以接收所有读取I/O请求的回叫,并排序过滤器230在过滤器232之前处理这些请求,那么当接收到读取I/O后,过滤器管理器220会首先调用并将回叫数据传递给过滤器230,并当过滤器230处理了回叫数据后,过滤器管理器220则调用并将回叫数据(修改后的,如果有.)传递给过滤器232。
一个过滤器可附属于一个或多个卷(vo1ume)。也即,可注册过滤器以调用并接收用于涉及仅仅一个或多于一个卷的I/O的回叫数据。
一个过滤器可生成它自己的I/O请求,该请求随后可被传递给其他过滤器。例如,反病毒过滤器会希望在文件被打开前先读取文件。过滤器可停止I/O请求的继续推广,并可命令过滤器管理器报告用于该I/O请求的状态代码(如,成功或失败)。过滤器可在存储器中存储数据并在磁盘上保持(如,存储)该数据。通常有,可创建一个过滤器来执行任何可由核心态或用户态进程执行的并可为应激的(如,等待,直到接收到I/O请求才动作)和/或主动的(如,发起自己的I/O请求或执行其他与I/O管理器215所处理的I/O请求异步的动作)的动作组。
在一则实施例中,可按图3所示的堆栈的方式安排多个过滤器。图3是表示根据本发明的各个方面可运行本发明的系统组件的另一个示例性安排的框图。在这则实施例中,过滤器305-307中的每一个可处理I/O请求并将该请求(已修改的或未修改的)传递给堆栈中另一个过滤器或其他组件。例如,响应接收自应用205的读取请求,I/O管理器215可提出一个I/O请求并将该请求发送给过滤器305。过滤器305可检查该I/O请求,确定过滤器305对该I/O请求不关注,并随后将该未改变的I/O请求传递给过滤器306。过滤器306可确定过滤器306将基于该I/O请求执行某些动作,并随后将该I/O请求(已改变的或未改变的)传递给过滤器307。过滤器307可确定过滤器307对该I/O请求不关注,并将该I/O请求传递给文件系统235。
当文件系统235执行该I/O请求后,它将结果传递给过滤器307。通常,按照与进行I/O请求所相反的顺序传递结果(如,最先给过滤器307、然后给过滤器306、再然后给过滤器305)。过滤器305-307中的每一个可检查结果,确定该过滤器是否对结果关注,并可在将结果(已改变的或未改变的)传递给另一个过滤器或组件之前,基于该结果执行动作。
在本发明另一则实施例中,可按照如图4所示的堆栈/管理方式安排过滤器。图4是表示根据本发明的多个方面可运行本发明的系统组件的另一个示例性安排的框图。在这个配置中,一些过滤器与过滤器管理器相关联,而其他过滤器不这样。过滤器管理器220和其他过滤器(如,过滤器305和307)一起放置在堆栈中。
显而易见的是,可以使用不脱离本发明精神和范围的其他配置实现过滤器。在一些实施例中,过滤器包含任何检查应用和文件系统之间I/O的能够改变、完成、或取消I/O或基于它而执行其他动作的对象。这些过滤器可在用户态或核心态执行,并可以是其他组件的一部分。
回到图2,文件系统235可包括一个或多个卷,卷可位于本地地或远程地位于在其上执行应用205的那个或那些机器中。
在本地缓存远程内容图5是表示根据本发明的各个方面可实现本发明的一个示例性环境的框图。该环境包括文件服务器505、内容服务器511-513、以及客户机520-523,并且可包括其他组件(没有示出)。各种实体通过各种网络(包括内部网和因特网515)彼此通信。
文件服务器505可包括来自数据中心对客户机可用的所有对象组(如,目录、文件、其他内容、以及类似对象)。内容服务器511-513在向客户提供内容时可访问这些对象。例如,内容服务器可容纳网络服务器应用,它可通过包括因特网515的网络向客户机提供内容服务。在访问来自文件服务器505的对象之后,内容服务器可随后向客户机提供该对象。内容服务器会/不会缓存从文件服务器505获取的对象。例如,不常访问的特别大的对象不会被缓存,而经常访问的相对较小的对象会被缓存。内容服务器可在主存储器(如,RAM)和/或诸如磁盘的非易失性存储器中缓存对象。可由包括在内容服务器上的缓存组件(即,缓存组件525-527中的一个)确定在内容服务器上缓存哪些对象。
在一则实施例中,内容服务器不修改它们从文件服务器505缓存的任何已缓存对象。而是,当应用请求修改远程对象或是创建新对象时,内容服务器向文件服务器505发送该请求。这有助于在文件服务器505上保持最新的内容副本。
缓存组件525-527中的每一个可包括各种子组件,其可包括过滤器和下文将详细描述的缓存服务。
图6是表示根据本发明的各个方面可实现本发明的系统组件的一个示例性安排的框图。该系统包括内容服务器应用605、过滤器610、远程文件系统615、缓存服务620、以及本地文件系统625,并可包括其他组件(没有示出)。
内容服务器应用605可包含可独立访问来自远程和本地文件系统615和625的对象的各种组件(没有示出)。在一些实施例中,内容服务器应用605中没有一个单独的组件知道所有的组件请求了哪些对象或者这些对象驻留在哪里(如,在本地或是远程)。为了监控请求了哪些远程组件,过滤器610会监控朝向和来自远程文件系统615的I/O。过滤器610定期向缓存服务620发送一张列表,其中包括访问自远程文件系统615的对象的名称。
缓存服务620可随后使用过滤器610发送的该列表来确定在本地文件系统625上从远程文件系统缓存哪些对象。可基于由管理员或类似所设置的一个策略做出该确定,该策略可包括对象访问频率、对象大小、或任何其他缓存规则。
在一则实施例中,缓存服务620在用户态执行。在另一则实施例中,缓存服务620在核心态执行。仍然在另一则实施例中,缓存服务620的功能由过滤器610执行。在这则实施例中,无须从过滤器610中分离出缓存服务620。
系统管理者或类似可设置注册键值或其他配置数据来告知缓存服务620在哪里缓存对象。例如,系统管理者可指示将从网络共享\\SERVER\SHARE中缓存的对象放置在目录C:\CACHE中。当\\SERVER\SHARE的一目录中的对象被缓存时,也在C:\CACHE下创建该对象的任何父目录以保持相似的目录结构。例如,如果缓存服务620确定了需要缓存\\SERVER\SHARE\DOCUMENTS\COMPANY.HTML,会在C:\CACHE下创建一个名为DOCUMENTS的目录,并将对象COMPANY.HTML放置在那个目录中。
除了监控访问哪些远程对象,过滤器610也可被用于将指向远程对象的请求重定向至指向本地缓存的对象,如下文所更详细描述的。
图7是表示根据本发明的各个方面可实现本发明的系统组件的一个示例性安排的框图。该系统包括内容服务器应用605、I/O管理器215、过滤器610、重定向器710、远程文件系统615、以及本地文件系统625,并可包括其他组件(没有示出)。
当内容服务器应用605的任何组件请求访问位于远程文件系统615的对象时,组件向I/O管理器215提供了该对象的名称(如,UNC名称)。I/O管理器215与一个或多个重定向器(如,重定向器710)交互作用以确定任何这些重定向器是否知道对应于该名称的对象位于何处。或者,I/O管理器215可与一单个组件交互作用,该组件随后与每个可用的重定向器交互作用以确定重定向器是否知道对应于该名称的对象位于何处。当有一个重定向器响应时,就使用该重定向器建立一个与该对象所在的远程服务器的会话。对于内容服务器应用605而言,用于访问远程对象的过程与用于访问本地对象的过程是相同的。在一些实施例中,内容服务器应用605不需要知道一个对象是位于远程的还是位于本地的。
当图6中的缓存服务620开始执行时,缓存服务620可提供一个从远程文件系统名称(如,网络共享)至本地缓存目录名称的映射。例如,该映射可指出\\SERVER\SHARE映射至C:\CACHE,以及其他远程文件系统名称映射至其他本地缓存目录。过滤器610存储这些信息以确定在何时将对远程对象的请求重定向至本地缓存目录。该过滤器可将这些信息存储在例如映射表中。
当过滤器610接收到打开远程对象的请求时,过滤器610可确定该请求是否应该被映射至本地文件系统625。为了完成该步骤,过滤器610会确定该对象是否被缓存在本地文件系统625上。例如,如果过滤器610接收到打开名为\\SERVER\SHARE\A.TXT的对象请求,过滤器610会在映射表中查找是否存在用于该对象的前缀的映射。在这个情况中,过滤器610会确定\\SERVER\SHARE映射至C:\CACHE。过滤器610随后会确定对象A.TXT是否存在于C:\CACHE中。如果存在,过滤器610会指示I/O管理器215将该请求重定向至本地文件系统625,如下文所更详细描述的。
图8是通常表示根据本发明的各个方面在确定是否重定向一个I/O操作至一个本地缓存器时发生的动作的流程图。在块805,处理开始。
在块810,过滤器接收到创建操作。创建操作可创建对象或打开已经存在的对象。其他操作可被过滤器忽略并传递给重定向器。
在一些实施例中,应用可请求当目录中的对象被改变时通知它。在这些实施例中,当远程服务器发送一个发生改变的通知时,过滤器可使用其他动作,如结合图10所更详细描述的。
在块815,确定创建操作是否在尝试打开远程对象以进行写入访问。如果是,处理分叉至块830;否则,处理分叉至块820。如果创建操作正在尝试修改远程对象(是分支),过滤器将该操作传递给重定向器,这样更新了远程内容。这允许更新原始内容,而不是本地缓存的内容。
在块820,确定该操作是否为目录的打开。如果是,处理分叉至块830,否则处理分叉至825。当内容服务器应用请求目录信息时,它通常需要能够查看目录中所有对象的名称,而不仅仅是本地缓存的对象的名称。通过允许目录的打开以便正常地进入远程服务器,过滤器允许请求者获得包括远程目录中所有对象的目录列表。在打开目录时或打开目录后,内容服务器应用可通过其他方式对目录进行操作(如,通过删除目录或登记接收改变通知)。这些其他操作也被发送到远程服务器但可通过过滤器不带交互地发送,正如在实施例中,过滤器仅仅重定向生成物。
在块825,确定创建操作是否正在请求创建新的对象。如果是,处理分叉至块830;否则处理分叉至块835。如果创建操作正尝试创建远程对象(是分支),则过滤器将操作发送给重定向器以更新远程内容。这使得该对象被创建在远程文件系统而不是创建在本地缓存中。可以认识到的是,可使用任何顺序执行与块815-825相关联的确定而不脱离本发明的精神或范围。在一则实施例中,先执行与块825相关的确定,然后是与块815相关的确定,随后是与块820相关的确定。
在块835中,在本地或向远程服务器映射所述操作,正如结合图9更详细描述的。
图9是通常表示根据本发明的各个方面在确定是否重定向I/O操作至本地缓存器时发生的对应于图8中块835的动作的流程图。在块905,处理开始。
在块910中,确定对象是否通过过滤器所维持的映射表来进行映射。如果是,处理分叉至块915;否则,处理分叉至块935。如果对象是包括在映射表中的网络共享下的任何目录的子目录,则通过映射表映射该对象。
在块915中,确定对象是否被缓存。如果是,处理分叉至块920;否则,处理分叉至块935。在一则实施例中,过滤器可确定通过从映射表获取缓存目录并尝试打开该对象来缓存对象。在另一则实施例中,缓存哪些对象被存储在存储器中,并且确定是否缓存对象而不尝试打开该对象。可以认识到的是,可使用许多其他方式来确定对象的缓存而不脱离本发明的精神或范围。
在块920中,将I/O重新解析为新的名称。其本质上是,重定向I/O至本地文件系统中已缓存的对象。在一些实施例中,这可通过将STATUS_REPARSE返回给I/O管理器并向I/O管理器提供本地已缓存对象的名称来完成。
在块925中,I/O被发送至本地文件系统。I/O管理器可存储识别I/O重定向至哪个对象的信息,这样随后的涉及该I/O的操作可被直接发送至本地文件系统而不需要对其重新解析或由过滤器来处理。
在没有重新解析机制的实施例中,过滤器可监控涉及最近已映射I/O的后续I/O,并定向这些I/O至本地文件系统。
在块930中,已访问的对象会被通知给缓存服务。正如前面所指出的,可周期性地向缓存服务发送已访问对象列表,而不是每当对象被访问时就发送通知。例如,可向缓存服务发送对本地已缓存对象的访问通知,这样缓存服务可确定何时从本地文件系统上除去已缓存的对象。
在块935中,I/O被发送至远程文件系统。这可通过如前所述的重定向组件来完成。
在块940中,通知缓存服务对象被远程访问。再一次,如前所述,可周期性地向缓存服务发送已访问对象列表,而不是每当对象被访问时就发送通知。例如,可向缓存服务发送对远程对象的访问通知,这样缓存服务可确定何时获取远程对象并将它们缓存在本地文件系统中。
在块945,处理返回。
图10是通常表示根据本发明的多个方面当远程对象改变时发生的动作的流程图。在块1005,处理开始。
在块1010中,过滤器接收到包含在远程服务器上的对象被改变的通知。在块1015,在本地删除该对象,如果它存在。这有助于确保从本地缓存上除去陈旧的内容。此外,当再次请求远程对象时,它将不会在缓存中被找到,这样过滤器会允许将请求发送至远程文件系统。
在块1020中,通知被转发至内容服务器,内容服务器随后会尝试从远程服务器获得该对象的最新副本,以将其缓存。
在块1025,处理返回。
图11是表示根据本发明的各个方面可实现本发明的系统组件的另一个示例性安排的框图。该系统包括内容服务器应用605、I/O管理器215、过滤器1105、重定向器710、远程文件系统615、以及本地文件系统625,并且也可包括其他组件(没有示出)。
在一些操作系统中,操作系统可提供用于文件系统中目录的重新解析点。重新解析点是与文件系统中目录相关联的数据集合。重新解析点的数据可指出其中存在与此目录相关联的已缓存对象的目录,以及可从中获取这些对象的远程目录。当接收到访问与重新解析点相关联的目录或其任何子目录的操作时,向I/O管理器215返回STATUS_REPARSE以及与该重新解析点相关联的数据。可由文件系统维持重新解析点,这样它们即便在文件系统卸载并重新载入后也可存在。
当本地文件系统710响应STATUS_REPARSE时,过滤器1105可使用与重新解析点相关联的数据来确定是否在本地缓存该对象。如果在本地缓存该对象,过滤器指示I/O管理器215将I/O操作重定向至本地已缓存对象。如果不在本地缓存该对象,则过滤器可指示I/O管理器215通过重定向器615来远程获取该对象。
结合图8描述的用于向远程文件系统自动传递特定I/O操作(如,对象改变、目录打开、以及对象创建)的示例同样适用于图11中的过滤器1105。此外,图11中的过滤器1105可执行与图9中块930和940相关的报告操作。
结合使用重新解析点,可在本地文件系统上创建一个或多个影子目录。重新解析点可与每个目录相关联以指出可在其上找到对象的本地缓存目录和远程目录。此外,可指示内容服务器应用605使用网络名称(而不是卷名称)通过一个或多个影子目录来获取对象。这可避免如果内容服务器应用605确定在本地放置对象而产生的错误行为。也可使用安全授权来允许向远程机器发送信任证书。
从上文详细描述中可以看出,提供了一种用于在本地缓存远程数据的方法和系统。虽然本发明可有各种的修改和可选构造,但在附图中示出了它们的特定示例性实施例并在上文进行了详细描述。然而可以被理解的是,这不是旨在限制本发明为已披露的特定形式,却相反的是,本发明旨在包括所有在本发明精神和范围中的修改、可选构造以及等价。
权利要求
1.一种计算机可读介质,包含计算机可执行指令,其特征在于,包括接收访问存储在远程服务器上的对象的请求;通过过滤器检查所述请求,以确定是将所述请求转发给所述远程服务器还是将所述请求重定向至本地文件系统,其中所述过滤器有机会监视对所述远程服务器的请求;以及如果所述对象被缓存,则将所述请求重定向至所述本地文件系统。
2.如权利要求1所述的计算机可读介质,其特征在于,还包括如果访问所述对象的所述请求包括创建所述对象的请求,则将所述请求转发至所述远程服务器。
3.如权利要求1所述的计算机可读介质,其特征在于,还包括如果访问所述对象的所述请求包括修改所述对象的请求,则将所述请求转发至所述远程服务器。
4.如权利要求1所述的计算机可读介质,其特征在于,还包括如果所述对象包括目录,则将所述请求转发至所述远程服务器。
5.如权利要求1所述的计算机可读介质,其特征在于,还包括通知缓存服务所述对象被请求,且不包含在所述本地文件系统上。
6.如权利要求5所述的计算机可读介质,其特征在于,还包括从所述远程服务器获取所述对象并将其存储在所述本地文件系统上。
7.如权利要求1所述的计算机可读介质,其特征在于,还包括通知缓存服务所述对象被请求,且包含在所述本地文件系统上。
8.如权利要求7所述的计算机可读介质,其特征在于,还包括基于所述对象被请求的频率,在所述本地文件系统中保存所述对象。
9.如权利要求1所述的计算机可读介质,其特征在于,其中所述过滤器在核心态中执行。
10.如权利要求1所述的计算机可读介质,其特征在于,还包括打开和关闭所述对象,并在没有通过所述过滤器对所述输入/输出操作进行检查的情况下,对在打开和关闭所述对象之间对所述对象有影响的输入/输出操作进行定向。
11.如权利要求1所述的计算机可读介质,其特征在于,还包括接收所述对象已改变的通知,并在所述本地文件系统上删除所述已缓存的对象副本。
12.如权利要求11所述的计算机可读介质,其特征在于,其中所述过滤器接收所述通知并删除所述对象的所述已缓存副本。
13.一种在计算机环境中的方法,其特征在于,包括接收访问与重新解析点相关联的对象的请求,其中所述重新解析点包括本地目录和远程目录的名称;确定所述对象是否缓存在所述本地目录中;如果所述对象缓存在所述本地目录中,则通过所述本地目录提供对所述对象的访问。
14.如权利要求13所述的方法,其特征在于,其中所述本地目录存储在本地文件系统中,并且其中所述远程目录存储在远程文件系统上。
15.如权利要求14所述的方法,其特征在于,其中所述重新解析点维持在所述本地文件系统上。
16.如权利要求14所述的方法,其特征在于,当所述本地文件系统接收到访问所述对象的尝试时,所述本地文件系统返回所述重新解析点。
17.如权利要求16所述的方法,其特征在于,确定所述对象是否缓存在本地目录中包括通过过滤器检查所述本地文件系统返回的所述重新解析点。
18.如权利要求17所述的方法,其特征在于,确定所述对象是否缓存在本地目录中还包括所述过滤器从所述重新解析点获取所述本地目录并尝试在所述本地目录中打开所述对象。
19.如权利要求18所述的方法,其特征在于,还包括如果尝试在所述本地目录中打开所述对象成功,则将所述请求重定向至所述本地目录。
20.如权利要求18所述的方法,其特征在于,还包括如果尝试在所述本地目录中打开所述对象失败,则将所述请求重定向至所述远程文件系统。
21.如权利要求17所述的方法,其特征在于,其中所述过滤器有机会检查任何来自用户态进程的访问所述本地文件系统上对象的请求。
22.如权利要求13所述的方法,其特征在于,还包括如果所述对象没有缓存在所述本地目录中,则从所述远程目录获取所述对象并在所述本地目录缓存它。
23.如权利要求13所述的方法,其特征在于,还包括如果访问对象的所述请求是创建所述对象的请求,则将所述请求重定向至所述远程目录。
24.如权利要求13所述的方法,其特征在于,还包括如果访问对象的所述请求是改变所述对象的请求,则将所述请求重定向至所述远程目录。
25.如权利要求13所述的方法,其特征在于,还包括如果所述对象是目录,则将所述请求重定向至所述远程目录。
26.如权利要求13所述的方法,其特征在于,其中所述对象含有识别所述对象至文件系统的名称,其中所述重新解析点关联于含有识别所述目录至所述文件系统的名称的目录,并且如果所述对象的名称的前缀包括所述目录的名称,则将所述对象关联于重新解析点。
27.一种用于缓存的装置,其特征在于,包括本地文件系统,被设置为存储对象;组件,被设置为确定哪些对象被存储在所述本地文件系统上;以及过滤器,被设置为监视输入和输出并向所述组件报告被要求访问的对象的名称。
28.如权利要求27所述的装置,其特征在于,所述对象包括目录和文件。
29.如权利要求27所述的装置,其特征在于,所述过滤器有机会检查来往于所述本地文件系统的任何通信。
30.如权利要求27所述的装置,其特征在于,所述过滤器有机会检查来往于远程文件系统的任何通信。
31.如权利要求30所述的装置,其特征在于,所述过滤器被设置为注册以被通知来往于所述远程文件系统的涉及创建操作的任何通信。
32.如权利要求31所述的装置,其特征在于,所述创建操作包括打开已存在对象的操作。
33.如权利要求31所述的装置,其特征在于,所述创建操作包括创建新对象的操作。
34.如权利要求27所述的装置,其特征在于,所述过滤器被设置为执行以下动作,包括接收访问存储在远程服务器上的对象的请求;以及确定是将所述请求转发至所述远程服务器还是将所述请求重定向至所述本地文件系统。
35.如权利要求34所述的装置,其特征在于,如果所述请求包括创建新对象、改变已存在对象、或者打开目录的请求,则进一步将所述过滤器设置为将所述请求转发至所述远程服务器。
36.如权利要求34所述的装置,其特征在于,如果所述对象缓存在所述本地文件系统上,则进一步将所述过滤器设置为将所述请求转发至所述本地文件系统。
37.如权利要求27所述的装置,其特征在于,所述组件对所述过滤器报告的所述对象应用策略以确定在所述本地文件系统上存储哪些对象。
全文摘要
一种用于在本地缓存远程对象的方法和系统。接收到访问对象的请求。确定该对象是否被缓存。如果该对象被缓存且该请求不是创建新对象、修改已存在对象、或打开目录,则将该请求定向至本地文件系统。否则,将该请求定向至远程文件系统。关于哪些对象被请求的信息可被用于将存储在远程的对象复制到本地服务器上,正如缓存策略所指定的。
文档编号G06F17/30GK1783081SQ20051011922
公开日2006年6月7日 申请日期2005年10月28日 优先权日2004年11月30日
发明者A·J·埃勒, N·R·克里斯琴森, R·S·蒂恩德 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1