(57)【要約】【課題】ストレージ装置間でのデータボリューム移行後であっても、ジャーナリングを用いたリカバリをできるようにする。【解決手段】ストレージ装置間でデータボリュームを移行させた後であっても、ジャーナルを用いて、任意の時点のデータにリカバリできる計算機システムを提供するものである。計算機システムは、データボリュームの移行の前後のジャーナルの連続性を保証する、ジャーナル連続データをデータリカバリ管理手段に作成させ、ジャーナル連続データに基づいて、データのリカバリを実行する。【選択図】図１６
2007226347.tif 000002
【特許請求の範囲】
【請求項１】
一つ又は複数のホスト計算機が利用するデータを格納するデータボリュームと、当該データボリュームへの前記ホスト計算機からの書き込み情報をジャーナルとして保持するジャーナルボリュームと、を備える記憶デバイスと、
前記記憶デバイスを制御するコントローラと、を備え、
前記コントローラは、前記データボリュームのリカバリ時にリカバリポイントで取得された、前記データボリュームのデータイメージを基底にして、前記データイメージに前記ジャーナルを適用することでリカバリを行う、計算機システムにおいて、
前記コントローラは、前記データボリュームのうち、あるデータボリュームのデータを他のデータボリュームに移行させ、移行先のデータボリュームのリカバリを行なう場合、移行元のデータボリュームに割り当てられた前記ジャーナルボリュームの前記ジャーナルにアクセスして、前記移行先のデータボリュームのリカバリを行う、計算機システム。
【請求項２】
前記データイメージが、前記リカバリポイントの近傍の時点で取得された、前記データボリュームのスナップショットである、請求項１記載の計算機システム。
【請求項３】
第１のストレージ装置と、当該第１のストレージ装置に接続する第２のストレージ装置とを備え、前記第１及び第２のストレージ装置は、それぞれ前記記憶デバイスと、前記コントローラを備え、
前記移行元データボリュームは前記第１のストレージ内に構成され、前記移行先データボリュームは前記第２のストレージ装置に構成され、
前記第２のストレージ装置の前記コントローラが前記移行元データボリュームに割り当てられた前記ジャーナルボリュームにアクセスする、
請求項１記載の計算機システム。
【請求項４】
前記第２のストレージ装置は仮想ボリュームを備え、当該仮想ボリュームと前記第１のストレージ装置の前記移行元ボリュームに対して割り当てられたジャーナルボリュームとの間に形成されたパスを介して、前記第２のストレージ装置のコントローラは、前記仮想ボリュームにアクセスすることにより、前記第１のストレージ装置の前記ジャーナルボリュームのジャーナルデータを取得する請求項３記載の計算機システム。
【請求項５】
前記第２のストレージ装置のコントローラは、前記移行先データボリュームのデータイメージと、前記第１のストレージ装置の前記データ移行前のジャーナルとに基づいて、リカバリを実行する、請求項１記載の計算機システム。
【請求項６】
ホスト計算機が利用するデータが格納されるデータボリュームと、
前記データボリュームへの前記ホスト計算機からの書込み情報をジャーナルとして保持するジャーナルボリュームと、
前記データボリュームのリカバリ時にリカバリポイントにおいて取得された、前記データボリュームのデータイメージを基底にして、当該データイメージに前記ジャーナルを適用して前記リカバリを行うリカバリ制御部と、
それぞれ前記データボリュームを備える複数のストレージ装置を備え、これら複数のストレー装置の前記データボリューム間での前記データの移行を制御する、データ移行制御部と、
前記複数のストレージ装置のうち、一方のストレージ装置から他方のストレージ装置のボリュームへＩ／Ｏ要求を発行する接続制御部と、
前記複数のストレージ装置を管理情報に基づいて制御する管理計算機と、を備え、
前記管理計算機は、前記複数のストレージ装置のデータボリューム同士の間で前記データ移行を行う際、前記データ移行元のストレージ装置の前記データボリュームに関して取得されるジャーナルと、データ移行先のストレージ装置の前記データボリュームに関して取得されるジャーナルとを連続させた連続管理情報を作成する、計算機システム。
【請求項７】
前記データイメージがスナップショットである、請求項６記載の計算機システム。
【請求項８】
前記管理計算機は、前記リカバリを実行するストレージ装置を決定し、このストレージ装置が当該リカバリに必要な前記スナップショット及び／又は前記ジャーナルを有していない場合には、前記連続管理情報に基づいて、前記スナップショット及び／又は前記ジャーナルを備えている前記ストレージ装置を特定し、当該ストレージ装置にアクセスして、前記スナップショット及び／又は前記ジャーナルを取得するよう、前記リカバリを実行するストレージ装置の前記接続制御部に要求する、請求項７記載の計算機システム。
【請求項９】
前記管理計算機は、前記リカバリに必要な前記スナップショット及び／又はジャーナルを格納するストレージ装置が、リカバリを行うストレージ装置でない場合、前記リカバリを実行するストレージ装置に、前記前記スナップショット及び／又はジャーナル取得するために、他のストレージ装置にアクセスするパスを設定する、請求項８記載の計算機システム。
【請求項１０】
前記管理計算機は、前記ストレージ装置の前記ジャーナルボリュームから定期的に前記ジャーナル情報を収集し、前記連続管理情報を構成する前記ジャーナルが削除されていた場合、当該連続管理情報をメモリから削除する、請求項６記載の計算機システム。
【請求項１１】
前記管理計算機は、前記データ移行先のデータボリュームを有するストレージ装置が前記リカバリを実行するように要求し、さらに当該ストレージ装置に前記データの移行元のデータボリュームに対する前記ジャーナルを取得するように、このジャーナルを有する他のストレージ装置にアクセスするよう要求し、前記リカバリを実行するストレージ装置は、前記データ移行先のデータボリュームのスナップショットと、前記他のストレージ装置の前記ジャーナルに基づいて、前記データの移行以前のリカバリポイントでリカバリを実行する、請求項８記載の計算機システム。
【請求項１２】
ホスト計算機が利用するデータが格納されるデータボリュームと、
前記データボリュームへの前記ホスト計算機からの書込み情報をジャーナルとして保持するジャーナルボリュームと、
前記データボリュームのリカバリ時にリカバリポイントにおいて取得された、前記データボリュームのデータイメージを基底にして、当該データイメージに前記ジャーナルを適用して前記リカバリを行うリカバリ制御部と、
それぞれ前記データボリュームを備える複数のストレージ装置を備え、これら複数のストレー装置の前記データボリューム間での前記データの移行を制御する、データ移行制御部と、
前記複数のストレージ装置のうち、一方のストレージ装置から他方のストレージ装置のボリュームへＩ／Ｏ要求を発行する接続制御部と、
を備える計算システムに接続され、前記第１及び第２のストレージ装置を管理情報に基づいて制御する管理計算機であって、
前記複数のストレージ装置のデータボリューム同士の間で前記データ移行を行う際、前記データ移行元のストレージ装置の前記データボリュームに関して取得されるジャーナルと、データ移行先のストレージ装置の前記データボリュームに関して取得されるジャーナルとを連続させた連続管理情報を作成する、よう構成された管理計算機。
【請求項１３】
前記データイメージがスナップショットである、請求項１２記載の管理計算機。
【請求項１４】
前記リカバリを実行するストレージ装置を決定し、このストレージ装置が当該リカバリに必要な前記スナップショット及び／又は前記ジャーナルを有していない場合には、前記連続管理情報に基づいて、前記スナップショット及び／又は前記ジャーナルを備えている、前記ストレージ装置を特定し、当該ストレージ装置にアクセスして、前記スナップショット及び／又は前記ジャーナルを取得するよう、前記リカバリを実行するストレージ装置の前記接続制御部に要求する、請求項１３記載の管理計算機。
【請求項１５】
ホスト計算機が利用するデータが格納されるデータボリュームと、
前記データボリュームへの前記ホスト計算機からの書込み情報をジャーナルとして保持するジャーナルボリュームと、
前記データボリュームのリカバリ時にリカバリポイントにおいて取得された、前記データボリュームのデータイメージを基底にして、当該データイメージに前記ジャーナルを適用して前記リカバリを行うリカバリ制御部と、
それぞれ前記データボリュームを備える複数のストレージ装置を備え、これら複数のストレー装置の前記データボリューム間での前記データの移行を制御する、データ移行制御部と、
前記複数のストレージ装置のうち、一方のストレージ装置から他方のストレージ装置のボリュームへＩ／Ｏ要求を発行する接続制御部と、
を備える計算システムを、管理装置が管理情報を用いて制御する、データのリカバリ管理方法であって、
前記管理装置は、前記複数のストレージ装置のデータボリューム同士の間で前記データの移行を行う際、前記データの移行元のストレージ装置の前記データボリュームに関して取得されるジャーナルと、データの移行先のストレージ装置の前記データボリュームに関して取得されるジャーナルとを連続させた連続管理情報を作成し、前記連結管理情報に基づいて前記リカバリ制御に前記リカバリを実行することを要求する、データのリカバリ管理方法。
【請求項１６】
前記データイメージがスナップショットである、請求項１５記載の方法。
【請求項１７】
前記リカバリを実行するストレージ装置を決定し、このストレージ装置が当該リカバリに必要な前記スナップショット及び／又は前記ジャーナルを有していない場合には、前記連続管理情報に基づいて、前記スナップショット及び／又は前記ジャーナルを備えている、前記ストレージ装置を特定し、当該ストレージ装置にアクセスして、前記スナップショット及び／又は前記ジャーナルを取得するよう、前記リカバリを実行するストレージ装置の前記接続制御部に要求する、請求項１６記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホスト計算機がストレージ装置に接続し、さらにストレージ装置を管理する管理装置を備える計算機システム、さらに当該計算機システムの管理装置、及び前記計算機システムにおけるデータのリカバリー管理方法に関する。
【背景技術】
【０００２】
一般に、ストレージ装置を備える情報システムでは、定期的にデータボリュームのバックアップを取得することで、ストレージ装置の障害、コンピュータウィルスによるデータ破壊、ユーザによる誤操作などによってデータが喪失した場合でも、喪失したデータをリカバリできるようにしている。
【０００３】
このバックアップ及びリカバリ技術の一つとして、ジャーナリングを用いたバックアップ及びリカバリ技術が提案されている（例えば、特許文献１を参照）。この特許文献１には、一つ以上のデータボリュームで構成される論理的なグループ(以降、「ジャーナルグループ」と呼ぶ)の特定時点のスナップショット（フルバックアップ、差分バックアップなどの論理的なイメージ）を取得し、それ以降の前記データボリュームへの書き込みデータをジャーナル(「Afterジャーナル」と呼ばれる)として保持することと、取得したスナップショットに対して書き込まれた順序どおりに一連のAfterジャーナルを適用することで、特定の時点のデータをリカバリすることと、が開示されている。これは一般に「Continuous Data Protection」又は「CDP」と呼ばれる技術の一例である。
【０００４】
また、特許文献１には、上記Afterジャーナル適用によってリカバリしたデータが既に破壊されている場合に、Afterジャーナル適用を取り消す方法も提案されている。この特許文献１には、Afterジャーナル適用によって上書きされる箇所のデータを退避させておき、Afterジャーナル適用を取り消す場合、Afterジャーナル適用後のスナップショットに前記退避させたデータを元の箇所へ適用する(退避したデータを書き戻す)ことで、短時間でAfterジャーナル適用以前のスナップショットへリカバリすることが開示されている。この退避させたデータを「Beforeジャーナル」と呼ぶ。
【０００５】
特許文献２では、ホスト計算機からの書き込み時にAfterジャーナルとBeforeジャーナルを同時に取得する技術も開示されている。これにより、運用ボリュームにBeforeジャーナルを適用することで、過去のデータをリカバリすることができる。なお、以後の説明において、Afterジャーナル、Beforeジャーナル及び当該ジャーナルの管理用のメタデータを纏めて、単に「ジャーナル」と呼ぶこととする。また、リカバリ時にジャーナルの適用対象となるスナップショットを「基底スナップショット」と呼ぶこととする。
【０００６】
また、複数のストレージ装置を含む計算機システムにおいて、ストレージ装置間の負荷分散を行うためにストレージ装置間でデータボリュームを移行させる技術が提案されている（例えば、特許文献３を参照）。
【０００７】
またさらに、複数のストレージ装置を統合したシステムを構築するための外部接続技術が提案されている（たとえば、特許文献４を参照）。この特許文献４には、第１ストレージ装置を第２ストレージ装置へ接続し、第１ストレージ装置がホスト等上位に提供するボリュームを、第２ストレージ装置を介して第２ストレージ装置のボリュームとして仮想的にホストへ提供することが開示されている。
【特許文献１】米国特許公開明細書２００５／００１５４１６
【特許文献２】特開２００４−２５２６８６号公報
【特許文献３】特開２００３−３４５５２２号公報
【特許文献４】特開２００５-０１１２７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
特許文献１及び２によれば、スナップショットはデータボリュームが属するストレージ装置内で生成される。ジャーナルはホストからの書き込み要求を受け取ったストレージ装置内で、つまり、データボリュームが属するストレージ装置内で生成される。このような状況下で、特許文献３で開示されている技術を利用して、データボリュームをストレージ装置間で移行させると、スナップショット及びジャーナルが、データボリュームの移行の前後で異なるストレージ装置に分散して、格納されることになる。この状態でデータボリュームのリカバリを行うと、リカバリを実行するストレージ装置(以降、「リカバリ実行主体ストレージ装置」と呼ぶ)がリカバリに必要なスナップショットやジャーナルにアクセスできず、任意の時点でのデータイメージにリカバリできないおそれがある。
【０００９】
本発明は、この課題を解決するために、ストレージ装置間でデータボリュームを移行させた後であっても、ジャーナルを用いて、任意の時点のデータにリカバリできる計算機システムを提供するものである。
【課題を解決するための手段】
【００１０】
本発明はデータボリュームの移行の前後のジャーナルの連続性を保証する、ジャーナル連続データをデータリカバリ管理手段に作成させ、ジャーナル連続データに基づいて、計算機システムにおけるデータのバックアップ・リカバリを実行することを特徴としている。
【００１１】
さらに詳しくは、本発明は、ホスト計算機が利用するデータが格納されるデータボリュームと、前記データボリュームへの書込み情報をジャーナルとして保持するジャーナルボリュームと、前記データボリュームのリカバリ時にリカバリポイントの近傍の時点で取得された、前記データボリュームのデータイメージを基底にして、当該データイメージに前記ジャーナルを適用することでリカバリを行うリカバリ制御部と、それぞれ前記データボリュームを備える複数のストレージ装置を備え、これら複数のストレー装置の前記データボリューム間での前記データの移行を制御する、データ移行制御部と、前記複数のストレージ装置のうち、一方のストレージ装置から他方のストレージ装置のボリュームへＩ／Ｏ要求を発行する接続制御部と、前記第１及び第２のストレージ装置を管理情報に基づいて制御する管理計算機と、を備え、  前記管理計算機は、前記複数のストレージ装置のデータボリューム同士の間で前記データ移行を行う際、前記データ移行元のストレージ装置の前記データボリュームに関して取得されるジャーナルと、データ移行先のストレージ装置の前記データボリュームに関して取得されるジャーナルと、を連続させた連続管理情報を作成する、ことを特徴とする計算機システムである。
【発明の効果】
【００１２】
本発明によれば、ストレージ装置間でデータボリュームを移行させた後であっても、ジャーナルを用いて、任意の時点のデータにリカバリできる計算機システム、この計算機システムに用いられる管理計算機、及びデータのリカバリ方法を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施形態について、図面を参照しながら説明する。なお、この実施形態によって本発明が限定されるものではない。以後の説明において、リカバリ実行主体ストレージ装置以外のストレージ装置のことを外部ストレージ装置、外部ストレージ装置に格納されたジャーナルのことを外部ジャーナル、外部ストレージ装置に格納されたスナップショットのことを外部スナップショット、外部ジャーナルを格納するボリュームを外部ジャーナルボリューム、外部スナップショットを格納するボリュームを外部スナップショットボリュームと呼ぶ。
【００１４】
さらに、特定時点のデータをリカバリする際に管理者が指定する時点のことを「リカバリポイント」と呼ぶ。また、スナップショットに一連のジャーナルを適用して、指定されたリカバリポイントのデータをリカバリするときに、最後に適用するジャーナルと前記指定されたリカバリポイントの関係を、「(前記)ジャーナルが(前記)リカバリポイントを持つ」と言う。スナップショットにジャーナルを適用せずにリカバリできる場合は、前記スナップショットと指定されたリカバリポイントの関係を、「(前記)スナップショットが(前記)リカバリポイントを持つ」という。
実施形態１
（１）システム構成
図１は、計算機システムの構成を示すブロック図である。ストレージ装置１０００とホスト計算機１１００はデータネットワーク１３００を介して互いに接続されている。データネットワーク１３００はストレージエリアネットワークであるがIPネットワークであっても、あるいはこれら以外のデータ通信用ネットワークであってもよい。
【００１５】
ストレージ装置１０００とホスト計算機１１００と管理計算機１２００は管理ネットワーク１４００を介して互いに接続される。管理ネットワーク１４００はIPネットワークであるが、ストレージエリアネットワークであっても、あるいはこれら以外のデータ通信用ネットワークであってもよい。データネットワーク１３００と管理ネットワーク１４００が同一ネットワークであってもよいし、ホスト計算機１１００と管理計算機１２００が同一の計算機であってもかまわない。図１のシステムは、ストレージ装置１０００を２台、ホスト計算機１１００を１台、管理計算機１２００を１台備えているが、台数は限定されない。
【００１６】
ストレージ装置１０００は、データを格納するディスク装置１０１０、ストレージ装置の制御を実行する、ディスクコントローラ１０２０を備えている。ディスク装置１０１０は、ジャーナルグループ１０１４、スナップショットボリューム（SSVOL）のグループ１０１５、ジャーナルボリューム１０１３とを備えている。
【００１７】
ジャーナルグループ１０１４は一つ以上のデータボリューム１０１１により構成される。データボリューム１０１１は、ホスト計算機１１００が利用するデータを格納する論理ボリュームである。ジャーナルグループ１０１４には一つ以上のジャーナルボリューム１０１３及び一つ以上のSSVOLグループ１０１５が関連付けられる。ジャーナルボリュームは、ジャーナルを格納する論理ボリュームである。SSVOLグループ１０１５については後述する。
【００１８】
データボリューム１０１１へのホスト計算機１１００からの書き込み要求は、後述するストレージマイクロプログラム１０２８に従って動作するＣＰＵ１０２３により処理され、前記データボリューム１０１１に反映される。このとき、ＣＰＵ１０２３は、書き込むデータをAfterジャーナル、上書きされる箇所のデータをBeforeジャーナルとし、送信されてきた順序に従って順序番号を割り振るなど、適切な管理用メタデータを付与してジャーナルを作成する。そして、ＣＰＵ１０２３は当該ジャーナルを、データボリューム１０１１が属するジャーナルグループ１０１４に関連付けられたジャーナルボリューム１０１３に格納する。前記メタデータや順序番号については、後にジャーナルの構成と併せて説明する。なお、新規ジャーナルの格納領域が不足した場合、前記ＣＰＵ１０２３は最古のジャーナルをジャーナルボリューム１０１３から削除して空き領域を作成した後に、ジャーナルを格納する。また、別の実施形態として、ホスト計算機１１００からの書き込み要求の処理の際は、ＣＰＵ１０２３はAfterジャーナルとBeforeジャーナルのどちらか一方のみを持つジャーナルを作成する構成にしてもよい。
【００１９】
SSVOLグループ１０１５は一つ以上のスナップショットボリューム１０１２で構成される。スナップショットボリューム１０１２は、ある時点におけるデータボリューム１０１１の複製イメージ(スナップショット)を格納する論理ボリュームである。なお、スナップショットボリューム１０１２に格納されるスナップショットは、システムに対する要求や実装等に応じて、データボリューム１０１１のフルバックアップであっても、差分バックアップのような論理的なイメージであっても良い。
【００２０】
なお、説明の都合上、図１では、ジャーナルグループ１０１４を一つとしたが、これ以上設置してもかまわない。
【００２１】
ディスクコントローラ１０２０は、管理Ｉ／Ｆ１０２１、データＩ／Ｆ１０２２、ディスクＩ／Ｆ１０２５、メインメモリ１０２６、ＣＰＵ１０２３、タイマ１０２４を備えている。
【００２２】
メインメモリ１０２６には、管理テーブル１０２９、ストレージマイクロプログラム１０２８が記憶されている。ＣＰＵ１０２３はメインメモリ１０２６に記憶されたプログラムを実行する。
【００２３】
ストレージマイクロプログラム１０２８は、スナップショットの取得、ジャーナルの生成、ジャーナルを用いたリカバリ、ジャーナルの開放など従来技術で述べたジャーナリングを用いたバックアップ及びリカバリの各種機能をＣＰＵ１０２３に実行させるものである。なお、ジャーナルを用いたリカバリの際、ストレージマイクロプログラム１０２８に従って動作するＣＰＵ１０２３は、必要に応じて外部ストレージ装置のボリュームからジャーナルやスナップショットを読み込み、リカバリを行う。
【００２４】
さらに、ストレージマイクロプログラム１０２８は、他ストレージ装置へデータをコピーする機能、外部接続を行う機能、管理計算機１２００やホスト計算機１１００からの要求に応じディスク装置１０１０に対するデータの入出力を処理する機能、ストレージ装置内の制御情報の設定や提供などを行う機能をＣＰＵ１０２３に制御させる。前記ＣＰＵ１０２３は、ストレージマイクロプログラム１０２８に従い、管理テーブル１０２９の情報を参照または更新しながらこれらの機能を制御する。管理テーブル１０２９の構成については後述する。
【００２５】
タイマ１０２４は、現在時刻を提供する機能を持つ一般的なタイマである。ジャーナル作成時やスナップショット取得時に、ストレージマイクロプログラム１０２８に従い動作するＣＰＵ１０２３によって参照される。
【００２６】
データＩ／Ｆ１０２２は、データネットワーク１３００に対するインタフェースであって、一つ以上の通信用ポートを持つ。ディスクコントローラ１０２０はこのポートを介してホスト計算機１１００、他のストレージ装置１０００とデータや制御命令の送受信を行う。管理Ｉ／Ｆ１０２１は、管理ネットワーク１４００とのインタフェースであって、ホスト計算機１１００、管理計算機１２００とデータや制御命令の送受信を行う。ディスクＩ／Ｆ１０２５は、ディスク装置１０１０に対するインタフェースであってデータや制御命令の送受信を行う。
【００２７】
ホスト計算機１１００は、キーボードやマウスなどの入力装置１１４０、ＣＰＵ１１３０、ＣＲＴなどの表示装置１１２０、メモリ１１６０、データＩ／Ｆ１１１０、管理Ｉ／Ｆ１１５０からなる。
【００２８】
データＩ／Ｆ１１１０はデータネットワーク１３００に対するインタフェースであって、一つ以上の通信ポートを持つ。このポートを介してホスト計算機１１００は、ストレージ装置１０００とデータや制御命令の送受信を行う。管理Ｉ／Ｆ１１５０は管理ネットワーク１４００に対するインタフェースであって、システム管理のために計算機１２００及びストレージ装置１０００とデータや制御命令の送受信を行う。メモリ１１６０には、アプリケーション１１６５、リカバリマネージャ１１６４、パス管理プログラム１１６２が記憶されている。
【００２９】
パス管理プログラム１１６２に従って動作するＣＰＵ１１３０は、ホスト計算機１１００からデータボリューム１０１１へアクセスするためのパス(たとえば、ＷＷＮなどのストレージ装置のデータＩ／Ｆ１０２２のポートの識別子、ＳＣＳＩ(Small Computer System Interface)のターゲットＩＤ及びＬＵＮ(Logical Unit Number))を管理し、管理者や他のプログラムの要求に応じて当該パスを切り替える。アプリケーション１１６５は、データボリューム１０１１を利用するＤＢＭＳやファイルシステムといったアプリケーションである。
【００３０】
リカバリマネージャ１１６４に従って動作するＣＰＵ１１３０は、ストレージ装置１０００に対するスナップショット取得の要求や特定時点のデータのリカバリ要求、アプリケーション１１６５の静止化を行う。リカバリマネージャ１１６４は、管理者や他のプログラムがこれらの機能を実行できるように、インタフェースとしてコマンドラインインタフェース(以降、「ＣＬＩ」と呼ぶ)などを提供する。なお、説明の都合上、図１では、アプリケーション１１６３を一つとしたが、二つ以上でも良い。
【００３１】
管理計算機１２００は、キーボードやマウスなどの入力装置１２４０、ＣＰＵ１２３０、ＣＲＴなどの表示装置１２２０、メモリ１２５０、管理Ｉ／Ｆ１２１０、タイマ１２６０からなる。管理Ｉ／Ｆ１２１０は、システム管理のためにホスト計算機１２００及びストレージ装置１０００とデータや制御命令を送受信する。
【００３２】
メモリ１２５０には、設定プログラム１２５４、ＣＤＰ管理情報１２５３、ＣＤＰ管理プログラム１２５２、ボリューム移行管理プログラム１２５１、ジャーナル連結情報管理プログラム１２５５が記憶されている。ＣＰＵ１２３０はメモリ１２５０に記憶された各種プログラムを実行することで各機能を実現する。
【００３３】
設定プログラム１２５４はＣＰＵ１２３０に、ＣＤＰ管理情報１２５３もしくは管理テーブル１０２９の値を設定させるためのプログラムである。なお、管理テーブル１０２９の値を設定する場合、ＣＰＵ１２３０はストレージマイクロプログラム１０２９に従って動作するＣＰＵ１０２３と通信を行い、設定を要求する。ＣＤＰ管理情報１２５３については後述する。
【００３４】
ボリューム移行管理プログラム１２５１はＣＰＵ１２３０に、データボリュームの移行を管理させるためのプログラムである。データボリューム移行の際、前記ＣＰＵ１２３０は、ボリューム移行管理プログラム１２５１に従い、移行元ストレージ装置から移行元データボリュームに関する最新ジャーナル（以降、「連結元ジャーナル」と呼ぶ）の情報、移行先ストレージ装置から移行先データボリュームに関する最新ジャーナル（以降、「連結先ジャーナル」と呼ぶ）の情報を収集させ、ストレージ装置間でジャーナルの連続性を保証する情報(以降、「ジャーナル連結情報」と呼ぶ)を作成する。例えば、ＣＰＵ１２３０はストレージ装置１０００のデータボリューム１０１１を、デーアネットワーク１３００を介して、移行させる。
【００３５】
ジャーナル連結情報管理プログラム１２５５は、ＣＰＵ１２３０にジャーナル連結情報を管理させるためのプログラムである。前記ＣＰＵ１２３０は、ジャーナル連結情報管理プログラム１２５５に従い、各ストレージ装置が格納するジャーナルの情報を定期的に収集し、各ジャーナル連結情報に関して、連結元ジャーナルもしくは連結先ジャーナルがストレージ装置から削除されていた場合、当該ジャーナル連結情報をＣＤＰ管理情報１２５３から削除する。
【００３６】
ＣＤＰ管理プログラム１２５２はＣＰＵ１２３０に、ジャーナルを用いたリカバリを制御させるためのプログラムである。前記ＣＰＵ１２３０は、ＣＤＰ管理プログラム１２５２に従い、ジャーナル連結情報を用いてリカバリに必要なスナップショット及びジャーナルの格納論理ボリュームを特定し、必要であれば外部ジャーナルボリュームもしくは外部スナップショットボリュームを外部接続するように、リカバリ実行主体ストレージ装置に要求する。その後、ＣＰＵ１２３０は、前記リカバリ実行主体ストレージ装置に、リカバリに必要なジャーナル及びスナップショットに関する情報を送信し、リカバリを要求する。なお、上記４つのプログラムは、管理者や他のプログラムがこのプログラムを実行できるように、インタフェースとしてＣＬＩなどを提供する。タイマ１２６０は、現在時刻を提供する機能を持つ一般的なタイマである。ジャーナル連結情報作成時に、ボリューム移行管理プログラム１２５１に従い動作するＣＰＵ１２３０によって参照される。
【００３７】
図２から図９は管理テーブル１０２９を構成するテーブル群である。図２は、管理テーブル１０２９を構成する論理ボリューム管理テーブル２０００の一例である。当該テーブルは、論理ボリュームの管理情報を格納する。論理ボリュームＩＤ２００１は、管理対象となる論理ボリュームの識別子を格納する。たとえば、ボリュームのデバイス番号などである。対応ボリュームＩＤ２００２は、管理対象論理ボリュームがマッピングされている物理ボリュームもしくは仮想ボリュームの識別子を格納する。
【００３８】
上記２つの値を設定するために、設定プログラム１２５４はＣＬＩを提供する。たとえば、このＣＬＩを用いて管理者は「createVol-stid RAID600_503-pe_volid P_VOL_01」といったコマンドを発行できる。これは、ストレージ装置RAID600_503に対する「物理ボリュームP_VOL_01から論理ボリュームを生成せよ」という命令になる。このP_VOL_01が対応ボリュームＩＤ２００２に格納される。論理ボリュームＩＤ２００１には、ＣＰＵ１０２３が、ストレージマイクロプログラム１０２８に従い、ストレージ装置内で一意に識別可能な識別子を割り振る。仮想ボリュームから論理ボリュームを作成する場合は、P_VOL_01を仮想ボリュームの識別子に置き換えて命令を発行すればよい。
【００３９】
なお、この設定を行うために、設定プログラム１２５４に従い動作するＣＰＵ１２３０は、ストレージマイクロプログラム１０２８に従い動作するＣＰＵ１０２３と通信を行う。この通信は、前記ＣＰＵ１２３０が後述するストレージテーブル１２０００からRAID600_503で識別されるストレージ装置の管理Ｉ／Ｆ１０２１のＩＰアドレスを取得し、そのＩＰアドレスに対して接続要求を行うことで確立される。以下、前記ＣＰＵ１２３０が各種プログラムを実行する上で、ストレージマイクロプログラム１０２８に従い動作するＣＰＵ１０２３と通信を行う場合は、上記と同様に通信を確立してから行うものとし、説明を省略する。
【００４０】
図３は、管理テーブル１０２９を構成するパス管理テーブル３０００の一例である。当該テーブルは、論理ボリュームへアクセスするためのパス情報を管理する。論理ボリュームＩＤ３００１は、論理ボリュームの識別子である論理ボリュームＩＤ２００１の値を格納する。パス３００２は、論理ボリュームにアクセスするためのパス情報を格納する。これらの値を設定するために、設定プログラム１２５４はＣＬＩを提供する。例えば、管理者は「addPath -stid RAID600_503 -volid VOL_01 -path P1_T1_L1」のようなコマンドを発行できる。これは、ストレージ装置RAID600_503に対する「論理ボリュームVOL_01に対し、ポートＩＤが１、ターゲットＩＤが１、ＬＵＮが１というパスを設定せよ」という命令となる。このVOL_01が論理ボリュームＩＤ３００１に格納され、P1_T1_L1がパス３００２に格納される。「P1_T1_L1」は、ホスト計算機から論理ボリュームへの論理的なアクセスルートを定める、パス情報である。P1は、ポートを識別するための情報(ポート番号)である。ポート番号は、論理ボリュームに対応付けられたＬＵに対して、ホスト計算機がストレージ装置にある複数のポートのうちどのポートからアクセス可能かを示す情報である。ファイルチャネルスイッチのポート番号も併せて管理テーブルに設定されても良い。Ｔ1はターゲットＩＤであり、Ｌ１は論理ボリュームの識別子である、ＬＵＮ(ロジカル  ユニット  ナンバー)である。ターゲットはストレージ装置であり、Ｔ1によってストレージ装置が識別される。ストレージ装置に複数のＬＵが括りつけられており、Ｌ１はこのＬＵに対する識別子である。このパス情報によって一意に識別される論理ボリュームに対してホスト計算機やストレージがＩ／Ｏアクセスをする。
【００４１】
図４は、管理テーブル１０２９を構成する仮想ボリューム管理テーブル４０００の一例である。当該テーブルは、外部接続機能の管理情報を格納する。仮想ボリュームＩＤ４００１は、管理対象となる仮想ボリュームの識別子を格納する。イニシエータポート４００２は、他ストレージ装置の論理ボリューム(以降、「外部ボリューム」と呼ぶ)へアクセスするために経由する自ストレージ装置のデータＩ／Ｆ１０２２のポート識別子を格納する。外部ストレージ装置ＩＤ４００３は、外部ボリュームを格納するストレージ装置の識別子を格納する。たとえば、ストレージ装置のモデル名とシリアル番号の組み合わせなどであり、後述するストレージテーブル１２０００のストレージＩＤ１２００１の値が格納される。外部ボリュームパス４００４は、外部ボリュームへアクセスするためのパス情報となるパス３００２の値を格納する。論理ボリュームＩＤ４００５は、外部ストレージ装置において当該外部ボリュームの識別子となる論理ボリュームＩＤ２００１の値を格納する。これらの情報を設定するために、設定プログラム１２５４はＣＬＩを提供する。
【００４２】
例えば、管理者は「addVVol -stid RAID600_503 -estid RAID600_504 -path P1_T1_L1 -vol_id VOL_01」というコマンドを発行できる。これは、ストレージ装置RAID600_503に対する「ストレージ装置RAID600_504の論理ボリュームVOL_01をポートＩＤが１、ターゲットＩＤが１、ＬＵＮが１というパスで外部接続せよ」という命令となる。このRAID600_504が外部ストレージ装置ＩＤ４００３に格納され、P1_T1_L1が外部ボリュームパス４００４に格納され、VOL_01が論理ボリュームＩＤ４００５に格納される。また、仮想ボリュームＩＤ４００１には、ＣＰＵ１０２３が、ストレージマイクロプログラム１０２８に従い、当該仮想ボリュームを一意に識別可能な識別子を割り振る。
【００４３】
さらに、イニシエータポート４００２には、上記パスで外部ボリュームにアクセス可能なポートを前記ＣＰＵ１０２３が自動検索し、その識別子を設定する。ストレージ装置に外部接続された外部ストレージ装置は、外部ストレージ装置の仮想ボリュームを介して、この仮想ボリュームにマッピングされた、接続先のストレージ装置のボリュームにアクセスすることができる。即ち、外部ストレージ装置は、接続対象のストレージ装置のスナップショットボリューム、データボリューム、及びジャーナルボリュームにアクセスし、ジャーナル連結情報と外部ストレージ装置のスナップショットに基づいて外部ストレージのデータボリュームを任意の時点、即ち接続対象のストレージ装置から外部ストレージ装置へのデータボリュームのマイグレーション以前のデータボリュームの状態にリカバリすることができる。
【００４４】
図５は、管理テーブル１０２９を構成するジャーナルグループテーブル５０００の一例である。当該テーブルは、ジャーナルグループの管理情報を格納する。ＪＮＬグループＩＤ５００１は、管理対象となるジャーナルグループの識別子を格納する。この値を設定するために、設定プログラム１２５４はＣＬＩを提供する。例えば、管理者は「CreateJG -stid RAID600_503 -jgid JNLG_01」のようなコマンドを発行できる。これは、ストレージ装置RAID600_503に対する「ジャーナルグループJNLG_01を作成せよ」という命令になる。このJNLG_01という値がＪＮＬグループＩＤ５００１に格納される。
【００４５】
順序カウンタ５００３は、ジャーナル作成及びスナップショット取得の順序を管理するための番号を格納する。本値は、ホスト計算機１１００からの書込み要求に対してジャーナルを生成するたびに、ストレージマイクロプログラム１０２８に従って動作するＣＰＵ１０２３によって１だけ加算され、加算後の値が後述するジャーナルの順序番号１０００５にコピーされる。また、当該番号は、スナップショットを取得するたびに、前記ＣＰＵ１０２３によって、後述するスナップショットグループテーブル８０００の順序番号８００３にコピーされる。
【００４６】
この処理により、各ジャーナル作成タイミングとスナップショット取得タイミングの順序関係が記録される。リカバリの際は、ストレージマイクロプログラム１０２８に従って動作するＣＰＵ１０２３は、この順序関係を用いて基底スナップショットに適用すべきジャーナルとその適用順序を特定する。具体的には、特定のスナップショットにAfterジャーナルを適用してリカバリを行う場合、前記ＣＰＵ１０２３は、当該スナップショットより大きく且つ指定されたリカバリポイントを持つジャーナル以下の順序番号を持つジャーナルを、順序番号に従って適用する。逆に、特定のスナップショットにBeforeジャーナルを適用する場合、前記ＣＰＵ１０２３は、当該スナップショット以下且つ指定されたリカバリポイントを持つジャーナルより大きな順序番号を持つジャーナルを、順序番号の大きい順に適用する。
【００４７】
最新ジャーナル格納ＶＯＬＩＤ５００４は、最新ジャーナルが格納されているジャーナルボリューム１０１３の識別子である論理ボリュームＩＤ２００１の値を格納する。最新ジャーナル格納アドレス５００５は、当該ジャーナルボリューム内で当該最新ジャーナルが格納されたアドレスを格納する。
【００４８】
最古ジャーナル格納ＶＯＬＩＤ５００６は、当該最古ジャーナルが格納されているジャーナルボリューム１０１３の識別子である論理ボリュームＩＤ２００１の値を格納する。最古ジャーナル格納アドレス５００７は、当該ジャーナルボリューム内で当該最古ジャーナルが格納されたアドレスを格納する。
【００４９】
最新ジャーナル格納ＶＯＬＩＤ５００４、最新ジャーナル格納アドレス５００５、最古ＪＮＬ格納ＶＯＬＩＤ５００６、最古ＪＮＬ格納アドレス５００７は、新規ジャーナルの格納先ボリューム及びアドレスの特定、削除するジャーナルの特定のために、ストレージマイクロプログラム１０２８に従って動作するＣＰＵ１０２３によって参照及び更新される。
【００５０】
管理筺体ＩＤ５００８は、管理対象ジャーナルグループが所属するストレージ装置の識別子となるストレージＩＤ１２００１の値を格納する。ただし、通常運用時には、この値には「Null」が設定されている。ＣＰＵ１２３０が、ＣＤＰ管理プログラム１２５２に従い、リカバリのために当該テーブルの情報を取得したときに、取得元のストレージ装置の識別子を本値に設定する。
【００５１】
図６は、管理テーブル１０２９を構成するデータボリュームテーブル６０００の一例である。当該テーブルは、ジャーナルグループの構成情報を管理する。ＪＮＬグループＩＤ６００１は、管理対象ジャーナルグループの識別子であるＪＮＬグループＩＤ５００１の値を格納する。データボリュームＩＤ６００２は、当該ジャーナルグループに属するデータボリュームの識別子である論理ボリュームＩＤ２００１の値を格納する。
【００５２】
これらの値を設定するために、設定プログラム１２５４はＣＬＩを提供する。例えば、管理者は「addDataVOL -stid RAID600_503 -jgid JNLG_1 -datavolid VOL_01」というコマンドを発行できる。これは、ストレージ装置RAID600_503に対する「ジャーナルグループJNLG_1にデータボリュームVOL_01を追加せよ」という命令になる。このJNLG_1がJNLグループID６００１に格納され、VOL_01がデータボリュームＩＤ６００２に格納される。なお、単一のジャーナルグループに複数のデータボリュームを設定する場合は、上記のコマンドを複数回実行する。管理筺体ＩＤ６００４に関しては、管理筺体ＩＤ５００８と同様である。
【００５３】
図７は、管理テーブル１０２９を構成するスナップショットボリュームテーブル７０００の一例である。当該テーブルは、SSVOLグループの構成を管理する。SSVOLグループＩＤ７００１は、管理対象SSVOLグループの識別子を格納する。スナップショットボリュームＩＤ７００２は、管理対象SSVOLグループに属するスナップショットボリューム１０１２の識別子となる論理ボリュームＩＤ２００１の値を格納する。対応データボリュームＩＤ７００３は、スナップショット取得対象のデータボリュームの識別子となるデータボリュームＩＤ６００２の値を格納する。
【００５４】
これらの値を設定するために、設定プログラム１２５４はＣＬＩを提供する。例えば、管理者は「addSSVOL -stid RAID600_503 -ssvolgid SS_01 -volid SVOL_01 -target VOL_01」というコマンドを発行する。これは、ストレージ装置RAID600_503に対する「SSVOLグループSS_01に、データボリュームVOL_01のスナップショットを格納するためのスナップショットボリュームSVOL_01を追加せよ」という命令になる。このSS_01がSVOLグループＩＤ７００１に格納され、SVOL_01がスナップショットボリュームＩＤ７００２に格納され、VOL_01が対応データボリュームID７００３に格納される。管理筺体ＩＤ７００４に関しては、管理筺体ＩＤ５００８と同様である。
【００５５】
図８は、管理テーブル１０２９を構成するスナップショットグループテーブル８０００の一例である。当該テーブルはジャーナルグループとそのスナップショットグループを格納するSSVOLグループの関係を管理する。ＪＮＬグループＩＤ８００１は、管理対象ジャーナルグループの識別子となるＪＮＬグループＩＤ５００１の値を格納する。SSVOLグループＩＤ８００２は、管理対象SSVOLグループの識別子となるSSVOLグループＩＤ７００１の値を格納する。これらの値を設定するために設定プログラム１２５４はＣＬＩを提供する。例えば、管理者は「addSSVOLG -stid RAID600_503 -jgid JNLG_01 -ssvolgid SS_01」のようなコマンドを発行する。これは、ストレージ装置RAID600_503に対する「ジャーナルグループJNLG_01のスナップショットグループをＳＳＶＯＬグループSS_01に格納せよ」という命令になる。このJNLG_01がＪＮＬグループＩＤ８００１に格納され、SS_01の値がＳＳＶＯＬグループＩＤ８００２に格納される。なお、複数世代のスナップショットグループを保持するために、複数のＳＳＶＯＬグループを関連付ける場合は、上記コマンドを複数回実行する。
【００５６】
順序番号８００３は、管理対象SSVOLグループに格納されたスナップショットグループ取得タイミングとジャーナル作成タイミングとの順序関係を示す番号を格納する。ストレージマイクロプログラム１０２８に従って動作するＣＰＵ１０２３が、スナップショットグループを取得するたびに、順序カウンタ５００３の値を順序番号８００３に設定する。
【００５７】
取得時刻８００４は、スナップショット取得要求がストレージ装置１０００に到着した時刻を保持する。ストレージマイクロプログラム１０２８に従って動作するＣＰＵ１０２３が、ディスクコントローラ１０２０のタイマ１０２４から現在時刻を取得し、取得時刻８００４に設定する。なお、別の実施形態として、生成時刻８００４には、スナップショット取得要求内に含まれる書込み発行時刻としても良い。たとえば、メインフレーム環境では、複数のメインフレームホストがタイマを共有しており、書き込み要求を発行する時刻を提供することができるため、これを利用することも可能である。管理筺体ＩＤ８００５に関しては、管理筺体ＩＤ５００８と同様である。
【００５８】
基底SSフラグ８００６は、リカバリ時に基底スナップショットとなるか否かを示す情報を格納する。具体的には、基底スナップショットとなる場合は「TRUE」が設定され、それ以外の場合は「FALSE」が設定される。本値は、通常運用時は「FALSE」が設定されている。ＣＰＵ１２３０が、ＣＤＰ管理プログラム１２５２に従い、リカバリのために基底スナップショットを特定した際に、そのスナップショットが属するSSVOLグループに関して本値に「TRUE」を設定する。
【００５９】
図９は、管理テーブル１０２９を構成するジャーナルボリュームテーブル９０００の一例である。当該テーブルは、ジャーナルグループで利用されるジャーナルボリュームを管理する。ＪＮＬグループＩＤ９００１は、ジャーナルグループの識別子となるＪＮＬグループＩＤ５００１の値を格納する。ＪＮＬボリュームＩＤ９００２は、ＪＮＬグループによって利用されるジャーナルボリュームの識別子となる論理ボリュームＩＤ２００１の値を格納する。
【００６０】
これらの値を設定するために設定プログラム１２５４はＣＬＩを提供する。例えば、管理者は「addJVOL -stid RAID600_503 -jgid JNLG_01 -jvolid J-VOL_01」のようなコマンドを発行できる。これは、ストレージ装置RAID600_503に対する「ジャーナルグループJNLG_01にジャーナルボリュームJ-VOL_01を利用させる」という命令になる。このJNLG_01がＪＮＬグループＩＤ９００１に格納され、J-VOL_01がＪＮＬボリュームＩＤ９００２に格納される。複数のジャーナルボリュームを単一のジャーナルグループに関連付ける場合は、上記のコマンドを複数回実行する。管理筺体ＩＤ９００５に関しては、管理筺体ＩＤ５００８と同様である。
【００６１】
図１０は、本実施の形態におけるジャーナルの構成の一例を示した図である。データボリュームＩＤ１０００１はジャーナル適用先となるデータボリューム１０１１の識別子となる論理ボリュームＩＤ２００１の値を格納する。適用先アドレス１０００２は当該適用先データボリューム１０１１内での適用先アドレスを格納する。データ長１０００３は適用するデータの長さ、すなわちAfterジャーナル１０００６及びBeforeジャーナル１０００７の長さを保持する。これらの値は、ストレージマイクロプログラム１０２８に従って動作するＣＰＵ１０２３がジャーナルを作成する際に、ホスト計算機１１００の書込み要求に応じて設定する値である。
【００６２】
生成時刻１０００４は、ホスト計算機１１００の書き込み要求がストレージ装置１０００に到着した時刻を保持する。生成時刻１０００４の値は、ストレージマイクロプログラム１０２８に従って動作するＣＰＵ１０２３が、ディスクコントローラ１０２０のタイマ１０２４から取得し、設定するものである。なお、別の実施形態として、生成時刻１０００４は書込み要求内に含まれる書込み発行時刻としても良い。
【００６３】
順序番号１０００５は、前述した順序番号８００３と同等の値を格納する。ストレージマイクロプログラム１０２８に従って動作するＣＰＵ１０２３が、ジャーナルを作成する時に、順序カウンタ５００３の値に１だけ加算した値を本値に設定する。Afterジャーナル１０００６はAfterジャーナルのデータを格納する。Beforeジャーナル１０００７はBeforeジャーナルのデータを格納する。
【００６４】
次ジャーナルボリュームＩＤ１０００８と次ジャーナルアドレス１０００９には、当該ジャーナルの次に作成されるジャーナル(以降、「次ジャーナル」と呼ぶ)の格納場所を識別する情報が格納されている。次ジャーナルボリュームＩＤ１０００８は、次ジャーナルを格納するジャーナルボリューム１０１３の識別子となる論理ボリュームＩＤ２００１の値を格納する。次ジャーナルアドレス１０００９は、当該論理ボリューム内における次ジャーナルが格納されているアドレスを保持する。この値は、ストレージマイクロプログラム１０２８に従い動作するＣＰＵ１０２３が次ジャーナルの格納場所をジャーナルボリューム内の適切な空き領域から決定し、設定する。
【００６５】
前ジャーナルボリュームＩＤ１００１０と前ジャーナルアドレス１００１１には、当該ジャーナルの一つ前に作成されたジャーナル(以降、「前ジャーナル」と呼ぶ)の格納場所を識別する情報が格納される。前ジャーナルボリュームＩＤ１００１０は、前ジャーナルを格納するジャーナルボリューム１０１３の識別子となる論理ボリュームＩＤ２００１の値を格納する。前ジャーナルアドレス１００１１は、当該論理ボリューム内における前ジャーナルが格納されているアドレスを格納する。ストレージマイクロプログラム１０２８に従い動作するＣＰＵ１０２３が、ジャーナルを作成する際に、最新ジャーナル格納VOLID５００４と最新ジャーナル格納アドレス５００５の値を、前ジャーナルボリュームＩＤ１００１０と前ジャーナルアドレス１００１１の値にコピーする。その後、前記ＣＰＵ１０２３は最新ジャーナル格納VOLID５００４、最新ジャーナル格納アドレス５００５に、当該作成したジャーナルの格納場所を設定する。
【００６６】
図１１から図１２はＣＤＰ管理情報１２５３を構成するテーブル群である。図１１はＣＤＰ管理情報１２５３を構成するストレージテーブル１２０００の一例である。当該テーブルは、ストレージ装置の情報を管理する。ストレージＩＤ１２００１はストレージ装置の識別子を格納する。具体的には、ストレージ装置のモデル名とシリアル番号などである。ＩＰアドレス１２００２には、当該ストレージ装置の管理Ｉ／Ｆ１０１２のＩＰアドレスなどのネットワークのアドレスが格納される。これらの値は、設定プログラム１２５４が提供するＣＬＩを用いて、管理者が設定する。例えば、管理者は「addStorage -stid RAID600_503 -ip 192.168.1.1」のようなコマンドを発行する。これは「ＩＰアドレスが192.168.1.1であるストレージ装置RAID600_503を管理せよ」という命令になる。このRAID600_503がストレージＩＤ１２００１に格納され、192,168.1.1がＩＰアドレス１２００２に格納される。
【００６７】
図１２はＣＤＰ管理情報１２５３を構成するジャーナル連結情報テーブル１３０００の一例である。当該テーブルは、複数のストレージ装置に分散して格納されている、特定のデータボリュームに関するジャーナルの連続性を保証するジャーナル連結情報を管理する。本テーブルの情報は、データボリューム移行時に、ボリューム移行管理プログラム１２５１に従って動作するＣＰＵ１２３０により設定される。ＩＤ１３０１２はジャーナル連結情報の識別子を格納する。
【００６８】
移行元筺体１３００１は、移行元ストレージ装置の識別子となるストレージＩＤ１２００１の値を格納する。移行元ＪＮＬＧ１３００７は、移行元ジャーナルグループの識別子となるＪＮＬグループＩＤ５００１の値を格納する。移行元ＶＯＬＩＤ１３００２は、移行元データボリュームの識別子となるデータボリュームＩＤ６００２の値を格納する。以上３つの値は、本実施形態内で一意の論理ボリュームを特定することができる。これを移行元論理ボリューム情報１３０１０と呼ぶ。移行元最終順序番号１３００３は、移行元ジャーナルグループにおける移行元データボリュームに関する最も新しいジャーナルの順序番号１０００５の値を格納する。
【００６９】
移行先筺体１３００４は、移行先ストレージ装置の識別子となるストレージＩＤ１２００１の値を格納する。移行先ＪＮＬＧ１３００８は、移行先ジャーナルグループの識別子となるＪＮＬグループＩＤ５００１の値を格納する。移行先ＶＯＬＩＤ１３００５は、移行先データボリュームの識別子となるデータボリュームＩＤ６００２の値を格納する。以上３つの値は、本実施形態内で一意の論理ボリュームを特定することができる。これを移行先情報１３０１１と呼ぶ。移行先開始順序番号１３００６は、移行先ジャーナルグループにおける移行先論理ボリュームに関する最も新しいジャーナルの順序番号１０００５を格納する。
【００７０】
時刻１３００９は、ボリューム移行管理プログラム１２５１に従って動作するＣＰＵ１２３０が本ジャーナル連結情報を作成した時刻をタイマ１２６０から取得し、設定する。
【００７１】
前連結情報ＩＤ１３０１３は、本レコードのジャーナル連結情報より一つ前のジャーナル連結情報のＩＤ１３０１２を格納する。つまり、本レコードのジャーナル連結情報により連続性を保証されたジャーナル群において、その中の最古のジャーナルと他のジャーナルとの連続性を保障するジャーナル連結情報のＩＤ１３０１２の値を格納する。
（２）実施形態１の動作
次に、本実施形態の動作の説明を行う。まず、データボリューム移行の際の動作を説明する。ボリューム移行管理プログラム１２５１はデータボリュームを移行させるためのＣＬＩを提供する。例えば、管理者は「migrateVol -from RAID600_503 -source VOL_01 -to RAID600_504 -target VOL_02」といったコマンドを発行できる。これは、「ストレージ装置RAID600_503データボリュームVOL_01を、ストレージ装置RAID600_504のデータボリュームVOL_2へ移行せよ」という命令になる。図１３は、このコマンドを受け付けたボリューム移行管理プログラム１２５１によるＣＰＵ１２３０の動作である。
【００７２】
まず、ＣＰＵ１２３０は、移行元データボリュームのパス情報を移行元ストレージ装置から、移行先データボリュームのパス情報を移行先のストレージ装置から、それぞれ取得する（ステップ１４０１０）。次に、ＣＰＵ１２３０は移行元ストレージ装置及び移行先ストレージ装置に、移行元データボリュームのデータを移行先データボリュームへコピーするように要求をする（ステップ１４０２０）。この際、ストレージ装置間でコピーが行えるように、ＣＰＵ１２３０は移行元ストレージ装置に移行先データボリュームのパス情報を送信する。また、同様にＣＰＵ１２３０は移行先ストレージ装置に移行元データボリュームのパス情報を送信する。
【００７３】
その後、ＣＰＵ１２３０はコピー完了まで待機する（ステップ１４０３０）。このコピー完了の確認方法として、ＣＰＵ１２３０が定期的にストレージ装置１０００に問い合わせても良いし、ストレージマイクロプログラム１０２８に従って動作するＣＰＵ１０２３が、前記ＣＰＵ１２３０にコピー完了通知を行ってもよい。
【００７４】
コピー完了を確認した後、ＣＰＵ１２３０はパス管理プログラム１１６２に移行元データボリュームへのＩ／Ｏ要求の保留を要求する（ステップ１４０４０）。この保留とは、アプリケーション１１６５からのＩ／Ｏ要求をバッファに溜め込み、一時的に移行元データボリュームへの送信を停止することである。
【００７５】
その後、ＣＰＵ１２３０は、ステップ１４０４０のＩ／Ｏ要求保留以前に転送した全てのＩ／Ｏ要求が完了するまで待機する（ステップ１４０５０）。この完了確認は、ＣＰＵ１２３０が定期的にホスト計算機１１００に確認しても良いし、パス管理プログラム１１６２に従い動作するＣＰＵ１１３０が前記ＣＰＵ１２３０に完了通知を行ってもよい。
【００７６】
転送済み全Ｉ／Ｏ要求の完了を確認した後に、ＣＰＵ１２３０は移行元データボリュームに関する最新ジャーナルの情報を移行元ストレージ装置から取得する（ステップ１４０６０）。具体的には、順序番号や移行元データボリュームが属するジャーナルグループの識別子などである。
【００７７】
次に、ＣＰＵ１２３０は、移行先データボリュームに関する新規ジャーナルの作成を移行先ストレージ装置に要求する（ステップ１４０７０）。このとき作成するジャーナルは、リカバリ処理に影響を与えないように、データ長を０のものにする。
【００７８】
その後、ＣＰＵ１２３０は、当該移行先データボリュームに関する最新ジャーナルの情報を移行先ストレージ装置から取得する（ステップ１４０８０）。具体的には、順序番号や移行先データボリュームが属するジャーナルグループの識別子などである。
【００７９】
次に、ＣＰＵ１２３０は、パス管理プログラム１１６２に従い動作するＣＰＵ１１３０にパスの切り替えを要求し（ステップ１４０９０）、その後、パス管理プログラム１１６２に従い動作するＣＰＵ１１３０にＩ／Ｏ要求保留の解除を要求する（ステップ１４１００）。ステップ１４０９０の切り替えにより、保留されていたＩ／Ｏ要求は移行先論理ボリュームへ転送される。
【００８０】
次に、ＣＰＵ１２３０は、移行元データボリュームに関するジャーナル連結情報を検索する（ステップ１４１１０）。この検索処理は具体的に次のように行う。まず、ＣＰＵ１２３０は、移行元情報１３０１０もしくは移行先情報１３０１１が移行元データボリュームを指すジャーナル連結情報を列挙する。次に、ＣＰＵ１２３０は、列挙した中で最新のジャーナル連結情報の移行先情報１３０１１が移行元データボリュームを指すかを判定する。移行元データボリュームを指す場合、ＣＰＵ１２３０は、当該ジャーナル連結情報が移行元データボリュームに関するものとする。そうでなければ、ＣＰＵ１２３０は、移行元データボリュームに関するジャーナル連結情報は存在しないと判断する。
【００８１】
次に、ＣＰＵ１２３０は、ジャーナル連結情報を作成する（ステップ１４１２０）。まず、ＣＰＵ１２３０は、移行元筺体１３００１、移行元ＶＯＬＩＤ１３００２、移行先筺体１３００４、移行先ＶＯＬＩＤ１３００５に、コマンドで指定された値を設定する。また、ＣＰＵ１２３０は、移行元ＪＮＬＧ１３００７、移行元最終順序番号１３００３、移行先ＪＮＬＧ１３００８、移行先開始順序番号１３００６に、ステップ１４０６０及びステップ１４０８０にて取得したジャーナル情報を設定する。また、ＣＰＵ１２３０は、現在時刻をタイマ１２６０から取得し、時刻１３００９に設定する。さらに、ＣＰＵ１２３０は、当該ジャーナル連結情報のＩＤ１３０１２に識別子を割り振り、ステップ１４１１０において検索したジャーナル連結情報のＩＤ１３０１２を、前連結情報ＩＤ１３０１３に設定する。なお、ステップ１４１１０にてジャーナル連結情報を検索できなかった場合は、ＣＰＵ１２３０は、前連結情報ＩＤ１３０１３に「Null」を設定する。以上のように、ジャーナル連結情報を作成した後、ＣＰＵ１２３０は処理を終了する。
【００８２】
なお、本処理の流れでは、移行先データボリュームが既にジャーナルグループに属していることを想定しているが、別の実施形態として、移行先データボリュームを新規にジャーナルグループに追加してからデータボリューム移行を行っても良い。この場合は、ステップ１４０１０の前に、前記データボリュームテーブル設定のＣＬＩを発行するステップを追加すればよい。また同様に、ステップ１４１１０の後に移行元のデータボリュームを移行元ジャーナルグループから削除する処理を追加しても良い。この削除処理については後述する。
【００８３】
さらに、本処理の流れでは、移行先データボリュームがホスト計算機に認識されていることが前提となっているが、別の実施形態として、ステップ１４０９０のパスの切り替えの前に、移行先データボリュームをホスト計算機に認識させることも可能である。たとえば、ヒューレットパッカード社のＵＮＩＸ（登録商標）オペレーティングシステムでは、「ＩＯＳＣＡＮ」コマンドを実行させることにより認識が可能である。
【００８４】
次に、ジャーナル連結情報を更新する際の動作を説明する。ジャーナル連結情報管理プログラム１２５５はジャーナル連結情報の更新のためのＣＬＩを提供する。例えば、管理者は「invokeJNLMonitor -interval 300」といったコマンドを発行する。これは、「300秒周期でジャーナルの連結情報を更新する処理を行え」という命令になる。図１４は、このコマンドを受け付けて起動したジャーナル連結情報管理プログラム１２５５によるＣＰＵ１２３０の動作の流れである。
【００８５】
まず、ＣＰＵ１２３０は、指定されたジャーナル連結情報更新の周期に従い、更新時刻になるまで待機する（ステップ１７０１０）。更新時刻になると、ＣＰＵ１２３０は、ジャーナル連結情報テーブル１３０００に登録されたジャーナル連結情報の数だけステップ１７０３０〜ステップ１７０９０を繰り返す（ステップ１７０２０）。
【００８６】
まず、ＣＰＵ１２３０は、移行元ジャーナルグループの最古のジャーナルの順序番号を移行元ストレージ装置から取得する（ステップ１７０３０）。ＣＰＵ１２３０は、取得した順序番号と移行元最終順序番号１３００３を比較する（ステップ１７０４０）。この結果、取得した順序番号が移行元最終順序番号１３００３よりも大きい場合、連結元ジャーナルが存在しないことを意味するため、ＣＰＵ１２３０は当該ジャーナル情報を削除し（ステップ１７０５０）、ステップ１７０９０に進む。一方、当該順序番号が移行元最終順序番号以下の場合、ＣＰＵ１２３０はステップ１７０５０をスキップしてステップ１７０６０へ進む。
【００８７】
同様に、ＣＰＵ１２３０は、移行先ジャーナルグループの最古のジャーナルの順序番号を移行先ストレージ装置から取得し（ステップ１７０６０）、取得した順序番号と移行先開始順序番号１３００６とを比較する（ステップ１７０７０）。この結果、取得した順序番号が移行先開始順序番号よりも大きい場合、連結先ジャーナルが存在しないことを意味するため、ＣＰＵ１２３０は当該ジャーナル情報を削除する（ステップ１７０８０）。一方、当該順序番号が移行元最終順序番号以下の場合、ＣＰＵ１２３０はステップ１７０８０をスキップしてステップ１７０９０へ進む。
【００８８】
まだ、更新処理を行っていないジャーナル連結情報が存在する場合、ＣＰＵ１２３０はステップ１７０２０へ戻り、処理を継続する。すべてのジャーナル連結情報の更新処理が終了している場合は、ＣＰＵ１２３０はステップ１７０１０へ進み、次の更新周期まで待機する（ステップ１７０９０）。以上が、ジャーナル連結情報の更新処理の説明である。
【００８９】
次に、データボリュームをジャーナルグループから削除する際の動作を説明する。設定プログラム１２５４はジャーナルグループからデータボリュームを削除するためのＣＬＩを提供する。例えば、管理者は「deleteVol -stid RAID600_504 -jngid JNLG_04 -volid VOL_31」といったコマンドを発行する。これはストレージ装置RAID600_504に対する「論理ボリュームVOL_31をジャーナルグループJNLG_04から削除しろ」という命令になる。図１５は、この命令を受け付けたジャーナル連結情報管理プログラム１２５５によるＣＰＵ１２３０の動作の流れである。
【００９０】
まず、ＣＰＵ１２３０は、削除対象データボリュームに関するジャーナル連結情報を検索する（ステップ１８０１０）。この検索処理は、前記ステップ１４１１０と同様に行う。削除対象データボリュームに関するジャーナル連結情報が存在する場合、ＣＰＵ１２３０は削除対象ボリュームに関する最新のジャーナル情報を取得する（ステップ１８０２０）。
【００９１】
次に、ＣＰＵ１２３０は、取得したジャーナル情報を元に移行先無しのジャーナル連結情報を作成する（ステップ１８０３０）。この作成処理では、ＣＰＵ１２３０は、移行先ストレージ装置１３００４、移行先ＪＮＬＧ１３００８、移行先ＶＯＬＩＤ１３００５、移行先開始順序番号１３００６にNullを設定する。これら以外の値には、ＣＰＵ１２３０は、前記ステップ１４１２０と同様のものを設定し、ジャーナル連結情報を作成する。
【００９２】
最後に、ＣＰＵ１２３０は、指定されたジャーナルグループから削除対象データボリュームを削除するように、ストレージ装置に要求し（ステップ１８０４０）、処理を終了する。もし、ステップ１８０１０において、削除対象データボリュームに関するジャーナル連結情報は存在しないと判定された場合、ステップ１８２０及びステップ１８０３０をスキップし、上記ステップ１８０４０を処理した後に、処理を終了する。
【００９３】
次に、リカバリを行う際の動作を説明する。ＣＤＰ管理プログラム１２５２はリカバリのためのＣＬＩを提供する。例えば、管理者は「restoreVol -stid RAID600_504 -volid VOL_31 -rp 200511181200 -target VOL_32」といったコマンドを発行できる。これは「ストレージ装置RAID600_504のデータボリュームVOL_31の２００５年１１月１８日１２時００分時点のデータを論理ボリュームVOL_32にリカバリしろ」という命令になる。なお、以降、リカバリの対象となるデータボリューム(上記コマンド例ではVOL_31)をリカバリ対象データボリュームと呼び、リカバリされたデータを格納する論理ボリューム(上記コマンド例ではVOL_32)をリカバリ先論理ボリュームと呼ぶ。
【００９４】
図１６は、この命令を受け付けたＣＤＰ管理プログラム１２５２によるＣＰＵ１２３０の処理の流れである。まず、ＣＰＵ１２３０はリカバリ対象データボリュームに関するジャーナル連結情報を検索する（ステップ１９０１０）。この検索は、前記ステップ１４１１０と同様に行う。この検索の結果、リカバリ対象データボリュームに関するジャーナル連結情報が存在しない場合は、リカバリ実行主体ストレージ装置に通常のリカバリ要求を行い（ステップ１９０２０）、処理を終了する。
【００９５】
一方、前記ジャーナル連結情報が存在する場合、ＣＰＵ１２３０は、リカバリ対象データボリュームに関するジャーナル連結情報のリストを作成する (ステップ１９０３０)。ここでは、ＣＰＵ１２３０は連結情報ＩＤ１３０１３を用いてリストを作成する。連結情報ＩＤ１３０１３に「Null」か、存在しないジャーナル連結情報の識別子が設定されているジャーナル連結情報まで遡ると、ＣＰＵ１２３０は本リストの作成を終了する。
【００９６】
次に、ＣＰＵ１２３０は、前記リストに含まれる各ストレージ装置からリカバリ対象データボリュームに関するＣＤＰ関連情報を取得する（ステップ１９０４０）。ＣＤＰ関連情報とは、ジャーナルグループテーブル５０００、データボリュームテーブル６０００、スナップショットボリュームテーブル７０００、スナップショットグループテーブル８０００、ジャーナルボリュームテーブル９０００である。このとき、ＣＰＵ１２３０は、管理筺体ＩＤ５００８、管理筺体ＩＤ６００４、管理筺体ＩＤ７００４、管理筺体ＩＤ８００５、管理筺体ＩＤ９００５に取得元ストレージ装置の識別子を設定する。
【００９７】
次に、ＣＰＵ１２３０は、基底スナップショットを決定する（ステップ１９０４５）。この処理では、まずＣＰＵ１２３０は、指定されたリカバリ時刻に近い時刻に取得したスナップショットグループを特定する。次に、ＣＰＵ１２３０は、そのスナップショットグループ取得時刻におけるリカバリ対象データボリュームの移行元データボリュームを、前記ジャーナル連結情報のリストから特定する。次に、ＣＰＵ１２３０は、前記スナップショットグループを格納するSSVOLグループのなかで、前記移行元データボリュームのスナップショットを格納するスナップショットボリュームを特定する。このスナップショットボリュームに格納されているスナップショットが基底ボリュームとなる。最後にＣＰＵ１２３０は、基底ＳＳフラグ８００６に「ＴＲＵＥ」を設定する。
【００９８】
次に、ＣＰＵ１２３０は、基底スナップショットの格納場所を判定する（ステップ１９０５０）。前記特定した基底スナップショットを格納するスナップショットボリュームの管理筺体ＩＤ７００５がリカバリ実行主体ストレージ装置を示すものであれば、ステップ１９０６０をスキップする。一方、外部ストレージ装置を示すものであれば、ステップ１９０６０に進む。
【００９９】
基底スナップショットが外部ストレージ装置に格納されている場合、ＣＰＵ１２３０は、外部スナップショットボリュームを外部接続する（ステップ１９０６０）。ここでは、まず、ＣＰＵ１２３０は外部スナップショットボリュームに関するパス情報を外部ストレージ装置から取得する。その後、ＣＰＵ１２３０は、そのパス情報と外部ストレージの識別子、外部スナップショットボリュームの識別子を元に外部接続を行うようにリカバリ実行主体ストレージ装置に要求する。
【０１００】
次に、ＣＰＵ１２３０は、外部ストレージ装置に格納されたジャーナルがリカバリに必要であるかを判定する（ステップ１９０７０）。この処理では、ＣＰＵ１２３０は、前記ジャーナル連結情報のリストを用い、基底スナップショットの取得時刻と指定されたリカバリ時刻の間に作成されたジャーナルを格納しているストレージ装置を特定することで、上記判定を行う。
【０１０１】
外部ストレージ装置に格納されたジャーナルが必要な場合、ＣＰＵ１２３０は外部ジャーナルボリュームを外部接続する（ステップ１９０８０）。ここでは、ＣＰＵ１２３０は、前記ジャーナル連結情報のリストを用い、当該ジャーナルを格納するストレージ装置と当該ジャーナルの適用先データボリュームが属するジャーナルグループを特定する。次に、ＣＰＵ１２３０は、特定したジャーナルグループに関連付けられたジャーナルボリュームを特定する。その後、ＣＰＵ１２３０は、前記特定したジャーナルボリュームのパス情報をストレージ装置から取得し、この情報を元に外部接続を行うようにリカバリ実行主体ストレージ装置に要求する。
【０１０２】
次に、ＣＰＵ１２３０は、ＣＬＩで入力されたリカバリ要求内容、ＣＤＰ関連情報、ステップ１９０３０にて作成したジャーナル連結情報リストをリカバリ実行主体ストレージ装置に送信し、リカバリ実行主体ストレージ装置にリカバリを要求する（ステップ１９０９０）。この要求を受け付けたストレージマイクロプログラム１０２８によるＣＰＵ１０２８の動作は後述する。
【０１０３】
リカバリが完了したら、ＣＰＵ１２３０は、本処理において外部接続した外部ジャーナルボリューム、外部スナップショットボリュームの外部接続の解除をリカバリ実行主体ストレージ装置に要求し（ステップ１９１００）、処理を終了する。以上がリカバリ命令を受け付けたＣＤＰ管理プログラム１２５２の動作である。
【０１０４】
なお、本実施形態では、ジャーナルの生成時刻やスナップショットの生成時刻を、ストレージ装置のタイマ１０２４から取得しているため、ストレージ装置間でタイマ１０２４が正確に一致している必要がある。これが保証できない場合は、ホスト計算機１１００からのＩ／Ｏ要求やスナップショット取得要求に含まれている時刻を用いて、ジャーナルの生成時刻やスナップショットの取得時刻を設定することもできる。また、別の実施形態として、運用中にアプリケーション１１６５を静止化させてから、リカバリポイントとして指定する点、すなわち、関連する全ストレージ装置に対しマーカを発行し、静止化を解除することが考えられる。このマーカをリカバリポイントとすることより、ストレージ装置間のリカバリポイントを、タイマ１０２４に依存せず、一致させることができる。この技術は、特開2005-190456号公報に記載されている。
【０１０５】
図１７は、上記ステップ１９０９０にて、リカバリ命令を受け付けたストレージマイクロプログラム１０２８によるＣＰＵ１０２３の処理の流れである。まず、ＣＰＵ１０２３は、ステップ１９０９０にて受け付けたＣＤＰ関連情報から、基底ＳＳフラグ８００６が「ＴＲＵＥ」となっているSSVOLグループを検索し、その格納ストレージ装置を特定する（ステップ２００２０）。
【０１０６】
基底スナップショット格納ストレージ装置がリカバリ実行主体ストレージ装置である場合、ＣＰＵ１０２３は、ステップ１９０４５と同様の方法で基底スナップショット格納ボリュームを特定し、リカバリ先論理ボリュームに基底スナップショットをコピーする（ステップ２００３０）。
【０１０７】
一方、基底スナップショット格納ストレージ装置が外部ストレージ装置である場合、仮想ボリュームからリカバリ先論理ボリュームへ基底スナップショットをコピーする（ステップ２００４０）。ここではまず、ＣＰＵ１０２３は、ステップ１９０４５と同様の方法でスナップショット格納ボリュームを特定する。次に、ＣＰＵ１０２３は、当該スナップショット格納ボリュームの識別子と外部ストレージ装置の識別子を用い、対応する仮想ボリューム管理テーブルから仮想ボリュームを特定し、上記基底スナップショットのコピーを行う。
【０１０８】
次に、ＣＰＵ１０２３は、指定された時刻のデータのリカバリが完了したか否かを判定する（ステップ２００５０）。リカバリが完了している場合は、ステップ２００１０にてマージしたＣＤＰ管理情報を削除し（ステップ２００６０）、処理を終了する。
【０１０９】
一方、リカバリされていない場合、ＣＰＵ１０２３は、次に読み込むジャーナルとその格納ストレージ装置を特定する（ステップ２００７０）。この特定処理の流れは、当該リカバリ処理におけるジャーナル読み出しの有無により異なる。当該処理に関しては後述する。
【０１１０】
次に、ＣＰＵ１０２３は、次に読み込むジャーナルの格納ストレージ装置により処理を分岐させる（ステップ２００８０）。次に読み込むジャーナルが外部ストレージ装置に格納されている場合、ＣＰＵ１０２３は、仮想ボリュームからジャーナルを読み込む（ステップ２０１００）。ここでは、まず、ＣＰＵ１０２３は、前記ジャーナル連結情報のリストから、次に読み込むジャーナル作成時点のデータボリュームが属していたジャーナルグループを特定する。
【０１１１】
次に、ＣＰＵ１０２３は、当該ジャーナルグループに関連付けられたジャーナルボリュームを特定する。次に、ＣＰＵ１０２３は、当該ジャーナルボリュームの識別子と外部ストレージ装置の識別子を用い、仮想ボリュームテーブル４０００から対応する仮想ボリュームを特定する。次に、ＣＰＵ１０２３は、当該仮想ボリュームから次に読み込むジャーナルを検索して、読み出す。なお、本ステップでは、前記特許文献４の外部接続技術の利用を前提に「仮想ボリュームからジャーナルを読み出す」と単純に記述しているが、本ジャーナルの取得方法はこれに限定されるものではない。たとえば、次のような方法でもジャーナルを取得可能である。まず、ＣＰＵ１０２３は、外部ジャーナルボリュームが属する外部ストレージ装置を仮想ボリューム管理テーブルから特定する。
【０１１２】
次に、ＣＰＵ１０２３は、外部ジャーナルボリュームの識別子とジャーナルの格納アドレスをキーとして、管理ネットワークあるいはデータネットワークを介して、当該外部ストレージ装置へジャーナルを問い合わせる。このようにジャーナルを取得することも可能である。
【０１１３】
このジャーナルの作成時刻におけるリカバリ対象データボリュームの移行元データボリュームが、読み出したジャーナルの適用先データボリュームと一致するか判定する（ステップ２０１１０）。一致する場合、本ジャーナルを適用し（ステップ２０１２０）、ステップ２００５０へ進む。一致しない場合は、ステップ２０１２０をスキップする。
【０１１４】
リカバリ実行主体ストレージ装置内のジャーナルを用いる場合は、ＣＰＵ１０２３はジャーナルボリュームからジャーナルを読み込む（ステップ２００９０）。その後上記ステップ２０１１０に進む。
【０１１５】
図１８のうち、（１８Ａ）及び（１８Ｂ）は、ＣＰＵ１０２３の前記ステップ２００７０における処理の流れを示したものである。まず、１８Ａについて説明する。本処理は、Afterジャーナルを利用してリカバリする際のＣＰＵ１０２３による、次に読み込むジャーナルを格納するストレージ装置に対する特定処理である。
【０１１６】
まず、ＣＰＵ１０２３は、本リカバリ処理においてジャーナルを一度でも読み込んだことがあるかを判定し（ステップ２１０１０）、読み込んでいない場合はコピーしたスナップショットがジャーナル連結情報の連結元になっているかを判定する（ステップ２１０２０）。連結元となっていない場合、コピーしたスナップショットと同一のストレージ装置に格納された、次の順序番号を持つジャーナルを次に読み込むものと特定する（ステップ２１０３０）。連結元となっている場合、当該ジャーナル連結情報の移行先ストレージ装置に格納された連結先ジャーナルを次に読み込むものと特定する（ステップ２１０４０）。
【０１１７】
一方、ステップ２１０１０の判定において、読み込み後と判定した場合、直前に読み込んだジャーナルがジャーナル連結情報の連結元になっているかを判定する（ステップ２１０５０）。連結元となっていない場合、直前に読み込んだジャーナルと同一のストレージ装置に格納された、次の順序番号を持つジャーナルを次に読み込むものと特定する（ステップ２１０６０）。連結元となっている場合、当該ジャーナル連結情報の移行先ストレージ装置に格納された連結先ジャーナルを次に読み込むものと特定する（ステップ２１０４０）。
【０１１８】
次に、１８Ｂについて説明する。本処理は、Beforeジャーナルを利用してリカバリする際のＣＰＵ１０２３による次に読み込むジャーナルとその格納ストレージ装置に対する特定処理である。
【０１１９】
まず、ＣＰＵ１０２３は、本リカバリ処理においてジャーナルを一度でも読み込んだことがあるかを判定し（ステップ２１１１０）、読み込んでいない場合はコピーしたスナップショットと同一のストレージ装置に格納された、スナップショットと同一順序番号を持つジャーナルを次に読み込むものと特定する（ステップ２１１２０）。
【０１２０】
一方、ステップ２１１１０の判定において、読み込み後と判定した場合、直前に読み込んだジャーナルがジャーナル連結情報の連結先になっているかを判定する（ステップ２１１３０）。連結先となっていない場合、直前に読み込んだジャーナルと同一のストレージ装置に格納された、一つ前の順序番号を持つジャーナルを次に読み込むものと特定する（ステップ２１１５０）。連結先となっている場合、当該ジャーナル連結情報の移行先ストレージ装置に格納された連結先ジャーナルを次に読み込むものと特定する（ステップ２１１４０）。以上が、リカバリ処理の流れである。
【０１２１】
以上が実施形態１の説明である。この実施形態によれば、ストレージ装置間でのデータボリューム移行後であっても、ジャーナルを用いたリカバリを行うことができる。また、ジャーナリングを用いたバックアップ及びリストアでは、スナップショット及びジャーナルは時間の経過とともに古いものから削除されるため、スナップショット及びジャーナルは一定時間経過の後に移行先に集約される。よって、明示的にスナップショット及びジャーナルを移行させる必要が無く、ストレージ装置のCPU負荷や転送路の負荷などのコストを省くことができる。
実施形態２
次に第２の実施形態について説明する。本実施形態では、第１のストレージ装置が外部接続機能を用いて外部ストレージ装置のボリュームを仮想化し、当該仮想ボリュームを、ジャーナルグループを構成するデータボリューム(以降、「仮想データボリューム」と呼ぶ)として第１のストレージ装置内で用いている。この構成において、前記外部ストレージ装置の同一ボリュームを第２のストレージ装置にも外部接続し、仮想データボリュームを作成することにより、仮想データボリュームをストレージ装置間で移行させることができる。しかし、この場合にも、当該仮想データボリュームに関連するジャーナルとスナップショットがストレージ装置間に分散し、ジャーナリングを用いたリカバリができなくなるという問題がある。本発明は、このような構成に適用できるものであることを、本実施形態を用いて説明する。
（１）実施形態２のシステム構成
図１９は、本実施形態のストレージ装置の構成を示すブロック図である。この構成は、実施形態１の構成とほぼ同等であるため、以降は相違点のみを説明することとする。
【０１２２】
図１９のシステムには、新たにニアラインストレージ装置１５００が追加されている。ニアラインストレージ装置１５００は、データネットワーク１３００を介して、ストレージ装置１０００、ホスト計算機１１００と接続されている。また、ニアラインストレージ装置１５００は、管理ネットワーク１４００を介してストレージ装置１０００、ホスト計算機１１００、管理計算機１２００と接続されている。本実施形態では、説明の簡単化のためニアラインストレージ装置１５００を１台しか示されていないが、１台以上でもかまわない。ニアラインストレージ装置１５００は、ディスクコントローラ１５２０及びディスク装置１５１０を備えている。
【０１２３】
ディスク装置１５１０の基本的な機能はディスク装置１０１０と同等である。ディスク装置１５１０は、論理ボリューム１５１６を格納する。論理ボリューム１５１６は、他のストレージ装置の外部接続機能により外部ボリュームとして利用される。
【０１２４】
このディスクコントローラ１５２０の構成はディスクコントローラ１０２０と同等である。ただし、メモリ内部のストレージマイクロプログラム１０２８の機能は、ジャーナリングを用いたバックアップ及びリカバリの各種機能、他ストレージ装置へのデータをコピーする機能、外部接続機能などは必須ではない。
【０１２５】
また、ストレージ装置１０００のジャーナルグループ１０１４がデータボリューム１０１１ではなく、仮想データボリューム１０１６で構成されている。この仮想データボリューム１０１６は、ニアラインストレージ１５００の論理ボリューム１５１６を外部接続機能により仮想化したボリュームである。このため、ジャーナルグループ１０１４は、ディスク装置１０１０上に存在するわけではなく、ディスクコントローラ１０２０のメモリ上に仮想的に構成される。
【０１２６】
ホスト計算機１１００から送信されてきた仮想データボリューム１０１６への書き込み要求は、ストレージマイクロプログラム１０２８により処理され、前記仮想データボリューム１０１６に対応する論理ボリューム１５１６に反映される。この際、ストレージマイクロプログラム１０２８は、書き込むデータをAfterジャーナル、上書きされる箇所のデータをBeforeジャーナルとし、送信されてきた順序に従って順序番号を割り振るなどの適切なメタデータを付与し、ジャーナルグループ１０１４に関連付けられたジャーナルボリューム１０１３に格納する。
【０１２７】
図２０は、論理ボリューム管理テーブルの一例を示したものである。当該テーブルは、実施形態１とは異なり、データコピー中フラグ２００３及びコピー進捗ポインタを必須としていない。そして、新たにキャッシュスルーフラグ２２００１が追加される。当該キャッシュスルーフラグは、管理対象論理ボリュームに対する書き込み要求のバッファリングを有効にするか否かを示す値を格納する。具体的には、「off」が設定されている場合はバッファリングが有効となっていることを示す。「on」が設定されている場合はバッファリングを行わず、書き込み要求は直ちに論理ボリュームに反映される。
（２）実施形態２の動作
動作の大部分は実施形態１の動作と同じであるため、以降は相違点のみを説明する。図２１は、管理者が、仮想データボリュームの移行を要求したときのボリューム移行管理プログラム１２５１によるＣＰＵ１２３０の処理の流れである。
【０１２８】
まず、ＣＰＵ１２３０は、ボリューム移行管理プログラム１２５１は移行元ストレージ装置から、移行元仮想データボリュームに関する情報を取得する（ステップ２３０１０）。具体的には、論理ボリューム管理テーブル及び仮想ボリュームテーブルである。
【０１２９】
次に、ＣＰＵ１２３０は、取得した情報から指定された移動元仮想データボリュームに対応する外部ボリュームの情報を特定する（ステップ２３０２０）。ここでは、コマンドで指定された移行元仮想データボリュームに対応する仮想ボリュームを論理ボリューム管理テーブル２０００から検索する。その後、仮想ボリューム管理テーブル４０００から、当該仮想ボリュームの外部ストレージ装置ＩＤ４００３、外部ボリュームパス４００４、論理ボリュームＩＤ４００５を特定する。
【０１３０】
次に、ＣＰＵ１２３０は、特定した外部ボリュームの情報を用い、移行先ストレージ装置に外部ボリュームを外部接続し、論理ボリュームとして認識するように要求する（ステップ２３０３０）。次に、ＣＰＵ１２３０は、作成した論理ボリュームに対してパスを設定する。（ステップ２３０４０）。次に、ＣＰＵ１２３０は、作成した論理ボリュームを移行先ジャーナルグループへ追加する（ステップ２３０５０）。
【０１３１】
次に、ＣＰＵ１２３０は、作成した仮想データボリュームをホストに認識させる。（ステップ２３０６０）。ここでは、ＣＰＵ１２０は、ヒューレットパッカード社のＵＮＩＸ（登録商標）オペレーティングシステムの「ＩＯＳＣＡＮ」等を実行する。
【０１３２】
次に、ＣＰＵ１２３０は、移行元ストレージ装置に対して、移行元仮想データボリュームへの書き込み要求をキャッシュスルーするように要求する（ステップ２３０７０）。この要求を受け付けたストレージマイクロプログラム１０２８に従って動作するＣＰＵ１０２３は論理ボリューム管理テーブル２０００のキャッシュスルーフラグを「on」にする。
【０１３３】
その後、ＣＰＵ１２３０は、移行元仮想データボリュームのキャッシュが全てデステージされるまで待機する（ステップ２３０８０）。このデステージ完了確認は、ＣＰＵ１２３０が定期的に移行元ストレージ装置に確認しても良いし、ストレージマイクロプログラム１０２８によるＣＰＵ１０２３が完了をボリューム移行管理プログラム１２５１に通知しても良い。
【０１３４】
ステップ１４０６０〜１４１２０は実施形態１と同等なので説明を省略する。ステップ１４１２０で、ジャーナル連結情報を作成した後に、ＣＰＵ１２３０は移行元ストレージ装置に移行元仮想データボリュームをジャーナルグループから削除し、外部接続を解除する（ステップ２３０９０）。以上が、本実施形態における仮想データボリュームの移行処理の流れである。
【０１３５】
図２２は、移行中の仮想データボリュームへのＩ／Ｏ要求を受け取ったストレージマイクロプログラム１０２８によるＣＰＵ１０２３の処理の流れである。まず、ＣＰＵ１０２３は、キャッシュスルー属性が「on」となっている仮想データボリュームへのＩ／Ｏを受け取る（ステップ２４０１０）。これは、論理ボリューム管理テーブルのキャッシュスルーフラグ２２００１を参照すれば判断可能である。
【０１３６】
次に、ＣＰＵ１０２３は本Ｉ／Ｏ要求がライト要求であるかを判定する（ステップ２４０２０）。リード要求である場合は、ＣＰＵ１０２３は通常のＩ／Ｏ処理を行い(ステップ２４０８０)、Ｉ／Ｏ要求完了応答を返す（ステップ２４０７０）。
【０１３７】
一方、Ｉ／Ｏ要求がライト要求であった場合は、まず、ＣＰＵ１０２３はジャーナルを作成する（ステップ２４０３０）。その後、ＣＰＵ１０２３はライトデータをキャッシュに格納する（ステップ２４０４０）。このキャッシュとはデータ読み込みを高速化するためのキャッシュである。その後、ＣＰＵ１０２３は外部ボリュームに当該ライト要求を外部ボリュームへ反映させる（２４０５０）。その後、ＣＰＵ１０２３は前記キャッシュに格納したライトデータの管理情報に外部ボリュームへ反映済みであることを設定する（ステップ２４０６０）。最後にＣＰＵ１０２３はＩ／Ｏ要求完了の応答をして（ステップ２４０７０）処理を終了する。
【０１３８】
以上が実施形態２の説明である。この実施形態によれば、ストレージ装置間での仮想データボリューム移行後であっても、ジャーナルを用いたリカバリを行うことができる。
【０１３９】
また、ジャーナリングを用いたバックアップ及びリストアでは、スナップショット及びジャーナルは時間の経過とともに古いものから削除されるため、スナップショット及びジャーナルは一定時間経過の後に移行先に集約される。よって、明示的にスナップショット及びジャーナルを移行させる必要が無く、ストレージ装置のCPU負荷や転送路の負荷などのコストを省くことができる。
実施形態３
次に第３の実施形態について説明する。この実施形態は、ジャーナルグループを構成するデータボリュームが仮想ボリューム(仮想データボリューム)であることに加え、SSVOLグループを構成するスナップショットボリューム及びジャーナルボリュームも仮想ボリュームである構成を採用している。以後、前記スナップショットボリュームとしての仮想ボリュームを仮想スナップショットボリューム、前記ジャーナルボリュームとしての仮想ボリュームを仮想ジャーナルボリュームと呼ぶ。
（１）実施形態３のシステム構成
図２３は、ストレージ装置の構成を示すブロック図である。本構成の大部分は実施形態２の構成と同等であるため、以降は相違点のみを説明する。ストレージ装置１０００のＳＳＶＯＬグループ１０１５を、スナップショットボリューム１０１２ではなく、仮想スナップショットボリューム１０１７から構成している。この仮想スナップショットボリューム１０１６は、ニアラインストレージ１５００の論理ボリューム１５１６を外部接続により仮想化したボリュームである。このため、ＳＳＶＯＬグループ１０１４は、ディスク装置１０１０上に存在するわけではなく、メモリ上に仮想的に構成される。
【０１４０】
また、ストレージ装置１０００には、ジャーナルボリューム１０１３ではなく、仮想ジャーナルボリューム１０１８が備わっている。この仮想ジャーナルボリューム１０１８は、ニアラインストレージ１５００の論理ボリューム１５１６を外部接続により仮想化したボリュームである。このため、仮想ジャーナルボリューム１０１８は、ディスク装置１０１０上に存在するわけではなく、ディスクコントローラ１０２０のメモリ上に仮想的に構成される。
【０１４１】
図２４は、本実施形態における論理ボリューム管理テーブルの一例を示したものである。当該テーブルは、実施形態２とは異なり、新たに管理筺体ＩＤ２４００１が追加される。本値に関しては、管理筺体ＩＤ５００８と同様である。
【０１４２】
図２５は、本実施形態における仮想ボリューム管理テーブルの一例を示したものである。当該テーブルは、実施形態２とは異なり、新たに管理筺体ＩＤ２５００１が追加される。本値に関しては、管理筺体ＩＤ５００８と同様である。
（２）実施形態３の動作
本実施形態の動作の大部分は実施形態２の動作と同じであるため、以降は相違点のみを説明する。図２４は、ＣＤＰ管理プログラム１２５２に従って動作するＣＰＵ１２３０の、リカバリのコマンドを受け付けた時の処理の流れである。
【０１４３】
まず、ＣＰＵ１２３０は、ステップ１９０１０〜ステップ１９０３０まで実施形態２と同様の動作を行う。その後、ＣＰＵ１２３０は、関連ストレージ装置からＣＤＰ関連情報を取得する（ステップ２６０４０）。このＣＤＰ関連情報は、実施形態２で取得する情報に加え、論理ボリューム管理テーブルと仮想ボリューム管理テーブルも含む。このとき、ＣＰＵ１２３０は、管理筺体ＩＤ２４００１、管理筺体ＩＤ２５００１に取得元ストレージ装置の識別子を設定する。
【０１４４】
次に、基底スナップショットが格納されているスナップショットボリュームが、リカバリ実行主体ストレージ装置の仮想ボリュームであるか、外部ストレージ装置の仮想ボリュームであるかを判断する（ステップ２６０５０）。
【０１４５】
外部ストレージ装置の仮想ボリュームである場合は、当該仮想ボリュームに対応する外部ボリュームの情報を用い、リカバリ実行主体ストレージ装置に外部接続をするように要求する（ステップ２６０６０）。次に、外部ストレージ装置に定義された仮想ボリュームに格納されたジャーナルが必要であるかを判断する（ステップ２６０７０）。
【０１４６】
外部ストレージ装置の仮想ボリュームに格納されたジャーナルが必要な場合は、当該仮想ボリュームに対応する外部ボリュームの情報を用い、リカバリ実行主体ストレージ装置に外部接続をするように要求する（ステップ２６０８０）。以後は、実施形態２と同様の動作を行う。
【０１４７】
次に、上記ステップ１９０９０にて、リカバリ命令を受け付けたストレージマイクロプログラム１０２８によるＣＰＵ１０２３の処理の流れを説明する。本処理は実施形態２とほぼ同等なので、図１７を用いて相違点のみ説明する。
【０１４８】
ステップ２００４０では、ＣＰＵ１０２３は基底スナップショットを格納する仮想ボリュームからスナップショットをコピーする。このとき、ＣＰＵ１０２３は、ステップ１９０４５と同様の方法で、仮想スナップショットボリュームを特定し、その識別子と格納ストレージ装置の識別子を用いて、論理ボリューム管理テーブル２０００及び仮想ボリューム管理テーブル４０００から、ニアラインストレージ１５００の識別子及びスナップショットを格納するボリュームの識別子を取得する。ＣＰＵ１０２３は、これらの値を元に対応する仮想ボリュームを特定し、コピーを行う。
【０１４９】
なお、本ステップでは、前記特許文献４の外部接続技術の利用を前提に「仮想ボリュームからリカバリ先論理ボリュームへの基底スナップショットをコピーする」と単純に記述しているが、本コピー方法はこれに限定されるものではない。たとえば、次のような方法でもコピーは可能である。まず、ＣＰＵ１０２３は、基底スナップショットを格納する外部スナップショットボリュームが属する外部ストレージ装置を、仮想ボリューム管理テーブルから特定する。次にＣＰＵ１０２３は、当該外部スナップショットボリュームの識別子をキーとして、管理ネットワークあるいはデータネットワークを介して、当該外部ストレージ装置から基底スナップショットのデータを取得し、そのデータをリカバリ先論理ボリュームへコピーすることも可能である。
【０１５０】
また、ステップ２０１００では、ＣＰＵ１０２３は、外部ストレージ装置の識別子とジャーナルボリュームの識別子から、仮想ジャーナルボリュームを特定する。当該ボリュームの識別子と外部ストレージ装置の識別子を用い、論理ボリューム管理テーブル２０００及び仮想ボリューム管理テーブル４０００から、対応する外部ボリュームの情報、つまり、ニアラインストレージ１５００の識別子及び当該ニアラインストレージ１５００におけるジャーナルボリュームの識別子を取得する。ＣＰＵ１０２３は、これらの値を元にジャーナルを格納する仮想ボリュームを特定し、コピーを行う。
【０１５１】
以上が実施形態３の説明である。当該実施形態３によれば、仮想ボリュームにジャーナル及びスナップショットを格納するように構成されたジャーナリングを用いたバックアップ及びリカバリシステムにおいて、ストレージ装置間での仮想データボリューム移行後であっても、ジャーナルを用いたリカバリを行うことができる。
【０１５２】
また、ジャーナリングを用いたバックアップ及びリストアでは、スナップショット及びジャーナルは時間の経過とともに古いものから削除されるため、スナップショット及びジャーナルは一定時間経過の後に移行先に集約される。よって、明示的にスナップショット及びジャーナルを移行させる必要が無く、ストレージ装置のCPU負荷や転送路の負荷などのコストを省くことができる。
【図面の簡単な説明】
【０１５３】
【図１】実施形態１におけるシステム構成を示す図である。
【図２】実施形態１における論理ボリューム管理テーブルの一例を示す図である。
【図３】実施形態１におけるパス管理テーブルの一例を示す図である。
【図４】実施形態１における仮想ボリューム管理テーブルの一例を示す図である。
【図５】実施形態１におけるジャーナルグループテーブルの一例を示す図である。
【図６】実施形態１におけるデータボリュームテーブルの一例を示す図である。
【図７】実施形態１におけるスナップショットボリュームテーブルの一例を示す図である。
【図８】実施形態１におけるスナップショットグループテーブルの一例を示す図である。
【図９】実施形態１におけるジャーナルボリュームテーブルの一例を示す図である。
【図１０】実施形態１におけるジャーナルの構成の一例を示す図である。
【図１１】実施形態１におけるストレージテーブルの一例を示す図である。
【図１２】実施形態１におけるジャーナル連結情報テーブルの一例を示す図である。
【図１３】実施形態１におけるボリューム移行管理プログラム１２５１のデータボリューム移行処理動作の一例を示す図である。
【図１４】実施形態１におけるボリューム移行管理プログラム１２５１のジャーナル連結情報の更新処理動作の一例を示す図である。
【図１５】実施形態１におけるボリューム移行管理プログラム１２５１のデータボリューム削除処理動作の一例を示す図である。
【図１６】実施形態１におけるＣＤＰ管理プログラム１２５２のリカバリ実行処理動作の一例を示す図である。
【図１７】実施形態１におけるストレージマイクロプログラム１０２８のリカバリ実行処理動作の一例を示す図である。
【図１８Ａ】実施形態１におけるストレージマイクロプログラム１０２８の、Afterジャーナルを用いたリカバリにおける次に読み込むジャーナルの特定処理の一例を示す図である。
【図１８Ｂ】実施形態１におけるストレージマイクロプログラム１０２８の、Beforeジャーナルを用いたリカバリにおける次に読み込むジャーナルの特定処理の一例を示す図である。
【図１９】実施形態２におけるシステム構成を示す図である。
【図２０】実施形態２における論理ボリューム管理テーブルの一例を示す図である。
【図２１】実施形態２におけるボリューム移行管理プログラム１２５１のデータボリューム移行処理動作の一例を示す図である。
【図２２】実施形態２におけるストレージマイクロプログラム１０２８のデータボリューム移行に伴うデータコピー処理中に受け付けたＩ／Ｏ要求処理動作の一例を示す図である。
【図２３】実施形態３におけるシステム構成を示す図である。
【図２４】実施形態３における論理ボリューム管理テーブルの一例を示す図である。
【図２５】実施形態３における仮想ボリューム管理テーブルの一例を示す図である。
【図２６】実施形態３におけるＣＤＰ管理プログラム１２５２のリカバリ実行処理動作の一例を示す図である。
【符号の説明】
【０１５４】
１０００，１０００Ａ：ストレージ装置、１０１１：データボリューム、１０１２：スナップショットボリューム、１１００：ホスト計算機、１２００：管理計算機
【図１】
2007226347.tif 000003
【図２】
2007226347.tif 000004
【図３】
2007226347.tif 000005
【図４】
2007226347.tif 000006
【図５】
2007226347.tif 000007
【図６】
2007226347.tif 000008
【図７】
2007226347.tif 000009
【図８】
2007226347.tif 000010
【図９】
2007226347.tif 000011
【図１０】
2007226347.tif 000012
【図１１】
2007226347.tif 000013
【図１２】
2007226347.tif 000014
【図１３】
2007226347.tif 000015
【図１４】
2007226347.tif 000016
【図１５】
2007226347.tif 000017
【図１６】
2007226347.tif 000018
【図１７】
2007226347.tif 000019
【図１８Ａ】
2007226347.tif 000020
【図１８Ｂ】
2007226347.tif 000021
【図１９】
2007226347.tif 000022
【図２０】
2007226347.tif 000023
【図２１】
2007226347.tif 000024
【図２２】
2007226347.tif 000025
【図２３】
2007226347.tif 000026
【図２４】
2007226347.tif 000027
【図２５】
2007226347.tif 000028
【図２６】
2007226347.tif 000029