(57)【特許請求の範囲】
【請求項１】
ホスト計算機と、前記ホスト計算機に接続される第１ストレージ装置と、前記第１ストレージ装置に接続される第２ストレージ装置と、を備える計算機システムにおいて、
前記第１ストレージ装置は、前記ホスト計算機によって書き込まれたデータを格納する第１ボリュームと、前記第１ボリューム内のブロックのデータが更新されるときに、更新対象の前記ブロックに格納されていたデータを格納する第２ボリュームと、前記第１ストレージ装置を制御する第１制御装置と、を備え、
前記第２ストレージ装置は、前記第１ボリュームのデータがコピーされる第３ボリュームと、前記第３ボリューム内のブロックのデータが更新されるときに、更新対象の前記ブロックに格納されていたデータを格納する第４ボリュームと、前記第２ストレージ装置を制御する第２制御装置と、を備え、
前記第１制御装置は、
前記第４ボリュームの容量が不足するか否かを予測し、
前記第４ボリュームの容量が不足すると予測した場合、前記ホスト計算機から前記第１ボリュームに対するデータの書き込み処理を所定の時間遅延させることを特徴とする計算機システム。
【請求項２】
前記第２制御装置は、
前記第４ボリュームの空き容量を調査し、
前記調査された空き容量を前記第１ストレージ装置に送信し、
前記第１制御装置は、
前記第２制御装置から受信した前記空き容量から、前記ホスト計算機によって前記第１ボリュームに書き込まれたデータの量を減算し、
前記減算の結果が所定の閾値より小さい場合、前記第４ボリュームの容量が不足すると予測することを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記第１制御装置は、
前記第１ボリューム及び前記第２ボリュームに格納されたデータを、複数の世代のスナップショットとして管理し、
前記第４ボリュームの容量が不足すると予測した場合、前記データの書き込み処理を所定の時間遅延させる代わりに、最も古い世代及び最も新しい世代のスナップショットを除く中間の世代の一つ以上のスナップショットのみに含まれるデータを前記第２ボリュームから削除することを特徴とする請求項２に記載の計算機システム。
【請求項４】
前記第２制御装置は、前記第３ボリューム及び前記第４ボリュームに格納されたデータを、複数の世代のスナップショットとして管理し、
前記第１制御装置は、前記第４ボリュームの容量が不足すると予測した場合、前記データの書き込み処理を所定の時間遅延させる代わりに、最も古い世代及び最も新しい世代のスナップショットを除く中間の世代の一つ以上のスナップショットのみに含まれるデータを前記第４ボリュームから削除する指示を前記第２制御装置に送信することを特徴とする請求項２に記載の計算機システム。
【請求項５】
前記第１制御装置は、前記第４ボリュームの容量が不足すると予測した場合、前記データの書き込み処理を所定の時間遅延させる代わりに、前記第４ボリュームの容量を拡張する指示を前記第２ストレージ装置に送信することを特徴とする請求項２に記載の計算機システム。
【請求項６】
前記第１制御装置は、前記第４ボリュームの容量が不足すると予測した場合、前記データの書き込み処理を所定の時間遅延させる代わりに、前記ホスト計算機に警告を送信することを特徴とする請求項２に記載の計算機システム。
【請求項７】
ホスト計算機に接続されるストレージ装置において、
前記ストレージ装置は、
他のストレージ装置とさらに接続され、
前記ホスト計算機によって書き込まれたデータを格納する第１ボリュームと、前記第１ボリューム内のブロックのデータが更新されるときに、更新対象の前記ブロックに格納されていたデータを格納する第２ボリュームと、前記ストレージ装置を制御する制御装置と、を備え、
前記他のストレージ装置は、前記第１ボリュームのデータがコピーされる第３ボリュームと、前記第３ボリューム内のブロックのデータが更新されるときに、更新対象の前記ブロックに格納されていたデータを格納する第４ボリュームと、を備え、
前記制御装置は、
前記第４ボリュームの容量が不足するか否かを予測し、
前記第４ボリュームの容量が不足すると予測した場合、前記ホスト計算機から前記第１ボリュームに対するデータの書き込み処理を所定の時間遅延させることを特徴とするストレージ装置。
【請求項８】
前記制御装置は、
前記他のストレージ装置から前記第４ボリュームの空き容量を受信し、
前記受信した空き容量から、前記ホスト計算機によって前記第１ボリュームに書き込まれたデータの量を減算し、
前記減算の結果が所定の閾値より小さい場合、前記第４ボリュームの容量が不足すると予測することを特徴とする請求項７に記載のストレージ装置。
【請求項９】
前記制御装置は、
前記第１ボリューム及び前記第２ボリュームに格納されたデータを、複数の世代のスナップショットとして管理し、
前記第４ボリュームの容量が不足すると予測した場合、前記データの書き込み処理を所定の時間遅延させる代わりに、最も古い世代及び最も新しい世代のスナップショットを除く中間の世代の一つ以上のスナップショットのみに含まれるデータを前記第２ボリュームから削除することを特徴とする請求項８に記載のストレージ装置。
【請求項１０】
前記他のストレージ装置は、前記第３ボリューム及び前記第４ボリュームに格納されたデータを、複数の世代のスナップショットとして管理し、
前記制御装置は、前記第４ボリュームの容量が不足すると予測した場合、前記データの書き込み処理を所定の時間遅延させる代わりに、最も古い世代及び最も新しい世代のスナップショットを除く中間の世代の一つ以上のスナップショットのみに含まれるデータを前記第４ボリュームから削除する指示を前記他のストレージ装置に送信することを特徴とする請求項８に記載のストレージ装置。
【請求項１１】
前記制御装置は、前記第４ボリュームの容量が不足すると予測した場合、前記データの書き込み処理を所定の時間遅延させる代わりに、前記第４ボリュームの容量を拡張する指示を前記他のストレージ装置に送信することを特徴とする請求項８に記載のストレージ装置。
【請求項１２】
前記制御装置は、前記第４ボリュームの容量が不足すると予測した場合、前記データの書き込み処理を所定の時間遅延させる代わりに、前記ホスト計算機に警告を送信することを特徴とする請求項８に記載のストレージ装置。
【請求項１３】
ホスト計算機と、前記ホスト計算機に接続される第１ストレージ装置と、前記第１ストレージ装置に接続される第２ストレージ装置と、を備える計算機システムの制御方法において、
前記第１ストレージ装置は、前記ホスト計算機によって書き込まれたデータを格納する第１ボリュームと、前記第１ボリューム内のブロックのデータが更新されるときに、更新対象の前記ブロックに格納されていたデータを格納する第２ボリュームと、前記第１ストレージ装置を制御する第１制御装置と、を備え、
前記第２ストレージ装置は、前記第１ボリュームのデータがコピーされる第３ボリュームと、前記第３ボリューム内のブロックのデータが更新されるときに、更新対象の前記ブロックに格納されていたデータを格納する第４ボリュームと、前記第２ストレージ装置を制御する第２制御装置と、を備え、
前記第１制御装置は、
前記第４ボリュームの容量が不足するか否かを予測し、
前記第４ボリュームの容量が不足すると予測した場合、前記ホスト計算機から前記第１ボリュームに対するデータの書き込み処理を所定の時間遅延させることを特徴とする方法。
【請求項１４】
前記第２制御装置は、
前記第４ボリュームの空き容量を調査し、
前記調査された空き容量を前記第１ストレージ装置に送信し、
前記第１制御装置は、
前記第２制御装置から受信した前記空き容量から、前記ホスト計算機によって前記第１ボリュームに書き込まれたデータの量を減算し、
前記減算の結果が所定の閾値より小さい場合、前記第４ボリュームの容量が不足すると予測することを特徴とする請求項１３に記載の方法。
【請求項１５】
前記第１制御装置は、
前記第１ボリューム及び前記第２ボリュームに格納されたデータを、複数の世代のスナップショットとして管理し、
前記第４ボリュームの容量が不足すると予測した場合、前記データの書き込み処理を所定の時間遅延させる代わりに、最も古い世代及び最も新しい世代のスナップショットを除く中間の世代の一つ以上のスナップショットのみに含まれるデータを前記第２ボリュームから削除することを特徴とする請求項１４に記載の方法。
【請求項１６】
前記第２制御装置は、前記第３ボリューム及び前記第４ボリュームに格納されたデータを、複数の世代のスナップショットとして管理し、
前記第１制御装置は、前記第４ボリュームの容量が不足すると予測した場合、前記データの書き込み処理を所定の時間遅延させる代わりに、最も古い世代及び最も新しい世代のスナップショットを除く中間の世代の一つ以上のスナップショットのみに含まれるデータを前記第４ボリュームから削除する指示を前記第２制御装置に送信することを特徴とする請求項１４に記載の方法。
【請求項１７】
前記第１制御装置は、前記第４ボリュームの容量が不足すると予測した場合、前記データの書き込み処理を所定の時間遅延させる代わりに、前記第４ボリュームの容量を拡張する指示を前記第２ストレージ装置に送信することを特徴とする請求項１４に記載の方法。
【請求項１８】
前記第１制御装置は、前記第４ボリュームの容量が不足すると予測した場合、前記データの書き込み処理を所定の時間遅延させる代わりに、前記ホスト計算機に警告を送信することを特徴とする請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書で開示される技術は、ストレージ装置に関し、特に、複数のストレージ装置の間で実行されるデータのコピーに関する。
【背景技術】
【０００２】
近年のストレージ装置では、いわゆるリモートコピー技術を用いたディザスタリカバリの利用が拡大している。ディザスタリカバリは、運用中のサイト（正サイト）から遠隔地サイト（副サイト）にデータをリモートコピーしておき、自然災害等による障害が発生した時にビジネスを継続することを目的としている。
【０００３】
従来の計算機システム等では、業務の中で最もビジネスの継続に影響する重要なミッションクリティカル業務のデータベース処理だけがリモートコピーの対象となっていた。しかし近年では、障害発生時等のサービス停止時間をさらに短縮するため、周辺業務の非データベース処理もリモートコピーの対象となりつつある。ミッションクリティカル業務のリモートコピーでは、コピー遅延によるデータ欠落を防止するため、高価な専用線を用いて更新データを即時転送する同期コピーを行うことが一般的である。一方、非ミッションクリティカル業務においては、データベース処理に比べて最新データの欠落は許容できるケースが多い。このため、非ミッションクリティカル業務では、更新データを中間的なボリュームを経由して転送する非同期コピーを行い、通信コストを削減する手法が一般的である。このような手法として、更新データを中間ボリュームに蓄えるジャーナルボリューム方式と、差分スナップショット技術を用いて差分データを中間ボリュームに蓄える差分スナップショットコピー方式の２種類が存在する。これらの手法において中間ボリュームが不足した場合、中間ボリュームを拡張するか、又は、運用ボリュームへのアクセスを遅延させる場合が多い（例えば、特許文献１参照）。
【特許文献１】米国特許出願公開第２００５／０２５７０１４号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ジャーナルボリューム方式においては、各装置内に運用ボリューム（またはそのミラーボリューム）と中間ボリュームが同居し、装置内で独立して中間ボリューム不足を監視することによって効率のよい監視が実現される。
【０００５】
一方、差分スナップショットコピー方式においては、コピー先のストレージ装置が、コピー元のストレージ装置より多くの世代のスナップショットを保持する場合がある。この場合、コピー元のストレージ装置において、差分データを蓄えるための中間ボリューム（すなわち、差分ボリューム）のデータ溢れが発生する前に、コピー先のストレージ装置の差分ボリュームのデータ溢れが発生する場合がある。このため、コピー元のストレージ装置の運用ボリュームの監視、及び、コピー先のストレージ装置の差分ボリュームの監視を、同時に、遅延なく実行する必要がある。
【課題を解決するための手段】
【０００６】
本願で開示する代表的な発明は、ホスト計算機と、前記ホスト計算機に接続される第１ストレージ装置と、前記第１ストレージ装置に接続される第２ストレージ装置と、を備える計算機システムにおいて、前記第１ストレージ装置は、前記ホスト計算機によって書き込まれたデータを格納する第１ボリュームと、前記第１ボリューム内のブロックのデータが更新されるときに、更新対象の前記ブロックに格納されていたデータを格納する第２ボリュームと、前記第１ストレージ装置を制御する第１制御装置と、を備え、前記第２ストレージ装置は、前記第１ボリュームのデータがコピーされる第３ボリュームと、前記第３ボリューム内のブロックのデータが更新されるときに、更新対象の前記ブロックに格納されていたデータを格納する第４ボリュームと、前記第２ストレージ装置を制御する第２制御装置と、を備え、前記第１制御装置は、前記第４ボリュームの容量が不足するか否かを予測し、前記第４ボリュームの容量が不足すると予測した場合、前記ホスト計算機から前記第１ボリュームに対するデータの書き込み処理を所定の時間遅延させることを特徴とする。
【発明の効果】
【０００７】
本発明の一実施形態によれば、コピー先のストレージ装置の差分ボリュームにおけるデータ溢れを、それが実際に発生する前に、コピー元のストレージ装置が正確に予測して、発生を防ぐための処理を実行することができる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の一実施形態を添付図面に基づいて説明する。
【０００９】
図１は、本発明の実施の形態の計算機システムのブロック図である。
【００１０】
本実施の形態の計算機システムは、ネットワーク３によって接続された正サイト１及び副サイト２を備える。
【００１１】
正サイト１は、ホスト１１１からアクセスされるストレージ装置１１２を主体として構成される。ホスト１１１は、アプリケーションプログラム（図示省略）を実行することによって、データベース処理等の種々の業務を実行する。このとき、ホスト１１１は、必要に応じてストレージ装置１１２にＲＥＡＤ・ＷＲＩＴＥの要求を出してデータを送受信し、あるいは、ストレージ装置１１２にスナップショット転送指令を出す。
【００１２】
正サイト１のストレージ装置１１２は、ネットワーク３を介して差分コピーを副サイト２のストレージ装置１２２に送信する。ストレージ装置１２２は、ストレージ装置１１２のバックアップをする。正サイト１に障害が発生した場合、副サイト２が正サイト１の業務を引き継ぐフェールオーバ処理が実行される。正サイト１の業務を引き継いだ副サイト２のホスト１２１は、ストレージ装置１２２にアクセスして、ホスト１１１と同様の業務を実行する。
【００１３】
正サイト１のストレージ装置１１２と副サイト２のストレージ装置１２２はネットワーク３で接続される。正サイト１のストレージ装置１１２は、内部で互いに接続されたコントローラ１１３、正ボリューム１１４及び差分ボリューム１１５を備える。副サイト２のストレージ装置１２２は、正サイト１のストレージ装置１１２と同様、コントローラ１２３、副ボリューム１２４及び差分ボリューム１２５を備える。なお、ネットワーク３は、例えば、ＩＰネットワーク等である。
【００１４】
正ボリューム１１４、副ボリューム１２４、差分ボリューム１１５及び差分ボリューム１２５は、論理ボリュームである。論理ボリュームとは、ストレージ装置内に設定された記憶領域である。例えば、ストレージ装置１１２及び１２２がそれぞれ一つ以上のディスクドライブ（図示省略）を備える場合、各論理ボリュームは、一つ以上のディスクドライブの記憶領域によって構成される。
【００１５】
なお、以下の説明において、正ボリューム１１４及び副ボリューム１２４は、運用ボリュームとも記載される。
【００１６】
正サイト１のストレージ装置１１２と副サイト２のストレージ装置１２２は、ネットワーク３を介して互いに通信し、ディザスタリカバリシステムを構成する。また、正サイト１のストレージ装置１１２の正ボリューム１１４に格納されたデータは、後述するように、スナップショットを用いた差分リモートコピーによって、副サイト２のストレージ装置１２２に転送され、格納される。
【００１７】
本実施の形態では、副サイト２の差分ボリューム１２５の空きサイズが不足した場合に、不足を解消し、差分ボリューム１２５におけるデータの溢れを回避するという目的が実現される。ここで、論理ボリュームの空きサイズとは、その論理ボリュームに設定されている容量のうち、まだデータが格納されていない容量（すなわち、これからデータを格納することができる容量）である。
【００１８】
次に、図２から図１０を参照して、ストレージ装置１１２及び１２２の詳細を説明する。その後、図１１から１３を参照して、ストレージ装置１１２及び１２２を用いたリモートコピーの運用、及び、その中における溢れ回避の位置付けを説明する。なお、正サイト１のストレージ装置１１２と副サイト２のストレージ装置１２２は同様の構成であるので、ストレージ装置１１２についてのみ説明し、ストレージ装置１２２の説明は省略する。
【００１９】
図２は、本発明の実施の形態のストレージ装置１１２の詳細な内部構成を示すブロック図である。
【００２０】
コントローラ１１３は、ストレージ装置１１２を制御する制御装置であり、相互に接続されたインターフェース（Ｉ／Ｆ）２１１、Ｉ／Ｆ２１２、Ｉ／Ｆ２１３、プロセッサ１１６及びメモリ１１７を備える。Ｉ／Ｆ２１１は、ホスト１１１と接続され、ホスト１１１との間でデータを送受信する。Ｉ／Ｆ２１２は、正ボリューム１１４又は差分ボリューム１１５と接続され、これらの論理ボリュームとの間でデータを送受信する。Ｉ／Ｆ２１３は、ネットワーク３を介して副サイト２のストレージ装置１２２のコントローラ１２３と接続され、コントローラ１２３との間でデータを送受信する。プロセッサ１１６は、メモリ１１７に格納されたプログラムを実行する。メモリ１１７は、プロセッサ１１６によって実行されるプログラム及びそれらのプログラムによって参照されるテーブルを格納する。
【００２１】
本実施の形態のメモリ１１７には、少なくとも、スナップショット作成プログラム２０１、スナップショット削除プログラム２０２、スナップショット転送プログラム２０３、アクセス監視プログラム２０５、差分監視プログラム２０６、中間スナップ削除プログラム２０７、及び、差分ボリューム拡張プログラム２０８が格納される。さらに、メモリ１１７には、溢れ監視テーブル２０９及び差分管理テーブル２１０が格納される。
【００２２】
スナップショット作成プログラム２０１は、ホスト１１１からの指示に従って、正ボリューム１１４の差分管理によるスナップショットを作成する。このとき、スナップショット作成プログラム２０１は、ボリュームとスナップショットの間の差分データを差分ボリューム１１５に格納する。なお、本実施の形態において作成される差分スナップショットについては、後で図５を参照して詳細に説明する。
【００２３】
スナップショット削除プログラム２０２は、ホスト１１１からの指示に従って、スナップショットを削除する。このとき、スナップショット削除プログラム２０２は、不要となる差分データを差分ボリューム１１５から削除する。
【００２４】
スナップショット転送プログラム２０３は、ホスト１１１からの指示に従って、差分スナップショットを副サイト２のストレージ装置１２２に転送する。
【００２５】
アクセス監視プログラム２０５は、ホスト１１１からのアクセス状況を溢れ監視テーブル２０９に登録する。そして、差分ボリューム１２５においてデータが溢れそうになった場合（言い換えると、差分ボリューム１２５の容量が不足しそうになった場合）、中間スナップ削除プログラム２０７又は差分ボリューム拡張プログラム２０８を呼び出して、溢れを防ぐための処理を実行させる。
【００２６】
差分監視プログラム２０６は、副サイト２の差分ボリューム１２５を監視する。具体的には、副サイト２の差分監視プログラム２０６が、差分ボリューム１２５の空きサイズを定期的に調査して、その結果を正サイト１のストレージ装置１１２に通知する。その通知を受信した正サイト１の差分監視プログラム２０６は、その通知に含まれる空きサイズを溢れ監視テーブル２０９に登録する。
【００２７】
正サイト１の中間スナップ削除プログラム２０７は、アクセス監視プログラム２０５の指示に従って、正サイト１のストレージ装置１１２においてリモートコピーに必須でない中間的なスナップショットを削除する。ここで、中間的なスナップショットとは、最も古い世代のスナップショット及び最も新しい世代のスナップショットを除いた中間の世代の一つ以上のスナップショットである。中間的なスナップショットが削除されると、中間的なスナップショットのみを構成するデータが差分ボリューム１１５から削除されるため、正サイト１から副サイト２に転送されるデータ量が削減される。その結果、副サイト側の差分ボリューム１２５に格納されるデータ量が削減され、データ溢れが防止される（図５参照）。
【００２８】
あるいは、副サイト２の中間スナップ削除プログラム２０７が、正サイト１のアクセス監視プログラム２０５の指示に従って、副サイト２のストレージ装置１２２において中間的なスナップショットを削除してもよい。その結果、中間的なスナップショットのみを構成するデータが差分ボリューム１２５から削除されるため、差分ボリューム１２５の空きサイズが増える。
【００２９】
差分ボリューム拡張プログラム２０８は、アクセス監視プログラム２０５の指示に従って、副サイト２のストレージ装置１２２において差分ボリューム１２５の物理サイズを拡張する。その結果、差分ボリューム１２５の空きサイズが増える。
【００３０】
図３は、本発明の実施の形態の溢れ監視テーブル２０９の説明図である。
【００３１】
溢れ監視テーブル２０９の各行は、ボリューム名３０１、最終転送時刻３０２、更新サイズ３０３及び空きサイズ３０４の４つのフィールドから構成される。ボリューム名３０１には、正ボリューム１１４の名称が登録される。図３の例では、ボリューム名３０１として「ＶＯＬ１」及び「ＶＯＬ２」が登録されている。これは、正サイト１のストレージ装置１１２が二つの正ボリューム１１４を備え、それぞれの名称が「ＶＯＬ１」及び「ＶＯＬ２」であることを示す。最終転送時刻３０２には、正サイト１から副サイト２への転送が終了した最新スナップショットの作成時刻が登録される。更新サイズ３０３には、正ボリューム１１４に対する更新データのうち、まだ副サイト２へ転送されていないデータ（言い換えると、正ボリューム１１４に書き込まれたデータのうち、これから副サイト２に転送されるデータ）のサイズが登録される。空きサイズ３０４には、副サイト２における差分ボリューム１２５の空きサイズが登録される。
【００３２】
例えば、図３の１番目の行は、正ボリューム「ＶＯＬ１」に関して最近転送したスナップショットが０９：００に作成したスナップショットであり、０９：００以降にＶＯＬ１に書き込まれたデータのうち、まだ副サイト２に転送されていないデータのサイズが１３メガバイト（ＭＢ）であり、副サイト２の差分ボリューム１２５の空きサイズが１００ＭＢであることを示す。
【００３３】
正サイト１は、副サイト２にどの時点までのスナップショットを転送したか、及び、まだ転送されていない正ボリューム１１４への更新データの量を管理するために、溢れ監視テーブル２０９を用いる。一方、副サイト２は、差分ボリューム１２５の空きサイズを管理するために、溢れ監視テーブル２０９を用いる。これらの二つの溢れ監視テーブル２０９の情報を比較することによってデータ溢れを検出できる。なお、ボリューム名３０１としては、ボリュームの名称の代わりに、ボリュームの識別子を用いることができる。
【００３４】
次に、差分スナップショットを作成する手順について、図４及び図５を参照して説明する。
【００３５】
図４は、本発明の実施の形態の差分管理テーブル２１０の説明図である。
【００３６】
図４は、例として、第１世代から第３世代までのスナップショットが作成された場合の差分管理テーブル２１０を示す。この場合、差分管理テーブル２１０の各行は、ブロック番号４０１、第１世代差分格納先４０２、第２世代差分格納先４０３及び第３世代差分格納先４０４の四つのフィールドから構成される。第４世代以降のスナップショットが作成される場合、第４世代差分格納先（図示省略）等のフィールドがさらに追加される。
【００３７】
ブロック番号４０１には、運用ボリュームのブロックに付されたブロック番号が登録される。ここで、ブロックとは、論理ボリューム内に設定される所定の容量の記憶領域（いわゆる論理ブロック）である。各ブロックは、論理ボリューム内で一意のブロック番号によって識別される。
【００３８】
第１世代差分格納先４０２から第３世代差分格納先４０４には、各世代のスナップショットと現在の運用ボリュームとの差分のデータが格納されている差分ボリューム内のブロックの番号が登録される。
【００３９】
差分管理テーブル２１０に登録される値の例については、図５を参照してさらに詳細に説明する。
【００４０】
図５は、本発明の実施の形態の計算機システムにおいて作成される差分スナップショットの説明図である。
【００４１】
図５には、運用ボリューム５０１、差分ボリューム５０２、第１世代のスナップショット５０３、第２世代のスナップショット５０４及び第３世代のスナップショット５０５を示す。スナップショット５０３等は、運用ボリューム５０１及び差分ボリューム５０２に格納されたブロックの組み合わせによって実現されるスナップショットである。以下の説明は、例として、時刻９：００に第１世代のスナップショット５０３が作成され、時刻１０：００に第２世代のスナップショット５０４が作成され、時刻１１：００に第３世代のスナップショット５０５が作成されたことを前提とする。
【００４２】
運用ボリューム５０１は、図１等に示す正ボリューム１１４又は副ボリューム１２４に相当する。一方、差分ボリューム５０２は、図１等に示す差分ボリューム１１５又は１２５に相当する。運用ボリューム５０１が正ボリューム１１４に相当する場合、差分ボリューム５０２は差分ボリューム１１５に相当する。
【００４３】
図５の運用ボリューム５０１及び差分ボリューム５０２は、三つのブロック５１１によって構成される。各ブロック５１１の左側に表示された数字は、各ブロック５１１に付されたブロック番号である。以下の説明において、ブロック番号が１であるブロック５１１を第１ブロック５１１、ブロック番号が２であるブロック５１１を第２ブロック５１１、ブロック番号が３であるブロック５１１を第３ブロック５１１と記載する。なお、運用ボリューム５０１及び差分ボリューム５０２は、一つ以上の任意の数のブロック５１１によって構成されてもよい。
【００４４】
時刻９：００において、運用ボリューム５０１の第１から第３ブロック５１１には、それぞれ、値がＡ、Ｂ及びＣなるデータが格納されている。一方、時刻９：００において、差分ボリューム５０２の第１から第３ブロック５１１は、空きブロックである。すなわち、この時点で、差分ボリューム５０２の各ブロック５１１にはデータが格納されていない。
【００４５】
時刻９：００において、第１世代のスナップショットが作成される。このとき、スナップショット作成プログラム２０１は、差分管理テーブル２１０において、第１世代差分格納先４０２のフィールドを確保する（図４参照）。
【００４６】
スナップショットが作成された後、次の世代のスナップショットが作成されるまでの間に運用ボリュームのいずれかのブロック５１１のデータを更新する書き込みがあった場合、そのブロック５１１に更新データが格納されると共に、スナップショットが作成された時点でそのブロック５１１に格納されていたデータが差分ボリューム５０２のいずれかのブロック５１１に退避格納される。そして、その格納先の差分ボリューム５０２のブロック５１１の番号が、差分管理テーブル２１０の第１世代差分格納先４０２のフィールドに登録される。
【００４７】
具体的には、例えば、時刻９：１０に、運用ボリューム５０１の第１ブロック５１１に値Ａ’が書き込まれる。このとき、差分ボリューム５０２の第１ブロック５１１には、第１世代のスナップショット作成時点（９：００）における運用ボリューム５０１の第１ブロック５１１の値Ａが退避格納される。そして、差分管理テーブル２０１には、第１ブロック５１１のブロック番号４０１の値「１」に対応する第１世代差分格納先４０２として、値Ａの格納先である差分ボリューム５０２の第１ブロック５１１を示すブロック番号「１」が登録される。
【００４８】
その後、時刻９：２０に運用ボリューム５０１の第１ブロックに値Ａ’’が書き込まれる。この時点では、既に値Ａが退避格納されているため、差分ボリューム５０２及び差分管理テーブル２１０は更新されず、運用ボリューム５０１の第１ブロック５１１に値Ａが格納される。
【００４９】
その後、時刻１０：００において、第２世代のスナップショットが作成される。このとき、スナップショット作成プログラム２０１は、差分管理テーブル２１０において、第２世代差分格納先４０３のフィールドを確保する。
【００５０】
その後、時刻１０：１０に運用ボリューム５０１の第１ブロックに値Ａ’’’が書き込まれる。このとき、差分ボリューム５０２の第２ブロック５１１には、第２世代のスナップショット作成時点（１０：００）における運用ボリューム５０１の第１ブロック５１１の値Ａ’’が退避格納される。そして、差分管理テーブル２０１には、第１ブロック５１１のブロック番号４０１の値「１」に対応する第２世代差分格納先４０３として、値Ａ’’の格納先である差分ボリューム５０２の第２ブロック５１１を示すブロック番号「２」が登録される。
【００５１】
その後、時刻１１：００において、第３世代のスナップショットが作成される。このとき、スナップショット作成プログラム２０１は、差分管理テーブル２１０において、第３世代差分格納先４０４のフィールドを確保する。図４に示す差分管理テーブル２１０に登録された値は、上記の例の時刻１１：００における値である。また、図５に示すボリューム及びスナップショットの値も、上記の例の時刻１１：００における値である。
【００５２】
以上のようにして作成されたスナップショットは、差分管理テーブル２１０に基づいて、運用ボリューム５０１のブロック５１１と、差分ボリューム５０２のブロック５１１との組み合わせによって構成される仮想的な論理ボリュームである。上記の例では、差分管理テーブル２１０において、ブロック番号４０１の値「１」に対応する第１世代差分格納先４０２の値が「１」であり、ブロック番号４０１の値「２」及び「３」に対応する第１世代差分格納先４０２は空（無効値「−」）である。この場合、第１世代のスナップショット５０３は、差分ボリューム５０２の第１ブロック５１１、運用ボリューム５０１の第２ブロック５１１、及び、運用ボリューム５０１の第３ブロック５１１によって構成される。この場合、各ブロック５１１の値は、それぞれ、「Ａ」、「Ｂ」及び「Ｃ」である。
【００５３】
同様にして、ブロック番号４０１の値「１」に対応する第２世代差分格納先４０３の値が「２」であるため、第２世代のスナップショット５０４は、差分ボリューム５０２の第２ブロック５１１、運用ボリューム５０１の第２ブロック５１１、及び、運用ボリューム５０１の第３ブロック５１１によって構成される。各ブロック５１１の値は、それぞれ、「Ａ’’」、「Ｂ」及び「Ｃ」である。
【００５４】
第３世代差分格納先４０４の値は全て空であるため、第３世代のスナップショット５０５は、運用ボリューム５０１と同一となる。
【００５５】
ここで、中間スナップ削除プログラム２０７が実行する処理について説明する。例えば、第２世代スナップショット５０４を削除する場合、第２世代スナップショット５０４の生成のみに必要な差分データ「Ａ’’」は不要となる。このため、中間スナップ削除プログラム２０７は、差分ボリューム５０２の第２ブロック５１１を解放し「空き」とする。さらに、差分管理テーブル２１０の第２世代差分格納先４０３の値を「―」とする。このようにして中間的なスナップショットを削除することによって、差分ボリューム５０２のデータ溢れが防止される。
【００５６】
例えば、図５に示す三つの世代のスナップショットが生成された正サイト１において差分コピー処理が実行された場合、まず、第１世代のスナップショット５０３と第２世代のスナップショット５０４との差分データ「Ａ’’」が副サイト２に転送され、次に、第２世代のスナップショット５０４と第３世代のスナップショット５０５との差分データ「Ａ’’’」が副サイト２に転送される。副サイト２では、これらのデータによって上書きされた二つのデータ「Ａ」及び「Ａ’’」が差分ボリューム１２５に格納される。
【００５７】
しかし、中間スナップ削除プログラム２０７が第２世代のスナップショット５０４を削除した場合、第１世代のスナップショット５０３と第３世代のスナップショット５０５との差分データ「Ａ’’’」のみが副サイト２に転送される。この場合、「Ａ’’’」によって上書きされたデータ「Ａ」が差分ボリューム１２５に格納されるが、データ「Ａ’’」は、転送されていないため、差分ボリューム１２５に格納されない。このように、中間スナップショットを削除することによって副サイト２の差分ボリューム１２５に格納されるべきデータが削減され、データ溢れが防止される。
【００５８】
一方、図５に示す三つの世代のスナップショットが生成された副サイト２において中間スナップ削除プログラム２０７が実行された場合、第２世代のスナップショット５０４が削除される。その結果、第２世代のスナップショット５０４のみに含まれるデータ「Ａ’’」が差分ボリューム５０２（すなわち差分ボリューム１２５）から削除される。その結果、差分ボリューム１２５の空き容量が増加し、データ溢れが防止される。
【００５９】
このような中間スナップショットの削除は、後で説明する図９のステップ９０３において実行される。
【００６０】
図６は、本発明の実施の形態のスナップショット転送プログラム２０３のフローチャートである。
【００６１】
図６のフローチャートは、プロセッサ１１６がスナップショット転送プログラム２０３を実行することによって実現される処理を示す。
【００６２】
最初に、ステップ６０１において、プロセッサ１１６が、ホスト１１１からストレージ装置１１２に対して送信されたスナップショット転送指令を受信し、引数としてボリューム名Ｖ及び転送するスナップショットの作成時刻Ｔ１を取得する。
【００６３】
ステップ６０２では、プロセッサ１１６が、溢れ監視テーブル２０９からボリューム名３０１の値が「Ｖ」である行Ｌを検索する。そして、プロセッサ１１６は、行Ｌの最終転送時刻３０２の値Ｔ２を取得する。
【００６４】
ステップ６０３では、プロセッサ１１６が、ボリュームＶの二つのスナップショットの差分データを副サイト２のストレージ装置１２２に送信する。ここで、ボリュームＶの二つのスナップショットとは、時刻Ｔ１に作成されたスナップショット及び時刻Ｔ２に作成されたスナップショットである。例えば、スナップショット５０３及び５０４が作成され（図５参照）、最終転送時刻３０２の値Ｔ２が９：００である場合（図３参照）、９：００に作成されたスナップショット５０３のデータは既に副サイト２に転送されているが、その後に更新されたデータＡ’’は、まだ副サイト２に転送されていない。このため、プロセッサ１１６は、副サイト２のストレージ装置１２２に対して、差分データを副ボリューム１２４に書き込むことを指示する。ステップ６０３において差分データとは、時刻Ｔ１及びＴ２における二つのスナップショットの差分データであり、上記の具体例ではデータＡ’’である。
【００６５】
さらに、プロセッサ１１６は、副サイト２のストレージ装置１２２に対して、スナップショットを作成し、その後の副サイト２の差分ボリューム１２５の空きサイズを通知するように指示する。スナップショットは、プロセッサ１１６がスナップショット作成プログラム２０１を実行することによって作成される。
【００６６】
ステップ６０４では、プロセッサ１１６が、行Ｌの最終転送時刻フィールド３０２の値をＴ１に変更する。さらに、プロセッサ１１６は、行Ｌの更新サイズフィールド３０３の値から、ステップ６０３で転送した差分データのサイズを減算する。
【００６７】
以上で、スナップショット転送プログラム２０３の処理が終了する。
【００６８】
図７は、本発明の実施の形態のアクセス監視プログラム２０５のフローチャートである。
【００６９】
図７のフローチャートは、プロセッサ１１６がアクセス監視プログラム２０５を実行することによって実現される処理を示す。
【００７０】
最初に、ステップ７０１において、プロセッサ１１６が、ホスト１１１からストレージ装置１１２に対する新たな更新を検出する。ここで、新たな更新とは、ホスト１１１からストレージ装置１１２に対して発行された正ボリューム１１４へのＷＲＩＴＥ要求である。新たな更新が検出されると、プロセッサ１１６は、正ボリューム１１４の名称「Ｖ」をキーとして溢れ監視テーブル２０９を検索し、その結果、ボリューム名フィールド３０１の値が「Ｖ」である行Ｌを得る。
【００７１】
ステップ７０２では、プロセッサ１１６が、行Ｌの更新サイズ３０３の値Ｕを更新データのサイズだけ増やす。
【００７２】
ステップ７０３では、プロセッサ１１６が、行Ｌの空きサイズ３０４の値Ｆを得る。
【００７３】
ステップ７０４では、プロセッサ１１６が、差分ボリューム１２５においてデータ溢れが発生するか否かを予測する。具体的には、プロセッサ１１６は、Ｆ−Ｕを計算し、その結果が閾値１０ＭＢよりも小さいか否かを判定する。Ｆ−Ｕが１０ＭＢより小さい場合は、差分ボリューム１２５の容量が不足する結果、差分ボリューム１２５からデータが溢れることが予測される。この場合、データの溢れを防ぐ処理を実行するためにステップ７０５に進む。一方、Ｆ−Ｕが１０ＭＢ以上である場合は、差分ボリューム１２５の空き容量に十分な余裕があるため、まだデータ溢れが発生しないと予測される。この場合、プロセッサ１１６は、処理を終了する。なお、本実施の形態では、ステップ７０４の閾値を１０ＭＢとしたが、この閾値は１０ＭＢ以外の値であってもよい。
【００７４】
ステップ７０５から７０８は、差分ボリューム１２５においてデータの溢れが発生することを防ぐためにプロセッサ１１６が実行する処理である。
【００７５】
ステップ７０５では、プロセッサ１１６が、更新の処理を１０ミリ秒遅らせる。ここで、更新の処理とは、ホスト１１１が発行したデータのＷＲＩＴＥ要求に応じて、プロセッサ１１６が正ボリューム１１４にデータを書き込む処理である。ステップ７０５が実行される結果、例えば、プロセッサ１１６が正ボリューム１１４にデータを書き込む処理に１０ミリ秒の待ち時間が挿入される。その結果、プロセッサ１１６がＷＲＩＴＥ要求を受信してから書き込み処理が終了するまでの時間が１０ミリ秒延長される。本実施の形態では、ステップ７０５の遅延時間を１０ミリ秒としたが、この遅延時間は１０ミリ秒以外の値であってもよい。ステップ７０５において更新の処理が遅延することによって、データの溢れが防止される。
【００７６】
ステップ７０６では、プロセッサ１１６が、中間スナップ削除プログラム２０７を、Ｖを引数として呼び出す。中間スナップ削除プログラム２０７は、データの溢れを防ぐためにプロセッサ１１６によって実行される（図９参照）。
【００７７】
ステップ７０７では、プロセッサ１１６が、差分ボリューム拡張プログラム２０８を、Ｖを引数として呼び出す。差分ボリューム拡張プログラム２０８は、データの溢れを防ぐためにプロセッサ１１６によって実行される（図１０参照）。
【００７８】
ステップ７０８では、プロセッサ１１６が、ホスト１１１に、データ溢れのおそれがあることを示す警告を送信する。ホスト１１１のユーザは、この警告を参照して、データ溢れを防ぐための処理を実行してもよい。
【００７９】
プロセッサ１１６は、上記のステップ７０５から７０８の四つの処理全てを実行してもよい。あるいは、プロセッサ１１６は、上記の四つの処理のうち任意の一つ又は複数を実行してもよい。プロセッサ１１６は、上記の四つの処理の一部又は全部を任意の順序で実行してもよい。
【００８０】
図８は、本発明の実施の形態の差分監視プログラム２０６のフローチャートである。
【００８１】
図８のフローチャートは、プロセッサ１１６が差分監視プログラム２０６を実行することによって実現される処理を示す。差分監視プログラム２０６は、ストレージ装置１２２に電源が投入された時点から起動し、その後、終了せずに動作し続ける。
【００８２】
最初に、ステップ８０１において、プロセッサ１１６が、副サイト２のストレージ装置１２２が備えるすべての差分ボリューム１２５の空きサイズを調査する。
【００８３】
ステップ８０２では、プロセッサ１１６が、ステップ８０１で取得した空きサイズを正サイト１のストレージ装置１１２に通知し、溢れ監視テーブル２０９を更新させる。
【００８４】
ステップ８０３では、プロセッサ１１６が、３０秒間スリープし、その後ステップ８０１へ戻る。スリープの時間は、３０秒間以外の任意の時間であってもよい。
【００８５】
上記の図６から図８に示した一連の処理が、データ溢れリスクを検出する処理である。
【００８６】
次に、データ溢れリスクが検出されたときに溢れ防止処理として実行される処理について、図９及び図１０を参照して説明する。
【００８７】
図９は、本発明の実施の形態の中間スナップ削除プログラム２０７のフローチャートである。
【００８８】
図９のフローチャートは、プロセッサ１１６が中間スナップ削除プログラム２０７を実行することによって実現される処理を示す。
【００８９】
最初に、ステップ９０１において、プロセッサ１１６が、アクセス監視プログラム２０５のステップ７０６から呼び出され、引数としてボリューム名「Ｖ」を取得する。
【００９０】
ステップ９０２では、プロセッサ１１６が、溢れ監視テーブル２０９において、ボリューム名３０１の値が「Ｖ」である行Ｌを検索し、行Ｌの最終転送時刻３０２の値「Ｔ」を取得する。
【００９１】
ステップ９０３では、プロセッサ１１６が、ボリュームＶのスナップショットのうち、作成時刻がＴより新しく、かつ、最新でないもの全てを削除する。具体的には、プロセッサ１１６は、上記の条件に合致する全てのスナップショットを対象としてスナップショット削除プログラム２０２を呼び出す。
【００９２】
正サイト１のスナップショットを削除する場合（図５参照）、プロセッサ１１６は、正サイト１のスナップショット削除プログラム２０２を呼び出す。一方、副サイト２のスナップショットを削除する場合、プロセッサ１１６は、副サイト２のコントローラ１２３に指示を送信することによって副サイト２のスナップショット削除プログラム２０２を呼び出す。
【００９３】
正サイト１のスナップショット削除プログラム２０２が呼び出された場合、そのスナップショット削除プログラム２０２は、差分ボリューム１１５から、上記の条件に合致するスナップショットのみに含まれるデータを全て削除する。その結果、正サイト１から副サイト２に転送されるデータの量が削減される。
【００９４】
一方、副サイト２のスナップショット削除プログラム２０２が呼び出された場合、そのスナップショット削除プログラム２０２は、差分ボリューム１２５から、上記の条件に合致するスナップショットのみに含まれるデータを全て削除する。その結果、差分ボリューム１２５の空き容量が増加する。このようにして、差分ボリューム１２５におけるデータ溢れが防止される。
【００９５】
図１０は、本発明の実施の形態の差分ボリューム拡張プログラム２０８のフローチャートである。
【００９６】
図１０のフローチャートが示す処理は、プロセッサ１１６が差分ボリューム拡張プログラム２０８を実行することによって実現される処理を示す。
【００９７】
最初に、ステップ１００１において、プロセッサ１１６が、アクセス監視プログラム２０５のステップ７０７から呼び出され、引数としてボリューム名「Ｖ」を取得する。
【００９８】
ステップ１００２では、プロセッサ１１６が、副サイト２のストレージ装置１２２のコントローラ１２３に対して、ボリュームＶのデータのコピー先の副ボリューム１２４に対応する差分ボリューム１２５のボリュームサイズ拡張を指示する。その結果、差分ボリューム１２５の空きサイズが増加し、データ溢れが防止される。
【００９９】
以上、ストレージ装置１１２及び１２２の詳細を説明した。次に、このストレージ装置１１２及び１２２を用いたリモートコピーの運用の流れを説明し、さらに、運用の中における溢れ検出の処理の位置付けを示す。以下の説明は、次のような運用シナリオを前提としている。
【０１００】
まず、時刻０９：００までにリモートコピーの準備をする（図１１参照）。次に、時刻０９：０１から運用を開始して、０９：５９まで通常の運用を行い、時刻１０：００において差分コピー処理が発生する（図１２参照）。この差分コピー処理は、定期的（例えば１時間毎）に実行されるものである。最後に、時刻１０：０１〜１０：０９まで通常の運用を行った後、時刻１０：１０に溢れを監視する処理を説明する（図１３参照）。
【０１０１】
図１１は、本発明の実施の形態におけるリモートコピーの準備の説明図である。
【０１０２】
具体的には、図１１は、時刻０９：００におけるリモートコピーの準備（すなわち全コピー）の流れを例として示す。
【０１０３】
図１１に示すように、二つのストレージ装置１１２及び１２２がネットワーク３によって接続される。正サイト１のストレージ装置１１２がコピー元、副サイト２のストレージ装置１２２がコピー先である。正サイト１では、ホスト１１１が正ボリューム１１０１（Ｖｏｌ１）を使用している。つまり、正ボリューム１１０１が運用ボリュームである。正サイト１の正ボリューム１１０１に格納されたデータは、これから説明する手順で、副サイト２の副ボリューム１１０３（Ｖｏｌ１）にリモートコピーされる。なお、正ボリューム１１０１及び副ボリューム１１０３は、図１及び図２で示した正ボリューム１１４及び副ボリューム１２４にそれぞれ相当するが、手順の説明の便宜上、符号が変更されている。なお、作成されたスナップショットの差分データは、各ストレージ１１２及び１２２の差分ボリューム１１５及び１２５に格納される。
【０１０４】
まず、正サイト管理者が、ホスト１１１から、正ボリューム１１０１のスナップショット１１０２の作成を指示する。この指示を受けたストレージ装置１１２のスナップショット作成プログラム２０１は、ボリューム１１０１（Ｖｏｌ１）の時刻０９：００のスナップショット１１０２を作成する。
【０１０５】
次に、正サイト管理者は、ホスト１１１からストレージ装置１１２に全コピーを指示する。この指示を受けたストレージ装置１１２は、スナップショット１１０２の内容を全て副サイト２のストレージ装置１２２に転送し、副サイト２の副ボリューム１１０３に書き込む。
【０１０６】
最後に、副サイト管理者が、ホスト１２１からストレージ装置１２２にスナップショットの作成を指示する。副サイト２のストレージ装置１２２は、スナップショット作成プログラム２０１を起動して、副ボリューム１１０３のスナップショット１１０４を作成する。この手順が完了した時点で、二つの正副サイトは時刻０９：００における共通のスナップショット１１０２及び１１０４を持つ。この時点で、副サイト２の副ボリューム１１０３の内容は、０９：００時点の正ボリューム１１０１の内容と同等である。言い換えると、副ボリューム１１０３の内容は正サイト１の正ボリューム１１０１と同期する。
【０１０７】
最初に上記のような全コピーを行うことによって、正副サイト共通のスナップショット１１０２及び１１０４を取得することができる。このため、以後、これらの共通スナップショット１１０２及び１１０４を利用した差分コピーによるリモートコピーの運用が可能となる。正副サイトのストレージ装置１１２及び１２２は、溢れ監視テーブル２０９に、ボリュームＶｏｌ１に対応する行を追加し、追加された行のボリューム名３０１の値として「Ｖｏｌ１」を、最終転送時刻３０２の値として「０９：００」を、それぞれ登録する。
【０１０８】
ここで注意すべき点は、ボリュームの全データを転送する全コピー処理は非常に時間のかかる処理であるということである。この全コピー処理が終わるまでの間、ディザスタリカバリはできない。正副サイトを結ぶネットワーク３として高速なものを使うことによって、全コピー処理を高速化することができる。しかし、そのような高速なネットワークは、後述する普段の差分コピー運用においてはオーバスペックとなり、ネットワークの利用効率が低くなる。すなわち、リモートコピーの運用コストが上昇してしまう。
【０１０９】
なお、図１１の正ボリューム１１０１及び副ボリューム１１０３は、図５の運用ボリューム５０１に相当する。また、図１１のスナップショット１１０２及び１１０４は、図５の第１世代のスナップショット５０３に相当する。
【０１１０】
図１２は、本発明の実施の形態におけるリモートコピーの運用の説明図である。
【０１１１】
具体的には、図１２は、時刻１０：００におけるリモートコピーの運用の流れを例として示す。なお、図１２において、正ボリューム１２０１及び副ボリューム１２０４は、図１及び図２で示した正ボリューム１１４及び副ボリューム１２４にそれぞれ相当する。
【０１１２】
正サイト１では、１時間毎にスナップショット作成プログラム２０１及びスナップショット転送プログラム２０３が起動され、リモートコピー処理が周期的に実行される。このリモートコピー処理は、次に示す手順によって、正サイト１の正ボリューム１２０１の内容の一部を副サイト２の副ボリューム１２０４にコピーし、副ボリューム１２０４の内容を正ボリューム１２０１の内容に同期させる。このコピーを差分コピーという。
【０１１３】
まず、正サイト１において、スナップショット作成プログラム２０１が正ボリューム１２０１の時刻１０：００時点のスナップショット１２０３を作成する。
【０１１４】
次に、正サイト１において、スナップショット転送プログラム２０３が起動される。例えば、スナップショット作成プログラム２０１がスナップショット作成処理を完了したことを契機として、このスナップショット転送プログラム２０３が起動してもよい。
【０１１５】
スナップショット転送プログラム２０３は、図６において説明したように、時刻９：００時点のスナップショット１２０２と時刻１０：００時点のスナップショット１２０３との差分データを副サイト２のストレージ装置１２２に転送する。例えば、時刻９：００時点のスナップショット１２０２が図５の第１世代のスナップショット５０３に相当し、時刻１０：００時点のスナップショット１２０３が図５の第２世代のスナップショット５０４に相当する場合、両者の差分データ「Ａ’’」が副サイト２に転送される。
【０１１６】
スナップショット転送プログラム２０３は、溢れ監視テーブル２０９の正ボリューム１２０１に対応する行の最終転送時刻３０２を「１０：００」に更新する。
【０１１７】
この手順が完了した時点で、副ボリューム１２０４の内容は１０：００時点の正ボリュームの内容と同等になる。その結果、正副サイトに共通するスナップショットは、時刻０９：００のスナップショット１２０２及び１２０５と、時刻１０：００のスナップショット１２０３及び１２０６の２組が存在する。
【０１１８】
以上のように、共通スナップショットを基点にすることによって差分コピーを実行することができ、さらに新しい共通スナップショットの組を取得することができる。新しい共通スナップショットの組を取得した後、古い共通スナップショットの組を削除しても、以降の差分コピーを実行することができる。ここで注意すべきは、正ボリューム１２０１を更新し続けるのにもかかわらず古いスナップショットを削除ししないままであれば、いずれ差分ボリューム１１５及び１２５は空き容量がなくなり、すべてのスナップショットが失われるということである。スナップショットが失われると、再び全コピーを実行する必要がある。その結果、ディザスタリカバリを行えない危険な状態が長期間続き、業務の継続性が著しく低下する。
【０１１９】
図１３は、本発明の実施の形態の溢れ監視の説明図である。
【０１２０】
例として、図１３では、時刻１０：１０における通常の溢れ監視の手順を説明する。溢れ監視は、正サイト１におけるホスト１１１からの更新１３０１を契機として実行される場合と、副サイト２において差分監視プログラム２０６によって定期的に実行される場合がある。以下、これらの二つの場合について説明する。
【０１２１】
最初に、ホスト１１１による更新を契機として溢れ監視が実行される場合について説明する。
【０１２２】
正サイト１においてホスト１１１から正ボリューム１１４に対する更新１３０１が発生すると、アクセス監視プログラム２０５が起動する。アクセス監視プログラム２０５は、更新１３０１のサイズ（すなわち、更新によって書き込まれるデータのサイズ）を調査する。そして、更新先のボリュームに対応する溢れ監視テーブル２０９の行の更新サイズ３０３の値に、調査された更新サイズを加算する（１３０２）。その際、アクセス監視プログラム２０５は、空きサイズ３０４も調査する。そして、ステップ７０４の計算式によって十分な空きサイズがない（すなわち、溢れの危険がある）と判定された場合、アクセス監視プログラム２０５は中間スナップ削除プログラム２０７と差分ボリューム拡張プログラム２０８を呼び出し（図７のステップ７０６及び７０７参照）、副サイト２の差分ボリューム１２５の空きサイズを増やす。併せて、更新１３０１の処理を遅らせることによって、上記の対策が完了する前に溢れが発生することを防ぐ（図７のステップ７０５参照）。
【０１２３】
次に、定期的に溢れ監視が実行される場合について説明する。
【０１２４】
副サイト２において、差分監視プログラム２０６は定期的に起動し、ストレージ装置１２２内の全ての差分ボリューム１２５を調査し、それらの空きサイズを取得する（１３０３）。差分監視プログラム２０６は、取得した空きサイズを正サイト１のストレージ装置１１２に通知する（１３０４）。ストレージ装置１１２のアクセス監視プログラム２０５は、副サイト２のストレージ装置１２２から受信した空きサイズを、ストレージ装置１１２の溢れ監視テーブル２０９の空きサイズ３０４に加算する（１３０５）。
【０１２５】
正サイト１の差分ボリューム１１５と副サイト２の差分ボリューム１２５のサイズが同じであり、かつ、正サイト１と副サイト２が同じ世代のスナップショットを保持する限り、副サイト２の差分ボリューム１２５でデータ溢れが発生する前に、必ず正サイト１の差分ボリューム１１５でデータ溢れが発生する。しかし、通常、正サイト１のスナップショットは、差分データのみを転送してリモートコピーを効率化することを目的として作成される。一方、副サイト２は、バックアップデータを世代ごとに管理する。このため、通常、副サイト２は、正サイト１より多くの世代のスナップショットを保持する。このため、正サイト１の差分ボリューム１１５に十分な空きサイズがあるにも関らず、副サイト２の差分ボリューム１２５においてデータ溢れが発生する場合がある。
【０１２６】
図１３に示すように、本発明の実施の形態によれば、副サイト２において、差分ボリューム１２５の空きサイズが監視され、その情報が正サイト１に送信される。正サイト１では、副サイト２から送信された空きサイズと、これから副サイト２に転送しようとする差分データのサイズとに基づいて、差分ボリューム１２５におけるデータ溢れを、実際に発生する前に予測する。そして、更新処理の遅延、中間スナップショットの削除、差分ボリューム１２５のサイズの追加、又は、ホスト１１１への通知等を実行することによって、データ溢れの発生が防止される。
【０１２７】
以上の本発明の実施の形態は、例えば、ディザスタリカバリシステムを構築可能なリモートコピー機能を備えたストレージ装置及びディザスタリカバリに本発明を適用することができる。本発明の実施の形態は、特に、ＮＡＳ等に適用することができる。
【図面の簡単な説明】
【０１２８】
【図１】本発明の実施の形態の計算機システムのブロック図である。
【図２】本発明の実施の形態のストレージ装置の詳細な内部構成を示すブロック図である。
【図３】本発明の実施の形態の溢れ監視テーブルの説明図である。
【図４】本発明の実施の形態の差分管理テーブルの説明図である。
【図５】本発明の実施の形態の計算機システムにおいて作成される差分スナップショットの説明図である。
【図６】本発明の実施の形態のスナップショット転送プログラムのフローチャートである。
【図７】本発明の実施の形態のアクセス監視プログラムのフローチャートである。
【図８】本発明の実施の形態の差分監視プログラムのフローチャートである。
【図９】、本発明の実施の形態の中間スナップ削除プログラムのフローチャートである。
【図１０】本発明の実施の形態の差分ボリューム拡張プログラムのフローチャートである。
【図１１】本発明の実施の形態におけるリモートコピーの準備の説明図である。
【図１２】本発明の実施の形態におけるリモートコピーの運用の説明図である。
【図１３】本発明の実施の形態の溢れ監視の説明図である。
【符号の説明】
【０１２９】
１  正サイト
２  副サイト
３  ネットワーク
１１１、１２１  ホスト
１１２、１２２  ストレージ装置
１１３、１２３  コントローラ
１１４  正ボリューム（正ＶＯＬ）
１１５、１２５  差分ボリューム（差分ＶＯＬ）
１１６  プロセッサ
１１７  メモリ
１２４  副ボリューム（副ＶＯＬ）
【図１】
0004796854.tif 000002
【図２】
0004796854.tif 000003
【図３】
0004796854.tif 000004
【図４】
0004796854.tif 000005
【図５】
0004796854.tif 000006
【図６】
0004796854.tif 000007
【図７】
0004796854.tif 000008
【図８】
0004796854.tif 000009
【図９】
0004796854.tif 000010
【図１０】
0004796854.tif 000011
【図１１】
0004796854.tif 000012
【図１２】
0004796854.tif 000013
【図１３】
0004796854.tif 000014