(57)【要約】    【課題】  ＲＡＩＤ４またはＲＡＩＤ５により構成された記憶装置アレイへのデータ書き込みにおいて、データ書き込み速度を向上させることができるアレイ型記憶装置を提供する。    【解決手段】  アレイコントローラ２００は、ディスクアレイ３００上に構成される複数のブロックを含むストライプのそれぞれに対応付けて、ブロック毎のデータ格納の有無を示すデータ格納状態情報を記憶するデータ格納状態テーブルを参照し、書き込みデータの記憶領域として、全てのブロックにデータが格納されていないストライプに含まれるブロックを割り当てる。また、アレイコントローラ２００は、書き込みデータに対応するパリティデータを生成し、当該パリティデータの領域として、書き込みデータを書き込む領域として割り当てられたブロックを含むストライプの他のブロックを割り当てる。【選択図】      図１
2007087062.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置がアレイ化されている記憶装置アレイを有し、外部装置から受領した命令に応じて前記記憶装置アレイへのアクセスを制御するアレイ型記憶装置であって、
前記記憶装置アレイ上に構成される複数の記憶単位を含む冗長グループのそれぞれに対応付けて、記憶単位毎のデータ格納の有無を示すデータ格納状態情報を記憶するデータ格納状態情報記憶手段と、
前記データ格納状態情報記憶手段を参照し、書き込みデータの記憶領域となる記憶単位の割り当てと、該書き込みデータに対応する冗長データの記憶領域となる記憶単位の割り当てとを行う記憶領域割り当て手段と、
前記書き込みデータに対応する冗長データを生成する冗長データ生成手段と、
前記書き込みデータと上記冗長データとをそれぞれ対応する前記記憶領域割り当て手段により割り当てられた記憶単位に書き込む手段とを備え、
前記記憶領域割り当て手段は、書き込みデータの記憶領域として、全ての記憶単位にデータが格納されていない冗長グループに含まれる記憶単位を割り当て、前記冗長データを書き込む領域として、前記書き込みデータを書き込む領域として割り当てられた記憶単位を含む冗長グループの他の記憶単位を割り当てることを特徴とするアレイ型記憶装置。
【請求項２】
前記外部装置から受領する命令には、前記記憶領域割り当て手段および前記冗長データ生成手段を有効する有効にする有効命令または前記記憶領域割り当て手段および前記冗長データ生成手段を無効にする無効命令が含まれ、
前記有効命令を受領すると、前記記憶領域割り当て手段および前記冗長データ生成手段を有効化し、前記無効命令を受領すると、前記記憶領域割り当て手段および前記冗長データ生成手段を無効化する切換手段を備えることを特徴とする請求項１記載のアレイ型記憶装置。
【請求項３】
前記外部装置から受領する命令には、データインテグリティクリティカルなデータ書き込み命令またはタイムクリティカルなデータ書き込み命令が含まれ、
前記データインテグリティクリティカルなデータ書き込み命令を受領すると、前記記憶領域割り当て手段および前記冗長データ生成手段を有効化し、前記タイムクリティカルなデータ書き込み命令を受領すると、前記記憶領域割り当て手段および前記冗長データ生成手段を無効化する切換手段を備えることを特徴とする請求項１記載のアレイ型記憶装置。
【請求項４】
前記外部装置から、データ書き込み先アドレスが指示されたデータ書き込み命令を受領すると、該受領したデータ書き込み命令により指示されたデータ書き込み先アドレスに基づき前記記憶領域割り当て手段および前記冗長データ生成手段を有効化するか無効化するかを切り換える切換手段を備えることを特徴とする請求項１記載のアレイ型記憶装置。
【請求項５】
時間を計時する時計手段と、
前記記憶装置アレイ上に構成される複数の記憶単位を含む冗長グループのそれぞれに対応付けて、記憶単位毎にデータが格納された時間を記憶するデータ格納時間記憶手段と、
前記データ格納時間記憶手段を参照し、少なくとも１つの記憶単位にデータが格納されている冗長グループに対して、該データが格納されている記憶単位に対して記憶されている時間から現在までの経過時間と所定時間とを比較し、前記経過時間が前記所定時間を超過しているか否かを判別する所定時間超過判別手段と、
前記所定時間超過判別手段により前記経過時間が前記所定時間を超過していると判別されたデータが格納されている記憶単位に対応する前記データ格納状態情報記憶手段のデータ格納状態情報を、データが格納されていないことを示すデータ格納状態情報に書き換えるデータ格納状態情報書換え手段と
を備えることを特徴とする請求項１記載のアレイ型記憶装置。
【請求項６】
前記所定時間超過判別手段により前記経過時間が前記所定時間を超過していると判別されたデータが格納されている記憶単位を含む冗長グループに対してその記憶単位の全てを初期化する記憶単位初期化手段を備えることを特徴とする請求項５記載のアレイ型記憶装置。
【請求項７】
前記外部装置から受領したデータアクセス命令に含まれるデータアクセス先アドレスと前記記憶装置アレイ上における記憶単位の位置とを対応付ける情報を記憶するアドレス対応情報記憶手段と、
前記アドレス対応情報記憶手段を参照し、前記データアクセス命令に含まれるデータアクセス先アドレスに対応する記憶単位が含まれていない冗長グループを探索するアドレス未対応冗長グループ探索手段と、
前記アドレス未対応冗長グループ探索手段により探し出された冗長グループの記憶単位のそれぞれに対応する前記データ格納情報記憶手段のデータ格納状態情報をデータが格納されていないことを示すデータ格納状態情報に書き換えるデータ格納状態情報書換え手段と
を備えることを特徴とする請求項１記載のアレイ型記憶装置。
【請求項８】
前記アドレス未対応冗長グループ探索手段により探し出された冗長グループに含まれる記憶単位の全てを初期化する記憶単位初期化手段を備えることを特徴とする請求項７記載のアレイ型記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の記憶装置がアレイ化されている記憶装置アレイを有し、外部装置から受領した命令に応じて記憶装置アレイへのアクセスを制御するアレイ型記憶装置に関する。
【背景技術】
【０００２】
近年、情報機器の処理能力の向上、および通信ネットワークの広帯域化に伴い、動画、静止画などの大容量のマルチメディアデータが取り扱われるようになっている。このようなマルチメディアデータの蓄積に好適なストレージとして、高速、大容量で、かつ高い信頼性を有するストレージが要求されている。特に、広帯域ネットワークを介した高品位動画配信を扱う市場は、今後、急速な拡大が強く見込まれており、マルチメディアデータの蓄積に好適なストレージソリューションの提供は、急務である。
【０００３】
高速、大容量、高信頼性のストレージを実現する技術のひとつとして、D. Pattersonなどにより提案されたＲＡＩＤが広く知られている（例えば非特許文献１参照）。
【０００４】
上記文献では、ＲＡＩＤレベル４（以下、ＲＡＩＤ４という）またはＲＡＩＤレベル５（以下、ＲＡＩＤ５という）として、データを複数のブロックに分割し、上記複数のブロックに分割したデータからパリティデータを生成する。そして、上記複数のブロックに分割したデータと上記パリティデータを複数のディスク装置に分散して格納することにより、冗長性を確保しながら、容量的に効率よくデータを格納する方法が提案されている。
【０００５】
ＲＡＩＤ４またはＲＡＩＤ５にて構成されたディスクアレイに新しいデータを書き込むとき、リードモディファイライト動作を行う。すなわち、（１）新データの書き込み先ブロックに現在、記録されている旧データと、上記新データの書き込み先ブロックに対応するパリティブロックに現在記録されている旧パリティデータを読み出す。（２）上記新データと上記旧データと上記旧パリティデータの排他的論理和を取ることにより、新パリティデータを計算する。（３）新データと新パリティデータをそれぞれの書き込み先ブロックに書き込む、という動作が行われる。すなわち、新しいデータを書き込むために、２回の読み出し処理が必要である。
【０００６】
また、データ書き込み速度の向上を図るためのディスクアレイ装置が提案されている（特許文献１参照）。このディスクアレイ装置は、ディスクアレイを構成する各ブロックの使用状態を記憶する使用状態記憶部を有する。このディスクアレイ装置は、データを書き込むときに、上記使用状態記憶部を参照し、データの書き込み先ブロックが未使用である場合、上記データの書き込み先ブロックからの読み出し処理を省略してパリティデータを生成する。これにより、ライトペナルティが低減され、データ書き込み速度の向上が図られる。
【特許文献１】特開平６−７５７０８号公報
【非特許文献１】D. Patterson et al．  A Case for Redundant Arrays of Inexpensive Disks (RAID), inACM, SIGMOD Conference, Chicago, IL, June 1988
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来の技術においては、ＲＡＩＤ４またはＲＡＩＤ５にて構成されたディスクアレイにデータを書き込むとき、リードモディファイライト動作のために、書き込み速度が著しく低下する、いわゆるライトペナルティが発生する。
【０００８】
また、上述したディスクアレイ装置においては、データの書き込み先ブロックが未使用である場合、上記データの書き込み先ブロックからの読み出し処理を省略してパリティデータを生成することにより、ライトペナルティが低減される。しかしながら、データ書き込み先ブロックに既にデータが格納されている場合、またはデータ書き込み先ブロックを含むストライプの少なくとも１つのブロックに既にデータが格納されている場合、依然、ライトペナルティが発生する。よって、このディスクアレイ装置は、あらゆる場合に対応して、データ書き込み速度の向上を図ることはできない。
【０００９】
本発明の目的は、ＲＡＩＤ４またはＲＡＩＤ５により構成された記憶装置アレイへのデータ書き込みにおいて、データ書き込み速度を向上させることができるアレイ型記憶装置を提供することにある。
【課題を解決するための手段】
【００１０】
本発明は、上記目的を達成するため、複数の記憶装置がアレイ化されている記憶装置アレイを有し、外部装置から受領した命令に応じて前記記憶装置アレイへのアクセスを制御するアレイ型記憶装置であって、前記記憶装置アレイ上に構成される複数の記憶単位を含む冗長グループのそれぞれに対応付けて、記憶単位毎のデータ格納の有無を示すデータ格納状態情報を記憶するデータ格納状態情報記憶手段と、前記データ格納状態情報記憶手段を参照し、書き込みデータの記憶領域となる記憶単位の割り当てと、該書き込みデータに対応する冗長データの記憶領域となる記憶単位の割り当てとを行う記憶領域割り当て手段と、前記書き込みデータに対応する冗長データを生成する冗長データ生成手段と、前記書き込みデータと上記冗長データとをそれぞれ対応する前記記憶領域割り当て手段により割り当てられた記憶単位に書き込む手段とを備え、前記記憶領域割り当て手段は、書き込みデータの記憶領域として、全ての記憶単位にデータが格納されていない冗長グループに含まれる記憶単位を割り当て、前記冗長データを書き込む領域として、前記書き込みデータを書き込む領域として割り当てられた記憶単位を含む冗長グループの他の記憶単位を割り当てることを特徴とするアレイ型記憶装置を提供する。
【発明の効果】
【００１１】
本発明によれば、ＲＡＩＤ４またはＲＡＩＤ５により構成された記憶装置アレイへのデータ書き込みにおいて、リードモディファイライト動作が発生せず、ライトペナルティの発生を解消することができ、データ書き込み速度を向上させることができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態について図面を参照しながら説明する。
【００１３】
（第１の実施の形態）
図１は本発明の第１の実施の形態に係るディスクアレイ装置の構成を示すブロック図である。
【００１４】
ディスクアレイ装置は、図１に示すように、ホスト装置１００、アレイコントローラ２００、およびディスクアレイ（記憶装置アレイ）３００を備える。ホスト装置１００は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、および記憶装置Ｉ／Ｆ（インタフェース）回路１０４を有する。アレイコントローラ２００は、ＭＰＵ２０１、ＲＯＭ２０２、ＲＡＭ２０３、パリティー演算回路２０４、ホスト装置Ｉ／Ｆ回路２０５、およびハードディスクドライブＩ／Ｆ回路（ＨＤＤ Ｉ／Ｆ回路）２０６〜２０９を有する。ディスクアレイ３００は、ＲＡＩＤ４またはＲＡＩＤ５を実現可能なに構成された複数のハードディスクドライブ（以下、ＨＤＤ）３０１〜３０４からなる。
【００１５】
なお、本実施の形態においては、ディスクアレイを構成する記憶装置をＨＤＤとした形態を説明するが、ディスクアレイを構成する記憶装置は、ＨＤＤに限定されることはない。光ディスクドライブ、光磁気ディスクドライブ、さらには半導体記憶装置など、他の種類の記憶装置でもよい。
【００１６】
ホスト装置１００は、アレイコントローラ２００にディスクアレイ３００のコンフィグレーションに関する命令、ディスクアレイ３００へ／からのデータの書き込み／読み出しに関する命令を発行する。また、アレイコントローラ２００にディスクアレイ３００への書き込みデータを転送する。
【００１７】
アレイコントローラ２００は、ホスト装置１００からの命令を受領すると、それを解釈して、ディスクアレイ３００のコンフィグレーション、ディスクアレイ３００へ／からのデータの書き込み／読み出しを行う。アレイコントローラ２００は、ホスト装置１００からディスクアレイ３００へのデータ書き込み命令と書き込みデータを受領すると、上記受領した書き込みデータをディスクアレイ３００の構成に基づいて再構成し、上記再構成されたデータに対してパリティデータを生成する。そして、アレイコントローラ２００は、ディスクアレイ３００を構成するＨＤＤ３０１〜３０４の一部または全部にデータ書き込み命令を発行して、上記再構成されたデータと上記パリティデータとを分散して書き込む。
【００１８】
また、アレイコントローラ２００は、ホスト装置１００からディスクアレイ３００からのデータ読み出し命令を受領すると、ディスクアレイ３００を構成するＨＤＤ３０１〜３０４の一部または全部にデータ読み出し命令を発行して、データを読み出す。この読み出したデータは、ディスクアレイ３００の構成に基づいて再構成され、ホスト装置１００に転送される。
【００１９】
各ＨＤＤ３０１〜３０４は、アレイコントローラ２００からデータ書き込み命令と書き込みデータを受領すると、この受領した書き込みデータを磁気ディスク記録媒体に記録する。また、各ＨＤＤ３０１〜３０４は、アレイコントローラ２００からデータ読み出し命令を受領すると、磁気ディスク記録媒体からデータを再生し、この再生されたデータをアレイコントローラ２００に転送する。
【００２０】
次に、本実施の形態のディスクアレイ装置の特徴的な動作について図２を参照しながら説明する。図２は図１のディスクアレイ装置において、ディスクアレイ３００へデータを書き込むときのアレイコントローラ２００の動作手順を示すフローチャートである。この図２のフローチャートに示す手順は、アレイコントローラ２００のＭＰＵ２０１により実行されるものである。
【００２１】
アレイコントローラ２００は、図２に示すように、ステップＳ２０１において、ホスト装置１００からデータ書き込み命令と書き込みデータを受領すると、ステップＳ２０２で、上記受領した書き込みデータをディスクアレイ３００の構成に基づいて再構成する。そして、後述の方法で、上記再構成したデータと上記再構成したデータから生成されるパリティデータに対してディスクアレイ３００上のブロックを割り当て、上記再構成したデータからパリティデータを生成する。そして、アレイコントローラ２００は、ステップＳ２０３において、上記割り当てたブロックに上記再構成したデータと上記パリティデータを書き込む。
【００２２】
次に、上記再構成したデータと上記パリティデータにディスクアレイ３００上のブロックを割り当て、上記パリティデータを生成する方法について図３〜図８を参照しながら説明する。図３は図２のステップＳ２０２のブロック割り当て・パリティデータ生成処理の手順を示すフローチャート、図４はフォーマット時のディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図、図５はホスト装置からＬＢＡ＝Ｌ０〜Ｌ１に２ブロック分のサイズを有するデータＤ０〜Ｄ１の書き込み命令が発行されたきのディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図、図６は図５の状態においてホスト装置からＬＢＡ＝Ｌ２への１ブロック分のサイズを有するデータＤ２の書き込み命令が発行されたときのディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図、図７は図６の状態においてホスト装置からＬＢＡ＝Ｌ３〜Ｌ６への４ブロック分のサイズを有するデータＤ３〜Ｄ６の書き込み命令が発行されたときのディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図、図８は図７の状態においてホスト装置からＬＢＡ＝Ｌ２への１ブロック分のサイズを有するデータＤ７の書き込み命令が発行されたときのディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。ここでは、ディスクアレイ３００は、ＲＡＩＤ５により構成されているものとして説明するが、ＲＡＩＤ４により構成されていても本発明は適用可能である。また、ＨＤＤの台数は４台に限定されることはない。
【００２３】
アレイコントローラ２００は、電源投入時に、図４（ａ），（ｂ）に示すようなデータ格納状態テーブル（以下、格納状態テーブル）２０３ａ、およびＬＢＡ−ディスクアレイ・ブロック変換テーブル（以下、変換テーブル）２０３ｂをＨＤＤ３０１〜３０４またはその他の不揮発性記憶媒体から読み出し、ＲＡＭ２０３上に展開する。格納状態テーブル２０３ａは、ブロックにデータが格納されているか否かの情報を保持するビットマップテーブルである。変換テーブル２０３ｂは、ホスト装置１００が認識する論理アドレス（以下、ＬＢＡ）と、ディスクアレイ３００上のブロック位置との対応を示す情報を保持するテーブルである。
【００２４】
アレイコントローラ２００は、図３に示すように、まずステップＳ３０１において、格納状態テーブル２０３ａを参照して、いずれのブロックにもデータが格納されていないストライプを探し出す。続くステップＳ３０２において、格納状態テーブル２０３ａと変換テーブル２０３ｂを更新することによって、上記再構成したデータと上記パリティデータにディスクアレイ３００上のブロックを割り当てる。ここで、ＲＡＭ２０３上で更新された格納状態テーブル２０３ａと変換テーブル２０３ｂは、例えば、電源遮断時など、任意のタイミングで、ＨＤＤ３０１〜３０４またはその他の不揮発性記憶媒体に複写される。そして、アレイコントローラ２００は、ステップＳ３０３において、パリティー演算回路２０４により上記再構成したデータから上記パリティデータを生成する。
【００２５】
具体的には、ディスクアレイ３００がフォーマットされると、図４（ａ）に示すような状態になる。この状態は、ディスクアレイ３００にデータが格納されていない状態であるので、格納状態テーブル２０３ａは、図４（ｂ）に示すように、それぞれのブロックに対応する全てのビットに対して、データが格納されていないことを示す「０」が書き込まれている。また、変換テーブル２０３ｂには、図４（ｃ）に示すように、有効な情報が書き込まれていない。
【００２６】
図４のフォーマットされた状態において、ホスト装置１００から、ＬＢＡ＝Ｌ０〜Ｌ１への２ブロック分のサイズを有するデータＤ０〜Ｄ１の書き込み命令が発行されると、ディスクアレイは、図５（ａ）に示す状態になる。ここでは、本発明の理解を容易にするために、ホスト装置１００が管理するデータクラスタサイズとディスクアレイ３００のブロックサイズとが等しいものとして説明するが、もちろんこれらが異なる場合でもよい。また、格納状態テーブル２０３ａと変換テーブル２０３ｂのそれぞれのフォーマットが図示するものに限定されることはない。さらには、テーブルの構成が図示するものに限定されることはない。
【００２７】
アレイコントローラ２００は、上記書き込み命令を受領すると、格納状態テーブル２０３ａを参照して、２ブロック分のデータが格納可能な、いずれのブロックにもデータが格納されていないストライプとしてストライプＳ０を探し出す。そして、ストライプＳ０において、２ブロック分の領域としてＨＤＤ３０１〜３０２を選択する。ここで、ストライプＳ０に対するパリティデータＰ０に対しては、ＲＡＩＤ５のフォーマットに従って自動的にＨＤＤ３０４が選択される。次いで、格納状態テーブル２０３ａ上の上記選択領域に対応するビット（ストライプ番号，ＨＤＤ番号）＝（Ｓ０，３０１）、（Ｓ０，３０２）が「１」に書き換えられる。また、変換テーブル２０３ｂに対して、ホスト装置１００が認識するＬＢＡとディスクアレイ３００上のブロック位置との対応、すなわち（ＬＢＡ，ＨＤＤ番号，ストライプ番号）＝（Ｌ０，３０１，Ｓ０）、（Ｌ１，３０２、Ｓ０）が書き加えられる。このようにして、ホスト装置１００から受領したデータＤ０〜Ｄ１とパリティデータＰ０に対してディスクアレイ３００のブロックが割り当てられる。
【００２８】
次いで、パリティデータＰ０が
Ｐ０＝Ｄ０ ｘｏｒ Ｄ１
に基づいて生成され、生成されたパリティデータＰ０は、データＤ０およびＤ１とともに、それぞれに割り当てられたブロックに書き込まれる。
【００２９】
この図５（ａ）に示す状態において、ホスト装置１００から、ＬＢＡ＝Ｌ２への１ブロック分のサイズを有するデータＤ２の書き込み命令が発行されると、ディスクアレイ３００は、図６（ａ）に示す状態になる。
【００３０】
アレイコントローラ２００は、上記書き込み命令を受領すると、格納状態テーブル２０３ａを参照して、１ブロック分のデータが格納可能な、いずれのブロックにもデータが格納されていないストライプとしてストライプＳ１を探し出す。ストライプＳ１において、１ブロック分の領域としてＨＤＤ３０１を選択する。このストライプＳ１に対するパリティデータＰ１に対しては、ＲＡＩＤ５のフォーマットに従って自動的にＨＤＤ３０３が選択される。そして、図５（ｂ）に示すように、格納状態テーブル２０３ａ上の上記選択領域に対応するビット（ストライプ番号，ＨＤＤ番号）＝（Ｓ１，３０１）が「１」に書き換えられる。また、図５（ｃ）に示すように、変換テーブル２０３ｂに対して、ホスト装置１００の認識するＬＢＡとディスクアレイ３００上のブロック位置との対応、すなわち（ＬＢＡ，ＨＤＤ番号，ストライプ番号）＝（Ｌ２，３０１，Ｓ１）が書き加えられる。このようにして、ホスト装置１００から受領したデータＤ２とパリティデータＰ１に対して、ディスクアレイ３００のブロックが割り当てられる。
【００３１】
次いで、パリティデータＰ１が、
Ｐ１＝Ｄ２
に基づいて生成され、生成されたパリティデータＰ１は、データＤ２とともに、それぞれに割り当てられたブロックに書き込まれる。
【００３２】
図６の状態において、ホスト装置１００からＬＢＡ＝Ｌ３〜Ｌ６への４ブロック分のサイズを有するデータＤ３〜Ｄ６の書き込み命令が発行されると、ディスクアレイ３００は、図７（ａ）に示す状態になる。
【００３３】
アレイコントローラ２００は、上記書き込み命令を受領すると、格納状態テーブル２０３ａを参照して、４ブロック分のデータが格納可能な、いずれのブロックにもデータが格納されていないストライプとしてストライプＳ２とＳ３を探し出す。そして、アレイコントローラ２００は、ストライプＳ２において、３ブロック分の領域としてＨＤＤ３０１とＨＤＤ３０３，３０４を選択し、ストライプＳ３において、１ブロック分の領域としてＨＤＤ３０２を選択する。ここで、ストライプＳ２に対するパリティデータＰ２に対しては、ＲＡＩＤ５のフォーマットに従って自動的にＨＤＤ３０２が選択される。また、ストライプＳ３に対するパリティデータＰ３に対しては、ＲＡＩＤ５のフォーマットに従って自動的にＨＤＤ３０１が選択される。
【００３４】
そして、図７（ｂ）に示すように、格納状態テーブル２０３ａ上の上記選択領域に対応するビット（ストライプ番号，ＨＤＤ番号）＝（Ｓ２，３０１）、（Ｓ２，３０３）、（Ｓ２、３０４）および（Ｓ３、３０２）は、「１」に書き換えられる。また、図７（ｃ）に示すように、変換テーブル２０３ｂに対して、ホスト装置１００が認識するＬＢＡとディスクアレイ３００上のブロック位置との対応が追加される。すなわち（ＬＢＡ，ＨＤＤ番号，ストライプ番号）＝（Ｌ３，３０１，Ｓ２）、（Ｌ４，３０３、Ｓ２）、（Ｌ５，３０４、Ｓ２）および（Ｌ６，３０２、Ｓ３）が書き加えられる。このようにして、ホスト装置１００から受領したデータＤ３〜Ｄ６とパリティデータＰ２，Ｐ３に対して、ディスクアレイ３００のブロックが割り当てられる。
【００３５】
その後、パリティデータＰ２，Ｐ３が、それぞれ
Ｐ２＝Ｄ３ｘｏｒＤ４ｘｏｒＤ５
Ｐ３＝Ｄ６
に基づいて生成され、生成されたパリティデータＰ２，Ｐ３は、データＤ３〜Ｄ６とともに、それぞれに割り当てられたブロックに書き込まれる。
【００３６】
図７の状態において、ホスト装置１００から、ＬＢＡ＝Ｌ２への１ブロック分のサイズを有するデータＤ７の書き込み命令、すなわちＬＢＡ＝Ｌ２への上書き命令が発行されると、ディスクアレイ３００は、図８（ａ）に示す状態になる。
【００３７】
この場合、アレイコントローラ２００は、図４〜図７の場合と同様となる。すなわち、上記書き込み命令を受領すると、格納状態テーブル２０３ａを参照して、１ブロック分のデータが格納可能な、いずれのブロックにもデータが格納されていないストライプとしてストライプＳ４を探し出す。そして、ストライプＳ４において、１ブロック分の領域としてＨＤＤ３０１を選択する。ここで、ストライプＳ４に対するパリティデータＰ４に対しては、ＲＡＩＤ５のフォーマットに従って自動的にＨＤＤ３０４が選択される。そして、図８（ｂ）に示すように、格納状態テーブル２０３ａ上の上記選択領域に対応するビット（ストライプ番号，ＨＤＤ番号）＝（Ｓ４，３０１）が「１」に書き換えられる。また、図８（ｃ）に示すように、変換テーブル２０３ｂ上のホスト装置１００が認識するＬＢＡ＝Ｌ２とディスクアレイ３００上のブロック位置との対応が（ＬＢＡ，ＨＤＤ番号，ストライプ番号）＝（Ｌ２，３０１，Ｓ４）に書き換えられる。このようにして、ホスト装置１００から受領したデータＤ７とパリティデータＰ４に対して、ディスクアレイ３００のブロックが割り当てられる。
【００３８】
次いで、パリティデータＰ４が
Ｐ４＝Ｄ７
に基づいて生成され、生成されたパリティデータＰ４は、データＤ７とともに、それぞれに割り当てられたブロックに書き込まれる。
【００３９】
本実施の形態においては、アレイコントローラ２００により、ホスト装置１００が上書き命令を発行したときのＬＢＡの管理を行うようにしている。これに代えて、ホスト装置１００が、ディスクアレイ３００へのデータ書き込み命令において、既にデータが格納されているＬＢＡを指定しないように、例えばオペレーティングシステムまたはデバイスドライバにより、ＬＢＡを管理するような形態を採用してもよい。
【００４０】
次に、上述した手順でデータが書き込まれたディスクアレイ３００からデータを読み出すときのアレイコントローラ２００の動作について図９を参照しながら説明する。図９はディスクアレイ３００からデータを読み出すときのアレイコントローラ２００の動作手順を示すフローチャートである。図９のフローチャートで示す手順は、ＭＰＵ２０１により実行されるものである。
【００４１】
アレイコントローラ２００は、図９に示すように、ステップＳ９０１において、ホスト装置１００からデータ読み出し命令を受領する。続いて、アレイコントローラ２００は、ステップＳ９０２において、変換テーブル２０３ｂを参照して，ホスト装置１００から指定されたＬＢＡに対応するディスクアレイ３００上のブロックを探し出す。次いで、アレイコントローラ２００は、ステップＳ９０３において、上記ＬＢＡに対応するブロックを含むＨＤＤにデータ読み出し命令を発行する。そして、アレイコントローラ２００は、ステップＳ９０４において、指定されたデータの読み出しが失敗したか否かを判定する。ここで、指定されたデータの読み出しが成功すると、アレイコントローラ２００は、ステップＳ９０６において、読み出されたデータをホスト装置１００に転送する。
【００４２】
これに対し、上記ステップＳ９０４において指定されたデータの読み出しが失敗したと判定された場合、アレイコントローラ２００は、ステップＳ９０５に進む。このステップおいて、アレイコントローラ２００は、上記読み出しが失敗したデータを、同一ストライプ上にある他のデータとパリティデータから後述の方法により復元する。そして、アレイコントローラ２００は、ステップＳ９０６において、復元されたデータをホスト装置１００に転送する。
【００４３】
ここで、読み出しに失敗したデータを同一ストライプ上にある他のデータとパリティデータから復元する方法について図１０を参照しながら説明する。図１０は図９のステップＳ９０５のデータ復元処理の手順を示すフローチャートである。
【００４４】
上記データ復元処理を行う場合、図１０に示すように、アレイコントローラ２００は、ステップＳ１００１において、格納状態テーブル２０３ａを参照して、読み出しが失敗したデータと同一ストライプ上において、データが格納されているブロックを探索する。そして、アレイコントローラ２００は、ステップＳ１００２において、データが格納されているブロックが発見されたか否かを判定する。ここで、データが格納されているブロックが発見された場合、ステップＳ１００３に進む。アレイコントローラ２００は、ステップＳ１００３において、上記データが格納されているブロックを含むＨＤＤと、上記読み出しが失敗したデータに対応するパリティデータが格納されているブロックを含むＨＤＤにデータ読み出し命令を発行する。そして、上記読み出しが失敗したデータと同一ストライプ上のブロックに格納されているデータとパリティデータを読み出す。そして、アレイコントローラ２００は、ステップＳ１００４において、これら読み出した全てのデータの排他的論理和を取ることにより、読み出しが失敗したデータを復元する。
【００４５】
これに対し、上記ステップＳ１００２において、データが格納されているブロックが発見されないと判定された場合、ステップＳ１００５に進む。アレイコントローラ２００は、ステップＳ１００５において、上記読み出しが失敗したデータに対応するパリティデータが格納されているブロックを含むＨＤＤのみにデータ読み出し命令を発行し、上記読み出しが失敗したデータに対応するパリティデータのみを読み出す。これは、上記読み出しが失敗したデータに対応するパリティデータが、上記読み出しが失敗したデータと同じ値を有するからである。そして、アレイコントローラ２００は、上記読み出されたパリティデータを上記読み出しが失敗したデータとすることにより、読み出しに失敗したデータの復元を行う。
【００４６】
例えば、図７の状態において、データＤ０の読み出しが失敗した場合、データＤ０と同一ストライプＳ０上にあるデータＤ１とパリティデータＰ０が読み出され、
Ｄ０＝Ｄ１ ｘｏｒ Ｐ０
の演算が行われる。この演算により、読み出しが失敗したデータＤ０の復元が行われることになる。
【００４７】
また、データＤ２の読み出しが失敗した場合、同一ストライプＳ１上に格納されているデータとしては、データＤ２のみであるので、パリティデータＰ１が読み出される。そして、
Ｄ２＝Ｐ１
の演算により、データＤ２の復元が行われることになる。
【００４８】
図１０を用いて説明したデータ復元処理に代わるデータ復元処理として、図１１のフローチャートで示すデータ復元処理を採用することも可能である。この代替のデータ復元処理について図１１を参照しながら説明する。図１１は図１０のデータ復元処理に代わる他のデータ復元処理の手順を示すフローチャートである。
【００４９】
この代替データ復元処理が適用されるディスクアレイ３００に対しては、フォーマット時に、ＲＡＩＤ４またはＲＡＩＤ５として使用する全てのブロックに「０」が書き込まれている。この代替データ復元処理においては、図１１に示すように、まず、アレイコントローラ２００が、ステップＳ１１０１において、読み出しが失敗したデータを格納するブロックを含むＨＤＤを除く、残り全てのＨＤＤにデータ読み出し命令を発行する。これにより、上記読み出しが失敗したデータが格納されているブロックと同一のストライプ上にある他の全てのブロックに格納された値を読み出す。そして、アレイコントローラ２００は、ステップＳ１１０２において、上記他の全てのブロックから読み出された値の排他的論理和を取ることにより、読み出しが失敗したデータを復元する。すなわち、このデータ復元処理は、図１０に示すデータ復元処理のように、格納状態テーブル２０３ａを参照して、読み出しが失敗したデータの格納されているブロックと同一ストライプ上において、有効なデータが格納されているブロックを探索する処理を行うことなく、読み出しが失敗したデータを復元することができる。
【００５０】
例えば、図７の状態において、データＤ０の読み出しが失敗した場合、データＤ０が格納されているブロックと同一ストライプＳ０上にある他の全てのブロックに格納された値、すなわち、データＤ１、ＨＤＤ３０３上の「０」とパリティデータＰ０が読み出され、
Ｄ０＝Ｄ１ ｘｏｒ ‘０’ ｘｏｒ Ｐ０
の演算（この演算の結果はＤ１ ｘｏｒ Ｐ０と同値である）が行われる。この演算により、読み出しが失敗したデータＤ０の復元が行われる。
【００５１】
また、データＤ２の読み出しが失敗した場合も同様に、データＤ２が格納されているブロックと同一ストライプＳ１上にある他の全てのブロックに格納された値、すなわち、ＨＤＤ３０２上の「０」、ＨＤＤ３０３上の「０」とパリティデータＰ１が読み出され、
Ｄ２＝‘０’ ｘｏｒ ‘０’ ｘｏｒ Ｐ１
の演算（この演算の結果はＰ１と同値である）が行われる。これにより、読み出しが失敗したデータＤ２の復元が行われる。
【００５２】
以上説明したように、本実施の形態によれば、ＲＡＩＤ４またはＲＡＩＤ５にて構成されたディスクアレイ３００へのデータの書き込みにおいて、リードモディファイライト動作が発生せず、ライトペナルティが解消される。これにより、データ書き込み速度を向上させることが可能となる。
【００５３】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図１２および図１３を参照しながら説明する。図１２は本発明の第２の実施の形態に係るディスクアレイ装置におけるブロック割り当て・パリティデータ生成処理の手順を示すフローチャートである。図１３は本発明の第２の実施の形態におけるデータ書き込み時のディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。
【００５４】
本実施の形態は、上記第１の実施の形態と異なるブロック割り当て・パリティデータ生成処理を行う。ここで、図１２中、図３と同じ符号が付してあるステップは、図３の同符号のステップと同様の処理を行うことを意味する。
【００５５】
アレイコントローラ２００は、ブロック割り当て処理において、まずステップＳ１２０１において、ホスト装置１００から受領したデータ書き込み命令を解析する。続くステップＳ１２０２において、上記データ書き込み命令がストリーミング命令であるか否かを判定する。ここで、上記データ書き込み命令がストリーミング命令である場合、上記第１の実施の形態と同じブロック割り当て・パリティデータ生成処理すなわちステップＳ３０１〜Ｓ３０３が実行される。
【００５６】
ここで、ストリーミング命令とは、標準的なデータ・インテグリティ・クリティカルな命令というよりも、むしろタイム・クリティカルなデータ転送に関する命令ということを意味している。例えば、ストリーミング命令は、ＨＤＤのＡＶ（Audio Visual/Audio Video）タイプの応用におけるストリーム要求を保証するような命令である。さらに具体的には、ATA/ATAPI-７(AT Attachiment with Packet Interface-7) Working Draft Revision ３c において、Streaming feature set中にWRITE STREAM PIO、WRITE STREAM DMAとして規定される命令などである。
【００５７】
上記ステップＳ１２０２において上記データ書き込み命令がストリーミング命令でないと判定された場合、アレイコントローラ２００は、ＲＡＩＤ４またはＲＡＩＤ５にて構成されたディスクアレイにおいて従来から一般的に行われているように、ブロックを割り当て、パリティデータを生成する。すなわち、アレイコントローラ２００は、ステップＳ１２０３〜Ｓ１２０４において、変換テーブル２０３ｂを参照して、ホスト装置１００から指定されたＬＢＡに対応するブロックを探し出す。
【００５８】
但し、ホスト装置１００から指定されたＬＢＡに対応するブロックが存在しない場合（ステップＳ１２０４）、アレイコントローラ２００は、ステップＳ１２０５において、格納状態テーブル２０３ａを参照してデータが格納されていないブロックを探し出す。そして、アレイコントローラ２００は、ステップＳ３０２において、格納状態テーブル２０３ａと変換テーブル２０３ｂを更新することによって、ディスクアレイ３００の構成に基づいて再構成したデータにディスクアレイ３００上のブロックを割り当てる。
【００５９】
次いで、アレイコントローラ２００は、必要であれば、ステップＳ１２０６において、従来技術と同様の方法で、ＨＤＤ３０１〜３０４から書き込み先ブロックに格納された旧データと上記旧データに対応する旧パリティデータを読み出し、新しいパリティデータを生成する。
【００６０】
例えば図７の状態において、ホスト装置１００から、ＬＢＡ＝Ｌ２への１ブロック分のサイズを有するデータＤ７の書き込み命令、すなわちＬＢＡ＝Ｌ２への上書き命令が発行されると、ディスクアレイ３００は、図１３（ａ）に示す状態になる。
【００６１】
アレイコントローラ２００は、上記書き込み命令を受領すると、上記書き込み命令を解析し、上記書き込み命令がストリーミング命令であるか否かを判別する。ここで、上記書き込み命令がストリーミング命令である場合、アレイコントローラ２００は、上記第１の実施の形態において図８を用いて説明したのと同様に動作する。
【００６２】
これに対し、上記書き込み命令がストリーミング命令でない場合、アレイコントローラ２００は、変換テーブル２０３ｂを参照して、ＬＢＡ＝Ｌ２に対応するブロックとして、（ＨＤＤ番号，ストライプ番号）＝（３０１，Ｓ１）を探し出す。続いて、上記ブロックに格納されていたデータＤ０と、上記ブロックに対応するパリティデータＰ１がそれぞれＨＤＤ３０１、ＨＤＤ３０３から読み出され、新たなパリティデータＰ１’が
Ｐ１’＝Ｄ０ ｘｏｒ Ｄ７ ｘｏｒ Ｐ１
に基づいて生成される。そして、データＤ７がＨＤＤ３０１に、パリティデータＰ０’がＨＤＤ３０４にそれぞれ書き込まれる。
【００６３】
本実施の形態においては、アレイコントローラ２００が、ホスト装置１００からデータ書き込み命令を受領する度に、上記データ書き込み命令の属性を判別し、ブロック割り当て・パリティー生成方法を選択するものとした。これに限らず、ホスト装置１００がアレイコントローラ２００のブロック割り当て・パリティー生成方法を選択する命令を用意し、データ書き込み命令をアレイコントローラ２００に発行する前に、予め上記ブロック割り当て・パリティー生成方法選択命令を発行することにより、アレイコントローラ２００のブロック割り当て・パリティー生成方法を選択する形態を採用することも可能である。
【００６４】
以上、本実施の形態によれば、ＲＡＩＤ４またはＲＡＩＤ５にて構成されたディスクアレイ３００へのデータの書き込みにおいて、ホスト装置１００が発行したデータ書き込み命令の属性に基づいて、書き込み動作を変えることにより、データ書き込み速度を向上させることが可能となるとともに、ディスクアレイ３００の容量を効率的に利用することが可能となる。
【００６５】
（第３の実施の形態）
次に、本発明の第３の実施の形態について図１４を参照しながら説明する。図１４は本発明の第３の実施の形態に係るディスクアレイ装置におけるブロック割り当て・パリティデータ生成処理の手順を示すフローチャートである。
【００６６】
本実施の形態は、上記第２の実施の形態と異なるブロック割り当て・パリティー生成方法選択処理を行う。そこで、本実施の形態においては、上記第２の実施の形態と異なる部分を中心に説明する。ここで、図１４中、図３および図１２と同じステップには、同一の符号が付されている。
【００６７】
ブロック割り当て処理においてアレイコントローラ２００は、図１４に示すように、まずステップＳ１４０１において、ホスト装置１００から受領したデータ書き込み命令を解析する。続いて、アレイコントローラ２００は、ステップＳ１４０２において、上記データ書き込み命令の指定するデータ書き込み先ＬＢＡが高速書き込み領域であるか否かを判定する。ここで、上記データ書き込み命令の指定するデータ書き込み先ＬＢＡが高速書き込み領域である場合、上記第１の実施の形態と同じブロック割り当て・パリティデータ生成処理すなわちステップＳ３０１〜Ｓ３０３が実行される。
【００６８】
但し、ここで、ホスト装置１００は、ディスクアレイ３００が高速データ書き込み領域と通常データ書き込み領域に分割され、ＬＢＡの指定により一方の領域を選択することができることを既知であるものとする。しかし、実際には、ディスクアレイ３００が予め上記のように物理的に領域分割されている必要はない。
【００６９】
上記ステップＳ１４０２において、上記データ書き込み命令の指定するデータ書き込み先ＬＢＡが通常書き込み領域でないと判定された場合、第２の実施の形態で説明したステップＳ１２０３〜Ｓ１２０６が実行される。
【００７０】
以上、本実施の形態によれば、ＲＡＩＤ４またはＲＡＩＤ５にて構成されたディスクアレイ３００へのデータの書き込みにおいて、ホスト装置１００が発行したデータ書き込み命令の指定するデータ書き込み先ＬＢＡに基づいて、書き込み動作を変える。これにより、データ書き込み速度を向上させることが可能となるとともに、ディスクアレイ３００の容量を効率的に使用することが可能となる。
【００７１】
（第４の実施の形態）
次に、本発明の第４の実施の形態について図１５〜図１７を参照しながら説明する。図１５は本発明の第４の実施の形態に係るディスクアレイ装置におけるデータ消去処理の手順を示すフローチャートである。図１６は本発明の第４の実施の形態におけるデータ消去処理実行前のディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。図１７は本発明の第４の実施の形態におけるデータ消去処理実行後のディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。
【００７２】
本実施の形態は、上記第１〜第３の実施の形態のようにして、ディスクアレイ３００に書き込まれたデータのうち、所定の保存時間を超過したデータを消去する処理を行う。
【００７３】
ディスクアレイ３００に書き込まれたデータのうち、所定の保存時間を超過したデータを消去する際、図１５に示すように、アレイコントローラ２００は、ステップＳ１５０１において、格納状態テーブル２０３ｃを参照する。ここで、格納状態テーブル２０３ｃには、ストライプ毎に、そのストライプを構成するブロックに最新のデータが書き込まれた時間が記録されている。この最新データ書き込み時間は、アレイコントローラ２００内のタイマ回路（図示せず）により計測され、上記ストライプを構成するブロックへのデータ書き込み時に更新される。
【００７４】
次いで、アレイコントローラ２００は、ステップＳ１５０２〜Ｓ１５０３、ステップＳ１５０７〜Ｓ１５０８において、データが格納されているストライプを探し出す。そして、データが格納されているストライプがあると、アレイコントローラ２００は、ステップＳ１５０４〜Ｓ１５０５において、上記ストライプの最新データ書き込み時間を、所定のデータ保存時間と比較し、この比較結果に応じて、保存期限が超過しているか否かを判定する。ここで、上記最新データ書き込み時間が上記データ保存時間以前の時間を示すと、アレイコントローラ２００は、保存期限が超過していると判定する。上記データ保存時間は、例えば、ＨＤＤ３０１〜３０４またはその他の不揮発性記憶媒体に記憶されており、データ消去処理時に、ＲＡＭ２０３上に呼び出される。
【００７５】
保存期限が超過している場合、アレイコントローラ２００は、ステップＳ１５０６において、格納状態テーブル２０３ｃと変換テーブル２０３ｂを更新することにより、格納状態テーブル２０３ｃと変換テーブル２０３ｂ上から上記ストライプ上のデータの存在を消去する。また、例えば、上記ストライプを構成するすべてのブロックに「０」を書き込むなどして、上記ストライプを初期化するようにしてもよい。
【００７６】
次に、例えば図１６に示すようにディスクアレイ３００にデータが書き込まれているとし、書き込まれたデータのうち、所定の保存時間を超過したデータを消去する場合について説明する。ここで、データ保存時間は５０日とする。
【００７７】
アレイコントローラ２００は、格納状態テーブル２０３ｃを参照し、データが格納されているストライプとして、まずストライプＳ０を探し出す。このストライプＳ０に関しては、最新データ書き込み時間４０日４時間１８分（４０：０４：１８と表記）がデータ保存時間５０日以前の時間を示しているので、格納状態テーブル２０３ｃのストライプ番号Ｓ０の列が初期状態（図４を参照）に戻される（図１７を参照）。また、変換テーブル２０３ｂ上のストライプ番号Ｓ０が記録されている列、すなわち（ＬＢＡ，ＨＤＤ番号，ストライプ番号）＝（Ｌ０，３０１，Ｓ０）、（Ｌ１、３０２Ｓ０）が削除される（図１７を参照）。
【００７８】
次いで、データが格納されているストライプとして、ストライプＳ１が探し出される。このストライプＳ１に関しては、最新データ書き込み時間４０日４時間２０分が所定データ保存時間５０日以前の時間を示しているので、格納状態テーブル３０２ｃのストライプＳ１に関する部分は初期状態に戻される（図１７を参照）。但し、変換テーブル２０３ｂには、ストライプ番号Ｓ１が記録されている列はないので、変換テーブル２０３ｂの書き換えは行われない（図１７を参照）。
【００７９】
次いで、データの格納されているストライプとして、ストライプＳ２が探し出される。このストライプＳ２に関しては、最新データ書き込み時間５１日１２時間８分が所定データ保存期限５０日以降の時間を示しているので、格納状態テーブル３０２ｃおよび変換テーブル２０３ｂの書き換えは行われない（図１７を参照）。以降、同様に、データが格納されているストライプが探し出され、同様の処理が行われる。
【００８０】
上記データ消去処理は、アレイコントローラ２００が所定のタイミング、例えば、ホスト装置１００からアクセスがないとき、所定時間経過時、電源投入時などに行うようにしてもよい。また、ホスト装置１００がアレイコントローラ２００に上記データ消去処理を行わせる命令を用意し、アレイコントローラ２００がホスト装置１００から上記データ消去命令を受領したときに行うようにしてもよい。
【００８１】
以上、本実施の形態によれば、ＲＡＩＤ４またはＲＡＩＤ５にて構成されたディスクアレイ３００において、上記第１〜第３の実施の形態のようにしてディスクアレイ３００に書き込まれたデータのうち、所定の保存時間を超過したデータを消去する。これにより、ディスクアレイ３００の容量を効率的に使用することが可能となる。
【００８２】
（第５の実施の形態）
次に、本発明の第５の実施の形態について図１８および図１９を参照しながら説明する。図１８は本発明の第５の実施の形態に係るディスクアレイ装置におけるデータ消去処理の手順を示すフローチャートである。図１９は本発明の第５の実施の形態におけるデータ消去処理実行後のディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。
【００８３】
本実施の形態は、上記第４の形態に対して、第１〜第３の実施の形態のようにしてディスクアレイ３００に書き込まれたデータのうち、未割り当てストライプに格納されているデータを消去する点で異なる。
【００８４】
アレイコントローラ２００は、図１８に示すように、ステップＳ１８０１において、変換テーブル２０３ｂを参照する。続いて、アレイコントローラ２００は、ステップＳ１８０２において、未割り当てストライプ、すなわちホスト装置１００が認識するＬＢＡのいずれのブロックも割り当てられていないストライプを抽出する。
【００８５】
次いで、アレイコントローラ２００は、ステップＳ１８０３およびＳ１８０４において、抽出された未割り当てストライプについて、格納状態テーブル２０３ｃを参照し、データが格納されているか否かを判別する。そして、アレイコントローラ２００は、ステップＳ１８０５において、上記ステップＳ１８０４の判別結果に基づいて未割り当てストライプにデータが格納されているか否かを判定する。ここで、未割り当てストライプにデータが格納されている場合、アレイコントローラ２００は、ステップＳ１８０６において、格納状態テーブル２０３ｃを更新することにより、格納状態テーブル２０３ａ上から上記ストライプ上のデータの存在を消去する。また、このとき、例えば、上記ストライプを構成するすべてのブロックに「１」を書き込むなどして、上記ストライプを初期化するようにしてもよい。
【００８６】
次いで、アレイコントローラ２００は、ステップＳ１８０７において、全ての未割り当てストライプについて、上記Ｓ１８０３〜Ｓ１８０６の処理を実施したか否かを判別する。まだ全ての未割り当てストライプについて、上記処理が実施されていない場合、アレイコントローラ２００は、ステップＳ１８０８において、まだ処理が実施されていない次の未割り当てストライプについての処理を開始する。
【００８７】
上記ステップＳ１８０７において全ての未割り当てストライプについて処理を完了したと判別された場合、アレイコントローラ２００は、データ消去処理を終了する。
【００８８】
次に、例えば図８に示すような状態にあるディスクアレイ３００に対して、未割り当てストライプに格納されているデータを消去する場合について説明する。
【００８９】
アレイコントローラ２００は、変換テーブル２０３ｂを参照し、未割り当てストライプとして、ストライプＳ０，Ｓ１，Ｓ５，…を抽出する。まず、ストライプＳ１について、格納状態テーブル２０３ａを参照し、データが格納されているか否かの判別が行われる。ここでは、データが格納されているので、格納状態テーブル２０３ａのストライプＳ１に関する部分が初期状態（図４を参照）に戻される（図１９を参照）。続いて、ストライプＳ５について、格納状態テーブル２０３ａを参照するが、データが格納されていないので、格納状態テーブル２０３ａの書き換えは行われない（図１９を参照）。以降、全ての未割り当てストライプについて同様の処理が行われる。
【００９０】
上記データ消去処理は、アレイコントローラ２００が所定のタイミング、例えば、ホスト装置１００からアクセスがないとき、所定時間経過時、電源投入時などに行われるようにしてもよい。または、ホスト装置１００がアレイコントローラ２００に上記データ消去処理を行わせる命令を用意し、アレイコントローラ２００がホスト装置１００から上記データ消去命令を受領したときに上記データ消去処理を行うようにしてもよい。
【００９１】
以上、本実施の形態によれば、ＲＡＩＤ４またはＲＡＩＤ５にて構成されたディスクアレイ３００において、第１〜第３の実施の形態のようにしてディスクアレイ３００に書き込まれたデータのうち、ホスト装置１００が不要であると認識したデータを消去する。これにより、ディスクアレイ３００の容量を効率的に使用することが可能となる。
【図面の簡単な説明】
【００９２】
【図１】本発明の第１の実施の形態に係るディスクアレイ装置の構成を示すブロック図である。
【図２】図１のディスクアレイ装置において、ディスクアレイ３００へデータを書き込むときのアレイコントローラ２００の動作手順を示すフローチャートである。
【図３】図２のステップＳ２０２のブロック割り当て・パリティデータ生成処理の手順を示すフローチャートである。
【図４】フォーマット時のディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。
【図５】２ブロック分のデータの書き込み命令が発行されたときのディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。
【図６】１ブロック分のデータの書き込み命令が発行されたときのディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。
【図７】４ブロック分のデータの書き込み命令が発行されたときのディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。
【図８】１ブロック分のデータの書き込み命令が発行されたときのディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。
【図９】ディスクアレイ３００からデータを読み出すときのアレイコントローラ２００の動作手順を示すフローチャートである。
【図１０】図９のステップＳ９０５のデータ復元処理の手順を示すフローチャートである。
【図１１】図１０のデータ復元処理に代わる他のデータ復元処理の手順を示すフローチャートである。
【図１２】本発明の第２の実施の形態に係るディスクアレイ装置におけるブロック割り当て・パリティデータ生成処理の手順を示すフローチャートである。
【図１３】本発明の第２の実施の形態におけるデータ書き込み時のディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。
【図１４】本発明の第３の実施の形態に係るディスクアレイ装置におけるブロック割り当て・パリティデータ生成処理の手順を示すフローチャートである。
【図１５】本発明の第４の実施の形態に係るディスクアレイ装置におけるデータ消去処理の手順を示すフローチャートである。
【図１６】本発明の第４の実施の形態におけるデータ消去処理実行前のディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。
【図１７】本発明の第４の実施の形態におけるデータ消去処理実行後のディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。
【図１８】本発明の第５の実施の形態に係るディスクアレイ装置におけるデータ消去処理の手順を示すフローチャートである。
【図１９】本発明の第５の実施の形態におけるデータ消去処理実行後のディスクアレイ、データ格納状態テーブル、およびＬＢＡ−ディスクアレイ・ブロック変換テーブルのぞれぞれの状態を示す図である。
【符号の説明】
【００９３】
１００  ホスト装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  記憶装置Ｉ／Ｆ回路
２００  アレイコントローラ
２０１  ＭＰＵ
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  パリティー演算回路
２０５  ホスト装置Ｉ／Ｆ回路
２０６〜２０９  ＨＤＤ  Ｉ／Ｆ回路
３００  ディスクアレイ
３０１〜３０４  ＨＤＤ
【図１】
2007087062.tif 000003
【図２】
2007087062.tif 000004
【図３】
2007087062.tif 000005
【図４】
2007087062.tif 000006
【図５】
2007087062.tif 000007
【図６】
2007087062.tif 000008
【図７】
2007087062.tif 000009
【図８】
2007087062.tif 000010
【図９】
2007087062.tif 000011
【図１０】
2007087062.tif 000012
【図１１】
2007087062.tif 000013
【図１２】
2007087062.tif 000014
【図１３】
2007087062.tif 000015
【図１４】
2007087062.tif 000016
【図１５】
2007087062.tif 000017
【図１６】
2007087062.tif 000018
【図１７】
2007087062.tif 000019
【図１８】
2007087062.tif 000020
【図１９】
2007087062.tif 000021