(57)【要約】【課題】耐障害性および高レスポンス性能を有するクラスタストレージ装置を安価に提供する。【解決手段】仮想化コントローラとして動作する機能を有するクラスタストレージ装置を提供する。各装置が有する負荷計算手段によって、複数のクラスタストレージ装置のうち最も低負荷な１台がコントローラ装置として自動的に選出される。また運用中においても、低負荷の装置がコントローラ権限を担当する。これらの機能により耐障害性と高レスポンスを実現する。【選択図】図１
2010146215.tif 000002
【特許請求の範囲】
【請求項１】
複数のクラスタストレージ装置が協調動作を行うクラスタストレージシステムを構成するクラスタストレージ装置であって、
外部装置及び他のクラスタストレージ装置と通信を行う通信手段と、
データを格納するためのストレージ手段と、
前記複数のクラスタストレージ装置による協調動作を管理するクラスタストレージ管理手段と、を備え、
前記クラスタストレージ管理手段は、前記外部装置からのアクセス要求のあったデータが前記複数のクラスタストレージ装置の何れに格納されているかを前記外部装置に通知し、前記外部装置と前記アクセス要求に対応するデータを格納する前記クラスタストレージ装置とで直接通信を行うように制御し、
前記クラスタストレージシステムのコントローラノードとして機能することを特徴とするクラスタストレージ装置。
【請求項２】
さらに、前記協調動作に参加している前記複数のクラスタストレージ装置の負荷情報を取得する負荷情報取得手段を備え、
前記クラスタストレージ管理手段は、前記外部装置からデータ格納要求があった場合、前記負荷情報取得手段が取得した負荷情報を参照し、最も負荷の少ないクラスタストレージ装置を前記外部装置に通知し、当該負荷最少のクラスタストレージ装置に前記データを格納するように制御することを特徴とする請求項１に記載のクラスタストレージ装置。
【請求項３】
さらに、前記協調動作に参加している他のクラスタストレージ装置に前記コントローラノードとしての機能を移譲し、前記クラスタストレージ管理手段の動作を停止するコントローラ機能移譲手段を
備えることを特徴とする請求項１に記載のクラスタストレージ装置。
【請求項４】
さらに、前記協調動作に参加している前記複数のクラスタストレージ装置の負荷情報を取得する負荷情報取得手段を備え、
前記負荷情報取得手段によって取得された前記コントローラノードとして機能するクラスタストレージ装置自身の負荷情報が所定の閾値を超えた場合に、前記コントローラ機能移譲手段が、前記コントローラ機能を、負荷が最少のクラスタストレージ装置に移譲することを特徴とする請求項３に記載のクラスタストレージ装置。
【請求項５】
複数のクラスタストレージ装置が協調動作を行うクラスタストレージシステムを構成し、ストレージノードとして機能するクラスタストレージ装置であって、
外部装置及び他のストレージ装置と通信を行う通信手段と、
データを格納するためのストレージ手段と、
前記複数のクラスタストレージ装置のうちコントローラノードとして機能するクラスタストレージ装置が存在するか否か判断する判断手段と、
前記コントローラノードとして機能するクラスタストレージ装置が存在しない場合に、現在ストレージノードとして機能する複数のクラスタストレージ装置の中からコントローラノードとして機能するストレージ装置を決定するコントローラ決定手段と、
を備えることを特徴とするクラスタストレージ装置。
【請求項６】
さらに、自装置を含め、前記ストレージノードとして機能する前記複数のクラスタストレージ装置の負荷情報を取得する負荷情報取得手段と、を備え、
前記判断手段は、所定時間内における前記コントローラノードとして機能するクラスタストレージ装置からの通信の有無を判断し、
前記コントローラ決定手段は、前記所定時間内に前記コントローラノードとして機能するクラスタストレージ装置からの通信がなかった場合に、前記負荷情報取得手段によって取得された負荷情報から負荷が最少のストレージ装置を特定し、コントローラノードとして機能するように指示することを特徴とする請求項５に記載のクラスタストレージ装置。
【請求項７】
複数のクラスタストレージ装置が協調動作を行うクラスタストレージシステムであって、
前記ストレージシステムの協調動作を管理するコントローラノードとして機能する、少なくとも１つのクラスタストレージ装置と、
前記コントローラノードによって管理される、ストレージノードとして機能する複数のクラスタストレージ装置と、を備え、
前記コントローラノードとして機能するクラスタストレージ装置は、
外部装置及び他のストレージ装置と通信を行う通信手段と、
データを格納するためのストレージ手段と、
前記複数のクラスタストレージ装置による協調動作を管理するクラスタストレージ管理手段と、を備え、
前記クラスタストレージ管理手段は、前記外部装置からのアクセス要求のあったデータが前記複数のクラスタストレージ装置の何れに格納されているかを前記外部装置に通知し、前記外部装置と前記アクセス要求に対応するデータを格納する前記クラスタストレージ装置とで直接通信を行うように制御することを特徴とするクラスタストレージシステム。
【請求項８】
前記コントローラノードとして機能するクラスタストレージ装置は、
さらに、前記ストレージノードとして機能するクラスタストレージ装置に前記コントローラノードとしての機能を移譲し、前記クラスタストレージ管理手段の動作を停止するコントローラ機能移譲手段を備えることを特徴とする請求項７に記載のクラスタストレージシステム。
【請求項９】
前記コントローラノードとして機能するクラスタストレージ装置は、
さらに、前記協調動作に参加している前記複数のクラスタストレージ装置の負荷情報を取得する負荷情報取得手段を備え、
前記負荷情報取得手段によって取得された前記コントローラノードとして機能するクラスタストレージ装置自身の負荷情報が所定の閾値を超えた場合に、前記コントローラ機能移譲手段が、前記コントローラ機能を、負荷が最少のクラスタストレージ装置に移譲することを特徴とする請求項８に記載のクラスタストレージシステム。
【請求項１０】
前記ストレージノードとして機能する複数のクラスタストレージ装置はそれぞれ、
外部装置及び他のストレージ装置と通信を行う通信手段と、
データを格納するためのストレージ手段と、
前記複数のクラスタストレージ装置のうちコントローラノードとして機能するクラスタストレージ装置が存在するか否か判断する判断手段と、
前記コントローラノードとして機能するクラスタストレージ装置が存在しない場合に、現在ストレージノードとして機能する複数のクラスタストレージ装置の中からコントローラノードとして機能するストレージ装置を決定するコントローラ決定手段と、
を備えることを特徴とする請求項７に記載のクラスタストレージシステム。
【請求項１１】
前記ストレージノードとして機能する複数のクラスタストレージ装置はそれぞれ、
さらに、自装置を含め、前記ストレージノードとして機能する前記複数のクラスタストレージ装置の負荷情報を取得する負荷情報取得手段と、を備え、
前記判断手段は、所定時間内における前記コントローラノードとして機能するクラスタストレージ装置からの通信の有無を判断し、
前記コントローラ決定手段は、前記所定時間内に前記コントローラノードとして機能するクラスタストレージ装置からの通信がなかった場合に、前記負荷情報取得手段によって取得された負荷情報から負荷が最少のストレージ装置を特定し、コントローラノードとして機能するように指示することを特徴とする請求項１０に記載のクラスタストレージシステム。
【請求項１２】
複数のクラスタストレージ装置が協調動作を行うクラスタストレージシステムを制御する方法であって、
前記システムは、前記ストレージシステムの協調動作を管理するコントローラノードとして機能する、少なくとも１つのクラスタストレージ装置と、前記コントローラノードによって管理される、ストレージノードとして機能する複数のクラスタストレージ装置と、を備え、
前記方法は、
前記コントローラノードとして機能するクラスタストレージ装置において、クラスタストレージ管理手段が、外部装置からのアクセス要求のあったデータが前記ストレージノードとして機能する複数のクラスタストレージ装置の何れに格納されているかを前記外部装置に通知し、前記外部装置と前記アクセス要求に対応するデータを格納する前記クラスタストレージ装置とで直接通信を行うように制御する工程を備えることを特徴とする方法。
【請求項１３】
さらに、コントローラ機能移譲手段が、前記ストレージノードとして機能するクラスタストレージ装置に前記コントローラノードとしての機能を移譲し、前記クラスタストレージ管理手段の動作を停止する工程を備えることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記協調動作に参加している前記複数のクラスタストレージ装置の負荷情報を取得する負荷情報取得手段によって取得された前記コントローラノードとして機能するクラスタストレージ装置自身の負荷情報が所定の閾値を超えた場合に、前記コントローラ機能移譲手段が、前記コントローラノードとしての機能を、負荷が最少のクラスタストレージ装置に移譲することを特徴とする請求項１３に記載の方法。
【請求項１５】
前記ストレージノードとして機能する複数のクラスタストレージ装置のそれぞれにおいて、
判断手段が、前記クラスタストレージシステム内に前記コントローラノードとして機能するクラスタストレージ装置が存在するか否か判断する工程と、
コントローラ決定手段が、前記コントローラノードとして機能するクラスタストレージ装置が存在しない場合に、現在ストレージノードとして機能する複数のクラスタストレージ装置の中からコントローラノードとして機能するストレージ装置を決定する工程と、
を備えることを特徴とする請求項１２に記載の方法。
【請求項１６】
さらに、負荷情報取得手段が、自装置を含め、前記ストレージノードとして機能する前記複数のクラスタストレージ装置の負荷情報を取得する工程を備え、
前記判断手段は、所定時間内における前記コントローラノードとして機能するクラスタストレージ装置からの通信の有無を判断し、
前記コントローラ決定手段は、前記所定時間内に前記コントローラノードとして機能するクラスタストレージ装置からの通信がなかった場合に、前記負荷情報取得手段によって取得された負荷情報から負荷が最少のストレージ装置を特定し、コントローラノードとして機能するように指示することを特徴とする請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はクラスタストレージ装置、クラスタストレージシステム、及びその制御方法に関し、例えば、民生用に利用されるストレージ装置のうち仮想ストレージを構築するものに関する。
【背景技術】
【０００２】
近年、デジタルデータおよびＨＤＤの容量ともに急速に増加している。特にデジタルデータ容量の増加はＨＤＤ容量増加に対して急速であり、その結果デジタルデータの保存には複数のＨＤＤを利用しなければならない状況となってきている。このようにデジタルデータを複数ＨＤＤに分散させて格納することは、データの発見を困難にする問題を生じさせている。
【０００３】
この問題を解決するため、複数ＨＤＤを１つの仮想的なストレージとして扱い、実際は複数のストレージに分散配置されているデータにアクセスしやすくするクラスタストレージ技術が注目を集めており、特にデータセンタなど大規模ストレージに利用されている。
【０００４】
その一方でこのような複数ＨＤＤを仮想化したクラスタストレージによるデジタルデータ保存は家庭内においても一般的となってきている。十分に堅牢な管理が施されているデータセンタなど大規模ストレージシステムとは異なり、家庭内のシステムにおいては、電源の遮断や周囲環境の劣悪さなどからクラスタストレージを構成する機器が比較的故障しやすい。すなわち、家庭内におけるクラスタストレージには既存のシステムよりも堅牢な耐障害性が求められている。
【０００５】
一般にストレージシステムの耐障害性を向上させる手段としてＲＡＩＤ（Redundant Arrays of Inexpensive Disks）が利用されている。ＲＡＩＤはデータを複数のストレージに復元できるだけの冗長情報を加えて分散格納し、ストレージの故障に対する耐障害性を高める技術である。ただし、ＲＡＩＤであっても、コントローラが故障した場合はストレージシステムが利用不可能になるのはもちろん、他のコントローラに交換したとしても複数のＨＤＤからデータを正しく連結し復元できるかどうかは保障されない。
【０００６】
このようなコントローラ故障時の問題を解決する技術は、例えば、特許文献１に記載されている。特許文献１記載の技術によれば、ストレージ装置群（クラスタ）の外部にコントローラを複数台配置させ、故障時に交代できるよう情報を共有することにより、コントローラの故障に対するストレージシステムの耐障害性を向上させている。コントローラ故障時には、他方がコントローラとして動作しクラスタストレージを管理する。その後、故障したコントローラの新しいコントローラへの交換時に既存のコントローラがクラスタの状態を通知することで、ストレージシステムの耐障害性を維持する。
【０００７】
【特許文献１】特開２００６−３０２２７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、クラスタの運用には元来コントローラは１台で十分であり、定常の運用において復帰用のコントローラは利用されることはほとんどない。そのため、特許文献１記載の技術ではストレージシステムの耐障害性を実現するためにコスト高になってしまうという問題点がある。
【０００９】
本発明はこのような状況に鑑みてなされたものであり、複数のストレージ装置を含むストレージシステムの耐障害性を安価に実現するための技術を提供するものである。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明によるクラスタは、コントローラノードとして機能するクラスタストレージ装置と、ストレージノードとして機能するクラスタストレージ装置と、によって構成される。上述した従来のクラスタは、全てストレージノードであり、クラスタストレージ装置とは別に、クラスタをコントロールするコントローラが設けられている。本発明では、コントローラノードは、複数のクラスタストレージ装置による協調動作を管理するクラスタストレージ管理手段と、を備えている。このクラスタストレージ管理手段は、クライアント端末装置等の外部装置からのアクセス要求があった場合、その要求に対応するデータが複数のクラスタストレージ装置の何れに格納されているかを外部装置に通知する。その通知以後は、外部装置とアクセス要求に対応するデータを格納するクラスタストレージ装置とで直接通信を行う。何れのストレージ装置に格納されているかのチェックは、ストレージノードだけでなく、コントローラノードに対しても行われる。コントローラノードはストレージノードと同様に、ＨＤＤ等のストレージ手段を備えているからである。
【００１１】
また、コントローラノードは、協調動作に参加している前記複数のクラスタストレージ装置の負荷情報を取得する。そして、クラスタストレージ管理手段は、外部装置からデータ格納要求があった場合、負荷情報取得手段が取得した負荷情報を参照し、最も負荷の少ないクラスタストレージ装置を外部装置に通知し、当該負荷最少のクラスタストレージ装置にデータを格納するように制御する。
【００１２】
さらに、コントローラノードは、協調動作に参加している他のクラスタストレージ装置にコントローラノードとしての機能を移譲し、クラスタストレージ管理手段の動作を停止するコントローラ機能移譲手段を備えている。より詳しくは、コントローラノードにおいて、負荷情報取得手段によって取得されたコントローラノードとして機能するクラスタストレージ装置自身の負荷情報が所定の閾値を超えた場合に、コントローラ機能移譲手段が、コントローラ機能を、負荷が最少のクラスタストレージ装置に移譲する。
【００１３】
一方、ストレージノードとして機能するクラスタストレージ装置は、複数のクラスタストレージ装置のうちコントローラノードとして機能するクラスタストレージ装置が存在するか否か判断し、コントローラノードとして機能するクラスタストレージ装置が存在しない場合に、現在ストレージノードとして機能する複数のクラスタストレージ装置の中からコントローラノードとして機能するストレージ装置を決定するように動作する。
【００１４】
また、ストレージノードは、自装置を含め、ストレージノードとして機能する複数のクラスタストレージ装置の負荷情報を取得する。そして、ストレージノードは、所定時間内における前記コントローラノードとして機能するクラスタストレージ装置からの通信の有無を判断し、所定時間内にコントローラノードとして機能するクラスタストレージ装置からの通信がなかった場合に、取得した負荷情報から負荷が最少のストレージ装置を特定し、コントローラノードとして機能するように指示する。
【００１５】
さらなる本発明の特徴は、以下本発明を実施するための最良の形態および添付図面によって明らかになるものである。
【発明の効果】
【００１６】
本発明によれば、クラスタの動作に必要ない冗長な装置を配置することなく、コントローラの故障に対する耐障害性を有するクラスタストレージ装置、クラスタストレージシステムを安価に提供することができる。
【発明を実施するための最良の形態】
【００１７】
本発明は、例えば家庭用のストレージシステムであって、ストレージシステムを構成する複数のストレージ装置のうち少なくとも１台がコントローラノードとして動作し、コントローラノードとしての動作に支障を来たしている場合に、ストレージノードとして機能している他のストレージ装置にコントローラノードの機能を移譲するものである。
【００１８】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【００１９】
＜クラスタストレージ装置の構成＞
図１は本発明の実施形態によるクラスタストレージ装置１００の概略構成例を示す図である。クラスタストレージ装置１００は、通信インターフェース２００と、ＣＰＵ２０２と、メモリ２０４と、ストレージ手段（ＨＤＤ）２０６と、を備えている。
【００２０】
通信インターフェース２００は、ネットワークや通信線を介して接続された他の装置（例えば、ホストコンピュータや他のストレージ装置）に対して命令及びデータを送信し、或いは当該他の装置からの命令及びデータを受信するための装置である。
【００２１】
ＣＰＵ２０２は、メモリ２０４に格納されているプログラムを実行し、メモリに対するデータの読み書きする。以下、メモリ２０４より手段をＣＰＵ２０２に読み込み、ＣＰＵ２０２が処理する動作を単に「手段を実行する」と表現する。
【００２２】
メモリ２０４は、装置が使用する処理手段を格納および一時的に情報を記憶するための
装置である。メモリ２０４に格納されているプログラムは、クラスタ処理プログラム３０と、ストレージ管理プログラム３２である。
【００２３】
クラスタ管理プログラム３０は、複数のクラスタストレージ装置１００を一つの仮想ストレージとして仮想化するプログラムであり、クラスタストレージ管理部（ステップ）３００と、アクセス負荷計算部（ステップ）３０２と、コントローラ権限移譲部（ステップ）３０４と、を含んでいる。ここで、仮想化とは、一般にユーザ側からシステム側の構成を隠ぺいすることである。本発明では、仮想化とは、特に複数のリソースの構成を隠ぺいし一つにまとめて扱えるようにすることを言うものとする。また、複数のクラスタストレージ装置を仮想化し一つにまとめた仮想ストレージを以降クラスタと呼ぶこととする。
【００２４】
クラスタストレージ管理部３００は、通信インターフェース２００を介して通信している他のクラスタストレージ装置１００の機器情報を格納および管理する。
【００２５】
また、アクセス負荷計算部３０２は、自身あるいは他のクラスタストレージ装置１００の処理負荷を定量的な値として出力する処理を実行する。負荷の定量的な値は、例えば、ストレージ手段２０６のインターフェース速度に反比例する値、或いは、ストレージ手段２０６が格納しているデータが必要とする転送帯域（文書型データならば高速、ストリームデータならば低速）に比例するような値と定義することが挙げられる。なお、単純に、ストレージ装置が稼動しているか否かによって負荷の有無を判断しても良い。
【００２６】
コントローラ権限移譲部３０４は、実行中のクラスタ管理プログラム３０を終了し、他のクラスタストレージ装置１００にクラスタ管理プログラム３０を代わりに実行させる処理を行う。後述するように、コントローラ権限移譲部３０４では、自身のストレージ装置における負荷が多くなり、他のストレージ装置の方が負荷が少ない場合には、その負荷の少ない（最小負荷のストレージ装置）にコントローラの機能を譲り渡す処理が実行される。
【００２７】
ストレージ管理プログラム３２は、通信インターフェース２００を介してクラスタストレージ装置１００を構成するストレージ手段２０６にデータを格納する、若しくはストレージ手段２０６に格納されたデータにアクセスするためのプログラムであり、ファイルシステム３２０と、アクセス負荷応答部（ステップ）３２２と、を含んでいる。
【００２８】
ファイルシステム３２０は、ストレージ手段２０６の中にどんなデータが格納されているかを管理するものである。ファイルシステム３２０が含まれるのは、本実施形態では、クラスタ管理プログラム３０を実行して複数のクラスタストレージ装置１００を管理するクラスタストレージ装置１００が、クラスタに属する各クラスタストレージ装置１００をロジカル・ブロッキング・アドレス（ＬＢＡ）方式によってアクセス可能なブロック・ストレージとして扱うと仮定しているからである。従って、アクセスするＬＢＡが分かればファイルシステムを用いなくてもよい。また、ストレージ管理プログラム３２の構成要素としては、例えば、クラスタを管理するクラスタストレージ装置１００が各クラスタストレージ装置１００をネットワーク１０８経由でデータにアクセス可能なプロトコルで動作するネットワーク接続ストレージとして仮想化する場合はプロトコル解釈部（ステップ）を用いてもよい。或いは、検索などをベースとしたオブジェクトベースド・ストレージ・デバイスとして仮想化する場合は、プロトコルに応じた検索質問を動的に生成するステップや、データをオブジェクトとして識別するための属性付けを行うデータベースを含む、ストレージ仮想化部（ステップ）を用いてもよい。
【００２９】
アクセス負荷応答部３２２は、コントローラとして動作するクラスタストレージ装置１００によって負荷量についての問い合わせがあった場合に、当該コントローラに自身の負荷量を通知する処理を行う。
【００３０】
クラスタストレージ装置１００の構成は図１に示す構成に限らず、クラスタ管理プログラム３０あるいはストレージ管理プログラム３２をＣＰＵ２０２で実行するのではなくＦＰＧＡやＥＥＰＲＯＭなどのハードウェア的に信号を処理する手段により同様の処理を実現するようにしてもよい。また、プログラムの格納先をストレージ手段２０６とし、必要なステップのみメモリ２０４にロードしてＣＰＵに実行させるようにしてもよい。
【００３１】
以上の構成を備えるクラスタストレージ装置１００の特徴は、クラスタストレージ装置１００がクラスタストレージ管理部３００を用いて、複数のクラスタストレージ装置１００をクラスタとして仮想化する点と、クラスタを管理しているクラスタストレージ装置１００の処理負荷が増加し、クラスタの管理が困難となった場合において、アクセス負荷計算部３０２を用いて、当該クラスタに属するクラスタストレージ装置１００のうち最も負荷が低いクラスタストレージ装置１００を検出し、コントローラ権限移譲ステップ３０４を用いて最も負荷が低いクラスタストレージ装置１００にクラスタ管理プログラム３０を実行させることにより、クラスタを管理するクラスタストレージ装置１００の負荷を最も低い状態に維持し、結果としてクラスタ１０２のレスポンス時間を最適化する点にある。
【００３２】
これらの特徴により、クラスタストレージ装置１００それぞれの計算資源をクラスタ管理プログラム３０及びストレージ管理プログラム３２の何れかが動作する最低限に抑えてもクラスタの動作を最適に保つことができる。言い換えれば、本発明の実施形態によるクラスタストレージ装置１００は、仮想化機能によるクラスタを提供する安価な装置である。
【００３３】
以下、クラスタ管理プログラム３０を実行しているクラスタストレージ装置１００をコントローラノードといい、ストレージ管理プログラム３２を実行しているクラスタストレージ装置１００をストレージノードということとする。
【００３４】
＜システム構成＞
図２は本発明の実施形態によるクラスタストレージシステムの概略構成例を示す図である。図２に示されるように、クラスタストレージは、複数のストレージノード１４０がコントローラノード１２０により仮想化されたクラスタ１０２と、外部装置がクラスタ１０２にアクセスするために利用する外部ネットワーク１０８と、ホストコンピュータ１５０と、少なくとも１つのクライアント端末装置１６０と、を備えている。
【００３５】
クラスタ１０２は、コントローラノード１２０（コントローラとして機能しているストレージ装置１００）と、複数のストレージノード１４０（ストレージとして機能しているストレージ装置１００）と、によって構成されている。本実施形態においては、コントローラノード１２０およびストレージノード１４０は同一のクラスタストレージ装置１００である。
【００３６】
図２において、クラスタストレージ装置１００がコントローラノード１２０であるか、ストレージノード１４０であるか明示するために、コントローラ１２０には識別情報１０４が付与されている。識別情報を有しないストレージ装置１００は、ストレージノード１４０に相当するものである。
【００３７】
また、コントローラノード１２０とストレージノード１４０は、それぞれの通信インターフェース２００及び通信線１０６を介して、相互に接続されている。
【００３８】
外部装置からアクセスがない定常状態においては、１台のコントローラノード１２０が外部ネットワーク１０８に接続されており、コントローラノード１２０がクラスタ１０２に属するストレージノード１４０とそれぞれ通信している。外部ネットワーク１０８を介して外部装置（例えば、クライアント端末装置１６０）がホストコンピュータ１５０を介してコントローラノード１２０にデータの参照もしくは格納要求を送信すると、コントローラノード１２０は、要求されたデータがいずれのストレージノードに存在するかをチェックする。そして、コントローラノード１２０は、管理するストレージノード１４０のうち、要求されたデータを提供できる適切なストレージノード１４０を選択し、そのストレージノード１４０にデータ参照あるいは格納を処理させる。つまり、適切なストレージノード１４０が特定された後は、ホストコンピュータ１５０と当該適切なストレージノード１４０との間で直接データの処理が実行される。
【００３９】
この動作により、コントローラノード１２０により管理される複数のクラスタストレージ装置１００は、外部装置から見て１台の仮想的なストレージ装置、すなわちクラスタ１０２として扱うことができる。
【００４０】
なお、クラスタストレージシステムの構成は、図２に示されたものに限られず、ストレージノード１４０同士が通信していてもよいし、ストレージノード１４０が外部ネットワーク１０８に直接接続していてもよい。また、コントローラノード１２０が２台以上存在していてもよい。
【００４１】
以上のような構成を有するクラスタストレージシステムにおいては、まず、外部装置（例えば、クライアント端末装置１６０）からの全てのデータアクセス要求が、コントローラノード１２０によって受信される。コントローラノード１２０は、クラスタ管理プログラム３０を用いて、アクセス要求に基づいて、自身が管理しているストレージノード１４０のうちデータを保持しているものを検索する。コントローラノード１２０が外部装置によって要求されているデータを保持するトレージノード１４０を発見した場合、コントローラノード１２０は、外部装置に、要求されているデータを保持するストレージノード１４０の機器情報を送信する。その後は外部装置とデータを保持しているストレージノード１４０の間でデータがやりとりされる。これにより、ストレージノード特定後はコントローラノード１２０には負荷がかからないようになっている。上記動作は、例えば、ＲＦＣ２６１６で定義されるステータスコード［３ｘｘリダイレクション］の利用などによって実現可能である。
【００４２】
このように、既存のプロトコル等に沿ってデータアクセス先の転送を実現すれば、外部装置のソフトウェアと対象データを保持するストレージノード１２０のストレージ管理プログラム３２とが互いに通信し、適切にクラスタストレージ装置１００にアクセスしデータのやりとりを実現する。従って、クラスタストレージ装置１００を扱うための専用ソフトウェアを外部装置に導入する必要がない。これにより、本発明のクラスタストレージ装置１００の導入障壁を低くすることができる。
【００４３】
＜コントローラ権限移譲の概念＞
図３は、本発明の実施形態によるクラスタ１０２におけるコントローラノード１２０の交替（権限移譲）の概念（例）を説明するための図である。図３に示される例では、既にストレージノード１４０ａ及び１４０ｂが外部ネットワーク１０８を介して外部装置（クライアント端末装置１６０）とデータのやりとり（データ参照４００、データ格納４０２）をしている状態となっている。そして、さらに、外部装置から、コントローラノード１２０に対して、それが格納するデータへのアクセスが発生した状態となっている。
【００４４】
コントローラノード１２０は、上述のように、クラスタ１０２への全てのアクセスを介するクラスタストレージ装置１００である。よって、コントローラノード１２０にデータアクセス負荷がかかった状態においては、コントローラノード１２０のレスポンスが低下してしまう。これはクラスタ１０２に送られた全てのアクセスに対するレスポンスの低下を招くため、望ましくない。
【００４５】
そこで、クラスタ１０２のレスポンスが低下する問題を解決するため、コントローラノード１２０はアクセス負荷計算部（ステップ）３０２を用いて、コントローラノード１２０が管理するストレージノード１４０の負荷を調査し、コントローラ権限移譲部（ステップ）３０４を用いて、最も負荷の低いストレージノード１４０にコントローラノード１２０の権限を移譲する処理を実行する。なお、負荷の調査について、最も単純な判断はストレージ装置が動作しているか否かに基づくものであり、動作していれば負荷が高い、動作していなければ負荷が低いとするものである。また、ストレージ手段２０６のインターフェース速度に反比例する値、或いは、ストレージ手段２０６が格納しているデータが必要とする転送帯域（文書型データならば高速、ストリームデータならば低速）に比例するような値と定義し、その値の比較によって負荷の高低を判断するようにしてもよい。
【００４６】
図３において、ストレージノード１４０ｃがデータの送受信を行っていない状態にあり、最も負荷が小さいとすると、コントローラノード１２０はコントローラ権限移譲部（ステップ）３０４を用いて、ストレージノード１４０ｃにコントローラノード権限を移譲し（自身のＩＰ情報を通知する）、さらにコントローラノード１２０はストレージノード１４０ｃの機器情報（ＩＰ情報）を自身に適用する。この動作によって、コントローラノード１２０とストレージノード１４０ｃは論理的に交替する。その後、コントローラノード権限を移譲したストレージノード１４０（今までコントローラノード１２０であったストレージ装置）は外部とデータのやり取りを行う。この動作により、クラスタ１０２は最適なレスポンスを維持することができる。
【００４７】
＜コントローラノードの動作＞
続いて、コントローラノード１２０の動作を詳しく説明する。コントローラノード１２０は、外部からアクセスを受けるまで待機する。コントローラノード１２０がアクセスを受けたとき、コントローラノード１２０はクラスタストレージ管理部（ステップ）３００を用いてまずそのアクセスがデータの格納か参照か判定する。
【００４８】
格納アクセスの場合、コントローラノード１２０は、アクセス負荷計算部（ステップ）３０２を用いて各ノードの負荷を調査する。コントローラノード１２０から負荷についての問い合わせがあった各ストレージノード１４０は、アクセス負荷計算部３０２を用いて自身の負荷を計算し、アクセス負荷応答部３２２を用いてコントローラノード１２０に対して自身の負荷を通知する。そして、コントローラノード１２０は、最も負荷の小さなストレージノード１４０にデータを格納するように、アクセス元の外部装置（クライアント端末装置１６０）に通知する。
【００４９】
一方の参照アクセスの場合について図４を用いて説明する。図４は、コントローラノード１２０の参照アクセス処理の動作５０を説明するためのフローチャート５０である。
【００５０】
待機状態（ステップＳ５０２）において、参照アクセスを受信すると、コントローラノード１２０はクラスタストレージ管理部３００を用いて、アクセス元が要求しているデータ（ターゲット）を保持しているクラスタストレージ装置１００を検索する（ステップＳ５０４）。例えば、クライアント端末装置１６０においてデータ名で指定されたデータについて、ホストコンピュータ１５０がデータ名からＬＢＡに変換する。そのＬＢＡを受け取ったコントローラノード１２０は、当該ＬＢＡから該当するデータを保持しているストレージノード１４０を特定する。なお、コントローラノード１２０自身が該当データを持っている場合もある。
【００５１】
他のストレージノード１４０が対象データを保持していると判断した場合（ステップＳ５０６でＹｅｓ）、コントローラノード１２０は、アクセス元に対象データを保持するストレージノード１４０の機器情報（ＩＰ情報）を送信する（ステップＳ５０８）。以降データのやりとりはアクセス元と特定されたストレージノード１４０の間で処理され、コントローラノード１２０が関与する必要はなくなる。そして、コントローラノード１２０は外部からアクセスを受けるため再び待機状態へと遷移する（ステップＳ５０２）。
【００５２】
一方、他のストレージノード１４０がターゲットを保持していない、すなわちコントローラノード１２０がターゲットを保持していると判断した場合（ステップＳ５０６でＮｏ）、コントローラノード１２０は、アクセス負荷計算部３０２を用いて、コントローラノード１２０自身がデータをアクセス元に出力した場合の負荷を予測する（ステップＳ５１０）。ステップＳ５１０では、アクセス負荷計算部３０２が、例えば、ストレージ手段２０６のインターフェース速度に反比例する値を予測負荷量としたり、或いは、ストレージ手段２０６が格納しているデータが必要とする転送帯域（文書型データならば高速、ストリームデータならば低速）に比例する値を予測負荷量としたりしてもよい。
【００５３】
そして、クラスタストレージ管理部３００が、ステップＳ５１０で予測した予測負荷量がクラスタ管理プログラム３０の継続動作に支障がないと判断される予め設定された閾値を超過しているかどうか判定する（ステップＳ５１２）。
【００５４】
閾値を超過しない、すなわちデータ送受信のためストレージ管理プログラム３２を動作させたとしてもレスポンスの低下が許容できる範囲であると予測した場合（ステップＳ５１２でＮｏ）、クラスタストレージ管理部３００は、アクセス元にコントローラノード１２０自身の機器情報（ＩＰ情報）をアクセス元に送信する（ステップＳ５１８）。その語は、当該コントローラノード１２０は、ストレージ管理プログラム３２を用いて、データ要求をしたクライアント端末装置１６０とデータをやりとりする。また、一方で、コントローラノード１２０は、クラスタ管理プログラム３０の実行も継続し、データのやりとりを行いながら待機状態へと遷移する（ステップＳ５０２）。
【００５５】
閾値を超過すると予測した場合（ステップＳ５１２でＹｅｓ）、コントローラノード１２０は、コントローラ権限移譲のため、コントローラノード１２０が管理するすべてのストレージノード１４０の負荷を調査する（ステップＳ５１４）。つまり、コントローラノード１２０は、各ストレージノード１４０に対して、予測負荷量について問い合わせる。すると、各ストレージノード１４０は、それぞれのアクセス負荷計算部３０２を用いて負荷予測量を算出し、アクセス負荷応答部３２２を用いて当該算出された負荷予測量を、問い合わせをしてきたコントローラノード１２０に通知する。
【００５６】
続いて、コントローラノード１２０のクラスタストレージ管理部３００は、予測負荷量の調査の結果、コントローラノード１２０自身の負荷が最も軽いと判断した場合（ステップＳ５１６でＹｅｓ）は、閾値を超過しないと予測した場合（ステップＳ５１２でＮｏ）と同様に、アクセス元にコントローラノード１２０自身の機器情報を送信する。そして、ストレージ管理プログラム３２がクライアント端末装置１６０とデータをやりとりし（ステップＳ５１８）、クラスタ管理プログラム３０は再び待機状態へと遷移する（ステップＳ５０２）。この状況においてはクラスタ１０２のレスポンスは低下してしまう。
【００５７】
ところで、クラスタ１０２に属するクラスタストレージ装置１００の台数に対して外部から過剰にデータアクセスを受けると、クラスタ１０２のレスポンスは低下してしまう。ただし、大規模なシステムにおいては、多ユーザによる過剰アクセスが発生することがしばしばあるのに対して、家庭内という限られたユーザによってのみ利用される環境で利用されるシステムにおいて過剰アクセスが発生することは極めて稀である。すなわち、本発明では、コントローラノード１２０に対してアクセスが発生しても、コントローラノード１２０よりも低負荷のストレージノード１４０が存在することが前提となっている。また、これは、本発明のクラスタストレージ装置１００による効果が発揮される条件の１つとなっている。
【００５８】
図４に戻って説明を続ける。コントローラノード１２０のクラスタストレージ管理部３００が、最低負荷を持つストレージノード１４０を発見した場合（ステップＳ５１６でＮｏ）、コントローラノード１２０はコントローラ権限移譲部３０４を用いて、コントローラ権限移譲シーケンス５２を実行する。
【００５９】
コントローラ権限移譲シーケンス５２は、アクセス元にはコントローラノード１２０ではなく他のストレージノード１４０（負荷が小さいストレージノード）がデータを有していると通知しておき、バックグラウンドでコントローラノード１２０とストレージノード１４０が交代することでコントローラノード１２０自身がストレージノード１４０の情報でアクセス元とデータのやり取りを行う処理である。以下、コントローラ移譲シーケンス５２について詳細に説明する。
【００６０】
まず、コントローラノード１２０は、クラスタ管理プログラム３０が有するクラスタ情報を最低負荷ストレージノード１４０にコントローラ権限移譲ステップ３０４を用いて送信し、コントローラ権限の移譲を依頼する（ステップＳ５２０）。より具体的には、例えば、コントローラノード１２０が自身のＩＰ情報を、クラスタ情報として移譲先のストレージノード１４０に通知する。
【００６１】
依頼を受けた最低負荷ストレージノード１４０は、クラスタ管理プログラム３０を実行し、受信したクラスタ情報を読み込むことでコントローラノード１２０として動作する。その一方で、権限を移譲した元コントローラノード１２０は、移譲先のストレージノード１４０の機器情報（ＩＰ情報）をアクセス元に送信する（ステップＳ５２２）。そしてすぐさま元コントローラノード１２０は移譲先ストレージノード１４０の機器情報（ＩＰ情報）を元コントローラノード１２０自身に適用する（ステップＳ５２４）。つまり、これは、移譲先のＩＰ情報を自身（移譲元：元コントローラノード）のＩＰ情報として適用する処理である。その後、元コントローラノード１２０は、アクセス元のデータアクセス要求を受け付け、ストレージ管理プログラム３２によりクライアント端末装置１６０と適切にデータをやりとりする。その一方で、この元コントローラノード１２０はクラスタ管理プログラム３０を停止し（ステップＳ５２６）、以降ストレージノード１４０として動作する。
【００６２】
以上説明したように、コントローラノードによるコントローラ権限移譲動作５２により、常にクラスタ１０２内で最も負荷の小さいクラスタストレージ装置１００がコントローラノード１２０として動作することができるようになる。その結果、クラスタ１０２のレスポンス性能が最適な状態を維持することができる。
【００６３】
また、各クラスタストレージ装置１００としては、クラスタ管理プログラム３０、あるいはストレージ手段２０６管理手段の何れかを実行できる分だけの計算資源を搭載すればよい。その結果、クラスタストレージ装置１００自体の価格を抑えることが可能となる。
【００６４】
＜コントローラノード動作不能時の処理＞
上述したように、本実施形態では、クラスタ１０２を管理するコントローラノード１２０が常時低負荷となるようにクラスタ１０２（クラスタストレージシステム）は動作している。
【００６５】
一方、経路障害や故障によりコントローラノード１２０が動作不可能となった場合、クラスタ１０２はその機能を果たせなくなる。
【００６６】
そこで、ここでは、初期状態あるいは障害により、コントローラノード１２０がクラスタ１０２に存在しない状況になった場合における、ストレージノード１４０によるコントローラノード決定動作について説明する。
【００６７】
図５は、コントローラノード１２０の決定処理を含む、ストレージノード１４０の動作５３を説明するためのフローチャートである。なお、特に断らない限り、動作５３の処理主体はストレージ管理プログラム３２である。
【００６８】
ストレージノード１４０は、コントローラノード１２０からアクセスがあるまで待機する（ステップＳ５３２）アクセスを受けた場合（ステップＳ５３２でＡｃｃｅｓｓ）、ストレージノード１４０は、ストレージ管理プログラム３２を用いて適切にデータアクセスを処理する（ステップＳ５３６）。
【００６９】
待機状態が一定時間継続した場合（ステップＳ５３４でＹｅｓ）、ストレージノード１４０は、コントローラノード１２０が故障などの理由で動作できなくなったと判断し、コントローラ決定動作を開始する（ステップＳ５５）。なお、ステップＳ５５の処理の詳細については後述する。
【００７０】
コントローラ決定動作Ｓ５５の完了後、当該ストレージノード１４０自身がコントローラノード１２０としてクラスタ１０２を管理するか否か判断する（ステップＳ５３８）。管理すると判断した場合（ステップＳ５３８でＹｅｓ）、このノードはストレージ管理プログラム３２を終了し、コントローラノード１２０として動作する（ステップＳ５４０）。
【００７１】
一方、当該ストレージノード自身がコントローラノード１２０として動作しないと判断した場合（ステップＳ５３８でＮｏ）、ストレージ管理プログラム３２による動作を継続し、コントローラノード１２０からのアクセスを待機する状態へと遷移する（ステップＳ５３０）。
【００７２】
続いて、コントローラ決定動作ステップ５５について図６を用いて詳しく説明する。図６は、コントローラノード決定動作フロー５５の詳細内容を説明するためのフローチャートである。
【００７３】
コントローラノード決定動作を開始したストレージノード１４０は、クラスタ管理プログラム３０を実行し、コントローラノード決定動作を開始する（ステップ５５０）。以下、ストレージノード１４０が一時的にクラスタ管理プログラム３０を実行し、コントローラノード決定動作を処理している状態を、テンポラリコントローラノード（図示せず）と呼ぶこととする。
【００７４】
テンポラリコントローラノードは、クラスタ１０２に属するクラスタストレージ装置１００にコントローラノード１２０が存在するか確認する（ステップＳ５５２）。これは、テンポラリコントローラノードによる問い合わせに対して、全てのノードが自身がコントローラノードであるか否かについて回答し、その回答内容によって判断しても良いし、動作しているコントローラノードのみが回答できるようにしておき、所定時間内に何れのノードからも回答がない場合にはコントローラノードが存在しないと判断しても良い。
【００７５】
コントローラノード１２０が存在すると判断された場合（ステップ５５４でＹｅｓ）、テンポラリコントローラノードはクラスタ管理プログラム３０を終了し、コントローラ決定動作を完了する（ステップＳ５６４）。この場合、コントローラノード１２０は故障していないからである。
【００７６】
コントローラノード１２０が存在しないと判断された場合（ステップＳ５５４でＮｏ）、テンポラリコントローラノードは、アクセス負荷計算部（ステップ）３０２を用いて、クラスタ１０２に属する全てのクラスタストレージ装置１００（全てのストレージノード）の負荷を調査する（ステップＳ５５６）。各クラスタストレージ装置の負荷量の調査方法は、上述した方法と同様なので、説明を省略する。
【００７７】
負荷量の調査の結果、テンポラリコントローラノード自身が最も負荷の低いクラスタストレージ装置１００であると判断した場合（ステップＳ５５８でＹｅｓ）、テンポラリコントローラノードは正式にコントローラノード１２０として動作し、クラスタ管理プログラム３０の実行を継続する（ステップＳ５６２及びＳ５６４）。
【００７８】
一方、他のクラスタストレージ装置１００の負荷がクラスタ１０２の中で最も低いと判断された場合（ステップＳ５５８でＮｏ）、テンポラリコントローラノードは、コントローラ権限移譲部３０４を用いて、最低負荷のクラスタストレージ装置１００にコントローラノードとして動作するように依頼する（ステップＳ５６０）。依頼を受けたクラスタストレージ装置１００は、自身のクラスタ管理プログラム３０を起動させ、コントローラノード１２０として動作し、以降クラスタ１０２を管理する。
【００７９】
その後、テンポラリコントローラノードはクラスタ管理プログラム３０を終了し、コントローラノード決定動作を終了し、ストレージノード１４０として動作を継続する（ステップＳ５６４）。
【００８０】
以上のような動作を実行することにより、クラスタ１０２は、初期状態あるいは障害によりクラスタ１０２を管理するコントローラノード１２０が存在しない状態からでも自動的にクラスタ１０２の動作を継続することができる。尚、何れのストレージノードも当該テンポラリコントローラノードになりうるものである。
【００８１】
＜まとめ＞
本実施形態では、クラスタを構成するクラスタストレージ装置自体がコントローラとして動作し、コントローラとして動作している装置が故障した場合は他のストレージ装置がコントローラ動作を開始することで上記コントローラ故障に対する耐障害性を確保する。これによれば、特別な設定をしなくても複数台のクラスタストレージ装置を接続するだけで、自動的にクラスタとして利用可能とする利便性を提供し、仮にコントローラノードが故障したとしても、現実的な時間で自動的に復帰する耐障害性を提供することができる。
【００８２】
つまり、従来のクラスタでは、全てストレージノードであり、クラスタストレージ装置とは別にクラスタをコントロールするコントローラが設けられているのに対し、本発明では、コントローラノードが複数のクラスタストレージ装置による協調動作を管理する。具体的には、コントローラノードは、クライアント端末装置等の外部装置からのアクセス要求があった場合、その要求に対応するデータが複数のクラスタストレージ装置の何れに格納されているかを外部装置に通知し、その通知以後は、外部装置とアクセス要求に対応するデータを格納するクラスタストレージ装置とで直接通信を行うようにしている。このようにすることにより、クラスタを構成する各クラスタストレージ装置の何れかがコントローラノードとして機能し、他のクラスタストレージ装置はストレージノードとして機能している。よって、各クラスタストレージ装置はストレージ動作、若しくはコントローラ動作何れかを実行するのに最低限の計算資源を持たせるだけで、クラスタ自体を低価格で実現することできるようになる。
【００８３】
さらに具体的には、コントローラノードは、協調動作に参加している前記複数のクラスタストレージ装置の負荷情報を取得し、外部装置からデータ格納要求があった場合、負荷情報取得手段が取得した負荷情報を参照し、最も負荷の少ないクラスタストレージ装置を外部装置に通知し、当該負荷最少のクラスタストレージ装置にデータを格納するように制御する。このようにすることにより、他の動作（クラスタへの別の読み出しや書き込み動作）に影響されずに、クラスタへのデータの格納動作がスムーズに実行できるようになる。
【００８４】
さらに、コントローラノードは、協調動作に参加している他のクラスタストレージ装置にコントローラノードとしての機能を移譲し、コントローラノードとしての機能を停止する。つまり、コントローラノードにおいて、負荷情報取得手段によって取得されたコントローラノードとして機能するクラスタストレージ装置自身の負荷情報が所定の閾値を超えた場合に、コントローラ機能を、負荷が最少のクラスタストレージ装置に移譲する。このようにすることにより、常に負荷の少ないクラスタストレージ装置がコントローラノードを担当するので、クラスタ管理を迅速にすることができ、外部装置からのアクセス性に影響を与えることもない。
【００８５】
一方、ストレージノードとして機能するクラスタストレージ装置は、複数のクラスタストレージ装置のうちコントローラノードとして機能するクラスタストレージ装置が存在するか否か判断し、コントローラノードとして機能するクラスタストレージ装置が存在しない場合に、現在ストレージノードとして機能する複数のクラスタストレージ装置の中からコントローラノードとして機能するストレージ装置を決定するように動作する。このようにすることにより、コントローラノードして機能していたクラスタストレージ装置が故障等により動作できなくなった場合でも代わりのコントローラノードを設定することができるので、クラスタ管理が通常通り行うことができるようになる。
【００８６】
具体的には、ストレージノードは、自装置を含め、ストレージノードとして機能する複数のクラスタストレージ装置の負荷情報を取得する。そして、ストレージノードは、所定時間内における前記コントローラノードとして機能するクラスタストレージ装置からの通信の有無を判断し、所定時間内にコントローラノードとして機能するクラスタストレージ装置からの通信がなかった場合に、取得した負荷情報から負荷が最少のストレージ装置を特定し、コントローラノードとして機能するように指示する。このようにすることにより、コントローラノードとして機能していたクラスタストレージ装置が故障した場合であっても、常に負荷の少ないクラスタストレージ装置（ストレージノード）がコントローラノードを担当するようになるので、クラスタ管理を迅速にすることができ、外部装置からのアクセス性に影響を与えることもない。
【００８７】
なお、本実施形態では、全てのクラスタストレージ装置がコントローラノードとして機能可能としているが、クラスタを構成する複数のクラスタストレージ装置のうち一部（例えば３分の１の装置）のみがコントローラノードとして機能できるようにしてもよい。これによれば、コントローラの移譲処理や決定処理がより迅速に行うことができ、各クラスタストレージ装置の処理の負担を軽減することができるようになる。
【００８８】
また、クラスタ内のコントローラノードの数は１つに限られず複数あっても良い。この場合、常に当初設定した数のコントローラノードがクラスタ内に存在するのが望ましい。従って、コントローラノードの移譲や故障が起こっても、コントローラノード数は一定に保たれる。これは、システムの負荷を考慮して当初そのコントローラノード数に設定したと考えられるため、その状態をなるべく維持するのが好ましいからである。
【００８９】
本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【００９０】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
【００９１】
また、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はＣＤ-ＲＷ、ＣＤ-Ｒ等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ(又はＣＰＵやＭＰＵ)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
【図面の簡単な説明】
【００９２】
【図１】本発明の実施形態によるクラスタストレージ装置１００の概略構成（例）を示す図である。
【図２】本発明の実施形態によるクラスタ（クラスタストレージシステム）１０２の概略構成（例）を示す図である。
【図３】コントローラノード１２０の交替動作の概略（例）を説明するための図である。
【図４】コントローラノード１２０の動作を説明するためのフローチャートである。
【図５】ストレージノード１４０の動作を説明するためのフローチャートである。
【図６】テンポラリコントローラノードのコントローラ決定動作を説明するためのフローチャートである。
【符号の説明】
【００９３】
１００・・・クラスタストレージ装置
１２０・・・コントローラノード
１４０・・・ストレージノード
１５０・・・ホストコンピュータ
１６０・・・クライアント端末装置
１０２・・・クラスタ
１０６・・・通信線
１０８・・・ネットワーク
【図１】
2010146215.tif 000003
【図２】
2010146215.tif 000004
【図３】
2010146215.tif 000005
【図４】
2010146215.tif 000006
【図５】
2010146215.tif 000007
【図６】
2010146215.tif 000008