(57)【特許請求の範囲】
【請求項１】
冗長性のある複数のディスクからなるディスクアレイを制御するディスクアレイ制御装置において、
前記ディスクアレイを構成するディスクのメディアエラーを検出するメディアエラー検出手段と、
前記メディアエラーが、単一のメディアエラーであるか、又はメディアエラー群かを判定するメディアエラー管理手段と、
前記メディアエラーが単一のメディアエラーの場合には、セクタ毎にエラー修復を行い、前記メディアエラーがメディアエラー群の場合には、所定単位のデータの再構築を行うエラー修復手段と
を備えることを特徴とするディスクアレイ制御装置。
【請求項２】
前記ディスクアレイは、データを複数のディスクに分散して記録すると共に、前記複数のディスクにより求められたパリティをディスクに記録するように構成されており、
前記エラー修復手段は、前記所定単位として、前記複数のディスクにデータを分散して記録する際の単位でデータの再構築を行う
ことを特徴とする請求項１に記載のディスクアレイ制御装置。
【請求項３】
前記ディスクアレイは、ＲＡＩＤレベル５の構成とされ、
前記エラー修復手段は、前記複数のディスクにデータを分散して記録する際の単位として、ストライプ単位でデータの再構築を行う
ことを特徴とする請求項２に記載のディスクアレイ制御装置。
【請求項４】
前記メディアエラー管理手段は、メディアエラーが複数セクタ連続するかどうかを検出して、単一のメディアエラーであるか又はメディアエラー群かを判定することを特徴とする請求項１に記載のディスクアレイ制御装置。
【請求項５】
前記メディアエラー管理手段は、メディアエラーが２セクタ以上連続したら、メディアエラー群が発生していると判定することを特徴とする請求項４に記載のディスクアレイ制御装置。
【請求項６】
複数のディスクからなるディスクアレイを制御するディスクアレイ制御方法において、
前記ディスクアレイを構成するディスクのメディアエラーを検出する工程と、
前記メディアエラーが、単一のメディアエラーであるか、又はメディアエラー群が発生しているかを判定する工程と、
前記メディアエラーが単一のメディアエラーの場合には、セクタ毎にエラー修復を行い、前記メディアエラーがメディアエラー群の場合には、所定単位のデータの再構築を行う工程と
を含むことを特徴とするディスクアレイ制御方法。
【請求項７】
複数のディスクからなるディスクアレイを制御するためのディスクアレイ制御プログラムにおいて、
前記ディスクアレイを構成するディスクのメディアエラーを検出するステップと、
前記メディアエラーが、単一のメディアエラーであるか、又はメディアエラー群が発生しているかを判定するステップと、
前記メディアエラーが単一のメディアエラーの場合には、セクタ毎にエラー修復を行い、前記メディアエラーがメディアエラー群の場合には、所定単位のデータの再構築を行うステップと
を含むことを特徴とするコンピュータで実行可能なディスクアレイ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、冗長性のある複数のハードディスクを用いたディスクアレイの制御を行うディスクアレイ制御装置及びこのようなディスクアレイを制御するためのディスクアレイ制御方法、ディスクアレイ制御プログラムに関する。
【背景技術】
【０００２】
ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）は、冗長性のある複数のハードディスクを論理的に組み合わせることで、アクセス速度の向上やフォールトトレランスの向上を図るようにしたディスクアレイシステムである。ＲＡＩＤの構成としては、ＲＡＩＤレベル０からレベル５が定義されている。ＲＡＩＤレベル０は、データを複数のディスクに分散して記録するストライピングである。ＲＡＩＤレベル１は、複数台のディスクに同時に同じ内容を記録するミラーリングである。ＲＡＩＤレベル２は、専用のエラー訂正用ドライブを設けるものである。ＲＡＩＤレベル３は、ビット単位での専用のパリティドライブを設けるものである。ＲＡＩＤレベル４は、ブロック単位での専用のパリティドライブを設けるものである。ＲＡＩＤレベル５は、ＲＡＩＤレベル０と同様に、データを複数のディスクに分散して格納するストライピングを行い、さらに、パリティを分散して記録するものである。ＲＡＩＤの構成については、例えば特許文献１等に記載されている。
【０００３】
図５は、ＲＡＩＤを構成する場合のコンピュータシステムの構成を示すブロック図である。
【０００４】
図５に示すように、ＲＡＩＤシステムを実現する場合には、ディスクアレイ１１１とホストコンピュータ１１３との間に、ディスクアレイコントローラ１１２が設けられる。図５において、ディスクアレイ１１１は、例えば３個のハードディスクＨＤＤ１０１〜ＨＤＤ１０３から構成される。ディスクアレイコントローラ１１２は、ディスクアレイ１１１を制御するためのコントローラである。
【０００５】
このような構成において、例えばディスクアレイ１１１をＲＡＩＤレベル５の構成とすると、データ読み出し時にメディアエラーが生じた場合に、他のディスクのデータ及びパリティを用いることで、データを修復することができる。
【０００６】
図６は、このようなＲＡＩＤレベル５で、データ読み出し時にデータ修復を行う場合の処理の一例を示すフローチャートである。
【０００７】
図６において、ディスクアレイコントローラ１１２がホストコンピュータ１１３から読み出し命令を受信すると（ステップＳ１０１）、ディスクアレイコントローラ１１２は、ハードディスク（例えばハードディスクＨＤＤ１０１）のセクタのデータの読み出しを行い（ステップＳ１０２）、メディアエラーが発生しているか否かを判定する（ステップＳ１０３）。ステップＳ１０３で、メディアエラーが検出されない場合には、ディスクアレイコントローラ１１２は、ハードディスクから読み出されたデータを、ホストコンピュータ１１３に返す（ステップＳ１０５）。
【０００８】
ステップＳ１０３で、メディアエラーが発生していると判定された場合には、ディスクアレイコントローラ１１２は、ディスクアレイ１１１を構成する他のディスク（例えばハードディスクＨＤＤ１０２及びＨＤＤ１０３）のデータ及びパリティの読み出しを行い、これを用いて、所望のディスク（例えばハードディスクＨＤＤ１０１）のセクタのデータの修復を行う（ステップＳ１０４）。そして、ディスクアレイコントローラ１１２は、修復された１セクタ分の読み出しデータを、ホストコンピュータ１１３に返す（ステップＳ１０５）。そして、ディスクアレイコントローラ１１２は、データの読み出しが全て完了したか否かを判定し（ステップＳ１０６）、データの読み出しが全て完了していなければ、次のアドレスに進めて（ステップＳ１０７）、ステップＳ１０２にリターンする。以下、ステップＳ１０６で、所望の要求データの読み出しが全て完了したと判定されるまで、同様の処理が繰り返される。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１０−２０８４０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述のように、ＲＡＩＤレベル５では、メディアエラーが生じた場合に、ディスクアレイを構成する他のディスクのデータ及びパリティを用いることで、セクタ毎にデータを修復することができる。しかしながら、このようなセクタ毎のデータ修復では、連続したメディアエラーが群が発生したような場合には、ディスクアレイコントローラ１１２における負荷が大きくなり、データ再構築に時間がかかるという問題がある。このため、ホストコンピュータ１１３で実行される上位ソフトウェアにてタイムアウトが発生し、結果としてシステムダウンに陥るケースがある。
【００１１】
例えば、図７（Ａ）〜図７（Ｃ）に示すように、ディスクアレイ１１１がハードディスクＨＤＤ１０１〜ＨＤＤ１０３から構成されており、図７（Ａ）に示すように、ハードディスクＨＤＤ１０１に、１２Ｋバイトのサイズのメディアエラー群が発生しているとする。このような環境下で、ホストコンピュータ１１３からディスクアレイコントローラ１１２に、ハードディスクＨＤＤ１０１の４Ｋバイトの読み出し命令が送られてきたとする。なお、ここで、図７（Ｄ）に示すように、セクタの大きさは５１２バイトである。図７（Ａ）〜図７（Ｃ）に示すように、ストライプサイズは６４Ｋバイトであるとする。ディスクアクセスの基本単位である１セクタは５１２バイトなので、図７（Ｄ）に示すように、４Ｋバイトの読み出し命令は、アドレスＮからアドレス（Ｎ＋７）までの８セクタのデータの読み出しとなる。
【００１２】
図６に示したような処理フローに従って、データ読み出し時に、セクタ毎にデータ修復処理が行われると、図８にシーケンス図で示すような処理が行われることになる。
【００１３】
図８において、ホストコンピュータ１１３からディスクアレイコントローラ１１２に、ハードディスクＨＤＤ１０１の４Ｋバイトの読み出し命令が送られると（プロセスＰ１０１）、ディスクアレイコントローラ１１２は、ハードディスクＨＤＤ１のアドレスＮのセクタの読み出しを行う（プロセスＰ１０２）。
【００１４】
ここで、図７（Ａ）に示したように、ハードディスクＨＤＤ１０１は、１２Ｋバイトのサイズのメディアエラー群が発生している。よって、このデータはエラーとなり、メディアエラーが検出される（プロセスＰ１０３）。このため、ディスクアレイコントローラ１１２は、ハードディスクＨＤＤ１０２とハードディスクＨＤＤ１０３の対応するセクタの読み出しを行う（ステップＳ１０４ａ、Ｓ１０４ｂ）。そして、ハードディスクＨＤＤ１０２とハードディスクＨＤＤ１０３から読み出されたデータ及びパリティを用いて、ハードディスクＨＤＤ１０１のアドレスＮのセクタのデータを修復する（ステップＳ１０５）。そして、ディスクアレイコントローラ１１２は、修復されたアドレスＮのセクタの読み出しデータを、ホストコンピュータ１１３に返す（ステップＳ１０６）。
【００１５】
次に、ディスクアレイコントローラ１１２は、ハードディスクＨＤＤ１０１のアドレス（Ｎ＋１）のセクタの読み出しを行う（プロセスＰ１０７）。ハードディスクＨＤＤ１０１には、１２Ｋバイトのサイズのメディアエラー群が発生しているので、このデータもエラーとなり、メディアエラーが検出される（プロセスＰ１０８）。このため、ディスクアレイコントローラ１１２は、ディスクアレイ１１１を構成する他のハードディスクＨＤＤ１０２及びハードディスクＨＤＤ１０３の対応するセクタの読み出しを行う（プロセスＰ１０９ａ、Ｐ１０９ｂ）。そして、ディスクアレイ１１１を構成する他のハードディスクＨＤＤ１０２及びハードディスクＨＤＤ１０３から読み出されたデータ及びパリティを用いて、ハードディスクＨＤＤ１０１のアドレス（Ｎ＋１）のセクタのデータを修復する（プロセスＰ１１０）。そして、ディスクアレイコントローラ１１２は、修復されたアドレスＮのセクタの読み出しデータを、ホストコンピュータ１１３に返す（プロセスＰ１１１）。以下、アドレス（Ｎ＋７）のデータの読み出しまで、同様の処理が繰り返される。
【００１６】
このように、図６に示したような処理の流れに従って、読み出し時にデータ修復処理が行われると、メディアエラー群が発生した場合に、図８に示すように、セクタ毎のデータの修復が行われることになる。この場合、ディスクアレイコントローラ１１２は、ハードディスクＨＤＤ１０１のセクタを読み出した後、セクタデータの修復のために、他の２台分のハードディスクＨＤＤ１０２及びＨＤＤ１０３の読み出しを行っており、１セクタの読み出しに、３台分の読み出しが行われる。したがって、８セクタ（４Ｋバイト）分の読み出しを行う際のディスクアレイコントローラ１１２で処理する命令数は、（８セクタの読み出し命令×３台分＝２４命令）となる。
【００１７】
このように、セクタ毎のデータ修復では、メディアエラーが群発生したような場合には、ディスクアレイコントローラにおける負荷が大きくなり、データ再構築に時間がかかる場合がある。
【００１８】
なお、特許文献１には、連続エラーと判定された場合に、通常のデータエラー応答ではなくハードエラー応答として、上位装置にデータリカバリーを行うように促すことが記載されている。しかしながら、特許文献１では、ディスクの全面読み出しを行ってデータリカバリーを行うため、リカバリー時間が長くかかり、リカバリーの最中では、他の処理を行えない。
【００１９】
上述の課題を鑑み、本発明の目的は、連続したメディアエラーが群発生したような場合に、ディスクアレイコントローラの負荷を軽減できるようにしたディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２０】
上述の課題を解決するために、本発明は、冗長性のある複数のディスクからなるディスクアレイを制御するディスクアレイ制御装置において、ディスクアレイを構成するディスクのメディアエラーを検出するメディアエラー検出手段と、メディアエラーが、単一のメディアエラーであるか、又はメディアエラー群かを判定するメディアエラー管理手段と、メディアエラーが単一のメディアエラーの場合には、セクタ毎にエラー修復を行い、メディアエラーがメディアエラー群の場合には、所定単位のデータの再構築を行うエラー修復手段とを備えることを特徴とする。
【００２１】
本発明は、複数のディスクからなるディスクアレイを制御するディスクアレイ制御方法において、ディスクアレイを構成するディスクのメディアエラーを検出する工程と、メディアエラーが、単一のメディアエラーであるか、又はメディアエラー群が発生しているかを判定する工程と、メディアエラーが単一のメディアエラーの場合には、セクタ毎にエラー修復を行い、メディアエラーがメディアエラー群の場合には、所定単位のデータの再構築を行う工程とを含むことを特徴とする。
【００２２】
本発明は、複数のディスクからなるディスクアレイを制御するためのディスクアレイ制御プログラムにおいて、ディスクアレイを構成するディスクのメディアエラーを検出するステップと、メディアエラーが、単一のメディアエラーであるか、又はメディアエラー群が発生しているかを判定するステップと、メディアエラーが単一のメディアエラーの場合には、セクタ毎にエラー修復を行い、メディアエラーがメディアエラー群の場合には、所定単位のデータの再構築を行うステップとを含むことを特徴とする。
【発明の効果】
【００２３】
本発明によれば、冗長性のある複数のディスクからディスクアレイのデータ修復を行う際に、単一のメディアエラーかメディアエラー群かを検出し、単一のメディアエラーが発生している場合には、セクタ毎にメディア修復を行い、メディアエラー群が発生した場合には、ストライプの再構築を行っている。これにより、メディアエラーが発生した場合の修復時間を短縮でき、ディスクアレイの負荷の軽減を図ることができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の第１の実施形態に係るコンピュータシステムの構成を示すブロック図である。
【図２】本発明の第１の実施形態に係るディスクアレイコントローラのメディアエラーの修復処理の概要を示すフローチャートである。
【図３】本発明の第１の実施形態に係るディスクアレイコントローラのメディアエラーの修復処理の動作環境の説明図である。
【図４】本発明の第１の実施形態に係るディスクアレイコントローラのメディアエラーの修復処理の説明に用いるシーケンス図である。
【図５】ＲＡＩＤを構成する場合のコンピュータシステムの構成を示すブロック図である。
【図６】ＲＡＩＤを構成するディスクアレイコントローラでセクタ毎にデータの修復を行う場合の説明に用いるフローチャートである。
【図７】ＲＡＩＤを構成するディスクアレイコントローラでセクタ毎にデータの修復を行う場合の動作環境の説明図である。
【図８】ＲＡＩＤを構成するディスクアレイコントローラでセクタ毎にデータの修復を行う場合の処理の説明に用いるシーケンス図である。
【発明を実施するための形態】
【００２５】
以下、本発明の実施の形態について図面を参照しながら説明する。図１は、本発明の第１の実施形態に係るコンピュータシステムの構成を示すブロック図である。
【００２６】
図１において、ディスクアレイ１１は、例えば３個のハードディスクＨＤＤ１〜ＨＤＤ３から構成される。ディスクアレイ１１は、ＲＡＩＤレベル５を構成している。ディスクアレイ１１は、ディスクアレイコントローラ１２を介して、ホストコンピュータ１３に接続されている。
【００２７】
ＲＡＩＤレベル５のシステムは、データを複数のディスクに分散して格納するものである。データを分散して格納する際のデータの単位は、ストライプと呼ばれている。ＲＡＩＤレベル５では、さらに、記録時にパリティが求められ、このパリティはシステム内に含まれる全てのディスクにわたって分散して格納される。ＲＡＩＤレベル５では、読み出しデータがエラーの場合には、このパリティを用いて、他のディスクのデータを使って読み出しデータを修復することができる。パリティは、例えば、各ディスクで同じ位置にあるデータのＥＸ−ＯＲ演算により形成される。
【００２８】
ディスクアレイコントローラ１２は、メディアエラー検出部２１と、メディアエラー管理部２２と、エラー修復部２３とを含んでいる。メディアエラー検出部２１は、ディスクアレイ１１を構成するハードディスクＨＤＤ１〜ＨＤＤ３に対する入／出力で発生したメディアエラーを検出する。メディアエラー管理部２２は、メディアエラーの発生が検出された場合に、単一のメディアエラーが発生しているのか、又はメディアエラー群が発生しているかを判定する。
【００２９】
エラー修復部２３は、発生したメディアエラーに対して、単一のメディアエラーか、又はメディアエラー群かに応じて、データの修復処理を行うようにしている。すなわち、本発明の第１の実施形態においては、エラー修復部２３は、単一のメディアエラーの場合には、通常のメディアエラー修復と同様に、セクタ毎にエラー修復を行い、メディアエラー群が発生した場合には、当該セクタを含むストライプの再構築を実行して、データの再読み出しを行う。ここで、ストライプは、ＲＡＩＤでデータを複数のディスクに分散して記録する際の単位である。
【００３０】
このように、本発明の第１の実施形態では、単一のメディアエラーかメディアエラー群かを検出し、単一のメディアエラーが発生している場合には、通常のメディアエラー修復と同様に、セクタ毎にメディア修復を行い、メディアエラー群が発生した場合には、ストライプの再構築を行っている。これにより、メディアエラーが発生した場合の修復時間を短縮でき、ディスクアレイの負荷の軽減を図ることができる。
【００３１】
図２は、ディスクアレイコントローラ１２でのメディアエラーの修復処理の概要を示すフローチャートである。
【００３２】
図２において、ディスクアレイコントローラ１２がホストコンピュータ１３からディスクの読み出し命令を受信すると（ステップＳ１）、ディスクアレイコントローラ１２は、所望のディスク（例えばハードディスクＨＤＤ１）のセクタのデータの読み出しを行い（ステップＳ２）、ディスクアレイコントローラ１２のメディアエラー検出部２１は、メディアエラーが発生しているか否かを判定する（ステップＳ３）。
【００３３】
ステップＳ３で、メディアエラーが発生していない場合には、ディスクアレイコントローラ１２は、データの読み出しが全て完了したか否かを判定し（ステップＳ４）、データの読み出しが全て完了していなければ、次のアドレスに進めて（ステップＳ５）、ステップＳ２にリターンする。
【００３４】
ステップＳ４で、データの読み出しが全て完了したと判定されると、ディスクアレイコントローラ１２は、ステップＳ４で取得された読み出しデータをホストコンピュータ１３に返し（ステップＳ６）、処理を終了する。
【００３５】
ステップＳ３で、メディアエラーの発生が検出されると、ディスクアレイコントローラ１２のメディアエラー管理部２２は、単一のメディアエラーか又はメディアエラー群かを判定する（ステップＳ７）。ここでは、メディアエラー管理部２２は、メディアエラーが１セクタなら単一のメディアエラーと判定し、メディアエラーが２セクタ以上続いた時点でメディアエラー群が発生していると判定している。
【００３６】
ステップＳ７で、単一のメディアエラーであると判定された場合には、ディスクアレイコントローラ１２のエラー修復部２３は、通常のメディアエラー修復と同様に、セクタ毎にメディア修復を行い（ステップＳ８）、ステップＳ４に処理を進める。すなわち、エラー修復部２３は、ディスクアレイ１１を構成する他のディスク（例えばハードディスクＨＤＤ２及びＨＤＤ３）の対応するセクタのデータ及びパリティの読み出しを行い、これを用いて当該ディスク（例えばハードディスクＨＤＤ１）セクタのデータの修復を行う。
【００３７】
ステップＳ７で、メディアエラー群が発生していると判定された場合には、ディスクアレイコントローラ１２のエラー修復部２３は、当該セクタを含むストライプの修復処理を実行してそのストライプを再構築し（ステップＳ９）、読み出しが要求されたデータの再読み出しを行う（ステップＳ１０）。そして、ディスクアレイコントローラ１２は、読み出されたデータをホストコンピュータ１３に返して（ステップＳ６）、データの読み出し処理を終了する。
【００３８】
このように、本発明の第１の実施形態では、メディアエラー群であると判定された場合には、当該セクタを含むストライプの再構築を行っている。このため、メディアエラー群が発生した場合にディスクアレイコントローラ１２からディスクアレイ１１に送られる命令数が減少し、ディスクアレイコントローラ１２の負荷の軽減を図ることができる。このことについて、以下に実例を挙げて説明する。
【００３９】
例えば、図３（Ａ）〜図３（Ｂ）に示すように、ディスクアレイ１１がハードディスクＨＤＤ１〜ＨＤＤ３から構成されており、図３（Ａ）に示すように、ハードディスクＨＤＤ１に、１２Ｋバイトのサイズのメディアエラー群が発生しているとする。このような環境下で、ホストコンピュータ１３からディスクアレイコントローラ１２に、ハードディスクＨＤＤ１の４Ｋバイトの読み出し命令が送られてきたとする。ここで、セクタの大きさは５１２バイト、ストライプサイズは６４Ｋバイトであるとする。ディスクアクセスの基本単位である１セクタは５１２バイトなので、４Ｋバイトの読み出し命令は、図３（Ｄ）に示すように、アドレスＮからアドレス（Ｎ＋７）までの８セクタのデータの読み出しとなる。なお、このような環境は、図７に示した環境と同様である。
【００４０】
本発明の第１の実施形態では、このような環境下でデータ読み出しが行われると、図４にシーケンス図で示すような処理が行われることになる。
【００４１】
図４において、ホストコンピュータ１３からディスクアレイコントローラ１２に、ハードディスクＨＤＤ１の４Ｋバイトの読み出し命令が送られると（プロセスＰ１）、ディスクアレイコントローラ１２は、ハードディスクＨＤＤ１のアドレスＮのセクタ（５１２バイト）の読み出しを行う（プロセスＰ２）。
【００４２】
ここで、ハードディスクＨＤＤ１は、図３（Ａ）に示すように、１２Ｋバイトのサイズのメディアエラー群が発生している。よって、このデータはエラーとなり、メディアエラーが検出される。このときに検出されたエラーは１セクタなので、ディスクアレイコントローラ１２のメディアエラー管理部２２は、単一のメディアエラーと判定する（プロセスＰ３）。このため、ディスクアレイコントローラ１２のエラー修復部２３は、ディスクアレイを構成する他のハードディスクＨＤＤ２及びハードディスクＨＤＤ３の対応するセクタの読み出しを行い（プロセスＰ４ａ、４ｂ）、ハードディスクＨＤＤ２とハードディスクＨＤＤ３から読み出されたデータ及びパリティを用いて、ハードディスクＨＤＤ１のアドレスＮのセクタのデータを修復する（プロセスＰ５）。
【００４３】
次に、ディスクアレイコントローラ１２は、アドレス（Ｎ＋１）のセクタの読み出しを行う（プロセスＰ６）。ハードディスクＨＤＤ１には、図３（Ａ）に示すように、１２Ｋバイトのサイズのメディアエラー群が発生しているので、このデータもエラーとなり、メディアエラーが検出される。このときには、２つのエラーが続いたので、ディスクアレイコントローラ１２のメディアエラー管理部２２は、メディアエラー群が発生していると判定する（プロセスＰ７）。
【００４４】
この場合には、ディスクアレイコントローラ１２のエラー修復部２３は、当該セクタを含むストライプを再構築するために、ディスクアレイを構成する他のハードディスクＨＤＤ２及びハードディスクＨＤＤ３の対応するストライプ（６４Ｋバイト）の読み出しを行い（プロセスＰ８ａ、Ｐ８ｂ）、ハードディスクＨＤＤ２とハードディスクＨＤＤ３から読み出されたデータ及びパリティを用いて、ハードディスクＨＤＤ１の当該ストライプのデータを再構築し（プロセスＰ９）、再構築してデータをハードディスクＨＤＤ１に書き込む（プロセスＰ１０）。
【００４５】
再構築されたデータがハードディスクＨＤＤ１に書き込まれたら、ディスクアレイコントローラ１２は、ハードディスクＨＤＤ１の４Ｋバイト分のデータの読み出しを再度行い（プロセスＰ１１）、この読み出しデータをホストコンピュータ１３に返す（プロセスＰ１２）。
【００４６】
以上のように、本発明の第１の実施形態では、メディアエラー群が発生した場合には、ディスクアレイ１１を構成するハードディスクＨＤＤ２及びＨＤＤ３からのデータ及びパリティを用いてハードディスクＨＤＤ１のストライプのデータを再構築した後、再度４Ｋバイト分の読み出しを実行し、そのデータをホストコンピュータ１３に返している。この場合に、ディスクアレイコントローラ１２からハードディスクＨＤＤ１〜ＨＤＤ３に向けて実行される命令数は、以下のようになる。
【００４７】
最初のアドレスＮのセクタのデータを読み出して修復する命令（プロセスＰ２、Ｐ４ａ、Ｐ４ｂに相当する）として、（１セクタの読み出し命令×３台分＝３命令）の命令数が必要である。次のアドレス（Ｎ＋１）のセクタのデータを読み出して、メディアエラー群の発生を検出する命令（プロセスＰ６に相当する）として、１命令必要である。当該セクタを含む１ストライプのデータを再構築する命令（プロセスＰ８ａ、Ｐ８ｂに相当する）として、２命令必要である。再構築した１ストライプのデータをハードディスクＨＤＤ１に書き込む命令（プロセスＰ１０に相当する）として、１命令必要である。ハードディスクＨＤＤ１から４Ｋバイトのデータを再読み出しするのに（プロセスＰ１１に相当する）、１命令必要である。よって、命令数の総数は、８命令となる。
【００４８】
図８を用いて説明したように、セクタ毎にデータの修復を行った場合には、同様の環境下で、４Ｋバイトのデータを読み出すのに、２４命令が必要であった。よって、本発明の第１の実施形態では、４Ｋバイトのデータを読み出しで、命令数を約１／３に削減できる。本発明の第１の実施形態による命令数の削減効果は、メディアエラーが群発生している領域に対する読み出し命令のデータのサイズが大きければ大きいほど有効である。
【００４９】
なお、上述の第１の実施形態では、ディスクアレイ１１をＲＡＩＤレベル５の構成としているが、本発明は、このようなディスクアレイの構成に限定されるものではない。
【００５０】
また、上述の第１の実施形態では、メディアエラー群が発生した場合に、ストライプ（ＲＡＩＤでデータを複数のディスクに分散して記録する際の単位）を単位としてデータの再構築を行っているが、メディアエラー群が発生した場合に再構築するデータの単位は、これに限定されるものではない。
【００５１】
本発明は、上述した実施形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。
【符号の説明】
【００５２】
１１：ディスクアレイ
１２：ディスクアレイコントローラ
１３：ホストコンピュータ
２１：メディアエラー検出部
２２：メディアエラー管理部
２３：エラー修復部
【図１】
0005605093.tif 000002
【図２】
0005605093.tif 000003
【図３】
0005605093.tif 000004
【図４】
0005605093.tif 000005
【図５】
0005605093.tif 000006
【図６】
0005605093.tif 000007
【図７】
0005605093.tif 000008
【図８】
0005605093.tif 000009