(57)【要約】【課題】  別々の物理記憶デバイス上に用意されたコピー元ボリュームとコピー先ボリュームの両方を上位装置に認識させることができ、且つ、それが原因で上位装置に異常が発生してしまうことのないようにすることにある。【解決手段】  ホストコンピュータＨＡ１などに、論理ボリューム２１２の提供を受けるターゲットプログラム３と、論理ボリューム２１２に対するインターフェースをターゲットプログラム３に提供するボリュームインターフェースプログラム１２Ａと、コピー元ボリューム２１２Ａ及びコピー先ボリューム２１２Ｂのうちの一方の論理ボリュームを選択し、選択した論理ボリュームを、ボリュームインターフェースプログラム１２Ａを介してターゲットプログラム３に提供するボリュームフィルタプログラム１２Ｂとが備えられる。【選択図】図１
2006011874.tif 000002
【特許請求の範囲】
【請求項１】
複数の論理ボリュームのうちの少なくとも一つを提供するボリューム提供システムにおいて、
複数の論理ボリュームが、二以上の物理ディスク上に準備され、データのコピー元となるコピー元ボリュームと、データのコピー先となるコピー先ボリュームとを含んでおり、
前記二以上の物理ディスクが、一以上の第一物理ディスクと、前記第一の物理ディスクとは別の一以上の第二物理ディスクとを含んでおり、
前記コピー元ボリュームが、前記一以上の第一物理ディスクに備えられており、
前記コピー先ボリュームが、前記一以上の第二物理ディスクに備えられており、
前記ボリューム提供システムが、
１以上のコンピュータプログラムを格納する記憶域と、
前記記憶域から前記１以上のコンピュータプログラムのうちの少なくとも１つを読み込み、前記読み込んだコンピュータプログラムに従う処理を実行する１以上のプロセッサと
を備え、
前記ボリューム提供システムの前記１以上のコンピュータプログラムは、
論理ボリュームの提供を受けるターゲットプログラムと、
論理ボリュームに対するインターフェースを前記ターゲットプログラムに提供するボリュームインターフェースプログラムと、
前記コピー元ボリューム及び前記コピー先ボリュームのうちの一方の論理ボリュームを選択し、前記選択した論理ボリュームを、前記ボリュームインターフェースプログラムを介して前記ターゲットプログラムに提供するボリュームフィルタプログラムと
を含んでいる、
ボリューム提供システム。
【請求項２】
前記１以上のプロセッサの少なくとも１つが、
前記コピー元ボリュームに対応したコピー元スタックを準備し、
前記コピー先ボリュームに対応したコピー先スタックを準備し、
前記コピー元スタックに、前記コピー元ボリュームに対応した第１のボリュームインターフェースプログラムと第１のボリュームフィルタプログラムとを呼び出し、
前記コピー先スタックに、前記コピー先ボリュームに対応した第２のボリュームインターフェースプログラムと第２のボリュームフィルタプログラムとを呼び出し、
前記第１のボリュームフィルタプログラムを介して前記ターゲットプログラムに論理ボリュームを提供するようにし、且つ、前記第２のボリュームフィルタプログラムを前記ターゲットプログラムに対して隠蔽し、
前記コピー元ボリュームを前記ターゲットプログラムに提供する場合、前記第１のボリュームフィルタプログラムから前記第１のボリュームインターフェースプログラムを介して前記ターゲットプログラムに前記コピー元ボリュームを提供し、
前記コピー先ボリュームを前記ターゲットプログラムに提供する場合、前記第２のボリュームフィルタプログラムから前記第１のボリュームフィルタプログラムを介し、且つ、前記第１のボリュームフィルタプログラムから前記第１のボリュームインターフェースプログラムを介して、前記ターゲットプログラムに前記コピー先ボリュームを提供する、
請求項１記載のボリューム提供システム。
【請求項３】
前記第１のボリュームフィルタプログラム及び前記第２のボリュームフィルタプログラムは、論理ボリュームからデータを読み出す或いは論理ボリュームにデータを書込むためのＩ／Ｏ要求を受信し、
前記第１のボリュームフィルタプログラム及び前記第２のボリュームフィルタプログラムの各々が、どのボリュームフィルタプログラムから論理ボリュームに対してＩ／Ｏ要求を発行するかを表した第１のボリューム管理データを取得し、前記取得した第１のボリューム管理データが自分を表している場合には、前記受信したＩ／Ｏ要求を、自分に対応した論理ボリュームに対して発行し、一方、前記取得した第１のボリューム管理データが他のボリュームフィルタプログラムを表している場合には、前記受信したＩ／Ｏ要求を前記他のボリュームフィルタプログラムに送信する、
請求項２記載のボリューム提供システム。
【請求項４】
前記第１のボリュームフィルタプログラム及び前記第２のボリュームフィルタプログラムは、論理ボリュームからデータを読み出す或いは論理ボリュームにデータを書込むためのＩ／Ｏ要求を論理ボリュームに発行した場合、何らかのレスポンスデータを受信し、
前記第１のボリュームフィルタプログラム及び前記第２のボリュームフィルタプログラムの各々が、どのボリュームフィルタプログラムから上位に対して前記レスポンスデータを送信するかを表した第２のボリューム管理データを取得し、前記取得した第２のボリューム管理データが自分を表している場合には、前記受信したレスポンスデータを、自分の上位に送信し、一方、前記取得した第２のボリューム管理データが他のボリュームフィルタプログラムを表している場合には、前記受信したレスポンスデータを前記他のボリュームフィルタプログラムに送信する、
請求項２記載のボリューム提供システム。
【請求項５】
前記１以上のコンピュータプログラムには、論理ボリュームからデータを読み出す或いは論理ボリュームにデータを書込むためのＩ／Ｏ要求を所定のプロトコルに従って生成するＩ／Ｏ生成プログラムが更に含まれ、
前記ボリュームフィルタプログラムには、
前記Ｉ／Ｏ生成プログラムによって生成されたＩ／Ｏ要求を、自分の下位に存在する論理ボリューム又は別の下位フィルタサブプログラムに振り分ける下位フィルタサブプログラムと、
論理ボリュームをボリュームインターフェースに提供するか隠蔽するかを制御する上位フィルタサブプログラムと
が含まれ、
前記１以上のプロセッサの少なくとも１つが、前記コピー元スタック及び前記コピー先の各々に、下位から上位にかけて、前記下位フィルタサブプログラム、前記Ｉ／Ｏ生成プログラム、前記上位フィルタサブプログラム及び前記ボリュームインターフェースを順次読み出して積み上げる、
請求項２記載のボリューム提供システム。
【請求項６】
前記ボリュームフィルタプログラムを読込んだ少なくとも１つのプロセッサが、前記コピー元ボリュームに関連した異常を検出した場合に、前記ターゲットプログラムに提供する論理ボリュームを、前記コピー元ボリュームから前記コピー先ボリュームに切り替える、
請求項１記載のボリューム提供システム。
【請求項７】
前記１以上のコンピュータプログラムには、前記ターゲットプログラムに提供される論理ボリュームを別の論理ボリュームに切り替えることのボリューム切替え選択をユーザから受け付けるためのグラフィカルユーザインターフェースを表示する表示プログラムが含まれ、
前記ボリュームフィルタプログラムを読込んだ少なくとも１つのプロセッサが、前記グラフィカルユーザインターフェースを介してユーザから前記ボリューム切替え選択が入力された場合に、前記ターゲットプログラムに提供する論理ボリュームを、前記コピー元ボリュームから前記コピー先ボリュームに切り替える、
請求項１記載のボリューム提供システム。
【請求項８】
複数の論理ボリュームのうちの少なくとも一つを提供するボリューム提供方法において、
前記複数の論理ボリュームが、二以上の物理ディスク上に準備され、データのコピー元となるコピー元ボリュームと、データのコピー先となるコピー先ボリュームとを含んでおり、
前記二以上の物理ディスクが、一以上の第一物理ディスクと、前記第一の物理ディスクとは別の一以上の第二物理ディスクとを含んでおり、
前記コピー元ボリュームが、前記一以上の第一物理ディスクに備えられており、
前記コピー先ボリュームが、前記一以上の第二物理ディスクに備えられており、
論理ボリュームの提供を受けるターゲットプログラムと、論理ボリュームに対するインターフェースを前記ターゲットプログラムに提供するボリュームインターフェースプログラムとが存在し、
前記ボリューム提供方法が、
前記コピー元ボリューム及び前記コピー先ボリュームのうちの一方の論理ボリュームを選択するステップと、
前記選択した論理ボリュームを、前記ボリュームインターフェースプログラムを介して前記ターゲットプログラムに提供するステップと
を有するボリューム提供方法。
【請求項９】
コンピュータに実行させるためのコンピュータプログラムを記録したコンピュータ読取り可能な記録媒体において、
前記コンピュータが、複数の論理ボリュームのうちの少なくとも一つの提供を受けるターゲットプログラムと、論理ボリュームに対するインターフェースを前記ターゲットプログラムに提供するボリュームインターフェースプログラムとを有し、
複数の論理ボリュームが、二以上の物理ディスク上に準備され、データのコピー元となるコピー元ボリュームと、データのコピー先となるコピー先ボリュームとを含んでおり、
前記二以上の物理ディスクが、一以上の第一物理ディスクと、前記第一の物理ディスクとは別の一以上の第二物理ディスクとを含んでおり、
前記コピー元ボリュームが、前記一以上の第一物理ディスクに備えられており、
前記コピー先ボリュームが、前記一以上の第二物理ディスクに備えられており、
前記コンピュータプログラムは、
前記コピー元ボリューム及び前記コピー先ボリュームのうちの一方の論理ボリュームを選択するステップと、
前記選択した論理ボリュームを、前記ボリュームインターフェースプログラムを介して前記ターゲットプログラムに提供するステップと
をコンピュータに実行させるためのコンピュータプログラムである、
記録媒体。
【請求項１０】
複数の論理ボリュームのうちの少なくとも一つを提供するボリューム提供システムにおいて、
複数の論理ボリュームが、二以上の物理ディスク上に準備され、データのコピー元となるコピー元ボリュームと、データのコピー先となるコピー先ボリュームとを含んでおり、
前記二以上の物理ディスクが、一以上の第一物理ディスクと、前記第一の物理ディスクとは別の一以上の第二物理ディスクとを含んでおり、
前記コピー元ボリュームが、前記一以上の第一物理ディスクに備えられており、
前記コピー先ボリュームが、前記一以上の第二物理ディスクに備えられており、
前記ボリューム提供システムが、
論理ボリュームの提供を受けるボリューム受け手段と、
論理ボリュームに対するインターフェースを前記ボリューム受け手段に提供するボリュームインターフェース手段と、
前記コピー元ボリューム及び前記コピー先ボリュームのうちの一方の論理ボリュームを選択し、前記選択した論理ボリュームを、前記ボリュームインターフェース手段を介して前記ボリューム受け手段に提供するボリュームフィルタ手段と
を備えるボリューム提供システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションソフトウェア等のコンピュータプログラムに記憶デバイスを提供するための技術に関わる。
【背景技術】
【０００２】
例えば、特許文献１（特開平１１−３２７８０３号公報）や特許文献２（特開２００２−２３６５６０号公報）に開示されているように、従来、複数の論理ボリュームを１つの大型のユニットとして上位装置に提供することができる記憶制御システムが知られている。
【０００３】
【特許文献１】特開平１１−３２７８０３号公報
【特許文献２】特開２００２−２３６５６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、例えば、第１の物理ディスク上に用意された第１の論理ボリュームと、第２の物理ディスク上に用意された第２の論理ボリュームとをペアにし、一方をコピー元ボリュームとし、他方をコピー先ボリュームとし、コピー元ボリューム内のデータをコピー先ボリュームにコピーするデータコピー技術が知られている。このデータコピー技術では、例えば、コピー元ボリュームのみが上位装置のオペレーティングシステム（ＯＳ）に認識され、それのペア相手であるコピー先ボリュームはそのＯＳに認識されないようになっている。コピー元ボリュームとコピー先ボリュームの両方を同時にＯＳに認識させると、そのＯＳが正常に動作できない可能性があるためである。例えば、コピー元ボリュームもコピー先ボリュームも「Ｃドライブ」としてＯＳに認識させてしまうと、ＯＳが正常に動作できない可能性がある。
【０００５】
しかし、データコピー技術において、コピー元ボリュームのみならず、コピー先ボリュームをもＯＳ（及び／又は、その上位に存在するアプリケーションソフトウェア）に認識させることが望ましい場合もあると考えられる。
【０００６】
従って、本発明の目的は、別々の物理記憶デバイス上に用意されたコピー元ボリュームとコピー先ボリュームの両方を上位装置に認識させることができ、且つ、それが原因で上位装置に異常が発生してしまうことのないようにすることにある。
【０００７】
本発明のさらなる目的は、後述する実施形態の記載から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本発明の第１の側面に従うボリューム提供システムは、例えば以下の環境において構築することができる。
【０００９】
複数の論理ボリュームが、二以上の物理ディスク上に準備され、データのコピー元となるコピー元ボリュームと、データのコピー先となるコピー先ボリュームとを含んでいる。前記二以上の物理ディスクが、一以上の第一物理ディスクと、前記第一の物理ディスクとは別の一以上の第二物理ディスクとを含んでいる。前記コピー元ボリュームが、前記一以上の第一物理ディスクに備えられている。前記コピー先ボリュームが、前記一以上の第二物理ディスクに備えられている。
【００１０】
このような環境において、本発明の第１の側面に従うボリューム提供システムは、１以上のコンピュータプログラムを格納する記憶域と、前記記憶域から前記１以上のコンピュータプログラムのうちの少なくとも１つを読み込み、前記読み込んだコンピュータプログラムに従う処理を実行する１以上のプロセッサとを備える。前記１以上のコンピュータプログラムには、論理ボリュームの提供を受けるターゲットプログラムと、論理ボリュームに対するインターフェースを前記ターゲットプログラムに提供するボリュームインターフェースプログラムと、前記コピー元ボリューム及び前記コピー先ボリュームのうちの一方の論理ボリュームを選択し、前記選択した論理ボリュームを、前記ボリュームインターフェースプログラムを介して前記ターゲットプログラムに提供するボリュームフィルタプログラムとが含まれている。
【００１１】
１つの論理ボリュームは、１又は複数の物理ディスク上に備えられても良いし、或いは、複数の論理ボリュームが、一つの物理ディスク上に備えられても良い。また、上述した複数の論理ボリュームの全部又は一部は、ボリューム提供システムの外部に備えられても良いし、ボリューム提供システムそれ自体に備えられても良い。
【００１２】
本発明の第１の側面に従う第１の実施態様では、例えば、前記１以上のプロセッサの少なくとも１つが、以下の処理を実行する。すなわち、前記１以上のプロセッサの少なくとも１つが、前記コピー元ボリュームに対応したコピー元スタックを準備し、前記コピー先ボリュームに対応したコピー先スタックを準備し、前記コピー元スタックに、前記コピー元ボリュームに対応した第１のボリュームインターフェースプログラムと第１のボリュームフィルタプログラムとを呼び出し、前記コピー先スタックに、前記コピー先ボリュームに対応した第２のボリュームインターフェースプログラムと第２のボリュームフィルタプログラムとを呼び出し、前記第１のボリュームフィルタプログラムを介して前記ターゲットプログラムに論理ボリュームを提供するようにし、且つ、前記第２のボリュームフィルタプログラムを前記ターゲットプログラムに対して隠蔽し、前記コピー元ボリュームを前記ターゲットプログラムに提供する場合、前記第１のボリュームフィルタプログラムから前記第１のボリュームインターフェースプログラムを介して前記ターゲットプログラムに前記コピー元ボリュームを提供し、前記コピー先ボリュームを前記ターゲットプログラムに提供する場合、前記第２のボリュームフィルタプログラムから前記第１のボリュームフィルタプログラムを介し、且つ、前記第１のボリュームフィルタプログラムから前記第１のボリュームインターフェースプログラムを介して、前記ターゲットプログラムに前記コピー先ボリュームを提供する。
【００１３】
本発明の第１の側面に従う第２の実施態様では、前記第１の実施態様において、例えば、前記第１のボリュームフィルタプログラム及び前記第２のボリュームフィルタプログラムは、論理ボリュームからデータを読み出す或いは論理ボリュームにデータを書込むためのＩ／Ｏ要求を受信する。前記第１のボリュームフィルタプログラム及び前記第２のボリュームフィルタプログラムの各々が、どのボリュームフィルタプログラムから論理ボリュームに対してＩ／Ｏ要求を発行するかを表した第１のボリューム管理データを取得し、前記取得した第１のボリューム管理データが自分を表している場合には、前記受信したＩ／Ｏ要求を、自分に対応した論理ボリュームに対して発行し、一方、前記取得した第１のボリューム管理データが他のボリュームフィルタプログラムを表している場合には、前記受信したＩ／Ｏ要求を前記他のボリュームフィルタプログラムに送信する。
【００１４】
本発明の第１の側面に従う第３の実施態様では、前記第１の実施態様において、例えば、前記第１のボリュームフィルタプログラム及び前記第２のボリュームフィルタプログラムは、論理ボリュームからデータを読み出す或いは論理ボリュームにデータを書込むためのＩ／Ｏ要求を論理ボリュームに発行した場合、何らかのレスポンスデータを受信する。前記第１のボリュームフィルタプログラム及び前記第２のボリュームフィルタプログラムの各々が、どのボリュームフィルタプログラムから上位に対して前記レスポンスデータを送信するかを表した第２のボリューム管理データを取得し、前記取得した第２のボリューム管理データが自分を表している場合には、前記受信したレスポンスデータを、自分の上位に送信し、一方、前記取得した第２のボリューム管理データが他のボリュームフィルタプログラムを表している場合には、前記受信したレスポンスデータを前記他のボリュームフィルタプログラムに送信する。
【００１５】
本発明の第１の側面に従う第４の実施態様では、前記第１の実施態様において、例えば、前記１以上のコンピュータプログラムには、論理ボリュームからデータを読み出す或いは論理ボリュームにデータを書込むためのＩ／Ｏ要求を所定のプロトコルに従って生成するＩ／Ｏ生成プログラムが更に含まれる。前記ボリュームフィルタプログラムには、前記Ｉ／Ｏ生成プログラムによって生成されたＩ／Ｏ要求を、自分の下位に存在する論理ボリューム又は別の下位フィルタサブプログラムに振り分ける下位フィルタサブプログラムと、論理ボリュームをボリュームインターフェースに提供するか隠蔽するかを制御する上位フィルタサブプログラムとが含まれる。前記１以上のプロセッサの少なくとも１つが、前記コピー元スタック及び前記コピー先の各々に、下位から上位にかけて、前記下位フィルタサブプログラム、前記Ｉ／Ｏ生成プログラム、前記上位フィルタサブプログラム及び前記ボリュームインターフェースを順次読み出して積み上げる。
【００１６】
本発明の第１の側面に従う第５の実施態様では、前記ボリュームフィルタプログラムを読込んだ少なくとも１つのプロセッサが、前記コピー元ボリュームに関連した異常を検出した場合に、前記ターゲットプログラムに提供する論理ボリュームを、前記コピー元ボリュームから前記コピー先ボリュームに切り替える。
【００１７】
本発明の第１の側面に従う第６の実施態様では、前記１以上のコンピュータプログラムには、前記ターゲットプログラムに提供される論理ボリュームを別の論理ボリュームに切り替えることのボリューム切替え選択をユーザから受け付けるためのグラフィカルユーザインターフェースを表示する表示プログラムが含まれる。前記ボリュームフィルタプログラムを読込んだ少なくとも１つのプロセッサが、前記グラフィカルユーザインターフェースを介してユーザから前記ボリューム切替え選択が入力された場合に、前記ターゲットプログラムに提供する論理ボリュームを、前記コピー元ボリュームから前記コピー先ボリュームに切り替える。
【００１８】
本発明の第２の側面に従うボリューム提供方法は、例えば以下の環境において行われる。
【００１９】
複数の論理ボリュームが、二以上の物理ディスク上に準備され、データのコピー元となるコピー元ボリュームと、データのコピー先となるコピー先ボリュームとを含んでいる。前記二以上の物理ディスクが、一以上の第一物理ディスクと、前記第一の物理ディスクとは別の一以上の第二物理ディスクとを含んでいる。前記コピー元ボリュームが、前記一以上の第一物理ディスクに備えられている。前記コピー先ボリュームが、前記一以上の第二物理ディスクに備えられている。
【００２０】
この環境において、上記ボリューム提供方法は、前記コピー元ボリューム及び前記コピー先ボリュームのうちの一方の論理ボリュームを選択するステップと、前記選択した論理ボリュームを、前記ボリュームインターフェースプログラムを介して前記ターゲットプログラムに提供するステップとを有する。
【００２１】
本発明の第３の側面に従う記録媒体に記録されたコンピュータプログラムは、例えば以下の環境において実行することができる。
【００２２】
複数の論理ボリュームが、二以上の物理ディスク上に準備され、データのコピー元となるコピー元ボリュームと、データのコピー先となるコピー先ボリュームとを含んでいる。前記二以上の物理ディスクが、一以上の第一物理ディスクと、前記第一の物理ディスクとは別の一以上の第二物理ディスクとを含んでいる。前記コピー元ボリュームが、前記一以上の第一物理ディスクに備えられている。前記コピー先ボリュームが、前記一以上の第二物理ディスクに備えられている。また、コンピュータが、論理ボリュームの提供を受けるターゲットプログラムと、論理ボリュームに対するインターフェースを前記ターゲットプログラムに提供するボリュームインターフェースプログラムとを有する。
【００２３】
この場合、上記記録媒体には、前記コピー元ボリューム及び前記コピー先ボリュームのうちの一方の論理ボリュームを選択するステップと、前記選択した論理ボリュームを、前記ボリュームインターフェースプログラムを介して前記ターゲットプログラムに提供するステップとをコンピュータに実行させるためのコンピュータプログラムが記録されている。
【００２４】
本発明の第４の側面に従うボリューム提供システムは、例えば以下の環境において構築することができる。
【００２５】
複数の論理ボリュームが、二以上の物理ディスク上に準備され、データのコピー元となるコピー元ボリュームと、データのコピー先となるコピー先ボリュームとを含んでいる。前記二以上の物理ディスクが、一以上の第一物理ディスクと、前記第一の物理ディスクとは別の一以上の第二物理ディスクとを含んでいる。前記コピー元ボリュームが、前記一以上の第一物理ディスクに備えられている。前記コピー先ボリュームが、前記一以上の第二物理ディスクに備えられている。
【００２６】
上記ボリューム提供システムは、論理ボリュームの提供を受けるボリューム受け手段と、論理ボリュームに対するインターフェースを前記ボリューム受け手段に提供するボリュームインターフェース手段と、前記コピー元ボリューム及び前記コピー先ボリュームのうちの一方の論理ボリュームを選択し、前記選択した論理ボリュームを、前記ボリュームインターフェース手段を介して前記ボリューム受け手段に提供するボリュームフィルタ手段とを備える。
【００２７】
上述した手段或いはステップの全部または一部は、例えば、ハードウェア、コンピュータプログラム或いはそれらの組合せによって実現することができる。コンピュータプログラムは、例えば、ハードディスク、光ディスク、半導体メモリ等の記憶媒体に固定して配布することができる。または、コンピュータプログラムをインターネット等の通信ネットワークを介して、配信することもできる。
【００２８】
また、上述したボリューム提供システムは、１台のコンピュータマシン（例えばパーソナルコンピュータ或いはサーバ）内で構築しても良いし、通信ネットワークに接続された複数台のコンピュータマシン上で構築しても良い。
【発明を実施するための最良の形態】
【００２９】
以下、図面に基づき、本発明の実施の形態を説明する。
【００３０】
図１Ａ及び図１Ｂは、本発明の一実施形態の概念を示す。具体的には、図１Ａは、コピー元ボリューム２１２Ａが提供される場合の概念図であり、図１Ｂは、コピー先ボリューム２１２Ｂが提供される場合の概念図である。
【００３１】
複数の論理的な記憶デバイス（以下、論理ボリューム）２１２から構成されるボリュームグループ４が１又は複数個備えられる。ボリュームグループ４を構成する複数の論理ボリュームは、それぞれ、複数の物理記憶デバイス２に用意されている。ボリュームグループ４を構成する複数の論理ボリューム２１２のうち、１つが、コピー元ボリューム２１２Ａであり、他の１つ以上が、コピー先ボリューム２１２Ｂである。
【００３２】
所定の記憶域（例えばメモリ或いはハードディスク等の記憶装置上の領域）５に、ボリューム管理情報６が存在する。ボリューム管理情報６は、複数の論理ボリューム２１２の各々に関する情報要素を含んでいる。例えば、ボリューム管理情報６に含まれる情報要素としては、各論理ボリューム２１２毎に、どのボリュームグループ４に属するか、ボリュームＩＤ、ボリュームへのパス情報（例えば、アクセスパス名）、利用可能か否か、ペア相手ボリュームのＩＤ、及びペア状態（例えばコピー元とコピー先のどちらか）のうちの少なくとも１つが採用される。
【００３３】
ボリュームを認識するターゲットプログラム（例えばＯＳ或いはその上位にあるアプリケーションプログラム）３が存在する。
【００３４】
また、ボリューム管理コンピュータプログラム群１１１０が備えられる。ボリューム管理コンピュータプログラム群１１１０は、１又は複数のコンピュータプログラムを備えている。ボリューム管理コンピュータプログラム群１１１０は、例えば、ターゲットプログラム３に対してボリューム２１２のインターフェースを提供するボリュームＩ／Ｆプログラム（以下、「ボリュームＩ／Ｆ」と略記）１２Ａと、ボリュームＩ／Ｆ１２Ａを介してターゲットプログラム３にボリュームを提供したり隠蔽したりするボリュームフィルタプログラム（以下、「ボリュームフィルタ」と略記）１２Ｂとを有する。ボリューム管理コンピュータプログラム群１１１０は、同一のボリュームグループ４における複数の論理ボリューム２１２のうちのどれをターゲットプログラム３に提供するかを制御する。
【００３５】
例えば、図１Ａに示すように、ボリューム管理コンピュータプログラム群１１１０は、ボリューム管理情報６に基づいて、コピー元ボリューム２１２Ａをターゲットプログラム３に提供する。この場合、ボリューム管理コンピュータプログラム群１１１０は、コピー先ボリューム２１２Ｂを認識することができるが、そのコピー先ボリューム２１２Ｂを、ターゲットプログラム３には提供することなく隠蔽する。換言すれば、ターゲットプログラム３は、ボリュームＩ／Ｆ１２Ａを介してコピー元ボリューム２１２Ａを認識するが、コピー先ボリューム２１２Ｂを認識しない。
【００３６】
また、例えば、図１Ｂに示すように、ボリューム管理コンピュータプログラム群１１１０は、コピー元ボリューム２１２Ａそれ自体或いはそれとボリューム管理コンピュータプログラム群１１１０との間のパス等で異常が発生した場合には、ターゲットプログラム３に提供するボリュームを、コピー元ボリューム２１２Ａからコピー先ボリューム２１２Ｂに切替える。この場合、ボリュームフィルタ２１２Ｂが、コピー先ボリューム２１２Ｂをターゲットプログラム３に提供し、コピー元ボリューム２１２Ａを提供するのをやめる（つまり、ターゲットプログラム３にコピー元ボリューム２１２Ａを隠蔽する）。換言すれば、ターゲットプログラム３は、同一のボリュームＩ／Ｆ１２Ａを介してコピー先ボリューム２１２Ｂを認識し、今まで認識していたコピー元ボリューム２１２Ａを認識しないことになる。
【００３７】
なお、図１Ｂの場合、提供したコピー先ボリューム２１２Ｂのペア状態（ボリューム管理情報６に含まれる一つの情報要素）を、コピー先からコピー元に変更し、且つ、隠蔽したコピー元ボリューム２１２Ａのペア状態を、コピー元からコピー先に変更しても良い。また、ボリューム管理コンピュータプログラム群１１１０は、隠蔽するコピー元ボリューム２１２Ａ内のデータを、提供するコピー先ボリューム２１２Ｂにコピーした後に、コピー先ボリューム２１２Ｂをターゲットプログラム３に提供しても良い。
【００３８】
上述した各種の構成要素は、通信ネットワーク上に配置することができる。例えば、ターゲットプログラム３及びボリューム管理コンピュータプログラム群１１１０は、一つの上位装置に備えることもできるし、複数の上位装置に分散して備えることもできる。また、ボリューム管理情報６は、上位装置に備えても良いし、別のノードに備えても良い。また、ボリュームグループ４を構成する複数の論理ボリューム２１２は、同一の記憶制御システム（例えばＲＡＩＤシステム）に備えられても良いし、２以上の記憶制御システムに分散して備えられても良い。
【００３９】
以下、本実施形態に係る幾つかの実施例を説明する。
【実施例１】
【００４０】
図２は、ストレージシステムの全体概要を示すブロック図である。このストレージシステムは、例えば、第１サイト１０Ａと、第２サイト１０Ｂとを備えており、各サイト１０Ａ，１０Ｂ間は、通信ネットワークＣＮ１２，ＣＮ１３によって接続されている。なお、ストレージシステムは３つ以上のサイトから構成することもできる。
【００４１】
第１サイト１０Ａと第２サイト１０Ｂとは、例えば、別々の都市に設置することができる。また、第１サイト１０Ａと第２サイト１０Ｂとは、例えば、同一行政区画に位置する異なる地点に設置することもできる。さらに、第１サイト１０Ａと第２サイト１０Ｂとは、例えば、同一敷地内のそれぞれ異なる建物内に設けることもできる。
【００４２】
第１サイト１０Ａと第２サイト１０Ｂとは、基本的に同一構造を備える。ディザスタリカバリシステムとしての機能を発揮可能であれば、両サイト１０Ａ，１０Ｂは異なる構成であってもよい。一つの例として、第１サイト１０Ａは、図外のクライアントマシンに対して情報処理サービスを提供する現用系サイト（稼働系サイト）である。第２サイト１０Ｂは、第１サイト１０Ａに障害が発生した場合にバックアップするバックアップサイト（待機系サイト）である。
【００４３】
もっとも、サイト全体を稼働系または待機系として使用する必要はなく、情報処理サービスを提供するアプリケーションプログラム毎に、稼働系サイトと待機系サイトとをそれぞれ設定してもよい。例えば、第１のアプリケーションプログラムの稼働系サイトを第１サイト１０Ａとし、第２のアプリケーションプログラムの稼働系サイトを第２サイト１０Ｂとすることもできる。
【００４４】
第１サイト１０Ａは、複数のホストコンピュータＨＡ１，ＨＡｎと、記憶制御システム２０Ａとを備えている。各ホストコンピュータＨＡ１，ＨＡｎは、例えば、マイクロコンピュータを用いたサーバマシンとして構成される。
【００４５】
記憶制御システム２０Ａは、例えば、ディスクアレイサブシステムとして構成することができる。記憶制御システム２０Ａは、後述のように、複数の論理ボリューム２１２を備えており、これらの論理ボリューム２１２は、ホストコンピュータＨＡ１，ＨＡｎによって利用される。
【００４６】
各ホストコンピュータＨＡ１，ＨＡｎは、サイト内の通信ネットワークＣＮ１１を介して、記憶制御システム２０Ａと接続されている。この通信ネットワークＣＮ１１は、例えば、SAN（Storage Area Network）として構成され、ファイバチャネルプロトコルに従ってデータ通信を行う。
【００４７】
各ホストコンピュータＨＡ１，ＨＡｎは、ホストコンピュータ間を相互に接続する通信ネットワークＣＮ１２を介して、それぞれ接続されている。また、第１サイト１０Ａの各ホストコンピュータＨＡ１，ＨＡｎは、通信ネットワークＣＮ１２を介して、第２サイト１０Ｂの各ホストコンピュータＨＢ１，ＨＢｎとも相互に接続されている。このホストコンピュータ間の通信ネットワークＣＮ１２は、例えば、インターネット、LAN（Local Area Network）、WAN（Wide Area Netwrok）、MAN（Metropolitan Area Network）等のようなネットワークとして構成され、TCP/IP（Transmission Control Protocol/Internet Protocol）等に基づいてデータ通信を行う。
【００４８】
第２サイト１０Ｂも、上述した第１サイト１０Ａと同様に、複数のホストコンピュータＨＢ１，ＨＢｎと、記憶制御システム２０Ｂとを備えている。これらの構成は、第１サイト１０Ａで述べたと同様であるので、その説明を省略する。
【００４９】
ここで、記憶制御システム２０Ａと記憶制御システム２０Ｂとは、記憶装置間ネットワークとしてのリモートコピーラインＣＮ１３によって直接的に接続されている。リモートコピーラインＣＮ１３は、例えば、専用線または公衆回線により構成される。
【００５０】
なお、サイト内ネットワークＣＮ１１は、ファイバチャネルプロトコル（SCSI：Small Computer System Interface）を用いる構成に限らず、例えば、iSCSIのように、SCSIコマンドをIPパケットで包み込み、ブロックレベルのデータ転送をＩＰ網で実行する構成でもよい。
【００５１】
さて、以下、ホストコンピュータＨＡ１及び記憶制御システム２０Ａを代表的に例に採り説明する。なお、以下のホストコンピュータＨＡ１及び記憶制御システム２０Ａについての説明は、他のホストコンピュータ及び他の記憶制御システムにも適用することができる。
【００５２】
ホストコンピュータＨＡ１は、例えば、CPU３１０と、メモリ３２０と、ディスク３３０と、ディスクインターフェース（以下「Ｉ／Ｆ」）３４０と、上位ネットワークＩ／Ｆ３５０と、キーボードスイッチ３６０と、ディスプレイ３７０とを備え、これら各部はバス３８０により相互に接続されている。
【００５３】
CPU（Central Processing Unit）３１０は、メモリ３２０に記憶されているプログラムコードを読み込んで実行する。CPU３１０が所定のプログラムコードを実行することにより、クラスタ制御やリモートコピー制御等の各処理または機能がホストコンピュータＨＡ１上に実現される。
【００５４】
メモリ３２０は、例えば、ROM（Read Only Memory）やRAM（Random Access Memory）等から構成される。図中では、ROMとRAMの区別をしていないが、実際には、プログラムコード等を格納するROMと、一時的記憶領域や作業領域等として使用されるRAMとが設けられる。ディスク３３０は、例えば、ハードディスクドライブとして構成される。ディスク３３０には、例えば、プログラムやデータが記憶される。また、ディスク３３０の一部の記憶領域は、一時ファイルを格納するために使用される場合もある。
【００５５】
ディスクＩ／Ｆ３４０は、サイト内ネットワークＣＮ１１を介して、記憶制御システム２０Ａとの間のデータ授受を制御する回路である。ディスクＩ／Ｆ３４０は、例えば、SCSIやiSCSI等に基づいて、ブロックレベルのデータ転送を制御する。上位ネットワークＩ／Ｆ３５０は、ホストコンピュータ間ネットワークＣＮ１２を介して、他のホストコンピュータ（ＨＡｎ，ＨＢ１〜ＨＢｎ）との間のデータ授受を制御する回路である。上位ネットワークＩ／Ｆ３５０は、例えば、IP（Internet Protocol）に基づいて、データ転送を制御する。
【００５６】
キーボードスイッチ３６０は、情報入力手段の一例であり、システム管理者は、キーボードスイッチ３６０を介して、必要な指示等を入力することができる。ディスプレイ３７０は、情報出力手段の一例であり、例えば、CRT（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ、プラズマディスプレイ、EL（Electronic Luminescent）ディスプレイ等から構成される。ディスプレイ３７０には、システム管理者からの明示の要求に応じて、あるいは自発的に、種々の情報が表示される。なお、これらに限らず、例えば、音声入力装置、音声出力装置、ポインティングデバイス、プリンタ等を用いてもよい。
【００５７】
記憶制御システム２０Ａのハードウェア構成を説明する。記憶制御システム２０Ａは、例えば、RAIDグループ２１０と、ディスク制御部２２０と、ホストＩ／Ｆ２３０と、装置間Ｉ／Ｆ２４０と、キャッシュメモリ２５０と、共有メモリ２６０と、スイッチング制御部２７０と、サービスプロセッサ（SVP）２８０と、を備えて構成される。
【００５８】
RAID（Redundant Array of Independent
Disks）グループ２１０は、複数のディスクドライブ２１１を含んでおり、例えば、RAID１やRAID５等のRAIDに基づく冗長記憶を提供する。各ディスクドライブ２１１は、例えば、ハードディスクドライブ、半導体メモリ装置、光ディスクドライブ、光磁気ディスクドライブ等の記憶デバイスから構成することができる。各ディスクドライブ２１１が提供する物理的な記憶領域上には、論理的な記憶領域である論理ボリューム２１２を少なくとも一つ以上設定可能である。論理ボリューム２１２には、ホストコンピュータＨから利用される多数のデータが記憶される。また、別の論理ボリューム２１２には、制御情報等を格納し、システム領域として利用することもできる。なお、ディスクドライブ２１１は、その全てが記憶制御システム２０Ａの筐体内に位置する必要はない。例えば、同一サイト内に設置された他の記憶制御システム（不図示）が有する論理ボリュームを、記憶制御システム２０Ａの論理ボリュームとして使用することもできる。以下の説明では、論理ボリュームを「ボリューム」と省略して記載する場合がある。
【００５９】
ディスク制御部２２０は、各ディスクドライブ２１１との間のデータ授受を制御するものである。ディスク制御部２２０は、例えば、CPUやROM、RAM等を含んだマイクロコンピュータシステムとして構成される。ディスク制御部２２０は、記憶制御システム２０Ａ内に複数設けられる。ディスク制御部２２０は、例えば、SCSIやiSCSI等に基づいて、ディスクドライブ２１１との間でブロックレベルのデータ転送を行う。
【００６０】
ホストＩ／Ｆ２３０は、サイト内ネットワークＣＮ１１を介して、ホストコンピュータＨとの間のデータ転送を制御するものである。ホストＩ／Ｆ２３０は、ディスク制御部２２０と同様に、マイクロコンピュータシステムとして構成可能である。ホストＩ／Ｆ２３０は、ホストコンピュータＨの種類（サーバかメインフレームか等）に応じて、それぞれ用意することができる。なお、本実施例では、ホストコンピュータＨをサーバとして構成する場合を例に挙げて説明するが、メインフレームであってもよい。
【００６１】
装置間Ｉ／Ｆ２４０は、リモートコピーラインＣＮ１３を介して、他のサイト１０Ｂの記憶制御システム２０Ｂとの間でデータ通信を行うものである。装置間Ｉ／Ｆ２４０は、論理ボリューム２１２に書き込まれた更新データや差分データを、ホストコンピュータＨを介さずに、相手方の記憶制御システム２０Ｂに転送する。
【００６２】
キャッシュメモリ２５０は、例えば、揮発または不揮発の半導体メモリから構成することができる。キャッシュメモリ２５０は、ホストコンピュータＨからのライトデータ（論理ボリュームに書き込まれるデータ）を記憶する。また、キャッシュメモリ２５０は、論理ボリューム２１２から読み出されたデータ（以下、リードデータ）を記憶する。
【００６３】
共有メモリ２６０は、例えば、不揮発または揮発の半導体メモリから構成することができる。共有メモリ２６０は、例えば、ホストコンピュータＨから受信した各種コマンドや、記憶制御システム２０Ａの制御に使用する制御情報等を記憶する。これらのコマンドや制御情報等は、複数の共有メモリ２６０によって、冗長記憶される。なお、キャッシュメモリ２５０と共有メモリ２６０とは、それぞれ別々のメモリとして構成することもできるし、あるいは、一つのメモリの一部をキャッシュメモリ領域として使用し、残りを共有メモリ領域として使用することもできる。
【００６４】
スイッチング制御部２７０は、各ディスク制御部２２０と、各ホストＩ／Ｆ２３０と、装置間Ｉ／Ｆ２４０と、キャッシュメモリ２５０と、共有メモリ２６０とを、それぞれ相互に接続するものである。スイッチング制御部２７０は、例えば、超高速クロスバスイッチ等から構成することができる。
【００６５】
SVP２８０は、ホストＩ／Ｆ２３０を介して、記憶制御システム２０Ａ内の各部の状態を収集し監視する。SVP２８０は、収集した内部状態の情報を生データのままで、あるいは、統計処理したデータとして、外部の管理端末（不図示）に出力する。SVP２８０が収集可能な情報としては、例えば、装置構成、電源アラーム、温度アラーム、入出力速度（IOPS）等が挙げられる。システム管理者は、管理端末からSVP２８０を介して、RAID構成の設定変更や、各種パッケージ（ホストＩ／Ｆ、ディスク制御部等）の閉塞処理等を行うことができる。
【００６６】
次に、記憶制御システム２０Ａが行う処理の一例について説明する。ホストＩ／Ｆ２３０は、サイト内ネットワークＣＮ１１を介して、ホストコンピュータＨからライトコマンド及びライトデータを受信する。受信されたライトコマンドは共有メモリ２６０に記憶され、受信されたライトデータはキャッシュメモリ２５０に記憶される。ディスク制御部２２０は、共有メモリ２６０を随時参照している。ディスク制御部２２０は、共有メモリ２６０に記憶されている未処理のライトコマンドを発見すると、このライトコマンドに従って、キャッシュメモリ２５０からライトデータを読み出し、アドレス変換等を行う。ディスク制御部２２０は、ライトコマンドによって指定された論理ボリューム２１２を構成する各ディスクドライブ２１１に、ライトデータを記憶させる。
【００６７】
ホストコンピュータＨからのリード要求を処理する場合を説明する。ホストＩ／Ｆ２３０は、ホストコンピュータＨからリードコマンドを受信すると、このリードコマンドを共有メモリ２６０に記憶させる。ディスク制御部２２０は、共有メモリ２６０内で未処理のリードコマンドを発見すると、このリードコマンドによって指定された論理ボリューム２１２を構成する各ディスクドライブ２１１からデータを読み出す。ディスク制御部２２０は、読み出したデータをキャッシュメモリ２５０に記憶させる。また、ディスク制御部２２０は、要求されたデータの読出しが完了した旨を、共有メモリ２６０を介して、ホストＩ／Ｆ２３０に通知する。ホストＩ／Ｆ２３０は、キャッシュメモリ２５０からデータを読み込み、ホストコンピュータＨに送信する。
【００６８】
以上が、本実施例に係るストレージシステムにおけるハードウェア構成例である。なお、言うまでも無いが、サイト、ホストコンピュータＨＡ１及び記憶制御システム２０Ａのいずれも、上述した構成に限定する必要は無い。
【００６９】
さて、以下、ホストコンピュータＨＡ１内で動作する種々のコンピュータプログラムについて説明する。なお、以下の説明では、ホストコンピュータＨＡ１から出力されるライトコマンド及びリードコマンドの少なくとも一方を指す場合には「Ｉ／Ｏ要求」と総称する。
【００７０】
図３は、ホストコンピュータＨＡ１内で動作する種々のコンピュータプログラムを示す。
【００７１】
ホストコンピュータＨＡ１には、ウィンドウズ（登録商標）或いはリナックス（登録商標）等のオペレーティングシステム（以下、ＯＳ）１１３０や、ＯＳ１１３０上で動作する１又は複数のアプリケーションプログラム（以下、ＡＰ）や、後述するコピー制御を行うためのコピー制御モジュール３６００が搭載されている。各コンピュータプログラム１１３０、３５００及び３６００は、例えば、ディスク３３０に格納されており、そのプログラムの全部又は一部が、ＣＰＵ３１０にメモリ３２０を介して読込まれることにより、そのコンピュータプログラムに特有の処理が実行される。
【００７２】
１又は複数のＡＰには、ボリューム管理を行うためのボリューム管理ＡＰ４０００と、それ以外のＡＰ（以下、第２ＡＰ）３５００とがある。
【００７３】
ＯＳ１１３０には、サブコンピュータプログラムとして、例えば、ボリュームモジュール３０００と、物理ディスクモジュール３２００が搭載されている。そして、本実施例では、更に、以下のサブコンピュータプログラム、すなわち、下位ディスク管理フィルタドライバ３３００、上位ディスク管理フィルタドライバ３１００及び管理モジュール３４００が搭載される。本実施例では、ＯＳ１１３０において、最下位に、下位ディスク管理フィルタドライバ３３００が位置し、その上位に、物理ディスクモジュール３２００が位置し、その上位に、上位ディスク管理フィルタドライバ３１００が位置し、その上位に、ボリュームモジュール３０００が位置するように構成される。管理モジュール３４００は、下位ディスク管理フィルタドライバ３３００及び上位ディスク管理フィルタドライバ３１００を制御したり、ボリューム管理ＡＰ４０００からの入力に基づく制御を行ったり、コピーの実行をコピー制御モジュール３６００に指示したりする。コピー制御モジュール３６００は、管理モジュール３４００からの指示に応答して、その指示に従うコピー処理、例えば、シャドウイメージコピー或いはリモートコピーを実行するためのコピー制御コマンドを記憶制御システム２０Ａに送信する。ここで、「シャドウイメージコピー」とは、同一の記憶制御システム２０Ａ内において、コピー元ボリュームからコピー先ボリュームへデータコピーを行うことを言う。それに対して、「リモートコピー」とは、第１の記憶制御システム２０Ａ内のコピー元ボリュームから、その記憶制御システム２０Ａとは別の（例えば遠隔の）記憶制御システム２０Ｂ内のコピー先論理ボリュームへデータコピーを行うことを言う。
【００７４】
以上が、ホストコンピュータＨＡ１に搭載されるコンピュータプログラムの一例である。管理コンピュータ３４００、上位ディスク管理フィルタドライバ３１００及び下位ディスク管理フィルタドライバ３３００のうちの少なくとも一つが、一体になっていても良い。また、管理コンピュータ３４００、上位ディスク管理フィルタドライバ３１００及び下位ディスク管理フィルタドライバ３３００のうちの少なくとも一つが、上述したボリューム管理コンピュータプログラム群１１１０（図１参照）を構成しても良い。
【００７５】
ところで、上述した説明によれば、ＯＳ１１３０には、ボリュームモジュール３０００及び物理ディスクモジュール３２００に加えて、下位ディスク管理フィルタドライバ３３００、上位ディスク管理フィルタドライバ３１００及び管理モジュール３４００が搭載されるが、これらのサブコンピュータプログラムにより、ホストコンピュータＨＡ１に対し、コピー元ボリュームとコピー先ボリュームの両方を提供することができ、且つ、それらのうちのいずれを提供するかをソフトウェア的に選択することができる。以下、それについて詳述する。
【００７６】
本実施例では、例えば、管理モジュール３４００が使用する情報として、ボリュームペアを構成していないプール状態の論理ボリュームに関する情報が記述されたプール管理テーブルと、ボリュームペアに関する情報が記述されたペア管理テーブルとが準備される。それらのテーブルは、例えば、管理モジュール３４００に保持させることができる。管理モジュール３４００は、それらのテーブルをメモリ３２０に登録して使用することができる。
【００７７】
図４は、プール管理テーブルの構成例を示す。
【００７８】
プール管理テーブルＴ１には、ホストコンピュータＨＡ１に提供可能な複数の論理ボリュームのうち、ボリュームペアを構成していないプール状態の１以上の論理ボリュームの各々に関するボリューム情報が登録される。論理ボリュームのボリューム情報には、例えば、その論理ボリュームにアクセスする際に指定する通信ポートのターゲットＩＤ、その論理ボリュームが属するロジカルユニット番号（ＬＵＮ）、ＲＡＩＤ情報（例えば、その論理ボリュームを構成するＲＡＩＤグループのＲＡＩＤレベル）及びその論理ボリュームの番号が含まれる。
【００７９】
管理モジュール３４００（或いはその他のコンピュータプログラム）は、このプール管理テーブルＴ１を参照することにより、ホストコンピュータＨＡ１に提供可能な複数の論理ボリュームのうちのどの論理ボリュームがボリュームペアを構成していないかを判別することができる。
【００８０】
図５は、ペア管理テーブルの構成例を示す。
【００８１】
ペア管理テーブルＴ２には、ホストコンピュータＨＡ１に提供可能な複数の論理ボリュームのうち、ボリュームペアを構成している論理ボリュームに関する情報、換言すれば、各ボリュームペア毎の情報が登録される。具体的には、例えば、ペア管理テーブルＴ２には、各ボリュームペア毎に、ボリュームペアを特定するためのペアＩＤと、第１のボリューム情報群及び第２のボリューム情報群が登録される。それぞれのボリューム情報群には、コピー元或いはコピー先のボリュームに関するボリューム情報と、ペア状態と、利用可フラグとが含まれる。ボリューム情報は、プール管理テーブルＴ１に登録されるボリューム情報と同種の情報を含んでいる。ペア状態は、対応する論理ボリュームの状態であり、例えば、ペア分割状態、コピー元状態及びコピー先状態のうちのいずれかである（各状態については後に詳述する）。利用可フラグは、対応する論理ボリュームが利用可能か否かを表す。なお、本実施形態では、原則として、第１のボリューム情報群の欄に登録された情報に該当するボリュームが、第２ＡＰ３５００に対して認識されるボリュームであって、第２のボリューム情報群の欄に登録された情報に該当するボリュームが、第２ＡＰ３５００に対して隠蔽されるボリュームであるとする。
【００８２】
管理モジュール３４００（或いはその他のコンピュータプログラム）は、このペア管理テーブルＴ２を参照することにより、ホストコンピュータＨＡ１に提供可能な複数の論理ボリュームのうちのどの２つの論理ボリュームによってボリュームペアが形成されているかを判別することができる。また、管理モジュール３４００（或いはその他のコンピュータプログラム）は、ペア管理テーブルＴ２を参照することにより、各ボリュームペア毎に、そのボリュームペアを構成する２つの論理ボリュームはそれぞれ利用可能か否かを判別することができる。
【００８３】
上述したプール管理テーブルＴ１及びペア管理テーブルＴ２には、記憶制御システム２０Ａ（及び／又は他の記憶制御システム２０Ｂ）に存在する全ての又は一部の論理ボリュームについて情報が登録される。
【００８４】
図６は、ボリュームペアを構成する第１と第２のボリュームのうち第１のボリュームが第２ＡＰ３５００に対して提供される場合の複数のサブコンピュータプログラム間の連携例を示す。
【００８５】
その連携例を説明する前に、まず、ホストコンピュータＨＡ１においてどのように上記複数のサブコンピュータプログラムが構築されるかを説明する。
【００８６】
管理モジュール３４００が、プール管理テーブルＴ１及びペア管理テーブルＴ２を参照して、記憶制御システム２０Ａ（及び／又は他の記憶制御システム２０Ｂ）に存在する複数の論理ボリュームにそれぞれ対応した複数のプログラムスタックを準備する。具体的には、例えば、管理モジュール３４００は、或るボリュームペアについて、第１のボリューム２１２Ａに対応したプログラムスタックＳＴ１と、第２のボリューム２１２Ｂに対応したプログラムスタックＳＴ２とを準備する。
【００８７】
そして、管理モジュール３４００は、下位ディスク管理フィルタドライバ３３００、物理ディスクモジュール３２００、上位ディスク管理フィルタドライバ３１００及びボリュームモジュール３０００の順で、サブコンピュータプログラムを各プログラムスタックＳＴ１、ＳＴ２に呼び出す。これにより、各プログラムスタックＳＴ１、ＳＴ２毎に、そのプログラムスタックに対応した論理ボリュームに専用のデバイスドライバが構築される。なお、図６では、プログラムスタックＳＴ１に呼び出されたサブコンピュータプログラムに枝符号として「ａ」を付し、プログラムスタックＳＴ２に呼び出されたサブコンピュータプログラムに枝符号として「ｂ」を付す。以下、枝符号ａの側のサブコンピュータプログラムを代表的に例に採り説明する。
【００８８】
ボリュームモジュール３０００ａは、上位ディスク管理フィルタドライバ３１００ａによって、ボリューム認識の対象とされたボリュームを、第２ＡＰ３５００に提供する。また、ボリュームモジュール３０００ａは、第２ＡＰ３５００からのライト要求或いはリード要求を受けて、それを下位の上位ディスク管理フィルタドライバ３１００ａに通知する。
【００８９】
上位ディスク管理フィルタドライバ３１００ａは、自分に対応するボリューム２１２Ａを第２ＡＰ３５００に対して認識させるか或いは隠蔽するかの指示を管理モジュール３４００から受け、受けた指示に応じて、自分に対応するボリューム２１２Ａを上位に認識させるか或いは隠蔽するかを決定する。その他、上位ディスク管理フィルタドライバ３１００ａは、上位からのライト要求或いはリード要求を下位の物理ディスクモジュール３２００ａに送ったり、下位からのデータを上位に送ったりする。
【００９０】
物理ディスクモジュール３２００ａは、上位からのライト要求或いはリード要求を、所定のフォーマットのコマンド（例えば、ＳＣＳＩプロトコルに基づく後述のＩ／Ｏ要求）に変換して、下位の下位ディスク管理フィルタドライバ３３００ａに送信する。その他、物理ディスクモジュール３２００ａは、下位からのデータを上位に送ることも行う。
【００９１】
下位ディスク管理フィルタドライバ３３００ａは、上位からのＩ／Ｏ要求を、自分に対応するボリューム２１２Ａを宛先として記憶制御システム２０Ａに送信するか、或いは、別の下位ディスク管理フィルタドライバ３３００ａに転送するかを制御する。その制御は、後述の下位ディスク制御情報（図１３参照）を参照することにより行われる。その他、下位ディスク管理フィルタドライバ３３００ａは、発行したＩ／Ｏ要求に対する戻り値（例えば成功或いは失敗というステータスコード）を、上位に送信するか、或いは、別の下位ディスク管理フィルタドライバ３３００ａに転送するかを制御する。この制御も、後述の下位ディスク制御情報（図１３参照）を参照することにより行われる。
【００９２】
この第一実施例において、例えば、第２ＡＰ３５００にボリュームを認識させているボリュームモジュール３０００ａがライト要求或いはリード要求を受けた場合、ボリュームモジュール３０００ａは、同一のプログラムスタックＳＴ１内にいる下位の上位ディスク管理フィルタドライバ３１００ａに、そのライト要求或いはリード要求を送る。上位ディスク管理フィルタドライバ３１００ａは、同一のプログラムスタックＳＴ１内にいる下位の物理ディスクモジュール３２００ａに、そのライト要求或いはリード要求を送る。物理ディスクモジュール３２００ａは、そのライト要求或いはリード要求をＩ／Ｏ要求に変換し、そのＩ／Ｏ要求を、同一のプログラムスタックＳＴ１内にいる下位ディスク管理フィルタドライバ３３００ａに送る。下位ディスク管理フィルタドライバ３３００ａは、後述の下位ディスク制御情報を参照し、Ｉ／Ｏ発行下位ドライバデータとして自分が設定されていれば、自分に対応したボリューム２１２Ａを宛先とするＩ／Ｏ要求を発行する。
【００９３】
下位ディスク管理フィルタドライバ３３００ａは、記憶制御システム２０Ａからデータを受けた場合（例えば後述のＩ／Ｏ要求の戻り値を受けた場合）、後述の下位ディスク制御情報を参照し、ボリューム認識下位ドライバデータとして自分が設定されていれば、その受けたデータを上位に流す。それにより、そのデータが、同一のプログラムスタックＳＴ１内において、上位に流れていく。
【００９４】
図７は、図６において、第２ＡＰ３５００に対して提供される論理ボリュームが第１のボリュームから第２のボリュームに切り替わった場合の連携例を示す。
【００９５】
図６において、下位ディスク管理フィルタドライバ３３００ａは、Ｉ／Ｏを発行する場合、Ｉ／Ｏ発行下位ドライバデータ（図１３参照）として別の下位ディスク管理フィルタドライバ３３００ｂが設定されていれば、そのドライバ３３００ｂに、Ｉ／Ｏ要求を送る。この場合、そのドライバ３３００ｂが、同様に、自分の下位ディスク制御情報におけるＩ／Ｏ発行下位ドライバデータを参照し、そのデータとして自分が設定されていれば、自分に対応するボリューム２１２Ｂを宛先とするＩ／Ｏ要求を発行する。
【００９６】
また、別の下位ディスク管理フィルタドライバ３３００ｂは、記憶制御システム２０Ａからデータを受けた場合、自分に対応する後述の下位ディスク制御情報を参照し、ボリューム認識下位ドライバデータとして、下位ディスク管理フィルタドライバ３３００ａが設定されていれば、その受けたデータを、下位ディスク管理フィルタドライバ３３００ａに渡す。この場合、下位ディスク管理フィルタドライバ３３００ａが、同様に、自分の下位ディスク制御情報におけるボリューム認識下位ドライバデータを参照し、そのデータとして自分が設定されていれば、受けたデータを、同一のプログラムスタックＳＴ１内における上位の物理ディスクモジュール３２００に送信する。
【００９７】
図８は、ボリュームが取り得る各種のペア状態とこれら各ペア状態間での遷移を模式的に示す状態遷移図である。図８に示すように、コピーの対象となるボリュームのペア状態としては、例えば、「ペア分割状態」、「コピー元状態」及び「コピー先状態」の３種類を挙げることができる。
【００９８】
「ペア分割状態」とは、コピーの対象となっていない状態を示す。「ペア分割状態」のボリュームに対して、このボリュームに繋がるホストコンピュータＨＡ１は、リードアクセス及びライトアクセスの両方を行うことができる。
【００９９】
「コピー元状態」とは、コピー元ボリュームとして設定された状態である。「コピー元状態」のボリュームに対して、このボリュームに繋がるホストコンピュータＨＡ１は、リードアクセス及びライトアクセスの両方が可能である。「コピー元状態」に設定されたボリュームの記憶内容が更新されると、これに同期して、「コピー先状態」に設定されたボリュームの記憶内容も更新される。
【０１００】
「コピー先状態」とは、「コピー元状態」と対になる状態であり、コピー先ボリュームとして設定された状態を示す。「コピー先状態」に設定されたボリュームには、「コピー元状態」に設定されたボリュームへの更新が、同期して反映される。「コピー先状態」に設定されたボリュームに対しては、このボリュームに繋がれるホストコンピュータＨＡ１からライトアクセスすることはできない。なお、「コピー先状態」に設定されたボリュームへのリードアクセスは、許可してもよいし、禁止してもよい。
【０１０１】
次に、各ペア状態間の遷移について説明する。仮に、コピーペアを構成する各ボリュームの初期状態を「ペア分割状態」であるとする。「ペア分割状態」の２つのボリュームのうち、一方のボリュームに関して「ペア形成指示」を発行すると（Ｐ１）、このボリュームは、「ペア分割状態」から「コピー元状態」に変化する。このボリュームは、コピー元ボリュームとなる。そして、このコピー元ボリュームとペアを構成する他方のボリュームは、「ペア分割状態」から「コピー先状態」に変化する（Ｐ３）。
【０１０２】
「コピー元状態」に設定されているボリュームに設定されているボリュームに関して、そのボリュームに繋がるホストコンピュータＨＡ１から「ペア分割指示」を発行した場合（Ｐ２）、「コピー元状態」から「ペア分割状態」に変化する。これとほぼ同時に、「コピー先状態」に設定されているボリュームは、「ペア分割状態」に変化する。「コピー先状態」に設定されているボリュームに関して、「ペア分割指示」を発行した場合も（Ｐ４）、上記同様の変化を生じる。即ち、「コピー先状態」のボリュームも「コピー元状態」のボリュームも、ともに「ペア分割状態」に変化する。
【０１０３】
コピーの方向は、ボリュームに設定された状態により定まる。「コピー元状態」に設定されているボリュームから、「コピー先状態」に設定されているボリュームに向けて、ライトデータが転送される。このコピーの方向は、「ペア反転指示」を発行することにより、反転させることができる。
【０１０４】
「コピー元状態」に設定されているボリュームに関して、そのボリュームに繋がるホストコンピュータＨＡ１から「ペア反転指示」を発行すると（Ｐ５）、そのボリュームは「コピー元状態」から「コピー先状態」に変化する。同時に、相手方のボリュームは、「コピー先状態」から「コピー元状態」に変化する。同様に、「コピー先状態」に設定されているボリュームに関して、そのボリュームに繋がるホストコンピュータＨＡ１から「ペア反転指示」を発行すると（Ｐ６）、「コピー先状態」のボリュームは「コピー元状態」に変化し、「コピー元状態」のボリュームは「コピー先状態」に変化する。
【０１０５】
以上のようなペア状態の変更は、例えば、管理モジュール３４００が実行することができる。
【０１０６】
さて、以下、本実施例において行われる処理について詳細に説明する。
【０１０７】
図９は、下位ディスク管理フィルタドライバが行う処理流れの一例を示す。
【０１０８】
下位ディスク管理フィルタドライバ３３００は、ＯＳ１１３０（例えば管理モジュール３４００）から起動要求を受けて、管理モジュール３４００から指定されたプログラムスタックＳＴで起動する。ちなみに、例えば、管理モジュール３４００は、以下の処理によって、ホストコンピュータＨＡ１がアクセス可能な全ての論理ボリュームを認識し、認識した各論理ボリューム毎に、プログラムスタックを準備し、且つ、そのプログラムスタック上で、その論理ボリュームに対応するサブコンピュータプログラムを起動することができる。
【０１０９】
例えば、ＯＳ１１３０は、起動した場合に、記憶制御システム２０Ａ（及び／又は、他の記憶制御システム２０Ｂ）に対して、所定のコマンド（例えばＳＣＳＩプロトコルに基づくデバイスディスカバリーコマンド）を送信する。その場合、記憶制御システム２０ＡのホストＩ／Ｆ２３０が、そのコマンドに応答して、共有メモリ２６０に記録されているデバイス情報３２１を取得してホストコンピュータＨＡ１に送信する。ホストコンピュータＨＡ１のＯＳ１１３０は、記憶制御システム２０Ａから受信したデバイス情報３２１を受信してメモリ３２０（或いは他の記憶装置）に登録しておく。そのデバイス情報３２１には、記憶制御システム２０Ａに関する情報として、例えば、記憶制御システム２０Ａのメーカ或いはベンダの情報や、記憶制御システム２０Ａが有する全ての論理ボリュームに関するボリューム属性情報（例えば、プール状態のボリュームか、ボリュームペアを構成するボリュームか、ボリュームペアを構成するボリュームであればペア状態やペア相手はどのボリュームであるか等）が含まれている。管理モジュール３４００は、そのデバイス情報３２１（例えばそれに含まれているボリューム情報）を参照することにより、ホストコンピュータＨＡ１に提供可能な全ての論理ボリュームを認識することができ、以って、認識された各論理ボリューム毎に、プログラムスタックＳＴを準備し、準備したプログラムスタックＳＴに、下位ディスク管理フィルタドライバ３３００等のサブコンピュータプログラムを順次起動することができる。
【０１１０】
プログラムスタックＳＴに呼び出された（つまり起動した）下位ディスク管理フィルタドライバ３３００は、デバイス情報３２１を参照する等の所定の方法により、自分に対応した論理ボリュームがコピー機能を有するボリュームか否かを判定する（ステップＳ１）。ここで、例えば、下位ディスク管理フィルタドライバ３３００は、デバイス情報３２１に、所定のコード（例えば所定のベンダ名）が含まれていない場合には、コピー機能無しのボリュームであると判定し、一方、所定のコードが含まれている場合には、コピー機能有りのボリュームであると判定することができる。
【０１１１】
Ｓ１の判定処理によって、コピー機能無しのボリュームであると判定された場合には（Ｓ２で「コピー機能なしボリューム」）、ＯＳ１１３０が、その論理ボリュームについては、Ｉ／Ｏトラップを行なわないモードへ移行する（Ｓ３）。ここで、「Ｉ／Ｏトラップ」とは、第２ＡＰ３５００から出力されたＩ／Ｏ要求の送信先を、第２ＡＰ３５００に実際に認識されているボリューム（例えばコピー元ボリューム）から、そのボリュームの状態（例えば利用可フラグが立っているか否か）に応じて、そのボリュームのペア相手のボリューム（例えばコピー先ボリューム）へ切替えることを言う。なお、このＳ３では、例えば、起動した下位ディスク管理フィルタドライバ３３００は、そのまま終了しても良い。すなわち、コピー機能無しと判定された論理ボリュームに対応するプログラムスタックＳＴには、サブコンピュータプログラムが構築されていく必要は無い。
【０１１２】
Ｓ１の判定処理によって、コピー機能有りのボリュームであると判定された場合には（Ｓ２で「コピー機能ありボリューム」）、下位ディスク管理フィルタドライバ３３００は、ボリューム登録要求処理を実行する（Ｓ４）。具体的には、例えば、下位ディスク管理フィルタドライバ３３００は、自分に対応する論理ボリュームに関するボリューム属性情報の全部又は一部（例えば、プール管理テーブルＴ１又はペア管理テーブルＴ２の情報項目に対応した情報）を、管理モジュール３４００に送信する。
【０１１３】
Ｓ４の後、ＯＳ１１３０が、プール管理テーブルＴ１或いはペア管理テーブルＴ２に情報が登録される論理ボリュームについては、Ｉ／Ｏトラップを行うモードへ移行する（Ｓ５）。
【０１１４】
図１０は、上位ディスク管理フィルタドライバの動作流れの一例を示す。
【０１１５】
例えば、管理モジュール３４００によって、上述のデバイス情報３２１から認識される各ボリューム毎のプログラムスタックＳＴに対し、上位ディスク管理フィルタドライバ３１００も起動要求を受ける。上位ディスク管理フィルタドライバ３１００は、下位ディスク管理フィルタドライバ３３００と同様の方法で、自分に対応する論理ボリュームがコピー機能を持つか否かを判定する（Ｓ１１）。
【０１１６】
Ｓ１１の判定の結果、コピー機能無しのボリュームであると判定された場合には（Ｓ１２で「コピー機能なしボリューム」）、ＯＳ１１３０が、その論理ボリュームを第２ＡＰ３５００に認識させるボリューム認識モードを実行する（Ｓ１３）。なお、このＳ１３では、例えば、起動した上位ディスク管理フィルタドライバ３１００は、そのまま終了しても良い。すなわち、コピー機能無しと判定された論理ボリュームに対応するプログラムスタックＳＴには、サブコンピュータプログラムが構築されていく必要は無い。
【０１１７】
Ｓ１１の判定の結果、コピー機能有りのボリュームであると判定された場合には（Ｓ１２で「コピー機能ありボリューム」）、上位ディスク管理フィルタドライバ３１００は、ボリューム認識可否判定処理を実行する（Ｓ１４）。具体的には、例えば、上位ディスク管理フィルタドライバ３１００は、管理モジュール３４００に所定の要求を送信し、その要求に応答して管理モジュール３４００から受けた情報（例えば後述する戻り値）に基づいて、自分に対応する論理ボリュームを、第２ＡＰ３５００に認識させるか、或いは、その論理ボリュームを第２ＡＰ３５００に対して隠蔽するかを判定する（Ｓ１５）。
【０１１８】
Ｓ１５の判定の結果、認識させると判定された場合には（Ｓ１５で「ボリューム認識」）、Ｓ１３の処理が実行される。具体的には、例えば、上位ディスク管理フィルタドライバ３１００は、管理モジュール３４００から戻り値として「ボリューム認識」を受けた場合、それを所定の記憶域（例えばメモリ３２０）にセットし、その戻り値に基づいて、自分に対応するモジュールを上位（例えばボリュームモジュール３０００）に見せるように制御する。
【０１１９】
一方、Ｓ１５の判定の結果、隠蔽させると判定された場合には（Ｓ１５で「ボリューム隠蔽」）、ＯＳ１１３０によって、その論理ボリュームが第２ＡＰ３５００に対して隠蔽されるボリューム隠蔽モードが実行される（Ｓ１６）。具体的には、例えば、上位ディスク管理フィルタドライバ３１００は、管理モジュール３４００から戻り値として「ボリューム隠蔽」を受けた場合、それを所定の記憶域（例えばメモリ３２０）にセットし、その戻り値に基づいて、自分に対応するモジュールを上位（例えばボリュームモジュール３０００）に見せないように制御する。
【０１２０】
図１１は、管理モジュール３４００が行うボリューム登録要求応答処理の流れの一例を示す。
【０１２１】
この図に示す処理は、下位ディスク管理フィルタドライバ３３００によるＳ４の処理（図９参照）によって、下位ディスク管理フィルタドライバ３３００からボリューム属性情報の全部又は一部を管理モジュール３４００が受信した場合に行なわれる。
【０１２２】
管理モジュール３４００は、受信したボリューム属性情報に基づいて、コピー状態の判定処理を行う（Ｓ２１）。この判定処理では、例えば、管理モジュール３４００は、ボリューム属性情報にペア状態を表す情報が含まれていないことを検出した場合には、コピー状態でないと判定し、一方、ペア状態を表す情報が含まれていることを検出した場合には、コピー状態であると判定する。
【０１２３】
Ｓ２１の判定処理の結果、コピー状態でないと判定された場合には（Ｓ２３で「コピー状態でない」）、管理モジュール３４００は、受信したボリューム属性情報の一部であるボリューム情報を、プール管理テーブルＴ１に登録する。
【０１２４】
Ｓ２１の判定処理の結果、コピー状態であると判定された場合には（Ｓ２３で「コピー状態である」）、管理モジュール３４００は、受信したボリューム属性情報の全部又は一部に適合する情報が既にペア管理テーブルＴ２に登録されているか否かを判定する（Ｓ２４）。
【０１２５】
Ｓ２４の判定の結果、登録されていないと判定された場合には（Ｓ２５で「登録されていない」）、管理モジュール３４００は、受信したボリューム属性情報の全部又は一部を、新たなペアボリューム（ボリュームペアを構成する一つのボリューム）に関する情報として、ペア管理テーブルＴ２に登録する（Ｓ２６）。この処理により、ペア管理テーブルＴ２には、新たなボリュームペアＩＤと共に、そのＩＤが付与されたボリュームペアを構成するボリュームに関する情報が、第１又は第２のボリューム情報群としてペア管理テーブルＴ２に登録される。なお、第１又は第２のボリューム情報群のどちらに登録するかは、例えば、ペア状態の内容によって選択されても良い。具体的には、例えば、管理モジュール３４００は、ペア状態が「コピー元状態」であれば、ボリューム属性情報の全部又は一部を第１のボリューム情報群として登録し、ペア状態が「コピー先状態」であれば、ボリューム属性情報の全部又は一部を第２のボリューム情報群として登録し、ペア状態が「ペア分割状態」であれば、任意のボリューム情報群に登録するようにしても良い。
【０１２６】
Ｓ２４の判定の結果、登録されていると判定された場合には（Ｓ２５で「登録されている」）、管理モジュール３４００は、受信したボリューム属性情報の全部又は一部を、既存のペアボリュームに関する情報として、ペア管理テーブルＴ２に登録する（Ｓ２７）。
【０１２７】
図１２は、管理モジュール３４００が行うボリューム認識可否判定処理の流れの一例を示す。
【０１２８】
この図に示す処理は、上位ディスク管理フィルタドライバ３１００によるＳ１４の処理（図１０参照）によって、上位ディスク管理フィルタドライバ３１００から管理モジュール３４００が所定の要求を受信した場合に行なわれる。
【０１２９】
管理モジュール３４００は、プール管理テーブルＴ１及びペア管理テーブルＴ２を参照し、この図に示す処理の対象となっている対象論理ボリューム（例えば、受信した要求に含まれているボリュームＩＤを含んだボリューム情報に該当するボリューム）のコピー状態の判定処理を行う（Ｓ３１）。この判定処理では、例えば、管理モジュール３４００は、その論理ボリュームについてペア状態を表す情報があれば、コピー状態でないと判定し、一方、ペア状態を表す情報があれば、コピー状態であると判定する。
【０１３０】
Ｓ３１の判定処理の結果、コピー状態でないと判定された場合には（Ｓ３２で「コピー状態でない」）、管理モジュール３４００は、上位ディスク管理フィルタドライバ３１００に送信する戻り値として「ボリューム認識」表すコードをセットし（Ｓ３３）、その戻り値を上位ディスク管理フィルタドライバ３１００に送信する（Ｓ３７）。
【０１３１】
Ｓ３１の判定処理の結果、コピー状態であると判定された場合には（Ｓ３２で「コピー状態である」）、管理モジュール３４００は、上記対象論理ボリュームに関する情報がペア管理テーブルＴ２の第１のボリューム情報群の欄に登録されているか否かを判定する（Ｓ３４）。
【０１３２】
Ｓ３４の判定の結果が肯定的であれば（Ｓ３５で「含まれている」）、管理モジュール３４００は、上記Ｓ３３及びＳ３７の処理を実行する。
【０１３３】
一方、Ｓ３４の判定の結果が否定的であれば（Ｓ３５で「含まれていない」）、管理モジュール３４００は、上位ディスク管理フィルタドライバ３１００に送信する戻り値として「ボリューム隠蔽」表すコードをセットし（Ｓ３６）、その戻り値を上位ディスク管理フィルタドライバ３１００に送信する（Ｓ３７）。
【０１３４】
以上のような流れによって、各ボリューム毎に準備された各プログラムスタックに、下位ディスク管理フィルタドライバ３３００及び上位ディスク管理フィルタドライバ３１００が構築するか否かが制御される。
【０１３５】
なお、ボリュームペアを構成する２つのボリュームにそれぞれ対応した２つの下位ディスク管理フィルタドライバ３３００ａ及び３３００ｂは、下位ディスク制御情報を保持し、その下位ディスク制御情報に基づいて、データの送信を制御する。
【０１３６】
図１３は、下位ディスク制御情報の構成例を示す。
【０１３７】
下位ディスク制御情報２５には、ボリューム認識下位デバイスデータと、Ｉ／Ｏ発行下位デバイスデータとが含まれている。
【０１３８】
ボリューム認識下位デバイスデータは、ボリュームを認識する下位ディスク管理フィルタドライバ３３００を特定するための情報であり、例えば、その下位ディスク管理フィルタドライバ３３００の名称である。このボリューム認識下位デバイスデータを参照することにより、例えば２つの下位ディスク管理フィルタドライバ３３００ａ及び３３００ｂのうちのどちらから上位にボリュームを伝えるべきかを判別することができる。
【０１３９】
Ｉ／Ｏ発行下位デバイスデータは、Ｉ／Ｏ要求をボリュームに発行する下位ディスク管理フィルタドライバ３３００を特定するための情報であり、例えば、その下位ディスク管理フィルタドライバ３３００の名称である。このＩ／Ｏ発行下位デバイスデータを参照することにより、例えば２つの下位ディスク管理フィルタドライバ３３００ａ及び３３００ｂのうちのどちらから下位にＩ／Ｏ要求を発行するべきかを判別することができる。
【０１４０】
このような下位ディスク制御情報２５に基づいて、第２ＡＰ３５００に対して認識させるボリュームを、コピー元ボリュームとコピー先ボリュームとの間で切替える処理が可能になる。以下、その下位ディスク制御情報２５がＯＳ１１３０に反映されるまでに行われる処理流れを説明する。
【０１４１】
図１４は、下位ディスク制御情報２５を登録するために下位ディスク管理フィルタドライバ３３００によって行われる処理流れの一例を示す。
【０１４２】
下位ディスク管理フィルタドライバ３３００は、ＯＳ１１３０（例えば管理モジュール３４００）から、ボリューム利用開始要求を受けて、以下のＳ４１の処理を実行する。すなわち、下位ディスク管理フィルタドライバ３３００は、Ｓ１（図９参照）と同様の方法で、自分に対応した論理ボリュームがコピー機能を有するボリュームか否かを判定する（Ｓ４１）。
【０１４３】
Ｓ４１の判定処理によって、コピー機能無しのボリュームであると判定された場合には（Ｓ４２で「コピー機能なしボリューム」）、下位ディスク管理フィルタドライバ３３００は、処理を終了する。
【０１４４】
Ｓ４１の判定処理によって、コピー機能有りのボリュームであると判定された場合には（Ｓ４２で「コピー機能ありボリューム」）、下位ディスク管理フィルタドライバ３３００は、下位ディスク制御情報要求処理を実行する（Ｓ４３）。具体的には、例えば、下位ディスク管理フィルタドライバ３３００は、下位ディスク制御情報を管理モジュール３４００に要求し、その要求に応答して、下位ディスク制御情報を管理モジュール３４００から受信する。その後、下位ディスク管理フィルタドライバ３３００は、受信した下位ディスク制御情報を、所定の記憶域（例えばメモリ３２０）に登録する（Ｓ４４）。
【０１４５】
図１５は、下位ディスク制御情報の要求に応答して管理モジュール３４００が行う処理の流れの一例を示す。
【０１４６】
管理モジュール３４００は、各プログラムスタックＳＴ毎に（換言すれば、各論理ボリューム毎に）、それに対応する下位ディスク管理フィルタドライバ３３００の名称を、所定の記憶域（例えばメモリ３２０）上で管理している。
【０１４７】
管理モジュール３４００は、下位ディスク制御情報を要求した下位ディスク管理フィルタドライバ３３００（以下、要求元ドライバ３３００）に対応したボリュームのコピー状態を、Ｓ２１（図１１参照）或いはＳ３１（図１２参照）と同様の方法で判定する（Ｓ５１）。なお、管理モジュール３４００は、例えば、所定の記憶域（例えばメモリ３２０）上で、各ボリュームＩＤ毎に、そのＩＤから特定されるボリュームに対応する下位ディスク管理フィルタドライバ３３００の名称を管理することで、要求元ドライバ３３００に対応したボリュームを特定することができる。
【０１４８】
Ｓ５１の判定の結果、コピー状態でないと判定された場合には（Ｓ５２で「コピー状態でない」）、管理モジュール３４００は、要求元ドライバ３３００の名称を、下位ディスク制御情報の「ボリューム認識下位ドライバデータ」及び「Ｉ／Ｏ発行下位ドライバデータ」の両方にセットする（Ｓ５３）。これにより、要求元ドライバ３３００に対応するボリュームが、コピー状態で無い場合には、上位へボリュームを伝達するデバイス３３００も、下位へＩ／Ｏ要求を発行するデバイス３３００も同一となる。換言すれば、要求元ドライバ３３００に対応するボリュームがコピー状態で無い場合には、第２ＡＰ３５００に認識させるボリュームの切替えは行われない。
【０１４９】
Ｓ５１の判定の結果、コピー状態であると判定された場合には（Ｓ５２で「コピー状態である」）、管理モジュール３４００は、ペア管理テーブルＴ２を参照することにより、要求元ドライバ３３００に対応するボリュームが属するペアボリュームのうち第１ボリューム（第１のボリューム情報群の欄に登録された情報に該当するボリューム）を特定し、そして、特定された第１ボリュームに対応する下位ディスク管理フィルタドライバ３３００の名称を、下位ディスク制御情報の「ボリューム認識下位ドライバデータ」にセットする（Ｓ５４）。また、管理モジュール３４００は、ペア管理テーブルＴ２を参照することにより、要求元ドライバ３３００に対応するボリュームが属するペアボリュームのうちコピー元ボリューム（ペア状態がコピー元状態であるボリューム）を特定し、そして、特定されたコピー元ボリュームに対応する下位ディスク管理フィルタドライバ３３００の名称を、下位ディスク制御情報の「ボリューム認識下位ドライバデータ」にセットする（Ｓ５５）。これらＳ５４及びＳ５５の処理により、上位へボリュームを伝達する下位ディスク管理フィルタドライバ３３００として、第２ＡＰ３５００に認識されるボリュームに対応した下位ディスク管理フィルタドライバ３３００がセットされ、下位へＩ／Ｏ要求を発行する下位ディスク管理フィルタドライバ３３００として、データの読出しだけでなく書込みも許可されるコピー元ボリュームに対応した下位ディスク管理フィルタドライバ３３００がセットされる。
【０１５０】
Ｓ５３又はＳ５５の処理の後、すなわち、下位ディスク制御情報の「ボリューム認識下位ドライバデータ」及び「Ｉ／Ｏ発行下位ドライバデータ」の両方に名称がセットされたならば、管理モジュール３４００が、名称のセットが完了した下位ディスク制御情報を戻り値として要求元ドライバ３３００に送信する（Ｓ５６）。
【０１５１】
以上の図１４及び図１５の処理によって、各論理ボリュームに対応する各下位ディスク管理フィルタドライバ３３００が、下位ディスク制御情報を管理モジュール３４００から受信し所定の記憶域（例えばメモリ３２００）に登録することができる。その後、各下位ディスク管理フィルタドライバ３３００は、Ｉ／Ｏ要求を受信した場合には、以下に説明する処理を実行する。
【０１５２】
図１６は、Ｉ／Ｏ要求を受信した下位ディスク管理フィルタドライバ３３００が行う処理流れの一例を示す。
【０１５３】
下位ディスク管理フィルタドライバ３３００は、自分の上位にある物理ディスクモジュール３２００又は別の下位ディスク管理フィルタドライバ３３００から、Ｉ／Ｏ要求を受信する。その場合、下位ディスク管理フィルタドライバ３３００は、所定の記憶域に登録されている下位ディスク制御情報中の「Ｉ／Ｏ発行下位デバイスデータ」にセットされている名称を参照し（Ｓ６１）、その名称が、自分の名称か否かを判定する（Ｓ６２）。
【０１５４】
Ｓ６２の判定の結果、肯定的であれば（Ｓ６２でＹＥＳ）、下位ディスク管理フィルタドライバ３３００は、自分に対応するボリュームにＩ／Ｏ要求を発行する（Ｓ６３）。ここでは、例えば、下位ディスク管理フィルタドライバ３３００は、管理モジュール３４００からの制御の下、宛先となるボリュームのボリューム情報（プール管理テーブルＴ１又はペア管理テーブルＴ２に記録されている情報、例えばアクセスパス名）を有するＩ／Ｏ要求を発行する。これにより、Ｉ／Ｏ要求が記憶制御システム２０Ａに送信され、そのボリュームからデータがリードされるか、或いは、そのボリュームにデータがライトされる。
【０１５５】
Ｓ６２の判定の結果、否定的であれば（Ｓ６２でＮＯ）、下位ディスク管理フィルタドライバ３３００は、「Ｉ／Ｏ発行下位デバイスデータ」にセットされている名称に対応した別の下位ディスク管理フィルタドライバ３３００に、受信したＩ／Ｏ要求を送信する（Ｓ６４）。
【０１５６】
記憶制御システム２０Ａは、ホストコンピュータＨＡ１からＩ／Ｏ要求を受信した場合、そのＩ／Ｏ要求に従う処理を実行すること、すなわち、そのＩ／Ｏ要求の対象となっているボリュームからデータを読み出す、或いはそのボリュームにデータを書込むことを試みる。記憶制御システム２０Ａは、その試みに成功し、データの読出し或いはデータの書込みを行えた場合には、Ｉ／Ｏ要求に対するレスポンスとして戻り値「成功」をホストコンピュータＨＡ１に返送し、一方、その試みに失敗した場合（例えばビジー状態の場合）には、そのＩ／Ｏ要求に対するレスポンスとして戻り値「失敗」をホストコンピュータＨＡ１に返送する。
【０１５７】
図１７は、Ｉ／Ｏ要求の戻り値を記憶制御システム２０Ａから受信した下位ディスク管理フィルタドライバ３３００が行う処理流れの一例を示す。
【０１５８】
下位ディスク管理フィルタドライバ３３００は、記憶制御システム２０Ａ又は別の下位ディスク管理フィルタドライバ３３００から、Ｉ／Ｏ要求の戻り値を受信する。下位ディスク管理フィルタドライバ３３００は、受信した戻り値を確認する（Ｓ７１）。
【０１５９】
Ｓ７１において、戻り値「成功」が確認された場合（Ｓ７１で「成功」）、下位ディスク管理フィルタドライバ３３００は、所定の記憶域に登録されている下位ディスク制御情報中の「ボリューム認識下位デバイスデータ」にセットされている名称を参照し（Ｓ７２）、その名称が、自分の名称か否かを判定する（Ｓ７３）。
【０１６０】
Ｓ７３の判定の結果、肯定的であれば（Ｓ７３でＹＥＳ）、下位ディスク管理フィルタドライバ３３００は、受信した戻り値「成功」を、ＯＳ１１３０（例えば、自分の上位のサブコンピュータプログラムである物理ディスクモジュール３２００）に送信する（Ｓ７４）。
【０１６１】
Ｓ７３の判定の結果、否定的であれば（Ｓ７３でＮＯ）、下位ディスク管理フィルタドライバ３３００は、「ボリューム認識下位デバイスデータ」にセットされている名称に対応した別の下位ディスク管理フィルタドライバ３３００に、受信した戻り値「成功」を送信する（Ｓ７５）。
【０１６２】
Ｓ７１において、戻り値「失敗」が確認された場合（Ｓ７１で「失敗」）、下位ディスク管理フィルタドライバ３３００は、Ｉ／Ｏ失敗時判定処理を行うこと管理モジュール３４００に要求する（Ｓ７６）。その要求に応答して管理モジュール３４００がＩ／Ｏ失敗時判定処理を行い、その結果、「リトライ無し」という戻り値を受けた場合（Ｓ７７で「リトライなし」）、下位ディスク管理フィルタドライバ３３００は、Ｓ７２の処理を実行し、一方、「リトライ」という戻り値を受けた場合（Ｓ７７で「リトライ」）、Ｉ／Ｏ要求の再発行を行なう（Ｓ７８）。ここで、例えば、下位ディスク管理フィルタドライバ３３００は、Ｓ６３或いはＳ６４（図１６参照）で発行したＩ／Ｏ要求を所定の記憶域（例えばメモリ３２０）に一時的に保存しておき、Ｓ７８では、その保存しておいたＩ／Ｏ要求を読み出して発行する。もし、Ｓ７１で戻り値「成功」が確認された場合には、下位ディスク管理フィルタドライバ３３００は、その保存しておいたＩ／Ｏ要求を消去しても良い。
【０１６３】
図１８は、Ｉ／Ｏ失敗時判定処理を行うことの要求を下位ディスク管理フィルタドライバ３３００から受けた管理モジュール３４００が行う処理流れの一例を示す。
【０１６４】
管理モジュール３４００は、ペア管理テーブルＴ２を参照し、Ｉ／Ｏ失敗時判定処理の要求元ドライバに対応するボリュームが、どのペアボリュームに所属しているかを検索する（Ｓ８１）。なお、要求元ドライバ３３００に対応するボリュームがどれであるかは、例えば、各ボリュームＩＤと、それに対応する下位ディスク管理フィルタドライバ３３００の名称とを所定の記憶域（例えばメモリ３２０）で管理することにより、管理モジュール３４００が判別することができる。
【０１６５】
管理モジュール３４００は、要求元ドライバ３３００に対応するペアボリュームが検索されたならば、そのペアボリュームの「利用可フラグ」を利用不可に変更する（つまりフラグを倒す）（Ｓ８２）。
【０１６６】
次に、管理モジュール３４００は、検索されたペアボリュームと一緒にボリュームペアを構成するペア相手ボリュームをペア管理テーブルＴ２から特定し、特定されたペア相手ボリュームの利用可フラグを確認する（Ｓ８３）。
【０１６７】
Ｓ８３において、管理モジュール３４００は、利用可フラグが倒れている（つまり、ペア相手ボリュームは利用不可である）ことが確認された場合には（Ｓ８４でＮＯ）、要求元ドライバ３３００に返送する戻り値に「リトライなし」をセットして（Ｓ８５）、その戻り値「リトライなし」を要求元ドライバに送信する。これにより、要求元ドライバ３３００によって、Ｓ７７からＳ７２以降の処理を経て（図１７参照）、戻り値「失敗」が、ＯＳ１１１３０（例えば、要求元ドライバ３３００の上位の物理ディスクモジュール３２００）に送信される。
【０１６８】
Ｓ８３において、管理モジュール３４００は、利用可フラグが立っている（つまり、ペア相手ボリュームは利用可である）ことが確認された場合には（Ｓ８４でＹＥＳ）、ペア管理テーブルＴ２を参照し、上記ペア相手ボリュームのペア状態を確認する（Ｓ８６）。
【０１６９】
Ｓ８６において、管理モジュール３４００は、ペア状態が「コピー先状態」であると判定された場合には（Ｓ８７で「コピー先状態」）、ペア反転操作を行う（Ｓ８８）。具体的には、例えば、管理モジュール３４００は、ペア相手ボリュームのペア状態を、コピー先状態からコピー元状態に変更し、且つ、Ｓ８１で検索されたボリューム（つまり、ペア相手ボリュームのペア相手）のペア状態を、コピー元状態からコピー先状態に変更する。なお、このＳ８８の処理は、例えば、管理モジュール３４００が、ペア反転操作が可能な状態か否かの判断を行い、肯定的な判断結果が得られた場合にのみ、行なっても良い。ペア反転操作が可能であるとの判断結果は、例えば、Ｓ８１で検索されたボリューム（つまり現在のコピー元ボリューム）にデータが書込みされていない場合に得られ、それが不可能であるとの判断結果は、例えば、そのボリュームにデータが書き込まれている最中の場合に得られても良い。
【０１７０】
Ｓ８６において、管理モジュール３４００は、ペア状態が「コピー元状態」であると判定された場合には（Ｓ８７で「コピー元状態」）、下位ディスク制御情報の「Ｉ／Ｏ発行下位ドライバデータ」の名称を、上記ペア相手ボリュームに対応する下位ディスク管理フィルタドライバ３３００の名称に更新する（Ｓ８９）。
【０１７１】
Ｓ８８又はＳ８９の処理の後、管理モジュール３４００は、要求元ドライバ３３００に返送する戻り値に「リトライ」をセットし（Ｓ９０）、その戻り値「リトライ」を要求元ドライバ３３００に送信する。これにより、要求元ドライバ３３００によって、Ｓ７８の処理が行われる。すなわち、Ｉ／Ｏ要求は、Ｓ８９で名称が書き込まれた別の下位ディスク管理フィルタドライバ３３００（上記ペア相手ボリュームに対応した下位ディスク管理フィルタドライバ３３００）に振り分けられる。
【０１７２】
さて、上述したように、各ボリューム毎にプログラムスタックが準備され、各プログラムスタックに、サブコンピュータプログラムが呼び出され構築されていくが、そのプログラムスタックに構築された１又は複数のサブコンピュータプログラム（或いはプログラムスタックそれ自体）は、以下の流れで削除することができる。その流れを、図１９及び図２０を参照して説明する。なお、以下の削除処理は、例えば、１つのボリュームとして第２ＡＰ３５００に認識されるように管理されている複数のボリュームの利用可フラグが全て利用不可となった場合（例えばそのことが管理モジュール３４００によって検出された場合）に、それら複数のボリュームにそれぞれ対応する複数の下位ディスク管理フィルタドライバに対して、削除要求が送信されることで行われる。
【０１７３】
図１９は、削除要求を受けた下位ディスク管理フィルタドライバ３３００の処理流れを示す。
【０１７４】
下位ディスク管理フィルタドライバ３３００は、ＯＳ１１３０（例えば管理モジュール３４００又は別の下位ディスク管理フィルタドライバ３３００）から削除要求を受けた場合、削除処理を管理モジュール３４００に要求する（Ｓ９１）。この要求に応答して、管理モジュール３４００によって後述する削除処理が行われ、下位ディスク管理フィルタドライバ３３００は、管理モジュール３４００から戻り値「ドライバ削除」又は「ドライバ削除なし」を受信する。
【０１７５】
下位ディスク管理フィルタドライバ３３００は、受信した戻り値が「ドライバ削除」を示すことを判定した場合には（Ｓ９２で「ドライバ削除」）、そのドライバ３３００（又はそのドライバ３３００を有するプログラムスタックそれ自体）を削除する（Ｓ９３）。一方、下位ディスク管理フィルタドライバ３３００は、受信した戻り値が「ドライバ削除なし」を示すことを判定した場合には（Ｓ９２で「ドライバ削除なし」）、そのドライバ３３００（又はそのドライバ３３００を有するプログラムスタックそれ自体）を削除することなく（Ｓ９４）、処理を終了する。
【０１７６】
図２０は、削除処理の要求を受けた管理モジュール３４００が行う処理流れの一例を示す。
【０１７７】
管理モジュール３４００は、ペア管理テーブルＴ２を参照し、Ｉ／Ｏ失敗時判定処理の要求元ドライバに対応するボリュームが、どのペアボリュームに所属しているかを検索する（Ｓ１０１）。
【０１７８】
管理モジュール３４００は、要求元ドライバ３３００に対応するペアボリュームが検索されたならば、そのペアボリュームの「利用可フラグ」を利用不可に変更する（Ｓ１０２）。
【０１７９】
次に、管理モジュール３４００は、検索されたペアボリュームと一緒にボリュームペアを構成するペア相手ボリュームをペア管理テーブルＴ２から特定し、特定されたペア相手ボリュームの利用可フラグを確認する（Ｓ１０３）。
【０１８０】
Ｓ１０３において、管理モジュール３４００は、利用可フラグが立っている（つまり、ペア相手ボリュームは利用可である）ことが確認された場合には（Ｓ１０４でＹＥＳ）、要求元ドライバ３３００に返送する戻り値に「ドライバ削除なし」をセットして（Ｓ１０５）、その戻り値「ドライバ削除なし」を要求元ドライバに送信する。
【０１８１】
Ｓ１０３において、管理モジュール３４００は、利用可フラグが倒れている（つまり、ペア相手ボリュームは利用不可である）ことが確認された場合には（Ｓ１０４でＮＯ）、ペア相手ボリュームに対応する別の下位ディスク管理フィルタドライバ３３００に、削除要求を送信する（Ｓ１０６）。これにより、その別の下位ディスク管理フィルタドライバ３３００において、図１９に示した処理が行われる。
【０１８２】
Ｓ１０６の後、管理モジュール３４００は、要求元ドライバ３３００に返送する戻り値に「ドライバ削除」をセットして（Ｓ１０７）、その戻り値「ドライバ削除」を要求元ドライバ３３００に送信する。
【０１８３】
以上、上述した実施例によれば、ホストコンピュータＨＡ１において、ＯＳ１１３０の上位に存在する第２ＡＰ３５００に、コピー元ボリューム及びコピー先ボリュームを仮想的に一つのボリュームとして認識させることができる。
【実施例２】
【０１８４】
図２１Ａは、本発明の一実施形態の第二の実施例に係るストレージシステムの全体概要を示す。この図２１Ａと、前述した図２とを参照して第二の実施例について説明する。
【０１８５】
第二の実施例は、本実施形態を、リモートコピー、すなわち、第１の記憶制御システム２０Ａ内のコピー元ボリュームから、その記憶制御システム２０Ａとは別の（例えば遠隔の）記憶制御システム２０Ｂ内のコピー先論理ボリュームへデータコピーすることに適用した場合の例である。
【０１８６】
リモートコピーについて、簡単に説明すると、記憶制御システム２０Ａが有する複数の論理ボリューム２１２と、記憶制御システム２０Ｂが有する複数の論理ボリューム２１２とのうち、同期対象となる論理ボリュームが予め選択される。これら選択された一対の論理ボリューム２１２は、一方がコピー元ボリューム２１２Ａとなり、他方がコピー先ボリューム２１２Ｂとなる。ホストコンピュータＨからコピー元ボリュームに書き込まれたデータ（更新データ）は、装置間Ｉ／Ｆ２４０からリモートコピーラインＣＮ１３を介して、コピー先ボリューム２１２Ｂに転送され、コピー先ボリューム２１２Ｂに書き込まれる。
【０１８７】
また、リモートコピーの停止期間中に、コピー元ボリューム２１２Ａに書き込まれたデータは、差分データとして管理される。差分データは、例えば、差分ビットマップテーブル等を用いて管理可能である。リモートコピーを再開する場合、まず先に、コピー元ボリューム２１２Ａからコピー先ボリューム２１２Ｂに差分データが転送され、各ボリュームの再同期が行われる。
【０１８８】
以下、この第二の実施例について詳細に説明する。
【０１８９】
ホストコンピュータＨＡ１からデータを書き込まれた論理ボリューム２１２が、コピー元ボリューム２１２Ａに設定されている場合、このライトデータは、装置間Ｉ／Ｆ２４０からリモートコピーラインＣＮ１３を介して、コピー先ボリューム２１２Ｂを有する記憶制御システム２０Ｂに転送される。転送先の記憶制御システム２０Ｂは、装置間Ｉ／Ｆを介してライトデータを受信すると、このライトデータをキャッシュメモリに格納し、転送元の記憶制御システム２０Ａに対して、書込み完了を報告する。転送先の記憶制御システム２０Ｂは、書込み完了の報告後、適当なタイミングで、ライトデータをコピー先ボリューム２１２Ｂに書込む。
【０１９０】
転送元の記憶制御システム２０ＡのホストＩ／Ｆ２３０は、転送先の記憶制御システム２０Ｂから書込み完了が報告されたことを確認した後、ホストコンピュータＨに対して、書込み完了を報告する。以上のように、転送先の記憶制御システム２０Ｂからの書込み完了報告を待ってから、ホストコンピュータＨに書込み完了を報告する方法を、同期式リモートコピーと呼ぶ。
【０１９１】
これに対し、転送元の記憶制御システム２０Ａが、ホストコンピュータＨからのライトデータをキャッシュメモリ２５０に記憶させた時点で、ホストコンピュータＨに書込み完了を報告する方法を非同期式リモートコピーと呼ぶ。同期式リモートコピーの場合は、転送先からの応答を待つ時間だけ処理時間が長くなる。しかし、転送が正常に完了したことを確認してからホストコンピュータＨに書込み完了を報告するため、コピー元ボリューム２１２Ａとコピー先ボリューム２１２Ｂとが同期していることを保証できる。非同期式リモートコピーの場合は、相手方の記憶制御システム２０Ｂにライトデータを転送する前に、ホストコンピュータＨに書込み完了を報告するため、応答時間を短縮することができる。しかし、コピー元ボリューム２１２Ａの記憶内容が更新されたか否かを確認していないため、リモートコピーが正常に完了したことを確実に保証することはできない。
【０１９２】
以上のように、同期式リモートコピーと非同期式リモートコピーとの２つの方式のいずれをも実行することが可能である。このように、リモートコピーを行う場合にも、上述した本実施形態を適用することができる。
【０１９３】
なお、リモートコピーを行うことができるストレージシステムの構成は、図２１Ａの構成に限られない。
【０１９４】
例えば、図２１Ｂに示すように、別々の通信ネットワークＣＮ１１Ａ及びＣＮ１１Ｂにそれぞれ接続されたホストコンピュータＨＡ１及びＨＢ１の両方に、ボリューム管理プログラム群１１１０Ａ、１１１０Ｂが組み込まれても良い。ボリューム管理プログラム群１１１０Ａ及び１１１０Ｂの両方が、上記実施形態或いは第一実施例で説明したような処理を行うことで、ストレージシステムの可用性が高まる。
【０１９５】
また、例えば、図２２Ａに示すように、図２１Ｂに示したストレージシステムにおいて、ホストコンピュータＨＡ１及びＨＡ２が、ホスト間を結ぶ通信ネットワーク（例えばＩＰプロトコルに従うネットワーク）ＣＮ１２を介して接続されていても良い。この場合、例えば、ホストコンピュータＨＡ１が、ボリュームペアを構成している或るボリュームにアクセスできないときに、ホストコンピュータＨＡ１がその旨を別のホストコンピュータＨＢ１に送信し、ホストコンピュータＨＢ１が、そのアクセスできないボリュームの利用可フラグ（ペア管理テーブルＴ２上の利用可フラグ）を利用不可に変更しても良い。これによれば、ストレージシステムの可用性の向上が図れる。
【０１９６】
また、例えば、図２２Ｂに示すように、コピー元ボリューム２１２Ａには、複数のコピー先ボリューム２１２Ｂが存在していても良い。この場合には、例えば、ペア管理テーブルＴ２において、各ボリュームペア毎に、複数のボリュームのボリューム情報、ペア状態及び利用可フラグを登録することができる。なお、この場合、例えば、制御モジュール３４００は、各ボリュームペアにおいて、そのボリュームペアを構成する２つ以上のボリュームのペア状態を同時期にコピー元状態としないような制御を行ってもよい。
【実施例３】
【０１９７】
本発明の一実施形態の第三実施例では、上記実施形態及び第一〜第二実施例において、ボリューム管理ＡＰ４０００が提供するＧＵＩ（グラフィカルユーザインターフェース）を介して、ボリューム管理プログラム群１１１０によって行われる処理を制御することができる。
【０１９８】
ボリューム管理ＡＰ４０００は、起動して、ユーザによって所定の操作が行われた場合、図２３に例示する第一のＧＵＩ画面をディスプレイ画面３７０に表示する。このＧＵＩ画面上で、何らかの情報が入力された場合、ボリューム管理ＡＰ４０００は、入力された情報の内容を、管理モジュール３４００に通知する。管理モジュール３４００は、入力された情報を所定の記憶域（例えばメモリ３２０）にセットし、そのセットした情報に基づく制御を実行する。
【０１９９】
例えば、管理モジュール３４００は、第一のＧＵＩ画面上で「ペア反転モード」が選択された旨の通知をボリューム管理ＡＰ４００から受けた場合、その旨を所定の記憶域にセットしても良い。その後、管理モジュール３４００は、ペア反転モードが選択された旨が所定の記憶域にセットされていることを検出した場合、ペア反転モードを実行しても良い。具体的には、例えば、管理モジュール３４００が、図１８のＳ８８の処理の前に、ペア反転操作が可能か否かの判断を行い、肯定的な判断結果が得られた場合にのみ、行なっても良い。これは、例えば、他のホストコンピュータが同一ボリュームを用いて運用を行っている等、ストレージシステムの運用により、自動でペア反転操作を行えない環境も存在するため、このように、ペア反転操作が可能か否かの判断を行った上でペア反転を行うのは有用である。なお、ペア反転モードが選択されたか否かの情報は、例えば、ペア管理テーブルＴ２上に、各ボリュームペア毎に記録されてもよい。
【０２００】
また、例えば、管理モジュール３４００は、第一のＧＵＩ画面上で「ペア状態監視モード」が選択された旨の通知をボリューム管理ＡＰ４００から受けた場合、その旨を所定の記憶域にセットしても良い。その後、管理モジュール３４００は、ペア状態監視モードが選択された旨が所定の記憶域にセットされていることを検出した場合、ペア状態監視モードを実行しても良い。具体的には、例えば、管理モジュール３４００が、各下位ディスク管理フィルタドライバ３３００に、そのドライバ３３００に対応するボリュームにＩ／Ｏ要求を不定期に又は定期的に発行させ、それの戻り値の内容を参照させることで、各ドライバ３３００と各ボリュームとの間のパスが正常か異常かを判定させても良い。これにより、早期のパス障害の発見、或いは、実処理前のパスのフェイルオーバーが可能となる。なお、ペア状態監視モードが選択されたか否かの情報は、例えば、ペア管理テーブルＴ２上に、各ボリュームペア毎に記録されてもよい。
【０２０１】
また、例えば、管理モジュール３４００は、第一のＧＵＩ画面上で「優先ディスクモード」が選択された旨の通知をボリューム管理ＡＰ４００から受けた場合、その旨を所定の記憶域にセットしても良い。その後、管理モジュール３４００は、優先ディスクモードが選択された旨が所定の記憶域にセットされていることを検出した場合、優先ディスクモードを実行しても良い。具体的には、例えば、管理モジュール３４００が、図１５を参照して説明した処理流れにおいて、優先ディスクとして選択されたボリュームを検出し、そのボリュームに対応する下位ディスク管理フィルタドライバ３３００の名称を、I/O発行下位ドライバデータに優先的にセットしても良い。ホストコンピュータよりコピーペアを形成するボリュームの通信経路が同じ条件であることは少なく、優劣が付く可能性があるので、この優先ディスクモードは有用である。なお、優先ディスクモードが選択されたか否かの情報は、例えば、ペア管理テーブルＴ２上に、各ボリュームペア毎に記録されてもよい。また、そのテーブルＴ２上では、各ボリュームペア毎に、どれが優先ディスクとして選択されたボリュームであるかが記録されても良い。
【０２０２】
また、例えば、管理モジュール３４００は、第一のＧＵＩ画面上で「パス切り替え実行」が選択された（例えばボタン１６が押された）旨の通知をボリューム管理ＡＰ４００から受けた場合、第２ＡＰ３５００に認識させるボリュームをそれのペア相手である別のボリュームに切り替えるための処理を実行しても良い。例えば、管理モジュール３４００は、ペア管理テーブルＴ２における或るボリュームペアについて、第１のボリューム情報群の欄に記録されている全ての情報と、第２のボリューム情報群の欄に記録されている全ての情報とを入れ替えてもよい。そして、管理モジュール３４００は、その或るボリュームペアを構成する２つのボリュームにそれぞれ対応する２つのプログラムスタックをリセットし（つまり、構築されたサブコンピュータプログラムを削除し）、新たに、サブコンピュータプログラムを順次起動していってもよい。このような処理を行うことによって、第２ＡＰ３５００に認識させるボリュームの切り替えが行われても良い。
【０２０３】
また、例えば、管理モジュール３４００は、第一のＧＵＩ画面上で「パス切り替え実行」が選択された（例えばボタン１６が押された）旨の通知をボリューム管理ＡＰ４００から受けた場合、第２ＡＰ３５００に認識させるボリュームをそれのペア相手である別のボリュームに切り替えるための処理を実行しても良い。
【０２０４】
また、例えば、ボリューム管理ＡＰ４０００は、ユーザによって別の操作が行われた場合、図２４に例示する第二のＧＵＩ画面をディスプレイ画面３７０に表示しても良い。この場合、例えば、管理モジュール３４００は、第二のＧＵＩ画面上で「更新実行」が選択された（例えばボタン１４が押された）旨の通知をボリューム管理ＡＰ４００から受けた場合、所定の条件に合うボリュームについてのプログラムスタックをリセットしても良い。ここで、「所定の条件」とは、例えば、ユーザに指定されたボリューム、アクセス頻度が所定値より低いボリューム等、様々な条件を設定することができる。
【０２０５】
以上、本発明の好適な実施形態及び幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態及び実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
【図面の簡単な説明】
【０２０６】
【図１】本発明の一実施形態の概念を示す。
【図２】第１実施例に係るストレージシステムの全体構成図である。
【図３】ホストコンピュータＨＡ１内で動作する種々のコンピュータプログラムを示す。
【図４】プール管理テーブルの構成例を示す。
【図５】ペア管理テーブルの構成例を示す。
【図６】ボリュームペアを構成する第１と第２のボリュームのうち第１のボリュームが第２ＡＰ３５００に対して提供される場合の複数のサブコンピュータプログラム間の連携例を示す。
【図７】図６において、第２ＡＰ３５００に対して提供される論理ボリュームが第１のボリュームから第２のボリュームに切り替わった場合の連携例を示す。
【図８】ボリュームが取り得る各種のペア状態とこれら各ペア状態間での遷移を模式的に示す状態遷移図である。
【図９】下位ディスク管理フィルタドライバが行う処理流れの一例を示す。
【図１０】上位ディスク管理フィルタドライバの動作流れの一例を示す。
【図１１】管理モジュール３４００が行うボリューム登録要求応答処理の流れの一例を示す。
【図１２】管理モジュール３４００が行うボリューム認識可否判定処理の流れの一例を示す。
【図１３】下位ディスク制御情報の構成例を示す。
【図１４】下位ディスク制御情報２５を登録するために下位ディスク管理フィルタドライバ３３００によって行われる処理流れの一例を示す。
【図１５】下位ディスク制御情報の要求に応答して管理モジュール３４００が行う処理の流れの一例を示す。
【図１６】Ｉ／Ｏ要求を受信した下位ディスク管理フィルタドライバ３３００が行う処理流れの一例を示す。
【図１７】Ｉ／Ｏ要求の戻り値を記憶制御システム２０Ａから受信した下位ディスク管理フィルタドライバ３３００が行う処理流れの一例を示す。
【図１８】Ｉ／Ｏ失敗時判定処理を行うことの要求を下位ディスク管理フィルタドライバ３３００から受けた管理モジュール３４００が行う処理流れの一例を示す。
【図１９】下位ディスク管理フィルタドライバ３３００の削除を行うその下位ディスク管理フィルタドライバ３３００の処理流れを示す。
【図２０】削除処理の要求を受けた管理モジュール３４００が行う処理流れの一例を示す。
【図２１】図２１Ａは、本発明の一実施形態の第二の実施例に係るストレージシステムの全体概要を示す。図２１Ｂは、第二の実施例の一つの変形例を示す。
【図２２】図２２Ａは、第二の実施例の別の変形例を示す。図２２Ｂは、第二の実施例のまた別の変形例を示す。
【図２３】第三実施例において、ボリューム管理ＡＰ４０００が提供する第一のＧＵＩ画面の構成例を示す。
【図２４】第三実施例において、ボリューム管理ＡＰ４０００が提供する第二のＧＵＩ画面の構成例を示す。
【符号の説明】
【０２０７】
２…物理記憶デバイス、３…ターゲットプログラム、２１０…RAIDグループ、２１１…ディスクドライブ、２１２…論理ボリューム、２２０…ディスク制御部、２３０…ホストＩ／Ｆ、２４０…装置間Ｉ／Ｆ、２５０…キャッシュメモリ、２６０…共有メモリ、２７０…スイッチング制御部、３１０…CPU、３２０…メモリ、３３０…ディスクドライブ、３４０…ディスクＩ／Ｆ、３５０…上位ネットワークＩ／Ｆ、３６０…キーボードスイッチ、３７０…ディスプレイ、３８０…バス、ＣＮ…ネットワーク、Ｈ…ホストコンピュータ、１１１０…ボリューム管理コンピュータプログラム群、１１３０…ＯＳ、３０００…ボリュームモジュール、３１００…上位ディスク管理フィルタドライバ、３２００…物理ディスクモジュール、３３００…下位ディスク管理フィルタドライバ、３４００…管理モジュール、３５００…第２アプリケーション、３６００…コピー制御モジュール、４０００…ボリューム管理アプリケーション
【図１】
2006011874.tif 000003
【図２】
2006011874.tif 000004
【図３】
2006011874.tif 000005
【図４】
2006011874.tif 000006
【図５】
2006011874.tif 000007
【図６】
2006011874.tif 000008
【図７】
2006011874.tif 000009
【図８】
2006011874.tif 000010
【図９】
2006011874.tif 000011
【図１０】
2006011874.tif 000012
【図１１】
2006011874.tif 000013
【図１２】
2006011874.tif 000014
【図１３】
2006011874.tif 000015
【図１４】
2006011874.tif 000016
【図１５】
2006011874.tif 000017
【図１６】
2006011874.tif 000018
【図１７】
2006011874.tif 000019
【図１８】
2006011874.tif 000020
【図１９】
2006011874.tif 000021
【図２０】
2006011874.tif 000022
【図２１】
2006011874.tif 000023
【図２２】
2006011874.tif 000024
【図２３】
2006011874.tif 000025
【図２４】
2006011874.tif 000026