用于为分布式文件系统确定目标故障后恢复和目标优先级的系统和方法

文档序号:6649400阅读:169来源:国知局
专利名称:用于为分布式文件系统确定目标故障后恢复和目标优先级的系统和方法
技术领域
本发明一般涉及计算机系统,尤其涉及用于为分布式文件系统确定目标故障后恢复和目标优先级的改进的系统和方法。
背景技术
分布式文件系统(Dfs)是定位和管理网络上的数据的网络服务程序的组件。Dfs可以被用来将不同计算机上的文件联合至一单个名称空间,这样允许用户对网络上的多个文件服务程序和文件服务程序的共享建立单个、分级的视图。在一台服务器计算机或一组服务器计算机的语境中,Dfs能够被比作用于个人计算机系统中的硬盘的文件系统。例如,类似于用于提供对磁盘扇区集合的统一命名的访问的文件系统的角色,Dfs可以向服务程序、共享以及文件的集合提供统一命名约定和映射。这样,Dfs可以将文件服务程序及其共享组织为逻辑分级,使得大企业能更有效地管理和使用其信息资源。
而且,倘若客户机支持本地服务程序和共享,不管正被使用的文件客户机如何,Dfs不限于单个文件协议,且能够支持对服务程序、共享以及文件的映射。Dfs也可以向不同的服务程序卷和共享提供名称透明性。通过Dfs,管理员能够建立内容分布在整个组织的广域网上(WAN)的单个分级文件系统。
过去,使用通用命名约定(UNC),为了访问文件信息,用户或应用程序被要求指定物理服务程序和共享。例如,用户或应用程序必须指定\\Server\Share\Path\Filename。尽管UNC能够直接使用,UNC一般被映射给一个驱动器名,诸如x,它可以反过来映射至\\Server\Share。从该点上,用户被要求对他或她想要访问的数据超出重定向的驱动器映射的部分导航。例如,用户要求x\Path\More_path\…\Filename的副本来导航至特定文件。
由于网络大小的增长且企业为诸如内联网的目的开始使用现有的存储——内部地或外部地,单个驱动器名对独立共享的映射表现(scale)相当差。而且,尽管用户能够直接使用UNC名称,但是这些用户可能会被数据可能被存储的地点的数量所压倒。
Dfs通过允许服务程序和共享的连接进入一个更简单且更容易导航的名称空间来解决这些问题。Dfs卷允许共享分级地连接至其它共享。因为Dfs将物理存储映射至逻辑表示,所以净利益(net benefit)是任何数量文件的物理位置对用户和应用程序变得透明。
而且,由于网络大小增至全球网络的层次,相同的一个或多个文件的若干副本可以位于网络中若干不同位置,以便于降低与从网络中检索文件相关联的开销(就网络时间、网络负载等而言)。例如,位于第一服务器位置附近的大网络的用户一般将使用最靠近他们的服务器上的文件副本(即,西雅图的用户可能最靠近位于西雅图附近的名为雷德蒙的服务器)。类似地,位于第二服务器位置附近的一个大网络的用户一般使用最靠近他们的不同的服务器上的文件副本(即,泰国的用户可能最靠近位于曼谷的名为曼谷的服务器)。这样,检索文件的场地开销(即,是包括客户机和服务器之间的距离、服务器分离的程度和其它物理网络参数的诸多网络参数的伪随机指示的标量)可以通过访问含有所需一个或多个文件的最靠近的服务器来最小化。
当用户想要从Dfs中检索文件,在其上用户要求该文件的客户计算机确定如何着手检索所要求的文件。客户计算机可以提交引用请求来获取关于所需的一个或多个文件的一个或多个位置。引用可以是请求的客户计算机和可以在其中找到所需的一个或多个文件的服务器计算机之间的相对路径。客户计算机可以请求已知为本地不可用的一个或多个文件,且可以作出关于有多少不同的位置可以提供所需的文件的副本的确定。一般,可能存在成百上千甚至成千上万个目标(即,对该文件的相对路径)指示可以提供该请求的文件的位置。同样地,响应于引用请求而返回给客户计算机的引用响应一般包括对应于含有所需文件的服务程序和/或共享的目标列表。
然而,过去,返回给客户计算机的引用响应可以含有被识别的以随机顺序或在某些情况中按场地开销排列的目标。引用响应中的每一目标不必对紧接在其之前或之后的目标有任何关系。结果是,客户计算机只是从目标的随机排序列表的顶端开始,并试图对列表上每一后续的目标建立连接直到一个目标由连通响应。
然而,使用这种随机性的一个问题是,第一可用的目标实际上可能确实位于地球的另一端的事实。这样,同该第一可用目标的通信的场地开销可能相当高且从长远观点来看不合需要。
然而,保持对目标连接的连续性是非常重要的。这被称为“粘住(sticking)”或“粘性(stickiness)”。这样,一般一旦定位了能够满足客户计算机的文件需求的第一可用目标,所有将来的引用和请求也就被发送至该目标,除非客户计算机的用户明确地地请求新的引用。从而,对第一可用目标的可能的高场地开销的连接可能保持无限期地引起所有更多的网络通信量和一般的总网络开销。
维持客户计算机和服务器计算机之间的低效引用来保持连续性的问题可能导致高场地开销通信会话。需要用于在降低引用连接场地开销的同时保持引用连接连续性的方法。

发明内容
本发明简要地提供了用于对在引用响应中接收到的目标进行组织和排序以及在分布式文件系统中确定目标故障后恢复和故障后恢复的目标优先级的系统和方法。在一实施例中,排序方法可以包括从客户计算机请求位于计算机网络中的一台或多台计算机上的文件、目录、共享等的多个位置(即,目标)。然后,诸如Dfs服务器的计算机可以向客户计算机返回目标列表,其中该目标列表包括每一对应于计算机网络中的所需文件或目录位置的多个引用。而且,该目标列表可以基于与每一目标分别关联的场地开销估算来加以排序。
由服务器计算机识别的较低开销目标可以有利地被排在引用响应的顶端。客户计算机可以只是逻辑解析该引用响应,在作出与较高开销目标建立连通的尝试之前,以试图与较低开销目标连通为开始。
这样的排序系统也可以被执行为包含使用目标优先次序。较高优先级的目标也可以被排在引用响应的顶端。而且,引用响应可以进一步被排序来包含对场地开销和目标优先级的供应。这样,含有相等的相关联场地开销的各组目标可以进一步根据每一目标分别相关联的目标优先级而在该组内排序。
在本发明的另一实施例中,目标故障后恢复和目标优先级策略可以使用一列引用响应中提供的排序的目标列表而加以执行。从而,计算机系统可以选择并指定一个目标作为来自于根据场地开销排序的目标列表的设定目标来检索客户计算机上的至少一个所需文件或目录。然后,计算机系统可以确定当与在排序的列表中的所有可用目标比较时,该设定目标是否与最低的场地开销相关联。如果不是,那么系统可以故障后恢复至与比设定目标更低的场地开销相关联的不同目标,并且指定该新目标为设定目标。
当结合附图时,其它优点会由下列详细说明变得明显,附图中


图1是一般表示可在其中包含本发明的计算机系统的框图;图2是根据本发明的一个方面,一般表示用于在一个实施例中执行目标故障后恢复和目标优先级的分布式计算环境的示例性体系结构的框图;图3是根据本发明的一个方面,一般表示用于使用分布式文件系统来请求和检索文件所采用的步骤的流程图;图4是根据本发明的一个方面,一般表示在一实施例中用于基于场地开销聚集引用响应所采用的步骤的流程图;图5是根据本发明的一个方面,一般表示在一实施例中用于基于目标优先级聚集引用响应所采用的步骤的流程图;图6是根据本发明的一个方面,一般表示在一实施例中用于故障后恢复至可以被用于排序的引用响应的更低场地开销的目标所采用的步骤的流程图;图7是根据本发明的一个方面,一般表示在一实施例中用于故障后恢复至可以被用于排序的引用响应的更高优先级的目标所采用的步骤的流程图;以及图8是根据本发明的一个方面,一般表示在一实施例中用于排序引用响应所采用的步骤的流程图。
具体实施例方式
示例性操作环境图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访问的任何其它介质。通信介质通常具体化为诸如载波或其它传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,且包含任何信息传递介质。术语“已调制数据信号”指的是这样一种信号,其一个或多个特征以在信号中编码信息的方式被设定或更改。作为示例,而非限制,通信介质包括有线介质(诸如有线网络或直接线连接)、以及无线介质(诸如声音、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。可以在示例性操作环境下使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态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在这里被标注了不同的标号是为了说明至少它们是不同的副本。用户可以通过输入设备(诸如手写板或电子数字化仪164、麦克风163、键盘162和定点设备161(通常指鼠标、跟踪球或触摸垫))向计算机110输入命令和信息。在图1中未示出的其它输入设备可以包括操纵杆、游戏垫、圆盘式卫星天线、扫描仪或包括含有生物测定传感器、环境传感器、位置传感器或其它类型传感器的设备的其它设备。这些和其它输入设备通常通过耦合至系统总线的用户输入接口160连接至处理单元120,但也可以由其它接口或总线结构(诸如并行端口、游戏端口或通用串行总线(USB)连接)。监视器191或其它类型的显示设备也经由接口(诸如视频接口190)连接至系统总线121。监视器191也可以与触摸屏等结合。注意到,监视器和/或触摸屏能够被物理地耦合至其中包含计算设备110的外壳,诸如在平板个人计算机中。此外,计算机(例如,计算设备110)也可以包括其它外围输出设备(诸如扬声器194和打印机195),它们可以通过输出外围接口193或其类似物连接。
计算机110可使用至一台或多台远程计算机(诸如远程计算机180)的逻辑连接在网络化环境下操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见网络节点,且通常包括上文相对于计算机110描述的许多或所有元件,尽管在图1中只示出记忆存储设备181。图1中所示的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可以包括其它网络。这样的网络环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至局域网171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或用于通过诸如因特网等WAN 173建立通信的其它装置。调制解调器172可以是内部或外部的,它可以通过用户输入接口160或其它合适的机制连接至系统总线121。在网络化环境中,相对于计算机110所描述的程序模块或其各个部分可以存储在远程记忆存储设备中。作为示例,而非限制,图1示出了远程应用程序185驻留在存储设备181上。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其它手段。
引用响应排序本发明一般以用于为分布式文件系统确定目标故障后恢复和目标优先级的系统和方法为目标。该系统和方法可以有利地为在计算机网络中请求可能含有所需文件或目录的计算机列表的客户计算机提供排序方法。响应请求,可以提供给客户计算机的目标列表可以基于某些参数的评估被排序,包括与每一目标分别相关联的场地开销。正如可以看到,被识别的较低开销的目标可以被排序至引用响应的顶端,这样客户计算机可以只是逻辑解析引用响应,在作出与较高开销目标建立连通的尝试之前,以试图与较低开销目标连通为开始。
这样的排序系统也可以使用目标的优先次序而加以执行,借此,在一实施例中,较高优先级目标也可以被排序至引用响应的顶端。而且,该引用响应可以进一步被排序来包括对场地开销和目标优先级的供应。这样,含有相等的相关联场地开销的各组目标可以进一步根据每一目标分别相关联的目标优先级而在该组内排序。正如可以被理解,此处所述的多个框图、流程图和情景仅是示例,且存在本发明可以应用的多个其它情景。
转至附图中的图2,示出了根据本发明的一个方面,一般表示用于执行目标故障后恢复和目标优先级的分布式计算环境的示例性体系结构的框图。一般,客户计算机205,可以与图1所示的个人计算机110类似,可以被可操作地耦合至可以是企业内联网的一部分或因特网的一部分的第一网络250。客户计算机205可以是Dfs的一部分,或可以包括可提供对位于Dfs的任何位置的文件的无缝访问的Dfs客户机程序270。该网络也可以被可操作地耦合至其它计算机,诸如网络计算机m1 210、现用目录服务器220和Dfs根服务器230。现用目录服务器220可以被用来存储Dfs信息——包括Dfs链路引用信息。然而,在各个实施例中,该信息可以由网络250可访问的任何计算机可读介质来存储。
反过来,Dfs服务器230也可以被可操作地耦合至也可以是另一个企业内联网或因特网的另一个部分的另一个网络280。如在任何计算机网络中常见的,网络280可以通过路由器260被可操作地耦合至网络250。Dfs根服务器230可以被可操作地耦合至可包含一个或多个链路引用的Dfs根共享240。例如,链路//r1/s1/l1可以向位于//m1/s1的文件或目录提供引用。同样地,链路,//r1/s1/12可以向位于//m2/s1的文件或目录提供引用。而且,一条链路可以向多个计算机、服务程序、共享和/或目录提供引用。这样,包括服务器计算机m2215的多台计算机可以通过大量网络和计算机被通信联络地耦合至客户计算机205。
客户计算机205可以请求并检索来自于网络250或网络250和280中的实质上的任何服务器位置的文件和/或目录。然而,客户计算机205来维护关于可以被连接至网络250的所有计算机的信息可能是不可行的。一般,请求可以是对文件或目录的。所以,尽管任何文件(和/或目录等如在本揭示的全部剩余部分中的文件请求和检索所暗示的)可以从网络250中的任何计算机中检索,但是客户计算机205一般装备有来自另一来源的所需文件的位置。这样,Dfs服务器计算机230可以被可操作地来维护关于耦合至网络250和280的多台计算机的信息,使得当客户计算机205请求本地不可用文件时,Dfs服务器计算机230可以提供目标列表,其中每一目标对应于对所需文件的路径。
一般,Dfs服务器计算机230可以返回成百上千甚至成千上万个目标以响应于引用请求,并可以根据诸多参数来提供关于目标的顺序。用于排序引用的两个这样的方法可以是通过与每一目标相关联的场地开销来排序和通过与每一目标相关联的目标优先级来排序。这些排序方法中的每一个会在下文中进一步详细描述。
一旦目标列表可由Dfs服务器计算机230(或可操作来提供并排序目标以响应于引用请求的其它专用计算机系统)排序,它就可以被返回至客户计算机205。客户计算机220然后可以反复地开始试图建立与每目标的连通(以被排序的顺序)直到可以建立与一目标的连通。文件可以位于对应于共享s1 212中的服务器计算机m1 210上的共享目标处,简单地即∥m1/s1。共享s1 212可以与在服务器计算机m1210上的文件服务程序211相关联,这样,可能能够由Dfs服务器计算机230引用。
同样地,所需文件可以位于共享s2 217中的服务器计算机m2 215上。共享s2212也可以与服务器计算机m2 215上的文件服务程序216相关联,这样,也能够由Dfs服务器计算机230所引用。然而,因为可以可操作地通过网络280来耦合至服务器计算机215,可以引用客户计算机的路径可能会更为复杂,因为通信连接可以通过根Dfs服务器230建立。通过使用图2所示的体系结构中的Dfs,来自于网络中任何位置的文件可以通过由Dfs服务器计算机230提供给客户计算机205的引用而被检索。
图3示出了根据本发明的一个方面,一般表示用于使用分布式文件系统请求和检索文件所采用的步骤的流程图。客户计算机205可以是Dfs的一部分,或可以包括可提供对位于Dfs中任何位置的文件的无缝访问的Dfs客户机程序270。客户计算机205因此可以请求和检索文件,仿佛所需的所有文件在本地找到。
当客户计算机205可能需要在客户计算机205上本地不可用的特定文件时,可以在使用Dfs客户机程序270的客户计算机205上启动文件请求。在各个实施例中,Dfs客户机程序也可以驻留在现用目录服务器220上,并可用来定位Dfs根服务器230。Dfs服务器计算机230可以向可能包含与在步骤308处通过Dfs可用的远程服务器计算机对应的目标列表的客户计算机205提供引用响应。该目标列表可以根据诸如场地开销(下文参考图4描述其方法)、相关联的优先级(下文参考图5描述其方法)和/或场地了解(site-awareness)(下文大致描述)的各种参数来被排序。
而且,引用响应可以包括对每一包括目标分组的有界集合的指示。在一实施例中,可以通过提供与关于该有界集合中的第一个目标的信息相关联的划分值来作出对有界集合开始的指示。这可以通过在引用响应中向客户计算机提供边界属性来完成,诸如与在目标和该客户计算机之间检索文件或目录相关联的开销。该有界集合可以基于任何数量的参数,包括场地开销、场地了解、目标优先级和/或该引用中所涉及的计算机的健康状态。如此处所使用,健康状态可以指用于提供引用的响应时间、通信量负载、处理器负载和引用中所涉及的计算机的其它属性,包括性能度量。
一旦客户计算机205可以接收到引用响应,客户计算机205就可以开始试图以排序的顺序与在列表中的每一目标建立通信会话。这样,客户计算机205可以在步骤310处尝试目标1,但是未能连接。客户计算机205然后可以在步骤312处尝试目标2,但还是未能连接。客户计算机205可以继续试图与在引用响应中的每一目标连接,直到在步骤314处可以与目标m建立连接。当可以建立至目标的连接时,该目标可以被指定为设定目标,并为保持与该目标通信的连续性而被使用直到不再可用。例如,目标m可以作为设定目标用于后继的文件检索而被建立,直到客户计算机205可以请求新的引用,例如来发现新的目标,或可以以其它方式被指示。
本领域的技术人员可以理解,实现方式可以选择来以不同的顺序执行这些步骤,或可以选择为效率或适应性的目的而仅执行这些步骤中的某些步骤,同时达到同样的效果且不背离本发明的范围。而且,该相同的概念可以被应用于在第一地点中定位Dfs服务器230,作为对可以由现用目录服务器220以几乎相同的方式提供的特定的Dfs服务器的引用。
图4示出了根据本发明的一个方面,一般表示用于基于场地开销聚集引用响应所采用的步骤的流程图。一般,引用响应可以根据诸如场地开销或场地了解的诸多参数来排序。在一实施例中,在与客户计算机205相同的场地内的目标可以根据场地了解来加以排序,这先于根据场地开销的排序。例如,在与客户计算机205相同的场地内的目标可以被排至引用响应的顶端,然后可以使用场地开销参数来排序剩余的目标。图4可示出使用场地开销和场地了解来排序由Dfs服务器计算机230生成的引用响应中的目标的方法的一个实施例。然而,本领域的技术人员可以理解,可以使用任何数量的参数或参数的组合来对引用响应的各个目标排序。
Dfs服务器计算机230可以对可以满足来自于客户计算机205的引用请求的目标列表编译。这些目标可以以随机的顺序聚集,在步骤402处开始。然后,Dfs服务器计算机230可以辨识可能在与客户计算机205相同的场地内(例如,//m1/s1/)的每一目标。在步骤404处,这些辨识出的目标可以被移动至列表的顶端,来产生目前为场地了解参数而被排序的引用响应。在各个实施例中,引用响应可以在此点上被传回至客户计算机205。然而,在其它实施例中,如图4所示,引用响应可以额外地根据另一参数——场地开销来排序。
剩余的目标可以在步骤408处根据相关联的场地开销来排序,并被分成各个有界集合。含有与之相关联的第一场地开销的每一目标可以和含有相同关联场地开销的其它目标被移动至有界集合。同样地,第二有界集合可以具有一个或多个含有第二关联场地开销的目标。这样,该目标列表然后可以被分成各个有界集合,其中第一有界集合可以包括具有最低关联场地开销的目标,下一个有界集合可以包括具有其次最低关联场地开销的目标,诸如此类。
每一有界集合然后可以包括大量按随机顺序排列的目标,但是这些目标含有相同的与之关联的场地开销。这样,由于客户计算机205可以重复试图建立通信会话,它可以首先通过最低场地开销目标开始循环。
而且,在步骤410处,每一有界集合中第一个列出的目标也可以与可以被设置成指示有界集合起始位置的边界位相关联。以这种方式,客户计算机可以容易地辨识有界集合之间的边界。边界位可以用作为该目标含有比列表中的先前目标更高的关联的场地开销的指示。这样,可以通过提供基于场地生产费的有界集合作出关于故障后恢复或故障排除的含有更多信息的决定。Dfs服务器计算机230然后可以聚集含有基于场地了解和场地开销的排序的目标列表的最终引用响应,并可以在步骤412处将该引用响应传回给客户计算机205。
图5示出了根据本发明的一个方面,一般表示用于基于目标优先级聚集引用响应所采用的步骤的流程图。再一次,引用响应可以根据诸如上述简要提及的目标优先级和/或场地了解的诸多参数而被排序。图5可以示出使用目标优先级和场地开销用于在由Dfs服务器计算机230生成的引用响应中排序目标的方法的一个实施例。然而,本领域的技术人员可以理解,可以使用任何数量的参数或参数的组合来排序引用响应的各个目标。如上所述,Dfs服务器计算机230可以对可满足来自客户计算机205的引用响应的目标列表进行编译。这些目标可以在步骤502处以随机的顺序聚集为开始。然后,Dfs服务器计算机230可以辨识与客户计算机205相同的场地(例如,//m1/s1)内的每一目标。在步骤504处,这些辨识出的目标可以被移至列表的顶端来产生目前为场地了解参数所排序的引用响应。在某些实施例中,引用响应可以在此点上传回给客户计算机205。然而,在其它实施例中,如图5所示,引用响应可以额外地根据另一个参数——目标优先级来加以排序。
拥有与之相关联的诸如全局高(global high)的第一目标优先级的每一目标,可以同拥有相同的关联目标优先级的其它目标一起被移动至有界集合中。同样地,第二个有界集合可以含有一个或多个拥有诸如全局低(global low)的第二关联目标优先级的目标。这样,该目标列表然后可以被分成各个有界集合,其中第一有界集合可以包括拥有最高关联目标优先级(即,全局高)的目标,其次的有界集合包括拥有其次最高关联目标优先级(即,普通高(normal high))的目标,诸如此类。
每一有界集合然后可以包括大量按随机顺序排列的目标,但是这些目标都拥有相同的与之相关联的目标优先级。这样,由于客户计算机205可以反复通过目标并试图建立通信会话,它可以首先通过最高目标优先级的目标开始循环。
而且,在步骤510处,每一有界集合中第一个列出的目标也可以含有边界位,该边界位被设置成指示该有界集合的起始位置。以这种方式,客户计算机205可以容易地辨识出有界集合之间的边界。边界位可以用作该目标可以拥有比列表中的先前目标更低的关联目标优先级的指示。这样,可以通过提供基于目标优先级的有界集合来作出关于故障后恢复或故障排除的含有更多信息的决定。Dfs服务器计算机230然后可以聚集含有基于场地了解和目标优先级的排序的目标列表的最终引用响应,且可以在步骤512处将引用响应传回给客户计算机205。
Dfs服务器计算机230也可以使用排序参数的组合来建立排序的引用响应。例如,第一种排序可以将相同场地的目标移动至列表的顶端。然后,可以基于与每一目标相关联的全局优先级来排序目标。例如,拥有关联的全局高优先级的所有目标可以被排序至引用响应的顶端。同样地,拥有关联的全局低优先级的所有目标可以被排列至该列表的底部。然后,剩余的目标(可以被称作“全局普通”)可以基于场地开销进一步被分成各个有界集合。
在另一实施例中,第二种排序可以建立基于场地开销并由位于每一集合顶端的目标中的设置的边界位来表示的有界集合。然后,每一有界集合可以根据目标优先级来排序,使得在每一有界集合(可以固有地拥有相同的关联的场地开销)内,目标可以进一步根据与每一目标关联的优先级排序。这样,在基于场地开销的有界集合内,位于该有界集合顶端的目标可以同高优先级相关联,目标的下一分组可以同其次最高的优先级(例如,普通)相关联,诸如此类。
在又一实施例中,先前的两个实施例可以一起执行,使得目标由在全局基础上的优先级排列并位于每一有界集合中。
作为另一个示例,第一种排序可以再次将相同场地的目标移动至列表的顶端。然后,第二种排序可以建立基于目标优先级并由在每一集合顶端的目标中的设置的边界位来表示的有界集合。然后,每一有界集合可以根据场地开销被排序,使得在每一有界集合(可以固有地拥有相同的关联的场地开销)内,目标根据与每一目标相关联的场地开销进一步排序。这样,在基于目标优先级的有界集合内,位于该有界集合顶端的目标可以与最低场地开销相关联,目标的下一分组可以与其次最低的场地开销相关联,诸如此类。
通过以已制定的顺序对引用响应中的目标排序,并在引用响应中的每一目标内部设置某些位,客户计算机然后可以使用引用响应中排序过的目标,来执行有效的目标故障后恢复策略和优先级故障后恢复策略,以下将描述这一点。
目标故障后恢复和优先级除了用于客户计算机请求可能含有所需文件的服务器计算机网络中的服务器计算机列表的排序方法,该系统和方法也可以有利地提供,可以使用引用响应中提供的排序的目标列表的目标故障后恢复和目标优先级策略。如将会看到,计算机系统可以选择并指定一个目标作为来自根据场地开销而被排序的目标列表的设定目标。然后,计算机系统可以确定该设定目标当与在该排序的列表中的所有可用目标比较时,是否与最低的场地开销相关联。如果不是,那么系统可以故障后恢复至一个与比该设定目标更低的场地开销相关联的不同的目标,并将新的目标作为设定目标。将会理解,此处所述的各个流程图和情景仅是示例,且存在所述的目标故障后恢复和目标优先级可以应用的多个其它的场景。
转至附图中的图6,示出了根据本发明的一个方面,一般表示用于可以同排序的引用响应一起使用的故障后恢复至更低场地开销目标所采用的步骤的流程图。在目标故障后恢复策略环境的各个实施例中,Dfs服务器计算机230可以分类关于当生成引用响应时可以由Dfs使用的目标的信息。在一实施例中,Dfs服务器计算机230可以分类关于基于场地了解的目标的信息。在这种模式中,引用响应基本上可以包含两个目标集合一个集合包含与客户计算机205相同的场地中的目标,而另一个集合包含在不同于客户计算机205的场地中的目标。最初,在每一集合中的目标可以是随机排序的。
在另一实施例中,Dfs服务器计算机230可以基于场地开销分类引用。在这种操作模式中,引用响应可以被分类成多个有界集合。每一有界集合可以包括拥有由Dfs服务器(可以基于关于请求客户计算机的场地开销信息确定)确定的相同场地开销的目标。有界集合可以由递增的场地开销排序,使得在与客户机相同的场地中的目标可以在第一有界集合中;拥有其次最低场地开销的目标可以在第二集合中,诸如此类。最初,每一集合内的目标可以随机排序。
这样,当客户计算机在步骤602处请求引用时,可以由Dfs服务器计算机230提供排序的引用响应。客户计算机然后可以在步骤604处开始与引用响应中的每一目标尝试建立连通性,以确定第一个可用的目标。当目标由于诸如网络错误、目标崩溃等任何数量的原因可能不可用时,Dfs客户机程序可以排除故障至下一可用目标。例如,可以作出与引用响应中的目标列表中的下一目标建立连通性的尝试。当与目标可能建立连通性时,该特定的目标可以在步骤606处被指定为设定目标。
当一个或多个可能比设定的目标更理想的在先前目标再次变得可用时,Dfs客户机程序可以为连续性和无缝性目的继续使用该设定的目标,或者可以获得或再次获得可用的更理想的目标。通过拥有故障后恢复策略和目标的有界集合,当可用时,可有利地虑及诸如带有更低场地开销的目标的更理想的目标来被获取或再次获取。
这样,如果该目标故障后恢复策略指定(例如,具有目标故障后恢复策略位被置位),那么客户计算机可以在步骤608处确定诸如更低场地开销目标的更优选可能可用。该确定可以在任何时候作出,且可以由客户计算机205、Dfs服务器计算机230或任何其它远程计算机启动。而且,故障后恢复时刻可以对应于从与设定目标可能建立连通性的时刻开始的经过时间。例如,客户计算机可以从第一设定目标建立连通性后30分钟后检查是否有更理想的目标。进一步,故障后恢复时刻可以对应一天的特定时刻,诸如每半个小时或每五分钟。更进一步,故障后恢复时刻可以对应于来自于客户计算机205对文件的下一个请求。
在故障后恢复时刻,如果诸如更低场地开销目标的更优选的目标可以是可用的,那么可以在步骤612处建立与该可用的更优选的目标的连通性,并且该可用的更优选的目标可以被指定为设定目标。然而,如果可能不存在任何可用的诸如带有更低场地开销的更优选的目标,那么在步骤610处该设定目标可以继续作为当前目标被使用。
故障后恢复策略可以对引用响应中的给定的Dfs根/链路执行。如果目标故障后恢复在单独的链路层不可用,可以使用对整个Dfs名字空间的设置。在一个实施例中,目标故障后恢复在链路层不可用而在Dfs名字空间层可用。
在一实施例中,目标故障后恢复信息可以同诸如Dfs元数据的其它Dfs信息一起存储。例如,可以使用在每一目标的元数据的总根/链路信息中的“Type”字段。该字段中的一个空闲数位位置可以被识别并验证来作用于传统系统。该新数位位置可以被定义为PKT_ENTRY_TYPE_TARGETFAIL.BACK。
这样,在一个实施例中,用于基于域的Dfs的元数据的典型格式(称作“IDBLOB(ID滴)”)可以被如下伪结构定义
GUID VolumeId;USHORTPrefixLength;WCHAR Prefix[PrefixLength];USHORTShortPrefixLength;WCHAR ShortPrefix[ShortPrefixLength]ULONG Type;ULONGState;USHORTCommentLength;WCHAR Comment[CommentLength];FILETIME PrefixTimeStamp;FILETIME StateTimeStamp;FILETIME CommentTimeStamp;ULONG Version;同样地,用于孤立Dfs的元数据的典型格式(称为“ID BLOB”)可以由如下伪结构定义USHORTPrefixLength;WCHAR Prefix[PrefixLength];USHORTShortPrefixLength;WCHAR ShortPrefix[ShortPrefixLength];GUID VolumeId;ULONG State;ULONG Type;USHORTCommentLength;WCHAR Comment[CommentLength];FILETIME PrefixTimeStamp;FILETIME StateTimeStamp;FILETIMECommentTimeStamp;NetDfsGetInfo/NetDfsEnum API可以从总根/链路元数据中检索设置。可以验证参数的API的前端从而可以被修改,而可以解释并返回“info level(信息层次)”特殊信息的例程从而也可以被修改。
为了支持目标优先级和目标故障后恢复,Dfs客户机程序可以尝试故障后恢复至更低场地开销和/或更高优先级的另一个目标。在一个实施例中,Dfs客户机程序可能不故障后恢复到与当前活动目标相同的场地开销和/或相同的优先级的另一个目标。
在实施例中,目标集合可以被定义为目标的有界集合。例如,目标的有界集合可以是拥有相同场地开销的随机排序的目标的集合。例如在引用响应中可以作出对目标的有界集合的边界的指示,这是通过在引用条目中包括对边界的指示。
从而,在实施例中,对Dfs客户机程序的根/链路引用响应可以指示是否能够对根/链路使用故障后恢复,且也可以指示返回的目标之间的有界集合的边界。在一个实施例中,对根/链路先前存在的引用响应的格式可以通过在引用报头和引用条目中的现有位字段定义中如下添加新的位字段而被使用typedef struct{USHORT PathConsumed;∥Number of WCHARs consumed inDfsPathName(在DfsPathName中花费的WCHAR的数量)USHORT NumberOfReferrals;∥Number of referrals containedhere(此处包含的引用的数量)struct{ULONG ReferralServers1;//Elements in Referrals[]are referral servers(在Referrals[]中的元素是引用服务器)ULONG StorageServers1;//Elements in Referrals[]are storage servers(在Referrals[]中的元素是存储服务器)ULONGTargetFailback1;//Target Fail-back is enabledfor this namespace root/link(对该名字空间根/链路,目标故障后恢复能够使用)};ULONG ReferralHeaderFlags};union{//The vector of referrals(引用向量)DFS_REFERRAL_V1 v1;DFS_REFERRAL_V2 v2;
DFS_REFERRAL_V3 V3;DFS_REFERRAL_V4 v4;}Referrals[i];//[NumberOfReferrals](引用的数量)∥∥WCHAR String Buffer[];∥Used by DFS..REFERRAL_V2(由DFS..REFERRAL_V2使用)∥}RESP_GET_DFS_REFERRAL;typedef RESP_GET_DFS_REFERRAL*PRESP_GET_DFS_REFERRAL;typedef struct{USHORT VersionNumber;∥==4USHORT Size;//Size of this whole element(这整个元素的大小)USHORT ServerType;∥Type of server0==Don′t know,1==SMB,2==Netware(服务器的类型0==不知道,1==SMB(服务器信息块),2==网件)union{struct{USHORT StripPath1;∥Strip off PathConsumedcharacters from front of DfsPathName prior tosubmitting name to UncShareName(向UncShareName提交名称之前,从DfsPathName前端剥去PathConsumed字符)USHORT NameListReferral1;∥This referral containsan expanded name list(该引用包含扩展的名称列表)USHORT TargetSetBoundary1∥Denotes this targetis the first in a target set(表示该目标是目标集合中的第一个目标)//All targets in have the samesite-cost or priority rank;(在此目标集合中的所有目标拥有相同的场地开销或优先次序)};USHORT ReferralEntryFlags};ULONG TimeToLive;//In number of seconds(以秒钟数目表示)union{
struct{USHORT DfsPathOffset;∥Offset from beginning ofthis element to Path to access(从该元素开始到要访问的路径的偏移量)USHORT DfsAlternatePathOffset;∥Offset frombeginning of this element to 8.3 path(从该元素开始到8.3路径的偏移量)USHORT NetworkAddressOffset;∥Offset from beginningof this element to Network path(从该元素开始到网络路径的偏移量)GUID ServiceSiteGuid;//The guid for the site(对该站点的guid)};struct{USHORT Special NameOffset;∥Offset from thiselement to the special name string(从该元素到特定名字串的偏移量)USHORT NumberOfExpandedNames;∥Number of expandednames(扩展名称的数量)USHORT ExpandedNameOffset;∥Offset from this elementto the expanded name list(从该元素到该扩展名称列表的偏移量)};}DFS_REFERRAL_V4;typedef DFS_REFERRAL_V4*PDFS_REFERRAL_V4;本领域的技术人员可以理解,诸如分离的数据结构的其它数据结构可以用来提供引用响应中的目标之间的有界集合边界的指示,或用于指示能否使用故障后恢复。
图7示出了根据本发明的一个方面,一般表示用于可以被用于排序的引用响应的故障后恢复至更高优先级目标所采用的步骤的流程图。在目标故障后恢复策略环境的各个实施例中,Dfs服务器计算机230可以基于场地了解对关于目标的信息分类。在这种模式中,引用响应基本上可以包括两个目标集合一个集合包含与客户计算机205相同的场地中的目标,而另一个集合包含在不同于客户计算机205的场地中的目标。最初,在每一集合中的目标可以是随机排序的。
在另一实施例中,Dfs服务器计算机230可以基于目标优先级来分类引用。在这种操作模式中,引用响应可以被分类成多个有界集合。每一有界集合可以包括可以拥有由请求引用的Dfs服务器确定的相同目标优先级的目标。有界集合可以按照递减的目标优先级排序,使得最高优先级的目标可以在第一有界集合中;拥有次高优先级的目标可以在第二集合中,诸如此类。最初,每一集合内的目标可以随机排序。
Dfs服务器计算机230也可以使用排序参数的组合来建立排序的引用响应。例如,第一种排序可以将相同场地的目标移动至列表的顶端。然后,可以基于与每一目标相关联的全局优先级来排序目标。例如,拥有关联的全局高优先级的所有目标可以被排序至引用响应的顶端。同样地,拥有关联的全局低优先级的所有目标可以被排列至该列表的底部。然后,剩余的目标(可以被称作“全局普通”)可以基于场地开销进一步被分类成各个有界集合。
在另一实施例中,第二种排序可以建立基于场地开销并由位于每一集合顶端的目标中的设置的边界位来表示来的有界集合。然后,每一有界集合可以根据目标优先级来排序,使得在每一有界集合(可以固有地拥有相同的关联的场地开销)内,目标可以进一步根据与每一目标关联的优先级排序。这样,在基于场地开销的有界集合内,位于该有界集合顶端的目标可以同高优先级相关联,目标的下一分组可以同其次最高的优先级(例如,普通)相关联,诸如此类。
在又一实施例中,先前的两个实施例可以一起执行,使得目标由在全局基础上的优先级排列并位于每一有界集合中。这样,当客户计算机205在步骤702处请求引用时,Dfs服务器计算机230可以提供排序的引用响应。客户计算机然后可以在步骤704处开始与引用响应中的每一目标尝试建立连通性,以确定第一个可用的目标。例如,可以作出与引用响应中的目标列表中的下一目标建立连通性的尝试。当与目标可能建立连通性时,该特定的目标可以在步骤706处被指定为设定目标。
当一个或多个可能比设定目标更理想的先前目标再次变得可用时,Dfs客户机程序可以为连续性和无缝性目的继续使用该设定目标,或者可以获得或再次获得可用的更理想的目标。通过具有故障后恢复策略和目标的有界集合,当可用时,可有利地虑及诸如带有更高目标优先级的目标的更理想的目标来被获取或再次获取。
这样,如果该目标故障后恢复策略指定(例如,具有目标故障后恢复策略位被置位),那么客户计算机可以在步骤708处确定诸如在更优选的有界集合中的目标的更优选的目标可用。该确定可以在任何时候作出,且可以由客户计算机205、Dfs服务器计算机230或任何其它远程计算机启动。而且,优先级检查时刻可以对应于从建立设定目标之后的经过的时间数量。例如,客户计算机205可以从第一设定目标建立连接后30分钟后检查是否有更理想的目标。进一步,优先级检查时刻可以对应于一天的特定时刻,诸如每半个小时或每五分钟。更进一步,优先级检查时刻可以对应于来自于客户计算机205对文件的下一个请求。
在优先级检查时刻,如果更高目标优先级的目标可以是可用的,那么可以在步骤712处建立与该可用的更高目标优先级的目标的连通性,并且该更高目标优先级的目标可以被指定为设定目标。然而,如果可能不存在任何可用的带有更高目标优先级的目标,那么在步骤710处该设定目标可以继续作为当前目标被使用。
这样,在Dfs自身内的目标的分级的一个简单方法可以提供有益的排序优点。服务器目标优先级可以与上述的场地花费一致。服务器目标优先级可以创建目标之间的确实的分级,以便如果有可用的较高优先级目标时,较低优先级的目标可能不会接收到通信量。
如上所述,引用响应可以基于每一目标相关联的场地开销被分类成各个有界集合。使用服务器目标优先级,这些有界集合可以还基于访问目标的开销。服务器目标优先级可以只是扩展对目标的开销排序准则,所以集合可以是那些含有相同场地开销和服务器目标优先级的目标。
在一个实施例中,服务器目标优先级可以由两个值表现优先级类和优先级等级。优先级类可以被定义在两层上本地地,即相同场地开销目标集合之内的,以及全局地。在这些中的每一个内,可能存在高、普通和低优先级目标的粗略排序。这可以提供五个优先级类全局高场地开销高场地开销普通场地开销低全局低它们可以在所列出的优先级中排序。注意到,因为可以被认为和场地开销类同等,可能不存在任何独立的“全局普通”类。优先级等级可以是简单的整数分级——0,1,2,等等。
在一个实施例中,对引用排序的过程可以如下1.可以辨识全局高和全局低的目标的集合,连同剩余的“全局普通”目标。
2.这三个集合可以以全局高、全局普通和全局低的优先级顺序放置。
3.如果可能设置排外策略,那么在排外集合中的目标可以被移除。
4.在这些三个集合中的每一个集合内,目标可以由场地开销机制(或者局部场地或者完全场地开销)排序,从而生成相等场地开销的目标的有界集合。
5.在相等的场地开销的“全局普通”目标的集合内,目标可以由优先级类排序,即场地开销高、普通和低。
6.在相等的场地开销和优先级类的目标的有界集合中,目标可由优先级等级排序(0为最高)。
7.在相等场地开销、优先级类和优先级等级的目标的有界集合中,目标可以为负载平衡随机改组。
本领域的技术人员可以理解,实施方式可以选择以不同的顺序执行这些步骤,或者可以选择为效率和适应性的目的仅执行这些步骤中的某些步骤,而达到相同的效果且不背离本发明的范围。
用图表表示,可能存在定制的集合,在其中客户机可以接收目标[global high priority class](全局高优先级类)[site-cost high priority class for targets of site-cost=0](对场地开销=0的目标的场地开销高优先级类)[ normal cost=0](对场地开销=0的目标的场地开销普通优先级类)[ low cost=0](对场地开销=0的目标的场地开销低优先级类)[site-cost high priority class fortargets ofsite-cost=1](对场地开销=1的目标的场地开销高优先级类)[ normal cost=1](对场地开销=1的目标的场地开销普通优先级类)[ low cost=1](对场地开销=1的目标的场地开销低优先级类)[global low priority class](全局低优先级类)因为目标优先级信息可以是在总目标的基础上,用于维护该信息的自然位置可以是在包含每一根/链路的目标列表的Dfs复件元数据信息中。每一目标的信息可以由如下伪结构定义FILETIME ReplicaTimeStamp;ULONG ReplicaState;ULONG ReplicaType;USHORT ServerNameLength;WCHAR ServerName[ServerNameLength];USHORT ShareNameLength;WCHARShareName[ShareNameLength];在一个实施例中,目标优先级可以在UCHAR中被编码,用于在元数据中存储·0-4位优先级类中的优先级等级·5-7位优先级类在实施例中,优先级类可以由如下值表示场地开销普通(缺省) OxO全局高 Ox1全局低 Ox2场地开销高 Ox3场地开销低 Ox4作为一个实例,在全局低优先级类中的优先级等级1的目标可以如下编码Bit 765/43210010/00001该编码可以规定32个优先级等级和8个可能的优先级类,优先级类中的5个可以使用全局高、场地开销高、场地开销普通、场地开销低和全局低的优先级等级定义。优先级等级可以是0到31的数值,0被认为是最高优先级。这样,优先级等级为0的目标可以第一个返回而优先级等级为31的那些目标可以在每一集合中最后返回。
诸如DfsUTIL的实用程序可以被用来直接为设置/查看操作揭示优先级类定义。或者,用户界面可以通过目标特性页面上的单选按钮来揭示优先级类。DfsUTIL和UI都可以选择“场地开销普通优先级类”作为缺省。
目标优先级可以被认为是Dfs目标的属性。从而,在一个实施例中,上述UCHAR值可以被作为Dfs对象中的总目标属性来存储在现用目录和注册表中。可以如下提供新的DFS_REPLICA_INFORMATION结构typedef struct DFS_REPLICA_INFORMATION{PVOID pData;ULONG DataSize;UCHAR TargetPriority;UCHAR[7]Unused;ULONG ReplicaState;ULONG ReplicaType;UNICODE STRING ServerName;UNICODE STRING ShareName;DFS_REPLICA_INFORMATION,*PDFS_REPLICA_INFORMATION;}DFS TARGET PRIORITY CLASS可以提供新的枚举类型,这个新的枚举类型在一个实施例中可以定义五个可能的目标优先级类设置typedef enum{DfsInvalidPriorityClass=-1,DfsSiteCostNormalPriorityClass 0,DfsGlobalHighPriorityClass,DfsSiteCostHighPriorityClass,DfsSiteCostLowPriorityClass,DfsGlobaLowPriorityClass}DFS TARGET PRIORITY CLASS;缺省目标优先级设置可以为<PriorityClass=SiteCostNormalPriorityClass,PriorityRank=0>(优先级类=场地开销普通优先级类,优先级等级=0)。这可能是有意为之的,因为下层(downlevel)元数据的缺省值为0。即使DfsSiteCostNormalPriorityClass的优先级可能比DfsSiteCostHighPriorityClass低,它的值也可以是0。
在一个实施例中,如下结构可以被提供来压缩可能是元组<优先级类,优先级等级>的目标优先级的定义typedef struct_DFS_TARGET_PRIORITY{DFS_TARGET_PRIORITY_CLASS TargetPriorityClass;USHORT TargetPriorityRank
USHORT Reserved;}DFS_TARGET_PRIORITY;可以表示Dfs服务中的根或链路目标的Dfs复件类可以包含新的DfsTargetPriority类的实例class DfsTargetPriority(privateDFS_TARGET_PRIORITY_TargetPriority,DfsTargetPriority类可以将含有从Dfs元数据中获取的目标优先级信息的打包的UCHAR转换成更便于使用的DFS TARGET PRIORITY形式。给定DFS TARGET PRIORITY,它也可以创建打包的UCHAR值。它也可以执行DFS TARGET PRIORITY CLASS的优先级类定义与用于在元数据中存储的优先级类定义之间的映射。
现有的struct(结构体)类型的REPLICA COST INFORMATION可以被转换成称作DfsTargetCostInfo的新类class DfsTargetCostInfoprivateULONG TargetCost;//Site-cost(场地开销)DfsReplica*pReplica;∥Server priority is an attributeofDfsReplicaBOOLEANIsBoundary;(服务器优先级是DfsReplicaBOOLEAN(布尔)类型的IsBoundary的属性)publicBOOLEAN operator<=(DfsTargetCostInfo &rhs);BOOLEAN operator!={DfsTargetCostInfo &rhs);DfsTargetCostInfo& operator=(const DfsTargetCostInfo&rhs);现有的struct类型REFERRAL INFORMATION可以被转换成将含有DfsTargetCostInfo对象数组的类。涉及洗牌、排序和生成引用的该逻辑可以被压缩在该新类中。该类也可以将生成的DfsTargetCostInfo对象数组转换成DFS协议期望的REFERRAL HEADER格式。
可以如下执行根据目标优先级的引用排序。给定两个目标,r1和r2,如果r1需要排在r2之前,r1可以被认为<=r2。因而,如果r1<=r2,那么排序的引用可以像{r1,r2}。对<=比较的执行取决于下述观测对全局优先级类中的目标,首先可以比较优先级类。而对非全局优先级类中的目标,首先可以比较场地开销。
1.如果一个或两个目标都在全局优先级类中a.如果优先级类可能不相同,那么基于优先级类确定排序。例如,如果r1可能在DfsGlobalHighPriorityClass中,那么r1可以排在r2之前而和r2的优先级类无关。
b.否则,优先级类可能相同,那么比较r1和r2的场地开销。如果r1的场地开销<r2的场地开销,那么r1<r2。
c.优先级类和场地开销可能都相同,那么转到步骤3。
2.两个目标都可能不在全局优先级类中a.如果目标场地开销可能不同,如果r1的场地开销<r2的场地开销,那么r1<r2。
b.否则,场地开销可能相同,那么检查优先级类。如果r1相比r2在更高优先级类中,那么r1<r2。
c.场地开销和优先级类可能都相同,那么转到步骤3。
3.优先级类和场地开销可能都相同。如果r1相比r2拥有更高的优先级等级(数值上更低),那么r1<r2。
对全局优先级类,引用可以首先根据场地开销排序,然后根据优先级等级排序。这是可能发生的,因为这可以是在其它情况中比较的模式。例如,对非全局的优先级类,当场地开销相等时,仅考虑优先级等级。
图8示出了根据本发明的一个方面,一般表示在一个实施例中用于排序引用响应所采用的步骤的流程图。当引用请求可以被排序时,可以执行上述方法的各种组合。在图8的流程图中所示的该实施例中,场地了解、场地开销和目标优先级可以各用于对引用响应中的目标排序。
在步骤802处,满足客户计算机请求目标列表可以为引用响应聚集来排序。然后,在步骤804处,在与请求计算机相同的场地中的目标可以如前所述的场地了解被排序在列表的顶端。在步骤806处,剩余的目标可以根据全局优先级排序。更具体地,与全局高优先级相关联的目标可以朝向目标列表的顶端排序,而与全局低优先级相关联的目标可以朝向目标列表的底部排序。
下一步,可能没有被指定为全局高或全局低的目标可以根据关联的场地开销排序。在一个实施例中,这样可能没有被指定为全局高或全局低的目标可以被指定为全局普通。这样,这些目标可以分组为目标的有界集合,使得在任何给定有界集合中的每个目标可以与同在该特定有界集合中的所有其它目标类似或相等的场地开销相关联。而且,在一个实施例中,在每一有界集合中的每一第一个目标可以包括可指示有界集合起始位置的设置的边界位。
在步骤810处,每一有界集合可以基于与该有界集合中的每一目标相关联的优先级进一步排序。这样,在有界集合中与高优先级相关联的目标可以被排序在该有界集合的顶端,而在有界集合中与低优先级相关联的目标可以被排序至该有界集合的底部。以这种方式,每一有界集合可以由优先级排序,且可以嵌套在场地开销排序内,而场地开销排序又可以嵌套在全局优先级排序中。
再一次,本领域的技术人员可以理解,实施方式可以选择以不同的顺序执行这些步骤,或者可以选择为效率或适应性的目的仅执行这些步骤中的某些步骤,而达到相同的效果且不背离本发明的范围。
以这种方式,该系统和方法可以支持目标优先级和目标故障后恢复的两者。客户计算机系统可以试图故障后恢复至更低场地开销和/或更高优先级的另一个目标。本发明可以有利地支持基于场地了解和/或目标优先级排序引用。基于场地了解排序引用可以提供与向客户计算机系统提供引用的Dfs服务器相同的场地内的目标集合,以及含有所有其它目标的另一个集合。基于目标优先级排序引用可以提供按照优先级顺序的有界集合,其中每一有界集合可以包括具有由请求引用的客户计算机系统确定的相同的目标优先级的目标。在实施例中,一个引用响应可以被分类成含有相同场地开销和服务器目标优先级的各个有界集合。
如从前述详细说明中可以看到,本发明提供了用于为分布式文件系统确定目标故障后恢复和目标优先级的改进的系统和方法。为了响应来自于客户计算机的请求,可以向客户计算机提供可以基于与每一目标分别关联的场地开销的评估排序的目标列表。较低开销目标可以被排序至引用响应的顶端,以便客户计算机可以只是逻辑解析引用响应,在作出与较高开销目标建立连通的尝试之前,以试图与较低开销目标建立连通为开始。另外,也可以使用目标的优先次序来执行对目标的排序,借此,在一个实施例中,较高优先级的目标也可以被排序在引用响应的顶端。而且,引用响应可以进一步被排序来包括场地开销和目标优先级两者的供应。这样,拥有相等关联场地开销的目标组可以在该组中根据每一目标分别关联的目标优先级进一步排序。任何计算机系统还可以,通过选择并指定来自于根据场地开销和/或目标优先级排序的目标列表的新的设定目标,来使用本发明的排序的引用响应而故障后恢复至更高优先级的目标。正如现在可以理解的,这样,该系统和方法提供了在当代计算中所需的显著的优点和利益。
尽管本发明是对各种修改和替换构造敏感的,其中某些所示出的实施例在附图中显示并如上详细描述。然而,应该理解,不存在将本发明限制在所揭示的特定形式的意图,而正相反,旨在包含属于本发明的精神和范围内的所有修改、替换构造和等价物。
权利要求
1.在计算机系统中,一种用于定位计算机网络中的文件的方法,其特征在于,所述方法包括从客户计算机请求位于服务器计算机网络中的至少一台服务器计算机上的文件的位置;确定所请求的文件所位于的服务器计算机网络中的多个位置;向所述客户计算机返回一目标列表,所述目标列表包括多个引用,其每一个对应于所述服务器计算机网络中的所请求的文件的位置;基于目标信息将所述目标列表分类成有界集合,用于在每一相应文件位置和所述客户计算机之间检索所请求的文件;以及向所述客户计算机提供对所述有界集合的指示。
2.如权利要求1所述的方法,其特征在于,基于目标信息将所述目标列表分类成各个有界集合还包括基于场地开销的评估排序所述列表,包括将所述目标分成有界集合,使得在每一有界集合内的每一目标与同各自的有界集合中的其它目标相同的场地开销相关联。
3.如权利要求1所述的方法,其特征在于,向所述客户计算机提供对有界集合的指示包括提供包含目标和所述客户计算机之间的开销的边界属性。
4.如权利要求2所述的方法,其特征在于,所述每一有界集合的边界至少部分地基于与每一目标相关联的服务器计算机的位置。
5.如权利要求2所述的方法,其特征在于,所述每一有界集合的边界至少部分地基于与每一目标相关联的服务器计算机所关联的健康状态指示。
6.如权利要求1所述的方法,其特征在于,还包括反复尝试按照所述排序所建立的顺序访问每一目标;以及当尝试成功时,与成功访问的第一个目标建立连通性,作为用于后续的访问请求的设定的目标。
7.如权利要求6所述的方法,其特征在于,还包括确定与更低场地开销相关联的目标是否可用于提供后续访问请求;以及如果更低场地开销的目标可用,那么将所述设定目标改为所述更低场地开销的目标。
8.如权利要求7所述的方法,其特征在于,所述确定与更低场地开销相关联的目标是否可用包括只要可以应用属于所述目标的目标故障后恢复策略,就确定与更低场地开销关联的目标是否可用。
9.如权利要求8所述的方法,其特征在于,所述目标故障后恢复策略与所述目标列表相关联。
10.如权利要求8所述的方法,其特征在于,所述目标故障后恢复策略与可与所述目标列表中的每一单独目标相关联的根相关联。
11.如权利要求1所述的方法,其特征在于,还包括基于排外策略从所述目标列表中移除至少一个目标。
12.如权利要求1所述的方法,其特征在于,基于目标信息将所述目标列表分类成各个有界集合还包括根据与每一目标关联的优先级设置来排序所述目标。
13.如权利要求12所述的方法,其特征在于,所述排序还包括将所述目标列表划分成有各个界集合,使得每一有界集合内的每一目标与同在各自有界集合中的其它目标相同的场地开销相关联,且根据优先级设置的排序还包括根据关联的目标优先级设置在每一有界集合内排序每一目标。
14.如权利要求12所述的方法,其特征在于,根据与每一目标关联的优先级设置来排序目标还包括将拥有全局高的目标优先级设置的目标排在已排序列表中各自的有界集合的顶部,且将拥有全局低的目标优先级设置的目标排在已排序列表中各自的有界集合的底部。
15.一种分布式计算系统,其特征在于,包括可操作地耦合至网络的服务器计算机,现用目录服务器计算机可用于响应于对目标的请求而向一台或多台客户计算机提供一目标列表,每一目标对应于位于网络中的计算机上的文件,所述文件由一台或多台客户计算机请求,所述现用目录服务器计算机也可用于根据与每一目标关联的场地开销的评估来排序所述目标列表,所述场地开销指示与从对应于目标的服务器计算机中检索文件到请求目标的客户计算机相关联的开销;耦合至所述网络的至少一台客户计算机,所述客户计算机可用于向耦合至网络的其它计算机请求并检索文件;以及在其上含有对应于由所述现用目录服务器计算机提供的至少一个目标的所请求文件的至少一台服务器计算机。
16.如权利要求15所述的分布式计算机系统,其特征在于,所述现用目录服务器计算机还用于将所述目标列表分类成各个有界集合,使得在各自有界集合中的每一目标与同各自有界集合中的其它目标相同的场地开销相关联,且使得所述有界集合根据与有界集合中的每一目标关联的场地开销而被排序。
17.如权利要求16所述的分布式计算机系统,其特征在于,所述服务器计算机还可用于根据与每一目标关联的目标优先级设置在每一有界集合内排序每一目标。
18.如权利要求17所述的分布式计算机系统,其特征在于,所述客户计算机还可用于指定第一可用目标为设定目标,并随后确定所述设定目标与所述目标列表中的其它目标相比是否与最低场地开销相关联,如果不是,那么切换到含有更低场地开销的可用目标,并指定所述含有更低场地开销的目标为设定目标。
19.如权利要求17所述的分布式计算机系统,其特征在于,所述客户计算机还可用于指定第一可用目标为设定目标,并随后确定所述设定目标与所述目标列表中的其它目标相比是否与更优选的优先级相关联,如果不是,那么切换到含有更优选优先级的可用目标,并指定所述含有更优选的优先级的目标为设定目标。
20.一种在其上存储数据结构的计算机可读介质,其特征在于,所述数据结构包括第一字段,用于存储属于一目标组的目标,每一目标与一服务器计算机相关联;第二字段,用于存储指示客户计算机和所述服务器计算机之间的关系的信息;以及第三字段,用于存储指示所述目标组的边界的值。
全文摘要
提供用于对在引用响应中接收到的目标进行组织和排序,以及用于在分布式文件系统中实现目标故障后恢复和目标优先级策略的系统和方法。在一个实施例中,一种排序方法包括接收分类成有界集合的目标列表列表形式的引用响应。在有界集合中拥有排序的引用响应提供了用于实行目标故障后恢复和目标优先级策略的基础。计算机系统可以从根据场地开销和/或目标优先级排序的排序的目标列表中选择目标。然后,计算机系统可以确定当与在排序的列表中的所有可用目标相比时,设定目标是否与更优选的目标相关联,如果不是,那么切换回至更优选的目标。
文档编号G06F17/30GK1755692SQ20051010855
公开日2006年4月5日 申请日期2005年9月30日 优先权日2004年10月1日
发明者D·E·洛维戈, M·古普塔, P·E·博兹曼, R·尚卡尔, R·普迪佩迪, S·科尔维尔, S·维克勒马提雷克 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1