集群文件服务的制作方法

文档序号:6495463阅读:317来源:国知局
集群文件服务的制作方法
【专利摘要】基于集群的文件服务可在能访问共同的数据存储的两个或更多个独立设备的集群上操作。文件服务可具有带有该集群中的每一设备的名字空间定义,但可由操作该文件服务的任何设备修改。文件服务的每一实例可以标识并捕捉改变名字空间结构的命令并且使得这一改变被传播到集群的其他成员。如果集群中的各设备之一没有成功执行对名字空间结构的更新,则该设备可被离线。基于集群的文件服务可以准许在正在操作文件服务的同时向该集群添加设备或从中移除设备,并且可以提供高吞吐量和高可用性文件服务。
【专利说明】集群文件服务
【背景技术】
[0001]文件服务用于与各客户机设备共享文件。文件服务可按共享的形式向客户机设备呈现文件,它们是其中可储存文件的目录结构或目录结构的一部分。在一些情况下,可使得同一文件在不同的共享中可用。
[0002]许多文件服务可为不同的用户针对每一共享来定义不同的许可集。一些用户可具有读/写许可,而其他用户可具有只读许可,且又一些用户可不具有对该共享的访问权。一些文件系统可对该共享的各子集应用不同的许可,如为单个共享内的各个文件、目录、或者文件或目录组定义不同的许可。

【发明内容】

[0003]基于集群的文件服务可在能访问共同的数据存储的两个或更多个独立设备的集群上操作。文件服务可具有带有该集群中的每一设备的名字空间定义,但可由操作该文件服务的任何设备修改。文件服务的每一实例可以标识并捕捉变更名字空间结构的命令并且使得这一变更被传播到集群的其他成员。如果集群中的各设备之一没有成功执行对名字空间结构的更新,则该设备可被离线。基于集群的文件服务可以准许在操作文件服务的同时向该集群添加设备或从中移除设备,并且可以提供高吞吐量和高可用性文件服务。
[0004]提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的选择的概念。本
【发明内容】
并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
【专利附图】

【附图说明】
[0005]在附图中:
[0006]图1是示出具有集群文件服务的网络环境的实施例的示图。
[0007]图2是示出文件服务集群的概念拓扑结构的实施例的功能图。
[0008]图3是示出用于管理集群操作的方法的实施例的时间线流程图。
[0009]图4是示出用于操作文件服务的方法的实施例的流程图。
[0010]图5是示出用于更新从属节点的方法的实施例的流程图。
【具体实施方式】
[0011]基于集群的文件服务可以并行使用多个设备向多个客户机提供文件服务。文件服务提供者中的每一个可具有文件名字空间的相同副本,并且可以标识并捕捉对该名字空间的变更。那些变更可被传播到提供该相同文件服务的集群的各成员中的每一个。
[0012]集群的架构可以允许该集群内的不同的设备组提供若干不同的名字空间。例如,一个名字空间可由集群内的三个设备提供,而第二名字空间可由四个设备提供,这四个设备中的两个可以是提供该第一名字空间的组的成员。在这样的实施例中,集群中的一些设备可提供两个或更多个名字空间,而其他设备可只提供一个名字空间。[0013]集群可使用领导者和随从者安排来操作设备组。领导者被定义为集群内的管理应用的设备。在文件服务的情况下,领导者可以是开始和停止文件服务、向文件服务添加附加集群设备或从中移除附加集群设备、以及执行其他管理任务的设备。
[0014]在提供文件服务的设备组中,取决于情况,一些实施例可以使每一设备担当主设备或从属设备。在设备检测到对名字空间的变更时,如在用户添加或删除文件时,该设备可担当主设备来更新名字空间并且将该名字空间传送给其他设备(它们担当从属设备)。在文件系统的操作过程期间,各设备中的任一个可担当主设备或从属设备。其他实施例可具有用于更新集群内的其他节点的不同机制。
[0015]名字空间可以标识任何类型的共享资源(它通常是文件系统)。文件系统可包括目录或文件夹、文件、或其他对象。在一些实施例中,名字空间可以是指向目录结构内的起始点的指针。名字空间可包括各种许可设置或与该名字空间有关的其他信息。
[0016]在本说明书全文中,在对附图的整个描述中,相同的附图标记表示相同的元素。
[0017]当元素被称为被“相连接”或“相耦合”时,这些元素可被直接连接或耦合在一起,或者也可存在一个或多个中间元素。相反,当元素被称为被“直接连接”或“直接耦合”时,不存在中间元素。
[0018]本主题可被体现为设备、系统、方法、和/或计算机程序产品。因此,本主题的部分或全部可以用硬件和/或软件(包括固件、常驻软件、微码、状态机、门阵列等)来具体化。此外,本主题可以采用计算机可使用或计算机可读存储介质上的计算机程序产品的形式,介质中收录了供指令执行系统使用或结合指令执行系统一起使用的计算机可使用或计算机可读的程序代码。在本文档的上下文中,计算机可使用或计算机可读介质可以是可包含、储存、通信、传播、或传输程序以供指令执行系统、装置或设备使用或结合指令执行系统、装置或设备一起使用的任何介质。
[0019]计算机可使用或计算机可读介质可以是,例如,但不限于,电、磁、光、电磁、红外、或半导体系统、装置、设备或传播介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。
[0020]计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPR0M、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由指令执行系统访问的任何其他介质。注意,计算机可使用或计算机可读介质可以是其上打印有程序的纸张或另一合适的介质,因为程序可以经由例如对纸张或其他介质的光学扫描而电子地捕获,随后如有必要被编译、解释,或以其他合适的方式处理,并随后存储在计算机存储器中。
[0021]通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任意信息传送介质。术语“已调制数据信号”是指使得以在信号中编码信息的方式来设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述中任一组合也应包括在计算机可读介质的范围之内。[0022]当本主题在计算机可执行指令的一般上下文中具体化时,该实施例可包括由一个或多个系统、计算机、或其他设备执行的程序模块。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可在各个实施例中按需进行组合或分布。
[0023]图1是示出集群文件服务的实施例100的示图。实施例100是可被用来在具有高可用性的高度并行的容错系统中提供文件服务的示例架构。
[0024]图1的示图示出了系统的功能组件。在一些情况下,组件可以是硬件组件、软件组件、或者硬件和软件的组合。一些组件可以是应用级软件,而其他组件可以是操作系统级组件。在一些情况下,一个组件到另一组件的连接可以是紧密连接,其中两个或更多个组件在单个硬件平台上操作。在其他情况下,连接可通过跨长距离的网络连接来进行。每个实施例都可使用不同的硬件、软件、以及互连架构来实现所描述的功能。
[0025]实施例100是其中若干计算机可并行操作以提供各种服务(如文件服务)的计算机集群的示例。集群可具有执行相同应用或服务并可独立地处理对该应用或服务的请求的若干计算机。集群可以是一种可安排多个计算机来提供容错和/或高吞吐量的服务的机制。
[0026]在集群中,两个或更多个设备可以并行处理各操作。在许多集群环境中,各设备可被配置成使得这些设备之一可以出故障、被离线、或以其他方式停止操作,而该服务仍然可在另一设备上操作。这样的配置可以是防故障系统,其中该系统可以容许一个或多个设备的故障而仍然提供该服务。
[0027]此外,集群可以通过同时处理对该服务的多个请求来提供非常高的吞吐量。在这样的使用中,单个集群可以提供单个设备的许多倍带宽或吞吐量。
[0028]对于文件服务,提供文件服务的每一节点可以使用相同的名字空间定义。名字空间定义可以定义被提供的共享的内容。该共享可包括各种对象,如文件、目录、文件夹、或其他对象。
[0029]对文件服务的每一请求可落入两个类别:使得该共享变更的那些请求和不使得该共享变更的请求。使得该共享变更的请求可包括添加或删除文件、改变文件目录结构、或执行其他操作的请求。不变更该共享的请求可包括对文件的读取。在一些实施例中,对文件执行的写操作可被认为是对名字空间的变更,而其他实施例可将写操作当成不变更该名字空间。
[0030]在请求变更了名字空间时,该变更可被传播到提供该共享的所有节点。在变更被传播时,其他节点可在对任何其他请求进行响应之前暂停,直至该变更在该节点上完成。如果设备检测到变更未被正确实现,则该设备可将自己离线,直至该问题可被解决。
[0031]名字空间可按若干不同的方式在各节点之间共享。在一种方式中,设备的各操作系统中的每一个可具有其中存储了各配置设置或其他信息的注册表。所提供的该共享的名字空间可被存储在注册表中。注册表可以是操作系统或其他应用所使用的可被快速和容易地访问的数据库。在一些实施例中,注册表的一部分可跨若干节点共享。注册表的被共享部分可通过检测各节点之一上对注册表的变更并将该变更传播到共享注册表的该部分的其他节点来操作。
[0032]在另一种方式中,名字空间可存储在另一数据库中,如存储在存储系统(它可以是集群存储系统)中的主名字空间。在这样的系统中,每一节点可维护名字空间的本地副本。本地副本可位于注册表或其他数据库中。在这样的实施例中,担当主节点的节点可使得变更被传播到其他节点。
[0033]集群可由集群管理应用来管理,该管理应用可以在各集群节点之一上执行。集群管理应用可以对集群执行各种管理操作,如添加、移除、以及配置节点,以及在该集群上启动和管理各应用。对于文件服务应用,集群管理应用可标识文件服务可在其上执行的节点,指派领导者节点,以及使得领导者节点在所指派的节点上配置和操作文件服务。
[0034]设备102表示集群的一个节点。在许多实施例中,集群可具有许多节点,从仅仅几个到数十、数百、或更多节点。集群内的设备通常由硬件平台104和各软件组件106构成。设备102可以是服务器计算机,但一些实施例可以使用台式计算机、游戏控制台、以及甚至便携式设备,如膝上型计算机、移动电话、或其他设备。
[0035]硬件平台104可以包括处理器108、随机存取存储器110、以及非易失性存储112。处理器108可以是单个微处理器、多核处理器、或一组处理器。随机存取存储器110可以存储可执行代码以及处理器108能够直接访问的数据,而非易失性存储112可以以持久状态存储可执行代码和数据。
[0036]硬件平台104可包括构成用户界面114的各种外围设备。在一些情况下,用户界面外围设备可以是监视器、键盘、定点设备、或其他用户界面外围设备。一些实施例可不包括这样的用户界面外围设备。
[0037]硬件平台104还可包括网络接口 116。网络接口 116可以包括硬连线接口和无线接口,设备102可以通过这些接口与其他设备进行通信。
[0038]软件组件106可以包括各种应用可在其上执行的操作系统118。在一些实施例中,操作系统118可以是用于集群计算的专用操作系统。这样的操作系统可包括可被用来将各设备联合成集群的各种服务、数据库、或机制。在其他实施例中,操作系统可以是各集群应用用于在其上执行以使得设备可担当集群的一部分的通用操作系统。
[0039]集群管理应用123可在设备102上执行。集群管理应用123可只在集群的一个或若干个节点上操作。在集群管理应用123只在集群的一个节点上操作时,该节点可被认为是头节点或管理节点。
[0040]集群管理应用123可以执行用于该集群的各种管理和管控功能。这样的功能可包括配置该集群、向该集群添加节点或从中移除节点、以及在该集群上开始和停止各应用。
[0041]集群客户机应用120也可在设备102上执行。集群客户机应用120可以允许设备102加入集群并对来自集群管理应用的管理操作进行响应。在一些实施例中,集群管理应用123和集群客户机应用120可在同一设备上执行。其他实施例可不如此配置。
[0042]设备102可包括可对来自各客户机设备148的文件服务请求进行响应的文件服务122。文件服务122可使得共享对各客户机设备148可用,其中该共享可在物理上驻留在存储系统138上。
[0043]在一些实施例中,名字空间定义的集合125可驻留于设备102上。名字空间定义125可包括关于存储在共享中的文件的元数据。在一些实施例中,该元数据可包括目录结构和该目录结构中每一文件的元数据。名字空间定义125可能足以对一些文件服务请求进行响应,如对特定目录中的文件名的请求。在一些情况下,名字空间定义125可被用来对集群存储系统142进行调用以检索文件内容、向文件写入信息、或对该共享执行其他操作。
[0044]在一些实施例中,名字空间定义125可包括指向现有目录结构中共享的起始点的指针。在这样的实施例中,名字空间定义125可包括各种元数据,如许可设置、访问控制或该共享的其他元数据。
[0045]在一些实施例中,名字空间定义125可驻留在数据库中,该数据库可以是任何类型的数据存储机制,如关系数据库、文件、表、或其他机制。在一些实施例中,名字空间定义125可被存储在可作为由操作系统118使用的数据库的注册表119中。
[0046]除文件服务122之外,设备102可以执行各种其他应用和服务124。在许多实施例中,集群可以执行许多应用和服务,其中每一应用或服务应用了不同的资源集。
[0047]集群可由若干节点构成。设备102可以是这些节点之一,而集群节点128可以是附加节点。集群节点128可在类似于设备102的硬件平台104的硬件平台130上操作。集群节点128中的每一个可包括允许该节点在该集群内操作的集群客户机应用132连同文件服务134和其他服务136。集群节点128上未示出可由文件服务134用来处理文件服务请求的名字空间定义集合。
[0048]集群节点中的每一个可通过集群网络126彼此连接。在一些实施例中,集群网络可以是与客户机设备148在其中操作的网络146分开的局域网。在这样的实施例中,集群网络146可具有各集群节点在其中可彼此通信的专用高速网络。在其他实施例中,集群网络126可以是广域网、因特网、或其他网络。在这样的实施例中,集群网络126可以优化或可以不优化以供各集群节点彼此通信。
[0049]集群节点可与存储系统138通信,存储系统138可具有集群存储系统142可在其上操作的硬件平台140。存储系统138可以是提供可由集群节点中的每一个访问的存储的存储区域网络或其他系统。
[0050]在集群节点正在操作文件服务时,该共享可被存储在存储系统138中。操作该文件服务的每一节点可与存储系统138通信以检索与所提供的名字空间相关联的文件、目录、或其他对象。在这样的配置中,每一节点可访问同一文件,这与具有文件的多个副本形成对比。
[0051]集群可安排有负载平衡器144。负载平衡器144可将传入请求分发到执行特定文件服务的各节点中的任一个。负载平衡器可使用任何类型的负载平衡方案来操作。在一种负载平衡方案中,负载平衡器144可将请求依次分配给每一节点。这样的方案被称为循环方案。其他方案可分析每一节点的带宽或响应时间并使用这一数据作为准则来分配新请求。
[0052]在正常操作中,在集群上执行的文件服务可使得共享对各客户机设备148可用。客户机设备148可以是能访问共享的任何类型的计算机设备。集群可以提供冗余,其中一个节点可由于故障、维护、或其他原因而离线,且另一节点可继续操作。集群还可提供提高的吞吐量,因为许多节点可对请求进行并行服务。这样的使用可以提供比单个节点能独自执行的更高的吞吐量。
[0053]图2是示出集群文件服务的功能图的实施例200的示图。实施例200是可被用来跨集群提供多个文件服务的示例架构。
[0054]图2的图示出了系统的功能组件。在一些情况下,组件可以是硬件组件、软件组件、或者硬件和软件的组合。一些组件可以是应用级软件,而其他组件可以是操作系统级组件。在一些情况下,一个组件到另一组件的连接可以是紧密连接,其中两个或更多个组件在单个硬件平台上操作。在其他情况下,连接可通过跨长距离的网络连接来进行。每个实施例都可使用不同的硬件、软件、以及互连架构来实现所描述的功能。
[0055]实施例200仅示出了三个不同的文件服务可在其上操作的集群的一个示例。文件服务中的每一个可具有不同的资源分配,因为它们可在不同数量的节点上操作。此外,每一节点可操作一个、两个、三个、或更多个不同的文件服务。
[0056]集群202被示为具有五个计算节点204、206、208、210、以及212。这些计算节点中的每一个可以是执行各应用的处理中的许多处理的计算机。集群中可以有其他节点,如管理节点、存储节点、负载平衡节点、代理节点、或附加计算节点。
[0057]示出了三个不同的文件服务。文件服务214可在节点204、206以及208上操作。文件服务216可在节点206、208、210以及212上操作,而文件服务218可在节点210和212
上操作。
[0058]每一文件服务可担当文件服务的在它们的相应节点上的分开实例。例如,节点208可操作文件服务的两个实例。在这样的实施例中,每一实例可提供不同的共享并且每一实例可在不同的一组节点上操作。
[0059]在一些实施例中,单个节点可操作能提供两个或更多个共享的单个实例。在这样的实施例中,节点208例如可执行文件服务的单个实例,它可对与文件服务216及文件服务218相关联的共孚的请求进行响应。
[0060]在实施例200的示例中,一些节点可与其他节点不同地加载。例如,节点204可只具有一个文件服务214,而节点206可具有两个文件服务214和216。这样的情况可在文件服务或其他应用被最初配置时发生。在配置期间,满足预期要求的节点数量可被确定并且这些节点可被选择。可使用各种准则来选择节点,包括基于最低使用、随机分配、或其他选择准则来选择节点。
[0061]在一些实施例中,节点可以是不相同的。一些节点可具有比其他节点更多的处理能力、网络带宽、或其他能力,并且因此可支持文件服务的更多实例。
[0062]节点的非相等加载可作为在服务执行之后添加或移除节点的结果而发生。一些实施例可以标识服务的加载增加,并且可能够向该服务添加新节点以对附加请求进行响应。类似地,一些实施例可标识服务的加载已经降低并且可能够从服务移除一些节点。在若干不同的服务添加或移除节点之后,非平衡或非相等的情况可发生,如实施例200中所示的情况。
[0063]各节点中的每一个可连接到集群存储220。集群存储220可在共享中包含由提供该共享的文件服务的任何节点访问的文件、目录、以及其他项目。在许多实施例中,集群存储220可以是可具有用于对提供文件服务的各节点进行响应的容量、速度、或其他性能参数的存储区域网络或其他存储系统。
[0064]在一些实施例中,一些节点可直接连接到集群存储220,而其他节点只可间接地连接。在这样的实施例中,间接连接的节点可通过使用集群网络与直接连接的节点进行通信来访问集群存储220。
[0065]一些集群可具有负载平衡器222。负载平衡器222可由将新文件系统请求分配给各节点。负载平衡器222可具有在各计算节点之间分布处理负载的各种算法。一种简单算法是可将请求依次分配给每一节点的循环算法。一种更精细的算法可检查各节点以确定哪一节点的负载最小,并且该算法可将新请求分配给该节点。
[0066]负载平衡器222可包括客户机设备228可用来通过网络226对集群202进行寻址的共同集群名224。共同集群名224可以是可表示整个集群的单个网络名。在客户机设备228生成文件服务请求时,客户机设备228可将该请求传送到共同集群名224。从客户机设备的观点看,文件服务可由单个设备提供,即使该文件服务实际上可由集群内的多个设备中的任何一个来提供。在这样的实施例中,集群202在网络226上可看起来是单个设备。
[0067]集群202可包括可在集群上执行各种管理任务的集群管理应用230。集群管理应用230可在集群的各节点中的一个或多个节点上操作。在一些实施例中,专用管理节点可以执行集群管理应用230。
[0068]计算节点202、204、206、208以及210中的每一个可以访问可包含各文件服务中的
每一个的名字空间的集群数据库232。集群数据库232可以按若干不同的方式来实现。
[0069]在一种方式中,集群数据库232可包含名字空间定义的主副本。主副本可同步或复制到提供对应的文件服务的节点中的每一个。
[0070]在另一方式中,集群数据库232同样可包含名字空间定义,且提供文件服务的每一节点可链接到集群数据库。在这样的实施例中,节点可具有使得该节点内的本地调用被定向到集群数据库的重定向或其他链接。这样的实施例可不在每一节点处维护集群数据库的本地副本。
[0071]图3是示出用于管理集群操作的方法的实施例300的时间线图示。实施例300是可由集群管理器302、领导者节点304以及随从者节点306执行的方法的简化示例。集群管理器302的操作被示出在左手栏,而领导者节点304的操作被示出在中间栏,且随从者节点306的操作被示出在右手栏。
[0072]其他实施例可使用不同的排序、附加或更少的步骤、以及不同的命名或术语来完成类似功能。在一些实施例中,各个操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式示出一些操作原理而选择的。
[0073]实施例300示出了使用‘领导者’和‘随从者’模型的实施例。领导者可以是实现服务的第一节点并可管理附加节点(称为随从者节点)。集群管理器可与领导者进行通信以开始、停止服务以及执行服务的其他管理活动。领导者可与各随从者通信以执行那些管理活动。
[0074]在框308,可标识领导者节点。领导者节点可以是与集群中的其他节点相同的配置,但可管理特定服务。
[0075]在框310,可从集群存储标识要共享的文件结构,并且在框312可定义对应的名字空间。在框314,名字空间可被存储在集群数据库中。
[0076]在框316,可确定可执行该文件服务的节点的数量,并且在框318,可将文件服务配置传送给领导者节点。
[0077]在框320,领导者节点304可接收该配置并开始配置过程。
[0078]在框322,领导者节点304可标识名字空间并且可在框324从集群数据库检索该名字空间。在框326,可使用该名字空间来开始文件服务。此时,领导者节点304可以是提供该文件服务的唯一节点。
[0079]在框328,可处理每一随从者节点。在许多实施例中,可存在多个随从者节点,它们中的每一个可以使用该名字空间提供该文件服务。在框330,领导者节点304可将配置命令传送给随从者节点306,并且可在框332使用随从者节点信息更新负载平衡器。
[0080]在框334,随从者节点306可以接收配置命令。在框336,随从者节点306可标识名字空间,在框338从集群数据库检索名字空间定义,并在框340可使用该名字空间开始该文件服务。
[0081]框328到340的处理可在每次新随从者节点被添加到该文件服务时执行。
[0082]在框342,节点可被标识为禁用或被从文件服务移除。在框344可更新负载平衡器,以使得负载平衡器可停止向即将禁用的节点发送新请求。在框346,领导者节点304可将禁用通知发送给随从者节点306,在框348随从者节点306可接收该通知并在框350停止该文件服务。
[0083]实施例300示出了一种通过其可开始文件服务并随后扩展到其他随从者节点或通过移除随从者节点而收缩的方法。
[0084]图4是示出用于操作文件服务的方法的实施例400的流程图。实施例400是可由执行文件服务的任何节点来执行的方法的简化示例,并且是可在对名字空间作出变更时执行的操作的示例。
[0085]其他实施例可使用不同的排序、附加或更少的步骤、以及不同的命名或术语来完成类似功能。在一些实施例中,各个操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式示出一些操作原理而选择的。
[0086]实施例400示出了可在对名字空间作出变更时执行的方法的示例。实施例400示出了通过其节点检测对名字空间作出了变更,随后将该变更传播到其他节点的方法。
[0087]其他实施例可以在文件服务内使用主-从操作实现这样的更新。在这样的实施例中,执行文件服务的任何节点可以在该节点检测到请求可造成对名字空间的变更时或集群数据库中的数据将被修改的某一其他条件时变成主节点。一致的集群数据库被所有节点使用,使得每一文件服务请求是一致的,而不管哪一节点对该请求进行服务。
[0088]主-从实施例可通过检测一请求可变更集群数据库中的信息来操作,并且该节点可将自己设置成主节点并使得其他节点担当从属节点,直至变更被传播到每一节点。
[0089]在这样的实施例中,操作文件服务的任何节点可在任何时刻宣称自己是主节点。在这样的实施例中,每一节点可能够处理任何类型的请求。这样的实施例在任何给定时刻只准许一个节点成为主节点。
[0090]在框402,文件服务可开始操作。
[0091]在框404,可接收到文件服务请求。在框406,如果正在处理更新,则在框408该节点可在继续之前等待直至更新结束。框408的循环可确保不会使用过期或不一致的数据库来处理请求。可在本说明书稍后呈现的实施例500中示出在更新期间执行的过程的示例。
[0092]在框406,如果没有更新正在被处理,并且在框410,该请求没有造成对名字空间的变更,则在框412可处理该文件服务请求。
[0093]在框412,如果请求确实造成了变更,则在框416可开始更新过程。在框418可对名字空间作出变更,并且在框420可将该变更传播到其他节点。该变更可被本地地存储在本地存储或高速缓存中。
[0094]图5是示出用于更新从属设备的方法的实施例500的流程图。实施例500是可由在主设备更新期间担当从属设备的任何节点执行的方法的简化示例。在许多实施例中,在文件服务正在执行的全部时间期间任何设备可担当从属或主设备。
[0095]其他实施例可使用不同的排序、附加或更少的步骤、以及不同的命名或术语来完成类似功能。在一些实施例中,各个操作或操作集合可与其他操作以同步或异步方式并行地执行。此处所选的步骤是为了以简化的形式示出一些操作原理而选择的。
[0096]实施例500是在主设备正在造成对名字空间的变更被传播时可由从属设备执行的操作的简化示例。
[0097]在框502,可接收更新通知。在框504,可停止处理新文件服务请求。
[0098]在框506,可作出更新名字空间定义或其他信息的尝试。在框508,如果更新成功,则在框514从属节点可恢复处理请求。
[0099]在框508,如果更新不成功,则在框510可使节点离线并且在框512可向集群管理器或领导者节点传送警报。
[0100]实施例500的操作示出了在从属节点尝试更新并遇到故障时,该节点可使自己离线。在该节点离线时,可采取校正动作而同时使其余节点继续操作。
[0101]对本发明的上述描述是出于图示和描述的目的而呈现的。它不旨在穷举本主题或将本主题限于所公开的精确形式,并且鉴于上述教导其他修改和变型都是可能的。选择并描述实施例来最好地解释本发明的原理及其实践应用,由此使本领域的其他技术人员能够在各种实施例和各种适于所构想的特定用途的修改中最好地利用本发明。所附权利要求书旨在被解释为包括除受现有技术所限的范围以外的其他替换实施例。
【权利要求】
1.一种系统,包括: 多个设备,所述设备中的每一个具有能在所述多个设备中的每一个上操作的文件服务; 包括文件的数据存储,所述数据存储能由所述多个设备中的每一个访问; 将所述文件的组织定义成一共享的名字空间定义,所述名字空间定义存储在能由所述多个设备中的每一个访问的集群数据库中,所述共享变成能由客户机设备访问; 所述文件服务标识对所述名字空间定义的变更并在所述集群数据库上将所述名字空间定义更新成经更新的名字空间定义,所述文件服务还更新所述名字空间定义的本地高速缓存版本。
2.如权利要求1所述的系统,其特征在于,还包括: 负载平衡器,所述负载平衡器接收来自所述客户机设备的请求并且对于所述请求中的每一个确定所述多个设备之一来处理请求。
3.如权利要求1所述的系统,其特征在于,还包括: 在所述多个设备中的第一设备上执行的领导者应用,所述领导者应用标识新设备并将所述新设备添加到所述多个设备中。
4.如权利要求3所述的系统,其特征在于,所述领导者应用还标识第一设备并且将所述第一设备从所述多个设备中移除。
5.如权利要求1所述的系统,其特征在于,还包括: 作为所述多个设备的子集的第二多个设备;以及 将所述文件的至少一个子集的第二组织定义成第二共享的第二名字空间定义,所述第二名字空间定义存储在能由所述第二多个设备中的每一个访问的集群数据库中,所述第二共享变成能由客户机设备访问。
6.如权利要求5所述的系统,其特征在于,所述第二多个设备与所述多个设备相同。
7.如权利要求1所述的系统,其特征在于,所述文件服务还: 在尝试为第一设备更新所述名字空间定义的本地高速缓存版本时检测到故障并对所述第一设备禁止所述文件服务。
8.如权利要求7所述的系统,其特征在于,所述文件服务还: 重试更新所述名字空间定义的本地高速缓存版本并在所述更新成功时将所述第一设备添加到所述多个设备。
9.一种方法,包括: 对于多个文件服务器设备中的每一个,安装并执行文件服务并且将所述文件服务连接到包括文件的文件存储; 定义名字空间定义,所述名字空间定义对所述文件中的至少一些文件的共享进行定义; 将所述名字空间定义存储在集群数据库中,所述集群数据库能由所述多个文件服务器设备中的每一个访问; 在作为所述多个文件服务器设备之一的第一文件服务器设备上开始所述文件服务,所述文件服务使用所述名字空间定义; 所述文件服务标识对所述名字空间定义的变更并在所述集群数据库中更新所述名字空间定义; 使用所述名字空间定义起动第二文件服务器设备;以及 由所述第一文件服务器和所述第二文件服务器两者并行地对文件请求进行服务。
10.如权利要求9所述的方法,还包括: 将所述名字空间定义复制到所述第一文件服务器设备上的第一本地高速缓存和所述第二文件服务器设备上的第二本地高速缓存。
11.如权利要求10所述的方法,其特征在于,还包括: 所述第一文件服务器设备检测对所述名字空间的第一变更,用所述第一变更来更新所述第一本地高速缓存,以及用所述第一变更来更新所述集群数据库; 所述第二文件服务器设备用所述第一变更来更新所述第二本地高速缓存。
12.如权利要求11所述的方法,其特征在于,还包括: 所述第二文件服务器设备检测对所述名字空间的第二变更,用所述第二变更来更新所述第二本地高速缓存,以及用所述第二变更来更新所述集群数据库; 所述第一文件服务器设备用所述第二变更来更新所述第一本地高速缓存。
13.如权利要求12所述的方法,其特征在于,还包括: 在所述第一文件服务器设备用所述第二变更来更新所述第一本地高速缓存时检测到问题并禁止所述第一文件服务器对所述文件请求进行服务。
14.如权利要求13所述的方法,其特征在于,还包括: 使用所述名字空间定义起动第三文件服务器设备;以及 由所述第一文件服务器、所述第二文件服务器以及所述第三文件服务器并行地对文件请求进行服务。
15.如权利要求14所述的方法,其特征在于,还包括: 禁止所述第二文件服务器对所述文件请求进行服务并且并行地操作所述第一文件服务器和所述第三文件服务器来对所述文件请求进行服务。
【文档编号】G06F17/40GK103608798SQ201280027196
【公开日】2014年2月26日 申请日期:2012年5月29日 优先权日:2011年6月4日
【发明者】V·库兹耐特索夫, A·达马托, A·沃维克, V·彼得, H·阿洛伊修斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1