(57)【要約】【課題】ハードディスク装置の状態が異常状態である場合において、ディスクアレイ装置から記憶用データを高速に読み出すことが可能なディスクアレイ制御装置を提供すること。【解決手段】この制御装置は、複数のハードディスク装置を備えるディスクアレイ装置に適用される。この制御装置は、ハードディスク装置の状態が異常状態であることを検出する。この制御装置は、ハードディスク装置の状態が正常状態である場合、入力された記憶用データを分割サイズ毎に分割した分割データと、分割データに基づいて生成されたパリティデータと、からなるディスク毎記憶用データを複数のハードディスク装置に１つずつ記憶させる。一方、この制御装置は、ハードディスク装置の状態が異常状態である場合、分割データを、複数のハードディスク装置のうちの異常状態にあるハードディスク装置以外のハードディスク装置に１つずつ記憶させる。【選択図】図５
2009211349.tif 000002
【特許請求の範囲】
【請求項１】
複数のハードディスク装置を備えるディスクアレイ装置に適用され、
入力された記憶用データを分割サイズ毎に分割した分割データを前記ハードディスク装置の数であるディスク装置数から予め設定されたパリティ数だけ減じた分割データ数だけ含み、且つ、当該分割データ数の分割データに基づいて生成されたパリティデータであって当該分割データ数の分割データから前記パリティ数だけ分割データを除いた残りの分割データから当該除かれた分割データを生成するためのパリティデータを当該パリティ数だけ含むデータグループ毎に、そのデータグループを構成する分割データ及びパリティデータからなるディスク毎記憶用データを前記複数のハードディスク装置に１つずつ記憶させることにより、前記記憶用データを前記ディスクアレイ装置に記憶させるデータ記憶処理手段を備えるディスクアレイ制御装置であって、
前記ハードディスク装置の状態が異常状態であることを検出する異常状態検出手段を備え、
前記データ記憶処理手段は、前記パリティ数の前記ハードディスク装置の状態が異常状態であることが検出された場合、前記データグループ毎に、そのデータグループを構成する分割データを、前記複数のハードディスク装置のうちの当該異常状態にあるハードディスク装置以外のハードディスク装置に１つずつ記憶させるように構成されたディスクアレイ制御装置。
【請求項２】
請求項１に記載のディスクアレイ制御装置であって、
前記ハードディスク装置の状態が異常状態であることが検出されていない場合に前記パリティデータを生成し、一方、前記パリティ数の前記ハードディスク装置の状態が異常状態であることが検出された場合に前記パリティデータを生成しないパリティデータ生成手段を備えるディスクアレイ制御装置。
【請求項３】
請求項１又は請求項２に記載のディスクアレイ制御装置であって、
前記複数のハードディスク装置のうちの前記パリティデータが記憶されているハードディスク装置を前記データグループ毎に特定するパリティディスク特定手段と、
前記ハードディスク装置の状態が異常状態であることが検出された場合、前記データグループ毎に、前記特定されたハードディスク装置から前記パリティデータを読み出すとともに当該特定されたハードディスク装置及び前記異常状態にあるハードディスク装置以外のハードディスク装置から前記分割データを読み出し、且つ、当該読み出したパリティデータと当該読み出した分割データとに基づいて当該異常状態にあるハードディスク装置に記憶されていた分割データを復元することにより前記データグループ内のすべての分割データを取得する分割データ取得手段と、
を備えるディスクアレイ制御装置。
【請求項４】
請求項３に記載のディスクアレイ制御装置であって、
前記ディスクアレイ装置に記憶されている前記データグループのそれぞれに対応付けられた情報であって、そのデータグループが前記パリティデータを含まないパリティ無データグループであるか否かを表す情報であるパリティ有無情報を記憶するパリティ有無情報記憶手段を備え、
前記分割データ取得手段は、前記パリティ数の前記ハードディスク装置の状態が異常状態であることが検出された場合、前記データグループ毎に、そのデータグループに対応付けて記憶されている前記パリティ有無情報がそのデータグループが前記パリティ無データグループであることを表すときには、前記異常状態にあるハードディスク装置以外のハードディスク装置から前記分割データを読み出すことにより当該データグループ内のすべての分割データを取得するように構成されたディスクアレイ制御装置。
【請求項５】
請求項１乃至請求項４のいずれか一項に記載のディスクアレイ制御装置であって、
前記異常状態にあるハードディスク装置が正常状態にあるハードディスク装置に交換された場合、前記データグループ毎に、その他のハードディスク装置が記憶している前記分割データ及び前記パリティデータに基づいて前記異常状態にあるハードディスク装置に記憶されていた分割データを復元し、当該復元した分割データと前記異常状態にあるハードディスク装置以外のハードディスク装置に記憶されていた分割データとに基づいてパリティデータを生成し、当該分割データ及び当該生成したパリティデータからなるディスク毎記憶用データを前記交換後のハードディスク装置を含む複数のハードディスク装置に１つずつ記憶させることにより、前記記憶用データを前記ディスクアレイ装置に記憶させるリビルド処理手段を備えるディスクアレイ制御装置。
【請求項６】
複数のハードディスク装置を備えるとともに、
入力された記憶用データを分割サイズ毎に分割した分割データを前記ハードディスク装置の数であるディスク装置数からパリティ数だけ減じた分割データ数だけ含み、且つ、当該分割データ数の分割データに基づいて生成されたパリティデータであって当該分割データ数の分割データから前記パリティ数だけ分割データを除いた残りの分割データから当該除かれた分割データを生成するためのパリティデータを当該パリティ数だけ含むデータグループ毎に、そのデータグループを構成する分割データ及びパリティデータからなるディスク毎記憶用データを前記複数のハードディスク装置に１つずつ記憶させることにより、前記記憶用データを前記複数のハードディスク装置に記憶させるデータ記憶処理手段を備えるディスクアレイ装置であって、
前記ハードディスク装置の状態が異常状態であることを検出する異常状態検出手段を備え、
前記データ記憶処理手段は、前記パリティ数の前記ハードディスク装置の状態が異常状態であることが検出された場合、前記データグループ毎に、そのデータグループを構成する分割データを、前記複数のハードディスク装置のうちの当該異常状態にあるハードディスク装置以外のハードディスク装置に１つずつ記憶させるように構成されたディスクアレイ装置。
【請求項７】
請求項６に記載のディスクアレイ装置であって、
前記ハードディスク装置の状態が異常状態であることが検出されていない場合に前記パリティデータを生成し、一方、前記パリティ数の前記ハードディスク装置の状態が異常状態であることが検出された場合に前記パリティデータを生成しないパリティデータ生成手段を備えるディスクアレイ装置。
【請求項８】
複数のハードディスク装置を備えるディスクアレイ装置を制御するために、
入力された記憶用データを分割サイズ毎に分割した分割データを前記ハードディスク装置の数であるディスク装置数からパリティ数だけ減じた分割データ数だけ含み、且つ、当該分割データ数の分割データに基づいて生成されたパリティデータであって当該分割データ数の分割データから前記パリティ数だけ分割データを除いた残りの分割データから当該除かれた分割データを生成するためのパリティデータを当該パリティ数だけ含むデータグループ毎に、そのデータグループを構成する分割データ及びパリティデータからなるディスク毎記憶用データを前記複数のハードディスク装置に１つずつ記憶させることにより、前記記憶用データを前記ディスクアレイ装置に記憶させる記憶用データ記憶処理工程を含むディスクアレイ制御方法であって、
前記ハードディスク装置の状態が異常状態であることを検出する異常状態検出工程を含み、
前記記憶用データ記憶処理工程は、前記パリティ数の前記ハードディスク装置の状態が異常状態であることが検出された場合、前記データグループ毎に、そのデータグループを構成する分割データを、前記複数のハードディスク装置のうちの当該異常状態にあるハードディスク装置以外のハードディスク装置に１つずつ記憶させるように構成されたディスクアレイ制御方法。
【請求項９】
請求項８に記載のディスクアレイ制御方法であって、
前記ハードディスク装置の状態が異常状態であることが検出されていない場合に前記パリティデータを生成し、一方、前記パリティ数の前記ハードディスク装置の状態が異常状態であることが検出された場合に前記パリティデータを生成しないパリティデータ生成工程を含むディスクアレイ制御方法。
【請求項１０】
複数のハードディスク装置を備えるディスクアレイ装置を制御するディスクアレイ制御装置に、
入力された記憶用データを分割サイズ毎に分割した分割データを前記ハードディスク装置の数であるディスク装置数からパリティ数だけ減じた分割データ数だけ含み、且つ、当該分割データ数の分割データに基づいて生成されたパリティデータであって当該分割データ数の分割データから前記パリティ数だけ分割データを除いた残りの分割データから当該除かれた分割データを生成するためのパリティデータを当該パリティ数だけ含むデータグループ毎に、そのデータグループを構成する分割データ及びパリティデータからなるディスク毎記憶用データを前記複数のハードディスク装置に１つずつ記憶させることにより、前記記憶用データを前記ディスクアレイ装置に記憶させるデータ記憶処理手段を実現させるためのディスクアレイ制御プログラムであって、
更に、前記ディスクアレイ制御装置に、
前記ハードディスク装置の状態が異常状態であることを検出する異常状態検出手段を実現させるとともに、
前記データ記憶処理手段は、前記パリティ数の前記ハードディスク装置の状態が異常状態であることが検出された場合、前記データグループ毎に、そのデータグループを構成する分割データを、前記複数のハードディスク装置のうちの当該異常状態にあるハードディスク装置以外のハードディスク装置に１つずつ記憶させるように構成されたディスクアレイ制御プログラム。
【請求項１１】
請求項１０に記載のディスクアレイ制御プログラムであって、
更に、前記ディスクアレイ制御装置に、
前記ハードディスク装置の状態が異常状態であることが検出されていない場合に前記パリティデータを生成し、一方、前記パリティ数の前記ハードディスク装置の状態が異常状態であることが検出された場合に前記パリティデータを生成しないパリティデータ生成手段を実現させるためのディスクアレイ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のハードディスク装置を備えるディスクアレイ装置を制御する制御装置に関する。
【背景技術】
【０００２】
複数のハードディスク装置を備えるディスクアレイ装置を制御するディスクアレイ制御装置が知られている。この種のディスクアレイ制御装置の一つとして特許文献１に記載の装置は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）５方式を用いる。
【０００３】
即ち、ディスクアレイ制御装置は、入力された記憶用データを分割サイズ毎に分割した複数の分割データと、１つのパリティデータと、を含むデータグループを生成する。そして、ディスクアレイ制御装置は、データグループ毎に、そのデータグループを構成する分割データ及びパリティデータからなるディスク毎記憶用データを複数のハードディスク装置に１つずつ記憶させる。これにより、ディスクアレイ制御装置は、記憶用データをディスクアレイ装置に記憶させる。
【特許文献１】特開平６−１１９１２０号公報
【０００４】
上記ディスクアレイ制御装置は、あるハードディスク装置の状態が異常状態となった場合であっても、複数の分割データと１つのパリティデータとを含むデータグループを複数のハードディスク装置に記憶させる。これにより、異常状態にあるハードディスク装置に分割データが記憶されていた場合であっても、そのハードディスク装置以外のハードディスク装置に記憶されているパリティデータ及び分割データに基づいて記憶用データを生成（復元）することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、ハードディスク装置の状態が異常状態である場合において、更に、他のハードディスク装置の状態が異常状態となった場合（即ち、２つのハードディスク装置の状態が異常状態となった場合）には、パリティデータを用いても上記記憶用データを復元することは不可能である。
【０００６】
一方、１つのハードディスク装置の状態が異常状態である場合においては、上記ディスクアレイ制御装置は、そのハードディスク装置以外のハードディスク装置に記憶されているパリティデータ及び分割データに基づいて記憶用データを生成（復元）する復元処理を実行する。従って、１つのハードディスク装置の状態が異常状態である場合、ディスクアレイ装置から記憶用データを高速に読み出すことができないという問題があった。
【０００７】
このため、本発明の目的は、上述した課題である「ハードディスク装置の状態が異常状態である場合にディスクアレイ装置から記憶用データを高速に読み出すことができないこと」を解決することが可能なディスクアレイ制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
かかる目的を達成するため本発明の一形態であるディスクアレイ制御装置は、
複数のハードディスク装置を備えるディスクアレイ装置に適用される。
【０００９】
更に、このディスクアレイ制御装置は、
入力された記憶用データを分割サイズ毎に分割した分割データを上記ハードディスク装置の数であるディスク装置数から予め設定されたパリティ数だけ減じた分割データ数だけ含み、且つ、当該分割データ数の分割データに基づいて生成されたパリティデータであって当該分割データ数の分割データから上記パリティ数だけ分割データを除いた残りの分割データから当該除かれた分割データを生成するためのパリティデータを当該パリティ数だけ含むデータグループ毎に、そのデータグループを構成する分割データ及びパリティデータからなるディスク毎記憶用データを上記複数のハードディスク装置に１つずつ記憶させることにより、上記記憶用データを上記ディスクアレイ装置に記憶させるデータ記憶処理手段を備える。
【００１０】
加えて、このディスクアレイ制御装置は、
上記ハードディスク装置の状態が異常状態であることを検出する異常状態検出手段を備える。
更に、上記データ記憶処理手段は、上記パリティ数の上記ハードディスク装置の状態が異常状態であることが検出された場合、上記データグループ毎に、そのデータグループを構成する分割データを、上記複数のハードディスク装置のうちの当該異常状態にあるハードディスク装置以外のハードディスク装置に１つずつ記憶させるように構成される。
【００１１】
一方、本発明の他の形態であるディスクアレイ装置は、
複数のハードディスク装置を備えるとともに、
入力された記憶用データを分割サイズ毎に分割した分割データを上記ハードディスク装置の数であるディスク装置数からパリティ数だけ減じた分割データ数だけ含み、且つ、当該分割データ数の分割データに基づいて生成されたパリティデータであって当該分割データ数の分割データから上記パリティ数だけ分割データを除いた残りの分割データから当該除かれた分割データを生成するためのパリティデータを当該パリティ数だけ含むデータグループ毎に、そのデータグループを構成する分割データ及びパリティデータからなるディスク毎記憶用データを上記複数のハードディスク装置に１つずつ記憶させることにより、上記記憶用データを上記複数のハードディスク装置に記憶させるデータ記憶処理手段を備える。
【００１２】
更に、このディスクアレイ装置は、
上記ハードディスク装置の状態が異常状態であることを検出する異常状態検出手段を備える。
加えて、
上記データ記憶処理手段は、上記パリティ数の上記ハードディスク装置の状態が異常状態であることが検出された場合、上記データグループ毎に、そのデータグループを構成する分割データを、上記複数のハードディスク装置のうちの当該異常状態にあるハードディスク装置以外のハードディスク装置に１つずつ記憶させるように構成される。
【００１３】
一方、本発明の他の形態であるディスクアレイ制御方法は、
複数のハードディスク装置を備えるディスクアレイ装置を制御するために、
入力された記憶用データを分割サイズ毎に分割した分割データを上記ハードディスク装置の数であるディスク装置数からパリティ数だけ減じた分割データ数だけ含み、且つ、当該分割データ数の分割データに基づいて生成されたパリティデータであって当該分割データ数の分割データから上記パリティ数だけ分割データを除いた残りの分割データから当該除かれた分割データを生成するためのパリティデータを当該パリティ数だけ含むデータグループ毎に、そのデータグループを構成する分割データ及びパリティデータからなるディスク毎記憶用データを上記複数のハードディスク装置に１つずつ記憶させることにより、上記記憶用データを上記ディスクアレイ装置に記憶させる記憶用データ記憶処理工程を含む方法である。
【００１４】
更に、このディスクアレイ制御方法は、
上記ハードディスク装置の状態が異常状態であることを検出する異常状態検出工程を含む。
加えて、
上記記憶用データ記憶処理工程は、上記パリティ数の上記ハードディスク装置の状態が異常状態であることが検出された場合、上記データグループ毎に、そのデータグループを構成する分割データを、上記複数のハードディスク装置のうちの当該異常状態にあるハードディスク装置以外のハードディスク装置に１つずつ記憶させるように構成される。
【００１５】
一方、本発明の他の形態であるディスクアレイ制御プログラムは、
複数のハードディスク装置を備えるディスクアレイ装置を制御するディスクアレイ制御装置に、
入力された記憶用データを分割サイズ毎に分割した分割データを上記ハードディスク装置の数であるディスク装置数からパリティ数だけ減じた分割データ数だけ含み、且つ、当該分割データ数の分割データに基づいて生成されたパリティデータであって当該分割データ数の分割データから上記パリティ数だけ分割データを除いた残りの分割データから当該除かれた分割データを生成するためのパリティデータを当該パリティ数だけ含むデータグループ毎に、そのデータグループを構成する分割データ及びパリティデータからなるディスク毎記憶用データを上記複数のハードディスク装置に１つずつ記憶させることにより、上記記憶用データを上記ディスクアレイ装置に記憶させるデータ記憶処理手段を実現させるためのプログラムである。
【００１６】
更に、このディスクアレイ制御プログラムは、
上記ディスクアレイ制御装置に、
上記ハードディスク装置の状態が異常状態であることを検出する異常状態検出手段を実現させるとともに、
上記データ記憶処理手段は、上記パリティ数の上記ハードディスク装置の状態が異常状態であることが検出された場合、上記データグループ毎に、そのデータグループを構成する分割データを、上記複数のハードディスク装置のうちの当該異常状態にあるハードディスク装置以外のハードディスク装置に１つずつ記憶させるように構成される。
【発明の効果】
【００１７】
本発明は、以上のように構成されることにより、ハードディスク装置の状態が異常状態である場合において、ディスクアレイ装置から記憶用データを高速に読み出すことができる。
【発明を実施するための最良の形態】
【００１８】
本発明の一形態であるディスクアレイ制御装置は、
複数のハードディスク装置を備えるディスクアレイ装置に適用される。
更に、このディスクアレイ制御装置は、
入力された記憶用データを分割サイズ毎に分割した分割データを上記ハードディスク装置の数であるディスク装置数から予め設定されたパリティ数だけ減じた分割データ数だけ含み、且つ、当該分割データ数の分割データに基づいて生成されたパリティデータであって当該分割データ数の分割データから上記パリティ数だけ分割データを除いた残りの分割データから当該除かれた分割データを生成するためのパリティデータを当該パリティ数だけ含むデータグループ毎に、そのデータグループを構成する分割データ及びパリティデータからなるディスク毎記憶用データを上記複数のハードディスク装置に１つずつ記憶させることにより、上記記憶用データを上記ディスクアレイ装置に記憶させるデータ記憶処理手段を備える。
【００１９】
加えて、このディスクアレイ制御装置は、
上記ハードディスク装置の状態が異常状態であることを検出する異常状態検出手段を備える。
更に、
上記データ記憶処理手段は、上記パリティ数の上記ハードディスク装置の状態が異常状態であることが検出された場合、上記データグループ毎に、そのデータグループを構成する分割データを、上記複数のハードディスク装置のうちの当該異常状態にあるハードディスク装置以外のハードディスク装置に１つずつ記憶させるように構成される。
【００２０】
これによれば、パリティ数のハードディスク装置の状態が異常状態である場合において、ディスクアレイ装置に記憶されている記憶用データを読み出すとき、パリティデータ及び分割データに基づいて記憶用データを生成（復元）する復元処理を実行することなく、記憶用データを取得することができる。即ち、記憶用データの読み出し時に実行される処理の量を減少させることができる。この結果、ディスクアレイ装置から記憶用データを高速に読み出すことができる。
【００２１】
この場合、上記ディスクアレイ制御装置は、
上記ハードディスク装置の状態が異常状態であることが検出されていない場合に上記パリティデータを生成し、一方、上記パリティ数の上記ハードディスク装置の状態が異常状態であることが検出された場合に上記パリティデータを生成しないパリティデータ生成手段を備えることが好適である。
【００２２】
上述したディスクアレイ制御装置は、パリティ数のハードディスク装置の状態が異常状態である場合には、パリティデータをハードディスク装置に記憶させない。従って、この場合、上記構成のように、パリティデータを生成しないことにより、記憶用データをディスクアレイ装置（複数のハードディスク装置）に記憶させる（書き込む）時に実行される処理の量を減少させることができる。この結果、記憶用データをディスクアレイ装置に高速に書き込むことができる。
【００２３】
更に、この場合、上記ディスクアレイ制御装置は、
上記複数のハードディスク装置のうちの上記パリティデータが記憶されているハードディスク装置を上記データグループ毎に特定するパリティディスク特定手段と、
上記ハードディスク装置の状態が異常状態であることが検出された場合、上記データグループ毎に、上記特定されたハードディスク装置から上記パリティデータを読み出すとともに当該特定されたハードディスク装置及び上記異常状態にあるハードディスク装置以外のハードディスク装置から上記分割データを読み出し、且つ、当該読み出したパリティデータと当該読み出した分割データとに基づいて当該異常状態にあるハードディスク装置に記憶されていた分割データを復元することにより上記データグループ内のすべての分割データを取得する分割データ取得手段と、
を備えることが好適である。
【００２４】
これによれば、ディスクアレイ制御装置は、ハードディスク装置の状態が異常状態であることが検出された場合に、異常状態にあるハードディスク装置に記憶されていた分割データを復元する。この結果、異常状態にあるハードディスク装置が存在していても、記憶用データを読み出すことができる。
【００２５】
加えて、この場合、上記ディスクアレイ制御装置は、
上記ディスクアレイ装置に記憶されている上記データグループのそれぞれに対応付けられた情報であって、そのデータグループが上記パリティデータを含まないパリティ無データグループであるか否かを表す情報であるパリティ有無情報を記憶するパリティ有無情報記憶手段を備え、
上記分割データ取得手段は、上記パリティ数の上記ハードディスク装置の状態が異常状態であることが検出された場合、上記データグループ毎に、そのデータグループに対応付けて記憶されている上記パリティ有無情報がそのデータグループが上記パリティ無データグループであることを表すときには、上記異常状態にあるハードディスク装置以外のハードディスク装置から上記分割データを読み出すことにより当該データグループ内のすべての分割データを取得するように構成されることが好適である。
【００２６】
これによれば、分割データを、誤ってパリティデータとして取り扱うことを回避することができるので、記憶用データを確実に読み出すことができる。
【００２７】
また、上記ディスクアレイ制御装置のいずれかは、
上記異常状態にあるハードディスク装置が正常状態にあるハードディスク装置に交換された場合、上記データグループ毎に、その他のハードディスク装置が記憶している上記分割データ及び上記パリティデータに基づいて上記異常状態にあるハードディスク装置に記憶されていた分割データを復元し、当該復元した分割データと上記異常状態にあるハードディスク装置以外のハードディスク装置に記憶されていた分割データとに基づいてパリティデータを生成し、当該分割データ及び当該生成したパリティデータからなるディスク毎記憶用データを上記交換後のハードディスク装置を含む複数のハードディスク装置に１つずつ記憶させることにより、上記記憶用データを上記ディスクアレイ装置に記憶させるリビルド処理手段を備えることが好適である。
【００２８】
一方、本発明の他の形態であるディスクアレイ装置は、
複数のハードディスク装置を備えるとともに、
入力された記憶用データを分割サイズ毎に分割した分割データを上記ハードディスク装置の数であるディスク装置数からパリティ数だけ減じた分割データ数だけ含み、且つ、当該分割データ数の分割データに基づいて生成されたパリティデータであって当該分割データ数の分割データから上記パリティ数だけ分割データを除いた残りの分割データから当該除かれた分割データを生成するためのパリティデータを当該パリティ数だけ含むデータグループ毎に、そのデータグループを構成する分割データ及びパリティデータからなるディスク毎記憶用データを上記複数のハードディスク装置に１つずつ記憶させることにより、上記記憶用データを上記複数のハードディスク装置に記憶させるデータ記憶処理手段を備える。
【００２９】
更に、このディスクアレイ装置は、
上記ハードディスク装置の状態が異常状態であることを検出する異常状態検出手段を備える。
加えて、
上記データ記憶処理手段は、上記パリティ数の上記ハードディスク装置の状態が異常状態であることが検出された場合、上記データグループ毎に、そのデータグループを構成する分割データを、上記複数のハードディスク装置のうちの当該異常状態にあるハードディスク装置以外のハードディスク装置に１つずつ記憶させるように構成される。
【００３０】
この場合、上記ディスクアレイ装置は、
上記ハードディスク装置の状態が異常状態であることが検出されていない場合に上記パリティデータを生成し、一方、上記パリティ数の上記ハードディスク装置の状態が異常状態であることが検出された場合に上記パリティデータを生成しないパリティデータ生成手段を備えることが好適である。
【００３１】
一方、本発明の他の形態であるディスクアレイ制御方法は、
複数のハードディスク装置を備えるディスクアレイ装置を制御するために、
入力された記憶用データを分割サイズ毎に分割した分割データを上記ハードディスク装置の数であるディスク装置数からパリティ数だけ減じた分割データ数だけ含み、且つ、当該分割データ数の分割データに基づいて生成されたパリティデータであって当該分割データ数の分割データから上記パリティ数だけ分割データを除いた残りの分割データから当該除かれた分割データを生成するためのパリティデータを当該パリティ数だけ含むデータグループ毎に、そのデータグループを構成する分割データ及びパリティデータからなるディスク毎記憶用データを上記複数のハードディスク装置に１つずつ記憶させることにより、上記記憶用データを上記ディスクアレイ装置に記憶させる記憶用データ記憶処理工程を含む方法である。
【００３２】
更に、上記ディスクアレイ制御方法は、
上記ハードディスク装置の状態が異常状態であることを検出する異常状態検出工程を含む。
加えて、
上記記憶用データ記憶処理工程は、上記パリティ数の上記ハードディスク装置の状態が異常状態であることが検出された場合、上記データグループ毎に、そのデータグループを構成する分割データを、上記複数のハードディスク装置のうちの当該異常状態にあるハードディスク装置以外のハードディスク装置に１つずつ記憶させるように構成される。
【００３３】
この場合、上記ディスクアレイ制御方法は、
上記ハードディスク装置の状態が異常状態であることが検出されていない場合に上記パリティデータを生成し、一方、上記パリティ数の上記ハードディスク装置の状態が異常状態であることが検出された場合に上記パリティデータを生成しないパリティデータ生成工程を含むことが好適である。
【００３４】
一方、本発明の他の形態であるディスクアレイ制御プログラムは、
複数のハードディスク装置を備えるディスクアレイ装置を制御するディスクアレイ制御装置に、
入力された記憶用データを分割サイズ毎に分割した分割データを上記ハードディスク装置の数であるディスク装置数からパリティ数だけ減じた分割データ数だけ含み、且つ、当該分割データ数の分割データに基づいて生成されたパリティデータであって当該分割データ数の分割データから上記パリティ数だけ分割データを除いた残りの分割データから当該除かれた分割データを生成するためのパリティデータを当該パリティ数だけ含むデータグループ毎に、そのデータグループを構成する分割データ及びパリティデータからなるディスク毎記憶用データを上記複数のハードディスク装置に１つずつ記憶させることにより、上記記憶用データを上記ディスクアレイ装置に記憶させるデータ記憶処理手段を実現させるためのプログラムである。
【００３５】
更に、上記ディスクアレイ制御プログラムは、
上記ディスクアレイ制御装置に、
上記ハードディスク装置の状態が異常状態であることを検出する異常状態検出手段を実現させるとともに、
上記データ記憶処理手段は、上記パリティ数の上記ハードディスク装置の状態が異常状態であることが検出された場合、上記データグループ毎に、そのデータグループを構成する分割データを、上記複数のハードディスク装置のうちの当該異常状態にあるハードディスク装置以外のハードディスク装置に１つずつ記憶させるように構成される。
【００３６】
この場合、上記ディスクアレイ制御プログラムは、
更に、上記ディスクアレイ制御装置に、
上記ハードディスク装置の状態が異常状態であることが検出されていない場合に上記パリティデータを生成し、一方、上記パリティ数の上記ハードディスク装置の状態が異常状態であることが検出された場合に上記パリティデータを生成しないパリティデータ生成手段を実現させるためのプログラムである。
【００３７】
上述した構成を有する、ディスクアレイ装置、ディスクアレイ制御方法、又は、ディスクアレイ制御プログラムの発明であっても、上記ディスクアレイ制御装置と同様の作用を有するために、上述した本発明の目的を達成することができる。
【００３８】
以下、本発明に係る、ディスクアレイ制御装置、ディスクアレイ装置、ディスクアレイ制御方法、又は、ディスクアレイ制御プログラムの実施形態について図１〜図１１を参照しながら説明する。
【００３９】
＜実施形態＞
図１に示したように、実施形態に係るディスクアレイ装置１は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）を構成する装置である。ディスクアレイ装置１は、プロセッサ及びメモリ等を備えるホスト装置（外部装置）３０に接続されている。
【００４０】
ディスクアレイ装置１は、ディスクエンクロージャ１０と、ディスクアレイ制御装置（コントローラ）２０と、を備える。ディスクエンクロージャ１０は、複数（本例では、３個）のハードディスク装置（ハードディスクドライブ装置、ＨＤＤ）１０ａ〜１０ｃを有する。各ＨＤＤ１０ａ〜１０ｃは、状態確認信号（本例では、制御命令を含む信号）を受信すると、その状態確認信号の送信元のアダプタ（後述するディスクアダプタ）へ直ちに状態応答信号を送信する。なお、本明細書においては、ＨＤＤ１０ａは、ＨＤＤ＃０とも表記され、ＨＤＤ１０ｂは、ＨＤＤ＃１とも表記され、ＨＤＤ１０ｃは、ＨＤＤ＃２とも表記される。
【００４１】
コントローラ２０は、複数（本例では、２つ）のホストモジュール（ホストアダプタ）２１ａ，２１ｂと、複数（本例では、２つ）のディスクモジュール（ディスクアダプタ）２２ａ，２２ｂと、複数（本例では、４つ）のキャッシュモジュール２３ａ〜２３ｄと、複数（本例では、２つ）のスイッチ（切替器）２４ａ，２４ｂと、を含む。
【００４２】
ホストモジュール２１ａ，２１ｂ、ディスクモジュール２２ａ，２２ｂ、キャッシュモジュール２３ａ〜２３ｄ、及び、スイッチ２４ａ，２４ｂのそれぞれは、コントローラ２０の本体に着脱可能に装着されている。
【００４３】
各ホストモジュール２１ａ，２１ｂは、ホスト装置３０とキャッシュモジュール２３ａ〜２３ｄとの間のデータの授受を制御するモジュールである。各ホストモジュール２１ａ，２１ｂは、ホスト装置３０と接続されている。各ホストモジュール２１ａ，２１ｂは、スイッチ２４ａ，２４ｂのそれぞれと接続されている。各ホストモジュール２１ａ，２１ｂは、図示しないプロセッサとファームウェア等を記憶するメモリとを備える。各ホストモジュール２１ａ，２１ｂは、プロセッサがそのファームウェアを実行することにより、後述する機能を実現する。
【００４４】
各ディスクモジュール２２ａ，２２ｂは、ディスクエンクロージャ１０とキャッシュモジュール２３ａ〜２３ｄとの間のデータの授受を制御するモジュールである。各ディスクモジュール２２ａ，２２ｂは、ディスクエンクロージャ１０と接続されている。各ディスクモジュール２２ａ，２２ｂは、スイッチ２４ａ，２４ｂのそれぞれと接続されている。各ディスクモジュール２２ａ，２２ｂは、図示しないプロセッサとファームウェア等を記憶するメモリとを備える。各ディスクモジュール２２ａ，２２ｂは、プロセッサがそのファームウェアを実行することにより、後述する機能を実現する。
【００４５】
各キャッシュモジュール２３ａ〜２３ｄは、スイッチ２４ａ，２４ｂのそれぞれと接続されている。各キャッシュモジュール２３ａ〜２３ｄは、図示しないプロセッサとファームウェア等を記憶するメモリとキャッシュメモリとを備える。各キャッシュモジュール２３ａ〜２３ｄは、プロセッサがそのファームウェアを実行することにより、後述する機能を実現する。
【００４６】
各スイッチ２４ａ，２４ｂは、ホスト装置３０とディスクエンクロージャ１０との間の経路を切り替えるモジュールである。各スイッチ２４ａ，２４ｂは、図示しないサービスプロセッサからの接続指示情報に応じて、各ホストモジュール２１ａ，２１ｂと１つのキャッシュモジュール２３ａ〜２３ｄとを接続するとともに、各ディスクモジュール２２ａ，２２ｂと１つのキャッシュモジュール２３ａ〜２３ｄとを接続する。
【００４７】
ところで、ホスト装置３０は、書込要求情報又は読出要求情報をディスクアレイ装置１へ送る（出力する）。
書込要求情報は、書込データと、論理領域における書込領域を表す書込領域情報と、を含み、書込データをその書込領域にてＨＤＤ１０ａ〜１０ｃに書き込む（書き出す）ことを要求する旨を表す情報である。また、読出要求情報は、論理領域内の読出領域を表す読出領域情報を含み、その読出領域にてＨＤＤ１０ａ〜１０ｃに記憶されているデータ（情報）を読み込む（読み出す）ことを要求する旨を表す情報である。
【００４８】
各ホストモジュール２１ａ，２１ｂは、ホスト装置３０からの書込要求情報を受け取る。各ホストモジュール２１ａ，２１ｂは、受け取った書込要求情報を、スイッチ２４ａ，２４ｂにより接続されたキャッシュモジュール２３ａ〜２３ｄへ送る。
【００４９】
各キャッシュモジュール２３ａ〜２３ｄは、ホストモジュール２１ａ，２１ｂから書込要求情報を受け取る。各キャッシュモジュール２３ａ〜２３ｄは、受け取った書込要求情報をキャッシュメモリに記憶させる。各キャッシュモジュール２３ａ〜２３ｄは、受け取った書込要求情報の記憶が完了すると、書込完了情報をホストモジュール２１ａ，２１ｂへ送る。
【００５０】
各ディスクモジュール２２ａ，２２ｂは、予め設定されたタイミングにて（例えば、予め設定された時間が経過する毎に）、キャッシュメモリに記憶されている書込要求情報を読み出す。
【００５１】
各ディスクモジュール２２ａ，２２ｂは、読み出した書込要求情報に含まれる書込データを、その書込要求情報に含まれる書込領域情報に応じた領域にてＨＤＤ１０ａ〜１０ｃに記憶させる（書き込む）。このとき、ＨＤＤ１０ａ〜１０ｃのいずれの状態も正常状態である場合、各ディスクモジュール２２ａ，２２ｂは、ＲＡＩＤ５方式を用いる。一方、ＨＤＤ１０ａ〜１０ｃのいずれかの状態が異常状態である場合、各ディスクモジュール２２ａ，２２ｂは、ＲＡＩＤ０方式を用いる。
ディスクモジュール２２ａ，２２ｂのこの機能については後述する。
【００５２】
更に、各ディスクモジュール２２ａ，２２ｂは、読み出した書込要求情報をキャッシュメモリから消去する。即ち、キャッシュメモリは、ホスト装置３０とＨＤＤ１０ａ〜１０ｃとの間で授受されるデータを一時的に記憶している、と言うことができる。
【００５３】
一方、各ホストモジュール２１ａ，２１ｂは、ホスト装置３０からの読出要求情報を受け取る。各ホストモジュール２１ａ，２１ｂは、受け取った読出要求情報を、スイッチ２４ａ，２４ｂにより接続されたキャッシュモジュール２３ａ〜２３ｄへ送る。
【００５４】
各キャッシュモジュール２３ａ〜２３ｄは、ホストモジュール２１ａ，２１ｂから読出要求情報を受け取る。各キャッシュモジュール２３ａ〜２３ｄは、受け取った読出要求情報をディスクモジュール２２ａ，２２ｂへ送る。
【００５５】
各ディスクモジュール２２ａ，２２ｂは、各キャッシュモジュール２３ａ〜２３ｄから読出要求情報を受け取ると、その読出要求情報に含まれる読出領域情報に応じた領域にてＨＤＤ１０ａ〜１０ｃに記憶されているデータをＨＤＤ１０ａ〜１０ｃから読み出す。ディスクモジュール２２ａ，２２ｂのこの機能については後述する。
そして、各ディスクモジュール２２ａ，２２ｂは、読み出した読出データと読出領域情報とを含む被読出情報をキャッシュモジュール２３ａ〜２３ｄへ送る。
【００５６】
各キャッシュモジュール２３ａ〜２３ｄは、受け取った被読出情報をホストモジュール２１ａ，２１ｂへ送る。更に、ホストモジュール２１ａ，２１ｂは、キャッシュモジュール２３ａ〜２３ｄから被読出情報を受け取ると、受け取った被読出情報をホスト装置３０へ送る。
【００５７】
次に、各ディスクモジュール２２ａ，２２ｂが書込データをＨＤＤ１０ａ〜１０ｃに記憶させる機能、及び、各ディスクモジュール２２ａ，２２ｂがＨＤＤ１０ａ〜１０ｃに記憶されているデータを読み出す機能について、詳細に説明する。
【００５８】
上記機能は、図２にブロック図により示したように、異常状態検出部（異常状態検出手段）４１と、記憶用データ取得部４２と、分割データ生成部４３と、パリティデータ生成部（パリティデータ生成手段）４４と、データ記憶処理部（データ記憶処理手段）４５と、データ配置情報記憶部４６と、パリティ有無情報記憶部（パリティ有無情報記憶手段）４７と、読出要求情報受付部４８と、分割データ取得部（分割データ取得手段）４９と、を含む。
【００５９】
異常状態検出部４１は、状態確認信号をＨＤＤ１０ａ〜１０ｃのそれぞれへ送る。異常状態検出部４１は、状態確認信号を送信してから所定の待機時間が経過するまでの間にそのＨＤＤ１０ａ〜１０ｃから状態確認信号に応じた状態応答信号を受信しなかった場合、そのＨＤＤ１０ａ〜１０ｃの状態が異常状態であることを検出する。異常状態検出部４１は、ＨＤＤ１０ａ〜１０ｃの状態が異常状態であることを検出した場合、異常状態にあるＨＤＤ１０ａ〜１０ｃを表す異常ディスク装置情報をパリティデータ生成部４４及びデータ記憶処理部４５のそれぞれへ送る。
【００６０】
記憶用データ取得部４２は、予め設定されたタイミングにて、接続されたキャッシュモジュール２３ａ〜２３ｄ内のキャッシュメモリに記憶されている書込要求情報を読み出す。記憶用データ取得部４２は、読み出した書込要求情報に含まれる書込データを記憶用データとして取得する（即ち、記憶用データを入力する）。そして、記憶用データ取得部４２は、取得した記憶用データを分割データ生成部４３へ送る。更に、記憶用データ取得部４２は、読み出した書込要求情報に含まれる書込領域情報をデータ記憶処理部４５へ送る。
【００６１】
分割データ生成部４３は、記憶用データ取得部４２から記憶用データを受け取ると、受け取った記憶用データを予め設定された分割サイズ（本例では、４ＭＢ（Ｍｅｇａ  Ｂｙｔｅ））毎に分割することにより複数の分割データを生成する。例えば、記憶用データのサイズ（データ量）が２４ＭＢである場合には、６つの分割データが生成される。
【００６２】
分割データ生成部４３は、生成した分割データを分割データ数ずつ分けることにより、分割データ数の分割データを含むデータグループを生成する。ここで、分割データ数は、ハードディスク装置１０ａ〜１０ｃの数であるディスク装置数（本例では、３つ）から予め設定されたパリティ数（本例では、１つ）だけ減じた数（本例では、２つ）である。従って、上述した６つの分割データが生成された場合には、３つのデータグループが生成される。そして、分割データ生成部４３は、生成したデータグループをパリティデータ生成部４４及びデータ記憶処理部４５のそれぞれへ送る。
【００６３】
パリティデータ生成部４４は、分割データ生成部４３からデータグループを受け取る。パリティデータ生成部４４は、異常状態検出部４１から異常ディスク装置情報を受け取っていない場合、上記受け取ったデータグループ毎に、そのデータグループに含まれる分割データの排他的論理和をパリティデータとして生成する。即ち、パリティデータは、分割データ数の分割データからパリティ数だけ任意の分割データを除いた残りの分割データと、パリティデータと、から、その除かれた分割データを生成（復元）することができるデータである。そして、パリティデータ生成部４４は、生成したパリティデータをデータ記憶処理部４５へ送る。
一方、異常状態検出部４１から異常ディスク装置情報を受け取った場合、パリティデータ生成部４４は、パリティデータを生成しない。
【００６４】
また、データ記憶処理部４５は、異常状態検出部４１から異常ディスク装置情報を受け取っていない場合、分割データ生成部４３からデータグループを受け取るとともに、パリティデータ生成部４４からパリティデータを受け取る。データ記憶処理部４５は、受け取ったデータグループのそれぞれに、受け取ったパリティデータであってそのデータグループに対応するパリティデータを追加することによりデータグループを更新する。
【００６５】
データ配置情報記憶部４６は、図３に示したように、ブロックアドレス情報と、ハードディスク装置情報と、データ種別情報と、を対応付けたデータ配置情報をメモリに記憶させている。ブロックアドレス情報は、１つのＨＤＤ１０ａ〜１０ｃが有する記憶領域を分割サイズ毎に分割した分割記憶領域を表す情報である。ブロックアドレス情報は、ＢＡ＃０、ＢＡ＃１、ＢＡ＃２、・・・と表記される。
【００６６】
ハードディスク装置情報は、ＨＤＤ１０ａ〜１０ｃの１つを特定する情報である。ハードディスク装置情報は、ＨＤＤ＃０、ＨＤＤ＃１又はＨＤＤ＃２と表記される。データ種別情報は、ＨＤＤ１０ａ〜１０ｃに記憶されるデータの種別（種類）を表す情報である。データ種別情報は、「ｐ」、「ｄａ」又は「ｄｂ」と表記される。「ｐ」は、パリティデータを表す。「ｄａ」及び「ｄｂ」のそれぞれは、分割データを表す。「ｄａ」は、元の記憶用データにて「ｄｂ」よりも先頭側に配置されていることを表す。
【００６７】
データ記憶処理部４５は、記憶用データ取得部４２からの書込領域情報に基づいて、上記更新したデータグループを記憶させる分割記憶領域をデータグループ毎に決定する。データ記憶処理部４５は、決定した分割記憶領域を表すブロックアドレス情報と、データ配置情報記憶部４６が記憶しているデータ配置情報と、に基づいて、そのブロックアドレス情報に対応付けられたハードディスク装置情報及びデータ種別情報の組を取得する。
【００６８】
データ記憶処理部４５は、データグループ毎に、取得したハードディスク装置情報及びデータ種別情報の組に基づいて、そのデータグループを構成する分割データ及びパリティデータからなるディスク毎記憶用データを上記決定した分割記憶領域にてＨＤＤ１０ａ〜１０ｃに１つずつ記憶させる。
【００６９】
一方、異常状態検出部４１から異常ディスク装置情報を受け取った場合、データ記憶処理部４５は、記憶用データ取得部４２からの書込領域情報に基づいて、受け取ったデータグループを記憶させる分割記憶領域をデータグループ毎に決定する。データ記憶処理部４５は、受け取ったデータグループ毎に、そのデータグループを構成する分割データを、上記決定した分割記憶領域にて、ＨＤＤ１０ａ〜１０ｃのうちの異常ディスク装置情報が表す異常状態にあるＨＤＤ以外のＨＤＤに１つずつ記憶させる。
更に、データ記憶処理部４５は、上記決定した分割記憶領域を表すブロックアドレス情報と異常ディスク装置情報との組をパリティ有無情報記憶部４７へ送る。
【００７０】
パリティ有無情報記憶部４７は、図４に示したように、ブロックアドレス情報と、パリティ有無情報と、を対応付けてメモリに記憶させている。パリティ有無情報は、対応付けられたブロックアドレス情報が表す分割記憶領域にて記憶されているデータグループがパリティデータを含まない（即ち、分割データ数の分割データのみを含む）パリティ無データグループであるか否かを表す情報である。
【００７１】
パリティ有無情報記憶部４７は、コントローラ２０の初期化時にすべてのパリティ有無情報を初期値（本例では、「０」）に設定する。パリティ有無情報記憶部４７は、データ記憶処理部４５から、ブロックアドレス情報と異常ディスク装置情報との組を受け取ると、受け取ったブロックアドレス情報に対応付けて記憶しているパリティ有無情報を受け取った異常ディスク装置情報に更新する。
【００７２】
即ち、初期値以外の情報を有するパリティ有無情報に対応付けられたブロックアドレス情報が表す分割記憶領域において記憶されているデータグループは、パリティ無データグループである、と言うことができる。
【００７３】
一方、読出要求情報受付部４８は、各キャッシュモジュール２３ａ〜２３ｄから読出要求情報を受け取ると、受け取った読出要求情報を分割データ取得部４９へ送る。
【００７４】
分割データ取得部４９は、データ読出部４９ａと、分割データ復元部４９ｂと、を含む。
データ読出部４９ａは、読出要求情報受付部４８からの読出要求情報に含まれる読出領域情報に基づいて、データグループを読み出す対象となる分割記憶領域を決定する。データ読出部４９ａは、決定した分割記憶領域を表すブロックアドレス情報と対応付けてパリティ有無情報記憶部４７に記憶されているパリティ有無情報を取得する。
【００７５】
データ読出部４９ａは、取得したパリティ有無情報が初期値である場合、そのパリティ有無情報に対応する分割記憶領域を表すブロックアドレス情報と、データ配置情報記憶部４６が記憶しているデータ配置情報と、に基づいて、そのブロックアドレス情報に対応付けられたハードディスク装置情報及びデータ種別情報の組を取得する。
【００７６】
そして、データ読出部４９ａは、分割記憶領域毎に、取得したハードディスク装置情報及びデータ種別情報の組に基づいて、その分割記憶領域にて記憶されているディスク毎記憶用データ（分割データ及びパリティデータ）をＨＤＤ１０ａ〜１０ｃのそれぞれから読み出す。次いで、データ読出部４９ａは、読み出した分割データ及びパリティデータからなるデータグループを分割データ復元部４９ｂへ送る。
【００７７】
分割データ復元部４９ｂは、データ読出部４９ａから受け取ったデータグループに含まれる分割データ及びパリティデータに基づいて分割データを訂正する（パリティデータに基づいて分割データの誤り訂正を行う）。従って、分割データ復元部４９ｂは、１つのＨＤＤ１０ａ〜１０ｃからデータを読み出せなかった場合、その読み出せなかった分割データを生成（復元）する。分割データ取得部４９は、データ読出部４９ａが読み出した分割データ及び分割データ復元部４９ｂにより訂正された分割データに基づいて記憶用データを生成する。
【００７８】
データ読出部４９ａは、取得したパリティ有無情報が初期値でなかった場合、そのパリティ有無情報に対応する分割記憶領域にて、そのパリティ有無情報が表す異常状態にあるＨＤＤ１０ａ〜１０ｃ以外のＨＤＤ１０ａ〜１０ｃが記憶している分割データを読み出す。分割データ取得部４９は、データ読出部４９ａが読み出した分割データに基づいて記憶用データを生成する。
【００７９】
分割データ取得部４９は、生成した記憶用データを読出データとして取得する。更に、分割データ取得部４９は、取得した読出データと読出領域情報とを含む被読出情報をキャッシュモジュール２３ａ〜２３ｄへ送る。
【００８０】
次に、上述したディスクモジュール２２ａ，２２ｂの作動についてより具体的に述べる。
各ディスクモジュール２２ａ，２２ｂのプロセッサは、図５にフローチャートにより示した書込処理プログラムを、予め設定された時間が経過する毎に実行する。なお、図５のプログラムの処理が実行されることは、データ記憶処理工程、異常状態検出工程、及び、パリティデータ生成工程の機能が達成されることに対応している。
【００８１】
具体的に述べると、プロセッサは、書込処理プログラムの処理を開始すると、ステップ５０５にて、接続されたキャッシュモジュール２３ａ〜２３ｄ内のキャッシュメモリから書込要求情報（記憶用データ）を取得するための制御信号をそのキャッシュモジュール２３ａ〜２３ｄへ送る。そして、プロセッサは、その制御信号に応じてキャッシュモジュール２３ａ〜２３ｄから書込要求情報を取得したか否かを判定する。
【００８２】
いま、ブロックアドレス情報ＢＡ＃０〜ＢＡ＃２が表す分割記憶領域のそれぞれにて、データグループＤＧ＃０〜ＤＧ＃２が記憶されている状態において、コントローラ２０が書込要求情報を新たにホスト装置３０から受け取った場合を想定して説明を続ける。この書込要求情報は、２４ＭＢのデータ量の記憶用データＷＤ２を書込データとして含み、且つ、ブロックアドレス情報ＢＡ＃３〜ＢＡ＃５に対応する書込領域情報を含む。
【００８３】
この状態においては、図６に示したように、ブロックアドレス情報ＢＡ＃０が表す分割記憶領域にて、分割データＤ０ａがＨＤＤ＃０に記憶され、分割データＤ０ｂがＨＤＤ＃１に記憶され、パリティデータＰ０がＨＤＤ＃２に記憶されている。分割データＤ０ａ，Ｄ０ｂ及びパリティデータＰ０は、データグループ＃０を構成している。
【００８４】
同様に、ブロックアドレス情報ＢＡ＃１が表す分割記憶領域にて、分割データＤ１ｂがＨＤＤ＃０に記憶され、パリティデータＰ１がＨＤＤ＃１に記憶され、分割データＤ１ａがＨＤＤ＃２に記憶されている。分割データＤ１ａ，Ｄ１ｂ及びパリティデータＰ１は、データグループ＃１を構成している。
【００８５】
同様に、ブロックアドレス情報ＢＡ＃２が表す分割記憶領域にて、パリティデータＰ２がＨＤＤ＃０に記憶され、分割データＤ２ａがＨＤＤ＃１に記憶され、分割データＤ２ｂがＨＤＤ＃２に記憶されている。分割データＤ２ａ，Ｄ２ｂ及びパリティデータＰ２は、データグループ＃２を構成している。
【００８６】
また、分割データＤ０ａ，Ｄ０ｂ，Ｄ１ａ，Ｄ１ｂ，Ｄ２ａ，Ｄ２ｂを、この順に並べて連結（接続）したデータは、記憶用データＷＤ１を構成している。
【００８７】
上記仮定に従えば、プロセッサは、ステップ５０５にて、「Ｙｅｓ」と判定してステップ５１０に進む。そして、プロセッサは、上記ステップ５０５にて取得した書込要求情報に含まれる記憶用データＷＤ２を分割サイズ（本例では、４ＭＢ）毎に分割することにより６個の分割データＤ３ａ〜Ｄ５ｂを生成する。
【００８８】
次いで、プロセッサは、ステップ５１５にて、状態確認信号をＨＤＤ＃０〜＃２のそれぞれへ送る。そして、プロセッサは、状態確認信号を送信してから所定の待機時間が経過するまでの間にそのＨＤＤ＃０〜＃２から状態確認信号に応じた状態応答信号を受信したか否かを判定する。
【００８９】
いま、いずれのＨＤＤ＃０〜＃２の状態も正常状態である（異常状態でない）場合を想定して説明を続ける。
この場合、プロセッサは、ステップ５１５にて、すべてのＨＤＤ＃０〜＃２から状態確認信号に応じた状態応答信号を受信する。従って、プロセッサは、「Ｎｏ」と判定してステップ５２０に進む。
【００９０】
そして、プロセッサは、上記ステップ５１０にて生成された分割データＤ３ａ〜Ｄ５ｂに基づいてパリティデータＰ３〜Ｐ５を生成する。具体的には、プロセッサは、分割データＤ３ａ及び分割データＤ３ｂの排他的論理和をパリティデータＰ３として求める。同様に、プロセッサは、分割データＤ４ａ及び分割データＤ４ｂの排他的論理和をパリティデータＰ４として求め、分割データＤ５ａ及び分割データＤ５ｂの排他的論理和をパリティデータＰ５として求める。
【００９１】
分割データＤ３ａ、分割データＤ３ｂ及びパリティデータＰ３は、データグループＤＧ＃３を構成している。同様に、分割データＤ４ａ、分割データＤ４ｂ及びパリティデータＰ４は、データグループＤＧ＃４を構成し、分割データＤ５ａ、分割データＤ５ｂ及びパリティデータＰ５は、データグループＤＧ＃５を構成している。
【００９２】
次いで、プロセッサは、ステップ５２５にて、上記ステップ５０５にて取得された書込要求情報に含まれる書込領域情報に基づいて、記憶用データＷＤ２を記憶させる分割記憶領域を決定する。上記仮定に従えば、この分割記憶領域は、ブロックアドレス情報ＢＡ＃３〜ＢＡ＃５が表す領域である。
【００９３】
そして、プロセッサは、決定した分割記憶領域を表すブロックアドレス情報ＢＡ＃３〜ＢＡ＃５と、メモリに記憶されているデータ配置情報（図３を参照）と、に基づいて、そのブロックアドレス情報ＢＡ＃３〜ＢＡ＃５に対応付けられたハードディスク装置情報及びデータ種別情報の組を取得する。
【００９４】
更に、プロセッサは、データグループＤＧ＃３〜ＤＧ＃５毎に、取得したハードディスク装置情報及びデータ種別情報の組に基づいて、そのデータグループを構成する分割データ及びパリティデータからなるディスク毎記憶用データを上記決定した分割記憶領域にてＨＤＤ＃０〜＃２に１つずつ記憶させる（書き込む）。
そして、プロセッサは、ステップ５９９に進んでこのプログラムを一旦終了する。
【００９５】
これにより、図７に示したように、ブロックアドレス情報ＢＡ＃３〜ＢＡ＃５が表す分割記憶領域のそれぞれにて、データグループＤＧ＃３〜ＤＧ＃５が記憶される。
【００９６】
次に、図６に示したように、ブロックアドレス情報ＢＡ＃０〜ＢＡ＃２が表す分割記憶領域のそれぞれにて、データグループＤＧ＃０〜ＤＧ＃２が記憶されている状態において、ＨＤＤ＃１の状態が異常状態となった場合であって、コントローラ２０が上述した場合と同様の書込要求情報を新たにホスト装置３０から受け取った場合を想定して説明を続ける。
【００９７】
この場合、プロセッサが図５の書込処理プログラムを実行することにより、ステップ５１５に進んだとき、プロセッサは、ＨＤＤ＃０，＃２から状態確認信号に応じた状態応答信号を受信する。一方、プロセッサは、上記待機時間内にＨＤＤ＃１から状態確認信号に応じた状態応答信号を受信しない。従って、プロセッサは、「Ｙｅｓ」と判定してステップ５３０に進む。
【００９８】
プロセッサは、上記ステップ５０５にて取得された書込要求情報に含まれる書込領域情報に基づいて、記憶用データＷＤ２を記憶させる分割記憶領域を決定する。上記仮定に従えば、この分割記憶領域は、ブロックアドレス情報ＢＡ＃３〜ＢＡ＃５が表す領域である。
【００９９】
そして、プロセッサは、データグループＤＧ＃３〜ＤＧ＃５毎に、そのデータグループＤＧ＃３〜ＤＧ＃５を構成する分割データＤ３ａ〜Ｄ５ｂを、上記決定した分割記憶領域にて、ＨＤＤ＃０〜＃２のうちの異常状態にあるＨＤＤ＃１以外のＨＤＤ＃０，＃２に１つずつ記憶させる。
【０１００】
これにより、図８に示したように、ブロックアドレス情報ＢＡ＃３〜ＢＡ＃５が表す分割記憶領域のそれぞれにて、分割データＤ３ａ〜Ｄ５ｂのみを含む（即ち、パリティデータを含まない）データグループＤＧ＃３〜ＤＧ＃５がＨＤＤ＃０，＃２に記憶される。
【０１０１】
これによれば、パリティ数（本例では、１つ）のＨＤＤの状態が異常状態である場合において、ディスクアレイ装置１に記憶されている記憶用データを読み出すとき、パリティデータ及び分割データに基づいて記憶用データを生成（復元）する復元処理を実行することなく、記憶用データを取得することができる。即ち、記憶用データの読み出し時に実行される処理の量を減少させることができる。この結果、ディスクアレイ装置１から記憶用データを高速に読み出すことができる。
【０１０２】
更に、この場合、コントローラ２０は、パリティデータを生成しない。これにより、記憶用データをディスクアレイ装置１（ＨＤＤ１０ａ〜１０ｃ）に記憶させる（書き込む）時に実行される処理の量を減少させることができる。この結果、記憶用データをディスクアレイ装置１に高速に書き込むことができる。
【０１０３】
次いで、プロセッサは、ステップ５３５にて、メモリにてブロックアドレス情報ＢＡ＃３〜ＢＡ＃５に対応付けて記憶されているパリティ有無情報を、異常状態にあるＨＤＤを表す異常ディスク装置情報（ここでは、「ＨＤＤ＃１」）に設定（更新）する（図９を参照）。
そして、プロセッサは、ステップ５９９に進んでこのプログラムを一旦終了する。
【０１０４】
なお、キャッシュモジュール２３ａ〜２３ｄ内のキャッシュメモリが書込要求情報を記憶していない場合、プロセッサは、ステップ５０５にて「Ｎｏ」と判定してステップ５９９に直接進んでこのプログラムを一旦終了する。
【０１０５】
一方、各ディスクモジュール２２ａ，２２ｂのプロセッサは、図１０にフローチャートにより示した読出処理プログラムをコントローラ２０の起動時に実行する。なお、図１０のプログラムの処理が実行されることは、分割データ取得手段の機能が達成されることに対応している。
【０１０６】
具体的に述べると、プロセッサは、読出処理プログラムの処理を開始すると、ステップ１００５にて、接続されたキャッシュモジュール２３ａ〜２３ｄから読出要求情報を受け取るまで待機する。
【０１０７】
いま、図８に示したように、パリティデータＰ０〜Ｐ２と分割データＤ０ａ〜Ｄ２ｂを含むデータグループＤＧ＃０〜ＤＧ＃２がブロックアドレス情報ＢＡ＃０〜ＢＡ＃２が表す分割記憶領域にて記憶された後に、ＨＤＤ＃１の状態が異常状態となった場合を想定する。更に、この場合において、分割データＤ３ａ〜Ｄ５ｂのみを含むデータグループＤＧ＃３〜ＤＧ＃５がブロックアドレス情報ＢＡ＃３〜ＢＡ＃５が表す分割記憶領域にて記憶されている状態を想定する。即ち、各ディスクモジュール２２ａ，２２ｂのメモリには、図９に示したように、ブロックアドレス情報とパリティ有無情報とが対応付けて記憶されている。
【０１０８】
加えて、この状態において、ホスト装置３０からディスクアレイ装置１へ読出要求情報が送られた場合を想定して説明を続ける。この読出要求情報は、ブロックアドレス情報ＢＡ＃０〜ＢＡ＃２に対応する読出領域情報を含む。
【０１０９】
この場合、プロセッサは、接続されたキャッシュモジュール２３ａ〜２３ｄから読出要求情報を受け取る。従って、プロセッサは、ステップ１００５にて「Ｙｅｓ」と判定してステップ１０１０に進む。
【０１１０】
そして、プロセッサは、上記ステップ１００５にて受け取った読出要求情報に含まれる読出領域情報に基づいて、データグループを読み出す対象となる分割記憶領域を決定する。次いで、プロセッサは、決定した分割記憶領域を表すブロックアドレス情報ＢＡ＃０〜ＢＡ＃２と対応付けてメモリに記憶されているパリティ有無情報を取得する。
【０１１１】
次いで、プロセッサは、ステップ１０１５にて、上記ステップ１０１０にて取得されたパリティ有無情報が初期値と異なる（即ち、その分割記憶領域に記憶されているデータブロックがパリティデータを含まないパリティ無データグループである）か否かを判定する。
【０１１２】
上記仮定に従えば、上記ステップ１０１０にて取得されたパリティ有無情報は初期値である。従って、プロセッサは、「Ｎｏ」と判定してステップ１０２０に進む。
次いで、プロセッサは、上記ブロックアドレス情報ＢＡ＃０〜ＢＡ＃２と、メモリに記憶されているデータ配置情報（図３を参照）と、に基づいて、そのブロックアドレス情報ＢＡ＃０〜ＢＡ＃２に対応付けられたハードディスク装置情報及びデータ種別情報の組を取得する。なお、この処理は、複数のＨＤＤのうちのパリティデータが記憶されているＨＤＤをデータグループ毎に特定するパリティディスク特定手段に対応している。
【０１１３】
更に、プロセッサは、ブロックアドレス情報ＢＡ＃０〜ＢＡ＃２が表す分割記憶領域毎に、取得したハードディスク装置情報及びデータ種別情報の組に基づいて、その分割記憶領域にて記憶されているディスク毎記憶用データ（分割データ及びパリティデータ）をＨＤＤ＃０〜＃２のそれぞれから読み出す。
【０１１４】
ところで、この状態においては、ＨＤＤ＃１からデータを読み出すことはできない。従って、プロセッサは、上記ステップ１０２０にて、分割データＤ０ａ及びパリティデータＰ０からなるデータグループＤＧ＃０と、分割データＤ１ａ及び分割データＤ１ｂからなるデータグループＤＧ＃１と、分割データＤ２ｂ及びパリティデータＰ２からなるデータグループＤＧ＃２と、を取得する。
【０１１５】
そして、プロセッサは、ステップ１０２５にて、上記ステップ１０２０にて読み出した分割データ及びパリティデータに基づいてデータグループ毎に分割データを訂正する（パリティデータに基づいて分割データの誤り訂正を行う）。従って、プロセッサは、分割データＤ０ａ及びパリティデータＰ０に基づいて分割データＤ０ｂを生成（復元）し、分割データＤ２ｂ及びパリティデータＰ２に基づいて分割データＤ２ａを生成する。これにより、各データグループＤＧ＃０〜ＤＧ＃２内のすべての分割データＤ０ａ〜Ｄ２ｂが取得される。
【０１１６】
このように、コントローラ２０は、ＨＤＤ１０ａ〜１０ｃの状態が異常状態であることが検出された場合に、異常状態にあるＨＤＤ１０ａ〜１０ｃ（ここでは、ＨＤＤ１０ｂ）に記憶されていた分割データＤ０ｂ，Ｄ２ａを復元する。この結果、後述するように、異常状態にあるＨＤＤ１０ｂが存在していても、記憶用データＷＤ１を読み出すことができる。
【０１１７】
次いで、プロセッサは、ステップ１０３０にて、上記ステップ１０２０にて読み出した分割データ及び上記ステップ１０２５にて生成した分割データを連結することにより記憶用データＷＤ１を生成する。
【０１１８】
そして、プロセッサは、ステップ１０３５にて、上記ステップ１０３０にて生成された記憶用データＷＤ１を読出データとして含む被読出情報を、接続されたキャッシュモジュール２３ａ〜２３ｄのキャッシュメモリに記憶させる。
その後、プロセッサは、ステップ１００５へ戻る。
【０１１９】
次に、この状態において、ホスト装置３０からディスクアレイ装置１へ、ブロックアドレス情報ＢＡ＃３〜ＢＡ＃５に対応する読出領域情報を含む読出要求情報が送られた場合を想定して説明を続ける。
【０１２０】
ブロックアドレス情報ＢＡ＃３〜ＢＡ＃５に対応付けてメモリに記憶されているパリティ有無情報は、異常ディスク装置情報「ＨＤＤ＃１」である。
従って、この場合、プロセッサが図１０の読出処理プログラムを実行することにより、ステップ１０１５に進んだとき、プロセッサは、「Ｙｅｓ」と判定してステップ１０４０に進む。
【０１２１】
そして、プロセッサは、ブロックアドレス情報ＢＡ＃３〜ＢＡ＃５が表す分割記憶領域毎に、上記ステップ１０１０にて取得されたパリティ有無情報が表す異常状態にあるＨＤＤ＃１以外のＨＤＤ＃０，＃２が記憶している分割データを読み出す。
【０１２２】
これによれば、分割データを、誤ってパリティデータとして取り扱うことを回避することができるので、記憶用データを確実に読み出すことができる。
【０１２３】
そして、プロセッサは、ステップ１０３０以降のステップに進んで、読み出した分割データＤ３ａ〜Ｄ５ｂに基づいて記憶用データＷＤ２を生成するとともに、記憶用データＷＤ２を読出データとして含む被読出情報を、接続されたキャッシュモジュール２３ａ〜２３ｄのキャッシュメモリに記憶させた後、ステップ１００５へ戻る。
【０１２４】
一方、各ディスクモジュール２２ａ，２２ｂのプロセッサは、図１１にフローチャートにより示したリビルド処理プログラムをコントローラ２０の起動時に実行する。なお、図１１のプログラムの処理が実行されることは、リビルド処理手段の機能が達成されることに対応している。
【０１２５】
具体的に述べると、プロセッサは、リビルド処理プログラムの処理を開始すると、ステップ１１０５にて、接続されたキャッシュモジュール２３ａ〜２３ｄからリビルド要求情報を受け取るまで待機する。
【０１２６】
いま、異常状態にあったＨＤＤ＃１を正常状態にあるＨＤＤ＃１ａに交換した後に、ホスト装置３０からコントローラ２０へリビルド要求情報が送られた場合を想定して説明を続ける。
【０１２７】
この場合、ホストモジュール２１ａ，２１ｂからリビルド要求情報を受け取ったキャッシュモジュール２３ａ〜２３ｄは、ディスクモジュール２２ａ，２２ｂへリビルド要求情報を送る。
【０１２８】
従って、プロセッサは、「Ｙｅｓ」と判定してステップ１１１０に進み、ＨＤＤ＃０〜＃２内のすべての分割記憶領域を表すブロックアドレス情報のリストを作成する。
次いで、プロセッサは、ステップ１１１５にて、リスト内にブロックアドレス情報が存在しているか否かを判定する。この状態においては、リスト内にブロックアドレス情報が存在している。
【０１２９】
従って、プロセッサは、「Ｙｅｓ」と判定してステップ１１２０に進み、リストの先頭からブロックアドレス情報を１つ取得して、取得したブロックアドレス情報をリストから削除する。
【０１３０】
次いで、プロセッサは、ステップ１１２５にて、図１０の読出処理プログラムと同様のプログラムを実行する。即ち、プロセッサは、ブロックアドレス情報が表す分割記憶領域からデータグループを読み出す。次いで、プロセッサは、このデータグループがパリティデータを含む場合、ＨＤＤ＃１に記憶されていた分割データを復元する。
【０１３１】
そして、プロセッサは、ステップ１１３０にて、図５の書込処理プログラムと同様のプログラムを実行する。即ち、プロセッサは、上記読み出した分割データ及び上記復元した分割データに基づいてパリティデータを生成する。そして、プロセッサは、分割データ及びパリティデータからなるディスク毎記憶用データを上記分割記憶領域にてＨＤＤ＃０，＃１ａ，＃２に１つずつ記憶させる。
【０１３２】
そして、プロセッサは、ステップ１１１５に戻り、ステップ１１２０〜ステップ１１３０の処理をリスト内にブロックアドレス情報が存在しなくなるまで繰り返し実行する。
【０１３３】
その後、リスト内にブロックアドレス情報が存在しなくなると、プロセッサは、メモリに記憶されているパリティ有無情報をすべて初期値に設定した後、ステップ１１９９に進んで、このプログラムを終了する。
【０１３４】
これにより、すべての分割記憶領域にてパリティデータを含むデータグループが記憶される。この結果、ＨＤＤ＃０，＃１ａ，＃２のいずれか１つの状態が異常状態となっても、そのＨＤＤに記憶されていた分割データを復元することができる。
【０１３５】
以上、説明したように、本発明によるディスクアレイ制御装置の実施形態によれば、ＨＤＤ１０ａ〜１０ｃの状態が異常状態である場合において、ディスクアレイ装置１から記憶用データを高速に読み出すことができる。
【０１３６】
なお、本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記実施形態においては、ＨＤＤの数（ディスク装置数）は、３つであったが、４つ以上であってもよい。
【０１３７】
また、上記実施形態は、ＨＤＤ１０ａ〜１０ｃのすべての状態が正常状態である場合、ＲＡＩＤ５方式を用いるように構成されていたが、ＲＡＩＤ３方式又はＲＡＩＤ４方式を用いるように構成されていてもよい。また、ＲＡＩＤ５方式と他の方式とを組み合わせた方式を用いるように構成されていてもよい。
【０１３８】
更に、上記実施形態は、ＨＤＤを４つ以上備えるとともに、ＨＤＤのすべての状態が正常状態である場合にＲＡＩＤ６方式を用いるように構成されていてもよい。この場合、１つのＨＤＤの状態が異常状態となった場合にＲＡＩＤ５方式を用いるように構成されていてもよい。
【０１３９】
また、上記実施形態は、ある分割記憶領域において、あるＨＤＤ１０ａ〜１０ｃに記憶されるデータの種別を、メモリに記憶されたデータ配置情報に基づいて決定するように構成されていたが、予め設定された演算処理に従って決定するように構成されていてもよい。
【産業上の利用可能性】
【０１４０】
本発明は、複数のハードディスク装置を有するディスクアレイ装置等に適用可能である。
【図面の簡単な説明】
【０１４１】
【図１】本発明の実施形態に係るディスクアレイ装置の概略構成を表す図である。
【図２】図１に示したディスクモジュールの機能の概略を表すブロック図である。
【図３】ブロックアドレス情報と、ハードディスク装置情報と、データ種別情報と、を対応付けたデータ配置情報を表すテーブルである。
【図４】ブロックアドレス情報に対応付けられたパリティ有無情報を表すテーブルである。
【図５】図１に示したディスクモジュールのプロセッサが実行する書込処理プログラムを示したフローチャートである。
【図６】図１に示したハードディスク装置に記憶されているデータを表す図である。
【図７】図１に示したハードディスク装置に記憶されているデータを表す図である。
【図８】図１に示したハードディスク装置に記憶されているデータを表す図である。
【図９】ブロックアドレス情報に対応付けられたパリティ有無情報を表すテーブルである。
【図１０】図１に示したディスクモジュールのプロセッサが実行する読出処理プログラムを示したフローチャートである。
【図１１】図１に示したディスクモジュールのプロセッサが実行するリビルド処理プログラムを示したフローチャートである。
【符号の説明】
【０１４２】
１        ディスクアレイ装置
１０      ディスクエンクロージャ
１０ａ〜１０ｃ  ハードディスク装置（ＨＤＤ）
２０      コントローラ
２１ａ，２１ｂ  ホストモジュール
２２ａ，２２ｂ  ディスクモジュール
２３ａ，２３ｂ  キャッシュモジュール
２４ａ，２４ｂ  スイッチ
３０      ホスト装置
４１      異常状態検出部
４２      記憶用データ取得部
４３      分割データ生成部
４４      パリティデータ生成部
４５      データ記憶処理部
４６      データ配置情報記憶部
４７      パリティ有無情報記憶部
４８      読出要求情報受付部
４９      分割データ取得部
４９ａ    データ読出部
４９ｂ    分割データ復元部
ＢＡ＃０〜ＢＡ＃５  ブロックアドレス情報
Ｄ０ａ〜Ｄ５ｂ      分割データ
ＤＧ＃０〜ＤＧ＃５  データグループ
Ｐ０〜Ｐ５          パリティデータ
ＷＤ１，ＷＤ２      記憶用データ
【図１】
2009211349.tif 000003
【図２】
2009211349.tif 000004
【図３】
2009211349.tif 000005
【図４】
2009211349.tif 000006
【図５】
2009211349.tif 000007
【図６】
2009211349.tif 000008
【図７】
2009211349.tif 000009
【図８】
2009211349.tif 000010
【図９】
2009211349.tif 000011
【図１０】
2009211349.tif 000012
【図１１】
2009211349.tif 000013