(57)【要約】【課題】入出力エラーの発生から再開までの時間を抑えること。【解決手段】第２制御装置１２０は、ストレージＳfに対するＩ／Ｏ処理のエラーを検出した場合、ストレージＳfが閉塞状態であるか否かを判断する。ここで、第２制御装置１２０は、ストレージＳfが閉塞状態の場合、Ｉ／Ｏ処理の再開処理を行う。一方、第２制御装置１２０は、ストレージＳfが閉塞状態ではない場合、ストレージＳfに対するＩ／Ｏ処理のエラーの発生頻度が所定値Ｘ以上か否かを判定する。第２制御装置１２０は、エラーの発生頻度が所定値Ｘ以上の場合、ストレージＳfの閉塞処理要求を第１制御装置１１０に送信する。第１制御装置１１０は、閉塞処理要求を受信した場合、ストレージＳfの閉塞処理を行う。【選択図】図１
2014215990.tif 000002
【特許請求の範囲】
【請求項１】
第１制御装置と、前記第１制御装置により管理される１または複数の第２制御装置と、第２制御装置によりアクセス可能なストレージユニットとを含むストレージシステムであって、
前記第２制御装置は、
前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーの検出に基づいて、前記ストレージが閉塞状態であるか否かを判断する判断部と、
前記判断部による前記ストレージが閉塞状態であるとの判断に基づいて、前記入出力処理の再開処理を行う再開処理部と、
前記判断部による前記ストレージが閉塞状態ではないとの判断に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定する判定部と、
前記判定部による前記エラーの発生頻度が前記所定値以上であるとの判定に基づいて、前記ストレージの閉塞処理要求を前記第１制御装置に送信する送信部と、を有し、
前記第１制御装置は、
前記閉塞処理要求の受信に基づいて、前記ストレージの閉塞処理を行う閉塞処理部と、
前記閉塞処理要求の受信に基づいて、前記ストレージのエラー処理を行うエラー処理部と、を有することを特徴とするストレージシステム。
【請求項２】
前記送信部は、
前記エラーの発生頻度が前記所定値未満と判定された場合、前記ストレージに対する入出力処理のエラーが発生したことを示すエラー情報を前記第１制御装置に送信し、
前記第１制御装置は、
前記エラー情報の受信に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が第２の所定値以上か否かを判定する第２判定部と、
前記第２判定部による前記エラーの発生頻度が前記第２の所定値以上であるとの判定に基づいて、前記ストレージの閉塞要求を前記複数の第２制御装置に送信する第２送信部と、を有し、
前記エラー処理部は、
前記エラー情報を受信した場合、前記ストレージのエラー処理を行うことを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記第１制御装置は、
前記エラー情報の受信に基づいて、前記ストレージが閉塞状態であるか否かを判断する第２判断部を有し、
前記第２判定部は、
前記第２判断部による前記ストレージが閉塞状態ではないとの判断に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定することを特徴とする請求項２に記載のストレージシステム。
【請求項４】
前記第２送信部は、
前記ストレージのエラー処理が完了した場合、前記入出力処理の再開処理要求を前記第２制御装置に送信し、
前記再開処理部は、
前記再開処理要求を受信した場合、前記入出力処理の再開処理を行うことを特徴とする請求項１〜３のいずれか一つに記載のストレージシステム。
【請求項５】
アクセス可能なストレージユニットを制御する制御装置であって、
前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーの検出に基づいて、前記ストレージが閉塞状態であるか否かを判断する判断部と、
前記判断部による前記ストレージが閉塞状態であるとの判断に基づいて、前記入出力処理の再開処理を行う再開処理部と、
前記判断部による前記ストレージが閉塞状態ではないとの判断に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定する判定部と、
前記判定部による前記エラーの発生頻度が前記所定値以上であるとの判定に基づいて、前記ストレージの閉塞処理要求を、自装置を含む複数の制御装置を制御する第１制御装置であって、前記閉塞処理要求を受信した場合に、前記ストレージの閉塞処理を行うとともに、前記ストレージのエラー処理を行う前記第１制御装置に送信する送信部と、
を有することを特徴とする制御装置。
【請求項６】
アクセス可能なストレージユニットを制御する制御装置に、
前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーを検出した場合、前記ストレージが閉塞状態であるか否かを判断し、
前記ストレージが閉塞状態である場合、前記入出力処理の再開処理を行い、
前記ストレージが閉塞状態ではない場合、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定し、
前記エラーの発生頻度が前記所定値以上の場合、前記ストレージの閉塞処理要求を、自装置を含む複数の制御装置を制御する第１制御装置であって、前記閉塞処理要求を受信した場合に、前記ストレージの閉塞処理を行うとともに、前記ストレージのエラー処理を行う前記第１制御装置に送信する、
処理を実行させることを特徴とする制御プログラム。
【請求項７】
アクセス可能なストレージユニットを制御する制御装置が、
前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーを検出した場合、前記ストレージが閉塞状態であるか否かを判断し、
前記ストレージが閉塞状態である場合、前記入出力処理の再開処理を行い、
前記ストレージが閉塞状態ではない場合、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定し、
前記エラーの発生頻度が前記所定値以上の場合、前記ストレージの閉塞処理要求を、自装置を含む複数の制御装置を制御する第１制御装置であって、前記閉塞処理要求を受信した場合に、前記ストレージの閉塞処理を行うとともに、前記ストレージのエラー処理を行う前記第１制御装置に送信する、
処理を実行することを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム、制御装置、制御プログラムおよび制御方法に関する。
【背景技術】
【０００２】
従来、物理的な記憶装置のボリューム構成や記憶容量に縛られることなく、自由なボリューム構成、記憶容量の記憶装置を実現することができるストレージシステムとして、仮想化環境向けストレージ、いわゆる仮想化ストレージ装置がある。仮想化ストレージ装置は、装置内部に物理的な記憶装置に対するアクセスを制御する実ストレージ装置を有し、実ストレージ装置を管理するプロセッサにより仮想的なボリュームを作成する。
【０００３】
仮想的なボリュームは、仮想化ストレージ装置内のプロセッサ上に構成され、実ストレージ装置上の物理的な記憶領域との対応付けが行われる。また、各プロセッサに存在するエージェントは、ドライバの制御およびエラーなどのイベントを監視し、マネージャへの通知を行う。マネージャは、仮想化ストレージ装置内の一つのプロセッサに存在し、仮想的なボリュームの構成情報や状態などを管理するとともに、各エージェントを制御する役割を担う。
【０００４】
また、仮想化ストレージ装置では、データを格納する実ストレージ装置に障害が発生した状況を想定して、例えば、仮想的なボリュームを構成するセグメントをミラーリングしている。セグメントは、実ストレージのＬＵＮ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）から切り出した、一定の大きさの領域である。仮想化ストレージ装置は、障害発生時に、障害が発生したＬＵＮに属するセグメントから、別ＬＵＮに属するよう割り当てられているミラー先のセグメントを経由してアクセスを継続することで、ストレージとしての可用性を向上させている。
【０００５】
関連する先行技術として、例えば、論理的な記憶領域を形成する複数のディスクドライブのうちデータの書き込みまたは読み出しの繰り返し回数が多いディスクドライブを特定して、特定されたディスクドライブを閉塞させる技術がある。また、回復可能障害が発生するとメモリ内のカウンタを更新し、しきい値と等しい場合にマネージャにアラーム通知を行う技術がある。また、ハードウェアまたはソフトウェアにより復旧可能な障害発生時の障害内容と障害発生時刻とを記録する外部記憶装置に記録されている障害情報と日付時刻情報から障害発生頻度を算出し、障害発生頻度の許容値を超えたか否かを判断する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２５１０４２号公報
【特許文献２】特開平０５−１４３３７７号公報
【特許文献３】特開平０６−１０３１２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来技術によれば、ストレージシステム内の複数のプロセッサで共有する実ストレージ装置において発生する入出力エラーの発生から、ミラー先を経由しての入出力再開までの時間が増大するという問題がある。例えば、マネージャにおいて実施される入出力エラーに対するエラー処理がボトルネックとなり、ひいては入出力要求のタイムアウト時間を超えてしまう場合がある。
【０００８】
一つの側面では、本発明は、入出力エラーの発生から再開までの時間を抑えることができるストレージシステム、制御装置、制御プログラムおよび制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一側面によれば、第１制御装置と、前記第１制御装置により管理される１または複数の第２制御装置と、第２制御装置によりアクセス可能なストレージユニットとを含むストレージシステムであって、前記第２制御装置は、前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーの検出に基づいて、前記ストレージが閉塞状態であるか否かを判断する判断部と、前記判断部による前記ストレージが閉塞状態であるとの判断に基づいて、前記入出力処理の再開処理を行う再開処理部と、前記判断部による前記ストレージが閉塞状態ではないとの判断に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定する判定部と、前記判定部による前記エラーの発生頻度が前記所定値以上であるとの判定に基づいて、前記ストレージの閉塞処理要求を前記第１制御装置に送信する送信部と、を有し、前記第１制御装置は、前記閉塞処理要求の受信に基づいて、前記ストレージの閉塞処理を行う閉塞処理部と、前記閉塞処理要求の受信に基づいて、前記ストレージのエラー処理を行うエラー処理部と、を有するストレージシステムが提案される。
【００１０】
また、本発明の一側面によれば、アクセス可能なストレージユニットを制御する制御装置が、前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーを検出した場合、前記ストレージが閉塞状態であるか否かを判断し、前記ストレージが閉塞状態である場合、前記入出力処理の再開処理を行い、前記ストレージが閉塞状態ではない場合、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定し、前記エラーの発生頻度が前記所定値以上の場合、前記ストレージの閉塞処理要求を、自装置を含む複数の制御装置を制御する第１制御装置であって、前記閉塞処理要求を受信した場合に、前記ストレージの閉塞処理を行うとともに、前記ストレージのエラー処理を行う前記第１制御装置に送信する制御装置、制御プログラムおよび制御方法が提案される。
【発明の効果】
【００１１】
本発明の一態様によれば、入出力エラーの発生から再開までの時間を抑えることができるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態にかかるストレージシステムＳＭの一実施例を示す説明図である。
【図２】図２は、制御装置のハードウェア構成例を示すブロック図である。
【図３】図３は、ＶＤＩＳＫの構成例を示す説明図である。
【図４】図４は、閉塞フラグテーブル４００の記憶内容の一例を示す説明図である。
【図５】図５は、閉塞リスト５００の記憶内容の一例を示す説明図である。
【図６】図６は、エラー時刻記録キューの記憶内容の一例を示す説明図である。
【図７】図７は、第２制御装置１２０の機能的構成例を示すブロック図である。
【図８】図８は、第１制御装置１１０の機能的構成例を示すブロック図である。
【図９】図９は、第２制御装置１２０の制御処理手順の一例を示すフローチャートである。
【図１０】図１０は、第２制御装置１２０のＩ／Ｏ再開処理手順の一例を示すフローチャートである。
【図１１】図１１は、第２制御装置１２０の閉塞リスト更新処理手順の一例を示すフローチャートである。
【図１２】図１２は、第１制御装置１１０の制御処理手順の一例を示すフローチャートである。
【図１３】図１３は、第１制御装置１１０の閉塞処理手順の一例を示すフローチャートである。
【図１４】図１４は、実施例にかかるストレージシステムＳＭのシステム構成例を示す説明図である。
【図１５】図１５は、セグメントテーブル１５００の記憶内容の一例を示す説明図である。
【図１６】図１６は、セグメントテーブル１５００の更新例を示す説明図である。
【図１７】図１７は、Ｉ／Ｏ処理のエラーの発生頻度を示す説明図である。
【図１８】図１８は、実施例にかかるストレージシステムＳＭの制御処理手順の一例を示すシーケンス図（その１）である。
【図１９】図１９は、実施例にかかるストレージシステムＳＭの制御処理手順の一例を示すシーケンス図（その２）である。
【図２０】図２０は、実施例にかかるストレージシステムＳＭの制御処理手順の一例を示すシーケンス図（その３）である。
【図２１】図２１は、実施例にかかるストレージシステムＳＭの制御処理手順の一例を示すシーケンス図（その４）である。
【図２２】図２２は、ＬＵＮの閉塞解除例を示す説明図である。
【発明を実施するための形態】
【００１３】
以下に図面を参照して、本発明にかかるストレージシステム、制御装置、制御プログラムおよび制御方法の実施の形態を詳細に説明する。
【００１４】
（実施の形態）
図１は、実施の形態にかかるストレージシステムＳＭの一実施例を示す説明図である。図１において、ストレージシステムＳＭは、基本ノード１０１と、拡張ノード１０２−１〜１０２−Ｋとを含む（Ｋ：２以上の自然数）。以下の説明では、拡張ノード１０２−１〜１０２−Ｋのうち任意の拡張ノードを「拡張ノード１０２−ｋ」と表記する場合がある（ｋ＝１，２，…，Ｋ）。
【００１５】
基本ノード１０１は、第１制御装置１１０と、第２制御装置１２０と、第１ストレージユニット１３０とを有し、単独でストレージ装置として動作することができる。また、拡張ノード１０２−ｋは、第２制御装置１２０と、第２ストレージユニット１４０とを有する。
【００１６】
第１ストレージユニット１３０は、第１ストレージ制御部１３１と、第１ストレージ１３２とを有する。第１ストレージ制御部１３１は、第１ストレージ１３２に対するアクセスを制御する。また、第２ストレージユニット１４０は、第２ストレージ制御部１４１と、第２ストレージ１４２とを有する。第２ストレージ制御部１４１は、第２ストレージ１４２に対するアクセスを制御する。
【００１７】
第１ストレージ１３２および第２ストレージ１４２は、それぞれ一以上の記憶装置Ｄを含む。記憶装置Ｄは、例えば、ハードディスク、光ディスク、フラッシュメモリ、磁気テープなどの物理的な記憶装置であってもよく、また、論理的な記憶装置であるＬＵＮであってもよい。
【００１８】
なお、拡張ノード１０２−ｋの第２制御装置１２０および第２ストレージユニット１４０は、ストレージシステムＳＭに増設されるいわゆる「部材」であり、例えば、ストレージシステムＳＭに組み込まれてストレージ装置として機能する。
【００１９】
ここで、第１制御装置１１０は、ストレージシステムＳＭ内の複数の第２制御装置１２０を制御するコンピュータである。また、第１制御装置１１０は、基本ノード１０１に拡張ノード１０２が接続されると、第２ストレージ１４２を利用可能な状態にしてストレージシステムＳＭ全体の記憶容量を拡張する機能を有する。
【００２０】
なお、第１制御装置１１０は、自制御装置と第２制御装置１２０のマネージャの機能だけでなく、ストレージユニット１３０，１４０に対してアクセスを行うストレージの制御装置の機能を有する。また、基本ノード単独稼働の場合に備え、基本ノード１０１における第１制御装置１１０と第２制御装置１２０は、冗長構成（片方が故障しても他方で動作可能)となっている。例えば、第１制御装置１１０が故障した場合は、基本ノード１０１における第２制御装置１２０が第１制御装置１１０として動作する。
【００２１】
第２制御装置１２０は、自配下のストレージユニットを制御するコンピュータである。第２制御装置１２０は、例えば、基本ノード１０１に拡張ノード１０２−ｋが接続されると、第１ストレージ１３２および第２ストレージ１４２を自配下のストレージユニットとして管理する。そして、第２制御装置１２０は、第１ストレージ１３２および第２ストレージ１４２に対するアクセスを受け付ける。
【００２２】
第１制御装置１１０、第２制御装置１２０、第１ストレージユニット１３０および第２ストレージユニット１４０は、筐体間接続用の通信路１５０によりそれぞれ接続される。このため、ストレージシステムＳＭ内の各第２制御装置１２０は、第１ストレージユニット１３０および第２ストレージユニット１４０に直接アクセス可能である。
【００２３】
ストレージシステムＳＭは、例えば、ワイドストライピングによるデータアクセスを行う。ワイドストライピングによれば、アクセス集中による性能低下を抑止し、業務サーバ等の上位装置からのストレージシステムＳＭへのアクセス量やボリュームの物理的位置を意識した複雑な性能設計を行うことなく、安定した性能を確保することができる。
【００２４】
なお、ボリュームとは、ストレージシステムＳＭの管理単位となる記憶領域である。具体的には、例えば、ボリュームは、複数の物理的な記憶装置または記憶装置（例えば、ハードディスク）内のパーティションをグループ化して、仮想的に一つのボリュームとした論理ボリュームであってもよい。
【００２５】
詳細な説明は図３を用いて後述するが、例えば、ボリュームは、複数のセグメントセットの集合体であり、各セグメントセットは、複数のセグメントの集合体である。また、セグメントは、所定容量で規定された管理単位の記憶領域であり、ホストからボリュームへの記録再生指示アドレス（ＬＢＡ）等の位置情報で管理される。
【００２６】
また、ストレージシステムＳＭでは、例えば、ストレージユニット内のデータを格納する記憶装置Ｄに障害が発生した状況を想定して、記憶装置Ｄに格納するデータをミラーリングしている。第２制御装置１２０は、障害発生時に、障害が発生した記憶装置Ｄのミラー先の記憶装置Ｄを経由してアクセスを継続することで、ストレージシステムＳＭとしての可用性を向上させることができる。
【００２７】
また、ストレージシステムＳＭは、要求される記憶容量の増加に伴って、ストレージシステムＳＭ全体の記憶領域を拡張することができる。図１の例では、基本ノード１０１に拡張ノード１０２−１〜１０２−Ｋが順次増設されて、ストレージシステムＳＭのスケールアウトが行われている。このように、ストレージシステムＳＭは、ノード拡張によって第２制御装置１２０および第２ストレージユニット１４０を追加することにより、基本構成のときよりも多数のボリュームを業務サーバ等に提供することができる。
【００２８】
ところが、ノード拡張後において、例えば、あるストレージユニット内の記憶装置Ｄが故障すると、故障した記憶装置Ｄに対する入出力処理のエラーが大量に発生する場合がある。例えば、あるＬＵＮが複数の仮想的なボリュームに利用される場合、１つのＬＵＮが故障した際に、多数のボリュームを経由して大量のエラーが発生してしまう場合がある。
【００２９】
また、入出力処理のエラー発生時に、その都度、第２制御装置１２０から第１制御装置１１０にエラー通知されると、第１制御装置１１０において個々に実施されるエラー処理がボトルネックとなり、入出力処理の再開が遅延する場合がある。入出力処理のエラー発生から再開までの時間は、例えば、入出力要求を発行した業務サーバの入出力処理が停止しているため、この時間が長くなると、業務サーバの入出力処理がタイムアウトで失敗してしまう場合がある。
【００３０】
そこで、本実施の形態では、第２制御装置１２０が記憶装置Ｄに対する入出力処理のエラーの発生頻度を監視し、エラーの発生頻度が所定値以上となったら第１制御装置１１０に依頼して記憶装置Ｄを閉塞させる。以降、第２制御装置１２０は、閉塞した記憶装置Ｄに対する入出力処理のエラーの発生時に第１制御装置１１０にエラー通知せず入出力処理を再開する。これにより、入出力処理のエラー発生から再開までの時間を抑える。以下、ストレージシステムＳＭの制御処理例について説明する。
【００３１】
（１）第２制御装置１２０は、アクセス可能なストレージユニット内のいずれかのストレージＳfに対する入出力処理のエラーを検出する。ここで、アクセス可能なストレージユニットは、例えば、第１ストレージユニット１３０および各拡張ノード１０２−１〜１０２−Ｋの第２ストレージユニット１４０である。
【００３２】
また、ストレージＳfは、例えば、第１ストレージ１３２および第２ストレージ１４２に含まれるいずれかの記憶装置Ｄである。また、ストレージＳfに対する入出力処理は、ストレージＳfにデータを入力またはストレージＳfからデータを出力する処理である。以下の説明では、入出力処理を「Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）処理」と表記する場合がある。
【００３３】
Ｉ／Ｏ処理のエラーの発生要因としては、例えば、ストレージユニットの一時的な電源断や、第２制御装置１２０とストレージユニットとの間の通信障害や、ストレージユニットにおけるソフトウェアまたはハードウェアの不具合などがある。具体的には、例えば、第２制御装置１２０は、ストレージ制御部（第１ストレージ制御部１３１または第２ストレージ制御部１４１）からストレージＳfに対するＩ／Ｏ処理の失敗を示す通知を受信した場合に、ストレージＳfに対するＩ／Ｏ処理のエラーを検出する。
【００３４】
（２）第２制御装置１２０は、ストレージＳfに対するＩ／Ｏ処理のエラーを検出した場合、ストレージＳfが閉塞状態であるか否かを判断する。ここで、閉塞状態とは、ストレージＳfに対するＩ／Ｏ処理のエラー発生時に、ストレージＳfのエラー情報を第１制御装置１１０に通知しない状態である。
【００３５】
（３）第２制御装置１２０は、ストレージＳfが閉塞状態ではない場合、ストレージＳfに対するＩ／Ｏ処理のエラーの発生頻度が所定値Ｘ以上か否かを判定する。具体的には、例えば、第２制御装置１２０は、一定期間Ｔ内のストレージＳfに対するＩ／Ｏ処理のエラーの発生回数が所定数Ｎ以上か否かを判定する（Ｘ＝Ｎ／Ｔ）。
【００３６】
（４）第２制御装置１２０は、エラーの発生頻度が所定値Ｘ以上の場合、ストレージＳfの閉塞処理要求を第１制御装置１１０に送信する。ここで、閉塞処理要求とは、ストレージＳfの閉塞処理を実行するよう第１制御装置１１０に要求するものである。
【００３７】
（５）第１制御装置１１０は、閉塞処理要求を受信した場合、ストレージＳfの閉塞処理を行う。ここで、閉塞処理とは、第１制御装置１１０におけるストレージＳfの状態を閉塞状態に変更するとともに、ストレージシステムＳＭ内の各第２制御装置１２０に閉塞要求を送信する処理である。
【００３８】
また、閉塞要求とは、ストレージＳfを閉塞状態に変更するよう第２制御装置１２０に要求するものである。ストレージシステムＳＭ内の各第２制御装置１２０は、第１制御装置１１０からストレージＳfの閉塞要求を受信した場合、ストレージＳfの状態を閉塞状態に変更する。
【００３９】
（６）第１制御装置１１０は、ストレージＳfのエラー処理を行う。ここで、エラー処理とは、例えば、Ｉ／Ｏ処理のエラーが発生したストレージＳfのミラー先のストレージのデータを空きのストレージに複製することにより、ミラー構成を回復する処理である。
【００４０】
（７）第１制御装置１１０は、ストレージＳfのエラー処理が完了した場合、ストレージＳfに対するＩ／Ｏ処理の再開処理要求を第２制御装置１２０に送信する。ここで、再開処理要求とは、Ｉ／Ｏ処理のエラーが発生したストレージＳfのミラー先のストレージにアクセスして、Ｉ／Ｏ処理を再開するよう要求するものである。
【００４１】
（８）第２制御装置１２０は、第１制御装置１１０から再開処理要求を受信した場合、Ｉ／Ｏ処理の再開処理を行う。具体的には、例えば、第２制御装置１２０は、Ｉ／Ｏ処理のエラーが発生したストレージＳfのミラー先のストレージにアクセスして、Ｉ／Ｏ処理を再開する。
【００４２】
（９）第２制御装置１２０は、上記（２）において、Ｉ／Ｏ処理のエラーが発生したストレージＳfが閉塞状態の場合、Ｉ／Ｏ処理の再開処理を行う。すなわち、第２制御装置１２０は、ストレージＳfが閉塞状態の場合は、第１制御装置１１０に対するエラー通知を行うことなく、ストレージＳfのミラー先のストレージにアクセスして、Ｉ／Ｏ処理を再開する。
【００４３】
このように、ストレージシステムＳＭの第２制御装置１２０によれば、ストレージＳfに対するＩ／Ｏ処理のエラーの発生頻度を監視し、エラーの発生頻度が所定値Ｘ以上の場合に、ストレージＳfの閉塞処理要求を第１制御装置１１０に送信することができる。また、ストレージシステムＳＭの第１制御装置１１０によれば、第２制御装置１２０から閉塞処理要求を受信した場合に、ストレージＳfの閉塞処理を行うことができる。これにより、ストレージシステムＳＭ内の各第２制御装置１２０において、ストレージＳfの状態を閉塞状態に変更することができる。
【００４４】
また、第２制御装置１２０によれば、ストレージＳfに対するＩ／Ｏ処理のエラーを検出した際に、ストレージＳfが閉塞状態である場合には、第１制御装置１１０に対するエラー通知を行うことなく、Ｉ／Ｏ処理の再開処理を行うことができる。これにより、ストレージＳfが閉塞状態の場合は、第１制御装置１１０におけるエラー処理が行われることなくＩ／Ｏ処理が再開されるため、Ｉ／Ｏ処理のエラー発生から再開までの時間を抑えることができる。
【００４５】
なお、以下の説明では、ストレージシステムＳＭ内の第１ストレージ１３２および第２ストレージ１４２に含まれる記憶装置Ｄの一例として、「ＬＵＮ」を例に挙げて説明する。また、ストレージシステムＳＭにより提供される仮想的なボリュームを「ＶＤＩＳＫ」と表記する場合がある。
【００４６】
（制御装置のハードウェア構成例）
つぎに、図１に示した第１制御装置１１０および第２制御装置１２０（ここでは、単に「制御装置」と称する）のハードウェア構成例について説明する。
【００４７】
図２は、制御装置のハードウェア構成例を示すブロック図である。図２において、制御装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、メモリ２０２と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）２０３と、を有する。また、各構成部はバス２１０によってそれぞれ接続されている。
【００４８】
ここで、ＣＰＵ２０１は、制御装置の全体の制御を司る。メモリ２０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。より具体的には、例えば、フラッシュＲＯＭがＯＳやファームウェアなどのプログラムを記憶し、ＲＯＭがアプリケーションプログラムを記憶し、ＲＡＭがＣＰＵ２０１のワークエリアとして使用される。メモリ２０２に記憶されているプログラムは、ＣＰＵ２０１にロードされることで、コーディングされている処理をＣＰＵ２０１に実行させることになる。
【００４９】
Ｉ／Ｆ２０３は、他のコンピュータからのデータの入出力を制御する。具体的には、例えば、Ｉ／Ｆ２０３は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワークに接続され、このネットワークを介して他のコンピュータに接続される。そして、Ｉ／Ｆ２０３は、ネットワークと内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。なお、図１に示した第１ストレージ制御部１３１および第２ストレージ制御部１４１についても、制御装置と同様のハードウェア構成により実現することができる。
【００５０】
（ＶＤＩＳＫの構成例）
ここで、ストレージシステムＳＭにより提供されるＶＤＩＳＫの構成例について説明する。
【００５１】
図３は、ＶＤＩＳＫの構成例を示す説明図である。図３において、ＶＤＩＳＫ＃ｉは、複数のセグメントセット＃１〜＃ｎの集合体である（ｉ：自然数、ｎ：２以上の自然数）。各セグメントセット＃１〜＃ｎは、８個のセグメント＃１〜＃８の集合体である。各セグメントセット＃１〜＃ｎの容量は、例えば、２［ＧＢ］である。また、各セグメント＃１〜＃８の容量は、例えば、２５６［ＭＢ］である。
【００５２】
各セグメント＃１〜＃８は、ストレージシステムＳＭに含まれるストレージユニット内のＬＵＮごとに割り当てられる。ユーザのデータは、固定長のストリップ（１［ＭＢ］）単位で記録される。また、このストリップはセグメント＃１〜＃８を順に利用する形でストライピングされる。なお、以下の説明では、ＶＤＩＳＫを構成するセグメントに割り当てられた任意のＬＵＮを「ＬＵＮ＃ｊ」と表記する場合がある。
【００５３】
（閉塞フラグテーブル４００の記憶内容）
つぎに、第１制御装置１１０が用いる閉塞フラグテーブル４００の記憶内容について説明する。閉塞フラグテーブル４００は、例えば、図２に示した第１制御装置１１０のメモリ２０２により実現される。
【００５４】
図４は、閉塞フラグテーブル４００の記憶内容の一例を示す説明図である。図４において、閉塞フラグテーブル４００は、ＬＵＮおよび閉塞フラグのフィールドを有し、各フィールドに情報を設定することで、ストレージシステムＳＭに含まれるストレージユニット内の各ＬＵＮの閉塞状態をレコードとして記憶する。
【００５５】
ここで、ＬＵＮは、ストレージシステムＳＭに含まれるストレージユニット内のＬＵＮである。閉塞フラグは、ＬＵＮの閉塞状態を示すフラグである。閉塞フラグは、「ＯＮ」の場合にＬＵＮが閉塞状態であることを示し、「ＯＦＦ」の場合にＬＵＮが閉塞状態ではないことを示す。なお、閉塞フラグは、初期状態では「ＯＦＦ」である。
【００５６】
（閉塞リスト５００の記憶内容）
つぎに、第２制御装置１２０が用いる閉塞リスト５００の記憶内容について説明する。閉塞リスト５００は、例えば、図２に示した第２制御装置１２０のメモリ２０２により実現される。
【００５７】
図５は、閉塞リスト５００の記憶内容の一例を示す説明図である。図５において、閉塞リスト５００は、ストレージシステムＳＭ内の複数のＬＵＮのうち閉塞状態となっているＬＵＮを示す情報である。閉塞リスト５００によれば、例えば、ＬＵＮ＃２、ＬＵＮ＃５が閉塞状態となっていることを認識することができる。
【００５８】
（エラー時刻記録キューの記憶内容）
つぎに、エラー時刻記録キューＱ１，Ｑ２の記憶内容について説明する。エラー時刻記録キューＱ１は、例えば、第１制御装置１１０のメモリ２０２により実現される。また、エラー時刻記録キューＱ２は、例えば、第２制御装置１２０のメモリ２０２により実現される。
【００５９】
図６は、エラー時刻記録キューの記憶内容の一例を示す説明図である。図６において、エラー時刻記録キューＱ１，Ｑ２は、先に入力されたデータが先に出力されるデータ構造である。エラー時刻記録キューＱ１は、Ｎｍ個のデータを格納する。エラー時刻記録キューＱ２は、Ｎａ個のデータを格納する。
【００６０】
データとしては、ＬＵＮ＃ｊを識別する情報（例えば、ＬＵＮ番号：Ｓｔｏｒａｇｅ００１＿ＬＵＮ００１）と対応付けて、例えば、ＬＵＮ＃ｊのエラーが発生した時刻（例えば、２０１２−０７−２８Ｔ１１：３５：５９）と、ＬＵＮ＃ｊのエラーが発生した位置（例えば、ディスク上のセクタ番号）などが記憶される。
【００６１】
（制御装置の機能的構成例）
つぎに、図７および図８を用いて、第１制御装置１１０および第２制御装置１２０の機能的構成例について説明する。ここでは、まず、第２制御装置１２０の機能的構成例について説明する。
【００６２】
図７は、第２制御装置１２０の機能的構成例を示すブロック図である。図７において、第２制御装置１２０は、検出部７０１と、判断部７０２と、再開処理部７０３と、算出部７０４と、判定部７０５と、送信部７０６と、受信部７０７と、を含む構成である。各機能部は、具体的には、例えば、図２に示した第２制御装置１２０のメモリ２０２に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０３により、その機能を実現する。各機能部の処理結果は、例えば、メモリ２０２に記憶される。
【００６３】
検出部７０１は、ストレージユニット内のいずれかのＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーを検出する機能を有する。ここで、ＬＵＮ＃ｊは、第２制御装置１２０上に作成されたＶＤＩＳＫ（ボリューム）を構成するセグメントに割り当てられたＬＵＮである。ＬＵＮ＃ｊは、複数のＶＤＩＳＫに利用される場合がある。
【００６４】
具体的には、例えば、検出部７０１は、ＬＵＮ＃ｊのセグメントに対するアクセスを制御するストレージ制御部（第１ストレージ制御部１３１または第２ストレージ制御部１４１）から、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラー通知を受信した場合に、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーを検出する。
【００６５】
検出された検出結果は、例えば、図６に示したエラー時刻記録キューＱ２に記憶される。具体的には、例えば、ＬＵＮ＃ｊのセグメントでエラーが発生したエラー発生時刻と、ＬＵＮ＃ｊのセグメントでエラーが発生した位置などがエラー情報としてエラー時刻記録キューＱ２に記録される。これにより、第２制御装置１２０上に作成されるＶＤＩＳＫを構成するセグメントに割り当てられたＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーの発生頻度を監視することができる。
【００６６】
判断部７０２は、検出部７０１によるＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーの検出に基づいて、ＬＵＮ＃ｊが閉塞状態であるか否かを判断する機能を有する。具体的には、例えば、判断部７０２は、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーが検出された場合、ＬＵＮ＃ｊが閉塞状態であるか否かを判断する。
【００６７】
より具体的には、例えば、判断部７０２は、閉塞リスト５００（図５参照）にＬＵＮ＃ｊが登録されている場合に、ＬＵＮ＃ｊが閉塞状態であると判断する。一方、閉塞リスト５００にＬＵＮ＃ｊが登録されていない場合には、判断部７０２は、ＬＵＮ＃ｊが閉塞状態ではないと判断する。
【００６８】
再開処理部７０３は、Ｉ／Ｏ処理のエラーが検出されたＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理の再開処理を実行する機能を有する。具体的には、例えば、再開処理部７０３は、判断部７０２によってＬＵＮ＃ｊが閉塞状態であると判断された場合に、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理の再開処理を実行する。
【００６９】
より具体的には、例えば、再開処理部７０３は、記憶部７１０に記憶された構成情報を参照して、Ｉ／Ｏ処理のエラーが検出されたＬＵＮ＃ｊのセグメントのミラー先のセグメントを特定し、ミラー先のセグメントに対するＩ／Ｏ処理を実行する。ここで、構成情報は、第１ストレージ１３２の記憶領域の構成および第２ストレージ１４２の記憶領域の構成を示す情報である。
【００７０】
この構成情報には、例えば、ＶＤＩＳＫを構成するセグメントが第１ストレージ１３２および第２ストレージ１４２内のどのＬＵＮに割り当てられているかを示す情報や、各セグメントのミラー先のセグメントを示す情報などが含まれている。なお、構成情報は、例えば、第１制御装置１１０の構成管理ＤＢ８１０（図８参照）から読み出すことにより取得される。また、記憶部７１０は、例えば、第２制御装置１２０のメモリ２０２により実現される。
【００７１】
算出部７０４は、ストレージシステムＳＭ内の複数の第２制御装置１２０上に作成されたＶＤＩＳＫ（ボリューム）の総数Ｖallと、第２制御装置１２０の総数Ａallと、第２制御装置１２０のｉｏｐｓ（ｉｎｐｕｔ  ｏｕｔｐｕｔ  ｐｅｒ  ｓｅｃｏｎｄ）とに基づいて、ＬＵＮ＃ｊの閉塞条件となる所定値Ｘａを算出する機能を有する。
【００７２】
ここで、ＶＤＩＳＫの総数Ｖallと第２制御装置１２０の総数Ａallは、例えば、ストレージシステムＳＭの構成変更時などに、第１制御装置１１０から第２制御装置１２０に通知される。また、ＶＤＩＳＫの総数Ｖallは、記憶部７１０に記憶された構成情報から特定されることにしてもよい。
【００７３】
また、ｉｏｐｓは、第２制御装置１２０において１秒間に発行されるＶＤＩＳＫに対するＩ／Ｏ要求の平均個数である。ｉｏｐｓは、例えば、第２制御装置１２０により測定される。具体的には、例えば、算出部７０４は、下記式（１）を用いて、ＬＵＮ＃ｊの閉塞条件となる所定値Ｘａを算出することができる。
【００７４】
Ｘａ＝（Ｖall／Ａall）・ｉｏｐｓ［ｅｒｒｏｒｓ／ｓｅｃ］  ・・・（１）
【００７５】
なお、ＬＵＮ＃ｊの閉塞条件についての詳細な説明については、図１７を用いて後述する。
【００７６】
判定部７０５は、判断部７０２によるＬＵＮ＃ｊが閉塞状態ではないとの判断に基づいて、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーの発生頻度が所定値Ｘａ以上か否かを判定する機能を有する。具体的には、例えば、判定部７０５は、ＬＵＮ＃ｊが閉塞状態ではないと判断された場合、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーの発生頻度が所定値Ｘａ以上か否かを判定する。
【００７７】
より具体的には、例えば、まず、判定部７０５は、エラー時刻記録キューＱ２から、最古のエラー情報（Ｎａ回前に発生したエラーのデータ）と、最新のエラー情報（今回発生したエラーのデータ）を取得する。
【００７８】
つぎに、判定部７０５は、最新のエラー情報のエラー時刻ｔａ１と最古のエラー情報のエラー時刻ｔａ２との差分時刻Δｔａを算出する。差分時刻Δｔａは、最古のエラー情報のエラー時刻ｔａ２から最新のエラー情報のエラー時刻ｔａ１までの経過時間である。そして、判定部７０５は、算出した差分時刻Δｔａが閾値Ｔａ以下か否かを判定する。
【００７９】
ここで、差分時刻Δｔａが閾値Ｔａ以下の場合、判定部７０５は、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーの発生頻度が所定値Ｘａ以上であると判定する。一方、差分時刻Δｔａが閾値Ｔａより大きい場合、判定部７０５は、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーの発生頻度が所定値Ｘａ未満であると判定する。
【００８０】
なお、エラー時刻記録キューＱ２に格納される最大データ数Ｎａは、例えば、算出部７０４によって算出された所定値Ｘａから導出される。具体的には、例えば、閾値Ｔａを１［ｓｅｃ］とすると、最大データ数Ｎａは、「Ｎａ＝Ｘａ」となる。ただし、閾値Ｔａは、例えば、予め設定されてメモリ２０２に記憶されていてもよい。
【００８１】
送信部７０６は、判定部７０５によるエラーの発生頻度が所定値Ｘａ以上であるとの判定に基づいて、ＬＵＮ＃ｊの閉塞処理要求を第１制御装置１１０に送信する機能を有する。具体的には、例えば、送信部７０６は、エラーの発生頻度が所定値Ｘａ以上と判定された場合、ＬＵＮ＃ｊの閉塞処理要求を第１制御装置１１０に送信する。ここで、閉塞処理要求とは、ＬＵＮ＃ｊの閉塞処理を実行するよう第１制御装置１１０に要求するものである。
【００８２】
また、送信部７０６は、エラーの発生頻度が所定値Ｘａ未満であるとの判定に基づいて、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーが発生したことを示すエラー情報を第１制御装置１１０に送信する機能を有する。具体的には、例えば、送信部７０６は、エラーの発生頻度が所定値Ｘａ未満と判定された場合、エラー時刻記録キューＱ２から最新のエラー情報（今回発生したエラーのデータ）を取得して、最新のエラー情報を第１制御装置１１０に送信する。
【００８３】
受信部７０７は、第１制御装置１１０から再開処理要求を受信する機能を有する。ここで、再開処理要求は、Ｉ／Ｏ処理のエラーが発生したＬＵＮ＃ｊのセグメントのミラー先のセグメントにアクセスして、Ｉ／Ｏ処理を再開するよう要求するものである。また、再開処理部７０３は、受信部７０７によって再開処理要求が受信された場合、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理の再開処理を実行する。
【００８４】
また、受信部７０７は、第１制御装置１１０からＬＵＮ＃ｊの閉塞要求を受信する機能を有する。ここで、閉塞要求は、ＬＵＮ＃ｊを閉塞状態に変更するよう第２制御装置１２０に要求するものである。閉塞要求には、ＬＵＮ＃ｊを識別する情報（例えば、ＬＵＮ番号）が含まれている。閉塞要求が受信された場合、ＬＵＮ＃ｊを識別する情報が閉塞リスト５００に記憶される。これにより、ＬＵＮ＃ｊを閉塞状態に変更することができる。
【００８５】
また、受信部７０７は、第１制御装置１１０からＬＵＮ＃ｊの閉塞解除要求を受信する機能を有する。ここで、閉塞解除要求は、ＬＵＮ＃ｊの閉塞状態を解除するよう第２制御装置１２０に要求するものである。閉塞解除要求には、ＬＵＮ＃ｊを識別する情報が含まれている。閉塞解除要求が受信された場合、閉塞リスト５００から閉塞解除対象となるＬＵＮ＃ｊの情報が削除される。これにより、ＬＵＮ＃ｊの閉塞状態を解除することができる。
【００８６】
つぎに、第１制御装置１１０の機能的構成例について説明する。
【００８７】
図８は、第１制御装置１１０の機能的構成例を示すブロック図である。図８において、第１制御装置１１０は、受信部８０１と、閉塞処理部８０２と、エラー処理部８０３と、判断部８０４と、判定部８０５と、送信部８０６と、閉塞解除部８０７と、を含む構成である。各機能部は、具体的には、例えば、図２に示した第１制御装置１１０のメモリ２０２に記憶されたプログラムをＣＰＵ２０１に実行させることにより、または、Ｉ／Ｆ２０３により、その機能を実現する。また、各機能部の処理結果は、例えば、メモリ２０２に記憶される。
【００８８】
受信部８０１は、第２制御装置１２０からＬＵＮ＃ｊの閉塞処理要求を受信する機能を有する。また、受信部８０１は、第２制御装置１２０からＬＵＮ＃ｊのセグメントのエラー情報を受信する機能を有する。受信されたＬＵＮ＃ｊのセグメントのエラー情報は、例えば、図６に示したエラー時刻記録キューＱ１に格納される。
【００８９】
閉塞処理部８０２は、受信部８０１による閉塞処理要求の受信に基づいて、ＬＵＮ＃ｊの閉塞処理を行う機能を有する。ここで、閉塞処理は、第１制御装置１１０におけるＬＵＮ＃ｊの状態を閉塞状態に変更するとともに、ストレージシステムＳＭ内の各第２制御装置１２０にＬＵＮ＃ｊの閉塞要求を送信する処理である。
【００９０】
具体的には、例えば、閉塞処理部８０２は、閉塞処理要求が受信された場合、図４に示した閉塞フラグテーブル４００内のＬＵＮ＃ｊの閉塞フラグを「ＯＦＦ」から「ＯＮ」に変更する。そして、閉塞処理部８０２は、ストレージシステムＳＭ内の各第２制御装置１２０にＬＵＮ＃ｊの閉塞要求を送信する。
【００９１】
エラー処理部８０３は、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラー処理を実行する機能を有する。具体的には、例えば、エラー処理部８０３は、受信部８０１によって閉塞処理要求が受信された場合、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラー処理を実行する。また、エラー処理部８０３は、受信部８０１によってエラー情報が受信された場合、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラー処理を実行する。ここで、エラー処理は、Ｉ／Ｏ処理のエラーが発生したＬＵＮ＃ｊのセグメントのミラー先のセグメントのデータを空きのＬＵＮのセグメントに複製することにより、ミラー構成を回復する処理である。
【００９２】
具体的には、例えば、エラー処理部８０３は、構成管理ＤＢ８１０を参照して、ＬＵＮ＃ｊのセグメントのエラー処理を実行する。ここで、構成管理ＤＢ８１０は、第１ストレージ１３２の記憶領域の構成および第２ストレージ１４２の記憶領域の構成を示す構成情報を記憶するデータベースである。なお、エラー処理の具体的な説明については、図１６を用いて後述する。
【００９３】
判断部８０４は、受信部８０１によるエラー情報の受信に基づいて、ＬＵＮ＃ｊが閉塞状態であるか否かを判断する機能を有する。具体的には、例えば、判断部８０４は、エラー情報が受信された場合、閉塞フラグテーブル４００を参照して、ＬＵＮ＃ｊの閉塞フラグが「ＯＮ」の場合に、ＬＵＮ＃ｊが閉塞状態であると判断する。一方、ＬＵＮ＃ｊの閉塞フラグが「ＯＦＦ」の場合には、判断部８０４は、ＬＵＮ＃ｊが閉塞状態ではないと判断する。
【００９４】
判定部８０５は、判断部８０４によるＬＵＮ＃ｊが閉塞状態ではないとの判断に基づいて、ＬＵＮ＃ｊに対するＩ／Ｏ処理のエラーの発生頻度が所定値Ｘｍ以上か否かを判定する機能を有する。ここで、所定値Ｘｍは、ＬＵＮ＃ｊの閉塞条件となる値である。具体的には、例えば、所定値Ｘｍは、例えば、下記式（２）を用いて設定される。ただし、Ｐmgrは、第１制御装置１１０でのＬＵＮ＃ｊのエラー処理にかかる処理時間である。Ｐmgrは、第１制御装置１１０の処理性能に応じて設定される。
【００９５】
Ｘｍ＝（１／Ｐmgr）［ｅｒｒｏｒｓ／ｓｅｃ］  ・・・（２）
【００９６】
具体的には、例えば、まず、判定部８０５は、ＬＵＮ＃ｊが閉塞状態ではないと判断された場合、エラー時刻記録キューＱ１から、最古のエラー情報（Ｎｍ回前に発生したエラーのデータ）と、最新のエラー情報（今回発生したエラーのデータ）を取得する。つぎに、判定部８０５は、最新のエラー情報のエラー時刻ｔｍ１と最古のエラー情報のエラー時刻ｔｍ２との差分時刻Δｔｍを算出する。差分時刻Δｔｍは、最古のエラー情報のエラー時刻ｔｍ２から最新のエラー情報のエラー時刻ｔｍ１までの経過時間である。そして、判定部８０５は、算出した差分時刻Δｔｍが閾値Ｔｍ以下か否かを判定する。
【００９７】
ここで、差分時刻Δｔｍが閾値Ｔｍ以下の場合、判定部８０５は、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーの発生頻度が所定値Ｘｍ以上であると判定する。この場合、判定部８０５は、閉塞フラグテーブル４００内のＬＵＮ＃ｊの閉塞フラグを「ＯＦＦ」から「ＯＮ」に変更する。一方、差分時刻Δｔｍが閾値Ｔｍより大きい場合、判定部８０５は、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーの発生頻度が所定値Ｘｍ未満であると判定する。
【００９８】
なお、エラー時刻記録キューＱ１に格納される最大データ数Ｎｍは、例えば、所定値Ｘｍから導出される。具体的には、例えば、閾値Ｔｍを１［ｓｅｃ］とすると、最大データ数Ｎｍは、「Ｎｍ＝Ｘｍ」となる。なお、閾値Ｔｍは、例えば、予め設定されてメモリ２０２に記憶されている。
【００９９】
送信部８０６は、ストレージシステムＳＭ内の各第２制御装置１２０にＬＵＮ＃ｊの閉塞要求を送信する機能を有する。具体的には、例えば、判定部８０５によってＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーの発生頻度が所定値Ｘｍ以上と判定された場合、ストレージシステムＳＭ内の各第２制御装置１２０にＬＵＮ＃ｊの閉塞要求を送信する。
【０１００】
また、送信部８０６は、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理の再開処理要求を第２制御装置１２０に送信する機能を有する。具体的には、例えば、送信部８０６は、ＬＵＮ＃ｊのセグメントのエラー処理が実行された場合、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理の再開処理要求を第２制御装置１２０に送信する。なお、再開処理要求の送信先となる第２制御装置１２０は、閉塞処理要求またはエラー情報の送信元の第２制御装置１２０である。
【０１０１】
閉塞解除部８０７は、ＬＵＮ＃ｊの閉塞状態を解除する機能を有する。具体的には、例えば、閉塞解除部８０７は、第２制御装置１２０を制御して、閉塞状態のＬＵＮ＃ｊに対するテストＩ／Ｏ要求を発行する。閉塞状態のＬＵＮ＃ｊは、例えば、閉塞フラグテーブル４００内の閉塞フラグが「ＯＮ」のＬＵＮである。
【０１０２】
そして、閉塞解除部８０７は、テストＩ／Ｏ要求が正常に処理された場合に、ＬＵＮ＃ｊの閉塞状態を解除する。この場合、閉塞解除部８０７は、閉塞状態を解除したＬＵＮ＃ｊに対応する閉塞フラグテーブル４００内の閉塞フラグを「ＯＮ」から「ＯＦＦ」に変更する。そして、閉塞解除部８０７は、ストレージシステムＳＭ内の各第２制御装置１２０にＬＵＮ＃ｊの閉塞解除要求を送信する。
【０１０３】
（第２制御装置１２０の各種処理手順）
つぎに、第２制御装置１２０の各種処理手順について説明する。まず、第２制御装置１２０の制御処理手順について説明する。
【０１０４】
図９は、第２制御装置１２０の制御処理手順の一例を示すフローチャートである。図９のフローチャートにおいて、まず、第２制御装置１２０は、ストレージユニット内のいずれかのＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーを検出したか否かを判断する（ステップＳ９０１）。
【０１０５】
ここで、第２制御装置１２０は、エラーを検出するのを待つ（ステップＳ９０１：Ｎｏ）。そして、第２制御装置１２０は、エラーを検出した場合（ステップＳ９０１：Ｙｅｓ）、ＬＵＮ＃ｊが閉塞状態であるか否かを判断する（ステップＳ９０２）。
【０１０６】
ここで、ＬＵＮ＃ｊが閉塞状態ではない場合（ステップＳ９０２：Ｎｏ）、第２制御装置１２０は、エラー時刻記録キューＱ２にエラー時刻ｔａ１を記録する（ステップＳ９０３）。つぎに、第２制御装置１２０は、エラー時刻記録キューＱ２から、Ｎａ回前に発生したエラーのエラー時刻ｔａ２を取得する（ステップＳ９０４）。
【０１０７】
そして、第２制御装置１２０は、エラー時刻ｔａ１とエラー時刻ｔａ２との差分時刻Δｔａが閾値Ｔａ以下か否かを判定する（ステップＳ９０５）。ここで、差分時刻Δｔａが閾値Ｔａより大きい場合（ステップＳ９０５：Ｎｏ）、第２制御装置１２０は、ＬＵＮ＃ｊのセグメントのエラー情報を第１制御装置１１０に送信して（ステップＳ９０６）、本フローチャートによる一連の処理を終了する。
【０１０８】
一方、差分時刻Δｔａが閾値Ｔａ以下の場合（ステップＳ９０５：Ｙｅｓ）、第２制御装置１２０は、ＬＵＮ＃ｊの閉塞処理要求を第１制御装置１１０に送信して（ステップＳ９０７）、本フローチャートによる一連の処理を終了する。
【０１０９】
また、ステップＳ９０２において、ＬＵＮ＃ｊが閉塞状態の場合（ステップＳ９０２：Ｙｅｓ）、第２制御装置１２０は、エラーが発生したＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理の再開処理を実行し（ステップＳ９０８）、本フローチャートによる一連の処理を終了する。
【０１１０】
これにより、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーの発生頻度を監視し、エラーの発生頻度が所定値Ｘａ以上の場合に、ＬＵＮ＃ｊの閉塞処理要求を第１制御装置１１０に送信することができる。また、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーを検出した際に、ＬＵＮ＃ｊが閉塞状態である場合には、第１制御装置１１０に対するエラー通知を行うことなく、Ｉ／Ｏ処理の再開処理を行うことができる。
【０１１１】
つぎに、第２制御装置１２０のＩ／Ｏ再開処理手順について説明する。
【０１１２】
図１０は、第２制御装置１２０のＩ／Ｏ再開処理手順の一例を示すフローチャートである。図１０において、第２制御装置１２０は、第１制御装置１１０から再開処理要求を受信したか否かを判断する（ステップＳ１００１）。
【０１１３】
ここで、第２制御装置１２０は、再開処理要求を受信するのを待つ（ステップＳ１００１：Ｎｏ）。そして、第２制御装置１２０は、再開処理要求を受信した場合（ステップＳ１００１：Ｙｅｓ）、エラーが発生したＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理の再開処理を実行して（ステップＳ１００２）、本フローチャートによる一連の処理を終了する。
【０１１４】
これにより、第１制御装置１１０から再開処理要求を受信した場合にＩ／Ｏ処理の再開処理を行うことができる。
【０１１５】
つぎに、第２制御装置１２０の閉塞リスト更新処理手順について説明する。
【０１１６】
図１１は、第２制御装置１２０の閉塞リスト更新処理手順の一例を示すフローチャートである。図１１のフローチャートにおいて、まず、第２制御装置１２０は、第１制御装置１１０からＬＵＮ＃ｊの閉塞要求を受信したか否かを判断する（ステップＳ１１０１）。
【０１１７】
ここで、閉塞要求を受信した場合（ステップＳ１１０１：Ｙｅｓ）、第２制御装置１２０は、閉塞要求に含まれるＬＵＮ＃ｊを識別する情報を閉塞リスト５００に登録して（ステップＳ１１０２）、本フローチャートによる一連の処理を終了する。
【０１１８】
一方、閉塞要求を受信していない場合（ステップＳ１１０１：Ｎｏ）、第２制御装置１２０は、第１制御装置１１０からＬＵＮ＃ｊの閉塞解除要求を受信したか否かを判断する（ステップＳ１１０３）。ここで、閉塞解除要求を受信していない場合（ステップＳ１１０３：Ｎｏ）、第２制御装置１２０は、ステップＳ１１０１に戻る。
【０１１９】
一方、閉塞解除要求を受信した場合（ステップＳ１１０３：Ｙｅｓ）、第２制御装置１２０は、閉塞リスト５００から閉塞解除対象となるＬＵＮ＃ｊの情報を削除して（ステップＳ１１０４）、本フローチャートによる一連の処理を終了する。これにより、ＬＵＮ＃ｊの閉塞状態を管理することができる。
【０１２０】
（第１制御装置１１０の各種処理手順）
つぎに、第１制御装置１１０の各種処理手順について説明する。まず、第１制御装置１１０の制御処理手順について説明する。
【０１２１】
図１２は、第１制御装置１１０の制御処理手順の一例を示すフローチャートである。図１２のフローチャートにおいて、まず、第１制御装置１１０は、第２制御装置１２０からＬＵＮ＃ｊのセグメントのエラー情報を受信したか否かを判断する（ステップＳ１２０１）。
【０１２２】
ここで、第１制御装置１１０は、ＬＵＮ＃ｊのセグメントのエラー情報を受信するのを待つ（ステップＳ１２０１：Ｎｏ）。そして、第１制御装置１１０は、ＬＵＮ＃ｊのセグメントのエラー情報を受信した場合（ステップＳ１２０１：Ｙｅｓ）、閉塞フラグテーブル４００内のＬＵＮ＃ｊの閉塞フラグが「ＯＮ」か否かを判断する（ステップＳ１２０２）。
【０１２３】
ここで、ＬＵＮ＃ｊの閉塞フラグが「ＯＮ」の場合（ステップＳ１２０２：Ｙｅｓ）、第１制御装置１１０は、ステップＳ１２０８に移行する。一方、ＬＵＮ＃ｊの閉塞フラグが「ＯＦＦ」の場合（ステップＳ１２０２：Ｎｏ）、第１制御装置１１０は、エラー時刻記録キューＱ１にエラー時刻ｔｍ１を記録する（ステップＳ１２０３）。
【０１２４】
つぎに、第１制御装置１１０は、エラー時刻記録キューＱ１から、Ｎｍ回前に発生したエラーのエラー時刻ｔｍ２を取得する（ステップＳ１２０４）。そして、第１制御装置１１０は、エラー時刻ｔｍ１とエラー時刻ｔｍ２との差分時刻Δｔｍが閾値Ｔｍ以下か否かを判定する（ステップＳ１２０５）。
【０１２５】
ここで、差分時刻Δｔｍが閾値Ｔｍより大きい場合（ステップＳ１２０５：Ｎｏ）、第１制御装置１１０は、ステップＳ１２０８に移行する。一方、差分時刻Δｔｍが閾値Ｔｍ以下の場合（ステップＳ１２０５：Ｙｅｓ）、第１制御装置１１０は、閉塞フラグテーブル４００内のＬＵＮ＃ｊの閉塞フラグを「ＯＦＦ」から「ＯＮ」に変更する（ステップＳ１２０６）。
【０１２６】
そして、第１制御装置１１０は、各拡張ノード１０２−１〜１０２−Ｋの第２制御装置１２０にＬＵＮ＃ｊの閉塞要求を送信する（ステップＳ１２０７）。つぎに、第１制御装置１１０は、ＬＵＮ＃ｊのセグメントのエラー処理を実行する（ステップＳ１２０８）。そして、第１制御装置１１０は、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理の再開処理要求を第２制御装置１２０に送信して（ステップＳ１２０９）、本フローチャートによる一連の処理を終了する。
【０１２７】
これにより、ストレージシステムＳＭ内の各第２制御装置１２０におけるＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーの発生頻度を監視し、エラーの発生頻度が所定値Ｘｍ以上の場合に、ＬＵＮ＃ｊの閉塞要求を第２制御装置１２０に送信することができる。
【０１２８】
つぎに、第１制御装置１１０の閉塞処理手順について説明する。
【０１２９】
図１３は、第１制御装置１１０の閉塞処理手順の一例を示すフローチャートである。図１３のフローチャートにおいて、まず、第１制御装置１１０は、第２制御装置１２０からＬＵＮ＃ｊの閉塞処理要求を受信したか否かを判断する（ステップＳ１３０１）。ここで、第１制御装置１１０は、閉塞処理要求を受信するのを待つ（ステップＳ１３０１：Ｎｏ）。
【０１３０】
そして、第１制御装置１１０は、閉塞処理要求を受信した場合（ステップＳ１３０１：Ｙｅｓ）、閉塞フラグテーブル４００内のＬＵＮ＃ｊの閉塞フラグを「ＯＦＦ」から「ＯＮ」に変更する（ステップＳ１３０２）。そして、第１制御装置１１０は、各拡張ノード１０２−１〜１０２−Ｋの第２制御装置１２０にＬＵＮ＃ｊの閉塞要求を送信する（ステップＳ１３０３）。
【０１３１】
つぎに、第１制御装置１１０は、ＬＵＮ＃ｊのセグメントのエラー処理を実行する（ステップＳ１３０４）。そして、第１制御装置１１０は、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理の再開処理要求を第２制御装置１２０に送信して（ステップＳ１３０５）、本フローチャートによる一連の処理を終了する。
【０１３２】
これにより、第２制御装置１２０からＬＵＮ＃ｊの閉塞処理要求を受信した場合にストレージシステムＳＭ内の各第２制御装置１２０にＬＵＮ＃ｊの閉塞要求を送信することができる。
【０１３３】
以上説明したように、実施の形態にかかる第２制御装置１２０によれば、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラーを検出した場合に、ＬＵＮ＃ｊが閉塞状態であるか否かを判断することができる。また、第２制御装置１２０によれば、ＬＵＮ＃ｊが閉塞状態ではない場合に、ＬＵＮ＃ｊに対するＩ／Ｏ処理のエラーの発生頻度が所定値Ｘａ以上か否かを判定することができる。また、第２制御装置１２０によれば、エラーの発生頻度が所定値Ｘａ以上の場合に、ＬＵＮ＃ｊの閉塞処理要求を第１制御装置１１０に送信することができる。
【０１３４】
また、第２制御装置１２０によれば、ＬＵＮ＃ｊが閉塞状態の場合は、第１制御装置１１０に対するエラー通知を行うことなく、Ｉ／Ｏ処理の再開処理を行うことができる。これにより、ＬＵＮ＃ｊが閉塞状態の場合は、第１制御装置１１０におけるエラー処理が行われることなくＩ／Ｏ処理が再開されるため、Ｉ／Ｏ処理のエラー発生から再開までの時間を抑えることができる。
【０１３５】
また、実施の形態にかかる第１制御装置１１０によれば、第２制御装置１２０からＬＵＮ＃ｊの閉塞処理要求を受信した場合に、ＬＵＮ＃ｊの閉塞処理を行うことができる。これにより、ストレージシステムＳＭ内の各第２制御装置１２０において、ＬＵＮ＃ｊの状態を閉塞状態に変更することができる。
【０１３６】
また、第２制御装置１２０によれば、エラーの発生頻度が所定値Ｘａ未満の場合は、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラー情報を第１制御装置１１０に送信することができる。また、第１制御装置１１０によれば、第２制御装置１２０からＬＵＮ＃ｊのセグメントのエラー情報を受信した場合に、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラー処理を行うことができる。これにより、ＶＤＩＳＫを構成するセグメントのミラー構成を回復することができる。
【０１３７】
また、第１制御装置１１０によれば、第２制御装置１２０からＬＵＮ＃ｊのセグメントのエラー情報を受信した場合に、ＬＵＮ＃ｊに対するＩ／Ｏ処理のエラーの発生頻度が所定値Ｘｍ以上か否かを判定することができる。また、第１制御装置１１０によれば、エラーの発生頻度が所定値Ｘｍ以上の場合に、ＬＵＮ＃ｊの閉塞要求をストレージシステムＳＭ内の各第２制御装置１２０に送信することができる。これにより、各第２制御装置でのＬＵＮ＃ｊに対するＩ／Ｏ処理のエラーの発生頻度が所定値Ｘａ未満であっても、システム全体でのＬＵＮ＃ｊに対するＩ／Ｏ処理のエラーの発生頻度が高くなる場合は、ＬＵＮ＃ｊを閉塞状態に変更することができる。
【０１３８】
また、第２制御装置１２０によれば、複数の第２制御装置１２０上に作成されたＶＤＩＳＫ（ボリューム）の総数Ｖallと、第２制御装置１２０の総数Ａallと、第２制御装置１２０のｉｏｐｓとに基づいて、ＬＵＮ＃ｊの閉塞条件となる所定値Ｘａを算出することができる。これにより、ストレージシステムＳＭのシステム構成に応じて、ＬＵＮ＃ｊの閉塞条件となる所定値Ｘａを設定することができる。
【０１３９】
（実施例）
つぎに、実施の形態にかかるストレージシステムＳＭの実施例について説明する。なお、実施の形態で説明した箇所と同一箇所については、図示および説明を省略する。
【０１４０】
（ストレージシステムＳＭのシステム構成例）
図１４は、実施例にかかるストレージシステムＳＭのシステム構成例を示す説明図である。図１４において、ストレージシステムＳＭは、基本ノードＦＮと、拡張ノードＥＮ＃１と、を含む。図１に示した基本ノード１０１は、例えば、基本ノードＦＮに相当する。また、図１に示した拡張ノード１０２−１は、拡張ノードＥＮ＃１に相当する。
【０１４１】
基本ノードＦＮは、ＰＵ（Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）＃１と、ＰＵ＃２と、ＳＵ（Ｓｔｏｒａｇｅ  Ｕｎｉｔ）＃１と、を含む。拡張ノードＥＮ＃１は、ＰＵ＃３と、ＳＵ＃２と、を含む。ＰＵ＃１は、ＰＵ＃２およびＰＵ＃３を制御するコンピュータであり、いわゆる「マネージャ」である。図１に示した第１制御装置１１０は、例えば、ＰＵ＃１に相当する。ＰＵ＃２、ＰＵ＃３は、ＳＵ＃１およびＳＵ＃２を制御するコンピュータであり、いわゆる「エージェント」である。
【０１４２】
ＳＵ＃１は、ストレージ制御部＃１を有し、複数のＬＵＮ（例えば、ＬＵＮ＃１、ＬＵＮ＃２）に対するアクセスを制御する。ＳＵ＃２は、ストレージ制御部＃２を有し、複数のＬＵＮに対するアクセスを制御する。ストレージ制御部＃１，＃２は、ストレージ制御プログラムをＣＰＵが実行することにより実現される。ストレージ制御プログラムは、各ＳＵ＃１，＃２内のストレージに対するアクセスを制御するプログラムである。
【０１４３】
図１に示した第１ストレージユニット１３０は、例えば、ＳＵ＃１に相当する。図１に示した第１ストレージ制御部１３１は、例えば、ストレージ制御部＃１に相当する。図１に示した記憶装置Ｄは、例えば、ＬＵＮに相当する。また、図１に示した第２ストレージユニット１４０は、例えば、ＳＵ＃２に相当する。図１に示した第２ストレージ制御部１４１は、例えば、ストレージ制御部＃２に相当する。
【０１４４】
ストレージシステムＳＭでは、ＰＵとＳＵを１セットとして、ストレージシステムＳＭ全体の記憶領域を拡張することができる。図１４に示すストレージシステムＳＭは、基本ノードＦＮに拡張ノードＥＮ＃１（ＰＵ＃３＋ＳＵ＃２）が拡張された例である。
【０１４５】
ストレージシステムＳＭにおいて、基本ノードＦＮ内のＰＵ＃１、ＰＵ＃２、拡張ノードＥＮ＃１内のＰＵ＃３および管理サーバＭＳは、管理用ＬＡＮを介して接続される。管理サーバＭＳは、ストレージシステムＳＭの管理者が使用するコンピュータであり、装置管理ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を有する。
【０１４６】
また、ストレージシステムＳＭにおいて、基本ノードＦＮ内のＰＵ＃１、ＰＵ＃２、拡張ノードＥＮ＃１内のＰＵ＃３および業務サーバＢＳは、Ｉ／Ｏ用ＬＡＮを介して接続される。業務サーバＢＳは、業務用のアプリケーションがインストールされたコンピュータである。また、ＰＵ＃１、ＰＵ＃２、ＰＵ＃３、ＳＵ＃１およびＳＵ＃２は、Ｉ／Ｏ用ＬＡＮおよび内部管理ＬＡＮを介して接続される。
【０１４７】
ここで、ＰＵ＃１は、構成管理ＤＢ８１０と、Ｉ／Ｏ制御部＃１と、ＰＵ制御部＃１と、クラスタ制御Ｍと、装置管理ＧＵＩ制御部＃１と、ＳＵ制御部＃１と、イベント制御部＃１と、エラー処理部＃１と、閉塞処理部＃１と、を含む。図８に示した判断部８０４および判定部８０５は、例えば、イベント制御部＃１に相当する。また、図８に示したエラー処理部８０３は、例えば、エラー処理部＃１に相当する。また、図８に示した閉塞処理部８０２は、例えば、閉塞処理部＃１に相当する。
【０１４８】
また、ＰＵ＃２は、Ｉ／Ｏ制御部＃２と、ＰＵ制御部＃２と、クラスタ制御部＃２と、ＳＵ制御部＃２と、イベント制御部＃２と、ＶＤＩＳＫ制御部＃２と、を含む。また、ＰＵ＃３は、Ｉ／Ｏ制御部＃３と、ＰＵ制御部＃３と、クラスタ制御部＃３と、ＳＵ制御部＃３と、イベント制御部＃３と、ＶＤＩＳＫ制御部＃３と、を含む。図７に示した検出部７０１、判断部７０２、算出部７０４および判定部７０５は、例えば、ＶＤＩＳＫ制御部＃２，＃３に相当する。また、図７に示した再開処理部７０３は、例えば、ＶＤＩＳＫ制御部＃２，＃３およびＳＵ制御部＃２，＃３に相当する。
【０１４９】
ここで、構成管理ＤＢ８１０は、ストレージシステムＳＭ上に作成されるＶＤＩＳＫ（ボリューム）を管理する情報や、各ボリュームのセグメントを管理する情報（例えば、後述するセグメントテーブル１５００）や、閉塞フラグテーブル４００（図４参照）などを記憶する。なお、セグメントテーブル１５００の記憶内容については、図１５を用いて後述する。
【０１５０】
Ｉ／Ｏ制御部＃１〜＃３は、業務サーバＢＳからのＩ／Ｏ要求を受け付けて処理する。ＰＵ制御部＃１〜＃３は、各ＰＵ＃１〜＃３を制御する。クラスタ制御Ｍは、ＰＵ同士をクラスタリングする。ここでは、ＰＵ＃１とＰＵ＃２とＰＵ＃３とでクラスタが形成されている。クラスタ制御部＃２，＃３は、クラスタ制御ＭによってクラスタリングされたＰＵ＃１〜＃３を認識する。
【０１５１】
装置管理ＧＵＩ制御部＃１は、管理サーバＭＳからの指示に従って、ストレージシステムＳＭの状態を判断したり、新規ボリュームを作成したりする。ＳＵ制御部＃１〜＃３は、各ＳＵ＃１，＃２を制御する。イベント制御部＃１〜＃３は、各種イベントを制御する。イベントとしては、例えば、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラー処理のイベント、ＶＤＩＳＫのセグメントの状態を変更するイベント、Ｉ／Ｏ処理を再開するイベントなどがある。
【０１５２】
エラー処理部＃１は、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラー処理を実行する。閉塞処理部＃１は、ＬＵＮ＃ｊの閉塞処理を行う。ＶＤＩＳＫ制御部＃２，＃３は、各ＰＵ＃２，＃３上に作成されるＶＤＩＳＫを制御する。なお、以下の説明では、ＰＵ＃２，＃３が、業務サーバＢＳからのＩ／Ｏ要求を受け付けて処理する場合を例に挙げて説明する。
【０１５３】
また、ストレージシステムＳＭにおいて、ＰＵ＃１がダウンした場合は、例えば、ＰＵ＃２またはＰＵ＃３が、ＰＵ＃１の機能を引き継ぐ。また、業務サーバＢＳ、管理サーバＭＳのハードウェア構成は、例えば、ＣＰＵ、メモリ、磁気ディスクドライブ、磁気ディスク、ディスプレイ、Ｉ／Ｆ、キーボード、マウス等により実現される。
【０１５４】
（セグメントテーブル１５００の記憶内容）
図１５は、セグメントテーブル１５００の記憶内容の一例を示す説明図である。図１５において、セグメントテーブル１５００は、ボリューム番号、セグメントセット番号、セグメント番号、ＳＵ番号、ＬＵＮ番号およびセグメント状態のフィールドを有する。各フィールドに情報を設定することで、セグメント情報（例えば、セグメント情報１５００−１，１５００−２）がレコードとして記憶される。
【０１５５】
ここで、ボリューム番号は、ＶＤＩＳＫの識別子である。セグメントセット番号は、ＶＤＩＳＫを構成するセグメントセットの識別子である。セグメント番号は、セグメントセットを構成するセグメントの識別子である。ボリューム番号、セグメントセット番号およびセグメント番号は、セグメントの論理番号（位置）を示す。
【０１５６】
ＳＵ番号は、セグメントが属するＳＵの識別子である。ＬＵＮ番号は、セグメントが割り当てられたＬＵＮの識別子である。ＳＵ番号およびＬＵＮ番号は、セグメントの物理番号（位置）を示す。セグメント状態は、セグメントにアクセスできるか否かを示す状態である。
【０１５７】
例えば、セグメント情報１５００−１は、ＶＤＩＳＫ１のセグメントセット１のセグメント１のＳＵ番号「１」、ＬＵＮ番号「１」およびセグメント状態「有効」を示している。なお、ＳＵ番号「１」はＳＵ＃１に対応し、ＬＵＮ番号「１」はＬＵＮ＃１に対応する。また、セグメントテーブル１５００では、ミラーリングされた一対のセグメントのセグメント情報が連続して記憶されている。例えば、セグメント情報１５００−２は、セグメント情報１５００−１が示すＬＵＮ＃１のミラー先のＬＵＮのセグメント情報である。
【０１５８】
（エラー処理の具体的な処理内容）
つぎに、図１６を用いて、ＬＵＮ＃ｊのセグメントに対するＩ／Ｏ処理のエラー処理の具体的な処理内容の一例について説明する。ここでは、ＳＵ＃１内のＬＵＮ＃７のセグメントに対するＩ／Ｏ処理のエラー情報が通知された場合を例に挙げて説明する。
【０１５９】
図１６は、セグメントテーブル１５００の更新例を示す説明図である。なお、エラー処理におけるセグメントテーブル１５００の更新処理では、エラー処理部＃１は、セグメントテーブル１５００の複数のセグメント情報を参照し、特定の条件に一致しているかを確認した上で、必要に応じた更新処理を行う。この参照・確認・更新の処理は、エージェントからエラー情報が１つ通知されるごとに実施される。
【０１６０】
（１）エラー処理部＃１は、ＬＵＮ＃７に割り当てられたセグメント＃７のミラー先のセグメント＃８（ＬＵＮ＃８）のセグメント状態が「有効」であることを確認する（図１６中、（１）参照）。（２）エラー処理部＃１は、セグメント＃８のセグメント状態が「有効」である場合、セグメント＃７のセグメント状態を「不正」に変更する（図１６中、（２）参照）。
【０１６１】
（３）エラー処理部＃１は、セグメントテーブル１５００内のセグメント状態が「空き」のセグメントをエラーセグメント（セグメント＃７）の代替として割り当て、セグメント状態を「コピー待ち」に変更する（図１６中、（３）参照）。セグメント状態が「コピー待ち」のセグメントは、ミラー先のセグメント（セグメント＃８）から非同期にデータがコピーされ、コピーが完了した時点でセグメント状態が「有効」に切り替わり、ミラー構成が回復する。
【０１６２】
（４）エラー処理部＃１は、セグメント＃７のセグメント状態を「不正」に変更した場合、全エージェント（ＰＵ＃２，＃３）に対して、セグメント＃７のセグメント状態が「不正」であることを通知する。セグメント＃７のセグメント状態が「不正」であることを受け取ったエージェントは、自身で管理しているドライバに対してエラーセグメントを不正であるとして、セグメント状態を変更する。セグメント状態の変更後は、エージェントは、ユーザ（例えば、業務サーバＢＳ）からのＩ／Ｏをそのセグメントには行わない（ミラー側で行わせる）ようにする。
【０１６３】
また、エラー処理部＃１は、上述した処理が完了すると、エラー発生元のエージェントに、Ｉ／Ｏ処理の再開処理要求を通知する。なお、以下の説明では、上記（１）〜（４）の処理を「構成管理ＤＢ更新」と表記し、上記（４）の処理の延長でエージェントが実施する処理を「ドライバ状態変更」と表記する場合がある。
【０１６４】
（ＬＵＮ＃ｊの閉塞条件）
つぎに、図１７を用いて、エージェント（例えば、ＰＵ＃２，＃３）およびマネージャ（例えば、ＰＵ＃１）におけるＬＵＮ＃ｊの閉塞条件について説明する。
【０１６５】
図１７は、Ｉ／Ｏ処理のエラーの発生頻度を示す説明図である。スケールアウト型のストレージシステムＳＭでは、ユーザ（例えば、業務サーバＢＳ）が増加した際に、ノード拡張で性能・容量を拡大して対応することができる。このとき、ＳＵ故障時のエラー発生源となるＶＤＩＳＫ数が拡大し得るだけでなく、エラーの通知経路を作るエージェント数も拡大するため、エージェント・マネージャでのエラー発生頻度がそれぞれ変動する。
【０１６６】
ここで、ストレージシステムＳＭにおいて、Ｉ／Ｏ処理のエラーが発生しているＶＤＩＳＫの数を「ｎ個」とし、Ｉ／Ｏ処理のエラーが発生しているエージェントの台数を「ｍ台」とする。この場合、エージェントでのエラーの発生頻度は「ｎ／ｍ（＝α）」と表現することができ、マネージャでのエラーの発生頻度は「ｎ（＝β）」と表現することができる。
【０１６７】
例えば、Ｉ／Ｏ処理のエラーが発生しているＶＤＩＳＫの数が「ｎ個」から「Ｎ個（＞ｎ）」に変化すると、エージェントでのエラーの発生頻度は拡大して「Ｎ／ｍ（＝γ＞α）」となる。また、マネージャでのエラーの発生頻度は拡大して「Ｎ（＞β）」となる。
【０１６８】
例えば、Ｉ／Ｏ処理のエラーが発生しているエージェントの台数が「ｍ台」から「Ｍ台（＞ｍ）」に変化すると、エージェントでのエラーの発生頻度は減少して「ｎ／Ｍ（＝δ＜α）」となる。一方、マネージャでのエラーの発生頻度は「ｎ（＝β）」のままである。
【０１６９】
例えば、Ｉ／Ｏ処理のエラーが発生しているＶＤＩＳＫの数が「ｎ個」から「Ｎ個（＞ｎ）」に変化し、Ｉ／Ｏ処理のエラーが発生しているエージェントの台数が「ｍ台」から「Ｍ台（＞ｍ）」に変化すると、エージェントでのエラーの発生頻度は「Ｎ／Ｍ（＜γ、＞δ）」となる。また、マネージャでのエラーの発生頻度は「Ｎ（＞β）」となる。
【０１７０】
これからのことから、ノード拡張とエージェント・マネージャでのエラー発生頻度は、以下の（関係１）および（関係２）にあるといえる。
【０１７１】
（関係１）エラー発生ＶＤＩＳＫ数が拡大すると、エージェント・マネージャでのエラー発生頻度が増加する。
【０１７２】
（関係２）エラー発生エージェント数が拡大すると、エージェントでのエラー発生頻度が減少する。
【０１７３】
したがって、エラー発生ＶＤＩＳＫ数が「Ｖerr」、エラー発生エージェント数が「Ａerr」であるとき、エージェントのエラー発生頻度「ｅagt」は、単位時間当たりのＶＤＩＳＫ平均Ｉ／Ｏ回数（ｉｏｐｓ）を用いて、下記式（３）を用いて表すことができる。
【０１７４】
ｅagt＝（Ｖerr／Ａerr）・ｉｏｐｓ［ｅｒｒｏｒｓ／ｓｅｃ］・・・（３）
【０１７５】
ここで、Ｖerr対Ａerrの比率は、全体のＶＤＩＳＫ数Ｖall対エージェント数Ａallの比率と近似すると見なすことができる。また、ｉｏｐｓは、ストレージの機能によって測定可能であるとする。これにより、エージェントでのＬＵＮ＃ｊの閉塞条件Ｅagtは、下記式（４）のように表現することができる。なお、上記式（１）の所定値Ｘａは、下記式（４）「Ｅagt」に相当する。
【０１７６】
Ｅagt＝（Ｖall／Ａall）・ｉｏｐｓ［ｅｒｒｏｒｓ／ｓｅｃ］・・・（４）
【０１７７】
また、マネージャでのエラー処理時間を「Ｐmgr」、Ｉ／Ｏタイムアウト時間を「Ｔtimeout」とすると、マネージャのエラー発生頻度ｅmgrと閉塞時間ｔmgrは、下記式（５）を満たすことが求められる。ただし、Ｉ／Ｏタイムアウト時間Ｔtimeoutは、業務サーバＢＳ側で任意に設定される値である。また、閉塞時間ｔmgrは、ＳＵがエージェントにＬＵＮ＃ｊのエラーを通知した最初の時刻から、マネージャでの判定によりＬＵＮ＃ｊが閉塞状態となるまでの時間である。
【０１７８】
（ｅmgrＰmgr−１）・ｔmgr＜Ｔtimeout      ・・・（５）
【０１７９】
上記式（５）において、エラー発生頻度ｅmgrと閉塞時間ｔmgrは閉塞条件の設定で変動する値である。エラー処理時間Ｐmgrは、理想的にはシステムの性能に依る一定値と見なすことができる。したがって、エラー処理時間Ｐmgrに測定値を用いるという前提で、上記式（５）の左辺より、マネージャでのＬＵＮ＃ｊの閉塞条件Ｅmgrは、下記式（６）のように表現することができる。なお、上記式（２）の所定値Ｘｍは、下記式（６）「Ｅmgr」に相当する。
【０１８０】
Ｅmgr＝（１／Ｐmgr）［ｅｒｒｏｒｓ／ｓｅｃ］・・・（６）
【０１８１】
（ストレージシステムＳＭの制御処理手順）
つぎに、実施例にかかるストレージシステムＳＭの制御処理手順について説明する。ここでは、ＶＤＩＳＫ＃１，＃２を構成するＳＵ＃１内のＬＵＮ＃１に障害が発生した場合を例に挙げて説明する。また、エージェント（ＰＵ＃２，ＰＵ＃３）の処理手順として、ＰＵ＃２の処理手順を例に挙げて説明する。
【０１８２】
図１８〜図２１は、実施例にかかるストレージシステムＳＭの制御処理手順の一例を示すシーケンス図である。図１８のシーケンス図において、まず、ＰＵ＃２のＶＤＩＳＫ制御部＃２は、ＳＵ制御部＃２からＩ／Ｏエラーイベントを受け付けた場合、Ｉ／Ｏエラーを検出する（ステップＳ１８０１）。
【０１８３】
つぎに、ＶＤＩＳＫ制御部＃２は、閉塞リスト５００（図５参照）を参照して、ＬＵＮ＃１が閉塞済みか否かを判断する（ステップＳ１８０２）。なお、ＬＵＮ＃ｊが閉塞済みとは、ＬＵＮ＃ｊが閉塞状態となっている状態である。ここで、ＬＵＮ＃１が閉塞済みの場合（ステップＳ１８０２：Ｙｅｓ）、図２１に示すステップＳ２１０２に移行する。
【０１８４】
一方、ＬＵＮ＃１が閉塞済みではない場合（ステップＳ１８０２：Ｎｏ）、ＶＤＩＳＫ制御部＃２は、エラー時刻記録キューＱ２（図６参照）にＬＵＮ＃１のエラー発生時刻を記録する（ステップＳ１８０３）。そして、ＶＤＩＳＫ制御部＃２は、エラー時刻記録キューＱ２を参照して、ＬＵＮ＃１が閉塞条件Ｅagtを満たすか否かを判断する（ステップＳ１８０４）。
【０１８５】
ここで、閉塞条件Ｅagtを満たす場合（ステップＳ１８０４：Ｙｅｓ）、ＬＵＮ＃１の閉塞処理要求をＰＵ＃１のイベント制御部＃１に通知して、図２０に示すステップＳ２００２に移行する。一方、閉塞条件Ｅagtを満たさない場合（ステップＳ１８０４：Ｎｏ）、ＶＤＩＳＫ制御部＃２は、ＰＵ＃１のイベント制御部＃１にＩ／Ｏエラー処理要求を通知する。なお、Ｉ／Ｏエラー処理要求は、上述したエラー情報に相当する。
【０１８６】
図１９のシーケンス図において、まず、ＰＵ＃１のイベント制御部＃１は、Ｉ／Ｏエラー処理要求を受け付けたか否かを判断する（ステップＳ１９０１）。ここで、Ｉ／Ｏエラー処理要求を受け付けていない場合（ステップＳ１９０１：Ｎｏ）、図２０に示すステップＳ２００１に移行する。
【０１８７】
一方、Ｉ／Ｏエラー処理要求を受け付けた場合（ステップＳ１９０１：Ｙｅｓ）、イベント制御部＃１は、閉塞フラグテーブル４００（図４参照）を参照して、ＬＵＮ＃１が閉塞済みか否かを判断する（ステップＳ１９０２）。ここで、ＬＵＮ＃１が閉塞済みの場合（ステップＳ１９０２：Ｙｅｓ）、図２０に示すステップＳ２００１に移行する。
【０１８８】
一方、ＬＵＮ＃１が閉塞済みではない場合（ステップＳ１９０２：Ｎｏ）、イベント制御部＃１は、エラー時刻記録キューＱ１（図６参照）にＬＵＮ＃１のエラー発生時刻を記録する（ステップＳ１９０３）。そして、イベント制御部＃１は、エラー時刻記録キューＱ１を参照して、ＬＵＮ＃１が閉塞条件Ｅmgrを満たすか否かを判断する（ステップＳ１９０４）。
【０１８９】
ここで、閉塞条件Ｅmgrを満たさない場合（ステップＳ１９０４：Ｎｏ）、図２０に示すステップＳ２００１に移行する。一方、閉塞条件Ｅmgrを満たす場合（ステップＳ１９０４：Ｙｅｓ）、イベント制御部＃１は、閉塞処理部＃１に処理依頼を通知する（ステップＳ１９０５）。具体的には、例えば、イベント制御部＃１は、閉塞するＬＵＮ情報を渡して閉塞処理部＃１を起動する。
【０１９０】
つぎに、閉塞処理部＃１は、構成管理ＤＢ８１０内の閉塞フラグテーブル４００を更新する（ステップＳ１９０６）。具体的には、閉塞処理部＃１は、ＬＵＮ＃１の閉塞フラグを「ＯＦＦ」から「ＯＮ」に変更する。
【０１９１】
図２０のシーケンス図において、まず、閉塞処理部＃１は、ＬＵＮ＃１の閉塞要求をＰＵ＃２のイベント制御部＃２およびＰＵ＃３のイベント制御部＃３に通知する（ステップＳ２００１）。つぎに、ＰＵ＃２のイベント制御部＃２は、ＬＵＮ＃１の閉塞要求を受け付けた場合、要求に対応するジョブを起動する（ステップＳ２００２）。
【０１９２】
そして、ＰＵ＃２のＶＤＩＳＫ制御部＃２は、ＬＵＮ＃１の閉塞フラグを「ＯＮ」にする（ステップＳ２００３）。なお、ここでの閉塞フラグ「ＯＮ」は、例えば、閉塞リスト５００にＬＵＮ＃１を識別する情報を登録することである。
【０１９３】
また、ＰＵ＃１のイベント制御部＃１は、要求に対応するジョブを起動する（ステップＳ２００４）。ここでは、エラー処理のジョブが起動される。つぎに、エラー処理部＃１は、「構成管理ＤＢ更新」の処理を実行する（ステップＳ２００５）。そして、エラー処理部＃１は、Ｉ／Ｏ再開処理要求をＰＵ＃２のイベント制御部＃２に通知する（ステップＳ２００６）。
【０１９４】
図２１のシーケンス図において、まず、ＰＵ＃２のイベント制御部＃２は、要求に対応するジョブを起動する（ステップＳ２１０１）。ここでは、Ｉ／Ｏ再開のジョブが起動される。そして、ＰＵ＃２のＶＤＩＳＫ制御部＃２は、「ドライバ状態変更」の処理を実行する（ステップＳ２１０２）。
【０１９５】
つぎに、ＶＤＩＳＫ制御部＃２は、失敗したＩ／Ｏを再開する（ステップＳ２１０３）。ここでの失敗したＩ／Ｏとは、ＶＤＩＳＫ＃１を構成するＳＵ＃１内のＬＵＮ＃１のセグメントに対するＩ／Ｏ処理である。そして、ＰＵ＃２のＳＵ制御部＃２は、ミラー側のＬＵＮのセグメントにＩ／Ｏを再発行する（ステップＳ２１０４）。
【０１９６】
この結果、ミラー側のＬＵＮ＃２へのＩ／Ｏ要求が発行され、Ｉ／Ｏ処理が成功した場合に、ＳＵ制御部＃２から業務サーバＢＳにＩ／Ｏ完了が通知され、Ｉ／Ｏ完了となる。
【０１９７】
これにより、エージェント（ＰＵ＃２，＃３）とマネージャ（ＰＵ＃１）において、ＬＵＮ＃１のセグメントに対するＩ／Ｏエラーの発生頻度を監視することができる。また、ＬＵＮ＃１に対するＩ／Ｏエラーの発生頻度が閉塞条件（Ｅagt，Ｅmgr）を満たした場合、以降はエージェントがＩ／Ｏエラーをマネージャに通知することなくＩ／Ｏ処理の再開処理を行うことができる。
【０１９８】
（ＬＵＮ＃ｊの閉塞解除例）
つぎに、ＬＵＮ＃ｊの閉塞解除例について説明する。ここでは、ＶＤＩＳＫ＃１，＃２を構成するＳＵ＃１内のＬＵＮ＃１の閉塞状態を解除する場合を例に挙げて説明する。また、保守担当者によって（例えば、ハードウェア交換などの手段）ＳＵ＃１が復旧され、閉塞状態になったＬＵＮ＃１がストレージシステムＳＭで再度利用可能になった場合を想定する。
【０１９９】
図２２は、ＬＵＮの閉塞解除例を示す説明図である。図２２において、まず、マネージャ（ＰＵ＃１）は、ストレージシステムＳＭ内のいずれかのエージェント（例えば、ＰＵ＃２，＃３）に、定期的にＳＵ＃１内のＬＵＮ＃１の復旧確認を依頼する（図２２中、（１）参照）。ここで、エージェント（ＰＵ＃２）にＳＵ＃１内のＬＵＮ＃１の復旧確認を依頼する場合を想定する。
【０２００】
エージェント（ＰＵ＃２）は、ＳＵ＃１内のＬＵＮ＃１の復旧確認を受け付けた場合、ＳＵ＃１内のＬＵＮ＃１に対してテストＩ／Ｏ要求を発行する（図２２中、（２）参照）。ここで、テストＩ／Ｏ要求が正常に処理された場合、エージェント（ＰＵ＃２）は、Ｉ／Ｏ成功をマネージャ（ＰＵ＃１）に通知する。
【０２０１】
マネージャ（ＰＵ＃１）は、Ｉ／Ｏ成功を受け付けた場合、ＳＵ＃１内のＬＵＮ＃１の閉塞状態を解除する（図２２中、（３）参照）。そして、マネージャ（ＰＵ＃１）は、ＳＵ＃１内のＬＵＮ＃１の閉塞解除要求をストレージシステムＳＭ内の各エージェント（例えば、ＰＵ＃２，＃３）に通知する（図２２中、（４）参照）。この結果、各エージェント（例えば、ＰＵ＃２，＃３）において、ＳＵ＃１内のＬＵＮ＃１の閉塞状態が解除される。
【０２０２】
これにより、保守担当者によって（例えば、ハードウェア交換などの手段）ＳＵ＃１が復旧されて、閉塞状態になったＬＵＮ＃１が再度利用可能になった時点で自動的に閉塞状態を解除することができる。また、一時的な電源断などの「ハードウェア故障以外の原因」によってＬＵＮ＃１が閉塞状態に移行した場合でも、電源が復旧し、アクセス可能になった時点で自動的に閉塞状態を解除することができる。
【０２０３】
以上説明したように、実施例にかかるストレージシステムＳＭによれば、エージェント（ＰＵ＃２，＃３）とマネージャ（ＰＵ＃１）において、ＬＵＮ＃ｊに対するＩ／Ｏエラーの発生数をそれぞれ記録し、Ｉ／Ｏエラーの発生頻度を監視することができる。また、Ｉ／Ｏエラーの発生頻度が所定値（Ｘａ，Ｘｍ）以上となった場合に、以降はエージェントがＩ／Ｏエラーをマネージャに通知することなくＩ／Ｏ処理の再開処理を行うことができる。これにより、Ｉ／Ｏ処理の再開時間が短縮され、タイムアウトによる業務サーバＢＳのＩ／Ｏ失敗を回避することができる。
【０２０４】
ここで、１２８台のＰＵに、１０００個のＶＤＩＳＫが接続されている運用環境において、あるＳＵが故障し、内部のＬＵＮを利用している全ＶＤＩＳＫから同時にＩ／Ｏエラーが発生した状況を想定する。なお、ＶＤＩＳＫの平均ｉｏｐｓを「１０」とし、マネージャでのエラー処理に「０．００１秒／エラー」かかるとする。このとき、エージェントの閉塞条件Ｅagtは「７８エラー／秒」となり、マネージャの閉塞条件Ｅmgrは「１０００エラー／秒」となる。
【０２０５】
この場合、例えば、従来通りのマネージャを通じた再開処理を実施させると、マネージャでは、「１００００エラー／秒」の速度でエラー処理を行わなければならない。そのため、故障して１秒の時点で９０００エラーが滞留し、約９秒の遅延が発生する上、さらにその後も遅延時間が拡大していく。
【０２０６】
これに対して、ストレージシステムＳＭによれば、一部のエージェントに偏ってエラーが発生した場合、エージェントの閉塞条件Ｅagtに合致する。例として、１０台のエージェントにエラーが偏ったケースを考えると、各エージェントでは「１０００エラー／秒」の割合でエラーが発生し、それぞれで７９回目のエラーを検知した時点、つまり、故障から０．０８秒の時点で閉塞判定される。この時点で、閉塞前にマネージャに通知された「１００００×０．０８＝８００回」のエラーが処理されるため、遅延は最大０．８秒となる。
【０２０７】
一方で、１２８台の全エージェントから均等にエラーが発生した場合は、エージェントでの閉塞条件Ｅagtを満たさずマネージャの閉塞条件Ｅmgrに合致する。このとき、マネージャでは最短１０００回のエラー処理を行い、故障から０．１秒経った時点で閉塞判定される。これらのエラーは閉塞後に「１０００×０．００１＝１．０秒」の遅延を発生させるが、それ以降はエラー通知が止まって遅延が解消される。
【０２０８】
このように、ストレージシステムＳＭによれば、システム構成に応じて適切な閉塞条件（Ｅagt，Ｅmgr）を設定することにより、Ｉ／Ｏエラーから再開処理までの遅延時間が短縮され、タイムアウトによる業務サーバＢＳのＩ／Ｏ失敗を回避することができる。
【０２０９】
なお、本実施の形態で説明した制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２１０】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２１１】
（付記１）第１制御装置と、前記第１制御装置により管理される１または複数の第２制御装置と、第２制御装置によりアクセス可能なストレージユニットとを含むストレージシステムであって、
前記第２制御装置は、
前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーの検出に基づいて、前記ストレージが閉塞状態であるか否かを判断する判断部と、
前記判断部による前記ストレージが閉塞状態であるとの判断に基づいて、前記入出力処理の再開処理を行う再開処理部と、
前記判断部による前記ストレージが閉塞状態ではないとの判断に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定する判定部と、
前記判定部による前記エラーの発生頻度が前記所定値以上であるとの判定に基づいて、前記ストレージの閉塞処理要求を前記第１制御装置に送信する送信部と、を有し、
前記第１制御装置は、
前記閉塞処理要求の受信に基づいて、前記ストレージの閉塞処理を行う閉塞処理部と、
前記閉塞処理要求の受信に基づいて、前記ストレージのエラー処理を行うエラー処理部と、を有することを特徴とするストレージシステム。
【０２１２】
（付記２）前記送信部は、
前記エラーの発生頻度が前記所定値未満と判定された場合、前記ストレージに対する入出力処理のエラーが発生したことを示すエラー情報を前記第１制御装置に送信し、
前記第１制御装置は、
前記エラー情報の受信に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が第２の所定値以上か否かを判定する第２判定部と、
前記第２判定部による前記エラーの発生頻度が前記第２の所定値以上であるとの判定に基づいて、前記ストレージの閉塞要求を前記複数の第２制御装置に送信する第２送信部と、を有し、
前記エラー処理部は、
前記エラー情報を受信した場合、前記ストレージのエラー処理を行うことを特徴とする付記１に記載のストレージシステム。
【０２１３】
（付記３）前記第１制御装置は、
前記エラー情報の受信に基づいて、前記ストレージが閉塞状態であるか否かを判断する第２判断部を有し、
前記第２判定部は、
前記第２判断部による前記ストレージが閉塞状態ではないとの判断に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定することを特徴とする付記２に記載のストレージシステム。
【０２１４】
（付記４）前記第２送信部は、
前記ストレージのエラー処理が完了した場合、前記入出力処理の再開処理要求を前記第２制御装置に送信し、
前記再開処理部は、
前記再開処理要求を受信した場合、前記入出力処理の再開処理を行うことを特徴とする付記１〜３のいずれか一つに記載のストレージシステム。
【０２１５】
（付記５）前記第２制御装置は、
前記複数の第２制御装置上に作成されたボリュームの総数と、前記複数の第２制御装置の総数と、前記第２制御装置において単位時間当たりに発行される前記ボリュームに対する入出力要求の数とに基づいて、前記所定値を算出する算出部を有し、
前記判定部は、
前記ストレージに対する入出力処理のエラーの発生頻度が、前記算出部によって算出された前記所定値以上か否かを判定することを特徴とする付記１〜４のいずれか一つに記載のストレージシステム。
【０２１６】
（付記６）アクセス可能なストレージユニットを制御する制御装置であって、
前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーの検出に基づいて、前記ストレージが閉塞状態であるか否かを判断する判断部と、
前記判断部による前記ストレージが閉塞状態であるとの判断に基づいて、前記入出力処理の再開処理を行う再開処理部と、
前記判断部による前記ストレージが閉塞状態ではないとの判断に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定する判定部と、
前記判定部による前記エラーの発生頻度が前記所定値以上であるとの判定に基づいて、前記ストレージの閉塞処理要求を、自装置を含む複数の制御装置を制御する第１制御装置であって、前記閉塞処理要求を受信した場合に、前記ストレージの閉塞処理を行うとともに、前記ストレージのエラー処理を行う前記第１制御装置に送信する送信部と、
を有することを特徴とする制御装置。
【０２１７】
（付記７）アクセス可能なストレージユニットを制御する制御装置に、
前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーを検出した場合、前記ストレージが閉塞状態であるか否かを判断し、
前記ストレージが閉塞状態である場合、前記入出力処理の再開処理を行い、
前記ストレージが閉塞状態ではない場合、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定し、
前記エラーの発生頻度が前記所定値以上の場合、前記ストレージの閉塞処理要求を、自装置を含む複数の制御装置を制御する第１制御装置であって、前記閉塞処理要求を受信した場合に、前記ストレージの閉塞処理を行うとともに、前記ストレージのエラー処理を行う前記第１制御装置に送信する、
処理を実行させることを特徴とする制御プログラム。
【０２１８】
（付記８）アクセス可能なストレージユニットを制御する制御装置が、
前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーを検出した場合、前記ストレージが閉塞状態であるか否かを判断し、
前記ストレージが閉塞状態である場合、前記入出力処理の再開処理を行い、
前記ストレージが閉塞状態ではない場合、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定し、
前記エラーの発生頻度が前記所定値以上の場合、前記ストレージの閉塞処理要求を、自装置を含む複数の制御装置を制御する第１制御装置であって、前記閉塞処理要求を受信した場合に、前記ストレージの閉塞処理を行うとともに、前記ストレージのエラー処理を行う前記第１制御装置に送信する、
処理を実行することを特徴とする制御方法。
【符号の説明】
【０２１９】
１０１，ＦＮ  基本ノード
１０２−１〜１０２−Ｋ，ＥＮ＃１  拡張ノード
１１０  第１制御装置
１２０  第２制御装置
１３０  第１ストレージユニット
１３１  第１ストレージ制御部
１３２  第１ストレージ
１４０  第２ストレージユニット
１４１  第２ストレージ制御部
１４２  第２ストレージ
７０１  検出部
７０２，８０４  判断部
７０３  再開処理部
７０４  算出部
７０５，８０５  判定部
７０６，８０６  送信部
７０７，８０１  受信部
８０２  閉塞処理部
８０３  エラー処理部
８０７  閉塞解除部
【図１】
2014215990.tif 000003
【図２】
2014215990.tif 000004
【図３】
2014215990.tif 000005
【図４】
2014215990.tif 000006
【図５】
2014215990.tif 000007
【図６】
2014215990.tif 000008
【図７】
2014215990.tif 000009
【図８】
2014215990.tif 000010
【図９】
2014215990.tif 000011
【図１０】
2014215990.tif 000012
【図１１】
2014215990.tif 000013
【図１２】
2014215990.tif 000014
【図１３】
2014215990.tif 000015
【図１４】
2014215990.tif 000016
【図１５】
2014215990.tif 000017
【図１６】
2014215990.tif 000018
【図１７】
2014215990.tif 000019
【図１８】
2014215990.tif 000020
【図１９】
2014215990.tif 000021
【図２０】
2014215990.tif 000022
【図２１】
2014215990.tif 000023
【図２２】
2014215990.tif 000024