(57)【特許請求の範囲】
【請求項１】
コンピュータシステムであって、該コンピュータシステムは、
複数のスナップショットプロバイダと、
バックアップサービスプロバイダと、
アプリケーションプログラミングインタフェース(API)に準拠したコミュニケーションを行うボリュームスナップショットサービスコーディネータと
を備えており、
前記バックアップサービスプロバイダは、前記複数のスナップショットプロバイダによるスナップショットセットの作成を要求し、前記ボリュームスナップショットサービスコーディネータは、前記複数のスナップショットプロバイダの少なくとも１つによる前記スナップショットセットの作成の実行および前記バックアップサービスプロバイダへの前記スナップショットセットの受け渡しを調整し、管理し、
前記バックアップサービスプロバイダは、前記APIを使用して、バックアップサービスを提供し、
前記スナップショットセットは、前記複数のスナップショットプロバイダから提供されるスナップショットを含み、
前記コミュニケーションにおいて使用される通信プロトコルは、前記複数のスナップショットプロバイダのプロトコルに依存しないことを特徴とするコンピュータシステム。
【請求項２】
スナップショットセット識別情報は、前記スナップショットセットに関連付けられていることを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
前記スナップショットセット識別情報は、スナップショットIDと１つまたは２つ以上のスナップショットサービスプロバイダIDとを含んでいることを特徴とする請求項２に記載のコンピュータシステム。
【請求項４】
前記ボリュームスナップショットサービスコーディネータは、前記バックアップサービスプロバイダと前記コーディネータとの間のエラーメッセージングコミュニケーションを標準化していることを特徴とする請求項１に記載のコンピュータシステム。
【請求項５】
前記複数のスナップショットプロバイダのうちの１つのスナップショットプロバイダは、ソフトウェアベースのプロバイダであることを特徴とする請求項１に記載のコンピュータシステム。
【請求項６】
前記複数のスナップショットプロバイダのうちの１つのスナップショットプロバイダは、ハードウェアベースのプロバイダであることを特徴とする請求項１に記載のコンピュータシステム。
【請求項７】
前記複数のスナップショットプロバイダのうちの１つのスナップショットプロバイダは、別のスナップショットプロバイダへコールを行い、該別のスナップショットプロバイダと通信するスナップショットプロバイダであることを特徴とする請求項１に記載のコンピュータシステム。
【請求項８】
アプリケーションプログラミングインタフェース(API)に準拠したコミュニケーションを行うボリュームスナップショットサービスコーディネータによりバックアップサービスプロバイダと複数のスナップショットプロバイダとの間のコミュニケーションを標準化する方法であって、
前記バックアップサービスプロバイダが標準プロトコルに準拠してスナップショットセットの作成を要求する処理と、
複数のスナップショットプロバイダのうちのいずれが、前記スナップショットセットに対するスナップショットを提供するかを決定する処理と、
該決定する処理に従って決定された前記スナップショットプロバイダで前記スナップショットの作成を実行する処理と、
作成が実行されたスナップショットを収集して前記スナップショットセットを形成する処理と
を含み、
前記バックアップサービスプロバイダは、前記APIを使用して、バックアップサービスを提供し、
前記スナップショットセットは、前記複数のスナップショットプロバイダから提供されるスナップショットを含み、
前記コミュニケーションにおいて使用される通信プロトコルは、前記複数のスナップショットプロバイダのプロトコルに依存しないことを特徴とする方法。
【請求項９】
前記スナップショットセットを前記バックアップサービスプロバイダに通信する処理をさらに備えたことを特徴とする請求項８に記載の方法。
【請求項１０】
前記スナップショットセットと関連付けられるスナップショットセット識別情報を決定する処理をさらに備えたことを特徴とする請求項８に記載の方法。
【請求項１１】
前記スナップショットセットと前記スナップショットセット識別情報を前記バックアップサービスプロバイダに通信する処理をさらに備えたことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記スナップショットセットと前記スナップショットセット識別情報をストアする処理をさらに備えたことを特徴とする請求項８に記載の方法。
【請求項１３】
前記標準プロトコルに従ってエラーメッセージング情報を前記バックアップサービスプロバイダに通信する処理をさらに備えたことを特徴とする請求項８に記載の方法。
【請求項１４】
ボリュームスナップショットサービスコーディネータは、前記バックアップサービスプロバイダとの間のコミュニケーションを前記複数のスナップショットプロバイダへ結ぶインタフェースをとることを特徴とする請求項８に記載の方法。
【請求項１５】
前記バックアップサービスプロバイダとボリュームスナップショットサービスコーディネータの間のコミュニケーションは、アプリケーションプログラミングインタフェースに準拠してフォーマットされたことを特徴とする請求項８に記載の方法。
【請求項１６】
前記スナップショットプロバイダは、ソフトウェアベースのプロバイダを含むことを特徴とする請求項８に記載の方法。
【請求項１７】
前記スナップショットプロバイダは、ハードウェアベースのプロバイダを含むことを特徴とする請求項８に記載の方法。
【請求項１８】
前記スナップショットプロバイダは、別のスナップショットプロバイダへのコールを行い、該別のスナップショットプロバイダと通信するスナップショットプロバイダを含むことを特徴とする請求項８に記載の方法。
【請求項１９】
請求項８に記載の処理を、コンピュータに実行させることを指示するコンピュータ実行可能命令を格納しているコンピュータ読取可能な媒体。
【発明の詳細な説明】
【０００１】
発明の背景
発明の分野
本発明は、コンピュータシステムにおけるボリュームスナップショットに関する。より具体的には、本発明は、コンピュータシステムにおける多様であるが、類似するエレメントを調整し、管理するための方法とシステムに関し、さらに具体的には、複数のスナップショットプロバイダを調整し、管理するための方法とシステムに関する。
【０００２】
従来技術の簡単な説明
コンピュータシステムがクラッシュするか、あるいはシステムがフリーズしたとき、その結果、些細なものから回復不能なものまで多様な事態が発生する。スタンドアロンコンピュータやクライアントコンピュータでは、局所的なシステムクラッシュによって作業結果が失われることもある。例えば、正しくセーブされなかったものは、いずれも以後のアクセスや使用ができなくなるかもしれない。さらに、ユーザは、コンピュータシステムをリブート(reboot)しなければならないという不都合が生じるため、余計な時間を浪費することになる。ネットワークサーバや他のコンピュータシステムの場合には、システムクラッシュは、さらにシステム全体にわたるため、多数のユーザ、クライアント、および/または顧客(customer)に影響することになる。コンピュータシステムがますます複雑化するのに伴い、プログラマと総称される人々は、コンピュータまたはアプリケーションが「フリーズ」または「クラッシュ」したときのシステム状態を完全に除去できなくなってきたようである。
【０００３】
システムがクラッシュまたはフリーズする確率はゼロでないことを事実として認めた結果、コンピュータシステムをクラッシュした状態から安定状態に回復させるプロセスを改善することに関する、リカバリと呼ばれる研究分野が生まれた。システム不安定性からのリカバリは、多くの研究開発の主題になっている。
【０００４】
一般的に、リブート(reboot)またはリドゥ(redo)によるリカバリの目標は、クラッシュの後、以前の状態または正しいと想定される状態にコンピュータシステムを戻すことであるが、それは、クラッシュ直前またはバックアップ情報セットに整合性(consistency)があることが分かっているポイントインタイム(point in time)においてコンピュータシステムが動作していた状態である。アプリケーションの依存関係(dependency)のすべてが整合状態にあることを表すポイントインタイム情報が確保できるとは限らないので、一部のリストアまたはバックアップサービスは、アプリケーションの状態を誤った状態に不正確にリセットする可能性がある。あるいはこれに替えて、バックアップまたはリストアされるアプリケーション、ボリュームまたは他のオブジェクトを安定状態に回復するためには、リソースを集中して極めて強引にコンピュータシステムのすべてのプロセスをフリーズまたはフラッシュすることを要求される可能性がある。
【０００５】
例えば、失われるデータ量、クラッシュ以前の動作状態に回復するために必要な作業量、および正常動作期間におけるデータベースシステムにリカバリが及ぼすパフォーマンス上の影響を最小限にするデータベース回復手法を設計することを、データベースシステム設計者は試みている。ターゲットデータオブジェクトをリカバリするとき、ターゲットオブジェクトに関連した種々の依存関係が存在し、このためターゲットデータの整合性のあるポイントインタイムコピーをとることができないという困難な状況に遭遇することが分かる。例えば、ファイルセーブ操作、レジストリ書き込み操作、データベースストレージ操作、アクティブディレクトリ書き込み操作、アクセス操作、認証操作および/またはその他類似の依存関係はリストアまたはバックアップサービスの開始前に発生するため、ターゲットデータをアトミックポイントインタイム(atomic point in time)でリカバリし、またはバックアップすることができない。クラッシュしたコンピュータシステムボリュームは、アトミックポイントインタイムに対してフルバックアップが可能であるが、これは、時間、メモリおよび処理の面でリソース集中型プロセス(resource intensive process)であるため、できれば避けるべきである。
【０００６】
既存のバックアップ手法に関する困難な問題に対処するために、スナップショットプロバイダ(snapshot provider)を利用して、スナップショットサービスをターゲットオブジェクトまたはボリュームに提供するようにした、ある種の効率的なバックアップ手法が開発されている。フルバックアップに代わるものとしては、ボリュームスナップショットもまた、ボリュームの整合性のあるポイントインタイムコピーである。しかし、スナップショットによれば、システムがクラッシュした時点で、ボリュームをファイルごとに強行にリカバリすることなく、コンピュータシステムの状態を任意のポイントインタイムでフリーズさせることができるので、リソース集中型バックアッププロセスは大幅に高速化され、リソースは低減される。一般的に、スナップショットは時間t0に作成される。t0時間後、スナップショット自体の内容はオフラインターゲットにバックアップされ、従って、差分ファイル(differential files)を使用して、フルバックアップの必要がなくなることから、システムは、t0以後に変更されたものだけを動作させればよいことになる。バックアップアプリケーションはスナップショットサービスを使用できるが、また、バックアップサービス以外の多くの種類のサービスが、スナップショットサービスを使用することができる。データセットの整合性ポイントインタイムビューを必要とするソースやサービスが、スナップショットサービスプロバイダを使用するのに適したものとして挙げられる。
【０００７】
スナップショット時において使用中であったアロケーションユニット（例えば、クラスタ）に変更があった場合、スナップショットデータを維持するため、オリジナルデータは、新データが書き込まれる前にアロケーションユニットから差分ファイルにコピーされる。この方法は、「書き込み時コピー(copy-on-write)」と呼ばれることがある。この方法によると、その状態、つまり、スナップショットがとられた時点におけるベースボリュームのスナップショットは、そのスナップショットに関連する差分ファイルに格納されたデータと共に、カレントデータをベースボリュームから読み取ることによってアクセス可能である。
【０００８】
米国特許出願第09/505,447号「同一ボリュームの複数のテンポラルスナップショットに対するサポート(Support for Multiple Temporal Snapshots)」（2000年2月16日出願、Cabrera他）、米国特許出願第09/505,344号「カーネルベースのクラッシュ整合性コーディネータ(Kernel-Based Crash-Consistency Coordinator)」（2000年2月16日出願、Golds他）、および米国特許出願第09/505,450号「スナップショットのベースボリューム上の差分ファイルを増大させるためのシステムおよび方法(System and Method for Growing Differential File on a Base Volume of a Snapshot)」（2000年2月16日出願、Kusters他）は、バックアッププロセス全般に関するものであり、スナップショットシステムの異なる側面を導き出している。これらの特許出願は、引用により、スナップショットサービスの提供に関する背景情報として本明細書の一部になっている。
【０００９】
以上のように、スナップショットは、特定の瞬間を表す、ボリューム上に格納されている情報の論理的コピーである。スナップショットの使い方は、ボリュームのバックアップコピーと同じであるが、フルバックアップよりもはるかに高速に作成される。用語「ベースボリューム(base volume)」とは、スナップショットで表現されたボリュームのことである。スナップショットシステムでは、スナップショットがとられた後ベースボリュームに書き込まれた変更に追随するため、差分ファイル(differential file)が使用される。時間が経過して、複数のスナップショットがとられた場合、各々のスナップショットごとに差分ファイルが存在する。
【００１０】
複数のボリュームをもつシステムでは、データまたはファイルは、２つ以上のボリュームにわたり分散されてもよい。いくつかのプログラムでは、大きなデータファイルをあるボリュームで保持し、ログファイルを別のボリュームで保持することができる。これらのプログラムの多くは、システムクラッシュが起きたときデータファイルとログファイルを回復する機能を備えているが、その回復は、その影響を受けるすべてのボリュームにわたってクラッシュが同時に発生した場合に限られている。しかし、既存のスナップショットシステムは、複数のボリュームにわたってスナップショットセットを調整する機能を備えていない。従って、現行のクラッシュ回復ソフトウェアや類似のソフトウェアは、これら複数のボリュームにわたって分散された関連するファイルを再構築できるだけの信頼性がない。
【００１１】
さらに、開発者は、複数のスナップショットプロバイダの中から選択したり、あるいは異なるタイプのスナップショットプロバイダを適合させるためのコードを書き込んだりしなければならないのが現状である。あるスナップショットプロバイダは、例えば、スプリットミラースナップショット(split-mirror snapshot)と呼ばれるものを実装しているのに対し、他のスナップショットプロバイダは差分スナップショット(differential snapshot)を実装している。従って、アプリケーションまたは他のオブジェクトから複数のスナップショットプロバイダへのコールを行うか、さもなければ、それらのスナップショットプロバイダと通信するための標準的または統一的プロトコルはない。さらに、ボリュームが異なるごとに、異なるスナップショットプロバイダが使用されることがあるため、現状では、異なるスナップショットプロバイダによってサービスされるボリュームに関するスナップショット情報を集約的に格納することが困難になっている。
【００１２】
この問題をもっと深く洞察するために、複数の企業では、さまざまな互換性と相互交換性に関する問題を鑑み、異なるのスナップショットプロバイダを開発している。例えば、EMCは、「スプリットミラー」手法と呼ばれる手法を利用したハードウェアベースのソリューションを提供している。他方、ソフトウェアベースのソリューションを提供している企業も存在している。ある企業はファイルベースのソリューションを提供しているのに対し、他の企業はボリュームベースのソリューションを提供している。さらに、ハードウェアベースとソフトウェアベースを組み合わせたスナップショットサービスを提供している企業も存在している。現在、少なくとも14社の異なる企業が、異なるスナップショットソリューションを提供している。多くの場合、スナップショットサービスモジュールのためのプロトコルは、それぞれ非常に異なっている。例えば、スナップショットサービスのコール、スナップショットセットの配布、およびエラーメッセージングなどの他のコミュニケーションに関するフォーマットは、あるスナップショットサービスプロバイダと別のスナップショットサービスプロバイダの間では大幅に異なっていることがある。従って、標準化されたプロトコルを使用して、複数のボリュームおよび複数のプロバイダにわたりスナップショットを調整するための効率的なメカニズムは、この分野ではまだ知られていない。
【００１３】
以上の結果、複数のボリュームスナップショットプロバイダを調整し、管理するメカニズムまたはオブジェクトが望まれている。複数の異なるスナップショットプロバイダの間における通信のために使用するプロトコルを標準化するメカニズムが提供されていればさらに好都合である。
【００１４】
発明の概要
本発明は、一般的には、例えば、バックアップ、リストアまたはリカバリプロセスの効率化を支援するためにスナップショットサービスを採用したコンピュータシステムに関する。さらに、一般的に、ターゲットオブジェクトまたはボリュームに関する情報を、整合性のあるアトミックポイントインタイムの観点から保持しておくために、スナップショットサービスを採用したコンピュータシステムに関する。本発明は、異なるボリュームスナップショットプロバイダのコーディネータ/マネージャおよびスナップショットプロバイダのアドミニストレータとして動作するサービスを提供し、サービスは、アプリケーションプログラミングインタフェース(application programming interface  API)によって記述される。APIは、異なるスナップショットプロバイダに関連して使用されるプロトコルを標準化する役割を果たす。従って、本発明によれば、該当するAPIコールを備え、インタフェースの役割を果たすボリュームスナップショットサービスコーディネータ (Volume Snapshot Service Coordinator  VSSC) が提供され、これは、複数のスナップショットプロバイダを調整し、管理するだけでなく、他のスナップショット情報を保持しておくためにも使用される。VSSCは、スナップショットプロバイダがハードウェアをベースとするか、ソフトウェアをベースとするか、あるいは基礎とする異なるテクノロジの組み合わせをベースとするかに関係なく、この調整と管理を達成している。従って、VSSCは調整と管理オペレーションだけでなく、スナップショットプロバイダに関係する他のオペレーションも実行する。
【００１５】
本発明の他の特徴については、以下に説明されている。
【００１６】
好ましい実施形態の詳細な説明
本発明は、一般的には、例えば、バックアップ、リストアまたは回復プロセスの効率化を支援するために、スナップショットサービスを採用したコンピュータシステムに関する。本発明は、アプリケーションプログラミングインタフェース (application programming interface  API) によって規定されていて、異なるボリュームスナップショットプロバイダのコーディネータ/マネージャおよびスナップショットプロバイダのアドミニストレータとしての働きをするサービスを提供している。APIは、異なるスナップショットプロバイダに関連して使用されるプロトコルを標準化する働きをする。従って、本発明によれば、該当するAPIコールを備えたインタフェースボリュームスナップショットサービスコーディネータ (Volume Snapshot Service Coordinator  VSSC) が提供されており、これは、複数のスナップショットプロバイダを調整し、管理するためだけでなく、他のスナップショット情報を保存しておくためにも使用されている。VSSCは、スナップショットプロバイダがハードウェアをベースとするか、ソフトウェアをベースとするか、あるいは基礎となる異なるテクノロジの組み合わせをベースとするかに関係なく、この調整と管理を達成している。従って、VSSCは調整と管理オペレーションだけでなく、スナップショットプロバイダに関係する他のオペレーションも実行する。
【００１７】
調整としては、VSSCは、スナップショットを作成し、スナップショットを削除し、スナップショットのリストをクエリし、スナップショットセットをクエリし、スナップショットの目的のためにボリュームをクエリし、ボリュームと通信するように動作するほかに、異なるスナップショットプロバイダに固有の情報を、アプリケーションとVSSC間の標準的な通信プロトコルを実現するように操作し、処理するように動作する。従って、プロトコルは、VSSCがさまざまなスナップショットプロバイダのプロトコルに依存しないような形で実現されている。従って、スナップショットセットには、異なるプロバイダからのスナップショットを収めておくことが可能であり、スナップショットの生成は、異なるスナップショットプロバイダの間で調整される。
【００１８】
調整オペレーションは、全範囲にわたるアクティビティを管理するのが好ましい。例えば、コーディネータのアプリケーションプログラミングインタフェース(API)は、スナップショットセットを起動し、既存のスナップショットに追加し、スナップショットセットをとらせる、といった動作を実行することによってスナップショットを作成することができる。コーディネータは、タスクへのクエリの発信、スナップショットの削除、スナップショットの検索(retrieval)、エクステンションの取得、および複数のスナップショットプロバイダとそのプロバイダへのコールを行うアプリケーションとの間のプロセスの調整に関係する他のコミュニケーションの実行を行うこともできる。
【００１９】
管理としては、VSSCはまた、VSSCのマネージメントよりスナップショットプロバイダを登録し、登録を抹消するオペレーションを行う。例えば、ソフトウェアのスナップショットプロバイダだけを使用する特定のコンピュータシステムを考慮した場合、本発明によれば、どのハードウェアのスナップショットプロバイダも初期化時に登録されることもなく、その後に登録抹消され得るということもないという利点がある。登録状態はマシン/ドメイン単位でVSSCによって保存されるのに対し、ボリュームはどこにでも（ローカルにまたはリモートにも）置くことが可能である。特定のスナップショットプロバイダに固有のメタデータは、スナップショットメタデータに収められており、本発明のVSSCによって取り扱われ、処理される。
【００２０】
調整と管理以外のスナップショットプロバイダに関係するオペレーションとして、VSSCには、例えば、アプリケーション依存情報を保持などが含まれている。
【００２１】
従って、VSSCは、例えば、ハードウェアのボリュームスナップショットプロバイダが、ソフトウェアのボリュームスナップショットプロバイダによってサービスされているボリュームのスナップショットをとる場合、異なるボリュームスナップショットプロバイダの中のいずれのボリュームスナップショットを、何者がとったかを記録しておく機能を備えている（ボリュームスナップショットの依存関係の例）。さらに、VSSCは、異なるタイプのスナップショットを垂直方向と水平方向の両方にミックスする機能も備えている。例えば、差分スナップショットと（ハードウェアで、スプリットミラー方法を使用している）プレックス(plex)スナップショットとのミックスがある。スナップショットの準備フェーズに関しては、VSSCは、スナップショットプロバイダ依存情報を生成し、その情報を利用して異なるスナップショットプロバイダと通信して各スナップショットプロバイダを準備する。VSSCは、また、同期化を目的として、例えば、差分スナップショットと、スプリットミラースナップショットおよび異なるタイミングをもつ他のスナップショットとのミックスを可能にする目的で、スナップショット生成の準備フェーズとコミットフェーズを分離している。
【００２２】
本発明によるスナップショットプロバイダ(snapshot provider  SP)は、さまざまなオペレーションを実行する。SPは、スナップショットに備えてボリュームを準備し、スナップショットに備えてボリュームをプレコミット(pre-commit)し、ボリュームをスナップショットにコミットし、ボリュームスナップショットをポストコミット(post-commit)する。これらのオペレーションは、一般的には、スナップショットの生成に関係するものである。また、SPは、ボリュームのクエリを行い、スナップショットを削除し、スナップショットを検索し、エクステンション(extension)を取得し、本発明のVSSCをバイパスするといった、他のコミュニケーションを実行することもできる。
【００２３】
従って、本発明によれば、複数の、異なるスナップショットプロバイダを管理することができ、他方では、管理のフレームワークへの異なるタイプのスナップショットプロバイダの登録とその登録抹消に付随する管理タスクを取り扱うことができる、という利点が得られる。さらに、本発明によれば、２つの例を挙げると、共通エラー条件のコミュニケーションと障害発生時における再試行プロトコルといったような、中央管理の他の利点も得られる。通常、異なるスナップショットプロバイダごとに、異なるタイプのエラー情報が出力されるか、あるいは、異なるフォーマットでエラー情報が出力される。また、異なるスナップショットプロバイダごとに、スナップショットが失敗したときのスナップショット再試行のためのプロトコルも異なっている。本発明によれば、これら不統一なコミュニケーション問題に対するソリューションが得られ、したがって、スナップショットプロバイダに依存する種類のコミュニケーションのためのプロトコルを標準化することができる。
【００２４】
図１と以下の説明は、本発明を実現するのに適しているコンピューティング環境の概要を要約して説明することを目的としている。本発明は、プログラムモジュールのように、クライアントワークステーションやサーバのようなコンピュータによって実行されるコンピュータ実行可能命令の広い意味で説明されているが、必ずしもその必要はない。一般的に、プログラムモジュールには、特定のタスクを実行し、あるいは特定の抽象データ型を実装しているルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらに、本発明は、他のコンピュータシステム構成で実施することも可能であり、その中には、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラマブルなコンシューマエレクトロニクス、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどが含まれている。本発明は、通信ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行されるような、分散型コンピューティング環境で実施することも可能である。分散型コンピューティング環境では、プログラムモジュールは、ローカルとリモートの両方のメモリストレージデバイスに置いておくことが可能であることは、この分野の精通者ならば理解されるであろう。
【００２５】
図１に示すように、例示の汎用コンピューティングシステムは、従来のパーソナルコンピュータ２０などを含み、パーソナルコンピュータは、処理ユニット２１、システムメモリ２２、およびシステムメモリを含む種々のシステムコンポーネントを処理ユニット２１に結合しているシステムバス２３を装備している。システムバス２３は、数種類のバス構造のいずかにすることが可能であり、その中には、種々のバスアーキテクチャのいずれかを採用しているメモリバスまたはメモリコントローラ、ペリフェラル（周辺）バス、およびローカルバスが含まれている。システムメモリには、リードオンリメモリ(read-only memory  ROM)２４とランダムアクセスメモリ(random access memory  RAM)２５が含まれている。スタートアップのように、パーソナルコンピュータ２０内のエレメント間で情報を転送するのを支援する基本ルーチンで構成されている基本入出力システム(basic input/output system  BIOS)２６は、ROM２４に格納されている。パーソナルコンピュータ２０は、ハードディスク（図示せず）との間で読み書きを行うハードディスクドライブ２７、取り外し可能磁気ディスク２９との間で読み書きを行う磁気ディスクドライブ２８、およびCD-ROMや他の光媒体のような、取り外し可能光ディスク３１との間で読み書きを行う光ディスクドライブ３０を、さらに装備することも可能である。ハードディスクドライブ２７、磁気ディスクドライブ２８、および光ディスクドライブ３０は、それぞれハードディスクドライブインタフェース３２、磁気ディスクドライブインタフェース３３、および光ディスクドライブインタフェース３４を介してシステムバス２３に接続されている。これらのドライブとそれぞれの関連コンピュータ読取可能な媒体は、不揮発性ストレージとしてパーソナルコンピュータ２０のためのコンピュータ読取可能命令、データ構造、プログラムモジュールおよび他のデータを格納している。ここで説明している例示の環境では、ハードディスク、取り外し可能磁気ディスク２９、および取り外し可能光ディスク３１が採用されているが、磁気カセット、フラッシュメモリカード、デジタルディスク、ベルヌーイ(Bernoulli)カートリッジ、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)などのように、コンピュータによってアクセス可能なデータを格納することができる、他の種類のコンピュータ読取可能な媒体を例示の動作環境で使用することも可能であることが、この分野の精通者ならば理解されるであろう。
【００２６】
いくつかのプログラムモジュールは、ハードディスク、磁気ディスク２９、光ディスク３１、ROM２４またはRAM２５に格納することができる。そのようなものとしては、オペレーティングシステム３５、１つまたは２つ以上のアプリケーションプログラム３６、他のプログラムモジュール３７、およびプログラムデータ３８がある。ユーザは、キーボード４０やポインティングデバイス４２などの入力デバイスを通してコマンドおよび情報をパーソナルコンピュータ２０に入力することができる。その他の入力デバイス（図示せず）としては、マイクロホン、ジョイスティック、ゲームパッド、サテライトディスク(satellite disk)、スキャナなどがある。これらおよび他の入力デバイスは、システムバスに結合されたシリアルポートインタフェース４６を介して処理ユニット２１に接続されていることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(universal serial bus  USB)などの、他のインタフェースを介して接続することも可能である。モニタ４７または他のタイプのディスプレイデバイスも、ビデオアダプタ４８などのインタフェースを介してシステムバス２３に接続されている。モニタ４７のほかに、パーソナルコンピュータは、スピーカやプリンタなどの、他の周辺出力デバイス（図示せず）を装備しているのが代表的である。
【００２７】
パーソナルコンピュータ２０は、リモートコンピュータ４９などの、１つまたは２つ以上のリモートコンピュータとの論理的コネクションを使用するネットワーキング環境で動作することができる。リモートコンピュータ４９としては、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスまたはその他共通ネットワークノードがあり、図１にはメモリストレージデバイス５０だけを示したが、通常パーソナルコンピュータ２０に関して上述した多くのエレメントまたは全てのエレメントを装備している。図１に示す論理的コネクションとしては、ローカルエリアネットワーク(local area network  LAN)５１と広域ネットワーク(wide area network  WAN)５２がある。このようなネットワーキング環境は、オフィス、企業内コンピュータネットワーク、およびインターネット(the Internet)において普及している。
【００２８】
LANネットワーキング環境で使用するとき、パーソナルコンピュータ２０は、ネットワークインタフェースまたはアダプタ５３を通してLAN５１に接続されている。WANネットワーキング環境で使用するときは、通常パーソナルコンピュータ２０は、インターネットなどの広域ネットワーク５２上のコミュニケーションを確立するためのモデム５４または他の手段を備えている。モデム５４は内蔵型と外付け型があるが、どちらも、シリアルポートインタフェース４６を介してシステムバス２３に接続されている。ネットワーキング環境では、パーソナルコンピュータ２０に関連して上述したプログラムモジュールまたはその一部は、リモートのメモリストレージデバイスに格納しておくことが可能である。以上から、図示されたネットワークコネクションは例示であり、コンピュータ間の通信リンクを確立する他の手段を使用することも可能であることが理解されるであろう。
【００２９】
上述したコンピュータはコンピュータネットワークの一部として配置できること、および、本発明は、任意の数のメモリまたはストレージユニットを装備し、任意の数のアプリケーションまたはプロセスが任意の数のボリュームにわたって実行される、いかなるコンピュータシステムにも関係することは注目すべきことである。従って、本発明は、ネットワーク環境に配置され、リモートまたはローカルストレージを装備したサーバコンピュータとクライアントコンピュータの両方に適用することができる。図２は、本発明を採用することができるネットワーク環境を例示として示しており、そこでは、サーバはネットワークを通してクライアントコンピュータと通信する。図示のように、いくつかのサーバ１０a、１０bなどは、通信ネットワーク１４（これは、LAN、WAN、イントラネットまたはインターネットにすることできるが）を介して、いくつかのクライアントコンピュータ２０a、２０b、２０cなどと相互接続されている。例えば、通信ネットワーク１４をインターネットとするネットワーク環境では、サーバ１０は、Webサーバとすることができ、この場合、クライアント２０はハイパテキスト転送プロトコル(hypertext transfer protocol  HTTP)などの、何らかのよく知られたプロトコルを使用して通信する。
【００３０】
各クライアントコンピュータ２０とサーバコンピュータ１０には、種々のアプリケーションプログラムモジュール３６、他のプログラムモジュール３７およびプログラムデータ３８を置いておくことが可能であり、コネクションを通して様々なタイプのストレージエレメントまたはオブジェクトに接続され、あるいはそれらにアクセスすることが可能である。従って、各コンピュータ１０または２０には、そこにロードまたはインストールされ、あるいはそこにダウンロードされる本発明のVSSCと共に、ソフトウェアを置いておくことが可能である。以上から、本発明によれば、バックアップサービス、VSSC、スナップショットサービスプロバイダおよびデータストレージ相互間のいずれのコミュニケーションも、ボリュームにわたって行うこと（インタボリューム）、同一ボリューム内で行うこと（イントラボリューム）、あるいはネットワークを介してリモートにまたはローカルに行うことが可能であることが理解されるであろう。ここで、ボリュームという用語は、ストレージ媒体自体を表す同義語として使用されることが多いが、１つのディスクに２つ以上のボリュームを収容させることも、あるボリュームを２つ以上のディスクにスパンさせることも可能である。
【００３１】
以上のように、本発明は、ネットワークにアクセスし、ネットワークとやりとりするクライアントコンピュータと、クライアントコンピュータとやりとりするサーバコンピュータとが配置されているコンピュータネットワーク環境で利用することができる。前述したように、本発明によれば、APIプロトコルは、VSSC、バックアップサービス、およびスナップショットサービスプロバイダ相互間のコミュニケーションに関連して使用される。このAPIは、種々のネットワークまたはシステムアーキテクチャで実現することができるので、図示され、説明されている例に限定されるものではない。
【００３２】
図３Aと図３Bは、スナップショットサービスを提供する従来のソフトウェア手法を示す図である。バックアップサービスBは、ボリュームV1または他のターゲットオブジェクトのスナップショットをとることができるスナップショットサービスプロバイダSPと通信している。例示のソフトウェアシーケンスは破線の矩形の下に示されており（図３B）、従来のソフトウェアスナップショット手法を表している。なお、ハードウェアまたはソフトウェアのいずれのスナップショットプロバイダであっても、スナップショットプロバイダSPで表され得ることが理解されるべきである。さらに、いずれのスナップショットサービスも、複数のスナップショットサービスプロバイダを利用することが可能である。例えば、例示されたハードウェアスナップショット手法はスプリットミラー手法として知られており、スタンドアロンの手法として使用しても、他のハードウェアまたはソフトウェアの手法と併用しても、得られる効果は同じである。このようにして、スナップショットセットが起動され、ボリュームV1のスナップショットに対する要求が行われる。簡単に説明すると、その後スナップショットが準備される。すべての書き込み許可(write enable)がフリーズまたはターンオフされるまで、スナップショットはプレコミット(pre-commit)される。スナップショットがコミットされると、再び書き込み可能となり、スナップショットはポストコミット (post-commit)される。
【００３３】
図４は、複合コンピュータシステムにおいて既存のスナップショットサービスのソリューションが困難であることを示す図である。一方、図３A及び３Bに示す手法（あるいは、ハードウェアソリューションを含む他のタイプのスナップショット手法）。バックアップサービスBがSP1からSPNまでのもっとより多くのスナップショットサービスプロバイダと通信しなければならない場合、異なるタイプのプロバイダのすべてにわたるコミュニケーションを達成することが可能なコードの開発は、困難な作業であり、時間を消費するものである。さらに、プロトコルが不統一であると、SP1からSPNまでのスナップショットサービスプロバイダのいずれかとインタフェースをとろうとする場合、開発者がミスを犯す可能性が増大する。複数の開発者とB1からBNまでの複数のバックアップサービスを考慮しても、この問題がただ複雑化するだけである。破線から明らかであるが、異なるプロトコルを用いる異なるタイプのスナップショットサービスプロバイダが増殖し、スナップショットサービスを要求するサービスが増殖した結果、通信エラーが発生する機会は著しく増加することになる。したがって、このプロセスを単純化することは、大いに有用なことであろう。
【００３４】
図５は、本発明による例示されたスナップショットサービス調整と管理手法を示すブロック図である。このようにして、ボリュームスナップショットサービスコーディネータ(Volume Snapshot Service Coordinator  VSSC)１００が提供される。これは、バックアップアプリケーションBとSP1からSPNまでの複数のスナップショットサービスプロバイダとの間のコミュニケーションを標準化し、調整し、管理するためのインタフェースとなるものである。前述したように、いずれのスナップショットサービスプロバイダも、他のスナップショットソリューション、例えば、SP2aとSP2bを利用することが可能である。SP1からSPNまでの各スナップショットは、ターゲットオブジェクトO1からONまでのスナップショットをとるように動作する。なお、ターゲットオブジェクトは、例えば、ボリュームにすることができる。従って、図から明らかであるように、VSSC１００のアプリケーションインタフェースを使用すると、バックアップアプリケーションBとSP1からSPNまでの複数タイプのスナップショットサービスとの間のコミュニケーションを標準化することが可能になる。VSSC１００は、異なるスナップショットサービスプロバイダSP1からSPNまでの各々との通信方法を認識しているので、標準プロトコルを実現することによりバックアップアプリケーション、または整合性のあるポイントインタイム情報を利用するサービスからスナップショットサービスをコールすることができる。
【００３５】
各スナップショットセットに関する識別情報は、そのスナップショットセットに関連して使用されるように格納されるのが好ましい。この識別情報の内容としては、スナップショットセットID、スナップショットサービスプロバイダIDの１つまたは２つ以上、タイムスタンプ、およびその他類似の情報がある。スナップショット情報の格納例を図６に示すが、スナップショットセットの識別情報を格納するためのフォーマットまたはデータ構造は、本発明の目的に適したものであれば、どのようなものでも可能であることが理解されるであろう。例えば、スナップショットセットには、ヘッダ１２aの他、スナップショットセットと関係付けることができ、スナップショットセットをソートし、サーチし、アクセスし、あるいはその他役立つものであれば、他のいかなる特性を含めることも可能である。この識別情報１２bは、少なくとも、スナップショットセットID、そのスナップショットセットに収められている個別のスナップショットID、およびそのスナップショットセットが関係付ける時間を含んでいることが好ましくい。スナップショットIDを使用すると、例えば、単一のスナップショットサービスプロバイダSPと通信しまたはそのプロバイダに関係する別々のコミュニケーションが可能になる。
【００３６】
図７Aと図７Bは、本発明による例示されたスナップショットサービス調整・管理手法を示すブロック図およびフロー図である。バックアップアプリケーションB（またはスナップショットサービスを利用する任意のサービス）は、本発明のVSSC１００からのスナップショットサービス要求を伝達する。この例では、この要求は２つのボリュームV1とV２に対して行われ、これらのボリュームには、それぞれスナップショットサービスを提供するためのスナップショットサービスプロバイダSP1とSP2が置かれている。VSSC１００は複数のモジュールで構成することができ、その１つは、スナップショットを完了するためにどのスナップショットサービスプロバイダを使用するかを判断するものである。図に示された例では、スナップショットサービスプロバイダはSP1とSP2の２つであるが、より一般的に、ここに記述されたことは、任意の数の異なるスナップショットプロバイダおよびその任意の組み合わせに適用される。従って、VSSC１００は、ボリュームV1のスナップショット要求をSP1に、ボリュームV2のスナップショット要求をSP2に行うので、バックアップアプリケーションBは、多数の中のいずれのスナップショットサービスプロバイダがこのタスクを実行するのかに関する、いかなる情報も保持する必要がないという利点がある。VSSC１００は、いずれのスナップショットサービスプロバイダが、いずれのターゲットオブジェクトに割り当てられているかに関する情報をもっている。そうして、それぞれのスナップショットがとられ、それぞれのスナップショットがVSSC１００に戻される。次に、ボリュームV1とV2のスナップショットセットは、スナップショットセット識別情報と共に、VSSCによってコンパイルされ、バックアップアプリケーションBに戻される。いずれのタイプのスナップショットサービスプロバイダがスナップショットをとっていたかは、バックアップアプリケーションからは見えないようにすることができるという利点がある。さらに、エラーメッセージングの標準化、および共通インタフェースから得られるその他の効率化の達成という利点がある。
【００３７】
以上のように、最初に、ボリュームV1とV2に関係するスナップショットセットを起動する要求がなされる。スナップショットセットは、特定のポイントインタイムについてスナップショットが要求されるボリュームを組み合わせたものであるので、スナップショットセットの中のスナップショットは、すべてがそのポイントインタイムに関係している。バックアップアプリケーションは、APIに用意されている標準プロトコルに準拠して、V1をスナップショットセットに追加する要求をVSSC１００に対して行う。これを受けて、VSSC１００は、SP１と通信を行い、V1のスナップショットのため準備する。次に、バックアップアプリケーションは、V2をスナップショットセットに追加する要求をVSSC１００に対して行う。これを受けて、VSSC１００は、SP2と通信を行い、V2のスナップショットのため準備する。次に、アトミックポイントインタイムのときのスナップショットセット全体に対する要求が行われる。その後、スナップショットをコミットするため、V1とV2に対するすべての書き込みは禁止され、それぞれのボリュームをポストコミットするため再び可能となる。このようにして、データは、スナップショットプロセスのコアにおいては、フリーズされるか、あるいは不変であるので、その結果、得られるスナップショットセットの中のすべてのボリュームは、１つのポイントインタイムに関係している。最後に、スナップショットセットは、前述したように、スナップショットセット識別情報とともにバックアップアプリケーションBに戻される。
【００３８】
前述したように、VSSC１００は、本発明による種々のモジュールを含むことが可能である。例えば、スナップショットを作成するためのコーディネータオブジェクトは、スナップショットセットを起動し、スナップショットセットに追加し、スナップショットセットを実行し、クエリし、スナップショットを削除し、スナップショットを取得し、エクステンションを取得するといった機能の１つまたは２つ以上を備えることが可能である。アドミニストレータオブジェクトは、例えば、スナップショットプロバイダをインフラストラクチャに登録し、スナップショットプロバイダの登録を抹消し、種々の情報を得るためにプロバイダにクエリするといったことを実行することが可能である。
【００３９】
また、前述したように、異なるタイプのスナップショットプロバイダの数は、急速に増殖する；しかし、本発明のソフトウェアに関連するモジュールとして、さらに別のスナップショットプロバイダを追加することも可能である。このプロバイダオブジェクトは、通常スナップショットを準備し、プレコミットし、コミットし、ポストコミットする機能、クエリする機能、およびスナップショットを削除し、スナップショットを取得し、エクステンションを取得する機能を備えている。
【００４０】
さらに、VSSC１００は、本発明のアーキテクチャをバイパスできるようにするメカニズムを含んでいる。図８は、本発明によるVSSC１００のバイパスの例を示している。基本的には、例えば、SP1からSPNまでの複数のプロバイダを必要としない場合は、要求をスナップショットプロバイダSP1に対して直接に行うようにすることでプロセスを単純化することができる。
【００４１】
本明細書に説明されている種々の手法は、ハードウェアでも、ソフトウェアでも、あるいはハードウェアとソフトウェアの組み合わせでも実現することが可能である。従って、本発明の方法と装置、またはそのいくつかの態様またはその一部は、フロッピ（登録商標）ディスク、CD-ROM、ハードドライブ、または他のマシン読取可能な媒体などの、有形の媒体で実施されたプログラムコード（つまり、命令）の形体とすることが可能である。ここで、プログラムコードがコンピュータなどのマシンにロードされ、マシンによって実行される場合、そのマシンは、本発明の実施装置となる。プログラムコードがプログラマブルコンピュータ上で実行される場合、コンピュータは、一般にプロセッサ、プロセッサによって読み取り可能であるストレージ媒体（揮発性および不揮発性メモリおよび/またはストレージエレメントを含む）、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスを備えている。１つまたは２つ以上のプログラムは、コンピュータシステムと通信するために、高水準手続き型またはオブジェクト指向プログラミング言語で実現されているのが好ましい。しかし、これらのプログラムは、必要であれば、アセンブリまたはマシン言語で実現することも可能である。いずれの場合も、言語はコンパイル済みまたはインタプリタで解釈済みの言語にして、ハードウェアで実現したものと組み合わせることが可能である。
【００４２】
本発明の方法と装置は、電気的配線やケーブリング、光ファイバ、他の伝送形態など、何らかの伝送媒体上を伝送されるプログラムコードの形体で実現することも可能であり、そこでは、プログラムコードは、EPROM、ゲートアレイ、プログラマブルロジックデバイス(programmable logic device  PLD)、クライアントコンピュータ、ビデオレコーダなどのマシンによって受信され、マシンにロードされ、マシンによって実行されるとき、そのマシンは本発明を実施するための装置となる。汎用コンピュータ上で実現される場合、プログラムコードはプロセッサと結合され、本発明のインデクシング機能を実行するように動作するユニークな装置が得られる。例えば、本発明の記憶手法とスナップショット手法は、変わらず、それぞれ、データを格納し、あるいはデータのスナップショットをとるときに利用されるハードウェアとソフトウェアの組み合わせである。
【００４３】
各図に示す好適実施例と関連付けて本発明を説明してきたが、本発明の範囲から逸脱しない限り、他の類似の実施形態を使用することも、あるいは上述してきた実施形態に改変または追加を行って本発明の同一機能を実行するようにすることも可能であることが理解されるであろう。例えば、好適実施形態では、VSSCはシングルオブジェクトとして扱われているが、VSSCは、コーディネータとアドミニストレータを含む種々のオブジェクトと、スナップショットプロバイダの管理と密接に関係のある他のタスクを含むことも可能である。さらに、ハンドヘルドデバイスのオペレーティングシステムや他のアプリケーション固有のオペレーティングシステムを含む、さまざまなコンピュータプラットフォームが考えられる点を強調すべきである。従って、本発明は、いずれの単一実施形態にも限定されるのではなく、特許請求の範囲に記載の本発明の範囲内で解釈されるものである。
【図面の簡単な説明】
以下では、複数のスナップショットプロバイダを共通に調整し、管理するためのシステムと方法について、添付図面を参照して詳しく説明する。
【図１】  本発明のいくつかの態様を組み入れることが可能である汎用コンピュータを示すブロック図である。
【図２】  本発明の方法と装置を実装できるサーバが置かれている例示のネットワーク環境を示すブロック図である。
【図３Ａ】  スナップショットサービスを提供するための従来のソフトウェア手法を示す図である。
【図３Ｂ】  スナップショットサービスを提供するための従来のソフトウェア手法を示す図である。
【図４】  複合コンピュータシステムにおける既存のスナップショットサービスのソリューションが困難であることを説明する図である。
【図５】  本発明による例示のスナップショットサービス調整・管理手法を示すブロック図である。
【図６】  本発明によるスナップショットセットに関するデータの例示データ表現を示す図である。
【図７Ａ】  本発明による例示のスナップショットサービス調整・管理手法を示すブロック図である。
【図７Ｂ】  本発明による例示のスナップショットサービス調整・管理手法を示すフロー図である。
【図８】  本発明によるVSSC １００をバイパスする例を示す図である。
【図１】
0004603755.tif 000002
【図２】
0004603755.tif 000003
【図３Ａ】
0004603755.tif 000004
【図３Ｂ】
0004603755.tif 000005
【図４】
0004603755.tif 000006
【図５】
0004603755.tif 000007
【図６】
0004603755.tif 000008
【図７Ａ】
0004603755.tif 000009
【図７Ｂ】
0004603755.tif 000010
【図８】
0004603755.tif 000011