(57)【要約】【課題】  負荷を分散することにより性能の向上を図ることができるディスクアレイ装置等を提供する。【解決手段】  ホストコンピュータからデータの更新が指示されると、ディスクアレイコントローラは、更新前のデータＡｏｌｄと更新前のパリティデータＰｏｌｄとをディスクアレイから読み出し、この読み出した更新前のデータＡｏｌｄ及びパリティデータＰｏｌｄと更新後のデータＡｎｅｗとから更新後のパリティデータＰｎｅｗを生成する。ディスクアレイコントローラは、更新するデータを記憶するディスク装置のカウント値と理想カウント値とを比較し、比較の結果、カウント値が理想カウント値以下であると判別した場合、更新前のデータＡｏｌｄが記憶されたディスク装置に更新後のパリティデータＰｎｅｗを、更新前のパリティデータＰｏｌｄが記憶されたディスク装置Ｄに更新後のデータＡｎｅｗを、夫々書き込む。【選択図】  図５
2005044147.tif 000002
【特許請求の範囲】
【請求項１】
ディスクアレイを構成する複数のディスク装置を備え、所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込むディスクアレイ装置であって、
データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出手段と、
更新後のデータと前記読出手段により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成手段と、
前記第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下か否かを判別する判別手段と、
前記判別手段により第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成手段により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む書込手段と、
を備える、
ことを特徴とするディスクアレイ装置。
【請求項２】
ディスクアレイを構成する複数のディスク装置を備え、所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込むディスクアレイ装置であって、
データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出手段と、
更新後のデータと前記読出手段により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成手段と、
前記第１のディスク装置に記憶されたパリティデータのブロック数と、前記第２のディスク装置に記憶されたパリティデータのブロック数と、を比較するブロック数比較手段と、
前記ブロック数比較手段により第１のディスク装置に記憶されたパリティデータのブロック数が第２のディスク装置に記憶されたパリティデータのブロック数以下であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成手段により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む書込手段と、
を備える、
ことを特徴とするディスクアレイ装置。
【請求項３】
ディスクアレイを構成する複数のディスク装置を備え、所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込むディスクアレイ装置であって、
データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出手段と、
更新後のデータと前記読出手段により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成手段と、
前記第１のディスク装置の更新回数と前記第２のディスク装置の更新回数とを比較する更新回数比較手段と、
前記更新回数比較手段により第１のディスク装置の更新回数が第２のディスク装置の更新回数以上であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成手段により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む書込手段と、
を備える、
ことを特徴とするディスクアレイ装置。
【請求項４】
前記書込手段により更新後のパリティデータ及び更新後のデータが、それぞれ第１及び第２のディスク装置に書き込まれる毎に、各ディスク装置に記憶されているパリティデータのブロック数を計数する計数手段と、
前記計数手段により計数された各ディスク装置に記憶されているパリティデータのブロック数から、パリティデータが各ディスク装置に分散している度合を示す分散度を算出する分散度算出手段と、
をさらに備え、
前記書込手段は、前記分散度算出手段により算出された分散度が所定値以下になると、前記更新後のデータを第１のディスク装置に、前記更新後のパリティデータを第２のディスク装置に、それぞれ書き込む、
ことを特徴とする請求項１，２又は３に記載のディスクアレイ装置。
【請求項５】
更新前のデータを記憶する第１のディスク装置と該更新前のデータから生成されたパリティデータを記憶する第２のディスク装置とを含みディスクアレイを構成する複数のディスク装置と、該第１のディスク装置を備える第１のコンピュータと、該第２のディスク装置を備え該第１のコンピュータにネットワークを介して接続された第２のコンピュータと、該第１及び第２のコンピュータにネットワークを介して接続され所定ブロック単位に分割した更新後のデータを第１及び第２のコンピュータのいずれかに送信するサーバコンピュータと、を備えるディスクアレイシステムであって、
前記第２のコンピュータは、
前記サーバコンピュータにより送信される更新後のデータを受信する第１の受信手段と、
前記第１の受信手段により受信した更新後のデータと前記第２のディスク装置に記憶されている更新前のパリティデータとの排他的論理和を前記第１のコンピュータに送信する送信手段と、
前記更新後のデータを第２のディスク装置に書き込む第１の書込手段と、
を備え、
前記第１のコンピュータは、
前記送信手段により送信され排他的論理和を受信する第２の受信手段と、
前記第２の受信手段により受信した排他的論理和と前記第１のディスク装置に記憶されている更新前のデータとから更新後のパリティデータを生成するパリティデータ生成手段と、
前記パリティデータ生成手段により生成された更新後のパリティデータを前記第１のディスク装置に書き込む第２の書込手段と、
を備える、
ことを特徴とするディスクアレイシステム。
【請求項６】
前記排他的論理和は、更新前のデータをＡｏｌｄ、更新後のデータをＡｎｅｗ、更新前のパリティデータをＰｏｌｄ、更新後のパリティデータをＰｎｅｗ、としたとき、以下の数１によって定義される、
【数１】
2005044147.tif 000018
ことを特徴とする請求項５に記載のディスクアレイシステム。
【請求項７】
前記パリティデータ生成手段は、排他的論理和をＰｓとしたとき、以下の数２によって定義される関係式を用いて更新後のパリティデータを生成する、
【数２】
2005044147.tif 000019
ことを特徴とする請求項６に記載のディスクアレイシステム。
【請求項８】
前記サーバコンピュータは、
前記第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下か否かを判別する判別手段を備え、
前記判別手段により第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下であると判別された場合、更新後のデータを前記第２のコンピュータに送信する、
ことを特徴とする請求項５，６又は７に記載のディスクアレイシステム。
【請求項９】
前記サーバコンピュータは、
前記第１のディスク装置に記憶されたパリティデータのブロック数と、前記第２のディスク装置に記憶されたパリティデータのブロック数と、を比較するブロック数比較手段を備え、
前記ブロック数比較手段により第１のディスク装置に記憶されたパリティデータのブロック数が第２のディスク装置に記憶されたパリティデータのブロック数以下であると判別された場合、更新後のデータを前記第２のコンピュータに送信する、
ことを特徴とする請求項５，６又は７に記載のディスクアレイシステム。
【請求項１０】
前記サーバコンピュータは、
前記第１のディスク装置の更新回数と前記第２のディスク装置の更新回数とを比較する更新回数比較手段を備え、
前記更新回数比較手段により第１のディスク装置の更新回数が第２のディスク装置の更新回数以上であると判別された場合、更新後のデータを前記第２のコンピュータに送信する、
ことを特徴とする請求項５，６又は７に記載のディスクアレイシステム。
【請求項１１】
前記サーバコンピュータは、
前記第１及び第２の書込手段により更新後のデータと更新後のパリティデータとが、それぞれ第２及び第１のディスク装置に書き込まれる毎に、各ディスク装置に記憶されているパリティデータのブロック数を計数する計数手段と、
前記計数手段により計数された各ディスク装置に記憶されているパリティデータのブロック数から、パリティデータが各ディスク装置に分散している度合を示す分散度を算出する分散度算出手段と、
をさらに備え、
前記分散度算出手段により算出された分散度が所定値以下になると、更新後のデータを前記第１のコンピュータに送信する、
ことを特徴とする請求項５乃至１０いずれか１項に記載のディスクアレイシステム。
【請求項１２】
前記分散度は、前記ディスク装置の数をｎ、各ディスク装置に記憶されているパリティデータのブロック数をＣ、前記所定数をＣ０、としたとき、以下の数３によって定義される、
【数３】
2005044147.tif 000020
ことを特徴とする請求項４に記載のディスクアレイ装置又は請求項１１に記載のディスクアレイシステム。
【請求項１３】
前記所定数は、前記ディスク装置の数をｎ、各ディスク装置に記憶されているパリティデータのブロック数をＣ、としたとき、以下の数４によって定義される、
【数４】
2005044147.tif 000021
ことを特徴とする請求項１，４又は１２に記載のディスクアレイ装置又は請求項８，１１又は１２に記載のディスクアレイシステム。
【請求項１４】
ディスクアレイを構成する複数のディスク装置を備え、所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込むディスクアレイ装置におけるパリティデータ分散方法であって、
データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出工程と、
更新後のデータと前記読出工程により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成工程と、
前記第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下か否かを判別する判別工程と、
前記判別工程により第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成工程により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む書込工程と、
を備える、
ことを特徴とするパリティデータ分散方法。
【請求項１５】
ディスクアレイを構成する複数のディスク装置を備え、所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込むディスクアレイ装置におけるパリティデータ分散方法であって、
データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出工程と、
更新後のデータと前記読出工程により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成工程と、
前記第１のディスク装置に記憶されたパリティデータのブロック数と、前記第２のディスク装置に記憶されたパリティデータのブロック数と、を比較するブロック数比較工程と、
前記ブロック数比較工程により第１のディスク装置に記憶されたパリティデータのブロック数が第２のディスク装置に記憶されたパリティデータのブロック数以下であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成工程により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む書込工程と、
を備える、
ことを特徴とするパリティデータ分散方法。
【請求項１６】
ディスクアレイを構成する複数のディスク装置を備え、所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込むディスクアレイ装置におけるパリティデータ分散方法であって、
データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出工程と、
更新後のデータと前記読出工程により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成工程と、
前記第１のディスク装置の更新回数と前記第２のディスク装置の更新回数とを比較する更新回数比較工程と、
前記更新回数比較工程により第１のディスク装置の更新回数が第２のディスク装置の更新回数以上であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成工程により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む書込工程と、
を備える、
ことを特徴とするパリティデータ分散方法。
【請求項１７】
更新前のデータを記憶する第１のディスク装置と該更新前のデータから生成されたパリティデータを記憶する第２のディスク装置とを含みディスクアレイを構成する複数のディスク装置と、該第１のディスク装置を備える第１のコンピュータと、該第２のディスク装置を備え該第１のコンピュータにネットワークを介して接続された第２のコンピュータと、該第１及び第２のコンピュータにネットワークを介して接続され所定ブロック単位に分割した更新後のデータを第１及び第２のコンピュータのいずれかに送信するサーバコンピュータと、を備えるディスクアレイシステムにおけるパリティデータ分散方法であって、
前記サーバコンピュータにより送信される更新後のデータを受信する第１の受信工程と、
前記第１の受信工程により受信した更新後のデータと前記第２のディスク装置に記憶されている更新前のパリティデータとの排他的論理和を前記第１のコンピュータに送信する送信工程と、
前記更新後のデータを第２のディスク装置に書き込む第１の書込工程と、
前記送信工程により送信され排他的論理和を受信する第２の受信工程と、
前記第２の受信工程により受信した排他的論理和と前記第１のディスク装置に記憶されている更新前のデータとから更新後のパリティデータを生成するパリティデータ生成工程と、
前記パリティデータ生成工程により生成された更新後のパリティデータを前記第１のディスク装置に書き込む第２の書込工程と、
を備える、
ことを特徴とするパリティデータ分散方法。
【請求項１８】
ディスクアレイを構成する複数のディスク装置を備えるコンピュータを、
所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込む第１の書込手段、
データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出手段、
更新後のデータと前記読出手段により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成手段、
前記第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下か否かを判別する判別手段、
前記判別手段により第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成手段により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む第２の書込手段、
として機能させるコンピュータプログラム。
【請求項１９】
ディスクアレイを構成する複数のディスク装置を備えるコンピュータを、
所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込む第１の書込手段、
データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出手段、
更新後のデータと前記読出手段により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成手段、
前記第１のディスク装置に記憶されたパリティデータのブロック数と、前記第２のディスク装置に記憶されたパリティデータのブロック数と、を比較するブロック数比較手段、
前記ブロック数比較手段により第１のディスク装置に記憶されたパリティデータのブロック数が第２のディスク装置に記憶されたパリティデータのブロック数以下であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成手段により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む第２の書込手段、
として機能させるコンピュータプログラム。
【請求項２０】
ディスクアレイを構成する複数のディスク装置を備えるコンピュータを、
所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込む第１の書込手段、
データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出手段、
更新後のデータと前記読出手段により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成手段、
前記第１のディスク装置の更新回数と前記第２のディスク装置の更新回数とを比較する更新回数比較手段、
前記更新回数比較手段により第１のディスク装置の更新回数が第２のディスク装置の更新回数以上であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成手段により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む第２の書込手段、
として機能させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクアレイ装置、ディスクアレイシステム、パリティデータ分散方法及びコンピュータプログラムに関し、特に、負荷を分散することにより性能の向上を図ることができるディスクアレイ装置、ディスクアレイシステム、パリティデータ分散方法及びコンピュータプログラムに関する。
【背景技術】
【０００２】
高速なデータ転送と、データディスク装置の故障により喪失したデータの復元と、を可能にするシステムとして、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）等の冗長化ディスク構成を適用するディスクアレイを備えるディスクアレイシステムが開示されている（例えば特許文献１参照）。
【０００３】
特許文献１に開示されたディスクアレイシステムは、データを格納する複数のデータディスク装置と、該データの排他的論理和（EXCLUSIVE-OR）であるパリティデータを格納するパリティディスク装置と、を備えている。このようなパリティディスク装置を備えることにより、複数のデータディスク装置のうち１台のデータディスク装置に格納されているデータを喪失した場合であっても、ディスクアレイシステムは、他のデータディスク装置に格納されているデータと該パリティディスク装置に格納されているパリティデータとに基づいて、喪失したデータを復元することができる。
【特許文献１】特許公開平５−３２４５７９号公報（第２−８頁、第４−５図）。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に開示されたディスクアレイシステムでは、データが更新される毎にパリティディスク装置にアクセスする必要があるため、パリティディスク装置に負荷が集中していしまう。このため、ディスクアレイシステムの性能は、パリティディスク装置の性能に依存してしまうといった欠点があった。
【０００５】
本発明は、上述した事情に鑑みてなされたものであって、負荷を分散することにより性能の向上を図ることができるディスクアレイ装置、ディスクアレイ装置、ディスクアレイシステム、パリティデータ分散方法及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明の第１の観点に係るディスクアレイ装置は、ディスクアレイを構成する複数のディスク装置を備え、所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込むディスクアレイ装置であって、データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出手段と、更新後のデータと前記読出手段により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成手段と、前記第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下か否かを判別する判別手段と、前記判別手段により第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成手段により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む書込手段と、を備える、ことを特徴とする。
【０００７】
上記目的を達成するために、本発明の第２の観点に係るディスクアレイ装置は、ディスクアレイを構成する複数のディスク装置を備え、所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込むディスクアレイ装置であって、データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出手段と、更新後のデータと前記読出手段により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成手段と、前記第１のディスク装置に記憶されたパリティデータのブロック数と、前記第２のディスク装置に記憶されたパリティデータのブロック数と、を比較するブロック数比較手段と、前記ブロック数比較手段により第１のディスク装置に記憶されたパリティデータのブロック数が第２のディスク装置に記憶されたパリティデータのブロック数以下であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成手段により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む書込手段と、を備える、ことを特徴とする。
【０００８】
上記目的を達成するために、本発明の第３の観点に係るディスクアレイ装置は、ディスクアレイを構成する複数のディスク装置を備え、所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込むディスクアレイ装置であって、データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出手段と、更新後のデータと前記読出手段により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成手段と、前記第１のディスク装置の更新回数と前記第２のディスク装置の更新回数とを比較する更新回数比較手段と、前記更新回数比較手段により第１のディスク装置の更新回数が第２のディスク装置の更新回数以上であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成手段により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む書込手段と、を備える、ことを特徴とする。
【０００９】
上記ディスクアレイ装置において、前記書込手段により更新後のパリティデータ及び更新後のデータが、それぞれ第１及び第２のディスク装置に書き込まれる毎に、各ディスク装置に記憶されているパリティデータのブロック数を計数する計数手段と、前記計数手段により計数された各ディスク装置に記憶されているパリティデータのブロック数から、パリティデータが各ディスク装置に分散している度合を示す分散度を算出する分散度算出手段と、をさらに備え、前記書込手段は、前記分散度算出手段により算出された分散度が所定値以下になると、前記更新後のデータを第１のディスク装置に、前記更新後のパリティデータを第２のディスク装置に、それぞれ書き込んでもよい。
【００１０】
上記目的を達成するために、本発明の第４の観点に係るディスクアレイシステムは、更新前のデータを記憶する第１のディスク装置と該更新前のデータから生成されたパリティデータを記憶する第２のディスク装置とを含みディスクアレイを構成する複数のディスク装置と、該第１のディスク装置を備える第１のコンピュータと、該第２のディスク装置を備え該第１のコンピュータにネットワークを介して接続された第２のコンピュータと、該第１及び第２のコンピュータにネットワークを介して接続され所定ブロック単位に分割した更新後のデータを第１及び第２のコンピュータのいずれかに送信するサーバコンピュータと、を備えるディスクアレイシステムであって、前記第２のコンピュータは、前記サーバコンピュータにより送信される更新後のデータを受信する第１の受信手段と、前記第１の受信手段により受信した更新後のデータと前記第２のディスク装置に記憶されている更新前のパリティデータとの排他的論理和を前記第１のコンピュータに送信する送信手段と、前記更新後のデータを第２のディスク装置に書き込む第１の書込手段と、を備え、前記第１のコンピュータは、前記送信手段により送信され排他的論理和を受信する第２の受信手段と、前記第２の受信手段により受信した排他的論理和と前記第１のディスク装置に記憶されている更新前のデータとから更新後のパリティデータを生成するパリティデータ生成手段と、前記パリティデータ生成手段により生成された更新後のパリティデータを前記第１のディスク装置に書き込む第２の書込手段と、を備える、ことを特徴とする。
【００１１】
上記ディスクアレイシステムにおいて、前記排他的論理和は、更新前のデータをＡｏｌｄ、更新後のデータをＡｎｅｗ、更新前のパリティデータをＰｏｌｄ、更新後のパリティデータをＰｎｅｗ、としたとき、以下の数１によって定義されてもよい。
【００１２】
【数１】
2005044147.tif 000003
【００１３】
また、上記ディスクアレイシステムにおいて、前記パリティデータ生成手段は、排他的論理和をＰｓとしたとき、以下の数２によって定義される関係式を用いて更新後のパリティデータを生成してもよい。
【００１４】
【数２】
2005044147.tif 000004
【００１５】
さらに、上記ディスクアレイシステムにおいて、前記サーバコンピュータは、前記第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下か否かを判別する判別手段を備え、前記判別手段により第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下であると判別された場合、更新後のデータを前記第２のコンピュータに送信してもよい。
【００１６】
また、上記ディスクアレイシステムにおいて、前記サーバコンピュータは、前記第１のディスク装置に記憶されたパリティデータのブロック数と、前記第２のディスク装置に記憶されたパリティデータのブロック数と、を比較するブロック数比較手段を備え、前記ブロック数比較手段により第１のディスク装置に記憶されたパリティデータのブロック数が第２のディスク装置に記憶されたパリティデータのブロック数以下であると判別された場合、更新後のデータを前記第２のコンピュータに送信してもよい。
【００１７】
さらに、上記ディスクアレイシステムにおいて、前記サーバコンピュータは、前記第１のディスク装置の更新回数と前記第２のディスク装置の更新回数とを比較する更新回数比較手段を備え、前記更新回数比較手段により第１のディスク装置の更新回数が第２のディスク装置の更新回数以上であると判別された場合、更新後のデータを前記第２のコンピュータに送信してもよい。
【００１８】
また、上記ディスクアレイシステムにおいて、前記サーバコンピュータは、前記第１及び第２の書込手段により更新後のデータと更新後のパリティデータとが、それぞれ第２及び第１のディスク装置に書き込まれる毎に、各ディスク装置に記憶されているパリティデータのブロック数を計数する計数手段と、前記計数手段により計数された各ディスク装置に記憶されているパリティデータのブロック数から、パリティデータが各ディスク装置に分散している度合を示す分散度を算出する分散度算出手段と、をさらに備え、前記分散度算出手段により算出された分散度が所定値以下になると、更新後のデータを前記第１のコンピュータに送信してもよい。
【００１９】
さらに、上記ディスクアレイ装置又はディスクアレイシステムにおいて、前記分散度は、前記ディスク装置の数をｎ、各ディスク装置に記憶されているパリティデータのブロック数をＣ、前記所定数をＣ０、としたとき、以下の数３によって定義されてもよい。
【００２０】
【数３】
2005044147.tif 000005
【００２１】
また、上記ディスクアレイ装置又はディスクアレイシステムにおいて、前記所定数は、前記ディスク装置の数をｎ、各ディスク装置に記憶されているパリティデータのブロック数をＣ、としたとき、以下の数４によって定義されてもよい。
【００２２】
【数４】
2005044147.tif 000006
【００２３】
上記目的を達成するために、本発明の第５の観点に係るパリティデータ分散方法は、ディスクアレイを構成する複数のディスク装置を備え、所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込むディスクアレイ装置におけるパリティデータ分散方法であって、データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出工程と、更新後のデータと前記読出工程により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成工程と、前記第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下か否かを判別する判別工程と、前記判別工程により第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成工程により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む書込工程と、を備える、ことを特徴とする。
【００２４】
上記目的を達成するために、本発明の第６の観点に係るパリティデータ分散方法は、ディスクアレイを構成する複数のディスク装置を備え、所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込むディスクアレイ装置におけるパリティデータ分散方法であって、データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出工程と、更新後のデータと前記読出工程により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成工程と、前記第１のディスク装置に記憶されたパリティデータのブロック数と、前記第２のディスク装置に記憶されたパリティデータのブロック数と、を比較するブロック数比較工程と、前記ブロック数比較工程により第１のディスク装置に記憶されたパリティデータのブロック数が第２のディスク装置に記憶されたパリティデータのブロック数以下であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成工程により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む書込工程と、を備える、ことを特徴とする。
【００２５】
上記目的を達成するために、本発明の第７の観点に係るパリティデータ分散方法は、ディスクアレイを構成する複数のディスク装置を備え、所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込むディスクアレイ装置におけるパリティデータ分散方法であって、データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出工程と、更新後のデータと前記読出工程により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成工程と、前記第１のディスク装置の更新回数と前記第２のディスク装置の更新回数とを比較する更新回数比較工程と、前記更新回数比較工程により第１のディスク装置の更新回数が第２のディスク装置の更新回数以上であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成工程により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む書込工程と、を備える、ことを特徴とする。
【００２６】
上記目的を達成するために、本発明の第８の観点に係るパリティデータ分散方法は、更新前のデータを記憶する第１のディスク装置と該更新前のデータから生成されたパリティデータを記憶する第２のディスク装置とを含みディスクアレイを構成する複数のディスク装置と、該第１のディスク装置を備える第１のコンピュータと、該第２のディスク装置を備え該第１のコンピュータにネットワークを介して接続された第２のコンピュータと、該第１及び第２のコンピュータにネットワークを介して接続され所定ブロック単位に分割した更新後のデータを第１及び第２のコンピュータのいずれかに送信するサーバコンピュータと、を備えるディスクアレイシステムにおけるパリティデータ分散方法であって、前記サーバコンピュータにより送信される更新後のデータを受信する第１の受信工程と、前記第１の受信工程により受信した更新後のデータと前記第２のディスク装置に記憶されている更新前のパリティデータとの排他的論理和を前記第１のコンピュータに送信する送信工程と、前記更新後のデータを第２のディスク装置に書き込む第１の書込工程と、前記送信工程により送信され排他的論理和を受信する第２の受信工程と、前記第２の受信工程により受信した排他的論理和と前記第１のディスク装置に記憶されている更新前のデータとから更新後のパリティデータを生成するパリティデータ生成工程と、前記パリティデータ生成工程により生成された更新後のパリティデータを前記第１のディスク装置に書き込む第２の書込工程と、を備える、ことを特徴とする。
【００２７】
上記目的を達成するために、本発明の第９の観点に係るコンピュータプログラムは、ディスクアレイを構成する複数のディスク装置を備えるコンピュータを、所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込む第１の書込手段、データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出手段、更新後のデータと前記読出手段により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成手段、前記第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下か否かを判別する判別手段、前記判別手段により第１のディスク装置に記憶されたパリティデータのブロック数が所定数以下であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成手段により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む第２の書込手段、として機能させる。
【００２８】
上記目的を達成するために、本発明の第１０の観点に係るコンピュータプログラムは、ディスクアレイを構成する複数のディスク装置を備えるコンピュータを、所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込む第１の書込手段、データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出手段、更新後のデータと前記読出手段により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成手段、前記第１のディスク装置に記憶されたパリティデータのブロック数と、前記第２のディスク装置に記憶されたパリティデータのブロック数と、を比較するブロック数比較手段、前記ブロック数比較手段により第１のディスク装置に記憶されたパリティデータのブロック数が第２のディスク装置に記憶されたパリティデータのブロック数以下であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成手段により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む第２の書込手段、として機能させる。
【００２９】
上記目的を達成するために、本発明の第１１の観点に係るコンピュータプログラムは、ディスクアレイを構成する複数のディスク装置を備えるコンピュータを、所定ブロック単位に分割したデータと該データから生成されるパリティデータとを、それぞれ異なるディスク装置に書き込む第１の書込手段、データ更新の指示に応じて、更新が指示されたデータを記憶する第１のディスク装置と該更新が指示されたデータのパリティデータを記憶する第２のディスク装置とから、それぞれ更新前のデータと更新前のパリティデータとを読み出す読出手段、更新後のデータと前記読出手段により読み出された更新前のデータ及び更新前のパリティデータとから更新後のパリティデータを生成するパリティデータ生成手段、前記第１のディスク装置の更新回数と前記第２のディスク装置の更新回数とを比較する更新回数比較手段、前記更新回数比較手段により第１のディスク装置の更新回数が第２のディスク装置の更新回数以上であると判別された場合、前記更新後のデータを第２のディスク装置に、前記パリティデータ生成手段により生成された更新後のパリティデータを第１のディスク装置に、それぞれ書き込む第２の書込手段、として機能させる。
【発明の効果】
【００３０】
本発明により、負荷を分散することにより性能の向上を図ることができるディスクアレイ装置、ディスクアレイシステム、パリティデータ分散方法及びコンピュータプログラムを提供することができる。
【発明を実施するための最良の形態】
【００３１】
［第１の実施の形態］
【００３２】
本発明の第１の実施の形態に係るディスクアレイ装置について、以下図面を参照して説明する。
【００３３】
ディスクアレイ装置１は、図１に示すように、ディスクアレイ２０と、ディスクアレイコントローラ３０と、から概略構成されている。
【００３４】
ディスクアレイ２０は、複数（少なくとも３台以上）のディスク装置、例えばハードディスクドライブ等から構成される４台のディスク装置Ｄ１〜Ｄ４を備え、ディスク装置Ｄ１〜Ｄ４は、冗長化ディスク構成を適用する。このような冗長化ディスク構成を適用することにより、ディスク装置Ｄ１〜Ｄ４のうちいずれか１つが故障した場合であっても、該故障したディスク装置Ｄのデータの復元が可能となる。
【００３５】
また、ディスク装置Ｄ１〜Ｄ４は、初期状態においてＲＡＩＤ（Redundant Arrays of Inexpensive Disks）４の冗長化ディスク構成を適用し、ディスク装置Ｄ１〜Ｄ４のうち所定のディスク装置、本実施の形態においてはディスク装置Ｄ４がパリティデータを格納するパリティディスク装置として機能している。
【００３６】
ディスク装置Ｄ１〜Ｄ４には、予め設定されているブロック単位でデータの書込、書換が行われる。図２に示すように、ディスク装置Ｄ１には、ブロックＢ０、Ｂ４、…、Ｂ４ｋ（ｋ＝０、１、…、１９）、…、Ｂ７６が、ディスク装置Ｄ２には、ブロックＢ１、Ｂ５、…、Ｂ（４ｋ＋１）、…、Ｂ７７が、ディスク装置Ｄ３には、ブロックＢ２、Ｂ６、…、Ｂ（４ｋ＋２）、…、Ｂ７８が、ディスク装置Ｄ３には、ブロックＢ３、Ｂ７、…、Ｂ（４ｋ＋３）、…、Ｂ７９が、夫々設定されている。
【００３７】
図１に示すディスクアレイコントローラ３０は、ＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等から構成されている。また、ディスクアレイコントローラ３０は、インターフェイスＩ／Ｆ、例えばＳＣＳＩ（Small Computer System Interface）、ＰＣＩバス（Peripheral Component Interconnect Bus）等を介してホストコンピュータ１０及びディスクアレイ２０の各ディスク装置Ｄ１〜Ｄ４に接続されている。
【００３８】
このディスクアレイコントローラ３０により、ホストコンピュータ１０は、ディスクアレイ２０を構成する４台のディスク装置Ｄ１〜Ｄ４を１つの論理的ディスク装置として認識することが可能となる。
【００３９】
ディスクアレイコントローラ３０は、ホストコンピュータ１０からデータの書込が指示されると、書き込むデータをブロック単位に分割し、数５を用いて、３ブロック分のデータ、例えばＡ３ｋ、Ａ（３ｋ＋１）及びＡ（３ｋ＋２）からパリティデータＰｋを生成する。このパリティデータＰ０は、データＡ０、Ａ１及びＡ２の排他的論理和として定義される。
【００４０】
【数５】
2005044147.tif 000007
【００４１】
ディスクアレイコントローラ３０は、ディスク装置Ｄ１〜Ｄ４の物理的に同一の位置にある４つのブロックを１つのストライプとして、同一のタイミングでデータの書込を行う。
【００４２】
図２に示す例では、ディスクアレイコントローラ３０は、ブロックＢ０、Ｂ１、Ｂ２及びＢ３、をストライプＳ０、ブロックＢ４、Ｂ５、Ｂ６及びＢ７、をストライプＳ１、…、ブロックＢ４ｋ、Ｂ（４ｋ＋１）、Ｂ（４ｋ＋２）及びＢ（４ｋ＋３）、をストライプＳｋ、…、ブロックＢ７６、Ｂ７７、Ｂ７８及びＢ７９、をストライプＳ１９、…と夫々設定する。そして、ディスクアレイコントローラ３０は、例えば、３ブロック分のデータＡ０、Ａ１及びＡ２と、これらのパリティデータＰ０と、を同一タイミングで、ストライプＳ０を構成するブロックＢ０、Ｂ１、Ｂ２、Ｂ３及びＢ４に、夫々書き込む。
【００４３】
これにより、ディスク装置Ｄ１〜Ｄ４には、図３に示すように、ストライプＳ０にデータＡ０、Ａ１、Ａ２及びパリティデータＰ０が、ストライプＳ１にデータＡ３、Ａ４、Ａ５及びパリティデータＰ１が、…、ストライプＳｋにデータＡ３ｋ、Ａ（３ｋ＋１）、Ａ（３ｋ＋２）及びパリティデータＰｋが、…、ストライプＳ１９にデータＡ５７、Ａ５８、Ａ５９及びパリティデータＰ１９が、夫々記憶される。
【００４４】
また、図１に示すディスクアレイコントローラ３０は、ホストコンピュータ１０からデータの更新が指示されると、更新前のデータＡｏｌｄと、これに対応する更新前のパリティデータＰｏｌｄと、をディスクアレイ２０から読み出す。そして、ディスクアレイコントローラ３０は、更新前のデータＡｏｌｄと更新後のデータＡｎｅｗと更新前のパリティデータＰｏｌｄとを用いて、更新後のパリティデータＰｎｅｗを生成する。
【００４５】
例えば、更新前のデータをＡ３ｋｏｌｄ、更新後のデータをＡ３ｋｎｅｗ、更新前のパリティデータをＰｋｏｌｄ、としたとき、ディスクアレイコントローラ３０は、ディスク装置Ｄ１に記憶されているデータＡ３ｋｏｌｄと、ディスク装置Ｄ４に記憶されているパリティデータＰｋｏｌｄと、を読み出す。そして、ディスクアレイコントローラ３０は、数５の変形式数６を用いて、更新後のデータＡｋｎｅｗと、更新前のデータＡ３ｋｏｌｄ及びパリティデータＰｋｏｌｄと、から更新後のパリティデータＰｋｎｅｗを生成する。
【００４６】
【数６】
2005044147.tif 000008
【００４７】
なお、数６は、数５を以下の手順に従って変形することにより導き出せる。まず、更新前のＡ３ｋｏｌｄとパリティデータＰｋｏｌｄとの関係及び更新後のＡ３ｋｎｅｗとパリティデータＰｋｎｅｗとの関係は、数５を用いると、次の数７及び数８に示すようになる。
【００４８】
【数７】
2005044147.tif 000009
【００４９】
【数８】
2005044147.tif 000010
【００５０】
そして、数７を変形すると、数９に示すようになる。
【００５１】
【数９】
2005044147.tif 000011
【００５２】
さらに、数９を数８に代入すると、数６に示す関係式が求まる。
【００５３】
【数６】
2005044147.tif 000012
【００５４】
また、ディスクアレイコントローラ３０は、ＲＡＭ等に、各ディスク装置Ｄ１〜Ｄ４が記憶するパリティデータＰのブロック数を計数するためのカウンタＣ１〜Ｃ４を備え、カウンタＣ１〜Ｃ４のカウント値は、夫々ディスク装置Ｄ１〜Ｄ４におけるパリティデータＰのブロック数を示す。例えば図３に示す場合では、カウンタＣ１〜Ｃ３のカウント値は「０」、カウンタＣ４のカウント値は「２０」、となる。ディスクアレイコントローラ３０は、各ディスク装置Ｄ１〜Ｄ４が記憶するパリティデータＰのブロック数が変更する毎に、カウンタＣ１〜Ｃ４のカウント値を更新する。
【００５５】
さらに、ディスクアレイコントローラ３０は、更新するデータを記憶するディスク装置Ｄが備えるカウンタＣのカウント値と、該ディスク装置Ｄにおいてデータ及び／又はパリティデータＰが記憶されているブロック数をディスクアレイ２０を構成するディスク装置数で除算した値（以下、理想カウント値という）と、比較する。本実施の形態の場合では、理想カウント値は、「５（＝２０／４）」となる。
【００５６】
比較の結果、カウント値が理想カウント値よりも大きいと判別した場合、ディスクアレイコントローラ３０は、図４Ａに示すように、更新前のデータＡｏｌｄが記憶されているディスク装置Ｄに更新後のデータＡｎｅｗを、更新前のパリティデータＰｏｌｄが記憶されているディスク装置Ｄに更新後のパリティデータＰｎｅｗを、書き込む。
【００５７】
一方、カウント値が理想カウント値以下であると判別した場合、ディスクアレイコントローラ３０は、図４Ｂに示すように、更新前のデータＡｏｌｄが記憶されているディスク装置Ｄに更新後のパリティデータＰｎｅｗを、更新前のパリティデータＰｏｌｄが記憶されているディスク装置Ｄに更新後のデータＡｎｅｗを、書き込む。
【００５８】
即ち、ディスクアレイコントローラ３０は、カウント値が理想カウント値よりも大きい場合、パリティデータＰを記憶するディスク装置Ｄを変更せず、一方、カウント値が理想カウント値以下の場合、パリティデータＰを記憶するディスク装置Ｄを変更する。
【００５９】
このようにして、ディスクアレイコントローラ３０は、データＡが更新される毎に、パリティデータＰを各ディスク装置Ｄ１〜Ｄ４に分散し、各ディスク装置Ｄ１〜Ｄ４のパリティデータＰを記憶するブロック数を均一化することができる。換言すれば、ディスク装置Ｄ１〜Ｄ４のディスク構成を、データＡが更新される毎に、ＲＡＩＤ４の冗長化ディスク構成からＲＡＩＤ５の冗長化ディスクアレイ構成へと移行させることができる。
【００６０】
また、図１に示すディスクアレイコントローラ３０は、カウント値が更新される毎に、数１０によって定義される分散度を求める。例えば図３に示す場合では、分散度は、「３００（＝｜０−５｜＾２＋｜０−５｜＾２＋｜０−５｜＾２＋｜２０−５｜＾２）」となる。
【００６１】
【数１０】
2005044147.tif 000013
【００６２】
数１０によって求めた分散度が所定値（例えば「５」）以下になると、ディスクアレイコントローラ３０は、以降の動作において、ディスク装置Ｄが備えるカウンタＣのカウント値と理想カウント値とを比較することなく、更新前のデータＡｏｌｄを記憶するディスク装置Ｄに更新後のデータＡｎｅｗを、また、更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄに更新後のパリティデータＰｎｅｗを、書き込む。即ち、ディスクアレイコントローラ３０は、各ディスク装置ＤへのパリティデータＰの分散動作を終了する。
【００６３】
次に、上記構成を備えるディスクアレイ装置１のパリティデータ分散動作について図５に示すフローチャート図を参照して説明する。
【００６４】
まず、ディスクアレイコントローラ３０は、ホストコンピュータ１０からデータの書込が指示されると、書き込むデータをブロック単位に分割し、３ブロック分のデータ、例えばＡ０、Ａ１及びＡ２からパリティデータＰ０を生成する。そして、ディスクアレイシステム３０は、データＡ０、Ａ１及びＡ２とパリティデータＰ０とを同一タイミングでストライプＳ０を構成するブロックＢ０、Ｂ１、Ｂ２及びＢ３に夫々書き込む。
【００６５】
上記動作を繰り返すことにより、ディスク装置Ｄ１〜Ｄ４には、図３に示すように、ストライプＳ０にデータＡ０、Ａ１、Ａ２及びパリティデータＰ０が、ストライプＳ１にデータＡ３、Ａ４、Ａ５及びパリティデータＰ１が、…、ストライプＳ１９にデータＡ５７、Ａ５８、Ａ５９及びパリティデータＰ１９が、夫々記憶される。なお、図３に示す場合におけるカウンタＣ１〜Ｃ４のカウント値は「０」、カウンタＣ４のカウント値は「２０」、理想カウント値は「５」、分散度は「３００」、となる。
【００６６】
そして、ホストコンピュータ１０からデータの更新が指示されると、ディスクアレイ装置１は、図５のフローチャート図に示すパリティデータ分散動作を開始する。パリティデータ分散動作が開始すると、まず、ディスクアレイコントローラ３０は、更新前のデータＡｏｌｄと更新前のパリティデータＰｏｌｄとをディスクアレイ２０から読み出す（ステップＳ１０１）。
【００６７】
次に、ディスクアレイコントローラ３０は、更新後のデータＡｎｅｗと、更新前のデータＡｏｌｄ及びパリティデータＰｏｌｄと、から更新後のパリティデータＰｎｅｗを生成する（ステップＳ１０２）。続いて、ディスクアレイコントローラ３０は、更新するデータを記憶するディスク装置Ｄのカウント値と理想カウント値とを比較する（ステップＳ１０３）。
【００６８】
ステップＳ１０３における比較の結果、カウント値が理想カウント値よりも大きいと判別した場合（ステップＳ１０３にてＹＥＳ）、ディスクアレイコントローラ３０は、更新前のデータＡｏｌｄが記憶されているディスク装置Ｄに更新後のデータＡｎｅｗを、更新前のパリティデータＰｏｌｄが記憶されているディスク装置Ｄに更新後のパリティデータＰｎｅｗを、書き込み、ステップＳ１０９に進む（ステップＳ１０４）。
【００６９】
一方、カウント値が理想カウント値以下であると判別した場合（ステップＳ１０３にてＮＯ）、ディスクアレイコントローラ３０は、更新前のデータＡｏｌｄが記憶されているディスク装置Ｄに更新後のパリティデータＰｎｅｗを、更新前のパリティデータＰｏｌｄが記憶されているディスク装置Ｄに更新後のデータＡｎｅｗを、書き込む（ステップＳ１０５）。
【００７０】
この場合、ディスクアレイコントローラ３０は、更新後のパリティデータＰｎｅｗを記憶したディスク装置ＤのカウンタＣと、更新後のデータＡｎｅｗを記憶したディスク装置ＤのカウンタＣと、のカウント値を更新するとともに（ステップＳ１０６）、更新したカウント値から分散度を求める（ステップＳ１０７）。
【００７１】
この求めた分散度が所定値（例えば「５」）よりも大きい場合（ステップＳ１０８にてＮＯ）、ディスクアレイ装置１は、ホストコンピュータ１０からデータの更新が指示される毎に（ステップＳ１０９にてＹＥＳ）、上記ステップＳ１０１〜Ｓ１０８の動作を繰り返す。
【００７２】
一方、求めた分散度が所定値以下の場合（ステップＳ１０８にてＹＥＳ）、ディスクアレイ装置１は、パリティデータ分散動作を終了する。
【００７３】
続いて、上記図５のフローチャート図に示すパリティデータ分散動作を図３、図６、図７、図８及び図９に示す説明図を参照し、より具体的に説明する。
【００７４】
図３に示す初期状態において、ディスク装置Ｄ１にはデータＡ０、Ａ３、…、Ａ５７が、ディスク装置Ｄ２にはデータＡ１、Ａ４、…、Ａ５８が、ディスク装置Ｄ３にはデータＡ２、Ａ５、…、Ａ５９が、ディスク装置Ｄ４にはパリティデータＰ０、Ｐ１、…、Ｐ１９が、夫々記憶されている。また、この場合のカウンタＣ１〜Ｃ３のカウント値は「０」、カウンタＣ４のカウント値は「２０」、理想カウント値は「５」、分散度は「３００」、となる。
【００７５】
ホストコンピュータ１０からデータＡ２４の更新が指示されると、ディスクアレイコントローラ３０は、ディスク装置Ｄ１からデータＡ２４ｏｌｄを、また、ディスク装置Ｄ４からパリティデータＰ８ｏｌｄを、読み出す（ステップＳ１０１）。
【００７６】
ディスクアレイコントローラ３０は、更新後のデータＡ２４ｎｅｗと、更新前のデータＡ２４ｏｌｄ及びパリティデータＰ８ｏｌｄと、から更新後のパリティデータＰ８ｎｅｗを生成する（ステップＳ１０２）。
【００７７】
この場合、ディスク装置Ｄ１が備えるカウンタＣ１のカウント値「０」は、理想カウント値「５」よりも小さいので（ステップＳ１０３にてＮＯ）、ディスクアレイコントローラ３０は、ディスク装置Ｄ１に更新後のパリティデータＰ８ｎｅｗを、ディスク装置Ｄ４に更新後のデータＡ２４ｎｅｗを、書き込む（ステップＳ１０５）。
【００７８】
これにより、図６に示すように、ディスク装置Ｄ１にはデータＡ０、…、Ａ２１、パリティデータＰ８、データＡ２７、…、Ａ５７が、ディスク装置Ｄ２にはデータＡ１、…、Ａ５８が、ディスク装置Ｄ３にはデータＡ２、…、Ａ５９が、ディスク装置Ｄ４にはパリティデータＰ０、…、Ｐ７、データＡ２４、パリティデータＰ９、…、Ｐ１９が、夫々記憶される。
【００７９】
ディスクアレイコントローラ３０は、カウンタＣ１のカウント値を「１」に、カウンタＣ４のカウント値を「１９」に、更新する（ステップＳ１０６）。また、この場合の分散度は「２６２（＝｜１−５｜＾２＋｜０−５｜＾２＋｜０−５｜＾２＋｜１９−５｜＾２」と求まる（ステップＳ１０７）。
【００８０】
続いて、ホストコンピュータ１０からデータＡ２５の更新が指示されると（ステップＳ１０９にてＹＥＳ）、ディスクアレイコントローラ３０は、ディスク装置Ｄ２からデータＡ２５ｏｌｄを、また、ディスク装置Ｄ１からパリティデータＰ８ｏｌｄを、読み出す（ステップＳ１０１）。
【００８１】
ディスクアレイコントローラ３０は、更新後のデータＡ２５ｎｅｗと、更新前のデータＡ２５ｏｌｄ及びパリティデータＰ８ｏｌｄと、から更新後のパリティデータＰ８ｎｅｗを生成する（ステップＳ１０２）。
【００８２】
この場合、ディスク装置Ｄ２が備えるカウンタＣ２のカウント値「０」は、理想カウント値「５」よりも小さいので（ステップＳ１０３にてＮＯ）、ディスクアレイコントローラ３０は、ディスク装置Ｄ２に更新後のパリティデータＰ８ｎｅｗを、ディスク装置Ｄ１に更新後のデータＡ２５ｎｅｗを、書き込む（ステップＳ１０５）。
【００８３】
これにより、図７に示すように、ディスク装置Ｄ１にはデータＡ０、…、Ａ２１、Ａ２５、Ａ２７、…、Ａ５７が、ディスク装置Ｄ２にはデータＡ１、…、Ａ２２、パリティデータＰ８、データＡ２８、…、Ａ５８が、ディスク装置Ｄ３にはデータＡ２、…、Ａ５９が、ディスク装置Ｄ４にはパリティデータＰ０、…、Ｐ７、データＡ２４、パリティデータＰ９、…、Ｐ１９が、夫々記憶される。
【００８４】
ディスクアレイコントローラ３０は、カウンタＣ１のカウント値を「０」に、カウンタＣ２のカウント値を「１」に、更新する（ステップＳ１０６）。また、この場合の分散度は「２６２（＝｜０−５｜＾２＋｜１−５｜＾２＋｜０−５｜＾２＋｜１９−５｜＾２）」と求まる（ステップＳ１０７）。
【００８５】
上記動作を繰り返すことにより、パリティデータＰは徐々に各ディスク装置Ｄ１〜Ｄ４に分散される。
【００８６】
これにより、例えば図８に示すように、ディスク装置Ｄ１に４つのパリティデータＰ１、Ｐ１４、Ｐ１７及びＰ１８が、ディスク装置Ｄ２に３つのパリティデータＰ４、Ｐ６及びＰ１５が、ディスク装置Ｄ３に６つのパリティデータＰ２、Ｐ８、Ｐ９、Ｐ１２、Ｐ１６及びＰ１９が、ディスク装置Ｄ４に７つのパリティデータＰ０、Ｐ３、Ｐ５、Ｐ７、Ｐ１０、Ｐ１１及びＰ１３が、夫々記憶される。
【００８７】
この場合、カウンタＣ１のカウント値は「４」と、カウンタＣ２のカウント値は「３」と、カウンタＣ３のカウンタ値は「６」と、カウンタＣ４のカウント値は「７」と、なる。また、ディスクアレイ２０の分散度は「１０（＝｜４−５｜＾２＋｜３−５｜＾２＋｜６−５｜＾２＋｜７−５｜＾２）」となる。
【００８８】
ホストコンピュータ１０からデータＡ（３３＋ｉ）（ｉ＝０、１、２）の更新が指示されると（ステップＳ１０９にてＹＥＳ）、ディスクアレイコントローラ３０は、ディスク装置Ｄ４からデータＡ（３３＋ｉ）ｏｌｄを、また、ディスク装置Ｄ２からパリティデータＰ１１ｏｌｄを、読み出す（ステップＳ１０１）。
【００８９】
ディスクアレイコントローラ３０は、更新後のデータＡ（３３＋ｉ）ｎｅｗと、更新前のデータＡ（３３＋ｉ）ｏｌｄ及びパリティデータＰ１１ｏｌｄと、から更新後のパリティデータＰ１１ｎｅｗを生成する（ステップＳ１０２）。
【００９０】
この場合、ディスク装置Ｄ２が備えるカウンタＣ２のカウント値「４」は、理想カウント値「５」より小さいので（ステップＳ１０３にてＮＯ）、ディスクアレイコントローラ３０は、ディスク装置Ｄ２に更新後のパリティデータＰ１１ｎｅｗを、ディスク装置Ｄ１に更新後のデータＡ（３３＋ｉ）ｎｅｗを、書き込む（ステップＳ１０５）。
【００９１】
これにより、図９に示すように、ディスク装置Ｄ１に４つのパリティデータＰ１、Ｐ１４、Ｐ１７及びＰ１８が、ディスク装置Ｄ２に４つのパリティデータＰ４、Ｐ６、Ｐ１１及びＰ１５が、ディスク装置Ｄ３に６つのパリティデータＰ２、Ｐ８、Ｐ９、Ｐ１２、Ｐ１６及びＰ１９が、ディスク装置Ｄ４に６つのパリティデータＰ０、Ｐ３、Ｐ５、Ｐ７、Ｐ１０及びＰ１３が、夫々記憶される。
【００９２】
この場合、カウンタＣ１のカウント値は「４」と、カウンタＣ２のカウント値は「４」と、カウンタＣ３のカウント値は「６」と、カウンタＣ４のカウント値は「６」と、なる。また、ディスクアレイ２０の分散度は「４（＝｜４−５｜＾２＋｜４−５｜＾２＋｜６−５｜＾２＋｜６−５｜＾２）」と求まり、所定値「５」以下となるため（ステップＳ１０８にてＹＥＳ）、ディスクアレイ装置１は、パリティデータ分散動作を終了する。
【００９３】
上記パリティデータ分散動作により、ディスクアレイ装置１は、データＡが更新毎に、パリティデータＰを各ディスク装置Ｄ１〜Ｄ４に分散し、各ディスク装置Ｄ１〜Ｄ４のパリティデータＰを記憶するブロック数を均一化することができる。換言すれば、ディスク装置Ｄ１〜Ｄ４の構成を、データＡが更新される毎に、ＲＡＩＤ４の冗長化ディスク構成からＲＡＩＤ５の冗長化ディスクアレイ構成へと移行させることができる。
【００９４】
このようにディスク装置Ｄ１〜Ｄ４のディスク構成をＲＡＩＤ５の冗長化ディスクアレイ構成に移行することにより、特定のディスク装置Ｄにのみ負荷が集中することがなくなり、ディスクアレイ装置１は、その性能を該特定のディスク装置Ｄの性能にのみ依存するという弊害を防止できる。この結果、ディスクアレイ装置１は、装置全体としての性能を向上させることができる。
【００９５】
また、上記パリティデータ分散動作において、ディスクアレイ装置１は、データＡの更新を機に、パリティデータＰを各ディスク装置Ｄ１〜Ｄ４に分散するため、効率的であるといえ、また、通常行われるデータＡの読取処理や更新処理には影響を与えることがない。さらに、ディスクアレイコントローラ３０の判別ロジックを置き換えるだけで、ディスクアレイ装置１に最適なパリティデータの配置を実現することができる。
【００９６】
［第２の実施の形態］
【００９７】
本発明の第２の実施の形態に係るディスクアレイシステムについて、以下図面を参照して説明する。なお、上記第１の実施の形態と同様の構成については、その符号を同一とし、説明を適宜省略する。
【００９８】
ディスクアレイシステム２は、図１０に示すように、コンピュータ４０−１〜４０−４と、通信ネットワーク５０と、サーバコンピュータ６０と、から概略構成されている。
【００９９】
コンピュータ４０−１〜４０−４（以下必要に応じて単にコンピュータ４０という）は、例えばパーソナルコンピュータ等であって、通信ネットワーク５０を介して相互に接続されるとともに、サーバコンピュータ６０に接続されている。また、コンピュータ４０−１〜４０−４は、インターフェイスＩ／Ｆを介してディスク装置Ｄ１〜Ｄ４に夫々接続されている。また、第１の実施の形態と同様、コンピュータ４０−１〜４０−４に接続されているディスク装置Ｄ１〜Ｄ４は、初期状態においてＲＡＩＤ４の冗長化ディスク構成を適用し、このうちディスク装置Ｄ４がパリティディスク装置として機能している。
【０１００】
このコンピュータ４０の構成をブロック図を参照して説明する。コンピュータ４０は、図１１Ａに示すように、通信部４１と、制御部４２と、インターフェイスＩ／Ｆと、を備える。
【０１０１】
通信部４１は、通信ネットワーク５０を介して、他のコンピュータ４０の通信部４１と相互に接続されるとともにサーバコンピュータ６０に接続されている。通信部４１は、サーバコンピュータ６０から通信ネットワーク５０を介して送信される更新後のデータＡｎｅｗと、他のコンピュータ４０から通信ネットワーク５０を介して送信される、後述するデータ和Ａｓ及びパリティデータ和Ｐｓと、を受信して制御部４２に供給する。また、通信部４１は、制御部４２から供給されるデータ和Ａｓとパリティデータ和Ｐｓとを通信ネットワーク５０を介して、他のコンピュータ４０に送信する。
【０１０２】
制御部４２は、ＣＰＵ、ＲＡＭ、ＲＯＭ等から構成され、インターフェイスＩ／Ｆを介してディスク装置Ｄに接続されている。制御部４２は、通信部４１から更新後のデータＡｎｅｗが供給されると、該更新後のデータＡｎｅｗに対応する更新前のデータＡｏｌｄ又はパリティデータＰｏｌｄをディスク装置Ｄの中から検出する。
【０１０３】
制御部４２は、ディスク装置Ｄから更新前のデータＡｏｌｄを検出した場合、数１１を用いて、更新後のデータＡｎｅｗと更新前のデータＡｏｌｄとの排他的論理和（以下、データ和という）Ａｓを生成する。そして、制御部４２は、この生成したデータ和Ａｓを、通信ネットワーク５０を介して、更新前のパリティデータＰｏｌｄが記憶されたディスク装置Ｄに接続されているコンピュータ４０に送信する。また、制御部４２は、インターフェイスＩ／Ｆを介して接続されているディスク装置Ｄに更新後のデータＡｎｅｗを書き込む。
【０１０４】
【数１１】
2005044147.tif 000014
【０１０５】
一方、制御部４２は、ディスク装置Ｄから更新前のパリティデータＰｏｌｄを検出した場合、数１２を用いて、更新後のデータＡｎｅｗと更新前のパリティデータＰｏｌｄとの排他的論理和（以下、パリティデータ和という）Ｐｓを生成する。そして、制御部４２は、この生成したデータ和Ｐｓを、通信ネットワーク５０を介して、更新前のデータＡｏｌｄが記憶されたディスク装置Ｄに接続されているコンピュータ４０に送信する。また、制御部４２は、インターフェイスＩ／Ｆを介して接続されているディスク装置Ｄに更新後のデータＡｎｅｗを書き込む。
【０１０６】
【数１２】
2005044147.tif 000015
【０１０７】
また、制御部４２は、通信部４１からデータ和Ａｓが供給されると、ディスク装置Ｄに記憶されている更新前のパリティデータＰｏｌｄを読み出す。制御部４２は、数１１の変形式数１３を用いて、供給されたデータ和Ａｓと読み出した更新前のパリティデータＰｏｌｄとから更新後のパリティデータＰｎｅｗを生成する。そして、制御部４２は、この生成した更新後のパリティデータＰｎｅｗを、インターフェイスＩ／Ｆを介して接続されているディスク装置Ｄに書き込む。
【０１０８】
【数１３】
2005044147.tif 000016
【０１０９】
一方、制御部４２は、通信部４１からパリティデータ和Ｐｓが供給されると、ディスク装置Ｄに記憶されている更新前のデータＡｏｌｄを読み出す。制御部４２は、数１２の変形式数１４を用いて、供給されたデータ和Ｐｓと読み出した更新前のデータＡｏｌｄとから更新後のデータＰｎｅｗを求める。そして、制御部４２は、この生成した更新後のデータＰｎｅｗを、インターフェイスＩ／Ｆを介して接続されているディスク装置Ｄに書き込む。
【０１１０】
【数１４】
2005044147.tif 000017
【０１１１】
通信ネットワーク５０は、例えば専用線や公衆回線網等から構成され、コンピュータ４０−１〜４０−４（より詳細にはコンピュータ４０−１〜４０−４の各通信部４１−１〜４１−４）と、サーバコンピュータ６０（より詳細にはサーバコンピュータ６０の通信部６１）と、を相互に接続する。
【０１１２】
サーバコンピュータ６０は、例えばパーソナルコンピュータ等であって、通信ネットワーク５０を介してコンピュータ４０−１〜４０−４に接続されている。サーバコンピュータ６０は、第１の実施の形態におけるディスクアレイコントローラ３０と同様の機能を有しており、このサーバコンピュータ６０により、ホストコンピュータ１０は、４台のコンピュータ４０−１〜４０−４に接続されているディスク装置Ｄ１〜Ｄ４を１つの論理ディスク装置として認識することが可能となる。
【０１１３】
このサーバコンピュータ６０の構成をブロック図を参照して説明する。コンピュータ６０は、図１０Ｂに示すように、通信部６１と、制御部６２と、インターフェイスＩ／Ｆと、を備える。
【０１１４】
通信部６１は、通信ネットワーク５０を介してコンピュータ４０−１〜４０−４に接続されている。通信部６１は、制御部６２から供給される更新後のデータＡｎｅｗを通信ネットワーク５０を介してコンピュータ４０−１〜４０−４に送信する。
【０１１５】
制御部６２は、ＣＰＵ、ＲＡＭ、ＲＯＭ等から構成され、ＲＡＭ等に各ディスク装置Ｄ１〜Ｄ４のデータＡ又はパリティデータＰが更新された回数を計数するためのカウンタＣ１〜Ｃ４を備え、データＡ又はパリティデータＰが更新される毎にカウンタＣ１〜Ｃ４のカウント値を更新する。
【０１１６】
制御部６２は、ホストコンピュータ１０からデータの書込が指示されると、更新前のデータＡｏｌｄを記憶するディスク装置ＤのカウンタＣと、更新前のパリティデータＰｏｌｄを記憶するディスク装置ＤのカウンタＣと、のカウント値を比較する。
【０１１７】
比較の結果、更新前のデータＡｏｌｄを記憶するディスク装置ＤのカウンタＣのカウント値が、更新前のパリティデータＰｏｌｄを記憶するディスク装置ＤのカウンタＣのカウント値よりも小さいと判別した場合、制御部６２は、更新前のデータＡｏｌｄが記憶されているディスク装置Ｄに接続されているコンピュータ４０に更新後のデータＡｎｅｗを送信する。
【０１１８】
一方、更新前のデータＡｏｌｄを記憶するディスク装置ＤのカウンタＣのカウント値が、更新前のパリティデータＰｏｌｄを記憶するディスク装置ＤのカウンタＣのカウント値以上であると判別した場合、制御部６２は、更新前のパリティデータＰｏｌｄが記憶されているディスク装置Ｄに接続されているコンピュータ４０に更新後のデータＡｎｅｗを送信する。
【０１１９】
これにより、サーバコンピュータ６０は、更新前のデータＡｏｌｄを記憶するディスク装置ＤのカウンタＣのカウント値が、更新前のパリティデータＰｏｌｄを記憶するディスク装置ＤのカウンタＣのカウント値よりも小さいと判別した場合、パリティデータＰを記憶するディスク装置Ｄを変更せず、一方、更新前のパリティデータＰｏｌｄを記憶するディスク装置ＤのカウンタＣのカウント値以上の場合、パリティデータＰを記憶するディスク装置Ｄを変更することができる。
【０１２０】
次に、上記構成を備えるディスクアレイシステム２のパリティデータ分散動作について図１２、図１３及び図１４に示すフローチャート図を参照して説明する。なお、初期状態においては、図３に示すように、ディスク装置Ｄ１にはデータＡ０、Ａ３、…、Ａ５７が、ディスク装置Ｄ２にはデータＡ１、Ａ４、…、Ａ５８が、ディスク装置Ｄ３にはデータＡ２、Ａ５、…、Ａ５９が、ディスク装置Ｄ４にはパリティデータＰ０、Ｐ１、…、Ｐ１９が、夫々記憶されている。また、この場合のカウンタＣ１〜Ｃ４のカウント値は「０」となる。
【０１２１】
ホストコンピュータ１０からデータの更新が指示されると、ディスクアレイシステム２は、図１２のフローチャート図に示すパリティデータ分散動作を開始する。パリティデータ分散動作が開始すると、サーバコンピュータ６０は、更新前のデータＡｏｌｄを記憶するディスク装置ＤのカウンタＣと、更新前のパリティデータＰｏｌｄを記憶するディスク装置ＤのカウンタＣと、のカウント値を比較する（ステップＳ２０１０）。
【０１２２】
比較の結果、更新前のデータＡｏｌｄを記憶するディスク装置ＤのカウンタＣのカウント値が、更新前のパリティデータＰｏｌｄを記憶するディスク装置ＤのカウンタＣのカウント値よりも小さいと判別した場合（ステップＳ２０１０にてＹＥＳ）、サーバコンピュータ６０は、更新前のデータＡｏｌｄを記憶するディスク装置Ｄに接続されたコンピュータ４０に、更新後のデータＡｎｅｗを通信ネットワーク５０を介して送信する。
【０１２３】
更新前のデータＡｏｌｄを記憶するディスク装置Ｄに接続されたコンピュータ４０は、送信された更新後のデータＡｎｅｗを受信するとともに、この受信した更新後のデータＡｎｅｗと、ディスク装置Ｄに記憶されている更新前のデータＡｏｌｄと、の排他的論理和であるデータ和Ａｓを生成する（ステップＳ２０１１）。
【０１２４】
このコンピュータ４０は、生成したデータ和Ａｓを、通信ネットワーク５０を介して、更新前のパリティデータＰｏｌｄが記憶されたディスク装置Ｄに接続されているコンピュータ４０に送信するとともに、インターフェイスＩ／Ｆを介して接続されているディスク装置Ｄに更新後のデータＡｎｅｗを書き込む（ステップＳ２０１２）。
【０１２５】
更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄに接続されたコンピュータ４０は、送信されたデータ和Ａｓを受信するとともに、この受信したデータ和Ａｓと、ディスク装置Ｄに記憶されている更新前のパリティデータＰｏｌｄと、から更新後のパリティデータＰｎｅｗを生成する（ステップＳ２０１３）。このコンピュータ４０は、生成した更新後のパリティデータＰｎｅｗを、インターフェイスＩ／Ｆを介して接続されたディスク装置Ｄに書き込んで（ステップＳ２０１４）、パリティ分散動作を終了する。
【０１２６】
一方、更新前のデータＡｏｌｄを記憶するディスク装置ＤのカウンタＣのカウント値が、更新前のパリティデータＰｏｌｄを記憶するディスク装置ＤのカウンタＣのカウント値以上であると判別した場合（ステップＳ２０１０にてＮＯ）、サーバコンピュータ６０は、更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄに接続されたコンピュータ４０に更新後のデータＡｎｅｗを送信するとともに、更新後のパリティデータＰｎｅｗを記憶したディスク装置ＤのカウンタＣのと、更新後のデータＡｎｅｗを記憶したディスク装置ＤのカウンタＣと、のカウント値を更新する（ステップＳ２０１５）。
【０１２７】
更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄに接続されたコンピュータ４０は、送信された更新後のデータＡｎｅｗを受信するとともに、この受信した更新後のデータＡｎｅｗと、ディスク装置Ｄに記憶されている更新前のパリティデータＰｏｌｄと、の排他的論理和であるパリティデータ和Ｐｓを生成する（ステップＳ２０１６）。
【０１２８】
このコンピュータ４０は、生成したパリティデータ和Ｐｓを、通信ネットワーク５０を介して、更新前のデータＡｏｌｄが記憶されたディスク装置Ｄに接続されているコンピュータ４０に送信するとともに、インターフェイスＩ／Ｆを介して接続されているディスク装置Ｄに更新後のデータＡｎｅｗを書き込む（ステップＳ２０１７）。
【０１２９】
更新前のデータＡｎｅｗを記憶するディスク装置Ｄに接続されたコンピュータ４０は、送信されたパリティデータ和Ｐｓを受信するとともに、この受信したパリティデータ和Ｐｓと、ディスク装置Ｄに記憶されている更新前のデータＡｏｌｄと、から更新後のパリティデータＰｎｅｗを生成する（ステップＳ２０１８）。このコンピュータ４０は、この生成した更新後のパリティデータＰｎｅｗを、インターフェイスＩ／Ｆを介して接続されたディスク装置Ｄに書き込んで（ステップＳ２１９）、パリティデータ分散動作を終了する。
【０１３０】
上記パリティデータ分散動作を繰り返すことにより、ディスクアレイシステム２は、データＡが更新される毎に、パリティデータＰを各ディスク装置Ｄ１〜Ｄ４に分散し、各ディスク装置Ｄ１〜Ｄ４のパリティデータＰを記憶するブロック数を均一化することができる。換言すれば、ディスク装置Ｄ１〜Ｄ４のディスク構成を、データＡが更新される毎に、ＲＡＩＤ４の冗長化ディスク構成からＲＡＩＤ５の冗長化ディスクアレイ構成へと移行させることができる。
【０１３１】
このようにディスク装置Ｄ１〜Ｄ４のディスクアレイ構成をＲＡＩＤ５の冗長化ディスクアレイ構成に移行することにより、特定のディスク装置Ｄにのみ負荷が集中することがなくなり、ディスクアレイシステム２は、その性能を該特定のディスク装置Ｄの性能にのみ依存するという弊害を防止できる。この結果、ディスクアレイシステム２は、システム全体としての性能を向上させることができる。
【０１３２】
上記パリティデータ分散動作において、サーバコンピュータ６０が更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄに接続されたコンピュータ４０に更新後のデータＡｎｅｗを送信し、また、該ディスク装置ＤがデータＡｏｌｄを記憶するディスク装置Ｄに接続されたコンピュータ４０にパリティデータ和Ｐｓを送信することによって、ディスクアレイシステム２は、パリティデータＰを記憶するディスク装置Ｄを変更することができる。このように、ディスクアレイシステム２は、二回データを送信するだけでパリティデータＰを記憶するディスク装置Ｄを変更することができるため、通信ネットワーク５０にかかる負担の低減を図ることができる。
【０１３３】
また、上記パリティデータ分散動作において、ディスクアレイシステム２は、データＡの更新を機に、パリティデータＰを各ディスク装置Ｄ１〜Ｄ４に分散するため、効率的であるといえ、また、通常行われるデータＡの読取処理や更新処理には影響を与えることがない。さらに、サーバコンピュータ６０の判別ロジックを置き換えるだけで、ディスクアレイシステム２に最適なパリティデータの配置を実現することができる。
【０１３４】
なお、本発明は、上記の実施の形態に限られず、種々の変形、応用が可能である。以下、本発明に適用可能な上記の実施の形態の変形態様について説明する。
【０１３５】
上記第１の実施の形態において、ディスクアレイコントローラ３０は、更新前のデータＡｏｌｄを記憶するディスク装置Ｄのカウント値と理想カウント値とを比較し、この比較の結果に基づいて生成した更新後のパリティデータＰｎｅｗを更新前のデータＡを記憶するディスク装置Ｄ又は更新前のパリティデータＰを記憶するディスク装置Ｄに書き込んでいた。しかし、本発明はこれに限定されず、ディスクアレイコントローラ３０は、更新前のデータＡｏｌｄを記憶するディスク装置Ｄのカウント値と更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄのカウント値とを比較し、この比較の結果に基づいて生成した更新後のパリティデータＰｎｅｗを更新前のデータＡを記憶するディスク装置Ｄ又は更新前のパリティデータＰを記憶するディスク装置Ｄに書き込んでもよい。
【０１３６】
上記第１の実施の形態の変形例におけるパリティデータ分散動作について図１５に示すフローチャート図を参照して説明する。まず、ディスクアレイコントローラ３０は、ホストコンピュータ１０からデータの書込が指示されると、書き込むデータをブロック単位に分割し、３ブロック分のデータ、例えばＡ０、Ａ１及びＡ２からパリティデータＰ０を生成する。そして、ディスクアレイコントローラ３０は、データＡ０、Ａ１及びＡ２とパリティデータＰ０とを同一タイミングでストライプＳ０を構成するブロックＢ０、Ｂ１、Ｂ２及びＢ３に夫々書き込む。上記動作を繰り返すことにより、ディスク装置Ｄ１〜Ｄ４には、図３に示すように、ストライプＳ０にデータＡ０、Ａ１、Ａ２及びパリティデータＰ０が、ストライプＳ１にデータＡ３、Ａ４、Ａ５及びパリティデータＰ１が、…、ストライプＳ１９にデータＡ５７、Ａ５８、Ａ５９及びパリティデータＰ１９が、夫々記憶される。なお、図３に示す場合におけるカウンタＣ１〜Ｃ４のカウント値は「０」、カウンタＣ４のカウント値は「２０」、理想カウント値は「５」、分散度は「３００」、となる。そして、ホストコンピュータ１０からデータの更新が指示されると、ディスクアレイ装置１は、図１５のフローチャート図に示すパリティデータ分散動作を開始する。パリティデータ分散動作が開始すると、まず、ディスクアレイコントローラ３０は、更新前のデータＡｏｌｄと更新前のパリティデータＰｏｌｄとをディスクアレイ２０から読み出す（ステップＳ３０２０）。次に、ディスクアレイコントローラ３０は、更新後のデータＡｎｅｗと、更新前のデータＡｏｌｄ及びパリティデータＰｏｌｄと、から更新後のパリティデータＰｎｅｗを生成する（ステップＳ３０２１）。続いて、ディスクアレイコントローラ３０は、更新前のデータＡｏｌｄを記憶するディスク装置Ｄのカウント値と更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄのカウント値とを比較する（ステップＳ３０２２）。ステップＳ３０２２における比較の結果、更新前のデータＡｏｌｄを記憶するディスク装置Ｄのカウント値が更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄのカウント値以下であると判別した場合（ステップＳ３０２２にてＹＥＳ）、ディスクアレイコントローラ３０は、更新前のデータＡｏｌｄが記憶されているディスク装置Ｄに更新後のデータＡｎｅｗを、更新前のパリティデータＰｏｌｄが記憶されているディスク装置Ｄに更新後のパリティデータＰｎｅｗを、書き込み、ステップＳ３０２８に進む（ステップＳ３０２３）。一方、更新前のデータＡｏｌｄを記憶するディスク装置Ｄのカウント値が更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄのカウント値より大きいと判別した場合（ステップＳ３０２２にてＮＯ）、ディスクアレイコントローラ３０は、更新前のデータＡｏｌｄが記憶されているディスク装置Ｄに更新後のパリティデータＰｎｅｗを、更新前のパリティデータＰｏｌｄが記憶されているディスク装置Ｄに更新後のデータＡｎｅｗを、書き込む（ステップＳ３０２４）。この場合、ディスクアレイコントローラ３０は、更新後のパリティデータＰｎｅｗを記憶したディスク装置ＤのカウンタＣと、更新後のデータＡｎｅｗを記憶したディスク装置ＤのカウンタＣと、のカウント値を更新するとともに（ステップＳ３０２５）、更新したカウント値から分散度を求める（ステップＳ３０２６）。この求めた分散度が所定値（例えば「５」）よりも大きい場合（ステップＳ３０２７にてＮＯ）、ディスクアレイ装置１は、ホストコンピュータ１０からデータの更新が指示される毎に（ステップＳ３０２８にてＹＥＳ）、上記ステップＳ３０２０〜Ｓ３０２７の動作を繰り返す。一方、求めた分散度が所定値以下の場合（ステップＳ３０２７にてＹＥＳ）、ディスクアレイ装置１は、パリティデータ分散動作を終了する。
【０１３７】
上記パリティデータ分散動作を繰り返すことにより、上記第１の実施の形態と同様に、ディスクアレイ装置１は、データＡが更新される毎に、パリティデータＰを各ディスク装置Ｄ１〜Ｄ４に分散し、各ディスク装置Ｄ１〜Ｄ４のパリティデータＰを記憶するブロック数を均一化することができる。換言すれば、ディスク装置Ｄ１〜Ｄ４のディスク構成を、データＡが更新される毎に、ＲＡＩＤ４の冗長化ディスク構成からＲＡＩＤ５の冗長化ディスクアレイ構成へと移行させることができる。このようにディスク装置Ｄ１〜Ｄ４のディスクアレイ構成をＲＡＩＤ５の冗長化ディスクアレイ構成に移行することにより、特定のディスク装置Ｄにのみ負荷が集中することがなくなり、ディスクアレイ装置１は、その性能を該特定のディスク装置Ｄの性能にのみ依存するという弊害を防止できる。この結果、ディスクアレイ装置１は、システム全体としての性能を向上させることができる。また、上記パリティデータ分散動作において、ディスクアレイ装置１は、データＡの更新を機に、パリティデータＰを各ディスク装置Ｄ１〜Ｄ４に分散するため、効率的であるといえ、また、通常行われるデータＡの読取処理や更新処理には影響を与えることがない。さらに、ディスクアレイコントローラ３０の判別ロジックを置き換えるだけで、ディスクアレイ装置１に最適なパリティデータＰの配置を実現することができる。
【０１３８】
また、上記第１の実施の形態において、カウント値はディスク装置Ｄに記憶されているパリティデータＰのブロック数を示し、ディスクアレイコントローラ３０は、更新前のデータＡｏｌｄを記憶するディスク装置Ｄのカウント値と理想カウント値とを比較し、この比較の結果に基づいて生成した更新後のパリティデータＰｎｅｗを更新前のデータＡｏｌｄを記憶するディスク装置Ｄ又は更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄに書き込んでいた。しかし、本発明はこれに限定されず、カウント値はディスク装置Ｄの更新回数を示し、ディスクアレイコントローラ３０は、更新前のデータＡｏｌｄを記憶するディスク装置Ｄのカウント値と更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄのカウント値とを比較し、この比較の結果に基づいて、生成した更新後のパリティデータＰｎｅｗを更新前のデータＡｏｌｄを記憶するディスク装置Ｄ又は更新前のパリティデータＰｎｅｗを記憶するディスク装置Ｄに書き込んでもよい。
【０１３９】
さらに、上記第２の実施の形態において、カウント値はディスク装置Ｄの更新回数を示し、サーバコンピュータ６０は、更新前のデータＡｏｌｄを記憶するディスク装置Ｄのカウント値と更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄのカウント値とを比較し、この比較の結果に基づいて生成した更新後のパリティデータＰｎｅｗを更新前のデータＡｏｌｄを記憶するディスク装置Ｄ接続されたコンピュータ４０又は更新前のパリティデータＰを記憶するディスク装置Ｄに接続されたコンピュータ４０に送信していた。しかし、本発明はこれに限定されず、カウント値はディスク装置Ｄに記憶されているパリティデータＰのブロック数を示し、サーバコンピュータ６０は、更新前のデータＡｏｌｄを記憶するディスク装置Ｄのカウント値と理想カウント値とを比較し、又は更新前のデータＡｏｌｄを記憶するディスク装置Ｄのカウント値と更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄのカウント値とを比較し、この比較の結果に基づいて、生成した更新後のパリティデータＰｎｅｗを更新前のデータＡｏｌｄを記憶するディスク装置Ｄに接続されたコンピュータ４０又は更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄに接続されたコンピュータ４０に送信してもよい。
【０１４０】
また、上記第２の実施の形態の変形例において、サーバコンピュータ６０は、生成した更新後のパリティデータＰｎｅｗを更新前のデータＡｏｌｄを記憶するディスク装置Ｄ又は更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄに接続されたコンピュータ４０に送信される毎に、上記第１の実施の形態で説明した分散度を求めてもよい。そして、サーバコンピュータ６０は、この分散度が所定値以下となると、以降の動作において、ディスク装置Ｄが備えるカウンタＣのカウント値と理想カウント値とを比較することなく、更新前のデータＡｏｌｄを記憶するディスク装置Ｄに接続されたコンピュータ４０に更新後のデータＡｎｅｗを、また、更新前のパリティデータＰｏｌｄを記憶するディスク装置Ｄに接続されたコンピュータ４０に更新後のパリティデータＰｎｅｗを、送信してもよい。
【０１４１】
さらに、上記第１の実施の形態におけるディスクアレイコントローラ３０の機能は、パーソナルコンピュータ等、ＣＰＵ、ＲＡＭ、ＲＯＭ等から構成される汎用コンピュータをプラットフォームとし、ＣＰＵがＲＯＭに格納されているコンピュータプログラムを実行することによっても実現可能である。
【０１４２】
また、上記第１の及び第２の実施の形態において、ディスク装置Ｄの台数を４としたが、本発明はこれに限定されず、ディスク装置の台数は３以上であれば任意である。
【０１４３】
さらに、上記第１の及び第２の実施の形態において、ディスク装置Ｄはハードディスクドライブから構成されているものとした。しかし、本発明はこれに限定されず、ディスク装置Ｄはフレキシブルディスク、ＭＯ（Magnetooptic Disc）、ＣＤ−Ｒ／ＲＷ（Compact Disc - Recordable / Rewritable）、ＤＶＤ−ＲＡＭ（Digital Versatile Disc - Random Access Memory）、ＤＶＤ±Ｒ／ＲＷ（Digital Versatile Disc ± Recordable / Rewritable）等のドライブから構成されてもよい。また、Ｂlue−Ｒay−Ｄisc（Ｒ）やＡＯＤ（Advanced Optical Disc）等の青色レーザを用いる次世代光ディスク記憶媒体、赤色レーザを用いるＨＤ−ＤＶＤ９、青紫色レーザを用いるＢlue−Ｌaser−ＤＶＤ等、今後開発される種々の大容量記憶媒体のドライブを用いることによっても、本発明の実施が可能であることは言うまでもない。
【図面の簡単な説明】
【０１４４】
【図１】本発明の第１の実施の形態に係るディスクアレイ装置の構成を示すブロック図である。
【図２】図１に示すディスク装置の構成を示す図である。
【図３】図１に示すディスク装置の初期状態におけるデータ配列を示す図である。
【図４】図１に示すディスクアレイコントローラがパリティデータを記憶するディスク装置を変更する動作を説明する図である。
【図５】図１に示すディスクアレイ装置のパリティデータ分散動作のフローチャート図である。
【図６】図５に示すパリティデータ分散動作の説明図である。
【図７】図５に示すパリティデータ分散動作の説明図である。
【図８】図５に示すパリティデータ分散動作の説明図である。
【図９】図５に示すパリティデータ分散動作の説明図である。
【図１０】本発明の第２の実施の形態に係るディスクアレイシステムの構成を示すブロック図である。
【図１１】図１０に示すコンピュータ及びサーバコンピュータの構成を示すブロック図である。
【図１２】図１０に示すディスクアレイシステムのパリティデータ分散動作のフローチャート図である。
【図１３】図１０に示すディスクアレイシステムのパリティデータ分散動作のフローチャート図である。
【図１４】図１０に示すディスクアレイシステムのパリティデータ分散動作のフローチャート図である。
【図１５】パリティデータ分散動作の変形例のフローチャート図である。
【符号の説明】
【０１４５】
１    ディスクアレイ装置
２    ディスクアレイシステム
１０    ホストコンピュータ
２０    ディスクアレイ
３０    ディスクアレイコントローラ
４０    コンピュータ
５０    通信ネットワーク
６０    サーバコンピュータ
Ａ    データ
Ｃ    カウンタ
Ｄ    ディスク装置
Ｐ    パリティデータ
【図１】
2005044147.tif 000022
【図２】
2005044147.tif 000023
【図３】
2005044147.tif 000024
【図４】
2005044147.tif 000025
【図５】
2005044147.tif 000026
【図６】
2005044147.tif 000027
【図７】
2005044147.tif 000028
【図８】
2005044147.tif 000029
【図９】
2005044147.tif 000030
【図１０】
2005044147.tif 000031
【図１１】
2005044147.tif 000032
【図１２】
2005044147.tif 000033
【図１３】
2005044147.tif 000034
【図１４】
2005044147.tif 000035
【図１５】
2005044147.tif 000036