JP5217967B2 - 故障ノード切り離し処理プログラム、故障ノード切り離し方法及びストレージシステム - Google Patents

故障ノード切り離し処理プログラム、故障ノード切り離し方法及びストレージシステム Download PDF

Info

Publication number
JP5217967B2
JP5217967B2 JP2008304198A JP2008304198A JP5217967B2 JP 5217967 B2 JP5217967 B2 JP 5217967B2 JP 2008304198 A JP2008304198 A JP 2008304198A JP 2008304198 A JP2008304198 A JP 2008304198A JP 5217967 B2 JP5217967 B2 JP 5217967B2
Authority
JP
Japan
Prior art keywords
node
slice
access
failure
segment
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.)
Expired - Fee Related
Application number
JP2008304198A
Other languages
English (en)
Other versions
JP2010128886A (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 JP2008304198A priority Critical patent/JP5217967B2/ja
Priority to US12/569,219 priority patent/US20100138687A1/en
Publication of JP2010128886A publication Critical patent/JP2010128886A/ja
Application granted granted Critical
Publication of JP5217967B2 publication Critical patent/JP5217967B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/2056Error 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 by mirroring
    • G06F11/2069Management of state, configuration or failover
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (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)

Description

本発明は故障ノード切り離し処理プログラム、故障ノード切り離し方法及びストレージシステムに関し、特にデータを複数のストレージ装置に分散して格納するストレージシステムにて、ストレージ装置の実データ記憶領域を管理するコンピュータが故障したとき、このコンピュータの切り離す故障ノード切り離し処理プログラム、故障ノード切り離し方法及びストレージシステムに関する。
従来、ストレージシステムとして、複数のストレージノードをネットワーク上に分散配置して協働させることによって、性能及び信頼性を向上させる分散型のマルチノードストレージシステムがある。マルチノードストレージシステムでは、仮想的な論理ボリュームをセグメント単位に分割して複数のストレージノードに分散して格納する。ストレージノードは、実記憶領域である物理ディスクをスライス単位に分割して管理している。通常、データは二重化されており、1つのセグメントに対し、プライマリスライスと、セカンダリスライスとが用意される。すなわち、通常状態でのセグメントは、プライマリスライスとセカンダリスライスから構成される。プライマリスライスは、外部の端末装置などからのアクセス要求を処理するアクセスノードが直接読み書きするスライスである。セカンダリスライスは、プライマリスライスへの書き込みがあったときに、ストレージノードがミラーリングしてデータを書き込むスライスである。また、セグメントが割り当てられていないスライスは、フリースライスとして管理される。
ストレージノードの管理を行う制御ノードは、ストレージノードの故障を検出すると、リカバリ処理を行って、故障したセグメントを回復する(例えば、特許文献1参照)。
リカバリ処理では、以下の処理が実行される。
(1)ストレージノードの故障の検出
(2)故障ノードの切り離し
(3)欠損したセカンダリスライスの再割り当てとミラーライトの再開
(4)再割り当てしたスライスへのデータコピー
なお、故障ノードの切り離しでは、故障ノードにセカンダリスライスがある場合、セカンダリスライスを欠損したセグメントのプライマリスライスを有するストレージノードからのミラーライトを停止する。また、故障ノードにプライマリスライスがある場合、プライマリを欠損したセグメントのセカンダリスライスをプライマリスライスに変更し、ミラーライトを停止する。
リカバリ処理では、(2)の故障ノードの切り離しが終了した時点でマルチノードストレージのアクセスが再開する。その後、再割り当てしたスライスへのコピーが完了した時点で二重化が回復する。
再表2004/104845号公報
しかし、従来のマルチノードストレージでは、制御ノードが故障ノードの切り離しを行うまでアクセスが再開できないという問題点がある。
ここで、セグメントに対するアクセス処理について説明する。図12は、アクセス処理の動作シーケンスを示した図である。
外部の端末装置などからデータの読み出し要求があると、アクセスノードは、プライマリスライスを有するディスクノード(P)に対し、リード要求901を発行する。要求を受けたディスクノード(P)は、物理ディスク読み込み処理902を行ってプライマリスライスからデータを読み出す。そして、読み出したデータ903をアクセスノード経由で要求元に送る。このように、リード処理は、アクセスノードと、ディスクノード(P)間の処理で終了する。
一方、データの書き込み要求があると、アクセスノードは、ディスクノード(P)に対し、ライト要求911を発行する。要求を受けたディスクノード(P)は、セカンダリスライスを有するディスクノード(S)にミラーライト912を行う。ディスクノード(S)は、物理ディスク書き込み処理913を行って、セカンダリスライスを更新し、正常完了(OK)914をディスクノード(P)に返す。これを受けたディスクノード(P)は、物理ディスク書き込み処理915を行って、プライマリスライスを更新する。その後、正常完了(OK)916がアクセスノードを介して要求元に送られる。このように、ライト処理は、アクセスノードとディスクノード(P)に加え、セカンダリスライスを有するディスクノード(S)の処理が完了しなければ、正常終了しない。
このため、例えば、ディスクノード(S)が故障すると、ディスクノード(S)からの正常完了(OK)914が得られなくなるため、ディスクノード(P)が正常であるにもかかわらず、ライト要求911は正常に終了しない。この状態は、故障したディスクノード(S)が切り離されるまで続く。
しかし、故障ノードの検出から切り離しまでの処理は、すべて制御ノードが行っているため、制御ノードが停止していると故障ノードの切り離しができない。したがって、ストレージノードが正常であるのに、アクセスの再開ができない、もしくはアクセス再開までの時間がかかることがあり、サービスの継続性の観点から問題であった。
本発明はこのような点に鑑みてなされたものであり、制御ノードによらず故障ノードの切り離しが可能な故障ノード切り離し処理プログラム、故障ノード切り離し方法及びストレージシステムを提供することを目的とする。
上記課題を解決するために、データを複数のストレージ装置に分散して格納するストレージシステムにて、ストレージ装置の実データ記憶領域を管理するコンピュータが故障したときに、このコンピュータを切り離す故障ノード切り離し処理プログラムが提供される。この故障ノード切り離し処理プログラムは、コンピュータを、アクセス処理手段、故障ノード検出手段及び故障ノード切り離し手段として機能させる。アクセス処理手段は、記憶手段に格納される管理情報に基づいて、アクセスノードからのアクセス要求を処理する。管理情報は、仮想的な論理ボリュームを分割したセグメントに対し、ストレージ装置の実データ記憶領域をセグメントの単位で分割したスライスを、アクセスノードからのアクセス先としてセグメントのデータを格納するプライマリスライス、または、プライマリスライスのデータをミラーリングして格納するセカンダリスライスとして割り当て、セグメントと、セグメントに割り当てられたプライマリスライス及びセカンダリスライスと、を対応付けた情報である。故障ノード検出手段は、他のストレージ装置の実記憶領域を管理する他のコンピュータが正常動作中に所定の周期で送信する生存信号を監視し、一定期間前記生存信号が検出されなかった他のコンピュータを故障ノードとして検出する。故障ノード切り離し手段は、故障ノードと管理情報を照合する。そして、管理対象のスライスが故障ノードの管理するスライスに対応付けられていたときは、管理対象のスライスをアクセスノードのアクセス先であってミラーリングが停止されるシングルプライマリスライスに設定し、故障ノードを切り離す。また、アクセス処理手段は、アクセスノードからプライマリスライスへのライト要求に対して、セカンダリスライスへのミラーリングを実行してからプライマリスライスが格納するデータを更新してアクセスノードに応答し、アクセスノードからシングルプライマリスライスへのライト要求に対して、故障ノードへのミラーリングを停止してシングルプライマリスライスが格納するデータを更新してアクセスノードに応答する。
このような故障ノード切り離し処理プログラムを実行するコンピュータは、管理情報に基づいて、ストレージ装置の実記憶領域をセグメントの単位で分割したスライスごとに管理している。アクセスノードからのアクセス要求を受けた時は、アクセス処理手段が、管理情報に基づいてアクセス要求を処理する。また、故障ノード検出手段は、他のストレージ装置の実記憶領域を管理するコンピュータが正常時に所定の周期で送信する生存信号を監視し、一定期間生存信号が検出されなかったコンピュータを故障ノードとしている。故障ノードが検出されたときは、故障ノード切り離し手段が、管理対象のスライスに対応付けられた他のコンピュータが管理するスライスに、故障ノードのスライスが含まれているかどうかを判定する。故障ノードのスライスが含まれていたときは、この管理対象のスライスをシングルプライマリスライスに設定する。シングルプライマリスライスは、アクセスノードのアクセス先であって、セカンダリスライスへのミラーリングが行われない。これにより、このスライスに対応する故障ノードのスライスは、切り離された状態になる。
また、上記課題を解決するために、上記の故障ノード切り離し処理プログラムと同様の処理手順を実行させる故障ノード切り離し方法、及び同様の機能を備えた装置を有するストレージシステムが提供される。
開示の故障ノード切り離し処理プログラム、故障ノード切り離し方法及びストレージシステムによれば、実データ記憶領域を管理するコンピュータ間で互いの状態を監視し、故障ノードが検出されたときは自律的に故障ノードを切り離すことができる。これにより、制御ノードによらず、故障ノードの切り離しができることとなり、故障ノードが停止していてもアクセスが再開される。この結果、サービスの継続性を向上させることができる。
以下、本発明の実施の形態について図面を参照して説明する。まず、発明の概要について説明し、その後、詳細な内容を説明する。
図1は、発明の概要を示した図である。ストレージノード10は、ネットワークを介して接続する他のストレージノード20,30と、アクセスノード60と、制御ノード70と、を有するストレージシステムに組み込まれる。
ストレージノード20,30は、ストレージノード10と同様の構成を有し、互いに協働してストレージシステムの論理ボリュームに対応する実データ記憶領域を管理する。
アクセスノード60は、仮想的な論理ボリュームと、実データ記憶領域とを対応付けた管理情報に基づいて、ストレージノード10,20,30が管理する実データ記憶領域にアクセス要求を行う。
制御ノード70は、論理ボリュームを所定のサイズに分割したセグメントと、ストレージノード10,20,30が管理する実データ記憶領域をこの所定のサイズで分割したスライスとの対応付けを動的に制御する。
ストレージノード10,20,30について、ストレージノード10を例にして説明する。ストレージノード10は、ストレージ11に接続し、通信手段12、ハートビート送出手段13、故障ノード検出手段14、故障ノード確定手段15、故障ノード切り離し手段16及びアクセス処理手段17を有する。ストレージ20,30の構成も同様である。
ストレージ11は、実データが格納される実データ記憶領域である。この実データ記憶領域は、デバイスに関する情報を格納するデバイス情報11aと、スライスに関する情報を格納するn個(nは任意の整数)のメタデータ11bと、セグメントに対応付けられるn個のスライス11cとに分割される。スライス11cは、1つのセグメントに対し、プライマリスライスと、セカンダリスライスの2つが割り当てられ、二重化を構成する。プライマリスライスは、アクセスノード60のアクセス先に指定され、セグメントのデータを格納する。セカンダリスライスは、プライマリスライスのデータがミラーリングされる。図12で説明したように、リード要求に対してはプライマリスライスのデータを読み出して応答する。ライト要求に対しては、ミラーリングを行ってセカンダリスライスにデータを書き込んだ後、プライマリスライスにデータが書き込まれる。スライスをどのセグメントと対応付けるか、プライマリスライスまたはセカンダリスライスのどちらにするか、などは、制御ノード70が動的に決定することができる。なお、詳しくは後述するが、ストレージノード10では、他のストレージノード20,30が故障したことを検出し、自律的にスライスの状態を変更することができる。メタデータ11bは、スライスを管理するための管理情報である。スライスがどのセグメントに割り当てられているか、スライスの状態は、プライマリスライスであるかセカンダリスライスであるか、ミラーリングされているスライスはどこか、などの情報が登録されている。
通信手段12は、図示しないネットワークを介してストレージノード10と、他のストレージノード20,30、アクセスノード60、制御ノード70などとの間で行われる通信を制御する。
ハートビート送出手段13は、生存信号であるハートビート(HB)を所定の周期で送出する。ハートビートは、不特定多数の相手に向けてデータを送信することができるブロードキャストで送信される。送出されたハートビートは、他のストレージノード20,30と、制御ノード70が利用する。
故障ノード検出手段14は、他のストレージノード20,30が、送出するハートビートを監視し、一定期間ハートビートが検出されないストレージノードがあったときは、このストレージノードを故障ノードとする。また、必要に応じて、検出された故障ノードを故障ノード候補とし、故障ノード確定手段15によって確定処理を行ってもよい。
故障ノード確定手段15は、故障ノード検出手段14によって検出された故障ノード候補を、ブロードキャストにより、他のストレージノード20,30へ通知する。他のストレージノード20,30でも同様に故障ノードの候補が検出されたときは、ブロードキャストで通知が送られてくる。そこで、他のストレージノード20,30から送信された故障ノード候補の通知から故障ノード候補を抽出し、自身が検出した故障ノード候補と照合する。一致しているときは、故障ノード候補を故障ノードとして確定する。
故障ノード切り離し手段16は、故障ノード検出手段14が検出した故障ノード、または、故障ノード検出手段14が故障ノード候補として検出し、故障ノード確定手段15によって故障ノードと確定された故障ノードの切り離しを行う。メタデータには、ミラー先のスライス、すなわち、スライスがプライマリスライスの場合は対応付けられるセカンダリスライス、スライスがセカンダリスライスの場合は対応付けられるプライマリスライスのストレージノードが登録されている。ここでは、検出された故障ノードと、自身のスライスのミラー先のストレージノードとが一致していないかを照合する。一致しているときは、このスライスをシングルプライマリスライスに設定する。シングルプライマリスライスは、ミラーのスライスのないプライマリスライスをいう。アクセスノード60からのアクセス先にはなるが、ミラーのスライス(対応付けられたセカンダリスライス)へのミラーリングは行われない。これにより、故障ノードが切り離されるので、アクセスノード60からのアクセスが可能となる。
アクセス処理手段17は、アクセスノード60からの要求を処理する。リード要求であれば、アクセス要求のあったプライマリスライスからデータを読み出し、応答する。ライト要求であり、対象スライスがプライマリスライスであったときは、このプライマリスライスのミラーのスライスにライト要求し、正常応答が得られたとき、プライマリスライスへデータ書き込みを行って応答を返す。ライト要求であり、対象スライスがシングルプライマリスライスであったときは、シングルプライマリスライスへのデータ書き込みのみを行って応答を返す。また、アクセスノード60は、アクセス要求先のストレージノードへアクセス要求ができないとき、他のストレージノードへセグメントを指定してメタデータの読み出し要求を行う。これを受けたときは、指定セグメントに対応するメタデータを持っていれば、これをアクセスノード60へ送る。持っていないときは、指定セグメントのメタデータ読み出し要求をブロードキャストで送信する。これにより、該当するメタデータを持っているストレージノードからブロードキャストでメタデータが送られてくる。こうして送られてきたメタデータをアクセスノード60へ送る。故障ノード切り離し手段16によってメタデータが変更されている場合は、変更後のメタデータがアクセスノード60に送られる。以降、アクセスノード60は、取得したメタデータに基づいてアクセスを行うことができる。このように、ストレージノード10,20,30が自律的に変更したメタデータは、制御ノード70によらずアクセスノード60へ伝えることができる。
このようなストレージノードを有するマルチノードストレージシステムの故障ノード切り離し処理及び故障ノード切り離し方法について説明する。
ストレージノード10,20,30は、互いに定期的にハートビートを送出している。ここで、ストレージノード20が故障したとする。ストレージノード20が故障すると、ハートビートが途絶え、故障ノード検出手段14によって故障ノードとして検出される。このとき、ストレージノード10,30は、ともにストレージノード20を故障ノード候補として検出し、ブロードキャストで通知する。ストレージノード10は、ストレージノード30から、故障ノード候補としてストレージノード20を検出したことが通知される。故障ノード確定手段15は、ストレージノード30からの通知と、故障ノード検出手段14の検出した故障ノード候補とが一致するので、ストレージノード20を故障ノードとして確定する。故障ノード切り離し手段16は、メタデータを調べ、故障ノードとして確定されたストレージノード20がミラー先のスライスとなっているスライスを抽出する。抽出されたときは、このスライスをシングルプライマリスライスに変更し、メタデータを更新する。これにより、故障ノードが管理するスライスが切り離され、アクセスノード60からのアクセスが可能となる。変更前はプライマリスライスであれば、故障発生時リード要求は可であるがライト要求は不可となる。シングルプライマリスライスとしたことで、欠損したセカンダリスライスへのミラーリングが停止される。このため、アクセスノード60からのライト要求を正常に完了することができる。変更前はセカンダリスライスであれば、故障発生時、リード要求もライト要求も不可になる。シングルプライマリスライスとしたことで、欠損したプライマリスライスの代わりにプライマリスライスとなり、ミラーリングを停止される。このため、アクセスノード60からのリード要求及びライト要求を正常に完了することができる。
このように、スライスノードのみで故障ノードを検出し、自律的に故障ノードを切り離すことが可能となる。また、常駐の制御ノードがなくても、アクセスノードでメタデータを参照することもできる。この結果、アクセス不可となる事態を抑制し、サービスの継続性を向上させることができる。
以下、発明の実施の形態を詳細に説明する。図2は、本実施の形態のマルチノードストレージの構成例を示す図である。
マルチノードストレージは、ネットワーク500を介して、複数のディスクノード100,200,300,400と、アクセスノード600、制御ノード700及び管理ノード800が接続されている。
ディスクノード100にはディスク110、ディスクノード200にはディスク210、ディスクノード300にはディスク310、ディスクノード400にはディスク410が、それぞれ接続されている。ディスク110には、複数のハードディスク装置(HDD)が実装されている。ディスク210,310,410の構成も同様である。ディスクノード100,200,300,400は、例えば、IA(Intel Architecture)と呼ばれるアーキテクチャのコンピュータである。そして、接続されたディスク110,210,310,410に格納されたデータを管理し、管理しているデータをアクセスノード600経由で端末装置621,622,623に提供する。また、ディスクノード100,200,300,400は、冗長性を有するデータを管理するため、同一のデータが、少なくとも2つのディスクノードで管理される。本実施の形態では、ディスクノード100,200,300,400として、図1に示した故障ノード切り離し処理を行うストレージノードを提供する。
アクセスノード600には、ネットワーク610を介して複数の端末装置621,622,623が接続されている。アクセスノード600は、ディスクノード100,200,300,400のそれぞれが管理しているデータの格納場所を認識しており、端末装置621,622,623からの要求に応答して、ディスクノード100,200,300,400へデータアクセスを行う。
制御ノード700は、ディスクノード100,200,300,400を管理する。例えば、制御ノード700は、ディスクノード100,200,300,400から送出されるハートビートを監視し、故障を検出したときはリカバリ処理を行う。
管理ノード800は、マルチノードストレージのシステム全体を管理する。
図3は、ディスクノードのハードウェア構成例を示す図である。ディスクノード100は、CPU(Central Processing Unit)101によって装置全体が制御されている。CPU101には、バス106を介してRAM(Random Access Memory)102、HDD103、通信インタフェース104及びHDDインタフェース105が接続されている。
RAM102には、CPU101に実行させるOSやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM102には、CPU101による処理に必要な各種データが格納される。HDD103には、OSやアプリケーションのプログラムが格納される。通信インタフェース104は、ネットワーク500に接続されている。通信インタフェース104は、ネットワーク500を介して、他のディスクノード、アクセスノード600、制御ノード700及び管理ノード800など、マルチノードストレージシステムを構成する他のコンピュータとの間でデータの送受信を行う。HDDインタフェース105は、ディスク110を構成するHDDへのアクセス処理を行う。
ここで、論理ディスクとディスク110,210,310,410の関係について説明する。
図4は、論理ディスクとディスクとの関係の一例を示した図である。
仮想的な論理ディスク1000は、セグメント1001,1002,1003,1004,1005に分割されて管理される。各セグメントは、セグメントを識別する識別情報が付与される。ここでは、論理ディスク名と、アドレスとから構成される識別情報が付与されるとする。例えば、セグメント1001は、論理ディスク名L1と、アドレスA1とから、L1−A1という識別情報が設定される。同様に、セグメント1002はL1−A2、セグメント1003はL1−A3、セグメント1004はL1−A4、セグメント1005はL1−A5と設定される。
実データ記憶領域であるディスク110,210,310,410は、記憶領域がスライスに分割されて管理される。図4の例では、ディスク110は、スライス1101,1102,1103,1104を有している。ディスク210は、スライス2101,2102,2103,2104を有している。ディスク310は、スライス3101,3102,3103,3104を有している。そして、ディスク410は、スライス4101,4102,4103,4104を有している。各スライスには、制御ノード700によって、セグメントが割り当てられている。図の例では、セグメント[L1−A1]1001に対し、ディスク110のスライス1101と、ディスク310のスライス3102とが割り当てられている。図では、プライマリスライスをP、セカンダリスライスをSとしている。ディスク110のスライス1101の[L1−P1]は、セグメント[L1−A1]に対応付けられたプライマリスライスであることを表している。同様に、ディスク310のスライス3102の[L1−S1]は、セグメント[L1−A1]に対応付けられたセカンダリスライスであることを表している。また、[F]は、セグメントが割り当てられていないフリーの状態であることを表す。なお、図からわかるように、1つのセグメントに対応するプライマリスライスとセカンダリスライスとは、別のディスクに配置される。
例えば、セグメント[L1−A1]1001のプライマリスライスは、ディスク110のスライス[L1−P1]1101、セカンダリスライスは、ディスク310のスライス[L1−S1]3102である。セグメント[L1−A2]1002のプライマリスライスは、ディスク210のスライス[L1−P2]2101、セカンダリスライスは、ディスク110のスライス[L1−S2]1102である。同様に、セグメント[L1−A3]1003のプライマリスライスは、ディスク310のスライス[L1−P3]3101、セカンダリスライスは、ディスク210のスライス[L1−S3]2102である。
このようなセグメントと、プライマリスライス及びセカンダリスライスとの関係は、メタデータに記述される。
図5は、メタデータの一例を示した図である。(A)は、ディスクノードDP1のメタデータ、(B)は、ディスクノードDP2のメタデータの例である。なお、図5は、ディスクノードDP1及びディスクノードDP2のスライスには、図4に示したセグメントが割り当てられている。
(A)ディスクノードDP1のメタデータ1200は、ノードID1201、スライスID1202、状態1203、論理ディスク1204、アドレス1205、ミラーのノードID1206及びミラーのスライスID1207の情報項目を有する。
ノードID1201には、スライスを格納するディスクノードのIDが登録される。メタデータ1200のスライスは、すべてのディスクノードDP1に格納されるので、「DP1」が登録されている。スライスID1202には、ノードID1201のディスクノードにおけるスライスのIDが登録される。ここでは、スライス「SL1」「SL2」「SL3」「SL4」が登録されている。なお、SL1は、図4に示したディスクノード110のスライス1101に相当する。同様に、SL2はスライス1102、SL3はスライス1103、SL4はスライス1104に対応する。
状態1203には、スライスの割り当て状態が登録される。「P」は、プライマリスライスに割り当てられている状態を表している。プライマリスライスは、セグメントを構成するスライスで、対応する「S」がミラー先になる。「S」は、セカンダリスライスに割り当てられている状態を表している。セカンダリスライスは、プライマリスライスとともにセグメントを構成するスライスで、対応する「P」がミラー元になる。「F」は、セグメントに割り当てていないスライスを表している。他に、「SP」と「R」がある。「SP」は、シングルプライマリスライスを表している。シングルプライマリスライスは、縮退セグメントを構成するスライスで、対応するミラーのスライスがない。「R」は、リザーブスライスを表している。リザーブスライスは、二重化回復中のセグメントを構成するスライスで、他のディスクノードの「P」がミラー元となる。
論理ディスク1204には、スライスに割り当てられたセグメントの論理ディスクのIDが登録される。ここでは、図4の論理ディスク1000のIDである「L1」が登録されている。
アドレス1205には、論理ディスク上でスライスが割り当てられている先頭アドレスが登録される。なお、アドレスの代わりにセグメントのIDが登録されてもよい。ここでは、図4の論理ディスク1000のアドレス「A1」「A2」が登録されている。
ミラーのノードID1206には、ミラー先(元)のスライスを持つディスクノードのIDが登録される。スライスが「P」のときは、ミラー先(Pからミラーリングする)になる。スライスが「S」のときは、ミラー元(Sにミラーリングされる)になる。ここでは、図4の他のディスクノード「DP3」「DP2」が登録されている。
ミラーのスライスID1207には、ミラー先(元)のスライスのIDが登録される。
例えば、1行目のノードID「DP1」、スライスID「SL1」によって識別されるスライス[L1−P1]1101は、状態が「P(プライマリスライス)」であり、論理ディスク「L1」、アドレス「A1」によって識別されるセグメント[L1−A1]1001が割り当てられていることを表している。また、ミラー先には、ディスクノード「DP3」とスライスID「SL2」によって識別されるディスク310のスライス[L1−S1]3102が割り当てられていることを表している。2行目も同様である。
(B)ディスクノードDP2のメタデータも同様の項目が登録される。例えば、1行目のノードID「DP2」、スライスID「SL1」によって識別されるスライス[L1−P2]2101は、状態が「P(プライマリスライス)」であり、論理ディスク「L1」、アドレス「A2」によって識別されるセグメント[L1−A2]1002が割り当てられていることを表している。また、ミラー先には、ディスクノード「DP1」とスライスID「SL2」によって識別されるディスク110のスライス[L1−S2]1102が割り当てられていることを表している。2行目も同様である。
このように、メタデータには、スライスごとに、状態、割り当てられたセグメント、ミラー先(元)のスライスに関する情報が登録される。これらの情報は、状況の変化に応じて動的に更新される。
ブロードキャストについて説明する。図6は、ブロードキャストのフォーマットの一例と、具体例を示した図である。(a)は、ブロードキャストのフォーマットの一例、(b)は具体的なブロードキャストの例を示している。
ブロードキャストは、ハートビート送出手段13によるハートビート送出時と、故障ノード確定手段15による故障ノード候補通知時に用いられる。不特定多数に向けて送信する方式であり、送信されたブロードキャストデータは、ネットワークに接続する他の装置すべてで受信することができる。
(a)ブロードキャスト・フォーマットに示したブロードキャスト5000は、発信元ID5001と、故障ノードID5002とが設定されるようになっている。発信元ID5001には、ブロードキャストを送信した発信元のIDが設定される。ここでは、ディスクノード100,200,300,400のすべてでブロードキャストを発信することができる。故障ノードID5002には、検出された故障ノード候補のIDが設定される。
(b)は、ブロードキャストの具体例を示している。
通常時のブロードキャスト5010は、ハートビート送出に発行される。「発信元ID」には、ハートビートを送出したディスクノードのIDが設定される。また、ハートビート送出時、「故障ノードID」は、「なし(NULL)」になる。ブロードキャスト5010を受信したときは、故障ノード検出手段14において、「発信元ID」に設定されるディスクノードは故障していないと判定される。
故障検出時のブロードキャスト5020は、故障ノード確定手段15が、故障ノード候補を通知する際に発行される。「発信元ID」には、故障ノード候補を検出したディスクノードのIDが設定される。また、「故障ノードID」には、故障ノード候補としたディスクノードのIDが設定される。ブロードキャスト5020を受信したときは、故障ノード確定手段15において、「故障ノードID」が、自身が検出した故障ノード候補と一致するかどうかを判定するために用いられる。
次に、上記の構成のマルチノードストレージシステムの故障ノード切り離し処理動作及び故障ノード切り離し方法について詳しく説明する。
図7は、故障ノード切り離し処理の動作シーケンスを示した図である。
通常動作時には、各ディスクノードは所定の周期でハートビート(HB)をブロードキャストで送信する。ディスクノードDP1(100)が、ハートビート(HB)6001を送信すると、ディスクノードDP2(200)、ディスクノードDP3(300)及びディスクノードDP4(400)でこれを受信することができる。同様に、ディスクノードDP2(200)が、ハートビート(HB)6002を送信すると、ディスクノードDP1(100)、ディスクノードDP3(300)及びディスクノードDP4(400)でこれを受信することができる。ディスクノードDP3(300)のハートビート(HB)6003、ディスクノードDP4(400)のハートビート(HB)6004についても同様である。各ディスクノード100,200,300,400は、ハートビート(HB)が受信できたディスクノードは正常であると判定する。
ここで、ディスクノードDP3(300)に故障が発生し、ハートビート(HB)が途絶えたとする。一定期間ディスクノードDP3(300)からのハートビート(HB)が検出されなかった他のディスクノード100,200,400は、それぞれにディスクノードDP3(300)の故障を検出する(6005,6006,6007)。
ディスクノードDP3(300)の故障を検出した各ディスクノード100,200,400は、ディスクノードDP3(300)を故障ノード候補として通知する。ディスクノードDP1(100)は、ブロードキャスト5020を用いて故障通知6008を送信する。同様に、ディスクノードDP2(200)は故障通知6009、ディスクノードDP4(400)は故障通知6010を送信する。こうして、ディスクノード100,200,400は、他のディスクノードから、自身が検出した故障ノード候補「ディスクノードDP3」の故障が他でも検出されたことを通知する故障通知を受け取る。
ディスクノードDP1(100)は、ディスクノードDP3(300)の故障を確定し(6011)、ディスクノードDP3(300)のスライスをミラー先あるいはミラー元に持つスライスをシングルプライマリスライス(SP)に設定する(6012)。ディスクノードDP1(100)が保有するスライス[L1−P1]1101は、ミラー先にディスクノードDP3(300)が指定されているので、このスライスの状態が「SP」に変更される。これにより、スライス[L1−P1]1101へのライト要求時に、故障したディスクノードDP3(300)へのミラーリングが停止され、ライトが正常に実行できるようになる。
ディスクノードDP2(200)も、故障通知を受け取ると、ディスクノードDP3(300)の故障を確定し(6013)、ディスクノードDP3(300)のスライスをミラー先あるいはミラー元に持つスライスをシングルプライマリスライス(SP)に設定する(6014)。ディスクノードDP2(200)の保有するスライス[L1−S3]2102のミラー元にディスクノードDP3(300)が指定されているので、このスライス状態が「S」から「SP」に変更される。これにより、アクセス先をスライス[L1−S3]2102とすれば、リード要求もライト要求も正常に実行できるようになる。
そして、ディスクノードDP4(400)も、ディスクノードDP3(300)の故障を確定し(6015)、ディスクノードDP3(300)のスライスをミラー先あるいはミラー元に持つスライスをシングルプライマリスライス(SP)に設定する(6016)。ディスクノードDP4(410)のスライスの状態は、すべて「F」であるので変更はない。
こうして、ディスクノード100,200,400でディスクノードDP3(300)の切り離し処理が自律的に行われ、それぞれが管理するメタデータが更新される。
ここで、各ディスクノードが更新する前のメタデータを有するアクセスノード600が、ディスクノードDP3(300)のプライマリスライスに指定されるスライス[L1−P3]3101に格納されるデータへアクセス要求を行ったとする。このアクセス要求は、ディスクノードDP3(300)が故障しているためエラーとなり、アクセスノード600は、メタデータをディスクノードに要求する。例えば、ディスクノードDP4(400)に対して、[L1−P3]に関するメタデータ照会6017を行う。ディスクノードDP4(400)は、このメタデータを持っていないので、ブロードキャストでメタデータ照会6018を行う。これは、ディスクノードDP1(100)及びディスクノードDP2(200)で受け取ることができる。このうち、[L1−P3]に関するメタデータを持っているディスクノードDP2(200)が更新されたメタデータ6019をブロードキャストで返す。これを受け取ったディスクノードDP4(400)が更新されたメタデータ6020をアクセスノード600に返し、アクセスノード600のメタデータが更新される。以降、アクセスノード600は、取得されたメタデータに基づいて、ディスクノードDP2(200)へアクセス要求を行う。
このように、各ディスクノード内で更新されたメタデータは、制御ノードを介さずアクセスノードへ伝えることができる。これにより、常駐の制御ノードが存在しなくても、アクセスが継続される。
なお、図7では、メタデータ照会6018のブロードキャストをディスクノードが行うとしたが、アクセスノード600が直接ブロードキャストでメタデータ照会を行うとしてもよい。
ディスクノードDP1(100)における切り離し処理についてさらに説明する。図8は、ディスクノードDP1の切り離し処理時のメタデータ更新を示した図である。
ディスクノードDP1のメタデータ1200は、ディスクノードDP3(300)の切り離し処理が行われる前のメタデータを示している。ここでは、スライス「SL1」はプライマリスライス(P)であり、ミラー先にはディスクノードDP3が指定されている。また、スライス「SL2」は、セカンダリスライス(S)であり、ミラー元にはディスクノードDP2が指定されている。
ここで、ディスクノードDP3(300)が故障ノードと確定されるとセグメント状態1208は、スライス「SL1」が「ミラー先故障」となる。スライス「SL2」は「正常」のままである。そこで、欠損したミラー先のスライスの切り離し処理を行い、メタデータを更新する。切り離し後のディスクノードDP1のメタデータ1210では、スライス「SL1」の状態が、シングルプライマリスライス(SP)1213に変更される。また、シングルプライマリスライス(SP)としたので、ミラーのノードID1216と、ミラーのスライスID1217とは削除される。
次に、ディスクノードDP2(200)について同様に説明する。図9は、ディスクノードDP2の切り離し処理時のメタデータ更新を示した図である。
ディスクノードDP2のメタデータ2200は、ディスクノードDP3(300)の切り離し処理が行われる前のメタデータを示している。ここでは、スライス「SL1」はプライマリスライス(P)であり、ミラー先にはディスクノードDP1が指定されている。また、スライス「SL2」は、セカンダリスライス(S)であり、ミラー元にはディスクノードDP3が指定されている。
ここで、ディスクノードDP3(300)が故障ノードと確定されるとセグメント状態2208は、スライス「SL1」は「正常」が継続されるが、スライス「SL2」は「プライマリ故障」となる。そこで、欠損したプライマリスライスの代わりにプライマリになり、欠損したミラー元のスライスの切り離し処理を行って、メタデータを更新する。切り離し後のディスクノードDP2のメタデータ2210では、スライス「SL2」の状態が、シングルプライマリスライス(SP)2213に変更される。また、シングルプライマリスライス(SP)としたので、ミラーのノードID2216と、ミラーのスライスID2217とは削除される。
以下、ディスクノードによる故障ノードの検出と切り離し処理の手順について、フローチャートを用いて説明する。
図10は、故障ノードの検出と切り離し処理の手順を示したフローチャートである。
[ステップS01] ディスクノードは、他のディスクノードに向けて一定周期ごとに、ハートビート(HB)をブロードキャストで送出する。また、他のディスクノードが送出したハートビートを受信し、他のディスクノードのハートビートが一定期間途絶していないかどうかを監視する。
[ステップS02] ステップS01のハートビート監視によって、一定期間ハートビートが途絶している故障ノードが検出されたかどうかを判定する。故障ノードが検出されたときは、処理をステップS03に進める。故障ノードが検出されなかったときは、ステップS01に戻って、ハートビートの監視を継続する。
[ステップS03] 故障ノードが検出されたときは、検出された故障ノードを他のディスクノードに通知するため、故障ノードのIDをブロードキャストで送信する。
[ステップS04] 他のディスクノードが送信した故障ノードのIDを通知するブロードキャストを受信する。所定の数のディスクノードから故障ノードのIDを通知するブロードキャストを受信するまで待つ。所定の数は、任意の数であり、故障ノードと自ノードを除く、他のディスクノードすべてとすることもできる。
[ステップS05] 他のディスクノードがブロードキャストで通知した故障IDと、自ノードが検出した故障ノードとが一致しているかどうかを判定する。一致していれば、処理をステップS06に進める。一致していなければ、ステップS01に戻って、ハートビート監視からの処理を行う。
[ステップS06] 自ノードが検出した故障ノードと、他のディスクノードが検出した故障ノードとが一致したときは、このディスクノードを故障ノードに確定し、故障ノード切り離し処理を行う。故障ノード切り離し処理終了後、ステップS01に戻って、ハートビート監視からの処理を繰り返す。
以上の処理手順が行われることにより、一定周期で送出されるハートビートを用いて、ディスクノード間で互いの故障を検出するとともに、検出された故障ノードをそれぞれのディスクノードで切り離すことができる。これにより、ディスクノードのみで自律的に故障ノードが切り離されるため、常駐の制御ノードが存在しなくてもアクセスノードからのアクセスを継続することができる。
次に、故障ノード切り離し処理について説明する。図11は、故障ノード切り離し処理の手順を示したフローチャートである。
検出された故障ノードのIDを取得し、処理が開始される。
[ステップS61] メタデータから、未処理のスライスIDの情報を1行読み出す。そして、このスライスに割り当てられた「状態」、「ミラーのノードID」を抽出する。
[ステップS62] このスライスの「状態」をチェックし、セグメントが割り当てられているかどうかを判定する。割り当てられている(状態=PまたはS)ときは、処理をステップS63に進める。割り当てられていない(状態=F)ときは、処理をステップS68に進める。
[ステップS63] このスライスにセグメントが割り当てられているときは、「ミラーのノードID」を、検出された故障ノードのIDと照合する。
[ステップS64] ステップS63における照合の結果、ミラーのノードIDが故障ノードのIDと一致していれば、処理をステップS65に進め、ミラーのノードの切り離し処理を行う。一致していないときは、処理をステップS68に進める。
[ステップS65] ミラーのノードIDと故障ノードのIDとが一致しているときは、このスライスの「状態」がプライマリスライス(P)であるか、セカンダリスライス(S)であるかどうかを判定する。プライマリスライス(P)であれば、処理をステップS66に進める。セカンダリスライス(S)であれば、処理をステップS67に進める。
[ステップS66] スライスがプライマリスライス(P)であれば、故障しているミラーのノードを切り離し、このミラーのノードに割り当てられたセカンダリスライス(S)へのミラーライトを停止する。具体的には、メタデータのこのスライスに対応する「状態」をシングルプライマリスライス(SP)に変更し、ミラーのノードIDとミラーのスライスIDの登録を削除する。そして、処理をステップS68に進める。
[ステップS67] このスライスがセカンダリスライス(S)であれば、自スライスをプライマリスライス(P)に変更するとともに、故障しているミラーのノードを切り離し、このミラーのノードに割り当てられた前のプライマリスライス(P)へのミラーライトを停止する。具体的には、メタデータのこのスライスに対応する「状態」をシングルプライマリスライス(SP)に変更し、ミラーのノードIDとミラーのスライスIDの登録を削除する。
[ステップS68] メタデータに未処理のスライスがあるかどうかを判定する。あれば、ステップS61に戻って、次のスライスの処理を行う。なければ、処理を終了する。
以上の処理手順が実行されることにより、ディスクノードが故障したことにより欠損したセグメントのプライマリスライスまたはセカンダリスライスを切り離し、正常なスライスをシングルプライマリスライスにすることができる。これにより、シングルプライマリをアクセス先として、アクセスノードからのアクセスを継続させることができる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、ストレージシステムを構成するストレージノードが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD(Digital Versatile Disc)、CD−ROM(Compact Disc Read Only Memory)などの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
以上の実施の形態に関し、更に以下の付記を開示する。
(付記1) データを複数のストレージ装置に分散して格納するストレージシステムにて、前記ストレージ装置の実データ記憶領域を管理するコンピュータが故障したとき、前記コンピュータを切り離す故障ノード切り離し処理プログラムにおいて、
前記コンピュータを、
仮想的な論理ボリュームを分割したセグメントに対し、前記ストレージ装置の実データ記憶領域を前記セグメントの単位で分割したスライスを、アクセスノードからのアクセス先として前記セグメントのデータを格納するプライマリスライス、または、前記プライマリスライスのデータをミラーリングして格納するセカンダリスライスとして割り当て、前記セグメントと、前記セグメントに割り当てられた前記プライマリスライス及び前記セカンダリスライスと、を対応付けた管理情報を記憶手段に格納し、前記管理情報に基づいて前記アクセスノードからのアクセス要求を処理するアクセス処理手段、
他の前記ストレージ装置の実記憶領域を管理する他のコンピュータが正常動作中に所定の周期で送信する生存信号を監視し、一定期間前記生存信号が検出されなかった前記他のコンピュータを故障ノードとして検出する故障ノード検出手段、
前記故障ノードと前記管理情報を照合し、管理対象の前記スライスが前記故障ノードの管理する前記スライスに対応付けられていたときは、管理対象の前記スライスを前記アクセスノードのアクセス先であって前記ミラーリングが停止されるシングルプライマリスライスに設定し、前記故障ノードを切り離す故障ノード切り離し手段、
として機能させることを特徴とする故障ノード切り離し処理プログラム。
(付記2) 前記故障ノード切り離し手段は、前記情報を検索して前記故障ノードの管理する前記スライスに対応付けられている管理対象の前記スライスを抽出し、管理対象の前記スライスが前記プライマリスライスであれば、該スライスを前記シングルプライマリスライスに変更してミラーリングを停止させ、前記スライスが前記セカンダリスライスであるときは、該スライスを前記シングルプライマリスライスに変更して前記アクセスノードのアクセス先に変更するとともにミラーリングを停止させる、ことを特徴とする付記1記載の故障ノード切り離し処理プログラム。
(付記3) 前記コンピュータを、
前記アクセス処理手段による前記アクセス処理が実行可能状態にあるときは、前記所定の周期で、前記生存信号を前記他のコンピュータに向けてブロードキャストで送信する生存信号送出手段、
として機能させることを特徴とする付記1記載の故障ノード切り離し処理プログラム。
(付記4) 前記コンピュータを、
前記故障ノード検出手段によって検出された前記故障ノードを故障ノード候補とし、前記故障ノード候補の通知を前記他のコンピュータに向けて送信するとともに、前記他のコンピュータから前記故障ノード候補の通知を受信し、前記通知より抽出された故障ノード候補と、自身が検出した前記故障ノード候補とを照合し、一致しているときのみ前記故障ノード候補を前記故障ノードとして確定させる故障ノード確定手段、
として機能させることを特徴とする付記1記載の故障ノード切り離し処理プログラム。
(付記5) 前記故障ノード確定手段は、前記故障ノードを除くすべての前記他のコンピュータから前記故障ノード候補の通知を受け取り、すべての前記通知から抽出された前記故障ノード候補と、自身が検出した前記故障ノード候補とが一致するときのみ、前記故障ノード候補を前記故障ノードとして確定させる、ことを特徴とする付記4記載の故障ノード切り離し処理プログラム。
(付記6) 前記故障ノード候補の通知は、前記他のコンピュータに向けて前記ブロードキャストで送信される、ことを特徴とする付記4記載の故障ノード切り離し処理プログラム。
(付記7) 前記アクセス処理手段は、前記アクセスノードから前記セグメントを指定して要求される指定セグメントに対応する管理情報の読み出し要求を受けたときは、前記記憶手段に格納される前記管理情報から前記指定セグメントに対応する管理情報を検索し、検索されたときは該指定セグメントに対応する管理情報を前記アクセスノードに送信し、検索されなかったときは前記指定セグメントに対応する管理情報の読み出し要求を前記他のコンピュータに向けて送信し、該指定セグメントに対応する管理情報を有する前記他のコンピュータから取得された前記指定セグメントに対応する管理情報を前記アクセスノードに送信する、ことを特徴とする付記1記載の故障ノード切り離し処理プログラム。
(付記8) 前記アクセス処理手段は、前記他のコンピュータへ送信する前記指定セグメントに対応する管理情報の読み出し要求をブロードキャストで送信するとともに、前記指定セグメントに対応する管理情報の読み出し要求をブロードキャストで取得し、該管理情報を保有している場合には、該管理情報をブロードキャストで送信する、ことを特徴とする付記7記載の故障ノード切り離し処理プログラム。
(付記9) データを複数のストレージ装置に分散して格納するストレージシステムにて、前記ストレージ装置の実データ記憶領域を管理するコンピュータが故障したとき、前記コンピュータを切り離す故障ノード切り離し方法において、
アクセス処理手段が、仮想的な論理ボリュームを分割したセグメントに対し、前記ストレージ装置の実データ記憶領域を前記セグメントの単位で分割したスライスを、アクセスノードからのアクセス先として前記セグメントのデータを格納するプライマリスライス、または、前記プライマリスライスのデータをミラーリングして格納するセカンダリスライスとして割り当て、前記セグメントと、前記セグメントに割り当てられた前記プライマリスライス及び前記セカンダリスライスと、を対応付けた管理情報を記憶手段に格納し、前記管理情報に基づいて前記アクセスノードからのアクセス要求を処理する手順と、
故障ノード検出手段が、他の前記ストレージ装置の実記憶領域を管理する他のコンピュータが正常動作中に所定の周期で送信する生存信号を監視し、一定期間前記生存信号が検出されなかった前記他のコンピュータを故障ノードとして検出する手順と、
故障ノード切り離し手段が、前記故障ノードと前記管理情報を照合し、管理対象の前記スライスが前記故障ノードの管理する前記スライスに対応付けられていたときは、管理対象の前記スライスを前記アクセスノードのアクセス先であって前記ミラーリングが停止されるシングルプライマリスライスに設定し、前記故障ノードを切り離す手順と、
を有することを特徴とする故障ノード切り離し方法。
(付記10) データを複数のストレージ装置に分散して格納するストレージシステムにおいて、
仮想的な論理ボリュームを分割したセグメントに対し、前記ストレージ装置の実データ記憶領域を前記セグメントの単位で分割したスライスを、アクセスノードからのアクセス先として前記セグメントのデータを格納するプライマリスライス、または、前記プライマリスライスのデータをミラーリングして格納するセカンダリスライスとして割り当て、前記セグメントと、前記セグメントに割り当てられた前記プライマリスライス及び前記セカンダリスライスと、を対応付けた管理情報が格納される記憶手段と、前記管理情報に基づいて前記アクセスノードからのアクセス要求を処理するアクセス処理手段と、他の前記ストレージ装置の実記憶領域を管理する他のコンピュータが正常動作中に所定の周期で送信する生存信号を監視し、一定期間前記生存信号が検出されなかった前記他のコンピュータを故障ノードとして検出する故障ノード検出手段と、前記故障ノードと前記管理情報を照合し、管理対象の前記スライスが前記故障ノードの管理する前記スライスに対応付けられていたときは、管理対象の前記スライスを前記アクセスノードのアクセス先であって前記ミラーリングが停止されるシングルプライマリスライスに設定し、前記故障ノードを切り離す故障ノード切り離し手段と、を備えた複数のストレージノードと、
前記ストレージノードから前記管理情報を取得し、前記管理情報に基づいてアクセス先の前記ストレージノードを特定し、特定された前記ストレージノードに対しアクセス要求を行う前記アクセスノードと、
を有することを特徴とするストレージシステム。
発明の概要を示した図である。 本実施の形態のマルチノードストレージの構成例を示す図である。 ディスクノードのハードウェア構成例を示す図である。 論理ディスクとディスクとの関係の一例を示した図である。 メタデータの一例を示した図である。 ブロードキャストのフォーマットの一例と、具体例を示した図である。 故障ノード切り離し処理の動作シーケンスを示した図である。 ディスクノードDP1の切り離し処理時のメタデータ更新を示した図である。 ディスクノードDP2の切り離し処理時のメタデータ更新を示した図である。 故障ノードの検出と切り離し処理の手順を示したフローチャートである。 故障ノード切り離し処理の手順を示したフローチャートである。 アクセス処理の動作シーケンスを示した図である。
符号の説明
10 ストレージノード
11 ストレージ
11a デバイス情報
11b メタデータ
11c スライス
12 通信手段
13 ハートビート送出手段
14 故障ノード検出手段
15 故障ノード確定手段
16 故障ノード切り離し手段
17 アクセス処理手段

Claims (5)

  1. データを複数のストレージ装置に分散して格納するストレージシステムにて、前記ストレージ装置の実データ記憶領域を管理するコンピュータが故障したとき、前記コンピュータを切り離す故障ノード切り離し処理プログラムにおいて、
    前記コンピュータを、
    仮想的な論理ボリュームを分割したセグメントに対し、前記ストレージ装置の実データ記憶領域を前記セグメントの単位で分割したスライスを、アクセスノードからのアクセス先として前記セグメントのデータを格納するプライマリスライス、または、前記プライマリスライスのデータをミラーリングして格納するセカンダリスライスとして割り当て、前記セグメントと、前記セグメントに割り当てられた前記プライマリスライス及び前記セカンダリスライスと、を対応付けた管理情報を記憶手段に格納し、前記管理情報に基づいて前記アクセスノードからのアクセス要求を処理するアクセス処理手段、
    他の前記ストレージ装置の実記憶領域を管理する他のコンピュータが正常動作中に所定の周期で送信する生存信号を監視し、一定期間前記生存信号が検出されなかった前記他のコンピュータを故障ノードとして検出する故障ノード検出手段、
    前記故障ノードと前記管理情報を照合し、管理対象の前記スライスが前記故障ノードの管理する前記スライスに対応付けられていたときは、管理対象の前記スライスを前記アクセスノードのアクセス先であって前記ミラーリングが停止されるシングルプライマリスライスに設定し、前記故障ノードを切り離す故障ノード切り離し手段、
    として機能させるとともに、
    前記アクセス処理手段は、
    前記アクセスノードからプライマリスライスへのライト要求に対して、セカンダリスライスへのミラーリングを実行してから前記プライマリスライスが格納するデータを更新し、
    前記アクセスノードからシングルプライマリスライスへのライト要求に対して、前記故障ノードへのミラーリングを停止して前記シングルプライマリスライスが格納するデータを更新する、
    ことを特徴とする故障ノード切り離し処理プログラム。
  2. 前記コンピュータを、
    前記故障ノード検出手段によって検出された前記故障ノードを故障ノード候補とし、前記故障ノード候補の通知を前記他のコンピュータに向けて送信するとともに、前記他のコンピュータから前記故障ノード候補の通知を受信し、前記通知より抽出された故障ノード候補と、自身が検出した前記故障ノード候補とを照合し、一致しているときのみ前記故障ノード候補を前記故障ノードとして確定させる故障ノード確定手段、
    として機能させることを特徴とする請求項1記載の故障ノード切り離し処理プログラム。
  3. 前記アクセス処理手段は、前記アクセスノードから前記セグメントを指定して要求される指定セグメントに対応する管理情報の読み出し要求を受けたときは、前記記憶手段に格納される前記管理情報から前記指定セグメントに対応する管理情報を検索し、検索されたときは該指定セグメントに対応する管理情報を前記アクセスノードに送信し、検索されなかったときは前記指定セグメントに対応する管理情報の読み出し要求を前記他のコンピュータに向けて送信し、該指定セグメントに対応する管理情報を有する前記他のコンピュータから取得された前記指定セグメントに対応する管理情報を前記アクセスノードに送信する、ことを特徴とする請求項1記載の故障ノード切り離し処理プログラム。
  4. データを複数のストレージ装置に分散して格納するストレージシステムにて、前記ストレージ装置の実データ記憶領域を管理するコンピュータが故障したとき、前記コンピュータを切り離す故障ノード切り離し方法において、
    アクセス処理手段が、仮想的な論理ボリュームを分割したセグメントに対し、前記ストレージ装置の実データ記憶領域を前記セグメントの単位で分割したスライスを、アクセスノードからのアクセス先として前記セグメントのデータを格納するプライマリスライス、または、前記プライマリスライスのデータをミラーリングして格納するセカンダリスライスとして割り当て、前記セグメントと、前記セグメントに割り当てられた前記プライマリスライス及び前記セカンダリスライスと、を対応付けた管理情報を記憶手段に格納し、前記管理情報に基づいて前記アクセスノードからのアクセス要求を処理する手順と、
    故障ノード検出手段が、他の前記ストレージ装置の実記憶領域を管理する他のコンピュータが正常動作中に所定の周期で送信する生存信号を監視し、一定期間前記生存信号が検出されなかった前記他のコンピュータを故障ノードとして検出する手順と、
    故障ノード切り離し手段が、前記故障ノードと前記管理情報を照合し、管理対象の前記スライスが前記故障ノードの管理する前記スライスに対応付けられていたときは、管理対象の前記スライスを前記アクセスノードのアクセス先であって前記ミラーリングが停止されるシングルプライマリスライスに設定し、前記故障ノードを切り離す手順と、
    を有し、
    前記アクセス要求を処理する手順は、
    前記アクセスノードからプライマリスライスへのライト要求に対して、セカンダリスライスへのミラーリングを実行してから前記プライマリスライスが格納するデータを更新する手順と、
    前記アクセスノードからシングルプライマリスライスへのライト要求に対して、前記故障ノードへのミラーリングを停止して前記シングルプライマリスライスが格納するデータを更新する手順と、
    を有することを特徴とする故障ノード切り離し方法。
  5. データを複数のストレージ装置に分散して格納するストレージシステムにおいて、
    仮想的な論理ボリュームを分割したセグメントに対し、前記ストレージ装置の実データ記憶領域を前記セグメントの単位で分割したスライスを、アクセスノードからのアクセス先として前記セグメントのデータを格納するプライマリスライス、または、前記プライマリスライスのデータをミラーリングして格納するセカンダリスライスとして割り当て、前記セグメントと、前記セグメントに割り当てられた前記プライマリスライス及び前記セカンダリスライスと、を対応付けた管理情報が格納される記憶手段と、前記管理情報に基づいて前記アクセスノードからのアクセス要求を処理するアクセス処理手段と、他の前記ストレージ装置の実記憶領域を管理する他のコンピュータが正常動作中に所定の周期で送信する生存信号を監視し、一定期間前記生存信号が検出されなかった前記他のコンピュータを故障ノードとして検出する故障ノード検出手段と、前記故障ノードと前記管理情報を照合し、管理対象の前記スライスが前記故障ノードの管理する前記スライスに対応付けられていたときは、管理対象の前記スライスを前記アクセスノードのアクセス先であって前記ミラーリングが停止されるシングルプライマリスライスに設定し、前記故障ノードを切り離す故障ノード切り離し手段と、を備え、前記アクセス処理手段は、前記アクセスノードからプライマリスライスへのライト要求に対して、セカンダリスライスへのミラーリングを実行してから前記プライマリスライスが格納するデータを更新し、前記アクセスノードからシングルプライマリスライスへのライト要求に対して、前記故障ノードへのミラーリングを停止して前記シングルプライマリスライスが格納するデータを更新する、複数のストレージノードと、
    前記ストレージノードから前記管理情報を取得し、前記管理情報に基づいてアクセス先の前記ストレージノードを特定し、特定された前記ストレージノードに対しアクセス要求を行う前記アクセスノードと、
    を有することを特徴とするストレージシステム。
JP2008304198A 2008-11-28 2008-11-28 故障ノード切り離し処理プログラム、故障ノード切り離し方法及びストレージシステム Expired - Fee Related JP5217967B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008304198A JP5217967B2 (ja) 2008-11-28 2008-11-28 故障ノード切り離し処理プログラム、故障ノード切り離し方法及びストレージシステム
US12/569,219 US20100138687A1 (en) 2008-11-28 2009-09-29 Recording medium storing failure isolation processing program, failure node isolation method, and storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008304198A JP5217967B2 (ja) 2008-11-28 2008-11-28 故障ノード切り離し処理プログラム、故障ノード切り離し方法及びストレージシステム

Publications (2)

Publication Number Publication Date
JP2010128886A JP2010128886A (ja) 2010-06-10
JP5217967B2 true JP5217967B2 (ja) 2013-06-19

Family

ID=42223873

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008304198A Expired - Fee Related JP5217967B2 (ja) 2008-11-28 2008-11-28 故障ノード切り離し処理プログラム、故障ノード切り離し方法及びストレージシステム

Country Status (2)

Country Link
US (1) US20100138687A1 (ja)
JP (1) JP5217967B2 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8626871B2 (en) * 2010-05-19 2014-01-07 Cleversafe, Inc. Accessing a global vault in multiple dispersed storage networks
US8812916B2 (en) * 2011-06-02 2014-08-19 International Business Machines Corporation Failure data management for a distributed computer system
US9152458B1 (en) * 2012-08-30 2015-10-06 Google Inc. Mirrored stateful workers
US8850108B1 (en) * 2014-06-04 2014-09-30 Pure Storage, Inc. Storage cluster
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
JP6398417B2 (ja) * 2014-07-22 2018-10-03 富士通株式会社 ストレージ装置、ストレージシステム及びストレージ制御プログラム
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
JP2019082897A (ja) 2017-10-31 2019-05-30 富士通株式会社 情報処理装置、情報処理システム及びプログラム
JP6668309B2 (ja) * 2017-11-30 2020-03-18 株式会社日立製作所 記憶システム及びその制御方法
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11782610B2 (en) * 2020-01-30 2023-10-10 Seagate Technology Llc Write and compare only data storage
US11223681B2 (en) 2020-04-10 2022-01-11 Netapp, Inc. Updating no sync technique for ensuring continuous storage service in event of degraded cluster state
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
CN113590016A (zh) * 2020-04-30 2021-11-02 伊姆西Ip控股有限责任公司 用于管理存储盘的方法、电子设备和计算机程序产品
CN112131077A (zh) * 2020-09-21 2020-12-25 中国建设银行股份有限公司 故障节点的定位方法和定位装置、以及数据库集群系统
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
CN114780442A (zh) * 2022-06-22 2022-07-22 杭州悦数科技有限公司 分布式系统的测试方法和装置
CN116155594B (zh) * 2023-02-21 2023-07-14 北京志凌海纳科技有限公司 一种网络异常节点的隔离方法及系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001005739A (ja) * 1999-06-21 2001-01-12 Hitachi Ltd データパスにおける障害部位の特定方法および装置
US7275100B2 (en) * 2001-01-12 2007-09-25 Hitachi, Ltd. Failure notification method and system using remote mirroring for clustering systems
JP4037257B2 (ja) * 2002-12-26 2008-01-23 株式会社日立製作所 情報処理システムの制御方法、情報処理システム、及びプログラム
JP4711688B2 (ja) * 2003-05-21 2011-06-29 富士通株式会社 ストレージシステム
JP4296120B2 (ja) * 2004-04-09 2009-07-15 富士通株式会社 冗長構成復元方法、データ管理システム及び冗長構成復元プログラム
US7519851B2 (en) * 2005-02-08 2009-04-14 Hitachi, Ltd. Apparatus for replicating volumes between heterogenous storage systems
US7941602B2 (en) * 2005-02-10 2011-05-10 Xiotech Corporation Method, apparatus and program storage device for providing geographically isolated failover using instant RAID swapping in mirrored virtual disks
JP2007279890A (ja) * 2006-04-04 2007-10-25 Hitachi Ltd バックアップシステム及びバックアップ方法
JP4459217B2 (ja) * 2006-11-30 2010-04-28 株式会社東芝 クラスタシステムおよびクラスタシステムのデータ復旧方法
WO2008136074A1 (ja) * 2007-04-20 2008-11-13 Fujitsu Limited 2重化組み合わせ管理プログラム、2重化組み合わせ管理装置、および2重化組み合わせ管理方法

Also Published As

Publication number Publication date
JP2010128886A (ja) 2010-06-10
US20100138687A1 (en) 2010-06-03

Similar Documents

Publication Publication Date Title
JP5217967B2 (ja) 故障ノード切り離し処理プログラム、故障ノード切り離し方法及びストレージシステム
JP4325836B2 (ja) 複数リモートストレージのデータ同期方式
US9182918B2 (en) Network storage systems having clustered raids for improved redundancy and load balancing
JP4927408B2 (ja) 記憶システム及びそのデータ復元方法
US6134673A (en) Method for clustering software applications
WO2016070375A1 (zh) 一种分布式存储复制系统和方法
JP5396836B2 (ja) データ分散制御プログラム、ストレージ管理プログラム、制御ノード、およびディスクノード
JP2011128917A (ja) データ割当制御プログラム、データ割当制御方法、およびデータ割当制御装置
JP2005196683A (ja) 情報処理システム、情報処理装置、及び情報処理システムの制御方法
JP5094460B2 (ja) 計算機システム、データ一致化方法およびデータ一致化処理プログラム
US20040193658A1 (en) Disaster recovery processing method and apparatus and storage unit for the same
JP2019219954A (ja) クラスタストレージシステム、データ管理制御方法、データ管理制御プログラム
US20010056554A1 (en) System for clustering software applications
EP1569120A1 (en) Computer system for recovering data based on priority of the data
JP2010097385A (ja) データ管理プログラム、ストレージ装置診断プログラム、およびマルチノードストレージシステム
JP2004532442A (ja) ストレージシステムにおけるフェイルオーバー処理
CN104994168A (zh) 分布式存储方法及分布式存储系统
US9342418B2 (en) Storage system, storage control device and data transfer method
CN106331166A (zh) 一种存储资源的访问方法及装置
WO2005010766A1 (ja) データ格納システム
JP2004199682A (ja) 高可用性クラスタにおける活性判定用通信ネットワークとしての記憶媒体の使用
JP2015005037A (ja) 情報処理装置、情報処理装置の制御プログラム、および情報処理装置の制御方法
JP2006285336A (ja) 記憶装置及びストレージシステム並びにその制御方法
JP6569476B2 (ja) ストレージ装置、ストレージシステムおよびストレージ制御プログラム
JP5348300B2 (ja) データ管理プログラム、およびマルチノードストレージシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110808

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120712

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120724

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120924

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: 20130205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130218

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160315

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees