(57)【特許請求の範囲】
【請求項１】
少なくとも１つのネットワークで相互接続された複数のコンピュータと、前記各コンピュータにそれぞれ接続されたディスク装置とを備えたクラスタシステムにおいて、
前記システム全体の排他制御と、前記各コンピュータにそれぞれ接続されたディスク装置を仮想的なＲＡＩＤ装置の構成要素として扱うために、グローバル命令から少なくとも１つのローカル命令への変換とを行うクラスタマネージャと、
前記複数のコンピュータ上で前記クラスタマネージャからそれぞれ独立に動作する制御機構とを具備し、
前記制御機構は、
自身が動作する前記コンピュータ上で前記ＲＡＩＤ装置を対象とする書き込み／読み出しのグローバル命令が発生した場合に、前記クラスタマネージャと通信することで当該グローバル命令を前記クラスタマネージャにより少なくとも１つのローカル命令に変換させる命令変換手段であって、前記クラスタマネージャにより当該ローカル命令に変換させる際に、当該ローカル命令の排他的実行のために前記クラスタマネージャを用いてロックを取得し、当該ローカル命令の実行終了時に前記クラスタマネージャを用いて当該ロックを解除する命令変換手段と、
前記命令変換手段によるロック取得が行われた前記ローカル命令が与えられた場合、当該ローカル命令に従って前記ディスク装置を対象とする読み出し／書き込みを行うディスク制御手段と、
前記命令変換手段によるロック取得が行われた前記ローカル命令が与えられた場合、当該ローカル命令に従ってパリティ計算を行うパリティ計算手段と、
前記命令変換手段から当該命令変換手段によるロック取得が行われた前記ローカル命令を受けて、当該ローカル命令を対応する他の前記コンピュータ、前記ディスク制御手段または前記パリティ計算手段に転送する命令転送手段とを含む
ことを特徴とする仮想的なＲＡＩＤ装置を有するクラスタシステム。
【請求項２】
前記クラスタマネージャは、パリティ計算に必要な情報が格納されている前記ディスク装置と接続されている前記コンピュータで当該情報を用いたパリティ計算の中間結果または最終結果を算出させるローカル命令であって、当該中間結果を算出させる場合には、当該中間結果を、当該中間結果との間でパリティ計算の次の中間結果または最終結果を算出するのに必要な情報が格納されている前記ディスク装置と接続されている前記コンピュータに転送させるローカル命令を生成することを特徴とする請求項１記載の仮想的なＲＡＩＤ装置を有するクラスタシステム。
【請求項３】
前記クラスタマネージャは、前記複数のコンピュータにそれぞれ設けられており、前記ネットワークを介して他の前記コンピュータ上の前記クラスタマネージャと同期をとって動作し、前記グローバル命令を前記ローカル命令に変換する際には、当該ローカル命令の指定するディスク装置の領域がロックされているかをチェックし、ロックされているならば、そのロックが開放されるのを待って、当該ローカル命令を自身が設けられている前記コンピュータ上の前記命令変換手段に渡すと共に、当該ローカル命令に対応して排他に必要なロック情報を作成し、当該ロック情報を前記ネットワークを介して他の前記コンピュータ上の前記クラスタマネージャに送ることでシステム全体の排他制御を行うことを特徴とする請求項１記載の仮想的なＲＡＩＤ装置を有するクラスタシステム。
【請求項４】
前記クラスタマネージャは、前記複数のコンピュータから独立に設けられたクラスタマネージャ用コンピュータ上で動作し、
前記複数のコンピュータ上で動作する前記制御機構は、前記ネットワークを介して前記クラスタマネージャ用コンピュータ上の前記クラスタマネージャと通信することを特徴とする請求項１記載の仮想的なＲＡＩＤ装置を有するクラスタシステム。
【請求項５】
少なくとも１つのネットワークで相互接続された複数のコンピュータから構成されるクラスタシステムにディスク装置と接続して用いられるクラスタシステム用のコンピュータにおいて、
前記クラスタシステム全体の排他制御と、前記クラスタシステムを構成する前記各コンピュータにそれぞれ接続されたディスク装置を仮想的なＲＡＩＤ装置の構成要素として扱うために、グローバル命令から少なくとも１つのローカル命令への変換とを行うクラスタマネージャと、
自身が動作する前記コンピュータ上で前記ＲＡＩＤ装置を対象とする書き込み／読み出しのグローバル命令が発生した場合に、前記クラスタマネージャと通信することで当該グローバル命令を前記クラスタマネージャにより少なくとも１つのローカル命令に変換させる命令変換手段であって、前記クラスタマネージャにより当該ローカル命令に変換させる際に、当該ローカル命令の排他的実行のために前記クラスタマネージャを用いてロックを取得し、当該ローカル命令の実行終了時に前記クラスタマネージャを用いて当該ロックを解除する命令変換手段と、
前記命令変換手段によるロック取得が行われた前記ローカル命令が与えられた場合、当該ローカル命令に従って前記ディスク装置を対象とする読み出し／書き込みを行うディスク制御手段と、
前記命令変換手段によるロック取得が行われた前記ローカル命令が与えられた場合、当該ローカル命令に従ってパリティ計算を行うパリティ計算手段と、
前記命令変換手段から当該命令変換手段によるロック取得が行われた前記ローカル命令を受けて、当該ローカル命令を対応する他の前記コンピュータ、前記ディスク制御手段または前記パリティ計算手段に転送する命令転送手段と
を具備することを特徴とするクラスタシステム用のコンピュータ。
【請求項６】
少なくとも１つのネットワークで相互接続された、複数のクラスタシステム用のコンピュータとクラスタマネージャ用のコンピュータとから構成されるクラスタシステムにおける、
前記クラスタシステム全体の排他制御と、前記複数のクラスタシステム用のコンピュータにそれぞれ接続されたディスク装置を仮想的なＲＡＩＤ装置の構成要素として扱うために、グローバル命令から少なくとも１つのローカル命令への変換とを行うクラスタマネージャが動作するクラスタシステムに用いられるクラスタシステム用のコンピュータであって、
自身が動作する前記クラスタシステム用のコンピュータ上で前記ＲＡＩＤ装置を対象とする書き込み／読み出しのグローバル命令が発生した場合に、前記クラスタマネージャと通信することで当該グローバル命令を前記クラスタマネージャにより少なくとも１つのローカル命令に変換させる命令変換手段であって、前記クラスタマネージャにより当該ローカル命令に変換させる際に、当該ローカル命令の排他的実行のために前記クラスタマネージャを用いてロックを取得し、当該ローカル命令の実行終了時に前記クラスタマネージャを用いて当該ロックを解除する命令変換手段と、
前記命令変換手段によるロック取得が行われた前記ローカル命令が与えられた場合、当該ローカル命令に従って前記ディスク装置を対象とする読み出し／書き込みを行うディスク制御手段と、
前記命令変換手段によるロック取得が行われた前記ローカル命令が与えられた場合、当該ローカル命令に従ってパリティ計算を行うパリティ計算手段と、
前記命令変換手段から当該命令変換手段によるロック取得が行われた前記ローカル命令を受けて、当該ローカル命令を対応する他の前記クラスタシステム用のコンピュータ、前記ディスク制御手段または前記パリティ計算手段に転送する命令転送手段と
を具備することを特徴とするクラスタシステム用のコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のコンピュータがネットワークで接続されたクラスタシステムに係り、特に各コンピュータにそれぞれ接続されたディスク装置を仮想的なＲＡＩＤ装置の構成要素として利用することが可能な仮想的なＲＡＩＤ装置を有するクラスタシステム及び同システム用のコンピュータに関する。
【０００２】
【従来の技術】
複数のコンピュータがネットワークで接続されたクラスタシステムは、一部のコンピュータに障害が発生したとき、他のコンピュータで運用を続けることによって、システム全体の可用性を向上させる機能を持つシステムとして従来からよく知られている。
【０００３】
クラスタシステムでは、クラスタマネージャが動作している。クラスタマネージャは、一部のコンピュータに障害が発生したとき、他のコンピュータで運用を続けられるように、次の２つの機能を持つ。
【０００４】
第１の機能は、クラスタシステムを構成する複数のコンピュータ間で、状態の一貫性を保証する機能である。状態の一貫性とは、クラスタシステムの全てのコンピュータから、クラスタマネージャが保持する状態の参照及び変更が可能であり、常に最新の状態が参照できることを意味する。
【０００５】
第２の機能は、クラスタシステムを構成するコンピュータのいずれかに障害が発生した場合に、それを検出する機能である。クラスタマネージャは、障害が発生したコンピュータを検出すると、そのコンピュータをシステムから切り離す。
【０００６】
【発明が解決しようとする課題】
このように、クラスタシステムでは、クラスタマネージャの管理のもとで、一部のコンピュータに障害が発生したとき、他のコンピュータで運用が続けられるようになっている。しかし、システムによっては、障害が発生したコンピュータが持っていたデータを参照できなければ、障害が発生した直前の状態から運用を再開することができない場合がある。このような場合、従来は、運用が一時中断したり、過去の状態に戻ったりしてしまう。
【０００７】
本発明は上記事情を考慮してなされたものでその目的は、クラスタシステムを構成するコンピュータに障害が発生したとき、そのコンピュータの持つデータが、停止した直前の状態から運用を再開するのに必要な場合であっても、各コンピュータにそれぞれ接続されたディスク装置を１つの仮想的なＲＡＩＤ装置の構成要素として利用することにより運用を続けることができるようにすることにある。
【０００８】
本発明の他の目的は、仮想的なＲＡＩＤ装置を有するクラスタシステムにおいて、１つのパリティ計算を行うのに必要なコンピュータ間のデータ転送回数を少なくして、仮想的なＲＡＩＤ装置に対する書き込みの速度を向上させることができるようにする。
【０００９】
【課題を解決するための手段】
本発明は、少なくとも１つのネットワークで相互接続された複数のコンピュータと、上記各コンピュータにそれぞれ接続されたディスク装置とを備えたクラスタシステムにおいて、システム全体の排他制御と、上記各ディスク装置を仮想的なＲＡＩＤ装置の構成要素として扱うのに必要なグローバル命令から少なくとも１つのローカル命令への変換とを行うクラスタマネージャと、上記複数のコンピュータ上で上記クラスタマネージャからそれぞれ独立に動作する制御機構であって、自身が動作するコンピュータ上で上記ＲＡＩＤ装置を対象とする書き込み／読み出しのグローバル命令が発生した場合に、上記クラスタマネージャと通信することで当該グローバル命令を上記クラスタマネージャにより少なくとも１つのローカル命令に変換させる命令変換手段と、与えられたローカル命令に従ってディスク装置を対象とする読み出し／書き込みを行うディスク制御手段と、与えられたローカル命令に従ってパリティ計算を行うパリティ計算手段と、上記命令変換手段からローカル命令を受けて、当該ローカル命令を対応する他のコンピュータ、自コンピュータの上記ディスク制御手段または上記パリティ計算手段に転送する命令転送手段とを含む制御機構とを備えたことを特徴とする。
【００１０】
このような構成のクラスタシステムにおいては、当該システムを構成する複数のコンピュータそれぞれに接続されたディスク装置を、１つの仮想的なＲＡＩＤ装置の構成要素として利用することができる。このため、システム内の１台のコンピュータに障害が発生しても、その障害が発生したコンピュータに接続されたディスク装置に書き込まれているデータを、他のコンピュータに接続されたディスク装置のデータからＲＡＩＤ（Redundant Arrays of Inexpensive Disks）技術により参照（復元）することが可能となり、これにより障害が発生した直前の状態から他のコンピュータで運用を再開することが可能となる。
【００１１】
ここで、上記クラスタマネージャに、次の機能、即ちパリティ計算に必要な情報が格納されているディスク装置と接続されているコンピュータで当該情報を用いたパリティ計算の中間結果または最終結果を算出させるローカル命令であって、当該中間結果を算出させる場合には、当該中間結果を、当該中間結果との間でパリティ計算の次の中間結果または最終結果を算出するのに必要な情報が格納されているディスク装置と接続されているコンピュータに転送させるローカル命令を生成する機能を持たせるとよい。
【００１２】
このようなローカル命令の生成により、クラスタシステムにおける書き込み動作において、パリテイの計算に必要な情報が１つのコンピュータに集められずに、パリティ計算の中間結果が順次、パリティ計算の次の中間結果または最終結果の計算に必要な情報を持つコンピュータに転送されることになるため、１つのパリティ計算を行うのに必要なコンピュータ間のデータ転送回数を少なくして、仮想的なＲＡＩＤ装置に対する書き込みの速度を向上させることが可能となる。
【００１３】
また、上記クラスタマネージャを、上記複数のコンピュータにそれぞれ設けて当該コンピュータ上で動作させ、クラスタマネージャ同士で上記ネットワークを介して同期を常に取る構成とするならば、システム内の１台のコンピュータに障害が発生しても、システム全体が停止するのを防止できる。
【００１４】
また、上記クラスタマネージャを、上記複数のコンピュータから独立に設けられたクラスタマネージャ用コンピュータに設けて当該クラスタマネージャ用コンピュータ上で動作させる構成とするならば、上記複数のコンピュータの負荷を低減することが可能となる。
【００１５】
【発明の実施の形態】
以下、本発明の実施の形態につき図面を参照して説明する。
【００１６】
［第１の実施形態］
図１は本発明の第１の実施形態に係る仮想的なＲＡＩＤ装置を有するクラスタシステムの構成を示すブロック図である。
図１において、複数、例えば３台のコンピュータ１-1，１-2，１-3は、２つのネットワーク２，３により相互接続されている。ネットワーク２，３は例えばＬＡＮ（ローカルエリアネットワーク）である。コンピュータ１-1，１-2，１-3には、それぞれディスク装置４-1，４-2，４-3が接続されている。ディスク装置４-1〜４-3は、コンピュータ１-1〜１-3により共有される仮想的なＲＡＩＤ装置（仮想ＲＡＩＤ装置）４０を構成する単体ディスク装置として用いられる。つまり、図１のクラスタシステムの特徴は、システム内の各コンピュータ１-1，１-2，１-3が持つディスク装置４-1，４-2，４-3を利用して仮想ＲＡＩＤ装置４０を構成している点にある。
【００１７】
一般に、ＲＡＩＤ装置の特徴は２つある。ＲＡＩＤ装置の第１の特徴は、当該ＲＡＩＤ装置を構成する複数のディスク装置（単体ディスク装置）のデータを、当該ＲＡＩＤ装置とコントローラ（ＲＡＩＤコントローラ）を介して接続された複数のコンピュータから共有できる点にある。このコントローラは、ＲＡＩＤ装置を構成する各ディスク装置（単体ディスク装置）を集中して制御する。また、ＲＡＩＤ装置の第２の特徴は、当該ＲＡＩＤ装置を構成する複数のディスク装置のいずれか１つに障害が発生しても、ＲＡＩＤ技術により残りのディスク装置のデータから障害ディスク装置のデータが復元でき、データの可用性を向上させることができる点にある。
【００１８】
上記のように、ＲＡＩＤ装置では、当該ＲＡＩＤ装置を構成する各ディスク装置を集中して制御するコントローラが必要となる。しかしクラスタシステムでは、この種のコントローラを持たない。したがって、従来から知られているＲＡＩＤ装置の構成をそのままクラスタシステムに応用して、仮想ＲＡＩＤ装置４０を実現することはできない。そこで、本実施形態では、仮想ＲＡＩＤ装置４０のコントローラの機能を、他の方法で実現している。
【００１９】
ここで、仮想ＲＡＩＤ装置４０のコントローラの機能の実現例を述べる前に、当該コントローラの機能（つまりＲＡＩＤ技術）について、仮想ＲＡＩＤ装置４０のコントローラが存在するものと仮定して、つまり仮想ＲＡＩＤ装置４０が通常のＲＡＩＤ装置であるものとして説明する。
【００２０】
まず、コンピュータ１-1〜１-3では、それぞれタスク１１-1〜１１-3が動作している。タスクとはオペレーティングシステム（ＯＳ）や、アプリケーションプログラム等のソフトウェアを指す。
【００２１】
ＲＡＩＤ装置４０へのデータ書き込みでは、データそのものが書き込まれるが（このデータをＲＡＩＤデータと称する）、その他に、パリティという、ＲＡＩＤデータから計算して求められる冗長データが、ディスク装置４-1〜４-3のうち、ＲＡＩＤデータが書き込まれるディスク装置とは別のディスク装置に書き込まれる。
【００２２】
ここで、ディスク装置４-1〜４-3のうち、ディスク装置４-1及び４-2にはＲＡＩＤデータｄ1，ｄ2を、ディスク装置４-3にはパリティｐを保存することにすると、パリティｐは次式
ｐ＝ｄ1 ＸＯＲ ｄ2
に従って求められる。ここで、ＸＯＲは排他的論理和演算を表す。
【００２３】
ここではまた、ディスク装置４-1〜４-3のうちのいずれか１つのディスク装置が故障して、その故障ディスク装置が使用できなくなった場合でも、残りのディスク装置のＲＡＩＤデータとパリティｐとを利用することによって、ＲＡＩＤデータの読み出し／書き込みが可能である。
【００２４】
例えば、ディスク装置４-1が故障したとき、ＲＡＩＤデータｄ1を読み出す（復元する）には、残っているディスク装置４-2上のＲＡＩＤデータｄ2及びディスク装置４-3上のパリティｐを用いて、
ｄ1＝ｐ ＸＯＲ ｄ2
とする。また、ディスク装置４-3が故障した場合は、そのままディスク装置４-1，４-2から、ＲＡＩＤデータｄ1，ｄ2の読み出しが可能である。
【００２５】
タスク１１-1または１１-2または１１-3の出す書き込み／読み出し命令は、ＲＡＩＤ装置４０のコントローラで処理される。書き込み命令には、書き込むべきデータと、書き込む場所の情報、つまりアドレス情報とが含まれる。読み出し命令には、アドレス情報が含まれる。
【００２６】
コントローラは、タスク１１-i（ｉは１〜３のいずれか）からの書き込み／読み出し命令で使われるアドレス情報（論理的なアドレス情報）と、ＲＡＩＤデータ及びパリティが、どのディスク装置のどこに書かれているかという位置情報との対応テーブル（以下、位置情報変換テーブルと称する）を記憶している。また、コントローラはパリティの計算を行う機能と、ディスク装置の読み出し／書き込みを行う機能とを持つ。
【００２７】
コントローラはまた、タスク１１-iから受け取った書き込み／読み出し命令（以下、グローバル命令と呼ぶ）を、ディスク装置４-j（ｊは１〜３のいずれか）に対する書き込み／読み出し命令及びパリティ計算命令（以下、ローカル命令と称する）に変換する機能を持つ。
【００２８】
書き込みのグローバル命令は、以下に示す動作
・ＲＡＩＤデータの読み出し、書き込み
・パリティの読み出し、書き込み
・パリティの計算
を指定する複数のローカル命令に変換される。
【００２９】
ここで、コントローラがＲＡＩＤデータを更新するときの手順を、ＲＡＩＤデータｄ1をｄ1'に更新する場合を例に説明する。
（ａ１）古いＲＡＩＤデ一夕ｄ1をディスク装置４-1から読み出す。
（ａ２）古いパリティｐをディスク装置４-3から読み出す。
（ａ３）パリティを計算する。新しいパリティｐ'は、
ｐ'＝ｄ1' ＸＯＲ ｄ2＝ｄ1' ＸＯＲ ｐ ＸＯＲ ｄ1
であるから、ｄ1'，ｐ，ｄ1からｐ'を計算できる。
【００３０】
（ａ４）新しいパリティｐ'をディスク装置４-3に書き込む。
【００３１】
（ａ５）新しいＲＡＩＤデータｄ1'をディスク装置４-1に書き込む。
【００３２】
新しいパリティｐ'を計算する方法としては、上記の、古いＲＡＩＤデータと古いパリティを使う方法（第１の方法）の他に、他のＲＡＩＤデータを使う方法（第２の方法）もある。第２の方法の場合、上記の例ではｄ2をディスク装置４-2から読み出し、
ｐ'＝ｄ1' ＸＯＲ ｄ2
で計算できる。
【００３３】
しかし、ディスク装置（単体ディスク装置）が５台以上ある場合では、第１の方法の方が、ディスク装置から読み出すＲＡＩＤデータの数が少なくて済む。このことについて、ディスク装置（単体ディスク装置）が６台あり、それぞれにＲＡＩＤデータｄ1，ｄ2，ｄ3，ｄ4，ｄ5とパリティｐが保存されていて、ｄ1をｄ1'に変更する場合を例に、説明する。
【００３４】
まず、第１の方法で新しいパリティｐ'を求めるには、
ｐ'＝ｄ1' ＸＯＲ ｐ ＸＯＲ ｄ1
のように、１つのＲＡＩＤデータｄ1とパリティｐを読み出すだけでよい。
【００３５】
これ対し、第２の方法では、
ｐ'＝ｄ1' ＸＯＲ ｄ2 ＸＯＲ ｄ3 ＸＯＲ ｄ4 ＸＯＲ ｄ5
のように、４つのＲＡＩＤデータｄ2，ｄ3，ｄ4，ｄ5を読み出す必要がある。
【００３６】
ディスク装置４-1〜４-3のうち１台が故障した場合には、コントローラが故障したディスク装置を検出し、当該故障したディスク装置をシステムから切り離す。例えば、ディスク装置４-1が故障した場合には、この状態でＲＡＩＤデータｄ1をｄ1'に更新するには、ｄ1を読み出すことも、ｄ1'を書き込むこともできない。この場合、ｄ1を使わずにパリティを計算して、つまり第２の方法によりパリティを計算して、パリティのみを更新することになる。
【００３７】
このときの手順は次のようになる。
（ｂ１）ＲＡＩＤデータｄ2をディスク装置４-2から読み出す。
（ｂ２）新しいパリティｐ'を
ｐ'＝ｄ1' ＸＯＲ ｄ2
の演算により求める。
（ｂ３）新しいパリティｐ'をディスク装置４-3に書き込む。
【００３８】
このように、古いＲＡＩＤデータｄ1を読み出すことができない状態で、新しいパリティを求めるには、上記第２の方法を使う必要がある。
【００３９】
次に、タスク１１-iからコントローラに、同じＲＡＩＤデータに対する複数の書き込み／読み出し命令が送られた場合のコントローラの動作について説明する。
【００４０】
まず、読み出し命令は同時に複数行っても問題ない。しかし、書き込み命令と読み出し命令、または複数の書き込み命令を同時に行うと、ディスク装置上のＲＡＩＤデータやパリティが破壊される。このような場合には、コントローラが上記各命令に対する排他制御を行う。
【００４１】
このように、仮想ＲＡＩＤ装置４０を構成するディスク装置４-1，４-2，４-3を集中して制御するコントローラには、次に列挙する６つの機能、即ち
（１）位置情報の管理
（２）ディスク装置４-1，４-2，４-3の故障検出と、システムからの切り離し
（３）排他制御
（４）書き込み／読み出し命令の変換（グローバル命令からローカル命令の変換）
（５）ディスク装置４-1，４-2，４-3を対象とする読み出し／書き込み
（６）パリティの計算
を実行する機能が要求される。
【００４２】
次に、以上のコントローラ機能（１）〜（６）を実現するためのコンピュータ１-1〜１-3の構成について、説明する。
まずコンピュータ１-1〜１-3上では、上記タスク１１-1〜１１-3の他に、クラスタマネージャ１２-1〜１２-3と、クラスタＲＡＩＤ制御部１３-1〜１３-3とが動作している。クラスタマネージャ１２-1〜１２-3は、それぞれネットワーク３を介して互いに通信を行う。これによりクラスタマネージャ１２-1〜１２-3は、クラスシステム全体では、１つの仮想的なクラスタマネージャを構成する。
【００４３】
本実施形態では、クラスタマネージャ１２-iとクラスタＲＡＩＤ制御部１３-i（ｉ＝１，２，３）とにより、上記コントローラの機能（１）〜（６）を以下のように実現する。
【００４４】
まず、ディスク装置４-iにアクセスするのに必要な位置情報変換テーブルは、変更があったときに全てのコンピュータ１-1〜１-3から同じ情報が参照できなければならない。そこで、この情報をクラスタマネージャ１２-iが状態として保持することにより、上記機能（１）を実現して情報の一貫性を保証する。そのため、クラスタマネージャ１２-iには、位置情報変換テーブル１２０-iが保持される。位置情報変換テーブル１２０-iのデータ構造例を図２に示す。位置情報変換テーブル１２０-iには、書き込みを指定するグローバル命令のＩＤ（識別）情報毎に、グローバル命令で使われるアドレス情報と、第１及び第２のＲＡＩＤデータ（ＤＡＴＡ１，ＤＡＴＡ２）がディスク装置４-1〜４-3（ＤＩＳＫ１〜ＤＩＳＫ３）のうちのいずれに書かれているかという位置情報と、パリティ（ＰＡＲＩＴＹ）がディスク装置４-1〜４-3（ＤＩＳＫ１〜ＤＩＳＫ３）のうちのいずれに書かれているかという位置情報とが登録される。クラスタマネージャ１２-1〜１２-3は、ネットワーク３を介して互いに同期をとって動作することで、位置情報変換テーブル１２０-1〜１２０-3の一致化を図る。
【００４５】
次に、ＲＡＩＤ装置４０のコントローラが存在すると仮定すると、当該コントローラが検出する必要があるのは、ディスク装置４-1〜４-3の故障のみである。しかし、クラスタシステムの場合、ディスク装置４-1〜４-3を持つコンピュータ１-1〜１-3が故障し、結果として当該コンピュータ１-1〜１-3が持つディスク装置４-1〜４-3、つまり当該コンピュータ１-1〜１-3に接続されているディスク装置４-1〜４-3の読み出し／書き込みができなくなる恐れがある。そこで本実施形態におけるクラスタマネージャ１２-iに、ディスク装置４-iの故障に加え、コンピュータ１-iの故障をも検出する機能を持たせることで、上記機能（２）を実現する。
【００４６】
書き込み命令の変換、ＲＡＩＤデータの書き込みやパリティの計算、つまり上記機能（４）〜（６）は、上記機能（３）により排他をとって行わないと、ＲＡＩＤデータやパリティが破壊されてしまう。そこで、これらの処理を全て各コンピュータ１-iのクラスタマネージャ１２-iが行うようにすれば、互いに同期をとって行うことが可能である。しかし、各コンピュータ１-iのクラスタマネージャ１２-iが互いに同期をとって動作すると、通常のＲＡＩＤ装置のコントローラが１台で排他制御を行うのに比べて、動作が遅くなってしまう。つまり、一般にクラスタシステムは、当該システムを構成するコンピュータの台数が増加するほど性能が向上するはずであるのに対し、各コンピュータ１-iのクラスタマネージャ１２-iが互いに同期をとって動作するために、コンピュータの台数が増加するほどクラスタマネージャ１２-iの負担が増えて、コンピュータの台数増加とシステムの性能向上とが対応しなくなる。
【００４７】
そこで本実施形態では、書き込み／読み出しを始めるときにクラスタマネージャ１２-iを使ってロックの取得を行い、書き込み終了時に当該クラスタマネージャ１２-iを再度使ってロックを開放する。このようにすることによって、ディスク装置４-iの書き込み／読み出し処理はクラスタマネージャ１２-iを利用せずに行うことができる。これにより、通常のＲＡＩＤ装置のコントローラと同様の排他を行いながら、システム規模に応じた書き込み性能、即ちスケーラブルな書き込み性能を発揮することが可能である。本実施形態では、このディスク装置４-iの書き込み／読み出し処理及びパリティ計算（つまり上記（５），（６）の機能）とコンピュータ間の書き込み／読み出しデータの転送及び書き込み／読み出し命令の転送とをクラスタＲＡＩＤ制御部１３-iによって実現する。また、タスク１１-iからの書き込み／読み出し命令（グローバル命令）をローカル命令に変換する機能（上記（４）の機能）については、当該命令の排他制御のために、クラスタＲＡＩＤ制御部１３-iがクラスタマネージャ１２-iを使用することで、つまりクラスタＲＡＩＤ制御部１３-i及びクラスタマネージャ１２-iによって実現する。
【００４８】
さて、タスク１１-iからのグローバル命令は、クラスタＲＡＩＤ制御部１３-iに送られる。クラスタＲＡＩＤ制御部１３-iは、クラスタマネージャ１２-iを使ってグローバル命令をローカル命令に変換し、排他のためのロックの取得を行い、ディスク装置４-iに対してＲＡＩＤデータ及びパリティの書き込み、参照を行うように構成されている。クラスタＲＡＩＤ制御部１３-iはまた、他のコンピュータ１-j（ｊ＝１，２，３、但しｊ≠ｉ）上で動作しているクラスタＲＡＩＤ制御部１３-jとネットワーク２経由で互いに通信を行う。
【００４９】
クラスタＲＡＩＤ制御部１３-1〜１３-3は、仮想デバイス１３１-1〜１３１-3と、命令変換部１３２-1〜１３２-3と、命令転送部１３３-1〜１３３-3と、パリティ計算部１３４-1〜１３４-3と、ディスク制御部１３６-1〜１３６-3とから構成される。パリティ計算部１３４-1〜１３４-3はバッファ１３５-1〜１３５-3を持つ。
【００５０】
タスク１１-iからのグローバル命令は、クラスタＲＡＩＤ制御部１３-i上の仮想デバイス１３１-iに送られる。仮想デバイス１３１-iは、タスク１１-iに対してクラスタＲＡＩＤ制御部１３-iが記憶装置であるかのように見せる。仮想デバイス１３１-iはコンピュータ１-iのＯＳ上に存在する一種のデバイスドライバである。
【００５１】
仮想デバイス１３１-iが受け取ったグローバル命令は命令変換部１３２-iに送られる。命令変換部１３２-iは、クラスタマネージャ１２-iと通信して、当該クラスタマネージャ１２-iによりグローバル命令からローカル命令（少なくとも１つのローカル命令）への変換を行わせ、当該ローカル命令を命令転送部１３３-iに送ると共に、当該ローカル命令を排他的に実行するためのロックの取得を行う。
【００５２】
命令転送部１３３-iは、ローカル命令の位置情報が他のコンピュータ１-jのディスク装置４-jを指していれば、そのコンピュータ１-jの命令転送部１３３-jヘ当該ローカル命令を送る。また命令転送部１３３-iは、上記位置情報が自身のコンピュータ１-iを指していれば、ローカル命令の内容に応じてパリティ計算部１３４-iまたはディスク制御部１３６-iに当該ローカル命令を送る。パリティ計算部１３４-iは、ディスク制御部１３６-iを通じてディスク装置４-iからＲＡＩＤデータまたはパリティを読み込み、パリティの計算を行う。
【００５３】
次に、第１の実施形態の動作について、ディスク装置４-1に格納されているＲＡＩＤデ一夕ｄ1をｄ1'に更新する書き込みのグローバル命令を実行する場合を例に、コンピュータ１-1のクラスタＲＡＩＤ制御部１３-1の動作を中心に、図３の動作説明図を参照して説明する。
【００５４】
コンピュータ１-1上で動作するタスク１１-1は、仮想ＲＡＩＤ装置４０に対する書き込み／読み出しが必要となった場合、当該書き込み／読み出しを指定するグローバル命令をクラスタＲＡＩＤ制御部１３-1内の仮想デバイス１３１-1に送る。仮想デバイス１３１-1は、タスク１１-1からのグローバル命令を受け取ると、当該グローバル命令を命令変換部１３２-1に送る。
【００５５】
命令変換部１３２-1は、仮想デバイス１３１-1からグローバル命令を受け取ると、当該グローバル命令をローカル命令に変換するために、当該グローバル命令をクラスタマネージャ１２-1に送る。クラスタマネージャ１２-1は、命令変換部１３２-1から送られたグローバル命令をローカル命令に変換する際に、当該ローカル命令の指定するディスク装置の領域がロックされているかをチェックし、ロックされているならば、そのロックが開放されるのを待って、当該ローカル命令を命令変換部１３２-1に返すと共に、当該ローカル命令に対応して排他に必要なロック情報を作成する。このロック情報はネットワーク３を介して他のコンピュータ１-2，１-3上のクラスタマネージャ１２-2，１２-3に送られる。この結果、クラスタマネージャ１２-1〜１２-3によりシステム全体の排他制御が実現され、クラスタＲＡＩＤ制御部１３-1〜１３-3はローカル命令を排他的に実行するためのロックを取得することができる。
【００５６】
クラスタマネージャ１２-1によるグローバル命令からローカル命令への変換は、先に述べた通常のＲＡＩＤ装置におけるコントローラによる変換と同様に、次のように行われる。まずクラスタマネージャ１２-1は、グローバル命令に含まれるアドレス情報を参照し、自身が保持している位置情報変換テーブル１２０-1を使って、当該アドレス情報に対応する位置情報を取得する。そしてクラスタマネージャ１２-1は、グローバル命令が読み出し命令であれば、取得した位置情報を含むローカル命令を作成する。またクラスタマネージャ１２-1は、グローバル命令が書き込み命令であれば、取得したアドレス情報から、対応するＲＡＩＤデータ及びパリティの位置情報を決定し、パリティ計算に必要な、旧データ（古いＲＡＩＤデータ）の読み出し、旧パリティ（古いパリティ）の読み出し、新パリティの計算、新データの書き込み、及び新パリティの書き込みをそれぞれ指定するローカル命令の群を作成する。
【００５７】
ここでグローバル命令が、先のコントローラの機能の説明の場合と同様に、ディスク装置４-1に格納されているＲＡＩＤデ一夕ｄ1をｄ1'に更新する書き込みのグローバル命令Ｇであるものとすると、当該グローバル命令Ｇはタスク１１-1から仮想デバイス１３１-1及び命令変換部１３２-1を介してクラスタマネージャ１２-1に送られて（ステップＳ１〜Ｓ３）、このクラスタマネージャ１２-1にて、グローバル命令Ｇから以下に述べるローカル命令Ｌ１〜Ｌ５への変換が行われる。
【００５８】
まず、上記（ａ１）のためのローカル命令Ｌ１、即ちディスク装置４-1からの古いＲＡＩＤデ一夕ｄ1の読み出しを指定するローカル命令Ｌ１が生成される。また、上記（ａ２）のためのローカル命令Ｌ２、即ちＲＡＩＤデータｄ1に対応するディスク装置４-3からの古いパリティｐの読み出しを指定するローカル命令Ｌ２が生成される。また、上記（ａ３）のためのローカル命令Ｌ３、即ち新しいＲＡＩＤデ一夕ｄ1'と（ローカル命令Ｌ２に従ってディスク装置４-3から読み出される）古いパリティｐと（ローカル命令Ｌ１に従ってディスク装置４-1から読み出される）古いＲＡＩＤデータｄ1とから、ｐ'＝ｄ1' ＸＯＲ ｐ ＸＯＲ ｄ1の演算により新しいパリティｐ'を求めることを指定するローカル命令Ｌ３が生成される。また、上記（ａ４）のためのローカル命令Ｌ４、即ち（ローカル命令Ｌ３に従って計算された）新しいパリティｐ'をディスク装置４-3に書き込むことを指定するローカル命令Ｌ４が生成される。また、上記（ａ５）のためのローカル命令Ｌ５、即ちディスク装置４-1への新しいＲＡＩＤデータｄ1'の書き込みを指定するローカル命令Ｌ５が生成される。
【００５９】
この例では、コンピュータ１-1上で動作するタスク１１-1から、クラスタＲＡＩＤ制御部１３-1の仮想デバイス１３１-1にグローバル命令が送られたことを前提としている。もし、コンピュータ１-2，１-3上で動作するタスク１１-2，１１-3から、クラスタＲＡＩＤ制御部１３-2，１３-3の仮想デバイス１３１-2，１３１-3にグローバル命令が送られた場合には、クラスタＲＡＩＤ制御部１３-2，１３-3の命令変換部１３２-2，１３２-3からの要求に応じて、コンピュータ１-2，１-3内のクラスタマネージャ１２-2，１２-3により上記したクラスタマネージャ１２-1と同様のグローバル命令からローカル命令への変換動作が行われる。
【００６０】
このように本実施形態では、通常のＲＡＩＤ装置であればコントローラが行うべき変換動作を、クラスタＲＡＩＤ制御部１３-1〜１３-3の要求によりクラスタマネージャ１２-1〜１２-3で行わせるようにしている。これは、ＲＡＩＤ装置４０が、コンピュータ１-1〜１-3に接続されているディスク装置４-1〜４-3から構成された仮想的なＲＡＩＤ装置であり、通常のＲＡＩＤ装置のように当該ディスク装置４-1〜４-3を集中して制御するコントローラを持たないことを考慮したためである。
【００６１】
命令変換部１３２-1は、クラスタマネージャ１２-1からローカル命令（ローカル命令群）を受け取ると、当該ローカル命令（ローカル命令群）を命令転送部１３３-1に送る。命令転送部１３３-1は、受け取ったローカル命令（ローカル命令群）の位置情報を参照して、命令単位に、他のコンピュータ１-2または１-3に対する命令であるか、或いは命令転送部１３３-1自身が置かれているコンピュータ（自コンピュータ）１-1に対する命令であるかを判定する。もし、他のコンピュータ１-2または１-3に対する命令であれば、命令転送部１３３-1は、そのコンピュータ１-2または１-3の命令転送部１３３-2または１３３-3に、対応するローカル命令をネットワーク２経由で転送する。一方、自タスク１１-iに対する命令であれば、命令転送部１３３-1は、その命令がパリティ計算命令であるか、ディスク装置４-1に対する書き込み／読み出し命令であるかを判定する。そして命令転送部１３３-1は、パリティ計算命令であれば当該パリティ計算命令をパリティ計算部１３４-1に転送し、ディスク装置４-1に対する書き込み／読み出し命令であれば当該書き込み／読み出し命令をディスク制御部１３６-1に転送する。また、命令転送部１３３-1からローカル命令が転送されたコンピュータ１-2または１-3内の命令転送部１３３-2または１３３-3においても、命令転送部１３３-1と同様の動作が行われる。
【００６２】
これにより、上記したグローバル命令Ｇの例、即ちグローバル命令Ｇがディスク装置４-1に格納されているＲＡＩＤデ一夕ｄ1をｄ1'に更新する書き込み命令である例では、クラスタマネージャ１２-1にてグローバル命令Ｇから変換されたローカル命令Ｌ１〜Ｌ５が命令変換部１３２-1を介して命令転送部１３３-1に送られ（ステップＳ４，Ｓ５）、次のように処理される。
【００６３】
まず、ディスク装置４-1からの古いＲＡＩＤデ一夕ｄ1の読み出しを指定するローカル命令Ｌ１とディスク装置４-1への新しいＲＡＩＤデータｄ1'の書き込みを指定するローカル命令Ｌ５とが、命令転送部１３３-1からディスク制御部１３６-1に転送される（Ｓ６，Ｓ７）。また、ディスク装置４-3からの古いパリティｐの読み出しを指定するローカル命令Ｌ２と新しいパリティｐ'をディスク装置４-3に書き込むことを指定するローカル命令Ｌ４とが、命令転送部１３３-1からコンピュータ１-3内の命令転送部１３３-3に転送され（ステップＳ８，Ｓ９）、更に命令転送部１３３-3からディスク制御部１３６-3に転送される（ステップＳ１０，Ｓ１１）。また、新しいＲＡＩＤデ一夕ｄ1'と古いパリティｐと古いＲＡＩＤデータｄ1とから新しいパリティｐ'を求めることを指定するローカル命令Ｌ３が命令転送部１３３-1からパリティ計算部１３４-1に転送される（ステップＳ１２）。
【００６４】
ディスク制御部１３６-1，１３６-3は、命令転送部１３３-1，１３３-3からローカル命令を受け取ると、当該ローカル命令に従ってディスク装置４-1，４-3に対する読み出し／書き込みを行う。ここでは、ディスク制御部１３６-1により、ローカル命令Ｌ１に従ってディスク装置４-1から古いＲＡＩＤデータｄ1が読み出され、パリティ計算部１３４-1に転送される（ステップＳ１３，Ｓ１４）。また、ディスク制御部１３６-3により、ローカル命令Ｌ２に従ってディスク装置４-3から古いパリティｐが読み出され、命令転送部１３３-3から命令転送部１３３-1を介してパリティ計算部１３４-1に転送される（ステップＳ１５〜Ｓ１７）。また、パリティ計算部１３４-1には命令転送部１３３-1から新しいＲＡＩＤデータｄ1'も転送される（ステップＳ１８）。コンピュータ１-1内の命令転送部１３３-1とコンピュータ１-3内の命令転送部１３３-3との間のローカル命令及びデータの転送は、ネットワーク２を介して行われる。
【００６５】
パリティ計算部１３４-1に転送された新ＲＡＩＤデータｄ1'、旧パリティｐ及び旧ＲＡＩＤデータｄ1は、当該パリティ計算部１３４-1内のバッファ１３５-1に一時格納される。パリティ計算部１３４-1は、バッファ１３５-1に格納された新ＲＡＩＤデータｄ1'、旧パリティｐ及び旧ＲＡＩＤデータｄ1の間でｐ'＝ｄ1'ＸＯＲ ｐ ＸＯＲ ｄ1の演算、つまり排他的論理和（ＸＯＲ）演算を行い、前記第１の方法により新パリティｐ'を生成する（ステップＳ１９）。
【００６６】
パリティ計算部１３４-1により生成された新パリティｐ'は、命令転送部１３３-1からコンピュータ１-3内の命令転送部１３３-3を介してディスク制御部１３６-3に転送される（ステップＳ２０〜Ｓ２２）。ディスク制御部１３６-3はローカル命令Ｌ４に従い、ディスク装置４-3に格納されている旧パリティｐを新パリティｐ'に更新する（ステップＳ２３）。また、新ＲＡＩＤデータｄ1'は、命令転送部１３３-1からディスク制御部１３６-1にも転送される（ステップＳ１８）。ディスク制御部１３６-1はローカル命令Ｌ５に従い、ディスク装置４-1に格納されている旧ＲＡＩＤデータｄ1を新ＲＡＩＤデータｄ1'に更新する（ステップＳ２３）。
【００６７】
次に、クラスタシステムを構成するコンピュータ１-1〜１-3のいずれか、例えばコンピュータ１-1に障害が発生した場合の動作について説明する。
【００６８】
コンピュータ１-1の障害は、当該コンピュータ１-1内のクラスタマネージャ１２-1により検出される。この場合、コンピュータ１-1が有するディスク装置４-1は利用できなくなるが、通常のＲＡＩＤシステムでディスク装置（単体ディスク装置）が１台故障した場合と同様に、残りのディスク装置４-2及び４-3のＲＡＩＤデータ及びパリティを読み出すことによって、つまり前記第２の方法によって、コンピュータ１-1に格納されているＲＡＩＤデータを等価的に読み出す（復元する）ことが可能となる。
【００６９】
クラスタマネージャ１２-1はコンピュータ１-1に障害が発生している状態で、ディスク装置４-1上のＲＡＩＤデータを読み出す必要のあるグローバル命令が命令変換部１３２-1から送られた場合、当該ディスク装置４-1を使用せずに当該ディスク装置４-1のＲＡＩＤデータを読み出すためのローカル命令を生成する。例えば、ディスク装置４-1のＲＡＩＤデータｄ1を読み出す必要がある場合であれば、クラスタマネージャ１２-1は、当該ＲＡＩＤデータｄ1に対応するディスク装置４-2上のＲＡＩＤデータｄ2を読み出すためのローカル命令とディスク装置４-3のパリティｐを読み出すためのローカル命令と、パリティｐ及びＲＡＩＤデータｄ2を用いてｄ1＝ｐ ＸＯＲ ｄ2の演算によりディスク装置４-1上のＲＡＩＤデータｄ1を復元するためのパリティ計算（排他的論理和演算）を指定するローカル命令とを生成する。以降の動作は、先のグローバル命令からローカル命令Ｌ１〜Ｌ５が生成された場合とほぼ同様である。以上は、ディスク装置４-1へのデータ書き込みまたはディスク装置４-1上のデータの更新の場合も同様である。
【００７０】
次に、コンピュータ１-1上で動作するタスク１１-1から書き込みを指定するグローバル命令が発生し、当該グローバル命令がコンピュータ１-2に接続されたディスク装置４-2上のＲＡＩＤデータ（旧データ）ｄ2を新らしいＲＡＩＤデータ（新データ）ｄ2'に書き換えることを指定している場合の手順について、図４（ａ）を参照して説明する。
【００７１】
まず、コンピュータ１-2（のクラスタＲＡＩＤ制御部１３-2）によりディスク装置４-2から旧データｄ2を読み出す（ステップＳ３１）。
次に、コンピュータ１-2（のクラスタＲＡＩＤ制御部１３-2）からコンピュータ１-1（のクラスタＲＡＩＤ制御部１３-1）にネットワーク２を介して旧データｄ2を転送する（ステップＳ３２）。
【００７２】
また、コンピュータ１-3（のクラスタＲＡＩＤ制御部１３-3）によりディスク装置４-3から旧パリティｐを読み出す（ステップＳ３３）。
次に、コンピュータ１-3（のクラスタＲＡＩＤ制御部１３-3）からコンピュータ１-1（のクラスタＲＡＩＤ制御部１３-1）にネットワーク２を介して旧パリティｐを転送する（ステップＳ３４）。
【００７３】
次に、コンピュータ１-1（のクラスタＲＡＩＤ制御部１３-1）で、旧データｄ2、旧パリティｐ及び新データｄ2'の間の排他的論理和（ＸＯＲ）演算を行い、新パリティｐ'＝ｄ2' ＸＯＲ ｐ ＸＯＲ ｄ2を生成する（ステップＳ３５）。
【００７４】
コンピュータ１-1（のクラスタＲＡＩＤ制御部１３-1）からコンピュータ１-2（のクラスタＲＡＩＤ制御部１３-2）にネットワーク２を介して新データｄ2'を転送する（ステップＳ３６）。
次に、コンピュータ１-2（のクラスタＲＡＩＤ制御部１３-2）によりディスク装置４-2上の旧データｄ2を新データｄ2'に書き換える（ステップＳ３７）。
【００７５】
また、コンピュータ１-1（のクラスタＲＡＩＤ制御部１３-1）からコンピュータ１-3（のクラスタＲＡＩＤ制御部１３-3）にステップＳ３５で生成した新パリティｐ'をネットワーク２経由で転送する（ステップＳ３８）。
次に、コンピュータ１-3（のクラスタＲＡＩＤ制御部１３-3）によりディスク装置４-3上の旧パリティｐを新パリティｐ'に書き換える（ステップＳ３９）。
【００７６】
このようにして、新パリティｐ'及び新データｄ2'を、それぞれディスク装置４-2及び４-3に書き込むことができる。但し、以上の手順（図４（ａ）参照）では、ネットワーク２を経由してのコンピュータ間の転送（ＲＡＩＤデータの転送とパリティの転送）が４回発生し、仮想ＲＡＩＤ装置４０に対する読み出し／書き込みの性能が低下する。
【００７７】
そこで、コンピュータ間の転送回数を減らすことを可能とする本実施形態の変形例について、図４（ｂ）を参照して説明する。なお、本変形例においても、図４（ａ）の例と同様に、コンピュータ１-1上で動作するタスク１１-1から、ディスク装置４-2上のＲＡＩＤデータ（旧データ）ｄ2を新らしいＲＡＩＤデータ（新データ）ｄ2'に書き換えることを指定するグローバル命令が発生したものとする。
【００７８】
まず、コンピュータ１-1（のクラスタＲＡＩＤ制御部１３-1）からコンピュータ１-2（のクラスタＲＡＩＤ制御部１３-2）にネットワーク２を介して新データｄ2'を転送する（ステップＳ４１）。
【００７９】
次に、コンピュータ１-2（のクラスタＲＡＩＤ制御部１３-2）によりディスク装置４-2から旧データｄ2を読み出す（ステップＳ４２）。
次に、コンピュータ１-2（のクラスタＲＡＩＤ制御部１３-2）で、コンピュータ１-1（のクラスタＲＡＩＤ制御部１３-1）から転送された新データｄ2'及び自コンピュータ１-2（のクラスタＲＡＩＤ制御機構１３-2）が読み出した旧データｄ2の間の排他的論理和（ＸＯＲ）演算を行い、その演算結果（以下、中間データと称する）ｍａ＝ｄ2' ＸＯＲ ｄ2を求める（ステップＳ４３）。
【００８０】
また、コンピュータ１-2（のクラスタＲＡＩＤ制御部１３-2）によりディスク装置４-2上の旧データｄ2を新データｄ2'に書き換える（ステップＳ４４）。
【００８１】
次に、コンピュータ１-2（のクラスタＲＡＩＤ制御部１３-2）からコンピュータ１-3（のクラスタＲＡＩＤ制御部１３-3）にステップＳ４３で生成した中間データｍａをネットワーク２経由で転送する（ステップＳ４５）。
【００８２】
次に、コンピュータ１-3（のクラスタＲＡＩＤ制御部１３-3）によりディスク装置４-3から旧パリティｐを読み出す（ステップＳ４６）。
次に、コンピュータ１-3（のクラスタＲＡＩＤ制御部１３-3）で、自コンピュータ１-3（のクラスタＲＡＩＤ制御機構１３-3）が読み出した旧パリティｐ及びコンピュータ１-2（のクラスタＲＡＩＤ制御部１３-2）から転送された中間データｍａ（＝ｄ2' ＸＯＲ ｄ2）の間の排他的論理和（ＸＯＲ）演算を行い、新パリティｐ'＝ｐ ＸＯＲ ｍａを生成する（ステップＳ４７）。
【００８３】
次に、コンピュータ１-3（のクラスタＲＡＩＤ制御部１３-3）によりディスク装置４-3上の旧パリティｐを新パリティｐ'に書き換える（ステップＳ４８）。
【００８４】
このように本変形例においては、パリティ計算の途中結果（中間データｍａ）を、次の計算に必要な（情報が格納されているディスク装置と接続された）コンピュータ（コンピュータ１-3）に転送することで、データ転送を４回から２回に減らすことができる。
【００８５】
［第２の実施形態］
図５は本発明の第２の実施形態に係る仮想的なＲＡＩＤ装置を有するクラスタシステムの構成を示すブロック図である。なお、図１と同一部分には同一符号を付してある。
【００８６】
図５のクラスタシステムの特徴は、図１中のコンピュータ１-1〜１-3に相当するコンピュータ１０-1〜１０-3の他に、図１中のクラスタマネージャ１２-1〜１２-3に相当するクラスタマネージャ１２が動作するクラスタマネージャ専用のコンピュータ１００を備えている点と、コンピュータ１０-1〜１０-3上ではクラスタマネージャが動作していない点にある。クラスタマネージャ１２は、図２に示したデータ構造の位置情報変換テーブル１２０-iに相当する位置情報変換テーブル１２０を有している。
【００８７】
コンピュータ１０-1〜１０-3及びコンピュータ１００はネットワーク２，３により相互接続されている。コンピュータ１０-1〜１０-3のクラスタＲＡＩＤ制御部１３-1〜１３-3（内の命令変換部１３２-1〜１３２-3）は、コンピュータ１００のクラスタマネージャ１２とネットワーク３を介して通信する。
【００８８】
前記第１の実施形態で適用した図１の構成のクラスタシステムでは、仮想ＲＡＩＤ装置４０を構成するディスク装置４-1〜４-3と接続されているコンピュータ１-1〜１-3上で、クラスタマネージャ１２-1〜１２-3及びクラスタＲＡＩＤ制御部１３-1〜１３-3が動作する。このため、コンピュータ１-1〜１-3の負荷が大きくなり、処理性能が低下する恐れがある。
【００８９】
これに対して本実施形態で適用した図５の構成のクラスタシステムでは、クラスタＲＡＩＤ制御部１３-1〜１３-3が動作するコンピュータ１０-1〜１０-3とは別に、クラスタマネージャ１２が動作するコンピュータ１００を設けている。このため、コンピュータ１０-1〜１０-3の負荷は、当該コンピュータ１０-1〜１０-3上でクラスタマネージャを動作させる場合に比べて減少する。
【００９０】
但し、図１のシステムでは、システムを構成しているコンピュータ１-1〜１-3のうちのいずれか１台に障害が発生してもシステム全体が停止する恐れはないのに対し、図５のシステムでは、クラスタマネージャ１２が動作しているコンピュータ１００に障害が発生した場合は、それ以降位置情報変換テーブル１２０が利用できなくなるため、その時点でシステム全体が使用不能になる。そこで、コンピュータ１００を２重化するなどして、可用性を上げることで、システム全体の可用性を上げるとよい。
【００９１】
以上の説明では、仮想ＲＡＩＤ装置４０を構成するディスク装置４-1〜４-3の各々に対してＲＡＩＤデータまたはパリティのいずれかが保存される、例えばディスク装置４-1，４-2にはＲＡＩＤデータｄ1，ｄ2が保存され、ディスク装置４-3にはパリティｐが保存されるものとしたが、これに限るものではない。例えば、ディスク装置４-1〜４-3から構成される仮想ＲＡＩＤ装置４０のディスク領域を、複数のストライプに分割して管理するストライピングという手法を適用し、各ストライプｉ毎にＲＡＩＤデータｄ1-i，ｄ2-i及びパリティｐ-iが、それぞれディスク装置４-1，４-2及び４-3に保存されるＲＡＩＤレベル３と呼ばれる構成に対しても、本発明は適用可能である。また、ＲＡＩＤデータｄ1-i，ｄ2-i及びパリティｐ-iが、全てのディスク装置４-1，４-2及び４-3に分散するように配置されるＲＡＩＤレベル５と呼ばれる構成に対しても、本発明は適用可能である。ストライピングにより、１つのＲＡＩＤデータを読み出し／書き込みする際に複数のディスク装置が同時に動作する割合を増やすことができ、スケーラブルな性能を出すことができるようになる。本発明では、ＲＡＩＤ５の場合でもストライピングのない図の（１）のような場合でも、ディスクアクセスのロックをとることによりスケーラブルな性能を出すことが可能である。
【００９２】
また、以上の説明では、各コンピュータ１-1〜１-3（またはコンピュータ１０-1〜１０-3，１００）が２つのネットワーク２及び３により相互接続され、クラスタマネージャ１２-1〜１２-3相互間の通信（またはクラスタマネージャ１２とクラスタＲＡＩＤ制御部１３-1〜１３-3との間の通信）にはネットワーク３が、クラスタＲＡＩＤ制御部１３-1〜１３-3（内の命令転送部１３３-1〜１３３-3）相互間の通信（命令転送とデータの転送）にはネットワーク２が用いられるものとしたが、これに限るものではない。例えば、上記２種の通信に１つのネットワークを用いるようにしても構わない。この場合、通信速度が低下する恐れがあるものの、システムの簡略化が図れる。
【００９３】
なお、本発明は、上記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題の少なくとも１つが解決でき、発明の効果の欄で述べられている効果の少なくとも１つが得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００９４】
【発明の効果】
以上詳述したように本発明によれば、クラスタシステムを構成する複数のコンピュータそれぞれに接続されたディスク装置を、１つの仮想的なＲＡＩＤ装置の構成要素として利用することができる。このため本発明によれば、１台のコンピュータに障害が発生しても、それまでに上記仮想的なＲＡＩＤ装置に書き込まれた全てのデータを参照することが可能である。また、１台のコンピュータに障害が発生した状態であっても、タスクがデータを読み出し／書き込みすることが可能である。これによりクラスタシステムにおいて、１台のコンピュータに障害が発生し、他のコンピュータで運用を続けようとするとき、障害が発生したコンピュータの持つデータが、連用を再開するために必要な場合であっても、運用を続けることが可能となる。
【００９５】
また、本発明によれば、各コンピュータに接続されたディスク装置の読み出し／書き込みの処理及びパリティ計算処理は、クラスタマネージャを利用せずに行うことができるため、当該クラスタマネージャで排他を行いながらシステム規模に応じた読み出し／書き込み性能を実現することが可能となる。
【００９６】
また、パリティ計算を行う際には、計算に必要な情報を１つのコンピュータに集めず、パリティ計算の中間結果を順次、パリティ計算の次の中間結果または最終結果の計算に必要な情報を持つコンピュータに転送することにより、少ないコンピュータ間データ転送回数で１つのパリティ計算を行うことができ、仮想的なＲＡＩＤ装置に対する書き込みの速度を向上させることが可能となる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る仮想的なＲＡＩＤ装置を有するクラスタシステムの構成を示すブロック図。
【図２】図１中のクラスタマネージャ１２-iで保持される位置情報変換テーブル１２０-iのデータ構造例を示す図。
【図３】第１の実施形態の動作について、ディスク装置４-1に格納されているＲＡＩＤデ一夕ｄ1をｄ1'に更新する書き込みのグローバル命令を実行する場合を例に説明するための図。
【図４】第１の実施形態において、コンピュータ１-2に接続されたディスク装置４-2上のＲＡＩＤデータｄ2をｄ2'に書き換えるグローバル命令がコンピュータ１-1上で発生した場合に適用可能な２種の手順を対比して説明するための図。
【図５】本発明の第２の実施形態に係る仮想的なＲＡＩＤ装置を有するクラスタシステムの構成を示すブロック図。
【符号の説明】
１-1〜１-3…コンピュータ
２，３…ネットワーク
４-1〜４-3…ディスク装置
１１-1〜１１-3…タスク
１２，１２-1〜１２-3…クラスタマネージャ
１３-1〜１３-3…クラスタＲＡＩＤ制御部（制御機構）
４０…仮想ＲＡＩＤ装置
１００…コンピュータ（クラスタマネージャ用コンピュータ）
１２０，１２０-1〜１２０-3，１２０-i…位置情報変換テーブル
１３２-1〜１３２-3…命令変換部
１３３-1〜１３３-3…命令転送部
１３４-1〜１３４-3…パリティ計算部
１３６-1〜１３６-3…ディスク制御部
【図１】
0004054182.tif 000002
【図２】
0004054182.tif 000003
【図３】
0004054182.tif 000004
【図４】
0004054182.tif 000005
【図５】
0004054182.tif 000006