(57)【特許請求の範囲】
【請求項１】
上位装置から送信されるデータを受信して、記憶媒体へ記憶させるとともに、該受信したデータをリモートコピーのためにコピー先装置へ送信するＲＡＩＤ装置であって、
前記コピー先装置へ送信するデータを記憶する為の、複数の第１のバッファから構成される第１のバッファセットを複数備える記憶専用バッファと、
前記第１のバッファセットに格納されたデータを記憶するための、複数の第２のバッファから構成される第２のバッファセットを複数備える退避バッファと、
前記第２のバッファ毎の使用状況を示す情報を記憶した空き退避バッファ管理テーブルと、
前記上位装置から受信したデータを前記第１のバッファセットへ記憶する格納手段と、
前記第１のバッファセットに記憶されたデータを、前記第１のバッファセットへの記憶順序に基づき前記コピー先装置へ送信するデータ送信手段と、
前記コピー先装置が自身の記憶媒体に前記送信手段により受信したデータを展開完了したことを示す展開完了通知を受信すると、データの送信に使用された前記第１のバッファセットを解放するバッファセット解放手段と、
前記コピー先装置への転送中および前記コピー先装置が自身の記憶媒体に前記送信手段により受信したデータを展開中のために、前記上位装置から受信したデータを格納する前記第１のバッファセットの数が閾値を超えた場合、閾値を超えた第１のバッファセットに記憶されているデータを、前記第２のバッファセットへ退避させると共に、前記空き退避バッファ管理テーブルの該当する第２のバッファの使用状況を示す情報を、使用中を示す情報に更新するライトバック手段と、
前記第１のバッファセットに記憶されているデータがコピー先装置へ送信され、データの送信に使用された第１のバッファセットが解放され未使用になると、前記第２のバッファセットに記憶させたデータのうち、前記第１のバッファセットが記憶した順序が最も古いデータを前記未使用になった第１のバッファセットへ転送すると共に、前記空き退避バッファ管理テーブルの該当する第２のバッファの使用状況を示す情報を、空きを示す情報に更新するステージング手段と、
前記第２のバッファ毎に、前記ライトバック手段により退避処理時の転送速度情報を記憶する性能情報テーブルと、
前記空き退避バッファ管理テーブルを検索して検出された空きの第２のバッファと前記性能情報テーブルを基に、前記第２のバッファセットを構成する第２のバッファ間の速度差が最小限の組合せになるように、前記第２のバッファセットを構成する第２のバッファを再配置する再配置手段と、
を有する事を特徴とするＲＡＩＤ装置。
【請求項２】
上位装置から送信されるデータを受信して、記憶媒体へ記憶させるとともに、該受信したデータをリモートコピーのためにコピー先装置へ送信するＲＡＩＤ装置であって、コピー先装置へ送信するデータを記憶する為の、複数の第１のバッファから構成される第１のバッファセットを複数備える記憶専用バッファと、第１のバッファセットに格納されたデータを記憶するための、複数の第２のバッファから構成される第２のバッファセットを複数備える退避バッファと、第２のバッファ毎の使用状況を示す情報を記憶した空き退避バッファ管理テーブルと、第２のバッファ毎に第１のバッファセットから第２のバッファセットへのデータの退避処理時の転送速度情報を記憶する性能情報テーブルと、を備えるＲＡＩＤ装置が行う記憶制御方法であって、
前記上位装置から受信したデータを前記第１のバッファセットへ格納し、
前記第１のバッファセットに記憶されたデータを、前記第１のバッファセットへの記憶順序に基づき前記コピー先装置へ送信し、
前記コピー先装置が自身の記憶媒体に、受信したデータを展開完了したことを示す展開完了通知を受信すると、データの送信に使用された前記第１のバッファセットを解放し、
前記コピー先装置への転送中および前記コピー先装置が自身の記憶媒体に受信したデータを展開中のために、前記上位装置から受信したデータを格納する前記第１のバッファセットの数が閾値を超えた場合、閾値を超えた第１のバッファセットに記憶されているデータを、前記第２のバッファセットへ退避させると共に、前記空き退避バッファ管理テーブルの該当する第２のバッファの使用状況を示す情報を、使用中を示す情報に更新し、
前記第１のバッファセットに記憶されているデータがコピー先装置へ送信され、該データの送信に使用された第１のバッファセットが解放され未使用になると、前記第２のバッファセットに記憶させたデータのうち、前記第１のバッファセットが記憶した順序が最も古いデータを前記未使用になった第１のバッファセットへ転送すると共に、前記空き退避バッファ管理テーブルの該当する第２のバッファの使用状況を示す情報を、空きを示す情報に更新し、
前記空き退避バッファ管理テーブルを検索して検出された空きの第２のバッファと前記性能情報テーブルを基に、前記第２のバッファセットを構成する第２のバッファ間の速度差が最小限の組合せになるように、前記第２のバッファセットを構成する第２のバッファを再配置する事を特徴とする記憶制御方法。
【請求項３】
上位装置から送信されるデータを受信して、記憶媒体へ記憶させるとともに、該受信したデータをリモートコピーのためにコピー先装置へ送信するＲＡＩＤ装置であって、コピー先装置へ送信するデータを記憶する為の、複数の第１のバッファから構成される第１のバッファセットを複数備える記憶専用バッファと、第１のバッファセットに格納されたデータを記憶するための、複数の第２のバッファから構成される第２のバッファセットを複数備える退避バッファと、第２のバッファ毎の使用状況を示す情報を記憶した空き退避バッファ管理テーブルと、第２のバッファ毎に第１のバッファセットから第２のバッファセットへのデータの退避処理時の転送速度情報を記憶する性能情報テーブルと、を備えるＲＡＩＤ装置がコンピュータに実行させる記憶制御プログラムであって、
前記上位装置から受信したデータを前記第１のバッファセットへ格納し、
前記第１のバッファセットに記憶されたデータを、前記第１のバッファセットへの記憶順序に基づき前記コピー先装置へ送信し、
前記コピー先装置が自身の記憶媒体に、受信したデータを展開完了したことを示す展開完了通知を受信すると、データの送信に使用された前記第１のバッファセットを解放し、
前記コピー先装置への転送中および前記コピー先装置が自身の記憶媒体に受信したデータを展開中のために、前記上位装置から受信したデータを格納する前記第１のバッファセットの数が閾値を超えた場合、閾値を超えた第１のバッファセットに記憶されているデータを、前記第２のバッファセットへ退避させると共に、前記空き退避バッファ管理テーブルの該当する第２のバッファの使用状況を示す情報を、使用中を示す情報に更新し、
前記第１のバッファセットに記憶されているデータがコピー先装置へ送信され、該データの送信に使用された第１のバッファセットが解放され未使用になると、前記第２のバッファセットに記憶させたデータのうち、前記第１のバッファセットが記憶した順序が最も古いデータを前記未使用になった第１のバッファセットへ転送すると共に、前記空き退避バッファ管理テーブルの該当する第２のバッファの使用状況を示す情報を、空きを示す情報に更新し、
前記空き退避バッファ管理テーブルを検索して検出された空きの第２のバッファと前記性能情報テーブルを基に、前記第２のバッファセットを構成する第２のバッファ間の速度差が最小限の組合せになるように、前記第２のバッファセットを構成する第２のバッファを再配置する事をコンピュータに実行させることを特徴とする記憶制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、順序性を補償した非同期のコピー機能を有する記憶装置の記憶制御装置、記憶制御方法、および、記憶制御プログラムにかんするものである。
に関する。
【背景技術】
【０００２】
従来、分散キャッシュメモリ型のストレージシステムを採用するＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）装置では、性能や信頼性の向上のために、ストレージに対するデータの入出力を制御する制御モジュールを複数備える冗長構成が採用されている。そして、制御モジュール毎に、論理ボリュームに対するデータのＲｅａｄ／Ｗｒｉｔｅ処理が実行される。
【０００３】
このようなＲＡＩＤ装置は、信頼性等の向上のために、アドバンスト・コピーといわれる順序性を補償したリモートコピー機能を備える。
【０００４】
図３４は、順序性を補償したリモートコピー機能を備えるＲＡＩＤ装置を説明する図である。なお、図３４は、制御モジュール＃００および＃０１を備えるＲＡＩＤ装置２８０１と、制御モジュール＃１０および＃１１を備えるＲＡＩＤ装置２８０２と、で構成されるストレージシステムを示している。
【０００５】
各ＲＡＩＤ装置は、バッファおよびＢＩＴ（Ｂｕｆｆｅｒ  Ｉｎｄｅｘ  Ｔａｂｌｅ）を有する記録専用バッファと、バッファセットに関する情報を記憶するバッファセット情報記憶部と、データを記憶する記憶媒体と、を備える。
【０００６】
バッファは、一定サイズの複数の領域に分割されている。分割された各領域には、それぞれバッファＩＤが割り当てられる。そして、領域毎に、記憶媒体に記憶しまたは記憶するデータが一時的に記憶される。また、ＢＩＴ記憶部は、バッファに記憶したデータの記憶場所、図３４ではバッファＩＤなどを含む情報であるＢＩＴを記憶する。
【０００７】
なお、図３４のバッファに記載されている（００００）は、バッファＩＤが００００のバッファに記憶されたバッファデータを表している。また、ＢＩＴに記載されている００００は、バッファＩＤを表している。
【０００８】
バッファセット情報記憶部は、各制御モジュールのバッファに記憶されたバッファデータの組み合わせ、例えば、コピー元装置２８０１の横長に点線で囲われたバッファデータ（００００）と（０１００）との組み合わせであるバッファセットに関する情報を記憶する。
【０００９】
このバッファセットに関する情報には、各バッファデータと各バッファデータを記憶するコピー先装置２８０２のバッファとの関連付け情報が含まれる。例えば、制御モジュール＃００のバッファセット情報記憶部で、バッファＩＤが００００のバッファに記憶されているバッファデータと、そのバッファデータを記憶するバッファＩＤが１０００のバッファと、が関連付けられている。
【００１０】
以上の構成において、（ａ）制御モジュール＃００および＃０１は、ホストコンピュータ等からＷｒｉｔｅ  Ｉ／Ｏ命令を受付けると、そのＷｒｉｔｅ  Ｉ／Ｏ命令にしたがってＷｒｉｔｅデータを記憶媒体に記憶する。
【００１１】
同時に、（ｂ）制御モジュール＃００および＃０１は、Ｗｒｉｔｅデータを転送してバッファに記憶する。この時、Ｗｒｉｔｅデータは、バッファセット単位で管理される。
【００１２】
そして、（ｃ）バッファへのＷｒｉｔｅデータの書込みが完了すると、制御モジュール＃００および＃０１は、そのＷｒｉｔｅデータについて、バッファセット単位でデータ転送、すなわち、リモートコピーを開始する。
【００１３】
（ｄ）リモートコピーによってコピー元装置２８０１から送られたＷｒｉｔｅデータは、バッファセット情報にしたがって、コピー先装置２８０２の制御モジュール＃１０および＃１１に備わるバッファに記憶される。すると、制御モジュール＃１０および＃１１は、バッファに記憶されたＷｒｉｔｅデータを記憶媒体に反映する。
【００１４】
以上の処理が完了すると、（ｅ）コピー元装置２８０１およびコピー先装置２８０２の各制御モジュールは、バッファなどを解放する。
【００１５】
以上のように、記録専用バッファを使用したまとめ方式によるデータ送信を行なって、バッファセットを一括制御し、コピー先装置２８０２において、バッファセット単位でデータを記憶媒体に展開することで、順序性が補償される。
【００１６】
また、上記してきたように、アドバンスコピーは、通信速度の関係などで、送信待ちとなるＷｒｉｔｅデータを蓄積するものであるため、通信速度が遅いほど、バッファの容量が多く必要である。また、上記したバッファにはある程度の高速性が要求されるため、メモリ（以下バッファメモリ）が使用される。しかし、コストなどの問題から、搭載する容量をあまり大きくすることができない。このため、待機中の送信対象のコピーデータが、バッファの容量を越える場合に、一時的にコピーデータを退避（Ｗｒｉｔｅ  Ｂａｃｋ）させるための、ディスク（以下、ディスクバッファ）を用いるものがある。この、バッファディスクに記憶されているデータは、順序性を確保するために世代管理がなされ、バッファメモリに空きができると、バッファディスクに記憶しているデータを、古い世代のデータから順に書き戻す(Ｓｔａｇｉｎｇ)。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００６−２６０２９２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかしながら、コピー元装置では、転送済みのＷｒｉｔｅデータを記憶するバッファやＢＩＴは、コピー先装置２８０２でＷｒｉｔｅデータが記憶媒体に展開されるまで解放されずに保持される。
【００１９】
このため、（ｆ）コピー先装置２８０２においてＷｒｉｔｅデータを記憶媒体に展開する処理が遅延している場合、コピー元装置２８０１−コピー先装置２８０２間の回線能力が低いまたは不均一である場合などには、転送処理に遅延が発生する。
【００２０】
例えば、コピー元装置２８０１−コピー先装置２８０２間の回線帯域の低さや不安定などにより転送処理に遅延が発生すると、その分コピー元装置２８０１やコピー先装置２８０２のバッファやＢＩＴを使用する時間が長くなるので、その間メモリの解放ができなくなる。
【００２１】
（ｇ）このような状態でホストコンピュータ等から新たにＷｒｉｔｅ  Ｉ／Ｏ命令を受けると、コピー元装置２８０１は、そのＷｒｉｔｅ  Ｉ／Ｏ命令を受ける度に、Ｗｒｉｔｅデータをバッファに記憶する。その結果、コピー元装置２８０１のバッファは次々と消費されていく。
【００２２】
（ｈ）この状態が続くと、Ｗｒｉｔｅデータを記憶可能なバッファを確保できなくなり、コピー元装置２８０１のバッファ枯渇が発生してしまう。また、設定されているバッファの大きさ以上に大きいＷｒｉｔｅデータを処理する場合も、同様にバッファ枯渇が発生してしまう。
【００２３】
バッファ枯渇の状態では、ホストコンピュータ等からのＷｒｉｔｅ  Ｉ／Ｏ命令をコピー元装置２８０１が処理せずに止まっている状態であるため、この状態を長く継続することはできない。
【００２４】
そのため、（ｉ）一時的にＷｒｉｔｅ  Ｉ／Ｏ命令の処理を停止し、かつ、一定時間経過してもバッファ枯渇状態が解消されない場合は、バッファＨａｌｔ処理が行なわれる。コピー元装置２８０１およびコピー先装置２８０２は、バッファＨａｌｔ処理を行なって、バッファをクリアするとともにＷｒｉｔｅ  Ｉ／Ｏ命令の処理を再開する。
【００２５】
この時、コピー元装置２８０１は、バッファ内の情報を専用のビットマップに書き戻す。そして、コピー元装置２８０１は、バッファＨａｌｔ処理を実行後にそのビットマップにしたがって順序性を補償しないリモートコピー転送を行なう。この場合、順序性を補償したリモートコピーが中断されてしまう、という問題がある。
【００２６】
本技術は、この点に鑑みてなされたもので、バッファＨａｌｔ処理を回避して順序性を補償したコピー処理を行うことができる記憶制御装置を提供することを目的とする。
【課題を解決するための手段】
【００２７】
本技術は、上記した課題を解決するために、上位装置から送信されるデータを受信して、記憶媒体へ記憶させるとともに、受信したデータをリモートコピーのためにコピー先装置へ送信する本技術のＲＡＩＤ装置は、コピー先装置へ送信するデータを記憶する為の、複数の第１のバッファから構成される第１のバッファセットを複数備える記憶専用バッファと、第１のバッファセットに格納されたデータを記憶するための、複数の第２のバッファから構成される第２のバッファセットを複数備える退避バッファと、第２のバッファ毎の使用状況を示す情報を記憶した空き退避バッファ管理テーブルと、上位装置から受信したデータを第１のバッファセットへ記憶する格納手段と、第１のバッファセットに記憶されたデータを、第１のバッファセットへの記憶順序に基づきコピー先装置へ送信するデータ送信手段と、コピー先装置が自身の記憶媒体に送信手段により受信したデータを展開完了したことを示す展開完了通知を受信すると、データの送信に使用された第１のバッファセットを解放するバッファセット解放手段と、コピー先装置への転送中およびコピー先装置が自身の記憶媒体に送信手段により受信したデータを展開中のために、上位装置から受信したデータを格納する第１のバッファセットの数が閾値を超えた場合、閾値を超えた第１のバッファセットに記憶されているデータを、第２のバッファセットへ退避させると共に、空き退避バッファ管理テーブルの該当する第２のバッファの使用状況を示す情報を、使用中を示す情報に更新するライトバック手段と、第１のバッファセットに記憶されているデータがコピー先装置へ送信され、データの送信に使用された第１のバッファセットが解放され未使用になると、第２のバッファセットに記憶させたデータのうち、第１のバッファセットが記憶した順序が最も古いデータを未使用になった第１のバッファセットへ転送すると共に、空き退避バッファ管理テーブルの該当する第２のバッファの使用状況を示す情報を、空きを示す情報に更新するステージング手段と、第２のバッファ毎に、ライトバック手段により退避処理時の転送速度情報を記憶する性能情報テーブルと、空き退避バッファ管理テーブルを検索して検出された空きの第２のバッファと性能情報テーブルを基に、第２のバッファセットを構成する第２のバッファ間の速度差が最小限の組合せになるように、第２のバッファセットを構成する第２のバッファを再配置する再配置手段とを有することを特徴とするものである。
【発明の効果】
【００２８】
本技術は、上記構成により、バッファＨａｌｔ処理を回避して順序性を補償したコピー処理を行うことができる記憶制御装置を提供することができる。
【図面の簡単な説明】
【００２９】
【図１】ストレージシステムの構成の概要を示す図である。
【図２】制御モジュールが備えるメモリの具体的な構成例を示す図である。
【図３】バッファ管理テーブルの構成例を示す図である。
【図４】バッファセット管理テーブルの構成例を示す図である。
【図５】順序性補償リモートコピー管理テーブルの構成例を示す図である。
【図６】日付別加点テーブルの構成例を示す図である。
【図７】曜日別加点テーブルの構成例を示す図である。
【図８】全退避バッファ管理テーブルを示す図である。
【図９】退避バッファとバッファセットとの関係を説明する図である。
【図１０】ＬＵ管理レーブルの構成例を示す図である。
【図１１】退避バッファセット管理テーブルの構成例を示す図である。
【図１２】空き退避バッファ管理テーブルの構成例を示す図である。
【図１３】バッファ退避処理を説明する図である。
【図１４】バッファ退避処理を説明する図である。
【図１５】リモートコピーの概要を示すフローチャートである。
【図１６】リモートコピーの概要を示すフローチャートである。
【図１７】退避バッファの領域を生成する処理を示すフローチャートである。
【図１８】退避バッファセット管理テーブルの生成処理を示すフローチャートである。
【図１９】バッファ閾値を初期化する処理のフローチャートである。
【図２０】バッファセットの切替え処理を示すフローチャートである。
【図２１】バッファＢｕｓｙ状態決定処理を示すフローチャートである。
【図２２】ライトバックポインタ情報の更新処理を示すフローチャートである。
【図２３】ステージポインタ情報の更新処理を示すフローチャートである。
【図２４】ライトバックを示すフローチャートである。
【図２５】ライトバックの具体的な処理を示すフローチャートである。
【図２６】ライトバック空き退避バッファ検索の処理を示すフローチャートである。
【図２７】退避バッファ再配置スケジューリング処理を示すフローチャートである。
【図２８】退避バッファ再配置処理を示すフローチャートである。
【図２９】再配置時の空き退避バッファ検索の処理を示すフローチャートである
【図３０】ステージングを示すフローチャートである。
【図３１】ステージングを示すフローチャートである。
【図３２】バッファ閾値の最適化処理を示すフローチャートである。
【図３３】マッチング処理の具体的な処理を示すフローチャートである。
【図３４】順序性を補償したリモートコピー機能を備えるＲＡＩＤ装置を説明する図である。
【発明を実施するための形態】
【００３０】
以下、本実施形態の一例について、説明する。
【００３１】
図１は、本実施例に係るストレージシステム１００の構成の概要を示す図である。
【００３２】
図１に示すストレージシステム１００は、ＲＡＩＤ装置１１０と、ＲＡＩＤ装置１１０とネットワークまたは専用線１３０を介して通信可能に接続するＲＡＩＤ装置１２０と、を備える。
【００３３】
ＲＡＩＤ装置１１０は、キャッシュメモリ等に使用されるメモリを有する制御モジュール＃００〜＃０３と、磁気ディスク装置などの記憶装置で構成されるディスク装置１１７と、退避バッファ１１８と、を備える分散キャッシュメモリ型のＲＡＩＤ装置である。
【００３４】
制御モジュール＃００〜＃０３は、ディスク装置１１７および退避バッファ１１８と接続する。
【００３５】
制御モジュール＃００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１１ａと、メモリ１１２ａと、ＣＡ（Ｃｈａｎｎｅｌ  Ａｄａｐｔｅｒ）１１３ａと、ＲＡ（Ｒｅｍｏｔｅ  Ａｄａｐｔｅｒ）１１４ａと、ＤＡ（Ｄｅｖｉｃｅ  Ａｄａｐｔｅｒ）１１５ａおよび１１６ａと、を備える。
【００３６】
ＣＰＵ１１１ａは、所定のプログラム命令を実行して制御モジュール＃００を動作させ、本実施例に係る順序性を補償したリモートコピーを実現する。
【００３７】
メモリ１１２ａは、キャッシュメモリに使用される他に、後述する記録専用バッファ２０１やバッファセット情報記憶部２０２などに使用されるメモリである。
【００３８】
ＣＡ１１３ａは、ＲＡＩＤ装置１１０と接続するホストコンピュータであるホスト１５０に対するインターフェース制御部である。また、ＲＡ１１４ａは、ネットワークまたは専用線１３０を介して接続される他のＲＡＩＤ装置等に対するインターフェース制御部である。
【００３９】
ＤＡ１１５ａおよび１１６ａは、ディスク装置１１７や退避バッファ１１８とのインターフェース制御部である。本実施例では、ＤＡ１１５ａはディスク装置１１７と接続し、ＤＡ１１６ａは退避バッファ１１８と接続する。
【００４０】
ＲＡＩＤ装置１１０に備わる他の制御モジュール＃０１〜＃０３、ＲＡＩＤ装置１２０に備わる制御モジュール＃００〜＃０３も、上述したＲＡＩＤ装置１１０に備わる制御モジュール＃００と同様の構成である。ただし、コピー先装置１２０は、退避バッファを備えなくてもよい。
【００４１】
「第１の記憶手段」などは、メモリ１１２ａの一部の領域を用いて実現することができる。また、「第２の記憶手段」は、１または２以上の磁気ディスク装置等で構成されるディスク装置１１７の一部または全部を用いて実現することができる。
【００４２】
なお、図１では、ＲＡＩＤ装置１１０および１２０が４つの制御モジュール＃００〜＃０３を備える場合について示しているが、これに限定する趣旨ではない。ＲＡＩＤ装置１１０および１２０は、分散キャッシュメモリ型のＲＡＩＤ装置であればよい。ＣＰＵ、ＣＡ、ＲＡおよびＤＡの数についても、図１に示す数に限定する趣旨ではない。
【００４３】
以下の実施例では、ＲＡＩＤ装置１１０からＲＡＩＤ装置１２０にリモートコピーを行なう場合について説明する。そして、この場合のＲＡＩＤ装置１１０を「コピー元装置１１０」といい、ＲＡＩＤ装置１２０を「コピー先装置１２０」という。
【００４４】
図２は、本実施例に係る制御モジュールが備えるメモリ２００、例えば、図１に示したＲＡＩＤ装置１１０の制御モジュール＃００に備わるメモリ１１２ａの具体的な構成例を示す図である。
【００４５】
また、ＲＡＩＤ装置１１０の各制御モジュール＃０１〜＃０３に備わるメモリ１１２ｂ、１１２ｃおよび１１２ｄ、ＲＡＩＤ装置１２０の各制御モジュール＃００〜＃０３に備わるメモリ１２２ａ、１２２ｂ、１２２ｃおよび１２２ｄも、図２と同様の構成でもよい。
【００４６】
図２に示すメモリ２００は、記録専用バッファ２０１と、バッファセット情報記憶部２０２と、を備える。また、メモリ２００は、バッファ管理テーブル記憶部２０３と、バッファセット管理テーブル記憶部２０４と、退避バッファ管理テーブル記憶部２０５と、未使用バッファＩＤ記憶部２０６と、を備える。
【００４７】
記録専用バッファ２０１は、バッファ２０１ａとＢＩＴ記憶部２０１ｂとを備える。
【００４８】
バッファ２０１ａは、ディスク装置１１７などに記憶するもしくは記憶したデータ、例えば後述するＷｒｉｔｅデータなどを一時的に記憶する。本実施例に係るバッファ２０１ａは、一定のサイズを有する８つの領域に区分されている。この区分された領域毎に固有の識別情報が割り当てられる。なお、本実施例ではバッファ２０１ａが８つの領域に区分される場合を例に説明するが、バッファ２０１ａが８つの領域に区分される構成に限定する趣旨でないのは当然である。
【００４９】
以下、この区分された領域を「個別バッファ」という。また、個別バッファに割り当てられる識別情報を「バッファＩＤ」という。そして、任意のバッファＩＤが示す個別バッファに記憶されたデータを「バッファデータ」という。
【００５０】
例えば、図２のバッファ２０１ａ内に記載の（００００）、（０００１）、（０００２）、・・・に関し、括弧内の数字００００、０００１、０００２、・・・は、個別バッファ毎に割当てられたバッファＩＤを示す。括弧付きの数字（００００）、（０００１）、（０００２）、・・・は、それぞれ括弧内のバッファＩＤが示す個別バッファに記憶されたバッファデータを意味している。
【００５１】
ＢＩＴ記憶部２０１ｂは、バッファ２０１ａ内の個別バッファに記憶されているバッファデータが展開されているＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）やＬＢＡ（Ｌｏｇｉｃａｌ
Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）、データサイズ、コピーセッションの番号などを含むＢＩＴを記憶する。
【００５２】
ＢＩＴ記憶部２０１ｂに記載の００００、０００１、０００２、・・・はバッファ２０１ａ内の各個別バッファに割当てられたバッファＩＤを示している。例えば、ＢＩＴ記憶部２０１ｂ内の００００は、バッファＩＤが００００の個別バッファに記憶されているバッファデータが展開されているＬＵやＬＢＡ、データサイズ、コピーセッションの番号などを含むＢＩＴを記憶している。
【００５３】
バッファセット情報記憶部２０２は、同一ＲＡＩＤ装置内の各制御モジュールの個別バッファの組み合わせであって次に使用するものを示す識別情報、すなわち、後述するバッファセットＩＤを記憶する。
【００５４】
以下、同一ＲＡＩＤ装置内の各制御モジュールの個別バッファの組み合わせを、「バッファセット」という。また、バッファセットに割り当てられる識別情報を「バッファセットＩＤ」という。そして、バッファセットに関する情報を「バッファセット情報」という。さらに、バッファセットに記憶されるバッファデータを総じて「バッファセットデータ」という。
【００５５】
本実施例では、各制御モジュールのバッファ２０１ａに８個の個別バッファが備わっているので、バッファセットも８個となる。説明を簡単にするために、バッファセットＩＤは、後述するマスタ制御モジュールの個別バッファのバッファＩＤと同一であるとする。
【００５６】
バッファセット情報には、ＲＡＩＤ装置間でリモートコピーを行なう場合の、コピー元装置１１０に実装されている制御モジュールに備わる個別バッファと、コピー先装置１２０に実装されている制御モジュールに備わる個別バッファと、を関連付ける情報も含まれる。この関連付ける情報をバッファセット情報に含める処理を「マッチング処理」という。
【００５７】
以下、コピー元装置１１０に実装されている制御モジュールに備わる個別バッファのバッファＩＤを、「コピー元ＩＤ」という。同様に、コピー先装置１２０に実装されている制御モジュールに備わる個別バッファのバッファＩＤを、「コピー先ＩＤ」という。
【００５８】
例えば、ＲＡＩＤ装置１１０は、分散キャッシュメモリ型のＲＡＩＤ装置なので、Ｗｒｉｔｅデータ等のデータを、各制御モジュールの個別バッファ、図２の例ではバッファＩＤが００００、０１００、０２００および０３００の個別バッファに分散して記憶する。
【００５９】
この場合、バッファセット情報記憶部２０２には、バッファＩＤが００００、０１００、０２００および０３００の個別バッファを含むバッファセットを表すバッファセット情報が記憶される。
【００６０】
そして、そのバッファセット情報には、例えば、コピー元ＩＤとコピー先ＩＤが、それぞれ００００と１０００、０１００と１１００、０２００と１２００、０３００と１３００であるという組み合わせ情報が含まれる。
【００６１】
なお、図２のバッファセット情報記憶部２０２に記憶されているバッファＩＤ００００、０１００、０２００および０３００は、それぞれコピー元装置１１０に実装されている制御モジュール＃００、＃０１、＃０２および＃０３に備わる個別バッファを示すものとする。
【００６２】
また、図２のバッファセット情報記憶部２０２に記憶されているバッファＩＤ１０００、１１００、１２００および１３００は、それぞれコピー先装置１２０に実装されている制御モジュール＃００、＃０１、＃０２および＃０３に備わる個別バッファを示すものとする。
【００６３】
本実施例に係るリモートコピーは、バッファセット単位で行なわれる。このバッファセット単位のコピー対象データには、記録専用バッファ２０１に記憶されているＢＩＴおよびバッファデータと、バッファセット情報記憶部２０２に記憶されているバッファセット情報と、が含まれる。
【００６４】
本実施例では、このバッファセット単位のコピー対象データを、１つの「世代」として管理する。バッファ管理テーブル記憶部２０３は、記録専用バッファ２０１等の管理に使用するバッファ管理テーブル３００を記憶する。バッファ管理テーブル３００については後述する。
【００６５】
バッファセット管理テーブル記憶部２０４は、バッファセットの使用状態の管理に使用するバッファセット管理テーブル４００、順序性補償リモートコピー管理テーブル４１０、個別バッファ管理テーブル４２０、日付別加点テーブル４３０及び、曜日別加点テーブル４４０を記憶する。また、退避バッファ管理テーブル記憶部２０５は、退避バッファ１１８の管理に使用する全退避バッファ管理テーブル５００、ＬＵ管理テーブル５１０、退避バッファセット管理テーブル５２０、空き退避バッファ管理テーブル５３０を記憶する。これらのテーブルについては後述する。
【００６６】
未使用バッファＩＤ記憶部２０６は、コピー先装置１２０に備わる未使用の個別バッファのバッファＩＤを記憶する。以下、未使用の個別バッファのバッファＩＤを「未使用バッファＩＤ」という。例えば、コピー元装置１１０は、コピー先装置１２０から未使用バッファＩＤの通知を受けると、通知された未使用バッファＩＤを未使用バッファＩＤ記憶部２０６に記憶する。
【００６７】
以上の構成において、本実施例に係るリモートコピーでは、コピー元装置１１０は、Ｗｒｉｔｅデータを記録専用バッファ２０１に格納する処理やＷｒｉｔｅデータをコピー先装置１２０に転送するなどの処理を、バッファセット単位で一括して行なう。
【００６８】
同様に、本実施例に係るリモートコピーでは、コピー先装置１２０は、コピー先装置１１０から転送されたＷｒｉｔｅデータをディスク装置１２７に展開する処理などを、バッファセット単位で一括して行う。その結果、順序性を補償したリモートコピーが実現される。
【００６９】
図３は、本実施例に係るバッファ管理テーブル３００の構成例を示す図である。
【００７０】
バッファ管理テーブル３００は、対象バッファセットＩＤと、ライトバックポインタ情報と、ステージポインタ情報と、バッファ閾値と、を備える。
【００７１】
対象バッファセットＩＤは、現在使用しているバッファセットのバッファセットＩＤを示す情報である。ライトバックポインタ情報は、後述のライトバックの対象となる世代を示す情報である。ステージポインタ情報は、最後に後述のステージングが行なわれた世代を示す情報である。バッファ閾値は、後述のライトバックを実行するか否かを判断する基準として使用する情報である。
【００７２】
図４は、本実施例に係るバッファセット管理テーブル４００の構成例を示す図である。
【００７３】
バッファセット管理テーブル４００は、バッファセットＩＤごとに、使用目的、対象世代を備え、更に各ＩＤ毎に、バッファセットの対象となる制御モジュール番号、バッファＢｕｓｙ状態及び格納数を記憶している。
【００７４】
バッファセット管理テーブル４００は、バッファセットＩＤが示すバッファセット毎にあらかじめ設定される使用目的である。例えば、バッファセットを、ステージングに使用する場合には「ステージング」が設定され、ライトバックに使用する場合には「ライトバック」が設定される。また、Ｗｒｉｔｅデータのコピーデータを単に記憶する場合には「記憶」が設定され、記憶されたコピーデータをコピー先装置１２０に転送する場合には「転送」が設定される。
対象世代は、使用目的に設定された処理を行なう対象の世代である。格納数は、バッファセットに記憶されているデータの数である。図５のように１世代最大サイズ８ＭＢｙｔｅで格納サイズが１つあたり８ＫＢｙｔｅであった場合、最大１０２４まで格納が可能となる。対象世代および格納数は、例えば、Ｗｒｉｔｅデータをバッファセットに記憶する毎に、コピー元装置１１０によって更新される。
【００７５】
また、順序性補償リモートコピー管理テーブル４１０は、順序性を補償したリモートコピーを行うことができるか判断する際に使用するテーブルである。この順序性補償リモートコピー管理テーブル４１０は、図５に示されるように、バッファ切り替えに要する時間（秒）、１世代分のバッファセットの最大サイズ（Ｍｂｙｔｅ）、Ｈａｌｔ待ち状態となっているか否かの判断フラグ情報（Ｈａｌｔ待ち状態であれば、Ｙｅｓ、そうでなければ、Ｎｏ）、及び、格納サイズ（ＫＢｙｔｅ）を記憶する。
【００７６】
また、日付別加点テーブル４３０、曜日別加点テーブル４４０は、それぞれ、日付別、曜日別に加点情報を記憶しておくテーブルであり、その例を図６、図７に示す。なお、図６，８では、時刻情報は特に明記していないが、これらテーブルは、１時間単位で用意されており、該当する曜日若しくは日付の該当時刻のテーブルに記憶が行われるものとする。
【００７７】
また、図８は、全退避バッファ管理テーブル５００を示す図である。
【００７８】
この全退避バッファ管理テーブル５００は、退避バッファ１１８にある論理ユニットＬＵの数の数、全制御モジュール数、退避バッファ１１８内の、全バッファ数、最大バッファセット数が記憶される。加えて、全退避バッファ管理テーブル５００は、退避バッファ単位サイズ（ＭＢｙｔｅ）、Ｗｒｉｔｅ  Ｂａｃｋ退避バッファセット番号、Ｓｔａｇｉｎｇバッファセット番号が記憶されている。
【００７９】
ここで、論理ユニットＬＵについて補足する。図９は、本実施の形態における退避バッファの構成例を示す図である。
【００８０】
図９に示す退避バッファ１１８として用いられるＲＡＩＤグループは、ＲＡＩＤ６００〜６０７の８グループあり、各々論理ユニットＬＵ＃０〜ＬＵ＃７を有する。
【００８１】
論理ユニットＬＵ＃０~ＬＵ＃７の情報は、各々、退避バッファ管理テーブル記憶部２０５内の、ＬＵ管理テーブル５１０として記憶されている、図１０は、このＬＵ管理テーブル５１０を示したものである。なお、図１０ではＬＵ番号が０，１（ＬＵ＃０，ＬＵ#１にそれぞれ対応）の論理ユニットのＬＵ管理テーブル５１０しか示していないが、その他の論理ユニット＃２〜＃７のＬＵ管理テーブル５１０も、退避バッファ管理テール５１０に記憶されているものとする。
【００８２】
この管理情報は、退避バッファ管理テーブル記憶部２０５内に、退避バッファ管理テーブル５２０として記憶されている。図１１は、この退避バッファ管理テーブル５２０の例を示したものである。この退避バッファセット管理テーブル５２０に示されるように、退避バッファセット毎に、対応する制御モジュールの番号、対応する論理ＵＮＩＴの番号とその退避バッファオフセット及ぶ退避バッファ数が記憶される。図８で示した様に、全体比バッファセット数は、３９５００８なので、この退避バッファセット５２０は、その数と同じだけ退避バッファ管理テーブル記憶部２０５に記憶されていることになる。
【００８３】
例えば、図１１に示される退避バッファセット番号１の管理テーブル５２０を参照すると、制御モジュール番号＃００、＃０１、＃０２に対応するＬＵ番号は、それぞれ、１，３，４である。説明の都合で図示できなかったが、制御モジュール番号＃０３のＬＵ番号は７であったとする。この場合、各々の制御モジュールは、この退避バッファセット番号１のバッファセットに対しては、図１１に示すように上記対応関係に応じた割り当てがなされることになる。また、この対応付けは、各退避バッファセット５２０毎に設定することができる。例えば、図１１に示される退避バッファセット番号０の管理テーブル５２０を参照すると、各制御モジュール＃００，＃０１，＃０２は、それぞれ、１，３，４であり、先に説明した退避バッファセット番号０の管理テーブル５２０とは異なる対応関係となっている。また、バッファセットは、制御モジュールの数分のバッファをセットとするものであるので、全退避バッファ管理テーブル５００の最大バッファセット数は、全退避バッファ数（１５８００３２）を全制御モジュール数（４）で割った数（３９５００８）が記憶されている。
【００８４】
また、上記したように論理ユニット毎に、空き退避バッファ管理テーブル５３０が、退避バッファ管理テーブル記憶部２０５内に記憶されている。この空き退避バッファ管理テーブル５３０は、図１２に示すように、各論理ユニットの該当退避バッファオフセットが使用中か否かを判断するための情報を、ビットマップで記憶している。本実施の形態では、「１」が使用中、「０」が空きとしている。
【００８５】
コピー元装置１１０は、転送中またはコピー先装置１２０における展開処理待ちのため使用中となっているバッファセットの数がバッファ閾値を超えると、その超えた分のバッファセットに記憶されるデータを退避バッファ１１８に退避する。
【００８６】
また、コピー元装置１１０は、転送中またはコピー先装置１２０における展開処理待ちのために使用中となっているバッファセットが解放されると、退避バッファ１１８に退避されていたデータを、その解放されたバッファセットに記憶する。
【００８７】
以下、本実施例では、バッファセットに記憶されているデータを退避バッファ１１８に退避することを「ライトバック」という。そして、退避バッファ１１８に退避されているデータをバッファセットに記憶することを「ステージング」という。
【００８８】
また、ステージング、転送またはコピー先装置１２０における展開処理待ちのため使用中となっているバッファセットの数を「使用中のバッファセット数」という。なお、この転送中のバッファセットには、ステージング中の状態にあるバッファセットも含まれるものとする。
【００８９】
なお、「使用中のバッファセット数」の代りに、例えば、「バッファセットの使用率」を使用してもよい。この場合、バッファセットの使用率は、「使用中のバッファセット数」／「全バッファセットの数」により求められる。
【００９０】
コピー元装置１１０は、Ｗｒｉｔｅ  Ｉ／Ｏ処理にともなう処理の負荷に応じてバッファ閾値を増減して最適化を行なう。Ｗｒｉｔｅ  Ｉ／Ｏ処理にともなう処理の負荷は、例えば、ホスト１５０から受け付けて未処理のまま待ち状態となっているＷｒｉｔｅ  Ｉ／Ｏの数などで判断することができる。
【００９１】
なお、Ｗｒｉｔｅ  Ｉ／Ｏ処理にともなう処理の負荷の代わりに、例えば、ライトバック／ステージング性能、Ｗｒｉｔｅ  Ｉ／Ｏ命令等によるデータ更新量、バッファセットの使用状況、コピー元装置１１０−コピー先装置１２０間の回線速度などのうち少なくとも１つを含む情報を使用してバッファ閾値を最適化してもよい。
【００９２】
図１３および図１４は、本実施例に係るバッファ退避処理を説明する図である。
【００９３】
なお、図１３および図１４は、理解を容易にするために、コピー元装置１１０の構成を簡略化して記載してある。例えば、制御モジュールは、＃００と＃０１のみを記載しているが、コピー元装置１１０を図１３および図１４に示す構成に限定する趣旨ではない。また、制御モジュール毎にディスク装置１１７を記載しているが、説明のし易さのためであって、コピー元装置１１０を図１３および図１４に示す構成に限定する趣旨ではない。
【００９４】
図１３は、バッファセット１−４が、転送中またはコピー先装置１２０における展開処理待ちのため使用中となっている状態で、Ｗｒｉｔｅ  Ｉ／Ｏ命令を受付けた場合のバッファ退避処理を説明する図である。以下、バッファセット１−４に記憶されているバッファセットデータがそれぞれ世代１、世代２、世代３および世代４であるものとする。また、コピー元装置１１０に備わる全制御モジュールを総じて「制御モジュール」という。
【００９５】
（ａ）Ｗｒｉｔｅ  Ｉ／Ｏ命令を受付けると、制御モジュールは、自身のディスク装置１１７にＷｒｉｔｅデータを記憶するとともに、（ｂ）Ｗｒｉｔｅデータのコピーデータをバッファセット５に記憶する。このバッファセット５に記憶されたバッファセットデータは世代５となる。
【００９６】
ここで、例えば、使用中のバッファセット数がバッファ閾値を超えると、（ｃ）制御モジュールは、次にコピー先装置１２０に転送予定の例えばバッファセット５に記憶されている世代５のバッファセットデータを退避バッファ１１８に退避する。その後、制御モジュールは、バッファ閾値の最適化を行なう。
【００９７】
また、バッファセットデータを退避バッファ１１８に退避すると、制御モジュールは、新たなＷｒｉｔｅデータ等の記憶先をバッファセット５からバッファセット６に切り替える。
【００９８】
（ｄ）新たなＷｒｉｔｅ  Ｉ／Ｏ命令を受付けると、制御モジュールは、Ｗｒｉｔｅデータをディスク装置に記憶するとともに、Ｗｒｉｔｅデータのコピーデータをバッファセット６に記憶する。このバッファセット６に記憶されたバッファセットデータは世代６となる。
【００９９】
この時、バッファセット６の世代６よりも古い世代、例えば図９では世代５が退避バッファ１１８に退避されているので、（ｅ）制御モジュールは、バッファセット６のバッファセットデータを退避バッファ１１８に退避する。
【０１００】
使用中の状態にあったバッファセット１が解放されると、（ｆ）制御モジュールは、退避バッファ１１８に記憶されている世代５のバッファセットデータを読み出して、バッファセット１に記憶する。なお、本実施例で「解放」とは、バッファセットを未使用の状態に置くことをいう。
【０１０１】
バッファセット１のバッファデータの転送およびコピー先装置１２０における展開処理が完了すると、制御モジュールは、バッファ閾値の最適化を行なう。
【０１０２】
図１５および図１６は、本実施例に係るリモートコピーの概要を示すフローチャートである。以下、図１５および図１６に基づいて、本実施例に係るリモートコピーの概要を説明する。  コピー元装置１１０は、起動すると、バッファ初期構成処理を行なう。例えば、コピー元装置１１０は、あらかじめ設定された構成情報にしたがって、各制御モジュールに備わるメモリ２００に、図２に示した構成の領域を確保し、各領域について初期化を行なう。
【０１０３】
また、コピー元装置１１０は、制御モジュール毎に、記録専用バッファに対するボリュームグループを割り当てる。具体的な処理は、図１８および図１９で説明する。
【０１０４】
また、コピー元装置１１０は、バッファセットを生成し、生成したバッファセットについて初期作成処理を行う。例えば、コピー元装置１１０は、各制御モジュールの個別バッファを組み合わせてバッファセットを生成する。そして、コピー元装置１１０は、生成したバッファセットをバッファセット情報としてバッファセット情報記憶部２０２に記憶する。
【０１０５】
以上の処理をコピー先装置１２０も行なう。
【０１０６】
コピー元装置１１０は、さらに、バッファ管理テーブル３００やバッファセット管理テーブル４００、退避バッファ管理テーブル５００などについて初期化を行なう。そして、コピー元装置１１０は、バッファ閾値を初期化する。具体的な処理は、図２０で説明する。
【０１０７】
以上の処理により、コピー元装置１１０−コピー先装置１２０間でリモートコピーを行なう準備が完了する。そして、ホスト１５０からＷｒｉｔｅ  Ｉ／Ｏ命令を受け付ける準備が完了すると、リモートコピーが開始する（ステップＳ１２００ａ、Ｓ１２００ｂ）。
【０１０８】
ステップＳ１２０１ａにおいて、コピー元装置１１０は、コピー先装置１２０に対して、未使用の個別バッファの通知を要求するために、未使用バッファ通知要求コマンドを発行する。
【０１０９】
一方、コピー先装置１２０は、ステップＳ１２０１ｂに処理を移行し、コピー元装置１１０からの未使用バッファ通知要求コマンドを受けるまで、未使用バッファ通知要求コマンドを監視する（Ｓ１２０１ｂ  ＮＯ）。
【０１１０】
ステップＳ１２０１ｂにおいて、コピー先装置１２０は、コピー元装置１１０からの未使用バッファ通知要求コマンドを検出すると（Ｓ１２０１ｂ  ＹＥＳ）、処理をステップＳ１２０２ｂに移行する。
【０１１１】
ステップＳ１２０２ｂにおいて、コピー先装置１２０は、既に領域が解放された未使用となっている個別バッファを検索する。既に領域が解放されて未使用となっている個別バッファを検出すると、コピー先装置１２０は、検出した個別バッファのバッファＩＤを未使用バッファＩＤとしてコピー元装置１１０に通知する。
【０１１２】
一方、コピー元装置１１０は、コピー先装置１２０から未使用バッファＩＤの通知を受けると、通知された未使用バッファＩＤを、未使用バッファＩＤ記憶部２０６に記憶する。
【０１１３】
ステップＳ１２０２ａにおいて、コピー元装置１１０は、Ｗｒｉｔｅデータを格納する対象のバッファセットを取得する。このＷｒｉｔｅデータを格納する対象のバッファセットを「格納対象バッファセット」という。
【０１１４】
例えば、コピー元装置１１０は、バッファセット管理テーブル４００を参照し、未使用に設定されているバッファセットＩＤを取得する。そして、コピー元装置１１０は、その取得したバッファセットＩＤを、バッファ管理テーブル３００の対象バッファセットＩＤに設定する。
【０１１５】
コピー元装置１１０は、バッファ管理テーブル３００の対象バッファセットＩＤに設定したバッファセットＩＤが示すバッファセットを、「格納対象バッファセット」として以下の処理を行なう。
【０１１６】
なお、コピー元装置１１０は、ステップＳ１２０２ａでは、マッチング処理を行なわない。コピー元装置１１０は、マッチング処理を、後述するステップＳ１２１１ａ、すなわち、バッファセットデータの送信処理前に行なう。
【０１１７】
ステップＳ１２０３ａにおいて、コピー元装置１１０は、バッファ管理テーブル３００のライトバックポインタ情報に設定されている世代を１だけインクリメントした値に更新する。
【０１１８】
ステップＳ１２０４ａにおいて、コピー元装置１１０は、格納対象バッファセットの個別バッファへのＷｒｉｔｅデータの格納処理を行なう。
【０１１９】
例えば、コピー元装置１１０が、ホスト１５０からＷｒｉｔｅ  Ｉ／Ｏ命令を受付けたとする。すると、コピー元装置１１０は、そのＷｒｉｔｅ  Ｉ／Ｏ命令とともに受信したＷｒｉｔｅデータを、バッファ管理テーブル３００の現在使用している対象バッファセットＩＤが示す格納対象バッファセット、すなわち、各制御モジュールの個別バッファに分散して記憶する。なお、この個別ファッファへの格納処理１２０４ａの詳細については、後述する。
【０１２０】
ステップＳ１２０５ａにおいて、コピー元装置１１０は、格納対象バッファセットにデータを格納する格納領域が残っているか否かを判別する。格納領域が残っていないと判断した場合（ステップＳ１２０５ａ  ＮＯ）、コピー元装置１１０は、処理をステップＳ１２０７ａに移行する。
【０１２１】
また、ステップＳ１２０５ａにおいて、格納領域が残っていると判断した場合（ステップＳ１２０５ａ  ＹＥＳ）、コピー元装置１１０は、処理をステップＳ１２０６ａに移行する。この場合、コピー元装置１１０は、格納対象バッファセット取得から一定時間経過したか否かを判別する（ステップＳ１２０６ａ）。
【０１２２】
そして、一定時間経過していないと判断した場合（ステップＳ１２０６ａ  ＮＯ）、コピー元装置１１０は、処理をステップＳ１２０４ａに移行する。また、一定時間経過したと判断した場合（ステップＳ１２０６ａ  ＹＥＳ）、コピー元装置１１０は、処理をステップＳ１２０７ａに移行する。
【０１２３】
ステップＳ１２０７ａにおいて、コピー元装置１１０は、ステップＳ１２０２ａと同様の処理により、格納対象バッファセットを新たに取得する。そして、ステップＳ１２０８ａにおいて、コピー元装置１１０は、格納対象バッファセットを、ステップＳ１２０７ａで取得した新たな格納対象バッファセットに切り替える。
【０１２４】
なお、切り替え前の格納対象バッファセットを、ステップＳ１２１０ａの処理では「ライトバック対象バッファセット」といい、ステップＳ１２１２ａ以降の処理では「転送対象バッファセット」という。
【０１２５】
ステップＳ１２０９ａにおいて、コピー元装置１１０は、ステップＳ１２０３と同様の処理により、ライトバックポインタ情報を更新する。
【０１２６】
ステップＳ１２１０ａにおいて、コピー元装置１１０は、ライトバック処理を行なう。その後、コピー元装置１１０は、バッファ閾値の最適化を行なう。そして、コピー元装置１１０は、処理をステップＳ１２１１ａに移行する。
【０１２７】
ステップＳ１２１１ａにおいて、コピー元装置１１０は、マッチング処理を行なう。例えば、コピー元装置１１０は、未使用バッファＩＤ記憶部２０６から未使用バッファＩＤを取得する。そして、コピー元装置１１０は、取得した未使用バッファＩＤを転送対象バッファセットのコピー先ＩＤに割り当てることにより、転送対象バッファセットのコピー元ＩＤとコピー先ＩＤとの関連付けを行なう。
【０１２８】
ステップＳ１２１２ａにおいて、コピー元装置１１０は、転送対象バッファセットに記憶されたバッファセットデータをコピー先装置１２０に送信する。このバッファセットデータには、各制御モジュールの、バッファ２０１ａに記憶されているバッファデータと、ＢＩＴ記憶部２０１ｂに記憶されているＢＩＴと、バッファセット情報記憶部２０２に記憶されているバッファセット情報と、が含まれる。
【０１２９】
一方、コピー先装置１２０は、コピー元装置１１０からバッファセットデータを受信すると、処理をステップＳ１２０３ｂに移行する。
【０１３０】
ステップＳ１２０３ｂにおいて、コピー先装置１２０は、バッファセットデータの受信処理を行なう。例えば、コピー先装置１２０は、受信したバッファセットデータのうち、バッファデータをバッファ２０１ａに、ＢＩＴをＢＩＴ記憶部２０１ｂに、バッファセット情報をバッファセット情報記憶部２０２に、それぞれ記憶する。
【０１３１】
ステップＳ１２０４ｂにおいて、コピー先装置１２０は、全てのバッファセットデータを受信したか否かを判別する。そして、まだ、全てのバッファセットデータを受信していないと判断すると（Ｓ１２０４ｂ  ＮＯ）、コピー先装置１２０は、処理をステップＳ１２０３ｂに移行し、ステップＳ１２０３ｂ〜Ｓ１２０４ｂの処理を繰返す。
【０１３２】
ステップＳ１２０４ｂにおいて、全てのバッファセットデータを受信したと判断すると（Ｓ１２０４ｂ  ＹＥＳ）、コピー先装置１２０は、処理をステップＳ１２０５ｂに移行する。
【０１３３】
ステップＳ１２０５ｂにおいて、コピー先装置１２０は、ステップＳ１２０３ｂで取得したバッファセットデータが、自身に備わる記憶装置のディスク装置１２７に展開可能か否かを判断する。展開可能と判断すると（Ｓ１２０５ｂ  ＹＥＳ）、コピー先装置１２０は、処理をステップＳ１２０６ｂに移行する。
【０１３４】
ステップＳ１２０６ｂにおいて、コピー先装置１２０は、ステップＳ１２０３ｂで取得したバッファセットデータを、自身に備わるディスク装置１２７に展開する。この展開が終了すると、コピー先装置１２０は、処理をステップＳ１２０７ｂに移行し、バッファセットデータの展開が完了した旨をコピー元装置１１０に通知する。以下、この通知を「バッファセットデータ展開完了通知」という。
【０１３５】
バッファセットデータのディスク装置１２７への展開が終了すると、ステップＳ１２０８ｂにおいて、コピー先装置１２０は、バッファセットの解放処理を行なう。例えば、コピー先装置１２０は、バッファセットデータのディスク装置１２７への展開が完了したバッファセットを未使用に設定する。
【０１３６】
ステップＳ１２０９ｂにおいて、コピー先装置１２０は、解放した領域に新たにバッファセット情報記憶部２０２および記録専用バッファ２０１の領域を確保して、例えば、図２に示した構成を構築する。
【０１３７】
以上の処理が終了すると、コピー先装置１２０は、処理をステップＳ１２１０ｂに移行し、ステップＳ１２０８ｂ〜Ｓ１２０９ｂの処理によって新たに使用可能となったバッファの未使用バッファＩＤをコピー元装置１１０に通知する（ステップＳ１２１０ｂ）。コピー元装置１１０は、未使用バッファＩＤを通知されると、通知された未使用バッファＩＤを未使用バッファＩＤ記憶部２０６に記憶する。
【０１３８】
一方、ステップＳ１２１３ａにおいて、コピー元装置１１０は、コピー先装置１２０からバッファセットデータ展開完了通知を受信したか否かを判断する。そして、バッファセットデータ展開完了通知を受信しない場合（Ｓ１２１３ａ  ＮＯ）、ステップＳ１２１３ａの処理を繰り返す。また、コピー先装置１２０からバッファセットデータ完了通知を受信すると（Ｓ１２１３ａ  ＹＥＳ）、コピー元装置１１０は、処理をステップＳ１２１４ａに移行する。
【０１３９】
ステップＳ１２１４ａにおいて、コピー元装置１１０は、ステップＳ１２１２ａによってバッファセットデータ送信処理が行なわれた転送対象バッファセットについて、ステップＳ１２０８ｂと同様に、バッファセットの解放処理を行なう。すなわち、コピー元装置１１０は、バッファセット管理テーブル４００を参照し、データの転送が完了した転送対象バッファセットを未使用に設定する。
【０１４０】
ステップＳ１２１５ａにおいて、コピー元装置１１０は、バッファ管理テーブル３００を参照し、ステージポインタ情報に設定されている世代を１だけインクリメントした値に更新する。そして、ステップＳ１２１６ａにおいて、コピー元装置１１０は、バッファ閾値を最適化する処理を実行する。そして、ステップＳ１２１７ａにおいて、コピー元装置１１０は、未使用となったバッファセットの領域について初期化を行なうなどしてバッファの再構築処理を行なう。
【０１４１】
ステップＳ１２１８ａにおいて、コピー元装置１１０は、ステージングが必要か否かを判別する。例えば、コピー元装置１１０は、退避バッファ１１８に退避した世代があるか否かによりステージングが必要か否かを判別する。
【０１４２】
コピー元装置１１０は、以下に示す（ａ）〜（ｄ）の処理により、退避バッファ１１８に退避した世代の有無を知ることができる。
【０１４３】
（ａ）コピー元装置１１０は、バッファ管理テーブル３００を参照し、ライトバックポインタ情報とステージポインタ情報を取得する。
【０１４４】
（ｂ）コピー元装置１１０は、バッファセット管理テーブル４００を参照し、ステージポインタ情報に１を加えた世代から昇順に世代をたどり、バッファセット管理テーブル４００に欠落している世代を検索する。
【０１４５】
例えば、図３に示したバッファ管理テーブル３００には、ステージポインタ情報として世代２が設定されている。そこで、コピー元装置１１０は、図４に示したバッファセット管理テーブル４００を参照し、世代２に１を加えた世代３から世代４、５、・・・と昇順に世代をたどる。すると、コピー元装置１１０は、バッファセット管理テーブル４００に欠落している世代７を検出する。
【０１４６】
（ｃ）コピー元装置１１０は、バッファセット管理テーブル４００を参照し、ライトバックポインタ情報の世代から降順に世代をたどり、バッファセット管理テーブル４００に欠落している世代を検索する。
【０１４７】
例えば、図３に示したバッファ管理テーブル３００には、ライトバックポインタ情報として世代１５が設定されている。そこで、コピー元装置１１０は、図４に示したバッファセット管理テーブル４００を参照し、世代１５から世代１４、１３、・・・と降順に世代をたどる。すると、コピー元装置１１０は、バッファセット管理テーブル４００に欠落している世代１２を検出する。
【０１４８】
（ｄ）以上の処理によって検出した世代７から世代１２が、退避バッファ１１８に退避されている世代であることがわかる。
【０１４９】
ステップＳ１２１８ａにおいて、退避バッファ１１８に退避した世代が存在すると判断した場合（ステップＳ１２１８ａ  ＹＥＳ）、コピー元装置１１０は、処理をステップＳ１２１９ａに移行する。また、退避バッファ１１８に退避した世代が存在しないと判断した場合（ステップＳ１２１８ａ  ＮＯ）、コピー元装置１１０は、処理をステップＳ１２２１ａに移行する。
【０１５０】
ステップＳ１２１９ａにおいて、コピー元装置１１０は、ステージングに使用するバッファセット、すなわちステージング用バッファセットを取得する。
【０１５１】
例えば、コピー元装置１１０は、バッファセット管理テーブル４００を参照し、未使用に設定されているバッファセットＩＤを「ステージング対象バッファセットＩＤ」として取得する。
【０１５２】
また、コピー元装置１１０は、バッファセット管理テーブル４００を参照し、ステージング対象バッファセットＩＤと一致するバッファセットＩＤの対象世代に、後述するステージング対象世代を設定する。
【０１５３】
また、コピー元装置１１０は、バッファセット管理テーブル４００を参照し、ステージング対象バッファセットＩＤと一致するバッファセットＩＤの使用目的を「ステージング」に設定する。
【０１５４】
ステップＳ１２２０ａにおいて、コピー元装置１１０は、ステージングを実行する。そして、ステージングが完了すると、コピー元装置１１０は、処理をステップＳ１２１１ａに移行する。
【０１５５】
以上の処理が終了すると、コピー元装置１１０は、リモートコピーを終了、または、ステップＳ１２０４ａに処理を移行してリモートコピーを継続する。また、ホスト１５０から新たにＷｒｉｔｅ  Ｉ／Ｏ命令を受付けると、コピー元装置１１０は、Ｓ１２０４ａ等に処理を移行して、リモートコピーを継続する。
【０１５６】
また、コピー先装置１２０は、上述の処理が終了すると、リモートコピーを終了する、または、ステップＳ１２０３ｂに処理を移行してリモートコピーを継続する。
【０１５７】
本実施例に係るリモートコピーにおいて、以下の処理についてより具体的に説明する。
【０１５８】
（１）退避バッファ１１８の領域を作成する処理。
【０１５９】
（２）退避バッファセット管理テーブル記憶部２０５の各テーブルの生成。
【０１６０】
（３）バッファ閾値を初期化する処理。
【０１６１】
（４）バッファセットを切り替える処理。
【０１６２】
（５）ライトバックポインタ情報／ステージポインタ情報の更新処理。
【０１６３】
（６）ライトバック処理。
【０１６４】
（７）再配置スケジューリング処理。
【０１６５】
（８）ステージング処理。
【０１６６】
（９）バッファ閾値を最適化する処理。
【０１６７】
以下、上記（１）〜（９）について順に説明する。
【０１６８】
（１）退避バッファの領域を作成する処理
図１７は、本実施例に係る退避バッファ１１８の領域を生成する処理を示すフローチャートである。図１７に示す処理は、例えば、コピー元装置１１０の保守作業時やコピー元装置の起動時に実行できる。
【０１６９】
ステップＳ１４０１において、コピー元装置１１０は、ユーザーからの入力に応じて退避バッファ１１８を設定すべき領域を記録専用バッファ２０１のバッファ２０１ａから選択する。そして、コピー元装置１１０は、処理をステップＳ１４０２に移行し、ユーザーからの入力に応じてＲＡＩＤを構成するためのディスク装置を選択する。
【０１７０】
ステップＳ１４０３において、コピー元装置１１０は、ステップＳ１４０２で選択したディスク装置はＲＡＩＤを構成する条件を満たすか否かをチェックする。条件を満たさない場合（Ｓ１４０３  ＮＯ）、コピー元装置１１０は、例えば、他のディスク装置を指定すべき旨を表示装置等に表示して、処理をステップＳ１４０２に移行する。
【０１７１】
ステップＳ１４０３において、条件を満たす場合（Ｓ１４０３  ＹＥＳ）、コピー元装置１１０は、処理をステップＳ１４０４に移行する。
【０１７２】
ステップＳ１４０４において、コピー元装置１１０は、ステップＳ１４０２で選択されたディスク装置で構成されるＲＡＩＤグループを生成し、コピー元装置１１０の装置構成などを保持する構成情報にその情報を反映する。
【０１７３】
ステップＳ１４０５において、コピー元装置１１０は、ステップＳ１４０４で作成したＲＡＩＤグループ内に複数のボリュームを作成する。コピー元装置１１０は、処理をステップＳ１４０６に移行し、ステップＳ１４０５で作成した論理ユニットの構成を構成情報に反映する。
【０１７４】
ステップＳ１４０７において、コピー元装置１１０は、図１８で示す処理によって、退避バッファセット管理テーブル２記憶部２０５の各テーブルの生成を行う。
【０１７５】
そして、ステップＳ１４０８において、コピー元装置１１０は、バッファ閾値を初期化する。すると、コピー元装置１１０は、ステップＳ１４０９に移行して退避バッファ１１８の領域を生成する処理を終了する。
【０１７６】
（２）退避バッファセット管理テーブル記憶部２０５の各テーブルの生成
上記してきた図１７の処理のうち、Ｓ１４０７の処理の詳細について図１８のフローチャートを用いて説明する。
【０１７７】
まず、コピー元装置１１０は、ユーザーから設定された退避バッファセットの容量（ここでは１ＭＢｙｔｅ）とＬＵの数から、ＬＵ管理テーブル５１０を生成する。上記したように、論理ユニット毎にこのテーブルを生成するので、論理ユニット数分（本実施の形態では８）のＬＵ管理テーブル５１０が生成される。
【０１７８】
具体的には、論理ユニットの容量を退避バッファサイズの容量で割った数を最大退避バッファ数として記憶する。（ステップＳ１５０１）
また、起動時や管理時には、退避バッファセットは使用されていないので、使用退避バッファ数は０、空き退避バッファ数は、最大退避バッファ数と同じになる。その他、退避バッファサイズ、ＬＵ番号も設定される。また、退避バッファ性能は、論理ユニットにて退避処理を行う際の転送速度に応じて値が決められているものとする。
【０１７９】
次に、コピー元装置１１０は、全退避バッファ管理テーブル５００を生成する（ステップＳ１５０２）。この全退避バッファ管理テーブル５００には、これまでの処理もしくは設定された各種値を用いて生成される。まず、論理ユニットＬＵの数は、上記してきたように＃０〜＃７の８であり、制御モジュールの数は４である。また、コピー元装置１１０は、各ＬＵ管理テーブルに記憶されている最大退避バッファセットの数を合計し、全退避バッファ数を生成する。加えて、コピー元装置１１０は、全退避バッファ数を全制御モジュール数で割った数を最大退避バッファ数として算出する。これは、上記したようにバッファセットは、全ての制御モジュール＃００〜＃０３で使用されるバッファのセットであるので、バッファセットの数は「バッファ数÷制御モジュール数」となるためである。
【０１８０】
更に、コピー元装置１１０は、退避バッファ単位サイズ（先に説明したように１ＭＢ）を記憶するとともに、Ｗｒｉｔｅ  Bａｃｋ、Ｓｔａｇｉｎｇのバッファセット番号を初期設定する（本実施の形態では各々０を設定したものとする）。
【０１８１】
更に、コピー元装置１１０は、上記にて得られた情報を元に退避バッファセット管理テーブル５２０を生成する（ステップＳ１５０３）。これは、退避バッファセットの数だけ生成される。
【０１８２】
すなわち、全退避バッファテーブル生成時に算出された全退避バッファセット数が、１９７５０４であるので、本実施の形態では、１９７５０４の場合退避バッファセット管理テーブル５２０が生成されることになる。コピー元装置１１０は、この退避バッファセット管理テーブルに、制御モジュール毎に、使用する論理ユニットの退避バッファオフセットを示す情報、即ち論理ユニットの番号（ＬＵ番号）と、その退避バッファオフセットと退避バッファの数とを記憶させる。当然、コピー元記憶装置１１０は、このアドレスが、他のバッファと記憶領域が重複しないように排他制御を行いながら設定していく。
【０１８３】
次に、コピー元装置１１０は、空き退避バッファ管理テーブル５３０を、論理ユニット単位で生成する（ステップＳ１５０３）。この空き退避バッファ管理テーブル５３０は、図１２に示すように、各退避バッファセットが使用中か否かを判断するための情報を、ビットマップで記憶している。上記したように、本実施の形態では、コピー元装置１１０は、「１」が使用中、「０」が空きとして記憶する。この初期設定の段階においては全て使用されていないので、コピー元装置１１０は、全てのビットが「０」となった空き退避バッファ管理テーブルを生成する。
【０１８４】
（３）バッファ閾値を初期化する処理
図１９は、本実施例に係るバッファ閾値を初期化する処理のフローチャートである。この図１９に示す処理は、例えば、コピー元装置１１０の起動時の他に、保守作業時でも実行できる。
【０１８５】
ステップＳ１３０１において、コピー元装置１１０は、メモリ２００の所定のアドレスから、制御モジュール数（ＣＴＲＬ＿ＣＮＴ）、バッファサイズ（ＢＵＦＦ＿ＳＩＺＥ）［ＭＢｙｔｅ］、バッファセットサイズ（１ＧＥＮＥ＿ＳＩＺＥ）［ＭＢｙｔｅ］、回線帯域（ＢＡＮＤＷＩＤＴＨ）［ＭＢｙｔｅ／Ｓ］、転送効率（ＴＲＡＮＳ＿ＲＡＴＩＯ）、制御効率（ＳＹＳＴＥＭ＿ＲＡＴＩＯ）、データ圧縮率（ＣＯＭＰＲＥＳＳ）［％］および補正送信バッファ数（ＢＵＦＦ＿ＡＬＰＨＡ）を読み出す。
【０１８６】
制御モジュール数（ＣＴＲＬ＿ＣＮＴ）は、コピー元装置１１０に備わる制御モジュールの数である。バッファサイズ（ＢＵＦＦ＿ＳＩＺＥ）は、各制御モジュールに備わるバッファ２０１ａを合わせたトータルサイズである。バッファセットサイズ（１ＧＥＮＥ＿ＳＩＺＥ）は、１世代分のバッファセットのサイズである。
【０１８７】
回線帯域（ＢＡＮＤＷＩＤＴＨ）は、コピー元装置１１０−コピー先装置１２０間を接続するネットワークまたは専用回線１３０で使用可能な帯域幅である。
【０１８８】
転送効率（ＴＲＡＮＳ＿ＲＡＴＩＯ）は、コピー元装置１１０−コピー先装置１２０間で行なわれる転送処理についての転送効率である。例えば、理論的な転送量が１００Ｍｂｐｓ、実測値の平均転送量が７５Ｍｂｐｓの場合、転送効率は０.７５となる。
【０１８９】
制御効率（ＳＹＳＴＥＭ＿ＲＡＴＩＯ）は、原則として１とする。そして、例えば、ホスト１５０−コピー元装置１１０間のデータ転送効率、制御モジュール間の転送効率、制御モジュール−退避バッファ１１８間のデータ転送効率等に応じてバッファ閾値を調整するために使用する。
【０１９０】
データ圧縮率（ＣＯＭＰＲＥＳＳ）は、コピー先装置１２０に送る際に行なう送信データの圧縮率である。また、補正値（ＢＵＦＦ＿ＡＬＰＨＡ）は、必要に応じてバッファ閾値を調整するための値である。
【０１９１】
以上のデータを読み出すと、コピー元装置１１０は、次式によりバッファ閾値（ＴＨＲＥＳＨＯＬＤ）を算出する。そして、コピー元装置１１０は、処理をステップＳ１３０２に移行する。ＴＨＲＥＳＨＯＬＤ  ＝  （（ＢＡＮＤＷＩＤＴＨ×ＴＲＡＮＳ＿ＲＡＴＩＯ×ＳＹＳＴＥＭ＿ＲＡＴＩＯ）÷（１ＧＥＮＥ＿ＳＩＺＥ×（ＣＯＭＰＲＥＳＳ÷１００）×ＣＴＲＬ＿ＣＮＴ）＋ＢＵＦＦ＿ＡＬＰＨＡ）×２      ・・・・・（１）
ステップＳ１３０２において、コピー元装置１１０は、バッファ閾値が１未満か否かを判別する。そして、バッファ閾値が１未満の場合（ステップＳ１３０２  ＹＥＳ）、コピー元装置１１０は、処理をステップＳ１３０３に移行する。この場合、コピー元装置１１０は、バッファ閾値に１を設定し（ステップＳ１３０３）、処理をステップＳ１３０４に移行する。
【０１９２】
また、ステップＳ１３０２において、バッファ閾値が１未満でない場合（ステップＳ１３０２  ＮＯ）、コピー元装置１１０は、処理をステップＳ１３０４に移行する。
【０１９３】
ステップＳ１３０４において、コピー元装置１１０は、バッファ閾値が最大バッファセット数を超えているか否かを判別する。そして、バッファ閾値が最大バッファセット数を超えている場合（ステップＳ１３０４  ＹＥＳ）、コピー元装置１１０は、処理をステップＳ１３０５に移行する。この場合、コピー元装置１１０は、バッファ閾値に最大バッファセット数を設定し（ステップＳ１３０５）、処理をステップＳ１３０６に移行する。
【０１９４】
また、ステップＳ１３０４において、バッファ閾値が最大バッファセット数を超えていない場合（ステップＳ１３０４  ＮＯ）、処理をステップＳ１３０６に移行する。
【０１９５】
以上の処理が終了すると、コピー元装置１１０は、バッファ閾値を初期化する処理を終了する。
【０１９６】
（４）バッファセットを切替える処理
図２０は、本実施例に係るバッファセットの切替え処理を示すフローチャートである。      
【０１９７】
図２０の処理は、図１５に示したステップＳ１２０８ａの具体的な処理を示している。
【０１９８】
例えば、Ｗｒｉｔｅ  Ｉ／Ｏ延長で行なわれる格納処理でバッファセット内の個別バッファに空きがなくなる、または、バッファセットの切替え処理が行なわれてから一定時間経過すると、コピー元装置１１０は、バッファセットの切替え処理を開始する（ステップＳ１６００）。
【０１９９】
ステップＳ１６０１において、コピー元装置１１０は、空きバッファセット、すなわち、バッファセット管理テーブル４００に未使用と設定されているバッファセットがあるか否かを判別する。
【０２００】
ステップＳ１６０１において、空きバッファセットがない場合（ステップＳ１６０１  ＮＯ）、コピー元装置１１０は、処理をステップＳ１６０２に移行し、バッファＨａｌｔ処理待ちの状態となる（ステップＳ１６０２）。その後、バッファＨａｌｔ処理が実行されてバッファ枯渇状態が解消すると、コピー元装置１１０は、Ｗｒｉｔｅ  Ｉ／Ｏ命令の処理を再開する。
【０２０１】
この場合、コピー元装置１１０は、バッファセットに記憶されているＷｒｉｔｅデータ等の情報を専用のビットマップに書き戻し、バッファＨａｌｔ処理の実行後にそのビットマップにしたがって順序性を補償しないリモートコピー転送を行なう。
【０２０２】
ステップＳ１６０１において、空きバッファセットがある場合（ステップＳ１６０１  ＹＥＳ）、コピー元装置１１０は、処理をステップＳ１６０３に移行する。
【０２０３】
ステップＳ１６０３において、コピー元装置１１０は、空きバッファセットを１つ選択して、その空きバッファセットのステータスを使用中に変更する。また、必要に応じてバッファセット管理テーブル４００の使用目的に、ステージング、ライトバックまたは記憶を設定する（ステップＳ１６０３）。また、コピー元装置１１０は、選択した空きバッファセットに切り替える。（ステップＳ１６０４）
ステップＳ１６０３の処理が完了すると、コピー元装置１１０は、個別バッファＢｕｓｙ状態決定処理を行う（ステップＳ１６０５）。
【０２０４】
この個別バッファＢｕｓｙ状態決定処理について、図２１を用いて説明する。
【０２０５】
この処理は、空きバッファセット切り替えにあたり、その状態を逐次、バッファセット管理テーブル４００に反映する処理を含む。
【０２０６】
個別バッファＢｕｓｙ状態決定処理において、まず、コピー元装置１１０は、蓄積していた個別バッファセットがコピー対象データを格納したことが原因で切り替えがなされたものかを確認する。これは、図１５のＳ１２０５ａにて「ＮＯ」の判断を行ったかをチェックする。即ち、Ｓ１６５１の処理は、格納領域が残っている場合でも、Ｓ１２０６ａの処理にて、個別バッファセットの切り替えが起こる場合があるため、これを切り分けるために、行う処理である。
【０２０７】
ステップＳ１６５１にてＮＯの場合は、個別バッファセットへのアクセス自体は少ない状態でもあるので、対象となる個別バッファセットの個別バッファセット管理テーブル４４０の状態を「Ｎｏｒｍａｌ」に更新し、処理を完了する。（Ｓ１６５２）
逆に、ステップＳ１６５１にて、ＹＥＳとなった場合、コピー元装置１１０は、日付別加点テーブル４３０、曜日別加点テーブル４４０のうち、該当する時刻のテーブルに対し、日付もしくは曜日の値を、それぞれ加算する。（ステップＳ１６５３）
そして、コピー元装置１１０は、対象となった個別バッファセットに対応するバッファセット管理テーブル４００の状態を「Ｂｕｓｙ」に更新し、処理を終了する。（ステップＳ１６５４）
図２０のフローチャートに戻り、ステップＳ１６０５の処理コピー元装置１１０は、Ｗｒｉｔｅ  Ｉ／Ｏ命令を管理する待ち行列等を参照し、待ち状態のＷｒｉｔｅ  Ｉ／Ｏについて処理を再開する。（Ｓ１６０６）
以上の処理が終了すると、コピー元装置１１０は、バッファセットを切り替える処理を終了する。
【０２０８】
（５）ライトバックポインタ情報／ステージポインタ情報の更新処理
本実施例に係るバッファ退避処理では、ライトバックポインタ情報とステージポインタ情報の２つの情報により、退避バッファ１１８に記憶するデータの書き込み位置（世代）と退避バッファ１１８から読み出すデータの読み出し位置（世代）とを管理する。
【０２０９】
例えば、制御モジュールにおいてｘ回目のバッファセット切り替えが行なわれた場合を考える。この場合、ステージポインタ情報は、最後にステージングが行なわれた世代を情報として保持する。ライトバックポインタ情報は、退避バッファ１７０１の世代ｘを情報として保持する。
【０２１０】
また、制御モジュールにおいてｘ＋１回目のバッファセット切り替え時に世代ｘのバッファセットデータがすぐにコピー先装置１２０に転送された場合を考える。この場合、世代ｘに記憶されているバッファセットデータがステージングされて転送処理が完了すると、ステージポインタ情報は、世代ｘから世代ｘ＋１に更新される。ライトバックポインタ情報は、退避バッファ１７０１の世代ｘ＋１を情報として保持する。
【０２１１】
また、制御モジュールにおいてｘ＋２回目のバッファセット切り替え時に世代ｘ＋１が退避バッファ１７０１にライトバックされた場合を考える。この場合、ステージポインタ情報が保持する退避バッファ１７０１の世代が世代ｘであれば、次のステージング対象は世代ｘ＋１となる。ライトバックポインタ情報は、ボリュームグループの世代ｘ＋２を保持する。
【０２１２】
以上のように、ライトバックポインタ情報は、バッファセットが生成される毎にそのバッファセットの次の世代を情報として保持する。また、ステージポインタ情報は、切り替えられた旧世代のバッファセットの処理が完了する毎に、例えば、コピー元装置１１０でバッファセットデータの転送が完了しかつコピー先装置１２０でデータの展開が完了する毎に、ステージポインタ情報が更新される。
【０２１３】
なお、退避バッファ１７０１として割当てたボリュームグループが複数ある場合、ボリュームグループは、ボリュームグループに割り当てられた番号の小さい順に使用される。そして、ボリュームグループを最後まで使用した場合、ボリュームグループは、最初にもどりサイクリックにボリュームグループを使用する。
【０２１４】
以下、図２２および図２３にライトバックポインタ情報およびステージポインタ情報の具体的な更新処理を説明する。
【０２１５】
図２２は、本実施例に係るライトバックポインタ情報の更新処理を示すフローチャートである。
【０２１６】
ステップＳ１８００ａにおいて、コピー元装置１１０に備わる制御モジュールを代表するマスタ制御モジュールは、バッファセットの切替え処理が行なわれると、処理をステップＳ１８０１ａに移行する。
【０２１７】
ステップＳ１８０１ａにおいて、マスタ制御モジュールは、現在保持しているライトバックポインタ情報を１つ進める。例えば、マスタ制御モジュールは、バッファ管理テーブル３００のライトバックポインタ情報に保持されている世代を１だけインクリメントする。
【０２１８】
ステップＳ１８０２ａにおいて、マスタ制御モジュールは、ステップＳ１８０１ａで求めたライトバックポインタ情報に、自身が保持するバッファ管理テーブル３００を更新する。さらに、マスタ制御モジュールは、コピー元装置１１０に備わる他の制御モジュールに対して、ステップＳ１８０２ａと同様の処理を依頼する。
【０２１９】
一方、ステップＳ１８０１ｂにおいて、各制御モジュールは、ステップＳ１８０１ａで求めたライトバックポインタ情報に、各自が保持するバッファ管理テーブル３００を更新する。そして、各制御モジュールは、バッファ管理テーブル３００の更新が完了すると、その旨をマスタ制御モジュールに通知する。
【０２２０】
ステップＳ１８０３ａにおいて、マスタ制御モジュールは、依頼した全ての制御モジュールから応答を受信したか否かをチェックし、応答を受信していない制御モジュールがある場合には（Ｓ１８０３ａ  ＮＯ）、ステップＳ１８０３ａの処理を繰り返す。
【０２２１】
ステップＳ１８０３ａにおいて、依頼した全ての制御モジュールから応答を受信したと判断すると（Ｓ１８０３ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ１８０４ａに移行し、ライトバックポインタ情報の更新処理を終了する。
【０２２２】
図２３は、本実施例に係るステージポインタ情報の更新処理を示すフローチャートである。
【０２２３】
ステップＳ１９００ａにおいて、コピー元装置１１０のマスタ制御モジュールは、バッファセットの解放処理を開始すると、処理をステップＳ１９０１ａに移行する。
【０２２４】
ステップＳ１９０１ａにおいて、マスタ制御モジュールは、解放対象のバッファセットがあるか否かを判別する。解放対象となるバッファセットがない場合（Ｓ１９０１ａ  ＮＯ）、マスタ制御モジュールは、ステップＳ１９０４ａに移行し、処理を終了する。
【０２２５】
なお、本実施例では、コピー先装置１２０への転送が完了し、かつ、コピー先装置１２０から転送データのディスク装置への展開が完了した旨の通知を受けたバッファセットを領域解放の対象と判断する。
【０２２６】
ステップＳ１９０１ａにおいて、解放対象となるバッファセットがある場合（Ｓ１９０１ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ１９０２ａに移行する。
【０２２７】
ステップＳ１９０２ａにおいて、マスタ制御モジュールは、解放対象となるバッファセットの個別バッファ、ＢＩＴおよびバッファセット情報を解放するとともに、ステージポインタ情報を更新する。例えば、マスタ制御モジュールは、バッファ管理テーブルのステージポインタ情報に保持されている世代を次の世代に更新する。
【０２２８】
また、マスタ制御モジュールは、コピー元装置１１０に備わる他の制御モジュールに対して、ステップＳ１９０２ａと同様の処理を依頼する。
【０２２９】
ステップＳ１９０１ｂにおいて、各制御モジュールは、マスタ制御モジュールから依頼を受けると、解放対象のバッファセットの個別バッファ、ＢＩＴおよびバッファセット情報を解放するとともに、ステージポインタ情報を更新する。処理が完了すると、各制御モジュールは、マスタ制御モジュールに対して完了通知を行なう。
【０２３０】
ステップＳ１９０３ａにおいて、マスタ制御モジュールは、依頼した制御モジュールからの応答を確認し、全ての制御モジュールから応答を受信したか否かを判別する。そして、応答を受信していない制御モジュールがある場合（Ｓ１９０３ａ  ＮＯ）、ステップＳ１９０３の処理を繰返す。
【０２３１】
また、ステップＳ１９０３ａにおいて、全ての制御モジュールから応答を受信したと判断した場合（Ｓ１９０３ａ  ＹＥＳ）、マスタ制御モジュールは、ステップＳ１９０４ａに移行してステージポインタ情報の更新処理を終了する。
【０２３２】
（６）記録専用バッファ２０１から退避バッファ１１８へのライトバック
図２４は、本実施例に係るライトバックを示すフローチャートである。
【０２３３】
ステップＳ２０００ａにおいて、例えば、Ｗｒｉｔｅデータのバッファセットへの記憶処理が完了すると、コピー元装置１１０におけるマスタ制御モジュールは、処理をステップＳ２００１ａに移行する。
【０２３４】
ステップＳ２００１ａにおいて、マスタ制御モジュールは、ステージング・転送で使用中のバッファセット数を取得する。そして、マスタ制御モジュールは、ステージング・転送で使用中のバッファセット数とバッファ閾値とを比較し、使用中のバッファセット数がバッファ閾値以上ではない場合（Ｓ２００１ａ  ＮＯ）、処理をステップＳ２００６ａに移行する。また、マスタ制御モジュールは、ステージング・転送で使用中のバッファセット数がバッファ閾値以上であった場合（Ｓ２００１ａ  ＹＥＳ）、処理をステップＳ２００２ａに移行する。
【０２３５】
ステップＳ２００２ａにおいて、マスタ制御モジュールは、ライトバック処理を行なう。なお、ライトバックをするバッファセットを「ライトバック対象世代」という。このライトバック処理の具体的な処理については、後述する。
【０２３６】
ライトバックが完了すると、マスタ制御モジュールは、コピー元装置１１０に備わる他の制御モジュールに対して、ステップＳ２００２ａと同様の処理を依頼する。
【０２３７】
ステップＳ２００１ｂにおいて、各制御モジュールは、マスタ制御モジュールから依頼のあったバッファセットのうち各制御モジュールに備わる個別バッファに記憶されているバッファデータ、そのＢＩＴおよびバッファセット情報を、自身のＢＩＴ記憶部２０１ｂ等から取得する。そして、各制御モジュールは、取得したＢＩＴおよびバッファセット情報を、各制御モジュールに割当てられた個別退避バッファに退避する。
【０２３８】
そして、Ｗｒｉｔｅデータ等のバッファデータが個別バッファにない場合（Ｓ２００２ｂ  ＮＯ）、各制御モジュールは、ステップＳ２００３ｂをスキップする。また、Ｗｒｉｔｅデータ等のバッファデータが個別バッファにある場合（Ｓ２００２ｂ  ＹＥＳ）、各制御モジュールは、処理をステップＳ２００３ｂに移行する。
【０２３９】
ステップＳ２００３ｂにおいて、各制御モジュールは、個別バッファに記憶されているＷｒｉｔｅデータ等のバッファデータを、各制御モジュールに割当てられた退避バッファ１１８の個別退避バッファに退避する。そして、マスタ制御モジュールに依頼された処理の完了を通知する。
【０２４０】
一方、ステップＳ２００３ａにおいて、マスタ制御モジュールは、依頼した全ての制御モジュールから応答を受信したか否かをチェックし、応答を受信していない制御モジュールがある場合には（Ｓ２００３ａ  ＮＯ）、ステップＳ２００３ａの処理を繰返す。
【０２４１】
全ての制御モジュールから応答を受信した場合（Ｓ２００３ａ  ＹＥＳ）、マスタ制御モジュールは、ライトバック対象バッファセットのバッファセット情報等を解放する（ステップＳ２００４ａ）。また、制御モジュールは、バッファセット管理テーブル４００を参照しライトバック対象バッファセットのバッファセットＩＤと一致するバッファセットＩＤを未使用に設定する。
【０２４２】
ステップＳ２００５ａにおいて、マスタ制御モジュールは、バッファ閾値を最適化する処理を実行する。そして、マスタ制御モジュールは、処理をステップＳ２００６ａに移行してバッファ退避処理を終了する。
【０２４３】
上記した、ステップＳ２００２ａのライトバック処理について、図２５、図２６のフローチャートを使用して説明する。
【０２４４】
まず、図２５において、マスタ制御モジュールは、必要となるＷｒｉｔｅ  Ｂａｃｋの数を、求める（ステップＳ２０５０）。詳しくは、まず、マスタ制御モジュールは、図４に示されるバッファ管理テーブル４００で管理されるバッファセットのうち、ライトバックの対象となっているバッファセットＩＤの総格納数を求める。図４では、バッファセットＩＤ０００３，０００４の使用目的がライトバックであり、この総格納数は、７６０である。
【０２４５】
次にマスタ制御モジュールは、ライトバック対象の総格納数を元にライトバックに必要となる退避バッファ数を求める。この際、退避バッファ単位サイズに満たない容量分につおいては、１退避バッファを確保する。本実施の形態の場合、図８に示されるように１退避バッファ単位サイズは１ＭＢｙｔｅである。また、格納容量は、図５の順序性補償リモートコピー管理テーブル４１０に示されるように、８ＫＢｙｔｅであるので、マスタ制御モジュールは、（７６０×８）÷１０２４＝５．９３７５を計算し、小数点以下端数分を切り上げ、必要退避バッファ数「６」を抽出する。
【０２４６】
次に、マスタ制御モジュールは、Ｗｒｉｔｅｂａｃｋの空き退避バッファを検索する処理を行う（ステップＳ２０５１）。この処理は、Ｂｕｓｙ状態、即ち、キャッシュがフルとなった制御モジュールに対し、Ｗｒｉｔｅｂａｃｋすべき退避バッファを検索する処理である。この処理については、後述する。なお、マスタ制御ユニットは、検索結果を、退避バッファテーブル記憶部２０５内に、空き退避バッファ情報として記憶する。また、この際記憶される空きバッファ情報は、検索されたバッファの論理ユニット番号（ＬＵ番号）及びＬＵ番号の退避バッファオフセットを含んでいる。また、マスタ制御ユニットは、空き退避バッファ情報を見つけることができなかった場合、空きバッファ情報は、「空きなし」を示す情報が記憶する。
【０２４７】
次に、マスタ制御モジュールは、ステップＳ２０５１の処理において、空き退避バッファを見つけることができたかを確認する（ステップＳ２０５２）。詳しくは、空きバッファ情報が「対象なし」を示すものかを確認する。ここで、空き退避バッファセットが見つからなかった、即ち、空き退避バッファ情報が、「対象なし」を示す情報であった場合、本処理を終了し、Ｈａｌｔ状態へ移行する（ステップＳ２０５３）。
【０２４８】
また、ステップＳ２０５２にて、空き退避バッファがあったと判断した場合、即ち空き退避バッファの論理ユニット番号及びＬＵ番号の退避バッファオフセットを含んでいる場合、マスタ制御モジュールは、ステップＳ２０５４の処理を行う。即ち、マスタ制御モジュールは、ステップＳ２０５１の処理において記憶された空き退避バッファ情報（ＬＵ番号の退避バッファオフセット及び退避バッファ数）を参照し、その情報を抽出する。（Ｓ２０５４）
次にマスタ制御モジュールは、このアドレスを、退避バッファセット管理テーブル５２０に設定する（Ｓ２０５５）。そして、マスタ制御モジュールは、退避バッファセット管理テーブル５２０を参照し、自身の配下にある論理ユニット番号が示す論理ユニットの対応アドレスへ、Ｗｒｉｔｅ  ｂａｃｋ対象となる個別バッファ２０１ａのデータを転送する。加えて、他の制御モジュールへ設定した退避バッファセット管理テーブル５２０を通知する。更に、該各ＬＵの空き退避バッファ管理テーブル５３０のＷｒｉｔｅｂａｃｋに使用した退避バッファの使用状況を「１」（使用中）に更新する（ステップＳ２０５６）。
【０２４９】
この処理が完了すると、マスタ制御モジュールは、Ｗｒｉｔｅ  ｂａｃｋ対象であった個別バッファ２０１ａを開放する（Ｓ２０５７）。この際、制御モジュールは、Ｈａｌｔ待ち状態があれば、バッファ切り替えを行う。
【０２５０】
次に、上記した図２５の処理において、ステップＳ２０５１の空き退避バッファを検索する処理について、図２６のフローチャートを用いて説明する。
【０２５１】
まず、マスタ制御モジュールは、図４のバッファセット管理テーブルを参照し、バッファのステータスがＢｕｓｙか否か（Ｎｏｒｍａｌか）を確認する（ステップＳ２０６１）
ここで、バッファのステータスがＮｏｒｍａｌであれば、空き退避テーブル管理テーブル５３０を参照し、各制御ユニットが対象とする論理ユニットＬＵの数が２つ以上であるかを確認する（ステップＳ２０６２）。ステップＳ２０６１の処理にてバッファのステータスがＢｕｓｙの場合、もしくは、ステップＳ２０６２の処理にて論理ユニットが１つしかない場合、マスタ制御モジュールは、性能が良い論理ユニットの退避バッファを優先して選択する設定を行う（ステップＳ２０６４）。この際、マスタ制御モジュールは、各論理ユニットの、ＬＵ管理テーブル５１０の退避バッファ性能を参照して、退避バッファ性能が一番良い論理ユニットの番号を記憶する。ステップＳ２０６４の処理は、具体的には、マスタ制御モジュールが、退避バッファ管理テーブル記憶部２０５内に、性能が良い方を優先することを示すフラグ情報を記憶する。また、マスタ制御モジュールが、各論理ユニットのＬＵ管理テーブル５１０の退避バッファ性能を比較し、退避バッファ性能が一番良い論理ユニットの番号を検索対象論理ユニット番号として退避バッファ管理テーブル記憶部２０５内に記憶する。
【０２５２】
また、ステップＳ２０６２にて論理ユニットが複数あるとされた場合、退避バッファ性能が悪い方の論理ユニットの退避バッファを優先して退避バッファを選択する設定を行う。（Ｓ２０６３）。この際、マスタ制御モジュールは、各論理ユニットの、ＬＵ管理テーブル５１０の退避バッファ性能を比較し、退避バッファ性能が一番悪い論理ユニットの番号を記憶する。ステップＳ２０６４の処理は、具体的には、マスタ制御モジュールが、退避バッファ管理テーブル記憶部２０５内に、性能が悪い方を優先することを示すフラグ情報を記憶する。また、マスタ制御モジュールが各論理ユニットの、ＬＵ管理テーブル５１０の退避バッファ性能を比較して、退避バッファ性能が一番悪い論理ユニットの番号を検索対象論理ユニット番号として退避バッファ管理テーブル記憶部２０５内に記憶する。
【０２５３】
次に、マスタ制御モジュールは、退避バッファ管理テーブル記憶部２０５内に記憶されている検索対象論理ユニット内に、退避バッファとして確保出来る連続した空き領域があるかを確認する（ステップＳ２０６５〜ステップＳ２０６７）。この処理の制御モジュール＃００での例を示す。マスタ制御モジュールは、図１２に示される空き退避バッファテーブル５３０を参照する。ここでの値は「１１１１１１１１１１１１１１１１００００００００１１１１１１１１・・・（以降は全て１とする）」であるので、マスタ制御モジュールは、空き退避バッファのオフセットを、０（空き）を示す最初のオフセットである「１６」、該オフセットからの連続空き退避バッファ数「８」を算出する。ここで、退避バッファとして確保出来る連続した空き領域があった場合、マスタ制御モジュールは、検索対象ＬＵ番号（上記では、「＃００」・及び空き領域の退避バッファオフセット「１６」及び退避バッファ数「８」を空き退避バッファ情報として退避バッファ管理テーブル記憶部２０５に記憶し、処理を終了する（Ｓ２０６８）。
【０２５４】
また、ここで、検索対象論理ユニットに、連続した空き領域が見つからなかった場合、マスタ制御モジュールは、次の論理ユニットを検索対象論理ユニットに設定し直し、ステップＳ２０６５〜Ｓ２０６７の処理を行う（Ｓ２０６９，Ｓ２０７０）。
【０２５５】
この際、マスタ制御ユニットは、退避バッファ管理テーブル記憶部２０５に記憶されているフラグ情報が、「性能が悪い方を優先」を示す場合、ステップＳ２０６５〜Ｓ２０６７で処理を行っていない論理ユニットのうち、最も性能が悪い論理ユニットを選択する。当然、この選択は、退避バッファ管理テーブル記憶部２０５に記憶されているＬＵ管理テーブル５１０を参照することによって行われる。
【０２５６】
また、マスタ制御ユニットは、退避バッファ管理テーブル記憶部２０５に記憶されているフラグ情報が、「性能が良い方を優先」を示す場合、ステップＳ２０６５〜Ｓ２０６７で処理を行っていない論理ユニットのうち、最も性能が良い論理ユニットを選択する。当然、この選択も、退避バッファ管理テーブル記憶部２０５に記憶されているＬＵ管理テーブル５１０を参照することによって行われる。
【０２５７】
更に、全ての論理ユニットの検索が完了してしまっても、連続した空き領域が見つからなかった場合、マスタ制御モジュールは、空き退避バッファ情報として、「対象なし」を示す情報を記憶し処理を終了する（Ｓ２０７１）。
【０２５８】
（７）再配置スケジューリング処理
本装置において、定期的に行われる再配置処理について図２７〜図２９を用いて、説明する。
【０２５９】
この処理は、退避バッファへのアクセスが少ない曜日・時間帯に自動的に行われるよう、マスタ制御モジュールが、再配置のスケジューリングを自動的に行っている。この処理について図２７を参照し、説明する。
【０２６０】
まず、上記したように、図２１のＳ１６５３処理によって、個別バッファの容量が足らず、Ｗｒｉｔｅ  ｂａｃｋが発生することに、日付別加点テーブル４３０・曜日別加点テーブル４４０の該当欄の値の更新が行われている。
【０２６１】
ここで、マスタ制御モジュールは、過去の同地タイミングのデータを集計する（ステップＳ２１０１）。本実施の形態では、日付別加点テーブル４３０においては、過去２年分のデータが記憶されているものとする。この場合、今年の日付別加点テーブル４３０に昨年の日付別加点テーブル４３０を反映することによって、集計がなされる。また、曜日別加点テーブル４４０は、過去２週分について蓄積されており、先週分の曜日別加点テーブル４４０のデータを今週分に反映させることによって、集計がなされる。
【０２６２】
次にマスタ制御モジュールは、週単位で小さい順に表を生成し（図示せず）、退避バッファ管理テーブル記憶部２０５に記憶する（ステップＳ２１０２）。
【０２６３】
そして、マスタ制御モジュールは、該表を参照して、週の中で加点が最も小さい時間に対し、再配置処理が実行されるよう、スケジューリングを行う（ステップ２１０３）。
【０２６４】
このスケジューリングを行うと、マスタ制御モジュールは、スケジューリングされた時間に、再配置処理を行う。
【０２６５】
この再配置処理について、図２８のフローチャートを用いて説明する。
【０２６６】
まず、マスタ制御モジュールは、再配置前の空き退避バッファが存在しないか検索する（ステップＳ２２０１）。この処理の詳細については、後述する。なお、マスタ制御ユニットは、検索結果を、退避バッファテーブル記憶部２０５内に、空き退避バッファ情報として記憶する。また、この際記憶される空きバッファ情報は、検索されたバッファの論理ユニット番号（ＬＵ番号）及びＬＵ番号の退避バッファオフセットを含んでいる。また、マスタ制御ユニットは、空き退避バッファ情報を見つけることができなかった場合、空きバッファ情報は、「空きなし」を示す情報が記憶する。
【０２６７】
次に、マスタ制御モジュールは、ステップＳ２２０１の処理において、空き退避バッファを見つけることができたかを確認する（ステップＳ２２０２）。詳しくは、空きバッファ情報が「空きなし」を示すものかを確認する。ここで、空き退避バッファセットが見つからなかった、即ち、空き退避バッファ情報が、「空きなし」を示す情報であった場合、再配置できないので、そのまま処理を終了する。
【０２６８】
また、ステップＳ２２０２にて、空き退避バッファを検索できた場合、空き即ち空き退避バッファの論理ユニット番号及びＬＵ番号の退避バッファオフセットを含んでいる場合、マスタ制御モジュールは、Ｓ２２０１で求めた空き退避バッファ情報の、論理ユニット番号とそのアドレスを抽出する（ステップＳ２２０３）。そして、マスタ制御モジュールは、この情報を参照して再配置処理を行う。具体的には、マスタ制御モジュールは、空き退避バッファに記憶されている論理ユニットの性能と近い論理ユニットがセットとなっている退避バッファセット管理テーブル５２０を抽出する。そして、マスタ制御モジュールは、抽出した退避バッファセット管理テーブル５２０の１つの論理ユニットを、ステップＳ２２０１で抽出した論理ユニットの１つと差し替えた場合、より、性能差が少ない組み合わせになるかを確認する。ここで、性能差が小さければ、組み換えを行う。そして、差し替えられた結果、この退避バッファセットから外された退避バッファに対し、同ようの処理に行う。その後も同ようの処理を繰り返し、再配置を行っていく（ステップＳ２２０４）。その再配置処理が完了すると、マスタ制御モジュールは、この再配置結果を、各退避バッファセット管理テーブルへ反映させ（ステップＳ２２０５）、ステップＳ２２０１へ処理を移行する。これにより、全ての再配置できる空きディスクバッファについて再配置が行われることとなる。
【０２６９】
次に、図２８のｓ２２０１の再配置空きバッファ検索処理について、図２９のフローチャートを用いて、説明する。
【０２７０】
まず、マスタ制御モジュールは、空き退避バッファ管理テーブル５３０を参照し、論理ユニットＬＵの数が２つ以上であるかを確認する（ステップＳ２２５１）。ここで、論理ユニットが２つ以上の場合、マスタ制御モジュールは、まだ検索を行っていない論理ユニットのうち、性能が悪い論理ユニット（ＬＵ管理テーブル５１０の下の方）の退避バッファを優先して選択する設定を行う（ステップＳ２２５２）。  また、ステップＳ２２５１にて論理ユニットが２つ無いとされた場合、再配置は不要なので、処理を終了する。次に、マスタ制御モジュールは、退避バッファ管理テーブル記憶部２０５内に記憶されている検索対象論理ユニット内に、退避バッファとして確保出来る連続した空き領域があるかを確認する（ステップＳ２２５３〜ステップＳ２２５４）。ここで、退避バッファとして確保出来る連続した空き領域があった場合、マスタ制御モジュールは、検索対象ＬＵ番号・及び空き領域の退避バッファオフセットを空き退避バッファ情報として退避バッファ管理テーブル記憶部２０５に記憶し、処理を終了する（ステップＳ２２５６）。
【０２７１】
また、ここで、検索対象論理ユニットに、連続した空き領域が見つからなかった場合、マスタ制御モジュールは、次の論理ユニットを検索対象論理ユニットに設定し直し、ステップＳ２２５２〜Ｓ２２５５の処理を行う（Ｓ２２５７）。
【０２７２】
全ての論理ユニットの検索が完了してしまっても、連続した空き領域が見つからなかった場合、マスタ制御モジュールは、空き退避バッファ情報として、「対象なし」を示す情報を記憶し処理を終了する（Ｓ２２５８）。
【０２７３】
（８）退避バッファ１１８から記録専用バッファ２０１へのステージング
図３０および図３１は、本実施例に係るステージングを示すフローチャートである。図３０および図３１に示す処理は、図１６に示したステップＳ１２１８ａ〜Ｓ１２２０ａの処理を具体的に示している。
【０２７４】
ステップＳ２３００ａにおいて、旧世代の解放処理が完了すると、コピー元装置１１０におけるマスタ制御モジュールは、処理をステップＳ２３０１ａに移行する。
【０２７５】
ステップＳ２３０１ａにおいて、マスタ制御モジュールは、ステージング対象となる世代を決定する。例えば、マスタ制御モジュールは、ステージポインタ情報を参照し、ステージポインタ情報に記憶されている世代を１だけインクリメントし、インクリメントした世代を新たにステージング対象の世代に決定する。このステージング対象の世代を「ステージング対象世代」という。また、図３０および図３１の処理では、必要に応じて、図１６のステップＳ１２１３ａの処理で取得しステージングに使用するバッファセットを「ステージング先」と略す。
【０２７６】
ステップＳ２３０２ａにおいて、マスタ制御モジュールは、ステージング対象世代のステージング先の領域は解放処理待ちか否かをチェックする。ステージング先の領域が解放待ちの場合（Ｓ２３０２ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ２３０３ａに移行する。
【０２７７】
ステップＳ２３０３ａにおいて、マスタ制御モジュールは、ステージング対象世代に１を加算した世代を新たなステージング対象世代に設定する。そして、マスタ制御モジュールは、処理をステップＳ２３０２ａに移行する。
【０２７８】
一方、ステップＳ２３０２ａにおいて、ステージング先の領域が解放待ちでない場合（Ｓ２３０２ａ  ＮＯ）、マスタ制御モジュールは、処理をステップＳ２３０４ａに移行する。
【０２７９】
ステップＳ２３０４ａにおいて、マスタ制御モジュールは、ステージング先が転送中か否かをチェックする。ステージング先が転送中の場合（Ｓ２３０４ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ２３０３ａに移行する。
【０２８０】
一方、ステップＳ２３０４ａにおいて、ステージング先が転送中でない場合（Ｓ２３０４ａ  ＮＯ）、マスタ制御モジュールは、処理をステップＳ２３０５ａに移行する。
【０２８１】
ステップＳ２３０５ａにおいて、マスタ制御モジュールは、ステージング対象世代がステージング中か否かをチェックする。ステージング対象世代がステージング中の場合（Ｓ２３０５ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ２３０３ａに移行する。
【０２８２】
一方、ステップＳ２３０５ａにおいて、ステージング対象世代がステージング中でない場合（Ｓ２３０５ａ  ＮＯ）、マスタ制御モジュールは、処理をステップＳ２３０６ａに移行する。
【０２８３】
ステップＳ２３０６ａにおいて、マスタ制御モジュールは、ステージング対象世代がライトバック中か否かをチェックする。ステージング対象世代がライトバック中の場合（Ｓ２３０６ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ２３０７ａに移行する。
【０２８４】
ステップＳ２３０７ａにおいて、マスタ制御モジュールは、自身のライトバックを中断するとともに、コピー元装置１１０に備わる他の制御モジュールに対して、ライトバックの中断を依頼する。
【０２８５】
ステップＳ２３０１ｂにおいて、各制御モジュールは、マスタ制御モジュールからの依頼を受けると、処理中のライトバックを中断する。そして、マスタ制御モジュールに対して、ライトバックを中断した旨を通知する。
【０２８６】
ステップＳ２３０８ａにおいて、マスタ制御モジュールは、依頼した全ての制御モジュールから応答を受信したか否かをチェックし、応答を受信していない制御モジュールがある場合には（Ｓ２３０８ａ  ＮＯ）、ステップＳ２３０８ａの処理を繰り返す。
【０２８７】
ステップＳ２３０８ａにおいて、依頼した全ての制御モジュールから応答を受信したと判断すると（Ｓ２３０８ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ２３０９ａに移行し、ステージングを終了する。
【０２８８】
一方、ステップＳ２３０６ａにおいて、ステージング対象世代がライトバック中でないと判断した場合（Ｓ２３０６ａ  ＮＯ）、マスタ制御モジュールは、処理をステップＳ２３１０ａに移行する。
【０２８９】
ステップＳ２３１０ａにおいて、マスタ制御モジュールは、ステージング先が、Ｗｒｉｔｅデータ等の記憶処理中か否かをチェックする。ステージング先が記憶処理中と判断した場合（Ｓ２３１０ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ２３１１ａに移行し、ステージングを終了する。
【０２９０】
ステップＳ２３１０ａにおいて、ステージング先がＷｒｉｔｅデータ等の記憶処理中でないと判断した場合（Ｓ２３１０ａ  ＮＯ）、マスタ制御モジュールは、処理を図３１のステップＳ２３１２ａに移行する。
【０２９１】
ステップＳ２３１２ａにおいて、マスタ制御モジュールは、図１６のステップＳ１２１３ａの処理で取得したステージング先に既にステージング対象世代が記憶されているか否かをチェックする。
【０２９２】
ステージング先にステージング対象世代が記憶されている場合（Ｓ２３１２ａ  ＹＥＳ）、マスタ制御モジュールは、ステップＳ２３１６ａに移行してステージングを終了する。また、ステージング先にステージング対象世代が記憶されていない場合（Ｓ２３１２ａ
ＮＯ）、マスタ制御モジュールは、処理をステップＳ２３１３ａに移行する。
【０２９３】
ステップＳ２３１３ａにおいて、マスタ制御モジュールは、ステージング・転送で使用中のバッファセット数を取得する。そして、マスタ制御モジュールは、ステージング・転送で使用中のバッファセット数とバッファ閾値とを比較し、使用中のバッファセット数がバッファ閾値以上であった場合（Ｓ２３１３ａ  ＹＥＳ）、処理をステップＳ２３１７ａに移行してステージングを終了する。また、マスタ制御モジュールは、ステージング・転送で使用中のバッファセット数がバッファ閾値以上でなかった場合（Ｓ２３１３ａ  ＮＯ）、処理をステップＳ２３１４ａに移行する。
【０２９４】
ステップＳ２３１４ａにおいて、マスタ制御モジュールは、以下のようにステージング対象の世代に対してステージングを行なう。
【０２９５】
マスタ制御モジュールは、退避バッファ管理テーブル５００から、ステージング対象世代が記憶されている個別退避バッファのアドレスを算出する。そして、マスタ制御モジュールは、算出したアドレスからバッファデータ、ＢＩＴおよびバッファセット情報を取得する。
【０２９６】
そして、マスタ制御モジュールは、取得したバッファデータ、ＢＩＴおよびバッファセット情報を、ステージング対象バッファセットＩＤが示すバッファセットのバッファ２０１ａ、ＢＩＴ記憶部２０１ｂおよびバッファセット情報記憶部２０２に記憶する。同様の処理が、コピー元装置１１０内の制御モジュール毎に行なわれる。
【０２９７】
なお、個別退避バッファのアドレスは、制御モジュールに割り当てられた退避バッファが連続したアドレス空間とした場合、退避バッファ管理テーブル５００に設定されている「退避データの記憶退避バッファオフセット」に、「（ステージング対象世代−１）×個別退避バッファサイズ」を加えることにより求めることができる。
【０２９８】
ステップＳ２３１５ａにおいて、マスタ制御モジュールは、各制御モジュールに対して、ステップＳ２３１４ａと同様に、退避バッファ１１８からステージング対象世代を取得してステージングを行うように依頼する。
【０２９９】
ステップＳ２３０２ｂにおいて、各制御モジュールは、以下のようにバッファセット情報およびＢＩＴに対してステージングを行なう。
【０３００】
依頼を受けた各制御モジュールは、自身に割り当てられた退避バッファ１１８の個別退避バッファから、マスタ制御モジュールから依頼のあったステージング対象世代のＢＩＴおよびバッファセット情報を取得する。
【０３０１】
そして、各制御モジュールは、退避バッファ１１８の個別退避バッファから取得したＢＩＴおよびバッファセット情報を、各制御モジュールに備わるＢＩＴ記憶部２０１ｂおよびバッファセット情報記憶部２０２に記憶する。
【０３０２】
ステップＳ２３０３ｂにおいて、各制御モジュールは、自身に割り当てられた退避バッファ１１８の個別退避バッファを参照し、ステージング対象世代のバッファデータがあるか否かを判別する。そして、ステージング対象世代のバッファデータが退避バッファ１１８の個別退避バッファにある場合（Ｓ２３０３ｂ  ＹＥＳ）、各制御モジュールは、そのバッファデータに対してステージングを行なう（Ｓ２３０４ｂ）。ステージングが完了すると、各制御モジュールは、マスタ制御モジュールに対して完了通知を行なう。
【０３０３】
また、ステップＳ２３０３ｂにおいて、ステージング対象世代のバッファデータが退避バッファ１１８の個別退避バッファにない場合（Ｓ２３０３ｂ  ＮＯ）、各制御モジュールは、マスタ制御モジュールに対して完了通知を行う。
【０３０４】
ステップＳ２３１６ａにおいて、マスタ制御モジュールは、依頼した全ての制御モジュールから応答を受信するまで完了通知を監視する。そして、依頼した全ての制御モジュールから応答を受信すると（Ｓ２３１６ａ  ＹＥＳ）、マスタ制御モジュールは、ステージングにより、空きとなった退避バッファの情報を、空きバッファ管理テーブル５３０に反映させた後、ステップＳ２３１７ａに移行してステージングを終了する。即ち、マスタ制御モジュールは、各論理ユニットの空き退避バッファ管理テーブル５３０の空きとなった退避バッファに対し、そのステータスを「０」（空き）に更新する。
【０３０５】
（９）バッファ閾値を最適化する処理
図３２は、本実施例に係るバッファ閾値の最適化処理を示すフローチャートである。
【０３０６】
図１６に示したステップＳ１２１６ａまたは図１９に示したステップＳ２００５ａに処理が移行すると、マスタ制御モジュールは、以下に示すバッファ閾値の最適化処理を開始する（ステップＳ２４００）。
【０３０７】
ステップＳ２４０１において、マスタ制御モジュールは、Ｗｒｉｔｅ  Ｉ／Ｏ命令を管理する待ち行列等を参照し、待ち状態のＷｒｉｔｅ  Ｉ／Ｏが存在するか否かを判別する。待ち状態のＷｒｉｔｅ  Ｉ／Ｏが存在する場合（ステップＳ２４０１  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ２４０２に移行する。
【０３０８】
ステップＳ２４０２において、マスタ制御モジュールは、解放したバッファセットが、ライトバックに使用されていたものか否かを判別する。なお、「解放したバッファセット」とは、図３２に示す最適化処理を開始する前、例えば、図１６に示したステップＳ１２１４ａまたは図１９に示したステップＳ２００４ａで解放されたバッファセットのことである。
【０３０９】
解放したバッファセットがライトバックに使用されていたものでない場合（ステップＳ２４０２  ＮＯ）、マスタ制御モジュールは、ステップＳ２４０８に移行してバッファ閾値の最適化処理を終了する。また、解放したバッファセットがライトバックに使用されていたものである場合（ステップＳ２４０２  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ２４０３に移行する。
【０３１０】
ステップＳ２４０３において、マスタ制御モジュールは、バッファ管理テーブル３００からバッファ閾値を取得し、バッファ閾値が最大バッファセット数未満か否かを判別する。バッファ閾値が最大バッファセット数以上の場合（ステップＳ２４０３  ＮＯ）、マスタ制御モジュールは、ステップＳ２４０８に移行してバッファ閾値の最適化処理を終了する。
【０３１１】
また、バッファ閾値が最大バッファセット数未満の場合（ステップＳ２４０３  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ２４０４に移行する。そして、マスタ制御モジュールは、バッファ閾値を１だけインクリメントし、バッファ管理テーブル３００のバッファ閾値を更新する（ステップＳ２４０４）。すると、マスタ制御モジュールは、ステップＳ２４０８に移行してバッファ閾値の最適化処理を終了する。
【０３１２】
一方、ステップＳ２４０１において、待ち状態のＷｒｉｔｅ  Ｉ／Ｏが存在しない場合、マスタ制御モジュールは、処理をステップＳ２４０５に移行する。
【０３１３】
ステップＳ２４０５において、マスタ制御モジュールは、解放したバッファセットが、転送に使用されていたものか否かを判別する。なお、ステップＳ２４０２と同様に、「解放したバッファセット」とは、図３２に示す最適化処理を開始する前、例えば、図１６に示したステップＳ１２１４ａまたは図１９に示したステップＳ２００４ａで解放されたバッファセットのことである。
【０３１４】
解放したバッファセットが転送に使用されていたものでない場合（ステップＳ２４０５
ＮＯ）、マスタ制御モジュールは、ステップＳ２４０８に移行してバッファ閾値の最適化処理を終了する。また、解放したバッファセットが転送に使用されていたものである場合（ステップＳ２４０５  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ２４０６に移行する。
【０３１５】
ステップＳ２４０６において、マスタ制御モジュールは、バッファ管理テーブル３００からバッファ閾値を取得し、バッファ閾値が１より大きいか否かを判別する。バッファ閾値が１以下の場合（ステップＳ２４０６  ＮＯ）、マスタ制御モジュールは、ステップＳ２４０８に移行してバッファ閾値の最適化処理を終了する。
【０３１６】
また、バッファ閾値が１より大きい場合（ステップＳ２４０６  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ２４０７に移行する。そして、マスタ制御モジュールは、バッファ閾値を１だけデクリメントし、バッファ管理テーブル３００のバッファ閾値を更新する（ステップＳ２４０７）。すると、マスタ制御モジュールは、ステップＳ２４０８に移行してバッファ閾値の最適化処理を終了する。
【０３１７】
図３３は、図１６に示したマッチング処理（ステップＳ１２１１ａ）の具体的な処理を示すフローチャートである。なお、図２４では、コピー元装置１１０に備わるマスタ制御モジュールと、その他の制御モジュールと、についての具体的な処理を示す。
【０３１８】
ステップＳ２５０１ａにおいて、マスタ制御モジュールは、未使用バッファＩＤ記憶部２０６を参照する。そして、未使用バッファＩＤ記憶部２０６に記憶されている未使用バッファＩＤの数が、バッファセット情報記憶部２０２に記憶されているバッファセット情報に含まれるコピー元ＩＤとのマッチングに必要な数だけあるか否かを確認する。
【０３１９】
そして、ステップＳ２５０１ａにおいて、必要な数の未使用バッファＩＤを確認できない場合（Ｓ２５０１ａ  ＮＯ）、マスタ制御モジュールは、処理をステップＳ２５０２ａに移行する。そして、マスタ制御モジュールは、Ｓ２５０２ａにてコピー先装置１２０からの未使用バッファ通知を待ち、未使用バッファ通知を受付けると、処理をステップＳ２５０１ａに移行する。
【０３２０】
また、ステップＳ２５０１ａにおいて、必要な数の未使用バッファＩＤを確認すると（Ｓ２５０１ａ  ＹＥＳ）、マスタ制御モジュールは、処理をステップＳ２５０３ａに移行する。
【０３２１】
ステップＳ２５０３ａにおいて、マスタ制御モジュールは、未使用バッファＩＤ記憶部２０６から必要な数の未使用バッファＩＤを取得する。そして、マスタ制御モジュールは、既にバッファセット情報記憶部２０２に記憶されているバッファセット情報に含まれるコピー先ＩＤと、取得した未使用バッファＩＤとを組み合わせて関連付け、すなわち、コピー元バッファとコピー先バッファとのマッチングを行なう。
【０３２２】
このマッチング処理が終了すると、マスタ制御モジュールは、他の制御モジュールに対して、バッファセット情報の多重化依頼を通知する。
【０３２３】
一方、ステップＳ２５０１ｂにおいて、マスタ制御モジュールからバッファセット情報の多重化依頼の通知を受けると、各制御モジュールは、バッファセット情報の多重化処理を行なう。ここで、バッファセット情報の多重化処理とは、コピー元装置１１０またはコピー先装置１２０に備わる全ての制御モジュールに同一のバッファセット情報を保持させる処理である。
【０３２４】
例えば、マスタ制御モジュールから、ステップＳ２５０３ａのマッチング処理が行なわれたバッファセット情報を取得する。そして、自身に備わるバッファセット情報記憶部２０２に取得したバッファセット情報を反映する。
【０３２５】
そして、Ｓ２５０１ｂにおけるバッファセット情報の多重化処理が終了すると、各制御モジュールは、バッファセット情報の多重化処理の完了をマスタ制御モジュールに通知する。
【０３２６】
ステップＳ２５０５ａにおいて、マスタ制御モジュールは、バッファセット情報の多重化処理の依頼をした制御モジュールの全てから応答を受信したか否かを確認する。そして、当該応答を全ての制御モジュールから受信したと判断すると（Ｓ２５０５ａ  ＹＥＳ）、コピー先バッファ割り当て処理を終了し（ステップＳ２５０６ａ）、図１６に示したステップＳ１２１２ａａの処理に移行する。
【０３２７】
上述のように、本実施例に係るコピー元装置１１０は、退避バッファ１１８を備える。
【０３２８】
そして、転送・ステージングで使用中のバッファセット数がバッファ閾値を超えると、コピー元装置１１０は、バッファセットデータを、退避バッファ１１８に退避するライトバックを行なう。
【０３２９】
例えば、コピー元装置１１０−コピー先装置１２０間の回線能力が低い場合にホスト１５０から次々にＷｒｉｔｅ  Ｉ／Ｏ命令を受けても、コピー元装置１１０は、使用中のバッファセット数がバッファ閾値を超えると、バッファセットデータを退避バッファ１１８に退避する。
【０３３０】
一方、コピー元装置１１０は、バッファセットデータのコピー先装置１２０への転送と展開処理が完了すると、そのバッファセットデータが記憶されていた領域を解放し、解放した領域に、退避バッファ１１８に退避していたバッファセットデータをステージングする。そして、コピー元装置１１０は、そのバッファデータをコピー先装置１２０に転送する。
【０３３１】
このように、本実施例に係るコピー元装置１１０によると、コピー元装置１１０−コピー先装置１２０間の回線能力が低い場合など、データの転送処理に遅延が生じる場合であっても、バッファセットの枯渇を抑止することができる。したがって、コピー先装置１２０は、バッファセットの枯渇時に行なうバッファＨａｌｔ処理を抑止することができる。すなわち、コピー先装置１２０は、バッファＨａｌｔ処理によりバッファセットの内容がクリアされ、順序性を補償したリモートコピーが中断されることを抑止することができる。その結果、コピー元装置１１０は、データの転送処理に遅延が生じる場合でも、順序性を補償したリモートコピーを行なうことが可能となる。
【０３３２】
回線能力が均一でなく不安定である場合やＷｒｉｔｅ  Ｉ／Ｏ等によるデータ更新量がコピー元装置１１０に備わる記録専用バッファ２０１の容量を超える場合などによってデータの転送処理に遅延が生じる場合も同様の効果を奏する。
【０３３３】
さらに、コピー元装置１１０は、Ｗｒｉｔｅ  Ｉ／Ｏ処理にともなう処理の負荷に応じて、バッファ閾値の最適化を行なう。
【０３３４】
例えば、コピー元装置１１０は、ステージング・転送実行後に待ち状態のＷｒｉｔｅ  Ｉ／Ｏ処理があると、バッファ閾値をデクリメントする。待ち状態のＷｒｉｔｅ  Ｉ／Ｏ処理が多く存在する場合、ステージング・転送実行後に待ち状態のＷｒｉｔｅ  Ｉ／Ｏ処理を検出する毎にバッファ閾値をデクリメントすることになる。すると、図２６に示すように、バッファ閾値が変動し、ライトバックに使用するバッファセットが多くなる。
【０３３５】
その結果、急激にＷｒｉｔｅ  Ｉ／Ｏ処理が増大しても、バッファセットデータは退避バッファ１１８に退避されるので、バッファセットの枯渇を抑止することができる。
【０３３６】
また、例えば、コピー元装置１１０は、バッファセットデータのライトバック処理の実行後に待ち状態のＷｉｔｅ  Ｉ／Ｏ処理がなければ、バッファ閾値をインクリメントする。待ち状態のＷｒｉｔｅ  Ｉ／Ｏ条理を検出しない状態が続くと、バッファセットデータの転送処理を実行する毎に、コピー元装置１１０は、バッファ閾値をインクリメントすることになる。すると、図２５に示すように、バッファ閾値が変動し、ステージング・転送に使用するバッファセットが多くなる。
【０３３７】
その結果、通信回線の帯域幅を最大限利用してバッファセットデータの転送処理を行なうようになるので、バッファセットデータの転送処理が増大し、バッファセットの枯渇を抑える。
【０３３８】
なお、図３０および図３１には、バッファセットの数が４ではなく１６の場合を示しているが、これはバッファ閾値の動作の理解を容易にするためであって、バッファセットの構成を図３０および図３１に示す構成に限定する趣旨ではない。
【０３３９】
また、上記実施の形態以外に、設置時点において、ディスクバッファの運用者は、バッファＨａｌｔ処理にならない程度の、ディスクバッファの容量を予測し、固定的に設定を行うことで、Ｈａｌｔ処理を回避するということも考えられる。しかしながら、このような設定は、実際の運用前に行うことであり、その運用途中において、その運用方法が変わっていくなどにより、一部の論理ユニットの負荷が大きくなることがある。もしくは、一部の論理ユニットの入出力用のポートにおける通信量が増加してしまい、実効速度が遅くなることがある。
【０３４０】
この様な場合、この実効速度が遅くなった論理ユニットとの退避バッファセットとされた他の論理ユニットの負荷が軽い、もしくは、入出力に余裕があっても、実効速度が遅くなってしまった論理ユニットにあわせて、遅い実効速度にて処理を行うことになる。上記したように、論理ユニットの実効速度が遅くなると、送信待ちのデータセットが増加し、結果想定していたバッファ容量を超えることにもなってしまう。
【０３４１】
本実施の形態の記憶制御装置では、図１８における、退避バッファセットテーブル５２０の生成処理や、図２７〜図２９の再配置処理に示されるように、バッファセットで組み合わされる各退避バッファを、その退避バッファの論理ユニットのライトバックの性能がなるべく揃うように配置もしくは再配置するようにしている。これにより、本実施の形態の記憶制御装置は、バッファセット内における各バッファの速度差を最小限にしている。
【０３４２】
更に本実施の形態では、図２７〜図２９に示す様に、定期的に再配置を行うことで、システムの運用によって、各論理ユニットに対する負荷や通信量が変わってきたとしても、各退避バッファセット内の各退避バッファの性能差を最小限に押さえることが可能となる。
【０３４３】
更に、本実施の形態では、制御モジュールと論理ユニットとの組み合わせを固定しておらず、各退避バッファセット単位で、その組み合わせが異なっている。退避バッファセットにおける各退避バッファは同じサイズであるため、制御モジュール単位で論理ユニットを固定してしまうと、各論理ユニットで記憶される容量は、同じになってしまう。
よって、たとえ一方の論理ユニットの容量が大きくとも、容量の少ない他方の論理ユニットの容量までしか記憶することができない。これに対し、本実施の形態の場合、バッファセット単位で論理ユニットの組み合わせを記憶しているため、制御モジュールと論理ユニットとの組み合わせを固定しておく必要がない。よって、各論理ユニットの容量が同じでない場合でもその容量を有効に活用できる。
【０３４４】
更に、制御ユニットと論理ユニット組み合わせを固定する記憶制御装置では、制御モジュールを増設しようとする場合、そのままでは増設した制御モジュールに対応する退避バッファセットを確保することができない。このため、このような記憶制御装置では、一旦、論理ユニット内に記憶されている退避バッファを空にして、新たに増設する制御モジュール用のバッファセットの対応関係を構築するという作業が発生する。これに対し、本実施の形態では、そもそも、論理ユニットと制御モジュールとが固定的に組み合わせられていないので、増設した制御モジュールにも容易にバッファセットを割り当てることが可能となる。
【符号の説明】
【０３４５】
１００      ストレージシステム
１１０      コピー元装置
１１７      ディスク装置
１１８      退避バッファ
１２０      コピー先装置
２００      メモリ
２０１      記録専用バッファ
２０１ａ      バッファ
２０１ｂ      ＢＩＴ記憶部
２０２      バッファセット情報記憶部
２０３      バッファ管理テーブル記憶部
２０４      バッファセット管理テーブル記憶部
２０５      退避バッファ管理テーブル記憶部
３００      バッファ管理テーブル
４００      バッファセット管理テーブル
４１０      順序性補償リモートコピーテーブル
４２０      個別バッファ管理テーブル
４３０      譜付別加点テーブル
４４０      曜日別加点テーブル
５００      全退避バッファ管理テーブル
５１０      ＬＵ管理テーブル
５２０      退避バッファセット管理テーブル
５３０      空き退避バッファ管理テーブル
【図２】
0005593792.tif 000002
【図５】
0005593792.tif 000003
【図６】
0005593792.tif 000004
【図７】
0005593792.tif 000005
【図８】
0005593792.tif 000006
【図１２】
0005593792.tif 000007
【図１８】
0005593792.tif 000008
【図１９】
0005593792.tif 000009
【図２２】
0005593792.tif 000010
【図２３】
0005593792.tif 000011
【図２５】
0005593792.tif 000012
【図２７】
0005593792.tif 000013
【図２８】
0005593792.tif 000014
【図３１】
0005593792.tif 000015
【図３２】
0005593792.tif 000016
【図３３】
0005593792.tif 000017
【図１】
0005593792.tif 000018
【図３】
0005593792.tif 000019
【図４】
0005593792.tif 000020
【図９】
0005593792.tif 000021
【図１０】
0005593792.tif 000022
【図１１】
0005593792.tif 000023
【図１３】
0005593792.tif 000024
【図１４】
0005593792.tif 000025
【図１５】
0005593792.tif 000026
【図１６】
0005593792.tif 000027
【図１７】
0005593792.tif 000028
【図２０】
0005593792.tif 000029
【図２１】
0005593792.tif 000030
【図２４】
0005593792.tif 000031
【図２６】
0005593792.tif 000032
【図２９】
0005593792.tif 000033
【図３０】
0005593792.tif 000034
【図３４】
0005593792.tif 000035