Smb2扩展的制作方法

文档序号:6376572阅读:268来源:国知局
专利名称:Smb2扩展的制作方法
技术领域
本发明涉及集群环境的扩展。
背景技术
服务器集群常用于提供信息到客户机的故障切换和高可用性。传统上,集群环境是根据客户机-服务器协议来设计的,其中客户机连接到服务器以访问该服务器可用的资源。在传统集群环境中,组成该环境的不同的服务器可访问不同的文件系统。不能访问共同的文件系统限制了传统文件系统集群的功能。各实施例正是对于这些和其他考虑事项而做出的。而且,尽管讨论了相对具体的 问题,但是应当理解,各实施例不应被限于解决本背景技术中所标识的具体问题。

发明内容
提供本发明内容来以简化形式介绍将在以下详细描述部分中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。本公开内容的各实施例提供了经扩展的集群环境,其中文件系统在逻辑上被集群在一起使得该集群中的每一节点能访问驻留在该集群中的所有资源。因为文件系统能由该集群环境中的每一节点访问,所以不论客户机连接到哪一节点,该客户机都可以访问该集群的资源。这样的环境向客户机提供了在连接到集群环境时的各个选项。客户机可以利用经扩展的集群节点的灵活性来高效地连接到服务器集群。在其他实施例中,尽管该经扩展的集群环境允许客户机访问跨该集群的资源而不论客户机与其建立连接的实际节点如何,但一旦客户机与一节点建立了连接,它就尝试维持它与该同一节点的连接以减少在该集群环境的各节点之间转移的状态信息的量。然而,在一些情况下,客户机可能不能维持与同一节点的连接,而是需要连接到该经扩展的集群环境中的不同节点。在其他环境中,该经扩展的集群环境提供会话信息、状态信息和/或句柄的存储和维护,以便于客户机从一个节点移动到另一节点。该集群的各节点能够在彼此之间传递这样的信息,以便于客户机连接的移动。各实施例可被实现为计算机进程、计算系统、或者诸如计算机程序产品或计算机可读介质等制品。计算机程序产品可以是计算机系统可读并对用于执行计算机过程的指令的计算机程序编码的计算机存储介质。计算机程序产品还可以是计算系统可读并对用于执行计算机过程的指令的计算机程序编码的载体上的传播信号。


参考以下附图描述非限制性和非穷尽性的实施例。图I示出了可用于实现此处描述的实施例的系统。图2是客户机在连接到服务器集群时可以执行的方法的实施例。
图3是客户机在集群环境中的各节点之间转移连接时可以执行的方法的实施例。图4是由集群环境中的节点执行以维护和转移持久句柄的方法的实施例。图5是由集群环境中的节点执行以请求先前建立的会话的所有权的方法的实施例。图6示出了适于实现各实施例的计算环境的框图。
具体实施例方式以下将参考形成本发明一部分并示出各具体示例性实施例的附图更详尽地描述各个实施例。然而各实施例被实现为许多不同的形式并且不应将其解释为限制在此处描述的实施例;相反地,提供这些实施例以使得本公开变得透彻和完整,并且将这些实施例的范围完全传达给本领域普通技术人员。因此,这些实施例可采用硬件实现形式、全软件实现形 式或者结合软件和硬件方面的实现形式。因此,以下详细描述并非是局限性的。图I示出了可用于实现此处公开的一些实施例的系统100。系统106可以是包含一个或多个节点的示例集群系统。集群系统的示例是具有一个或多个服务器的服务器集群,如图I所示。系统100包括客户机102和104以及服务器集群106。客户机102和104通过网络108与服务器集群106通信。在各实施例中,网络108可以是因特网、WAN、LAN、或本领域已知的任何其他类型的网络。服务器集群106存储被客户机102和104上的应用访问的资源。客户机102和104与集群106建立会话以访问集群106上的资源。尽管在图I中,仅有客户机102和104被示为与集群106通信,但是在其他实施例中,可以存在两个以上客户机从服务器集群106访问信息。在各实施例中,客户机102和104可根据SMB2协议来访问服务器集群106或与其通信。如图I所示,服务器集群106包括例如服务器106AU06B和106C等一个或多个节点,这些节点提供对存储在集群106上的信息的高可用性和冗余性。服务器集群106的一个或多个节点可经由网络彼此通信,诸如因特网、WAN、LAN、或本领域已知的任何其他类型的网络。在各实施例中,集群106可以具有文件系统、数据库、或者由客户机102和104访问的其他信息。尽管图I中示出了 3个服务器,但是在其他实施例中,集群106可以包括3个以上服务器或3个以下服务器。在各实施例中,服务器集群106是经扩展的服务器集群。在各实施例中,经扩展的服务器集群包括能由该服务器集群中的每一节点(例如,服务器106A、106B以及106C)访问的文件系统108。作为示例,在经扩展的集群中,文件系统在逻辑上被集群在一起,使得组成该文件系统的一个或多个盘能从该服务器集群中的每一服务器可见。在这样的实施例中,经扩展的服务器集群使得能够在该集群中的各节点间共享资源。在一个这样的实施例中,服务器集群106包括中央数据储存库,该中央数据储存库包括服务器集群106中的每一服务器能访问的一个或多个数据存储。在这样的实施例中,将资源存储在中央储存库中允许每一服务器访问文件系统。在另一实施例中,可通过跨服务器集群106中的每一服务器的本地文件系统复制资源来提供共享文件系统。在这样的实施例中,可以使用本领域已知的任何方式的复制数据来跨组成该集群的各服务器复制集群资源。将在逻辑上集群在一起的文件系统包括在经扩展的服务器集群(如服务器集群106)中,提供了在传统服务器集群中不可用的附加功能。在一个实施例中,在逻辑上集群在一起的文件系统确保作为集群环境的一部分的每一节点能访问该环境上的任何资源。在各实施例中,资源可以是集群环境中提供的应用、文件、对象、数据、或任何其他类型的资源。这允许客户机访问和/或以其他方式操纵该文件系统上的任何资源,而不论该客户机与哪一节点(例如,服务器106AU06B和/或106C)建立了连接。在各实施例中,文件服务器106可使用名称解析机制将每一节点注册在共同名称下。名称解析机制的非限制性示例是域名系统(DNS)。例如,服务器集群106可以将服务器106A、106B、以及106C注册在DNS服务器(图I中未示出)中的共同名称下。DNS服务器可以是服务器集群106的一部分或它可以在服务器集群106外部。在客户机尝试访问服务器集群106中的服务器时,客户机可访问名称解析机制来获得服务器的地址。例如,客户机可联系DNS服务器来获得服务器集群106中的一服务器的地址。因为该服务器系统将所有服务器注册在共同名称下,所以DNS服务器可返回组成服务器集群106的各服务器(例如,服务器106A、106B以及106C)的地址的列表。在各实施 例中,该地址可以是IP地址、URL、URI、或本领域已知的任何其他类型的地址。因为返回了多个地址,所以向客户机提供了要连接到哪一服务器的选择。在各实施例中,客户机可选择连接到它从服务器接收到的列表中的第一地址。在一些情况下,客户机可能难以连接到该第一地址所标识的第一服务器(例如,服务器106A)。因为服务器集群106中的每一服务器都能够向客户机提供类似功能,所以客户机可决定连接到服务器集群106中的另一服务器。如果客户机不能成功连接到第一服务器,则在等待了预定时间段之后,客户机可以发起连接到它从名称解析机制接收到的各地址的子集(例如,服务器106B和服务器106C)的一个或多个请求,并挑选成功的连接。该一个或多个请求可以并行地作出,在这种情况下,客户机可连接到与其成功建立连接的第一服务器。虽然以上提供了地址列表的特定排序(例如,服务器106A作为第一列出的地址),但本领域技术人员将明白,地址列表可以具有任何次序。在各实施例中,名称解析机制可以使用循环技术,如DNS循环可被用来提供跨网络的负载平衡。因为多个客户机(例如,客户机102和104)可同时连接到服务器集群106,所以循环技术确保提供给不同客户机的第一地址变化。因而,各初始连接请求分散到该集群环境的所有节点。此外,客户机可在与第一服务器的不成功的连接尝试之后随机选择它向其发出附加连接请求的地址的子集,从而提供附加的负载平衡机制。在各实施例中,一旦客户机连接到服务器集群106中的服务器,客户机就确保它保持连接到该同一服务器。虽然每一服务器(例如,服务器106A、106B以及106C)共享在逻辑上集群在一起的文件系统,但该客户机的会话状态可由它所连接到的服务器处理。因而,为了最小化跨各服务器的状态同步通信量,客户机可确保它保持连接到同一服务器。例如,如果客户机102连接到服务器106A,则客户机102可尝试确保它的所有连接和资源使用(例如,打开文件)都在服务器106A上。在这样的实施例中,如果客户机102丢失了它到服务器106A的连接,则在它重新连接到服务器集群106时,它将尝试重新连接到服务器106A而非服务器106B或106C,从而降低了对在服务器集群106中的不同服务器之间转移会话状态的需求。在各实施例中,因为客户机在丢失连接后尝试重新连接到同一服务器,所以即使在服务器丢失与该客户机的通信后,该服务器也维护该客户机的会话状态。例如,如果客户机102丢失与服务器106A的连接,服务器106A也可维护客户机102的会话状态。在客户机102重新建立其连接时,会话状态的持久性允许在客户机102重新连接到服务器106A后重用其会话信息(例如,状态信息)。然而,在一些情况下,客户机维持它到服务器集群106中的单个服务器的连接是不高效或不可能的。例如,服务器节点故障、丢失到给定服务器的连接、或管理动作(如负载平衡、对服务器打补丁、或任何其他类型的管理动作)可使得客户机不可能重新连接到同一节点。为便于节点的改变,服务器集群106可支持对由客户机访问的资源的持久句柄。持久句柄允许客户机在连接到第二节点时恢复它在第一节点上建立的句柄。例如,如果客户机102将其初始连接从服务器106A改变到服务器106C,则客户机102在服务器106A上所使用的句柄可被转移到服务器106C。在各实施例中,服务器集群106可以使用持久状态存储来提供持久句柄。示例持久状态存储是存在于服务器集群106的一个或多个节点中的恢复密钥管理器。然而,本领域技术人员将明白,服务器集群106可以使用任何类型的高速缓存或数据存储来促进持久句柄。在一个实施例中,服务器集群106提供集中式持久状态存储。在这些实施例 中,服务器集群106中的单个节点(例如服务器106B)维护客户机会话的打开句柄的持久状态。在这样的实施例中,客户机每次从一个节点切换到另一节点(例如,从服务器106A切换到106C),作为客户机会话的一部分的句柄的所有权可通过使用先前会话无效逻辑来在这些节点之间转移(例如,所有权从服务器106A转移到服务器106C),诸如在2011年9月9日提交的、题为“Clustered Client Failover (集群的客户机故障切换)”(代理案号14917. 1840US01)的、共同受让共同待审的美国专利申请号13/228,732中描述的无效技术,其整体通过引用结合于此。在其他实施例中,句柄的所有权可由客户机在逐句柄的基础上显式地转移。在另一实施例中,持久状态存储可以是分布式状态存储。在这样的实施例中,持久状态存储可以分布在服务器集群106的各节点上。在这样的实施例中,每一节点可以存储持久状态存储。可以使用集群级状态复制算法来跨该分布式数据存储复制状态。在这样的实施例中,服务器集群106在节点子集故障的情况下维护状态信息。如上所述,经扩展的集群的每一节点都连接到逻辑上集群在一起的文件系统。为了在多个客户机访问同一资源时避免冲突,通过向一个或多个节点(例如,服务器106A、106B和/或106C)提供对资源采取机会锁(oplock)或租期的能力,服务器集群106可以执行分布式状态解析。在各实施例中,可通过使用RH机会锁来支持共享阅读器,这允许多个读取者在集群的多个节点上访问同一文件。在其他实施例中,服务器集群106还可支持写锁。如本文描述的,本领域技术人员将明白,经扩展的服务器集群提供在未经扩展的服务器集群中不可用的附加功能。虽然参考图I提供了附加功能的具体示例,但本领域技术人员将明白,这些是经扩展的服务器集群所提供的益处和功能的非限制性示例。图2是客户机在连接到集群环境时可以执行的方法200的实施例。例如,诸如客户机102 (图I)等客户机在连接到集群环境时可以使用方法200来确定要与哪一节点(例如,服务器106AU06B和/或106C)建立连接。流程始于操作202,在此,客户机从名称解析机制(如DNS服务器)接收地址列表。如参考图I讨论的,在各实施例中,集群环境中的每一节点都能够向该客户机提供类似功能。因而,客户机可成功执行所需操作或访问集群环境中的所需资源,而不管该客户机连接到哪一节点。流程继续至操作204,在此,客户机尝试连接到在操作202接收到的地址列表中的第一地址所标识的第一节点。在操作204,客户机可通过向第一地址所标识的节点发送初始连接请求来尝试连接到第一节点。然而,本领域技术人员将明白在操作203尝试与节点(例如,服务器)进行连接的任何方式。在各实施例中,客户机可等待预定时间段,如操作206所示,以待第一尝试成功。然而,因为集群环境中的任何节点都能够代表客户机来访问任何资源,所以在第一尝试失败或花了很长时间的情况下,客户机可向其他服务器集群发出尝试请求。尽管操作206描述了客户机等待预定时间段,但该时间也可以是由客户机动态地确定的。在另一实施例中,连接到服务器的第一尝试可以是成功的,然而,该节点可能不能访问集群环境的资源。例如,地址列表可包含不正确的地址或不再是该集群环境的一部分的节点的地址。在其他实施例中,错误可阻止节点访问集群环境资源。客户机可采用必要的逻辑来标识这样的情况。在这些情况下,客户机可将该成功的尝试当作是失败的,并继续 执行方法200。在第一尝试失败或在时间段期满之后,流程继续至操作208,在此,客户机从地址列表中随机选择地址的子集。在各实施例中,对子集地址的随机选择向该集群环境提供了负载平衡益处,该集群环境可具有单次尝试连接到它的各节点的多个客户机。如果每一客户机随机选择要连接到的节点的子集,则可在该集群环境中建立更好的连接平衡。然而,在其他实施例中,客户机可能不选择随机子集,而是按地址出现在列表上的次序来选择这些地址。在其他实施例中,并非在操作208选择地址列表的子集,客户机可选择列表中的所有地址。流程继续至操作210,在此,客户机尝试连接到所选子集中的地址所标识的一个或多个节点。在一个实施例中,在操作210,客户机可并行尝试连接到多个节点,从而加速连接过程。在各实施例中,在操作210,客户机可向不同节点发送一个或多个附加连接请求,然而如参考操作204所描述的,尝试连接的任何方式都可与本文描述的各实施例一起使用。流程继续至操作212,在此,客户机接收连接成功的指示。在各实施例中,该指示可以是客户机从一节点接收到的、指示该客户机能够连接到该节点的消息。在各实施例中,如果客户机在操作210作出了并行尝试,则在操作212,客户机可以决定连接到对该客户机成功响应的第一节点。在其他实施例中,客户机可以从集群环境中的不同节点接收到尝试成功的多个指示。在这样的实施例中,客户机可以选择连接到哪一节点。在其他实施例中,该指示可以提供与该节点有关的性能,如该节点的当前负载。客户机可以使用这一信息来确定与哪一节点建立连接。例如,客户机可以选择连接到具有较轻负载的节点、具有特定硬件配置的节点,等等。一旦客户机选择了节点,则流程继续至操作214,并且客户机连接到该节点。在客户机连接到该节点后,客户机建立与该节点的会话并能够访问集群环境中的资源。如参考图I描述的,一旦客户机建立了到一节点的连接,该客户机就尝试维持它与同一节点的连接。这降低了在客户机将连接从一个节点转移到另一节点时发生的状态信息的传输。在这样的实施例中,如果客户机从该节点断开连接,例如由于诸如网络故障或客户机崩溃等错误,则客户机在从该错误恢复之后将尝试重新连接到同一节点。
然而,客户机重新连接到同一节点并不总是可能的。例如,如果节点出现故障、如果客户机丢失与该节点的连接、或者如果该节点处于管理目的而不可用(例如,由于负载平衡需求、该节点打补丁,等等),则客户机可经由不同节点重新建立它与该集群环境的连接。图3是客户机在集群环境中的各节点之间转移连接时可以执行的方法300的实施例。流程始于操作302,在此,客户机确定需要与新节点的连接。例如,在由于网络或节点故障而丢失与节点的连接之后,客户机可以确定它不能重新连接到该集群环境中的同一节点。在另一实施例中,客户机可以从该节点接收性能信息。基于该性能信息,客户机可以决定将连接转移到能向该客户机提供更好服务的另一节点。例如,客户机可接收到指示该节点正经历沉重通信量的信息。在这种情况下,客户机可能不需要重新连接到另一节点,但可任选地出于性能原因而决定重新连接到另一节点。类似地,客户机可以在没有从该节点接收到性能信息的情况下自己确定这一信息,例如通过监视该节点执行一请求花了多长时间。
在另一实施例中,该节点可以要求客户机将其连接转移到该集群中的不同节点。例如,如果该节点要离线来打补丁或出于负载平衡目的,则该节点可要求客户机将其连接转移到不同节点。在这样的实施例中,该节点可以向客户机发送指示该客户机必须转移其连接的消息。执行这样的通信的各实施例在2011年3月29日提交的、题为“Providing aWitness Service (提供目击服务)”(美国专利申请号13/074,920)的共同受让共同待审的专利申请中描述,其整体通过引用结合于此。在确定需要在节点之间转移连接之后,流程继续至操作304。在操作304,客户机尝试连接到该集群环境中的不同节点。例如,客户机可以向该集群环境中的一个或多个节点发送连接请求。在各实施例中,客户机可通过执行参考方法200所描述的全部步骤或其步骤子集来连接到该集群环境中的第二节点。在另一实施例中,客户机可被该集群环境引导来连接到特定节点。在尝试成功之后,流程继续至操作306,并且客户机连接到该集群环境中的第二节点。然而,因为客户机具有一先前已建立的会话,所以该会话可被转移到该不同节点。在操作308,客户机向第二节点发送会话建立请求。在各实施例中,该会话建立请求可以是包含会话标识符的消息,该会话标识符标识客户机先前建立的连接。如将参考图5进一步讨论的,响应于接收到该会话建立请求,第二节点可以取得该先前建立的连接的所有权。尽管方法300将发送会话建立请求描述为分立步骤,但本领域技术人员将明白,客户机可以在操作304与连接到第二节点的请求一起发送会话建立请求或会话标识符。已经描述了客户机在连接到经扩展的集群环境时可以使用的方法,本公开内容现在将描述这样的环境中的一个或多个节点可以使用的功能。图4是由集群环境中的节点执行以维护和转移集群服务器环境中的持久句柄的方法400的实施例。例如,方法400可由作为集群服务器环境(例如,服务器集群106)的一部分的服务器执行,如服务器106A、106B以及106C。流程始于操作402,在此,服务器接受来自客户机的连接请求,从而在该节点和该客户机之间建立连接。该初始连接指示客户机不具有在该节点或该集群环境中的另一节点上的先前建立的连接。在各实施例中,在该节点没有从客户机接收到作为该客户机的连接请求的一部分的会话建立请求的情况下,或当在建立到客户机的连接之后不久没有接收到会话建立请求的情况下,则该节点可以确定它正与客户机建立连接。
流程继续至操作404,在此,该节点创建与客户机的会话。在操作404,该节点可以向该会话分配会话标识符。该会话标识符可以是跨该集群环境中的所有节点的全局唯一标识符(GUID)。在创建会话之后,该节点可以分配资源和/或代表客户机来对资源执行操作。在这样做时,可创建会话信息(如状态信息)。该节点可以存储该会话信息。除状态信息之夕卜,该节点可以存储一个或多个句柄。例如,如果客户机打开文件,则到该文件的句柄可被提供给客户机。该节点可以存储句柄连同(即作为补充)会话信息。流程继续至操作406,在此,该节点丢失它与客户机的连接。例如,客户机可能遭受错误(例如,崩溃或丢失网络连接)。预测到客户机可能重新连接,在操作408,服务器将维护该会话和/或信息。例如,该节点可将会话和/或状态信息写到本地存储器、集中式持久存储、或分布式状态存储中。如上所述,客户机将尝试维持与单个节点的连接。在各实施例中,在客户机从错误恢复之后,客户机将重新连接到该节点。在重新连接之后,例如通过从该客户机接收会话标识符,该节点可标识该客户机具有先前建立的状态。在这样的实施例中,所维护的会话状态允许客户机继续它的先前建立的会话。然而,在某些情况下,客户机可能不能够重新连接到该节点。相反,客户机可重新连接到该集群环境中的不同节点。在这种情况下,流程继续至操作410,在此,该节点接收来自该集群环境中的另一节点的转移会话信息的请求。在各实施例中,另一节点请求会话信息的所有权来为客户机重新建立会话,该客户机现在连接到该请求所有权的节点。对会话所有权的请求可包括执行方法400的节点可用来标识它拥有和/或维护的先前建立的会话的会话标识符。在接收到对会话所有权的请求后,流程继续至操作412,在此,该节点确保没有对与先前建立的会话相关联的资源执行的未完成的输入/输出(I/o)操作。在各实施例中,·如果存在未完成的I/o操作,则在继续至操作414之前该节点等待该操作完成。在其他实施例中,在操作410,该节点可取消对会话资源的待决I/O操作。该节点可等待和/或取消待决I/O操作,以维持资源完整性。在该节点确保所有I/O已完成(或被取消)之后,流程继续至操作414。在操作414,该节点使先前建立的会话无效。使会话无效可包括关闭作为该会话的一部分的任何打开句柄。在其他实施例中,使会话无效可包括释放在资源上的任何锁。在各实施例中,会话的无效还可包括参考图I描述的无效逻辑。此外,在各实施例中,可以执行单步无效,其中该节点使先前建立的会话的所有句柄和/或锁无效,以消除对该节点单独地使每一文件句柄无效的需求。在先前建立的会话被无效之后,流程继续至操作416,在此,该节点将会话的所有权转移到作出请求的节点。在各实施例中,会话的所有权的转移可包括转移与该会话相关的所有相关联的资源的所有权。可在操作416转移的示例资源是文件句柄;然而,在操作416,其他资源的所有权也可转移。在其他实施例中,转移与该会话相关的资源的所有权可包括将该资源从一个节点转移到另一个节点。为效率起见,在操作416,所有会话信息可按批转移,从而减少各节点之间所需的通信数量。图5是由集群环境中的节点执行以请求先前建立的会话的所有权的方法500的实施例。例如,方法400可由作为集群服务器环境(例如,服务器集群106)的一部分的服务器执行,如服务器106A、106B以及106C。流程开始于操作502,在此,该节点建立与客户机的连接。例如,在操作502,该节点可接收来自客户机的连接请求。该节点可接受该连接请求并连接到该客户机。流程继续至操作504,在此,该节点标识客户机先前建立的与该集群环境中的另一节点的会话。在各实施例中,该节点可以接收来自客户机的会话建立请求。该会话建立请求可以与连接请求一起接收或在连接到该客户机之后接收。在各实施例中,该会话建立请求包含标识先前建立的连接的会话标识符。流程继续至操作506,在此,该节点向该集群环境中的当前拥有该客户机的先前建立的会话的第二节点发送所有权请求。该所有权请求可包含使与该先前会话相关联的句柄无效并将会话信息转移到该节点的指令。在各实施例中,该所有权请求可包括在操作504接收到的会话建立请求和/或会话id。流程继续至操作508,在此,该节点接收先前建立的会话的会话和/或状态信息。在各实施例中。该会话和/或状态信息可以从该第二节点、从中央储存库、或从该集群环境
中的另一位置接收。在另一实施例中,并非在操作508接收会话和/或状态信息,在操作508,该节点可被准许访问驻留在集中式储存库中的会话和/或状态信息。流程随后继续至操作510,在此,该节点使用接收到的和/或所访问的会话或状态信息来重新建立客户机的会话并允许该客户机继续访问该集群环境中的资源。方法300-500仅是根据各实施例可执行的操作流程的一些示例。各实施例不限于上面参考图3-5提供的具体描述,而可包括附加的操作。而且,所示出的操作步骤可被组合到其他步骤中和/或被重新安排。而且,可使用比参考图3-5描述的方法更少或更多的步骤。图6示出可用于实现本文所描述的各实施例的通用计算机系统600。计算机系统600仅是计算环境的一个示例,而非旨在对计算机和网络架构的使用范围或功能提出任何限制。计算机系统600也不应被解释成对于在示例计算机系统600中所示出的任一组件或其组合有任何依赖或要求。在各实施例中,系统600可用作以上参考图I所描述的客户机和/或服务器。在其最基本配置中,系统600通常包括至少一个处理单元602和存储器604。取决于计算设备的确切配置和类型,存储器604可以是易失性的(诸如RAM)、非易失性的(诸如ROM、闪存等)或是其某种组合。该最基本配置在图6中由虚线606来示出。系统存储器608存储诸如连接到本文公开的经扩展的集群环境方法的指令之类的指令620和诸如可被存储在具有诸如存储608之类的存储的文件存储系统中的会话状态信息等数据622。本文所使用的术语计算机可读介质可包括计算机存储介质。计算机存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块、或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。系统存储器604、可移动存储和不可移动存储608都是计算机存储介质示例(例如,存储器存储)。计算机存储介质可包括,但不限于,RAM、ROM、电可擦除只读存储器(EEPR0M)、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD )或其他光存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或者可用于存储信息且可由计算设备600访问的任何其他介质。任何这样的计算机存储介质都可以是设备600的一部分。计算设备600还可以具有输入设备614,如键盘、鼠标、笔、声音输入设备、触摸输入设备等。还可包括诸如显示器、扬声器、打印机等输出设备616。上述设备是示例,并且可使用其他设备。本文所使用的术语计算机可读介质还可包括通信介质。通信媒介可由诸如载波或其他传输机制等已调制数据信号中的计算机可读指令、数据结构、程序模块、或其他数据来体现,并且包括任何信息传递介质。术语“已调制数据信号”可以描述以对该信号中的信息进行编码的方式设定或者改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接等有线介质,以及诸如声学、射频(RF)、红外线和其他无线介质等无线介质。可以通过片上系统(SOC)来实践本发明的各实施例,其中,可以将图6中示出的每个或许多组件集成到单个集成电路上。这样的SOC设备可包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元以及各种应用功能,所有这些都被集成到(或“烧录到”)芯片基板上作为单个集成电路。当通过SOC操作时,在此所述的相对于为资源提供联系访问的功能可以通过在单个集成电路(芯片上)集成有计算设备/系统600的其他组件的应用专用逻辑来操作。 本说明书通篇引述了“一个实施例”或“一实施例”,这意味着在至少一个实施例中包括特定描述的特征、结构或特性。因此,对这样短语的使用可指的是一个以上的实施例。而且,在一个或多个实施例中,可以用任何合适的方式组合所描述的特征、结构或特性。然而,本领域技术人员会认识到本实施例也可在没有一个或多个具体细节的情况下实施,或者采用其他方法、资源、材料等来实现。在其他情况中,仅为了避免模糊实施例的各方面,未详细示出和描述公知的结构、资源或操作。虽然示出和描述了示例实施例和应用,但是应该理解本实施例不限于上述精确配置和资源。可以对此处公开的方法和系统的排列、操作以及细节作出对本领域技术人员显而易见的各种修改、改变和变化,而不背离所要求保护的本实施例的范围。
权利要求
1.一种用于与集群服务器环境建立会话的方法,所述方法包括 在客户机处接收202标识所述集群服务器环境中的多个服务器的多个地址; 从所述客户机发送204连接到由所述多个地址的第一地址所标识的第一服务器的初始请求; 在连接到所述第一服务器之前,从所述客户机向所述多个地址的子集发送210—个或多个附加请求,其中所述多个地址的该子集标识所述集群服务器环境中的至少第二服务器; 从所述第二服务器接收212连接成功的指示;以及 连接214到所述第二服务器。
2.如权利要求I所述的方法,其特征在于,还包括随机选择所述多个地址的所述子集。
3.如权利要求I所述的方法,其特征在于,所述一个或多个附加请求是在发送了所述初始请求后的预定时间段之后发送的。
4.如权利要求I所述的方法,其特征在于,还包括 丢失302与所述第二服务器的连接; 向所述第二服务器发送304重新连接请求;以及 连接306到所述第二服务器。
5.如权利要求I所述的方法,其特征在于,还包括 从所述第二服务器接收与服务器性能有关的状态消息;以及 响应于接收到所述状态消息,从所述客户机向至少第三服务器发送新的连接请求,其中所述第三服务器是所述集群环境的一部分;以及连接308到所述第三服务器。
6.—种编码有计算机可执行指令的计算机存储介质,所述计算机可执行指令在由至少一个处理器执行时,执行一种用于与集群服务器环境建立会话的方法,所述方法包括 接收202标识所述集群服务器环境中的多个服务器的多个地址; 发送204连接到所述多个地址的第一地址所标识的第一服务器的初始请求; 在连接到所述第一服务器之前,向所述多个地址的子集发送210 —个或多个附加请求,其中所述多个地址的该子集标识所述集群服务器环境中的至少第二服务器; 从所述第二服务器接收212连接成功的指示;以及 连接214到所述第二服务器。
7.如权利要求6所述的计算机存储介质,其特征在于,所述方法还包括 从所述多个地址随机选择208所述多个地址的所述子集。
8.如权利要求6所述的计算机存储介质,其特征在于,所述方法还包括 从所述第二服务器接收302与服务器性能有关的状态消息;以及 响应于接收到所述状态消息,向至少第三服务器发送304新的连接请求,其中所述第三服务器是所述集群环境的一部分;以及连接306到所述第三服务器。
9.一种用于提供持久句柄的计算机系统,所述系统包括 集群106中的至少第一服务器106A和第二服务器106B ; 所述第一服务器被配置成接收502来自客户机的连接请求,其中所述连接请求包括标识先前建立的与所述第二服务器的会话的会话建立请求; 向所述第二服务器发送506对所述先前建立的会话的所有权请求;以及 所述第二服务器被配置成 接收410来自所述第一服务器的请求; 完成412对所述一组句柄的待决操作;以及 使所述一组句柄无效414。
10.如权利要求9所述的计算机系统,其特征在于,所述第二服务器还被配置成 将所述一组句柄转移到所述第一服务器,其中所述一组句柄是按批转移的。
全文摘要
本发明涉及SMB2扩展。公开了用于在经扩展的集群环境中操作的客户机和服务器的系统和方法。通过向客户机提供并行地尝试与多个服务器进行连接的能力,在将客户机连接到集群环境的过程中引入了效率。在该集群环境中操作的服务器也能够提供文件句柄和其他状态信息的持久存储。状态信息和持久句柄的所有权可在各服务器之间转移,从而向客户机提供了在维持对该集群环境中的资源的访问的情况下从一个服务器移到另一服务器的机会。
文档编号G06F17/30GK102946405SQ20121033104
公开日2013年2月27日 申请日期2012年9月7日 优先权日2011年9月9日
发明者D·M·克鲁斯, D·E·洛文格, T·E·乔利, J·T·品克顿, M·乔治, R·C·巴特帕蒂, M·商 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1