以下に添付図面を参照して、この発明にかかる書込制御プログラム、書込制御方法、書込制御装置およびシステムの実施の形態を詳細に説明する。
(書込制御方法の一実施例)
まず、図1および図2を用いて、実施の形態にかかる書込制御方法の一実施例について説明する。
図1は、実施の形態にかかる書込制御方法の一実施例を示す説明図(その1)である。図1において、書込制御装置110は、ディスク装置140にアクセス可能であり、ディスク装置140に対するデータの書込要求を、ホスト装置130から受け付けるコンピュータである。ホスト装置130は、ディスク装置140に対するデータの書込要求を書込制御装置110に送信するコンピュータである。
書込制御装置110は、ホスト装置130からディスク装置140に対するデータの書込要求を受け付けると、ディスク装置140への書き込みに先立って、キャッシュメモリ111にデータを書き込んで、書込要求に対する応答をホスト装置130に送信する。これにより、ホスト装置130からのデータの書込要求に対する応答性能を向上させることができる。
また、書込制御装置110は、チェックテーブル112を有する。チェックテーブル112には、キャッシュメモリ111に含まれる1番目からN番目(N:1以上の自然数)までの記憶領域のアドレスが記憶されている。図1の例では、1番目から2番目までの記憶領域のアドレスが記憶されている(N=2)。
書込制御装置110は、チェックテーブル112を参照して、キャッシュメモリ111に含まれる1番目からN番目までの記憶領域の中から、ディスク装置140に対する書込要求を受け付けたデータの書込先となるi番目(i=1,2,…,N)の記憶領域を順番に選択する。また、書込制御装置110は、N番目の記憶領域の次は1番目の記憶領域を選択することにより、1番目からN番目までの記憶領域を周期的に選択する。
選択される記憶領域は、例えば、チェックテーブル112のi番目のレコードを指定するチェックポインタP1から特定することができる。チェックポインタP1が指定するレコードの番号「i」は、例えば、書込要求を受け付けたデータがキャッシュメモリ111に書き込まれるごとにインクリメントされる。
ただし、番号「i」がインクリメントされた結果、番号「i」が「i=N+1」になった場合、書込制御装置110が、チェックポインタP1が指定するレコードの番号「i」を「i=1」とする。図1の例では、番号「i」が「i=3」になった場合、チェックポインタP1が指定するレコードの番号「i」が「i=1」となる。
このように、書込制御装置110は、チェックポインタP1が指定するレコードに設定されているアドレスの記憶領域を選択することで、キャッシュメモリ111内の1番目からN番目までの記憶領域を順番に選択することができる。図1の例では、キャッシュメモリ111内の1番目から2番目までの記憶領域を順番に選択することができる。
また、書込制御装置110は、選択したi番目のレコードに設定されているアドレスの記憶領域に書き込まれているデータをディスク装置140に書き込む。また、書込制御装置110は、書込要求を受け付けたデータの複写データを、バックアップ装置120に送信する。複写データは、書込要求を受け付けたデータを複写したものである。
バックアップ装置120は、書込制御装置110から複写データを受信するコンピュータである。また、バックアップ装置120は、受信した複写データの書込先となるバックアップメモリ121を有する。バックアップメモリ121は、1番目からM番目(M:N以上の自然数)までの記憶領域を含む。図1の例では、バックアップメモリ121は、1番目から3番目までの記憶領域122〜124を含んでいる。
また、バックアップ装置120は、バックアップメモリ121に含まれる1番目からM番目までの記憶領域の中から、複写データの書込先にするj番目(j=1,2,…,M)の記憶領域を順番に選択する。また、バックアップ装置120は、M番目の記憶領域の次は1番目の記憶領域を選択することにより、1番目からM番目までの記憶領域を周期的に選択する。
選択される記憶領域は、例えば、j番目の記憶領域を指定する書込先ポインタP2から特定することができる。書込先ポインタP2が指定する記憶領域の番号「j」は、例えば、複写データがバックアップメモリ121に書き込まれるごとにインクリメントされる。
ただし、番号「j」がインクリメントされた結果、番号「j」が「j=M+1」になった場合、バックアップ装置120が、書込先ポインタP2が指定する記憶領域の番号「j」を「j=1」とする。図2の例では、番号「j」が「j=4」になった場合、書込先ポインタP2が指定するレコードの番号「j」が「j=1」となる。
このように、書込制御装置110は、チェックポインタP1が指定するレコードに設定されているアドレスの記憶領域を選択することで、キャッシュメモリ111内の1番目からN番目までの記憶領域を順番に選択することができる。図1の例では、キャッシュメモリ111内の1番目から2番目までの記憶領域を順番に選択することができる。
また、書込制御装置110は、選択したi番目のレコードに設定されているアドレスの記憶領域に書き込まれているデータをディスク装置140に書き込む。また、書込制御装置110は、書込要求を受け付けたデータの複写データを、バックアップ装置120に送信する。複写データは、書込要求を受け付けたデータを複写したものである。
バックアップ装置120は、書込制御装置110から複写データを受信するコンピュータである。また、バックアップ装置120は、受信した複写データの書込先となるバックアップメモリ121を有する。バックアップメモリ121は、1番目からM番目(M:N以上の自然数)までの記憶領域を含む。図1の例では、バックアップメモリ121は、1番目から3番目までの記憶領域122〜124を含んでいる。
また、バックアップ装置120は、バックアップメモリ121に含まれる1番目からM番目(j=1,2,…,M)までの記憶領域の中から、複写データの書込先にするj番目の記憶領域を順番に選択する。また、バックアップ装置120は、M番目の記憶領域の次は1番目の記憶領域を選択することにより、1番目からM番目までの記憶領域を周期的に選択する。
選択される記憶領域は、例えば、j番目の記憶領域を指定する書込先ポインタP2から特定することができる。書込先ポインタP2が指定する記憶領域の番号「j」は、例えば、複写データがバックアップメモリ121に書き込まれるごとにインクリメントされる。
ただし、番号「j」がインクリメントされた結果、番号「j」が「j=M+1」になった場合、バックアップ装置120が、書込先ポインタP2が指定する記憶領域の番号「j」を「j=1」とする。図2の例では、番号「j」が「j=4」になった場合、書込先ポインタP2が指定するレコードの番号「j」が「j=1」となる。
このように、バックアップ装置120は、書込先ポインタP2が指定する記憶領域を選択することで、バックアップメモリ121内の1番目からM番目までの記憶領域を順番に選択することができる。図2の例では、バックアップメモリ121内の1番目から3番目までの記憶領域122〜124を順番に選択することができる。また、バックアップ装置120は、選択したj番目の記憶領域に複写データを書き込む。
図1の例では、書込制御装置110において、ホスト装置130から書込要求を受け付けたデータAおよびデータBがキャッシュメモリ111に書き込まれている。この結果、チェックポインタP1は、チェックテーブル112の1番目のレコードを指定している。また、バックアップ装置において、データAの複写データA’がバックアップメモリ121の記憶領域122に、データBの複写データB’がバックアップメモリ121の記憶領域123に書き込まれている。この結果、書込先ポインタP2は、バックアップメモリ121内の3番目の記憶領域を指定している。
以下、書込制御装置110が、データCの書込要求を受け付けた場合、および、データDの書込要求を受け付けた場合について説明する。
(1)書込制御装置110は、ディスク装置140に対するデータCの書込要求をホスト装置130から受け付ける。
(2)書込制御装置110は、データCの書込要求を受け付けると、チェックポインタP1の指定する1番目のレコードに設定されているアドレス「add_A」の記憶領域に書き込まれているデータAを、ディスク装置140に書き込む。
(3)書込制御装置110は、データAをディスク装置140に書き込むと、データCをキャッシュメモリ111に書き込む。具体的には、例えば、書込制御装置110が、キャッシュメモリ111内の空き領域にデータCを書き込む。
(4)書込制御装置110は、チェックポインタP1の指定する1番目のレコードに設定されているアドレス「add_A」をデータCが書き込まれたアドレス「add_C」に変更し、チェックポインタP1の指定するレコードを2番目のレコードに変更する。
(5)書込制御装置110は、データCの複写データC’をバックアップ装置120に送信する。
(6)バックアップ装置120は、複写データC’を受信すると、複写データC’を書込先ポインタP2が指定する3番目の記憶領域124に書き込み、書込先ポインタP2の指定する記憶領域を1番目の記憶領域122に戻す。
(7)書込制御装置110は、ディスク装置140に対するデータDの書込要求を受け付ける。
(8)書込制御装置110は、データDの書込要求を受け付けると、チェックポインタP1の指定する2番目のレコードに設定されているアドレス「add_B」の記憶領域に書き込まれているデータBを、ディスク装置140に書き込む。
(9)書込制御装置110は、データBをディスク装置140に書き込むと、データDをキャッシュメモリ111に書き込む。具体的には、例えば、書込制御装置110が、キャッシュメモリ111内の空き領域にデータDを書き込む。
(10)書込制御装置110は、チェックポインタP1の指定する2番目のレコードに設定されているアドレス「add_B」をデータDが書き込まれたアドレス「add_D」に変更し、チェックポインタP1の指定するレコードを1番目のレコードに戻す。
(11)書込制御装置110は、データDの複写データD’をバックアップ装置120に送信する。
(12)バックアップ装置120は、複写データD’を受信すると、複写データD’を書込先ポインタP2が指定する1番目の記憶領域122に書き込み、書込先ポインタP2の指定する記憶領域を2番目の記憶領域123に変更する。
このとき、バックアップ装置120において、複写データD’により複写データA’が上書きされるが、複写データA’の複写元であるデータAは、既にディスク装置140に書き込まれておりバックアップ不要のデータになっている。
このように、バックアップ装置120がM個の記憶領域から書込先となる記憶領域を順番にかつ周期的に選択して複写データを書き込むことで、1周期前に書き込まれた複写データが新たな複写データで上書きされることになる。また、書込制御装置110は、M個以下のN個の記憶領域から読出先となる記憶領域を順番にかつ周期的に選択して、読み出したデータをディスク装置140に書き込む。
なお、書込制御装置110の都合により、任意の時に以降でバックアップ装置120で上書きされる複写データの複写元であるデータをディスク装置140に書き込むことにしてよい。例えば、データAをディスク装置140に書き込むときに一緒にデータBを書き込んだ方が都合がよければデータAとデータBを一緒に書き込んで、チェックテーブル112のデータBの書き込み状況を済みに変更しておく。
そのため、バックアップ装置120で複写データが上書きされる前に、書込制御装置110で複写元のデータがディスク装置140に書き込まれるようにすることができる。そして、バックアップ装置120において、書込制御装置110から送信された新たな複写データで、既に複写元のデータがディスク装置140に書き込まれ不要となった複写データが上書きされるようにすることができる。
これにより、書込制御装置110は、データのバックアップが不要になったときに、複写データの削除要求などをバックアップ装置120に送信する処理が不要となる。結果として、書込制御装置110は、書込制御装置110での処理量を抑制するとともに、バックアップ装置120との通信量を抑制することができる。
また、書込制御装置110は、バックアップ装置120でバックアップが不要になった複写データが新たな複写データによって上書きされるようにすることで、バックアップメモリ121内で複写データの書込先として使用される記憶領域のサイズを抑制することができる。また、書込制御装置110によりキャッシュメモリ111のデータがディスク装置140に書き込まれるまで、該当データの複写データはバックアップ装置120において上書きせずに保存させておくことができる。
なお、上述した説明では、チェックポインタP1の指定するレコードの番号を、レコードの更新ごとにインクリメントすることにしたが、これに限らない。例えば、ホスト装置130からデータの書込要求を受け付けるごとに、チェックポインタP1の指定するレコードの番号がインクリメントされることにしてもよい。
また、上述した説明では、書込要求を受け付けたデータをキャッシュメモリ111の空き領域に書き込むことにしたが、これに限らない。例えば、1番目からN番目までの記憶領域のアドレスを固定して、固定されたアドレスの記憶領域にデータが上書きされるようにしてもよい。これにより、書込制御装置110は、キャッシュメモリ111の記憶領域を効率よく使用することができる。
次に、書込制御装置110が書込順序テーブル200を用いて書込制御処理を実行する場合について説明する。なお、図1で説明した箇所と同様の箇所についての説明は省略する。
図2は、実施の形態にかかる書込制御方法の一実施例を示す説明図(その2)である。図2において、書込制御装置110は、キャッシュメモリ111に書き込まれたデータの書込順序を記憶する書込順序テーブル200を有する。
書込制御装置110は、複写データの書込先となるバックアップ装置120が有する記憶領域の個数Mと書込順序テーブル200を参照して、バックアップ装置120で次に上書きされる複写データの複写元のデータを特定する。具体的には、例えば、書込制御装置110は、バックアップ装置120で次に上書きされる複写データの複写元のデータとして、キャッシュメモリ111にM回前に書き込まれたデータを特定する。
また、書込制御装置110は、特定したデータをディスク装置140に書き込むべきデータに決定する。そして、書込制御装置110は、決定したデータをディスク装置140に書き込む。また、書込制御装置110は、書込要求を受け付けたデータの複写データを、バックアップ装置120に送信する。
図1の例では、書込制御装置110において、ホスト装置130から書込要求を受け付けたデータAおよびデータBがキャッシュメモリ111に書き込まれている。また、バックアップ装置において、データAの複写データA’がバックアップメモリ121の記憶領域122に、データBの複写データB’がバックアップメモリ121の記憶領域123に書き込まれている。この結果、書込先ポインタP2は、バックアップメモリ121内の3番目の記憶領域を指定している。
以下、書込制御装置110が、データCの書込要求を受け付けた場合、および、データDの書込要求を受け付けた場合について説明する。
(1)書込制御装置110は、ディスク装置140に対するデータCの書込要求をホスト装置130から受け付ける。
書込制御装置110は、ディスク装置140に対するデータCの書込要求を受け付けると、バックアップ装置120が有する記憶領域の個数「3」および書込順序テーブル200を参照して、ディスク装置140に書き込むべきデータを決定する。
具体的には、書込制御装置110は、次にバックアップ装置120で上書きされる複写データの複写元である書込順序が3回前のデータを、バックアップ装置120での複写データの上書きより前にディスク装置140に書き込むべきであるとして、ディスク装置140へ書き込むデータに決定する。ここでは、書込制御装置110は、書込順序が3回前のデータが存在しないため、ディスク装置140にデータを書き込まない。
(2)書込制御装置110は、書込順序が3回前のデータが存在しない場合、データCをキャッシュメモリ111に書き込む。具体的には、例えば、書込制御装置110が、キャッシュメモリ111内の空き領域にデータCを書き込む。
(3)書込制御装置110は、データCを書き込んだキャッシュメモリ111のアドレス「Add_C」とキャッシュメモリ111への書き込みが3回目であることを示す書込順序「3」とを対応付けたレコードを書込順序テーブル200に追加する。
(4)書込制御装置110は、データCの複写データC’をバックアップ装置120に送信する。
(5)バックアップ装置120は、複写データC’を受信すると、受信した複写データC’を書込先ポインタP2が指定する3番目の記憶領域124に書き込み、書込先ポインタP2の指定する記憶領域を1番目の記憶領域122に戻す。
(6)書込制御装置110は、ディスク装置140に対するデータDの書込要求を受け付ける。
(7)書込制御装置110は、ディスク装置140に対するデータDの書込要求を受け付けると、バックアップ装置120が有する記憶領域の個数「3」および書込順序テーブル200を参照して、ディスク装置140に書き込むべきデータを決定する。ここでは、書込制御装置110は、決定した書込順序が3回前のデータAをディスク装置140に書き込む。
(8)書込制御装置110は、データAをディスク装置140に書き込むと、データDをキャッシュメモリ111に書き込む。具体的には、例えば、書込制御装置110が、キャッシュメモリ111内の空き領域にデータDを書き込む。
(9)書込制御装置110は、データDを書き込んだキャッシュメモリ111のアドレス「Add_D」とキャッシュメモリ111への書き込みが4回目であることを示す書込順序「4」とを対応付けたレコードを書込順序テーブル200に追加する。
(10)書込制御装置110は、データDの複写データD’をバックアップ装置120に送信する。
(11)バックアップ装置120は、複写データD’を受信すると、受信した複写データD’を書込先ポインタP2が指定する1番目の記憶領域122に書き込み、書込先ポインタP2の指定する記憶領域を2番目の記憶領域123に変更する。
このとき、バックアップ装置120において、複写データD’により複写データA’は上書きされるが、複写データA’の複写元であるデータAは既にディスク装置140に書き込まれており、バックアップ不要のデータになっている。
このように、書込制御装置110は、バックアップ装置120で次に上書きされる複写データの複写元のデータを特定して、ディスク装置140に書き込むデータに決定することができる。そのため、書込制御装置110は、バックアップ装置120において複写データが上書きされる前に、複写元のデータをディスク装置140に書き込むことができるようになる。そして、バックアップ装置120において、書込制御装置110から送信された新たな複写データで、既に複写元のデータがディスク装置140に書き込まれ不要となった複写データが上書きされる。
これにより、書込制御装置110は、データのバックアップが不要になったときに、複写データの削除要求などを送信する処理が不要となる。結果として、書込制御装置110は、書込制御装置110での処理量を抑制するとともに、バックアップ装置120との通信量を抑制することができる。
また、書込制御装置110は、バックアップ装置120で、バックアップが不要になった複写データを、新たな複写データで上書きするようにすることで、複写データの書込先として使用される記憶領域のサイズを抑制することができる。
なお、上述した説明では、次にバックアップ装置120で上書きされる複写データの複写元であるデータが存在しない場合、ディスク装置140にデータを書き込まないことにしたが、これに限らない。例えば、次にバックアップ装置120で上書きされる複写データの複写元であるデータが存在しない場合、以降でバックアップ装置120で上書きされる複写データの複写元であるデータをディスク装置140に書き込むことにしてもよい。また、例えば、次にバックアップ装置120で上書きされる複写データの複写元であるデータが書き込み済みである場合、以降でバックアップ装置120で上書きされる複写データの複写元であるデータをディスク装置140に書き込んでもよい。
また、書込制御装置110の都合により、任意の時に以降でバックアップ装置120で上書きされる複写データの複写元であるデータをディスク装置140に書き込むことにしてよい。例えば、データAをディスク装置140に書き込むときに一緒にデータBを書き込んだ方が都合がよければデータAとデータBを一緒に書き込んで、書込順序テーブル200のデータBの書き込み状況を済みに変更しておく。
(ストレージシステム300のシステム構成例)
図3は、実施の形態にかかるストレージシステムのシステム構成例を示す説明図である。図3において、ストレージシステム300は、書込制御装置110と、バックアップ装置120と、ホスト装置130と、ディスク装置140と、を含む。
ストレージシステム300において、書込制御装置110、バックアップ装置120およびホスト装置130は、有線または無線のネットワーク310を介して相互に通信可能に接続されている。ネットワーク310は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などである。
また、ディスク装置140には、データを冗長化して耐障害性を向上させるために、複数の磁気ディスク320(図面では、3個)を組み合わせて一つの磁気ディスクとして運用するRAID(Redundant Arrays of Inexpensive Disks)の技術が適用されてもよい。
(書込制御装置110のハードウェア構成例)
図4は、実施の形態にかかる書込制御装置110のハードウェア構成例を示すブロック図である。図4において、書込制御装置110は、CPU(Central Processing Unit)401と、ROM(Read‐Only Memory)402と、RAM(Random Access Memory)403と、I/F(Interface)404と、RAIDコントローラ405と、ディスク装置140と、入力装置406と、出力装置407と、を備えている。また、各構成部はバス400によってそれぞれ接続されている。
ここで、CPU401は、書込制御装置110の全体の制御を司る。ROM402は、ブートプログラムなどのプログラムを記憶している。RAM403は、CPU401のワークエリアとして使用される。RAM403は、キャッシュメモリ111を含んでもよい。
I/F404は、ネットワーク310に接続され、このネットワーク310を介して他の装置に接続される。そして、I/F404は、ネットワーク310と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F404には、例えばモデムやLANアダプタなどを採用することができる。
RAIDコントローラ405は、複数の磁気ディスク320を含むディスク装置140に対するデータの書き込み、および、データの読み出しを制御するコントローラである。磁気ディスク320は、RAIDコントローラ405の制御で書き込まれたデータを記憶する。また、RAIDコントローラ405は、RAIDコントローラ405により実行されるプログラムを記憶したメモリ415を有する。メモリ415は、キャッシュメモリ111を含んでもよい。
入力装置406は、データの入力を行う。入力装置406としては、例えば、キーボード、マウス、スキャナ等を用いることができる。出力装置407は、データの出力を行う。出力装置407としては、例えば、ディスプレイ、プリンタ等を用いることができる。
(バックアップ装置120のハードウェア構成例)
図5は、実施の形態にかかるバックアップ装置120のハードウェア構成例を示すブロック図である。図5において、バックアップ装置120は、CPU501と、ROM502と、RAM503と、I/F504と、を備えている。また、各構成部はバス500によってそれぞれ接続されている。
ここで、CPU501は、バックアップ装置120の全体の制御を司る。ROM502は、ブートプログラムなどのプログラムを記憶している。RAM503は、CPU501のワークエリアとして使用される。I/F504は、ネットワーク310に接続され、このネットワーク310を介して他の装置に接続される。そして、I/F504は、ネットワーク310と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F504には、例えばモデムやLANアダプタなどを採用することができる。RAM503には、バックアップメモリ121が含まれる。
(チェックテーブル112の記憶内容)
次に、図6を用いて、書込制御装置110が有するチェックテーブル112について説明する。チェックテーブル112は、例えば、図4に示したRAM403により実現される。
図6は、チェックテーブル112の記憶内容の一例を示す説明図である。図6において、チェックテーブル112は、番号、アドレスおよび書込状況のフィールドを有し、各フィールドに情報を設定することで、チェック情報をレコードとして記憶している。
ここで、番号とは、書込制御装置110により選択される順序を示す番号である。アドレスとは、書込要求を受け付けたデータが書き込まれたキャッシュメモリ111のアドレスである。書込状況とは、書込要求を受け付けたデータがディスク装置140に書き込み済みであるか否かを示す情報である。チェックテーブル112の記憶内容は、例えば、書込要求を受信した場合、また、ディスク装置140に書込要求を受け付けたデータを書き込んだ場合に、その都度更新される。
(アドレステーブル700の記憶内容)
次に、図7を用いて、バックアップ装置120が有するアドレステーブル700の記憶内容の一例について説明する。アドレステーブル700は、例えば、図5に示したROM502やRAM503により実現される。
図7は、アドレステーブル700の記憶内容の一例を示す説明図である。図7において、アドレステーブル700は、番号およびアドレスのフィールドを有し、各フィールドに情報を設定することで、アドレス情報をレコードとして記憶している。
ここで、番号とは、バックアップ装置120により書込先にする記憶領域として選択される順序を示す番号である。アドレスとは、バックアップ装置120において複写データの書込先となるバックアップメモリ121のアドレスである。バックアップ用メモリの記憶内容は、例えば、書込制御装置110から複写データを受信した場合に、その都度更新される。
(書込制御装置110の機能的構成例)
次に、図8を用いて、書込制御装置110の機能的構成例について説明する。図8は、実施の形態にかかる書込制御装置110の機能的構成を示すブロック図である。書込制御装置110は、受付部801と、決定部802と、第1の書込部803と、第2の書込部804と、送信部805と、受信部806と、を含む構成である。この制御部となる機能(受付部801〜受信部806)は、具体的には、例えば、図4に示したROM402、RAM403などの記憶装置に記憶されたプログラムをCPU401に実行させることにより、その機能を実現する。
受付部801は、第1の記憶装置に対する第1のデータの書込要求を受け付ける機能を有する。ここで、書込要求とは、第1の記憶装置に書き込む第1のデータを含む。第1の記憶装置とは、書込要求を受け付けた第1のデータが書き込まれる装置であり、例えば、上述したディスク装置140である。また、第1の記憶装置は、光ディスクであってもよいし、磁気テープであってもよい。
具体的には、例えば、受付部801は、ディスク装置140に対するデータの書込要求をホスト装置130から受信する。また、具体的には、例えば、受付部801は、書込制御装置110の利用者による入力装置406への入力操作により、ディスク装置140に対するデータの書込要求を受け付ける。
これにより、受付部801は、ディスク装置140への書き込みを開始するトリガを受け付けることができる。なお、受け付けた書込要求は、例えば、RAM403の記憶領域に記憶される。
決定部802は、コンピュータに書き込まれた一連のデータのうち、第1の記憶装置への書込対象となる第2のデータに決定する機能を有する。具体的には、例えば、決定部802が、一連のデータの書込順序と、第2の記憶装置が有する記憶領域の個数と、に基づいて、一連のデータのうち、第2の記憶装置において次に選択される記憶領域に記憶されているデータと同一のデータを第2のデータに決定する。
ここで、コンピュータに書き込まれた一連のデータとは、第1のデータの書込要求以前の書込要求によりコンピュータに書き込まれたデータであり、例えば、上述した書込制御装置110のキャッシュメモリ111に書き込まれた一連のデータである。なお、例えば、キャッシュメモリ111は、RAM403に含まれていてもよい。
第2の記憶装置とは、複写データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択して受信した複写データを上書き保存する装置である。第2の記憶装置とは、例えば、上述したバックアップ装置120である。第2の記憶装置は、ディスク装置140への書込要求を受け付けたデータの書き込みに先立って、書込要求を受け付けたデータの複写データをバックアップすることができる。
ここで、バックアップ装置120は、1番目からM番目(M:N以上の自然数)までの記憶領域を有する。バックアップ装置120は、1番目からM番目までの記憶領域の中から、複写データの書込先にするj番目(j=1,2,…,M)の記憶領域を順番に選択する。また、バックアップ装置120は、M番目の記憶領域の次は、1番目の記憶領域を選択することにより、1番目からM番目までの記憶領域を周期的に選択する。
なお、バックアップ装置120は、記憶領域を選択する処理を、例えば、図7に示したアドレステーブル700のレコードを指定するポインタにより指定されるレコードを変更することにより実現してもよい。
また、バックアップ装置120は、記憶領域を選択する処理を、1番目の記憶領域の先頭アドレスに1番目からM番目までの記憶領域のサイズを順番に加算していくことにより実現してもよい。また、バックアップ装置120は、記憶領域を選択する処理を、1番目からM番目までの記憶領域のそれぞれを指定するポインタ群を含むポインタ配列の配列番号と記憶領域の番号jとを対応させることにより実現してもよい。そして、バックアップ装置120は、選択したj番目の記憶領域に複写データを書き込む。
具体的には、例えば、決定部802は、一連のデータの中から書込順序が遅い順に選ばれた個数分のデータのうち書込順序が最も早いデータを第2のデータに決定する。より具体的には、例えば、決定部802は、バックアップ装置120が有する記憶領域の個数Mと、自装置内の一連のデータの書込順序とを参照する。そして、決定部802は、バックアップ装置120で次に上書きされる複写データの複写元のデータは、自装置でM回前に書き込まれたデータであると判断して、M回前に書き込まれたデータを書込対象となるデータに決定する。
これにより、決定部802は、バックアップ装置120で次に上書きされる複写データの複写元のデータを、ディスク装置140に書き込むべきデータに決定することができる。なお、決定結果は、例えば、RAM403などの記憶領域に記憶される。
また、具体的には、例えば、決定部802は、書込要求を受け付けるごとに、コンピュータ内の1番目からN番目(N:1以上の自然数)までの記憶領域の中から順番に選択される記憶領域に書き込まれたデータを、第2のデータに決定する。ここで、第2のデータとは、第1の装置への書込対象となるデータである。
より具体的には、例えば、決定部802は、チェックテーブル112を参照して、キャッシュメモリ111に含まれる1番目からN番目までの記憶領域の中から、ディスク装置140に対する書込要求を受け付けたデータの書込先となるi番目(i=1,2,…,N)の記憶領域を順番に選択する。また、書込制御装置110は、N番目の記憶領域の次は、1番目の記憶領域を選択することにより、1番目からN番目までの記憶領域を周期的に選択する。
選択された記憶領域は、例えば、チェックテーブル112のi番目のレコードを指定するチェックポインタP1から特定することができる。チェックポインタP1が指定するレコードの番号「i」は、例えば、書込要求を受け付けたデータがキャッシュメモリ111に書き込まれるごとにインクリメントされる。ただし、番号「i」がインクリメントされた結果、番号「i」が「i=N+1」になった場合、チェックポインタP1が指定するレコードの番号「i」を「i=1」に戻す。そして、決定部802は、i番目のレコードに設定されたアドレスの記憶領域に書き込まれているデータを書込対象となるデータに決定する。
このように、決定部802は、バックアップ装置120とともに周期的に処理を実行することで、バックアップ装置120で複写データが上書きされる前に、必ず書込制御装置110で複写元のデータを、書込対象となるデータに決定することができる。これにより、決定部802は、バックアップ装置120における複写データが上書きされる前に、複写元のデータをディスク装置140に書き込むべきデータに決定することができる。なお、決定結果は、例えば、RAM403などの記憶領域に記憶される。
第1の書込部803は、決定部802によって決定された第2のデータを第1の記憶装置に書き込む機能を有する。ここで、第2のデータとは、決定部802によって決定された第1の装置への書込対象となるデータである。具体的には、例えば、第1の書込部803は、決定された書込対象となるデータをキャッシュメモリ111から読み出して、ディスク装置140に書き込む。これにより、第1の書込部803は、書込対象となるデータをディスク装置140に書き込むことができる。結果として、第1の書込部803は、バックアップ装置120において複写データが上書きされる前に、複写元のデータをディスク装置140に書き込むことができる。
なお、CPU401が第1の書込部803となるときは、CPU401は、キャッシュメモリ111から読み出した書込対象となるデータを、RAIDコントローラ405を制御してディスク装置140へ書き込ませてもよい。このとき、CPU401は、RAIDコントローラ405からの書込終了応答を受け付けることで、ディスク装置140への書き込みが終了したことを検出する。
送信部805は、決定部802によって決定された第2のデータが第1の記憶装置に書き込まれた場合、第1のデータの複写データを第2の記憶装置に送信する機能を有する。ここで、第1のデータとは、受付部801によって書込要求を受け付けたデータである。第2のデータとは、決定部802によって決定された第1の記憶装置への書込対象となるデータである。
具体的には、例えば、第1の書込部803は、決定した書込対象となるデータが第1の記憶装置に書き込まれた場合、第2の記憶装置に、書込要求を受け付けたデータの複写データを送信する。ここで、Mとは、N以上の自然数である。第2の記憶装置とは、データを受信した場合に1番目からM番目(M:N以上の自然数)までの記憶領域の中から書込先にする記憶領域を順番に選択して当該受信したデータを上書き保存する。
より具体的には、例えば、送信部805は、決定した書込対象となるデータがディスク装置140に書き込まれた場合、書込要求を受け付けたデータの書き込みに先立ってバックアップ装置120に書込要求を受け付けたデータの複写データを送信する。
これにより、送信部805は、書込要求を受け付けたデータの書き込みに先立ってバックアップ装置120にバックアップさせるデータを送信することができる。結果として、バックアップ装置120において、書込制御装置110から送信された新たな複写データで、不要となった複写データが上書きされる。
受付部801は、一連のデータのうちの第1の記憶装置に書き込まれていない第3のデータの第1の記憶装置に対する書込指示を受け付ける機能を有する。ここで、第3のデータとは、書込指示を受け付けたデータであり、キャッシュメモリ111に書き込まれた一連のデータのうち、ディスク装置140に書き込まれていないデータである。具体的には、例えば、受付部801は、書込制御装置110の利用者による入力装置406への入力操作により、キャッシュメモリ111に書き込まれているディスク装置140に未書き込みのデータについて、ディスク装置140に対する書込指示を受け付ける。
具体的には、例えば、受付部801は、書込制御装置110の処理量が閾値以下であることを検出する。そして、受付部801は、検出された場合、キャッシュメモリ111に書き込まれているデータのうちでディスク装置140に未書き込みのデータについて、ディスク装置140に対する書込指示を発生させる。
第1の書込部803は、第3のデータを第1の記憶装置に書き込む機能を有する。また、第1の書込部803は、第3のデータが第1の記憶装置に書き込まれた場合、一連のデータのそれぞれが第1の記憶装置に書き込み済みか否かを表す書込状況を記憶するテーブル内の第3のデータの書込状況を書き込み済みに変更する機能を有する。
ここで、一連のデータのそれぞれが第1の記憶装置に書き込み済みか否かを表す書込状況を記憶するテーブルとは、上述したチェックテーブル112である。第3のデータとは、書込指示を受け付けたデータであり、キャッシュメモリ111に書き込まれた一連のデータのうち、ディスク装置140に書き込まれていないデータである。
具体的には、例えば、第1の書込部803は、書込指示を受け付けたデータをディスク装置140に書き込む。また、具体的には、例えば、第1の書込部803は、書込指示を受け付けたデータがディスク装置140に書き込まれた場合、書き込んだデータに対応するチェックテーブル112のレコードに設定されている書込状況を書き込み済みを示す情報に変更する。これにより、第1の書込部803は、ディスク装置140の連続する記憶領域にまとめてデータを書き込むことで、ディスク装置140に対する書き込みまたは読み出しにかかるシーク時間を抑制できる。
第1の書込部803は、テーブル内の第2のデータの書込状況を参照して、第2のデータが第1の記憶装置に書き込み済みか否かを判定する機能を有する。また、第1の書込部803は、第2のデータが第1の記憶装置に書き込み済みではないと判定された場合、第2のデータを第1の記憶装置に書き込む機能を有する。ここで、第2のデータとは、決定部802によって決定された第1の記憶装置への書込対象となるデータである。
具体的には、例えば、第1の書込部803は、書込対象となるデータに対応するチェックテーブル112のレコードに設定されている書込状況に基づいて、書込対象となるデータがディスク装置140に書き込み済みか否かを判定する。また、具体的には、例えば、第1の書込部803は、書込対象となるデータがディスク装置140に書き込み済みでない場合、書込対象となるデータをディスク装置140に書き込む。
これにより、第1の書込部803は、書込対象となるデータがディスク装置140に書き込み済みである場合、書込対象となるデータをディスク装置140に書き込む処理を省くことができる。なお、判定結果は、例えば、RAM403などの記憶領域に記憶される。
第2の書込部804は、第2のデータが第1の記憶装置に書き込まれた場合、コンピュータ内の第2のデータが書き込まれている記憶領域に、第1のデータを書き込む機能を有する。ここで、第1のデータとは、受付部801によって書込要求を受け付けたデータである。第2のデータとは、決定部802によって決定された第1の記憶装置への書込対象となるデータである。具体的には、第2の書込部804は、第1の書込部803によって書込対象となるデータがディスク装置140に書き込まれた場合、キャッシュメモリ111の書込対象となるデータが書き込まれている記憶領域に、書込要求を受け付けたデータを書き込む。
より具体的には、例えば、第2の書込部804は、M回前に書き込まれたデータが書き込まれている記憶領域に、書込要求を受け付けたデータを書き込む。また、より具体的には、例えば、第2の書込部804は、i番目のレコードに設定されたアドレスの記憶領域に、書込要求を受け付けたデータを書き込む。これにより、第2の書込部804は、ディスク装置140に書き込まれたデータに、書込要求を受け付けたデータを上書きして、キャッシュメモリ111のメモリ使用量を抑制することができる。
第2の書込部804は、第2のデータが第1の記憶装置に書き込み済みと判定された場合、コンピュータ内の第2のデータが書き込まれている記憶領域に、第1のデータを書き込む機能を有する。ここで、第1のデータとは、受付部801によって書込要求を受け付けたデータである。第2のデータとは、決定部802によって決定された第1の記憶装置への書込対象となるデータである。
具体的には、第2の書込部804は、第1の書込部803によって書込対象となるデータがディスク装置140に書き込み済みであると判定された場合、キャッシュメモリ111の書込対象となるデータが書き込まれている記憶領域を特定する。そして、第2の書込部804は、特定した記憶領域に書込要求を受け付けたデータを書き込む。
より具体的には、例えば、第2の書込部804は、M回前に書き込まれたデータが書き込まれている記憶領域に、書込要求を受け付けたデータを書き込む。また、より具体的には、例えば、第2の書込部804は、i番目のレコードに設定されたアドレスの記憶領域に、書込要求を受け付けたデータを書き込む。これにより、第2の書込部804は、ディスク装置140に書き込まれたデータに、書込要求を受け付けたデータを上書きして、キャッシュメモリ111のメモリ使用量を抑制することができる。
送信部805は、第2のデータが第1の記憶装置に書き込み済みと判定された場合、第1のデータの複写データを第2の記憶装置に送信する機能を有する。ここで、第1のデータとは、受付部801によって書込要求を受け付けたデータである。第2のデータとは、決定部802によって決定された第1の記憶装置への書込対象となるデータである。
具体的には、送信部805は、第1の書込部803によって書込対象となるデータがディスク装置140に書き込み済みと判定された場合、書込要求を受け付けたデータの書き込みに先立って、書込要求を受け付けたデータの複写データをバックアップ装置120に送信する。
これにより、送信部805は、書込要求を受け付けたデータの書き込みに先立って、バックアップ装置120にバックアップさせるデータを送信することができる。結果として、バックアップ装置120において、書込制御装置110から送信された新たな複写データで、不要となった複写データが上書きされる。
第1の書込部803は、コンピュータに書き込まれている第1のデータを第1の記憶装置に書き込む際に、コンピュータからの第1のデータの読み出しに失敗したことを検出する機能を有する。ここで、第1のデータとは、受付部801によって書込要求を受け付けたデータである。
具体的には、例えば、第1の書込部803は、キャッシュメモリ111に書き込まれている書込要求を受け付けたデータをディスク装置140に書き込む際に、キャッシュメモリ111からの書込要求を受け付けたデータの読み出しに失敗したことを検出する。これにより、第1の書込部803は、バックアップ装置120に、書込要求を受け付けたデータの複写データの送信要求を送信するトリガを検出することができる。なお、検出結果は、例えば、RAM403などの記憶領域に記憶される。
送信部805は、コンピュータに書き込まれている第1のデータを第1の記憶装置に書き込む際に、コンピュータからの第1のデータの読み出しに失敗した場合、第2の記憶装置に複写データの送信要求を送信する機能を有する。ここで、第1のデータとは、受付部801によって書込要求を受け付けたデータである。送信要求には、例えば、送信要求する複写データが、X回前に送信した複写データであることを示す情報が含まれる。このとき、バックアップ装置120は、X回前に受信した複写データを書込制御装置110に送信する。
具体的には、例えば、送信部805は、第1の書込部803によって書込要求を受け付けたデータの読み出しに失敗したことが検出された場合、バックアップ装置120に書込要求を受け付けたデータの複写データの送信要求を送信する。これにより、送信部805は、バックアップ装置120に複写データを送信させることができる。
受信部806は、複写データの送信要求が送信された結果、複写データを第2の記憶装置から受信する機能を有する。具体的には、例えば、受信部806は、送信部805によって複写データの送信要求が送信された結果、複写データをバックアップ装置120から受信する。これにより、受信部806は、書込要求を受け付けたデータの代わりにディスク装置140に書き込まれる複写データを受信することができる。なお、受信された複写データは、例えば、RAM403などの記憶領域に記憶される。
第1の書込部803は、受信した複写データを第1の記憶装置に書き込む機能を有する。具体的には、例えば、第1の書込部803は、受信部806によって受信された複写データを、書込要求を受け付けたデータの代わりに、ディスク装置140に書き込む。これにより、第1の書込部803は、キャッシュメモリ111の故障等によりデータが失われた場合であっても、書込要求を受け付けたデータと同一内容の複写データをディスク装置140に書き込むことができる。
(ディスク装置140へのデータの書込制御処理の内容を示す説明図)
次に、図9〜図14を用いて、書込制御装置110によるディスク装置140へのデータの書込制御処理の内容について説明する。なお、図1で説明した箇所と同様の箇所についての説明は省略する。
図9〜図14は、書込制御装置110によるディスク装置140へのデータの書込制御処理の内容を示す説明図である。図9において、書込制御装置110は1番目からN番目(N:1以上の自然数)までの記憶領域を有し、バックアップ装置120は複写データの書込先となる1番目からM番目(M:M=N)までの記憶領域を有する。
以下、書込制御装置110が、データAの書込要求を受け付けた場合、データBの書込要求を受け付けた場合、データCの書込要求を受け付けた場合、および、データDの書込要求を受け付けた場合について説明する。
図10において、(1)書込制御装置110は、ディスク装置140に対するデータAの書込要求をホスト装置130から受け付ける。
(2)書込制御装置110は、データAの書込要求を受け付けると、書込要求を受け付けたデータAをキャッシュメモリ111に書き込む。
(3)書込制御装置110は、データAをキャッシュメモリ111に書き込むと、チェックポインタP1の指定する1番目のレコードに設定されているアドレスを、データAが書き込まれたアドレス「0012FF50」に変更する。また、書込制御装置110は、チェックポインタP1の指定する1番目のレコードに設定されている書込状況を、データAがディスク装置140に書き込み済みでないことを示す情報「未」に変更する。そして、書込制御装置110は、チェックポインタP1の指定するレコードを2番目のレコードに変更する。
(4)書込制御装置110は、データAの複写データA’をバックアップ装置120に送信する。
(5)バックアップ装置120は、複写データA’を受信すると、複写データA’を書込先ポインタP2の指定する1番目の記憶領域122に書き込み、書込先ポインタP2の指定する記憶領域を2番目の記憶領域123に変更する。
図11において、(1)書込制御装置110は、ディスク装置140に対するデータBの書込要求をホスト装置130から受け付ける。
(2)書込制御装置110は、データBの書込要求を受け付けると、書込要求を受け付けたデータBをキャッシュメモリ111に書き込む。
(3)書込制御装置110は、データBをキャッシュメモリ111に書き込むと、チェックポインタP1の指定する2番目のレコードに設定されているアドレスを、データBが書き込まれたアドレス「0012FF54」に変更する。また、書込制御装置110は、チェックポインタP1の指定する2番目のレコードに設定されている書込状況を、データBがディスク装置140に書き込み済みでないことを示す情報「未」に変更する。そして、書込制御装置110は、チェックポインタP1の指定するレコードを3番目のレコードに変更する。
(4)書込制御装置110は、データBの複写データB’をバックアップ装置120に送信する。
(5)バックアップ装置120は、受信した複写データB’を書込先ポインタP2の指定する2番目の記憶領域123に書き込み、書込先ポインタP2の指定する記憶領域を3番目の記憶領域に変更する。
(6)書込制御装置110は、ディスク装置140に対するデータCの書込要求をホスト装置130から受け付ける。
(7)書込制御装置110は、データCの書込要求を受け付けると、書込要求を受け付けたデータCをキャッシュメモリ111に書き込む。
(8)書込制御装置110は、データCをキャッシュメモリ111に書き込むと、チェックポインタP1の指定する3番目のレコードに設定されているアドレスを、データCが書き込まれたアドレス「0012FF58」に変更する。また、書込制御装置110は、チェックポインタP1の指定する3番目のレコードに設定されている書込状況を、データCがディスク装置140に書き込み済みでないことを示す情報「未」に変更する。そして、書込制御装置110は、チェックポインタP1の指定するレコードを1番目のレコードに戻す。
(9)書込制御装置110は、データCの複写データC’をバックアップ装置120に送信する。
(10)バックアップ装置120は、複写データC’を受信すると、複写データC’を書込先ポインタP2が指定する3番目の記憶領域124に書き込み、書込先ポインタP2の指定する記憶領域を1番目の記憶領域122に戻す。
図12において、(1)書込制御装置110は、ディスク装置140に対するデータDの書込要求を受け付ける。
(2)書込制御装置110は、データDの書込要求を受け付けると、チェックポインタP1の指定する1番目のレコードに設定されている書込状況を参照する。書込制御装置110は、書込状況が「済」でないため、1番目のレコードに設定されているアドレス「0012FF50」の記憶領域に書き込まれているデータAを読み出す。そして、書込制御装置110は、読み出したデータAをディスク装置140に書き込む。
ここで、書込制御装置110は、書込状況が「済」である場合に、1番目のレコードに設定されているアドレス「0012FF50」の記憶領域に書き込まれているデータAを読み出さない。これにより、書込制御装置110は、同一内容のデータをディスク装置140に書き込む処理を省き、書込制御装置110での処理量を抑制するとともに、ディスク装置140に同一内容のデータが併存することを防ぐ。
図13において、(1)書込制御装置110は、データAをディスク装置140に書き込むと、データDをキャッシュメモリ111に書き込む。具体的には、例えば、書込制御装置110が、キャッシュメモリ111内の空き領域にデータDを書き込む。
(2)書込制御装置110は、データDをキャッシュメモリ111に書き込むと、チェックポインタP1の指定する1番目のレコードに設定されているアドレス「0012FF50」を、データDが書き込まれたアドレス「0012FF5c」に変更する。また、書込制御装置110は、チェックポインタP1の指定する1番目のレコードに設定されている書込状況を、データDがディスク装置140に書き込み済みでないことを示す情報「未」に変更する。そして、書込制御装置110は、チェックポインタP1の指定するレコードを2番目のレコードに変更する。
(3)書込制御装置110は、データDの複写データD’をバックアップ装置120に送信する。
(4)バックアップ装置120は、複写データD’を受信すると、複写データD’を書込先ポインタP2が指定する1番目の記憶領域122に書き込み、書込先ポインタP2の指定する記憶領域を2番目の記憶領域123に変更する。
このとき、バックアップ装置120において、複写データD’により複写データA’は上書きされるが、複写データA’の複写元であるデータAは、既にディスク装置140に書き込まれており、バックアップ不要のデータになっている。
このように、バックアップ装置120がM個の記憶領域から書込先となる記憶領域を順番にかつ周期的に選択して複写データを書き込むことで、1周期前に書き込まれた複写データが新たな複写データで上書きされることになる。また、書込制御装置110は、M個以下の個数のN個の記憶領域から読出先となる記憶領域を順番にかつ周期的に選択して、読み出したデータをディスク装置140に書き込む。
そのため、バックアップ装置120で複写データが上書きされる以前に、書込制御装置110で複写元のデータがディスク装置140に書き込まれるようにすることができる。そして、バックアップ装置120において、書込制御装置110から送信された新たな複写データで、既に複写元のデータがディスク装置140に書き込まれ不要となった複写データが上書きされるようにすることができる。
これにより、書込制御装置110は、データのバックアップが不要になったときに、複写データの削除要求などをバックアップ装置120に送信する処理が不要となる。結果として、書込制御装置110は、書込制御装置110での処理量を抑制するとともに、バックアップ装置120との通信量を抑制することができる。
また、図14を用いて、図12の(2)においてチェックポインタP1が指定するレコードのアドレスの記憶領域「0012FF50」に書き込まれたデータAの読み出しに失敗したことが検出された場合の書込制御処理について説明する。
(1)書込制御装置110は、データAの読み出しに失敗したことを検出すると、チェックポインタP1が指定するレコードに書き込まれたデータAの複写データA’の送信要求をバックアップ装置120に送信する。
(2)バックアップ装置120は、書込先ポインタP2が指定する記憶領域122に書き込まれている複写データA’を書込制御装置110に送信する。
(3)書込制御装置110は、複写データA’を受信すると、データAの代わりに複写データA’をディスク装置140に書き込む。これにより、書込制御装置110は、キャッシュメモリ111の故障等によりデータAが失われても、ディスク装置140にデータAと同一内容の複写データA’を書き込むことができる。
なお、送信要求には、例えば、送信要求する複写データが、X回前に送信した複写データであることを示す情報が含まれる。そして、バックアップ装置120は、X回前に受信した複写データを書込制御装置110に送信する。より具体的には、バックアップ装置120は、書込先ポインタP2が指定しているj番目の記憶領域を起点として、X回前に書き込んだ記憶領域であるj−X番目の記憶領域を特定する。そして、バックアップ装置120は、j−X番目の記憶領域に書き込まれている複写データを書込制御装置110に送信する。
(チェックテーブル作成処理の一例)
次に、図15を用いて、書込制御装置110によるチェックテーブル作成処理の処理内容について説明する。
図15は、実施の形態にかかる書込制御装置110のチェックテーブル作成処理手順の一例を示すフローチャートである。図15に示すように、まず、受信部806により、バックアップ装置120から、バックアップ装置120で複写データの書込先として使用可能なメモリ使用量Xを受信する(ステップS1501)。
次に、第1の書込部803により、受信したメモリ使用量Xをディスク装置140に書き込まれるデータに対して設定されている固定長で除算して、チェックテーブル112のレコード数を算出する(ステップS1502)。
そして、第1の書込部803により、算出したレコード数にチェックテーブル112の1レコード分のメモリ使用量を乗算して、チェックテーブル112のメモリサイズを算出する(ステップS1503)。次に、第1の書込部803により、算出したメモリサイズのメモリ領域を、チェックテーブル112のメモリ領域として獲得する(ステップS1504)。
そして、決定部802により、チェックポインタP1が指定するレコードの番号を示す変数iを1に設定し(ステップS1505)、チェックテーブル作成処理を終了する。これにより、書込制御装置110は、レコード数がバックアップ装置120での記憶領域の個数以下であるチェックテーブル112を作成することができる。
(書込制御処理手順の一例)
次に、書込制御装置110による書込制御処理の処理内容について説明する。まず、図16および図17を用いて、書込制御処理のうち、書込要求を受け付けたときに実行される第1の書込制御処理の処理内容について説明する。
図16および図17は、実施の形態にかかる書込制御装置110の第1の書込制御処理手順の一例を示すフローチャートである。図16において、まず、受付部801により、ホスト装置130から書込要求を受け付けたか否かを判定する(ステップS1601)。ここで、書込要求を受け付けていない場合(ステップS1601:No)、受付部801により、ステップS1601に戻り、書込要求を受け付けるのを待つ。
一方、書込要求を受け付けた場合(ステップS1601:Yes)、決定部802により、チェックポインタP1の指定するレコードの番号を示す変数iが、チェックテーブル112のレコード数Nより大きいか否かを判定する(ステップS1602)。ここで、変数iがN以下である場合(ステップS1602:No)、ステップS1604に移行する。一方、変数iがNより大きい場合(ステップS1602:Yes)、決定部802により、チェックポインタP1が指定するレコードの番号を示す変数iに1を設定する(ステップS1603)。
次に、決定部802により、チェックポインタP1が指定するレコードとして、i番目のレコードを設定する(ステップS1604)。そして、第1の書込部803により、チェックポインタP1が指定するi番目のレコードに設定されている書込状況は、書き込み済みを示す「済」であるか否かを判定する(ステップS1605)。ここで、「済」でない場合(ステップS1605:No)、図17のステップS1701に移行する。
一方、「済」である場合(ステップS1605:Yes)、第2の書込部804により、チェックポインタP1が指定するi番目のレコードに設定されているアドレスの記憶領域に、書込要求を受け付けたデータを書き込む(ステップS1606)。
そして、送信部805により、書込要求を受け付けたデータの複写データをバックアップ装置120に送信する(ステップS1607)。
次に、第1の書込部803により、チェックポインタP1の指定するi番目のレコードに、書込要求を受け付けたデータが書き込まれたアドレスと、書込要求を受け付けたデータがディスク装置140に書き込み済みでないことを示す情報と、を設定する(ステップS1608)。
そして、決定部802により、チェックポインタP1の指定するレコードの番号を示す変数iをインクリメントする(ステップS1609)。次に、送信部805により、ホスト装置130に書込終了応答を送信し(ステップS1610)、書込要求を受け付けたデータの書込処理を終了する。
図17において、第1の書込部803により、i番目のレコードに設定されているアドレスの記憶領域に書き込まれているデータを読み出し、ディスク装置140に書き込む(ステップS1701)。次に、第1の書込部803により、ステップS1701において、データの読み出しに成功したか否かを判定する(ステップS1702)。ここで、データの読み出しに成功した場合(ステップS1702:Yes)、図16のステップS1606に移行する。
一方、データの読み出しに成功しなかった場合(ステップS1702:No)、送信部805により、読み出しに失敗したデータの複写データの送信要求をバックアップ装置120に送信する(ステップS1703)。
次に、受信部806により、複写データを受信したか否かを判定する(ステップS1704)。ここで、複写データを受信していない場合(ステップS1704:No)、ステップS1704に戻り、受信部806により、複写データの受信を待つ。
一方、複写データを受信した場合(ステップS1704:Yes)、第1の書込部803は、複写データをディスク装置140に書き込み(ステップS1705)、図16のステップS1606に移行する。これにより、書込制御装置110は、ディスク装置140へのデータの書き込み、書込要求を受け付けたデータのキャッシュメモリ111への書き込み、書込要求を受け付けたデータの複写データのバックアップ装置120への送信を実行できる。
次に、図18および図19を用いて、書込制御処理のうち、書込指示を受け付けたときに実行される第2の書込制御処理の処理内容について説明する。
図18および図19は、実施の形態にかかる書込制御装置110の第2の書込制御処理手順の一例を示すフローチャートである。書込制御装置110による書込指示を受け付けたデータの書込処理の処理内容を示すフローチャートである。図18において、まず、受付部801により、書込指示を受け付けたか否かを判定する(ステップS1801)。ここで、書込指示を受け付けていない場合(ステップS1801:No)、受付部801により、ステップS1801に戻り、書込指示を受け付けるのを待つ。
一方、書込指示を受け付けた場合(ステップS1801:Yes)、決定部802により、チェックテーブル112のレコードの番号を示す変数kに1を設定する(ステップS1802)。次に、決定部802により、変数kがチェックテーブル112のレコード数Nより大きいか否かを判定する(ステップS1803)。ここで、変数kがNより大きい場合(ステップS1803:Yes)、書込指示を受け付けたデータの書込処理を終了する。
一方、変数kがN以下である場合(ステップS1803:No)、決定部802により、チェックテーブル112のk番目のレコードを選択する(ステップS1804)。次に、第1の書込部803により、k番目のレコードに設定されている書込状況は、書き込み済みを示す「済」であるか否かを判定する(ステップS1805)。ここで、「済」でない場合(ステップS1805:No)、図19のステップS1901に移行する。
一方、「済」である場合(ステップS1805:Yes)、決定部802により変数kをインクリメントして(ステップS1806)、ステップS1803に戻る。
図19において、まず、第1の書込部803は、k番目のレコードに設定されたアドレスの記憶領域に書き込まれているデータを読み出し、ディスク装置140に書き込む(ステップS1901)。
次に、ステップS1902〜ステップS1905の処理に移行する。ここでは、ステップS1902〜ステップS1905のそれぞれの処理は、ステップS1702〜ステップS1705のそれぞれの処理と同一の処理内容であるため、説明を省略する。
そして、第1の書込部803により、k番目のレコードに、書き込み済みであることを示す「済」を設定して(ステップS1906)、図18のステップS1806に移行する。これにより、書込制御装置110は、書込指示を受け付けたときに、ディスク装置140に書き込み済みでないデータを、ディスク装置140に書き込むことができる。
(起動処理の一例)
次に、図20を用いて、バックアップ装置120による起動処理の処理内容について説明する。
図20は、実施の形態にかかるバックアップ装置120の起動処理手順の一例を示すフローチャートである。まず、CPU501により、バックアップメモリ121について、ハードウェア故障をチェックする(ステップS2001)。
次に、CPU501により、故障があるか否かを判定する(ステップS2002)。ここで、故障がない場合(ステップS2002:No)、CPU501により、バックアップ装置120で複写データの書込先として使用可能なメモリ使用量Xを、書込制御装置110に送信して(ステップS2003)、起動処理を終了する。
一方、故障がある場合(ステップS2002:No)、CPU501により、エラーメッセージを出力して(ステップS2004)、起動処理を終了する。これにより、バックアップ装置120は、自装置が有する記憶領域の個数を示す情報を書込制御装置110に送信することができ、記憶領域への複写データの書き込みが可能な状態に移行することができる。
(複写データ書込処理の一例)
次に、図21を用いて、バックアップ装置120による複写データ書込処理の処理内容について説明する。
図21は、実施の形態にかかるバックアップ装置120の複写データ書込処理手順の一例を示すフローチャートである。図21において、CPU501により、複写データを受信したか否かを判定する(ステップS2101)。ここで、複写データを受信していない場合(ステップS2101:No)、ステップS2101に戻り、CPU501により、複写データの受信を待つ。
一方、複写データを受信した場合(ステップS2101:Yes)、CPU501により、書込先ポインタP2の指定する記憶領域の番号を示す変数jが、バックアップメモリ121が有する記憶領域の個数Mより大きいか否かを判定する(ステップS2102)。ここで、変数jがM以下である場合(ステップS2102:No)、ステップS2104に移行する。
一方、変数jがMより大きい場合(ステップS2102:Yes)、CPU501により、書込先ポインタP2の指定する記憶領域の番号を示す変数jに1を設定する(ステップS2103)。次に、CPU501により、j番目の記憶領域を選択する(ステップS2104)。そして、j番目の記憶領域に受信した複写データを書き込む(ステップS2105)。
次に、CPU501により、書込先ポインタP2の指定する記憶領域の番号を示す変数jをインクリメントして(ステップS2106)、複写データ書込処理を終了する。これにより、バックアップ装置120は、バックアップメモリ121に複写データを書き込むことができる。
(複写データ送信処理の一例)
次に、図22を用いて、バックアップ装置120による複写データ送信処理の処理内容について説明する。
図22は、実施の形態にかかるバックアップ装置120の複写データ送信処理手順の一例を示すフローチャートである。図22において、まず、CPU501により、複写データの送信要求を受信したか否かを判定する(ステップS2201)。複写データの送信要求を受信していない場合(ステップS2201:No)、ステップS2201に戻り、CPU501により、送信要求の受信を待つ。
複写データの送信要求を受信した場合(ステップS2201:Yes)、CPU501により、バックアップメモリ121から複写データを読み出す(ステップS2202)。次に、CPU501により、読み出した複写データを書込制御装置110に送信して(ステップS2203)、複写データ送信処理を終了する。
これにより、バックアップ装置120は、送信要求された複写データを書込制御装置110に送信することができる。
以上説明したように、実施の形態にかかる書込制御装置110によれば、バックアップメモリ121内の1番目からM番目までの記憶領域の中から書込先となるj番目の記憶領域を順番に選択して複写データを書き込むバックアップ装置120と通信することができる。また、書込制御装置110によれば、キャッシュメモリ111に書き込まれた一連のデータの書込順序と、バックアップ装置120が有する記憶領域の個数Mとに基づいて、バックアップ装置120で次に上書きされる複写データを特定することができる。
また、書込制御装置110によれば、バックアップ装置120で複写データが上書きされる前に、複写元のデータをディスク装置140に書き込むべきと判断して、複写元のデータをディスク装置140に書き込むことができる。また、書込制御装置110によれば、新たな複写データをバックアップ装置120に送信することにより、バックアップ装置120に不要になった複写データを新たに送信した複写データで上書きさせることができる。
これにより、書込制御装置110は、バックアップが不要になった複写データの削除要求やバックアップメモリ121内での複写データの書込先の指示を送信せずに、バックアップ装置に不要となった複写データに上書きさせることができるようになる。結果として、書込制御装置110は、書込制御装置110での処理量を抑制することができる。
また、書込制御装置110は、バックアップが不要になった複写データの削除要求をバックアップ装置120に送信する場合と比して、バックアップ装置120との通信量を抑制することができる。また、書込制御装置110によりキャッシュメモリ111のデータがディスク装置140に書き込まれるまで、該当データの複写データはバックアップ装置120において上書きせずに保存させておくことができる。
また、結果として、バックアップ装置120は、複写データの削除要求やバックアップメモリ121内での複写データの書込先の指示を受けずに、書込制御装置110から独立して、バックアップメモリ121内の空き領域に複写データを書き込むことができる。そのため、バックアップ装置120は、バックアップメモリ121のメモリ使用量を抑制することができる。また、バックアップ装置120は、自動的に、バックアップが不要になった複写データを、バックアップ装置120から新たに受信した複写データで上書きできるため、バックアップメモリ121のメモリ使用量を抑制することができる。
また、書込制御装置110によれば、データの書込順序と記憶領域の個数Mを参照することで、M回前にキャッシュメモリ111に書き込まれたデータが、バックアップ装置120で次に上書きされる複写データの複写元のデータであると判断することができる。
書込制御装置110によれば、キャッシュメモリ111内のいずれかのデータの書込指示を受け付けることで、書込指示を受け付けたデータをディスク装置140に書き込むことができる。また、書込制御装置110によれば、キャッシュメモリ111内のデータがディスク装置140に書き込み済みか否かを示す情報を記憶するチェックテーブル112を有することで、書込状況を管理することができる。
また、書込制御装置110によれば、ディスク装置140へ書き込み済みでないデータの書込指示を受け付けたときに、チェックテーブル112の書込状況を参照することで、ディスク装置140に書き込み済みでないデータを特定することができる。また、書込制御装置110によれば、特定したディスク装置140に書き込み済みでないデータをディスク装置140に書き込むことができる。
これにより、書込制御装置110は、ディスク装置140に書き込み済みでないデータをまとめて、ディスク装置140の連続する記憶領域に書き込むことで、ディスク装置140に対する書き込みにかかるシーク時間を抑制できる。また、書込制御装置110は、ディスク装置140の連続する記憶領域にデータを書き込んでおくことで、ディスク装置140に対する読み出しにかかるシーク時間を抑制できる。
また、書込制御装置110によれば、チェックテーブル112の書込状況を参照して、決定したディスク装置140に書き込むべきデータが書き込み済みであるか否か判定する。書込制御装置110によれば、決定したディスク装置140に書き込むべきデータが書き込み済みでないと判定された場合のみ、決定したディスク装置140に書き込むべきデータをディスク装置140に書き込む。これにより、書込制御装置110は、同一内容のデータをディスク装置140に書き込む処理を省くことができ、ディスク装置140に同一内容のデータが併存することを防ぐことができる。
また、書込制御装置110によれば、決定したディスク装置140に書き込むべきデータが書き込み済みであると判定された場合、書込要求を受け付けたデータをディスク装置140に書き込むべきデータが書き込まれた記憶領域に上書きする。これにより、書込制御装置110は、キャッシュメモリ111内のディスク装置140に書き込み済みのデータをディスク装置140に書き込み済みでないデータで上書きして、キャッシュメモリ111のメモリ使用量を抑制することができる。
また、書込制御装置110によれば、キャッシュメモリ111の故障等により、ディスク装置140に書き込むべきデータの読み出しに失敗した場合、読み出しに失敗したデータの複写データの送信要求をバックアップ装置120に送信する。そして、書込制御装置110によれば、バックアップ装置120から受信した複写データを、読み出しに失敗したデータの代わりに、ディスク装置140に書き込む。これにより、書込制御装置110は、キャッシュメモリ111の故障等によりデータが失われた場合であっても、当該データと同一内容の複写データをディスク装置140に書き込むことができる。
また、書込制御装置110によれば、ホスト装置130からディスク装置140に対する書込要求を受け付ける。書込制御装置110によれば、書込要求を受け付けると、ディスク装置140への書き込みに先立って、自装置内のキャッシュメモリ111に書込要求を受け付けたデータを書き込み、ホスト装置130に書込終了応答を送信する。これにより、書込制御装置110は、ホスト装置130に対する応答性能を向上させることができる。
なお、本実施の形態で説明した書込制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本書込制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本書込制御プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
第1の記憶装置に対する第1のデータの書込要求を受け付け、
前記第1のデータの書込要求以前の書込要求により前記コンピュータに書き込まれた一連のデータの書込順序と、データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択して当該受信したデータを上書き保存する第2の記憶装置が有する前記記憶領域の個数とに基づいて、前記一連のデータのうち、前記第2の記憶装置において次に選択される記憶領域に記憶されているデータと同一のデータを、前記第1の記憶装置への書込対象となる第2のデータに決定し、
決定した前記第2のデータが前記第1の記憶装置に書き込まれた場合、前記第1のデータの複写データを前記第2の記憶装置に送信する、
処理を実行させることを特徴とする書込制御プログラム。
(付記2)前記決定する処理は、
前記一連のデータの中から書込順序が遅い順に選ばれた前記記憶領域の個数分のデータのうち書込順序が最も早いデータを前記第2のデータに決定する、
ことを特徴とする付記1に記載の書込制御プログラム。
(付記3)前記コンピュータに、
前記一連のデータのうちの前記第1の記憶装置に書き込まれていない第3のデータの前記第1の記憶装置に対する書込指示を受け付け、
前記第3のデータが前記第1の記憶装置に書き込まれた場合、前記一連のデータのそれぞれが前記第1の記憶装置に書き込み済みか否かを表す書込状況を記憶するテーブル内の前記第3のデータの書込状況を書き込み済みに変更する、
処理を実行させることを特徴とする付記1または2に記載の書込制御プログラム。
(付記4)前記コンピュータに、
前記テーブル内の前記第2のデータの書込状況を参照して、前記第2のデータが前記第1の記憶装置に書き込み済みか否かを判定し、
前記第2のデータが前記第1の記憶装置に書き込み済みではないと判定された場合、前記第2のデータを前記第1の記憶装置に書き込み、
前記第2のデータが前記第1の記憶装置に書き込まれた場合、前記コンピュータ内の前記第2のデータが書き込まれている記憶領域に、前記第1のデータを書き込む、
処理を実行させることを特徴とする付記3に記載の書込制御プログラム。
(付記5)前記コンピュータ内に前記第1のデータを書き込む処理は、
前記第2のデータが前記第1の記憶装置に書き込み済みと判定された場合、前記コンピュータ内の前記第2のデータが書き込まれている記憶領域に、前記第1のデータを書き込み、
前記送信する処理は、
前記第2のデータが前記第1の記憶装置に書き込み済みと判定された場合、前記第1のデータの複写データを前記第2の記憶装置に送信することを特徴とする付記4に記載の書込制御プログラム。
(付記6)前記コンピュータに、
前記コンピュータに書き込まれている前記第1のデータを前記第1の記憶装置に書き込む際に、前記コンピュータからの前記第1のデータの読み出しに失敗した場合、前記第2の記憶装置に前記複写データの送信要求を送信し、
前記複写データの送信要求が送信された結果、前記複写データを前記第2の記憶装置から受信し、
受信した前記複写データを前記第1の記憶装置に書き込む、
処理を実行させることを特徴とする付記1〜5のいずれか一つに記載の書込制御プログラム。
(付記7)前記決定する処理は、
前記書込要求を受け付けるごとに前記コンピュータ内の1番目からN番目(N:1以上の自然数)までの記憶領域の中から順番に選択される記憶領域に書き込まれたデータを、前記第2のデータに決定し、
前記送信する処理は、
決定した前記第2のデータが前記第1の記憶装置に書き込まれた場合、データを受信した場合に1番目からM番目(M:N以上の自然数)までの記憶領域の中から書込先にする記憶領域を順番に選択して当該受信したデータを上書き保存する前記第2の記憶装置に、前記第1のデータの複写データを送信することを特徴とする付記1〜6のいずれか一つに記載の書込制御プログラム。
(付記8)前記第1の記憶装置は、ディスク装置であることを特徴とする付記1〜7のいずれか一つに記載の書込制御プログラム。
(付記9)コンピュータが、
第1の記憶装置に対する第1のデータの書込要求を受け付け、
前記第1のデータの書込要求以前の書込要求により前記コンピュータに書き込まれた一連のデータの書込順序と、データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択して当該受信したデータを上書き保存する第2の記憶装置が有する前記記憶領域の個数とに基づいて、前記一連のデータのうち、前記第2の記憶装置において次に選択される記憶領域に記憶されているデータと同一のデータを、前記第1の記憶装置への書込対象となる第2のデータに決定し、
決定した前記第2のデータが前記第1の記憶装置に書き込まれた場合、前記第1のデータの複写データを前記第2の記憶装置に送信する、
処理を実行することを特徴とする書込制御方法。
(付記10)第1の記憶装置に対する第1のデータの書込要求を受け付ける受付手段と、
前記第1のデータの書込要求以前の書込要求により前記コンピュータに書き込まれた一連のデータの書込順序と、データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択して当該受信したデータを上書き保存する第2の記憶装置が有する前記記憶領域の個数とに基づいて、前記一連のデータのうち、前記第2の記憶装置において次に選択される記憶領域に記憶されているデータと同一のデータを、前記第1の記憶装置への書込対象となる第2のデータに決定する決定手段と、
決定された前記第2のデータが前記第1の記憶装置に書き込まれた場合、前記第1のデータの複写データを前記第2の記憶装置に送信する送信手段と、
を備えることを特徴とする書込制御装置。
(付記11)第1の記憶装置にアクセス可能な書込制御装置と第2の記憶装置とが通信するシステムであって、
前記第2の記憶装置は、
データを受信した場合に複数の記憶領域の中から書込先にする記憶領域を順番に選択する選択手段と、
選択された前記記憶領域に当該受信したデータを書き込む書込手段と、を備え、
前記書込制御装置は、
前記第1の記憶装置に対する第1のデータの書込要求を受け付ける受付手段と、
前記第1のデータの書込要求以前の書込要求により前記書込制御装置に書き込まれた一連のデータの書込順序と、前記第2の記憶装置が有する前記記憶領域の個数とに基づいて、前記一連のデータのうち、前記第2の記憶装置において次に選択される記憶領域に記憶されているデータと同一のデータを、前記第1の記憶装置への書込対象となる第2のデータに決定する決定手段と、
決定された前記第2のデータが前記第1の記憶装置に書き込まれた場合、前記第1のデータの複写データを前記第2の記憶装置に送信する送信手段と、
を備えることを特徴とするシステム。