透明故障转移的制作方法

文档序号:7990867阅读:236来源:国知局
透明故障转移的制作方法
【专利摘要】描述了针对用来跨网络故障和服务器故障转移保留状态的持久句柄的实施例。在已经建立了与文件服务器的会话之后持久句柄被客户端请求。对持久句柄的请求包括由客户端生成的句柄标识符。服务器使用句柄标识符来关联状态信息。当存在网络故障或服务器故障转移并且重新连接到客户端时,句柄标识符被用来标识如果被重放将在服务器上创建不一致状态的经重放的请求。经重放的请求随后被适当地处理。
【专利说明】透明故障转移
[0001]直量
[0002]服务器群集常用于向客户端提供故障转移和高信息可用性。服务器群集的使用允许到客户端的透明故障转移,从而任何服务器故障对在客户端上请求服务器操作的应用是透明的。在共享文件系统中,服务器群集可能对向网络中的数个客户端提供对文件信息的访问是有用的。然而,当该共享文件系统利用诸如服务器消息块(SMB)协议之类的状态协议时可产生问题。当服务器群集中的服务器有故障时,一些状态协议不提供将客户端状态从有故障的服务器转移到替换服务器的途径。同样,提供来存储某些状态信息的文件访问协议不提供来供不同的组件存储不同的状态信息。
[0003]各实施例正是对于这些和其它考虑事项而作出的。而且,尽管讨论了相对具体的问题,但是应当理解,各实施例不应被限于解决本【背景技术】中所标识的具体问题。
[0004]
[0005]提供本概述来以简化形式介绍一些概念,这些概念将在以下详细描述部分中进一步描述。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
[0006]所描述的是利用共享文件系统中持久句柄的实施例。持久句柄用来跨网络故障和服务器故障转移保留状态。在已经建立了与文件服务器的会话之后,持久句柄被客户端请求。对持久句柄的请求包括由客户端生成的句柄标识符。服务器使用句柄标识符来关联状态信息。当存在网络故障或服务器故障转移并且重新连接到客户端时,句柄标识符被用来标识如果被重放将在服务器上创建不一致状态的经重放的请求。这些经重放的请求随后被适当地处理。
[0007]实施例可被实现为计算机进程、计算系统、或者诸如计算机程序产品或计算机可读介质等制品。计算机程序产品可以是计算机系统可读并编码了用于执行计算机进程的指令的计算机程序的计算机存储介质。计算机程序产品还可以是计算系统可读并编码了用于执行计算机过程的指令的计算机程序的载体上的传播信号。
[0008]附图简沭
[0009]参考以下附图描述非限制性和非穷尽的实施例。
[0010]图1示出了可用于实现各实施例的系统。
[0011]图2示出了根据一些实施例的客户端和文件服务器群集使用文件访问协议来通信的框图。
[0012]图3示出了根据一些实施例的用于提供对服务器故障转移的重放防御的操作流程。
[0013]图4示出了根据一些实施例的用于维持文件信息的一致可用性的操作流程。
[0014]图5示出了适于实现各实施例的计算环境的框图。
[0015]详细描沭
[0016]以下将参考形成本发明一部分并示出各具体示例性实施例的附图更详尽地描述各个实施例。然而实施例被实现为许多不同的形式并且不应将其解释为限制在此处描述的实施例;相反地,提供这些实施例以使得本公开变得透彻和完整,并且将这些实施例的范围完全传达给本领域普通技术人员。各实施例可按照方法、系统或设备来实施。因此,这些实施例可采用硬件实现形式、全软件实现形式或者结合软件和硬件方面的实现形式。因此,以下详细描述并非是局限性的。
[0017]图1示出了可用于实现一些实施例的系统100。系统100包括客户端102和104以及服务器群集106。客户端102和104通过网络108与服务器群集106通信。服务器群集106存储被客户端102和104上的应用访问的信息。客户端102和104建立与群集106的会话以访问群集106上的信息。尽管在图1中,仅有客户端102和104被示为与群集106通信,但是在其他实施例中,可以存在两个以上客户端访问来自服务器群集106的信息。
[0018]如图1所示,服务器群集106包括服务器106A、106B和106C,这些服务器为存储在群集106上的信息既提供高可用性又提供冗余性。在实施例中,群集106具有由客户端102和104访问的文件系统。尽管图1中示出了 3个服务器,但是在其他实施例中,群集106可以包括3个以上服务器或3个以下服务器。在实施例中,客户端102和104上的应用请求来自文件系统的文件信息,并且对应用是透明地从服务器群集106上的共享文件系统检索这些文件信息。
[0019]根据一个实施例,服务器106AU06B和106C被用来提供存储在群集106上的文件系统的一致可用性。这是通过利用客户端102和104以及服务器106A、106B和106C上的组件来存储以下状态信息而完成的:即在存在网络108的故障或服务器106A、106B和106C之一的故障的情况下,可以被用来在客户端102和104以及群集106之间重建会话的状态信息。如以下更加详细描述的,状态信息的存储允许客户端102和104具有一致文件访问和对在客户端102和104上运行的各应用透明的故障转移。
[0020]在实施例中,群集106的各服务器(例如106AU06B和106C)各自向各客户端提供对文件信息的访问,并且群集106的各服务器被配置成向各客户端提供文件信息的一致可用性。为了示出一个实施例,客户端102发送建立与群集106的服务器的会话的请求。例如,客户端102可以建立与服务器106A的会话以访问存储在服务器群集106上的共享文件系统。作为建立会话的过程的一部分,客户端102可以利用文件访问协议。在实施例中,文件访问协议是一个版本的网络文件系统(NFS)或服务器消息块(SMB)协议。
[0021]会话的建立可以涉及对在客户端102和服务器106A之间传输的多个协商请求和响应的交换。在SMB协议的各版本中,存在专门定义的协商分组,该专门定义的协商分组被用来协商会话期间将要使用的协议的确切版本以及就客户端(例如,102)和服务器(例如,106A) 二者的能力对彼此作广告。在一个实施例中,协商分组可以包括服务器106A是群集(例如,群集106) —部分的指示。这允许客户端知道服务器106A能够提供一致可用性,换言之,透明故障转移能力。
[0022]继续以上的示例,在建立会话之后,客户端102可将根据文件访问协议格式化的消息发送到服务器106A,以供持久句柄访问文件系统中的文件。在实施例中,作为服务器106A是群集106 —部分的结果,请求持久句柄指示客户端想要利用可用的透明故障转移能力。在实施例中,请求包括是全局唯一标识符的句柄标识符。
[0023]服务器106A将接收对持久句柄的请求并且为了与客户端102的会话而存储句柄标识符和状态信息。存储状态信息可以仅仅涉及文件服务器将句柄标识符持久保存到存储以及存储与该句柄标识符相关联的状态信息。如在以下更加详细描述的,在一些实施例中,可以使用诸如过滤器的分开的组件来存储不同类型的状态信息。在又一些实施例中,有关持久句柄的信息被在各节点间进行复制并且不被存储到文件系统上的持久存储。在还一些实施例中,有关持久句柄的信息既被在各节点间进行复制又被存储到文件系统上的持久存储。
[0024]服务器106A将授权持久句柄以及对文件信息的访问的响应发送到客户端102。客户端102随后继续发送对文件执行各种操作的其他请求。例如,客户端102可以发送读取文件信息的请求、写文件的请求、枚举文件的属性的请求、关闭文件的请求以及请求文件上的各种锁的请求。客户端所请求的各种操作中的每一种操作可以导致更新状态信息以确保如果客户端被断开连接,客户端的状态可以被恢复。此更新可以涉及保存与句柄标识符相关联的额外状态信息。
[0025]在某一时刻,客户端102可以从服务器断开连接。例如,该断开连接可能是因为例如网络故障或中断。或者,该断开连接可能是因为服务器106A的故障。在这些涉及网络故障的实施例中,客户端102可以检测断开连接已经发生并且等待网络变得可用以与服务器106A重新连接。在其他实施例中,一旦客户端102检测到故障它就向群集106发送重新连接的请求,群集106将提供故障转移服务器来处理重新连接请求。
[0026]不论那种情况,客户端102发送重新连接的请求。该请求将包括句柄标识符。月艮务器106A或者替换的服务器(106B或106C)将基于句柄标识符检索状态信息,使用该状态信息重新建立之前的状态,以及向客户端发送指示重新连接成功的响应。在一些实施例中,如果之前的状态信息被丢失或者以其他方式不可用,重新连接是不可能的。在这些情形中,服务器可以把重新连接请求作为建立会话的请求来对待并且相应地作出响应。
[0027]在重新建立会话之后,客户端102发送新的文件访问请求。在一些实施例中,新的文件访问请求之一可以是之前请求的重放。经重放的请求可以是如果被服务器处理但没被识别出它是重放就要在服务器上创建不一致状态的类型。请求的确切类型取决于请求是如何被正使用的文件访问协议处理的。例如,在SMB协议的各版本中,字节范围锁可以被请求并对文件的各部分授权。因此,如果客户端发送了锁定文件的部分的请求,并且该请求被完成但在断开连接以前没有通知客户端,则客户端可以重放该之前的请求。该服务器将需要能够标识该请求是重放。因此,在实施例中,和对持久句柄的原始请求一起发送的句柄标识符被用来标识经重放的请求。一旦被标识,就可处理经重放的请求以避免服务器上的不一致状态。
[0028]在一些实施例中,为了向客户端102上的各应用提供透明的过渡转移,可存在存储在客户端102上的状态信息。也即,服务器106A (或者故障转移服务器)可以不负责存储重新连接之后还原状态所必须的所有信息。在一些实施例中,客户端可以负责重新建立一些状态。例如,如果读取文件信息的请求在断开连接之前被发送,则服务器可以不负责保存与这些读取请求有关的状态信息。当发生重新连接时,客户端可以负责重新发送这些读取请求。下面参考图2更加详细地描述其中状态信息被不同组件还原的实施例的额外描述。
[0029]前述描述仅仅是图1所示的实施例可以如何操作的一个示例。如下面将更详细地描述的,实施例可以包括不同的步骤或操作。这些实施例是使用任何合适的软件或硬件组件或模块来实现的。[0030]现在转到图2,图2示出了软件环境200的框图,软件环境200具有客户端202、客户端204和具有3个服务器(例如,服务器1、服务器2和服务器3)的服务器群集206。还示出了文件系统在那里存储文件信息的文件存储210,以及服务器1、服务器2和服务器3中的一个或多个在那里存储状态信息的存储212。
[0031]如图2中所示,客户端202和客户端204各自包括可以请求文件信息的应用。该应用例如可以是例如文字处理应用、电子表格应用、浏览器应用或者请求对文件的访问的任何其他应用。在图2中所示的实施例中,文件位于存储在文件存储210中的共享文件系统中。客户端202和客户端204各自还包括把对文件的请求从这些应用重定向到文件服务器的重定向器,该文件服务器提供对共享文件系统的访问。重定向器与使用文件访问协议的文件服务器通信。在一些实施例中,文件访问协议可以是NFS或SMB协议的一个版本。出于解释的目的,将假设客户端202和客户端204中的重定向器与使用SMB协议的一个版本(诸如,SMB2.0)的文件服务器通信来描述图2。然而,实施例并不限于使用SMB协议。
[0032]服务器1、服务器2和服务器3在图2中被示为各自包括文件服务器。如上所述,文件服务器可以使用SMB协议的一个版本来与客户端202和客户端204上的重定向器通信。服务器1、服务器2和服务器3中的每一个还包括恢复过滤器,该恢复过滤器在一些实施例中被用来为在客户端重定向器和文件服务器之间建立的会话存储状态信息。
[0033]使用SMB协议在客户端和服务器之间建立会话开始于重定向器(诸如客户端202上的重定向器)向文件服务器(诸如服务器群集206中的服务器1)发送协商请求。重定向器和文件服务器交换协商分组以协商将用于会话的SMB的版本。此外,在协商期间,还可以交换能力。在一个实施例中,文件服务器可以在从文件服务器发送到客户端的协商响应分组中包括能力标志 ,以向客户端指示该文件服务器支持持久句柄的使用。在一些实施例中,在其中文件服务器是通过故障转移到群集中的另一服务器而向客户端提供一致可用性的群集的一部分的情形中这样做。在其他实施例中,独立的服务器也可以具有这种能力,以便在存在网络故障的情况下能够重新连接到客户端。
[0034]一旦完成协商,客户端上的重定向器和文件服务器就建立会话。客户端重定向器随后可以向文件服务器发送文件访问请求。在一个实施例中,重定向器请求持久句柄。SMB协议的各版本规定了可用于重新连接到断开连接的客户端的耐久句柄。然而,它们不须规定在客户端重新连接以后存储和重新建立状态。因此,在实施例中,重定向器可以发送具有某一额外标志和/或指示符的对耐用句柄的请求,以指明客户端重定向器正在请求持久句柄。此外,在重新连接以后客户端可以包括可被用来标识经重放的请求的句柄标识符。以下是SMB协议的一个版本中可能使用的、用于请求持久句柄的耐用句柄请求结构的一个实施例。
[0035]struct SMB2_DURABLE_HANDLE_REQUEST_V2{
[0036]ULONG Flags;
[0037]⑶ID Handleld;//此句柄的客户端提供的唯一 ID。
[0038]//(用来检测重放。)
[0039]ULONG Timeout;//以秒为单位的超时。
[0040]ULONG Reserved; // 必须被设置成 0。}.[0041]在实施例中,响应于该请求,在服务器1上的文件服务器通过向客户端202上的客户端重定向器授权持久句柄并提供文件标识符来作出响应。客户端重定向器随后能够访问来自与持久句柄和文件标识符相关联的文件中的信息。在一些实施例中,客户端重定向器可以为目录请求持久句柄。也即,不是持久句柄与单个文件相关联,而是该句柄可以与目录相关联。
[0042]除了服务器1上的文件服务器授权持久句柄以外,文件服务器还将把状态信息存储在存储212中。该状态信息可以与由客户端重定向器生成的句柄标识符相关联地存储,并且该状态信息还可以与向客户端202上的客户端重定向器提供的文件标识符相关联地存储。如以下更加详细描述的,文件服务器可以将状态信息直接存储为文件服务器状态信息216。在其他实施例中,文件服务器可以利用恢复过滤器来存储状态信息。在又一些实施例中,文件服务器既可以直接存储状态信息又可以使用恢复过滤器来存储其他状态信息。
[0043]在协商完成以后,客户端重定向器使用例如SMB协议的一个版本来发送文件访问请求。在一些实施例中,文件服务器将为从客户端重定向器接收到的各请求中的每一个存储状态信息。在某一时间点上,作为例如网络故障或服务器1的故障的结果,客户端202和服务器1之间可存在断开连接。客户端202可以重新建立与服务器1的连接(如果故障基于网络故障的话),或者重新建立与故障转移服务器(服务器2和服务器3之一)的连接。作为重新连接的一部分,客户端202可以发送包括之前提供的句柄标识符和由文件服务器在协商原始会话时提供的文件标识符在内的重新连接请求。由于状态信息在可被服务器群集206中所有服务器访问的存储212中可用,因此故障转移服务器可以基于客户端在重新连接请求中提供的句柄标识符和/或文件标识符来标识之前的状态信息。在客户端正尝试与服务器1重新建立连接的那些实施例中,服务器1上的文件服务器还可以访问存储212上的状态信息以重新建立与客户端的会话的之前状态。
[0044]如上所述,在一些实施例中,环境200中的不同组件负责存储不同类型的状态信息以向断开连接的客户端提供状态的重新建立。如图2所示,各文件服务器中的每一个都包括恢复过滤器。当客户端被重新连接时,恢复过滤器在实施例中用来存储用于重新建立状态的状态信息。恢复过滤器并不依赖于文件服务器所使用的特定文件访问协议。在实施例中,文件服务器将首先向恢复过滤器注册,以便存储特定状态信息。一旦注册,文件服务器就向恢复过滤器传递状态信息,该恢复过滤器把该状态信息作为恢复过滤器状态信息214存储在存储212中。除了恢复过滤器状态信息214以外,服务器还可将被示为文件服务器状态信息216的分开的状态信息存储在存储212中。在实施例中,与恢复过滤器状态信息214相比,该不同的状态信息可以被存储在不同的存储位置。文件服务器状态信息216和恢复过滤器状态信息214可以以任何合适的方式(诸如日志文件)被存储。如以下更加详细描述的,恢复过滤器所存储的那些类型的状态信息在实施例中是通用信息,而服务器信息是更加专用的状态信息。
[0045]在一些实施例中,客户端还负责存储一些状态信息。如图2所示,客户端202和204存储用于当客户端在断开连接后被重新连接时重新建立状态的状态信息。在这些实施例中,在具有客户端重新建立状态,而不要求文件服务器存储用以当客户端断开连接后被重新连接时重新建立客户端状态的所有状态信息时,可以存在一些成本节省。例如,如果要求文件服务器存储所有状态信息,则每当存在从客户端重定向器接收到的一些请求以及要对文件执行的一些操作时,文件服务器就将被要求存储有关于这些请求或操作的某些信息。要求客户端重定向器存储状态信息中的一些减少了文件服务器必须为从客户端接收到的每一请求或操作存储状态信息的成本。
[0046]可以理解,存储在环境200的不同组件上的状态信息取决于不同的设计考虑。例如,可以存在对要求文件服务器保证状态信息是相干且一致可用的而言足够重要的某些信息,在这种情形下该信息应该被文件服务器和/或恢复过滤器存储。例如,根据实施例,为了服务器执行共享模式并确保新客户端请求访问不干扰现有客户端的访问,状态信息必须被存储在服务器上。其他状态信息可以不是关键的,并且在信息中可以容忍一些不一致。作为一个示例,客户端可以具有本地缓存的文件属性。在客户端断开连接后又重新连接到文件服务器之后,可以重新请求所高速缓存的文件属性。
[0047]在一个实施例中,在SMB协议的一个版本被用于客户端重定向器和文件服务器之间的通信的情况,SMB协议可以规定要由环境200中所示的各个组件来存储的特定状态。在一个实施例中,使用SMB协议的可用操作被分成三组。与每一组相关联的状态信息被不同的组件存储。
[0048]第一组一般可被称作非幂等操作,这意味着如果重放这些操作(例如,当在客户端断开连接前已经被应用过一次之后,重新应用到文件上),将在文件服务器上创建不一致状态。在SMB协议的各版本中,字节范围锁是要求重放检测的各操作的示例,因为这些锁是堆叠和非堆叠的。其它示例包括例如可以通过创建新文件或重写现有文件而修改盘状态的追加写和打开/创建。在实施例中,因为文件服务器必须识别这些类型的操作正被重放,故而与这些操作相关联的状态由文件服务器来存储。在图2所示的实施例中,与这些操作相关联的状态将作为文件服务器状态信息216的一部分被在服务器1、服务器2和服务器3中的每一个上的文件服务器存储在存储212中。如上所述,在一些实施例中由客户端在会话的协商期间提供的句柄标识符被用来标识请求是之前请求的重放。
[0049]第二组操作涉及数据开放操作。这些操作可以是对读、写、执行或删除文件中信息的请求。根据实施例,为了能够执行共享模型并且防止其他客户端影响现有客户端,有关这些开放操作的状态必须被存储在服务端侧。有关开放操作的状态还被存储在服务端侧以阻止本地操作干扰持久句柄。例如,防止在群集节点上运行的程序修改或以其他方式影响为客户端保留的句柄。在实施例中,有关这些类型的操作的状态被恢复过滤器存储。如上所述,实施例中的恢复过滤器并非专用于SMB协议,而是在文件服务器使用不同文件访问协议(诸如NFS)时也可以被使用。在如图2所示的实施例中,在服务器1、服务器2和服务器3中的每一个上的恢复过滤器开放操作的状态信息作为恢复过滤器状态信息214的一部分存储在存储212中。
[0050]第三组操作包括如果被重新应用到服务器将不会改变服务器的最终状态的操作。这些可被称为幂等操作。该组内的一些操作包括但不限于读、非追加写、删除、重命名、元数据设置操作和元数据查询操作。租用状态也可以被客户端存储并且无需被服务器持久存储。在实施例中,租用是一种被设计成允许客户端按照一致的方式动态地改变它们的缓冲策略以改善性能并减少网络使用的机制。如果客户端可以在本地缓冲文件数据(这减少或消除了发送及接收网络分组的需要),则可以改善远程文件操作的网络性能。如果客户端确认没有其他客户端正在访问数据,则该客户端可不必把信息写入远程服务器上的文件。同样,如果客户端确认没有其他客户端正在向远程文件写数据,则该客户端可以缓冲来自远程文件的预读数据。
[0051]根据实施例,因为在客户端在故障转移之后正恢复它们的句柄时恢复过滤器阻止对给定文件的所有创建,租用状态无需被持久存储在服务器上。这隐含提供了如果客户端在宽限期内重新连接/恢复他们的句柄,句柄租用将永远不会在故障转移过程期间被丢失的保证。换言之,客户端在恢复阶段将总能找回它们的句柄租用。此外,诸如读/写、读/写/句柄租用的独占租用在任何给定时间否仅授权单个客户端。这隐含了不存在对来自任何其他客户端的文件开放的其它数据。于是在故障转移期间,由于在保持独占租用的客户端已经恢复其所有句柄以前恢复过滤器将不允许对文件的新创建,存在客户端将找回其独占租用的保证。诸如读租用之类不需要确认的共享租用在没有服务器或恢复过滤器的知识的情况下可能会在任何时间被丢失,因为底层文件系统允许导致这个中断的操作继续。对于这些租用,客户端在实施例中假设该租用跨故障转移中断并且清除其高速缓存来防止陈旧读取。第三组中操作的状态因而可以被客户端重新创建而无需来自服务器的任何额外支持。在如图2所示的实施例中,客户端202和204上的重定向器为第三组操作存储状态信肩、Ο
[0052]在操作中,环境200允许客户端202和204上的应用请求对存储在共享文件系统中的文件存储210中的文件的访问。应用可以透明地请求文件信息。如上所述,客户端上的重定向器将建立请求持久句柄的与群集206中的服务器之一的会话,从而使重定向器可以在存在断开连接的情况下重新连接并且重新建立会话。文件服务器将把状态信息直接作为文件服务器状态信息216或者作为使用恢复过滤器的恢复过滤器状态信息214而存储在存储212中。在一些实施例中,客户端还将存储一些状态信息。在断开连接的情况下,重定向器可以请求重新连接到文件服务器或重新连接到故障转移服务器。存储在服务器侧(例如,存储212中)以及客户端侧上的状态信息随后可以被用来重新建立客户端的之前状态。所有这些都对客户端202和204上的应用透明地发生。
[0053]可以理解,以上对环境200的描述并非旨在限制本文中所述的实施例。图2及其描述仅仅旨在说明一些实施例的实现。在其他实施例中,不同类型的状态信息可以被存储在环境200中的不同组件上。同样,如上所述,可以使用可以确定所存储的状态信息的类型以及什么组件存储该状态信息的不同的文件访问协议。由此,实施例并不受限于图2中示出并描述了什么。
[0054]下面对图3和4的描述是在将服务器消息块(SMB)协议用作文件访问协议的情况下作出的。然而,实施例不限于此。包括不同版本的SMB或网络文件系统(NFS)在内的任何文件访问协议都可以在实施例中用作文件访问协议。SMB在说明书中仅仅是为了便于说明。
[0055]图3和图4示出根据各实施例的操作流程300和400。操作流程300和400可以在任何合适的计算环境中执行。例如,操作流程可以由诸如图1和图2所示的系统和环境来执行。因此,对操作流程300和400的描述可参考图1和2的至少一个组件。然而,对图1和2的组件的任何这类参考仅出于描述性目的,并且应当理解,图1和2的实现是操作流程300和400的非限制性环境。
[0056]此外,尽管以特定次序顺序地示出并描述了操作流程300和400,但在其它实施例中,各个操作能以不同的次序、多次和/或并行执行。此外,在某些实施例中,一个或多个操作可被省略或组合。
[0057]操作流程300示出用于提供对服务器故障转移的重放防御的步骤。在实施例中,图3中所示的流程300可以由在作为服务器群集的一部分的服务器(例如群集206的服务器1、服务器2和服务器3 (图2))上运行的文件服务器来执行。流程300始于操作302,在操作302接收连接到文件服务器的请求。在操作302接收到的请求是建立与文件服务器的会话以访问存储在可通过文件服务器访问的共享文件系统上的文件信息的请求。该请求可以被例如客户端202和204 (图2)的客户端发送。在操作302以后,流程300转到操作304,在操作304,发送指示已经建立会话的响应。在一些实施例中,在操作302和304发送的请求和响应可以是在客户端和服务器之间交换以协商会话的多个消息的一部分。消息的交换可以包括各能力的交换,各能力包括文件服务器提供持久句柄的能力。
[0058]操作流程从操作304转到操作306,在操作306,接收对持久句柄的第二请求。该请求被客户端发送并且包括由客户端生成的句柄标识符。句柄标识符在实施例中被服务器用来存储与在客户端和文件服务器之间建立的会话有关的状态信息。作为存储状态信息的一部分,流程300在实施例中可以包括操作308,在操作308中文件服务器向恢复过滤器注册以存储一些状态信息。在实施例中,恢复过滤器位于协议层和底层存储系统之间,并且在实施例中能够用来存储与在文件服务器和客户端之间建立的会话有关的状态信息。
[0059]在操作310,与句柄标识符相关联地存储状态信息。可以以任何适合的形式(诸如表、数据库或日志文件)存储状态信息。存储是持久的并且对文件服务器可用,以用于在必要时重新建立状态。状态信息可以由文件服务器直接存储。在其他实施例中,流程300包括操作312,在操作312中恢复过滤器被用来存储状态信息。如上所述,在一些实施例中文件服务器可以向恢复过滤器注册以存储状态信息。
[0060]流程300从操作312转到操作314,在操作314,向客户端发送授权使用持久句柄对文件的访问的响应。该响应包括文件标识符,该文件标识符由文件服务器在该响应中提供,并且还与在操作310及可选的操作312处存储的状态信息相关联地存储。
[0061]流程300随后转到操作316,在操作316可选地接收多个文件访问请求。这些文件访问请求可以包括要对与持久句柄相关联的文件执行的多个文件操作。这些操作可以是,例如打开以读/写数据、枚举属性、允许在本地高速缓存数据的租用请求或者其他文件访问操作。与在操作316接收文件访问请求相关联的各种状态可以在操作318被更新。也SP,当这些请求被授权给客户端时,在之前操作(310和312)中存储的状态信息被更新以反映额外的状态信息。
[0062]在操作318以后,存在在框319中标识出的多个额外操作。这些操作可以作为客户端从文件服务器断开连接的结果而被执行。可以理解,在原始执行操作302-318的文件服务器因为故障而不可用的那些情形中,可以由故障转移服务器执行框319中的额外操作。在其他实施例中,在故障是网络问题的结果的情况下,由相同的文件服务器执行框319中的操作。
[0063]在操作320,重新连接的请求被接收。该请求包括文件服务器之前提供的文件句柄,以及客户端在请求持久句柄时使用的句柄标识符。在操作320接收请求的文件服务器可以使用句柄标识符和文件标识符来查找状态信息。如上所述,该操作可以涉及使用恢复过滤器以检索之前使用恢复过滤器来保存的状态信息。[0064]流程300从操作320转到操作322,在操作322状态信息被用来重新建立与客户端的连接和之前的状态。在操作322之后,流程转到操作324,在操作324,接收新的文件访问请求。操作324因而可以包括多个操作,其中的每一操作包括从客户端接收文件访问请求。
[0065]在操作324接收的这些请求中的一些可以是在文件服务器和客户端之间断开连接之前被发送的之前请求的重放。结果,这些操作中的一些如果在文件服务器处被重新应用的话会创建不一致状态。在操作326,检测到是重放的新的文件访问请求。在实施例中,该操作可以涉及使用客户端之前提供的句柄标识符来标识文件访问请求。一旦在操作326检测到重放,就在操作328正确地处理请求。也即,如果经重放的操作将在文件服务器上创建不一致状态,如果之前的操作被成功地执行则可以忽略经重放的操作。或者,如果之前的操作没有被成功地执行,则可以应用经重放的操作。流程300在330处结束。
[0066]操作流程400示出了用于维持一致可用性的步骤。在实施例中,流程400可以被诸如客户端202和204 (图2)的客户端上的重定向器执行,该重定向器与文件服务器通信以访问共享文件系统中的文件。在实施例中,客户端通过使用文件访问协议(诸如SMB协议的一个版本或NFS的一个版本)与文件服务器通信。
[0067]流程400始于操作402,在操作402发送连接到文件服务器的请求。在操作402所发送的请求是建立与文件服务器的会话以访问存储在可通过文件服务器访问的共享文件系统上的文件信息的请求。该请求可以被发送到在作为服务器群集(图2)—部分的服务器(例如服务器1、服务器2和服务器3)上的文件服务器。根据诸如一个版本的SMB或NFS之类的文件访问协议来格式化该请求。
[0068]在操作402以后,流程400转到操作404,在操作404,接收指示已经建立会话的响应。在一些实施例中,操作402和404可以是在客户端和服务器之间交换以协商会话的多个消息的一部分。消息的交换可以包括各能力的交换,各能力包括文件服务器提供持久句柄的能力。
[0069]操作流程从操作404转到操作406,在操作406,发送对持久句柄的请求。作为协商过程(操作402和404)的结果,客户端可以已经被通知该文件服务器能够提供持久句柄。为了确保客户端上的应用能够在断开连接并重新连接之后重新建立其状态,在操作406客户端可以请求持久句柄。该请求包括由客户端生成的句柄标识符。
[0070]流程400从操作406转到操作408,在操作408,接收授权对使用持久句柄的文件的访问的响应。该响应包括文件标识符,该文件标识符由文件服务器在该响应中提供。
[0071]在操作410,状态信息在一些实施例中可以由客户端存储。与在所接收的授权持久句柄的响应中提供的句柄标识符和文件标识符相关联地存储状态信息。可以以任何适合的形式(诸如表、数据库或日志文件)来存储状态信息。该存储是持久的并且对客户端可用以用于在必要时重新建立状态。可以理解,在一些实施例中客户端所存储的状态信息是用于可以被安全地重放回文件服务器而不会在文件服务器上创建不一致状态的各操作的状态信息。经重放的操作可以是例如租用本地缓存数据、读取、写、删除以及元数据枚举。
[0072]流程400从操作410转到操作412,在操作412,客户端发送多个文件访问请求。根据实施例,操作412由此可以涉及发送执行文件操作的数个请求。在操作412之后是操作414,在操作414更新客户端上的状态信息。可以理解,操作414可以发生多次,即每次在操作412客户端发送文件访问请求时可以发生操作414。[0073]流程从操作414转到操作416,在操作416,检测断开连接。该检测可以借助于超时、事件通知或一些其他手段发生。在操作416之后,在操作418发送对重新连接和重新建立之前建立的与文件服务器的会话的请求。该请求包括文件服务器之前提供的文件句柄,以及客户端在请求持久句柄时使用的句柄标识符。
[0074]流程400从操作418转到操作420,在操作420作出重新连接成功的判定。在操作420,流程转到操作422,在操作422,存储在客户端的状态信息被用来重新建立之前的状态。操作422可以涉及发送多个不同的请求,这些请求包括读取、写、枚举、对锁定或建立之前状态的其他操作的请求。流程从操作422转到操作424,在操作424,客户端发送新的文件访问请求。流程在426处结束。
[0075]图5示出可用于实现本文中所描述的各实施例的通用计算机系统500。计算机系统500仅是计算环境的一个示例,而非旨在对计算机和网络架构的使用范围或功能提出任何限制。计算机系统500也不应被解释成对于在示例计算机系统500中所示出的任一组件或其组合有任何依赖或要求。在实施例中,系统500可用作上面参照图1所述的客户端和/或服务器。在其最基本配置中,系统500通常包括至少一个处理单元502和存储器504。取决于计算设备的确切配置和类型,存储器504可以是易失性的(如RAM)、非易失性的(如ROM、闪存等)或是两者的某种组合。该最基本配置在图5中由虚线506来示出。在实施例中,系统存储器504存储请求对文件信息的访问权的应用(诸如应用523)。根据实施例,系统存储器504还包括拦截请求并把它们传输到文件服务器的重定向器522。
[0076]如这里所使用的术语计算机可读介质可以包括计算机存储介质。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块、或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器504、可移动存储和不可移动存储508都是计算机存储介质示例(即,存储器存储)。在实施例中,诸如状态信息520的数据例如被存储。计算机存储介质可包括,但不限于,RAM、ROM、电可擦除只读存储器(EEPR0M)、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或者可用于存储信息且可由计算设备500访问的任何其他介质。任何这样的计算机存储介质可以是设备500的一部分。计算设备500还可具有输入设备514,诸如键盘、鼠标、笔、声音输入设备、触摸输入设备等。还可包括输出设备516,诸如显示器、扬声器、打印机等。上述设备是示例且可以使用其他设备。
[0077]如这里所使用的术语计算机可读介质还包括通信介质。通信介质由诸如载波或其他传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块或其他数据来体现,并包括任何信息传递介质。术语“已调制数据信号”可以描述以对该信号中的信息进行编码的方式设定或者改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接等有线介质,以及诸如声学、射频(RF)、红外线和其他无线介质等无线介质。
[0078]本说明书通篇引述了“一个实施例”或“一实施例”,这意味着在至少一个实施例中包括特定描述的特征、结构或特性。因此,对这样短语的使用可指的是一个以上的实施例。而且,在一个或多个实施例中,可以用任何合适的方式组合所描述的特征、结构或特性。
[0079]然而,本领域技术人员会认识到本实施例也可在没有一个或多个具体细节的情况下实施,或者采用其他方法、资源、材料等来实现。在其他情况中,仅为了避免模糊实施例的各方面,未详细示出和描述公知的结构、资源或操作。
[0080]虽然示出和描述了示例实施例和应用,但是应该理解本实施例不限于上述精确配置和资源。可以对此处公开的方法和系统的排列、操作以及细节作出对本领域技术人员显而易见的各种修改、改变和变化,而不背离所要求保护的本实施例的范围。
【权利要求】
1.一种向访问服务器群集上的共享文件系统的客户端提供一致可用性的计算机实现的方法,所述方法包括:在文件服务器接收连接到所述文件服务器以访问共享文件系统中的文件信息的请求,所述第一请求是根据文件访问协议来格式化的,其中所述文件服务器是服务器群集中的多个服务器中之一;从所述文件服务器发送响应,所述响应建立与客户端的、允许对所述共享文件系统中的文件信息的访问的会话,所述响应是根据所述文件访问协议来格式化的;在所述文件服务器接收打开所述文件服务器上持久句柄以供客户端访问所述共享文件系统中的文件的请求,所述请求包括由所述客户端提供的句柄标识符;响应于接收所述请求,所述文件服务器:与所述句柄标识符相关联地存储有关所述会话的第一状态信息;以及向所述客户端发送授权 对所述文件的访问的响应;在客户端断开连接之后,接收使用所述持久句柄重新建立所述会话的请求;以及使用所述第一状态信息重新建立所述会话。
2.如权利要求1所述的方法,其特征在于,所述第一状态信息包括如果被所述客户端重新发送会导致所述文件服务器最终处于不一致状态的操作的状态。
3.如权利要求1所述的方法,其特征在于,还包括:在重新建立所述会话之后,从所述客户端接收新的请求,该请求包括句柄标识符。
4.如权利要求1所述的方法,其特征在于,所述客户端断开连接因文件服务器的故障而发生,并且重新建立所述连接由所述服务器群集中的第二文件服务器执行。
5.—种包括计算机可执行指令的计算机可读存储介质,所述计算机可执行指令在被处理器执行时执行一种维持一致性状态的方法,所述方法包括:由客户端发送连接到服务器以访问文件信息的请求,该请求是根据文件访问协议来格式化的;从所述服务器接收响应,所述响应建立与客户端的、允许对所述服务器上的文件信息的访问的会话,所述响应是根据所述文件访问协议来格式化的;发送打开所述服务器上的持久句柄以供所述客户端访问所述服务器上的文件的请求,该请求包括由所述客户端提供的句柄标识符;在所述客户端接收授权对所述文件的访问的响应;检测所述客户端已经从所述服务器断开连接;发送使用所述持久句柄重新建立所述会话的请求,重新建立所述会话的请求包括所述句柄标识符;判定所述会话已被重新建立;以及发送新请求。
6.一种用于提供文件信息的一致可用性的系统,所述系统包括:第一服务器,其包括:被配置成执行计算机可执行指令的至少一个处理器;存储所述计算机可执行指令的至少一个计算机可读存储介质,所述计算机可执行指令在被所述至少一个处理器执行时提供:第一文件服务器,其被配制成:接收打开持久句柄以供客户端访问所述第一文件服务器上的文件的请求,该请求包括由所述客户端提供的句柄标识符;与所述句柄标识符相关联存储第一状态信息;向恢复键过滤器注册以存储与所述恢复键相关联的第二状态信息;以及向所述客户端发送授权对所述文件的访问的响应;所述恢复键过滤器被配置成:从所述第一文件服务器接收注册请求;将所述第二状态信息与所述恢复键一起存储;以及响应于来自所述第一文件服务器的对所述第二状态信息的请求,向所述第一文件服务器发送所述第二状态信息。
7.如权利要求6所述的系统,其特征在于,所述系统还包括:至少一个客户端,其包括:被配置成执行计算机可执行指令的至少一个额外的处理器;存储所述计算机可执行指令的至少一个额外的计算机可读存储介质,所述计算机可执行指令在被所述至少一个额外的处理器执行时提供:文件访问重定向器,其被配置成:发送打开所述第一服务器上的持久句柄以供所述客户端访问所述第一服务器上的文件的请求,所述请求包括句柄标识符;接收授权访问所述文件的响应;检测所述客户端已经从所述第一文件服务器断开连接;发送使用所述持久句柄重新建立会话的请求,该重新建立所述会话的请求包括所述句柄标识符;判定所述会话已被重新建立;以及发送新的请求。
8.如权利要求6所述的系统,其特征在于,所述第一文件服务器是文件服务器群集中的多个服务器之一,并且其中所述服务器群集中的多个服务器中的第二服务器包括:被配置成执行计算机可执行指令的至少一个额外的处理器;存储所述计算机可执行指令的至少一个额外的计算机可读存储介质,所述计算机可执行指令在被所述至少一个额外的处理器执行时提供:第二文件服务器,其被配置成:接收使用所述持久句柄来重新建立会话的请求,所述会话由所述第一文件服务器之前建立。
9.如权利要求8所述的系统,其特征在于,所述多个服务器中的第二服务器还被配置成:使用所述第一文件服务器的状态信息来重新建立所述会话的之前状态。
10.如权利要求7所述的系统,其特征在于,所述文件访问重定向器使用服务器消息块(SMB)协议的一个版本来请求来自所述第一文件服务器的文件操作,并且所述第一文件服务器使用所述SMB协议的所述版本与所述文件访问重定向器通信。
【文档编号】H04L12/24GK103636165SQ201280032570
【公开日】2014年3月12日 申请日期:2012年6月8日 优先权日:2011年6月30日
【发明者】M·乔治, D·M·克鲁斯, J·T·平克顿, R·C·巴特帕蒂, T·乔利, P·R·斯旺, M·商, D·E·洛文格 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1