(57)【特許請求の範囲】
【請求項１】
第１の記憶装置と、第２の記憶装置と、第１の制御装置と、第２の制御装置と、第３の制御装置とを有し、
前記第１の制御装置は、
第１のエラー点数と第２のエラー点数とを記憶する第１の記憶部と、
前記第１の記憶装置に対する前記第２の制御装置を通じたアクセス時におけるエラーの検出状況に基づいて前記第１のエラー点数を算出して前記第１の記憶部に記憶し、前記第２の記憶装置に対する前記第３の制御装置を通じたアクセス時におけるエラーの検出状況に基づいて前記第２のエラー点数を算出して前記第１の記憶部に記憶し、前記第１のエラー点数を所定の第１のタイミングで前記第２の制御装置に送信し、前記第２のエラー点数を所定の第２のタイミングで前記第３の制御装置に送信する第１の制御部と、
を有し、
前記第２の制御装置は、
第３のエラー点数を記憶する第２の記憶部と、
前記第１の記憶装置へのアクセス時におけるエラーの検出状況に基づいて前記第３のエラー点数を算出して前記第２の記憶部に記憶し、前記第１の制御装置から受信した前記第１のエラー点数と前記第３のエラー点数との合計値に基づいて、前記第１の記憶装置が故障したかを判定する第２の制御部と、
を有し、
前記第３の制御装置は、
第４のエラー点数を記憶する第３の記憶部と、
前記第２の記憶装置へのアクセス時におけるエラーの検出状況に基づいて前記第４のエラー点数を算出して前記第３の記憶部に記憶し、前記第１の制御装置から受信した前記第２のエラー点数と前記第４のエラー点数との合計値に基づいて、前記第２の記憶装置が故障したかを判定する第３の制御部と、
を有する、ストレージシステム。
【請求項２】
前記第１の記憶装置と前記第２の記憶装置は、論理ボリュームの物理記憶領域として割り当てられ、
前記第１の制御部は、前記論理ボリュームに対するアクセス要求に応じて前記第１の記憶装置と前記第２の記憶装置とにアクセスする、
請求項１記載のストレージシステム。
【請求項３】
前記第１の記憶部は、第１の転送閾値と第２の転送閾値をさらに記憶し、
前記第１の制御部は、前記第１のエラー点数が前記第１の転送閾値を超えた場合に、前記第１のエラー点数を前記第２の制御装置に送信し、前記第２のエラー点数が前記第２の転送閾値を超えた場合に、前記第２のエラー点数を前記第３の制御装置に送信する、
請求項１または２記載のストレージシステム。
【請求項４】
第１のエラー点数と第２のエラー点数とを記憶する記憶部と、
第１の記憶装置に対する第１の他の制御装置を通じたアクセス時におけるエラーの検出状況に基づいて前記第１のエラー点数を算出して前記記憶部に記憶し、第２の記憶装置に対する第２の他の制御装置を通じたアクセス時におけるエラーの検出状況に基づいて前記第２のエラー点数を算出して前記記憶部に記憶し、前記第１の他の制御装置における前記第１の記憶装置のエラー点数算出用に、前記第１のエラー点数を所定の第１のタイミングで前記第１の他の制御装置に送信し、前記第２の他の制御装置における前記第２の記憶装置のエラー点数算出用に、前記第２のエラー点数を所定の第２のタイミングで前記第２の他の制御装置に送信する制御部と、
を有する制御装置。
【請求項５】
コンピュータに、
第１の制御装置を通じて第１の記憶装置にアクセスし、
前記第１の記憶装置へのアクセス時におけるエラーの検出状況に応じて、第１のエラー点数を算出して記憶部に記憶し、
第２の制御装置を通じて第２の記憶装置にアクセスし、
前記第２の記憶装置へのアクセス時におけるエラーの検出状況に応じて、第２のエラー点数を算出して前記記憶部に記憶し、
前記第１の制御装置における前記第１の記憶装置のエラー点数算出用に、前記第１のエラー点数を所定の第１のタイミングで前記第１の制御装置に送信し、
前記第２の制御装置における前記第２の記憶装置のエラー点数算出用に、前記第２のエラー点数を所定の第２のタイミングで前記第２の制御装置に送信する、
処理を実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム、制御装置および制御プログラムに関する。
【背景技術】
【０００２】
ＨＤＤ（Hard Disk Drive）などの記憶装置へのアクセスを制御する制御装置の多くは、記憶装置へのアクセスエラーの発生状況を監視し、その発生状況をエラーの内容に応じたエラー点数として保持する機能を備えている。このような制御装置は、エラー点数が一定値に達すると、記憶装置に故障が発生したと判定し、その記憶装置を切り離すなどの対処を行う。
【０００３】
また、記憶装置の障害発生の監視機能を有するストレージシステムの例としては、次のようなものが提案されている。このストレージシステムでは、通信制御部と複数の記憶デバイスとをスイッチ接続させる接続制御部が、記憶デバイスへのアクセス障害を認識した場合に、エラー情報を通信制御部に送信し、通信制御部がエラー情報に基づいて障害回復処理を実行するかを決定する。
【０００４】
また、例えば、次のようなディスクアレイも提案されている。この例では、ディスクアレイを構成するディスク装置に、自己の稼働履歴情報を収集、保持する機能と、上位制御装置からの転送要求に応じて、上位制御装置に稼働履歴情報を転送する機能とが設けられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−１４１１８５号公報
【特許文献２】特開平６−５１９１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
近年のストレージシステムでは、記憶装置へのアクセスを制御する制御装置の数が多くなり、その規模が大きくなる傾向がある。また、大規模化とともにアクセス経路やアクセス制御系統を多様化する要請があり、例えば、ある制御装置が他の制御装置を介して記憶装置にアクセスできるようにすることが考えられている。このような構成では、１つの記憶装置に対するアクセスのエラーが複数の制御装置のいずれにおいても検出される可能性が生じる。この場合、各制御装置が個別に記憶装置の障害を判定してしまうと、記憶装置ごとの障害を検出するのには不十分である。
【０００７】
また、複数の制御装置からアクセスされる記憶装置を統合的に管理する際には、その記憶装置の管理担当の制御装置の処理負荷が大きくなり、記憶装置へのアクセス制御という本来の処理に影響を与えるという問題がある。
【０００８】
１つの側面では、本発明は、複数の制御装置からアクセスされる記憶装置の管理担当の装置の処理負荷を軽減することが可能なストレージシステム、制御装置および制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、第１の記憶装置と、第２の記憶装置と、第１の制御装置と、第２の制御装置と、第３の制御装置とを有するストレージシステムが提供される。このストレージシステムにおいて、第１の制御装置は、第１のエラー点数と第２のエラー点数とを記憶する第１の記憶部と、第１の記憶装置に対する第２の制御装置を通じたアクセス時におけるエラーの検出状況に基づいて第１のエラー点数を算出して第１の記憶部に記憶し、第２の記憶装置に対する第３の制御装置を通じたアクセス時におけるエラーの検出状況に基づいて第２のエラー点数を算出して第１の記憶部に記憶し、第１のエラー点数を所定のタイミングで第２の制御装置に送信し、第２のエラー点数を所定のタイミングで第３の制御装置に送信する第１の制御部と、を有する。また、第２の制御装置は、第３のエラー点数を記憶する第２の記憶部と、第１の記憶装置へのアクセス時におけるエラーの検出状況に基づいて第３のエラー点数を算出して第２の記憶部に記憶し、第１の制御装置から受信した第１のエラー点数と第３のエラー点数との合計値に基づいて、第１の記憶装置が故障したかを判定する第２の制御部と、を有する。また、第３の制御装置は、第４のエラー点数を記憶する第３の記憶部と、第２の記憶装置へのアクセス時におけるエラーの検出状況に基づいて第４のエラー点数を算出して第３の記憶部に記憶し、第１の制御装置から受信した第２のエラー点数と第４のエラー点数との合計値に基づいて、第２の記憶装置が故障したかを判定する第３の制御部と、を有する。
【００１０】
また、１つの案では、記憶部と制御部とを有する制御装置が提供される。この制御装置において、記憶部は、第１のエラー点数と第２のエラー点数とを記憶する。制御部は、第１の記憶装置に対する第１の他の制御装置を通じたアクセス時におけるエラーの検出状況に基づいて第１のエラー点数を算出して記憶部に記憶し、第２の記憶装置に対する第２の他の制御装置を通じたアクセス時におけるエラーの検出状況に基づいて第２のエラー点数を算出して記憶部に記憶し、第１のエラー点数を所定のタイミングで第１の他の制御装置に送信し、第２のエラー点数を所定のタイミング第２の他の制御装置に送信する。
【００１１】
さらに、１つの案では、上記の制御装置と同様の処理をコンピュータに実行させる制御プログラムが提供される。
【発明の効果】
【００１２】
１つの側面では、複数の制御装置からアクセスされる記憶装置の管理担当の装置の処理負荷を軽減できる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態に係るストレージシステムの構成例および処理例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの構成例を示す図である。
【図３】ＣＭのハードウェア構成例を示す図である。
【図４】ＣＭが備える処理機能の構成例を示すブロック図である。
【図５】ＲＡＩＤ制御とディスクアクセス制御とを異なるＣＭが担当する場合の例を示す図である。
【図６】エラー点数の集計担当ＣＭの割り当て例を示す図である。
【図７】ＲＡＩＤ管理テーブルの構成例を示す図である。
【図８】エラー管理テーブルの構成例を示す図である。
【図９】集計テーブルの構成例を示す図である。
【図１０】ＲＡＩＤグループの設定処理例を示すフローチャートである。
【図１１】集計担当ＣＭにおけるエラー点数受信時の処理例を示すフローチャートである。
【図１２】エラー検出時の処理例を示すフローチャートである。
【図１３】転送閾値の更新処理例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態に係るストレージシステムの構成例および処理例を示す図である。図１に示すストレージシステムは、制御装置１０，２０，３０および記憶装置４１，４２を有する。
【００１５】
制御装置２０は、記憶装置４１にアクセス可能である。一方、制御装置１０は、制御装置２０を通じて記憶装置４１にアクセス可能になっている。例えば、制御装置１０は、記憶装置４１へのアクセス要求を制御装置２０に送信することで、記憶装置４１にアクセスする。
【００１６】
制御装置３０は、記憶装置４２にアクセス可能である。一方、制御装置１０は、制御装置３０を通じて記憶装置４２にアクセス可能になっている。例えば、制御装置１０は、記憶装置４２へのアクセス要求を制御装置３０に送信することで、記憶装置４２にアクセスする。
【００１７】
このような構成では、記憶装置４１へのアクセス時のエラーを、制御装置１０，２０の両方で検出し得る。例えば、制御装置１０は、記憶装置４１のデータの読み出しエラーを検出し得る。制御装置２０は、例えば、記憶装置４１のデータの読み出しエラーに加え、記憶装置４１のスピンアップエラー（ただし、記憶装置４１がＨＤＤの場合）、記憶装置４１のメディアエラーなどを検出し得る。
【００１８】
制御装置１０は、記憶装置４１へのアクセス時のエラー発生状況を、エラー点数１１ａによって管理する。一方、制御装置２０も、記憶装置４１へのアクセス時のエラー発生状況を、エラー点数２１ａによって管理する。エラー点数１１ａ，２１ａは、記憶装置４１が故障したかを判定するために使用されるものである。このため、制御装置１０，２０のいずれかにおいてエラー点数１１ａ，２１ａを集計し、その集計結果に基づいて故障判定を行う必要がある。
【００１９】
また、同様に、上記の構成では、記憶装置４２へのアクセス時のエラーを、制御装置１０，３０の両方で検出し得る。制御装置１０は、記憶装置４２へのアクセス時のエラー発生状況を、エラー点数１１ｂによって管理する。一方、制御装置３０も、記憶装置４２へのアクセス時のエラー発生状況を、エラー点数３１ａによって管理する。エラー点数１１ｂ，３１ａは、記憶装置４２が故障したかを判定するために使用されるものである。このため、制御装置１０，３０のいずれかにおいてエラー点数１１ｂ，３１ａを集計し、その集計結果に基づいて故障判定を行う必要がある。
【００２０】
本実施の形態では、記憶装置４１についてのエラー点数の集計および故障判定を、制御装置２０が実行する。また、記憶装置４２についてのエラー点数の集計および故障判定を、制御装置３０が実行する。このように、エラー点数の集計および故障判定という管理処理を、対応する記憶装置に近い側の制御装置が実行することで、管理処理の負担が１つの制御装置に集中する可能性が抑制され、各制御装置の処理負荷を軽減できるようになる。
【００２１】
次に、制御装置１０，２０，３０の構成について説明する。
制御装置１０は、記憶部１１および制御部１２を有する。記憶部１１は、例えば、ＲＡＭ（Random Access Memory）、ＨＤＤなどの記憶装置である。制御部１２は、例えば、プロセッサである。この場合、制御部１２の処理は、所定のプログラムにしたがって実行される。
【００２２】
記憶部１１は、前述のエラー点数１１ａ，１１ｂを記憶する。制御部１２は、記憶装置４１に対する制御装置２０を通じたアクセス時におけるエラーの検出状況に基づいて、記憶部１１内のエラー点数１１ａを増減させる。例えば、制御部１２は、検出されたエラーに応じた点数をエラー点数１１ａに加算する。また、制御部１２は、記憶装置４２に対する制御装置３０を通じたアクセス時におけるエラーの検出状況に基づいて、記憶部１１内のエラー点数１１ｂを増減させる。
【００２３】
また、制御部１２は、記憶部１１内のエラー点数１１ａを所定のタイミングで制御装置２０に送信する。また、制御部１２は、記憶部１１内のエラー点数１１ｂを所定のタイミングで制御装置３０に送信する。なお、制御部１２は、例えば、エラー点数１１ａが更新されるたびにエラー点数１１ａを送信してもよいし、一定時間間隔でエラー点数１１ａを送信してもよいし、エラー点数１１ａが一定量増加または減少するごとにエラー点数１１ａを送信してもよいし、エラー点数１１ａが所定の閾値を超えた場合にエラー点数１１ａを送信してもよい。エラー点数１１ｂの送信タイミングについても同様である。
【００２４】
制御装置２０は、記憶部２１および制御部２２を有する。記憶部２１は、例えば、ＲＡＭ、ＨＤＤなどの記憶装置である。制御部２２は、例えば、プロセッサである。この場合、制御部２２の処理は、所定のプログラムにしたがって実行される。
【００２５】
記憶部２１は、前述のエラー点数２１ａを記憶する。制御部２２は、記憶装置４１に対するアクセス時におけるエラーの検出状況に基づいて、記憶部２１内のエラー点数２１ａを増減させる。例えば、制御部２２は、検出されたエラーに応じた点数をエラー点数２１ａに加算する。また、制御部２２は、制御装置１０から受信したエラー点数１１ａと、記憶部２１内のエラー点数２１ａとの合計値に基づいて、記憶装置４１が故障したかを判定する。
【００２６】
制御装置３０は、記憶部３１および制御部３２を有する。記憶部３１は、例えば、ＲＡＭ、ＨＤＤなどの記憶装置である。制御部３２は、例えば、プロセッサである。この場合、制御部３２の処理は、所定のプログラムにしたがって実行される。
【００２７】
記憶部３１は、前述のエラー点数３１ａを記憶する。制御部３２は、記憶装置４２に対するアクセス時におけるエラーの検出状況に基づいて、記憶部３１内のエラー点数３１ａを増減させる。例えば、制御部３２は、検出されたエラーに応じた点数をエラー点数３１ａに加算する。また、制御部３２は、制御装置１０から受信したエラー点数１１ｂと、記憶部３１内のエラー点数３１ａとの合計値に基づいて、記憶装置４２が故障したかを判定する。
【００２８】
以上の構成により、エラー点数の集計および故障判定の処理の負担が１つの制御装置に集中する可能性が抑制され、各制御装置の処理負荷を軽減できる。
［第２の実施の形態］
図２は、第２の実施の形態に係るストレージシステムの構成例を示す図である。図２に示すストレージシステムは、ＣＥ（Controller Enclosure）１００，２００，３００、ＤＥ（Device Enclosure）４１０，４２０，４３０、スイッチ５１０およびホスト装置５２０を含む。
【００２９】
ＣＥ１００は、ＣＭ（Controller Module）１１０，１２０を有する。ＣＥ２００は、ＣＭ２１０，２２０を有する。ＣＥ３００は、ＣＭ３１０，３２０を有する。ＣＭ１１０，１２０，２１０，２２０，３１０，３２０は、スイッチ５１０を介して互いに接続されている。ＣＭ１１０，１２０，２１０，２２０，３１０，３２０とスイッチ５１０との間は、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓ（Peripheral Component Interconnect Express）バスによって接続されている。
【００３０】
また、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０には、ホスト装置５２０が接続されている。ＣＭ１１０，１２０，２１０，２２０，３１０，３２０とホスト装置５２０とは、例えば、ファイバチャネル（ＦＣ：Fibre Channel）やｉＳＣＳＩ（Internet Small Computer System Interface）などを用いたＳＡＮ（Storage Area Network）を介して接続される。なお、図２では例として１台のホスト装置５２０がＣＭ１１０，１２０，２１０，２２０，３１０，３２０に接続されているが、例えば、複数台のホスト装置のそれぞれが１台以上のＣＭに接続されてもよい。
【００３１】
ＤＥ４１０，４２０，４３０には、それぞれ複数台の記憶装置が搭載されている。本実施の形態では、ＤＥ４１０，４２０，４３０は、記憶装置としてＨＤＤを備えたディスクアレイ装置である。なお、ＤＥ４１０，４２０，４３０に搭載される記憶装置は、ＳＳＤ（Solid State Drive）などの他の種類の記憶装置であってもよい。
【００３２】
ＣＭ１１０，１２０には、ＤＥ４１０が接続されている。ＣＭ１１０，１２０は、ホスト装置５２０または他のＣＭからの要求に応じて、ＤＥ４１０に搭載されたＨＤＤに対するアクセスを制御する。ＣＭ２１０，２２０には、ＤＥ４２０が接続されている。ＣＭ２１０，２２０は、ホスト装置５２０または他のＣＭからの要求に応じて、ＤＥ４２０に搭載されたＨＤＤに対するアクセスを制御する。ＣＭ３１０，３２０には、ＤＥ４３０が接続されている。ＣＭ３１０，３２０は、ホスト装置５２０または他のＣＭからの要求に応じて、ＤＥ４３０に搭載されたＨＤＤに対するアクセスを制御する。
【００３３】
なお、ＣＥ１００とＤＥ４１０とは、例えば、１つの筐体に搭載されるストレージ装置として実現される。ＣＥ２００とＤＥ４２０、および、ＣＥ３００とＤＥ４３０についても同様である。図２のストレージシステムは、このようなストレージ装置をスケールアウトした構成となっている。
【００３４】
また、ストレージシステムに含まれるＣＥの数は３台に限定されるものではなく、各ＣＥに含まれるＣＭの数も２台に限定されるものではない。例えば、ストレージシステムには、それぞれ２台のＣＭを備えるＤＥが１２台含まれてもよい。ただし、ＣＥの数やＣＥ内のＣＭの数に関係なく、各ＣＥにはそれぞれ個別のＤＥが接続される。
【００３５】
また、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０には、さらに、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０に対する設定やメンテナンスを管理者が行うための管理端末が接続されてもよい。
【００３６】
図３は、ＣＭのハードウェア構成例を示す図である。ＣＭ１１０，１２０，２１０，２２０，３１０，３２０は同じハードウェア構成によって実現されることから、ここでは代表してＣＭ１１０のハードウェア構成について説明する。
【００３７】
ＣＭ１１０は、プロセッサ１１０ａによって装置全体が制御されている。プロセッサ１１０ａは、マルチプロセッサであってもよい。プロセッサ１１０ａは、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。また、プロセッサ１１０ａは、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００３８】
プロセッサ１１０ａには、バスを介して、ＲＡＭ１１０ｂと複数の周辺機器が接続されている。
ＲＡＭ１１０ｂは、ＣＭ１１０の主記憶装置として使用される。ＲＡＭ１１０ｂには、プロセッサ１１０ａに実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１１０ｂには、プロセッサ１１０ａによる処理に必要な各種データが格納される。
【００３９】
バスに接続されている周辺機器としては、ＳＳＤ１１０ｃ、ＣＡ（Channel Adapter）１１０ｄ、ＤＩ（Drive Interface）１１０ｅ、ＣＭインタフェース１１０ｆおよび読み取り装置１１０ｇがある。
【００４０】
ＳＳＤ１１０ｃは、ＣＭ１１０の補助記憶装置として使用される。ＳＳＤ１１０ｃには、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＨＤＤなどの他の種類の不揮発性記憶装置を使用することもできる。
【００４１】
ＣＡ１１０ｄは、ホスト装置５２０と通信するためのインタフェースである。ＤＩ１１０ｅは、ＤＥ４１０と通信するためのインタフェースである。ＣＭインタフェース１１０ｆは、スイッチ５１０を介して他のＣＭ１２０，２１０，２２０，３１０，３２０と通信するためのインタフェースである。なお、ＤＩ１１０ｅは、例えば、ＳＡＳ（Serial Attached SCSI）インタフェースであり、プロセッサ１１０ａからの指示に応じて、ＤＥ４１０内のＨＤＤに対してＳＣＳＩコマンドを送信する機能を有している。
【００４２】
読み取り装置１１０ｇには、可搬型の記録媒体１１０ｈが脱着される。読み取り装置１１０ｇは、記録媒体１１０ｈに記録されたデータを読み取ってプロセッサ１１０ａに送信する。記録媒体１１０ｈとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００４３】
図４は、ＣＭが備える処理機能の構成例を示すブロック図である。ＣＭ１１０，１２０，２１０，２２０，３１０，３２０は同じ処理機能を有することから、ここでは代表してＣＭ１１０の処理機能について説明する。
【００４４】
ＣＭ１１０は、ＲＡＩＤ制御部１１１、ディスクアクセス制御部１１２、エラー処理部１１３および記憶部１１４を有する。ＲＡＩＤ制御部１１１、ディスクアクセス制御部１１２およびエラー処理部１１３の処理は、例えば、ＣＭ１１０が備えるプロセッサ１１０ａが所定のプログラムを実行することで実現される。記憶部１１４は、例えば、ＲＡＭ１１０ｂやＳＳＤ１１０ｃなどのＣＭ１１０が備える記憶装置内の記憶領域として実装される。
【００４５】
ＲＡＩＤ制御部１１１は、ＲＡＩＤグループに設定された論理ボリュームに対するアクセスを制御する。ＲＡＩＤグループは、複数のＨＤＤによって実現され、記録されるデータが２以上のＨＤＤによって冗長化されるように制御される論理記憶領域である。論理ボリュームは、ＲＡＩＤグループに対して１つ以上設定され、ホスト装置５２０が１つのボリュームとして認識する論理記憶領域である。
【００４６】
ＲＡＩＤ制御部１１１は、ホスト装置５２０から論理ボリュームに対するアクセス要求を受信する。ＲＡＩＤ制御部１１１は、ホスト装置５２０からアクセスが要求された論理ボリュームの物理記憶領域を構成するＨＤＤに対するアクセスを要求する。その際、ＲＡＩＤ制御部１１１は、ＲＡＩＤレベルに応じたアクセス制御を行う。
【００４７】
例えば、ＲＡＩＤ制御部１１１は、ＲＡＩＤ−１で制御される論理ボリュームへのデータの書き込み要求を受信した場合、２つのＨＤＤに対して書き込みデータが二重化されるように制御する。また、ＲＡＩＤ制御部１１１は、その論理ボリュームからのデータの読み出し要求を受信した場合、２つのＨＤＤのいずれかからデータが読み出されるように制御する。
【００４８】
また、ＲＡＩＤ制御部１１１は、例えば、ＲＡＩＤ−５で制御される論理ボリュームへのデータの書き込み要求を受信した場合、書き込みデータの分割や所定数の分割データに基づくパリティの算出を行い、複数のＨＤＤに対して分割データおよびパリティが分散して記録されるように制御する。また、ＲＡＩＤ制御部１１１は、その論理ボリュームからのデータの読み出し要求を受信した場合、複数のＨＤＤから分割データが読み出されるように制御する。
【００４９】
ここで、ＲＡＩＤ制御部１１１がアクセス要求を受け付ける論理ボリュームを構成する物理記憶領域は、ＣＭ１１０に接続されたＤＥ４１０内のＨＤＤであってもよいし、他のＣＭに接続されたＤＥ４２０，４３０内のＨＤＤであってもよい。前者の場合、ＲＡＩＤ制御部１１１は、ＣＭ１１０内のディスクアクセス制御部１１２に対して、論理ボリュームの物理記憶領域を構成するＤＥ４１０内のＨＤＤに対するアクセスを要求する。一方、後者の場合、ＲＡＩＤ制御部１１１は、論理ボリュームの物理記憶領域を構成するＨＤＤを含むＤＥに接続された他のＣＭのディスクアクセス制御部に対して、そのＨＤＤに対するアクセスを要求する。なお、このような他のＣＭのディスクアクセス制御部に対するアクセス要求は、スイッチ５１０を介して送信される。
【００５０】
ディスクアクセス制御部１１２は、ＣＭ１１０内のＲＡＩＤ制御部１１１、または他のＣＭ内のＲＡＩＤ制御部からのアクセス要求に応じて、ＣＭ１１０に接続されたＤＥ４１０内のＨＤＤに対して、ＤＩ１１０ｅを介してアクセスする。このアクセスは、例えば、ＤＩ１１０ｅからＨＤＤに対してＳＣＳＩコマンドが送信されることで実行される。
【００５１】
上記のように、ＣＭ１１０のアクセス制御は、論理ボリュームに対するアクセスを制御する、ＲＡＩＤ制御部１１１による「ＲＡＩＤ制御」と、論理ボリュームを構成する物理記憶領域に対するアクセスを制御する、ディスクアクセス制御部１１２による「ディスクアクセス制御」とに大別される。そして、ある論理ボリュームについてのＲＡＩＤ制御とディスクアクセス制御の各機能を、異なるＣＭに実装できるようになっている。換言すると、ある論理ボリュームについてのＲＡＩＤ制御と、同じ論理ボリュームについてのディスクアクセス制御を、異なるＣＭに担当させることができる。なお、この点については図５を用いて後述する。
【００５２】
エラー処理部１１３は、ＲＡＩＤ制御部１１１による他のＣＭに接続されたＤＥ内のＨＤＤに対するアクセス要求、または、ディスクアクセス制御部１１２によるＤＥ４１０内のＨＤＤに対するアクセス要求の際にエラーが検出されると、エラー点数の加点処理を行う。記憶部１１４には、アクセス先のＨＤＤごとにエラー点数が記憶されており、エラー処理部１１３は、エラーが検出されたＨＤＤに対応するエラー点数に、検出されたエラーの内容に応じた点数を加算する。
【００５３】
また、エラー処理部１１３は、エラー点数に基づいて対応するＨＤＤの切り離し制御を行う。ただし、ＲＡＩＤ制御を担当するＣＭとディスクアクセス制御を担当するＣＭとが異なる論理ボリュームに割り当てられたＨＤＤについては、それらの各ＣＭのどちらでもＨＤＤへのアクセスに伴うエラーを検出する可能性がある。そこで、エラー処理部１１３は、ディスクアクセス制御を担当するＣＭにおいて、エラー点数が集計され、ＨＤＤの切り離し制御が行われるように制御する。エラー処理部１１３による処理の詳細については後述する。
【００５４】
記憶部１１４は、ＲＡＩＤ制御部１１１、ディスクアクセス制御部１１２およびエラー処理部１１３の処理に必要な各種の情報を記憶する。例えば、記憶部１１４は、ＨＤＤごとのエラー点数、ＲＡＩＤグループの構成を示す設定情報、ＨＤＤごとのＲＡＩＤ制御およびディスクアクセス制御の担当ＣＭを示す情報、ＨＤＤの切り離しを判定するための情報などを記憶する。
【００５５】
次に、図５は、ＲＡＩＤ制御とディスクアクセス制御とを異なるＣＭが担当する場合の例を示す図である。図５の例では、ＣＭ１１０がＲＡＩＤ制御を担当する論理ボリュームの物理記憶領域が、ＤＥ４２０に搭載されたＨＤＤ４２１，４２２によって構成されるものとする。この論理ボリュームは、ＲＡＩＤ−１によって制御される。すなわち、この論理ボリュームに対してホスト装置５２０から書き込みが要求されたデータは、ＨＤＤ４２１，４２２に二重化される。
【００５６】
また、図５の例では、ＨＤＤ４２１に対するディスクアクセス制御をＣＭ２１０が担当し、ＨＤＤ４２２に対するディスクアクセス制御をＣＭ２２０が担当する。この例のように、本実施の形態では、論理ボリュームの物理記憶領域を構成するＨＤＤごとに異なるＣＭにディスクアクセス制御を担当させることができる。なお、ＣＭ２１０は、ＨＤＤ４２１に対するディスクアクセス制御機能を担うディスクアクセス制御部２１２を有し、ＣＭ２２０は、ＨＤＤ４２２に対するディスクアクセス制御機能を担うディスクアクセス制御部２２２を有する。
【００５７】
ＲＡＩＤ制御部１１１は、ホスト装置５２０から論理ボリュームへの書き込み要求を受信すると、ＣＭ２１０のディスクアクセス制御部２１２にＨＤＤ４２１へのデータ書き込みを要求するとともに、ＣＭ２２０のディスクアクセス制御部２２２にＨＤＤ４２２へのデータ書き込みを要求する。ディスクアクセス制御部２１２は、ＲＡＩＤ制御部１１１からの要求に応じてデータをＨＤＤ４２１に書き込む。ディスクアクセス制御部２２２は、ＲＡＩＤ制御部１１１からの要求に応じてデータをＨＤＤ４２２に書き込む。
【００５８】
また、ＲＡＩＤ制御部１１１は、ホスト装置５２０から論理ボリュームからの読み出し要求を受信すると、ディスクアクセス制御部２１２またはディスクアクセス制御部２２２に対してデータ読み出しを要求する。例えば、ディスクアクセス制御部２１２に対して読み出し要求が送信された場合、ディスクアクセス制御部２１２は、ＨＤＤ４２１からデータを読み出してＲＡＩＤ制御部１１１に送信する。
【００５９】
以上の図５の例のように、ある論理ボリュームについてのＲＡＩＤ制御とディスクアクセス制御とを別のＣＭが担当できるようにすることで、論理ボリュームに割り当てられるＨＤＤの自由度が高まり、ＨＤＤを効率よく利用することができる。また、論理ボリュームの物理記憶領域を構成するＨＤＤごとのディスクアクセス制御を異なるＣＭが担当することで、ＣＭの故障が発生した場合にその論理ボリュームのデータにアクセスできなくなる可能性を低くすることができ、耐故障性が向上する。
【００６０】
ところで、図５の例では、ＣＭ１１０のＲＡＩＤ制御部１１１は、ＣＭ２１０のディスクアクセス制御部２１２を介してＨＤＤ４２１にアクセスする。このような構成では、ＲＡＩＤ制御部１１１とディスクアクセス制御部２１２の両方で、同じＨＤＤ４２１へのアクセス時にエラーを検出する可能性がある。
【００６１】
例えば、ディスクアクセス制御部２１２は、データの読み出しエラー、データの書き込みエラー、ＨＤＤ４２１のスピンアップの失敗、ＨＤＤ４２１への定期的なパトロールに応じたメディアエラーなどを検出し得る。これらのエラーのほとんどは、例えば、ＨＤＤ４２１に対するＳＣＳＩコマンドに対する応答として、ＨＤＤ４２１側が検出してＣＭ２１０に報告する。このようなエラーは、ＨＤＤ４２１が搭載されたＤＥ４２０に直接接続されたＣＭ２１０は検出できるが、ＨＤＤに対してコマンドを直接的に送信しないＲＡＩＤ制御部１１１は検出できない。
【００６２】
一方、ＲＡＩＤ制御部１１１は、ＨＤＤ４２１からのデータ読み出しエラーを検出し得る。このデータ読み出しエラーの１つとしては、データの整合性チェックで検出されるエラーがある。データの整合性チェックとは、論理ボリュームを構成する複数のＨＤＤのそれぞれから、冗長性が保たれるようにデータを正しく読み取りできるかをチェックする処理である。ＲＡＩＤ−１の場合、２つのＨＤＤから同一のデータを読み取ることができたかがチェックされる。ＲＡＩＤ−５の場合、ストライプに含まれるデータおよびパリティを対応するＨＤＤから読み出し、データから算出したパリティと読み出したパリティとが一致するかがチェックされる。このような整合性チェックによるエラーは、ディスクアクセス制御を担当するＣＭでは検出できず、ＲＡＩＤ制御を担当するＣＭでのみ検出可能である。
【００６３】
このように、本実施の形態では、１つのＨＤＤへのアクセス時におけるエラーを複数のＣＭが検出し得る。これらのＣＭのそれぞれは、自装置が検出したエラーに基づいて加点したエラー点数を保持する。このため、エラー点数を用いてＨＤＤの切り離し制御を行おうとすると、これらの複数のＣＭのいずれかが、各ＣＭが保持するエラー点数を集計する必要が生じる。
【００６４】
ここで、エラー点数を１つのＣＭが集計することについては、次の２つの課題がある。
（課題１）ＣＭ間でエラー点数が転送されるため、ＣＭ間の伝送路のトラフィックが増大する。
【００６５】
（課題２）エラー点数を集計するＣＭの処理負荷が高くなり、場合によっては、そのＣＭでのホスト装置５２０からの要求に応じたアクセス性能に悪影響を及ぼす可能性がある。
【００６６】
これらの課題に対し、本実施の形態では、次の図６に示すようにエラー点数の集計が行われる。
図６は、エラー点数の集計担当ＣＭの割り当て例を示す図である。この図６は、ＨＤＤ４２１，４２２についてのＲＡＩＤ制御担当とディスクアクセス制御担当とが図５のように割り当てられた場合におけるエラー点数の集計の仕方を示す。
【００６７】
ＣＭ１１０の記憶部１１４には、エラー点数を記憶するエラー管理テーブル１１４ｂが記憶される。このエラー管理テーブル１１４ｂには、ＨＤＤ４２１についてのエラー点数１１４ｂ１と、ＨＤＤ４２２についてのエラー点数１１４ｂ２とが記憶される。また、ＣＭ２１０の記憶部には、ＨＤＤ４２１についてのエラー点数を記憶するエラー管理テーブル２１４ｂが記憶される。さらに、ＣＭ２２０の記憶部には、ＨＤＤ４２２についてのエラー点数を記憶するエラー管理テーブル２２４ｂが記憶される。
【００６８】
ＣＭ１１０のエラー処理部１１３は、ＣＭ１１０のＲＡＩＤ制御部１１１によるＨＤＤ４２１へのアクセス時にエラーが検出されると、そのエラーの内容に応じた点数を、エラー管理テーブル１１４ｂ内のエラー点数１１４ｂ１に加算する。また、ＣＭ１１０のエラー処理部１１３は、ＣＭ１１０のＲＡＩＤ制御部１１１によるＨＤＤ４２２へのアクセス時にエラーが検出されると、そのエラーの内容に応じた点数を、エラー管理テーブル１１４ｂ内のエラー点数１１４ｂ２に加算する。
【００６９】
ＣＭ２１０は、エラー処理部２１３を有する。エラー処理部２１３は、ＣＭ２１０のディスクアクセス制御部２１２によるＨＤＤ４２１へのアクセス時にエラーが検出されると、そのエラーの内容に応じた点数を、エラー管理テーブル２１４ｂ内のエラー点数に加算する。
【００７０】
ＣＭ２２０は、エラー処理部２２３を有する。エラー処理部２２３は、ＣＭ２２０のディスクアクセス制御部２２２によるＨＤＤ４２２へのアクセス時にエラーが検出されると、そのエラーの内容に応じた点数を、エラー管理テーブル２２４ｂ内のエラー点数に加算する。
【００７１】
このようにして、ＨＤＤ４２１についてのエラー点数は、エラー管理テーブル１１４ｂとエラー管理テーブル２１４ｂとに分散して記憶される。また、ＨＤＤ４２２についてのエラー点数は、エラー管理テーブル１１４ｂとエラー管理テーブル２２４ｂとに分散して記憶される。したがって、ＨＤＤごとのエラー点数をそれぞれ１つのＣＭが集計する必要が生じる。
【００７２】
本実施の形態では、あるＨＤＤについてのＲＡＩＤ制御担当のＣＭとディスクアクセス制御担当のＣＭのうち、ディスクアクセス制御担当のＣＭにおいて、そのＨＤＤについてのエラー点数が集計され、集計結果に基づくＨＤＤの切り離し制御が行われる。これにより、ＣＭ間でのエラー点数の転送頻度が抑制され、ＣＭ間の伝送路のトラフィックの増大を抑制できる。すなわち、上記の課題１についての改善効果が得られる。
【００７３】
そのような効果が得られる理由は、ディスクアクセス制御担当のＣＭより、ＲＡＩＤ制御担当のＣＭによるエラーの検出頻度の方が低いことにある。前述のように、ディスクアクセス制御担当のＣＭは、ＨＤＤに対してコマンドを直接的に送信できることから、そのコマンドに対する応答として通知される多くの種類のエラーを検出できる。これに対し、ＲＡＩＤ制御担当のＣＭが検出可能なエラーは、前述のデータ読み出しエラーなど、ディスクアクセス制御担当のＣＭと比較して少ない種類のエラーに限られる。したがって、エラー検出頻度が低いＲＡＩＤ制御担当のＣＭが、ディスクアクセス制御担当のＣＭに対してエラー点数を転送するようにすることで、ＣＭ間でのエラー点数の転送頻度が抑制される。
【００７４】
図６の例では、ＨＤＤ４２１についてのエラー点数をＣＭ２１０が集計し、ＨＤＤ４２２についてのエラー点数をＣＭ２２０が集計する。具体的には、ＣＭ２１０の記憶部には、集計用の集計テーブル２１４ｃが記憶される。ＣＭ１１０のエラー処理部１１３は、エラー管理テーブル１１４ｂに記憶されたエラー点数１１４ｂ１をＣＭ２１０に送信する。ＣＭ２１０のエラー処理部２１３は、ＣＭ１１０から送信されたエラー点数１１４ｂ１と、エラー管理テーブル２１４ｂに記憶されたエラー点数とを合計して、集計テーブル２１４ｃに登録する。エラー処理部２１３は、その合計値が所定の閾値を超えた場合に、ＨＤＤ４２１が故障したと判定してＨＤＤ４２１を切り離す。このように、ＣＭ２１０がエラー点数を集計することで、ＣＭ１１０がエラー点数を集計する場合と比較して、ＣＭ１１０とＣＭ２１０との間でのエラー点数の転送頻度が抑制される。
【００７５】
また、ＣＭ２２０の記憶部には、集計用の集計テーブル２２４ｃが記憶される。ＣＭ１１０のエラー処理部１１３は、エラー管理テーブル１１４ｂに記憶されたエラー点数１１４ｂ２をＣＭ２２０に送信する。ＣＭ２２０のエラー処理部２２３は、ＣＭ１１０から送信されたエラー点数１１４ｂ２と、エラー管理テーブル２２４ｂに記憶されたエラー点数とを合計して、集計テーブル２２４ｃに登録する。エラー処理部２２３は、その合計値が所定の閾値を超えた場合に、ＨＤＤ４２２が故障したと判定してＨＤＤ４２２を切り離す。このように、ＣＭ２２０がエラー点数を集計することで、ＣＭ１１０がエラー点数を集計する場合と比較して、ＣＭ１１０とＣＭ２２０との間でのエラー点数の転送頻度が抑制される。
【００７６】
ここで、図６の構成では、ＣＭ１１０は、２つのＨＤＤ４２１，４２２にアクセスする。このため、ＨＤＤ４２１，４２２のそれぞれについてのエラー点数をＣＭ１１０が集計する方法も考えられる。しかし、この場合には、複数のＨＤＤについてのエラー点数の集計および切り離し制御を１つのＣＭ１１０が実行することになり、ＣＭ１１０の処理負荷が高くなる。
【００７７】
これに対して、上記のようにディスクアクセス制御担当のＣＭがエラー点数を集計することで、エラー点数の集計担当ＣＭが分散して割り当てられる。その結果、エラー点数の集計および切り離し制御による処理負荷がシステム上のＣＭ間で分散され、各ＣＭの処理負荷が軽減される。すなわち、ディスクアクセス制御担当のＣＭがエラー点数を集計することで、上記の課題２についての改善効果も得られる。
【００７８】
次に、エラー点数の転送頻度をさらに抑制するための仕組みについて説明する。ここでは例として、ＨＤＤ４２１についてのエラー点数の送信に関して説明する。ＲＡＩＤ制御担当のＣＭ１１０のエラー処理部１１３は、エラー管理テーブル１１４ｂに記憶されたエラー点数１１４ｂ１を、所定の転送閾値と比較する。エラー処理部１１３は、記憶されたエラー点数１１４ｂ１が転送閾値を超えた場合に、エラー点数１１４ｂ１をディスクアクセス制御担当のＣＭ２１０に送信する。
【００７９】
このように、転送閾値に基づいてエラー点数が間欠的に送信されることで、ＣＭ間の伝送路のトラフィックが軽減される。また、記憶されたエラー点数が転送閾値以下である場合とは、対応するＨＤＤが故障している可能性が低い場合であるので、エラー点数を転送して集計させる必要性が低い場合が多い。したがって、エラー点数と転送閾値との比較に基づくことで、ＨＤＤの状態監視精度を維持しながら、転送頻度を抑制することができる。
【００８０】
さらに、エラー点数と比較される転送閾値は、集計担当のＣＭからの指示に応じて可変とされる。具体的には、転送閾値は、対応するＨＤＤについてエラーを検出したＣＭが多いほど、低く設定される。これにより、エラーを検出したＣＭが多いほど、エラー点数の転送頻度が高くなる。このような方法によれば、ＨＤＤが故障している可能性が高くなるほど、エラー点数が頻繁に転送されるようになり、集計担当のＣＭが正確な集計値に基づいてＨＤＤの故障の有無を判定できるようになる。したがって、ＨＤＤの状態監視精度と、伝送路のトラフィックの抑制との適切なバランスを保ちながら運用することができる。
【００８１】
次に、ＣＭの処理で利用される各種情報について説明する。以下の図７〜図９では、例としてＣＭ１１０の記憶部１１４に記憶されるテーブル情報を示す。
まず、図７は、ＲＡＩＤ管理テーブルの構成例を示す図である。ＲＡＩＤ管理テーブル１１４ａは、ＲＡＩＤグループ、メンバディスク、ステータス、ＲＡＩＤ制御担当ＣＭ、ディスクアクセス制御担当ＣＭおよび集計担当ＣＭの各項目を有する。
【００８２】
ＲＡＩＤグループの項目には、ストレージシステムに設定されたＲＡＩＤグループを識別するための番号が登録される。メンバディスクの項目には、ＲＡＩＤグループに物理記憶領域として割り当てられたＨＤＤの識別番号が登録される。ステータスの項目には、メンバディスクが正常に動作しているか否かを示す情報が登録される。例えば、メンバディスクが正常に動作している場合、ステータスの項目には「ｔｒｕｅ」が登録される。また、メンバディスクが正常に動作しておらず、ＲＡＩＤグループから切り離された状態である場合、ステータスの項目には「ｆａｌｓｅ」が登録される。
【００８３】
ＲＡＩＤ制御担当ＣＭの項目には、メンバディスクについてのＲＡＩＤ制御担当のＣＭを識別するための番号が登録される。ディスクアクセス制御担当ＣＭの項目には、メンバディスクについてのディスクアクセス制御担当のＣＭを識別するための番号が登録される。集計担当ＣＭの項目には、メンバディスクについてのエラー点数の集計を担当するＣＭの識別番号が登録される。
【００８４】
他のＣＭ１２０，２１０，２２０，３１０，３２０の記憶部にも、図７と同様の項目を有するＲＡＩＤ管理テーブルが記憶される。そして、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０のすべてのＲＡＩＤ管理テーブルが同期化される。すなわち、あるＣＭにおいてＲＡＩＤ管理テーブルの内容が更新されると、その更新内容が他のすべてのＣＭに通知され、その更新内容が他のすべてのＣＭのＲＡＩＤ管理テーブルに反映される。
【００８５】
図８は、エラー管理テーブルの構成例を示す図である。エラー管理テーブル１１４ｂは、ディスク番号、エラー点数、転送閾値およびエラー検出ＣＭの各項目を有する。
ディスク番号の項目には、ＨＤＤの識別番号が登録される。ディスク番号の項目に登録されるＨＤＤは、自装置（ＣＭ１１０）からアクセス可能なＨＤＤである。より具体的には、このようなＨＤＤには、ＣＭ１１０がＲＡＩＤ制御担当になっているＨＤＤと、ＣＭ１１０がディスクアクセス制御担当になっているＨＤＤとが含まれる。
【００８６】
エラー点数の項目には、対応するＨＤＤへのアクセス時に検出された内容に基づいて加点されたエラー点数が登録される。エラー点数の初期値は０である。転送閾値の項目には、エラー点数を転送するか否かを判定するための閾値が登録される。転送閾値の初期値は０である。なお、ＣＭ１１０が集計担当ＣＭであるＨＤＤについては、転送閾値が使用されないため、転送閾値の項目には例えば「ＮＵＬＬ」が登録される。
【００８７】
エラー検出ＣＭの項目には、対応するＨＤＤについて１回でもエラーを検出した（すなわち、１回でもエラー点数を加点した）ＣＭの識別番号が登録される。エラー検出ＣＭの項目に登録され得るＣＭには、対応するＨＤＤについてのＲＡＩＤ制御担当のＣＭおよびディスクアクセス制御担当のＣＭが含まれる。なお、後述するように、エラー検出ＣＭの項目の内容は、対応するＨＤＤについてのＲＡＩＤ制御担当ＣＭとディスクアクセス制御担当ＣＭとで同期される。
【００８８】
図９は、集計テーブルの構成例を示す図である。集計テーブル１１４ｃは、ディスク番号、累積エラー点数および切り離し閾値の各項目を有する。
ディスク番号の項目には、ＨＤＤの識別番号が登録される。ディスク番号の項目に登録されるＨＤＤは、自装置（ＣＭ１１０）がエラー点数の集計担当になっているＨＤＤである。累積エラー点数の項目には、対応するＨＤＤについてのエラー点数の累積値が登録される。切り離し閾値の項目には、対応するＨＤＤが故障かを判定するために累積エラー点数と比較される閾値が登録される。切り離し閾値の項目には、あらかじめ決められた値が設定される。なお、例えば、ＨＤＤの仕様や製造時期などによってＨＤＤごとに異なる切り離し閾値が設定されてもよい。
【００８９】
次に、ＣＭの処理についてフローチャートを用いて説明する。
まず、図１０は、ＲＡＩＤグループの設定処理例を示すフローチャートである。図１０に示す処理は、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０のいずれにおいて実行されてもよい。ここでは例として、ＣＭ１１０で実行されるものとして説明する。また、以下の説明では、例としてホスト装置５２０での入力操作に応じて処理が実行されるものとするが、例えば、ホスト装置５２０とは別の、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０の管理専用の管理端末での入力操作に応じて処理が実行されてもよい。
【００９０】
［ステップＳ１１］ＲＡＩＤ制御部１１１は、ホスト装置５２０から新規のＲＡＩＤグループの作成要求を受け付ける。この作成要求は、ホスト装置５２０に対するユーザの入力操作に応じて送信される。
【００９１】
［ステップＳ１２］ＲＡＩＤ制御部１１１は、新規のＲＡＩＤグループについてのＲＡＩＤ制御担当のＣＭを決定する。ＲＡＩＤ制御部１１１は、例えば、全ＣＭの中から、ＲＡＩＤ制御担当になっているＨＤＤの数が少なく、処理負荷が低いと推定されるＣＭを、ＲＡＩＤ制御担当のＣＭとして選択する。また、ＲＡＩＤ制御担当のＣＭは、例えば、ホスト装置５２０での入力操作によって指定されてもよい。
【００９２】
［ステップＳ１３］ＲＡＩＤ制御部１１１は、ＤＥ４１０，４２０，４３０内のＲＡＩＤグループに割り当てられていないＨＤＤの中から、新規のＲＡＩＤグループの物理記憶領域を構成するＨＤＤを選択する。例えば、ＲＡＩＤ制御部１１１は、ホスト装置５２０から新規のＲＡＩＤグループの物理記憶領域を構成するＨＤＤの数の指定を受け付け、指定された数のＨＤＤを選択する。
【００９３】
また、ＲＡＩＤ制御部１１１は、選択した各ＨＤＤについてのディスクアクセス制御担当のＣＭを決定する。本実施の形態では、選択した１台のＨＤＤが搭載されるＤＥには２台のＣＭが接続されているので、これらの２台のＣＭの一方がディスクアクセス制御担当のＣＭとして決定される。このとき、ＲＡＩＤ制御部１１１は、例えば、ディスクアクセス制御担当のＣＭが分散するように選択する。
【００９４】
ＲＡＩＤ制御部１１１は、ＲＡＩＤ管理テーブル１１４ａに、選択したＨＤＤの数だけのレコードを作成する。ＲＡＩＤ制御部１１１は、作成した各レコードのＲＡＩＤグループの項目に、新規のＲＡＩＤグループを示す共通の識別番号を登録する。また、ＲＡＩＤ制御部１１１は、各レコードのＲＡＩＤ制御担当ＣＭの項目に、ステップＳ１２でＲＡＩＤ制御担当に決定されたＣＭの識別番号を登録する。
【００９５】
さらに、ＲＡＩＤ制御部１１１は、各レコードのメンバディスクの項目に、選択したＨＤＤの識別番号を登録し、各レコードのステータスの項目に「ｔｒｕｅ」を設定する。また、ＲＡＩＤ制御部１１１は、各レコードのディスクアクセス制御担当ＣＭの項目に、ディスクアクセス制御担当に決定されたＣＭの識別番号を登録する。
【００９６】
［ステップＳ１４］ＲＡＩＤ制御部１１１は、ステップＳ１３で選択された各ＨＤＤについてのエラー点数の集計担当のＣＭを決定する。集計担当のＣＭは、基本的に、ディスク制御担当のＣＭと同じである。そのため、ＲＡＩＤ制御部１１１は、ステップＳ１３でＲＡＩＤ管理テーブル１１４ａに作成した各レコードにおいて、ディスクアクセス制御担当ＣＭの項目に登録されたＣＭの識別番号を集計担当ＣＭの項目にコピーする。
【００９７】
［ステップＳ１５］ＲＡＩＤ制御部１１１は、上記の処理によってＲＡＩＤ管理テーブル１１４ａに設定された情報を、他のＣＭ１２０，２１０，２２０，３１０，３２０に配信する。これにより、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０のすべてのＲＡＩＤ管理テーブルの内容が同期される。ＣＭ１１０，１２０，２１０，２２０，３１０，３２０のそれぞれは、自装置が保持するＲＡＩＤ管理テーブルに基づいて、自装置がどのＲＡＩＤグループのＲＡＩＤ制御担当ＣＭになっているか、自装置がどのＨＤＤのディスクアクセス制御担当ＣＭや集計担当ＣＭになっているかを、認識することができる。
【００９８】
図１１は、集計担当ＣＭにおけるエラー点数受信時の処理例を示すフローチャートである。ここでは例として、ＣＭ１１０がエラー点数の集計担当になっているＨＤＤについて、他のＣＭからエラー点数が送信された場合の処理について説明する。図１１の処理は、例えば、一定時間間隔で実行される。
【００９９】
［ステップＳ２１］エラー処理部１１３は、該当ＨＤＤについてのＲＡＩＤ制御担当になっている他のＣＭから、該当ＨＤＤについてのエラー点数を受信したかを判定する。エラー点数を受信した場合、ステップＳ２２の処理が実行される。エラー点数を受信していない場合、処理は終了する。なお、例えば、受信したエラー点数には対応するＨＤＤの識別番号が付加されており、エラー処理部１１３は、付加された識別番号に基づいてどのＨＤＤについてのエラー点数かを判別することができる。
【０１００】
［ステップＳ２２］エラー処理部１１３は、集計テーブル１１４ｃにおける該当ＨＤＤのレコードを参照する。エラー処理部１１３は、参照先のレコードの累積エラー点数の項目に登録された値に、ステップＳ２１で受信したエラー点数を加算し、加算後の値によって当該項目の登録値を更新する。
【０１０１】
［ステップＳ２３］エラー処理部１１３は、エラー管理テーブル１１４ｂにおける該当ＨＤＤのレコードを参照する。エラー処理部１１３は、参照先のレコードのエラー検出ＣＭの項目に、ステップＳ２１でのエラー点数の送信元ＣＭの識別番号が登録されていない場合には、当該識別番号を当該項目に追加する。エラー処理部１１３は、当該レコードの更新内容をステップＳ２１でのエラー点数の送信元ＣＭに送信する。これにより、ＣＭ１１０のエラー管理テーブル１１４ｂにおける該当ＨＤＤのレコードと、配信先のＣＭのエラー管理テーブルにおける該当ＨＤＤのレコードとが同期される。
【０１０２】
なお、レコードの更新内容の送信は、必須ではない。ただし、送信を行ってレコードの内容を同期させることで、例えば、ＣＭ１１０の動作が停止した場合でも、送信先に登録されたレコードの内容を利用して転送閾値を計算できるようになる。
【０１０３】
［ステップＳ２４］エラー処理部１１３は、該当ＨＤＤについての転送閾値を次のような方法で算出する。エラー処理部１１３は、集計テーブル１１４ｃにおける該当ＨＤＤのレコードから、累積エラー点数と切り離し閾値とを読み出す。ここで、読み出された累積エラー点数をＰとし、読み出された切り離し閾値をＴｈ１とする。また、エラー処理部１１３は、エラー管理テーブル１１４ｂにおける該当ＨＤＤのレコードを参照し、エラー検出ＣＭの項目に登録されたＣＭの数を判定する。このＣＭ数は、該当ＨＤＤについてエラーを検出したＣＭ数を示す。ここで、このＣＭ数をＣとする。
【０１０４】
該当ＨＤＤについての転送閾値をＴｈ２とすると、エラー処理部１１３は、次の条件１，２にしたがって転送閾値Ｔｈ２を算出する。
（条件１）ＰがＴｈ１／Ｃより小さい場合・・・Ｔｈ２＝Ｔｈ１／Ｃ
（条件２）ＰがＴｈ１／Ｃ以上の場合・・・Ｔｈ２＝０
エラー処理部１１３は、算出した転送閾値Ｔｈ２を、ステップＳ２１でのエラー点数の送信元ＣＭに送信する。送信された転送閾値Ｔｈ２を受信したＣＭのエラー処理部は、当該ＣＭのエラー管理テーブルに登録された該当ＨＤＤについての転送閾値を、受信した転送閾値Ｔｈ２で更新する。
【０１０５】
上記の条件１では、累積エラー点数Ｐが切り離し閾値Ｔｈ１より十分小さいと推定される。この状態では、転送閾値Ｔｈ２は、該当ＨＤＤについてエラーを検出したＣＭ数Ｃが多いほど、小さな値に設定される。したがって、ＣＭ数Ｃが多いほどエラー点数が頻繁に転送されるようになり、集計担当ＣＭが正確な累積エラー点数Ｐに基づいて切り離し判定を実行できるようになる。すなわち、切り離し判定の精度の維持と伝送路のトラフィック軽減とを適切にバランスさせることができる。また、条件２では、累積エラー点数Ｐが切り離し閾値Ｔｈ１に近づいたと推定される。この状態では、エラーが検出されるたびにエラー点数が転送されるようになり、切り離し判定の精度が優先される。
【０１０６】
なお、条件２の場合には、転送閾値Ｔｈ２は、例えば、（Ｔｈ１−Ｐ）／Ｃという式によって算出されてもよい。この場合、条件２では、条件１と比較して、累積エラー点数Ｐが切り離し閾値Ｔｈ１に近づくほど転送閾値Ｔｈ２がさらに小さな値となり、切り離し判定の精度がより優先されるようになる。
【０１０７】
［ステップＳ２５］エラー処理部１１３は、累積エラー点数Ｐが切り離し閾値Ｔｈ１を超えたかを判定する。累積エラー点数Ｐが切り離し閾値Ｔｈ１を超えた場合、ステップＳ２６の処理が実行される。累積エラー点数Ｐが切り離し閾値Ｔｈ１以下の場合、処理が終了される。
【０１０８】
［ステップＳ２６］エラー処理部１１３は、該当ＨＤＤが故障であると判定し、このＨＤＤを切り離す。具体的には、エラー処理部１１３は、ＲＡＩＤ管理テーブル１１４ａにおける該当ＨＤＤのレコードのステータスを「ｆａｌｓｅ」に更新し、このＨＤＤを使用不可能な状態にする。
【０１０９】
［ステップＳ２７］エラー処理部１１３は、エラー管理テーブル１１４ｂにおける該当ＨＤＤのレコードのエラー点数を、初期値０にクリアする。
図１２は、エラー検出時の処理例を示すフローチャートである。この図１２の処理は、該当ＨＤＤについてのＲＡＩＤ制御担当およびディスクアクセス制御担当のどちらのＣＭでも共通に実行される。ここでは例として、ＣＭ１１０での処理について説明する。図１２の処理は、例えば、一定時間間隔で実行される。
【０１１０】
［ステップＳ３１］エラー処理部１１３は、該当ＨＤＤについてのエラーがＲＡＩＤ制御部１１１またはディスクアクセス制御部１１２から検出されたかを判定する。エラーが検出された場合、ステップＳ３２の処理が実行される。エラーが検出されていない場合、処理が終了される。
【０１１１】
［ステップＳ３２］エラー処理部１１３は、エラー管理テーブル１１４ｂにおける該当ＨＤＤのレコードを参照する。エラー処理部１１３は、参照先のレコードのエラー点数の項目に登録された値に、ステップＳ３１で検出されたエラーの内容に応じた点数を加点する。エラー処理部１１３は、参照先のレコードのエラー点数の項目の登録値を、加点後の値によって更新する。
【０１１２】
［ステップＳ３３］エラー処理部１１３は、エラー管理テーブル１１４ｂにおける該当ＨＤＤのレコードを参照する。エラー処理部１１３は、参照先のレコードのエラー検出ＣＭの項目にＣＭ１１０の識別番号が登録されていない場合には、当該識別番号を当該項目に追加する。
【０１１３】
エラー処理部１１３は、ＲＡＩＤ管理テーブル１１４ａにおける該当ＨＤＤのレコードを参照し、ＲＡＩＤ制御担当ＣＭまたはアクセス制御担当ＣＭの項目から、エラー管理テーブル１１４ｂのレコードにおける上記更新内容の送信先ＣＭを特定する。エラー処理部１１３は、特定した送信先ＣＭに対して、エラー管理テーブル１１４ｂのレコードにおける上記更新内容を送信する。これにより、ＣＭ１１０のエラー管理テーブル１１４ｂにおける該当ＨＤＤのレコードと、送信先のＣＭのエラー管理テーブルにおける該当ＨＤＤのレコードとが同期される。
【０１１４】
なお、ＣＭ１１０が該当ＨＤＤのディスクアクセス制御担当である場合には、レコードの上記更新内容の送信は行われなくてもよい。
［ステップＳ３４］エラー処理部１１３は、ＲＡＩＤ管理テーブル１１４ａにおける該当ＨＤＤのレコードの集計担当ＣＭの項目に基づいて、ＣＭ１１０がエラー点数の集計担当ＣＭであるかを判定する。集計担当ＣＭである場合、ステップＳ３５の処理が実行される。集計担当ＣＭでない場合、ステップＳ３６の処理が実行される。
【０１１５】
［ステップＳ３５］エラー処理部１１３は、集計テーブル１１４ｃにおける該当ＨＤＤのレコードを参照する。エラー処理部１１３は、参照先のレコードの累積エラー点数の項目に登録された値に、ステップＳ３２で更新されたエラー点数を加算し、加算後の値によって当該項目の登録値を更新する。
【０１１６】
ステップＳ３５の処理が終了すると、図１１のステップＳ２４の処理が実行される。
［ステップＳ３６］エラー処理部１１３は、エラー管理テーブル１１４ｂにおける該当ＨＤＤのレコードを参照し、参照先のレコードに登録されたエラー点数と転送閾値とを比較する。エラー点数が転送閾値より大きい場合、ステップＳ３７の処理が実行される。エラー点数が転送閾値以下の場合、処理が終了される。
【０１１７】
［ステップＳ３７］エラー処理部１１３は、ＲＡＩＤ管理テーブル１１４ａにおける該当ＨＤＤのレコードを参照し、集計担当ＣＭを特定する。エラー処理部１１３は、ステップＳ３６での参照先レコードに登録されたエラー点数を、特定した集計担当ＣＭに送信する。なお、この処理では、例えば、エラー点数に該当ＨＤＤの識別番号が付加されて送信される。
【０１１８】
［ステップＳ３８］エラー処理部１１３は、エラー管理テーブル１１４ｂにおける該当ＨＤＤのレコードのエラー点数を、初期値０にクリアする。
図１３は、転送閾値の更新処理例を示すフローチャートである。この図１３の処理は、該当ＨＤＤについてのＲＡＩＤ制御担当のＣＭにおいて実行される。ここでは例として、ＣＭ１１０での処理について説明する。図１３の処理は、例えば、一定時間間隔で実行される。
【０１１９】
［ステップＳ４１］エラー処理部１１３は、該当ＨＤＤについての集計担当になっている他のＣＭから、該当ＨＤＤについての転送閾値を受信したかを判定する。転送閾値を受信した場合、ステップＳ４２の処理が実行される。転送閾値を受信していない場合、処理は終了する。なお、例えば、受信した転送閾値には対応するＨＤＤの識別番号が付加されており、エラー処理部１１３は、付加された識別番号に基づいてどのＨＤＤについての転送閾値かを判別することができる。
【０１２０】
［ステップＳ４２］エラー処理部１１３は、エラー管理テーブル１１４ｂにおける該当ＨＤＤのレコードを参照する。エラー処理部１１３は、参照先のレコードに登録された転送閾値を、ステップＳ４１で受信した転送閾値に更新する。
【０１２１】
以上説明した第２の実施の形態では、１つのＨＤＤへのアクセス時のエラーを複数のＣＭが検出し得る。このような構成において、エラー点数の集計および切り離し制御を各ＨＤＤについてのディスクアクセス制御担当のＣＭで実行することで、ＣＭ間の伝送路のトラフィックを抑制できる。これとともに、ＣＭ間の処理負荷を分散させ、各ＣＭの処理負荷を軽減することもできる。
【０１２２】
また、ＲＡＩＤ制御担当のＣＭがエラー点数を送信する契機を、エラー点数が転送閾値を超えたときとすることで、エラー点数の頻度を低下させ、ＣＭ間の伝送路のトラフィックを抑制できる。さらに、同じＨＤＤについてエラーを１度でも検出したＣＭの数に応じて転送閾値を可変にすることで、ＣＭ間の伝送路のトラフィックの抑制効果と、ＨＤＤの故障判定の精度とのバランスを適正化することができる。
【０１２３】
なお、上記の各実施の形態に示した装置（例えば、制御装置１０，２０、ＣＭ１１０，１２０，２１０，２２０，３１０，３２０）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１２４】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１２５】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【０１２６】
１０，２０，３０  制御装置
１１，２１，３１  記憶部
１１ａ，１１ｂ，２１ａ，３１ａ  エラー点数
１２，２２，３２  制御部
４１，４２  記憶装置
【図１】
0006481490.tif 000002
【図２】
0006481490.tif 000003
【図３】
0006481490.tif 000004
【図４】
0006481490.tif 000005
【図５】
0006481490.tif 000006
【図６】
0006481490.tif 000007
【図７】
0006481490.tif 000008
【図８】
0006481490.tif 000009
【図９】
0006481490.tif 000010
【図１０】
0006481490.tif 000011
【図１１】
0006481490.tif 000012
【図１２】
0006481490.tif 000013
【図１３】
0006481490.tif 000014