(57)【特許請求の範囲】
【請求項１】
第１の記憶装置および第２の記憶装置とネットワークを介して接続されたコンピュータに、
前記コンピュータに接続されたホスト装置から、または、前記コンピュータが有する入力装置への入力操作によって、前記第１の記憶装置に対する第１のデータの書込要求を受け付け、前記第１のデータを前記コンピュータが有する第３の記憶装置に書き込み、
前記第１のデータの書込要求以前の書込要求により前記第３の記憶装置に書き込まれた一連のデータの書込順序に基づいて、データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択して当該受信したデータを上書き保存する前記第２の記憶装置が有する前記記憶領域の個数以下である所定数前に書き込まれた、前記一連のデータのうちのいずれかのデータを、前記第１の記憶装置への書込対象となる第２のデータに決定し、
決定した前記第２のデータが前記第１の記憶装置に書き込まれた場合、前記第３の記憶装置に書き込まれた前記第１のデータの複写データを前記第２の記憶装置に送信する、
処理を実行させることを特徴とする書込制御プログラム。
【請求項２】
前記決定する処理は、
前記一連のデータの中から書込順序が遅い順に選ばれた前記記憶領域の個数分のデータのうち書込順序が最も早いデータを前記第２のデータに決定する、
ことを特徴とする請求項１に記載の書込制御プログラム。
【請求項３】
前記コンピュータは、前記一連のデータのそれぞれが前記第１の記憶装置に書き込み済みか否かを表す書込状況を記憶するテーブルを有し、
前記コンピュータに、
前記ホスト装置から、または、前記入力装置への入力操作によって、前記一連のデータのうちの前記第１の記憶装置に書き込まれていない第３のデータの前記第１の記憶装置に対する書込指示を受け付け、
前記第３のデータが前記第１の記憶装置に書き込まれた場合、前記テーブル内の前記第３のデータの書込状況を書き込み済みに変更する、
処理を実行させることを特徴とする請求項１または２に記載の書込制御プログラム。
【請求項４】
前記コンピュータに、
前記テーブル内の前記第２のデータの書込状況を参照して、前記第２のデータが前記第１の記憶装置に書き込み済みか否かを判定し、
前記第２のデータが前記第１の記憶装置に書き込み済みではないと判定された場合、前記第２のデータを前記第１の記憶装置に書き込む、処理を実行させ、
前記第１のデータを書き込む処理は、
前記第２のデータが前記第１の記憶装置に書き込まれた場合、前記コンピュータ内の前記第２のデータが書き込まれている記憶領域に、前記第１のデータを書き込む、
ことを特徴とする請求項３に記載の書込制御プログラム。
【請求項５】
前記第１のデータを書き込む処理は、
前記第２のデータが前記第１の記憶装置に書き込み済みと判定された場合、前記コンピュータ内の前記第２のデータが書き込まれている記憶領域に、前記第１のデータを書き込み、
前記送信する処理は、
前記第２のデータが前記第１の記憶装置に書き込み済みと判定された場合、前記第１のデータの複写データを前記第２の記憶装置に送信することを特徴とする請求項４に記載の書込制御プログラム。
【請求項６】
前記決定する処理は、
前記書込要求を受け付けるごとに前記コンピュータ内の１番目からＮ番目（Ｎ：１以上の自然数）までの記憶領域の中から順番に選択される記憶領域に書き込まれたデータを、前記第２のデータに決定し、
前記送信する処理は、
決定した前記第２のデータが前記第１の記憶装置に書き込まれた場合、データを受信した場合に１番目からＭ番目（Ｍ：Ｎ以上の自然数）までの記憶領域の中から書込先にする記憶領域を順番に選択して当該受信したデータを上書き保存する前記第２の記憶装置に、前記第１のデータの複写データを送信することを特徴とする請求項１〜５のいずれか一つに記載の書込制御プログラム。
【請求項７】
第１の記憶装置および第２の記憶装置とネットワークを介して接続されたコンピュータが、
前記コンピュータに接続されたホスト装置から、または、前記コンピュータが有する入力装置への入力操作によって、前記第１の記憶装置に対する第１のデータの書込要求を受け付け、前記第１のデータを前記コンピュータが有する第３の記憶装置に書き込み、
前記第１のデータの書込要求以前の書込要求により前記第３の記憶装置に書き込まれた一連のデータの書込順序に基づいて、データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択して当該受信したデータを上書き保存する前記第２の記憶装置が有する前記記憶領域の個数以下である所定数前に書き込まれた、前記一連のデータのうちのいずれかのデータを、前記第１の記憶装置への書込対象となる第２のデータに決定し、
決定した前記第２のデータが前記第１の記憶装置に書き込まれた場合、前記第３の記憶装置に書き込まれた前記第１のデータの複写データを前記第２の記憶装置に送信する、
処理を実行することを特徴とする書込制御方法。
【請求項８】
第１の記憶装置および第２の記憶装置とネットワークを介して接続された書込制御装置であって、
前記書込制御装置に接続されたホスト装置から、または、前記書込制御装置が有する入力装置への入力操作によって、前記第１の記憶装置に対する第１のデータの書込要求を受け付け、前記第１のデータを前記書込制御装置が有する第３の記憶装置に書き込む受付手段と、
前記第１のデータの書込要求以前の書込要求により前記第３の記憶装置に書き込まれた一連のデータの書込順序に基づいて、データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択して当該受信したデータを上書き保存する前記第２の記憶装置が有する前記記憶領域の個数以下である所定数前に書き込まれた、前記一連のデータのうちのいずれかのデータを、前記第１の記憶装置への書込対象となる第２のデータに決定する決定手段と、
決定された前記第２のデータが前記第１の記憶装置に書き込まれた場合、前記第３の記憶装置に書き込まれた前記第１のデータの複写データを前記第２の記憶装置に送信する送信手段と、
を備えることを特徴とする書込制御装置。
【請求項９】
第１の記憶装置と、第２の記憶装置と、前記第１の記憶装置および前記第２の記憶装置とネットワークを介して接続された書込制御装置とを含むシステムであって、
前記第２の記憶装置は、
データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択する選択手段と、
選択された前記記憶領域に当該受信したデータを書き込む書込手段と、を備え、
前記書込制御装置は、
前記書込制御装置に接続されたホスト装置から、または、前記書込制御装置が有する入力装置への入力操作によって、前記第１の記憶装置に対する第１のデータの書込要求を受け付け、前記第１のデータを前記書込制御装置が有する第３の記憶装置に書き込む受付手段と、
前記第１のデータの書込要求以前の書込要求により前記第３の記憶装置に書き込まれた一連のデータの書込順序に基づいて、前記一連のデータのうち、前記第２の記憶装置が有する前記記憶領域の個数以下である所定数前に書き込まれたデータを、前記第１の記憶装置への書込対象となる第２のデータに決定する決定手段と、
決定された前記第２のデータが前記第１の記憶装置に書き込まれた場合、前記第３の記憶装置に書き込まれた前記第１のデータの複写データを前記第２の記憶装置に送信する送信手段と、
を備えることを特徴とするシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書込制御プログラム、書込制御方法、書込制御装置およびシステムに関する。
【背景技術】
【０００２】
従来、ストレージシステムにおいて、ストレージ装置は、ディスクに対するデータの書込要求を受け付けた場合、ディスクへの書き込みに先立って、データをメモリに一旦書き込み、その後に書込要求に対する応答を行うことで応答性能の向上を図っている。このため、ディスクへの実際の書き込みは、メモリへの書き込みの後に行われることになる。
【０００３】
ところが、ディスクへの書き込みが行われるまでの間、データはメモリ上にしかなく、この間にメモリに異常が発生した場合、データが失われてしまう危険性がある。このため、メモリ上にしかないデータを２重化して管理するバックアップ装置を別途用意することが行われている。
【０００４】
具体的には、ストレージ装置は、メモリに保持されているデータのバックアップデータをバックアップ装置に送信することにより、データのバックアップを行う。バックアップ装置は、バックアップデータがメモリに蓄積されつづけると空き領域が不足するため、ストレージ装置からのバックアップデータの削除要求に応じて該バックアップデータが書き込まれている記憶領域を解放する。
【０００５】
関連する先行技術として、ディスクへの書き込みを行うコントローラを２重化し、各々のコントローラが有するキャッシュを互いに２重化する技術がある（例えば、下記特許文献１参照）。また、キャッシュを２重化したときに、一方のキャッシュにデータを書き込んで書込要求に対する応答を行い、その後に他方のキャッシュにデータを書き込む技術がある（例えば、下記特許文献２参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平９−１４６８４２号公報
【特許文献２】特開２００５−４４０１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来技術では、ストレージ装置からバックアップ装置にバックアップデータの削除要求を送信することにより、ストレージ装置とバックアップ装置との間の通信量の増大化を招くという問題がある。
【０００８】
一側面では、本発明は、通信量を抑制することができる書込制御プログラム、書込制御方法、書込制御装置およびシステムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一側面によれば、第１の記憶装置に対する第１のデータの書込要求を受け付け、第１のデータの書込要求以前の書込要求によりコンピュータに書き込まれた一連のデータの書込順序と、データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択して当該受信したデータを上書き保存する第２の記憶装置が有する記憶領域の個数とに基づいて、一連のデータのうち、第２の記憶装置において次に選択される記憶領域に記憶されているデータと同一のデータを、第１の記憶装置への書込対象となる第２のデータに決定し、決定した第２のデータが第１の記憶装置に書き込まれた場合、第１のデータの複写データを第２の記憶装置に送信する書込制御プログラム、書込制御方法および書込制御装置が提案される。
【００１０】
また、本発明の一側面によれば、第１の記憶装置にアクセス可能な書込制御装置と第２の記憶装置とが通信するシステムであって、第２の記憶装置は、データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択し、選択した記憶領域に当該受信したデータを書き込み、書込制御装置は、第１の記憶装置に対する第１のデータの書込要求を受け付け、第１のデータの書込要求以前の書込要求により書込制御装置に書き込まれた一連のデータの書込順序と、第２の記憶装置が有する記憶領域の個数とに基づいて、一連のデータのうち、第２の記憶装置において次に選択される記憶領域に記憶されているデータと同一のデータを、第１の記憶装置への書込対象となる第２のデータに決定し、決定した第２のデータが第１の記憶装置に書き込まれた場合、第１のデータの複写データを第２の記憶装置に送信するシステムが提案される。
【発明の効果】
【００１１】
本発明の一態様によれば、通信量を抑制することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態にかかる書込制御方法の一実施例を示す説明図（その１）である。
【図２】図２は、実施の形態にかかる書込制御方法の一実施例を示す説明図（その２）である。
【図３】図３は、実施の形態にかかるストレージシステムのシステム構成例を示す説明図である。
【図４】図４は、実施の形態にかかる書込制御装置１１０のハードウェア構成例を示すブロック図である。
【図５】図５は、実施の形態にかかるバックアップ装置１２０のハードウェア構成例を示すブロック図である。
【図６】図６は、チェックテーブル１１２の記憶内容の一例を示す説明図である。
【図７】図７は、アドレステーブル７００の記憶内容の一例を示す説明図である。
【図８】図８は、実施の形態にかかる書込制御装置１１０の機能的構成を示すブロック図である。
【図９】図９は、書込制御装置１１０によるディスク装置１４０へのデータの書込制御処理の内容を示す説明図（その１）である。
【図１０】図１０は、書込制御装置１１０によるディスク装置１４０へのデータの書込制御処理の内容を示す説明図（その２）である。
【図１１】図１１は、書込制御装置１１０によるディスク装置１４０へのデータの書込制御処理の内容を示す説明図（その３）である。
【図１２】図１２は、書込制御装置１１０によるディスク装置１４０へのデータの書込制御処理の内容を示す説明図（その４）である。
【図１３】図１３は、書込制御装置１１０によるディスク装置１４０へのデータの書込制御処理の内容を示す説明図（その５）である。
【図１４】図１４は、書込制御装置１１０によるディスク装置１４０へのデータの書込制御処理の内容を示す説明図（その６）である。
【図１５】図１５は、実施の形態にかかる書込制御装置１１０のチェックテーブル作成処理手順の一例を示すフローチャートである。
【図１６】図１６は、実施の形態にかかる書込制御装置１１０の第１の書込制御処理手順の一例を示すフローチャート（その１）である。
【図１７】図１７は、実施の形態にかかる書込制御装置１１０の第１の書込制御処理手順の一例を示すフローチャート（その２）である。
【図１８】図１８は、実施の形態にかかる書込制御装置１１０の第２の書込制御処理手順の一例を示すフローチャート（その１）である。
【図１９】図１９は、実施の形態にかかる書込制御装置１１０の第２の書込制御処理手順の一例を示すフローチャート（その２）である。
【図２０】図２０は、実施の形態にかかるバックアップ装置１２０の起動処理手順の一例を示すフローチャートである。
【図２１】図２１は、実施の形態にかかるバックアップ装置１２０の複写データ書込処理手順の一例を示すフローチャートである。
【図２２】図２２は、実施の形態にかかるバックアップ装置１２０の複写データ送信処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照して、この発明にかかる書込制御プログラム、書込制御方法、書込制御装置およびシステムの実施の形態を詳細に説明する。
【００１４】
（書込制御方法の一実施例）
まず、図１および図２を用いて、実施の形態にかかる書込制御方法の一実施例について説明する。
【００１５】
図１は、実施の形態にかかる書込制御方法の一実施例を示す説明図（その１）である。図１において、書込制御装置１１０は、ディスク装置１４０にアクセス可能であり、ディスク装置１４０に対するデータの書込要求を、ホスト装置１３０から受け付けるコンピュータである。ホスト装置１３０は、ディスク装置１４０に対するデータの書込要求を書込制御装置１１０に送信するコンピュータである。
【００１６】
書込制御装置１１０は、ホスト装置１３０からディスク装置１４０に対するデータの書込要求を受け付けると、ディスク装置１４０への書き込みに先立って、キャッシュメモリ１１１にデータを書き込んで、書込要求に対する応答をホスト装置１３０に送信する。これにより、ホスト装置１３０からのデータの書込要求に対する応答性能を向上させることができる。
【００１７】
また、書込制御装置１１０は、チェックテーブル１１２を有する。チェックテーブル１１２には、キャッシュメモリ１１１に含まれる１番目からＮ番目（Ｎ：１以上の自然数）までの記憶領域のアドレスが記憶されている。図１の例では、１番目から２番目までの記憶領域のアドレスが記憶されている（Ｎ＝２）。
【００１８】
書込制御装置１１０は、チェックテーブル１１２を参照して、キャッシュメモリ１１１に含まれる１番目からＮ番目までの記憶領域の中から、ディスク装置１４０に対する書込要求を受け付けたデータの書込先となるｉ番目（ｉ＝１，２，…，Ｎ）の記憶領域を順番に選択する。また、書込制御装置１１０は、Ｎ番目の記憶領域の次は１番目の記憶領域を選択することにより、１番目からＮ番目までの記憶領域を周期的に選択する。
【００１９】
選択される記憶領域は、例えば、チェックテーブル１１２のｉ番目のレコードを指定するチェックポインタＰ１から特定することができる。チェックポインタＰ１が指定するレコードの番号「ｉ」は、例えば、書込要求を受け付けたデータがキャッシュメモリ１１１に書き込まれるごとにインクリメントされる。
【００２０】
ただし、番号「ｉ」がインクリメントされた結果、番号「ｉ」が「ｉ＝Ｎ＋１」になった場合、書込制御装置１１０が、チェックポインタＰ１が指定するレコードの番号「ｉ」を「ｉ＝１」とする。図１の例では、番号「ｉ」が「ｉ＝３」になった場合、チェックポインタＰ１が指定するレコードの番号「ｉ」が「ｉ＝１」となる。
【００２１】
このように、書込制御装置１１０は、チェックポインタＰ１が指定するレコードに設定されているアドレスの記憶領域を選択することで、キャッシュメモリ１１１内の１番目からＮ番目までの記憶領域を順番に選択することができる。図１の例では、キャッシュメモリ１１１内の１番目から２番目までの記憶領域を順番に選択することができる。
【００２２】
また、書込制御装置１１０は、選択したｉ番目のレコードに設定されているアドレスの記憶領域に書き込まれているデータをディスク装置１４０に書き込む。また、書込制御装置１１０は、書込要求を受け付けたデータの複写データを、バックアップ装置１２０に送信する。複写データは、書込要求を受け付けたデータを複写したものである。
【００２３】
バックアップ装置１２０は、書込制御装置１１０から複写データを受信するコンピュータである。また、バックアップ装置１２０は、受信した複写データの書込先となるバックアップメモリ１２１を有する。バックアップメモリ１２１は、１番目からＭ番目（Ｍ：Ｎ以上の自然数）までの記憶領域を含む。図１の例では、バックアップメモリ１２１は、１番目から３番目までの記憶領域１２２〜１２４を含んでいる。
【００２４】
また、バックアップ装置１２０は、バックアップメモリ１２１に含まれる１番目からＭ番目までの記憶領域の中から、複写データの書込先にするｊ番目（ｊ＝１，２，…，Ｍ）の記憶領域を順番に選択する。また、バックアップ装置１２０は、Ｍ番目の記憶領域の次は１番目の記憶領域を選択することにより、１番目からＭ番目までの記憶領域を周期的に選択する。
【００２５】
選択される記憶領域は、例えば、ｊ番目の記憶領域を指定する書込先ポインタＰ２から特定することができる。書込先ポインタＰ２が指定する記憶領域の番号「ｊ」は、例えば、複写データがバックアップメモリ１２１に書き込まれるごとにインクリメントされる。
【００２６】
ただし、番号「ｊ」がインクリメントされた結果、番号「ｊ」が「ｊ＝Ｍ＋１」になった場合、バックアップ装置１２０が、書込先ポインタＰ２が指定する記憶領域の番号「ｊ」を「ｊ＝１」とする。図２の例では、番号「ｊ」が「ｊ＝４」になった場合、書込先ポインタＰ２が指定するレコードの番号「ｊ」が「ｊ＝１」となる。
【００２７】
このように、書込制御装置１１０は、チェックポインタＰ１が指定するレコードに設定されているアドレスの記憶領域を選択することで、キャッシュメモリ１１１内の１番目からＮ番目までの記憶領域を順番に選択することができる。図１の例では、キャッシュメモリ１１１内の１番目から２番目までの記憶領域を順番に選択することができる。
【００２８】
また、書込制御装置１１０は、選択したｉ番目のレコードに設定されているアドレスの記憶領域に書き込まれているデータをディスク装置１４０に書き込む。また、書込制御装置１１０は、書込要求を受け付けたデータの複写データを、バックアップ装置１２０に送信する。複写データは、書込要求を受け付けたデータを複写したものである。
【００２９】
バックアップ装置１２０は、書込制御装置１１０から複写データを受信するコンピュータである。また、バックアップ装置１２０は、受信した複写データの書込先となるバックアップメモリ１２１を有する。バックアップメモリ１２１は、１番目からＭ番目（Ｍ：Ｎ以上の自然数）までの記憶領域を含む。図１の例では、バックアップメモリ１２１は、１番目から３番目までの記憶領域１２２〜１２４を含んでいる。
【００３０】
また、バックアップ装置１２０は、バックアップメモリ１２１に含まれる１番目からＭ番目（ｊ＝１，２，…，Ｍ）までの記憶領域の中から、複写データの書込先にするｊ番目の記憶領域を順番に選択する。また、バックアップ装置１２０は、Ｍ番目の記憶領域の次は１番目の記憶領域を選択することにより、１番目からＭ番目までの記憶領域を周期的に選択する。
【００３１】
選択される記憶領域は、例えば、ｊ番目の記憶領域を指定する書込先ポインタＰ２から特定することができる。書込先ポインタＰ２が指定する記憶領域の番号「ｊ」は、例えば、複写データがバックアップメモリ１２１に書き込まれるごとにインクリメントされる。
【００３２】
ただし、番号「ｊ」がインクリメントされた結果、番号「ｊ」が「ｊ＝Ｍ＋１」になった場合、バックアップ装置１２０が、書込先ポインタＰ２が指定する記憶領域の番号「ｊ」を「ｊ＝１」とする。図２の例では、番号「ｊ」が「ｊ＝４」になった場合、書込先ポインタＰ２が指定するレコードの番号「ｊ」が「ｊ＝１」となる。
【００３３】
このように、バックアップ装置１２０は、書込先ポインタＰ２が指定する記憶領域を選択することで、バックアップメモリ１２１内の１番目からＭ番目までの記憶領域を順番に選択することができる。図２の例では、バックアップメモリ１２１内の１番目から３番目までの記憶領域１２２〜１２４を順番に選択することができる。また、バックアップ装置１２０は、選択したｊ番目の記憶領域に複写データを書き込む。
【００３４】
図１の例では、書込制御装置１１０において、ホスト装置１３０から書込要求を受け付けたデータＡおよびデータＢがキャッシュメモリ１１１に書き込まれている。この結果、チェックポインタＰ１は、チェックテーブル１１２の１番目のレコードを指定している。また、バックアップ装置において、データＡの複写データＡ’がバックアップメモリ１２１の記憶領域１２２に、データＢの複写データＢ’がバックアップメモリ１２１の記憶領域１２３に書き込まれている。この結果、書込先ポインタＰ２は、バックアップメモリ１２１内の３番目の記憶領域を指定している。
【００３５】
以下、書込制御装置１１０が、データＣの書込要求を受け付けた場合、および、データＤの書込要求を受け付けた場合について説明する。
【００３６】
（１）書込制御装置１１０は、ディスク装置１４０に対するデータＣの書込要求をホスト装置１３０から受け付ける。
【００３７】
（２）書込制御装置１１０は、データＣの書込要求を受け付けると、チェックポインタＰ１の指定する１番目のレコードに設定されているアドレス「ａｄｄ＿Ａ」の記憶領域に書き込まれているデータＡを、ディスク装置１４０に書き込む。
【００３８】
（３）書込制御装置１１０は、データＡをディスク装置１４０に書き込むと、データＣをキャッシュメモリ１１１に書き込む。具体的には、例えば、書込制御装置１１０が、キャッシュメモリ１１１内の空き領域にデータＣを書き込む。
【００３９】
（４）書込制御装置１１０は、チェックポインタＰ１の指定する１番目のレコードに設定されているアドレス「ａｄｄ＿Ａ」をデータＣが書き込まれたアドレス「ａｄｄ＿Ｃ」に変更し、チェックポインタＰ１の指定するレコードを２番目のレコードに変更する。
【００４０】
（５）書込制御装置１１０は、データＣの複写データＣ’をバックアップ装置１２０に送信する。
【００４１】
（６）バックアップ装置１２０は、複写データＣ’を受信すると、複写データＣ’を書込先ポインタＰ２が指定する３番目の記憶領域１２４に書き込み、書込先ポインタＰ２の指定する記憶領域を１番目の記憶領域１２２に戻す。
【００４２】
（７）書込制御装置１１０は、ディスク装置１４０に対するデータＤの書込要求を受け付ける。
【００４３】
（８）書込制御装置１１０は、データＤの書込要求を受け付けると、チェックポインタＰ１の指定する２番目のレコードに設定されているアドレス「ａｄｄ＿Ｂ」の記憶領域に書き込まれているデータＢを、ディスク装置１４０に書き込む。
【００４４】
（９）書込制御装置１１０は、データＢをディスク装置１４０に書き込むと、データＤをキャッシュメモリ１１１に書き込む。具体的には、例えば、書込制御装置１１０が、キャッシュメモリ１１１内の空き領域にデータＤを書き込む。
【００４５】
（１０）書込制御装置１１０は、チェックポインタＰ１の指定する２番目のレコードに設定されているアドレス「ａｄｄ＿Ｂ」をデータＤが書き込まれたアドレス「ａｄｄ＿Ｄ」に変更し、チェックポインタＰ１の指定するレコードを１番目のレコードに戻す。
【００４６】
（１１）書込制御装置１１０は、データＤの複写データＤ’をバックアップ装置１２０に送信する。
【００４７】
（１２）バックアップ装置１２０は、複写データＤ’を受信すると、複写データＤ’を書込先ポインタＰ２が指定する１番目の記憶領域１２２に書き込み、書込先ポインタＰ２の指定する記憶領域を２番目の記憶領域１２３に変更する。
【００４８】
このとき、バックアップ装置１２０において、複写データＤ’により複写データＡ’が上書きされるが、複写データＡ’の複写元であるデータＡは、既にディスク装置１４０に書き込まれておりバックアップ不要のデータになっている。
【００４９】
このように、バックアップ装置１２０がＭ個の記憶領域から書込先となる記憶領域を順番にかつ周期的に選択して複写データを書き込むことで、１周期前に書き込まれた複写データが新たな複写データで上書きされることになる。また、書込制御装置１１０は、Ｍ個以下のＮ個の記憶領域から読出先となる記憶領域を順番にかつ周期的に選択して、読み出したデータをディスク装置１４０に書き込む。
【００５０】
なお、書込制御装置１１０の都合により、任意の時に以降でバックアップ装置１２０で上書きされる複写データの複写元であるデータをディスク装置１４０に書き込むことにしてよい。例えば、データＡをディスク装置１４０に書き込むときに一緒にデータＢを書き込んだ方が都合がよければデータＡとデータＢを一緒に書き込んで、チェックテーブル１１２のデータＢの書き込み状況を済みに変更しておく。
【００５１】
そのため、バックアップ装置１２０で複写データが上書きされる前に、書込制御装置１１０で複写元のデータがディスク装置１４０に書き込まれるようにすることができる。そして、バックアップ装置１２０において、書込制御装置１１０から送信された新たな複写データで、既に複写元のデータがディスク装置１４０に書き込まれ不要となった複写データが上書きされるようにすることができる。
【００５２】
これにより、書込制御装置１１０は、データのバックアップが不要になったときに、複写データの削除要求などをバックアップ装置１２０に送信する処理が不要となる。結果として、書込制御装置１１０は、書込制御装置１１０での処理量を抑制するとともに、バックアップ装置１２０との通信量を抑制することができる。
【００５３】
また、書込制御装置１１０は、バックアップ装置１２０でバックアップが不要になった複写データが新たな複写データによって上書きされるようにすることで、バックアップメモリ１２１内で複写データの書込先として使用される記憶領域のサイズを抑制することができる。また、書込制御装置１１０によりキャッシュメモリ１１１のデータがディスク装置１４０に書き込まれるまで、該当データの複写データはバックアップ装置１２０において上書きせずに保存させておくことができる。
【００５４】
なお、上述した説明では、チェックポインタＰ１の指定するレコードの番号を、レコードの更新ごとにインクリメントすることにしたが、これに限らない。例えば、ホスト装置１３０からデータの書込要求を受け付けるごとに、チェックポインタＰ１の指定するレコードの番号がインクリメントされることにしてもよい。
【００５５】
また、上述した説明では、書込要求を受け付けたデータをキャッシュメモリ１１１の空き領域に書き込むことにしたが、これに限らない。例えば、１番目からＮ番目までの記憶領域のアドレスを固定して、固定されたアドレスの記憶領域にデータが上書きされるようにしてもよい。これにより、書込制御装置１１０は、キャッシュメモリ１１１の記憶領域を効率よく使用することができる。
【００５６】
次に、書込制御装置１１０が書込順序テーブル２００を用いて書込制御処理を実行する場合について説明する。なお、図１で説明した箇所と同様の箇所についての説明は省略する。
【００５７】
図２は、実施の形態にかかる書込制御方法の一実施例を示す説明図（その２）である。図２において、書込制御装置１１０は、キャッシュメモリ１１１に書き込まれたデータの書込順序を記憶する書込順序テーブル２００を有する。
【００５８】
書込制御装置１１０は、複写データの書込先となるバックアップ装置１２０が有する記憶領域の個数Ｍと書込順序テーブル２００を参照して、バックアップ装置１２０で次に上書きされる複写データの複写元のデータを特定する。具体的には、例えば、書込制御装置１１０は、バックアップ装置１２０で次に上書きされる複写データの複写元のデータとして、キャッシュメモリ１１１にＭ回前に書き込まれたデータを特定する。
【００５９】
また、書込制御装置１１０は、特定したデータをディスク装置１４０に書き込むべきデータに決定する。そして、書込制御装置１１０は、決定したデータをディスク装置１４０に書き込む。また、書込制御装置１１０は、書込要求を受け付けたデータの複写データを、バックアップ装置１２０に送信する。
【００６０】
図１の例では、書込制御装置１１０において、ホスト装置１３０から書込要求を受け付けたデータＡおよびデータＢがキャッシュメモリ１１１に書き込まれている。また、バックアップ装置において、データＡの複写データＡ’がバックアップメモリ１２１の記憶領域１２２に、データＢの複写データＢ’がバックアップメモリ１２１の記憶領域１２３に書き込まれている。この結果、書込先ポインタＰ２は、バックアップメモリ１２１内の３番目の記憶領域を指定している。
【００６１】
以下、書込制御装置１１０が、データＣの書込要求を受け付けた場合、および、データＤの書込要求を受け付けた場合について説明する。
【００６２】
（１）書込制御装置１１０は、ディスク装置１４０に対するデータＣの書込要求をホスト装置１３０から受け付ける。
【００６３】
書込制御装置１１０は、ディスク装置１４０に対するデータＣの書込要求を受け付けると、バックアップ装置１２０が有する記憶領域の個数「３」および書込順序テーブル２００を参照して、ディスク装置１４０に書き込むべきデータを決定する。
【００６４】
具体的には、書込制御装置１１０は、次にバックアップ装置１２０で上書きされる複写データの複写元である書込順序が３回前のデータを、バックアップ装置１２０での複写データの上書きより前にディスク装置１４０に書き込むべきであるとして、ディスク装置１４０へ書き込むデータに決定する。ここでは、書込制御装置１１０は、書込順序が３回前のデータが存在しないため、ディスク装置１４０にデータを書き込まない。
【００６５】
（２）書込制御装置１１０は、書込順序が３回前のデータが存在しない場合、データＣをキャッシュメモリ１１１に書き込む。具体的には、例えば、書込制御装置１１０が、キャッシュメモリ１１１内の空き領域にデータＣを書き込む。
【００６６】
（３）書込制御装置１１０は、データＣを書き込んだキャッシュメモリ１１１のアドレス「Ａｄｄ＿Ｃ」とキャッシュメモリ１１１への書き込みが３回目であることを示す書込順序「３」とを対応付けたレコードを書込順序テーブル２００に追加する。
【００６７】
（４）書込制御装置１１０は、データＣの複写データＣ’をバックアップ装置１２０に送信する。
【００６８】
（５）バックアップ装置１２０は、複写データＣ’を受信すると、受信した複写データＣ’を書込先ポインタＰ２が指定する３番目の記憶領域１２４に書き込み、書込先ポインタＰ２の指定する記憶領域を１番目の記憶領域１２２に戻す。
【００６９】
（６）書込制御装置１１０は、ディスク装置１４０に対するデータＤの書込要求を受け付ける。
【００７０】
（７）書込制御装置１１０は、ディスク装置１４０に対するデータＤの書込要求を受け付けると、バックアップ装置１２０が有する記憶領域の個数「３」および書込順序テーブル２００を参照して、ディスク装置１４０に書き込むべきデータを決定する。ここでは、書込制御装置１１０は、決定した書込順序が３回前のデータＡをディスク装置１４０に書き込む。
【００７１】
（８）書込制御装置１１０は、データＡをディスク装置１４０に書き込むと、データＤをキャッシュメモリ１１１に書き込む。具体的には、例えば、書込制御装置１１０が、キャッシュメモリ１１１内の空き領域にデータＤを書き込む。
【００７２】
（９）書込制御装置１１０は、データＤを書き込んだキャッシュメモリ１１１のアドレス「Ａｄｄ＿Ｄ」とキャッシュメモリ１１１への書き込みが４回目であることを示す書込順序「４」とを対応付けたレコードを書込順序テーブル２００に追加する。
【００７３】
（１０）書込制御装置１１０は、データＤの複写データＤ’をバックアップ装置１２０に送信する。
【００７４】
（１１）バックアップ装置１２０は、複写データＤ’を受信すると、受信した複写データＤ’を書込先ポインタＰ２が指定する１番目の記憶領域１２２に書き込み、書込先ポインタＰ２の指定する記憶領域を２番目の記憶領域１２３に変更する。
【００７５】
このとき、バックアップ装置１２０において、複写データＤ’により複写データＡ’は上書きされるが、複写データＡ’の複写元であるデータＡは既にディスク装置１４０に書き込まれており、バックアップ不要のデータになっている。
【００７６】
このように、書込制御装置１１０は、バックアップ装置１２０で次に上書きされる複写データの複写元のデータを特定して、ディスク装置１４０に書き込むデータに決定することができる。そのため、書込制御装置１１０は、バックアップ装置１２０において複写データが上書きされる前に、複写元のデータをディスク装置１４０に書き込むことができるようになる。そして、バックアップ装置１２０において、書込制御装置１１０から送信された新たな複写データで、既に複写元のデータがディスク装置１４０に書き込まれ不要となった複写データが上書きされる。
【００７７】
これにより、書込制御装置１１０は、データのバックアップが不要になったときに、複写データの削除要求などを送信する処理が不要となる。結果として、書込制御装置１１０は、書込制御装置１１０での処理量を抑制するとともに、バックアップ装置１２０との通信量を抑制することができる。
【００７８】
また、書込制御装置１１０は、バックアップ装置１２０で、バックアップが不要になった複写データを、新たな複写データで上書きするようにすることで、複写データの書込先として使用される記憶領域のサイズを抑制することができる。
【００７９】
なお、上述した説明では、次にバックアップ装置１２０で上書きされる複写データの複写元であるデータが存在しない場合、ディスク装置１４０にデータを書き込まないことにしたが、これに限らない。例えば、次にバックアップ装置１２０で上書きされる複写データの複写元であるデータが存在しない場合、以降でバックアップ装置１２０で上書きされる複写データの複写元であるデータをディスク装置１４０に書き込むことにしてもよい。また、例えば、次にバックアップ装置１２０で上書きされる複写データの複写元であるデータが書き込み済みである場合、以降でバックアップ装置１２０で上書きされる複写データの複写元であるデータをディスク装置１４０に書き込んでもよい。
【００８０】
また、書込制御装置１１０の都合により、任意の時に以降でバックアップ装置１２０で上書きされる複写データの複写元であるデータをディスク装置１４０に書き込むことにしてよい。例えば、データＡをディスク装置１４０に書き込むときに一緒にデータＢを書き込んだ方が都合がよければデータＡとデータＢを一緒に書き込んで、書込順序テーブル２００のデータＢの書き込み状況を済みに変更しておく。
【００８１】
（ストレージシステム３００のシステム構成例）
図３は、実施の形態にかかるストレージシステムのシステム構成例を示す説明図である。図３において、ストレージシステム３００は、書込制御装置１１０と、バックアップ装置１２０と、ホスト装置１３０と、ディスク装置１４０と、を含む。
【００８２】
ストレージシステム３００において、書込制御装置１１０、バックアップ装置１２０およびホスト装置１３０は、有線または無線のネットワーク３１０を介して相互に通信可能に接続されている。ネットワーク３１０は、例えば、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などである。
【００８３】
また、ディスク装置１４０には、データを冗長化して耐障害性を向上させるために、複数の磁気ディスク３２０（図面では、３個）を組み合わせて一つの磁気ディスクとして運用するＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）の技術が適用されてもよい。
【００８４】
（書込制御装置１１０のハードウェア構成例）
図４は、実施の形態にかかる書込制御装置１１０のハードウェア構成例を示すブロック図である。図４において、書込制御装置１１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）４０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０３と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）４０４と、ＲＡＩＤコントローラ４０５と、ディスク装置１４０と、入力装置４０６と、出力装置４０７と、を備えている。また、各構成部はバス４００によってそれぞれ接続されている。
【００８５】
ここで、ＣＰＵ４０１は、書込制御装置１１０の全体の制御を司る。ＲＯＭ４０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ４０３は、ＣＰＵ４０１のワークエリアとして使用される。ＲＡＭ４０３は、キャッシュメモリ１１１を含んでもよい。
【００８６】
Ｉ／Ｆ４０４は、ネットワーク３１０に接続され、このネットワーク３１０を介して他の装置に接続される。そして、Ｉ／Ｆ４０４は、ネットワーク３１０と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ４０４には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００８７】
ＲＡＩＤコントローラ４０５は、複数の磁気ディスク３２０を含むディスク装置１４０に対するデータの書き込み、および、データの読み出しを制御するコントローラである。磁気ディスク３２０は、ＲＡＩＤコントローラ４０５の制御で書き込まれたデータを記憶する。また、ＲＡＩＤコントローラ４０５は、ＲＡＩＤコントローラ４０５により実行されるプログラムを記憶したメモリ４１５を有する。メモリ４１５は、キャッシュメモリ１１１を含んでもよい。
【００８８】
入力装置４０６は、データの入力を行う。入力装置４０６としては、例えば、キーボード、マウス、スキャナ等を用いることができる。出力装置４０７は、データの出力を行う。出力装置４０７としては、例えば、ディスプレイ、プリンタ等を用いることができる。
【００８９】
（バックアップ装置１２０のハードウェア構成例）
図５は、実施の形態にかかるバックアップ装置１２０のハードウェア構成例を示すブロック図である。図５において、バックアップ装置１２０は、ＣＰＵ５０１と、ＲＯＭ５０２と、ＲＡＭ５０３と、Ｉ／Ｆ５０４と、を備えている。また、各構成部はバス５００によってそれぞれ接続されている。
【００９０】
ここで、ＣＰＵ５０１は、バックアップ装置１２０の全体の制御を司る。ＲＯＭ５０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ５０３は、ＣＰＵ５０１のワークエリアとして使用される。Ｉ／Ｆ５０４は、ネットワーク３１０に接続され、このネットワーク３１０を介して他の装置に接続される。そして、Ｉ／Ｆ５０４は、ネットワーク３１０と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ５０４には、例えばモデムやＬＡＮアダプタなどを採用することができる。ＲＡＭ５０３には、バックアップメモリ１２１が含まれる。
【００９１】
（チェックテーブル１１２の記憶内容）
次に、図６を用いて、書込制御装置１１０が有するチェックテーブル１１２について説明する。チェックテーブル１１２は、例えば、図４に示したＲＡＭ４０３により実現される。
【００９２】
図６は、チェックテーブル１１２の記憶内容の一例を示す説明図である。図６において、チェックテーブル１１２は、番号、アドレスおよび書込状況のフィールドを有し、各フィールドに情報を設定することで、チェック情報をレコードとして記憶している。
【００９３】
ここで、番号とは、書込制御装置１１０により選択される順序を示す番号である。アドレスとは、書込要求を受け付けたデータが書き込まれたキャッシュメモリ１１１のアドレスである。書込状況とは、書込要求を受け付けたデータがディスク装置１４０に書き込み済みであるか否かを示す情報である。チェックテーブル１１２の記憶内容は、例えば、書込要求を受信した場合、また、ディスク装置１４０に書込要求を受け付けたデータを書き込んだ場合に、その都度更新される。
【００９４】
（アドレステーブル７００の記憶内容）
次に、図７を用いて、バックアップ装置１２０が有するアドレステーブル７００の記憶内容の一例について説明する。アドレステーブル７００は、例えば、図５に示したＲＯＭ５０２やＲＡＭ５０３により実現される。
【００９５】
図７は、アドレステーブル７００の記憶内容の一例を示す説明図である。図７において、アドレステーブル７００は、番号およびアドレスのフィールドを有し、各フィールドに情報を設定することで、アドレス情報をレコードとして記憶している。
【００９６】
ここで、番号とは、バックアップ装置１２０により書込先にする記憶領域として選択される順序を示す番号である。アドレスとは、バックアップ装置１２０において複写データの書込先となるバックアップメモリ１２１のアドレスである。バックアップ用メモリの記憶内容は、例えば、書込制御装置１１０から複写データを受信した場合に、その都度更新される。
【００９７】
（書込制御装置１１０の機能的構成例）
次に、図８を用いて、書込制御装置１１０の機能的構成例について説明する。図８は、実施の形態にかかる書込制御装置１１０の機能的構成を示すブロック図である。書込制御装置１１０は、受付部８０１と、決定部８０２と、第１の書込部８０３と、第２の書込部８０４と、送信部８０５と、受信部８０６と、を含む構成である。この制御部となる機能（受付部８０１〜受信部８０６）は、具体的には、例えば、図４に示したＲＯＭ４０２、ＲＡＭ４０３などの記憶装置に記憶されたプログラムをＣＰＵ４０１に実行させることにより、その機能を実現する。
【００９８】
受付部８０１は、第１の記憶装置に対する第１のデータの書込要求を受け付ける機能を有する。ここで、書込要求とは、第１の記憶装置に書き込む第１のデータを含む。第１の記憶装置とは、書込要求を受け付けた第１のデータが書き込まれる装置であり、例えば、上述したディスク装置１４０である。また、第１の記憶装置は、光ディスクであってもよいし、磁気テープであってもよい。
【００９９】
具体的には、例えば、受付部８０１は、ディスク装置１４０に対するデータの書込要求をホスト装置１３０から受信する。また、具体的には、例えば、受付部８０１は、書込制御装置１１０の利用者による入力装置４０６への入力操作により、ディスク装置１４０に対するデータの書込要求を受け付ける。
【０１００】
これにより、受付部８０１は、ディスク装置１４０への書き込みを開始するトリガを受け付けることができる。なお、受け付けた書込要求は、例えば、ＲＡＭ４０３の記憶領域に記憶される。
【０１０１】
決定部８０２は、コンピュータに書き込まれた一連のデータのうち、第１の記憶装置への書込対象となる第２のデータに決定する機能を有する。具体的には、例えば、決定部８０２が、一連のデータの書込順序と、第２の記憶装置が有する記憶領域の個数と、に基づいて、一連のデータのうち、第２の記憶装置において次に選択される記憶領域に記憶されているデータと同一のデータを第２のデータに決定する。
【０１０２】
ここで、コンピュータに書き込まれた一連のデータとは、第１のデータの書込要求以前の書込要求によりコンピュータに書き込まれたデータであり、例えば、上述した書込制御装置１１０のキャッシュメモリ１１１に書き込まれた一連のデータである。なお、例えば、キャッシュメモリ１１１は、ＲＡＭ４０３に含まれていてもよい。
【０１０３】
第２の記憶装置とは、複写データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択して受信した複写データを上書き保存する装置である。第２の記憶装置とは、例えば、上述したバックアップ装置１２０である。第２の記憶装置は、ディスク装置１４０への書込要求を受け付けたデータの書き込みに先立って、書込要求を受け付けたデータの複写データをバックアップすることができる。
【０１０４】
ここで、バックアップ装置１２０は、１番目からＭ番目（Ｍ：Ｎ以上の自然数）までの記憶領域を有する。バックアップ装置１２０は、１番目からＭ番目までの記憶領域の中から、複写データの書込先にするｊ番目（ｊ＝１，２，…，Ｍ）の記憶領域を順番に選択する。また、バックアップ装置１２０は、Ｍ番目の記憶領域の次は、１番目の記憶領域を選択することにより、１番目からＭ番目までの記憶領域を周期的に選択する。
【０１０５】
なお、バックアップ装置１２０は、記憶領域を選択する処理を、例えば、図７に示したアドレステーブル７００のレコードを指定するポインタにより指定されるレコードを変更することにより実現してもよい。
【０１０６】
また、バックアップ装置１２０は、記憶領域を選択する処理を、１番目の記憶領域の先頭アドレスに１番目からＭ番目までの記憶領域のサイズを順番に加算していくことにより実現してもよい。また、バックアップ装置１２０は、記憶領域を選択する処理を、１番目からＭ番目までの記憶領域のそれぞれを指定するポインタ群を含むポインタ配列の配列番号と記憶領域の番号ｊとを対応させることにより実現してもよい。そして、バックアップ装置１２０は、選択したｊ番目の記憶領域に複写データを書き込む。
【０１０７】
具体的には、例えば、決定部８０２は、一連のデータの中から書込順序が遅い順に選ばれた個数分のデータのうち書込順序が最も早いデータを第２のデータに決定する。より具体的には、例えば、決定部８０２は、バックアップ装置１２０が有する記憶領域の個数Ｍと、自装置内の一連のデータの書込順序とを参照する。そして、決定部８０２は、バックアップ装置１２０で次に上書きされる複写データの複写元のデータは、自装置でＭ回前に書き込まれたデータであると判断して、Ｍ回前に書き込まれたデータを書込対象となるデータに決定する。
【０１０８】
これにより、決定部８０２は、バックアップ装置１２０で次に上書きされる複写データの複写元のデータを、ディスク装置１４０に書き込むべきデータに決定することができる。なお、決定結果は、例えば、ＲＡＭ４０３などの記憶領域に記憶される。
【０１０９】
また、具体的には、例えば、決定部８０２は、書込要求を受け付けるごとに、コンピュータ内の１番目からＮ番目（Ｎ：１以上の自然数）までの記憶領域の中から順番に選択される記憶領域に書き込まれたデータを、第２のデータに決定する。ここで、第２のデータとは、第１の装置への書込対象となるデータである。
【０１１０】
より具体的には、例えば、決定部８０２は、チェックテーブル１１２を参照して、キャッシュメモリ１１１に含まれる１番目からＮ番目までの記憶領域の中から、ディスク装置１４０に対する書込要求を受け付けたデータの書込先となるｉ番目（ｉ＝１，２，…，Ｎ）の記憶領域を順番に選択する。また、書込制御装置１１０は、Ｎ番目の記憶領域の次は、１番目の記憶領域を選択することにより、１番目からＮ番目までの記憶領域を周期的に選択する。
【０１１１】
選択された記憶領域は、例えば、チェックテーブル１１２のｉ番目のレコードを指定するチェックポインタＰ１から特定することができる。チェックポインタＰ１が指定するレコードの番号「ｉ」は、例えば、書込要求を受け付けたデータがキャッシュメモリ１１１に書き込まれるごとにインクリメントされる。ただし、番号「ｉ」がインクリメントされた結果、番号「ｉ」が「ｉ＝Ｎ＋１」になった場合、チェックポインタＰ１が指定するレコードの番号「ｉ」を「ｉ＝１」に戻す。そして、決定部８０２は、ｉ番目のレコードに設定されたアドレスの記憶領域に書き込まれているデータを書込対象となるデータに決定する。
【０１１２】
このように、決定部８０２は、バックアップ装置１２０とともに周期的に処理を実行することで、バックアップ装置１２０で複写データが上書きされる前に、必ず書込制御装置１１０で複写元のデータを、書込対象となるデータに決定することができる。これにより、決定部８０２は、バックアップ装置１２０における複写データが上書きされる前に、複写元のデータをディスク装置１４０に書き込むべきデータに決定することができる。なお、決定結果は、例えば、ＲＡＭ４０３などの記憶領域に記憶される。
【０１１３】
第１の書込部８０３は、決定部８０２によって決定された第２のデータを第１の記憶装置に書き込む機能を有する。ここで、第２のデータとは、決定部８０２によって決定された第１の装置への書込対象となるデータである。具体的には、例えば、第１の書込部８０３は、決定された書込対象となるデータをキャッシュメモリ１１１から読み出して、ディスク装置１４０に書き込む。これにより、第１の書込部８０３は、書込対象となるデータをディスク装置１４０に書き込むことができる。結果として、第１の書込部８０３は、バックアップ装置１２０において複写データが上書きされる前に、複写元のデータをディスク装置１４０に書き込むことができる。
【０１１４】
なお、ＣＰＵ４０１が第１の書込部８０３となるときは、ＣＰＵ４０１は、キャッシュメモリ１１１から読み出した書込対象となるデータを、ＲＡＩＤコントローラ４０５を制御してディスク装置１４０へ書き込ませてもよい。このとき、ＣＰＵ４０１は、ＲＡＩＤコントローラ４０５からの書込終了応答を受け付けることで、ディスク装置１４０への書き込みが終了したことを検出する。
【０１１５】
送信部８０５は、決定部８０２によって決定された第２のデータが第１の記憶装置に書き込まれた場合、第１のデータの複写データを第２の記憶装置に送信する機能を有する。ここで、第１のデータとは、受付部８０１によって書込要求を受け付けたデータである。第２のデータとは、決定部８０２によって決定された第１の記憶装置への書込対象となるデータである。
【０１１６】
具体的には、例えば、第１の書込部８０３は、決定した書込対象となるデータが第１の記憶装置に書き込まれた場合、第２の記憶装置に、書込要求を受け付けたデータの複写データを送信する。ここで、Ｍとは、Ｎ以上の自然数である。第２の記憶装置とは、データを受信した場合に１番目からＭ番目（Ｍ：Ｎ以上の自然数）までの記憶領域の中から書込先にする記憶領域を順番に選択して当該受信したデータを上書き保存する。
【０１１７】
より具体的には、例えば、送信部８０５は、決定した書込対象となるデータがディスク装置１４０に書き込まれた場合、書込要求を受け付けたデータの書き込みに先立ってバックアップ装置１２０に書込要求を受け付けたデータの複写データを送信する。
【０１１８】
これにより、送信部８０５は、書込要求を受け付けたデータの書き込みに先立ってバックアップ装置１２０にバックアップさせるデータを送信することができる。結果として、バックアップ装置１２０において、書込制御装置１１０から送信された新たな複写データで、不要となった複写データが上書きされる。
【０１１９】
受付部８０１は、一連のデータのうちの第１の記憶装置に書き込まれていない第３のデータの第１の記憶装置に対する書込指示を受け付ける機能を有する。ここで、第３のデータとは、書込指示を受け付けたデータであり、キャッシュメモリ１１１に書き込まれた一連のデータのうち、ディスク装置１４０に書き込まれていないデータである。具体的には、例えば、受付部８０１は、書込制御装置１１０の利用者による入力装置４０６への入力操作により、キャッシュメモリ１１１に書き込まれているディスク装置１４０に未書き込みのデータについて、ディスク装置１４０に対する書込指示を受け付ける。
【０１２０】
具体的には、例えば、受付部８０１は、書込制御装置１１０の処理量が閾値以下であることを検出する。そして、受付部８０１は、検出された場合、キャッシュメモリ１１１に書き込まれているデータのうちでディスク装置１４０に未書き込みのデータについて、ディスク装置１４０に対する書込指示を発生させる。
【０１２１】
第１の書込部８０３は、第３のデータを第１の記憶装置に書き込む機能を有する。また、第１の書込部８０３は、第３のデータが第１の記憶装置に書き込まれた場合、一連のデータのそれぞれが第１の記憶装置に書き込み済みか否かを表す書込状況を記憶するテーブル内の第３のデータの書込状況を書き込み済みに変更する機能を有する。
【０１２２】
ここで、一連のデータのそれぞれが第１の記憶装置に書き込み済みか否かを表す書込状況を記憶するテーブルとは、上述したチェックテーブル１１２である。第３のデータとは、書込指示を受け付けたデータであり、キャッシュメモリ１１１に書き込まれた一連のデータのうち、ディスク装置１４０に書き込まれていないデータである。
【０１２３】
具体的には、例えば、第１の書込部８０３は、書込指示を受け付けたデータをディスク装置１４０に書き込む。また、具体的には、例えば、第１の書込部８０３は、書込指示を受け付けたデータがディスク装置１４０に書き込まれた場合、書き込んだデータに対応するチェックテーブル１１２のレコードに設定されている書込状況を書き込み済みを示す情報に変更する。これにより、第１の書込部８０３は、ディスク装置１４０の連続する記憶領域にまとめてデータを書き込むことで、ディスク装置１４０に対する書き込みまたは読み出しにかかるシーク時間を抑制できる。
【０１２４】
第１の書込部８０３は、テーブル内の第２のデータの書込状況を参照して、第２のデータが第１の記憶装置に書き込み済みか否かを判定する機能を有する。また、第１の書込部８０３は、第２のデータが第１の記憶装置に書き込み済みではないと判定された場合、第２のデータを第１の記憶装置に書き込む機能を有する。ここで、第２のデータとは、決定部８０２によって決定された第１の記憶装置への書込対象となるデータである。
【０１２５】
具体的には、例えば、第１の書込部８０３は、書込対象となるデータに対応するチェックテーブル１１２のレコードに設定されている書込状況に基づいて、書込対象となるデータがディスク装置１４０に書き込み済みか否かを判定する。また、具体的には、例えば、第１の書込部８０３は、書込対象となるデータがディスク装置１４０に書き込み済みでない場合、書込対象となるデータをディスク装置１４０に書き込む。
【０１２６】
これにより、第１の書込部８０３は、書込対象となるデータがディスク装置１４０に書き込み済みである場合、書込対象となるデータをディスク装置１４０に書き込む処理を省くことができる。なお、判定結果は、例えば、ＲＡＭ４０３などの記憶領域に記憶される。
【０１２７】
第２の書込部８０４は、第２のデータが第１の記憶装置に書き込まれた場合、コンピュータ内の第２のデータが書き込まれている記憶領域に、第１のデータを書き込む機能を有する。ここで、第１のデータとは、受付部８０１によって書込要求を受け付けたデータである。第２のデータとは、決定部８０２によって決定された第１の記憶装置への書込対象となるデータである。具体的には、第２の書込部８０４は、第１の書込部８０３によって書込対象となるデータがディスク装置１４０に書き込まれた場合、キャッシュメモリ１１１の書込対象となるデータが書き込まれている記憶領域に、書込要求を受け付けたデータを書き込む。
【０１２８】
より具体的には、例えば、第２の書込部８０４は、Ｍ回前に書き込まれたデータが書き込まれている記憶領域に、書込要求を受け付けたデータを書き込む。また、より具体的には、例えば、第２の書込部８０４は、ｉ番目のレコードに設定されたアドレスの記憶領域に、書込要求を受け付けたデータを書き込む。これにより、第２の書込部８０４は、ディスク装置１４０に書き込まれたデータに、書込要求を受け付けたデータを上書きして、キャッシュメモリ１１１のメモリ使用量を抑制することができる。
【０１２９】
第２の書込部８０４は、第２のデータが第１の記憶装置に書き込み済みと判定された場合、コンピュータ内の第２のデータが書き込まれている記憶領域に、第１のデータを書き込む機能を有する。ここで、第１のデータとは、受付部８０１によって書込要求を受け付けたデータである。第２のデータとは、決定部８０２によって決定された第１の記憶装置への書込対象となるデータである。
【０１３０】
具体的には、第２の書込部８０４は、第１の書込部８０３によって書込対象となるデータがディスク装置１４０に書き込み済みであると判定された場合、キャッシュメモリ１１１の書込対象となるデータが書き込まれている記憶領域を特定する。そして、第２の書込部８０４は、特定した記憶領域に書込要求を受け付けたデータを書き込む。
【０１３１】
より具体的には、例えば、第２の書込部８０４は、Ｍ回前に書き込まれたデータが書き込まれている記憶領域に、書込要求を受け付けたデータを書き込む。また、より具体的には、例えば、第２の書込部８０４は、ｉ番目のレコードに設定されたアドレスの記憶領域に、書込要求を受け付けたデータを書き込む。これにより、第２の書込部８０４は、ディスク装置１４０に書き込まれたデータに、書込要求を受け付けたデータを上書きして、キャッシュメモリ１１１のメモリ使用量を抑制することができる。
【０１３２】
送信部８０５は、第２のデータが第１の記憶装置に書き込み済みと判定された場合、第１のデータの複写データを第２の記憶装置に送信する機能を有する。ここで、第１のデータとは、受付部８０１によって書込要求を受け付けたデータである。第２のデータとは、決定部８０２によって決定された第１の記憶装置への書込対象となるデータである。
【０１３３】
具体的には、送信部８０５は、第１の書込部８０３によって書込対象となるデータがディスク装置１４０に書き込み済みと判定された場合、書込要求を受け付けたデータの書き込みに先立って、書込要求を受け付けたデータの複写データをバックアップ装置１２０に送信する。
【０１３４】
これにより、送信部８０５は、書込要求を受け付けたデータの書き込みに先立って、バックアップ装置１２０にバックアップさせるデータを送信することができる。結果として、バックアップ装置１２０において、書込制御装置１１０から送信された新たな複写データで、不要となった複写データが上書きされる。
【０１３５】
第１の書込部８０３は、コンピュータに書き込まれている第１のデータを第１の記憶装置に書き込む際に、コンピュータからの第１のデータの読み出しに失敗したことを検出する機能を有する。ここで、第１のデータとは、受付部８０１によって書込要求を受け付けたデータである。
【０１３６】
具体的には、例えば、第１の書込部８０３は、キャッシュメモリ１１１に書き込まれている書込要求を受け付けたデータをディスク装置１４０に書き込む際に、キャッシュメモリ１１１からの書込要求を受け付けたデータの読み出しに失敗したことを検出する。これにより、第１の書込部８０３は、バックアップ装置１２０に、書込要求を受け付けたデータの複写データの送信要求を送信するトリガを検出することができる。なお、検出結果は、例えば、ＲＡＭ４０３などの記憶領域に記憶される。
【０１３７】
送信部８０５は、コンピュータに書き込まれている第１のデータを第１の記憶装置に書き込む際に、コンピュータからの第１のデータの読み出しに失敗した場合、第２の記憶装置に複写データの送信要求を送信する機能を有する。ここで、第１のデータとは、受付部８０１によって書込要求を受け付けたデータである。送信要求には、例えば、送信要求する複写データが、Ｘ回前に送信した複写データであることを示す情報が含まれる。このとき、バックアップ装置１２０は、Ｘ回前に受信した複写データを書込制御装置１１０に送信する。
【０１３８】
具体的には、例えば、送信部８０５は、第１の書込部８０３によって書込要求を受け付けたデータの読み出しに失敗したことが検出された場合、バックアップ装置１２０に書込要求を受け付けたデータの複写データの送信要求を送信する。これにより、送信部８０５は、バックアップ装置１２０に複写データを送信させることができる。
【０１３９】
受信部８０６は、複写データの送信要求が送信された結果、複写データを第２の記憶装置から受信する機能を有する。具体的には、例えば、受信部８０６は、送信部８０５によって複写データの送信要求が送信された結果、複写データをバックアップ装置１２０から受信する。これにより、受信部８０６は、書込要求を受け付けたデータの代わりにディスク装置１４０に書き込まれる複写データを受信することができる。なお、受信された複写データは、例えば、ＲＡＭ４０３などの記憶領域に記憶される。
【０１４０】
第１の書込部８０３は、受信した複写データを第１の記憶装置に書き込む機能を有する。具体的には、例えば、第１の書込部８０３は、受信部８０６によって受信された複写データを、書込要求を受け付けたデータの代わりに、ディスク装置１４０に書き込む。これにより、第１の書込部８０３は、キャッシュメモリ１１１の故障等によりデータが失われた場合であっても、書込要求を受け付けたデータと同一内容の複写データをディスク装置１４０に書き込むことができる。
【０１４１】
（ディスク装置１４０へのデータの書込制御処理の内容を示す説明図）
次に、図９〜図１４を用いて、書込制御装置１１０によるディスク装置１４０へのデータの書込制御処理の内容について説明する。なお、図１で説明した箇所と同様の箇所についての説明は省略する。
【０１４２】
図９〜図１４は、書込制御装置１１０によるディスク装置１４０へのデータの書込制御処理の内容を示す説明図である。図９において、書込制御装置１１０は１番目からＮ番目（Ｎ：１以上の自然数）までの記憶領域を有し、バックアップ装置１２０は複写データの書込先となる１番目からＭ番目（Ｍ：Ｍ＝Ｎ）までの記憶領域を有する。
【０１４３】
以下、書込制御装置１１０が、データＡの書込要求を受け付けた場合、データＢの書込要求を受け付けた場合、データＣの書込要求を受け付けた場合、および、データＤの書込要求を受け付けた場合について説明する。
【０１４４】
図１０において、（１）書込制御装置１１０は、ディスク装置１４０に対するデータＡの書込要求をホスト装置１３０から受け付ける。
【０１４５】
（２）書込制御装置１１０は、データＡの書込要求を受け付けると、書込要求を受け付けたデータＡをキャッシュメモリ１１１に書き込む。
【０１４６】
（３）書込制御装置１１０は、データＡをキャッシュメモリ１１１に書き込むと、チェックポインタＰ１の指定する１番目のレコードに設定されているアドレスを、データＡが書き込まれたアドレス「００１２ＦＦ５０」に変更する。また、書込制御装置１１０は、チェックポインタＰ１の指定する１番目のレコードに設定されている書込状況を、データＡがディスク装置１４０に書き込み済みでないことを示す情報「未」に変更する。そして、書込制御装置１１０は、チェックポインタＰ１の指定するレコードを２番目のレコードに変更する。
【０１４７】
（４）書込制御装置１１０は、データＡの複写データＡ’をバックアップ装置１２０に送信する。
【０１４８】
（５）バックアップ装置１２０は、複写データＡ’を受信すると、複写データＡ’を書込先ポインタＰ２の指定する１番目の記憶領域１２２に書き込み、書込先ポインタＰ２の指定する記憶領域を２番目の記憶領域１２３に変更する。
【０１４９】
図１１において、（１）書込制御装置１１０は、ディスク装置１４０に対するデータＢの書込要求をホスト装置１３０から受け付ける。
【０１５０】
（２）書込制御装置１１０は、データＢの書込要求を受け付けると、書込要求を受け付けたデータＢをキャッシュメモリ１１１に書き込む。
【０１５１】
（３）書込制御装置１１０は、データＢをキャッシュメモリ１１１に書き込むと、チェックポインタＰ１の指定する２番目のレコードに設定されているアドレスを、データＢが書き込まれたアドレス「００１２ＦＦ５４」に変更する。また、書込制御装置１１０は、チェックポインタＰ１の指定する２番目のレコードに設定されている書込状況を、データＢがディスク装置１４０に書き込み済みでないことを示す情報「未」に変更する。そして、書込制御装置１１０は、チェックポインタＰ１の指定するレコードを３番目のレコードに変更する。
【０１５２】
（４）書込制御装置１１０は、データＢの複写データＢ’をバックアップ装置１２０に送信する。
【０１５３】
（５）バックアップ装置１２０は、受信した複写データＢ’を書込先ポインタＰ２の指定する２番目の記憶領域１２３に書き込み、書込先ポインタＰ２の指定する記憶領域を３番目の記憶領域に変更する。
【０１５４】
（６）書込制御装置１１０は、ディスク装置１４０に対するデータＣの書込要求をホスト装置１３０から受け付ける。
【０１５５】
（７）書込制御装置１１０は、データＣの書込要求を受け付けると、書込要求を受け付けたデータＣをキャッシュメモリ１１１に書き込む。
【０１５６】
（８）書込制御装置１１０は、データＣをキャッシュメモリ１１１に書き込むと、チェックポインタＰ１の指定する３番目のレコードに設定されているアドレスを、データＣが書き込まれたアドレス「００１２ＦＦ５８」に変更する。また、書込制御装置１１０は、チェックポインタＰ１の指定する３番目のレコードに設定されている書込状況を、データＣがディスク装置１４０に書き込み済みでないことを示す情報「未」に変更する。そして、書込制御装置１１０は、チェックポインタＰ１の指定するレコードを１番目のレコードに戻す。
【０１５７】
（９）書込制御装置１１０は、データＣの複写データＣ’をバックアップ装置１２０に送信する。
【０１５８】
（１０）バックアップ装置１２０は、複写データＣ’を受信すると、複写データＣ’を書込先ポインタＰ２が指定する３番目の記憶領域１２４に書き込み、書込先ポインタＰ２の指定する記憶領域を１番目の記憶領域１２２に戻す。
【０１５９】
図１２において、（１）書込制御装置１１０は、ディスク装置１４０に対するデータＤの書込要求を受け付ける。
【０１６０】
（２）書込制御装置１１０は、データＤの書込要求を受け付けると、チェックポインタＰ１の指定する１番目のレコードに設定されている書込状況を参照する。書込制御装置１１０は、書込状況が「済」でないため、１番目のレコードに設定されているアドレス「００１２ＦＦ５０」の記憶領域に書き込まれているデータＡを読み出す。そして、書込制御装置１１０は、読み出したデータＡをディスク装置１４０に書き込む。
【０１６１】
ここで、書込制御装置１１０は、書込状況が「済」である場合に、１番目のレコードに設定されているアドレス「００１２ＦＦ５０」の記憶領域に書き込まれているデータＡを読み出さない。これにより、書込制御装置１１０は、同一内容のデータをディスク装置１４０に書き込む処理を省き、書込制御装置１１０での処理量を抑制するとともに、ディスク装置１４０に同一内容のデータが併存することを防ぐ。
【０１６２】
図１３において、（１）書込制御装置１１０は、データＡをディスク装置１４０に書き込むと、データＤをキャッシュメモリ１１１に書き込む。具体的には、例えば、書込制御装置１１０が、キャッシュメモリ１１１内の空き領域にデータＤを書き込む。
【０１６３】
（２）書込制御装置１１０は、データＤをキャッシュメモリ１１１に書き込むと、チェックポインタＰ１の指定する１番目のレコードに設定されているアドレス「００１２ＦＦ５０」を、データＤが書き込まれたアドレス「００１２ＦＦ５ｃ」に変更する。また、書込制御装置１１０は、チェックポインタＰ１の指定する１番目のレコードに設定されている書込状況を、データＤがディスク装置１４０に書き込み済みでないことを示す情報「未」に変更する。そして、書込制御装置１１０は、チェックポインタＰ１の指定するレコードを２番目のレコードに変更する。
【０１６４】
（３）書込制御装置１１０は、データＤの複写データＤ’をバックアップ装置１２０に送信する。
【０１６５】
（４）バックアップ装置１２０は、複写データＤ’を受信すると、複写データＤ’を書込先ポインタＰ２が指定する１番目の記憶領域１２２に書き込み、書込先ポインタＰ２の指定する記憶領域を２番目の記憶領域１２３に変更する。
【０１６６】
このとき、バックアップ装置１２０において、複写データＤ’により複写データＡ’は上書きされるが、複写データＡ’の複写元であるデータＡは、既にディスク装置１４０に書き込まれており、バックアップ不要のデータになっている。
【０１６７】
このように、バックアップ装置１２０がＭ個の記憶領域から書込先となる記憶領域を順番にかつ周期的に選択して複写データを書き込むことで、１周期前に書き込まれた複写データが新たな複写データで上書きされることになる。また、書込制御装置１１０は、Ｍ個以下の個数のＮ個の記憶領域から読出先となる記憶領域を順番にかつ周期的に選択して、読み出したデータをディスク装置１４０に書き込む。
【０１６８】
そのため、バックアップ装置１２０で複写データが上書きされる以前に、書込制御装置１１０で複写元のデータがディスク装置１４０に書き込まれるようにすることができる。そして、バックアップ装置１２０において、書込制御装置１１０から送信された新たな複写データで、既に複写元のデータがディスク装置１４０に書き込まれ不要となった複写データが上書きされるようにすることができる。
【０１６９】
これにより、書込制御装置１１０は、データのバックアップが不要になったときに、複写データの削除要求などをバックアップ装置１２０に送信する処理が不要となる。結果として、書込制御装置１１０は、書込制御装置１１０での処理量を抑制するとともに、バックアップ装置１２０との通信量を抑制することができる。
【０１７０】
また、図１４を用いて、図１２の（２）においてチェックポインタＰ１が指定するレコードのアドレスの記憶領域「００１２ＦＦ５０」に書き込まれたデータＡの読み出しに失敗したことが検出された場合の書込制御処理について説明する。
【０１７１】
（１）書込制御装置１１０は、データＡの読み出しに失敗したことを検出すると、チェックポインタＰ１が指定するレコードに書き込まれたデータＡの複写データＡ’の送信要求をバックアップ装置１２０に送信する。
【０１７２】
（２）バックアップ装置１２０は、書込先ポインタＰ２が指定する記憶領域１２２に書き込まれている複写データＡ’を書込制御装置１１０に送信する。
【０１７３】
（３）書込制御装置１１０は、複写データＡ’を受信すると、データＡの代わりに複写データＡ’をディスク装置１４０に書き込む。これにより、書込制御装置１１０は、キャッシュメモリ１１１の故障等によりデータＡが失われても、ディスク装置１４０にデータＡと同一内容の複写データＡ’を書き込むことができる。
【０１７４】
なお、送信要求には、例えば、送信要求する複写データが、Ｘ回前に送信した複写データであることを示す情報が含まれる。そして、バックアップ装置１２０は、Ｘ回前に受信した複写データを書込制御装置１１０に送信する。より具体的には、バックアップ装置１２０は、書込先ポインタＰ２が指定しているｊ番目の記憶領域を起点として、Ｘ回前に書き込んだ記憶領域であるｊ−Ｘ番目の記憶領域を特定する。そして、バックアップ装置１２０は、ｊ−Ｘ番目の記憶領域に書き込まれている複写データを書込制御装置１１０に送信する。
【０１７５】
（チェックテーブル作成処理の一例）
次に、図１５を用いて、書込制御装置１１０によるチェックテーブル作成処理の処理内容について説明する。
【０１７６】
図１５は、実施の形態にかかる書込制御装置１１０のチェックテーブル作成処理手順の一例を示すフローチャートである。図１５に示すように、まず、受信部８０６により、バックアップ装置１２０から、バックアップ装置１２０で複写データの書込先として使用可能なメモリ使用量Ｘを受信する（ステップＳ１５０１）。
【０１７７】
次に、第１の書込部８０３により、受信したメモリ使用量Ｘをディスク装置１４０に書き込まれるデータに対して設定されている固定長で除算して、チェックテーブル１１２のレコード数を算出する（ステップＳ１５０２）。
【０１７８】
そして、第１の書込部８０３により、算出したレコード数にチェックテーブル１１２の１レコード分のメモリ使用量を乗算して、チェックテーブル１１２のメモリサイズを算出する（ステップＳ１５０３）。次に、第１の書込部８０３により、算出したメモリサイズのメモリ領域を、チェックテーブル１１２のメモリ領域として獲得する（ステップＳ１５０４）。
【０１７９】
そして、決定部８０２により、チェックポインタＰ１が指定するレコードの番号を示す変数ｉを１に設定し（ステップＳ１５０５）、チェックテーブル作成処理を終了する。これにより、書込制御装置１１０は、レコード数がバックアップ装置１２０での記憶領域の個数以下であるチェックテーブル１１２を作成することができる。
【０１８０】
（書込制御処理手順の一例）
次に、書込制御装置１１０による書込制御処理の処理内容について説明する。まず、図１６および図１７を用いて、書込制御処理のうち、書込要求を受け付けたときに実行される第１の書込制御処理の処理内容について説明する。
【０１８１】
図１６および図１７は、実施の形態にかかる書込制御装置１１０の第１の書込制御処理手順の一例を示すフローチャートである。図１６において、まず、受付部８０１により、ホスト装置１３０から書込要求を受け付けたか否かを判定する（ステップＳ１６０１）。ここで、書込要求を受け付けていない場合（ステップＳ１６０１：Ｎｏ）、受付部８０１により、ステップＳ１６０１に戻り、書込要求を受け付けるのを待つ。
【０１８２】
一方、書込要求を受け付けた場合（ステップＳ１６０１：Ｙｅｓ）、決定部８０２により、チェックポインタＰ１の指定するレコードの番号を示す変数ｉが、チェックテーブル１１２のレコード数Ｎより大きいか否かを判定する（ステップＳ１６０２）。ここで、変数ｉがＮ以下である場合（ステップＳ１６０２：Ｎｏ）、ステップＳ１６０４に移行する。一方、変数ｉがＮより大きい場合（ステップＳ１６０２：Ｙｅｓ）、決定部８０２により、チェックポインタＰ１が指定するレコードの番号を示す変数ｉに１を設定する（ステップＳ１６０３）。
【０１８３】
次に、決定部８０２により、チェックポインタＰ１が指定するレコードとして、ｉ番目のレコードを設定する（ステップＳ１６０４）。そして、第１の書込部８０３により、チェックポインタＰ１が指定するｉ番目のレコードに設定されている書込状況は、書き込み済みを示す「済」であるか否かを判定する（ステップＳ１６０５）。ここで、「済」でない場合（ステップＳ１６０５：Ｎｏ）、図１７のステップＳ１７０１に移行する。
【０１８４】
一方、「済」である場合（ステップＳ１６０５：Ｙｅｓ）、第２の書込部８０４により、チェックポインタＰ１が指定するｉ番目のレコードに設定されているアドレスの記憶領域に、書込要求を受け付けたデータを書き込む（ステップＳ１６０６）。
【０１８５】
そして、送信部８０５により、書込要求を受け付けたデータの複写データをバックアップ装置１２０に送信する（ステップＳ１６０７）。
【０１８６】
次に、第１の書込部８０３により、チェックポインタＰ１の指定するｉ番目のレコードに、書込要求を受け付けたデータが書き込まれたアドレスと、書込要求を受け付けたデータがディスク装置１４０に書き込み済みでないことを示す情報と、を設定する（ステップＳ１６０８）。
【０１８７】
そして、決定部８０２により、チェックポインタＰ１の指定するレコードの番号を示す変数ｉをインクリメントする（ステップＳ１６０９）。次に、送信部８０５により、ホスト装置１３０に書込終了応答を送信し（ステップＳ１６１０）、書込要求を受け付けたデータの書込処理を終了する。
【０１８８】
図１７において、第１の書込部８０３により、ｉ番目のレコードに設定されているアドレスの記憶領域に書き込まれているデータを読み出し、ディスク装置１４０に書き込む（ステップＳ１７０１）。次に、第１の書込部８０３により、ステップＳ１７０１において、データの読み出しに成功したか否かを判定する（ステップＳ１７０２）。ここで、データの読み出しに成功した場合（ステップＳ１７０２：Ｙｅｓ）、図１６のステップＳ１６０６に移行する。
【０１８９】
一方、データの読み出しに成功しなかった場合（ステップＳ１７０２：Ｎｏ）、送信部８０５により、読み出しに失敗したデータの複写データの送信要求をバックアップ装置１２０に送信する（ステップＳ１７０３）。
【０１９０】
次に、受信部８０６により、複写データを受信したか否かを判定する（ステップＳ１７０４）。ここで、複写データを受信していない場合（ステップＳ１７０４：Ｎｏ）、ステップＳ１７０４に戻り、受信部８０６により、複写データの受信を待つ。
【０１９１】
一方、複写データを受信した場合（ステップＳ１７０４：Ｙｅｓ）、第１の書込部８０３は、複写データをディスク装置１４０に書き込み（ステップＳ１７０５）、図１６のステップＳ１６０６に移行する。これにより、書込制御装置１１０は、ディスク装置１４０へのデータの書き込み、書込要求を受け付けたデータのキャッシュメモリ１１１への書き込み、書込要求を受け付けたデータの複写データのバックアップ装置１２０への送信を実行できる。
【０１９２】
次に、図１８および図１９を用いて、書込制御処理のうち、書込指示を受け付けたときに実行される第２の書込制御処理の処理内容について説明する。
【０１９３】
図１８および図１９は、実施の形態にかかる書込制御装置１１０の第２の書込制御処理手順の一例を示すフローチャートである。書込制御装置１１０による書込指示を受け付けたデータの書込処理の処理内容を示すフローチャートである。図１８において、まず、受付部８０１により、書込指示を受け付けたか否かを判定する（ステップＳ１８０１）。ここで、書込指示を受け付けていない場合（ステップＳ１８０１：Ｎｏ）、受付部８０１により、ステップＳ１８０１に戻り、書込指示を受け付けるのを待つ。
【０１９４】
一方、書込指示を受け付けた場合（ステップＳ１８０１：Ｙｅｓ）、決定部８０２により、チェックテーブル１１２のレコードの番号を示す変数ｋに１を設定する（ステップＳ１８０２）。次に、決定部８０２により、変数ｋがチェックテーブル１１２のレコード数Ｎより大きいか否かを判定する（ステップＳ１８０３）。ここで、変数ｋがＮより大きい場合（ステップＳ１８０３：Ｙｅｓ）、書込指示を受け付けたデータの書込処理を終了する。
【０１９５】
一方、変数ｋがＮ以下である場合（ステップＳ１８０３：Ｎｏ）、決定部８０２により、チェックテーブル１１２のｋ番目のレコードを選択する（ステップＳ１８０４）。次に、第１の書込部８０３により、ｋ番目のレコードに設定されている書込状況は、書き込み済みを示す「済」であるか否かを判定する（ステップＳ１８０５）。ここで、「済」でない場合（ステップＳ１８０５：Ｎｏ）、図１９のステップＳ１９０１に移行する。
【０１９６】
一方、「済」である場合（ステップＳ１８０５：Ｙｅｓ）、決定部８０２により変数ｋをインクリメントして（ステップＳ１８０６）、ステップＳ１８０３に戻る。
【０１９７】
図１９において、まず、第１の書込部８０３は、ｋ番目のレコードに設定されたアドレスの記憶領域に書き込まれているデータを読み出し、ディスク装置１４０に書き込む（ステップＳ１９０１）。
【０１９８】
次に、ステップＳ１９０２〜ステップＳ１９０５の処理に移行する。ここでは、ステップＳ１９０２〜ステップＳ１９０５のそれぞれの処理は、ステップＳ１７０２〜ステップＳ１７０５のそれぞれの処理と同一の処理内容であるため、説明を省略する。
【０１９９】
そして、第１の書込部８０３により、ｋ番目のレコードに、書き込み済みであることを示す「済」を設定して（ステップＳ１９０６）、図１８のステップＳ１８０６に移行する。これにより、書込制御装置１１０は、書込指示を受け付けたときに、ディスク装置１４０に書き込み済みでないデータを、ディスク装置１４０に書き込むことができる。
【０２００】
（起動処理の一例）
次に、図２０を用いて、バックアップ装置１２０による起動処理の処理内容について説明する。
【０２０１】
図２０は、実施の形態にかかるバックアップ装置１２０の起動処理手順の一例を示すフローチャートである。まず、ＣＰＵ５０１により、バックアップメモリ１２１について、ハードウェア故障をチェックする（ステップＳ２００１）。
【０２０２】
次に、ＣＰＵ５０１により、故障があるか否かを判定する（ステップＳ２００２）。ここで、故障がない場合（ステップＳ２００２：Ｎｏ）、ＣＰＵ５０１により、バックアップ装置１２０で複写データの書込先として使用可能なメモリ使用量Ｘを、書込制御装置１１０に送信して（ステップＳ２００３）、起動処理を終了する。
【０２０３】
一方、故障がある場合（ステップＳ２００２：Ｎｏ）、ＣＰＵ５０１により、エラーメッセージを出力して（ステップＳ２００４）、起動処理を終了する。これにより、バックアップ装置１２０は、自装置が有する記憶領域の個数を示す情報を書込制御装置１１０に送信することができ、記憶領域への複写データの書き込みが可能な状態に移行することができる。
【０２０４】
（複写データ書込処理の一例）
次に、図２１を用いて、バックアップ装置１２０による複写データ書込処理の処理内容について説明する。
【０２０５】
図２１は、実施の形態にかかるバックアップ装置１２０の複写データ書込処理手順の一例を示すフローチャートである。図２１において、ＣＰＵ５０１により、複写データを受信したか否かを判定する（ステップＳ２１０１）。ここで、複写データを受信していない場合（ステップＳ２１０１：Ｎｏ）、ステップＳ２１０１に戻り、ＣＰＵ５０１により、複写データの受信を待つ。
【０２０６】
一方、複写データを受信した場合（ステップＳ２１０１：Ｙｅｓ）、ＣＰＵ５０１により、書込先ポインタＰ２の指定する記憶領域の番号を示す変数ｊが、バックアップメモリ１２１が有する記憶領域の個数Ｍより大きいか否かを判定する（ステップＳ２１０２）。ここで、変数ｊがＭ以下である場合（ステップＳ２１０２：Ｎｏ）、ステップＳ２１０４に移行する。
【０２０７】
一方、変数ｊがＭより大きい場合（ステップＳ２１０２：Ｙｅｓ）、ＣＰＵ５０１により、書込先ポインタＰ２の指定する記憶領域の番号を示す変数ｊに１を設定する（ステップＳ２１０３）。次に、ＣＰＵ５０１により、ｊ番目の記憶領域を選択する（ステップＳ２１０４）。そして、ｊ番目の記憶領域に受信した複写データを書き込む（ステップＳ２１０５）。
【０２０８】
次に、ＣＰＵ５０１により、書込先ポインタＰ２の指定する記憶領域の番号を示す変数ｊをインクリメントして（ステップＳ２１０６）、複写データ書込処理を終了する。これにより、バックアップ装置１２０は、バックアップメモリ１２１に複写データを書き込むことができる。
【０２０９】
（複写データ送信処理の一例）
次に、図２２を用いて、バックアップ装置１２０による複写データ送信処理の処理内容について説明する。
【０２１０】
図２２は、実施の形態にかかるバックアップ装置１２０の複写データ送信処理手順の一例を示すフローチャートである。図２２において、まず、ＣＰＵ５０１により、複写データの送信要求を受信したか否かを判定する（ステップＳ２２０１）。複写データの送信要求を受信していない場合（ステップＳ２２０１：Ｎｏ）、ステップＳ２２０１に戻り、ＣＰＵ５０１により、送信要求の受信を待つ。
【０２１１】
複写データの送信要求を受信した場合（ステップＳ２２０１：Ｙｅｓ）、ＣＰＵ５０１により、バックアップメモリ１２１から複写データを読み出す（ステップＳ２２０２）。次に、ＣＰＵ５０１により、読み出した複写データを書込制御装置１１０に送信して（ステップＳ２２０３）、複写データ送信処理を終了する。
【０２１２】
これにより、バックアップ装置１２０は、送信要求された複写データを書込制御装置１１０に送信することができる。
【０２１３】
以上説明したように、実施の形態にかかる書込制御装置１１０によれば、バックアップメモリ１２１内の１番目からＭ番目までの記憶領域の中から書込先となるｊ番目の記憶領域を順番に選択して複写データを書き込むバックアップ装置１２０と通信することができる。また、書込制御装置１１０によれば、キャッシュメモリ１１１に書き込まれた一連のデータの書込順序と、バックアップ装置１２０が有する記憶領域の個数Ｍとに基づいて、バックアップ装置１２０で次に上書きされる複写データを特定することができる。
【０２１４】
また、書込制御装置１１０によれば、バックアップ装置１２０で複写データが上書きされる前に、複写元のデータをディスク装置１４０に書き込むべきと判断して、複写元のデータをディスク装置１４０に書き込むことができる。また、書込制御装置１１０によれば、新たな複写データをバックアップ装置１２０に送信することにより、バックアップ装置１２０に不要になった複写データを新たに送信した複写データで上書きさせることができる。
【０２１５】
これにより、書込制御装置１１０は、バックアップが不要になった複写データの削除要求やバックアップメモリ１２１内での複写データの書込先の指示を送信せずに、バックアップ装置に不要となった複写データに上書きさせることができるようになる。結果として、書込制御装置１１０は、書込制御装置１１０での処理量を抑制することができる。
【０２１６】
また、書込制御装置１１０は、バックアップが不要になった複写データの削除要求をバックアップ装置１２０に送信する場合と比して、バックアップ装置１２０との通信量を抑制することができる。また、書込制御装置１１０によりキャッシュメモリ１１１のデータがディスク装置１４０に書き込まれるまで、該当データの複写データはバックアップ装置１２０において上書きせずに保存させておくことができる。
【０２１７】
また、結果として、バックアップ装置１２０は、複写データの削除要求やバックアップメモリ１２１内での複写データの書込先の指示を受けずに、書込制御装置１１０から独立して、バックアップメモリ１２１内の空き領域に複写データを書き込むことができる。そのため、バックアップ装置１２０は、バックアップメモリ１２１のメモリ使用量を抑制することができる。また、バックアップ装置１２０は、自動的に、バックアップが不要になった複写データを、バックアップ装置１２０から新たに受信した複写データで上書きできるため、バックアップメモリ１２１のメモリ使用量を抑制することができる。
【０２１８】
また、書込制御装置１１０によれば、データの書込順序と記憶領域の個数Ｍを参照することで、Ｍ回前にキャッシュメモリ１１１に書き込まれたデータが、バックアップ装置１２０で次に上書きされる複写データの複写元のデータであると判断することができる。
【０２１９】
書込制御装置１１０によれば、キャッシュメモリ１１１内のいずれかのデータの書込指示を受け付けることで、書込指示を受け付けたデータをディスク装置１４０に書き込むことができる。また、書込制御装置１１０によれば、キャッシュメモリ１１１内のデータがディスク装置１４０に書き込み済みか否かを示す情報を記憶するチェックテーブル１１２を有することで、書込状況を管理することができる。
【０２２０】
また、書込制御装置１１０によれば、ディスク装置１４０へ書き込み済みでないデータの書込指示を受け付けたときに、チェックテーブル１１２の書込状況を参照することで、ディスク装置１４０に書き込み済みでないデータを特定することができる。また、書込制御装置１１０によれば、特定したディスク装置１４０に書き込み済みでないデータをディスク装置１４０に書き込むことができる。
【０２２１】
これにより、書込制御装置１１０は、ディスク装置１４０に書き込み済みでないデータをまとめて、ディスク装置１４０の連続する記憶領域に書き込むことで、ディスク装置１４０に対する書き込みにかかるシーク時間を抑制できる。また、書込制御装置１１０は、ディスク装置１４０の連続する記憶領域にデータを書き込んでおくことで、ディスク装置１４０に対する読み出しにかかるシーク時間を抑制できる。
【０２２２】
また、書込制御装置１１０によれば、チェックテーブル１１２の書込状況を参照して、決定したディスク装置１４０に書き込むべきデータが書き込み済みであるか否か判定する。書込制御装置１１０によれば、決定したディスク装置１４０に書き込むべきデータが書き込み済みでないと判定された場合のみ、決定したディスク装置１４０に書き込むべきデータをディスク装置１４０に書き込む。これにより、書込制御装置１１０は、同一内容のデータをディスク装置１４０に書き込む処理を省くことができ、ディスク装置１４０に同一内容のデータが併存することを防ぐことができる。
【０２２３】
また、書込制御装置１１０によれば、決定したディスク装置１４０に書き込むべきデータが書き込み済みであると判定された場合、書込要求を受け付けたデータをディスク装置１４０に書き込むべきデータが書き込まれた記憶領域に上書きする。これにより、書込制御装置１１０は、キャッシュメモリ１１１内のディスク装置１４０に書き込み済みのデータをディスク装置１４０に書き込み済みでないデータで上書きして、キャッシュメモリ１１１のメモリ使用量を抑制することができる。
【０２２４】
また、書込制御装置１１０によれば、キャッシュメモリ１１１の故障等により、ディスク装置１４０に書き込むべきデータの読み出しに失敗した場合、読み出しに失敗したデータの複写データの送信要求をバックアップ装置１２０に送信する。そして、書込制御装置１１０によれば、バックアップ装置１２０から受信した複写データを、読み出しに失敗したデータの代わりに、ディスク装置１４０に書き込む。これにより、書込制御装置１１０は、キャッシュメモリ１１１の故障等によりデータが失われた場合であっても、当該データと同一内容の複写データをディスク装置１４０に書き込むことができる。
【０２２５】
また、書込制御装置１１０によれば、ホスト装置１３０からディスク装置１４０に対する書込要求を受け付ける。書込制御装置１１０によれば、書込要求を受け付けると、ディスク装置１４０への書き込みに先立って、自装置内のキャッシュメモリ１１１に書込要求を受け付けたデータを書き込み、ホスト装置１３０に書込終了応答を送信する。これにより、書込制御装置１１０は、ホスト装置１３０に対する応答性能を向上させることができる。
【０２２６】
なお、本実施の形態で説明した書込制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本書込制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本書込制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２２７】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２２８】
（付記１）コンピュータに、
第１の記憶装置に対する第１のデータの書込要求を受け付け、
前記第１のデータの書込要求以前の書込要求により前記コンピュータに書き込まれた一連のデータの書込順序と、データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択して当該受信したデータを上書き保存する第２の記憶装置が有する前記記憶領域の個数とに基づいて、前記一連のデータのうち、前記第２の記憶装置において次に選択される記憶領域に記憶されているデータと同一のデータを、前記第１の記憶装置への書込対象となる第２のデータに決定し、
決定した前記第２のデータが前記第１の記憶装置に書き込まれた場合、前記第１のデータの複写データを前記第２の記憶装置に送信する、
処理を実行させることを特徴とする書込制御プログラム。
【０２２９】
（付記２）前記決定する処理は、
前記一連のデータの中から書込順序が遅い順に選ばれた前記記憶領域の個数分のデータのうち書込順序が最も早いデータを前記第２のデータに決定する、
ことを特徴とする付記１に記載の書込制御プログラム。
【０２３０】
（付記３）前記コンピュータに、
前記一連のデータのうちの前記第１の記憶装置に書き込まれていない第３のデータの前記第１の記憶装置に対する書込指示を受け付け、
前記第３のデータが前記第１の記憶装置に書き込まれた場合、前記一連のデータのそれぞれが前記第１の記憶装置に書き込み済みか否かを表す書込状況を記憶するテーブル内の前記第３のデータの書込状況を書き込み済みに変更する、
処理を実行させることを特徴とする付記１または２に記載の書込制御プログラム。
【０２３１】
（付記４）前記コンピュータに、
前記テーブル内の前記第２のデータの書込状況を参照して、前記第２のデータが前記第１の記憶装置に書き込み済みか否かを判定し、
前記第２のデータが前記第１の記憶装置に書き込み済みではないと判定された場合、前記第２のデータを前記第１の記憶装置に書き込み、
前記第２のデータが前記第１の記憶装置に書き込まれた場合、前記コンピュータ内の前記第２のデータが書き込まれている記憶領域に、前記第１のデータを書き込む、
処理を実行させることを特徴とする付記３に記載の書込制御プログラム。
【０２３２】
（付記５）前記コンピュータ内に前記第１のデータを書き込む処理は、
前記第２のデータが前記第１の記憶装置に書き込み済みと判定された場合、前記コンピュータ内の前記第２のデータが書き込まれている記憶領域に、前記第１のデータを書き込み、
前記送信する処理は、
前記第２のデータが前記第１の記憶装置に書き込み済みと判定された場合、前記第１のデータの複写データを前記第２の記憶装置に送信することを特徴とする付記４に記載の書込制御プログラム。
【０２３３】
（付記６）前記コンピュータに、
前記コンピュータに書き込まれている前記第１のデータを前記第１の記憶装置に書き込む際に、前記コンピュータからの前記第１のデータの読み出しに失敗した場合、前記第２の記憶装置に前記複写データの送信要求を送信し、
前記複写データの送信要求が送信された結果、前記複写データを前記第２の記憶装置から受信し、
受信した前記複写データを前記第１の記憶装置に書き込む、
処理を実行させることを特徴とする付記１〜５のいずれか一つに記載の書込制御プログラム。
【０２３４】
（付記７）前記決定する処理は、
前記書込要求を受け付けるごとに前記コンピュータ内の１番目からＮ番目（Ｎ：１以上の自然数）までの記憶領域の中から順番に選択される記憶領域に書き込まれたデータを、前記第２のデータに決定し、
前記送信する処理は、
決定した前記第２のデータが前記第１の記憶装置に書き込まれた場合、データを受信した場合に１番目からＭ番目（Ｍ：Ｎ以上の自然数）までの記憶領域の中から書込先にする記憶領域を順番に選択して当該受信したデータを上書き保存する前記第２の記憶装置に、前記第１のデータの複写データを送信することを特徴とする付記１〜６のいずれか一つに記載の書込制御プログラム。
【０２３５】
（付記８）前記第１の記憶装置は、ディスク装置であることを特徴とする付記１〜７のいずれか一つに記載の書込制御プログラム。
【０２３６】
（付記９）コンピュータが、
第１の記憶装置に対する第１のデータの書込要求を受け付け、
前記第１のデータの書込要求以前の書込要求により前記コンピュータに書き込まれた一連のデータの書込順序と、データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択して当該受信したデータを上書き保存する第２の記憶装置が有する前記記憶領域の個数とに基づいて、前記一連のデータのうち、前記第２の記憶装置において次に選択される記憶領域に記憶されているデータと同一のデータを、前記第１の記憶装置への書込対象となる第２のデータに決定し、
決定した前記第２のデータが前記第１の記憶装置に書き込まれた場合、前記第１のデータの複写データを前記第２の記憶装置に送信する、
処理を実行することを特徴とする書込制御方法。
【０２３７】
（付記１０）第１の記憶装置に対する第１のデータの書込要求を受け付ける受付手段と、
前記第１のデータの書込要求以前の書込要求により前記コンピュータに書き込まれた一連のデータの書込順序と、データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択して当該受信したデータを上書き保存する第２の記憶装置が有する前記記憶領域の個数とに基づいて、前記一連のデータのうち、前記第２の記憶装置において次に選択される記憶領域に記憶されているデータと同一のデータを、前記第１の記憶装置への書込対象となる第２のデータに決定する決定手段と、
決定された前記第２のデータが前記第１の記憶装置に書き込まれた場合、前記第１のデータの複写データを前記第２の記憶装置に送信する送信手段と、
を備えることを特徴とする書込制御装置。
【０２３８】
（付記１１）第１の記憶装置にアクセス可能な書込制御装置と第２の記憶装置とが通信するシステムであって、
前記第２の記憶装置は、
データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択する選択手段と、
選択された前記記憶領域に当該受信したデータを書き込む書込手段と、を備え、
前記書込制御装置は、
前記第１の記憶装置に対する第１のデータの書込要求を受け付ける受付手段と、
前記第１のデータの書込要求以前の書込要求により前記書込制御装置に書き込まれた一連のデータの書込順序と、前記第２の記憶装置が有する前記記憶領域の個数とに基づいて、前記一連のデータのうち、前記第２の記憶装置において次に選択される記憶領域に記憶されているデータと同一のデータを、前記第１の記憶装置への書込対象となる第２のデータに決定する決定手段と、
決定された前記第２のデータが前記第１の記憶装置に書き込まれた場合、前記第１のデータの複写データを前記第２の記憶装置に送信する送信手段と、
を備えることを特徴とするシステム。
【符号の説明】
【０２３９】
１１０  書込制御装置
１２０  バックアップ装置
１３０  ホスト装置
１４０  ディスク装置
１１１  キャッシュメモリ
１２１  バックアップメモリ
８０１  受付部
８０２  決定部
８０３  第１の書込部
８０４  第２の書込部
８０５  送信部
８０６  受信部
【図１】
0005915079.tif 000002
【図２】
0005915079.tif 000003
【図３】
0005915079.tif 000004
【図４】
0005915079.tif 000005
【図５】
0005915079.tif 000006
【図６】
0005915079.tif 000007
【図７】
0005915079.tif 000008
【図８】
0005915079.tif 000009
【図９】
0005915079.tif 000010
【図１０】
0005915079.tif 000011
【図１１】
0005915079.tif 000012
【図１２】
0005915079.tif 000013
【図１３】
0005915079.tif 000014
【図１４】
0005915079.tif 000015
【図１５】
0005915079.tif 000016
【図１６】
0005915079.tif 000017
【図１７】
0005915079.tif 000018
【図１８】
0005915079.tif 000019
【図１９】
0005915079.tif 000020
【図２０】
0005915079.tif 000021
【図２１】
0005915079.tif 000022
【図２２】
0005915079.tif 000023