JP2018534665A - 入力/出力フェンシングの最適化 - Google Patents

入力/出力フェンシングの最適化 Download PDF

Info

Publication number
JP2018534665A
JP2018534665A JP2018515776A JP2018515776A JP2018534665A JP 2018534665 A JP2018534665 A JP 2018534665A JP 2018515776 A JP2018515776 A JP 2018515776A JP 2018515776 A JP2018515776 A JP 2018515776A JP 2018534665 A JP2018534665 A JP 2018534665A
Authority
JP
Japan
Prior art keywords
node
cluster
nodes
coordination
coordination points
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.)
Ceased
Application number
JP2018515776A
Other languages
English (en)
Other versions
JP2018534665A5 (ja
Inventor
ガロット・ジャイ
カタル・アモール・エス
ダス・ウディプタ
ペシュウェ・プラナフ
Original Assignee
ベリタス テクノロジーズ エルエルシー
ベリタス テクノロジーズ エルエルシー
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ベリタス テクノロジーズ エルエルシー, ベリタス テクノロジーズ エルエルシー filed Critical ベリタス テクノロジーズ エルエルシー
Publication of JP2018534665A publication Critical patent/JP2018534665A/ja
Publication of JP2018534665A5 publication Critical patent/JP2018534665A5/ja
Ceased legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/74Admission control; Resource allocation measures in reaction to resource unavailability
    • H04L47/746Reaction triggered by a failure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2046Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/2053Error 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/2094Redundant storage or storage space
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0806Configuration setting for initial configuration or provisioning, e.g. plug-and-play
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5041Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the time relationship between creation and deployment of a service
    • H04L41/5054Automatic deployment of services triggered by the service manager, e.g. service implementation by automatic configuration of network components
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/288Distributed intermediate devices, i.e. intermediate devices for interaction with other intermediate devices on the same level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery 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)フェンシング動作を最適化するための多様なシステム、方法、及びプロセスが提示される。行列が生成される。行列は、ノードによる1つ又は2つ以上のコーディネーションポイントのアクセス可能性を示す情報を含む。次いで、方法は、行列を1つ又は2つ以上の他のノードに送信する。加えて、ノードがもはやサブクラスタの一部ではないと決定したことに応答して、サブクラスタ内の別のノードが競争者ノードとして指定される。競争者ノードは行列にアクセスし、行列は、クラスタ内の大半のコーディネーションポイントがサブクラスタ内のノードによってアクセス可能であるかどうかを決定するための情報を含む。アクセスに基づいて、情報が、大半のコーディネーションポイントがノードによってアクセス可能であることを示している決定がなされる。次いで、情報はブロードキャストされる。更に、クラスタが複数のネットワークパーティションにパーティション化されたことに応答して、第1のネットワークパーティション内の第1のノードを使用して、第1のノードが1つ又は2つ以上のコーディネーションポイントを獲得するかどうかの決定がなされる。次いで、第1のノードの決定は、第1のネットワークパーティション内の第2のノードに送信される。更に、第2のノードを使用して、第2のノードが、第1のノードによって勝ち取られた1つ又は2つ以上のコーディネーションポイント以外の1つ又は2つ以上の他のコーディネーションポイントを勝ち取るかどうかの決定がなされる。

Description

本開示は、分散ストレージ及びコンピュータシステムに関する。特に、本開示は、コーディネーションポイントを実装するマルチノード分散ストレージシステムにおける入力/出力フェンシング動作の最適化に関する。
クラスタは、処理能力及びストレージリソースを提供するために単一のエンティティとして協働するいくつかのノード(例えばコンピューティングデバイス)を有する分散コンピュータシステムである。クラスタにおいて、コンピュータシステム(例えば、サーバ)の処理負荷は、典型的には、複数のコンピュータ(又はノード)に分散され、それにより、単一の障害ポイントを排除(又は最小化)する。したがって、クラスタ上で実行されているアプリケーション及び/又はプログラムは、クラスタ内の1つのコンピュータ(又はノード)に問題があっても引続き機能することができる。
入力/出力(I/O)フェンシング(又はより簡単には、フェンシング)とは、ノードが誤動作する(又は故障したように見える)場合に、クラスタのノードを分離し、及び/又はクラスタの共有リソースを保護するプロセスを指す。クラスタが複数のノードを有する場合、ノードのうちの1つがある時点で障害が生じる可能性がある。障害が生じているノードは、クラスタ内のその他のノードによって使用されている(及び必要とされている)共有ストレージなどの共有リソースを制御することができる。
クラスタは、(上記のように)ノードに障害が生じたときに是正措置を講じることができなければならない。しかし、例えば、異なるサブクラスタ又はネットワークパーティション(クラスタのうちの)内の2つのノードが、非協調的な方法で共有ストレージを制御しようと試みると、データの破損が発生する可能性がある。フェンシングを使用して障害が生じているノードを無効にするか、共有ストレージへのアクセスを禁止することにより、データの整合性を確保し、データの破損を防ぐことができる。したがって、フェンシングが、共有ストレージへの協調されていないアクセスを防止するために使用され得る。
コーディネーションポイント(CP)が、フェンシング動作を支援するために、クラスタ内に実装され得る。コーディネーションポイントは、クラスタ内の他のノードから共有ストレージ(例えば、データドライブ)をフェンシングオフすることを許可されているノードを決定するためのロックメカニズムを提供する。例えば、ノードは、そのノードが共有ストレージからピアノードをフェンシングすることが許可される前に、ピアノードの登録キーをコーディネーションポイントから取り出さなければならない。
「スプリットブレイン」とは、範囲が重複する2つの別個のデータセットの維持に起因して、データの可用性(例えば共有ストレージからの)が矛盾する状況を指す。例えば、かかる重複は、2つ又はそれ以上のサブクラスタ(クラスタのうちの)がそれぞれのデータセットを通信して同期させることができないネットワークパーティションに起因して、発生する可能性がある。各サブクラスタのデータセットは、他のサブクラスタからの他のデータセットとの協調なしに、独自の固有データセット更新によってクライアントに無作為にサービスすることができる。したがって、クラスタ内でスプリットブレイン状態が発生した場合、クラスタのどのサブ部分を継続して動作させるか(アービトレーションプロセスといい、又は単にアービトレーションという)の決定は、コーディネーションポイントを使用してフェンシング動作を実装することによってなされ得る。
ただし、フェンシング動作中の高可用性クラスタ内の1つ若しくは2つ以上のコーディネーションポイントの欠損(又はオフラインステータス)は、データ整合性の損失につながり、とりわけ、データ破損及び/又はアプリケーションのフェイルオーバーを引き起こす可能性がある。
本明細書では、かかるフェンシング動作を支援するためのコーディネーションポイントを実装する高可用性クラスタにおける入出力(I/O)フェンシング動作を最適化するための方法、システム、及びプロセスが開示される。一旦、かかる方法は、行列を生成することを含む。行列は、第1のノードによる複数のコーディネーションポイントのうちの各コーディネーションポイントのアクセス可能性を示す情報を含む。次いで、方法は、行列を1つ又は2つ以上の他のノード(例えばクラスタ内の)に送信する。
一実施形態では、行列は、第1のコーディネーションポイント到達可能性行列(CPRM)である。この例では、第1のノードは、クラスタに参加しようと試みており、かつ1つ又は2つ以上の他のノードはまた、第1のノードと共にクラスタに参加しようと試みている。方法は、第1のノードが、1つ又は2つ以上の他のノードと共同でコーディネーションポイントの大半にアクセスすることができることを決定し、決定に基づいてクラスタに参加することを決定する。この例では、第1のノードから1つ又は2つ以上の他のノードに送信された第1のCPRMが、1つ又は2つ以上の他のノードによって更新される。更新は、1つ又は2つ以上の他のノードの各々によるコーディネーションポイントの各々のアクセス可能性を示す情報を含む。
特定の実施形態では、方法は構成ファイルにアクセスし、構成ファイル内の情報に基づいて、コーディネーションポイントの合計数を決定する。方法はまた、1つ又は2つ以上の他のノードが、既にクラスタの一部であることを決定する。この例では、第1のノードが、1つ又は2つ以上の他のノードの一部ではないことを決定する。次いで、この方法は、クラスタから第2のCPRMを要求する。第2のCPRMは、1つ又は2つ以上の他のノードの各々によるコーディネーションポイントの各々のアクセス可能性を示す情報を含む。コーディネーションポイントはクラスタの一部であり、コーディネータディスク及び/又はコーディネーションポイントサーバを含む。
一部の実施形態では、方法は、第1のクラスタスナップショットと第1のCPRMからのコーディネーションポイントの合計数との積が、第2のクラスタスナップショットと第2のCPRMからのコーディネーションポイントの合計数との積に等しいことを決定する。方法はまた、第1のクラスタスナップショットと複数のコーディネーションポイントの合計数との積が、第1のクラスタスナップショット及び第2のスナップショットの組み合わせと複数のコーディネーションポイントの合計数との積以上であることを決定する。
一実施形態では、方法は、第1のCPRMを、第1のクラスタスナップショットと第2のクラスタスナップショットとの組み合わせに更新し、更新された第1のCPRMを、クラスタ内の第1のノードから1つ又は2つ以上の他のノードの各々に送信する。更新された第1のCPRMを受信すると、1つ又は2つ以上の他のノードのうちの各々が、第1と第2のクラスタスナップショットとの組み合わせに基づいて、第2のCPRMを更新する。
別の方法は、ノードがもはやサブクラスタの一部ではないと決定したことに応答して、サブクラスタ内の別のノードを競争者ノードとして指定する。競争者ノードが行列にアクセスすると、行列は、クラスタ内のコーディネーションポイントの大半がサブクラスタ内のノードによってアクセス可能であるかどうかを決定するための情報を含む。アクセスに基づいて、方法は、情報がコーディネーションポイントの大半がノードによってアクセス可能であることを示していることを決定し、情報をブロードキャストする。
一実施形態では、もはやサブクラスタの一部ではないノードが、複数のコーディネーションポイントの大半へのアクセスを以前に提供していた。この例では、ノードがもはやサブクラスタの一部ではないと決定した後で、別のノードを競争者ノードとして指定する前に、方法は、サブクラスタ内のいかなるノードも、コーディネーションポイントの大半へのアクセスを個別に提供することができないことを決定する。一部の実施形態では、情報をブロードキャストすることは、コーディネーションポイントの大半が、サブクラスタ内のノードによってアクセス可能であることを示す情報により、行列を更新することを含む。情報はクラスタにブロードキャストされ、競争者ノードによって実施されるフェンシング競争が成功したことを示す。
他の実施形態では、情報に基づいて、方法は、パーティション化されたノードが、サブクラスタ内のノードによってアクセス可能なコーディネーションポイントの大半のうちの1つ又は2つ以上のコーディネーションポイントにアクセスすることを禁止する。禁止は、既存のスプリットブレイン状態がクラスタ内で発生することを防止する。特定の実施形態では、行列はコーディネーションポイント到達可能性行列(CPRM)であり、CPRMはクラスタ内の全てのノードにわたって複製される。他の実施形態では、コーディネーションポイントは、1つ又は2つ以上のコーディネーションポイントサーバを含む。
一部の方法は、クラスタが複数のネットワークパーティションにパーティション化されていることに応答して、第1のネットワークパーティション内の第1のノードを使用して、第1のノードが1つ又は2つ以上のコーディネーションポイントを勝ち取るかどうかを決定することを含む。次いで、第1のノードの決定は、第1のネットワークパーティション内の第2のノードに送信される。更に、方法は、第2のノードを使用して、第2のノードが1つ又は2つ以上の他のコーディネーションポイント(第1のノードによって勝ち取られた)以外の1つ又は2つ以上の他のコーディネーションポイント勝ち取るかどうかを決定する。
一実施形態では、方法は、第2のノードを使用して、第1のノードと第2のノードとが共にコーディネーションポイントの大半を勝ち取るかどうかを決定する。この例では、1つ又は2つ以上のコーディネーションポイントを勝ち取ることは、1つ又は2つ以上のコーディネーションポイントにアクセスすることと、第1のネットワークパーティションにない1つ又は2つ以上のノードの1つ又は2つ以上の登録キーを、1つ又は2つ以上のコーディネーションポイントから取り出すことと、1つ又は2つ以上のノードが1つ又は2つ以上のコーディネーションポイントを勝ち取ることを阻止することと、を含む。
他の実施形態では、方法は、第1のノードと第2のノードとが、共に、複数のコーディネーションポイントのうちのコーディネーションポイントの大半を獲得していない場合、第2のノードの決定を第3のノードに送信する。第3のノードは、第1のネットワークパーティションの一部である。
一部の実施形態では、第1のノードを使用して決定することは、第1のノードを使用して、第1のフェンシング競争を実施することを含み、第2のノードを使用して決定することは、第2のノードを使用して、第2のノードに送信される第1のノードの決定に基づいて、第2のフェンシング競争を実施することを含む。
特定の実施形態では、第1のノードを使用して決定することと、第2のノードを使用して決定することとは、行列にアクセスすることを含む。行列は、コーディネーションポイント到達可能性行列(CPRM)であり、CPRMは、クラスタ内の複数のノードのうちの全てのノードにわたって複製される。一部の実施形態では、コーディネーションポイントは、1つ若しくは2つ以上のコーディネータディスク及び/又は1つ若しくは2つ以上のコーディネーションポイントサーバである。一実施形態では、第1のノードは第1の競争者ノードとして指定され、第1の競争者ノードがその決定を第2のノードに送信した後、第2のノードは第2の競争者ノードとして指定される。
前述の内容は概要であり、したがって必然的に、簡略化、一般化、及び詳細の省略を含み、その結果として、当業者であれば、その概要が例示的であるにすぎず、なんら限定的ではないことがわかるであろう。請求項によってのみ規定されるような、本発明の他の態様、創意に富んだ機能、及び利点は、下記に示す非限定的な詳細な説明において明瞭になるであろう。
本開示は、添付図面を参照することによってより良く理解され得、そして、それの大半の対象、機能、及び利点が当業者に明らかにされる。
本開示の一実施形態に従う、コンピューティングシステムのブロック図である。
本開示の一実施形態に従う、高可用性クラスタのブロック図である。
本開示の一実施形態に従う、分散ストレージ環境で実装される高可用性クラスタのブロック図である。
本開示の一実施形態に従う、コーディネーションポイントを使用してフェンシング動作を実施するクラスタ内のノードのブロック図である。
本開示の一実施形態に従う、コーディネーションポイントを使用してフェンシング動作を実施するクラスタ内のノードのブロック図である。
本開示の一実施形態に従う、第1のコーディネーションポイント到達可能性行列(CPRM)の表である。
本開示の一実施形態に従う、クラスタを形成してそれに参加するノードのプロセスのフロー図である。
本開示の一実施形態に従う、実行されているクラスタに参加するノードのプロセスのフロー図である。
本開示の一実施形態に従う、クラスタを離脱するノードのブロック図である。
本開示の一実施形態に従う、既存のスプリットブレイン条件を有するクラスタのブロック図である。
本開示の一実施形態に従う、クラスタを離脱したノードを示すCPRMの表である。
本開示の一実施形態に従う、既存のスプリットブレインによるデータ破損を防止するためのプロセスのフロー図である。
本開示の一実施形態に従う、クラスタ内のネットワークパーティションを示すCPRMの表である。
本開示の一実施形態に従う、クラスタ内のネットワークパーティションを示すBitwise ORテーブルである。
本開示の一実施形態に従う、フェンシング競争を実施するパーティション化クラスタ内のノードのブロック図である。
本開示の一実施形態に従う、フェンシング動作を実行するパーティション化クラスタ内のノードのブロック図である。
本開示の一実施形態に従う、ネットワークパーティション後の競争者ノードを選出するためのプロセスのフロー図である。
本開示の一実施形態に従う、競争者ノードがクラスタ内のコーディネーションポイントにアクセスできるかどうかを決定するためのプロセスのフロー図である。
本開示の一実施形態に従う、1つ又は2つ以上の競争者ノードによりフェンシング動作を実行するためのプロセスのフロー図である。
本開示の一実施形態に従う、CPRMを生成して送信するためのプロセスのフロー図である。
本開示の一実施形態に従う、情報をクラスタにブロードキャストするためのプロセスのフロー図である。
本開示の一実施形態に従う、フェンシング競争の結果を、一方ノードから他方のノードに送信するためのプロセスのフロー図である。
本開示の一実施形態に従う、フェンシングモジュールがソフトウェア内に実装され得る態様を示す、コンピューティングシステムのブロック図である。
本開示の一実施形態に従う、多様なコンピューティングデバイスがネットワークを介して通信し得る態様を示す、ネットワーク化されたシステムのブロック図である。
本開示は、様々な修正形態及び代替形式に影響を受けるけれども、本開示の特定の実施形態は、図面及び詳細な説明において例として提供される。図面及び詳細な説明は、開示内容を開示された特定の形式に限定することを意図しないことを理解されたい。その代わりに、添付の請求項によって規定されるような本開示の趣旨及び範囲内にある全ての修正形態、等価物、及び代替形態を包含することが意図される。
序論
企業が日々の業務のために複雑なコンピュータシステム(例えば、分散ストレージ及び/又はコンピューティングシステム)にますます依存するにつれて、生成されて処理される膨大な量のデータを管理することは重要な課題となっている。大企業は、典型的には、アプリケーションプログラムを使用して、多様なネットワーク及びオペレーティングシステムプラットフォーム全体の異なるタイプのストレージデバイスに格納された大量のデータを管理する。
ホスト用のストレージを提供するために、多くの異なるタイプのストレージデバイスを含むストレージエリアネットワーク(SAN)が使用され得る。SANは、ストレージデバイス、サブシステム、及びサーバシステムを相互接続するための多様なトポロジと機能を提供する。例えば、これらのコンポーネントを相互接続するために、スイッチ、ハブ、ブリッジなどの多様な相互接続エンティティが使用され得る。これらの多様なトポロジ及び機能により、比較的簡単な構成から非常に複雑な構成まで、SANを設計して実装することができる。
前述したように、クラスタは、エンドユーザ及びアプリケーションから1つのコンピュータのように見える複数の相互接続されたコンピュータを含む。クラスタ内で相互接続された各コンピュータはノードと呼ばれる。複数のノードの処理能力を組み合わせることにより、単一のノードから得られるものよりも大きなスループット及びスケーラビリティを提供することができる。高可用性クラスタでは、複数のノードがデータストレージ、複製、及び/又は重複排除の目的で、ストレージデバイスを共有することができる。共有ストレージディスク/デバイス(例えば、クラスタ共有ボリューム(CSV))は、クラスタ内の全てのノードによる読み取り及び書き込み動作のために、アクセス可能にされ得る。各クラスタは複数のCSVを有し得る。
フレキシブル共有ストレージ(FSS)システムでは、クラスタ内の複数のノードが1つ又は2つ以上のCSVを共有する。したがって、FSSシステムは、ローカルストレージのクラスタ全体にわたるネットワーク共有を可能にする。ローカルストレージは、直接接続ストレージ(DAS)又は内部ディスクドライブの形式で使用され得る。前述したように、ストレージのネットワーク共有は、クラスタのノード間のネットワーク相互接続の使用を通じて可能にされ得る。この機能により、ネットワーク共有ストレージを物理的共有ストレージと共存させることができる。したがって、分散ストレージシステムが、1つ又は2つ以上のストレージデバイスからのデータの高可用性を提供するために、マルチノードクラスタに実装され得る。
したがって、分散コンピューティングシステムは、研究、政府、及びエンタープライズコンピューティングシステムの重要な部分であることは驚くべきことではない。かかるコンピューティングシステムの利点の中には、大規模な計算上の問題、大量のデータ処理状況、及び上記のような高可用性の状況を含む多様な異なるコンピューティングシナリオを処理する能力がある。コンピュータシステムに高可用性(例えば、システムユーザにサービスを提供しながらシステムを維持する能力)が必要とされるアプリケーションでは、マルチノードクラスタの実装が分散コンピューティングモデルに有用である。
上記のように、クラスタは、処理能力及び大容量ストレージリソースを協力して提供するために、単一のエンティティとして協働する分散コンピュータシステムである。クラスタにより、コンピュータシステムの処理負荷は、典型的には、複数のコンピュータに分散され、それにより、単一障害ポイントを排除する。その結果、クラスタ上で実行されているプログラムは、クラスタ内の1つのコンピュータに問題があっても、引続き機能することができる。別の例では、クラスタのうちの1つ又は2つ以上のコンピュータは、クラスタ内の別のコンピュータに障害が生じた場合に、使用可能な状態にされ得る。クラスタ内の各コンピュータは、典型的には、オペレーティングシステムの独立したインスタンスを実行するが、追加のクラスタリングソフトウェアがクラスタ内の各コンピュータで実行され、通信及び所望のクラスタ行為を容易にする。
クラスタにおける1つの既知の問題は、クラスタのうちの1つ又は2つ以上のノードが、他のノードが適切に機能していないか、又はクラスタから離脱したと誤って認識している場合に発生する。この「スプリットブレイン」状態は、クラスタの2つ又はそれ以上のサブクラスタ(「ネットワークパーティション」とも呼ばれる)への効果的なパーティション化をもたらす。スプリットブレイン状態の原因は、とりわけ、ノード間の通信チャネルの障害、及びノード間の通常の通信シーケンスにおける過剰な遅延(例えば、1つのノードが、過剰な時間期間のためにハートビート信号の送信に失敗する)を引き起こす1つのノード上の処理負荷を含む。
例えば、クラスタは、第1のノード上で動作するアプリケーションプログラムによるフェイルオーバー動作のために構成され、クラスタ内に存在する第2のノードが、第1のノードのためにテイクオーバして失敗すると、ネットワークの完全な障害により、第2のノードは第1のノードが障害を生じていると結論付ける。次いで、第2のノードは、第1のノードが実際に障害を生じていなくても動作を開始する。したがって、第1のノード及び第2のノードの両方が、分散ストレージシステム内のストレージデバイスのうちの1つの同じ部分(又は領域)にデータを書き込もうと試みる可能性があり、それにより、データの破損を引き起こす。解決策は、ノードのうちの1つが共有ストレージにアクセスできないようにすることである。上記のように、入力/出力フェンシング(又はより簡単に、単にフェンシングという)は、ノードを共有ストレージから「フェンシングオフ」するために実装され得る。
加えて、ネットワークパーティションは、多様な他の形式をとり、多様な有害な影響を及ぼすことがある。例えば、ノードが既にクラスタから正常に除外された(又は排除された)後、ノードはクラスタに再加入を試みることがある。したがって、再加入するノードは、ノードを除外し、その代わりにパーティションイベントとして解釈するために、クラスタ環境設定に遭遇することがある。更に、ネットワークパーティションは、ノード間に共有ストレージがない場合(例えば、いわゆる「無共有」クラスタ)にも、問題が生じる可能性がある。例えば、クラスタのうちの1つのノードがクライアントと対話するノードとされており、別のノードがネットワークパーティションを検出すると、クライアントは最終的に間違ったノードと通信し、それにより、何らかのエラーをもたらす可能性がある。
ネットワークパーティション中にネットワークの一部に障害が生じた場合など、ノード間の通信に障害が生じた場合、ノードの2つ又はそれ以上のサブクラスタの各々は、ノードの他のサブクラスタが障害を生じた(又は、障害が生じた可能性がある)ことを決定する可能性がある。例えば、ノードのうちの2つ(又はそれ以上)のサブクラスタの間で競争(「フェンシング競争」とも呼ばれる)が発生し、その結果、ノードの各サブクラスタの制御モジュールは、ノードの他のサブクラスタが誤動作していると決定する可能性がある。
前述したように、第1のサブクラスタ(又はネットワークパーティション)内のノードは、ストレージデバイスへのデータ書き込みを実施することができ、一方で、他のサブクラスタ(又は他のネットワークパーティション)内のノードはまた、共有ストレージデバイスの同一部分へのデータ書き込みを実施することができ、データの不一致エラーをもたらす。これらのデータの不一致エラーを防止するために、勝者及び敗者サブクラスタ(又はグループ)を決定する「アービトレーションプロセス」が実施される。
勝者サブクラスタ内のノードは、共有ストレージとの通信を継続するように決定されるが、敗者サブクラスタ内のノードは、これらの共有ストレージデバイスとの通信を停止するように決定される。しかし、勝者サブクラスタ内のノードは、敗者サブクラスタ内のノードがアービトレーションを損失した(したがって、共有ストレージデバイスを使用することを断念する)と結論付ける状況又はその時間を決定しない。したがって、このアービトレーションプロセスに加えて、ノードの勝者サブクラスタの制御モジュールは、残りの分散ストレージシステムから、敗者サブクラスタからノードをフェンシングするフェンシングプロセスを実施することができる。敗者ノードからの不適切なデータ書き込みによって多様なデータの不一致とその他のエラーが生じるため、敗者サブクラスタのノードがストレージデバイスと通信しないようにするために、フェンシングプロセス(又は、より簡単にフェンシング及び/又はフェンシング動作)が実施される。
一般に、フェンシングは2段階で実施され得る。第1段階では、フェンシングは、ノードの敗者サブクラスタをフェンシングしようと試みる。敗者ノードには、アービトレーションの結果及び/又は実装されているフェンシングプロセスについて通知され得る。かかる通知は、敗者サブクラスタがアービトレーションプロセスに負けたことを発見するノードの敗者サブクラスタの制御モジュールを含むことができ、ノードの敗者サブクラスタの制御モジュールは、とりわけ、通信の損失を示す通信エラー及び/又は無効にされている敗者ノードからの通信に遭遇する。
第2段階では、フェンシングは、敗者ノードからのいかなる通信も受け入れないように、共有ストレージデバイス(勝者サブクラスタにアクセス可能な)に指示することなどによって、敗者ノードのストレージデバイスへのアクセスを排除する。この場合、ノードの勝者サブクラスタの制御モジュールが、ノードの敗者サブクラスタが共有ストレージデバイスへのデータ書き込みをもはや実行していないことを確認することができなくても(共有アプリケーションのインスタンスを実行することなどによって)、敗者ノードは、勝者ノードによって使用されているアプリケーションデータにアクセス/変更を行うことができなくなる。実際には、このフェンシングメカニズムは、クラスタの一部が非協調的な方法で、共有ストレージデバイスにアクセスすることを防ぐ。
ただし、フェンシングを実施する場合は、複数のノードのために共有ストレージにアクセスできるようにし、他のノードのためのアクセス(共有ストレージへの)を同時にブロックする、個別のコンピューティングデバイスを使用することが好ましい。かかる個別の(及び独立した)コンピューティングデバイスを使用すると、クラスタ内のノード上で実行されている既存のフェンシングソフトウェアとシームレスに統合する追加のアービトレーションメカニズムを提供することにより、フェンシング動作中に分散ストレージシステムに回復力が与えられる。更に、かかる個別のコンピューティングデバイスは、フェンシング動作の実行(及び管理)専用の中間デバイスとして動作し(又は機能)、これにより分散ストレージシステムの速度及び効率を向上させる。
フェンシング動作により支援する上述の個別のコンピューティングデバイスとして、クラスタ内にコーディネーションポイント(CP)が実装され得る。コーディネーションポイントは、共有ストレージ(例えば、データドライブ)を、クラスタ内の他のノードからフェンシングオフすることを許可されているノードを決定するためのロック機構を提供する。更に、コーディネーションポイントは、複数のノードのための共有ストレージへのアクセスを可能にする専用デバイスであり、(クラスタ内の)他のノードのためのアクセス(共有ストレージへの)を同時にブロックする。
高可用性クラスタでは、サーバ、ディスク、相互接続、並びに/又は他のハードウェア及び/若しくはソフトウェアアプライアンスが、クラスタ内のハードウェア及び/又はソフトウェアコンポーネントの損失の場合にデータの整合性を保証するために、コーディネーションポイント(クラスタの外部)として実装され(又は使用され)得る。したがって、コーディネーションポイントは、データ保護を提供し、クラスタ内で高可用性を維持する際に不可欠であり、フェンシングに使用されるコーディネーションポイントの損失(又は欠損)は、とりわけ、これらの重要な目標の両方に影響を及ぼす。
残念なことに、フェンシングのコンテキストにおける使用コーディネーションポイントは、いくつかの問題を有する(及び引き起こす)。典型的には、クラスタ内の全てのノードは、全てのコーディネーションポイントへのアクセスを必要とする(例えば、クラスタ内の他のノードが共有リソースにアクセスすることを阻止することにより、フェンシング競争を実施してそれに勝つことができる)。ただし、コーディネーションポイントは(他の問題の中でも)、(1)クラスタ起動の失敗と、(2)準最適なフェンシング競争結果と、(3)非対称/FSSシステムの問題と、を引き起こすことがある。
第1に、I/Oフェンシングのコンテキストにおけるコーディネーションポイントの使用(又は実装)は、他の欠点の中でも、クラスタの起動の失敗を引き起こすことがある。例えば、スプリットブレイン状態が発生した場合、どのサブクラスタが機能し続けるかを決定するアービトレーションプロセスの定義は、(例えば、フェンシング競争の結果を使用することによって)クラスタ内の各ノードによって、(例えば、特定のサブクラスタ内のノードが1つ又は2つ以上のコーディネーションポイントにアクセスできるかどうかに基づいて)アクセス可能な(又は到達可能な)コーディネーションポイントを使用することによってなされる。ただし、クラスタの起動(又は配置)中にクラスタ内の全てのノードがこれらのコーディネーションポイントのうちの1つにアクセスできない場合でも、クラスタリングスタックは起動するために使用不可能である。したがって、この例では、クラスタの起動に失敗するだけでなく、全てのコーディネーションポイントが単一の障害ポイントに変わる(このため、必要な高可用性の代わりにデータが使用できない状況が発生する)可能性がある。更に、その結果、ノードはクラスタに参加できなくなる。
第2に、フェンシングのコンテキストにおけるコーディネーションポイントの使用は、準最適なフェンシング競争結果を引き起こすことがある。上述したように、アービトレーションプロセスを実行する場合、コーディネーションポイントと通信するためにサブクラスタによって選択されたノードは、競争者ノードと呼ばれる。クラスタ内の他のノードを正常にフェンシングオフするために、競争者ノードは、コーディネーションポイントのうちの少なくとも大半から、それ自体のサブクラスタにないノードを排除できなければならない。この例では、各コーディネーションがクラスタ内の1つ(又は複数)のノードからアクセス可能であっても、コーディネーションポイントの大半にアクセスできる単一のノードが存在しないため、クラスタ全体にアービトレーションプロセスの損失を引き起こし、クラスタ全体の停止を招くことがある。
更に、アービトレーションプロセスの間に、サブクラスタは、コーディネーションポイントの大半にアクセス(又は到達)することができる単一のノードが見つかるまで、異なるノードを競争者ノードとして再選することができる。かかるノードが見つからない場合、ネットワークパーティション(又はサブクラスタ)はフェンシング競争に負け、パニックになる(例えば、クラスタを離脱する)。この競争者再選のプロセスは、アービトレーションプロセスの遅延を引き起こし、アプリケーションフェイルオーバーを招くことがある。更に、競争者再選はまた、フェンシング競争に勝つより小さい及び/又はそれほど重要でないパーティションを招くことがある。更に、サブクラスタのいずれもが、コーディネーションポイントの大半に到達(又はアクセス)できるノードを有していない場合、全てのパーティション(又はサブクラスタ)はフェンシング競争に負け、パニックになる。この状況は、分散コンピューティングシステムの著しいダウンタイムを引き起こす。
第3に、クラスタ起動の失敗及び準最適フェンシング競争結果の上記の問題は、非対称/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は、フェンシングドライバ140及び構成150を更に含む、フェンシングモジュール130を実装する。ノード120はまた、コーディネーションポイント到達可能性行列(CPRM)160を含む。サーバ30は、1つ又は2つ以上のクラスタを実装することができ、1つ又は2つ以上のクラスタは、各々、複数のノードを実装することができることに留意すべきである。
構成ファイル150は、クライアント10によって生成され、ネットワーク20を介してサーバ30に送信されてもよい。構成ファイル150は、コーディネーションポイントに関する情報を含む。例えば、構成150は、図1Aのコンピューティングシステム(図示せず)に実装されるコーディネーションポイントを識別することができ、コーディネーションポイントの合計数に関する情報も含むことができる。例えば、構成ファイル150は、3つのコーディネーションポイントの合計が分散コンピューティングシステムに実装されていることを識別してもよい。一実施形態では、構成ファイル150は、クライアント10の管理者及び/又はユーザによって作成されてもよい。クライアント10によって生成されると、構成ファイル150はサーバ30に送信され、例えば、構成ポイントの合計数を識別するためにノード120によって使用されてもよい。
図1Bは、一実施形態に従う、コーディネーションポイントを用いて実装されるI/Oフェンシング環境のブロック図である。図示されるように、クラスタ110は、ノード120(1)、120(2)及び120(3)を含む。ノード120(1)は、フェンシングドライバ140(1)を更に含む、フェンシングモジュール130(1)を実装する。ノード120(1)はまた、構成ファイル150(1)及びCPRM160(1)含む。ノード120(2)は、フェンシングドライバ140(2)を更に含むフェンシングモジュール130(2)を実装する。ノード120(2)はまた、構成ファイル150(2)及びCPRM160(2)を含む。同様に、ノード120(3)は、フェンシングドライバ140(3)を更に含む、フェンシングモジュール130(3)を実装する。ノード120(3)はまた、構成ファイル150(3)及びCPRM160(3)も含む。前述したように、フェンシングモジュールは、各ノード上で(例えば、クライアント10によって)実装されてもよい。一部の実施形態では、フェンシングモジュールはカーネルモジュールであってもよい。フェンシングモジュール130(1)〜(3)は、メンバーシップアービトレーション(例えば、上記のアービトレーションプロセス)を介して、有効で最新のクラスタメンバーシップ(又はメンバーシップ変更)を保証する役割を担う。
一部の実施形態では、フェンシングモジュール130(1)〜(3)はまた、ノード120(1)〜(3)をコーディネーションポイント(CP)170により、それぞれ登録する。例えば、フェンシングモジュール130(1)は、フェンシングドライバ140(1)を使用して、ノード120(1)を識別する登録キーをコーディネーションポイント170上に配置(又はインストール)することができる。同様に、フェンシングモジュール130(2)及び130(3)は、フェンシングドライバ140(2)及び140(3)を使用して、各々、ノード120(2)及び120(3)をそれぞれ識別する登録キーを、コーディネーションポイント170上にそれぞれ配置する。したがって、図1Bに示されるような登録キー180は、ノード120(1)〜(3)の登録キーを含むことができる。図示されるように、図1Bはまた、(ノード120(1)〜(3)によって共有される(ストレージとして))データディスク190を含む。
ノード120(1)〜(3)の構成ファイル150(1)〜(3)は同じ情報を含むことに留意すべきである。例えば、構成ファイル150(1)〜(3)によって識別されるコーディネーションポイントの数は、固定され、事前構成されている。結果として、ノード120(1)〜(3)は、同じ数のコーディネーションポイントへのアクセス(又は潜在的アクセス)を有する。
図2は、一実施形態に従う、コーディネーションポイントを実装するFSSシステムのブロック図である。図2に示されるように、ノード120(1)〜(3)は、各々、直接接続ストレージ(DAS)210(1)〜(3)に接続される。図2のFSSシステムはまた、ノード120(1)〜(3)にそれぞれ関連付けられているローカルストレージアレイ220(1)〜(3)、及び部分共有ストレージアレイ240を含む。図2のコーディネーションポイント170は、完全共有ストレージアレイ230である。したがって、コーディネーションポイントは、FSSシステムでは、ローカルストレージ(例えば、DAS210(1)〜(3))のクラスタ全体の共有を可能にするために使用されてもよい。このようにして、ネットワーク化共有ストレージは、物理的共有ストレージと共存することができる。
一実施形態では、ノード120(1)〜(3)の各々は、完全共有ストレージアレイ230へのアクセスを必要とする。FSSシステムのノードは同じ共有ストレージへのアクセスを必要としないが、I/Oフェンシングは、完全に共有される(クラスタ内の全てのノードによって)コーディネーションポイントを必要とする。したがって、この例では、完全共有ストレージアレイ230が、コーディネーションポイントとして選択される。
コーディネーションポイントの例
前述したように、コーディネーションポイントは、フェンシング動作を支援するために、クラスタ内に実装され得る。コーディネーションポイントは、共有ストレージ(例えば、データドライブ)を、クラスタ内の他のノードからフェンシングオフすることを許可されているノードを決定するためのロック機構を提供する。例えば、ノードは、そのノードが共有ストレージからピアノードをフェンシングすることが許可される前に、ピアノードの登録キーをコーディネーションポイントから取り出さなければならない。コーディネーションポイントは、ディスク又はサーバのいずれか、又はその両方であってもよい。典型的には、一実施形態では、クラスタ110は、ディスク及び/又はサーバの組み合わせであり得る、少なくとも3つのコーディネーションポイントを含む。
コーディネーションポイントとして機能するディスクは、コーディネータディスクと呼ばれる。一実施形態では、コーディネータディスクは、クラスタ再構成中(例えば、クラスタが形成される前)に、I/Oフェンシングのために用意された3つの標準ディスク又はLUN(論理ユニット番号)である。コーディネータディスク(及びコーディネーションポイント)は、クラスタ内の他の記憶目的(例えば、データストレージ又はユーザデータ用のディスクグループへの包含など)には作用しない。SCSI−3永続的予約(SCSI−3 PR)をサポートするディスクは全て、コーディネータディスクとなり得る。別の実施形態では、コーディネーションポイントはまた、コーディネーションポイントサーバと呼ばれるサーバであってもよい。コーディネーションポイントサーバは、リモートコンピューティングシステム又はクラスタ上で実行されるソフトウェアソリューションである。
したがって、コーディネーションポイントがコーディネータディスクであるかコーディネーションポイントサーバであるかにかかわらず、コーディネーションポイントは、クラスタ内のノードに、少なくとも、(1)登録してクラスタのメンバになることと、(2)他のノードが同じクラスタのメンバとして正常に登録されたことを決定することと、(3)クラスタから登録解除されることと、(4)他のノードをクラスタのメンバとして強制的に登録解除して阻止することと、を許可する。
一部の実施形態では、コーディネーションポイントは、最小でも、3つのコーディネータディスク又はコーディネーションポイントサーバ(又はその2つの任意の組み合わせ)であり、これらのコーディネーションポイントの制御のための競争(例えば、フェンシング競争)がクラスタメンバーシップを決定するために使用されるため、グローバルロックデバイスとして共に作用する。クラスタの制御は、コーディネーションポイントの大半の制御を獲得する(又は勝つ)ノードに与えられるため、常に奇数個のコーディネーションポイント(例えば、奇数個のコーディネータディスク及び/又はコーディネーションポイントサーバの任意の組み合わせ)が存在しなければならない。一実施形態では、最大3つのコーディネータディスク又はコーディネーションポイントサーバ(又はその2つの任意の組み合わせ)が実装される。
前述のように、フェンシングは、存続するパーティションだけが共有ストレージに書き込むことができるように、ネットワークパーティションを経験したクラスタ内で、1つのパーティション(又はサブクラスタ)のみが存続するようにするために使用され得る。フェンシングは、フェンシング競争を使用して、どのパーティション又はサブクラスタが、他のサブクラスタ又はパーティション内のノードをフェンシングオフするかを決定する。一実施形態では、共有ストレージへのアクセスを管理するためにコーディネーションポイントが使用されるため、フェンシング競争は、コーディネーションポイントの大半へのアクセスを獲得する(又はそこへ到達する)異なるサブクラスタ又はパーティション内のノードを指す。したがって、フェンシング競争とは、コーディネーションポイントの大半への接続性(又はアクセス可能性)を有するノードのパーティション又はサブクラスタを指す。
サブクラスタ(又はパーティション)内のノードは、1つだけのコーディネーションポイントをクラスタに利用可能にすると、単一ポイント障害が発生する可能性があるため、コーディネーションポイントの大半にアクセスする必要があることに留意すべきである。例えば、何らかの理由で1つのコーディネーションポイントに障害が生じた場合、クラスタは動作能力を損失する可能性がある。更に、2つ(又は偶数個)のコーディネーションポイント(例えば、4つ、6つなど)を使用することにより、異なるサブクラスタ内のノードが、同じ数であるが異なっているコーディネーションポイントにアクセスし得るため、いずれのサブクラスタもフェンシング競争に決定的に勝つことのない状況(例えば、クラスタが2つ又は4つの利用可能なコーディネーションポイントを有する2つのサブクラスタにパーティション化されている状況)を招くことがある。
したがって、1つのコーディネーションポイント又は偶数のコーディネーションポイントを使用すると、両方のサブクラスタ内のノードが共有ストレージにデータを書き込むことを招き、それによりデータの破損を引き起こすことがある。したがって、パーティション化されたクラスタ内で所望のパーティションを動作可能に保つために、サブクラスタ内のノードは、単独で、又はそのサブクラスタ内の他のノードと共同で、クラスタに利用可能なコーディネーションポイントの大半にアクセスする(又はそれを勝ち取る)ことが可能でなければならない(例えば、奇数個のコーディネーションポイントが利用可能になる場合に、全ての状況において決定的に達成され得るのみのタスク)。
コーディネーションポイントは、概して、フェンシング決定を実行するために実行可能であるか、又は使用することができる(例えば、コーディネーションポイント170を使用して、パーティションイベント後のクラスタ110のスプリットブレインシナリオを解決することができる)任意のタイプ又は形態のコンピューティングデバイスを表す。例えば、コーディネーションポイント170は、1つ若しくは2つ以上のコーディネーションディスク及び/又はフェンシング決定を決定するために使用することができる1つ又は2つ以上のコーディネーションサーバを表すことができる。コーディネーションポイント170の例として、多様なデータベースサービスを提供し、かつ/又は特定のソフトウェアアプリケーション、ストレージデバイス(ディスク又はディスクアレイなど)、ラップトップ、デスクトップ、携帯電話、パーソナルデジタルアシスタント(PDA)、マルチメディアプレーヤ、組み込みシステム、及び/若しくはそれらの1つ若しくは2つ以上の組み合わせを実行するように構成されたアプリケーションサーバ及びデータベースサーバが挙げられるが、これらに限定されない。
コーディネーションポイント到達可能性行列(CPRM)の使用例
一部の実施形態では、クラスタ110内のノードは、コーディネーションポイント到達可能性行列(「CPRM」又は単に「行列」という)を使用し、各ノードのアクセス可能性(又は到達可能性)に関する情報を、クラスタ110に提供される1つ又は2つ以上のコーディネーションポイントに対して交換する。CPRMは、クラスタ内の各ノードを識別する情報を含み、また、ノードが1つ若しくは2つ以上のコーディネーションポイントにアクセスするか又は到達できるかどうかを決定するための情報も含む。
CPRMは、例えば、フェンシングモジュール130(図1Aに示されるような)を使用することによって、クラスタ内の任意のノードによって生成されてもよい。CPRMはまた、CPRMによって提供される情報が全てのノードで利用可能であるように、クラスタ内の全てのノードにわたって複製され(及び共有され)てもよい。例えば、図2に示されるようなフェンシングモジュール130(1)は、CPRM(例えば、CPRM160(1))を生成し、そのCPRMをクラスタ内の残っているノードにわたって複製して(例えば、ノード120(2)上のCPRM160(2)及びノード130(3)上のノードCPRM160(3)として)もよい。
図3Aは、一実施形態に従う、コーディネーションポイントを使用してフェンシング動作を実施するクラスタ内のノードのブロック図である。図3Aは、ノード120(1)、120(2)、120(3)、120(4)及び120(5)の5つのノードと、コーディネーションポイント170(1)、170(2)及び170(3)の3つのコーディネーションポイントとを含む。各ノードは、コーディネーションポイント170(1)〜(3)の各々への接続性を有するか又は有さない。各ノードはまた、CPRM(ノード120(1)〜(5)にそれぞれ対応するCPRM160(1)〜(5)として示される)を有する。
フェンシング競争を行う前に、サブクラスタが競争者ノードを選出する。競争者は、サブクラスタによって指定されたノードであり、ノードがクラスタに利用可能な1つ又は2つ以上のコーディネーションポイントにアクセスできるか(全体として)どうかを決定する。典型的には、競争者ノードは、ノードIDに基づいてクラスタによって選択される(又は指定される)。しかし、ノードID以外によって競争者ノードを選択しかつ/又は指定する他の方法も考えられることに留意すべきである。
一実施形態では、フェンシングモジュール130(1)は、行列(例えば、CPRM 160(1))を生成する。行列は、第1のノード(例えば、ノード120(1))による各コーディネーションポイントのアクセス可能性を示す情報を含む。次いで、フェンシングモジュール130(1)は、行列をクラスタ内の他のノードに送信する。行列は、各コーディネーションポイントに対するノードのアクセス可能性ステータスを有するクラスタ内の各ノードによって更新されてもよく、更新された行列は、クラスタ内の全てのノードが各コーディネーションポイントへの各ノードの接続性情報(例えば、行列から)を有するように、クラスタ内の全てのノードにわたって複製されかつ共有されてもよい。
CPRMが使用されないシナリオでは、図3Aの両方のサブクラスタは、フェンシング競争に負けることになる。例えば、図3Aは、2つのサブクラスタ(又は2つのパーティション)を作成する、5つのノードクラスタのネットワークパーティション(2つの「X」記号によって示される)を示す。ノード120(1)〜(3)は第1のサブクラスタに属し、ノード120(4)〜(5)は第2のサブクラスタに属する。更に、ノード120(1)〜(5)は、3つのコーディネーションポイント、すなわちコーディネーションポイント170(1)〜(3)を利用することができる。
図3Aに示されるように、コーディネーションポイント(cooridination points)170(1)〜(3)への接続性は、全てのノードから非対称である。例えば、ノード120(1)はコーディネーションポイント170(3)にのみアクセスでき、ノード120(2)はコーディネーションポイント170(2)にのみアクセスでき、ノード120(3)はコーディネーションポイント170(1)にのみアクセスできる。前述のように、ノードは、それぞれの登録キーを所与のコーディネーションポイントにインストールすること(又は配置すること)に基づいて、コーディネーションポイントへのアクセスを正常に獲得することができる。
ネットワークパーティション(図3Aに示されるような)において、第1のサブクラスタ(ノード120(1)〜(3)の)は、ノード120(1)を競争者ノードとして選出する(例えばノード120(1)のノードIDに基づいて)。ノード120(1)は、半分を超えるコーディネーションポイント(cooridination points)に到達(又はアクセス)できないため(例えば、ノード120(1)がコーディネーションポイント170(3)へのアクセスのみを有しているため)、第1のサブクラスタはノード120(2)を競争者ノードとして再選する。しかし、第1のサブクラスタ(ノード120(1)、120(2)、又は120(3))内の3つのノードのいずれも、各々がコーディネーションポイントの大半へのアクセスを個別に有していない。
同じ状況が、第2のサブクラスタ内で発生する可能性がある。ノード120(4)も120(5)も、ノード120(4)がコーディネーションポイント170(1)にのみにアクセスでき、ノード120(5)がコーディネーションポイント170(2)にのみにアクセスできるため、各々がコーディネーションポイントの大半に個別にアクセスできない。したがって、CPRMが使用されない場合、両方のパーティション(例えば、第1のサブクラスタ及び第2のサブクラスタ)は、パーティション競争に負ける。いずれのパーティションも存続しないため、全てのクラスタの停止が発生し得る(例えば、全てのノードがパニックになり、クラスタを離れる)。
しかし、CPRMが実装されている場合(例えば、CPRM160(1)〜(5))、第1のサブクラスタはフェンシング競争に勝ち、第1のサブクラスタのパーティションは存続する。例えば、一実施形態では、CPRMは、クラスタ内の各ノードの各コーディネーションポイントへの接続性(又は到達可能性)を示す。したがって、現在の例では、ノード120(2)が競争者ノードとして再選された後、第1のサブクラスタは、CPRMにアクセスすることによって(例えば、ノード120(2)が、競争者ノードとして再選されると、CPRM160(2)にアクセスする)、ノード120(1)及び120(2)は、共同で、コーディネーションポイントの大半(例えば、それぞれコーディネーションポイント170(2)及び170(3))へのアクセスを有していることを決定することができる。したがって、競争者ノードとしてのノード120(3)の再選は必要とされず(図3Aに「X」で示されている)、第1のサブクラスタはフェンシング競争に勝ち、存続する。このようにして、CPRMの使用は、コーディネーションポイントがフェンシング動作に使用されるとき、ネットワークパーティションに起因する欠損を回避することができる。
図3Bは、一実施形態に従う、コーディネーションポイントを使用してフェンシング動作を実行するクラスタ内のノードのブロック図である。図3Aのように、図3Bは、ネットワークパーティションを受ける5つのノードクラスタを示す。前述のように、I/Oフェンシングを実施するためにコーディネーションポイントを使用することの1つの欠点は、クラスタがパーティション化されている場合、より小さいパーティション(又はサブクラスタ)がフェンシング競争に勝つ結果になる可能性があることである。この準最適フェンシング競争結果は、ノードの数がより多いサブクラスタが、ネットワークパーティション上のフェンシング競争(例えば、高可用性、アプリケーションフェイルオーバーなどを提供するため)から存続しなければならないため、好ましくない。
したがって、CPRMが使用されない場合、図3Bの第2のサブクラスタ(例えば、ノード120(4)及び120(5)を有するサブクラスタ)は、フェンシング競争に勝つ結果となり、したがって、より好ましい第1のサブクラスタ内のノード(例えばノード120(1)〜(3))をパニック状態にしてクラスタから離れさせることができる。例えば、図3Bに示すように、ノード120(4)は、コーディネーションポイント170(1)及び170(2)へのアクセスを有するが、ノード120(1)は、コーディネーションポイント170(3)へのアクセスのみを有する。前述したように、競争者ノードを選択する1つの方法は、ノードのノードIDを使用することである。したがって、この例では、ノード120(1)が第1のサブクラスタの競争者ノードに選択され、ノード120(4)が第2のサブクラスタの競争者ノードとして選択される。
ノード120(1)はコーディネーションポイントの大半へのアクセスを有していないため、第1のサブクラスタは、ノード120(2)を競争者ノードとして再選することに留意されたい。しかしながら、第2のサブクラスタによって競争者ノードとして単独で選択されるノード120(4)は、コーディネーションポイントの大半(例えば、コーディネーションポイント170(1)及び170(2))へのアクセスを有する。したがって、競争者再選(例えば、ノード120(5)を競争者ノードとして選択する)は、第2のサブクラスタ内では不要であり、第2のサブクラスタはフェンシング競争に勝つことができ、つまり望ましくない結果である。
その結果、第2のサブクラスタが遅延された開始を経験しても(例えば、第2のサブクラスタが、第1のサブクラスタが競争者ノードを選択し、第2のサブクラスタの前にフェンシング競争を開始することを待つ場合)、第2のサブクラスタが競争者の再選を必要としないので、第2のサブクラスタはフェンシング競争に勝つ。残念なことに、第1のサブクラスタがCPRMを使用しない場合、第1のサブクラスタが、コーディネーションポイント(例えば、図3Bに示されるようなノード120(3))の大半へのアクセスを提供することができる(健全な)競争者ノードを見つけることができるまで、複数の競争者再選(又はハンドオフ)を経なければならないため、第1のサブクラスタはフェンシング競争に負ける。より小さいパーティションが存続するため、クラスタは欠損(又は可用性が低い)を経験する可能性がある。
したがって、一実施形態では、CPRMがクラスタ内のノードによって使用される。その結果、ノード120(1)及びノード120(2)は、各々がCPRMにアクセスして、ノード120(1)及びノード120(2)がコーディネーションポイント(例えば、コーディネーションポイント170(2)及び170(3))の大半へのアクセスを(共同で)有していることを決定するため、第1のサブクラスタによる競争者ノードとしてのノード120(3)の再選は必要とされない。したがって、第1の(より大きい)サブクラスタはフェンシング競争に勝ち、第2の(より小さい)サブクラスタをフェンシングすることを可能にする、つまり所望の結果である。
図4は、一実施形態に従う、コーディネーションポイント到達可能性行列(CPRM)の表である。前述したように、一実施形態では、CPRMはクラスタ内の任意のノードによって生成されてもよく(例えば、フェンシングモジュール及び/又はフェンシングドライバを使用して)、別の実施形態では、クラスタ内の全てのノードにわたって複製されて共有されてもよい。一部の実施形態では、CPRMはクラスタ全体に原子的に維持され、CPRMは新しいノードがクラスタに参加するたびにクラスタ内で更新され、交換される。
例えば、新しいノードがクラスタに参加するまで、その新しいノードの多様なコーディネーションポイントへの到達可能性(又は可視性及び/又はアクセス可能性)は不明である(クラスタ内の他のノードによって)。ただし、新しいノードがクラスタに参加すると、新しいノードはCPRMを更新することによってその到達可能性をクラスタにブロードキャストする。次いで、CPRMは、クラスタ内の他の(アクティブな)ノードと共有、複製、及び/又は交換される。新しいノードはまた、クラスタに参加すると、CPRMのコピーも提供される。
CPRM(例えば、CPRM160)は、クラスタ内の各ノードによって使用され、クラスタ内の1つ又は2つ以上のノードが、単独又は互いと共同のいずれかで、コーディネーションポイントの大半にアクセスできるかどうかを決定する。図4に示されるように、ノード120(1)はクラスタ(例えば、クラスタ110)を形成しようと試みる。ノード120(1)は、コーディネーションポイントにアクセスすることができない(ほとんどのコーディネーションポイントの他に)ため、ノード120(1)はクラスタを形成することが許可されない。したがって、ノード120(1)がクラスタを形成しようと試みる結果により、結果410に「いいえ」が示される。クラスタメンバ420及びクラスタスナップショット430の列もまた空である(又はヌル)。同様に、ノード120(2)がまたコーディネーションポイントの大半にアクセスすることができないため(例えば、ノード120(2)はコーディネーションポイント170(1)及び170(2)にのみアクセスできる)、ノード120(2)はまたクラスタを形成することは許可されない。ここでの例では、ノード120(3)、120(4)及び120(5)はまだクラスタを形成しようと試みていないことに留意すべきである。
図4に示されように、5つのコーディネーションポイントが、形成される任意の(潜在的な)クラスタに提供される(例えば、構成ファイル150は、5つのコーディネーションポイントが利用可能であることを示す)。図4に示されるように、スナップショット(例えば、クラスタスナップショット430)は、クラスタ内のノードによって使用されている全てのコーディネーションポイントのリストである。一実施形態では、ノード120(3)及び120(4)は同時に起動する。CPRMが使用されない(又は利用可能ではない)場合、ノード120(3)及び120(4)がコーディネーションポイントの大半に個別にアクセスすることができないため、ノード120(2)及び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)が共にクラスタを形成して参加すると、結果410が「はい」を示し、クラスタメンバ420が{3、4}を示し、クラスタスナップショット430が「CDE」を示すように、CPRMが更新される。ノード120(5)がクラスタに参加しようと試みると、ノード120(5)がコーディネーションポイントの大半へのアクセスを有していることを示すようにノード120(5)に要求することなく、なぜならノード120(3)及びノード120(4)がこの要件を既に満たしているため、ノード120(5)はクラスタに参加することが許可される。したがって、CPRMは、ノード120(5)が(実行されている)クラスタに正常に参加したことを示すように更新される(例えば、結果410が「はい」であり、クラスタメンバ420が{3、4、5}であり、クラスタスナップショット430が「ABCDE」である)。この時点では、(1)クラスタが起動して実行されている(例えば、クラスタが動作可能である)、(2)コーディネーションポイントの大半が、単独又は共同のいずれかで、1つ又は2つ以上のノードによって到達可能であるという要件が、ノード120(3)、120(4)、及び120(5)によって満たされているため、ノード120(1)及び120(2)もまた、(実行されている)クラスタに正常に参加することが許可される。この例では、新しいノードがクラスタに参加するたびにCPRMが更新され、CPRMが更新されるたびにクラスタ内の全てのノードでCPRMが複製され/共有される。
図5Aは、一実施形態に従う、CPRMを使用してクラスタを形成するためのプロセスのフロー図である。プロセスは、構成ファイルにアクセスする(例えば、ノード120(1)が構成ファイル150にアクセスする)ことによって、505で開始する。510で、ノード(クラスタを形成しようと試みている)は、構成ファイルから(利用可能な)コーディネーションポイントの合計数を得る(又は読み取る)。515で、プロセスは、かかる他のノードが、クラスタを形成しかつ/又はそれに参加しようと試みている場合、他のノードとCPRMを交換する(例えば、ノード120(1)がCPRM 160(1)を生成し、それを、起動してノード120(1)と同時にクラスタに対する形成/参加を試みる他のノードと交換する)。
520で、プロセスは、ノードが共にコーディネーションポイントの大半にアクセスできるかどうかを決定する。ノードが共にコーディネーションポイントの大半にアクセス(又は到達)できない場合、ノードはパニックになり、525で、脱出する(例えば、120(4)が出現してクラスタを形成しようと試みる前の、図4に関して上述したようなノード120(1)及び120(2)ノード120(3))。しかし、ノードが共にコーディネーションポイントの大半にアクセス(又は到達)できる場合、ノードは、530で、クラスタ(例えば、図4に示されるノード120(3)及び120(4))を形成する。次いで、プロセスは終了する(例えば、クラスタの形成により)。
図5Bは、一実施形態に従う、実行されているクラスタに参加するためのプロセスのフロー図である。プロセスは、ノードが実行されているクラスタに参加しているかどうかを決定することによって、535で開始する。ノードが、実行されているクラスタに参加している場合、プロセスは、540で、第1のCPRMを生成する(例えば、クラスタに参加しているノードは1つ又は2つ以上の利用可能なコーディネーションポイントに対するノードのアクセス可能性を示す第1のCPRMを生成する)。545で、プロセスは、(実行されている)クラスタから、第2のCPRMを取得する(又は要求する)(例えば、第2のCPRMは、クラスタ内の各ノードにわたってCPRMが複製されて共有されるため、実行されているクラスタ内のあらゆるノードから取得されるか又はアクセスされ得る)。第2のCPRMは、クラスタ内の各アクティブノードの1つ又は2つ以上の(利用可能な)コーディネーションポイントへのアクセス可能性を示す。このプロセスは、第1のCPRM(クラスタへの参加を試みるノードによって生成される)と、第2のCPRM(クラスタから受信される)とを比較する。
550で、プロセスは、クラスタへ参加することを試みるノードの第1のスナップショットと、コーディネーションポイントの数(S1.N)との積が、クラスタの第2のスナップショットとコーディネーションポイントの数(S2.N)との積に等しいかどうかを決定する。S1.NがS2.Nと等しくない場合、ノードは、560で、パニックになり退却する(例えばS1.NがS2.Nに等しくないことは、クラスタ及び/又はコーディネーションポイント構成において潜在的なエラーを示す可能性がある)。前述の通り、Nはノードの構成ファイル内のコーディネーションポイントの数である。Nは、ノードのCPRM内で維持されてもよい。[S1.N≠S2.N]のチェックは、ノードの構成ファイルにより、Nの設定値が誤っているクラスタに参加しているノードから保護する。
しかし、S1.NがS2.Nに等しい場合、プロセスは555で、(クラスタに参加しようと試みるノードの)第1のスナップショットとコーディネーションポイントの数(例えばS1.N)との積が、(クラスタの)第1のスナップショット及び第2のスナップショットの和(又は組み合わせ及び/又は合計)とコーディネーションポイントの数(例えば、和(S1、S2).M)との積より小さいかどうかを決定する。S1.Nが(S1、S2).Mより小さい場合、ノードは、560で、パニックを起こして退却する。しかし、S1.Nが(S1、S2).M以上である場合、プロセスは、565で、第1のCPRM(クラスタに参加しようと試みるノードによって生成された)を(S1、S2)の和に更新する。570で、プロセスは、(更新された)第1のCPRMを、クラスタ(例えば、クラスタ内の他のノード)にブロードキャストすることによって終了する。ブロードキャストされた(及び更新された)第1のCPRMを受信すると、第2のCPRMも更新され(例えば、第2のCPRMは情報を更新された第1のCPRMに組み込む)、単一の(最新で包括的な)CPRM(クラスタ全体を表す)が複製されてクラスタ内の全てのノードで共有される。
上記の例では、Mは、結合演算(例えば、(S1、S2).M)の結果として、クラスタにより可視(又はアクセス可能)であるコーディネーションポイントの合計数を指す。このチェック又は演算は、クラスタに対して構成された(例えば、管理者によって)コーディネーションポイントとは異なるコーディネーションポイントにより、クラスタに参加しているノードから保護する。例えば、第2のノードが、N値7でクラスタに参加しようと試みる場合、S1.Nが7で、S2.Nが5であることに起因して、第1のチェック(550)が失敗するため、第2のノードはクラスタに参加できなくなる。第3のノードが、N値5でクラスタに参加しようとし、第3のノードが、2つのコーディネーションポイント{D、E}へのアクセスを有している場合、クラスタはこれらのコーディネーションポイントにアクセスできない(この時点では)。したがって、2つのCPRMの和は、{ABCDE}のクラスタスナップショットをもたらす。チェック555は、Nが5で、Mが5であるために失敗する。したがって、ノード3はクラスタに参加することになる。しかし、第4のノードが、N値5で参加しようとし、第4のノードの要求が、2つのコーディネーションポイント{F、G}へのアクセスを有する場合、この例における和(555)は、{ABCDEFG}のクラスタスナップショットをもたらし、M値は7になる。この場合、Nが5で、Mが7であるため、チェック555は合格となり、ノード4はクラスタに参加しない。
このようにして、1つ又は2つ以上のCPRMが、ノードによって生成されて実装され、新しいクラスタを形成し、かつ/又はI/Oフェンシングを実行するためにコーディネーションポイントを使用する既存のクラスタに参加することができる。更に、コーディネーションポイントを実装する環境でI/Oフェンシングを実施するためにCPRMを使用することは、とりわけ、(1)フェンシング競争に起因する欠損と、(2)上記のような準最適なフェンシング競争結果と、の課題を解決する。
既存のスプリットブレインによるデータ破損の防止の例
しかしながら、上述した方法でCPRMを実装する利点にもかかわらず、少なくとも2つの更なる課題及び/又は欠点がもたらされる場合がある。第1に、何らかの理由でノードが実行されているクラスタを離脱する(又は脱出する)場合、クラスタ内に残っているノードは、コーディネーションポイントの大半(例えば、コーディネーションポイントの半分又はそれ以上)へのアクセスを損失する可能性がある。例えば、クラスタを離脱するか又は脱出するノードは、少なくとも1つのコーディネーションポイントへのアクセスを提供している可能性があり、そのため、コーディネーションポイントの大半へのアクセスの要件を、単独又は共同のいずれかで(クラスタ内の残っているノードと共に)満たす必要があり得る。したがって、別の(又は次の)パーティショニングイベント(例えば、ネットワークパーティション)において、クラスタ内の残っているノード(例えば、新しく形成されたサブクラスタ)は、ノードを離脱せずにフェンシング競争に正常に勝つことができない可能性がある。かかる状況では、クラスタが使用できなくなる可能性がある。
第2に、ノードが、何らかの理由で、既にパーティション化されたクラスタを離脱する(又は脱出する)場合(例えば、クラスタがパーティション化された状態)、クラスタの一部であり、以前は非アクティブであった(例えば、これらのノードが起動されていないか、又は以前にアクティブでなかった場合)ノードがブートアップ(又は起動)する状況が存在することがある。かかる状況では、アクティブになるクラスタの、このように以前は非アクティブであったノードは、パーティション化された状態(例えば、2つのパーティション内のノード間に共通のコーディネーションポイントが存在しない場合がある)で出現する(又はクラスタに参加する)ことになる。その結果、パーティション化された状態でクラスタに参加するノードは、コーディネーションポイント上の他のノードの登録キーを識別することができず、既存のスプリットブレインが存在しないと仮定することになる。これらのノードが起動するか又は出現すると、これらのノードによって共有ストレージに書き込まれたデータは、データ破壊を引き起こす可能性がある。
したがって、特定の実施形態では、ノードがもはやサブクラスタの一部ではないと決定したことに応答して、サブクラスタ内の別のノードが競争者ノードとして指定される(例えば、サブクラスタは、ノードIDに基づいて競争者ノードを選出する)。この例では、競争者ノードは行列(例えば、CPRM)にアクセスする。行列は、クラスタ内のコーディネーションポイントの大半がサブクラスタ内のノードによってアクセス可能であるかどうかを決定するための情報を含む。アクセスに基づいて、競争者ノードは、情報がコーディネーションポイントの大半がノード(競争者ノードのサブクラスタ内の)によってアクセス可能であることを示すという決定をなす。この情報は、競争者ノードによってクラスタ内の他のノードにブロードキャストされる。
一実施形態では、ノードがもはやサブクラスタの一部ではないと決定した後で、サブクラスタ内の別のノードを競争者ノードとして指定する前に、サブクラスタ内の残っているノードは、サブクラスタ内のいずれのノードも大半のコーディネーションポイントへのアクセス(例えば、サブクラスタ内のノード間で複製されて共有されるCPRMにアクセスすることによって)を個別に提供することができないことを決定することができる。
他の実施形態では、情報を(クラスタに)ブロードキャストすることは、コーディネーションポイントの大半がサブクラスタ内の1つ又は2つ以上のノードによってアクセス可能であることを示す情報により、行列(例えば、CPRM)を更新することを含む。この情報はまた、競争者ノードによって実行されるフェンシング競争が成功したことを示し得る。この情報に基づいて、クラスタは、パーティション化されたノードが、サブクラスタ内のノードによってアクセス可能な1つ又は2つ以上のコーディネーションポイントにアクセスすることを禁止することができる。この例では、禁止は、既存のスプリットブレイン状態がクラスタ内で発生することを防止する。
図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)の第1のパーティションとノード120(4)及び120(5)の第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は、CPRM160を示し、ノード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のCPRM160は、図6及び図7を参照して上述した課題を解決するために実装されてもよい。例えば、一実施形態では、各ノードはCPRMを維持する。CPRMは、クラスタ内で最初に出現する任意のノード(例えば、クラスタを形成しかつ/又はそれに参加する第1のノードであるノード)によって生成される。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で終了する。パーティション化されたノードがクラスタに参加しようと試みると、パーティション化されたノードは、少なくとも1つのコーディネーションポイント(オーバーラップコーディネーションポイントと呼ばれる)がクラスタ内の残っているノードとパーティション化されたノードとの間で今度は共通になるため、既存のスプリットブレイン検出に失敗する。その結果、パーティション化されたノードは、クラスタ内の既存のパーティションに警告される。このようにして、図9は、既存のスプリットブレインに関連付けられているデータの破損を防止する。
パーティションアービトレーションの最適化の例
一実施形態では、CPRMは、フェンシング競争の結果をパーティション内の各競争者の累積レース結果に依存させることによって、パーティションアービトレーションを最適化するために使用され得る。例えば、一実施形態では、クラスタが2つ又はそれ以上のネットワークパーティションにパーティション化されたことに応答して、第1のネットワークパーティション内の第1のノード(2つ又はそれ以上のネットワークパーティションの)が、第1のノードが1つ又は2つ以上のコーディネーションポイントを勝ち取るかどうかを決定するために使用され得る。この例では、決定(第1のノードが1つ又は2つ以上のコーディネーションポイントを勝ち取ることに成功したかどうか)が、第1のノードから第2ノード(同様に第1のネットワークパーティション内の)に、送信される(又はブロードキャストされかつ/又は通信される)。第2のノードは、第2のノードが第1のノードによって勝ち取られた1つ又は2つ以上のコーディネーションポイントとは異なる1つ又は2つ以上のコーディネーションポイントを勝ち取るかどうかを決定するために使用される。
一部の実施形態では、例えば、第2のノードが、第1のノード及び第2のノードが共にコーディネーションポイントの大半を勝ち取るどうかを判定し得るため、フェンシング競争の結果は、パーティション内の各競争者の累積競争結果に依存させられてもよい。このようにして、新しい競争者(例えば、第2のノード)は、残っているコーディネーションポイント(例えば、第1のノードによって勝ち取られた1つ又は2つ以上のコーディネーションポイントとは異なる1つ又は2つ以上のコーディネーションポイント)で、フェンシング競争を効果的に再開する。
特定の実施形態では、1つ又は2つ以上のコーディネーションポイントを勝ち取ることは、1つ又は2つ以上のコーディネーションポイントにアクセスすることと、1つ又は2つ以上のコーディネーションポイントから第1のネットワークパーティションにない1つ又は2つ以上のノードの1つ又は2つ以上の登録キーを取り出すことと、1つ又は2つ以上のノードが1つ又は2つ以上のコーディネーションポイントを勝ち取ることを阻止することと、を含む。
他の実施形態では、2つ又はそれ以上のノードからの累積レース結果は、別のノードに送信されてもよい。例えば、第2のノードの決定は、例えば、第1のノード及び第2のノードが共にコーディネーションポイントの大半を勝ち取らない場合、第3のノード(第1のネットワークパーティション内の)に送信されてもよい。
図10Aは、一実施形態に従う、クラスタ内のネットワークパーティションを示すCPRMの表である。図10Bは、別の実施形態に従う、クラスタ内のネットワークパーティションも示す、Bitwise ORテーブルである。図10A及び図10Bでは、「0」は所与のノード(又はノードのパーティション)からコーディネーションポイントに到達可能ではないことを示し、「1」はコーディネーションポイントが、所与のノード(又はノードのパーティション)から到達可能であることを示す。
前述したように、各パーティションは、1つ又は2つ以上のコーディネーションポイント(例えば、フェンシング競争)を勝ち取るために、競争者ノードを選出してもよい。一実施形態では、競争者が最終的にフェンシング競争に勝つことができないと決定すると、競争者はあらゆるコーディネーションポイントを制御するために競争する前ですら、競争に負けたことを宣言してもよい。競争者は、図10Aに示されるように、CPRM160にアクセスすることによってこの決定を行ってもよい(例えば、CPRMに相談し、パーティション又はサブクラスタ内のノードが共にコーディネーションポイントの大半へのアクセスを有しておらず、このため1つのコーディネーションポイントの制御(又は勝利)のために競争する目的を破る)。このようにして、CPRMは、敗者パーティションを強制的にクラスタから早期に退出させることにより、より高速のフェンシング競合結果を提供し、それによりクラスタの動作を高速化することができる。
更に、(図10Aに示すような)ネットワークパーティション(及び各パーティション又はサブクラスタ内のノード)を示すCPRMを使用することにより、より少ないハンドオフ及び競争者再選択につながり得る。例えば、パーティション又はサブクラスタ内のノードが単独又は共同のいずれかで、コーディネーションポイントの大半へのアクセスを有していないことを早期に決定され得る場合、競争者ノードの役割を一方のノードから他方のノードへハンドオフする(例えば、競争者再選により)必要がないこともある。
例えば、図10Aでは、ノード120(1)が、第1のサブクラスタ(例えばノード120(1)及び120(2))の競争者ノードとして選択されるか又は指定され得る。ノード120(1)は、コーディネーションポイント170(5)のための競争のみを行う(例えば、ノード120(1)がCPRM160によって示されるように他のコーディネーションポイントへのアクセスを有していないため)。コーディネーションポイント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)は、第2のサブクラスタ(例えば、ノード120(3)、120(5)及び120(5))によって、競争者ノードとして選択されるか又は指定されてもよい。ノード120(3)はコーディネーションポイントの大半(例えば、コーディネーションポイント170(3)、170(4)、及び170(5))にアクセスし、それらを勝ち取ることができるため、競争者再選は第2のサブクラスタによって要求されない(及び回避される)。このように、クラスタは、コーディネーションポイントの大半が、個別のノードではなく、全体としてのサブクラスタから到達可能又はアクセス可能でなければならないため、クラスタはより良い生存の機会を有する。
図11Aは、一実施形態に従う、フェンシング競争を実施するパーティション化されたクラスタ内のノードのブロック図である。この例では、フェンシング競争の結果は、パーティション(又はサブクラスタ)内の各競争者ノードの累積競争結果に依存する。図11Aに示されるように、ノード120(1)は競争者ノードとして選出される。ノード120(1)はコーディネーションポイント170(3)へのアクセスのみを有しているため、第1のサブクラスタ(例えば、ノード120(1)、120(2)及び120(3))が、ノード120(2)を競争者ノードとして選出しなければならない。しかし、ノード120(1)がコーディネーションポイント170(3)へのアクセスを有しているため、ノード120(1)が競争者ノードの役割をノード120(2)へハンドオフする前に、ノード120(1)はコーディネーションポイント170(3)を勝ち取る。更に、ノード120(1)は、ノード120(1)がコーディネーションポイント170(3)を勝ち取ったという情報をノード120(2)に送信する。この時点で、ノード120(2)はノード120(1)によってノード120(2)に提供された以前のフェンシング競争の累積結果を使用して、フェンシング競争を再開する。ノード120(2)が、第1のサブクラスタ内のノードがコーディネーションポイントの大半を勝ち取ったことを示す情報を有しているため、ノード120(2)は、コーディネーションポイント170(2)を勝ち取り、競争に勝ったことを宣言する。ノード120(3)の競争者再選は不要である。
同様に、ノード120(4)は、第2のサブクラスタ(例えば、ノード120(4)及び120(5))内の競争者ノードとして選出される。サブクラスタ内のいずれのノードもコーディネーションポイント170(1)のために競争しなかったため、ノード120(4)はコーディネーションポイント170(1)へのアクセスを有し、それを勝ち取った(例えば、第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)へのアクセスを有していないため、第2のサブクラスタは、フェンシング競争に負けることになる(例えば、ノード120(5)が競争者ノードとして再選されるとしても)。したがって、第1のサブクラスタはフェンシング競争に勝ち、クラスタに留まり、第2のサブクラスタ内のノード120(4)及び120(5)はパニックになり、クラスタを離脱する(例えば、退却する)。このように、フェンシング競争の結果(コーディネーションポイントを獲得するため)を以前の競争者ノードの累積競争結果に依存させるように要求することは、ネットワークパーティションによって引き起こされた既存のスプリットブレインに関連付けられている以前に特定された問題を防止する。
図11Bは、一実施形態に従う、フェンシング動作を実施するパーティション化されたクラスタ内のノードのブロック図である。図11Bに従うと、ノード120(1)、120(2)及び120(3)は、第1のサブクラスタの一部であり、ノード120(4)及び120(5)は第2のサブクラスタの一部である。一部の実施形態では、ノード120(4)及び120(4)は、CPRM(例えばCPRM 160(4)及び160(5)それぞれ)にアクセスし、ノード120(4)及び120(5)は、単独又は共同のいずれかで、コーディネーションポイントの大半にアクセスすることはできない。この決定があると、ノード120(4)と120(5)の両方がパニックになり、クラスタを離脱する(例えば、退却する)。一方で、第1のサブクラスタ内のノードは共にコーディネーションポイントの大半に到達することができる(例えば、CPRMによって示されるように)。したがって、第1のサブクラスタは、ノード120(1)を競争者ノードとして選択する。ノード120(1)がコーディネーションポイント170(3)を勝ち取り、競争者ノードの役割を、ノード120(1)がコーディネーションポイント170(3)を勝ち取ったという情報と共に、ノード120(2)にハンドオフする。この時点で、ノード120(2)はフェンシング競争を再開し、コーディネーションポイント170(1)及び170(2)を勝ち取る。したがって、第1のパーティション(又は第1のサブクラスタ)は、1回のハンドオフのみでフェンシング競争に勝ち、このためクラスタのためのフェイルオーバー時間は最小化される。
図12Aは、一実施形態に従う、ネットワークパーティションの後の競争者ノードを選択するためのプロセスのフロー図である。このプロセスは、ネットワークパーティションが発生したかどうかを決定することによって、1205で開始する。クラスタが2つ又はそれ以上のパーティション(又はサブクラスタ)にパーティション化された場合、プロセスは、1210で、第1のサブクラスタ(2つ又はそれ以上のサブクラスタのうちの)内の競争者ノードを選出する。前述したように、ノードは、ノードのノードIDに基づいて、又は他の何らかの方法で、競争者ノードとして、選出され、選択され、かつ/又は指定されてもよい。
1215で、プロセスは、ネットワークパーティション(例えば、第1のサブクラスタ)内のノードが共にコーディネーションポイントの大半へのアクセスを有しているかどうかを決定する。上述したように、この決定は、CPRM(例えば、図10Aに示されるようなCPRM160)にアクセスすることによってなされ得る。ネットワークパーティション(例えば、第1のサブクラスタ)内のノードが共にコーディネーションポイントの大半へのアクセスを有していない場合、プロセスは、1220で、(フェンシング)競争に負けたことをクラスタ全体(例えば、クラスタ内の全てのノード)にブロードキャストする。しかし、ネットワークパーティション(例えば、第1のサブクラスタ)内のノードが共にコーディネーションポイントへの大半へのアクセスを有している場合、プロセスは(選出された)競争者ノードが任意のコーディネーションポイントにアクセスできるかどうかを決定することによって、1225で終了する。
図12Bは、本開示の一実施形態に従う、競争者ノードがクラスタ内のコーディネーションポイントにアクセスできるかどうかを判定するためのプロセスのフローチャートである。プロセスは、競争者ノードが任意のコーディネーションポイントにアクセスできるかどうかを決定することによって、1230で開始する。競争者ノードが1つ又は2つ以上のコーディネーションポイントにアクセスすることができる場合、プロセスは、1235で、競争者ノードとのフェンシング競争(例えば、コーディネーションポイント上の他のノードの登録キーを取り出すことによって、コーディネーションポイントを「勝ち取り」、それにより他のノードがそのコーディネーションポイントを勝ち取ることを阻止するための競争)を開始する。
しかし、競争者ノードが1つ又は2つ以上のコーディネーションポイントにアクセスできない場合、プロセスは、1240で、競争者ノードがネットワークパーティション内の最後のノードであるかどうか(例えば、競争者ノードが属する他のノードの所与のサブクラスタがあるかどうか)を決定する。競争者ノードが最後のノードでない場合、1245で、プロセスは新しい競争者ノード(例えば、所与のサブクラスタ内の別のノード)を選出する。しかし、競争者ノードが最後のノード(サブクラスタ内の)である場合、プロセスは、競争に負けたことを(例えば、クラスタ内の他のノードに)ブロードキャストすることによって、1250で終了する。
図12Cは、一実施形態に従う、1つ又は2つ以上の競争者ノードによりフェンシング動作を実施するためのプロセスのフロー図である。このプロセスは、競争者ノードとのフェンシング競争を開始することによって、1255で開始する。1260で、プロセスは、1つ又は2つ以上のコーディネーションポイント(競争者ノードがアクセスするか又は到達することができる)から他のノードの登録キーを取り出す。一実施形態では、競争者ノードは、1つ又は2つ以上のコーディネーションポイントから競争者ノード自身のパーティション(又はサブクラスタ)にないノードの登録キーのみを取り出す。別の実施形態では、競争者ノードは、1つ又は2つ以上のコーディネーションポイントから、競争者ノード自身の登録キー以外のノードの全ての登録キーを取り出す。
1265で、プロセスは、競争者ノードによって勝ち取られたコーディネーションポイントが、利用可能なコーディネーションポイントの大半であるかどうかを決定する。競争者ノードがコーディネーションポイントの大半を獲得した場合、プロセスは(フェンシング)競争に勝ったことを宣言することによって、1270で終了する。しかし、競争者ノードがコーディネーションポイントの大半に勝ち取っていない場合、プロセスは、1275で、競争者ノードがネットワークパーティション内の最後のノードであるかどうか(例えば、例えば、競争者ノードが属している他のノードの所与のサブクラスタがあるかどうか)を決定する。競争者ノードがネットワークパーティションの最後のノードでない場合、プロセスは、1280で、新しい競争者ノードを選出し、新しい競争者ノードでフェンシング競争を再開する。しかし、競争者ノードがネットワークパーティション内の最後のノードである場合、プロセスは、1285で、(フェンス)競争に負けたことをブロードキャストすることによって終了する。
コーディネーションポイントを使用するI/Oフェンシングシステムを最適化するプロセス
一実施形態では、ノード起動時に、フェンシングモジュール130は、フェンシングドライバ140を使用して、コーディネーションポイントを使用してクラスタ(例えば、クラスタ110)内の1つ又は2つ以上のノードのI/Oフェンシング動作を設定する。一部の実施形態では、3(5)つ又は5つのコーディネーションポイント(例えば、奇数個のコーディネーションポイント)が、フェンシング動作(例えば、構成ファイル150によって示されるような)のために提供される。また、前述したように、コーディネーションポイントは、コーディネータディスク又はコーディネーションポイントサーバ、又はそれらの任意の組み合わせであってもよい。
一部の実施形態では、ノードがシャットダウン(例えば、ノードが何らかの理由で存在する場合、及び/又はクラスタを離脱する場合)、フェンシングモジュール130は、CPRM160を使用して、サブクラスタがコーディネーションポイントの大半(パーティション内の残っているノード)へのアクセスを有していることを決定する。CPRM160が、サブクラスタがコーディネーションポイントの大半へのアクセスを有していないことを示す場合、フェンシングモジュール130は、フェンシング競争に負けたこと及びパーティションのパニックを宣言する(例えば、残っているノードもまたクラスタを離脱する)。しかし、CPRM160が、サブクラスタがコーディネーションポイントの大半へのアクセスを有していることを示す場合、フェンシングモジュール130はフェンシング競争に勝ったこと及び、パーティションの存続を宣言する(例えば、残っているノードは動作を継続する)。
他の実施形態では、あるノードのフェンシングモジュールは、コーディネーションポイントを勝ち取るための競争の結果を、別のノードのフェンシングモジュールに送信する。例えば、ノード120(1)が競争者ノードとして選出され、1つ(又はそれ以上)のコーディネーションポイントを勝ち取る場合、フェンシングモジュール160(1)は、ノード120(2)が競争者ノードとして選出されたときに、この情報をフェンシングモジュール160(2)に送信する。このようにして、コーディネーションポイントを勝ち取る競争は、競争者ノードとして作用する各ノードから漸増式に実施される。
図13は、一実施形態に従う、(ノードの)CPRMを生成して送信するためのプロセスのフロー図である。このプロセスは、1305で、コーディネーションポイント到達可能性行列(CPRM)を生成することによって開始する。クラスタ内の各ノードは、クラスタに最初に参加するときに自身のCPRM(例えば、ノードCPRM)を生成することができる。更に、ノードがクラスタに正常に参加すると、CPRMは、クラスタ内の全てのノードの、クラスタで利用可能な1つ又は2つ以上のコーディネーションポイント(例えば、クラスタCPRM)へのアクセス可能性を追跡するために利用され得る。前述したように、クラスタのCPRMは、新しいノードがクラスタに参加するかどうか、及び/又は既存のノードがクラスタを離脱するかどうかに基づいて、クラスタ内の1つ又は2つ以上のノードにわたって更新されて複製され得る。更に、ノード(例えば競争者ノード)によってコーディネーションポイントが勝ち取られることは、クラスタのCPRMの更新ももたらし得る。プロセスは、(ノードの)CPRMをクラスタ内の他のノードに送信する(例えば、クラスタのCPRMとマージされ、結合されかつ/又は更新される)ことによって、1310で終了する。
図14は、本開示の一実施形態に従う、情報をクラスタにブロードキャストするためのプロセスのフロー図である。プロセスは、ノードが依然としてクラスタの一部であるかどうかを決定することによって、1405で開始する。ノードがもはやクラスタの一部でない場合、プロセスは、1410で、ノードのサブクラスタ内の別のノードを競争者ノードとして指定する。1415で、プロセスはCPRMにアクセスする。1420で、プロセスは、CPRM内の情報が、コーディネーションポイントの大半がアクセス可能である(サブクラスタ内の残っているノードによって、単独又は共同のいずれかで)ことを示すことを決定する。1425で、プロセスはこの情報をクラスタにブロードキャストすることによって終了する。
図15は、一実施形態に従う、一方のノードから他方のノードへのフェンシング競争の結果を送信するためのプロセスのフロー図である。プロセスは、クラスタがパーティション化されているかどうかを決定することによって、1505で開始する。クラスタがパーティション化されている場合、プロセスは、1510で、パーティション内の第1のノード(例えば、(第1の)競争者ノード第1のサブクラスタ)を使用して、フェンシング競争を実施する(コーディネーションポイントを勝ち取るために)。1515で、プロセスは、パーティション内の第1のノードが1つ又は2つ以上のコーディネーションポイントを勝ち取るが、コーディネーションポイントの大半は勝ち取らないことを決定する。1520で、プロセスは、この決定をパーティション内の第2のノード(例えば、第1のサブクラスタ内の(第2の)競争者ノード)に送信する。プロセスは、第2のノードとフェンシング競争を実施(又は継続)することによって(第1のノードからの送信された(及び受信された)決定に基づいて)、1520で終了する。
本明細書で説明するシステム、方法、及びプロセスは、コーディネーションポイントを利用するコンピューティングシステムにおいて、I/Oフェンシング動作を最適化することが理解されよう。
例示的なコンピューティング環境
図16は、本開示の一実施形態に従う、フェンシングモジュールがソフトウェア内に実装され得る態様を示す、コンピューティングシステムのブロック図である。コンピューティングシステム1600は、コンピュータ可読命令を実行することができる任意の単一又はマルチプロセッサコンピューティングデバイス又はシステムを広く表す。コンピューティングシステム1600の例としては、ワークステーション、パーソナルコンピュータ、ラップトップ、クライアント側端末、サーバ、分散型コンピューティングシステム、携帯用デバイス、ネットワークアプライアンス、ストレージ制御装置などを含む任意の1つ又は2つ以上の様々なデバイスが挙げられるが、これらに限定されない。コンピューティングシステム1600は、少なくとも1つのプロセッサ40と、メモリ50と、を含んでもよい。サーバ30を実装するソフトウェアを実行することによって、コンピューティングシステム1600は、コーディネーションポイントを利用するコンピューティングシステムにおけるI/O動作を最適化するように構成された専用コンピューティングデバイスになる。
プロセッサ40は、概して、データの処理、又は命令の解釈及び実行ができる任意のタイプ又は形式の処理装置を表す。特定の実施形態では、プロセッサ40は、ソフトウェアアプリケーション又はモジュールから命令を受け取ってもよい。これらの命令は、プロセッサ40に、本明細書に記載及び/又は例示する実施形態のうちの1つ又は2つ以上の機能を実施させてもよい。例えば、プロセッサ40は、本明細書に記載する動作の全部又は一部を実行してもよく、及び/又は実行するための手段であってもよい。プロセッサ40は、また、本明細書に記載又は例示する任意の他の動作、方法、及びプロセスを実行してもよく、及び/又は実行するための手段であってもよい。
メモリ50は、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式の揮発性又は不揮発性ストレージデバイス若しくは媒体を概して表す。例としては、限定することなく、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、又は任意の他の好適なメモリデバイスが挙げられる。必要でないけれども、特定の実施例では、コンピューティングシステム1600は、揮発性メモリユニット及び不揮発性ストレージデバイスの両方を含んでもよい。一例では、フェンシングモジュール130を実装するプログラム命令が、メモリ50にロードされてもよい。
特定の実施形態において、コンピューティングシステム1600は、また、プロセッサ40及びメモリ50に加えて、1つ若しくは2つ以上の構成要素又は要素を含んでもよい。例えば、図16に示すように、コンピューティングシステム1600は、メモリコントローラ1620と、入力/出力(I/O)コントローラ1635と、通信インターフェース1645と、を含んでもよく、これらの各々は、通信インフラストラクチャ1605を介して相互接続されてもよい。通信インフラストラクチャ1605は、コンピューティングデバイスの1つ又は2つ以上の構成要素間の通信を容易にすることが可能な任意のタイプ又は形式のインフラストラクチャを概して表す。通信インフラストラクチャ1605の例としては、限定することなく、通信バス(例えば、業界標準アーキテクチャ(ISA)、周辺構成要素相互接続(PCI)、PCIエクスプレス(PCIe)、又は類似のバス)、及びネットワークが挙げられる。
メモリコントローラ1620は、メモリ若しくはデータを取り扱うことが可能な、又はコンピューティングシステム1600の1つ又は2つ以上の構成要素の間の通信を制御することが可能な任意のタイプ又は形式のデバイスを概して表す。例えば、特定の実施形態では、メモリコントローラ1620は、通信インフラストラクチャ1605を介して、プロセッサ40、メモリ50、及びI/Oコントローラ1635間の通信を制御してもよい。特定の実施形態では、メモリコントローラ1620は、本明細書に記載又は例示する1つ若しくは2つ以上の動作又は機能を単独又は他の要素との組み合わせのいずれかで実行してもよく、及び/又は実行するための手段であってもよい。
I/Oコントローラ1635は、コンピューティングデバイスの入出力機能を調整及び/又は制御することが可能な任意のタイプ又は形式のモジュールを概して表す。例えば、I/Oコントローラ1635は、プロセッサ40、メモリ50、通信インターフェース1645、表示アダプタ1615、入力インターフェース1625、及びストレージインターフェース1640などのコンピューティングシステム1600の1つ又は2つ以上の要素間のデータの転送を制御してもよく、又はそれを容易にしてもよい。
通信インターフェース1645は、コンピューティングシステム1600と、1つ若しくは2つ以上の追加のデバイスとの間の通信を容易にすることが可能な任意のタイプ又は形式の通信デバイス又はアダプタを広く表す。例えば、特定の実施形態において通信インターフェース1645は、コンピューティングシステム1600と追加のコンピューティングシステムを含む私的又は公的ネットワークとの間の通信を容易にしてもよい。通信インターフェース1645の例としては、限定することなく、有線ネットワークインターフェース(ネットワークインターフェースカードなど)、無線ネットワークインターフェース(無線ネットワークインターフェースカードなど)、モデム、及び任意の他の好適なインターフェースが挙げられる。少なくとも1つの実施形態では、通信インターフェース1645は、インターネットなどのネットワークへの直接的なリンクを介して、リモートサーバへの直接的な接続を提供してもよい。通信インターフェース1645はまた、例えば、ローカルエリアネットワーク(イーサネット(登録商標)ネットワークなど)、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラ電話接続、衛星データ接続、又は任意の他の好適な接続を通じて、かかる接続を間接的に提供してもよい。
特定の実施形態では、通信インターフェース1645はまた、外部バス又は通信チャネルを介して、コンピューティングシステム1600と、1つ若しくは2つ以上の追加のネットワーク又はストレージデバイスとの間の通信を容易にするように構成されたホストアダプタを表してもよい。ホストアダプタの例としては、限定することなく、スモールコンピュータシステムインターフェース(SCSI)ホストアダプタ、ユニバーサルシリアルバス(USB)ホストアダプタ、米国電気電子技術者協会(IEEE)1394ホストアダプタ、シリアルアドバンストテクノロジーアタッチメント(SATA)、シリアルアタッチトSCSI(SAS)、及びエクスターナルSATA(eSATA)ホストアダプタ、アドバンスドテクノロジーアタッチメント(ATA)、及びパラレルATA(PATA)ホストアダプタ、ファイバチャネルインターフェースアダプタ、イーサネット(登録商標)アダプター等が挙げられる。通信インターフェース1645はまた、コンピューティングシステム1600が分散又は遠隔コンピューティングに関与することを可能にしてもよい。例えば、通信インターフェース1645は、実行のために、遠隔デバイスから命令を受信するか、又は遠隔デバイスに命令を送信してもよい。
図16に示すように、コンピューティングシステム1600はまた、表示アダプタ1615を介して、通信インフラストラクチャ1605に連結される少なくとも1つの表示デバイス1610を含んでもよい。表示デバイス1610は、表示アダプタ1615によって転送された情報を視覚的に表示することが可能な任意のタイプ又は形式のデバイスを概して表す。同様に、表示アダプタ1615は、表示デバイス1610上に表示するために、通信インフラストラクチャ1605から(又は当該技術分野において既知のように、フレームバッファから)、グラフィックス、テキスト、及び他のデータを転送するように構成された任意のタイプ又は形式のデバイスを概して表す。
図16に示すように、コンピューティングシステム1600は、また、入力インターフェース1625を介して通信インフラストラクチャ1605に連結される少なくとも1つの入力デバイス1630を含んでもよい。入力デバイス1630は、コンピュータ又はヒトのいずれかによって生成された入力を、コンピューティングシステム1600に提供することが可能な任意のタイプ又は形式の入力デバイスを概して表す。入力デバイス1630の例としては、限定することなく、キーボード、ポインティングデバイス、音声認識デバイス、又は任意の他の入力デバイスが挙げられる。
図16に示すように、コンピューティングシステム1600は、また、ストレージインターフェース1640を介する通信インフラストラクチャ1605へのストレージデバイス1650を含んでもよい。ストレージデバイス1650は、データ及び/又は他のコンピュータ可読命令を記憶することが可能な任意のタイプ又は形式のストレージデバイス又は媒体を概して表す。例えば、ストレージデバイス1650は、磁気ディスクドライブ(例えば、いわゆるハードドライブ)、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどを含み得る。ストレージインターフェース1640は、コンピューティングシステム1600のストレージデバイス1650と他の構成要素との間でデータを転送及び/又は送信するための任意のタイプ又は形式のインターフェース又はデバイスを概して表す。
特定の実施形態では、ストレージデバイス1650は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を記憶するように構成された取り外し可能なストレージユニットから読み取るように、及び/又はそれに書き込むように構成されてもよい。好適な取り外し可能なストレージユニットの例としては、限定することなく、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられる。ストレージデバイス1650は、また、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム1600にロードされることを可能にするための他の類似の構造又はデバイスを含んでもよい。例えば、ストレージデバイス1650は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み取り、及び書き込むように構成されてもよい。ストレージデバイス1650は、また、コンピューティングシステム1600の一部であってもよく、又は他のインターフェースシステムによってアクセスされる別個のデバイスであってもよい。
多くの他のデバイス又はサブシステムは、コンピューティングシステム1600に接続されてもよい。逆に、図16に示す構成要素及びデバイスの全てが、本明細書において説明及び/又は例示される実施形態を実践するために存在する必要があるわけではない。上記で述べたデバイス及びサブシステムはまた、図16に示すものとは異なる様式で相互接続されてもよい。
コンピューティングシステム1600はまた、任意の数のソフトウェア、ファームウェア、及び/又はハードウェア構成を採用してもよい。例えば、本明細書において開示される実施形態のうちの1つ又は2つ以上は、コンピュータ可読ストレージ媒体上にコンピュータプログラム(コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される)としてコード化され得る。コンピュータ可読ストレージ媒体の例としては、磁気ストレージ媒体(例えば、ハードディスクドライブ、及びフロッピーディスク)、光ストレージメディア(例えば、CD−、又はDVD−ROM)、電子ストレージ媒体(例えば、ソリッドステートドライブ、及びフラッシュメディア)等が挙げられる。そのようなコンピュータプログラムは、また、インターネットなどのネットワークを介してメモリに又はキャリア媒体に記憶するためにコンピューティングシステム1600に転送されてもよい。
コンピュータプログラムを含むコンピュータ可読媒体は、コンピューティングシステム1600にロードされてもよい。コンピュータ可読媒体上に記憶されたコンピュータプログラムの全部又は一部分は、次に、メモリ50及び/又はストレージデバイス1650の種々の部分に記憶されてもよい。プロセッサ40によって実行されるとき、コンピューティングシステム1600にロードされたコンピュータプログラムは、本明細書において説明及び/又は例示する実施形態のうちの1つ若しくは2つ以上の機能をプロセッサ40に実施させてもよく、及び/又はそれらを実施するための手段であってもよい。付加的に又は代替的に、本明細書に説明及び/又は例示される例示的な実施形態のうちの1つ又は2つ以上は、ファームウェア及び/又はハードウェアに実装され得る。例えば、コンピューティングシステム1600は、本明細書において開示される実施形態のうちの1つ又は2つ以上を実装するように適合された特定用途向け集積回路(ASIC)として構成されてもよい。
例示的なネットワーキング環境
図17は、本開示の一実施形態に従う、多様なコンピューティングデバイスがネットワークを介して通信し得る態様を示す、ネットワーク化されたシステムのブロック図である。特定の実施形態では、ネットワーク接続型ストレージ(NAS)デバイスは、ネットワークファイルシステム(NFS)、サーバメッセージブロック(SMB)、又はコモンインターネットファイルシステム(CIFS)などの様々なプロトコルを使用してクラスタ110と通信するように構成されてもよい。
ネットワーク20は、複数のコンピューティングデバイスの間での通信を容易にすることができる任意のタイプ又は形式のコンピュータネットワーク又はアーキテクチャを概して表す。ネットワーク20は、クラスタ110とストレージユニット1720との間での通信を容易にしてもよい。特定の実施形態では、そして、図16のコンピューティングシステム1600に関して、図16の通信インターフェース1645などの通信インターフェースは、クラスタ110とネットワーク20との間に接続性を提供するために使用されてもよい。本明細書に記載及び/又は例示する実施形態は、インターネット又は任意の特定のネットワークベース環境に限定されないことに留意されたい。例えば、ネットワーク20は、ストレージエリアネットワーク(SAN)であってもよい。
少なくとも1つの実施形態では、本明細書で開示される1つ若しくは2つ以上の実施形態のうちの全て又は一部は、コンピュータプログラムとしてコード化されてもよく、クラスタ110、サーバ30、クライアント10、及びノード120(1)〜(N)、又はこれらの任意の組み合わせにロードされて実行されてもよい。更に、本明細書に開示される1つ又は2つ以上の実施形態のうちの全て又は一部はまた、コンピュータプログラムとしてコード化され、クライアント10、サーバ30、クラスタ110、及び/又はノード120(1)〜(N)に格納され、ネットワーク20を通じて分散されてもよい。
いくつかの例では、図1A、図1B及び図2のコンピューティングデバイスの全部又は一部分は、クラウドコンピューティング又はネットワークベース環境の部分を表してもよい。クラウドコンピューティング環境は、インターネットを介して、種々のサービス及びアプリケーションを提供し得る。これらのクラウドベースのサービス(例えば、サービスとしてのソフトウェア、サービスとしてプラットフォーム、サービスとしてのインフラストラクチャなど)は、ウェブブラウザ又は他の遠隔インターフェースを通じて、アクセス可能であり得る。本明細書において説明される種々の機能は、遠隔デスクトップ環境又は任意の他のクラウドベースのコンピューティング環境を通じて提供され得る。
加えて、本明細書に記載の構成要素のうちの1つ又は2つ以上は、データ、物理的デバイス、及び/又は物理的デバイスの表現を、ある形態から他の形態に変換し得る。例えば、クライアント10、サーバ30、及び/又はノード120(1)〜(N)は、コンピューティングデバイス、クラスタ及び/又はサーバにI/Oフェンシング操作を最適化させるために、コンピューティングデバイス、クラスタ、及び/又はサーバの挙動を変換する。
1.
ノードがもはやサブクラスタの一部ではないと決定することに応答して、
サブクラスタ内の別のノードを競争者ノードとして指定することであって、
競争者ノードが行列にアクセスし、
行列が、クラスタ内の複数のコーディネーションポイントのうちの大半がサブクラスタ内の複数のノードによってアクセス可能であるかどうかを決定するための情報を含む、指定することと、
アクセスに基づいて、情報が、コーディネーションポイントの大半が複数のノードによってアクセス可能であることを示していることを決定することと、
情報をブロードキャストすることと、を含む、方法。
2.
もはやサブクラスタの一部ではないノードが、複数のコーディネーションポイントの大半へのアクセスを以前に提供していた、請求項1に記載の方法。
3.
ノードがもはやサブクラスタの一部ではないと決定した後で、別のノードを競争者ノードとして指定する前に、サブクラスタ内のいずれのノードも、コーディネーションポイントの大半へのアクセスを個別に提供することができないと決定すること、を更に含む、請求項1に記載の方法。
4.
情報をブロードキャストすることは、複数のコーディネーションポイントのうちの大半がサブクラスタ内の複数のノードによってアクセス可能であることを示す情報により、行列を更新することを含み、
情報がクラスタにブロードキャストされ、
情報がまた、競争者ノードによって実施されるフェンシング競争が成功したことを示す、請求項1に記載の方法。
5.
情報に基づいて、パーティション化されたノードが、サブクラスタ内の複数のノードによってアクセス可能な複数のコーディネーションポイントの大半のうちの1つ又は2つ以上のコーディネーションポイントにアクセスすることを禁止すること、を更に含み、
禁止が、既存のスプリットブレイン状態がクラスタ内で発生することを防止する、請求項4に記載の方法。
6.
行列が、コーディネーションポイント到達可能性行列(CPRM)であり、
CPRMがクラスタ内の複数のノードのうちの全てのノードにわたって複製される、請求項1に記載の方法。
7.
複数のコーディネーションポイントが、
1つ若しくは2つ以上のコーディネータディスク又は
1つ若しくは2つ以上のコーディネーションポイントサーバ、を含む、請求項1に記載の方法。
8.
プログラム命令を記憶する非一時的コンピュータ可読ストレージ媒体であって、プログラム命令は、
ノードがもはやサブクラスタの一部ではないと決定することに応答して、
サブクラスタ内の別のノードを競争者ノードとして指定することであって、
競争者ノードが行列にアクセスし、
行列が、クラスタ内の複数のコーディネーションポイントのうちの大半がサブクラスタ内の複数のノードによってアクセス可能であるかどうかを決定するための情報を含む、指定することと、
アクセスに基づいて、情報が、コーディネーションポイントの大半が複数のノードによってアクセス可能であることを示していることを決定することと、
情報をブロードキャストすることと、を実行可能である、非一時的コンピュータ可読ストレージ媒体。
9.
もはやサブクラスタの一部ではないノードが、複数のコーディネーションポイントの大半へのアクセスを以前に提供していた、請求項8に記載の非一時的コンピュータ可読ストレージ媒体。
10.
ノードがもはやサブクラスタの一部ではないと決定した後で、別のノードを競争者ノードとして指定する前に、サブクラスタ内のいずれのノードも、コーディネーションポイントの大半へのアクセスを個別に提供することができないと決定すること、を更に含む、請求項8に記載の非一時的コンピュータ可読ストレージ媒体。
11.
情報をブロードキャストすることは、複数のコーディネーションポイントのうちの大半がサブクラスタ内の複数のノードによってアクセス可能であることを示す情報により、行列を更新することを含み、
情報がクラスタにブロードキャストされ、
情報はまた、競争者ノードによって実施されるフェンシング競争が成功したことを示す、請求項8に記載の非一時的コンピュータ可読ストレージ媒体。
12.
情報に基づいて、パーティション化されたノードが、サブクラスタ内の複数のノードによってアクセス可能な複数のコーディネーションポイントの大半のうちの1つ又は2つ以上のコーディネーションポイントにアクセスすることを禁止することを更に含み、
禁止が、既存のスプリットブレイン状態がクラスタ内で発生することを防止する、請求項11に記載の非一時的コンピュータ可読ストレージ媒体。
13.
行列が、コーディネーションポイント到達可能性行列(CPRM)であり、
CPRMがクラスタ内の複数のノードのうちの全てのノードにわたって複製される、請求項8に記載の非一時的コンピュータ可読ストレージ媒体。
14.
1つ又は2つ以上のプロセッサと、
1つ又は2つ以上のプロセッサに結合されたメモリと、を備え、メモリは、1つ又は2つ以上のプロセッサによって実行可能なプログラム命令を記憶し、プログラム命令は、
ノードがもはやサブクラスタの一部ではないと決定することに応答して、
サブクラスタ内の別のノードを競争者ノードとして指定することであって、
競争者ノードが行列にアクセスし、
行列が、クラスタ内の複数のコーディネーションポイントのうちの大半がサブクラスタ内の複数のノードによってアクセス可能であるかどうかを決定するための情報を含む、指定することと、
アクセスに基づいて、情報が、コーディネーションポイントの大半が複数のノードによってアクセス可能であることを示していることを決定することと、
情報をブロードキャストすることと、を実行可能である、システム。
15.
もはやサブクラスタの一部ではないノードが、複数のコーディネーションポイントの大半へのアクセスを以前に提供していた、請求項14に記載のシステム。
16.
ノードがもはやサブクラスタの一部ではないと決定した後で、別のノードを競争者ノードとして指定する前に、サブクラスタ内のいずれのノードも、コーディネーションポイントの大半へのアクセスを個別に提供することができないと決定すること、を更に含む、請求項14に記載のシステム。
17.
情報をブロードキャストすることは、複数のコーディネーションポイントのうちの大半がサブクラスタ内の複数のノードによってアクセス可能であることを示す情報により、行列を更新することを含み、
情報がクラスタにブロードキャストされ、
情報がまた、競争者ノードによって実施されるフェンシング競争が成功したことを示す、請求項14に記載のシステム。
18.
情報に基づいて、パーティション化されたノードが、サブクラスタ内の複数のノードによってアクセス可能な複数のコーディネーションポイントの大半のうちの1つ又は2つ以上のコーディネーションポイントにアクセスすることを禁止することを更に含み、
禁止が、既存のスプリットブレイン状態がクラスタ内で発生することを防止する、請求項17に記載のシステム。
19.
行列が、コーディネーションポイント到達可能性行列(CPRM)であり、
CPRMがクラスタ内の複数のノードのうちの全てのノードにわたって複製される、請求項14に記載のシステム。
20.
複数のコーディネーションポイントが、
1つ若しくは2つ以上のコーディネータディスク又は
1つ若しくは2つ以上のコーディネーションポイントサーバ、を含む、請求項14に記載のシステム。
1.
クラスタが複数のネットワークパーティションにパーティション化されていることに応答して、
複数のネットワークパーティションのうちの第1のネットワークパーティション内の第1のノードを使用して、第1のノードが複数のコーディネーションポイントのうちの1つ又は2つ以上のコーディネーションポイントを勝ち取るかどうかを決定することと、
第1のノードの決定を第1のネットワークパーティション内の第2のノードに送信することと、
第2のノードを使用して、第2のノードが1つ又は2つ以上のコーディネーションポイント以外の1つ又は2つ以上の他のコーディネーションポイントを獲得するかどうかを決定することと、を含む、方法。
2.
第2のノードを使用して決定することが、
第1のノード及び第2のノードが、共同で、複数のコーディネーションポイントのうちのコーディネーションポイントの大半を勝ち取ることを更に含む、請求項1に記載の方法。
3.
1つ又は2つ以上のコーディネーションポイントを勝ち取ることが、
1つ又は2つ以上のコーディネーションポイントにアクセスすることと、
第1のネットワークパーティションにない1つ又は2つ以上のノードの1つ又は2つ以上の登録キーを、1つ又は2つ以上のコーディネーションポイントから抜き出すことと、
1つ又は2つ以上のノードが1つ又は2つ以上のコーディネーションポイントを勝ち取ることを阻止することと、を含む、請求項1に記載の方法。
4.
第1のノード及び第2のノードが共に複数のコーディネーションポイントの大半のコーディネーションポイントを勝ち取っていない場合、第2のノードの決定を第3のノードに送信することを更に含み、
第3のノードが、第1のネットワークパーティションの一部である、請求項2に記載の方法。
5.
第1のノードを使用して決定することが、第1のノードを使用して、第1のフェンシング競争を実施することを含み、
第2のノードを使用して決定することが、第2のノードに送信された第1のノードの決定に基づいて、第2のノードを使用して、第2のフェンシング競争を実施することを含む、請求項1に記載の方法。
6.
第1のノードを使用して決定することと、第2のノードを使用して決定することとは、行列にアクセスすることを含み、
行列が、コーディネーションポイント到達可能性行列(CPRM)であり、
CPRMがクラスタ内の複数のノードのうちの全てのノードにわたって複製される、請求項1に記載の方法。
7.
複数のコーディネーションポイントが、
1つ若しくは2つ以上のコーディネータディスク又は
1つ若しくは2つ以上のコーディネーションポイントサーバ、を含む、請求項1に記載の方法。
8.
第1のノードが、第1の競争者ノードとして指定され、
第1の競争者ノードが決定を第2のノードに送信した後で、
第2のノードが、第2の競争者ノードとして指定される、請求項1に記載の方法。
9.
プログラム命令を記憶する非一時的コンピュータ可読ストレージ媒体であって、プログラム命令は、
クラスタが複数のネットワークパーティションにパーティション化されていることに応答して、
複数のネットワークパーティションのうちの第1のネットワークパーティション内の第1のノードを使用して、第1のノードが複数のコーディネーションポイントのうちの1つ又は2つ以上のコーディネーションポイントを勝ち取るかどうかを決定することと、
第1のノードの決定を第1のネットワークパーティション内の第2のノードに送信することと、
第2のノードを使用して、第2のノードが1つ又は2つ以上のコーディネーションポイント以外の1つ又は2つ以上の他のコーディネーションポイントを獲得するかどうかを決定することと、を実行可能である、非一時的コンピュータ可読ストレージ媒体。
10.
第2のノードを使用した決定が、
第1のノード及び第2のノードが、共同で、複数のコーディネーションポイントのうちのコーディネーションポイントの大半を勝ち取ることを更に含む、請求項9に記載の非一時的コンピュータ可読ストレージ媒体。
11.
1つ又は2つ以上のコーディネーションポイントを勝ち取ることが、
1つ又は2つ以上のコーディネーションポイントにアクセスすることと、
第1のネットワークパーティションにない1つ又は2つ以上のノードの1つ又は2つ以上の登録キーを、1つ又は2つ以上のコーディネーションポイントから抜き出すことと、
1つ又は2つ以上のノードが1つ又は2つ以上のコーディネーションポイントを勝ち取ることを阻止することと、を含む、請求項9に記載の非一時的コンピュータ可読ストレージ媒体。
12.
第1のノード及び第2のノードが、共に、複数のコーディネーションポイントの大半のコーディネーションポイントを獲得していない場合、第2のノードの決定を第3のノードに送信することであって、
第3のノードが、第1のネットワークパーティションの一部である、送信することと、を更に含む、請求項10に記載の非一時的コンピュータ可読ストレージ媒体。
13.
第1のノードを使用して決定することが、第1のノードを使用して、第1のフェンシング競争を実施することを含み、
第2のノードを使用して決定することが、第2のノードに送信された第1のノードの決定に基づいて、第2のノードを使用して、第2のフェンシング競争を実施することを含む、請求項9に記載の非一時的コンピュータ可読ストレージ媒体。
14.
第1のノードを使用して決定することと、第2のノードを使用して決定することとは、行列にアクセスすることを含み、
行列が、コーディネーションポイント到達可能性行列(CPRM)であり、
CPRMがクラスタ内の複数のノードのうちの全てのノードにわたって複製される、請求項9に記載の非一時的コンピュータ可読ストレージ媒体。
15.
1つ又は2つ以上のプロセッサと、
1つ又は2つ以上のプロセッサに結合されたメモリと、を備え、メモリは、1つ又は2つ以上のプロセッサによって実行可能なプログラム命令を記憶し、プログラム命令は、
クラスタが複数のネットワークパーティションにパーティション化されていることに応答して、
複数のネットワークパーティションのうちの第1のネットワークパーティション内の第1のノードを使用して、第1のノードが複数のコーディネーションポイントのうちの1つ又は2つ以上のコーディネーションポイントを勝ち取るかどうかを決定することと、
第1のノードの決定を第1のネットワークパーティション内の第2のノードに送信することと、
第2のノードを使用して、第2のノードが1つ又は2つ以上のコーディネーションポイント以外の1つ又は2つ以上の他のコーディネーションポイントを獲得するかどうかを決定することと、を実行可能である、システム。
16.
第2のノードを使用した決定が、
第1のノード及び第2のノードが、共同で、複数のコーディネーションポイントのうちのコーディネーションポイントの大半を勝ち取ることを更に含む、請求項15に記載のシステム。
17.
1つ又は2つ以上のコーディネーションポイントを勝ち取ることが、
1つ又は2つ以上のコーディネーションポイントにアクセスすることと、
第1のネットワークパーティションにない1つ又は2つ以上のノードの1つ又は2つ以上の登録キーを、1つ又は2つ以上のコーディネーションポイントから抜き出すことと、
1つ又は2つ以上のノードが1つ又は2つ以上のコーディネーションポイントを勝ち取ることを阻止することと、を含む、請求項15に記載のシステム。
18.
第1のノード及び第2のノードが共に複数のコーディネーションポイントの大半のコーディネーションポイントを勝ち取っていない場合、第2のノードの決定を第3のノードに送信することを更に含み、
第3のノードが、第1のネットワークパーティションの一部である、請求項16に記載のシステム。
19.
第1のノードを使用して決定することが、第1のノードを使用して、第1のフェンシング競争を実施することを含み、
第2のノードを使用して決定することが、第2のノードに送信された第1のノードの決定に基づいて、第2のノードを使用して、第2のフェンシング競争を実施することを含む、請求項15に記載のシステム。
20.
第1のノードが、第1の競争者ノードとして指定され、
第1の競争者ノードが決定を第2のノードに送信した後で、
第2のノードが、第2の競争者ノードとして指定される、請求項15に記載のシステム。
本開示がいくつかの実施形態と関連して説明されたけれども、本開示は、本明細書で述べた特定の形式に限定されるように意図されていない。逆に、添付の請求項によって規定されるような本開示の範囲内に合理的に含まれ得るような代替形態、修正形態、及び等価物を包含するように意図されている。

Claims (20)

  1. 行列を生成することであって、
    前記行列が、第1のノードによる複数のコーディネーションポイントのうちの各コーディネーションポイントのアクセス可能性を示す情報を含む、生成することと、
    前記行列を1つ又は2つ以上の他のノードに送信することと、を含む、方法。
  2. 前記行列が、第1のコーディネーションポイント到達可能性行列(CPRM)であり、
    前記第1のノードが、クラスタに参加しようと試みており、
    前記1つ又は2つ以上の他のノードがまた、前記第1のノードと共に前記クラスタに参加しようと試みている、請求項1に記載の方法。
  3. 前記第1のノードが、前記1つ又は2つ以上の他のノードと共同で、前記複数のコーディネーションポイントの大半にアクセスできることを決定することと、
    前記決定に基づいて、前記クラスタに参加することと、を更に含む、請求項2に記載の方法。
  4. 前記第1のノードから前記1つ又は2つ以上の他のノードに送信された前記第1のCPRMが、前記1つ又は2つ以上の他のノードによって更新され、
    前記更新が、前記1つ又は2つ以上の他のノードの各々による前記複数のコーディネーションポイントのうちの前記コーディネーションポイントの各々のアクセス可能性を示す情報を含む、請求項2に記載の方法。
  5. 構成ファイルにアクセスすることと、
    前記構成ファイル内の情報に基づいて、前記複数のコーディネーションポイントの合計数を決定することと、を更に含む、請求項2に記載の方法。
  6. 前記1つ又は2つ以上の他のノードが、既に前記クラスタの一部であることを決定することであって、
    前記第1のノードが、前記1つ又は2つ以上の他のノードの一部ではない、決定することと、
    第2のCPRMを前記クラスタから要求することであって、
    前記第2のCPRMが、前記1つ又は2つ以上の他のノードの各々による前記複数のコーディネーションポイントのうちの前記コーディネーションポイントの各々のアクセス可能性を示す情報を含み、
    前記複数のコーディネーションポイントが、前記クラスタの一部である、要求することと、を更に含む、請求項5に記載の方法。
  7. 第1のクラスタスナップショットと前記第1のCPRMからの前記複数のコーディネーションポイントの合計数との積が、第2のクラスタスナップショットと前記第2のCPRMからの前記複数のコーディネーションポイントの合計数との積に等しいことを決定することと、
    前記第1のクラスタスナップショットと前記複数のコーディネーションポイントの前記合計数との積が、前記第1のクラスタスナップショット及び前記第2のスナップショットの組み合わせと前記複数のコーディネーションポイントの前記合計数との積以上であることを決定することと、
    前記第1のCPRMを前記第1のクラスタスナップショットと前記第2のクラスタスナップショットとの前記組み合わせに更新することと、
    前記更新された第1のCPRMを前記クラスタ内の前記第1のノードから前記1つ又は2つ以上の他のノードの各々に送信することと、を更に含み、
    前記更新された第1のCPRMを受信すると、前記1つ又は2つ以上の他のノードの各々が、前記第1のクラスタスナップショットと前記第2のクラスタスナップショットとの組み合わせに基づいて、前記第2のCPRMを更新する、請求項6に記載の方法。
  8. 前記複数のコーディネーションポイントが、
    1つ若しくは2つ以上のコーディネータディスク又は
    1つ若しくは2つ以上のコーディネーションポイントサーバ、を含む、請求項1に記載の方法。
  9. プログラム命令を記憶する非一時的コンピュータ可読ストレージ媒体であって、前記プログラム命令は、
    行列を生成することであって、
    前記行列が、第1のノードによる複数のコーディネーションポイントの各コーディネーションポイントのアクセス可能性を示す情報を含む、生成することと、
    前記行列を1つ又は2つ以上の他のノードに送信することと、を実行可能である、非一時的コンピュータ可読ストレージ媒体。
  10. 前記行列が、第1のコーディネーションポイント到達可能性行列(CPRM)であり、
    前記第1のノードが、クラスタに参加しようと試みており、
    前記1つ又は2つ以上の他のノードがまた、前記第1のノードと共に前記クラスタに参加しようと試みている、請求項9に記載の非一時的コンピュータ可読ストレージ媒体。
  11. 前記第1のノードが、前記1つ又は2つ以上の他のノードと共同で、前記複数のコーディネーションポイントの大半にアクセスできることを決定することと、
    前記決定に基づいて、前記クラスタに参加することと、を更に含む、請求項10に記載の非一時的コンピュータ可読ストレージ媒体。
  12. 前記第1のノードから前記1つ又は2つ以上の他のノードに送信された前記第1のCPRMが、前記1つ又は2つ以上の他のノードによって更新され、
    前記更新が、前記1つ又は2つ以上の他のノードの各々による前記複数のコーディネーションポイントのうちの前記コーディネーションポイントの各々のアクセス可能性を示す情報を含む、請求項10に記載の非一時的コンピュータ可読ストレージ媒体。
  13. 構成ファイルにアクセスすることと、
    前記構成ファイル内の情報に基づいて、前記複数のコーディネーションポイントの合計数を決定することと、を更に含む、請求項10に記載の非一時的コンピュータ可読ストレージ媒体。
  14. 前記1つ又は2つ以上の他のノードが、既に前記クラスタの一部であることを決定することであって、
    前記第1のノードが、前記1つ又は2つ以上の他のノードの一部ではない、決定することと、
    第2のCPRMを前記クラスタから要求することであって、
    前記第2のCPRMが、前記1つ又は2つ以上の他のノードの各々による前記複数のコーディネーションポイントのうちの前記コーディネーションポイントの各々のアクセス可能性を示す情報を含み、
    前記複数のコーディネーションポイントが、前記クラスタの一部である、要求することと、を更に含む、請求項13に記載の非一時的コンピュータ可読ストレージ媒体。
  15. 第1のクラスタスナップショットと前記第1のCPRMからの前記複数のコーディネーションポイントの合計数との積が、第2のクラスタスナップショットと前記第2のCPRMからの前記複数のコーディネーションポイントの合計数との積に等しいことを決定することと、
    前記第1のクラスタスナップショットと前記複数のコーディネーションポイントの前記合計数との積が、前記第1のクラスタスナップショット及び前記第2のスナップショットの組み合わせと前記複数のコーディネーションポイントの前記合計数との積以上であることを決定することと、
    前記第1のCPRMを前記第1のクラスタスナップショットと前記第2のクラスタスナップショットとの前記組み合わせに更新することと、
    前記更新された第1のCPRMを前記クラスタ内の前記第1のノードから前記1つ又は2つ以上の他のノードの各々に送信することと、を更に含み、
    前記更新された第1のCPRMを受信すると、前記1つ又は2つ以上の他のノードの各々が、前記第1のクラスタスナップショットと前記第2のクラスタスナップショットとの組み合わせに基づいて、前記第2のCPRMを更新する、請求項14に記載の非一時的コンピュータ可読ストレージ媒体。
  16. 1つ又は2つ以上のプロセッサと、
    前記1つ又は2つ以上のプロセッサに結合されたメモリと、を備え、前記メモリは、前記1つ又は2つ以上のプロセッサによって実行可能なプログラム命令を記憶し、前記プログラム命令は、
    行列を生成することであって、
    前記行列が、第1のノードによる複数のコーディネーションポイントの各コーディネーションポイントのアクセス可能性を示す情報を含む、生成することと、
    前記行列を1つ又は2つ以上の他のノードに送信することと、を実行可能である、システム。
  17. 前記行列が、第1のコーディネーションポイント到達可能性行列(CPRM)であり、
    前記第1のノードが、クラスタに参加しようと試みており、
    前記1つ又は2つ以上の他のノードがまた、前記第1のノードと共に前記クラスタに参加しようと試みている、請求項16に記載のシステム。
  18. 前記第1のノードが、前記1つ又は2つ以上の他のノードと共同で、前記複数のコーディネーションポイントの大半にアクセスできることを決定することと、
    前記決定に基づいて、前記クラスタに参加することと、を更に含む、請求項16に記載のシステム。
  19. 構成ファイルにアクセスすることと、
    前記構成ファイル内の情報に基づいて、前記複数のコーディネーションポイントの合計数を決定することと、を更に含む、請求項17に記載のシステム。
  20. 前記1つ又は2つ以上の他のノードが、既に前記クラスタの一部であることを決定することであって、
    前記第1のノードが、前記1つ又は2つ以上の他のノードの一部ではない、決定することと、
    第2のCPRMを前記クラスタから要求することであって、
    前記第2のCPRMが、前記1つ又は2つ以上の他のノードの各々による前記複数のコーディネーションポイントのうちの前記コーディネーションポイントの各々のアクセス可能性を示す情報を含み、
    前記複数のコーディネーションポイントが、前記クラスタの一部である、要求することと、
    第1のクラスタスナップショットと前記第1のCPRMからの前記複数のコーディネーションポイントの合計数との積が、第2のクラスタスナップショットと前記第2のCPRMからの前記複数のコーディネーションポイントの合計数との積に等しいことを決定することと、
    前記第1のクラスタスナップショットと前記複数のコーディネーションポイントの前記合計数との積が、前記第1のクラスタスナップショット及び前記第2のスナップショットの組み合わせと前記複数のコーディネーションポイントの前記合計数との積以上であることを決定することと、
    前記第1のCPRMを前記第1のクラスタスナップショットと前記第2のクラスタスナップショットとの前記組み合わせに更新することと、
    前記更新された第1のCPRMを前記クラスタ内の前記第1のノードから前記1つ又は2つ以上の他のノードの各々に送信することと、を更に含み、
    前記更新された第1のCPRMを受信すると、前記1つ又は2つ以上の他のノードの各々が、前記第1のクラスタスナップショットと前記第2のクラスタスナップショットとの組み合わせに基づいて、前記第2のCPRMを更新する、請求項19に記載のシステム。
JP2018515776A 2015-09-30 2016-09-29 入力/出力フェンシングの最適化 Ceased JP2018534665A (ja)

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/870,390 2015-09-30
US14/870,956 2015-09-30
US14/870,390 US10320702B2 (en) 2015-09-30 2015-09-30 Input/output fencing optimization
US14/870,920 2015-09-30
PCT/US2016/054306 WO2017058989A1 (en) 2015-09-30 2016-09-29 Input/output fencing optimization

Publications (2)

Publication Number Publication Date
JP2018534665A true JP2018534665A (ja) 2018-11-22
JP2018534665A5 JP2018534665A5 (ja) 2019-10-31

Family

ID=58407514

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018515776A Ceased JP2018534665A (ja) 2015-09-30 2016-09-29 入力/出力フェンシングの最適化

Country Status (5)

Country Link
US (3) US10341252B2 (ja)
EP (1) EP3357191B1 (ja)
JP (1) JP2018534665A (ja)
CN (1) CN108551765B (ja)
WO (1) WO2017058989A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
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 (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10116259A (ja) * 1996-05-31 1998-05-06 Sun Microsyst Inc 2ノード分散型コンピュータ・システムにおけるクオラム機構
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
US7631066B1 (en) * 2002-03-25 2009-12-08 Symantec Operating Corporation System and method for preventing data corruption in computer system clusters
US20110252270A1 (en) * 2010-04-12 2011-10-13 Symantec Corporation Updating a list of quorum disks
JP2014532921A (ja) * 2011-10-28 2014-12-08 ゼッタセット インコーポレイテッド 高可用性クラスタにおけるスプリット・ブレイン耐性フェイルオーバ
JP2015508213A (ja) * 2012-02-28 2015-03-16 マイクロソフト コーポレーション ストレージプール内のディスク所有権の調停

Family Cites Families (53)

* Cited by examiner, † Cited by third party
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
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
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
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
US8521703B2 (en) * 2010-11-05 2013-08-27 International Business Machines Corporation Multiple node/virtual input/output (I/O) server (VIOS) failure recovery in clustered partition mobility
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
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
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10116259A (ja) * 1996-05-31 1998-05-06 Sun Microsyst Inc 2ノード分散型コンピュータ・システムにおけるクオラム機構
US7631066B1 (en) * 2002-03-25 2009-12-08 Symantec Operating Corporation System and method for preventing data corruption in computer system clusters
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
US20110252270A1 (en) * 2010-04-12 2011-10-13 Symantec Corporation Updating a list of quorum disks
JP2014532921A (ja) * 2011-10-28 2014-12-08 ゼッタセット インコーポレイテッド 高可用性クラスタにおけるスプリット・ブレイン耐性フェイルオーバ
JP2015508213A (ja) * 2012-02-28 2015-03-16 マイクロソフト コーポレーション ストレージプール内のディスク所有権の調停

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ANTHONY HERR: "SYMANTEC CLUSTER SERVER 6.2 I/O FENCING DEPLOYMENT CONSIDERATIONS", [ONLINE], JPN6020039882, 2014, pages 29, ISSN: 0004505692 *

Also Published As

Publication number Publication date
US20170093647A1 (en) 2017-03-30
US10320702B2 (en) 2019-06-11
CN108551765B (zh) 2022-03-08
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
EP3357191A1 (en) 2018-08-08

Similar Documents

Publication Publication Date Title
JP2018534665A (ja) 入力/出力フェンシングの最適化
US10412066B1 (en) Hierarchical input/output fencing in clustered environments
US10990462B2 (en) Application aware input/output fencing
US10127124B1 (en) Performing fencing operations in multi-node distributed storage systems
US8533171B2 (en) Method and system for restarting file lock services at an adoptive node during a network filesystem server migration or failover
US7953890B1 (en) System and method for switching to a new coordinator resource
CN107526536B (zh) 用于管理存储系统的方法和系统
US9483367B1 (en) Data recovery in distributed storage environments
JP2007528557A (ja) スケラブルなソフトウェアをベースにしたクォーラムアーキテクチャ
GB2484086A (en) Reliability and performance modes in a distributed storage system
US20170270015A1 (en) Cluster Arbitration Method and Multi-Cluster Cooperation System
EP4191429B1 (en) Techniques to achieve cache coherency across distributed storage clusters
US20230129446A1 (en) Disaggregated storage with mutiple cluster levels
JP2014048969A (ja) サーバ、ファイル管理システム、ファイル管理方法およびファイル管理プログラム
EP3602268B1 (en) Input/output(i/o) fencing without dedicated arbitrators
US8621260B1 (en) Site-level sub-cluster dependencies
US20190058762A1 (en) Cluster computer system
CN110784558A (zh) 组长角色查询

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20180427

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190919

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190919

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200923

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201027

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210518

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210629

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210713

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20211130