(57)【特許請求の範囲】
【請求項１】
第１記憶領域および前記第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を管理する管理装置から受信した前記状態を示す状態情報に基づいて前記第１記憶領域または前記第２記憶領域に入出力処理を実行する制御装置であって、
前記第１記憶領域に対してリードおよびライトが可能である場合、前記入出力処理による前記第１記憶領域のエラーを検出したことに応じて、前記エラーを前記管理装置に通知し、前記エラーと前記状態情報とに基づき前記第１記憶領域および前記第２記憶領域の状態を判定し、判定した当該状態に応じて、入出力先を前記第２記憶領域に切り替えて前記入出力処理を再実行するか前記入出力処理を中止し、
前記第１記憶領域に対してリードが可能でありライトが可能でない場合、前記エラーを検出したことに応じて、入出力先を前記第２記憶領域に切り替えて前記入出力処理を再実行し、前記エラーを前記管理装置に通知する、
制御部を有することを特徴とする制御装置。
【請求項２】
前記制御部は、
前記第１記憶領域に対してリードおよびライトが可能である場合、前記エラーを検出したことに応じて、前記状態情報によって前記第２記憶領域が正常な状態であることが示されれば、前記第１記憶領域が異常な状態であると判定し、入出力先を前記第２記憶領域に切り替えて前記入出力処理を再実行することを特徴とする請求項１に記載の制御装置。
【請求項３】
前記状態情報は、
前記管理装置が受け付けたエラーに基づき前記第１記憶領域および前記第２記憶領域の状態を判定した判定後の状態を示すことを特徴とする請求項１に記載の制御装置。
【請求項４】
第１記憶領域および前記第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を示す状態情報を記憶する管理装置であって、
前記第１記憶領域または前記第２記憶領域に入出力処理を実行する制御装置から所定時間経過する間に受け付けたエラーと前記状態情報とに基づいて、前記第１記憶領域および前記第２記憶領域の状態を判定し、
前記第１記憶領域に対してリードが可能でありライトが可能でない場合、判定した判定後の状態を示す判定後の状態情報を、前記制御装置に送信し、
前記第１記憶領域に対してリードおよびライトが可能である場合、前記判定後の状態情報を前記制御装置に送信しない、
制御部を有することを特徴とする管理装置。
【請求項５】
前記制御部は、
前記第１記憶領域および前記第２記憶領域によって仮想ボリュームを作成する要求を受け付けたことに応じて、前記制御装置から前記所定時間経過する間に受け付けたエラーのうち、前記入出力処理による前記第１記憶領域のエラーおよび前記第２記憶領域のエラーを抽出し、
抽出した前記エラーと前記状態情報とに基づいて、前記第１記憶領域および前記第２記憶領域の状態を判定し、
前記判定後の状態情報を、前記要求を送信した要求元に送信する、
ことを特徴とする請求項４に記載の管理装置。
【請求項６】
第１記憶領域および前記第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を示す状態情報を記憶する管理装置であって、
前記第１記憶領域または前記第２記憶領域に入出力処理を実行する制御装置から所定時間経過する間に受け付けたエラーと前記状態情報とに基づいて、前記第１記憶領域および前記第２記憶領域の状態を判定し、
判定した判定後の状態を示す判定後の状態情報を、前記制御装置に送信し、
前記第１記憶領域および前記第２記憶領域によって仮想ボリュームを作成する要求を受け付けたことに応じて、前記制御装置から前記所定時間経過する間に受け付けたエラーのうち、前記入出力処理による前記第１記憶領域のエラーおよび前記第２記憶領域のエラーを抽出し、
抽出した前記エラーと前記状態情報とに基づいて、前記第１記憶領域および前記第２記憶領域の状態を判定し、
前記判定後の状態情報を、前記要求を送信した要求元に送信する、
制御部を有することを特徴とする管理装置。
【請求項７】
第１記憶領域および前記第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を示す状態情報を記憶する管理装置と、前記管理装置から受信した前記状態情報に基づいて前記第１記憶領域または前記第２記憶領域に入出力処理を実行する制御装置とを含むストレージシステムであって、
前記制御装置は、
前記第１記憶領域に対してリードおよびライトが可能である場合、前記入出力処理による前記第１記憶領域のエラーを検出したことに応じて、前記エラーを前記管理装置に通知し、前記エラーと前記制御装置が受信した状態情報とに基づき前記第１記憶領域および前記第２記憶領域の状態を判定し、判定した当該状態に応じて、入出力先を前記第２記憶領域に切り替えて前記入出力処理を再実行するか前記入出力処理を中止し、
前記第１記憶領域に対してリードが可能でありライトが可能でない場合、前記エラーを検出したことに応じて、入出力先を前記第２記憶領域に切り替えて前記入出力処理を再実行し、前記エラーを前記管理装置に通知し、
前記管理装置は、
前記制御装置から所定時間経過する間に受け付けたエラーと前記管理装置が記憶する状態情報とに基づいて、前記第１記憶領域および前記第２記憶領域の状態を判定し、
判定した判定後の状態を示す判定後の状態情報を、前記制御装置に送信する、
ことを特徴とするストレージシステム。
【請求項８】
第１記憶領域および前記第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を管理する管理装置から受信した前記状態を示す状態情報に基づいて前記第１記憶領域または前記第２記憶領域に入出力処理を実行する制御装置に、
前記第１記憶領域に対してリードおよびライトが可能である場合、前記入出力処理による前記第１記憶領域のエラーを検出したことに応じて、前記エラーを前記管理装置に通知し、前記エラーと前記状態情報とに基づき前記第１記憶領域および前記第２記憶領域の状態を判定し、判定した当該状態に応じて、入出力先を前記第２記憶領域に切り替えて前記入出力処理を再実行するか前記入出力処理を中止し、
前記第１記憶領域に対してリードが可能でありライトが可能でない場合、前記エラーを検出したことに応じて、入出力先を前記第２記憶領域に切り替えて前記入出力処理を再実行し、前記エラーを前記管理装置に通知する、
処理を実行させることを特徴とする制御プログラム。
【請求項９】
第１記憶領域および前記第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を示す状態情報を記憶する管理装置に、
前記第１記憶領域または前記第２記憶領域に入出力処理を実行する制御装置から所定時間経過する間に受け付けたエラーと前記状態情報とに基づいて、前記第１記憶領域および前記第２記憶領域の状態を判定し、
前記第１記憶領域に対してリードが可能でありライトが可能でない場合、判定した判定後の状態を示す判定後の状態情報を、前記制御装置に送信し、
前記第１記憶領域に対してリードおよびライトが可能である場合、前記判定後の状態情報を前記制御装置に送信しない、
処理を実行させることを特徴とする管理プログラム。
【請求項１０】
第１記憶領域および前記第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を管理する管理装置から受信した前記状態を示す状態情報に基づいて前記第１記憶領域または前記第２記憶領域に入出力処理を実行する制御装置が、
前記第１記憶領域に対してリードおよびライトが可能である場合、前記入出力処理による前記第１記憶領域のエラーを検出したことに応じて、前記エラーを前記管理装置に通知し、前記エラーと前記状態情報とに基づき前記第１記憶領域および前記第２記憶領域の状態を判定し、判定した当該状態に応じて、入出力先を前記第２記憶領域に切り替えて前記入出力処理を再実行するか前記入出力処理を中止し、
前記第１記憶領域に対してリードが可能でありライトが可能でない場合、前記エラーを検出したことに応じて、入出力先を前記第２記憶領域に切り替えて前記入出力処理を再実行し、前記エラーを前記管理装置に通知する、
処理を実行することを特徴とする制御方法。
【請求項１１】
第１記憶領域および前記第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を示す状態情報を記憶する管理装置が、
前記第１記憶領域または前記第２記憶領域に入出力処理を実行する制御装置から所定時間経過する間に受け付けたエラーと前記状態情報とに基づいて、前記第１記憶領域および前記第２記憶領域の状態を判定し、
前記第１記憶領域に対してリードが可能でありライトが可能でない場合、判定した判定後の状態を示す判定後の状態情報を、前記制御装置に送信し、
前記第１記憶領域に対してリードおよびライトが可能である場合、前記判定後の状態情報を前記制御装置に送信しない、
処理を実行することを特徴とする管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、管理装置、ストレージシステム、制御プログラム、管理プログラム、制御方法、および管理方法に関する。
【背景技術】
【０００２】
従来、物理的な記憶装置のボリューム構成や記憶容量に縛られることなく、自由なボリューム構成、記憶容量の記憶装置を実現することができるストレージシステムとして、仮想化環境向けストレージ、いわゆる仮想化ストレージ装置がある。仮想化ストレージ装置は、装置内部に物理的な記憶装置に対するアクセスを制御する実ストレージを有し、実ストレージを管理するプロセッサ装置により仮想的なボリュームを作成する。
【０００３】
仮想的なボリュームは、仮想化ストレージ装置内のプロセッサ装置上に形成され、実ストレージ上の物理的な記憶領域との対応付けが行われる。また、複数のプロセッサ装置のうちエージェントとなるプロセッサ装置は、ドライバの制御およびエラーなどのイベントを監視し、マネージャとなるプロセッサ装置への通知を行う。マネージャとなるプロセッサ装置は、仮想化ストレージ装置内の一つのプロセッサ装置に存在し、仮想的なボリュームの構成情報や状態などを管理すると共に、各エージェントを制御する役割を担う。
【０００４】
また、仮想化ストレージ装置では、データを格納する実ストレージに障害が発生した状況を想定して、例えば、仮想的なボリュームを形成するセグメントをミラーリングしている。セグメントは、実ストレージのＬＵＮ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ）から切り出した、一定の大きさの領域である。仮想化ストレージ装置は、障害発生時に、障害が発生したＬＵＮに属するセグメントから、別ＬＵＮに属するよう割り当てられているミラー先のセグメントを経由してアクセスを継続することで、ストレージとしての可用性を向上させている。
【０００５】
関連する先行技術として、例えば、ストレージのＩ／Ｏ処理のエラーを検出した際にストレージが閉塞状態であればＩ／Ｏ処理の再開処理を行い、ストレージが閉塞状態でなく、かつエラーの発生頻度が所定値以上の場合、ストレージの閉塞処理を行うものがある。また、仮想ボリュームを提供するプールの複製を、プールを形成するボリューム単位で行い、物理デバイスが閉塞した際、プール内で閉塞したボリュームを複製ボリュームに切り替える技術がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−２１５９９０号公報
【特許文献２】特開２０１０−０９２２５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来技術によれば、ストレージシステム内の実ストレージに対する入出力処理のエラーの発生から、入出力再開までの時間が増大する場合がある。例えば、エラーが発生した実ストレージを利用するエージェントの数が多くなるにつれて、マネージャに通知される入出力処理のエラーが多くなり、マネージャによる入出力処理のエラーに対する処理にかかる時間が増大することになる。そして、マネージャによる入出力処理のエラーに対する処理にかかる時間が増大した結果、入出力要求のタイムアウト時間を超えてしまう場合がある。
【０００８】
１つの側面では、本発明は、入出力処理のエラーの発生から再開までの時間を抑えることができる制御装置、管理装置、ストレージシステム、制御プログラム、管理プログラム、制御方法、および管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一側面によれば、第１記憶領域および第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を管理する管理装置から受信した状態を示す状態情報に基づいて第１記憶領域または第２記憶領域に入出力処理を実行する制御装置であって、第１記憶領域に対してリードおよびライトが可能である場合、入出力処理による第１記憶領域のエラーを検出したことに応じて、エラーを管理装置に通知し、エラーと状態情報とに基づき第１記憶領域および第２記憶領域の状態を判定し、判定した当該状態に応じて第２記憶領域に入出力処理を実行するか入出力処理を中止し、第１記憶領域に対してリードが可能でありライトが可能でない場合、エラーを検出したことに応じて、第２記憶領域に入出力処理を実行し、エラーを管理装置に通知する制御装置、制御方法、および制御プログラムが提案される。
【００１０】
また、本発明の他の側面によれば、第１記憶領域および第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を示す状態情報を記憶する管理装置であって、第１記憶領域または第２記憶領域に入出力処理を実行する制御装置から所定時間経過する間に受け付けたエラーと状態情報とに基づいて、第１記憶領域および第２記憶領域の状態を判定し、判定した判定後の状態を示す判定後の状態情報を、制御装置に送信する管理装置、管理方法、および管理プログラムが提案される。
【００１１】
また、本発明の他の側面によれば、第１記憶領域および第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を示す状態情報を記憶する管理装置と、管理装置から受信した状態情報に基づいて第１記憶領域または第２記憶領域に入出力処理を実行する制御装置とを含むストレージシステムであって、制御装置は、第１記憶領域に対してリードおよびライトが可能である場合、入出力処理による第１記憶領域のエラーを検出したことに応じて、エラーを管理装置に通知し、エラーと制御装置が受信した状態情報とに基づき第１記憶領域および第２記憶領域の状態を判定し、判定した当該状態に応じて第２記憶領域に入出力処理を実行するか入出力処理を中止し、第１記憶領域に対してリードが可能でありライトが可能でない場合、エラーを検出したことに応じて、第２記憶領域に入出力処理を実行し、エラーを管理装置に通知し、管理装置は、制御装置から所定時間経過する間に受け付けたエラーと管理装置が記憶する状態情報とに基づいて、第１記憶領域および第２記憶領域の状態を判定し、判定した判定後の状態を示す判定後の状態情報を、制御装置に送信するストレージシステムが提案される。
【発明の効果】
【００１２】
本発明の一態様によれば、入出力処理のエラーの発生から再開までの時間を抑えることができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、本実施の形態にかかるストレージシステムＳＭの動作例を示す説明図である。
【図２】図２は、ストレージシステムＳＭの構成例を示す説明図である。
【図３】図３は、ＰＵのハードウェア構成例を示す説明図である。
【図４】図４は、ＶＤＩＳＫの構成例を示す説明図である。
【図５】図５は、制御装置１０２の機能構成例を示す説明図である。
【図６】図６は、管理装置１０１の機能構成例を示す説明図である。
【図７】図７は、実施例にかかるストレージシステムＳＭのシステム構成例を示す説明図である。
【図８】図８は、Ｉ／Ｏエラー情報テーブル１１２の記憶内容の一例を示す説明図である。
【図９】図９は、ｒｗモードにおけるＩ／Ｏエラー発生時の動作例を示す説明図である。
【図１０】図１０は、ｒｏモードにおけるＩ／Ｏエラー発生時の動作例を示す説明図である。
【図１１】図１１は、再開処理手順の一例を示すフローチャートである。
【図１２】図１２は、状態変更通知リスト１２０１の記憶内容の一例を示す説明図である。
【図１３】図１３は、反映処理手順の一例を示すフローチャートである。
【図１４】図１４は、セグメント状態変更処理手順の一例を示すフローチャートである。
【図１５】図１５は、最新セグメント状態リスト１５０１の記憶内容の一例を示す説明図である。
【図１６】図１６は、仮想化処理手順の一例を示すフローチャートである。
【図１７】図１７は、最新セグメント状態取得処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下に図面を参照して、開示の制御装置、管理装置、ストレージシステム、制御プログラム、管理プログラム、制御方法、および管理方法の実施の形態を詳細に説明する。
【００１５】
図１は、本実施の形態にかかるストレージシステムＳＭの動作例を示す説明図である。図１において、ストレージシステムＳＭは、管理装置１０１と、１以上の制御装置１０２と、第１記憶領域１０３と、第２記憶領域１０４とを有するストレージ装置（ＳＵ：Ｓｔｏｒａｇｅ  Ｕｎｉｔ）を有する。第１記憶領域１０３と第２記憶領域１０４とを有するストレージ装置は、同一でもよいし、異なってもよい。
【００１６】
管理装置１０１、制御装置１０２は、プロセッサを有するプロセッサ装置（ＰＵ：Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ）である。管理装置１０１は、１以上の制御装置１０２を管理する、マネージャとなるコンピュータである。制御装置１０２は、自配下のストレージとして、第１記憶領域１０３と、第２記憶領域１０４とを制御する、エージェントとなるコンピュータである。ここで、管理装置１０１は、自配下のストレージを制御すると共に、自身を管理してもよい。また、管理装置１０１、制御装置１０２は、冗長構成となっている。具体的には、管理装置１０１が故障することに備えて、制御装置１０２が、管理装置１０１の機能を有していてもよい。
【００１７】
第１記憶領域１０３および第２記憶領域１０４は、それぞれ一以上の記憶領域である。例えば、第１記憶領域１０３および第２記憶領域１０４は、論理的な記憶装置であるＬＵＮから切り出した記憶領域となるセグメントである。また、第１記憶領域１０３および第２記憶領域１０４は、セグメントに限らず、ＬＵＮそのものでもよいし、ハードディスク、光ディスク、フラッシュメモリ、磁気テープなどの実ストレージの記憶領域でもよい。セグメント、ＬＵＮ、複数のセグメントにより形成された仮想ボリューム、いわゆるＶＤＩＳＫ（Ｖｉｒｔｕａｌ  ＤＩＳＫ）の関係については、図４で詳細に説明する。以下の説明では、第１記憶領域１０３、第２記憶領域１０４は、セグメントであるとして説明する。
【００１８】
そして、第２記憶領域１０４は、第１記憶領域１０３の記憶内容がミラーリングされる記憶領域である。ミラーリング元のセグメントとミラーリングされるセグメントとの組を、「セグメントグループ」と呼称する。また、同一のセグメントグループに含まれる一方のセグメントに対する他方のセグメントのことを、「一方のセグメントのペア」と呼称する場合がある。
【００１９】
管理装置１０１は、セグメントグループに属する２つのセグメントで、入出力（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）処理によるＩ／Ｏエラーが同時に発生したとしても、下位へのＩ／Ｏを閉塞しないように片面だけが異常（ＩＮＶＡＬＩＤ）になるようにセグメントの状態を、構成ＤＢ１１１を用いて一元管理する。具体的には、Ｉ／Ｏエラーが発生したセグメントの対面となるセグメントが正常（ＶＡＬＩＤ）である場合にＩＮＶＡＬＩＤと制御する。このため、制御装置１０２は、Ｉ／Ｏエラーが発生したセグメントの位置情報を管理装置１０１に送信する。
【００２０】
ミラーリングを行うことにより、ストレージシステムＳＭは、第１記憶領域１０３のＩ／Ｏ処理の障害発生時に、第２記憶領域１０４を経由してアクセスを継続することで、ストレージシステムＳＭとしての可用性を向上させることができる。
【００２１】
また、ストレージシステムＳＭは、要求される記憶容量の増加に伴って、ストレージシステムＳＭ全体の記憶領域を拡張すること、いわゆるスケールアウトを行うことができる。具体的なスケールアウトの内容については、図２で説明するが、例えば、ストレージシステムＳＭに、制御装置１０２を追加する。これにより、追加する制御装置１０２に対応する実ストレージを追加することにより、ストレージシステムＳＭの全体性能と記憶容量とを拡大することができる。
【００２２】
ここで、実ストレージのＩ／Ｏ処理のエラーの発生から、Ｉ／Ｏ再開までの時間が増大する場合がある。具体的には、スケールアウトを行うことにより、エラーが発生した実ストレージにアクセスするエージェントの数が多くなるにつれて、マネージャに通知される入出力処理のエラーが多くなる。結果として、マネージャによる入出力処理のエラーに対する処理にかかる時間が増大することになる。そして、マネージャによる入出力処理のエラーに対する処理にかかる時間が増大した結果、入出力要求のタイムアウト時間を超えてしまう場合がある。特に、仮想化ストレージ装置では、１つのＬＵＮが複数のＶＤＩＳＫのセグメントとして利用されているため、１つのＬＵＮの故障が多数のＶＤＩＳＫに影響を与えてしまい、大量のＩ／Ｏエラーが発生してしまう可能性が高い。また、大量のＩ／Ｏ処理のエラーに伴い、一定のレスポンス性能が要求されるＶＤＩＳＫ作成といったユーザ操作も遅延することになる。
【００２３】
そこで、本実施の形態では、マネージャのＩ／Ｏエラー処理のスループットを向上させるため、Ｉ／Ｏエラーが発生した記憶領域のＶＤＩＳＫのアクセスモードに着目し、アクセスモードがリードライトモード（ｒｗモード：ＲｅａｄＷｒｉｔｅ  ｍｏｄｅ）かリードオンリーモード（ｒｏモード：ＲｅａｄＯｎｌｙ  ｍｏｄｅ）かで処理を分岐する。具体的には、本実施の形態では、制御装置１０２が、第１記憶領域１０３のＩ／Ｏエラー時に第１記憶領域がｒｗモードならばセグメントの状態を判定してＩ／Ｏ再開または中止し、ｒｏモードならばＩ／Ｏ再開する方法について説明する。ここで、ｒｗモードとは、リードおよびライトが可能な状態である。これに対し、ｒｏモードとは、リードオンリー、すなわち、リードが可能であるがライトが可能でない状態である。
【００２４】
図１を用いて、本実施の形態にかかるストレージシステムＳＭの動作例について説明する。制御装置１０２は、第１記憶領域１０３および第２記憶領域１０４の状態を示す状態情報１１３を、管理装置１０１から受信してある。ここで、状態情報１１３は、構成ＤＢ１１１から抽出された情報である。具体的には、状態情報１１３は、第１記憶領域１０３がＶＡＬＩＤであるかＩＮＶＡＬＩＤであるかと、第２記憶領域１０４がＶＡＬＩＤであるかＩＮＶＡＬＩＤであるかと、が示される。
【００２５】
図１の（ａ）で示すように、業務サーバからのＩ／Ｏ要求を受け付けた制御装置１０２は、第１記憶領域１０３にＩ／Ｏ処理を要求し、第１記憶領域１０３のＩ／Ｏエラーを示すＩ／Ｏエラー情報１２１を検出したとする。ここから先のストレージシステムＳＭの動作については、第１記憶領域１０３が属するＶＤＩＳＫがｒｗモードかｒｏモードかによって異なるものとなる。ここで、ｒｗモードのＶＤＩＳＫは、ライト要求の延長でＩ／Ｏエラーが発生した場合に２面のセグメントの等価性は保証されない。セグメントの等価とは、２面のセグメントの記憶内容が一致することを示す。そのため、Ｉ／Ｏエラーの発生を確実にマネージャに伝え、Ｉ／Ｏエラー面の切り離しを行わないと、直後のＶＤＩＳＫ操作、例えばＶＤＩＳＫ作成に等価の崩れたセグメントの状態となり、最終的にデータ破壊となる。
【００２６】
一方で、ｒｏモードのＶＤＩＳＫは、Ｉ／Ｏ時に２面のセグメントの等価が崩れることはない。そのため、マネージャへの通知なしにＩ／Ｏ再開を行うことでＩ／Ｏ遅延時間を最小とすることが可能となる。
【００２７】
ここで、上述した記載の前提となるＶＤＩＳＫの利用条件は下記のとおりである。ｒｗモードでは単一ノードからのみ参照・更新可能である。例えば、通常のディスクとしてＶＤＩＳＫを利用するようなケースで、ｒｗモードが使用される。一方、ｒｏモードでは複数ノードから参照可能である。例えば、スナップショットのマスタとしてＶＤＩＳＫを利用するようなケースで、ｒｏモードが使用される。ＶＤＩＳＫがｒｏモードの間は、ＶＤＩＳＫの記憶内容を更新することはできない。
【００２８】
まず、ｒｗモードである場合、制御装置１０２は、図１の（ｒｗ＿ａ１）で示すように、Ｉ／Ｏエラー情報１２１を管理装置１０１に通知する。管理装置１０１に通知されたＩ／Ｏエラー情報１２１は、管理装置１０１内のＩ／Ｏエラー情報１２１を一時的に蓄える記憶領域であるＩ／Ｏエラー情報テーブル１１２に記憶される。
【００２９】
次に、制御装置１０２は、図１の（ｒｗ＿ａ２）で示すように、Ｉ／Ｏエラー情報１２１と状態情報１１３とに基づいて、第１記憶領域１０３および第２記憶領域１０４の状態を判定する。具体的には、制御装置１０２は、状態情報１１３によって、Ｉ／Ｏエラー情報１２１が示すエラーが発生した第１記憶領域１０３のペアとなる第２記憶領域１０４がＶＡＬＩＤであることが示されれば、第１記憶領域１０３がＩＮＶＡＬＩＤであると判定する。一方で、第２記憶領域１０４がＩＮＶＡＬＩＤであれば、制御装置１０２は、第１記憶領域１０３および第２記憶領域１０４の状態を、状態情報１１３が示す状態のままであると判定する。
【００３０】
そして、制御装置１０２は、判定した状態に基づいて、Ｉ／Ｏ処理の再開またはＩ／Ｏ処理の中止を行う。例えば、制御装置１０２は、第１記憶領域１０３がＩＮＶＡＬＩＤであると判定した場合には、Ｉ／Ｏ先を第２記憶領域１０４に切り替え、Ｉ／Ｏ処理を再開する。一方、第１記憶領域１０３および第２記憶領域１０４の状態を状態情報１１３が示す状態のままであると判定した場合、制御装置１０２は、すなわち第２記憶領域１０４がＩＮＶＡＬＩＤである場合、Ｉ／Ｏ処理を中止する。そして、制御装置１０２は、Ｉ／Ｏの要求元といった上位にＩ／Ｏエラーで復帰する。
【００３１】
一方、管理装置１０１は、図１の（ｒｗ＿ｍ１）で示すように、所定時間ごとに、Ｉ／Ｏエラー情報テーブル１１２と構成ＤＢ１１１とに基づいて、第１記憶領域１０３および第２記憶領域１０４の状態を判定する。ここで、Ｉ／Ｏエラー情報テーブル１１２は、制御装置１０２から所定時間経過する間に受け付けたＩ／Ｏエラー情報１２１が蓄積される。所定時間は、管理装置１０１の処理能力や制御装置１０２の数等に応じてストレージシステムＳＭの管理者が予め設定した値である。例えば、所定時間は、１０秒である。
【００３２】
また、ｒｏモードである場合、いち早くＩ／Ｏを再開させるため、図１の（ｒｏ＿ａ１）で示すように、制御装置１０２は、Ｉ／Ｏ先を第２記憶領域１０４に切り替え、Ｉ／Ｏ処理を再開する。そして、制御装置１０２は、図１の（ｒｏ＿ａ２）で示すように、Ｉ／Ｏエラー情報１２１を管理装置１０１に通知する。ここで、図１の（ｒｏ＿ａ１）で示すＩ／Ｏ処理の再開と、図１の（ｒｏ＿ａ２）で示すＩ／Ｏエラー情報１２１との通知は、逆の順序で行ってもよいが、いち早くＩ／Ｏを再開させるためには、上述した順序で行うことが好ましい。また、ｒｏモードである場合、制御装置１０２は、第１記憶領域１０３および第２記憶領域１０４の状態の判定を行わない。判定を行わない理由は、判定を管理装置１０１に任せることにより、複数の制御装置１０２で異なる面のエラーを同時に検出した場合にエラー面を確定するためである。
【００３３】
一方、制御装置１０２は、図１の（ｒｏ＿ｍ１）で示すように、所定時間ごとに、Ｉ／Ｏエラー情報テーブル１１２と構成ＤＢ１１１とに基づいて、第１記憶領域１０３および第２記憶領域１０４の状態を判定する。図１の（ｒｏ＿ｍ１）で示す処理は、図１の（ｒｗ＿ｍ１）で示す処理と同一である。
【００３４】
以上のように、制御装置１０２は、管理装置１０１による第１記憶領域１０３および第２記憶領域１０４の状態の判定を待たずＩ／Ｏ再開するので、Ｉ／Ｏ再開時間を抑えることができる。次に、図２を用いて、ストレージシステムＳＭの構成例を示す。
【００３５】
図２は、ストレージシステムＳＭの構成例を示す説明図である。ストレージシステムＳＭは、基本ノードＦＮと、拡張ノードＥＮ＃１〜＃Ｋとを含む。以下の説明では、拡張ノードＥＮ＃１〜＃Ｋのうち任意の拡張ノードを「拡張ノードＥＮ＃ｋ」と表記する場合がある（ｋ＝１，２，…，Ｋ）。また、ストレージシステムＳＭには、１または複数の業務サーバ２０１が接続される。
【００３６】
基本ノードＦＮは、管理装置１０１と、制御装置１０２＃１と、ＳＵ＃１とを有する。拡張ノードＥＮ＃１は、制御装置１０２＃２と、ＳＵ＃２とを有する。同様に、図示していないが、拡張ノードＥＮ＃ｋは、制御装置１０２＃ｋ＋１と、ＳＵ＃ｋ＋１とを有する。
【００３７】
例えば、ストレージシステムＳＭに、拡張ノードＥＮを追加することにより、ストレージシステムＳＭの全体性能と記憶容量とを拡大することができる。次に、ＰＵのハードウェアの構成例を示す。
【００３８】
図３は、ＰＵのハードウェア構成例を示す説明図である。図３において、ＰＵは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、を有する。また、各構成部はバス３１０によってそれぞれ接続される。
【００３９】
ここで、ＣＰＵ３０１は、ＰＵの全体の制御を司る。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。より具体的には、例えば、フラッシュＲＯＭがＯＳやファームウェアなどのプログラムを記憶し、ＲＯＭがアプリケーションプログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されているプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させることになる。
【００４０】
Ｉ／Ｆ３０３は、他のコンピュータからのデータの入出力を制御する。具体的には、例えば、Ｉ／Ｆ３０３は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワークに接続され、このネットワークを介して他のコンピュータに接続される。そして、Ｉ／Ｆ３０３は、ネットワークと内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。なお、図２に示したＳＵについても、ＰＵと同様のハードウェア構成により実現することができる。
【００４１】
（ＶＤＩＳＫの構成例）
ここで、ストレージシステムＳＭにより提供されるＶＤＩＳＫの構成例について説明する。
【００４２】
図４は、ＶＤＩＳＫの構成例を示す説明図である。図４において、ＶＤＩＳＫ＃ｉは、複数のセグメントセット＃１〜＃ｎの集合体である（ｉ：自然数、ｎ：２以上の自然数）。各セグメントセット＃１〜＃ｎは、８個のセグメント＃１〜＃８の集合体である。各セグメントセット＃１〜＃ｎの容量は、例えば、２［ＧＢ］である。また、各セグメント＃１〜＃８の容量は、例えば、２５６［ＭＢ］である。
【００４３】
各セグメント＃１〜＃８は、ストレージシステムＳＭに含まれるストレージユニット内のＬＵＮごとに割り当てられる。ユーザのデータは、固定長のストリップ（１［ＭＢ］）単位で記録される。また、このストリップはセグメント＃１〜＃８を順に利用する形でストライピングされる。なお、以下の説明では、ＶＤＩＳＫを形成するセグメントに割り当てられた任意のＬＵＮを「ＬＵＮ＃ｊ」と表記する場合がある。
【００４４】
（制御装置１０２の機能構成例）
図５は、制御装置１０２の機能構成例を示す説明図である。制御装置１０２は、制御部５００を有する。制御部５００は、通知部５０１と、判定部５０２と、実行部５０３とを含む。制御部５００は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図３に示したメモリ３０２などである。また、各部の処理結果は、ＣＰＵ３０１のレジスタや、ＣＰＵ３０１のキャッシュメモリ等に格納される。
【００４５】
また、制御装置１０２は、状態情報１１３にアクセス可能である。状態情報１１３は、管理装置１０１が受け付けたエラーに基づき第１記憶領域１０３および第２記憶領域１０４の状態を判定した判定後の状態を示す。制御装置１０２は、管理装置１０１から状態情報１１３を受け付けて、受信した状態情報１１３をメモリ３０２に格納する。
【００４６】
次に、各機能部について、Ｉ／Ｏ処理によるＩ／Ｏエラーが発生した際に、Ｉ／Ｏエラーが発生したセグメントがｒｗモードの場合の機能と、ｒｏモードの場合の機能とについて説明する。
【００４７】
まず、Ｉ／Ｏエラーが発生したセグメントとなる第１記憶領域１０３が属するＶＤＩＳＫがｒｗモードである場合について説明する。通知部５０１は、Ｉ／Ｏ処理によるＩ／Ｏエラーを検出したことに応じて、Ｉ／Ｏエラー情報１２１を管理装置１０１に通知する。
【００４８】
判定部５０２は、Ｉ／Ｏエラー情報１２１と状態情報１１３とに基づき第１記憶領域１０３および第２記憶領域１０４の状態を判定する。例えば、判定部５０２は、状態情報１１３によって、Ｉ／Ｏエラー情報１２１が示すエラーが発生した第１記憶領域１０３のペアとなる第２記憶領域１０４がＶＡＬＩＤであることが示されれば、第１記憶領域１０３がＩＮＶＡＬＩＤであると判定する。一方で、第２記憶領域１０４がＩＮＶＡＬＩＤであれば、判定部５０２は、第１記憶領域１０３および第２記憶領域１０４の状態を、状態情報１１３が示す状態のままであると判定する。なお、判定部５０２は、判定した判定後の結果で状態情報１１３を更新する。
【００４９】
実行部５０３は、判定部５０２が判定した状態に応じて、第２記憶領域１０４にＩ／Ｏ処理を実行するかＩ／Ｏ処理を中止する。例えば、実行部５０３は、第１記憶領域１０３がＩＮＶＡＬＩＤであると判定した場合には、Ｉ／Ｏ先を第２記憶領域１０４に切り替え、Ｉ／Ｏ処理を再開する。一方、第１記憶領域１０３および第２記憶領域１０４の状態を状態情報１１３が示す状態のままであると判定した場合、すなわち、第２記憶領域１０４がＩＮＶＡＬＩＤである場合、実行部５０３は、Ｉ／Ｏ処理を中止する。
【００５０】
次に、Ｉ／Ｏエラーが発生したセグメントとなる第１記憶領域１０３が属するＶＤＩＳＫがｒｏモードである場合について説明する。通知部５０１は、Ｉ／Ｏ処理によるＩ／Ｏエラーを検出したことに応じて、Ｉ／Ｏエラー情報１２１を管理装置１０１に通知する。
【００５１】
実行部５０３は、Ｉ／Ｏ処理によるＩ／Ｏエラー情報１２１を検出したことに応じて、第２記憶領域１０４にＩ／Ｏ処理を実行する。
【００５２】
なお、Ｉ／Ｏエラーが発生したセグメントとなる第１記憶領域１０３が属するＶＤＩＳＫがｒｏモードである場合には、判定部５０２は、処理を行わない。この場合、制御装置１０２は、管理装置１０１から通知される状態情報１１３で、自身が記憶する状態情報１１３を更新する。
【００５３】
（管理装置１０１の機能構成例）
図６は、管理装置１０１の機能構成例を示す説明図である。管理装置１０１は、制御部６００を有する。制御部６００は、取り出し部６０１と、判定部６０２と、格納部６０３と、送信部６０４とを含む。制御部６００は、記憶装置に記憶されたプログラムをＣＰＵ３０１が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図３に示したメモリ３０５、ＳＵ＃１などである。また、各部の処理結果は、ＣＰＵ３０１のレジスタや、ＣＰＵ３０１のキャッシュメモリ等に格納される。
【００５４】
また、管理装置１０１は、構成ＤＢ１１１とＩ／Ｏエラー情報テーブル１１２にアクセス可能である。構成ＤＢ１１１とＩ／Ｏエラー情報テーブル１１２とはメモリ３０２に格納される。構成ＤＢ１１１は、第１記憶領域１０３および第２記憶領域１０４の状態を記憶する。Ｉ／Ｏエラー情報テーブル１１２は、制御装置１０２からのＩ／Ｏエラー情報１２１を一時的に蓄える。Ｉ／Ｏエラー情報テーブル１１２の記憶内容については、図８で説明する。ここで、Ｉ／Ｏエラー情報テーブル１１２は、データの記録時間が直接Ｉ／Ｏ再開の遅延につながるため、書き込みを得意とし、書き込む際にトランザクション排他を伴わない、または排他時間を最小とするＩ／Ｏ特性を有する記憶装置に格納されることが好ましい。
【００５５】
次に、各機能部について、Ｉ／Ｏエラー情報の処理に関する機能と、ＶＤＩＳＫ作成に関する機能とについて説明する。
【００５６】
まず、Ｉ／Ｏエラー情報の処理に関する機能について説明する。取り出し部６０１は、所定間隔ごとに、Ｉ／Ｏエラー情報テーブル１１２からＩ／Ｏエラー情報１２１を取り出す。
【００５７】
判定部６０２は、取り出したＩ／Ｏエラー情報１２１と構成ＤＢ１１１との記憶内容とに基づいて、第１記憶領域１０３および第２記憶領域１０４の状態を判定する。例えば、判定部６０２は、取り出したＩ／Ｏエラー情報１２１が第１記憶領域１０３のＩ／Ｏエラーを示し、かつ、構成ＤＢ１１１によって第１記憶領域１０３および第２記憶領域１０４の状態がＶＡＬＩＤであるとする。この場合、判定部６０２は、第１記憶領域１０３の状態をＩＮＶＡＬＩＤであると判定する。また、取り出したＩ／Ｏエラー情報１２１が、第１記憶領域１０３のＩ／Ｏエラーと、第２記憶領域１０４のＩ／Ｏエラーという複数あるとする。そして、構成ＤＢ１１１によって第１記憶領域１０３および第２記憶領域１０４の状態がＶＡＬＩＤであるとする。この場合、判定部６０２は、先にＩ／Ｏエラーが発生したストレージの状態をＩＮＶＡＬＩＤであると判定する。
【００５８】
格納部６０３は、判定部６０２が判定した状態を、構成ＤＢ１１１に格納する。具体的には、格納部６０３は、判定部６０２が判定した状態を、１トランザクションで構成ＤＢ１１１に格納する。
【００５９】
送信部６０４は、判定部６０２が判定した状態を示す判定後の状態情報１１３を、制御装置１０２に送信する。また、送信部６０４は、Ｉ／Ｏエラーが発生したセグメントとなるストレージが属するＶＤＩＳＫがｒｏモードであれば判定後の状態情報１１３を制御装置１０２に送信し、ｒｗモードであれば判定後の状態情報１１３を制御装置１０２に送信しなくてもよい。また、状態情報１１３を送信する際には、送信部６０４は、セグメントグループに含まれる２つの記憶領域の状態を示す状態情報１１３を送信してもよいし、判定によって状態が変更したセグメントの状態を示す情報を送信してもよい。
【００６０】
次に、ＶＤＩＳＫ作成に関する機能について説明する。例えば、第１記憶領域１０３および第２記憶領域１０４によってＶＤＩＳＫを作成する要求を受け付けたとする。例えば、ＶＤＩＳＫを作成する要求は、業務サーバ２０１の前述の要求に応じて、制御装置１０２＃１〜Ｋ＋１のいずれかが要求する。取り出し部６０１は、制御装置１０２から所定時間経過する間に受け付けたエラーのうち、Ｉ／Ｏ処理による第１記憶領域１０３のＩ／Ｏエラー情報１２１および第２記憶領域１０４のＩ／Ｏエラー情報１２１を抽出する。そして、取り出し部６０１は、抽出したＩ／Ｏエラー情報１２１を取り出す。
【００６１】
判定部６０２は、取り出したＩ／Ｏエラー情報１２１と構成ＤＢ１１１との記憶内容とに基づいて、第１記憶領域１０３および第２記憶領域１０４の状態を判定する。そして、送信部６０４は、判定部６０２が判定した状態を示す判定後の状態情報１１３を、ＶＤＩＳＫを作成する要求の要求元に送信する。
【００６２】
図７は、実施例にかかるストレージシステムＳＭのシステム構成例を示す説明図である。図７において、ストレージシステムＳＭは、ＰＵ＃１〜＃３と、ＳＵ＃１、＃２とを含む。例えば、ＰＵ＃１、＃２は、基本ノードＦＮに含まれる。また、ＰＵ＃３は、拡張ノードＥＮ＃１に含まれる。
【００６３】
ＰＵ＃１は、ＰＵ＃２およびＰＵ＃３を制御するコンピュータであり、いわゆる「マネージャ」である。ＰＵ＃２、ＰＵ＃３は、ＳＵ＃１およびＳＵ＃２を制御するコンピュータであり、いわゆる「エージェント」である。以下、ＰＵ＃１を、「マネージャ」と呼称する。また、ＰＵ＃２、ＰＵ＃３を、「エージェント」と呼称する。
【００６４】
ストレージシステムＳＭでは、ＰＵとＳＵを１セットとして、ストレージシステムＳＭ全体の記憶領域を拡張することができる。
【００６５】
ここで、エージェントは、Ｉ／Ｏ再開部７０１を有する。また、マネージャは、反映部７０２と、処理部７０３と、仮想化部７０４とを有する。また、エージェントは、常駐スレッドとして、ｅｖｅｎｔ処理スレッド７１１と、ドライバ＃１とを実行する。また、図７の例では、エージェント上で動作するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のディスパッチキューに、スレッドｔ２１〜ｔ２６が格納されている。同様に、マネージャ上で動作するＯＳのディスパッチキューに、スレッドｔ１１〜ｔ１９が格納されている。このうち、スレッドｔ１７〜ｔ１９は、非同期スレッドである。
【００６６】
マネージャは、常駐スレッドとして、Ｉ／Ｏエラーサーバプロセス７１２と、Ｉ／Ｏエラー処理スレッド７１３とを実行する。また、マネージャは、構成ＤＢ１１１と、Ｉ／Ｏエラー情報テーブル１１２にアクセス可能である。
【００６７】
ここで、図７、図９、図１０では、実線の矢印は、同期処理を示し、破線の矢印は、非同期処理を示す。また、三角は、スレッドを示し、網掛けを付与した矩形は、常駐スレッドであることを示す。また、破線の枠は、ＯＳのディスパッチキューを示す。
【００６８】
Ｉ／Ｏ再開部７０１は、下位へ発行したＩ／Ｏエラーを検出すると、発行中のＩ／Ｏを一旦停止し、マネージャのＩ／Ｏエラー情報テーブル１１２にＩ／Ｏエラー情報を登録し、Ｉ／Ｏを再開する。
【００６９】
反映部７０２は、Ｉ／Ｏエラー情報テーブル１１２に蓄積したＩ／Ｏエラー情報１２１を抽出し、一括で構成ＤＢ１１１へ反映する。
【００７０】
処理部７０３は、外部からのＶＤＩＳＫ作成、削除などの指示を受け付け、構成ＤＢ１１１の情報に従って処理を行う。また、処理部７０３は、エージェントに指示を行う。
【００７１】
仮想化部７０４は、Ｉ／Ｏエラー情報テーブル１１２に蓄積したＩ／Ｏエラー情報と構成ＤＢ１１１から最新のＶＤＩＳＫの情報を判断し、エージェントに対して最新のＶＤＩＳＫの作成指示を行う。また、仮想化部７０４は、通常のＶＤＩＳＫ作成処理として、ＶＤＩＳＫのアクセスモードと、ＶＤＩＳＫを形成する全セグメント情報とを構成ＤＢ１１１から抽出し、エージェントに対して送信する。ここで、セグメント構成は、ＶＤＩＳＫにおけるセグメントの位置の情報、すなわちセグメントグループインデックスと、ミラー面を形成する２つのＬＵＮ内の位置の情報、すなわちＬＵＮのＩＤとＬＵＮ内のセグメントインデックスとである。
【００７２】
ｅｖｅｎｔ処理スレッド７１１は、ドライバ＃１からＩ／Ｏエラーの検出を受け付けた際に、マネージャに通知するスレッドである。
【００７３】
ドライバ＃１は、ＳＵ＃１を制御し、ＶＤＩＳＫを形成するデバイスドライバである。図７の例では、ドライバ＃１は、ＶＤＩＳＫ＃１、＃２を形成する。また、ドライバ＃１は、Ｉ／Ｏエラーを検出し、ｅｖｅｎｔ処理スレッド７１１に通知する。
【００７４】
Ｉ／Ｏエラーサーバプロセス７１２は、エージェントからＩ／Ｏエラーを受け付けるプロセスである。
【００７５】
Ｉ／Ｏエラー処理スレッド７１３は、Ｉ／Ｏエラー情報テーブル１１２からポーリングによりＩ／Ｏエラーを検出し、Ｉ／Ｏエラーを処理するスレッドである。
【００７６】
図８は、Ｉ／Ｏエラー情報テーブル１１２の記憶内容の一例を示す説明図である。図８に示すＩ／Ｏエラー情報テーブル１１２は、レコード８０１＿１〜３を有する。Ｉ／Ｏエラー情報テーブル１１２は、発生日と、ＶＤＩＳＫ名と、エージェントＩＤと、エラーが発生したセグメントグループインデックスと、セグメントのエラー面というフィールドを含む。
【００７７】
発生日フィールドには、Ｉ／Ｏエラーが発生した日時を示す情報が格納される。ＶＤＩＳＫ名は、Ｉ／Ｏエラーが発生したセグメントが属するＶＤＩＳＫを識別する情報として、ＶＤＩＳＫの名称が格納される。エージェントＩＤは、Ｉ／Ｏエラーを検出したエージェントを識別する情報が格納される。エラーが発生したセグメントグループインデックスフィールドには、Ｉ／Ｏエラーが発生したセグメントが属するセグメントグループを識別する情報が格納される。セグメントのエラー面フィールドには、セグメントグループのうち、Ｉ／Ｏエラーが発生したセグメントを識別する情報が格納される。具体的には、セグメントのエラー面フィールドには、セグメントグループ内の２つのセグメントのうちＩ／Ｏエラーが発生したセグメントを識別する情報として、セグメント面の番号を示す０か１かが格納される。
【００７８】
例えば、Ｉ／Ｏエラーが発生し、Ｉ／Ｏエラーが発生したセグメントのセグメント面の番号が０であるとする、この場合、Ｉ／Ｏエラーが発生したセグメントが、図１における第１記憶領域１０３に相当する。一方、Ｉ／Ｏエラーが発生したセグメントと同一のセグメントグループインデックスを有し、セグメント面の番号が１となるセグメントが、第２記憶領域１０４に相当する。
【００７９】
図９は、ｒｗモードにおけるＩ／Ｏエラー発生時の動作例を示す説明図である。図９の（１）で示すように、スレッドｔ２１からのアクセス要求を受け付けたドライバ＃１は、ＳＵ＃１内のあるセグメントにアクセスした際に、Ｉ／Ｏエラーを検出後、Ｉ／Ｏを停止させる。
【００８０】
次に、図９の（２）で示すように、Ｉ／Ｏ再開部７０１は、再開処理として、ドライバ＃１からのＩ／Ｏ異常通知を受け取ると、スレッドｔ２１を起動しマネージャへ異常通知を送信する。
【００８１】
そして、図９の（３）で示すように、スレッドｔ２１は、Ｉ／Ｏエラーサーバプロセス７１２にリモート接続し、Ｉ／Ｏエラー情報テーブル１１２にＩ／Ｏエラー情報を直接書き込むＳＱＬ文を発行し、コミットする。そして、図９の（４）’で示すように、スレッドｔ２１は、Ｉ／Ｏ再開する。
【００８２】
次に、図９の（４）で示すように、反映部７０２は、反映処理として、Ｉ／Ｏエラーサーバプロセス７１２によってポーリングによりＩ／Ｏエラーを検出する。そして、Ｉ／Ｏエラーサーバプロセス７１２は、非同期でＩ／Ｏエラー情報を取得し一括処理を行う。また、Ｉ／Ｏエラーサーバプロセス７１２、反映処理の一部を行うスレッドとして、図９の例では、スレッドｔ１４を起動する。
【００８３】
そして、図９の（５）で示すように、スレッドｔ１４は、Ｉ／Ｏエラー情報を取得し、セグメントグループの”ＶＡＬＩＤ”確認後”ＩＮＶＡＬＩＤ”に一括コミットする。
【００８４】
次に、図９の（６）で示すように、反映部７０２は、反映処理として、構成ＤＢ１１１を更新後、Ｉ／Ｏエラー情報テーブル１１２のレコードを削除する。
【００８５】
図１０は、ｒｏモードにおけるＩ／Ｏエラー発生時の動作例を示す説明図である。図１０の（１）で示すように、スレッドｔ２１からのアクセス要求を受け付けたドライバ＃１は、ＳＵ＃１内のあるセグメントにアクセスした際に、Ｉ／Ｏエラーを検出後、Ｉ／Ｏを停止させる。
【００８６】
次に、図１０の（２）で示すように、Ｉ／Ｏ再開部７０１は、再開処理として、ドライバ＃１からのＩ／Ｏ異常通知を受け取ると、スレッドｔ２１を起動させる。次に、図１０の（３）で示すように、Ｉ／Ｏ再開部７０１は、Ｉ／Ｏ再開後、マネージャへ異常通知する。
【００８７】
そして、図１０の（４）で示すように、スレッドｔ２１は、Ｉ／Ｏエラーサーバプロセス７１２にリモート接続し、Ｉ／Ｏエラー情報テーブル１１２にＩ／Ｏエラー情報１２１を直接書き込むＳＱＬ文を発行し、コミットする。図１０の（５）〜（７）は、図９の（４）〜（６）と同一であるため、説明を省略する。
【００８８】
（再開処理の説明）
次に、Ｉ／Ｏ再開部７０１が実行する再開処理について説明する。下位へ発行したＩ／Ｏエラーを検出すると、発行中のＩ／Ｏを一旦停止し、ＶＤＩＳＫのアクセスモードにより、処理を以下のように分ける。Ｉ／Ｏ再開部７０１は、ｒｗモードである場合、マネージャへの通知までＩ／Ｏ再開しない一方で、ｒｏモードである場合、マネージャへの通知の前にＩ／Ｏ再開する。次に、上述した記載を基に、再開処理を示すフローチャートについて、図１１を用いて説明する。
【００８９】
図１１は、再開処理手順の一例を示すフローチャートである。エージェントは、ＶＤＩＳＫのアクセスモードを確認する（ステップＳ１１０１）。ＶＤＩＳＫのアクセスモードがｒｗモードである場合（ステップＳ１１０１：ｒｗモード）、エージェントは、マネージャのＩ／Ｏエラー情報テーブル１１２へＩ／Ｏエラー情報１２１を登録する（ステップＳ１１０２）。次に、エージェントは、エラー面の対面のセグメントの状態がＶＡＬＩＤか否かを判断する（ステップＳ１１０３）。
【００９０】
エラー面の対面のセグメントの状態がＶＡＬＩＤである場合（ステップＳ１１０３：Ｙｅｓ）、エージェントは、エラー面のセグメントの状態を、ＩＮＶＡＬＩＤに変更する（ステップＳ１１０４）。そして、エージェントは、Ｉ／Ｏ先をエラー面の対面に切り替える（ステップＳ１１０５）。次に、エージェントは、Ｉ／Ｏを再開する（ステップＳ１１０６）。
【００９１】
エラー面の対面のセグメントの状態がＩＮＶＡＬＩＤである場合（ステップＳ１１０３：Ｎｏ）、エージェントは、Ｉ／Ｏエラーで上位に復帰する（ステップＳ１１０７）。
【００９２】
また、ＶＤＩＳＫのアクセスモードがｒｏモードである場合（ステップＳ１１０１：ｒｏモード）、エージェントは、Ｉ／Ｏ先をエラー面の対面に切り替える（ステップＳ１１０８）。次に、エージェントは、Ｉ／Ｏを再開する（ステップＳ１１０９）。そして、エージェントは、マネージャのＩ／Ｏエラー情報テーブル１１２へＩ／Ｏエラー情報１２１を登録する（ステップＳ１１１０）。
【００９３】
ステップＳ１１０６、Ｓ１１０７、Ｓ１１１０のいずれか一つの処理終了後、エージェントは、Ｉ／Ｏ再開処理を終了する。Ｉ／Ｏ再開処理を実行することにより、マネージャによるセグメントの状態の確定を待たずにＩ／Ｏ再開することができる。特に、ｒｏモードにおいて、Ｉ／Ｏ再開をＩ／Ｏエラー情報１２１の登録よりも先に実行することで、Ｉ／Ｏエラーが発生してからＩ／Ｏ再開までの時間を短縮することができる。また、Ｉ／Ｏ再開前にセグメント状態を変更しない理由は、セグメントの異常の最終判断はマネージャの判定に任せることにより、複数のエージェントで異なる面のエラーを同時に検出した場合にエラー面を確定するためである。
【００９４】
（反映処理の説明）
次に、反映部７０２が実行する反映処理について説明する。反映部７０２は、Ｉ／Ｏエラー情報テーブル１１２に蓄積されたＩ／Ｏエラー情報１２１を定期的に取り出し、取り出したＩ／Ｏエラー情報１２１と、構成ＤＢ１１１の記憶内容とから、セグメントの状態を判定し、構成ＤＢ１１１に反映する。ここで、反映部７０２は、ｒｏモードのＶＤＩＳＫの場合には、変更したセグメントの状態をエージェントに通知する。そして、反映部７０２は、Ｉ／Ｏエラー情報テーブル１１２に蓄積されたＩ／Ｏエラー情報１２１を削除する。次に、変更したセグメントの状態をエージェントに通知するために用いる状態変更通知リストの記憶内容の一例を、図１２を用いて説明する。
【００９５】
図１２は、状態変更通知リスト１２０１の記憶内容の一例を示す説明図である。図１２に示す状態変更通知リスト１２０１は、レコード１２０１＿１〜２を有する。状態変更通知リスト１２０１は、ＶＤＩＳＫ名と、セグメントグループインデックスと、セグメント面と、セグメント状態というフィールドを含む。
【００９６】
ＶＤＩＳＫ名フィールドには、状態が変更されたセグメントが属するＶＤＩＳＫを識別する情報として、ＶＤＩＳＫの名称が格納される。セグメントグループインデックスフィールドには、状態が変更されたセグメントが属するセグメントグループを識別する情報が格納される。セグメント面フィールドには、セグメントグループのうち、状態が変更されたセグメントを識別する情報が格納される。セグメント状態フィールドには、変更されたセグメントの状態を示す識別子が格納される。
【００９７】
図１３は、反映処理手順の一例を示すフローチャートである。マネージャは、Ｉ／Ｏエラー情報テーブル１１２から、Ｉ／Ｏエラー情報１２１を発生順にソートして取り出す（ステップＳ１３０１）。次に、マネージャは、Ｉ／Ｏエラー情報１２１が存在するか否かを判断する（ステップＳ１３０２）。Ｉ／Ｏエラー情報１２１が存在しない場合（ステップＳ１３０２：Ｎｏ）、マネージャは、所定時間待機する（ステップＳ１３０３）。そして、マネージャは、ステップＳ１３０１の処理に移行する。
【００９８】
一方、Ｉ／Ｏエラー情報１２１が存在する場合（ステップＳ１３０２：Ｙｅｓ）、マネージャは、構成ＤＢ１１１のトランザクションを開始する（ステップＳ１３０４）。そして、マネージャは、セグメント状態変更処理を実行する（ステップＳ１３０５）。次に、マネージャは、構成ＤＢ１１１のトランザクションを終了する（ステップＳ１３０６）。そして、マネージャは、状態変更通知リスト１２０１に追加されたセグメントがあるか否かを判断する（ステップＳ１３０７）。
【００９９】
状態変更通知リスト１２０１に追加されたセグメントがある場合（ステップＳ１３０７：Ｙｅｓ）、マネージャは、エージェントにセグメントの状態変更を送信する（ステップＳ１３０８）。一方、状態変更通知リスト１２０１に追加されたセグメントがない場合（ステップＳ１３０７：Ｎｏ）、マネージャは、Ｉ／Ｏエラー情報テーブル１１２から、全てのＩ／Ｏエラー情報１２１を削除する（ステップＳ１３０９）。ステップＳ１３０９の処理終了後、マネージャは、反映処理を終了する。
【０１００】
図１４は、セグメント状態変更処理手順の一例を示すフローチャートである。マネージャは、Ｉ／Ｏエラー情報１２１をセグメントグループに分類する（ステップＳ１４０１）。この際、マネージャは、Ｉ／Ｏエラー情報１２１を発生順にソートする。
【０１０１】
次に、マネージャは、セグメントグループを１つ抽出する（ステップＳ１４０２）。そして、マネージャは、抽出したセグメントグループのＩ／Ｏエラー情報１２１のリスト長を確認する（ステップＳ１４０３）。
【０１０２】
リスト長が１、すなわち片系故障である場合（ステップＳ１４０３：１（片系故障））、マネージャは、エラー検出セグメントを、“ＩＮＶＡＬＩＤ候補”に設定する（ステップＳ１４０４）。また、リスト長が２、すなわち両系故障である場合（ステップＳ１４０３：２（両系故障））、マネージャは、抽出したセグメントグループのうち、先にエラーが発生したセグメントを、“ＩＮＶＡＬＩＤ候補”に設定する（ステップＳ１４０５）。
【０１０３】
ステップＳ１４０４またはＳ１４０５の処理終了後、マネージャは、構成ＤＢ１１１内のセグメントグループの各セグメントの状態を取得する（ステップＳ１４０６）。そして、マネージャは、取得した各セグメントの状態を確認する（ステップＳ１４０７）。
【０１０４】
取得した各セグメントの状態が共にＶＡＬＩＤである場合（ステップＳ１４０７：共にＶＡＬＩＤ）、マネージャは、構成ＤＢ１１１内の“ＩＮＶＡＬＩＤ候補”に設定したセグメントの状態を、“ＩＮＶＡＬＩＤ”に変更する（ステップＳ１４０８）。次に、マネージャは、状態変更したセグメントがｒｏモードのＶＤＩＳＫに属するか否かを判断する（ステップＳ１４０９）。状態変更したセグメントがｒｏモードのＶＤＩＳＫに属する場合（ステップＳ１４０９：Ｙｅｓ）、マネージャは、状態変更通知リスト１２０１に、状態変更したセグメントの情報を追加する（ステップＳ１４１０）。
【０１０５】
そして、マネージャは、未処理のセグメントグループがあるか否かを判断する（ステップＳ１４１１）。各セグメントの状態がその他、すなわち、一方がＶＡＬＩＤであり他方がＩＮＶＡＬＩＤであるか、共にＩＮＶＡＬＩＤである場合（ステップＳ１４０７：その他）、または、状態変更したセグメントがｒｗモードのＶＤＩＳＫに属する場合（ステップＳ１４０９：Ｎｏ）も、マネージャは、ステップＳ１４１１の処理に移行する。
【０１０６】
未処理のセグメントグループがある場合（ステップＳ１４１１：Ｙｅｓ）、マネージャは、ステップＳ１４０２の処理に移行する。一方、未処理のセグメントグループがない場合（ステップＳ１４１１：Ｎｏ）、マネージャは、セグメント状態変更処理を終了する。
【０１０７】
ここで、構成ＤＢ１１１を更新してコミットした後、Ｉ／Ｏエラー情報１２１を削除できていない状態でマネージャが強制終了したとする。この場合でも、マネージャが図１４で示した処理を行うと、構成ＤＢ１１１上でＩＮＶＡＬＩＤ化したセグメントの方が、優先度が高いため、そのままＩＮＶＡＬＩＤ状態として整合性を取ることができる。
【０１０８】
以上のように、マネージャは、Ｉ／Ｏエラーの発生とセグメントの状態から一意に変更後の状態を判定する。また、マネージャは、１トランザクションで、構成ＤＢ１１１へ一括反映することで、Ｉ／Ｏエラー数に伴なって負荷が増幅していたトランザクション競合も平常時と同等の負荷、すなわち１トランザクションとなり、マネージャは、負荷を抑えることができる。また、Ｉ／Ｏエラー情報テーブル１１２からの取り出し間隔は１０秒程度であり、最大数千程度のＩ／Ｏエラーの切替であれば、Ｉ／Ｏエラー情報１２１の構成ＤＢ１１１への反映は最大数秒程度になる。
【０１０９】
（仮想化処理の説明）
次に、仮想化部７０４が実行する仮想化処理について説明する。ＶＤＩＳＫ作成時には、ＶＤＩＳＫ内のデータ読み込みのできるセグメントを全て最新にする必要があるため、Ｉ／Ｏエラー情報１２１を構成ＤＢ１１１に仮想的に反映させ接続先のエージェントにセグメントの状態を送信することになる。具体的には、ＶＤＩＳＫ作成時には、仮想化部７０４は、Ｉ／Ｏエラー情報テーブル１１２からボリュームに対するＩ／Ｏエラー情報１２１を時系列に抽出する。抽出したＩ／Ｏエラー情報１２１を構成ＤＢ１１１に仮想的に反映させる方法については、セグメント状態変更処理とほぼ同じである。次に、接続先のエージェントにセグメントの状態を送信する具体的な内容となる、最新セグメント状態リストの記憶内容の一例を、図１５を用いて説明する。
【０１１０】
図１５は、最新セグメント状態リスト１５０１の記憶内容の一例を示す説明図である。図１５に示す最新セグメント状態リスト１５０１は、レコード１５０１＿１を有する。最新セグメント状態リスト１５０１は、セグメントグループインデックスと、セグメント面と、セグメント状態というフィールドを含む。
【０１１１】
セグメントグループインデックスフィールドには、最新の状態が示されるセグメントが属するセグメントグループを識別する情報が格納される。セグメント面フィールドには、セグメントグループのうち、最新の状態が示されるセグメントを識別する情報が格納される。セグメント状態フィールドには、最新のセグメントの状態を示す識別子が格納される。
【０１１２】
図１６は、仮想化処理手順の一例を示すフローチャートである。マネージャは、作成対象のＶＤＩＳＫについて、Ｉ／Ｏエラー情報テーブル１１２から、Ｉ／Ｏエラー情報１２１を発生順にソートして取り出す（ステップＳ１６０１）。次に、マネージャは、Ｉ／Ｏエラー情報１２１が存在するか否かを判断する（ステップＳ１６０２）。Ｉ／Ｏエラー情報１２１が存在する場合（ステップＳ１６０２：Ｙｅｓ）、マネージャは、最新セグメント状態取得処理を実行する（ステップＳ１６０３）。
【０１１３】
ステップＳ１６０３の処理終了後、または、Ｉ／Ｏエラー情報１２１が存在しない場合（ステップＳ１６０２：Ｎｏ）、マネージャは、作成対象のＶＤＩＳＫの全セグメントの状態を、構成ＤＢ１１１より取得する（ステップＳ１６０４）。次に、マネージャは、最新セグメント状態リスト１５０１にあるセグメントグループについて、作成対象のＶＤＩＳＫのセグメントの状態を最新化する（ステップＳ１６０５）。そして、マネージャは、作成対象のＶＤＩＳＫのセグメントの状態をエージェントに送信する（ステップＳ１６０６）。ステップＳ１６０６の処理終了後、マネージャは、仮想化処理を終了する。
【０１１４】
図１７は、最新セグメント状態取得処理手順の一例を示すフローチャートである。ここで、図１７に示すステップＳ１７０１〜Ｓ１７０７の処理については、ステップＳ１４０１〜Ｓ１４０７の処理と同一であるため、説明を省略する。
【０１１５】
取得した各セグメントの状態が共にＶＡＬＩＤである場合（ステップＳ１７０７：共にＶＡＬＩＤ）、マネージャは、“ＩＮＶＡＬＩＤ候補”に設定したセグメントの状態を、“ＩＮＶＡＬＩＤ”として最新セグメント状態リスト１５０１に追加する（ステップＳ１７０８）。
【０１１６】
ステップＳ１７０８の処理終了後、または、各セグメントの状態がその他である場合（ステップＳ１７０７：その他）、マネージャは、未処理のセグメントグループがあるか否かを判断する（ステップＳ１７０９）。未処理のセグメントグループがある場合（ステップＳ１７０９：Ｙｅｓ）、マネージャは、ステップＳ１７０２の処理に移行する。一方、未処理のセグメントグループがない場合（ステップＳ１７０９：Ｎｏ）、マネージャは、最新セグメント状態取得処理を終了する。
【０１１７】
以上説明したように、エージェントは、Ｉ／Ｏエラー時に、Ｉ／ＯエラーのセグメントのＶＤＩＳＫがｒｗモードならばセグメントグループのそれぞれのセグメントの状態を判定してＩ／Ｏ再開または中止し、ｒｏモードならばＩ／Ｏ再開する。これにより、エージェントは、マネージャによるセグメントグループのそれぞれの状態の判定を待つことなくＩ／Ｏ再開するため、Ｉ／Ｏ再開時間を抑えることができる。従って、例えば、大規模環境でＩ／Ｏエラーが多発する状況下であっても、エージェントは、業務サーバ２０１のＩ／Ｏがタイムアウトしてしまうことを防ぐことができる。また、同状況下でレスポンス性能を維持した状態でユーザ操作を処理することが可能となる。以上により、ストレージシステムＳＭ全体の可用性を確保することができる。
【０１１８】
また、エージェントは、Ｉ／ＯエラーのセグメントのＶＤＩＳＫがｒｗモードならば、Ｉ／Ｏエラーのセグメントのペアのセグメントの状態がＶＡＬＩＤであれば、Ｉ／Ｏエラーのセグメントの状態をＩＮＶＡＬＩＤであると判定する。これにより、エージェントは、マネージャが行うセグメントの状態の判定を自身で行い、Ｉ／Ｏ再開することができる。
【０１１９】
また、状態情報１１３は、マネージャが受け付けたＩ／Ｏエラーに基づきセグメントグループのそれぞれのセグメントの状態を示す。これにより、エージェントは、Ｉ／Ｏエラー発生前のセグメントグループのそれぞれのセグメントの状態を把握することができる。
【０１２０】
また、マネージャは、所定期間ごとに、Ｉ／Ｏエラー情報テーブル１１２の記憶内容と構成ＤＢ１１１とに基づき、セグメントグループのそれぞれのセグメントの状態を判定し、判定した判定後の状態を構成ＤＢ１１１に一括で格納する。これにより、マネージャは、構成ＤＢ１１１のトランザクション期間を最小限に留めることができる。従って、大規模環境でＩ／Ｏエラーが多発する状況下であっても、マネージャは、一定性能を維持して業務サーバ２０１からのＩ／Ｏリクエストを返却することができ、マネージャのＩ／Ｏ処理のスループットを向上させることができる。
【０１２１】
また、エージェントから所定時間経過する間に受け付けたＩ／Ｏエラーが、あるセグメントのＩ／Ｏエラーであり、構成ＤＢ１１１によって、あるセグメントを含むセグメントグループのそれぞれのセグメントの状態がＶＡＬＩＤであるとする。この場合、マネージャは、あるセグメントの状態をＶＡＬＩＤであると判定する。このような構成により、マネージャは、構成ＤＢ１１１の反映の非同期化を実現することができる。
【０１２２】
また、マネージャは、Ｉ／Ｏエラーが発生したセグメントが属するＶＤＩＳＫがｒｏモードであれば、判定後のセグメントの状態を送信し、ｒｗモードであれば、判定後のセグメントの状態を送信しなくてもよい。このように、ｒｗモードであれば、エージェント自身がセグメントの状態を判定しているため、マネージャが判定後のセグメントの状態を送信しなくてよい。これにより、Ｉ／Ｏエラーが発生したセグメントが属するＶＤＩＳＫがｒｏモードであれば、マネージャは、エージェントへの状態情報１１３の送信にかかる負荷を減らすことができる。また、マネージャは、Ｉ／Ｏエラーが発生したセグメントが属するＶＤＩＳＫを判断せずに、判定後のセグメントの状態を送信してもよい。ｒｗモードではエージェント自身がセグメントの状態を判定しているが、エージェントは、同一の情報で上書きするだけであり、不具合は生じない。
【０１２３】
また、マネージャは、ＶＤＩＳＫ作成の要求を受け付けたことに応じて、Ｉ／Ｏエラー情報テーブル１１２内から作成の要求を受けたＶＤＩＳＫのＩ／Ｏエラーを抽出し、抽出した情報と構成ＤＢ１１１とに基づき判定したセグメントの状態を、要求元に送信する。これにより、要求元では、抽出したＩ／Ｏエラーが仮想的に構成ＤＢ１１１に反映したようにみえ、要求元は、通常と同様にＶＤＩＳＫに対する動作を行うことができる。
【０１２４】
なお、本実施の形態で説明した制御方法、管理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本制御プログラム、管理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本制御プログラム、管理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１２５】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１２６】
（付記１）第１記憶領域および前記第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を管理する管理装置から受信した前記状態を示す状態情報に基づいて前記第１記憶領域または前記第２記憶領域に入出力処理を実行する制御装置であって、
前記第１記憶領域に対してリードおよびライトが可能である場合、前記入出力処理による前記第１記憶領域のエラーを検出したことに応じて、前記エラーを前記管理装置に通知し、前記エラーと前記状態情報とに基づき前記第１記憶領域および前記第２記憶領域の状態を判定し、判定した当該状態に応じて前記第２記憶領域に前記入出力処理を実行するか前記入出力処理を中止し、
前記第１記憶領域に対してリードが可能でありライトが可能でない場合、前記エラーを検出したことに応じて、前記第２記憶領域に前記入出力処理を実行し、前記エラーを前記管理装置に通知する、
制御部を有することを特徴とする制御装置。
【０１２７】
（付記２）前記制御部は、
前記第１記憶領域に対してリードおよびライトが可能である場合、前記エラーを検出したことに応じて、前記状態情報によって前記第２記憶領域が正常な状態であることが示されれば、前記第１記憶領域が異常な状態であると判定し、前記第２記憶領域に前記入出力処理を実行することを特徴とする付記１に記載の制御装置。
【０１２８】
（付記３）前記状態情報は、
前記管理装置が受け付けたエラーに基づき前記第１記憶領域および前記第２記憶領域の状態を判定した判定後の状態を示すことを特徴とする付記１に記載の制御装置。
【０１２９】
（付記４）第１記憶領域および前記第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を示す状態情報を記憶する管理装置であって、
前記第１記憶領域または前記第２記憶領域に入出力処理を実行する制御装置から所定時間経過する間に受け付けたエラーと前記状態情報とに基づいて、前記第１記憶領域および前記第２記憶領域の状態を判定し、
判定した判定後の状態を示す判定後の状態情報を、前記制御装置に送信する、
制御部を有することを特徴とする管理装置。
【０１３０】
（付記５）前記制御部は、
前記第１記憶領域に対してリードが可能でありライトが可能でない場合、前記判定後の状態情報を前記制御装置に送信し、
前記第１記憶領域に対してリードおよびライトが可能である場合、前記判定後の状態情報を前記制御装置に送信しない、
ことを特徴とする付記４に記載の管理装置。
【０１３１】
（付記６）前記制御部は、
前記第１記憶領域および前記第２記憶領域によって仮想ボリュームを作成する要求を受け付けたことに応じて、前記制御装置から前記所定時間経過する間に受け付けたエラーのうち、前記入出力処理による前記第１記憶領域のエラーおよび前記第２記憶領域のエラーを抽出し、
抽出した前記エラーと前記状態情報とに基づいて、前記第１記憶領域および前記第２記憶領域の状態を判定し、
前記判定後の状態情報を、前記要求を送信した要求元に送信する、
ことを特徴とする付記４または５に記載の管理装置。
【０１３２】
（付記７）前記制御部は、
前記制御装置からエラーが前記入出力処理による前記第１記憶領域のエラーであり、かつ、前記所定時間経過する間に受け付けた状態情報によって前記第１記憶領域および前記第２記憶領域が正常であることが示されれば、前記第１記憶領域が異常な状態であると判定することを特徴とする付記４〜６のいずれか一つに記載の管理装置。
【０１３３】
（付記８）第１記憶領域および前記第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を示す状態情報を記憶する管理装置と、前記管理装置から受信した前記状態情報に基づいて前記第１記憶領域または前記第２記憶領域に入出力処理を実行する制御装置とを含むストレージシステムであって、
前記制御装置は、
前記第１記憶領域に対してリードおよびライトが可能である場合、前記入出力処理による前記第１記憶領域のエラーを検出したことに応じて、前記エラーを前記管理装置に通知し、前記エラーと前記制御装置が受信した状態情報とに基づき前記第１記憶領域および前記第２記憶領域の状態を判定し、判定した当該状態に応じて前記第２記憶領域に前記入出力処理を実行するか前記入出力処理を中止し、
前記第１記憶領域に対してリードが可能でありライトが可能でない場合、前記エラーを検出したことに応じて、前記第２記憶領域に前記入出力処理を実行し、前記エラーを前記管理装置に通知し、
前記管理装置は、
前記制御装置から所定時間経過する間に受け付けたエラーと前記管理装置が記憶する状態情報とに基づいて、前記第１記憶領域および前記第２記憶領域の状態を判定し、
判定した判定後の状態を示す判定後の状態情報を、前記制御装置に送信する、
ことを特徴とするストレージシステム。
【０１３４】
（付記９）第１記憶領域および前記第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を管理する管理装置から受信した前記状態を示す状態情報に基づいて前記第１記憶領域または前記第２記憶領域に入出力処理を実行する制御装置に、
前記第１記憶領域に対してリードおよびライトが可能である場合、前記入出力処理による前記第１記憶領域のエラーを検出したことに応じて、前記エラーを前記管理装置に通知し、前記エラーと前記状態情報とに基づき前記第１記憶領域および前記第２記憶領域の状態を判定し、判定した当該状態に応じて前記第２記憶領域に前記入出力処理を実行するか前記入出力処理を中止し、
前記第１記憶領域に対してリードが可能でありライトが可能でない場合、前記エラーを検出したことに応じて、前記第２記憶領域に前記入出力処理を実行し、前記エラーを前記管理装置に通知する、
処理を実行させることを特徴とする制御プログラム。
【０１３５】
（付記１０）第１記憶領域および前記第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を示す状態情報を記憶する管理装置に、
前記第１記憶領域または前記第２記憶領域に入出力処理を実行する制御装置から所定時間経過する間に受け付けたエラーと前記状態情報とに基づいて、前記第１記憶領域および前記第２記憶領域の状態を判定し、
判定した判定後の状態を示す判定後の状態情報を、前記制御装置に送信する、
処理を実行させることを特徴とする管理プログラム。
【０１３６】
（付記１１）第１記憶領域および前記第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を管理する管理装置から受信した前記状態を示す状態情報に基づいて前記第１記憶領域または前記第２記憶領域に入出力処理を実行する制御装置が、
前記第１記憶領域に対してリードおよびライトが可能である場合、前記入出力処理による前記第１記憶領域のエラーを検出したことに応じて、前記エラーを前記管理装置に通知し、前記エラーと前記状態情報とに基づき前記第１記憶領域および前記第２記憶領域の状態を判定し、判定した当該状態に応じて前記第２記憶領域に前記入出力処理を実行するか前記入出力処理を中止し、
前記第１記憶領域に対してリードが可能でありライトが可能でない場合、前記エラーを検出したことに応じて、前記第２記憶領域に前記入出力処理を実行し、前記エラーを前記管理装置に通知する、
処理を実行することを特徴とする制御方法。
【０１３７】
（付記１２）第１記憶領域および前記第１記憶領域の記憶内容がミラーリングされる第２記憶領域の状態を示す状態情報を記憶する管理装置が、
前記第１記憶領域または前記第２記憶領域に入出力処理を実行する制御装置から所定時間経過する間に受け付けたエラーと前記状態情報とに基づいて、前記第１記憶領域および前記第２記憶領域の状態を判定し、
判定した判定後の状態を示す判定後の状態情報を、前記制御装置に送信する、
処理を実行することを特徴とする管理方法。
【符号の説明】
【０１３８】
ＳＭ  ストレージシステム
１０１  管理装置
１０２  制御装置
１０３  第１記憶領域
１０４  第２記憶領域
１１１  構成ＤＢ
１１２  Ｉ／Ｏエラー情報テーブル
１１３  状態情報
１２１  Ｉ／Ｏエラー情報
５００  制御部
５０１  通知部
５０２  判定部
５０３  実行部
６００  制御部
６０１  取り出し部
６０２  判定部
６０３  格納部
６０４  送信部
７０１  Ｉ／Ｏ再開部
７０２  反映部
７０３  処理部
７０４  仮想化部
【図１】
0006668733.tif 000002
【図２】
0006668733.tif 000003
【図３】
0006668733.tif 000004
【図４】
0006668733.tif 000005
【図５】
0006668733.tif 000006
【図６】
0006668733.tif 000007
【図７】
0006668733.tif 000008
【図８】
0006668733.tif 000009
【図９】
0006668733.tif 000010
【図１０】
0006668733.tif 000011
【図１１】
0006668733.tif 000012
【図１２】
0006668733.tif 000013
【図１３】
0006668733.tif 000014
【図１４】
0006668733.tif 000015
【図１５】
0006668733.tif 000016
【図１６】
0006668733.tif 000017
【図１７】
0006668733.tif 000018