(57)【要約】【課題】  別の記憶装置へデータをバックアップするシステムにおいて、所定時間におけるコピー元とコピー先のデータの整合性をとることを目的とする。【解決手段】  ホスト計算機から業務の区切り毎に、識別子を付して記憶装置に書き込み要求を送り、ホスト計算機は、与えられた時間内に、バックアップ（コピー）可能なデータ量を識別子毎に求め、記憶装置にバックアップ指示を発行する。【選択図】  図１
2007286860.tif 000002
【特許請求の範囲】
【請求項１】
ホスト計算機と、前記ホスト計算機と接続された第１の記憶装置と、前記第１の記憶装置に接続された第２の記憶装置とを有し、前記ホスト計算機からのデータの格納要求を受けた前記第１の記憶装置が前記第１の記憶装置が有する第１の記憶領域にデータを格納するのと非同期に前記第２の記憶装置へ前記データを送信するデータ転送方法であって、
前記ホスト計算機は、業務の区切りとなるデータの格納要求に、業務の区切り単位を示す識別子を付して前記第１の記憶装置に送信し、
前記第１の記憶装置は前記ホスト計算機からの要求に基づいて、前記第２の記憶装置に未送信であるデータのデータ量を前記識別子毎に求め、前記識別子と前記データ量を前記ホスト計算機に送信し、
前記ホスト計算機は、前記第１の記憶装置から受けた前記データ量に基づいて前記第１の記憶装置から受けた識別子の中から特定の識別子を選択し、選択された識別子を前記第１の記憶装置に送信し、
前記第１の記憶装置は、前記識別子によってグループ化されたデータを前記第２の記憶装置へ優先的に送信することを特徴とするデータ転送方法。
【請求項２】
前記ホスト計算機は、前記第１の記憶装置がデータの送信元となるデータを特定し、特定されたデータに関して、前記第１の記憶装置から前記第２の記憶装置へ未送信であるデータのデータ量を前記第１の記憶装置に要求することを特徴とする請求項１記載のデータ転送方法。
【請求項３】
前記ホスト計算機は、予め定めた時間情報に基づいて周期的に前記要求を前記第１の記憶装置に送信することを特徴とする請求項２記載のデータ転送方法。
【請求項４】
前記ホスト計算機は、災害情報の通知を受け、前記災害情報に含まれる災害発生予測時間までに前記第２の記憶装置に送信可能なデータ量から前記識別子を特定することを特徴とする請求項１記載のデータ転送方法。
【請求項５】
前記ホスト計算機は、予め定められたデータ退避完了時刻までに前記第２の記憶装置に送信可能なデータ量から前記識別子を特定することを特徴とする請求項１記載のデータ転送方法。
【請求項６】
前記ホスト計算機は、第１の記憶装置が災害に耐えられる値を有し、災害情報に含まれる災害の予測値と前記災害に耐えられる値を比較し、災害予測値が大きい場合に、前記第１の記憶装置に対するデータ格納要求に対してエラーを通知するよう前記第１の記憶装置に対して要求することを特徴とする請求項１記載のデータ転送方法。
【請求項７】
前記ホスト計算機は、前記エラー通知を解除する要求を前記第１の記憶装置に送信することを特徴とする請求項５記載のデータ転送方法。
【請求項８】
前記第１の記憶装置から前記第２の記憶装置へ送られるデータは、前記ホスト計算機から送られたデータとデータの格納要求に関する更新情報とを含むデータであって、当該データは、前記第２の記憶装置からの要求に基づいて前記第１の記憶装置から前記第２の記憶装置へ送信されることを特徴とする請求項１記載のデータ転送方法。
【請求項９】
前記第１の記憶装置は、前記ホスト計算機で特定された識別子を受けた場合に、前記第２の記憶装置に、当該識別子に関するデータの送信要求を送るように前記第２の記憶装置に指示することを特徴とする請求項７記載のデータ転送方法。
【請求項１０】
業務の区切りとなるデータの格納要求に業務の区切り単位を示す識別子を付して発行するホスト計算機と、
記憶領域を有する第２の記憶装置と、
前記ホスト計算機と前記第２の記憶装置と接続され、前記ホスト計算機からのデータの格納要求を受けて第１の記憶領域にデータを格納し、前記データの格納と非同期に前記第２の記憶装置へ前記データを送信する第１の記憶装置とを有する情報処理システムであって、
前記第１の記憶装置は、前記ホスト計算機から未送信データに関する要求に基づいて、前記第２の記憶装置に未送信であるデータのデータ量を前記識別子毎に求め、前記識別子と前記データ量を前記ホスト計算機に送信し、前記ホスト計算機から送られてきた前期識別子に基づいて、前記識別子によってグループ化されるデータを前記第２の記憶装置へ優先的に送信することを特徴とする情報処理システム。
【請求項１１】
前記ホスト計算機は、前記第１の記憶装置がデータの送信元となるデータを特定し、特定されたデータに関して、前記第１の記憶装置から前記第２の記憶装置へ未送信であるデータのデータ量を前記第１の記憶装置に要求することを特徴とする請求項１０記載の情報処理システム。
【請求項１２】
前記ホスト計算機は、予め定めた時間情報に基づいて周期的に前記要求を前記第１の記憶装置に送信することを特徴とする請求項１１記載の情報処理システム。
【請求項１３】
前記ホスト計算機は、災害情報に含まれる災害発生予測時間までに前記第２の記憶装置に送信可能なデータ量から前記識別子を特定することを特徴とする請求項１０記載の情報処理システム。
【請求項１４】
前記ホスト計算機は、予め定められたデータ退避完了時刻までに前記第２の記憶装置に送信可能なデータ量から前記識別子を特定することを特徴とする請求項１０記載の情報処理システム。
【請求項１５】
前記ホスト計算機は、第１の記憶装置が災害に耐えられる値を有し、災害情報に含まれる災害の予測値と前記災害に耐えられる値を比較し、災害予測値が大きい場合に、前記第１の記憶装置に対するデータ格納要求に対してエラーを通知するよう前記第１の記憶装置に対して要求することを特徴とする請求項１０記載の情報処理システム。
【請求項１６】
前記ホスト計算機は、前記エラー通知を解除する要求を前記第１の記憶装置に送信することを特徴とする請求項１０記載の情報処理システム。
【請求項１７】
前記第１の記憶装置は、前記ホスト計算機から送られたデータとデータの格納要求に関する更新情報とを含むデータを生成し、前記第２の記憶装置からの要求に基づいて生成したデータを前記第２の記憶装置へ送信することを特徴とする請求項１０記載の情報処理システム。
【請求項１８】
前記第１の記憶装置は、前記ホスト計算機で特定された識別子を受けた場合に、前記第２の記憶装置に、当該識別子に関するデータの送信要求を送るように前記第２の記憶装置に指示することを特徴とする請求項１７記載の情報処理システム。
【請求項１９】
前記第１の記憶装置は、第１の記憶領域に格納されるデータに対してデータと格納要求に関する更新情報とを含むデータを第２の記憶領域に格納するとともに、前記第１の記憶領域の所定時刻におけるデータのコピーを第３の記憶領域に格納し、前記ホスト計算機から災害発生の予測時刻を受けた場合に、前記第２の記憶領域に格納されたデータと、前記第３の記憶領域に格納されたデータから、前記予測時刻より所定時間前のデータを生成することを特徴とする請求項１０記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
あるストレージ装置から遠隔地に配置されたストレージ装置へデータを転送する技術に関する。
【背景技術】
【０００２】
災害等により、ホストに接続されたストレージ装置に障害が発生する場合に備えて、遠隔地に別のストレージ装置を配置し、この遠隔地に配置されたストレージ装置にデータを退避するディザスタリカバリの技術がある。ここで、ホストと接続されたストレージ装置を正ストレージ装置、正ストレージ装置に対して遠隔地に配置されたストレージ装置を副ストレージ装置と呼ぶ。このように、正ストレージ装置、副ストレージ装置を備えたシステムにおいて、正ストレージ装置から副ストレージ装置へ同期又は非同期にデータを送る技術がある（特許文献１）。
正ストレージ装置から副ストレージ装置へ同期してデータを送る場合は、ホストからの書込み要求に対して正ストレージ装置、副ストレージ装置の両方に対してデータの書込みが完了した後に、ホストへ応答を返す。一方、非同期の場合は、副ストレージ装置へデータを書き込む前に、ホストへ応答を返し、その後、正ストレージ装置から副ストレージ装置へデータが送られ、副ストレージ装置にデータが書き込まれる。
【０００３】
【特許文献１】特開２００５−２２２１１０
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述のように、同期の場合は正ストレージ装置と同一なデータが副ストレージ装置に格納されていることが保証できる。しかしながら、正ストレージ装置と副ストレージ装置との距離が長くなると副ストレージ装置へのデータ転送に時間がかかり、ホストでの業務に支障をきたすことになる。一方、非同期の場合は正ストレージ装置と副ストレージ装置との距離を長くしてもホストの業務に支障をきたすことはないが、正ストレージ装置と副ストレージ装置との間で、ある時点において同一なデータが格納されていないといったことが起こる。この場合、災害により正ストレージ装置がダウンし、副ストレージ装置で業務を再開しようとしても、書き込まれたはずのデータが副ストレージ装置に格納されていない場合が生じ、業務の再開に時間がかかってしまうといった問題が生ずる。同様に、副ストレージ装置に格納されたデータを正ストレージ装置へリストアした場合にも、正ストレージ装置を障害発生前の状態に完全に戻せない場合が生じ、業務の再開に時間がかかってしまうといった問題が生じる。
【課題を解決するための手段】
【０００５】
ホストは、データを書き込む際に業務的に意味のある区切りを示す区切り識別子を書込要求に付して記憶システムであるストレージ装置に送る。ストレージ装置は、区切り識別子毎にデータ量を管理し、ホストから要求を受けた場合に、区切り識別子とデータ量とをホストに送る。ホストでは送られてきたデータ量に基づいて、所定時間内に転送可能なデータを区切り識別子の単位で求め、求めた区切り識別子をストレージ装置へ送る。ストレージ装置は、送られてきた区切り識別子に関するデータをコピー先のストレージ装置へ優先的に送る。
【発明の効果】
【０００６】
副ストレージ装置を利用した業務の再開をできる限り早く行うことが可能となる。
【発明を実施するための最良の形態】
【０００７】
図１に情報処理システムの構成を示す。
【０００８】
情報処理システムは、ホスト１０１ａ−１０１ｄ、ストレージ装置１０２ａ−１０２ｄとを有している。ホスト１０１ａ、１０１ｄとストレージ装置１０２ａ、ホスト１０１ｂとストレージ装置１０２ｂ、ホスト１０１ｃとストレージ装置１０２ｃとは、それぞれネットワークを介して接続されている。また、ストレージ装置１０２ａとストレージ装置１０２ｄとはネットワークを介して接続されている。更に、ストレージ装置１０２ａ、ストレージ装置１０２ｃは、それぞれストレージ装置１０２ｂとネットワークを介して接続されている。ここで、ホスト１０１a、１０１ｄ、ストレージ装置１０２ａ、１０２ｄをサイトＡ、ホスト１０１ｂとストレージ装置１０２ｂをサイトＢ、ホスト１０１ｃとストレージ装置１０２ｃをサイトＣとすると、サイトＡ、サイトＢ、サイトＣは地理的に離れた場所に配置されている。また、サイトＡ、Ｃのホスト１０１ａ、１０１ｄ、１０１ｃは通常業務を行うメインサイトである。サイトＢのホスト１０１ｃはサイトＡ、Ｃのデータの複製をバックアップデータとして保持し、障害が発生した場合に、サイトＡ、サイトＣに代替してホスト１０１ｂが業務を行うサブサイトである。
【０００９】
ホスト１０１は、プロセッサ１０３と、メモリ１０４とを有している。ホスト１０１ｄのメインメモリ１０４ｄには、業務プログラム１１０が格納されている。また、ホスト１０１ａ〜１０１ｃのメモリ１０４ａ〜１０４ｃには、それぞれ業務プログラム１１０と、コピー制御プログラム１１１が格納されている。プロセッサ１０３は、メモリ１０４に格納された業務プログラムやコピー制御プログラム１１１を読み出して、実行する。業務プログラム１１０の実行により、プロセッサ１０３から書込みデータ及び書込みコマンド、読出しコマンドが発行されるが、業務の区切りとなる書込みデータを送る際に書込みコマンドに業務的な区切りを意味する識別子（以下、「区切り識別子」と称す。）を付す。業務的な区切りとは、例えば、業務プログラム１１０が一連の処理を繰り返し実行する場合における、この繰り返される単位である。コピー制御プログラム１１１の処理については、後述する。
【００１０】
なお、ホスト１０１ｂのメモリ１０４ｂには、それぞれホスト１０１ａ、１０１ｄ、１０１ｃの業務プログラムが格納されており、サイトＡ、サイトＣが障害により業務を実行できなくなった場合に、サイトＢで業務を再開できるようになっている。
【００１１】
ストレージ装置１０２は、制御部１０５と、複数の記憶媒体１０６とを有している。記憶媒体１０６は、例えば、ディスク装置や、半導体メモリ等である。また、ストレージ装置１０２は、制御コマンドボリューム１２１、データボリューム１２２、ジャーナルボリューム１２３、スナップショットボリューム１２４を有している。各ボリュームは、１つ又は複数の記憶媒体１０６の記憶領域を論理的に区切った記憶領域（ボリューム）であり、これは制御部１０５によって提供される。なお、図１では各ストレージ装置１０２が、それぞれ一つのボリュームを有しているが、複数のボリュームを持つように設定することもできる。ホスト１０１は、この制御コマンドボリューム１２１、データボリューム１２２に対してデータの書込み又は読出しを行う。なお、制御コマンドボリューム１２１に格納されるデータは、後述するようにコマンドや各種パラメータであるデータを含む。また、１つの業務プログラムは、複数のデータボリューム１２２に対してデータの書込み又は読出しを行うよう割当てることができる。
【００１２】
また、サイトＡ、Ｃのストレージ装置が有するデータボリューム１２２、ジャーナルボリューム１２３とサイトＢのストレージ装置が有するデータボリューム１２２、ジャーナルボリューム１２３とはペアが形成されており、サイトＡ、Ｃのデータボリューム１２２、ジャーナルボリューム１２３に格納されたデータ又はジャーナルデータは、非同期でサイトＢのデータボリューム１２２、ジャーナルボリューム１２３へ転送される。更に、サイトＡのストレージ装置１０２ａとストレージ装置１０２ｄとの間でも、データボリューム１２２、ジャーナルボリューム１２３とは、必要に応じてペアが形成されており、非同期でデータが転送されている。
【００１３】
なお図１では、ストレージ装置１０２ｄがサイトＡ内にある場合を示したが、別のサイトにあっても良い。その場合、ホスト１０１ａは、ストレージ装置１０２ｂと同じようにストレージ装置１０２ｄを扱うことになる。また、ストレージ装置１０２ａに格納されているデータは、ストレージ装置１０２ｄ、１０２ｂにコピー（バックアップ）されるように、同じデータのコピー先が複数のストレージ装置に行われる構成としても良い。
【００１４】
以下、各ホスト及びストレージ装置の処理について詳細に説明する。
【００１５】
図２は、コピー制御プログラム１１１の構成と、コピー制御プログラム１１１の処理に必要な情報が格納されたテーブルを示したものである。このコピー制御プログラム１１１及び必要なテーブルは、ホスト１０１のメモリ１０４に格納されている。尚、コピー制御プログラム１１１は、プロセッサ１０３に読まれて実行されるが、プロセッサ１０３内にハードウェアとして構成されても、あるいは別々のハードウェアで構成されていてもよい。
【００１６】
コピー制御プログラム１１１はデータ退避決定部２０１、未送信データ取得部２０２、退避データ決定部２０３、退避指示実行部２０４を含む。また、コピー制御プログラム１１１を実行するために、危険情報保持テーブル２１１、サイト一覧テーブル２１２、業務データ格納先一覧テーブル２１３、データ退避先一覧テーブル２１４、未送信データ取得テーブル２１５、未送信データ一覧テーブル２１６、退避データ一覧テーブル２１７がある。
【００１７】
図３Ａ〜Ｇは、各テーブルを示したものである。ここでは、ホスト１０１ａが保持しているテーブルを示すが、他のホストも項目としては同様である。
【００１８】
図３Ａは、危険情報保持テーブル２１１を示したものである。このテーブルは、ホスト１０１が後述する災害予測情報を受けた場合に、その情報を登録するためのテーブルであり、災害の発生予測時刻３０１、被災規模３０２が設定される。
【００１９】
図３Ｂは、サイト一覧テーブル２１２を示したものである。このテーブルは、ホスト１０１と同じエリアに配置されているストレージ装置１０２の装置識別子３１１、各ストレージ装置１０２の災害に耐えうる値（耐被災許容値）３１２、完全にストレージ装置が停止すると予測される値（耐被災上限値）３１３とが設定される。ここでは、サイトＡのホスト１０１ａと同じエリアに配置されているストレージ装置１０２ａ（装置識別子０００１）、１０２ｄ（装置識別子０００２）の装置識別子、耐被災許容値、耐被災上限値が管理者により設定されている。
【００２０】
図３Ｃは、業務データ格納先一覧テーブル２１３を示したものである。これは、同じエリアに配置された各ホストの業務プログラムと業務プログラムのデータの格納先が設定されるテーブルであり、業務プログラム名３２１、データ名３２２、コピー元のストレージ装置の装置識別子３２３、コピー元のボリューム識別子（コピー先ｖｏｌ識別子）３２４が管理者により設定される。ここで、業務プログラムＡ、Ｂはホスト１０２ａが実行する業務プログラムであり、業務プログラムＣ、Ｄはホスト１０２ｂが実行する業務プログラムである。
【００２１】
図３Ｄは、データ退避先一覧テーブル２１４を示したものである。これは、図３Ｃに示した業務プログラムのデータが格納されるボリュームのペア関係が設定されるテーブルであり、コピー元装置識別子３３１、コピー元ｖｏｌ識別子３３２、コピー先装置識別子３３３、コピー先ｖｏｌ識別子３３４、コピータイプ３３５、優先度３３６、データ転送速度３３７が設定される。コピー元装置識別子３３１、コピー元ｖｏｌ識別子３３２、コピー先装置識別子３３３、コピー先ｖｏｌ識別子３３４、コピータイプ３３５、管理者が設定しても良いし、後述するストレージ装置のペア定義テーブルから読み出して設定しても良い。優先度３３６は、データ退避する場合の優先度である。管理者は、データの内容や、コピータイプに基づいて優先度を設定する。ここでは数値が小さいものほど優先度が高い場合を示している。データ転送速度３３７は、ペア毎に設定されている。これは、ストレージ装置間のデータ転送においては、全てのボリュームのデータを同じポート利用する場合や、異なったポートを利用する場合があるため、ボリューム毎にデータ転送速度が登録できるようになっている。このデータ転送速度３２８は、設計時の値を管理者が登録してもよいし、ストレージ装置において実際のデータ転送で測定される値を収集し、登録しても良い。
【００２２】
図３Ｅは、未送信データ取得テーブル２１５を示したものである。これは、後述するストレージ装置から未送信データに関する情報（未送信データ情報）を取得するための情報（未送信データ取得情報）であり、コピー元装置識別子３４１、コピー元ｖｏｌ識別子３４２、コピー先装置識別子３４３、コピー先ｖｏｌ識別子３４４が含まれる。取得フラグ３４５は、未送信データ情報をストレージ装置から取得したかどうかを示すものであり、「０」はまだ取得していない状態を、「１」は取得した状態を示している。
【００２３】
図３Ｆは、未送信データ一覧テーブル２１６を示したものであり、図３Ｅの未送信データ取得情報によって、ストレージ装置から取得した未送信データ情報が登録されている。未送信データ情報は、区切り識別子３５１、タイムスタンプ３５２、コピー元装置識別子３５３、コピー元ｖｏｌ識別子３５４、コピー先装置識別子３５５、コピー先ｖｏｌ識別子３５６、データ量３５７を含むものである。
【００２４】
図３Ｇは、退避データ一覧テーブル２１７を示したものである。このテーブルは、コピー元のストレージ装置毎に生成されるテーブルであり、ストレージ装置においてデータ退避に利用される情報が設定される。各テーブルには、発生予測時刻３６１、災害規模３６２、危険到達猶予時刻３６３、書込み拒否フラグ３６４、退避データ情報３６５が登録されている。退避データ情報３６５は、退避するデータを特定するための情報であり、区切り識別子、タイムスタンプ、コピー元装置識別子、コピー元ｖｏｌ識別子、コピー先装置識別子、コピー先ｖｏｌ識別子を含む未送信データ情報である。また、ストレージ装置へ、この未送信データ情報を送信したか否かを設定する状態３６６が設定される。
【００２５】
図３Ａ〜Ｇでわかるように、本情報処理システムでは、ホスト１０１ｄがコピー制御プログラム１１１を有していないため、ホスト１０２ａがホスト１０１ｄのデータの退避を行う構成としている。ホスト１０１ｄが、コピー制御プログラム１１１を有するようにしてもよい。
【００２６】
以下、ホスト１０１ａが災害予測情報を受けた場合を例に、コピー制御プログラム１１１の処理について説明する。ここで説明する災害予測情報は、地震に関するものであり、揺れの到達時刻と揺れの大きさの情報が含まれる。また、この災害予測情報は、所定エリア毎に災害予測情報を発信する装置があり、このエリア内のホストが受信する。従って、サイトＡ、Ｂ、Ｃが異なるエリアである場合、サイトＡのみ災害予測情報が送られる場合がある。また、広域災害となる場合には、サイトＡ、Ｂ、Ｃに災害予測情報が送られるが、その情報の内容が各サイトで異なったり、あるいは異なるタイミングで災害予測情報を受取る。災害予測情報は、無線、あるいは有線のネットワークを介して送られてくる。各ホストは、無線あるいは有線のネットワークを介して送られてくる災害予測情報を受信する受信装置を有しており、受信によりコピー制御プログラム１１１が実行される。
【００２７】
図４は、コピー制御プログラム１１１の処理を示したものである。
【００２８】
コピー制御プログラム１１１は、受取った災害予測情報を危険情報保持テーブル２１１に設定する（ステップ４０１）。具体的には、ホスト１０１ａが災害予測情報を受取った場合、発生予測時刻３０１に災害予測情報に含まれる揺れの到達時刻を、被災規模３０２に災害予測情報に含まれる揺れの大きさの情報を登録する。
【００２９】
次に、データの退避が必要かどうかを判断する（ステップ４０２）。これは、危険情報保持テーブル２１１の被災規模３０２の値と、サイト一覧テーブル２１２の耐被災許容値３１２とを比較し、被災規模の値が耐被災許容値より小さい場合（ステップ４０２で「Ｎ」）、データの退避が不要と判断し、処理を終了する。一方、被災規模の値が耐被災許容値以上となるストレージ装置がある場合、データの退避が必要と判断し（ステップ４０２で「Ｙ」）、被災規模の値が耐被災許容値以上となるストレージ装置を特定する（ステップ４０３）。次に、特定したストレージ装置がコピー元のストレージ装置であるデータを特定し（ステップ４０４）、更に、特定したストレージ装置がコピー先のストレージでないデータを特定し（ステップ４０５）、この特定したデータを未送信データ取得テーブル２１４に設定する（ステップ４０６）。図３Ａ、Ｂより、ステップ４０３で、ストレージ装置１０２ａ、１０２ｄが特定される（ストレージ装置１０２ａ、１０２ｄの装置識別子は、それぞれ０００１、０００２である。）。そして、ステップ４０４により、ストレージ装置１０２ａ、１０２ｄがコピー元のストレージ装置であるデータ（ＤＢ−Ａ〜ＤＢ−Ｄ）が特定され、その後、ステップ４０５で、ストレージ装置１０２ａ、１０２ｄがコピー先のストレージ措置であるデータ（ＤＢ−Ｃ、ＤＢ−Ｄ）が除かれ、結果としてＤＢ−Ａ、ＤＢ−Ｂのデータが未送信データ取得テーブル２１５に設定される。なお、未送信データ取得テーブル２１５への設定は、データ退避先一覧テーブル２１４に設定された優先順位に従う。次に、未送信データ一覧テーブル２１５の取得フラグに「０」を設定し（４０６）、未送信データ取得部２０２、退避データ決定部２０３、退避指示実行部２０４を実行する（ステップ４０７）。これにより未送信データ取得部２０２、退避データ決定部２０３、退避指示実行部２０４の処理が、本処理と並行して実行される。次に、危険情報保持テーブル２１１の被災規模３０２と、サイト一覧テーブル２１２の耐被災上限値３１３とを比較し（ステップ４０８）、被災規模が耐被災上限値以上のストレージ装置がある場合、当該ストレージ装置の退避データ一覧テーブル２１７の書込み拒否フラグに「１」を、状態に「未送信」を設定し（ステップ４０９）、処理を終了する。ステップ４０８で全てのストレージ装置について被災規模が耐被災上限値より小さい場合、そのまま処理を終了する。
【００３０】
次に、未送信データ取得部２０２の処理を説明する。図５は、未送信データ取得部２０２の処理を示したものである。まず、未送信データ取得テーブル２１５の取得フラグに「０」が設定されている、未送信データ取得情報を特定する（ステップ５０１）。ここでは、番号１の未送信データ取得情報が選択される。未送信データ取得情報が特定されたので（ステップ５０２で「Ｙ」）、選択した未送信データ取得情報に含まれるコピー元装置識別子が同一で、取得フラグが「０」の未送信データ取得情報を特定し（ステップ５０３）、特定した未送信データ取得情報により、ストレージ装置へ送るデータを生成する（ステップ５０４）。ここでは、ステップ５０１で選択された、シーケンス番号１のコピー元装置識別子（０００１）と同じ、コピー元装置識別子を有し、取得フラグが「０」である、番号２の未送信データ取得情報が特定される。そして、ステップ５０４で、図６Ａに示すデータを生成する。図６Ａはストレージ装置へ送られるデータの構造を示したものであり、後述する未送信データ情報を取得する未送信データ情報取得プログラム９１８を実行するコマンドと、取得する未送信データ情報を特定するコピー元装置識別子、コピー元ｖｏｌ識別子、コピー先装置識別子、コピー先ｖｏｌ識別子を含むものである。次に、生成したデータをストレージ装置１０２へ送る（ステップ５０５）。この生成したデータはストレージ装置１０２の制御コマンドボリューム１２１へ格納される。ストレージ装置１０２では、このデータに含まれるコマンドにより、未送信データ情報取得プログラム９１８を実行し、未送信データ情報を取得し、制御コマンドボリューム１２１に格納する。未送信データ取得部２０２は、制御コマンドボリューム１２１に格納された未送信データ情報を読み出す（ステップ５０６）。次に、読み出された未送信データ情報が、未送信データ一覧テーブル２１６に登録されているか判断し（ステップ５０７）、既に登録されていれば、ステップ５０１へ戻る。登録されていない場合には、未送信データ一覧テーブル２１６に登録する（ステップ５０８）。
次に退避データ決定部２０３の処理について説明する。図７は、退避データ決定部２０３の処理を示したものである。
【００３１】
まず、ｉ＝１を設定する（ステップ７０１）。次に、データ退避先一覧テーブル２１３で優先度がｉのコピー元装置識別子、コピー元ｖｏｌ識別子、コピー先装置識別子、コピー先ｖｏｌ識別子を特定する（ステップ７０２）。次に、特定されたコピー元装置識別子、コピー元ｖｏｌ識別子、コピー先装置識別子、コピー先ｖｏｌ識別子と同じコピー元装置識別子、コピー元ｖｏｌ識別子、コピー先装置識別子、コピー先ｖｏｌ識別子を有する未送信データ情報を未送信データ一覧テーブル２１７から特定する（ステップ７０３）。例えば、優先度が１（ｉ＝１）の場合、図３では、ステップ７０２でデータ退避先一覧テーブル２１３の番号１が特定され、ステップ７０３で未送信データ一覧テーブル２１６の番号１〜３の未送信データ情報が特定される。次に、未送信データ情報があるかを判断し（ステップ７０４）、未送信データ情報がある場合、区切り識別子毎に、回線速度とデータ量からデータ伝送予測時間（データ量/データ転送速度）を求める（ステップ７０５）。このステップ７０５で、番号１〜３は、それぞれ２．５ｓｅｃと求められる。次に、退避データ一覧テーブル２１７に危険到達猶予時間が設定されているかを判断し（ステップ７０６）、登録されていない場合、危険情報保持テーブル２１１の発生予測時刻３０１と、ホスト１０１の時計による現在の時刻から、災害発生予測時刻までの残りの時間（危険到達猶予時間）を求め、退避データ一覧テーブル２１７に求めた危険到達猶予時間と、危険情報保持テーブル２１１に登録されている発生予測時刻、被災規模とを設定する（ステップ７０８）。退避データ一覧テーブルに危険到達猶予時間が既に登録されている場合（ステップ７０６で「Ｙ」）、登録された危険到達猶予時間から退避データ一覧テーブル２１７に登録された退避データ情報のデータ伝送予測時間を差し引いた時間を新たな危険到達猶予時間とする（ステップ７０７）。新たな危険到達猶予時間を求める理由については後述する。
【００３２】
そして、求めたデータ伝送予測時間と危険到達猶予時間より、タイムスタンプが小さい順（つまり、古いデータ順）に、危険到達猶予時間内で転送可能な未送信データ情報を特定する（ステップ７０９）。例えば、危険到達猶予時間が４secである場合、シーケンス番号１の未送信データ情報が特定され、危険到達猶予時間が、１０secである場合には、シーケンス番号１〜３の未送信データ情報が特定される。危険到達猶予時間が１secであれば、いずれの未送信データ情報も選択されない。
【００３３】
次に、未送信データ情報が特定されたかを判断し（ステップ７１０）、特定されていれば、未送信データ情報を退避データ一覧テーブル２１７の退避データ情報３６５として登録し、状態に「未送信」を設定する（ステップ７１１）。次にｉ＝ｉ＋１とし（ステップ７１２）、優先度がｉのデータがデータ退避先一覧テーブル２１４に登録されているかを判断し（ステップ７１３）、登録されていればステップ７０２から処理を開始する。もし登録されていなければ、ステップ７０１に戻り、優先度１から同じ処理を行う。このように再び優先度１から同じ処理を行う理由は、未送信データ取得部２０２がストレージ装置から順次、未送信データ情報を取得しているためである。従って、図７に示す処理で、未送信データ情報が特定され退避データ情報として登録されたとしても、その後、新たに未送信データ情報が登録される場合があるからである。このように新たな未送信データ情報について転送可能かを判断するために、ステップ７０７で既に求めた危険到達猶予時間から既に退避データ情報として登録されたデータの転送時間を差し引いたものを新たな危険到達猶予時間としている。
【００３４】
以上、未送信データ取得部２０２、退避データ決定部２０３について説明したが、この処理は、次に説明する退避指示実行部２０４によって終了されるまで、繰り返し実行される。
【００３５】
次に、退避指示実行部２０５の処理について説明する。図８は、退避指示実行部２０４の処理を示したものである。
【００３６】
まず、退避データ一覧テーブル２１７を順次参照し、状態３６６が「未送信」となっているものがあるかを判断する（ステップ８０１）。そして、「未送信」となっているものがあれば、当該退避データ一覧テーブルの「未送信」となっているものからストレージ装置へ送るデータを生成する（ステップ８０２）。
【００３７】
図６Ｂはデータ形式の一例を示したものである。コマンドとしては、登録コマンド、データ退避プログラム実行コマンド、転送コマンドがある。また、登録コマンドのパラメータとして、書込み拒否フラグ、発生予測時刻、被災規模、危険到達猶予時間がある。データ退避プログラム実行コマンドのパラメータとして、区切り識別子毎に、区切り識別子、コピー元ｖｏｌ識別子、コピー先ｖｏｌ識別子、タイムスタンプがある。また転送コマンドのパラメータとして、転送先であるストレージ装置を特定する装置識別子、登録コマンド、発生予測時刻、被災規模、危険到達猶予時間がある。転送コマンドとは例えば、ストレージ装置１０２ａを介してストレージ装置１０２ｂへパラメータを送る場合に用いるものである。そのため、転送コマンドと共に、転送先のストレージ装置で実行するコマンド（登録コマンド）が含まれている。「未送信」となっているもののコマンド及びパラメータを設定し、それ以外はＮＵＬＬを設定する。例えば、退避データ一覧テーブルの書込み禁止フラグについて「未送信」が設定されている場合、登録コマンド、書込み禁止フラグのみ設定し、その他についてはＮＵＬＬを設定する。
【００３８】
次に、退避指示実行部２０４は、生成したデータを書込みデータとしてストレージ装置１０２へ送り、状態を「送信済」に設定する（ステップ８０３）。次に、現在時刻と発生予測時刻を比較し（ステップ８０４）、まだ発生予測時刻でない場合には、ステップ８０１へ戻る。現在時刻が発生予測時刻以上となっている場合、未送信データ取得部２０２、退避データ決定部２０３の処理を終了させ（ステップ８０５）、予め定めた所定時間待ち（ステップ８０６）、ストレージ装置を通常状態に戻すためのデータをストレージ装置１０２へ送り（ステップ８０７）、処理を終了する。ストレージ装置を通常の状態に戻すためには、ストレージ装置で管理されている書込み拒否フラグ、発生予測時刻、被災規模、危険到達猶予時間、優先制御情報を削除すれば良い。そのため、図６Ｃに示すように削除コマンドと、削除対象を指定するパラメータである書込み拒否フラグ、発生予測時刻、被災規模、危険到達猶予時間、優先制御情報を含むデータをストレージ装置へ送る。
【００３９】
以上説明したように、コピー制御プログラム１１１は、災害発生までの残り時間から退避すべきデータの特定、ストレージ装置への書込み拒否の設定を行うものである。尚、ここで説明したように、ストレージ装置１０２に処理を実行させるためのコマンドをデータの形式に変換して行っているが、ホスト１０１とストレージ装置１０２とを専用のネットワークで接続し、ストレージ装置１０２の制御部１０５へ直接、コマンドを送るようにしてもよい。また、コピー制御プログラム１１１の機能をストレージ装置１０２に設け、ストレージ装置１０２内で処理を行う構成としても良い。
【００４０】
次に、ストレージ装置１０２の処理について説明する。
図９は、ストレージ装置１０２の制御部１０５を示したものである。制御部１０５は、処理を実行するプロセッサ９０１と各種プログラムやプログラムの実行に必要なデータが格納される共有メモリ９０２、及び書込みデータ又は読出しデータが格納されるキャッシュメモリ９０３とを有している。共有メモリ９０２には、制御コマンド処理プログラム９１１、Ｉ/Ｏ処理プログラム９１２、コピーデータ送信プログラム９１３、ジャーナルデータ送信プログラム９１４、ジャーナルデータ反映プログラム９１５、スナップショット取得プログラム９１６、データ回復プログラム９１７、未送信データ情報取得プログラム９１８、未送信データ退避プログラム９１９、優先制御プログラム９２０、制御テーブル９３１、コピー制御テーブル９３２、ボリューム管理テーブル９３３、ペア定義テーブル９３４、ジャーナルデータ管理テーブル９３５、スナップショット管理テーブル９３６が格納されている。尚、上述した各プログラムは、プロセッサ９０１に読まれて実行されるが、制御コマンド処理部、Ｉ/Ｏ処理部、コピーデータ転送部、ジャーナルデータ送信部、データ反映部、スナップショット取得部、データ回復部、退避データ取得部、データ退避部としてプロセッサ９０１内にハードウェアとして構成されても、あるいは別々のハードウェアで構成されていてもよい。
【００４１】
また、ここでは、全てのストレージ装置１０２の制御部１０５が同じ構成をとることを前提としているが、必要に応じて構成を変えても良い。例えば、ジャーナルデータによるコピーをしない場合には、ジャーナルデータ送信プログラム９１４、ジャーナルデータ反映プログラム９１５はなくても良い。また、ジャーナルデータによるコピーを行う場合、ジャーナルデータを送信するストレージ装置の制御部には、ジャーナルデータ反映プログラム９１５は不要であり、ジャーナルデータを受信するストレージ装置の制御部には、ジャーナルデータ送信プログラム９１４は不要であることが後述の説明から明らかである。テーブルについても、プログラムに必要なテーブルを有していれば良いことが後述の説明から明らかである。
【００４２】
図１０Ａ〜１０Ｈはストレージ装置の共有メモリに格納、管理されている情報を示したものである。ここでは、ストレージ装置１０２ａを例に、図１０Ａ〜図１０Ｆを用いて説明する。
【００４３】
図１０Ａは、制御テーブル９３１を示したものである。このテーブルには、書込拒否フラグ１００１、災害情報１００２、優先制御情報１００３、スナップショット制御情報１００４、データ回復制御情報１００５が設定される。書込拒否フラグ１００１は、「０」が設定されている場合には、ホスト又はストレージ装置から送られてきたデータの書込み要求に対して記憶領域にデータを書込み、ホストから送られてきた読出し要求に対しては記憶領域からデータを読み出す。「１」が設定されている場合には、ホスト又はストレージ装置からの書込み要求に対して「エラー」を戻し、データの書込みは行わない。読出し要求に対しては記憶領域からデータを読出し、データを要求元へ送信する。災害情報１００２は、自ストレージ装置の災害情報と、他ストレージ装置の災害情報とを設定できるようになっている。災害情報としては、ストレージ装置の装置識別子、災害発生予測時刻、災害規模、危険到達猶予時間の情報が設定される。優先制御情報１００３は、一次的に優先される処理（プログラム）が登録される。スナップショット制御情報１００４は、スナップショットを取得の対象となるデータボリュームの識別子、スナップショットの開始時刻、スナップショットを取得する間隔が登録される。ここでは、２つのデータボリュームに対して、スナップショットを取得することが設定されている。データ回復制御情報１００５は、データ回復の対象となるボリューム識別子と、回復したい時刻の情報が設定される。
【００４４】
図１０Ｂは、コピー制御テーブル９３２を示したものである。このテーブルは、他のストレージ装置へ送信するデータが発生した場合に、タイムスタンプ１０１１、区切り識別子１０１２、データが格納されたキャッシュメモリのアドレス１０１３、コピー元ｖｏｌ識別子１０１４、コピー先ｖｏｌ識別子１０１５、優先フラグ１０１６が設定される。そして、番号（＃）の小さい順にデータが送られる。タイムスタンプ１０１１は、ストレージ装置で書込みデータを受信した時刻である。区切り識別子１０１２は、ホストから送られてくる書込みコマンドに区切り識別子が付されている場合に、その区切り識別子が設定される。優先フラグ１０１６は、通常は「０」が設定されているが、ホストからのデータの退避指示を受け、優先して送信するデータがある場合に設定される。なお、番号１〜１０、１３〜２２については、タイムスタンプの小さい順に並んでいる。これは、番号１〜１０、１３〜２２が後述するリモートコピーのデータであり、ストレージ装置への書込み要求の順に設定されるためである。一方、番号１１、１２は、後述するジャーナルコピーであり、コピー先のストレージ装置から要求を受けたタイミングでデータの転送を行ためである。
【００４５】
図１０Ｃは、ボリューム管理テーブル９３３を示したものである。このテーブルには、ストレージ装置で管理されているボリュームの識別子１０２１、ボリュームの用途１０２２、ボリュームが使われているかどうかを示す状態１０２３が設定されている。ボリュームの用途１０２２とは、制御コマンドボリューム、データボリューム、ジャーナルボリューム、スナップショットボリューム等である。状態１０２３で「使用中」とは、ホストがアクセス可能なように設定されている場合、書込みデータが格納された場合を意味する。
【００４６】
図１０Ｄは、ペア定義テーブル９３４を示したものである。このテーブルには、コピー元のストレージ装置の識別子であるコピー元装置識別子１０３１、コピー元のボリュームの識別子であるコピー元ｖｏｌ識別子１０３２、コピー先のストレージ装置の識別子であるコピー先装置識別子１０３３、コピー先のボリュームの識別子であるコピー先ｖｏｌ識別子１０３４、タイプ１０３５、ジャーナルデータが格納されるジャーナルデータボリュームの識別子であるＪＮＬｖｏｌ識別子１０３６、コピーグループ識別子１０３７が設定される。タイプ１０３５は、後述するリモートコピー（ＲＣ）、又はジャーナルコピー（ＪＣ）のいずれが設定される。ＪＮＬｖｏｌ識別子１０２６は、ジャーナルコピーの場合に、ジャーナルデータが格納されるボリュームの識別子が設定される。コピーグループ識別子１０３７は、複数のボリュームのデータをグループとしてコピーする場合に設定される。図１０Ｄでは、番号６、７にコピーグループ識別子が設定されている。この２つのボリュームに格納されるデータは、所定のタイミングで同期がとられてコピーされる。なお、番号５については、コピー先装置識別子、コピー先ｖｏｌ識別子が設定されていないにもかかわらず、ＪＮＬｖｏｌ識別子が設定されている。これは、単にコピー元ｖｏｌ識別子１：０６に格納されるデータのジャーナルデータを取得していることを意味している。
【００４７】
図１０Ｅは、ジャーナルデータ管理テーブル９３５を示したものである。このテーブルは、ジャーナルデータが格納さるボリュームの識別子（ｖｏｌ識別子）１０４１と、最新のジャーナルデータが書き込まれているボリュームのアドレス１０４２及びタイムスタンプ１０４３、ジャーナルデータが読み出されたところのボリュームのアドレス１０４４及びタイムスタンプ１０４５が登録されている。このタイムスタンプ１０４３、１０４５は、ストレージ装置で書込みデータを受信した時刻である。例えば、ボリューム１：０５については、０９：５２：３０のタイムスタンプのデータまで格納され、その中から０９：５０：３０までのデータが読み出されたことを意味する。ボリューム１：０５は、図１０Ｄのペア定義テーブルより、データボリューム１：０４のデータに対するジャーナルデータが格納されていることが分かる。また、このジャーナルボリューム１：０５からジャーナルコピーのために０９：５０：１０、０９：５０：３０のタイムスタンプのデータが読み出され、図１０Ｂのコピー制御テーブルの番号１１、１２に設定されている。なお、ボリュームの記憶領域は、制限があるため、全ての記憶領域にジャーナルデータが書き込まれると、既に読み出されたジャーナルデータに対して上書きしていく。また、ジャーナルデータ管理テーブル９３５の要求フラグ１０４６は、コピー先のストレージ装置で利用されるものである。後述するようにジャーナルコピーの場合、コピー先のストレージ装置からの要求に基づいてジャーナルデータを送信する。要求フラグ１０４６は、コピー先のストレージ装置で、コピー元のストレージ装置にジャーナルデータの送信要求を行ったか否かを示すもので、要求を行った場合に「１」、要求に対してジャーナルデータを取得した場合に「０」が設定される。図１０Ｅは、コピー元のストレージ装置のジャーナルデータ管理テーブルを示したものであり、このフラグは利用しないので、「不要」を設定している。なお、コピー先のストレージ装置のジャーナルデータ管理テーブルの例を図１０Ｇに示す。
【００４８】
図１０Ｆは、スナップショット管理テーブル９３６を示したものである。このテーブルは、スナップショットの取得対象であるデータボリュームの識別子（データｖｏｌ識別子）１０５１、スナップショットのデータが格納されているボリュームの識別子（スナップショットｖｏｌ識別子）１０５２、スナップショットを取得した時刻１０５３が設定される。
【００４９】
図１０Ｇ、１０Ｈは、コピー先のストレージ装置で管理されているペア定義テーブル９３４、ジャーナルデータ管理テーブル９３５を示したものである。設定される情報の項目は、図１０Ｄ、図１０Ｅと同じである。
【００５０】
まず、ストレージ装置１０２における、リモートコピー、ジャーナルコピー及び、データ回復処理について説明する。
【００５１】
図１１は、リモートコピー、ジャーナルコピー、データ回復処理の概念を示した図である。ここでは、コピー元のストレージ装置をストレージ装置１０２ａ、コピー先のストレージ装置をストレージ装置１０２ｂとして示している。
【００５２】
まず、リモートコピーについて説明する。リモートコピーは、コピー元のストレージ装置からコピー先のストレージ装置のデータボリュームに格納されるデータを送るものである。
【００５３】
図１２は、データ送信プログラム９１３の処理を示したものである。
【００５４】
データ送信プログラム９１３は、コピー制御テーブル９３２に送信すべきデータがあるかを判断する（ステップ１２０１）。コピー制御テーブル９３２に制御情報が設定されていれば、送信すべきデータがあることになる。また、データの送信は、コピー制御テーブル９３２の番号が小さいものから行う。送信すべきデータがある場合、制御情報のコピー先ｖｏｌ識別子１０１５とペア定義テーブル９４３のコピー先ｖｏｌ識別子１０３４からコピー先のストレージ装置を特定し（ステップ１２０２）、コピー制御情報のキャッシュメモリのアドレスに基づいてキャッシュメモリに格納されているデータと、書込みコマンドを特定したストレージ装置へ送信する（１２０３）。データの送信が完了すると、コピー制御テーブル９３２から送信したデータに関する制御情報を削除する（ステップ１２０４）。その後、コピー制御テーブル９３２に送信すべきデータがあるかを判断するため、ステップ１２０１へ戻る。
【００５５】
なお、ストレージ装置１０２ｂに送られたデータは、ストレージ装置１０２ｂのキャッシュメモリ９０３ｂに格納され、順次、対応するデータボリューム１２２ｂに対応する記憶媒体１０６ｂに格納される。
【００５６】
次に、ジャーナルコピーについて説明する。ジャーナルコピーは、コピー元のストレージ装置からコピー先のストレージ装置へ、ジャーナルデータを送るものである。具体的には、図１１に示すようにストレージ装置１０２ａのボリューム１：０４に格納されているデータのジャーナルデータがボリューム１：０５に格納され、このジャーナルデータをストレージ装置１０３ｂのボリューム３：０５に格納し、その後、ジャーナルデータに含まれるデータをボリューム３：０４に格納するものである。ジャーナルデータについては、後述する。なお、ストレージ装置１０２ａからジャーナルデータの送信は、ストレージ装置１０２ｂの送信要求に基づいて行われる。
【００５７】
図１３は、ストレージ装置１０２ｂのジャーナルデータ反映プログラム９１５の処理を示したものである。ジャーナルデータ反映プログラム９１５は、ストレージ装置１０２ｂの制御テーブルの優先制御情報を参照し、ジャーナルコピーが設定されているかを判断する（ステップ１３０１）。優先制御情報にジャーナルコピーが設定されている場合（ステップ１３０１で「Ｙ」の場合）、優先制御情報に設定されているコピー先ｖｏｌ識別子と、ストレージ装置１０２ｂのペア定義テーブルからジャーナルデータを格納するＪＮＬｖｏｌ識別子を特定し（ステップ１３０２）、ステップ１３０４の処理に移る。ステップ１３０１で優先制御情報にジャーナルコピーが設定されていない場合（ステップ１３０１で「Ｎ」の場合）、ジャーナルデータ管理テーブルの要求フラグに「０」が設定され、書込みタイムスタンプと、読出しタイムスタンプの差が大きいジャーナルボリュームを特定する（ステップ１３０３）。図１０Ｇは、ストレージ装置１０２ｂのジャーナルデータ管理テーブル９３５を示したものである。ここで、ボリューム３：０５、３：１２、３：１３は、ジャーナルコピーで利用されるジャーナルボリュームである。書込みのタイムスタンプは、ジャーナルデータに格納された最新のジャーナルデータのタイムスタンプであり、読出しのタイムスタンプはデータボリュームへデータを反映するために読み出されたジャーナルデータのタイムスタンプである。従って、書込みのタイムスタンプと読出しのタイムスタンプが一致していないことは、データボリュームへ反映されていないデータがあることを意味する。ここで、要求フラグが「１」となっているものは、既にこのジャーナルボリュームに対するジャーナルデータの送信要求を行っているものである。ステップ１３０３により、ジャーナルデータの送信要求を行っていない、送信フラグが「０」のジャーナルボリューム３：０５、３：１３について、書込みのタイムスタンプと、読出しのタイムスタンプの差より、ボリューム３：０５が特定される。なお、コピーグループが設定されている場合には、コピーグループの単位でボリュームを特定する。
【００５８】
次に、ステップ１３０２、１３０３で特定されたジャーナルボリュームからジャーナルデータを読出し（ステップ１３０４）、読み出したデータを対応するデータボリュームへ格納し（ステップ１３０５）、空き領域を求める（ステップ１３０６）。ここで空き領域とは、読み出されたジャーナルデータが格納されていた領域である。つまり、データが反映された後は、ジャーナルデータが不要となるので、この領域を空き領域とし、新たなジャーナルデータを受取った場合に、この領域にジャーナルデータを格納する。空き領域が所定値以上であるかを判断し（ステップ１３０７）、所定値以上であれば、このジャーナルボリュームを利用してペアを形成するコピー元ｖｏｌ識別子、コピー先ｖｏｌ識別子と、空き領域の情報を含むジャーナルデータ送信要求をコピー元のストレージ装置へ送信し（ステップ１３０８）、ジャーナルデータ管理テーブルの要求フラグに「１」を設定しステップ１３０１へ戻る。また、空き領域が所定値以上ない場合にも、ステップ１２０１へ戻る。なお、ジャーナルデータ送信要求については、後述するように制御コマンドボリュームにデータとして格納し、コピー元のストレージ装置へ送る。
【００５９】
図１４は、ストレージ装置１０２ａのジャーナルデータ送信プログラム９１４の処理を示したものである。ジャーナルデータ送信プログラム９１４は、ストレージ装置１０２ｂからの空き領域の情報を含むジャーナルデータ送信要求を受けることにより実行される。ジャーナルデータ送信プログラム９１４は、ジャーナルデータ送信要求があると（ステップ１４０１で「Ｙ」の場合）、ジャーナルデータ送信要求に含まれる、コピー元ｖｏｌ識別子、コピー先ｖｏｌ識別子とペア定義テーブルから対応するジャーナルボリュームを特定する（ステップ１４０２）。特定されたジャーナルボリュームからジャーナルデータを読出し、キャッシュメモリへジャーナルデータを格納するとともに、制御情報をコピー制御テーブルへ設定する（１４０３）。ジャーナルデータの読出しによりジャーナルデータ管理テーブルを変更し（１４０４）、ステップ１４０１へ戻る。なお、ジャーナルデータの読出しは、ジャーナルデータ送信要求に含まれる空き容量を満たすまで読み出す。なお、容量を満たす前に、書込みのタイムスタンプまでのジャーナルデータが読み出された場合には、そこまでのジャーナルデータを特定する。
【００６０】
次に、データ回復処理について説明する。データ回復処理は、これまで説明したリモートコピー、ジャーナルコピーのようにストレージ装置１０２ａからストレージ装置１０２ｂへデータが転送されるものとは異なり、各ストレージの中で行われる処理である。このデータ回復処理は、ホストからの要求された時刻の状態にボリュームのデータを変更するものである。
【００６１】
ここでは、ストレージ装置１０２ａでデータ回復処理を行う場合を例に説明する。
【００６２】
図１１に示すように、ボリューム１：０６に格納されるデータに対してジャーナルデータが作成され、ボリューム１：０８に格納される。ここで、ボリューム１：０６は、０９：４０：００までのデータが格納され、ボリューム１：０８には、図１０Ｅに示すように０９：４０：００までのジャーナルデータが格納されている。また、ボリューム１：０６に格納されたデータに対して、図１０Ｆに示すように０７：００：００のデータ（スナップショットデータ）が、ボリューム１：０９に、０８：００：００のデータがボリューム１：１０に格納されている。このような状態において、例えば、ホストから０８：４０：００のデータに回復する要求があった場合、ボリューム１：１０のスナップショットデータをボリューム１：０７にコピーする。これで、ボリューム１：０７は０８：００：００の状態になる。次に、ボリューム１：０８に格納されているジャーナルデータのうち、０８：００：００から０８：４０：００までのジャーナルデータを読出し、ジャーナルデータに含まれるデータをボリューム１：０７に格納する。これにより、ボリューム１：０７は、０８：４０：００の状態となる。このようにしてホストからの要求に応じた時刻のボリュームに回復する。なお、回復するデータをボリューム１：０７に作成するようにしたが、これをデータが格納されているボリューム１：０６に対して行うようにしても良い。
【００６３】
図１５は、スナップショット取得プログラム９１６の処理を示したものである。
【００６４】
スナップショット取得プログラム９１６は、制御テーブル９３１の開始時刻、間隔をストレージ装置の時計を使って監視している（ステップ１５０１）。開始時刻、間隔によりスナップショットを取得する時刻になると（ステップ１５０１で「Ｙ」）、スナップショットデータを格納するボリュームを選択し（１５０２）、スナップショットを取得する対象となるボリュームのデータを選択されたボリュームにコピーする（１４０３）。コピーが終了すると、スナップショット管理テーブルに、スナップショットデータが格納されたボリュームの識別子、取得した時刻を設定する（１５０４）。その後、ステップ１５０１へ戻る。ステップ１５０２におけるスナップショットデータを格納するボリュームの選択は、図１０Ｃに示すボリューム管理テーブルを参照し、種別にスナップショットが設定され、状態が未使用のボリュームを選択する。図１５において、スナップショットデータをデータのコピーにより取得する方法で説明しているが、次のように既に取得したスナップショットデータとジャーナルデータから新たなスナップショットデータを作成してもよい。具体的には、図１１のボリューム１：１０に対するスナップショットのデータは、図１０Ｆより０７：００：００時点のボリューム１：０９のデータをボリューム１：１０にコピーし、その後、０８：００：００までのボリューム１：０８に格納されたジャーナルデータのデータを格納することにより０８：００：００時点のスナップショットデータを生成することができる。
【００６５】
図１６は、データ回復処理プログラム９１７の処理を示したものである。データ回復処理プログラム９１７は、制御テーブル９３１のデータ回復時刻を監視している（ステップ１６０１）。データ回復時刻が登録された場合に、制御テーブル９３１のデータボリューム識別子と、スナップショット管理テーブルから、データ回復時刻に近いスナップショットデータが格納されているボリュームを特定する（ステップ１６０２）。次に、回復するデータを格納するボリュームを特定する（ステップ１６０３）。これは、制御テーブル９３１に、データ回復ボリュームが登録されていれば、そのボリュームを、登録されていなければ、スナップショットデータの取得の対象となるデータボリュームを回復するデータを格納するボリュームとする。次に、特定されたボリュームに、ステップ１６０２で特定されたボリュームのスナップショットデータをコピーし（ステップ１６０４）、特定したスナップショットデータの取得時刻が、登録された回復時刻と一致するかを判断し（１６０５）、一致していない場合、回復時刻までのジャーナルデータをジャーナルボリュームから読出し、ジャーナルデータのデータをスナップショットデータがコピーされたボリュームに格納し（１６０６）、ステップ１６０１へ戻る。なお、ステップ１６０５で、一致した場合には、ステップ１６０１へ戻る。
【００６６】
以上、ストレージ装置１０２における、リモートコピー、ジャーナルデータによるコピー及び、データ退避処理について説明した。
【００６７】
上記の説明では、ストレージ装置１０２ａからストレージ装置１０２ｂへデータを送る場合について説明したが、ストレージ装置１０２ｂからストレージ装置１０２ａへデータを送る場合も同様の構成により実現できる。
【００６８】
次に、制御コマンド処理プログラム９１１、Ｉ／Ｏ処理プログラム９１２、データ取得プログラム９１８、データ退避プログラム９１９、優先制御プログラム９２０について説明する。
【００６９】
図１７は、制御コマンド処理プログラム９１１の処理を示したものである。
【００７０】
制御コマンド処理プログラム９１１は、ボリューム管理テーブル９３３に「制御コマンド」と登録されたボリュームについて、ホストから送られたデータが格納されているかを判断する（ステップ１７０１）。データが格納されていない場合には、ステップ１７０１に戻る。データが格納されている場合、そのデータに転送コマンドが含まれているかを判断する（ステップ１７０２）。転送コマンドが含まれている場合には、データの編集を行い（ステップ１７０３）、キャッシュメモリに編集したデータを格納し、コピー制御テーブルへ制御情報を設定する（ステップ１７０４）。ここで、データの編集とは、転送コマンド以降のコマンド及びパラメータを取り出し、決められた形式のデータとすることである。
【００７１】
次に、転送コマンド以外のコマンドがあるかを判断し（ステップ１７０５）、転送コマンド以外のコマンドがある場合には、コマンドの処理を行う。ここでのコマンドの処理としては、データ取得プログラム９１８、データ退避プログラム９１９の実行あるいは、制御テーブルへのパラメータの設定を行う登録処理、制御テーブルへ登録されたパラメータを削除する削除処理がある。
【００７２】
図１８は、Ｉ／Ｏ処理プログラム９１２の処理を示したものである。
【００７３】
このＩ／Ｏ処理プログラム９２１は、ホスト１０１及び他のストレージ装置からＩ／Ｏが送られてきた場合に処理を行う。例えば、図１に示したシステムでは、ストレージ１０２ａは、主にホスト１０１ａ、１０１ｄから送られてくるＩ／Ｏを処理するものであり、ストレージ装置１０２ｂは、ホスト１０１ｂ、ストレージ装置１０２ａ、１０２ｃから送られてくるＩ／Ｏを処理するものである。ここで、Ｉ／Ｏの例としては、データの読出し要求、書込みデータを伴う書込み要求である。
【００７４】
Ｉ／Ｏが送られてきた場合、書込み要求であるかを判断する（ステップ１８０１）。書込み要求である場合、制御テーブルの書込み拒否フラグが「０」であるかを判断する（ステップ１８０２）。書込み制御フラグが「０」である場合、書込みデータをキャッシュメモリに格納し（１８０３）、送信元へ書込みが完了した旨を通知する（ステップ１８０４）。なお、書込みデータをキャッシュメモリに格納する時点で、データに対するタイムスタンプが設定される。次に、ペア定義テーブル９３４を参照してコピーのタイプを判断する（１８０５）。コピータイプの判断は、書込み要求に含まれるボリュームの識別子とペア定義テーブル９３４のコピー元ｖｏｌ識別子１０３２からタイプ１０３５の情報を参照することで判断する。リモートコピータイプである場合、コピー制御テーブル９３２へ制御情報を格納し（ステップ１８０６）、処理を終了する。制御情報とは、タイムスタンプ、キャッシュメモリのアドレス、コピー元、コピー先のボリューム識別子であり、また書込み要求に識別子が付されている場合には、この識別子も制御情報となる。
【００７５】
ステップ１８０５で、ジャーナルコピーと判断された場合には、ジャーナルデータを作成し、ジャーナルボリュームへジャーナルデータを格納する（ステップ１８０７）。ジャーナルデータは、ヘッダ部とデータ部からなり、ヘッダ部にはシーケンス番号、書込みデータを受信した時刻、書込み要求に含まれるボリュームの識別子、書込みデータが格納されるボリュームの論理アドレス、データサイズ、書込み要求に識別子が付与されていれば、識別子が格納される。データ部は、書込みデータが格納される。そして、作成されたジャーナルデータをボリュームに格納する。この時に、ジャーナルデータ管理テーブルに、ジャーナルデータを格納したボリュームのアドレス、及びタイムスタンプを登録する。
【００７６】
ステップ１８０５で、リモートコピー、ジャーナルデータコピーのいずれでもない場合には、そのまま処理を終了する。
【００７７】
また、ステップ１８０２において、書込み拒否フラグが「１」である場合、書込み要求の送信元に対して、「エラー」を通知し（ステップ１８０８）、処理を終了する。書込み拒否フラグ１００１は、先に説明したように当該サイトが災害により被災する可能性がある場合に「１」に設定される。従って、災害発生前であっても、ホスト又はストレージ装置からの書込みを拒否することにより、被害の拡大を防止している。つまり、キャッシュメモリ９０３にデータを格納した状態で、ホスト、ストレージ装置に対して書込み完了の応答をした場合であっても、キャッシュメモリ９０３から記憶媒体１０６にデータを格納している際中に、障害となれば、記憶媒体１０６へ正常にデータが格納されないことが起こる。この場合、どこまでのデータが記憶媒体へ格納されたか不明となり、回復に時間がかかってしまう。本実施例では、事前に書込み要求に対して「エラー」を戻すことで、このようなことを防止するようにしている。
【００７８】
一方、ホストからのＩ／Ｏが読出し要求である場合（ステップ１８０１で「Ｎ」の場合）、キャッシュメモリ９０３に対象となるデータがあるか調べ（ステップ１８０９）、データがあれば、送信元へデータを送る。データがない場合には、記憶媒体１０６からデータを読み出し（ステップ１８１０）、送信元へ読み出したデータを送信する。
【００７９】
図１９は、未送信データ情報取得プログラム９１８の処理を示したものである。未送信データ情報取得プログラム９１８は、制御コマンド処理プログラム９１１によって実行される。つまり、ホスト１０１から制御コマンドボリューム１２１に未送信データ取得情報と未送信データ取得プログラム９１８の実行指示が含まれたデータが書き込まれ、制御コマンド処理プログラム９１１が、このデータに基づいて未送信データ情報取得プログラム９１８を実行する。なお、未送信データ取得情報とは、図３Ｅで示したコピー元装置識別子、コピー元ｖｏｌ識別子、コピー先装置識別子、コピー先ｖｏｌ識別子が含まれる。
【００８０】
未送信データ情報取得プログラム９１８は、制御コマンドボリューム１２１に格納された未送信データ取得情報を読出す（ステップ１９０１）。次に、未送信データ取得情報に含まれるコピー元ｖｏｌ識別子、コピー先ｖｏｌ識別子と一致する制御情報をコピー制御テーブル９３１で特定する。（ステップ１９０２）。例えば、未送信データ取得情報が図３Ｅ、コピー制御情報テーブルが図１０Ｂであった場合、番号１、３、１４、１５を除く制御情報が特定される。次に、特定された制御情報の中で、区切り識別子毎のデータ量を求める（ステップ１９０３）。区切り識別子毎のデータは次のようにして求める。例えば、図１０Ｂの番号１０の区切り識別子の場合、このタイムスタンプより小さいタイムスタンプを有し、区切り識別子を有する制御情報までを特定する。この場合、番号７、９の制御情報が特定される。そして、番号７、９、１０のデータ量の合計を区切り識別子のデータ量とする。同様に、他の区切り識別子についてもデータ量を求める。
このようにして求めたデータ量を、区切り識別子、タイムスタンプ、コピー元、コピー先装置識別子、コピー元、コピー先ｖｏｌ識別子と共に未送信データ情報として、制御コマンドボリューム１２１に格納する（ステップ１９０４）。また、ジャーナル管理テーブル９３５から未送信となっているジャーナルデータに対しても同様に、区切り識別子毎のデータ量を求める（ステップ１９０４）。未送信のジャーナルデータは、ジャーナル管理テーブル９３５の書込みと読出しの差（間）の部分である。この間にあるジャーナルデータに含まれる区切り識別子を特定し、この区切り識別子に関連するデータのデータ量を求める。これについては、上述のコピー制御テーブル９３２に登録された制御情報から求める場合と同じである。なお、この場合、区切り識別子で区切られる一部のジャーナルデータが送信対象となり、キャッシュメモリ９０３に格納されている場合もある。従って、ジャーナルデータから区切り識別子を特定した場合、コピー制御テーブル９３２を参照して、データ量を求める。このようにして、求めたデータ量を、区切り識別子、タイムスタンプ、コピー元、コピー先装置識別子、コピー元、コピー先ｖｏｌ識別子と共に未送信データ情報として、制御コマンドボリューム１２１に格納し（ステップ１９０５）、処理を終了する。
【００８１】
図２０は、データ退避プログラム９１９の処理を示したものである。このデータ退避プログラム９１９は、制御コマンド処理プログラム９１１によって実行される。つまり、ホストから、図３Ｇに示す区切り識別子、タイムスタンプ、コピー元、コピー先装置識別子、コピー元、コピー先ｖｏｌ識別子、優先度を含むデータ退避情報と、データ退避プログラム実行コマンドとが制御コマンドボリューム１２１に格納され、制御コマンド処理プログラム９１１により、データ退避プログラム９１９が実行される。
【００８２】
ここで示しているデータ退避プログラム９１９は、リモートコピー、ジャーナルコピーにおけるデータ又はジャーナルデータの送信側と、受信側との処理が含まれるものになっている。
【００８３】
データ退避プログラム９１９は、制御コマンドボリューム１２１に格納されたデータ退避情報から、優先度が高く、かつ、タイムスタンプが小さいデータ退避情報を読み出すとともに、当該読み出したデータ退避情報を制御コマンドボリューム１２１から消去する（ステップ２００１）。次に、読み出したデータ退避情報に含まれるコピー元装置識別子、コピー元ｖｏｌ識別子、コピー先装置識別子、コピー先ｖｏｌ識別子から、ペア定義テーブル９３４を参照し、このデータはリモートコピーであるかジャーナルコピーであるかを判断する（ステップ２００２）。リモートコピーである場合、読み出したデータ退避情報によって特定されるデータが優先して転送されるように、コピー制御テーブル９３２を変更し、優先処理フラグを設定する（ステップ２００３）。例えば、コピー制御テーブル９３２が、図１０Ｂの状態であり、ステップ２００１でタイムスタンプ０９：５０：００、コピー元ｖｏｌ識別子１：０３、コピー先ｖｏｌ識別子３：０３のデータ退避情報を読み出した場合、番号２、４、５の制御情報を番号１、２、３に設定し、これに合わせて、その他の制御情報を変更する。また番号１、２、３の優先フラグに「１」を設定する。この結果を図１０Ｈに示す。なお、コピー制御テーブル９３２の変更は、既に優先処理フラグが設定されている部分の設定は変更しない。つまり、図１０Ｈの状態で、次に、番号７、９、１０の制御情報を変更する場合、番号３、４、５に番号７．９、１０の制御情報が設定される。このように、コピー制御テーブル９３２を変更した後、制御テーブル９３１の優先制御情報１００３に「リモートコピー」を設定する（２００４）。これにより、リモートコピーにおけるデータ送信プログラムが優先して実行される。次に、データ制御コマンドボリューム１２１に格納されたデータ退避情報のうち、タイムスタンプが小さいデータ退避情報があるかを判断し（ステップ２００５）、あればステップ２００１へ戻る。なければ、処理を終了する。
【００８４】
一方、ステップ２００２で、ジャーナルコピーである場合、コピー先のストレージ装置からジャーナルデータ送信要求を発行させるためのデータを生成する（ステップ２００６）。既に説明したようにジャーナルコピーの場合、コピー先のストレージ装置からジャーナルデータ送信要求によって、コピー元のストレージ装置からコピー先のストレージ装置へジャーナルデータが送られる。従って、コピー先のストレージ装置において、ジャーナルデータ反映プログラムを優先して実行するようにする必要がある。そのため、制御テーブルの優先制御情報の設定コマンドと、優先制御情報に設定する「ジャーナルコピー」、コピー元ｖｏｌ識別子、コピー先ｖｏｌ識別子をパラメータとするデータを生成する。制御テーブルの優先制御情報にこれらの情報が設定されると、ジャーナルデータ反映プログラムが優先的に、設定したコピー元、コピー先ｖｏｌ識別子で特定されるジャーナルボリュームにデータを格納するようジャーナルデータ送信要求を発行するようになる。
ステップ２００６で生成されたデータは、キャッシュメモリへ格納されるとともに、優先して転送されるようにコピー制御テーブルへ制御情報を設定し、優先処理フラグを設定する（ステップ２００７）。更に、制御テーブルの優先情報に「ジャーナルコピー」を登録する（２００８）。これにより、コピー元のストレージ装置では、ジャーナルデータ送信プログラム９１４が優先して実行される。
【００８５】
図２１は、優先制御プログラム９２０の処理を示したものである。
【００８６】
優先処理プログラムは９２０、制御テーブル９３１の優先制御情報から優先して処理すべきプログラムがあるかを判断する（ステップ２１０１）。優先制御情報が設定されていれば、プロセッサの負荷を収集し（ステップ２１０２）、優先制御情報に関連しないプログラムの処理性能を低下させる（２１０３）。例えば、プログラムが時分割で実行されている場合に、優先制御情報としてリモートコピーが設定されている場合、データ送信プログラムの実行時間を長く、その他のプログラムの実行時間を短くする。もし、データ送信プログラムが十分に実行されなければ、ジャーナルデータ反映プログラム９１５、ジャーナルデータ送信プログラム９１４といった、リモートコピーとは関係しないプログラムの実行を停止する。次のステップ２１０４〜２１０７は、２１０８〜２１１２で災害発生が予測されるストレージ装置でデータ反映プログラムを実行している場合に、災害発生予測時刻前にこのプログラムを停止させるための処理である。まず、自ストレージ装置の災害情報が設定されているかを判断する（ステップ２１０４）。災害情報が設定されている場合には、データ回復プログラムが実行中であるかを判断し（ステップ２１０５）、実行中であれば、後述するステップ２１１２で求めたデータ回復プログラムの停止時刻になったかを判断する（ステップ２１０６）。停止時刻になっている場合、データ回復プログラムを停止し（ステップ２１０７）、ステップ２１０１へ戻る。災害発生中にデータ回復を行った場合に、災害の影響による障害データが格納される可能性がある。これを防止するために災害発生前にデータ回復処理を停止するようにしている。
【００８７】
一方、ステップ２１０１で優先制御情報が設定されていない場合、自ストレージ装置の災害情報が設定されているかを判断する（ステップ２１０８）。設定されている場合、ペア定義テーブルからデータ回復が可能なコピー元ボリューム、ジャーナルデータボリュームを特定する（ステップ２１０９）。例えば、図１０Ｄの番号５のコピー元ボリューム、ジャーナルデータボリュームが特定される。次に、特定したコピー元ボリュームを制御テーブルのデータボリューム識別子に設定し（ステップ２１１０）、災害発生し予測時刻を制御テーブル９３１の回復時刻に設定し、優先制御情報にデータ回復を設定する（ステップ２１１１）。最後にデータ回復プログラム停止時刻を求め（ステップ２１１２）、ステップ２１０１へ戻る。なおデータ回復プログラム停止時刻は、災害発生予測時刻でもよいし、災害発生時刻から所定時間前の時刻としてもよい。このようにステップ２１０８〜２１１２では、災害を受けるストレージ装置内で、データ回復制御を実行するようにしている。これにより、災害でホスト又はストレージ装置がダウンしても、災害発生前のデータから直ぐに業務を再開することが可能となる。
また、ステップ２１０８で自ストレージ装置の災害情報が設定されていない場合、制御テーブル９１３に他のストレージ装置の災害情報が設定されているか判断する（ステップ２１１３）。他のストレージ装置の災害情報が設定されている場合、ペア定義テーブル９３４から、データ回復が可能なコピー元ボリューム、ジャーナルデータボリュームを特定する（ステップ２１１４）。次に特定したコピー元ボリュームを制御テーブル９３１のデータ回復制御情報のデータボリューム識別子に設定する（ステップ２１１５）。また、災害発生予測時刻を制御テーブル回復時刻に設定し、優先制御情報にデータ回復を設定する（２１１６）。このステップ１２１４〜ステップ１２１６は、コピー先のストレージ装置で行われる処理である。例えば、図１のストレージ装置１０２ａからストレージ装置１０２ｂへリモートコピー又はジャーナルコピーが行われ、更にストレージ装置１０２ｂでスナップショットデータ、ジャーナルデータを取得している場合、ストレージ装置１０２ａで災害が発生する直前のデータを生成するようにしている。これにより、ストレージ装置１０２ａが障害となり、ストレージ装置１０２ｂへ業務が引き継がれた場合、災害発生前のデータから直ぐに業務を実行することが可能となる。
【００８８】
なお、ステップ２１０１、ステップ２１０８、ステップ２１１３での判断が「Ｎ」である場合、通常の処理状態にしてステップ２１０１へ戻る。通常の処理とは、例えば時分割処理を行っている場合に、実行されているプログラムの実行時間を均等に割当てることである。また、ステップ２１０３で、プロセッサの処理により優先制御情報に設定された処理を関連しないプログラムの処理を低下させることを説明したが、図１のストレージ装置１０２ａ、ストレージ装置１０２ｃから、例えばリモートコピーの優先制御情報が設定された場合、ストレージ装置１０２ｂの負荷が大きくなってしまう場合がある。この場合、制御テーブルに設定された発生時刻が近い方のストレージ装置からのリモートコピーを優先的に処理するようにしても良い。同様に、災害規模が大きい方のストレージ装置からのリモートコピーを優先的に処理するようにしてもよい。これは、例えば優先的に処理するデータをキャッシュメモリからコピー先のボリュームに格納するようにすれば良い。また、Ｉ／Ｏ処理プログラム９１２で、優先的に処理しないストレージ装置からの書込み要求に対しては、何回かの割合で、エラーを戻すようにしてもよい。
【００８９】
なお、ここでは、災害規模を例に説明したが、通常、ストレージ装置は建物の中に置かれており、地震によりストレージ装置に障害が発生するかは、建物の耐震強度との関係を考慮してもよい。つまり、図３Ｂで、ホストは、ストレージ装置の耐被災許容値を管理しているが、これに加えて建物の耐被災許容値を管理する。そして、災害情報を受取ったホストは、ストレージ装置の耐被災許容値と建物の耐被災許容値との差を求め、この差をストレージ装置へ通知する。例えば、図１のストレージ装置１０２ｂが、サイトＡ、サイトＣから、ストレージ装置の耐被災許容値と建物の耐被災許容値との差を受けた場合、この差が大きい方のストレージ装置に対するデータのコピーを優先的に行うように処理するようにしても良い。
【００９０】
なお、ここでは地震を例に説明したが、これ以外の災害であっても、発生予測時刻、災害規模のように退避すべきかどうかを判断する情報があれば、適用することができる。  
これまでの説明は、災害予測情報に基づいてデータを退避するものであったが、災害予測情報に関わらず、所定の時刻までに、コピー元ストレージからコピー先ストレージ装置へデータを送るよう運用することができる。これにより、所定の周期でコピー元とコピー先のデータの一致を保証することが可能となる。
【００９１】
図２２は、管理者によりホストに設定されるコピー管理テーブルの一例を示したものである。このコピー管理テーブルは、ホストのメモリに格納されている。コピー管理テーブルは、ストレージ装置２２０１、データ２２０２、開始時刻２２０３、実行間隔２２０４、対象ジョブ２２０５、データ退避所要上限時間２２０６が設定できるようになっている。ストレージ装置２２０１は、コピー元のストレージ装置を特定する場合に設定するものである。この場合は、設定されたストレージ装置がコピー元となる全てのデータが対象になり、優先度に従ってデータが退避される。データ２２０２は、対象となるデータを指定するものである。設定にあたっては、ストレージ装置２２０１と、データ２２０２の両方を設定してもよいし、いずれかを設定しても良い。開始時刻２２０３、実行間隔２２０４は、データ退避の実行時刻を定めるものであり、開始時刻以降は、実行間隔により所定周期でデータ退避が実行されることになる。対象ジョブ２２０２は、ジョブ名称を設定するものであり、設定されたジョブが終了するたびに、データ退避が実行される。なお、開始時刻及び実行間隔と、対象ジョブとは、選択的に設定されても良いし、両方設定されても良い。データ退避所要上限時間２２０６は、データ退避を行う時間を設定するものである。データ退避は、対象となるデータが優先的にコピーされることになるので、対象外のデータのコピー優先度が下がり、場合によってはコピーが停止する場合がある。この状態が長く続くと、長い間コピーされないデータが発生する。これを防止するためにデータ退避所要上限時間を設定する。図２２は、ストレージ装置識別子００１のデータDB-A、DB-Bについて、０時から２４時間毎に、また業務プログラムのJOB１が終了する毎に、１分間だけデータの退避が優先的に行われることを示している。なお、先に述べたように、これらは選択的に設定されても良い。
【００９２】
図２３は、コピー管理テーブルの設定により実行されるコピー制御プログラム１１１の処理を示した図である。
【００９３】
コピー制御プログラム１１１は、コピー管理テーブルが設定されると処理を実行する。
【００９４】
まず、実行開始時刻２２０３、実行間隔２２０４、ホストの時計より実行開始時刻となっているかを判断する（ステップ２３０１）。実行開始時刻であれば、初期設定を行う（ステップ２３０１）。実行開始時刻でなければ、対象ジョブ２２０５が終了しているかを判断し（２３０２）、終了していれば初期設定を行う（ステップ２３０３）。対象ジョブ２２０２が終了していなければ、ステップ２２０１へ戻る。尚、ジョブとは複数の処理から業務プログラムが構成されている場合、この処理の単位であるが、業務プログラムを単位としても良い。
【００９５】
初期設定とは、未送信データ一覧テーブル、退避データ一覧テーブルに設定された値を削除（クリア）することである。
【００９６】
次にストレージ装置２２０１が設定されているかを判断し（ステップ２３０４）、設定されていれば、設定されたストレージ装置がコピー元のストレージ装置であるデータを特定し（ステップ２３０５）、次にデータ２２０２が設定されているかを判断する（２３０６）。ステップ２３０４でストレージ装置２２０１が設定されていないと判断した場合には、次にデータが特定されているかを判断する（ステップ２３０６）。データ２２０２が設定されていれば、データを特定し（ステップ２３０７）、特定したデータを未送信データ取得テーブル２１５へ設定する（ステップ２３０８）。データ２２０２が設定されていなければ、ステップ２３０５で特定されたデータを未送信データ取得テーブル２１５へ設定する（ステップ２３０８）。次に、未送信データ一覧テーブル２１５の取得フラグに「０」を設定し、未送信データ取得部２０２、退避データ決定部２０３、退避指示実行部２０４を実行し（ステップ２３０９）、ステップ２３０１へ戻る。これにより未送信データ取得部２０２、退避データ決定部２０３、退避指示実行部２０４の処理が、本処理と並行して実行される。
【００９７】
図２４は、退避データ決定部２０３の処理を示したものである。
【００９８】
退避データ決定部２０３の処理は、図７に示した処理とほぼ同様の処理であるが、ステップ２４０５でデータ退避上限時刻が定められるかを判断している部分が相違する。データ退避上限時刻とは、実行開始時刻２２０３、実行間隔２２０４、データ退避上限時間２２０６から求めたものであり、データ退避処理を終了する時刻である。従って、データ退避上限時間２２０６が設定されている場合には、データ退避上限時刻有り、設定されていない場合には、データ退避上限時刻なしと判断する。データ退避上限時刻がない場合には、次の優先度を求め（ステップ２４１５）、ステップ２４０２へ戻る。
データ退避上限時刻がある場合、区切り識別子毎に、回線速度とデータ量からデータ伝送予測時間（データ量/データ転送速度）を求める（ステップ２４０６）。次に、退避データ一覧テーブル２１７に猶予時間が設定されているかを判断し（ステップ２４０７）、登録されていない場合、データ退避上限時刻と、ホスト１０１の時計による現在の時刻から、データ退避上限時刻までの残りの時間（猶予時間）を求め、退避データ一覧テーブル２１７に求めた猶予時間と、データ退避上限時刻とを設定する（ステップ２４０９）。退避データ一覧テーブルに猶予時間が既に登録されている場合（ステップ２４０７で「Ｙ」）、登録された猶予時間から退避データ一覧テーブル２１７に登録された退避データ情報のデータ伝送予測時間を差し引いた時間を新たな猶予時間とする（ステップ２４０８）。
【００９９】
そして、求めたデータ伝送予測時間と猶予時間より、タイムスタンプが小さい順（つまり、古いデータ順）に、猶予時間内で転送可能な未送信データ情報を特定する（ステップ７０９）。
【０１００】
次に、未送信データ情報が特定されたかを判断し（ステップ２４１１）、特定されていれば、未送信データ情報を退避データ一覧テーブル２１７の退避データ情報３６５として登録し、状態に「未送信」を設定する（ステップ２４１２）。次にｉ＝ｉ＋１とし（ステップ２４１３）、優先度がｉのデータがデータ退避先一覧テーブル２１４に登録されているかを判断し（ステップ２４１４）、登録されていればステップ２４０２から処理を開始する。もし登録されていなければ、ステップ２４０１に戻り、優先度１から同じ処理を行う。
【０１０１】
図２５は、退避指示実行部２０５の処理を示したものである。
【０１０２】
退避指示実行部２０５の処理は、図８に示した処理とほぼ同様の処理であるが、ステップ２５０４でデータ退避上限時刻が定められるか判断する処理と、ステップ２５０５で現在時刻がデータ退避上限時刻を越えているかを判断する処理が相違する。ステップ２５０４でデータ退避上限時刻が定められていない場合には、実行開始時刻２２０３、実行間隔２２０４、ホストの時計から実行開始時刻になっているかを判断する。実行開始時刻でない場合には、対象ＪＯＢが終了しているかを判断する。実行開始時刻でなく、対象ＪＯＢが終了していない場合には、ステップ２５０１へ戻る。実行開始時刻となっている場合、または対象ＪＯＢが終了している場合には、未送信データ取得部、退避データ決定部を終了する（ステップ２５０６）。つまり、データ退避上限時刻が定められない場合、つまりデータ退避上限時間が設定されていない場合には、次のデータ退避の開始時刻までデータ退避が続く場合が生じる。この場合、これまでのデータ退避を一旦終了させ、新たにデータ退避を行うようにしている。
なお、その他のステップ２５０６から２５０９については、図８のステップ８０５から８０８の処理と同じ処理を行う。
【０１０３】
これ以外の処理部については、既に説明したのと同様の処理を行う。但し、処理の説明で、発生予測時刻と説明しているのはデータ退避上限時刻、危険到達猶予時間と説明しているのは猶予時間として処理が行われる。
【０１０４】
これにより、コピー管理テーブルで設定した条件で、データのコピーが実行される。つまり、管理者によって定められた条件（時刻又はＪＯＢの実行終了）で優先的にデータ退避を行うことが可能となる。
【０１０５】
尚、本実施例で「データ退避」、「データコピー」とは、あるボリュームに格納されたデータと同じデータが、別のボリュームに格納されることを意味している。「データバックアップ」も同様に、あるボリュームに格納されたデータと同じデータが別のボリュームに格納されることを意味する。  
【図面の簡単な説明】
【０１０６】
【図１】情報システムの構成の一例を示した図である。
【図２】コピー制御プログラム及びコピー制御プログラムの実行に必要な情報を示した図である。
【図３Ａ】危険情報保持テーブルの一例を示したものである。
【図３Ｂ】サイト一覧テーブルの一例を示したものである。
【図３Ｃ】業務データ格納先一覧テーブルの一例を示したものである。
【図３Ｄ】データ退避先一覧テーブルの一例を示したものである。
【図３Ｅ】未送信データ取得テーブルの一例を示したものである。
【図３Ｆ】未送信データ一覧テーブルの一例を示したものである。
【図３Ｇ】退避データ一覧テーブルの一例を示したものである。
【図４】コピー制御プログラムの処理を示した図である。
【図５】未送信データ取得部の処理を示した図である。
【図６Ａ】データ形式の一例を示した図である。
【図６Ｂ】データ形式の一例を示した図である。
【図７】退避データ決定部の処理を示した図である。
【図８】退避指示実行部の処理を示した図である。
【図９】ストレージ装置の制御部の構成を示した図である。
【図１０Ａ】制御テーブルの一例を示した図である。
【図１０Ｂ】コピー制御テーブルの一例を示した図である。
【図１０Ｃ】ボリューム管理テーブルの一例を示した図である。
【図１０Ｄ】ペア定義テーブルの一例を示した図である。
【図１０Ｅ】ジャーナルデータ管理テーブルの一例を示した図である。
【図１０Ｆ】スナップショット管理テーブルの一例を示した図である。
【図１０Ｇ】ペア定義テーブルの一例を示した図である。
【図１０Ｈ】ジャーナルデータ管理テーブルの一例を示した図である。
【図１１】コピーの概要を示した図である。
【図１２】データ送信プログラムの処理を示した図である。
【図１３】ジャーナルデータ反映プログラムの処理を示した図である。
【図１４】ジャーナルデータ送信プログラムの処理を示した図である。
【図１５】スナップショット取得プログラムの処理を示した図である。
【図１６】データ回復処理プログラムの処理を示した図である。
【図１７】制御コマンド処理プログラムの処理を示した図である。
【図１８】Ｉ／Ｏ処理プログラムの処理を示した図である。
【図１９】未送信データ情報取得プログラムの処理を示した図である。
【図２０】データ退避プログラムの処理を示した図である。
【図２１】優先制御プログラムの処理を示した図である。
【図２２】コピー管理テーブルの一例を示した図である。
【図２３】データ退避決定部の処理を示した図である。
【図２４】退避データ決定部の処理を示した図である。
【図２５】退避指示実行部の処理を示した図である。
【符号の説明】
【０１０７】
１０１  ホスト
１０２  ストレージ装置
１０３  プロセッサ
１０４  メモリ
１０５  制御部
１０６  記憶媒体
１１０  業務プログラムイ
１１１  コピー制御プログラム
１２１  制御コマンドボリューム
１２２  データボリューム
１２３  ジャーナルボリューム
１２４  スナップショットボリューム
【図１】
2007286860.tif 000003
【図２】
2007286860.tif 000004
【図３Ａ】
2007286860.tif 000005
【図３Ｂ】
2007286860.tif 000006
【図３Ｃ】
2007286860.tif 000007
【図３Ｄ】
2007286860.tif 000008
【図３Ｅ】
2007286860.tif 000009
【図３Ｆ】
2007286860.tif 000010
【図３Ｇ】
2007286860.tif 000011
【図４】
2007286860.tif 000012
【図５】
2007286860.tif 000013
【図６Ａ】
2007286860.tif 000014
【図６Ｂ】
2007286860.tif 000015
【図７】
2007286860.tif 000016
【図８】
2007286860.tif 000017
【図９】
2007286860.tif 000018
【図１０Ａ】
2007286860.tif 000019
【図１０Ｂ】
2007286860.tif 000020
【図１０Ｃ】
2007286860.tif 000021
【図１０Ｄ】
2007286860.tif 000022
【図１０Ｅ】
2007286860.tif 000023
【図１０Ｆ】
2007286860.tif 000024
【図１０Ｇ】
2007286860.tif 000025
【図１０Ｈ】
2007286860.tif 000026
【図１１】
2007286860.tif 000027
【図１２】
2007286860.tif 000028
【図１３】
2007286860.tif 000029
【図１４】
2007286860.tif 000030
【図１５】
2007286860.tif 000031
【図１６】
2007286860.tif 000032
【図１７】
2007286860.tif 000033
【図１８】
2007286860.tif 000034
【図１９】
2007286860.tif 000035
【図２０】
2007286860.tif 000036
【図２１】
2007286860.tif 000037
【図２２】
2007286860.tif 000038
【図２３】
2007286860.tif 000039
【図２４】
2007286860.tif 000040
【図２５】
2007286860.tif 000041