(57)【特許請求の範囲】
【請求項１】
１または複数のホスト計算機と、該ホスト計算機がデータの読み書きを行うデータボリューム、スナップショットを格納するスナップショットボリューム及びジャーナルを保持するジャーナルボリュームを有するディスク装置を含み、該データボリュームの特定の時点のスナップショットを取得し、前記特定時点以降の書込みをジャーナルとして保持し、データのリカバリ時にリカバリポイントの近傍の時点で取得されたスナップショットを基底にして、前記スナップショットに前記ジャーナルを適用することでリカバリを行うストレージシステムと、前記ストレージシステムに接続され、管理者により指定される前記特定の時点のリカバリポイントを管理する管理計算機とを備え、各装置がネットワークを介して接続される計算機システムにおいて、
前記管理計算機は、
管理者要求ＲＴＯ、管理者要求ＲＴＯ適用期間のリカバリ時間及びＲＴＯ調整開始閾値を含むバックアップ管理情報を有し、
前記管理者要求ＲＴＯの監視タイミングのとき、前記ストレージシステムのジャーナルボリュームからジャーナル情報とスナップボリュームから取得スナップショットを管理するためのスナップショット情報を取得し、
該取得した情報を用いて、最新スナップショットのリカバリポイント以降のリカバリポイントのＲＴＯが前記ＲＴＯ調整開始閾値以上であるか否かを判断し、
前記ＲＴＯが前記ＲＴＯ調整開始閾値以上のとき、前記最新スナップショットに前記ジャーナルを適用して新しいスナップショットに更新するよう前記ストレージシステムに指示する
ことを特徴とする計算機システム。
【請求項２】
請求項１記載の計算機システムにおいて、
前記管理計算機は、さらに
更新した前記最新スナップショットより一つ古いリカバリポイントを持つスナップショットのリカバリポイント以降のリカバリポイントのＲＴＯが、管理者の要求するＲＴＯを満たすかを判定し、管理者の要求するＲＴＯを満たさないと判定したとき、前記管理者の要求するＲＴＯを満たすべく一つ前のスナップショットを更新するかを判定した結果、一つ前のスナップショットを更新する場合、一つ前のスナップショットに更新するよう前記ストレージシステムに指示することを特徴とする計算機システム。
【請求項３】
請求項２記載の計算機システムにおいて、
前記管理計算機は、
最新スナップショットより古いスナップショットに順次遡るのを、所定の数の世代のスナップショットで中止することを特徴とする計算機システム。
【請求項４】
請求項２記載の計算機システムにおいて、
前記管理計算機は、前記バックアップ情報に含まれる前記リカバリ時間を複数有し、古い世代のリカバリ時間を新しい世代のリカバリ時間と同じ又は長い時間とすることを特徴とする計算機システム。
【請求項５】
請求項２記載の計算機システムにおいて、
前記管理計算機は、更新させる前記スナップショットが最古のスナップショットであるかを判定し、最古のスナップショットであると判断したとき、前記更新させるスナップショットにジャーナルを適用する際に上書きされるデータを退避させることで、前記更新させるスナップショットに依存するジャーナルが持つリカバリポイントを維持することを特徴とする計算機システム。
【請求項６】
請求項２記載の計算機システムにおいて、
前記管理計算機は、更新させるスナップショットが最古のスナップショットであるかを判定し、最古のスナップショットであると判定したとき、新たなスナップショット格納領域を作成し、前記更新させるスナップショットの複製を作成することを特徴とする計算機システム。
【請求項７】
請求項１記載の計算機システムにおいて、
前記管理計算機は、
前記バックアップ情報が、さらにＲＴＯ監視周期、ＲＴＯ調整終了値の各情報を含んでおり、
前記ストレージシステムのジャーナル情報が、ジャーナルヘッダであり、取得スナップショットを管理するための情報が、ジャーナルグループ識別子、スナップショットグループの識別子、順序番号、所得時刻、ジャーナル適用速度であり、
前記ＲＴＯが前記ＲＴＯ調整開始閾値以上であるか否かを判断するに際して、前記順序番号が最も大きい順序番号が、大きいスナップショットを最新スナップとし、該最新スナップショットの順序番号より大きな順序番号を持つジャーナルを、最新スナップショットのリカバリポイント以降のリカバリポイントを持つＡｆｔｅｒジャーナルとして特定し、該特定ジャーナルのジャーナルヘッダのデータ長の合計値を算出し、該合計値分のジャーナルデータを、最新スナップショットのジャーナル適用速度に示された性能で適用するのに適する時間を算出し、該算出した時間が前記ＲＴＯ調整開始閾値以上であるか否かを判断することを特徴とする計算機システム。
【請求項８】
請求項１記載の計算機システムにおいて、
前記管理計算機は、
前記ホスト計算機からの書き込みによって上書きされる箇所のデータを退避させ、退避処理が行われた順序に従い適切な順序番号を付与してジャーナルとして格納させ、最新スナップショットに、退避させ格納したジャーナルを適用して新しいスナップショットに更新するよう前記ストレージシステムに指示することを特徴とする計算機システム。
【請求項９】
１または複数のホスト計算機と、該ホスト計算機がデータの読み書きを行うデータボリューム、スナップショットを格納するスナップショットボリューム及びジャーナルを保持するジャーナルボリュームを有するディスク装置を含み、該データボリュームの特定の時点のスナップショットを取得し、前記特定時点以降の書込みをジャーナルとして保持し、リカバリ時にリカバリポイントの近傍の時点で取得されたスナップショットを基底にして、前記スナップショットに前記ジャーナルを適用することでリカバリを行うストレージシステムと、前記ホスト計算機及び前記ストレージシステムにネットワークを介して接続され、これらとともに計算機システムを構成し、管理者により指定される前記特定の時点のリカバリポイントを管理する管理計算機において、
前記管理計算機は、
スナップショット管理情報及びスナップ管理プログラムを格納したメモリと、前記メモリの管理プログラムに基づき前記ストレージシステムを制御するＣＰＵと、前記ストレージシステムに接続する接続用のインターフェースとを有し、前記ＣＰＵは前記管理者要求ＲＴＯの監視タイミングのとき、前記ストレージシステムのジャーナルボリュームからジャーナル情報とスナップボリュームから取得スナップショットを管理するためのスナップショット情報を取得し、
該取得した情報を用いて、最新スナップショットのリカバリポイント以降のリカバリポイントのＲＴＯが前記ＲＴＯ調整開始閾値以上であるか否かを判断し、
前記ＲＴＯが前記ＲＴＯ調整開始閾値以上のとき、前記最新スナップショットに前記ジャーナルを適用して新しいスナップショットに更新するよう前記接続用のインターフェースを介して前記ストレージシステムに指示する
ことを特徴とする管理計算機。
【請求項１０】
請求項９記載の管理計算機において、
さらに
更新した前記最新スナップショットより一つ古いリカバリポイントを持つスナップショットのリカバリポイント以降のリカバリポイントのＲＴＯが、管理者の要求するＲＴＯを満たすかを判定し、管理者の要求するＲＴＯを満たさないと判定したとき、前記管理者の要求するＲＴＯを満たすべく一つ前のスナップショットを更新するかを判定した結果、一つ前のスナップショットを更新する場合、一つ前のスナップショットに更新するよう前記ストレージシステムに指示することを特徴とする管理計算機。
【請求項１１】
請求項１０記載の管理計算機において、
最新スナップショットより古いスナップショットに順次遡るのを、所定の数の世代のスナップショットで中止することを特徴とする管理計算機。
【請求項１２】
請求項１０記載の管理計算機において、前記バックアップ情報に含まれる前記リカバリ時間を複数有し、古い世代のリカバリ時間を新しい世代のリカバリ時間と同じ又は長い時間とすることを特徴とする管理計算機。
【請求項１３】
請求項１０記載の管理計算機において、
更新させる前記スナップショットが最古のスナップショットであるかを判定し、最古のスナップショットであると判断したとき、前記更新させるスナップショットにジャーナルを適用する際に上書きされるデータを退避させることで、前記更新させるスナップショットに依存するジャーナルが持つリカバリポイントを維持することを特徴とする管理計算機。
【請求項１４】
請求項１０記載の管理計算機において、
更新させるスナップショットが最古のスナップショットであるかを判定し、最古のスナップショットであると判定したとき、新たなスナップショット格納領域を作成し、前記更新させるスナップショットの複製を作成することを特徴とする管理計算機。
【請求項１５】
請求項９記載の管理計算機において、
前記ストレージシステムからジャーナルの格納情報と、スナップショットの格納情報と、ジャーナルの適用速度を取得し、最新のスナップショットのリカバリポイント以降のリカバリポイントが特定の時間内にリカバリできるかを判断することを特徴とする管理計算機。
【請求項１６】
ネットワークを介して接続した１または複数のホスト計算機が利用するデータが読み書きされるデータボリュームの特定の時点のスナップショットを、管理者により指定される前記特定の時点のリカバリポイントを管理する管理計算機より取得し、前記特定時点以降の書込みをジャーナルとして保持し、リカバリ時にリカバリポイントの近傍の時点で取得されたスナップショットを基底にして、前記スナップショットに前記ジャーナルを適用することでリカバリを行うストレージシステムにおいて、
前記ホスト計算機がデータの読み書きを行うデータボリュームと、スナップショットを格納するスナップショットボリューム及びジャーナルを保持するジャーナルボリュームを有するディスク装置と、スナップショット管理情報及びスナップ管理プログラムを格納したメインメモリと、前記メモリの管理プログラムに基づき前記ストレージシステムを制御するＣＰＵと、前記ネットワークに接続する接続用のインターフェースとを有し、
前記管理計算機から、
前記管理者要求ＲＴＯの監視タイミングのとき、前記ストレージシステムのジャーナル情報とスナップショット情報を用いて、最新スナップショットのリカバリポイント以降のリカバリポイントのＲＴＯが前記ＲＴＯ調整開始閾値以上で前記最新スナップショットに前記ジャーナルを適用して新しいスナップショットに更新するよう指示を受けたとき、前記更新を実行することを特徴とするストレージシステム。
【請求項１７】
１または複数のホスト計算機と、該ホスト計算機がデータの読み書きを行うデータボリューム、スナップショットを格納するスナップショットボリューム及びジャーナルを保持するジャーナルボリュームを有するディスク装置を含み、該データボリュームの特定の時点のスナップショットを取得し、前記特定時点以降の書込みをジャーナルとして保持し、リカバリ時にリカバリポイントの近傍の時点で取得されたスナップショットを基底にして、前記スナップショットに前記ジャーナルを適用することでリカバリを行う制御部を有するストレージシステムと、前記ストレージシステムに接続され、管理者により指定される前記特定の時点のリカバリポイントを管理する管理計算機とを備える計算機システムにおけるバックアップ管理方法において、
管理者要求ＲＴＯの監視タイミングのとき、前記ストレージシステムのジャーナルボリュームからジャーナル情報とスナップボリュームから取得スナップショットを管理するためのスナップショット情報を取得し、
該取得した情報を用いて、最新スナップショットのリカバリポイント以降のリカバリポイントのＲＴＯが前記ＲＴＯ調整開始閾値以上であるか否かを判断し、
前記ＲＴＯが前記ＲＴＯ調整開始閾値以上のとき、前記最新スナップショットに前記ジャーナルを適用して新しいスナップショットに更新するよう前記ストレージシステムに指示する
ことを特徴とするバックアップ管理方法。
【請求項１８】
請求項１７記載のバックアップ管理方法において、
さらに
更新した前記最新スナップショットより一つ古いリカバリポイントを持つ最新スナップショットのリカバリポイント以降のリカバリポイントのＲＴＯが管理者の要求するＲＴＯを満たすかを判定することと、管理者の要求するＲＴＯを満たさないと判定したとき、前記管理者の要求するＲＴＯを満たすべく一つ前のスナップショットを更新するかを判定した結果、一つ前のスナップショットを更新する場合、Ａｆｔｅｒジャーナルを適用して新しいスナップショットに更新するよう前記ストレージシステムに指示することを有することを特徴とするバックアップ管理方法。
【請求項１９】
請求項１８記載のバックアップ管理方法において、
最新スナップショットより古いスナップショットに順次遡るのを、所定の数の世代のスナップショットで中止することを有することを特徴とするバックアップ管理方法。
【請求項２０】
請求項１８記載のバックアップ管理方法において、
更新させるスナップショットが最古のスナップショットであるかを判定することと、最古のスナップショットであると判断したとき、前記更新させるスナップショットにジャーナルを適用する際に上書きされるデータを退避させることで、前記更新させるスナップショットに依存するジャーナルが持つリカバリポイントを維持することを有することを特徴とするバックアップ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに関し、特に、計算機システムの構成とこの構成におけるバックアップ管理方法に関する。
【背景技術】
【０００２】
一般的に情報システムでは、バックアップを取得することで、ストレージ装置の障害、コンピュータウィルスによるデータ破壊、ユーザによる誤操作などによってデータが喪失した場合に喪失したデータをリカバリできるようにしている。
【０００３】
この問題を解決する手段として、ジャーナリングを用いたバックアップ及びリカバリ技術が提案されている(例えば、特許文献１を参照)。この特許文献１には、一つ以上のデータボリュームで構成される論理的なグループ(以降、「ジャーナルグループ」と呼ぶ)の特定時点のスナップショット(フルバックアップ、あるいは差分バックアップなどの論理的なイメージ)を取得し、ジャーナルグループに属するデータボリュームへのそれ以降の書込みデータをジャーナル(「Afterジャーナル」又は「事後ジャーナル」と呼ばれる)として保持すること、及び、取得したスナップショットに対し、書き込まれた順序どおりに一連のAfterジャーナルを適用することで、特定時点のデータをリカバリすることが開示されている。これは一般に「Continuous  Data  Protection」又は「ＣＤＰ」と呼ばれる技術の一例である。
【０００４】
上記のようなジャーナル適用によるリカバリにかかる時間（以降、「リカバリ時間」と呼ぶ）は、適用するジャーナルのデータ量に依存する。このため、特許文献１には、複数世代のスナップショットを取得し、特定時点のデータをリカバリする際、その時点の近傍で取得されたスナップショットを起点に一連のジャーナルを適用していくことで、リカバリ時間を短縮することも開示されている。なお、このときリカバリにかかる時間の最悪値を「Recovery  Time  Objective」又は「ＲＴＯ」と呼ぶ。
【０００５】
また、上記Afterジャーナル適用によってリカバリしたデータが既に破壊されている場合に、Afterジャーナル適用を取り消す方法も提案されている(例えば、特許文献１)。この特許文献１には、Afterジャーナル適用によって上書きされる箇所のデータを退避させておき、Afterジャーナル適用を取り消す場合、Afterジャーナル適用後のスナップショットに前記退避させたデータをもとの箇所へ適用する(退避したデータを書き戻す)ことで、短時間でAfterジャーナル適用以前のスナップショットへ復元することが開示されている。なお、この退避させたデータを「Beforeジャーナル」と呼ぶ。また、AfterジャーナルとBeforeジャーナルを区別しない場合は「ジャーナル」と呼ぶ。
【特許文献１】米国特許公開明細書２００５／００１５４１６
【発明の開示】
【発明が解決しようとする課題】
【０００６】
以降の説明では、特定時点のデータをリカバリする際に管理者が指定する時点のことを「リカバリポイント」と呼ぶ。また、スナップショットに一連のジャーナルを適用して指定されたリカバリポイントのデータをリカバリするときに、最後に適用するジャーナルと指定されたリカバリポイントとの関係を、「（前記）ジャーナルが（前記）リカバリポイントを持つ」と言う。スナップショットにジャーナルを適用せずにリカバリできる場合は、前記スナップショットと指定されたリカバリポイントの関係は、「（前記）スナップショットが（前記）リカバリポイントを持つ」と言う。さらに、特定のジャーナルを適用する際に、適用を取り消すために上書きされる箇所のデータを退避させて作成したジャーナルを「対応するジャーナル」又は「退避ジャーナル」と呼ぶ。
【０００７】
一般に、データ破壊が発生した場合、リカバリ時間が業務停止時間に大きく影響し、リカバリ時間の増大に応じて損害も増大していく。このため、リカバリ時間を短縮し、管理者が要求する時間内に任意時点のデータをリカバリできる（以降、「要求ＲＴＯを満たす」という）ことが重要となる。通常は、周期的に（たとえば、１時間毎に）スナップショットを取得し、複数世代のスナップショットを保持しておくことでリカバリ時間を短縮するが、リカバリ時間は、起点となるスナップショットに適用するジャーナルのデータ量に依存し、また、適用するデータ量は実運用での書き込み量及び頻度に依存するため、周期的にスナップショットを取得するのでは、要求ＲＴＯを満たせないリカバリポイントが発生するという問題がある。
【０００８】
本発明は、前記の課題を解決するためになされたものであり、最新スナップショット以降のリカバリポイントのリカバリ時間が一定以上になったときに、最新スナップショットにAfterジャーナルを適用して最新スナップショットのイメージを更新する。また、この更新により最新スナップショット以前のリカバリポイントのリカバリ時間が要求ＲＴＯを満たせなくなった場合に、最新スナップショット以前のスナップショットにもAfterジャーナルを適用して、イメージを更新することで、任意のリカバリポイントのデータを要求ＲＴＯ内でリカバリ可能とするスナップショットの管理方法を提供することを目的とする。なお、以降、スナップショットのイメージを更新することを、「スナップショットを更新する」という。
【課題を解決するための手段】
【０００９】
本発明は、１または複数のホスト計算機と、該ホスト計算機が利用するデータが読み書きされるデータボリュームの特定の時点のスナップショットを取得し、前記特定時点以降の書込みをジャーナルとして保持し、リカバリ時にリカバリポイントの近傍の時点で取得されたスナップショットを基底にして、前記スナップショットに前記ジャーナルを適用することでリカバリを行うストレージシステムと、管理計算機とを備え、各装置がネットワークを介して接続される計算機システムにおいて、前記管理計算機は、最新のスナップショットのリカバリポイント以降のリカバリポイントが特定の時間内にリカバリできるかを判断し、特定の時間内にリカバリできないと判断したとき、前記特定の時間以下の時間でリカバリできるように、最新スナップショットにジャーナルを適用して新しいスナップショットに更新するよう前記ストレージシステムに指示する計算機システムである。
【発明の効果】
【００１０】
本発明によると、いずれの時点のデータであっても、スナップショットに対してジャーナルを適用するのにかかる時間が一定以下となるため、管理者の要求するＲＴＯを保証することが可能になる。
【発明を実施するための最良の形態】
【００１１】
本発明を実施するための最良の形態を説明する。
以下、本発明の計算機システム及び管理計算機とストレージシステム並びにバックアップ管理方法の実施形態及び実施例について、図面を参照しながら説明する。なお、これにより本発明が限定されるものではない。
【００１２】
本発明の実施形態は、ジャーナリングを用いたバックアップ及びリストアを制御する制御部を有するストレージシステムを管理する管理計算機に、設定プログラム、スナップショット管理プログラム、スナップショット管理情報を搭載する。前記設定プログラムによって、管理者が要求するＲＴＯ、ＲＴＯ調整のトリガとなるＲＴＯの閾値、ＲＴＯ調整時にどこまでＲＴＯを短縮するかを示すＲＴＯの目標値を、前記スナップショット管理情報に登録する。前記スナップショット管理プログラムは、周期的にジャーナルの格納情報、スナップショットの格納情報を取得し、最新スナップショットのリカバリポイント以降の全リカバリポイントに関して、各リカバリポイントを持つジャーナルのデータ長とジャーナル適用速度から前記ＲＴＯの閾値内でリカバリ可能か判定する。判定の結果、不可能な場合、最新スナップショットにジャーナルを適用し、前記全リカバリポイントが前記ＲＴＯの目標値内でリカバリ可能最新スナップショットを更新する。また、前記最新スナップショットの更新により、最新スナップショットのリカバリポイント以前のリカバリポイントが要求ＲＴＯ内にリカバリできなくなった場合、最新スナップショットより古いスナップショットも、古いスナップショットのリカバリポイント以降の全リカバリポイントが要求ＲＴＯ内にリカバリできるように更新する。
【００１３】
図１９に示す例で具体的に説明すると、周期的に（例えば１分間隔に）ジャーナル及びスナップショット格納情報を確認し、最新のスナップショット以降の総書込み量が閾値を越えた場合に、最新スナップショットを更新する。すなわち、１８時から２４時までの総書込み量が９Ｔとなり、閾値（８Ｔ）を越えるため、１８時のスナップショットにジャーナル３Ｔ（３時間分）を適用することにより、２１時の新しいスナップショットに更新する。これにより、２１時から２４時までの総書込み量が（９Ｔ−３Ｔ＝６Ｔ）となり、閾値（８Ｔ）以下とすることができる。その際、１２時から２１時までの総書込み量が（８Ｔ＋３Ｔ＝１１Ｔ）となり、閾値（８Ｔ）及びＲＴＯ（１０Ｔ）を越えるため、１２時のスナップショットにジャーナル３Ｔ（３時間分）を適用することにより、１５時の新しいスナップショットに更新する。これにより、１５時から２１時までの総書込み量が８Ｔとなって、閾値（８Ｔ）以下とすることができる。６時から１５時までの総書込み量が（６Ｔ＋３Ｔ＝９Ｔ）となり、閾値（８Ｔ）を越えるが、ＲＴＯ（１０Ｔ）を越えないため、６時のスナップショットは更新しないとする。
【実施例１】
【００１４】
（１）実施例１のシステム構成
図１は、第１の実施形態の計算機システムの構成を示すブロック図である。本システムでは、ストレージ装置１０００とホスト計算機１１００がデータネットワーク１３００で互いに接続される。本実施例では、データネットワーク１３００は、ストレージエリアネットワークとするが、ＩＰネットワークであっても、あるいはこれら以外のデータ通信用ネットワークであってもよい。
【００１５】
ストレージ装置１０００とホスト計算機１１００は、管理ネットワーク１４００を介して管理計算機１２００と接続される。本実施例では、管理ネットワーク１４００はＩＰネットワークとするが、ストレージエリアネットワークであっても、あるいはこれら以外のデータ通信用ネットワークであってもよい。また、データネットワーク１３００と管理ネットワーク１４００が同一ネットワークであってもよいし、管理計算機１２００とホスト計算機１１００は同一計算機であってもかまわない。
【００１６】
なお、説明の都合上、図１では、ストレージ装置１０００を１台、ホスト計算機１１００を１台、管理計算機１２００を１台としたが、本発明ではこれらの数は問わない。１台以上のストレージ装置をストレージシステムというが、以下、区別せずに「ストレージ装置」という場合がある。また、ストレージシステムが管理計算機を内蔵することも可能である。
【００１７】
ストレージ装置１０００は、データを格納するディスク装置１０１０と、ストレージ装置内の制御を行うディスクコントローラ１０２０で構成されている。
【００１８】
ディスク装置１０１０は、ジャーナルグループ１０１４、ＳＳＶＯＬグループ１０１５、ジャーナルボリューム１０１３を備えている。
【００１９】
ジャーナルグループ１０１４は、一つ以上のデータボリューム１０１１により構成される。データボリューム１０１１は、ホスト計算機１１００によって利用されるデータを格納する論理ボリュームである。ホスト計算機１１００からジャーナルグループ１０１４に属するデータボリューム１０１１への書き込みは、後述するストレージマイクロプログラム１０２８により、書き込まれた順序に従い適切な順序番号を付与されたAfterジャーナルとして、ジャーナルグループ１０１４に関連付けられたジャーナルボリューム１０１３に格納される。
【００２０】
ＳＳＶＯＬグループ１０１５は、ある時点におけるジャーナルグループ１０１４の複製イメージ（スナップショット）を格納する。図１において、単一のジャーナルグループ１０１４に対して、ＳＳＶＯＬグループ１０１５は一つ（１世代）しか示されていないが、管理者の要求に応じて、単一のジャーナルグループ１０１４に対して複数個(複数世代)を設置することができる。ＳＳＶＯＬグループ１０１５は、一つ以上のスナップショットボリューム１０１２で構成される。スナップショットボリューム１０１２は、ある時点におけるデータボリューム１０１１の複製イメージを格納する。なお、スナップショットボリューム１０１２に格納される複製イメージは、システムに対する要求や実装等に応じて、データボリューム１０１１のフルバックアップであっても、差分バックアップのような論理的なイメージでも良い。
【００２１】
ジャーナルボリューム１０１３は、Afterジャーナル及びBeforeジャーナルを格納するボリュームである。ジャーナルボリューム１０１３の構成は後述する。
【００２２】
なお、説明の都合上、図１では、ジャーナルグループ１０１４を一つ、ジャーナルボリューム１０１３を一つとしたが、本発明ではこれらの数は問わない。
【００２３】
ディスクコントローラ１０２０には、ホストＩ／Ｆ１０２２、管理Ｉ／Ｆ１０２６、ディスクＩ／Ｆ１０２５、メインメモリ１０２１、ＣＰＵ１０２３、タイマ１０２４が設けられている。
【００２４】
メインメモリ１０２１には、管理テーブル１０２９、ストレージマイクロプログラム１０２８が記憶されている。ＣＰＵ１０２３は、メインメモリ１０２１に記憶されたプログラムを実行する。
【００２５】
ストレージマイクロプログラム１０２８は、スナップショットの取得、AfterジャーナルとBeforeジャーナルの生成、ジャーナルを用いたリカバリ、ジャーナルの開放など従来技術で述べたジャーナリングを用いたバックアップ及びリカバリの各種機能を制御する。このとき、ストレージマイクロプログラム１０２８は、管理テーブル１０２９の情報を参照または更新しながら制御を行う。また、ストレージマイクロプログラム１０２８は、管理計算機１２００やホスト計算機１１００からの要求に従い、ディスク装置１０１０に対するデータの入出力の制御、ストレージ装置内の性能情報の提供、ストレージ装置内の制御情報の設定や提供などを行う機能も有している。
【００２６】
タイマ１０２４は、現在時刻を提供する機能を持つ一般的なタイマである。Afterジャーナル作成時やスナップショット取得時に、ストレージマイクロプログラム１０２８によって参照される。
【００２７】
ホストＩ／Ｆ１０２２は、データネットワーク１３００に対するインタフェースであって、ホスト計算機１１００とデータや制御命令の送受信を行う。管理Ｉ／Ｆ１０２６は、管理ネットワーク１４００とのインタフェースであって、ホスト計算機１１００及び管理計算機１２００とデータや制御命令の送受信を行う。ディスクＩ／Ｆ１０２５は、ディスク装置１０１０に対するインタフェースであってデータや制御命令の送受信を行う。
【００２８】
管理テーブル１０２９の構成については後述する。
【００２９】
ホスト計算機１１００は、キーボードやマウスなどの入力装置１１４０、ＣＰＵ１１３０、ＣＲＴなどの表示装置１１２０、メモリ１１６０、ストレージＩ／Ｆ１１１０及び管理Ｉ／Ｆ１１５０、ローカルディスク１１７０からなる。
【００３０】
ストレージＩ／Ｆ１１１０は、データネットワーク１３００に対するインタフェースであって、ストレージ装置１０００とデータや制御命令の送受信を行う。管理Ｉ／Ｆ１１５０は、データネットワーク１３００に対するインタフェースであって、システム管理のために管理計算機１２００及びストレージ装置１０００とデータや制御命令の送受信を行う。
【００３１】
メモリ１１６０には、アプリケーション１１６３、リカバリマネージャ１１６２、情報収集エージェント１１６１が搭載されており、ＣＰＵ１１３０がこれらを実行する。
【００３２】
アプリケーション１１６３は、データボリューム１０１１に対してデータを読み書きするアプリケーションであり、たとえば、ＤＢＭＳやファイルシステムなどである。
【００３３】
リカバリマネージャ１１６２は、ストレージマイクロプログラム１０２８に対するスナップショット取得の要求、ストレージマイクロプログラム１０２８に対する特定時点のデータのリカバリの要求、アプリケーション１１６３の静止化を行う。これらの機能は、管理者や他のプログラムから実行できるようにコマンドラインインターフェース(以降、「ＣＬＩ」と呼ぶ)などで提供される。また、リカバリマネージャ１１６２は、ジャーナリングを用いたバックアップに関する設定を、データネットワーク１３００を介して管理テーブル１０２９に設定する機能も有しており、管理者がこの機能を利用するためのＣＬＩも提供する。
【００３４】
ローカルディスク１１７０は、ホスト計算機１１００に直接接続されたハードディスクなどのディスク装置であり、図示していないシステム構成定義ファイル群を格納している。このシステム構成定義ファイル群は、アプリケーション１１６３がどのデータボリューム１０１１利用するか、データボリューム１０１１がどのジャーナルグループ１０１４に属すかといったシステムの構成定義が記述してあるファイルの集合である。このシステム構成定義ファイル群は、管理者がシステム構築時に記述するものであり、たとえば、一般的なLinux（登録商標）オペレーティングシステムで用いられる／etc／fstabファイル等である。
【００３５】
情報収集エージェント１１６１は、ホスト計算機１１００のシステム構成情報を収集するプログラムである。情報収集エージェント１１６１は、後述する管理計算機１２００の設定プログラム１２６５の要求に応じて、前記ローカルディスク１１７０に格納されるシステム構成定義ファイル群からアプリケーション１１６３が利用しているジャーナルグループ１０１４とジャーナルグループ１０１４が属するストレージ装置１０００を特定し、特定したストレージ装置１０００の識別子とジャーナルグループの識別子１０１４を設定プログラム１２６５に返す。
【００３６】
なお、説明の都合上、図１では、アプリケーション１１６３を一つとしたが、本発明では、この数は問わない。
【００３７】
管理計算機１２００は、キーボードやマウスなどの入力装置１２４０、ＣＰＵ１２３０、ＣＲＴなどの表示装置１２２０、メモリ１２５０、システム管理のためにホスト計算機１２００及びストレージ装置１０００とデータや制御命令を送受信する管理Ｉ／Ｆ１２１０からなる。
【００３８】
管理計算機１２００のメモリ１２５０には、設定プログラム１２６５、スナップショット管理情報１２６４、スナップショット管理プログラム１２６３が記憶されている。ＣＰＵ１２３０は、メモリ１２５０に記憶された各プログラムを実行することで各機能を実現する。
【００３９】
設定プログラム１２６５は、本システムの管理情報を設定するためのグラフィカルユーザインタフェース（ＧＵＩ）を提供し、そこで入力された値を元にスナップショット管理情報１２６４を設定するプログラムである。
【００４０】
スナップショット管理プログラム１２６３は、周期的に、ジャーナルの格納情報、スナップショットの格納情報をストレージマイクロプログラム１０２８に問い合わせ、管理者が要求するＲＴＯを満たせるか判断する。満たせないと判断した場合、ＲＴＯを満たせるようにスナップショットを更新する要求をストレージマイクロプログラム１０２８に発行する。
【００４１】
バックアップ管理情報１２６４の構成は後述する。
【００４２】
図２は、本実施の形態におけるジャーナルボリューム１０１３の構成の一例である。ジャーナルボリューム１０１３は、論理的にジャーナルヘッダ領域２０１０とジャーナルデータ領域２０２０に分割される。
【００４３】
ジャーナルボリューム１０１３に格納される際、ジャーナルは、ジャーナルヘッダ２０１１とジャーナルデータ２０２１に分割され、ジャーナルボリューム１０１３に格納される。ジャーナルヘッダ２０１１はジャーナルヘッダ領域２０１０に格納され、ジャーナルデータ２０２１はジャーナルデータ領域２０２０に格納される。
【００４４】
ジャーナルデータ２０２１は、ジャーナルを適用する際にデータボリューム１０１１に書き込むデータであり、ジャーナルヘッダ２０１１は、このジャーナルデータ２０２１に関する情報を保持する。
【００４５】
ジャーナルヘッダ２０１１は、データボリュームＩＤ２１０１、書き込み先アドレス２１０２、データ長２１０３、生成時刻２１０４、順序番号２１０５、ＡＪＮＬボリュームＩＤ２１０６、ＡＪＮＬ格納アドレス２１０７、ＢＪＮＬボリュームＩＤ２１０８、ＢＪＮＬ格納アドレス２１０９を持つ。
【００４６】
データボリュームＩＤ２１０１は、ジャーナル適用時のジャーナルデータの書き込み先となるデータボリューム１０１１の識別子を保持する。書き込み先アドレス２１０２は、ジャーナル適用時のジャーナルデータの書き込み先となるアドレスを保持する。データ長２１０３は、書き込みデータの長さ、すなわちジャーナルデータ２０２１の長さを保持する。これらの値は、Afterジャーナルを作成する際、ストレージマイクロプログラム１０２８がホスト計算機１１００からの書込み要求を解析することで取得し、設定する値である。
【００４７】
生成時刻２１０４は、ホスト計算機１１００からの書込み要求がストレージ装置１０００に到着した時刻を保持する。生成時刻２１０４の値は、ストレージマイクロプログラム１０２８が、ディスクコントローラ１０２０のタイマ１０２４から取得し、設定するものである。生成時刻２１０４は、リカバリを行う際、管理者が指定するリカバリポイントとなる。なお、別の実施形態として、本値は、書込み要求内に含まれる書込み発行時刻でも良い。たとえば、メインフレーム環境では、複数のメインフレームホストがタイマを共有しており、書き込みコマンドを発行する時刻を提供することができるため、これを利用することも可能である。
【００４８】
順序番号２１０５は、リカバリの際に、どのスナップショットにどのジャーナルを適用すべきかを決定するための順序番号を保持する。順序番号２１０５の値は、ホスト計算機１１００からの書込みに対してAfterジャーナルを作成する際、ストレージマイクロプログラム１０２８が後述するジャーナルグループテーブル３０００の順序カウンタ３００３が保持する値を取得し、設定するものである。
【００４９】
ＡＪＮＬボリュームＩＤ２１０６は、Afterジャーナルのジャーナルデータを格納しているボリュームの識別子を保持する。ＡＪＮＬ格納アドレス２１０７は、Afterジャーナルのジャーナルデータが格納されているアドレスを保持する。これらの値は、Afterジャーナル作成時に、ストレージマイクロプログラム１０２８が設定するものである。また、Afterジャーナルのジャーナルデータを開放した場合、ストレージマイクロプログラム１０２８がＡＪＮＬボリュームＩＤ２１０６にNULLを、ＡＪＮＬ格納アドレス２１０７にNULLを設定する。
【００５０】
ＢＪＮＬボリュームＩＤ２１０８は、Beforeジャーナルのジャーナルデータを格納しているボリュームの識別子を保持する。ＢＪＮＬ格納アドレス２１０９はBeforeジャーナルのジャーナルデータが格納されているアドレスを保持する。これらの値は、Beforeジャーナル作成時に、ストレージマイクロプログラム１０２８が設定するものである。また、Beforeジャーナルのジャーナルデータを開放した場合、ストレージマイクロプログラム１０２８が、ＢＪＮＬボリュームＩＤ２１０８にNULLを、ＢＪＮＬ格納アドレス２１０９にNULLを設定する。
【００５１】
ＡＪＮＬボリュームＩＤ２１０６、ＡＪＮＬ格納アドレス２１０７、ＢＪＮＬボリュームＩＤ２１０８、ＢＪＮＬ格納アドレス２１０９の全てがNULLの場合、ストレージマイクロプログラム１０２８が当該ジャーナルヘッダを開放する。
【００５２】
ジャーナルヘッダ２０１１は、ホスト計算機１１００から書込みに対して、後述するストレージマイクロプログラム１０２８がAfterジャーナルを作成した時に作成される。すなわち、Beforeジャーナル作成時には、Beforeジャーナルのジャーナルデータ２０２１が格納されたボリュームの識別子をＢＪＮＬボリュームＩＤ２１０８に、格納されたアドレスをＢＪＮＬ格納アドレス２１０９に設定することになる。同様に、一度開放したAfterジャーナルを再作成する場合、Afterジャーナルのジャーナルデータ２０２１が格納されたボリュームの識別子をＡＪＮＬボリュームＩＤ２１０６に、格納されたアドレスをＡＪＮＬ格納アドレス２１０７に設定することとなる。
【００５３】
図３から図９は管理テーブル１０２９を構成するテーブル群の一例である。図３は、管理テーブル１０２９を構成するジャーナルグループテーブル３０００である。ジャーナルグループテーブル３０００は、ジャーナルグループの識別子を保持するＪＮＬグループＩＤ３００１、順序カウンタ３００３、最新のジャーナルヘッダの格納先ボリュームの識別子を保持する最新ＪＮＬヘッダ格納ＶＯＬＩＤ３００４、最新のジャーナルヘッダの格納先アドレスを保持する最新ＪＮＬヘッダ格納アドレス３００５、最古のジャーナルヘッダの格納先ボリュームの識別子を保持する最古ＪＮＬヘッダ格納ＶＯＬＩＤ３００６、最古のジャーナルヘッダの格納先アドレスを保持する最古ＪＮＬヘッダ格納アドレス３００７を持つ。
【００５４】
ＪＮＬグループＩＤ３００１の値は、リカバリマネージャ１１６２が提供するＣＬＩを用いて、管理者が設定するものである。たとえば、管理者は、「CreateJG  −id  JNLG＿01」のようなコマンドを発行する。これはJNLG＿01という識別子のジャーナルグループを作成するという要求になる。このJNLG＿01という値がＪＮＬグループＩＤ３００１に格納される。
【００５５】
順序カウンタ３００３は、ジャーナル及びスナップショット作成順序を管理するための番号である。順序カウンタ３００３の値は、ホスト計算機１１００からの書込みに対してAfterジャーナルが生成されるたびに、ストレージマイクロプログラム１０２８によって１だけ加算され、加算後の値が順序番号２１０５にコピーされる。また、順序カウンタ３００３の値は、スナップショットを取得するたびに、ストレージマイクロプログラム１０２８によって、後述するスナップショットテーブル５０００の順序番号５００３にコピーされる。この処理により、スナップショットと各ジャーナルの順序関係が記録され、リカバリの際にスナップショットに適用すべきジャーナルを特定できる。具体的には、特定のスナップショットにAfterジャーナルを適用してリカバリを行う場合、スナップショットの順序番号より大きく、且つ指定されたリカバリポイントを持つジャーナルの順序番号以下の順序番号を持つジャーナルを順序番号に従って適用することで、リカバリが行われる。逆に、特定のスナップショットにBeforeジャーナルを適用する場合、スナップショットの順序番号以下、且つ指定されたリカバリポイントを持つジャーナルの順序番号より大きな順序番号を持つジャーナルを順序番号の大きい順に適用することで、リカバリが行われる。
【００５６】
最新ＪＮＬヘッダ格納ＶＯＬＩＤ３００４、最新ＪＮＬヘッダ格納アドレス３００５、最古ＪＮＬヘッダ格納ＶＯＬＩＤ３００６、最古ＪＮＬヘッダ格納アドレス３００７は、新規ジャーナルヘッダを格納するボリュームやアドレスの決定、削除するジャーナルの特定のために利用され、新規ジャーナルヘッダ作成時やジャーナル削除時に、ストレージマイクロプログラム１０２８によって更新される。
【００５７】
図４は、管理テーブル１０２９を構成するデータボリュームテーブル４０００である。データボリュームテーブル４０００は、ジャーナルグループに属するデータボリュームを示すテーブルである。データボリュームテーブル４０００は、ＪＮＬグループＩＤ４００１、データボリュームＩＤ４００２、順序４００３、サイズ４００４からなる。
【００５８】
ＪＮＬグループＩＤ４００１は、ジャーナルグループの識別子を保持する。データボリュームＩＤ４００２は、前記ジャーナルグループの識別子で識別されるＪＮＬグループに属するデータボリュームの識別子を保持する。順序４００３は、前記データボリュームの識別子で示されるデータボリュームのジャーナルグループ内での識別子を保持する。
【００５９】
ＪＮＬグループＩＤ４００１、データボリュームＩＤ４００２、順序４００３の対応関係は、リカバリマネージャ１１６２が提供するＣＬＩを用いて管理者が設定するものである。設定の流れとしては、まず管理者は、ローカルディスク１１７０に格納されるシステム構成定義ファイル群のひとつである、ジャーナルグループ構成定義ファイルを作成する。このジャーナルグループ構成定義ファイルについては後述する。その後、先述した「CreateJG  −id  JNLG＿01」というコマンドを発行すると、ジャーナルグループ構成定義ファイルに基づき、指定されたジャーナルグループに関するＪＮＬグループＩＤ４００１、データボリュームＩＤ４００２、順序４００３の値が設定される。
【００６０】
サイズ４００４は、データボリュームＩＤ４００２で識別されるボリュームの容量を保持する。この値は、先述した「CreateJG  −id  JNLG＿01」というコマンドを発行した際に、データボリュームＩＤ４００２で識別されるボリュームの容量を、リカバリマネージャ１１６２が、ストレージマイクロプログラム１０２８から取得し、設定するものである。
【００６１】
図５は、管理テーブル１０２９を構成するスナップショットテーブル５０００である。スナップショットテーブル５０００は、取得したスナップショットを管理するためのテーブルである。スナップショットテーブル５０００は、取得対象のジャーナルグループの識別子を保持するＪＮＬグループＩＤ５００１、スナップショットを格納するＳＳＶＯＬグループの識別子を保持するＳＳＶＯＬグループＩＤ５００２、スナップショットが取得された順序を示す順序番号５００３、取得時刻５００４、ジャーナル適用速度５００５を持つ。
【００６２】
ＪＮＬグループＩＤ５００１とＳＳＶＯＬグループＩＤ５００２との対応関係は、リカバリマネージャ１１６２が提供するＣＬＩを用いて、管理者が設定する。たとえば、管理者は、「addSSVOLG  −jgid  JNLG＿01  −ssvolgid  SS＿01」のようなコマンドを発行する。これはJNLG＿01という識別子のジャーナルグループにSS＿01という識別子を持つＳＳＶＯＬグループを関連付けるという要求になる。このJNLG＿01がＪＮＬグループＩＤ５００１に格納され、SS＿01の値がＳＳＶＯＬグループＩＤ５００２に格納される。なお、複数世代のスナップショットを保持するために、複数のＳＳＶＯＬグループを関連付ける場合は、上記コマンドを複数回実行する。
【００６３】
順序番号５００３は、スナップショットを取得するたびに、ストレージマイクロプログラム１０２８によってジャーナルグループテーブル３０００の順序カウンタ３００３からコピーされる。
【００６４】
取得時刻５００４は、リカバリマネージャ１１６２からのスナップショット取得要求がストレージ装置１０００に到着した時刻を保持する。取得時刻５００４の値は、ジャーナルヘッダの生成時刻２１０４と同様に、ストレージマイクロプログラム１０２８が、ディスクコントローラ１０２０のタイマ１０２４から、あるいはスナップショット取得要求から取得し、設定するものである。
【００６５】
ジャーナル適用速度５００５は、スナップショットにジャーナルを適用するときの速度である。ジャーナル適用速度５００５は、管理者がＳＳＶＯＬグループを定義する際に登録するものである。あるいは、別の実施形態として、ストレージ装置１０００内で擬似的にジャーナル適用を行い、そのときの性能をモニタリングし、登録しても良い。
【００６６】
図６は、管理テーブル１０２９を構成するスナップショットボリュームテーブル６０００である。スナップショットボリュームテーブル６０００は、ＳＳＶＯＬグループに属するスナップショットボリュームを示すテーブルである。スナップショットボリュームテーブル６０００は、ＳＳＶＯＬグループＩＤ６００１、スナップショットボリュームＩＤ６００２、順序６００３、サイズ６００４からなる。
【００６７】
ＳＳＶＯＬグループＩＤ６００１は、ＳＳＶＯＬグループの識別子を保持する。スナップショットボリュームＩＤ６００２は、前記ＳＳＶＯＬグループの識別子で識別されるＳＳＶＯＬグループに属するスナップショットボリュームの識別子を保持する。順序６００３は、前記スナップショットボリュームの識別子で示されるスナップショットボリュームがどのデータボリュームの複製イメージを格納するかを示す値を保持する。この値と同一の値をデータボリューム４０００の順序４００３に持つデータボリュームの複製イメージを、スナップショットボリュームは格納する。
【００６８】
ＳＳＶＯＬグループＩＤ６００１、スナップショットボリュームＩＤ６００２、順序６００３の対応関係は、リカバリマネージャ１１６２が提供するＣＬＩを用いて管理者が設定するものである。たとえば、管理者は、「addSSVOL  −ssvolgid  SS＿01  −volid  SVOL＿01」というコマンドを発行する。これは、SS＿01という識別子のＳＳＶＯＬグループにSVOL＿01という識別子を持つスナップショットボリュームを追加するという要求になる。このSS＿01がSVOLグループＩＤ６００１に格納され、SVOL＿01がスナップショットボリュームＩＤ６００２に格納される。なお、単一のＳＳＶＯＬグループに複数のスナップショットボリュームを設定する場合は、上記のコマンドをスナップショットボリュームの識別子を変えて複数回実行する順序６００３の値は、ＳＳＶＯＬグループ内でのＳＳＶＯＬグループ毎にスナップショットボリュームを関連付けた(コマンドを発行した)順番どおりに、１、２、３・・・と１から順番に自然数が振られる。
【００６９】
サイズ６００４は、スナップショットボリュームＩＤ６００２で識別されるボリュームの容量を保持する。この値は、先述した「addSSVOL  −ssvolgid  SS＿01  −volid  SVOL＿01」というコマンドを発行した際に、スナップショットボリュームＩＤ６００２で識別されるボリュームの容量を、リカバリマネージャ１１６２が、ストレージマイクロプログラム１０２８から取得し、設定するものである。
【００７０】
図７は、管理テーブル１０２９を構成するジャーナルボリュームテーブル７０００である。ジャーナルボリュームテーブル７０００は、ジャーナルグループに関連付けられるジャーナルボリュームを示すテーブルである。ジャーナルボリュームテーブル７０００は、ジャーナルグループの識別子を保持するＪＮＬグループＩＤ７００１、そのジャーナルグループに関連付けられたジャーナルボリュームの識別子を保持するＪＮＬボリュームＩＤ７００２、そのジャーナルボリュームの記憶容量を保持する容量７００３、順序７００４からなる。
【００７１】
順序７００４の値は、ジャーナルグループに対応付けられたジャーナルボリュームを利用する順序を規定している。図７のJNLG＿01においては、ストレージマイクロプログラム１０２８は、J−VOL＿01を使い終わった後、次にJ−VOL＿03を利用することになる。また、最後のジャーナルボリュームを使い切った場合、ストレージマイクロプログラム１０２８は、最初のジャーナルボリュームを再利用するようにして、循環して各ジャーナルボリュームを使いまわす。
【００７２】
ＪＮＬグループＩＤ７００１とＪＮＬボリュームＩＤ７００２の対応関係は、リカバリマネージャ１１６２が提供するＣＬＩを用いて、管理者が設定する。たとえば、管理者は、「addJVOL  −jgid  JNLG＿01  −jvolid  J−VOL＿01」のようなコマンドを発行する。これは、JNLG＿01という識別子のジャーナルグループにJ-VOL＿01という識別子を持つジャーナルボリュームを追加するという要求になる。このJNLG＿01がＪＮＬグループＩＤ７００１に格納され、J-VOL＿01の値がＪＮＬボリュームＩＤ７００２に格納される。複数のジャーナルボリュームを単一のジャーナルグループに関連付ける場合は、上記のコマンドをジャーナルボリュームのＩＤを変えて複数回実行する。なお、順序７００４の値は、ジャーナルグループ毎にジャーナルボリュームを関連付けた(コマンドを発行した)順番どおりに、１、２、３・・・と１から順番に自然数が振られる。容量７００３の値は、先述した「addJVOL  −jgid  JNLG＿01  −jvolid  J−VOL＿01」というコマンドを発行した際に、ジャーナルボリュームＩＤ７００２で識別されるボリュームの容量を、リカバリマネージャ１１６２が、ストレージマイクロプログラム１０２８から取得し、設定するものである。
【００７３】
図８は、ローカルディスク１１７０に格納されるジャーナルグループ構成定義ファイル８０００の一例である。ジャーナルグループ構成定義ファイル８０００は、ジャーナルグループを設定する際に利用されるファイルであり、各データボリュームがどのジャーナルグループに属すかを示す。ジャーナルグループ構成定義ファイル８０００内では、ＪＮＬＧ８００１とＶＯＬ−ＩＤ８００２の２つの値の組が二行目以降の各行に記される。
【００７４】
ＪＮＬＧ８００１の値は、ジャーナルグループの識別子である。ＶＯＬ−ＩＤ８００２の値は、前記ジャーナルグループの識別子で識別されるジャーナルグループに属するデータボリュームの識別子である。ジャーナルグループ設定時には、ＪＮＬＧ８００１がデータボリュームテーブル４０００のＪＮＬグループＩＤ４００１に登録され、ＶＯＬ−ＩＤ８００２がデータボリュームテーブル４０００のデータボリュームＩＤ４００２に登録される。順序４００３の値は、ジャーナルグループ構成定義ファイル８０００において、ジャーナルグループ毎に、ジャーナルグループとデータボリュームが関連付けられた順（ファイル上方から順）に、１、２、３・・・と１から順番に自然数が振られる。
【００７５】
図９と図１０は、スナップショット管理情報１２６４を構成するテーブル群の一例である。図９は、バックアップ管理情報１２６４を構成するアプリケーションテーブル９０００である。アプリケーションテーブル９０００は、バックアップ管理を行うための情報を格納するテーブルであり、バックアップ対象アプリケーションの識別子を保持するアプリケーションＩＤ９００１、ＩＰアドレスなどのアプリケーションが起動しているホスト計算機の識別子を保持するホストアドレス９００２、アプリケーションが利用するジャーナルグループが属しているストレージの識別子(たとえば、シリアルナンバー)を保持するストレージＩＤ９００３、アプリケーションが利用するジャーナルグループの識別子を保持するＪＮＬグループＩＤ９００４、監視周期９００５、要求ＲＴＯ９００６、要求ＲＴＯ適用期間９００７、ＲＴＯ調整開始閾値９００８、ＲＴＯ調整終了値９００９からなる。
【００７６】
監視周期９００５は、スナップショット及びジャーナルの格納状況を監視する周期を保持している。要求ＲＴＯ９００６は、管理者が要求するＲＴＯを保持する。本実施形態では、監視周期９００５及び要求ＲＴＯ９００６の値の単位を秒としているが、別の実施形態では他の単位でもかまわない。
【００７７】
要求ＲＴＯ適用期間９００７は、要求ＲＴＯ９００６に設定されている要求ＲＴＯを現在時刻から何時間前まで適用するかを保持する。本実施形態ではこの値の単位を時間としているが、別の実施形態では他の単位でもかまわない。また、適用期間を定めない場合は、無限大を示す「−１」が設定される。
【００７８】
ＲＴＯ調整開始閾値９００８は、要求ＲＴＯを満たすべく最新のスナップショットの更新を開始するトリガとなる閾値を保持する。最新のスナップショット以降のリカバリポイントのＲＴＯがこの値を上回ると、最新スナップショットが更新される。ＲＴＯ調整終了値９００９は前記最新スナップショットの更新を終了するＲＴＯを保持しており、この値を用いて最新スナップショットをどの時点まで更新するかが決定される。
【００７９】
アプリケーションＩＤ９００１、ホストアドレス９００２、監視周期９００５、要求ＲＴＯ９００６、要求ＲＴＯ適用期間９００７、ＲＴＯ調整開始閾値９００８、ＲＴＯ調整終了値９００９は、設定プログラム１２６５が提供するＧＵＩを介して管理者によって設定される。
【００８０】
ストレージＩＤ９００３及びＪＮＬグループＩＤ９００４は、アプリケーションが利用するジャーナルグループを示しており、設定プログラム１２６５が情報収集エージェント１１６１から取得する情報である。
【００８１】
図１０は、バックアップ管理情報１２６４を構成するストレージテーブル１００００である。ストレージテーブル１００００は、ストレージＩＤ１０００１、ＩＰアドレス１０００２からなる。ストレージＩＤ１０００１は、シリアルナンバーなどのストレージ装置を一意に識別するための識別子を保持する。ＩＰアドレス１０００２は、管理Ｉ／Ｆのネットワークのアドレスを保持する。この二つの値はどちらとも、設定プログラム１２６５が提供するＧＵＩを介して管理者によって設定される。以上がスナップショット管理情報１２６４を構成するテーブル群である。
【００８２】
（２）実施例１の動作
まず、管理計算機１２００の設定プログラム１２６５の動作の一例について説明する。図１１Ａ及び図１１Ｂは、設定プログラム１２６５がシステム設定用に提供するＧＵＩである。図１１Ａのストレージ装置情報設定画面１１１００は、管理者がストレージ装置の情報を設定する際に、設定プログラム１２６５にＣＬＩなどで要求し表示させる画面である。ストレージ装置ＩＤ１１１０1は、シリアルナンバーなどのストレージ装置を識別するＩＤを入力するフィールドである。ＩＰアドレス１１１０２は、ストレージ装置ＩＤ１１１０１で示されるストレージ装置の管理Ｉ／Ｆに接続するためのＩＰアドレスを入力するフィールドである。
【００８３】
追加１１１１０、削除１１１１１、実行１１１１２、取り消し１１１１３は、それぞれボタンである。
【００８４】
ストレージ装置情報設定画面１１１００において、ストレージ装置ＩＤ１１１０１、ＩＰアドレス１１１０２、削除１１１１０は三つで一つのカラムを構成する。削除１１１１１を押下すると、押下された削除１１１１１が属するカラムをストレージ装置情報設定画面１１１００から削除することができる。追加１１１１０を押下すると、ストレージ装置情報設定画面１１１００上に前記カラムをストレージ装置情報設定画面１１１００上に増加させることができる。取り消し１１１１３を押下すると、設定プログラム１２６５は何もせずに終了する。実行１１１１２を押下すると、設定プログラム１２６５が、入力されているストレージ装置ＩＤ１１１０１の値とＩＰアドレス１１１０２の値の組を、ストレージテーブル１００００のストレージＩＤ１０００１とＩＰアドレス１０００２に設定する。
【００８５】
図１１Ｂのバックアップ対象アプリケーション情報設定画面１１２００は、管理者がバックアップ対象アプリケーションの情報を設定する際に、設定プログラム１２６５にＣＬＩなどで要求し表示させる画面である。アプリケーションＩＤ１１２０１は、バックアップ対象となるアプリケーションを一意に識別するためのＩＤを入力するフィールドである。ホストアドレス１１２０２は、ＩＰアドレスなどのバックアップ対象となるアプリケーションが起動しているホスト計算機の識別子を入力するフィールドである。監視周期１１２０３は、スナップショット及びジャーナルの格納状況を監視する周期を入力するフィールドである。要求ＲＴＯ１１２０４は、管理者が要求するＲＴＯを入力するフィールドである。要求ＲＴＯ適用期間１１２０５は、要求ＲＴＯ１１２０４に入力されている要求ＲＴＯの適用期間を現在時刻から何時間前までとするかを入力するフィールドである。ＲＴＯ調整開始閾値１１２０６は、要求ＲＴＯを満たすべく最新のスナップショットの更新を開始するトリガとなる閾値を入力するフィールドである。ＲＴＯ調整終了値１１２０７は、前記最新スナップショットの更新を終了するＲＴＯを入力するフィールドである。
【００８６】
本実施例では、監視周期１１２０３、要求ＲＴＯ１１２０４、ＲＴＯ調整開始閾値１１２０６、ＲＴＯ調整終了値１１２０７の単位を秒としているが、これ以外の単位であってもよい。また、要求ＲＴＯ適用期間１１２０５の単位を時間としているが、これ以外の単位であってもよい。また、適用期間を定めない場合は、無限大を示す「−１」をこのフィールドに設定する。
【００８７】
実行１１２１０、取り消し１１２１１は、ボタンである。取り消し１１２１１を押下すると、設定プログラム１２６５は何もせずに終了する。実行１１２１０を押下すると、図１２に示すフローで情報の設定を行う。
【００８８】
次に、図１２を参照しながら、図１１Ｂの画面において、実行１１２１０ボタンを押下したときの設定プログラム１２６５と、設定プログラム１２６５によって途中で呼び出される情報収集エージェント１１６１の動作を説明する。
【００８９】
まず、設定プログラム１２６５は、アプリケーション１１２０１の値をアプリケーションテーブル９０００のアプリケーションＩＤ９００１に、ホストアドレス１１２０２の値をアプリケーションテーブル９０００のホストアドレス９００２に、監視周期１１２０３の値をアプリケーションテーブル９０００の監視周期９００５に、要求ＲＴＯ１１２０４の値をアプリケーションテーブル９０００の要求ＲＴＯ９００６に、要求ＲＴＯ適用期間１１２０５の値をアプリケーションテーブル９０００の要求ＲＴＯ適用期間９００７に、ＲＴＯ調整開始閾値１１２０６の値をＲＴＯ調整開始閾値９００８に、ＲＴＯ調整終了値１１２０７の値をＲＴＯ調整終了値９００８に、それぞれ設定する（ステップ１２０１０）。
【００９０】
次に、設定プログラム１２６５は、ホストアドレス９００２を用いてホスト計算機１１００に接続し、情報収集エージェント１１６１にアプリケーションとジャーナルグループの対応情報を要求する(ステップ１２０２０)。
【００９１】
情報収集エージェント１１６１は、前記ローカルディスク１１７０に格納されたシステム構成定義ファイル群からアプリケーションが利用するデータボリュームを特定し、そのデータボリュームが属するジャーナルグループとそのジャーナルグループが属するストレージ装置を特定する。その後、アプリケーションの識別子、そのアプリケーションが利用するデータボリュームが属するジャーナルグループの識別子、そのジャーナルグループが属するストレージ装置の識別子を設定プログラム１２６５に返す（ステップ１２０３０）。
【００９２】
設定プログラム１２６５は、そのアプリケーションが利用するデータボリュームが属するジャーナルグループの識別子をＪＮＬグループＩＤ９００４へ、そのジャーナルグループが属するストレージ装置をストレージＩＤ９００３に設定する（ステップ１２０４０）。
【００９３】
以上が、設定プログラム１２６５の動きである。
【００９４】
次に、図１３を参照しながら、スナップショット管理プログラム１２６３の動作の一例について説明する。スナップショット管理プログラム１２６３は、アプリケーションテーブル９０００の監視周期９００５に設定された間隔で、ＲＴＯの監視を行う。このタイミングに達するまで、スナップショット管理プログラム１２６３は、待機する（ステップ１３０１０）。
【００９５】
監視のタイミングになると、スナップショット管理プログラム１２６３は、バックアップ対象アプリケーションが利用するストレージ装置のＩＰアドレスを、ストレージテーブル１００００から取得する。スナップショット管理プログラム１２６３は、このＩＰアドレスを用いてストレージ装置１０００に接続し、ストレージマイクロプログラム１０２８からジャーナルヘッダ２０１１のリスト、スナップショットテーブル５０００の情報を取得する（ステップ１３０２０）。
【００９６】
取得した情報を用いて、最新のスナップショットのリカバリポイント以降のリカバリポイントのＲＴＯがＲＴＯ調整開始閾値９００８以上であるかを判定する（ステップ１３０３０）。このステップでは、まず、最も順序番号５００３が大きいスナップショットを最新スナップショットとする。次に、最新スナップショットの順序番号５００３より大きな順序番号２１０５を持つジャーナルを、最新スナップショットのリカバリポイント以降のリカバリポイントを持つAfterジャーナルとして特定する。特定した各Afterジャーナルのジャーナルヘッダ２０１１のデータ長２１０３の合計値を算出する。この合計値分のジャーナルデータを、最新スナップショットのジャーナル適用速度５００５に示された性能で適用するのに要する時間を算出する。本実施例では、前記合計値をジャーナル適用速度５００５で割ることで算出できる。この算出した時間がＲＴＯ調整開始閾値９００８以上であるかを判定する。
【００９７】
ステップ１３０３０の判定の結果、最新のスナップショット以降のリカバリポイントのＲＴＯがＲＴＯ調整開始閾値９００８未満であれば、次回の監視周期まで待機するために、ステップ１３０１０へジャンプする。
【００９８】
一方、ステップ１３０３０の判定の結果、最新のスナップショット以降のリカバリポイントのＲＴＯがＲＴＯ調整開始閾値９００８以上であれば、最新スナップショットを更新するようにストレージマイクロプログラム１０２８に要求する（ステップ１３０４０）。このステップでは、まず、最新スナップショットのジャーナル適用速度５００５から、ＲＴＯ調整終了値９００９で示される時間内に適用可能な最大適用データ量を算出する。本実施例では、ジャーナル適用速度５００５とＲＴＯ調整終了値９００９の積を求めることで算出する。その後、ステップ１３０３０において特定したAfterジャーナルのジャーナルヘッダ群に関して、順序番号２１０５の大きい順にデータ長２１０３を加算していき、前記の最大適用データ量より大きくなったときに、最後に加算したデータ長を持つジャーナルヘッダを特定する。そして、そのジャーナルヘッダの順序番号２１０５までAfterジャーナルを最新スナップショットに適用していくように、ストレージマイクロプログラム１０２８に要求する。なお、最新スナップショットを更新した後に、ストレージマイクロプログラム１０２８は、最後に適用したAfterジャーナルの生成時刻２１０４を最新スナップショットの取得時刻５００４に、順序番号２１０５を順序番号５００３にコピーする。
【００９９】
次に、先ほど更新したスナップショットより一つ古いリカバリポイントを持つスナップショット(以降、「一つ前のスナップショット」と呼ぶ)のリカバリポイント以降のリカバリポイントのＲＴＯが、管理者が要求するＲＴＯを満たすか判定する（ステップ１３０５０）。ここでは、一つ前のスナップショットより大きく、先ほど更新したスナップショット以下の順序番号２１０５を持つジャーナルを、ステップ１３０２０にて取得したジャーナルヘッダリストから、一つ古いスナップショットのリカバリポイント以降のリカバリポイントを持つAfterジャーナルとして特定する。その後は、ステップ１３０３０での処理と同様に、各ジャーナルヘッダのデータ長を合計し、この合計値分のジャーナル適用に要する時間を算出する。この算出した時間が要求ＲＴＯ９００６以下である場合、管理者が要求するＲＴＯを満たすものとする。
【０１００】
ステップ１３０５０の判定の結果、管理者が要求するＲＴＯを満たす場合、次回の監視周期まで待機するために１３０１０へジャンプする。
【０１０１】
一方、ステップ１３０５０の判定の結果、管理者が要求するＲＴＯを満たさない場合、要求ＲＴＯを満たすべく一つ前のスナップショットを更新するかを判定する（ステップ１３０６０）。このステップでは、ステップ１３０５０において特定したAfterジャーナルのジャーナルヘッダ群に関して、現在時刻から要求ＲＴＯ適用期間９００７に指定された時間を引いた時刻以降の生成時刻２１０４を持つジャーナルが存在するかを判定し、存在する場合、要求ＲＴＯを満たすべく一つ前のスナップショットを更新すると判定する。
【０１０２】
ステップ１３０６０の判定の結果、一つ前のスナップショットを更新しない場合、次回の監視周期まで待機するために１３０１０へジャンプする。
【０１０３】
一方、ステップ１３０６０の判定の結果、一つ前のスナップショットを更新する場合、一つ前のスナップショットを更新するようにストレージマイクロプログラム１０２８へ要求する(ステップ１３０７０)。このステップでは、まず、一つ前のスナップショットのジャーナル適用速度５００５から、要求ＲＴＯ９００６で示される時間内に適用可能な最大適用データ量を算出する。その後、ステップ１３０５０において特定したAfterジャーナルのジャーナルヘッダ群に関して、順序番号２１０５の大きい順にデータ長を加算していき、前記の最大適用データ量より大きくなったとき最後に加算したデータ長を持つジャーナルを特定する。そして、そのジャーナルヘッダの順序番号までAfterジャーナルを一つ前のスナップショットに適用するようにストレージマイクロプログラム１０２８に要求する。なお、一つ前のスナップショットを更新した後に、ストレージマイクロプログラム１０２８は、最後に適用したAfterジャーナルの生成時刻２１０４を最新スナップショットの取得時刻５００４に、順序番号２１０５を順序番号５００３にコピーする。
【０１０４】
ステップ１３０７０が終了すると、更に一つ前のスナップショット以降のリカバリポイントのＲＴＯが、管理者が要求するＲＴＯを満たすか判定するために、ステップ１３０５０へジャンプする。
以上がスナップショット管理プログラム１２６３の動作である。
【０１０５】
なお、本実施例においては、ジャーナルグループ１０１４に関連付けられたジャーナルボリューム１０１３群の総容量は、ＲＴＯ調整終了値９００９で示される時間内に適用可能な最大適用データ量と、ジャーナルグループ１０１４に関連付けられたＳＳＶＯＬグループの数から１を引いた値と要求ＲＴＯ９００６で示される時間内に適用可能な最大適用データ量の積を足し合わせた値未満である前提で動作している。すなわち、上記動作において、最古のスナップショットが更新されることはないという前提で動作するが、他の実施形態において、前記前提が満たされない場合は、ステップ１３０７０の直前に、一つ前のスナップショットが最古のスナップショットであるかを判定し、最古のスナップショットである場合、一つ前のスナップショットを更新する際に、対応するBeforeジャーナルを作成しながらAfterジャーナルを適用するようにストレージマイクロプログラム１０２８へ要求することで、最古のスナップショットが持つリカバリポイントより前のリカバリポイントを維持してもよい。ただし、この維持されたリカバリポイントについては、要求ＲＴＯを満たすことを保証しない。
【０１０６】
また、本実施例においては、単一の要求ＲＴＯのみが存在する前提となっているが、他の実施形態では、直近の１０時間以内のリカバリポイントは１０分以内にリカバリしたく、それ以前のリカバリポイントは２０分以内にリカバリしたいというように、複数の要求ＲＴＯが存在する場合がある。このような場合は、次のように拡張することで対応できる。まず、アプリケーションテーブル９０００を複数の要求ＲＴＯとそれに対応する要求ＲＴＯ適用期間を設定できるように拡張する。たとえば、要求ＲＴＯ１と要求ＲＴＯ適用期間１、要求ＲＴＯ２と要求ＲＴＯ適用期間２、…といったように、アプリケーションテーブル９０００にフィールドを追加する。そして、図１３のステップ１３０５０において、一つ前のスナップショットのリカバリポイント以降のリカバリポイントを持つ各Afterジャーナルが、前記の要求ＲＴＯ適用期間のいずれに属するかを特定する。その後、それぞれの要求ＲＴＯ適用期間における最新のリカバリポイントが前記要求ＲＴＯ適用期間に対応する要求ＲＴＯ内にリカバリできるかを判定する。この判定は、前記処理と同様に、ジャーナルヘッダ２０１１のデータ長２１０３とジャーナル適用速度５００５を用いることで可能であることは明らかである。また、ステップ１３０７０では、各要求ＲＴＯ適用期間の最大適用データ量を算出し、各要求ＲＴＯ適用期間に属するAfterジャーナルに関して、順序番号２１０５の大きい順にデータ長２１０３を加算していき、前記算出した最大適用データ量より大きくなったとき最後に加算したデータ長を持つAfterジャーナルを特定する。これらの中で、最も新しいリカバリポイントを持つAfterジャーナルまで一つ前のスナップショットへ適用するようにストレージマイクロプログラム１０２８に要求する。以上のように処理を拡張することで、複数の要求ＲＴＯが存在する場合に対応可能となる。
【０１０７】
以上、実施例１によれば、いずれの時点のデータのリカバリであっても、スナップショットへのジャーナル適用に要する時間が一定以下となるため、管理者の要求するＲＴＯを満たすことが可能になる。
【実施例２】
【０１０８】
（１）実施例２のシステム構成
第２の実施形態のシステム構成図を図１４に示した。本構成の大部分は実施例１の構成と同等であるため、以降は差分を中心に説明する。本構成では、ストレージ装置１０００のメインメモリ１２０１に、スナップショット管理情報１０３０及びスナップショット管理プログラム１０３１が記憶されている。また、本構成では、管理計算機１２００のメモリ１２５０に、スナップショット管理情報１２６４及びスナップショット管理プログラム１２６３は記憶されていない。
【０１０９】
本構成では、アプリケーションテーブル９０００のストレージＩＤ９００３は削除しても良い。また、ストレージテーブル１００００も削除してよい。これに伴い、設定プログラム１２６５が表示する図１１Ａのストレージ装置情報設定画面１１１００は、必要なくなる。
【０１１０】
（２）実施例２の動作
本実施例の動作の大部分は、実施例１の動作と同じである。以降は差分を中心に説明する。まず、図１１Ｂと図１２を用いて設定プログラム１２６５の動作を説明する。本実施例では、図１１Ｂのバックアップ対象アプリケーション情報設定画面１１２００にて、ストレージ装置の管理Ｉ／Ｆ１０２６へ接続するためのＩＰアドレスを入力するフィールドが追加される。以降、このフィールドを「ストレージＩＰアドレス」と呼ぶ。
【０１１１】
次に、図１１Ｂの実行１１２１０が押下されたときの動作の差分について、図１２を用いて説明する。ステップ１２０１０及びステップ１２０４０において、設定プログラム１２６５は、上記ストレージＩＰアドレスに入力された値を用いてストレージ装置１０００に接続し、各値を設定する。
【０１１２】
次に、スナップショット管理プログラム１０３１の動作の差分について、図１３を用いて説明する。実施例１では、ジャーナル格納情報及びスナップショット格納情報の取得要求、ストレージマイクロプログラムへの要求を、ネットワーク１４００を介して行っていたが、本実施例においては直接ストレージマイクロプログラム１０２８へ要求する。
【０１１３】
なお、本実施例では、監視周期９００５の周期毎にジャーナルの格納情報とスナップショットの格納情報を取得し、要求ＲＴＯを満たせるか監視するが、別の実施形態として、ホスト計算機１１００からの書き込みが到達し、ストレージマイクロプログラム１０２８がAfterジャーナルを作成したときに、監視しても良い。
【０１１４】
以上、実施例２によれば、実施例１と同様に、いずれの時点のデータのリカバリであっても、スナップショットへのジャーナル適用に要する時間が一定以下となるため、管理者の要求するＲＴＯを満たすことが可能になる。
【実施例３】
【０１１５】
（１）実施例３のシステム構成
第３の実施形態のシステム構成図を図１５に示した。本構成の大部分は実施例１の構成と同等であるため、以降は差分を中心に説明する。本構成では、ディスク装置１０１０に予備ボリューム１０１６が追加されている。
【０１１６】
予備ボリューム１０１６は、未使用の論理的なボリュームであり、ＳＳＶＯＬグループを構成するために用いることができるボリュームである。なお、説明の都合上、図１では、ジャーナルグループ１０１４を一つ、ジャーナルボリューム１０１３を一つとしたが、本発明ではこれらの数は問わない。
【０１１７】
図１６は、本実施例において、管理テーブル１０２９に含まれる予備ボリューム管理テーブル１６０００の一例である。予備ボリューム管理テーブル１６０００は、前記予備ボリューム１０１６を管理するテーブルである。予備ボリューム管理テーブル１６０００は、予備ボリュームＩＤ１６００１、サイズ１６００２からなる。
【０１１８】
予備ボリュームＩＤ１６００１は、予備ボリュームを識別する識別子が保持される。サイズ１６００２は、予備ボリュームＩＤ１６００１で識別されるボリュームの容量が保持される。
【０１１９】
予備ボリュームＩＤ１６００１の値は、リカバリマネージャ１１６２が提供するＣＬＩを用いて、管理者が設定するものである。たとえば、管理者は、「addSpareVol  SPARE＿VOL＿1」というコマンドを発行する。これはSPARE＿VOL＿1という識別子のボリュームを予備ボリュームとして登録するという要求になる。このSPARE＿VOL＿1が予備ボリュームＩＤ１６００１に格納される。サイズ１６００２の値は、先述した「addSpareVol  SPARE＿VOL＿1」というコマンドを発行した際に、SPARE＿VOL＿1で識別されるボリュームの容量を、リカバリマネージャ１１６２が、ストレージマイクロプログラム１０２８から取得し、設定するものである。
【０１２０】
（２）実施例３の動作
本実施例の動作の大部分は実施例１の構成と同等であるため、以降は差分を中心に説明する。本実施例では、スナップショット管理プログラム１２６３の動作のみが、実施例１と異なる。図１７を用いて、スナップショット管理プログラム１２６３の動作の一例を説明する。
【０１２１】
本動作の大部分は実施例１のスナップショット管理プログラム１２６３の動作と同じであり、ステップ１３０６０の判定の結果一つ前のスナップショットを更新する場合の動作に、ステップ１３０６３及びステップ１３０６６が追加されている。
【０１２２】
ステップ１３０６３では、一つ前のスナップショットが最古のスナップショットであるかを判定する（ステップ１３０６３）。このステップでは、一つ前のスナップショット以下の順序番号を持つスナップショットが存在するかを、スナップショットテーブル５０００を用いて確認する。存在する場合、最古のスナップショットではないと判定する。
【０１２３】
ステップ１３０６３の判定の結果、最古のスナップショットではない場合、一つ前のスナップショットを更新する（ステップ１３０７０）。このステップ以降は、実施例１の動作と同一であるため、説明を省略する。
【０１２４】
一方、ステップ１３０６３の判定の結果、最古のスナップショットである場合、一つ前のスナップショットを複製する（ステップ１３０６６）。このステップでは、まず、スナップショットボリュームテーブル６０００を参照し、一つ前のスナップショットを格納するＳＳＶＯＬグループを構成するスナップボリュームの情報を取得する。具体的には、順序６００３、サイズ６００４のリストを取得する。次に、順序番号６００３の小さい順に、サイズ６００４以上の予備ボリュームを予備ボリューム管理テーブルから一つ検索する。次に、アプリケーションテーブル９０００のホストアドレス９００２を用いてホスト計算機１１００の管理Ｉ／Ｆ１１５０に接続した後、検索された順にリカバリマネージャの提供するＣＬＩを用いて、ＳＳＶＯＬグループを作成し、予備ボリュームを追加していく。たとえば、「addSSVOL  −ssvolgid  M＿SS＿01  −volid SPARE＿VOL＿1」といったコマンドを検索された予備ボリューム数分だけ、予備ボリュームのＩＤを変更して繰り返し発行する。その後、このＳＳＶＯＬグループをジャーナルグループと関連付けるために、リカバリマネージャの提供するＣＬＩを実行する。たとえば、「addSSVOLG  −jgid  JNLG＿01  −ssvolgid  M＿SS＿01」といったコマンドを発行する。最後に、一つ前のスナップショットを新規に作成したＳＳＶＯＬグループへコピーするように、ストレージマイクロプログラム１０２８に要求する。要求されたストレージマイクロプログラム１０２８は、スナップショットボリュームのコピー、スナップショットテーブル５０００の順序番号５００３と取得時刻５００４のコピーを行う。以上のようにして、一つ前のスナップショットの複製を作成する。
【０１２５】
その後、一つ前のスナップショットを更新するためにステップ１３０７０に進む。以降の処理は、実施例１と同じであるため、説明は省略する。
【０１２６】
以上が、スナップショット管理プログラム１２６３の動作の説明である。
【０１２７】
なお、本実施例では、ステップ１３０６６において、必ずＳＳＶＯＬグループが作成できるという前提で動作するが、他の実施形態において、予備ボリュームが十分残っていないなどの理由で前記前提が満たされない場合は、ステップ１３０６６の直前に、ＳＳＶＯＬグループを作成するのに十分な予備ボリュームが残っているかを判定するステップを挿入し、この判定の結果、残っていない場合は、ステップ１３０６６をスキップするようにしてもよい。また、このとき複製を作成できなくなるため、要求ＲＴＯが満たされなくなる可能性があることをSNMPトラップなど用いて管理者に通知しても良い。
【０１２８】
以上、実施例３によれば、実施例１と同様に、いずれの時点のデータのリカバリであっても、スナップショットへのジャーナル適用に要する時間が一定以下となるため、管理者の要求するＲＴＯを満たすことが可能になる。
【実施例４】
【０１２９】
次に、ジャーナリングを用いたバックアップ及びリカバリを実施例１〜実施例３とは異なる方式で実現しているシステムについて、実施例４として示す。本実施例においては、ホスト計算機からの書き込みデータをAfterジャーナルとして保持するのではなく、ホスト計算機からの書き込みによって上書きされる箇所のデータを退避させ、このデータ(つまり実施例１〜実施例３におけるBeforeジャーナルと同等のもの)を用いてジャーナリングを用いたバックアップ及びリカバリを実現する。以下、本実施例におけるシステム構成と動作について説明する。
【０１３０】
（１）実施例４のシステム構成
実施例４のシステム構成図は、実施例３の構成と同等である。ただし、ストレージマイクロプログラム１０２８は、ホスト計算機１１００からジャーナルグループ１０１４に属するデータボリューム１０１１への書き込みが発生すると、その書き込みにより上書きされる箇所のデータを退避させ、このデータに対して当該退避処理が行われた順序に従い適切な順序番号を付与し、Beforeジャーナルとしてジャーナルグループ１０１４に関連付けられたジャーナルボリューム１０１３に格納する。
【０１３１】
また、本実施例においては、最新のスナップショット以降のリカバリポイントのデータをリカバリする場合は、データボリューム１０１１もしくは、リカバリ時点のデータボリューム１０１１のスナップショットにBeforeジャーナルを適用することとなる。
【０１３２】
（２）実施例４の動作
本実施例の動作の大部分は実施例３の動作と同じであるため、以降は差分を中心に説明する。本実施例では、スナップショット管理プログラム１２６３の動作のみが実施例３と異なる。図１８を用いて、スナップショット管理プログラム１２６３の動作を説明する。本動作のステップ１３０１０及びステップ１３０２０は、実施例３のスナップショット管理プログラム１２６３の動作と同じであるため、説明を省略する。
【０１３３】
ステップ１８０３０では、ステップ１３０２０において取得した情報を用いて、要求ＲＴＯ適用期間９００７に含まれるリカバリポイントのうち最も小さな順序番号を持つジャーナル(以降、「最古のジャーナル」と呼ぶ)のリカバリポイントのＲＴＯが要求ＲＴＯ９００６より大きいかを判定する。このステップでは、まず、スナップショットを順序番号に従いソートした時に、最古のジャーナルの順序番号よりも大きな順序番号を持つ初めてのスナップショットを特定する。以降、最古のジャーナルに限らず、あるジャーナルのリカバリポイントのＲＴＯが要求ＲＴＯより大きいかを判定するときに、前記の手順で特定するスナップショットを「一つ新しいスナップショット」と呼ぶ。次に、この一つ新しいスナップショット以下で、前記最古のジャーナル以上の順序番号を持つBeforeジャーナルを特定し、実施例３のステップ１３０３０と同様にジャーナル適用時間を算出する。そして、この算出した時間が要求ＲＴＯより大きいかを判定する。なお、一つ新しいスナップショットが存在しない場合は、前記最古のジャーナル以上の順序番号を持つ全ジャーナルを対象にジャーナル適用時間を算出する。
【０１３４】
ステップ１８０３０の判定の結果、最古のジャーナルのリカバリポイントのＲＴＯが要求ＲＴＯ以下の場合、ステップ１８０８０にジャンプする。
【０１３５】
ステップ１８０３０の判定の結果、最古のジャーナルのリカバリポイントのＲＴＯが要求ＲＴＯより大きい場合、一つ新しいスナップショットが存在するかを判定する（ステップ１８０４０）。このステップでは、ステップ１８０３０と同等の方法で一つ新しいスナップショットを検索する。
【０１３６】
ステップ１８０４０の判定の結果、一つ新しいスナップショットが存在する場合、ステップ１８０５０をスキップし、ステップ１８０６０へジャンプする。
【０１３７】
ステップ１８０４０の判定の結果、一つ新しいスナップショットが存在しない場合、新規スナップショットを取得する(ステップ１８０５０)。このステップでは、実施例３におけるステップ１３０６６と同様にＳＳＶＯＬグループを作成し、ジャーナルグループに関連付ける。その後、スナップショットを新規に取得するようにストレージマイクロプログラム１０２８に要求する。この要求を受け付けたストレージマイクロプログラム１０２８は、新規に関連付けられたＳＳＶＯＬグループにデータボリュームのスナップショットを格納し、新規に関連付けられたＳＳＶＯＬグループの順序番号５００３に順序カウンタ３００３の値をコピーする。また、ストレージマイクロシステム１０２８は、タイマ１０２４から現在時刻を取得し、新規に関連付けられたＳＳＶＯＬグループの取得時刻５００４に設定する。この新規に取得したスナップショットを一つ新しいスナップショットとする。
【０１３８】
その後、Beforeジャーナルを適用し、一つ新しいスナップショットを更新する（ステップ１８０６０）。このステップでは、まず、一つ新しいスナップショットのジャーナル適用速度５００５から、要求ＲＴＯ９００６で示される時間内に適用可能な最大適用データ量を算出する。本実施例では、ジャーナル適用速度５００５と要求ＲＴＯ９００６の積を求めることで算出する。その後、ステップ１８０３０において特定したBeforeジャーナルのジャーナルヘッダ群に関して、順序番号２１０５の小さい順にデータ長２１０３を加算していき、前記の最大適用データ量より大きくなったときに、最後に加算したデータ長を持つジャーナルヘッダを特定する。そして、そのジャーナルヘッダの順序番号２１０５までBeforeジャーナルを順序番号の大きい順に一つ前のスナップショットに適用するようにストレージマイクロプログラム１０２８に要求する。なお、一つ前のスナップショットを更新した後に、ストレージマイクロプログラム１０２８は、最後に適用したBeforeジャーナルより一つ小さな順序番号を持つBeforeジャーナルの生成時刻２１０４を最新スナップショットの取得時刻５００４に、順序番号２１０５を順序番号５００３にコピーする。
【０１３９】
次に、一つ新しいスナップショット以降のリカバリポイントのＲＴＯが要求ＲＴＯより大きいかを判定する（ステップ１８０７０）。このステップでは、まず、一つ新しいスナップショットの順序番号より一つ大きい順序番号を持つジャーナルを特定する。以降、このジャーナルを「直後のジャーナル」と呼ぶ。次に、スナップショットを順序番号に従いソートした時に、直後のジャーナルの順序番号よりも大きな順序番号を持つ初めてのスナップショットを特定する。前記したとおり、このステップ以降は、前記特定したスナップショットが一つ新しいスナップショットということになる。次に、この一つ新しいスナップショット以下で、前記直後のジャーナル以上の順序番号を持つBeforeジャーナルを特定し、実施例３のステップ１３０３０と同様にジャーナル適用時間を算出する。この算出した時間が要求ＲＴＯより大きいかを判定する。なお、一つ新しいスナップショットが存在しない場合は、前記最古のジャーナル以上の順序番号を持つ全ジャーナルを対象に、ジャーナル適用時間を算出する。
【０１４０】
ステップ１８０７０の判定の結果、直後のジャーナルのリカバリポイントのＲＴＯがＲＴＯよりも大きい場合、ステップ１８０４０にジャンプする。
【０１４１】
ステップ１８０７０の判定の結果、直後のジャーナルのリカバリポイントのＲＴＯがＲＴＯ以下の場合、ひとつ新しいスナップショットが存在するかを判定する（ステップ１８０８０）。このステップでは、ステップ１８０４０と同様の処理を行う。
【０１４２】
ステップ１８０８０の判定の結果、一つ新しいスナップショットが存在する場合は、ステップ１８０７０へジャンプし、存在しない場合は、要求ＲＴＯ適用時間内全てのリカバリポイントのＲＴＯを調整し終わったこととなるため、ステップ１３０１０にジャンプし、次の監視周期まで待機する。
【０１４３】
以上、実施例４によれば、ジャーナリングを用いたバックアップ及びリカバリを実施例１〜実施例３とは異なる方式で実現しているシステムにおいても、実施例１〜実施例３と同様に、いずれの時点のデータのリカバリであっても、スナップショットへのジャーナル適用に要する時間が一定以下となるため、管理者の要求するＲＴＯを満たすことが可能になる。
【０１４４】
以上実施例で説明したが、本発明の他の実施形態１は、前記管理計算機は、前記スナップショットの更新により、更新対象の最新スナップショットのリカバリポイント以前のリカバリポイントが管理者の要求するリカバリ時間内にリカバリできなくなっていないかを判定し、管理者の要求するリカバリ時間内にリカバリできないと判定したとき、前記管理者の要求するリカバリ時間内にリカバリできるように、最新スナップショットより古いスナップショットにジャーナルを適用して新しいスナップショットに更新するよう前記ストレージシステムに指示する計算機システムである。
【０１４５】
本発明の他の実施形態２は、前記管理計算機は、最新スナップショットより古いスナップショットに順次遡るのを、所定の数の世代のスナップショットで中止する計算機システムである。
【０１４６】
本発明の他の実施形態３は、前記管理計算機は、前記リカバリ時間を複数有し、古い世代のリカバリ時間を新しい世代のリカバリ時間と同じ又は長い時間とする計算機システムである。
【０１４７】
本発明の他の実施形態４は、前記管理計算機は、更新させるスナップショットが最古のスナップショットであるかを判定し、最古のスナップショットであると判断したとき、前記更新させるスナップショットにジャーナルを適用する際に上書きされるデータを退避させることで、前記更新させるスナップショットに依存するジャーナルが持つリカバリポイントを維持する計算機システムである。
【０１４８】
本発明の他の実施形態５は、前記管理計算機は、更新させるスナップショットが最古のスナップショットであるかを判定し、最古のスナップショットであると判定したとき、新たなスナップショット格納領域を作成し、前記更新させるスナップショットの複製を作成する計算機システムである。
【０１４９】
本発明の他の実施形態６は、前記管理計算機は、前記ストレージシステムの制御部からジャーナルの格納情報と、スナップショットの格納情報と、ジャーナルの適用速度を取得し、最新のスナップショットのリカバリポイント以降のリカバリポイントが特定の時間内にリカバリできるかを判断する計算機システムである。
【０１５０】
本発明の他の実施形態７は、前記管理計算機は、前記ホスト計算機からの書き込みによって上書きされる箇所のデータを退避させ、退避処理が行われた順序に従い適切な順序番号を付与してジャーナルとして格納させ、最新スナップショットに、退避させ格納したジャーナルを適用して新しいスナップショットに更新するよう前記ストレージシステムに指示する計算機システムである。
【０１５１】
本発明の他の実施形態８は、１または複数のホスト計算機と、該ホスト計算機が利用するデータが読み書きされるデータボリュームの特定の時点のスナップショットを取得し、前記特定時点以降の書込みをジャーナルとして保持し、リカバリ時にリカバリポイントの近傍の時点で取得されたスナップショットを基底にして、前記スナップショットに前記ジャーナルを適用することでリカバリを行うストレージシステムとで管理計算機を構成する管理計算機において、ＣＰＵと、メモリと、接続用のインタフェースとを有し、最新のスナップショットのリカバリポイント以降のリカバリポイントが特定の時間内にリカバリできるかを判断し、特定の時間内にリカバリできないと判断したとき、前記特定の時間以下の時間でリカバリできるように、最新スナップショットにジャーナルを適用して新しいスナップショットに更新するよう前記ストレージシステムに指示する管理計算機である。
【０１５２】
本発明の他の実施形態９は、前記スナップショットの更新により、更新対象の最新スナップショットのリカバリポイント以前のリカバリポイントが管理者の要求するリカバリ時間内にリカバリできなくなっていないかを判定し、管理者の要求するリカバリ時間内にリカバリできないと判定したとき、前記管理者の要求するリカバリ時間内にリカバリできるように、最新スナップショットより古いスナップショットにジャーナルを適用して新しいスナップショットに更新するよう前記ストレージシステムに指示する管理計算機である。
【０１５３】
本発明の他の実施形態１０は、最新スナップショットより古いスナップショットに順次遡るのを、所定の数の世代のスナップショットで中止する管理計算機である。
【０１５４】
本発明の他の実施形態１１は、前記リカバリ時間を複数有し、古い世代のリカバリ時間を新しい世代のリカバリ時間と同じ又は長い時間とする管理計算機である。
【０１５５】
本発明の他の実施形態１２は、更新させるスナップショットが最古のスナップショットであるかを判定し、最古のスナップショットであると判断したとき、前記更新させるスナップショットにジャーナルを適用する際に上書きされるデータを退避させることで、前記更新させるスナップショットに依存するジャーナルが持つリカバリポイントを維持する管理計算機である。
【０１５６】
本発明の他の実施形態１３は、更新させるスナップショットが最古のスナップショットであるかを判定し、最古のスナップショットであると判定したとき、新たなスナップショット格納領域を作成し、前記更新させるスナップショットの複製を作成する管理計算機である。
【０１５７】
本発明の他の実施形態１４は、前記ストレージシステムからジャーナルの格納情報と、スナップショットの格納情報と、ジャーナルの適用速度を取得し、最新のスナップショットのリカバリポイント以降のリカバリポイントが特定の時間内にリカバリできるかを判断する管理計算機である。
【０１５８】
本発明の他の実施形態１５は、ネットワークを介して接続した１または複数のホスト計算機が利用するデータが読み書きされるデータボリュームの特定の時点のスナップショットを取得し、前記特定時点以降の書込みをジャーナルとして保持し、リカバリ時にリカバリポイントの近傍の時点で取得されたスナップショットを基底にして、前記スナップショットに前記ジャーナルを適用することでリカバリを行うストレージシステムにおいて、ディスク装置と、ＣＰＵと、メインメモリと、接続用のインタフェースとを有し、最新のスナップショットのリカバリポイント以降のリカバリポイントが特定の時間内にリカバリできるかを判断し、特定の時間内にリカバリできないと判断したとき、前記特定の時間以下の時間でリカバリできるように、最新スナップショットにジャーナルを適用して新しいスナップショットに更新するストレージシステムである。
【０１５９】
本発明の他の実施形態１６は、１または複数のホスト計算機と、該ホスト計算機が利用するデータが読み書きされるデータボリュームの特定の時点のスナップショットを取得し、前記特定時点以降の書込みをジャーナルとして保持し、リカバリ時にリカバリポイントの近傍の時点で取得されたスナップショットを基底にして、前記スナップショットに前記ジャーナルを適用することでリカバリを行う制御部を有するストレージシステムと、該ストレージシステムに接続された管理計算機とを備える計算機システムにおけるバックアップ管理方法において、最新のスナップショットのリカバリポイント以降のリカバリポイントが特定の時間内にリカバリできるかを判断することと、特定の時間内にリカバリできないと判断したとき、前記特定の時間以下の時間でリカバリできるように、最新スナップショットにジャーナルを適用して新しいスナップショットに更新するよう前記ストレージシステムに指示することを有するバックアップ管理方法である。
【０１６０】
本発明の他の実施形態１７は、前記スナップショットの更新により、更新対象の最新スナップショットのリカバリポイント以前のリカバリポイントが管理者の要求するリカバリ時間内にリカバリできなくなっていないかを判定することと、管理者の要求するリカバリ時間内にリカバリできないと判定したとき、前記管理者の要求するリカバリ時間内にリカバリできるように、最新スナップショットより古いスナップショットにAfterジャーナルを適用して新しいスナップショットに更新するよう前記ストレージシステムに指示することを有するバックアップ管理方法である。
【０１６１】
本発明の他の実施形態１８は、最新スナップショットより古いスナップショットに順次遡るのを、所定の数の世代のスナップショットで中止することを有するバックアップ管理方法である。
【０１６２】
本発明の他の実施形態１９は、更新させるスナップショットが最古のスナップショットであるかを判定することと、最古のスナップショットであると判断したとき、前記更新させるスナップショットにジャーナルを適用する際に上書きされるデータを退避させることで、前記更新させるスナップショットに依存するジャーナルが持つリカバリポイントを維持することを有するバックアップ管理方法である。
【図面の簡単な説明】
【０１６３】
【図１】実施例１におけるシステム構成を示す図である。
【図２】実施例１におけるジャーナルボリュームの構成の一例を示す図である。
【図３】実施例１におけるジャーナルグループテーブルの一例を示す図である。
【図４】実施例１におけるデータボリュームテーブルの一例を示す図である。
【図５】実施例１におけるスナップショットテーブルの一例を示す図である。
【図６】実施例１におけるスナップショットボリュームテーブルの一例を示す図である。
【図７】実施例１におけるジャーナルボリュームテーブルの一例を示す図である。
【図８】実施例１におけるジャーナルグループ構成定義ファイルの一例を示す図である。
【図９】実施例１におけるアプリケーションテーブルの一例を示す図である。
【図１０】実施例１におけるストレージテーブルの一例を示す図である。
【図１１Ａ】実施例１における設定プログラムが表示するストレージ装置情報設定画面の一例を示す図である。
【図１１Ｂ】実施例１における設定プログラムが表示するバックアップ対象アプリケーション情報設定画面の一例を示す図である。
【図１２】実施例１における設定プログラムのバックアップ対象アプリケーション情報設定処理の動作を示す図である。
【図１３】実施例１におけるスナップショット管理プログラム１２６３のＲＴＯ監視処理を示す図である。
【図１４】実施例２におけるシステム構成を示す図である。
【図１５】実施例３におけるシステム構成を示す図である。
【図１６】実施例３における予備ボリュームテーブル管理テーブルの一例を示す図である。
【図１７】実施例３におけるスナップショット管理プログラム１２６３のＲＴＯ監視処理を示す図である。
【図１８】実施例４におけるスナップショット管理プログラム１２６３のＲＴＯ監視処理を示す図である。
【図１９】実施形態におけるバックアップ管理方法を具体的に説明する図である。
【符号の説明】
【０１６４】
１０００：ストレージ装置
１０１０：ディスク装置
１０２０：ディスクコントローラ
１１００：ホスト計算機
１２００：管理計算機
【図１】
0004704893.tif 000002
【図２】
0004704893.tif 000003
【図３】
0004704893.tif 000004
【図４】
0004704893.tif 000005
【図５】
0004704893.tif 000006
【図６】
0004704893.tif 000007
【図７】
0004704893.tif 000008
【図８】
0004704893.tif 000009
【図９】
0004704893.tif 000010
【図１０】
0004704893.tif 000011
【図１１Ａ】
0004704893.tif 000012
【図１１Ｂ】
0004704893.tif 000013
【図１２】
0004704893.tif 000014
【図１３】
0004704893.tif 000015
【図１４】
0004704893.tif 000016
【図１５】
0004704893.tif 000017
【図１６】
0004704893.tif 000018
【図１７】
0004704893.tif 000019
【図１８】
0004704893.tif 000020
【図１９】
0004704893.tif 000021