(57)【特許請求の範囲】
【請求項１】
データを記憶する複数のデータ記憶部と、
前記複数のデータ記憶部の属性に基づいて各データ記憶部の所属する属性グループを記憶する属性グループ記憶部と、
即時切り離し要因となる異常が生じた場合に、前記属性グループ記憶部に記憶された属性グループに基づいて、前記即時切り離し要因となる異常が生じたデータ記憶部と同じ属性グループに所属する他のデータ記憶部を検出し、当該他のデータ記憶部において発生した異常の発生履歴を表す値の更新処理を、前記他のデータ記憶部を予防保守対象として抽出するタイミングを加速させる更新処理に設定変更して、当該設定変更後に更新された前記他のデータ記憶部における異常の発生履歴を表す値に基づいて前記他のデータ記憶部を予防保守対象として抽出する予防保守対象抽出部と、
前記予防保守対象抽出部によって抽出されたデータ記憶部に記憶されているデータの予防保守を実行する予防保守実行部と
を有することを特徴とするストレージ装置。
【請求項２】
前記予防保守対象抽出部は、
前記異常が生じたデータ記憶部に即時切り離し要因となる異常が生じるまでに生じた所定要因の異常発生回数を計測し、
前記他のデータ記憶部における前記所定要因の異常発生回数が該計測した所定要因の異常発生回数に到達すると前記他のデータ記憶部を予防保守対象として検出して、前記予防保守対象として抽出するタイミングを加速させることを特徴とする請求項１に記載のストレージ装置。
【請求項３】
各データ記憶部の前記異常の発生履歴を表す値は、各データ記憶部に所定要因の異常が生じた際に規定値を積算した積算値であり、
複数のデータ記憶部のいずれかに即時切り離し要因となる異常が生じて、前記更新処理の設定が変更された場合に、
前記予防保守対象抽出部は、
前記即時切り離し要因となる異常が生じたデータ記憶部と同じ属性グループに所属する前記他のデータ記憶部に所定要因の異常が生じた際に、前記規定値より大きい値を前記積算値に積算して、前記積算値が閾値に到達するタイミングを速めて、前記予防保守対象として抽出するタイミングを加速させることを特徴とする請求項１に記載のストレージ装置。
【請求項４】
前記予防保守対象抽出部は、
即時切り離し要因となる異常が生じたデータ記憶部の直前の異常から前記即時切り離し要因となる異常が発生するまでの異常発生間隔を算出する異常発生間隔算出部と、
前記異常発生間隔算出部によって算出された異常発生間隔が、前記所定要因の異常が生じた前記他のデータ記憶部の予防保守に要する予防保守時間より短いか否かを判定する異常発生間隔判定部と、
前記異常発生間隔判定部によって前記異常発生間隔が前記予防保守時間より短いと判定されて、前記更新処理の設定が変更された場合に、前記所定要因の異常が生じた前記他のデータ記憶部の積算値に前記規定値より大きい値を積算して、前記積算値が閾値に到達するタイミングを速めて、前記予防保守対象として抽出するタイミングを加速させることを特徴とする請求項３に記載のストレージ装置。
【請求項５】
前記複数のデータ記憶部で構成されるＲＡＩＤグループを記憶するＲＡＩＤグループ記憶部を有し、
前記予防保守対象抽出部は、
前記ＲＡＩＤグループ毎に計測された前記所定要因の異常の発生履歴および前記ＲＡＩＤグループのＲＡＩＤレベルに基づいて、前記他のデータ記憶部を予防保守対象として抽出することを特徴とする請求項２に記載のストレージ装置。
【請求項６】
データを記憶する複数のデータ記憶部の属性に基づいて各データ記憶部の所属する属性グループを記憶する属性グループ記憶部と、
即時切り離し要因となる異常が生じた場合に、前記属性グループ記憶部に記憶された属性グループに基づいて、前記即時切り離し要因となる異常が生じたデータ記憶部と同じ属性グループに所属する他のデータ記憶部を検出し、当該他のデータ記憶部において発生した異常の発生履歴を表す値の更新処理を、前記他のデータ記憶部を予防保守対象として抽出するタイミングを加速させる更新処理に設定変更して、当該設定変更後に更新された前記他のデータ記憶部における異常の発生履歴を表す値に基づいて前記他のデータ記憶部を予防保守対象として抽出する予防保守対象抽出部と、
前記予防保守対象抽出部によって抽出されたデータ記憶部に記憶されているデータの予防保守を実行する予防保守実行部と
を有することを特徴とするストレージ装置のコントローラ。
【請求項７】
データを記憶する複数のデータ記憶部を有するストレージ装置が、前記データ記憶部の予防保守を制御する制御方法であって、
前記ストレージ装置が、
データを記憶する複数のデータ記憶部の属性に基づいて各データ記憶部の所属する属性グループを記憶する属性グループ記憶ステップと、
即時切り離し要因となる異常が生じた場合に、前記属性グループ記憶ステップに記憶された属性グループに基づいて、前記即時切り離し要因となる異常が生じたデータ記憶部と同じ属性グループに所属する他のデータ記憶部を検出し、当該他のデータ記憶部において発生した異常の発生履歴を表す値の更新処理を、前記他のデータ記憶部を予防保守対象として抽出するタイミングを加速させる更新処理に設定変更して、当該設定変更後に更新された前記他のデータ記憶部における異常の発生履歴を表す値に基づいて前記他のデータ記憶部を予防保守対象として抽出する予防保守対象抽出ステップと、
前記予防保守対象抽出ステップによって抽出されたデータ記憶部に記憶されているデータの予防保守を実行する予防保守実行ステップと
を含むことを特徴とするストレージ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、ストレージ装置のコントローラおよびストレージ装置の制御方法に関する。
【背景技術】
【０００２】
近年、ストレージ装置の信頼性を高めるために、ＲＡＩＤ（Redundant  Array  of  Independent  Disks）技術が普及している。このＲＡＩＤ技術を用いたストレージ装置には、同じ工場で同時期に製造された多数のディスクが内蔵される場合が多い。このような場合に、１つのディスクが故障すると、同時期に製造された別のディスクが同種の要因で故障する可能性がある。
【０００３】
故障ディスクのデータを復旧させるためには、故障ディスクの交換処理を行うタイミングを特定する機構が必要である。例えば、エラーが発生した故障ディスクについてエラーに応じた点数を加算するようにし、点数が閾値以上になったとき該ディスクの交換処理を行う技術がある。
【０００４】
例えば、従来の故障ディスクの交換処理を行うタイミングについて、図２９を参照して説明する。図２９は、従来のディスクの交換処理を行うタイミングの一例を説明する図である。図２９に示すように、横軸は時間軸を示し、縦軸はディスク名を示す。ディスク名がＤＩＳＫ０のディスクについて、１回目のリカバードエラーが発生し、時間の経過とともに、２回目及び３回目のリカバードエラーが発生する。そして、ＤＩＳＫ０の４回目のリカバードエラーが発生すると、閾値を４回とした場合に、エラー発生回数が閾値以上となるので、ＤＩＳＫ０のデータを復旧させる。すなわち、ＤＩＳＫ０のデータをホットスペアディスクに書き込み、ＤＩＳＫ０をホットスペアディスクに交換することでＤＩＳＫ０のデータを復旧させる。なお、リカバードエラーとは、ディスクにエラーが発生してもリトライすることで復旧可能となるエラーをいう。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２０５３１６号公報
【特許文献２】特開２００４−１１８３９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＲＡＩＤ技術を用いたストレージ装置内のディスクに復旧可能なリカバードエラーが発生した後、復旧不可能なエラー（以降、「アンリカバードエラー」という。）が発生する場合がある。このような場合に、アンリカバードエラーが発生した故障ディスクと同じ工場で同時期に製造された別のディスクは、故障ディスクと同種のエラーを発生しやすい。このため、故障ディスクと同時期に製造された別のディスクが、ＲＡＩＤの冗長度以上に当該故障ディスクのアンリカバードエラーと同時期に壊れてしまい、データを復旧できない場合があるという問題があった。
【０００７】
ここで、ディスクがデータを復旧できない場合について、図３０を参照して説明する。図３０は、データを復旧できない場合を説明する図である。図３０に示すように、横軸は時間軸を示し、縦軸はディスク名を示す。ディスク名がＤＩＳＫ０のディスクについて、１回目のリカバードエラーが発生し、時間の経過とともに、２回目のリカバードエラーが発生する。そして、エラー発生回数が閾値以上になる前の３回目にアンリカバードエラーが発生し、ＤＩＳＫ０が切り離されたとする。一方、ＤＩＳＫ０と同時期に製造されたＤＩＳＫ１のディスクについて、ＤＩＳＫ０とほぼ同時に１回目のリカバードエラーが発生し、時間の経過とともに、２回目のリカバードエラーが発生する。そして、エラー発生回数が閾値以上になる前の３回目にアンリカバードエラーが発生し、ＤＩＳＫ１が切り離されたとする。
【０００８】
このような場合に、仮にＤＩＳＫ０とＤＩＳＫ１とがＲＡＩＤ１構成であるとすると、双方のディスクとも故障してしまうこととなるので、データがロストしてしまい、データを復旧できないこととなる。すなわち、故障ディスクＤＩＳＫ０と同時期に製造された別のＤＩＳＫ１が、ＲＡＩＤの冗長度以上にデータを復旧できない場合となる。
【０００９】
なお、上記課題は、同じ工場で同時期に製造されたディスクに限らず、同種の要因で故障が発生するような同一の属性を備えるディスク全般に同様に生ずる課題である。
【００１０】
開示の技術は、上記に鑑みてなされたものであって、データのロストを防止できるストレージ装置等を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本願の開示するストレージ装置は、一つの態様において、データを記憶する複数のデータ記憶部と、前記複数のデータ記憶部の属性に基づいて各データ記憶部の所属する属性グループを記憶する属性グループ記憶部と、前記データ記憶部に生じた異常を記憶する異常記憶部と、前記データ記憶部に生じた異常の発生履歴及び前記属性グループ記憶部によって記憶された属性グループに基づいて、前記異常記憶部によって記憶された異常が生じたデータ記憶部と同じ属性グループに所属する他のデータ記憶部を予防保守対象として抽出する予防保守対象抽出部と、前記予防保守対象抽出部によって抽出されたデータ記憶部に記憶されているデータの予防保守を実行する予防保守実行部とを備える。
【発明の効果】
【００１２】
本願の開示するストレージ装置の一つの態様によれば、異常が生じたデータ記憶部と同じ属性グループに所属する他のデータ記憶部のデータのロストを防止できるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１に係るストレージ装置の構成を示す機能ブロック図である。
【図２】図２は、実施例２に係るＲＡＩＤ装置の構成を示す機能ブロック図である。
【図３】図３は、実施例２に係るＲＡＩＤ装置のＲＡＩＤコントローラの構成を示す機能ブロック図である。
【図４】図４は、ロットグループテーブルのデータ構造の一例を示す図である。
【図５】図５は、異常発生履歴テーブルのデータ構造の一例を示す図である。
【図６】図６は、予防保守加速フラグテーブルのデータ構造の一例を示す図である。
【図７】図７は、実施例２に係る予防保守加速処理の一例を示す図である。
【図８】図８は、実施例２に係る異常発生履歴テーブルの加点値の変化を示す図である。
【図９】図９は、実施例２に係るグループ化の処理手順を示すフローチャートである。
【図１０】図１０は、実施例２に係るディスクのリカバードエラー発生時の処理手順を示すフローチャートである。
【図１１】図１１は、実施例２に係るディスクのアンリカバードエラー発生時の処理手順を示すフローチャートである。
【図１２】図１２は、実施例３に係るＲＡＩＤ装置のＲＡＩＤコントローラの構成を示す機能ブロック図である。
【図１３】図１３は、異常発生履歴テーブルのデータ構造の一例を示す図である。
【図１４】図１４は、リカバリ上限回数テーブルのデータ構造の一例を示す図である。
【図１５】図１５は、実施例３に係る予防保守加速処理の一例を示す図である。
【図１６】図１６は、実施例３に係る異常発生履歴テーブルのリカバードエラー回数の変化を示す図である。
【図１７】図１７は、実施例３に係るディスクのリカバードエラー発生時の処理手順を示すフローチャートである。
【図１８】図１８は、実施例３に係るディスクのアンリカバードエラー発生時の処理手順を示すフローチャートである。
【図１９】図１９は、実施例４に係るＲＡＩＤ装置のＲＡＩＤコントローラの構成を示す機能ブロック図である。
【図２０】図２０は、ＲＡＩＤグループテーブルのデータ構造の一例を示す図である。
【図２１】図２１は、加速条件判定の具体例を説明する図である。
【図２２】図２２は、実施例４に係るディスクのリカバードエラー発生時の処理手順を示すフローチャートである。
【図２３】図２３は、実施例４に係るディスクのアンリカバードエラー発生時の処理手順を示すフローチャートである。
【図２４】図２４は、予防保守中にアンリカバードエラーが発生する場合を説明する図である。
【図２５】図２５は、実施例５に係るＲＡＩＤ装置のＲＡＩＤコントローラの構成を示す機能ブロック図である。
【図２６】図２６は、実施例５に係るディスクのリカバードエラー発生時の処理手順を示すフローチャートである。
【図２７】図２７は、実施例５に係るディスクのアンリカバードエラー発生時の処理手順を示すフローチャートである。
【図２８】図２８は、実施例５に係る予防保守加速処理の一例を示す図である。
【図２９】図２９は、従来のディスクの交換処理を行なうタイミングの一例を説明する図である。
【図３０】図３０は、データを復旧できない場合を説明する図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示するストレージ装置、ストレージ装置のコントローラおよびストレージ装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
【実施例１】
【００１５】
図１は、本実施例１に係るストレージ装置の構成を示す機能ブロック図である。図１に示すように、ストレージ装置１は、属性グループ記憶部１１、異常記憶部１２、予防保守対象抽出部１３、予防保守実行部１４及び複数のデータ記憶部１５を有する。データ記憶部１５は、データを記憶する記憶領域を備える。
【００１６】
属性グループ記憶部１１は、複数のデータ記憶部１５の属性に基づいて各データ記憶部１５の所属する属性グループを記憶する。異常記憶部１２は、データ記憶部１５に生じた異常を記憶する。
【００１７】
予防保守対象抽出部１３は、データ記憶部１５に生じた異常の発生履歴及び属性グループ記憶部１１によって記憶された属性グループに基づいて、異常記憶部１２によって記憶された異常が生じたデータ記憶部１５と同じ属性グループに所属する他のデータ記憶部１５を予防保守対象として抽出する。予防保守実行部１４は、予防保守対象抽出部１３によって抽出されたデータ記憶部１５に記憶されているデータの予防保守を実行する。
【００１８】
このようにして、ストレージ装置１は、異常が生じたデータ記憶部１５と同じ属性グループに所属する他のデータ記憶部１５を予防保守対象として抽出し、データの予防保守を実行することとした。このため、ストレージ装置１は、予防保守対象として抽出した他のデータ記憶部１５に異常が発生する前にデータを確保できるので、データのロストを防止できる。
【００１９】
ところで、実施例１に係るストレージ装置１は、ＲＡＩＤ（Redundant  Array  of  Independent  Disks）技術を適用したＲＡＩＤ装置であっても良く、その実施例について、以下に説明する。
【実施例２】
【００２０】
［実施例２に係るＲＡＩＤ装置の構成］
図２は、実施例２に係るＲＡＩＤ装置２の構成を示す機能ブロック図である。図２に示すように、ＲＡＩＤ装置２は、２台のＲＡＩＤコントローラ２０及び複数のディスクエンクロージャ３０を有する。ＲＡＩＤコントローラ２０は、複数のディスクエンクロージャ３０と直列に接続する。ディスクエンクロージャ３０は、ストレージディスク、所謂ストレージとして機能するディスクＤと接続する。そして、２台のＲＡＩＤコントローラ２０により、全てのディスクＤへのデータの書き込み及び読み出しの経路が２重化される。例えば、２台のＲＡＩＤコントローラ２０は、一方を主系とし他方を待機系とするホットスタンバイを構成する。なお、ＲＡＩＤ装置２は、２台のＲＡＩＤコントローラ２０を持つ小規模なＲＡＩＤ装置を例に示すが、４台の中規模のＲＡＩＤ装置であっても、８台の大規模のＲＡＩＤ装置であっても良い。
【００２１】
図２の例では、ディスクＤは、ロット番号を１００番単位にグループ分けされている。すなわち、ロット番号１番から９９番までのディスクＤ００〜０１及び１０〜１４は、ロットグループ１に所属し、ロット番号２００番から２９９番までのディスクＤ０２〜０４は、ロットグループ３に所属する。
【００２２】
ディスクＤは、所定の属性を備え、同一属性で纏められたグループに所属する。所定の属性には、製造時に連続して割り振られる一定範囲内のシリアル番号（以降、ロット番号）がある。通常、同じ工場で同時期に製造されたディスクＤには、連続したロット番号が割り振られるので、１台のディスクが故障すると、このディスクのロット番号に近い別のディスクも同種の要因で故障する可能性がある。つまり、各グループは、同一グループ内の１台のディスクＤが故障すると、故障したディスクＤと同一の属性に起因する要因で故障する可能性のあるディスクＤが所属していることになる。なお、所定の属性としては、一定範囲内のロット番号を例にあげて説明したが、これに限定されるものではなく、例えば同一の最大回転速度であっても良く、同種の要因で故障が発生するようなディスクＤに備わる特徴または性質であれば良い。
【００２３】
ＲＡＩＤコントローラ２０は、チャネルアダプタ２１、ディスクインタフェース２２及びコントローラモジュール２３を有する。チャネルアダプタ２１は、ホスト（図示せず）と通信接続する通信インタフェースである。ディスクインタフェース２２は、ディスクＤと通信接続する通信インタフェースである。コントローラモジュール２３は、ＲＡＩＤコントローラ２０全体を制御する。
【００２４】
［実施例２に係るＲＡＩＤ装置のＲＡＩＤコントローラの構成］
次に、ＲＡＩＤコントローラ２０の構成について、図３を参照して説明する。図３は、実施例２に係るＲＡＩＤ装置のＲＡＩＤコントローラの構成を示す機能ブロック図である。図３に示すように、ＲＡＩＤコントローラ２０は、コントローラモジュール２３を含む。
【００２５】
コントローラモジュール２３は、制御部１００及び記憶部２００を有する。また、制御部１００は、グループ化部１０１、予防保守対象抽出部１０２及び予防保守実行部１０７を有する。また、記憶部２００は、ロットグループテーブル２０１、異常発生履歴テーブル２０２及び予防保守加速フラグテーブル２０３を有する。
【００２６】
グループ化部１０１は、ディスクＤのロット番号に基づいてディスクＤをグループ化する。具体的には、グループ化部１０１は、ディスクＤに割り振られたロット番号を各ディスクＤから読み出し、読み出したロット番号に対応するロットグループを決定する。そして、グループ化部１０１は、ディスクＤ毎に、決定されたロットグループ及びロット番号を対応付けて、ロットグループテーブル２０１に記憶する。
【００２７】
ここで、ロットグループテーブル２０１について図４を参照しながら説明する。図４は、ロットグループテーブルのデータ構造の一例を示す図である。図４に示すように、ロットグループテーブル２０１は、ディスク番号２０１ａのディスクＤ毎に、ロット番号２０１ｂ及びグループ番号２０１ｃを対応付けて記憶する。
【００２８】
ディスク番号２０１ａは、ディスクＤを識別する番号である。例えば、ディスク番号２０１ａは、ＲＡＩＤ装置２の構成時にディスクエンクロージャ３０に基づいてＲＡＩＤコントローラ２０によって決定される。ロット番号２０１ｂは、製造時にディスクＤ毎に一意に割り振られたロットの番号である。グループ番号２０１ｃは、ロット番号２０１ｂに基づいて定められたロットグループの番号である。図４の例では、グループ番号２０１ｃは、ロット番号２０１ｂの１００番毎に規定される。例えば、ロット番号２０１ｂが「００１」番から「０９９」番までのディスクＤのグループ番号２０１ｃは、「１」番であり、ロット番号２０１ｂが「２００」番から「２９９」番までのグループ番号２０１ｃは、「３」番である。
【００２９】
図３に戻って、予防保守対象抽出部１０２は、ディスクＤに生じたリカバリエラーの発生履歴及びロットグループに基づいて、アンリカバリエラーが生じたディスクＤと同じロットグループに所属する他のディスクＤを予防保守対象として抽出する。さらに、予防保守対象抽出部１０２は、異常検出部１０３、異常種別判別部１０４、リカバードエラー制御部１０５及びアンリカバードエラー制御部１０６を有する。
【００３０】
異常検出部１０３は、ディスクＤに生じたエラーを検出する。このエラーは、リカバードエラーまたはアンリカバードエラーを対象とする。リカバードエラーとは、ロットに起因する所定要因の異常であってリトライによって復旧可能な異常を意味する。また、アンリカバードエラーとは、ロットに起因する即時切り離し要因となる異常であって復旧不可能な異常を意味する。
【００３１】
なお、本実施例の「予防保守加速処理」では、リカバードエラーがある回数発生した後に発生したアンリカバードエラーが対象となる。すなわち、予防保守加速処理は、１台のディスクにある回数のリカバードエラーが発生した後にアンリカバードエラーが発生したとき、このディスクと同一のロットグループに所属するディスクにもロットに起因する要因でアンリカバードエラーが発生する可能性があると判断する。そして、予防保守加速処理を行うことによって、アンリカバードエラーが発生する前にリカバードエラーが発生したディスクの予防保守のタイミングを加速する。
【００３２】
異常種別判定部１０４は、異常検出部１０３によって検出された異常の種別を判定する。具体的には、異常種別判定部１０４は、異常検出部１０３によって検出された異常がリカバードエラーまたはアンリカバードエラーのいずれであるかを判定する。
【００３３】
リカバードエラー制御部１０５は、異常種別判定部１０４によって異常がリカバードエラーであると判定された場合に、リカバードエラー処理を実行する。具体的には、リカバードエラー制御部１０５は、ロットグループテーブル２０１に基づいて、リカバードエラーが発生したエラーディスクＤの所属するロットグループを読み出す。また、リカバードエラー制御部１０５は、読み出したロットグループの予防保守加速フラグがＯＮに設定されていない場合に、エラーディスクＤについて、リカバードエラーの発生履歴を表した加点値に通常値を加算する。また、リカバードエラー制御部１０５は、読み出したロットグループの予防保守加速フラグがＯＮに設定されている場合に、エラーディスクＤについて、リカバードエラーの発生履歴を表した加点値に、通常値より大きい値を示す加速値を加算する。この予防保守加速フラグは、予防保守加速フラグテーブル２０３に記憶され、後述するアンリカバードエラー制御部１０６によって設定される。
【００３４】
また、リカバードエラー制御部１０５は、加算した加点値をリカバードエラーが発生したディスクＤに対応付けて、異常発生履歴テーブル２０２に記憶する。ここで、異常発生履歴テーブル２０２について、図５を参照しながら説明する。図５は、異常発生履歴テーブルのデータ構造の一例を示す図である。図５に示すように、異常発生履歴テーブル２０２は、ディスク番号２０２ａのディスクＤ毎にリカバードエラーの発生履歴を点数で表した加点値２０２ｂを対応付けて記憶する。加点値２０２ｂには、ディスク番号２０２ａが示すディスクＤにリカバードエラーが発生する毎に所定値を加算した値が記憶される。所定値は、ディスクＤが所属するロットグループの予防保守加速フラグの値に応じた点数（通常値または加速値）となる。なお、加点値２０２ｂには、ＲＡＩＤ装置２の起動時に初期値として「０」が設定される。
【００３５】
図３に戻って、リカバードエラー制御部１０５は、このディスクＤの加点値が閾値以上であるか否かを判定する。そして、リカバードエラー制御部１０５は、加点値が閾値以上であると判定する場合には、予防保守のタイミングであると判断し、リカバードエラーが発生したエラーディスクＤを予防保守対象として抽出する。一方、リカバードエラー制御部１０５は、加点値が閾値未満であると判定する場合には、リカバードエラーが発生したエラーディスクＤを予防保守対象としないものとする。
【００３６】
アンリカバードエラー制御部１０６は、異常種別判定部１０４によって異常がアンリカバードエラーであると判定された場合に、アンリカバードエラー処理を実行する。具体的には、アンリカバードエラー制御部１０６は、異常種別判定部１０４によって異常と判定されたエラーディスクＤのアンリカバードエラーがリカバードエラー後に発生したか否かを、異常発生履歴テーブル２０２に基づいて判定する。そして、アンリカバードエラー制御部１０６は、アンリカバードエラーがリカバードエラー後に発生したと判定する場合には、ロットグループテーブル２０１に基づいて、アンリカバードエラーが発生したエラーディスクＤの所属するロットグループを読み出す。また、アンリカバードエラー制御部１０６は、読み出したロットグループに所属するディスクＤの予防保守のタイミングを加速させるべく、当該ロットグループについて、予防保守加速フラグテーブル２０３の予防保守加速フラグにＯＮを示す値を記憶する。
【００３７】
ここで、予防保守加速フラグテーブル２０３について、図６を参照しながら説明する。図６は、予防保守加速フラグテーブルのデータ構造の一例を示す図である。図６に示すように、予防保守加速フラグテーブル２０３は、グループ番号２０３ａ毎に予防保守加速フラグ２０３ｂを対応付けて記憶する。予防保守加速フラグ２０３ｂは、グループ番号２０３ａで示されるロットグループに所属するディスクＤの予防保守タイミングの加速の有無を示すフラグである。予防保守加速フラグ２０３ｂには、例えば、予防保守のタイミングを加速することを示す「１」（ＯＮ）または予防保守のタイミングを加速しないことを示す「０」（ＯＦＦ）が設定される。
【００３８】
図３に戻って、アンリカバードエラー制御部１０６は、ロットグループテーブル２０１及び異常発生履歴テーブル２０２を用いて、エラーディスクＤと同一ロットグループ内に、既にリカバードエラーの発生したディスクＤが有るか否かを判定する。そして、アンリカバードエラー制御部１０６は、既にリカバードエラーの発生したディスクＤが有ると判定する場合には、このディスクＤについて、異常発生履歴テーブル２０２に既に設定された加点値の値を、加速値で換算した値に更新する。
【００３９】
また、アンリカバードエラー制御部１０６は、既にリカバードエラーの発生したディスクＤの加点値が閾値以上であるか否かを判定する。そして、アンリカバードエラー制御部１０６は、加点値が閾値以上であると判定する場合には、予防保守のタイミングであると判断し、既にリカバードエラーの発生したディスクＤを予防保守対象として抽出する。一方、アンリカバードエラー制御部１０６は、加点値が閾値未満であると判定する場合には、このディスクＤを予防保守対象としないものとする。
【００４０】
予防保守実行部１０７は、予防保守対象として抽出されたディスクＤに記憶されているデータの予防保守を実行する。例えば、予防保守実行部１０７は、リカバードエラー制御部１０５またはアンリカバードエラー制御部１０６によって予防保守対象として抽出されたディスクＤから順次データを読み出す。そして、予防保守実行部１０７は、読み出したデータをホットスペアディスクにリダンダントコピーする。そして、予防保守実行部１０７は、全データのリダンダントコピーが終了すると、予防保守対象のディスクＤをディスクエンクロージャ３０との接続から切り離し、ホットスペアディスクを接続させ、ディスクを交換する。すなわち、予防保守実行部１０７は、予防保守対象として抽出されたディスクＤをホットスペアディスクに交換することで、該ディスクＤにアンリカバードエラーが発生する前に、該ディスクＤのデータを保護する。
【００４１】
［実施例２に係る予防保守加速処理の一例］
次に、実施例２に係る予防保守加速処理の一例について図７を参照しながら説明する。図７は、予防保守加速処理の一例を示す図である。図７に示すように、横軸は時間軸を示し、縦軸はディスク番号を示す。なお、図７に示されるディスク００及びディスク０１は、同一ロットグループに所属するものとする。
【００４２】
まず、ディスク番号がディスク００のディスクについて、１回目のリカバードエラーが発生し、時間の経過とともに、２回目のリカバードエラーが発生する。一方、ディスク００の１回目のリカバードエラーが発生した後に、ディスク番号がディスク０１のディスクについて、１回目のリカバードエラーが発生し、時間の経過とともに、２回目のリカバードエラーが発生する。ディスクにリカバードエラーが発生する毎に、リカバードエラー制御部１０５は、リカバードエラーが発生したディスクＤについて、リカバードエラーの発生履歴を表した加点値（積算した値）に通常値を加算する。
【００４３】
その後、ディスク００について、加点値が閾値以上になる前の３回目にアンリカバードエラーが発生し、アンリカバードエラー制御部１０６は、ディスク００のディスクを切り離す。このとき、アンリカバードエラー制御部１０６は、既に２回のリカバードエラーが発生しているディスク０１がディスク００と同一ロットグループであるので、ロットに起因する要因によりアンリカバードエラーが発生する可能性があると判断する。そして、アンリカバードエラー制御部１０６は、ディスク０１について、リカバードエラーが発生する毎に通常値が加算された加点値を加速値で換算する。そして、アンリカバードエラー制御部１０６は、ディスク０１について、換算された加点値が閾値以上となるので、通常より早期に予防保守を実行する。この結果、ディスク０１のディスクは、アンリカバードエラーを未然に防止できる。
【００４４】
［実施例２に係る異常発生履歴テーブルの加点値の変化］
次に、異常発生履歴テーブルの加点値の変化について、図８を参照しながら説明する。図８は、実施例２に係る異常発生履歴テーブルの加点値の変化を示す図である。なお、図８に示されるディスク００及びディスク０１は、同一ロットグループに所属するものとし、ディスク０２は、ディスク００及びディスク０１と異なるロットグループに所属するものとする。また、通常値を２６点、加速値を５２点、閾値を１００点とするものとする。
【００４５】
図８に示すように、ディスクにリカバードエラーが発生する毎に、リカバードエラーが発生したディスクについて、異常発生履歴テーブル２０２の加点値２０２ｂに加算される。まず、リカバードエラー制御部１０５は、ディスク００について、１回目のリカバードエラーが発生すると、異常発生履歴テーブル２０２の加点値２０２ｂに通常値（２６点）を加算し、２６点とする。次に、リカバードエラー制御部１０５は、ディスク００について、２回目のリカバードエラーが発生すると、異常発生履歴テーブル２０２の加点値２０２ｂに通常値（２６点）を加算し、５２点とする。
【００４６】
その後、ディスク００について、アンリカバードエラーが発生すると、アンリカバードエラー制御部１０６が、ディスク００のディスクを切り離してから、異常発生履歴テーブル２０２の加点値２０２ｂにヌル値を設定する。その後、ディスク００と同一ロットグループのディスク０１について、リカバードエラーが発生すると、リカバードエラー制御部１０５は、異常発生履歴テーブル２０２の加点値２０２ｂに通常値より大きい加速値（５２点）を加算し、５２点とする。すなわち、リカバードエラー制御部１０５は、アンリカバードエラーが発生したディスク００と同一ロットグループのディスク０１も、ロットに起因する要因によりアンリカバードエラーが発生する可能性があると判断し、予防保守のタイミングを加速させる。
【００４７】
ディスク０１と同じタイミングでディスク０２にリカバードエラーが発生するとする。この場合には、ディスク０２がディスク００と異なるロットグループであるので、リカバードエラー制御部１０５は、異常発生履歴テーブル２０２の加点値２０２ｂに通常値（２６点）を加算する。すなわち、リカバードエラー制御部１０５は、ディスク０２のロットグループがアンリカバードエラーの生じたディスク００のロットグループと異なるので、ロットに起因しないと判断し、予防保守のタイミングを加速させず、通常とする。
【００４８】
なお、ディスク００についてアンリカバードエラーが発生したとき、既に、ディスク００と同一ロットグループのディスクにリカバードエラーが発生している場合がある。この場合には、アンリカバードエラー制御部１０６は、このディスクについて、異常発生履歴テーブル２０２の加点値２０２ｂの値を、加速値（５２点）で換算した値に更新し、予防保守のタイミングを加速させる。
【００４９】
［実施例２に係る予防保守加速処理の処理手順］
次に、実施例２に係る予防保守加速処理の所定手順を、図９〜図１１を参照して説明する。まず、グループ化の処理手順を、図９を参照して説明する。図９は、実施例２に係るグループ化の処理手順を示すフローチャートである。
【００５０】
まず、グループ化部１０１は、ディスクＤのロット番号に基づくグループ化の指示が有るか否かを判定する（ステップＳ１１）。そして、ディスクＤのロット番号に基づくグループ化の指示が無い場合には（ステップＳ１１否定）、グループ化部１０１は、ステップＳ１１に移行する。一方、ディスクＤのロット番号に基づくグループ化の指示が有る場合には（ステップＳ１１肯定）、グループ化部１０１は、ディスクエンクロージャ３０と接続された１個のディスクＤを選択する（ステップＳ１２）。
【００５１】
続いて、グループ化部１０１は、選択したディスクＤのロット番号が１００番未満であるか否かを判定する（ステップＳ１３）。そして、選択されたディスクＤのロット番号が１００番未満である場合には（ステップＳ１３肯定）、グループ化部１０１は、ロットグループの番号を示すグループ番号を「１」に決定する。そして、グループ化部１０１は、決定したグループ番号をロットグループテーブル２０１に記憶し（ステップＳ１４）、ステップＳ２０に移行する。
【００５２】
一方、選択されたディスクＤのロット番号が１００番未満でない場合には（ステップＳ１３否定）、グループ化部１０１は、選択したディスクＤのロット番号が２００番未満であるか否かを判定する（ステップＳ１５）。そして、選択されたディスクＤのロット番号が２００番未満である場合には（ステップＳ１５肯定）、グループ化部１０１は、グループ番号を「２」に決定する。そして、グループ化部１０１は、決定したグループ番号をロットグループテーブル２０１に記憶し（ステップＳ１６）、ステップＳ２０に移行する。
【００５３】
一方、選択されたディスクＤのロット番号が２００番未満でない場合には（ステップＳ１５否定）、グループ化部１０１は、選択したディスクＤのロット番号が３００番未満であるか否かを判定する（ステップＳ１７）。そして、選択されたディスクＤのロット番号が３００番未満である場合には（ステップＳ１７肯定）、グループ化部１０１は、グループ番号を「３」に決定する。そして、グループ化部１０１は、決定したグループ番号をロットグループテーブル２０１に記憶し（ステップＳ１８）、ステップＳ２０に移行する。
【００５４】
一方、選択されたディスクＤのロット番号が３００番未満でない場合には（ステップＳ１７否定）、グループ化部１０１は、グループ番号「９」に決定し、決定したグループ番号をロットグループテーブル２０１に記憶する（ステップＳ１９）。そして、グループ化部１０１は、ディスクエンクロージャ３０と接続された全ディスクＤを選択したか否かを判定する（ステップＳ２０）。
【００５５】
そして、全ディスクＤを選択していない場合には（ステップＳ２０否定）、グループ化部１０１は、次のディスクＤを選択する（ステップＳ２１）。一方、全ディスクＤを選択した場合には（ステップＳ２０肯定）、グループ化部１０１は、グループ化処理を終了する。
【００５６】
次に、ディスクのリカバードエラー発生時の処理手順を、図１０を参照して説明する。図１０は、実施例２に係るディスクのリカバードエラー発生時の処理手順を示すフローチャートである。なお、異常検出部１０３がディスクＤに生じたエラーを検出したものとする。
【００５７】
まず、異常種別判定部１０４は、異常検出部１０３によって検出された異常がリカバードエラーであるか否かを判定する（ステップＳ３１）。そして、異常がリカバードエラーでない場合には（ステップＳ３１否定）、ステップＳ３１に移行する。
【００５８】
一方、異常がリカバードエラーである場合には（ステップＳ３１肯定）、リカバードエラー制御部１０５は、リカバードエラーが発生したディスクＤが所属するロットグループの予防保守加速フラグがＯＮであるか否かを判定する（ステップＳ３２）。具体的には、リカバードエラー制御部１０５は、リカバードエラーが発生したディスクＤが所属するロットグループ（グループ番号）をロットグループテーブル２０１から読み出す。そして、リカバードエラー制御部１０５は、読み出したグループ番号に対応付けられた予防保守加速フラグを予防保守加速フラグテーブル２０３から読み出し、予防保守加速フラグがＯＮ（例えば「１」）であるか否かを判定する。
【００５９】
続いて、エラーディスクＤが所属するロットグループの予防保守加速フラグがＯＮでない場合には（ステップＳ３２否定）、リカバードエラー制御部１０５は、エラーディスクＤの加点値に通常値を加算する（ステップＳ３３）。一方、エラーディスクＤが所属するロットグループの予防保守加速フラグがＯＮである場合には（ステップＳ３２肯定）、エラーディスクＤの加点値に通常値より大きい値を示す加速値を加算する（ステップＳ３４）。そして、リカバードエラー制御部１０５は、加算した加点値をエラーディスクＤに対応させて、異常発生履歴テーブル２０２に記憶する。
【００６０】
続いて、リカバードエラー制御部１０５は、エラーディスクＤの加点値が閾値以上であるか否かを判定する（ステップＳ３５）。そして、エラーディスクＤの加点値が閾値以上である場合には（ステップＳ３５肯定）、リカバードエラー制御部１０５は、予防保守のタイミングであると判断し、エラーディスクＤを予防保守対象として抽出する。そして、予防保守実行部１０７が、予防保守対象として抽出されたディスクＤに記憶されているデータの予防保守を実行し（ステップＳ３６）、リカバードエラー発生時の処理を終了する。
【００６１】
一方、エラーディスクＤの加点値が閾値以上でない場合には（ステップＳ３５否定）、リカバードエラー制御部１０５は、エラーディスクＤを予防保守対象としないものとし、リカバードエラー発生時の処理を終了する。
【００６２】
次に、ディスクのアンリカバードエラー発生時の処理手順を、図１１を参照して説明する。図１１は、実施例２に係るディスクのアンリカバードエラー発生時の処理手順を示すフローチャートである。なお、異常検出部１０３がディスクＤに生じたエラーを検出したものとする。
【００６３】
まず、異常種別判定部１０４は、異常検出部１０３によって検出された異常がアンリカバードエラーであるか否かを判定する（ステップＳ４１）。そして、異常がアンリカバードエラーでない場合には（ステップＳ４１否定）、ステップＳ４１に移行する。
【００６４】
一方、異常がアンリカバードエラーである場合には（ステップＳ４１肯定）、アンリカバードエラー制御部１０６は、エラーディスクＤのロットグループについて、予防保守加速フラグテーブル２０３の予防保守加速フラグをＯＮに設定する（ステップＳ４２）。アンリカバードエラーが発生したディスクＤと同一ロットグループに所属するディスクＤの予防保守のタイミングを加速させるためである。
【００６５】
続いて、アンリカバードエラー制御部１０６は、エラーディスクＤと同一ロットグループ内に、既にリカバードエラーが発生したディスクＤが有るか否かを判定する（ステップＳ４３）。既にリカバードエラーが発生したディスクＤが無い場合には（ステップＳ４３否定）、アンリカバードエラー制御部１０６は、アンリカバードエラー発生時の処理を終了する。
【００６６】
一方、既にリカバードエラーが発生したディスクＤが有る場合には（ステップＳ４３肯定）、アンリカバードエラー制御部１０６は、リカバードエラーディスクＤについて異常発生履歴テーブル２０２の加点値を加速値で換算した値に更新する（ステップＳ４４）。
【００６７】
続いて、アンリカバードエラー制御部１０６は、リカバードエラーディスクＤの加点値が閾値以上であるか否かを判定する（ステップＳ４５）。リカバードエラーディスクＤの加点値が閾値以上でない場合には（ステップＳ４５否定）、該ディスクＤを予防保守対象としないものとし、アンリカバードエラー発生時の処理を終了する。
【００６８】
一方、リカバードエラーディスクＤの加点値が閾値以上である場合には（ステップＳ４５肯定）、アンリカバードエラー制御部１０６は、予防保守のタイミングであると判断し、該ディスクＤを予防保守対象として抽出する。そして、予防保守実行部１０７が、予防保守対象として抽出されたリカバードエラーディスクＤに記憶されているデータの予防保守を実行し（ステップＳ４６）、アンリカバードエラー発生時の処理を終了する。
【００６９】
［実施例２の効果］
上記実施例２によれば、リカバードエラー制御部１０５は、リカバードエラーがある回数発生した後にアンリカバードエラーが生じたディスクＤと同一ロットグループに所属する他のディスクＤにおけるリカバードエラーの発生を検出する。そして、リカバードエラー制御部１０５は、他のディスクＤにおけるリカバードエラーの検出時に、他のディスクＤの加算値に、通常値より大きい値を示す加速値を加算する。そして、リカバードエラー制御部１０５は、該加算した加算値が閾値に到達すると他のディスクＤを予防保守対象として抽出する。
【００７０】
かかる構成によれば、リカバードエラー制御部１０５は、アンリカバードエラーが生じたディスクＤと同一ロットグループに所属する他のディスクＤのリカバードエラーの発生時に、他のディスクＤの加算値に通常値より大きい加速値を加算することとした。このため、リカバードエラー制御部１０５は、他のディスクＤにおける加算値が閾値に到達する時期を通常よりも速めることとなり、他のディスクＤを予防保守対象として抽出するタイミングを加速させることができる。この結果、リカバードエラー制御部１０５は、リカバードエラーが発生した他のディスクＤをアンリカバードエラーが発生する前に予防保守することができ、他のディスクＤのデータのロストを防止できる。
【００７１】
また、上記実施例２によれば、アンリカバードエラー制御部１０６は、リカバードエラーが生じたディスクＤにアンリカバードエラーが生じるまでに、他のディスクＤにおけるリカバードエラーが生じていた場合には、他のディスクＤの加算値を加速値で換算する。そして、アンリカバードエラー制御部１０６は、換算した加算値が閾値に到達すると他のディスクＤを予防保守対象として抽出する。
【００７２】
かかる構成によれば、同一ロットグループに所属するディスクＤにアンリカバードエラーが生じるまでに、他のディスクＤに既にリカバードエラーが生じていた場合には、他のディスクＤの加算値を加速値で換算することとした。このため、アンリカバードエラー制御部１０６は、他のディスクＤにおける加算値が閾値に到達する時期を通常よりも速めることとなり、他のディスクＤを予防保守対象として抽出するタイミングを加速させることができる。この結果、アンリカバードエラー制御部１０６は、リカバードエラーが発生した他のディスクＤをアンリカバードエラーが発生する前に予防保守することができ、他のディスクＤのデータのロストを防止できる。
【実施例３】
【００７３】
ところで、実施例２に係るＲＡＩＤ装置２では、リカバードエラーがある回数発生した後にアンリカバードエラーが発生したディスクと同一ロットグループの他のディスクについて、リカバードエラー毎に通常値より大きい加速値を加算値に加算した。そして、ＲＡＩＤ装置２は、該加算した加算値が閾値に到達した時点で他のディスクを予防保守対象とする場合を説明した。ＲＡＩＤ装置２は、これに限定されず、リカバードエラーがある回数発生した後にアンリカバードエラーが発生したディスクと同一ロットグループの他のディスクについて、リカバードエラーが同一回数発生した時点で予防保守対象としても良い。
【００７４】
そこで、実施例３では、ＲＡＩＤ装置２が、リカバードエラーがある回数発生した後にアンリカバードエラーが発生したディスクと同一ロットグループのディスクについて、リカバードエラーが同一回数発生した時点で予防保守対象とする場合を説明する。
【００７５】
［実施例３に係るＲＡＩＤ装置のＲＡＩＤコントローラの構成］
図１２は、実施例３に係るＲＡＩＤコントローラの構成を示す機能ブロック図である。なお、図３に示すＲＡＩＤコントローラと同一の構成については同一符号を示すことで、その重複する構成及び動作の説明については省略する。実施例２と実施例３とが異なるところは、リカバードエラー制御部１０５及びアンリカバードエラー制御部１０６をそれぞれリカバードエラー制御部３０１及びアンリカバードエラー制御部３０２に変更した点にある。さらに、実施例２と実施例３とが異なるところは、異常発生履歴テーブル２０２を異常発生履歴テーブル３０３に変更した点にある。さらに、実施例２と実施例３とが異なるところは、記憶部２００にリカバリ上限回数テーブル３０４を追加した点にある。なお、実施例３に係るＲＡＩＤ装置の構成は、実施例２に係るＲＡＩＤ装置の構成と同一であるので、その構成の説明については省略する。
【００７６】
異常発生履歴テーブル３０３は、ディスクＤに発生したリカバードエラーの発生履歴を記憶する。ここで、異常発生履歴テーブル３０３について、図１３を参照しながら説明する。図１３は、実施例３に係る異常発生履歴テーブルのデータ構造の一例を示す図である。図１３に示すように、異常発生履歴テーブル３０３は、ディスク番号３０３ａのディスクＤ毎にリカバードエラー回数３０３ｂを対応付けて記憶する。リカバードエラー回数３０３ｂは、ディスク番号３０３ａに示されるディスクＤに発生したリカバードエラーの発生回数を指す。すなわち、リカバードエラー回数３０３ｂは、リカバードエラーの発生履歴を表す。
【００７７】
図１２に戻って、リカバリ上限回数テーブル３０４は、予防保守のタイミングを示すリカバードエラーの上限回数をロットグループ毎に記憶する。ここで、リカバリ上限回数テーブル３０４について、図１４を参照しながら説明する。図１４は、リカバリ上限回数テーブルのデータ構造の一例を示す図である。図１４に示すように、リカバリ上限回数テーブル３０４は、グループ番号３０４ａのロットグループ毎にリカバリ上限回数３０４ｂを対応付けて記憶する。リカバリ上限回数３０４ｂは、ロットグループに所属するディスクＤの予防保守のタイミングとなるリカバードエラー上限回数を示す。リカバリ上限回数３０４ｂには、予防保守のタイミングを加速する場合には加速値が設定され、予防保守のタイミングを加速しない場合には通常値が設定される。通常値は、例えば「４」を示す。加速値は、例えばアンリカバードエラーが生じるまでに生じたリカバードエラーの発生回数を示す。
【００７８】
図１２に戻って、リカバードエラー制御部３０１は、異常種別判定部１０４によって異常がリカバードエラーであると判定された場合に、リカバードエラー処理を実行する。具体的には、リカバードエラー制御部３０１は、リカバードエラーが発生したディスクＤについて、リカバードエラーの発生履歴を表したリカバードエラー回数に「１」を加算する。また、リカバードエラー制御部３０１は、加算したリカバードエラー回数をリカバードエラーが発生したディスクＤに対応付けて、異常発生履歴テーブル３０３に記憶する。
【００７９】
また、リカバードエラー制御部３０１は、リカバードエラーが発生したディスクＤの所属するロットグループのリカバリ上限回数をリカバリ上限回数テーブル３０４から読み出す。また、リカバードエラー制御部３０１は、異常発生履歴テーブル３０３に基づいて、リカバードエラーの発生したディスクＤのリカバードエラー回数が読み出したリカバリ上限回数以上であるか否かを判定する。そして、リカバードエラー制御部３０１は、リカバードエラー回数がリカバリ上限回数以上であると判定する場合には、予防保守のタイミングであると判断し、リカバードエラーが発生したディスクＤを予防保守対象として抽出する。一方、リカバードエラー制御部３０１は、リカバードエラー回数がリカバリ上限回数未満であると判定する場合には、リカバードエラーが発生したディスクＤを予防保守対象としないものとする。
【００８０】
アンリカバードエラー制御部３０２は、異常種別判定部１０４によって異常がアンリカバードエラーであると判定された場合に、アンリカバードエラー処理を実行する。具体的には、アンリカバードエラー制御部３０２は、異常発生履歴テーブル３０３に基づいて、アンリカバードエラーが発生したエラーディスクＤのリカバードエラー回数を読み出す。また、アンリカバードエラー制御部３０２は、ロットグループテーブル２０１に基づいて、アンリカバードエラーが発生したエラーディスクＤの所属するロットグループを読み出す。そして、アンリカバードエラー制御部３０２は、エラーディスクＤの所属するロットグループについて、リカバリ上限回数テーブル３０４のリカバリ上限回数３０４ｂにエラーディスクＤのリカバードエラー回数を加速値として記憶する。アンリカバードエラーが発生したディスクＤと同一ロットグループに所属するディスクＤの予防保守のタイミングを加速させるためである。
【００８１】
また、アンリカバードエラー制御部３０２は、ロットグループテーブル２０１及び異常発生履歴テーブル３０３に基づいて、エラーディスクＤと同一ロットグループ内に、既にリカバードエラーの発生したディスクＤが有るか否かを判定する。そして、アンリカバードエラー制御部３０２は、既にリカバードエラーの発生したディスクＤが有ると判定する場合には、このディスクＤのリカバードエラー回数がリカバリ上限回数以上であるか否かを判定する。そして、アンリカバードエラー制御部３０２は、リカバードエラー回数がリカバリ上限回数以上であると判定する場合には、予防保守のタイミングであると判断し、リカバードエラーが発生したディスクＤを予防保守対象として抽出する。一方、リカバードエラー制御部３０１は、リカバードエラー回数がリカバリ上限回数未満であると判定する場合には、リカバードエラーが発生したディスクＤを予防保守対象としないものとする。
【００８２】
［実施例３に係る予防保守加速処理の一例］
次に、予防保守加速処理の一例について、図１５を参照しながら説明する。図１５は、実施例３に係る予防保守加速処理の一例を示す図である。図１５に示すように、横軸は時間軸を示し、縦軸はディスク番号を示す。なお、図１５に示されるディスク００及びディスク０１は、同一ロットグループに所属するものとする。また、通常値を４回及び最初のリカバリ上限回数を通常値とする。
【００８３】
まず、ディスク番号がディスク００のディスクについて、１回目のリカバードエラーが発生し、時間の経過とともに、２回目のリカバードエラーが発生する。一方、ディスク００の１回目のリカバードエラーが発生した後に、ディスク番号がディスク０１のディスクについて、１回目のリカバードエラーが発生し、時間の経過とともに、２回目のリカバードエラーが発生する。ディスクにリカバードエラーが発生する毎に、リカバードエラー制御部３０１は、リカバードエラーが発生したディスクについて、リカバードエラーの発生履歴を表したリカバードエラー回数に「１」を加算する。
【００８４】
その後、ディスク００について、リカバードエラー回数がリカバリ上限回数（通常値：４回）以上になる前の３回目にアンリカバードエラーが発生し、アンリカバードエラー制御部３０２は、ディスク００のディスクを切り離す。このとき、アンリカバードエラー制御部３０２は、ディスク００の所属するロットグループのリカバリ上限回数に、ディスク００のリカバードエラー回数である２回を加速値として設定する。そして、アンリカバードエラー制御部３０２は、ディスク０１について、リカバードエラー回数が既にリカバリ上限回数以上であるか否かを判定する。そして、アンリカバードエラー制御部３０２は、ディスク０１について、リカバードエラー回数（２回）が既にリカバリ上限回数（加速値：２回）以上となるので、リカバードエラー回数が通常値（４回）となる前に、予防保守を実行する。この結果、ディスク０１は、アンリカバードエラーを未然に防止できる。
【００８５】
［実施例３に係る異常発生履歴テーブルのリカバードエラー回数の変化］
次に、異常発生履歴テーブルのリカバードエラー回数の変化について、図１６を参照しながら説明する。図１６は、実施例３に係る異常発生履歴テーブルのリカバードエラー回数の変化を示す図である。なお、図１６に示されるディスク００及びディスク１０は、同一ロットグループに所属するものとする。また、通常値を４回及び最初のリカバリ上限回数を通常値とする。
【００８６】
図１６に示すように、ディスクにリカバードエラーが発生する毎に、リカバードエラーが発生したディスクについて、異常発生履歴テーブル３０３のリカバードエラー回数３０３ｂが加算される。まず、リカバードエラー制御部３０１は、ディスク００について、１回目のリカバードエラーが発生すると、異常発生履歴テーブル３０３のリカバードエラー回数３０３ｂに「１」を加算し、リカバードエラー回数を１回とする。次に、リカバードエラー制御部３０１は、ディスク００について、２回目のリカバードエラーが発生すると、異常発生履歴テーブル３０３のリカバードエラー回数３０３ｂに「１」を加算し、リカバードエラー回数を２回とする。
【００８７】
その後、ディスク００について、アンリカバードエラーが発生すると、アンリカバードエラー制御部３０２は、ディスク００のディスクを切り離す。そして、アンリカバードエラー制御部３０２は、ディスク００の所属するグループ番号に対応するリカバリ上限回数テーブル３０４のリカバリ上限回数に、ディスク００のリカバードエラー回数である２回を加速値として設定する。すなわち、アンリカバードエラー制御部３０２は、アンリカバードエラーが発生したディスク００と同一ロットグループのディスク１０も、ロットに起因する要因によりアンリカバードエラーが発生する可能性があると判断し、予防保守のタイミングを加速させる。
【００８８】
そして、ディスク００と同一ロットグループのディスク１０について、リカバードエラーが発生すると、リカバードエラー制御部３０１は、異常発生履歴テーブル３０３のリカバードエラー回数３０３ｂに「１」を加算し、リカバードエラー回数を１回とする。さらに、リカバードエラー制御部３０１は、ディスク１０について、２回目のリカバードエラーが発生すると、異常発生履歴テーブル３０３のリカバードエラー回数３０３ｂに「１」を加算し、リカバードエラー回数を２回とする。
【００８９】
そして、リカバードエラー制御部３０１は、リカバードエラーが発生したディスク１０のリカバードエラー回数がリカバリ上限回数以上であるか否かを判定する。ここでは、ディスク１０のリカバードエラー回数が２回、リカバリ上限回数が加速値を示す２回であるので、リカバードエラー制御部３０１は、リカバードエラー回数がリカバリ上限回数以上であると判定する。すなわち、リカバードエラー制御部３０１は、ディスク１０について、予防保守のタイミングであると判断し、ディスク１０を予防保守対象として抽出する。そして、予防保守実行部１０７が、予防保守対象として抽出されたディスク１０の予防保守を実行する。
【００９０】
なお、ディスク００についてアンリカバードエラーが発生したとき、既に、ディスク００と同一ロットグループのディスクにリカバードエラーが発生している場合がある。この場合には、アンリカバードエラー制御部３０２は、このディスクのリカバードエラー回数がリカバリ上限回数（加速値）以上であるか否かを判定し、リカバードエラー回数がリカバリ上限回数以上である場合には、このディスクを予防保守対象とする。
【００９１】
［実施例３に係る予防保守加速処理の処理手順］
次に、実施例３に係る予防保守加速処理の処理手順を、図１７及び図１８を参照して説明する。まず、ディスクのリカバードエラー発生時の処理手順を、図１７を参照して説明する。図１７は、実施例３に係るディスクのリカバードエラー発生時の処理手順を示すフローチャートである。なお、実施例３に係る予防保守加速処理の処理手順のうち、実施例２に係る予防保守加速処理の処理手順（図１０）と同じ処理手順については、同一符号を付すことで、その重複する手順の説明を簡略する。また、異常検出部１０３がディスクＤに生じたエラーを検出したものとする。
【００９２】
まず、異常種別判定部１０４は、異常検出部１０３によって検出された異常がリカバードエラーであるか否かを判定する（ステップＳ３１）。そして、異常がリカバードエラーでない場合には（ステップＳ３１否定）、ステップＳ３１に移行する。
【００９３】
一方、異常がリカバードエラーである場合には（ステップＳ３１肯定）、リカバードエラー制御部３０１は、リカバードエラーが発生したエラーディスクＤについて、異常発生履歴テーブル３０３のリカバードエラー回数に「１」を加算する（ステップＳ５１）。続いて、リカバードエラー制御部３０１は、リカバードエラーが発生したエラーディスクＤのリカバードエラー回数が該ディスクＤの所属するロットグループのリカバリ上限回数以上であるか否かを判定する（ステップＳ５２）。
【００９４】
リカバードエラー回数がリカバリ上限回数以上である場合には（ステップＳ５２肯定）、リカバードエラー制御部３０１は、予防保守のタイミングであると判断し、リカバードエラーが発生したエラーディスクＤを予防保守対象として抽出する。そして、予防保守実行部１０７が、予防保守対象として抽出されたエラーディスクＤに記憶されているデータの予防保守を実行し（ステップＳ３６）、リカバードエラー発生時の処理を終了する。
【００９５】
一方、リカバードエラー回数がリカバリ上限回数以上でない場合には（ステップＳ５２否定）、リカバードエラー制御部３０１は、エラーディスクＤを予防保守対象としないものとし、リカバードエラー発生時の処理を終了する。
【００９６】
次に、ディスクのアンリカバードエラー発生時の処理手順を、図１８を参照して説明する。図１８は、実施例３に係るディスクのアンリカバードエラー発生時の処理手順を示すフローチャートである。なお、実施例３に係る予防保守加速処理の処理手順のうち、実施例３に係る予防保守加速処理の処理手順（図１１）と同じ処理手順については、同一符号を付すことで、その重複する手順の説明を簡略する。異常検出部１０３がディスクＤに生じたエラーを検出したものとする。
【００９７】
まず、異常種別判定部１０４は、異常検出部１０３によって検出された異常がアンリカバードエラーであるか否かを判定する（ステップＳ４１）。そして、異常がアンリカバードエラーでない場合には（ステップＳ４１否定）、ステップＳ４１に移行する。
【００９８】
一方、異常がアンリカバードエラーである場合に（ステップＳ４１肯定）、アンリカバードエラー制御部３０２は、アンリカバードエラーの生じたエラーディスクＤのロットグループについて、リカバリ上限回数を通常値から加速値に変更する（ステップＳ６１）。アンリカバードエラーが発生したエラーディスクＤと同一ロットグループに所属するディスクＤの予防保守のタイミングを加速させるためである。具体的には、アンリカバードエラー制御部３０２は、ロットグループテーブル２０１から、アンリカバードエラーが発生したエラーディスクＤの所属するロットグループを読み出す。そして、アンリカバードエラー制御部３０２は、異常発生履歴テーブル３０３から、エラーディスクＤのリカバードエラー回数を読み出す。そして、アンリカバードエラー制御部３０２は、エラーディスクＤのロットグループについて、リカバリ上限回数テーブル３０４のリカバリ上限回数３０４ｂにエラーディスクＤのリカバードエラー回数を加速値として記憶する。
【００９９】
続いて、アンリカバードエラー制御部３０２は、エラーディスクＤと同一ロットグループ内に、既にリカバードエラーが発生したディスクＤが有るか否かを判定する（ステップＳ６２）。既にリカバードエラーが発生したディスクＤが無い場合には（ステップＳ６２否定）、アンリカバードエラー制御部３０２は、アンリカバードエラー発生時の処理を終了する。
【０１００】
一方、既にリカバードエラーの生じたディスクＤが有る場合（ステップＳ６２肯定）、アンリカバードエラー制御部３０２は、異常発生履歴テーブル３０３を用いてディスクＤのリカバードエラー回数がリカバリ上限回数以上か否かを判定する（ステップＳ６３）。リカバードエラーディスクＤのリカバードエラー回数がリカバリ上限回数以上でない場合には（ステップＳ６３否定）、該ディスクＤを予防保守対象としないものとし、アンリカバードエラー発生時の処理を終了する。
【０１０１】
一方、リカバードエラーディスクＤのリカバードエラー回数がリカバリ上限回数以上である場合には（ステップＳ６３肯定）、アンリカバードエラー制御部３０２は、予防保守のタイミングであると判断し、該ディスクＤを予防保守対象として抽出する。そして、予防保守実行部１０７が、予防保守対象として抽出されたリカバードエラーディスクＤに記憶されているデータの予防保守を実行し（ステップＳ４６）、アンリカバードエラー発生時の処理を終了する。
【０１０２】
［実施例３の効果］
上記実施例３によれば、リカバードエラー制御部３０１は、リカバードエラーが生じたディスクＤにアンリカバードエラーが生じるまでに生じたリカバードエラー発生回数を計測し、アンリカバードエラー制御部３０２がリカバリ上限回数として記憶する。そして、リカバードエラー制御部３０２は、アンリカバードエラーが発生したディスクＤと同一ロットグループの他のディスクＤのリカバードエラー発生回数が該計測したリカバリ上限回数に到達すると他のディスクＤを予防保守対象として抽出する。
【０１０３】
かかる構成によれば、アンリカバードエラーが生じたディスクＤにアンリカバードエラーが生じるまでに生じたリカバードエラー発生回数を計測し、計測したリカバードエラー発生回数をリカバリ上限回数として記憶することとした。このため、リカバードエラー制御部３０１は、アンリカバードエラーが生じたディスクＤと同一ロットグループに所属する他のディスクＤを予防保守対象として抽出するタイミングを加速させることができる。この結果、リカバードエラー制御部３０１は、リカバードエラーが発生した他のディスクＤをアンリカバードエラーが発生する前に予防保守することができ、他のディスクＤのデータのロストを防止できる。
【実施例４】
【０１０４】
ところで、実施例２に係るＲＡＩＤ装置２では、リカバードエラーがある回数発生した後にアンリカバードエラーが発生したディスクと同一ロットグループのディスクについて、ＲＡＩＤの冗長性を考慮しないで、予防保守タイミングを加速する場合を説明した。ＲＡＩＤ装置２は、これに限定されず、リカバードエラーがある回数発生した後にアンリカバードエラーが発生したディスクと同一ロットグループのディスクについて、ＲＡＩＤの冗長性を考慮して、予防保守タイミングを加速しても良い。
【０１０５】
そこで、実施例４では、ＲＡＩＤ装置２が、リカバードエラーがある回数発生した後にアンリカバードエラーが発生したディスクと同一ロットグループのディスクについて、ＲＡＩＤの冗長性を考慮して、予防保守タイミングを加速する場合を説明する。
【０１０６】
［実施例４に係るＲＡＩＤ装置のＲＡＩＤコントローラの構成］
図１９は、実施例４に係るＲＡＩＤコントローラの構成を示す機能ブロック図である。なお、図３に示すＲＡＩＤコントローラと同一の構成については同一符号を示すことで、その重複する構成及び動作の説明については省略する。実施例２と実施例４とが異なるところは、予防保守対象抽出部１０２に加速条件判定部４０２を追加した点にある。さらに、実施例２と実施例４とが異なるところは、予防保守対象抽出部１０２のリカバードエラー制御部１０５及びアンリカバードエラー制御部１０６をそれぞれリカバードエラー制御部４０１及びアンリカバードエラー制御部４０３に変更した点にある。さらに、実施例２と実施例４とが異なるところは、記憶部２００にＲＡＩＤグループテーブル４０４を追加した点にある。なお、実施例４に係るＲＡＩＤ装置の構成は、実施例２に係るＲＡＩＤ装置の構成と同一であるので、その構成の説明については省略する。
【０１０７】
ＲＡＩＤグループテーブル４０４は、複数のディスクＤで構成するＲＡＩＤグループを記憶する。ここで、ＲＡＩＤグループテーブル４０４について、図２０を参照しながら説明する。図２０は、実施例４に係るＲＡＩＤグループテーブルのデータ構造の一例を示す図である。図２０に示すように、ＲＡＩＤグループテーブル４０４は、ＲＡＩＤグループ４０４ａ毎に、ＲＡＩＤレベル４０４ｂ及びメンバディスク４０４ｃを対応付けて記憶する。ＲＡＩＤグループ４０４ａは、ＲＡＩＤコントローラ２０内でＲＡＩＤグループを識別する番号である。ＲＡＩＤレベル４０４ｂは、そのＲＡＩＤグループのＲＡＩＤレベルである。メンバディスク４０４ｃは、ＲＡＩＤグループに属する各ディスクＤの番号である。
【０１０８】
図１９に戻って、リカバードエラー制御部４０１は、異常種別判定部１０４によって異常がリカバードエラーであると判定された場合に、リカバードエラー処理を実行する。具体的には、リカバードエラー制御部４０１は、ロットグループテーブル２０１に基づいて、リカバードエラーが発生したエラーディスクＤの所属するロットグループを読み出す。また、リカバードエラー制御部４０１は、読み出したロットグループの予防保守加速フラグがＯＮに設定されていない場合に、エラーディスクＤについて、リカバードエラーの発生履歴を表した加点値に通常値を加算する。また、リカバードエラー制御部４０１は、読み出したロットグループの予防保守加速フラグがＯＮに設定されている場合に、エラーディスクＤが加速条件に合致しているか否かの判定を後述する加速条件判定部４０２に依頼する。
【０１０９】
また、リカバードエラー制御部４０１は、加速条件判定部４０２からエラーディスクＤが加速条件に合致している旨の判定結果を取得すると、エラーディスクＤについて、リカバードエラーの発生履歴を表した加点値に加速値を加算する。一方、リカバードエラー制御部４０１は、加速条件判定部４０２からエラーディスクＤが加速条件に合致していない旨の判定結果を取得すると、エラーディスクＤについて、リカバードエラーの発生履歴を表した加点値に通常値を加算する。そして、リカバードエラー制御部４０１は、加算した加点値をリカバードエラーが発生したエラーディスクＤに対応付けて、異常発生履歴テーブル２０２に記憶する。なお、予防保守加速フラグは、予防保守加速フラグテーブル２０３に記憶され、後述するアンリカバードエラー制御部４０３によって設定される。
【０１１０】
また、リカバードエラー制御部４０１は、このエラーディスクＤの加点値が閾値以上であるか否かを判定する。そして、リカバードエラー制御部４０１は、加点値が閾値以上であると判定する場合には、予防保守のタイミングであると判断し、リカバードエラーが発生したエラーディスクＤを予防保守対象として抽出する。一方、リカバードエラー制御部４０１は、加点値が閾値未満であると判定する場合には、リカバードエラーが発生したエラーディスクＤを予防保守対象としないものとする。
【０１１１】
加速条件判定部４０２は、リカバードエラーの生じたエラーディスクＤの加速条件を判定する。具体的には、加速条件判定部４０２は、リカバードエラー制御部４０１からエラーディスクＤが加速条件に合致しているか否かの判定依頼を取得すると、依頼されたエラーディスクＤのＲＡＩＤグループに関するデータをＲＡＩＤグループテーブル４０４から読み出す。すなわち、加速条件判定部４０２は、依頼されたエラーディスクＤのＲＡＩＤレベル及びメンバディスクをＲＡＩＤグループテーブル４０４から読み出す。また、加速条件判定部４０２は、読み出したメンバディスクのリカバードエラーの発生履歴を表した加点値を異常発生履歴テーブル２０２から読み出す。そして、加速条件判定部４０２は、依頼されたエラーディスクＤのＲＡＩＤレベル及びメンバディスクのリカバードエラーの発生履歴を表した加点値に基づいて、加速条件の合致を判定する。
【０１１２】
例えば、加速条件判定部４０２は、エラーディスクＤのＲＡＩＤレベルがＲＡＩＤ０の場合には、冗長性がないので、メンバディスクの加点値によらず、加速条件に合致すると判定する。エラーディスクＤにアンリカバードエラーが発生すると、データのロストを防止できないからである。
【０１１３】
例えば、加速条件判定部４０２は、エラーディスクＤのＲＡＩＤレベルがＲＡＩＤ１の場合であってエラーディスクＤを除外したメンバディスクの各加点値が０点である場合には、加速条件に合致しないと判定する。エラーディスクＤを除外したメンバディスクは、リカバードエラーを生じておらず、冗長性があるので、エラーディスクＤにアンリカバードエラーが発生しても、データのロストを防止できるからである。一方、加速条件判定部４０２は、エラーディスクＤのＲＡＩＤレベルがＲＡＩＤ１の場合であってエラーディスクＤを除外したメンバディスクの１個でも加点値が０点を越えている場合には、加速条件に合致すると判定する。エラーディスクＤを除外したメンバディスクのいずれかにリカバードエラーが生じている場合には、リカバードエラーが生じているエラーディスクＤ及びメンバディスクにアンリカバードエラーが発生すると、データのロストを防止できないからである。なお、ＲＡＩＤレベルがＲＡＩＤ５であっても同様である。
【０１１４】
例えば、加速条件判定部４０２は、エラーディスクＤのＲＡＩＤレベルがＲＡＩＤ６の場合であってメンバディスクの１個のみの加点値が０点を越えている場合には、加速条件に合致していないと判定する。リカバードエラーが生じているエラーディスクＤ及びメンバディスクにアンリカバードエラーが発生しても、冗長性があるので、メンバディスクの残りのディスクによってデータを復旧できるからである。一方、加速条件判定部４０２は、エラーディスクＤのＲＡＩＤレベルがＲＡＩＤ６の場合であってメンバディスクの２個以上の加点値が０点を越えている場合には、加速条件に合致すると判定する。リカバードエラーが生じているエラーディスクＤ及びメンバディスクにアンリカバードエラーが発生すると、もはや冗長性がないので、メンバディスクの残りのディスクによってデータを復旧できないからである。
【０１１５】
アンリカバードエラー制御部４０３は、異常種別判定部１０４によって異常がアンリカバードエラーであると判定された場合に、アンリカバードエラー処理を実行する。具体的には、アンリカバードエラー制御部４０３は、ロットグループテーブル２０１に基づいて、アンリカバードエラーが発生したエラーディスクＤの所属するロットグループを読み出す。また、アンリカバードエラー制御部４０３は、読み出したロットグループに所属するディスクＤの予防保守のタイミングを加速させるべく、当該ロットグループについて、予防保守加速フラグテーブル２０３の予防保守加速フラグにＯＮを示す値を記憶する。
【０１１６】
また、アンリカバードエラー制御部４０３は、ロットグループテーブル２０１及び異常発生履歴テーブル２０２を用いて、エラーディスクＤと同一ロットグループ内に、既にリカバードエラーの発生したディスクＤが有るか否かを判定する。そして、アンリカバードエラー制御部４０３は、既にリカバードエラーの発生したディスクＤが有ると判定する場合には、このディスクＤが加速条件に合致しているか否かの判定を加速条件判定部４０２に依頼する。
【０１１７】
また、アンリカバードエラー制御部４０３は、加速条件判定部４０２からこのディスクＤが加速条件に合致している旨の判定結果を取得すると、このディスクＤについて、異常発生履歴テーブル２０２に既に設定された加点値の値を加速値で換算した値に更新する。また、アンリカバードエラー制御部４０３は、加点値を更新したディスクＤの加点値が閾値以上であるか否かを判定する。そして、アンリカバードエラー制御部４０３は、加点値が閾値以上であると判定する場合には、予防保守のタイミングであると判断し、既にリカバードエラーの発生したディスクＤを予防保守対象として抽出する。一方、アンリカバードエラー制御部４０３は、加点値が閾値未満であると判定する場合には、このディスクＤを予防保守対象としないものとする。
【０１１８】
［実施例４に係る加速条件判定の具体例］
次に、図２１は、実施例４に係る加速条件判定の具体例を説明する図である。図２１に示すように、ロット番号１番から９９番までのディスクＤ００〜Ｄ０１及びＤ１０〜Ｄ１４はロットグループ１に所属し、ロット番号２００番から２９９番までのディスクＤ０２〜Ｄ０４はロットグループ３に所属する。また、ディスクＤ００及びディスクＤ１０、ディスクＤ０１及びディスクＤ１１、ディスクＤ０２及びディスクＤ１２、ディスクＤ０３及びディスクＤ１３は、それぞれＲＡＩＤ１を構成する。また、ディスクＤ０４及びディスクＤ１４は、ＲＡＩＤ０を構成する。さらに、ロットグループ１に所属するディスクＤ０１は既に故障しているものとする。また、ロットグループ１に所属するディスクＤ１２でリカバードエラーがある回数発生した後にアンリカバードエラーが発生したものとする。
【０１１９】
例えば、ロットグループ１に所属するディスクＤ００にリカバードエラーが発生するものとする。すると、加速条件判定部４０２は、リカバードエラー制御部４０１からディスクＤ００の加速条件に合致しているか否かの判定依頼を取得すると、ディスクＤ００の加速条件の合致を判定する。ここでは、加速条件判定部４０２は、ディスクＤ００のＲＡＩＤレベルがＲＡＩＤ１であって、メンバディスクのディスクＤ１０にリカバードエラーが生じていないので、冗長性があると判断し、加速条件に合致しないと判定する。
【０１２０】
例えば、ロットグループ１に所属するディスクＤ１０にリカバードエラーが発生するものとする。すると、加速条件判定部４０２は、リカバードエラー制御部４０１からディスクＤ１０の加速条件に合致しているか否かの判定依頼を取得すると、ディスクＤ１０の加速条件の合致を判定する。ここでは、加速条件判定部４０２は、ディスクＤ１０のＲＡＩＤレベルがＲＡＩＤ１であって、メンバディスクのディスクＤ００にリカバードエラーが生じていないので、冗長性があると判断し、加速条件に合致しないと判定する。
【０１２１】
例えば、ロットグループ１に所属するディスクＤ００に既にリカバードエラーが発生し、さらに、ディスクＤ１０にリカバードエラーが発生するものとする。すると、加速条件判定部４０２は、リカバードエラー制御部４０１からディスクＤ１０の加速条件に合致しているか否かの判定依頼を取得すると、ディスクＤ１０の加速条件の合致を判定する。ここでは、加速条件判定部４０２は、ディスクＤ１０のＲＡＩＤレベルがＲＡＩＤ１であるが、メンバディスクのディスクＤ００に既にリカバードエラーが生じているので、加速条件に合致すると判定する。すなわち、加速条件判定部４０２は、仮にディスクＤ００及びディスクＤ１０にアンリカバードエラーが発生すると、データロストすることとなるので、ディスクＤ１０にアンリカバードエラーが発生する前に予防保守すべく、加速条件に合致すると判定する。
【０１２２】
例えば、ロットグループ１に所属するディスクＤ１１にリカバードエラーが発生するものとする。すると、加速条件判定部４０２は、リカバードエラー制御部４０１からディスクＤ１１の加速条件に合致しているか否かの判定依頼を取得すると、ディスクＤ１１の加速条件の合致を判定する。ここでは、加速条件判定部４０２は、ディスクＤ１１のＲＡＩＤレベルがＲＡＩＤ１であるが、メンバディスクのディスクＤ０１が既に故障しているので、加速条件に合致すると判定する。すなわち、加速条件判定部４０２は、仮にディスクＤ１１にアンリカバードエラーが発生すると、データロストすることとなるので、ディスクＤ１１にアンリカバードエラーが発生する前に予防保守すべく、加速条件に合致すると判定する。
【０１２３】
例えば、ロットグループ１に所属するディスクＤ１３にリカバードエラーが発生するものとする。すると、加速条件判定部４０２は、リカバードエラー制御部４０１からディスクＤ１３の加速条件に合致しているか否かの判定依頼を取得すると、ディスクＤ１３の加速条件の合致を判定する。ここでは、加速条件判定部４０２は、ディスクＤ１３のＲＡＩＤレベルがＲＡＩＤ１であって、冗長性が有ると判断し、加速条件に合致しないと判定する。
【０１２４】
例えば、ロットグループ１に所属するディスクＤ１４にリカバードエラーが発生するものとする。すると、加速条件判定部４０２は、リカバードエラー制御部４０１からディスクＤ１４の加速条件に合致しているか否かの判定依頼を取得すると、ディスクＤ１４の加速条件の合致を判定する。ここでは、加速条件判定部４０２は、ディスクＤ１４のＲＡＩＤレベルがＲＡＩＤ０であって、冗長性がないと判断し、加速条件に合致すると判定する。
【０１２５】
［実施例４に係る予防保守加速処理の処理手順］
次に、実施例４に係る予防保守加速処理の処理手順を、図２２及び図２３を参照して説明する。まず、ディスクのリカバードエラー発生時の処理手順を、図２２を参照して説明する。図２２は、実施例４に係るディスクのリカバードエラー発生時の処理手順を示すフローチャートである。なお、実施例４に係る予防保守加速処理の処理手順のうち、実施例２に係る予防保守加速処理の処理手順（図１０）と同じ処理手順については、同一符号を付すことで、その重複する手順の説明を簡略する。また、異常検出部１０３がディスクＤに生じたエラーを検出したものとする。
【０１２６】
まず、異常種別判定部１０４は、異常検出部１０３によって検出された異常がリカバードエラーであるか否かを判定する（ステップＳ３１）。そして、異常がリカバードエラーでない場合には（ステップＳ３１否定）、ステップＳ３１に移行する。
【０１２７】
一方、異常がリカバードエラーである場合には（ステップＳ３１肯定）、リカバードエラー制御部４０１は、リカバードエラーが発生したディスクＤが所属するロットグループの予防保守加速フラグがＯＮであるか否かを判定する（ステップＳ３２）。
【０１２８】
続いて、エラーディスクＤが所属するロットグループの予防保守加速フラグがＯＮでない場合には（ステップＳ３２否定）、リカバードエラー制御部４０１は、エラーディスクＤの加点値に通常値を加算する（ステップＳ３３）。一方、エラーディスクＤが所属するロットグループの予防保守加速フラグがＯＮである場合には（ステップＳ３２肯定）、リカバードエラー制御部４０１は、エラーディスクＤが加速条件に合致しているか否かの判定を加速条件判定部４０２に依頼する。
【０１２９】
そして、加速条件判定部４０２は、リカバードエラー制御部４０１によってエラーディスクＤの加速条件の合致判定を依頼されると、当該エラーディスクＤの加速条件を判定する（ステップＳ７１）。具体的には、加速条件判定部４０２は、エラーディスクＤのＲＡＩＤレベル及びメンバディスクをＲＡＩＤグループテーブル４０４から読み出す。また、加速条件判定部４０２は、読み出したメンバディスクのリカバードエラーの発生履歴を表した加点値を異常発生履歴テーブル２０２から読み出す。そして、加速条件判定部４０２は、エラーディスクＤのＲＡＩＤレベル及びメンバディスクの加点値に基づいて、加速条件の合致を判定する。
【０１３０】
そして、加速条件判定部４０２によってエラーディスクＤが加速条件に合致すると判定された場合には（ステップＳ７１肯定）、リカバードエラー制御部４０１は、エラーディスクＤの加点値に通常値より大きい値を示す加速値を加算する（ステップＳ３４）。一方、加速条件判定部４０２によってエラーディスクＤが加速条件に合致しないと判定された場合には（ステップＳ７１否定）、リカバードエラー制御部４０１は、エラーディスクＤの加点値に通常値を加算する（ステップＳ３３）。
【０１３１】
続いて、リカバードエラー制御部４０１は、エラーディスクＤの加点値が閾値以上であるか否かを判定する（ステップＳ３５）。そして、エラーディスクＤの加点値が閾値以上である場合には（ステップＳ３５肯定）、リカバードエラー制御部４０１は、予防保守のタイミングであると判断し、エラーディスクＤを予防保守対象として抽出する。そして、予防保守実行部１０７が、予防保守対象として抽出されたディスクＤに記憶されているデータの予防保守を実行し（ステップＳ３６）、リカバードエラー発生時の処理を終了する。
【０１３２】
一方、エラーディスクＤの加点値が閾値以上でない場合には（ステップＳ３５否定）、リカバードエラー制御部４０１は、エラーディスクＤを予防保守対象としないものとし、リカバードエラー発生時の処理を終了する。
【０１３３】
次に、ディスクのアンリカバードエラー発生時の処理手順を、図２３を参照して説明する。図２３は、実施例４に係るディスクのアンリカバードエラー発生時の処理手順を示すフローチャートである。なお、異常検出部１０３がディスクＤに生じたエラーを検出したものとする。
【０１３４】
まず、異常種別判定部１０４は、異常検出部１０３によって検出された異常がアンリカバードエラーであるか否かを判定する（ステップＳ４１）。そして、異常がアンリカバードエラーでない場合には（ステップＳ４１否定）、ステップＳ４１に移行する。
【０１３５】
一方、異常がアンリカバードエラーである場合には（ステップＳ４１肯定）、アンリカバードエラー制御部４０３は、エラーディスクＤのロットグループについて、予防保守加速フラグテーブル２０３の予防保守加速フラグをＯＮに設定する（ステップＳ４２）。アンリカバードエラーが発生したディスクＤと同一ロットグループに所属するディスクＤの予防保守のタイミングを加速させるためである。
【０１３６】
続いて、アンリカバードエラー制御部４０３は、エラーディスクＤと同一ロットグループ内に、既にリカバードエラーが発生したディスクＤが有るか否かを判定する（ステップＳ４３）。既にリカバードエラーが発生したディスクＤが無い場合には（ステップＳ４３否定）、アンリカバードエラー制御部４０３は、アンリカバードエラー発生時の処理を終了する。
【０１３７】
一方、既にリカバードエラーが発生したディスクＤが有る場合には（ステップＳ４３肯定）、アンリカバードエラー制御部４０３は、既にリカバードエラーが発生したディスクＤが加速条件に合致しているか否かの判定を加速条件判定部４０２に依頼する。
【０１３８】
そして、加速条件判定部４０２は、アンリカバードエラー制御部４０３によってリカバードエラーディスクＤの加速条件の合致判定を依頼されると、該ディスクＤの加速条件を判定する（ステップＳ８１）。具体的には、加速条件判定部４０２は、リカバードエラーディスクＤのＲＡＩＤレベル及びメンバディスクをＲＡＩＤグループテーブル４０４から読み出す。また、加速条件判定部４０２は、読み出したメンバディスクのリカバードエラーの発生履歴を表した加点値を異常発生履歴テーブル２０２から読み出す。そして、加速条件判定部４０２は、リカバードエラーディスクＤのＲＡＩＤレベル及びメンバディスクの加点値に基づいて、加速条件の合致を判定する。
【０１３９】
そして、リカバードエラーディスクＤが加速条件に合致しないと判定された場合には（ステップＳ８１否定）、アンリカバードエラー制御部４０３は、アンリカバードエラー発生時の処理を終了する。一方、リカバードエラーディスクＤが加速条件に合致すると判定された場合には（ステップＳ８１肯定）、アンリカバードエラー制御部４０３は、該ディスクＤについて、異常発生履歴テーブル２０２の加点値の値を加速値で換算した値に更新する（ステップＳ４４）。
【０１４０】
続いて、アンリカバードエラー制御部４０３は、リカバードエラーディスクＤの加点値が閾値以上であるか否かを判定する（ステップＳ４５）。リカバードエラーディスクＤの加点値が閾値以上でない場合には（ステップＳ４５否定）、該ディスクＤを予防保守対象としないものとし、アンリカバードエラー発生時の処理を終了する。
【０１４１】
一方、リカバードエラーディスクＤの加点値が閾値以上である場合には（ステップＳ４５肯定）、アンリカバードエラー制御部４０３は、予防保守のタイミングであると判断し、該ディスクＤを予防保守対象として抽出する。そして、予防保守実行部１０７が、予防保守対象として抽出されたリカバードエラーディスクＤに記憶されているデータの予防保守を実行し（ステップＳ４６）、アンリカバードエラー発生時の処理を終了する。
【０１４２】
［実施例４の効果］
上記実施例４によれば、ＲＡＩＤグループテーブル４０４は、複数のディスクＤで構成されるＲＡＩＤグループを記憶する。そして、リカバードエラー制御部４０１は、リカバードエラーが生じた後にアンリカバードエラーが生じたディスクＤと同一ロットグループに所属する他のディスクＤにおけるリカバードエラーの発生を検出する。そして、リカバードエラー制御部４０１は、他のディスクＤについて、ＲＡＩＤグループのＲＡＩＤレベル及びメンバディスクのリカバードエラーの発生履歴を表した加点値に基づいて、リカバードエラーが生じた他のディスクＤを予防保守対象として抽出する。
【０１４３】
かかる構成によれば、アンリカバードエラーが生じたディスクＤと同一ロットグループに所属する他のディスクＤについて、ＲＡＩＤレベル及びメンバディスクのリカバードエラーの発生履歴に基づいて、予防保守対象として抽出することとした。このため、リカバードエラー制御部４０１は、他のディスクＤについて、ＲＡＩＤレベル及びメンバディスクのリカバードエラーの発生履歴からデータの冗長性を考慮できるので、他のディスクＤのデータのロストを確実に防止できる。また、リカバードエラー制御部４０１は、アンリカバードエラーが生じたディスクＤと同一ロットグループに所属する全てのリカバードエラーが発生した他のディスクＤを対象に予防保守を加速するのではなく、優先すべき他のディスクＤを対象に予防保守を加速する。このため、リカバードエラー制御部４０１は、ホットスペアディスクの数が少ない場合であっても、他のディスクＤについて、効率的に予防保守できる。
【０１４４】
なお、実施例４に係るリカバードエラー制御部４０１では、加速条件判定部４０２による他のディスクＤの加速条件に合致しているか否かの判定結果に基づいて、他のディスクＤの加点値に所定値（通常値または加速値）を加算する。そして、リカバードエラー制御部４０１は、該加点値が閾値に到達すると、他のディスクＤを予防保守対象とした。しかしながら、リカバードエラー制御部４０１は、これに限定されず、加速条件判定部４０２による他のディスクＤの加速条件に合致しているか否かの判定結果に基づいて、所定値（通常値または加速値）をリカバリ上限回数とする。そして、リカバードエラー制御部４０１は、他のディスクＤのリカバードエラー発生回数が該リカバリ上限回数に到達すると、他のディスクＤを予防保守対象とするものとしても良い。この場合、通常値は、例えば４回とし、加速値は、例えばアンリカバードエラーが生じたディスクＤのリカバードエラー発生回数とする。
【実施例５】
【０１４５】
ところで、実施例２に係るＲＡＩＤ装置２では、リカバードエラー後にアンリカバードエラーが発生したディスクと同一ロットグループのディスクについて、加点する値に通常値より大きい加速値を用いて、予防保守タイミングを加速する場合を説明した。しかしながら、予防保守タイミングが加速されたディスクの予防保守中に、このディスクにアンリカバードエラーが発生する場合も想定される。そこで、予防保守中にアンリカバードエラーが発生する場合について、図２４を参照しながら説明する。
【０１４６】
図２４は、予防保守中にアンリカバードエラーが発生する場合を説明する図である。図２４に示すように、リカバードエラーが発生した後にアンリカバードエラーが発生したディスク（図示せず）と同一ロットグループのディスク０１について、予防保守タイミングが加速される。すなわち、ディスク０１について、２回目のリカバードエラーの発生時に予防保守処理（リダンダントコピー）が行われる。ところが、ディスク０１について、２回目のリカバードエラーが発生してからアンリカバードエラーが発生するまでの時間が短い場合に、ディスク０１がリダンダントコピーの途中でアンリカバードエラーが発生することがある。すなわち、ディスク０１について、２回目のリカバードエラーの発生からアンリカバードエラーの発生までの時間がリダンダントコピーに要する時間より短い場合に、予防保守タイミングを加速させても、リダンダントコピーが間に合わないことがある。実施例５では、２回目のリカバードエラーが発生してからアンリカバードエラーが発生するまでの時間が短い場合であっても、アンリカバードエラーが発生するまでにリダンダントコピーを完了させることを目的とする。
【０１４７】
そこで、実施例５では、ＲＡＩＤ装置２が、リカバードエラーがある回数発生した後にアンリカバードエラーが発生したディスクと同一ロットグループのディスクについて、予防保守処理に要する時間を考慮して、予防保守タイミングを加速する場合を説明する。なお、実施例のリカバードエラーとは、ロットに起因する所定要因の異常であってリトライによって復旧可能な異常を意味する。また、アンリカバードエラーとは、ロットに起因する即時切り離し要因となる異常であって復旧不可能な異常を意味する。
【０１４８】
［実施例５に係るＲＡＩＤ装置のＲＡＩＤコントローラの構成］
図２５は、実施例５に係るＲＡＩＤコントローラの構成を示す機能ブロック図である。なお、図３に示すＲＡＩＤコントローラと同一の構成については同一符号を示すことで、その重複する構成及び動作の説明については省略する。実施例２と実施例５とが異なるところは、リカバードエラー制御部１０５に２段階加速判定部５０１を追加し、アンリカバードエラー制御部１０６にエラー発生間隔算出部５０２及び２段階加速換算判定部５０３を追加した点にある。さらに、実施例２と実施例５とが異なるところは、記憶部２００にエラー発生間隔５０４及び予防保守時間５０５を追加した点にある。なお、実施例５に係るＲＡＩＤ装置の構成は、実施例２に係るＲＡＩＤ装置の構成と同一であるので、その構成の説明については省略する。
【０１４９】
エラー発生間隔５０４は、リカバードエラーが発生した後にアンリカバードエラーが発生したディスクのアンリカバードエラー直前のリカバードエラーからアンリカバードエラーまでの時間（以降、「エラー発生間隔」という。）を記憶する。予防保守時間５０５は、予防保守処理（リダンダントコピー）に要する時間（以降、「予防保守時間」という。）を予め記憶する。予防保守時間５０５は、ディスク毎の予防保守時間であっても良いし、全ディスクの予防保守時間の平均時間であっても良い。
【０１５０】
リカバードエラー制御部１０５は、異常種別判定部１０４によって異常がリカバードエラーであると判定された場合に、リカバードエラー処理を実行する。具体的には、リカバードエラー制御部１０５は、ロットグループテーブル２０１に基づいて、リカバードエラーが発生したエラーディスクＤの所属するロットグループを読み出す。また、リカバードエラー制御部１０５は、読み出したロットグループの予防保守加速フラグがＯＮに設定されていない場合に、エラーディスクＤについて、リカバードエラーの発生履歴を表した加点値に通常値を加算する。また、リカバードエラー制御部１０５は、読み出したロットグループの予防保守加速フラグがＯＮに設定されている場合に、加速を行なうべく、エラーディスクＤについて、リカバードエラーの発生履歴を表した加点値に通常値より大きい加速値を加算する。さらに、リカバードエラー制御部１０５は、後述する２段階加速判定部５０１によって２段階加速判定処理を実行する。
【０１５１】
２段階加速判定部５０１は、エラー発生間隔５０４及び予防保守時間５０５に基づいて、リカバードエラーが発生したエラーディスクＤについて、２段階加速を行なうか否かを判定する。具体的には、２段階加速判定部５０１は、エラー発生間隔５０４及び予防保守時間５０５を記憶部２００から読み出す。また、２段階加速判定部５０１は、エラー発生間隔５０４が予防保守時間５０５より短い場合には、予防保守中にアンリカバードエラーとなる可能性が高いと判断し、２段階加速を行なう。例えば、２段階加速判定部５０１は、通常値より大きい加速値の２倍の値を２段階加速値として、エラーディスクＤについて、リカバードエラーの発生履歴を表した加点値に２段階加速値を加算する。
【０１５２】
アンリカバードエラー制御部１０６は、異常種別判定部１０４によって異常がアンリカバードエラーであると判定された場合に、アンリカバードエラー処理を実行する。具体的には、アンリカバードエラー制御部１０６は、ロットグループテーブル２０１に基づいて、アンリカバードエラーが発生したエラーディスクＤの所属するロットグループを読み出す。また、アンリカバードエラー制御部１０６は、読み出したロットグループに所属するディスクＤの予防保守のタイミングを加速させるべく、当該ロットグループについて、予防保守加速フラグテーブル２０３の予防保守加速フラグにＯＮを示す値を記憶する。
【０１５３】
また、アンリカバードエラー制御部１０６は、ロットグループテーブル２０１及び異常発生履歴テーブル２０２を用いて、エラーディスクＤと同一ロットグループ内に、既にリカバードエラーの発生したディスクＤが有るか否かを判定する。そして、アンリカバードエラー制御部１０６は、既にリカバードエラーの発生したディスクＤが有ると判定する場合には、このディスクＤについて、異常発生履歴テーブル２０２に既に設定された加点値の値を、加速値で換算した値に更新する。
【０１５４】
また、アンリカバードエラー制御部１０６は、既にリカバードエラーの発生したディスクＤの加点値が閾値以上であるか否かを判定する。そして、アンリカバードエラー制御部１０６は、加点値が閾値以上であると判定する場合には、予防保守のタイミングであると判断し、既にリカバードエラーの発生したディスクＤを予防保守対象として抽出する。一方、アンリカバードエラー制御部１０６は、加点値が閾値未満であると判定する場合には、後述する２段階加速換算判定部５０３によって２段階加速換算判定処理を実行する。
【０１５５】
エラー発生間隔算出部５０２は、アンリカバードエラーが発生したエラーディスクＤのエラー発生間隔を算出する。具体的には、エラー発生間隔算出部５０２は、アンリカバードエラーが発生したエラーディスクＤについて、アンリカバードエラー直前のリカバードエラーからアンリカバードエラーまでの時間を計測する。また、エラー発生間隔算出部５０２は、計測した時間をエラー発生間隔５０４に記憶する。
【０１５６】
２段階加速換算判定部５０３は、エラー発生間隔及び予防保守時間に基づいて、既にリカバードエラーの発生したエラーディスクＤについて、２段階加速を行なうか否かを判定する。具体的には、２段階加速換算判定部５０３は、エラー発生間隔５０４及び予防保守時間５０５を記憶部２００から読み出す。また、２段階加速換算判定部５０３は、エラー発生間隔５０４が予防保守時間５０５より短い場合には、予防保守中にアンリカバードエラーとなる可能性が高いと判断し、エラーディスクＤについて、リカバードエラーの発生履歴を表した加点値を２段階加速値で換算した値に更新する。例えば、２段階加速換算判定部５０３は、通常値より大きい加速値の２倍の値を２段階加速値として、エラーディスクＤについて、異常発生履歴テーブル２０２に既に設定された加点値の値を２段階加速値で換算した値に更新する。
【０１５７】
［実施例５に係る予防保守加速処理の処理手順］
次に、実施例５に係る予防保守加速処理の処理手順を、図２６及び図２７を参照して説明する。まず、ディスクのリカバードエラー発生時の処理手順を、図２６を参照して説明する。図２６は、実施例５に係るディスクのリカバードエラー発生時の処理手順を示すフローチャートである。なお、実施例５に係る予防保守加速処理の処理手順のうち、実施例２に係る予防保守加速処理の処理手順（図１０）と同じ処理手順については、同一符号を付すことで、その重複する手順の説明を簡略する。また、異常検出部１０３がディスクＤに生じたエラーを検出したものとする。
【０１５８】
まず、異常種別判定部１０４は、異常検出部１０３によって検出された異常がリカバードエラーであるか否かを判定する（ステップＳ３１）。そして、異常がリカバードエラーでない場合には（ステップＳ３１否定）、ステップＳ３１に移行する。
【０１５９】
一方、異常がリカバードエラーである場合には（ステップＳ３１肯定）、リカバードエラー制御部１０５は、リカバードエラーが発生したディスクＤが所属するロットグループの予防保守加速フラグがＯＮであるか否かを判定する（ステップＳ３２）。続いて、エラーディスクＤが所属するロットグループの予防保守加速フラグがＯＮでない場合には（ステップＳ３２否定）、リカバードエラー制御部１０５は、エラーディスクＤの加点値に通常値を加算する（ステップＳ３３）。
【０１６０】
一方、エラーディスクＤが所属するロットグループの予防保守加速フラグがＯＮである場合には（ステップＳ３２肯定）、リカバードエラー制御部１０５は、通常の加速を行なうべく、エラーディスクＤの加点値に加速値を加算する（ステップＳ９１）。そして、２段階加速判定部５０１は、エラー発生間隔が予防保守時間より小さいか否かを判定する（ステップＳ９２）。具体的には、２段階加速判定部５０１は、エラー発生間隔５０４及び予防保守時間５０５を記憶部２００から読み出し、エラー発生間隔が予防保守時間より小さいか否かを判定する。
【０１６１】
そして、エラー発生間隔が予防保守時間より小さいと判定される場合には（ステップＳ９２肯定）、２段階加速判定部５０１は、エラーディスクＤの加点値に２段階加速値を加算し（ステップＳ９３）、ステップＳ３５に移行する。すなわち、２段階加速判定部５０１は、エラーディスクＤが予防保守中にアンリカバードエラーとなる可能性が高いと判断し、エラーディスクＤについて異常発生履歴テーブル２０２の加点値に２段階加速値を加算する。２段階加速値は、例えば、通常値より大きい加速値の２倍の値とする。
【０１６２】
続いて、リカバードエラー制御部１０５は、エラーディスクＤの加点値が閾値以上であるか否かを判定する（ステップＳ３５）。そして、エラーディスクＤの加点値が閾値以上である場合には（ステップＳ３５肯定）、リカバードエラー制御部１０５は、予防保守のタイミングであると判断し、エラーディスクＤを予防保守対象として抽出する。そして、予防保守実行部１０７が、予防保守対象として抽出されたディスクＤに記憶されているデータの予防保守を実行し（ステップＳ３６）、リカバードエラー発生時の処理を終了する。
【０１６３】
一方、エラーディスクＤの加点値が閾値以上でない場合には（ステップＳ３５否定）、リカバードエラー制御部１０５は、エラーディスクＤを予防保守対象としないものとし、リカバードエラー発生時の処理を終了する。
【０１６４】
次に、ディスクのアンリカバードエラー発生時の処理手順を、図２７を参照して説明する。図２７は、実施例５に係るディスクのアンリカバードエラー発生時の処理手順を示すフローチャートである。なお、実施例５に係る予防保守加速処理の処理手順のうち、実施例５に係る予防保守加速処理の処理手順（図１１）と同じ処理手順については、同一符号を付すことで、その重複する手順の説明を簡略する。異常検出部１０３がディスクＤに生じたエラーを検出したものとする。
【０１６５】
まず、異常種別判定部１０４は、異常検出部１０３によって検出された異常がアンリカバードエラーであるか否かを判定する（ステップＳ４１）。そして、異常がアンリカバードエラーでない場合には（ステップＳ４１否定）、ステップＳ４１に移行する。
【０１６６】
一方、異常がアンリカバードエラーである場合には（ステップＳ４１肯定）、アンリカバードエラー制御部１０６は、エラーディスクＤのロットグループについて、予防保守加速フラグテーブル２０３の予防保守加速フラグをＯＮに設定する（ステップＳ４２）。アンリカバードエラーが発生したディスクＤと同一ロットグループに所属するディスクＤの予防保守のタイミングを加速させるためである。
【０１６７】
そして、エラー発生間隔算出部５０２は、アンリカバードエラーが発生したエラーディスクＤのエラー発生間隔を算出する（ステップＳ１０１）。具体的には、エラー発生間隔算出部５０２は、アンリカバードエラーが発生したエラーディスクＤについて、アンリカバードエラー直前のリカバードエラーからアンリカバードエラーまでの時間を計測し、該計測時間をエラー発生間隔５０４に記憶する。
【０１６８】
続いて、アンリカバードエラー制御部１０６は、エラーディスクＤと同一ロットグループ内に、既にリカバードエラーが発生したディスクＤが有るか否かを判定する（ステップＳ４３）。既にリカバードエラーが発生したディスクＤが無い場合には（ステップＳ４３否定）、アンリカバードエラー制御部１０６は、アンリカバードエラー発生時の処理を終了する。
【０１６９】
一方、既にリカバードエラーが発生したディスクＤが有る場合に（ステップＳ４３肯定）、アンリカバードエラー制御部１０６は、リカバードエラーディスクＤについて、異常発生履歴テーブル２０２の加点値を加速値で換算した値に更新する（ステップＳ４４）。
【０１７０】
続いて、アンリカバードエラー制御部１０６は、リカバードエラーディスクＤの加点値が閾値以上であるか否かを判定する（ステップＳ４５）。リカバードエラーディスクＤの加点値が閾値以上でない場合には（ステップＳ４５否定）、２段階加速換算判定部５０３は、エラー発生間隔が予防保守時間より小さいか否かを判定する（ステップＳ１０２）。具体的には、２段階加速換算判定部５０３は、エラー発生間隔５０４及び予防保守時間５０５を記憶部２００から読み出し、エラー発生間隔が予防保守時間より小さいか否かを判定する。
【０１７１】
そして、エラー発生間隔が予防保守時間より小さい場合には（ステップＳ１０２肯定）、２段階加速換算判定部５０３は、リカバードエラーディスクＤについて、異常発生履歴テーブル２０２の加点値を２段階加速値で換算する値に更新する（ステップＳ１０３）。そして、２段階加速換算判定部５０３は、ステップＳ４５に移行する。すなわち、２段階加速換算判定部５０３は、リカバードエラーディスクＤが予防保守中にアンリカバードエラーとなる可能性が高いと判断し、該ディスクＤについて異常発生履歴テーブル２０２の加点値を２段階加速値で換算する。２段階加速値は、例えば、通常値より大きい加速値の２倍の値とする。
【０１７２】
一方、エラー発生間隔が予防保守時間以上であると判定される場合には（ステップＳ１０２否定）、２段階加速換算判定部５０３は、リカバードエラーディスクＤの加点値を換算対象としないものとし、アンリカバードエラー発生時の処理を終了する。
【０１７３】
そして、リカバードエラーディスクＤの加点値が閾値以上である場合には（ステップＳ４５肯定）、アンリカバードエラー制御部１０６は、予防保守のタイミングであると判断し、該ディスクＤを予防保守対象として抽出する。そして、予防保守実行部１０７が、予防保守対象として抽出されたリカバードエラーディスクＤに記憶されているデータの予防保守を実行し（ステップＳ４６）、アンリカバードエラー発生時の処理を終了する。
【０１７４】
［実施例５に係る予防保守加速処理の一例］
次に、予防保守加速処理の一例について図２８を参照しながら説明する。図２８は、実施例５に係る予防保守加速処理の一例を示す図である。なお、図２８に示されるディスク００及びディスク１０は、同一ロットグループに所属するものとする。また、通常値を２６点、加速値を５２点、２段階加速値を１０４点、閾値を１００点とするものとする。
【０１７５】
まず、図２８に示すように、横軸は時間軸を示し、縦軸はディスク番号を示す。ディスク番号がディスク００のディスクについて、１回目のリカバードエラーが発生し、時間の経過とともに、２回目のリカバードエラーが発生する。一方、ディスク００の２回目のリカバードエラーが発生した後に、ディスク番号がディスク１０のディスクについて、１回目のリカバードエラーが発生する。ディスクにリカバードエラーが発生する毎に、リカバードエラー制御部１０５は、リカバードエラーが発生したディスクＤについて、リカバードエラーの発生履歴を表した加点値に通常値（２６点）を加算する。
【０１７６】
次に、ディスク００について、加点値が閾値以上になる前の３回目にアンリカバードエラーが発生し、アンリカバードエラー制御部１０６は、ディスク００のディスクを切り離す。このとき、エラー発生間隔算出部５０２は、アンリカバードエラーが発生したディスク００について、アンリカバードエラー直前の２回目のリカバードエラーからアンリカバードエラーまでの時間を計測し、該計測時間をエラー発生間隔５０４に記憶する。
【０１７７】
次に、アンリカバードエラー制御部１０６は、既に１回のリカバードエラーが発生しているディスク１０がディスク００と同一ロットグループであるので、ロットに起因する要因によりアンリカバードエラーが発生する可能性があると判断する。そして、アンリカバードエラー制御部１０６は、ディスク１０について、既にリカバードエラーが発生する毎に通常値が加算された加点値（２６点）を加速値（５２点）で換算する。
【０１７８】
次に、アンリカバードエラー制御部１０６は、ディスク１０について、換算された加点値が閾値以上であるか否かを判定する。そして、アンリカバードエラー制御部１０６は、ディスク１０について、換算された加点値（５２点）が閾値（１００点）以上でないので、２段階加速換算判定部５０３が、エラー発生間隔５０４が予め記憶部２００に記憶された予防保守時間５０５より短いか否かを判定する。ここでは、２段階加速換算判定部５０３は、エラー発生間隔５０４が予防保守時間５０５より短いと判定し、ディスク１０について、加点値（５２点）を２段階加速値（１０４点）で換算する。すなわち、２段階加速換算判定部５０３は、ディスク１０が予防保守中にアンリカバードエラーとなる可能性が高いと判断し、加点値の２段階加速を行なうのである。
【０１７９】
次に、アンリカバードエラー制御部１０６は、ディスク１０について、換算された加点値が閾値以上であるか否かを判定する。そして、アンリカバードエラー制御部１０６は、ディスク１０について、換算された加点値（１０２点）が閾値（１００点）以上であるので、通常より早期に、予防保守を実行する。この結果、ディスク０１は、予防保守中にアンリカバードエラーを未然に防止できる。
【０１８０】
［実施例５の効果］
上記実施例５によれば、エラー発生間隔算出部５０２は、アンリカバードエラー直前のリカバードエラーの発生からアンリカバードエラーの発生までのエラー発生間隔を算出する。そして、２段階加速判定部５０１は、該算出されたエラー発生間隔が、リカバードエラーが発生した他のディスクＤの予防保守に要する予防保守時間より短いか否かを判定する。そして、リカバードエラー制御部１０５は、２段階加速判定部５０１によってエラー発生間隔が予防保守時間より短いと判定された場合に、加速値を２段階加速値に代えて他のディスクＤの加算値に加算する。
【０１８１】
かかる構成によれば、リカバードエラー制御部１０５は、エラー発生間隔がリカバードエラーの生じた他のディスクＤの予防保守時間より短い場合には、加速値を２段階加速値に代えて他のディスクＤの加算値に加算することとした。このため、リカバードエラー制御部１０５は、さらに他のディスクＤの予防保守タイミングを加速させることができることとなり、予防保守中にアンリカバードエラーが発生してしまうことを回避できる。すなわち、リカバードエラー制御部１０５は、アンリカバードエラーの発生までのエラー発生間隔が予防保守時間より短い場合であっても、他のディスクＤのアンリカバードエラーが発生するまでに予防保守（リダンダントコピー）を完了させることができる。その結果、リカバードエラー制御部１０５は、他のディスクＤのデータのロストを確実に防止できる。
【０１８２】
なお、実施例５に係るリカバードエラー制御部１０５では、エラー発生間隔がアンリカバードエラーの発生したディスクと同一ロットグループの他のディスクの予防保守時間より短い場合に、加速値を２段階加速値に代えて、他のディスクの加算値に加算する。そして、リカバードエラー制御部１０５は、該加算値が閾値に到達すると、他のディスクを予防保守対象とした。しかしながら、リカバードエラー制御部１０５は、これに限定されず、上記と同様の場合に、アンリカバードエラーの発生したディスクのリカバードエラー発生回数を２段階加速回数に代えてリカバリ上限回数とする。そして、リカバードエラー制御部１０５は、アンリカバードエラーの発生したディスクと同一ロットグループの他のディスクのリカバードエラー発生回数が該リカバリ上限回数に到達すると、他のディスクを予防保守対象とするものとしても良い。この場合、２段階加速回数は、アンリカバードエラーの発生したディスクのリカバードエラー発生回数より小さい値とする。
【０１８３】
［その他］
なお、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、リカバードエラー制御部１０５とアンリカバードエラー制御部１０６とを１つの部として統合しても良い。一方、アンリカバードエラー制御部１０６を、予防保守加速を指示する指示部と、既にリカバードエラーが発生しているディスクの加点値を加速値で換算する換算部とに分散しても良い。また、記憶部２００をＲＡＩＤコントローラ２３の外部装置としてネットワーク経由で接続するようにしても良い。
【０１８４】
また、上記実施例では、ディスクをストレージデバイスとして用いるＲＡＩＤ装置を例に説明を行なったが、開示の技術はこれに限定されるものではなく、任意の記録媒体を用いて実施することができるものである。
【０１８５】
また、ストレージ装置１およびＲＡＩＤ装置２にて行われる各処理機能は、その全部または任意の一部が、ＣＰＵ（Central Processing Unit）（またはＭＰＵ（Micro Processing Unit）、ＭＣＵ（Micro Controller Unit）などのマイクロ・コンピュータ）および当該ＣＰＵ（またはＭＰＵ、ＭＣＵなどのマイクロ・コンピュータ）にて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現されても良い。
【０１８６】
以上の実施例に係る実施形態に関し、さらに以下の付記を開示する。
【０１８７】
（付記１）データを記憶する複数のデータ記憶部と、
前記複数のデータ記憶部の属性に基づいて各データ記憶部の所属する属性グループを記憶する属性グループ記憶部と、
前記データ記憶部に生じた異常を記憶する異常記憶部と、
前記データ記憶部に生じた異常の発生履歴及び前記属性グループ記憶部によって記憶された属性グループに基づいて、前記異常記憶部によって記憶された異常が生じたデータ記憶部と同じ属性グループに所属する他のデータ記憶部を予防保守対象として抽出する予防保守対象抽出部と、
前記予防保守対象抽出部によって抽出されたデータ記憶部に記憶されているデータの予防保守を実行する予防保守実行部と
を有することを特徴とするストレージ装置。
【０１８８】
（付記２）前記予防保守対象抽出部は、
前記異常が生じたデータ記憶部に即時切り離し要因となる異常が生じるまでに生じた所定要因の異常発生回数を計測し、前記他のデータ記憶部における前記所定要因の異常発生回数が該計測した所定要因異常発生回数に到達すると前記他のデータ記憶部を予防保守対象として抽出することを特徴とする付記１に記載のストレージ装置。
【０１８９】
（付記３）前記予防保守対象抽出部は、
前記異常が生じたデータ記憶部の該計測した所定要因異常発生回数に到達してから即時切り離し要因となる異常が発生するまでの異常発生間隔を算出する異常発生間隔算出部と、
前記異常発生間隔算出部によって算出された異常発生間隔が、前記所定要因の異常が生じた前記他のデータ記憶部の予防保守に要する予防保守時間より短いか否かを判定する異常発生間隔判定部と、
前記異常発生間隔判定部によって前記異常発生間隔が前記予防保守時間より短いと判定された場合に、前記他のデータ記憶部の前記所定要因異常発生回数を変更することを特徴とする付記２に記載のストレージ装置。
【０１９０】
（付記４）前記複数のデータ記憶部で構成されるＲＡＩＤグループを記憶するＲＡＩＤグループ記憶部を有し、
前記予防保守対象抽出部は、
前記ＲＡＩＤグループ毎に計測された所定要因の異常の発生履歴に基づいて、前記所定要因の異常が生じた前記他のデータ記憶部を予防保守対象として抽出することを特徴とする付記２または付記３に記載のストレージ装置。
【０１９１】
（付記５）前記予防保守対象抽出部は、
前記異常が生じたデータ記憶部に即時切り離し要因となる異常が生じると、前記他のデータ記憶部における前記所定要因の異常の発生時に第１の点数を当該第１の点数より大きい第２の点数に代えて前記他のデータ記憶部の加算値に加算し、該加算した加算値が閾値に到達すると前記他のデータ記憶部を予防保守対象として抽出することを特徴とする付記１に記載のストレージ装置。
【０１９２】
（付記６）前記予防保守対象抽出部は、
前記異常が生じたデータ記憶部に即時切り離し要因となる異常が生じるまでに前記他のデータ記憶部における前記所定要因の異常が生じていた場合には、前記他のデータ記憶部の加算値を前記第２の点数で換算し、該換算した加算値が閾値に到達すると前記他のデータ記憶部を予防保守対象として抽出することを特徴とする付記５に記載のストレージ装置。
【０１９３】
（付記７）データを記憶する複数のデータ記憶部の属性に基づいて各データ記憶部の所属する属性グループを記憶する属性グループ記憶部と、
前記データ記憶部に生じた異常を記憶する異常記憶部と、
前記データ記憶部に生じた異常の発生履歴及び前記属性グループ記憶部によって記憶された属性グループに基づいて、前記異常記憶部によって記憶された異常が生じたデータ記憶部と同じ属性グループに所属する他のデータ記憶部を予防保守対象として抽出する予防保守対象抽出部と、
前記予防保守対象抽出部によって抽出されたデータ記憶部に記憶されているデータの予防保守を実行する予防保守実行部と
を有することを特徴とするストレージ装置のコントローラ。
【０１９４】
（付記８）データを記憶する複数のデータ記憶部を有するストレージ装置が、前記データ記憶部の予防保守を制御する制御方法であって、
前記ストレージ装置が、
データを記憶する複数のデータ記憶部の属性に基づいて各データ記憶部の所属する属性グループを記憶する属性グループ記憶ステップと、
前記データ記憶部に生じた異常を記憶する異常記憶ステップと、
前記データ記憶部に生じた異常の発生履歴及び前記属性グループ記憶ステップによって記憶された属性グループに基づいて、前記異常記憶ステップによって記憶された異常が生じたデータ記憶部と同じ属性グループに所属する他のデータ記憶部を予防保守対象として抽出する予防保守対象抽出ステップと、
前記予防保守対象抽出ステップによって抽出されたデータ記憶部に記憶されているデータの予防保守を実行する予防保守実行ステップと
を含むことを特徴とするストレージ装置の制御方法。
【符号の説明】
【０１９５】
１  ストレージ装置
２  ＲＡＩＤ装置
２０  ＲＡＩＤコントローラ
２１  チャネルアダプタ
２２  ディスクインタフェース
２３  コントローラモジュール
３０  ディスクエンクロージャ
１００  制御部
１０１  グループ化部
１０２  予防保守対象抽出部
１０３  異常検出部
１０４  異常種別判定部
１０５、３０１、４０１  リカバードエラー制御部
１０６、３０２、４０３  アンリカバードエラー制御部
１０７  予防保守実行部
２００  記憶部
２０１  ロットグループテーブル
２０２、３０３  異常発生履歴テーブル
２０３  予防保守加速フラグテーブル
３０４  リカバリ上限回数テーブル
４０２  加速条件判定部
４０４  ＲＡＩＤグループテーブル
５０１  ２段階加速判定部
５０２  エラー発生間隔算出部
５０３  ２段階加速換算判定部
５０４  エラー発生間隔
５０５  予防保守時間
【図１】
0005663981.tif 000002
【図２】
0005663981.tif 000003
【図３】
0005663981.tif 000004
【図４】
0005663981.tif 000005
【図５】
0005663981.tif 000006
【図６】
0005663981.tif 000007
【図７】
0005663981.tif 000008
【図８】
0005663981.tif 000009
【図９】
0005663981.tif 000010
【図１０】
0005663981.tif 000011
【図１１】
0005663981.tif 000012
【図１２】
0005663981.tif 000013
【図１３】
0005663981.tif 000014
【図１４】
0005663981.tif 000015
【図１５】
0005663981.tif 000016
【図１６】
0005663981.tif 000017
【図１７】
0005663981.tif 000018
【図１８】
0005663981.tif 000019
【図１９】
0005663981.tif 000020
【図２０】
0005663981.tif 000021
【図２１】
0005663981.tif 000022
【図２２】
0005663981.tif 000023
【図２３】
0005663981.tif 000024
【図２４】
0005663981.tif 000025
【図２５】
0005663981.tif 000026
【図２６】
0005663981.tif 000027
【図２７】
0005663981.tif 000028
【図２８】
0005663981.tif 000029
【図２９】
0005663981.tif 000030
【図３０】
0005663981.tif 000031