(57)【要約】【課題】  複数パリティ構成を有するディスクアレイ装置において、ディスク装置の障害発生時に、より効率的にデータ復旧を図るものとする。【解決手段】  １台のHDDにて故障が発生したケースを想定する。データ回復処理において、５ステージを１サイクルとすると、各サイクルにて、第１ステージでは、第１パリティ（P）=4、第２ステージでは、第１パリティ（P）=3：第2パリティ（Q）=1、第２ステージでは、第１パリティ（P）=2：第2パリティ（Q）=2、第４ステージでは、第１パリティ（P）=1：第2パリティ（Q）=3、第５ステージでは、第２パリティ（Q）=4という流れで、データの読み出しとともにパリティの読み出しを行う。の結果、各ドライブごとに読み込み回数の均一化が図れ、負荷を分散させることで、ディスクアレイ装置全体の性能を改善できる。【選択図】      図１２
2006260446.tif 000002
【特許請求の範囲】
【請求項１】
２パリティ構成を有するディスクアレイ装置において、
１ＨＤＤ障害時のコレクションリード時に復元元の使用パリティ及びデータをローテーションするディスクアレイ装置。
【請求項２】
ディスクアレイを構成する複数のディスクドライブと、
前記複数のディスクドライブへのデータの入出力を制御するコントローラと、
を備え、
前記複数のディスクドライブには、データと、前記データから生成される第一のパリティデータ及び第二のパリティデータのそれぞれがストライプ単位で巡回するようにそれぞれ異なるディスクドライブに格納されており、
前記コントローラは、何れか一台のディスクドライブに障害が生じると、各ディスクドライブにアクセスする都度に、前記データ、前記第一のパリティデータ、及び前記第二のパリティデータをそれぞれ読み出すディスクドライブをローテーションする、ディスクアレイ装置。
【請求項３】
請求項２に記載のディスクアレイ装置であって、
前記コントローラは、アクセス回数の少ないディスクドライブを優先的に選択して、読み出し対象となるディスクドライブをローテーションする、ディスクアレイ装置。
【請求項４】
請求項２に記載のディスクアレイ装置であって、
前記コントローラは、各ディスクドライへのアクセス回数が略均等になるように、読み出し対象となるディスクドライブをローテーションする、ディスクアレイ装置。
【請求項５】
請求項２に記載のディスクアレイ装置であって、
前記コントローラは、読み出し対象とならないディスクドライブを順番に交代させることにより、読み出し対象となるディスクドライブをローテーションする、ディスクアレイ装置。
【請求項６】
請求項２に記載のディスクアレイ装置であって、
前記コントローラは、前記第一のパリティデータが格納されているディスクドライブの読み出し回数と、前記第二のパリティデータが格納されているディスクドライブの読み出し回数を相補的に増減させることにより、読み出し対象となるディスクドライブをローテーションする、ディスクアレイ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はディスクアレイ装置に関し、データ復旧時のドライブごとのデータ読み込み回数のバラツキを回避することが可能なディスクアレイ装置に関する。
【背景技術】
【０００２】
ディスクアレイは、アレイ構成された複数のディスクを並列アクセスすることにより、アクセススピード等の性能の向上を図り、データにパリティを付加して、１台のディスク故障に対して消失データの自動回復が可能な、高性能、高信頼性ディスクシステムである。
【０００３】
近年、ディスクアレイ装置においては、ファイバチャネルディスクの他に、ＡＴＡ（AT Attachment）ディスク装置が使用され始めている。ＡＴＡディスク装置は、ファイバチャネルディスク装置に比較して安価ではあるが、反面、信頼性に劣る面もある。このため、２台のディスク装置が同時に故障する「二重障害」が発生する確率も必然的に高くなっていく。そこで、「二重障害」に対する回復手法がより重要となってくる。
【０００４】
また、取り扱いデータ量が年々膨大化し、これにともない単体ディスク装置の容量も増加傾向にある。したがって、データ復旧に要する時間も長くなり、高信頼性を誇るファイバチャネルディスクでも、「二重障害」が発生する可能性も増加している。また、データ復旧中に同一パリティグループの別のＨＤＤでの障害発生する可能性が増大している。
【０００５】
そこで、同一パリティグループ内に第１のパリティ（P）、および第２のパリティ（Q）を設け、二重障害が発生した際も、データ復旧が可能な状態とする。なお、特開平9-34651には、同一グループの２パリティ構成に関する開示があるが、同公報では、パリティ更新の際、一方に対してのみパリティ更新をおこない、障害回復時には、いずれかをスペア領域にするとの記載がされている。
【０００６】
また、前述のとおり、単体ディスク装置の容量増加によるデータ復旧時間の長期化という課題が発生し、より効率的なデータ復旧が求められる。
【特許文献１】特開平９−３４６５１
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１では、同一グループの２パリティ構成に関する開示があるが、各ドライブ毎の負荷分散に関する記載はない。同文献の方式では、データ復旧の際、負荷が偏ることが考えられ、ディスクアレイ装置全体としての性能改善の余地があると考えられる。
【０００８】
本発明は、データ復旧時に各ディスクからの読み込みの回数の偏りを回避し、ディスクドライブ毎の負荷を分散させることで、ディスクアレイ装置全体の性能を改善することを課題とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するため、本発明のディスクアレイ装置は、２パリティ構成を有するディスクアレイ装置において、１ＨＤＤ障害時のコレクションリード時に復元元の使用パリティ及びデータをローテーションする。
【００１０】
本発明では、第１のパリティ（P）、および第２のパリティ（Q）を効率よく使用していくことで、データ復旧時間を短縮し、ディスクアレイシステム全体としての性能の改善を図る。
【００１１】
ここで、説明の便宜上、ＨＤＤ６台並列構成とし、各パリティグループにおいて、データ４対パリティ２の構成で以下説明する。まず、ＨＤＤ０に障害が発生した際、各パリティドライブにて、ＨＤＤ１〜ＨＤＤ５のうち、４台よりデータを読み出して、データを復旧させるケースについて考える。
【００１２】
図１０のケースでは、それぞれのパリティグループの中で、第１のパリティ（P）固定で読み出し、データ復旧を実施する。この結果、１０ステージ終了時点では、ＨＤＤ５に関しては、読み込み回数が４０回に対し、ＨＤＤ４に関しては、読み込み回数が５０回発生する。従って、ＨＤＤごとに読み込み回数に偏りが発生し、性能面から改善の余地があると言える。
【００１３】
次に、図１１のケースでは、各ステージ毎に第１のパリティ（P）、第２のパリティ（Q）と交互に読み出すことで、データ復旧を図る。この結果、１０ステージ終了時点では、ＨＤＤ１，５に関しては、読み込み回数が４５回に対し、ＨＤＤ２〜４に関しては、読み込み回数が５０回発生する。従って、図１０のケースよりは改善されたが、依然としてＨＤＤごとに読み込み回数に偏りが発生し、性能面から改善の余地があると言える。
【００１４】
次に、図１２のケースでは、
第１ステージでは、第１パリティ (P) = 4、
第２ステージでは、第１パリティ（P）= 3：第2パリティ（Q）= 1、
第２ステージでは、第１パリティ（P）= 2：第2パリティ（Q）= 2、
第４ステージでは、第１パリティ（P）= 1：第2パリティ（Q）= 3、
第５ステージでは、第２パリティ（Q）= 4
という具合に復旧処理を実施し、第６ステージ以降は第１〜第５ステージを繰り返すこととする。この結果、１０ステージ終了時点では、ＨＤＤ１〜５全てのＨＤＤにおいて、読み込み回数が４８回発生することになり、負荷が均等化されたことになる（つまり、最大で４８回の読み出し）。よって、システム全体の性能を考慮した場合、図１２のケースを採用するのが、最適の手段ということがいえる。
【００１５】
本発明の他の観点に従うディスクアレイ装置は、ディスクアレイを構成する複数のディスクドライブと、複数のディスクドライブへのデータの入出力を制御するコントローラとを備え、複数のディスクドライブには、データと、データから生成される第一のパリティデータ及び第二のパリティデータのそれぞれがストライプ単位で巡回するようにそれぞれ異なるディスクドライブに格納されており、コントローラは、何れか一台のディスクドライブに障害が生じると、各ディスクドライブにアクセスする都度に、データ、第一のパリティデータ、及び第二のパリティデータをそれぞれ読み出すディスクドライブをローテーションする。
【００１６】
コントローラは、例えば、（１）アクセス回数の少ないディスクドライブを優先的に選択して、読み出し対象となるディスクドライブをローテーションする、（２）各ディスクドライへのアクセス回数が略均等になるように、読み出し対象となるディスクドライブをローテーションする、（３）読み出し対象とならないディスクドライブを順番に交代させることにより、読み出し対象となるディスクドライブをローテーションする、（４）第一のパリティデータが格納されているディスクドライブの読み出し回数と、第二のパリティデータが格納されているディスクドライブの読み出し回数を相補的に増減させることにより、読み出し対象となるディスクドライブをローテーションする、等の方法を採用できる。ディスクドライブの読み出し回数を相補的に増減させるとは、例えば、第一のパリティデータが格納されているディスクドライブの読み出し回数を増加（或いは減少）させる一方で、第二のパリティデータが格納されているディスクドライブの読み出し回数を減少（或いは増加）させることをいう。
【発明の効果】
【００１７】
本発明によれば、データ復旧時に各ディスクからの読み込みの回数の偏りを回避し、ドライブごとの負荷を分散させることで、ディスクアレイ装置全体の性能を改善できる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明に係るストレージ装置の一実施形態について、図面を用いて説明する。
【００１９】
図１に示すように、本実施形態のストレージ装置１０１は、ホスト計算機１００に接続されている。このストレージ装置１０１は、複数のディスク装置１３２と、各ディスク装置１３２を駆動制御するディスクインターフェース１３１と、スペアとして用いられるディスク装置１３４と、ディスク装置１３４を駆動制御するディスクインターフェース１３３と、ホスト計算機１００からのディスク装置１３３，１３４に対するＩ／Ｏ要求を受け付けて、各ディスクインターフェース１３１，１３３を制御するコントローラ１１０とを備えている。ディスク装置１３４は、複数のディスク装置１３２のうち何れかが故障した場合に、代替として使われるスペアディスクである。ディスク装置１３４の代替処理等の詳細については、後述する。
【００２０】
コントローラ１１０は、ホスト計算機１００との間でデータの送受信を行うホストインターフェース１０２と、データ転送を司るデータ転送制御部１１２と、ディスクインターフェース１３１，１３３を制御するディスク制御部１１３と、各種プログラムを実行するＣＰＵ１１１と、ディスク装置１３２から読み出したデータを記憶すると共に、ＣＰＵ１１１が実行するプログラム等で使用される制御用のデータを格納するメモリ部１２０と、を有している。このメモリ部１２０には、ディスク装置１３２から読み出したデータを一時的に格納するキャッシュメモリ１２１と、複数のディスク装置１３２、１３４のそれぞれの状態を記憶する装置状態管理テーブル１２５と、冗長制御を行うために必要な情報を記憶する冗長構成管理テーブル１２６と、実際にデータを読み出す際にどのディスクにアクセスすべきかの情報を記憶するＬＵ構成管理テーブル１２７と、ディスク装置１３２，１３４へのアクセス回数をカウントするディスクアクセスカウンタ１２８とが設定されている。
【００２１】
データ転送制御部１１２は、キャッシュメモリ１２１から読み出したデータからディスク装置１３２、１３４に書き込むパリティを生成し、或いはディスク装置１３２、１３４から読み出したデータとパリティに基づいて、エラー検出又はデータの訂正と回復を行うパリティ生成部１１４を備えている。また、ＣＰＵ１１１には、保守員からの指示をコントローラ１１０の動作に反映させるための保守端末１０３を接続するためのインターフェースが設けられている。このようなインターフェースには、例えば、ＬＡＮやシリアルインターフェースなどがある。
【００２２】
装置状態管理テーブル１２５には、図４に示すように、複数のディスク装置１３２、及びスペアディスク１３４のディスクＩＤ毎に、その状態が正常であるか故障であるかが記憶される。さらに、故障復旧中、未使用等の状態も格納される。尚、ここで、ディスク装置が正常であるとは、ディスク装置１３２、又はスペアディスクを用いている場合には、ディスク装置１３４の各々からデータ読出が可能であることを意味し、故障とは、ディスク装置１３２，１３４自体が故障して、データ読出が不可能である場合のみならず、ディスクインターフェース１３１，１３３やデータ転送経路の障害等により、ディスク装置１３２，１３４から、コントローラ１１０がデータを読み出し又は書き込みの実行が出来ない全ての場合を意味している。
【００２３】
冗長構成管理テーブル１２６には、図５に示すように、ホスト計算機１００から一つの論理ディスクユニットとして扱われるＬＵ（Logical Unit）についての情報が記憶される。この実施形態では、ＬＵとして、ＬＵ０、ＬＵ１、ＬＵ２、ＬＵ３等が設定されている。各ＬＵ毎の情報としては、当該ＬＵを構成するディスク装置１３２，１３４のＲＡＩＤ構成を示すディスク構成欄６０１と、当該ＬＵを構成するディスク装置１３２，１３４のＩＤが格納されるＩＤ欄６００と、最大何台のディスク装置が故障してもＬＵに格納されているデータを復元できるかを示す最大冗長度が指定されたパリティ構成欄６０２と、障害時に本発明による高速リカバリを実施するかどうかを判定する欄６０３がある。なお、ＬＵを構成する複数のディスク装置１３２，１３４のうち、いずれかが故障した場合、同じＬＵに属する他のディスク装置１３２，１３４に格納されているデータから、故障したディスク装置に格納されていたデータを復元できる。従って、ＬＵを構成する複数のディスク装置１３２，１３４のうち、最大冗長度分のディスク装置１３２，１３４に故障が生じても、ＬＵのデータを復元することができる。
【００２４】
図５に示す例では、冗長構成管理テーブル１２６には、ＩＤ欄６００に示されたＬＵ０，ＬＵ１、ＬＵ３〜ＬＵ６は、ディスク構成欄６０１に示されるとおり、ＲＡＩＤ５の構成を取り、ＬＵ２は、ＲＡＩＤ１の構成を取る。その際のデータとパリティの構成は、パリティ構成欄６０２に示されており、例えば、ＬＵ１は６Ｄ＋２Ｐの構成を持つことが記載されている。本実施例では、本発明が適用されるＲＡＩＤ５構成を用いている場合を説明するが、本発明に対応しない、例えば、ミラーリングを用いたＬＵが混在していても構わない。その場合にも、そのＬＵの冗長化に関する制御の指示は、この高速回復機能を示す欄６０３に指定され、ミラーされている領域については、本発明は適用されない。
【００２５】
尚、高速回復機能を示す欄６０３を含む各欄は、いずれもホスト計算機１００又は保守員からの保守端末１０３を用いた指示から指示を与えることで変更することができる。この指示は、ホスト計算機１００とディスクアレイ装置のホストＩ／Ｆ経由で行うことも出来るし、ディスクアレイ装置の保守端末１０３や管理用ネットワーク等から実施することも出来る。また、保守端末からのインターフェースを用いて管理サーバ等の保守機能を持つサーバから、ストレージ装置１０１の設定を一括して管理することもできる。
【００２６】
ＬＵ構成管理テーブル１２７には、図６に示すように、各ＬＵ毎に、各ＬＵを構成するディスク装置１３２，１３４のデータに対して読出要求があった際に、当該ＬＵを構成する複数のディスク装置１３２，１３４のうち、データ読出対象となるディスク装置１３２のＩＤ（ｄ０，ｄ１，…，ｄ７，ｓｐ）が格納される。ｄ０，ｄ１，…，ｄ７は、ディスク装置１３２のＩＤであり、ｓｐはスペアディスク１３４のＩＤである。このＬＵ構成管理テーブル１２７では、例えば、ＬＵ０に関して、このＬＵ０を構成する複数のディスク装置ｄ０〜ｄ５のいずれかに格納されているデータに対して、読取要求があった場合には、ディスク装置ｄ０〜ｄ５，ｄ６〜ｄ７からデータ読出を行えばよいことを示している。このＬＵ構成管理テーブル１２７内のデータは、ホスト計算機１００からの設定、保守端末１０３からの設定、又は障害検出時のスペアディスクへのデータ移動などの契機で更新される。例えば、ディスク装置ｄ０が故障して、スペアディスクｓｐが使われた場合、スペアディスクへのデータの回復と移動が終了した時点で当該テーブルのｄ０の指定がｓｐに書き換えられる。
【００２７】
ここで、ＬＵの内部のデータ構成例について、６Ｄ＋２Ｐと呼ばれるＲＡＩＤ構成を用いた場合を、図７を用いて説明する。
【００２８】
例えば、ＬＵ０に関しては、このＬＵ０を構成するディスク装置ｄ０には、ストライプＤ０，Ｄ７，Ｄ１４，Ｄ２１，…が割り当てられ、このＬＵ０を構成するディスク装置ｄ１には、ストライプＤ１，Ｄ８，Ｄ１５，Ｄ２２，…が割り当てられ、このＬＵ０を構成するディスク装置ｄ２には、ストライプＤ２，Ｄ９，Ｄ１６，Ｄ２３，…が割り当てられ、このＬＵ０を構成するディスク装置ｄ３には、ストライプＤ３，Ｄ１０，Ｄ１７，Ｐ３，…が割り当てられ、等々となっている。即ち、この例において、データは、Ｄ０，Ｄ１，Ｄ２，…の順に、ディスク装置ｄ０〜ｄ７を巡回するように格納される。
【００２９】
また、このＬＵ０を構成するディスク装置には、２つのパリティＰ，Ｑもディスク装置ｄ０〜ｄ７を巡回するように格納される。パリティＰ０，Ｑ０は、ストライプＤ０〜Ｄ５に保持されたデータから公知の計算式によって計算される冗長データである。Ｐ１，Ｐ２，…，Ｐ７，Ｑ１，Ｑ２，…，Ｑ７も同様である。このように、一つのＬＵ中のデータを構成するデータディスクとパリティディスクの横一列を、本実施例では、以下、パリティ列と呼び、ＲＡＩＤ５構成に伴い、パリティが巡回したひとまとまりをストライプセットと呼ぶ。また、ここのデータ又はパリティＤ０等をストライプと呼ぶ。
【００３０】
このように、ＬＵ０に関しては、各パリティ列に対して巡回する２台のディスク装置にそれぞれパリティＰ，Ｑが格納され、公知の計算式によって、ＬＵ０を構成する複数のディスク装置ｄ０〜ｄ７のうちの最大で２台が故障しても、故障したディスク装置のデータを復元することができる。二台のパリティを生成し、二台の故障時にデータを回復するための計算式は幾つか知られている。
【００３１】
尚、ここでは、１つのストライプに対するパリティＰ，Ｑの数と最大冗長度の数とが一致しているが、１つのストライプに対するパリティＰ，Ｑの数と最大冗長度の数とは必ずしも一致しない。例えば、排他的論理和の式構成によっては、仮に、１つのストライプに対するパリティが３つあっても、最大冗長度が２の場合もある。また、ＬＵ単位でパリティドライブを一つＰとした構成と、本発明の実施例でこれまで説明してきたパリティドライブをＰ，Ｑの二台とした構成を混在させるよう構成しても良いが、本発明の高速化はパリティドライブ二台又はそれ以上としたＬＵのみで実現可能である。
【００３２】
また、以上では、パリティＰ，Ｑが格納されるディスク装置は、ＬＵ単位に固定的なものとして説明したが、固定的であるが、ＲＡＩＤのレベル５の構成のように可変であってもよい。具体的には、図９に示すように、パリティＰ，Ｑが格納されるディスク装置が巡回するように、各ディスク装置にパリティＰ，Ｑを分散格納してもよい。
【００３３】
次に、以上で説明したストレージ装置のデータ読出時の動作について、図２を用いて説明する。
【００３４】
データ読み出しは、ホスト計算機１００からのＲＥＡＤコマンド受け取りによって開始される。ＲＥＡＤコマンドは、まずホストＩ/Ｆ１０２で受信され（Ｓ２０１）、コントローラのＣＰＵ１１１に伝えられる。ＣＰＵ１１１は、まず、キャッシュメモリ１２１に要求データが存在するかを調べ（Ｓ２０２）、要求データがキャッシュメモリ１２１に存在する場合（Ｓ２０２；ＹＥＳ）、ＣＰＵ１１１は、そのデータをキャッシュメモリ１２１から呼び出してホスト計算機１００へ転送する（Ｓ２０３）。
【００３５】
また、ホスト計算機１００から要求されたデータがキャッシュメモリ１２１に存在しない場合には（Ｓ２０２；ＮＯ）、要求されるデータを格納したディスク装置１３２，１３４からデータを読み出し、キャッシュメモリ１２１に格納するとともに、ホストインターフェース１０２経由でホスト計算機１００にデータを送出する（Ｓ２０４）。具体的には、ＣＰＵ１１１は、まず、ＬＵ構成管理テーブル１２７を参照して、要求データが格納されている該当ＬＵの欄からデータ読出対象ディスク装置を把握する。次に、このデータ読出対象ディスク装置からデータの読出を実行し、データ読出に成功したデータをキャッシュメモリ１２１に格納する。ディスクインターフェース１３２が実際にディスク装置１３２、１３４からデータを読み出す場合には、各ディスク毎に決まった読み出し単位(例えば、３２キロバイト)で読み出しを実施する。本実施例では、これはパリティ列のデータ長とするが、その整数倍又は整数分の１であってもよい。キャッシュメモリ１２１の管理単位は、本実施例では、上記の読み出し単位とするが、こちらに関してもその整数倍又は整数分の１であってもよい。後者を用いた場合には、必要な回数読み出しを繰り返して実施し、キャッシュにデータを書き込んでキャッシュのデータが有効であることをメモリ１２０の管理領域に書き込むことで反映し、そのデータの中からホスト計算機１００から要求された部分をホスト計算機１００に送信する。上記の読み出し単位、キャッシュの管理単位は大きく取った場合、ディスクから読んだデータの利用効率が低下するため、ランダムアクセス性能が低下する。ここでは、両方ともストライプセットサイズの数分の一以下であるとする。
【００３６】
このデータ読出中、ＣＰＵ１１１は読出対象ディスク装置からのデータ読出が全て成功したか否かを調べる。この処理の際、ディスク装置１３２、１３４が故障しており、読み出すことが出来なかった場合には（Ｓ２０５；ＹＥＳ）、冗長データを格納したパリティドライブからデータを読み出し、データの復元/訂正を行った後（Ｓ２０７，Ｓ２０８）に、キャッシュメモリ１２１にデータを格納する（Ｓ２０６）。このデータ読出に成功したか否かの判断は、ディスクインターフェース１３１からエラー応答を受信したか否か、又は、予め定められた時間以内にデータを読み出せたか否かにより行われる。読出対象ディスク装置のうちのいずれかからの読出が失敗であった場合、ＣＰＵ１１１はデータ転送部１１２中のパリティ生成部１１４の機能を用いて、データの訂正を行い訂正後のデータをキャッシュメモリに格納する。また、冗長度を超えるドライブが障害となっていてデータの回復が不可能であった場合には（Ｓ２０７；ＮＯ）、ＣＰＵ１１１はホスト計算機１００に対してエラーを報告する（Ｓ２１０）。この際に、ホスト計算機１００から要求されているデータ部で障害が発生していない場合には、ホスト計算機１００に要求されたデータを応答した後残りの部分を訂正する処理を行うよう構成すると良い。また、ディスク装置１３２、１３４障害等による転送失敗が発生し、ＣＰＵ１１１あるいはホストインターフェース１０２がそれを検知した場合、必要に応じてリトライ動作を行ってもよい。また、ここではＣＰＵ１１１がデータ転送の指示を行いホストに応答する処理を行うよう記載しているが、インターフェース１０２、１３１、コントローラ１０１内部のＬＳＩ等で一部処理を肩代わりする構成としてもよい。また、パリティ生成部１１４の機能をＣＰＵ１１１で肩代わりする、又はパリティ生成部１１４をデータ転送部１１２ではなくＣＰＵ１１１が内蔵する構成をとっても良い。
【００３７】
また、ディスク装置１３２、１３４で障害を検出した場合、上記の通りＣＰＵ１１１は訂正処理と、ホスト計算機１００に対する応答処理を実施するが、ＣＰＵ１１１は空き時間に障害となったディスク装置１３２を切り離し、スペアドライブ１３４で代替する処理を行い（Ｓ２０９）、ディスク装置の多重障害でデータが失われることが無いよう冗長度を回復する。この処理は、ホスト計算機１００への応答とは独立に、ストレージシステム１０１の性能の劣化を最小限に止めるよう空き時間を使って実行される。
【００３８】
上記のデータの復元・訂正の際に用いる訂正の計算式は、公知である。この復元処理では、冗長データとしてのパリティデータを用いる場合、仮に、図８に示すＬＵ０のストライプＤ０に格納されたデータを復元する場合には、パリティＰ０，Ｐ１，Ｐ２，Ｐ３又はＱ０，Ｑ１，Ｑ２，Ｑ３の他に、ストライプＤ１〜Ｄ３に格納されているデータを用いる。また、図８に示すＬＵ３の１００のデータに関しては、その冗長データであるＭ１００のデータがキャッシュメモリ１２１に存在していれば、このＭ１００のデータがストライプＤ１００のデータであるため、直ちに、データ転送が実行される。この復元、訂正処理の詳細な手順を、以下図８を用いて説明する。
【００３９】
ここで、対象となるＬＵを一つとり、このＬＵはディスク装置１３２中で、データディスク６台ｄ０〜ｄ７が６つのデータと、２つのパリティＰ，Ｑをパリティグループとして有し、対応するスペアディスク領域はＳ６であるとする。また、データ領域ｄ７を含むドライブが故障したものとする。上記スペアドライブ１３４での代替処理は、故障したＤ７の領域のデータをＳ４に移動し、冗長構成管理テーブル１２６を書き換えてスペアドライブと残り５台のディスク装置１３２によりパリティグループを構成するように変更するという一連の処理である。この場合、ｄ７に格納されていたデータは残りの５台のディスク装置ｄ６、ｄ８，ｄ９、ｄ１０、ｄ１１、パリティディスクＰ、Ｑのうちの少なくとも５台を読み出すことによってｄ７に格納されていたデータを訂正により再生成し、そのデータをスペアドライブＳ６に格納する。
【００４０】
ここで述べているように、ｄ７に格納されたデータを回復するためには最低５台のデータがあれば良く(冗長度が２であるため)、５台のディスク装置ｄ６、ｄ８，ｄ９、ｄ１０、ｄ１１、パリティディスクＰ、Ｑのすべてを読み込む必要はない。一方、現在広く用いられているディスクアレイ装置では、冗長度を１と設定しているものが多く、その場合は故障していないディスク装置(データ及びパリティを格納した)をすべて読み込まねばならず、この訂正のための読み出し処理の際、従来技術では、読み出すディスク装置を分散させるという考え方はなかった。具体的には、従来はパリティＰのみを用いてデータの回復を行うなどの実装が取られていた。この手法の問題点を、図８を用いて、以下、具体的に説明する。
【００４１】
ホストから要求されたデータが、図８のＤ１４からＤ２８までであるとする。この場合、ｄ１は障害で読むことが出来ないから、Ｐを用いてｄ１に格納されているデータの復元処理を行ったとする。この場合の読み出し対象は、ストライプセットの一部であるため、パリティの分散が十分には働かず、ディスクの読み出し回数に差が出てしまう。例えば、ｄ３〜ｄ５は２回読み出しを行うのに対して、ｄ０、ｄ２、ｄ６、ｄ７は３回読み出しを行わないと、所定のデータを得ることが出来ず(回復のためＤ１４も読まなければならない)、ディスク利用率に差が出てしまう。さらにランダムアクセスを繰り返す場合、アクセスパターンによりディスクの利用率の偏りが大きく発生してストレージシステム１０１の性能が劣化してしまう。本発明はここを改善するものである。
【００４２】
本発明の好適な実施例として、ここでは読み出すディスク装置をローテートして、ディスク読み出し回数を削減する方法を図９に即して説明する。上記で説明しているように、上記の故障したディスク装置１３２、１３４のデータｄ１を回復させるには、冗長度が２であるため、上記の７台のディスクのうちの６台を読み出せば十分であるが、上記の通り固定的な領域を読み込むようにしていた場合、特にランダムアクセスの場合、十分にディスクの負荷が分散されない。このため、このデータを７台のディスクに分散させて読み出すが、その際に、本実施例では前回のアクセスの際のディスク装置１３２、１３４のアクセス回数と、今回のアクセスの際のディスク装置１３２、１３４のアクセス回数とを比較し、二回目で負荷を均等化することにより平均的に負荷をかけるようにする。具体的には、図９に示すとおり、読まないディスクを順に交代させることによって行う。第一回目のアクセスが先に触れたＤ１４からＤ２８まで、第二回目のアクセスが簡単のため、別ＬＵの同じくＤ１４からＤ２８までであるとする。このとき、第二回目のアクセスもパリティドライブＰのみを用いてデータの回復を図った場合にはｄ０、ｄ２、ｄ６、ｄ７の負荷が高くなってしまうが、先に述べたようにデータの回復のためには任意の６ドライブを読み込めば良いため、図９に灰色で示すデータを読みとるようにすることで、ｄ０、ｄ２、ｄ６の負荷を下げることができる。
【００４３】
以上、基本的な考え方を説明したが、具体的な回復処理手順を、図３を用いて説明する。
【００４４】
回復処理では、障害を起こしているディスク装置(ここではｄ１)の情報が与えられている。ＣＰＵ１１１は、前回のディスクアクセスカウンタ１２８をメモリから読み込む(Ｓ３０１)。このディスクアクセスカウンタ１２８は、ディスク装置１３２，１３４毎に１つ存在するカウンタである。カウンタにディスク装置ｄ１のものが含まれていないことを確認し、含まれていた場合には削除する。次いで、今回分のカウンタ(処理の内部カウンタ)を０クリアする(Ｓ３０２)。次に、読み込んだカウンタを昇順にソートする(Ｓ３０３)。ＬＵが全ディスクを使っているわけではないので、回復に利用可能なディスク装置１３２，１３４からデータを読み込むことを、このソート結果の小さい順から回復に必要なストライプ数の読み込みが終わるまで繰り返し(Ｓ３０４〜Ｓ３１０)、必要なデータが得られたら、ディスクアクセスカウンタ１２８の値を更新して(Ｓ３１１)、パリティ生成部１１４にてデータを計算して訂正・回復する(Ｓ３１２)。ここでは、パリティ列単位に処理を行う手順を示したが、ホストからの要求単位でディスクアクセスカウンタ１２８の値を更新するようにしても良い。また、更に、障害が発生して回復に必要なデータが得られなかった場合であって（Ｓ３１０；ＮＯ）、且つ、ディスク障害が生じている場合は（Ｓ３１３；ＹＥＳ）、本処理は異常終了し、上位アクセスプログラムからホスト計算機１００にエラーが返される。
【００４５】
また、本実施例では、ディスクアクセスカウンタ１２８は、ＬＵ単位でメモリに作成され、要求されたアクセスのアクセス開始後かつ最初の障害検出後、障害回復処理実施前に０クリアされることを想定して処理は記載されているが、アクセス処理の内部での管理方式によってディスクアクセスカウンタ１２８の持ち方は適宜変更すると良い。また、電源オン時に０に初期化、その後は単に前の値を引き継ぐようにしておき、適宜０クリアする実装とすることもできる。
【００４６】
また、本実施例では負荷分散の効果を高めるため全ディスクを用いてデータ回復を図っているが、処理の単純化のため、パリティドライブＰとＱのみを用いて負荷分散を図る処理としても良い。その場合は、上記のディスクアクセスカウンタ１２８をドライブＰ、Ｑのみにもち、障害を起こしていないデータドライブと、パリティドライブを上記処理同様にディスクアクセスカウンタ１２８の値により判断した１台、というデータでデータの回復・訂正を行う構成とすればよい。
【００４７】
上記で説明した本実施例では、必要最小限のドライブ装置１３２、１３４のみを読み出してドライブ装置１３２、１３４の負荷を均等化する方式を例示してきたが、例えばディスク装置がＳＡＴＡドライブなどの信頼性が低いドライブであった場合には、上記の本発明の高速読み出しを抑止するビットを立てる、あるいは制御プログラムで判定するなどの方法ですべてのデータを読み出してエラーチェックを強化する構成とすることも可能である。また、冗長度が３、すなわちパリティドライブをＰ，Ｑ，Ｒの三台用意した構成で、パリティドライブまたはデータドライブを正しいデータを回復するのに必要な数のみ読み出すこと、またはそれに加えて冗長にディスクドライブ数を読み出してデータの検証を行うが、全ディスクは読まずに、かつ読み出すドライブを分散させるような構成を取ることも、および冗長構成管理テーブル中にそのような処理の切替えビットを設けることなども本実施例の内容に即して可能である。
【００４８】
また、本実施例ではスペアディスクに対して上記の分散処理を行うようにはしていないが、これは特にストレージシステム１０１の利用率が高くない場合にはスペアディスクへのデータ移動がストライプセットを超えたデータサイズの転送主体のシーケンシャルアクセスに近くなるためである。ストレージシステム１０１の利用率が高い場合はスペアディスクに対する転送も細切れになることが考えられる。その場合には本発明の負荷分散手法を適用すると良い。
【００４９】
また、本実施例では直前のアクセスでのディスクアクセス回数を記録し、次回アクセス時にその回数を判断して読み込むべきディスクを判定しているが、複数回のアクセス、またはアクセスに対して何らかの統計的処理を行った後の情報を用いて負荷の分散を図る、あるいはあらかじめアクセスパターンを与える、またはストレージ装置が履歴によりアクセスパターンを予測するなどの手法を用いて、読み込むべきディスクを判定するのも良い。
【００５０】
以上発明を実施するための最適な形態について説明してきたが、上記実施の形態は本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明はその趣旨を逸脱することなく変更や改良を行うことができ、本発明にはそのような等価な構成も含まれるものである。
【図面の簡単な説明】
【００５１】
【図１】本発明に係わる一実施形態におけるストレージ装置の構成を示す説明図である。
【図２】本発明に係わる一実施形態におけるストレージ装置で、ホスト計算機からのデータ読み出し時の処理を示す説明図である。
【図３】本発明に係わる一実施形態におけるストレージ装置で、ホスト計算機からのデータ読み出し時の処理を示す説明図である
【図４】本発明に係わる一実施形態におけるストレージ装置で、ホスト計算機からのデータ読み出し時のデータ回復処理を示す説明図である。
【図５】本発明に係わる一実施形態における装置状態管理テーブル構成を示す説明図である。
【図６】本発明に係わる一実施形態における冗長構成管理テーブル構成を示す説明図である。
【図７】本発明に係わる一実施形態におけるＬＵ構成管理テーブル構成を示す説明図である。
【図８】従来の技術を用いたデータ読み出し時のデータ回復で、使われるディスク装置を示す図である。
【図９】本発明に係わる一実施形態におけたデータ読み出し時のデータ回復で、使われるディスク装置を示す図である。
【図１０】本発明に関して、読み出し先パリティを第１パリティに固定してデータ復旧を実施することを示す図である。
【図１１】本発明に関して、読み出し先パリティをステージごとに第１パリティ、第２パリティと交互に繰り返してデータ復旧を実施することを示す図である。
【図１２】本発明に関して、読み出し先パリティをステージごとに第１パリティ、第２パリティの読み出し回数を最適化することで、データ復旧を実施することを示す図である。
【符号の説明】
【００５２】
１００…ホスト装置  １０１…ストレージ装置  １０２…ホストＩ／Ｆ  １０３…保守端末  １１０…コントローラ  １１１…ＣＰＵ  １１２…データ転送部  １１３…ディスク制御部  １１４…パリティ生成部  １２０…ローカルメモリ  １２１…キャッシュメモリ  １２５…装置状態管理テーブル  １２６…冗長構成管理テーブル  １２７…ＬＵ構成管理テーブル  １２８…ディスクアクセスカウンタ  １３１…ディスクＩ／Ｆ  １３２…ディスク装置
【図１】
2006260446.tif 000003
【図２】
2006260446.tif 000004
【図３】
2006260446.tif 000005
【図４】
2006260446.tif 000006
【図５】
2006260446.tif 000007
【図６】
2006260446.tif 000008
【図７】
2006260446.tif 000009
【図８】
2006260446.tif 000010
【図９】
2006260446.tif 000011
【図１０】
2006260446.tif 000012
【図１１】
2006260446.tif 000013
【図１２】
2006260446.tif 000014