(57)【特許請求の範囲】
【請求項１】
ホストコンピュータと、
前記ホストコンピュータに接続され、第１のボリュームを有する第１のストレージ装置と、
前記ホストコンピュータ及び前記第１のストレージ装置に接続され、第２のボリュームを有する第２のストレージ装置と、
前記第１のストレージ装置及び前記第２のストレージ装置に接続され、第３のボリュームを有する第３のストレージ装置と
を備え、
前記第１及び前記第２のストレージ装置は、
前記第１のボリュームのデータを前記第２のボリュームへコピーするリモートコピーのペアをそれぞれ内部に設定すると共に、前記リモートコピーのペアに前記第３のボリュームを関連付け、
前記ホストコンピュータが識別する前記第１のボリューム及び前記第２のボリュームの識別子を同じ識別子に設定し、
前記ホストコンピュータから前記第１のボリュームへのアクセスパスの優先順位を前記第２のボリュームへのアクセスパスの優先順位よりも高く設定し、
前記第１のストレージ装置は、
障害を検出した場合に当該障害を検出した旨を示す障害情報フラグを前記第３のボリュームに格納し、
前記ホストコンピュータは、
前記第１のボリュームへのＩ／Ｏリクエストが失敗した場合に、前記第２のボリュームに対するＩ／Ｏリクエストを前記第２のストレージ装置に送信し、
前記第２のストレージ装置は、
前記第２のボリュームに対するＩ／Ｏリクエストを受信した場合、前記第３のボリュームに前記障害情報フラグが格納されているか否かを確認し、前記障害情報フラグが格納されていない場合には前記第２のボリュームに対するＩ／Ｏリクエストに応答し、前記障害情報フラグが格納されている場合には前記第２のボリュームに対するＩ／Ｏリクエストの失敗応答を前記ホストコンピュータに送信する
ことを特徴とする情報システム。
【請求項２】
前記第２のストレージ装置は、
前記ホストコンピュータから前記Ｉ／Ｏリクエストを受信したときに、前記障害情報フラグが前記第３のボリュームに格納されていない場合、前記障害情報フラグを前記第３のボリュームに格納した後、前記Ｉ／Ｏリクエストに対応した処理を実行する
ことを特徴とする請求項１に記載の情報システム。
【請求項３】
前記第１のストレージ装置は、
前記第２のボリュームへのリモートコピーの失敗を検出した場合に、前記第３のボリュームに前記障害情報フラグが格納されているか否かを判断し、前記障害情報フラグが前記第３のボリュームに格納されていない場合には、前記障害情報フラグを前記第３のボリュームに格納した後、前記Ｉ／Ｏリクエストに対応した処理を実行する
ことを特徴とする請求項１に記載の情報システム。
【請求項４】
前記第１のストレージ装置は、
前記ホストコンピュータから前記Ｉ／Ｏリクエストを受信したときに、前記障害情報フラグが前記第３のボリュームに格納されている場合、前記Ｉ／Ｏリクエストの失敗応答を前記ホストコンピュータに送信する
ことを特徴とする請求項３に記載の情報システム。
【請求項５】
前記第１及び前記第２のストレージ装置は、
それぞれ複数の記憶デバイスと、コントローラと、キャッシュメモリとを備え、
前記第１及び前記第２のボリュームは、
それぞれ前記複数の記憶デバイスの一部の領域から構成される
ことを特徴とする請求項１に記載の情報システム。
【請求項６】
前記第１のストレージ装置に接続され、複数の記憶デバイスと、コントローラとキャッシュメモリから構成され、前記複数の記憶デバイスの一部の領域から構成される第４のボリュームを有する第４のストレージ装置と、
前記第２のストレージ装置に接続され、複数の記憶デバイスと、コントローラとキャッシュメモリから構成され、前記複数の記憶デバイスの一部の領域から構成される第５のボリュームを有する第５のストレージ装置と
を備え、
前記第１のストレージ装置は、
前記第４のストレージ装置の前記第４のボリュームに実体が存在する仮想的なボリュームである第１の仮想ボリュームを定義し、
前記第２のストレージ装置は、
前記第５のストレージ装置の前記第５のボリュームに実体が存在する仮想的なボリュームである第２の仮想ボリュームを定義し、
前記第１及び前記第２のストレージ装置は、
前記第１の仮想ボリュームのデータを前記第２の仮想ボリュームへコピーするリモートコピーのペアをそれぞれ内部に設定すると共に、前記リモートコピーのペアに前記第３のボリュームを関連付け、
前記ホストコンピュータは、
前記第１の仮想ボリュームへのＩ／Ｏリクエストが失敗した場合に、前記第２の仮想ボリュームに対するＩ／Ｏリクエストを前記第２のストレージ装置に送信する
ことを特徴とする請求項５に記載の情報システム。
【請求項７】
前記第１及び前記第２のストレージ装置は、
前記第３のストレージ装置の前記第３のボリュームに実体が存在する仮想的なボリュームである第３の仮想ボリュームを定義し、
前記第２のストレージ装置は、
前記ホストコンピュータからＩ／Ｏリクエストを受信した場合に、前記第３の仮想ボリュームに前記障害情報フラグが格納されているか否かを判断し、前記障害情報フラグが前記第３のボリュームに格納されている場合には、前記Ｉ／Ｏリクエストの失敗応答を前記ホストコンピュータに送信する
ことを特徴とする請求項１に記載の情報システム。
【請求項８】
情報システムにおけるＩ／Ｏ処理方法であって、
ホストコンピュータと、
前記ホストコンピュータに接続され、第１のボリュームを有する第１のストレージ装置と、
前記ホストコンピュータ及び前記第１のストレージ装置に接続され、第２のボリュームを有する第２のストレージ装置と、
前記第１のストレージ装置及び前記第２のストレージ装置に接続され、第３のボリュームを有する第３のストレージ装置と
を備え、
前記第１及び前記第２のストレージ装置が、前記第１のボリュームのデータを前記第２のボリュームへコピーするリモートコピーのペアをそれぞれ内部に設定すると共に、前記リモートコピーのペアに前記第３のボリュームを関連付け、前記ホストコンピュータが識別する前記第１のボリューム及び前記第２のボリュームの識別子を同じ識別子に設定し、前記ホストコンピュータから前記第１のボリュームへのアクセスパスの優先順位を前記第２のボリュームへのアクセスパスの優先順位よりも高く設定する第１のステップと、
前記第１のストレージ装置が、障害を検出した場合に当該障害を検出した旨を示す障害情報フラグを前記第３のボリュームに格納する第２のステップと、
前記ホストコンピュータが、前記第１のボリュームへのＩ／Ｏリクエストが失敗した場合に、前記第２のボリュームに対するＩ／Ｏリクエストを前記第２のストレージ装置に送信する第３のステップと、
前記第２のストレージ装置が、前記第２のボリュームに対するＩ／Ｏリクエストを受信した場合、前記第３のボリュームに前記障害情報フラグが格納されているか否かを確認し、前記障害情報フラグが格納されていない場合には前記第２のボリュームに対するＩ／Ｏリクエストに応答し、前記障害情報フラグが格納されている場合には前記第２のボリュームに対するＩ／Ｏリクエストの失敗応答を前記ホストコンピュータに送信する第４のステップと
を備えることを特徴とする情報システムのＩ／Ｏ処理方法。
【請求項９】
前記第４のステップでは、
前記第２のストレージ装置が、前記ホストコンピュータから前記Ｉ／Ｏリクエストを受信したときに、前記障害情報フラグが前記第３のボリュームに格納されていない場合、前記障害情報フラグを前記第３のボリュームに格納した後、前記Ｉ／Ｏリクエストに対応した処理を実行する
ことを特徴とする請求項８に記載の情報システムのＩ／Ｏ処理方法。
【請求項１０】
前記第１のストレージ装置が、前記第２のボリュームへのリモートコピーの失敗を検出した場合に、前記第３のボリュームに前記障害情報フラグが格納されているか否かを判断し、前記障害情報フラグが前記第３のボリュームに格納されていない場合には、前記障害情報フラグを前記第３のボリュームに格納した後、前記Ｉ／Ｏリクエストに対応した処理を実行する第５のステップ
を備えることを特徴とする請求項８に記載の情報システムのＩ／Ｏ処理方法。
【請求項１１】
前記第５のステップでは、
前記第１のストレージ装置が、前記ホストコンピュータから前記Ｉ／Ｏリクエストを受信したときに、前記障害情報フラグが前記第３のボリュームに格納されている場合、前記Ｉ／Ｏリクエストの失敗応答を前記ホストコンピュータに送信する
ことを特徴とする請求項１０に記載の情報システムのＩ／Ｏ処理方法。
【請求項１２】
前記第１及び前記第２のストレージ装置は、
それぞれ複数の記憶デバイスと、コントローラと、キャッシュメモリとを備え、
前記第１及び前記第２のボリュームは、
それぞれ前記複数の記憶デバイスの一部の領域から構成される
ことを特徴とする請求項８に記載の情報システムのＩ／Ｏ処理方法。
【請求項１３】
前記第１のストレージ装置に接続され、複数の記憶デバイスと、コントローラとキャッシュメモリから構成され、前記複数の記憶デバイスの一部の領域から構成される第４のボリュームを有する第４のストレージ装置と、
前記第２のストレージ装置に接続され、複数の記憶デバイスと、コントローラとキャッシュメモリから構成され、前記複数の記憶デバイスの一部の領域から構成される第５のボリュームを有する第５のストレージ装置と
を備え、
前記第１のステップでは、
前記第１のストレージ装置が、前記第４のストレージ装置の前記第４のボリュームに実体が存在する仮想的なボリュームである第１の仮想ボリュームを定義し、前記第２のストレージ装置が、前記第５のストレージ装置の前記第５のボリュームに実体が存在する仮想的なボリュームである第２の仮想ボリュームを定義し、前記第１及び前記第２のストレージ装置が、前記第１の仮想ボリュームのデータを前記第２の仮想ボリュームへコピーするリモートコピーのペアをそれぞれ内部に設定すると共に、前記リモートコピーのペアに前記第３のボリュームを関連付け、
前記第３のステップでは、
前記ホストコンピュータが、前記第１の仮想ボリュームへのＩ／Ｏリクエストが失敗した場合に、前記第２の仮想ボリュームに対するＩ／Ｏリクエストを前記第２のストレージ装置に送信する
ことを特徴とする請求項１２に記載の情報システムのＩ／Ｏ処理方法。
【請求項１４】
前記第１のステップでは、
前記第１及び前記第２のストレージ装置が、前記第３のストレージ装置の前記第３のボリュームに実体が存在する仮想的なボリュームである第３の仮想ボリュームを定義し、
前記第４のステップでは、
前記第２のストレージ装置が、前記ホストコンピュータからＩ／Ｏリクエストを受信した場合に、前記第３の仮想ボリュームに前記障害情報フラグが格納されているか否かを判断し、前記障害情報フラグが前記第３のボリュームに格納されている場合には、前記Ｉ／Ｏリクエストの失敗応答を前記ホストコンピュータに送信する
ことを特徴とする請求項８に記載の情報システムのＩ／Ｏ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のストレージシステムを備えた情報システムに関する。
【背景技術】
【０００２】
一般に、情報システムでは、記憶デバイスとして、例えば、ＨＤＤ（ハードディスクドライブ）を用いるストレージ装置が備えられ、そのストレージ装置を含むストレージシステムが、ストレージエリアネットワーク（ＳＡＮ：Storage Area Network）経由で、複数の上位装置（例えばホスト）からアクセスされる。一般的にストレージ装置では、ＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）技術に従う高信頼化方法が採用されることでＨＤＤ単体の信頼性を超えた信頼性をストレージ装置として提供している。しかし、近年の情報化社会の進化によって上記ＲＡＩＤによる信頼性が貢献する情報システムの可用性（サービス継続性）では不足してきた。
【０００３】
このような状況に対応する高可用化技術として、ホストと二つのストレージシステムとがそれぞれ接続され、一方のストレージシステムからもう一方のストレージシステムにデータをリモートコピーする技術がある。
【特許文献１】米国特許第7,058,731号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記技術では、ストレージシステムが障害停止した場合、もう一方のストレージシステムに交替して、業務を再開できる。しかしながら、この場合、ホストには、交替させるための特殊な交替パスソフトウェアが必要となり、汎用的でない。
【０００５】
そこで、本発明は、２台以上のストレージシステム間でリモートコピーを行うストレージシステムと当該ストレージシステムを利用する特殊な交替パスソフトウェアが存在しないホストも含めた情報システムの可用性を向上させることを目的とする。
【課題を解決するための手段】
【０００６】
かかる課題を解決するために本発明においては、ホストコンピュータと、前記ホストコンピュータに接続され、第１のボリュームを有する第１のストレージ装置と、前記ホストコンピュータ及び前記第１のストレージ装置に接続され、第２のボリュームを有する第２のストレージ装置と、前記第１のストレージ装置及び前記第２のストレージ装置に接続され、第３のボリュームを有する第３のストレージ装置とを備え、前記第１及び前記第２のストレージ装置は、外部からの指示に応じて、前記第１のボリュームのデータを前記第２のボリュームへコピーするリモートコピーのペアをそれぞれ内部に設定すると共に、前記リモートコピーのペアに前記第３のボリュームを関連付け、前記ホストコンピュータは、前記第１のボリュームへのＩ／Ｏリクエストが失敗した場合に、前記第２のボリュームに対するＩ／Ｏリクエストを前記第２のストレージ装置に送信し、前記第１及び前記第２のストレージ装置は、相手側の前記第１若しくは前記第２のストレージ装置の障害、又は前記第１及び前記第２のストレージ装置間の接続障害を検出した場合に、当該障害を検出した旨を示す障害情報フラグを前記第３のボリュームに格納することを特徴とする。
【０００７】
また、本発明においては、情報システムにおけるＩ／Ｏ処理方法であって、ホストコンピュータと、前記ホストコンピュータに接続され、第１のボリュームを有する第１のストレージ装置と、前記ホストコンピュータ及び前記第１のストレージ装置に接続され、第２のボリュームを有する第２のストレージ装置と、前記第１のストレージ装置及び前記第２のストレージ装置に接続され、第３のボリュームを有する第３のストレージ装置とを備え、前記第１及び前記第２のストレージ装置が、外部からの指示に応じて、前記第１のボリュームのデータを前記第２のボリュームへコピーするリモートコピーのペアをそれぞれ内部に設定すると共に、前記リモートコピーのペアに前記第３のボリュームを関連付ける第１のステップと、前記ホストコンピュータが、前記第１のボリュームへのＩ／Ｏリクエストが失敗した場合に、前記第２のボリュームに対するＩ／Ｏリクエストを前記第２のストレージ装置に送信する第２のステップと、前記第１及び前記第２のストレージ装置が、相手側の前記第１若しくは前記第２のストレージ装置の障害、又は前記第１及び前記第２のストレージ装置間の接続障害を検出した場合に、当該障害を検出した旨を示す障害情報フラグを前記第３のボリュームに格納する第３のステップとを備えることを特徴とする。
【０００８】
従って、第１のボリュームへのＩ／Ｏリクエストが失敗したときに、前記第２のボリュームにＩ／Ｏリクエストが送信されるため、第１のボリュームとのリモートコピーがなされておらず、前記第２のボリュームのデータが最新でないことから、最新でない前記第２のボリュームのデータによりホストコンピュータのＩ／Ｏリクエストに対する処理を実行するのを未然かつ有効に防止することができる。
【発明の効果】
【０００９】
本発明によれば、情報システムの可用性を向上させることができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面を参照して、本発明の実施の形態を説明する。
【００１１】
（１）第１の実施の形態
＜１．情報システムの構成＞
図１は、本発明の一実施の形態に係る情報システム１００のハードウェア構成の一例を示す図である。
【００１２】
情報システム１００は、例えば、ストレージ装置１５００、ホストコンピュータ（以後ホストと省略する）１１００、管理ホスト１２００と、２台以上の仮想化ストレージ装置１０００とから構成される。ストレージ装置１５００、ホスト１１００、管理ホスト１２００の数は、それぞれ、１以上とすることができる。仮想化ストレージ装置１０００とホスト１１００は、Ｉ／Ｏネットワーク１３００を介して、相互に接続される。仮想化ストレージ装置１０００とストレージ装置１５００と管理ホスト１２００は、管理ネットワーク（図示せず）又はＩ／Ｏネットワーク１３００を介して、相互に接続される。
【００１３】
ホスト１１００には、ホスト内部ネットワーク１１０４があり、そのネットワーク１１０４に、プロセッサ（図中ではProcと略記）１１０１と、メモリ（図中ではMemと略記）１１０２と、Ｉ／Ｏポート（図中ではI/O Pと略記）１１０３とが接続されている。管理ホスト１２００も、ホスト１１００と同じハードウェア構成を有することができる。なお、Ｉ／Ｏポートをホスト１１００に追加する拡張カードをＨＢＡ（Host Bas Adapter)と呼ぶことがある。
【００１４】
管理ホスト１２００は、表示装置を有し、その表示装置に、仮想化ストレージ装置１０００とストレージ装置１５００の管理用の画面を表示することができる。また、管理ホスト１２００は、管理操作リクエストを、ユーザー（例えば管理ホスト１２００のオペレーター）から受付け、その受け付けた管理操作リクエストを、仮想化ストレージ装置１０００やストレージ装置１５００に送信することができる。管理操作リクエストは、仮想化ストレージ装置１０００やストレージ装置１５００の操作のためのリクエストであり、例えば、パリティグループ作成リクエスト、内部ＬＵ（Logical Unit）作成リクエスト、パス定義リクエスト、及び仮想化機能に関する操作がある。
【００１５】
Ｉ／Ｏネットワーク１３００は、ファイバーチャネルによる接続が第一に考えられるが、それ以外でも、ＦＩＣＯＮ（FIbre CONnection：登録商標）やＥｔｈｅｒｎｅｔ（登録商標）とＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）とｉＳＣＳＩ（internet ＳＣＳＩ（Small Computer System Interface））の組み合わせや、Ｅｔｈｅｒｎｅｔ（登録商標）とＮＦＳ(Network File System)やＣＩＦＳ(Common Internet File System)等のネットワークファイルシステムの組み合わせ等が考えられる。さらに、Ｉ／Ｏネットワーク１３００は、Ｉ／Ｏリクエストを転送可能な通信装置であればこれ以外でもよい。また、仮想化ストレージ装置１０００とストレージ装置１５００を接続するネットワークについてもＩ／Ｏネットワーク１３００と同様である。
【００１６】
仮想化ストレージ装置１０００は、コントローラ（図中はCTLと表記）１０１０と、キャッシュメモリ（図中はCMと表記）１０２０と、複数のＨＤＤ１０３０とを備える。好ましい形態としては、コントローラ１０１０及びキャッシュメモリ１０２０は、それぞれ複数のコンポーネントから構成することが考えられる。なぜなら、コンポーネント単体に障害が発生して閉塞した場合でも、残りのコンポーネントを用いてリードやライトに代表されるＩ／Ｏリクエストを引き続き受けることができるためである。
【００１７】
コントローラ１０１０は、仮想化ストレージ装置１０００の動作を制御する装置（例えば回路基盤）である。コントローラ１０１０には、内部ネットワーク１０１７があり、その内部ネットワーク１０１７に、Ｉ／Ｏポート１０１３、キャッシュポート（図中ではC Pと表記）１０１５、管理ポート（図中ではM Pと表記）１０１６、バックエンドポート（図中ではB/E Pと表記）１０１４、プロセッサ（例えばＣＰＵ（Central Processing Unit））１０１１及びメモリ１０１２が接続されている。コントローラ１０１０同士とキャッシュメモリ１０２０は、ストレージ内部ネットワーク１０５０にて相互に接続される。また、コントローラ１０１０と各ＨＤＤ１０３０は、複数のバックエンドネットワーク１０４０にて相互接続される。
【００１８】
ストレージ装置１５００のハードウェア構成は、仮想化ストレージ装置１０００と同種の部品から構成される。なお、仮想化ストレージ装置１０００がＨＤＤを持たない仮想化専用装置またスイッチの場合は、ストレージ装置１５００は、仮想化ストレージ装置１０００と同種の部品から構成されなくてもいい。さらに、ホスト１１００及び仮想化ストレージ装置１０００の内部のネットワークは、好ましくは、Ｉ／Ｏポート１０１３の有する転送帯域より広帯域であり、また、バスやスイッチ型のネットワークによって全てまた一部が代替されてもよい。また、図１では、Ｉ／Ｏポート１０１３は、コントローラ１０１０に一つ存在することになっているが、実際には、複数のＩ／Ｏポート１０１３がコントローラ１０１０に存在してもよい。
【００１９】
以上のハードウェア構成によって、仮想化ストレージ装置１０００やストレージ装置１５００のＨＤＤに保存された全て又は一部のデータを、ホスト１１００が読出したり書き込んだりすることができるようになる。なお、以後の説明では、データ保存を担当するシステムをストレージクラスタと呼ぶ。また、ストレージクラスタ内部に当該システムを２系統含むことで高可用化を実現するサブシステムで、仮想化ストレージ装置１０００とストレージ装置１５００の片方又は両方を含むサブシステムをストレージサブシステムと呼ぶ。
【００２０】
＜２．本実施の形態の概要＞
本実施の形態では、他のストレージ装置１５００内のボリューム等の記憶領域を仮想化する仮想化機能を有する仮想化ストレージ装置１０００を含むストレージシステムの可用性を向上させるため、もう一台の仮想化ストレージ装置１０００を用いた二重化構成を採用する。図２は、その概要を示した図である。
【００２１】
本概要では、ストレージシステムに仮想化ストレージ装置１０００Ｌ、仮想化ストレージ装置１０００Ｒ、ストレージ装置１５００Ｌ、ストレージ装置１５００Ｒが含まれる。なお、以下においては、説明を容易にするため、仮想化ストレージ装置１０００Ｌ及びストレージ装置１５００Ｌを正系（プロダクション系）、仮想化ストレージ装置１０００Ｒ及びストレージ装置１５００Ｒを副系（バックアップ系）の役割をもっているものとする。しかし、それぞれの仮想化ストレージ装置１０００Ｌ、１０００Ｒがホスト１１００へ提供するボリュームが二つ以上の場合は、仮想化ストレージ装置単位で正系・副系を担当する代わりにボリューム単位で正系を担当する仮想化ストレージ装置１０００Ｌ、１０００Ｒが定まっていればよい。
【００２２】
それぞれの仮想化ストレージ装置１０００Ｌ、１０００Ｒは、自身が有するＨＤＤ１０３０を構成要素とするパリティグループ（ＲＡＩＤ技術によって構成される）の一部又は全ての領域をボリューム３０００Ａ（３０００ＬＡ、３０００ＲＡ）としてホスト１１００に提供する（図中の円柱内に'Ａ'と記された部分が対応）。また、仮想化ストレージ装置１０００は、オプションとして仮想化機能による仮想ボリューム３０００Ｂ（３０００ＬＢ、３０００ＲＢ）（対応するＨＤＤ等の不揮発記憶領域が仮想化ストレージ装置１０００Ｌ、１０００Ｒの外部に存在するボリュームのこと）を提供することができる（図中の円柱内に'Ｂ'と記された部分が対応）。本概要では、ストレージ装置１５００Ｌ、１５００Ｒが提供するボリューム３５００Ｂ（３５００ＬＢ、３５００ＲＢ）の一部又は全てを対応する不揮発記憶領域として用いている。
【００２３】
なお、以後の説明では、「ボリュームのデータ」と書いた場合は、ＨＤＤ１０３０に保存されたデータに加えてキャッシュメモリ１０２０に一時保存されたデータも含む。また、後ほど述べる「仮想ボリュームのデータ」に関しては、ストレージ装置１５００Ｌ、１５００Ｒのボリューム３５００ＬＢ、３５００ＲＢに保存されたデータに加えて仮想化ストレージ装置１０００Ｌ、１０００Ｒのキャッシュメモリ１０２０に一時保存されたデータを含む。
【００２４】
一方、ホスト１１００上では、アプリケーションプログラム（以後、アプリケーションと略すことがある）２０１０と、ＯＳ（Operating System）２０２０が動作している。また、単一ボリューム３０００に複数のアクセスパスがある場合に、それらを一まとめにして取り扱う機能を持つ、交替パスソフトが、ＯＳ２０２０の一部として動作している。
【００２５】
アプリケーション２０１０は、ＯＳ２０２０が提供するインターフェイスを利用して、仮想化ストレージ装置１０００内のデータをアクセスする。ＯＳ２０２０は、アプリケーション２０１０からのアクセス要求を解釈し、要求されたデータを特定するため、仮想化ストレージ装置１０００が提供するボリューム３０００のボリュームアドレス（例えば、ＳＣＳＩ規格ではターゲットポートアドレスとＬＵＮの組み合わせで表現される）と、ボリューム３０００内のデータ位置（例えば、同じくＳＣＳＩ規格では、ＬＢＡで示される）を指定して、仮想化ストレージ装置１０００にＩ／Ｏリクエストを発行する。
【００２６】
仮想化ストレージ装置１０００は、指定されたボリューム３０００の指定されたＬＢＡに格納されているデータをアクセス（例えば、リードやライト）し、ホスト１１００に結果を応答する。ホスト１１００のＯＳ２０２０は、仮想化ストレージ装置１０００から返された結果を受け、アプリケーション２０１０に結果を返す。
【００２７】
交替パスソフトは、上記のアプリケーション２０１０とＯＳ２０２０とのやり取りの間に介入し、単一ボリュームが複数のアクセスパスを備える場合、使用するアクセスパスを選択する機能を持つ。ＳＣＳＩ規格では、一つのボリューム３０００が複数のアクセスパスを備える場合、それぞれのアクセスパスに対して異なるボリュームアドレス（すなわち、ターゲットポートアドレスとＬＵＮの組み合わせ）が割り当てられる。つまり、単一ボリュームが複数のボリュームアドレスを持つことになる。
【００２８】
交替パスソフトは、そのうちの一つのボリュームアドレスを（すなわち、アクセスパスを）選択してＩ／Ｏリクエストを発行するよう、ＯＳ２０２０に依頼する。ＯＳ２０２０は、交替パスソフトが選択したアクセスパスを使用して、仮想化ストレージ装置１０００にＩ／Ｏリクエストを発行し、仮想化ストレージ装置１０００から結果を受け取り、その結果を交替パスソフトに返す。交替パスソフトは、結果がＩ／Ｏ成功の場合、アプリケーション２０１０にその結果を返す。結果がＩ／Ｏ失敗の場合、交替パスソフトは別のアクセスパスを選択して、再びＯＳ２０２０にＩ／Ｏリクエスト発行を依頼する。全てのアクセスパスでＩ／Ｏ失敗となったときは、アプリケーション２０１０にＩ／Ｏ失敗を応答する。
【００２９】
交替パスソフトは、複数のボリュームアドレスが単一ボリュームに関連付けられていることを知るために、ボリューム固有の識別子であるボリューム識別子を用いる。交替パスソフトは、複数のボリュームアドレスそれぞれに対して、仮想化ストレージ装置１０００にボリューム識別子を問い合わせる。ＳＣＳＩ規格では、Ｉｎｑｕｉｒｙコマンドを利用する。仮想化ストレージ装置１０００は、ボリューム固有の識別子を交替パスソフトに応答する。ボリューム識別子はボリューム固有の識別子なので、たとえボリュームアドレスが異なっても、ボリューム３０００が同じであれば同じ識別子を返す。これにより、交替パスソフトは、同じボリューム識別子を返すボリュームアドレスが単一ボリュームへの複数のアクセスパスであると認識できる。
【００３０】
また、交替パスソフトは、アクセスパスの優先順位も取得する。ＳＣＳＩ規格では、Ｉｎｑｕｉｒｙコマンドの応答として、識別子とともに交替パスソフトに優先順位を返す。一般的に、優先順位は高低の二段階程度で示される。すなわち、あるアクセスパスは優先順位が高く、別のアクセスパスは優先順位が低い、といった情報を交替パスソフトは得ることができる。交替パスソフトは優先順位を取得すると、アクセスパスを選択する際、優先順位の高いアクセスパスを選択し、ＯＳ２０２０に選択したアクセスパスを使用してＩ／Ｏリクエストを発行するよう依頼する。アクセスパスが３本以上ある場合は、まず優先順位の高いアクセスパスの中から使用するアクセスパスを選択する。優先順位の高いアクセスパスを使用したＩ／Ｏリクエストが全て失敗したときのみ、優先順位の低いアクセスパスを選択し、ＯＳ２０２０にＩ／Ｏリクエスト発行を依頼する。
【００３１】
図２に示す仮想化ストレージ装置１０００Ｌ、１０００Ｒが提供するボリューム３０００ＬＡ、３０００ＲＡ、３０００ＬＢ、３０００ＲＢは、リモートコピーの関係にある。リモートコピーは、ある仮想化ストレージ装置１０００のボリューム３０００が受けたライトデータを、他の仮想化ストレージ装置１０００のボリューム３０００にコピーする、仮想化ストレージ装置１０００が持つ機能である。コピー元ボリュームをプライマリボリューム、コピー先ボリュームをセカンダリボリュームと呼ぶ。
【００３２】
本実施の形態においては、仮想化ストレージ装置１０００Ｌを優先度の高い仮想化ストレージ装置１０００とし、仮想化ストレージ装置１０００Ｒを優先度の高い仮想化ストレージ装置１０００とする。図２では、ボリューム３０００ＬＡ、３０００ＬＢはプライマリボリューム、ボリューム３０００ＲＡ、３０００ＲＢはセカンダリボリュームである。
【００３３】
本実施の形態のリモートコピーは、基本的機能は通常のリモートコピーと同等であるが、一部の機能が通常のリモートコピーと異なる。以下、本実施の形態の特徴的な機能を説明する。まず、本実施の形態のリモートコピーでは、プライマリボリュームとセカンダリボリュームのボリューム識別子を同じにする。すなわち、ボリューム３０００ＬＡとボリューム３０００ＲＡは、ＳＣＳＩのＩｎｑｕｉｒｙコマンドに対して、同じボリューム識別子を応答する。このようにすると、ホスト１１００の交替パスソフトは、本来違うボリュームである３０００ＬＡと３０００ＲＡを単一ボリュームと認識し、それぞれのボリュームを、その単一ボリュームに対する複数のアクセスパスと認識する。
【００３４】
さらに、アクセスパスの優先順位についても、プライマリボリュームではアクセスパスの優先順位を高く応答し、セカンダリボリュームではアクセスパスの優先順位を低く応答する。このようにすると、交替パスソフトは、優先順位の高いアクセスパスを使ってＩ／Ｏを処理するので、結果としてプライマリボリュームに対してＩ／Ｏリクエストを発行することになる。そして、交替パスソフトは、全ての高優先順位アクセスパスでＩ／Ｏが失敗したときのみ（すなわち、プライマリボリュームへのＩ／Ｏが失敗したときのみ）低優先順位アクセスパスを選択して、すなわち、セカンダリボリュームに対してＩ／Ｏリクエストを発行する。
【００３５】
本実施の形態のリモートコピーのセカンダリボリュームの特徴的機能は、ホスト１１００からＩ／Ｏリクエストを受領するとリモートコピーを停止して、Ｉ／Ｏ処理を開始することである。上記のボリューム識別子とアクセスパスの優先順位により、セカンダリボリュームに対してホストＩ／Ｏが発行されるということは、プライマリボリューム（すなわち、高優先順位のアクセスパス）へのＩ／Ｏが全て失敗したことを示している。ここで、セカンダリボリュームがＩ／Ｏリクエスト受領を契機にＩ／Ｏ処理を開始することにより、交替パスソフトは、低優先順位のアクセスパスを選択したらＩ／Ｏが成功したと判断する。これにより、一般的な交替パスソフトが持っている機能を利用して、仮想化ストレージ装置１０００のフェイルオーバーを実現できる。
【００３６】
このようにして、情報システム１００では、交替パスソフトには特殊な機能を持たせず、現状の交替パスソフトの機能に合わせて、仮想化ストレージ装置１０００Ｌ及び仮想化ストレージ装置１０００ＲがＩ／Ｏリクエストに対する応答を送信することにより、仮想化ストレージ装置１０００Ｌ及び仮想化ストレージ装置１０００Ｒの交替を実現する。
【００３７】
なお、各プログラムに基づくホスト１１００のプロセッサ１０１１の処理内容を明確化するため、アプリケーション２０１０、ＯＳ２０２０、交替パスソフトの各種処理の処理主体をプログラムとして説明したが、実際上は、そのプログラムに基づいてホスト１１００のプロセッサ１０１１がその処理を行うことは言うまでもない。
【００３８】
＜３．仮想ストレージ装置１０００で実行されるプログラム及び情報＞
図３は、仮想化ストレージ装置１０００（１０００Ｌ、１０００Ｒ）とストレージ装置１５００（１５００Ｌ、１５００Ｒ）とで実行されるプログラムと、当該プログラムにより管理される情報とについて示した図である。なお、当該プログラムはメモリ１０１２（図１）と、プロセッサ１０１１（図１）と、キャッシュメモリ１０２０とによって保持と実行がされるが、その一部をハードウェア化して実行してもよい。
【００３９】
＜３．１．Ｉ／Ｏ処理プログラム６０２０、パリティグループ情報６０６０及びボリューム情報６０５０＞
パリティグループ情報６０６０には、パリティグループ毎の以下の構成に関連する情報が含まれる。
（１）パリティグループを構成するＨＤＤ１０３０の識別子。パリティグループには複数のＨＤＤ１０３０が参加しているため、当該情報はパリティグループ毎に複数存在する。
（２）ＲＡＩＤレベル
【００４０】
また、ボリューム情報６０５０には、ボリューム毎の以下の構成に関連する情報が含まれる。
（１）ボリューム容量
（２）ボリュームに対応するデータが保存されるパリティグループの識別子とパリティグループ内の領域（開始アドレスと終了アドレスの片方又は両方）。
【００４１】
Ｉ／Ｏ処理プログラム６０２０は、ボリューム情報６０５０やパリティグループ情報６０６０を参照してホスト１１００から受信したＩ／Ｏリクエストに関する以下の処理を実行する。
【００４２】
（Ａ）ステージング： ＨＤＤ１０３０に保存されたデータをキャッシュメモリ１０２０上にコピーする。
（Ｂ）デステージング：キャッシュメモリ１０２０に保存されたデータをＨＤＤ１０３０へコピーする。なお、その前の処理としてＲＡＩＤ技術による冗長データを作成してもよい。
【００４３】
（Ｃ）リード処理：ホスト１１００から受信したリードリクエストに対して、当該リクエストに対応するデータがキャッシュメモリ１０２０上に存在するかどうか判定する。そして、当該リクエストに対応するデータがキャッシュメモリ１０２０上に存在しない場合は、ステージング処理を実行して当該データをキャッシュメモリ１０２０上にコピーした後に、そのデータをホスト１１００に対して送信する。なお、キャッシュメモリ１０２０上にかかるデータが存在する場合は、当該データをホスト１１００に対して送信する。
【００４４】
（Ｄ）ライト処理：ホスト１１００から受信したライトデータをキャッシュメモリ１０２０上に保存する。なお、当該処理時にキャッシュメモリ１０２０上に十分な空き領域が無い場合はデステージング処理を実行して適切なデータをＨＤＤ１０３０上にコピーした後にキャッシュメモリ１０２０上の当該領域を流用する。また既にキャッシュメモリ１０２０上に保存された領域がライトリクエストに含まれる場合は、そのまま既存のキャッシュメモリ１０２０上の領域へ上書きすることもある。
【００４５】
（Ｅ）キャッシュアルゴリズム：キャッシュメモリ１０２０上のデータの参照頻度や参照時期等を元にＬＲＵ等のアルゴリズムによってステージングすべきＨＤＤ１０３０上のデータやデステージングすべきキャッシュメモリ１０２０上のデータを決定する。
【００４６】
＜３．２．仮想化プログラム６０３０と仮想化情報６０７０＞
仮想化情報６０７０には、仮想化ボリューム毎の以下の構成に関連する情報が含まれる。
【００４７】
（１）ストレージ装置１５００内のボリューム内の領域とその領域が仮想ボリューム上のアドレス空間のどの領域としてホスト１１００に提供するかに関する以下の情報。仮想ボリュームが複数で構成される場合は下記情報も複数存在する。
（１−１）仮想ボリュームを構成する、ストレージ装置１５００の識別子（又はポートの識別子）と、ボリュームの識別子と、ボリューム内の領域（開始アドレスと終了アドレス）
（１−２）仮想ボリュームにおける領域（開始アドレスと終了アドレス）
【００４８】
（２）仮想ボリュームの容量
仮想化プログラム６０３０は、仮想化ストレージ装置１０００が、ストレージ装置１５００が提供するボリュームを用いてホスト１１００にボリュームを提供するためのプログラムである。なお、仮想化プログラム６０３０が提供する仮想ボリューム３０００Ｂと、それに対応するストレージ装置１５００上のボリューム３５００Ｂとの対応関係として、以下のパターンがある。
【００４９】
（Ａ）ストレージ装置１５００上のボリューム全体を仮想ボリューム３０００Ｂの記憶領域として用いる場合。この場合、仮想ボリュームの容量は選択したボリューム３５００Ｂとおおよそ同容量となる（制御情報や冗長情報をストレージ装置１５００上のボリュームに保存する場合。当該情報等がない場合は同一容量）。
（Ｂ）ストレージ装置１５００上のボリュームの一部の領域を仮想化ボリューム３０００Ｂに対応する保存領域として用いる場合。この場合、仮想ボリューム３０００Ｂの容量は当該利用対象の領域容量と大体同じとなる。
【００５０】
（Ｃ）複数のストレージ装置１５００上の複数のボリューム３５００Ｂを仮想ボリューム３０００Ｂの記憶領域として結合して用いる場合。この場合、仮想ボリューム３０００Ｂの容量は各ボリューム容量の合計値とおおよそ同容量となる。なお、この結合方式としてはストライピングやＣｏｎｃａｔｅｎａｔｅ（複数ボリュームを連結して一つのボリュームとして扱う方法）等がある。
（Ｄ）（Ｃ）のパターンに付随してパリティ情報やミラーデータを保存する場合。この場合、仮想ボリューム３０００Ｂの容量はミラーデータを保存する場合は（Ｃ）の半分で、パリティを保存する場合はパリティ計算方式に依存する。ストレージ装置１５００内部でＲＡＩＤによる高信頼化と組み合わせることによって仮想ボリューム３０００Ｂに保存されたデータについての信頼性がより向上する。
【００５１】
なお、いずれのパターンについても、Ｉ／Ｏリクエストで指定するストレージ装置識別子（又はポート識別子）とボリューム識別子（Ｉ／Ｏリクエストで用いる、仮想化ストレージ装置内又はポート配下のボリュームを識別する情報で、ＬＵＮ（Logical Unit Number）や、ＣＫＤ形式のＣＵ番号とＬＤＥＶ（Logical DEVice）番号等がある）が元々のボリュームと異なる。
【００５２】
仮想化プログラム６０３０は、ステージングやデステージング対象となるデータが仮想ボリュームに対応する場合にＩ／Ｏ処理プログラム６０２０により呼び出され、仮想化情報６０７０を用いて以下の処理を実行する。
【００５３】
（Ａ）ステージング： 仮想化ボリューム３０００Ｂとストレージ装置１５００のボリューム３５００Ｂの対応関係を元に、どのストレージ装置１５００のボリューム３５００Ｂに保存されたデータをキャッシュメモリ１０２０上にコピーすべきかを決定した後に、キャッシュメモリ１０２０上へデータコピーする。
【００５４】
（Ｂ）デステージング：仮想化ボリューム３０００Ｂとストレージ装置１５００のボリューム３５００Ｂの対応関係を元に、どのストレージ装置１５００のボリューム３５００Ｂへキャッシュメモリ１０２０上のデータをコピーすべきかを決定した後に、ストレージ装置１５００のボリューム３５００Ｂへデータコピーする。なお、その前の処理としてＲＡＩＤ技術による冗長データを作成してもよい。
【００５５】
＜３．３．リモートコピープログラム６０１０とコピーペア情報６０４０＞
コピーペア情報６０４０は、リモートコピーのプライマリボリュームとセカンダリボリュームのコピーペア（ペアと省略することがある）毎に以下の情報を持つ。なお、本実施の形態では、プライマリボリューム及びセカンダリボリュームは高可用性を実現する対象ボリュームが指定されることになる。
【００５６】
（１）プライマリボリュームを持つ仮想化ストレージ装置１０００の識別子及びボリュームの識別子
（２）セカンダリボリュームを持つ仮想化ストレージ装置１０００の識別子とボリュームの識別子
（３）コピーペアの状態（詳細は後ほど述べる）
【００５７】
リモートコピープログラム６０１０は、プライマリボリュームに保存されたデータをセカンダリボリュームにミラーリングするプログラムであり、コピーペア情報６０４０を参照して処理を行う。以下にリモートコピー（特に同期リモートコピー）の処理概要とペア状態について説明する。
【００５８】
＜３．３．１．同期リモートコピーのコピー処理動作＞
同期リモートコピーとは、前述の様に、コピー元の仮想化ストレージ装置１０００がホスト１１００からプライマリボリュームに対するライトリクエストを受け付けた場合、ライトデータをコピー先の仮想化ストレージ装置１０００に送信した後に、ホスト１１００に対してライトリクエスト完了を返すリモートコピー方法である。
【００５９】
同期リモートコピーが実行される際、プライマリボリュームとセカンダリボリュームとのペア間におけるリモートコピーの状況を管理１２００に表示したり、リモートコピーの状態を操作するために、仮想化ストレージ装置１０００のコントローラ１０１０は、コピーペア状態（Ｓｉｍｐｌｅｘ、Ｉｎｉｔｉａｌ‐Ｃｏｐｙｉｎｇ、Ｄｕｐｌｅｘ、Ｓｕｓｐｅｎｄ及びＤｕｐｌｅｘ‐Ｐｅｎｄｉｎｇ）と呼ばれる情報を管理する。図４に同期リモートコピーのペア状態に関する状態遷移図を示す。以下、各ペア状態について説明する。
【００６０】
＜３．３．１．１．Ｓｉｍｐｌｅｘ状態＞
Ｓｉｍｐｌｅｘ状態は、ペアを構成するプライマリボリュームとセカンダリボリュームとの間でコピーが開始されていない状態である。
【００６１】
＜３．３．１．２．Ｄｕｐｌｅｘ状態＞
Ｄｕｐｌｅｘ状態は、同期リモートコピーが開始され、後述する初期化コピーも完了してペアを構成するプライマリボリューム及びセカンダリボリュームのデータ内容が同一となった状態である。本状態では、書き込み途中の領域を除けば、プライマリボリュームのデータ及びセカンダリボリュームのデータの内容は同じとなる。なお、Ｄｕｐｌｅｘ中及びＤｕｐｌｅｘ‐Ｐｅｎｄｉｎｇ及びＩｎｉｔｉａｌ‐Ｃｏｐｙｉｎｇ状態ではホスト１１００からセカンダリボリュームへのライトリクエストは拒否される。
【００６２】
＜３．３．１．３．Ｉｎｉｔｉａｌ‐Ｃｏｐｙｉｎｇ状態＞
Ｉｎｉｔｉａｌ‐Ｃｏｐｙｉｎｇ状態は、Ｓｉｍｐｌｅｘ状態からＤｕｐｌｅｘ状態へ遷移するまでの中間状態であり、この期間中に、必要ならばプライマリボリュームからセカンダリボリュームへの初期化コピー（プライマリボリュームに既に格納されていたデータのセカンダリボリュームへのコピー）が行われる。初期化コピーが完了し、Ｄｕｐｌｅｘ状態へ遷移するために必要な処理が終わったら、ペア状態はＤｕｐｌｅｘとなる。
【００６３】
＜３．３．１．４．Ｓｕｓｐｅｎｄ状態＞
Ｓｕｓｐｅｎｄ状態は、プライマリボリュームに対する書き込みの内容をセカンダリボリュームに反映させない状態である。この状態では、ペアを構成しているプライマリボリューム及びセカンダリボリュームのデータの内容は同じでない。ユーザーやホスト１１００からの指示を契機に、ペア状態は他の状態からＳｕｓｐｅｎｄ状態へ遷移する。それ以外に、仮想化ストレージ装置１０００間のネットワーク障害等が原因で同期リモートコピーを行うことが出来なくなった場合に自動的にペア状態がＳｕｓｐｅｎｄ状態に遷移することが考えられる。
【００６４】
以後の説明では、後者の場合、即ち障害により生じたＳｕｓｐｅｎｄ状態を障害Ｓｕｓｐｅｎｄ状態と呼ぶことにする。障害Ｓｕｓｐｅｎｄ状態となる代表的な原因としてはネットワーク障害のほかに、プライマリボリュームやセカンダリボリュームの障害、コントローラ１０１０の障害が考えられる。
【００６５】
Ｓｕｓｐｅｎｄ状態となった場合、コピー元ストレージ１０００は、Ｓｕｓｐｅｎｄ状態となった時点以降にプライマリボリュームに対するライトリクエストがあると、ライトリクエストに従ってライトデータを受信し、プライマリボリュームに保存するが、コピー先の仮想化ストレージ装置１０００にはライトデータを送信しない。またコピー元の仮想化ストレージ装置１０００は、書き込まれたライトデータのプライマリボリューム上での書き込み位置を差分ビットマップ等として記憶する。
【００６６】
＜３．３．１．５．Ｄｕｐｌｅｘ‐Ｐｅｎｄｉｎｇ状態＞
Ｄｕｐｌｅｘ‐Ｐｅｎｄｉｎｇ状態は、Ｓｕｓｐｅｎｄ状態からＤｕｐｌｅｘ状態に遷移するまでの中間状態である。この状態では、プライマリボリューム及びセカンダリボリュームのデータの内容を一致させるために、プライマリボリュームからセカンダリボリュームへのデータのコピーが実行される。プライマリボリューム及びセカンダリボリュームのデータの内容が同一になった後、ペア状態はＤｕｐｌｅｘとなる。
【００６７】
なお、Ｄｕｐｌｅｘ‐Ｐｅｎｄｉｎｇ状態におけるデータのコピーは、Ｓｕｓｐｅｎｄ状態の間、コピー元の仮想化ストレージ装置１０００又はコピー先の仮想化ストレージ装置１０００が記録した書き込み位置（例えば上述の差分ビットマップ等）を利用して、更新が必要な部分（即ちプライマリボリュームとセカンダリボリュームとのデータの不一致部分）だけをコピーする差分コピーによって実行される。
【００６８】
また、以上の説明ではＩｎｉｔｉａｌ‐Ｃｏｐｙｉｎｇ状態とＤｕｐｌｅｘ‐Ｐｅｎｄｉｎｇ状態は別々な状態としたが、これらをまとめて一つの状態として管理ホスト１２００の画面に表示したり、状態を遷移させても良い。
【００６９】
＜４．ストレージ装置１５００で実行されるプログラム及び情報＞
図３には、ストレージ装置１５００にて実行されるプログラム及び情報について記されているが、それぞれのプログラム及び情報は仮想化ストレージ装置１０００と同様の動作を行う。
【００７０】
＜５．本実施の形態の特徴的構成＞
かかる構成に加えて、本実施の形態においては、情報システム１００の仮想化ストレージ装置１０００Ｌ、１０００Ｒと、障害検出用ストレージ装置１７００とが所定のネットワークを介して、相互に接続されることにより構成されている（図１）。なお、障害検出用ストレージ装置１７００のハードウェア構成は、仮想化ストレージ装置１０００と同種の部品から構成される。
【００７１】
障害検出用ストレージ装置１７００は、自身が有するＨＤＤ１０３０を構成要素とするパリティグループの一部又は全ての領域を障害検出用ボリューム１８００として仮想化ストレージ装置１０００Ｌ、１０００Ｒに提供する。この場合、仮想化ストレージ装置１０００Ｌ、１０００Ｒは、同一の障害検出用ボリューム１８００が障害検出用仮想ボリューム３０００Ｃとして提供されることとなる（図２）。
【００７２】
また、障害検出用ストレージ装置１７００は、情報システム１００内の構成要素に障害が発生しているか否かの障害情報を障害検出用ボリューム１８００に格納する。
【００７３】
さらに、障害検出用ストレージ装置１７００において実行されるプログラム及び情報については、後述する障害検出フラグに対して、仮想化ストレージ装置１０００と同様の動作を行う（図３）。
【００７４】
すなわち、障害検出用ストレージ装置１７００のＩ／Ｏ処理プログラム６２２０は、障害検出用ストレージ装置１７００のプロセッサ１０１１の制御に基づいて、仮想ストレージ装置１０００Ｌ、１０００Ｒからの命令に従って、障害検出フラグ（後述）をチェックしたり、障害検出フラグを該当する障害検出用ボリューム１８００にライト（格納）したり等の処理を実行する（図３）。
【００７５】
一方、仮想化ストレージ装置１０００Ｌ、１０００Ｒは、リモートコピーのプライマリボリュームとセカンダリボリュームのペアの形成時に、リモートコピーのプライマリボリュームとセカンダリボリュームのコピーペアと、障害検出用ボリューム１８００を関連付けて設定するために、コピーペア情報６０４０に、さらに、以下の（４）の情報を持つ。すなわち、本実施の形態におけるコピーペア情報６０４０は、以下の情報を持ち、これらが関連付けられて設定されていることとなる。
【００７６】
（１）プライマリボリュームを持つ仮想化ストレージ装置１０００の識別子及びボリュームの識別子
（２）セカンダリボリュームを持つ仮想化ストレージ装置１０００の識別子とボリュームの識別子
（３）コピーペアの状態
（４）障害検出用ボリューム（障害検出用仮想ボリューム３０００Ｃ）の識別子と障害情報が格納されたデータのアドレス
【００７７】
なお、本実施の形態における仮想化ストレージ装置１０００Ｌ、１０００ＲのＩ／Ｏ処理プログラム６０２０の特徴的な処理内容については、後述する。
【００７８】
次に、本実施の形態におけるリモートコピーの特徴的な処理であるＩ／Ｏリクエスト処理について説明する。本実施の形態におけるリモートコピーのＩ／Ｏリクエスト処理では、障害を回避しつつＩ／Ｏを処理するため、次の要件を満たすように処理を行う必要がある。
【００７９】
本実施の形態における情報システム１００では、第１に、当該情報システム１００における構成要素のうちの１に障害（単点障害）が発生した場合にも、ホスト１１００によるＩ／Ｏリクエストの再発行によりＩ／Ｏの処理を継続し、ホスト１１００に対してＩ／Ｏ失敗を応答しないようにすることが必要である。
【００８０】
すなわち、本実施の形態における情報システム１００の可用性を単一の仮想化ストレージ装置よりも高くするためには、単点障害が発生した場合にも、ホスト１１００におけるＩ／Ｏの処理が継続することができることが必要である。情報システム１００では、例えば、リモートコピーの失敗によりＩ／ＯリクエストそのものをＩ／Ｏ失敗としてホスト１１００に応答した場合には、仮想ストレージ装置１０００Ｌの単点障害によりホスト１１００におけるＩ／Ｏの処理が継続することができなくなる。従って、情報システム１００では、このような処理を回避する必要がある。
【００８１】
また、本実施の形態における情報システム１００では、第２に、当該情報システム１００における構成要素のうちの複数に障害（複合障害）が発生した場合にも、旧データに誤ってアクセスしないようにすることが必要である。なお、この場合のホスト１１００のＩ／Ｏの処理の継続可否は、問わない。
【００８２】
ここで、旧データとは、ホスト１１００が認識するボリューム３１００内のデータと齟齬のあるデータをいい、典型的な例としては、仮想ストレージ装置１０００Ｌ、１０００Ｒの間のリンクが切断された後に、仮想ストレージ装置１０００Ｌ（優先度の高い仮想化ストレージ装置１０００）が単独で運用されている場合における仮想ストレージ装置１０００Ｒのボリューム３０００ＲＡ内のデータが該当する。
【００８３】
すなわち、本実施の形態における情報システム１００は、プロダクション系及びバックアップ系の二重系システムであるため、複数の構成要素に障害が発生した場合には、障害部位によっては、ホスト１１００のＩ／Ｏの処理の継続が不可能となる場合もありえる。
【００８４】
このとき、情報システム１００では、単点障害が発生してから次の障害が発生するまでに時間がある場合、単点障害発生後に発行されたライトリクエストが反映されていないデータ（旧データ）が仮想ストレージ装置１０００Ｌ、１０００Ｒのいずれかに存在する場合があることとなる。
【００８５】
従って、情報システム１００では、ホスト１１００が旧データに誤ってアクセスすることを防止する必要がある。情報システム１００では、例えば、仮想ストレージ装置１０００Ｌ、１０００Ｒの間のリンクが切断される等の接続障害による単点障害が発生し、リモートコピーが失敗したときに（単点障害発生）、単純にＩ／Ｏリクエストを仮想ストレージ装置１０００Ｌ単独で処理する場合が考えられる。この場合、情報システム１００では、その後しばらくして仮想ストレージ装置１０００Ｌで障害が発生したときに（複合障害）、ホスト１１００が、仮想ストレージ装置１０００ＬへのＩ／Ｏ失敗を契機に仮想ストレージ装置１０００ＲにＩ／Ｏリクエストを再発行するため、仮想ストレージ装置１０００Ｒの旧データにアクセスしてしまうこととなる。
【００８６】
そこで、本実施の形態における情報システム１００では、仮想ストレージ装置１０００Ｌ、１０００Ｒに、ＳＣＳＩ規格のＲｅｓｅｒｖｅコマンドを処理可能な障害検出用ストレージ装置１７００を接続し、障害検出用ボリューム１８００を備える。
【００８７】
仮想ストレージ装置１０００Ｌは、障害を検出した場合、リモートコピーのプライマリボリュームとセカンダリボリュームのペアの形成時に設定した障害検出用ボリューム１８００（障害検出用仮想ボリューム３０００Ｃ）のサブブロックに障害を検出した旨を示す障害情報フラグをライトし、その後、ホスト１１００に対するＩ／Ｏの処理を継続する。
【００８８】
具体的に、仮想ストレージ装置１０００Ｌは、リモートコピーの失敗を検出すると、ホスト１１００にＩ／Ｏの応答をする前に、障害検出用ボリューム１８００をＲｅｓｅｒｖｅコマンドによりリザーブ（他の装置が障害検出用ボリューム１８００にアクセスできないように排他的に確保）する。
【００８９】
続いて、仮想ストレージ装置１０００Ｌは、リモートコピーのプライマリボリュームとセカンダリボリュームのペアの形成時に設定した障害検出用ボリューム１８００のサブブロックをリードし、障害情報フラグがライトされているか否かをチェックし、ライトされていない場合、当該サブブロックに障害情報フラグをライトする。
【００９０】
続いて、仮想ストレージ装置１０００Ｌは、Ｒｅｓｅｒｖｅ解除コマンドにより障害検出用ボリューム１８００のリザーブを解除し、障害Ｓｕｓｐｅｎｄ状態に遷移してリモートコピーを停止し、ホスト１１００に対するＩ／Ｏの処理を再開する。これに対して、仮想ストレージ装置１０００Ｌは、一定時間、障害検出用ボリューム１８００をリザーブすることができなかった場合、又は、既に他方の仮想ストレージ装置１０００Ｒにより障害情報フラグがライトされている場合、ホスト１１００に対してＩ／Ｏ失敗を応答する。
【００９１】
一方、仮想ストレージ装置１０００Ｒは、ホスト１１００からＩ／Ｏリクエストが発行されると、ホスト１１００に対するＩ／Ｏの処理を開始する前に、障害検出用ストレージ装置１７００の障害検出用ボリューム１８００（障害検出用仮想ボリューム３０００Ｃ）をチェックし、障害情報フラグがライトされていない場合にのみ、Ｉ／Ｏの処理を開始する。
【００９２】
具体的に、仮想ストレージ装置１０００Ｒは、ホスト１１００からＩ／Ｏリクエストが発行され、Ｉ／Ｏリクエストを受信すると、ホスト１１００にＩ／Ｏの応答を応答する前に、障害検出用ボリューム１８００をＲｅｓｅｒｖｅコマンドによりリザーブする。
【００９３】
続いて、仮想ストレージ装置１０００Ｒは、リモートコピーのプライマリボリュームとセカンダリボリュームのペアの形成時に設定した障害検出用ボリューム１８００のサブブロックをリードし、障害情報フラグがライトされているか否かをチェックし、ライトされていない場合、当該サブブロックに障害情報フラグをライトする。
【００９４】
続いて、仮想ストレージ装置１０００Ｒは、Ｒｅｓｅｒｖｅ解除コマンドにより障害検出用ボリューム１８００のリザーブを解除し、障害Ｓｕｓｐｅｎｄ状態に遷移してリモートコピーを停止し、セカンダリボリュームによりホスト１１００に対するＩ／Ｏの処理を開始する。これに対して、仮想ストレージ装置１０００Ｒは、一定時間、障害検出用ボリューム１８００をリザーブすることができなかった場合、又は、既に他方の仮想ストレージ装置１０００Ｌにより障害情報フラグがライトされている場合、障害Ｓｕｓｐｅｎｄ状態に遷移せず、ホスト１１００に対してＩ／Ｏ失敗を応答する。
【００９５】
＜６．仮想化ストレージ装置１０００のＩ／Ｏリクエスト処理＞
図５は、仮想化ストレージ装置１０００がＩ／Ｏリクエストを受信したときに、Ｉ／Ｏ処理プログラム６０２０を実行することにより行うリモートコピーの操作について示した図である。
【００９６】
（ＳＰ１）仮想化ストレージ装置１０００は、Ｉ／Ｏリクエストを受信する。
【００９７】
（ＳＰ２）仮想化ストレージ装置１０００は、Ｉ／Ｏリクエストが対象とするボリューム３０００Ａ、３０００Ｂがリモートコピーに関係するかどうか判断し、無関係の場合はＳＰ３を実行し、関係する場合はＳＰ４を実行する。
【００９８】
（ＳＰ３）仮想化ストレージ装置１０００は、該当するＩ／Ｏの処理を行い、ホスト１１００へＩ／Ｏ成功又はＩ／Ｏ失敗の応答を返して終了する。
【００９９】
（ＳＰ４）仮想化ストレージ装置１０００は、Ｉ／Ｏリクエストが対象とするリモートコピーのボリューム３０００Ａ、３０００Ｂの属性を判断し、プライマリボリュームの属性の場合はＳＰ５を実行し、セカンダリボリュームの属性の場合はＳＰ１３を実行する。なお、この場合、プライマリボリュームを持つ仮想化ストレージ装置１０００Ｌが優先順位の高い仮想化ストレージ装置１０００である。またなお、セカンダリボリュームを持つ仮想化ストレージ装置１０００ＲにＩ／Ｏリクエストが発行される場合には、プライマリボリュームを持つ仮想化ストレージ装置１０００Ｌに障害があった場合であり、この場合、リモートコピーが動作していないこととなる。
【０１００】
（ＳＰ５）仮想化ストレージ装置１０００は、Ｉ／Ｏリクエストが対象とするＩ／Ｏの内容を判断し、リードリクエストの場合はＳＰ３を実行し、ライトリクエストの場合はＳＰ６を実行する。
【０１０１】
（ＳＰ６）仮想化ストレージ装置１０００は、同期リモートコピー処理を実行し、仮想化ストレージ装置１０００Ｒへライトデータを転送し、応答を待つ。
【０１０２】
（ＳＰ７）仮想化ストレージ装置１０００は、同期リモートコピー処理が成功したかどうか判断し、成功ならばＳＰ１２を実行し、失敗ならばＳＰ８を実行する。
【０１０３】
（ＳＰ８）仮想化ストレージ装置１０００は、対象ボリュームがプライマリボリュームとなるリモートコピーのコピーペアの状態を障害Ｓｕｓｐｅｎｄ状態に遷移して、リモートコピーを停止する。なお、この場合、仮想化ストレージ装置１０００は、当該ボリュームに対するライトを禁止しない。
【０１０４】
（ＳＰ９）仮想化ストレージ装置１０００は、リモートコピーのプライマリボリュームとセカンダリボリュームのペアの形成時に設定した障害検出用ボリューム１８００のサブブロックに障害情報フラグをライトする。
【０１０５】
（ＳＰ１０）仮想化ストレージ装置１０００は、障害情報フラグのライトが成功したかどうか判断し、成功ならばＳＰ１２を実行し、失敗ならばＳＰ１１を実行する。なお、既に該当する障害検出用ボリューム１８００に障害情報フラグがライトされている場合には、他方の仮想化ストレージ装置１０００が障害情報フラグをライトしているため、ライトが失敗となる。また、他方の仮想化ストレージ装置１０００が障害情報フラグをライトしていない場合には、障害情報フラグをライトして、ライトが成功となる。
【０１０６】
（ＳＰ１２）仮想化ストレージ装置１０００は、Ｉ／Ｏの処理（ライト処理）を行い、ホスト１１００へＩ／Ｏ成功の応答を返して終了する。
【０１０７】
（ＳＰ１１）仮想化ストレージ装置１０００は、ホスト１１００へＩ／Ｏ失敗の応答を返して終了する。なお、この後、ホスト１１００がリトライしてもＩ／Ｏ失敗となる場合には、優先順位の低い仮想化ストレージ装置１０００である仮想化ストレージ装置１０００ＲにＩ／Ｏリクエストを発行する。
【０１０８】
（ＳＰ１３）仮想化ストレージ装置１０００は、対象ボリュームがセカンダリボリュームとなるリモートコピーのコピーペアの状態を障害Ｓｕｓｐｅｎｄ状態に遷移して、リモートコピーを停止する。なお、この場合、仮想化ストレージ装置１０００は、当該ボリュームに対するライトを禁止しない。
【０１０９】
（ＳＰ１４）仮想化ストレージ装置１０００は、リモートコピーのプライマリボリュームとセカンダリボリュームのペアの形成時に設定した障害検出用ボリューム１８００のサブブロックに障害情報フラグをライトする。
【０１１０】
（ＳＰ１５）仮想化ストレージ装置１０００は、障害情報フラグのライトが成功したかどうか判断し、成功ならばＳＰ１２を実行し、失敗ならばＳＰ１１を実行する。なお、既に該当する障害検出用ボリューム１８００に障害情報フラグがライトされている場合には、他方の仮想化ストレージ装置１０００が障害情報フラグをライトしているため、ライトが失敗となる。また、他方の仮想化ストレージ装置１０００が障害情報フラグをライトしていない場合には、障害情報フラグをライトして、ライトが成功となる。
【０１１１】
このようにして、情報システム１００では、仮想ストレージ装置１０００Ｌ、１０００Ｒにおいて、管理ホスト１２００等の外部からの指示に応じて、プライマリボリュームとセカンダリボリュームのコピーペアをそれぞれコピーペア情報６０４０に設定すると共に、当該コピーペアに障害検出用ボリューム１８００を関連付け、ホスト１１００において、プライマリボリュームへのＩ／Ｏリクエストが失敗した場合に、セカンダリボリュームに対するＩ／Ｏリクエストを仮想化ストレージ装置１０００Ｒに送信し、仮想ストレージ装置１０００Ｌ、１０００Ｒにおいて、相手側の仮想化ストレージ装置１０００Ｒ、１０００Ｌの障害、又は仮想化ストレージ装置１０００Ｌ、１０００Ｒ間の接続障害を検出した場合に、障害情報フラグを障害検出用ボリューム１８００に格納する。
【０１１２】
従って、プライマリボリュームへのＩ／Ｏリクエストが失敗したときに、セカンダリボリュームにＩ／Ｏリクエストが送信されるため、プライマリボリュームとのリモートコピーがなされておらず、セカンダリボリュームのデータが最新でないことから、最新でないセカンダリボリュームのデータによりホスト１１００のＩ／Ｏリクエストに対する処理を実行するのを未然かつ有効に防止することができる。
【０１１３】
また、情報システム１００では、仮想化ストレージ装置１０００Ｒにおいて、ホスト１１００からＩ／Ｏリクエストを受信したときに、当該Ｉ／Ｏリクエストに対応するコピーペアに関連付けられた障害検出用ボリューム１８００に、障害情報フラグがライトされているか否かを判断し、障害情報フラグがライトされている場合、Ｉ／Ｏリクエストの失敗の応答を送信する。
【０１１４】
従って、プライマリボリュームへのＩ／Ｏリクエストが失敗したときに、セカンダリボリュームにＩ／Ｏリクエストが送信されるため、プライマリボリュームとのリモートコピーがなされておらず、セカンダリボリュームのデータが最新でないことから、最新でないセカンダリボリュームのデータによりホスト１１００のＩ／Ｏリクエストに対する処理を実行するのを未然かつ有効に防止することができる。
【０１１５】
また、情報システム１００では、仮想化ストレージ装置１０００Ｌにおいて、セカンダリボリュームへのリモートコピーの失敗を検出した場合、障害検出用ボリューム１８００に障害情報フラグがライトされているか否かを判断し、障害情報フラグがライトされていない場合、障害情報フラグを障害検出用ボリューム１８００にライトした後、Ｉ／Ｏリクエストに対応した処理を実行する。
【０１１６】
従って、仮想化ストレージ装置１０００Ｌに障害が発生した場合であっても、プライマリボリュームとのリモートコピーがなされておらず、セカンダリボリュームのデータが最新でないことを、仮想化ストレージ装置１０００Ｒに通知することができる。
【０１１７】
また、情報システム１００では、仮想化ストレージ装置１０００Ｌにおいて、前記障害情報フラグがライトされている場合、Ｉ／Ｏリクエストの失敗応答を送信する。
【０１１８】
従って、障害情報フラグが障害検出用ボリューム１８００にライトされている場合、何らかの要因ですでにセカンダリボリュームによる単独運用が開始されていることを示しているため、プライマリボリュームのデータが最新でないことから、最新でないプライマリボリュームのデータによりホスト１１００のＩ／Ｏリクエストに対する処理を実行するのを未然かつ有効に防止することができる。
【０１１９】
なお、本実施の形態においては、仮想化ストレージ装置１０００Ｌ、１０００Ｒに対して、同一の障害検出用ボリューム１８００を障害検出用仮想ボリューム３０００Ｃとして提供して、障害検出用ボリューム１８００にアクセスした場合について述べたが、本発明はこれに限らず、障害検出用仮想ボリューム３０００Ｃを提供せずに、仮想化ストレージ装置１０００Ｌ、１０００Ｒが、直接、障害検出用ストレージ装置１７００の障害検出用ボリューム１８００にアクセスするようにしても良く、その他種々の方法を適用することができる。
【図面の簡単な説明】
【０１２０】
【図１】図１は、本実施の形態の情報システムのハードウェア構成の一例を示すブロック図である。
【図２】図２は、本実施の形態の概要を示す概念図である。
【図３】図３は、仮想化ストレージ装置、ストレージ装置及び障害検出用ストレージ装置上のソフトウェア構成を表したブロック図である。
【図４】図４は、リモートコピーのペア状態とペア状態の遷移を表した概念図である。
【図５】図５は、Ｉ／Ｏリクエスト処理を示したフローチャートである。
【図６】図６は、Ｉ／Ｏリクエスト処理を示したフローチャートである。
【符号の説明】
【０１２１】
１００……情報システム、１０００……仮想化ストレージ装置、１０１０……コントローラ、１０１１……プロセッサ、１０２０……キャッシュメモリ、１０３０……ＨＤＤ、１１００……ホスト、１５００……ストレージ装置、１７００……障害検出用ストレージ装置、１８００……障害検出用ボリューム、２０１０……アプリケーションプログラム、３０００……ボリューム
【図１】
0005222617.tif 000002
【図２】
0005222617.tif 000003
【図３】
0005222617.tif 000004
【図４】
0005222617.tif 000005
【図５】
0005222617.tif 000006
【図６】
0005222617.tif 000007