专利名称:在群集文件系统中的文件系统安装的制作方法
技术领域:
本发明一般涉及分布式文件系统,更具体来说,涉及在发生通信 故障之后快速而有效地防止群集文件系统中的节点解除自身防守而 安装文件系统。
背景技术:
通信技术的进步已经允许许多机器聚合成具有实际上无限制的 处理能力和存储容量的计算群集,其可以用来解决比单个机器能够解 决的问题大得多的问题。由于群集由独立而冗余的计算机构成,因此, 它们具有容错的潜力。这使得它们适合于其他类型问题,在这些类型 的问题中可靠性是最主要的。结果,在过去几年,人们对于群集技术 有巨大的兴趣。
现有技术中发现的群集文件系统包括IBM General Parallel File System (GPFS)TM。 GPFS是可用于RS/6000 SPTM并行巨型计 算机以及Linux 群集上的群集计算机的并行、共享磁盘文件系统, 提供与在单个机器上运行的通用POSIX文件系统的行为尽可能相 近的行为(IBM、 GPFS、 RS/600和SP是IBM />司在美国,其他 国家或两者的商标。Linux是Linus Torvalds在美国,其他国家或 两者的商标)。
群集的一个缺点是,程序必须分割,以在多台机器上运行。这些 被分割的程序难以协作或共享资源。也许最重要的 一 个资源是文件系 统。在没有群集文件系统的情况下,某些群集文件系统允许客户端节 点直接访问元数据,如与文件数据(分布式元数据)并排存储在数据 服务器上的目录和文件属性,并使用分布式锁定协议使更新与这些元 数据同步。诸如SAN-FS、 Lustre和P-NFS之类的其他系统,使用一个或多个专用的元数据服务器节点来处理元数据。群集文件系统与传统文件服务器相比的优点是通过将数据分布在许多数据服务器上,可以提供更高的聚合数据吞吐量。
当在群集上运行时,传统的超级计算应用需要从跨群集共享的文
件内的多个节点进行并行存取。其他应用,包括可扩展的文件和Web服务器和大型数字图书馆,其特征通常是文件间的并行存取。在后一类应用程序中,单个文件中的数据不一定被并行地访问。但是,由于文件驻留在共同的目录中,并在相同的磁盘上分配空间,文件系统数据结构(元数据)仍被并行地访问。在大型计算系统中,甚至诸如添加磁盘或从文件系统中删除磁盘或跨磁盘重新平衡文件之类的管理动作,也会涉及大量的工作。
群集文件系统的磁盘可以跨构成群集的某些或全部节点分布。许多磁盘驱动系统都依赖于诸如小型计算机系统接口 (SCSI)总线之类的标准化的总线,来将主计算机连接到控制器,并连接控制器和磁盘驱动器。SCSI是已经变得越来越普及地用于将计算机及其他I/O设备互连在一起的通信协议标准。为此,SCSI在逻辑上是分层的。这种分层允许软件接口保持相对不变,同时又能接纳基于串行互连,如Fibre Channel和串行存储体系结构(SSA)的新的lfr釅直蓬像案。在ANSI X3.131-1986中描述了 SCSI (SCSI-1)的第一个版本。随着驱动器速度的加快和容量的增大,SCSI标准已经经过了许多次修改。设计了 SCSI-3规范,以进一步改善功能和接纳高速串行传输接口。
当检测到节点故障时,人们不能确信该节点是不是在物理上损坏了,或者是不是通信网络发生故障,使得该节点看起来像发生故障,而事实上节点非常可能仍是有效的。因此,文件系统日志恢复必须延迟足够长的时间,以确保在此时间点之后发生故障的节点将不能执行任何I/O,直到可以肯定地确定发生故障的节点的状态。随着系统的复杂性的增大,越来越不希望在磁盘驱动器级别或者在控制器级别发生中断故障。结果,系统变得更加可靠。尽管如此,万一磁盘驱动系统发生故障或离线,会对用户造成更大的不方便;尽管问题可以相对来说快速地得到校正。
当在非并行模式下操作时,高可用性群集多处理可以使用SCSI的Reserve/Release命令来控制对磁盘存储设备的访问。在美国专利No. 6,954,881中描述了使用SCSI画3 Persistent Reserve命令通过多路径对逻辑巻的共享的非并行访问,该专利以引用的方式并入本文中。高可用性群集多处理提供了由于硬件或软件故障而将对磁盘存储设备的访问的故障转移到另 一 个节点的方式。
Persistent Reserve是引用一组SCSI - 3标准命令和命令选项的技术,它们给SCSI启动程序提供对于指定的目标设备来建立、抢先、查询,和复位预留策略的能力。由Persistent Reserve命令所提供的功能是Reserve/Release命令的超集。Persistent Reserve不足以提供在大型文件系统中常常需要的数据完整性和快速恢复。
所需要的是在发生通信故障之后快速而有效地防止节点解除自身防守而安装文件系统的方法。
发明内容
在所附的权利要求中对本发明进行了定义,现在应该参考所附的权利要求。该方法的优选实施例在发生故障之后防止节点解除自身防守而安装文件系统。选择一个群集管理器节点来管理节点群集的磁盘I/O。在群集中的一个有效节点安装文件系统之前,该节点必须首先向群集管理器节点发送一个远程过程调用(RPC),请求验证群集管理器仍将发出请求的节点视为群集内的有效节点。发出请求的节点在采取行动之前一直等待,直到它从群集管理器收到适当的令牌。在群集管理器从发出请求的节点接收到RPC之后,但是在它以适当的令牌作出响应之前,群集管理器向法定节点发送RPC。群集管理器请求验证法定节点是否仍认为该群集管理器是该特定文件系统的管理器节点。所有法定节点都将适当地作出响应。如果,基于从被查询的法定节点接收到的响应,判断它们将该群集管理器视为该文件系统的当
8前群集管理器节点,那么该群集管理器回复发出请求的节点的有效状
态验证RPC。 一旦发出请求的节点从群集管理器接收到群集管理器将发出请求的节点视为有效节点(不是发生故障的节点)的响应,那么发出请求的节点解除自身防守并安装文件系统。另一方面,如果群集管理器没有从法定节点接收到应答,那么群集管理器认为,它已经由于某种原因失去了与法定节点的通信或者其作为群集管理器的职责已经由于某种原因而降级。在这种情况下,群集管理器作出它不是群集管理器节点的应答,发出请求的节点将向新选择的群集管理器重发RPC (如果可以选择一个新的群集管理器的话)。群集管理器节点进入预定状态,等待开始/结束的恢复操作,或表明已经发生故障。如此,快速而有效地阻止被认由于软件或者硬件故障而发生故障的节点安装文件系统,如此,防止在该故障之后损坏数据。
下面将结合某些所显示的实施例只作为示例描述本发明。应该理解,在不偏离本发明的精神或范围的情况下,所属领域的技术人员可以进行各种变化和修改。
附图被引入并且附图与下面的详细描述一起,构成了说明书的一部分,用于进一步显示各个实施例,并说明根据本发明的各种原理和优点,其中在各个视图中,类似的附图标记表示相同的或功能上类似的元件。
图1示出了本发明的新颖的特征可以应用到其中的群集文件系统的共享磁盘体系结构;以及
图2是示出了本发明的一个实施例的流程图。
具体实施例方式
所提供的是建立一个新颖的协议的方法,该协议用于确保有效节点构成的群集文件系统中的发生故障的节点在发生使该节点与群集中的一个或多个节点失去通信的故障之后不安装文件系统。快速而有效地防止发生故障的节点解除自身防守而安装文件系统。
本领域技术人员应该轻松地熟悉并行文件系统中固有的概念,以
及与文件/数据共享背景中的并行性关联的那些概念。此外,本领域技
术人员还应该精通计算机编程领域的技术,因为它涉及群集文件系统
环境中的节点、令牌和锁定等等。
对于这些目的,机器可读介质是一种产品,如通常在本领域中找
到的软盘、大容量只读存储器、以光学方式可读取的压缩光盘或
CD-ROM或DVD、磁带、诸如数字或模拟通信链路之类的传输类型的介质等等。
为了更好地理解所描述的本发明的实施例的描述,提供了这里所使用的某些术语的简要概述。
文件是包括可以被计算机应用程序访问的 一 串比特的带名称的数据对象。文件具有某些属性,如长度、修改时间,以及最后一次访问的时间,这里仅举几个例子。
元数据被定义为由文件系统软件所创建的控制结构,以描述文件的结构以及包含文件系统的磁盘的用途。适用于这种类型的文件系统的元数据的特定类型包括信息点(inode)、目录、分配图以及日志。信息点包含文件的属性,以及一 系列指向磁盘的包含构成此文件的数据的区域的指针。信息点可以通过间接块来补充,如果文件比较大的话,间接块用额外的指针补充信息点。目录是将名称与一组由信息点表示的数据关联的控制结构。分配图是表明磁盘的特定区域或诸如信息点之类的其他控制结构是否正在使用中或可用的控制结构。这允许软件向新文件有效地分配可用的块和信息点。日志代表用于在发生故障的情况下使其他类型元数据保持同步的记录。它包含描述对多个结构的相关的更新的单个记录。
文件结构是磁盘上的数据对象的组织。除文件数据其本身之外,文件结构通常还包含元数据将文件名映射到对应的文件的目录,包含有关文件的信息的文件元数据,以及文件数据在磁盘上的位置(即,哪些磁盘块存放了文件数据)。这包括记录了哪些磁盘块当前正被用
10来存储元数据和文件数据的分配图,以及包含有关文件结构的总体信 息(例如,目录的位置、分配图及其他元数据结构)的超级块。
文件系统是允许其他应用程序在诸如磁盘驱动器之类的介质上 存储和检索数据的计算机程序。软件组件管理定义的一组磁盘,该组
磁盘以由与文件数据相关的一组Xopen和POSIX标准规定的方式 提供对数据的访问。术语"文件系统"还描述了特定一组磁盘内包含的 数据集和元数据。为了简便起见,这里的连续的讨论将使用术语"磁 盘",但是,该概念适用于任何类似的块结构的存储介质。文件系统 允许应用程序创建文件并为它们命名,向文件中存储或写入数据,从 文件中读取数据,删除文件,以及对文件执行其他操作。
共享磁盘文件系统是其中驻留在一个或多个磁盘上的文件结构 由在分开的计算机上运行的多个文件系统访问的一种文件系统。所有 计算机都是对等的,因为任何计算机都可以执行管理数据所需的任何 角色。可以根据需要将作为节点的特定角色分配给特定计算机。共享 磁盘连接是利用一个协议将磁盘连接到多台计算机的方法,使磁盘看 起来像本地连接到每一个文件系统的方法。针对每一台计算机的确切 的连接协议不重要,但是包括各种形式网络连接的磁盘、交换的磁 盘连接,或存储转发连接。关键问题是,它对文件系统来说看起来像 本地,并且看起来对文件系统的所有实例都是相同的。
节点的群集,在其上面运行了使用该群集的文件系统和应用程 序,通过交换结构连接到磁盘或磁盘子系统,其中,群集中的节点可 以访问所有磁盘。文件系统代码管理由应用程序请求的读取和写入。 此管理使用应用程序请求和元数据来在文件系统内创建访问数据。此 功能是成批的处理,常常在群集中的所有计算机上都相同。
群集文件系统一般包括一组客户端节点、数据服务器以及一个或 多个元数据服务器。客户端节点通过块存储协议(例如,SCSI)、对 象存储协议(例如,T10 OSD)或文件存取协议(例如,P-NFS), 通过SAN或其他通信网络(例如,以太网或InfiniBand),访问存 储在数据服务器上的数据。 一般而言,群集系统承担常规的块I/O接口,在磁盘上没有特定智能。这里假设,计算机(或节点)没有共享 存储器,尽管它们可以并在许多可能的实现方式中将具有本地存储器 和至少某个共享的存储器,它们以某种方法,如总线或交换网络或某 种其他通信网络,连接到文件结构驻留在其上面的磁盘。假设,节 点通过类似的手段相互进行通信。
在群集文件系统中,大文件通常被分为相等大小的块,连续的块 通常以循环的方式被放置在不同磁盘中。为最小化搜索开销,块大小
比较大。比较大的块允许从每一个磁盘中在单一的I/O中检索大量
的数据。小文件和大文件的结尾可以存储在被称为子块的较小的单元
中,子块可以是完整的块的大小的1/32那么小,或更'J、一些。
请参看图1,该图显示了在其上可以应用本发明的群集文件系统 的共享磁盘体系结构10。图1的群集文件系统一般包括在其上面运 行了应用程序的总起来说12个计算机(节点)的群集。这些节点通 过交换结构14与多个磁盘或磁盘子系统,总起来说16个,进行通 信。群集中的所有节点通常对所有磁盘具有相等的访问权限。
通常跨文件系统中的所有磁盘将文件分条。跨多个磁盘将数据分 条是在不同的磁盘上存储连续的数据块(例如, 一个文件的)的技术。 在分条时,文件系统根据磁盘编号O,...,N-l的某种循环排列,将文件 的连续的块写入到不同的磁盘上。除平衡磁盘上的负载之外,分条 实现了磁盘子系统所能支持的完全吞吐量。
将文件系统节点连接到磁盘的交换结构可以包括存储区域网络 (SAN),(例如,光纤信道或iSCSI)。作为替代,各个磁盘可以连 接到允许通过在通用通信网络上运行的软件层从文件系统节点进行 访问的某些数量的I/O服务器节点。
为在从单一线程的应用程序读取比较大的文件时利用磁盘并行 性,数据常常被预取到緩冲池中。预取是在文件系统中用于缩短I/O 延迟的本领域的惯用技术。这是通过在由应用程序请求数据之前读取 按顺序访问的文件的块来实现的。并行地向所需数量的磁盘发出I/O 请求,以实现交换结构所能支持的带宽。类似地,不再被访问的脏数
12据緩冲区并行地被写入到磁盘中。此方法允许以基础的磁盘子系统和 交换结构支持的聚合数据速度从单一文件读取数据/向单一文件写入 数据。
图1的共享磁盘实现方式提供了用于将数据从磁盘移动到正在 使用的应用程序/从正在使用的应用程序移动到磁盘的最短的可用路 径。在路径中没有用于数据或者元数据的文件系统服务器。可以使用 任何可用的路径来避免瓶颈或单一故障点。
为了更好地理解本发明,这里提供了并行文件系统的相关的方面 的一般描述。应该理解,这是为给不熟悉的读者提供本发明涉及的主 题的基本理解。本领域的技术人员将理解简洁性,而同时认识到,要
更加全面的理解本主题,需要更加全面的学习。授予Schmuck等 人的一系列专利描述了共享并行磁盘文件系统的各个方面,包括编 号为5,893,086、 5,940,838、 5,950,199、 5,963,963、 5,974,424、 5,987,477、 5,999,976、 6,021,508、 6,023,706、 6,032,216、 7,120,650和7,216,135
的美国专利。
文件系统一般包括带有单个文件名条目的多个目录。对于要检索 的或创建的文件,如果文件名已经存在,或者如果还不存在的话向目 录块中添加文件名,都一定能在目录中查找到文件名。比较大的文件 系统可以具有非常大的目录,包含数百万单个文件,每一个单个文件 都具有自己的文件名。为了支持在非常大的目录中进行有效的文件名 查找,常常使用可扩展的散列来组织一个目录内的多个目录条目。可 扩展的散列与要求从开始就知道最大数量的散列存储桶的标准散列 技术相比先进一些。可扩展的散列通过使用来自散列函数的值的可变 数量的比特,解决了此问题。
对于占用一个以上的磁盘块的目录,可以通过向文件名应用散列 函数并使用散列值的n个低阶比特作为块号,来查找包含特定名称 的目录条目的块,其中,n取决于目录的大小。随着目录的增长,可 扩展的散列一次添加一个新目录块。当创建操作在新的文件名的散列 值指定的目录块中找不到更多空间时,它把块拆分为两个。当散列存储桶被拆分时,添加一个新的散列存储桶,某些记录被从现有的散列 存储桶移到新的散列存储桶中。通过重新对散列函数进行求值,并使
用再一个比特来确定散列存储桶号,确定移动哪些记录附加比特是 零的记录保留在现有的存储桶中,而那些附加比特为1的记录被移 到新的存储桶中。通过在n+l比特位置添加"l",从旧块号得到新目 录块的逻辑块号,并将在它们的散列值的n+l比特中带有"l"的目录 条目移动到新的块。其他目录块保持不变。
在文件系统中,向常规文件写入的数据常常存储在磁盘上的一个 或多个磁盘块中。UNIX⑧和类似于UNIX的文件系统接口允许向文 件的当前结尾之后写入新的数据(UNIX是The Open Group在美国 及其他国家的注册商标)。这允许创建带有间隙或"空穴",即文件内的 从未写入数据的区域的文件。这样的文件常常被称为稀疏文件。支持 稀疏文件的文件系统实现方式仅对于文件的向其中写入了数据的区 域,有效地分配磁盘存储器,而对于空穴或至少对于大于块大小或文 件系统所使用的磁盘分配的单位的空穴,不会有效地分配磁盘存储 器。
基于可扩展的散列的比较大的目录可以表示为稀疏文件,文件中 的空穴代表还没有被拆分的目录块。通过检查目录文件中的稀疏的区 域,可以确定拆分目录块的频度,如此,要使用多少比特的散列值才 能定位包含给定文件名的目录块。查找操作只要求单一 目录块存取, 不管目录文件的大小和结构如何。对稀疏文件的读取操作返回零,其 中,读取偏移和长度相交成一个空穴。
散列树可以表示为磁盘上的稀疏文件。当拆分散列存储桶时,重 新定位记录。每一个散列存储桶都存储在文件中的作为i*s给出的偏 移处,其中,i是散列存储桶号(从零开始),s是散列存储桶大小。 目录开始时是空白文件。当插入第一记录时,它存储在散列存储桶0 中,随后被写入到文件,将文件大小从0增大到s。当散列存储桶0 需要拆分时,存储桶1被写入,将文件大小从s增大到2*s。拆分 的下一散列存储桶将写入散列存储桶2或3,取决于头两个存储桶中的哪一个需要被接下来拆分。如果存储桶1被接下来拆分,则散
列存储桶3将被写入,将文件大小从2*s增大到4*s,在散列存储 桶2将去这里的偏移2*s处留下有空穴的文件。给定了文件大小、 最长的散列树树枝的深度(在带有最大深度d的散列树中,所有散 列存储桶号都是d比特或稍小,至少一个散列存储桶必须具有其中第 d比特是1的存储桶号),可以计算出最大深度d,作为最大的散 列存储桶号中的比特的数量,f/s-l,其中,f是文件大小。要查找带 有给定键的记录,通过给定键的散列值的深度d最低有效比特,计 算出散列存储桶号b。如果散列树的所有树枝都具有相同深度,则我 们将确信能找到由该键给出的散列存储桶中的记录。由于存储了给定 键的树枝可以具有小于d的深度,则存储桶b可能不存在于散列树 中。如果是这种情况,则文件将在偏移b*s处具有空穴。因此,如 果找到了空穴,则可以通过使用散列值的小于1的比特,计算新的 散列存储桶号b'。如果散列树树枝具有深度d-l,这将产生记录的位 置。只要遇到文件中的空穴,就重复此过程。 一旦找到非空穴,带有 给定鍵的记录必须位于该散列存储桶中,如果它存在的话。
虽然所描述的可扩展的散列实现方式适用于任何散列存储桶容 量,但是,如果存储桶容量与文件系统块大小相同或是块大小的倍数, 则将会更加有效。这是因为,稀疏文件的有效的实现方式不要求任何 磁盘I/O来读取空穴,如果空穴在文件系统块边界上对齐的话。因 此,如果该散列存储桶当前没有被緩存的话,所有查找都要求至多一 个磁盘I/O来读取将持有记录的实际散列存储桶。注意,这里假设, 包含文件的磁盘块的位置的文件元数据被緩存。
分配图也是文件结构的一部分,通常存储在磁盘上,作为驻留在 一个或多个磁盘块的文件结构的一部分。分配图记录了文件系统中的 所有磁盘块的分配状态(空闲的或在使用中的)。优选情况下,图被 分为比较大的固定数量n个分别可锁定的区域。每一个区域都包含 文件系统中的每个磁盘上的磁盘块l/nth的分配状态。此图布局允许 通过一次只访问单一分配区域,将分配的》兹盘空间正确地跨所有磁盘分条。优选情况下,在文件系统创建时,基于群集中的期望的节点数, 确定区域的总数。
如果包括共享磁盘文件系统的节点没有正确地使它们对共享磁 盘的访问同步,它们可能会损坏文件结构。这特别适用于分配图。为 说明这一点,考虑分配空闲块的过程。假设两个节点同时尝试分配一 个块。在执行此项操作的过程中,它们两者都能读取同一个分配图块,
两者都发现描述空闲块(i,j)的同一个元素A (i,j), 两者都更新 A (i,j),将块(i,j)显示为已分配,两者都将块写回到磁盘,两者都 继续将块(i,j)用于不同的目的,如此,违犯了文件结构的完整性。 如果A(X)和A(Y)两者都包含在同一个图块中,即使节点同时分配 不同块X和Y,也会发生比较细微的但严重的问题。在此情况下, 第一节点将A(X)设置为已分配,第二节点将A(Y)设置为已分配, 两者都同时将它们的图块的緩冲的副本写入到磁盘。取决于哪一个写 入操作是首先执行的,块X或Y在磁盘上的图中将显示为空闲的。 如果,例如,第二节点的写入操作是在第一节点的写入操作之后执行 的,则块X在磁盘上的图上将是空闲的。第一节点将继续使用块X (例如,存储文件的数据块),但是,在以后的某一时间,另一个节 点可以分配块X用于某种其他的用途,再次导致违犯文件结构的完 整性。
分配磁盘空间要求对分配图进行更新,更新必须在节点之间保持 同步。尽管分配图结构大大地减少了同时写入文件的节点之间的干 扰,但是,某些干扰是可能的。这是由于这一事实当切换区域时, 节点没有有关其选择切换到哪 一 个区域所依据的信息。在理想情况 下,它应该切换到目前没有被另一个节点使用的区域,以及具有足够 的空闲块以允许它持续写入而没有进一步的区域切换的那个区域。利 用分配管理器来提供使节点能进行区域的知情选择的手段。
对于每一个文件系统,群集中的其中一个节点负责维护有关所有
分配区域的空闲空间统计信息。当安装文件系统时,此分配管理器节 点通过读取分配图,初始化空闲空间统计信息。通过周期性的消息,不严格地使统计信息保持最新,在消息中,每一个节点都报告在最后 的阶段分配的或释放的磁盘空间的净额。除了所有节点分别地搜索仍 包含空闲空间的区域,每当节点用尽在它当前正在使用的区域中的磁 盘空间时,节点向分配管理器要求一个区域来试试。在可能的范围内, 分配管理器通过将不同节点定向到不同的区域,防止节点之间的锁定 冲突。
上文定位了用于文件创建的分配图访问。但是,由于删除文件也 会更新分配图,因此,文件删除有可能导致频繁的区域切换,因此, 会干扰同时正在写入文件的节点。即使单个文件中的块被定位到单一
区域,仍常常会发生这样的情况 一个节点将删除由不同节点所创建 的或在不同的时间创建的并因此从不同区域分配的许多文件(例如, 一个目录的内容)。由在几百个节点上运行的并行程序所创建的文 件可能已经在几百个区域分配了块。删除文件要求锁定和更新这些区 域中的每一个,也许要从当前分配它们的节点取出,这会对性能产生 不利的影响。因此,不是在在其上面文件被删除的节点上处理所有分 配图更新,而是将更新已知正在被其他节点使用中的区域的那些分配 图更新发送到那些节点供执行。分配管理器周期性地分发有关哪些区 域正在被哪些节点使用的提示,以促进取消分配请求的发送。
为避免损坏文件结构,节点必须在将每一个位图块读取到存储器 之前获取每一个位图块的令牌。如果节点修改块(即,通过分配或释 放块),则它必须在释放令牌之前将块写入到磁盘中。令牌允许节点 緩存它从磁盘中读取的数据,因为在令牌没有被撤销的情况下数据不 能在别处被修改。
常常利用多个令牌管理子系统来向节点授予令牌。锁定管理器处 理共享磁盘文件系统所需的不同的恢复范例,还添加对同 一个文件进 行并行更新所需的额外的锁定状态。由于锁定管理器中的所需的中心 功能与特定计算机没有连接,因此,它们可以从一台计算机迁移到另 一台计算机,以满足性能和可用性需求。
从令牌管理器子系统获取令牌的开销,以及在释放块上保存的令
17牌之前向磁盘写回图块的开销,会大大地降低共享磁盘文件系统的性 能。令牌管理器跟踪给予群集中的所有节点的所有锁定令牌。获取、 放弃令牌、使令牌升级或降级需要向令牌管理器发送请求消息。只锁 定文件的立即需要的部分是昂贵的,将对每个应用程序调用都需要对 令牌锁定管理器进行调用。努力最小化令牌管理调用的数量是十分重 要的。
为分配分条的文件的连续的块,节点获取一个区域的令牌,并使 用该区域中的空闲块(即,其分配图元素指出它们的状态的块是自由 的),根据分条排列,分配连续的块。在释放令牌之前,节点将该区
域写回到磁盘。如果当试图分配该磁盘上的一个块时,节点切换区域 它将一个区域写回到磁盘,并释放令牌,然后,获取另一个区域的令 牌,并尝试从那里进行分配。如果节点在试图在特定磁盘上找到空闲 块的尝试中尝试了所有区域都未成功,那么它可以(取决于文件系统 的分条策略)分配另一个磁盘上的块或者向应用程序返回"没有空间" 状态。在前一种情况下,当未成功地尝试了所有磁盘,文件系统返回 "没有空间"状态。作为性能增强,文件系统通常会允许其他节点偷取 其在文件块写入之间的区域的令牌。响应令牌偷取请求,节点将该区 域写入到磁盘,并放弃令牌。
要解除块的分配,文件系统读取包含描述了块的分配图的区域, 将其状态更新为空闲,并在释放令牌之前将该区域写回到磁盘。
由令牌冲突所引起的磁盘I/O的开销在令牌管理器消息的开销 中占据主要地位。对令牌管理器节点上高负载的一个最有可能的原因 是引起令牌撤销的锁定冲突。当一个节点使令牌降级或放弃令牌时, 被该令牌覆盖的脏数据或元数据必须清空到磁盘,和/或从緩存中丢 弃。因此,缩小令牌管理器负载和改善总体性能的更加有效的方式是 一开始就避免锁定沖突。
可以优化令牌协议,以进一步降低令牌管理的开销和缩短响应时 间。当需要撤销令牌时,负责撤销的节点的职责是向在冲突模式中持 有令牌的所有节点发送撤销消息,从这些节点收集应答,并将这些应
18答作为单一消息转发到令牌管理器。如此,获取一个令牌将很少需要向令牌管理器发送两个以上的请求消息,不管多少节点可能在冲突模式中持有令牌。
群集文件系统可以将I/O吞吐量提高到单一节点可以实现的I/O吞吐量之上。为保持文件系统一致性和POSIX语义要求使从多
个节点对数据和元数据的访问同步。同步可以通过分布式锁定来实现。分布式锁定允许比集中管理实现更大的并行性,只要不同的节点对不同数据/元数据片段进行操作。
分布式锁定管理器连同每一个文件系统节点中的本地锁定管理器一起使用在群集中的其中一个节点上运行的集中式全局锁定管理器。全局锁定管理器,通过散发传递授予分布式锁定权限的锁定令牌,来协调本地锁定管理器之间的锁,无需在每次获取或释放锁定时的单独的消息交换。
从同 一 个节点对同 一 个磁盘对象的重复访问只要求单 一 消息以获取取得对象的锁定的权限(锁定令牌)。 一旦一个节点已经从令牌
管理器或"令牌服务器"或"锁定管理器"获取了令牌,在同一个节点上发出的随后的操作可以取得同一个对象的锁定,无需额外的消息。只有在另一个节点上的操作要求同一个对象上的沖突的锁定的情况下才需要额外的消息,以从第一节点撤销锁定令牌,以便可以将它授予其他节点。锁定令牌还起着维持节点之间的高速緩存一致性的作用。当锁定沖突频繁发生时,分布式锁定的开销可能超出向中央节点转发请求的开销。在这种情况下,常常被从不同节点访问和更新的数据或元数据可以更好地通过比较集中的方法进行管理,其中,所有发生冲突的操作都被转发到执行请求读取或更新操作的指定的节点。
获得一个锁定通常要求首先获取令牌,这被视为代价大的操作。通过预期文件的访问模式,在节点上緩存令牌将是有益的。另一方面,获取不需要的令牌可能会降低性能,因为此令牌将被另一个节点需要。串行化对不同节点上的进程并行地向其写入的文件中的不同区域的访问是通过分布式字节范围锁定来进行的。字节范围锁定被用来使对文件数据的读取和写入操作同步。这允许并行应用程序并发地向同 一个文件的不同部分进行写入,而同时又
可维持POSIX读取/写入的原子性语义。不需要POSIX语义的应
用程序可以利用数据转移,以绕过字节范围锁定和避免令牌状态问题。然而,在读取/写入调用过程中获取字节范围的令牌,然后释放它,会增大锁定开销。
当 一个进程需要锁定字节范围时,它首先需要获取适当的字节范
围令牌。对于指定的字节范围,检查字节范围令牌请求通过将该请求与整个多节点系统中的现有的相互冲突的范围进行比较,并授予不需要从另一台计算机进行令牌撤销的可能的最大的字节范围。这会降低发出请求的节点上的下一操作需要另 一个令牌请求的概率。
字节范围令牌代表节点的对文件的一部分的访问权限。如此,如果一个节点持有文件X的范围(100,200)的读模式的字节范围令牌,这就意味着,该节点可以安全地读取该文件的那个部分。然而,为防止偷取令牌,在实际读取操作之前,节点必须锁定令牌,因为如果另一个节点需要向同一部分进行写入,它可以偷取令牌。锁定令牌,可以防止偷取。在读取操作完成之后,可以安全地将令牌解锁。
字节范围令牌通常是按如下方式协商的。通过指定对应于当前正在处理的写入系统调用的偏移和长度的必要范围,以及包括可能的未来的访问的希望范围,在令牌协商过程中,传递有关写入偏移的信息。对于顺序访问,希望范围将从当前写入偏移到无穷远处。令牌协议将只从与必要范围冲突的节点撤销字节范围。然后,令牌服务器将在不与仍被其他节点持有的范围冲突的情况下,授予希望范围的尽可能大的子范围。
向文件写入的第一节点将获取整个文件的字节范围令牌(零到无穷远)。只要没有其他节点访问同一个文件,所有读取和写入操作都在本地处理,没有节点之间的进一步的交互。当第二节点开始向同一个文件进行写入时,它将需要撤销第一节点持有的字节范围令牌的至少一部分。当第一节点接收到撤销请求时,它会检查文件是否仍正在使用中。如果文件已经被关闭,则第一节点将放弃整个令牌,然后第二节点将能够获取涵盖整个文件的令牌。如此,在没有并发写操作共享的情况下,字节范围锁定表现伊如整个文件锁定一样。这是有效的,因为单 一令牌交换足以访问整个文件。
如果在第一节点关闭文件之前第二节点开始向文件进行写入,则第一节点将只放弃其字节范围令牌的一部分。如果第一节点正在在偏
移(h处按顺序写入,第二节点在偏移02处写入,则第一节点将放弃从02到无穷远处的令牌(如果02Xh)或从零到Oi处的令牌(如
果02〈0j。这将允许两个节点从它们的当前写入偏移处向前继续写
入,而不会发生进一步的令牌冲突。 一般而言,当多个节点正在按顺序向同一个文件的不相重叠的部分进行写入时,每一个节点都将能够获取必要的令牌,以单一令牌交换作为其第一写入操作的一部分。
当试图锁定字节范围时,首先查询令牌管理器,以确定节点上是否存在兼容的令牌。探测的范围是操作所需的最小范围。如果令牌在本地可用,则将它锁定,没有进一步的令牌活动发生。然而,如果令牌不可用,那么请求令牌。基于偏移和文件操作的长度,计算必要范围。希望范围基于文件的访问模式。如果随机地访问文件,那么希望范围将等于必要范围,因为从其他节点偷取令牌可能没有益处。然而,如果文件是按顺序访问的,则希望范围从必要范围的开始处开始,但是,在无穷远处结束(有一个特殊值代表无穷远)。这是最小化未来的令牌请求的尝试,因为可以预测未来锁定的必要性(通过提示)。
当一个节点持有与另一个节点上令牌请求有冲突的令牌,则它获得撤销请求。该请求包含发出请求的节点的必要范围以及希望范围。这里,节点必须判断它可以放弃什么范围。如果必要范围等于希望范围,则判断是容易的,给予的范围就是所需(并且也是希望)范围。然而,如果希望范围不同于必要范围,这意味着,发出请求的节点正在按顺序访问文件,并且它希望具有一个令牌,该令牌在必要范围的开始处开始,但是在无穷远结束。
然后,节点遍及访问文件的其活动进程,并检查它们是按顺序还
21是随机地访问文件。如果它们中全部都随机地访问文件,那么节点授予必要范围。然而,如果一个或多个进程是按顺序访问文件的,则放弃必要范围是一种浪费,因为以比较高的概率,我们知道不久将请求什么令牌。在此情况下,检查所有顺序操作的文件指针(即,下一操作的预期位置),并计算最小偏移。可以预料,这些操作将不会访问低于此最小值的文件区域,因为它们是顺序的。如果高于必要范围,则将给予的范围伸展到该计算出的最小值。对于文件访问模式允许緩存令牌节省了令牌的获取,这是开销大的操作,如此,改善了系统的
总体性能。
元节点(metanode)管理文件元数据,以便在共享磁盘环境下进行并行读取和写入。虽然如果节点在它们读取或写入的部分放置适当的锁,节点可以在文件的不同区域读取和写入,但是,它们都需要访问相同的元数据。通过调节对元数据的访问,元节点使读取/写入操作同步,以便从所有节点都可以得到文件的一致的视图。
为每一个文件指定了负责访问并更新文件的元数据的单一节点。借助于令牌管理器或令牌服务器,动态地选择特定文件的元节点。元节点负责处理往返于元数据驻留在其上面的磁盘的元数据的I/O活动。所有其他节点都与元节点进行通信,以便获取或更新元数据信息。这些节点不直接地访问磁盘上的元数据信息。节点访问元节点,以获取元数据。元节点阻止了极大量的磁盘活动。
当节点首次访问 一 个文件时,它试图(从元节点令牌服务器那里)获取该文件节点的元节点令牌。令牌被授予这样做的第一个节点。而其他节点了解元节点的身份。如此,在没有并发文件共享的传统的工作负荷中,每一个节点都变为它使用的文件的元节点,并在本地处理所有元数据更新。当不再在元节点上访问文件时,并在该节点上不再被緩存,节点放弃其元节点令牌,并停止充当元节点。当它随后从另一个节点接收到元数据请求时,它发送否定答复。然后,其他节点将试图通过获取元节点令牌来接替作为元节点。文件的元节点倾向于停留在积极地访问文件的节点集内。
22元节点保留了反映磁盘上的元数据的元数据的緩存副本。其他节 点还保留了它们过去从元节点读取的并且它们根据需要扩充了的元 数据的緩存副本。每一个元数据元素都具有其自己的使用模式和特殊 特征。
元节点保留了有关文件的元数据的信息,并充当磁盘和所有访问 文件的节点之间的智能緩存。有元节点停止提供此功能的情况。为了 进行平稳的操作和恢复,这些情况需要加以处理。用于访问元节点的 节点需要直接选择一个新的元节点。选择过程考虑了文件的访问模 式。在一个实施例中,每个文件只有一个元节点。
对于每一个文件,都定义了元节点令牌。对于元节点令牌,通常
有三种才莫式"ro"(只读),"ww,,(弱写入)和"xw,,(排它性写入)。 规则是"xw"令牌与所有模式都有冲突,"ww"与"xw"和其本身有沖 突,"ro"只与"xw"有冲突。如此,有两种可能性要么0个或多个 节点持有"ro,,的令牌,于是,至多一个节点可以持有"ww,,的令牌。或 者,只有一个节点持有"xw"的令牌。当节点第一次打开一个文件时, 它试图获取"ww"模式的元节点令牌。如果没有其他节点持有"ww"或 "xw,,的令牌,则令牌管理器授予"ww,,令牌。如果发生这种情况,则 该节点变为元节点管理器。然而,如果另一个节点持有"ww"的令牌, 则令牌管理器授予"ro"令牌。然后,节点知道另一个节点是元节点。 它可以查询令牌管理器,以确定谁是此文件的元节点。
有节点必须变为元节点的情况。在此情况下,要求"ww"令牌不 会有帮助,因为旧元节点不会将其令牌降级。这里,希望变为元节点 的节点要求"xw"令牌。这将导致向现有的元节点发送撤销消息。然后, 旧元节点将其令牌"ro"降级,令牌管理器将向新的元节点返回"ww,, 令牌。如果一个节点要求"xw,,令牌,并且根本没有其他节点持有此令 牌,那么令牌管理器将在该模式下授予令牌。如果一个节点持有"xw" 令牌,那么它是此文件的元节点,但是,此外,没有其他节点打开 此文件。在此情况下,如果一个节点试图获取"ww,,令牌,则向元节 点发送撤销消息。结果,节点使其"xw,,令牌降级为"ww",如此,令每个节点都可以请求带有特定模式的命名令牌。如果模式不与被
授予其他节点的同名的令牌发生冲突,则令牌管理器向该节点授予令 牌。对于每一个令牌,有可能的模式的列表和沖突表格。如果被请求 的令牌与被被授予另一个节点的令牌有沖突,则撤回,发生冲突的节 点将其令牌模式降级为不会与被请求的模式发生冲突的模式。如果模
式不与被授予其他节点的同名的令牌发生冲突,则令牌管理器向该节 点授予令牌。
在大型文件系统中,每当安装文件系统时或每当群集中的一个节 点下线时,运行文件系统检查(fsck)以检验/恢复文件系统一致性是 不可行的。而是将影响文件系统一致性的所有的元数据更新都记录在 日记中或"写前日志"中。
每一个节点都具有它安装的每一个文件系统的单独的日志。日志 存储在该文件系统中。因为此日志可以被所有其他节点读取,因此, 任何节点都可以代表发生故障的节点执行恢复。不需要等待发生故障 的节点恢复正常。在一个节点发生故障之后,可以通过简单地重新应 用记录在发生故障的节点的日志里的所有的更新,迅速地恢复文件系 统一致性。例如,创建新文件需要更新目录块以及新文件的信息点。 在获得目录块和信息点上的锁之后,两者都在高速緩冲存储器中被更 新,描述了两个更新的日志记录被假脱机。在修改过的信息点或目录 块净皮允许写回》兹盘之前,对应的日志记录必须纟皮推向磁盘。如此,如 果在写入目录块之后但是在信息点被写入到磁盘之前节点发生故障, 则保证节点的日志重做错过的信息点更新。 一旦由日志记录描述的更 新被写回磁盘,不再需要日志记录,并可以将其丢弃。日志可以是固 定大小,因为可以在任何时候通过在后台将脏的元数据清空回磁盘来 释放日志中的空间。
在日志恢复完成之后,其他节点可以获得被发生故障的节点持有 的任何元节点令牌,如此,接管元节点的角色。如果另一个节点向旧 的元节点发送了元数据更新,但是,在发生故障时,还没有收到更新被提交到磁盘的确认,则它向新的元节点重发更新。这些更新可以由
新的元节点重新应用。
万一令牌管理器发生故障,另一个节点将接管此职责,并通过查
询所有的幸存的节点,询问它们当前持有的令牌,重建令牌管理器状
态。由于新的令牌管理器不知道哪些令牌被发生故障的节点持有,因
此,它不会授予任何新的令牌,直到日志恢复完成。幸存的节点当前
持有的令牌不受影响。
类似地,由发生故障的节点执行的其他特殊功能(例如分配管理 器)可以分配给另一个节点,该另一个节点通过从磁盘读取信息与/ 和查询其他节点来重建必要的状态。
可以由通过周期性脉动消息监视节点和通信链接并执行组员身 份协议的组服务层来检测节点故障。当一个节点发生故障时,组服务 层可以将组员身份的变化通知给其余的节点。这就会触发任何必需的 恢复动作。当一个节点发生故障时,文件系统管理器将防御磁盘存取, 以防止数据损坏。
考虑下列情况。节点1打算安装文件系统。节点1向文件系统
管理器节点发送远程过程调用(RPC),请求适当的安装文件系统的许 可令牌。文件系统管理器收到RPC,并向节点1发回适当的许可令 牌。现在假定,在许可令牌抵达节点1之前,网络发生故障,节点1 不再与群集中的一个或多个有效节点进行通信。文件系统管理器节点
认识到,它与节点1失去联络,并阻止(防御)节点1进行磁盘存 取。但是,在故障发生之前,节点1收到已经发送的许可令牌。在 收到适当的许可之后,节点1相信现在可以解除自身防守,并开始 向构成文件系统的磁盘进行写入。同时,群集中的其他节点认为节点 1已经完全地防御避免进行磁盘存取。如果其他有效节点开始向这些 相同的磁盘进行写入,那么将发生数据损坏。
在优选实施例中,本发明的方法通过已知的一组SCSI-3 Persistent Reserve命令来实现。
在一个实施例中,指定群集中的一个节点充当群集中的具有节点
25管理职责的群集管理器节点。群集管理器与群集中的所有的有效节点 进行通信。群集管理器本身是一个有效节点。群集管理器的管理职责 的一部分包括检验哪些节点在群集中是有效的,并查询有效节点,以 确定是否有法定有效节点认为群集管理器仍是群集的管理器。通过示 例描述本发明。
请参看图2,该图显示了本发明的一个实施例的流程。 假设节点1希望安装文件系统。节点1向群集管理器发送远程 过程调用(RPC),请求适当的安装文件系统的许可令牌。群集管理器 向节点1发送适当的许可令牌。 一旦发出请求的节点1收到许可令 牌,但是在节点1解除自身防守并安装文件系统之前,节点l在20 向群集管理器发送RPC,请求验证群集管理器节点将节点1视为有 效节点。在这期间,节点1不进行任何操作,直到它从群集管理器 收到适当的响应。在节点1收到适当的响应之后,它进一步解除自 身防守并安装文件系统。如果节点1失去了与群集管理器的通信,则 群集管理器不会收到请求进行有效状态验证的RPC,因此,不会恰 当地作出响应。虽然基础的通信机制还可能向客户端节点指出,不能 发送RPC。
在群集管理器节点响应节点1的有效状态验证请求之前,与此 一致,群集管理器在22中查询具有其自己的请求验证的RPC的法 定节点,查询是否有法定节点相信,群集管理器仍具有该文件系统的 管理职责。群集管理器节点不会对发出请求的节点1的RPC作出 反应,直到它从群集中的大多数法定节点收到响应。在24中,法定 节点对群集管理器的查询作出响应。在26中,如果根据收到的响应,
群集中的大多数法定节点回答,群集管理器实际上仍是该文件系统的 管理器,那么在28中,群集管理器对节点1的有效状态验证RPC 作出回复,节点1仍被视为有效的。
另一方面,如果群集管理器从群集中的法定节点的子集听到回 应,那么群集管理器以为存在一些灾祸性故障。在30中,群集管理 器响应发出请求的节点,它不再是群集管理器。此时,发出请求的节点必须知道谁是新的群集管理器,并启动新的请求。选择新的群集管 理器的机制以及将该新的信息传播到群集中的有效节点是现有技术
中已知的。在32中,群集管理器实现恢复协议。恢复协议将取决于 故障的性质。在一个实施例中,群集管理器节点等候进一步的指令。 在另一个实施例中,它等候用户干预。另一方面,如果群集管理器没 有从群集中的任何节点收到答复,那么群集管理器节点假设它一定受 到通信故障的负面影响,因为它不再与群集内的其余的有效节点进行 通信。优选情况下,群集管理器节点已经对RPC请求进行排队。在 这种情况下,群集管理器节点不会响应已经排队的任何RPC。注意, 本技术也有利地处理其中群集管理器节点希望向磁盘写入并认为本 身仍有效,但是已经丢失与群集的其余的部分的通信的情况。在一个 实施例中,群集管理器使其自己的作为群集管理器的状态降级,并执 行节点故障协议。在另一个实施例中,群集管理器等待接收系统恢复 过程的指令,或者,等待用户干预。
在再一个实施例中,由于有效节点已经失去了与它们的群集管理 器节点的通信,因此,有效节点执行一个协议,其中,它们同意选择 (升级)群集中的另一个有效节点来担当新的群集管理器。在这一情 况下,文件系统仍能正常地运行,而恢复过程试图确定群集管理器发 生了什么情况,并修复该节点,或以别的方式使其重新上线。在替代 实施例中,在群集管理器节点重新上线之后,有效节点恢复群集管理 器节点的群集管理职责。在另一个实施例中,有效节点等待用户干预。
本发明的新颖的方法在文件安装过程中确保文件系统的完整性, 而不会对系统总开销造成不利的影响。
应该理解,本领域的技术人员将轻易地能够在他们自己特定的文 件系统结构中,在优选实施例中,利用SCSI-3 Persistent Reserve命 令,实现这里所公开的技术,无需过度的实验。
前面的对本发明的示例性的实施例的描述只是为了说明和描述。
它不是穷尽或将本发明限于所公开的准确的形式。根据上述教导,许 多修改方案和变化也是可以的。其他软件和硬件实现方式都落入主张
27了权利的本发明的范围内。
虽然允许了本发明的特定实施例,但是,那些本领域的技术人员 将理解,在不偏离本发明的精神或范围的情况下,可以对特定实施例 作出更改。因此,本发明的范围不被限制于特定实施例。此外,所附 的权利要求应该涵盖本发明的范围内的所有这样的应用、修改和实施 例。
为避免引起怀疑,术语"包括",如在整个说明书和权利要求中所 使用的,不应该理解为"只包括"的意思。
权利要求
1.一种用于在具有多个有效节点的群集文件系统中发生故障之后防止发出请求的节点解除防守而安装文件系统的方法,包括将所述群集中的一个有效节点升级到群集管理器节点;将大多数的有效节点定义为所述群集中的法定节点;将所述群集管理器与所述群集中的有效节点进行通信;向所述群集管理器分配职责,部分包括从所述群集中的所述发出请求的节点接收有效状态请求;查询所述法定节点,查询每一个节点是否认为所述群集管理器仍然具有所述文件系统的群集管理职责;判断大多数法定节点是否已经响应了所述查询;以及如果大多数所述法定节点认为所述群集管理器仍具有所述文件系统的群集管理职责,那么所述群集管理器响应所述发出请求的节点的有效状态请求;以及在收到对所述有效状态请求的所述响应之后,所述发出请求的节点安装所述文件系统。
2. 根据权利要求1所述的方法,与所述群集中的其他节点进行通信的所述群集节点,至少部分地利用SCSI-3 Persistent Reserve 命令的子集。
3. 根据权利要求1或2所述的方法,所述发出请求的节点首 先从所述群集管理器请求授权允许安装所述文件系统的令牌。
4. 根据权利要求1、 2或3所述的方法,所述群集管理器节 点进一步访问所述群集中的有效节点的列表。
5. 根据前面的权利要求中任一项所述的方法,所述大多数法定 节点是在检测到节点故障之后被动态地判断的。
6. 根据前面的权利要求中任一项所述的方法,在所述法定节点 的所述查询中,所述群集管理器将有效状态请求排队。
7. 根据前面的权利要求中任一项所述的方法,如果大多数所述法定节点不认为所述群集管理器仍具有所述文件系统的群集管理职 责,那么所述群集管理器对所述发出请求的节点作出响应,表明所述 群集管理器不再具有所述文件系统的管理职责。
8. 包含用于在具有多个有效节点的群集文件系统中发生故障 之后防止发出请求的节点解除防守而安装文件系统的指令集的机器 可读介质,所述指令集包括将所述群集中的一个有效节点升级到群集管理器节点;将大多数的有效节点定义为所述群集中的法定节点; 将所述群集管理器与所述群集中的有效节点进行通信; 向所述群集管理器分配职责,部分包括 从所述群集中的所述发出请求的节点接收有效状态请求; 查询所述法定节点,查询每一个节点是否认为所述群集管理器仍然具有所述文件系统的群集管理职责;判断大多数法定节点是否已经响应了所述查询;以及 如果大多数所述法定节点认为所述群集管理器仍具有所述文件系统的群集管理职责,那么所述群集管理器响应所述发出请求的节点的有效状态请求;以及在收到对所述有效状态请求的所述响应之后,所述发出请求的节点安装所述文件系统。
9. 根据权利要求8所述的机器可读介质,其中所述发出请求 的节点直到它已收到对所述有效状态请求的所述响应才安装文件系 统。
10. 根据权利要求8或9所述的机器可读介质,与所述群集中 的其他节点进行通信的所述群集节点,至少部分地利用SCSI-3 Persistent Reserve命令的子集《
11. 根据权利要求8、 9或10所述的机器可读介质,所述发 出请求的节点首先从所述群集管理器请求授权允许安装所述文件系 统的令牌。
12. 根据权利要求8到11中任一项所述的机器可读介质,所述大多数法定节点是在检测到节点故障之后被动态地判断的。
13. 根据权利要求8到12中任一项所述的机器可读介质,如 果大多数所述法定节点不认为所述群集管理器仍具有所述文件系统 的群集管理职责,那么所述群集管理器对所述发出请求的节点作出响 应,表明所述群集管理器不再具有所述文件系统的管理职责。
14. 一种在发生故障之后防止发出请求的节点解除防守而在所 述群集文件系统安装文件系统的计算机节点的群集文件系统,所述系 统包括多个有效节点,其中大多数有效节点是法定节点; 与所述有效节点进行通信的至少一个群集管理器节点,所述群集管理器职责部分包括从所述发出请求的节点接收有效状态请求; 查询所述法定节点,查询每一个节点是否认为所述群集管理器仍然具有所述文件系统的群集管理职责;判断至少大多数法定节点是否已经响应了所述查询;以及 如果大多数所述法定节点认为所述群集管理器仍具有群集管理职责,那么所述群集管理器响应所述发出请求的节点的有效状态请求;以及在收到对所述有效状态请求的所述响应之后,所述发出请求的节 点安装所述文件系统。
15. 根据权利要求14所述的群集文件系统,其中所述发出请求 的节点直到它已收到对所述有效状态请求的所述响应才安装文件系 统。
16. 根据权利要求14或15所述的群集文件系统,与所述群集 中的其他节点进行通信的所述群集节点,至少部分地利用SCSI-3 Persistent Reserve命令的子集。
17. 根据权利要求15所述的群集文件系统,所述发出请求的节 点首先从所述群集管理器请求授权允许安装所述文件系统的令牌。
18. 根据权利要求14到17中任一项所述的群集文件系统,所述大多数法定节点是在检测到节点故障之后被动态地判断的。
19.根据权利要求14到18中任一项所述的群集文件系统,如 果大多数所述法定节点不认为所述群集管理器仍具有所述文件系统 的群集管理职责,那么所述群集管理器对所述发出请求的节点作出响 应,表明所述群集管理器不再具有所述文件系统的管理职责。
全文摘要
一种在具有多个有效节点的群集文件系统中发生故障之后有效地防止发出请求的节点解除防守而安装文件系统的方法。该方法包括首先将群集中的一个有效节点升级,作为群集管理器节点。群集管理器与所有的有效节点进行通信。给群集管理器分配管理器职责,其中,包括首先从请求安装文件系统的节点接收有效状态请求。群集管理器首先查询法定节点,以判断每一个节点是否都认为群集管理器仍具有文件系统的群集管理职责。如果大多数法定节点认为群集管理器仍具有文件系统的群集管理职责,那么群集管理器响应发出请求的节点的有效状态请求。其后,发出请求的节点继续安装文件系统。
文档编号G06F11/00GK101689129SQ200880023511
公开日2010年3月31日 申请日期2008年6月26日 优先权日2007年7月10日
发明者B·希尔, F·施穆克, K·冈达 申请人:国际商业机器公司