(57)【要約】【課題】順序性を保証したリモートコピーに使用するバッファに関し、コピー先装置に備わるバッファが、コピー元先装置に備わるバッファより少ない場合であっても、コピー元装置が有するバッファを有効に使用できるストレージシステムを提供する。【解決手段】上記課題を解決するために、コピー元装置１０１に、コピー先装置１１１に設けられた受信用バッファの識別に用いられる受信用バッファ識別情報を取得する識別情報取得部と、前記受信用バッファに転送するデータを格納する送信用バッファと、転送処理を行う際に、前記送信用バッファに設けられた送信用バッファ識別情報と前記受信用バッファ識別情報とに基づいて前記送信用バッファと前記受信用バッファとを対応づけるデータ転送制御部と、前記対応づけに基づいて前記送信用バッファのデータを前記受信用バッファに対して転送する転送処理部、とを備える。【選択図】図４
2010039574.tif 000002
【特許請求の範囲】
【請求項１】
上位装置から送信されるデータを記憶する第１の記憶ボリュームと前記第１の記憶ボリュームへの記憶を制御する第１の制御部とを備えた第１の記憶装置と、前記第１の記憶装置に記憶されたデータがネットワークを介してコピーされる第２の記憶ボリュームと前記第２の記憶ボリュームへの記憶を制御する第２の制御部とを備えた第２の記憶装置とを備えたストレージシステムであって、
前記第１の制御部は、
前記第２の記憶装置に設けられた受信用バッファの識別に用いられる受信用バッファ識別情報を取得する識別情報取得部と、
前記第２の記憶装置の前記受信用バッファに転送するデータを格納する送信用バッファと、
転送処理を行う際に、前記送信用バッファに設けられた送信用バッファ識別情報と前記受信用バッファ識別情報とに基づいて前記送信用バッファと前記受信用バッファとを対応づけるデータ転送制御部と、
前記対応づけに基づいて前記送信用バッファのデータを前記受信用バッファに対して転送する転送処理部とを備えたことを特徴とするストレージシステム。
【請求項２】
前記第１の記憶装置に、前記送信用バッファに記憶されたデータを一時的に退避する退避用ボリュームと、前記退避用ボリュームへのデータ退避を制御する退避制御部とをさらに備え、
前記退避制御部は、前記送信用バッファの使用状態が所定の状態に達すると前記送信用バッファに格納されたデータを世代単位で前記退避用バッファに退避させることを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記退避制御部は、前記送信用バッファに格納されたデータのうち、転送用意が完了し、かつ転送順位が低い世代のデータを前記退避用ボリュームに退避させることを特徴とする請求項２に記載のストレージシステム。
【請求項４】
前記制御部に、前記送信用バッファの書き込み状態を示す第１のポインタを備え、
前記退避制御部は、前記第１のポインタに基づいて前記退避用ボリュームに前記転送順位が低い世代のデータを退避さることを特徴とする請求項３に記載のストレージシステム。
【請求項５】
前記制御部に、前記送信用バッファの読み出し状態を示す第２のポインタと、
前記第２のポインタに基づいて前記退避用ボリュームから前記転送順位が低い世代のデータを復元する復元制御部をさらに備えた事を特徴とする請求項１から４に記載のストレージシステム。
【請求項６】
前記前記復元制御部は、前記送信用バッファに格納されている転送順位が低い世代のデータが使用可能な場合は、前記転送順位が低い世代のデータに付随する制御データのみを前記退避用ボリュームから前記送信用バッファに復元する事を特徴とする請求項１から４に記載のストレージシステム。
【請求項７】
上位装置から送信されるデータを記憶する第１の記憶ボリュームと、
前記第１の記憶ボリュームへの記憶制御とネットワークを介して接続される第２の記憶ボリュームへのコピー制御をおこなう制御部とを備えた記憶装置であって、
前記制御部は、
前記第２の記憶ボリュームを備える受信側記憶装置に設けられた受信用バッファの識別に用いられる受信用バッファ識別情報を取得する識別情報取得部と、
前記第２の記憶装置の前記受信用バッファに転送するデータを格納する送信用バッファと、
転送処理を行う際に、前記送信用バッファに設けられた送信用バッファ識別情報と前記受信用バッファ識別情報とに基づいて前記送信用バッファと前記受信用バッファとを対応づけるデータ転送制御部と、
前記対応づけに基づいて前記送信用バッファのデータを前記受信用バッファに対して転送する転送処理部とを備えたことを特徴とする記憶装置。
【請求項８】
上位装置から送信されるデータを記憶する第１の記憶ボリュームへの記憶制御とネットワークを介して接続される第２の記憶ボリュームへのコピー制御をおこなう制御部とを備えた記憶装置の制御方法であって、
前記第２の記憶ボリュームを備える受信側記憶装置に設けられた受信用バッファの識別に用いられる受信用バッファ識別情報を取得する識別情報取得ステップと、
前記受信側記憶装置の前記受信用バッファに転送するデータを送信用バッファに格納するデータ格納ステップと、
転送処理を行う際に、前記送信用バッファに設けられた送信用バッファ識別情報と前記受信用バッファ識別情報とに基づいて前記送信用バッファと前記受信用バッファとを対応づけるデータ転送制御ステップと、
前記対応づけに基づいて前記送信用バッファのデータを前記受信用バッファに対して転送する転送処理ステップとを備えたことを特徴とする記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１または２以上の記憶装置を有するストレージシステムであって、順序性を保証した非同期のコピー機能を有するストレージシステムに関する。
【背景技術】
【０００２】
従来、分散キャッシュメモリ型のストレージシステムを採用するＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）装置では、性能や信頼性の向上のために、ストレージに対するデータの入出力を制御する制御モジュールを複数備える冗長構成が採用されている。そして、制御モジュール毎に、論理ボリュームに対するデータのＲｅａｄ／Ｗｒｉｔｅ処理が実行される。
【０００３】
また、このようなＲＡＩＤ装置では、信頼性等の向上のために、アドバンスト・コピーといわれる順序性を保証したリモートコピー機能が備えられる。
図３３は、順序性を保証したリモートコピー機能を備えるＲＡＩＤ装置の従来例を示す図である。なお、図３３は、制御モジュール００および０１を備えるＲＡＩＤ装置３３０１と、制御モジュール１０および１１を備えるＲＡＩＤ装置３３０２と、で構成されるストレージシステムを示している。
【０００４】
各ＲＡＩＤ装置は、記憶媒体に記憶した若しくは記憶するデータを複数に分割した領域に一時的に記憶するバッファと、バッファに記憶したデータに対して領域毎に割り付けられるインデックスを記憶するＢＩＴ（Ｂｕｆｆｅｒ  Ｉｎｄｅｘ  Ｔａｂｌｅ）と、を有する記録バッファと、コピー対象のデータが記憶されているコピー元装置に備わる１または２以上のバッファとコピー元装置から送られたデータを記憶するコピー先装置に備わる１または２以上のバッファとの組み合わせからなるバッファセットを記憶するバッファセット記憶部と、データを記憶する記憶媒体と、を備える。
【０００５】
順序性を保証するリモートコピーでは、コピー元装置において、記憶媒体からコピー対象のデータを読み出して順次記録バッファに格納していく。そして、記録バッファ内の全ての領域を使い切る、若しくは一定時間経過すると、コピー元装置は、バッファセットにしたがって、ネットワークを介して接続されたコピー先装置３３０２に対して、記録バッファのデータをまとめて送信する（この送信方式を、以下「まとめ送り方式」という）。この時、バッファセットも同時に送信する。
【０００６】
一方、コピー先装置３３０２では、コピー元装置３３０１からデータを受信すると、当該データを記録バッファに一時的に格納する。また、コピー先装置３３０２は、受信したバッファセットも自身のバッファセット記憶部に格納する。全てのデータを受信すると、コピー先装置３３０２は、記録バッファのデータを所定の記録媒体内に展開する。
【０００７】
以上のように、記録バッファを使用したまとめ方式によるデータ送信を行なって、バッファセットを一括制御し、コピー先装置３３０２において、バッファセット単位でデータを記憶媒体に展開することで、順序性を保証している。
【０００８】
図３３では、コピー元装置３３０１における制御モジュールおよび制御モジュールが有する記録バッファの数とコピー先装置３３０２における制御モジュールおよび制御モジュールが有する記録バッファの数とが同数の場合の例を示した。
【０００９】
同様に、コピー元装置３３０１における制御モジュールおよび制御モジュールが有する
記録バッファの数より、コピー先装置３３０２における制御モジュールおよび制御モジュールが有する記録バッファの数の方が多い場合には、コピー元装置３３０１の全てのバッファセットを有効に利用することができる。
【００１０】
しかし、コピー元装置３３０１における制御モジュールおよび制御モジュールが有する記録バッファの数が、コピー先装置３３０２における制御モジュールおよび制御モジュールが有する記録バッファの数より多い場合には、コピー元装置３３０１の全てのバッファセットを有効に利用することができないという問題があった。
【００１１】
図３３は、コピー元装置における制御モジュールの数が、コピー先装置における制御モジュールの数より多い場合の例を示す図である。図３３には、制御モジュール００、０１、０２および０１を備えるＲＡＩＤ装置３３０１と、制御モジュール１０および１１を備えるＲＡＩＤ装置３３０２と、で構成されるストレージシステムを示している。
【００１２】
図３３と同様に、各ＲＡＩＤ装置は、記憶媒体に記憶した若しくは記憶するデータを複数に分割した領域に一時的に記憶するバッファと、バッファに記憶したデータに対して領域毎に割り付けられるインデックスを記憶するＢＩＴと、を有する記録バッファと、コピー元のバッファのＩＤとコピー先のバッファのＩＤとからなるバッファセットを記憶するバッファセット記憶部と、データを記憶する記憶媒体と、を備える。
【００１３】
例えば、制御モジュールにおけるバッファの領域が８個である場合、コピー元装置３３０１における制御モジュールが４台に対して、コピー先装置３３０２における制御モジュールが２台しかないので、上述のまとめ送り方式によるデータ送信を行なう場合、コピー元装置３３０１の制御モジュールで有効に使用できるバッファの領域の数は半分の４個となり、残りのバッファは使用できない。
【００１４】
上記技術に関連して、書き込みデータを一時的に格納する書き込みバッファの使用状況を監視し、バッファの空き容量が少なくなった場合にバッファ内の情報を別途用意した高速ディスクシステムに書き出し、使用状況が好転した場合に待避させたデータを再びバッファに書き戻すディスクアレイシステムのバックアップ装置が知られている。
【００１５】
また、一次装置と二次装置との間の距離に関係なく各ホストの書き込みに対する低い待ち時間を達成することにより、故障時における二次装置の一貫性（修復性）を提供する仮想順序付け書込み方法が知られている。
【００１６】
また、管理計算機、ホスト計算機、第一の記憶装置および第二の記憶装置を備えるシステムにおいて、第一の記憶装置の複製データを第二の記憶装置に遠隔データコピーにより維持する際、ホスト計算機から第一の記憶装置へのアクセス量の変化等を監視し、当該変化等に応じて管理計算機が遠隔データコピーの方式の切り替えを記憶装置へ指示するデータコピー方式の切り替え方法が知られている。
【００１７】
また、分散キャッシュメモリ型のストレージシステムのスケーラビリティの優位性を維持しつつ、順序性保証を保証するリモートコピー機能を備えるストレージシステムが知られている。
【００１８】
また、あらかじめリモートコピーのための予約バッファを確保してバッファ予約対象を用いて行う通信のバッファ不足を回避することにより、アプリケーション処理の中断を防止するストレージ装置が知られている。
【００１９】
また、更新データの送信プロトコルにおけるオーバヘッドを小さくし、かつデータ更新
の順序保証機能およびコピー停止機能を実現するディスクアレイ装置間の遠隔データコピー方式が知られている。
【特許文献１】特開２００６−２６８４２０号公報
【特許文献２】特開２００６−５２３８９０号公報
【特許文献３】特開２００６−２３６０１９号公報
【特許文献４】特開２００６−２６０２９２号公報
【特許文献５】特開２００５−１２２２３５号公報
【特許文献６】特開２００３−１６７６８４号公報
【発明の開示】
【発明が解決しようとする課題】
【００２０】
本発明は、上述した問題に鑑みてなされたものであり、その解決しようとする課題は、順序性を保証したリモートコピーに使用するバッファに関し、コピー先装置に備わるバッファが、コピー元先装置に備わるバッファより少ない場合であっても、コピー元装置が有するバッファを有効に使用できるストレージシステムを提供することである。
【課題を解決するための手段】
【００２１】
上記課題を解決するために、本ストレージシステムは、上位装置から送信されるデータを記憶する第１の記憶ボリュームと前記第１の記憶ボリュームへの記憶を制御する第１の制御部とを備えた第１の記憶装置と、前記第１の記憶装置に記憶されたデータがネットワークを介してコピーされる第２の記憶ボリュームと前記第２の記憶ボリュームへの記憶を制御する第２の制御部とを備えた第２の記憶装置とを備えたストレージシステムであって、前記第１の制御部は、前記第２の記憶装置に設けられた受信用バッファの識別に用いられる受信用バッファ識別情報を取得する識別情報取得部と、前記第２の記憶装置の前記受信用バッファに転送するデータを格納する送信用バッファと、転送処理を行う際に、前記送信用バッファに設けられた送信用バッファ識別情報と前記受信用バッファ識別情報とに基づいて前記送信用バッファと前記受信用バッファとを対応づけるデータ転送制御部と、前記対応づけに基づいて前記送信用バッファのデータを前記受信用バッファに対して転送する転送処理部と、を備える。
【００２２】
本ストレージシステムによると、第１の制御部では、転送処理を行う際に、送信用バッファに設けられた送信用バッファ識別情報と受信用バッファ識別情報とに基づいて送信用バッファと受信用バッファとを対応づけてテータ転送を行なうので、受信用バッファに空きがなくても、送信用バッファに空きがあれば受信処理が可能となるので、コピー処理を継続することが可能となる。また、受信用バッファに空きがある間に、送信用バッファに空きが生じれば、第１の記憶装置から第２の記憶装置へのコピー処理も可能となる。
【発明の効果】
【００２３】
以上に説明したように、開示のストレージシステムによると、コピー先装置に備わるバッファが、コピー元装置に備わるバッファより少ない場合であっても、コピー元装置が有するバッファを有効に使用できるストレージシステムを提供することが可能となる。
【発明を実施するための最良の形態】
【００２４】
以下、実施形態の一例について、図１〜図３３に基づいて説明する。
図１は、本実施例に係るストレージシステム１００の構成の概要を示す図である。
図１に示すストレージシステム１００は、制御モジュール１０２ａ、１０２ｂ、１０２ｃおよび１０２ｄを有するＲＡＩＤ装置１０１と、制御モジュール１１２ａ、１１２ｂ、１１２ｃおよび１１２ｄを有するＲＡＩＤ装置１１１と、を備える分散キャッシュメモリ型のストレージシステムである。
【００２５】
制御モジュール１０２ａは、所定のプログラム命令を実行して制御モジュール１０２ａを動作させるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０３ａと、後述するＢＩＴ、記録バッファやバッファセット記憶部等に使用するメモリ１０４ａと、ホストコンピュータ（以下、「ホスト」という）１０９とのインターフェース制御部であるＣＡ（Ｃｈａｎｎｅｌ  Ａｄａｐｔｅｒ）１０５ａと、ネットワークまたは専用線１２０を介して接続される他のＲＡＩＤ装置等とのインターフェース制御部であるＲＡ（Ｒｅｍｏｔｅ  Ａｄａｐｔｅｒ）１０６ａと、ディスク装置１０８ａとのインターフェース制御部であるＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）１０７ａと、磁気ディスク装置などの記憶装置で構成されるディスク装置１０８ａと、を備える。
【００２６】
ＲＡＩＤ装置１０１に備わる制御モジュール１０２ｂ、１０２ｃおよび１０２ｄや、ＲＡＩＤ装置１１１に備わる制御モジュール１１２ａ、１１２ｂ、１１２ｃおよび１１２ｄも同様の構成である。
【００２７】
以上の構成において、例えば、「識別情報取得部」、「データ転送制御部」、「転送処理部」、「退避制御部」、「復元制御部」などは、ＣＰＵ１０３ａがメモリ１０４ａ上の所定の領域に展開されたプログラム命令を実行することによって実現することができる。
【００２８】
また、「送信用バッファ」、「第１のポインタ」、「第２のポインタ」などは、メモリ１０４ａの一部の領域を用いて実現することができ、「退避用ボリューム」は、１または２以上の磁気ディスク装置等で構成されるディスク装置１０８ａの一部を用いて実現することができる。
【００２９】
以下の実施例では、ＲＡＩＤ装置１０１からＲＡＩＤ装置１１１にリモートコピーを行なう場合について説明する。そして、この場合のＲＡＩＤ装置１０１を「コピー元装置１０１」といい、ＲＡＩＤ装置１１１を「コピー先装置１１１」という。
【００３０】
なお、図１では、ＲＡＩＤ装置１０１および１１１が４つの制御モジュールで構成されている場合について示しているが、これに限定する趣旨ではない。同様に、ＣＡ、ＲＡおよびＦＣの数についても、図１に示す数に限定する趣旨ではない。
【００３１】
図２は、本実施例に係る制御モジュールが備えるメモリ、例えば、図１に示したメモリ１０４ａ、１１４ａの具体的な構成例を示す図である。
図２に示すように、本実施例に係るＲＡＩＤ装置１０１または１１１の制御モジュールに備わるメモリ２００は、ディスク装置に記憶しもしくは記憶したデータを一時的に記憶・管理する記録バッファ２０１と、バッファセットを格納するバッファセット記憶部２０２と、コピー先装置１１１における未使用のバッファのバッファＩＤを記憶する未使用バッファＩＤ記憶部２０３と、を備える。
【００３２】
バッファ２０１ａは、一定サイズに分割された複数の領域（以下、「世代」という）毎にデータが管理される記憶部であり、各世代には、それぞれディスク装置１０８ａなどのディスク装置に記憶しもしくは記憶するデータ（例えば、後述するＷｒｉｔｅデータ）が一時的に記憶される。
【００３３】
バッファ２０１ａ内に記載の（００００）、（０００１）、（０００２）、・・・に関し、括弧内の数字００００、０００１、０００２、・・・は各世代に割当てられたバッファＩＤを示し、括弧付きの数字（００００）、（０００１）、（０００２）、・・・は、それぞれ括弧内の数字のバッファＩＤのバッファに任意のデータが格納されていることを意味している。
【００３４】
ＢＩＴ２０１ｂは、バッファ２０１ａの世代毎に、当該世代に記憶されているデータが展開されているＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）やＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）、データサイズ、コピーセッションの番号などが記憶されるテーブルである。
【００３５】
ＢＩＴ２０１ｂ内に記載の００００、０００１、０００２、・・・はバッファ２０１ａの世代毎に割当てられているバッファＩＤを示す。例えば、ＢＩＴ２０１ｂ内の００００には、バッファＩＤが００００のバッファに記憶されているデータが展開されているＬＵやＬＢＡ、データサイズ、コピーセッションの番号などが記憶されていることを示す。  バッファセット記憶部２０２は、ＲＡＩＤ装置間におけるリモートコピーを行なう場合、コピー対象のデータが格納されているコピー元装置１０１に備わるバッファのバッファＩＤ（以下、「コピー元ＩＤ」という）と、コピー先装置１１１に備わるバッファのバッファＩＤ（以下、「コピー先ＩＤ」という）と、の組合わせ（以下、「バッファセット」という）を記憶する。
【００３６】
本実施例のようにコピー元装置１０１やコピー先装置１１１に複数の制御モジュールを備える場合、バッファセットは、コピー対象のデータが格納されているバッファであってコピー元装置１０１に備わる複数の制御モジュールのバッファのバッファＩＤと、コピー元装置１０１から送られたデータを記憶するバッファであってコピー先装置１１１に備わる複数の制御モジュールのバッファのバッファＩＤと、の組合わせとなる。
【００３７】
例えば、図２に記載のバッファセット記憶部２０２には、図３に示すようにコピー元装置１０１に備わる制御モジュール００、０１、０２および０３がそれぞれバッファＩＤが００００、０１００、０２００および０３００のバッファを有し、図６に示すようにコピー先装置１１１に備わる制御モジュール００、０１、０２および０３がそれぞれバッファＩＤが１０００、１１００、１００１および１１０１のバッファを有する場合のバッファセットを示している。
【００３８】
すなわち、コピー元装置１０１に備わる制御モジュール００のバッファのバッファＩＤ「００００」とコピー先装置１１１に備わる制御モジュール００のバッファのバッファＩＤ「１０００」、コピー元装置１０１に備わる制御モジュール０１のバッファのバッファＩＤ「０１００」とコピー先装置１１１に備わる制御モジュール０１のバッファのバッファＩＤ「１１００」、コピー元装置１０１に備わる制御モジュール０２のバッファのバッファＩＤ「０２００」とコピー先装置１１１に備わる制御モジュール０２のバッファのバッファＩＤ「１００１」、コピー元装置１０１に備わる制御モジュール０３のバッファのバッファＩＤ「０３００」とコピー先装置１１１に備わる制御モジュール０３のバッファのバッファＩＤ「１１０１」、の組み合わせが定義されている。
【００３９】
なお、以下の説明では、新たに記録バッファ２０１に格納されるバッファ若しくはそのバッファについてのバッファセットの世代を「新世代」、既に記録バッファ２０１に格納されているバッファ若しくはそのバッファについてのバッファセットの世代を「旧世代」という。
【００４０】
未使用バッファＩＤ記憶部２０３は、コピー先装置１１１に備わる未使用のバッファのバッファＩＤを記憶する。例えば、コピー元装置１０１の未使用バッファＩＤの通知の要求に応じて、コピー先装置１１１から未使用のバッファのバッファＩＤの通知を受けると、コピー元装置１０１は、通知されたバッファＩＤを未使用バッファＩＤ記憶部２０３に記憶する。
【００４１】
以上の構成において、本実施例に係るリモートコピー処理では、例えば、コピー元装置
１０１におけるＷｒｉｔｅデータの記録バッファ２０１への格納、コピー先装置１１１への転送、コピー先装置１１１における転送データのディスク装置１１８ａへの展開等の処理を、バッファセット単位で一括して行うことにより、ストレージシステム全体の順序性を保証している。
【００４２】
本実施例に係るコピー元装置１０１は、コピー元装置１０１−コピー先装置１１１間のネットワーク状態を監視し、ネットワークの状況に応じて、コピー元装置１０１−コピー先装置１１１間のリモートコピー処理を制御する。リモートコピー処理は、例えば、図１１、図１２、図１４Ａ、図１４Ｂ、図１５などに示す。
【００４３】
また、本実施例に係るコピー元装置１０１は、コピー元装置１０１からコピー先装置１１１へのデータ転送直前にバッファセットを確定する。すなわち、コピー元装置１０１は、データ転送直前に、転送対象のデータが記憶されているコピー元装置１０１のバッファと、転送先のコピー先装置１１１のバッファと、の関連づけを行なう。
【００４４】
その結果、コピー元装置１０１では、Ｗｒｉｔｅデータ等をバッファに格納する際に転送先であるコピー先装置１１１のバッファを確保する必要がなくなるので、コピー元装置１０１は、転送先となるコピー先装置に空きバッファがなくても、Ｗｒｉｔｅデータ等をコピー元装置１０１のバッファに格納する処理が可能となる。
【００４５】
そして、コピー先装置１１１に空きバッファが発生すると、コピー元装置１０１は、この段階でバッファセットを確定し、コピー先装置１１１へのデータ転送を行なう。そのため、コピー先装置１１１に備わるバッファがコピー元装置１０１に備わるバッファより少ない場合であっても、コピー元装置１０１のバッファを有効に使用してリモートコピー処理を行なうことが可能となる。
【００４６】
すなわち、コピー元装置１０１に備わるリモートコピーに使用するバッファのサイズと、コピー先装置１１１に備わるリモートコピーに使用するバッファのサイズと、が不一致の場合であっても、有効にバッファを使用して効率的なリモートコピー処理を行なうことが可能となる。
【００４７】
（本実施例に係るリモートコピー処理の概要）
図３〜図８に基づいて、本実施例に係るリモートコピー処理の概要を説明する。なお、図３〜図６および図８は、リモートコピー処理時におけるコピー元装置１０１またはコピー先装置１１１における記録バッファ２０１、バッファセット記憶部２０２および未使用バッファＩＤ記憶部２０３の状態を示す図である。
【００４８】
コピー元装置１０１が、ホスト１０９から、例えば、Ｗｒｉｔｅ  Ｉ／Ｏ命令を受付けると、Ｗｒｉｔｅ  Ｉ／Ｏ命令を受付けた制御モジュール００、０１、０２または０３は、Ｗｒｉｔｅ  Ｉ／Ｏ命令にしたがって、その制御モジュールに備わるディスク装置１０８ａ、１０８ｂ、１０８ｃまたは１０８ｄにＷｒｉｔｅデータを記憶する。
【００４９】
同時に、Ｗｒｉｔｅ  Ｉ／Ｏ命令を受けた制御モジュール００、０１、０２または０３は、図３に示すように、当該命令とともに受信したＷｒｉｔｅデータをバッファ２０１ａ、３０１ａ、４０１ａまたは５０１ａの所定の世代に記憶するとともに、Ｗｒｉｔｅデータを記憶した世代に割り当てたインデックスをＢＩＴ２０１ｂに記憶する。
【００５０】
また、コピー元装置１０１は、バッファセット記憶部２０２にコピー元ＩＤだけを設定し、コピー先ＩＤが未確定な状態のバッファセットを作成する。
一方、コピー元装置１０１は、コピー先装置１１１に対して未使用バッファの通知を依頼し、コピー先装置１１１から未使用状態となったバッファについて通知を受けると、コ
ピー元装置１０１は、当該未使用バッファに対応する未使用バッファＩＤを未使用バッファＩＤ記憶部２０３に記憶する。
【００５１】
以上のように、本実施例に係るリモートコピー処理では、バッファセット作成時に、バッファセット記憶部にはコピー元ＩＤだけを設定し、コピー先ＩＤは設定しない。すなわち、コピー元のバッファとコピー先のバッファとのマッチング処理は、バッファセット作成時には行なわず、後述するように、バッファのデータを転送先に転送する直前に行なう。
【００５２】
これにより、コピー元装置１０１に備わるバッファを有効に使用することができる。その結果、コピー先装置に備わるバッファが、コピー元先装置に備わるバッファより少ない場合であっても、コピー元装置が有するバッファを有効に使用することが可能となる。
【００５３】
図４に示すように、（ａ）コピー元装置１０１は、格納対象のバッファセットで一定時間経過もしくは，データを格納すべき領域がなくなった場合、次のバッファセットを格納対象に切り替える「バッファセット切り替え」を行う。バッファセット切り替えが行われると、古いバッファセットは転送対象となる。
【００５４】
また、（ｂ）コピー元装置１０１は、転送対象のバッファセットに未使用バッファＩＤ記憶部２０３から取得した未使用のコピー先ＩＤを割当てる。そして、割り当てられたバッファＩＤは未使用バッファＩＤ記憶部２０３から削除される。
【００５５】
具体的には、コピー元装置１０１は、バッファセット切り替えの際に、未使用バッファＩＤ記憶部２０３を参照し、未使用バッファＩＤを必要に応じた数だけ取得する。そして、コピー元装置１０１は、バッファセット切り替えにより転送対象となったバッファセットにおけるバッファセット記憶部２０２のコピー先ＩＤに、取得した未使用バッファＩＤを設定する。
【００５６】
そして、（ｃ）バッファセットの設定（上述の（ａ）および（ｂ）の処理）が完了すると、コピー元装置１０１は、バッファ単位でバッファに格納された情報を転送する。
なお、コピー元装置１０１は、未使用バッファＩＤ記憶部２０３から取得した未使用バッファＩＤは、未使用バッファＩＤ記憶部２０３から削除する。また、未使用バッファＩＤ記憶部２０３から必要な数の未使用バッファＩＤを取得できない場合には、必要な数の未使用バッファＩＤを取得できるまで、バッファの転送処理を中断する。
【００５７】
本実施例に係るリモートコピー処理では、以上に説明した処理に加えて、以下に説明する処理を行なう。
本実施例に係るコピー元装置１０１は、コピー元装置１０１−コピー先装置１１１間のネットワーク５０１の状態を監視する。そして、図５に示すように、装置間のデータ転送経路が閉塞状態（以下、「経路閉塞状態」という）であることを検出すると、コピー元装置１０１は、（ａ）経路閉塞により再転送対象となったバッファセットの組み合わせを保持する。すなわち、記録バッファ２０１およびバッファセット記憶部２０２の状態を保持する。また、コピー元装置１０１は、（ｂ）未使用バッファＩＤ記憶部２０３に記憶されている未使用バッファＩＤを全てクリアする。
【００５８】
また、コピー元装置１０１は、経路閉塞状態中にホスト１０９からのＷｒｉｔｅ  Ｉ／Ｏ命令を受けると、（ｃ）可能な限りＷｒｉｔｅ  Ｉ／Ｏ命令を受付ける。そして、コピー元装置１０１は、記録バッファ２０１、３０１、４０１または５０１にＷｒｉｔｅデータを格納する。
【００５９】
例えば、経路閉塞中にホスト１０９からのＷｒｉｔｅ  Ｉ／Ｏ命令を受付けると、コピー元装置１０１は、各制御モジュールのバッファにデータを格納していく。例えば、図５に示す制御モジュールａでは、記録バッファ２０１のバッファ０００２、０００３、・・・、０００７に順次データが格納される。経路閉塞中にいずれかの制御モジュールの記録バッファのバッファにデータを格納しきってしまった場合、コピー元装置１０１は、バッファに格納されているデータをＢＩＴ情報にしたがって各セッションのビットマップに書き戻すバッファＨａｌｔ処理を行なう。
【００６０】
したがって、記録バッファ２０１が枯渇する前に、経路閉塞状態が解消されれば、ホスト１０９への影響を抑えることが可能となる。
その結果、一時的な経路閉塞が発生しても、コピー元装置１０１には可能な限りのＷｒｉｔｅ  Ｉ／Ｏを溜め込むことができ、経路再開通時までにバッファを使用しつくさなければ、バッファの転送再開時に経路閉塞中にバッファにためていたデータの送信を再開することが可能となるので、順序性を保証したリモートコピーを継続することが可能となる。
【００６１】
また、コピー元装置１０１は、（ｄ）経路閉塞状態の検出時にバッファ転送完了または転送中などのバッファ未解放状態であったバッファセットを、再転送の対象とし、経路閉塞状態解消後に改めて転送を行なう。
【００６２】
コピー先装置１１１は、コピー元装置１０１と同様に、コピー元装置１０１−コピー先装置１１１間のネットワーク６０１の状態を監視する。図６に示すように、経路閉塞状態を検出すると、コピー先装置１１１は、（ａ）展開待ち状態の世代の展開処理は行わない。例えば、「転送中」または「転送済みかつ解放待ち」のバッファセットについては、記録バッファ６０１、７０１、８０１または９０１内のバッファに格納されているデータはディスク装置に展開せず、バッファセット記憶部６０２、７０２、８０２または９０２の内容を保持し、コピー元ＩＤとのマッチングをそのままにコピー元装置１０１による再度転送待ちとなる。そして、コピー元装置１０１から未使用となったバッファＩＤの通知を要求する「未使用バッファ通知要求コマンド」が発行されるまで待ち状態となる。
【００６３】
また、コピー先装置１１１は、（ｂ）経路閉塞検出時に展開処理をしていた世代は展開処理を完了するまで行う。すなわち、経路閉塞状態検出時に、記録バッファ６０１、７０１、８０１および９０１内のデータのディスク装置への展開処理が途中の処理は、完了するまで継続して行なう。
【００６４】
なお、図６に示したコピー先装置１１１も未使用バッファＩＤ記憶部２０３を備えていてもよいが、説明を簡単にするために図示省略してある。ただし、図示省略は図６の構成に本発明を限定する趣旨ではない。
【００６５】
図７は、経路閉塞状態解消時におけるコピー元装置１０１−コピー先装置１１１間のリモートコピー処理を示す図である。
（ａ）経路閉塞状態が解消すると、コピー元装置１０１は、コピー先装置１１１に対してバッファ通知要求コマンドを発行する。この時、コピー元装置１０１は、経路閉塞状態におけるバッファＨａｌｔ処理の実施の有無についての情報をバッファ通知要求コマンドに付加する。
【００６６】
（ｂ）バッファ通知要求コマンドを受付けると、コピー先装置１１１は、当該コマンドとともに通知されたバッファＨａｌｔ処理の実施の有無を参照する。そして、コピー元装置１０１においてバッファＨａｌｔ処理が実施されていた場合、コピー先装置１１１も、バッファＨａｌｔ処理を行ない、コピー元装置１０１に対してエラー応答を返す。そして
、バッファＨａｌｔ処理が完了すると、コピー先装置１１１は、再度コピー元装置１０１からのバッファ通知要求コマンド受信待ちの状態となる。
【００６７】
一方、（ｂ‘）コピー先装置１１１からの応答がエラー応答の場合、コピー元装置１０１は、リトライ処理を行う。すなわち、コピー先装置１１１に対して再度バッファ通知要求コマンドを発行する。
【００６８】
（ｃ）コピー元装置１０１においてバッファＨａｌｔ処理が実施されていない場合、コピー先装置１１１は、コピー元装置１０１に対してバッファ情報通知コマンドを発行し、未使用バッファＩＤ等のバッファ情報をコピー元装置１０１に通知し、リモートコピー処理を再開する。
【００６９】
（ｄ）コピー元装置１０１は、通知されたバッファ情報を未使用バッファＩＤ記憶部に格納してＣｏｎｓｉｓｔｅｎｃｙ動作を再開する。すなわち、コピー元装置１０１は、コピー先装置１１１から通知された未使用バッファＩＤを未使用バッファＩＤ記憶部２０３に記憶する。そして、コピー元装置１０１は、通知された未使用バッファＩＤと、再転送の対象としてバッファセット記憶部２０２に保持されているバッファセットにおけるコピー先ＩＤとに矛盾がないことを確認すると、リモートコピー処理を再開するとともに、正常応答をコピー先装置１１１に返す。
【００７０】
この時のコピー元装置１０１の状態記録バッファ２０１、バッファセット記憶部２０２および未使用バッファＩＤ記憶部２０３の状態を図８に示す。
コピー元装置１０１は、経路閉塞状態が解消され、コピー先装置１１１から未使用バッファＩＤを通知されると、当該未使用バッファＩＤを未使用バッファＩＤ記憶部２０３に記憶する。
【００７１】
ここで、（ａ）経路閉塞を検出した時にデータが転送完了したが未解放のバッファ、または転送中などで未解放のバッファを再転送処理の対象とする。再転送処理の対象となるので、再転送処理の対象となる領域は開放されず記録バッファ２０１の内容が保持される。
【００７２】
図８では、例えば、バッファセット記憶部２０２、３０２、４０２および５０２にそれぞれ記憶されたバッファセットであって、（コピー元ＩＤ−コピー先ＩＤ）が（００００−１０００）、（０１００−１１００）、（０２００−１００１）および（０３００−１１０１）からなる組み合わせのバッファセットと、（０００１−１００２）、（０１０１−１１０２）、（０２０１−１００３）および（０３０１−１１０３）からなる組み合わせのバッファセットと、が再転送の対象となっている場合を示している。
【００７３】
ここで、００００および０００１、０１００および０１０１、０２００および０２０１、０３００および０３０１は、それぞれコピー元装置１０１に備わる制御モジュール００、０１、０２および０３が有するバッファ２０１ａ、３０１ａ、４０１ａおよび５０１ａのバッファＩＤである。
【００７４】
また、１０００および１００２、１１００および１１０２、１００１および１００３、１１０１および１１０３は、それぞれ図６に示したコピー先装置１１１に備わる制御モジュール００、０１、０２および０３が有するバッファ６０１ａ、７０１ａ、８０１ａおよび９０１ａのバッファＩＤである。
【００７５】
なお、図８に記載の記録バッファ２０１、３０１、４０１および５０１内は、バッファ
ＩＤの一部を図示省略している。また、バッファセット記憶部２０２、３０２、４０２および５０２には、バッファセットの一部としてコピー元ＩＤ（例えば、０００２、０１０２、０２０２、０３０２）が格納されている。
【００７６】
（ｂ）経路再開通を検出すると、コピー元装置１０１は、未使用バッファＩＤ記憶部２０３を参照し、未使用バッファＩＤ記憶部２０３に含まれる未使用バッファＩＤと、バッファセット記憶部２０２に記憶されている再転送対象のバッファセットにおけるコピー先ＩＤと、が重複しないことを確認する。
【００７７】
未使用バッファＩＤが重複して矛盾が生じたと判断した場合、コピー元装置１０１は、未使用バッファＩＤ記憶部２０３から矛盾が生じないように新たな未使用バッファＩＤをコピー先装置１１１から取得し、コピー先ＩＤに設定する。
【００７８】
（ｃ）再転送対象のバッファセットにおけるコピー先ＩＤがコピー先装置１１１から通知された未使用バッファＩＤが経路閉塞前と同じ場合、すなわち、未使用バッファＩＤ記憶部２０３に含まれる未使用バッファＩＤと、バッファセット記憶部２０２に記憶されている再転送対象のバッファセットにおけるコピー先ＩＤと、に重複するなどの矛盾がなければ、コピー元装置１０１は、そのままの状態から転送処理（リモートコピー処理）を再開する。矛盾が解消された場合も、コピー元装置１０１は、転送処理を再開する。
【００７９】
図９Ａおよび図９Ｂは、本実施例に係るリモートコピー処理の概要を示すフローチャートである。以下、図９Ａおよび図９Ｂに基づいて、本実施例に係るリモートコピー処理の概要を説明する。
【００８０】
ステップＳ９００ａにおいて、リモートコピー処理が開始されると、コピー元装置１０１は、処理をステップＳ９０１ａに移行する。
ステップＳ９０１ａにおいて、コピー元装置１０１は、バッファ初期構成処理を行なう。コピー元装置１０１は、例えば、あらかじめ設定された構成情報にしたがって、各制御モジュールに備わるメモリ２００に、図２に示した構成の領域を確保し、各領域について初期化を行なう。
【００８１】
ステップＳ９０２ａにおいて、コピー元装置１０１は、コピー先装置１１１に対して、未使用バッファの通知を要求するために、未使用バッファ通知要求コマンドを発行する。
一方、ステップＳ９０１ｂにおいて、コピー先装置１１１は、ステップＳ９０１ａと同様にバッファ初期構成処理を行なう。そして、コピー先装置１１１は、ステップＳ９０２ｂに処理を移行し、コピー元装置１０１からの未使用バッファ通知要求コマンドを受けるまで、当該コマンドを監視する（Ｓ９０２ｂ  ＮＯ）。
【００８２】
ステップＳ９０２ｂにおいて、コピー元装置１０１からの未使用バッファ通知要求コマンドを検出すると（Ｓ９０２ｂ  ＹＥＳ）、コピー先装置１１１は、処理をステップＳ９０３ｂに移行する。そして、コピー先装置１１１は、自身に備わる制御モジュールの記録バッファ２０１において、領域が解放された空きバッファを検索し、空きバッファを検出すると、当該バッファのバッファＩＤを未使用バッファＩＤとしてコピー元装置１０１に通知する。
【００８３】
ステップＳ９０３ａにおいて、コピー元装置１０１は、バッファセット初期作成処理を行う。例えば、既にホスト１０９からのＷｒｉｔｅ  Ｉ／Ｏ命令を受付けてそのＷｒｉｔｅ  Ｉ／Ｏ命令とともに受信したＷｒｉｔｅデータが、記録バッファ２０１のバッファ２０１ａに記録されている場合、バッファ２０１ａに記録されているバッファのバッファＩＤをコピー元ＩＤとするコピー先ＩＤが未定のバッファセットを生成し、生成したバッファセットをバッファセット記憶部２０２に記憶する。なお、本ステップでは、図３でも説明したように、コピー元装置１０１のバッファＩＤのみからなるバッファセットを生成しバッファセット記憶部２０２に記憶する。
【００８４】
また、ステップＳ９０３ａにおいて、コピー先装置１１１から未使用バッファＩＤの通知を受けると、コピー元装置１０１は、当該未使用バッファＩＤを未使用バッファＩＤ記憶部２０３に記憶する。そして、処理をステップＳ９０４ａに移行する。
【００８５】
ステップＳ９０４ａにおいて、コピー元装置１０１は、例えば、ホスト１０９からのＷｒｉｔｅ  Ｉ／Ｏ命令を受付けると、当該命令とともに受信したＷｒｉｔｅデータを、記録バッファ２０１のバッファ２０１ａに格納する。また、ステップＳ９０３ａと同様に、記憶したバッファのバッファＩＤをコピー元ＩＤとするコピー先ＩＤが未定のバッファセットを生成し、生成したバッファセットをバッファセット記憶部２０２に記憶する。
【００８６】
ステップＳ９０５ａにおいて、コピー元装置１０１は、受付けた全てのＷｒｉｔｅ  Ｉ／Ｏ命令について、バッファセット記憶部２０２へのバッファセットの格納が完了したか否かを判別する。バッファセット記憶部２０２へのバッファセットの格納が完了していないと判断した場合、コピー元装置１０１は、ステップＳ９０５ａの処理を繰返す（Ｓ９０５ａ  ＮＯ）。
【００８７】
ステップＳ９０５ａにおいて、バッファセット記憶部２０２へのバッファセットの格納が全て完了したと判断すると（Ｓ９０５ａ  ＹＥＳ）、コピー元装置１０１は、処理をステップＳ９０６ａに移行する。
【００８８】
ステップＳ９０６ａにおいて、コピー元装置１０１は、未使用バッファＩＤ記憶部２０３を参照する。そして、コピー元装置１０１は、未使用バッファＩＤが必要な数だけあるか否かを判別する。例えば、バッファセット記憶部２０２に格納されている全てのバッファセットにコピー先ＩＤを設定できる分だけ未使用バッファＩＤがあるか否かを判別する。
【００８９】
そして、必要な数だけ未使用バッファＩＤがない場合（Ｓ９０６ａ  ＮＯ）、コピー元装置１０１は、必要な数の未使用バッファＩＤを確認できるまでステップＳ９０６ａの処理を繰返し行なう。また、必要な数の未使用バッファＩＤがあると判断すると、コピー元装置１０１は、処理をステップＳ９０７ａに移行する（Ｓ９０６ａ  ＹＥＳ）。
【００９０】
ステップＳ９０７ａにおいて、コピー元装置１０１は、未使用バッファＩＤ記憶部２０３から、必要な数の未使用バッファＩＤを取得する。そして、コピー元装置１０１は、バッファセット記憶部２０２に設定されているバッファセットのコピー先ＩＤとして、取得した未使用バッファＩＤを設定する（例えば、図４を参照）。この処理を「マッチング処理」という。
【００９１】
ステップＳ９０８ａにおいて、コピー先装置１１１は、バッファセット記憶部２０２に記憶されているバッファセットにしたがって、コピー元ＩＤとコピー先ＩＤが設定されたバッファセットおよびバッファセットに設定されているコピー元ＩＤのバッファに格納されているデータおよびそのＢＩＴをコピー先装置１１１に送信する。
【００９２】
一方、コピー先装置１１１は、コピー元装置１０１からバッファセット等を受信すると、処理をステップＳ９０４ｂに移行する。
ステップＳ９０４ｂにおいて、コピー先装置１１１は、バッファセットの受信処理を行なう。例えば、コピー先装置１１１は、受信したバッファセットをバッファセット記憶部
２０２に記憶し、バッファセットとともに受信したデータを記録バッファ２０１に記憶する。
【００９３】
ステップＳ９０５ｂにおいて、コピー先装置１１１は、全てのバッファセットを受信したか否かを判別する。そして、まだ、全てのバッファセットを受信していないと判断すると（Ｓ９０５ｂ  ＮＯ）、コピー先装置１１１は、処理をステップＳ９０４ｂに移行し、ステップＳ９０４ｂ〜Ｓ９０５ｂの処理を繰返す。
【００９４】
ステップＳ９０５ｂにおいて、全てのバッファセットを受信したと判断すると（Ｓ９０５ｂ  ＹＥＳ）、コピー先装置１１１は、処理をステップＳ９０６ｂに移行する
ステップＳ９０６ｂにおいて、コピー先装置１１１は、記録バッファ２０１のバッファ２０１ａに記憶したデータを含む、ステップＳ９０４ｂで取得したバッファセットが、自身に備わる記憶装置のディスク装置に展開可能か否かを判断する。展開可能と判断すると（Ｓ９０６ｂＹＥＳ）、コピー先装置１１１は、処理をステップＳ９０７ｂに移行する。
【００９５】
ステップＳ９０７ｂにおいて、コピー先装置１１１は、ステップＳ９０４ｂで取得したデータを、自身に備わるディスク装置に展開する。当該展開が終了すると、コピー先装置１１１は、処理をステップＳ９０８ｂに移行し、バッファセットの展開が完了した旨をコピー元装置１０１に通知する。以下、この通知を「バッファセット展開完了通知」という。
【００９６】
バッファセットのディスク装置への展開が終了すると、ステップＳ９０９ｂにおいて、コピー先装置１１１は、バッファセットの解放処理を行なう。例えば、バッファセットを記憶するバッファセット記憶部２０２、そのバッファのバッファＩＤを記憶する記録バッファ２０１の領域を解放する。
【００９７】
ステップＳ９１０ｂにおいて、コピー先装置１１１は、ステップＳ９０１ｂと同様に、解放した領域に新たにバッファセット記憶部２０２および記録バッファ２０１の領域を確保して、例えば、図２に示した構成を構築する。
【００９８】
以上の処理が終了すると、コピー先装置１１１は、処理をステップＳ９１１ｂに移行し、ステップＳ９０９ｂ〜Ｓ９１０ｂの処理によって新たに使用可能となったバッファの未使用バッファＩＤをコピー元装置１０１に通知する。
【００９９】
一方、ステップＳ９０９ａにおいて、コピー元装置１０１は、コピー先装置１１１からのバッファセット展開完了通知を受信したか否かを判断する。そして、バッファセット展開完了通知を受信しない場合（Ｓ９０９ａ  ＮＯ）には、ステップＳ９０９ａの処理を繰り返す。また、コピー先装置１１１からバッファセット完了通知を受信すると（Ｓ９０９ａ  ＹＥＳ）、コピー元装置１０１は、処理をステップＳ９１０ａに移行する。
【０１００】
ステップＳ９１０ａにおいて、コピー元装置１０１は、ステップＳ９０８ａでデータの転送が完了したバッファセットについて、ステップＳ９０９ｂと同様に、バッファセットの解放処理を行なう。そして、ステップＳ９１１ａにおいて、コピー元装置１０１は、ステップＳ９０１ａと同様に、バッファの再構築処理を行なう。
【０１０１】
以上の処理が終了すると、コピー元装置１０１は、リモートコピー処理を終了する、または、ステップＳ９０２ａに処理を移行してリモートコピー処理を継続、若しくは、ホスト１０９から新たにＷｒｉｔｅ  Ｉ／Ｏ命令を受付けると、Ｓ９０４ａ等に移行して、リモートコピー処理を継続する。また、コピー先装置１１１は、上述の処理が終了すると、リモートコピー処理を終了する、または、ステップＳ９０２ｂもしくは９０４ｂ等に処理
を移行してリモートコピー処理を継続する。
【０１０２】
（本実施例に係るリモートコピー機能の具体的な処理）
図９Ａおよび図９Ｂに示した本実施例に係るリモートコピー処理において、以下の処理についてより具体的に説明する。
（１）バッファセット転送時におけるコピー元のバッファとコピー先のバッファとのマッチング処理（ステップＳ９０７ａ）。
（２）経路閉塞状態解消時に開始する転送処理を決定する処理。
（３）経路閉塞状態におけるＩ／Ｏ処理。
（４）経路閉塞状態解消後における未使用バッファＩＤ取得処理およびバッファセット転送再開処理。
（５）コピー先装置における経路閉塞状態検出時の処理。
【０１０３】
（１）バッファセット転送時におけるコピー元のバッファとコピー先のバッファとのマッチング処理（ステップＳ９０７ａ）
図１０は、図９Ｂに示したコピー先バッファ割り当て処理（ステップＳ９０７ａ）の具体的な処理を示すフローチャートである。なお、図１０では、コピー元装置１０１に備わる制御モジュール全体を制御する制御モジュール（以下、「マスタ制御モジュール」という）と、その他の制御モジュールと、についての具体的な処理を示す。
【０１０４】
ステップＳ１００１ａにおいて、マスタ制御モジュールは、未使用バッファＩＤ記憶部２０３を参照する。そして、未使用バッファＩＤ記憶部２０３に記録されている未使用バッファＩＤの数が、バッファセット記憶部２０２のバッファセットにおけるコピー先ＩＤとして必要な数だけあるか否かを確認する。
【０１０５】
そして、ステップＳ１００１ａにおいて、必要な数の未使用バッファＩＤを確認できない場合（Ｓ１００１ａ  ＮＯ）、マスタ制御モジュールは、処理をステップＳ１００２ａに移行する。そして、マスタ制御モジュールは、Ｓ１００２ａにてコピー先装置１１１からの未使用バッファ通知を待ち、未使用バッファ通知を受付けると、処理をステップＳ１００１ａに移行する。
【０１０６】
また、ステップＳ１００１ａにおいて、必要な数の未使用バッファＩＤを確認すると（Ｓ１００１ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ１００３ａに移行する。
【０１０７】
ステップＳ１００３ａにおいて、マスタ制御モジュールは、未使用バッファＩＤ記憶部２０３から必要な数の未使用バッファＩＤを取得する。そして、既にステップＳ９０４ａにおいてバッファセット記憶部２０２にセットされたバッファセットにおけるコピー先ＩＤに、取得した未使用バッファＩＤを設定する。これにより、コピー元バッファとコピー先バッファとのマッチングが行なわれる。
【０１０８】
このマッチング処理が終了すると、マスタ制御モジュールは、他の制御モジュールに対して、バッファセット情報の多重化依頼を通知する。
一方、ステップＳ１００１ｂにおいて、マスタ制御モジュールからバッファセット情報の多重化依頼の通知を受けると、各制御モジュールは、バッファセット情報の多重化処理を行なう。ここで、バッファセット情報の多重化処理とは、コピー元装置１０１またはコピー先装置１１１に備わる全ての制御モジュールに同一のバッファセット情報を保持させる処理である。
【０１０９】
例えば、マスタ制御モジュールから、ステップＳ１００３ａのマッチング処理が行なわれたバッファセットを取得する。そして、自身に備わるバッファセット記憶部２０２に取得したバッファセットを反映する。
【０１１０】
そして、Ｓ１００１ｂにおけるバッファセット情報の多重化処理が終了すると、各制御モジュールは、バッファセット情報の多重化処理の完了をマスタ制御モジュールに通知する。
【０１１１】
ステップＳ１００５ａにおいて、マスタ制御モジュールは、バッファセット情報の多重化処理の依頼をした制御モジュールの全てから応答を受信したか否かを確認する。そして、当該応答を全ての制御モジュールから受信したと判断すると（Ｓ１００５ａ  ＹＥＳ）、コピー先バッファ割り当て処理を終了し（ステップＳ１００５ａ）、図９Ｂに示したステップＳ９０８ａの処理に移行する。
【０１１２】
以上に説明したように、従来のリモートコピー処理では、におけるバッファセット作成時に、コピー元ＩＤとコピー先ＩＤとのマッチング処理を行なっていたが、本実施例に係るリモートコピー処理では、ステップＳ９０４ａのタイミングでは行わず、バッファへの格納処理が完了して転送処理を行う直前（ステップＳ９０７ａ）で行う。
【０１１３】
そのため、転送処理に関するバッファ以外に対して、転送処理と並行してデータの記憶処理を行うことができるため、コピー元装置１０１に備わる記録バッファ２０１およびバッファセット記憶部２０２を含むバッファを全て使用することが可能となる。例えば、ホスト１０９からのＷｒｉｔｅ  Ｉ／Ｏに係るデータを、コピー元装置１０１に備わるバッファの容量がなくなるまで格納することが可能となる。
【０１１４】
その結果、順序性を保証したリモートコピーに使用するバッファに関し、コピー先装置１１１に備わるバッファが、コピー元装置１０１に備わるバッファより少ない場合であっても、コピー元装置が有するバッファを有効に使用することが可能となる。
【０１１５】
（２）経路閉塞状態解消時に開始する転送処理を決定する処理
本実施例に係るリモートコピー処理では、コピー元装置１０１において、経路閉塞状態を検出すると、バッファＨａｌｔ処理が実行されていた場合にはバッファＨａｌｔ処理を中止し、各バッファセットの転送状況に応じて、経路閉塞状態解消時における再転送対象を決定する。本実施例では、下記の条件を満たすバッファセットを再転送対象とする。
１）転送済みの旧世代のバッファセット
２）転送中の旧世代のバッファセット
３）転送処理開始待ち状態にある旧世代のバッファセット
また、本実施例に係るリモートコピー処理では、経路閉塞状態解消時におけるバッファセットの再転送では、古い世代からバッファセットの転送を行なう。
【０１１６】
図１１は、コピー元装置１０１において、経路閉塞状態解消後のバッファセット転送処理を決定する処理を示すフローチャートである。
ステップＳ１１００ａにおいて、経路閉塞状態を検出すると、コピー元装置１０１におけるマスタ制御モジュールは、処理をステップＳ１１０１ａに移行する。
【０１１７】
ステップＳ１１０１ａにおいて、マスタ制御モジュールは、記録バッファ２０１もしくはバッファセット記憶部２０２を参照する。そして、マスタ制御モジュールは、１）転送済み、２）転送中、または３）転送処理開始待ち状態にある旧世代のバッファセットがあるか否かを確認する。
【０１１８】
ステップＳ１１０１ａにおいて、１）、２）あるいは３）の条件に該当するバッファセットが検出されない場合（Ｓ１００１ａ  ＮＯ）、マスタ制御モジュールは、処理をステップＳ１１０４ａに移行し、図１１の処理を終了する。また、該当するバッファセットを検出した場合（Ｓ１１０１ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ１１０２ａに移行する。
【０１１９】
ステップＳ１１０２ａにおいて、マスタ制御モジュールは、ステップＳ１１０１ａで検出した該当バッファセットをバッファ転送の順序制御に使用するキュー（以下、「転送キュー」という）に追加する。この時、旧世代のバッファセットに係る転送キューの優先度を高くするようにキューイングを行なう。
【０１２０】
キューイング処理が終了すると、マスタ制御モジュールは、他の制御モジュールに対して、上述の転送キュー情報の多重化を依頼する通知を行なう。
一方、マスタ制御モジュールから転送キュー情報の多重化依頼の通知を受けると、各制御モジュールは、当該転送キュー情報をマスタ制御モジュールから取得し、自身に備わる転送キュー情報に反映させる（Ｓ１１０１ｂ）。
【０１２１】
各制御モジュールは、Ｓ１１０１ｂの処理による転送キュー情報の反映が終了すると、マスタ制御モジュールに対して転送キュー情報の多重化が完了した旨の通知を行なう。
ステップＳ１１０３ａにおいて、マスタ制御モジュールは、他の制御モジュールからの転送キュー情報の多重化の完了通知を確認する。そして、全ての制御モジュールから完了通知を受付けると（Ｓ１１０３ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ１１０４ａに移行し、経路閉塞状態解消後のバッファセット転送処理を決定する処理を終了する。
【０１２２】
そして、経路閉塞状態が解消したことを検出すると、マスタ制御モジュールは、例えば、図８に説明した処理を行なった後に、キュー情報にしたがってバッファセットの再転送処理を行なう。
【０１２３】
なお、上述の転送済みのバッファセットとは、コピー先装置１１１への転送は完了しているが、コピー先装置１１１からバッファセット展開完了通知を受信していないバッファセットを示している。この場合、バッファの解放をせずにコピー先装置１１１からのバッファセット展開完了通知を待つ必要がある。
【０１２４】
（３）経路閉塞状態におけるＩ／Ｏ処理
従来のリモートコピー処理では、コピー元装置において経路閉塞状態を検出した場合、バッファＨａｌｔ処理によって、バッファに格納されていたデータをＢＩＴ情報に応じて、各セッションのビットマップに書き戻していた。そして、バッファＨａｌｔ処理後の経路閉塞状態解消時に、書き戻したビットマップに応じて順序性を保障しないリモートコピー処理を行なっていた。この順序性を保障しないリモートコピーが動作している間のホストからのＷｒｉｔｅ  Ｉ／Ｏ処理については、順序性を保障しないリモートコピーが行なわれていた。
【０１２５】
本実施例に係るリモートコピー処理では、経路閉塞状態を検出した場合、バッファＨａｌｔ処理を行なわず、記録バッファ２０１およびバッファセット記憶部２０２（以下、あわせて単に「バッファ」という）を格納可能な状態にし、ホストからのＷｒｉｔｅ  Ｉ／Ｏを可能な限りバッファへ格納する。
【０１２６】
ただし、新たにデータを格納する領域がバッファになくなった状態でさらにホストから
のＷｒｉｔｅ  Ｉ／Ｏ等を受付けた場合は、バッファ切り替え依頼を行い、バッファ切り替えができない場合は、バッファＨａｌｔ処理を行なう。
【０１２７】
図１２は、コピー元装置１０１において経路閉塞状態を検出した時のバッファの状態変更処理を示すフローチャートである。
ステップＳ１２００ａにおいて、経路閉塞状態を検出すると、マスタ制御モジュールは、処理をステップＳ１２０１ａに移行する。
【０１２８】
ここで、本実施例に係るバッファは、少なくとも３つの状態（Ｈａｌｔ、ＡｃｔｉｖｅおよびＢｕｆｆｅｒｉｎｇ）を遷移する。例えば、経路閉塞状態を検出すると、連動して、バッファはＢｕｆｆｅｒｉｎｇの状態になる。Ｂｕｆｆｅｒｉｎｇ状態の場合、バッファへのデータの格納はできるが、バッファに格納されたデータの送信ができない。また、Ｈａｌｔの場合、ホスト１０９からＷｒｉｔｅ Ｉ／Ｏ命令を受信してもバッファへのデータ格納はできない。Ａｃｔｉｖｅ状態は、バッファへのデータの格納が可能で、バッファに格納されたデータの送信もできる。
【０１２９】
ステップＳ１２０１ａにおいて、マスタ制御モジュールは、バッファの状態をＡｃｔｉｖｅ状態からＢｕｆｆｅｒｉｎｇ状態に変更する。そして、マスタ制御モジュールは、他の制御モジュールに対して、バッファ状態の多重化依頼を通知する。
【０１３０】
一方、マスタ制御モジュールからバッファ状態の多重化依頼の通知を受けると、各制御モジュールは、処理をステップＳ１２０１ｂに移行する。そして、自身のバッファ状態をＢｕｆｆｅｒｉｎｇ状態に変更する。
【０１３１】
Ｓ１２０１ｂにてバッファ状態のＢｕｆｆｅｒｉｎｇ状態への変更が終了した制御モジュールは、マスタ制御モジュールに対して、バッファ状態の多重化が完了した旨を通知する。
【０１３２】
ステップＳ１２０２ａにおいて、マスタ制御モジュールは、制御モジュールからのバッファ状態の多重化の完了通知を確認する。そして、全ての制御モジュールから完了通知を受付けると（Ｓ１２０２ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ１２０３ａに移行し、バッファの状態変更処理を終了する。
【０１３３】
図１３は、経路閉塞状態におけるコピー元装置１０１でのＩ／Ｏ処理を示すフローチャートである。
Ｓ１３００でホスト１０９からＷｒｉｔｅ  Ｉ／Ｏ命令を受付けると、Ｗｒｉｔｅ  Ｉ／Ｏ命令を受付けたコピー元装置１０１における制御モジュールは、処理をステップＳ１３０１に移行する。
【０１３４】
ステップＳ１３０１において、Ｗｒｉｔｅ  Ｉ／Ｏ命令を受信した制御モジュールは、記録バッファ２０１およびバッファセット記憶部２０２（以下、必要に応じて両者をあわせて単に「バッファ」という）の状態を参照する。そして、バッファがデータを格納な状態か否かを確認する。そして、制御モジュールは、当該バッファがＡｃｔｉｖｅ状態かＢｕｆｆｅｒｉｎｇ状態以外の状態の場合（Ｓ１３０１  ＮＯ）、データをバッファに格納可能な状態でないと判断し、処理をステップＳ１３０２に移行する。そして、制御モジュールはＳ１３０２で、自身に備わるメモリ等にあらかじめ用意されたビットマップにＷｒｉｔｅ  Ｉ／Ｏを記録する。
【０１３５】
一方、ステップＳ１３０１において、バッファの状態がＡｃｔｉｖｅ状態かＢｕｆｆｅｒｉｎｇ状態の場合（Ｓ１３０１  ＹＥＳ）、制御モジュールはバッファに対してデータ
を格納可能な状態と判断し、処理をステップＳ１３０３に移行する。
【０１３６】
ステップＳ１３０３において、制御モジュールは、格納対象のバッファにデータを格納可能な領域があるか否かを確認する。データを格納可能な領域がないと判断した場合（Ｓ１３０３  ＮＯ）、制御モジュールは、処理をステップＳ１３０４に移行する。そして、制御モジュールはＳ１３０４において、マスタ制御モジュールに対して、バッファセットの切替えを依頼する。
【０１３７】
Ｓ１３０４によるバッフ切替依頼を受付けると、マスタ制御モジュールは、自身のバッファセットの切替えを行なうとともに、他の制御モジュールに対してもバッファの切替依頼通知を行なう。制御モジュールは、切替えたバッファにＷｒｉｔｅ  Ｉ／Ｏを格納することになる。なお、バッファ切替えができない場合、バッファＨａｌｔ処理が行なわれる。
【０１３８】
ステップＳ１３０３において、データを格納する領域があると判断した場合（Ｓ１３０３  ＹＥＳ）、制御モジュールは、処理をステップＳ１３０５に移行し、データを格納するための領域を獲得する。そして、処理をステップＳ１３０６に移行する。
【０１３９】
ステップＳ１３０６において、ホスト１０９によるＷｒｉｔｅ  Ｉ／Ｏ処理が行なわれる。この時、制御モジュールは、ホスト１０９からのＷｒｉｔｅ  Ｉ／Ｏ命令にしたがって、自身に備わるディスク装置にデータの書き込み等を行なう。そして、制御モジュールは、処理をステップＳ１３０７またはＳ１３０８に移行する。
【０１４０】
例えば、バッファに格納するＷｒｉｔｅデータがない場合には、ステップＳ１３０７に処理を移行する。また、バッファに格納するＷｒｉｔｅデータがある場合には、ステップＳ１３０８に移行し、Ｗｒｉｔｅデータをバッファにコピーする。
【０１４１】
（４）経路閉塞状態解消後における未使用バッファＩＤ取得処理およびバッファセット転送再開処理
コピー元装置１０１において、経路閉塞状態を検出し、図１２で説明した（２）の処理、図１３で説明した（３）の処理が行なわれ、経路閉塞状態が解消した場合、コピー元装置１０１からコピー先装置１１１に対して、経路閉塞中のコピー元装置１０１の状態に応じて、以下の２つのパターンのバッファ通知要求処理を行う。
１）経路閉塞状態にバッファＨａｌｔ処理が行なわれていない場合。
２）経路閉塞状態にバッファＨａｌｔ処理が行なわれた場合。
【０１４２】
上記パターン２）の場合は、コピー元装置１０１で既にバッファＨａｌｔ処理が行なわれているため、バッファがクリアされている。したがって、コピー先装置１１１でもバッファＨａｌｔ処理を行なってバッファをクリアする必要がある。コピー先装置でバッファＨａｌｔ処理を行う契機として、コピー元装置１０１でバッファＨａｌｔ処理を行なった旨を示したバッファ通知要求をコピー先装置に対して発行する。バッファ通知要求を受けたコピー元装置１０１は、リトライを意図するエラーをコピー元装置に応答しつつ、コピー先装置のバッファＨａｌｔ処理を行なう。
【０１４３】
コピー先装置からのエラーを受信したコピー元装置１０１は、エラー受信から一定時間経過後にバッファ通知要求をコピー先装置に対して行うが、このときは、上記パターン１）の通知、つまり経路閉塞中にバッファＨａｌｔ処理が行なわれていない旨の通知でバッファ通知要求を発行する。
【０１４４】
１）経路閉塞状態でバッファＨａｌｔ処理が行なわれていない場合
図１４Ａおよび図１４Ｂは、経路閉塞状態解消後における未使用バッファＩＤ取得処理およびバッファセット転送再開処理を示すフローチャートである。以下、必要に応じて、コピー元装置１０１のマスタ制御モジュールを「コピー元マスタ制御モジュール」といい、コピー元装置１０１の制御モジュールを「コピー元制御モジュール」という。また、コピー先装置１１１のマスタ制御モジュールを「コピー先制御モジュール」という。
【０１４５】
ステップＳ１４００ａにおいて、コピー元マスタ制御モジュールは、経路の再開通を検出すると、処理をステップＳ１４０１ａに移行する。
ステップＳ１４０１ａにおいて、コピー元マスタ制御モジュールは、コピー先装置１１１に対してバッファ通知要求のコマンドを発行する。この時、当該コマンドには、バッファＨａｌｔ処理が行なわれていない旨の情報が付される。
【０１４６】
ステップＳ１４０２ａにいて、コピー元マスタ制御モジュールは、自身のバッファ状態をＢｕｆｆｅｒｉｎｇ状態からＡｃｔｉｖｅ状態に変更する。さらに、コピー元装置１０１に備わる他のコピー元制御モジュールに対して、バッファ状態をＢｕｆｆｅｒｉｎｇ状態からＡｃｔｉｖｅ状態へ変更するように依頼する。
【０１４７】
一方、ステップＳ１４０１ｂにおいて、コピー元マスタ制御モジュールからバッファ状態の変更依頼を受付けると、各コピー元制御モジュールは、自身のバッファ状態をＢｕｆｆｅｒｉｎｇ状態からＡｃｔｉｖｅ状態に変更し、変更が完了した旨をコピー元マスタ制御モジュールに通知する。
【０１４８】
ステップＳ１４０３ａにおいて、コピー元マスタ制御モジュールは、依頼した全ての制御モジュールから、バッファ状態の変更完了の通知を受付けたか否かをチェックする。そして、依頼した全ての制御モジュールから通知を受付けると（Ｓ１４０３ａ  ＹＥＳ）、コピー元マスタ制御モジュールは、処理をステップＳ１４０４ａに移行する。
【０１４９】
一方、ステップＳ１４０１ｃにおいて、コピー先マスタ制御モジュールは、コピー元装置１０１からバッファ通知要求を受付けると、処理をステップＳ１４０２ｃに移行する。
コピー先マスタ制御モジュールは、バッファの使用状況を確認し、ステップＳ１４０２ｃにおいてバッファ通知コマンドを発行して未使用のバッファ、つまり解放済みバッファをコピー元マスタ制御モジュールに対して通知する。
【０１５０】
ステップＳ１４０４ａにおいて、コピー先装置１１１からバッファ通知コマンドを受信すると、コピー元マスタ制御モジュールは、処理をステップＳ１４０５ａに移行する。
ステップＳ１４０５ａにおいて、コピー元マスタ制御モジュールは、自身のバッファを参照し、再転送すべき世代があるか否かを確認する。再転送すべき世代がないと判断した場合（Ｓ１４０５ａ  ＮＯ）、コピー元マスタ制御モジュールは、処理をステップＳ１４０６ａに移行し、通常動作を再開する。また、転送すべき世代があると判断した場合（Ｓ１４０５ａ  ＹＥＳ）、コピー元マスタ制御モジュールは、処理をステップＳ１４０７ａに移行する。
【０１５１】
ステップＳ１４０７ａにおいて、コピー元マスタ制御モジュールは、再転送の対象となっている世代のバッファセットに設定されているバッファＩＤと、ステップＳ１４０４ａで受信したバッファＩＤと、に矛盾がないか否かをチェックする。
【０１５２】
例えば、コピー元マスタ制御モジュールは、再転送の対象となっている世代のバッファセットのコピー先ＩＤに設定されているバッファＩＤとステップＳ１４０４ａで受信したバッファＩＤとが重複するか否かをチェックし、重複する場合、矛盾があると判断し（Ｓ１４０７  ＮＯ）、処理をステップＳ１４０８ａに移行し、バッファＨａｌｔ処理を実行
する。
【０１５３】
また、ステップＳ１４０７ａにおいて、再転送の対象となっている世代のバッファセットに設定されているバッファＩＤとステップＳ１４０４ａで受信したバッファＩＤとが重複しない場合（Ｓ１４０７ａ  ＹＥＳ）、コピー元マスタ制御モジュールは、処理をステップＳ１４０９ａに移行し、転送処理を開始する。
【０１５４】
２）経路閉塞状態でバッファＨａｌｔ処理が行なわれた場合
図１５は、経路閉塞状態解消後における未使用バッファＩＤ取得処理およびバッファセット転送再開処理を示すフローチャートである。
【０１５５】
ステップＳ１５００ａにおいて、コピー元マスタ制御モジュールは、経路の再開通を検出すると、処理をステップＳ１５０１ａに移行する。
ステップＳ１５０１ａにおいて、コピー元マスタ制御モジュールは、コピー先装置１１１に対してバッファ通知要求のコマンドを発行する。この時、当該コマンドには、バッファＨａｌｔ処理が行なわれた旨の情報が付される。
【０１５６】
一方、ステップＳ１５０１ｂにおいて、コピー先マスタ制御モジュールは、コピー元装置１０１から送られたバッファ通知要求のコマンドを受信すると、処理をステップＳ１５０２ｂに移行する。
【０１５７】
ステップＳ１５０２ｂにおいて、コピー先マスタ制御モジュールは、バッファ通知要求コマンドに付された情報から、コピー元装置１０１においてバッファＨａｌｔ処理が行なわれたことを検出すると、コピー元装置１０１に対してエラー応答を返す。そして、ステップＳ１５０３ｂに移行し、処理を終了する。
【０１５８】
ステップＳ１５０２ａにおいて、コピー先マスタ制御モジュールは、コピー先装置１１１からエラー応答を受付けると、エラー応答受信から一定時間待ってからステップＳ１５０１ａの処理を１度だけ実行する。そして、処理をステップＳ１５０３に移行する。
【０１５９】
（５）コピー先装置における経路閉塞状態検出時の処理
図１６は、経路閉塞状態検出時におけるコピー先装置１１１での処理を示すフローチャートである。
【０１６０】
ステップＳ１６００において、コピー先装置１１１のマスタ制御モジュールは、既にコピー元装置１０１から転送されたデータが記憶されている世代のバッファのデータのディスク装置への展開処理が完了すると、処理をステップＳ１６０１に移行する。そして、経路閉塞が起きているか否かをチェックする。
【０１６１】
ステップＳ１６０１において、経路閉塞を検出した場合（Ｓ１６０１  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ１６０２に移行し、図１４Ａおよび図１４Ｂ、または、図１５に示した処理の実行待ちとなる。
【０１６２】
また、ステップＳ１６０１において、経路閉塞を検出しない場合（Ｓ１６０１  ＮＯ）、マスタ制御モジュールは、処理をステップＳ１６０３に移行し、ディスクへの展開処理が完了したバッファの次の世代のバッファに記憶されているデータのディスク装置への展開処理を開始する。
【０１６３】
（本実施例に係るリモートコピー処理の変形例）
図１７および図１８に示すコピー元装置３３０１およびコピー先装置３３０２は、図３３に示すコピー元装置３３０１およびコピー先装置３３０２と同じ構成であるが、本変形例についての説明を容易にするために、バッファセット記憶部を図示省略している。
【０１６４】
順序性を保証したリモートコピー機能では、図１７に示すように、（ａ）ホスト１０９からＷｒｉｔｅ  Ｉ／Ｏ命令を受付けると、各制御モジュールは当該命令にしたがってＷｒｉｔｅデータをディスク装置１０８ａ、１０８ｂに記憶する。同時に、（ｂ）各制御モジュールは、Ｗｒｉｔｅデータを転送してバッファに格納する。この時、Ｗｒｉｔｅデータは、バッファセット単位で管理される。
【０１６５】
そして、（ｃ）バッファへのＷｒｉｔｅデータの書込みが完了すると、制御モジュールは、当該Ｗｒｉｔｅデータについて、バッファセット単位でデータ転送を実行し、リモートコピー処理を開始する。
【０１６６】
（ｄ）リモートコピーによってコピー元装置１０１から送られたＷｒｉｔｅデータは、コピー先装置１１１の各制御モジュールに備わるバッファに記憶される。すると、制御モジュールは、バッファに記憶されたＷｒｉｔｅデータをディスク装置１７０１ａ、１７０１ｂに反映する。
【０１６７】
以上の処理が完了すると、（ｅ）コピー元装置１０１およびコピー先装置１１１の制御モジュールは、バッファやＢＩＴを開放する。
しかし、図１８に示すように、コピー元装置１０１で転送したバッファやＢＩＴのメモリ領域は、コピー先装置１１１でデータがディスク装置に展開されるまで解放されずに保持される。このため、（ｆ）コピー先装置１１１での反映処理の遅延や、筐体間の回線状態により転送処理に遅延が発生すると、コピー先装置１１１のバッファやＢＩＴを格納するメモリの解放ができない。
【０１６８】
例えば、筐体間の回線帯域の低さや不安定などにより転送処理に遅延が発生すると、その分コピー先装置１１１のバッファやＢＩＴのメモリ域は使用中の状態が長くなり、その間メモリの解放ができなくなる。
【０１６９】
（ｇ）このような状態でコピー元装置１０１に対してホストからＷｒｉｔｅ  Ｉ／Ｏ命令を受けると、当該命令を受ける度に、コピー元装置１０１は、Ｗｒｉｔｅデータをバッファに格納するためバッファを次々と消費する。
【０１７０】
（ｈ）データを格納可能なバッファのメモリ領域を確保できなくなり、コピー元装置のバッファ枯渇が発生してしまう場合が考えられる。また、設定されているバッファの大きさ以上にＷｒｉｔｅデータが大きい場合でも、同様にバッファ枯渇が発生してしまう場合が考えられる。
【０１７１】
バッファ枯渇の状態では、ホストからのＷｒｉｔｅ  Ｉ／Ｏをコピー元装置１０１内部で処理させずに止めているため、この状態を長く継続することはできない。そのため、（ｉ）一時的にＩ／Ｏ処理を停止し、一定時間経過してもバッファ枯渇状態が解消されない場合は、バッファＨａｌｔ処理を行なう。バッファＨａｌｔ処理によりバッファ状態をクリアするとともにＩ／Ｏ処理を再開させる。
【０１７２】
この時、バッファ内のＷｒｉｔｅデータ等の情報は専用のビットマップへ書き戻され、当該ビットマップを元に順序性を保障しないリモートコピー転送が行なわれる。したがって、順序性を保障したリモートコピーが中断されてしまう。
【０１７３】
そこで、本実施例に係る変形例では、メモリ上のバッファセットを一時的に退避させる領域をディスク装置に確保する。以下、このディスク装置に確保された領域を「退避用バ
ッファ」という。そして、メモリ上のバッファ（以下、必要に応じて「キャッシュバッファ」という）の使用状況に応じて、バッファセットを退避用バッファ１９０に退避する。この一連の処理を「バッファ退避処理」という。
【０１７４】
例えば、コピー元装置１０１では、メモリ上にバッファの空き領域が少なくなると、転送対象となっているバッファセットをすぐにコピー先装置１１１に転送せずに退避用バッファ１９０に退避してメモリ上のバッファの空き領域を一定以上確保することにより、新たにＷｒｉｔｅ  Ｉ／Ｏ命令を受付けてもバッファ枯渇となることを防止することができる。
【０１７５】
そして、コピー先装置１１１に転送・反映されてバッファセットの領域が解放されると、解放されたバッファの領域に退避用バッファ１９０に退避されたバッファセットを格納し、転送処理を継続する。図１９〜図２１にバッファ退避処理の概要を示す。
【０１７６】
図１９および図２０は、本実施例に係るバッファ退避処理を説明する図である。
図１９は、バッファセット１−４が、転送中またはコピー先装置１１１における展開処理待ちのため使用中となっている状態で、Ｗｒｉｔｅ  Ｉ／Ｏ命令を受付けた場合のバッファ退避処理を説明する図である。
【０１７７】
（ａ）Ｗｒｉｔｅ  Ｉ／Ｏ命令を受付けると、制御モジュールは、自身のディスク装置にＷｒｉｔｅデータを記憶するとともに、（ｂ）Ｗｒｉｔｅデータのコピーデータをバッファセット５に格納する。以下、この場合のＷｒｉｔｅデータのコピーデータも「Ｗｒｉｔｅデータ」という。
【０１７８】
ここで、制御モジュールは、例えば、バッファセットの使用率（例えば、「バッファセットで使用されているバッファの世代数」／「全バッファの世代数」）が一定以上（本実施例では５０％以上）となると、（ｃ）制御モジュールは、次にコピー先装置１１１に転送予定の例えばバッファセット５のデータを退避用バッファ１９０に退避するとともに、新たなＷｒｉｔｅデータ等の記憶先をバッファセット５からバッファセット６に切り替える。
【０１７９】
そして、（ｄ）新たなＷｒｉｔｅ  Ｉ／Ｏ命令を受付けると、制御モジュールは、Ｗｒｉｔｅデータをディスク装置に記憶するとともに、Ｗｒｉｔｅデータを切り替えられたバッファセット６に格納する。
【０１８０】
しかし、バッファセット６よりも古いバッファセット、図１９ではバッファセット５が退避用バッファ１９０に退避されているので、（ｅ）制御モジュールは、バッファセット６のデータを退避用バッファ１９０に退避する。
【０１８１】
そして、使用中の状態にあったバッファセット１が解放されると、（ｆ）制御モジュールは、退避用バッファ１９０に記憶されているバッファセット５のデータを読み出して、バッファセット５に記憶する。
【０１８２】
本実施例に係るリモートコピー処理の変形例において、以下の処理についてより具体的に説明する。
（１）退避用バッファの領域を作成する処理。
（２）制御モジュールへの退避用バッファの割り当て処理。
（３）ライトバックポインタ情報／ステージポインタ情報の更新処理。
（４）キャッシュバッファから退避用バッファへのライトバック処理。
（５）退避用バッファからキャッシュバッファへのステージング処理。
【０１８３】
本実施例では、キャッシュバッファに格納されているデータを退避用バッファに格納することを「ライトバック処理」といい、退避用バッファに格納されているデータをキャッシュバッファに格納することを「ステージング処理」という。
【０１８４】
（１）退避用バッファの領域を作成する処理
図２１は、本実施例に係る退避用バッファの領域を生成する処理を示すフローチャートである。
【０１８５】
ステップＳ２１０１において、コピー元装置１０１は、ユーザからの入力に応じて退避用バッファを設定すべきバッファを選択する。そして、コピー元装置１０１は、処理をステップＳ２１０２に移行し、ユーザからの入力に応じてＲＡＩＤを構成するためのディスク装置を選択する。
【０１８６】
ステップＳ２１０３において、コピー元装置１０１は、ステップＳ２１０２で選択したディスク装置はＲＡＩＤを構成する条件を満たすか否かをチェックする。条件を満たさない場合（Ｓ２１０３  ＮＯ）、コピー元装置１０１は、例えば、他のディスク装置を指定すべき旨を表示装置等に表示して、処理をステップＳ２１０２に移行する。
【０１８７】
ステップＳ２１０３において、条件を満たす場合（Ｓ２１０３  ＹＥＳ）、コピー元装置１０１は、処理をステップＳ２１０４に移行する。
ステップＳ２１０４において、コピー元装置１０１は、ステップＳ２１０２で選択されたディスク装置で構成されるＲＡＩＤグループを生成し、コピー元装置１０１の装置構成などを保持する構成情報にその情報を反映する。
【０１８８】
ステップＳ２１０５において、コピー元装置１０１は、ステップＳ２１０４で作成したＲＡＩＤグループ内に複数のボリュームを作成する。コピー元装置１０１は、処理をステップＳ２１０６に移行し、ステップＳ２１０５で作成した論理ユニットの構成を構成情報に反映する。
【０１８９】
ステップＳ２１０７において、コピー元装置１０１は、図２２で示す処理によって、各制御モジュールで使用するボリューム（以下、必要に応じて「担当ボリューム」という）を決定する。各制御モジュールは、この決定したボリュームを退避用バッファの領域として使用する。
【０１９０】
（２）制御モジュールへの退避用バッファの割り当て処理
図２２は、本実施例に係る退避用バッファの制御モジュールへの割り当て（ステップＳ２１０７）の具体的な処理を示すフローチャートである。
【０１９１】
ステップＳ２２０１において、コピー元装置１０１は、構成情報を参照し、バッファに割り当てるＲＡＩＤグループの数（Ａ）を取得する。
さらに、コピー元装置１０１は、処理をステップＳ２２０２に移行し、構成情報からコピー元装置に実装されている制御モジュールの数（Ｂ）を取得する。
【０１９２】
ステップＳ２２０３において、コピー元装置１０１は、ＲＡＩＤグループあたりの制御モジュールの数（Ｃ）＝（Ｂ）／（Ａ）を算出する。そして、処理をステップＳ２２０４に移行し、各ＲＡＩＤグループに対して（Ｃ）個の制御モジュールを割り当てる。
【０１９３】
ステップＳ２２０５において、コピー元装置１０１は、各ＲＡＩＤグループのボリュー
ムの数を（Ｃ）で除算し、担当ボリュームの数（Ｄ）を算出する。そして、コピー元装置１０１は、処理をステップＳ２２０６に移行し、ステップＳ２２０５の算出結果から、ＲＡＩＤグループ毎に割り当てた制御モジュールに対して担当ボリュームを（Ｄ）個を割り当てる。
【０１９４】
ステップＳ２２０７において、コピー元装置１０１は、以上の処理によって決定した構成を構成情報に反映するとともに、各制御モジュールが備える設定情報にも反映し、処理を終了する（ステップＳ２２０８）。
【０１９５】
図２３は、本実施例に係る退避用バッファを１つのＲＡＩＤグループで構成する場合の構成例を示す図である。
図２３に示す退避用バッファとして用いられるＲＡＩＤグループ２３０１は、論理ユニットＬＵ＃０〜ＬＵ＃Ｆを有する。また、横長に点線で囲まれたＬＵ＃０−ＬＵ＃３と、ＬＵ＃４−ＬＵ＃７と、ＬＵ＃８−ＬＵ＃Ｂと、ＬＵ＃Ｃ−ＬＵ＃Ｆと、がそれぞれボリュームグループを構成する。ＲＡＩＤグループ２３０１は、ボリュームグループ単位で使用される。
【０１９６】
そして、制御モジュール毎に、キャッシュバッファとボリュームグループとが割り当てられている。例えば、制御モジュール＃００のキャッシュバッファには、論理ユニットＬＵ＃０、＃４、＃８および＃Ｃが割り当てられている。同様に、制御モジュール＃０１のキャッシュバッファには、論理ユニットＬＵ＃１、＃５、＃９および＃Ｄが割り当てられ、制御モジュール＃０２のキャッシュバッファには、論理ユニットＬＵ＃２、＃６、＃Ａおよび＃Ｅが割り当てられ、制御モジュール＃０３のキャッシュバッファには、論理ユニットＬＵ＃３、＃７、＃Ｂおよび＃Ｆが割り当てられている。
【０１９７】
なお、ボリュームグループを構成する論理ユニットの数が実装制御モジュール数を上回る場合は、１つの制御モジュールに対して複数の論理ユニットを割り当ててもよい。
また、各ボリュームグループを構成する論理ユニットは、キャッシュバッファと同様に、キャッシュバッファの１世代と同じサイズで世代毎に領域が分割されており、各制御モジュールのバッファセットのデータは、例えば、図２３に示す矢印に示すように、各制御モジュールに割り当てられたボリュームグループの任意の世代の領域に記憶される。  図２４は、本実施例に係る退避用バッファを２つのＲＡＩＤグループで構成する場合の構成例を示す図である。
【０１９８】
図２４に示す退避用バッファは、論理ユニットＬＵ＃０〜ＬＵ＃Ｆを備えるＲＡＩＤグループ２４０１と、論理ユニットＬＵ＃１０〜ＬＵ＃１Ｆを備えるＲＡＩＤグループ２４０２と、で構成される。
【０１９９】
また、ＲＡＩＤグループ２４０１において、ＬＵ＃０、ＬＵ＃１、ＬＵ＃４、ＬＵ＃５、ＬＵ＃８、ＬＵ＃９、ＬＵ＃ＣおよびＬＵ＃Ｄと、ＬＵ＃２、ＬＵ＃３、ＬＵ＃６、ＬＵ＃７、ＬＵ＃Ａ、ＬＵ＃Ｂ、ＬＵ＃ＥおよびＬＵ＃Ｆと、がそれぞれボリュームグループを構成する。
【０２００】
同様に、ＲＡＩＤグループ２４０２において、ＬＵ＃１０、ＬＵ＃１１、ＬＵ＃１４、ＬＵ＃１５、ＬＵ＃１８、ＬＵ＃１９、ＬＵ＃１ＣおよびＬＵ＃１Ｄと、ＬＵ＃１２、ＬＵ＃１３、ＬＵ＃１６、ＬＵ＃１７、ＬＵ＃１Ａ、ＬＵ＃１Ｂ、ＬＵ＃１ＥおよびＬＵ＃１Ｆと、がそれぞれボリュームグループを構成する。
【０２０１】
そして、制御モジュール毎に、キャッシュバッファとボリュームグループとが割り当てられている。例えば、制御モジュール＃００のキャッシュバッファには、論理ユニットＬ
Ｕ＃０、ＬＵ＃１、ＬＵ＃４、ＬＵ＃５、ＬＵ＃８、ＬＵ＃９、ＬＵ＃ＣおよびＬＵ＃Ｄで構成されるボリュームグループが割り当てられている。同様に、制御モジュール＃０２のキャッシュバッファには、論理ユニットＬＵ＃１０、ＬＵ＃１１、ＬＵ＃１４、ＬＵ＃１５、ＬＵ＃１８、ＬＵ＃１９、ＬＵ＃１ＣおよびＬＵ＃１Ｄで構成されるボリュームグループが割り当てられている。
【０２０２】
また、各ボリュームグループを構成する論理ユニットは、キャッシュバッファと同様に、世代毎に領域が分割されており、各制御モジュールのバッファセットのデータは、例えば、図２４に示す矢印に示すように、各制御モジュールに割り当てられたボリュームグループの任意の世代の領域に記憶される。
【０２０３】
図２４に示したように、キャッシュバッファに対して２以上のＲＡＩＤグループを割り当てた場合、各ＲＡＩＤグループの負荷を分散する効果が得られる。なお、図２４には、２つのＲＡＩＤグループを使用した場合を示したが、２以上のＲＡＩＤグループを使用しても同様の効果を得ることができるのは当然である。
【０２０４】
上述のように、本実施例に係る退避用バッファは、キャッシュバッファと同様のサイズで世代毎に領域を分割して使用される。図２５にその概要を示す。退避用バッファの各世代に、キャッシュバッファに記憶されているバッファセット、ＢＩＴおよびバッファが格納される。
【０２０５】
（３）ライトバックポインタ情報／ステージポインタ情報の更新処理
本実施例に係るバッファ退避処理では、ライトバック対象の世代のバッファセットを退避用バッファにライトバックする位置（世代）を記憶するライトバックポインタ情報（第１のポインタ）と、どの世代まで退避用バッファからデータを読み出してステージング処理を行なったかを記憶するステージポインタ情報（第２のポインタ）と、の２つの情報により、退避用バッファに格納するデータの書き込み位置（世代）と退避用バッファから読み出すデータの読み出し位置（世代）とを管理する。
【０２０６】
図２６は、本実施例に係るバッファ退避処理におけるライトバックポインタ情報・ステージポインタ情報を説明する図である。
例えば、制御モジュールにおいてｘ回目のバッファセット切り替えが行なわれた場合、ステージポインタ情報は、最後に処理された世代を情報として保持する。ライトバックポインタ情報は、ボリュームグループの世代ｘを情報として保持する。なお、キャッシュバッファの使用状況によって、バッファ退避処理を行なうか否かが変わるため、本実施例では、バッファセットｘ作成時にキャッシュバッファへの書き込み領域を決定している。
【０２０７】
また、制御モジュールにおいてｘ＋１回目のバッファセット切り替え時に世代ｘのバッファセットがすぐにコピー先装置１１１に転送された場合、世代ｘに格納されているデータがステージング処理されて転送処理が完了すると、ステージポインタ情報は、世代ｘから世代ｘ＋１に更新される。ライトバックポインタ情報は、ボリュームグループの世代ｘ＋１を情報として保持する。ただし、バッファセットｘ＋１作成時にキャッシュバッファへの書き込み領域が決定される。
【０２０８】
また、制御モジュールにおいてｘ＋２回目のバッファセット切り替え時に世代ｘ＋１が退避用バッファにライトバックされた場合、ステージポインタ情報が保持するボリュームグループの世代が世代ｘであれば、次のステージング対象は世代ｘ＋１となる。ライトバックポインタ情報は、ボリュームグループの世代ｘ＋２を保持する。ただし、バッファセットｘ＋２作成時にキャッシュバッファへの書込み領域が決定される。
【０２０９】
図２５に示したようにライトバックポインタ情報には、バッファセットが作成される毎に作成されたバッファセットの次の世代が情報として保持される。また、ステージポインタ情報は、切り替えられた旧世代のバッファセットの処理が完了する毎に、例えば、コピー先にデータ転送が完了しかつコピー先でデータの展開が完了する毎にステージポインタ情報が更新される。退避用バッファとして割当てたボリュームグループが複数ある場合、ボリュームグループに割り当てられた番号の小さい順にボリュームグループを使用していき、ボリュームグループを最後まで使用した場合は、最初にもどりサイクリックにボリュームグループを使用する。
【０２１０】
以下、図２７および図２８にライトバックポインタ情報およびステージポインタ情報の具体的な更新処理を説明する。
図２７は、本実施例に係るライトバックポインタ情報の更新処理を示すフローチャートである。
【０２１１】
ステップＳ２７００ａにおいて、コピー元装置１０１のマスタ制御モジュールは、バッファセットの切替え処理を開始すると、処理をステップＳ２７０１ａに移行する。
ステップＳ２７０１ａにおいて、マスタ制御モジュールは、現在保持しているライトバックポインタ情報を１つ進める。例えば、現在保持している世代を１だけインクリメントして次の世代を情報として保持する。
【０２１２】
ステップＳ２７０２ａにおいて、マスタ制御モジュールは、退避用バッファに新規のバッファセットを作成し、バッファセットの世代をライトバックポインタ情報に設定する。例えば、ステップＳ２７０１ａの世代をバッファセットの世代とする。
【０２１３】
さらに、マスタ制御モジュールは、コピー元装置１０１に備わる他の制御モジュールに対して、ステップＳ２７０２ａと同様の処理を依頼する。
一方、ステップＳ２７０１ｂにおいて、各制御モジュールは、退避用バッファに新規のバッファセットを作成し、当該バッファセットの世代をライトバックポインタ情報に設定する。そして、ライトバックポインタ情報の設定が完了すると、その旨をマスタ制御モジュールに通知する。
【０２１４】
ステップＳ２７０３ａにおいて、マスタ制御モジュールは、依頼した全ての制御モジュールから応答を受信したか否かをチェックし、応答を受信していない制御モジュールがある場合には（Ｓ２７０３ａ  ＮＯ）、ステップＳ２７０３ａの処理を繰り返す。
【０２１５】
ステップＳ２７０３ａにおいて、依頼した全ての制御モジュールから応答を受信したと判断すると（Ｓ２７０３ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ２７０４ａに移行し、ライトバックポインタ情報の更新処理を終了する。
【０２１６】
図２８は、本実施例に係るステージポインタ情報の更新処理を示すフローチャートである。
ステップＳ２８００ａにおいて、コピー元装置１０１のマスタ制御モジュールは、バッファセットの解放処理を開始すると、処理をステップＳ２８０１ａに移行する。
【０２１７】
ステップＳ２８０１ａにおいて、マスタ制御モジュールは、解放対象のバッファセットがあるか否かを判別する。解放対象となるバッファセットがない場合（Ｓ２８０１ａ  ＮＯ）、マスタ制御モジュールは、ステップＳ２８０４ａに移行し、処理を終了する。
【０２１８】
なお、本実施例では、コピー先装置１１１への転送が完了し、かつ、コピー先装置１１１から転送したデータのディスク装置への展開が完了した旨の通知を受けたバッファセットを領域解放の対象と判断する。
【０２１９】
ステップＳ２８０１ａにおいて、解放対象となるバッファセットがある場合（Ｓ２８０１ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ２８０２ａに移行する。
ステップＳ２８０２ａにおいて、マスタ制御モジュールは、解放対象となるバッファセット（ＢＩＴを含む）とそのバッファ領域を解放するとともに、ステージポインタ情報を更新する。そして、マスタ制御モジュールは、コピー元装置１０１に備わる他の制御モジュールに対して、ステップＳ２８０２ａと同様の処理を依頼する。
【０２２０】
ステップＳ２８０１ｂにおいて、各制御モジュールは、マスタ制御モジュールから依頼を受けると、解放対象のバッファセット（ＢＩＴを含む）とそのバッファ領域を解放するとともに、ステージポインタ情報を更新する。処理が完了すると、各制御モジュールは、マスタ制御モジュールに対して完了通知を行なう。
【０２２１】
ステップＳ２８０３ａにおいて、マスタ制御モジュールは、依頼した制御モジュールからの応答を確認し、全ての制御モジュールから応答を受信したか否かを判別する。そして、応答を受信していない制御モジュールがある場合（Ｓ２８０３ａ  ＮＯ）、ステップＳ２８０３の処理を繰返す。
【０２２２】
また、ステップＳ２８０３ａにおいて、全ての制御モジュールから応答を受信したと判断した場合（Ｓ２８０３ａ  ＹＥＳ）、マスタ制御モジュールは、ステップＳ２８０４ａに移行してバッファセットの解放処理を終了する。
【０２２３】
（４）キャッシュバッファから退避用バッファへのライトバック処理
図２９は、本実施例に係るライトバック処理を示すフローチャートである。
ステップＳ２９００ａにおいて、例えば、Ｗｒｉｔｅデータのバッファセットへの格納処理が完了すると、コピー元装置１０１におけるマスタ制御モジュールは、処理をステップＳ２９０１ａに移行する。
【０２２４】
ステップＳ２９０１ａにおいて、マスタ制御モジュールは、キャッシュバッファに転送中または開放待ちのバッファセットの世代数（以下、「使用中の世代数」という）を取得する。そして、使用中の世代数とあらかじめ決められた閾値、例えば、全世代数の５０％の値とを比較し、使用中の世代数が閾値より少ない場合（Ｓ２９０１ａ  ＮＯ）は、処理をステップＳ２９０６ａに移行し、使用中の世代数が閾値以上の場合は（Ｓ２９０１ａ  ＹＥＳ）、処理をステップＳ２９０２ａに移行する。
【０２２５】
ステップＳ２９０２ａにおいて、マスタ制御モジュールは、使用中の世代以外の世代のバッファセット、ＢＩＴおよびバッファのデータを、当該バッファセットに割当てられた退避用バッファに退避するライトバック処理を行なう。
【０２２６】
ライトバック処理が完了すると、マスタ制御モジュールは、コピー元装置１０１に備わる他の制御モジュールに対して、ステップＳ２９０２ａと同様の処理を依頼する。
ステップＳ２９０１ｂにおいて、各制御モジュールは、マスタ制御モジュールから依頼のあったバッファセットおよびＢＩＴを、当該バッファセットに割当てられた退避用バッファに退避する。
【０２２７】
ステップＳ２９０２ｂにおいて、各制御モジュールは、Ｓ２９０１ｂでライトバック対象となったバッファセットに対応するバッファにＷｒｉｔｅデータが記憶されているか否かをチェックし、Ｗｒｉｔｅデータがバッファにある場合（Ｓ２９０２ｂ  ＹＥＳ）、処理をステップＳ２９０３ｂに移行する。
【０２２８】
ステップＳ２９０３ｂにおいて、各制御モジュールは、バッファに格納されているＷｒｉｔｅデータを、該当するバッファセットに割当てられた退避用バッファに退避する。そして、マスタ制御モジュールに依頼された処理の完了を通知する。
【０２２９】
一方、ステップＳ２９０３ａにおいて、マスタ制御モジュールは、依頼した全ての制御モジュールから応答を受信したか否かをチェックし、応答を受信していない制御モジュールがある場合には（Ｓ２９０３ａ  ＮＯ）、ステップＳ２９０３ａの処理を繰返す。
【０２３０】
全ての制御モジュールから応答を受信した場合（Ｓ２９０３ａ  ＹＥＳ）、ステップＳ２９０４ａにおいて、マスタ制御モジュールは、バッファセット、ＢＩＴおよびバッファの領域を解放する。バッファセット等の解放が完了すると、マスタ制御モジュールは、コピー元装置１０１に備わる他の制御モジュールに対して、ステップＳ２９０４ａと同様の処理を依頼する。
【０２３１】
一方、ステップＳ２９０４ｂにおいて、各制御モジュールは、マスタ制御モジュールからの依頼に応じて、該当するバッファセット等を解放する。バッファセット等の解放が完了すると、各制御モジュールは、マスタ制御モジュールに対して完了通知を行なう。
【０２３２】
ステップＳ２９０５ａにおいて、マスタ制御モジュールは、依頼した全ての制御モジュールから応答を受信したか否かをチェックし、応答を受信していない制御モジュールがある場合には（Ｓ２９０６ａ  ＮＯ）、ステップＳ２９０５ａの処理を繰り返す。
【０２３３】
ステップＳ２９０５ａにおいて、依頼した全ての制御モジュールから応答を受信したと判断すると、マスタ制御モジュールは、処理をステップＳ２９０６ａに移行し、バッファ退避処理を終了する。
【０２３４】
図３０および図３１は、本実施例に係るライトバック処理の具体例を示す図である。
図３０および図３１は、コピー元装置１０１が制御モジュール＃０〜＃３を備え、各制御モジュールが８世代のバッファを備えるコピー元装置１０１において、図２９で説明した閾値が４世代の場合のライトバック処理を説明する図である。
【０２３５】
（ａ）バッファセットの世代１〜４が、転送中、転送完了待ち、解放待ちのいずれかの状態、かつ、（ｂ）世代５がライトバック処理中の場合を考える。この場合、（ｃ）Ｗｒｉｔｅデータを格納するバッファセットの世代は世代６となる。
【０２３６】
図３１に示すように、（ｄ）世代１が使用していた領域が解放されると、マスタ制御モジュールは、ステージポインタ情報を更新し、次のステージング処理によるデータの格納先を世代１に設定する。
【０２３７】
今、世代５はライトバック処理対象となっているので、ステージング対象も世代５となっている。世代５のライトバック処理が処理中の場合、（ｅ）キャッシュバッファ上にデータがあるので、世代５のライトバック処理を中断し、世代５のバッファセットのコピー先装置１１１への転送処理を開始する。
【０２３８】
また、世代５のライトバック処理が完了している場合、退避用バッファからから世代５のバッファセットのデータを読み出して世代１の領域に記憶するステージング処理を行なう。
【０２３９】
（５）退避用バッファからキャッシュバッファへのステージング処理
図３２Ａおよび図３２Ｂは、本実施例に係るステージング処理を示すフローチャートである。
【０２４０】
ステップＳ３２００ａにおいて、旧世代の解放処理が完了すると、コピー元装置１０１におけるマスタ制御モジュールは、処理をステップＳ３２０１ａに移行する。
ステップＳ３２０１ａにおいて、マスタ制御モジュールは、ステージング対象となる世代を決定する。例えば、マスタ制御モジュールは、ステージポインタ情報を参照し、ステージポインタ情報に記憶されている世代を１だけインクリメントし、インクリメントした世代を新たにステージング対象となる世代に決定する。
【０２４１】
ステップＳ３２０２ａにおいて、マスタ制御モジュールは、ステージング対象のステージング先の領域は解放処理待ちか否かをチェックする。ステージング先の領域が解放待ちの場合（Ｓ３２０２ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ３２０３ａに移行する。
【０２４２】
ステップＳ３２０３ａにおいて、マスタ制御モジュールは、ステージング対象の世代に１を加算した世代を新たなステージング対象の世代に設定する。そして、マスタ制御モジュールは、処理をステップＳ３２０２ａに移行する。
【０２４３】
一方、ステップＳ３２０２ａにおいて、ステージング先の領域が解放待ちでない場合（Ｓ３２０２ａ  ＮＯ）、マスタ制御モジュールは、処理をステップＳ３２０４ａに移行する。
【０２４４】
ステップＳ３２０４ａにおいて、マスタ制御モジュールは、ステージング先のバッファセットが転送中か否かをチェックする。ステージング先のバッファセットが転送中の場合（Ｓ３２０４ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ３２０３ａに移行する。
【０２４５】
一方、ステップＳ３２０４ａにおいて、ステージング先のバッファセットが転送中でない場合（Ｓ３２０４ａ  ＮＯ）、マスタ制御モジュールは、処理をステップＳ３２０５ａに移行する。
【０２４６】
ステップＳ３２０５ａにおいて、マスタ制御モジュールは、ステージング対象がステージング処理中か否かをチェックする。ステージング対象がステージング処理中の場合（Ｓ３２０５ａ  ＮＯ）、マスタ制御モジュールは、処理をステップＳ３２０３ａに移行する。
【０２４７】
一方、ステップＳ３２０５ａにおいて、ステージング対象がステージング処理中でない場合（Ｓ３２０５ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ３２０６ａに移行する。
【０２４８】
ステップＳ３２０６ａにおいて、マスタ制御モジュールは、ステージング対象がライトバック処理中か否かをチェックする。ステージング対象がライトバック処理中の場合（Ｓ３２０６ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ３２０７ａに移行する。
【０２４９】
ステップＳ３２０７ａにおいて、マスタ制御モジュールは、自身のライトバック処理を中断するとともに、コピー元装置１０１に備わる他の制御モジュールに対して、ライトバック処理の中断を依頼する。
【０２５０】
ステップＳ３２０１ｂにおいて、各制御モジュールは、マスタ制御モジュールからの依頼を受けると、処理中のライトバック処理を中断する。そして、マスタ制御モジュールに対して、ライトバック処理を中断した旨を通知する。
【０２５１】
ステップＳ３２０８ａにおいて、マスタ制御モジュールは、依頼した全ての制御モジュールから応答を受信したか否かをチェックし、応答を受信していない制御モジュールがある場合には（Ｓ３２０８ａ  ＮＯ）、ステップＳ３２０８ａの処理を繰り返す。
【０２５２】
ステップＳ３２０８ａにおいて、依頼した全ての制御モジュールから応答を受信したと判断すると（Ｓ３２０８ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ３２０９ａに移行し、ステージング処理を終了する。
【０２５３】
一方、ステップＳ３２０６ａにおいて、ステージング対象がライトバック処理中でないと判断した場合（Ｓ３２０６ａ  ＮＯ）、マスタ制御モジュールは、処理をステップＳ３２１０ａに移行する。
【０２５４】
ステップＳ３２１０ａにおいて、マスタ制御モジュールは、ステージング先のバッファセットが、Ｗｒｉｔｅデータ等の格納処理中か否かをチェックする。ステージング先のバッファセットが格納処理中と判断した場合（Ｓ３２１０ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ３２１１ａに移行し、ステージング処理を終了する。
【０２５５】
ステップＳ３２１０ａにおいて、ステージング先のバッファセットが格納処理中でないと判断した場合（Ｓ３２１０ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ３２１２ａに移行する。
【０２５６】
ステップＳ３２１２ａにおいて、マスタ制御モジュールは、ステージング先のバッファセットを取得する。そして、マスタ制御モジュールは、処理をステップＳ３２１３ａに移行し、ステージ処理用バッファセットに既にステージング対象のデータが格納されているか否かをチェックする。
【０２５７】
ステージング対象のデータがある場合（Ｓ３２１３ａ  ＹＥＳ）、マスタ制御モジュールは、ステップＳ３２１７ａに移行してステージング処理を終了する。また、ステージング対象のデータがない場合（Ｓ３２１３ａ  ＮＯ）、マスタ制御モジュールは、処理をステップＳ３２１４ａに移行する。
【０２５８】
ステップＳ３２１４ａにおいて、マスタ制御モジュールは、退避用バッファからステージング対象の世代のデータを取得し、ステップＳ３２１２ａで取得したバッファセットに格納する。そして、処理をステップＳ３２１５ａに移行する。
【０２５９】
ステップＳ３２１５ａにおいて、マスタ制御モジュールは、各担当制御モジュールに対して、ステップＳ３２１４ａと同様に、退避用バッファからステージング対象の世代のデータを取得してステージング処理を行うように依頼する。
【０２６０】
ステップＳ３２０２ｂにおいて、依頼を受けた制御モジュールは、マスタ制御モジュールから依頼のあったバッファセットについてステージング処理を行なう。そして、処理をステップＳ３２０３ｂに移行する。
【０２６１】
ステップＳ３２０３ｂにおいて、各制御モジュールは、退避用バッファを参照し、ステージング対象の世代のバッファにステージング処理をすべきＷｒｉｔｅデータがあるか否かを判別する。そして、Ｗｒｉｔｅデータがある場合（Ｓ３２０３ｂ  ＹＥＳ）、各制御モジュールは、当該Ｗｒｉｔｅデータに対してステージング処理を行なう（Ｓ３２０４ｂ）。ステージング処理が完了すると、各制御モジュールは、マスタ制御モジュールに対して完了通知を行なう。
【０２６２】
また、ステップＳ３２０３ｂにおいて、ステージング対象の世代のバッファにステージング処理をすべきＷｒｉｔｅデータがない場合（Ｓ３２０３ｂ  ＮＯ）、各制御モジュールは、マスタ制御モジュールに対して完了通知を行う。
【０２６３】
ステップＳ３２１６ａにおいて、マスタ制御モジュールは、依頼した全ての制御モジュールから応答を受信するまで完了通知を監視する。そして、依頼した全ての制御モジュールから応答を受信すると（Ｓ３２１６ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ３２１７ａに移行し、ステージング処理を終了する。
【０２６４】
以上に説明したように、本実施例に係るリモートコピー処理では、例えばステップＳ９０７ａで説明されたように、バッファへの格納処理が完了して転送処理を行う直前に、バッファセットのコピー元ＩＤとコピー先ＩＤとのマッチング処理を行なって、バッファセットを確立するので、コピー元装置１０１に備わる記録バッファ２０１およびバッファセット記憶部２０２といったバッファには、ホスト１０９からのＷｒｉｔｅ  Ｉ／Ｏに係るＷｒｉｔｅデータを、バッファの容量がなくなるまで格納することが可能となる。
【０２６５】
その結果、順序性を保証したリモートコピーに使用するバッファに関し、コピー先装置１１１に備わるバッファが、コピー元装置１０１に備わるバッファより少ない場合であっても、コピー元装置が有するバッファを有効に使用することが可能となる。
【０２６６】
また、コピー元装置１０１−コピー先装置１１１間のネットワークに何らかのトラブルが生じる等して経路閉塞状態となった場合でも、コピー元装置１０１に備わるバッファに容量が許す限りＷｒｉｔｅデータを格納することができるので、当該バッファが枯渇するまでに経路閉塞状態を解消すれば、順序性を保証したリモートコピー処理を中断する必要がなくなるという効果を奏する。その結果、リモートコピー処理の信頼性・安定性を向上するという効果を奏する。
【０２６７】
さらに、本実施例にリモートコピー処理の変形例で示した退避用バッファ１９０を利用してバッファ退避処理を行なうことにより、コピー元装置１０１に備わるバッファが枯渇することがなくなるので、コピー元装置１０１−コピー先装置１１１間のネットワークに何らかのトラブルが生じる等して経路閉塞状態となった場合でも、ホスト側の制限等の条件が許す限り、順序性を保証したリモートコピー処理を継続することが可能となるという効果を奏する。
【０２６８】
以上の実施例１〜ｎを含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
上位装置から送信されるデータを記憶する第１の記憶ボリュームと前記第１の記憶ボリュームへの記憶を制御する第１の制御部とを備えた第１の記憶装置と、前記第１の記憶装置に記憶されたデータがネットワークを介してコピーされる第２の記憶ボリュームと前記第２の記憶ボリュームへの記憶を制御する第２の制御部とを備えた第２の記憶装置とを備えたストレージシステムであって、
前記第１の制御部は、
前記第２の記憶装置に設けられた受信用バッファの識別に用いられる受信用バッファ識別情報を取得する識別情報取得部と、
前記第２の記憶装置の前記受信用バッファに転送するデータを格納する送信用バッファと、
転送処理を行う際に、前記送信用バッファに設けられた送信用バッファ識別情報と前記受信用バッファ識別情報とに基づいて前記送信用バッファと前記受信用バッファとを対応づけるデータ転送制御部と、
前記対応づけに基づいて前記送信用バッファのデータを前記受信用バッファに対して転送する転送処理部とを備えたことを特徴とするストレージシステム。
（付記２）
前記第１の記憶装置に、前記送信用バッファに記憶されたデータを一時的に退避する退避用ボリュームと、前記退避用ボリュームへのデータ退避を制御する退避制御部とをさらに備え、
前記退避制御部は、前記送信用バッファの使用状態が所定の状態に達すると前記送信用バッファに格納されたデータを世代単位で前記退避用バッファに退避させることを特徴とする付記１に記載のストレージシステム。
（付記３）
前記退避制御部は、前記送信用バッファに格納されたデータのうち、転送用意が完了し、かつ転送順位が低い世代のデータを前記退避用ボリュームに退避させることを特徴とする付記２に記載のストレージシステム。
（付記４）
前記制御部に、前記送信用バッファの書き込み状態を示す第１のポインタを備え、
前記退避制御部は、前記第１のポインタに基づいて前記退避用ボリュームに前記転送順位が低い世代のデータを退避さることを特徴とする付記３に記載のストレージシステム。（付記５）
前記制御部に、前記送信用バッファの読み出し状態を示す第２のポインタと、
前記第２のポインタに基づいて前記退避用ボリュームから前記転送順位が低い世代のデータを復元する復元制御部をさらに備えた事を特徴とする付記１から４に記載のストレージシステム。
（付記６）
前記前記復元制御部は、前記送信用バッファに格納されている転送順位が低い世代のデータが使用可能な場合は、前記転送順位が低い世代のデータに付随する制御データのみを前記退避用ボリュームから前記送信用バッファに復元する事を特徴とする付記１から４に記載のストレージシステム。
（付記７）
上位装置から送信されるデータを記憶する第１の記憶ボリュームと、
前記第１の記憶ボリュームへの記憶制御とネットワークを介して接続される第２の記憶ボリュームへのコピー制御をおこなう制御部とを備えた記憶装置であって、
前記制御部は、
前記第２の記憶ボリュームを備える受信側記憶装置に設けられた受信用バッファの識別に用いられる受信用バッファ識別情報を取得する識別情報取得部と、
前記第２の記憶装置の前記受信用バッファに転送するデータを格納する送信用バッファと、
転送処理を行う際に、前記送信用バッファに設けられた送信用バッファ識別情報と前記受信用バッファ識別情報とに基づいて前記送信用バッファと前記受信用バッファとを対応づけるデータ転送制御部と、
前記対応づけに基づいて前記送信用バッファのデータを前記受信用バッファに対して転送する転送処理部とを備えたことを特徴とする記憶装置。
（付記８）
送信装置に、前記送信用バッファに記憶されたデータを一時的に退避する退避用ボリュームと、前記退避用ボリュームへのデータ退避を制御する退避制御部とをさらに備え、
前記退避制御部は、前記送信用バッファの使用状態が所定の状態に達すると前記送信用バッファに格納されたデータを世代単位で前記退避用バッファに退避させることを特徴とする付記７に記載の記憶装置。
（付記９）
前記退避制御部は、前記送信用バッファに格納されたデータのうち、転送用意が完了し、かつ転送順位が低い世代のデータを前記退避用ボリュームに退避させることを特徴とする付記８に記載の記憶装置。
（付記１０）
前記制御部に、前記送信用バッファの書き込み状態を示す第１のポインタを備え、
前記退避制御部は、前記第１のポインタに基づいて前記退避用ボリュームに前記転送順位が低い世代のデータを退避さることを特徴とする付記９に記載の記憶装置。
（付記１１）
前記制御部に、前記送信用バッファの読み出し状態を示す第２のポインタと、
前記第２のポインタに基づいて前記退避用ボリュームから前記転送順位が低い世代のデータを復元する復元制御部をさらに備えた事を特徴とする付記８から１０に記載の記憶装置。
（付記１２）
前記前記復元制御部は、前記送信用バッファに格納されている転送順位が低い世代のデータが使用可能な場合は、前記転送順位が低い世代のデータに付随する制御データのみを前記退避用ボリュームから前記送信用バッファに復元する事を特徴とする付記８から１０に記載の記憶装置。
（付記１３）
上位装置から送信されるデータを記憶する第１の記憶ボリュームへの記憶制御とネットワークを介して接続される第２の記憶ボリュームへのコピー制御をおこなう制御部とを備えた記憶装置の制御方法であって、
前記第２の記憶ボリュームを備える受信側記憶装置に設けられた受信用バッファの識別に用いられる受信用バッファ識別情報を取得する識別情報取得ステップと、
前記受信側記憶装置の前記受信用バッファに転送するデータを送信用バッファに格納するデータ格納ステップと、
転送処理を行う際に、前記送信用バッファに設けられた送信用バッファ識別情報と前記受信用バッファ識別情報とに基づいて前記送信用バッファと前記受信用バッファとを対応づけるデータ転送制御ステップと、
前記対応づけに基づいて前記送信用バッファのデータを前記受信用バッファに対して転送する転送処理ステップとを備えたことを特徴とする記憶装置の制御方法。
（付記１４）
前記記憶装置に備えられた退避用ボリュームに、前記送信用バッファに記憶されたデータを一時的に退避する退避制御ステップをさらに備え、
前記退避制御ステップは、前記送信用バッファの使用状態が所定の状態に達すると前記送信用バッファに格納されたデータを世代単位で前記退避用バッファに退避させることを特徴とする付記１３に記載の記憶装置の制御方法。
（付記１５）
前記退避制御ステップは、前記送信用バッファに格納されたデータのうち、転送用意が完了し、かつ転送順位が低い世代のデータを前記退避用ボリュームに退避させることを特徴とする付記１５に記載の記憶装置の制御方法。
（付記１６）
前記退避制御ステップは、前記送信用バッファの書き込み状態を示す第１のポインタに基づいて前記退避用ボリュームに前記転送順位が低い世代のデータを退避さることを特徴とする付記１５に記載の記憶装置の制御方法。
（付記１７）
送信用バッファの読み出し状態を示す第２のポインタに基づいて前記退避用ボリュームから前記転送順位が低い世代のデータを復元する復元制御部をさらに備えた事を特徴とする付記１４から１６に記載の記憶装置の制御方法。
（付記１８）
前記前記復元制御ステップは、前記送信用バッファに格納されている転送順位が低い世代のデータが使用可能な場合は、前記転送順位が低い世代のデータに付随する制御データのみを前記退避用ボリュームから前記送信用バッファに復元する事を特徴とする付記１４から１６に記載の記憶装置の制御方法。
【図面の簡単な説明】
【０２６９】
【図１】本実施例に係るストレージシステムの構成の概要を示す図である。
【図２】本実施例に係る制御モジュールが備えるメモリの具体的な構成例を示す図である。
【図３】本実施例に係るリモートコピー処理の概要を説明する図である。
【図４】本実施例に係るリモートコピー処理の概要を説明する図である。
【図５】本実施例に係るリモートコピー処理の概要を説明する図である。
【図６】本実施例に係るリモートコピー処理の概要を説明する図である。
【図７】本実施例に係るリモートコピー処理の概要を説明する図である。
【図８】本実施例に係るリモートコピー処理の概要を説明する図である。
【図９Ａ】本実施例に係るリモートコピー処理の概要を示すフローチャートである。
【図９Ｂ】本実施例に係るリモートコピー処理の概要を示すフローチャートである。
【図１０】本実施例に係るコピー先バッファ割り当て処理の具体的な処理を示すフローチャートである。
【図１１】本実施例に係る経路閉塞状態解消後のコピー元装置におけるバッファセット転送処理を決定する処理を示すフローチャートである。
【図１２】本実施例に係る経路閉塞状態を検出した時のコピー元装置におけるバッファの状態変更処理を示すフローチャートである。
【図１３】本実施例に係る経路閉塞状態でのコピー元装置におけるＩ／Ｏ処理を示すフローチャートである。
【図１４Ａ】本実施例に係る経路閉塞状態解消後の未使用バッファＩＤ取得処理およびバッファセット転送再開処理を示すフローチャートである。
【図１４Ｂ】本実施例に係る経路閉塞状態解消後の未使用バッファＩＤ取得処理およびバッファセット転送再開処理を示すフローチャートである。
【図１５】本実施例に係る経路閉塞状態解消後の未使用バッファＩＤ取得処理およびバッファセット転送再開処理を示すフローチャートである。
【図１６】本実施例に係る経路閉塞状態検出時のコピー先装置における処理を示すフローチャートである。
【図１７】順序性を保証したリモートコピー処理の従来例を示す図である。
【図１８】順序性を保証したリモートコピー処理の従来例を示す図である。
【図１９】本実施例に係るバッファ退避処理の概要を説明する図である。
【図２０】本実施例に係るバッファ退避処理の概要を説明する図である。
【図２１】本実施例に係る退避用バッファの領域を生成する処理を示すフローチャートである。
【図２２】本実施例に係る退避用バッファの制御モジュールへの割り当ての具体的な処理を示すフローチャートである。
【図２３】本実施例に係る退避用バッファを１つのＲＡＩＤグループで構成する場合の構成例を示す図である。
【図２４】本実施例に係る退避用バッファを２つのＲＡＩＤグループで構成する場合の構成例を示す図である。
【図２５】本実施例に係る退避用バッファを説明する図である。
【図２６】本実施例に係るバッファ退避処理におけるライトバックポインタ情報・ステージポインタ情報を説明する図である。
【図２７】本実施例に係るライトバックポインタ情報の更新処理を示すフローチャートである。
【図２８】本実施例に係るステージポインタ情報の更新処理を示すフローチャートである。
【図２９】本実施例に係るライトバック処理を示すフローチャートである。
【図３０】本実施例に係るライトバック処理の具体例を示す図である。
【図３１】本実施例に係るライトバック処理の具体例を示す図である。
【図３２Ａ】本実施例に係るステージング処理を示すフローチャートである。
【図３２Ｂ】本実施例に係るステージング処理を示すフローチャートである。
【図３３】順序性を保証したリモートコピー機能を備えるＲＡＩＤ装置の従来例を示す図である。
【図３４】順序性を保証したリモートコピー機能を備えるＲＡＩＤ装置の従来例を示す図である。
【符号の説明】
【０２７０】
１０１      コピー元装置
１０４ａ      メモリ
１０８ａ      ディスク装置
１０９      ホスト
１１１      コピー先装置
１９０      退避用バッファ
２０１      記録バッファ
２０１ａ      バッファ
２０１ｂ      ＢＩＴ
２０２      バッファセット記憶部
２０３      未使用バッファＩＤ記憶部
【図２】
2010039574.tif 000003
【図３】
2010039574.tif 000004
【図７】
2010039574.tif 000005
【図９Ａ】
2010039574.tif 000006
【図９Ｂ】
2010039574.tif 000007
【図１０】
2010039574.tif 000008
【図１１】
2010039574.tif 000009
【図１２】
2010039574.tif 000010
【図１３】
2010039574.tif 000011
【図１４Ａ】
2010039574.tif 000012
【図１４Ｂ】
2010039574.tif 000013
【図１５】
2010039574.tif 000014
【図１６】
2010039574.tif 000015
【図２１】
2010039574.tif 000016
【図２２】
2010039574.tif 000017
【図２７】
2010039574.tif 000018
【図２８】
2010039574.tif 000019
【図２９】
2010039574.tif 000020
【図３２Ａ】
2010039574.tif 000021
【図３２Ｂ】
2010039574.tif 000022
【図１】
2010039574.tif 000023
【図４】
2010039574.tif 000024
【図５】
2010039574.tif 000025
【図６】
2010039574.tif 000026
【図８】
2010039574.tif 000027
【図１７】
2010039574.tif 000028
【図１８】
2010039574.tif 000029
【図１９】
2010039574.tif 000030
【図２０】
2010039574.tif 000031
【図２３】
2010039574.tif 000032
【図２４】
2010039574.tif 000033
【図２５】
2010039574.tif 000034
【図２６】
2010039574.tif 000035
【図３０】
2010039574.tif 000036
【図３１】
2010039574.tif 000037
【図３３】
2010039574.tif 000038
【図３４】
2010039574.tif 000039