(57)【要約】【課題】故障する危険性の高いディスクドライブの長寿命化を図る。【解決手段】リード／ライト制御部２２２は、ディスクアレイ１０を構成するＨＤＤ１００-0及び１００-1へのリード／ライトアクセスを制御する。エラーカウンタ２２８ａは、ＨＤＤ１００-0及び１００-1の各々について、当該ＨＤＤに対するアクセスでエラーが発生した回数をカウントする。エラー発生回数判定部２２４は、エラーカウンタ２２８ａによってカウントされた回数に基づいて、エラー発生の度合いが高いＨＤＤを故障する危険性の高いＨＤＤとして検出する。警戒モード設定部２２５は、検出されたＨＤＤを、当該検出されたＨＤＤがディスクアレイ１０のメンバとして維持された状態で、当該検出されたＨＤＤに対するアクセスがディスクアレイ１０における他のディスクドライブに比べて抑止される特定（警戒）モードに設定する。【選択図】      図１
2006301714.tif 000002
【特許請求の範囲】
【請求項１】
複数のディスクドライブから構成される冗長性を持つディスクアレイを制御するアレイコントローラにおいて、
前記ディスクアレイを構成する前記複数のディスクドライブへのリード／ライトアクセスを制御するリード／ライト制御手段と、
前記複数のディスクドライブの各々について、当該ディスクドライブに対するアクセスでエラーが発生した回数をカウントするエラーカウント手段と、
前記エラーカウント手段によってカウントされた回数に基づいて、エラー発生の度合いが高いディスクドライブを故障する危険性の高いディスクドライブとして検出する故障予知手段と、
前記故障予知手段によって検出されたディスクドライブを、当該検出されたディスクドライブが前記ディスクアレイのメンバとして維持された状態で、当該検出されたディスクドライブに対するアクセスが前記ディスクアレイにおける他のディスクドライブに比べて抑止される特定モードに設定するモード設定手段と
を具備することを特徴とするアレイコントローラ。
【請求項２】
前記リード／ライト制御手段は、データを読み出すべき前記ディスクアレイ内のディスクドライブが前記特定モードに設定されいるかを判定する判定手段と、前記データを読み出すべきディスクドライブが前記特定モードに設定されている場合、アクセス先を前記ディスクアレイにおける他のディスクドライブに切り替える手段と、前記他のディスクドライブから読み出されるデータに基づき、前記ディスクアレイの冗長性を利用することで、前記特定モードに設定されたディスクドライブから読み出すべきデータを取得する手段とを含むことを特徴とする請求項１記載のアレイコントローラ。
【請求項３】
前記ディスクアレイを構成する前記複数のディスクドライブの各々のモードを指定するためモードフラグ情報であって、前記特定モードを含む複数のモードの中から選択されたモードを指定するためモードフラグ情報を記憶する記憶手段を更に具備し、
前記モード設定手段は、前記故障予知手段によって前記故障する危険性の高いディスクドライブが検出された場合、当該故障する危険性の高いディスクドライブに対応する前記モードフラグ情報を前記特定モードを指定する状態に設定し、
前記判定手段は、前記データを読み出すべき前記ディスクアレイ内のディスクドライブに対応する前記モードフラグ情報を参照することで、前記データを読み出すべきディスクドライブが前記特定モードに設定されているかを判定する
ことを特徴とする請求項２記載のアレイコントローラ。
【請求項４】
前記ディスクアレイ内の前記特定モードに設定されていないディスクドライブからデータを読み出すリード動作で、当該ディスクドライブから正しくデータを読み出せないメディアエラーが発生した場合、前記ディスクアレイ内の他のディスクドライブが前記特定モードに設定されているかに無関係に当該他のディスクドライブからデータを読み出し、当該他のディスクドライブから読み出されるデータに基づき、前記ディスクアレイの冗長性を利用することで、前記メディアエラーが発生したディスクドライブから読み出すべきデータを取得するリカバリ手段を更に具備することを特徴とする請求項２記載のアレイコントローラ。
【請求項５】
前記リカバリ手段は、前記メディアエラーが発生したディスクドライブのメディアエラー発生箇所のデータを前記取得されたデータで修復することを特徴とする請求項４記載のアレイコントローラ。
【請求項６】
前記ディスクアレイを構成する前記複数のディスクドライブの整合性をチェックする整合性チェック手段を更に具備することを特徴とする請求項２記載のアレイコントローラ。
【請求項７】
前記整合性チェック手段は、前記複数のディスクドライブのいずれかが前記特定モードに設定されている場合、当該特定モードに設定されているディスクドライブを除く前記ディスクアレイにおけるディスクドライブのみを当該ディスクドライブとの間のデータ転送が伴わないベリファイコマンドによりチェックするベリファイコマンド実行手段と、前記ベリファイコマンドに応じてエラーを返したディスクドライブが存在する場合、前記ディスクアレイにおける他のディスクドライブからデータを読み出し、当該他のディスクドライブから読み出されるデータに基づき、前記ディスクアレイの冗長性を利用することで、当該エラーを返したディスクドライブのデータを修復するデータ修復手段とを含む整合性チェック手段とを含むことを特徴とする請求項６記載のアレイコントローラ。
【請求項８】
前記アレイコントローラには、前記ディスクアレイを構成する前記複数のディスクドライブとは別に、予備のディスクドライブが予め接続されており、
前記アレイコントローラは、前記複数のディスクドライブのいずれかが前記特定モードに設定された場合、前記ディスクアレイにおける他のディスクドライブからデータを読み出し、前記他のディスクドライブから読み出されるデータを利用して、前記特定モードに設定されたディスクドライブのデータを前記予備のディスクドライブに復元するためのリビルド処理を実行するリビルド手段を更に具備する
ことを特徴とする請求項２記載のアレイコントローラ。
【請求項９】
前記リビルド手段は、前記リビルド処理で正しくデータを読み出せないメディアエラーが発生した場合に限り、当該メディアエラーが発生したディスクドライブに代えて前記特定モードに設定されているディスクドライブからデータを読み出し、当該特定モードに設定されているディスクドライブから読み出されるデータを利用して、前記特定モードに設定されたディスクドライブのデータを前記予備のディスクドライブに復元することを特徴とする請求項８記載のアレイコントローラ。
【請求項１０】
複数のディスクドライブから構成される冗長性を持つディスクアレイを外部記憶装置として利用するホスト装置と、
前記ディスクアレイを制御するアレイコントローラであって、前記ホスト装置からのアクセス要求に応じて前記ディスクアレイを構成する前記複数のディスクドライブへのアクセスを制御するアレイコントローラとを具備し、
前記アレイコントローラは、
前記ホストシステムからのリード／ライト要求を受け付ける主制御手段と、
前記主制御手段によって受け付けられたリード／ライト要求によって要求されたデータのリード／ライトのために前記ディスクアレイを構成する前記複数のディスクドライブへのリード／ライトアクセスを制御するリード／ライト制御手段と、
前記複数のディスクドライブの各々について、当該ディスクドライブに対するアクセスでエラーが発生した回数をカウントするエラーカウント手段と、
前記エラーカウント手段によってカウントされた回数に基づいて、エラー発生の度合いが高いディスクドライブを故障する危険性の高いディスクドライブとして検出する故障予知手段と、
前記故障予知手段によって検出されたディスクドライブを、当該検出されたディスクドライブが前記ディスクアレイのメンバとして維持された状態で、当該検出されたディスクドライブに対するアクセスが前記ディスクアレイにおける他のディスクドライブに比べて抑止される特定モードに設定するモード設定手段とを含む
ことを特徴とする情報処理装置
【請求項１１】
複数のディスクドライブから構成される冗長性を持つディスクアレイと接続されるアレイコントローラにおいて前記ディスクアレイを制御するためのディスクアレイ制御方法であって、
前記複数のディスクドライブの少なくとも１つがアクセスされた場合に、そのアクセスでエラーが発生したかを判定するステップと、
エラーが発生したディスクドライブのエラー発生回数をカウントアップするステップと、
前記複数のディスクドライブの各々のエラー発生回数に基づいて、エラー発生の度合いが高いディスクドライブを故障する危険性の高いディスクドライブとして検出するステップと、
前記検出されたディスクドライブを、当該検出されたディスクドライブが前記ディスクアレイのメンバとして維持された状態で、当該検出されたディスクドライブに対するアクセスが前記ディスクアレイにおける他のディスクドライブに比べて抑止される特定モードに設定するステップと
を具備することを特徴とするディスクアレイ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のディスクドライブから構成される冗長性を持つディスクアレイを制御するアレイコントローラ、当該アレイコントローラを含む情報処理装置及びディスクアレイ制御方法に関する。
【背景技術】
【０００２】
冗長データを持つことによりデータの信頼性を向上させる技術として、複数のディスクドライブを用いて構成される冗長性を持つディスクアレイ（冗長化ディスクアレイ）、つまりＲＡＩＤ（Redundant Array of Inexpensive Disks、またはRedundant Array of Independent Disks）が知られている。ＲＡＩＤには幾つかのレベル（ＲＡＩＤレベル）が定義されており、ＲＡＩＤ１（ミラーリング）やＲＡＩＤ５（パリティ付きストライピング）などが知られている。いずれも複数のディスクドライブを用いて構成されるディスクアレイにデータ及び冗長データを配置することにより、いずれか１台のディスクドライブに障害が発生してもデータの復元を可能にする技術である。
【０００３】
ディスクアレイを制御するコントローラは、アレイコントローラまたはＲＡＩＤコントローラと呼ばれる。ＲＡＩＤコントローラは、ディスクアレイ内のディスクドライブへのアクセスで例えばメディアエラーが発生した場合、当該ディスクドライブのエラー箇所のデータをディスクアレイ内の他のディスクドライブのデータを使って修復する。メディアエラーの代表として、ディスクドライブ側でリトライを行っても当該ディスクドライブのからデータをリードすることができないエラーが知られている。
【０００４】
もし、あるディスクドライブでメディアエラー等が多発すれば、修復に時間がかかり、ディスクアレイを利用するホスト（ホスト装置）からのコマンドの処理が遅くなる。そこで特許文献１では、故障する危険性のあるディスクドライブをいち早く認識する技術が提案されている。この技術（以下、先行技術と称する）の特徴は、ディスクアレイを構成する複数のディスクドライブの各々のエラー回数を管理し、エラー回数が閾値を超えたディスクドライブを故障する危険性の高いディスクドライブとして認識する点にある。また、先行技術の特徴は、故障する危険性が高いと認識されたディスクドライブのデータを、ディスクアレイ内の残りのディスクドライブのデータを用いて予備のディスクドライブに復元することにある。この先行技術によれば、メディアエラー等が多発して修復に時間がかかる状態を速やかに解消することが可能となる。
【特許文献１】特開平７−２００１９１（段落００９０乃至００９３、図１１及び図１２）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記先行技術では、故障する危険性が高いと認識されたディスクドライブのデータを予備のディスクドライブに復元する復元処理（リビルド処理）の期間に、ホストからのリード要求があった場合、当該認識されたディスクドライブを含むディスクアレイ内の各ディスクドライブでリード要求が実行される。
【０００６】
しかし、故障する危険性が高いと認識されたディスクドライブを正常なディスクドライブと同等に扱って、当該認識されたディスクドライブにアクセスしていると、当該認識されたディスクドライブが実際に故障する時期を早める可能性がある。しかも、上記の復元処理が完了する前に上記認識されたディスクドライブが実際に故障した場合には、非冗長の状態で当該復元処理が継続されるため、ディスクアレイ内の残りのディスクドライブでメディアエラー等が発生すると、データが復元できないおそれがある。
【０００７】
本発明は上記事情を考慮してなされたものでその目的は、ディスクアレイ内の故障する危険性の高いディスクドライブの長寿命化を図ることができるアレイコントローラ、当該アレイコントローラを含む情報処理装置及びディスクアレイ制御方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の１つの観点によれば、複数のディスクドライブから構成される冗長性を持つディスクアレイを制御するアレイコントローラが提供される。このアレイコントローラは、ディスクアレイを構成する上記複数のディスクドライブへのリード／ライトアクセスを制御するリード／ライト制御手段と、上記複数のディスクドライブの各々について、当該ディスクドライブに対するアクセスでエラーが発生した回数をカウントするエラーカウント手段と、このエラーカウント手段によってカウントされた回数に基づいて、エラー発生の度合いが高いディスクドライブを故障する危険性の高いディスクドライブとして検出する故障予知手段と、この故障予知手段によって検出されたディスクドライブを、当該検出されたディスクドライブが上記ディスクアレイのメンバとして維持された状態で、当該検出されたディスクドライブに対するアクセスが上記ディスクアレイにおける他のディスクドライブに比べて抑止される特定モードに設定するモード設定手段とから構成される。
【０００９】
また、上記ディスクアレイを構成する複数のディスクドライブとは別に、予備のディスクドライブが上記アレイコントローラに予め接続される構成において、当該アレイコントローラに次のようなリビルド手段を追加すると良い。このリビルド手段は、複数のディスクドライブのいずれかが上記特定モードに設定された場合、上記ディスクアレイにおける他のディスクドライブからデータを読み出し、当該他のディスクドライブから読み出されるデータを利用して、上記特定モードに設定されたディスクドライブのデータを上記予備のディスクドライブに復元するためのリビルド処理を実行する。
【発明の効果】
【００１０】
本発明によれば、ディスクアレイ内の故障する危険性の高いディスクドライブの長寿命化を図ることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施の形態につき図面を参照して説明する。  
［第１の実施形態］
図１は本発明の第１の実施形態に係る情報処理システムの構成を示すブロック図である。この情報処理システムは、ディスクアレイ１０と情報処理装置２０とから構成される。但し、ディスクアレイ１０が情報処理装置２０の筐体内に収容されていても構わない。つまり、情報処理装置２０がディスクアレイ１０を含んでいても構わない。
【００１２】
ディスクアレイ１０は、複数のディスクドライブ、例えば２台のハードディスクドライブ（ＨＤＤ）１００-0及び１００-1から構成されるＲＡＩＤである。本実施形態におけるディスクアレイ１０は、ＲＡＩＤ１のディスクアレイ、いわゆるミラーリングディスクアレイとして機能する。ＨＤＤ１００-0及び１００-1は、当該ＨＤＤのステータスを表示する表示器、例えばＬＥＤ（図示せず）を有している。
【００１３】
情報処理装置２０は、各種アプリケーションを実行するホスト（ホスト装置）２１と、ＲＡＩＤコントローラ（アレイコントローラ）２２とから構成される。ホスト２１は、ディスクアレイ１０を自身の外部記憶装置として利用する。ＲＡＩＤコントローラ２２はディスクアレイ１０及びホスト２１と接続されており、ホスト２１からのアクセス要求に応じてディスクアレイ１０を制御する。
【００１４】
ＲＡＩＤコントローラ２２は、主制御部２２１と、リード／ライト制御部２２２と、エラー判定部２２３と、エラー発生回数判定部２２４と、警戒モード設定部２２５と、リカバリ部２２６と、整合性チェック部２２７と、不揮発性メモリ２２８とを含む。主制御部２２１は、ＲＡＩＤコントローラ２２全体を制御する。主制御部２２１はホスト２１からのコマンドを受け付けて、ＲＡＩＤコントローラ２２内の各部を制御する。
【００１５】
リード／ライト制御部２２２は、主制御部２２１によって受け付けられたホスト２１からのリード／ライトコマンドに応じて、ディスクアレイ１０内のＨＤＤ１００-0及び１００-1の少なくとも一方へのリード／ライトアクセスを制御する。エラー判定部２２３は、ＨＤＤ１００-0及び１００-1の各々へのアクセスに対するエラーの発生を判定する。エラー発生回数判定部２２４は、エラー判定部２２３によって判定されたＨＤＤ１００-0及び１００-1の各々のエラー発生回数を管理する。エラー発生回数判定部２２４は、ＨＤＤ１００-0及び１００-1の各々のエラー発生回数が予め定められた閾値を超えたかを判定することで、故障する危険性の高いＨＤＤを検出する故障予知部である。
【００１６】
警戒モード設定部２２５は、エラー発生回数判定部２２４の判定結果に基づき、エラー発生回数が閾値を超えたＨＤＤ（つまりエラー発生の度合いが高いＨＤＤ）を警戒モードに設定する。警戒モードとは、エラー発生回数が閾値を超えたため故障する危険性が高いと予測されたＨＤＤが実際に故障するのを遅らせるために（つまり故障する危険性が高いと予測されたＨＤＤの長寿命化を図るために）、当該ＨＤＤをディスクアレイ１０の構成要素（メンバ）として維持しつつ、当該ＨＤＤがディスクアレイ１０内で通常の（正常な）状態（正常モード）にある他のＨＤＤに比べて極力アクセスされないように設定するための特定モードである。
【００１７】
リカバリ部２２６は、リード／ライトアクセスでエラーとなった場合、当該エラーを回復するためのリカバリ処理を実行する。整合性チェック部２２７は、ＨＤＤ１００-0及び１００-1の間のデータの整合性をチェックする。整合性チェック部２２７は、ベリファイコマンド実行部２２７ａとデータ修復部２２７ｂとを含む。ベリファイコマンド実行部２２７ａは、ＨＤＤ１００-0及び１００-1のいずれかが警戒モードに設定されている場合、簡易整合性チェックのために、正常な状態（正常モード）にあるＨＤＤに対してベリファイコマンドを実行する。データ修復部２２７ｂは、正常な状態にあるＨＤＤに対するベリファイコマンドの実行の結果、エラーとなったＨＤＤの該当する領域のデータを、残りのＨＤＤの該当する領域のデータで修復する。
【００１８】
不揮発性メモリ２２８は、フラッシュＲＯＭ等の書き換え可能な不揮発性メモリ（記憶装置）である。また、不揮発性メモリ２２８が、電池でバックアップされたＲＡＭであっても構わない。不揮発性メモリ２２８の所定領域は、ＨＤＤ１００-0及び１００-1の各々のエラー発生回数を個別にカウントするための１対のエラーカウンタ２２８ａを保持するのに用いられる。また、不揮発性メモリ２２８の別の所定領域は、ＨＤＤ１００-0及び１００-1の各々の状態を表すモードを指定するための１対のモードフラグ２２８ｂを保持するのに用いられる。ここでは、モードフラグ２２８ｂで指定可能なモードは、正常モード、警戒モード及び故障モードである。正常モードは、前記したようにＨＤＤ１００-i（ｉ＝１，２）が正常な状態にあることを示す。警戒モードは、ＨＤＤ１００-iが故障する危険性が高く、他のＨＤＤに比べて極力アクセスされないようにすべき状態にあることを示す。但し、警戒モードのＨＤＤ１００-iはディスクアレイ１０のメンバとして維持され、当該ディスクアレイ１０から切り離されていない。故障モードは、ＨＤＤ１００-iがディスクアレイ１０から切り離されている状態にあることを示す。
【００１９】
次に、図１のシステムにおけるＲＡＩＤコントローラ２２の動作手順について、当該ＲＡＩＤコントローラ２２内の主制御部２２１がホスト２１からのリードまたはライトコマンドを受け付けた場合を例に、図２のフローチャートを参照して説明する。
【００２０】
主制御部２２１は、ホスト２１からリードまたはライトコマンドを受け付けた場合、リード／ライト制御部２２２に対して当該コマンドで指定されたデータリードまたはデータライトを要求する。すると、リード／ライト制御部２２２は、データリードまたはデータライトのいずれが要求されたかを判定する（ステップＳ１）。
【００２１】
リード／ライト制御部２２２はデータリードが要求された場合であれば、ディスクアレイ１０を構成する（つまりディスクアレイ１０のメンバである）ＨＤＤ１００-0及び１００-1の中から、アクセスすべきＨＤＤ（アクセス先のＨＤＤ）を決定する（ステップＳ２）。本実施形態においてリード／ライト制御部２２２は、当該ＨＤＤ１００-0及び１００-1へのアクセス頻度が同等になるようにアクセス先のＨＤＤを決定する。これにより、ＨＤＤ１００-0及び１００-1の一方に負荷が偏るのを防止できる。ここでは、ＨＤＤ１００-0及び１００-1の領域（ディスク領域）が一定サイズで分割される。リード／ライト制御部２２２は、アクセスすべき論理アドレスが偶数番目の領域または奇数番目の領域のいずれを指すかによって、アクセス先のＨＤＤを決定する。
【００２２】
次にリード／ライト制御部２２２は、決定されたＨＤＤが警戒モードに設定されているかを判定する（ステップＳ３）。決定されたＨＤＤが警戒モードに設定されているかは、当該ＨＤＤに対応するモードフラグ２２８ｂを参照することにより判定可能である。もし、決定されたＨＤＤが警戒モードに設定されているならば、リード／ライト制御部２２２は当該ＨＤＤに対するアクセスを極力少なくする（抑止する）ために、アクセス先のＨＤＤを、ディスクアレイ１０内の残りの（つまりもう一方の）ＨＤＤに決定し直す（ステップＳ４）。
【００２３】
リード／ライト制御部２２２は、アクセス先のＨＤＤが決定し直された場合（ステップＳ４）、その決定し直されたＨＤＤ、つまり最も最近に決定されたＨＤＤからのデータリードを制御する（ステップＳ５）。これに対し、ステップＳ２で決定されたＨＤＤが警戒モードに設定されていない場合（ステップＳ３）、リード／ライト制御部２２２はステップＳ４をスキップして、ステップＳ２で決定されたＨＤＤ、即ち最も最近にステップＳ２で決定されたＨＤＤからのデータリードを制御する（ステップＳ５）。これにより、警戒モードのＨＤＤからのデータリードが抑止される。
【００２４】
なお、データリードが要求された場合に、まず警戒モードに設定されているＨＤＤが存在するかが判定される構成としても構わない。この場合、リード／ライト制御部２２２は、警戒モードに設定されているＨＤＤが存在するならば、警戒モードに設定されていないＨＤＤをアクセス先のＨＤＤとして決定すれば良い。また、警戒モードに設定されているＨＤＤが存在しないならば、リード／ライト制御部２２２は上記ステップＳ２と同様にしてＨＤＤ１００-0及び１００-1の中からアクセス先のＨＤＤを決定すれば良い。
【００２５】
一方、ホスト２１からデータライトが要求された場合、リード／ライト制御部２２２はディスクアレイ１０内のＨＤＤ１００-0及び１００-1の両ＨＤＤへのデータライトを制御する（ステップＳ６）。即ちリード／ライト制御部２２２は、ＨＤＤ１００-0及び１００-1の同一ブロック領域に同一データを書き込む。これにより、ＨＤＤ１００-0及び１００-1のデータの冗長性が維持される。
【００２６】
このように、ディスクアレイ１０がＲＡＩＤ１のディスクアレイとして機能する本実施形態では、データリードの場合、図３（ａ）に示すようにＨＤＤ１００-0及び１００-1のいずれか一方からデータが読み出される。一方、データライトの場合は、図３（ｂ）に示すようにＨＤＤ１００-0及び１００-1の両方にデータが書き込まれる。本実施形態では、ＨＤＤ１００-0及び１００-1のいずれか一方からデータが読み出されるのを利用して、警戒モードに設定されているＨＤＤが存在する場合、当該ＨＤＤが実際に故障する時期が早まらないように、正常モードにあるＨＤＤからデータを読み出す構成を適用している。これにより、故障する危険性の高いＨＤＤへのアクセスでのエラーに起因するリカバリ処理の発生回数を少なくできるため、リカバリ処理のためにホスト２１側の処理が滞ることを防止できる。
【００２７】
さて、ステップＳ５のデータリードまたはステップＳ６のデータライトが実行されると、エラー判定部２２３は当該データリードまたはデータライト（つまりディスクアクセス）でエラーが発生したかを判定する（ステップＳ７）。このエラーとしては、例えばデータリードであれば、ＨＤＤ１００-i内部でリードエラーとなってリードリトライを行ったがリトライに失敗し、当該ＨＤＤ１００-iからエラーが通知されるメディアエラーがある。また、ＨＤＤ１００-iからデータが正常にリードできたものの、そのリードされたデータが伝送路等の障害により当該ＨＤＤ１００-iからＲＡＩＤコントローラ２２に正しく転送（伝送）されなかった、いわゆるＣＲＣ（Cyclic Redundancy Check）エラーもある。また、データライトであれば、指定領域にデータが書き込めず、且つ代替領域にもデータが書き込めないエラーがある。
【００２８】
エラー判定部２２３は、リード／ライト制御部２２２によるデータリードまたはデータライトの実行でエラーが発生した場合（ステップＳ７）、その旨をエラー発生ＨＤＤの識別情報と共にエラー発生回数判定部２２４に通知する。するとエラー発生回数判定部２２４は、エラーが発生したＨＤＤに対応するモードフラグ２２８ｂを参照することにより、当該ＨＤＤが既に警戒モードに設定されているかを判定する（ステップＳ８）。
【００２９】
もし、エラーが発生したＨＤＤが警戒モードに設定されていないならば、つまり正常モードに設定されているならば、エラー発生回数判定部２２４は当該ＨＤＤに対応するエラーカウンタ２２８ａを参照して、エラー発生回数が予め設定されている閾値より少ないかを判定する（ステップＳ９）。もし、エラー発生回数が閾値より少ないならば、エラー発生回数判定部２２４は上記エラーカウンタ２２８ａをカウントアップする（ステップＳ１０）。これに対し、エラー発生回数が閾値より少なくないならば（ステップＳ９）、エラー発生回数判定部２２４は今回のエラー発生でエラー発生回数が閾値を超えると判定して、即ちエラー発生ＨＤＤは実際に故障する危険性が高いと判定して、その旨をエラー発生ＨＤＤの識別情報と共に警戒モード設定部２２５に通知する。なお、単なるエラー発生回数に代えて、単位時間当たりのエラー発生回数、即ちエラー発生頻度を用いることも可能である。
【００３０】
警戒モード設定部２２５はエラー発生回数判定部２２４からの通知に応じて、エラー発生ＨＤＤを警戒モードに設定する（ステップＳ１１）。この設定は、エラー発生ＨＤＤに対応するモードフラグ２２８ｂを警戒モードを示す状態に設定することにより実現される。ここでは警戒モード設定部２２５は、エラー発生ＨＤＤのステータスを表示するＬＥＤ（ステータス表示ＬＥＤ）を、「警戒（warning）」表示状態にする。
【００３１】
リカバリ部２２６は、エラー発生回数判定部２２４によりステップＳ１０が実行された場合、警戒モード設定部２２５によりステップＳ１１が実行された場合、或いはエラー発生ＨＤＤが既に警戒モードに設定されているとエラー発生回数判定部２２４によりステップＳ８で判定された場合のいずれの場合にも起動される。この場合、リカバリ部２２６は発生したエラーを回復するためのリカバリ処理を実行する（ステップＳ１２）。
【００３２】
次に、リカバリ部２２６による上記リカバリ処理（ステップＳ１２）の手順について、図４のフローチャートを参照して説明する。ここでは、ＨＤＤ１００-0及び１００-1のうちの例えばＨＤＤ１００-0でエラーが発生したものとする。
【００３３】
まずリカバリ部２２６は、データリードまたはデータライトのいずれでエラーが発生したかを判定する（ステップＳ２１）。もし、データリードでエラーが発生した場合であれば、リカバリ部２２６はエラーの種類がメディアエラーであるかを判定する（ステップＳ２２）。
【００３４】
もし、ＨＤＤ１００-0でのエラーがメディアエラーであるならば、リカバリ部２２６はリード／ライト制御部２２２を用いて、ディスクアレイ１０内のもう一方のＨＤＤ１００-1の領域のうち、ＨＤＤ１００-0のエラー発生箇所に対応する箇所のデータをリードして、そのデータを主制御部２２１によりホスト２１に返させる（ステップＳ２３）。またリカバリ部２２６は、ＨＤＤ１００-1からリードされたデータをＨＤＤ１００-0のエラー発生箇所にリード／ライト制御部２２２を用いて書き込むことにより、当該ＨＤＤ１００-0のエラー発生箇所のデータを修復する（ステップＳ２４）。即ちリカバリ部２２６は、ＨＤＤ１００-0のメディアエラーをＨＤＤ１００-1からリードされたデータで修復する。
【００３５】
これに対し、ＨＤＤ１００-0でのエラーがＣＲＣエラーなど、メディアエラー以外のエラーであるならば（ステップＳ２２）、リカバリ部２２６は上記ステップＳ２３と同様に、ディスクアレイ１０内のもう一方のＨＤＤ１００-1の領域のうち、ＨＤＤ１００-0のエラー発生箇所に対応する箇所のデータをリードして、そのデータを主制御部２２１によりホスト２１に返させる（ステップＳ２５）。なお、メディアエラー以外のエラーの場合、ＨＤＤ１００-0からのデータリードをリトライしても良い。
【００３６】
一方、データライトでエラーが発生した場合には（ステップＳ２１）、リカバリ部２２６はＨＤＤ１００-0に対するデータライトをリトライする（ステップＳ２６）。このデータライトのリトライに成功した場合、リカバリ部２２６はＨＤＤ１００-0の現在の状態を維持する（ステップＳ２８）。即ちリカバリ部２２６は、ＨＤＤ１００-0が正常モードに設定されているならば当該ＨＤＤ１００-0の正常モードを維持し、当該ＨＤＤ１００-0が警戒モードに設定されているならば当該ＨＤＤ１００-0の警戒モードを維持する。これに対し、データライトのリトライに失敗した場合、リカバリ部２２６はＨＤＤ１００-0を故障（Fail）ＨＤＤとする（ステップＳ２９）。即ちリカバリ部２２６は、ＨＤＤ１００-0を、当該ＨＤＤ１００-0がディスクアレイ１０から切り離される故障モードに設定する。この設定は、エラー発生ＨＤＤ１００-0に対応するモードフラグ２２８ｂを故障モードを示す状態に設定することにより実現される。ここではリカバリ部２２６は、ＨＤＤ１００-0のステータス表示ＬＥＤを、「故障（Fail）」表示状態にする。
【００３７】
次に整合性チェック部２２７の動作について、（１ａ）通常時、及び、（１ｂ）警戒モード時を例に、それぞれ図５（ａ）及び図５（ｂ）を参照して説明する。
【００３８】
（１ａ）通常時
通常時とは、ＨＤＤ１００-0及び１００-1が共に正常モードにある場合を意味する。この場合、整合性チェック部２２７はＨＤＤ１００-0及び１００-1にそれぞれリードコマンド５１-0及び５１-1を発行することで、当該ＨＤＤ１００-0及び１００-1の相対位置が同一の領域５２-0及び５２-1からデータを読み出すためのデータリード５３-0及び５３-1を行う。整合性チェック部２２７は、このデータリード５３-0及び５３-1の結果、ＨＤＤ１００-0及び１００-1の一方にメディアエラーがあった場合、メディアエラーが発生した箇所のデータを他方のリードデータを用いて修復する。図５（ａ）の例では、記号×で示されるＨＤＤ１００-0の領域５２-0でメディアエラーが発生している。この場合、整合性チェック部２２７のデータ修復部２２７ｂは、ＨＤＤ１００-0の領域５２-1から読み出されたデータをＨＤＤ１００-0の領域５２-0に書き込むことにより、当該ＨＤＤ１００-0の領域５２-0のデータの修復５４を実行する。整合性チェック部２２７は、ＨＤＤ１００-0及び１００-1に対するリードコマンドの発行を、アクセス先を切り替えながら繰り返す。
【００３９】
（１ｂ）警戒モード時
警戒モード時とは、ＨＤＤ１００-0及び１００-1のいずれか一方が警戒モードにある場合を意味する。本実施形態では、警戒モードにあるＨＤＤは極力アクセスされないように制御される。そこで警戒モード時では、整合性チェック部２２７のベリファイコマンド実行部２２７ａが動作して、ＲＡＩＤコントローラ２２へのデータ転送の伴うリードコマンドの発行に代えて、正常モードにあるＨＤＤに対してのみベリファイ（Verify）コマンドを発行する。図５（ｂ）の例ではＨＤＤ１００-0が警戒モードにある。この場合、ベリファイコマンド実行部２２７ａは、ＨＤＤ１００-1に対してのみベリファイコマンド５５を発行する。ベリファイコマンド５５は、当該コマンド５５で指定されたＨＤＤ（ここではＨＤＤ１００-1）の領域のデータを当該ＨＤＤ内部のバッファメモリに読み出させてエラーの有無を判定させ、その判定結果（つまりベリファイコマンドの実行結果）をＲＡＩＤコントローラ２２に通知させるためのコマンドである。図５（ｂ）の例では、ＨＤＤ１００-1の領域５６-1を検査するためのベリファイコマンド５５が発行されたものとする。またＨＤＤ１００-1において、領域５６-1のデータが正常に読み出せず、当該ＨＤＤ１００-1からＲＡＩＤコントローラ２２にエラー５７が通知されたものとする。
【００４０】
整合性チェック部２２７のデータ修復部２２７ｂは、ベリファイコマンド実行部２２７ａが発行したベリファイコマンド５５に対してＨＤＤ１００-1からエラー５７が通知された場合に限り、ＨＤＤ１００-1の領域５６-1に対応するＨＤＤ１００-0の領域５６-0からデータを読み出すためのデータリード５８をリード／ライト制御部２２２を用いて実行する。そしてデータ修復部２２７ｂは、ＨＤＤ１００-0の領域５６-0から読み出されたデータをＨＤＤ１００-1の領域５６-1に書き込むデータライト５９をリード／ライト制御部２２２を用いて実行することにより、当該ＨＤＤ１００-1の領域５６-1のデータの修復６０を実行する。
【００４１】
このように本実施形態では、警戒モード時には、ＨＤＤ１００-0及び１００-1のうちの正常モードのＨＤＤのチェックのみがベリファイコマンドを用いて行われる。つまり警戒モード時には、警戒モードに設定されているＨＤＤへのアクセスを極力抑止するために、通常モード時と異なって正常モードのＨＤＤのチェックのみが行われる。このチェックは厳密には整合性チェックとは異なる。そこで警戒モードにおける整合性チェック部２２７のチェック動作を簡易整合性チェックと呼ぶ。
【００４２】
［第２の実施形態］
次に、本発明の第２の実施形態について説明する。図６は、本発明の第２の実施形態に係る情報処理システムの構成を示すブロック図である。図６において、図１と等価な部分には同一符号を付してある。
【００４３】
図６のシステムは、次の点で図１のシステムと相違する。まず図６のシステムでは、情報処理装置２０に代えて、ＲＡＩＤコントローラ２２０を含む情報処理装置２００が用いられる。この情報処理装置２００のＲＡＩＤコントローラ２２０には、ディスクアレイ１０とは別に、予備のＨＤＤであるホットスペアＨＤＤ１０１が予め接続されている。ＲＡＩＤコントローラ２２０はリビルド部２２９を含む。リビルド部２２９は、ディスクアレイ１０を構成するＨＤＤ１００-0及び１００-1のいずれか一方のＨＤＤが警戒モードまたは故障モードとなった場合に、その警戒モードまたは故障モードとなったＨＤＤのデータを正常なＨＤＤを用いてホットスペアＨＤＤ１０１にリビルド（復元）する。このリビルドは、ＨＤＤのアドレスを例えばブロックアドレス０から最大ブロックアドレスまで順次インクリメントしながら実行されるものとする。なお、このリビルドが、ＨＤＤのアドレスを最大ブロックアドレスからブロックアドレス０まで順次デクリメントしながら実行される構成であっても構わない。不揮発性メモリ２２８の所定領域は、リビルド部２２９によるリビルドの状態を表すリビルドフラグ２２８ｃと、最新リビルド済みアドレス（ブロックアドレス）２２８ｄとを保持するのに用いられる。最新リビルド済みアドレス２２８ｄは、最も最近にリビルドされたブロックアドレスを示す。
【００４４】
次に、図６のシステムにおけるＲＡＩＤコントローラ２２０の動作手順について、当該ＲＡＩＤコントローラ２２０内の主制御部２２１がホスト２１からのリードまたはライトコマンドを受け付けた場合を例に、図７乃至図９を参照して説明する。図７及び図８はＲＡＩＤコントローラ２２の動作手順を示すフローチャート、図９はリビルド処理を説明するための図である。
【００４５】
主制御部２２１は、ホスト２１からリードまたはライトコマンドを受け付けた場合、リード／ライト制御部２２２に対して当該コマンドで指定されたデータリードまたはデータライトを要求する。すると、リード／ライト制御部２２２は、データリードまたはデータライトのいずれが要求されたかを判定する（ステップＳ３１）。
【００４６】
リード／ライト制御部２２２はデータリードが要求された場合であれば、上記第１の実施形態と同様に、ディスクアレイ１０を構成するＨＤＤ１００-0及び１００-1の中から、アクセス先のＨＤＤを決定する（ステップＳ３２）。次にリード／ライト制御部２２２は、決定されたＨＤＤが警戒モードに設定されているかを判定する（ステップＳ３３）。もし、決定されたＨＤＤが警戒モードに設定されているならば、リード／ライト制御部２２２は当該ＨＤＤに対するアクセスを極力少なくするために、アクセス先のＨＤＤを、ディスクアレイ１０内の残りのＨＤＤに決定し直す（ステップＳ３４）。
【００４７】
リード／ライト制御部２２２は、アクセス先のＨＤＤが決定し直された場合（ステップＳ３４）、その決定し直されたＨＤＤからのデータリードを制御する（ステップＳ３５）。これに対し、ステップＳ３２で決定されたＨＤＤが警戒モードに設定されていない場合（ステップＳ３３）、リード／ライト制御部２２２は、当該ステップＳ３２で決定されたＨＤＤからのデータリードを制御する（ステップＳ３５）。このように、データリードが要求された場合、リード／ライト制御部２２２は上記第１の実施形態におけるステップＳ２乃至Ｓ５に相当するステップＳ３１乃至Ｓ３５を実行することにより、警戒モードのＨＤＤからのデータリードを抑止する。
【００４８】
一方、ホスト２１からデータライトが要求された場合、リード／ライト制御部２２２はリビルド部２２９によるリビルド処理の実行中（リビルド中）であるかを判定する（ステップＳ３６ａ）。リビルド中であるかは、リビルドフラグ２２８ｃを参照することにより判定可能である。もし、リビルド中であるならば、リード／ライト制御部２２２はリビルド済みの領域へのライトであるかを判定する（ステップＳ３６ｂ）。リビルド済みの領域へのライトであるかは、最新リビルド済みアドレス２２８ｄを参照して、要求されたデータライト先の領域の最終位置のブロックアドレスが当該最新リビルド済みアドレス２２８ｄと等しいか、或いは当該最新リビルド済みアドレス２２８ｄよりも小さいかを比較することにより判定可能である。
【００４９】
もし、リビルド済みの領域へのライトでないならば、リード／ライト制御部２２２はディスクアレイ１０内のＨＤＤ１００-0及び１００-1の両ＨＤＤへのデータライトを制御する（ステップＳ３６ｃ）。これに対し、リビルド済みの領域へのライトであるならば、リード／ライト制御部２２２はディスクアレイ１０内のＨＤＤ１００-0及び１００-1の両ＨＤＤへのデータライトだけでなく、ホットスペアＨＤＤ１０１へのデータライトも制御する（ステップＳ３６ｄ）。即ち、リード／ライト制御部２２２は、ディスクアレイ１０内のＨＤＤ１００-0及び１００-1、並びにホットスペアＨＤＤ１０１の同一ブロック領域に同一データを書き込む。これによりＨＤＤ１００-0及び１００-1のデータの冗長性が維持されると共に、ＨＤＤ１００-0とホットスペアＨＤＤ１０１とのデータの一致化が図られる。
【００５０】
さて、ステップＳ３５のデータリード、ステップＳ３６ｃのデータライトまたはステップＳ３６ｄのデータライトが実行されると、エラー判定部２２３は当該データリードまたはデータライトでエラーが発生したかを判定する（ステップＳ３７）。エラー発生回数判定部２２４は、エラー判定部２２３によってエラー発生が判定された場合、エラーが発生したＨＤＤが既に警戒モードに設定されているかを判定する（ステップＳ３８）。
【００５１】
もし、エラーが発生したＨＤＤが警戒モードに設定されていないならば、エラー発生回数判定部２２４はエラー発生回数が閾値より少ないかを判定する（ステップＳ３９）。もし、エラー発生回数が閾値より少ないならば、エラーが発生したＨＤＤに対応するエラーカウンタ２２８ａがエラー発生回数判定部２２４によってカウントアップされる（ステップＳ４０）。これに対し、エラー発生回数が閾値より少なくないならば（ステップＳ３９）、エラー発生ＨＤＤが警戒モード設定部２２５によって警戒モードに設定される（ステップＳ４１）。
【００５２】
リカバリ部２２６は、エラー発生回数判定部２２４によりステップＳ４０が実行された場合、警戒モード設定部２２５によりステップＳ４１が実行された場合、或いはエラー発生ＨＤＤが既に警戒モードに設定されているとエラー発生回数判定部２２４によりステップＳ３８で判定された場合のいずれの場合にも起動される。この場合、リカバリ部２２６は発生したエラーを回復するためのリカバリ処理を、前記第１の実施形態と同様の手順（つまり図４のフローチャートに示す手順）で実行する（ステップＳ４２）。
【００５３】
リカバリ部２２６によるリカバリ処理が完了すると、リビルド部２２９は自身がリビルド中であるかを判定する（ステップＳ４３）。リビルド部２２９は自身がリビルド中でないならば、ＨＤＤ１００-0及び１００-1にそれぞれ対応する各モードフラグ２２８ｂを参照して警戒モード及び故障モードのいずれか一方のモードに設定されているＨＤＤが存在するかを判定する（ステップＳ４４，Ｓ４５）。
【００５４】
もし、警戒モードまたは故障モードに設定されているＨＤＤが存在するならば、リビルド部２２９は、当該警戒モードまたは故障モードに設定されているＨＤＤのデータをホットスペアＨＤＤ１０１に復元するためのリビルド処理を開始する（ステップＳ４６）。ここでは、ＨＤＤ１００-0が警戒モードに、ＨＤＤ１００-1が正常モードに、それぞれ設定されているものとする。この場合、リビルド処理は、図９（ａ）に示すように、ＨＤＤ１００-1から一定サイズのデータを読み出すデータリード９１と、データリード９１でＨＤＤ１００-1から読み出されたデータをホットスペアＨＤＤ１０１にコピーするデータコピー９２とを、ＨＤＤのアドレスをブロックアドレス０から最大ブロックアドレスまで順次インクリメントしながら繰り返すことにより実行される。このリビルド処理は、例えばＨＤＤ１００-0が故障モードに、ＨＤＤ１００-1が正常モードに、それぞれ設定されている場合にも、同様に実行される。
【００５５】
但し、警戒モードのＨＤＤと故障モードのＨＤＤとは、次のように取り扱いが異なる。まず、故障モードのＨＤＤはディスクアレイ１０から切り離される。これに対し、警戒モードのＨＤＤはリビルド中もディスクアレイ１０のメンバとなっている状態を継続する。
【００５６】
そこで本実施形態では、図９（ａ）の例のようにＨＤＤ１００-0が警戒モードに設定されている状態で、正常なＨＤＤ１００-1からのデータリード９１でエラーとなった場合、そのエラー箇所に対応するＨＤＤ１００-0のデータを利用してリビルド処理が継続される。この様子を図９（ｂ）に示す。ここでは、図９（ａ）に示すＨＤＤ１００-1からのデータリード９１に代えて、警戒モードのＨＤＤ１００-0からのデータリード９３が実行される。そして、データリード９３でＨＤＤ１００-0から読み出されたデータをホットスペアＨＤＤ１０１にコピーするデータコピー９４が実行される。このとき、データリード９３で読み出されたデータを用いて、ＨＤＤ１００-1におけるエラー箇所（図９（ｂ）において記号×で示される箇所）のデータを修復することも可能である。データコピー９４が終了すると、ブロックアドレスが更新されて、再び図９（ａ）に示すＨＤＤ１００-1からデータリード９１と、ホットスペアＨＤＤ１０１へのデータコピー９２とが行われる。
【００５７】
一方、リビルド部２２９は自身がリビルド中であるか（ステップＳ４３）、自身がリビルド中でなくてもＨＤＤ１００-0及び１００-1が警戒モードでも故障モードでもないならばならば（ステップＳ４４，Ｓ４５）、リビルド部２２９は新たなリビルド処理はしない。即ちリビルド部２２９はリビルド中であるならばリビルド処理を継続し、リビルド中でないならばリビルド処理を開始しない。
【００５８】
上述したように本実施形態では、ディスクアレイ１０内で故障する危険性のあるＨＤＤ、例えばＨＤＤ１００-0が検出されると、当該ＨＤＤ１００-0が警戒モードに設定される。すると、ＨＤＤ１００-0へのアクセスを極力抑えながら、ディスクアレイ１０における冗長性を損なうことなく、ホットスペアＨＤＤ１０１に対するリビルドが行われる。しかも本実施形態においては、ＨＤＤ１００-0へのアクセスを極力抑えて当該ＨＤＤ１００-0が実際に故障する時期を遅らせることで、ホットスペアＨＤＤ１０１に対するリビルドを、ＨＤＤ１００-0が実際に故障する前に終わらせることが可能となる。この場合、リビルドのためのＨＤＤ１００-1からのデータリードでエラーとなっても、ＨＤＤ１００-0のデータを利用してホットスペアＨＤＤ１０１に対するリビルドを行うことができる。
【００５９】
上記したように本実施形態においては、ディスクアレイ１０における冗長性を損なうことなく、ホットスペアＨＤＤ１０１に対するリビルドを行うことができる。このため、ディスクアレイ１０が、仮にリトライで救われるエラーが発生している冗長性のないＲＡＩＤ０の場合でも、ディスクアレイ１０内のＨＤＤのデータをホットスペアＨＤＤ１０１にリビルドすることが可能となる。
【００６０】
上記第２の実施形態では、エラーカウンタ２２８ａ、モードフラグ２２８ｂ、リビルドフラグ２２８ｃ及び最新リビルド済みアドレス２２８ｄが不揮発性メモリ２２８内に配置される。しかし、エラーカウンタ２２８ａ、モードフラグ２２８ｂ、リビルドフラグ２２８ｃ及び最新リビルド済みアドレス２２８ｄが、ＨＤＤ１００-0及びＨＤＤ１００-1の所定の領域、例えばシステム領域と呼ばれる、ホスト２１からは認識されないＨＤＤ１００-0及びＨＤＤ１００-1の特別の領域に配置されても構わない。
【００６１】
［第２の実施形態の変形例］
上記第２の実施形態では、ディスクアレイ２０が２台のＨＤＤ２１-0及び２１-1から構成され、ＲＡＩＤ１のディスクアレイ（つまりミラーリングディスクアレイ）として機能する場合を前提としている。しかし、ディスクアレイを構成するＨＤＤの台数は２台を越えていても良く、ＲＡＩＤレベルもＲＡＩＤ１でなくても良い。
【００６２】
そこで、図６のディスクアレイ１０に代えて、ＲＡＩＤ１以外のＲＡＩＤレベルを適用するディスクアレイを用いた、第２の実施形態の変形例について、図６を援用して説明する。図１０は、図６のシステムにおいて、ディスクアレイ１０に代えて用いられるディスクアレイ１００の構成を示す。このディスクアレイ１００は、３台のＨＤＤ１１０-0，１１０-1及び１１０-2から構成されるものとする。必要ならば、図６において、ディスクアレイ１０を図１０のディスクアレイ１００に置き換えられたい。
【００６３】
本変形例において、ディスクアレイ１００はＲＡＩＤ５レベルで用いられるものとする。この場合、ＨＤＤ１１０-0乃至１１０-2は、いずれもデータ並びにパリティデータ（冗長データ）の格納用に用いられ、パリティデータは各ＨＤＤ１１０-0乃至１１０-2に分散して格納される。なお、ディスクアレイ１００がＲＡＩＤ３レベルで用いられる場合には、ＨＤＤ１１０-0乃至１１０-2のうちの２台がデータ格納用（データディスク用）に、残りの１台がパリティデータ格納用（パリティディスク用）に割り当てられる。
【００６４】
ＨＤＤ１１０-0乃至１１０-2によって実現されるディスクアレイ１００のディスク領域は、図１０に示すようにストライプ単位に分割して管理される。ストライプは、ＨＤＤ１１０-0乃至１１０-2の相対位置が同一のブロック領域から構成される。ここでは、説明を簡略化するために、１ストライプを構成するＨＤＤ１１０-0乃至１１０-2のブロックサイズが１ブロックであるものとする。この場合、１ストライプを構成するＨＤＤ１１０-0乃至１１０-2の各ブロックのうち、２つのブロックにはそれぞれデータＤ０及びＤ１が、残りの１ブロックにはデータＤ０及びＤ１のパリティデータＰが格納される。パリティデータＰは、データＤ０及びＤ１を排他的論理和（ＸＯＲ）するための演算（ＥＸＯＲ演算）により生成される。
【００６５】
図１０のディスクアレイ１００において、ＨＤＤ１１０-0乃至１１０-2のうちの例えばＨＤＤ１１０-0が警戒モードに設定されているものとする。この場合、ＨＤＤ１１０-0は上記第１または第２の実施形態と同様に、他のＨＤＤに比べて極力アクセスされないように制御される。以下、ＨＤＤ１１０-0が警戒モードに設定されている状態で、ホスト２１からＲＡＩＤコントローラ２２０に対してデータＤ０が格納されている領域からのリードが要求された場合のデータリード動作について、図１１を参照して説明する。
【００６６】
リード／ライト制御部２２２は、データＤ０が格納されている領域からのリードが要求された場合、図７のステップＳ３２に相当する処理で、アクセス先ＨＤＤとしてＨＤＤ１１０-0を決定する。この例のように、ＨＤＤ１１０-0が警戒モードに設定されている場合、ＲＡＩＤコントローラ２２はアクセス先ＨＤＤを、図７のステップＳ３４に相当する処理で、ディスクアレイ１００内の残りの全てのＨＤＤ、即ちＨＤＤ１１０-1及び１１０-2に決定し直す。この場合、リード／ライト制御部２２２は、図１１に示すように、データＤ０が格納されている領域と同一ストライプに属するＨＤＤ１１０-1及び１１０-2の領域からデータまたはパリティデータ（冗長データ）を読み出すためのデータリード１１及び１２を実行する。図１１の例では、このデータリード１１及び１２により、それぞれＨＤＤ１１０-1及び１１０-2からデータＤ１及びパリティデータ（冗長データ）Ｐが読み出される。リード／ライト制御部２２２は、ＨＤＤ１１０-1及び１１０-2からそれぞれ読み出されたＤ１及びＰのＥＸＯＲ演算１３を行うことで、Ｄ１及びＰからデータＤ０を復元する。このようにしてリード／ライト制御部２２２は、警戒モードにあるＨＤＤ１１０-0からデータＤ０を読み出すことなく、当該データＤ０を取得する。リビルド部２２９によるリビルド処理も同様である。例えば、ＨＤＤ１１０-0のデータＤ０をホットスペアＨＤＤ１０１に書き込む場合、リビルド部２２９はＨＤＤ１１０-1及び１１０-2からそれぞれデータＤ０と組をなすデータＤ１及びパリティデータＰを読み出して、当該Ｄ１及びＰのＥＸＯＲ演算を行うことでデータＤ０を復元する。
【００６７】
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【００６８】
【図１】本発明の第１の実施形態に係る情報処理システムの構成を示すブロック図。
【図２】同第１の実施形態におけるＲＡＩＤコントローラ２２の動作手順を示すフローチャート。
【図３】同第１の実施形態のデータリード時における、ディスクアレイ１０内のアクセス先ＨＤＤと、同第１の実施形態のデータライト時における、ディスクアレイ１０内のアクセス先ＨＤＤとを、それぞれ示す図。
【図４】図２のフローチャートにおけるリカバリ処理の手順を示すフローチャート。
【図５】通常時と警戒モード時の各々の場合における整合性チェック部２２７の動作を説明するための図。
【図６】本発明の第２の実施形態に係る情報処理システムの構成を示すブロック図。
【図７】同第２の実施形態におけるＲＡＩＤコントローラ２２０の動作手順を示すフローチャートの一部を示す図。
【図８】同第２の実施形態におけるＲＡＩＤコントローラ２２０の動作手順を示すフローチャートの残りを示す図。
【図９】同第２の実施形態におけるリビルド処理を説明するための図。
【図１０】同第２の実施形態の変形例を説明するための、図６のディスクアレイ１０に代えて用いられるディスクアレイ１００の構成を示す図。
【図１１】図１０のディスクアレイ１００内のＨＤＤ１１０-0が警戒モードに設定されている状態で、ホストからＲＡＩＤコントローラに対してデータＤ０が格納されている領域からのリードが要求された場合のデータリード動作を説明するための図。
【符号の説明】
【００６９】
１０，１００…ディスクアレイ、１００-0，１００-1，１１０-0〜１１０-2…ＨＤＤ（ディスクドライブ）、２０，２００…情報処理装置、２１…ホスト、２２，２２０…ＲＡＩＤコントローラ（アレイコントローラ）、２２１…主制御部、２２２…リード／ライト制御部、２２３…エラー判定部、２２４…エラー発生回数判定部（故障予知手段）、２２５…警戒モード設定部（特定モード設定手段）、２２６…リカバリ部、２２７…整合性チェック部、２２７ａ…ベリファイコマンド実行部、２２７ｂ…データ修復部、２２８…不揮発性メモリ（記憶手段）、２２８ａ…エラーカウンタ、２２８ｂ…モードフラグ、２２８ｃ…リビルドフラグ、２２９…リビルド部。
【図１】
2006301714.tif 000003
【図２】
2006301714.tif 000004
【図３】
2006301714.tif 000005
【図４】
2006301714.tif 000006
【図５】
2006301714.tif 000007
【図６】
2006301714.tif 000008
【図７】
2006301714.tif 000009
【図８】
2006301714.tif 000010
【図９】
2006301714.tif 000011
【図１０】
2006301714.tif 000012
【図１１】
2006301714.tif 000013