JP6089884B2 - 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法 - Google Patents

情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法 Download PDF

Info

Publication number
JP6089884B2
JP6089884B2 JP2013071904A JP2013071904A JP6089884B2 JP 6089884 B2 JP6089884 B2 JP 6089884B2 JP 2013071904 A JP2013071904 A JP 2013071904A JP 2013071904 A JP2013071904 A JP 2013071904A JP 6089884 B2 JP6089884 B2 JP 6089884B2
Authority
JP
Japan
Prior art keywords
node
state
information processing
information
party
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
Application number
JP2013071904A
Other languages
English (en)
Other versions
JP2014197266A (ja
Inventor
雅寿 田村
雅寿 田村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013071904A priority Critical patent/JP6089884B2/ja
Priority to US14/197,266 priority patent/US10298478B2/en
Publication of JP2014197266A publication Critical patent/JP2014197266A/ja
Application granted granted Critical
Publication of JP6089884B2 publication Critical patent/JP6089884B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • 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/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
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Environmental & Geological Engineering (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)

Description

本件は、情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法に関する。
従来、複数のノード(ストレージ装置,情報処理装置)をそなえ、データを複数のノードに分散させて保持する分散ストレージシステム(ストレージシステム,情報処理システム)が知られている。
分散ストレージシステムにおいて、例えば、複数のノードのいずれかのノードに故障が発生した場合、分散ストレージシステムを使用するクライアントは、故障したノードへアクセスをすることができなくなる。
また、故障したノードが他のノードと冗長化されていた場合には、クライアントは、故障したノードの代わりに冗長化されたノードへアクセスをすることができる。しかし、冗長化されたノードをそなえる分散ストレージシステムは、ノードに故障が発生する前のデータの多重化状態を回復するリカバリ処理及び故障ノードの交換が行なわれるまで、冗長度が低下した信頼性の低い状態になる。
従って、分散ストレージシステムは、複数のノードの状態を監視し、ノードの故障を速やかに検出することが好ましい。
しかし、分散ストレージシステムでは、ノード又はノード間のリンクの故障により、複数のノードが分断され、分断された一方のノードと他方のノードとが、ノードの故障について異なる判断をすることがある。この状態をスプリットブレイン(Split Brain)状態という。スプリットブレイン状態の一例としては、一方のノードと他方のノードとの間でリンクの故障が発生することにより互いにアクセスができなくなる状態が発生するが、双方のノードは、互いにアクセスができなくなった相手のノードが故障したと判断する場合が挙げられる。
例えば、一方及び他方のノードが、同一データの冗長データを互いに保持する場合に、スプリットブレイン状態に陥ると、双方のノードは、それぞれの保持する冗長データを個別に更新したり、他のノードへリカバリをし、冗長データの一貫性を崩す可能性がある。
分散ストレージシステムにおいて、スプリットブレイン状態に陥ることを防止する手法としては、以下に例示する手法が知られている。
(1)複数のノードの各々が、複数のノードのうちの所定のノード(コントロールノード)へ自ノードの構成情報及び生存報告を通知する。コントロールノードは、複数のノードの各々から得た情報を集約して複数のノードを監視し、監視結果から故障したノードを検出すると、リカバリを行ない、管理者等へノードの故障を通知する。
(2)複数のノードの各々が、互いに生存報告のやり取りを行ない(情報交換フェーズ)、どのノードが監視及び故障ノードの検出を行なうかを、他のノードとの間で合意を取ることで選定する。合意を得たノード(決定ノード)は、複数のノードの各々の状態を監視し、監視結果から故障したノードを検出すると、リカバリを行ない、管理者等へノードの故障を通知する。
(3)複数のノードの各々が、所定のノードへ生存報告を行なう。故障ノードは所定のノードにより即座に検出はされず、管理者等が、所定のノードを参照し手動で故障ノードの検出及びリカバリ等の対応を行なう。
上記(1)の手法では、コントロールノードが故障ノードの検出を行ない、上記(2)の手法では、合意を得た決定ノードが故障ノードの検出を行なう。また、上記(3)の手法では、管理者等が故障ノードの検出を行なう。従って、上記(1)〜(3)の手法によれば、複数のノードで判断が行なわれるのではなく、特定のノード又は管理者が判断を行なうため、スプリットブレイン状態に陥ることを防止できる。
なお、関連する技術として、分散ストレージシステムにおいて、データの消失を防ぐため、コンピュータが、複数のストレージノードから収集した属性に基づき、ストレージノードを2以上のグループに分ける技術が知られている(例えば、特許文献1参照)。この技術では、コンピュータは、作成した各グループ内において、データを分散した分散データと、当該データと同一内容の冗長データを分散した冗長分散データとが存在しないように、分散データ及び冗長分散データを各グループに割り当てる。
また、関連する他の技術として、管理サーバが、データを保持する全てのストレージで同一のデータ・プールを構成し、異なるデータをできるだけプール内の複数の異なるストレージに分散して保持させる技術が知られている(例えば、特許文献2参照)。
さらに、関連する他の技術として、ネットワーク監視装置が、複数ノードをグループ単位に分割し、分割したグループの1つのノードから論理回線状態を取得して、論理回線の監視を行なう技術が知られている(例えば、特許文献3参照)。
また、関連する他の技術として、ネットワーク管理システムが、ノードの自装置の情報、ホップ数等の情報に基づいて形成されたグループ毎に、グループ内のノードを監視するグループ管理装置をそなえる技術が知られている(例えば、特許文献4参照)。
国際公開第WO2008/114441号パンフレット 特表2011−505617号公報 特開2010−258614号公報 特開2011−055231号公報
上記(1)の手法では、複数のノードの各々の情報が1点(コントロールノード)に集約されるため、コントロールノードがSPOF(Single Point Of Failure;単一障害点)となる。従って、コントロールノードが故障した場合、クライアントは、コントロールノードが復旧するまで分散ストレージシステムの利用が制限されるという課題がある。
上記(2)の手法では、複数のノード間で合意を形成するために複雑な手順が行なわれるため、上記(1)の手法と比較して、合意を形成するまでの時間が余計にかかる場合がある。また上記(3)の手法では、管理者等による人為的な判断が行なわれるため、ノードの故障が発生してからノードの故障が検出され、リカバリ処理が行なわれるまでに、上記(1)及び(2)の手法と比較して時間がかかる場合がある。つまり、上記(2)及び(3)の手法では、障害が発生したノードに対するリカバリ処理等の開始が遅くなり、クライアントが分散ストレージシステムの利用を制限される時間が長くなるという課題がある。
なお、上述した関連する技術は、いずれも、上記(1)の手法のように管理装置が複数のノードを管理するものであり、上述した課題については考慮されていない。
このように、複数のストレージ装置をそなえるストレージシステムにおいて、複数のストレージ装置の各々の状態を判断する上述した技術では、ストレージシステムの可用性が低下するという課題がある。
ここまで、情報処理システムがストレージシステム(分散ストレージシステム)であるものとして説明したが、これに限定されるものではない。上述した課題は、情報処理システムがそなえる複数の情報処理装置の各々が、分散データではなく他の情報処理装置とは異なるデータを保持する場合であっても、同様に生じ得る。
1つの側面では、本発明は、複数の情報処理装置をそなえる情報処理システムにおいて、可用性の低下を抑止することを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の1つとして位置付けることができる。
本件の情報処理システムは、相互に接続される複数の情報処理装置を有し、前記複数の情報処理装置間で通信を行なう情報処理システムにおいて、前記複数の情報処理装置の各々が、前記複数の情報処理装置のうちの自情報処理装置以外の他の情報処理装置の各々から、前記他の情報処理装置により判定された前記複数の情報処理装置の各々の状態に関する状態情報を受信する受信処理部と、前記受信処理部が前記他の情報処理装置の各々から受信した前記状態情報に基づいて、前記複数の情報処理装置の各々の状態を判定する判定部と、前記判定部が判定した前記複数の情報処理装置の各々の状態に関する送信用状態情報を、前記他の情報処理装置の各々へ送信する送信処理部と、をそなえてよい。また、前記判定部は、前記受信処理部が受信した前記状態情報が示す前記複数の情報処理装置の各々の状態と、前記他の情報処理装置の各々からの前記状態情報の受信状況とに基づいて、前記複数の情報処理装置の各々の状態を判定し、前記送信処理部は、第1所定時間ごとに、前記送信用状態情報を、前記他の情報処理装置の各々へ送信してよい。さらに、前記判定部は、前記第1所定時間以上の時間である第2所定時間内に前記状態情報を受信しなかった他の情報処理装置の状態を、停止の可能性を示す第1状態と判定し、前記受信処理部が受信した前記状態情報に基づいて、第1所定数以上の前記複数の情報処理装置で前記第1状態であると判定された情報処理装置の状態、又は、前記他の情報処理装置の少なくとも1つから停止を示す第2状態であると判定された情報処理装置の状態を、前記第2状態と判定してよい
第1実施形態及び第2実施形態によれば、複数の情報処理装置をそなえる情報処理システムにおいて、可用性の低下を抑止することができる。
第1実施形態の一例としてのストレージシステムの構成例を示す図である。 第1実施形態の一例としてのノードのハードウェア構成例を示す図である。 第1実施形態の一例としてのノードの機能構成例を示す図である。 第1実施形態の一例としてのノードが送受信するノード状態情報を例示する図である。 第1実施形態の一例としてのノードが管理するノード状態管理情報を例示する図である。 第1実施形態の一例としての新規ノードが送信する情報を例示する図である。 第1実施形態の一例としての新規ノードが受信する情報を例示する図である。 第1実施形態の一例としてのノードが他ノードの状態を判定するときの状態遷移の一例を示す図である。 第1実施形態の一例としての複数のノードによるノード状態情報の送受信処理の一例を説明する図である。 第1実施形態の一例としてのノードが自ノードの状態を判定するときの状態遷移の一例を示す図である。 第1実施形態の一例としての新規ノードによる起動後の動作例を説明するフローチャートである。 第1実施形態の一例としてのノードによる他ノードの状態を判定する動作例を説明するフローチャートである。 第1実施形態の一例としてのノードによる自ノードの状態を判定する動作例を説明するフローチャートである。 第2実施形態の一例としてのノードの機能構成例を示す図である。 第2実施形態の一例としてのノードが管理するパーティ管理情報を例示する図である。 第2実施形態の一例としての複数のノードによる代表ノード状態情報及びノード状態情報の送受信処理の一例を説明する図である。 第2実施形態の一例としてのノードが送受信するノード状態情報を例示する図である。 第2実施形態の一例としてのノードが送受信する代表ノード状態情報を例示する図である。 第2実施形態の一例としてのノードが管理するノード状態管理情報を例示する図である。 第2実施形態の一例としてのストレージシステムにノードが追加される例を示す図である。 図20に示すストレージシステムにおけるパーティの分割処理の一例を説明する図である。 図21に示すストレージシステムにおけるノードの削除処理及びパーティの統合処理の一例を説明する図である。 第2実施形態の一例としてのストレージシステムにおけるパーティの分割処理の具体例を説明する図である。 第2実施形態の一例としての代表ノードによる他の代表ノードの状態を判定する動作例を説明するフローチャートである。 第2実施形態の一例としてのノードによるパーティ内の他ノードが停止した場合の動作例を説明するフローチャートである。 第2実施形態の一例としてのノードによるパーティの分割処理及び統合処理の動作例を説明するフローチャートである。
以下、図面を参照して実施の形態を説明する。
〔1〕第1実施形態
〔1−1〕ストレージシステムの構成
以下、図1及び図2を参照して、第1実施形態の一例としてのストレージシステム1の構成について説明する。
図1は、第1実施形態の一例としてのストレージシステム1の構成例を示す図であり、図2は、図1に示すノード10−1〜10−5のハードウェア構成例を示す図である。
図1に示すように、第1実施形態に係るストレージシステム(情報処理システム)1は、複数(例えば5つ)のノード10−1〜10−5及び複数(例えば3つ)のスイッチ20−1〜20−3をそなえる。
なお、以下、ノード10−1〜10−5を区別しない場合には、単にノード10といい、スイッチ20−1〜20−3を区別しない場合には、単にスイッチ20という。
ストレージシステム1は、複数のノード10及びスイッチ20により、SAN(Storage Area Network)を形成し、相互に接続される複数のノード10間で通信を行なう。また、ストレージシステム1は、図示しないクライアントに接続され、クライアントに対してノード10が有する記憶領域(リソース)を提供する。
ストレージシステム1としては、分散ストレージシステム又はクラスタファイルシステム等の、データを複数のノード10に分散させて保持する種々のストレージシステムが例として挙げられる。例えば、ストレージシステム1は、Webサーバのデータベースやクラウドストレージ等に用いられることがある。
なお、複数のノード10の各々が、分散データではなく他のノード10とは異なるデータを保持してもよい。
ノード(ストレージ装置,ノード装置,情報処理装置)10は、クライアント(端末装置、図示省略)からの各種要求に応じて、ノード10がそなえる記憶部10c(図2参照)に対する各種処理を行なう。なお、ノード10としてはPC(Personal Computer)サーバ等の情報処理装置が挙げられる。
ノード10は、図2に示すように、CPU(Central Processing Unit)10a、メモリ10b、記憶部10c、ネットワークインタフェース10d、入出力部10e、記録媒体10f、及び読取部10gをそなえる。なお、ノード10−1〜10−5は、互いに同様のハードウェアをそなえることができるため、以下、任意のノード10がそなえるハードウェアについて説明する。
CPU10aは、メモリ10b、記憶部10c、ネットワークインタフェース10d、入出力部10e、記録媒体10f、及び読取部10gと接続され、種々の制御や演算を行なう演算処理装置(プロセッサ)である。CPU10aは、メモリ10b、記憶部10c、記録媒体10f、読取部10gに接続又は挿入された記録媒体10h、又は図示しないROM(Read Only Memory)等に格納されたプログラムを実行することにより、ノード10における種々の機能を実現する。なお、CPU10aに限らず、プロセッサとしては、MPU(Micro Processing Unit)等の電子回路が用いられてもよい。
メモリ10bは、種々のデータやプログラムを格納する記憶装置である。CPU10aは、プログラムを実行する際に、メモリ10bにデータやプログラムを格納し展開する。なお、メモリ10bとしては、例えばRAM(Random Access Memory)等の揮発性メモリが挙げられる。
記憶部10cは、例えばHDD(Hard Disk Drive)等の磁気ディスク装置、SSD(Solid State Drive)等の半導体ドライブ装置、又はフラッシュメモリ等の不揮発性メモリ等の、種々のデータやプログラム等を格納する1以上のハードウェアである。記憶部10cが有する記憶領域は、クライアントにより用いられる。
ネットワークインタフェース10dは、スイッチ20を介したノード10又はクライアントとの間の接続及び通信の制御を行なうコントローラである。ネットワークインタフェース10dとしては、例えば、LAN(Local Area Network)、ファイバチャネル(Fibre Channel;FC)、又はインフィニバンド(InfiniBand)(登録商標)等に準拠したインタフェースカードが挙げられる。なお、ネットワークインタフェース10dは、LANに準拠する場合、iSCSI(Internet Small Computer System Interface)に対応することが好ましい。
入出力部10eは、例えばマウスやキーボード等の入力装置及びディスプレイやプリンタ等の出力装置の少なくとも一方を含んでよい。例えば入出力部10eは、ストレージシステム1の管理者等により、後述するノード情報の設定又は参照、ログの参照、その他種々の作業に用いられる。
記録媒体10fは、フラッシュメモリやROM等の記憶装置であり、種々のデータやプログラムを記録する。読取部10gは、光ディスクやUSB(Universal Serial Bus)メモリ等のコンピュータ読取可能な記録媒体10hに記録されたデータやプログラムを読み出す装置である。
記録媒体10f及び10hの少なくとも一方には、第1実施形態に係るノード10(及び後述する第2実施形態に係るノード10A)の機能を実現する制御プログラムが格納されてもよい。すなわち、CPU10aは、記録媒体10f、又は読取部10gを介して記録媒体10hから出力された制御プログラムを、メモリ10b等の記憶装置に展開して実行することにより、ノード10の機能を実現する。
なお、上述した各ハードウェアは、互いにバスを介して通信可能に接続される。例えば、CPU10a、メモリ10b、及びネットワークインタフェース10dは、システムバスに接続される。また、例えば、記憶部10c、入出力部10e、記録媒体10f、及び読取部10gは、I/O(Input/Output)インタフェース等を介してシステムバスに接続される。なお、記憶部10cは、SCSI、SAS(Serial Attached SCSI)、ファイバチャネル、SATA(Serial Advanced Technology Attachment)等に準拠したバス(ケーブル)で、DI(Disk Interface)等のI/Oインタフェースに接続される。
なお、ノード10の上述したハードウェア構成は例示である。従って、ノード10内でのハードウェアの増減や分割等は適宜行なわれてもよい。
スイッチ(接続装置)20は、複数のノード10間又は他のスイッチ20間に接続され、スイッチ20に接続されたノード10間でやり取りされるコマンド又はデータ等の情報を中継する。スイッチ20としては、例えばL2(Layer 2)スイッチ、FCスイッチ等のハードウェアスイッチが挙げられる。
図1に例示するストレージシステム1では、スイッチ20−1は、スイッチ20−2及び20−3に接続される。また、スイッチ20−2はスイッチ20−1及びノード10−1及び10−2に、スイッチ20−3はスイッチ20−1及びノード10−3〜10−5に、それぞれ接続される。なお、スイッチ20は、図1に示すものに限られず、ノード10の数等に応じて、多段に接続されてもよいし、1つのスイッチ20が用いられてもよい。
なお、クライアントがインターネット又はイントラネット等のネットワークを介してストレージシステム1に接続される場合、スイッチ20とクライアントとの間にルータが介設されてもよい。ルータとしては、例えば、ソフトウェアルータの他、L3スイッチ等のハードウェアルータ等が挙げられる。
〔1−2〕ノードの説明
第1実施形態の一例としてのストレージシステム1は、上述のように、相互に接続される複数のノード10を有し、複数のノード10間で通信を行なう。
具体的には、第1実施形態の一例としてのノード10の各々は、以下の(a)〜(c)の処理を行なう。
(a)複数のノード10のうちの自ノード10以外の他ノード10の各々から、他ノード10により判定された複数のノード10の各々の状態に関するノード状態情報T1(図4参照)を受信する。
(b)他ノード10の各々から受信したノード状態情報T1に基づいて、複数のノード10の各々の状態を判定する。
(c)判定した複数のノード10の各々の状態に関するノード状態情報T1を、他ノード10の各々へ送信する。
なお、ノード10の状態とは、ノード10が正常に動作しているか否かを示す種別であり、詳細は後述する。
ノード10は、上記(a)〜(c)の処理を繰り返す。つまり、ノード10の各々は、自ノード10が判定(生成)したノード状態情報T1を、自ノードが正常に稼働していることを示すハートビートとして定期的に他ノード10の各々へ送信する。そして、ノード10の各々は、他ノード10からハートビートとして送信されてきたノード状態情報T1を受信し、自ノード10が保持する管理情報を更新する。これにより、ノード10は、ストレージシステム1内の複数のノード10間で各ノード10の状態を共有し、他ノード10からのノード状態情報T1に基づいて自律的に複数のノード10の各々の状態を判定することができる。
なお、ストレージシステム1において、複数のノード10の接続形態は、図1に例示したものに限定されないが、複数のノード10間が離間するほど、ノード状態情報T1の送受信においてレイテンシ又はパケットロス等が生じ得る。従って、ストレージシステム1において、ノード状態情報T1を送受信する複数のノード10は、ネットワークの品質が互いに均一となることが望ましい。
〔1−3〕ノードの構成
次に、図3〜図10を参照して、第1実施形態の一例としてのノード10の構成について説明する。
図3は、第1実施形態の一例としてのノード10の機能構成例を示す図である。図4は、ノード10が送受信するノード状態情報T1を例示する図であり、図5は、ノード10(特にノード10−1)が管理するノード状態管理情報T2を例示する図である。
ノード10は、上述した処理を行なうため、図3に例示するように、ノード状態保持部11、受信処理部12、ノード状態決定部13、送信処理部14、リカバリ処理部15、及び停止処理部16をそなえる。なお、ノード10−1〜10−5は、互いに同様の機能をそなえることができるため、以下、任意のノード10がそなえる機能について説明する。
〔1−3−1〕ノード状態保持部
ノード状態保持部11は、図5に示すノード状態管理情報T2を保持する記憶領域であり、例えば上述したメモリ10bにより実現される。
〔1−3−2〕受信処理部
受信処理部12は、上記(a)の処理を行なう。具体的には、受信処理部12は、複数のノード10のうちの自ノード10以外の他ノード10の各々から、図4に例示するノード状態情報T1を受信し、ノード状態保持部11が保持するノード状態管理情報T2(図5参照)を更新する。
ノード状態情報(状態情報)T1は、送信元のノード10で判定された各ノード10の状態を含む情報である。例えば、自ノード10が送信するノード状態情報T1には、自ノード10が判定した各ノード10の状態が含まれ、自ノード10が受信するノード状態情報T1には、受信するノード状態情報の送信元である他ノード10で判定された各ノード10の状態が含まれる。なお、ノード10は、図4に示すようにノード状態情報T1をテーブルとして生成し、送受信することができる。
図4に示すように、ノード状態情報T1は、ノード10の識別情報の一例であるノードID、ノード10ごとの状態、ノード10のアドレスの一例であるIP(Internet Protocol)アドレス、及びノード10のポート番号を含む。図4に示すノード状態情報T1は、ノード10−1〜10−5に対応するノードID“1”〜“5”の状態を含む。
一例として、ノードID“1”には、状態“Alive”、IPアドレス“192.168.0.1”、ポート番号“12345”が対応付けられる。
なお、ノード10の識別情報として、ノードIDを例に挙げたが、これに限定されるものではない。識別情報は、各ノード10を特定できるユニークな情報であればよい。例えば、識別情報として、ノード10のIPアドレス、シリアル番号、又はネットワークインタフェース10dのMAC(Media Access Control)アドレス等が用いられてもよい。
また、ノード10のアドレスとして、IPアドレスを例に挙げたが、これに限定されるものではない。アドレスは、IP以外のプロトコルにおいてノード10を特定可能な種々のアドレスが用いられてもよい。
ノード状態管理情報T2は、自ノード10及び他ノード10で判定された複数のノード10の各々の状態を管理する情報である。例えば、ノード状態管理情報T2は、自ノード10が各ノード10の状態をどう判断しているか、他ノード10が各ノード10をどう判断しているか、及び最後に各ノード10からハートビートとしてのノード状態情報T1を受信したのはいつかといった情報を含む。なお、ノード10は、図5に示すようにノード状態管理情報T2をテーブルとして生成し、管理することができる。
以下、図5の説明においては、自ノード10がノード10−1であるものとする。
図5に示すように、ノード状態管理情報T2は、図4に示すノード状態情報T1と同様に、ノード10の識別情報の一例としてのノードID、ノード10ごとの状態、ノード10のアドレスの一例としてのIPアドレス、及びノード10のポート番号を含む。また、ノード状態管理情報T2はさらに、他のノード10から受信したノード状態情報T1に含まれるノード10ごとの状態(図5中、“by 2”〜“by 5”と表記)、及び他のノード10ごとの最終更新情報を含む。図5に示すノード状態管理情報T2は、ノード10−1〜10−5に対応するノードID“1”〜“5”の状態を含む。
一例として、ノードID"1"には、自ノード10−1が判定した状態"Alive"、他ノード10−2〜10−5がそれぞれ判定した状態"Alive"、最終更新情報"1 sec ago"(1秒前)、IPアドレス"192.168.0.1"、ポート番号"12345"が対応付けられる。つまり、ノード状態管理情報T2には、受信処理部12が受信したノード状態情報T1が示す複数のノード10の各々の状態が含まれる。また、ノード状態管理情報T2には、ノード状態決定部13が含まれる自ノード10の状態に関するノード状態情報T1に関する自己状態情報が含まれる。
受信処理部12は、他ノード10の各々から上述したノード状態情報T1を受信すると、受信したノード状態情報T1に含まれるノード10ごとの状態を、ノード状態管理情報T2における対応する他ノード10の列に設定する。つまり、図5に例示する“by 2”〜“by 5”(自ノード10がノード10−1の場合)の状態は、対応する他ノード10からの情報に基づき設定される。なお、ノードID“4”の状態の説明は後述する。
また、ノード10−1の受信処理部12は、ノード10−2からノード状態情報T1を受信すると、ノード状態管理情報T2において、ノード状態情報T1に含まれるノード10ごとの状態を、“by 2”の列に設定する。また、受信処理部12は、ノード10−2に対応するノードID“2”の最終更新情報を更新する。
なお、最終更新情報は、最後にハートビートを受信したのがいつであるかを示す情報であり、図5に示す例では、最終更新情報として、現在時刻と最後に受信を行なった時刻(最終受信時刻)との差を示しているが、これに限定されるものではない。例えば、ノード10は、最終更新情報に最終受信時刻そのものを設定することで、最終更新情報を更新してもよい。また、ノード10は、ノード10ごとに、時間の経過に応じて値が変化(例えば増加)するタイマを実行し、ノード状態管理情報T2の最終更新情報では、対応するタイマ値を参照してもよい。最終更新情報にタイマ値が用いられる場合、ノード10は、最終更新情報の更新の際に、タイマのカウント値をリセットすることで、最終更新情報を更新することができる。
受信処理部12は、他ノード10からノード状態情報T1を受信した都度、受信したノード状態情報T1に基づきノード状態管理情報T2を更新してもよい。また、受信処理部12は、受信したノード状態情報T1を送信元のノード10の識別情報と対応付けてメモリ10b等に保持しておき、後述する第1所定時間ごとに、メモリ10bが保持するノード状態情報T1に基づきノード状態管理情報T2を更新してもよい。
また、受信処理部12は、上述したノード状態情報T1の受信に加え、ノード10のIPアドレス及びポート番号を受信することができる。
図6は、第1実施形態の一例としての新規ノード10が送信する情報を例示する図であり、図7は、新規ノード10が受信する情報を例示する図である。
ノード10(後述する送信処理部14)は、起動後、つまりストレージシステム1に追加されると、自ノード10のIPアドレス及びポート番号を含む情報を全てのノード10へ通知する。具体的には、ストレージシステム1に追加されたノード(新規ノード)10は、図6に例示する送信情報T3を、ストレージシステム1内の全てのノード10へブロードキャスト等により通知する。
図6に示すように、新規ノード10が送信する送信情報T3は、新規ノード10の識別情報の一例としてのノードID、新規ノード10の状態、新規ノード10のアドレスの一例としてのIPアドレス、及び新規ノード10のポート番号を含む。例えば、図6に示す送信情報T3は、新規ノード10に対応するノードID“6”の状態を含む。
一例として、ノードID“6”には、新規ノード10が判定した状態“Alive”、IPアドレス“192.168.0.6”、ポート番号“12345”が対応付けられる。
他ノード10の受信処理部12は、追加された新規ノード10から送信情報T3を通知されると、送信情報T3に含まれるIPアドレス及びポート番号、並びに送信元のノードIDの情報をノード状態管理情報T2に追加する。以後、ノード10(送信処理部14)は、追加した新規ノード10のIPアドレス及びポート番号に対してもハートビートを送信する。
また、新規ノード10(受信処理部12)は、新規ノード10が通知した送信情報T3を受け取った他ノード10の各々から、順次ハートビート(ノード状態情報T1′)を受信する。なお、新規ノード10が受け取るノード状態情報T1′は、図4に示すノード状態情報T1と同様のデータ構造であるが、新規ノード10の情報が追加されているため、便宜上、ノード状態情報T1′と表記する。
図7に示すように、新規ノード10が受信するノード状態情報T1′は、図4に示すノード状態情報T1に加えて、新規ノード10に対応するノードID“6”の状態を含む。一例として、ノードID“6”には、他ノード10が判定した新規ノード10の状態“Alive”、IPアドレス“192.168.0.6”、ポート番号“12345”が対応付けられる。
新規ノード10(受信処理部12)は、受信したノード状態情報T1′に含まれる他ノード10のIPアドレス及びポート番号、並びに送信元のノードIDの情報からノード状態管理情報T2を作成又は更新する。これにより、新規ノード10は、ノード状態情報T1′をハートビートとして定期的に送信する送信処理部14のサービスを開始することができる。
〔1−3−3〕ノード状態決定部
ノード状態決定部(判定部)13は、上記(b)の処理を行なう。具体的には、ノード状態決定部13は、ノード状態管理情報T2を参照してノード10ごとの状態を判定し、ノード状態管理情報T2に設定する。より具体的に、ノード状態決定部13は、受信処理部12が受信したノード状態情報T1が示す複数のノード10の各々の状態と、他ノード10の各々からのノード状態情報T1の受信状況とに基づいて、複数のノード10の各々の状態を判定する。
ここで、ノード10の状態及び状態遷移について説明する。
図8は、第1実施形態の一例としてのノード10が他ノード10の状態を判定するときの状態遷移の一例を示す図であり、図9は、複数のノード10によるノード状態情報T1の送受信処理の一例を説明する図である。図10は、ノード10が自ノード10の状態を判定するときの状態遷移の一例を示す図である。
なお、図9に示す例においては、説明の簡略化のため、ノード10間の接続状態のみを示し、スイッチ20の図示を省略している。
〔1−3−3−1〕ノード状態決定部が他ノードについて判定する各状態の説明
はじめに、ノード10(ノード状態決定部13)が他ノード10について判定する各状態について説明する。図8に示すように、ノード10が他ノード10について判定する状態には、Alive、Suspect、Down、及びZombieが含まれる。
Aliveは、ノード10が正常に動作している状態(稼動中)を示す。ノード状態決定部13は、ノード状態管理情報T2を参照して、最終更新情報が第2所定時間内であり、且つ第1所定数以上のノード10からSuspectと判定されていない他ノード10の状態を、Aliveと判定する。
なお、他ノード10がストレージシステム1に追加された場合、ノード状態決定部13は、追加された他ノード10に関する最初の判定において、追加された他ノード10の状態を初期状態であるAliveと判定する(図8の矢印(I)参照)。
ここで、第2所定時間としては、ノード10がノード状態情報T1を送信する時間周期である第1所定時間以上の時間とすることができる。例えば、各ノード10がノード状態情報T1を1秒(第1所定時間)ごとに送信する場合、第2所定時間は、ノード10の負荷による送信処理の遅延又は通信経路の輻輳等を考慮して、数倍〜数十倍程度の時間(例えば20秒)とすることができる。
また、第1所定数としては、例えば過半数とすることができる。
以下、第1所定時間は1秒であり、第2所定時間は20秒であり、第1所定数はノード10の数の過半数であるものとして説明する。
Suspect(第1状態)は、ノード10が故障(停止)している疑いのある状態(停止の可能性)を示す。ノード状態決定部13は、ノード状態管理情報T2を参照して、最終更新情報が第2所定時間よりも前である他ノード10の状態、つまり第2所定時間内にノード状態情報T1を受信しなかった他ノード10の状態を、Suspectと判定する。すなわち、ノード状態決定部13は、ハートビートの不達時間が閾値(第2所定時間)を超えた他ノード10の状態を、Suspectと判定する。
例えば、ノード状態決定部13は、Aliveの状態と判定した他ノード10から、20秒よりも長くノード状態情報T1を受信できない場合、当該他ノード10の状態をAliveからSuspectに遷移させる(図8の矢印(II)参照)。
また、ノード状態決定部13は、Suspectの状態と判定した他ノード10の状態が自ノード10又は他ノード10によりDownと判定される前に、当該他ノード10からノード状態情報T1を受信する場合がある。この場合、ノード状態決定部13は、当該他ノード10の状態をSuspectからAliveに遷移させる(図8の矢印(III)参照)。
Down(第2状態)は、ノード10において故障等の障害が発生している状態(停止中)を示す。ノード状態決定部13は、第1所定数以上のノード10でSuspectと判定された他ノードの状態、又は他ノード10の少なくとも1つからDownと判断された他ノード10の状態を、Downと判定する。
例えば、ノード状態決定部13がAlive又はSuspectの状態と判定した他ノード10の状態について、過半数以上のノード10でSuspectと判定される場合、又は他ノード10のうちのいずれかがDownと判定される場合がある。この場合、ノード状態決定部13は、Alive又はSuspectの状態と判定した当該他ノード10の状態を、Downと判定する(図8の矢印(IV)又は(V)参照)。
一例として、図9に示すように、ノード10−1がノード10−2、10−3、及び10−5からノード状態情報T1を1秒ごとに受け取る一方、ノード10−4からノード状態情報T1を30秒間受け取っていない場合を考える。このとき、ノード状態管理情報T2は、図5に例示する状態になる。
つまり、自ノード10−1は、ノード10−4から20秒よりも長くノード状態情報T1を受け取っていないため、ノード10−4の状態をSuspectと判定する。また、他ノード10−3及び10−5も、ノード10−4から20秒よりも長くノード状態情報T1を受け取っておらず、他ノード10−3及び10−5によるノード10−4の状態の判定結果もSuspectとなる。この場合、ノード状態決定部13は、ノード10−4の状態が過半数のノード10によりSuspectと判定されたため、ノード10−4の状態をDownに遷移させる。
このように、他ノード10に障害等が発生した場合、ノード状態管理情報T2では、障害等が発生した他ノード10の状態が、当該他ノード10のノードIDの行方向(図5中、横軸方向)に順にSuspectに遷移する(図5中、ノードID“4”参照)。そして、ノード状態決定部13は、Suspectになったノード10の数が過半数に達した場合に、当該他ノード10の状態をDownと判定するのである。
なお、図9に示す例では、ノード10−1は、ノード10−2〜10−5へノード状態情報T1を送信するが、ノード10−4は故障(停止)している(又は疑いのある)状態であるため、ノード状態情報T1はノード10−4により受信されない。
Zombie(第3状態)は、ノード10が後述するリカバリ処理部15によりリカバリ処理が行なわれている状態(リカバリ処理中)を示す。Zombieは、ノード10に故障等の障害が発生した後、障害が発生したノード10のノード情報が削除されるまでの暫定状態である。クライアント及びリカバリ処理に係わるノード10以外のノード10は、Zombieの状態のノード10へのアクセスが制限される。
具体的には、ストレージシステム1は、障害が発生したノード10について、障害が発生したノード10が保持するデータに関連するデータを持つノード10により、リカバリ処理を実行させる。リカバリ処理は、上述のように、障害が発生したノード10内のデータの冗長データを保持するノード10から、冗長データを他ノード10へコピーし、データの多重化状態を回復する処理である。
例えば、リカバリ処理部15によるリカバリ処理中に、障害が発生したノード10が復旧する場合、又は同一のノード名でストレージシステム1に追加される場合があり得る。この場合、ストレージシステム1上で障害が発生したノード10に古いデータが存在する状態で、古いデータと独立してリカバリ処理が実行される状態が発生し、データの一貫性が崩れる可能性がある。
クライアントは、ストレージシステム1内でどのノード10にデータが格納されているかを管理するテーブルを保持するが、このテーブルでは、ノード10に障害が発生したことを即座に検知できない場合がある。仮に、クライアントが、障害が発生したノード10からデータ(古いデータ)を取得してしまうと、取得したデータと、リカバリ処理が行なわれ、他ノード10にコピーされた冗長データとの間で不整合が生じることになる。
以上の理由から、ノード状態決定部13は、障害が発生したノード10の状態を、リカバリ処理が完了する(古いデータが削除される)まで、Zombieと判定する。これにより、ノード状態決定部13は、Zombieのノード10に対して、クライアント及びリカバリ処理に係わるノード10以外のノード10からアクセスできないようにし、データの一貫性が崩れることを防止する。従って、Zombieの状態である期間は、リカバリ処理が完了するまで、障害が発生したノード10から古いデータが読み出されることを抑止するガード期間であるといえる。
ノード状態決定部13は、第2所定数以上のノード10でDownと判定された他ノードの状態を、Zombieと判定する。
ここで、第2所定数としては、第1所定数以上の数、好ましくは、全てのノード10の数とすることができる。以下、第2所定数は全てのノード10の数であるものとして説明する。
例えば、ノード状態決定部13は、自ノード10を含め全てのノード10(Down又はZombieの状態のノード10を除く)でDownの状態と判定されたノード10の状態を、DownからZombieに遷移させる(図8の矢印(VI)参照)。
ノード状態決定部13は、全てのノード10からDownと判定されたノード10をZombieとすることで、全てのノード10の共通認識によって、障害が発生したノード10をリカバリすべきノード10であると確実に決定することができる。
なお、リカバリ処理が完了すると、障害が発生したノード10以外のノード10のノード状態決定部13は、自ノード10が保持するノード状態管理情報T2から、障害が発生したノード10に関する情報を削除する(図8の矢印(VII)参照)。
以上のように、ノード状態決定部13は、受信処理部12が受信したノード状態情報T1が示す複数のノード10の各々の状態、つまり図5のノード状態管理情報T2における“他ノードからの情報”に基づいて、複数のノード10の各々の状態を判定する。
また、ノード状態決定部13は、以下に説明するように、ノード状態決定部13が含まれる自ノード10の状態に関して判断を行なった自己状態情報(図の"自ノードでの判断"参照)にさらに基づいて、複数のノード10の各々の状態を判定してもよい。
〔1−3−3−2〕ノード状態決定部が自ノードについて判定する各状態の説明
次に、ノード10(ノード状態決定部13)が自ノード10について判定する各状態について説明する。図10に示すように、ノード10が自ノード10について判定する状態には、Alive、Isolate、及びDownが含まれる。
Alive(初期状態)は、ノード状態決定部13が他ノード10について判定するAliveと同様の状態であり、自ノード10が正常に動作している状態(稼動中)を示す。
自ノード10が起動したとき、ノード状態決定部13は、自ノード10に関する最初の判定において、自ノード10の状態をAliveと判定する(図10の矢印(i)参照)。
Isolate(第4状態)は、自ノード10がストレージシステム1から切り離された状態を示す。Isolateの状態になる場合としては、例えば自ノード10からスイッチ20までの経路で障害が発生した場合や、自ノード10のネットワークインタフェース10dが故障した場合等が挙げられる。
ノード状態決定部13は、ノード状態管理情報T2を参照して、第2所定時間内に第3所定数以上の他ノード10からノード状態情報T1を受信しなかった場合、自ノード10の状態を、AliveからIsolateに遷移させる。すなわち、ノード状態決定部13は、ハートビートの不達時間が閾値(第2所定時間)を超えた他ノード10の数が第3所定数以上である場合、自ノード10の状態をIsolateと判定するのである。
ここで、第3所定数としては、第1所定数と同様、例えばノード10の数の過半数とすることができる。
以下、第3所定数はノード10の数の過半数であるものとして説明する。
例えば、ノード状態決定部13は、ハートビートの不達時間が閾値を超えたノード10の数が過半数に達した場合に、自ノード10の状態をIsolateに遷移させる(図10の矢印(ii)参照)。
なお、自ノード10が経路障害等によりストレージシステム1から切り離された場合、受信処理部12は、他ノード10からハートビートを受信しない。その結果、ノード状態管理情報T2では、自ノード10で判定したノード10ごとの状態が列方向(図5中、縦軸方向)に順にSuspectに遷移する。そして、ノード状態決定部13は、Suspectになったノード10の数が過半数に達した場合に、自ノード10の状態をIsolateと判定するのである。
また、自ノード10の状態がIsolateに遷移した場合、後述する停止処理部16による停止処理により、自ノード10は停止する(図10の矢印(iii)参照)。
ところで、ノード10は、自ノード10の状態がIsolateに遷移した場合、ストレージシステム1から切り離されているため、自ノード10の状態がIsolateであることを他のノードへノード状態情報T1により伝えることができない。また、ノード10は、他ノード10の状態がIsolateになった場合にも、当該他ノード10はストレージシステム1から切り離されているため、他ノード10の状態がIsolateになったことをノード状態情報T1により検知することができない。
自ノード10の状態がIsolateに遷移した場合、他ノード10間でやり取りされるノード状態情報T1内では、自ノード10の状態としてSuspect、Down、Zombieの順で遷移する。換言すれば、ノード10は、他ノード10の状態をSuspect、Down、又はZombieと判定する場合、当該他ノード10自身で判定した状態はIsolateである可能性がある。
Down(第2状態)は、ノード状態決定部13が他ノード10について判定するDownと同様の状態であるが、Downに遷移するまでの判定内容が、他ノード10について判定する場合と異なる。ノード10(例えばノード状態決定部13)は、自ノード10内で所定の障害が発生したことを検出した場合、自ノード10の状態をAliveからDownに遷移させる。
所定の障害としては、例えば自ノード10による復旧が不可能又は困難な障害であり、ハードウェア障害等が挙げられる。なお、ノード10による自ノード10での障害の発生の検出は、既知の種々の手法により行なうことが可能であり、その詳細な説明は省略する。
ノード状態決定部13は、自ノード10に例えば復旧不可能な障害が発生した場合、自ノード10の状態を、Downと判定する(図10の矢印(iv)参照)。
また、自ノード10の状態がDownに遷移した場合、後述する停止処理部16による停止処理により、自ノード10は停止する(図10の矢印(v)参照)。
なお、ノード10は、自ノード10の状態をIsolate又はDownと判定した場合、他ノード10で判定される自ノード10の状態は、Suspect、Down、Zombieの順で遷移する。
他ノード10により、自ノード10の状態がZombieと判定されると、上述のように、自ノード10に対するリカバリ処理が実行され、自ノード10以外のノード10が保持するノード状態管理情報T2から、自ノード10に関する情報が削除される。
ノード状態決定部13は、上述のように、自ノード10及び他ノード10の状態を判定し、ノード状態管理情報T2を更新する。
具体的には、ノード状態決定部13は、自ノード10及び他ノード10の各々について判定した状態を、図5に例示するノード状態管理情報T2における“状態”の列に設定する。
ノード状態決定部13は、以上のようにして、ノード状態管理情報T2に基づき複数のノード10の各々の状態を判定することができる。つまり、ノード状態決定部13は、受信処理部12が受信したノード状態情報T1が示す複数のノード10の各々の状態と、ノード状態決定部13が含まれる自ノード10の状態に関するノード状態情報T1に関する自己状態情報とに基づいて、上記判定を行なう。
なお、ノード状態決定部13による上述した判定は、第1所定時間置きに全ノード10について一括で行なわれてもよいし、ノード10ごとに異なるタイミングで、第1所定時間置きに行なわれてもよい。
また、ノード10は、ノード状態決定部13により自ノード10の状態がDown又はIsolateと判定された場合、ノード状態保持部11が保持するノード状態管理情報T2を、記録媒体10f等の不揮発性メモリに保存してもよい。これにより、リカバリ処理後、作業者等は、ノード10の停止要因が復旧不可能又は困難な障害(Down)によるものか、ストレージシステム1から切り離されたこと(Isolate)によるものかを判断でき、障害復旧を迅速に行なうことができる。
〔1−3−4〕送信処理部
送信処理部14は、上記(c)の処理を行なう。具体的には、送信処理部14は、第1所定時間ごとに、ノード状態決定部13が判定した複数のノード10の各々の状態に関するノード状態情報T1を、他ノード10の各々へ送信する。
より具体的に、送信処理部14は、ノード状態管理情報T2を参照して、IPアドレス及びポート番号を取得し、他ノード10へ送信するノード状態情報T1の宛先ノードを判定する。また、送信処理部14は、ノード状態管理情報T2を参照して、自ノード10が判定した各ノード10についてのノードID、状態、IPアドレス、及びポート番号の情報からノード状態情報T1を生成する。そして、送信処理部14は、生成したノード状態情報T1を、ハートビートとして他ノード10の各々へ送信する。
以下、受信処理部12が受信するノード状態情報T1及び送信処理部14が送信するノード状態情報T1は、同様のデータ構造であるが、便宜上、送信処理部14が送信するノード状態情報T1を送信用ノード状態情報(送信用状態情報)T1という場合がある。
また、送信処理部14は、ノード状態情報T1の送信に加え、上述のように、自ノード10の起動後、送信情報T3(図6参照)をストレージシステム1内の全てのノード10へブロードキャスト等により通知する。
〔1−3−5〕リカバリ処理部
リカバリ処理部15は、他ノード10に対してリカバリ処理を実行する。具体的には、リカバリ処理部15は、ノード状態決定部13がZombieと判定したノード10に対して、リカバリ処理を実行する。
なお、リカバリ処理は、全てのノード10により行なわれなくても、ノード状態管理情報T2においてZombieと判定されたノード10に関係するノード10により行なわれればよい。
例えば、Zombieと判定されたノード10内のデータの冗長データ又は関連するデータを保持するノード10のリカバリ処理部15が、上記冗長データ又は関連するデータを他ノード10の記憶部10cへコピーすればよい。又は、上記冗長データ又は関連するデータのコピー先のノード10のリカバリ処理部15が、上記冗長データ又は関連するデータを保持するノード10からデータを取得し、自ノード10の記憶部10c等へ保存してもよい。
リカバリ処理部15は、リカバリ処理においてコピーが完了すると、Zombieと判定されたノード10内のデータを削除して、リカバリ処理を終わる。なお、Zombieと判定されたノード10が停止した場合等には、リカバリ処理部15は、Zombieと判定されたノード10内のデータを削除できない可能性がある。この場合、リカバリ処理部15は、Zombieと判定されたノード10内のデータの削除を行なわずに、リカバリ処理を終わってもよい。また、リカバリ処理部15は、リカバリ処理が完了すると、リカバリ処理の完了をノード状態決定部13へ通知する。
ノード状態決定部13は、リカバリ処理の完了が通知されると、Zombieと判定したノード10に関するノードID、自ノード10及び各ノード10で判定された状態、最終更新情報、IPアドレス、及びポート番号をノード状態管理情報T2から削除する。これにより、各ノード10は、Zombieと判定されたノード10をストレージシステム1から完全に切り離すことができる。
なお、ノード状態管理情報T2から情報を削除されたノード10は、例えば作業者等により、修理又は交換によりストレージシステム1へ再組込み可能な状態になると、起動され、自ノード10の状態をAliveと判定する(図10の矢印(i)参照)。このとき、上述のように、新規ノード10はIPアドレス及びポート番号を他ノード10へ通知し、各ノード10のノード状態管理情報T2に新規ノード10の情報が追加されて、使用可能な状態になる。
ところで、ストレージシステム1の運用において、作業者等は、障害が発生したノード(障害ノード)10が保持する情報の初期化、又は故障個所等の交換(ノード10全体又は部品交換等の場合)を行ない、障害ノード10の復旧を行なう。そして、作業者等は、復旧した障害ノード10をストレージシステム1へ再組込みすることで、他ノード10に新規ノード10として認識させることができる。従って、障害により低下した、障害ノード10に関するデータの多重度及びノード10の冗長度を回復させることができる。
また、復旧前の障害ノード10が使用していたIPアドレスは、他ノード10のノード状態管理情報T2から削除されているため、復旧後の障害ノード10は、再組込み後も同じIPアドレスを使いまわすことができる。従って、ストレージシステム1の管理者は、ストレージシステム1におけるIPアドレスの管理を容易に行なうことができ、利便性が高い。
〔1−3−6〕停止処理部
停止処理部16は、自ノード10に所定の障害が発生し、ノード状態決定部13が自ノード10の状態をDownと判定した場合、又は、ノード状態決定部13が自ノード10の状態をIsolateと判定した場合、自ノード10を停止させる処理を行なう。
なお、停止処理部16による停止処理は、リカバリ処理部15によるリカバリ処理が完了した後、具体的にはリカバリ処理において故障ノード10内のデータが削除された後に行なわれることが好ましい。
また、他ノード10のリカバリ処理部15が、障害が発生したノード10に対するリカバリ処理の完了後又はリカバリ処理の過程で、障害が発生したノード10の停止処理を行なってもよい。この場合、停止処理部16を省略することができる。
以上のように、第1実施形態の一例としてのストレージシステム1によれば、複数のノード10により、メッシュ状に、ノード10間でハートビートが行なわれる。ハートビートには、各ノード10で判定された複数のノード10の各々の状態が含まれ、複数のノード10間でノード10の各々の状態が共有される。
従って、ストレージシステム1は、個々のノード10が自律的に判定した他ノード10の状態の判定結果に基づき、各ノード10の状態について、信頼性の高い判定結果を得ることができる。つまり、特定のノード又は監視装置等がノードの状態を集中的に監視する場合、特定のノード等により他ノードの状態について誤った判定がされる場合がある。これに対し、ストレージシステム1によれば、各ノード10は、複数のノード10から見た各ノード10の状態を考慮して、自ノード10及び他ノード10の状態を判定することができるため、特定のノード等により誤った判定がされることを防止できる。
また、各ノード10は、判定結果を共有し、信頼性の高い判定結果を得ることができるため、スプリットブレイン状態に陥ることを抑止できる。なお、ノード10は、仮にスプリットブレイン状態に陥ったとしても、自ノード10がIsolateになると自律的に停止するため、冗長データの不整合が発生することを抑止できる。
さらに、各ノード10は、ノード10の状態をハートビート等の簡素な手法により共有するため、従来の手法と比較して、高速に、且つ容易に、自ノード10及び他ノード10の状態を判定することができる。
従って、各ノード10は、例えば、障害が発生したノード10を高速に検出することが可能となり、クライアントからストレージシステム1へのアクセスの停止時間の短縮や、信頼性が低下する時間の短縮を図ることが可能となる。
〔1−4〕動作例
次に、図11〜図13を参照して、上述の如く構成された第1実施形態の一例としてのノード10による動作例を説明する。図11は、第1実施形態の一例としての新規ノード10による起動後の動作例を説明するフローチャートである。図12は、ノード10による他ノード10の状態を判定する動作例を説明するフローチャートであり、図13は、ノード10による自ノード10の状態を判定する動作例を説明するフローチャートである。
〔1−4−1〕新規ノードによる起動後の動作例
はじめに、図11を参照して、新規ノード10による起動後の動作例を説明する。
図11に示すように、ノード(新規ノード)10が起動し(ステップS1)、ストレージシステム1内のネットワークに接続されると、新規ノード10のノード状態決定部13により、自ノード10の状態がAliveと判定される(ステップS2)。
次いで、送信処理部14により、自ノード10のIPアドレス及びポート番号等のノード情報が収集され、送信情報T3(図6参照)が生成される。そして、送信処理部14により、生成した送信情報T3がブロードキャスト等によりストレージシステム1内の全てのノード10へ送信される(ステップS3)。
送信情報T3を受信した他ノード10の各々は、新規ノード10のノード情報をノード状態管理情報T2に追加し、宛先に新規ノード10を含めてハートビート(ノード状態情報T1)を送信する。
新規ノード10では、受信処理部12により、ハートビートが待ち受けられる(ステップS4,ステップS4のNoルート)。他ノード10からハートビートが受信されると(ステップS4のYesルート)、受信処理部12により、受信したノード状態情報T1′(図7参照)から他ノード10の各々のノード情報が抽出され、ノード状態管理情報T2が作成される(ステップS5)。
そして、新規ノード10では、ノード状態管理情報T2に基づいて、送信処理部14による第1所定時間ごとにハートビートを送信するサービスが開始され(ステップS6)、新規ノード10による起動後に行なわれる処理が終了する。
〔1−4−2〕ノードによる他ノードの状態を判定する動作例
次に、図12を参照して、ノード10による他ノード10の状態を判定する動作例を説明する。
なお、図12に示すステップS11〜S23の処理は、ノード10の各々において、ノード状態決定部13により一のノード10の状態が判定される際に行なわれる処理である。従って、ステップS11〜S23の処理は、各ノード10のノード状態決定部13により、他ノード10の各々について、定期的(第1所定時間ごと)に実行される。
図12に示すように、ノード状態決定部13により、ノード状態管理情報T2内の“状態”が参照され、判定対象のノード10について直前に判定した状態がどの状態であるかが判定される(ステップS11,S16,S19)。
判定対象のノード10について直前に判定した状態がAliveである場合(ステップS11のYesルート)、ノード状態決定部13により、判定対象のノード10からのハートビートの不達時間が閾値を超えたか否かが判定される(ステップS12)。このとき、ノード状態決定部13は、ノード状態管理情報T2の“最終更新情報”の時間が第2所定時間よりも長いか否かを判定する。
ハートビートの不達時間が閾値を超えた場合(ステップS12のYesルート)、ノード状態決定部13により、判定対象のノード10の状態がSuspectと判定され(ステップS13)、処理が終了する。このとき、ノード状態決定部13は、判定対象のノード10について、ノード状態管理情報T2内の“状態”にSuspectを設定する。そして、ノード状態決定部13は、次の判定対象のノード10がある場合、次の判定対象のノード10に係る状態の判定処理に移行する。
一方、ステップS12において、ノード状態決定部13により、ハートビートの不達時間が閾値を超えていないと判定された場合(ステップS12のNoルート)、処理がステップS14に移行する。ステップS14では、ノード状態決定部13により、判定対象のノード10の状態が、過半数(第1所定値)のノード10からSuspectと判定されたか否か、又は複数のノード10のいずれかのノード10によりDownと判定された否かが判定される。
判定対象のノード10の状態が、過半数のノード10からSuspectと判定されておらず、複数のノード10のいずれかのノード10によりDownとも判定されていない場合(ステップS14のNoルート)、判定対象のノード10に対する処理が終了する。一方、判定対象のノード10の状態が、過半数のノード10からSuspectと判定された又は複数のノード10のいずれかのノード10によりDownと判定された場合(ステップS14のYesルート)、処理がステップS15に移行する。
ステップS15では、ノード状態決定部13により、判定対象のノード10の状態がDownと判定され、処理が終了する。このとき、ノード状態決定部13は、判定対象のノード10について、ノード状態管理情報T2内の“状態”にDownを設定する。
また、判定対象のノード10について直前に判定した状態がSuspectである場合(ステップS11のNoルートからステップS16のYesルート)、処理がステップS17に移行する。ステップS17では、ノード状態決定部13により、判定対象のノード10から新たなハートビートが受信されたか否か、つまりハートビートの不達時間が閾値未満となったか否かが判定される。このとき、ノード状態決定部13は、ノード状態管理情報T2の“最終更新情報”の時間が第2所定時間未満であるか否かを判定する。
新たなハートビートが受信されていない場合(ステップS17のNoルート)、処理がステップS14に移行する。一方、新たなハートビートが受信された場合(ステップS17のYesルート)、ノード状態決定部13により、判定対象のノード10の状態がAliveと判定され(ステップS18)、処理が終了する。このとき、ノード状態決定部13は、判定対象のノード10について、ノード状態管理情報T2内の“状態”にAliveを設定する。
判定対象のノード10について直前に判定した状態がDownである場合(ステップS11のNoルート,ステップS16のNoルートからステップS19のYesルート)、処理がステップS20に移行する。ステップS20では、ノード状態決定部13により、判定対象のノード10の状態が第2所定値の数のノード10(例えば全ノード10)によりDownと判定されたか否かが判定される。
全ノード10によりDownと判定されていない場合(ステップS20のNoルート)、判定対象のノード10に対する処理が終了する。一方、全ノード10によりDownと判定された場合(ステップS20のYesルート)、ノード状態決定部13により、判定対象のノード10の状態がZombieと判定される。また、自ノード10が保持するデータが判定対象のノード10が保持するデータに関連する場合、リカバリ処理部15により、判定対象のノード10に対するリカバリ処理が実行され(ステップS21)、処理が終了する。このとき、ノード状態決定部13は、判定対象のノード10について、ノード状態管理情報T2内の“状態”にZombieを設定する。
判定対象のノード10について直前に判定した状態がZombieである場合(ステップS11のNoルート,ステップS16のNoルートからステップS19のNoルート)、処理がステップS22に移行する。ステップS22では、ノード状態決定部13により、判定対象のノード10についてリカバリ処理が完了したか否かが判定される。リカバリ処理が完了していない場合、判定対象のノード10に対する処理が終了する。一方、リカバリ処理が完了した場合(ステップS22のYesルート)、ノード状態決定部13により、ノード状態管理情報T2から、判定対象のノード10に関する情報が削除され(ステップS23)、処理が終了する。
以上のように、ノード10により、一のノード10の状態の判定処理が行なわれる。
〔1−4−3〕ノードによる自ノードの状態を判定する動作例
次に、図13を参照して、ノード10による自ノード10の状態を判定する動作例を説明する。
なお、図13に示すステップS31〜S34の処理は、ノード10の各々において、ノード状態決定部13により自ノード10の状態が判定される際に行なわれる処理である。従って、ステップS31〜S34の処理は、各ノード10のノード状態決定部13により、定期的(第1所定時間ごと)に実行される。
図13に示すように、ノード状態決定部13により、自ノード10内で所定の障害の発生、例えば修復不可能な障害の発生が検出されたか否かが判定される(ステップS31)。
所定の障害の発生が検出されると(ステップS31のYesルート)、ノード状態決定部13により、自ノード10の状態がDownと判定され(ステップS32)、処理が終了する。このとき、ノード状態決定部13は、自ノード10について、ノード状態管理情報T2内の“状態”にDownを設定する。
一方、所定の障害の発生が検出されない場合(ステップS31のNoルート)、ノード状態決定部13により、ハートビートの不達時間が閾値を超えたノード数が過半数に達したか否かが判定される(ステップS33)。このとき、ノード状態決定部13は、ノード状態管理情報T2の“最終更新情報”の時間が第2所定時間よりも長い他ノード10が第3所定値以上の数であるか否かを判定する。
ハートビートの不達時間が閾値を超えたノード数が過半数である場合(ステップS33のYesルート)、ノード状態決定部13により、自ノード10の状態がIsolateと判定され(ステップS34)、処理が終了する。このとき、ノード状態決定部13は、自ノード10について、ノード状態管理情報T2内の“状態”にIsolateを設定する。
一方、ステップS33において、ノード状態決定部13により、ハートビートの不達時間が閾値を超えたノード数が過半数未満であると判定された場合(ステップS33のNoルート)、自ノード10の状態に係る判定処理が終了する。そして、ノード状態決定部13は、次の判定対象のノード10がある場合、次の判定対象のノード10に係る状態の判定処理に移行する。
なお、ステップS32又はS34において、ノード状態決定部13により、自ノード10の状態がDown又はIsolateと判定されると、自ノード10は、他ノード10のリカバリ処理部15からリカバリ処理を受ける。そして、自ノード10は、停止処理部16により、又は、他ノード10のリカバリ処理部15により、停止処理が行なわれる。
以上のように、ノード10により、自ノード10の状態の判定処理が行なわれる。
〔1−5〕第1実施形態のまとめ
このように、第1実施形態の一例としてのストレージシステム1によれば、複数のノード10の各々において、受信処理部12は、他ノード10の各々から、ノード状態情報T1を受信する。また、ノード状態決定部13は、受信処理部12が他ノード10の各々から受信したノード状態情報T1に基づいて、複数のノード10の各々の状態を判定する。さらに、送信処理部14は、ノード状態決定部13が判定した結果に基づき送信用ノード状態情報T1を、他ノード10の各々へ送信する。
従って、各々のノード10は、特定のノード又は監視装置等によりノード10の状態を集中的に監視するのではなく、他ノード10が判定した複数のノード10の状態に基づいて、自ノード10及び他ノード10を監視することができる。従って、特定のノード又は監視装置等の故障により、ストレージシステム1の利用が制限されるといった点を解消できる。また、各々のノード10が自ノード10及び他ノード10を自律的に監視するため、監視を行なうノードを決定せずに済み、さらに管理者等を介入させずに済むため、ノード10の故障後にストレージシステム1の利用が制限される時間を短縮できる。
このように、第1実施形態の一例としてのストレージシステム1によれば、複数のノード10をそなえるストレージシステム1において、複数のノード10の状態の監視に伴う可用性の低下を抑止することができる。
また、ノード状態決定部13は、受信処理部12が受信したノード状態情報T1が示す複数のノード10の各々の状態と、他ノード10の各々からのノード状態情報T1の受信状況とに基づいて、複数のノード10の各々の状態を判定する。また、送信処理部14は、第1所定時間ごとに、送信用ノード状態情報T1を、他ノード10の各々へ送信する。
これにより、各々のノード10は、第1所定時間ごとの他ノード10の各々からのノード状態情報T1の受信状況に応じて、複数のノード10の各々の状態を判定することができ、ノード状態情報T1を送信できないノード10の異常を容易に検出することができる。
さらに、ノード状態決定部13は、第2所定時間内にノード状態情報T1を受信しなかった他ノード10の状態を、Suspectと判定する。また、ノード状態決定部13は、第1所定数以上の複数のノード10でSuspectであると判定されたノード10の状態、又は、他ノード10の少なくとも1つからDownであると判定されたノード10の状態を、Downと判定する。
これにより、各々のノード10は、自ノード10でノード状態情報T1が不達になったノード10を直ちに障害等が発生したノード10であると判断せず、他ノード10の判断結果を考慮して、障害等が発生したノード10を判定することができる。これにより、ノード10は、各ノード10の状態について、信頼性の高い判定結果を得ることができる。
また、ノード状態決定部13は、第2所定数以上の複数のノード10でDownであると判定されたノード10を、Zombieと判定する。また、リカバリ処理部15は、ノード状態決定部13がZombieと判定したノード10に対して、リカバリ処理を実行する。
これにより、リカバリ処理部15は、第2所定数以上、例えば全てのノード10がDownであると判定したノード10について、リカバリ処理を行なうため、誤った判断でリカバリ処理が行なわれることを抑止できる。また、障害等が発生したノード10の状態がリカバリ処理中を示すZombie状態になることで、クライアント又はリカバリ処理を行なわないノード10が古いデータを保持するZombie状態のノード10へアクセスすることを抑止できる。
さらに、ノード状態決定部13は、自ノード10に所定の障害が発生した場合、自ノード10の状態をDownと判定する。また、ノード状態決定部13は、第2所定時間内に第3所定数以上の他ノード10からノード状態情報T1を受信しなかった場合、自ノード10の状態を、Isolateと判定する。さらに、停止処理部16は、ノード状態決定部13が自ノード10の状態をDown又はIsolateと判定した場合、自ノード10を停止させる。
これにより、クライアント又はリカバリ処理を行なわないノード10が、自ノード10が保持する古いデータへアクセスすることを抑止できる。また、Isolateになったノード10が自律的に停止するため、スプリットブレイン状態に陥ったとしても、冗長データの不整合の発生を抑止できる。
〔2〕第2実施形態
〔2−1〕ノードの説明
次に、第2実施形態の一例としてのノード10Aについて説明する。
第1実施形態及び第2実施形態に係るストレージシステム1は、多数(例えば、数十から数千台)のノードをそなえることがある。
上述のように、第1実施形態に係るストレージシステム1は、全ノード10対全ノード10の完全なメッシュ状態でハートビートの通信を行なう。
一方、第2実施形態に係るストレージシステム1は、ノード10Aをある程度(例えば数〜数十台程度)のまとまり(以下、パーティという)に分割し、パーティ内のノード10A間では完全メッシュのハートビートの通信を行なう。一方、パーティ間では、各パーティの代表のノード10A(代表ノード10A)同士による完全メッシュのハートビートの通信を行なう。
このように、第2実施形態の一例としてのストレージシステム1は、複数のノード10Aにより、階層的なノード10Aでの情報交換を行なう。これにより、ストレージシステム1は、全ノード10Aによる完全メッシュのハートビートの通信を行なうよりも、ストレージシステム1における通信負荷及び処理負荷を低減させることができる。特に、ストレージシステム1が、例えば数千台もの多数のノード10Aをそなえる場合に有効である。
〔2−2〕ノードの構成
次に、図14〜図23を参照して、第2実施形態の一例としてのノード10Aの構成について説明する。
図14は、第2実施形態の一例としてのノード10Aの機能構成例を示す図である。
第2実施形態に係るノード10Aは、第1実施形態に係るノード10と比べて、パーティ情報保持部101、パーティ間受信処理部102、パーティ間ノード状態決定部103、パーティ間送信処理部104、及びパーティ管理部105をさらにそなえる。
また、第2実施形態に係るノード10Aは、第1実施形態に係るノード10がそなえるノード状態保持部11及び受信処理部12とは一部の機能が異なるノード状態保持部11A及び受信処理部12Aをそなえる。
さらに、第2実施形態に係るノード10Aは、第1実施形態に係るノード10がそなえるノード状態決定部13及び送信処理部14とは一部の機能が異なるノード状態決定部13A及び送信処理部14Aをそなえる。
なお、ノード10Aは、上述した以外の点については、以下の説明において特に言及しない限り、ノード10と同様の構成をそなえる。従って、以下、ノード10Aの説明において、ノード10がそなえる構成と同一の符号の構成についての重複した説明は省略する。
〔2−2−1〕パーティ情報保持部及びノード状態保持部
パーティ情報保持部101は、図15に示すパーティ管理情報T4を保持する記憶領域であり、例えば上述したメモリ10bにより実現される。
図15は、第2実施形態の一例としてのノード10Aが管理するパーティ管理情報を例示する図である。
上述のように、第2実施形態の一例としてのストレージシステム1は、複数のノード10Aを数〜数十台程度の複数のパーティに分割する。
パーティ管理情報T4は、複数のパーティとパーティに属するノード10Aとを対応付けて管理する情報である。なお、ノード10Aは、図15に示すようにパーティ管理情報T4をテーブルとして生成し、送受信することができる。
図15に示すように、パーティ管理情報T4は、パーティの識別情報の一例であるパーティID、パーティに属するノード10Aの識別情報の一例であるノードID、及びパーティのバージョン番号を含む。図15に示すパーティ管理情報T4は、パーティID“A”〜“E”についての情報を含む。
一例として、パーティID“A”には、ノードID“1〜10”、バージョン番号“1”が対応付けられる。
なお、パーティの識別情報として、パーティIDを例に挙げたが、これに限定されるものではない。識別情報は、各パーティを特定できるユニークな情報であればよい。例えば、識別情報として、アルファベットの他、数値、ノードIDの範囲の最小値又は最大値、IPアドレスのマスク等が用いられてもよい。
また、ノード10の識別情報として、ノードIDを例に挙げたが、これに限定されるものではなく、第1実施形態において既述のように、ノード10Aを特定できるユニークな情報であればよい。
なお、図15に例示するパーティ管理情報T4において、ノードIDにはパーティに属するノード10AのノードIDの範囲(最小値〜最大値)が設定されているが、これに限定されるものではない。例えば、ノードIDには、パーティに属するノード10AのノードIDが複数の範囲、又は一つずつ設定されてもよい。
バージョン番号は、ノード10Aにおいて、自ノード10Aが持つパーティ管理情報T4が最新の情報であるか否かを判断するために用いられる。例えば、後述するパーティ管理部105により、パーティが分割又は統合される場合がある。この場合、分割又は統合が行なわれたパーティに属するノードIDも変化するため、各ノード10Aは、バージョン番号を参照して、最新のパーティ管理情報T4を識別するのである。
ノード状態保持部11Aは、図19に示すノード状態管理情報T7を保持する記憶領域であり、例えば上述したメモリ10bにより実現される。
〔2−2−2〕パーティ間受信処理部及び受信処理部
次に、図16〜図19を参照して、パーティ間受信処理部102及び受信処理部12について説明する。
図16は、第2実施形態の一例としての複数のノード10Aによる代表ノード状態情報T5及びノード状態情報T6の送受信処理の一例を説明する図である。図17は、ノード10Aが送受信する代表ノード状態情報T5を例示する図であり、図18は、ノード10Aが送受信するノード状態情報T6を例示する図である。図19は、ノード10Aが管理するノード状態管理情報T7を例示する図である。
なお、図16に示す例においては、説明の簡略化のため、ノード10A間の接続状態のみを示し、スイッチ20の図示を省略している。
図16に例示するように、代表ノード(代表ストレージ装置,代表情報処理装置)10Aは、複数のパーティのうちの自パーティ以外の他のパーティの各々における他の代表ノード10Aとの間で、代表ノード状態情報T5を送受信する。また、代表ノード10Aは、自パーティのパーティメンバであるメンバノード10Aへ代表ノード状態情報T5を送信し、メンバノード10Aは、自パーティの代表ノード10Aへノード状態情報T6を送信する。
なお、図16に示す例において、丸で囲われた数字は、ノードIDを示す。以下、例えばノードID“1”の代表ノード10Aを特定する場合には、代表ノード10A−1又はノード10A−1と表記する。また、例えばノードID“2”のメンバノード10Aを特定する場合には、メンバノード10A−2又はノード10A−2と表記する。
代表ノード10A及びメンバノード10Aは、特に言及しない限り互いに同様の機能をそなえることができるため、以下の説明において、任意のノード10Aがそなえる機能について説明する。
パーティ間受信処理部(グループ間受信処理部)102は、自ノード10Aがパーティの代表ノード10Aである場合に、他のパーティの各々の代表ノード10Aから、図17に例示する代表ノード状態情報T5を受信する。そして、代表ノード10Aのパーティ間受信処理部102は、受信した代表ノード状態情報T5に基づいて、ノード状態保持部11Aが保持するノード状態管理情報T7(図19参照)を更新する。
受信処理部12Aは、自ノード10Aが属するパーティ内の自ノード10A以外の他ノード10A(自パーティ内の代表ノード10Aを含む)の各々から、代表ノード状態情報T5又は図18に例示するノード状態情報T6を受信する。そして、受信処理部12Aはノード状態保持部11Aが保持するノード状態管理情報T7(図19参照)を更新する。
代表ノード状態情報(代表状態情報)T5は、送信元の代表ノード10Aにより判定された複数のパーティの代表ノード10Aの各々の状態に関する情報である。例えば、代表ノード10Aが送信する代表ノード状態情報T5には、代表ノード10Aが判定した自パーティ内のメンバノード10Aの状態と、他のパーティの代表ノード10Aから取得した他のパーティに属する全てのノード10Aの状態が含まれる。なお、代表ノード10Aは、図17に示すように代表ノード状態情報T5をテーブルとして生成し、送受信することができる。
例えば、図17に示す例では、図16に示す代表ノード10A−1は、他の代表ノード10A−11及び10A−21へ送信する代表ノード状態情報T5に、自パーティ内で判定した自パーティ内の各ノード10A−1〜10A−3の状態を含める。また、代表ノード10A−1は、代表ノード状態情報T5に、他の代表ノード10A−11及び10A−21から受信した他のパーティ内のノード10A−11〜10A−13及び10A−21〜10A−23の状態を含める。
また、代表ノード10Aは、自パーティ内のメンバノード10A−2及び10A−3に対しても他の代表ノード10Aへ送信するものと同様の代表ノード状態情報T5を送信し、メンバノード10A−2及び10A−3からはノード状態情報T6を受信する。
つまり、パーティ内の代表ノード10A及びメンバノード10Aは、互いにパーティ内のノード10Aの状態の判定結果をハートビートで通知し合い、代表ノード10Aは、自パーティ内での判定結果を全パーティの代表ノード10Aへ伝達する。
なお、代表ノード状態情報T5のデータ構造は、図4に示すノード状態情報T1と基本的に同様であるため、詳細な説明は省略する。
ノード状態情報(状態情報)T6は、送信元のノード10Aで判定された自パーティにおける他ノード(メンバノード)10Aの各々の状態を含む情報である。例えば、図18に示す例では、図16に示すメンバノード10A−2は、自パーティに属するノード10A−1及び10A−3へ送信するノード状態情報T6に、自パーティ内で判定した各ノード10A−1〜10A−3の状態を含める。なお、ノード10Aは、図18に示すようにノード状態情報T6をテーブルとして生成し、送受信することができる。
なお、ノード状態情報T6のデータ構造は、図4に示すノード状態情報T1と基本的に同様であるため、詳細な説明は省略する。
以下、代表ノード状態情報T5及びノード状態情報T6を、単にノード状態情報T5及びT6と表記する場合がある。
ノード状態管理情報T7は、自ノード10A及び全パーティの全ノード10Aで判定された複数のノード10Aの各々の状態を管理する情報である。なお、ノード10Aは、図19に示すようにノード状態管理情報T7をテーブルとして生成し、管理することができる。
以下、図19の説明においては、自ノード10Aが代表ノード10A−1であるものとする。
図19に示すように、ノード状態管理情報T7は、図5に示すノード状態管理情報T2と同様に、ノード10AのノードID、ノード10Aごとの状態、ノード10AのアドレスのIPアドレス、及びノード10Aのポート番号を含む。また、ノード状態管理情報T7はさらに、他のノード10Aから受信したノード状態情報T5又はT6に含まれるノード10Aごとの状態、及び他のノード10Aごとの最終更新情報を含む。例えば、他のノード10Aから受信したノード状態情報T5又はT6に含まれるノード10Aごとの状態には、“by 2”、“by 3”、“by 11”〜“by 13”、及び“by 21”〜“by 23”が含まれる。
図19に示すノード状態管理情報T7は、ノード10A−1〜10A−3、10A−11〜10A−13、及び10A−21〜10A−23に対応するノードID“1”〜“3”、“11”〜“13”、及び“21”〜“23”の状態を含む。
一例として、ノードID“1”には、自ノード10Aが判定した状態“Alive”、他ノード10A−2、10A−3、10A−11、及び10A−21がそれぞれ判定した状態“Alive”、最終更新情報“1 sec ago”が対応付けられる。また、ノードID“1”にはさらに、IPアドレス“192.168.0.1”、ポート番号“12345”が対応付けられる。
パーティ間受信処理部102は、他の代表ノード10Aの各々から上述した代表ノード状態情報T5を受信すると、ノード状態管理情報T7を更新する。また、受信処理部12Aは、自パーティ内の他ノード10Aの各々から上述したノード状態情報T5又はT6を受信すると、ノード状態管理情報T7を更新する。具体的には、パーティ間受信処理部102及び受信処理部12Aは、受信したノード状態情報T5又はT6に含まれるノード10Aごとの状態を、ノード状態管理情報T7における対応する他ノード10Aの列に設定する。つまり、図19に例示する他ノード10Aが判定した状態は、対応する他ノード10Aからの情報に基づき設定される。
なお、パーティ間受信処理部102及び受信処理部12Aによる、ノード状態管理情報T7の更新は、第1実施形態に係る受信処理部12による処理と同様であるため、重複した説明は省略する。
パーティ間受信処理部102及び受信処理部12Aは、受信処理部12と同様に、ノード状態情報T5又はT6を受信した都度、又は第1所定時間ごとに、ノード状態管理情報T7を更新する。
なお、受信処理部12Aは、上述したノード状態情報T5又はT6の受信に加え、図6及び図7を用いて上述したように、新規に追加されたノード10AのIPアドレス及びポート番号を受信することができる。
また、パーティ間受信処理部102は、上述した代表ノード状態情報T5の受信に加え、図15に示すパーティ管理情報T4を受信することができる。
パーティ間受信処理部102は、代表ノード10Aからパーティ管理情報T4を受信すると、ノード状態保持部11Aが保持するパーティ管理情報T4と比較する。そして、パーティ間受信処理部102は、受信したパーティ管理情報T4に、新たに追加されたパーティID、又はバージョン番号が更新されたパーティIDがある場合、当該パーティIDの情報を用いて自ノード10Aが保持するパーティ管理情報T4を更新する。
ところで、各パーティの代表ノード10Aは、所定のルールに基づいて決定される。例えば、代表ノード10Aは、各ノード10Aが保持するパーティ管理情報T4及びノード状態管理情報T7等に基づいて求められる。
一例として、代表ノード10Aは、パーティに属するノード10Aの中で、最も小さいノードIDを持つノード10Aとすることができる。このように、各ノード10Aが保持する情報から判断可能な所定のルールを予め定めておくことで、各ノード10Aは、代表ノード10Aを容易に選出することができる。
これにより、代表ノード10Aに障害等が発生した場合であっても、パーティ内のノード10Aは、所定のルールに基づき次の代表ノード10Aを選出することができる。また、代表ノード10Aは、他のパーティの代表ノード10Aが停止した場合であっても、他のパーティの新たな代表ノード10Aを推定できるため、新たな代表ノード10Aとの間で、パーティ間のハートビートの通信を継続することができる。
〔2−2−3〕パーティ間ノード状態決定部及びノード状態決定部
パーティ間ノード状態決定部(グループ間判定部)103は、パーティ間受信処理部102が他の代表ノード10Aの各々から受信した代表ノード状態情報T5に基づいて、複数の代表ノード10Aの各々の状態を判定する。
なお、パーティ間ノード状態決定部103による、代表ノード10A間でのノード10Aの各々の状態の判定手法は、第1実施形態に係るノード状態決定部13によるノード10間でのノード10の各々の状態の判定と同様である。
例えば、パーティ間ノード状態決定部103は、受信した代表ノード状態情報T5が示す複数の代表ノード10Aの各々の状態と、他の代表ノード10Aの各々からの代表ノード状態情報T5の受信状況とに基づいて、代表ノード10Aの各々の状態を判定する。
なお、代表ノード10Aは、他のパーティの代表ノード10Aの状態が全ての代表ノード10AからDownであると判定された場合、パーティ管理情報T4及びノード状態管理情報T7から、当該他のパーティにおいて次に代表ノード10Aとなるべきノード10Aを判断する。この判断は、上述のように、代表ノード10Aを選出する所定のルールに基づいて行なわれる。
そして、代表ノード10Aは、次の代表ノード10Aと判断した他のパーティのノード10Aへハートビートを送信する。代表ノード10Aは、ハートビートが疎通すると(他のパーティのノード10Aからハートビートを受信すると)、当該他のパーティのノード10Aを新たな代表ノード10Aと判断する。一方、他のパーティのノード10Aからのハートビートの不達時間が閾値を超えると、さらに次の代表ノード10Aとなるべきノード10Aを判断する。
パーティ間ノード状態決定部103は、他のパーティ内の全ノード10Aに対してハートビートが疎通しなかった場合、当該他のパーティに属する全ノード10Aが停止したと判断する。この場合、パーティ間ノード状態決定部103は、当該他のパーティに属する全ノード10Aの状態をZombieと判定し、リカバリ処理部15にリカバリ処理を実行させる。
ノード状態決定部(判定部)13Aは、受信処理部12Aが自パーティにおける他ノード10Aの各々から受信したノード状態情報T5又はT6に基づいて、自パーティにおけるノード10の各々の状態を判定する。
なお、ノード状態決定部13Aによる、自パーティ内のノード10A間でのノード10Aの各々の状態の判定手法は、第1実施形態に係るノード状態決定部13によるノード10間でのノード10の各々の状態の判定と同様である。
例えば、ノード状態決定部13Aは、受信したノード状態情報T5又はT6が示す複数のノード10Aの各々の状態と、他ノード10Aの各々からのノード状態情報T5又はT6の受信状況とに基づいて、自パーティ内のノード10Aの各々の状態を判定する。
なお、ノード状態決定部13Aは、自パーティの代表ノード10Aの状態をDownと判定した場合、自パーティ内で生存している(Alive状態の)ノード10A間で、上述した代表ノード10Aを選出する所定のルールを適用する。
そして、各ノード10Aは、自ノード10Aが代表ノード10Aに昇格するか否かを判断し、昇格すると判断した場合、代表ノード10Aとして、他のパーティの代表ノード10Aとの間でハートビートの通信を開始する。
ここで、パーティ間ノード状態決定部103及びノード状態決定部13Aによる、ノード状態管理情報T7の参照箇所及び更新箇所について説明する。なお、この説明では、パーティ間ノード状態決定部103及びノード状態決定部13Aは、ノード10A−1にそなえられるものとする。
図19に示すように、ノード状態管理情報T7における“状態”の列の、二重線で囲われた領域は、自パーティ以外の他のパーティにおいて判定された状態である。従って、ノード10A−1〜10A−3がそなえるパーティ間ノード状態決定部103及びノード状態決定部13Aは、二重線で囲われた領域(破線で四角く囲われた領域を除く)については基本的に判定及び更新を行なわない。
また、図19に示すように、ノード状態管理情報T7における“状態”の列の、破線で四角く囲われた領域は、複数のパーティの各代表ノード10Aで判定された状態である。従って、ノード10A−1がそなえるパーティ間ノード状態決定部103は、破線で四角く囲われた領域を、判定により更新する。
例えば、パーティ間ノード状態決定部103は、他の代表ノード10Aの最終更新情報を参照し、ハートビート(代表ノード状態情報T5)の到達の有無に応じてAlive又はSuspectの判定を行なう。また、パーティ間ノード状態決定部103は、他の代表ノード10Aについて、ノード状態管理情報T7における破線で丸く囲われた領域を参照し、Suspect、Down、又はZombieの判定を多数決等により行なう。
さらに、図19に示すように、ノード状態管理情報T7における“状態”の列の、実線で四角く囲われた領域は、自パーティ内の各ノード10Aで判定された状態である。従って、ノード10A−1がそなえるノード状態決定部13Aは、実線で四角く囲われた領域を、判定により更新する。
ノード状態決定部13Aは、他ノード10Aの最終更新情報を参照し、ハートビート(ノード状態情報T5又はT6)の到達の有無に応じてAlive又はSuspectの判定を行なう。また、ノード状態決定部13Aは、他ノード10Aについて、ノード状態管理情報T7における実線で角丸の四角で囲われた領域を参照し、Suspect、Down、又はZombieの判定を多数決等により行なう。
なお、パーティ間ノード状態決定部103及びノード状態決定部13Aによる判定の基準は、第1実施形態において既述のものと同様であり、詳細な説明は省略する。
また、パーティ間ノード状態決定部103及びノード状態決定部13Aは、上述のように、ノード10Aの状態を判定すると、ノード状態管理情報T7を更新する。
具体的には、パーティ間ノード状態決定部103及びノード状態決定部13Aは、自ノード10A及び他ノード10Aの各々について判定した状態を、図19に例示するノード状態管理情報T7における“状態”の列に設定する。
なお、パーティ間ノード状態決定部103及びノード状態決定部13Aによる上述した判定は、第1所定時間置きに判定対象の全ノード10Aについて一括で行なわれてもよいし、ノード10Aごとに異なるタイミングで、第1所定時間置きに行なわれてもよい。
〔2−2−4〕パーティ間送信処理部及び送信処理部
パーティ間送信処理部(グループ間送信処理部)104は、第1所定時間ごとに、パーティ間ノード状態決定部103が判定した複数の代表ノード10Aの各々の状態に関する代表ノード状態情報T5を、他の代表ノード10Aの各々へ送信する。
具体的には、パーティ間送信処理部104は、パーティ管理情報T4及びノード状態管理情報T7を参照して、上述のように所定のルールに基づき、他のパーティの代表ノード10Aを特定する。そして、パーティ間送信処理部104は、ノード状態管理情報T7から、他の代表ノード10AのIPアドレス及びポート番号を取得し、代表ノード状態情報T5の宛先ノードを判定する。
また、パーティ間送信処理部104は、ノード状態管理情報T7を参照して、全ノード10AについてのノードID、状態、IPアドレス、及びポート番号の情報から代表ノード状態情報T5を生成する。そして、パーティ間送信処理部104は、生成した代表ノード状態情報T5を、ハートビートとして他の代表ノード10Aの各々へ送信する。
また、パーティ間送信処理部104は、代表ノード状態情報T5の送信に加え、後述するパーティ管理部105によりパーティ管理情報T4が更新された場合には、パーティ管理情報T4(図14参照)をストレージシステム1内の全てのノード10Aへ通知する。なお、この通知は、ブロードキャスト等により行なわれてもよい。
また、パーティ間送信処理部104は、パーティ管理情報T4が更新されたタイミングに限らず、パーティ管理情報T4を代表ノード状態情報T5とともにハートビートとして、他の代表ノード10Aへ送信してもよい。
送信処理部14Aは、送信用ノード状態情報T6を、自パーティにおける他ノード10Aの各々へ送信する。
具体的には、送信処理部14Aは、パーティ管理情報T4及びノード状態管理情報T7を参照して、自パーティ内の他ノード10Aを特定する。そして、送信処理部14Aは、ノード状態管理情報T7から、自パーティ内の他ノード10AのIPアドレス及びポート番号を取得し、ノード状態情報T6の宛先ノードを判定する。
また、送信処理部14Aは、ノード状態管理情報T7を参照して、自ノード10Aが判定した各ノード10AについてのノードID、状態、IPアドレス、及びポート番号の情報からノード状態情報T6を生成する。そして、送信処理部14Aは、生成したノード状態情報T6を、ハートビートとして自パーティ内の他ノード10Aの各々へ送信する。
また、送信処理部14Aは、ノード状態情報T6の送信に加え、上述のように、自ノード10Aの起動後、送信情報T3(図6参照)をストレージシステム1内の全てのノード10Aへブロードキャスト等により通知する。
なお、パーティ間受信処理部102が受信する代表ノード状態情報T5及びパーティ間送信処理部104が送信する代表ノード状態情報T5は、同様のデータ構造である。また、受信処理部12Aが受信するノード状態情報T6及び送信処理部14Aが送信するノード状態情報T6は、同様のデータ構造である。以下、便宜上、パーティ間送信処理部104が送信する代表ノード状態情報T5を送信用代表ノード状態情報(送信用代表状態情報)T5といい、送信処理部14Aが送信するノード状態情報T6を送信用ノード状態情報(送信用状態情報)T6という場合がある。
〔2−2−5〕パーティ管理部
次に、図20〜図23を参照して、パーティ管理部105について説明する。
図20は、第2実施形態の一例としてのストレージシステム1にノード10Aが追加される例を示す図であり、図21は、図20に示すストレージシステム1におけるパーティの分割処理の一例を説明する図である。図22は、図21に示すストレージシステム1におけるノード10Aの削除処理及びパーティの統合処理の一例を説明する図である。図23は、第2実施形態の一例としてのストレージシステム1におけるパーティの分割処理の具体例を説明する図である。
なお、図20〜図22に示す例においては、説明の簡略化のため、ノード10A間の接続状態のみを示し、スイッチ20の図示を省略している。
パーティ管理部(管理部)105は、自ノード10Aが属するパーティに関する管理を行なう。
具体的には、パーティ管理部105は、自パーティにおけるノード10Aの追加又は削除により、自パーティに属するノード10Aの数が所定の上限又は所定の下限を超えた場合、自パーティの分割又は統合を行なう。
例えば、ストレージシステム1の運用が開始されたとき等の初期状態において、パーティが1つ又は複数ある場合、ストレージシステム1の運用に応じてパーティにノード10Aが追加される場合がある。ノード10Aの追加により、パーティを構成するノード10Aの数が多くなると、パーティ内でのハートビートの通信によりノード10Aの処理負荷及びネットワークの負荷が高まり、ストレージシステム1の性能が低下する可能性がある。
そこで、パーティ管理部105は、自パーティにおけるノード10Aの数が予め決められた上限(第4所定値)を上回った場合、自パーティから複数のノード10Aを分割し、新たなパーティを作成する。
また、逆に、パーティ管理部105は、パーティを構成するノード数が下限(第5所定値)を下回った場合、パーティを統合する。パーティを統合する理由は、少数のノード10Aを含むパーティが多数あると、代表ノード10A間のハートビートの通信による代表ノード10Aの処理負荷及びネットワーク負荷が高まるためである。また、パーティ管理情報T4が肥大化し、パーティの管理に係る処理負荷が増大することも理由の一つである。
なお、予め定められた上限及び下限としては、ストレージシステム1の規模やポリシー等によって異なるが、例えば上限を数十〜数百台程度とし、下限を数〜数十台程度とすることができる。以下、説明の簡略化のため、上限を5台、下限を2台として説明する。
パーティ管理部105によるパーティの分割又は統合に伴うパーティ管理情報T4の変更は、各パーティに所属する代表ノード10Aが、自パーティのエントリについて行なうことができる。代表ノード10Aがそなえるパーティ管理部105は、パーティ管理情報T4を変更すると、パーティ間送信処理部104を介して、ハートビートに載せて全ノード10Aへ伝達する。
なお、パーティ管理情報T4は、ブロードキャスト等により全ノード10Aへ伝達されてもよいし、代表ノード状態情報T5とともにハートビートとして各代表ノード10Aへ伝達されてもよい。パーティ管理情報T4が各代表ノード10Aへ伝達される場合、パーティ管理情報T4を受け取った代表ノード10Aは、自パーティのメンバノード10Aへ転送することが好ましい。
以下、パーティ管理部105によるパーティの分割処理及び統合処理について説明する。
図20の紙面左上に示すように、ストレージシステム1が、パーティA及びBをそなえる場合を例に挙げて説明する。なお、パーティAは、ノードID“1”、“3”、“5”、“7”、及び“9”の5つのノード10Aを有し、パーティBは、ノードID“11”、“13”、“15”、“17”、及び“19”の5つのノード10Aをそなえるものとする。また、図20の紙面右側に示すように、パーティ管理情報T4には、パーティID“A”にノードID“1〜10”が、パーティID“B”にノードID“11〜20”が、それぞれ対応付けられているものとする。
なお、パーティA及びBの代表ノード10Aは、それぞれノードID“1”及び“11”のノード10A(以下、代表ノード10A−1及び10A−11という)である。
以上の例において、パーティAにノードID“8”のノード10Aが追加される場合を想定する(図20の紙面左下及び図21の紙面左上参照)。この場合、パーティAには、6つのノードが含まれる。なお、ノードID“8”は、パーティAに対応付けられたノードIDの範囲内であるため、パーティ管理情報T4に変更はない。
代表ノード10A−1がそなえるパーティ管理部105は、自パーティAに属するノード10Aの数が上限である5つを超えるため、パーティAを分割する。
図21の紙面左下に示すように、代表ノード10A−1のパーティ管理部105は、パーティ管理情報T4及びノード状態管理情報T7を参照して、パーティAをノード数が2分の1になるように分割する。例えば、パーティ管理部105は、パーティAに属するノードIDのうち、ノードIDが小さい順に3つのノード10AをパーティAに残し、それ以外の3つのノードをパーティCとして分割する。つまり、パーティ管理部105は、パーティAを、ノードID“1”、“3”、及び“5”をそなえる新たなパーティAと、ノードID“7”〜“9”をそなえるパーティCとに分割する。
なお、パーティ管理部105は、パーティの分割において、ノード数を2分の1にする際に余りが出る場合、余りのノード10Aを分割に係る2つのパーティのいずれかに割り振る。
代表ノード10A−1のパーティ管理部105は、パーティAを分割すると、パーティ管理情報T4のパーティID“A”のエントリにおいて、ノードIDを“1〜5”に設定し、バージョン番号を“2”に変更する。また、代表ノード10A−1のパーティ管理部105は、パーティ管理情報T4にパーティID“C”のエントリを追加し、ノードID“6〜10”、バージョン番号“1”を対応付ける。
そして、代表ノード10A−1のパーティ管理部105は、変更したパーティ管理情報T4′を、パーティ間送信処理部104を介して全ノード10Aへ通知する。
なお、ノード10A−1は、新たなパーティAにおいて、引き続き代表ノード10Aとしてパーティ管理情報T4のパーティID“A”のエントリの管理を行なう。一方、パーティCでは、ノードID“7”〜“9”のノード10Aで、代表ノード10Aを選出する所定のルールが適用され、例えばノードID“7”のノード10A(以下、代表ノード10A−7という)が、代表ノード10Aになる。代表ノード10A−7は、代表ノード10A−1、10A−11とともに、代表ノード10A間でのハートビートの通信を行なうとともに、パーティCのエントリを管理する。
以上のように、代表ノード10Aがそなえるパーティ管理部105により、パーティの分割処理が行なわれる。
次いで、図22の紙面左上に示すように、パーティA内のノードID“3”及び“5”のノード10Aが障害等の発生により停止した場合を想定する。
代表ノード10A−1がそなえるパーティ管理部105は、自パーティAに属するノード10Aの数が、ノード10Aの停止に伴い下限である2つを超える(下回る)ため、パーティAを他のパーティと統合する。
図22の紙面左下に示すように、代表ノード10A−1のパーティ管理部105は、パーティ管理情報T4′及びノード状態管理情報T7を参照して、パーティAと統合する他のパーティを決定する。パーティAと統合する他のパーティとしては、例えばノード数が最も少ないパーティが挙げられる。この場合、代表ノード10A−1のパーティ管理部105は、自パーティA以外でノード数が最も少ないパーティCを統合対象のパーティに決定する。
代表ノード10A−1のパーティ管理部105は、統合対象のパーティを決定すると、パーティ管理情報T4′のパーティID“A”のエントリにおいて、ノードIDをパーティCとマージさせて、“1〜10”に設定し、バージョン番号を“3”に変更する。また、代表ノード10A−7のパーティ管理部105は、パーティ管理情報T4′からパーティID“C”のエントリを削除する。
そして、代表ノード10A−1のパーティ管理部105は、変更したパーティ管理情報T4″を、パーティ間送信処理部104を介して全ノード10Aへ通知する。
なお、ノード10A−1は、新たなパーティAにおいて、引き続き代表ノード10Aとしてパーティ管理情報T4のパーティID“A”のエントリの管理を行なう。一方、パーティCの代表ノード10A−7は、新たなパーティAにおいて代表ノード10Aを選出する所定のルールの敗者であるので、メンバノード10A−7に降格する。
また、図22に示す例では、パーティAとパーティCとが統合されたため、ノードIDも“1〜5”と“6〜10”とがマージされて“1〜10”になった。しかし、パーティ管理情報T4の状態によっては、統合する2つのパーティのノードIDの範囲が離れ、間に存在するノードIDが他のパーティを構成する場合も考えられる。このような場合、統合後のパーティに属するノードIDは、1つの範囲ではなく、複数の範囲で又は1つずつ設定されてもよい。
以上のように、代表ノード10Aがそなえるパーティ管理部105により、パーティの統合処理が行なわれる。
なお、代表ノード10Aのパーティ管理部105は、所定時間ごとに、自パーティのノード10Aの数が上限に達したか否か、及び下限を下回ったか否かを判定することができる。
また、代表ノード10Aのパーティ管理部105は、ストレージシステム1に追加された新規ノード10Aから送信される送信情報T3を受信したことを契機に、自パーティのノード10Aの数が上限に達したか否かを判定してもよい。
さらに、代表ノード10Aのパーティ管理部105は、自パーティ内のノード10Aに障害等が発生し、当該ノード10Aのリカバリ処理が完了したことを契機に、自パーティのノード10Aの数が下限を下回ったか否かを判定してもよい。
上述したパーティ管理部105の説明では、パーティ管理部105は、パーティの分割及び統合に係るノード10Aの選定を、ノードIDの値に基づいて行なうものとして説明した。しかし、ストレージシステム1において、ノード10A間のハートビートの通信は、ノード10A間の距離に応じたレイテンシやパケットロスの影響を受ける。
そこで、パーティ管理部105は、以下で説明するように、パーティの分割及び統合に係るノード10Aの選定を、例えばノード10Aが接続されるスイッチ20に基づいて行なうことが好ましい。なお、以下の説明は、管理者等による、ストレージシステム1の運用開始前のパーティの初期設定の際や、運用中においてパーティの構成が複雑化したことによるパーティの再設定の際にも、同様に考慮されることが好ましい。
一例として、パーティの初期設定の際に、1つのスイッチ20に接続されるノード10A群が同じパーティに設定されることが考えられる。図23の紙面上側に示す例では、スイッチ20に、ノード10A−1〜10A−4が接続され、これらノード10A−1〜10A−4が1つのパーティを構成する。なお、スイッチ20のポート数は4つであるものとする。
ストレージシステム1へのノード10A−5及び10A−6の追加に伴い、ノード10Aの数が1つのスイッチ20に収まらなくなると、作業者等により、スイッチ20の増設及びトポロジの調整が行なわれる。例えば、図23の紙面下側に示すように、スイッチ20−1にノード10A−1〜10A−3が接続され、スイッチ20−2にノード10A−4〜10A−6が接続される。また、スイッチ20−1及び20−2間が接続される。
代表ノード10Aのパーティ管理部105は、ノード10A−5及び10A−6が追加されると(ノード10Aが図23の紙面下側に示す接続状態になると)、ノード10A及びスイッチ20の接続関係に関する情報を取得する。例えば、パーティ管理部105は、スイッチ20が保持する各ポートの接続先の情報等を取得することで、ノード10A及びスイッチ20の接続関係に関する情報を取得(推定)することができる。なお、スイッチ20からの接続先の情報等の取得は、既知の種々の手法により行なうことが可能であり、その詳細な説明は省略する。また、パーティ管理部105は、作業者等から、入出力部10eを介してノード10A及びスイッチ20の接続関係に関する情報を入力されてもよい。
そして、パーティ管理部105は、取得したノード10A及びスイッチ20の接続関係から、例えば、パーティを、スイッチ20−1に接続されるノード10A群と、スイッチ20−2に接続されるノード10A群とに分割する。
このように、パーティ管理部105は、自パーティにおけるノード10A及びスイッチ20の物理的な接続関係に関する情報に基づいて、パーティから分割するノード10Aを決定することができる。
なお、パーティ管理部105は、ノード10A及びスイッチ20の接続関係に関する情報として、代表ノード10Aからパーティ内の他ノード10Aの各々までのホップ数を検出してもよい。これは、ホップ数が近いノード10A同士は、同じスイッチ20に接続されている可能性が高いと推測できるからである。
ここまで、図23を参照してパーティ管理部105によるパーティの分割処理について説明したが、パーティ管理部105によるパーティの統合処理についても同様である。
すなわち、パーティ管理部105は、自パーティと統合する他のパーティとして、ノード数が少ないパーティを選択するのではなく、ノード10A及びスイッチ20の接続関係に基づき選択してもよい。
〔2−3〕動作例
次に、図24〜図26を参照して、上述の如く構成された第2実施形態の一例としてのノード10Aによる動作例を説明する。図24は、第2実施形態の一例としての代表ノード10Aによる他の代表ノード10Aの状態を判定する動作例を説明するフローチャートである。図25は、ノード10Aによるパーティ内の他ノード10Aが停止した場合の動作例を説明するフローチャートである。図26は、ノード10Aによるパーティの分割処理及び統合処理の動作例を説明するフローチャートである。
〔2−3−1〕代表ノードによる他の代表ノードの状態を判定する動作例
はじめに、図24を参照して、代表ノード10Aによる他の代表ノード10Aの状態を判定する動作例を説明する。
なお、図24に示すステップS41〜S55の処理は、代表ノード10Aの各々において、パーティ間ノード状態決定部103により他の一の代表ノード10Aの状態が判定される際に行なわれる処理である。従って、ステップS41〜S55の処理は、各代表ノード10Aのパーティ間ノード状態決定部103により、他の代表ノード10Aの各々について、定期的(第1所定時間ごと)に実行される。
また、図24に示すステップS41〜S49、S52、及びS53の処理は、図12に示すステップS11〜S19、S22、及びS23の処理と比較して、判定対象のノード10(10A)が代表ノード10Aである点が異なる。以下、ステップS41〜S49、S52、及びS53の処理の説明において、図12に示すステップS11〜S19、S22、及びS23の処理と同様な部分の詳細は省略する。
図24に示すように、パーティ間ノード状態決定部103により、ノード状態管理情報T7内の“状態”が参照され、判定対象の代表ノード10Aについて直前に判定した状態がどの状態であるかが判定される(ステップS41,S46,S49)。
判定対象の代表ノード10Aについて直前に判定した状態がAliveである場合(ステップS41のYesルート)、処理がステップS42に移行する。ステップS42では、パーティ間ノード状態決定部103により、判定対象の代表ノード10Aからのハートビートの不達時間が閾値を超えたか否かが判定される。
ハートビートの不達時間が閾値を超えた場合(ステップS42のYesルート)、パーティ間ノード状態決定部103により、判定対象の代表ノード10Aの状態がSuspectと判定され(ステップS43)、処理が終了する。このとき、パーティ間ノード状態決定部103は、判定対象の代表ノード10Aについて、ノード状態管理情報T7内の“状態”にSuspectを設定する。そして、パーティ間ノード状態決定部103は、次の判定対象の代表ノード10Aがある場合、次の判定対象の代表ノード10Aに係る状態の判定処理に移行する。
一方、ステップS42において、パーティ間ノード状態決定部103により、ハートビートの不達時間が閾値を超えていないと判定された場合(ステップS42のNoルート)、処理がステップS44に移行する。ステップS44では、パーティ間ノード状態決定部103により、判定対象の代表ノード10Aの状態が、過半数(第1所定値)の代表ノード10AからSuspectと判定されたか否かが判定される。又は、パーティ間ノード状態決定部103により、判定対象の代表ノード10Aの状態が、複数の代表ノード10Aのいずれかの代表ノード10AによりDownと判定された否かが判定される。
判定対象の代表ノード10Aの状態が、過半数の代表ノード10AからSuspectと判定されておらず、いずれかの代表ノード10AによりDownとも判定されていない場合(ステップS44のNoルート)、代表ノード10Aに対する処理が終了する。一方、判定対象の代表ノード10Aの状態が、過半数の代表ノード10AからSuspectと判定された又はいずれかの代表ノード10AによりDownと判定された場合(ステップS44のYesルート)、処理がステップS45に移行する。
ステップS45では、パーティ間ノード状態決定部103により、判定対象の代表ノード10Aの状態がDownと判定され、処理が終了する。このとき、パーティ間ノード状態決定部103は、判定対象の代表ノード10Aについて、ノード状態管理情報T7内の“状態”にDownを設定する。
また、判定対象の代表ノード10Aについて直前に判定した状態がSuspectである場合(ステップS41のNoルートからステップS46のYesルート)、処理がステップS47に移行する。ステップS47では、パーティ間ノード状態決定部103により、判定対象の代表ノード10Aから新たなハートビートが受信されたか否かが判定される。
新たなハートビートが受信されていない場合(ステップS47のNoルート)、処理がステップS44に移行する。一方、新たなハートビートが受信された場合(ステップS47のYesルート)、パーティ間ノード状態決定部103により、判定対象の代表ノード10Aの状態がAliveと判定され(ステップS48)、処理が終了する。このとき、パーティ間ノード状態決定部103は、判定対象の代表ノード10Aについて、ノード状態管理情報T7内の“状態”にAliveを設定する。
判定対象の代表ノード10Aについて直前に判定した状態がDownである場合(ステップS41のNoルート,ステップS46のNoルートからステップS49のYesルート)、処理がステップS50に移行する。ステップS50では、パーティ間ノード状態決定部103により、判定対象の代表ノード10Aの状態が第2所定値の数の代表ノード10A(例えば全代表ノード10A)によりDownと判定されたか否かが判定される。
全代表ノード10AによりDownと判定されていない場合(ステップS50のNoルート)、判定対象の代表ノード10Aに対する処理が終了する。一方、全代表ノード10AによりDownと判定された場合(ステップS50のYesルート)、処理がステップS54に移行する。ステップS54では、ノード状態決定部13により、該当パーティに他ノード10Aが生存しているか否か、つまり該当パーティにAliveと判定された他ノード10Aが存在するか否かが判定される。
ステップS54において、該当パーティに生存している他ノード10Aが存在しないと判定された場合(ステップS54のNoルート)、処理がステップS51に移行する。ステップS51では、パーティ間ノード状態決定部103により、該当パーティに所属する全ノード10Aの状態がZombieと判定される。また、自ノード10Aが保持するデータが該当パーティに所属するいずれかのノード10Aが保持するデータに関連する場合、リカバリ処理部15により、該当ノード10Aに対するリカバリ処理が実行され、処理が終了する。このとき、ノード状態決定部13は、該当パーティに所属する全ノード10Aについて、ノード状態管理情報T7内の“状態”にZombieを設定する。
一方、ステップS54において、該当パーティに生存している他ノード10Aが存在すると判定された場合(ステップS54のYesルート)、処理がステップS55に移行する。ステップS55では、パーティ間ノード状態決定部103により、生存している他ノード10Aのうちの次点のノード10Aが新たな判定対象の代表ノード10Aと判定され、処理が終了する。なお、この判定は、代表ノード10Aを選定する所定のルール(例えばノードIDが最も小さいノード10A)に基づいて行なわれる。代表ノード10Aは、ステップS55において選定した新たな判定対象の代表ノード10Aに対して、次回以降のハートビートの通信を行なう。
判定対象の代表ノード10Aについて直前に判定した状態がZombieである場合(ステップS41のNoルート,ステップS46のNoルートからステップS49のNoルート)、処理がステップS52に移行する。ステップS52では、パーティ間ノード状態決定部103により、判定対象の代表ノード10Aについてリカバリ処理が完了したか否かが判定される。リカバリ処理が完了していない場合、判定対象の代表ノード10Aに対する処理が終了する。一方、リカバリ処理が完了した場合(ステップS52のYesルート)、パーティ間ノード状態決定部103により、ノード状態管理情報T7から、判定対象の代表ノード10Aに関する情報が削除され(ステップS53)、処理が終了する。
以上のように、代表ノード10Aにより、他の一の代表ノード10Aの状態の判定処理が行なわれる。
〔2−3−2〕ノードによるパーティ内の他ノードが停止した場合の動作例
次に、図25を参照して、ノード10Aによるパーティ内の他ノード10Aが停止した場合の動作例を説明する。
なお、図25に示すステップS61〜S63の処理は、メンバノード10Aの各々において、ノード状態決定部13Aにより自パーティの代表ノード10Aの状態が判定される際に行なわれる処理である。従って、ステップS61〜S63の処理は、メンバノード10Aのノード状態決定部13Aにより、自パーティの代表ノード10Aについて、定期的(第1所定時間ごと)に実行される。
図25に示すように、メンバノード10Aによる自パーティ内の他ノード10Aの状態の判定により、自パーティの代表ノード10Aが停止したか否かが判定される(ステップS61)。
自パーティの代表ノード10Aが停止していない場合(ステップS61のNoルート)、処理が終了する。ノード状態決定部13Aは、次の判定対象のメンバノード10Aがある場合、次の判定対象のメンバノード10Aに係る状態の判定処理に移行する。
一方、自パーティの代表ノード10Aが停止した場合(ステップS61のYesルート)、自ノード10Aが代表ノード10Aになるか否かが判定される(ステップS62)。なお、この判定は、代表ノード10Aを選定する所定のルールに基づいて行なわれる。
ノード10Aにより、ステップS62において自ノード10Aが代表ノード10Aになると判定された場合(ステップS62のYesルート)、他のパーティの代表ノード10Aの各々との間のハートビートの通信が開始され(ステップS63)、処理が終了する。
一方、ノード10Aにより、ステップS62において自ノード10Aが代表ノード10Aにならないと判定された場合(ステップS62のNoルート)、処理が終了する。
以上のように、ノード10Aによるパーティ内の他ノード10Aが停止した場合の処理が終了する。
〔2−3−3〕ノードによるパーティの分割処理及び統合処理の動作例
次に、図26を参照して、ノード10Aによるパーティの分割処理及び統合処理の動作例を説明する。
図26に示すように、代表ノード10Aのパーティ管理部105により、例えば所定時間ごとに、自パーティのノード10Aの数が上限を上回ったか否かが判定される(ステップS71)。
ノード10Aの数が上限を上回った場合(ステップS71のYesルート)、代表ノード10Aのパーティ管理部105により、パーティが2つに分割され、パーティ管理情報T4が更新される(ステップS72)。なお、パーティ管理部105は、上述のように、自パーティをノード数が2分の1になるように分割し、余りが出る場合、余りのノード10Aを分割に係る2つのパーティのいずれかに割り振る。また、パーティ管理部105は、自パーティのノード10Aを分割後のいずれのパーティに割り当てるかを、ノードID、ノード10A及びスイッチ20の接続関係に基づき決定する。
ステップS71において、ノード10Aの数が上限以下である場合(ステップS71のNoルート)、パーティ管理部105により、自パーティのノード10Aの数が下限未満であるか否かが判定される(ステップS73)。
ノード10Aの数が下限未満である場合(ステップS73のYesルート)、代表ノード10Aのパーティ管理部105により、自パーティと他のパーティとの統合が行なわれる。具体的には、代表ノード10Aのパーティ管理部105は、自パーティと統合する他のパーティを、ノードID、ノード10A及びスイッチ20の接続関係、又は他のパーティの代表ノード10Aまでのホップ数等に基づき決定する。
そして、代表ノード10Aのパーティ管理部105により、統合後に自ノード10Aが代表ノード10Aになるか否かが判定される(ステップS74)。具体的には、代表ノード10Aのパーティ管理部105は、パーティ管理情報T4及びノード状態管理情報T7を参照して、自ノード10AのノードIDと決定した他のパーティの代表ノード10AのノードIDとを比較する。そして、パーティ管理部105は、自ノード10AのノードIDが他のパーティの代表ノード10AのノードIDよりも小さいか否かを判定する。
統合後に自ノード10Aが代表ノード10Aにならないと判定された場合(ステップS74のNoルート)、代表ノード10Aのパーティ管理部105により、パーティ管理情報T4の自パーティのエントリが削除され(ステップS75)、処理が終了する。
一方、統合後に自ノード10Aが代表ノード10Aになると判定された場合(ステップS74のYesルート)、代表ノード10Aのパーティ管理部105により、自パーティと他のパーティとが統合される。具体的には、代表ノード10Aのパーティ管理部105により、パーティ管理情報T4の自パーティのエントリのノードIDに、統合する他のパーティのノードIDがマージされて、パーティ管理情報T4が更新される(ステップS76)。そして、パーティ管理部105による処理が終了する。
なお、上述のように、ステップS71の処理は、ストレージシステム1に追加された新規ノード10Aから送信される送信情報T3を受信したことを契機に開始されてもよい。
また、ステップS73の処理は、自パーティ内のノード10Aに障害等が発生し、当該ノード10Aのリカバリ処理が完了したことを契機に開始されてもよい。
さらに、ステップS71及びS72の処理と、ステップS73〜S76の処理とは、互いに独立して実行されてもよいし、処理順序が変更されてもよい。
〔2−4〕第2実施形態のまとめ
上述のように、第2実施形態の一例としてのノード10Aによれば、第1実施形態に係るノード10と同様の効果を奏することができる。
また、第2実施形態の一例としてのノード10Aによれば、複数のノード10Aが複数のパーティに分割される。そして、各パーティの代表ノード10Aの各々において、パーティ間受信処理部102は、他のパーティの各々における他の代表ノード10Aから、代表ノード状態情報T5を受信する。また、パーティ間ノード状態決定部103は、代表ノード状態情報T5に基づいて、複数の代表ノード10Aの各々の状態を判定する。さらに、パーティ間送信処理部104は、パーティ間ノード状態決定部103が判定した複数の代表ノード10Aの各々の状態に関する送信用代表ノード状態情報T5を、他の代表ノード10Aの各々へ送信する。
さらに、複数のノード10Aの各々において、送信処理部14Aは、送信用ノード状態情報T6を、自パーティにおける他ノード10Aの各々へ送信する。また、ノード状態決定部13Aは、受信処理部12Aが自パーティにおける他ノード10Aの各々から受信したノード状態情報T6に基づいて、自ノード10Aにおけるノード10Aの各々の状態を判定する。
これにより、メンバノード10Aにより、自パーティ内のノード10Aの状態が判定され、代表ノード10Aにより、パーティ間(代表ノード10A間)の状態が判定される。
従って、ストレージシステム1においてノード10Aの数が増大した場合でも、ノード間でやり取りされる情報の直接の送信先を絞ることができるため、ハートビートの送受信のコストの増大を抑えることができる。
つまり、ストレージシステム1は、全ノード10Aによる完全メッシュのハートビートの通信を行なうよりも、ストレージシステム1における通信負荷及び処理負荷を低減させることができる。
また、各代表ノード10Aにおいて、パーティ管理部105は、自パーティにおけるノード10Aの数が第4所定値を超えた場合、自パーティから、複数のノード10Aを分割して新たなパーティを作成する。
これにより、パーティ内でのハートビートの通信によるノード10Aの処理負荷及びネットワークの負荷に起因した、ストレージシステム1の性能低下を抑止することができる。
さらに、パーティ管理部105は、自パーティにおけるノード10A及びスイッチ20の接続関係に関する情報に基づいて、自パーティから分割する複数のノード10Aを決定する。
これにより、ノード10A間の距離に応じたレイテンシやパケットロスの影響を抑止することができる。
また、パーティ管理部105は、自パーティにおけるノード10Aの数が第5所定値未満の場合、自パーティと他のパーティのうちのいずれかのパーティとを統合する。
これにより、多数の代表ノード10A間のハートビートの通信による代表ノード10Aの処理負荷及びネットワーク負荷に起因した、ストレージシステム1の性能低下を抑止することができる。
〔3〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、第1及び第2実施形態に係るストレージシステム1がそなえるノード10及び10A、並びにスイッチ20の構成及び台数は、上述したものに限定されず、任意の構成及び台数とすることができる。
また、第1及び第2実施形態においては、ストレージシステム1がそなえるノード10及び10Aにおける処理について説明したが、これに限定されるものではない。ノード10及び10Aは、ストレージ装置のほか、情報に対する処理を行なうサーバ等の情報処理装置であってもよく、ストレージシステム1は、複数の情報処理装置をそなえる情報処理システムであってもよい。
また、第1及び第2実施形態においては、ノード10及び10Aは、例えばストレージシステム1によるサービスの提供に用いられるIPラインを介してハートビートを行なうものとして説明したが、これに限定されるものではない。例えば、ノード10及び10Aは、LANケーブル等の専用の制御線を介して相互に接続され、専用線を用いてハートビートを行なってもよい。これにより、IPラインのネットワークの負荷を軽減させることができる。なお、ノード10及び10Aは、IPラインを用いる場合、ノード10及び10A間のパスの障害検出を行なうことができるため、専用線を用いるよりも監視範囲を拡張することができる。
さらに、第2実施形態においては、ノード10Aは、1段のパーティを構成するものとして説明したが、これに限定されるものではなく、多段のパーティを構成してもよい。つまり、代表ノード10Aが数百〜数千台等の多数存在する場合、代表ノード10Aを複数の上位パーティに分割し、上位パーティ間でハートビートの通信を行なうとともに、各上位パーティ内で、代表ノード10A間のハートビートの通信を行なってもよい。
また、第2実施形態においては、全てのノード10Aが代表ノード10Aになる可能性があったが、これに限定されるものではない。例えば、ノード10A間で、特定の処理を行なうノード10A等の処理負荷を増やしたくないノード10Aについて、代表ノード10Aの候補から除外するNGリストを共有してもよい。この場合、各ノード10Aは、NGリストに含まれるノード10Aについては代表ノード10Aに選出しないようにする。
さらに、第1及び第2実施形態に係るノード10及び10Aがそなえる各機能は、適宜省略してもよく、分割又は統合してもよい。例えば、第2実施形態に係るパーティ間受信処理部102及び受信処理部12Aを統合し、1つの受信処理部としてもよく、パーティ間送信処理部104及び送信処理部14Aを統合し、1つの送信処理部としてもよい。また、パーティ間ノード状態決定部103及びノード状態決定部13Aを統合し、1つのノード状態決定部(判定部)としてもよい。
また、第2実施形態に係るノード10Aは、代表ノード10Aとして動作する際に、パーティ間受信処理部102、パーティ間ノード状態決定部103、パーティ間送信処理部104、パーティ管理部105の機能を実行する。従って、ノード10Aは、代表ノード10Aとして動作しない場合(例えば上記NGリストに自ノード10が登録される場合等)には、これらの機能を無効化又は省略してもよい。
さらに、第1及び第2実施形態の一例における各処理フローのステップの実行順序を、適宜変更してもよい。
また、第1実施形態に係るノード10及び第2実施形態に係るノード10Aの各種機能の全部もしくは一部は、コンピュータ(CPU,情報処理装置,各種端末を含む)が所定のプログラムを実行することによって実現されてもよい。
そのプログラムは、例えばフレキシブルディスク、CD、DVD、ブルーレイディスク等のコンピュータ読取可能な記録媒体(例えば図2に示す記録媒体10h)に記録された形態で提供される。なお、CDとしては、CD−ROM、CD−R、CD−RW等が挙げられる。また、DVDとしては、DVD−ROM、DVD−RAM、DVD−R、DVD−RW、DVD+R、DVD+RW等が挙げられる。この場合、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。
ここで、コンピュータとは、ハードウェアとOS(Operating System)とを含む概念であり、OSの制御の下で動作するハードウェアを意味している。また、OSが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、CPU等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取る手段とをそなえている。上記プログラムは、上述のようなコンピュータに、第1実施形態に係るノード10又は第2実施形態に係るノード10Aの各種機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくOSによって実現されてもよい。
〔4〕付記
以上の第1及び第2実施形態に関し、更に以下の付記を開示する。
(付記1)
相互に接続される複数の情報処理装置を有し、前記複数の情報処理装置間で通信を行なう情報処理システムにおいて、
前記複数の情報処理装置の各々が、
前記複数の情報処理装置のうちの自情報処理装置以外の他の情報処理装置の各々から、前記他の情報処理装置により判定された前記複数の情報処理装置の各々の状態に関する状態情報を受信する受信処理部と、
前記受信処理部が前記他の情報処理装置の各々から受信した前記状態情報に基づいて、前記複数の情報処理装置の各々の状態を判定する判定部と、
前記判定部が判定した前記複数の情報処理装置の各々の状態に関する送信用状態情報を、前記他の情報処理装置の各々へ送信する送信処理部と、を有することを特徴とする、情報処理システム。
(付記2)
前記判定部は、
前記受信処理部が受信した前記状態情報が示す前記複数の情報処理装置の各々の状態と、前記他の情報処理装置の各々からの前記状態情報の受信状況とに基づいて、前記複数の情報処理装置の各々の状態を判定し、
前記送信処理部は、
第1所定時間ごとに、前記送信用状態情報を、前記他の情報処理装置の各々へ送信することを特徴とする、付記1記載の情報処理システム。
(付記3)
前記判定部は、
前記受信処理部が受信した前記状態情報が示す前記複数の情報処理装置の各々の状態と、前記判定部が含まれる自情報処理装置の状態に関する状態情報に関する自己状態情報とに基づいて、前記複数の情報処理装置の各々の状態を判定することを特徴とする、付記1記載の情報処理システム。
(付記4)
前記判定部は、
前記第1所定時間以上の時間である第2所定時間内に前記状態情報を受信しなかった他の情報処理装置の状態を、停止の可能性を示す第1状態と判定し、
前記受信処理部が受信した前記状態情報に基づいて、第1所定数以上の前記複数の情報処理装置で前記第1状態であると判定された情報処理装置の状態、又は、前記他の情報処理装置の少なくとも1つから停止を示す第2状態であると判定された情報処理装置の状態を、前記第2状態と判定することを特徴とする、付記2記載の情報処理システム。
(付記5)
前記判定部は、
前記受信処理部が受信した前記状態情報に基づいて、前記第1所定数以上の数である第2所定数以上の前記複数の情報処理装置で前記第2状態であると判定された情報処理装置を、リカバリ処理中を示す第3状態と判定し、
前記複数の情報処理装置のうちの1以上の情報処理装置はさらに、
前記判定部が前記第3状態と判定した情報処理装置に対して、リカバリ処理を実行するリカバリ処理部を有することを特徴とする、付記4記載の情報処理システム。
(付記6)
前記判定部は、
前記自情報処理装置に所定の障害が発生した場合、前記自情報処理装置の状態を前記第2状態と判定し、
前記第2所定時間内に第3所定数以上の前記他の情報処理装置から前記状態情報を受信しなかった場合、前記自情報処理装置の状態を、前記他の情報処理装置から切り離されたことを示す第4状態と判定し、
前記複数の情報処理装置の各々はさらに、
前記自情報処理装置に所定の障害が発生し、前記判定部が前記自情報処理装置の状態を前記第2状態と判定した場合、又は、前記判定部が前記自情報処理装置の状態を前期第4状態と判定した場合、前記自情報処理装置を停止させる処理を行なう停止処理部を有することを特徴とする、付記4又は付記5記載の情報処理システム。
(付記7)
前記複数の情報処理装置が複数のグループに分割され、
前記複数のグループの各々における代表情報処理装置はさらに、
前記複数のグループのうちの自グループ以外の他のグループの各々における他の代表情報処理装置から、前記他の代表情報処理装置により判定された前記複数のグループの代表情報処理装置の各々の状態に関する代表状態情報を受信するグループ間受信処理部と、
前記グループ間受信処理部が前記他の代表情報処理装置の各々から受信した前記代表状態情報に基づいて、前記複数の代表情報処理装置の各々の状態を判定するグループ間判定部と、
前記グループ間判定部が判定した前記複数の代表情報処理装置の各々の状態に関する送信用代表状態情報を、前記他の代表情報処理装置の各々へ送信するグループ間送信処理部と、を有し、
前記複数の情報処理装置の各々において、
前記送信処理部は、
前記送信用状態情報を、前記自グループにおける他の情報処理装置の各々へ送信し、
前記判定部は、
前記受信処理部が前記自グループにおける他の情報処理装置の各々から受信した前記状態情報に基づいて、前記自グループにおける情報処理装置の各々の状態を判定することを特徴とする、付記1〜6のいずれか1項記載の情報処理システム。
(付記8)
前記複数のグループの各々における代表情報処理装置はさらに、
前記自グループにおける情報処理装置の数が第4所定値を超えた場合、前記自グループから、複数の情報処理装置を分割して新たなグループを作成する管理部を有することを特徴とする、付記7記載の情報処理システム。
(付記9)
前記情報処理システムはさらに、
前記複数の情報処理装置間に介設され、前記複数の情報処理装置間で送受信される情報を中継する接続装置を有し、
前記管理部は、
前記自グループにおける情報処理装置及び前記接続装置の接続関係に関する情報に基づいて、前記自グループから分割する複数の情報処理装置を決定することを特徴とする、付記8記載の情報処理システム。
(付記10)
前記管理部は、
前記自グループにおける情報処理装置の数が第5所定値未満の場合、前記自グループと前記他のグループのうちのいずれかのグループとを統合することを特徴とする、付記8又は付記9記載の情報処理システム。
(付記11)
相互に接続される複数の情報処理装置の各々において、
前記複数の情報処理装置のうちの自情報処理装置以外の他の情報処理装置の各々から、前記他の情報処理装置により判定された前記複数の情報処理装置の各々の状態に関する状態情報を受信する受信処理部と、
前記受信処理部が前記他の情報処理装置の各々から受信した前記状態情報に基づいて、前記複数の情報処理装置の各々の状態を判定する判定部と、
前記判定部が判定した前記複数の情報処理装置の各々の状態に関する送信用状態情報を、前記他の情報処理装置の各々へ送信する送信処理部と、を有することを特徴とする、情報処理装置。
(付記12)
相互に接続される複数の情報処理装置の各々を制御する情報処理装置の制御プログラムにおいて、
前記情報処理装置に、
前記複数の情報処理装置のうちの自情報処理装置以外の他の情報処理装置の各々から、前記他の情報処理装置により判定された前記複数の情報処理装置の各々の状態に関する状態情報を受信させ、
前記他の情報処理装置の各々から受信した前記状態情報に基づいて、前記複数の情報処理装置の各々の状態を判定させ、
判定した前記複数の情報処理装置の各々の状態に関する送信用状態情報を、前記他の情報処理装置の各々へ送信させることを特徴とする、情報処理装置の制御プログラム。
(付記13)
前記情報処理装置に判定させる処理は、
受信した前記状態情報が示す前記複数の情報処理装置の各々の状態と、前記他の情報処理装置の各々からの前記状態情報の受信状況とに基づいて行なわれ、
前記情報処理装置に送信させる処理は、
第1所定時間ごとに行なわれることを特徴とする、付記12記載の情報処理装置の制御プログラム。
(付記14)
前記情報処理装置に判定させる処理は、
受信した前記状態情報が示す前記複数の情報処理装置の各々の状態と、自情報処理装置の状態に関する状態情報に関する自己状態情報とに基づいて、前記複数の情報処理装置の各々の状態を判定させることを特徴とする、付記12記載の情報処理装置の制御プログラム。
(付記15)
前記情報処理装置に、
前記第1所定時間以上の時間である第2所定時間内に前記状態情報を受信しなかった他の情報処理装置の状態を、停止の可能性を示す第1状態と判定させ、
受信した前記状態情報に基づいて、第1所定数以上の前記複数の情報処理装置で前記第1状態であると判定された情報処理装置の状態、又は、前記他の情報処理装置の少なくとも1つから停止を示す第2状態であると判定された情報処理装置の状態を、前記第2状態と判定させることを特徴とする、付記13記載の情報処理装置の制御プログラム。
(付記16)
前記情報処理装置に、
受信した前記状態情報に基づいて、前記第1所定数以上の数である第2所定数以上の前記複数の情報処理装置で前記第2状態であると判定された情報処理装置を、リカバリ処理中を示す第3状態と判定させ、
前記第3状態と判定した情報処理装置に対して、リカバリ処理を実行させることを特徴とする、付記15記載の情報処理装置の制御プログラム。
(付記17)
前記複数の情報処理装置が複数のグループに分割された前記情報処理システムにおける前記情報処理装置に、
前記複数のグループのうちの自グループ以外の他のグループの各々における他の代表情報処理装置から、前記他の代表情報処理装置により判定された前記複数のグループの代表情報処理装置の各々の状態に関する代表状態情報を受信させ、
前記他の代表情報処理装置の各々から受信した前記代表状態情報に基づいて、前記複数の代表情報処理装置の各々の状態を判定させ、
判定した前記複数の代表情報処理装置の各々の状態に関する送信用代表状態情報を、前記他の代表情報処理装置の各々へ送信させ、
前記情報処理装置に前記送信用状態情報を送信させる処理は、
前記送信用状態情報を、前記自グループにおける他の情報処理装置の各々へ送信させ、
前記情報処理装置に前記複数の情報処理装置の各々の状態を判定させる処理は、
前記自グループにおける他の情報処理装置の各々から受信した前記状態情報に基づいて、前記自グループにおける情報処理装置の各々の状態を判定させることを特徴とする、付記12〜16のいずれか1項記載の情報処理装置の制御プログラム。
(付記18)
前記情報処理装置に、
前記自グループにおける情報処理装置の数が第4所定値を超えた場合、前記自グループから、複数の情報処理装置を分割して新たなグループを作成させることを特徴とする、付記17記載の情報処理装置の制御プログラム。
(付記19)
前記自グループにおける情報処理装置と、前記複数の情報処理装置間に介設され前記複数の情報処理装置間で送受信される情報を中継する接続装置との接続関係に関する情報に基づいて、前記自グループから分割する複数の情報処理装置を決定させることを特徴とする、付記18記載の情報処理装置の制御プログラム。
(付記20)
前記情報処理装置に、
前記自グループにおける情報処理装置の数が第5所定値未満の場合、前記自グループと前記他のグループのうちのいずれかのグループとを統合させることを特徴とする、付記18又は付記19記載の情報処理装置の制御プログラム。
(付記21)
相互に接続される複数の情報処理装置を有し、前記複数の情報処理装置間で通信を行なう情報処理システムの制御方法において、
前記複数の情報処理装置の各々が、
前記複数の情報処理装置のうちの自情報処理装置以外の他の情報処理装置の各々から、前記他の情報処理装置により判定された前記複数の情報処理装置の各々の状態に関する状態情報を受信し、
前記他の情報処理装置の各々から受信した前記状態情報に基づいて、前記複数の情報処理装置の各々の状態を判定し、
判定した前記複数の情報処理装置の各々の状態に関する送信用状態情報を、前記他の情報処理装置の各々へ送信することを特徴とする、情報処理システムの制御方法。
(付記22)
相互に接続される複数の情報処理装置の各々において、
プロセッサを有し、
前記プロセッサが、
前記複数の情報処理装置のうちの自情報処理装置以外の他の情報処理装置の各々から、前記他の情報処理装置により判定された前記複数の情報処理装置の各々の状態に関する状態情報を受信し、
前記他の情報処理装置の各々から受信した前記状態情報に基づいて、前記複数の情報処理装置の各々の状態を判定し、
判定した前記複数の情報処理装置の各々の状態に関する送信用状態情報を、前記他の情報処理装置の各々へ送信することを特徴とする、情報処理装置。
1 ストレージシステム(情報処理システム)
10,10−1〜10−5,10A,10A−1〜10A−6,10A−11〜10A−13,10A−21〜10A−23 ノード(ストレージ装置,情報処理装置)
10a CPU(プロセッサ)
10b メモリ
10c 記憶部
10d ネットワークインタフェース
10e 入出力部
10f,10h 記録媒体
10g 読取部
11,11A ノード状態保持部
12,12A 受信処理部
13,13A ノード状態決定部(判定部)
14,14A 送信処理部
15 リカバリ処理部
16 停止処理部
101 パーティ情報保持部
102 パーティ間受信処理部(グループ間受信処理部)
103 パーティ間ノード状態決定部(グループ間判定部)
104 パーティ間送信処理部(グループ間送信処理部)
105 パーティ管理部(管理部)
20,20−1〜20−3 スイッチ(接続装置)

Claims (9)

  1. 相互に接続される複数の情報処理装置を有し、前記複数の情報処理装置間で通信を行なう情報処理システムにおいて、
    前記複数の情報処理装置の各々が、
    前記複数の情報処理装置のうちの自情報処理装置以外の他の情報処理装置の各々から、前記他の情報処理装置により判定された前記複数の情報処理装置の各々の状態に関する状態情報を受信する受信処理部と、
    前記受信処理部が前記他の情報処理装置の各々から受信した前記状態情報に基づいて、前記複数の情報処理装置の各々の状態を判定する判定部と、
    前記判定部が判定した前記複数の情報処理装置の各々の状態に関する送信用状態情報を、前記他の情報処理装置の各々へ送信する送信処理部と、を有し、
    前記判定部は、
    前記受信処理部が受信した前記状態情報が示す前記複数の情報処理装置の各々の状態と、前記他の情報処理装置の各々からの前記状態情報の受信状況とに基づいて、前記複数の情報処理装置の各々の状態を判定し、
    前記送信処理部は、
    第1所定時間ごとに、前記送信用状態情報を、前記他の情報処理装置の各々へ送信し、
    前記判定部は、
    前記第1所定時間以上の時間である第2所定時間内に前記状態情報を受信しなかった他の情報処理装置の状態を、停止の可能性を示す第1状態と判定し、
    前記受信処理部が受信した前記状態情報に基づいて、第1所定数以上の前記複数の情報処理装置で前記第1状態であると判定された情報処理装置の状態、又は、前記他の情報処理装置の少なくとも1つから停止を示す第2状態であると判定された情報処理装置の状態を、前記第2状態と判定することを特徴とする、情報処理システム。
  2. 前記判定部は、
    前記受信処理部が受信した前記状態情報が示す前記複数の情報処理装置の各々の状態と、前記判定部が含まれる自情報処理装置の状態に関する状態情報に関する自己状態情報とに基づいて、前記複数の情報処理装置の各々の状態を判定することを特徴とする、請求項1記載の情報処理システム。
  3. 前記判定部は、
    前記受信処理部が受信した前記状態情報に基づいて、前記第1所定数以上の数である第2所定数以上の前記複数の情報処理装置で前記第2状態であると判定された情報処理装置を、リカバリ処理中を示す第3状態と判定し、
    前記複数の情報処理装置のうちの1以上の情報処理装置はさらに、
    前記判定部が前記第3状態と判定した情報処理装置に対して、リカバリ処理を実行するリカバリ処理部を有することを特徴とする、請求項1又は請求項2記載の情報処理システム。
  4. 前記複数の情報処理装置が複数のグループに分割され、
    前記複数のグループの各々における代表情報処理装置はさらに、
    前記複数のグループのうちの自グループ以外の他のグループの各々における他の代表情報処理装置から、前記他の代表情報処理装置により判定された前記複数のグループの代表情報処理装置の各々の状態に関する代表状態情報を受信するグループ間受信処理部と、
    前記グループ間受信処理部が前記他の代表情報処理装置の各々から受信した前記代表状態情報に基づいて、前記複数の代表情報処理装置の各々の状態を判定するグループ間判定部と、
    前記グループ間判定部が判定した前記複数の代表情報処理装置の各々の状態に関する送信用代表状態情報を、前記他の代表情報処理装置の各々へ送信するグループ間送信処理部と、を有し、
    前記複数の情報処理装置の各々において、
    前記送信処理部は、
    前記送信用状態情報を、前記自グループにおける他の情報処理装置の各々へ送信し、
    前記判定部は、
    前記受信処理部が前記自グループにおける他の情報処理装置の各々から受信した前記状態情報に基づいて、前記自グループにおける情報処理装置の各々の状態を判定することを特徴とする、請求項1〜のいずれか1項記載の情報処理システム。
  5. 前記複数のグループの各々における代表情報処理装置はさらに、
    前記自グループにおける情報処理装置の数が第4所定値を超えた場合、前記自グループから、複数の情報処理装置を分割して新たなグループを作成する管理部を有することを特徴とする、請求項記載の情報処理システム。
  6. 前記管理部は、
    前記自グループにおける情報処理装置の数が第5所定値未満の場合、前記自グループと前記他のグループのうちのいずれかのグループとを統合することを特徴とする、請求項記載の情報処理システム。
  7. 相互に接続される複数の情報処理装置の各々において、
    前記複数の情報処理装置のうちの自情報処理装置以外の他の情報処理装置の各々から、前記他の情報処理装置により判定された前記複数の情報処理装置の各々の状態に関する状態情報を受信する受信処理部と、
    前記受信処理部が前記他の情報処理装置の各々から受信した前記状態情報に基づいて、前記複数の情報処理装置の各々の状態を判定する判定部と、
    前記判定部が判定した前記複数の情報処理装置の各々の状態に関する送信用状態情報を、前記他の情報処理装置の各々へ送信する送信処理部と、を有し、
    前記判定部は、
    前記受信処理部が受信した前記状態情報が示す前記複数の情報処理装置の各々の状態と、前記他の情報処理装置の各々からの前記状態情報の受信状況とに基づいて、前記複数の情報処理装置の各々の状態を判定し、
    前記送信処理部は、
    第1所定時間ごとに、前記送信用状態情報を、前記他の情報処理装置の各々へ送信し、
    前記判定部は、
    前記第1所定時間以上の時間である第2所定時間内に前記状態情報を受信しなかった他の情報処理装置の状態を、停止の可能性を示す第1状態と判定し、
    前記受信処理部が受信した前記状態情報に基づいて、第1所定数以上の前記複数の情報処理装置で前記第1状態であると判定された情報処理装置の状態、又は、前記他の情報処理装置の少なくとも1つから停止を示す第2状態であると判定された情報処理装置の状態を、前記第2状態と判定することを特徴とする、情報処理装置。
  8. 相互に接続される複数の情報処理装置の各々を制御する情報処理装置に
    前記複数の情報処理装置のうちの自情報処理装置以外の他の情報処理装置の各々から、前記他の情報処理装置により判定された前記複数の情報処理装置の各々の状態に関する状態情報を受信
    前記他の情報処理装置の各々から受信した前記状態情報に基づいて、前記複数の情報処理装置の各々の状態を判定
    判定した前記複数の情報処理装置の各々の状態に関する送信用状態情報を、前記他の情報処理装置の各々へ送信する、処理を実行させ、
    前記判定において、
    受信した前記状態情報が示す前記複数の情報処理装置の各々の状態と、前記他の情報処理装置の各々からの前記状態情報の受信状況とに基づいて、前記複数の情報処理装置の各々の状態を判定し、
    前記送信において、
    第1所定時間ごとに、前記送信用状態情報を、前記他の情報処理装置の各々へ送信し、
    前記判定において、
    前記第1所定時間以上の時間である第2所定時間内に前記状態情報を受信しなかった他の情報処理装置の状態を、停止の可能性を示す第1状態と判定し、
    受信した前記状態情報に基づいて、第1所定数以上の前記複数の情報処理装置で前記第1状態であると判定された情報処理装置の状態、又は、前記他の情報処理装置の少なくとも1つから停止を示す第2状態であると判定された情報処理装置の状態を、前記第2状態と判定することを特徴とする、情報処理装置の制御プログラム。
  9. 相互に接続される複数の情報処理装置を有し、前記複数の情報処理装置間で通信を行なう情報処理システムの制御方法において、
    前記複数の情報処理装置の各々が、
    前記複数の情報処理装置のうちの自情報処理装置以外の他の情報処理装置の各々から、前記他の情報処理装置により判定された前記複数の情報処理装置の各々の状態に関する状態情報を受信し、
    前記他の情報処理装置の各々から受信した前記状態情報に基づいて、前記複数の情報処理装置の各々の状態を判定し、
    判定した前記複数の情報処理装置の各々の状態に関する送信用状態情報を、前記他の情報処理装置の各々へ送信し、
    前記判定において、
    受信した前記状態情報が示す前記複数の情報処理装置の各々の状態と、前記他の情報処理装置の各々からの前記状態情報の受信状況とに基づいて、前記複数の情報処理装置の各々の状態を判定し、
    前記送信において、
    第1所定時間ごとに、前記送信用状態情報を、前記他の情報処理装置の各々へ送信し、
    前記判定において、
    前記第1所定時間以上の時間である第2所定時間内に前記状態情報を受信しなかった他の情報処理装置の状態を、停止の可能性を示す第1状態と判定し、
    受信した前記状態情報に基づいて、第1所定数以上の前記複数の情報処理装置で前記第1状態であると判定された情報処理装置の状態、又は、前記他の情報処理装置の少なくとも1つから停止を示す第2状態であると判定された情報処理装置の状態を、前記第2状態と判定することを特徴とする、情報処理システムの制御方法。
JP2013071904A 2013-03-29 2013-03-29 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法 Active JP6089884B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013071904A JP6089884B2 (ja) 2013-03-29 2013-03-29 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法
US14/197,266 US10298478B2 (en) 2013-03-29 2014-03-05 Information processing system, computer-readable recording medium having stored therein control program for information processing device, and control method of information processing system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013071904A JP6089884B2 (ja) 2013-03-29 2013-03-29 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法

Publications (2)

Publication Number Publication Date
JP2014197266A JP2014197266A (ja) 2014-10-16
JP6089884B2 true JP6089884B2 (ja) 2017-03-08

Family

ID=51621964

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013071904A Active JP6089884B2 (ja) 2013-03-29 2013-03-29 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法

Country Status (2)

Country Link
US (1) US10298478B2 (ja)
JP (1) JP6089884B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105991325B (zh) * 2015-02-10 2019-06-21 华为技术有限公司 处理至少一个分布式集群中的故障的方法、设备和系统
WO2016135919A1 (ja) * 2015-02-26 2016-09-01 株式会社日立製作所 ストレージ装置
JP6451467B2 (ja) * 2015-04-07 2019-01-16 三菱電機株式会社 統合監視制御装置および統合監視制御システム
CN107748702B (zh) * 2015-06-04 2021-05-04 华为技术有限公司 一种数据恢复方法和装置
JP6588567B2 (ja) * 2015-11-26 2019-10-09 日本電信電話株式会社 通信システム及び故障箇所特定方法
EP3506099A4 (en) * 2016-08-25 2019-09-04 Fujitsu Limited MAINTENANCE MANAGEMENT PROGRAM, MAINTENANCE MANAGEMENT METHOD, AND MAINTENANCE MANAGEMENT DEVICE
CN106878109A (zh) * 2017-03-13 2017-06-20 网宿科技股份有限公司 服务器检测方法及服务器系统
US11402243B1 (en) * 2017-10-24 2022-08-02 University Of South Florida Distributed process state and input estimation for heterogeneous active/passive sensor networks
WO2019178714A1 (zh) * 2018-03-19 2019-09-26 华为技术有限公司 一种故障检测的方法、装置及系统
US11108640B2 (en) * 2018-12-20 2021-08-31 Advantest Corporation Controlling devices in a decentralized storage environment
US11082505B2 (en) * 2019-07-29 2021-08-03 Cisco Technology, Inc. Dynamic discovery of available storage servers
CN111510345B (zh) * 2020-04-03 2022-04-26 网宿科技股份有限公司 一种边缘节点异常检测的方法及装置
CN112202746B (zh) * 2020-09-24 2023-04-21 北京百度网讯科技有限公司 Rpc成员信息获取方法、装置、电子设备和存储介质
CN114866422A (zh) * 2022-05-12 2022-08-05 上海阵方科技有限公司 安全data sharing的安全多方计算系统和方法
CN115550144B (zh) * 2022-11-30 2023-03-24 季华实验室 分布式故障节点预测方法、装置、电子设备及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57201945A (en) * 1981-06-03 1982-12-10 Omron Tateisi Electronics Co Fault diagnosing method for multiple cpu system
JP2002132535A (ja) * 2000-10-25 2002-05-10 Chubu Electric Power Co Inc 分散型計算機システムにおける計算機診断方式
JP2002312199A (ja) * 2001-04-13 2002-10-25 Mitsubishi Electric Corp 異常検知電子機器及び異常検知方法及び異常検知電子機器システム及び異常検知プログラム及び異常検知プログラムを記録したコンピュータ読み取り可能な記録媒体
JP5158074B2 (ja) 2007-03-20 2013-03-06 富士通株式会社 ストレージ管理プログラム、ストレージ管理方法、ストレージ管理装置およびストレージシステム
EP2202921B1 (en) * 2007-11-22 2013-03-27 China Mobile Communications Corporation A data storage method, a management server, a storage equipment and system
JP5176231B2 (ja) * 2008-03-10 2013-04-03 株式会社日立製作所 計算機システム、計算機制御方法及び計算機制御プログラム
JP5458644B2 (ja) 2009-04-22 2014-04-02 富士通株式会社 大規模ネットワーク監視方法
JP2011055231A (ja) 2009-09-01 2011-03-17 Mitsubishi Electric Corp ネットワーク管理システムおよびネットワーク管理方法
US9130850B2 (en) * 2012-07-20 2015-09-08 Hitachi, Ltd. Monitoring system and monitoring program with detection probability judgment for condition event
WO2014068705A1 (ja) * 2012-10-31 2014-05-08 株式会社日立製作所 監視システム及び監視プログラム

Also Published As

Publication number Publication date
US10298478B2 (en) 2019-05-21
US20140297845A1 (en) 2014-10-02
JP2014197266A (ja) 2014-10-16

Similar Documents

Publication Publication Date Title
JP6089884B2 (ja) 情報処理システム,情報処理装置,情報処理装置の制御プログラム,及び情報処理システムの制御方法
US10489254B2 (en) Storage cluster failure detection
JP6586465B2 (ja) ストレージ・クラスタ要素のモニタリングのための方法、装置、記憶媒体及びコンピュータ・プログラム
US7921325B2 (en) Node management device and method
US8615676B2 (en) Providing first field data capture in a virtual input/output server (VIOS) cluster environment with cluster-aware vioses
JP5723990B2 (ja) ファブリックに対する情報を集めるためにエージェントの等価サブセットを定める方法、およびそのシステム。
JP6215481B2 (ja) クラウド環境におけるitインフラ管理のための方法とその装置
JP2011128917A (ja) データ割当制御プログラム、データ割当制御方法、およびデータ割当制御装置
CN102394914A (zh) 集群脑裂处理方法和装置
JP6212934B2 (ja) ストレージシステム、情報処理装置の制御プログラム、およびストレージシステムの制御方法
JP6028641B2 (ja) 情報処理システム、情報処理装置の制御プログラム及び情報処理システムの制御方法
US8234447B2 (en) Storage control device for storage system provided with storage device coupled to switch network
US20090164565A1 (en) Redundant systems management frameworks for network environments
JP2013542476A5 (ja)
JP5617304B2 (ja) スイッチング装置、情報処理装置および障害通知制御プログラム
CN108509296B (zh) 一种处理设备故障的方法和系统
JP5884606B2 (ja) ストレージ管理方法、システム、およびプログラム
CN110661599B (zh) 一种主、备节点间的ha实现方法、装置及存储介质
JP2019508975A (ja) ハイパースケール環境における近隣監視
WO2015037103A1 (ja) サーバシステム、計算機システム、サーバシステムの管理方法、及びコンピュータ読み取り可能な記憶媒体
WO2023275983A1 (ja) 仮想化システム障害分離装置及び仮想化システム障害分離方法
JP6111791B2 (ja) ネットワーク管理システム、ネットワーク管理装置、サーバ、ネットワーク管理方法、及びプログラム
JP6984437B2 (ja) 処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置
JP6558012B2 (ja) ストレージ管理装置、ストレージシステム、ストレージ管理方法及びプログラム
JP2016131286A (ja) 検証支援プログラム、検証支援装置、及び検証支援方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161004

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161125

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170110

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170123

R150 Certificate of patent or registration of utility model

Ref document number: 6089884

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150