CN108551765B - 用于输入/输出隔离优化的方法、系统 - Google Patents
用于输入/输出隔离优化的方法、系统 Download PDFInfo
- Publication number
- CN108551765B CN108551765B CN201680066175.XA CN201680066175A CN108551765B CN 108551765 B CN108551765 B CN 108551765B CN 201680066175 A CN201680066175 A CN 201680066175A CN 108551765 B CN108551765 B CN 108551765B
- Authority
- CN
- China
- Prior art keywords
- node
- cluster
- nodes
- coordination points
- coordination
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/70—Admission control; Resource allocation
- H04L47/74—Admission control; Resource allocation measures in reaction to resource unavailability
- H04L47/746—Reaction triggered by a failure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/142—Reconfiguring to eliminate the error
- G06F11/1425—Reconfiguring to eliminate the error by reconfiguration of node membership
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2046—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0806—Configuration setting for initial configuration or provisioning, e.g. plug-and-play
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5041—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
- H04L41/5054—Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/288—Distributed intermediate devices, i.e. intermediate devices for interaction with other intermediate devices on the same level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了用于优化实现协调点的系统中的输入/输出(I/O)隔离操作的各种系统、方法和过程。生成矩阵。所述矩阵包括指示节点对一个或多个协调点的可访问性的信息。然后,该方法将所述矩阵传输至一个或多个其它节点。另外,响应于确定节点不再是子集群的一部分,将所述子集群中的另一个节点指定为竞争者节点。所述竞争者节点访问矩阵,并且所述矩阵包括用于确定集群中的大多数协调点是否能够由所述子集群中的节点访问的信息。基于所述访问,确定所述信息指示所述大多数协调点能够由所述节点访问。然后,广播所述信息。此外,响应于集群被划分为多个网络分区,使用第一网络分区中的第一节点确定所述第一节点是否赢得一个或多个协调点。然后,将第一节点的确定传输至第一网络分区中的第二节点。此外,使用所述第二节点再次确定所述第二节点是否赢得除了由所述第一节点赢得的所述一个或多个协调点之外的一个或多个其它协调点。
Description
技术领域
本公开涉及分布式存储和计算机系统。具体地讲,本公开涉及优化实现协调点的多节点分布式存储系统中的输入/输出隔离操作。
相关技术描述
集群是具有多个节点(例如,计算设备)的分布式计算机系统,其作为单个实体一起工作以提供处理能力和存储资源。在集群中,计算机系统(例如,服务器)的处理负载通常分布在多于一个计算机(或节点)上,从而消除(或最小化)单点故障。因此,尽管集群中的一台计算机(或节点)出现问题,在集群上执行的应用程序和/或程序仍可继续发挥功能。
输入/输出(I/O)隔离(或简称为隔离)是指当节点发生故障(或疑似故障)时隔离集群的节点和/或保护集群的共享资源的方法。如果集群具有多个节点,则其中一个节点可能在某一时刻发生故障。故障节点可能控制(一个或多个)共享资源,诸如集群中其它节点使用(和需要)的共享存储。
当节点发生故障时(如上所述),集群必须能够采取纠正措施。然而,例如,如果不同子集群中的两个节点或(集群的)网络分区试图以不协调的方式控制共享存储,则可能发生数据损坏。隔离可用于禁用故障节点或者禁止访问共享存储,从而确保数据完整性并防止数据损坏。因此,隔离可用于防止对共享存储的不协调访问。
协调点(CP)可以在集群中实现以协助隔离操作。协调点提供了锁定机制以确定哪个节点(或哪些节点)被允许隔开集群中的其它节点的共享存储(例如,数据驱动器)。例如,节点必须从协调点顶出对等节点的注册密钥,然后才允许该节点将对等节点与共享存储隔开。
“脑裂”是指其中(例如,来自共享存储的)数据的可用性由于维护范围重叠的两个独立数据集而不一致的情况。例如,由于其中(集群的)两个或更多个子集群不能通信并同步它们各自的数据集的网络分区,因此会发生此类重叠。每个子集群的数据集可以通过它们自己的特殊数据集更新随机地为客户端服务,而不需要与来自其它子集群的其它数据集协调。因此,当集群中发生脑裂状况时,可以通过使用协调点实现隔离操作来决定集群的哪个子部分应当继续操作(称为仲裁方法或者简称为仲裁)。
然而,隔离操作期间高可用性集群中一个或多个协调点的不可用性(或脱机状态)可能导致数据完整性丢失,并且可能导致数据损坏和/或应用程序故障转移等问题。
发明内容
本文公开了用于优化高可用性集群中的输入/输出(I/O)隔离操作的方法、系统和过程,该高可用性集群实现了协调点以协助此类隔离操作。这种方法曾经涉及生成矩阵。矩阵包括指示第一节点对多个协调点中的每个协调点的可访问性的信息。然后,该方法将矩阵传输至(例如,集群中的)一个或多个其它节点。
在一个实施方案中,矩阵是第一协调点可达性矩阵(CPRM)。在该示例中,第一节点正尝试加入集群,并且一个或多个其它节点也正尝试与第一节点一起加入集群。该方法确定第一节点可以与一个或多个其它节点组合访问大多数协调点,并且基于该确定来加入集群。在该示例中,从第一节点传输至一个或多个其它节点的第一CPRM由一个或多个其它节点更新。更新包括指示一个或多个其它节点中的每一个节点对每个协调点的可访问性的信息。
在某些实施方案中,该方法访问配置文件,并且基于配置文件中的信息确定协调点的总数。该方法还确定一个或多个其它节点已经是集群的一部分。在该示例中,第一节点不是一个或多个其它节点的一部分。然后,该方法请求来自集群的第二CPRM。第二CPRM包括指示一个或多个其它节点中的每一个节点对每个协调点的可访问性的信息。协调点是集群的一部分,并且包括协调器磁盘和/或协调点服务器。
在一些实施方案中,该方法确定第一集群快照乘以来自第一CPRM的协调点的总数等于第二集群快照乘以来自第二CPRM的协调点的总数。该方法还确定第一集群快照乘以协调点的总数大于或等于第一集群快照和第二快照的组合乘以协调点的总数。
在一个实施方案中,该方法将第一CPRM更新为第一集群快照和第二集群快照的组合,并且将更新的第一CPRM从第一节点传输至集群中的一个或多个其它节点中的每一个节点。在接收到更新的第一CPRM时,一个或多个其它节点中的每一个节点都基于第一集群快照和第二集群快照的组合来更新第二CPRM。
另一种方法涉及响应于确定节点不再是子集群的一部分,将子集群中的另一个节点指定为竞争者节点。该竞争者节点访问矩阵,并且矩阵包括用于确定集群中的大多数协调点是否可由子集群中的节点访问的信息。基于访问,该方法确定该信息指示大多数协调点可由节点访问,并广播该信息。
在一个实施方案中,不再是子集群的一部分的节点被先前提供对多个协调点中的大多数协调点的访问。在该示例中,在确定节点不再是子集群的一部分之后,并且在将另一个节点指定为竟争者节点之前,该方法确定子集群中的任何节点都不能单独地提供对大多数协调点的访问。在一些实施方案中,广播该信息包括利用指示大多数协调点可由子集群中的节点访问的信息来更新矩阵。该信息被广播到集群,并指示由竞争者节点执行的隔离竞争成功。
在其它实施方案中,基于该信息,该方法禁止分区节点访问可由子集群中的节点访问的大多数协调点中的一个或多个协调点。所述禁止防止在集群中发生预先存在的脑裂状况。在某些实施方案中,矩阵是协调点可达性矩阵(CPRM),并且CPRM在集群中的所有节点上复制。在其它实施方案中,协调点包括一个或多个协调点服务器。
一些方法涉及,响应于集群被划分为多个网络分区,使用第一网络分区中的第一节点确定第一节点是否赢得一个或多个协调点。然后,将第一节点的确定传输至第一网络分区中的第二节点。此外,该方法使用第二节点确定第二节点是否赢得除了(由第一节点赢得的)一个或多个协调点之外的一个或多个其它协调点。
在一个实施方案中,该方法使用第二节点确定第一节点和第二节点是否一起赢得大多数协调点。在该示例中,赢得一个或多个协调点包括访问一个或多个协调点,从一个或多个协调点中顶出不在第一网络分区中的一个或多个节点的一个或多个注册密钥,以及抢占一个或多个节点以赢得一个或多个协调点。
在其它实施方案中,如果第一节点和第二节点未一起赢得多个协调点中的大多数协调点,则该方法将第二节点的确定传输至第三节点。第三节点是第一网络分区的一部分。
在一些实施方案中,使用第一节点的确定包括使用第一节点执行第一隔离竞争,并且使用第二节点的确定包括基于传输至第二节点的第一节点的确定使用第二节点执行第二隔离竞争。
在某些实施方案中,使用第一节点的确定和使用第二节点的确定包括访问矩阵。矩阵是协调点可达性矩阵(CPRM),并且CPRM在集群中的多个节点中的所有节点上复制。在一些实施方案中,协调点是一个或多个协调器磁盘和/或一个或多个协调点服务器。在一个实施方案中,第一节点被指定为第一竞争者节点,并且在第一竞争者节点将确定传输至第二节点之后,第二节点被指定为第二竞争者节点。
以上内容是概述,因此必然包含对细节的简化、概括和省略;因此本领域的技术人员将会理解,该概述仅是说明性的,并不意图进行任何限制。如由权利要求单独定义的,本发明的其它方面、发明特征和优点将在以下阐述的非限制性详细描述中变得显而易见。
附图说明
通过参考附图,可以更好地理解本公开,并且其多个目的、特征和优点对于本领域的技术人员而言是显而易见的。
图1A是根据本公开的一个实施方案的计算系统的框图。
图1B是根据本公开的一个实施方案的高可用性集群的框图。
图2是根据本公开的一个实施方案的在分布式存储环境中实现的高可用性集群的框图。
图3A是根据本公开的一个实施方案的使用协调点执行隔离操作的集群中的节点的框图。
图3B是根据本公开的一个实施方案的使用协调点执行隔离操作的集群中的节点的框图。
图4是根据本公开的一个实施方案的第一协调点可达性矩阵(CPRM)的表格。
图5A是根据本公开的一个实施方案的节点形成和加入集群的方法的流程图。
图5B是根据本公开的一个实施方案的节点加入运行集群的方法的流程图。
图6是根据本公开的一个实施方案的节点离开集群的框图。
图7是根据本公开的一个实施方案的具有预先存在的脑裂状况的集群的框图。
图8是根据本公开的一个实施方案的示出了已经离开集群的节点的CPRM的表格。
图9是根据本公开的一个实施方案的用于防止由于预先存在的脑裂而导致数据损坏的方法的流程图。
图10A是根据本公开的一个实施方案的示出了集群中的网络分区的CPRM的表格。
图10B是根据本公开的一个实施方案的示出了集群中的网络分区的按位OR表格。
图11A是根据本公开的一个实施方案的执行隔离竞争的分区集群中的节点的框图。
图11B是根据本公开的一个实施方案的执行隔离操作的分区集群中的节点的框图。
图12A是根据本公开的一个实施方案的用于在网络分区之后选出竞争者节点的方法的流程图。
图12B是根据本公开的一个实施方案的用于确定竞争者节点是否可以访问集群中的协调点的方法的流程图。
图12C是根据本公开的一个实施方案的用于利用一个或多个竞争者节点执行隔离操作的方法的流程图。
图13是根据本公开的一个实施方案的用于生成并传输CPRM的方法的流程图。
图14是根据本公开的一个实施方案的用于向集群广播信息的方法的流程图。
图15是根据本公开的一个实施方案的用于将隔离竞争的结果从一个节点传输至另一个节点的方法的流程图。
图16是根据本公开的一个实施方案的计算系统的框图,示出了如何在软件中实现隔离模块。
图17是根据本公开的一个实施方案的联网系统的框图,示出了各种计算设备如何经由网络进行通信。
虽然本公开容许各种修改和替代形式,但是在附图和详细描述中作为示例提供了本公开的特定实施方案。应当理解,附图和详细描述并非旨在将本公开限制于所公开的特定形式。相反,其目的在于覆盖落入由所附权利要求书限定的本公开的实质和范围内的所有修改形式、等同物和替代物。
具体实施方式
介绍
随着企业越来越依赖复杂的计算机系统(例如,分布式存储和/或计算系统)进行他们的日常运营,管理大量生成和处理的数据是一项重大挑战。大型企业通常使用应用程序来管理存储在各种网络和操作系统平台上的不同类型的存储设备上的大量数据。
包括许多不同类型的存储设备的存储区域网络(SAN)可用于为主机提供存储。SAN提供了用于互连存储设备、子系统和服务器系统的各种拓扑结构和能力。例如,多种互连实体(诸如交换机、集线器和网桥)可用于互连这些部件。这些不同的拓扑结构和能力允许以相对简单到高度复杂的配置范围设计和实现SAN。
如上所述,集群包括多台互连的计算机,看起来好像它们是到最终用户和应用程序的一台计算机。集群中每台互连的计算机被称为节点。多个节点的组合处理能力可以提供比从单个节点获得的更大的吞吐量和可扩展性。在高可用性集群中,出于数据存储、复制和/或去重的目的,多个节点可以共享存储设备。共享存储磁盘/设备(例如,集群共享卷(CSV))可以由集群内的所有节点访问以执行读取和写入操作。每个集群可以具有多个CSV。
在灵活的共享存储(FSS)系统中,集群中的多个节点共享一个或多个CSV。因此,FSS系统允许集群范围的本地存储网络共享。本地存储可以是直连式存储(DAS)或内部磁盘驱动器的形式。如上所述,可以通过在集群的节点之间使用网络互连来启用网络共享存储。该功能允许网络共享存储与物理共享存储共存。因此,分布式存储系统可以在多节点集群中实现,以提供来自一个或多个存储设备的数据的高可用性。
因此,分布式计算系统是研究、政府和企业计算系统的重要组成部分也就不足为奇了。这些计算系统的优点之一是它们能够处理各种不同的计算场景的能力,包括大型计算问题、大容量数据处理情况以及如上所述的高可用性情况。对于要求计算机系统高度可用(例如,在为系统用户提供服务的同时维护系统的能力)的应用程序而言,多节点集群是分布式计算模型的可用实现。
如上所述,集群是作为单个实体一起工作以协同提供处理能力和海量存储资源的分布式计算机系统。利用集群,计算机系统的处理负载通常分布在多于一个计算机上,从而消除单点故障。因此,尽管集群中的一台计算机出现问题,在集群上执行的程序仍可继续发挥功能。在另一个示例中,在集群中的另一台计算机发生故障时,集群中的一台或多台计算机可以立即投入使用。虽然集群中的每台计算机通常执行操作系统的独立实例,但是集群中的每台计算机上都执行附加的集群软件以促进通信和期望的集群行为。
当集群中的一个或多个节点错误地认为(一个或多个)其它节点没有正常发挥功能或者已经离开集群时,就会发生集群中的一个已知问题。这种“脑裂”状况使得集群被有效地划分为两个或更多个子集群(也被称为“网络分区”)。脑裂状况的原因包括节点之间的通信信道的故障,以及一个节点上的处理负载导致节点之间正常通信顺序的过度延迟(例如,一个节点超过一定时间段未能传输其心跳信号)等。
例如,如果集群被配置为利用在第一节点上操作的应用程序执行故障转移操作,并且存在于集群中的第二节点将在第一节点发生故障时接管第一节点,那么网络的完全故障将导致第二节点得出第一节点发生故障的结论。即使第一节点实际上并没有发生故障,第二节点随后也会开始操作。因此,存在第一节点和第二节点都可能尝试将数据写入分布式存储系统中的一个存储设备的相同部分(或区域),从而导致数据损坏的可能。解决方案是确保其中一个节点无法访问共享存储。如上所述,输入/输出隔离(或更简单地讲即隔离)可以被实现为将节点与共享存储“隔开”。
此外,网络分区可以采取多种其它形式,并且具有多种不利影响。例如,在节点已经成功从集群中排除(或移除)之后,节点可能尝试重新进入集群。因此,重新进入的节点可能会遇到集群环境设置,以排除节点并将其解释为分区事件。另外,即使在节点之间不存在共享存储(例如,在所谓的“无共享”集群中),网络分区也可能存在问题。例如,如果假定集群中的一个节点应当是与客户端进行交互的节点,而另一个节点检测网络分区,则客户端最终可能与错误的节点进行通信,从而导致某种方式的错误。
在节点之间的通信失败的情况下,诸如在网络分区期间网络的一部分发生故障时,节点的两个或更多个子集群中的每一个子集群都可以确定节点的另一个子集群发生故障(或可能发生故障)。例如,节点的两个(或更多个)子集群之间可能发生竞争(也被称为“隔离竞争”),其中节点的每个子集群的控制模块确定节点的另一个子集群发生故障。
如前所述,第一子集群(或网络分区)中的(一个或多个)节点可以执行向(一个或多个)存储设备的数据写入,而另一各子集群(或另一个网络分区)中的(一个或多个)节点也可以执行向共享存储设备的(一个或多个)相同部分的数据写入,导致数据不一致性错误。为了防止这些数据不一致性错误,执行“仲裁方法”以确定获胜者和失败者子集群(或组)。
获胜者子集群中的节点被确定为与共享存储保持通信,而失败者子集群中的节点被确定为停止与这些共享存储设备进行通信。然而,获胜者子集群中的节点并不确定(一个或多个)失败者子集群中的节点是否或何时将断定它们已经失去了仲裁(并由此停止使用共享存储设备)。因此,除了该仲裁方法之外,(一个或多个)节点的获胜者子集群的控制模块可执行隔离方法,该方法将来自(一个或多个)失败者子集群的节点与分布式存储系统的其余节点隔开。执行隔离方法(或更简单地讲隔离和/或隔离操作)以确保来自(一个或多个)失败者子集群的节点不与存储设备进行通信,因为来自失败者节点的不正确数据写入会导致各种数据不一致性和其它错误。
一般来讲,隔离可以分两个阶段执行。在第一阶段,隔离尝试隔开节点的(一个或多个)失败者子集群。可以向失败者节点通知仲裁结果和/或正在实现的隔离方法。此类通知可以包括节点的失败者子集群的(一个或多个)控制模块,其发现失败者子集群失去仲裁方法,节点的失败者子集群的(一个或多个)控制模块遇到指示通信中断的通信错误和/或来自失败者节点的通信被禁用等等。
在第二阶段,隔离移除失败者节点对存储设备的访问权限,诸如通过指示(获胜者子集群能够访问的)共享存储设备不接受来自失败者节点的任何通信。在这种情况下,即使节点的获胜者子集群的(一个或多个)控制模块不能确保节点的(一个或多个)失败者子集群不再执行向共享存储设备的数据写入(诸如通过执行共享应用程序的(一个或多个)实例),失败者节点将无法访问/修改获胜者节点使用的应用程序数据。实际上,该隔离机制防止集群的一部分以不协调的方式访问共享存储设备。
然而,当执行隔离时,优选地使用单独的计算设备以便实现多个节点对共享存储的访问,并同时阻止其它节点访问(共享存储)。通过提供与在集群中的节点上运行的现有隔离软件无缝结合的附加仲裁机制,使用此类单独(和独立)的计算设备可在隔离操作期间为分布式存储系统增加弹性。另外,此类单独的计算设备作为(或用作)专用于执行(和管理)隔离操作的中间设备,从而提高分布式存储系统的速度和效率。
协调点(CP)可以如上文提到的单独的计算设备那样在集群中实现以协助隔离操作。协调点提供了锁定机制以确定哪个节点(或哪些节点)被允许隔开集群中的其它节点的共享存储(例如,数据驱动器)。另外,协调点是实现多个节点对共享存储的访问,并同时阻止(集群中的)其它节点访问(共享存储)的专用设备。
在高可用性集群中,服务器、磁盘、互连和/或其它硬件和/或软件应用可以被实现为(或用作)(集群外部的)协调点,以在集群中的硬件和/或软件组件损失的情况下确保数据完整性。因此,协调点对于提供数据保护和维护集群中的高可用性至关重要,并且用于隔离的协调点的损失(或不可用)影响到这些重要目标等等。
不幸的是,在隔离背景下使用协调点具有(并导致)若干问题。通常,集群中的所有节点都需要访问所有协调点(例如,通过抢占集群中的其它节点访问共享资源,从而能够执行并赢得隔离竞争)。然而,使用协调点可能导致(除其它问题之外):(1)集群启动失败;(2)欠佳的隔离竞争结果;以及(3)非对称/FSS系统问题。
首先,在I/O隔离背景下使用(或实现)协调点可能会导致集群启动失败等缺点。例如,当发生脑裂状况时,仲裁方法确定哪个子集群应当继续发挥功能(例如,通过使用隔离竞争的结果)的决定是通过使用可由集群中的每个节点访问(或到达)的协调点来作出的(例如,基于特定子集群中的节点是否可以访问一个或多个协调点)。然而,即使在集群启动(或部署)期间,集群中的所有节点都不能访问这些协调点中的任一个,集群堆栈也无法启动。因此,在该示例中,除了集群启动失败之外,每个协调点都有可能变成单个故障点(从而导致数据不可用的情况,而不是所需的高可用性)。另外,并且作为结果,节点无法加入集群。
其次,在隔离背景下使用协调点可能导致欠佳的隔离竞争结果。如上所述,当执行仲裁方法时,由子集群选择的与协调点进行通信的节点被称为竞争者节点。为了成功隔开集群中的其它节点,竞争者节点必须能够从至少大多数协调点中移除不在其自己的子集群中的节点。在该示例中,即使可以从集群中的一个(或多个)节点访问每个协调点,可能也不存在可以访问大多数协调点的单个节点,从而导致整个集群失去仲裁方法并导致整个集群运行中断。
另外,在仲裁方法期间,子集群可以重新选择不同的节点作为竞争者节点,直到找到可以访问(或到达)大多数协调点的单个节点。如果未找到此类节点,则网络分区(或子集群)输掉隔离竞争并使其自身发生混乱(例如,离开集群)。竞争者重新选择的这一过程导致仲裁方法的延迟,并且可能导致应用程序故障转移。此外,竞争者重新选择还可能导致较小的和/或不太重要的分区赢得隔离竞争。另外,如果没有一个子集群具有可以到达(或访问)大多数协调点的节点,则所有分区(或子集群)都将输掉隔离竞争并发生混乱。这种情况导致分布式计算系统的显著停机时间。
第三,上述集群启动失败和欠佳的隔离竞争结果的问题在非对称/FSS系统中甚至更加相关。例如,FSS环境通常允许允许:允许与协调点非对称连接的隔离配置(例如,并非所有节点都需要访问协调点)。另外,FSS环境通常包括未连接到共享存储的节点(例如,计算节点)。因此,即使在FSS环境中,一些(或没有)节点也可能无法访问(或到达)大多数协调点。这种情况也可能导致分布式存储系统的显著停机时间和/或应用程序故障转移。
因此,本文描述了用于优化使用协调点执行隔离操作的高可用性集群中的隔离并且弥补由使用此类协调点而引起的缺点(因为它们与集群启动失败、欠佳的隔离竞争结果以及非对称/FSS系统有关)的过程、方法和系统。
使用协调点的I/O隔离系统的示例
图1A是根据一个实施方案的实现隔离模块的计算系统的框图。图1A包括经由网络20彼此连接的客户端10和服务器30。网络20可以是存储区域网络(SAN)或任何其它类型的互连。客户端10和服务器30可以是包括服务器、台式计算机、膝上型电脑、平板电脑等的任何类型的计算设备。客户端10包括配置文件150。
服务器30包括处理器40和存储器50。存储器50在集群110中实现I/O隔离环境。集群110还包括节点120。节点120可以是包括服务器、台式计算机、膝上型电脑、平板电脑等的任何类型的计算设备。节点120实现隔离模块130,该隔离模块还包括隔离驱动器140和配置文件150。节点120还包括协调点可达性矩阵(CPRM)160。应该指出的是,服务器30可以实现一个或多个集群,并且所述一个或多个集群各自可以实现多个节点。
配置文件150由客户端10生成并且可以经由网络20传输至服务器30。配置文件150包括关于协调点的信息。例如,配置文件150可以识别在图1A的计算系统中实现的协调点(未示出),并且还可以包括关于协调点的总数的信息。例如,配置文件150可以识别在分布式计算系统中实现了总共三个协调点。在一个实施方案中,配置文件150可以由客户端10的管理员和/或用户创建。一旦由客户端10生成,配置文件150可被传输至服务器30以供节点120使用以便识别例如配置点的总数。
图1B是根据一个实施方案的利用(一个或多个)协调点实现的I/O隔离环境的框图。如图所示,集群110包括节点120(1)、120(2)和120(3)。节点120(1)实现隔离模块130(1),该隔离模块还包括隔离驱动器140(1)。节点120(1)还包括配置文件150(1)和CPRM 160(1)。节点120(2)实现隔离模块130(2),该隔离模块还包括隔离驱动器140(2)。节点120(2)还包括配置文件150(2)和CPRM 160(2)。类似地,节点120(3)实现隔离模块130(3),该隔离模块还包括隔离驱动器140(3)。节点120(3)还包括配置文件150(3)和CPRM 160(3)。如上所述,可以在每个节点上(例如,通过客户端10)实现隔离模块。在一些实施方案中,隔离模块可以是内核模块。隔离模块130(1)至130(3)负责通过成员资格仲裁(例如,如上所述的仲裁方法)确保有效和当前的集群成员资格(或成员资格变更)。
在一些实施方案中,隔离模块130(1)至130(3)还分别利用协调点(CP)170注册节点120(1)至120(3)。例如,使用隔离驱动器140(1)的隔离模块130(1)可以将识别节点120(1)的注册密钥放置(或安装)在协调点170上。类似地,使用隔离驱动器140(2)和140(3)的隔离模块130(2)和130(3)各自将识别节点120(2)和120(3)的注册密钥放置(或安装)在协调点170上。因此,如图1B所示的注册密钥180可以包括节点120(1)至120(3)的注册密钥。如图所示,图1B还包括数据磁盘190(其由节点120(1)至120(3)共享(作为存储设备))。
应该指出的是,节点120(1)至120(3)的配置文件150(1)至150(3)包括相同的信息。例如,由配置文件150(1)至150(3)识别的协调点的数目是固定的并且是预先配置的。因此,节点120(1)至120(3)访问(或可能访问)相同数目的协调点。
图2是根据一个实施方案的实现协调点的FSS系统的框图。如图2所示,节点120(1)至120(3)各自分别连接到直连式存储(DAS)210(1)至210(3)。图2的FSS系统还包括分别与节点120(1)至120(3)相关联的本地存储阵列220(1)至220(3)以及部分共享的存储阵列240。图2中的协调点170是完全共享的存储阵列230。因此,可以在FSS系统中使用协调点来启用集群范围内的本地存储共享(例如,DAS 210(1)至210(3))。这样,网络共享存储可以与物理共享存储共存。
在一个实施方案中,节点120(1)至120(3)中的每一个节点都需要访问完全共享的存储阵列230。虽然FSS系统中的节点不需要访问相同的共享存储,但是I/O隔离需要(由集群中的所有节点)完全共享的协调点。因此,在该示例中,选择完全共享的存储阵列230作为协调点。
协调点的示例
如上所述,协调点可以在集群中实现以协助隔离操作。协调点提供了锁定机制以确定哪个节点(或哪些节点)被允许隔开集群中的其它节点的共享存储(例如,数据驱动器)。例如,节点必须从协调点顶出对等节点的注册密钥,然后才允许该节点将对等节点与共享存储隔开。协调点可以是磁盘或服务器,或者两者。通常,并且在一个实施方案中,集群110包括至少三个(3)协调点,其可以是磁盘和/或服务器的组合。
用作协调点的磁盘被称为协调器磁盘。在一个实施方案中,协调器磁盘是在集群重新配置期间(例如,在集群形成之前)留出用于I/O隔离的三个(3)标准磁盘或LUN(逻辑单元号)。协调器磁盘(和协调点)在集群中不提供任何其它存储目的(例如,诸如数据存储或包括在用于用户数据的磁盘组中)。支持SCSI-3永久保留(SCSI-3PR)的任何磁盘都可以是协调器磁盘。在另一个实施方案中,协调点也可以是被称为协调点服务器的服务器。协调点服务器是在远程计算系统或集群上运行的软件解决方案。
因此,无论协调点是协调器磁盘还是协调点服务器,协调点都允许集群中的(一个或多个)节点至少:(1)注册并成为集群的成员,(2)确定哪些其它节点已成功注册为同一集群的成员,(3)从集群中注销,以及(4)强制注销并抢占其它节点作为集群的成员。
在一些实施方案中,协调点是因为(例如,在隔离竞争中)竞争控制这些协调点而被用于确定集群成员资格的最少三个(3)协调器磁盘或协调点服务器(或两者的任意组合),该协调器磁盘或协调点服务器一起用作全局锁定设备。由于集群的控制被授予获得大多数协调点的控制(或赢得)的节点,因此必须始终存在奇数个协调点(例如,协调器磁盘和/或协调点服务器的任意奇数组合)。在一个实施方案中,实现了最多三个(3)协调器磁盘或协调点服务器(或两者的任意组合)。
如前所述,隔离可用于确保仅一个分区(或子集群)在经历网络分区的集群中幸存,使得只有幸存的分区才能够写入共享存储。隔离使用隔离竞争来确定哪个分区或子集群可以隔开其它子集群或分区中的节点。由于协调点用于管理对共享存储的访问,因此在一个实施方案中,隔离竞争是指不同子集群或分区中的节点竞争获得对大多数协调点的访问(或到达大多数协调点)。因此,隔离竞争是指与大多数协调点具有连接性(或可访问性)的节点的分区或子集群。
应该指出的是,子集群(或分区)中的节点需要访问大多数协调点,因为只有一个协调点可用于集群可产生单点故障。例如,如果单个协调点出于任何原因发生故障,则集群可能会失去操作能力。此外,使用两个(2)(或偶数个)协调点(例如,四个(4),六个(6)等)可能导致这样的情况,其中没有子集群可以确保赢得隔离竞争,因为不同子集群中的(一个或多个)节点可以访问(并赢得)相同数目的(但是不同的)协调点(例如,在集群被划分为两个具有两个(2)或四个(4)可用协调点的子集群的情况下)。
因此,使用单个协调点或偶数个协调点可能导致两个子集群中的节点将数据写入共享存储,从而导致数据损坏。因此,为了在已分区的集群中保持期望的分区可操作性,子集群中的节点(单独地或与该子集群中的其它节点组合)必须能够访问(并赢得)集群可用的大多数协调点(例如,只有在存在奇数个协调点的情况下才能在所有情况下完成任务,该任务是可用的)。
(一个或多个)协调点通常表示能够执行或用于执行隔离决定的任何类型或形式的计算设备(例如,协调点170可用于解决分区事件之后的集群110的脑裂场景)。例如,协调点170可表示可用于确定隔离决定的一个或多个协调磁盘和/或一个或多个协调服务器。协调点170的示例包括但不限于被配置为提供各种数据库服务和/或运行某些软件应用程序的应用服务器和数据库服务器、存储设备(诸如磁盘或磁盘阵列)、膝上型电脑、台式计算机、蜂窝电话、个人数字助理(PDA)、多媒体播放器、嵌入式系统和/或一个或多个相同设备的组合。
使用协调点可达性矩阵(CPRM)的示例
在一些实施方案中,集群110中的节点使用协调点可达性矩阵(“CPRM”或仅“矩阵”)来交换关于每个节点到提供给集群110的一个或多个协调点的可访问性(或可达性)的信息。CPRM包括识别集群中每个节点的信息,并且还包括用于确定节点是否可以访问或到达一个或多个协调点的信息。
CPRM可以由集群中的任何节点生成,例如,通过使用隔离模块130(如图1A所示)。CPRM还可以在集群中的所有节点上进行复制(并共享),使得由CPRM提供的信息可供所有节点使用。例如,如图2所示的隔离模块130(1)可以生成CPRM(例如,CPRM 160(1))并且在集群中的其余节点上复制该CPRM(例如,作为节点120(2)上的CPRM 160(2)和节点120(3)上的CPRM 160(3))。
图3A是根据一个实施方案的使用协调点执行隔离操作的集群中的节点的框图。图3A包括五个节点:节点120(1)、120(2)、120(3)、120(4)和120(5)以及三个协调点:协调点170(1)、170(2)和170(3)。每个节点具有或不具有到每个协调点170(1)至170(3)的连接性。每个节点还具有CPRM(分别示出为对应于节点120(1)至120(5)的CPRM 160(1)至160(5))。
在执行隔离竞争之前,子集群选出竞争者节点。竞争者是由子集群指定用于确定它是否可以访问集群可用的一个或多个协调点的节点(作为整体)。通常,竞争者节点由集群基于节点ID选择(或者指定)。然而,应该指出的是,还可以想到除节点ID之外的选择和/或指定竞争者节点的其它方法。
在一个实施方案中,隔离模块130(1)生成矩阵(例如,CPRM 160(1))。矩阵包括指示第一节点(例如,节点120(1))对每个协调点的可访问性的信息。然后,隔离模块130(1)将该矩阵传输至集群中的其它节点。利用节点到每个协调点的可访问性状态,矩阵可以由集群中的每个节点更新,并且更新的矩阵可以在集群中的所有节点上被复制并共享,使得集群中的所有节点都具有每个节点(例如,从矩阵)到每个协调点的连接性信息。
在不使用CPRM的场景中,图3A的两个子集群会输掉隔离竞争。例如,图3A示出了创建两个子集群(或两个分区)的五(5)节点集群的网络分区(由两个“X”符号指示)。节点120(1)至120(3)属于第一子集群,并且节点120(4)至120(5)属于第二子集群。另外,节点120(1)至120(5)可以利用三个(3)协调点有益于自身:协调点170(1)至170(3)。
如图3A所示,到协调点170(1)至170(3)的连接性对于所有节点不是对称的。例如,节点120(1)只能访问协调点170(3),节点120(2)只能访问协调点170(2),并且节点120(3)只能访问协调点170(1)。如前所述,节点可以基于在给定协调点上安装(或放置)其各自的注册密钥来成功获得对协调点的访问。
在网络分区时(如图3A所示),(节点120(1)至120(3)的)第一子集群选出节点120(1)作为竞争者节点(例如,基于节点120(1)的节点ID)。由于节点120(1)不能到达(或访问)超过一半的协调点(例如,由于节点120(1)只具有对协调点170(3)的访问权限),第一子集群重新选择节点120(2)作为竞争者节点。然而,第一子集群中的三个(3)节点(节点120(1)、120(2)或120(3))均不能单独具有对大多数协调点的访问权限。
第二子集群中也会发生同样的情况。由于节点120(4)只能访问协调点170(1),并且节点120(5)只能访问协调点170(2),所以节点120(4)和120(5)均不能单独访问大多数协调点。因此,如果不使用CPRM,则两个分区(例如,第一子集群和第二子集群)都会输掉分区竞争。由于没有分区幸存,可能发生整个集群运行中断(例如,所有节点都发生混乱并离开集群)。
然而,如果实现了CPRM(例如,CPRM 160(1)至160(5)),则第一子集群将赢得隔离竞争,并且第一子集群的分区幸存。例如,在一个实施方案中,CPRM指示集群中的每个节点到每个协调点的连接性(或可达性)。因此,在当前示例中,在重新选择节点120(2)作为竞争者节点之后,通过访问CPRM(例如,节点120(2)一旦被重新选择为竞争者节点就访问CPRM160(2)),第一子集群可以确定组合的节点120(1)和120(2)具有对大多数协调点(例如,分别为协调点170(2)和170(3)的访问权限)。因此,不需要重新选择节点120(3)作为竞争者节点(在图3A中以“X”示出),并且第一子集群赢得隔离竞争并且幸存。这样,使用CPRM可以避免在协调点用于隔离操作时由网络分区导致的不可用性。
图3B是根据一个实施方案的使用协调点执行隔离操作的集群中的节点的框图。类似于图3A,图3B示出了经历网络分区的五(5)节点集群。如前所述,使用协调点执行I/O隔离的一个缺点是,如果集群被分割,则较小的分区(或子集群)可能最终赢得隔离竞争。这种欠佳的隔离竞争结果是不可取的,因为具有更多数目的节点的子集群在网络分区时必须从隔离竞争中幸存(例如,以提供高可用性、应用程序故障转移等)。
因此,如果未使用CPRM,则图3B中的第二子集群(例如,具有节点120(4)和120(5)的子集群)可能最终赢得隔离竞争,从而导致更优选的第一子集群中的节点(例如,节点120(1)至120(3))发生混乱并离开集群。例如,如图3B所示,节点120(4)具有对协调点170(1)和170(2)的访问权限,但节点120(1)仅具有对协调点170(3)的访问权限。如前所述,选择竞争者节点的一种方法是使用节点的节点ID。因此,在该示例中,选择节点120(1)作为第一子集群的竞争者节点,并且选择节点120(4)作为第二子集群的竞争者节点。
应该指出的是,由于节点120(1)不具有对大多数协调点的访问权限,因此第一子集群重新选择节点120(2)作为竞争者节点。然而,由第二子集群选择作为竞争者节点的节点120(4)可单独具有对大多数协调点(例如,协调点170(1)和170(2))的访问权限。因此,在第二子集群中不需要重新选择竞争者(例如,选择节点120(5)作为竞争者节点),并且第二子集群可以赢得隔离竞争-这是不期望的结果。
因此,即使第二子集群经历延迟的开始(例如,如果第二子集群等待第一子集群选出竞争者节点并在第二子集群之前开始隔离竞争),由于第二子集群不需要重新选择竞争者,因此第二子集群赢得隔离竞争。不幸的是,如果第一子集群不使用CPRM,由于第一子集群必须经历多次竞争者重新选择(或移交)才能找到可以提供对大多数协调点的访问的(健康)竞争者节点(例如,如图3B所示的节点120(3)),第一子集群将输掉隔离竞争。由于较小的分区幸存,集群可能经历不可用性(或低可用性)。
因此,在一个实施方案中,集群中的节点使用CPRM。因此,由于节点120(1)和节点120(2)可以各自访问CPRM以确定它们具有对大多数协调点的访问权限(组合)(分别为协调点170(2)和170(3)),不需要通过第一子群重新选择节点120(3)作为竞争者节点(例如,由节点120(2))。因此,第一(较大的)子集群赢得隔离竞争,并被允许隔开第二(较小的)子集群-这是期望的结果。
图4是根据一个实施方案的协调点可达性矩阵(CPRM)的表格。如前所述,在一个实施方案中,CPRM可以由集群中的任何节点(例如,使用隔离模块和/或隔离驱动器)来生成,并且在另一个实施方案中,可以在集群中的所有节点上进行复制和共享。在一些实施方案中,CPRM在整个集群内自动维护,并且每当新节点加入集群时CPRM在集群内被更新和交换。
例如,在新节点加入集群之前,新节点到各协调点的可达性(或可见性和/或可访问性)(对集群中的其它节点)是未知的。然而,当新节点加入集群时,新节点通过更新CPRM向集群广播其可达性。然后,CPRM与集群中的其它(活动)节点共享、复制和/或交换。新节点在加入集群时还提供了CPRM的副本。
CPRM(例如,CPRM 160)可由集群中的每个节点使用以确定集群中的一个或多个节点是否可以单独或彼此组合地具有对大多数协调点的访问权限。如图4所示,节点120(1)尝试形成集群(例如,集群110)。由于节点120(1)不具有对任何协调点(更不用说大多数协调点)的访问权限,因此节点120(1)不被允许形成集群。因此,节点120(1)尝试形成集群的结果导致结果410指示“否”。集群成员420和集群快照430的列也为空(或零)。类似地,节点120(2)也不被允许形成集群,因为节点120(2)也不能访问大多数协调点(例如,节点120(2)只能访问协调点170(1)和170(2))。应该指出的是,在当前的示例中,节点120(3)、120(4)和120(5)尚未尝试形成集群。
应该指出的是,如图4所示,五个(5)协调点被提供给将要形成的任何(潜在)集群(例如,配置文件150指示五个(5)协调点可用)。如图4所示,快照(例如,集群快照430)是集群中的节点正在使用的所有协调点的列表。在一个实施方案中,节点120(3)和120(4)同时启动。如果未使用CPRM(或不可用),则节点120(2)和120(4)可能不被允许形成集群,因为节点120(3)和120(4)不能单独访问大多数协调点。
然而,在某些实施方案中,当节点120(3)和120(4)启动并尝试形成集群时,它们可以分别产生它们自己的CPRM。在该示例中,用于节点120(3)的CPRM指示节点120(3)具有对协调点170(3)和170(5)的访问权限。类似地,用于节点120(4)的CPRM指示节点120(4)具有对协调点170(4)的访问权限。由于节点120(3)和120(4)一起出现(例如,同时启动并尝试形成集群),因此节点120(3)和120(4)生成并彼此交换它们自己的(它们已经生成的)CPRM。基于它们各自的CPRM的比较,节点120(3)和120(4)可以确定它们一起具有对大多数协调点的访问权限(或可以到达)。因此,这样,节点120(3)和120(4)一起被允许形成集群。
一旦节点120(3)和120(4)一起形成并加入集群,就更新CPRM,使得结果410指示“是”,集群成员420指示{3,4},并且集群快照430指示“CDE”。当节点120(5)尝试加入集群时,节点120(5)被允许加入集群而不需要节点120(5)显示节点120(5)具有对大多数协调点的访问权限,因为节点120(3)和节点120(4)已经满足这个要求。因此,CPRM被更新为指示节点120(5)已经成功加入(运行)集群(例如,结果410为“是”,集群成员420为{3,4,5},并且集群快照430为“ABCDE”)。此时,由于:(1)集群已启动并正在运行(例如,集群可操作),并且(2)大多数协调点可由一个或多个节点(单独或组合)到达的要求由节点120(3)、120(4)和120(5)满足,节点120(1)和120(2)也被允许成功加入(运行)集群。在该示例中,每当新节点加入集群时都会更新CPRM,并且每当CPRM更新时,CPRM都会在集群中的所有节点上进行复制/共享。
图5A是根据一个实施方案的用于使用CPRM形成集群的方法的流程图。该方法在505处通过访问配置文件(例如,节点120(1)访问配置文件150)开始。在510处,节点(尝试形成集群)从配置文件获取(或读取)(可用)协调点的总数。在515处,如果此类其它节点也正尝试形成和/或加入集群,则该方法与其它节点交换CPRM(例如,节点120(1)生成并与其它节点交换CPRM 160(1),该其它节点与节点120(1)同时启动并尝试形成和/或加入集群的)。
在520处,该方法确定节点是否可以一起访问大多数协调点。如果节点不能一起访问(或到达)大多数协调点,则节点发生混乱,并且在525处,跳出(例如,节点120(1)和120(2),如上面关于图4所描述的那样,在节点120(3)和120(4)出现并尝试形成集群之前)。然而,如果节点可以一起访问(或到达)大多数协调点,则节点在530处形成集群(例如,如图4所示的节点120(3)和120(4))。然后,该方法结束(例如,形成集群)。
图5B是根据一个实施方案的用于加入运行集群的方法的流程图。该方法在535处通过确定节点是否加入运行集群开始。如果节点正在加入运行集群,则方法在540处生成第一CPRM(例如,加入集群的节点生成指示节点对一个或多个可用协调点的可访问性的第一CPRM)。在545处,该方法从(运行)集群获取(或请求)第二CPRM(例如,由于CPRM在集群中的每个节点上进行复制和共享,因此可以从运行集群中的任何节点检索或访问第二CPRM)。第二CPRM指示集群中每个活动节点对一个或多个(可用)协调点的可访问性。该方法比较(由尝试加入集群的节点生成的)第一CPRM和(从集群接收的)第二CPRM。
在550处,该方法确定尝试加入集群的节点的第一快照乘以协调点的数目(S1.N)是否等于集群的第二快照乘以协调点的数目(S2.N)。如果S1.N不等于S2.N,那么节点在560处发生混乱并跳出(例如,因为S1.N不等于S2.N可以指示集群和/或协调点配置中的潜在错误)。如上所述,N是节点的配置文件中协调点的数目。N也可以保持在节点的CPRM中。[S1.N≠S2.N]的检查防止节点加入在节点的配置文件中具有错误配置的N值的集群。
然而,如果S1.N等于S2.N,则方法在555处确定(尝试加入集群的节点的)第一快照乘以协调点的数目(例如,S1.N)是否小于(集群的)第一快照和第二快照的并集(或其组合和/或总数)乘以协调点的数目(例如,并集(S1,S2).M)。如果S1.N小于(S1,S2).M,则节点在560处发生混乱并跳出。然而,如果S1.N大于或等于(S1,S2).M,则方法在565处将(由尝试加入集群的节点生成的)第一CPRM更新为(S1,S2)的并集。在570处,该方法通过将(更新的)第一CPRM广播到集群(例如,广播到集群中的其它节点)结束。在接收到广播(和更新)的第一CPRM时,第二CPRM也被更新(例如,第二CPRM结合更新的第一CPRM中的信息)并且单个(最新且全面的)CPRM(其代表整个集群)在集群中的所有节点上进行复制和共享。
在上面的示例中,M是指作为并集操作(例如,(S1,S2).M)的结果,集群可见(或可访问)的协调点的总数。此检查或操作防止节点加入其中协调点与(例如,通过管理员)被配置为用于集群的协调点不同的集群。例如,如果第二节点尝试加入N值为7的集群,则第二节点将无法加入集群,因为第一检查(550)将失败,因为S1.N为7且S2.N为5。如果第三节点尝试加入N值为5的集群,并且第三节点具有对两个协调点{D,E}的访问权限,则集群(到目前为止)不能访问那些协调点。因此,两个CPRM的并集将导致{ABCDE}的集群快照。由于N为5并且M也为5,检查555失败。因此,节点3将加入集群。然而,如果第四节点尝试以5的N值加入,并且第四节点声明具有对两个协调点{F,G}的访问权限,则本示例中的并集将导致{ABCDEFG}的集群快照并且M值将为7。检查555在这种情况下通过,因为N为5并且M为7并且节点4将不会加入集群。
这样,一个或多个CPRM可以由节点生成和实现以形成新的集群和/或加入使用协调点执行I/O隔离的现有集群。另外,使用CPRM在实现协调点的环境中执行I/O隔离解决了以下挑战:(1)由隔离竞争引起的不可用性,以及(2)欠佳的隔离竞争结果,如上所述。
防止由于先前存在的脑裂引起的数据损坏的示例
尽管具有这些优点,然而,以上述方式实现CPRM可能会导致至少一些附加的挑战和/或缺点。首先,如果节点因任何原因离开(或存在于)运行集群,则集群中其余节点可能会失去对大多数协调点(例如,一半或更多协调点)的访问权限。例如,离开或存在于集群中的节点可能已经提供了对至少一个协调点的访问,并且因此可能有必要满足单独或(与集群中其余节点)组合访问大多数协调点的要求。因此,在另一个(或下一个)分区事件(例如,网络分区)时,集群中的其余节点(例如,在新形成的子集群中)可能无法在没有离开的节点的情况下成功地赢得隔离竞争。这种情况可能导致集群不可用。
其次,如果节点由于某种原因离开(或存在于)已经分区的集群(例如,集群处于分区状态),则可能存在这样的情况,其中是集群的一部分并且先前是非活动的节点(例如,在早些时候这些节点没有启动或激活)可能起动(或启动)。在这种情况下,变得活跃的集群的这些先前非活动的节点将处于(或加入集群)分区状态(例如,在两个分区中的节点之间可能不存在公共协调点)。因此,加入集群的处于分区状态的节点无法识别协调点上其它节点的注册密钥,并且将假定不存在预先存在的脑裂。如果这些节点起动或出现,则由这些节点写入共享存储的数据可能会导致数据损坏。
因此,在某些实施方案中,响应于确定节点不再是子集群的一部分,将子集群中的另一个节点指定为竞争者节点(例如,子集群基于节点ID选出竞争者节点)。在该示例中,竞争者节点访问矩阵(例如,CPRM)。该矩阵包括用于确定集群中的大多数协调点是否可由子集群中的节点访问的信息。基于所述访问,竞争者节点确定该信息指示大多数协调点可由(竞争者节点的子集群中的)节点访问。然后,该信息由竞争者节点广播到集群中的其它节点。
在一个实施方案中,在确定节点不再是子集群的一部分之后,并且在将子集群中的另一个节点指定为竞争者节点之前,子集群中的其余节点可以确定在该子集群中没有节点可以单独提供对大多数协调点的访问(例如,通过访问在子集群中的节点上复制和共享的CPRM)。
在其它实施方案中,(向集群)广播该信息包括利用指示大多数协调点可由子集群中的一个或多个节点访问的信息来更新矩阵(例如CPRM)。该信息还可以指示由竞争者节点执行的隔离竞争成功。基于该信息,集群可以禁止分区节点访问可由子集群中的节点访问的一个或多个协调点。在该示例中,所述禁止防止在集群中发生预先存在的脑裂状况。
图6是根据一个实施方案的节点离开集群的框图。如图6所示,集群具有三个(3)节点(例如,节点120(1)、120(2)和120(3))以及三个(3)协调点(例如,协调点170(1)、170(2)和170(3))。如果节点120(3)出于任何原因关闭、发生混乱、离开和/或存在于集群中,则节点120(1)和120(2)单独或组合地不具有对大多数协调点的访问权限(例如,因为节点120(3)单独提供对协调点170(1)和170(2)的访问)。在这种情况下,当发生网络分区时(例如,在节点120(1)与120(2)之间,任何节点(或竞争者)都不能赢得隔离竞争。结果,节点120(1)和120(2)都可能发生混乱并离开集群,导致完全集群运行中断。
图7是根据一个实施方案的具有预先存在的脑裂状况的集群的框图。如图7所示,出于某种原因,节点120(3)离开节点120(1)、120(2)和120(3)的子集群。然而,集群保持运行,而先前处于非活动状态的节点120(4)和120(5)进入分区状态。由于节点120(3)已离开集群,因此节点120(1)和120(2)的第一分区与节点120(4)和120(5)的第二分区之间不存在公共配置点。因此,节点120(4)和120(5)不能确定集群已被分区(例如,因为它们不能访问协调点170(3)以确定协调点170(3)包括节点120(1)的注册密钥)。结果,如果节点120(4)和120(5)加入集群,则可能发生数据损坏。
图8是根据一个实施方案的示出了已经离开集群的节点的CPRM的表格。应该指出的是,参考图6和图7所描述的挑战是由于CPRM的实现而产生的。例如,由于CPRM允许节点形成并加入集群,而不具有对所有协调点的连接性、可访问性和/或可达性,离开集群的节点可能引起参考图6和图7所描述的挑战。图8示出了CPRM 160并且示出了节点120(2)已经离开集群。例如,节点120(2)向节点120(1)、120(3)、120(4)和120(5)广播消息。该消息指示节点120(2)已经离开集群。结果,节点120(1)、120(3)、120(4)和120(5)在它们各自的状态机以及数据结构中清除离开节点(例如,节点120(2))的状态。
图8的CPRM 160可被实现为解决上文参考图6和图7所描述的挑战。例如,在一个实施方案中,每个节点保持CPRM。CPRM由集群中首先出现的任何节点(例如,作为形成和/或加入集群的第一节点的节点)生成。每当新节点加入集群时,CPRM都在集群内进行更新和交换。在图8中,“0”指示不能从给定节点到达协调点,并且“1”指示能够从给定节点到达协调点。当节点离开集群时(例如,在节点正常退出时),集群选择(或选择和/或指定)竞争者节点(或简单地讲竞争者)。竞争者确定竞争者自己的分区(或子集群)中的节点是否可以(单独或组合地)到达(或访问)大多数协调点。在图8中,节点120(3)、120(4)和120(5)可以一起访问大多数协调点。
如果竞争者自己的分区(或子集群)中的节点无法到达(或访问)大多数协调点,则竞争者宣布输掉(隔离)竞争(并且集群中的节点发生混乱并离开集群)。然而,如果竞争者自己的分区(或子集群)中的节点确实可以到达(或访问)大多数协调点(如图8所示),则竞争者宣布赢得(隔离)竞争,并且集群保持运行(例如,保持可操作)。
如果节点120(2)被重新启动并尝试加入集群,则可以选择节点120(1)作为竞争者,并且节点120(1)(充当竞争者)可以确定五个(5)协调点中的三个(3)协调点可由集群(作为整体)(例如,由节点120(3)、120(4)和120(5))访问或到达。结果,节点120(2)(其是分区节点)不能出现(例如,节点120(2)将被阻止加入集群),因为节点120(2)将会在预先存在的脑裂检测中失败。因此,这样,可以避免数据损坏。
图9是根据一个实施方案的用于防止由于预先存在的脑裂而导致数据损坏的方法的流程图。该方法在905处通过确定节点是否已经离开集群(例如,节点是否已正常关闭)开始。在910处,该方法访问CPRM。例如,集群可以指定竞争者节点来访问CPRM。在915处,该方法确定子集群(例如,与离开节点相关联的子集群)是否具有对大多数协调点的访问权限(例如,子集群中的其余节点是否单独或组合地具有对大多数协调点的访问权限)。如果子集群不具有对大多数协调点的访问权限,则竞争者节点可以向子集群中的其它节点广播输掉(隔离)竞争。在接收到输掉(隔离)竞争的广播时,子集群中的其它节点发生混乱并退出集群。
然而,如果子集群确实具有对大多数协调点的访问权限,则方法在920处重置离开节点的状态(例如,在每个其余节点的状态机和数据结构中),并且在925处通过广播赢得(隔离)竞争而结束。如果分区节点尝试加入集群,则分区节点在预先存在的脑裂检测中失败,因为至少一个协调点(称之为(一个或多个)重叠协调点)现在在集群中的其余节点与分区节点之间通用。结果,分区节点被警告到集群中的现有分区。这样,图9的方法防止与先前存在的脑裂相关联的数据损坏。
优化分区仲裁的示例
在一个实施方案中,通过使隔离竞争的结果取决于分区中每个竞争者的累积竞争结果,CPRM可用于优化分区仲裁。例如,在一个实施方案中,响应于将集群划分为两个或更多个网络分区,(两个或更多个网络分区的)第一网络分区中的第一节点用于确定第一节点是否赢得一个或多个协调点。在该示例中,将确定(第一节点是否成功赢得一个或多个协调点)从第一节点传输(或广播和/或传达)到(也在第一网络分区中的)第二节点。第二节点用于确定第二节点是否赢得与第一节点赢得的一个或多个协调点不同的一个或多个协调点。
在一些实施方案中,可以使隔离竞争的结果取决于分区中每个竞争者的累积竞争结果,因为例如第二节点可以确定第一节点和第二节点是否一起赢得大多数协调点。这样,新的竞争者(例如,第二节点)有效地在其余协调点(例如,与由第一节点赢得的一个或多个协调点不同的一个或多个协调点)上恢复隔离竞争。
在某些实施方案中,赢得一个或多个协调点包括访问一个或多个协调点,从一个或多个协调点中顶出不在第一网络分区中的一个或多个节点的一个或多个注册密钥,并且由此抢占一个或多个节点以赢得一个或多个协调点。
在其它实施方案中,可以将来自两个或更多个节点的累积竞争结果传输至另一个节点。例如,如果第一节点和第二节点未一起赢得大多数协调点,则第二节点的确定可以被传输至(第一网络分区中的)第三节点。
图10A是根据一个实施方案的示出了集群中的网络分区的CPRM的表格,并且图10B是根据一个实施方案的也示出了集群中的网络分区的按位OR表格。在图10A和图10B中,“0”指示不能从给定节点(或节点的分区)到达协调点,并且“1”指示能够从给定节点(或节点的分区)到达协调点。
如前所述,每个分区可以选出竞争者节点来赢得一个或多个协调点(例如,隔离竞争)。在一个实施方案中,如果竞争者确定它最终不能赢得隔离竞争,则竞争者可以在为了控制任何协调点而进行竞争之前宣布输掉竞争。竞争者可以通过访问CPRM 160来作出这个确定,如图10A所示(例如,通过査询CPRM并确定分区或子集群中的节点一起不具有对大多数协调点的访问权限,从而使竞争控制(或赢得)任何一个协调点的目的失败)。这样,CPRM可以通过强制失败者分区提前退出集群来提供更快的隔离竞争结果,从而加快集群的操作速度。
另外,使用指示网络分区(以及每个分区或子集群中的节点)(例如,如图10A所示)的CPRM可导致较少的移交和(一个或多个)竞争者重新选择。例如,如果可以在早期确定分区或子集群中的节点单独或组合地不具有对大多数协调点的访问权限,则可能不需要将竞争者节点的角色从一个节点移交到另一个节点(例如,经由竞争者重新选择)。
例如,在图10A中,节点120(1)可被选出或指定为用于第一子集群的竞争者节点(例如,节点120(1)和120(2))。节点120(1)仅竞争协调点170(5)(例如,因为节点120(1)不具有对如CPRM 160所指示的其它协调点的访问权限)。在赢得协调点170(5)之后,节点120(2)被选出为竞争者节点(经由竞争者重新选择并且因为节点120(1)不能赢得大多数协调点)。然而,节点120(1)已经赢得协调点170(5)的事实可以由节点120(2)使用以产生更快的隔离竞争结果。这种重要的信息不必被浪费和/或不被使用。
因此,节点120(1)已经赢得协调点170(5)的确定在竞争者重新选择期间由节点120(1)传输至节点120(2)。结果,由于节点120(1)已经赢得了协调点170(5),因此节点120(2)仅竞争赢得另外两个(2)协调点(例如,协调点170(1)和170(2))-从而赢得大多数协调点。因此,一旦节点120(2)赢得协调点170(1)和170(2),节点120(2)就可以宣布赢得竞争而不会进行任何进一步的竞争。这样,节点120(2)可以在未由分区或子集群中的另一个节点赢得的协调点上恢复隔离竞争,从而导致更快的隔离竞争结果。
类似地,节点120(3)可由第二子集群选出或指定为竞争者节点(例如,节点120(3)、120(4)和120(5))。由于节点120(3)具有对大多数协调点(例如,协调点170(3)、170(4)和170(5))的访问权限并且赢得大多数协调点(例如,协调点170(3)、170(4)和170(5)),因此不需要(并避免)通过第二子集群重新选择竞争者。这样,集群具有更好的幸存机会,因为大多数协调点必须可以从整个子集群而不是单个节点到达或访问。
图11A是根据一个实施方案的执行隔离竞争的分区集群中的节点的框图。在该示例中,隔离竞争的结果取决于分区(或子集群)中每个竞争者节点的累积竞争结果。如图11A所示,节点120(1)被选出为竞争者节点。由于节点120(1)仅具有对协调点170(3)的访问权限,因此第一子集群(例如,节点120(1)、120(2)和120(3))必须重新选择节点120(2)作为竞争者节点。然而,在节点120(1)将竞争者节点角色移交到节点120(2)之前,由于节点120(1)具有对协调点170(3)的访问权限,因此节点120(1)赢得协调点170(3)。另外,节点120(1)向节点120(2)传输节点120(1)已经赢得了协调点170(3)的信息。此时,节点120(2)使用由节点120(1)提供给节点120(2)的先前隔离竞争的累积结果来恢复隔离竞争。由于节点120(2)具有指示第一子集群中的节点已赢得大多数协调点的信息,因此节点120(2)赢得协调点170(2)并宣布赢得竞争。节点120(3)的竞争者重新选择是不必要的。
类似地,节点120(4)被选出为第二子集群中的竞争者节点(例如,节点120(4)和120(5))。由于子集群中没有节点竞争协调点170(1),节点120(4)具有对协调点170(1)的访问权限并赢得协调点170(1)(例如,第一子集群中的节点(例如,节点120(1)、120(2)和120(3))在没有竞争协调点170(1)的情况下赢得隔离竞争)。因此,虽然节点120(4)赢得协调点170(1),但是节点120(4)(以及由此的节点120(5))将不会(也不能)赢得协调点170(2)(例如,因为协调点已经被节点120(2)赢得;节点120(4)和120(5)的注册密钥已由节点120(2)从协调点170(2)顶出)。另外,由于节点120(4)和120(5)不具有对协调点170(3)的访问权限,因此第二子集群将输掉隔离竞争(例如,即使节点120(5)被重新选择为竞争者节点)。因此,第一子集群赢得隔离竞争并保留在集群中,并且第二子集群中的节点120(4)和120(5)自身发生混乱并离开集群(例如,跳出)。这样,要求隔离竞争(用于赢得协调点)的结果取决于先前的竞争者节点的累积竞争结果防止了先前识别的与由网络分区引起的预先存在的脑裂相关联的问题。
图11B是根据一个实施方案的执行隔离操作的分区集群中的节点的框图。根据图11B,节点120(1)、120(2)和120(3)是第一子集群的一部分,并且节点120(4)和120(5)是第二子集群的一部分。在一些实施方案中,节点120(4)和120(4)访问CPRM(例如,分别为CPRM160(4)和160(5))并确定节点120(4)和120(5)单独或组合地不能访问大多数协调点。在该确定时,节点120(4)和120(5)两者发生混乱并离开集群(例如,跳出)。另一方面,第一子集群中的节点可以一起到达大多数协调点(例如,如由CPRM所指示的那样)。因此,第一子集群选出节点120(1)作为竞争者节点。节点120(1)赢得协调点170(3)并将竞争者节点角色以及节点120(1)已经赢得协调点170(3)的信息移交给节点120(2)。此时,节点120(2)恢复隔离竞争并赢得协调点170(1)和170(2)。因此,第一分区(或第一子集群)只需一次移交即可赢得隔离竞争,从而最大限度地减少集群的故障转移时间。
图12A是根据一个实施方案的用于在网络分区之后选出竞争者节点的方法的流程图。该方法在1205处通过确定网络分区是否已经发生而开始。如果集群已经被划分为两个或更多个分区(或子集群),则该方法在1210处选出(两个或更多个子集群的)第一子集群中的竞争者节点。如前所述,可以基于节点的节点ID或以某种其它方式选出、选择和/或指定节点作为竞争者节点。
在1215处,该方法确定网络分区(例如,第一子集群)中的节点是否一起具有对大多数协调点的访问权限。如上所述,可以通过访问CPRM(例如,如图10A所示的CPRM 160)来作出该确定。如果网络分区(例如,第一子集群)中的节点一起不具有对大多数协调点的访问权限,则该方法在1220处向整个集群(例如,向集群中的所有节点)广播输掉(隔离)竞争。然而,如果网络分区(例如,第一子集群)中的节点一起具有对大多数协调点的访问权限,则该方法在1225处通过确定(选出的)竞争者节点是否可以访问任何协调点而结束。
图12B是根据本公开的一个实施方案的用于确定竞争者节点是否可以访问集群中的协调点的方法的流程图。该方法在1230处通过确定竞争者节点是否可以访问任何协调点开始。如果竞争者节点可以访问一个或多个协调点,则该方法在1235处利用竞争者节点开始隔离竞争(例如,通过选出协调点上的其它节点的注册密钥来“赢得”(或要求)协调点,从而抢占那些其它节点以赢得协调点的竞争)。
然而,如果竞争者节点不能访问一个或多个协调点,则该方法在1240处确定竞争者节点是否是网络分区中的最后一个节点(例如,在该竞争者节点所属的给定子集群是否存在任何其它节点)。如果竞争者节点不是最后一个节点,则在1245处,该方法选出新的竞争者节点(例如,给定子集群中的另一个节点)。然而,如果竞争者节点是(子集群中的)最后一个节点,则该方法在1250处通过(例如,向集群中的其它节点)广播输掉竞争而结束。
图12C是根据一个实施方案的用于利用一个或多个竞争者节点执行隔离操作的方法的流程图。该方法在1255处通过利用竞争者节点开始隔离竞争而开始。在1260处,该方法从(竞争者节点可以访问或到达的)一个或多个协调点中选出其它节点的注册密钥。在一个实施方案中,竞争者节点从一个或多个协调点中仅选出未在竞争者节点自己的分区(或子集群)中的节点的注册密钥。在另一个实施方案中,竞争者节点从一个或多个协调点中选出除了竞争者节点自己的注册密钥之外的节点的所有注册密钥。
在1265处,该方法确定由竞争者节点赢得的协调点是否是可用协调点中的大多数协调点。如果竞争者节点已赢得了大多数协调点,则该方法在1270处通过宣布赢得(隔离)竞争而结束。然而,如果竞争者节点未赢得大多数协调点,则该方法在1275处确定竞争者节点是否是网络分区中的最后一个节点(例如,例如,在该竞争者节点所属的给定子集群是否存在任何其它节点)。如果竞争者节点不是网络分区中的最后一个节点,则该方法在1280处选出新的竞争者节点,并利用新的竞争者节点重新开始隔离竞争。然而,如果竞争者节点是网络分区中的最后一个节点,则该方法在1285处通过广播输掉(隔离)竞争而结束。
优化使用协调点的I/O隔离系统的方法
在一个实施方案中,在节点启动时,隔离模块130使用隔离驱动器140来配置使用(一个或多个)协调点的集群(例如,集群110)中的一个或多个节点的I/O隔离操作。在一些实施方案中,三个(5)或五个(5)协调点(例如,奇数个协调点)提供用于隔离操作(例如,如配置文件150所指示的那样)。同样如前所述,协调点可以是协调器磁盘或协调点服务器或它们的任何组合。
在一些实施方案中,如果节点关闭(例如,如果节点出于任何原因存在于和/或离开集群),则隔离模块130使用CPRM 160来确定子集群是否具有对大多数协调点(例如,分区中的其余节点)的访问权限。如果CPRM 160指示子集群不具有对大多数协调点的访问权限,则隔离模块130宣布输掉隔离竞争并且分区发生混乱(例如,其余节点也离开集群)。然而,如果CPRM 160指示子集群确实具有对大多数协调点的访问权限,则隔离模块130宣布赢得隔离竞争,并且分区幸存(例如,其余节点继续操作)。
在其它实施方案中,一个节点的隔离模块将竞争的结果传输至另一个节点的隔离模块以赢得协调点。例如,如果节点120(1)被选出为竞争者节点并赢得一个(或多个)协调点,则当节点120(2)被重新选择为竞争者节点时,隔离模块130(1)将该信息传输至隔离模块130(2)。这样,赢得协调点的竞争从作为竞争者节点的每个节点逐步执行。
图13是根据一个实施方案的用于生成并传输(节点的)CPRM的方法的流程图。该方法在1305处通过生成协调点可达性矩阵(CPRM)而开始。集群中的每个节点可以在其首次加入集群时生成自己的CPRM(例如,节点CPRM)。另外,一旦节点成功加入集群,就可以使用CPRM来跟踪集群中所有节点对集群可用的一个或多个协调点的可访问性(例如,集群CPRM)。如上所述,基于新节点是否加入集群和/或现有节点是否离开集群,可以在集群中的一个或多个节点上更新和复制集群的CPRM。另外,节点(例如,竞争者节点)赢得协调点也可以导致对集群的CPRM进行更新。该方法在1310处通过将(节点的)CPRM传输至(例如,将利用集群的CPRM合并、组合和/或更新的)集群中的其它节点而结束。
图14是根据本公开的一个实施方案的用于向集群广播信息的方法的流程图。该方法在1405处通过确定节点是否仍然是集群的一部分而开始。如果节点不再是集群的一部分,则该方法在1410处将节点的子集群中的另一个节点指定为竞争者节点。在1415处,该方法访问CPRM。在1420处,该方法确定CPRM中的信息指示大多数协调点可(由子集群中的其余节点单独或组合地)访问。在1425处,该方法通过将该信息广播到集群而结束。
图15是根据一个实施方案的用于将隔离竞争的结果从一个节点传输至另一个节点的方法的流程图。该方法在1505处通过确定集群是否被分区而开始。如果集群被分区,则该方法在1510处使用分区中的第一节点(例如,第一子集群的(第一)竞争者节点)执行(或开始)隔离竞争(以赢得协调点)。在1515处,该方法确定该分区中的第一节点赢得一个或多个协调点,但不是大多数协调点。在1520处,该方法将该确定传输至分区中的第二节点(例如,第一子集群中的(第二)竞争者节点)。该方法通过利用第二节点执行(或继续)隔离竞争而结束(基于从第一节点传输(和接收到的)确定)。
应当理解,本文所述的系统、方法和过程优化了利用协调点的计算系统中的I/O隔离操作。
示例性计算环境
图16是根据本公开的一个实施方案的计算系统的框图,示出了如何在软件中实现隔离模块。计算系统1600在广义上表示能够执行计算机可读指令的任何单处理器或多处理器计算设备或系统。计算系统1600的示例包括但不限于以下各种设备中的任何一者或多者:包括工作站、个人计算机、膝上型电脑、客户端侧终端、服务器、分布式计算系统、手持设备、网络装置、存储控制器等。计算系统1600可包括至少一个处理器40和存储器50。通过执行实现服务器30的软件,计算系统1600变成专用计算设备,其被配置为优化利用协调点的计算系统中的I/O操作。
处理器40通常表示能够处理数据或解译和执行指令的任何类型或形式的处理单元。在某些实施方案中,处理器40可以接收来自软件应用程序或模块的指令。这些指令可使处理器40执行本文描述和/或示出的实施方案中的一个或多个实施方案的功能。例如,处理器40可执行本文所述的操作中的全部或一些和/或可以是用于执行本文所述的操作中的全部或一些的装置。处理器40还可执行本文描述和/或示出的任何其它操作、方法或过程和/或可以是用于执行本文描述和/或示出的任何其它操作、方法或过程的装置。
存储器50通常表示能够存储数据和/或其它计算机可读指令的任何类型或形式的易失性或非易失性存储设备或介质。示例包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、闪存存储器或任何其它合适的存储器设备。尽管并非必需,但是在某些实施方案中,计算系统1600可包括易失性存储器单元和非易失性存储设备两者。在一个示例中,实现隔离模块130的程序指令可被加载到存储器50中。
在某些实施方案中,除处理器40和存储器50之外,计算系统1600还可包括一个或多个组件或元件。例如,如图16所示,计算系统1600可包括存储器控制器1620、输入/输出(I/O)控制器1635和通信接口1645,它们中的每一者都可经由通信基础设施1605互连。通信基础设施1605通常表示能够促进计算设备的一个或多个组件之间的通信的任何类型或形式的基础设施。通信基础设施1605的示例包括但不限于通信总线(例如,工业标准架构(ISA)、外围组件互连(PCI)、PCI Express(PCIe)或类似的总线)和网络。
存储器控制器1620通常表示能够处理存储器或数据或者控制计算系统1600的一个或多个组件之间的通信的任何类型或形式的设备。例如,在某些实施方案中,存储器控制器1620可经由通信基础设施1605控制处理器40、存储器50和I/O控制器1635之间的通信。在某些实施方案中,存储器控制器1620可单独或结合其它元件来执行本文描述和/或示出的操作或特征中的一个或多个和/或可以是用于单独或与其它元件组合来执行本文描述和/或示出的操作或特征中的一个或多个的装置。
I/O控制器1635通常表示能够协调和/或控制计算设备的输入功能和输出功能的任何类型或形式的模块。例如,I/O控制器1635可以控制或促进计算系统1600的一个或多个元件之间的数据传送,所述元件诸如处理器40、存储器50、通信接口1645、显示适配器1615、输入接口1625和存储接口1640。
通信接口1645在广义上表示能够促进计算系统1600与一个或多个附加设备之间的通信的任何类型或形式的通信设备或适配器。例如,在某些实施方案中,通信接口1645可以促进计算系统1600与包括附加计算系统的私有或公共网络之间的通信。通信接口1645的示例包括但不限于有线网络接口(诸如网络接口卡)、无线网络接口(诸如无线网络接口卡)、调制解调器以及任何其它合适的接口。在至少一个实施方案中,通信接口1645可以经由到网络(诸如互联网)的直接链路来提供到远程服务器的直接连接。通信接口1645还可以通过例如局域网(诸如以太网网络)、个人区域网、电话或电缆网络、蜂窝电话连接、卫星数据连接或任何其它合适的连接来间接提供此类连接。
在某些实施方案中,通信接口1645还可以表示主机适配器,该主机适配器被配置为经由外部总线或通信信道来促进计算系统1600与一个或多个附加网络或存储设备之间的通信。主机适配器的示例包括但不限于:小型计算机系统接口(SCSI)主机适配器、通用串行总线(USB)主机适配器、电气与电子工程师协会(IEEE)1394主机适配器、串行高级技术附件(SATA)、串行SCSI(SAS)和外部SATA(eSATA)主机适配器、高级技术附件(ATA)和并行ATA(PATA)主机适配器、光纤信道接口适配器、以太网适配器等。通信接口1645还可允许计算系统1600参与分布式或远程计算。例如,通信接口1645可接收来自远程设备的指令或将指令发送到远程设备以供执行。
如图16所示,计算系统1600还可包括至少一个显示设备1610,该显示设备经由显示适配器1615耦接到通信基础设施1605。显示设备1610通常表示能够可视地显示由显示适配器1615转发的信息的任何类型或形式的设备。类似地,显示适配器1615通常表示被配置为转发来自通信基础设施1605(或来自帧缓冲器,如本领域所已知)的图形、文本和其它数据以在显示设备1610上显示的任何类型或形式的设备。
如图16所示,计算系统1600还可包括至少一个输入设备1630,该输入设备经由输入接口1625耦接到通信基础设施1605。输入设备1630通常表示能够向计算系统1600提供由计算机或人生成的输入的任何类型或形式的输入设备。输入设备1630的示例包括但不限于键盘、指向设备、语音识别设备或任何其它输入设备。
如图16所示,计算系统1600还可包括存储设备1650,该存储设备经由存储接口1640耦接到通信基础设施1605。存储设备1650通常表示能够存储数据和/或其它计算机可读指令的任何类型或形式的存储设备或介质。例如,存储设备1650可包括磁盘驱动器(例如,所谓的硬盘驱动器)、软盘驱动器、磁带驱动器、光盘驱动器、闪存驱动器等。存储接口1640通常表示用于在存储设备1650与计算系统1600的其它部件之间传送和/或传输数据的任何类型或形式的接口或设备。
在某些实施方案中,存储设备1650可被配置为对被配置为存储计算机软件、数据或其它计算机可读信息的可移除存储单元执行读取和/或写入。合适的可移除存储单元的示例包括但不限于软盘、磁带、光盘、闪存存储器设备等。存储设备1650还可包括用于允许将计算机软件、数据或其它计算机可读指令加载到计算系统1600中的其它类似结构或设备。例如,存储设备1650可被配置为读取和写入软件、数据或其它计算机可读信息。存储设备1650还可以是计算系统1600的一部分,或者可以是通过其它接口系统访问的独立设备。
可以将许多其它设备或子系统连接到计算系统1600。相反地,图16所示的组件和设备不必都存在以实践本文描述和/或示出的实施方案。上文提及的设备和子系统还可以按照与图16所示不同的方式互连。
计算系统1600还可以采用任何数量的软件配置、固件配置和/或硬件配置。例如,本文公开的实施方案中的一个或多个实施方案可被编码为计算机可读存储介质上的计算机程序(也被称为计算机软件、软件应用程序、计算机可读指令或计算机控制逻辑)。计算机可读存储介质的示例包括磁存储介质(例如,硬盘驱动器和软盘)、光学存储介质(例如,CD-ROM或DVD-ROM)、电子存储介质(例如,固态驱动器和闪存介质)等。此类计算机程序也可被传输至计算系统1600,以经由网络诸如互联网存储在存储器中或存储在载体介质上。
可以将包含计算机程序的计算机可读介质加载到计算系统1600中。然后,可将存储在计算机可读介质上的计算机程序的全部或一部分存储在存储器50和/或存储设备1650的各个部分中。当由处理器40执行时,加载到计算系统1600中的计算机程序可使处理器40执行本文描述和/或示出的实施方案中的一个或多个实施方案的功能和/或可使处理器40为用于执行本文描述和/或示出的实施方案中的一个或多个实施方案的功能的装置。除此之外或另选地,可在固件和/或硬件中实现本文描述和/或示出的实施方案中的一个或多个实施方案。例如,计算系统1600可被配置为适于实现本文公开的实施方案中的一个或多个实施方案的专用集成电路(ASIC)。
示例性联网环境
图17是根据本公开的一个实施方案的联网系统的框图,示出了各种计算设备如何经由网络进行通信。在某些实施方案中,附网存储(NAS)设备可被配置为使用各种协议诸如网络文件系统(NFS)、服务器消息块(SMB)或通用互联网文件系统(CIFS)来与集群110进行通信。
网络20通常表示能够促进多个计算设备之间的通信的任何类型或形式的计算机网络或体系结构。网络20可促进集群110与存储单元1720之间的通信。在某些实施方案中,并且参考图16的计算系统1600,通信接口诸如图16中的通信接口1645可用于提供集群110与网络20之间的连接性。应当注意,本文描述和/或示出的实施方案并非限于互联网或任何特定的基于网络的环境。例如,网络20可以是存储区域网络(SAN)。
在至少一个实施方案中,本文所公开的一个或多个实施方案中的全部或一部分可被编码为计算机程序并且加载到集群110、服务器30、客户端10和节点120(1)至120(N)或它们的任何组合上并加以执行。另外,本文所公开的一个或多个实施方案中的全部或一部分还可被编码为计算机程序、存储在客户端10、服务器30、集群110和/或节点120(1)至120(N)中并且分布在网络20上。
在一些示例中,图1A、图1B和图2中计算设备的全部或一部分可表示云计算或基于网络的环境的一部分。云计算环境可经由互联网提供各种服务和应用程序。这些基于云的服务(例如软件即服务、平台即服务、基础设施即服务等)可通过网页浏览器或其它远程接口访问。本文所述的各种功能可通过远程桌面环境或任何其它基于云的计算环境提供。
此外,本文所述的部件中的一个或多个部件可将数据、物理设备和/或物理设备的表示从一种形式转换为另一种形式。例如,客户端10、服务器30和/或节点120(1)至120(N)可转换计算设备、集群和/或服务器的行为,以便使得计算设备、集群和/或服务器优化I/O隔离操作。
1.一种方法,包括:
响应于确定节点不再是子集群的一部分,
将所述子集群中的另一个节点指定为竞争者节点;
所述竞争者节点访问矩阵,其中
所述矩阵包括用于确定集群中的多个协调点中的大多数协调点是否能够由所述子集群中的多个节点访问的信息;
基于所述访问,确定所述信息指示所述多个协调点中的大多数协调点能够由所述多个节点访问;以及
广播所述信息。
2.根据权利要求1所述的方法,其中
不再是所述子集群的一部分的所述节点被先前提供对所述多个协调点中的大多数协调点的访问。
3.根据权利要求1所述的方法,还包括:
在确定所述节点不再是所述子集群的一部分之后,并且在将所述另一个节点指定为所述竟争者节点之前,确定所述子集群中的任何节点都不能单独地提供对所述多个协调点中的大多数协调点的访问。
4.根据权利要求1所述的方法,其中
广播所述信息包括利用指示所述多个协调点中的大多数协调点能够由所述子集群中的所述多个节点访问的所述信息来更新所述矩阵,其中
所述信息被广播到所述集群,并且
所述信息还指示由竞争者节点执行的隔离竞争成功。
5.根据权利要求4所述的方法,还包括:
基于所述信息,禁止分区节点访问能够由所述子集群中的所述多个节点访问的所述多个协调点中的大多数协调点中的一个或多个协调点,其中
所述禁止防止在所述集群中发生预先存在的脑裂状况。
6.根据权利要求1所述的方法,其中
所述矩阵是协调点可达性矩阵(CPRM),并且
所述CPRM在所述集群中的所述多个节点中的所有节点上复制。
7.根据权利要求1所述的方法,其中
所述多个协调点包括
一个或多个协调器磁盘,或者
一个或多个协调点服务器。
8.一种存储程序指令的非暂态计算机可读存储介质,所述程序指令能够执行以:
响应于确定节点不再是子集群的一部分,
将所述子集群中的另一个节点指定为竞争者节点;
所述竞争者节点访问矩阵,其中
所述矩阵包括用于确定集群中的多个协调点中的大多数协调点是否能够由所述子集群中的多个节点访问的信息;
基于所述访问,确定所述信息指示所述多个协调点中的大多数协调点能够由所述多个节点访问;以及
广播所述信息。
9.根据权利要求8所述的非暂态计算机可读存储介质,其中
不再是所述子集群的一部分的所述节点被先前提供对所述多个协调点中的大多数协调点的访问。
10.根据权利要求8所述的非暂态计算机可读存储介质,还包括:
在确定所述节点不再是所述子集群的一部分之后,并且在将所述另一个节点指定为所述竟争者节点之前,确定所述子集群中的任何节点都不能单独地提供对所述多个协调点中的大多数协调点的访问。
11.根据权利要求8所述的非暂态计算机可读存储介质,其中
广播所述信息包括利用指示所述多个协调点中的大多数协调点能够由所述子集群中的所述多个节点访问的所述信息来更新所述矩阵,其中
所述信息被广播到所述集群,并且
所述信息还指示由竞争者节点执行的隔离竞争成功。
12.根据权利要求11所述的非暂态计算机可读存储介质,还包括:
基于所述信息,禁止分区节点访问能够由所述子集群中的所述多个节点访问的所述多个协调点中的大多数协调点中的一个或多个协调点,其中
所述禁止防止在所述集群中发生预先存在的脑裂状况。
13.根据权利要求8所述的非暂态计算机可读存储介质,其中
所述矩阵是协调点可达性矩阵(CPRM),并且
所述CPRM在所述集群中的所述多个节点中的所有节点上复制。
14.一种系统,包括:
一个或多个处理器;以及
存储器,所述存储器耦接到所述一个或多个处理器,其中所述存储器存储能够由所述一个或多个处理器执行的程序指令,所述程序指令用于:
响应于确定节点不再是子集群的一部分,
将所述子集群中的另一个节点指定为竞争者节点;
所述竞争者节点访问矩阵,其中
所述矩阵包括用于确定集群中的多个协调点中的大多数协调点是否能够由所述子集群中的多个节点访问的信息;
基于所述访问,确定所述信息指示所述多个协调点中的大多数协调点能够由所述多个节点访问;以及
广播所述信息。
15.根据权利要求14所述的系统,其中
不再是所述子集群的一部分的所述节点被先前提供对所述多个协调点中的大多数协调点的访问。
16.根据权利要求14所述的系统,还包括:
在确定所述节点不再是所述子集群的一部分之后,并且在将所述另一个节点指定为所述竟争者节点之前,确定所述子集群中的任何节点都不能单独地提供对所述多个协调点中的大多数协调点的访问。
17.根据权利要求14所述的系统,其中
广播所述信息包括利用指示所述多个协调点中的大多数协调点能够由所述子集群中的所述多个节点访问的所述信息来更新所述矩阵,其中
所述信息被广播到所述集群,并且
所述信息还指示由竞争者节点执行的隔离竞争成功。
18.根据权利要求17所述的系统,还包括:
基于所述信息,禁止分区节点访问能够由所述子集群中的所述多个节点访问的所述多个协调点中的大多数协调点中的一个或多个协调点,其中
所述禁止防止在所述集群中发生预先存在的脑裂状况。
19.根据权利要求14所述的系统,其中
所述矩阵是协调点可达性矩阵(CPRM),并且
所述CPRM在所述集群中的所述多个节点中的所有节点上复制。
20.根据权利要求14所述的系统,其中
所述多个协调点包括
一个或多个协调器磁盘,或者
一个或多个协调点服务器。
1.一种方法,包括:
响应于集群被划分为多个网络分区,
使用所述多个网络分区中的第一网络分区中的第一节点确定所述第一节点是否赢得多个协调点中的一个或多个协调点,
将所述第一节点的所述确定传输至所述第一网络分区中的第二节点,以及
使用所述第二节点确定所述第二节点是否赢得除了所述一个或多个协调点之外的一个或多个其它协调点。
2.根据权利要求1所述的方法,其中
使用所述第二节点的所述确定还包括
所述第一节点和所述第二节点一起赢得所述多个协调点中的大多数协调点。
3.根据权利要求1所述的方法,其中
赢得所述一个或多个协调点包括
访问所述一个或多个协调点;
从所述一个或多个协调点中顶出不在所述第一网络分区中的一个或多个节点的一个或多个注册密钥;以及
抢占所述一个或多个节点以赢得所述一个或多个协调点。
4.根据权利要求2所述的方法,还包括
如果所述第一节点和所述第二节点未一起赢得所述多个协调点中的大多数协调点,将所述第二节点的所述确定传输至第三节点,其中
所述第三节点是所述第一网络分区的一部分。
5.根据权利要求1所述的方法,其中
使用所述第一节点的所述确定包括使用所述第一节点执行第一隔离竞争,并且
使用所述第二节点的所述确定包括基于传输至所述第二节点的所述第一节点的所述确定使用所述第二节点执行第二隔离竞争。
6.根据权利要求1所述的方法,其中
使用所述第一节点的所述确定和使用所述第二节点的所述确定包括访问矩阵,其中
所述矩阵是协调点可达性矩阵(CPRM),并且
所述CPRM在所述集群中的多个节点中的所有节点上复制。
7.根据权利要求1所述的方法,其中
所述多个协调点包括
一个或多个协调器磁盘,或者
一个或多个协调点服务器。
8.根据权利要求1所述的方法,其中
所述第一节点被指定为第一竞争者节点,并且
在所述第一竞争者节点向所述第二节点传输所述确定之后,
所述第二节点被指定为第二竞争者节点。
9.一种存储程序指令的非暂态计算机可读存储介质,所述程序指令能够执行以:
响应于集群被划分为多个网络分区,
使用所述多个网络分区中的第一网络分区中的第一节点确定所述第一节点是否赢得多个协调点中的一个或多个协调点,
将所述第一节点的所述确定传输至所述第一网络分区中的第二节点,以及
使用所述第二节点确定所述第二节点是否赢得除了所述一个或多个协调点之外的一个或多个其它协调点。
10.根据权利要求9所述的非暂态计算机可读存储介质,其中
使用所述第二节点的所述确定还包括
所述第一节点和所述第二节点一起赢得所述多个协调点中的大多数协调点。
11.根据权利要求9所述的非暂态计算机可读存储介质,其中
赢得所述一个或多个协调点包括
访问所述一个或多个协调点;
从所述一个或多个协调点中顶出不在所述第一网络分区中的一个或多个节点的一个或多个注册密钥;以及
抢占所述一个或多个节点以赢得所述一个或多个协调点。
12.根据权利要求10所述的非暂态计算机可读存储介质,还包括
如果所述第一节点和所述第二节点未一起赢得所述多个协调点中的大多数协调点,将所述第二节点的所述确定传输至第三节点,其中
所述第三节点是所述第一网络分区的一部分。
13.根据权利要求9所述的非暂态计算机可读存储介质,其中
使用所述第一节点的所述确定包括使用所述第一节点执行第一隔离竞争,并且
使用所述第二节点的所述确定包括基于传输至所述第二节点的所述第一节点的所述确定使用所述第二节点执行第二隔离竞争。
14.根据权利要求9所述的非暂态计算机可读存储介质,其中
使用所述第一节点的所述确定和使用所述第二节点的所述确定包括访问矩阵,其中
所述矩阵是协调点可达性矩阵(CPRM),并且
所述CPRM在所述集群中的多个节点中的所有节点上复制。
15.一种系统,包括:
一个或多个处理器;以及
存储器,所述存储器耦接到所述一个或多个处理器,其中所述存储器存储能够由所述一个或多个处理器执行的程序指令,所述程序指令用于:
响应于集群被划分为多个网络分区,
使用所述多个网络分区中的第一网络分区中的第一节点确定所述第一节点是否赢得多个协调点中的一个或多个协调点,
将所述第一节点的所述确定传输至所述第一网络分区中的第二节点,并且
使用所述第二节点确定所述第二节点是否赢得除了所述一个或多个协调点之外的一个或多个其它协调点。
16.根据权利要求15所述的系统,其中
使用所述第二节点的所述确定还包括
所述第一节点和所述第二节点一起赢得所述多个协调点中的大多数协调点。
17.根据权利要求15所述的系统,其中
赢得所述一个或多个协调点包括
访问所述一个或多个协调点;
从所述一个或多个协调点中顶出不在所述第一网络分区中的一个或多个节点的一个或多个注册密钥;以及
抢占所述一个或多个节点以赢得所述一个或多个协调点。
18.根据权利要求16所述的系统,还包括
如果所述第一节点和所述第二节点未一起赢得所述多个协调点中的大多数协调点,将所述第二节点的所述确定传输至第三节点,其中
所述第三节点是所述第一网络分区的一部分。
19.根据权利要求15所述的系统,其中
使用所述第一节点的所述确定包括使用所述第一节点执行第一隔离竞争,并且
使用所述第二节点的所述确定包括基于传输至所述第二节点的所述第一节点的所述确定使用所述第二节点执行第二隔离竞争。
20.根据权利要求15所述的系统,其中
所述第一节点被指定为第一竞争者节点,并且
在所述第一竞争者节点向所述第二节点传输所述确定之后,
所述第二节点被指定为第二竞争者节点。
尽管已结合若干实施方案描述了本公开,但是本公开并非旨在限于本文阐述的具体形式。相反地,本公开旨在覆盖可被合理地包括在由所附权利要求书限定的本公开的范围内的此类替代物、修改形式和等同物。
Claims (15)
1.一种计算机实现的方法,包括:
第二节点从第一节点接收矩阵,其中所述矩阵包括指示所述第一节点对多个协调点中的每个协调点的可访问性的信息,其中所述多个协调点包括集群中的所有协调点;
所述第二节点更新所述矩阵以包括指示所述第二节点对所述多个协调点中的每个协调点的可访问性的信息;
将所更新的矩阵传输至一个或多个其它节点;其中所述多个协调点允许访问由所述第一节点、所述第二节点和所述一个或多个其它节点共享的一个或多个存储设备;
其中每个所述协调点能够隔离一个或多个节点对所述一个或多个存储设备的访问。
2.根据权利要求1所述的计算机实现的方法,其中
响应于所述第一节点加入所述集群的尝试,所述第二节点接收所述矩阵。
3.根据权利要求2所述的计算机实现的方法,还包括
确定所述第一节点能够与所述第二节点组合访问所述多个协调点中的大多数协调点;以及
基于所述确定加入所述集群。
4.根据权利要求2所述的计算机实现的方法,还包括:
访问配置文件;以及
基于所述配置文件中的信息确定所述多个协调点的总数。
5.根据权利要求4所述的计算机实现的方法,还包括:
确定所述一个或多个其它节点已经是所述集群的一部分,其中
所述第一节点不是所述一个或多个其它节点的一部分;以及
请求来自所述集群的第二矩阵,其中
所述第二矩阵包括指示所述一个或多个其它节点中的每一个节点对所述多个协调点中的每个协调点的可访问性的信息,并且
所述多个协调点是所述集群的一部分。
6.根据权利要求1所述的计算机实现的方法,其中
所述多个协调点包括
一个或多个协调器磁盘,或者
一个或多个协调点服务器。
7.一种计算机系统,其包括:
一个或多个处理器;
非暂态计算机可读存储介质,其存储能够由所述一个或多个处理器执行的程序指令用以:
从第一节点接收矩阵,其中所述矩阵包括指示所述第一节点对多个协调点中的每个协调点的可访问性的信息,其中所述多个协调点包括集群中的所有协调点;
更新所述矩阵以包括指示第二节点对所述多个协调点中的每个协调点的可访问性的信息;以及
将所更新的矩阵传输至一个或多个其它节点,其中所述多个协调点允许访问由所述第一节点、所述第二节点和所述一个或多个其它节点共享的一个或多个存储设备;
其中每个所述协调点能够隔离一个或多个节点对所述一个或多个存储设备的访问。
8.根据权利要求7所述的计算机系统,其中
响应于所述第一节点尝试加入所述集群,所述矩阵被更新。
9.根据权利要求8所述的计算机系统,其中所述非暂态计算机可读存储介质存储能够由所述一个或多个处理器执行的额外程序指令用以:
确定所述第一节点能够与所述第二节点组合访问所述多个协调点中的大多数协调点;以及
基于所述确定加入所述集群。
10.根据权利要求8所述的计算机系统,其中所述非暂态计算机可读存储介质存储能够由所述一个或多个处理器执行的额外程序指令用以:
访问配置文件;以及
基于所述配置文件中的信息确定所述多个协调点的总数。
11.根据权利要求10所述的计算机系统,其中所述非暂态计算机可读存储介质存储能够由所述一个或多个处理器执行的额外程序指令用以:
确定所述一个或多个其它节点已经是所述集群的一部分,并且所述第一节点不是所述一个或多个其它节点的一部分;以及
请求来自所述集群的第二矩阵,其中
所述第二矩阵包括指示所述一个或多个其它节点中的每一个节点对所述多个协调点中的每个协调点的可访问性的信息。
12.一种计算机系统,包括:
一个或多个处理器;以及
存储器,所述存储器耦接到所述一个或多个处理器,其中所述存储器存储能够由所述一个或多个处理器执行的程序指令,所述程序指令用于:
从第一节点接收矩阵,其中所述矩阵包括指示所述第一节点对多个协调点中的每个协调点的可访问性的信息,其中所述多个协调点包括集群中的所有协调点;
更新所述矩阵以包括指示第二节点对所述多个协调点中的每个协调点的可访问性的信息;
将所更新的矩阵传输至一个或多个其它节点;
其中所述多个协调点允许访问由所述第一节点和所述一个或多个其它节点共享的一个或多个存储设备;
其中每个所述协调点能够隔离一个或多个节点对所述一个或多个存储设备的访问。
13.根据权利要求12所述的计算机系统,其中
响应所述第一节点尝试加入所述集群,所述第二节点接收所述矩阵。
14.根据权利要求12所述的计算机系统,其中所述存储器还存储能够由所述一个或多个处理器执行的程序指令,用于:
确定所述第一节点能够与所述第二节点组合访问所述多个协调点中的大多数协调点;以及
基于所述确定加入所述集群。
15.根据权利要求13所述的计算机系统,其中所述存储器还存储能够由所述一个或多个处理器执行的程序指令,用于:
访问配置文件;以及
基于所述配置文件中的信息确定所述多个协调点的总数。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/870,956 US10341252B2 (en) | 2015-09-30 | 2015-09-30 | Partition arbitration optimization |
US14/870,920 US10320703B2 (en) | 2015-09-30 | 2015-09-30 | Preventing data corruption due to pre-existing split brain |
US14/870390 | 2015-09-30 | ||
US14/870,390 US10320702B2 (en) | 2015-09-30 | 2015-09-30 | Input/output fencing optimization |
US14/870920 | 2015-09-30 | ||
US14/870956 | 2015-09-30 | ||
PCT/US2016/054306 WO2017058989A1 (en) | 2015-09-30 | 2016-09-29 | Input/output fencing optimization |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108551765A CN108551765A (zh) | 2018-09-18 |
CN108551765B true CN108551765B (zh) | 2022-03-08 |
Family
ID=58407514
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680066175.XA Active CN108551765B (zh) | 2015-09-30 | 2016-09-29 | 用于输入/输出隔离优化的方法、系统 |
Country Status (5)
Country | Link |
---|---|
US (3) | US10341252B2 (zh) |
EP (1) | EP3357191B1 (zh) |
JP (1) | JP2018534665A (zh) |
CN (1) | CN108551765B (zh) |
WO (1) | WO2017058989A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10114712B2 (en) * | 2016-06-29 | 2018-10-30 | Microsoft Technology Licensing, Llc | Failure detection via implicit leases in distributed computing systems |
US10055315B2 (en) | 2016-06-29 | 2018-08-21 | Microsoft Technology Licensing, Llc | Failure monitoring in distributed computing systems |
US10432713B2 (en) | 2016-06-30 | 2019-10-01 | Veritas Technologies Llc | Application aware input/output fencing |
US11079971B2 (en) * | 2017-03-31 | 2021-08-03 | Veritas Technologies Llc | Input/output (i/o) fencing without dedicated arbitrators |
CN109257195B (zh) | 2017-07-12 | 2021-01-15 | 华为技术有限公司 | 集群中节点的故障处理方法及设备 |
US10742724B2 (en) * | 2017-08-17 | 2020-08-11 | Hewlett Packard Enterprise Development Lp | Cluster computer system with failover handling |
US10496153B2 (en) | 2017-10-27 | 2019-12-03 | EMC IP Holding Company LLC | Method and system for binding chassis and components |
US11075925B2 (en) | 2018-01-31 | 2021-07-27 | EMC IP Holding Company LLC | System and method to enable component inventory and compliance in the platform |
US10693722B2 (en) * | 2018-03-28 | 2020-06-23 | Dell Products L.P. | Agentless method to bring solution and cluster awareness into infrastructure and support management portals |
US10514907B2 (en) | 2018-03-28 | 2019-12-24 | EMC IP Holding Company LLC | System and method for out-of-the-box solution-level management via logical architecture awareness |
US10754708B2 (en) | 2018-03-28 | 2020-08-25 | EMC IP Holding Company LLC | Orchestrator and console agnostic method to deploy infrastructure through self-describing deployment templates |
US10795756B2 (en) | 2018-04-24 | 2020-10-06 | EMC IP Holding Company LLC | System and method to predictively service and support the solution |
US11086738B2 (en) | 2018-04-24 | 2021-08-10 | EMC IP Holding Company LLC | System and method to automate solution level contextual support |
US11599422B2 (en) | 2018-10-16 | 2023-03-07 | EMC IP Holding Company LLC | System and method for device independent backup in distributed system |
CN109672559A (zh) * | 2018-12-04 | 2019-04-23 | 武汉烽火信息集成技术有限公司 | 一种集群系统中集群成员的仲裁方法及系统 |
US10862761B2 (en) | 2019-04-29 | 2020-12-08 | EMC IP Holding Company LLC | System and method for management of distributed systems |
US11108700B2 (en) * | 2019-06-28 | 2021-08-31 | Oracle International Corporation | Method and system to implement messaging for cluster elections |
US11593583B2 (en) | 2019-06-28 | 2023-02-28 | Oracle International Corporation | Method and system to implement cluster failure prediction to facilitate split brain resolution |
US11301557B2 (en) | 2019-07-19 | 2022-04-12 | Dell Products L.P. | System and method for data processing device management |
CN112904239B (zh) * | 2019-11-19 | 2023-02-17 | 中国商用飞机有限责任公司 | 电缆导通网络确定方法、装置、存储介质及设备 |
US11544228B2 (en) * | 2020-05-07 | 2023-01-03 | Hewlett Packard Enterprise Development Lp | Assignment of quora values to nodes based on importance of the nodes |
CN111708668B (zh) * | 2020-05-29 | 2023-07-07 | 北京金山云网络技术有限公司 | 集群故障的处理方法、装置及电子设备 |
US20230090567A1 (en) * | 2021-09-23 | 2023-03-23 | Advanced Micro Devices, Inc. | Device and method for two-stage transitioning between reduced power states |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5999712A (en) * | 1997-10-21 | 1999-12-07 | Sun Microsystems, Inc. | Determining cluster membership in a distributed computer system |
US7631066B1 (en) * | 2002-03-25 | 2009-12-08 | Symantec Operating Corporation | System and method for preventing data corruption in computer system clusters |
CN103189847A (zh) * | 2010-11-05 | 2013-07-03 | 国际商业机器公司 | 集群式数据处理系统中的存储装置管理 |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5828889A (en) * | 1996-05-31 | 1998-10-27 | Sun Microsystems, Inc. | Quorum mechanism in a two-node distributed computer system |
US6192483B1 (en) | 1997-10-21 | 2001-02-20 | Sun Microsystems, Inc. | Data integrity and availability in a distributed computer system |
US6279032B1 (en) | 1997-11-03 | 2001-08-21 | Microsoft Corporation | Method and system for quorum resource arbitration in a server cluster |
US20020122589A1 (en) | 1999-11-29 | 2002-09-05 | Donald M. Reiman | Constructing profiles to compensate for non-linearities in image capture |
US6862613B1 (en) | 2000-01-10 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus for managing operations of clustered computer systems |
US6757836B1 (en) | 2000-01-10 | 2004-06-29 | Sun Microsystems, Inc. | Method and apparatus for resolving partial connectivity in a clustered computing system |
US6965936B1 (en) | 2000-12-06 | 2005-11-15 | Novell, Inc. | Method for detecting and resolving a partition condition in a cluster |
CN1320483C (zh) | 2001-09-21 | 2007-06-06 | 泛伺服公司 | 用于在多节点环境中实施日志处理的系统和方法 |
US20040153558A1 (en) | 2002-10-31 | 2004-08-05 | Mesut Gunduc | System and method for providing java based high availability clustering framework |
US8041735B1 (en) * | 2002-11-01 | 2011-10-18 | Bluearc Uk Limited | Distributed file system and method |
US7451359B1 (en) * | 2002-11-27 | 2008-11-11 | Oracle International Corp. | Heartbeat mechanism for cluster systems |
KR100553920B1 (ko) | 2003-02-13 | 2006-02-24 | 인터내셔널 비지네스 머신즈 코포레이션 | 컴퓨터 클러스터 운영 방법 |
US20040210656A1 (en) * | 2003-04-16 | 2004-10-21 | Silicon Graphics, Inc. | Failsafe operation of storage area network |
US7120821B1 (en) | 2003-07-24 | 2006-10-10 | Unisys Corporation | Method to revive and reconstitute majority node set clusters |
US7231543B2 (en) | 2004-01-14 | 2007-06-12 | Hewlett-Packard Development Company, L.P. | Systems and methods for fault-tolerant processing with processor regrouping based on connectivity conditions |
US7320085B2 (en) * | 2004-03-09 | 2008-01-15 | Scaleout Software, Inc | Scalable, software-based quorum architecture |
US7478263B1 (en) * | 2004-06-01 | 2009-01-13 | Network Appliance, Inc. | System and method for establishing bi-directional failover in a two node cluster |
US7590737B1 (en) * | 2004-07-16 | 2009-09-15 | Symantec Operating Corporation | System and method for customized I/O fencing for preventing data corruption in computer system clusters |
US7711820B2 (en) * | 2004-11-08 | 2010-05-04 | Cisco Technology, Inc. | High availability for intelligent applications in storage networks |
US7516181B1 (en) | 2005-02-08 | 2009-04-07 | Microstrategy, Inc. | Technique for project partitioning in a cluster of servers |
US7480816B1 (en) | 2005-08-04 | 2009-01-20 | Sun Microsystems, Inc. | Failure chain detection and recovery in a group of cooperating systems |
US20080209136A1 (en) * | 2007-02-28 | 2008-08-28 | Yanling Qi | System and method of storage system assisted i/o fencing for shared storage configuration |
US7778157B1 (en) * | 2007-03-30 | 2010-08-17 | Symantec Operating Corporation | Port identifier management for path failover in cluster environments |
US7886182B1 (en) | 2007-04-19 | 2011-02-08 | Network Appliances, Inc. | Enhanced coordinated cluster recovery |
US7913050B2 (en) * | 2007-06-26 | 2011-03-22 | Oracle International Corporation | Fencing using a hierarchical relationship |
US8024432B1 (en) * | 2008-06-27 | 2011-09-20 | Symantec Corporation | Method and apparatus for partitioning a computer cluster through coordination point devices |
US8073816B1 (en) * | 2009-04-20 | 2011-12-06 | Netapp, Inc. | Volume format conversion |
US8145938B2 (en) * | 2009-06-01 | 2012-03-27 | Novell, Inc. | Fencing management in clusters |
CN101707742B (zh) * | 2009-11-03 | 2012-07-11 | 普天信息技术研究院有限公司 | 一种集群通信系统中实现动态重组的方法 |
US8887266B2 (en) | 2010-01-08 | 2014-11-11 | Board Of Trustees Of Michigan State University | Method for computing network reachability |
US8417899B2 (en) * | 2010-01-21 | 2013-04-09 | Oracle America, Inc. | System and method for controlling access to shared storage device |
US8443231B2 (en) | 2010-04-12 | 2013-05-14 | Symantec Corporation | Updating a list of quorum disks |
US8381017B2 (en) | 2010-05-20 | 2013-02-19 | International Business Machines Corporation | Automated node fencing integrated within a quorum service of a cluster infrastructure |
US9047136B2 (en) | 2010-06-11 | 2015-06-02 | Oracle International Corporation | Method and system for migrating the state of a virtual cluster |
US9146822B2 (en) | 2010-06-30 | 2015-09-29 | Symantec Corporation | Cluster configuration systems and methods |
US8108715B1 (en) * | 2010-07-02 | 2012-01-31 | Symantec Corporation | Systems and methods for resolving split-brain scenarios in computer clusters |
WO2012037518A1 (en) * | 2010-09-17 | 2012-03-22 | Oracle International Corporation | System and method for facilitating protection against run-away subnet manager instances in a middleware machine environment |
US8495323B1 (en) * | 2010-12-07 | 2013-07-23 | Symantec Corporation | Method and system of providing exclusive and secure access to virtual storage objects in a virtual machine cluster |
US8578204B1 (en) * | 2010-12-29 | 2013-11-05 | Emc Corporation | Witness facility for distributed storage system |
US8560628B2 (en) * | 2011-01-11 | 2013-10-15 | International Business Machines Corporation | Supporting autonomous live partition mobility during a cluster split-brained condition |
WO2012116117A2 (en) * | 2011-02-22 | 2012-08-30 | Sandisk Enterprise Ip Llc | Storage management and acceleration of storage media in clusters |
US9098392B1 (en) * | 2011-04-29 | 2015-08-04 | Symantec Corporation | Systems and methods for changing fencing modes in clusters |
US8743680B2 (en) | 2011-08-12 | 2014-06-03 | International Business Machines Corporation | Hierarchical network failure handling in a clustered node environment |
US8595546B2 (en) * | 2011-10-28 | 2013-11-26 | Zettaset, Inc. | Split brain resistant failover in high availability clusters |
US8935205B2 (en) * | 2011-11-16 | 2015-01-13 | Sap Ag | System and method of performing snapshot isolation in distributed databases |
US10706021B2 (en) | 2012-01-17 | 2020-07-07 | Oracle International Corporation | System and method for supporting persistence partition discovery in a distributed data grid |
US8719225B1 (en) | 2012-01-17 | 2014-05-06 | Amazon Technologies, Inc. | System and method for log conflict detection and resolution in a data store |
US8738701B2 (en) | 2012-02-28 | 2014-05-27 | Microsoft Corporation | Arbitration of disk ownership in a storage pool |
US9146705B2 (en) * | 2012-04-09 | 2015-09-29 | Microsoft Technology, LLC | Split brain protection in computer clusters |
US9753954B2 (en) | 2012-09-14 | 2017-09-05 | Cloudera, Inc. | Data node fencing in a distributed file system |
US20140173330A1 (en) | 2012-12-14 | 2014-06-19 | Lsi Corporation | Split Brain Detection and Recovery System |
JP6056554B2 (ja) * | 2013-03-04 | 2017-01-11 | 日本電気株式会社 | クラスタシステム |
US9672115B2 (en) * | 2013-08-26 | 2017-06-06 | Vmware, Inc. | Partition tolerance in cluster membership management |
US10664495B2 (en) * | 2014-09-25 | 2020-05-26 | Oracle International Corporation | System and method for supporting data grid snapshot and federation |
WO2016106682A1 (zh) * | 2014-12-31 | 2016-07-07 | 华为技术有限公司 | 一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统 |
US9571968B1 (en) * | 2015-07-21 | 2017-02-14 | International Business Machines Corporation | Geo-fence management using a cluster analysis technique |
-
2015
- 2015-09-30 US US14/870,956 patent/US10341252B2/en active Active
- 2015-09-30 US US14/870,920 patent/US10320703B2/en active Active
- 2015-09-30 US US14/870,390 patent/US10320702B2/en active Active
-
2016
- 2016-09-29 WO PCT/US2016/054306 patent/WO2017058989A1/en active Application Filing
- 2016-09-29 JP JP2018515776A patent/JP2018534665A/ja not_active Ceased
- 2016-09-29 CN CN201680066175.XA patent/CN108551765B/zh active Active
- 2016-09-29 EP EP16787955.0A patent/EP3357191B1/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5999712A (en) * | 1997-10-21 | 1999-12-07 | Sun Microsystems, Inc. | Determining cluster membership in a distributed computer system |
US7631066B1 (en) * | 2002-03-25 | 2009-12-08 | Symantec Operating Corporation | System and method for preventing data corruption in computer system clusters |
CN103189847A (zh) * | 2010-11-05 | 2013-07-03 | 国际商业机器公司 | 集群式数据处理系统中的存储装置管理 |
Also Published As
Publication number | Publication date |
---|---|
US20170093647A1 (en) | 2017-03-30 |
US10320702B2 (en) | 2019-06-11 |
US10341252B2 (en) | 2019-07-02 |
US20170094003A1 (en) | 2017-03-30 |
US20170093746A1 (en) | 2017-03-30 |
US10320703B2 (en) | 2019-06-11 |
EP3357191B1 (en) | 2020-11-25 |
WO2017058989A1 (en) | 2017-04-06 |
CN108551765A (zh) | 2018-09-18 |
JP2018534665A (ja) | 2018-11-22 |
EP3357191A1 (en) | 2018-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108551765B (zh) | 用于输入/输出隔离优化的方法、系统 | |
US10990462B2 (en) | Application aware input/output fencing | |
US10412066B1 (en) | Hierarchical input/output fencing in clustered environments | |
US7953890B1 (en) | System and method for switching to a new coordinator resource | |
US11271814B2 (en) | Online capacity-expanding and online capacity-reducing methods and apparatuses for distributed consensus system | |
CN107526536B (zh) | 用于管理存储系统的方法和系统 | |
CN109828868B (zh) | 数据存储方法、装置、管理设备和双活数据存储系统 | |
US11232007B2 (en) | Server system and method of switching server | |
US10127124B1 (en) | Performing fencing operations in multi-node distributed storage systems | |
US8024432B1 (en) | Method and apparatus for partitioning a computer cluster through coordination point devices | |
US10936224B1 (en) | Cluster controller selection for shared storage clusters | |
US20170270015A1 (en) | Cluster Arbitration Method and Multi-Cluster Cooperation System | |
US8060773B1 (en) | Systems and methods for managing sub-clusters within a multi-cluster computing system subsequent to a network-partition event | |
CN110612510B (zh) | 无需专用仲裁器的输入/输出(i/o)隔离 | |
US8972777B2 (en) | Method and system for storage management | |
US20190058762A1 (en) | Cluster computer system | |
US10382255B1 (en) | Custom promotion tiers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |