(57)【要約】  記憶領域中の選択データを処理する方法、システム、記憶媒体及びコンピュータシステムである。記憶領域内の記憶位置は、該記憶位置のデータのみに処理を行う目的のためリクエスタにより特定される。データを管理するアプリケーション（例えば、データベースアプリケーション、ファイルシステム、ユーザアプリケーションプログラム）あるいは記憶マネージャを該リクエスタとすることができる。データが記憶される該記憶位置は、記憶マネージャやボリュームマネージャ等、処理を行うソフトウェアや、記憶マネージャと連携して動作する記憶領域複製機能等のアプリケーションによって求められる。処理を行うソフトウェアは、特定された位置に対してのみ処理を行うため、特定された記憶位置に記憶されたデータにのみ影響を与える。リクエスタは、実行される動作、及び特定された記憶位置のサブセットに対して処理を行う許可を与えられた要素を特定する。
2007515725.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶位置から成る記憶領域に対する処理を実行する要求に応じて、該複数の記憶位置のうち、各記憶位置が前記処理の判断基準に合致している第１の一組の記憶位置を特定し、
前記第１の一組の記憶位置を第２の一組の記憶位置と比較し、
前記記憶領域における第３の一組の記憶位置に対して前記処理を実行することを特徴とする方法。
【請求項２】
更に、各記憶位置が前記第１の一組の記憶位置及び前記第２の一組の記憶位置の両方に含まれる前記第３の一組の記憶位置を作成することを特徴とする請求項１に記載した方法。
【請求項３】
前記第２の一組の記憶位置はアプリケーション・プログラムによって指定されることを特徴とする請求項１に記載した方法。
【請求項４】
前記処理は複製であることを特徴とする請求項１に記載した方法。
【請求項５】
更に、一組の要素を求め、前記第１の一組の記憶位置は複数の記憶位置のサブセットから成り、前記一組の要素のうち１の要素は、前記複数の記憶位置のサブセットのうち少なくとも１のサブセットにおける各データに対して処理を行うことが許可されていることを特徴とする請求項１に記載した方法。
【請求項６】
前記第２の一組の記憶位置はリクエスト手段によって指定されることを特徴とする請求項１に記載した方法。
【請求項７】
更に、実行される処理を指定することを特徴とする請求項６に記載した方法。
【請求項８】
前記リクエスト手段は前記記憶領域のデータを管理することを特徴とする請求項６に記載した方法。
【請求項９】
前記リクエスト手段は前記記憶領域に対する一組の管理機能のうち１の管理機能を実行することを特徴とする請求項６に記載した方法。
【請求項１０】
前記リクエスト手段は前記第２の一組の記憶位置の各記憶位置に対応する前記記憶領域中の各物理的記憶位置を特定することを特徴とする請求項６に記載した方法。
【請求項１１】
前記第２の一組の記憶位置の各記憶位置は、開始記憶位置と、該開始記憶位置から開始する連続する記憶位置の数によって指定されることを特徴とする請求項６に記載した方法。
【請求項１２】
前記第２の一組の記憶位置の各記憶位置は一組の指標によって指定され、該一組の指標は、前記複数の記憶位置の各記憶位置に対する指標から成り、前記一組の指標の各指標は、前記指標に対する前記各記憶位置が前記第２の一組の記憶位置に含まれているか否かを示すことを特徴とする請求項６に記載した方法。
【請求項１３】
更に、第４の一組の記憶位置を求め、前記第３の一組の記憶位置に対して前記処理を実行した後で、前記第４の一組の記憶位置に対する第２の処理を実行することを特徴とする請求項６に記載した方法。
【請求項１４】
前記第２の一組の記憶位置はリクエスト手段によって指定され、前記処理及び前記第２の処理はリクエスタによって指定されることを特徴とする請求項１３に記載した方法。
【請求項１５】
前記記憶領域に対するふるいは、前記処理から成り、前記ふるいが指定されている場合、前記ふるいの各処理が前記第３の一組の記憶位置に対して実行されることを特徴とする請求項６に記載した方法。
【請求項１６】
複数の記憶位置から成る記憶領域に対して処理を実行する要求に応じて、該複数の記憶位置のうち、各記憶位置が前記処理の判断基準に合致している第１の一組の記憶位置を特定する特定モジュールと、
前記第１の一組の記憶位置を第２の一組の記憶位置と比較する比較モジュールと、
前記記憶領域における第３の一組の記憶位置に対して前記処理を実行する実行モジュールと、
から成るシステム。
【請求項１７】
更に、各記憶位置が前記第１の一組の記憶位置及前記第２の一組の記憶位置の両方に含まれる前記第３の一組の記憶位置を作成する作成モジュールから成る請求項１６に記載したシステム。
【請求項１８】
前記第２の一組の記憶位置はリクエスト手段によって指定されることを特徴とする請求項１６に記載したシステム。
【請求項１９】
更に、実行される処理を指定する指定モジュールから成る請求項１６に記載したシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶ボリューム等の記憶領域に記憶された選択データの処理に関する。
【背景技術】
【０００２】
情報は事業を動かす原動力である。データ・センターに障害が発生すると、数日間あるいは数週間にわたる予定外のダウンタイムや組織の生産性を脅かしかねないデータ損失を招く。日常の業務でデータや情報にますます依存するようになっている企業にとって、このような予定外のダウンタイムは企業の評価を下げ、企業収益に打撃を与える可能性がある。企業はますますコストを意識してきており、障害を予測し復旧するための対策をとっている。
【０００３】
多くの場合、上記のような対策としては、企業の業務に利用される「実」データである一次データあるいは製造データを保護する。様々な物理的記憶装置上であって多くの場合は遠隔地にある一次データのコピーを作成し、確実に該一次データの１バージョンを、一貫して、連続的に利用できるようにする。このようなデータのコピーは出来るだけ頻繁に更新し、一次データが破損した場合や復元する必要がある場合に該複製を利用できるようにすることが好ましい。
【０００４】
ハードウェアあるいはソフトウェアの障害が発生した場合やその後の復旧作業における２つの関心事は、データ損失を防止することと、一次データ記憶領域とバックアップ・データ記憶領域との間で一貫性を保つことである。一貫性により、たとえ一次データのバックアップコピーが一次データと同一でない場合でも（例えば、バックアップコピーに対する更新が一次データに対する更新に遅れをとる場合がある）、バックアップコピーが過去の時点で実際に起きた一次データの状態を常に表すことが保証される。アプリケーションが一次データに対する一連の書き込み作業Ａ、Ｂ、Ｃを実行する場合、バックアップコピーに対してこれらの書き込み作業を同様の順序で実行することにより一貫性を保つことができる。バックアップコピーは、一次データにおいて実際に発生していない状態、例えば、書き込み作業Ｃが書き込み作業Ｂの前に実行された場合に起こり得た状態を反映することはない。
【０００５】
一貫性を実現し、データ損失を回避する方法の１つには、一次データに対する各更新を、好ましくはリアルタイムで、バックアップコピーに対しても行う方法がある。このように「重複した」更新は、一次データを管理するアプリケーション・プログラムと同様のプログラムによって、一次データの１以上の「ミラー」コピーに対して局所的に行う。しかしながら、ミラーリングされたコピーを局部的に作成してもデータ損失を防止することはできないため、多くの場合は一次データを二次的な場所に複製する。一次データが破損しており、一次データを破損した更新の結果を複製によりデータのバックアップコピーに反映させる場合、作成されたデータのコピー毎に、破損したデータを「バックアウト」し一次データを以前の状態に復元することが必要である。以前は、このような問題を、一次データの破損前に作成されたバックアップコピーから一次データを復元することにより解決していた。一次データが一旦復元されると、一次データ全体が各バックアップコピーにコピーされ、一次データとバックアップコピーの間における一貫性を確保する。その後ようやく一次データを用いて更新や複製等の通常の処理を行うことができるのである。
【０００６】
一次データ全体を各バックアップコピーにコピーする上述の技術により、一次的な場所と二次的な場所の間におけるデータの一貫性が確保される。しかしながら、一次データ全体を二次的な場所における各バックアップコピーにコピーする方法では、一次データのうち小さいサブセットのみが変更された場合にネットワークの帯域幅を無駄に使用してしまうことになる。更に、ネットワークを介して一次データ全体をコピーする場合、特にテラバイト単位のデータのようにデータ量が大きい場合は、データのバックアップコピーを作成するために膨大な時間がかかる。更に、ボリュームの記憶位置全てに有用なデータが記憶されているわけではない。ボリュームを使用するアプリケーション（ファイル・システムやデータベース等）は、一般的に、内容の重要性が低く通常アクセスできないフリーブロックを有する。このような記憶箇所を二次ノードにコピーする必要はない。したがって、一次データ全体を二次ノードの各バックアップコピーにコピーすると、通常の処理の開始が遅れてしまい、ダウンタイムが発生するために企業が多額の費用を負担しなくてはならない場合がある。
【０００７】
より小さいデータを複製する方法の１つに、データのコピーを記憶している別の記憶領域中の領域に対して変更されている各記憶領域中の領域を常時監視し、変更領域のみをコピーする方法がある。変更領域を常時監視する方法の一つに、ビットマップ（ここでは変更マップあるいはマップとも呼ぶ）を利用する方法がある。ここで、記憶領域（ボリューム）は各領域に分割されており、ビットマップ中の各ビットは記憶領域（ボリューム）の特定の領域に対応する。データのバックアップコピーに対して各領域におけるデータが変更された場合、各ビットは論理１に設定される。バックアップコピーの作成以降データが変更されていない場合、各ビットは論理０に設定される。論理１に設定されているビットを有する領域のみを複製する。しかしながら、この方法にも問題点がある。６４Ｋの領域中で１つのビットのみが変更される場合、６４Ｋのデータ全体が各二次ノードにコピーされる。記憶領域（ボリューム）全体をコピーする場合と比較すれば改善はされているが、上記方法は依然として必要以上のデータを複製するものである。データ変更マップの使用については、図２を参照して以下で更に詳しく説明する。
【０００８】
更に、このようなデータ変更の常時監視は、データの論理的構成に対してよりもむしろ、選択ファイル等、記憶ボリュームの各領域に対して実行される。記憶ボリュームの全変更領域は上述のデータ変更マップを用いて同期がとられる。選択ファイルの一部は記憶ボリューム上の複数領域に分散している場合があるため、データ変更を常時監視する方法では、単一のファイルにおける変更部分等、異なるボリューム上で論理的な１組のデータの一部を選択的に同期させることはできない。
【０００９】
このような制限はデータが非常に大きい場合に問題となる。例えば、ボリューム上の２０個の大きいファイルのうち１個のファイルのみが破損すると仮定する。上述のデータ変更マップを用い、２０個の大きいファイルのうち何れかの一部を記憶している全変更領域を同期させる。更に、破損していないファイルに対する変更が無駄に「バックアウト」されてしまい、これらのファイルは同期処理の間は利用することができない。例えば、ファイルがデータベースを含む場合、データを同期させる間、ボリュームの変更領域に記憶されている全てのデータベースを利用することができなくなる。これらのデータベースはオフラインにしてからオンラインに戻し、データベースがオフラインであった間に発生したトランザクションのログを各データベースに適用させる必要があるだろう。破損していないファイルを処理すると、同期処理を大幅に遅らせてしまうとともにリソースを無駄遣いしてしまう。
【００１０】
データの一部のみを二次ノードに複製することが望ましいが、殆どの複製機能は、記憶位置に記憶されているデータの種類や趣旨を考慮せずに記憶位置の内容をコピーするように構成されている。データの種類や趣旨を考慮した処理を実行するためには、通常、アプリケーション特有のソフトウェアを利用する。例えば、個々のファイルのみをコピーするには、各ファイルに含まれている記憶位置、すなわち複製機能では通常利用できない情報について知ることが必要である。個々のファイルはＸＣＯＰＹのようなファイルコピー・ユーティリティによりコピーすることが可能であるが、このようなユーティリティは、通常、ファイルの選択部分に対して実行されるものではない。例えば、１ギガバイトのデータを記憶しているファイルにおいて１ビットのみが変更された場合、ファイルコピー・ユーティリティは、該１ギガバイトのデータ全体をコピーして変更を取り込まなくてはならない。大量のデータ及び／またはファイルから選択されたデータを、より高速に復元及び／または同期させることが必要である。
【００１１】
単一のファイルにおける変更部分やその他の論理的な一組のデータ等、異なる記憶領域に記憶された１以上のバージョンのデータから選択されたデータのみを同期させる機能が求められている。この方法では、不必要なデータをコピーせずに選択データのみを同期させることが好ましい。また、この方法では、１以上のスナップショットを有するデータを用いてアプリケーションのパフォーマンスに対する影響を最小限にすべきである。また、記憶領域に記憶された他のデータが、同期されている選択データの一部ではない場合、該他のデータを利用できるようにし、加えられた変更を保持できるようにするべきである。
【発明の開示】
【００１２】
本発明は、記憶領域における選択データを処理する方法、システム、コンピュータにより読み取り可能な記憶媒体、及びコンピュータ・システムを含む。記憶領域中の記憶位置は、データを管理するアプリケーション（例えば、データベース・アプリケーション、ファイル・システム、ユーザ・アプリケーション・プログラム）により、該記憶位置のデータのみに対して処理を行う目的で特定される。そして、データが記憶されている該記憶位置は、記憶マネージャやボリューム・マネージャ等、処理を行うソフトウェアや、記憶マネージャやボリューム・マネージャと連携して動作する記憶領域複製機能等のアプリケーションに送られる。上記処理を行うソフトウェアは、特定された位置に対してのみ処理を行うため、特定された記憶位置に記憶されたデータにのみ影響を与え、その他特定されていない記憶位置のデータには影響を与えることはない。
【発明を実施するための最良の形態】
【００１３】
本発明は、添付図面を参照することでより良く理解できるとともに、その多くの目的、特徴及び利点を当業者に明らかにすることができる。
別々の図面中で同一の符号が用いられている場合は、類似する要素あるいは同一の要素を示す。
【００１４】
本発明を十分に理解するためには、図面を参照しながら添付請求項とともに以下の詳細な説明を参照する。本発明はいくつかの実施例に関連して説明されているが、本発明はここに挙げる実施例に限定されるものではなく、添付請求項によって定義されるような本発明の範囲内に無理なく含まれるような代案、変更、及び等価要素を包含するものである。
【００１５】
以下の説明では、本発明を十分に理解できるように多くの詳細な具体策を説明のために示す。しかしながら、このような詳細な具体策がなくても本発明を実施できることは当業者に明らかであろう。
【００１６】
明細書中における「１の実施例」や「実施例」という語は、該実施例に関連して説明される特定の特徴、構造、あるいは特性が、本発明の少なくとも１実施例に含まれることを意味する。明細書中に「１の実施例において」という語句があっても、それは必ずしも同一の実施例を示すものではなく、相互に他の実施例を除外する別々の実施例あるいは代替的な実施例を示すものでもない。更に、様々な特徴について説明するが、それらは、ある実施例で見られる特徴であり、その他の実施例ではみられない特徴である場合がある。同様に、様々な要件が説明されているが、それらはいくつかの実施例についての要件であり、その他の実施例についての要件ではない場合がある。
【００１７】
専門用語について
記憶装置は記憶領域の種類によって異なるものであり、ブロック、バイト範囲、ファイル、ファイル・クラスタ、あるいはその他の記憶対象の種類に応じた単位で規定できることを当業者は理解できるであろう。ここで、「記憶領域」及び「記憶ボリューム」という語はあらゆる種類の記憶領域あるいは対象を広く示すために用いられ、「領域」及び／またはブロックという語は、記憶ボリューム上の記憶位置を示すために用いられる。ボリューム、領域、ブロック、及び／または位置という語は限定的なものではなく、ここではあらゆる種類の記憶対象を広く示すために用いられている。
【００１８】
記憶ボリュームの各ブロックは、通常、一定のサイズを有する。例えば、５１２バイトのブロック・サイズが一般的に用いられている。よって、１，０００メガバイトの容量を有するボリュームは５１２バイトのブロックを２，０４８，０００個含む。これらのブロックはブロック番号（ブロック・アドレスとも呼ばれる）を指定することにより読み出し・書き込むことができる。通常、１ブロックは、全体として読み出し・書き込みを行わなければならない。ブロックは各領域にグループ化されており、例えば、一般的な領域のサイズは３２キロバイトである。なお、ブロック及び領域は一定のサイズを有する一方で、ファイル・サイズは可変にすることができる。したがって、単一ファイル内でデータを同期させる際には、複数の領域からデータをコピーすること必要な場合がある。
【００１９】
各記憶ボリュームは、該ボリュームの各領域に加えられた変更を追跡するためのデータ変更マップをそれぞれ有する。なお、データ変更マップをビットマップとして構成することは必ずしも必要ではない。データ変更マップは、１組の論理変数や、領域の指標テーブルとして、あるいは、記憶ボリュームの領域内のデータに加えられた変更を追跡する手段を用いて構成することができる。
【００２０】
多くの環境において、複製データは、該複製データが作成された時点における一次ボリュームの画像を保存するために変更されない。このように変更されない複製ボリュームは静的複製ボリュームと呼ばれることがあり、複製データは静的複製データと呼ばれる。静的複製ボリュームにデータが誤って書き込まれることがあるが、この場合、各データ変更マップは該複製ボリュームが変更されたことを示す。
【００２１】
その他の環境においては、複製データが作成された後に複製データを独立して更新できるようにするのが望ましい。例えば、一次ボリューム及び複製ボリュームは、通常、分散システムにおける別々のノードによって管理され、同一の更新トランザクションを両ボリュームに適用することができる。一方のボリューム上のデータを管理するノードに異常が発生すると、他方のボリュームを用いて、異常が起きたボリュームを現在のデータの状況に同期させる。別々に更新された複製は、複製ボリュームについて別個のビットマップを保持することによりサポートされる。
【００２２】
序論
本発明は、記憶領域における選択データを処理する方法、システム、コンピュータで読み取り可能な記憶媒体、及びコンピュータ・システムを含む。記憶領域内の記憶位置は、該記憶位置のデータのみに処理を行う目的でリクエスタ（requester: リクエスト手段）により特定される。データを管理するアプリケーション（例えば、データベース・アプリケーション、ファイル・システム、ユーザ・アプリケーション・プログラム）や記憶マネージャを上記リクエスタとすることができる。データが記憶されている該記憶位置は、記憶マネージャやボリューム・マネージャ等、処理を行うソフトウェアや、記憶マネージャと連携して動作する記憶領域複製機能等のアプリケーションによって求められる。処理を行うソフトウェアは、特定された位置に対してのみ処理を行うため、特定された記憶位置に記憶されたデータにのみ影響を与え、その他の特定されていない記憶位置のデータには影響を与えることはない。リクエスタは、実行される動作、及び、特定された記憶位置のサブセットに対して処理を行う許可を与えられた要素を特定する。
【００２３】
図１は、本発明が動作できるシステム環境の一例を示す。２つのノード、すなわち一次ノード１１０Ａ及び二次ノード１１０Ｂが示されている。ソフトウェア・プログラム・アプリケーション１１５Ａ及び記憶マネージャ／リプリケータ１２０Ａが一次ノード１１０Ａ上で動作する。アプリケーション１１５Ａは、変更ログ１３０Ａ及びデータ記憶装置１４０Ａに記憶することができる一次データを管理する。
【００２４】
変更ログ１３０Ａは、データに加えられた変更がデータ記憶装置１４０Ａに書き込まれる前に該変更が書き込まれる「ステージング領域」と考えられる。変更ログ１３０Ａ等の変更ログは単にログとも呼ばれ、いくつかの異なる方法で構成することができる。例えば、ログのエントリにより、データの特定された領域に対して実行される処理を表すことができる。または、ログを、各領域に対する一組の処理を保持するように構成してもよい。その他のログ構造も可能であり、本発明を実施するために特定の変更ログ構造が要求されることはない。本発明は、ログがなくても実施することが可能であるが、ログを用いることが好ましい。
【００２５】
記憶マネージャ／リプリケータ１２０Ａは、アプリケーション１１５Ａによる一次データへの書き込み動作をインターセプトし、該一次データへの変更を二次ノード１１０Ｂに複製する。記憶マネージャ／リプリケータ１２０Ａにより行われる複製は、一次データ記憶装置及び二次データ記憶装置の両方に更新が一貫して適用される限り、同期的、非同期的、及び／または周期的に行うことができる。
【００２６】
アプリケーション１１５Ａ及び記憶マネージャ／リプリケータ１２０Ａは、一次ノード１１０Ａ等、同一のコンピュータ・システム上で動作できるが、一次ノード１１０Ａによって表されるハードウェア及びソフトウェア構成は多様である。アプリケーション１１５Ａ及び記憶マネージャ／リプリケータ１２０Ａは、別々のコンピュータ・システム上で動作することもできる。更に、アプリケーション１１５Ａ及び記憶マネージャ／リプリケータ１２０Ａを、相互に連携して動作する別個の記憶管理モジュール及び複製モジュールとして構成することもできる。アプリケーション１１５Ａ自体が何らかの記憶管理機能を提供することもできる。
【００２７】
変更ログ１３０Ａは、非永続的あるいは永続的な記憶装置に記憶することができ、データ記憶装置１４０Ａは、１以上の物理的記憶装置を含むことができる論理記憶装置上に記憶された１組のデータの論理的表現である。更に、図中ではアプリケーション１１５Ａ、記憶マネージャ／リプリケータ１２０Ａ、変更ログ１３０Ａ、及びデータ記憶装置１４０Ａが、一次ノード１１０Ａ内で相互に連結されているが、このような連結状態は単なる例示であり、他の連結構造を採用することも可能であることを当業者は理解できるであろう。例えば、アプリケーション１１５Ａ、記憶マネージャ／リプリケータ１２０Ａ、変更ログ１３０Ａ、及びデータ記憶装置１４０Ａのうち１以上の要素を、物理的には一次ノード１１０Ａによって表されるノードの外部であって該ノードに結合することができる。
【００２８】
二次データ記憶装置１４０Ｂは一次データ記憶装置１４０Ａから論理的に分離されているが、物理的に分離することも可能である。一次ノード１１０Ａの記憶マネージャ／リプリケータ１２０Ａは、複製リンク１２０Ｃを介して二次ノード１１０Ｂの記憶マネージャ／リプリケータ１２０Ｂと通信を行う。また、二次ノード１１０Ｂは、変更ログ１３０Ｂ及び一次データの複製を記憶するためのデータ記憶装置１４０Ｂを有し、二次ノード１１０Ｂのハードウェア及びソフトウェア構成は上記と同様に種々の構成をとることができる。変更ログ１３０Ｂ等の変更ログは、二次ノード１１０等の二次ノード上に必ずしも存在していなくてもよい。
【００２９】
図２は、２つの時点における一次データの例を示し、一次データ２１０Ａは時点Ａに現れた一次データを示し、二次データ２１０Ｂは時点Ｂに現れた一次データを示す（時点Ｂは時点Ａより後）。また、時点Ｂにおける一次データの８つの領域を示す対応データ変更マップ２２０が説明のため示されている。データ変更マップ２２０に示すように、領域２、３及び７における一次データが時点Ａと時点Ｂの間で変更されている。データのスナップショットを時点Ａで撮ったと仮定する。その後に一次データが破損すると、一次データをスナップショットが撮られた時点におけるデータの状態に復元することができる。この復元処理は、領域２、３、及び７（データ変更マップでは値１を有する領域として特定されている）をコピーすることにより行われる。あるいは、スナップショットを最新の状態にするために領域２、３及び７を時点Ｂにおける一次データ２１０Ｂからスナップショットへコピーすることもできる。この方法によれば、全てのデータ（例えば、非常に大きいファイルにおける全てのデータ）を一組のデータから別のデータにコピーせずに、データの２つのコピーを同期させることが可能になる。
【００３０】
上記のように、変更の局所的な追跡は非効率的な場合がある。本発明は、選択された記憶位置のみに対する処理を可能にするため、「ボリュームふるい」あるいは単に「ふるい」と称する機構の使用を提案する。ふるいについては、以下の段落で更に詳しく説明する。
【００３１】
ふるい
概念的には、ふるいは、記憶領域（ボリューム）のユーザ（人あるいはアプリケーション・プログラム）が該記憶領域（ボリューム）の選択された記憶位置に対して（記憶領域全体に対してだけではなく）どの処理を実行すべきか示すことができるようにする機構である。ふるいは、きめ細かいアクセス・処理制御機構及びフィルタとして機能する。ボリュームふるいは多くの用途に利用され、例えば、記憶領域（ボリューム）中の選択された記憶データのみを複製したり、選択された各組のデータを複数の二次ノードへ複製（一対多数、多数対多数、多数対一）したり、クラスタ・アクセス制御や低レベルのデータ機密保護等を行う。
【００３２】
一般的に、ふるいは、特性、及び該特性によって示される処理が実行される1以上の位置から成る集合という２つの構成要素から成ると考えられる。該特性は、記憶領域（ボリューム）に対して実行される処理を抽象化したものである。処理の例としては、複製、バックアップ、読み出し、書き込み、クラスタ内のデータへのアクセス、圧縮、暗号化、ミラーリング、チェックサムによるデータの照合等が挙げられる。特性は、例えば、上記処理を実行するソフトウェアにより実行される一組の指示で構成することができる。このような一組の指示は、コールバック機能として実現することができ、該コールバック機能では、別のモジュールが処理の実行を要求した場合に、処理を実行するソフトウェアが処理の実行を要求する上記別のモジュールに、呼び出す機能の名称を提供する。
【００３３】
１以上の記憶位置から成る一組の記憶位置は、１以上の範囲から成る一組の範囲として表すことができる。ファイル範囲は、物理的な記憶ボリューム上の物理的な記憶位置のレイアウトを含む。ファイル範囲は、通常、ファイル中の開始位置を示すアドレス及びサイズ（該アドレスから始まる一連の記憶位置の数）を含む。単一のファイルにはいくつかの非連続部分（その各々が開始位置とサイズを有する）を含めることができる。ファイル範囲はファイル・クラスタ等の記憶単位で表すことができるが、ここでは簡略化のためにボリューム上の位置として示すことを当業者は理解できるだろう。
【００３４】
一組の範囲は、基となるボリュームの一部を示す範囲マップ（あるいはビットマップ）として表すことができる。範囲（アドレス範囲）がふるいの範囲マップにある場合、ふるいの特性をそのアドレス範囲における記憶位置に適用することが可能である。マップに存在しない範囲は、ふるいの特性で表される処理による影響を受けない。例えば、ふるいは、複製の特性、及び複製されるボリュームの一部を示す範囲により形成されるが、ふるいで示されていないボリュームの一部は複製されない。
【００３５】
以下の段落において、ふるいにより実行される処理の例について説明し、ふるいの実施例について更に詳細に説明する。
【００３６】
ふるいによる処理例
図３Ａは、全てのデータが全ての二次ノードに複製され際の１つの一次記憶ボリューム及び２つの二次記憶ボリュームに対するデータの例を示す。複製ボリューム３１０Ａ、３１０Ｂ及び一次ボリューム３１０Ｃは９つの記憶位置に対するデータを示し、３つの領域Ｒ１、Ｒ２、Ｒ３はそれぞれ３つの記憶位置を含む。記憶ボリューム３１０Ａ、３１０Ｂ、３１０Ｃにおいて、領域Ｒ１の記憶位置１、２、３には、それぞれ値「Ａ」、「ｚ」、「Ｇ」を有するデータが記憶されている。領域Ｒ２の記憶位置４、５、６には、それぞれ値「Ｂ」、「９」、「？」を有するデータが記憶されている。領域Ｒ３の記憶位置７、８、９には、それぞれ値「ｑ」、「Ｃ」、「＠」を有するデータを記憶されている。二次記憶ボリューム３１０Ａ、３１０Ｂは一次ボリューム３１０Ｃと同期する。
【００３７】
図３Ｂは、ボリュームふるいを用いて複製されたデータの一例を示す。ふるい３２０Ａは、位置１から始まる６つの位置から成る一組の位置に適用される複製ボリューム＃１（複製ボリューム３１０Ａ）への複製処理を示す特性を有する。本例では、ふるい３２０Ａは、それぞれ値「ｑ」、「Ｃ」、「＠」を有する領域Ｒ３の記憶位置７、８、９に適用される。
【００３８】
ふるい３２０Ｂは、位置１から始まる６つの位置から成る一組の位置に適用される複製ボリューム＃２（複製ボリューム３１０Ｂ）への複製処理を示す特性を有する。本例では、ふるい３２０Ａは、それぞれ値「Ａ」、「ｚ」、「Ｇ」を有する領域Ｒ１の記憶位置１〜３、及び領域２の記憶位置４〜６に適用される。
【００３９】
図３Ｃは、一部重複するボリュームふるいを用いて複製されたデータの一例を示す。ふるい３２０Ａは、位置５から始まる５つの位置から成る一組の位置に適用される複製ボリューム＃１（複製ボリューム３１０Ａ）への複製処理を示す特性を有する。本例では、ふるい３２０Ａは、それぞれ値「Ｂ」、「９」、「ｑ」、「Ｃ」、「＠」を有する領域Ｒ２、Ｒ３の記憶位置５、６、７、８、９に適用される。
【００４０】
ふるい３２０Ｂは、位置１から始まる６つの位置から成る一組の位置に適用される複製ボリューム＃２（複製ボリューム３１０Ｂ）への複製処理を示す特性を有する。本例では、ふるい３２０Ａは、それぞれ値「Ａ」、「ｚ」、「Ｇ」を有する領域Ｒ１の記憶位置１〜３、及びそれぞれ「Ｂ」、「９」、「？」を有する領域２の記憶位置４〜６に適用される。記憶位置５、６は複製ボリューム３１０Ａ、３１０Ｂの両方に複製される。
【００４１】
図３Ｄは、変更データのみを複製するボリュームふるいを用いて複製されたデータの一例を示す。本例において、ふるい３２０Ａ、３２０Ｂは図３中に示したのと同様であるが、特性は複製処理が変更された記憶位置のみに適用されることを規定している。変更された記憶位置のデータのみが複製される。本例では、領域５のビットのみが変更されていることを示すデータ変更マップ３３０が示すように、値「９」から値「２」へ変更された記憶位置５のデータのみが変更されている。値「２」は、複製ボリューム３１０Ａ、３１０Ｂの両方に複製される。
【００４２】
図３Ｅは、複数の特性（複数の動作を示す）を有するボリュームふるいを用いて複製されたデータの一例を示す。ふるい３２０Ａは、圧縮及び複製ボリューム＃１（複製ボリューム３１０Ａ）への複製処理を示す特性を有する。上記処理は両方とも、位置５から始まる５つの位置から成る一組の位置に適用されるが、これらの位置が変更されるデータを格納している場合のみ、上記処理が実行される。本例において、ふるい３２０Ａは、それぞれ値「２」、「？」、「ｑ」、「Ｃ」、「＠」を有する領域Ｒ２、Ｒ３の記憶位置５、６、７、８、９に適用される。データ変更マップ３３０は記憶位置５のデータのみが変更されていることを示す。一次ボリューム３１０Ｃの記憶位置５におけるデータは圧縮され、その後複製ボリューム３１０Ａに複製される。
【００４３】
また、ふるい３２０Ｂは、位置１から始まる６つの位置から成る一組の位置が変更されるデータを記憶している場合のみ、これらの位置に適用される圧縮及び複製ボリューム＃２（複製ボリューム３１０Ｂ）への複製処理を示す特性を有する。ふるい３２０Ｂは、それぞれ値「Ａ」、「ｚ」、「Ｇ」を有する領域Ｒ１の記憶位置１〜３、及び、それぞれ値「Ｂ」、「９」、「？」を有する領域Ｒ２の記憶位置４〜６に適用される。記憶位置５におけるデータは圧縮され、その後複製ボリューム３１０Ｂに複製される。
【００４４】
図３Ｆは、単一のボリューム上のボリュームふるいを用いて複製されたデータの一例を示す。ふるい３１０Ａ−１は、位置３、４、５に記憶されたデータに対して実行されるデータの圧縮を示す特性を有する。ふるい３１０Ａ−２は、複製ボリューム＃１への複製を示す特性を有する。複製される一組の位置は、位置１から始まる６つの位置を含む。両方のふるいを適用する際、位置３、４、５のデータがふるい３１０Ａ−１にしたがって圧縮され、位置１〜６のデータがふるい３１０Ａ−１にしたがって複製ボリューム３１０Ａに複製される。記憶位置３、４、５のデータは複製処理の前に圧縮されるが、記憶位置１、２、６のデータは複製処理の前に圧縮されない。
【００４５】
図３Ｇは、コールバック機能を用いて複製されたデータの一例を示す。ふるい３２０Ａは、位置５から始まる５つの位置から成る一組の位置のうちデータが変更されている位置に適用される複製ボリューム＃１（複製ボリューム３１０Ａ）への複製処理を示す特性を有する。更に、Ｃａｌｌｂａｃｋ＿Ｆｕｎｃｔｉｏｎ１を呼び出す指示がふるいに含まれている。本例において、ふるい３２０Ａは、それぞれ値「Ｂ」、「９」、「ｑ」、「Ｃ」、「＠」を有する領域Ｒ２、Ｒ３の記憶位置５、６、７、８、９に適用される。データ変更マップ３３０は記憶位置５のデータのみが変更されていることを示す。Ｃａｌｌｂａｃｋ＿Ｆｕｎｃｔｉｏｎ１はデータが複製される前に呼び出される。
【００４６】
ふるい３２０Ｂは、位置１から始まる６つの位置から成る一組の位置のうち変更されたデータを記憶している位置に適用される複製ボリューム＃２（複製ボリューム３１０Ｂ）への複製処理を示す特性を有する。更に、Ｃａｌｌｂａｃｋ＿Ｆｕｎｃｔｉｏｎ２を呼び出す指示がふるいに含まれている。ふるい３２０Ｂは、それぞれ値「Ａ」、「ｚ」、「Ｇ」を有する領域Ｒ１の記憶位置１〜３、及び、それぞれ値「Ｂ」、「９」、「？」を有する領域Ｒ２の記憶位置４〜６に適用される。したがって、記憶位置５のデータは、Ｃａｌｌｂａｃｋ＿Ｆｕｎｃｔｉｏｎ２の呼び出し後、複製ボリューム３１０Ｂに複製される。
【００４７】
図４は、本発明を実施するための方法を示すフローチャートである。「処理が実行される記憶領域における指定された一組の位置を求める」ステップ４１０で、指定された一組の位置が求められる。これらの記憶位置は、記憶領域におけるデータの種類及内容を知っているアプリケーションにより提供されることが好ましい。指定される記憶位置は、処理が実行されるデータを記憶している記憶位置のみである。該処理は、「実行する処理を決定する」ステップ４２０において決定される。例えば、ふるいの特性にアクセスすることにより、実行する処理を決定することができる。そして、制御は「指定された一組の位置に対してのみ処理を実行する」ステップ４３０に進み、該ステップ４３０では、指定された一組の位置に対してのみ処理が実行される。指定されていないその他の記憶位置におけるデータは処理による影響を受けない。
【００４８】
以下の段落でふるいの実施例について説明するが、これは単なる一例であって、本発明の範囲を限定するものではない。
【００４９】
ふるいの実施例
ボリュームふるいは、特性及び該特性によって示される処理が実行される１以上の記憶位置から成る一組の記憶位置といえる。ふるいの特性はビット列として表すことができ、該ビット列中の各ビットは予想されるボリューム処理のうちの１つに対応する。ある特定のビットが設定されると、対応する特性がアクティブとなり、基になる記憶領域（ボリューム）に記憶されたデータに対して対応する処理が実行される。ビット列に２以上のビットが設定されている場合、ふるいは複数の特性を表す。たとえば、複製の特性に対応するビット位置がＶＯＬ＿ＳＩＥＶＥ＿ＰＲＯＰＥＲＴＹ＿ＲＥＰＬＩＣＡＴＥであり、圧縮に対応するビット位置がＶＯＬ＿ＳＩＥＶＥ＿ＰＲＯＰＥＲＴＹ＿ＣＯＭＰＲＥＳＳである場合、ボリュームふるいの特性を（ＶＯＬ＿ＳＩＥＶＥ＿ＰＲＯＰＥＲＴＹ＿ＲＥＰＬＩＣＡＴＥ／ＶＯＬ＿ＳＩＥＶＥ＿ＰＲＯＰＥＲＴＹ＿ＣＯＭＰＲＥＳＳ）に設定することにより、ボリュームの関連部分の複製を圧縮すべきであることを示すことができる。
【００５０】
複数のふるいを様々な特性により記憶領域（ボリューム）に適用することができる。また、ふるいは、ふるいの特性によって示される処理を特定の一組の位置に対してだけでなくクラスタ中の特定のデータ、複製用の二次ノード、及び／またはその他の同様な要素に適用することを示す他の要素を有する場合がある。したがって、例えば、いくつかの二次ノードの各々に複製されるボリュームの領域を、データの特定部分にアクセスすることができるクラスタ中のノードとともに示すことができる。
【００５１】
ふるいの第２の構成要素は、特性によって示される処理が適用される１以上の記憶位置からなる一組の記憶位置である。１の実施例において、ふるいは、メモリに読み込まれる際に、範囲リスト（オフセット−長さの組み合わせ）として永続的に記憶され、ビットマップに展開することができる（各ビットは一定のサイズのボリューム領域／ブロックを現す）。各ビットが領域を表しているビットマップをより速く、より容易に操作し、検索することが可能であるため、所属の問い合わせに対してより迅速に応答できる。範囲リストはビットマップを圧縮したもの（長さがコード化されているもの）と考えることができる。範囲リストはビットマップよりも小さいため永続的な記憶により適している。範囲マップの代わりに時間ツリー・ベース表現を採用することもできるが、この場合、高速の索引付けが可能であるものの操作はより難しくなる。
【００５２】
上記のように、１以上のふるいをある所定のボリュームに適用することができる。例えば、上述のような圧縮した複製ふるいを考えてみる。特性の組み合わせを有する単一のふるいを適用する代わりに、ユーザは（人あるいはアプリケーション・プログラム）、記憶領域（ボリューム）における指定された位置のデータのみが圧縮後に複製され、他の記憶位置のデータは圧縮されずに送られるよう、２つのふるい（１つはＶＯＬ＿ＳＩＥＶＥ＿ＰＲＯＰＥＲＴＹ＿ＲＥＰＬＩＣＡＴＥに対応し、一方はＶＯＬ＿ＳＩＥＶＥ＿ＰＲＯＰＥＲＴＹ＿ＣＯＭＰＲＥＳＳに対応する）を適用することを選択することができる。複数のふるい特性の間で競合が発生する場合や、特性の組み合わせに意味がない場合がある。このような問題は、所定の処理を許可するか中途で終了するか決定する指示でふるいを実行することにより解決できる。各処理は、開始前に、該処理に対応する何れかのふるいに照会し、領域（ボリューム）アドレス空間における指定された一組の位置に対して該処理を実行するべきか否か確認するように構成される。
【００５３】
特性及び一組の位置を有する上述のふるいは、ボリューム・アドレス空間のみを表しているという点で、一次元的なものと考えられる。ふるい機構の機能及び能力を向上するために、ふるいに他の側面を追加することができる。追加する側面としては、例えば、（所定の範囲について）古い特性をある要素に適用することが挙げられ、この要素が追加の側面を形成する。追加する側面の意味は、それをふるい特性と組み合わせることによって示すことができ（該側面はメタ特性と考えられる）、該側面の要素自体はそれらを範囲リストに加えることにより指定することができる。
【００５４】
例えば、（ＶＯＬ＿ＳＩＥＶＥ＿ＰＲＯＰＥＲＴＹ＿ＷＲＩＴＥ／ＶＯＬ＿ＳＩＥＶＥ＿ＰＲＯＰＥＲＴＹ＿ＣＬＵＳＴＥＲ）というふるい特性と、｛［２０，４５，（Ｎ１）｝，［１０００，＊，（Ｎ１，Ｎ２，Ｎ３）｝｝という二次元的な範囲リストに対し、ふるいがクラスタ処理に適用され、側面自体がタプル（Ｎ１）及び（Ｎ１，Ｎ２，Ｎ３）によって表されることを示すＶＯＬ＿ＳＩＥＶＥ＿ＰＲＯＰＥＲＴＹ＿ＣＬＵＳＴＥＲというメタ特性により追加の側面が表される。このふるいは、クラスタ内の１つのノードＮ１がアドレス範囲［２０，４５］に書き込める一方、アドレス範囲１０００からボリュームの末尾まではノードＮ１，Ｎ２，Ｎ３のいずれかによって書き込めることを示す。
【００５５】
その他、追加の側面を表す別の方法として、側面中の各要素に対してそれぞれ一次元的なふるいを持つ方法がある。この表現方法では、１つの範囲マップが各追加側面における各要素に対して存在する。上記の例では、ＶＯＬ＿ＳＩＥＶＥ＿ＰＲＯＰＥＲＴＹ＿ＣＬＵＳＴＥＲという追加側面に対して、ノードＮ１は｛［２０，４５］，［１０００，＊］｝、ノードＮ２は｛［１０００，＊］｝、ノードＮ３は｛［１０００，＊］｝というふるいを有する。この表現方法は重複的であり、上述の表現方法より大きい記憶空間を必要とするが解釈はより容易である。
【００５６】
１の実施例では、構成データベースにおける記憶領域（ボリューム）のレコードを介して、ふるいが記憶領域に対応付けられている。ふるいに対してトランザクション処理を実行できるよう、ふるいは新しいタイプの構成レコードとして表される。１の実施例では、ふるいはデータ管理ソフトウェア及び／または複製ユーティリティのホストとして働くコンピュータ・システムのカーネル・メモリに読み込まれるが、これは殆どのふるい特性は記憶領域（ボリューム）へのＩ／Ｏパスに影響するからである。
【００５７】
ある特定の記憶領域（ボリューム）が多数のふるいを有する場合があるため、別の実施例では、ふるいを記憶するためのボリュームを複数組設ける。１組のボリュームは、ソースデータ・ボリュームの他にボリュームに対するメタデータを記憶するための独立したボリュームを含む。ふるいはソースデータ・ボリュームに対するメタデータを含むものと考えられる。
【００５８】
１の実施例では、管理者コマンドやアプリケーション・プログラミング・インターフェース（ｉｏｃｔｌやライブラリ・コールを使用するＡＰＩ）を介して、ふるいを変更することができる（たとえば、ふるい特性を設定あるいは変更したり、範囲リストを追加、変更、削除したりすることができる）。１の実施例では、ふるいは、変更キーにより保護され、正しい変更キーが提供された場合にのみふるいを変更することができる。該変更キーはＮＵＬＬに設定することができ、この場合は、ふるいを変更するためにキーを提供してはならない。本例では、ふるいは、システム（例えば、Ｕｎｉｘにおけるルートディレクトリ）（Unixは商標）の管理者、あるいはシステムの権利を有するアプリケーション（例えば、カリフォルニア州マウンテンビューのベリタスソフトウェア株式会社が提供するベリタス・ファイル・システム（ＶｘＦＳ）等のファイル・システム）によってのみ、ふるいを変更することができる。
【００５９】
ふるいの応用例
上記のように、複製ユーティリティは記憶領域（ボリューム）全体の内容を複製するように設計されている。しかしながら、何れかのデータのみが重要であるため記憶領域（ボリューム）に記憶されている全データを複製する必要がない場合や、ユーザがデータの一部のみを特定の二次ノードへ複製したい場合がある。このような場合において、複製特性を有するふるいを用いて、記憶領域（ボリューム）に記憶されているデータを選択的あるいは部分的に複製することができる。側面（複製が実行される二次ノードを示す）を追加して、どの二次ノードがデータのどの部分を受け取るか示すことができる。
【００６０】
アプリケーション・データの一部のみが複製される場合（例えば、ファイル・システムのファイルやディレクトリ）、アプリケーションは、二次ノード上に論理的に一貫性のある（部分的にではあるが）画像を作成するために複製されるべきボリュームの範囲（あるいは領域）を決定することができる。例えば、複製されるファイルやディレクトリに対する全てのデータ及びメタデータの範囲を決定することにより、二次ファイル・システムに指定されたファイルやディレクトリのみをマウントすることができる。そして、これらの範囲が複製ふるいに加えられる。データが変更されたり新しいデータが追加されると、アプリケーションは適宜ふるいを変更したり、範囲を追加したりする。
【００６１】
企業が発展し多数のソフトウェア製品を販売するようになり、各製品が独自のデータ・リポジトリ（ソースコード・リポジトリ、顧客レコード、関連ドキュメント等）を有するケースについて考える。リポジトリは一箇所で（例えば、セントラルサーバで）維持することができるが、製品開発及び販売業務は世界中に分散して行われる。製品開発及び販売グループは各地に広がっており、独自のローカルサーバ（より高速なアクセスのために）を持つ。更に、開発グループにおける各開発チームは独自のキャッシュサーバを持つことができる。
【００６２】
このようなケースでは、関連ファイル／ディレクトリのみを関連するサーバに複製する選択的なファイル複製が有効である。例えば、／ｐｒｏｊｅｃｔディレクトリにセントラルサーバ上のソース・リポジトリ全てを格納すると仮定する。選択的なファイル複製により、／ｐｒｏｊｅｃｔ／ｕｎｉｘソースコード・ツリーのみがＵｎｉｘチームのサーバに複製され、／ｐｒｏｊｅｃｔ／Ｗｉｎｄｏｗｓ（Windowsは商標）ツリーのみがＷｉｎｄｏｗｓチームのサーバに複製される。開発者がソースコードを中央のリポジトリに送信するたびに、新たなソースコードを関連サーバのみに選択的に複製することができる。例えば、Ｕｎｉｘソースコード・ツリーに入れられたソースコードはＵｎｉｘサーバのみに複製される。
【００６３】
また、選択的なファイルの複製はデータ機密保護の点でも有効である。例えば、遠隔ノードがファイル・システムの全データへのアクセスを必要としない場合があるが、このような場合には、必要とされるファイル及びディレクトリのみを遠隔ノードに複製する。
【００６４】
また、選択的なファイル複製によりクラスタ内または交換ネットワーク上の負荷を分散することができ、この場合はボリューム（仮想ＬＵＮ）の一部が1のスイッチ／ホストに複製され、別の部分が別のスイッチ／ホストに複製される。このような選択的な複製により一対多数あるいは多数対多数の分割複製を実現することができ、二次ノード上の複製負荷を分散する上で有効である。記憶領域が非常に大きく、変更が全域に分散している場合、一次的な場所（例えば、クラスタや交換ネットワーク）のノードがそれらの間でアドレス空間を分割し、負荷を分散させる。この場合、各ノードはソース・ボリューム内の特定の記憶領域のみを複製する。二次ノードは複製ストリーム（多数対一）を組み合わせたり、あるいは上述のように多数対多数の分割複製を行ったりできる。
【００６５】
ボリュームふるい機構の他の用途として、クラスタ・ノードによるデータへのアクセスを制限することが挙げられる。多次元的なふるいを作成し、クラスタ内のどのノードが記憶領域（ボリューム）のどの指定記憶位置にアクセス（読み出し／書き込み）できるかを示す。また、ボリュームふるい機構を用いて圧縮や暗号化等の処理をサポートすることができる。ふるいのビットあるいは範囲により、処理中に所定の領域や範囲を圧縮すべきか、暗号化すべきか示すことができる。現在のバックアップ周期においてバックアップされる範囲を示すためにバックアップふるいを用いることができる。
【００６６】
また、ふるいを用いて記憶領域（ボリューム）の一部のみに対する読み出し／書き込みアクセスを可能にすることができる。このふるい機構は最低レベルでのデータ機密保護が可能になり、ファイル・システム（あるいはその他のアプリケーション）で利用することができるため、不用意なあるいは悪意のある変更／アクセスから重要なデータを保護することができる。変更キーあるいは同様な機構を用いることにより、ふるいを更に保護することができる。
【００６７】
ふるいを用いてデータを記憶している特定の記憶位置のみをミラーリングすることにより、重要なデータのみをミラーリングすることができる。更に、ふるいを用いてコピー・オン・ライト（ｃｏｐｙ−ｏｎ−ｗｒｉｔｅ）動作を防止することができる。このようなふるいを用いて、古いデータがスナップショットに残すほど重要でない場合や有用でない場合に該古いデータをスナップショットに送ることを防止することができる。最後に、ふるいを用いて部分的なスナップショットや画像を作成することができる。ふるいを用いて元のアドレス空間の一部のみを含むボリュームの画像を作成することができる。また、スナップショットがこの機構を用いることにより、ソース記憶領域（ボリューム）の特定の記憶位置のみを（コピー・オン・ライト（ｃｏｐｙ−ｏｎ−ｗｒｉｔｅ）動作により）保存することができる。
【００６８】
本発明は、論理的な一組のデータの記憶ボリューム上の物理的な位置を求めることができる限り、該論理的な一組のデータに適用することができる。このような物理的な位置を記憶ボリューム上の変更領域にマッピングし、論理的な一組のデータの変更部分のみを同期させることができる。更に、選択されたデータのみが同期処理による影響を受ける。記憶ボリューム上のその他のデータは利用可能であり、同期処理により変更されない。
【００６９】
本発明には多くの利点がある。本発明によって、アプリケーションは、記憶領域における選択された記憶位置に対する処理を独自の目的のために制御できるようになる。従来は、複製等の処理が記憶領域ソフトウェア及び／または複製機能により内部で制御されていたが、このような処理はファイル・システムやデータベース管理システム等のアプリケーションレベルのソフトウェアでは困難であった。
【００７０】
本発明によれば、アプリケーション・ソフトウェアが記憶領域全体に対してではなく記憶領域中の選択された一組の記憶位置に対してのみ処理を行うように指示を行うことが可能になる。必ずしも連続的なアドレスを持たない１以上の記憶位置から成る一組の記憶位置は、単一の不可分ブロックから記憶領域全体まで、いかなる大きさにすることもできる。一組の記憶位置に対して行う処理はアプリケーションによって決定されるが、記憶マネージャ及びその周辺要素（複製機能等）により実行される。
【００７１】
更に、アプリケーションは、記選択された一組の記憶位置のデータに対して実行される一組の指示を出すこともできる。この場合、一組の指示は、記憶マネージャが実行できない処理に対するものとすることができる。一組の指示は、コールバック機能や同様の機構として実行することができ、この場合、記憶領域は処理を実行するアプリケーションを呼び出すことができる。アプリケーションがコールバック機能を記憶マネージャに登録する前は、記憶マネージャは一組の指示（例えば、コールバック機能）について知らないか、持たない。
【００７２】
その他の実施例
図３Ａ〜３Ｇまでに示した機能は、その他多くのソフトウェア及びハードウェア構成により提供することが可能である。当業者は、複製及び同期機能についてここで説明した機能が、該機能を提供するモジュール、指示、及び／またはその他の手段により実行できることを認めるだろう。
【００７３】
図１Ａの記憶マネージャ／リプリケータ１２０Ａの記憶マネージャ機能は様々な方法により実現することができる。例えば、図１Ａにおいて記憶マネージャ／リプリケータ１２０Ａはアプリケーション１１５Ａとデータ記憶装置１４０Ａとの間に示されており、Ｉ／Ｏ動作の発信元、ここではアプリケーション１１５Ａと、該Ｉ／Ｏ動作の出力先、ここではデータ記憶装置１４０Ａとの間の入力／出力ストリームについて「帯域内で」動作する。市販されている帯域内記憶マネージャには、例えば、カリフォルニア州マウンテンビューのベリタス・ソフトウェア株式会社により製造されているベリタス・ボリューム・マネージャやクラスタ・ボリューム・マネージャがあるが、その他の市販されている製品も帯域内管理機能を提供しており、本発明は上記例に限定されない。
【００７４】
あるいは、記憶マネージャ機能は、Ｉ／Ｏ動作の発信元と該Ｉ／Ｏ動作の出力先との間の入力／出力ストリームについて「帯域外」動作することもできる。例えば、Ｉ／Ｏ動作は、ファイバー・チャンネル・ストレージ・エリア・ネットワーク（ＳＡＮ）構造の記憶アレイ、記憶装置、あるいはスイッチ内に埋め込まれた記憶マネージャとして実現されたデータ記憶装置を出力先とすることができる。帯域外記憶マネージャの一例としては、カリフォルニア州マウンテンビューのベリタスソフトウェア株式会社により製造されているＳＡＮボリューム・マネージャがあるが、その他の市販されている製品も帯域内管理機能を提供しており、本発明は上記例に限定されない。
【００７５】
また、記憶マネージャ機能は、ネットワーク全域あるいはクラスタ内の帯域内及び／または帯域外記憶マネージャに配分することもできる。分離した記憶管理タスクは、別個のノード上で動作する記憶マネージャに割り当てることが出来る。例えば、１つのネットワークあるいはクラスタ内の１つのノード上で動作する記憶マネージャがＩ／Ｏストリームを直接送る機能を提供し、該ネットワークあるいはクラスタ内の別のノード上で動作する別の記憶マネージャが１以上の物理的記憶装置への論理データ記憶領域の論理対物理のマッピングを制御することができる。
【００７６】
更に、何らかの記憶マネージャ機能を含むモジュールが、別の記憶マネージャ機能を含む別のモジュールにサービスを要求してもよい。例えば、Ｉ／Ｏストリームをローカル記憶装置に直接送信する上の段落で説明した記憶マネージャが、他の記憶マネージャに、該ローカル記憶装置に書き込みを行う前に論理データ記憶装置の論理対物理のマッピングを行うよう要求してもよい。
【００７７】
更に、決定モジュールが記憶ボリューム内の選択データに対する物理的位置を決定してもよく、別の特定モジュールが記憶ボリュームの変更領域を特定してもよい（例えば、ここで説明したデータ変更マップを用いて）。別の判断モジュールにより、いつ物理的位置と変更領域が一致するか判断してもよい。また、別の同期モジュールが一次ボリューム上の選択データに対する位置におけるデータをスナップショット・ボリューム上の選択データに対する対応位置におけるデータに同期させてもよく、その方向はどちらでも構わない。
【００７８】
あるいは、単一のモジュールを用いて、記憶ボリューム内の選択データに対する物理的位置を決定し、記憶ボリュームの変更領域を特定してもよい。該単一のモジュールは、いつ物理的位置と変更領域が一致するか判断することもできる。また、この単一のモジュールが一次ボリューム上の選択データに対する位置におけるデータをスナップショット・ボリューム上の選択データに対する対応位置におけるデータに同期させてもよく、その方向はどちらでも構わない。同様の機能を実行するためのその他の構成は本発明の範囲内にあるものとする。
【００７９】
図４で説明した動作は、例えば、図１に示す一次ノード１１０Ａ及び二次ノード１１０Ｂ等、指示を実行するように構成されたメモリ及びプロセッサを含むコンピュータ・システム、例えば、集積回路（例えば、それらの動作を実行するように構成されたＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）やＡＳＩＣ（特定用途向け集積回路））や、あるいはネットアプライアンス等、機能を実行するように構成された機械的装置により実行することができる。
【００８０】
本発明は、上記利点やそれらに内在する利点を実現するために適している。本発明は、特定の実施例を参照して描写、説明、定義したが、そのような参照は本発明を限定するものではなく、そのような限定が推測されるものでもない。本発明は、関連技術分野の当業者によりなされ得るように、形式及び機能の点で相当な改良や変更、均等物による差し替えを行うことができる。描写され、説明された実施例は単なる例示であり本発明の範囲を網羅するものではない。
【００８１】
上述した実施例は、例えばふるい及びデータを含む記憶領域のように、他の構成要素に含まれる構成要素を含む。このような構造は単なる例示であり、実際には、同様の機能を実現するその他数多くの構造を実施することができる。抽象的ではあるが限定的な意味で、同様の機能を実現する構成要素の構成は、所望の機能が実現されるように効果的に「関連付け」られている。したがって、ここで特定の機能を実現するために組み合わせられた何れか２つの構成要素は、構造や中間要素に関わらず、該所望の機能を実現するように相互に関連付けられている。同様に、このように相互に関連付けられた何れか２つの構成要素は、所望の機能を実現するよう相互に「動作可能に接続され」、あるいは「動作可能に連結され」ていると考えることができる。
【００８２】
上記詳細な説明では、ブロック図、フローチャート、及び例により本発明の各種実施例を説明した。当業者は、各ブロック図の構成要素、フローチャートの工程、処理、及び／または例示された構成要素を、個々に及び／または一括して、幅広いハードウェア、ファームウェア、あるいはこれらの組み合わせにより実現できることを理解するであろう。
【００８３】
本発明は、完全に機能するコンピュータ・システムに照らして説明したが、本発明は様々な形式のプログラム製品として配布することができ、本発明は、実際に配布を行うために用いられる信号が記録されている媒体の種類に関わらず適用されることを当業者は理解するだろう。信号が記録されている媒体の例としては、フレキシブル磁気ディスクやＣＤ−ＲＯＭのような書き込み可能な媒体、ディジタル・アナログ通信リンクのような通信型の媒体、及び将来開発される媒体記憶配信システムが挙げられる。
【００８４】
上述の実施例は、何らかのタスクを実行するソフトウェア・モジュールにより実施することができる。ここで、ソフトウェア・モジュールには、スクリプト、バッチ、またはその他の実行可能なファイルを含めることができる。ソフトウェア・モジュールは、マシンで読み取り可能な、あるいはコンピュータで読み取り可能なディスク・ドライブ等の記憶媒体上に記憶することができる。本発明の実施例に従いソフトウェア・モジュールを記憶するための記憶装置としては、例えば、磁気フロッピーディスク、ハードディスク、ＣＤ−ＲＯＭやＣＤ−Ｒ等の光ディスクがある。また、本発明の実施例に従いファームウェアあるいはハードウェア・モジュールを記憶するための記憶装置は、マイクロプロセッサ／メモリ・システムに恒久的に、取り外し可能に、あるいは遠隔的に連結される半導体ベースのメモリとしてもよい。したがって、モジュールをコンピュータ・システム・メモリ内に記憶し、該コンピュータ・システムがモジュールの機能を実行するように構成することができる。その他、コンピュータで読み取り可能な新しい種類の様々な記憶媒体を用いて上述のモジュールを記憶してもよい。
【００８５】
上で開示した構造及び方法を提供するために必要とされる工程を容易に実施するとともに、工程の処理パラメータや順序は一例として示されただけであり、所望の構造を実現するために変更し、本発明の範囲内で改良できることを当業者は理解するであろう。ここで開示した実施例は、ここで行った説明に基づき変更及び改良することができる。したがって、本発明は、あらゆる側面における均等物を十分に考慮し、添付請求項の範囲のみによって限定されるものである。
【図面の簡単な説明】
【００８６】
【図１】本発明が動作することができるシステム環境の一例を示す。
【図２】一次データ及び該一次データの変更を追跡するためのデータ変更マップを示す。
【図３Ａ】全てのデータが全ての二次ノードに複製される場合の１つの一次記憶ボリューム及び２つの二次記憶ボリュームのデータの一例を示す。
【図３Ｂ】ボリュームふるいを用いて複製されたデータの一例を示す。
【図３Ｃ】一部重複するボリュームふるいを用いて複製されたデータの一例を示す。
【図３Ｄ】変更されたデータのみを複製するボリュームふるいを用いて複製されたデータの一例を示す。
【図３Ｅ】複数の特性（複数の動作を示す）を有するボリュームふるいを用いて複製されたデータの一例を示す。
【図３Ｆ】単一のボリューム上のボリュームふるいを用いて複製されたデータの一例を示す。
【図３Ｇ】コールバック機能を用いて複製されたデータの一例を示す。
【図４】本発明を実施するための方法を示すフローチャートである。
【図１】
2007515725.tif 000003
【図２】
2007515725.tif 000004
【図３Ａ】
2007515725.tif 000005
【図３Ｂ】
2007515725.tif 000006
【図３Ｃ】
2007515725.tif 000007
【図３Ｄ】
2007515725.tif 000008
【図３Ｅ】
2007515725.tif 000009
【図３Ｆ】
2007515725.tif 000010
【図３Ｇ】
2007515725.tif 000011
【図４】
2007515725.tif 000012
【国際調査報告】
2007515725.tif 000013
2007515725.tif 000014
2007515725.tif 000015