(57)【要約】【課題】ＲＡＩＤ６における再構成時のＩ／Ｏ性能の低下を軽減することを可能とする。【解決手段】２台以上の第１の記憶装置はデータを格納する。第２の記憶装置は第１の計算方法によって計算される第１のパリティを格納する。第３の記憶装置は第２の計算方法によって計算される第２のパリティを格納する。パリティ置換機能部２１２は、第３の記憶装置の故障が検出された場合、第１の記憶装置に格納されているデータから第２の計算方法によって第２のパリティを計算する。パリティ置換機能部２１２は、計算された第２のパリティを第２の記憶装置に上書きする。再構成機能部２１３は、第３の記憶装置が第４の記憶装置に交換された場合、第２の記憶装置から読み出された第２のパリティを第４の記憶装置に書き込む。再構成機能部２１３は、第１の記憶装置から読み出されたデータから第１の計算方法によって第１のパリティを計算し、第２の記憶装置に書き込む。【選択図】図２
2011008583.tif 000002
【特許請求の範囲】
【請求項１】
データを格納する２台以上の第１の記憶装置と、前記第１の記憶装置に格納されているデータを復元するために用いられる第１のパリティデータであって、当該第１の記憶装置に格納されているデータから第１の計算方法によって計算される第１のパリティデータを格納する第２の記憶装置と、前記第１の記憶装置に格納されているデータを復元するために用いられる前記第１のパリティデータとは異なる第２のパリティデータであって、当該第１の記憶装置に格納されているデータから前記第１の計算方法より複雑な第２の計算方法によって計算される第２のパリティデータを格納する第３の記憶装置と接続されるディスクアレイ制御装置において、
前記第３の記憶装置が故障した場合に、当該第３の記憶装置の故障を検出する検出手段と、
前記第３の記憶装置の故障が検出された場合、前記第１の記憶装置に格納されているデータから前記第２の計算方法によって第２のパリティデータを計算する第１の計算手段と、
前記第１の計算手段によって計算された第２のパリティデータを、前記第２の記憶装置に格納されている第１のパリティデータに上書きする上書き手段と、
前記故障が検出された第３の記憶装置が第４の記憶装置に交換された場合、前記第１の記憶装置に格納されているデータ及び前記第２の記憶装置に上書きされた第２のパリティデータを読み出す読み出し手段と、
前記第２の記憶装置から読み出された第２のパリティデータを前記第４の記憶装置に書き込む第１の書き込み手段と、
前記第１の記憶装置から読み出されたデータから前記第１の計算方法によって第１のパリティデータを計算する第２の計算手段と、
前記第２の計算手段によって計算された第１のパリティデータを前記第２の記憶装置に書き込む第２の書き込み手段と
を具備することを特徴とするディスクアレイ制御装置。
【請求項２】
前記第１の記憶装置に対してデータを書き込むことを要求する書き込み要求を取得する取得手段と、
前記取得された書き込み要求に応じてデータを前記第１の記憶装置に書き込む第３の書き込み手段と、
前記第２のパリティデータが前記第２の記憶装置に格納されている第１のパリティデータに上書きされているかを判定する判定手段と
を更に具備し、
前記第１の計算手段は、前記第２のパリティデータが上書きされていると判定された場合、前記第３の書き込み手段によって書き込まれたデータから前記第２の計算方法によって第２のパリティデータを計算し、
前記上書き手段は、前記第３の書き込み手段によって書き込まれたデータから前記第２の計算方法によって計算された第２のパリティデータを、前記第２の記憶装置に上書きする
ことを特徴とする請求項１記載のディスクアレイ制御装置。
【請求項３】
置換完了情報格納処理手段と置換完了情報格納手段とを更に具備し、
前記第１、第２及び第３の記憶装置は、当該第１の記憶装置に格納されているデータ、当該第２の記憶装置に格納されている第１のパリティデータ及び当該第３の記憶装置に格納されている第２のパリティデータから構成される複数のストライプを有し、
前記第１の計算手段は、前記第３の記憶装置の故障が検出された場合、前記第１、第２及び第３の記憶装置が有するストライプ毎に、前記第１の記憶装置に格納されているデータから前記第２の計算方法によって第２のパリティデータを計算し、
前記上書き手段は、前記ストライプ毎に計算された第２のパリティデータを、当該ストライプを構成する第１のパリティデータに上書きし、
前記置換完了情報格納処理手段は、前記上書き手段によって前記ストライプ毎に計算された第２のパリティデータが当該ストライプを構成する第１のパリティデータに上書きされた旨を示す置換完了情報を、前記置換完了情報格納手段に格納し、
前記判定手段は、前記置換完了情報格納手段に格納された置換完了情報に基づいて、前記第３の書き込み手段によって書き込まれたデータによって構成されるストライプ毎に計算された第２のパリティデータが当該ストライプを構成する第１のパリティデータに上書きされているかを判定する
ことを特徴とする請求項２記載のディスクアレイ制御装置。
【請求項４】
データを格納する２台以上の第１の記憶装置と、前記第１の記憶装置に格納されているデータを復元するために用いられる第１のパリティデータであって、当該第１の記憶装置に格納されているデータから第１の計算方法によって計算される第１のパリティデータを格納する第２の記憶装置と、前記第１の記憶装置に格納されているデータを復元するために用いられる前記第１のパリティデータとは異なる第２のパリティデータであって、当該第１の記憶装置に格納されているデータから前記第１の計算方法より複雑な第２の計算方法によって計算される第２のパリティデータを格納する第３の記憶装置と、前記第１の記憶装置、第２の記憶装置及び第３の記憶装置と接続されるディスクアレイ制御装置とを備えるディスクアレイ装置において、
前記ディスクアレイ制御装置は、
前記第３の記憶装置が故障した場合に、当該第３の記憶装置の故障を検出する検出手段と、
前記第３の記憶装置の故障が検出された場合、前記第１の記憶装置に格納されているデータから前記第２の計算方法によって第２のパリティデータを計算する第１の計算手段と、
前記第１の計算手段によって計算された第２のパリティデータを、前記第２の記憶装置に格納されている第１のパリティデータに上書きする上書き手段と、
前記故障が検出された第３の記憶装置が第４の記憶装置に交換された場合、前記第１の記憶装置に格納されているデータ及び前記第２の記憶装置に上書きされた第２のパリティデータを読み出す読み出し手段と、
前記第２の記憶装置から読み出された第２のパリティデータを前記第４の記憶装置に書き込む第１の書き込み手段と、
前記第１の記憶装置から読み出されたデータから前記第１の計算方法によって第１のパリティデータを計算する第２の計算手段と、
前記第２の計算手段によって計算された第１のパリティデータを前記第２の記憶装置に書き込む第２の書き込み手段と
を含む
ことを特徴とするディスクアレイ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディスクアレイ制御装置及びディスクアレイ装置に関する。
【背景技術】
【０００２】
一般的に、コンピュータ等に付随する記憶装置の対故障の信頼性を向上させる方法として、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）が普及している。このＲＡＩＤは、幾つかのレベルが規格化されており、それぞれＲＡＩＤ０〜ＲＡＩＤ６の名称がつけられている。
【０００３】
これらのうち、信頼性向上のためによく用いられてきたのがＲＡＩＤ１及びＲＡＩＤ５である。
【０００４】
ＲＡＩＤ１は、２台のＨＤＤ（Hard Disk Drive）を１組として用いてデータを完全に２重化する方法であり、ミラーリングと呼ばれる。ＲＡＩＤ１は、信頼性が高く、ＲＡＩＤ５等において用いられるパリティ（データ）の計算等を要しない単純さのため、高速な処理が可能である。その一方で、ＲＡＩＤ１は、利用できる実効容量が物理容量の半分になる。
【０００５】
ＲＡＩＤ５は、ｎ（ｎは、３以上の整数）台のＨＤＤを１組として、当該ｎ台のＨＤＤのうち、（ｎ−１）台にデータ（データブロック）を格納（保存）し、残りの１台に当該データブロックのパリティを格納する方法である。このパリティは、当該パリティが格納されるＨＤＤ以外のＨＤＤに格納されているデータから計算される。このパリティを用いることによって、例えばｎ台のＨＤＤのうちの１台が故障した場合であっても当該ＨＤＤに格納されていたデータブロックを復元（再計算）することが可能となる。
【０００６】
ＲＡＩＤ５では、利用できる実効容量は物理容量に対して（ｎ−１）／ｎであるため、上記したＲＡＩＤ１と比較してより多くの領域を利用できる。その一方で、ＲＡＩＤ５は、データを書き込む際に全てのＨＤＤからデータブロックを読み出し、パリティを計算する必要があるため、ライト処理（書き込み）が低速になる場合がある。実質的には、パリティの計算自体は単純なＸＯＲ演算（排他的論理和）であるため影響は小さいが、当該パリティを計算するために全てのＨＤＤからデータブロックを読み出さなければならないことがライト処理の低速化の主な原因となる場合が多い。
【０００７】
更に、近年では、上記した１つのパリティを用いるＲＡＩＤ５（シングルパリティ）とは異なり、２つのパリティを用いるＲＡＩＤ６（ダブルパリティ）も徐々に普及している。
【０００８】
このＲＡＩＤ６は、ｍ（ｍは、４以上の整数）台のＨＤＤを１組として、ｍ個のＨＤＤのうち（ｍ−２）個にデータ（データブロック）を格納し、残りの２台のＨＤＤのうちの一方にはＲＡＩＤ５と同様のパリティ（ＸＯＲパリティ）、他方には当該ＸＯＲパリティとは独立するパリティを格納する方法である。この方法によれば、ｍ台のＨＤＤのうち、任意の２台のＨＤＤが故障した場合であってもデータを完全に復元することができる。
【０００９】
以下、ＲＡＩＤ６において用いられる２つのパリティのうち、ＲＡＩＤ５と同様のＸＯＲパリティをＰパリティ、ＲＡＩＤ６に固有のパリティ（つまり、ＸＯＲパリティとは独立するパリティ）をＱパリティと称する。ここでは、２つのＸＯＲパリティを用いる２Ｄ−ＸＯＲ方式のＲＡＩＤ６については想定していない。
【００１０】
ところで、上記したＱパリティは、Ｐパリティとは数学的に独立な意味を持つ必要がある。すなわち、（ｍ−２）台のＨＤＤに格納されているデータブロック及び２つのパリティからなる２元連立方程式が必ず解を持つ必要がある。
【００１１】
また、現実的な要求として、計算されたパリティ（Ｐ及びＱ）の値の範囲は、各データブロックの値の範囲と同じである必要がある。すなわち、（ｍ−２）台のＨＤＤに格納されている例えば１バイトのデータブロックからは、１バイトのパリティが生成（計算）される必要がある。
【００１２】
このような事情から、Ｑパリティは、通常の算術四則演算では実現（計算）することができない。
【００１３】
したがって、現実のＲＡＩＤ６では、ガロア体と呼ばれる演算空間を定義することによって、このような要求を全て満たすＱパリティの計算を実現している。ガロア体での四則演算は一般的なプロセッサが有している算術四則演算回路では計算することができない。このため、四則演算テーブルをメモリ等に保持しておき、当該四則演算テーブルを参照することでＱパリティを計算するのが一般的である。
【００１４】
上記したように、Ｑパリティの計算は複雑であるため、Ｐパリティの計算と比較して多くの処理時間を要する。しかしながら、通常の書き込み処理（動作）時においては、ＨＤＤへの書き込み時間がＱパリティの計算時間と比較して十分に長いため、例えばメモリキャッシュがある場合にその応答が多少遅くなる程度であって、大きな問題となることはない。
【００１５】
上記したＲＡＩＤ６に関する技術として、ＲＡＩＤ６を構成する複数のディスク装置の中の１台のディスク装置が故障状態にあっても、整合性確認で不整合が検出された場合には、データ不正箇所を特定することが可能な技術（以下、先行技術と表記）が開示されている（例えば、特許文献１を参照）。この先行技術によれば、データライト抜けによるデータ不正がセクタ冗長領域に記録されたタイムスタンプ及びビットマップデータを使って検出される。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２００８−７１２９７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
ところで、ＲＡＩＤを構成するＨＤＤが故障した場合、当該故障したＨＤＤ（以下、故障ＨＤＤと表記）を新たなＨＤＤ（以下、新ＨＤＤと表記）に交換することにより、再びＲＡＩＤを構成できるように運用される。この場合、故障ＨＤＤに格納されていたデータまたはパリティを新ＨＤＤに復旧する作業（以下、再構成と表記）が必要となる。
【００１８】
この再構成は、残存するＨＤＤ（故障したＨＤＤ以外のＨＤＤ）に格納されているデータブロック及びパリティから新ＨＤＤに書き込むデータまたはパリティを再計算する動作である。このため、再構成には非常に長時間を要し、多くの計算機資源（例えば、ＣＰＵパワー及びメモリ領域等）を使用することになる。
【００１９】
特に、上記したＲＡＩＤ６における再構成では、故障ＨＤＤにＱパリティが格納されていた場合、当該Ｑパリティを再計算する必要がある。上述したようにＱパリティの計算には多くの処理時間を要するため、上記したＲＡＩＤ１及び５における再構成と比較して更に多くの計算機資源を必要とすることになり、Ｉ／Ｏ性能に更に悪影響を及ぼすことになる。つまり、ＲＡＩＤ６における再構成は、ＲＡＩＤ１及び５と比較して、Ｉ／Ｏ性能の低下が大きい。
【００２０】
したがって、例えばデータのリアルタイム配信用のサーバのような、利用者に対して一定以上の性能を提供することを要するシステムにおいては、ＲＡＩＤ６における再構成時のＩ／Ｏ性能の低下を軽減することが必要となる。
【００２１】
そこで、本発明の目的は、ＲＡＩＤ６における再構成時のＩ／Ｏ性能の低下を軽減することを可能とするディスクアレイ制御装置及びディスクアレイ装置を提供することにある。
【課題を解決するための手段】
【００２２】
本発明の１つの態様によれば、データを格納する２台以上の第１の記憶装置と、前記第１の記憶装置に格納されているデータを復元するために用いられる第１のパリティデータであって、当該第１の記憶装置に格納されているデータから第１の計算方法によって計算される第１のパリティデータを格納する第２の記憶装置と、前記第１の記憶装置に格納されているデータを復元するために用いられる前記第１のパリティデータとは異なる第２のパリティデータであって、当該第１の記憶装置に格納されているデータから前記第１の計算方法より複雑な第２の計算方法によって計算される第２のパリティデータを格納する第３の記憶装置と接続されるディスクアレイ制御装置が提供される。このディスクアレイ制御装置は、前記第３の記憶装置が故障した場合に、当該第３の記憶装置の故障を検出する検出手段と、前記第３の記憶装置の故障が検出された場合、前記第１の記憶装置に格納されているデータから前記第２の計算方法によって第２のパリティデータを計算する第１の計算手段と、前記第１の計算手段によって計算された第２のパリティデータを、前記第２の記憶装置に格納されている第１のパリティデータに上書きする上書き手段と、前記故障が検出された第３の記憶装置が第４の記憶装置に交換された場合、前記第１の記憶装置に格納されているデータ及び前記第２の記憶装置に上書きされた第２のパリティデータを読み出す読み出し手段と、前記第２の記憶装置から読み出された第２のパリティデータを前記第４の記憶装置に書き込む第１の書き込み手段と、前記第１の記憶装置から読み出されたデータから前記第１の計算方法によって第１のパリティデータを計算する第２の計算手段と、前記第２の計算手段によって計算された第１のパリティデータを前記第２の記憶装置に書き込む第２の書き込み手段とを具備する。
【発明の効果】
【００２３】
本発明は、ＲＡＩＤ６における再構成時のＩ／Ｏ性能の低下を軽減することを可能とする。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施形態に係るディスクアレイ装置の構成を示すブロック図。
【図２】図１に示すＲＡＩＤコントローラ２０の主として機能構成を示すブロック図。
【図３】図１に示すＨＤＤ３０-1、３０-2、…、３０-6上における置換完了情報を格納できる領域３０１について説明するための図。
【図４】図１に示すディスクアレイ装置１０が有するＨＤＤ３０-1、３０-2、…、３０-6のデータ構造の一例を示す図。
【図５】ＨＤＤ３０-1、３０-2、…、３０-6のうちの１台の故障が検出された場合のＲＡＩＤコントローラ２０の処理手順を示すフローチャート。
【図６】パリティ置換処理の処理手順を示すフローチャート。
【図７】１台呼称時Ｉ／Ｏ処理の処理手順を示すフローチャート。
【図８】再構成処理の処理手順を示すフローチャート。
【図９】ストライプ再構成処理の処理手順を示すフローチャート。
【図１０】ＨＤＤ３０-1、３０-2、…、３０-6のうちの１台の故障が検出された場合のＲＡＩＤコントローラ２０の動作について具体的に説明するための図。
【発明を実施するための形態】
【００２５】
以下、図面を参照して、本発明の実施形態について説明する。
【００２６】
図１は、本実施形態に係るディスクアレイ装置の構成を示すブロック図である。図１に示すように、ディスクアレイ装置１０は、ＲＡＩＤコントローラ（ディスクアレイ制御装置）２０及び４台以上のハードディスクドライブ（ＨＤＤ：Hard Disk Drive）３０-1、３０-2、…、３０-k（ｋは、４以上の整数）を有する。以下の説明では、ディスクアレイ装置１０は、６台のＨＤＤ（つまり、ＨＤＤ３０-1、３０-2、…、３０-6）を有しているものとして説明する。
【００２７】
ＲＡＩＤコントローラ２０は、外部から送信されるＩ／Ｏ要求（ライト要求またはリード要求）を取得し、当該Ｉ／Ｏ要求に応じてＨＤＤ３０-1、３０-2、…、３０-6に対するデータのライト／リード処理を実行する。
【００２８】
本実施形態においては、ＲＡＩＤコントローラ２０は、ハードウェアとして存在するものとする。具体的には、PCI-Express上のＲＡＩＤカードのような形式である。ＲＡＩＤコントローラ２０は、独立したＲＡＩＤコントローラプロセッサ２１及びＲＡＩＤコントローラメモリ２２を有する。ＲＡＩＤコントローラメモリ２２には、ＲＡＩＤコントローラプロセッサ２１によって実行されるプログラム（ＲＡＩＤプログラム）が格納されている。ＲＡＩＤコントローラプロセッサ２１は、ＲＡＩＤコントローラメモリ２２に格納されているＲＡＩＤプログラムを実行することによってＲＡＩＤ機能を実現する。
【００２９】
なお、ＲＡＩＤコントローラメモリ２２には、応答性を向上するためにデータキャッシュが実装されていても構わない。
【００３０】
ディスクアレイ装置１０が有するＨＤＤ３０-1、３０-2、…、３０-6は、例えばＲＡＩＤ（Redundant Arrays of Inexpensive Disks）６を構成する。
【００３１】
このＲＡＩＤ６においては、ＨＤＤ３０-1、３０-2、…、３０-6のうちの４台のＨＤＤ（第１の物理記憶装置）にデータ（データブロック）が格納され、残りの２台のうちの一方のＨＤＤ（第２の物理記憶装置）には当該データブロックからＸＯＲ演算（第１の計算方法）によって計算される第１のパリティデータ（以下、Ｐパリティと表記）、他方のＨＤＤ（第３の物理記憶装置）には当該Ｐパリティとは独立する第２のパリティデータ（以下、Ｑパリティと表記）が格納される。Ｑパリティは、Ｐパリティとは数学的に独立な意味を持ち、ガロア演算（第２の計算方法）によって計算される。ガロア演算は、ガロア体と呼ばれる演算空間を定義することによって実現され、例えば予め用意された四則演算テーブルを参照することによって計算される。なお、ガロア演算は、上記したＸＯＲ演算より複雑な計算方法であり、当該ＸＯＲ演算と比較してより多くの処理時間（処理量）を要する。
【００３２】
ここでは、ディスクアレイ装置１０が６台のＨＤＤを有するため、そのうちの４台のＨＤＤにデータ（Ｐパリティ及びＱパリティ以外のデータ）が格納されるが、ＲＡＩＤ６においては、２台以上のＨＤＤに当該データが格納されている必要がある。
【００３３】
また、ＨＤＤ３０-1、３０-2、…、３０-6のうちの４台のＨＤＤに格納されているデータブロック、当該データブロックから計算されるＰパリティ及びＱパリティ（の組）はストライプと呼ばれる。ＨＤＤ３０-1、３０-2、…、３０-6は、複数のストライプを有する。
【００３４】
なお、本実施形態においては、２つのＸＯＲパリティを用いる２Ｄ−ＸＯＲ方式のＲＡＩＤ６については想定していない。
【００３５】
図２は、図１に示すＲＡＩＤコントローラ２０の主として機能構成を示すブロック図である。図２に示すように、ＲＡＩＤコントローラ２０は、ＲＡＩＤ機能部２１１、パリティ置換機能部２１２及び再構成機能部２１２を含む。本実施形態において、これらの各部２１１〜２１３は、図１に示すＲＡＩＤコントローラプロセッサ２１がＲＡＩＤコントローラメモリ２２に格納されているＲＡＩＤプログラムを実行することにより実現されるものとする。このＲＡＩＤプログラムは、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このＲＡＩＤプログラムが、例えばネットワークを介してコンピュータ１０にダウンロードされても構わない。
【００３６】
また、ＲＡＩＤコントローラ２０は、置換完了情報格納部２２１を含む。本実施形態において、置換完了情報格納部２２１は、ＲＡＩＤコントローラメモリ２２に格納される。
【００３７】
ＲＡＩＤ機能部２１１は、ＲＡＩＤ６を構成するＨＤＤ３０-1、３０-2、…、３０-6のうちの１台が故障した場合に、当該故障を検出する。ＨＤＤ３０-1、３０-2、…、３０-6のうちの１台の故障が検出されると、ＲＡＩＤ機能部２１１は、ＲＡＩＤコントローラ２１と接続されているモニタまたはブザーのようなＩ／Ｏ装置（図示せず）を介して当該故障をユーザに通知する。これにより、ユーザは、ＨＤＤ３０-1、３０-2、…、３０-6のうちの１台が故障したことを認識し、適当な時期に当該故障したＨＤＤを交換できる。
【００３８】
また、ＲＡＩＤ機能部２１１は、後述するような通常のＲＡＩＤコントローラの機能を有する。
【００３９】
パリティ置換機能部２１２は、ＲＡＩＤ機能部２１１によって故障が検出された場合、ＲＡＩＤ６を構成するＨＤＤ３０-1、３０-2、…、３０-6が有するストライプ（ＨＤＤ３０-1、３０-2、…、３０-6のストライプ）毎にパリティ置換処理を実行する。パリティ置換処理においては、故障が検出されたＨＤＤにＱパリティが格納されていたストライプ（つまり、Ｑパリティが欠損したストライプ）に対して、当該ストライプの各データブロックからガロア演算によりＱパリティが再計算される。このＱパリティは、Ｑパリティが欠損したストライプにおいてＰが格納されている位置に上書きされる。なお、各ストライプに対してパリティ置換処理が実行されると、当該ストライプについてパリティ置換処理が完了した旨（つまり、パリティ置換処理が完了したストライプ）を示す情報（置換完了情報）が置換完了情報格納部２２１に格納される。
【００４０】
再構成機能部２１３は、ＲＡＩＤ機能部２１１によって故障が検出されたＨＤＤ（ＨＤＤ３０-1、３０-2、…、３０-6のうちの１台）がユーザによって交換され、ＲＡＩＤ６の再構成が指示された場合、ストライプ毎に再構成処理（ストライプ再構成処理）を実行する。
【００４１】
再構成機能部２１３は、パリティ置換処理が実行されたストライプに対しては、交換されたＨＤＤ（新ＨＤＤ）以外のＨＤＤからデータブロック及びＱパリティを読み出す。再構成機能部２１３は、読み出されたＱパリティを交換された新ＨＤＤに書き込む。
【００４２】
また、再構成機能部２１３は、読み出されたデータブロックからＸＯＲ演算によりＰパリティを計算し、当該計算されたＰパリティを本来のＰパリティが格納される位置（つまり、Ｑパリティが上書きされていた位置）に書き込む。
【００４３】
置換完了情報格納部２２１には、上記したように各ストライプについてパリティ置換処理が完了した旨を示す情報（置換完了情報）が格納される。置換完了情報格納部２２１には、ＨＤＤ３０-1、３０-2、…、３０-6のストライプ毎に例えば１ビットの判定フラグが置換完了情報として格納される。これにより、パリティ置換処理が完了したストライプを認識できる。
【００４４】
なお、パリティ置換処理を順次に行う場合、当該パリティ置換処理が完了したストライプのアドレス（置き換え完了アドレス）のみを格納する構成であっても構わない。これによれば、置き換え完了アドレスに該当するストライプまでパリティ置換処理が完了している旨が示される。
【００４５】
また、ディスクアレイ装置１０を含むシステムが一旦シャットダウンされるような場合があるため、ＲＡＩＤコントローラメモリ２２上の置換完了情報格納部２２１以外にも置換完了情報を格納できる領域を用意しておくことが好ましい。具体的には、図３に示すように、例えばＨＤＤ３０-1、３０-2、…、３０-6上に、置換完了情報を格納できる領域３０１を用意しておく構成であってもよい。
【００４６】
図３に示す例では、置換完了情報を格納できる領域３０１は、ＨＤＤ３０-1、３０-2、…、３０-6のうちのＨＤＤ３０-1、３０-2及び３０-3に設けられている。すなわち、置換完了情報は、ＨＤＤ３０-1、３０-2、…、３０-6のうちの例えば２台までの故障に耐えられるように３つのＨＤＤ（ここでは、ＨＤＤ３０-1、３０-2及び３０-3）に格納されている。また、置換完了情報自体に対してＲＡＩＤ６を適用して、ＨＤＤ３０-1、３０-2、…、３０-6のうちの２台までの故障に耐えられるようにしても構わない。
【００４７】
なお、図３に示す置換完了情報を格納できる領域３０１は、上記したＨＤＤ３０-1、３０-2、…、３０-6が有する複数のストライプ（つまり、データブロック、Ｐパリティ及びＱパリティ）の領域とは異なる領域である。
【００４８】
ここで、図４を参照して、図１に示すディスクアレイ装置１０が有するＨＤＤ３０-1、３０-2、…、３０-6のデータ構造の一例を示す。ＨＤＤ３０-1、３０-2、…、３０-6には、データブロック、Ｐパリティ及びＱパリティが格納される。また、ＨＤＤ３０-1、３０-2、…、３０-6は、複数のストライプ（４つのデータブロック、Ｐパリティ及びＱパリティの組）を有する。以下の説明においては、ＨＤＤ３０-1、３０-2、…、３０-6における１番目のストライプをストライプ番号１のストライプと称する。２番目以降のストライプについても同様である。
【００４９】
図４において、Ｄｉｊは、ストライプ番号ｉのストライプにおけるｊ個目のデータブロックを示す。Ｐｉは、ストライプ番号ｉのストライプにおけるＰパリティを示す。Ｑｉは、ストライプ番号ｉのストライプにおけるＱパリティを示す。
【００５０】
図４に示す例では、ストライプ番号１のストライプにおいては、ＨＤＤ３０-1にＤ１１、ＨＤＤ３０-2にＤ１２、ＨＤＤ３０-3にＤ１３、ＨＤＤ３０-4にＤ１４、ＨＤＤ３０-5にＰ１、ＨＤＤ３０-6にＱ１が格納されている。
【００５１】
また、ストライプ番号２のストライプにおいては、ＨＤＤ３０-1にＱ２、ＨＤＤ３０-2にＤ２１、ＨＤＤ３０-3にＤ２２、ＨＤＤ３０-4にＤ２３、ＨＤＤ３０-5にＤ２４、ＨＤＤ３０-6にＰ１が格納されている。
【００５２】
また、ストライプ番号３のストライプにおいては、ＨＤＤ３０-1にＰ３、ＨＤＤ３０-2にＱ３、ＨＤＤ３０-3にＤ３１、ＨＤＤ３０-4にＤ３２、ＨＤＤ３０-5にＤ３３、ＨＤＤ３０-6にＤ３４が格納されている。
【００５３】
ここでは、ストライプ番号１〜３について説明したが、ストライプ番号４以降のストライプについても同様である。
【００５４】
図４に示す例では、Ｐパリティ及びＱパリティを格納するＨＤＤがストライプ毎に１つずつずれるように配置されている。本実施形態においては、Ｐパリティ及びＱパリティをどのように配置するかは本質的ではなく、ストライプ番号からＰパリティ及びＱパリティの位置（ＨＤＤ番号）を一意に決定できれば図４に示す配置でなくても構わない。
【００５５】
なお、図４には図示されていないが、ＨＤＤ３０-1、３０-2、…、３０-6には、上記した置換完了情報が格納される領域（図３に示す領域３０１）が確保されている。
【００５６】
次に、図５のフローチャートを参照して、ＲＡＩＤ６を構成するＨＤＤ３０-1、３０-2、…、３０-6のうちの１台の故障がＲＡＩＤ機能部２１１によって検出された場合のＲＡＩＤコントローラ２０の処理手順について説明する。ここでは、ＲＡＩＤ機能部２１１によってＨＤＤ３０-1、３０-2、…、３０-6のうちのＨＤＤ３０-2の故障が検出されたものとして説明する。
【００５７】
なお、ＲＡＩＤ機能部２１１によってＨＤＤ３０-2の故障が検出された場合、その旨がＩ／Ｏ装置を介してユーザに通知される。
【００５８】
ＲＡＩＤ機能部２１１によってＨＤＤ３０-2の故障が検出された場合、ＲＡＩＤコントローラ２０に含まれるパリティ置換機能部２１２は、置換完了情報格納部２２１に格納されている置換完了情報をリセットする（ステップＳ１）。この置換完了情報は、後述するパリティ置換処理が実行されたストライプを示す情報である。
【００５９】
次に、パリティ置換機能部２１２は、外部からのＩ／Ｏ要求があるか、つまり、外部から送信されたＩ／Ｏ要求がＲＡＩＤコントローラ２０において取得されたか否かを判定する（ステップＳ２）。
【００６０】
この外部からのＩ／Ｏ要求には、ＲＡＩＤ６を構成するＨＤＤ３０-1、３０-2、…、３０-6からデータを読み出すための要求であるリード要求及び当該ＨＤＤ３０-1、３０-2、…、３０-6に対してデータを書き込むための要求であるライト要求が含まれる。また、Ｉ／Ｏ要求には、アクセス（リードまたはライト）の対象となるデータブロックのアドレスが含まれる。
【００６１】
Ｉ／Ｏ要求がないと判定された場合（ステップＳ２のＮＯ）、パリティ置換機能部２１２は、置換完了情報格納部２２１に格納されている置換完了情報に基づいて、ＨＤＤ３０-1、３０-2、…、３０-6におけるストライプの全てについてパリティ置換処理が実行されたか否かを判定する（ステップＳ３）。換言すれば、パリティ置換機能部２１２は、ＨＤＤ３０-1、３０-2、…、３０-6における最終ストライプまでパリティ置換処理が実行されたか否かを判定する。
【００６２】
ＨＤＤ３０-1、３０-2、…、３０-6におけるストライプの全てについてパリティ置換処理が実行されていないと判定された場合（ステップＳ３のＮＯ）、パリティ置換機能部２１２は、当該パリティ置換処理が実行されていないストライプの１つについて以下のステップＳ４及びステップＳ５の処理を実行する。以下、この処理の対象となるストライプを置換対象ストライプとする。
【００６３】
パリティ置換機能部２１２は、置換対象ストライプに対してパリティ置換処理を実行する（ステップＳ４）。パリティ置換処理においては、ＲＡＩＤ機能部２１１によって検出されたＨＤＤ３０-2の故障によって欠損したＱパリティの再計算が実行される。なお、再計算されたＱパリティは、置換対象ストライプにおけるＰパリティの位置に上書きされる。パリティ置換処理の詳細については後述する。
【００６４】
次に、パリティ置換機能部２１２は、置換対象ストライプについてパリティ置換処理が完了した旨を示す置換完了情報を置換完了情報格納部２２１に格納する。つまり、パリティ置換機能部２１２は、置換完了情報格納部２２１に格納されている置換完了情報を更新する（ステップＳ５）。
【００６５】
一方、Ｉ／Ｏ要求があると判定された場合（ステップＳ２のＹＥＳ）、ＲＡＩＤ機能部２１１及びパリティ置換機能部２１２は、当該Ｉ／Ｏ要求に基づいて１台故障時Ｉ／Ｏ処理を実行する（ステップＳ６）。この１台故障時Ｉ／Ｏ処理においては、Ｉ／Ｏ要求においてアクセスの対象となるストライプ（当該Ｉ／Ｏ要求に含まれるアドレスに該当するストライプ）に対して実行される。１台故障時Ｉ／Ｏ処理の詳細については後述する。
【００６６】
上記したステップＳ５またはステップＳ６の処理が実行されると、再構成要求が検出されたか否かが判定される（ステップＳ７）。この再構成要求は、ＲＡＩＤ機能部２１１によって検出されたＨＤＤ３０-2の故障がユーザに対して通知されたことにより当該ユーザによってＨＤＤ３０-2（第３の物理記憶装置）が新たなＨＤＤ（第４の物理記憶装置）に交換され、当該ユーザによってＲＡＩＤ６の再構成が指示された場合に検出される。
【００６７】
再構成要求が検出されたと判定された場合（ステップＳ７のＹＥＳ）、再構成機能部２１３は、ＲＡＩＤ機能部２１１によって故障が検出されたＨＤＤ３０-2以外のＨＤＤ（つまり、ＨＤＤ３０-1、３０-3、…、３０-6）及びＨＤＤ３０-2と交換された新たなＨＤＤ（新ＨＤＤ）においてＲＡＩＤ６を再構成する処理（以下、再構成処理と表記）を実行する（ステップＳ８）。再構成処理の詳細については後述する。
【００６８】
次に、図６のフローチャートを参照して、前述したパリティ置換処理（図５に示すステップＳ４の処理）の処理手順について説明する。
【００６９】
まず、パリティ置換機能部２１２は、ＲＡＩＤ機能部２１１によって検出された例えばＨＤＤ３０-2の故障により、パリティ置換処理の対象となるストライプ（図５において説明した置換対象ストライプ）においてＱパリティが欠損しているか否かを判定する（ステップＳ１１）。つまり、パリティ置換機能部２１２は、置換対象ストライプにおける複数のデータブロック（ここでは、４つのデータブロック）、Ｐパリティ及びＱパリティのうち、故障が検出されたＨＤＤ３０-2にＱパリティが格納されていたか否かを判定する。
【００７０】
上記した図４に示すようなＨＤＤ３０-1、３０-2、…、３０-6のデータ構造により、置換対象ストライプのストライプ番号からＰパリティ及びＱパリティの位置（ＨＤＤ番号）を一意に決定できる。したがって、置換対象ストライプのストライプ番号から決定できるＱパリティの位置（ＨＤＤ番号）がＲＡＩＤ機能部２１１によって故障が検出されたＨＤＤ３０-2であれば、Ｑパリティが欠損していると判定される。
【００７１】
具体的には、上記した図４に示すＨＤＤ３０-1、３０-3、…、３０-6において置換対象ストライプが例えばストライプ番号３のストライプである場合には、ＨＤＤ３０-2の故障によりＱパリティが欠損したと判定される。
【００７２】
Ｑパリティが欠損していると判定された場合（ステップＳ１１のＹＥＳ）、パリティ置換機能部２１２は、ＨＤＤ３０-1、３０-3、…、３０-6のうち、置換対象ストライプにおけるデータブロックが格納されているＨＤＤ（第１の物理記憶装置）から当該データブロック（つまり、４つのデータブロック）を読み出す。
【００７３】
パリティ置換機能部２１２は、読み出されたデータブロックからガロア演算によりＱパリティを再計算する（ステップＳ１２）。
【００７４】
次に、パリティ置換機能部２１２は、置換対象ストライプにおいてＰパリティが格納されている位置（ＨＤＤ番号）を算出（特定）する（ステップＳ１３）。
【００７５】
パリティ置換機能部２１２は、置換対象ストライプにおいてＰパリティが格納されている位置に、再計算されたＱパリティを上書きする（ステップＳ１４）。
【００７６】
なお、上記したステップＳ１１においてＱパリティが欠損していないと判定された場合、Ｑパリティを再計算する必要がないためパリティ置換処理は終了される。
【００７７】
次に、図７のフローチャートを参照して、前述した１台故障時Ｉ／Ｏ処理（図５に示すステップＳ６の処理）の処理手順について説明する。この１台故障時Ｉ／Ｏ処理は、ＲＡＩＤ機能部２１１によってＨＤＤ３０-1、３０-2、…、３０-6のうちの１台（例えば、ＨＤＤ３０-2）の故障が検出された後であって再構成要求が検出される前に、外部から送信されたＩ／Ｏ要求が取得された際に実行される。
【００７８】
上記したように１台故障時Ｉ／Ｏ処理時においては、ＲＡＩＤ機能部２１１によってＨＤＤ３０-1、３０-2、…、３０-6のうちの１台の故障が検出されている。したがって、ＨＤＤ３０-1、３０-2、…、３０-6の各ストライプの各々においては、データブロック、Ｐパリティ及びＱパリティのいずれかが欠損している状態となる。
【００７９】
パリティ置換機能部２１２は、外部からのＩ／Ｏ要求がリード要求であるか否かを判定する（ステップＳ２１）。
【００８０】
外部からのＩ／Ｏ要求がリード要求でない、つまり、ライト要求であると判定された場合（ステップＳ２１のＮＯ）、パリティ置換機能部２１２は、当該Ｉ／Ｏ要求によるアクセスの対象となるストライプ（以下、アクセス対象ストライプと表記）においてＱパリティが欠損しているか否かを判定する（ステップＳ２２）。換言すれば、パリティ置換機能部２１２は、ＨＤＤ３０-1、３０-2、…、３０-6のアクセス対象ストライプにおける複数のデータブロック（ここでは、４つのデータブロック）、Ｐパリティ及びＱパリティのうち、故障が検出されたＨＤＤ３０-2にＱパリティが格納されていたか否かを判定する。
【００８１】
なお、Ｉ／Ｏ要求からアクセス対象ストライプを特定することができる。また、特定されたアクセス対象ストライプ（のストライプ番号）から当該アクセス対象ストライプにおけるパリティ（Ｐパリティ及びＱパリティ）の位置（ＨＤＤ番号）を決定（算出）することができる。これにより、パリティ置換機能部２１２は、アクセス対象ストライプがＱパリティが欠損したストライプであるか否かを判定することができる。
【００８２】
アクセス対象ストライプにおいてＱパリティが欠損していると判定された場合（ステップＳ２２のＹＥＳ）、パリティ置換機能部２１２は、置換完了情報格納部２２１に格納されている置換完了情報に基づいて、当該アクセス対象ストライプについてパリティ置換処理が実行されているか否かを判定する（ステップＳ２３）。
【００８３】
アクセス対象ストライプについてパリティ置換処理が実行されていると判定された場合（ステップＳ２３のＹＥＳ）、当該アクセス対象ストライプにおいては、本来Ｐパリティが格納されるべき位置にＱパリティが格納（上書き）されている状態である。
【００８４】
この場合、パリティ置換機能部２１２は、Ｉ／Ｏ要求（ここでは、ライト要求）に応じてデータブロック（ライトデータ）をＨＤＤ３０-1、３０-2、…、３０-6に書き込む（ステップＳ２４）。
【００８５】
次に、パリティ置換機能部２１２は、アクセス対象ストライプにおける複数のデータブロックからガロア演算によりＱパリティを再計算し、当該再計算されたＱパリティを上書きする（ステップＳ２５）。つまり、再計算されたＱパリティは、アクセス対象ストライプにおいて本来Ｐパリティが格納されるべき位置に上書きされる。
【００８６】
一方、ステップＳ２１においてＩ／Ｏ要求がリード要求であると判定された場合、ステップＳ２２においてアクセス対象ストライプにおいてＱパリティが欠損していないと判定された場合、またはステップＳ２３においてアクセス対象ストライプについてパリティ置換処理が実行されていないと判定された場合には、ＲＡＩＤ機能部２１１は、通常のＲＡＩＤ６と同様のＩ／Ｏ処理（動作）を実行する。
【００８７】
具体的に、ステップＳ２１においてＩ／Ｏ要求がリード要求であると判定された場合について説明する。このとき、ＲＡＩＤ機能部２１１は、当該ＲＡＩＤ機能部２１１によって検出された例えばＨＤＤ３０-2の故障によりデータブロックが欠損している場合には、アクセス対象ストライプにおけるＰパリティから当該欠損しているデータブロックを復元し、当該データブロックをＩ／Ｏ要求に対する応答として返す。なお、ＨＤＤ３０-2の故障によりＰパリティまたはＱパリティが欠損している場合には、アクセス対象ストライプにおけるデータブロックを返す。
【００８８】
また、ステップＳ２２においてアクセス対象ストライプにおいてＱパリティが欠損していないと判定された場合について説明する。このとき、アクセス対象ストライプにおいてＰパリティが欠損している場合には、ＲＡＩＤ機能部２１１は、ステップＳ２４と同様にＩ／Ｏ要求（ここでは、ライト要求）に応じてデータブロックを書き込み、アクセス対象ストライプにおけるＱパリティを再計算して、当該再計算されたＱパリティを上書き（再計算されたＱパリティに更新）する。一方、アクセス対象ストライプにおいてデータブロックが欠損している場合には、ＲＡＩＤ機能部２１１は、アクセス対象ストライプにおけるデータブロック（Ｉ／Ｏ要求に応じて書き込まれるデータブロック）からＰパリティ及びＱパリティを再計算し、当該再計算されたＰパリティ及びＱパリティを上書き（再計算されたＰパリティ及びＱパリティに更新）する。
【００８９】
また、ステップＳ２３においてアクセス対象ストライプについてパリティ置換処理が実行されていないと判定された場合、ＲＡＩＤ機能部２１１は、ステップＳ２４と同様にＩ／Ｏ要求（ここでは、ライト要求）に応じてデータブロックを書き込み、アクセス対象ストライプにおけるＰパリティを再計算して、当該再計算されたＰパリティを上書き（再計算されたＰパリティに更新）する。
【００９０】
次に、図８のフローチャートを参照して、前述した再構成処理（図５に示すステップＳ８の処理）の処理手順について説明する。この再構成処理は、ＲＡＩＤ機能部２１１によって故障が検出されたＨＤＤが新たなＨＤＤに交換された場合に実行される。ここでは、ＨＤＤ３０-1、３０-2、…、３０-6のうちのＨＤＤ３０-2について故障が検出され、当該ＨＤＤ３０-2が新たなＨＤＤ（新ＨＤＤ）に交換されたものとして説明する。
【００９１】
まず、再構成機能部２１３は、再構成処理が完了した位置（ストライプ）を示す再構成完了位置をリセットする（ステップＳ３１）。この再構成完了位置としては、ＨＤＤ３０-1、３０-2、…、３０-6における例えばストライプ番号が用いられる。
【００９２】
次に、再構成機能部２１３は、外部からのＩ／Ｏ要求があるか、つまり、外部から送信されたＩ／Ｏ要求がＲＡＩＤコントローラ２０において取得されたか否かを判定する（ステップＳ３２）。このＩ／Ｏ要求には、リード要求またはライト要求が含まれる。
【００９３】
Ｉ／Ｏ要求があると判定された場合（ステップＳ３２のＹＥＳ）、再構成機能部２１３は、当該Ｉ／Ｏ要求に基づいて再構成時Ｉ／Ｏ処理を実行する（ステップＳ３３）。
【００９４】
ここで、再構成時Ｉ／Ｏ処理について簡単に説明する。この再構成時Ｉ／Ｏ処理においては、再構成機能部２１３は、再構成完了位置に基づいてＩ／Ｏ要求によるアクセスの対象となるストライプ（アクセス対象ストライプ）が再構成処理済みであるか否かを判定する。
【００９５】
アクセス対象ストライプが再構成処理済みであると判定された場合、再構成機能部２１３は、通常のＲＡＩＤ６と同様の処理を実行する。具体的には、Ｉ／Ｏ要求がリード要求の場合には、アクセス対象ストライプにおけるデータブロックを当該要求に対する応答として返す。Ｉ／Ｏ要求がライト要求の場合には、当該要求に応じてデータブロックを書き込み、アクセス対象ストライプにおけるＰパリティ及びＱパリティを更新する。
【００９６】
一方、アクセス対象ストライプが再構成処理済みでないと判定された場合、前述した図７に示す１台故障時Ｉ／Ｏ処理と同様の処理が実行される。
【００９７】
再構成機能部２１３によって再構成時Ｉ／Ｏ処理が実行されると、上記したステップＳ３２に戻って処理が繰り返される。
【００９８】
上記したステップＳ３２においてＩ／Ｏ要求がないと判定された場合、再構成機能部２１３は、再構成完了位置に基づいて再構成処理が実行されていないストライプの１つについて以下のステップＳ３４〜ステップＳ３６の処理を実行する。この場合、再構成機能部２１３は、再構成処理が実行されていないストライプのうちストライプ番号が最も小さいストライプについて処理を実行する。以下、この処理の対象となるストライプを再構成対象ストライプとする。
【００９９】
再構成機能部２１３は、置換完了情報格納部２２１に格納されている置換完了情報に基づいて、再構成対象ストライプについてパリティ置換処理が完了しているか否かを判定する（ステップＳ３４）。なお、パリティ置換処理において説明したように、当該パリティ置換処理が完了しているストライプは、必ずＱパリティが存在する状態である。
【０１００】
再構成対象ストライプについてパリティ置換処理が完了していると判定された場合（ステップＳ３４のＹＥＳ）、再構成機能部２１３は、当該再構成対象ストライプについて再構成処理（以下、ストライプ再構成処理と表記）が実行される（ステップＳ３５）。このストライプ再構成処理の詳細については後述する。
【０１０１】
一方、再構成対象ストライプについてパリティ置換処理が実行されていないと判定された場合（ステップＳ３４のＮＯ）、再構成対象ストライプについて通常のＲＡＩＤ６と同様の再構成処理がＲＡＩＤ機能部２１１によって実行される（ステップＳ３６）。この場合の再構成対象ストライプは、データブロック、Ｐパリティ及びＱパリティのいずれかが欠損している状態である。
【０１０２】
具体的には、再構成対象ストライプにおいてデータブロックが欠損している場合、ＲＡＩＤ機能部２１１は、当該再構成対象ストライプにおけるデータブロック（欠損しているデータブロック以外のデータブロック）及びＰパリティから当該欠損しているデータブロックを復元し、当該復元されたデータブロックを新ＨＤＤ（の当該再構成ストライプに該当する箇所）に書き込む。なお、この場合、ＰパリティでなくＱパリティを用いてデータブロックを復元することも可能であるが、計算処理量の軽減を図るためＰパリティを用いる方が好ましい。
【０１０３】
また、再構成対象ストライプにおいてＰパリティが欠損している場合、ＲＡＩＤ機能部２１１は、当該再構成対象ストライプにおけるデータブロックからＸＯＲ演算によりＰパリティを再計算し、当該再計算されたＰパリティを新ＨＤＤに書き込む。
【０１０４】
また、再構成対象ストライプにおいてＱパリティが欠損している場合、ＲＡＩＤ機能部２１１は、当該再構成対象ストライプにおけるデータブロックからガロア演算によりＱパリティを再計算し、当該再計算されたＱパリティを新ＨＤＤに書き込む。
【０１０５】
再構成対象ストライプについてパリティ置換処理が完了していない場合は、上記したような通常のＲＡＩＤ６と同様の再構成処理が実行される。
【０１０６】
上記したステップＳ３５またはステップＳ３６の処理が実行されると、再構成機能部２１３は、再構成完了位置に基づいて、再構成処理が最終ストライプ（ストライプ番号が最後のストライプ）まで実行されたか否かを判定する（ステップＳ３７）。
【０１０７】
再構成処理が最終ストライプまで実行されていないと判定された場合（ステップＳ３７のＮＯ）、再構成機能部２１３は、再構成完了位置を更新する（ステップＳ３８）。つまり、再構成機能部２１３は、再構成完了位置を上記したステップＳ３４〜ステップＳ３６の処理が実行された再構成対象ストライプのストライプ番号に更新する。
【０１０８】
ステップＳ３８の処理が実行されると、上記したステップＳ３２に戻って処理が繰り返される。このようにステップＳ３２に戻って処理が繰り返される場合のステップＳ３４〜ステップＳ３６の処理は、再構成完了位置（のストライプ）の次のストライプを再構成対象ストライプとして実行される。
【０１０９】
一方、再構成処理が最終ストライプまで実行されたと判定された場合（ステップＳ３７のＹＥＳ）、再構成処理は終了される。再構成処理が終了されると、ディスクアレイ装置１０は正常時の処理に戻る。
【０１１０】
次に、図９のフローチャートを参照して、前述したストライプ再構成処理（図８に示すステップＳ３５の処理）の処理手順について説明する。このストライプ再構成処理は、上記したようにパリティ置換処理が完了しているストライプ（再構成対象ストライプ）に対して実行される。なお、再構成対象ストライプには、上記したパリティ置換処理により必ずＱパリティが存在する。
【０１１１】
再構成機能部２１３は、ＲＡＩＤ機能部２１１によって検出された例えばＨＤＤ３０-2の故障により、再構成対象ストライプにおいてＱパリティが欠損したか否かを判定する（ステップＳ４１）。この場合、再構成機能部２１３は、再構成対象ストライプのストライプ番号からパリティ（Ｐパリティ及びＱパリティ）の位置（ＨＤＤ番号）を算出（決定）する。これにより、再構成対象ストライプにおいて、ＲＡＩＤ機能部２１１によって故障が検出されたＨＤＤ３０-2にＱパリティが格納されていた（つまり、当該故障によりＱパリティが欠損した）か否かが判定される。
【０１１２】
再構成対象ストライプにおいてＱパリティが欠損したと判定された場合を想定する（ステップＳ４１ＹＥＳ）。この場合、再構成対象ストライプにおいては、Ｑパリティが欠損したストライプに対してパリティ置換処理が実行されているため、本来Ｐパリティが格納されているべき位置に再計算されたＱパリティが上書きされている状態となっている。
【０１１３】
したがって、再構成機能部２１３は、上記したパリティ置換処理により、当該再構成対象ストライプにおいて本来Ｐパリティが格納されている位置に上書きされたＱパリティを読み出し、当該Ｑパリティを新ＨＤＤに書き込む（ステップＳ４２）。
【０１１４】
次に、再構成機能部２１３は、再構成対象ストライプにおける全てのデータブロック（ここでは、４つのデータブロック）を読み出す。再構成機能部２１３は、読み出されたデータブロックからＸＯＲ演算によりＰパリティを再計算する（ステップＳ４３）。
【０１１５】
再構成機能部２１３は、再構成対象ストライプにおける本来Ｐパリティが格納されるべき位置（つまり、Ｑパリティが格納されていた位置）に、再計算されたＰパリティを書き込む（ステップＳ４４）。
【０１１６】
一方、再構成対象ストライプにおいてＱパリティが欠損していないと判定された場合（ステップＳ４１のＮＯ）、再構成機能部２１３は、ＲＡＩＤ機能部２１１によって検出されたＨＤＤの故障により、再構成対象ストライプにおいてＰパリティが欠損したか否かを判定する（ステップＳ４５）。この場合、再構成機能部２１３は、上記したＱパリティが欠損したか否かの判定処理と同様に、Ｐパリティが欠損したか否かを判定することができる。
【０１１７】
再構成対象ストライプにおいてＰパリティが欠損したと判定された場合を想定する（ステップＳ４５のＹＥＳ）。この場合、再構成対象ストライプにおいては、Ｐパリティが欠損した状態となっている。
【０１１８】
この場合、再構成機能部２１３は、再構成対象ストライプにおける全てのデータブロックを読み出す。再構成機能部２１３は、読み出されたデータブロックからＸＯＲ演算によるＰパリティを再計算する（ステップＳ４６）。
【０１１９】
次に、再構成機能部２１３は、再計算されたＰパリティを新ＨＤＤに書き込む（ステップＳ４７）。
【０１２０】
一方、再構成対象ストライプにおいてＰパリティが欠損していないと判定された場合（ステップＳ４５のＮＯ）、つまり、再構成対象ストライプにおいてデータブロックのうちの１つが欠損したと判定された場合、再構成機能部２１３は、再構成対象ストライプにおけるデータブロック（欠損したデータブロック以外のデータブロック）及びＰパリティから当該欠損したデータブロックを再計算する（ステップＳ４８）。なお、欠損したデータブロックの再計算には、Ｐパリティの代わりに再構成対象ストライプにおけるＱパリティを用いても構わない。
【０１２１】
次に、再構成機能部２１３は、再計算されたデータブロックを新ＨＤＤに書き込む（ステップＳ４９）。
【０１２２】
上記したように、再構成対象ストライプに対してストライプ再構成処理を実行することによって、Ｑパリティが欠損した再構成対象ストライプにおいては前述したパリティ置換処理において既にＱパリティが再計算されているため、Ｐパリティの計算処理と比較して処理量（処理時間）の多いＱパリティの計算処理を省略することができる。
【０１２３】
ここで、図１０を参照して、ＨＤＤ３０-1、３０-2、…、３０-6のうちの１台の故障がＲＡＩＤ機能部２１１によって検出された場合のＲＡＩＤコントローラ２０の動作（主として、パケット置換処理及びストライプ再構成処理）について具体的に説明する。
【０１２４】
ここでは、前述した図４に示すディスクアレイ装置１０が有するＨＤＤ３０-1、３０-2、…、３０-6のうちのＨＤＤ３０-2の故障がＲＡＩＤ機能部２１１によって検出されたものとして説明する。
【０１２５】
図１０に示す例では、ストライプ番号１、２、４、５及び６のストライプ（上から１、２、４、５及び６番目のストライプ）では、ＨＤＤ３０-2の故障によりデータブロックまたはＰパリティが欠損している。一方、ストライプ番号３のストライプ（上から３番目のストライプ）では、ＨＤＤ３０-2の故障によりＱパリティが欠損している。
【０１２６】
なお、図１０に示すＨＤＤの台数及びデータの配列規則によれば、例えばストライプ番号６以降のストライプについても同様にＨＤＤ３０-2の故障によりＱパリティが欠損したストライプを算出できる。図１０に示す例では、６ストライプ毎、つまり、ストライプ番号６Ｎ＋３（Ｎ＝０、１、２、…）のストライプにおいて、ＨＤＤ３０-2の故障によりＱパリティが欠損していることが算出できる。同様に、ストライプ番号６Ｎ＋４のストライプにおいて、ＨＤＤ３０-2の故障によりＰパリティが欠損していることが算出できる。
【０１２７】
ここで、故障したＨＤＤ３０-2が新ＨＤＤに交換される前に、ストライプ番号３のストライプを置換対象ストライプとしてパリティ置換処理が実行された場合を想定する（ステップＳ５１）。この場合、図１０に示すように、ストライプ番号３のストライプにおけるデータブロック（ここでは、ＨＤＤ３０-3、３０-4、３０-5及び３０-6に格納されているＤ３１、Ｄ３２、Ｄ３３及びＤ３４）からガロア演算によりＱパリティ（Ｑ３）が再計算される。この再計算されたＱ３は、このストライプ番号３のストライプにおいてＰパリティ（Ｐ３）が格納されるべき位置（ここでは、ＨＤＤ３０-1）に上書きされる。
【０１２８】
なお、ストライプ番号３のストライプ以外のストライプを置換対象ストライプとするパリティ置換処理においては、当該置換対象ストライプにおいてはＱパリティが欠損していないためＱパリティの再計算及び上書き等の処理は実行されない。
【０１２９】
ここで、故障したＨＤＤ３０-2が新たなＨＤＤ１００に交換され、再構成処理が実行される場合を想定する（ステップＳ５２）。この場合、図１０に示すデータブロック（Ｄ１２）が欠損したストライプ番号１のストライプにおいては、当該ストライプにおけるデータブロック（ここでは、ＨＤＤ３０-1、３０-3及び３０-4に格納されているＤ１１、Ｄ１３及びＤ１４）及びＰパリティ（ここでは、ＨＤＤ３０-5に格納されているＰ１）からＤ１２が復元（再計算）され、当該復元されたＤ１２が新ＨＤＤ１００に書き込まれる。なお、ストライプ番号２、５及び６のストライプについても同様であるためその詳しい説明を省略する。
【０１３０】
また、Ｑパリティ（Ｑ３）が欠損したストライプ番号３のストライプにおいては、当該ストライプにおける本来Ｐパリティが格納されるべき位置（ここでは、ＨＤＤ３０-1）のＱパリティ（ここでは、Ｑ３）が新ＨＤＤ１００に書き込まれる。また、ストライプ番号３のストライプにおけるデータブロック（ここでは、ＨＤＤ３０-3、３０-4、３０-5及び３０-6に格納されているＤ３１、Ｄ３２、Ｄ３３及びＤ３４）からＸＯＲ演算によりＰパリティ（ここでは、Ｐ３）が再計算され、Ｑ３が上書きされていたＨＤＤ３０-1（本来Ｐ３が格納されるべき位置）に当該Ｐ３が書き込まれる。つまり、ＨＤＤ３０-2の故障によりＱ３が欠損した場合であっても、再構成処理時に当該Ｑ３の再計算をすることなくストライプを再構成できる。
【０１３１】
また、Ｐパリティ（Ｐ４）が欠損したストライプ番号４のストライプにおいては、当該ストライプにおけるデータブロック（ここでは、ＨＤＤ３０-1、３０-4、３０-5及び３０-6に格納されているＤ４４、Ｄ４１、Ｄ４２及びＤ４３）からＸＯＲ演算によりＰパリティ（ここでは、Ｐ４）が再計算され、当該再計算されたＰ４が新ＨＤＤ１００に書き込まれる。
【０１３２】
上記したように本実施形態においては、ＲＡＩＤ６を構成する複数のＨＤＤ（ＨＤＤ３０-1、３０-2、…、３０-6）のうちの１台の故障によりＱパリティが欠損したストライプにおいて、当該ストライプにおける全てのデータブロックからガロア演算により当該欠損したＱパリティが再計算され、当該再計算されたＱパリティが当該ストライプにおけるＰパリティ（の位置）に上書きされる。本実施形態においては、故障が検出されたＨＤＤを新たなＨＤＤと交換することによりＲＩＡＤ６を再構成する場合に、当該故障によりＱパリティが欠損したストライプにおいてＰパリティの位置に上書きされたＱパリティを当該新たなＨＤＤに書き込み、当該ストライプにおける全てのデータブロックからＸＯＲ演算によりＰパリティが再計算され、本来Ｐパリティが格納される位置（Ｑパリティが上書きされていた位置）に当該再計算されたＰパリティが書き込まれる。
【０１３３】
例えばＲＡＩＤ５のように冗長性がＨＤＤ１台である構成（つまり、ＨＤＤ１台までの故障に耐えられる構成）の場合では、１台故障後に更に他のＨＤＤの故障が発生するような状況には耐えられる余裕がないため、当該ＲＡＩＤの再構成作業の優先度は相当に高く、Ｉ／Ｏ性能の低下を認容せざるを得ない場合が多い。
【０１３４】
しかしながら、ＲＡＩＤ６においては冗長性がＨＤＤ２台であるため、１台故障時においては更に１台の故障には耐え得る余裕があるため、上記したＲＡＩＤ５等と比較すると、この場合におけるＲＡＩＤの再構成作業の緊急性は必ずしも高いものではない。したがって、故障が検出された物理的なＨＤＤの交換自体が先延ばしにされる場合が多い。
【０１３５】
また、ＲＡＩ６においては、ＨＤＤ１台故障後にＨＤＤを交換することによりＲＡＩＤの再構成が行われる場合、上記したように更に１台のＨＤＤの故障には耐え得るため、通常のＩ／Ｏ処理を優先的に実行し、再構成動作は当該Ｉ／Ｏ処理がない（または少ない）ときに実行される、という運用が効率的である。しかしながら、このような運用においては再構成の完了まで多くの時間を要するため、この間に別のＨＤＤが故障した場合には緊急の再構成が必要となる場合がある。
【０１３６】
このような運用において、上記した本実施形態によれば、多くの処理時間を要するＱパリティの再計算を再構成前の段階でしておくため、再構成時にはＱパリティを計算することがなくなり、代わりにＰパリティの計算が実行されることになる。
【０１３７】
このＰパリティの計算は、Ｑパリティの計算に比べて高速かつ少ないリソースで実行できる。このため、本実施形態においては、再構成時のＩ／Ｏ性能の低下を軽減し、また、再構成に要する時間を短縮することが可能となる。
【０１３８】
すなわち、本実施形態においては、故障が検出されたＨＤＤの交換後に再構成作業の全てを実行するのではなく、当該作業の一部（多くの処理時間を要するＱパリティの再計算処理）をＨＤＤ交換前（つまり、再構成作業前）に実行するため、Ｉ／Ｏ性能に与える悪影響を軽減することが可能となる。
【０１３９】
なお、本実施形態においては、ＨＤＤ交換前にパリティ置換処理でＱパリティの再計算が実行されるが、当該処理はいつでも停止または中断しても構わないため、通常のＩ／Ｏ処理に影響を与えない範囲で実行されるように配分することができる。
【０１４０】
また、本実施形態においては、ディスクアレイ装置１０が有するＲＡＩＤコントローラ２０はＩ／Ｏバス上にハードウェアとして存在する、例えばPCI-Express上のＲＡＩＤカードのような形式であるものとして説明したが、当該ＲＡＩＤコントローラ２０は、これとは異なる形式であっても構わない。具体的には、ＲＡＩＤコントローラ２０は、例えば、ＲＡＩＤコントローラ２０がＣＰＵ内の回路として実装される形式、ＲＡＩＤコントローラ２０がチップセットに内蔵されており、内部バスに接続されている形式、または、ＲＡＩＤコントローラ２０のハードウェアが存在せず、コンピュータの主プロセッサと主メモリによって実行されるソフトウェアである形式のいずれであっても本願発明を適用することは可能である。
【０１４１】
また、本実施形態においては、ディスクアレイ装置１０が物理記憶装置としてＨＤＤを有するものとして説明したが、例えば半導体記憶装置のような他の物理記憶装置を用いてＲＡＩＤ６を構成する場合についても容易に適用可能である。
【０１４２】
また、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。  
【符号の説明】
【０１４３】
１０…ディスクアレイ装置、２０…ＲＡＩＤコントローラ（ディスクアレイ制御装置）、２１…ＲＡＩＤコントローラプロセッサ、２２…ＲＡＩＤコントローラメモリ、３０-1、３０-2、…、３０-n…ＨＤＤ（物理記憶装置）、２１１…ＲＡＩＤ機能部、２１２…パリティ置換機能部、２１３…再構成機能部、２２１…置換完了位置格納部。
【図１】
2011008583.tif 000003
【図２】
2011008583.tif 000004
【図３】
2011008583.tif 000005
【図４】
2011008583.tif 000006
【図５】
2011008583.tif 000007
【図６】
2011008583.tif 000008
【図７】
2011008583.tif 000009
【図８】
2011008583.tif 000010
【図９】
2011008583.tif 000011
【図１０】
2011008583.tif 000012