(57)【要約】【課題】ハードディスクに存在するエラーを早期に発見し、ハードディスクが故障した際の冗長性を保障すること。【解決手段】ハードディスク選択部１１０ｂが、読み取りエラーの発生したハードディスクを優先的に選択し、ベリファイ実行部１１０ｃが、選択されたハードディスクから所定量のデータを読み取り、エラー判定部１１０ｄが、読み取りエラーが発生したかを判定し、読み取りエラーが発生した場合には、交換処理実行部１１０ｅが予備領域を確保し、該予備領域に、対応するデータを記録する。【選択図】        図５
2006004078.tif 000002
【特許請求の範囲】
【請求項１】
複数のディスク装置から順々にデータを読み出し、該ディスク装置の正常性を確認するパトロールを行うディスク制御装置であって、
前記複数のディスク装置のうち、前記パトロール中に読み取りエラーの発生したディスク装置を優先して選択する選択手段と、
前記選択手段が選択したディスク装置からデータを読み取るとともに、読み取りエラーが発生したか否かを判定する判定処理手段と、
を備えたことを特徴とするディスク制御装置。
【請求項２】
前記パトロール中に読み取りエラーの発生したディスク装置を識別するための識別情報を記憶する記憶手段をさらに備え、前記選択手段は、前記記憶手段に記憶された識別情報をもとにして、読み取りエラーの発生したディスク装置を優先して選択することを特徴とする請求項１に記載のディスク制御装置。
【請求項３】
前記選択手段は、前記複数のディスク装置を、前記パトロール中に読み取りエラーの発生したディスク装置を集めたエラーディスクグループと、正常なディスク装置を集めた正常ディスクグループとに分け、前記エラーディスクグループに含まれるディスク装置を全て選択した後に、前記正常ディスクグループに切り替え、前記正常ディスクグループに含まれるディスク装置を１つ選択した後に、前記エラーディスクグループに切り替えることを特徴とする請求項１に記載のディスク制御装置。
【請求項４】
前記選択手段は、前記パトロール中に読み取りエラーの発生したディスク装置に含まれる全データ領域が、読み取りエラーが発生するか否かを一通り判定された後に、次のディスク装置を選択することを特徴とする請求項１に記載のディスク制御装置。
【請求項５】
複数のディスク装置から順々にデータを読み出し、該ディスク装置の正常性を確認するパトロールを行うディスクパトロール方法であって、
前記複数のディスク装置のうち、前記パトロール中に読み取りエラーの発生したディスク装置を優先して選択する選択工程と、
前記選択工程において、選択したディスク装置からデータを読み取るとともに、読み取りエラーが発生したか否かを判定する判定処理工程と、
を含んだことを特徴とするディスクパトロール方法。
【請求項６】
前記選択工程は、前記複数のディスク装置を、前記パトロール中に読み取りエラーの発生したディスク装置を集めたエラーディスクグループと、正常なディスク装置を集めた正常ディスクグループとに分け、前記エラーディスクグループに含まれるディスク装置を全て選択した後に、前記正常ディスクグループに切り替え、前記正常ディスクグループに含まれるディスク装置を１つ選択した後に、前記エラーディスクグループに切り替えることを特徴とする請求項５に記載のディスクパトロール方法。
【請求項７】
前記選択工程は、前記パトロール中に読み取りエラーの発生したディスク装置に含まれる全データ領域が、読み取りエラーが発生するか否かを一通り判定された後に、次のディスク装置を選択することを特徴とする請求項５に記載のディスクパトロール方法。
【請求項８】
複数のディスク装置から順々にデータを読み出し、該ディスク装置の正常性を確認するパトロールを行うディスクパトロールプログラムであって、
前記複数のディスク装置のうち、前記パトロール中に読み取りエラーの発生したディスク装置を優先して選択する選択手順と、
前記選択手順において、選択したディスク装置からデータを読み取るとともに、読み取りエラーが発生したか否かを判定する判定処理手順と、
をコンピュータに実行させることを特徴とするディスクパトロールプログラム。
【請求項９】
前記選択手順は、前記複数のディスク装置を、前記パトロール中に読み取りエラーの発生したディスク装置を集めたエラーディスクグループと、正常なディスク装置を集めた正常ディスクグループとに分け、前記エラーディスクグループに含まれるディスク装置を全て選択した後に、前記正常ディスクグループに切り替え、前記正常ディスクグループに含まれるディスク装置を１つ選択した後に、前記エラーディスクグループに切り替えることを特徴とする請求項８に記載のディスクパトロールプログラム。
【請求項１０】
前記選択手順は、前記パトロール中に読み取りエラーの発生したディスク装置に含まれる全データ領域が、読み取りエラーが発生するか否かを一通り判定された後に、次のディスク装置を選択することを特徴とする請求項８に記載のディスクパトロールプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、複数のディスク装置から順々にデータを読み出し、該ディスク装置の正常性を確認するパトロールを行うディスク制御装置等に関し、特にディスク装置に存在するエラーを早期に発見可能なディスク制御装置、ディスクパトロール方法およびディスクパトロールプログラムに関する。
【背景技術】
【０００２】
従来から、複数のハードディスクを一つの論理ボリュームとして扱うディスクアレイ装置が知られている。このディスクアレイ装置の有するハードディスクは、冗長化構成がなされており、万が一あるハードディスクに故障が発生した場合でも、残りのハードディスクに記録されたデータを利用して、故障が発生したハードディスクのデータを復元することが可能である。
【０００３】
しかしながら、ハードディスクに故障が発生し、残りのハードディスクを利用して、故障したハードディスクのデータを復元する際に、残りのハードディスクに読み取りエラーが発生すると、データを復元することができないという問題がある。
【０００４】
そこで、ディスクアレイ装置は、ホストコンピュータからのアクセスとは別に、各ハードディスクに対して、パトロールと呼ばれるアクセスを行い、周期的に、各ハードディスクから順次データを読み出し、読み出しエラーが発生した場合には、読み出しエラーの発生したデータ領域に代わる予備領域を確保し、該予備領域に、対応するデータを記録し、冗長性を保障している。
【０００５】
なお、特許文献１では、ハードディスクが故障した際に、冗長性の高い別の論理グループから故障代替デバイスを取り込んでデータを復元し、冗長性を回復させる技術が公開されている。
【０００６】
【特許文献１】特開平１０−２６０７８９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の技術では、ハードディスクに存在するエラーを、早期に発見することができず、ハードディスクが故障した場合の冗長性を保障することができないという問題があった。
【０００８】
具体的には、一度読み取りエラーが発生したハードディスクは、複数箇所で読み取りエラーが発生する可能性が極めて高いにも関わらず、従来の技術では、エラーが発生したハードディスクおよび正常なハードディスクに対して優先順位をつけず順番にパトロールを行うため、一度読み取りエラーの発生したハードディスクに存在する可能性の高い、複数のエラーを早期に発見することができない。
【０００９】
そのため、ハードディスクに対するパトロールが十分行われていない段階で、ハードディスクが故障した場合には、冗長性が保障されないため、残りのハードディスクに読み取りエラーが発生した場合には、故障したハードディスクのデータを確実に復元することができない。
【００１０】
また、パトロールは、ホストコンピュータからのデータアクセスに対する競合を避けるために、連続して行うことはできず、読み取りエラーを早期に発見できないという問題をさらに悪化させている。
【００１１】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、ハードディスクに存在するエラーを早期に発見し、ハードディスクが故障した際の冗長性を保障することができるディスク制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するため、本発明は、複数のディスク装置から順々にデータを読み出し、該ディスク装置の正常性を確認するパトロールを行うディスク制御装置であって、前記複数のディスク装置のうち、前記パトロール中に読み取りエラーの発生したディスク装置を優先して選択する選択手段と、前記選択手段が選択したディスク装置からデータを読み取るとともに、読み取りエラーが発生したか否かを判定する判定処理手段と、を備えたことを特徴とする。
【００１３】
また、本発明は、上記発明において、前記パトロール中に読み取りエラーの発生したディスク装置を識別するための識別情報を記憶する記憶手段をさらに備え、前記選択手段は、前記記憶手段に記憶された識別情報をもとにして、読み取りエラーの発生したディスク装置を優先して選択することを特徴とする。
【００１４】
また、本発明は、上記発明において、前記選択手段は、前記複数のディスク装置を、前記パトロール中に読み取りエラーの発生したディスク装置を集めたエラーディスクグループと、正常なディスク装置を集めた正常ディスクグループとに分け、前記エラーディスクグループに含まれるディスク装置を全て選択した後に、前記正常ディスクグループに切り替え、前記正常ディスクグループに含まれるディスク装置を１つ選択した後に、前記エラーディスクグループに切り替えることを特徴とする。
【００１５】
また、本発明は、上記発明において、前記選択手段は、前記パトロール中に読み取りエラーの発生したディスク装置に含まれる全データ領域が、読み取りエラーが発生するか否かを一通り判定された後に、次のディスク装置を選択することを特徴とする。
【００１６】
また、本発明は、複数のディスク装置から順々にデータを読み出し、該ディスク装置の正常性を確認するパトロールを行うディスクパトロール方法であって、前記複数のディスク装置のうち、前記パトロール中に読み取りエラーの発生したディスク装置を優先して選択する選択工程と、前記選択工程において、選択したディスク装置からデータを読み取るとともに、読み取りエラーが発生したか否かを判定する判定処理工程と、を含んだことを特徴とする。
【００１７】
また、本発明は、上記発明において、前記選択工程は、前記複数のディスク装置を、前記パトロール中に読み取りエラーの発生したディスク装置を集めたエラーディスクグループと、正常なディスク装置を集めた正常ディスクグループとに分け、前記エラーディスクグループに含まれるディスク装置を全て選択した後に、前記正常ディスクグループに切り替え、前記正常ディスクグループに含まれるディスク装置を１つ選択した後に、前記エラーディスクグループに切り替えることを特徴とする。
【００１８】
また、本発明は、上記発明において、前記選択工程は、前記パトロール中に読み取りエラーの発生したディスク装置に含まれる全データ領域が、読み取りエラーが発生するか否かを一通り判定された後に、次のディスク装置を選択することを特徴とする。
【００１９】
また、本発明は、上記発明において、複数のディスク装置から順々にデータを読み出し、該ディスク装置の正常性を確認するパトロールを行うディスクパトロールプログラムであって、前記複数のディスク装置のうち、前記パトロール中に読み取りエラーの発生したディスク装置を優先して選択する選択手順と、前記選択手順において、選択したディスク装置からデータを読み取るとともに、読み取りエラーが発生したか否かを判定する判定処理手順と、をコンピュータに実行させることを特徴とする。
【００２０】
また、本発明は、上記発明において、前記選択手順は、前記複数のディスク装置を、前記パトロール中に読み取りエラーの発生したディスク装置を集めたエラーディスクグループと、正常なディスク装置を集めた正常ディスクグループとに分け、前記エラーディスクグループに含まれるディスク装置を全て選択した後に、前記正常ディスクグループに切り替え、前記正常ディスクグループに含まれるディスク装置を１つ選択した後に、前記エラーディスクグループに切り替えることを特徴とする。
【００２１】
また、本発明は、上記発明において、前記選択手順は、前記パトロール中に読み取りエラーの発生したディスク装置に含まれる全データ領域が、読み取りエラーが発生するか否かを一通り判定された後に、次のディスク装置を選択することを特徴とする。
【発明の効果】
【００２２】
本発明によれば、複数のディスク装置のうち、パトロール中に読み取りエラーの発生したディスク装置を優先して選択し、選択したディスク装置からデータを読み取るとともに、読み取りエラーが発生したか否かを判定するので、ディスク装置のエラー箇所を早期に発見することができ、ディスク装置が故障した場合の冗長性を早期に保障することができる。
【００２３】
また、本発明によれば、複数のディスク装置を、パトロール中に読み取りエラーの発生したディスク装置を集めたエラーディスクグループと、正常なディスク装置を集めた正常ディスクグループに分け、エラーディスクグループに含まれるディスク装置に対する読み取りエラーが発生したか否かを判断するので、ディスク装置のエラー箇所を効率よく発見することができ、ディスク装置が故障した場合の冗長性を早期に回復させることができる。
【００２４】
また、本発明によれば、ディスクパトロール中に読み取りエラーの発生したディスク装置に含まれる全データ領域が、読み取りエラー発生するか否かを一通り判定された後に、次のディスク装置を選択し、読み取りエラーが発生したか否かを判断するので、読み取りエラーの発生する可能性が高いディスク装置に対していち早くパトロールを完了することができ、ディスク装置が故障した場合の冗長性を早期に保障することができる。
【発明を実施するための最良の形態】
【００２５】
以下に添付図面を参照して、この発明に係るディスク制御装置、ディスクパトロール方法およびディスクパトロールプログラムの好適な実施の形態を詳細に説明する。
【実施例】
【００２６】
まず、本実施例に係るディスクパトロールの概念について説明する。図１〜３は、本実施例に係るディスクパトロールの概念を説明するための図である。なお、ディスクパトロールとは、周期的に、各ハードディスクから所定量のデータを読み取り、読み取りエラーが発生した場合には、読み取りエラーが発生したデータ領域に代わる領域（以下、予備領域と表記する）を確保し、該予備領域に、対応するデータを記録することである。
【００２７】
図１〜３に示すように、ディスクアレイコントローラ１００は、ハードディスク１０〜４０と接続されている。なお、ここでは説明の便宜上、４台のハードディスク１０〜４０のみを示したが、このディスクアレイコントローラ１００は、任意の台数のハードディスクに接続される。また、図１〜３に示すディスクアレイコントローラ１００は、ハードディスク１０〜４０を用いてＲＡＩＤ（Redundant Array of Inexpensive Disks）を構成している。
【００２８】
図１に示すように、ハードディスク１０〜４０のいずれも読み出しエラーが発生していない場合には、ディスクアレイコントローラ１００は、ハードディスク１０、２０、３０、４０、１０の順に、順次ディスクパトロールを行う。
【００２９】
また、図２に示すように、ハードディスク１０に読み取りエラーが発生し、ハードディスク２０〜４０が正常な場合には、ハードディスク１０に対して重点的にディスクパトロールを行うこととなる。具体的には、ディスクアレイコントローラ１００は、ハードディスク１０に読み取りエラーが発生した場合には、ハードディスク１０、２０、１０、３０、１０、４０、１０の順に、ディスクパトロールを行う。
【００３０】
また、図３に示すように、ハードディスク１０、２０に読み取りエラーが発生し、ハードディスク３０、４０が正常な場合には、ハードディスク１０、２０に対して重点的にディスクパトロールを行うこととなる。具体的に、ディスクコントローラ１００は、ハードディスク１０、２０に読み取りエラーが発生した場合には、ハードディスク１０、２０、３０、１０、２０、４０、１０、２０、３０の順に、ディスクパトロールを行う。
【００３１】
すなわち、ディスクアレイコントローラ１００は、まず、読み取りエラーの発生したハードディスク（以下、エラーディスクと表記する）と、読み取りエラーの発生していないディスク（以下、正常なハードディスクと表記する）とのグループに分ける。
【００３２】
そして、エラーディスクのグループ（エラーディスクグループ）と、正常なハードディスクのクループ（正常ディスクグループ）とを交互に選択し、各グループに含まれるハードディスクに対してディスクパトロールを行うわけであるが、エラーディスクグループを選択した場合には、エラーディスクグループに含まれる全てのディスクに対してパトロールを行った後に、正常ディスクグループに含まれるハードディスクを選択してパトロールを行うのに対し、正常ディスクグループに含まれる正常な一つのハードディスクを選択してパトロールを行った後には、エラーディスクグループに含まれるハードディスクを選択してパトロールを行う。
【００３３】
このように、ディスクアレイコントローラ１００は、エラーディスクに対して重点的に、ディスクパトロール行うことで、早期に、ハードディスクに存在する他のエラーを検出し、冗長性を回復させることができる。なぜならば、エラーが発生する可能性が高い、読み取りエラーの発生したハードディスクに対して、パトロールの回数が増えるからである。
【００３４】
次に、図１〜３に示したハードディスク１０〜４０のデータ構造について説明する。図４は、ハードディスク１０のデータ構成を示す図である。なお、ここでは、ハードディスク１０のデータ構造を示すが、ハードディスク２０〜４０もハードディスク１０と同様のデータ構造を有する。
【００３５】
図４に示すように、ハードディスク１０は、ユーザデータ領域と、スペアデータ領域とを有する。ユーザデータ領域は、一般のデータを記憶するデータ領域であり、スペアデータ領域は、ディスクパトロール中において、ユーザデータ領域に読み取りエラーが発生した際に、エラーの発生したデータ領域に代わって、対応するデータを記憶するための予備領域である。
【００３６】
次に、図１〜３に示したディスクアレイコントローラ１００の構成について説明する。図５は、図１〜３に示したディスクアレイコントローラ１００の構成を示す機能ブロック図である。同図に示すように、この、ディスクアレイコントローラ１００は、制御部１１０と、チャネルアダプタ部１２０と、バッファ１３０と、デバイスアダプタ部１４０とを有する。
【００３７】
制御部１１０は、ディスクアレイコントローラ１００全体を制御する処理部であり、ＲＡＩＤ処理部１１０ａと、ハードディスク選択部１１０ｂと、ベリファイ実行部１１０ｃと、エラー判定部１１０ｄと、交換処理実行部１１０ｅとを有する。
【００３８】
ＲＡＩＤ処理部１１０ａは、チャネルアダプタ部１２０が図示しないホストコンピュータからデータを受け取った場合に、受け取ったデータを一時バッファ１３０に記憶させる。そして、ＲＡＩＤ処理部１１０ａは、デバイスアダプタ部１４０を介して、バッファ１３０に記憶されたデータを、ハードディスク１０〜４０に分散して書き込む。
【００３９】
例えば、チャネルアダプタ部１２０が、ホストコンピュータからＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆというデータを順に受け取った場合に、ＲＡＩＤ処理部１１０ａは、デバイスアダプタ部１３０を介して、ハードディスク１０にＡ，Ｃ，Ｅを書き込み、ハードディスク２０にＢ，Ｄ，Ｆを書き込み、ハードディスク３０にＡ，Ｃ，Ｅを書き込み、ハードディスク４０にＢ，Ｄ，Ｆを書き込む。
【００４０】
また、ＲＡＩＤ処理部１１０ａは、ホストコンピュータからのデータ要求に応答し、要求されたデータをハードディスク１０〜４０から検索する。そして、ＲＡＩＤ処理部１１０ａは、検索したデータを一旦バッファ１３０に保存した後に、検索したデータをホストコンピュータに渡す。
【００４１】
ハードディスク選択部１１０ｂは、ディスクパトロールを行う複数のハードディスクを次々に選択する処理部である。なお、ハードディスク選択部１１０ｂは、エラーディスクを、正常なハードディスクよりも優先して選択する。また、ハードディスク選択部１１０ｂは、図６に示すエラー発生管理テーブル２００と、選択情報領域２１０と、エラーハードディスク選択情報領域２２０とを保持している。
【００４２】
なお、ハードディスク選択部１１０ｂは、エラー発生管理テーブル２００と、選択情報領域２１０に記録された情報と、エラーディスク選択情報領域２２０に記録された情報とを利用して、ディスクパトロールを行うハードディスクを選択することになる。
【００４３】
エラー発生管理テーブル２００は、どのハードディスクに読み出しエラーが発生したのかを管理するためのテーブルである。例えば、図６に示すエラー発生管理テーブル２００では、ハードディスク１０に読み出しエラーが発生し、ハードディスク２０〜４０は正常であることを表している。この場合、ハードディスク選択部１１０ｂは、ハードディスク１０、２０、１０、３０、１０、４０の順にディスクパトロールを行うハードディスクを選択する。なお、エラー発生管理テーブル２００の内容は、後述するエラー判定部１１０ｄによって更新されることになる。
【００４４】
また、ハードディスク選択部１１０ｂは、後述するベリファイ実行部１１０ｃから、エラーディスクに含まれる全てのデータ対して、一通り、データを読み取った結果、再び、読み取りエラーが発生しなかった旨の情報を受信した場合に、エラー発生管理テーブル２００の対応するハードディスクのエラー情報を「発生」から「なし」に変更する。この場合、次に読み取りエラーが発生するまでは、正常なハードディスクとして扱うためである（すなわち、エラーディスクグループに属していたハードディスクを、正常ディスクグループに戻すことで、該ハードディスクに対するパトロールの優先度レベルが元に戻る）。
【００４５】
選択情報領域２１０は、ハードディスク選択部１１０ｂが、正常なハードディスクの内、最後に選択したハードディスクを識別するための識別情報を記憶している。例えば、図６に示す選択情報領域２１０には、識別情報が２０である。図６は、正常なハードディスクの内、ハードディスク選択部１１０ｂが最後に選択したハードディスクが、ハードディスク２０であることを示している。
【００４６】
エラーディスク選択情報領域２２０は、ハードディスク選択部１１０ｂが最後に選択したハードディスクが、エラーディスクであったか、正常なハードディスクであったかを示す情報を記録している。
【００４７】
具体的には、エラーディスク選択情報領域２２０に記録された情報が、「オン」ならば、最後に選択したハードディスクは、エラーディスクである旨を示し、「オフ」ならば、最後に選択したハードディスクは、正常なハードディスクである旨を示す。
【００４８】
ベリファイ実行部１１０ｃは、ハードディスク選択部１１０ｂが選択したハードディスクから所定量のデータを読み取り、読み取ったデータをエラー判定部に渡す。また、ベリファイ実行部１１０ｃは、選択されたハードディスクから所定量のデータを読み取った際に、読み出したデータを格納していたデータ領域の位置を記憶する。
【００４９】
そして、ハードディスク選択部１１０ｂによって、再び同じハードディスクが選択された場合に、記憶したデータ領域の次のデータ領域から所定量のデータを読み出し、読み出したデータをエラー判定部１１０ｄに渡す。
【００５０】
また、ベリファイ実行部１１０ｃは、エラー判定部１１０ｄからエラーが発生した旨の情報を受け取った場合には、ハードディスクのエラーの発生したデータ領域を記憶する。そして、再び読み取りエラーが発生することなく、エラーディスクに含まれる全てのデータから、一通りデータを読み出した場合には、その旨をハードディスク選択部１１０ｂに通知する。
【００５１】
エラー判定部１１０ｄは、ベリファイ実行部１１０ｃが読み出したデータを取得し、読み取りエラーが発生したか否かを判定する処理部である。そして、エラー判定部１１０ｄは、読み取りエラーが発生したと判定した場合には、読み取りエラーが発生した旨の情報をハードディスク選択部１１０ｂ、ベリファイ実行部１１０ｃおよび交換処理実行部１１０ｅに渡す。
【００５２】
また、エラー判定部１１０ｄは、各ハードディスクに発生するエラー回数をカウントし、エラー回数が所定回数以上になった場合には、エラー回数が所定回数以上になったハードディスクを切り離す。
【００５３】
交換処理実行部１１０ｅは、エラー判定部１１０ｄからエラーが発生した旨の情報を受け取った場合に、ハードディスクのスペアデータ領域に、読み取りエラーの発生領域の代わりとなる予備領域を割り当て、割り当てた予備領域に、読み取りエラー発生領域に対するデータを、他のハードディスクから取得したデータに基づいて復元し、予備領域に書き込む。
【００５４】
次に、ディスクアレイコントローラ１００が行う、ディスクパトロール処理について説明する。図７は、ディスクパトロール処理の処理手順を示すフローチャートである。同図に示すように、ハードディスク選択部１１０ｂがハードディスク選択処理を行い（ステップＳ１０１）、ベリファイ実行部１１０ｃが選択されたハードディスクから所定量のデータを読み出し（ステップＳ１０２）、エラー判定部１１０ｄが読み出しエラーが発生したかを確認する（ステップＳ１０３）。
【００５５】
読み取りエラーが発生した場合には（ステップＳ１０３，Ｙｅｓ）、ハードディスク選択部１１０ｂは、エラー発生管理テーブル２００の、対応するハードディスクに、エラーが発生した旨が記入されているかを判定し（ステップＳ１０４）、エラーが発生した旨が記入されていない場合には（ステップＳ１０４，Ｎｏ）、エラーが発生した旨をエラー発生管理テーブル２００に記入し（ステップＳ１０５）、交換処理実行部１１０ｅが交換処理を行う（ステップＳ１０６）。
【００５６】
なお、エラー発生管理テーブル２００の対応するハードディスクにエラーが発生した旨がすでに記入されている場合には（ステップＳ１０４，Ｙｅｓ）、そのままステップＳ１０６に移行する。
【００５７】
一方、読み出しエラーが発生していない場合には（ステップＳ１０３，Ｎｏ）、選択されたハードディスク全てに対して、ディスクパトロールを行ったかを判定し（ステップＳ１０７）、選択されたハードディスク全てに対してディスクパトロールを行っていない場合には（ステップＳ１０７，Ｎｏ）、一定時間待ち（ステップＳ１０８）、次のハードディスクを選択し（ステップＳ１０９）、ステップＳ１０２に移行する。
【００５８】
一方、選択されたハードディスク全てに対してディスクパトロールを行った場合には（ステップＳ１０７）、ディスクパトロールを継続するか否かを判定し（ステップＳ１１０）、ディスクパトロールを継続すると判定した場合には（ステップＳ１１０）、一定時間待った後（ステップＳ１１１）、ステップＳ１０１に移行する。一方、ディスクパトロールを継続しないと判定した場合には（ステップＳ１１０，Ｎｏ）、処理を終了する。
【００５９】
次に、図７に示したディスクパトロール処理の補足説明を図２および３を用いておこなう。図２のように読み取りエラーの発生したハードディスクが、ハードディスク１０だけの場合には、ステップＳ１０１のハードディスク選択処理において、ハードディスク選択部１１０ｂは、ハードディスクを、１０、２０、１０、３０、１０、４０の順に選択する。
【００６０】
なお、図３のように、読み取りエラーの発生したハードディスクが、ハードディスク１０および２０の場合には、ステップＳ１０１のハードディスク選択処理において、ハードディスク選択部１１０ｂは、ハードディスク１０および２０をまとめて選択する。そして、ステップＳ１０２において、まず、ハードディスク１０から所定量のデータを読み出し、エラーチェックを行う。
【００６１】
そして、ステップＳ１０９において、残りハードディスク２０を選択して、エラーチェックを行い、ステップＳ１１０に移行することとなる。すなわち、ハードディスク１０および２０に読み取りエラーが発生した場合に、ハードディスク選択部１１０ｂは、ハードディスクを、１０、２０、３０、１０、２０、４０、１０、２０、３０、１０、２０、４０の順に選択する。
【００６２】
次に、図７のステップＳ１０１で示したハードディスク選択処理について説明する。図８は、ハードディスク選択処理の処理手順を示すフローチャートである。同図に示すように、ハードディスク選択部１１０ｂは、読み取りエラーの発生したディスクは存在するか否かを判断する（ステップＳ２０１）。
【００６３】
そして、読み取りエラーが発生したハードディスクが存在しない場合には（ステップＳ２０１，Ｎｏ）、選択情報領域２１０に記録された識別情報を基に、次のハードディスクを選択し（ステップＳ２０２）、選択情報領域２１０に記録された識別情報を、新たに選択したハードディスクの識別情報に更新し（ステップＳ２０３）、エラーディスク選択情報領域２２０の情報をオフにする（ステップＳ２０４）。
【００６４】
一方、読み取りエラーが発生したハードディスクが存在する場合には（ステップＳ２０２，Ｙｅｓ）、読み取りエラーの発生したハードディスクの中で、選択情報領域２１０の識別情報に対応するハードディスクと同じハードディスクが含まれるかを判定する（ステップＳ２０５）。
【００６５】
読み取りエラーの発生したハードディスクの中で、識別情報に対応するハードディスクが存在する場合には（ステップＳ２０５，Ｙｅｓ）、ステップＳ２０２に移行する。
【００６６】
一方、読み取りエラーの発生したハードディスクの中で、識別情報に対応するハードディスクが存在しない場合には（ステップＳ２０５，Ｎｏ）、エラーディスク選択情報領域２２０の情報がオンか否かを判定する（ステップＳ２０６）。
【００６７】
エラーディスク選択情報領域２２０の情報がオンの場合には（ステップＳ２０６，Ｙｅｓ）、ステップＳ２０２に移行する。
【００６８】
一方、エラーディスク選択情報領域２２０の情報がオフの場合には（ステップＳ２０６，Ｎｏ）、読み取りエラーの発生したハードディスクを全て選択し（ステップＳ２０７）、エラーディスク選択情報領域２２０の情報をオンにする（ステップＳ２０８）。
【００６９】
なお、図８のフローチャートのＳ２０１で行われるエラーが発生したか否かの判断は、ハードディスク選択部１１０ｂが、エラー発生管理テーブル２００を基に判断する。
【００７０】
次に、図７のステップＳ１０６で示した交換処理について説明する。図９は、交換処理の処理手順を示すフローチャートである。
【００７１】
図９に示すように、交換処理実行部１１０ｅが、読み出しエラー発生箇所に対する予備領域を割り当て（ステップＳ３０１）、エラー発生箇所に対応するデータを検索し（ステップＳ３０２）、検索したデータを、割り当てた予備領域に書き込む（ステップＳ３０３）。
【００７２】
上述してきたように、本実施例に係るディスクアレイコントローラ１００では、ハードディスク選択部１１０ｂが、読み取りエラーの発生したハードディスクを優先的に選択し、ベリファイ実行部１１０ｃが、選択されたハードディスクから所定量のデータを読み取り、エラー判定部１１０ｄが、読み取りエラーが発生したかを判定し、読み取りエラーが発生した場合には、交換処理実行部１１０ｅが予備領域を確保し、該予備領域に、対応するデータを記録する。
【００７３】
そのため、正常なハードディスクよりも、読み取りエラーが複数箇所で発生する可能性の高い、エラーディスクに対して重点的にディスクパトロールを行うことができ、早期にエラー領域を検出し、ハードディスクが故障した場合の冗長性を早期に保障することができる。
【００７４】
なお、ディスクパトロールを行うハードディスクを選択する選択手順は、本実施例に示した選択手順に限定されるものではなく、例えば、ハードディスクに読み取りエラーが発生した場合に、正常なハードディスクを後回しにし、エラーディスクに対して集中的にディスクパトロールを行っても良い。
【００７５】
すなわち、ハードディスク１０に読み取りエラーが発生したならば、まず、ハードディスク１０に含まれる全てのデータに対してディスクパトロールを行い、ハードディスク１０に対するディスクパトロールが終了した後に、通常のディスクパトロールに移行することができる。
【００７６】
図１０は、エラーディスクに対して集中的にディスクパトロールを行う処理手順を示すフローチャートである。
【００７７】
図１０に示すように、ハードディスク選択部１１０ｂが、ハードディスクを選択し（ステップＳ４０１）、ベリファイ実行部１１０ｃが、選択されたハードディスクから所定量のデータを読み出し（ステップＳ４０２）、エラー判定部１１０ｄが、読み出しエラーが発生したかを判定する（ステップＳ４０３）。
【００７８】
読み出しエラーが発生していない場合には（ステップＳ４０３，Ｎｏ）、ディスクパトロールを継続するか否かを判定し（ステップＳ４０４）、ディスクパトロールを継続する場合には（ステップＳ４０４，Ｙｅｓ）、一定時間待ち（ステップＳ４０５）、次のハードディスクを選択し（ステップＳ４０６）、ステップＳ４０２に移行する。なお、ディスクパトロールを継続しない場合には（ステップＳ４０４，Ｎｏ）、処理を終了する。
【００７９】
一方、読み出しエラーが発生した場合には（ステップＳ４０３，Ｙｅｓ）、交換処理を行い（ステップＳ４０７）、一定時間待ち（ステップＳ４０８）、エラーが発生したハードディスクから所定量のデータを読み出し（ステップＳ４０９）、読み出しエラーが発生したか否かを判定する（ステップＳ４１０）。
【００８０】
読み出しエラーが発生した場合には（ステップＳ４１０，Ｙｅｓ）、ステップＳ４０８に移行する。一方、読み出しエラーが発生していない場合には（ステップＳ４１０，Ｎｏ）、読み取りエラーの発生した領域以外のデータ領域から、一通りデータを読み出したか否かを判定する（ステップＳ４１１）。
【００８１】
一通りデータを読み出していない場合には（ステップＳ４１１，Ｎｏ）、ステップＳ４０８に移行する。一方、一通りデータを読み出した場合には（ステップＳ４１１，Ｙｅｓ）、一定時間待ち（ステップＳ４１２）、次のハードディスクを選択し（ステップＳ４１３）、ステップＳ４０３に移行する。
【００８２】
このように、読み取りエラーが複数発生する可能性の高い、エラーディスクに対して集中的にディスクパトロールを行うことで、エラー箇所を効率よく検出することができ、もってハードディスクが故障した際の冗長性を早期に回復することができる。
【００８３】
なお、図１０のステップＳ４０７で示した交換処理は、図９に示した交換処理と同様であるため、説明を省略する。
【００８４】
（付記１）複数のディスク装置から順々にデータを読み出し、該ディスク装置の正常性を確認するパトロールを行うディスク制御装置であって、
前記複数のディスク装置のうち、前記パトロール中に読み取りエラーの発生したディスク装置を優先して選択する選択手段と、
前記選択手段が選択したディスク装置からデータを読み取るとともに、読み取りエラーが発生したか否かを判定する判定処理手段と、
を備えたことを特徴とするディスク制御装置。
【００８５】
（付記２）前記パトロール中に読み取りエラーの発生したディスク装置を識別するための識別情報を記憶する記憶手段をさらに備え、前記選択手段は、前記記憶手段に記憶された識別情報をもとにして、読み取りエラーの発生したディスク装置を優先して選択することを特徴とする付記１に記載のディスク制御装置。
【００８６】
（付記３）前記選択手段は、前記複数のディスク装置を、前記パトロール中に読み取りエラーの発生したディスク装置を集めたエラーディスクグループと、正常なディスク装置を集めた正常ディスクグループとに分け、前記エラーディスクグループに含まれるディスク装置を全て選択した後に、前記正常ディスクグループに切り替え、前記正常ディスクグループに含まれるディスク装置を１つ選択した後に、前記エラーディスクグループに切り替えることを特徴とする付記１に記載のディスク制御装置。
【００８７】
（付記４）前記選択手段は、前記パトロール中に読み取りエラーの発生したディスク装置に含まれる全データ領域が、読み取りエラーが発生するか否かを一通り判定された後に、次のディスク装置を選択することを特徴とする付記１に記載のディスク制御装置。
【００８８】
（付記５）複数のディスク装置から順々にデータを読み出し、該ディスク装置の正常性を確認するパトロールを行うディスクパトロール方法であって、
前記複数のディスク装置のうち、前記パトロール中に読み取りエラーの発生したディスク装置を優先して選択する選択工程と、
前記選択工程において、選択したディスク装置からデータを読み取るとともに、読み取りエラーが発生したか否かを判定する判定処理工程と、
を含んだことを特徴とするディスクパトロール方法。
【００８９】
（付記６）前記パトロール中に読み取りエラーの発生したディスク装置を識別するための識別情報を記憶装置に記憶させる記憶工程をさらに含み、前記選択工程は、前記記憶装置に記憶された識別情報をもとにして、読み取りエラーの発生したディスク装置を優先して選択することを特徴とする付記５に記載のディスクパトロール方法。
【００９０】
（付記７）前記選択工程は、前記複数のディスク装置を、前記パトロール中に読み取りエラーの発生したディスク装置を集めたエラーディスクグループと、正常なディスク装置を集めた正常ディスクグループとに分け、前記エラーディスクグループに含まれるディスク装置を全て選択した後に、前記正常ディスクグループに切り替え、前記正常ディスクグループに含まれるディスク装置を１つ選択した後に、前記エラーディスクグループに切り替えることを特徴とする付記５に記載のディスクパトロール方法。
【００９１】
（付記８）前記選択工程は、前記パトロール中に読み取りエラーの発生したディスク装置に含まれる全データ領域が、読み取りエラーが発生するか否かを一通り判定された後に、次のディスク装置を選択することを特徴とする付記５に記載のディスクパトロール方法。
【００９２】
（付記９）複数のディスク装置から順々にデータを読み出し、該ディスク装置の正常性を確認するパトロールを行うディスクパトロールプログラムであって、
前記複数のディスク装置のうち、前記パトロール中に読み取りエラーの発生したディスク装置を優先して選択する選択手順と、
前記選択手順において、選択したディスク装置からデータを読み取るとともに、読み取りエラーが発生したか否かを判定する判定処理手順と、
をコンピュータに実行させることを特徴とするディスクパトロールプログラム。
【００９３】
（付記１０）前記パトロール中に読み取りエラーの発生したディスク装置を識別するための識別情報を記憶装置に記憶させる記憶手順をさらにコンピュータに実行させ、前記選択手順は、前記記憶装置に記憶された識別情報をもとにして、読み取りエラーの発生したディスク装置を優先して選択することを特徴とする付記９に記載のディスクパトロールプログラム。
【００９４】
（付記１１）前記選択手順は、前記複数のディスク装置を、前記パトロール中に読み取りエラーの発生したディスク装置を集めたエラーディスクグループと、正常なディスク装置を集めた正常ディスクグループとに分け、前記エラーディスクグループに含まれるディスク装置を全て選択した後に、前記正常ディスクグループに切り替え、前記正常ディスクグループに含まれるディスク装置を１つ選択した後に、前記エラーディスクグループに切り替えることを特徴とする付記９に記載のディスクパトロールプログラム。
【００９５】
（付記１２）前記選択手順は、前記パトロール中に読み取りエラーの発生したディスク装置に含まれる全データ領域が、読み取りエラーが発生するか否かを一通り判定された後に、次のディスク装置を選択することを特徴とする付記９に記載のディスクパトロールプログラム。
【産業上の利用可能性】
【００９６】
以上説明したように、本発明にかかるディスク制御装置、ディスクパトロール方法およびディスクパトロールプログラムは、複数のハードディスクを利用してＲＡＩＤを構成するＲＡＩＤシステムなどに対して有効である。
【図面の簡単な説明】
【００９７】
【図１】本発明に係るディスクパトロールの概念を説明するための図（１）である。
【図２】本発明に係るディスクパトロールの概念を説明するための図（２）である。
【図３】本発明に係るディスクパトロールの概念を説明するための図（３）である。
【図４】ハードディスクのデータ構成を示す図である。
【図５】図１〜３に示したディスクアレイコントローラの構成を示す機能ブロック図である。
【図６】ハードディスク選択部が保持するエラー発生管理テーブル、選択情報領域およびエラーディスク選択情報領域を示す図である。
【図７】ディスクパトロール処理の処理手順を示すフローチャートである。
【図８】ハードディスク選択処理の処理手順を示すフローチャートである。
【図９】交換処理の処理手順を示すフローチャートである。
【図１０】エラーディスクに対して集中的にディスクパトロールを行う処理手順を示すフローチャートである。
【符号の説明】
【００９８】
１０，２０，３０，４０    ハードディスク
１００    ディスクアレイコントローラ
１１０    制御部
１１０ａ  ＲＡＩＤ処理部
１１０ｂ  ハードディスク選択部
１１０ｃ  ベリファイ実行部
１１０ｄ  エラー判定部
１１０ｅ  交換処理実行部
１２０    チャネルアダプタ部
１３０    バッファ
１４０    デバイスアダプタ部
【図１】
2006004078.tif 000003
【図２】
2006004078.tif 000004
【図３】
2006004078.tif 000005
【図４】
2006004078.tif 000006
【図５】
2006004078.tif 000007
【図６】
2006004078.tif 000008
【図７】
2006004078.tif 000009
【図８】
2006004078.tif 000010
【図９】
2006004078.tif 000011
【図１０】
2006004078.tif 000012