(57)【要約】【課題】データを復元するための関係を成す複数の記憶装置を備えているストレージ装置で、読出応答時間をあまり遅くすることなく、応答時間をある程度保証する。【解決手段】  ホスト計算機からデータ要求があり（ステップ４００）、装置状態管理テーブルの故障ディスク装置の数に変化があった場合には（ステップ４０１）、予め定めた読出時対応冗長度（新たに故障してもデータ復元可能なディスク装置の数）の値に故障ディスク装置の数を加えた値を読出時実冗長度（データ読出時に故障していてもデータ復元可能な記憶装置数）として定め、これから読出対象ディスク装置の数を定める（ステップ４０６）。選択方針に基づいて、ステップ４０７で定めた数分のディスク装置を選択し（ステップ４０７）、選択結果を読出対象ディスク管理テーブルに書き込み（ステップ４１１）、このテーブルに書き込まれている読出対象ディスク装置に対して読出処理を実行する。【選択図】  図４
2005309818.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、少なくとも一の記憶装置を除く他の記憶装置には外部からアクセスされるデータが格納され、該少なくとも一の記憶装置には該データを復元するための１以上の冗長データが格納され、又は、各記憶装置には外部からアクセスされるデータ及び一以上の冗長データがそれぞれ分散格納されているストレージ装置において、
外部からデータ要求があると、複数の前記記憶装置のいずれかから該データを読み出して、該データを該外部へ転送するために前記キャッシュメモリに格納するコントローラを備え、
前記コントローラは、
予め定められた状況に応じて、データ読出時に故障していてもデータ復元可能な記憶装置数を読出時実冗長度として求め、該読出時実冗長度に対応した冗長データの数を定める冗長度決定工程と、
前記外部からデータ要求があると、複数の前記記憶装置のいずれかから要求データと、前記冗長度決定工程で定められた数の前記冗長データとの読出を実行して、読出に成功したデータを前記キャッシュメモリに格納する読出工程と、
を実行することを特徴とするストレージ装置。
【請求項２】
請求項１に記載のストレージ装置において、
複数の前記記憶装置のそれぞれがデータ読出可能であるか否かが記憶される装置状態管理テーブルを有し、
前記コントローラは、複数の前記記憶装置のそれぞれがデータ読出可能であるか否かを把握し、把握結果を前記装置状態管理テーブルに記憶する装置状態把握工程を実行し、
前記冗長度決定工程では、前記予め定められた状況としての、前記装置状態管理テーブルに記憶されているデータ読出不可能な前記記憶装置の台数に応じて、前記読出時実冗長度を求める、
ことを特徴とするストレージ装置。
【請求項３】
請求項２に記載のストレージ装置において、
データ読出時に、前記装置状態管理テーブルに記憶されている状態から新たに何台の記憶装置が故障してもデータ復元可能であるかを示す読出時対応冗長度が記憶されている対応冗長度テーブルを有し、
前記冗長度決定工程では、前記対応冗長度テーブルに記憶されている読出時対応冗長度と、前記装置状態管理テーブルに記憶されているデータ読出不可能な前記記憶装置の台数とに応じて、前記読出時実冗長度を求める、
ことを特徴とするストレージ装置。
【請求項４】
請求項１から３のいずれか一項に記載のストレージ装置において、
前記コントローラは、外部からの指示に従って、前記対応冗長度テーブルに記憶されている前記読出時対応冗長度を変更する対応冗長度変更工程を実行する、
ことを特徴とするストレージ装置。
【請求項５】
請求項１から４のいずれか一項に記載のストレージ装置において、
最大何台の記憶装置が故障してもデータ復元可能であるかを示す最大冗長度が記憶されている最大冗長度テーブルを有し、
前記冗長度決定工程では、前記読出時実冗長度として、前記最大冗長度テーブルに記憶されている前記最大冗長度以下の数を定める、
ことを特徴とするストレージ装置。
【請求項６】
複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、少なくとも一の記憶装置を除く他の記憶装置には外部からアクセスされるデータが格納され、該少なくとも一の記憶装置には該データを復元するための１以上の冗長データが格納され、又は、各記憶装置には外部からアクセスされるデータ及び一以上の冗長データがそれぞれが分散格納されているストレージ装置において、
外部からデータ要求があると、複数の前記記憶装置のいずれかから該データを読み出して、該データを該外部へ転送するために前記キャッシュメモリに格納するコントローラを備え、
前記コントローラは、
予め定められた状況に応じて、冗長データの数を０にするか１以上にするかを定める冗長度決定工程と、
外部からデータ要求があると、複数の前記記憶装置のいずれかから要求データと、前記冗長度決定工程で定められた数の冗長データとの読出を実行して、読出に成功したデータを前記キャッシュメモリに格納する読出工程と、
を実行することを特徴とするストレージ装置。
【請求項７】
請求項６に記載のストレージ装置において、
複数の前記記憶装置のそれぞれがデータ読出可能であるか否かが記憶される装置状態管理テーブルを有し、
前記コントローラは、複数の前記記憶装置のそれぞれがデータ読出可能であるか否か把握し、把握結果を前記装置状態管理テーブルに記憶する装置状態把握工程を実行し、
前記冗長度決定工程では、前記予め定められた状況としての、前記装置状態管理テーブルに記憶されているデータ読出不可能な前記記憶装置の台数に応じて、前記冗長度データの数を定める、
ことを特徴とするストレージ装置。
【請求項８】
請求項１から７のいずれか一項に記載のストレージ装置において、
前記コントローラは、予め定められた方針に従って、１以上の冗長データのうちのいずれかの冗長データを、前記冗長度決定工程で定められた前記冗長データの数分選択する冗長データ選択工程を実行する、
ことを特徴とするストレージ装置。
【請求項９】
請求項８に記載のストレージ装置において、
前記予め定められた方針は、前記冗長データを用いたデータの復元の容易性と、複数の前記記憶装置から前記キャッシュメモリへのデータ転送経路の使用率の均一性と、外部からの指示に従うとのうち、少なくとも１つである、
ことを特徴とするストレージ装置。
【請求項１０】
請求項１から９のいずれか一項に記載のストレージ装置において、
前記冗長度決定工程で前記冗長データの数を決定するタイミングは、前記コントローラが複数の前記記憶装置に対してデータの書込み又は読出しを終了したときと、前記外部が当該ストレージ装置に対してデータの書込み又は読出しを終了したときと、当該ストレージ装置を構成する部品に障害が発生したときと、電源が投入されたときと、前記外部からデータ要求があったときと、のうちの少なくとも１つのときである、
ことを特徴とするストレージ装置。
【請求項１１】
相互関係でデータを復元するための関係を成す複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、いずれか１以上の記憶装置には１以上の冗長データが格納され、又は各記憶装置には１以上の冗長データが分散格納されているストレージ装置において、
予め定められた状況に応じて、データ読出時に故障していてもデータ復元可能な記憶装置数を読出時実冗長度として求め、該読出時実冗長度に対応した、前記冗長データが格納されている前記記憶装置の数を定める冗長度決定手段と、
外部からデータ要求があると、複数の前記記憶装置のいずれかから要求データの読出を実行すると共に、前記冗長度決定工程で定められた数の前記記憶装置からそれぞれ前記冗長データの読出を実行して、読出しに成功したデータを前記キャッシュメモリに格納するデータ読出手段と、
前記外部からのデータ要求に対する前記データ読出手段の動作で、前記キャッシュメモリに前記要求データが格納されなければ、該キャッシュメモリに格納された前記冗長データを用いて、該要求データを復元して、復元された該要求データを該キャッシュメモリに格納するデータ復元手段と、
前記キャッシュメモリに格納された前記要求データを前記外部へ転送するデータ転送手段と、
を備えていることを特徴とするストレージ装置。
【請求項１２】
複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、少なくとも一の記憶装置を除く他の記憶装置には外部からアクセスされるデータが格納され、該少なくとも一の記憶装置には該データを復元するための１以上の冗長データが格納され、又は、各記憶装置には外部からアクセスされるデータ及び一以上の冗長データがそれぞれ分散格納されているストレージ装置において、
外部からデータ要求があると、複数の前記記憶装置のいずれかから該データを読み出して、該データを該外部へ転送するために前記キャッシュメモリに格納するコントローラを備え、
前記コントローラは、
予め定められた方針に従って、１以上の冗長データのうちのいずれかの冗長データを選択する冗長データ選択工程と、
外部からデータ要求があると、複数の前記記憶装置のいずれかから要求データと、前記冗長データ選択工程で定められた前記冗長データとの読出を実行して、読出に成功したデータを前記キャッシュメモリに格納する読出工程と、
を実行することを特徴とするストレージ装置。
【請求項１３】
請求項１２に記載のストレージ装置において、
前記予め定められた方針は、前記冗長データを用いたデータの復元の容易性と、複数の前記記憶装置から前記キャッシュメモリへのデータ転送経路の使用率の均一性と、外部からの指示に従うとのうち、少なくとも１つである、
ことを特徴とするストレージ装置。
【請求項１４】
複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、少なくとも一の記憶装置を除く他の記憶装置には外部からアクセスされるデータが格納され、該少なくとも一の記憶装置には該データを復元するための１以上の冗長データが格納され、又は、各記憶装置には外部からアクセスされるデータ及び一以上の冗長データがそれぞれ分散格納されているストレージ装置のデータ読出方法において、
予め定められた状況に応じて、データ読出時に故障していてもデータ復元可能な記憶装置数を読出時実冗長度として求め、該読出時実冗長度に対応した冗長データの数を定める冗長度決定工程と、
外部からデータ要求があると、複数の前記記憶装置のいずれかから要求データと、前記冗長度決定工程で定められた数の冗長データとの読出を実行して、読出に成功したデータを前記キャッシュメモリに格納する読出工程と、
前記外部からのデータ要求に対する前記読出工程の実行で、前記キャッシュメモリに要求データが格納されなければ、該キャッシュメモリに格納された前記冗長データを用いて、該要求データを復元して、復元された該要求データを該キャッシュメモリに格納するデータ復元工程と、
前記キャッシュメモリに格納された前記要求データを前記外部へ転送するデータ転送工程と、
を実行することを特徴とするストレージ装置のデータ読出方法。
【請求項１５】
請求項１４に記載のストレージ装置のデータ読出方法において、
複数の前記記憶装置のそれぞれがデータ読出可能であるか否か把握し、把握結果を装置状態管理テーブルに記憶する装置状態把握工程を実行し、
前記冗長度決定工程では、前記予め定められた状況としての、前記装置状態管理テーブルに記憶されているデータ読出不可能な前記記憶装置の台数に応じて、前記読出時実冗長度を求める、
ことを特徴とするストレージ装置のデータ読出方法。
【請求項１６】
請求項１５に記載のストレージ装置のデータ読出方法において、
データ読出時に、前記装置状態管理テーブルに記憶されている状態から新たに何台の記憶装置が故障してもデータ復元可能であるかを示す読出時対応冗長度を対応冗長度テーブルに記憶しておく対応冗長度記憶工程を有し、
前記冗長度決定工程では、前記対応冗長度テーブルに記憶されている前記読出時対応冗長度と、前記装置状態管理テーブルに記憶されているデータ読出不可能な前記記憶装置の台数とに応じて、前記読出時実冗長度を求める、
ことを特徴とするストレージ装置のデータ読出方法。
【請求項１７】
請求項１４から１６のいずれか一項に記載のストレージ装置のデータ読出方法において、
予め定められた方針に従って、１以上の冗長データのうちのいずれかの冗長データを、前記冗長度決定工程で定められた前記冗長データの数分選択する冗長データ選択工程を実行する、
ことを特徴とするストレージ装置のデータ読出方法。
【請求項１８】
複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、少なくとも一の記憶装置を除く他の記憶装置には外部からアクセスされるデータが格納され、該少なくとも一の記憶装置には該データを復元するための１以上の冗長データが格納され、又は、各記憶装置には外部からアクセスされるデータ及び一以上の冗長データがそれぞれ分散格納されているストレージ装置のデータ読出方法において、
予め定められた方針に従って、１以上の冗長データのうちのいずれかの冗長データを選択する冗長データ選択工程と、
外部からデータ要求があると、複数の前記記憶装置のいずれかから要求データと、前記冗長データ選択工程で定められた前記冗長データとの読出を実行して、読出に成功したデータを前記キャッシュメモリに格納する読出工程と、
前記外部からのデータ要求に対する前記読出工程の実行で、前記キャッシュメモリに前記要求データが格納されなければ、該キャッシュメモリに格納された前記冗長データを用いて、該要求データを復元して、復元された該要求データを該キャッシュメモリに格納するデータ復元工程と、
前記キャッシュメモリに格納された前記要求データを前記外部へ転送するデータ転送工程と、
を実行することを特徴とするストレージ装置のデータ読出方法。
【請求項１９】
複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、少なくとも一の記憶装置を除く他の記憶装置には外部からアクセスされるデータが格納され、該少なくとも一の記憶装置には該データを復元するための１以上の冗長データが格納され、又は、各記憶装置には外部からアクセスされるデータ及び一以上の冗長データがそれぞれ分散格納されているストレージ装置のデータ読出プログラムにおいて、
予め定められた状況に応じて、データ読出時に故障していてもデータ復元可能な記憶装置数を読出時実冗長度として求め、該読出時実冗長度に対応した冗長データの数を定める冗長度決定工程と、
外部からデータ要求があると、複数の前記記憶装置のいずれかから要求データと、前記冗長度決定工程で定められた数の冗長データとの読出を実行して、読出に成功したデータを前記キャッシュメモリに格納する読出工程と、
前記外部からのデータ要求に対する前記読出工程の実行で、前記キャッシュメモリに前記要求データが格納されなければ、該キャッシュメモリに格納された前記冗長データを用いて、該要求データを復元して、復元された該要求データを該キャッシュメモリに格納するデータ復元工程と、
前記キャッシュメモリに格納された前記要求データを前記外部へ転送するデータ転送工程と、
コンピュータに実行させることを特徴とするストレージ装置のデータ読出プログラム。
【請求項２０】
請求項１９に記載のストレージ装置のデータ読出プログラムにおいて、
複数の前記記憶装置のそれぞれがデータ読出可能であるか否か把握し、把握結果を装置状態管理テーブルに記憶する装置状態把握工程をコンピュータに実行させ、
前記冗長度決定工程では、前記予め定められた状況としての、前記装置状態管理テーブルに記憶されているデータ読出不可能な前記記憶装置の台数に応じて、前記読出時実冗長度を求める、
ことを特徴とするストレージ装置のデータ読出プログラム。
【請求項２１】
請求項２０に記載のストレージ装置のデータ読出プログラムにおいて、
データ読出時に、前記装置状態管理テーブルに記憶されている状態から新たに故障してもデータ復元可能な記憶装置数を読出時対応冗長度として、対応冗長度テーブルに記憶しておく対応冗長度記憶工程をコンピュータに実行させ、
前記冗長度決定工程では、前記対応冗長度テーブルに記憶されている前記読出時対応冗長度と、前記装置状態管理テーブルに記憶されているデータ読出不可能な前記記憶装置の台数とに応じて、前記読出時実冗長度を求める、
ことを特徴とするストレージ装置のデータ読出プログラム。
【請求項２２】
請求項１９から２１のいずれか一項に記載のストレージ装置のデータ読出プログラムにおいて、
予め定められた方針に従って、１以上の冗長データのうちのいずれかの冗長データを、前記冗長度決定工程で定められた前記冗長データの数分選択する冗長データ選択工程を、
コンピュータに実行させることを特徴とするストレージ装置のデータ読出プログラム。
【請求項２３】
複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、少なくとも一の記憶装置を除く他の記憶装置には外部からアクセスされるデータが格納され、該少なくとも一の記憶装置には該データを復元するための１以上の冗長データが格納され、又は、各記憶装置には外部からアクセスされるデータ及び一以上の冗長データがそれぞれ分散格納されているストレージ装置のデータ読出プログラムにおいて、
予め定められた方針に従って、１以上の冗長データのうちのいずれかの冗長データを選択する冗長データ選択工程と、
外部からデータ要求があると、複数の前記記憶装置のいずれかから該データと、前記冗長データ選択工程で定められた前記冗長データとの読出を実行して、読出に成功したデータを前記キャッシュメモリに格納する読出工程と、
前記外部からのデータ要求に対する前記読出工程の実行で、前記キャッシュメモリに要求データが格納されなければ、該キャッシュメモリに格納された前記冗長データを用いて、該要求データを復元して、復元された該要求データを該キャッシュメモリに格納するデータ復元工程と、
前記キャッシュメモリに格納された前記要求データを前記外部へ転送するデータ転送工程と、
をコンピュータに実行させることを特徴とするストレージ装置のデータ読出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、相互関係でデータを復元するための関係を成す複数の記憶装置を備えているストレージ装置、そのデータ読出方法、及びそのデータ読出プログラムに関する。
【背景技術】
【０００２】
近年、複数の磁気ディスク装置を並列的に動作させることによって、ホストからのデータ読出／書込要求処理の高速化を図るとともに、冗長構成によって信頼性を向上させるストレージ装置が開発されている。このようなストレージ装置は、一般的にＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）と呼ばれ、以下の非特許文献１に、レベル１からレベル５までの５種類のＲＡＩＤ構成について詳しく記載されている。
【０００３】
また、非特許文献２には、非特許文献１において示されたレベル４のＲＡＩＤ構成を拡張した別のＲＡＩＤ構成が記載されている。このＲＡＩＤ構成は、論理ユニットを形成する各記憶装置に保存されるデータの排他的論理和から計算されるパリティデータと、データおよび前記パリティデータに特殊な係数を乗じたものの排他的論理和から計算される別のパリティデータとによって、２台のディスク装置の故障に対するデータ保持を保証するものである。
【０００４】
ところで、ストレージ装置では、ファイバチャネルのディスク装置の他に、ＡＴＡ（AT  Attachment）のディスク装置が利用され始めている。ＡＴＡのディスク装置は、ファイバチャネルのディスク装置に比べて価格が安い反面、信頼性が低く故障しやすい。そのため、２つのディスク装置が同時に故障するという二重障害が発生する可能性が高くなっている。また、ディスク装置単体の容量は年々増加する傾向にあり、ＲＡＩＤ技術によって障害ディスク装置のデータを復元するために要する時間が長くなり、高信頼性のディスク装置を使用する場合でも二重障害が発生する可能性が増加している。このため、非特許文献２の技術のように、ディスク装置の多重障害発生に対応する技術は、今後重要になってくると考えられる。
【０００５】
また、特許文献１には、ホストからのデータ要求に対して、ディスク装置の障害発生時においても応答時間を保証するストレージ装置が記載されている。このストレージ装置は、ディスク装置に障害が発生しているか否かに関わらず、要求データの復元に必要な他のデータを並列に常に読み出し、要求データの読出しに失敗しても、新たに冗長データをディスク装置から読み出さなくても、要求データを復元するものである。
【０００６】
【非特許文献１】D．Patterson，  ET  al：“a  Case  for  Redundant Arrays  of Inexpensive Disks  （RAID）”，Proceedings  of  the  1988  ACM  SIGMOD  international  conference  ON  Management  of  data，PP．109-116，1988
【非特許文献２】M．Blaum，  ET  al：“EVENODD：  an  Optimal  Scheme  for  Tolerating  Double  DISK  Failures  in  RAID  Architectures”，Proceedings  of  the  21st  Annual  International  Symposium  ON  Computer  Architecture，PP．245-254，1994
【特許文献１】特開平１０−２４７１３３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
近年の社会の情報化に伴い、ディスクアレイ装置の分野においてもマルチメディア対応への要求が高まっている。中でも、動画／音声等を配信するシステムにおいては、配信サーバはクライアントからの要求に応じて大量の動画／音声等のデータをストレージ装置から読み出し、クライアントへ送信する。
【０００８】
前述の動画／音声等を扱うシステムにおいては、データ読み出しの遅延が画質／音質等の劣化につながるため、ストレージ装置は配信サーバに対して最大応答時間を保証する必要がある。しかしながら、非特許文献２に記載の技術では、２台のディスク装置の故障に対応できるものの、要求データの読み出しに失敗した場合、ディスク装置に再度アクセスして、冗長データを読み出してから、この冗長データから要求データを復元しサーバへ応答するため、ディスク装置の故障時における応答時間が長くなるという問題点がある。
【０００９】
また、特許文献１に記載の技術では、ディスク装置に障害が発生しているか否かに関わらず、要求データの復元に必要な他のデータを並列に常に読み出しているため、ディスク装置の故障時における応答時間が非特許文献２に記載の技術より、短くできるものの、常に要求データの復元に必要な他のデータも読み出すことから、データの読出量が多くなり、複数のディスク装置のうちのいずれも故障していない場合であっても、データバスやキャッスメモリの要因により、一定以上の応答時間がかかってしまうという問題点がある。特に、この特許文献１の技術で、非特許文献２の技術を採用すると、要求データの他に、複数の冗長データを読み出すことになり、データの読出量がより多くなり、応答時間がより遅くなってしまう。
【００１０】
本発明は、このような従来技術の問題点に着目し、応答時間をあまり遅くすることなく、応答時間をある程度保証することができるストレージ装置、そのデータ読出方法、及びそのデータ読出プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
前記問題点を解決するための発明に係る第1のストレージ装置は、
複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、少なくとも一の記憶装置を除く他の記憶装置には外部からアクセスされるデータが格納され、該少なくとも一の記憶装置には該データを復元するための１以上の冗長データが格納され、又は、各記憶装置には外部からアクセスされるデータ及び一以上の冗長データがそれぞれ分散格納されているストレージ装置において、
外部からデータ要求があると、複数の前記記憶装置のいずれかから該データを読み出して、該データを該外部へ転送するために前記キャッシュメモリに格納するコントローラを備え、
前記コントローラは、
予め定められた状況に応じて、データ読出時に故障していてもデータ復元可能な記憶装置数を読出時実冗長度として求め、該読出時実冗長度に対応した冗長データの数を定める冗長度決定工程と、
外部からデータ要求があると、複数の前記記憶装置のいずれかから要求データと、前記冗長度決定工程で定められた数の前記冗長データとの読出を実行して、読出に成功したデータを前記キャッシュメモリに格納する読出工程と、
を実行することを特徴とするものである。
【００１２】
前記問題点を解決するための発明に係る第２のストレージ装置は、
前記第1のストレージ装置において、
複数の前記記憶装置のそれぞれがデータ読出可能であるか否かが記憶される装置状態管理テーブルを有し、
前記コントローラは、複数の前記記憶装置のそれぞれがデータ読出可能であるか否かを把握し、把握結果を前記装置状態管理テーブルに記憶する装置状態把握工程を実行し、
前記冗長度決定工程では、前記予め定められた状況としての、前記装置状態管理テーブルに記憶されているデータ読出不可能な前記記憶装置の台数に応じて、前記読出時実冗長度を求める、ことを特徴とするものである。
【００１３】
前記問題点を解決するための発明に係る第３のストレージ装置は、
前記第２のストレージ装置において、
データ読出時に、前記装置状態管理テーブルに記憶されている状態から新たに何台の記憶装置が故障してもデータ復元可能であるかを示す読出時対応冗長度が記憶されている対応冗長度テーブルを有し、
前記冗長度決定工程では、前記対応冗長度テーブルに記憶されている読出時対応冗長度と、前記装置状態管理テーブルに記憶されているデータ読出不可能な前記記憶装置の台数とに応じて、前記読出時実冗長度を求める、ことを特徴とするものである。
【００１４】
前記問題点を解決するための発明に係る第４のストレージ装置は、
前記第１から第3のいずれかのストレージ装置において、
前記コントローラは、外部からの指示に従って、前記対応冗長度テーブルに記憶されている前記読出時対応冗長度を変更する対応冗長度変更工程を実行する、ことを特徴とするものである。
【００１５】
前記問題点を解決するための発明に係る第５のストレージ装置は、
前記第1から第4のいずれかのストレージ装置において、
最大何台の記憶装置が故障してもデータ復元可能であるかを示す最大冗長度として記憶されている最大冗長度テーブルを有し、
前記冗長度決定工程では、前記読出時実冗長度として、前記最大冗長度テーブルに記憶されている前記最大冗長度以下の数を定める、ことを特徴とするものである。
【００１６】
前記問題点を解決するための発明に係る第６のストレージ装置は、
複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、少なくとも一の記憶装置を除く他の記憶装置には外部からアクセスされるデータが格納され、該少なくとも一の記憶装置には該データを復元するための１以上の冗長データが格納され、又は、各記憶装置には外部からアクセスされるデータ及び一以上の冗長データがそれぞれ分散格納されているストレージ装置において、
外部からデータ要求があると、複数の前記記憶装置のいずれかから該データを読み出して、該データを該外部へ転送するために前記キャッシュメモリに格納するコントローラを備え、
前記コントローラは、
予め定められた状況に応じて、冗長データの数を０にするか１以上にするかを定める冗長度決定工程と、
外部からデータ要求があると、複数の前記記憶装置のいずれかから要求データと、前記冗長度決定工程で定められた数の冗長データとの読出を実行して、読出に成功したデータを前記キャッシュメモリに格納する読出工程と、
を実行することを特徴とするものである。
【００１７】
また、以上の各ストレージ装置の冗長度決定工程で前記冗長データの数を決定するタイミングは、前記コントローラが複数の前記記憶装置に対してデータの書込み又は読出しを終了したときと、前記外部が当該ストレージ装置に対してデータの書込み又は読出しを終了したときと、当該ストレージ装置を構成する部品に障害が発生したときと、電源が投入されたときと、前記外部からデータ要求があったときと、のうちの少なくとも１つのときである。なお、冗長データの選択方針に従って、冗長データを選択する冗長データ選択工程を有するものでは、前記冗長データの数を決定するタイミングとして、この選択方針が変更されたときであってもよい。
【００１８】
前記問題点を解決するための発明に係る第７のストレージ装置は、
相互関係でデータを復元するための関係を成す複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、いずれか１以上の記憶装置には１以上の冗長データが格納され、又は各記憶装置には１以上の冗長データが分散格納されているストレージ装置において、
予め定められた状況に応じて、データ読出時に故障していてもデータ復元可能な記憶装置数を読出時実冗長度として求め、該読出時実冗長度に対応した、前記冗長データが格納されている前記記憶装置の数を定める冗長度決定手段と、
外部からデータ要求があると、複数の前記記憶装置のいずれかから要求データの読出を実行すると共に、前記冗長度決定工程で定められた数の前記記憶装置からそれぞれ前記冗長データの読出を実行して、読出しに成功したデータを前記キャッシュメモリに格納するデータ読出手段と、
前記外部からのデータ要求に対する前記データ読出手段の動作で、前記キャッシュメモリに前記要求データが格納されなければ、該キャッシュメモリに格納された前記冗長データを用いて、該要求データを復元して、復元された該要求データを該キャッシュメモリに格納するデータ復元手段と、
前記キャッシュメモリに格納された前記要求データを前記外部へ転送するデータ転送手段と、
を備えていることを特徴とするものである。
【００１９】
前記問題点を解決するための発明に係る第８のストレージ装置は、
複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、少なくとも一の記憶装置を除く他の記憶装置には外部からアクセスされるデータが格納され、該少なくとも一の記憶装置には該データを復元するための１以上の冗長データが格納され、又は、各記憶装置には外部からアクセスされるデータ及び一以上の冗長データがそれぞれ分散格納されているストレージ装置において、
外部からデータ要求があると、複数の前記記憶装置のいずれかから該データを読み出して、該データを該外部へ転送するために前記キャッシュメモリに格納するコントローラを備え、
前記コントローラは、
予め定められた方針に従って、１以上の冗長データのうちのいずれかの冗長データを選択する冗長データ選択工程と、
外部からデータ要求があると、複数の前記記憶装置のいずれかから要求データと、前記冗長データ選択工程で定められた前記冗長データとの読出を実行して、読出に成功したデータを前記キャッシュメモリに格納する読出工程と、
を実行することを特徴とするものである。
【００２０】
前記問題点を解決するための発明に係る第９のストレージ装置は、
前記第８のストレージ装置において、
前記予め定められた方針は、前記冗長データを用いたデータの復元の容易性と、複数の前記記憶装置から前記キャッシュメモリへのデータ転送経路の使用率の均一性と、外部からの指示に従うとのうち、少なくとも１つである、ことを特徴とするものである。
【００２１】
前記問題点を解決するための発明に係る第１０のストレージ装置は、
ホストコンピュータからアクセスされるストレージ装置において、
前記ホストコンピュータからアクセスされるデータが格納される１以上の第一の記憶装置と、
１以上の前記第一の記憶装置のうちのいずれかに障害が生じた際、障害が生じた該第一の記憶装置に格納されていたデータの復元に使用される冗長データが格納される一以上の第２の記憶装置と、
１以上の前記第一の記憶装置及び１以上の前記第二の記憶装置に格納されているデータに対してアクセスするコントローラと、
を備え、
前記コントローラは、１以上の前記第一の記憶装置及び１以上の前記第二の記憶装置に格納されているデータを一時的に格納するキャッシュメモリを有しており、
前記コントローラは、前記ホストコンピュータからのアクセス要求を受信した際、障害が生じている記憶装置の数に応じて、前記冗長データを読み出す前記第二の記憶装置の数を決定し、１以上の前記第一の記憶装置のうちのいずれかの第一の記憶装置及び決定された数の該第二の記憶装置からデータを読み出して、前記キャッシュメモリに格納し、該キャッシュメモリに格納されたデータのうち、該ホストコンピュータからアクセス要求を受けたデータを該ホストコンピュータに送信する、ことを特徴とする。
【００２２】
前記問題点を解決するための発明に係る第1のストレージ装置のデータ読出方法は、
複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、少なくとも一の記憶装置を除く他の記憶装置には外部からアクセスされるデータが格納され、該少なくとも一の記憶装置には該データを復元するための１以上の冗長データが格納され、又は、各記憶装置には外部からアクセスされるデータ及び一以上の冗長データがそれぞれ分散格納されているストレージ装置のデータ読出方法において、
予め定められた状況に応じて、データ読出時に故障していてもデータ復元可能な記憶装置数を読出時実冗長度として求め、該読出時実冗長度に対応した冗長データの数を定める冗長度決定工程と、
外部からデータ要求があると、複数の前記記憶装置のいずれかから要求データと、前記冗長度決定工程で定められた数の冗長データとの読出を実行して、読出に成功したデータを前記キャッシュメモリに格納する読出工程と、
前記外部からのデータ要求に対する前記読出工程の実行で、前記キャッシュメモリに要求データが格納されなければ、該キャッシュメモリに格納された前記冗長データを用いて、該要求データを復元して、復元された該要求データを該キャッシュメモリに格納するデータ復元工程と、
前記キャッシュメモリに格納された前記要求データを前記外部へ転送するデータ転送工程と、
を実行することを特徴とするものである。
【００２３】
前記問題点を解決するための発明に係る第７のストレージ装置は、
前記問題点を解決するための発明に係る第２のストレージ装置のデータ読出方法は、
前記第1のストレージ装置のデータ読出方法において、
複数の前記記憶装置のそれぞれがデータ読出可能であるか否か把握し、把握結果を装置状態管理テーブルに記憶する装置状態把握工程を実行し、
前記冗長度決定工程では、前記予め定められた状況としての、前記装置状態管理テーブルに記憶されているデータ読出不可能な前記記憶装置の台数に応じて、前記読出時実冗長度を求める、ことを特徴とするものである。
【００２４】
前記問題点を解決するための発明に係る第３のストレージ装置のデータ読出方法は、
前記第2のストレージ装置のデータ読出方法において、
データ読出時に、前記装置状態管理テーブルに記憶されている状態から新たに何台の記憶装置が故障してもデータ復元可能であるかを示す読出時対応冗長度を対応冗長度テーブルに記憶しておく対応冗長度記憶工程を有し、
前記冗長度決定工程では、前記対応冗長度テーブルに記憶されている前記読出時対応冗長度と、前記装置状態管理テーブルに記憶されているデータ読出不可能な前記記憶装置の台数とに応じて、前記読出時実冗長度を求める、ことを特徴とするものである。
【００２５】
前記問題点を解決するための発明に係る第４のストレージ装置のデータ読出方法は、
複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、少なくとも一の記憶装置を除く他の記憶装置には外部からアクセスされるデータが格納され、該少なくとも一の記憶装置には該データを復元するための１以上の冗長データが格納され、又は、各記憶装置には外部からアクセスされるデータ及び一以上の冗長データがそれぞれ分散格納されているストレージ装置のデータ読出方法において、
予め定められた方針に従って、１以上の冗長データのうちのいずれかの冗長データを選択する冗長データ選択工程と、
外部からデータ要求があると、複数の前記記憶装置のいずれかから要求データと、前記冗長データ選択工程で定められた前記冗長データとの読出を実行して、読出に成功したデータを前記キャッシュメモリに格納する読出工程と、
前記外部からのデータ要求に対する前記読出工程の実行で、前記キャッシュメモリに前記要求データが格納されなければ、該キャッシュメモリに格納された前記冗長データを用いて、該要求データを復元して、復元された該要求データを該キャッシュメモリに格納するデータ復元工程と、
前記キャッシュメモリに格納された前記要求データを前記外部へ転送するデータ転送工程と、
を実行することを特徴とするものである。
【００２６】
前記問題点を解決するための発明に係る第1のストレージ装置のデータ読出プログラムは、
複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、少なくとも一の記憶装置を除く他の記憶装置には外部からアクセスされるデータが格納され、該少なくとも一の記憶装置には該データを復元するための１以上の冗長データが格納され、又は、各記憶装置には外部からアクセスされるデータ及び一以上の冗長データがそれぞれ分散格納されているストレージ装置のデータ読出プログラムにおいて、
予め定められた状況に応じて、データ読出時に故障していてもデータ復元可能な記憶装置数を読出時実冗長度として求め、該読出時実冗長度に対応した冗長データの数を定める冗長度決定工程と、
外部からデータ要求があると、複数の前記記憶装置のいずれかから要求データと、前記冗長度決定工程で定められた数の冗長データとの読出を実行して、読出に成功したデータを前記キャッシュメモリに格納する読出工程と、
前記外部からのデータ要求に対する前記読出工程の実行で、前記キャッシュメモリに前記要求データが格納されなければ、該キャッシュメモリに格納された前記冗長データを用いて、該要求データを復元して、復元された該要求データを該キャッシュメモリに格納するデータ復元工程と、
前記キャッシュメモリに格納された前記要求データを前記外部へ転送するデータ転送工程と、
コンピュータに実行させることを特徴とするものである。
【００２７】
前記問題点を解決するための発明に係る第２のストレージ装置のデータ読出プロログラムは、
複数の記憶装置と、複数の該記憶装置からのデータを一時的に格納するキャッシュメモリとを備え、複数の該記憶装置のうち、少なくとも一の記憶装置を除く他の記憶装置には外部からアクセスされるデータが格納され、該少なくとも一の記憶装置には該データを復元するための１以上の冗長データが格納され、又は、各記憶装置には外部からアクセスされるデータ及び一以上の冗長データがそれぞれ分散格納されているストレージ装置のデータ読出プログラムにおいて、
予め定められた方針に従って、１以上の冗長データのうちのいずれかの冗長データを選択する冗長データ選択工程と、
外部からデータ要求があると、複数の前記記憶装置のいずれかから該データと、前記冗長データ選択工程で定められた前記冗長データとの読出を実行して、読出に成功したデータを前記キャッシュメモリに格納する読出工程と、
前記外部からのデータ要求に対する前記読出工程の実行で、前記キャッシュメモリに要求データが格納されなければ、該キャッシュメモリに格納された前記冗長データを用いて、該要求データを復元して、復元された該要求データを該キャッシュメモリに格納するデータ復元工程と、
前記キャッシュメモリに格納された前記要求データを前記外部へ転送するデータ転送工程と、
をコンピュータに実行させることを特徴とするものである。
【発明の効果】
【００２８】
本発明によれば、状況に応じて、冗長データの数が変わるので、応答時間をあまり遅くすることなく、応答時間をある程度保証することができる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明に係るストレージ装置の一実施形態について、図面を用いて説明する。
【００３０】
図１に示すように、本実施形態のストレージ装置１０１は、ホスト計算機１００に接続されている。このストレージ装置１０１は、ホスト計算機１００との間でデータの送受信を行うホストインタフェース１０２と、複数のディスク装置１３２，１３２，…と、各ディスク装置１３２を駆動制御するディスクインタフェース１３１，１３１，…と、各ディスクインタフェースを制御するコントローラ１１０と、を備えている。
【００３１】
コントローラ１１０は、各種プログラムを実行するＣＰＵ１１１と、ディスク装置１３２から読み出したデータが記憶されると共にＣＰＵ１１１が実行するプログラム等が記憶されているメモリ部１２０とを有している。このメモリ部１２０は、ディスク装置１３２から読み出したデータを一時的に格納するキャッシュメモリ１２１と、ＣＰＵ１１１が実行するプログラムや各種データ等が記憶されているローカルメモリ１２２とを有している。ローカルメモリ１２２には、図２及び図３に示すフローをＣＰＵ１１１が実行するための読出メインプログラム１２３と、図４に示すフローをＣＰＵ１１１が実行するための読出ディスク管理テーブルの更新プログラム１２４と、複数のディスク装置１３２，１３２，…のそれぞれの状態が記憶される装置状態管理テーブル１２５と、冗長制御を行うために必要な情報が記憶される構成情報管理テーブル１２６と、実際にデータを読み出す際にどのディスクにアクセスすべきかが記憶される読出ディスク管理テーブル１２７と、が設定されている。
【００３２】
装置状態管理テーブル１２５には、図５に示すように、複数のディスク装置１３２，１３２，…のディスクＩＤ毎に、その状態が正常であるか故障であるかが記憶される。さらに、故障復旧中、未使用等も記憶される。なお、ここでの正常とは、ディスク装置１３２からデータ読出が可能であることを意味し、故障とは、ディスク装置１３２自体が故障して、データ読出が不可能である場合のみならず、ディスクインタフェース１３１やデータ転送経路の障害等により、ディスク装置１３２からコントローラ１１０がデータ読出が不可能な全ての場合を意味している。
【００３３】
冗長構成管理テーブル１２６には、図６に示すように、ホスト計算機１００から１つの論理ディスクユニットとして扱われるＬＵ（Logical  Unit）毎の情報が記憶される。この実施形態では、ＬＵとして、ＬＵ０、ＬＵ１、ＬＵ２、ＬＵ３、…が設定されている。各ＬＵ毎の情報としては、当該ＬＵを構成するディスク装置１３２のＩＤが格納されるディスク構成の欄１２６ａと、最大何台のディスク装置が故障してもＬＵに格納されているデータを復元できるかを示す最大冗長度が格納される欄１２６ｂと、データ読出時に、前述の装置状態管理テーブル１２５に記憶されている状態から新たに何台のディスク装置１３２が故障してもＬＵに格納されているデータを復元できるかを示す読出時対応冗長度が格納される欄１２６ｃと、ディスク装置１３２の選択方針が格納される欄１２６ｄとがある。なお、ＬＵを構成する複数のディスク装置１３２のうち、いずれかが故障した場合、同じＬＵに属する他のディスク装置１３２に格納されているデータから、故障したディスク装置に格納されていたデータを復元できる。しがたって、ＬＵを構成する複数のディスク装置１３２のうち、最大冗長度分のディスク装置１３２に故障が生じても、ＬＵのデータを復元することができる。
【００３４】
この実施形態では、ディスク構成の欄１２６ａに示すように、ＬＵ０はディスクＩＤが０〜５のディスク装置１３２により構成され、ＬＵ１はディスクＩＤが６〜１１のディスク装置１３２により構成され、ＬＵ２はディスクＩＤが１２〜１７のディスク装置１３２により構成され、ＬＵ３はディスクＩＤが１８〜２３のディスク装置１３２により構成されている。また、最大冗長度の欄１２６ｂに示すように、ＬＵ０の最大冗長度は２で、ＬＵ１の最大冗長度は３で、ＬＵ２の最大冗長度は２で、ＬＵ３の最大冗長度は２である。なお、同欄１２６ｂ中の（）内は、冗長データのタイプを示しており、ここでは、パリティデータとミラーデータとがある。また、読出時対応冗長度の欄１２６ｃには、０から最大冗長度までのいずれかの値が格納される。方針の欄１２６ｃには、冗長データを選択するにあたってデータ復元時の計算量が少なくなることを示す「計算量小（データ復元の容易性）」、各ディスク装置１３２からキャッシュメモリ１２１へのデータ転送路の使用率の均一化を示す「負荷分散」、ホスト計算機１００やストレージ装置１０１の管理装置やモニタリング装置等の外部からの指示に従うことを示す「指示に従う」、方針がないことを示す「‐」等が格納される。なお、読出時対応冗長度の欄１２６ｃ内の値や、方針の欄１２６ｄ内の方針は、いずれも、ホスト計算機１００から指示を与えることで変更することができる。
【００３５】
読出ディスク管理テーブル１２７には、図７（ａ）に示すように、各ＬＵ毎に、各ＬＵを構成するディスク装置１３２のデータに対して読出要求があった際に、当該ＬＵを構成する複数のディスク装置１３２のうち、データ読出対象となるディスク装置１３２のＩＤが格納される。この読出ディスク管理テーブル１２７では、例えば、ＬＵ０に関して、このＬＵ０を構成する複数のディスク装置ｄ０〜ｄ５のいずれかに格納されているデータに対して、読取要求があった場合には、ディスク装置ｄ０，ｄ１，ｄ3〜ｄ５からデータ読出を行えばよいことを示している。この読出ディスク管理テーブル１２７内のデータは、後述の図４に示すフローを実行することで更新される。
【００３６】
ここで、ＬＵのデータ構成例について、図８を用いて説明する。
【００３７】
例えば、ＬＵ０に関しては、このＬＵ０を構成するディスク装置ｄ０には、ストライプＤ０，Ｄ４，Ｄ８，Ｄ１２，…が割り当てられ、このＬＵ０を構成するディスク装置ｄ１には、ストライプＤ１，Ｄ５，Ｄ９，Ｄ１３，…が割り当てられ、このＬＵ０を構成するディスク装置ｄ２には、ストライプＤ２，Ｄ６，Ｄ１０，Ｄ１４，…が割り当てられ、このＬＵ０を構成するディスク装置ｄ３には、ストライプＤ３，Ｄ７，Ｄ１１，Ｄ１５，…が割り当てられている。すなわち、この例において、データは、Ｄ０，Ｄ１，Ｄ２，…の順に、ディスク装置ｄ０〜ｄ３を巡回するように格納される。
【００３８】
また、このＬＵ０を構成するディスク装置ｄ４には、パリティＰ０−３，Ｐ４−７，Ｐ８−１１，Ｐ１２−１５，…が割り当てられ、このＬＵ０を構成するディスク装置ｄ５には、パリティＱ０−３，Ｑ４−７，Ｑ８−１１，Ｑ１２−１５，…が割り当てられている。パリティＰ０−３は、ストライプＤ０〜Ｄ３に保持されたデータの排他的論理和で計算される冗長データであり、Ｐ４−７，Ｐ８−１１，…も同様である。パリティＱ０−３は、ストライプＤ０〜Ｄ３およびパリティＰ０−３から非特許文献２に示される計算式によって計算される冗長データであり、Ｑ４−７，Ｑ８−１１，…も同様である。
【００３９】
このように、ＬＵ０に関しては、２台のディスク装置ｄ４，ｄ５にそれぞれパリティＰ，Ｑが格納されるので、ＬＵ０を構成する複数のディスク装置ｄ０〜ｄ５のうちの最大で２台が故障しても、故障したディスク装置のデータを復元することができる。つまり、このＬＵ０に関しては、冗長構成管理テーブル１２６の説明の際に前述したように、最大冗長度が２ということである。
【００４０】
なお、ここでは、１つのストライプに対するパリティＰ，Ｑの数と最大冗長度の数とが一致しているが、１つのストライプに対するパリティＰ，Ｑの数と最大冗長度の数とは必ずしも一致しない。例えば、排他的論理和の式構成によっては、仮に、１つのストライプに対するパリティが３つあっても、最大冗長度が２の場合もある。
【００４１】
また、以上では、パリティＰ，Ｑが格納されるディスク装置は固定的であるが、ＲＡＩＤのレベル５の構成のように可変であってもよい。具体的には、図９に示すように、パリティＰ，Ｑが格納されるディスク装置が、巡回するように、各ディスク装置にパリティＰ，Ｑを分散格納してもよい。
【００４２】
また、以上は、パリティによってデータの冗長化を図るものであるが、図８に示すＬＵ３のようにミラーによってデータの冗長化を図ってもよい。このＬＵ３を構成するディスク装置ｄ１８には、ストライプＤ１００，Ｄ１０２，Ｄ１０４，…が割り当てられ、このＬＵ３を構成するディスク装置ｄ１９は、ストライプＤ１０１，Ｄ１０３，Ｄ１０５，…が割り当てられている。また、このＬＵ３を構成するディスク装置ｄ２０には、ミラーＭ１００，Ｍ１０２，Ｍ１０４，…が割り当てられ、ＬＵ３を構成するディスク装置ｄ２２には、ミラーＭ’１００，Ｍ’１０２，Ｍ’１０４，…が割り当てられ、このＬＵ３を構成するディスク装置ｄ２１には、ミラーＭ１０１，Ｍ１０３，Ｍ１０５，…が割り当てられ、このＬＵ３を構成するディスク装置ｄ２３には、ミラーＭ’１０１，Ｍ’１０３，Ｍ’１０５，…が割り当てられている。すなわち、この例において、１つのストライプD１００に対して、このD１００のデータをコピーしたミラーM１００とミラーＭ’１００の２つ設けられている。
【００４３】
従って、ＬＵ３を構成する複数のディスク装置ｄ１８〜ｄ２３のうちの最大で２台が故障しても、故障したディスク装置のデータを復元することができる。つまり、このＬＵ３に関しては、冗長構成管理テーブル１２６の説明の際に前述したように、最大冗長度が２ということである。
【００４４】
このように、本発明は、データの冗長化は、パリティに限るものではなく、冗長化が図られる方法であれば、如何なる方法であってもよい。
【００４５】
次に、以上で説明したストレージ装置のデータ読出時の動作について、図２〜図４に示すフローチャートに従って説明する。
【００４６】
まず、ローカルメモリ１２２に格納されている読出メインプログラム１２３をＣＰＵ１１１が実行したときの動作について、図２に示すフローチャートに従って説明する。
【００４７】
コントローラ１１０のＣＰＵ１１１がホスト計算機１００からのＲＥＡＤコマンドを受領すると（ステップ２０１）、ＣＰＵ１１１は、まず、キャッシュメモリ１２１に要求データが存在するかを調べる（ステップ２０３）。要求データが存在しない場合には、キャッシュメモリ１２１に存在する冗長データ（パリティデータ叉はミラーデータ）から当該データが復元可能か否か、つまりキャッシュメモリ１２１に冗長データを含め復元に必要なデータが存在するか否かを調べる（ステップ２０５）。キャッシュメモリ１２１に必要な冗長データ等が存在せず、要求データの復元が不能な場合、ＣＰＵ１１１は、図３を用いて後述する要求データ読出/復元処理を行ってから（ステップ２０７）、ホスト計算機１００へ要求データを転送する（ステップ２０９）。また、ステップ２０５において、キャッシュメモリ１２１に必要な冗長データ等が存在し、要求データの復元が可能な場合、ＣＰＵ１１１は、この冗長データ等を用いて要求データの復元処理を行って、この復元によって生成された要求データをキャッシュメモリ１２１に格納してから（ステップ２１１）、ホスト計算機１００へ要求データの転送を行う（ステップ２０９）。この復元処理（ステップ２１１）では、冗長データとしてのパリティデータを用いる場合、仮に、図８に示すＬＵ０のストライプＤ０に格納されたデータを復元する場合には、パリティＰ０−３又はＱ０−３の他に、ストライプＤ１〜Ｄ３に格納されているデータを用いる。また、図８に示すＬＵ３のストライプＤ１００のデータに関しては、その冗長データであるＭ１００のデータがキャッシュメモリ１２１に存在していれば、このＭ１００のデータがストライプＤ１００のデータであるため、直ちに、データ転送（ステップ２０９）が実行される。
【００４８】
また、ステップ２０３で、要求データがキャッシュメモリ１２１に存在する場合、ＣＰＵ１１１は、同データをホスト計算機１０１へ転送する（ステップ２０９）。この転送処理で、コントローラ１１０とホスト計算機１００との間の障害等による転送失敗を、ＣＰＵ１１１あるいはホストインタフェース１０２が検知した場合、必要に応じてリトライ動作を行うとよい。
【００４９】
なお、以上では、ステップ２０５で、キャッシュメモリ１２１に存在する冗長データ等からデータ復元可能か否かを調べているが、このステップ２０５を実行せずに、直ちにステップ２０７へ進んでもよい。また、ステップ２０７で、読み出すデータ量は規定されていないが、データを復元可能な最低のデータ量としてもよく、先読み等による性能向上のために可変量としてもよい。さらに、ステップ２０９では、ＣＰＵ１１１が要求データの転送処理を行っているが、ＣＰＵ１１１は、単に、ホストインタフェース１０２に対してデータ転送指示を出し、この指示に基づいて、ホストインタフェース１０２がデータ転送を行ってもよい。
【００５０】
次に、図３に示すフローチャートに従って、以上で説明した要求データ読出／復元処理（ステップ２０７）の詳細について説明する。
【００５１】
ＣＰＵ１１１は、まず、図７に示す読出管理テーブル１２７を参照して、要求データが格納されている該当ＬＵの欄から、データ読出対象ディスク装置を把握する（ステップ３０１）。例えば、ディスクｄ０に格納されているストライプＤ１のデータが要求されている場合には、図７（ａ）に示すように、このストライプＤ１のデータが格納されているＬＵ０の欄から、データ読出対象ディスク装置ｄ０，ｄ１，ｄ３，ｄ４，ｄ５を把握する。なお、この読出対象ディスク装置は、ディスク装置ｄ２が既に故障しており、読出時対応冗長度が１のときの読出対象ディスク装置である。ここで、ｄｘは冗長データを格納しているディスク装置である。次に、このデータ読出対象ディスク装置からデータの読出を実行し、データ読出に成功したデータをキャッシュメモリ１２１に格納する（ステップ３０３）。
【００５２】
このデータ読出（ステップ３０３）の実行中、ＣＰＵ１１１は、読出対象ディスク装置の障害の発生等により、１以上の読出対象ディスク装置からのデータ読出が全て成功したか否かを調べる（ステップ３０５）。このデータ読出に成功したか否かの判断は、ディスクインタフェース１３１からエラー応答を受信したか否か、または、予め定められた時間以内にデータを読み出せたか否かにより、行われる。１以上の読出対象ディスク装置のうちのいずれかからの読出が失敗であった場合、ホスト計算機１００からの要求データの読出が完了しているか否かを調べる（ステップ３０７）。要求データの読出が完了していない場合、他のディスク装置から読み出したデータと冗長データを用いて、要求データの復元処理を行い、この要求データをキャッシュメモリ１２１に格納する（ステップ３０９）。このデータ復元処理では、例えば、ディスクｄ１に格納されているストライプＤ１のデータが要求され、データ読出対象ディスク装置ｄ０，ｄ１，ｄ３，ｄ４，ｄ５の場合で、ストライプＤ１のデータが格納されているディスク装置ｄ１からデータ読出ができなかった場合には、データ読出ができたデータ読出対象ディスク装置ｄ０，ｄ３，ｄ４，ｄ５のデータからディスク装置ｄ１のデータを復元する。
【００５３】
データ復元処理（ステップ３０９）が終了すると、ＣＰＵ１１１は、障害処理を行い（ステップ３１１）、この要求データ読出／復元処理を終了する。ステップ３０７においてホスト要求データの読出が完了している場合は、直ちに障害処理を行い（ステップ３１１）、この要求データ読出／復元生成処理を終了する。障害処理（ステップ３１１）では、読出対象ディスク装置に対する読出をリトライするか、ホスト計算機１００に対してエラー応答等を行う。さらに、図５に示す装置状態管理テーブル１２５中、ステップ３０５でデータ読出に失敗したと判断されたディスク装置の欄を「故障」にする。
【００５４】
また、ステップ３０５において、１以上の読出対象ディスク装置からのデータ読出が全て成功した場合、ＣＰＵ１１１は、ホスト要求データの存在するディスク装置が既に故障状態であったか否か、つまり、ホスト要求データの読出が行われたか否かを調べる（ステップ３１３）。これは、ホスト要求データの読出時に、この要求データが存在するディスク装置が既に故障していた場合には、ステップ３０１で把握される１以上の読出対象ディスク装置に、要求データが存在するディスク装置が含まれていないため、ステップ３０５で全ての読出対象ディスク装置からのデータ読出が成功したと判断されても、要求データは読み出されないからである。具体的には、ディスクｄ２に格納されているストライプＤ２のデータが要求されたものの、既にディスク装置ｄ２が故障しているために、データ読出対象ディスク装置がｄ０，ｄ１，ｄ３，ｄ４，ｄ５になっており、全てのデータ読出対象ディスク装置ｄ０，ｄ１，ｄ３，ｄ４，ｄ５からデータを読み出せても、ディスク装置ｄ２のデータ自体は読み出せない場合に対処するためである。
【００５５】
ステップ３１３で、ホスト要求データの存在するディスク装置が既に故障状態であった場合、つまりホスト要求データの読出が行われていない場合には、他のディスク装置から読み出したデータと冗長データを用いてホスト要求データを復元し、この要求データをキャッシュメモリ１２１に格納し（ステップ３１５）、要求データ読出／復元処理を終了する。また、ステップ３１３においてホスト要求データの読出が完了していた場合は、直ちに、要求データ読出／復元処理を終了する。
【００５６】
なお、ステップ３０９において、冗長データ不足によってホスト要求データが復元不能な場合には、直ちに、障害処理（ステップ３１１）に移って、読出対象ディスク装置に対する読出をリトライするか、ホスト計算機１００に対してエラー応答等を行うとよい。
【００５７】
次に、ローカルメモリ１２２に格納されている読出ディスク管理テーブル１２７の更新プログラム１２４をＣＰＵ１１１が実行したときの動作について、図４に示すフローチャートに従って説明する。
【００５８】
ＣＰＵ１１１は、まず、ａ）ＣＰＵ１１１自体が複数のディスク装置１３１に対してデータの書込み又は読出しが終了したとき、ｂ）ホスト計算機１００が当該ストレージ装置１０１に対してデータの書込み又は読出しが終了したとき、ｃ）当該ストレージ装置１０１を構成する部品に障害が発生したとき、ｄ）当該ストレージ装置１０１の電源が投入されたとき、ｅ）冗長構成管理テーブル１２６（図６）の読出時対応冗長度が外部からの操作で変更されたとき、ｆ）ホスト計算機１００からデータ要求があったとき、ｇ）ディスク装置１３２の選択方針が変わったとき、のうちの少なくとも１つのときの条件を満たしたか否かを判断する（ステップ４００）。
【００５９】
ＣＰＵ１１１は、ａ）〜ｇ）のうちの少なくとも１つの条件を満たしていると判断したときには、装置状態管理テーブル１２５（図５）を参照して、故障ディスク装置の数に変化があるか否か（ステップ４０１）、さらに、冗長構成管理テーブル１２６（図６）を参照して、読出時対応冗長度が変化したか否か（ステップ４０３）、ディスク装置１３２の選択方針が変化したか否か（ステップ４０４）を確認する。
【００６０】
ステップ４０１，４０３，４０４で、故障ディスク装置の数、読出時対応冗長度及びディスクの選択方針に変化がないことが確認されると、読出対象ディスク管理テーブル１２７の更新を行わず、処理を終了する。また、ステップ４０１，４０３，４０４で、故障ディスク装置の数、読出時対応冗長度又はディスクの選択方針に変化があることが確認されると、この変化のあったＬＵの読出時対応冗長度を、冗長度構成管理テーブル１２６から読み出して、この読出時対応冗長度を確保できるか否かを調べる（ステップ４０５）。読出時対応冗長度を確保可能な場合には、変化のあったＬＵを構成する複数のディスク装置のうちの故障台数を調べ、この故障台数と先の読出時対応指定冗長度とから、読出時実冗長度、つまり実際に読み出す冗長データの数を決定する（ステップ４０６）。
【００６１】
ここで、読出時実冗長度の決定に関して、図７（ｂ）を用いて、具体的に説明する。なお、読出時対応冗長度とは、前述したように、装置状態管理テーブル１２５に記憶されている状態から新たに故障してもデータ復元可能なディスク装置の数であり、読出時実冗長度とは、データ読出時に故障していてもデータ復元可能なディスク装置の数である。
【００６２】
仮に、同図欄ａに示すように、ＬＵ０に関して、読出時対応冗長度が０で、故障ディスク装置の数が０の場合には、データ読出時にデータ復元を行わなくてもよいということなので、データ読出時に冗長データが格納されているディスク装置ｄ４，ｄ５にアクセスする必要はなく、読出時実冗長度は０、言い換えると、データ読出時に読み出す冗長データの数は０となる。また、同図欄ｂ１に示すように、以上と同様に、読出時対応冗長度が０でも、故障ディスク装置がｄ１の１台の場合で、ディスク装置ｄ１が格納しているデータＤ１に対して読出要求があった場合には、故障ディスク装置ｄ１のデータＤ１を復元する必要性から、データ読出時に冗長データおよびｄ１のデータを復元するのに必要なデータが格納されているディスク装置ｄ１〜ｄ４にアクセスする必要があり、読出時実冗長度は１、言い換えると、データ読出時に読み出す冗長データの数は１となる。ただし、同図欄ｂ0，ｂ１，ｂ２，ｂ３に示すように、読出時対応冗長度が０であり、要求データが格納されているディスク装置が故障していない場合の読出時実冗長度は０、言い換えると要求データが格納されているディスク装置のみにアクセスすることになる。また、同図欄ｄに示すように、読出時対応冗長度が１で、故障ディスク装置ｄ２の数が１の場合には、故障ディスク装置ｄ２のデータを復元すると共に、新たに１台の故障ディスク装置が発生しても、このディスク装置のデータも復元するための準備をしておく必要性から、データ読出時に冗長データが格納されている２台のディスク装置ｄ４，ｄ５にアクセスする必要があり、読出時実冗長度は２、言い換えると、データ読出時に読み出す冗長データの数は２となる。
【００６３】
また、以上は、冗長データとしてパリティデータを用いる例であるが、冗長データとしてミラーデータを用いる場合には、仮に、同図欄ｈに示すように、ＬＵ３に関して、読出時対応冗長度が０で、故障ディスク装置の数が０の場合には、データ読出時にデータ復元を行わなくてもよいということなので、データ読出時に冗長データが格納されているディスク装置ｄ２０〜ｄ２３にアクセスする必要はなく、読出時実冗長度は０、言い換えると、データ読出時に読み出す冗長データとしてのミラーデータの数は０となる。また、同図欄ｉに示すように、読出時対応冗長度が１で、故障ディスク装置の数が０の場合には、新たに故障故障ディスク装置が発生しても、このディスク装置のデータを復元する必要性から、データ読出時に冗長データとしてのミラーデータが格納されているディスク装置ｄ２０にアクセスする必要があり、読出時実冗長度は１、言い換えると、データ読出時に読み出す冗長データの数は１となる。
【００６４】
ここで、ステップ４０５で、読出時対応冗長度を確保できるか否かの判断は、冗長構成管理テーブル１２６（図６）の欄１２６ｂに格納されている最大冗長度の値と、同テーブル１２６の欄１２６ｃに格納されている読出時対応冗長度の値と、装置状態管理テーブル１２５（図５）に格納されている故障ディスク装置の数とを用いて行われる。例えば、図７（ｂ）の前述の欄ｄに示すように、読出時対応冗長度が１で、故障ディスク装置がｄ２の１台の場合には、読出時実冗長度が２となる。ＬＵ０は、最大冗長度が２で、読出時実冗長度（２）が最大冗長度（２）以下であることから、この読出時実冗長度を実行することができる、言い換えると、読出時対応冗長度（１）を確保できる。しかしながら、同図欄ｅに示すように、ＬＵ０に関して、読出時対応冗長度が１で、故障ディスク装置がd２，ｄ３の２台の場合、本来、読出時実冗長度の値は３になるが、ＬＵ０の最大冗長度は２であるから、この読出時実冗長度（３）を実行できない、言い換えると、読出時対応冗長度（１）を確保できない。
【００６５】
このように、読出時対応冗長度を確保できない場合には、ＣＰＵ１１１は、読出時対応冗長度の値に関わらず、読出時実冗長度を最大冗長度にする（ステップ４０８）。例えば、図７（ｂ）の前述の欄ｅの場合には、読出時対応冗長度の値が１であっても、読出時実冗長度の値を、最大冗長度の値２にする。
【００６６】
ＣＰＵ１１１は、読出時実冗長度を決定すると（ステップ４０６，４０８）、冗長構成管理テーブル１２６（図６）の方針を参照して、実際に読み出すディスク装置１３２を選択する（ステップ４０７，４０９）。仮に、読出時実冗長度の値と最大冗長度の値との値が同じである場合、例えば、読出時実冗長度の値が１で、最大冗長度の値も１、つまり、冗長データを格納しているディスク装置の数が１の場合には、ディスク装置を選択する余地はない。しかしながら、読出時実冗長度の値よりも最大冗長度の値の方が大きい場合、例えば、読出時実冗長度の値が１で、最大冗長度の値が２以上、つまり、冗長データを格納しているディスク装置の数が２以上の場合には選択の余地がある。
【００６７】
そこで、本実施形態では、ディスク装置の選択に余地がある場合には、予め定められた方針に基づいて、ディスク装置を選択するようにしている。この実施形態での方針としては、図６に示すように、前述した「計算量小（データ復元の容易性）」と「負荷分散（データ転送経路の使用率の均一性）」と「指示に従う」とがある。
【００６８】
例えば、読出時実冗長度の値が１で、最大冗長度の値が２で、非特許文献２に示されるデュアルパリティ構成を考える。図８に示したディスク、データおよびパリティの構成のとき、ディスク装置ｄ４が格納している第一の冗長データＰと、ディスク装置ｄ５が格納している第二の冗長データＱとのうち、冗長データＰを用いると冗長データＱを用いるよりも、データ復元時の計算負荷が小さくなる。具体的には、データＤ０を読み出す際にディスク装置ｄ０が故障した場合を考える。冗長データＰ０−３を用いてデータＤ０を復元するときには、Ｄ１、Ｄ２、Ｄ３、Ｐ０−３の排他的論理和を計算する。一方、冗長データＱ０−３を用いてデータＤ０を復元するときには、Ｄ１、Ｄ２、Ｄ３、Ｑ０−３のそれぞれに特殊な係数を乗じた値の排他的論理和を計算することによってＰ０−３を求め、その後、Ｄ１、Ｄ２、Ｄ３、Ｐ０−３の排他的論理和を計算することによってＤ０を復元する。この場合、Ｐ０−３を用いる場合に比べてＱ０−３を用いる場合は、Ｐ０−３を求めるのに必要な量の計算量だけ多く必要となる。この場合、方針として「計算量小」が設定されていると、この冗長データＰ０−３を格納しているディスク装置ｄ４を選択し、Ｑ０−３を格納しているディスク装置ｄ５は選択されない。このように、用いる冗長データによってデータを復元する際の計算量が変化する場合、方針として「計算量小」が選択されていれば、ＲＡＩＤの構成方法に基づいて計算量を小さくする冗長データを読み出すディスク装置を選択する。
【００６９】
また、以上のように、冗長データＰを用いることで計算負荷が小さくなるような場合でも、仮に、この第１の冗長データＰを格納するディスク装置ｄ４からキャッシュメモリ１２１までのデータ転送経路の一部あるいは全部が第２の冗長データＱを格納するディスク装置ｄ５を除く、他のディスク装置のデータ転送経路と共有し、ｄ５の転送経路が他のディスク装置と異なる場合には、冗長データＱの転送時間が、他のデータの転送時間に比べてきわめて短く、計算負荷が多少大きくても、ホスト計算機１００に対する最終的な応答時間が短くなることがある。この例について図１４を用いて説明する。ディスク装置ｄ０〜ｄ４は転送経路１３５を共有して使用し、ディスク装置ｄ５はこれとは独立した転送経路１３６を使用する。冗長データＰを用いる場合、データ転送にはディスクｄ０〜ｄ４の５台分の転送時間が必要となる。一方、冗長データＱを用いる場合は転送経路が独立しているため、データ転送にはディスクｄ０〜ｄ３の４台分の転送時間とディスクｄ４の１台分の転送時間のうち、長い方の時間が必要となる。転送経路１３５と転送経路１３６のデータ転送速度が同じだと仮定すると、ディスクｄ５に格納されている冗長データＱを用いた場合の転送時間は、ディスクｄ４に格納されている冗長データＰを用いた場合の０．８倍の時間と短くなり、この時間の差と冗長データ復元時間の差を合わせたものが、ホスト応答時間の差として現れる。このように転送経路が異なり、データ転送時間の合計や転送経路使用率が異なる場合、方針として「負荷分散」が設定されていると、この冗長データＱが格納されているディスク装置ｄ５を選択する。なお、データ転送時間の合計や転送経路使用率は、転送経路の帯域幅や周波数のみによって決定されず、転送を制御する制御装置の性能、転送経路上に存在する部品の性能等によって決定することも可能である。
【００７０】
以上のように、ディスク装置の選択が終了すると、ＣＰＵ１１１は、読出対象ディスク管理テーブル１２７の書き換えを行い（ステップ４１１）、この読出対象ディスク管理テーブルの更新処理を終了する。
【００７１】
以上のように、本実施形態では、故障ディスク装置の数に応じて、読出時実冗長度、つまり、データ読出時の冗長データの数を変えているので、ホスト計算機１００からのデータ要求する応答時間をあまり遅くすることなく、応答時間を保証することができる。さらに、本実施形態では、ディスク装置の選択に余地がある場合に、予め定められた方針に基づいて、ディスク装置を選択するようにしているので、応答時間をより短くすることができる。
【００７２】
次に、図１０〜図１３を用いて、本実施形態の効果について具体的に説明する。
【００７３】
まず、図１０を用いて、本実施形態のストレージ装置１０１で、ＬＵ０に関して読出時対応冗長度を１に設定しているとき、事前にディスク装置ｄ０の故障を把握しておらず、読出時にディスク装置ｄ０からデータを読み出せない場合のホスト応答時間について説明する。
【００７４】
ホスト計算機１００から、ＬＵ０に含まれているストライプD０のデータ要求があると、この要求に対して、ホストインタフェース１０２及びコントローラ１１０は、時間９０１で受信処理を行う。コントローラ１１０は、読出対応ディスク管理テーブル１２７を参照して、読出対象ディスク装置を把握し、この読出対象ディスク装置からの読出処理を実行する。ここで、読出前ではＬＵ０を構成するディスク装置ｄ０〜ｄ５のうちのいずれも故障していないことになっているので、読出対象ディスク装置は、読出時対応冗長度が１の場合、ディスク装置ｄ０，ｄ１，ｄ２，ｄ３，ｄ４となる。したがって、コントローラ１１０は、ディスク装置ｄ０，ｄ１，ｄ２，ｄ３，ｄ４に対して読出処理を実行する。各ディスク装置ｄ０，ｄ１，ｄ２，ｄ３，ｄ４に対する読出処理時間９０５，９０３，９０３，…のうち、ディスク装置ｄ０に対する読出処理時間９０５には、このディスク装置ｄ０の故障を検知するまでの時間が含まれ、他のディスク装置ｄ１，ｄ２，ｄ３，ｄ４に対する読出処理時間９０５，９０３，…には、データＤ１，Ｄ２，Ｄ３，Ｐ０-３をキャッシュメモリ１２１に格納するまでの時間が含まれる。
【００７５】
ここでは、この読出処理段階で、ディスク装置ｄ４に格納されている冗長データＰ０-３を読み出しているので、ディスク装置ｄ０の故障を検知した後に、改めて、ディスク装置ｄ４に格納されている冗長データＰ０−３を読み出す必要はない。
【００７６】
コントローラ１１０は、キャッシュメモリ１２１に格納されたデータＤ１，Ｄ２，Ｄ３，Ｐ０−３を用いて、読出に失敗したディスク装置ｄ０に格納されているストライプD０のデータを、時間９０７をかけて復元し、これをキャシュメモリ１１１に格納する。コントローラ１１０及びホストインタフェース１０２は、ホスト計算機１００に対して、時間９０９をかけて要求データを転送する。
【００７７】
以上の結果、ホスト計算機１００からのデータ要求に対する応答時間Ａは、受信処理時間９０１＋読取処理時間９０５or９０３（９０５と９０３の大きい方）＋復元時間９０７＋転送時間９０９となる。
【００７８】
次に、図１１を用いて、本実施形態のストレージ装置１０１で、ＬＵ０に関して読出時対応冗長度を１に設定しているとき、事前にディスク装置ｄ０の故障を把握している場合のホスト応答時間について説明する。
【００７９】
ホスト計算機１００から、ＬＵ０に含まれているストライプD０のデータ要求があると、この要求に対して、ホストインタフェース１０２及びコントローラ１１０は、以上と同様に、時間９０１で、受信処理を行う。コントローラ１１０は、読出対応ディスク管理テーブル１２７を参照して、読出対象ディスク装置を把握し、この読出対象ディスク装置からの読出処理を実行する。ここで、読出前において、ＬＵ０を構成するディスク装置ｄ０〜ｄ５のうちのディスク装置ｄ０の故障について事前に把握しているので、読出対象ディスク装置は、読出時対応冗長度が１の場合、ディスク装置ｄ１，ｄ２，ｄ３，ｄ４，ｄ５となる。したがって、コントローラ１１０は、ディスク装置ｄ０を除く、ディスク装置ｄ０，ｄ１，ｄ２，ｄ３，ｄ４，ｄ５に対して、時間９０５，９０３，９０３，…で読出処理を実行する。
【００８０】
仮に、読取対象ディスク装置ｄ１，ｄ２，ｄ３，ｄ４，ｄ５のうちのいずれにも、新たな故障が発生しなければ、以上の読出処理により、キャッシュメモリ１２１には、データＤ１，Ｄ２，Ｄ３，Ｐ０−３，Ｑ０−３が格納され、コントローラ１１０は、キャッシュメモリ１２１に格納された以上のデータのうち、データＤ１，Ｄ２，Ｄ３，Ｐ０−３を用いて、読み取っていないディスク装置ｄ０に格納されているストライプD０のデータを、時間９０７をかけて復元し、これをキャシュメモリ１１１に格納する。コントローラ１１０及びホストインタフェース１０２は、ホスト計算機１００に対して、時間９０９をかけて要求データを転送する。このとき、ディスクｄ１では故障が発生していないため、時間９０５は、時間９０３と同じになる。
【００８１】
また、読取対象ディスク装置ｄ１，ｄ２，ｄ３，ｄ４，ｄ５のうち、ディスク装置ｄ１に新たな故障が発生すれば、ディスク装置ｄ１からデータを読み取ることはできず、キャッシュメモリ１２１には、Ｄ２，Ｄ３，Ｐ０−３，Ｑ０−３が格納され、コントローラ１１０は、キャッシュメモリ１２１に格納された以上のデータＤ２，Ｄ３，Ｐ０−３，Ｑ０−３を用いて、読み取っていないディスク装置ｄ０に格納されているストライプD０のデータを、時間９０７をかけて復元し、これをキャッシュメモリ１２１に格納する。コントローラ１１０及びホストインタフェース１０２は、ホスト計算機１００に対して、時間９０９をかけて要求データを転送する。
【００８２】
以上の結果、ホスト計算機１００からのデータ要求に対する応答時間Ａ’は、図１０の場合と同様に、受信処理時間９０１＋読取処理時間９０５or９０３（９０５と９０３の大きい方）＋復元時間９０７＋転送時間９０９となる。
【００８３】
従って、本実施形態では、読取時対応冗長度として１を設定しておけば、事前に全てのディスク装置が正常であると把握している場合（図１０）でも、事前に１台のディスク装置の故障を把握している場合（図１１）でも、読取時に新たに１台のディスク装置が故障しようが故障しまいが、応答時間Ａ，Ａ’はほぼ同じになる。
【００８４】
次に、本実施形態の比較として、先に述べた非特許文献２に記載の技術によるホスト応答時間について、図１２を用いて説明する。ここでは、ＬＵ０を構成している複数のディスク装置ｄ０〜ｄ５のうち、ディスク装置ｄ０に記憶されているストライプＤ０のデータを読み出す際のホスト応答時間について説明する。
【００８５】
ホスト計算機からデータ要求があると、この要求に対して、ホストインタフェース及びコントローラは、先に説明した本実施形態と同様に、時間９０１で、受信処理を行う。次に、コントローラは、ストライプＤ０のデータが格納されているディスク装置ｄ０に対して、時間９０５で読出処理を実行する。
【００８６】
このとき、読取対象ディスク装置ｄ０に故障が既に発生しており、又は新たな故障が発生した場合、コントローラは、ディスク装置ｄ０に格納されているストライブＤ０のデータを復元するために、新たに、ディスク装置ｄ１，ｄ２，ｄ３，ｄ４に対して、時間９０３で読取処理を実行し、これらのディスク装置ｄ１，ｄ２，ｄ３，ｄ４からのデータＤ１，Ｄ２，Ｄ３，Ｐ０−３を用いて、読み取っていないディスク装置ｄ０に格納されているストライプD０のデータを、時間９０７をかけて復元し、これをキャシュメモリに格納する。そして、コントローラ及びホストインタフェースは、ホスト計算機に対して、時間９０９をかけて要求データを転送する。
【００８７】
従って、非特許文献２に記載の技術によるホスト応答時間Ｂは、受信処理時間９０１＋読取処理時間９０５＋読取時間９０３＋復元時間９０７＋転送時間９０９となり、本実施形態の図１０，図１１の場合のホスト応答時間Ａ，Ａ’よりも、読取時間９０３分、或いは読取時間９０５分長くなる。
【００８８】
次に、本実施形態の比較として、先に述べた特許文献１に記載の技術によるホスト応答時間について、図１３を用いて説明する。ここでも、ＬＵ０を構成している複数のディスク装置ｄ０〜ｄ５のうち、ディスク装置ｄ０に記憶されているストライプＤ０のデータを読み出す際のホスト応答時間について説明する。
【００８９】
ホスト計算機から、ストライプD０のデータ要求があると、この要求に対して、ホストインタフェース及びコントローラは、以上と同様に、時間９０１で、受信処理を行う。次に、コントローラは、ディスク装置に故障が発生しているか否かに関わらず、ＬＵ０を構成している全てのディスク装置ｄ０〜ｄ５に対して、時間９０５’，９０３’，９０３’，…で読出処理を実行する。この場合、ＬＵ０を構成している６台のディスク装置に対して、読取処理を実行しているので、図１０〜図１２に示す例よりも、読取対象ディスク装置の台数が多くなり、データ転送経路の混雑度が増加する上に、キャッシュメモリへの格納処理も嵩むので、この読取時間は、以上の例よりも長くなる。
【００９０】
仮に、読取対象ディスク装置ｄ０が故障していれば、以上の読出処理により、キャッシュメモリには、データＤ１，Ｄ２，Ｄ３，Ｐ０−３，Ｑ０−３が格納される。コントローラは、キャッシュメモリに格納された以上のデータのうち、データＤ１，Ｄ２，Ｄ３，Ｐ０−３を用いて、読み取っていないディスク装置ｄ０に格納されているストライプD０のデータを、時間９０７をかけて復元し、これをキャシュメモリに格納する。コントローラ及びホストインタフェースは、ホスト計算機に対して、時間９０９をかけて要求データを転送する。
【００９１】
従って、特許文献１に記載の技術によるホスト応答時間Ｃは、受信処理時間９０１＋読取処理時間９０５’or９０３’（９０５’と９０３’の大きい方）＋復元時間９０７＋転送時間９０９となるが、前述したように、読取時間が以上の例よりも長くなるために、本実施形態の図１０，図１１の場合のホスト応答時間Ａ，Ａ’よりも、長くなる。
【図面の簡単な説明】
【００９２】
【図１】本発明に係る一実施形態におけるストレージ装置の構成を示す説明図である。
【図２】本発明に係る一実施形態におけるストレージ装置で、ホスト計算機からの読出要求があった際の読出処理を示すフローチャートである。
【図３】図２中のステップ２０７の詳細処理を示すフローチャートである。
【図４】本発明に係る一実施形態におけるストレージ装置で、読出対象ディスク管理テーブルの更新処理を示すフローチャートである。
【図５】本発明に係る一実施形態における装置状態管理テーブルの構成を示す説明図である。
【図６】本発明に係る一実施形態における冗長構成管理テーブルの構成を示す説明図である。
【図７】本発明に係る一実施形態の読出対象ディスク管理テーブルに関する図であり、同図（ａ）は、読出対象ディスク管理テーブルの構成を示す説明図であり、同図（ｂ）は、各種条件に応じて読出対象ディスクが変わることを示す説明図である。
【図８】本発明に係る一実施形態におけるＬＵ０とＬＵ３の構成を示す説明図である。
【図９】他のＬＵの構成を示す説明図である。
【図１０】本発明に係る一実施形態におけるストレージ装置でのホスト応答時間を示すタイムチャート（その１）である。
【図１１】本発明に係る一実施形態におけるストレージ装置でのホスト応答時間を示すタイムチャート（その２）である。
【図１２】非特許文献２の技術によるストレージ装置でのホスト応答時間を示すタイムチャートである。
【図１３】特許文献１の技術によるストレージ装置でのホスト応答時間を示すタイムチャートである。
【図１４】本発明に係る一実施形態におけるストレージ装置の変形例の部分構成を示す説明図である。
【符号の説明】
【００９３】
１００：ホスト計算機、１０１：ストレージ装置、１０２：ホストインタフェース、１１０：コントローラ、１１１：ＣＰＵ、１２０：メモリ部、１２１：キャッシュメモリ、１２２：ローカルメモリ、１２３：読出メインプログラム、１２４：読出ディスク管理テーブルの更新プログラム、１２５：装置状態管理テーブル、１２６：冗長構成管理テーブル、１２７：読出ディスク管理テーブル、１３１：ディスクインタフェース、１３２：ディスク装置
【図１】
2005309818.tif 000003
【図２】
2005309818.tif 000004
【図３】
2005309818.tif 000005
【図４】
2005309818.tif 000006
【図５】
2005309818.tif 000007
【図６】
2005309818.tif 000008
【図７】
2005309818.tif 000009
【図８】
2005309818.tif 000010
【図９】
2005309818.tif 000011
【図１０】
2005309818.tif 000012
【図１１】
2005309818.tif 000013
【図１２】
2005309818.tif 000014
【図１３】
2005309818.tif 000015
【図１４】
2005309818.tif 000016