(57)【要約】【課題】データ受信の遅延を抑制して、格納順序を保証したデータ転送を実行すること。【解決手段】中継装置１２０は、送信元から、所定データ量ごとにまとめられたデータを受信して、転送バッファ１２１に格納する。次に、中継装置１２０は、転送バッファ１２１に格納されたデータを一括して送信先に送信する。ここで、中継装置１２０は、データの格納により、転送バッファ１２１の使用量が閾値を超えた場合、転送バッファ１２１に格納したデータを退避用ディスク１２２に退避し、転送バッファ１２１からデータを消去する。また、中継装置１２０は、データの送信により、転送バッファ１２１に空き領域が生じた場合、退避用ディスク１２２のデータのうち、最先に退避されたデータから順に転送バッファ１２１に復帰させる。【選択図】図１
2014010624.tif 000002
【特許請求の範囲】
【請求項１】
送信元からのデータ群を送信先に送信する中継装置であって、
前記送信先へ送信すべきデータが記憶される第１の記憶領域と退避すべきデータが記憶される第２の記憶領域とを有する第１の記憶部に対し、前記データ群を格納順序に従って前記第１の記憶領域に格納し、前記データ群のうち前記第１の記憶領域に格納されなかったデータを前記第２の記憶領域に格納する受信部と、
前記受信部によって前記第２の記憶領域に記憶されたデータを前記格納順序に従って第２の記憶部に格納し、前記第２の記憶領域から消去する第１の格納部と、
前記第１の格納部によって前記第２の記憶部に格納されたデータが前記第２の記憶部に残存するか否かを判断する第１の判断部と、
前記送信先への送信により前記第１の記憶領域に空き領域が発生したか否かを判断する第２の判断部と、
前記第１の判断部によって前記第２の記憶部に残存し、かつ、前記第２の判断部によって前記記憶領域に空き領域が発生したと判断された場合、前記第２の記憶部に格納されたデータを、前記格納順序に従って前記空き領域に格納し、前記第２の記憶部から消去する第２の格納部と、
を有することを特徴とする中継装置。
【請求項２】
前記受信部は、
前記第１の格納部によって前記第２の記憶部に格納されたデータが前記第２の記憶部に残存する場合、前記送信元からの前記データ群の後続データを前記第２の記憶領域に格納することを特徴とする請求項１に記載の中継装置。
【請求項３】
前記第１の記憶領域に記憶された各データを前記送信先へ送信する前に前記格納順序に従って第３の記憶部に格納する第３の格納部を有することを特徴とする請求項１または２に記載の中継装置。
【請求項４】
送信元からのデータ群を送信先に送信する中継装置が、
前記送信先へ送信すべきデータが記憶される第１の記憶領域と退避すべきデータが記憶される第２の記憶領域とを有する第１の記憶部に対し、前記データ群を格納順序に従って前記第１の記憶領域に格納し、前記データ群のうち前記第１の記憶領域に格納されなかったデータを前記第２の記憶領域に格納し、
前記第２の記憶領域に記憶されたデータを前記格納順序に従って第２の記憶部に格納し、前記第２の記憶領域から消去し、
前記第２の記憶部に格納されたデータが前記第２の記憶部に残存するか否かを判断し、
前記送信先への送信により前記第１の記憶領域に空き領域が発生したか否かを判断し、
前記第２の記憶部に残存し、かつ、前記記憶領域に空き領域が発生したと判断された場合、前記第２の記憶部に格納されたデータを、前記格納順序に従って前記空き領域に格納し、前記第２の記憶部から消去する、
処理を実行することを特徴とする中継方法。
【請求項５】
送信元からのデータ群を送信先に送信する中継装置に、
前記送信先へ送信すべきデータが記憶される第１の記憶領域と退避すべきデータが記憶される第２の記憶領域とを有する第１の記憶部に対し、前記データ群を格納順序に従って前記第１の記憶領域に格納し、前記データ群のうち前記第１の記憶領域に格納されなかったデータを前記第２の記憶領域に格納し、
前記第２の記憶領域に記憶されたデータを前記格納順序に従って第２の記憶部に格納し、前記第２の記憶領域から消去し、
前記第２の記憶部に格納されたデータが前記第２の記憶部に残存するか否かを判断し、
前記送信先への送信により前記第１の記憶領域に空き領域が発生したか否かを判断し、
前記第２の記憶部に残存し、かつ、前記記憶領域に空き領域が発生したと判断された場合、前記第２の記憶部に格納されたデータを、前記格納順序に従って前記空き領域に格納し、前記第２の記憶部から消去する、
処理を実行させることを特徴とする中継プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中継装置、中継方法、および中継プログラムに関する。
【背景技術】
【０００２】
従来、分散キャッシュメモリ型のストレージシステムを採用するＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）装置がある。ＲＡＩＤ装置は、信頼性の向上のために、格納順序を保証したリモートコピーを実行し、送信元になる自装置内のデータを他のＲＡＩＤ装置にミラーリングする場合がある。
【０００３】
リモートコピーとは、ネットワークなどにより接続されたコンピュータ同士において、データをコピーすることである。ミラーリングとは、或る記憶領域にデータを保存する場合、保存するデータの複製データを、別の記憶領域にも保存しておくことである。
【０００４】
また、送信元のデータをミラーリングされたＲＡＩＤ装置が、中継装置として動作し、さらに、送信先になる他のＲＡＩＤ装置にデータをミラーリングする場合がある。これにより、送信元のＲＡＩＤ装置のデータは、複数のＲＡＩＤ装置にミラーリングされる。
【０００５】
従来技術として、送信元の装置から送信されたデータを一時的にバッファに格納し、データの格納が終了すると、バッファ内のデータを一括して記憶部へ出力するとともに、ネットワーク接続されている送信先の装置に対して送信する技術がある（例えば、下記特許文献１参照）。
【０００６】
また、書き込みデータを一時的に格納する書き込みバッファの使用状況を監視し、バッファの空き容量が少なくなった場合にバッファ内の情報を別途用意した高速ディスクシステムに退避させる技術がある。そして、使用状況が好転した場合に待避させたデータは、バッファに復帰される（例えば、下記特許文献２参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２００８／１３９５４５
【特許文献２】特開２００６−２６８４２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、送信元と中継装置とを接続する回線の帯域が、中継装置と送信先とを接続する回線の帯域より小さい場合がある。この場合、中継装置において、データの受信によりバッファに格納されるデータ量は、データの送信の終了によりバッファから消去されるデータ量より多くなることがある。そのため、上述した従来技術では、中継装置において、バッファの空き領域が枯渇してしまい、データを受信することができなくなる場合がある。そして、送信元は、送信元と中継装置とを接続する回線の状況に関わらず、中継装置のバッファに空き領域ができるまでデータの送信を停止することになり、送信効率が低下する。
【０００９】
また、上述した従来技術では、中継装置において、バッファ内のデータを退避用ディスクに退避させてバッファに空き領域を確保する場合、送信元はデータの送信を停止しなくてもよい。しかしながら、中継装置において、データの退避および復帰の際に、バッファ内のデータの格納順序が保証されない場合がある。例えば、中継装置は、先行データを退避した後、先行データを復帰して送信先に転送する前に、格納順序を保証せずに後続データを送信先に転送してしまう場合がある。そのため、送信先は、格納順序が保証されていないデータを受信して、送信元におけるデータの格納順序とは異なる順序でミラーリングを実行することになり、ミラーリングに失敗する場合がある。
【００１０】
本発明は、データ受信の遅延を抑制して、格納順序を保証したデータ転送を実行することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一側面によれば、送信元からのデータ群を送信先に送信する中継装置が、送信先へ送信すべきデータが記憶される第１の記憶領域と退避すべきデータが記憶される第２の記憶領域とを有する第１の記憶部に対し、データ群を格納順序に従って第１の記憶領域に格納し、データ群のうち第１の記憶領域に格納されなかったデータを第２の記憶領域に格納し、第２の記憶領域に記憶されたデータを格納順序に従って第２の記憶部に格納し、第２の記憶領域から消去し、第２の記憶部に格納されたデータが第２の記憶部に残存するか否かを判断し、送信先への送信により第１の記憶領域に空き領域が発生したか否かを判断し、第２の記憶部に残存し、かつ、記憶領域に空き領域が発生したと判断された場合、第２の記憶部に格納されたデータを、格納順序に従って空き領域に格納し、第２の記憶部から消去する中継装置、中継方法、および中継プログラムが提案される。
【発明の効果】
【００１２】
本発明の一側面によれば、データ受信の遅延を抑制して、格納順序を保証したデータ転送を実行することができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、ストレージシステムにおけるミラーリングの流れを示す説明図である。
【図２】図２は、コンピュータのハードウェア構成例を示すブロック図である。
【図３】図３は、メモリ２１２により実現されるバッファの内容を示す説明図である。
【図４】図４は、コピーセッション管理情報テーブルの記憶内容の一例を示す説明図である。
【図５】図５は、バッファ管理情報テーブルの記憶内容の一例を示す説明図である。
【図６】図６は、装置管理情報テーブルの記憶内容の一例を示す説明図である。
【図７】図７は、バッファ制御管理情報テーブルの記憶内容の一例を示す説明図である。
【図８】図８は、中継装置１２０の機能的構成例を示すブロック図である。
【図９】図９は、データ転送の一例を示す説明図（その１）である。
【図１０】図１０は、データ転送の一例を示す説明図（その２）である。
【図１１】図１１は、データ転送の一例を示す説明図（その３）である。
【図１２】図１２は、データ転送の一例を示す説明図（その４）である。
【図１３】図１３は、データ転送の一例を示す説明図（その５）である。
【図１４】図１４は、データ転送の一例を示す説明図（その６）である。
【図１５】図１５は、データ転送の一例を示す説明図（その７）である。
【図１６】図１６は、データ転送の一例を示す説明図（その８）である。
【図１７】図１７は、データ転送の一例を示す説明図（その９）である。
【図１８】図１８は、データ転送の一例を示す説明図（その１０）である。
【図１９】図１９は、データ転送の一例を示す説明図（その１１）である。
【図２０】図２０は、データ転送の一例を示す説明図（その１２）である。
【図２１】図２１は、データ転送の一例を示す説明図（その１３）である。
【図２２】図２２は、データ転送の一例を示す説明図（その１４）である。
【図２３】図２３は、送信装置１１０によるデータ入力処理の処理手順を示すフローチャートである。
【図２４】図２４は、データ格納処理の詳細な処理手順を示すフローチャートである。
【図２５】図２５は、送信装置１１０によるデータ送信処理の詳細な処理手順を示すフローチャートである。
【図２６】図２６は、データ送信実行処理の詳細な処理手順を示すフローチャートである。
【図２７】図２７は、中継装置１２０によるデータ転送処理の詳細な処理手順を示すフローチャートである。
【図２８】図２８は、データ格納実行処理の詳細な処理手順を示すフローチャートである。
【図２９】図２９は、データ復帰処理の詳細な処理手順を示すフローチャートである。
【図３０】図３０は、受信装置１３０によるデータ受信処理の詳細な処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、この発明にかかる中継装置、中継方法、および中継プログラムの実施の形態を詳細に説明する。中継装置は、送信元から受信したデータを、格納順序を保証（順序性を保証）して、送信先に転送するコンピュータである。ここで、中継装置は、転送するデータを格納する転送バッファの使用量が閾値を超えた場合、閾値を超えた分のデータを退避用ディスクに退避する。また、中継装置は、転送バッファの使用量が閾値より小さくなった場合に、退避用ディスクにデータがあれば、転送バッファに復帰させる。
【００１５】
これにより、中継装置は、転送バッファの使用量を閾値以下に保ち、転送バッファに空き領域を確保することができる。送信元は、中継装置の転送バッファに空き領域が確保されているため、中継装置の送信状況に関わらず、中継装置へのデータ送信を実行することができる。また、中継装置の転送バッファのサイズを増大させなくても、転送バッファの空き領域を確保することができ、中継装置の転送バッファを実現するメモリの物理的サイズを増大させなくてもよいため、メモリの製造コストや運用コストの増大を抑制することができる。
【００１６】
（ストレージシステムにおけるミラーリングの流れを示す説明図）
ここで、図１を用いて、ストレージシステムにおけるミラーリングの流れについて説明する。
【００１７】
図１は、ストレージシステムにおけるミラーリングの流れを示す説明図である。図１において、（Ａ）はストレージシステムを示し、（Ｂ）はストレージシステム内の中継装置１２０によるデータ退避の内容を示し、（Ｃ）はストレージシステム内の中継装置１２０によるデータ復帰の内容を示す。
【００１８】
図１（Ａ）において、ストレージシステムは、送信装置１１０と中継装置１２０と受信装置１３０とを含む。ここで、送信装置１１０と中継装置１２０とは、ネットワークや専用線により接続されている。また、中継装置１２０と受信装置１３０とは、ネットワークや専用線により接続されている。換言すれば、送信装置１１０と中継装置１２０と受信装置１３０とはカスケード接続されている。
【００１９】
送信装置１１０は、ホスト装置からのＷｒｉｔｅＩ／Ｏを受け付けたデータを格納するボリューム１１３と、中継装置１２０に送信するデータを格納する送信バッファ１１１と、を有するコンピュータである。送信装置１１０は、ホスト装置からＷｒｉｔｅＩ／Ｏを受け付けて、ＷｒｉｔｅＩ／Ｏを受け付けたデータを、ボリューム１１３に書き込む。
【００２０】
また、送信装置１１０は、ＷｒｉｔｅＩ／Ｏを受け付けたデータを送信バッファ１１１に格納する。送信装置１１０は、送信バッファ１１１に格納された一定量以内のデータをまとめて中継装置１２０に送信する。ここで、送信装置１１０と中継装置１２０とは、ネゴシエーションにより、送信バッファ１１１と転送バッファ１２１との領域を対応付けた後にデータを送信することにより、送信装置１１０と中継装置１２０とのデータの格納順序を一致させる。ネゴシエーションについては従来技術であるため、ここでは説明を省略する。
【００２１】
中継装置１２０は、送信装置１１０から受信して受信装置１３０に送信するデータを格納する転送バッファ１２１と、転送バッファ１２１のデータの退避先になる退避先ディスクと、を有するコンピュータである。中継装置１２０は、送信装置１１０から受信したデータを転送バッファ１２１に格納し、転送バッファ１２１に格納されたデータを受信装置１３０に送信する。また、中継装置１２０は、転送バッファ１２１の使用量が閾値を超えると、転送バッファ１２１のデータの退避先ディスクへの退避を開始する。
【００２２】
また、中継装置１２０は、退避先ディスクにデータが残存しているときに、転送バッファ１２１に空き領域ができると、退避先ディスクから転送バッファ１２１の空き領域にデータを復帰して、復帰したデータの受信装置１３０に送信する。ここで、中継装置１２０と受信装置１３０とは、ネゴシエーションにより、転送バッファ１２１と受信バッファ１３１との領域を対応付けた後にデータを送信することにより、中継装置１２０と受信装置１３０とのデータの格納順序を一致させる。
【００２３】
受信装置１３０は、中継装置１２０から受信したデータを格納する受信バッファ１３１と、受信バッファ１３１に格納されたデータを格納するボリューム１３３と、を有するコンピュータである。受信装置１３０は、中継装置１２０からデータを受信し、受信したデータを受信バッファ１３１に格納し、受信バッファ１３１に格納したデータをボリューム１３３に格納する。
【００２４】
図１（Ａ）の例では、送信装置１１０は東京に設置され、中継装置１２０は大阪に設置され、受信装置１３０は福岡に設置されているとする。ここで、中継装置１２０と受信装置１３０との間においてデータを送信するためにかかる送信時間は、送信装置１１０と中継装置１２０との間においてデータを送信するためにかかる送信時間より長くなるとする。各装置間の送信時間の違いは、具体的には、例えば、各装置間の距離の違い、各装置間の回線性能の違い、各装置の処理性能の違いなどに起因して発生する。次に、図１（Ｂ）の説明に移行する。
【００２５】
図１（Ｂ）において、送信装置１１０は、ＷｒｉｔｅＩ／Ｏを受け付けたデータｄ１〜ｄ６を、順に、ボリューム１１３に書き込むとともに、送信バッファ１１１に格納する。送信装置１１０は、送信バッファ１１１に一定量のデータが格納されるごとに、送信バッファ１１１に格納された一定量のデータをまとめて、まとめたデータの中継装置１２０への送信を開始する。
【００２６】
図１（Ｂ）の例では、簡単のため、データｄ１〜ｄ６は、各々、一定量のデータであるとする。そのため、データｄ１〜ｄ６は、各々、格納されるごとに、中継装置１２０への送信を開始される。データｄ１〜ｄ６が、各々、一定量に満たないデータである場合、一定量以内でデータをまとめて、まとめたデータごとに、中継装置１２０への送信が開始される。図１（Ｂ）の例では、簡単のため、中継装置１２０は、一定量のデータを一つずつ送信するが、これに限らない。例えば、中継装置１２０は、複数の一定量のデータをまとめて、多重化送信してもよい。
【００２７】
一方、中継装置１２０は、データｄ１〜ｄ６を、順に、送信装置１１０から受信し、転送バッファ１２１に格納する。ここで、上述したように、中継装置１２０から受信装置１３０へのデータの送信時間は、送信装置１１０から中継装置１２０へのデータの送信時間より長い。そのため、中継装置１２０は、受信装置１３０へのデータｄ１の送信を開始した場合、データｄ１の送信が終了する前にデータｄ２〜ｄ６を受信してしまうとする。
【００２８】
ここで、中継装置１２０は、データｄ１〜ｄ６が転送バッファ１２１に格納されるごとに、転送バッファ１２１の使用量が閾値を超えたか否かを判定して、閾値以下であれば、格納されたデータの受信装置１３０への送信を開始する。一方、中継装置１２０は、閾値を超えた場合、格納されたデータを退避用ディスク１２２に退避する。
【００２９】
図１（Ｂ）の例では、閾値は、一定量のデータの４つ分であるとする。中継装置１２０は、転送バッファ１２１にデータｄ１が格納された場合は、転送バッファ１２１の使用量が閾値以下であるため、転送バッファ１２１に格納されたデータｄ１の受信装置１３０への送信を開始する。中継装置１２０は、同様に、転送バッファ１２１にデータｄ２〜ｄ４の各々が格納された場合は、各々のデータの受信装置１３０への送信を開始する。
【００３０】
一方、中継装置１２０は、転送バッファ１２１にデータｄ５が格納された場合は、転送バッファ１２１の使用量が閾値を超えるため、転送バッファ１２１に格納されたデータｄ５を退避用ディスク１２２へ格納する。中継装置１２０は、同様に、転送バッファ１２１にデータｄ６が格納された場合は、データｄ６を退避用ディスク１２２に格納する。
【００３１】
これにより、中継装置１２０は、転送バッファ１２１に空き領域を確保し、転送バッファ１２１の空き領域の枯渇を抑制することができる。送信装置１１０は、中継装置１２０の転送バッファ１２１に空き領域が確保されているため、中継装置１２０の送信状況に関わらず、データを送信し続けることができる。次に、図１（Ｃ）の説明に移行する。
【００３２】
図１（Ｃ）において、中継装置１２０は、データｄ１の受信装置１３０への送信を終了したとする。中継装置１２０は、データｄ１の送信により、転送バッファ１２１に空き領域が増えると、退避用ディスク１２２に退避させていたデータｄ５を転送バッファ１２１に復帰する。そして、中継装置１２０は、データｄ５が受信装置１３０に送信されるように、データｄ５の送信を開始する。
【００３３】
これにより、中継装置は、転送バッファの使用量を閾値以下に保ち、転送バッファに空き領域を確保することができる。また、中継装置１２０は、受信装置１３０に格納順序に従って、ボリューム１３３に格納させることができ、データの格納順序を保証することができる。
【００３４】
ここでは、送信装置１１０と中継装置１２０とは、ネゴシエーションにより、送信装置１１０と中継装置１２０とのデータの格納順序を一致させた。また、中継装置１２０と受信装置１３０とは、同様に、ネゴシエーションにより、中継装置１２０と受信装置１３０とのデータの格納順序を一致させた。
【００３５】
しかしながら、送信装置１１０と中継装置１２０とは、格納順序と一致する送信順序で、データを送信することにより、送信装置１１０と中継装置１２０とのデータの格納順序を一致させてもよい。また、中継装置１２０と受信装置１３０とは、同様に、格納順序と一致する送信順序で、データを送信することにより、中継装置１２０と受信装置１３０とのデータの格納順序を一致させてもよい。
【００３６】
これにより、中継装置１２０は、受信装置１３０に、格納順序と一致する受信順序に従って、データをボリューム１３３に格納させることができ、データの格納順序を保証することができる。
【００３７】
ここでは、中継装置１２０は、単にデータを中継する装置であって、自装置内にデータをミラーリングしない装置であるとしたが、受信装置１３０と同様に、転送バッファ１２１のデータをボリューム１２３に格納してもよい。
【００３８】
ここでは、中継装置１２０は、１台であるが、これに限らない。例えば、中継装置１２０は、複数台あってもよい。例えば、中継装置１２０が２台ある場合、送信装置１１０と１つ目の中継装置１２０とが接続され、１つ目の中継装置１２０と２つ目の中継装置１２０とが接続され、２つ目の中継装置１２０と受信装置１３０とが接続される。
【００３９】
ここでは、送信装置１１０は、１台であるが、これに限らない。例えば、送信装置１１０は、複数台あってもよい。この場合、中継装置１２０は、複数台の送信装置１１０用の複数の転送バッファ１２１を有し、各々の送信装置１１０からデータを受信して、受信装置１３０に送信する。ここでは、受信装置１３０は、１台であるが、これに限らない。例えば、受信装置１３０は、複数台あってもよい。この場合、中継装置１２０は、複数の受信装置１３０の各々に、データを送信する。
【００４０】
ここでは、ホスト装置は、送信装置１１０と接続されているが、これに限らない。例えば、ホスト装置は、送信装置１１０の他に、中継装置１２０および受信装置１３０の少なくともいずれかと接続されていてもよい。
【００４１】
ここでは、送信装置１１０、中継装置１２０、および受信装置１３０は、各々の装置としての機能のみを有したが、これに限らない。例えば、中継装置１２０は、中継装置１２０としての機能の他に、送信装置１１０としての機能および受信装置１３０としての機能のうち、少なくともいずれかを有してもよい。
【００４２】
ここでは、ボリューム１２３、転送バッファ１２１、および退避用ディスク１２２は、各々、異なる記憶装置によって実現されたが、これに限らない。例えば、ボリューム１２３、転送バッファ１２１、および退避用ディスク１２２は、同一の記憶装置内の異なる領域によって実現してもよい。
【００４３】
（コンピュータのハードウェア構成例）
次に、図２を用いて、実施の形態にかかる中継装置１２０として使用されるコンピュータのハードウェア構成例について説明する。また、図２に示すコンピュータは、送信装置１１０および受信装置１３０として使用してもよい。
【００４４】
図２は、コンピュータのハードウェア構成例を示すブロック図である。図２において、コンピュータ２００は、複数のＣＭ（Ｃｏｎｔｒｏｌ  Ｍｏｄｕｌｅ）２１０と、ディスク装置２２０と、を有するＲＡＩＤ装置である。
【００４５】
ＣＭ２１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２１１と、メモリ２１２と、ＣＡ（Ｃｈａｎｎｅｌ  Ａｄａｐｔｅｒ）２１３と、ＲＡ（Ｒｅｍｏｔｅ  Ａｄａｐｔｅｒ）２１４と、ＦＣ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ）２１５と、を有する。
【００４６】
ＣＰＵ２１１は、メモリ２１２に記憶されたプログラムを実行してＣＭ２１０を動作させる。メモリ２１２は、転送プログラムや後述する各種テーブルを記憶する。各種テーブルとしては、コピーセッション管理情報テーブル、バッファ管理情報テーブル、装置管理情報テーブル、バッファ状態管理情報テーブル、バッファ制御管理情報テーブルの５つがある。また、メモリ２１２は、送信バッファ１１１、転送バッファ１２１、または受信バッファ１３１の実現に使用される。
【００４７】
ＣＡ２１３は、ホスト装置２３０とのインターフェースを制御する。ＲＡ２１４は、ネットワーク２４０または専用線を介して接続される外部装置（例えば、送信装置１１０や受信装置１３０）とのインターフェースを制御する。ＦＣ２１５は、ディスク装置２２０とのインターフェースを制御する。
【００４８】
ディスク装置２２０は、ボリューム１２３や退避用ディスク１２２の実現に使用される。ディスク装置２２０は、例えば、１または複数の磁気ディスク装置２２０を含む。
【００４９】
ここでは、中継装置１２０は、３つのＣＭ２１０を含むが、これに限らない。例えば、中継装置１２０は、２つ以下、または、４つ以上のＣＭ２１０を含んでもよい。ＣＭ２１０は、ＣＡ２１３、ＲＡ２１４およびＦＣ２１５を１つずつ含むが、これに限らない。例えば、ＣＭ２１０は、ＣＡ２１３、ＲＡ２１４およびＦＣ２１５のいずれかを２つ以上含んでもよい。
【００５０】
（バッファの内容）
次に、図３を用いて、メモリ２１２により実現されるバッファの内容について説明する。バッファは、具体的には、例えば、送信バッファ１１１、転送バッファ１２１、および受信バッファ１３１として、使用される。
【００５１】
図３は、メモリ２１２により実現されるバッファの内容を示す説明図である。バッファは、ＣＭ２１０ごとに設けられる。図３の例では、バッファは、１つ設けられている。バッファは、所定のサイズを有する複数の領域に分割されている。図３の例では、バッファは、８つの領域に分割されている。
【００５２】
各領域は、データ領域とＢＩＴ領域とを含む。データ領域は、送信元から受信したデータ、または、送信先に送信するデータを一時的に記憶する領域である。ＢＩＴ領域は、データ領域のデータの格納先を特定するＢＩＴ情報を記憶する領域である。
【００５３】
ＢＩＴ情報は、例えば、ＬＵ（Ｌｏｇｉｃａｌ  Ｕｎｉｔ）やＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）、データサイズ、コピーセッション番号などを含む。ＢＩＴ情報は、図５に後述するバッファ管理情報テーブルの各レコードである。
【００５４】
バッファの各領域に格納されたデータとＢＩＴ情報は、まとめて処理される。各領域に格納されたデータとＢＩＴ情報は、例えば、まとめて送信先に送信されたり、まとめて退避用ディスク１２２に退避されたり、まとめて退避用ディスク１２２からバッファに復帰されたりする。
【００５５】
以降、転送バッファ１２１の領域を「バッファセット」と称す。例えば、符号３００の領域が、一つのバッファセットである。また、バッファセットに格納されたデータとＢＩＴ情報とを併せて「バッファセットデータ」と称す。ここでは、バッファセットは、８つであるが、これに限らない。バッファセットは、７つ以下、または、９つ以上であってもよい。
【００５６】
（コピーセッション管理情報テーブルの記憶内容）
次に、図４を用いて、コピーセッション管理情報テーブルの記憶内容の一例について説明する。コピーセッション管理情報テーブルは、具体的には、例えば、メモリ２１２により実現される。
【００５７】
図４は、コピーセッション管理情報テーブルの記憶内容の一例を示す説明図である。コピーセッション管理情報テーブルは、コピーセッション管理情報を記憶するテーブルである。コピーセッション管理情報は、リモートコピーを行う範囲を示す情報である。コピーセッションの対象は、例えば、バッファセットごとのデータであってもよいし、複数のバッファセットのデータであってもよい。
【００５８】
コピーセッション管理情報テーブルは、セッション識別子項目と、セッションステータス項目と、を有する。また、コピーセッション管理情報テーブルは、コピー元ＬＵＮ項目と、コピー先ＬＵＮ項目と、コピー元ＬＢＡ項目と、コピー先ＬＢＡ項目と、コピー対象ＬＢＡ数項目と、コピー状態管理ビットマップ（ＢｉｔＭａｐ）項目と、を有する。
【００５９】
セッション識別子項目には、セッションを示す番号が格納される。セッションステータス項目には、送信中または送信待ち中などのセッションの状態が格納される。コピー元ＬＵＮ項目には、自装置内のボリューム１２３の論理ユニット番号が格納される。コピー先ＬＵＮ項目には、コピー先装置内のボリューム１２３の論理ユニット番号が格納される。
【００６０】
コピー元ＬＢＡ項目には、コピー元ＬＵＮ項目のＬＵＮ内の論理ブロックアドレスが格納される。コピー先ＬＢＡ項目には、コピー先ＬＵＮ項目のＬＵＮ内の論理ブロックアドレスが格納される。各々のＬＵＮと各々のＬＢＡとは、例えば、ホスト装置２３０の利用者がホスト装置２３０に専用コマンドを入力することにより設定される。
【００６１】
コピー状態管理ビットマップ項目には、コピー範囲にあるＬＵＮ、ＬＢＡのコピーが完了したか否かを示すビットフラグを格納する。そのため、あるＬＢＡが未コピー状態のときは対応するビットにオンを設定し、コピー済みであれば対応するビットにオフを設定する。
【００６２】
（バッファ管理情報テーブルの記憶内容）
次に、図５を用いて、バッファ管理情報テーブルの記憶内容の一例について説明する。バッファ管理情報テーブルは、具体的には、例えば、メモリ２１２により実現される。
【００６３】
図５は、バッファ管理情報テーブルの記憶内容の一例を示す説明図である。バッファ管理情報テーブルは、ＢＩＴ情報を記憶するテーブルである。ＢＩＴ情報は、バッファ上に格納されているデータのアドレス情報である。
【００６４】
バッファ管理情報テーブルは、ステータス項目と、コピー元ＬＵＮ項目と、コピー先ＬＵＮ項目と、コピー元ＬＢＡ項目と、コピー先ＬＢＡ項目と、ブロック数項目と、を有する。
【００６５】
ステータス項目には、データの格納状況を示す情報が格納される。格納状況を示す情報とは、例えば、格納済を示す情報や未格納を示す情報である。コピー元ＬＵＮ項目およびコピー元ＬＢＡ項目には、バッファへ格納されたデータのコピー元のアドレス情報が格納される。コピー先ＬＵＮ項目およびコピー先ＬＢＡ項目には、コピー先のアドレス情報が格納される。
【００６６】
（装置管理情報テーブルの記憶内容）
次に、図６を用いて、装置管理情報テーブルの一例について説明する。装置管理情報テーブルは、具体的には、例えば、メモリ２１２により実現される。
【００６７】
図６は、装置管理情報テーブルの記憶内容の一例を示す説明図である。装置管理情報テーブルは、装置管理情報を記憶するテーブルである。装置管理情報は、他の装置との接続関係を示す情報である。
【００６８】
装置管理情報テーブルは、自装置識別子項目と、フラグ項目と、送信元ＩＤ項目と、宛先ＩＤ項目と、を有する。
【００６９】
自装置識別子項目には、自装置の識別情報が格納される。フラグ項目には、自装置についての接続状態を示す情報が格納される。接続状態を示す情報とは、例えば、送信元との接続の有無および送信先との接続の有無を示す情報である。送信元ＩＤ項目には、データの送信元のコンピュータ２００の識別情報が格納される。宛先ＩＤ項目には、データの送信先のコンピュータ２００の識別情報が格納される。
【００７０】
（バッファ制御管理情報テーブルの記憶内容）
次に、図７を用いて、バッファ制御管理情報テーブルの記憶内容の一例について説明する。バッファ制御管理情報テーブルは、具体的には、例えば、メモリ２１２により実現される。
【００７１】
図７は、バッファ制御管理情報テーブルの記憶内容の一例を示す説明図である。バッファ制御管理情報テーブルは、バッファ制御管理情報を記憶するテーブルである。バッファ制御管理情報は、２つのコンピュータ２００の間でのバッファの対応関係を示す情報である。
【００７２】
バッファ制御管理情報により、２つのコンピュータ２００の間（例えば、中継装置１２０と受信装置１３０との間）でのバッファが対応付けられ、各々のコンピュータ２００のバッファから、各々のコンピュータ２００のボリュームへの格納順序が保証される。
【００７３】
バッファ制御管理情報テーブルは、送信元バッファセット識別子項目と、送信先バッファセット識別子項目と、を有する。
【００７４】
送信元バッファセット識別子項目には、送信元になるバッファセットを識別する情報が格納される。送信先バッファセット識別子項目には、送信先になるバッファセットを識別する情報が格納される。
【００７５】
バッファ制御管理情報テーブルは、予め、各コンピュータ２００に格納しておいてもよい。また、バッファ制御管理情報テーブルは、データの送信前に、コンピュータ２００間においてネゴシエーション処理を実行して設定してもよい。
【００７６】
中継装置１２０は、例えば、送信装置１１０と中継装置１２０とに関するバッファ制御管理情報テーブルと、中継装置１２０と受信装置１３０とに関するバッファ制御管理情報テーブルと、の２つのテーブルを有することになる。
【００７７】
（中継装置１２０の機能的構成例）
次に、図８を用いて、中継装置１２０の機能的構成例について説明する。図８は、中継装置１２０の機能的構成例を示すブロック図である。中継装置１２０は、受信部８０１と、送信部８０２と、格納部８０３と、判断部８０４と、を含む構成である。受信部８０１と、送信部８０２と、格納部８０３と、判断部８０４とは、具体的には、例えば、図２に示したメモリ２１２などの記憶装置に記憶されたプログラムをＣＰＵ２１１に実行させることにより、または、ＣＡ２１３やＲＡ２１４により、その機能を実現する。
【００７８】
ここで、中継装置１２０は、送信元から受信したデータ群を送信先に送信する機能を有する。また、中継装置１２０は、送信元から受信したデータ群のうち、いくつかのデータを退避先に退避する機能を有する。また、中継装置１２０は、退避先にデータがある場合、データ群の後続のデータを退避先に退避する機能を有する。
【００７９】
また、中継装置１２０は、退避させたデータを復帰する機能を有する。また、中継装置１２０は、送信元から受信したデータ群をミラーリングする機能を有する。また、中継装置１２０は、送信元に応答を送信する機能を有する。
【００８０】
まず、送信元から受信したデータ群を送信先に送信する機能について説明する。送信先に送信する機能は、具体的には、例えば、第１の記憶部８１１と、受信部８０１と、送信部８０２と、により実現される。
【００８１】
受信部８０１は、送信元からデータ群を受信して、受信したデータ群を第１の記憶部８１１に格納する。ここで、送信元とは、例えば、上述した送信装置１１０、または他の中継装置１２０である。データとは、例えば、バッファセットに格納されたデータである。
【００８２】
第１の記憶部８１１とは、送信先へ送信すべきデータが記憶される第１の記憶領域と退避すべきデータが記憶される第２の記憶領域とを有する記憶装置である。第１の記憶部８１１とは、例えば、上述した転送バッファ１２１である。送信先とは、例えば、上述した受信装置１３０、または、他の中継装置１２０である。
【００８３】
送信すべきデータとは、送信待ちのデータのうち、送信される順番が所定の順番以内のデータである。退避すべきデータとは、送信待ちのデータのうち、送信される順番が所定の順番より遅くなるデータである。第１の記憶領域とは、例えば、複数の所定データ量分の領域であり、上述した複数のバッファセットである。
【００８４】
所定データ量とは、例えば、中継装置１２０の利用者によって設定されたデータ量であってもよいし、中継装置１２０によって決定されたデータ量であってもよい。第２の記憶領域とは、例えば、複数の所定データ量分の領域であり、上述した複数のバッファセットである。
【００８５】
第１の記憶領域とは、第１の記憶部８１１において領域範囲が固定された記憶領域であってもよいし、第１の記憶部８１１において領域範囲が変動する記憶領域であってもよい。第２の記憶領域とは、第１の記憶部８１１において領域範囲が固定された記憶領域であってもよいし、第１の記憶部８１１において領域範囲が変動する記憶領域であってもよい。
【００８６】
受信部８０１は、具体的には、例えば、第１の記憶部８１１に対し、データ群を格納順序に従って第１の記憶領域に格納する。ここで、格納順序とは、送信元における送信元の記憶装置（例えば、送信装置１１０のボリューム１１３）への格納順序と一致する順序である。格納順序とは、送信先における送信先の記憶装置（例えば、受信装置１３０のボリューム１３３）への格納順序とも一致する順序である。
【００８７】
また、格納順序は、第２の記憶部８１２への格納順序にもなる順序である。格納順序は、例えば、送信元とのネゴシエーションにより特定される。また、格納順序は、例えば、送信元からの受信順序により特定されてもよい。
【００８８】
受信部８０１は、より具体的には、例えば、送信装置１１０から、複数のデータを受信する。受信部８０１は、受信したデータを、所定データ量分のデータｄ１にまとめて、ＢＩＴ情報とともに、バッファセットに格納する。
【００８９】
ここで、所定データ量分のデータｄ１〜ｄ４は、転送バッファ１２１の第１の記憶領域に格納されたデータとする。所定データ量分のデータｄ５，ｄ６は、転送バッファ１２１の第１の記憶領域に格納されなかったデータとする。
【００９０】
また、受信部８０１は、バッファセットにデータを格納すると、送信先とのネゴシエーションにより、転送バッファ１２１のバッファセットと、送信先が有するバッファのバッファセットと、を対応付けておく。受信部８０１は、例えば、対応付けたバッファセットを示すデータを、バッファ制御管理情報テーブルに格納しておく。これにより、送信部８０２は、第１の記憶領域に格納されたデータをＢＩＴ情報とともに送信することができる。
【００９１】
送信部８０２は、第１の記憶領域に格納されたデータを送信先に送信する。送信部８０２は、具体的には、例えば、転送バッファ１２１の第１の記憶領域となるバッファセットにデータが格納されるごとに、格納されたデータの送信要求を送信待ちキューに格納する。次に、送信部８０２は、キューの先頭にある送信要求から順にデキューし、デキューした送信要求に従って、送信要求されたデータの受信装置１３０への送信を開始する。
【００９２】
また、送信部８０２は、キューに複数の送信要求がある場合、多重化送信により、送信要求された複数のデータをまとめて、まとめたデータの受信装置１３０への送信を開始してもよい。これにより、送信先は、データを受信することができる。
【００９３】
次に、送信元から受信したデータ群のうち、いくつかのデータを退避先に退避する機能について説明する。退避先に退避する機能は、具体的には、例えば、受信部８０１と、格納部８０３により実現される。
【００９４】
受信部８０１は、データ群のうち第１の記憶領域に格納されなかったデータを第２の記憶領域に格納する。受信部８０１は、具体的には、例えば、転送バッファ１２１の第１の記憶領域となるバッファセットに格納されなかったデータｄ５を、データｄ５に関するＢＩＴ情報とともに、転送バッファ１２１の第２の記憶領域となるバッファセットに格納する。これにより、格納部８０３は、第２の記憶領域となるバッファセットのデータを退避用ディスク１２２に退避することができる。
【００９５】
格納部８０３は、受信部８０１によって第２の記憶領域に記憶されたデータを格納順序に従って第２の記憶部８１２に格納し、第２の記憶領域から消去する。ここで、第２の記憶部８１２は、退避すべきデータの退避先になる記憶領域を有する記憶装置である。第２の記憶部８１２は、具体的には、例えば、上述した退避用ディスク１２２である。
【００９６】
消去とは、第２の記憶領域のうち、消去するデータが記憶された記憶領域を初期化することであってもよいし、消去するデータが記憶された記憶領域に対応する消去フラグをオンに設定することであってもよい。
【００９７】
格納部８０３は、具体的には、例えば、データｄ５を、データｄ５に関するＢＩＴ情報とともに、退避用ディスク１２２に格納して、転送バッファ１２１の第２の記憶領域となるバッファセットから消去する。これにより、格納部８０３は、第１の記憶部８１１に空き領域を作ることができる。
【００９８】
次に、退避先にデータがある場合、データ群の後続のデータを退避先に退避する機能について説明する。データ群の後続のデータを退避先に退避する機能は、具体的には、例えば、受信部８０１と、格納部８０３と、により実現される。
【００９９】
受信部８０１は、格納部８０３によって第２の記憶部８１２に格納されたデータが第２の記憶部８１２に残存する場合、送信元からのデータ群の後続データを第２の記憶領域に格納する。受信部８０１は、具体的には、例えば、データｄ５に続いて、データｄ６を受信する。
【０１００】
ここで、受信部８０１は、退避用ディスク１２２にデータｄ５が格納されている場合、データｄ６を、データｄ６に関するＢＩＴ情報とともに、転送バッファ１２１の第２の記憶領域に格納する。これにより、格納部８０３は、第２の記憶領域となるバッファセットのデータをＢＩＴ情報とともに退避用ディスク１２２に退避することができる。
【０１０１】
格納部８０３は、第２の記憶領域に格納された後続データを格納順序に従って第２の装置に格納し、第２の記憶領域から消去する。格納部８０３は、具体的には、例えば、データｄ６を、データｄ６に関するＢＩＴ情報とともに、退避用ディスク１２２に格納し、転送バッファ１２１の第２の記憶領域となるバッファセットから消去する。これにより、格納部８０３は、第１の記憶部８１１に空き領域を作ることができる。
【０１０２】
次に、退避させたデータを復帰する機能について説明する。退避させたデータを復帰する機能は、具体的には、例えば、格納部８０３と、判断部８０４と、により実現される。
【０１０３】
判断部８０４は、格納部８０３によって第２の記憶部８１２に格納されたデータが第２の記憶部８１２に残存するか否かを判断する。判断部８０４は、具体的には、例えば、退避用ディスク１２２にデータｄ５，ｄ６が残存すると判断する。判断結果は、例えば、上述したメモリ２１２に記憶される。これにより、格納部８０３は、退避用ディスク１２２に退避したデータを、転送バッファ１２１に復帰するトリガを取得することができる。
【０１０４】
また、判断部８０４は、送信先への送信により第１の記憶領域に空き領域が発生したか否かを判断する。判断部８０４は、具体的には、例えば、送信部８０２によって受信装置１３０にデータｄ１がＢＩＴ情報とともに送信された結果、転送バッファ１２１の第１の記憶領域となるバッファセットに空き領域が発生したと判断する。判断結果は、例えば、上述したメモリ２１２に記憶される。これにより、格納部８０３は、退避用ディスク１２２に退避したデータを、転送バッファ１２１に復帰するトリガを取得することができる。
【０１０５】
格納部８０３は、判断部８０４によって第２の記憶部８１２に残存し、かつ、第１の記憶領域に空き領域が発生したと判断された場合、第２の記憶部８１２に格納されたデータを、格納順序に従って空き領域に格納し、第２の記憶部８１２から消去する。
【０１０６】
ここで、退避用ディスク１２２にデータｄ５，ｄ６が残存し、かつ、転送バッファ１２１の第１の記憶領域となるバッファセットに空き領域があるとする。この場合、格納部８０３は、具体的には、例えば、格納順序が最先である退避用ディスク１２２に格納されたデータｄ５を、データｄ５に関するＢＩＴ情報とともに、転送バッファ１２１の第１の記憶領域となるバッファセットの空き領域に格納する。
【０１０７】
次に、格納部８０３は、空き領域に格納したデータｄ５を、データｄ５に関するＢＩＴ情報とともに、退避用ディスク１２２から消去する。これにより、送信部８０２は、復帰したデータを送信先に送信することができる。
【０１０８】
また、格納部８０３は、データｄ５のボリューム１２３への格納が終了し、データｄ５の受信装置１３０への送信が終了した後に、空き領域に格納したデータｄ５を、データｄ５に関するＢＩＴ情報とともに、退避用ディスク１２２から消去してもよい。これにより、中継装置１２０は、データｄ５のボリューム１２３への格納、およびデータｄ５の受信装置１３０への送信が終了する前に、動作異常により転送バッファ１２１からデータｄ５が消去された場合に、再度データｄ５を復帰することができる。
【０１０９】
次に、送信元から受信したデータ群をミラーリングする機能について説明する。送信元から受信したデータ群をミラーリングする機能は、具体的には、例えば、格納部８０３により実現される。
【０１１０】
格納部８０３は、格納順序に従って第３の記憶部８１３に格納する。ここで、第３の記憶部８１３とは、ミラーリングされるデータ群の格納先になる記憶領域を有する記憶装置である。第３の記憶部８１３とは、具体的には、例えば、上述したボリューム１２３である。
【０１１１】
格納部８０３は、具体的には、例えば、格納順序に従って、転送バッファ１２１の第１の記憶領域に記憶されたデータｄ１〜ｄ４を順にボリューム１２３に格納する。ここで、格納部８０３は、ＢＩＴ情報を参照して、データのボリューム１２３での格納場所を特定して格納する。これにより、格納部８０３は、送信元から受信したデータを、中継装置１２０内のボリューム１２３にミラーリングすることができる。
【０１１２】
次に、送信元に応答を送信する機能について説明する。送信元に応答を送信する機能は、具体的には、例えば、送信部８０２により実現される。
【０１１３】
送信部８０２は、第１の記憶領域に記憶されたいずれかのデータが送信され、かつ、いずれかのデータが第３の記憶部８１３に格納された場合、いずれかのデータの処理完了を示す情報を送信元に送信する。送信部８０２は、具体的には、例えば、データｄ１の受信装置１３０への送信が終了し、かつ、データｄ１のボリューム１２３への格納が終了した場合、データｄ１の送信完了および格納完了を示す応答を、送信元に送信する。これにより、送信元は、自装置内のバッファからデータｄ１を、データｄ１に関するＢＩＴ情報とともに、消去して、空き領域を作成することができる。
【０１１４】
また、送信部８０２は、第２の記憶領域から消去された場合、第２の記憶領域に記憶されたデータの消去完了を示す情報を送信元に送信してもよい。ここで、データｄ５が退避用ディスク１２２に退避され、データｄ５が転送バッファ１２１の第２の記憶領域となるバッファセットから消去されたとする。この場合、送信部８０２は、具体的には、例えば、データｄ５の消去完了を示す応答を、送信装置１１０に送信する。これにより、送信元は、自装置内のバッファからデータｄ５を、データｄ５に関するＢＩＴ情報とともに、消去して、空き領域を作成することができる。
【０１１５】
（データ転送の一例）
次に、図９〜図２２を用いて、データ転送の一例について説明する。ここでは、転送バッファ１２１の閾値は、バッファセット５つ分であるとする。また、送信装置１１０、中継装置１２０、および受信装置１３０において、コピーセッションが確立しているものとする。
【０１１６】
図９〜図２２は、データ転送の一例を示す説明図である。図９において、送信装置１１０は、ホスト装置２３０からＷｒｉｔｅＩ／Ｏを受け付ける。次に、送信装置１１０は、ＷｒｉｔｅＩ／Ｏを受け付けるごとに、ＷｒｉｔｅＩ／Ｏを受け付けたデータをボリューム１１３に書き込む。
【０１１７】
また、送信装置１１０は、ＷｒｉｔｅＩ／Ｏを受け付けるごとに、ＷｒｉｔｅＩ／Ｏを受け付けたデータとＷｒｉｔｅＩ／Ｏが示すＢＩＴ情報とを、送信バッファ１１１のバッファセットに格納する。送信装置１１０は、バッファセットに所定データ量分のデータが格納されると、格納先にするバッファセットを切り替える。
【０１１８】
送信装置１１０は、具体的には、例えば、ＷｒｉｔｅＩ／Ｏを受け付けるごとに、格納待ちキューに、ＷｒｉｔｅＩ／Ｏを受け付けたデータの格納要求を格納する。そして、送信装置１１０は、格納待ちキューから、格納要求をデキューし、ＷｒｉｔｅＩ／Ｏを受け付けたデータと、ＷｒｉｔｅＩ／Ｏが示すＢＩＴ情報と、をバッファセットに格納する。
【０１１９】
図９の例では、送信装置１１０は、ホスト装置２３０から、所定データ量分のデータｄ１〜ｄ９のＷｒｉｔｅＩ／Ｏを受け付け、データｄ１〜ｄ９の格納要求を、格納待ちキューに格納する。次に、送信装置１１０は、格納待ちキューの先頭にあるデータｄ１の格納要求をデキューし、送信バッファ１１１のバッファセット１１へのデータｄ１とＢＩＴ情報（ｄ１）とを含むバッファセットデータの格納を開始する。以降、データｄｉを含むバッファセットデータを「バッファセットデータｄ０ｉ」と称す（ｉは自然数）。
【０１２０】
ここでは、送信装置１１０は、一旦データｄ１〜ｄ９をボリューム１１３に格納した後に、データｄ１〜ｄ９に関するバッファセットデータｄ０１〜ｄ０９の送信バッファ１１１への格納を開始したが、これに限らない。例えば、送信装置１１０は、データｄ１〜ｄ９のボリューム１１３への格納と、データｄ１〜ｄ９に関するバッファセットデータｄ０１〜ｄ０９の送信バッファ１１１への格納と、を並列して実行してもよい。
【０１２１】
また、送信装置１１０は、データｄ１〜ｄ９を一つずつ処理せずに、データｄ１〜ｄ９のボリューム１１３への格納を、並列して実行してもよい。この場合、送信装置１１０は、データｄ１〜ｄ９の中に、ボリューム１１３での同一領域に格納すべき複数のデータがあれば、複数のデータについては並列実行せずに先行のデータから順に格納する。ここで、送信装置１１０によるバッファセットデータｄ０１の送信バッファ１１１のバッファセット１１への格納が終了したとして、図１０に移行する。
【０１２２】
図１０において、送信装置１１０は、バッファセットデータｄ０１の送信バッファ１１１への格納が終了したため、格納待ちキューの先頭にあるデータｄ２の格納要求をデキューする。そして、送信装置１１０は、送信バッファ１１１のバッファセット１２へのデータｄ２とＢＩＴ情報（ｄ２）の格納を開始する。
【０１２３】
また、送信装置１１０は、送信バッファ１１１にバッファセットデータが格納されている場合、バッファセットデータの中継装置１２０への送信を開始する。送信装置１１０は、具体的には、例えば、バッファセットデータｄ０１の送信バッファ１１１への格納が終了したため、送信待ちキューに、送信バッファ１１１に格納されたバッファセットデータｄ０１の送信要求を格納する。
【０１２４】
次に、送信装置１１０は、送信待ちキューの先頭にあるバッファセットデータｄ０１の送信要求をデキューし、バッファセットデータｄ０１の中継装置１２０への送信を開始する。ここでは、簡単のため、送信要求を一つずつ処理することにするが、これに限らない。例えば、送信装置１１０は、複数の送信要求をまとめて、多重化送信により、複数の送信要求されたデータを送信してもよい。
【０１２５】
ここで、送信装置１１０と中継装置１２０とは、ネゴシエーションを実行し、バッファセット１１のバッファセットデータの格納先としてバッファセット２１を対応付けて、データ通信を行っている。例えば、バッファセットの対応付けを示すデータは、バッファ制御管理情報テーブルのレコードとして記憶されている。
【０１２６】
以降では、簡単のため、ネゴシエーションによるバッファセットの対応付けについては説明を省略する。また、中継装置１２０は、バッファセットデータｄ０１の受信を開始し、転送バッファ１２１のバッファセット２１へのバッファセットデータｄ０１の格納を開始する。
【０１２７】
ここで、送信装置１１０によるバッファセットデータｄ０１の中継装置１２０への送信およびデータｄ２とＢＩＴ情報（ｄ２）の送信バッファ１１１への格納が終了したとする。また、中継装置１２０によるバッファセットデータｄ０１の転送バッファ１２１への格納が終了したとして、図１１に移行する。
【０１２８】
図１１において、送信装置１１０は、図１０と同様に、送信バッファ１１１のバッファセット１３へのデータｄ３とＢＩＴ情報（ｄ３）の格納を開始する。また、送信装置１１０は、バッファセットデータｄ０２の中継装置１２０への送信を開始する。
【０１２９】
また、中継装置１２０は、バッファセットデータｄ０２の受信を開始し、転送バッファ１２１のバッファセット２２へのバッファセットデータｄ０２の格納を開始する。また、中継装置１２０は、転送バッファ１２１にバッファセットデータｄ０２が格納された場合、バッファセットデータｄ０２を受信装置１３０に送信要求を生成するとともに、ボリューム１２３への格納要求を生成する。
【０１３０】
中継装置１２０は、具体的には、例えば、転送バッファ１２１に格納されたバッファセットデータｄ０１の送信要求を送信待ちキューに格納し、転送バッファ１２１に格納されたバッファセットデータｄ０１の格納要求を格納待ちキューに格納する。
【０１３１】
次に、中継装置１２０は、送信待ちキューの先頭にあるバッファセットデータｄ０１の送信要求をデキューし、バッファセットデータｄ０１の受信装置１３０への送信を開始する。また、中継装置１２０は、格納待ちキューの先頭にあるバッファセットデータｄ０１の格納要求をデキューし、バッファセットデータｄ０１のボリューム１２３への格納を開始する。
【０１３２】
また、受信装置１３０は、バッファセットデータｄ０１の受信を続行し、受信バッファ１３１のバッファセット３１へ、受信した分のバッファセットデータｄ０１を格納する。
【０１３３】
ここで、送信装置１１０によるバッファセットデータｄ０２の中継装置１２０への送信およびデータｄ３とＢＩＴ情報（ｄ３）の送信バッファ１１１への格納が終了したとする。また、中継装置１２０によるバッファセットデータｄ０２の転送バッファ１２１への格納が終了し、かつ、中継装置１２０によるバッファセットデータｄ０１の送信が終了していないとして、図１２に移行する。
【０１３４】
図１２において、送信装置１１０は、図１０と同様に、送信バッファ１１１のバッファセット１４へのデータｄ４とＢＩＴ情報（ｄ４）の格納を開始する。また、送信装置１１０は、バッファセットデータｄ０３の中継装置１２０への送信を開始する。
【０１３５】
また、中継装置１２０は、転送バッファ１２１に格納されたバッファセットデータｄ０２の送信要求を送信待ちキューに格納し、転送バッファ１２１に格納されたバッファセットデータｄ０２の格納要求を格納待ちキューに格納する。
【０１３６】
次に、中継装置１２０は、バッファセットデータｄ０３の受信を開始し、転送バッファ１２１のバッファセット３へのバッファセットデータｄ０３の格納を開始する。
【０１３７】
また、中継装置１２０は、送信が終了していないバッファセットデータｄ０１の送信を続行する。また、受信装置１３０は、バッファセットデータｄ０１の受信を続行し、受信バッファ１３１のバッファセット３１へ、受信した分のバッファセットデータｄ０１を格納する。
【０１３８】
ここで、送信装置１１０によるバッファセットデータｄ０３の中継装置１２０への送信およびデータｄ４とＢＩＴ情報（ｄ４）の送信バッファ１１１への格納が終了したとする。また、中継装置１２０によるバッファセットデータｄ０３の転送バッファ１２１への格納が終了したとする。また、中継装置１２０によるバッファセットデータｄ０１の送信が終了していないとして、図１３に移行する。
【０１３９】
図１３において、送信装置１１０は、図１０と同様に、送信バッファ１１１のバッファセット１５へのデータｄ５とＢＩＴ情報（ｄ５）の格納を開始する。また、送信装置１１０は、バッファセットデータｄ０４の中継装置１２０への送信を開始する。
【０１４０】
また、中継装置１２０は、転送バッファ１２１に格納されたバッファセットデータｄ０３の送信要求を送信待ちキューに格納し、転送バッファ１２１に格納されたバッファセットデータｄ０３の格納要求を格納待ちキューに格納する。
【０１４１】
次に、中継装置１２０は、バッファセットデータｄ０４の受信を開始し、転送バッファ１２１のバッファセット２４へのバッファセットデータｄ０４の格納を開始する。
【０１４２】
また、中継装置１２０は、送信が終了していないバッファセットデータｄ０１の送信を続行する。また、受信装置１３０は、バッファセットデータｄ０１の受信を続行し、受信バッファ１３１のバッファセット３１へ、受信した分のバッファセットデータｄ０１を格納する。
【０１４３】
ここで、送信装置１１０によるバッファセットデータｄ０４の中継装置１２０への送信およびデータｄ５とＢＩＴ情報（ｄ５）の送信バッファ１１１への格納が終了したとする。また、中継装置１２０によるバッファセットデータｄ０４の転送バッファ１２１への格納が終了したとする。また、中継装置１２０によるバッファセットデータｄ０１の送信が終了していないとして、図１４に移行する。
【０１４４】
図１４において、送信装置１１０は、図１０と同様に、送信バッファ１１１のバッファセット１６へのデータｄ６とＢＩＴ情報（ｄ６）の格納を開始する。また、送信装置１１０は、バッファセットデータｄ０５の中継装置１２０への送信を開始する。
【０１４５】
また、中継装置１２０は、転送バッファ１２１に格納されたバッファセットデータｄ０４の送信要求を送信待ちキューに格納し、転送バッファ１２１に格納されたバッファセットデータｄ０４の格納要求を格納待ちキューに格納する。
【０１４６】
次に、中継装置１２０は、バッファセットデータｄ０５の受信を開始し、転送バッファ１２１のバッファセット２５へのバッファセットデータｄ０５の格納を開始する。
【０１４７】
また、中継装置１２０は、送信が終了していないバッファセットデータｄ０１の送信を続行する。また、受信装置１３０は、バッファセットデータｄ０１の受信を続行し、受信バッファ１３１のバッファセット３１へ、受信した分のバッファセットデータｄ０１を格納する。
【０１４８】
ここで、送信装置１１０によるバッファセットデータｄ０５の中継装置１２０への送信およびデータｄ６とＢＩＴ情報（ｄ６）の送信バッファ１１１への格納が終了したとする。また、中継装置１２０によるバッファセットデータｄ０５の転送バッファ１２１への格納が終了したとする。また、中継装置１２０によるバッファセットデータｄ０１の送信が終了していないとして、図１５に移行する。
【０１４９】
図１５において、送信装置１１０は、図１０と同様に、送信バッファ１１１のバッファセット１７へのデータｄ７とＢＩＴ情報（ｄ７）の格納を開始する。また、送信装置１１０は、バッファセットデータｄ０６の中継装置１２０への送信を開始する。
【０１５０】
また、中継装置１２０は、転送バッファ１２１に格納されたバッファセットデータｄ０５の送信要求を送信待ちキューに格納し、転送バッファ１２１に格納されたバッファセットデータｄ０５の格納要求を格納待ちキューに格納する。
【０１５１】
次に、中継装置１２０は、バッファセットデータｄ０６の受信を開始し、転送バッファ１２１のバッファセット２６へのバッファセットデータｄ０６の格納を開始する。
【０１５２】
また、中継装置１２０は、送信が終了していないバッファセットデータｄ０１の送信を続行する。また、受信装置１３０は、バッファセットデータｄ０１の受信を続行し、受信バッファ１３１のバッファセット３１へ、受信した分のバッファセットデータｄ０１を格納する。
【０１５３】
ここで、送信装置１１０によるバッファセットデータｄ０６の中継装置１２０への送信およびデータｄ７とＢＩＴ情報（ｄ７）の送信バッファ１１１への格納が終了したとする。また、中継装置１２０によるバッファセットデータｄ０６の転送バッファ１２１への格納が終了したとする。また、中継装置１２０によるバッファセットデータｄ０１の送信が終了していないとして、図１６に移行する。
【０１５４】
図１６において、送信装置１１０は、図１０と同様に、送信バッファ１１１のバッファセット１８へのデータｄ８とＢＩＴ情報（ｄ８）の格納を開始する。また、送信装置１１０は、バッファセットデータｄ０７の中継装置１２０への送信を開始する。
【０１５５】
また、中継装置１２０は、転送バッファ１２１にバッファセットデータｄ０６が格納されたことにより、転送バッファ１２１の使用量が閾値を超えたことを検出する。次に、中継装置１２０は、転送バッファ１２１に格納されたバッファセットデータｄ０６の退避用ディスク１２２への格納を開始する。これにより、中継装置１２０は、転送バッファ１２１に空き領域を確保することができる。また、中継装置１２０は、バッファセットデータｄ０７の受信を開始し、転送バッファ１２１のバッファセット２７へのバッファセットデータｄ０７の格納を開始する。
【０１５６】
また、中継装置１２０は、送信が終了していないバッファセットデータｄ０１の送信を続行する。また、受信装置１３０は、バッファセットデータｄ０１の受信を続行し、受信バッファ１３１のバッファセット３１へ、受信した分のバッファセットデータｄ０１を格納する。
【０１５７】
ここで、送信装置１１０によるバッファセットデータｄ０７の中継装置１２０への送信およびデータｄ８とＢＩＴ情報（ｄ８）の送信バッファ１１１への格納が終了したとする。また、中継装置１２０によるバッファセットデータｄ０７の転送バッファ１２１への格納およびバッファセットデータｄ０６の退避用ディスク１２２への格納が終了したとする。また、中継装置１２０によるバッファセットデータｄ０１の送信が終了していないとして、図１７に移行する。
【０１５８】
図１７において、送信装置１１０は、図１０と同様に、送信バッファ１１１のバッファセット１６へのデータｄ９とＢＩＴ情報（ｄ９）の格納を開始する。また、送信装置１１０は、バッファセットデータｄ０８の中継装置１２０への送信を開始する。
【０１５９】
また、中継装置１２０は、転送バッファ１２１にバッファセットデータｄ０７が格納されたことにより、転送バッファ１２１の使用量が閾値を超えたことを検出する。次に、中継装置１２０は、転送バッファ１２１に格納されたバッファセットデータｄ０７の退避用ディスク１２２への格納を開始する。また、中継装置１２０は、バッファセットデータｄ０８の受信を開始し、転送バッファ１２１のバッファセット２８へのバッファセットデータｄ０８の格納を開始する。
【０１６０】
また、中継装置１２０は、バッファセットデータｄ０１の送信を終了する。また、受信装置１３０は、バッファセットデータｄ０１の受信を終了し、受信バッファ１３１のバッファセット３１へのバッファセットデータｄ０１の格納を終了する。
【０１６１】
次に、受信装置１３０は、受信バッファ１３１にバッファセットデータが格納されている場合、バッファセットデータのボリューム１３３への格納を開始する。受信装置１３０は、具体的には、例えば、格納待ちキューにバッファセットデータｄ０１の格納要求を格納する。次に、受信装置１３０は、格納待ちキューの先頭にあるバッファセットデータｄ０１の格納要求をデキューし、バッファセットデータｄ０１のボリューム１３３への格納を開始する。
【０１６２】
また、中継装置１２０は、バッファセットデータｄ０６の退避が終了したため、バッファセットデータｄ０６を転送バッファ１２１から消去する。次に、中継装置１２０は、バッファセットデータｄ０６の退避終了を示す応答を送信装置１１０に送信する。また、送信装置１１０は、バッファセットデータｄ０６の退避終了を示す応答を受信したため、送信バッファ１１１からバッファセットデータｄ０６を消去する。
【０１６３】
ここで、送信装置１１０によるバッファセットデータｄ０８の中継装置１２０への送信およびデータｄ９とＢＩＴ情報（ｄ９）の送信バッファ１１１への格納が終了したとする。また、中継装置１２０によるバッファセットデータｄ０８の転送バッファ１２１への格納およびバッファセットデータｄ０７の退避用ディスク１２２への格納が終了したとする。また、受信装置１３０によるバッファセットデータｄ０１のボリューム１３３への格納が終了したとして、図１８に移行する。
【０１６４】
図１８において、送信装置１１０は、バッファセットデータｄ０８の送信を終了し、バッファセットデータｄ０９の中継装置１２０への送信を開始する。
【０１６５】
また、中継装置１２０は、転送バッファ１２１にバッファセットデータｄ０８が格納されたことにより、転送バッファ１２１の使用量が閾値を超えたことを検出する。次に、中継装置１２０は、転送バッファ１２１に格納されたバッファセットデータｄ０８を退避用ディスク１２２に格納する。
【０１６６】
また、中継装置１２０は、バッファセットデータｄ０２の受信装置１３０への送信を開始する。受信装置１３０は、バッファセットデータｄ０２の受信を開始する。また、中継装置１２０は、バッファセットデータｄ０９の受信を開始し、転送バッファ１２１のバッファセット２６へのバッファセットデータｄ０９の格納を開始する。
【０１６７】
また、中継装置１２０は、バッファセットデータｄ０７の退避が終了したため、バッファセットデータｄ０７を転送バッファ１２１から消去する。次に、中継装置１２０は、バッファセットデータｄ０７の退避終了を示す応答を送信装置１１０に送信する。また、送信装置１１０は、バッファセットデータｄ０７の退避終了を示す応答を受信したため、送信バッファ１１１からバッファセットデータｄ０７を消去する。
【０１６８】
ここで、送信装置１１０によるバッファセットデータｄ０９の中継装置１２０への送信が終了したとする。また、中継装置１２０によるバッファセットデータｄ０９の転送バッファ１２１への格納およびバッファセットデータｄ０８の退避用ディスク１２２への格納が終了したとする。また、中継装置１２０によるバッファセットデータｄ０２の送信が終了していないとして、図１９に移行する。
【０１６９】
図１９において、受信装置１３０は、バッファセットデータｄ０１の格納が終了したため、中継装置１２０にバッファセットデータｄ０１の格納終了を示す応答を送信する。中継装置１２０は、受信装置１３０からバッファセットデータｄ０１の格納終了を示す応答を受信すると、受信したことを示す応答を受信装置１３０に送信する。受信装置１３０は、中継装置１２０から応答を受信すると、受信バッファ１３１からバッファセットデータｄ０１を消去する。
【０１７０】
また、中継装置１２０は、受信装置１３０からバッファセットデータｄ０１の格納終了を示す応答を受信したため、バッファセットデータｄ０１の受信装置１３０への送信およびボリューム１２３への格納が終了したと判定する。
【０１７１】
また、中継装置１２０は、転送バッファ１２１にバッファセットデータｄ０９が格納されたことにより、転送バッファ１２１の使用量が閾値を超えたことを検出する。次に、中継装置１２０は、バッファセットデータｄ０９を退避用ディスク１２２に格納する。また、中継装置１２０は、送信が終了していないバッファセットデータｄ０２の送信を続行する。
【０１７２】
また、中継装置１２０は、バッファセットデータｄ０８の退避が終了したため、バッファセットデータｄ０８の退避終了を示す応答を送信装置１１０に送信する。また、送信装置１１０は、バッファセットデータｄ０８の退避終了を示す応答を受信したため、送信バッファ１１１からバッファセットデータｄ０８を消去し、中継装置１２０に応答を送信する。中継装置１２０は、送信装置１１０からの応答を受信すると、バッファセットデータｄ０８を転送バッファ１２１から消去する。
【０１７３】
ここで、中継装置１２０によるバッファセットデータｄ０９の退避用ディスク１２２への格納が終了したとする。また、中継装置１２０によるバッファセットデータｄ０２の送信が終了していないとして、図２０に移行する。
【０１７４】
図２０において、中継装置１２０は、バッファセットデータｄ０１の受信装置１３０への送信およびボリューム１２３への格納が終了したため、バッファセットデータｄ０１の受信装置１３０への送信終了およびボリューム１２３への格納終了を示す応答を送信装置１１０に送信する。
【０１７５】
また、送信装置１１０は、バッファセットデータｄ０１の受信装置１３０への送信終了およびボリューム１２３への格納終了の応答を受信したため、送信バッファ１１１からバッファセットデータｄ０１を消去し、中継装置１２０に消去終了の応答を送信する。
【０１７６】
また、中継装置１２０は、送信装置１１０からの応答を受信すると、格納待ちキューの先頭にあるバッファセットデータｄ０２の格納要求をデキューし、バッファセットデータｄ０２のボリューム１２３への格納を開始する。また、中継装置１２０は、転送バッファ１２１からのバッファセットデータｄ０１の消去を実行する。
【０１７７】
次に、中継装置１２０は、バッファセットデータｄ０１の消去により、転送バッファ１２１に空き領域が生じたため、バッファセットデータｄ０６の転送バッファ１２１への復帰を開始する。また、中継装置１２０は、バッファセットデータｄ０２の送信を続行する。また、受信装置１３０は、バッファセットデータｄ０２の受信を続行する。
【０１７８】
また、中継装置１２０は、バッファセットデータｄ０９の退避が終了したため、バッファセットデータｄ０９の退避終了を示す応答を送信装置１１０に送信する。また、送信装置１１０は、バッファセットデータｄ０９の退避終了を示す応答を受信したため、送信バッファ１１１からバッファセットデータｄ０９を消去する。また、中継装置１２０は、送信装置１１０からバッファセットデータｄ０９の消去の通知を受けると、バッファセットデータｄ０９を転送バッファ１２１から消去する。
【０１７９】
ここで、中継装置１２０によるデータｄ６の転送バッファ１２１への復帰が終了し、かつ、中継装置１２０によるデータｄ２の送信が終了していないとして、図２１に移行する。図２１に示すように、中継装置１２０は、復帰したバッファセットデータｄ０６の受信装置１３０への送信要求を送信待ちキューに格納する。また、中継装置１２０は、復帰したバッファセットデータｄ０６のボリューム１２３への格納要求を格納待ちキューに格納する。
【０１８０】
以降、中継装置１２０は、図９〜図２１と同様にして、バッファセットデータｄ０２〜ｄ０９を、受信装置１３０に送信する。また、中継装置１２０は、データｄ０７〜ｄ０９を復帰した場合、ボリューム１２３への格納を開始する。また、受信装置１３０はバッファセットデータｄ０２〜ｄ０９を受信して、ボリューム１３３への格納を開始する。
【０１８１】
結果として、図２２に示すように、中継装置１２０は、送信装置１１０のボリューム１１３に格納されているバッファセットデータｄ０１〜ｄ０９を、中継装置１２０のボリューム１２３にミラーリングすることができる。また、受信装置１３０は、送信装置１１０のボリューム１１３に格納されているバッファセットデータｄ０１〜ｄ０９を、受信装置１３０のボリューム１３３にミラーリングすることができる。
【０１８２】
これにより、中継装置１２０は、転送バッファ１２１に空き領域を確保しながら、送信装置１１０からバッファセットデータを受信して、受信装置１３０にバッファセットデータを送信することができる。そのため、送信装置１１０は、中継装置１２０へのバッファセットデータの送信を停止せず、バッファセットデータを送信し続けることができる。
【０１８３】
具体的には、例えば、図１９において、中継装置１２０は、バッファセットデータｄ０６を退避させて空き領域を作成しておいたため、バッファセットデータｄ０９を受信することができている。また、中継装置１２０と受信装置１３０とは、送信装置１１０のデータをミラーリングすることができる。
【０１８４】
ここでは、バッファセットデータの受信装置１３０への送信が終了しないことにより、転送バッファ１２１の使用量が閾値を超えた場合を例に挙げたが、これに限らない。例えば、バッファセットデータに含まれるデータのボリューム１２３への格納が終了しないことにより、転送バッファ１２１の使用量が閾値を超える場合が挙げられる。
【０１８５】
ここでは、中継装置１２０は、送信の開始および展開の開始をキューにより実現したが、これに限らない。例えば、送信の開始および展開の開始はポインタにより実現してもよい。ここでは、中継装置１２０は、バッファセットデータを一つずつ送信したが、これに限らない。例えば、中継装置１２０は、バッファセットデータを多重化送信してもよい。
【０１８６】
（送信装置１１０によるデータ入力処理）
次に、図２３を用いて、送信装置１１０によるデータ入力処理の詳細な処理手順について説明する。ここで、装置管理情報テーブルには、カスケード接続であることを示すフラグが設定されている。また、コピーセッションは確立しているとする。データ入力処理は、ホスト装置２３０からのＷｒｉｔｅＩ／Ｏを受け付けるごとに実行される。
【０１８７】
図２３は、送信装置１１０によるデータ入力処理の処理手順を示すフローチャートである。図２３において、まず、送信装置１１０は、ホスト装置２３０からデータのＷｒｉｔｅＩ／Ｏの入力を受け付けたか否かを判定する（ステップＳ２３０１）。ここで、入力を受け付けていない場合（ステップＳ２３０１：Ｎｏ）、送信装置１１０は、ステップＳ２３０１に戻り、データの入力を待つ。
【０１８８】
一方、入力を受け付けた場合（ステップＳ２３０１：Ｙｅｓ）、送信装置１１０は、送信バッファ１１１へのデータ格納処理を実行開始する（ステップＳ２３０２）。次に、送信装置１１０は、データ格納の終了応答をホスト装置２３０に送信する（ステップＳ２３０３）。
【０１８９】
ここで、送信装置１１０は、ステップＳ２３０２のデータ格納処理が実行終了する前に、ステップＳ２３０３の処理を実行してもよい。これにより、ホスト装置２３０への応答を高速化できる。そして、送信装置１１０は、データ入力処理を終了する。これにより、送信装置１１０は、中継装置１２０へのデータ送信の準備を実行することができる。
【０１９０】
（データ格納処理）
次に、図２４を用いて、ステップＳ２３０２に示したデータ格納処理の詳細な処理手順について説明する。
【０１９１】
図２４は、データ格納処理の詳細な処理手順を示すフローチャートである。図２４において、送信装置１１０は、格納先にするバッファセットに格納可能か否かを判定する（ステップＳ２４０１）。格納可能とは、格納先のバッファセットにＷｒｉｔｅＩ／Ｏを受け付けたデータを格納するための空き領域があることである。
【０１９２】
ここで、格納可能でない場合（ステップＳ２４０１：Ｎｏ）、送信装置１１０は、格納先にするバッファセットを切り替えて（ステップＳ２４０３）、ステップＳ２４０４に移行する。
【０１９３】
一方、格納可能である場合（ステップＳ２４０１：Ｙｅｓ）、送信装置１１０は、前回のバッファセット切替から一定時間が経過したか否かを判定する（ステップＳ２４０２）。ここで、経過している場合（ステップＳ２４０２：Ｙｅｓ）、送信装置１１０は、格納先にするバッファセットを切り替えて（ステップＳ２４０３）、ステップＳ２４０４に移行する。
【０１９４】
一方、経過していない場合（ステップＳ２４０２：Ｎｏ）、送信装置１１０は、ステップＳ２４０４に移行する。次に、送信装置１１０は、格納先にするバッファセットにデータを格納する（ステップＳ２４０４）。
【０１９５】
そして、送信装置１１０は、ＢＩＴ情報を更新する（ステップＳ２４０５）。送信装置１１０は、具体的には、例えば、バッファ管理情報テーブルに、ＷｒｉｔｅＩ／Ｏを受け付けたデータについてのコピー元ＬＵＮ、コピー元ＬＢＡ、コピー先ＬＵＮ、およびコピー先ＬＢＡを格納する。また、送信装置１１０は、バッファ管理情報テーブルのステータス項目に未格納状態を示す情報を設定する。次に、送信装置１１０は、データ格納処理を終了する。これにより、送信装置１１０は、バッファセットへ格納されたデータを送信することができる。
【０１９６】
（送信装置１１０によるデータ送信処理）
次に、図２５を用いて、送信装置１１０によるデータ送信処理の詳細な処理手順について説明する。データ送信処理は、データ格納処理によりバッファセットにデータが格納完了されるごとに実行される。
【０１９７】
図２５は、送信装置１１０によるデータ送信処理の詳細な処理手順を示すフローチャートである。図２５において、まず、送信装置１１０は、中継装置１２０へのバッファセットデータの送信要求を送信待ちキューに格納する（ステップＳ２５０１）。
【０１９８】
そして、送信装置１１０は、データの格納と送信とが終了したことを示す応答を受信したか否かを判定する（ステップＳ２５０２）。ここで、応答を受信していない場合（ステップＳ２５０２：Ｎｏ）、送信装置１１０は、ステップＳ２５０２に戻り、応答の受信を待つ。
【０１９９】
一方、応答を受信した場合（ステップＳ２５０２：Ｙｅｓ）、送信装置１１０は、送信バッファ１１１を解放する（ステップＳ２５０３）。送信装置１１０は、具体的には、例えば、送信バッファ１１１から、応答を受信したバッファセットデータを消去する。
【０２００】
また、送信装置１１０は、コピー状態管理ビットマップから転送完了したバッファセットデータに対応するビットをクリアする。次に、送信装置１１０は、データ送信処理を終了する。これにより、送信装置１１０は、中継装置１２０にバッファセットデータを送信することができる。
【０２０１】
（データ送信実行処理）
次に、図２６を用いて、データ送信実行処理の詳細な処理手順について説明する。データ送信実行処理は、例えば、一定時間ごとに実行され、送信待ちキューを参照してデータ送信を行う。
【０２０２】
図２６は、データ送信実行処理の詳細な処理手順を示すフローチャートである。図２６において、送信装置１１０は、送信待ちキューを参照し、送信待ちのバッファセットデータがあるか否かを判定する（ステップＳ２６０１）。ここで、送信待ちのバッファセットデータがない場合（ステップＳ２６０１：Ｎｏ）、送信装置１１０は、データ送信実行処理を終了する。
【０２０３】
一方、送信待ちのバッファセットデータがある場合（ステップＳ２６０１：Ｙｅｓ）、送信装置１１０は、送信待ちキューの先頭の送信要求をデキューし、デキューした送信要求の対象になるバッファセットデータを送信先に送信する（ステップＳ２６０２）。送信装置１１０は、具体的には、例えば、バッファ制御管理情報テーブル、バッファ管理情報テーブルを中継装置１２０に送信し、中継装置１２０に受信用のバッファセットを確保させる。次に、送信装置１１０は、バッファセットに格納された送信要求の対象になるバッファセットデータを一括して中継装置１２０に送信する。
【０２０４】
また、送信装置１１０は、送信待ちのバッファセットデータを一つずつ処理せずに、通信帯域に合わせて多重化送信を行い、複数のバッファセットデータをまとめて送信することにしてもよい。
【０２０５】
次に、送信装置１１０は、応答を受信したか否かを判定する（ステップＳ２６０３）。ここで、受信していない場合（ステップＳ２６０３：Ｎｏ）、送信装置１１０は、ステップＳ２６０３に戻り、応答の受信を待つ。一方、受信した場合（ステップＳ２６０３：Ｙｅｓ）、送信装置１１０は、ステップＳ２６０１に戻る。これにより、送信装置１１０は、バッファセットデータを中継装置１２０に送信することができる。
【０２０６】
（中継装置１２０によるデータ転送処理）
次に、図２７を用いて、中継装置１２０によるデータ転送処理の詳細な処理手順について説明する。
【０２０７】
図２７は、中継装置１２０によるデータ転送処理の詳細な処理手順を示すフローチャートである。図２７において、まず、中継装置１２０は、バッファセットデータを受信したか否かを判定する（ステップＳ２７０１）。ここで、バッファセットデータを受信していない場合（ステップＳ２７０１：Ｎｏ）、中継装置１２０は、ステップＳ２７０１に戻り、バッファセットデータの受信を待つ。
【０２０８】
一方、バッファセットデータを受信した場合（ステップＳ２７０１：Ｙｅｓ）、中継装置１２０は、転送バッファ１２１への格納を実行する（ステップＳ２７０２）。次に、中継装置１２０は、転送バッファ１２１に格納したバッファセットデータを退避するか否かを判定する（ステップＳ２７０３）。中継装置１２０は、具体的には、例えば、転送バッファ１２１の使用量が閾値以上の場合、または、退避用ディスク１２２にバッファセットデータが残存している場合、バッファセットデータを退避すると判定する。
【０２０９】
ここで、退避する場合（ステップＳ２７０３：Ｙｅｓ）、中継装置１２０は、転送バッファ１２１に格納されたバッファセットデータを退避用ディスク１２２に退避し、転送バッファ１２１から消去して（ステップＳ２７０４）、ステップＳ２７０８に移行する。
【０２１０】
一方、退避しない場合（ステップＳ２７０３：Ｎｏ）、中継装置１２０は、転送バッファ１２１に格納されたバッファセットデータに含まれるデータのボリューム１２３への格納要求を格納待ちキューに格納する（ステップＳ２７０５）。次に、中継装置１２０は、転送バッファ１２１に格納されたバッファセットデータに含まれるデータの受信装置１３０への送信要求を送信待ちキューに格納する（ステップＳ２７０６）。
【０２１１】
そして、中継装置１２０は、データの格納と送信とが終了したか否かを判定する（ステップＳ２７０７）。ここで、終了していない場合（ステップＳ２７０７：Ｎｏ）、中継装置１２０は、ステップＳ２７０７に戻り、終了を待つ。
【０２１２】
一方、終了した場合（ステップＳ２７０７：Ｙｅｓ）、中継装置１２０は、送信装置１１０に終了応答を送信する（ステップＳ２７０８）。次に、中継装置１２０は、送信装置１１０からの応答を受信すると、格納と送信とが終了したバッファセットデータを転送バッファ１２１から消去する（ステップＳ２７０９）。中継装置１２０は、具体的には、例えば、コピー状態管理ビットマップから消去するバッファセットデータに対応するビットをクリアする。
【０２１３】
そして、中継装置１２０は、データ復帰処理を実行する（ステップＳ２７１０）。これにより、中継装置１２０は、転送バッファ１２１の空き領域を確保しつつ、バッファセットデータを受信装置１３０に送信することができる。
【０２１４】
また、中継装置１２０は、データ送信実行処理を実行する。中継装置１２０により実行されるデータ送信実行処理は、図２６に示した送信装置１１０により実行されるデータ送信実行処理と同様の処理のため、ここでは、説明を省略する。これにより、中継装置１２０は、受信装置１３０にバッファセットデータを送信することができる。
【０２１５】
（データ格納実行処理）
次に、図２８を用いて、データ格納実行処理の詳細な処理手順について説明する。
【０２１６】
図２８は、データ格納実行処理の詳細な処理手順を示すフローチャートである。図２８において、中継装置１２０は、格納待ちキューを参照し、格納待ちのデータがあるか否かを判定する（ステップＳ２８０１）。ここで、格納待ちのデータがない場合（ステップＳ２８０１：Ｎｏ）、中継装置１２０は、データ格納実行処理を終了する。
【０２１７】
一方、格納待ちのデータがある場合（ステップＳ２８０１：Ｙｅｓ）、中継装置１２０は、格納待ちキューの先頭の格納要求をデキューし、デキューした格納要求の対象になるデータを、ボリューム１２３に格納する（ステップＳ２８０２）。
【０２１８】
次に、中継装置１２０は、格納が終了したか否かを判定する（ステップＳ２８０３）。ここで、格納が終了していない場合（ステップＳ２８０３：Ｎｏ）、中継装置１２０は、ステップＳ２８０３に戻り、格納の終了を待つ。一方、格納が終了した場合（ステップＳ２８０３：Ｙｅｓ）、中継装置１２０は、ステップＳ２８０１に戻る。これにより、中継装置１２０は、送信装置１１０のデータをボリューム１２３にミラーリングすることができる。
【０２１９】
（データ復帰処理）
次に、図２９を用いて、データ復帰処理の詳細な処理手順について説明する。
【０２２０】
図２９は、データ復帰処理の詳細な処理手順を示すフローチャートである。図２９において、中継装置１２０は、退避用ディスク１２２にバッファセットデータがあるか否かを判定する（ステップＳ２９０１）。ここで、バッファセットデータがない場合（ステップＳ２９０１：Ｎｏ）、中継装置１２０は、データ復帰処理を終了する。
【０２２１】
一方、バッファセットデータがある場合（ステップＳ２９０１：Ｙｅｓ）、中継装置１２０は、退避用ディスク１２２にあるバッファセットデータのうち先頭のバッファセットデータを、転送バッファ１２１のバッファセットに格納する（ステップＳ２９０２）。
【０２２２】
次に、中継装置１２０は、転送バッファ１２１に格納したバッファセットデータの送信要求を送信待ちキューに格納し、格納要求を格納待ちキューに格納する（ステップＳ２９０３）。そして、中継装置１２０は、データ復帰処理を終了する。これにより、中継装置１２０は、バッファセットデータを復帰して、復帰したバッファセットデータを送信することができる。
【０２２３】
（受信装置１３０によるデータ受信処理）
次に、図３０を用いて、受信装置１３０によるデータ受信処理の詳細な処理手順について説明する。
【０２２４】
図３０は、受信装置１３０によるデータ受信処理の詳細な処理手順を示すフローチャートである。図３０において、まず、受信装置１３０は、バッファセットデータを受信したか否かを判定する（ステップＳ３００１）。ここで、受信していない場合（ステップＳ３００１：Ｎｏ）、受信装置１３０は、ステップＳ３００１に戻り、バッファセットデータの受信を待つ。
【０２２５】
一方、受信した場合（ステップＳ３００１：Ｙｅｓ）、受信装置１３０は、受信したバッファセットデータの受信バッファ１３１への格納を実行する（ステップＳ３００２）。次に、受信装置１３０は、受信バッファ１３１に格納したバッファセットデータに含まれるデータのボリューム１３３への格納要求を格納待ちキューに格納する（ステップＳ３００３）。
【０２２６】
そして、受信装置１３０は、格納が終了したか否かを判定する（ステップＳ３００４）。ここで、終了していない場合（ステップＳ３００４：Ｎｏ）、受信装置１３０は、ステップＳ３００４に戻り、終了を待つ。
【０２２７】
一方、終了した場合（ステップＳ３００４：Ｙｅｓ）、受信装置１３０は、格納終了の応答を中継装置１２０に送信する（ステップＳ３００５）。次に、受信装置１３０は、中継装置１２０からの応答を受信すると、格納終了したバッファセットデータを受信バッファ１３１から消去する（ステップＳ３００６）。そして、受信装置１３０は、データ受信処理を終了する。これにより、受信装置１３０は、中継装置１２０からバッファセットデータを受信することができる。
【０２２８】
また、受信装置１３０は、データ格納実行処理を実行する。受信装置１３０により実行されるデータ格納処理は、図２８に示した中継装置１２０により実行されるデータ格納実行処理と同様の処理のため、ここでは、説明を省略する。これにより、受信装置１３０は、送信装置１１０のデータを、ボリューム１３３にミラーリングすることができる。
【０２２９】
以上説明したように、中継装置１２０は、格納順序が保証されるように、転送バッファ１２１のバッファセットデータを退避用ディスク１２２に退避し、退避用ディスク１２２のバッファセットデータを転送バッファ１２１に復帰する。
【０２３０】
これにより、中継装置１２０は、格納順序を保証したデータ転送を実現することができ、かつ、転送バッファ１２１に空き領域を確保しておくことができる。結果として、送信装置１１０は、中継装置１２０の転送状況に関わらず、中継装置１２０へのデータ送信を停止しなくてもよい。従って、中継装置１２０におけるデータの受信遅延が抑制される。また、中継装置の転送バッファのサイズを増大させなくても、転送バッファの空き領域を確保することができ、中継装置の転送バッファを実現するメモリの物理的サイズを増大させなくてもよいため、メモリの製造コストや運用コストの増大を抑制することができる。
【０２３１】
中継装置１２０は、転送バッファ１２１のバッファセットデータに含まれるデータを、中継装置１２０内のボリューム１２３に格納する。これにより、中継装置１２０は、送信装置１１０のデータをミラーリングすることができる。結果として、送信装置１１０は、送信装置１１０において誤ってデータを消去した場合などに、中継装置１２０のデータを使用して、送信装置１１０のデータを復旧することができる。
【０２３２】
中継装置１２０は、送信装置１１０に、受信装置１３０へのバッファセットデータ送信とボリューム１２３へのデータ格納とが終了したことを示す終了通知を送信する。これにより、送信装置１１０は、終了応答に対応する送信バッファ１１１のバッファセットデータを消去して、空き領域を作成することができる。
【０２３３】
中継装置１２０は、送信装置１１０に、退避用ディスク１２２への退避が終了したことを示す終了通知を送信する。これにより、送信装置１１０は、送信バッファ１１１のバッファセットデータを消去して、空き領域を作成することができる。
【０２３４】
なお、本実施の形態で説明した中継方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本中継プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本中継プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２３５】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２３６】
（付記１）送信元からのデータ群を送信先に送信する中継装置であって、
前記送信先へ送信すべきデータが記憶される第１の記憶領域と退避すべきデータが記憶される第２の記憶領域とを有する第１の記憶部に対し、前記データ群を格納順序に従って前記第１の記憶領域に格納し、前記データ群のうち前記第１の記憶領域に格納されなかったデータを前記第２の記憶領域に格納する受信部と、
前記受信部によって前記第２の記憶領域に記憶されたデータを前記格納順序に従って第２の記憶部に格納し、前記第２の記憶領域から消去する第１の格納部と、
前記第１の格納部によって前記第２の記憶部に格納されたデータが前記第２の記憶部に残存するか否かを判断する第１の判断部と、
前記送信先への送信により前記第１の記憶領域に空き領域が発生したか否かを判断する第２の判断部と、
前記第１の判断部によって前記第２の記憶部に残存し、かつ、前記第２の判断部によって前記記憶領域に空き領域が発生したと判断された場合、前記第２の記憶部に格納されたデータを、前記格納順序に従って前記空き領域に格納し、前記第２の記憶部から消去する第２の格納部と、
を有することを特徴とする中継装置。
【０２３７】
（付記２）前記受信部は、
前記第１の格納部によって前記第２の記憶部に格納されたデータが前記第２の記憶部に残存する場合、前記送信元からの前記データ群の後続データを前記第２の記憶領域に格納することを特徴とする付記１に記載の中継装置。
【０２３８】
（付記３）前記第１の記憶領域に記憶された各データを、前記格納順序に従って第３の記憶部に格納する第３の格納部を有することを特徴とする付記１または２に記載の中継装置。
【０２３９】
（付記４）前記第１の記憶領域に記憶されたいずれかのデータが送信され、かつ、前記いずれかのデータが前記第３の記憶部に格納された場合、前記いずれかのデータの処理完了を示す情報を前記送信元に送信する送信部を有することを特徴とする付記３に記載の中継装置。
【０２４０】
（付記５）前記第２の記憶領域から消去された場合、前記第２の記憶領域に記憶されたデータの消去完了を示す情報を前記送信元に送信する送信部を有することを特徴とする付記１〜３のいずれか一つに記載の中継装置。
【０２４１】
（付記６）送信元からのデータ群を送信先に送信する中継装置が、
前記送信先へ送信すべきデータが記憶される第１の記憶領域と退避すべきデータが記憶される第２の記憶領域とを有する第１の記憶部に対し、前記データ群を格納順序に従って前記第１の記憶領域に格納し、前記データ群のうち前記第１の記憶領域に格納されなかったデータを前記第２の記憶領域に格納し、
前記第２の記憶領域に記憶されたデータを前記格納順序に従って第２の記憶部に格納し、前記第２の記憶領域から消去し、
前記第２の記憶部に格納されたデータが前記第２の記憶部に残存するか否かを判断し、
前記送信先への送信により前記第１の記憶領域に空き領域が発生したか否かを判断し、
前記第２の記憶部に残存し、かつ、前記記憶領域に空き領域が発生したと判断された場合、前記第２の記憶部に格納されたデータを、前記格納順序に従って前記空き領域に格納し、前記第２の記憶部から消去する、
処理を実行することを特徴とする中継方法。
【０２４２】
（付記７）送信元からのデータ群を送信先に送信する中継装置に、
前記送信先へ送信すべきデータが記憶される第１の記憶領域と退避すべきデータが記憶される第２の記憶領域とを有する第１の記憶部に対し、前記データ群を格納順序に従って前記第１の記憶領域に格納し、前記データ群のうち前記第１の記憶領域に格納されなかったデータを前記第２の記憶領域に格納し、
前記第２の記憶領域に記憶されたデータを前記格納順序に従って第２の記憶部に格納し、前記第２の記憶領域から消去し、
前記第２の記憶部に格納されたデータが前記第２の記憶部に残存するか否かを判断し、
前記送信先への送信により前記第１の記憶領域に空き領域が発生したか否かを判断し、
前記第２の記憶部に残存し、かつ、前記記憶領域に空き領域が発生したと判断された場合、前記第２の記憶部に格納されたデータを、前記格納順序に従って前記空き領域に格納し、前記第２の記憶部から消去する、
処理を実行させることを特徴とする中継プログラム。
【符号の説明】
【０２４３】
１１０  送信装置
１２０  中継装置
１２１  転送バッファ
１２２  退避用ディスク
１２３  ボリューム
１３０  受信装置
２００  コンピュータ
８０１  受信部
８０２  送信部
８０３  格納部
８０４  判断部
【図１】
2014010624.tif 000003
【図２】
2014010624.tif 000004
【図３】
2014010624.tif 000005
【図４】
2014010624.tif 000006
【図５】
2014010624.tif 000007
【図６】
2014010624.tif 000008
【図７】
2014010624.tif 000009
【図８】
2014010624.tif 000010
【図９】
2014010624.tif 000011
【図１０】
2014010624.tif 000012
【図１１】
2014010624.tif 000013
【図１２】
2014010624.tif 000014
【図１３】
2014010624.tif 000015
【図１４】
2014010624.tif 000016
【図１５】
2014010624.tif 000017
【図１６】
2014010624.tif 000018
【図１７】
2014010624.tif 000019
【図１８】
2014010624.tif 000020
【図１９】
2014010624.tif 000021
【図２０】
2014010624.tif 000022
【図２１】
2014010624.tif 000023
【図２２】
2014010624.tif 000024
【図２３】
2014010624.tif 000025
【図２４】
2014010624.tif 000026
【図２５】
2014010624.tif 000027
【図２６】
2014010624.tif 000028
【図２７】
2014010624.tif 000029
【図２８】
2014010624.tif 000030
【図２９】
2014010624.tif 000031
【図３０】
2014010624.tif 000032