(57)【特許請求の範囲】
【請求項１】
それぞれ複数の記憶装置の記憶領域によって構成される第１の論理記憶領域および第２の論理記憶領域に対するデータアクセス処理を制御し、前記第１の論理記憶領域および前記第２の論理記憶領域のそれぞれを、パリティを用いてデータが冗長化されるとともに、パリティが複数の記憶装置に分散して配置されるように管理するアクセス制御部と、
前記第１の論理記憶領域の一部を構成する記憶装置が故障したとき、前記第１の論理記憶領域のデータのうち故障した記憶装置に記録されていたデータを生成して、生成したデータを前記第２の論理記憶領域のうち前記第２の論理記憶領域用のパリティが記録されていたパリティ領域に格納させる制御を行う復旧制御部と、
を有するストレージ制御装置と、
前記第１の論理記憶領域を構成する複数の記憶装置と、
前記第２の論理記憶領域を構成する複数の記憶装置と、
を備えることを特徴とするストレージシステム。
【請求項２】
前記復旧制御部は、前記アクセス制御部に、前記故障した記憶装置の記憶領域の代わりに前記パリティ領域を前記第１の論理記憶領域に組み込み、データの冗長度を維持した状態で前記第１の論理記憶領域の管理を続行させ、前記第２の論理記憶領域から前記パリティ領域を切り離し、データの冗長度を低下させた状態で前記第２の論理記憶領域の管理を続行させることを特徴とする請求項１記載のストレージシステム。
【請求項３】
前記アクセス制御部は、前記第１の論理記憶領域に前記パリティ領域が組み込まれた状態において、ホスト装置から前記第１の論理記憶領域のうち前記故障した記憶装置に記録されていたデータの読み出しを要求されたとき、過去の一定期間における前記ホスト装置からの前記第２の論理記憶領域に対するアクセス要求の履歴に基づいて、読み出しを要求されたデータを前記パリティ領域から読み出すか、または、記憶装置の故障前に前記第１の論理記憶領域を構成していた複数の記憶装置のうち前記故障した記憶装置以外の記憶装置に格納されているデータを基に、読み出しを要求されたデータを算出するかを選択することを特徴とする請求項２記載のストレージシステム。
【請求項４】
前記アクセス制御部は、前記第１の論理記憶領域に前記パリティ領域が組み込まれた状態において、ホスト装置から前記第１の論理記憶領域のうち前記故障した記憶装置に記録されていたデータの読み出しを要求されたとき、前記ホスト装置から受信した前記第２の論理記憶領域に対するアクセス要求のうち未処理のアクセス要求の数に基づいて、読み出しを要求されたデータを前記パリティ領域から読み出すか、または、記憶装置の故障前に前記第１の論理記憶領域を構成していた複数の記憶装置のうち前記故障した記憶装置以外の記憶装置に格納されているデータを基に、読み出しを要求されたデータを算出するかを選択することを特徴とする請求項２記載のストレージシステム。
【請求項５】
前記復旧制御部は、前記故障した記憶装置が新たな記憶装置に交換されると、前記パリティ領域に格納されたデータを交換された記憶装置に転送し、前記第２の論理記憶領域における前記パリティ領域以外の領域に格納されたデータを基にパリティを計算して、算出されたパリティを前記パリティ領域に書き込むことを特徴とする請求項１〜４のいずれか１項に記載のストレージシステム。
【請求項６】
前記復旧制御部は、前記第１の論理記憶領域の一部を構成する記憶装置が故障し、前記第２の論理記憶領域としてデータが３重に冗長化された論理記憶領域を選択する際、前記第１の論理記憶領域と同じ重要度またはそれより低い重要度が付与された論理記憶領域を選択することを特徴とする請求項１〜５のいずれか１項に記載のストレージシステム。
【請求項７】
前記復旧制御部は、前記第１の論理記憶領域の一部を構成する記憶装置が故障し、前記第２の論理記憶領域としてデータが２重に冗長化された論理記憶領域を選択する際、前記第１の論理記憶領域に付与された重要度より低い重要度が付与された論理記憶領域を選択することを特徴とする請求項１〜５のいずれか１項に記載のストレージシステム。
【請求項８】
それぞれ複数の記憶装置の記憶領域によって構成される第１の論理記憶領域および第２の論理記憶領域に対するデータアクセス処理を制御し、前記第１の論理記憶領域および前記第２の論理記憶領域のそれぞれを、パリティを用いてデータが冗長化されるとともに、パリティが複数の記憶装置に分散して配置されるように管理するアクセス制御部と、
前記第１の論理記憶領域の一部を構成する記憶装置が故障したとき、前記第１の論理記憶領域のデータのうち故障した記憶装置に記録されていたデータを生成して、生成したデータを前記第２の論理記憶領域のうち前記第２の論理記憶領域用のパリティが記録されていたパリティ領域に格納させる制御を行う復旧制御部と、
を有することを特徴とするストレージ制御装置。
【請求項９】
それぞれ複数の記憶装置の記憶領域によって構成される第１の論理記憶領域および第２の論理記憶領域に対するデータアクセス処理を制御し、前記第１の論理記憶領域および前記第２の論理記憶領域のそれぞれを、パリティを用いてデータが冗長化されるとともに、パリティが複数の記憶装置に分散して配置されるように管理するストレージ制御装置におけるストレージ制御方法であって、
前記第１の論理記憶領域の一部を構成する記憶装置が故障したとき、前記第１の論理記憶領域のデータのうち故障した記憶装置に記録されていたデータを生成して、生成したデータを前記第２の論理記憶領域のうち前記第２の論理記憶領域用のパリティが記録されていたパリティ領域に格納する、
ことを特徴とするストレージ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム、ストレージ制御装置およびストレージ制御方法に関する。
【背景技術】
【０００２】
近年、ＨＤＤ（Hard Disk Drive）などの記憶装置を複数用いたストレージシステムが広く使用されている。このようなストレージシステムでは、一般的に、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）技術を用いて、データが２つ以上の記憶装置に冗長化されるような記録制御が行われることで、記録されるデータの安全性が高められている。
【０００３】
また、データが冗長化されたストレージシステムにおいて、記憶装置が故障すると、故障した記憶装置に記憶されていたデータが再構築されて、他の記憶装置に格納される。このような処理は、一般に「リビルド処理」と呼ばれる。リビルド処理が実行されることで、データの冗長度が回復する。
【０００４】
多くのストレージシステムでは、ホットスペア（Hot Spare）と呼ばれる予備用記憶装置が用意されており、このホットスペアを用いてリビルド処理が行われることが多い。一方、ホットスペアを備えないストレージシステムでは、第１のＲＡＩＤグループに属する記憶装置が故障したとき、データの冗長性を有する第２のＲＡＩＤグループに属する記憶装置を第２のＲＡＩＤグループから切り離し、切り離した記憶装置に対してリビルド処理を行う方法も考えられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１９７８８６号公報
【特許文献２】特開平１０−２６０７８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記のように、第２のＲＡＩＤグループに属する記憶装置を切り離して、切り離した記憶装置に対してリビルド処理を行った場合、第２のＲＡＩＤグループの運用は、ＲＡＩＤレベルが変更されてデータの冗長性が低下した状態で継続される。ここで、第２のＲＡＩＤグループがＲＡＩＤ−５，ＲＡＩＤ−６など、パリティが分散して記録されるように管理されていた場合には、ＲＡＩＤレベルの変更の際に、データの再構築および再配置が実行される。このようなデータの再構築や再配置の処理は、ホスト装置からのＩ／Ｏ（In/Out）要求に応じた記憶装置へのアクセス処理に影響を与え、アクセス処理速度を低下させてしまう可能性がある。
【０００７】
１つの側面では、本発明は、故障が発生した記憶装置が属するＲＡＩＤグループにおけるデータの冗長度を回復できるようにしたストレージシステム、ストレージ制御装置およびストレージ制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、アクセス制御部と復旧制御部とを有するストレージ制御装置を備えるストレージシステムが提供される。アクセス制御部は、それぞれ複数の記憶装置の記憶領域によって構成される第１の論理記憶領域および第２の論理記憶領域に対するデータアクセス処理を制御し、第１の論理記憶領域および第２の論理記憶領域のそれぞれを、パリティを用いてデータが冗長化されるとともに、パリティが複数の記憶装置に分散して配置されるように管理する。復旧制御部は、第１の論理記憶領域の一部を構成する記憶装置が故障したとき、第１の論理記憶領域のデータのうち故障した記憶装置に記録されていたデータを生成して、生成したデータを第２の論理記憶領域のうちパリティが記録されていたパリティ領域に格納する。また、ストレージシステムはさらに、上記の第１の論理記憶領域を構成する複数の記憶装置と、上記の第２の論理記憶領域を構成する複数の記憶装置とを備える。
【０００９】
また、上記目的を達成するために、上記のストレージ制御装置と同様の処理を実行するストレージ制御装置およびストレージ制御方法が提供される。
【発明の効果】
【００１０】
上記のストレージシステム、ストレージ制御装置およびストレージ制御方法によれば、第１の論理記憶領域におけるデータの冗長度を回復させることができる。また、その際に、第２の論理記憶領域を構成する記憶装置を切り離さないでもよいこととすることができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係るストレージシステムの構成例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの全体構成例を示す図である。
【図３】ＣＭのハードウェア構成例を示す図である。
【図４】ＣＭの処理機能の構成例を示すブロック図である。
【図５】第２の実施の形態におけるＨＤＤの故障時の処理例を示す図である。
【図６】第２の実施の形態におけるＨＤＤの交換時の処理例を示す図である。
【図７】ＨＤＤ故障時およびＨＤＤ交換時における処理の参考例を示す図である。
【図８】ＲＡＩＤ管理テーブルに登録される情報の例を示す図である。
【図９】ＲＬＵに属する２つのＨＤＤが故障した場合の処理手順の例を示すフローチャートである。
【図１０】結合状態とされたＲＬＵに対するＩ／Ｏ要求が発行されたときの処理手順の例を示すフローチャートである。
【図１１】故障したＨＤＤが交換された場合の処理手順の例を示すフローチャートである。
【図１２】第３の実施の形態におけるＨＤＤ故障時の処理例を示す図である。
【図１３】第３の実施の形態におけるＨＤＤの交換時の処理例を示す図である。
【図１４】第３の実施の形態において、ＲＬＵに属する２つのＨＤＤが故障した場合の処理手順の例を示すフローチャートである。
【図１５】第３の実施の形態において、結合状態とされたＲＬＵに対するＩ／Ｏ要求が発行されたときの処理手順の例を示すフローチャートである。
【図１６】第３の実施の形態において、故障したＨＤＤが交換された場合の処理手順の例を示すフローチャートである。
【図１７】第４の実施の形態におけるＣＭの処理機能の構成例を示すブロック図である。
【図１８】第４の実施の形態において、結合状態とされたＲＬＵに対する読み出し要求が発行されたときの処理手順の例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、実施の形態について図面を参照して詳細に説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るストレージシステムの構成例を示す図である。図１に示すストレージシステム１は、ストレージ制御装置１０と、複数の記憶装置２１〜２８とを含む。記憶装置２１〜２８は、ＨＤＤ、ＳＳＤ（Solid State Drive）などの不揮発性記憶装置である。また、ストレージ制御装置１０には、ホスト装置３０が接続されている。
【００１３】
ストレージ制御装置１０は、記憶装置２１〜２８に対するデータアクセス処理を制御する装置である。例えば、ストレージ制御装置１０は、ホスト装置３０からのＩ／Ｏ要求に応じて、所定の記憶装置にアクセスする。このストレージ制御装置１０は、アクセス制御部１１と、復旧制御部１２とを備える。なお、アクセス制御部１１および復旧制御部１２の処理は、例えば、ストレージ制御装置１０が備えるＣＰＵ（Central Processing Unit）が所定のプログラムを実行することで実現される。
【００１４】
アクセス制御部１１は、記憶装置２１〜２８へのアクセス処理を、それぞれ複数の記憶装置の記憶領域によって構成される論理記憶領域ごとに管理する。本実施の形態では例として、記憶装置２１〜２４のそれぞれの記憶領域によって構成される第１の論理記憶領域（以下、「ＲＬＵ＃１」と呼ぶ。ＲＬＵ：RAID Logical Unit）と、記憶装置２５〜２８のそれぞれの記憶領域によって構成される第２の論理記憶領域（以下、「ＲＬＵ＃２」と呼ぶ）とが設定されているものとする。
【００１５】
アクセス制御部１１は、ＲＬＵ＃１を、パリティを用いてデータが冗長化されるとともに、パリティが複数の記憶装置に分散して配置されるように管理する。例えば、アクセス制御部１１は、ＲＬＵ＃１を、ＲＡＩＤ−５またはＲＡＩＤ−６によって管理する。同様に、アクセス制御部１１は、ＲＬＵ＃２を、パリティを用いてデータが冗長化されるとともに、パリティが複数の記憶装置に分散して配置されるように管理する。
【００１６】
復旧制御部１２は、論理記憶領域を構成する記憶装置が故障したとき、次のような処理を実行する。ここでは例として、ＲＬＵ＃１の一部を構成する記憶装置２４が故障した場合について説明する。
【００１７】
復旧制御部１２は、ＲＬＵ＃１の一部を構成する記憶装置２４が故障したことを検出したとき（ステップＳ１）、ＲＬＵ＃１のデータのうち故障した記憶装置２４に記録されていたデータを生成して、生成したデータ（以下、「ＲＬＵ＃１のリビルドデータ」と呼ぶ）を、ＲＬＵ＃２のうちパリティが記録されていたパリティ領域に格納する（ステップＳ２）。前述のように、ＲＬＵ＃２では、パリティが記憶装置２５〜２８に分散して配置されている。このため、ＲＬＵ＃１のリビルドデータは、記憶装置２５〜２８に分散して格納される。
【００１８】
上記のステップＳ２の処理により、ＲＬＵ＃１におけるデータの冗長性を回復させることができる。一方、ＲＬＵ＃２では、ＲＬＵ＃２の記憶領域が記憶装置単位で切り離されることがなく、ＲＬＵ＃２の記憶領域のうちパリティ領域のみが、ＲＬＵ＃２の記憶領域として使用できない状態になる。これにより、ＲＬＵ＃２の記憶領域にはパリティ領域以外のデータがそのまま残ることになるので、データの再構築や再配置などを行うことなく、ＲＬＵ＃２に記録されたデータを容易に利用できる。
【００１９】
このように、ＲＬＵ＃２におけるデータの再構築や再配置を行う必要がなくなることから、記憶装置２４が故障した際の処理の負荷が軽減される。従って、記憶装置２４が故障した際の処理が、ホスト装置３０からのＩ／Ｏ要求に応じたアクセス制御部１１のアクセス処理に与える影響を少なくすることができ、ホスト装置３０からのＩ／Ｏ要求に応じたアクセス処理速度が著しく低下しないようにすることができる。
【００２０】
また、復旧制御部１２は、ＲＬＵ＃１のリビルドデータをＲＬＵ＃２のパリティ領域に格納した際に、アクセス制御部１１に、ＲＬＵ＃１，＃２を次のように管理させることができる。
【００２１】
復旧制御部１２は、アクセス制御部１１に、故障した記憶装置２４の記憶領域の代わりにＲＬＵ＃２のパリティ領域をＲＬＵ＃１に組み込み、データの冗長度を維持した状態でＲＬＵ＃１の管理を続行させる。これにより、アクセス制御部１１は、一部のデータの書き込み先の位置や読み出し元の位置が変わること以外、記憶装置２４の故障前と同様の処理によってＲＬＵ＃１に対するデータアクセス処理を制御できる。また、アクセス制御部１１がデータの冗長度を維持したままＲＬＵ＃１の管理を続行できるようになるまでの期間において、記憶装置２１〜２３ではデータの再配置が行われない。このため、この期間におけるストレージ制御装置１０の処理負荷が軽減され、ホスト装置３０からのＩ／Ｏ要求に応じたアクセス処理速度が著しく低下しないようにすることができる。
【００２２】
これとともに、復旧制御部１２は、アクセス制御部１１に、ＲＬＵ＃２からパリティ領域を切り離し、データの冗長度を低下させた状態でＲＬＵ＃２の管理を続行させる。すなわち、アクセス制御部１１は、ＲＬＵ＃２のＲＡＩＤレベルを変更して、ＲＬＵ＃２の管理を続行する。前述のように、ＲＬＵ＃２の記憶領域にはパリティ領域以外のデータがそのまま残っているので、ストレージ制御装置１０は、ＲＬＵ＃２でのデータの再構築や再配置を行うことなく、ＲＬＵ＃２に対するデータアクセス処理を継続することができる。
【００２３】
また、ＲＬＵ＃２の記憶領域にはパリティ領域以外のデータがそのまま残っていることから、ホスト装置３０から読み出しを要求されたＲＬＵ＃２内のデータを、データの計算を行うことなく、記憶装置２５〜２８のいずれかから読み出すことができる。このため、ホスト装置３０からの要求に応じてＲＬＵ＃２からのデータ読み出し速度を低下させないようにすることもできる。
【００２４】
〔第２の実施の形態〕
図２は、第２の実施の形態に係るストレージシステムの全体構成例を示す図である。図２に示すストレージシステム１００は、ＣＥ（Controller Enclosure）２００と、ＤＥ（Drive Enclosure）３００とを含む。また、ＣＥ２００には、ホスト装置４００が接続されている。
【００２５】
ＣＥ２００は、ＣＭ（Controller Module）２０１，２０２を備える。ＣＭ２０１，２０２のそれぞれは、ホスト装置４００からの要求に応じて、ＤＥ３００内の記憶装置に対するデータの読み書きを行う。ＣＭ２０１，２０２は、ＤＥ３００内の記憶装置によって実現される物理記憶領域をＲＡＩＤによって管理し、これらの物理記憶領域に対するアクセスを制御する。
【００２６】
なお、ＣＭ２０１，２０２は、例えばルータなどを介して互いに接続されていてもよい。また、ＣＭは、ＣＥ２００内に１つのみ設けられてもよいし、３つ以上設けられてもよい。ただし、ＣＭが複数設けられることで、ＤＥ３００に対するアクセス制御系統が冗長化され、アクセス制御処理の信頼性が向上する。
【００２７】
ＤＥ３００は、ＣＭ２０１，２０２からのアクセス制御対象となる複数の記憶装置を備える。本実施の形態において、ＤＥ３００は、記憶装置としてＨＤＤを備えるディスクアレイ装置である。なお、ＤＥ３００が備える記憶装置としては、ＳＳＤなどの他の種類の不揮発性記憶装置を使用することもできる。また、ＣＥ２００には、複数のＤＥ３００が接続されていてもよい。
【００２８】
ホスト装置４００は、ユーザの操作に応じて、ＣＭ２０１，２０２に対して、ＤＥ３００内のＨＤＤへのアクセスを要求する。ホスト装置４００は、例えば、ユーザの操作に応じて、ＣＭ２０１，２０２のいずれかを通じて、ＤＥ３００内のＨＤＤからのデータの読み出しや、ＤＥ３００内のＨＤＤに対するデータの書き込みを行うことができる。
【００２９】
なお、ＣＥ２００内のＣＭ２０１，２０２は、ともに同様の構成を有し、同様の処理を実行可能である。そこで、以下、ＣＭ２０１についてのみ説明し、ＣＭ２０２についての説明を省略する。
【００３０】
図３は、ＣＭのハードウェア構成例を示す図である。
ＣＭ２０１は、ＣＰＵ２１１によって装置全体が制御されている。ＣＰＵ２１１には、ＲＡＭ（Random Access Memory）２１２および複数の周辺機器が、バス２１７を介して接続されている。ＲＡＭ２１２は、ＣＭ２０１の主記憶装置として使用され、ＣＰＵ２１１に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。
【００３１】
ＣＰＵ２１１には、周辺機器の例として、ＳＳＤ２１３、入力Ｉ／Ｆ（インタフェース）２１４、ＣＡ（Channel Adapter）２１５およびＤＩ（Drive Interface）２１６が接続されている。
【００３２】
ＳＳＤ２１３は、ＣＭ２０１の二次記憶装置として使用され、ＣＰＵ２１１によって実行されるプログラムやその実行に必要な各種のデータなどを記憶する。なお、二次記憶装置としては、例えば、ＨＤＤなどの他の種類の不揮発性記憶装置が使用されてもよい。
【００３３】
入力Ｉ／Ｆ２１４には、操作キーなどを備える入力装置２１４ａが接続されている。入力Ｉ／Ｆ２１４は、入力装置２１４ａに対する操作入力に応じた信号をＣＰＵ２１１に出力する。
【００３４】
ＣＡ２１５は、ホスト装置４００とＣＭ２０１との間でデータを送受信するインタフェース処理を実行する。ＣＡ２１５とホスト装置４００とは、例えば、ＦＣ（Fibre Channel）規格に従って通信する。
【００３５】
ＤＩ２１６は、ＤＥ３００とＣＭ２０１との間でデータを送受信するインタフェース処理を実行する。ＤＩ２１６とＤＥ３００とは、例えば、ＳＡＳ（Serial Attached SCSI，SCSI：Small Computer System Interface）規格に従って通信する。
【００３６】
図４は、ＣＭの処理機能の構成例を示すブロック図である。
ＣＭ２０１は、アクセス制御部２２０および復旧制御部２３０を備える。アクセス制御部２２０および復旧制御部２３０の処理は、例えば、ＣＭ２０１のＣＰＵ２１１が所定のプログラムを実行することで実現される。また、ＣＭ２０１の記憶装置には、ＲＡＩＤ管理テーブル２４０が記憶される。ＲＡＩＤ管理テーブル２４０は、例えばＳＳＤ２１３に記憶される。
【００３７】
アクセス制御部２２０は、ホスト装置４００からのＩ／Ｏ要求に応じて、ＤＥ３００内のＨＤＤにアクセスする。アクセス制御部２２０は、例えば、ホスト装置４００からデータの読み出し要求を受けたとき、要求されたデータをＤＥ３００内の所定のＨＤＤから読み出して、ホスト装置４００に送信する。一方、アクセス制御部２２０は、ホスト装置４００からデータの書き込み要求を受けたとき、ホスト装置４００から受信した書き込み対象のデータを、ＤＥ３００内の所定のＨＤＤに書き込む。
【００３８】
また、アクセス制御部２２０は、ＲＡＩＤ管理テーブル２４０に設定された情報に基づいて、ＤＥ３００内のＨＤＤに記録するデータをＲＡＩＤによって管理する。アクセス制御部２２０は、ＲＬＵごとに記録データを所定のＲＡＩＤレベルによって管理する。ＲＬＵは、ＤＥ３００に搭載された複数のＨＤＤの物理記憶領域を組み合わせて構成される論理記憶領域であり、ＲＡＩＤグループとも呼ばれる。アクセス制御部２２０は、例えば、各ＲＬＵを、ＲＡＩＤ−０，５，６を用いて管理することが可能である。
【００３９】
ＲＡＩＤ管理テーブル２４０は、ＲＬＵごとに、ＲＬＵの識別番号、適用されるＲＡＩＤレベル、ＲＬＵに属するＨＤＤを示す情報、ＲＬＵの制御状態を示す情報などを保持する。アクセス制御部２２０は、ＲＡＩＤ管理テーブル２４０を参照することで、例えば、データを記録する際の記録先のＨＤＤや、その記録の際に用いるＲＡＩＤレベルなどを判定する。
【００４０】
また、アクセス制御部２２０は、ＤＥ３００内のＨＤＤにおける故障の発生を検出した場合には、故障が発生したことを、故障したＨＤＤを識別する情報とともに復旧制御部２３０に通知する。さらに、アクセス制御部２２０は、復旧制御部２３０からの要求に応じて、ＤＥ３００内のＨＤＤにアクセスする場合もある。例えば、アクセス制御部２２０は、復旧制御部２３０からの要求に応じて、故障したＨＤＤのデータを再構築して別のＨＤＤに格納するリビルド処理や、故障したＨＤＤが交換されたときに、リビルド処理によって記録されたデータを交換されたＨＤＤに書き戻すコピーバック処理などを実行する。
【００４１】
復旧制御部２３０は、アクセス制御部２２０によってＤＥ３００内のＨＤＤの故障が検出された場合に、リビルド処理をアクセス制御部２２０に実行させる。後述するように、復旧制御部２３０は、リビルド処理におけるデータの格納先として、ホットスペア（Hot Spare）のＨＤＤの他、故障したＨＤＤが属するＲＬＵ以外のＲＬＵの記憶領域のうちのパリティの記憶領域を選択することができる。リビルド処理におけるデータの格納先を他のＲＬＵにおけるパリティの記憶領域とした場合には、データの再配置を行うことなくＲＡＩＤレベルが変更される。復旧制御部２３０は、リビルド処理やコピーバック処理、ＲＡＩＤレベルの変更処理などを、ＲＡＩＤ管理テーブル２４０の情報を更新することで制御する。
【００４２】
ここで、リビルド処理おけるデータの格納先を他のＲＬＵのパリティ領域とする場合の処理例について説明する。本実施の形態では、ＲＡＩＤ−６で運用されているＲＬＵに属する２つのＨＤＤが故障した場合に、故障したＨＤＤのうち１つのＨＤＤに記録されていたデータを再構築して、ＲＡＩＤ−６で運用されている他のＲＬＵにおけるパリティ領域に格納する。これにより、故障したＨＤＤが属していたＲＬＵと、他のＲＬＵにおけるデータがパリティ領域に格納されたＲＬＵとを、ともにＲＡＩＤ−５によって暫定的に運用できるようにする。
【００４３】
さらに、復旧制御部２３０は、故障したＨＤＤが交換されると、故障したＨＤＤが属するＲＬＵと、リビルド処理におけるデータの格納先とされた他のＲＬＵとを、ＨＤＤの故障が発生する前の状態に戻す処理を実行する。
【００４４】
なお、以下の説明では、ＨＤＤを識別するディスク番号を「ＤＩＳＫ＃ｘｘ」と記述し、ディスク番号が「ＤＩＳＫ＃ｘｘ」であるＨＤＤを、単に「ＤＩＳＫ＃ｘｘ」と呼ぶ。さらに、ＲＬＵを識別するＲＬＵ番号を「ＲＬＵ＃ｙｙ」と記述し、ＲＬＵ番号が「ＲＬＵ＃ｙｙ」であるＲＬＵを、単に「ＲＬＵ＃ｙｙ」と呼ぶ。
【００４５】
図５は、第２の実施の形態におけるＨＤＤの故障時の処理例を示す図である。
図５における「状態１」は、ＲＬＵ＃００およびＲＬＵ＃０１がともに正常に運用されている状態を示す。ＲＬＵ＃００は、ＤＩＳＫ＃００〜＃０４の物理記憶領域によって構成され、ＲＡＩＤ−６によって管理される。ＲＬＵ＃０１は、ＤＩＳＫ＃１０〜＃１４の物理記憶領域によって構成され、ＲＡＩＤ−６によって管理される。
【００４６】
また、ＲＬＵ＃００には、データＤ０〜Ｄ（ｎ−１）、ＰパリティＰ０〜Ｐ（ｍ−１）およびＱパリティＱ０〜Ｑ（ｍ−１）が格納されているものとする（ただし、ｎ，ｍはともに１以上の整数）。一方、ＲＬＵ＃０１には、データＤ’０〜Ｄ’（ｎ−１）、ＰパリティＰ’０〜Ｐ’（ｍ−１）およびＱパリティＱ’０〜Ｑ’（ｍ−１）が格納されているものとする。
【００４７】
データＤ０〜Ｄ（ｎ−１）は、ホスト装置４００からＲＬＵ＃００に対して書き込みを要求されたデータを一定長に分割したデータブロックである。また、データＤ’０〜Ｄ’（ｎ−１）は、ホスト装置４００からＲＬＵ＃０１に対して書き込みを要求されたデータを一定長に分割したデータブロックである。
【００４８】
ＰパリティＰ０〜Ｐ（ｍ−１），Ｐ’０〜Ｐ’（ｍ−１）と、ＱパリティＱ０〜Ｑ（ｍ−１），ＱパリティＱ’０〜Ｑ’（ｍ−１）とは、それぞれ異なる計算方法で得られるパリティである。例えば、図５において、ＰパリティＰ０は、データＤ０〜Ｄ２の排他的論理和として計算される一方、ＱパリティＱ０は、データＤ０〜Ｄ２に対して重み付けした値の排他的論理和として計算される。
【００４９】
なお、ＲＬＵ＃００に記録される最大ブロック数ｎと、ＲＬＵ＃０１に記録される最大ブロック数ｎとは、同じ値でなくてもよい。また、ＲＬＵ＃００におけるＰパリティ、Ｑパリティそれぞれの最大パリティ数ｍ（すなわち、最大ストライプ数）と、ＲＬＵ＃０１におけるＰパリティ、Ｑパリティそれぞれの最大パリティ数ｍ（すなわち、最大ストライプ数）も、同じ値でなくてもよい。ただし、次の「状態２」に示す処理を実行可能にするためには、ＲＬＵ＃００における最大パリティ数ｍは、ＲＬＵ＃０１における最大パリティ数ｍ以上である必要がある。
【００５０】
ここで、ＲＬＵ＃０１に属するＤＩＳＫ＃１３，＃１４が故障したものとする。ＤＩＳＫ＃１３，＃１４が故障すると、ＲＬＵ＃０１においてデータの冗長性が失われる。復旧制御部２３０は、データが３重に冗長化された（すなわち、ＲＡＩＤ−６で管理された）他のＲＬＵ（ここでは例としてＲＬＵ＃００）を選択し、選択したＲＬＵと、ＨＤＤが故障したＲＬＵとを結合する。ここで言う「ＲＬＵの結合」とは、ＨＤＤが故障したＲＬＵの物理記憶領域に、故障したＨＤＤの代わりに、正常状態である他のＲＬＵのパリティ領域を組み込むことを示す。これにより、復旧制御部２３０は、各ＲＬＵをデータが２重に冗長化されたＲＡＩＤ−５によって暫定的に運用できるようにする。
【００５１】
ＲＬＵ＃０１に属するＤＩＳＫ＃１３，＃１４が故障すると、復旧制御部２３０は、図５の「状態２」に示すように、他方のＲＬＵ＃００におけるＰパリティまたはＱパリティの記憶領域をデータの格納先として、ＲＬＵ＃０１のリビルド処理をアクセス制御部２２０に開始させる。図５の例では、復旧制御部２３０は、ＤＩＳＫ＃１３に記録されていたデータを再構築し、再構築したデータ（以下、「リビルドデータ」と呼ぶ）をＲＬＵ＃００におけるＱパリティの記憶領域に格納するように、アクセス制御部２２０に要求する。
【００５２】
例えば、アクセス制御部２２０は、データＤ’０〜Ｄ’２を基に、ＤＩＳＫ＃１３に記録されていたＰパリティＰ’０を計算によって再構築し、再構築したＰパリティＰ’０を、ＲＬＵ＃００におけるＱパリティＱ０の記憶領域に上書きする。また、アクセス制御部２２０は、データＤ’４，Ｄ’５およびＰパリティＰ’１を基に、ＤＩＳＫ＃１３に記録されていたデータＱ’１を計算によって再構築し、再構築したデータＱ’１を、ＲＬＵ＃００におけるＱパリティＱ１の記憶領域に上書きする。
【００５３】
ＲＬＵ＃０１のリビルド処理が終了すると、復旧制御部２３０は、図５の「状態３」に示すように、ＲＬＵ＃００，＃０１を結合状態にする。すなわち、復旧制御部２３０は、故障したＤＩＳＫ＃１３，＃１４をＲＬＵ＃０１から切り離す。さらに、復旧制御部２３０は、ＲＬＵ＃００における、ＲＬＵ＃０１のリビルドデータが格納されたＱパリティ領域を、ＲＬＵ＃００から切り離し、切り離したＱパリティ領域をＲＬＵ＃０１に組み込む。
【００５４】
これにより、ＲＬＵ＃０１を構成する物理記憶領域は、図５中の太線で示す領域となる。復旧制御部２３０は、アクセス制御部２２０に、ＲＬＵ＃００のＱパリティ領域を組み込んだＲＬＵ＃０１を、ＲＡＩＤ−５相当の管理方法で暫定的に運用させる。これとともに、復旧制御部２３０は、アクセス制御部２２０に、Ｑパリティ領域を除くＲＬＵ＃００の領域を、ＲＡＩＤ−５相当の管理方法で暫定的に運用させる。
【００５５】
以上のようなリビルド処理およびＲＬＵの結合処理により、ＨＤＤが２台故障したＲＬＵ＃０１については、データの冗長度を２重冗長状態に回復させることができる。また、ＲＬＵ＃０１のリビルド先としてＲＡＩＤ−６で管理されていたＲＬＵ＃００が選択されることで、ＲＬＵ＃００は、データの冗長度が低下するものの、データの冗長性を持つ状態に保たれる。従って、ＲＬＵ＃００，＃０１の全体としては、データの冗長性を持つ状態に保つことができる。
【００５６】
図６は、第２の実施の形態におけるＨＤＤの交換時の処理例を示す図である。
ＤＩＳＫ＃１３，＃１４が新たなＨＤＤに交換されると、図６の「状態４」に示すように、ＲＬＵ＃０１についてのコピーバック処理が実行される。復旧制御部２３０は、アクセス制御部２２０に、ＲＬＵ＃００のＱパリティ領域に記録されたデータを、交換されたＤＩＳＫ＃１３にコピーさせる。アクセス制御部２２０は、ＲＬＵ＃００のＱパリティ領域からデータを読み出し、ＤＩＳＫ＃１３における、その読み出し元と同じストライプ番号の位置に、読み出したデータを書き込む。
【００５７】
コピーバック処理が終了すると、復旧制御部２３０は、ＲＬＵ＃００，＃０１を結合状態から分離状態に遷移させる。この処理では、復旧制御部２３０は、交換されたディスク＃１３，＃１４をＲＬＵ＃０１に組み込むとともに、ＲＬＵ＃００のＱパリティ領域をＲＬＵ＃０１から切り離す。また、復旧制御部２３０は、ＲＬＵ＃００のＱパリティ領域をＲＬＵ＃００に組み込み直す。
【００５８】
図６の「状態５」は、ＲＬＵが分離された状態を示し、復旧制御部２３０は、この状態からさらに、ＲＬＵ＃００，＃０１の各ＲＡＩＤレベルをＲＡＩＤ−６に戻すためのデータ復元処理を実行させる。復旧制御部２３０は、アクセス制御部２２０に、ＲＬＵ＃００におけるＱパリティを再計算し、Ｑパリティ領域に上書きするように要求する。アクセス制御部２２０は、例えば、ＤＩＳＫ＃００〜＃０２に格納されたデータＤ０〜Ｄ２を用いてＱパリティＱ０を再計算し、ＤＩＳＫ＃０４におけるデータＤ０〜Ｄ２と同じストライプ番号の位置に上書きする。
【００５９】
これとともに、復旧制御部２３０は、アクセス制御部２２０に、ＲＬＵ＃０１のデータのうちＤＩＳＫ＃１４に格納するデータを再構築させ、ＤＩＳＫ＃１４に格納させる。アクセス制御部２２０は、例えば、データＤ’０〜Ｄ’２を基にＱパリティＱ’０を再計算し、ＤＩＳＫ＃１４におけるデータＤ’０〜Ｄ’２と同じストライプ番号の位置に格納する。また、アクセス制御部２２０は、データＤ’０，Ｄ’２およびＰパリティＰ’１（またはＱパリティＱ’１）を基にデータＤ’０を再構築し、ＤＩＳＫ＃１４におけるデータＤ’４，Ｄ’５と同じストライプ番号の位置に格納する。
【００６０】
なお、図６の「状態５」では、データが復元される位置を点線で表している。
データの復元処理が完了すると、復旧制御部２３０は、図６の「状態６」に示すように、ＲＬＵ＃００，＃０１の各ＲＡＩＤレベルをともにＲＡＩＤ−６に変更し、ＲＬＵ＃００，＃０１を図５の「状態１」と同様の正常状態に復帰させる。
【００６１】
ここで、２台のＨＤＤが故障した場合の処理の参考例を示す。図７は、ＨＤＤ故障時およびＨＤＤ交換時における処理の参考例を示す図である。
図７の「状態１１」は、前述の図５の「状態１」から、ＤＩＳＫ＃１３，＃１４が故障した状態を示す。図７では参考例として、この「状態１１」から、ＤＩＳＫ＃００〜＃０３を用いてＲＬＵ＃００をＲＡＩＤ−５で運用するとともに、ＤＩＳＫ＃０４，＃１０〜＃１２を用いてＲＬＵ＃０１をＲＡＩＤ−５で運用する処理を示す。この場合、まず、ＲＬＵ＃００，＃０１の両方におけるリビルド処理が実行される。
【００６２】
ＲＬＵ＃００では、データブロックとＰパリティとが、ＤＩＳＫ＃００〜＃０３において再配置される。そして、図７の「状態１２」に示すように、ＤＩＳＫ＃０４がＲＬＵ＃００から切り離され、ＲＬＵ＃００は、ＤＩＳＫ＃００〜＃０３の記憶領域を用いてＲＡＩＤ−５によって運用される。
【００６３】
また、ＲＬＵ＃０１からは、故障したＤＩＳＫ＃１３，＃１４が切り離され、ＲＬＵ＃００から切り離されたＤＩＳＫ＃０４が、ＲＬＵ＃０１に組み込まれる。ＲＬＵ＃０１では、ＤＩＳＫ＃１０〜＃１２に格納されていたデータを基に不足分のデータブロック（例えばデータＤ’３）およびＰパリティ（例えばＰパリティＰ’０）が再構築される。そして、再構築されたデータブロックおよびＰパリティが、ＤＩＳＫ＃０４，＃１０〜＃１２に再配置される。データの再配置が完了すると、図７の「状態１２」に示すように、ＲＬＵ＃０１はＲＡＩＤ−５によって運用される。
【００６４】
この後、ＤＩＳＫ＃１３，＃１４が新たなＨＤＤに交換されると、ＲＬＵ＃００，＃０１の両方におけるデータ復元処理が実行される。「状態１２」においてＤＩＳＫ＃０４，＃１０〜＃１２に再配置されたＲＬＵ＃０１のデータは、一旦ＲＡＭ２１２に読み出され、読み出されたデータはＤＩＳＫ＃１０〜＃１４に再配置される。さらに、ＲＬＵ＃０１におけるＱパリティが再計算され、ＤＩＳＫ＃１０〜＃１４のＱパリティ領域に格納される。このようなＲＬＵ＃０１におけるデータ復元処理が終了すると、図７の「状態１３」に示すように、ＲＬＵ＃０１は、図５の「状態１」のように、ＤＩＳＫ＃１０〜＃１４を用いてＲＡＩＤ−６によって運用される。
【００６５】
また、「状態１２」においてＤＩＳＫ＃００〜＃０３に再配置されたＲＬＵ＃００のデータは、一旦ＲＡＭ２１２に読み出され、読み出されたデータはＤＩＳＫ＃００〜＃０４に再配置される。さらに、ＲＬＵ＃００におけるＱパリティが再計算され、ＤＩＳＫ＃００〜＃０４のＱパリティ領域に格納される。このようなＲＬＵ＃００におけるデータ復元処理が終了すると、図７の「状態１３」に示すように、ＲＬＵ＃００は、図５の「状態１」のように、ＤＩＳＫ＃００〜＃０４を用いてＲＡＩＤ−６によって運用される。
【００６６】
ここで、図５，図６に示した本実施の形態の処理と、図７に示した処理とを比較する。
図７の処理では、状態１１から状態１２に遷移する過程で、ＤＩＳＫ＃００〜＃０４，＃１０〜＃１２のすべてにおいてデータの再配置が行われる。これに対して、図５における状態１から状態３まで遷移する過程では、ＤＩＳＫ＃００〜＃０４，＃１０〜＃１２の記憶領域のうち、ＲＬＵ＃００のＱパリティ領域においてデータの上書きが実行されるのみであり、それ以外の領域ではデータの書き込みが一切行われない。
【００６７】
このため、ＤＩＳＫ＃１３，＃１４の故障が発生してから、ＲＬＵ＃００，＃０１がともにＲＡＩＤ−５による暫定運用を開始するまでの期間では、図５の処理の方がＤＩＳＫ＃００〜＃０４，＃１０〜＃１２におけるデータの書き込み頻度が明らかに少ない。従って、図５の処理の方が、上記期間におけるＣＭ２０１のＣＰＵ２１１の処理負荷が低くなる。このため、ホスト装置４００からのＩ／Ｏ要求に応じたＨＤＤへのアクセス処理に対してリビルド処理が与える影響が小さくなり、Ｉ／Ｏ要求に対する応答速度が著しく低下することを抑制できる。
【００６８】
また、状態３におけるＲＬＵ＃００の領域は、状態１と比較してＱパリティ領域が切り離されただけの状態となる。このため、状態３において、ホスト装置４００からのＩ／Ｏ要求に応じたＲＬＵ＃００へのアクセス処理手順を、状態１でのアクセス処理手順から大きく変えないようにすることができる。例えば、状態３において、ホスト装置４００から、ＲＬＵ＃００からの読み出しが要求された場合、アクセス制御部２２０は、状態１とまったく同じ処理手順で要求されたデータを読み出す。また、状態３において、ホスト装置４００からＲＬＵ＃００に対する書き込みが要求された場合、アクセス制御部２２０は、Ｑパリティの計算および記録を行わないこと以外、状態１と同じ処理手順でデータを書き込む。
【００６９】
さらに、図７の処理では、状態１２から状態１３に遷移する過程でも、ＤＩＳＫ＃００〜＃０４，＃１０〜＃１２のすべてにおいてデータの再配置が行われる。これに対して、図５の状態３から図６の状態６に遷移する過程では、ＤＩＳＫ＃００〜＃０４の記憶領域のうちＲＬＵ＃００のＱパリティ領域に記録されていたデータが、交換されたＤＩＳＫ＃１４にコピーされるのみであり、それ以外のデータの再配置は行われない。
【００７０】
このため、ＤＩＳＫ＃１３，＃１４を交換してから、ＲＬＵ＃００，＃０１がともにＲＡＩＤ−６による運用を再開するまでの期間でも、図５，図６の処理の方がＤＩＳＫ＃００〜＃０４，＃１０〜＃１２におけるデータのアクセス頻度が明らかに少ない。従って、図５，図６の処理の方が、上記期間におけるＣＭ２０１のＣＰＵ２１１の処理負荷が低くなり、ホスト装置４００からのＩ／Ｏ要求に応じたＨＤＤへのアクセス処理に対して、ＲＬＵ＃００，＃０１が元の状態に復帰するための処理が与える影響が小さくなる。
【００７１】
なお、図７の状態１２のように、ＲＬＵ＃００をＤＩＳＫ＃００〜＃０３で構成するとともに、ＲＬＵ＃０１をＤＩＳＫ＃０４，＃１０，＃１１で構成する場合には、ＲＬＵ＃００におけるデータの再配置を行わずに、ＲＬＵ＃００をＲＡＩＤ−５で暫定運用することもできる。しかしながら、この場合には、ＲＡＩＤ−５で暫定運用されたＲＬＵ＃００に対してホスト装置４００からデータの読み出し要求があったとき、一部のデータについてはデータ再構築のための計算が必要になり、読み出し要求に対する応答速度が低下する可能性がある。これに対して、図５の状態３では、ＲＬＵ＃００の領域には、ホスト装置４００からの読み出し要求対象となるデータブロックがすべて記憶されている。このため、データの読み出し要求を受けたときにデータを再構築する必要がなくなり、読み出し要求に対する応答速度の低下を防止できる。
【００７２】
なお、上記の図５，図６では、ＤＩＳＫ＃１３，＃１４が故障した際に、ＲＡＩＤ−６で運用されている他のＲＬＵのパリティ領域に対してリビルドデータを格納した。しかしながら、他の例として、ＲＡＩＤ−４またはＲＡＩＤ−５で運用されている他のＲＬＵのパリティ領域に対してリビルドデータを格納してもよい。この場合、パリティ領域にＲＬＵ＃０１のリビルドデータが格納されたＲＬＵは、ＲＡＩＤ−１によって運用が継続される。
【００７３】
次に、図８は、ＲＡＩＤ管理テーブルに登録される情報の例を示す図である。
ＲＡＩＤ管理テーブル２４０には、ＲＬＵごとにレコード２４１が登録される。各レコード２４１には、ＲＬＵを識別する「ＲＬＵ番号」が登録される。また、各レコード２４１には、「ディスク番号」、「ＲＡＩＤレベル」、「ストライプ数」、「Ｐパリティ状態」、「Ｐパリティ退避元ＲＬＵ番号」、「Ｑパリティ状態」、「Ｑパリティ退避元ＲＬＵ番号」、「ＲＡＩＤ状態」および「重要度」が登録される。
【００７４】
「ディスク番号」は、ＲＬＵを構成する物理記憶領域が属するＨＤＤの識別番号である。ＲＬＵは、複数のＨＤＤの物理記憶領域によって構成されるので、「ディスク番号」は、それらの複数のＨＤＤのそれぞれについて登録される。さらに、「ディスク番号」によって識別されるＨＤＤのそれぞれには、「ディスク状態」、「退避先ＲＬＵ番号」および「退避先パリティ識別」が登録される。
【００７５】
「ディスク状態」は、対応するＨＤＤの動作状態を示す。「ディスク状態」には、「正常」、「故障」、「リビルド中」、「退避中」および「コピーバック中」のいずれかが設定される。「正常」は、対応するＨＤＤが正常に動作していることを示し、「故障」は、対応するＨＤＤが故障していることを示す。「リビルド中」は、故障したＨＤＤのＲＬＵ領域に記録されていたデータのリビルド処理を実行中であることを示す。「退避中」は、リビルド処理が完了し、故障したＨＤＤに記録されていたデータがすべて他のＲＬＵのパリティ領域に格納されている状態を示す。「コピーバック中」は、交換されたＨＤＤに対して他のＲＬＵのパリティ領域からリビルドデータを書き戻す処理を実行中であることを示す。
【００７６】
「退避先ＲＬＵ番号」および「退避先パリティ識別」は、同じレコード２４１内の「ディスク状態」の欄に「リビルド中」または「退避中」が設定されている場合にのみ、情報が登録される。「退避先ＲＬＵ番号」は、リビルドデータの格納先として決定された他のＲＬＵの識別番号を示す。「退避先パリティ識別」は、他のＲＬＵにおけるリビルドデータの格納領域が、他のＲＬＵにおけるＰパリティとＱパリティのどちらの領域かを示す。
【００７７】
「ＲＡＩＤレベル」は、対応するＲＬＵの通常運用時におけるＲＡＩＤレベルを示す。
「ストライプ数」は、対応するＲＬＵを構成する各ＨＤＤに記録される最大のストライプ数を示す。
【００７８】
「Ｐパリティ状態」は、「ＲＡＩＤレベル」にＲＡＩＤ−４，５，６のいずれかが設定されている場合に、Ｐパリティ領域がどのように使用されているかの状態を示す。「Ｐパリティ状態」には、対応するＲＬＵにおけるデータブロックに基づくＰパリティが格納されている「通常状態」と、他のＲＬＵのリビルドデータが格納されている「退避データ格納中」とのいずれかが設定される。
【００７９】
「Ｐパリティ退避元ＲＬＵ番号」は、「Ｐパリティ状態」に「退避データ格納中」が設定されている場合に、Ｐパリティ領域に格納されたリビルドデータが属している他のＲＬＵの識別番号を示す。
【００８０】
「Ｑパリティ状態」は、「ＲＡＩＤレベル」にＲＡＩＤ−６が設定されている場合に、Ｑパリティ領域がどのように使用されているかの状態を示す。「Ｑパリティ状態」には、対応するＲＬＵにおけるデータブロックに基づくＱパリティが格納されている「通常状態」と、他のＲＬＵのリビルドデータが格納されている「退避データ格納中」とのいずれかが設定される。
【００８１】
「Ｑパリティ退避元ＲＬＵ番号」は、「Ｑパリティ状態」に「退避データ格納中」が設定されている場合に、Ｑパリティ領域に格納されたリビルドデータが属している他のＲＬＵの識別番号を示す。
【００８２】
「ＲＡＩＤ状態」は、対応するＲＬＵの状態を示す。「ＲＡＩＤ状態」には、「２パリティ使用可」、「１パリティ使用可」、「非冗長状態」、「他のＲＬＵからのリビルド中」、「他のＲＬＵへのコピーバック中」、「他のＲＬＵへリビルド中」、「他のＲＬＵへ退避中」、「他のＲＬＵからのコピーバック中」および「アクセス禁止」のいずれかが設定される。
【００８３】
「２パリティ使用可」は、「ＲＡＩＤレベル」にＲＡＩＤ−６が設定されているのみ設定され得る。「２パリティ使用可」は、Ｐパリティ領域とＱパリティ領域の両方が通常状態（すなわち、他のＲＬＵのリビルドデータの退避先として使用されていない状態）であることを示す。「１パリティ使用可」は、「ＲＡＩＤレベル」にＲＡＩＤ−４，５，６が設定されている場合に設定され得る。「１パリティ使用可」は、Ｐパリティ領域またはＱパリティのいずれかが通常状態であることを示す。「非冗長状態」は、データの冗長性がない状態を示す。
【００８４】
「他のＲＬＵからのリビルド中」は、Ｐパリティ領域とＱパリティ領域の少なくとも一方に対して、他のＲＬＵのリビルドデータの格納処理が実行中であることを示す。「他のＲＬＵへのコピーバック中」は、Ｐパリティ領域とＱパリティ領域の少なくとも一方に格納された他のＲＬＵのリビルドデータを、元のＲＬＵに対して書き戻す処理が実行中であることを示す。
【００８５】
「他のＲＬＵへのリビルド中」は、他のＲＬＵのパリティ領域をデータの格納先としたリビルド処理を実行中であることを示す。「他のＲＬＵへ退避中」は、リビルド処理が完了し、他のＲＬＵのパリティ領域にリビルドデータが格納された状態を示す。「他のＲＬＵからのコピーバック中」は、他のＲＬＵのパリティ領域に格納されたリビルドデータを、交換後のＨＤＤに書き戻す処理を実行中であることを示す。
【００８６】
「アクセス禁止」は、対応するＲＬＵに対するホスト装置４００からのアクセスを禁止した状態（ＲＬＵの運用が停止された状態）を示す。
「重要度」は、対応するＲＬＵに付与された重要度を示す。
【００８７】
図９は、ＲＬＵに属する２つのＨＤＤが故障した場合の処理手順の例を示すフローチャートである。
［ステップＳ１１］アクセス制御部２２０は、同一ＲＬＵに属する２台のＨＤＤが故障したことを検出すると、故障したＨＤＤのディスク番号と、それらのＨＤＤが属するＲＬＵのＲＬＵ番号とを復旧制御部２３０に通知する。
【００８８】
以下、例として、ＲＬＵ＃０１に属するＤＩＳＫ＃１３，＃１４が故障したものとして説明を続ける。復旧制御部２３０は、ＲＡＩＤ管理テーブル２４０におけるＲＬＵ＃０１に対応するレコード２４１において、ＤＩＳＫ＃１３，＃１４にそれぞれ対応付けられた「ディスク状態」を、「正常」から「故障」に更新する。また、復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１の「ＲＡＩＤ状態」を、「２パリティ使用可」から「非冗長状態」に更新する。
【００８９】
［ステップＳ１２］復旧制御部２３０は、使用可能なホットスペアディスクがＤＥ３００内にあるかを判定する。復旧制御部２３０は、使用可能なホットスペアディスクがある場合（Ｓ１２：Ｙｅｓ）にはステップＳ１３の処理を実行する一方、使用可能なホットスペアディスクがない場合（Ｓ１２：Ｎｏ）にはステップＳ１４の処理を実行する。
【００９０】
［ステップＳ１３］復旧制御部２３０は、故障したＤＩＳＫ＃１３に記録されていたＲＬＵ＃０１のデータを再構築し、得られたリビルドデータを、使用可能なホットスペアディスクに対して書き込むように、アクセス制御部２２０を制御する。アクセス制御部２２０によるリビルドデータの格納が完了すると、復旧制御部２３０は、ＲＬＵ＃０１からＤＩＳＫ＃１３，＃１４を切り離すとともに、ホットスペアディスクをＲＬＵ＃０１に組み込む。復旧制御部２３０は、アクセス制御部２２０に、ＲＡＩＤ−５によってＲＬＵ＃０１の運用を続行させる。
【００９１】
［ステップＳ１４］復旧制御部２３０は、ＲＡＩＤ管理テーブル２４０のレコード２４１のうち、ＨＤＤが故障したＲＬＵ＃０１以外のＲＬＵに対応するレコード２４１を参照して、リビルドデータの格納先とするＲＬＵを探索する。
【００９２】
まず、復旧制御部２３０は、ＲＡＩＤ−６で正常に運用継続中（すなわち、Ｐパリティ領域およびＱパリティ領域が通常状態）であり、かつ、ＲＬＵ＃０１に付与された重要度と同一またはそれ以下の重要度が付与されたＲＬＵを探索する。具体的には、復旧制御部２３０は、ＲＡＩＤ管理テーブル２４０から、「ストライプ数」に設定された値がＲＬＵ＃０１のストライプ数以上であり、かつ、「ＲＡＩＤレベル」にＲＡＩＤ−６が設定され、かつ、「ＲＡＩＤ状態」に「２パリティ使用可」が設定され、かつ、「重要度」に、ＲＬＵ＃０１に付与された重要度以下の値が設定されたレコード２４１を抽出する。復旧制御部２３０は、抽出したレコード２４１のうち、「重要度」に設定された値が最も低いレコード２４１に対応するＲＬＵを、リビルドデータの格納先に決定する。
【００９３】
［ステップＳ１５］復旧制御部２３０は、ステップＳ１４で条件に合致するＲＬＵがあった場合（Ｓ１５：Ｙｅｓ）には、ステップＳ１８の処理を実行する一方、ステップＳ１４で条件に合致するＲＬＵがなかった場合（Ｓ１５：Ｎｏ）には、ステップＳ１６の処理を実行する。
【００９４】
［ステップＳ１６］復旧制御部２３０は、ＲＡＩＤ−４またはＲＡＩＤ−５で正常に運用継続中（すなわち、Ｐパリティ領域が通常状態）であり、かつ、ＲＬＵ＃０１に付与された重要度より低い重要度が付与されたＲＬＵを探索する。具体的には、復旧制御部２３０は、ＲＡＩＤ管理テーブル２４０から、「ストライプ数」に設定された値がＲＬＵ＃０１のストライプ数以下であり、かつ、「ＲＡＩＤレベル」にＲＡＩＤ−４またはＲＡＩＤ−５が設定され、かつ、「ＲＡＩＤ状態」に「１パリティ使用可」が設定され、かつ、「重要度」に、ＲＬＵ＃０１に付与された重要度より低い値が設定されたレコード２４１を抽出する。復旧制御部２３０は、抽出したレコード２４１のうち、「重要度」に設定された値が最も低いレコード２４１に対応するＲＬＵを、リビルドデータの格納先に決定する。
【００９５】
［ステップＳ１７］復旧制御部２３０は、ステップＳ１６で条件に合致するＲＬＵがあった場合（Ｓ１７：Ｙｅｓ）には、ステップＳ１８の処理を実行する。一方、復旧制御部２３０は、ステップＳ１６で条件に合致するＲＬＵがなかった場合（Ｓ１７：Ｎｏ）には、ＲＬＵ＃０１についてのリビルド処理の実行を断念する。この場合、ＲＬＵ＃０１については、データの冗長性がない状態のまま、ホスト装置４００からの要求に応じたアクセスが行われる。
【００９６】
［ステップＳ１８］以下、ステップＳ１５またはステップＳ１７において、リビルドデータの格納先としてＲＬＵ＃００が決定されたものとして、説明を続ける。
復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１の「ＲＡＩＤ状態」を、「非冗長状態」から「他のＲＬＵへリビルド中」に更新する。また、復旧制御部２３０は、同じレコード２４１内のＤＩＳＫ＃１３に対応付けられた欄において、「ディスク状態」を「リビルド中」に更新するとともに、「退避先ＲＬＵ番号」にＲＬＵ＃００を、「退避先パリティ識別」にＱパリティをそれぞれ登録する。
【００９７】
また、リビルドデータの格納先としてＲＡＩＤ−６のＲＬＵ＃００が選択された場合（Ｓ１５：Ｙｅｓ）には、復旧制御部２３０は次のようなテーブル設定処理を行う。復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１において、「ＲＡＩＤ状態」を「２パリティ使用可」から「他のＲＬＵからのリビルド中」に、「Ｑパリティ状態」を「通常状態」から「退避データ格納中」にそれぞれ更新する。また、復旧制御部２３０は、同じレコード２４１の「Ｑパリティ退避元ＲＬＵ番号」に「ＲＬＵ＃０１」を登録する。
【００９８】
一方、リビルドデータの格納先としてＲＡＩＤ−４またはＲＡＩＤ−５のＲＬＵ＃００が選択された場合（Ｓ１７：Ｙｅｓ）には、復旧制御部２３０は次のようなテーブル設定処理を行う。復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１において、「ＲＡＩＤ状態」を「１パリティ使用可」から「他のＲＬＵからのリビルド中」に、「Ｐパリティ状態」を「通常状態」から「退避データ格納中」にそれぞれ更新する。また、復旧制御部２３０は、同じレコード２４１の「Ｐパリティ退避元ＲＬＵ番号」に「ＲＬＵ＃０１」を登録する。
【００９９】
以上のテーブル設定処理が終了すると、復旧制御部２３０は、故障したＤＩＳＫ＃１３に記録されていたＲＬＵ＃００のデータを再構築し、得られたリビルドデータをＲＬＵ＃００のパリティ領域に書き込むように、アクセス制御部２２０に要求する。リビルドデータの格納先としてＲＡＩＤ−６のＲＬＵ＃００が選択された場合（Ｓ１５：Ｙｅｓ）には、リビルドデータはＲＬＵ＃００のＱパリティ領域に書き込まれる。一方、リビルドデータの格納先としてＲＡＩＤ−４またはＲＡＩＤ−５のＲＬＵ＃００が選択された場合（Ｓ１７：Ｙｅｓ）には、リビルドデータはＲＬＵ＃００のＰパリティ領域に書き込まれる。
【０１００】
［ステップＳ１９］アクセス制御部２２０によるリビルドデータの書き込みが完了すると、復旧制御部２３０は、次のようなテーブル設定処理を行うことで、ＲＬＵ＃００とＲＬＵ＃０１とを結合状態にするとともに、それぞれのＲＡＩＤレベルを変更する。
【０１０１】
復旧制御部２３０は、ＲＬＵ＃０１のレコード２４１の「ＲＡＩＤ状態」を「他のＲＬＵへ退避中」に更新するとともに、同じレコード２４１内のＤＩＳＫ＃１３に対応付けられた「ディスク状態」を「退避中」に更新する。
【０１０２】
また、リビルドデータの格納先としてＲＡＩＤ−６のＲＬＵ＃００が選択された場合（Ｓ１５：Ｙｅｓ）には、復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１の「ＲＡＩＤ状態」を「１パリティ使用可」に更新する。一方、リビルドデータの格納先としてＲＡＩＤ−４またはＲＡＩＤ−５のＲＬＵ＃００が選択された場合（Ｓ１７：Ｙｅｓ）には、復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１の「ＲＡＩＤ状態」を「非冗長状態」に更新する。
【０１０３】
以上のテーブル設定処理により、ＲＬＵ＃００における１種類のパリティ領域がＲＬＵ＃００から切り離されるとともに、切り離されたパリティ領域がＲＬＵ＃０１に組み込まれる。これにより、ＲＬＵ同士が結合状態になるとともに、各ＲＬＵのＲＡＩＤレベルが実質的に変更される。
【０１０４】
アクセス制御部２２０は、ＲＬＵ＃０１のレコード２４１において、「ＲＡＩＤレベル」にＲＡＩＤ−６が設定され、かつ、「ＲＡＩＤ状態」が「他のＲＬＵに退避中」に更新されたとき、ＲＬＵ＃０１をＲＡＩＤ−５で制御する。
【０１０５】
また、アクセス制御部２２０は、ＲＬＵ＃００のレコード２４１において、「ＲＡＩＤレベル」にＲＡＩＤ−６が設定され、かつ、「ＲＡＩＤ状態」が「１パリティ使用可」に更新されたとき、ＲＬＵ＃００をＲＡＩＤ−５で制御する。一方、アクセス制御部２２０は、ＲＬＵ＃００のレコード２４１において、「ＲＡＩＤレベル」にＲＡＩＤ−４またはＲＡＩＤ−５が設定され、かつ、「ＲＡＩＤ状態」が「非冗長状態」に更新されたとき、ＲＬＵ＃００をＲＡＩＤ−１で制御する。
【０１０６】
なお、以上の図９の処理において、ステップＳ１４では、ＲＬＵ＃０１のリビルドデータの格納先として、ＲＬＵ＃０１と同等の重要度かそれより低い重要度が付与されたＲＬＵを選択した。これにより、ＲＬＵ＃０１より重要度が高いＲＬＵにおけるデータの冗長度を低下させないようにすることができる。
【０１０７】
また、ステップＳ１６では、ＲＬＵ＃０１のリビルドデータの格納先として、ＲＬＵ＃０１より低い重要度が付与されたＲＬＵを選択した。これにより、ＲＬＵ＃０１と同等以上の重要度が付与されたＲＬＵにおいて、データの冗長性が失われる事態を回避できる。
【０１０８】
すなわち、これらのステップＳ１４，Ｓ１６の処理により、重要度が高いＲＬＵほどデータの安全性を高めることができる。
ここで、図１０は、結合状態とされたＲＬＵに対するＩ／Ｏ要求が発行されたときの処理手順の例を示すフローチャートである。この図１０では例として、ＲＬＵ＃００と結合状態とされたＲＬＵ＃０１に対して、ホスト装置４００から読み出しが要求された場合の処理手順を示す。なお、この図１０の処理は、データブロックごとに実行される。
【０１０９】
［ステップＳ３１］アクセス制御部２２０は、ホスト装置４００から、ＲＬＵ＃０１内のデータブロックに対する読み出し要求を受信する。
［ステップＳ３２］アクセス制御部２２０は、読み出しを要求されたデータブロックが、初期状態でＲＬＵ＃００に属していたＨＤＤ（ＤＩＳＫ＃１０〜＃１４）のうち、故障したＨＤＤ（ＤＩＳＫ＃１３またはＤＩＳＫ＃１４）に記録されているかを判定する。アクセス制御部２２０は、データブロックが故障したＨＤＤに記録されている場合（Ｓ３２：Ｙｅｓ）には、ステップＳ３４の処理を実行する。一方、アクセス制御部２２０は、データブロックが故障していないＨＤＤ（ＤＩＳＫ＃１０〜＃１２のいずれか）に記録されている場合（Ｓ３２：Ｎｏ）には、ステップＳ３３の処理を実行する。
【０１１０】
［ステップＳ３３］アクセス制御部２２０は、読み出しを要求されたデータブロックを、故障していないＨＤＤ（ＤＩＳＫ＃１０〜＃１２のいずれか）から読み出し、ホスト装置４００に返信する。
【０１１１】
［ステップＳ３４］アクセス制御部２２０は、読み出しが要求されたデータブロックが、リビルド処理の対象とされているかを判定する。具体的には、アクセス制御部２２０は、ＲＬＵ＃０１に対応するレコード２４１において、読み出しが要求されたデータブロックが記録されたＨＤＤに対応する「ディスク状態」に「リビルド中」または「退避中」が設定されていた場合、データブロックがリビルド対象とされていると判定して（Ｓ３４：Ｙｅｓ）、ステップＳ３５の処理を実行する。この場合、データブロックはＤＩＳＫ＃１３に記録されていたことになる。一方、「ディスク状態」に「故障中」が設定されていた場合、データブロックがリビルド対象とされていないと判定して（Ｓ３４：Ｎｏ）、ステップＳ４１の処理を実行する。この場合、データブロックはＤＩＳＫ＃１４に記録されていたことになる。
【０１１２】
［ステップＳ３５］アクセス制御部２２０は、ＲＬＵ＃０１に対応するレコード２４１から、「ディスク状態」に「退避中」が設定されたディスク番号を特定する。ここでは、ＤＩＳＫ＃１３に対応する「ディスク状態」に「退避中」が設定されているものとする。
【０１１３】
アクセス制御部２２０は、ＤＩＳＫ＃１３に対応付けられた「退避先パリティ識別」を参照して、リビルドデータの格納先がＱパリティ領域かを判定する。アクセス制御部２２０は、リビルドデータの格納先がＱパリティ領域であった場合（Ｓ３５：Ｙｅｓ）には、ステップＳ３６の処理を実行する。一方、アクセス制御部２２０は、リビルドデータの格納先がＱパリティ領域でなかった場合（Ｓ３５：Ｎｏ）には、ステップＳ３８の処理を実行する。
【０１１４】
［ステップＳ３６］アクセス制御部２２０は、ＲＬＵ＃０１に対応するレコード２４１において、ＤＩＳＫ＃１３に対応付けられた「退避先ＲＬＵ番号」に設定されたＲＬＵ番号を読み出す。ここでは、「退避先ＲＬＵ番号」にはＲＬＵ＃００が設定されているものとする。
【０１１５】
アクセス制御部２２０は、ＲＬＵ＃００の物理記憶領域における、読み出し対象のデータブロックの位置を特定する。この位置特定処理は、読み出しが要求されたデータブロックが属するストライプ番号をＮｓ（ただし、Ｎｓは０を初期値とする整数）とすると、ＲＬＵ＃００でのストライプ番号Ｎｓにおいて、ＱパリティがどのＨＤＤに記録されているかを特定するものである。ここで、Ｑパリティが記録されているＨＤＤを、ディスク番号Ｎｑ（ただし、Ｎｑは０を初期とする整数）と表す。なお、ＲＬＵ＃００に対応するレコード２４１に対して、ＲＬＵ＃００に属するＨＤＤがＤＩＳＫ＃００，＃０１，＃０２，＃０３，＃０４の順に登録されているものとすると、Ｎｑ＝０，１，２，３，４は、それぞれＤＩＳＫ＃００，＃０１，＃０２，＃０３，＃０４に対応する。
【０１１６】
アクセス制御部２２０は、ＲＬＵ＃００に対応するレコード２４１を参照し、ＲＬＵ＃００に属するＨＤＤの数を認識する。ＲＬＵ＃００に属するＨＤＤの数をＮｄとすると、アクセス制御部２２０は、Ｑパリティが記録されているＨＤＤのディスク番号Ｎｑを、次の式に従って計算する。
Ｎｑ＝（Ｎｄ−１）−｛（Ｎｓ／Ｎｄ）の剰余｝
［ステップＳ３７］アクセス制御部２２０は、ステップＳ３６で特定した位置からデータブロックを読み出し、ホスト装置４００に返信する。
【０１１７】
［ステップＳ３８］アクセス制御部２２０は、ＲＬＵ＃０１に対応するレコード２４１において、ＤＩＳＫ＃１３に対応付けられた「退避先パリティ識別」を参照して、リビルドデータの格納先がＰパリティ領域かを判定する。アクセス制御部２２０は、リビルドデータの格納先がＰパリティ領域であった場合（Ｓ３８：Ｙｅｓ）には、ステップＳ３９の処理を実行する。
【０１１８】
一方、アクセス制御部２２０は、ＲＬＵ＃０１に対応するレコード２４１において、１つのＨＤＤ（ここではＤＩＳＫ＃１３）に対応する「ディスク状態」が「リビルド中」である場合には、ステップＳ４１の処理を実行する。この状態とは、ＤＩＳＫ＃１３に記録されていたデータのリビルド処理が完了しておらず、退避先ＲＬＵのＰパリティ領域およびＱパリティ領域のいずれにも、読み出しを要求されたデータが格納されていない可能性がある状態（Ｓ３５：ＮｏかつＳ３８：Ｎｏ）である。
【０１１９】
［ステップＳ３９］アクセス制御部２２０は、ＲＬＵ＃０１に対応するレコード２４１において、ＤＩＳＫ＃１３に対応付けられた「退避先ＲＬＵ番号」に設定されたＲＬＵ番号を読み出す。ここでは、「退避先ＲＬＵ番号」にはＲＬＵ＃００が設定されているものとする。
【０１２０】
アクセス制御部２２０は、ＲＬＵ＃００の物理記憶領域における、読み出し対象のデータブロックの位置を特定する。この位置特定処理は、ＲＬＵ＃００でのストライプ番号Ｎｓにおいて、ＰパリティがどのＨＤＤに記録されているかを特定するものである。ここで、Ｐパリティが記録されているＨＤＤを、ディスク番号Ｎｐ（ただし、Ｎｐは０を初期とする整数）と表す。なお、ＲＬＵ＃００に対応するレコード２４１に対して、ＲＬＵ＃００に属するＨＤＤがＤＩＳＫ＃００，＃０１，＃０２，＃０３，＃０４の順に登録されているものとすると、Ｎｐ＝０，１，２，３，４は、それぞれＤＩＳＫ＃００，＃０１，＃０２，＃０３，＃０４に対応する。
【０１２１】
アクセス制御部２２０は、ＲＬＵ＃００に対応するレコード２４１を参照し、ＲＬＵ＃００に属するＨＤＤの数Ｎｄを認識する。アクセス制御部２２０は、Ｐパリティが記録されているＨＤＤのディスク番号Ｎｐを、次の式に従って計算する。
Ｎｐ＝〔〔Ｎｄ＋Ｎｄ−２−｛（Ｎｓ／Ｎｄ）の剰余｝〕／Ｎｄ〕の剰余
［ステップＳ４０］アクセス制御部２２０は、ステップＳ３９で特定した位置からデータブロックを読み出し、ホスト装置４００に返信する。
【０１２２】
［ステップＳ４１］アクセス制御部２２０は、ＲＬＵ＃０１に対応するレコード２４１において「ディスク状態」に「正常」が設定されたＨＤＤ（ここでは、ＤＩＳＫ＃１０，＃１１，＃１２とする）を特定する。アクセス制御部２２０は、ＤＩＳＫ＃１０，＃１１，＃１２のそれぞれにおけるストライプ番号Ｎｓのデータ（それぞれ、データブロック、Ｐパリティ、Ｑパリティのいずれか）のうち、データブロックと１つ以上のパリティとを基に、読み出しを要求されたデータブロックを計算する。アクセス制御部２２０は、計算により得られたデータブロックを、ホスト装置４００に返信する。
【０１２３】
図１１は、故障したＨＤＤが交換された場合の処理手順の例を示すフローチャートである。ここでは例として、ＲＬＵ＃０１に属するＤＩＳＫ＃１３，＃１４が交換された場合の処理について説明する。
【０１２４】
［ステップＳ５１］アクセス制御部２２０は、例えば、ＤＩＳＫ＃１３，＃１４との通信が回復したことを検知すると、その旨を復旧制御部２３０に通知する。通知を受けた復旧制御部２３０は、ＤＩＳＫ＃１３，＃１４が交換されたと判定して、ステップＳ５２の処理を実行する。
【０１２５】
［ステップＳ５２］復旧制御部２３０は、交換されたＤＩＳＫ＃１３，＃１４が属するＲＬＵ（ここではＲＬＵ＃０１）を特定し、特定したＲＬＵに対応するＲＡＩＤ管理テーブル２４０内のレコード２４１を参照する。復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１から、「退避先ＲＬＵ番号」に情報が設定されているＨＤＤ（ここではＤＩＳＫ＃１３）を抽出し、抽出したＨＤＤに対応付けられた「退避先パリティ識別」を読み出す。復旧制御部２３０は、「退避先パリティ識別」にＱパリティが設定されていた場合（Ｓ５２：Ｙｅｓ）には、ステップＳ５３の処理を実行する。一方、復旧制御部２３０は、「退避先パリティ識別」にＰパリティが設定されていた場合（Ｓ５２：Ｎｏ）には、ステップＳ５６の処理を実行する。
【０１２６】
［ステップＳ５３］復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１において、「退避先パリティ識別」にＱパリティが設定されていたＨＤＤ（ここではＤＩＳＫ＃１３）に対応付けられた「ディスク状態」を、「コピーバック中」に更新する。これとともに、復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１の「ＲＡＩＤ状態」を「他のＲＬＵからのコピーバック中」に更新する。さらに、復旧制御部２３０は、「退避先ＲＬＵ番号」に設定されたＲＬＵ（ここではＲＬＵ＃００とする）に対応するレコード２４１を参照し、そのレコード２４１の「ＲＡＩＤ状態」を「他のＲＬＵへのコピーバック中」に更新する。
【０１２７】
以上のテーブル設定処理が終了すると、復旧制御部２３０は、アクセス制御部２２０に対して、ＲＬＵ＃００からＲＬＵ＃０１へのコピーバック処理を開始するように要求する。アクセス制御部２２０は、ＲＬＵ＃００のレコード２４１の「Ｑパリティ状態」が「退避データ格納中」であることから、コピーバック処理におけるデータの読み出し元をＱパリティ領域と認識する。また、アクセス制御部２２０は、ＲＬＵ＃００のレコード２４１において、ＤＩＳＫ＃１３に対応付けられた「退避先パリティ識別」が「Ｑパリティ」に設定されていることから、ＲＬＵ＃００のＱパリティ領域から読み出したデータの書き戻し先がＤＩＳＫ＃１３であることを認識する。アクセス制御部２２０は、ＲＬＵ＃００のＱパリティ領域からデータを読み出し、交換されたＤＩＳＫ＃１３に対して書き戻す。
【０１２８】
アクセス制御部２２０によるコピーバック処理が終了すると、復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１において、ディスク＃１３に対応付けられた「ディスク状態」を「正常」に更新するとともに、ディスク＃１３に対応付けられた「退避先ＲＬＵ番号」および「退避先パリティ識別」に設定されていた情報を消去する。
【０１２９】
［ステップＳ５４］復旧制御部２３０は、ＲＬＵ＃０１におけるＤＩＳＫ＃１４のデータを復元するようにアクセス制御部２２０に要求する。アクセス制御部２２０は、ＲＬＵ＃０１に対応するレコード２４１の「ディスク状態」から、ＤＩＳＫ＃１０〜＃１３に正常なデータが記録されていることを認識する。アクセス制御部２２０は、ＤＩＳＫ＃１０〜＃１３に記録されているＲＬＵ＃０１のデータを基に、故障前のＤＩＳＫ＃１４に記録されていたデータを再計算し、算出したデータを交換されたＤＩＳＫ＃１４に書き込む。
【０１３０】
アクセス制御部２２０によるデータ復元処理が終了すると、復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１において、ＤＩＳＫ＃１４に対応付けられた「ディスク状態」を「正常」に更新する。これとともに、復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１の「ＲＡＩＤ状態」を「２パリティ使用可」に更新する。これらのテーブル設定処理により、ＲＬＵ＃０１は、ＤＩＳＫ＃１３，＃１４が故障する前と同様に、ＲＡＩＤ−６によって運用されるようになる。
【０１３１】
［ステップＳ５５］復旧制御部２３０は、ＲＬＵ＃００におけるＱパリティを再計算するようにアクセス制御部２２０に要求する。アクセス制御部２２０は、ＤＩＳＫ＃００〜＃０４に記録されているブロックデータを基にＱパリティを計算し、算出したＱパリティをＲＬＵ＃００におけるＱパリティ領域に上書きする。
【０１３２】
ＲＬＵ＃００における全Ｑパリティ領域にＱパリティが書き込まれると、復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１において、「Ｑパリティ状態」を「通常状態」に更新し、「Ｑパリティ退避元ＲＬＵ番号」に設定されたＲＬＵ＃０１を消去する。また、復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１の「ＲＡＩＤレベル」にＲＡＩＤ−６が設定されている場合、同じレコード２４１の「ＲＡＩＤ状態」を「２パリティ使用可」に更新する。一方、復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１の「ＲＡＩＤレベル」にＲＡＩＤ−４またはＲＡＩＤ−５が設定されている場合、同じレコード２４１の「ＲＡＩＤ状態」を「１パリティ使用可」に更新する。これらのテーブル設定処理により、ＲＬＵ＃００は、ＤＩＳＫ＃１３，＃１４が故障する前と同様のＲＡＩＤレベルによって運用されるようになる。
【０１３３】
［ステップＳ５６］復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１において、「退避先パリティ識別」にＰパリティが設定されていたＨＤＤ（ここではＤＩＳＫ＃１３とする）に対応付けられた「ディスク状態」を、「コピーバック中」に更新する。これとともに、復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１の「ＲＡＩＤ状態」を「他のＲＬＵからのコピーバック中」に更新する。さらに、復旧制御部２３０は、「退避先ＲＬＵ番号」に設定されたＲＬＵ（ここではＲＬＵ＃００とする）に対応するレコード２４１を参照し、そのレコード２４１の「ＲＡＩＤ状態」を「他のＲＬＵへのコピーバック中」に更新する。
【０１３４】
以上のテーブル設定処理が終了すると、復旧制御部２３０は、アクセス制御部２２０に対して、ＲＬＵ＃００からＲＬＵ＃０１へのコピーバック処理を開始するように要求する。アクセス制御部２２０は、ＲＬＵ＃００のレコード２４１の「Ｐパリティ状態」が「退避データ格納中」であることから、コピーバック処理におけるデータの読み出し元をＰパリティ領域と認識する。また、アクセス制御部２２０は、ＲＬＵ＃００のレコード２４１において、ＤＩＳＫ＃１３に対応付けられた「退避先パリティ識別」が「Ｐパリティ」に設定されていることから、ＲＬＵ＃００のＰパリティ領域から読み出したデータの書き戻し先がＤＩＳＫ＃１３であることを認識する。アクセス制御部２２０は、ＲＬＵ＃００のＰパリティ領域からデータを読み出し、交換されたＤＩＳＫ＃１３に対して書き戻す。
【０１３５】
アクセス制御部２２０によるコピーバック処理が終了すると、復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１において、ディスク＃１３に対応付けられた「ディスク状態」を「正常」に更新するとともに、ディスク＃１３に対応付けられた「退避先ＲＬＵ番号」および「退避先パリティ識別」に設定されていた情報を消去する。
【０１３６】
［ステップＳ５７］このステップＳ５７では、前述のステップＳ５４と同様の手順で、交換されたＤＩＳＫ＃１４のデータが復元される。データ復元処理が終了すると、復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１において、ＤＩＳＫ＃１４に対応付けられた「ディスク状態」を「正常」に更新する。これとともに、復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１の「ＲＡＩＤ状態」を「２パリティ使用可」に更新する。これらのテーブル設定処理により、ＲＬＵ＃０１は、ＤＩＳＫ＃１３，＃１４が故障する前と同様に、ＲＡＩＤ−６によって運用されるようになる。
【０１３７】
［ステップＳ５８］復旧制御部２３０は、ＲＬＵ＃００におけるＰパリティを再計算するようにアクセス制御部２２０に要求する。アクセス制御部２２０は、ＤＩＳＫ＃００〜＃０４に記録されているブロックデータを基にＰパリティを計算し、算出したＰパリティをＲＬＵ＃００におけるＰパリティ領域に上書きする。
【０１３８】
ＲＬＵ＃００における全Ｐパリティ領域にＰパリティが書き込まれると、復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１において、「Ｐパリティ状態」を「通常状態」に更新し、「Ｐパリティ退避元ＲＬＵ番号」に設定されたＲＬＵ＃０１を消去する。また、復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１の「ＲＡＩＤレベル」にＲＡＩＤ−６が設定されている場合、同じレコード２４１の「ＲＡＩＤ状態」を「２パリティ使用可」に更新する。一方、復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１の「ＲＡＩＤレベル」にＲＡＩＤ−４またはＲＡＩＤ−５が設定されている場合、同じレコード２４１の「ＲＡＩＤ状態」を「１パリティ使用可」に更新する。これらのテーブル設定処理により、ＲＬＵ＃００は、ＤＩＳＫ＃１３，＃１４が故障する前と同様のＲＡＩＤレベルによって運用されるようになる。
【０１３９】
なお、以上の図９〜図１１では、通常運用時にＲＡＩＤ−６によって運用されるＲＬＵ＃０１において２つのＨＤＤが故障した場合の処理を示したが、他の例として、同様のＲＬＵ＃０１において１つのＨＤＤが故障した場合に、故障したＨＤＤに記録されていたデータを他のＲＬＵ＃００のパリティ領域に格納するようにしてもよい。この場合、リビルドデータがＲＬＵ＃００のパリティ領域に退避された状態では、データが３重に冗長化された状態のままＲＬＵ＃０１の運用を継続できる。
【０１４０】
〔第３の実施の形態〕
第３の実施の形態に係るストレージシステムは、第２の実施の形態で説明したＣＭにおける処理手順が変形されたものである。そこで、第３の実施の形態について、第２の実施の形態と同じ符号を用いて説明する。
【０１４１】
図１２は、第３の実施の形態におけるＨＤＤ故障時の処理例を示す図である。
第３の実施の形態では、ＲＡＩＤ−６で運用されているＲＬＵに属する２台のＨＤＤが故障したとき、故障した２台のＨＤＤのリビルドデータを、ＲＡＩＤ−６で運用されている他のＲＬＵのＰパリティ領域およびＱパリティ領域に格納する。これにより、２台のＨＤＤが故障したＲＬＵにおけるデータの冗長度を低下させないようにする。
【０１４２】
図１２における「状態２１」は、図５における「状態１」と同様の状態であり、ＲＬＵ＃００，＃０１はともにＲＡＩＤ−６によって管理されている。ここで、ＲＬＵ＃０１に属するＤＩＳＫ＃１３，＃１４が故障したものとする。復旧制御部２３０は、データが３重に冗長化された（すなわち、ＲＡＩＤ−６で管理された）他のＲＬＵ（ここでは例としてＲＬＵ＃００）を選択し、選択したＲＬＵと、ＨＤＤが故障したＲＬＵとを結合する。
【０１４３】
具体的には、ＲＬＵ＃０１に属するＤＩＳＫ＃１３，＃１４が故障すると、復旧制御部２３０は、図１２の「状態２２」に示すように、アクセス制御部２２０に次のようなリビルド処理を実行させる。復旧制御部２３０は、故障したＤＩＳＫ＃１３に記録されていたデータを再構築し、再構築したデータをＲＬＵ＃００におけるＰパリティ領域に格納するように、アクセス制御部２２０に要求する。これとともに、復旧制御部２３０は、故障したＤＩＳＫ＃１４に記録されていたデータを再構築し、再構築したデータをＲＬＵ＃００におけるＱパリティ領域に格納するように、アクセス制御部２２０に要求する。
【０１４４】
ＲＬＵ＃０１のリビルド処理が終了すると、復旧制御部２３０は、図１２の「状態２３」に示すように、ＲＬＵ＃００，＃０１を結合状態にする。すなわち、復旧制御部２３０は、故障したＤＩＳＫ＃１３，＃１４をＲＬＵ＃０１から切り離す。さらに、復旧制御部２３０は、ＲＬＵ＃００における、ＲＬＵ＃０１のリビルドデータが格納されたＰパリティ領域およびＱパリティ領域を、ＲＬＵ＃００から切り離し、切り離したＰパリティ領域およびＱパリティ領域をＲＬＵ＃０１に組み込む。
【０１４５】
これにより、ＲＬＵ＃０１を構成する物理記憶領域は、図５中の太線で示す領域となる。復旧制御部２３０は、アクセス制御部２２０に、ＲＬＵ＃００のＰパリティ領域およびＱパリティ領域を組み込んだＲＬＵ＃０１を、ＲＡＩＤ−６相当の管理方法で暫定的に運用させる。これとともに、復旧制御部２３０は、アクセス制御部２２０に、Ｐパリティ領域およびＱパリティ領域を除くＲＬＵ＃００の領域を、ＲＡＩＤ−０相当の管理方法で暫定的に運用させる。
【０１４６】
以上のようなリビルド処理およびＲＬＵの結合処理により、ＨＤＤが２台故障したＲＬＵ＃０１については、データの冗長度を３重冗長状態に回復させることができる。一方、ＲＬＵ＃０１のリビルド先としてＲＡＩＤ−６で管理されていたＲＬＵ＃００が選択されることで、ＲＬＵ＃００は、データの冗長度がない状態となる。このため、ＲＬＵ＃０１のリビルドデータの格納先としては、ＲＬＵ＃０１よりも低い重要度が付与されたＲＬＵが選択されることが望ましい。
【０１４７】
以上の図１２において、状態２１から状態２３まで遷移する過程では、ＤＩＳＫ＃００〜＃０４，＃１０〜＃１２の記憶領域のうち、ＲＬＵ＃００のＰパリティ領域およびＱパリティ領域においてデータの上書きが実行されるのみであり、それ以外の領域ではデータの書き込みが一切行われない。このため、図５の場合と同様に、ＤＩＳＫ＃１３，＃１４の故障が発生してから、ＲＬＵ＃００，＃０１がともにＲＡＩＤ−５による暫定運用を開始するまでの期間において、ＤＩＳＫ＃００〜＃０４，＃１０〜＃１２におけるデータの書き込み頻度が少なくなる。従って、上記期間におけるＣＭ２０１のＣＰＵ２１１の処理負荷が低くなる。このため、ホスト装置４００からのＩ／Ｏ要求に応じたＨＤＤへのアクセス処理に対してリビルド処理が与える影響が小さくなり、Ｉ／Ｏ要求に対する応答速度が著しく低下することを抑制できる。
【０１４８】
また、状態２３におけるＲＬＵ＃００の領域は、状態２１と比較してＰパリティ領域およびＱパリティ領域が切り離されただけの状態となる。このため、状態２３において、ホスト装置４００からのＩ／Ｏ要求に応じたＲＬＵ＃００へのアクセス処理手順を、状態２１でのアクセス処理手順から大きく変えないようにすることができる。例えば、状態２３において、ホスト装置４００から、ＲＬＵ＃００からの読み出しが要求された場合、アクセス制御部２２０は、状態２１とまったく同じ処理手順で要求されたデータを読み出す。また、状態２３において、ホスト装置４００からＲＬＵ＃００に対する書き込みが要求された場合、アクセス制御部２２０は、ＰパリティおよびＱパリティの計算および記録を行わないこと以外、状態２１と同じ処理手順でデータを書き込む。
【０１４９】
図１３は、第３の実施の形態におけるＨＤＤの交換時の処理例を示す図である。
ＤＩＳＫ＃１３，＃１４が新たなＨＤＤに交換されると、図１３の「状態２４」に示すように、ＲＬＵ＃０１についてのコピーバック処理が実行される。復旧制御部２３０は、アクセス制御部２２０に、ＲＬＵ＃００のＰパリティ領域に記録されたデータを、交換されたＤＩＳＫ＃１３にコピーさせるとともに、ＲＬＵ＃００のＱパリティ領域に記録されたデータを、交換されたＤＩＳＫ＃１４にコピーさせる。
【０１５０】
アクセス制御部２２０は、ＲＬＵ＃００のＰパリティ領域からデータを読み出し、ＤＩＳＫ＃１３における、その読み出し元と同じストライプ番号の位置に、読み出したデータを書き込む。また、アクセス制御部２２０は、ＲＬＵ＃００のＱパリティ領域からデータを読み出し、ＤＩＳＫ＃１４における、その読み出し元と同じストライプ番号の位置に、読み出したデータを書き込む。
【０１５１】
コピーバック処理が終了すると、復旧制御部２３０は、ＲＬＵ＃００，＃０１を結合状態から分離状態に遷移させる。この処理では、復旧制御部２３０は、交換されたディスク＃１３，＃１４をＲＬＵ＃０１に組み込むとともに、ＲＬＵ＃００のＰパリティ領域およびＱパリティ領域をＲＬＵ＃０１から切り離す。また、復旧制御部２３０は、ＲＬＵ＃００のＰパリティ領域およびＱパリティ領域をＲＬＵ＃００に組み込み直す。
【０１５２】
図１３の「状態２５」は、ＲＬＵが分離された状態を示し、復旧制御部２３０は、この状態からさらに、ＲＬＵ＃００のＲＡＩＤレベルをＲＡＩＤ−６に戻すためのデータ復元処理を実行させる。復旧制御部２３０は、アクセス制御部２２０に、ＲＬＵ＃００におけるＰパリティを再計算し、Ｐパリティ領域に上書きするように要求するとともに、ＲＬＵ＃００におけるＱパリティを再計算し、Ｑパリティ領域に上書きするように要求する。アクセス制御部２２０は、例えば、ＤＩＳＫ＃００〜＃０２に格納されたデータＤ０〜Ｄ２を用いてＰパリティＰ０およびＱパリティＱ０を再計算し、ＤＩＳＫ＃０４，＃０５のそれぞれにおけるデータＤ０〜Ｄ２と同じストライプ番号の位置に上書きする。なお、図１３の「状態２５」では、データが復元される位置を点線で表している。
【０１５３】
データの復元処理が完了すると、復旧制御部２３０は、図１３の「状態２６」に示すように、ＲＬＵ＃００，＃０１の各ＲＡＩＤレベルをともにＲＡＩＤ−６に変更し、ＲＬＵ＃００，＃０１を図１２の「状態２１」と同様の正常状態に復帰させる。
【０１５４】
ここで、前述の図１２の状態２３から図１３の状態２６に遷移する過程では、ＤＩＳＫ＃００〜＃０４の記憶領域のうちＲＬＵ＃００のＰパリティ領域およびＱパリティ領域に記録されていたデータが、交換されたＤＩＳＫ＃１３，＃１４にそれぞれコピーされるのみであり、それ以外のデータの再配置は行われない。
【０１５５】
このため、ＤＩＳＫ＃１３，＃１４を交換してから、ＲＬＵ＃００，＃０１がともにＲＡＩＤ−６による運用を再開するまでの期間において、ＤＩＳＫ＃００〜＃０４，＃１０〜＃１２におけるデータのアクセス頻度を少なくすることができる。従って、上記期間におけるＣＭ２０１のＣＰＵ２１１の処理負荷が低くなり、ホスト装置４００からのＩ／Ｏ要求に応じたＨＤＤへのアクセス処理に対して、ＲＬＵ＃００，＃０１が元の状態に復帰するための処理が与える影響が小さくなる。
【０１５６】
図１４は、第３の実施の形態において、ＲＬＵに属する２つのＨＤＤが故障した場合の処理手順の例を示すフローチャートである。
［ステップＳ７１］復旧制御部２３０は、図９のステップＳ１１と同様の手順で、ＲＬＵ＃０１に属するＤＩＳＫ＃１３，＃１４が故障したことを検出する。復旧制御部２３０は、ＲＡＩＤ管理テーブル２４０におけるＲＬＵ＃０１に対応するレコード２４１において、ＤＩＳＫ＃１３，＃１４にそれぞれ対応付けられた「ディスク状態」を、「正常」から「故障」に更新する。また、復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１の「ＲＡＩＤ状態」を、「２パリティ使用可」から「非冗長状態」に更新する。
【０１５７】
［ステップＳ７２］復旧制御部２３０は、使用可能なホットスペアディスクが２台、ＤＥ３００内にあるかを判定する。復旧制御部２３０は、使用可能なホットスペアディスクが２台ある場合（Ｓ７２：Ｙｅｓ）にはステップＳ７３の処理を実行する一方、使用可能なホットスペアディスク１台以下の場合（Ｓ７２：Ｎｏ）にはステップＳ７４の処理を実行する。
【０１５８】
［ステップＳ７３］復旧制御部２３０は、故障したＤＩＳＫ＃１３に記録されていたＲＬＵ＃０１のデータを再構築し、得られたリビルドデータを、使用可能な第１のホットスペアディスクに対して書き込むように、アクセス制御部２２０に要求する。また、復旧制御部２３０は、故障したＤＩＳＫ＃１４に記録されていたＲＬＵ＃０１のデータを再構築し、得られたリビルドデータを、使用可能な第２のホットスペアディスクに対して書き込むように、アクセス制御部２２０に要求する。
【０１５９】
アクセス制御部２２０によるリビルドデータの格納が完了すると、復旧制御部２３０は、ＲＬＵ＃０１からＤＩＳＫ＃１３，＃１４を切り離すとともに、２台のホットスペアディスクをＲＬＵ＃０１に組み込む。復旧制御部２３０は、アクセス制御部２２０に、ＲＡＩＤ−６によってＲＬＵ＃０１の運用を続行させる。
【０１６０】
［ステップＳ７４］復旧制御部２３０は、ＲＡＩＤ管理テーブル２４０のレコード２４１のうち、ＨＤＤが故障したＲＬＵ＃０１以外のＲＬＵに対応するレコード２４１を参照して、リビルドデータの格納先とするＲＬＵを探索する。
【０１６１】
まず、復旧制御部２３０は、ＲＡＩＤ−６で正常に運用継続中（すなわち、Ｐパリティ領域およびＱパリティ領域が通常状態）であり、かつ、ＲＬＵ＃０１に付与された重要度より低い重要度が付与され、かつ、ＲＬＵ＃０１と同数以上のストライプ数を有するＲＬＵを探索する。復旧制御部２３０は、探索されたＲＬＵのうち最も低い重要度が付与されたＲＬＵを、リビルドデータの格納先に決定する。
【０１６２】
［ステップＳ７５］復旧制御部２３０は、ステップＳ７４で条件に合致するＲＬＵがあった場合（Ｓ７５：Ｙｅｓ）には、ステップＳ７６の処理を実行する。一方、復旧制御部２３０は、ステップＳ７４で条件に合致するＲＬＵがなかった場合（Ｓ７５：Ｎｏ）には、ＲＬＵ＃０１についてのリビルド処理の実行を断念する。この場合、ＲＬＵ＃０１については、データの冗長性がない状態のまま、ホスト装置４００からの要求に応じたアクセスが行われる。
【０１６３】
［ステップＳ７６］以下、ステップＳ７５において、リビルドデータの格納先としてＲＬＵ＃００が決定されたものとして、説明を続ける。
復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１の「ＲＡＩＤ状態」を、「非冗長状態」から「他のＲＬＵへリビルド中」に更新する。また、復旧制御部２３０は、同じレコード２４１内のＤＩＳＫ＃１３に対応付けられた欄において、「ディスク状態」を「リビルド中」に更新するとともに、「退避先ＲＬＵ番号」にＲＬＵ＃００を、「退避先パリティ識別」にＰパリティをそれぞれ登録する。
【０１６４】
また、復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１において、「ＲＡＩＤ状態」を「２パリティ使用可」から「他のＲＬＵからのリビルド中」に、「Ｐパリティ状態」を「通常状態」から「退避データ格納中」にそれぞれ更新する。また、復旧制御部２３０は、同じレコード２４１の「Ｐパリティ退避元ＲＬＵ番号」に「ＲＬＵ＃０１」を登録する。
【０１６５】
以上のテーブル設定処理が終了すると、復旧制御部２３０は、故障したＤＩＳＫ＃１３に記録されていたＲＬＵ＃００のデータを再構築し、得られたリビルドデータをＲＬＵ＃００のＰパリティ領域に書き込むように、アクセス制御部２２０に要求する。
【０１６６】
［ステップＳ７７］アクセス制御部２２０によるＰパリティ領域へのリビルドデータの書き込みが完了すると、復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１内のＤＩＳＫ＃１４に対応付けられた欄において、「ディスク状態」を「リビルド中」に更新するとともに、「退避先ＲＬＵ番号」にＲＬＵ＃００を、「退避先パリティ識別」にＱパリティをそれぞれ登録する。
【０１６７】
また、復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１において、「Ｑパリティ状態」を「通常状態」から「退避データ格納中」に更新するとともに、Ｑパリティ退避元ＲＬＵ番号」に「ＲＬＵ＃０１」を登録する。
【０１６８】
以上のテーブル設定処理が終了すると、復旧制御部２３０は、故障したＤＩＳＫ＃１４に記録されていたＲＬＵ＃００のデータを再構築し、得られたリビルドデータをＲＬＵ＃００のＱパリティ領域に書き込むように、アクセス制御部２２０に要求する。
【０１６９】
［ステップＳ７８］アクセス制御部２２０によるＱパリティ領域へのリビルドデータの書き込みが完了すると、復旧制御部２３０は、次のようなテーブル設定処理を行うことで、ＲＬＵ＃００とＲＬＵ＃０１とを結合状態にするとともに、ＲＬＵ＃００のＲＡＩＤレベルを変更する。
【０１７０】
復旧制御部２３０は、ＲＬＵ＃０１のレコード２４１の「ＲＡＩＤ状態」を「他のＲＬＵへ退避中」に更新するとともに、同じレコード２４１内のＤＩＳＫ＃１３，＃１４にそれぞれ対応付けられた「ディスク状態」を「退避中」に更新する。また、復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１の「ＲＡＩＤ状態」を「非冗長状態」に更新する。
【０１７１】
以上のテーブル設定処理により、ＲＬＵ＃００における両方のパリティ領域がＲＬＵ＃００から切り離されるとともに、切り離されたパリティ領域がＲＬＵ＃０１に組み込まれる。これにより、ＲＬＵ同士が結合状態になるとともに、ＲＬＵ＃００のＲＡＩＤレベルが実質的に変更される。アクセス制御部２２０は、ＲＬＵ＃００のレコード２４１において、「ＲＡＩＤレベル」にＲＡＩＤ−６が設定され、かつ、「ＲＡＩＤ状態」が「非冗長状態」に更新されたとき、ＲＬＵ＃００を実質的にＲＡＩＤ−０で制御する。
【０１７２】
上記の図１４の処理において、ステップＳ７４では、ＲＬＵ＃０１のリビルドデータの格納先として、ＲＬＵ＃０１より低い重要度が付与されたＲＬＵが選択される。これにより、ＲＬＵ＃０１と同等以上の重要度が付与されたＲＬＵにおいて、データの冗長性が失われる事態を回避でき、このＲＬＵにおけるデータの安全性を維持することができる。
【０１７３】
次に、図１５は、第３の実施の形態において、結合状態とされたＲＬＵに対するＩ／Ｏ要求が発行されたときの処理手順の例を示すフローチャートである。この図１５では例として、ＲＬＵ＃００と結合状態とされたＲＬＵ＃０１に対して、ホスト装置４００から読み出しが要求された場合の処理手順を示す。なお、この図１５の処理は、データブロックごとに実行される。
【０１７４】
［ステップＳ９１］アクセス制御部２２０は、ホスト装置４００から、ＲＬＵ＃０１内のデータブロックに対する読み出し要求を受信する。
［ステップＳ９２］アクセス制御部２２０は、読み出しを要求されたデータブロックが、初期状態でＲＬＵ＃００に属していたＨＤＤ（ＤＩＳＫ＃１０〜＃１４）のうち、故障したＨＤＤ（ＤＩＳＫ＃１３またはＤＩＳＫ＃１４）に記録されているかを判定する。アクセス制御部２２０は、データブロックが故障したＨＤＤに記録されている場合（Ｓ９２：Ｙｅｓ）には、ステップＳ９４の処理を実行する。一方、アクセス制御部２２０は、データブロックが故障していないＨＤＤ（ＤＩＳＫ＃１０〜＃１２のいずれか）に記録されている場合（Ｓ９２：Ｎｏ）には、ステップＳ９３の処理を実行する。
【０１７５】
［ステップＳ９３］アクセス制御部２２０は、読み出しを要求されたデータブロックを、故障していないＨＤＤ（ＤＩＳＫ＃１０〜＃１２のいずれか）から読み出し、ホスト装置４００に返信する。
【０１７６】
［ステップＳ９４］アクセス制御部２２０は、読み出しを要求されたデータブロックの退避先が、他のＲＬＵのＱパリティかを判定する。具体的には、アクセス制御部２２０は、ＲＬＵ＃０１のレコード２４１を参照し、読み出しを要求されたデータブロックが再構築される前に記録されていたＨＤＤに対応付けられた「退避先パリティ識別」に、Ｑパリティが設定されているかを判定する。
【０１７７】
復旧制御部２３０は、「退避先パリティ識別」にＱパリティが登録されている場合（Ｓ９４：Ｙｅｓ）には、ステップＳ９５の処理を実行する。なお、この場合、読み出しを要求されたデータブロックは、ＤＩＳＫ＃１４に記録されていたことになる。一方、復旧制御部２３０は、「退避先パリティ識別」にＱパリティが設定されていない場合（Ｓ９４：Ｎｏ）には、ステップＳ９７の処理を実行する。
【０１７８】
［ステップＳ９５］アクセス制御部２２０は、ＲＬＵ＃０１に対応するレコード２４１において、ＤＩＳＫ＃１４に対応付けられた「退避先ＲＬＵ番号」に設定されたＲＬＵ番号を読み出す。ここでは、「退避先ＲＬＵ番号」にはＲＬＵ＃００が設定されているものとする。
【０１７９】
アクセス制御部２２０は、図１０のステップＳ３６と同様の手順で、ＲＬＵ＃００の物理記憶領域における、読み出し対象のデータブロックの位置（すなわち、Ｑパリティが記録されているＨＤＤのディスク番号Ｎｑ）を特定する。
【０１８０】
［ステップＳ９６］アクセス制御部２２０は、ステップＳ９５で特定した位置からデータブロックを読み出し、ホスト装置４００に返信する。
［ステップＳ９７］復旧制御部２３０は、読み出しを要求されたデータブロックの退避先が、他のＲＬＵのＰパリティかを判定する。具体的には、アクセス制御部２２０は、ＲＬＵ＃０１のレコード２４１を参照し、読み出しを要求されたデータブロックが再構築される前に記録されていたＨＤＤに対応付けられた「退避先パリティ識別」に、Ｐパリティが設定されているかを判定する。
【０１８１】
復旧制御部２３０は、「退避先パリティ識別」にＰパリティが登録されている場合（Ｓ９７：Ｙｅｓ）には、ステップＳ９８の処理を実行する。なお、この場合、読み出しを要求されたデータブロックは、ＤＩＳＫ＃１３に記録されていたことになる。一方、復旧制御部２３０は、「退避先パリティ識別」にＰパリティが設定されていない場合（Ｓ９７：Ｎｏ）には、ステップＳ１００の処理を実行する。
【０１８２】
［ステップＳ９８］アクセス制御部２２０は、ＲＬＵ＃０１に対応するレコード２４１において、ＤＩＳＫ＃１３に対応付けられた「退避先ＲＬＵ番号」に設定されたＲＬＵ番号を読み出す。ここでは、「退避先ＲＬＵ番号」にはＲＬＵ＃００が設定されているものとする。
【０１８３】
アクセス制御部２２０は、図１０のステップＳ３９と同様の手順で、ＲＬＵ＃００の物理記憶領域における、読み出し対象のデータブロックの位置（すなわち、Ｐパリティが記録されているＨＤＤのディスク番号Ｎｐ）を特定する。
【０１８４】
［ステップＳ９９］アクセス制御部２２０は、ステップＳ９８で特定した位置からデータブロックを読み出し、ホスト装置４００に返信する。
［ステップＳ１００］このステップＳ１００は、ＤＩＳＫ＃１３，＃１４の少なくとも一方に記録されていたデータのリビルド処理が完了しておらず、退避先ＲＬＵのＰパリティ領域およびＱパリティ領域の少なくとも一方に、読み出しを要求されたデータが格納されていない可能性がある状態（Ｓ９４：ＮｏかつＳ９７：Ｎｏ）において実行される。このとき、アクセス制御部２２０は、図１０のステップＳ４１と同様の手順で、ＤＩＳＫ＃１０，＃１１，＃１２のそれぞれにおけるストライプ番号Ｎｓのデータ（それぞれ、データブロック、Ｐパリティ、Ｑパリティのいずれか）のうち、データブロックと一方のパリティとを基に、読み出しを要求されたデータブロックを計算する。アクセス制御部２２０は、計算により得られたデータブロックを、ホスト装置４００に返信する。
【０１８５】
図１６は、第３の実施の形態において、故障したＨＤＤが交換された場合の処理手順の例を示すフローチャートである。ここでは例として、ＲＬＵ＃０１に属するＤＩＳＫ＃１３，＃１４が交換された場合の処理について説明する。
【０１８６】
［ステップＳ１１１］復旧制御部２３０は、図１１のステップＳ５１と同様の手順で、ＤＩＳＫ＃１３，＃１４が交換されたことを検知する。
［ステップＳ１１２］復旧制御部２３０は、交換されたＤＩＳＫ＃１３，＃１４が属するＲＬＵ（ここではＲＬＵ＃０１）を特定し、特定したＲＬＵに対応するＲＡＩＤ管理テーブル２４０内のレコード２４１を参照する。
【０１８７】
復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１から、「退避先パリティ識別」にＰパリティが設定されているＨＤＤ（ここではＤＩＳＫ＃１３）を抽出する。復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１において、抽出したＨＤＤ（ＤＩＳＫ＃１３）に対応付けられていた「ディスク状態」を、「コピーバック中」に更新する。これとともに、復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１の「ＲＡＩＤ状態」を「他のＲＬＵからのコピーバック中」に更新する。
【０１８８】
さらに、復旧制御部２３０は、ＤＩＳＫ＃１３に対応付けられていた「退避先ＲＬＵ番号」に設定されたＲＬＵ（ここではＲＬＵ＃００とする）に対応するレコード２４１を参照し、そのレコード２４１の「ＲＡＩＤ状態」を「他のＲＬＵへのコピーバック中」に更新する。
【０１８９】
以上のテーブル設定処理が終了すると、復旧制御部２３０は、アクセス制御部２２０に対して、ＲＬＵ＃００のＰパリティ領域からＲＬＵ＃０１のＤＩＳＫ＃１３へのコピーバック処理を開始するように要求する。アクセス制御部２２０は、ＲＬＵ＃００のＰパリティ領域からデータを読み出し、交換されたＤＩＳＫ＃１３に対して書き戻す。
【０１９０】
アクセス制御部２２０によるＰパリティ領域からのコピーバック処理が終了すると、復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１において、ディスク＃１３に対応付けられた「ディスク状態」を「正常」に更新するとともに、ディスク＃１３に対応付けられた「退避先ＲＬＵ番号」および「退避先パリティ識別」に設定されていた情報を消去する。
【０１９３】
［ステップＳ１１３］復旧制御部２３０は、ＲＬＵ＃００におけるＰパリティを再計算するようにアクセス制御部２２０に要求する。アクセス制御部２２０は、ＤＩＳＫ＃００〜＃０４に記録されているブロックデータを基にＰパリティを計算し、算出したＰパリティをＲＬＵ＃００におけるＰパリティ領域に上書きする。
【０１９４】
ＲＬＵ＃００における全Ｐパリティ領域にＰパリティが書き込まれると、復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１において、「Ｐパリティ状態」を「通常状態」に更新し、「Ｐパリティ退避元ＲＬＵ番号」に設定されたＲＬＵ＃０１を消去する。
【０１９５】
［ステップＳ１１４］復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１から、「退避先パリティ識別」にＱパリティが設定されているＨＤＤ（ここではＤＩＳＫ＃１４）を抽出する。復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１において、抽出したＨＤＤ（ＤＩＳＫ＃１４）に対応付けられていた「ディスク状態」を、「コピーバック中」に更新する。
【０１９６】
以上のテーブル設定処理が終了すると、復旧制御部２３０は、アクセス制御部２２０に対して、ＲＬＵ＃００のＱパリティ領域からＲＬＵ＃０１のＤＩＳＫ＃１４へのコピーバック処理を開始するように要求する。アクセス制御部２２０は、ＲＬＵ＃００のＱパリティ領域からデータを読み出し、交換されたＤＩＳＫ＃１４に対して書き戻す。
【０１９７】
アクセス制御部２２０によるＱパリティ領域からのコピーバック処理が終了すると、復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１において、ディスク＃１４に対応付けられた「ディスク状態」を「正常」に更新するとともに、ディスク＃１４に対応付けられた「退避先ＲＬＵ番号」および「退避先パリティ識別」に設定されていた情報を消去する。
【０２００】
［ステップＳ１１５］復旧制御部２３０は、ＲＬＵ＃００におけるＱパリティを再計算するようにアクセス制御部２２０に要求する。アクセス制御部２２０は、ＤＩＳＫ＃００〜＃０４に記録されているブロックデータを基にＱパリティを計算し、算出したＱパリティをＲＬＵ＃００におけるＱパリティ領域に上書きする。
【０２０１】
ＲＬＵ＃００における全Ｑパリティ領域にＱパリティが書き込まれると、復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１において、「Ｑパリティ状態」を「通常状態」に更新し、「Ｑパリティ退避元ＲＬＵ番号」に設定されたＲＬＵ＃０１を消去する。
【０２０２】
［ステップＳ１１６］復旧制御部２３０は、次のようなテーブル設定処理を行うことで、ＲＬＵ＃００，＃０１の各ＲＡＩＤレベルを変更する。
復旧制御部２３０は、ＲＬＵ＃０１に対応するレコード２４１の「ＲＡＩＤ状態」を「２パリティ使用可」に更新する。これにより、ＲＬＵ＃０１は、ＤＩＳＫ＃１３，＃１４が故障する前と同様に、ＲＡＩＤ−６によって運用されるようになる。また、復旧制御部２３０は、ＲＬＵ＃００に対応するレコード２４１の「ＲＡＩＤ状態」を、「２パリティ使用可」に更新する。これにより、ＲＬＵ＃００は、ＤＩＳＫ＃１３，＃１４が故障する前と同様に、ＲＡＩＤ−６によって運用されるようになる。
【０２０３】
なお、上記の図１６の処理では、Ｐパリティ領域からＤＩＳＫ＃１３へのコピーバック処理を行った後、Ｑパリティ領域からのＤＩＳＫ＃１４へのコピーバック処理を行ったが、これらのコピーバック処理の処理順は逆であってもよい。また、これらのコピーバック処理が並列に実行されてもよい。
【０２０４】
〔第４の実施の形態〕
以下、第４の実施の形態に係るストレージシステムについて説明する。第４の実施の形態に係るストレージシステムは、第２の実施の形態に係るストレージシステムにおけるＣＭ２０１，２０２がそれぞれ備える処理機能が、次の図１７のように変形されたものである。
【０２０５】
図１７は、第４の実施の形態におけるＣＭの処理機能の構成例を示すブロック図である。なお、図１７では、図４と同様の構成要素には同じ符号を付して示す。
第４の実施の形態において、ＣＭ２０１ａは、アクセス制御部２２０ａ、復旧制御部２３０およびアクセス監視部２５０を備える。アクセス制御部２２０ａ、復旧制御部２３０およびアクセス監視部２５０の各処理は、例えば、ＣＭ２０１ａのＣＰＵ２１１が所定のプログラムを実行することで実現される。また、ＣＭ２０１ａのＨＤＤ２１３には、ＲＡＩＤ管理テーブル２４０に加えて、アクセス履歴２５１が記憶される。
【０２０６】
アクセス制御部２２０ａは、ホスト装置４００からのＩ／Ｏ要求コマンドをコマンドキュー２２１に一時的に格納し、コマンドキュー２２１に格納された順にＩ／Ｏ要求を処理する。コマンドキュー２２１は、アクセス制御部２２０ａが起動中である期間において、例えばＣＭ２０１ａのＲＡＭ２１２に生成される。
【０２０７】
また、復旧制御部２３０は、第２のＲＬＵと結合された状態の第１のＲＬＵに対して、ホスト装置４００からの読み出し要求に応じたアクセス処理を行う際に、アクセス監視部２５０に対して、第２のＲＬＵにおける過去の一定期間におけるアクセス回数を問い合わせる。
【０２０８】
復旧制御部２３０は、アクセス監視部２５０から通知されたアクセス回数や、コマンドキュー２２１に現在格納されている第２のＲＬＵに対するＩ／Ｏ要求の数に応じて、ホスト装置４００から要求されたデータの読み出し方を変更する。
【０２０９】
アクセス制御部２２０ａによるその他の処理は、図４のアクセス制御部２２０の処理と同様である。
アクセス監視部２５０は、アクセス制御部２２０ａによる、ホスト装置４００からのＩ／Ｏ要求に応じたＨＤＤへのアクセス処理を監視し、アクセス処理の履歴をアクセス履歴２５１に格納する。アクセス監視部２５０は、ＲＡＩＤ管理テーブル２４０を参照することで、ＲＬＵごとのアクセス処理の履歴をアクセス履歴２５１に登録する。また、アクセス監視部２５０は、復旧制御部２３０からの要求に応じて、所定のＲＬＵに対する過去の一定期間におけるアクセス回数を算出し、復旧制御部２３０に通知する。
【０２１０】
図１８は、第４の実施の形態において、結合状態とされたＲＬＵに対する読み出し要求が発行されたときの処理手順の例を示すフローチャートである。この図１８では例として、図１０と同様に、ＲＬＵ＃００と結合状態とされたＲＬＵ＃０１に対して、ホスト装置４００から読み出しが要求された場合の処理手順を示す。また、図１８では、図１０と同様の処理には同じステップ番号を付与して示している。なお、この図１８の処理は、データブロックごとに実行される。
【０２１１】
図１８に示す読み出し要求発行時の処理は、図１０におけるステップＳ３４とステップＳ３５との間に、ステップＳ３４ａ，Ｓ３４ｂを加えたものである。
［ステップＳ３４ａ］アクセス制御部２２０ａは、ＲＬＵ＃０１に対応するレコード２４１から、「ディスク状態」に「退避中」が設定されたディスク番号を特定する。ここでは、ＤＩＳＫ＃１３に対応する「ディスク状態」に「退避中」が設定されているものとする。
【０２１２】
アクセス制御部２２０ａは、ＤＩＳＫ＃１３ａに対応付けられた「退避先ＲＬＵ番号」に設定されたＲＬＵ番号を読み出す。ここでは、「退避先ＲＬＵ番号」にはＲＬＵ＃００が設定されているものとする。アクセス制御部２２０ａは、ＲＬＵ＃００におけるアクセスの状況に応じて、読み出しを要求されたデータを、退避先ＲＬＵ（ここではＲＬＵ＃００）のパリティ領域から読み出すか、あるいは、ＲＬＵ＃０１における故障していないＤＩＳＫ＃１０，＃１１，＃１２に記録されたデータを基に計算して送信するかを決定する。
【０２１３】
具体的には、アクセス制御部２２０ａは、アクセス監視部２５０に対して、ＲＬＵ＃００における過去の一定期間におけるアクセス回数を問い合わせ、アクセス回数を認識する。また、アクセス制御部２２０ａは、コマンドキュー２２１に現在格納されている未処理のＩ／Ｏコマンドのうち、ＲＬＵ＃００をアクセス先とするＩ／Ｏコマンドの数を算出する。
【０２１４】
例えば、過去の一定期間におけるＲＬＵ＃００へのアクセス回数が所定回数未満である場合や、ＲＬＵ＃００に対する未処理のＩ／Ｏコマンド数が所定数未満である場合には、ＲＬＵ＃００のパリティ領域からＲＬＵ＃０１のデータを読み出したとしても、ＲＬＵ＃００に対するＩ／Ｏ処理速度は大きく低下しないと考えられる。このことから、アクセス制御部２２０ａは、過去の一定期間におけるＲＬＵ＃００へのアクセス回数が所定回数未満であり、なおかつ、ＲＬＵ＃００に対する未処理のＩ／Ｏコマンド数が所定数未満である場合には、読み出しを要求されたデータをＲＬＵ＃００のパリティ領域から読み出すこと（すなわち、ステップＳ３５以降の処理を実行すること）を決定する。
【０２１５】
一方、過去の一定期間におけるＲＬＵ＃００へのアクセス回数が所定回数以上である場合や、ＲＬＵ＃００に対する未処理のＩ／Ｏコマンド数が所定数以上である場合には、ＲＬＵ＃００のパリティ領域からＲＬＵ＃０１のデータを読み出したとき、ＲＬＵ＃００に対するＩ／Ｏ処理速度が大きく低下してしまう可能性がある。このことから、アクセス制御部２２０ａは、少なくとも、過去の一定期間におけるＲＬＵ＃００へのアクセス回数が所定回数以上であるか、または、ＲＬＵ＃００に対する未処理のＩ／Ｏコマンド数が所定数以上である場合には、読み出しを要求されたデータを、ＤＩＳＫ＃１０，＃１１，＃１２に記録されたデータを基に計算すること（すなわち、ステップＳ４１の処理を実行すること）を決定する。
【０２１６】
［ステップＳ３４ｂ］アクセス制御部２２０ａは、ステップＳ３４ａにおいて、読み出しを要求されたデータをＲＬＵ＃００のパリティ領域から読み出すことを決定した場合（Ｓ３４ｂ：Ｙｅｓ）には、ステップＳ３５の処理を実行する。一方、アクセス制御部２２０ａは、ステップＳ３４ａにおいて、読み出しを要求されたデータを、ＤＩＳＫ＃１０，＃１１，＃１２に記録されたデータを基に計算することを決定した場合（Ｓ３４ｂ：Ｎｏ）には、ステップＳ４１の処理を実行する。
【０２１７】
以上の図１８の処理によれば、故障したＨＤＤに記録されていたデータブロックに対する読み出しがホスト装置４００から要求された際に、データ退避先のＲＬＵにおけるＩ／Ｏ処理速度にできるだけ影響を与えないように、読み出し方法を自動的に選択することができる。
【０２１８】
なお、上記のステップＳ３４ａ，Ｓ３４ｂでは、アクセス回数とＩ／Ｏコマンド数の両方を基に読み出し方法を決定したが、アクセス回数とＩ／Ｏコマンドの一方のみを基に読み出し方法を決定してもよい。例えば、アクセス制御部２２０ａは、過去の一定期間におけるＲＬＵ＃００へのアクセス回数が所定回数未満である場合、ステップＳ３５の処理を実行する一方、アクセス回数が所定回数以上である場合、ステップＳ４１を実行してもよい。あるいは、アクセス制御部２２０ａは、コマンドキュー２２１に現在格納されている未処理のＩ／Ｏコマンド数が所定数未満の場合、ステップＳ３５の処理を実行する一方、Ｉ／Ｏコマンド数が所定数以上の場合、ステップＳ４１の処理を実行してもよい。
【０２１９】
また、上記の図１８では、データの読み出し方法をアクセス回数やＩ／Ｏコマンド数を基に決定したが、例えば、どちらのデータ読み出し方法を選択するかは、ユーザによってＲＬＵごとに事前に設定されていてもよい。
【０２２０】
また、図１８のステップＳ３４ａ，Ｓ３４ｂの処理は、前述の第３の実施の形態に適用されてもよい。例えば、図１５のステップＳ９２の次に、図１８のステップＳ３４ａ，Ｓ３４ｂの処理を挿入する。そして、読み出しを要求されたデータをＲＬＵ＃００のパリティ領域から読み出すことを決定した場合（Ｓ３４ｂ：Ｙｅｓ）には、ステップＳ９４の処理を実行する。一方、読み出しを要求されたデータを、ＤＩＳＫ＃１０，＃１１，＃１２に記録されたデータを基に計算することを決定した場合（Ｓ３４ｂ：Ｎｏ）には、ステップＳ１００の処理を実行する。
【０２２１】
以上の各実施の形態に関し、さらに以下の付記を開示する。
（付記１）  それぞれ複数の記憶装置の記憶領域によって構成される第１の論理記憶領域および第２の論理記憶領域に対するデータアクセス処理を制御し、前記第１の論理記憶領域および前記第２の論理記憶領域のそれぞれを、パリティを用いてデータが冗長化されるとともに、パリティが複数の記憶装置に分散して配置されるように管理するアクセス制御部と、
前記第１の論理記憶領域の一部を構成する記憶装置が故障したとき、前記第１の論理記憶領域のデータのうち故障した記憶装置に記録されていたデータを生成して、生成したデータを前記第２の論理記憶領域のうちパリティが記録されていたパリティ領域に格納する復旧制御部と、
を有するストレージ制御装置と、
前記第１の論理記憶領域を構成する複数の記憶装置と、
前記第２の論理記憶領域を構成する複数の記憶装置と、
を備えることを特徴とするストレージシステム。
【０２２２】
（付記２）  前記復旧制御部は、前記生成したデータを前記パリティ領域に格納するとともに、前記アクセス制御部に、前記故障した記憶装置の記憶領域の代わりに前記パリティ領域を前記第１の論理記憶領域に組み込み、データの冗長度を維持した状態で前記第１の論理記憶領域の管理を続行させ、前記第２の論理記憶領域から前記パリティ領域を切り離し、データの冗長度を低下させた状態で前記第２の論理記憶領域の管理を続行させることを特徴とする付記１記載のストレージシステム。
【０２２３】
（付記３）  前記アクセス制御部は、前記第１の論理記憶領域に前記パリティ領域が組み込まれた状態において、ホスト装置から前記第１の論理記憶領域のうち前記故障した記憶装置に記録されていたデータの読み出しを要求されたとき、過去の一定期間における前記ホスト装置からの前記第２の論理記憶領域に対するアクセス要求の履歴に基づいて、読み出しを要求されたデータを前記パリティ領域から読み出すか、または、記憶装置の故障前に前記第１の論理記憶領域を構成していた複数の記憶装置のうち前記故障した記憶装置以外の記憶装置に格納されているデータを基に、読み出しを要求されたデータを算出するかを選択することを特徴とする付記２記載のストレージシステム。
【０２２４】
（付記４）  前記アクセス制御部は、前記第１の論理記憶領域に前記パリティ領域が組み込まれた状態において、ホスト装置から前記第１の論理記憶領域のうち前記故障した記憶装置に記録されていたデータの読み出しを要求されたとき、前記ホスト装置から受信した前記第２の論理記憶領域に対するアクセス要求のうち未処理のアクセス要求の数に基づいて、読み出しを要求されたデータを前記パリティ領域から読み出すか、または、記憶装置の故障前に前記第１の論理記憶領域を構成していた複数の記憶装置のうち前記故障した記憶装置以外の記憶装置に格納されているデータを基に、読み出しを要求されたデータを算出するかを選択することを特徴とする付記２記載のストレージシステム。
【０２２５】
（付記５）  前記復旧制御部は、前記故障した記憶装置が新たな記憶装置に交換されると、前記パリティ領域に格納されたデータを交換された記憶装置に転送し、前記第２の論理記憶領域における前記パリティ領域以外の領域に格納されたデータを基にパリティを計算して、算出されたパリティを前記パリティ領域に書き込むことを特徴とする付記１〜４のいずれか１つに記載のストレージシステム。
【０２２６】
（付記６）  前記復旧制御部は、前記第１の論理記憶領域の一部を構成する記憶装置が故障し、前記第２の論理記憶領域としてデータが３重に冗長化された論理記憶領域を選択する際、前記第１の論理記憶装置と同じ重要度またはそれより低い重要度が付与された論理記憶領域を選択することを特徴とする付記１〜５のいずれか１つに記載のストレージシステム。
【０２２７】
（付記７）  前記復旧制御部は、前記第１の論理記憶領域の一部を構成する記憶装置が故障し、前記第２の論理記憶領域としてデータが２重に冗長化された論理記憶領域を選択する際、前記第１の論理記憶装置に付与された重要度より低い重要度が付与された論理記憶領域を選択することを特徴とする付記１〜５のいずれか１つに記載のストレージシステム。
【０２２８】
（付記８）  それぞれ複数の記憶装置の記憶領域によって構成される第１の論理記憶領域および第２の論理記憶領域に対するデータアクセス処理を制御し、前記第１の論理記憶領域および前記第２の論理記憶領域のそれぞれを、パリティを用いてデータが冗長化されるとともに、パリティが複数の記憶装置に分散して配置されるように管理するアクセス制御部と、
前記第１の論理記憶領域の一部を構成する記憶装置が故障したとき、前記第１の論理記憶領域のデータのうち故障した記憶装置に記録されていたデータを生成して、生成したデータを前記第２の論理記憶領域のうちパリティが記録されていたパリティ領域に格納する復旧制御部と、
を有することを特徴とするストレージ制御装置。
【０２２９】
（付記９）  前記復旧制御部は、前記生成したデータを前記パリティ領域に格納するとともに、前記アクセス制御部に、前記故障した記憶装置の記憶領域の代わりに前記パリティ領域を前記第１の論理記憶領域に組み込み、データの冗長度を維持した状態で前記第１の論理記憶領域の管理を続行させ、前記第２の論理記憶領域から前記パリティ領域を切り離し、データの冗長度を低下させた状態で前記第２の論理記憶領域の管理を続行させることを特徴とする付記８記載のストレージ制御装置。
【０２３０】
（付記１０）  前記アクセス制御部は、前記第１の論理記憶領域に前記パリティ領域が組み込まれた状態において、ホスト装置から前記第１の論理記憶領域のうち前記故障した記憶装置に記録されていたデータの読み出しを要求されたとき、過去の一定期間における前記ホスト装置からの前記第２の論理記憶領域に対するアクセス要求の履歴に基づいて、読み出しを要求されたデータを前記パリティ領域から読み出すか、または、記憶装置の故障前に前記第１の論理記憶領域を構成していた複数の記憶装置のうち前記故障した記憶装置以外の記憶装置に格納されているデータを基に、読み出しを要求されたデータを算出するかを選択することを特徴とする付記９記載のストレージ制御装置。
【０２３１】
（付記１１）  前記アクセス制御部は、前記第１の論理記憶領域に前記パリティ領域が組み込まれた状態において、ホスト装置から前記第１の論理記憶領域のうち前記故障した記憶装置に記録されていたデータの読み出しを要求されたとき、前記ホスト装置から受信した前記第２の論理記憶領域に対するアクセス要求のうち未処理のアクセス要求の数に基づいて、読み出しを要求されたデータを前記パリティ領域から読み出すか、または、記憶装置の故障前に前記第１の論理記憶領域を構成していた複数の記憶装置のうち前記故障した記憶装置以外の記憶装置に格納されているデータを基に、読み出しを要求されたデータを算出するかを選択することを特徴とする付記９記載のストレージ制御装置。
【０２３２】
（付記１２）  前記復旧制御部は、前記故障した記憶装置が新たな記憶装置に交換されると、前記パリティ領域に格納されたデータを交換された記憶装置に転送し、前記第２の論理記憶領域における前記パリティ領域以外の領域に格納されたデータを基にパリティを計算して、算出されたパリティを前記パリティ領域に書き込むことを特徴とする付記８〜１１のいずれか１つに記載のストレージ制御装置。
【０２３３】
（付記１３）  それぞれ複数の記憶装置の記憶領域によって構成される第１の論理記憶領域および第２の論理記憶領域に対するデータアクセス処理を制御し、前記第１の論理記憶領域および前記第２の論理記憶領域のそれぞれを、パリティを用いてデータが冗長化されるとともに、パリティが複数の記憶装置に分散して配置されるように管理するストレージ制御装置におけるストレージ制御方法であって、
前記第１の論理記憶領域の一部を構成する記憶装置が故障したとき、前記第１の論理記憶領域のデータのうち故障した記憶装置に記録されていたデータを生成して、生成したデータを前記第２の論理記憶領域のうちパリティが記録されていたパリティ領域に格納する、
ことを特徴とするストレージ制御方法。
【０２３４】
（付記１４）  前記第１の論理記憶領域の一部を構成する記憶装置が故障したとき、前記生成したデータを前記パリティ領域に格納するとともに、前記故障した記憶装置の記憶領域の代わりに前記パリティ領域を前記第１の論理記憶領域に組み込み、データの冗長度を維持した状態で前記第１の論理記憶領域の管理を続行し、前記第２の論理記憶領域から前記パリティ領域を切り離し、データの冗長度を低下させた状態で前記第２の論理記憶領域の管理を続行することを特徴とする付記１３記載のストレージ制御方法。
【０２３５】
（付記１５）  前記第１の論理記憶領域に前記パリティ領域が組み込まれた状態において、ホスト装置から前記第１の論理記憶領域のうち前記故障した記憶装置に記録されていたデータの読み出しを要求されたとき、過去の一定期間における前記ホスト装置からの前記第２の論理記憶領域に対するアクセス要求の履歴に基づいて、読み出しを要求されたデータを前記パリティ領域から読み出すか、または、記憶装置の故障前に前記第１の論理記憶領域を構成していた複数の記憶装置のうち前記故障した記憶装置以外の記憶装置に格納されているデータを基に、読み出しを要求されたデータを算出するかを選択することを特徴とする付記１４記載のストレージ制御方法。
【０２３６】
（付記１６）  前記第１の論理記憶領域に前記パリティ領域が組み込まれた状態において、ホスト装置から前記第１の論理記憶領域のうち前記故障した記憶装置に記録されていたデータの読み出しを要求されたとき、前記ホスト装置から受信した前記第２の論理記憶領域に対するアクセス要求のうち未処理のアクセス要求の数に基づいて、読み出しを要求されたデータを前記パリティ領域から読み出すか、または、記憶装置の故障前に前記第１の論理記憶領域を構成していた複数の記憶装置のうち前記故障した記憶装置以外の記憶装置に格納されているデータを基に、読み出しを要求されたデータを算出するかを選択することを特徴とする付記１４記載のストレージ制御方法。
【０２３７】
（付記１７）  前記故障した記憶装置が新たな記憶装置に交換されると、前記パリティ領域に格納されたデータを交換された記憶装置に転送し、前記第２の論理記憶領域における前記パリティ領域以外の領域に格納されたデータを基にパリティを計算して、算出されたパリティを前記パリティ領域に書き込むことを特徴とする付記１３〜１６のいずれか１つに記載のストレージ制御方法。
【０２３８】
（付記１８）  前記第１の論理記憶領域の一部を構成する記憶装置が故障し、前記第２の論理記憶領域としてデータが３重に冗長化された論理記憶領域を選択する際、前記第１の論理記憶装置と同じ重要度またはそれより低い重要度が付与された論理記憶領域を選択することを特徴とする付記１３〜１７のいずれか１つに記載のストレージ制御方法。
【０２３９】
（付記１９）  前記第１の論理記憶領域の一部を構成する記憶装置が故障し、前記第２の論理記憶領域としてデータが２重に冗長化された論理記憶領域を選択する際、前記第１の論理記憶装置に付与された重要度より低い重要度が付与された論理記憶領域を選択することを特徴とする付記１３〜１７のいずれか１つに記載のストレージ制御方法。
【符号の説明】
【０２４０】
１  ストレージシステム
１０  ストレージ制御装置
１１  アクセス制御部
１２  復旧制御部
２１〜２８  記憶装置
３０  ホスト装置３０
【図１】
0005776436.tif 000002
【図２】
0005776436.tif 000003
【図３】
0005776436.tif 000004
【図４】
0005776436.tif 000005
【図５】
0005776436.tif 000006
【図６】
0005776436.tif 000007
【図７】
0005776436.tif 000008
【図８】
0005776436.tif 000009
【図９】
0005776436.tif 000010
【図１０】
0005776436.tif 000011
【図１１】
0005776436.tif 000012
【図１２】
0005776436.tif 000013
【図１３】
0005776436.tif 000014
【図１４】
0005776436.tif 000015
【図１５】
0005776436.tif 000016
【図１６】
0005776436.tif 000017
【図１７】
0005776436.tif 000018
【図１８】
0005776436.tif 000019