(57)【要約】【課題】  本発明は、コピーオンライトスナップショットが行われたときに、どの程度のプリザベーションメモリーエリアが必要であるかを予測する方法とシステムを提供する。【解決手段】  ストレージシステムにおいて１個ないしはそれ以上の論理ボリュームのスナップショットを生成するために、コピーオンライトスナップショットプロセシングがストレージシステム上で実行される。ストレージシステムへ行われた書き込みＩ／Ｏ動作がある時間帯の間監視される。この監視に基づき、スナップショットデータを保存するために必要なストレージスペースのサイズの予測値を計算出来る。この情報はスナップショットプロセスに十分なストレージスペースを提供するために用いることが出来る。【選択図】  図１
2006268830.tif 000002
【特許請求の範囲】
【請求項１】
ある時間帯における複数の書き込みリクエストを分析するステップと、
前記書き込みリクエストのそれぞれについて、
もし前記書き込みリクエストが対象とする論理ボリューム上のデータブロックがマーク付きであるとは識別されない場合は、該データブロックをマーク付きと識別するステップと、
前記時間帯が経過した後にマーク付きと識別されたデータブロックの数を集計するステップと、
前記時間帯の間に集計された前記マーク付きデータブロックの数に基づき前記論理ボリュームのスナップショットを維持するための記憶容量の消費速度を提示するステップと、
から成ることを特徴とする、論理ボリュームのスナップショットを維持するための記憶容量を予測する方法。
【請求項２】
もし前記論理ボリュームのスナップショットを維持するための記憶容量の消費が所定のレベルを超える場合には警告メッセージを表示するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記時間帯の終わりに、後の時刻において前記論理ボリュームのスナップショットを維持するための記憶容量の消費を示す予測値を計算するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
もし前記書き込みリクエストが対象とする前記論理ボリューム上の前記データブロックがマーク付きと識別されない場合は、該データブロックをプリザベーションボリュームにコピーするステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
マーク付きであると識別されない前記論理ボリューム上のデータブロックと前記プリザベーションボリューム上に記憶されたデータブロックとが、まとまって該論理ボリュームのスナップショットを構成することを特徴とする請求項４に記載の方法。
【請求項６】
前記時間帯を示すユーザインプットを受信するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項７】
論理ボリュームのスナップショットを生成するためのスナップショットリクエストを受信するステップと、
書き込みが行われる前記論理ボリュームの第１の領域に関連している書き込みリクエストを、前記スナップショットリクエストの受信に引き続く時刻に受信するステップと、
もし前記第１の領域に以前にコピー動作が行われている場合には、前記書き込みリクエストを実行するステップと、
もし前記第１の領域に以前にコピー動作が行われていない場合には、
以前にプリザベーションボリュームにコピーされたことが無い前記論理ボリュームの他の領域にあるデータと該プリザベーションボリュームに記憶されているデータとが、前記スナップショットリクエストを受信した時刻にまとまって該論理ボリュームのスナップショットを構成し、
前記第１の領域にあるデータを前記プリザベーションボリュームにコピーするステップと、
前記コピーするステップに引き続いて前記書き込みリクエストを実行するステップと、
から成るステップを実行するステップと、
所定の時間帯の間に前記論理ボリュームの領域から前記プリザベーションボリュームにデータをコピーすることで生じる該プリザベーションボリュームの記憶容量の消費速度を計算するステップと、
ユーザに前記プリザベーションボリュームの前記記憶容量の消費速度を示す第１の情報を提供するステップと、
から成ることを特徴とする、論理ボリュームのスナップショットを記憶する方法。
【請求項８】
前記時間帯を示すユーザインプットを受信するステップをさらに含むことを特徴とする請求項7に記載の方法。
【請求項９】
もし前記プリザベーションボリュームの記憶容量の消費が所定のレベルを超える場合には警告メッセージを表示するステップをさらに含むことを特徴とする請求項7に記載の方法。
【請求項１０】
前記所定の時間帯の終わりに、後の時刻における記憶容量の消費を示す予測値を計算するステップをさらに含むことを特徴とする請求項７に記載の方法。
【請求項１１】
前記提供するステップは、前記第１の情報に対するユーザ問い合わせの受信に応じて行われることを特徴とする請求項７に記載の方法。
【請求項１２】
ホストシステムが書き込みリクエストを前記論理ボリュームに発行し、前記計算するステップは、該ホストシステムが該ホストシステムのＩ／Ｏアクティビティをモニタリングするステップを実行するステップを含むことを特徴とする請求項７に記載の方法。
【請求項１３】
前記論理ボリュームはストレージシステムの構成要素であり、前記計算するステップは、該ストレージシステムが該ストレージシステムにより受信したＩ／Ｏアクティビティをモニタリングするステップを実行するステップを含むことを特徴とする請求項７に記載の方法。
【請求項１４】
請求項７に記載のステップを実行可能な計算デバイスを有するコントローラと、該コントローラが操作可能な複数の物理ストレージデバイスで構成されることを特徴とするストレージシステム。
【請求項１５】
論理ボリュームに対する複数の第１の書き込みリクエストを受信するステップと、
各第１の書き込みリクエストを、それに関連したデータを前記論理ボリュームに書き込むことで実行するステップと、
前記論理ボリュームに対するスナップショットリクエストを受信するステップと、
前記スナップショットリクエストの受信に続いて、前記論理ボリュームに対する複数の第２の書き込みリクエストを受信するステップと、
各第２の書き込みリクエストについて、
もし前記第２の書き込みリクエストが対象とする前記論理ボリューム上のデータブロックがマーク付きであると識別されない場合は、該データブロックに記憶されたデータをプリザベーションボリュームにコピーし、該データブロックをマーク付きと識別するステップと、
前記第２の書き込みリクエストを、それに関連したデータを前記デ―タブロックに書き込むことで実行するステップと、
前記スナップショットリクエストを受信するステップに続く時刻ｔ１において、前記プリザベーションボリュームによりどれだけの記憶容量が消費されたかを判定し、それに基づいて該プリザベーションボリュームの記憶容量消費速度を計算するステップと、
前記プリザベーションボリュームの記憶容量消費に係わる第１の情報をユーザに提供するステップと、
から成ることを特徴とする、１個ないしはそれ以上の論理ボリュームで構成されスナップショットプロセシングを実行出来るストレージシステムについての方法。
【請求項１６】
前記プリザベーションボリュームによる記憶容量の消費が所定のレベルを超える場合には警告を表示するステップをさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記提供するステップの前に、前記第１の情報のリクエストを受信するステップをさらに含み、前記提供するステップは該第１の情報のリクエストに応じて実行され、該第１の情報は前記記憶容量の消費速度であることを特徴とする請求項１５に記載の方法。
【請求項１８】
時刻ｔ１において判定した前記記憶容量の消費速度に基づいて、時刻ｔ１に続く時刻ｔ２において前記プリザベーションボリュームによりどの程度記憶容量が消費されるかを予測するステップをさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１９】
前記コピーするステップは２個あるいはそれ以上のデータブロックを一度に前記論理ボリュームから前記プリザベーションボリュームへコピーするステップであり、該２個あるいはそれ以上のデータブロックの各々がその後マーク付きであると識別されることを特徴とする請求項１５に記載の方法。
【請求項２０】
ホストシステムは前記第２の書き込みリクエストを発行し、前記判定するステップは該ホストシステムにおいてＩ／Ｏアクティビティをモニターするステップであることを特徴とする請求項１５に記載の方法。
【請求項２１】
前記列挙されたステップは第２の論理ボリュームに関して実行され、前記第１の情報は、前記プリザベーションボリュームが前記論理ボリュームと該第２の論理ボリュームからデータブロックを取り込んだ結果として消費する記憶容量に係わることを特徴とする請求項１５に記載の方法。
【請求項２２】
ホストサブシステムと、
複数の物理ストレージデバイスで構成され、前記ホストサブシステムが読み出しリクエストと書き込みリクエストを送信することができるストレージサブシステムと、
前記物理ストレージデバイスの中に定義される第１の論理ボリュームと、
前記物理ストレージデバイスの中に定義されるプリザベーションボリュームと、
前記プリザベーションボリュームの記憶容量利用情報を判定するコンピュータ運用のプロセスと、
ディスプレイコンポーネントと、
で構成され、
前記ストレージサブシステムはコピーオンライトスナップショットプロセシングを実行する機能を持ち、書き込みリクエストを実行する前に前記プリザベーションボリュームにコピーされている前記第１の論理ボリュームの第１のデータブロックは、前記ホストサブシステムからの該書き込みリクエストが該第１のデータブロックを対象にしているときは、前記プリザベーションボリュームにコピーされ、前記ホストサブシステムからの追加の書き込みリクエストは、該追加の書き込みリクエストを実行する前に前記第１の論理ボリュームの追加のデータブロックが前記プリザベーションボリュームにコピーされるようにし、
前記記憶容量利用情報は所定の時間帯を通して前記プリザベーションボリュームにより消費された記憶容量の量に基づき決定され、
前記記憶容量利用情報は前記ディスプレイコンポーネント上に提供される、
ことを特徴とする、データストレージシステム。
【請求項２３】
前記コンピュータ運用のプロセスは、前記ホストサブシステムで実行されることを特徴とする請求項２２に記載のシステム。
【請求項２４】
前記コンピュータ運用のプロセスは、前記ストレージサブシステムで実行されることを特徴とする請求項２２に記載のシステム。
【請求項２５】
前記記憶容量利用情報は前記プリザベーションボリュームの記憶容量消費速度を含むことを特徴とする請求項２２に記載のシステム。
【請求項２６】
前記記憶容量利用情報は所定の時間帯を超えた時点における記憶容量の消費の予測を含むことを特徴とする請求項２２に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
０１    本発明はストレージシステムに係わり、さらにはストレージシステムにおけるスナップショット方法に係わる。
【背景技術】
【０００２】
０２    スナップショットボリューム（ある時点でのデータイメージが保存されているボリューム）を生成する方法は、ホストＩ／Ｏがオンラインの際にユーザがスナップショットによってライブシステム上のデータを同時にバックアップ出来るので、多くのストレージシステムでしばしば用いられる。一般には、スナップショットを取るには二つの方法がある。
【０００３】
【特許文献１】米国特許No.６，０９２，０６６
【特許文献２】米国特許No.５，６４９，１５２
【発明の開示】
【発明が解決しようとする課題】
【０００４】
０３    ミラーリング方法：この方法では、ストレージシステムがスナップショットを構成するボリューム（プライマリボリュームあるいはプロダクションボリューム）のミラーを物理的に生成する。スナップショットはセカンダリボリューム（スナップショットボリューム）上に生成される。ユーザがストレージシステムにミラーリングの停止を指示すると、プライマリボリュームのデータのその時点のイメージがセカンダリボリュームに保存される。この方法の例が米国特許No.６，０９２，０６６に開示され、その全文が参照により本発明の開示に組み込まれるものである。
【０００５】
０４    コピーオンライト方法：上記のミラーリング方法においては、ユーザはスナップショットを記憶するためにプライマリボリュームと同じサイズのセカンダリボリュームを使用する必要がある。これによってスナップショットを維持するには記憶コストが倍になる。コピーオンライト方法では、ストレージシステムはプライマリボリュームに記憶されるデータの全てをミラーすることは行わない。代わりに、プライマリストレージシステムのある領域に更新が発生すると、そのストレージシステムは、その領域のデ―タ（以下それを「差分データ」と呼ぶ）をプリザベーションメモリーエリア（たとえば磁気ディスク、半導体メモリーなど）にコピーする。このように、データはプライマリボリュームとプリザベーションメモリーエリアの両方に書き込まれる。この方法においては、プリザベーションメモリーエリアの大きさは、プライマリボリュームの更新された領域のみが二重化されるだけであって、スナップショットボリューム間でプライマリボリュームの全体が再書き込みされることは希なので、一般にはプライマリボリュームのサイズよりはずっと小さい。米国特許No.５，６４９，１５２はコピーオンライトスナップショット方法を開示しており、その全文が参照により本発明の開示に組み込まれる。
【課題を解決するための手段】
【０００６】
０５    本発明は、コピーオンライトスナップショットが行われたときに、どの程度のプリザベーションメモリーエリアが必要であるかを予測する方法とシステムを提供する。差分データを記憶するのに必要なプリザベーションメモリーエリアの大きさはプライマリボリュームのアクセスする場所に依存する。プライマリボリュームの多くの領域を更新すると、スナップショットイメージを提供するために多くのプリザベーションメモリーエリアが消費される。差分データの大きさがプリザベーションメモリーエリアのサイズを超えると、プリザベーションメモリーエリアは適したスナップショットを提供できなくなる。本発明による情報システムはストレージシステムとホストコンピュータで構成される。ホストコンピュータは１ないしは複数のアプリケーションプログラムとＩ／Ｏアクティビティモニターを含んでいる。Ｉ／Ｏアクティビティモニターは基本的には、１ないしはそれ以上のプライマリボリュームの１ないしはそれ以上のスナップショットに関して、プリザベーションメモリーエリアのストレージが消費される速度を判定する。Ｉ／Ｏアクティビティ情報が収集され、このような統計量に基づき、Ｉ／Ｏアクティビティモニターはストレージシステムで生成される差分データの量を予測することが出来る。Ｉ／Ｏアクティビティモニターはホストシステムあるいはストレージシステムに常駐することができる。
【発明を実施するための最良の形態】
【０００７】
第１の実施例
０７    図１は本発明の方法が適用できる情報システムの例を示す。ホスト１は、コンピュータで実行可能な各種のプログラムを実行したりするような、ホストコンピュータの汎用データプロセシング機能を提供するＣＰＵ１１を含んでいる。ホストバスアダプター（ＨＢＡ）１２はストレージコンポーネントへ接続するために適したインターフェイスを提供する。メモリー１３は一般に揮発性のメモリーストレージとしてランダムアクセスメモリー（ＲＡＭ）を含んでいる。ディスプレイ１４によりユーザはホストコンピュータと対話することが出来る。キーボード、マウス、その他の適当な入力デバイスなど、図示されていない追加の構成品は含まれているものとする。
【０００８】
０８    ストレージシステム２は、ディスクコントローラ２０と複数のディスク（物理ストレージデバイス）で構成されるディスクサブシステム３０で構成される。ディスクコントローラ２０は、ディスクコントローラに機能性を持たせるようにＣＰＵ２１を含んでいる。バックエンドインターフェイス２２はディスクサブシステム３０に接続している。ディスクコントローラの機能で構成されるプログラムはメモリー２３に記憶され、そこから実行することが出来る。ファイバーチャネルインターフェイス（ＦＣ／ＩＦ）２４は、ホストコンピュータ１に接続するために適したインターフェイスである。キャッシュメモリー２５は、ディスクサブシステム３０にあるディスクから読み出されたデータとディスクサブシステム３０にあるディスクに書き込むデータについて、高速中間ストレージとして動作させて、ホストコンピュータ１から送られる読み出しと書き込み動作を行うためのストレージシステム２のＩ／Ｏ性能を向上させるために使用することが出来る。キャッシュメモリー２５は電源の障害に備えてバックアップバッテリーを備える場合もある。コンソール２６は一般にイーサネットケーブル(イーサネットは登録商標)などの適当な接続を経由してストレージシステム２に接続されている。コンソールはストレージシステムを設定するために用いられる。本発明の場合、コンソールは、たとえば生成、削除、アーカイブ等、スナップショットを管理するために使用することが出来る。
【０００９】
０９    ストレージシステム２は、たとえばＲＡＩＤボリュームがディスクサブシステム３０の複数のディスクから定義されるように、ディスクサブシステム３０の物理ストレージデバイスから１ないしはそれ以上の論理ボリュームを定義する。ホストコンピュータ１のようなホストコンピュータは、ホストで行われる動作の間に論理デバイスにＩ／Ｏリクエストを発行する。たとえば、データベースアプリケーションはストレージシステム２で定義された論理デバイスに対しデータ読み出しあるいはデータ書き込み動作を行うこともある。さらに、本発明によると、ストレージシステムはスナップショットプロセシング、詳細にはコピーオンライトスナップショット機能を提供する。
【００１０】
１０    ディスクコントローラ２０内で動作するプロセスの中には、ホスト１からストレージシステム２が受け取ったホストＩ／Ｏリクエストを処理するＩ／Ｏプロセス２３１がある。Ｉ／Ｏリクエストはデータ読み出しリクエストとデータ書き込みリクエストを含んでいる。ボリュームマネージャ２３２はディスクサブシステム３０のディスクの中から１個ないしはそれ以上の論理ボリュームを生成し管理する動作を実行する。スナップショットプロセス２３３はスナップショットボリュームを生成し管理する動作を実行する。スナップショットプロセス２３３はまたスナップショットボリュームに向けられたＩ／Ｏリクエストも取り扱う。これらのプロセスは一般に実行可能なプログラムコードで実行される。コード（あるいは仮想記憶管理されたアーキテクチャの場合においてはコードの一部）がメモリー２３に記憶されＣＰＵ２１により実行される。
【００１１】
１１    ホストコンピュータ１は一般に１個ないしはそれ以上のアプリケーションプログラム１３１を実行する。これらのプログラムは、色々な動作があるが、ストレージシステム２についてＩ／Ｏリクエスト動作を実行する。本発明によると、ホストコンピュータ１はまたＩ／Ｏモニタープログラム（プロセス）１３２を実行する。さらに詳細に論じられるように、Ｉ／Ｏモニター１３２は論理ボリュームにおけるＩ／Ｏアクティビティについての情報を収集し、それによって論理ボリュームのスナップショットプロセシングを実行するに十分なスペースがあるか否かの判定がされる。これらのプログラム（あるいは仮想記憶管理されたアーキテクチャの場合ではプログラムの一部）はメモリー１３に記憶され、ＣＰＵ１１により実行される。
【００１２】
１２    図２と図３を参照して、コピーオンライトスナップショットプロセシングの簡単な論議をする。コピーオンライトスナップショットプロセス（以下「スナップショット機能」と言う）は、選択された論理ボリューム（Ｐ−ＶＯＬと示される）のある時点のスナップショットのバーチャルスナップショットボリューム（Ｓ−ＶＯＬと示される）を生成する。見て明らかなように、スナップショットボリュームは論理ボリュームの一部とプリザベーションボリュームの一部で構成される。
【００１３】
１３    バーチャルスナップショットボリュームが生成される対象となる、選択された論理ボリュームはプライマリボリューム（Ｐ−ＶＯＬ）と呼ばれる。ユーザ（一般にシステム管理者型のユーザ）は論理ボリュームを識別し、ストレージシステム２に（スナップショットプロセス２３３を経由して）、選択された論理ボリュームのポイントインタイムでのスナップショットを生成するためのスナップショットボリュームを生成するように指示する。特に、スナップショットプロセス２３３はバーチャルスナップショットボリューム（Ｓ−ＶＯＬ）を生成する。多くのこのようなバーチャルスナップショットボリューム（「スナップショットジェネレーション」と呼ぶ）は与えられた論理ボリュームに対し生成される。このように、１個ないしはそれ以上のスナップショットジェネレーションが論理ボリュームに対し生成される。このように、もし７個のスナップショットボリュームがＰ−ＶＯＬに定義されているとするならば、Ｐ−ＶＯＬが「７個のスナップショットジェネレーション」を持っていると称する。
【００１４】
１４    プリザベーションボリュームは、スナップショットプロセス２３３によって用いられ、論理ボリュームに加えて、当該論理ボリュームに対するバーチャルスナップショットボリュームを構成する。以下明らかになるように、プリザベーションボリュームは、スナップショットプロセシングが実行されている論理ボリュームに行われた変更（差分データ）を記憶する。プリザベーションボリュームそれ自身は、ボリュームマネージャ２３２により生成され管理されている論理ボリュームでありえる。ストレージシステム２においては、２またはそれ以上のプリザベーションボリュームを維持することが出来る。プリザベーションボリュームの記憶容量は、スナップショットが行われている論理ボリュームと同じである必要はない。
【００１５】
１５    図２は論理ボリュームがスナップショットプロセシングのために選択され、Ｐ−ＶＯＬとして指定されることを示している。バーチャルスナップショットボリュームはＳ−ＶＯＬとして識別される。スナップショットプロセシングの開始に続いて、ホストコンピュータ１が、選択された論理ボリュームに書き込みリクエストを発行すると、スナップショットプロセス２３３は以下のように書き込みリクエストを処理する。
・もし書き込みリクエストの対象の１個ないしはそれ以上のＬＢＡ（論理ブロックアドレス）が「マーク付き」（次のステップ参照）ならば、書き込みリクエストはＰ−ＶＯＬで処理される。書き込みリクエストに関連したデータはＬＢＡで識別される論理ボリューム（Ｐ−ＶＯＬ）内の場所に書き込まれる。
・もし対象とするＬＢＡが「マーク付き」でない場合は、現在論理ボリューム（Ｐ−ＶＯＬ）のＬＢＡに記憶されているデータはプリザベーションボリュームの適当な場所にコピーされる。現在Ｐ−ＶＯＬのＬＢＡに記憶されているデータは、Ｐ−ＶＯＬのそれのようにプリザベーションボリュームの同じＬＢＡに記憶する必要は無い。これは図２（ａ）のデータの移動で示されている。この動作は、書き込みリクエストが実行されると重ね書きされてしまうデータ（Ｐ−ＶＯＬ内の）の状態を保存する。対象となるコピーされたＬＢＡは「マーク付き」と示される。これは図２の（ｂ）で示される。プリザベーションボリュームに記憶されたデータは書き込みリクエストが実行されると重ね書きされるであろうＰ−ＶＯＬの当該部分のスナップショットを保存する。Ｐ−ＶＯＬのこの元の場所に対するプリザベーションボリュームに記憶されたデータをマップするためには適当なマッピングメカニズムがあることは、当然理解されるべきことである。プリザベーションボリュームにあるデータは、そのスナップショットについての「差分データ」と呼ばれる。
・スナップショットプロセス２３３は、スナップショットビットマップ５０００（図１６）を、Ｐ−ＶＯＬ内の「マーク付き」のブロックとＰ−ＶＯＬからのデータが記憶されているプリザベーションボリューム内の場所（ＬＢＡ）５００３を識別するために用いることが出来る。スナップショットプロセスは一般には、Ｉ／Ｏモニター１３２で用いられているビットマップ（たとえば、図４のビットマップ５００）以外のビットマップ（たとえば、図１６のビットマップ５００′）を管理する。ビット５００１に加えて、ビットマップ５００′は、スナップショットデータがプリザベーションボリュームに保存されているデータの場所５００３を保持する。本実施例では、場所の情報５００３はＬＢＡとして表示される。場所５００３は「ブロック」アドレスとして表示することも可能である。たとえば、ビットマップの各ビットはＰ−ＶＯＬの１個ないしはそれ以上のブロックを表すことが可能である。このような各ビットは当初は「０」（言い換えると「マーク付き」でない）にセットされていて、対応するブロックのデータがプリザベーションボリュームにコピーされていないことを示している。上記のやり方でデータブロックがコピーされると、対応するビットは「１」（言い換えると、「マーク付き」）にセットされる。対応するビットが「１」にセットされているブロックは、これらのブロックのスナップショットが既に取られていることを意味して、「スナップショットブロック」と呼ぶことが出来る。大容量のストレージシステムでは、論理ボリュームは大変大きな数のブロック、たとえば１２８キロブロック（２の１７乗のブロック）、で構成される。１２８キロブロックのビットマップを管理するのはあまり実用的ではない。しかしながら、もしたとえばプリザベーションボリューム内の、論理ボリュームの１２８ブロックと等価なストレージの単位を各ビットが表すならば、その結果である１キロビットのビットマップはより管理しやすくなる。その場合には、データをプリザベーションボリュームにコピーするのは１２８ブロックの単位になり、プリザベーションボリュームにおける各「スナップショットブロック」は論理ボリュームの１２８ブロックで構成される。
【００１６】
１６    図３は論理ボリューム（Ｐ−ＶＯＬ）のポイントインタイムスナップショットへデータアクセスが出来るようにするために、バーチャルスナップショットボリューム（Ｓ−ＶＯＬ）のデータをどのように検索できるかを示している。ホストコンピュータ１がバーチャルスナップショットボリュームに対してデータ読み出しリクエストを発行すると、スナップショットプロセス２３３は以下を実行する：
・ストレージシステム２はバーチャルスナップショットボリュームを対象としたデータ読み出しリクエストを受け取る。スナップショットプロセス２３３はデータ読み出しリクエストに含まれているアドレス情報から対象となる読み出しアドレスを決める。
・もし対象の読み出しアドレスが「マーク付き」（ビットマップを検査して）である場合は、プリザベーションボリューム上のデータのロケ―ションを識別するために、対象読み出しアドレス（スナップショットビットマップ５０００のロケ―ション５００３に記憶されている）を用いて、データはプリザベーションボリュームから読み出される。
・もし、対象読み出しアドレスがマークされていない場合は、対象読み出しアドレスを用いてＰ−ＶＯＬがアクセスされる。
・プリザベーションボリュームあるいはＰ−ＶＯＬから読み出されたデータは次にホストコンピュータ１に送り返される。
・その場合には「バーチャルスナップショットボリューム」はＰ−ＶＯＬ自身の一部とプリザベーションボリュームとで構成されていることが明らかになる。
【００１７】
１７    上述のように、バーチャルスナップショットボリュームの生成や管理はコンソール２６から行われる。別の方法としては、ホストコンピュータ１のユーザがバーチャルスナップショットボリュームを生成し管理できるように、適したプログラムをホストコンピュータ１とストレージシステム２に用意することも可能である。
【００１８】
１８    プリザベーションボリュームは単一のデバイスあるいは複数の物理ストレージデバイスであっても良い。プリザベーションボリュームはスナップショットボリュームのデータを複数の論理ボリュームに記憶させることができる。
【００１９】
１９    本発明によると、図１に示すＩ／Ｏモニター１３２のようなＩ／Ｏモニターは、プリザベーションボリュームの使用を確認あるいは予測するために、スナップショットブロックのアクティビティをモニターする。より詳細には、プリザベーションボリューム上のストレージスペースの消費速度が決定される。次のデータテーブルとプロセス動作で本発明のこの面の実施例を詳述する。
【００２０】
２０    図６はスナップショットプロセシングのために論理ボリュームの選択に関連してユーザが提供する情報６００を表形式で説明している。この情報はＩ／Ｏモニター１３２により使用される。テーブルの各行はスナップショットプロセシングが実行されるであろう論理ボリュームに対応している。
【００２１】
２１    ポートＷＷＮフィールド６０１とＬＵＮフィールド６０２は、スナップショットプロセシングが行われる論理ボリューム（Ｐ−ＶＯＬ）を識別する情報を記憶する。ポ―トＷＷＮフィールドは論理デバイスのワールドワイドな名称を示し、ＬＵＮフィールドは論理ボリュームの論理ユニット番号を示す。
【００２２】
２２    ブロックサイズフィールド６０３はスナップショットブロックのサイズ、言い換えるとプリザベーションボリュームへコピーされるデータの最少量（あるいは単位）を示す。上記で議論されたことから、実際的な理由で、スナップショットブロックは論理ボリュームのブロックサイズより大きいことを思い出していただきたい。この特定の実施例では、ブロックサイズフィールドに記憶された値は「ブロックの数」の単位であり、たとえば１２８という値は、（プリザベーションブロックにコピーされる）１スナップショットブロックが論理ボリュームからのデータの１２８ブロックと等しいことを意味する。このように、もし論理ボリューム上のブロックサイズが５１２バイトである場合は、スナップショットブロックは６４キロバイト（６４ＫＢ）である。
【００２３】
２３    ナンバーフィールド６０４は論理ボリュームへ取り込まれるスナップショットの数を示す。間隔フィールド６０５はスナップショットが行われる頻度を示す。このように、たとえば、第２行６０６では、論理ボリュームは３６スナップショットを予定しており、そこでは１個のスナップショットが１時間毎に行われる。３６個のスナップショットのジェネレーションを集めた後は（３５時間以上の期間）、３７番目のスナップショットの処理が始まるときに最初のスナップショットが削除され、３８番目のスナップショットが取られるときには第２のスナップショットが削除される等々である。言い換えると、システムはこの論理ボリュームについてスナップショットの３６ジェネレーションを維持するということである。他の例としては、第４行６０７では、その論理ボリュームについて１個のスナップショットしか維持されない。さらに、スナップショットが１時間毎に取られる。
【００２４】
２４    図４は、スナップショットプロセシングが実行されている論理ボリュームにおけるＩ／Ｏアクティビティに関連するＩ／Ｏアクティビティビットマップ５００（図１６のスナップショットビットマップ５００′に比較して）と呼ばれるビットマップの形式の情報を説明している。ビットマップ５００もまたＩ／Ｏモニター１３２によって保持されている。各スナップショットジェネレーションに対してこのようなビットマップ１個が備えられている。たとえば、図６の情報は、少なくとも５１のスナップショットジェネレーションが最終的に生成（７＋３６＋７＋１）され、５１の対応するビットマップが生成されることを示している。Ｉ／Ｏモニター１３２はビットマップの情報を更新する。
【００２５】
２５    ビットマップ５００は各スナップショットブロックをその関連するスナップショットジェネレーションについて追跡する。ホストコンピュータ１によりスナップショットブロックが書き込まれたか否かの情報がスナップショットプロセスが開始された時から追跡される。もし、スナップショットブロックが書き込まれている場合には、それはスナップショットブロックのオリジナルデータがプリザベーションボリュームにコピーされていることを意味する。
【００２６】
２６    フラッグフィールド５０２は、対応するスナップショットブロックが、スナップショットプロセシングを開始して以来、書き込みオペレーションにより更新されたか否かを示す。このフィールドは単に書き込みオペレーションが発生したか否かを示す。したがって、数値は２進数であり、言い換えると「０」（ＯＦＦ）あるいは「１」（ＯＮ）である。
【００２７】
２７    ブロックフィールド５０１は、スナップショットブロックナンバーを記憶する。スナップショットブロックは論理ボリュームの１ブロックを超えるであろうことを想起していただきたい。たとえば、図６の第４行６０７によると、バーチャルスナップショットボリュームは論理ボリュームの６４ブロックで構成されたスナップショットブロックで構成されている。このように、スナップショットブロックナンバー０は論理ボリュームのＬＢＡ０〜６３からのデータを記憶し、スナップショットブロックナンバー１は論理ボリュームのＬＢＡ６４〜１２７からのデータを記憶し、以下同様である。Ｉ／Ｏ動作の対象ＬＢＡに対応するスナップショットブロックナンバーを計算する方法は、ブロックサイズフィールド６０３にある数値でＬＢＡを除し、除算の剰余は切り捨てることである。たとえば、もし対象とするＬＢＡがブロック１３３である場合は、対応するスナップショットブロックナンバーは、１３３÷６４（剰余は切り捨てる）＝２となる。
【００２８】
２８    実行上の注意として、スナップショットブロックナンバーは０〜（Ｎ−１）の範囲にあるので、ブロックフィールド５０１に記憶された数値はビットマップへのインデックスである。ビットマップにおいてｉ番目のエントリーはスナップショットブロックナンバーｉに対応する。従って、ビットマップでの位置はスナップショットブロックナンバーに対応し、スナップショットブロックナンバーを記憶するセパレートフィールド５０１は必要が無い。
【００２９】
２９    図５はブロックナンバーテーブル５５０の形式で、スナップショットプロセシングが実行されている各論理ボリュームの情報を示している。情報は、スナップショットジェネレーションとの関連で、データが論理ボリュームからプリザベーションボリュームへコピーされる速度に関連する。テーブルの各行はスナップショットジェネレーションについての情報を表している。ブロックフィールド５５３はある時間帯内にコピーされたスナップショットブロックの数を示している。タイム１フィールド５５１はその期間の始まりの時刻を、そしてタイム２フィールド５５２はその期間の終わりの時刻を示している。ブロックフィールド５５３についての値は、対応するスナップショットジェネレーションのビットマップ５００の「ＯＮ」ビットを合計することで決定することが出来る。
【００３０】
３０    図７はＩ／Ｏモニター１３２の動作を示す。初期に論じたように、Ｉ／Ｏモニター１３２はホストコンピュータ１からユーザがスナップショットを取ることを希望している論理ボリュームに発行されるＩ／Ｏ動作をモニターする。集められた情報は、プリザベーションボリュームにスナップショットブロックを記憶するための十分なスペースがあるか否かを確認（予測）するために使用される。
【００３１】
３１    このようにして、ステップ８０１では、Ｉ／Ｏモニター１３２はユーザからインプットパラメータを受け取る。インプットパラメータは情報６００に記憶され、Ｐ−ＶＯＬのポートＷＷＮ６０１とＬＵＮ６０２、そして各Ｐ−ＶＯＬのブロックサイズ６０３とナンバー６０４と間隔６０５を含んでいる。たとえばグラフィカルユーザインターフェイス（ＧＵＩ）あるいはコマンドラインインターフェイス（ＣＬＩ）などのデータを入力するための適切なインターフェイスが簡単に提供される。このステップは図６に示す情報のイニシャライズを行う。
【００３２】
３２    ステップ８０２では、ステップ８０１から得た情報に基づき１個ないしはそれ以上のビットマップ５００が生成される。次にステップ８０３のＩ／Ｏ動作のモニターが開始される。モニターはユーザがスナップショットを取りたいとする各論理ボリュームについて並行して行われる。このステップの詳細は図８に示されている。
【００３３】
３３    ステップ８０４では、ステップ８０３で開始された各Ｉ／Ｏモニターリングプロセスが完了したかどうかのチェックがされる。たとえば、もしユーザが各２４時間（図６フィールド６０５）に７回のスナップショット（図６フィールド６０４）を取ることを指定した場合には、モニタリングは１６８時間後（２４×７時間）には停止される。ステップ８０３のモニタリングステップは各論理ボリュームにおける各モニターリングプロセスが完了すると停止する。
【００３４】
３４    ステップ８０５では、スナップショットを取る対象の論理ボリュームから書き込まれるスナップショットブロックの数が決定される。この情報は、プリザベーションボリュームで消費されるスペースの表示や、プリザベーションボリュームで消費されるスペースの推定消費速度や、管理者がプリザベーションボリュームの現在の記憶容量が適切であるかどうかを判断するのに役立つ他の同様の情報、を得るのに用いることが出来る。スナップショットブロックの数は対応するビットマップ５００のＯＮビットを集計することで計算できるが、より一般的な場合では、１個を超える論理ボリュームがスナップショットプロセシングの対象となり、その場合は１個を超えるビットマップが存在する。したがって、スナップショットブロックの数は適応する全てのビットマップのＯＮビットを全て集計することで計算される。
【００３５】
３５    この計算された数は、プリザベ―ションボリューム内で消費されたスペースの量を示している。図５の時間情報を用いて、プリザベーションボリュームのストレージスペースの消費速度を計算することが出来る。この情報は、しかるべきインターフェイスを経由してユーザに伝えられる。さらに、記憶されたデータを管理するために、プリザベーションボリュームで必要とされるオーバヘッドも計算の中に含まれる。
【００３６】
３６    一時的に図１３Ａ―１３Ｃを参照すると、各種の表示の実施例が示されている。図１３Ａでは、ユーザはプリザベーションボリュームについて詳細を表示させるコマンドを得ることが出来る。図１３Ａに示された例では、ユーザが、コマンドラインインターフェイス（ＣＬＩ）を用いて、プリザベーションディスクについての情報を表示させるための「ｓｈｏｗＰ（ショーＰ）」コマンドを発行する。図１３Ｂは変形であって、「ｓｈｏｗＰ（ショーＰ）」コマンドに引数を与えて、あるプリザベーションボリュームを多くのプリザベーションボリュームの中で指定する。図１３Ｃは、プリザベーションボリュームの記憶容量が予め定められた閾値を超えた時に、システムが出す警告のディスプレイを示している。このようなメッセージは通常はシステムコンソール１４に表示される。
【００３７】
３７    今度は図８を参照すると、モニタリングステップ８０３（図７）のさらなる詳細が説明される。モニタリングはユーザがスナップショットを取ろうとする各論理ボリュームについて実行される。一般のオペレーティングシステム環境では、各モニタリングの事例は並列の分離したプロセス（以下「書き込み監視プロセス」と呼ぶ）として実行される。
【００３８】
３８    書き込み監視プロセスの初めには、各種のオペレーション（ステップ１０００）がデータを初期化するなどで実行される。たとえば、テーブル５５０のしかるべき行のタイム１フィールド５５１は開始時にイニシャライズすることが出来る。テーブル５５０の各行はスナップショットジェネレーションに対応していることは前に述べている。このように、書き込み監視プロセスは、そのプロセスに対応しているテーブルエントリーを示す情報を保有している。
【００３９】
３９    ステップ１００１では、書き込み監視プロセスはホストコンピュータ１においてＩ／Ｏのモニタリングを開始する。ホストコンピュータが書き込みオペレーションを発行すると、処理はステップ１００２に進むか、さもなければ処理はステップ１００５に進む。
【００４０】
４０    ステップ１００２では、書き込みオペレーションに関連した、対象とする論理ボリュームが識別される。このことが論理ボリュームに対応するビットマップ５００を識別するために役立つ。論理ボリュームの対象となる場所は書き込みオペレーションにより識別される。言い換えると、データが書き込まれるブロックのＬＢＡが識別されることになる。論理ボリュームＬＢＡは、上述のように、対応するスナップショットブロックナンバーに変換が出来る。たとえば、書き込みリクエストのポートＷＷＮ６０１が１０：０４：ｅ２：０４：４８：３９であり、ＬＵＮ６０２が０である場合は、ブロックサイズ６０３はテーブル６００から６４ＫＢと判断される。すなわち、６４＊１０２４／５１２＝１２８ＳＣＳＩディスクブロックである。もし書き込みリクエストのＬＢＡが３６４であれば、スナップショットブロックナンバーは３６４÷１２８（剰余は切り捨てる）＝２である。ビットマップ５００のブロックフィールド５０１に対して、計算されたスナップショットブロックナンバーである「２」を検索して、ビットマップの対応するエントリーを得ることが出来る。上述のように、スナップショットブロックナンバーはビットマップ５００へのインデックスの働きをすることが可能である。
【００４１】
４１    ステップ１００３では、書き込み監視プロセスはステップ１００２において検出された対応するボリュームのＩ／Ｏアクティビティビットマップ５００をチェックし、計算されたブロックアドレスが前の書き込みＩ／Ｏリクエストにより既に書き込まれたか否かを判定する。これはステップ１００２において計算された、対応するブロックアドレスのフラッグ５０２をチェックすることで行われる。スナップショットボリュームの複数のジェネレーションが追跡されるときは１個をこえるＩ／Ｏアクティビティビットマップ５００が準備されるので、各ジェネレーションに対するＩ／Ｏアクティビティビットマップはチェックする必要があり、１個をこえるビットマップのビットがセットされなければならない（図１４の説明を参照）ということもあり得る。もしブロックが更新されていた場合は、プロセスはステップ１００５へ進む。もしブロックが以前に更新されていなかったら、プロセスはＩ／Ｏアクティビティビットマップ５００を更新するためにステップ１００４に進む。
【００４２】
４２    ステップ１００４では、スナップショットブロックに対応するＰ−ＶＯＬのブロックはプリザベーションボリュームへコピーされる。ビットマップの対応するビットエントリーはまたＰ−ＶＯＬのブロックがコピーされていることを示すようにセットされる。
【００４３】
４３    ステップ１００５では、書き込み監視プロセスは、現在時刻とスナップショットボリューム（たとえばブロックナンバーテーブル５５０の最後の行）の最新のジェネレーションのタイムフィールド５５１とを比較し、現在時刻が時間間隔６０５以内であるかをチェックする。もしも現在時刻が時間間隔６０５に入っているならば、プロセスはステップ１００１に戻り、もしもそれが入っていないならば、プロセスはステップ１００６に進む。
【００４４】
４４    ステップ１００６では、書き込み監視プロセスは他にスナップショットジェネレーションを生成すべきかを判定する。たとえば、そのポートＷＷＮ６０１とＬＵＮ６０２がそれぞれ１０：０４：ｅ２：０４：４８：３９と２（インプットパラメータ情報６００の第２行６０６）であるボリュームから３６のスナップショットが作られる。この場合、書き込み監視プロセスは書き込みアクティビティを３６回監視する（すなわち、ブロックナンバーテーブル５５０に情報が３６行まで記憶されるまで、書き込み監視プロセスは書き込みＩ／Ｏの監視を続ける）。もし他のジェネレーションの書き込みアクティビティを監視する必要があるならば、プロセスはステップ１００８に進む。もしそうでないなら、プロセスはステップ１００７に進む。
【００４５】
４５    ステップ１００７では、書き込み監視プロセスは対応するボリュームのブロックナンバーテーブル５５０を更新し、現在時刻をタイム２フィールド５５２に入力し、Ｉ／Ｏアクティビティビットマップ５００の更新されたスナップショットブロックの数を数え、ブロック５５３フィールドに更新されたスナップショットブロックの数を入力する。
【００４６】
４６    ステップ１００８では、書き込み監視プロセスは、次のジェネレーションスナップショットボリュームに更新されたブロックの数を書き込むために用いられるブロックナンバーテーブル５５０に１行を加え、追加された行のタイム１フィールド５５１に現在時刻を記録し、次のジェネレーションスナップショットボリュームに新たなＩ／Ｏアクティビティビットマップ５００を割り当てる。これにより、新たなスナップショットジェネレーションについての情報が設定される。
【００４７】
４７    図８で説明したプロセスの説明に、しばし図１４を参照する。時間軸は時刻ｔ１、ｔ２、とｔ３を示す。時刻ｔ１の前になされた論理ボリュームに対する書き込みリクエストは、単に論理ボリュームへの書き込み動作の実行である。時刻ｔ１では、論理ボリューム（Ｐ−ＶＯＬ）のスナップショットプロセシングを実行するコマンドが発行されると想定する。時刻ｔ１に続いて、文字Ａ〜Ｇで識別されるＰ−ＶＯＬのブロックが、ブロックの修正時刻を示すように時間軸上で表示されている。最初のスナップショットジェネレーションを考えてみる。最初のスナップショットジェネレーションを表す情報はスナップショットプロセス２３３により管理されるプリザベーションボリューム３３３ａとビットマップ５００ａを含んでいる。ブロックＡ、Ｂ、Ｃに対する書き込みリクエストが時間軸上で表示されている。図８のステップ１００１〜１００４によって、ブロックＡとＢとＣは、書き込みリクエストが実行される時には、重ね書きされる前にプリザベーションボリューム３３３ａに記憶される。ビットマップ５００ａのブロックＡとＢとＣに対応するビットマップエントリーは、たとえば「１」に設定される。
【００４８】
４８    時刻ｔ２では、他のスナップショットジェネレーションが開始される。現在は二つのスナップショットが追跡されている。第２のスナップショットジェネレーションを表す情報はスナップショットプロセス２３３により管理されるプリザベーションボリューム３３３ｂとビットマップ５００ｂを含んでいる。ブロックＤに対する書き込みリクエストが受信される。図８のステップ１００４により、各スナップショットについて対応するビットマップが検査される。双方のスナップショットジェネレーションについて、ブロックＤは以前には修正されたことはなかった。従って、ブロックＤは書き込みリクエストにより重ね書きされる前に、プリザベーションボリューム３３３ａとプリザベーションボリューム３３３ｂにコピーされる。同様に、ビットマップ５００ａと５００ｂの対応するエントリーは「１」にセットされる。注意すべきは、ここではプリザベーションボリューム３３３ａと３３３ｂは別個のストレージデバイスであるかあるいは共通の論理デバイスの異なった領域であることである。
【００４９】
４９    時刻ｔ１４では、ブロックＡが再び書き込まれ、Ａ′と識別される。ブロックＡは以前に第一のスナップショットで修正されている（異なった提示がされており、既に保存されている）ので、ブロックＡ′はプリザベーションボリューム３３３ａでは再び保存されることはない。しかしながら、ブロックＡ′はプリザベーションボリューム３３３ｂには保存される。
【００５０】
５０    時刻ｔ１５では、ブロックＥが書き込まれる。スナップショットジェネレーションの双方について、ブロックＥは以前に修正されていなかった（そしてどちらのスナップショットジェネレーションにも保存されていない）。その結果、ブロックＥはプリザベーションボリューム３３３ａとプリザベーションボリューム３３３ｂへコピーされる。同様に、ビットマップ５００ａと５００ｂの対応するエントリーは「１」にセットされる。
【００５１】
５１    時刻ｔ３では、他のスナップショットジェネレーションが開始される。現在は三つのスナップショットが追跡されている。第３のスナップショットジェネレーションを表す情報はスナップショットプロセス２３３により管理されるプリザベーションボリューム３３３ｃとビットマップ５００ｃを含んでいる。つづいてブロックＦが修正される。三つのスナップショットジェネレーション全てについて、ブロックＦは以前には修正されていない。その結果、ブロックＦはプリザベーションボリューム３３３ａとプリザベーションボリューム３３３ｂとプリザベーションボリューム３３３ｃにコピーされる。同様に、ビットマップ５００ａと５００ｂと５００ｃの対応するエントリーは「１」にセットされる。
【００５２】
５２    時刻ｔ１８では、ブロックＡが再び書き込まれ、Ａ″で識別される。ブロックＡは以前に第一のスナップショットと第２のスナップショットで修正されている（異なった提示がされており、既に保存されている）ので、ブロックＡ″はプリザベーションボリューム３３３ａあるいは３３３ｂには再び保存されることはない。しかしながら、ブロックＡ″はプリザベーションボリューム３３３ｃには保存される。
【００５３】
５３    上述のスナップショットプロセス２３３の実施において、複数のスナップショットが取られるときは、更新されるブロックの内容はスナップショットに対応するプリザベーションボリュームに記憶される。このように、もし二つのスナップショットが取られる場合は、二つのデータブロックは、それぞれが、二つのスナップショット、言い換えると二つのプリザベーションボリューム、の一つに対応するプリザベーションボリュームにコピーされる。他の実施例によると、複数のスナップショットが取られる際に更新されるブロックは、一回だけプリザベーションボリュームに記憶することが可能で、スナップショットボリュームが、適当なポインターあるいは他の参照データ構造を用いて、保存されたデータブロックの単一コピーを指示し、プリザベーションボリュームのスペースを節約する。
【００５４】
５４    図１７は一つの例を示す。時刻ｔ１、ｔ２、ｔ３で、論理ボリューム（Ｐ−ＶＯＬ）のスナップショットプロセシングを実行するコマンドが発行されたと想定する。要素３３０ａ、３３０ｂ、３３０ｃは、スナップショットプロセス２３３により生成された時刻ｔ１、ｔ２、ｔ３におけるバーチャルスナップショットボリュームを表しており、それぞれバーチャルスナップショットボリューム３３０ａ、３３０ｂ、３３０ｃに対応する（スナップショットプロセス２３３により生成され管理されている）スナップショットビットマップ５０００ａ、５０００ｂ、５０００ｃとＩ／Ｏアクティビティビットマップ５００ａ′、５００ｂ′、５００ｃ′は、Ｉ／Ｏモニター１３２により用意され管理されている。要素３３３はプリザベーションボリュームを表す。この例においては、データブロックｃは時刻ｔ２の後に（第２のバーチャルスナップショットボリューム３３０ｂが生成された後に）更新されてデータ「Ｃ」になる。この実施例では、古いデータブロックｃは二重化されず、単に単一のブロックがプリザベーションボリューム３３３に記憶される。その代わりに、データブロックｃ（ブロックナンバー「２」）に対応するスナップショットビットマップ５０００ａと５０００ｂの場所の欄はプリザベーションボリューム３３３の同じ場所（「２」）を指示する。この場合には、Ｉ／Ｏモニタープロセスの図８のステップ１００４では第２のバーチャルボリューム３３０ｂに対応するビットマップ５００ｂ′のフラッグのみが更新され、ビットマップ５００ａ′のフラッグは更新されない。
【００５５】
５５    Ｐ−ＶＯＬからのブロックはスナップショットプロセシングが終了するまで、プリザベーションボリュームへ継続して記憶される。たとえば、もしユーザ（たとえば管理者）がスナップショットジェネレーションを削除すると、当然であるが、ジェネレーションについてデータはもはや保存されず、対応するビットマップは削除される。
【００５６】
５６    上述の本発明の実施例では、Ｉ／Ｏモニター１３２は単に書き込みＩ／Ｏアクティビティをアプリケーションプログラム２１２から監視しているだけなので、Ｉ／Ｏモニター１３２が書き込みアクティビティを監視している際に、ストレージシステム２は必ずしもスナップショットボリュームを生成する必要は無い。Ｉ／Ｏモニター１３２がプリザベーションボリュームのサイズを予測すると、ユーザは予測に応じてそのサイズのプリザベーションボリュームを準備することが出来る。
【００５７】
５７    もちろん、ストレージシステム２がスナップショットを取っている間に監視を行うことも可能である。もしプリザベーションボリュームの容量が予測よりもずっと大きい場合は、ユーザは予測されたサイズに基づいてプリザベーションボリュームのサイズを縮小できる。
【００５８】
第２の実施例
５８    本発明の第２の実施例による情報システムのシステム構成は本発明の第１の実施例のものと同じである。本発明の第２の実施例では、Ｉ／Ｏモニター１３２によるプリザベーションボリュームのサイズの予測は違う方法で行われる。本発明の第１の実施例では、Ｉ／Ｏモニター１３２はストレージシステム２がスナップショットを取っている際にリアルタイムで監視を行う。たとえば、ストレージシステム２が図６に示すスナップショットを取る時に、図６の第一の行（そのポートＷＷＮ６０１とＬＵＮ６０２がそれぞれ１０：０４：ｅ２：０４：４８：３９と０である）のボリュームから７個のスナップショットが取られ、各スナップショットはそれぞれ２４時間毎に取られる。すなわち、７個のスナップショットを集めるには、２４×７＝１６８時間がかかり、Ｉ／Ｏモニター１３２はＩ／Ｏアクティビティを１６８時間監視しなければならない。監視時間を短縮するために、本発明の第２の実施例に対応するＩ／Ｏモニター１３２は書き込みアクティビティを短い時間（数時間とか１日以内）監視し集めた情報からスナップショットデータのサイズを予測（外挿）する。
【００５９】
５９    図９は本発明の第２の実施例のＩ／Ｏモニター１３２が使用するインプットパラメータ情報６００′を示す。要素の大部分は本発明の第１の実施例におけるインプットパラメータ情報６００と同じである。情報６００′には持続時間（Ｄｕｒａｔｉｏｎ）フィールド６１０が含まれる。持続時間フィールド６１０はＩ／Ｏモニター１３２が書き込みアクティビティを監視しなければならない時間の長さを示す。時間が過ぎると、もし全てのスナップショットジェネレーションにおける書き込みアクティビティ監視が終了していなくても、書き込み監視プロセスは書き込みアクティビティの監視を中止する。Ｉ／Ｏモニター１３２は、続いて、集めた情報に基づきスナップショットデータを記憶するために必要となるスペースを、外挿や他の似た処理を用いて予測する。
【００６０】
６０    図１０は本発明の第２の実施例による書き込み監視プロセスのステップ８０３のプロセスフローを示す。ステップ１０００′は本発明の第１の実施例におけるステップ１０００（図８）と同じである。ステップ１０１１は図８のステップ１００１、１００２、１００３、１００４を表している。
【００６１】
６１    ステップ１０１５では、書き込み監視プロセスがタイム１フィールド５５１を比較することで、現在時刻が時間間隔６０５以内であるかどうかをチェックする。また書き込み監視プロセスは書き込み監視プロセスが開始されてから時間が持続時間６１０を超えていないかどうかチェックする。もし現在時刻が時間間隔６０５内であり、持続時間６１０内であるならば、プロセスはステップ１０１１に戻る。もしそうでないなら、プロセスはステップ１０１６に進む。ステップ１０１７では、書き込み監視プロセスは対応するボリュームのブロックナンバーテーブル５５０を更新する。もし書き込み監視プロセスが全てのスナップショットジェネレーションで書き込みアクティビティを監視しない場合は、書き込み監視プロセスは差分データの数を推定する。ステップ１０１７の詳細は後述する。ステップ１０１６では、もし書き込み監視プロセスが開始されてからの時間が持続時間６１０を超えていない場合は、プロセスはステップ１００７′へと進む。もし時間が持続時間６１０を超えると、プロセスは終了する。ステップ１００７′と１００８′はそれぞれ図８のステップ１００７と１００８と同じである。
【００６２】
６２    本発明の第２の実施例では、書き込み監視プロセスは差分データのサイズを予測する。差分データのサイズを予測する二つの技術を説明する。しかしながら、他に多くの技術があることは当然理解されるべきことである。第一の技術は、持続時間６１０が３時間であるときには、Ｉ／Ｏモニター１３２は書き込みアクティビティを３時間監視しなければならない。図１５は監視の結果の例を示している。書き込み監視プロセスは各３時間の間に同じ数のスナップショットブロックが生成されると想定する。図１５の場合では、３時間の間に７４３のスナップショットブロックが生成されるので、書き込み監視プロセスは２４時間の間に５９４４のスナップショットブロックが生成されるであろうと予測する。そして、もしブロックナンバーテーブル５５０がそのポートＷＷＮ６０１とＬＵＮ６０２がそれぞれ１０：０４：ｅ２：０４：４８：３９と２（たとえば図６の第２の行６０６）であるボリュームと関連している場合には、書き込み監視プロセスは３６時間（各時間に３６スナップショットが作成されるはずである）に幾つのスナップショットブロックが生成されるかを予測しなければならないので、次の計算により３６時間に生成されるスナップショットブロックの数を予測する。
【００６３】
５９４４／２４×３６＝８９１６
６３    短時間（たとえば、昼間のみ）の内に多くの書き込みＩ／Ｏが来る傾向があり、ユーザがその傾向を知っている時には、他の予測技法が使用可能である。図１１は書き込み監視プロセスがこの予測技法を使用するアクセス傾向テーブル７００を示す。テーブル７００は各ボリュームに対して提供可能である。比率（ＲＡＴＩＯ）フィールド７０３はタイム１フィールド７０１とタイム２フィールド７０２の間の特定の時刻における差分データのサイズと１日のなかで、０時（夜中）と午前３時の間の差分データのサイズとの比率を示す。たとえば、図１１では９時００分と１２持００分の間で発生した差分データのサイズは０時００分と３時００分の間の差分データのサイズの３倍である。
【００６４】
６４    たとえば、もしＩ／Ｏモニター１３２が０時００分から３時００分まで書き込みアクティビティを監視し図１５に示すようにこの期間に発生したスナップショットブロックの数は７４３（４００ブロックが午前０時から午前３時までに取られたスナップショット、２００ブロックが午前１時から午前３時までのスナップショット、そして１４３ブロックが午前２時から午前３時までに取られたスナップショットである）であるならば、６時００分から９時００分のような他の時間帯で発生するスナップショットブロックの予測数は、６時００分から９時００分の時間帯における比率フィールド７０３は２なので、２に７４３を掛けることで計算ができる。上記のようなブロックナンバーテーブル５５０とアクセス傾向テーブル７００を用いることで、書き込み監視プロセスは１日のスナップショットブロックの数を予測することが出来る。
【００６５】
６５    ユーザは比率フィールド７０３をタイム１フィールド７０１とタイム２フィールド７０２の間で指定が出来、ユーザはタイム１フィールド７０１とタイム２フィールド７０２で指定される時間帯を自由に設定できる。しかしながら、一般には時間帯はボリュームの持続時間６１０と同じに設定すべきである。
【００６６】
第３の実施例
６６    図１２は本発明の第３の実施例による情報システムのシステム構成を示す。本発明の第１あるいは第２の実施例と、第３の実施例のシステムの差は、Ｉ／Ｏモニター２３４がストレージシステム２の中で実行されることであって、第１と第２の実施例ではＩ／Ｏモニター１３２がホストコンピュータ１の中で実行される。この第３の実施例では、書き込みＩ／Ｏアクティビティを監視する仕事はストレージシステム２の中で実行される。
【００６７】
６７    Ｉ／Ｏモニター２３４のプロセスは、第１の実施例と第２の実施例のそれとほとんど同じである。しかしながら、図８のステップ８０１では、Ｉ／Ｏモニター２３４とスナップショットプロセス２３３は同じディスクコントローラ２０にあるので、スナップショット生成の命令がユーザからスナップショットプロセス２３３に来ているときは、Ｉ／Ｏモニター２３４はポートＷＷＮ６０１、ＬＵＮ６０２、ブロックサイズ６０３などのインプットパラメータをスナップショットプロセス２３３から取得することが出来る。この場合は、ユーザはこれらのパラメータを手動で入力する必要はない。もしスナップショットプロセス２３３でスナップショットが作られない場合は、この時点ではスナップショットプロセス２３３がこれらのパラメータを持っていないので、ユーザはこれらのパラメータを手動で入力しなければならない。
【図面の簡単な説明】
【００６８】
【図１】図１は本発明の第一の実施例が適用されるコンピュータシステムの構成を示すブロックダイアグラムである。
【図２】図２はコピーオンライトスナップショットプロセシングのデータフローを示している。
【図３】図３はコピーオンライトスナップショットにおいてどのようにスナップショットが読まれるかを示している。
【図４】図４は保存されたブロックを追跡する説明のためのビットマップである。
【図５】図５は複数のスナップショットを追跡する説明のためのテーブルである。
【図６】図６は論理ボリュームについてユーザが設定可能な情報を示している。
【図７】図７はＩ／Ｏモニターの処理フローを示している。
【図８】図８は図７に示した監視ステップについての詳細処理フローを示している。
【図９】図９は本発明の他の実施例について論理ボリュームについてのユーザが設定可能な情報を示している。
【図１０】図１０は本発明の他の実施例による図７に示す監視ステップについての詳細処理フローを示している。
【図１１】図１１はストレージの使用情報を予測するためのデータテーブルを示している。
【図１２】図１２は本発明の他の実施例によるシステム構成を示している。
【図１３】図１３Ａ―１３Ｃはインターフェイスを示している。
【図１４】図１４は複数スナップショットプロセシングの例を説明している。
【図１５】図１５は複数スナップショットの追跡を説明するためのテーブルである。
【図１６】図１６はスナップショットビットマップを示している。
【図１７】図１７は複数スナップショットプロセシングの他の例を説明している。
【図１】
2006268830.tif 000003
【図２】
2006268830.tif 000004
【図３】
2006268830.tif 000005
【図４】
2006268830.tif 000006
【図５】
2006268830.tif 000007
【図６】
2006268830.tif 000008
【図７】
2006268830.tif 000009
【図８】
2006268830.tif 000010
【図９】
2006268830.tif 000011
【図１０】
2006268830.tif 000012
【図１１】
2006268830.tif 000013
【図１２】
2006268830.tif 000014
【図１３】
2006268830.tif 000015
【図１４】
2006268830.tif 000016
【図１５】
2006268830.tif 000017
【図１６】
2006268830.tif 000018
【図１７】
2006268830.tif 000019
【外国語明細書】
2006268830000001.pdf