(57)【要約】【課題】性能低下を軽減しながら障害復旧処理を行い得るストレージ装置及び障害復旧方法を提案する。【解決手段】複数の記憶媒体が提供する記憶領域について、ユーザデータが書き込まれているか否かをストライプごとに管理し、記憶媒体のいずれかが障害により閉塞したときに、複数の記憶媒体が提供する記憶領域のうち、ユーザデータが書き込まれていないストライプに優先して、ユーザデータが書き込まれているストライプに対するコレクションコピー処理を実行し、複数の記憶媒体が提供する記憶領域のうち、ユーザデータが書き込まれていないストライプについては、空き時間を利用してコレクションコピー処理を実行するようにした。【選択図】図１０
2009294901.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置から与えられたユーザデータを、当該ユーザデータに基づき生成した冗長データと共に複数の記憶媒体に分散して書き込むストレージ装置において、
前記複数の記憶媒体が提供する記憶領域について、前記ユーザデータを読み書きする単位領域であるストライプごとに、前記ユーザデータが書き込まれているか否かを管理する管理部と、
前記記憶媒体のいずれかが障害により閉塞したときに、当該記憶媒体に格納されたデータを復元してスペアの記憶媒体にコピーするコレクションコピー処理を、前記ストライプごとに実行するコレクションコピー処理実行部と
を備え、
前記コレクションコピー実行部は、
前記複数の記憶媒体が提供する記憶領域のうち、前記ユーザデータが書き込まれていない前記ストライプに優先して、前記ユーザデータが書き込まれている前記ストライプに対する前記コレクションコピー処理を実行し、
前記複数の記憶媒体が提供する記憶領域のうち、前記ユーザデータが書き込まれていない前記ストライプについては、空き時間を利用して前記コレクションコピー処理を実行する
ことを特徴とするストレージ装置。
【請求項２】
各前記ストライプにそれぞれ対応させてフラグが設けられ、
前記管理部は、
前記複数の記憶媒体が提供する記憶領域に前記ホスト装置からのユーザデータを書き込んだときには、当該ユーザデータを書き込んだ前記ストライプと対応付けられた前記フラグの状態を所定状態に変化させ、
前記障害復旧部は、
前記ユーザデータが書き込まれている前記ストライプに対する前記コレクションコピー処理を実行する際、前記フラグの状態に基づいて、対象とする前記ストライプに前記ユーザデータが書き込まれているか否かを判定する
ことを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記フラグは、前記記憶媒体に保持された
ことを特徴とする請求項１に記載のストレージ装置。
【請求項４】
前記フラグを保持する前記記憶媒体は、前記冗長データを記憶する前記記憶媒体である
ことを特徴とする請求項３に記載のストレージ装置。
【請求項５】
前記複数の記憶媒体は、ＲＡＩＤ（Redundant Array of Inexpensive Disks）グループを構成し、
前記障害復旧部は、
前記ユーザデータが書き込まれた前記ストライプの連続出現数、前記ＲＡＩＤグループを構成する前記記憶媒体の数及び前記ＲＡＩＤグループに設定されたＲＡＩＤレベルのうちの少なくとも１つに基づいて、前記記憶媒体が閉塞したときの障害復旧方式を、前記ユーザデータが書き込まれていない前記ストライプに優先して、前記ユーザデータが書き込まれている前記ストライプに対するデータの復元処理を実行する第１の障害復旧方式から、すべての前記ストライプに対するデータの復元処理を実行する第２の障害復旧方式に切り換える
ことを特徴とする請求項１に記載のストレージ装置。
【請求項６】
ホスト装置から与えられたユーザデータを、当該ユーザデータに基づき生成した冗長データと共に複数の記憶媒体に分散して書き込むストレージ装置における障害復旧方法において、
前記複数の記憶媒体が提供する記憶領域について、前記ユーザデータを読み書きする単位領域であるストライプごとに、前記ユーザデータが書き込まれているか否かを管理する第１のステップと、
前記記憶媒体のいずれかが障害により閉塞したときに、当該記憶媒体に格納されたデータを復元してスペアの記憶媒体にコピーするコレクションコピー処理を、前記ストライプごとに実行する第２のステップと
を備え、
前記第２のステップでは、
前記複数の記憶媒体が提供する記憶領域のうち、前記ユーザデータが書き込まれていない前記ストライプに優先して、前記ユーザデータが書き込まれている前記ストライプに対する前記コレクションコピー処理を実行し、
前記複数の記憶媒体が提供する記憶領域のうち、前記ユーザデータが書き込まれていない前記ストライプについては、空き時間を利用して前記コレクションコピー処理を実行する
ことを特徴とする障害復旧方法。
【請求項７】
各前記ストライプにそれぞれ対応させてフラグが設けられ、
前記第１のステップでは、
前記複数の記憶媒体が提供する記憶領域に前記ホスト装置からのユーザデータを書き込んだときには、当該ユーザデータを書き込んだ前記ストライプと対応付けられた前記フラグの状態を所定状態に変化させ、
前記第２のステップでは、
前記ユーザデータが書き込まれている前記ストライプに対する前記コレクションコピー処理を実行する際、前記フラグの状態に基づいて、対象とする前記ストライプに前記ユーザデータが書き込まれているか否かを判定する
ことを特徴とする請求項６に記載の障害復旧方法。
【請求項８】
前記フラグは、前記記憶媒体に保持された
ことを特徴とする請求項６に記載の障害復旧方法。
【請求項９】
前記フラグを保持する前記記憶媒体は、前記冗長データを記憶する前記記憶媒体である
ことを特徴とする請求項８に記載の障害復旧方法。
【請求項１０】
前記複数の記憶媒体は、ＲＡＩＤ（Redundant Array of Inexpensive Disks）グループを構成し、
前記第２のステップでは、
前記ユーザデータが書き込まれた前記ストライプの連続出現数、前記ＲＡＩＤグループを構成する前記記憶媒体の数及び前記ＲＡＩＤグループに設定されたＲＡＩＤレベルのうちの少なくとも１つに基づいて、前記記憶媒体が閉塞したときの障害復旧方式を、前記ユーザデータが書き込まれていない前記ストライプに優先して、前記ユーザデータが書き込まれている前記ストライプに対するデータの復元処理を実行する第１の障害復旧方式から、すべての前記ストライプに対するデータの復元処理を実行する第２の障害復旧方式に切り換える
ことを特徴とする請求項６に記載の障害復旧方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置及び障害復旧方法に関し、例えばディスクアレイ装置に適用して好適なものである。
【背景技術】
【０００２】
近年、企業や官庁におけるデータ保存用のストレージ装置として、複数のハードディスク装置をＲＡＩＤ（Redundant Array of Inexpensive Disks）方式で管理・運用する、いわゆるディスクアレイ装置が広く用いられている。
【０００３】
ディスクアレイ装置では、所定数のハードディスク装置によって１つのＲＡＩＤグループが構成され、１つのＲＡＩＤグループを構成する各ハードディスク装置が提供する記憶領域上に１又は複数の論理的なボリューム（以下、これを論理ボリュームと呼ぶ）が定義される。
【０００４】
そしてホスト装置からのユーザデータは、ハードディスク装置におけるデータの読書きの単位であるブロックと同じサイズに分割され、かかるユーザデータに基づいて生成された冗長データ（以下、これをパリティデータと呼ぶ）と共にＲＡＩＤグループを構成する各ハードディスク装置に分散されて書き込まれる。
【０００５】
かかるパリティデータの存在により、ＲＡＩＤグループを構成する１台又は２台のハードディスク装置が障害により閉塞した場合に、当該閉塞したハードディスク装置（以下、適宜、これを閉塞ハードディスク装置と呼ぶ）に格納されていたユーザデータを、他のハードディスク装置に格納されている対応するユーザデータ及び対応するパリティデータに基づいて復元することができる。
【０００６】
なお、特許文献１及び特許文献２には、上述のパリティデータを用いて閉塞ハードディスク装置に格納されていたデータを復元する技術に関する発明が開示されている。
【特許文献１】特開２００３−１６７６９０号公報
【特許文献２】特開２００２−１７５１５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、従来のディスアレイ装置では、ユーザデータが書き込まれているか否かに係わらず、閉塞ハードディスク装置のすべての記憶領域についてデータの復元を行い、復元したデータをスペアのハードディスク装置（以下、これをスペアハードディスク装置と呼ぶ）に格納し終えた時点で障害復旧処理の完了としている。
【０００８】
このため従来の障害復旧方式によると、ユーザデータが書き込まれていない記憶領域についてもデータの復元処理が行われるため、障害復旧処理に多くの時間を要するという問題があった。特に近年では、ハードディスク装置の容量の増大に伴い、障害復旧処理に要する時間が増加傾向にある。
【０００９】
この場合において、かかる障害復旧処理時は、ホスト装置からの要求に応じたデータ入出力処理の処理性能が低下する。従って、障害復旧処理に要する時間が増加すると、データ入出力処理の処理性能が低下した状態がより長い時間継続することになる。
【００１０】
本発明は以上の点を考慮してなされたもので、性能低下を軽減しながら障害復旧処理を行い得るストレージ装置及び障害復旧方法を提案しようとするものである。
【課題を解決するための手段】
【００１１】
かかる課題を解決するため本発明においては、ホスト装置から与えられたユーザデータを、当該ユーザデータに基づき生成した冗長データと共に複数の記憶媒体に分散して書き込むストレージ装置において、前記複数の記憶媒体が提供する記憶領域について、前記ユーザデータを読み書きする単位領域であるストライプごとに、前記ユーザデータが書き込まれているか否かを管理する管理部と、前記記憶媒体のいずれかが障害により閉塞したときに、当該記憶媒体に格納されたデータを復元してスペアの記憶媒体にコピーするコレクションコピー処理を、前記ストライプごとに実行するコレクションコピー処理実行部とを備え、前記コレクションコピー実行部は、前記複数の記憶媒体が提供する記憶領域のうち、前記ユーザデータが書き込まれていない前記ストライプに優先して、前記ユーザデータが書き込まれている前記ストライプに対する前記コレクションコピー処理を実行し、前記複数の記憶媒体が提供する記憶領域のうち、前記ユーザデータが書き込まれていない前記ストライプについては、空き時間を利用して前記コレクションコピー処理を実行するようにした。
【００１２】
この結果、このストレージ装置によれば、コレクションコピー処理を実行することに起因してデータ入出力処理の処理性能が低下する時間を短縮化することができる。
【００１３】
また本発明においては、ホスト装置から与えられたユーザデータを、当該ユーザデータに基づき生成した冗長データと共に複数の記憶媒体に分散して書き込むストレージ装置における障害復旧方法において、前記複数の記憶媒体が提供する記憶領域について、前記ユーザデータを読み書きする単位領域であるストライプごとに、前記ユーザデータが書き込まれているか否かを管理する第１のステップと、前記記憶媒体のいずれかが障害により閉塞したときに、当該記憶媒体に格納されたデータを復元してスペアの記憶媒体にコピーするコレクションコピー処理を、前記ストライプごとに実行する第２のステップとを備え、前記第２のステップでは、前記複数の記憶媒体が提供する記憶領域のうち、前記ユーザデータが書き込まれていない前記ストライプに優先して、前記ユーザデータが書き込まれている前記ストライプに対する前記コレクションコピー処理を実行し、前記複数の記憶媒体が提供する記憶領域のうち、前記ユーザデータが書き込まれていない前記ストライプについては、空き時間を利用して前記コレクションコピー処理を実行するようにした。
【００１４】
この結果、この障害復旧方法によれば、コレクションコピー処理を実行することに起因してデータ入出力処理の処理性能が低下する時間を短縮化することができる。
【発明の効果】
【００１５】
本発明によれば、コレクションコピー処理を実行することに起因してデータ入出力処理の処理性能が低下する時間を短縮化することができるため、性能低下を軽減しながら障害復旧処理を実行することができる。
【発明を実施するための最良の形態】
【００１６】
以下図面について、本発明の一実施の形態を詳述する。
【００１７】
（１）本実施の形態による記憶システムの構成
図１において、１は全体として本実施の形態による情報処理システムを示す。この情報処理システム１は、上位装置としてのホスト装置２がネットワークを３介してディスクアレイ装置４と接続されることにより構成されている。
【００１８】
ホスト装置２は、ＣＰＵ（Central Processing Unit）やメモリ等の情報処理資源を備えたメインフレーム系のコンピュータ装置であり、キーボード、スイッチやポインティングデバイス、マイクロフォン等の情報入力装置（図示せず）と、モニタディスプレイやスピーカ等の情報出力装置（図示せず）とを備えて構成される。
【００１９】
ネットワーク３は、例えばＳＡＮ（Storage Area Network）、ＬＡＮ（Local Area Network）、インターネット、公衆回線又は専用回線などから構成される。このネットワーク３を介したホスト装置２及びディスクアレイ装置４間の通信は、例えばネットワーク３がＳＡＮである場合にはファイバーチャネルプロトコルに従って行われ、ネットワーク３がＬＡＮである場合にはＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）プロトコルに従って行われる。
【００２０】
ディスクアレイ装置４は、複数のハードディスク装置１０から構成される記憶部１１と、これらハードディスク装置１０に対するデータの入出力を制御するコントローラ１２とを備える。
【００２１】
ハードディスク装置１０は、例えばＳＣＳＩ（Small Computer System Interface）ディスク等の高価なハードディスク装置又はＳＡＴＡ（Serial AT Attachment）ディスク等の安価なハードディスク装置から構成される。これら記憶部のハードディスク装置１０は、コントローラ１２によりＲＡＩＤ方式で運用・管理される。
【００２２】
所定数のハードディスク装置１０によって１つのＲＡＩＤ（Redundant Array of Inexpensive Disks）グループが構成され、１つのＲＡＩＤグループを構成する各ハードディスク装置１０が提供する記憶領域上に１又は複数の論理的なボリューム（以下、これを論理ボリュームと呼ぶ）ＶＯＬが定義される。そして、ホスト装置２からのユーザデータがこの論理ボリュームＶＯＬに所定の大きさのブロックを単位として読み書きされる。
【００２３】
各論理ボリュームＶＯＬには、それぞれ固有の識別子（ＬＵＮ：Logical Unit Number）が割り当てられる。本実施の形態の場合、ユーザデータの入出力は、この識別子と、各ブロックにそれぞれ割り当てられるそのブロックに固有の番号（ＬＢＡ：Logical Block Address）とを組み合わせたものをアドレスとして、当該アドレスを指定して行われる。
【００２４】
コントローラ１２は、チャネルインタフェース２０、ＣＰＵ２１、ローカルメモリ２２、データ転送コントローラ２３、キャッシュメモリ２４、ディスクインタフェース２５及び管理端末２６を備えて構成される。
【００２５】
チャネルインタフェース２０は、ネットワーク３に対するインタフェースであり、ハードディスク装置１０に読み書きするユーザデータや各種コマンドなどをホスト装置２との間で送受信する。
【００２６】
ＣＰＵ２１は、ハードディスク装置１０からローカルメモリ２２に読み出されたマイクロプログラムを実行することにより、ホスト装置２から与えられる各種コマンドに応じた制御処理を実行する。
【００２７】
ローカルメモリ２２は、主として後述するマイクロプログラムを記憶するために用いられるほか、ＣＰＵ２１のワークメモリとしても用いられる。またデータ転送コントローラ２３は、ＣＰＵ２１の制御に基づいて、チャネルインタフェース２０及びディスクインタフェース２５間のデータ転送を制御する。
【００２８】
キャッシュメモリ２４は、チャネルインタフェース２０及びディスクインタフェース２５間において転送されるデータを一時的に記憶するために用いられる。このキャッシュメモリ２４には、ディスクアレイ装置４のシステム構成に関する情報（システム情報）も格納される。
【００２９】
ディスクインタフェース２５は、各ハードディスク装置１０に対するインタフェースであり、例えばファイバーチャネルプロトコルに従ってユーザデータや各種コマンドをハードディスク装置１０との間でやり取りする。
【００３０】
管理端末２６は、例えばノート型のパーソナルコンピュータから構成される。管理端末２６は、ＣＰＵ２１を介してディスクアレイ装置４内の障害の有無に関する情報を収集し、必要な情報を表示する。またＣＰＵ２１からの要求に応じて必要な情報を表示する。
【００３１】
（２）本実施の形態による障害復旧方式
次に、いずれかのハードディスク装置１０が障害により閉塞した場合に、ディスクアレイ装置４において行われる当該障害からの復旧処理方式（以下、これを本実施の形態による障害復旧方式と呼ぶ）について説明する。
【００３２】
まず、従来の障害復旧方式について、図２を用いて説明する。図２は、「ＨＤＤ０」〜「ＨＤＤ２」という３台のハードディスク装置１０により構成されるＲＡＩＤグループ３０において、「ＨＤＤ２」というハードディスク装置１０が障害により閉塞した場合を示している。ＲＡＩＤグループ３０は、ＲＡＩＤレベルが「ＲＡＩＤ５」又は「ＲＡＩＤ６」に設定されているものとする。またこの図２において、Ａ０〜Ａ２，Ｂ０〜Ｂ２，Ｃ０〜Ｃ２，……は、それぞれ１つのストライプＳＴＡ，ＳＴＢ，ＳＴＣ，……を構成するブロックを表すものとする。なお「ストライプ」とは、ユーザデータをＲＡＩＤグループ３０が提供する記憶領域にＲＡＩＤ方式で読み書きする際の記憶領域の単位をいう。
【００３３】
この場合、ディスクアレイ装置４のコントローラ１２は、障害により閉塞したハードディスク装置１０以外の各ハードディスク装置１０から、先頭の「ＳＴＡ」というストライプを構成する各ブロックにそれぞれ格納されたユーザデータやパリティデータを順次読み出す。例えば図２の場合、「ＨＤＤ２」というハードディスク装置１０が閉塞しているため、コントローラ１２は、「ＨＤＤ０」というハードディスク装置１０内の「Ａ０」というブロックと、「ＨＤＤ１」というハードディスク装置１０内の「Ａ１」というブロックとから、それぞれユーザデータやパリティデータを読み出す。
【００３４】
続いてコントローラ１２は、「Ａ０」というブロックと、「Ａ１」というブロックとからそれぞれ読み出したユーザデータ又はパリティデータに基づいて、閉塞ハードディスク装置１０内の「Ａ２」というブロックに格納されていたユーザデータ又はパリティデータを復元し、これを「ＨＤＤ３」というスペアハードディスク装置１０内の対応する「Ａ３」というブロックに書き込む。
【００３５】
そしてコントローラ１２は、「ＳＴ０」以降の各ストライプ（ＳＴＡ，ＳＴＢ，……）について、以上の処理（以下、このように障害により閉塞したハードディスク装置１０に格納されていたユーザデータやパリティデータを当該閉塞ハードディスク装置１０以外の各ハードディスク装置１０に格納されたユーザデータやパリティデータに基づいて復元してスペアハードディスク装置１０にコピーする処理をコレクションコピー処理と呼ぶ）をシーケンシャルに行う。
【００３６】
この際、コントローラ１２は、ユーザデータが書き込まれていないストライプについても同様のコレクションコピー処理を行う。例えば図２の例の場合、「ＳＴＢ」というストライプにはユーザデータが書き込まれていないが、コントローラ１２は、「ＨＤＤ０」というハードディスク装置１０の「Ｂ０」というブロックと「ＨＤＤ１」というハードディスク装置１０の「Ｂ１」というブロックからそれぞれデータ（ここでは初期化のときに格納された初期フォーマット用データ）を読み出し、これらデータに基づいて障害ハードディスク装置１０の「Ｂ２」というブロックに格納されていたデータを復元して、これをスペアハードディスク装置１０内の「Ｂ３」というブロックに格納する。
【００３７】
ところで、このような従来の障害復旧方式によると、ユーザデータが書き込まれているか否かに係わりなく、障害が発生したＲＡＩＤグループ（以下、これを障害ＲＡＩＤグループと呼ぶ）３０内のすべてのストライプについて、順次コレクションコピー処理を行うため、障害復旧処理に多くの時間を要する。特に近年では近年のハードディスク装置の容量の増大に伴い、障害復旧処理に要する時間が増加傾向にある。
【００３８】
ところが、かかる障害復旧処理時は、障害復旧処理のためにコントローラ１２の処理能力が多く割り当てられるため、ホスト装置２からコマンドに応じたデータ入出力処理の処理性能が低下する。従って、障害復旧処理に要する時間が増加すると、データ入出力処理の処理性能が低下した状態の時間もそれだけ増加するという問題がある。
【００３９】
そこで本実施の形態によるディスクアレイ装置４では、上述のような従来方式による障害復旧処理を実行する機能に加えて、障害が発生したＲＡＩＤグループ３０内のストライプのうち、ユーザデータが格納されたストライプについてのコレクションコピー処理を優先的に行い、ユーザデータが格納されていないストライプについては、空き時間（負荷が少なく、かかるコレクションコピー処理がホスト装置２からの要求に応じたデータ入出力処理の処理性能に影響を与えない時間）を利用してコレクションコピー処理行う機能が搭載されている点を特徴の１つとしている。
【００４０】
かかる機能を実現するための手段として、本実施の形態によるディスクアレイ装置４では、各ストライプのパリティデータが格納されるブロックにおける管理領域内の所定の１ビットを、そのブロックが属するストライプにユーザデータが書き込まれているか否かを管理するために用いる。
【００４１】
すなわち、図３に示すように、ハードディスク装置１０では、各ブロック３１が５１２バイトのデータ領域３１Ａと、８バイトの管理領域３１Ｂから構成されている。そして本実施の形態においては、この管理領域３１Ｂ内の１ビットを、そのブロックが属するストライプにユーザデータが書き込まれているか否かを管理するための書込み管理フラグ３１Ｃとして用いる。
【００４２】
そしてディスクアレイ装置４は、ホスト装置２からのユーザデータをハードディスク装置１０に書き込む際に、そのユーザデータに基づき生成したパリティデータを格納するブロック３１の管理領域３１Ｂの書込み管理フラグ３１Ｃをオン（「１」）に設定する。
【００４３】
またディスクアレイ装置４は、いずれかのＲＡＩＤグループ３０に属するハードディスク装置１０が障害により閉塞した場合であって、閉塞ハードディスク装置１０に格納されていたユーザデータをスペアハードディスク装置１０にコレクションコピーする際には、ストライプごとに、パリティデータが格納されるブロック３１の管理領域３１Ｂに格納された書込み管理フラグ３１Ｃをチェックし、この書込み管理フラグ３１Ｃに基づいてそのストライプにユーザデータが書き込まれているか否かを判定する。
【００４４】
そしてディスクアレイ装置４は、かかる判定によりそのストライプにはユーザデータが書き込まれていなかったと判断した場合には、そのストライプに対するデータのコレクションコピー処理を行わず、そのストライプにデータが書き込まれていたと判断した場合にのみ、そのストライプに対するデータのコレクションコピー処理を実行する。
【００４５】
以上のような処理を障害ＲＡＩＤグループ３０内のすべてのストライプについて終えた段階で、ハードディスク装置１０の障害により失われたユーザデータの復元は完了しており、ユーザデータの冗長度が回復する。そこで、ディスクアレイ装置４は、その段階で障害ハードディスク装置１０に対する復旧処理を完了とする。そしてディスクアレイ装置４は、この後、ユーザデータが書き込まれていないストライプについて、例えば初期フォーマット用データのコレクションコピー処理を、空き時間を利用してバックグランドで実行する。
【００４６】
ところで、以上のような本実施の形態による障害復旧方式によると、ユーザデータが書き込まれたストライプの数が多い場合に、ストライプごとに書込み管理フラグ３１Ｃの状態を確認する必要がある分、従来の障害復旧方式に比べて障害復旧処理に時間を要するという問題がある。
【００４７】
そこで、本実施の形態によるディスクアレイ装置４では、障害復旧処理時にユーザデータをコレクションコピー処理すべきストライプ（つまりユーザデータが書き込まれていたストライプ）の連続出現回数をカウントし、このカウント値が予め設定された第１の閾値（以下、これを連続書込み閾値と呼ぶ）を超えた場合には、障害復旧方式を従来の障害復旧方式に切り換えて障害復旧処理を行う。
【００４８】
ただし、従来の障害復旧方式による障害復旧処理を実行している際も常に各ストライプの書込み管理フラグをチェックして、ユーザデータが未書込みのストライプの連続出現回数をカウントし、このカウント値が予め定められた第２の閾値（以下、これを連続未書込み閾値と呼ぶ）を超えた場合には、障害復旧方式を本実施の形態による障害復旧方式に切り換える。
【００４９】
一方、従来の障害復旧方式によると、閉塞ハードディスク装置１０に格納されていたユーザデータやパリティデータを復元する際、ＲＡＩＤグループ３０を構成するハードディスク装置数（以下、適宜、これをデータディスク幅と呼ぶ）がある一定数を超える場合に、障害復旧処理がデータ入出力性能に悪影響を及ぼす問題がある。
【００５０】
これは、例えばデータディスク幅が８台以内であれば閉塞ハードディスク装置１０に保存されていたユーザデータを１回の演算により算出できるが、データディスク幅が８台を超えると当該ユーザデータの復元に複数回の演算を要するなど、データディスク幅がある一定数を超えるとデータ復元のための演算処理の負荷が大きくなることに起因する。
【００５１】
そこで本実施の形態によるディスクアレイ装置４では、データ復元のための演算処理がデータ入出力性能に悪影響を及ぼさない最大のデータディスク幅をデータディスク幅境界値として設定できるようになされている。そしてディスクアレイ装置４は、障害ＲＡＩＤグループ３０のデータディスク幅がかかるデータディスク幅境界値以下である場合には従来方式による障害復旧処理を実行し、障害ＲＡＩＤグループ３０のデータディスク幅を超える場合には本方式による障害復旧処理を実行する。
【００５２】
他方、上述のような本実施の形態による障害復旧方式を採用するに際しては、障害ＲＡＩＤグループに設定されたＲＡＩＤレベルを考慮する必要がある。これは、例えばＲＡＩＤ５ではストライプ当たりのパリティ数が１であるのに対してＲＡＩＤ６ではストライプ当たりのパリティ数が２であることに起因する。
【００５３】
そこで本実施の形態によるディスクアレイ装置４では、障害ＲＡＩＤグループ３０のＲＡＩＤレベルがＲＡＩＤ５に設定されている場合、図４に示すように、閉塞ハードディスク装置１０にユーザデータが格納されているストライプ（例えば図４の「ＳＴＡ」、「ＳＴＤ」及び「ＳＴＥ」）については、当該ストライプを構成する他のブロックに格納されたユーザデータ及びパリティデータを用いて閉塞ハードディスク装置１０に格納されていたユーザデータのコレクションコピー処理を実行する。またユーザデータが格納されていないストライプ（例えば図４の「ＳＴＢ」及び「ＳＴＧ」）については、コレクションコピー処理を実行しない。
【００５４】
さらに閉塞ハードディスク装置１０にパリティデータが格納されていた又はパリティデータが格納されるべきストライプ（例えば図４の「ＳＴＣ」及び「ＳＴＦ」）については、書込み管理フラグ３１Ｃのチェックが行えないため、書込み管理フラグ３１Ｃが「オン」に設定されている場合と同様に、常に、そのストライプを構成する他のブロックに格納されたユーザデータを用いてコレクションコピー処理を実行する。
【００５５】
これに対して障害ＲＡＩＤグループ３０のＲＡＩＤレベルがＲＡＩＤ６に設定されている場合であって、閉塞ハードディスク装置１０が１台のときには、図５に示すように、すべてのストライプに読み出し可能なパリティデータが必ず１つ存在する。
【００５６】
よってこの場合には、障害ＲＡＩＤグループ３０内のすべてのストライプについて書込み管理フラグ３１Ｃのチェックを行う。そして、ユーザデータが書き込まれているストライプ（例えば図５の「ＳＴＡ」、「ＳＴＣ」〜「ＳＴＥ」）については、そのストライプを構成する他のブロックからユーザデータ及びパリティデータを読み出して閉塞ハードディスク装置１０に格納されていたユーザデータ又はパリティデータのコレクションコピー処理を実行する。またユーザデータが書き込まれていないストライプ（例えば図５の「ＳＴＢ」、「ＳＴＦ」及び「ＳＴＧ」）については、閉塞ハードディスク装置１０に格納されていたデータ（初期フォーマット用データ）のコレクションコピー処理を実行しない。
【００５７】
一方、障害ＲＡＩＤグループ３０のＲＡＩＤレベルがＲＡＩＤ６に設定されている場合であって、閉塞ハードディスク装置１０が２台のときには、図６に示すように、これら２台の閉塞ハードディスク装置１０にそれぞれユーザデータやパリティデータが格納されているストライプ（例えば図６「ＳＴＡ」、「ＳＴＤ」及び「ＳＴＥ」）については、当該ストライプを構成する他のブロックに格納されたユーザデータやパリティデータを用いてこれら閉塞ハードディスク装置１０にそれぞれ格納されていたユーザデータやパリティデータのコレクションコピー処理を実行する。
【００５８】
またユーザデータが書き込まれていないストライプ（例えば図６の「ＳＴＢ」及び「ＳＴＧ」）については、閉塞ハードディスク装置１０に格納されていたデータ（初期フォーマット用データ）のコレクションコピー処理を実行しない。さらに２台の閉塞ハードディスク装置１０の双方にパリティデータが格納されていた又はパリティデータが格納されるべきストライプ（例えば図６の「ＳＴＣ」及び「ＳＴＦ」）については、書込み管理フラグ３１Ｃのチェックが行えないため、書込み管理フラグ３１Ｃが「オン」に設定されている場合と同様に、常に、そのストライプを構成する他のブロックに格納されたユーザデータを用いて２台の閉塞ハードディスク装置１０にそれぞれ格納されていたデータのコレクションコピー処理を実行する。
【００５９】
以上のような本実施の形態による障害復旧処理を実現するための手段として、ディスクアレイ装置４のローカルメモリ２２（図１）には、図７に示すようなＲＡＩＤグループ管理テーブル４０と、図８に示すようなＲＡＩＤグループごとのストライプ管理テーブル４１とが格納されている。
【００６０】
このうちＲＡＩＤグループ管理テーブル４０は、ディスクアレイ装置４内に設定された各ＲＡＩＤグループを管理するためのテーブルであり、図７に示すように、ＲＡＩＤグループＩＤ欄４０Ａ、データディスク幅欄４０Ｂ及びＲＡＩＤレベル欄４０Ｃから構成される。
【００６１】
そしてＲＡＩＤグループＩＤ欄４０Ａには、ディスクアレイ装置４内に設定された各ＲＡＩＤグループにそれぞれ付与されたＩＤが格納され、データディスク幅欄には、対応するＲＡＩＤグループについて設定されたデータディスク幅が格納される。またＲＡＩＤレベル欄４０Ｃには、対応するＲＡＩＤグループについて設定されたＲＡＩＤレベルが格納される。
【００６２】
従って、図７の例の場合、「１」というグループＩＤのＲＡＩＤグループのデータディスク幅は「４」であり、そのＲＡＩＤグループのＲＡＩＤレベルは「ＲＡＩＤ５」に設定されていることが示されている。
【００６３】
一方、ストライプ管理テーブル４１は、対応するＲＡＩＤグループ内の各ストライプを管理するためのテーブルであり、図８に示すように、ストライプＩＤ欄４１Ａ、ハードディスク装置ＩＤ欄４１Ｂ、ＬＢＡ欄４１Ｃ及びパリティフラグ欄４１Ｄから構成される。
【００６４】
そしてストライプＩＤ欄４１Ａには、対応するＲＡＩＤグループ内に存在する各ストライプにそれぞれ付与された識別子（以下、これをストライプＩＤと呼ぶ）が格納される。またハードディスク装置ＩＤ欄４１Ｂには、対応するストライプにおいてパリティデータが格納される各ハードディスク装置１０の識別子（以下、これを装置ＩＤと呼ぶ）がそれぞれ格納され、ＬＢＡ欄４１Ｃには、そのハードディスク装置１０においてかかるパリティデータが格納されるブロックのＬＢＡが格納される。
【００６５】
さらにパリティフラグ欄４１Ｄには、対応するブロックにパリティデータが格納されるか否かを表すフラグが格納される。具体的には、対応するブロックにパリティデータが格納される場合には「１」が格納され、対応するブロックにパリティデータが格納されない（ユーザデータが格納される）場合には「０」が格納される。
【００６６】
従って、図８の例では、「１」というストライプＩＤが付与されたストライプは、それぞれ装置ＩＤが「１」〜「４」であるハードディスク装置１０のいずれもＬＡＢが「１」であるブロックによって構成され、このうち、装置ＩＤが「１」であるハードディスク装置１０のブロックにパリティデータが格納されることが示されている。
【００６７】
そしてディスクアレイ装置４のコントローラ１２のＣＰＵ２１（図１）は、ローカルメモリ２２に格納されたこれらＲＡＩＤグループ管理テーブル４０及びストライプ管理テーブル４１に基づいて、後述のようにして以上のような本実施の形態による障害復元処理を実行する。
【００６８】
（３）本実施の形態による障害復旧方式に関するＣＰＵの処理
次に、上述のような本実施の形態による障害復旧方式に関連する各種処理に関するディスクアレイ装置４のコントローラ１２におけるＣＰＵ２１の具体的な処理内容について説明する。
【００６９】
（３−１）コマンド実行処理
図９は、コマンド実行処理に関するＣＰＵ２１の処理内容を示す。ＣＰＵ２１は、チャネルインタフェース２０（図１）及びデータ転送コントローラ２３（図１）を介してホスト装置２からのコマンドを受領すると、ローカルメモリ２２に格納されたマイクロプログラムに従ってこの図９に示すコマンド実行処理を実行する。
【００７０】
すなわちＣＰＵ２１は、ホスト装置２からのコマンドを受領するとこのコマンド実行処理を開始し、まず、受領したコマンドがライトコマンドであるか否かを判断する（ＳＰ１）。そしてＣＰＵ２１は、この判断において否定結果を得ると、当該コマンドに応じた処理を実行した後（ＳＰ２）、このコマンド実行処理を終了する。
【００７１】
これに対してＣＰＵ２１は、ステップＳＰ１の判断において肯定結果を得ると、かかるライトコマンドと共にホスト装置２から与えられる書込み対象のユーザデータに基づき生成したパリティデータを書き込むべきブロックを、対応するストライプ管理テーブル４１上で検索し、そのブロックの管理領域３１Ｂ（図３）に格納されている書込み管理フラグ３１Ｃ（図３）をオンに設定する（ＳＰ３）。
【００７２】
続いてＣＰＵ２１は、書込み対象のユーザデータに基づいてパリティデータを生成すると共に、生成したパリティデータを、ステップＳＰ３において書込み管理フラグ３１Ｃをオンに設定したブロックのデータ領域３１Ａ（図３）に書き込む（ＳＰ４）。そしてＣＰＵ２１は、この後、このコマンド実行処理を終了する。
【００７３】
（３−２）障害復旧処理
一方、図１０及び図１１は、いずれかのハードディスク装置１０が障害により閉塞した場合におけるＣＰＵ２１の具体的な処理内容を示している。ＣＰＵ２１は、いずれかのハードディスク装置１０が障害により閉塞した場合、ローカルメモリ２２に格納されたマイクロプログラムに基づいてこれら図１０及び図１１に示す障害復旧処理を実行する。
【００７４】
すなわちＣＰＵ２１は、初期時、ユーザデータが書き込まれたストライプの連続数（連続書込み数）をカウントする連続書込みカウンタと、ユーザデータが書き込まれていないストライプの連続数（連続未書込み数）をカウントする連続未書込みカウンタとをそれぞれリセット（カウント値を「０」にセット）する（ＳＰ１０）。
【００７５】
続いてＣＰＵ２１は、上述した連続書込み閾値、連続未書込み閾値及びデータディスク幅境界値をそれぞれ予め定められた値Ｘ，Ｙ，Ｚに設定し（ＳＰ１１）、この後、ディスクアレイ装置４内の各ハードディスク装置１０の状態を監視する（ＳＰ１２）。
【００７６】
そしてＣＰＵ２１は、やがていずれかのハードディスク装置１０が障害により閉塞すると、ＲＡＩＤグループ管理テーブル４０（図７）を参照して、そのハードディスク装置１０が属するＲＡＩＤグループ（障害ＲＡＩＤグループ）に設定されたＲＡＩＤレベルが「ＲＡＩＤ５」及び「ＲＡＩＤ６」のいずれかであるか否かを判断する（ＳＰ１３）。
【００７７】
ＣＰＵ２１は、この判断において否定結果を得ると、図２について上述した従来方式による障害復旧処理を実行し（ＳＰ１４）、この後、この障害復旧処理を終了する。
【００７８】
これに対してＣＰＵ２１は、ステップＳＰ１３の判断において肯定結果を得ると、その障害ＲＡＩＤグループのデータディスク幅がステップＳＰ１１において設定したデータディスク幅境界値Ｎよりも大きいか否かを判断する（ＳＰ１５）。
【００７９】
ＣＰＵ２１は、この判断において否定結果を得るとステップＳＰ２１に進み、これに対して肯定結果を得ると、かかる障害ＲＡＩＤグループ内の未だコレクションコピー処理を実行していない１つのストライプを選択し（ＳＰ１６）、このストライプに対して図１２について後述する本実施の形態の方式によるコレクションコピー処理を実行する（ＳＰ１７）。
【００８０】
続いてＣＰＵ２１は、障害ＲＡＩＤグループ内のすべてのストライプに対してコレクションコピー処理を実行したか否かを判断し（ＳＰ１８）、否定結果を得ると、連続書込みカウンタの現在のカウント値を確認する（ＳＰ１９）。
【００８１】
そしてＣＰＵ２１は、この連続書込みカウンタのカウント値がステップＳＰ１１において設定した連続書込み閾値Ｘを超えたか否かを判断し（ＳＰ２０）、否定結果を得るとステップＳＰ１６に戻る。そしてＣＰＵ２１は、この後ステップＳＰ１８又はステップＳＰ２０において肯定結果を得るまでステップＳＰ１６〜ステップＳＰ２０−ステップＳＰ１８のループを繰り返しながら、かかるＲＡＩＤグループ内の各ストライプに対するコレクションコピー処理を順次実行する。
【００８２】
一方、ＣＰＵ２１は、ステップＳＰ２０の判断において肯定結果を得ると、未だコレクションコピー処理を行なっていないストライプを１つ選択し（ＳＰ２１）、そのストライプに対して図１３について後述する従来方式によるコレクションコピー処理を実行する（ＳＰ２２）。
【００８３】
続いてＣＰＵ２１は、障害ＲＡＩＤグループ内のすべてのストライプに対するコレクションコピー処理を終了したか否かを判断し（ＳＰ２３）、否定結果を得ると、連続未書込みカウンタの現在のカウント値を確認する（ＳＰ２４）。
【００８４】
そしてＣＰＵ２１は、この連続未書込みカウンタのカウント値がステップＳＰ１１において設定した連続未書込み閾値Ｙよりも小さいか否かを判断し（ＳＰ２５）、肯定結果を得るとステップＳＰ２１に戻る。そしてＣＰＵ２１は、この後ステップＳＰ２３において肯定結果を得又はステップＳＰ２５において否定結果を得るまでステップＳＰ２１〜ステップＳＰ２５−ステップＳＰ２１のループを繰り返しながら、かかる障害ＲＡＩＤグループ内の各ストライプに対するコレクションコピー処理を順次実行する。
【００８５】
またＣＰＵ２１は、やがてステップＳＰ２５の判断において肯定結果を得ると、ステップＳＰ１６に戻り、この後、ステップＳＰ１６以降を上述のように順次処理する。
【００８６】
他方、ＣＰＵ２１は、やがて障害ＲＡＩＤグループ内の必要なストライプに対するコレクションコピー処理が終了することにより、ステップＳＰ１８又はステップＳＰ２３の判断において肯定結果を得ると、障害復旧処理が終了したことを管理端末２６（図１）に通知する（ＳＰ２６）。これによりこの管理端末２６にその旨のメッセージが表示される。
【００８７】
続いてＣＰＵ２１は、障害ＲＡＩＤグループ内の各ストライプの書込み管理フラグ３１Ｃ（図３）の状態を再確認する（ＳＰ２７）。そしてＣＰＵ２１は、この後、書込み管理フラグ３１Ｃがオフになっているストライプについて、閉塞ハードディスク装置１０に格納されていたデータ（初期フォーマット用データ）を空き時間にバックグランドでスペアハードディスク装置１０にコレクションコピーする（ＳＰ２８）。そしてＣＰＵ２１は、やがて対応する書込み管理フラグ３１Ｃがオフになっていたすべてのストライプに対するコレクションコピー処理を完了すると、この障害復旧処理を終了する。
【００８８】
なお、この障害復旧処理のステップＳＰ１７において行われる本実施の形態の方式によるコレクションコピー処理に関するＣＰＵ２１の具体的な処理内容を図１２に示す。
【００８９】
ＣＰＵ２１は、障害復旧処理のステップＳＰ１７に進むと、この第１のコレクションコピー処理を開始し、まず、そのとき対象としているストライプ（以下、これを対象ストライプと呼ぶ）のパリティデータが格納されているハードディスク装置１０の装置ＩＤと、当該ハードディスク装置１０における当該パリティデータが格納されているブロックのブロックＩＤとを、対応するストライプ管理テーブル４１（図８）上で検索する（ＳＰ３０）。
【００９０】
続いてＣＰＵ２１は、ステップＳＰ３０において装置ＩＤを検出したハードディスク装置１０が閉塞ハードディスク装置であるか否かを判断する（ＳＰ３１）。そしてＣＰＵ２１は、この判断において否定結果を得ると、対象ストライプのパリティデータが格納されたブロックの管理領域３１Ｂ（図３）から書込み管理フラグ３１Ｃ（図３）を読み出し（ＳＰ３２）、この書込み管理フラグ３１Ｃがオンに設定されているか否か（対象ストライプにユーザデータが格納されているか否か）を判断する（ＳＰ３３）。
【００９１】
ＣＰＵ２１は、この判断において否定結果を得ると、連続書込みカウンタをリセットし（ＳＰ３４）、この後、この第１のコレクションコピー処理を終了して障害復旧処理のステップＳＰ１７に戻る。
【００９２】
これに対してＣＰＵ２１は、ステップＳＰ３３の判断において肯定結果を得ると、対応するストライプ管理テーブル４１（図８）を参照して、閉塞ハードディスク装置１０以外のハードディスク装置１０内のブロックであって、当該対象ストライプを構成する各ブロックにそれぞれ格納されているユーザデータ又はパリティデータを読み出す。またＣＰＵ２１は、これら読み出したユーザデータ又はパリティデータに基づいて、閉塞ハードディスク装置１０に格納されていたユーザデータを復元し、当該復元したユーザデータをスペアハードディスク装置１０の対応するブロックに書き込む（ＳＰ３８）。
【００９３】
続いてＣＰＵ２１は、対応するストライプ管理テーブル４１上の対象ストライプに関係するハードディスク装置ＩＤ欄４１Ｂ及びＬＢＡ欄４１Ｃにそれぞれ格納されている装置ＩＤ及びＬＢＡを、それぞれスペアハードディスク装置１０の装置ＩＤと、当該スペアハードディスク装置１０内の復元したユーザデータをステップＳＰ３８において書き込んだブロックのブロックＩＤとに書き換える（ＳＰ３９）。
【００９４】
さらにＣＰＵ２１は、連続書込みカウンタのカウント値を「１」だけ増加させ（ＳＰ４０）、この後、この第１のコレクションコピー処理を終了して障害復旧処理のステップＳＰ１７に戻る。
【００９５】
これに対してＣＰＵ２１は、ステップＳＰ３１の判断において肯定結果を得た場合には、ＲＡＩＤグループ管理テーブル４０（図７）を参照して、対象ストライプが属する障害ＲＡＩＤグループのＲＡＩＤレベルがＲＡＩＤ６に設定されているか否かを判断する（ＳＰ３５）。
【００９６】
この判断において否定結果を得ることは、対象ストライプが属する障害ＲＡＩＤグループのＲＡＩＤレベルがＲＡＩＤ５に設定され、かつ、閉塞ハードディスク装置１０に対象ストライプのパリティデータが格納されていることを意味する。
【００９７】
かくしてこのときＣＰＵ２１は、対応するストライプ管理テーブル４１（図８）を参照して、閉塞ハードディスク装置１０以外のハードディスク装置１０内のブロックであって、対象ストライプを構成する各ブロックにそれぞれ格納されているユーザデータを読み出す。またＣＰＵ２１は、これら読み出したユーザデータに基づいて閉塞ハードディスク装置１０に格納されていたパリティデータを復元し、復元したパリティデータをスペアハードディスク装置１０の対応するブロックに書き込む（ＳＰ３８）。
【００９８】
続いてＣＰＵ２１は、対応するストライプ管理テーブル４１（図８）上の対象ストライプに関係するハードディスク装置ＩＤ欄４１Ｂ及びＬＢＡ欄４１Ｃにそれぞれ格納されている装置ＩＤ及びＬＢＡを、それぞれスペアハードディスク装置１０の装置ＩＤと、復元したパリティデータをステップＳＰ３８において書き込んだブロックのブロックＩＤとに書き換える（ＳＰ３９）。
【００９９】
さらにＣＰＵ２１は、連続書込みカウンタのカウント値を「１」だけ増加させ（ＳＰ４０）、この後、この第１のコレクションコピー処理を終了して障害復旧処理のステップＳＰ１７に戻る。
【０１００】
またステップＳＰ３５の判断において肯定結果を得ることは、対象ストライプが属する障害ＲＡＩＤグループのＲＡＩＤレベルがＲＡＩＤ６に設定され、かつ、閉塞ハードディスク装置１０に対象ストライプのパリティデータが格納されていることを意味する。かくしてこのときＣＰＵ２１は、閉塞ハードディスク装置１０が１台だけであるか否かを判断する（ＳＰ３６）。
【０１０１】
この判断において肯定結果を得ることは、対象ストライプ内に１つのパリティデータが残っていることを意味する。かくして、このときＣＰＵ２１は、ステップＳＰ３２に進み、この後ステップＳＰ３２以降の処理を上述のように実行する。
【０１０２】
これに対してＣＰＵ２１は、この判断において否定結果を得ると、対応するストライプ管理テーブル４１（図８）を参照して、他の閉塞ハードディスク装置１０にも対象ストライプのパリティデータが格納されているか否かを判断する（ＳＰ３７）。
【０１０３】
この判断において肯定結果を得ることは、ステップＳＰ３６の判断において肯定結果を得た場合と同様に、対象ストライプに１つのパリティデータが残っていることを意味する。かくして、このときＣＰＵ２１は、ステップＳ３２に進み、この後ステップＳＰ３２以降の処理を上述のように実行する。
【０１０４】
これに対してステップＳＰ３７の判断において否定結果を得ることは、対象ストライプの２つのパリティデータが共に閉塞ハードディスク装置１０に格納されて読み出し不可能な状態となっていることを意味する。なお、ここでは閉塞ハードディスク装置１０が２台であるものとする。
【０１０５】
かくして、このときＣＰＵ２１は、対応するストライプ管理テーブル４１を参照して、２台の閉塞ハードディスク装置１０以外の各ハードディスク装置１０内のブロックであって、当該対象ストライプを構成する各ブロックにそれぞれ格納されているユーザデータを読み出す。またＣＰＵ２１は、これら読み出したユーザデータに基づいて２台の閉塞ハードディスク装置１０にそれぞれ格納されていた２つのパリティデータをそれぞれ復元し、復元した各パリティデータを２台のスペアハードディスク装置１０の対応するブロックにそれぞれ書き込む（ＳＰ３８）。
【０１０６】
続いてＣＰＵ２１は、対応するストライプ管理テーブル４１（図８）上の対象ストライプに関係するハードディスク装置ＩＤ欄４１Ｂ及びＬＢＡ欄４１Ｃにそれぞれ格納されている装置ＩＤ及びＬＢＡを、それぞれスペアハードディスク装置１０の装置ＩＤと、当該スペアハードディスク装置１０内の復元したパリティデータをステップＳＰ３８において書き込んだブロックのブロックＩＤとに書き換える（ＳＰ３９）。
【０１０７】
さらにＣＰＵ２１は、連続書込みカウンタのカウント値を「１」だけ増加させ（ＳＰ４０）、この後、この第１のコレクションコピー処理を終了して障害復旧処理のステップＳＰ１７に戻る。
【０１０８】
一方、図１３は、図１０及び図１１について上述した障害復旧処理のステップＳＰ２２におけるＣＰＵ２１の具体的な処理内容を示す。
【０１０９】
すなわちＣＰＵ２１は、障害復旧処理のステップＳＰ２２に進むと、この第２のコレクションコピー処理を開始し、図１１のステップＳＰ２１において選択した対象ストライプに対して図２について上述した従来方式によるコレクションコピー処理を実行する（ＳＰ５０）。
【０１１０】
続いてＣＰＵ２１は、対象ストライプのパリティデータが格納されたブロックの管理領域３１Ｂ（図３）から書込み管理フラグ３１Ｃ（図３）を読み出し（ＳＰ５１）、この書込み管理フラグ３１Ｃがオンに設定されているか否か（対象ストライプにユーザデータが格納されているか否か）を判断する（ＳＰ５２）。
【０１１１】
ＣＰＵ２１は、この判断において肯定結果を得ると、連続未書込みカウンタのカウント値を「１」だけ増加させ（ＳＰ５３）、この後、この第２のコレクションコピー処理を終了して障害復旧処理のステップＳＰ２２に戻る。
【０１１２】
これに対してＣＰＵ２１は、ステップＳＰ５２の判断において否定結果を得ると、連続未書込みカウンタをリセットし（ＳＰ５３）、この後、この第２のコレクションコピー処理を終了して障害復旧処理のステップＳＰ２２に戻る。
【０１１３】
なお、本実施の形態の場合、閉塞ハードディスク装置１０に対象ストライプのパリティデータが格納されていた場合には、ステップＳＰ５２の判断において肯定結果を得るためステップＳＰ５４において連続未書込みカウンタがリセットされる。
【０１１４】
（４）各種画面の構成
次に、上述のような本実施の形態による障害復旧処理に関する各種画面の画面構成について説明する。
【０１１５】
図１４は、所定の操作により管理端末２６（図１）に表示される、ディスクアレイ装置４において障害復旧方式をユーザが選択するための障害復旧方式選択画面５０を示す。この障害復旧方式選択画面５０は、障害復旧方式選択フィールド５１及び障害復旧関連閾値設定フィールド５２から構成される。
【０１１６】
そして障害復旧方式選択フィールド５１には、障害復旧方式の選択肢として、「自動選択方式」、「書込み管理フラグチェック方式」及び「従来方式」の３つの障害復旧方式にそれぞれ対応させてトグルスイッチ５３Ａ〜５３Ｃが表示される。
【０１１７】
ここで、「自動選択方式」は、図２について上述したように必要に応じて本実施の形態による障害復旧方式と、従来の障害復旧方式とを切り換えながら障害復旧処理を行う方式であり、「書込み管理フラグチェック方式」は、従来の障害復旧方式に切り換えることなく、本実施の形態による障害復旧方式のみで障害復旧処理を行う方式である。また「従来方式」は、書込み管理フラグをチェックすることなく、障害ＲＡＩＤグループ内のすべてのストライプについて閉塞ハードディスク装置１０に格納されていたデータ（ユーザデータ、パリティデータ又は初期フォーマット用データ）をコレクションコピーする方式である。
【０１１８】
そしてユーザは、障害復旧選択方式フィールド５１内に表示された３つの障害復旧方式のうちから所望する障害復旧方式に対応するトグルスイッチ５３Ａ〜５３Ｃをクリックすることにより、障害復旧方式としてその障害復旧方式を選択することができる。
【０１１９】
また障害復旧関連閾値設定フィールド５２には、連続書込み閾値入力欄５４、連続未書込み閾値入力欄５５及びデータディスク幅境界値入力欄５６が設けられている。そしてユーザは、連続書込み閾値入力欄５４、連続未書込み閾値入力欄５５及びデータディスク幅境界値入力欄５６にそれぞれ所望する連続書込み閾値、連続未書込み閾値及びデータディスク幅境界値を入力することによって、連続書込み閾値、連続未書込み閾値及びデータディスク幅境界値として、そのとき入力した連続書込み閾値、連続未書込み閾値及びデータディスク幅境界値を設定することができる。
【０１２０】
そしてこのとき設定された障害復旧方式や、連続書込み閾値、連続未書込み閾値及びデータディスク幅境界値がそれぞれＣＰＵ２１及びデータ転送コントローラ２３（図１）を介してキャッシュメモリ２４（図１）に格納されて保存される。かくして図１０及び図１１について上述した障害復旧処理のステップＳＰ１０では、この連続書込み閾値、連続未書込み閾値及びデータディスク幅境界値がキャッシュメモリ２４から読み出されて設定されることになる。
【０１２１】
一方、図１５は、障害復旧状況表示画面６０を示す。この障害復旧状況表示画面６０は、障害復旧処理の実行時に管理端末に表示される画面であり、各ハードディスク装置１０の状況がそれぞれ表示される。この場合障害が発生していないハードディスク装置１０については「正常」、障害等により閉塞しているハードディスク装置１０については「閉塞」の文字列がそれぞれ表示される。
【０１２２】
また上述のような本実施の形態による障害復旧処理や、従来の障害復旧処理により格納されていたデータのコレクションコピー処理が実行中のハードディスク装置１０については、「回復中」の文字列と、どの程度までデータ復元処理が完了したかを表す進捗率とが表示される。
【０１２３】
（５）本実施の形態の効果
以上のように本実施の形態によるディスクアレイ装置４によれば、書込み管理フラグ３１Ｃに基づいて、閉塞ハードディスク装置１０のうちのユーザデータが書き込まれているストライプに対して優先的にコレクションコピー処理を実行し、ユーザデータが書き込まれていないストライプについては、その後、空き時間を利用してバックグランドでコレクションコピー処理を実行するため、障害復旧処理を実行することに起因してデータ入出力処理の処理性能が低下する時間を短縮化することができる。かくするにつき、性能低下を軽減しながら障害復旧処理を行うことができる。
【０１２４】
またかかる書込み管理フラグ３１ＣをＣＰＵ２１がローカルメモリ２２上で管理することも可能であるが、このようにすると今後のハードディスク装置１０の大容量化に伴いローカルメモリ２２の容量を圧迫するおそれもあるが、本実施の形態によるディスクアレイ装置４では、かかる書込み管理フラグ３１Ｃをハードディスク装置１０側において保持するため、このような事態が生じるおそれを未然にかつ有効に防止することができる。
【０１２５】
（６）他の実施の形態
なお上述の実施の形態においては、本発明を図１のように構成されたディスクアレイ装置４に適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の構成のストレージ装置に広く適用することができる。この場合において、ストレージ装置に搭載される記憶媒体はハードディスク装置に限らず、例えば光ディスクや半導体メモリなどを適用するようにしても良い。
【０１２６】
また上述の実施の形態においては、ユーザデータが書き込まれていないストライプに対応する書込み管理フラグ３１Ｃの状態をオフとし、ユーザユーザデータが書き込まれているストライプに対応する書込み管理フラグ３１Ｃの状態をオンとするようにした場合について述べたが、本発明はこれに限らず、ユーザデータが書き込まれていないストライプに対応する書込み管理フラグ３１Ｃの状態をオンとし、ユーザユーザデータが書き込まれているストライプに対応する書込み管理フラグ３１Ｃの状態をオフとするようにしても良い。
【０１２７】
さらに上述の実施の形態においては、ハードディスク装置１０における対応するブロック３１（図３）の管理領域３１Ｂ内の１ビットを書込み管理フラグ３１Ｃとして用いるようにした場合について述べたが、本発明はこれに限らず、例えば各ストライプにそれぞれ対応させてビットが設けられたビットマップをハードディスク装置やコントローラ内のローカルメモリ又はキャッシュメモリ内に用意し、当該ビットマップを用いて各ストライプに対するユーザデータの書き込みの有無を管理するようにしても良い。
【０１２８】
さらに上述の実施の形態においては、ＲＡＩＤグループ３０が提供する記憶領域について、ユーザデータが書き込まれているか否かをストライプごとに管理する管理部としての機能と、ハードディスク装置１０が障害により閉塞したときに、ストライプごとにコレクションコピー処理を実行するコレクションコピー処理実行部としての機能とをＣＰＵ２１にもたせるようにした場合について述べたが、本発明はこれに限らず、かかる管理部としての機能を例えばディスクインタフェース２５にもたせるようにしても良い。
【産業上の利用可能性】
【０１２９】
本発明は、ホスト装置から与えられたユーザデータを、当該ユーザデータに基づき生成した冗長データと共に複数の記憶媒体に分散して書き込む種々の構成のストレージ装置に広く適用することができる。
【図面の簡単な説明】
【０１３０】
【図１】本実施の形態による情報処理システムの全体構成を示すブロック図である。
【図２】従来の障害復旧方式の説明に供する概念図である。
【図３】書込み管理フラグの説明に供する概念図である。
【図４】障害ＲＡＩＤグループのＲＡＩＤレベルが５の場合における本実施の形態による障害復旧方式の説明に供する概念図である。
【図５】障害ＲＡＩＤグループのＲＡＩＤレベルが６の場合における本実施の形態による障害復旧方式の説明に供する概念図である。
【図６】障害ＲＡＩＤグループのＲＡＩＤレベルが６の場合における本実施の形態による障害復旧方式の説明に供する概念図である。
【図７】ＲＡＩＤグループ管理テーブルの構成を示す概念図である。
【図８】ストライプ管理テーブルの構成を示す概念図である。
【図９】コマンド実行処理の処理手順を示すフローチャートである。
【図１０】本実施の形態による障害復旧処理の処理手順を示すフローチャートである。
【図１１】本実施の形態による障害復旧処理の処理手順を示すフローチャートである。
【図１２】第１のコレクションコピー処理の処理手順を示すフローチャートである。
【図１３】第２のコレクションコピー処理の処理手順を示すフローチャートである。
【図１４】障害復旧方式選択画面の画面構成を示す略線図である。
【図１５】障害復旧状況表示画面の画面構成を示す略線図である。
【符号の説明】
【０１３１】
１……情報処理システム、２……ホスト装置、４……ディスクアレイ装置、１０……ハードディスク装置、１２……コントローラ、２１……ＣＰＵ、２２……ローカルメモリ、２４……キャッシュメモリ、２６……管理端末、３０……ＲＡＩＤグループ、３１……ブロック、３１Ｂ……管理領域、３１Ｃ……書込み管理フラグ、４０……ＲＡＩＤグループ管理テーブル、４１……ストライプ管理テーブル、５０……障害復旧方式選択画面、６０……障害復旧状況表示画面、ＳＴＡ〜ＳＴＧ……ストライプ。
【図１】
2009294901.tif 000003
【図２】
2009294901.tif 000004
【図３】
2009294901.tif 000005
【図４】
2009294901.tif 000006
【図５】
2009294901.tif 000007
【図６】
2009294901.tif 000008
【図７】
2009294901.tif 000009
【図８】
2009294901.tif 000010
【図９】
2009294901.tif 000011
【図１０】
2009294901.tif 000012
【図１１】
2009294901.tif 000013
【図１２】
2009294901.tif 000014
【図１３】
2009294901.tif 000015
【図１４】
2009294901.tif 000016
【図１５】
2009294901.tif 000017