(57)【要約】  本明細書で説明される主題の態様は、リソース複製システムに関する。態様では、ローカルリソースが陳腐化しているときにそのことを検出する機構が説明されている。ローカルリソースは、最後に成功した同期化アクティビティと現時点との間の時間が陳腐化値を超えたとき、陳腐化したとすることができる。ローカルリソースが陳腐化していると判定されると、そのローカルメンバは、そのローカルメンバが特定の同期化アクティビティを再開することを許可されるまで、それらの特定の同期化アクティビティの実行をやめることができる。ローカルリソースが陳腐化していなければ、そのメンバとアップストリームパートナーまたはダウンストリームパートナーとの間でリソースを同期化することを含めて、追加の同期化アクティビティを実行することができる。
2009518747.tif 000002
【特許請求の範囲】
【請求項１】
ローカルリソースをホストするローカルマシンと第１の前記マシンのアップストリームパートナーとの間で成功した同期化アクティビティがいつ行われたかをタイムスタンプが示し、前記ローカルマシンおよび前記アップストリームパートナーは複製グループに参加しており、前記ローカルリソースが陳腐化しているかを前記タイムスタンプによって検出する（４１５）ステップと、
前記ローカルリソースが陳腐化している場合、前記ローカルマシンが同期化アクティビティを再開することを許可されるまで、特定の同期化アクティビティの実行をやめるステップ（４２５）と、
前記ローカルリソースが陳腐化していない場合、前記特定の同期化アクティビティを実行するステップ（４３０、４３５）と
を有するコンピュータ実行可能な命令を有することを特徴とするコンピュータ読み取り可能な媒体（１３０、１４１、１５２、１５６、１８１）。
【請求項２】
ローカルリソースが陳腐化しているかをタイムスタンプによって検出するステップは、前記タイムスタンプと前記ローカルマシンのローカルシステムクロックの時間との差異を判定するステップを有することを特徴とする請求項１に記載のコンピュータ読み取り可能な媒体。
【請求項３】
前記ローカルリソースが陳腐化していることを検出するステップは、前記差異が陳腐化値より大きいことを判定するステップを有することを特徴とする請求項１に記載のコンピュータ読み取り可能な媒体。
【請求項４】
前記陳腐化値はシステム管理者によって選択可能であることを特徴とする請求項３に記載のコンピュータ読み取り可能な媒体。
【請求項５】
前記陳腐化値は、リソースに関連付けられているリソースメタデータが削除される前に、前記リソースが削除済みとしてマークされている期間を示すツームストーン期間より短いか、等しいことを特徴とする請求項３に記載のコンピュータ読み取り可能な媒体。
【請求項６】
前記特定の同期化アクティビティは、前記ローカルリソースを前記アップストリームマシン上のリソースと同期化させるステップを有することを特徴とする請求項１に記載のコンピュータ読み取り可能な媒体。
【請求項７】
前記アップストリームマシン上の、前記ローカルマシン上の対応するリソースと同一でない任意のリソースを取得するステップと、
前記アップストリームマシンに含まれていて、前記ローカルマシンに含まれてない任意のリソースを追加するステップと、
前記タイムスタンプを更新することにより前記ローカルリソースをフレッシュとマークするステップと
をさらに有することを特徴とする請求項１に記載のコンピュータ読み取り可能な媒体。
【請求項８】
前記ローカルマシン上の、前記アップストリームパートナー上にない任意のリソースを削除するステップをさらに有することを特徴とする請求項７に記載のコンピュータ読み取り可能な媒体。
【請求項９】
成功した同期化アクティビティは、前記アップストリームパートナーと前記ローカルマシンとの間でリソースを同期化させるステップを有することを特徴とする請求項１に記載のコンピュータ読み取り可能な媒体。
【請求項１０】
成功した同期化アクティビティは、前記アップストリームマシンとの接続を維持するステップを有することを特徴とする請求項１に記載のコンピュータ読み取り可能な媒体。
【請求項１１】
少なくとも部分的にコンピュータによって実施される方法であって、
リソースを相互に複製し合うメンバ間で第１の同期化アクティビティの時間に対応する値を記憶するステップと（４３５）、
第２の同期化アクティビティに関与する要求を前記メンバの第１のメンバで受信するステップと（４１０）、
前記第１のメンバのリソースは、前記第２の同期化アクティビティに関与するのに十分にフレッシュであるかを判定するステップと（４１５）
を有することを特徴とする方法。
【請求項１２】
前記値はタイムスタンプを有することを特徴とする請求項１１に記載の方法。
【請求項１３】
前記第１の同期化アクティビティは、前記第１のメンバと前記第１のメンバのパートナーとの間で成功したリソースの同期化を有することを特徴とする請求項１１に記載の方法。
【請求項１４】
前記第２の同期化アクティビティは、前記第１のメンバと前記第１のメンバのダウンストリームパートナーとの間でリソースを同期化させる要求を有することを特徴とする請求項１１に記載の方法。
【請求項１５】
前記第１のメンバのリソースは、前記第２の同期化アクティビティに関与するのに十分にフレッシュであるかを判定するステップは、前記第１の同期化アクティビティの時間と、前記第２の同期化に関与する前記要求が受信された時間との差を計算するステップと、前記差が陳腐化値より大きい場合、前記第１のメンバの前記リソースは前記第２の同期化アクティビティに関与するのに十分にフレッシュでないことを判定するステップとを有することを特徴とする請求項１１に記載の方法。
【請求項１６】
前記要求に関連した同期化セッションを拒否するステップと、前記第１のメンバのリソースが同期化に関与するのに十分にフレッシュでないことを示す値を戻すステップとをさらに有することを特徴とする請求項１１に記載の方法。
【請求項１７】
コンピューティング環境において、
複製グループに参加するようになされたメンバによって複製されるリソース用のリソースメタデータ（３３０）を記憶するようになされ、成功した同期化アクティビティが行われた時間に対応する値を記憶するようにもなされたリソースストア（３２２）と、
前記リソースストアのリソースは第２の同期化アクティビティに関与するのに十分にフレッシュであるかを判定するようになされた更新機構（２２５）と
を有することを特徴とする装置。
【請求項１８】
前記更新機構は、前記リソースストアのリソースが前記第２の同期化アクティビティに関与するのに十分にフレッシュである条件を示すエポックロジックを有することを特徴とする請求項１７に記載の装置。
【請求項１９】
成功した同期化アクティビティが行われた時間が、前記第２の同期化アクティビティが要求される時間の陳腐化値以内の場合に前記リソースは十分にフレッシュであることを特徴とする請求項１８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リソースのフレッシュさおよび複製に関する。
【背景技術】
【０００２】
リソースを複製するためのシステムは、大規模ネットワーク内の可用性およびフォールトトレランスを確保するためにますます重要になってきている。ドメイン証明書およびドメインポリシを有するファイルを複製する企業ネットワークは、可用性、スケーラビリティ、整合性、および信頼性が必要とされる１つの例である。
【特許文献１】米国特許出願第１０／７９１，０４１号明細書
【特許文献２】米国特許出願第１０／７７９，０３０号明細書
【特許文献３】米国特許出願第１０／７３３，４５９号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、様々な複製動作を可能にする柔軟なリソース複製システムの作成は難題である。
【課題を解決するための手段】
【０００４】
簡潔に言えば、本明細書で説明される主題の態様は、リソース複製システムに関する。いくつかの態様では、ローカルリソースが陳腐化しているときにそのことを検出する機構が説明されている。ローカルリソースは、最後に成功した同期化アクティビティと現時点との間の時間が陳腐化値（staleness value）を超えたとき、陳腐化したとすることができる。ローカルリソースが陳腐化していると判定されると、そのローカルメンバは、そのローカルメンバが特定の同期化アクティビティを再開することを許可されるまで、それらの特定の同期化アクティビティの実行をやめることができる。ローカルリソースが陳腐化していなければ、そのメンバとアップストリームパートナーまたはダウンストリームパートナーとの間でリソースを同期化することを含めて、追加の同期化アクティビティを実行することができる。
【０００５】
この概要は、「発明を実施するための最良の形態」でさらに後で説明される主題の態様のいくつかを簡潔に明示するためのものである。この概要は、特許請求の主題の主要なまたは本質的な特徴を明示することは意図されていないし、特許請求の主題の範囲を限定するために使用されることも意図されていない。
【０００６】
「本明細書で説明される主題」という句は、文脈で明確に特別な断りが記載されない限り、「発明を実施するための最良の形態」で説明される主題を指す。「態様」という語は、「１つ以上の態様」と解釈すべきである。「発明を実施するための最良の形態」で説明される主題の態様の明示は、特許請求の主題の主要なまたは本質的な特徴を明示することは意図されていない。
【０００７】
前述の態様および他の態様は、添付の図面と共に考察すると、以下の「発明を実施するための最良の形態」から明らかになろう。
【発明を実施するための最良の形態】
【０００８】
［例示的な動作環境］
図１は、本明細書で説明される主題の態様を実現可能な適切なコンピューティングシステム環境１００の例である。コンピューティングシステム環境１００は、適切なコンピューティング環境の１つの例に過ぎず、本明細書で説明される主題の態様の用途または機能の範囲に関して何らかの限定を示唆することを意図していない。また、コンピューティング環境１００は、例示的な動作環境１００に示されたコンポーネントの任意の１つまたはそれらの組合せに関連した何らかの依存性または要件を有すると解釈されるべきではない。
【０００９】
本明細書で説明される主題の態様は、様々な他の汎用または専用コンピューティングシステム環境または構成で動作可能である。本明細書で説明される主題の態様での使用に適する周知のコンピューティングシステム、環境および／または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロコントローラベースのシステム、セットトップボックス、プログラマブル家庭用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記システムまたはデバイスのいずれかを備えた分散コンピューティング環境などがあるが、これらに限定されるわけではない。
【００１０】
本明細書で説明される主題の態様は、コンピュータで実行されるプログラムモジュールなどのコンピュータ実行可能な命令を例にとって概略的に説明されることがある。一般に、プログラムモジュールには、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などがあり、これらは、特定のタスクを実行するか、または特定の抽象データタイプを実現する。本明細書で説明される主題の態様は、通信ネットワークを介してリンクされたリモートプロセッシングデバイスによってタスクが実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含めて、ローカルおよびリモート両方のコンピュータストレージ媒体に配置することができる。
【００１１】
図１を参照すると、本明細書で説明される主題の態様を実現するための例示的なシステムは、コンピュータ１１０という形の汎用コンピューティングデバイスを有する。コンピュータ１１０のコンポーネントには、処理装置１２０、システムメモリ１３０、およびシステムメモリを含む種々のシステムコンポーネントを処理装置１２０に結合するシステムバス１２１が含まれ得るが、これらに限定されるわけではない。システムバス１２１は、種々のバスアーキテクチャのいずれかを使用する、メモリバスまたはメモリコントローラ、周辺バスおよびローカルバスを含む数種類のバスアーキテクチャのうちのいずれでもよい。例であって、限定ではないが、そのようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（拡張ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニンバスとしても知られるＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスがある。
【００１２】
コンピュータ１１０は、典型的には、種々のコンピュータ読み取り可能な媒体を備えている。コンピュータ読み取り可能な媒体は、コンピュータ１１０によりアクセスできて、任意の利用可能な媒体であればよく、揮発性および不揮発性両方の媒体ならびに取外し可能および取外し不能媒体がある。例であって、限定ではないが、コンピュータ読み取り可能な媒体は、コンピュータストレージ媒体および通信媒体を有してよい。コンピュータストレージ媒体には、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための、いずれかの方法または技術で実現される揮発性および不揮発性両方の取外し可能および取外し不能媒体が含まれる。コンピュータストレージ媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用できてコンピュータ１１０によってアクセスできる、任意の他の媒体が含まれるが、これらに限定されない。通信媒体は、典型的には、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、または他のデータを搬送波または他のトランスポート機構などの変調されたデータ信号で具現化し、いずれかの情報配信媒体を有する。「変調されたデータ信号」という語は、情報を信号で符号化するようなやり方でデータの特性の１つ以上が設定または変更された信号を意味する。例であって、限定ではないが、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体ならびに音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体がある。上記のいずれかを組み合わせたものも、コンピュータ読み取り可能な媒体の範囲内に含まれるべきである。
【００１３】
システムメモリ１３０は、ＲＯＭ（Read Only Memory）１３１およびＲＡＭ（Random Access Memory）１３２などの揮発性および／または不揮発性メモリの形で、コンピュータストレージ媒体を有する。ＢＩＯＳ（Basic Input/Output System）１３３は、起動中などにコンピュータ１１０内の要素間で情報を転送するのに役立つ基本ルーチンを含み、典型的には、ＲＯＭ  １３１に記憶される。ＲＡＭ  １３２は、典型的には、処理装置１２０により即座にアクセス可能なおよび／または処理装置１２０により現在操作されているデータおよび／またはプログラムモジュールを有する。例であって、限定ではないが、図１は、オペレーティングシステム１３４、アプリケーションプログラム群１３５、他のプログラムモジュール群１３６、およびプログラムデータ１３７を示している。
【００１４】
コンピュータ１１０は、他の取外し可能／取外し不能の揮発性／不揮発性コンピュータストレージ媒体も備えることができる。例に過ぎないが、図１は、取外し不能の不揮発性磁気媒体との間で読み書きするハードディスクドライブ１４０、取外し可能な不揮発性磁気ディスク１５２との間で読み書きする磁気ディスクドライブ１５１、およびＣＤ  ＲＯＭまたは他の光媒体などの取外し可能な不揮発性光ディスク１５６との間で読み書きする光ディスクドライブ１５５を示している。例示的な動作環境で使用できる他の取外し可能／取外し不能の揮発性／不揮発性コンピュータストレージ媒体には、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどがあるが、これらに限定されるわけではない。ハードディスクドライブ１４１は、典型的には、インターフェース１４０などの取外し不能メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、典型的には、インターフェース１５０などの取外し可能なメモリインターフェースによってシステムバス１２１に接続される。
【００１５】
上で説明され、図１に示されたドライブ群およびそれらに関連付けられたコンピュータストレージ媒体は、コンピュータ１１０用のコンピュータ読み取り可能な命令、データ構造、プログラムモジュール、および他のデータのストレージを提供する。図１において、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム群１４５、他のプログラムモジュール群１４６およびプログラムデータ１４７を記憶するとして示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム群１３５、他のプログラムモジュール群１３６、およびプログラムデータ１３７と同じであっても、異なっていてもよいことに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム群１４５、他のプログラムモジュール群１４６およびプログラムデータ１４７は、それらは少なくとも異なるコピーであることを示すために、本明細書では異なる番号を与えられている。ユーザは、キーボード１６２および一般的にはマウスと称されるポインティングデバイス１６１、トラックボールまたはタッチパッドなどの入力デバイスからコマンドおよび情報をコンピュータ２０に入力することができる。他の入力デバイス（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナ、ハンドヘルドＰＣのタッチ検知画面、または他の書込みタブレットなどがあり得る。これらおよび他の入力デバイスは、多くの場合、システムバスに結合されるユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）など、他のインターフェースおよびバス構造によって接続されることができる。モニタ１９１または他のタイプのディスプレイデバイスは、ビデオインターフェース１９０などのインターフェースを介してもシステムバス１２１に接続される。モニタに加えて、コンピュータは、スピーカ群１９７およびプリンタ１９６などの他の周辺出力デバイスを備えることもでき、出力周辺インターフェース１９０を介して接続されることができる。
【００１６】
コンピュータ１１０は、リモートコンピュータ１８０などの１つ以上のリモートコンピュータとの論理接続を用いてネットワーキング環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の一般的なネットワークノードであってよく、典型的には、コンピュータ１１０との関連で上述された要素の多くまたは全部を備えるが、図１には、メモリストレージデバイス１８１のみが示されている。図１に示された論理接続には、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３があるが、他のネットワークを含むこともできる。そのようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて一般的である。
【００１７】
ＬＡＮネットワーキング環境で使用された場合、コンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ  １７１に接続される。ＷＡＮネットワーキング環境で使用された場合、コンピュータ１１０は、典型的には、インターネットなどのＷＡＮ  １７３で通信を確立するためのモデム１７２または他の手段を備えている。モデム１７２は、内蔵でも、外付けでもよいが、ユーザ入力インターフェース１６０または他の適切な機構を介してシステムバス１２１に接続されることができる。ネットワーキング環境では、コンピュータ１１０との関連で示されたプログラムモジュール群またはその一部は、リモートメモリストレージデバイスに記憶することができる。例であって、限定ではないが、図１は、リモートアプリケーションプログラム群１８５はメモリデバイス１８１に常駐していると示している。示されたネットワーク接続は例であって、コンピュータ相互間に通信リンクを確立する他の手段を使用できることが理解されよう。
【００１８】
［リソースの複製］
容易に理解できるであろうが、最近のマシンは比較的短期間に何千ものリソース変更を処理することができる。信頼性および帯域幅が異なる種々のネットワークを介して接続される何百または何千ものマシンにわたってこれらのリソースを複製し、それらを同期化させたまま保持することは、相当な難題である。
【００１９】
楽観的マルチマスタ複製システムは、所与の複製グループに加わっているどのマシンにおいても、複製されたコンテンツへの無制限の変更を許容する。複製グループは、その複製グループに加わっているマシンで複製される１セットのリソースを有する。複製グループのその１セットのリソースは、複数のボリュームにまたがることができる。例えば、複製グループは、Ｃ：＼ＤＡＴＡ、Ｄ：＼ＡＰＰＳ、およびＥ：＼ＤＯＣＳに関連付けられたリソースを含むことができて、これらのリソースは、この複製グループに加わっている１セットのマシンで複製されることができる。潜在的に矛盾する変更は、複製システムの制御下で、個々の矛盾状況ごとに、どの矛盾する変更が他より優先するかを定義する１セットの矛盾解決基準を使用して調整される。
【００２０】
複製グループメンバ、すなわち複製グループのメンバは、その複製グループに含まれるリソースを複製することにより複製グループに加わるマシンを有する。コンテンツセット（単に「コンテンツ」と呼ばれることもある）は、複製グループメンバ内に存在するリソースを含む。
【００２１】
「マシン」という語は、単に物理的なマシンに限定されない。より正確に言えば、単一の物理マシンは、複数の仮想マシンを含むことができる。本明細書で言及された場合の１つのマシンから別のマシンへの複製とは、同じ複製グループの２つ以上のメンバを仮想または物理的な１つのマシンから仮想または物理的な別のマシンに複製することを意味する。単一の物理マシンは、同じ複製グループの複数のメンバを含むことができる。したがって、複製グループのメンバを複製することは、同じ複製グループの２つ以上のメンバを含む単一の物理マシンのメンバを同期化させることを伴うことがある。
【００２２】
リソースは、オブジェクトと考えることができる。各リソースは、リソースデータおよびリソースメタデータに関連付けられている。リソースデータは、コンテンツ、およびそのコンテンツに関連付けられた属性を含むことができ、リソースメタデータは、同期化のネゴシエートおよび矛盾の解決に関係しうる他の属性を含む。リソースデータおよびメタデータは、データベースまたは他の適切なストアに記憶することができる。代替実施形態では、リソースデータおよびリソースメタデータを記憶するために個別のストアを使用できる。
【００２３】
ファイルシステム内の名前付きファイルに基づいたデータストアを備えた複製システムでは、リソースデータは、ファイルコンテンツ、およびそのファイルコンテンツに関連付けてファイルシステムに記憶される何らかのファイル属性を含むことができる。ファイル属性は、ファイルに関連付けられたアクセス制御リスト（ＡＣＬ）、作成／変更時間、および他のデータを含むことができる。本明細書で言及された場合、ファイルはディレクトリ（すなわち、子孫ファイルおよびディレクトリならびに先祖ディレクトリに関連付けることができるファイルシステムオブジェクト）および非ディレクトリを含むことができる。コンテキストで明確に特別な断りが記載されない限り、語句「ファイル」は「リソースデータ」と解釈することができる。
【００２４】
ファイルシステム内の名前付きファイルに基づかないデータストアを備えた複製システム（例えば、リソースがデータベースまたはオブジェクトベースのデータストアに記憶される複製システム）では、データストアに適したリソースデータが記憶される。本明細書全体にわたって、時々、例示の目的でファイルシステム内のファイルに基づいた複製システムが使用されるが、本明細書で説明される主題の精神または範囲から逸脱することなく、コンテンツを記憶することができる任意のデータストアを使用できることが理解されよう。
【００２５】
リソースごとに、リソースメタデータは、そのリソースが削除されたかどうかに関係なく、ＧＵＩＤ（Globally Unique IDentifier）、変更者とともにバージョンシーケンス番号、変更が行われた時間を反映するクロック値、およびリソースデータの値を要約し、リソースコンテンツの署名を含むことができるダイジェストなどの他のフィールドを含むことができる。ダイジェストは、例えば、複製の同期化中にデータ転送をバイパスするための迅速な比較のために使用できる。宛先マシン上のリソースがソースマシン上のコンテンツと同期化されると（例えば、ダイジェストで示されたとおりに）、リソースデータ自体は送信せずに、リソースメタデータのみを送信することにより、ネットワークのオーバーヘッドを最小にすることができる。リソースメタデータの送信は、宛先マシンが、ソースマシンに含まれていたメタデータを宛先マシンの以降の複製アクティビティに反映できるように行われる。これにより、宛先マシンは、例えば、以降の複製アクティビティでソースマシンになることができる。リソースメタデータは、本明細書で説明される主題の精神または範囲から逸脱することなく、リソースデータと一緒に、またはリソースデータから分離して記憶できる。
【００２６】
リソースを複製するとき、バージョンベクターを使用することができる。バージョンベクターは、複製グループに加わっているマシンのカウンタまたはクロックの一括セットと見なすことができる。複製グループに加わっている各マシンは、そのマシンの現在の最新バージョン、およびそのマシンが他のマシンに関して受信した最新バージョンを表すバージョンベクターを保持する。リソースがマシン内で作成、変更または削除されるたびに、そのリソースのバージョンは、そのマシンの現在のバージョン番号に１を加えた値に等しいバージョン番号を設定することができる。そのマシンのバージョンベクターも、そのマシンのバージョン番号が増加されたことを反映するように更新される。
【００２７】
バージョンベクターは、知識の状態について情報を保持する。バージョンベクターは、マシン識別子をタイムスタンプにマッピングすることができる。複製グループに加わっている各マシンは、他のマシンが到達したとそのマシンが解釈するクロック値を記録するために、そのマシン自体のクロックベクターを保持できる。クロックベクターはバージョンシーケンス番号を含むことができる。１つの実施形態では、順番から外れた更新の処理に対応するため、およびバージョンベクターに対する基本設定操作を利用するために、マシンごとに単一のクロック値を保持する代わりに、クロック値のセットを保持することができる。
【００２８】
１つの実施形態では、同期化中、リソースの同期化で使用するためにバージョンベクターを送信することができる。例えば、マシンＡおよびＢが結合などの同期化アクティビティに関与している場合、マシンＢがそのバージョンベクターをＡに送信できる。Ｂのバージョンベクターを受信すると、Ａは、Ｂのバージョンベクターによって包含されない（すなわち、支配されていない）バージョンを有するすべてのリソース（ある場合）について変更を送信することができる。「あるバージョンベクターが別のバージョンベクターを支配する」という句は、バージョンベクター間の対応する包含関係と同義である。
【００２９】
同期化でバージョンベクターを使用する例は、特許文献１（題名「Interval Vector Based Knowledge Synchronization for Resource Versioning」）、特許文献２（題名「Garbage Collection of Tombstones for Optimistic Replication Systems」）および特許文献３（題名「Granular Control Over the Authority of Replicated Information via Fencing and UnFencing」）で説明されている。
【００３０】
図２は、複製グループに参加しているマシンを本明細書で説明される主題の態様に従って概略的に表しているブロック図である。例として、アップストリームマシン２０１およびダウンストリームマシン２０２は、２つのリソースを含む複製グループに参加することができる。これらの２つのリソースは、例えば、ドキュメントディレクトリ２０５および２１５ならびにヘルプディレクトリ２１０および２２０を含むことができる（これらのディレクトリは、特定の一時点では、これらのリソースが同じリソースデータを含まない可能性がある、すなわち、これらのリソースが同期していない可能性があることを示すために、２つのマシンで異なる番号が付与されている）。
【００３１】
定期的に、ダウンストリームマシン２０２はアップストリームマシン２０１に更新を要求し、その更新に基づいてダウンストリームマシン２０２のリソースを更新することができる。図２にはマシンが２つしか示されていないが、アップストリームおよびダウンストリームマシン２０１および２０２は、多くの他のマシンを含む複製システムの一部であってよい。１つのインタラクションでソースであるマシン（アップストリームマシンと呼ばれることもある）は、別のインタラクションでは宛先（ダウンストリームマシンと呼ばれることもある）になり得る。その逆もあり得る。
【００３２】
ダウンストリームマシン２０２は、アップストリームマシン２０１から更新をいつ取得すべきかを判定する更新機構２２５を備えることができる。ダウンストリームマシン２０２が別のマシン（図示せず）のアップストリームパートナーでもある場合、更新機構２２５は、どの更新を他方のマシンに送信するかも判定することができる。更新機構は、図３に関連付けて以下でさらに詳しく説明されている。
【００３３】
図３は、本明細書で説明される主題の態様に従ってリソース複製システム内で動作するように構成されたマシンを表しているブロック図である。マシン３０５は、更新機構２２５、リソース３２２、および通信機構３４０を備えている。更新機構は、エポックロジック（epoch logic）３４５、プロトコルロジック３１５、および他の同期化ロジック３２０を備えている。
【００３４】
リソース群３２２には、リソースデータを記憶するためのリソースデータストア３２５およびリソースメタデータストア３３０がある。同じボックス内に示されているが、リソースデータストア３２５は、一緒に記憶されてもよいし、リソースメタデータストア３３０に関連付けられた別のストアに記憶されてもよい。とりわけ、リソースメタデータストア３３０は、リソースストア３２５に記憶されているリソースデータレコードのそれぞれのバージョンを含むことができるし、間隔ベクター（ブロック３３５）も含むことができる。
【００３５】
リソースメタデータストア３３０は、複製されたフォルダに関連付けられたレコードも含むことができるが、その場合の各レコードは、（例えば、タイムスタンプによって）そのそれぞれの複製されたフォルダが他のメンバ上の対応する複製されたフォルダとの同期化アクティビティに最後に成功したのはいつであったかを示す。本明細書で言及された場合、複製されたフォルダは、コンテンツセットと同義である。
【００３６】
通信機構３４０は、更新機構２２５が他のマシン上の他の更新機構（図示せず）と通信できるようにする。通信機構３４０は、ネットワークインターフェースもしくはアダプタ１７０、モデム１７２または図１に関連付けて説明された通信を確立するためのいずれか他の手段であってよい。
【００３７】
更新機構２２５は、他の複製パートナーと通信するために稼働するプロトコルロジック３１５、およびマシンが以下でさらに詳しく説明される他のマシンとの同期化アクティビティに関与するかを判定するために稼働するエポックロジック３４５を備えている。他の同期化ロジック３２０は、プロトコルロジック３１５以外の同期化ロジック（例えば、更新が矛盾する場合はどうするか、どの更新を取得すべきかの判定方法など）を備えている。プロトコルロジック３１５、エポックロジック３４５、および他の同期化ロジック３２０は個別のボックスとして示されているが、他の実施形態では、これらは全体または一部を結合することができる。
【００３８】
本明細書で言及された場合、複製サービスは、図３に関連付けて上述されたコンポーネントのいずれか１つ以上を備えることができる。
【００３９】
稼働時、マシン３０５は、ダウンストリームマシンおよび／またはアップストリームマシンとして稼働できる。ダウンストリームマシンは、そのアップストリームマシンおよびダウンストリームマシンの両方が参加している複製グループ用にアップストリームマシンとの接続を確立することができる。これは、例えば、通信機構３４０を介して行うことができる。この接続を確立する際、パートナーのそれぞれ（すなわち、アップストリームマシンおよびダウンストリームマシン）はそのバージョンベクターを相手パートナーに送信できる。すると、アップストリームマシンからダウンストリームマシンへ更新を送信するためのセッションが確立される。
【００４０】
セッションは、アップストリームマシンの複製されたフォルダをダウンストリームマシンの対応する複製されたフォルダにバインドするために使用できる。セッションは、複製グループの各複製されたフォルダに対して確立できる。アップストリームマシンとダウンストリームマシンとの間の単一の接続で複数のフォルダに対するセッション（複数）を確立できる。
【００４１】
セッションからのすべての更新が処理または破棄された後、ダウンストリームマシンはセッションを閉じることができる。
【００４２】
ダウンストリームマシンは、そのセッションに関連したいずれかのリソースの更新が発生したとき、アップストリームマシンがダウンストリームマシンに通知するように（例えば、通信機構３４０を介して）要求することができる。アップストリームマシンがダウンストリームマシンに更新が利用可能であることを通知すると、ダウンストリームマシンは、更新のバージョンベクター（vector）を要求することができる。それに応答して、アップストリームマシンはそのバージョンベクター（「ＶＶｕｐ」と称されることもある）を送信する。ＶＶｕｐは完全なバージョンベクター、または最後のバージョンベクターの送信後の変更を含むバージョンベクターを含むことができることに留意されたい。ダウンストリームマシンに更新が利用可能であることを通知して、ダウンストリームマシンが更新を要求するのを待つことは、２つのステップで実行することができて、そのため、ダウンストリームマシンが複数のアップストリームパートナーからのバージョンベクターで思いがけずあふれないようになっている。
【００４３】
ダウンストリームマシンは、それが受信するアップストリームバージョンベクター（すなわち、「ＶＶｕｐ」）を使用し、ダウンストリームマシン自身のバージョンベクターとの設定差異を計算してダウンストリームマシンが知らないアップストリームマシン上のバージョンを算出する。次いで、ダウンストリームマシンはそのバージョンに関するメタデータを要求することができる。更新を要求するとき、ダウンストリームマシンは、ダウンストリームマシンがどの更新を必要としているかを示すデルタバージョンベクターを含むことができる。
【００４４】
ダウンストリームマシンは、ツームストーン（tombstone）またはライブ更新を個別または一緒に要求することができる。ツームストーンは、リソースが削除済みであることを表し、ライブ更新は、リソースを削除しない更新を表す。一部の実施態様では、ダウンストリームマシンは、ライブ更新を要求する前にツームストーンを要求することができる。これを行うと、変更され、次いで削除されたリソースは、複製パートナー上で削除される前に変更される必要がないので、効率が改善され得る。加えて、ライブ更新の前にツームストーンを処理すると、ライブ置換更新を処理するための準備として、ダウンストリームマシンの（例えば、ファイルシステム内の）データストアの名前空間をクリアできる。
【００４５】
更新を受信後、ダウンストリームマシンは、更新の処理を開始して、その更新に関連付けられたどのリソースデータまたはその一部をアップストリームマシンに要求すべきかを判定することができる。この処理は、例えば、複数のコンポーネントに分割できる（図示せず）他の同期化ロジック３４０を使用して実行できる。例えば、更新は、特定のリソースのリソースデータまたはその一部が変更されていることを示すことがある。１つの実施形態では、ダウンストリームマシンによって、そのリソースに関連付けられているすべてのリソースデータを要求することができる。別の実施形態では、ダウンストリームマシンによって、変更を含むリソースデータの一部を要求することができる。本明細書で言及された場合、リソースデータに関わるインタラクション（例えば、要求、応答、更新など）とは、リソースに関連付けられたリソースデータの一部または全部に関わるインタラクションを意味すると解釈すべきである。例えば、リソースデータの要求は、リソースに関連付けられたリソースデータの一部または全部の要求を意味することができる。
【００４６】
要求する必要があるリソースデータを判定後、ダウンストリームマシンはそのリソースデータを要求することができる。リソースデータの要求への応答として、アップストリームマシンは、リソースに関連付けられたリソースデータを送信することができる。要求と応答は、更新が必要とダウンストリームマシンが判定したすべてのリソースデータが要求され終わるまで続くことができる。例えば、リソースが削除されている場合、アップストリームマシンはもはや要求されたリソースデータを有していないことがあるので、リソースデータのすべてを送信することはできないことがあることに留意されたい。リソースデータが送信できないもう１つの例は、そのダウンストリームマシンに関係のある有効な変更は、リソースが名前変更された、またはメタデータ属性が更新されただけの場合である。そのような場合、更新の受信およびローカルリソースの名前変更またはローカルメタデータの更新が、ダウンストリームリソースをアップストリームリソースと同期化させるために必要なすべてであることがある。
【００４７】
セッションは、例えば、複製されたフォルダが削除された場合、複製中に回復不可能なエラーが発生した場合、または複製システムがシャットダウンされた場合に閉じられることがある。そうでない場合、確立されたセッションは、上記のイベントの全部または一部に関わる以降の同期化アクションのために使用されることができる。
【００４８】
更新機構２２５は、リソースデータストア３２５内のリソースデータのファイル状態およびディレクトリ状態を追跡するためにデータベース（例えば、リソースメタデータストア３３０）を使用することができる。リソースが更新されるたびに、そのリソースはデータベース内に新しいバージョンを割り当てられることができる。
【００４９】
更新機構２２５は、アップストリームパートナーから更新を受信してローカルリソースを更新し、ローカルリソースが、アップストリームパートナー上の複製されたリソースと同期するようにすることができる。リソースメタデータの更新はリソースメタデータストア３３０に記憶され、リソースデータの更新はリソースデータストア３２５に記憶されることができる。１つの実施形態では、リソースデータストア３２５およびリソースメタデータストア３３０は同じボリュームまたは同じ物理デバイス（例えば、ハードドライブ）に含むことができる。
【００５０】
リソースデータは、そのリソースデータに関連付けられたローカルファイルアクティビティによっても変更することができる。例えば、複製する側のパートナーは、多くのクライアントマシンに対してファイルサーバとして役立つことができる（図示せず）。クライアントマシンは、複製する側のパートナー上のリソースデータ（例えば、ファイル）にアクセスして変更することができる。更新機構２２５は、複製されたリソースへの変更（例えば、ファイルへの変更）をモニタできるリソースデータ変更モニタ（図示せず）を備えることができる。複製されたリソースが変更されると、リソース変更モニタは、その更新を示すようにリソースメタデータストア３３０を更新することができる。これは、リソースメタデータストア３３０をリソースデータ３２５と同期させておくため、および複製グループメンバ間の同期化に役立つ。
【００５１】
［コンテンツのフレッシュさ］
エポックロジック３４５は、複製グループのメンバのコンテンツセットのコンテンツのフレッシュさを判定するときに使用できる。メンバがその複製グループのメンバを有する他のマシンから長い期間切断されていると、そのメンバのリソースは非同期になって陳腐化する可能性がある。そのメンバが複製グループに再結合され、本明細書で説明されるエポックロジック３４５を使用しない場合、そのマシンはその複製グループの他のメンバとの複製を開始することができる。そのメンバに更新がない場合、そのメンバは、他のメンバから更新を受信することができ、いかなる陳腐化したリソースも外部に複製することはできない。しかし、そのメンバに、役に立たない最近の更新がある場合、これらの更新は外部に複製されて、他のメンバの適正な最新のバージョンに上書きされる可能性がある。したがって、ある意味で、コンテンツのフレッシュさは、変更の妥当性の目安として見ることができる。
【００５２】
これが発生し得る１つの例は、マシンがハードウェアの問題で長い期間（例えば、２ヶ月）シャットダウンされていた場合である。マシンは、修復後、オンラインに戻ることができ、そのマシン上でホストされる複製グループのメンバは、他のマシン上のパートナーとの同期化を開始することができる。パートナーとの同期化の開始時点で、またはその直前に、何らかのアプリケーション（例えば、ウイルス対策アプリケーション）が１つ以上の陳腐化したファイルを横断し、タッチする（例えば、最後に変更された時間を更新する）ことがある。本明細書で説明される態様がなければ、これにより、そのメンバ上の陳腐化したファイルが最近更新されたように見えるようになり、外部の他のマシンの他のメンバに複製され、他のマシン上のより適正なバージョンに上書きされる。
【００５３】
１つの態様では、エポックを使用することにより、陳腐化したコンテンツを複製すること（それについては、上述の例が典型的である）を回避または減らすことができる。１つの実施形態では、あるマシンをマスタと指定して、このマシン上でエポック値を絶えずアップデートして、他のマシンに伝搬することができる。同期化中、２つのマシン間のエポックが許容できるものより大きい差異を有している場合、陳腐化したコンテンツ（例えば、より小さいエポック値を有しているコンテンツ）を有するマシンからのアップデートは、より最新のマシンに複製し直されることはなくなる。
【００５４】
態様では、エポック値はマシン、複製されたフォルダ、または個々のリソースに設定することができる。マシンにエポック値が設定された場合、そのマシン上の複製されたフォルダおよびリソースは、同じエポック値を有するものとして扱うことができる。複製されたフォルダにエポック値が設定された場合、そのフォルダに関連付けられたすべての複製されたリソースは、同じエポック値を有するものとして扱うことができる。そのマシン上の他の複製されたフォルダは異なるエポック値を有することができる。各リソースがその固有のエポック値を有している場合、各複製されたフォルダ内の異なるリソースは異なるエポック値を有することができる。
【００５５】
エポック値を使用することは、陳腐化を判定できるように、同期化中のエポック値の送信を伴うことがある。その結果、リソース別ベースでエポック値を設定すると、複製されたフォルダにまたはマシン別ベースでエポック値を設定する場合より、課されるオーバーヘッドが大きくなることがある。エポック値は、本明細書で説明される主題の精神または範囲から逸脱することなく、１つのマシンでは１つの方法で（例えば、複製されたフォルダ別に）で、別のマシンでは別の方法で（例えば、リソース別に）設定することができる。
【００５６】
別の実施形態では、エポック値を使用する代わりに、メンバは、ローカルシステムクロックを使用して生成されたタイムスタンプを記憶することができる。ローカルシステムクロックは、最新に維持されるようにタイムサーバから定期的に更新されることができる。タイムスタンプは、種々の同期化アクティビティに応じて更新されることもできる。１つの実施形態では、複製されたフォルダのタイムスタンプは、その複製されたフォルダが他のメンバの複製されたフォルダと正常に同期化されるたびに更新されることができる。別の実施形態では、タイムスタンプは、複製グループの別のメンバとの間に適正な接続が確立されるたびに更新されることができる。
【００５７】
さらに別の実施形態では、タイムスタンプは、同期化アクティビティに応じて１日に１回またはいずれか他の選択された頻度で更新されることができる。その期間に同期化アクティビティが行われて成功すると、タイムスタンプは更新されることができる。成功する同期化アクティビティは、複製されたフォルダを別のメンバの「複製されたフォルダ」と正常に同期化させること、別のメンバとの適正な接続を確立すること、別のメンバとの適正な接続を維持すること（例えば、「ハートビート」メッセージによって、または他の方法で示されるとおりに）、バージョンベクターをアップストリームパートナーから取得すること、バージョンベクターをダウンストリームパートナーに送信すること、またはいずれか他の同期化アクティビティを伴うことがある。
【００５８】
タイムスタンプについては、各複製されたフォルダは、そのフォルダのメタデータストアに関連のレコード（例えば、ＣＯＮＴＥＮＴ＿ＳＥＴ＿ＲＥＣＯＲＤ）を含むことができる。そのレコードに含まれるフィールドの中で特に、そのレコードは、例えば、そのレコードの対応する複製されたフォルダのフレッシュさを反映するためにタイムスタンプを含むことができる。
【００５９】
マシン上でホストされる１つの複製されたフォルダが最新になっていて、マシン上でホストされる別の複製されたフォルダが陳腐化していることがあり得ることに留意されたい。これは、一方の複製されたフォルダはその複製グループ内の他のメンバと同期化できていて、他方の複製されたフォルダはその複製グループ内の他のメンバと同期化できていなかったために起きる可能性がある。
【００６０】
複製されたフォルダをホストするメンバが別のメンバに接続しようとする前、または別のメンバからの接続要求を受け入れようとする前に、そのメンバは、複製されたフォルダのタイムスタンプが最新（例えば、現時点からの設定可能な日数内）であるかを、いずれか他の複製アクティビティに着手する前に検査することができる。タイムスタンプが最新であれば、そのメンバは接続できるか、または任意の接続要求を許可することができて、同期化アクティビティに進むことができる。そうでない場合、そのメンバは、別のメンバに接続しようとすることができないか、または任意の接続要求を拒否することができて、他方のメンバとの任意の追加複製アクティビティの開始を行わない。
【００６１】
別の実施形態では、メンバのコンテンツが陳腐化している場合、接続要求を拒否しないで、メンバは接続要求を受け入れることができるが、同期化セッションに着手することを拒否することができる。１つの実施形態では、同期化セッションに着手することの拒否は、接続要求の拒否の代わりに、接続要求の拒否に関連して本明細書で説明される任意の時点で発生することができる。
【００６２】
別の実施形態では、陳腐化したコンテンツを含むメンバは初期化に失敗する可能性があって、そのため、その後、そのメンバは、他のメンバと接続しようともしないし、どんな接続要求も受け入れることができない。
【００６３】
接続要求の受入れを拒否するメンバは、周知のエラーコードを返すことができて、そのため、他方のメンバは、そのメンバのコンテンツが陳腐化していることを知ることができる。加えて、このメンバはイベント（例えば、ＥＶＥＮＴ＿ＤＦＳＲ＿ＣＳ＿ＳＴＡＬＥ）をログに記録することもできる。
【００６４】
古くなったタイムスタンプを有する複製グループのメンバは、陳腐化したコンテンツを有すると考えることができる。ローカルシステムクロックとタイムスタンプとの間の、複製メンバのコンテンツが陳腐化したと考えられるまでの許容できる最大差異は、システム管理者、ユーザなど（これ以降、時々、「システム管理者」と称される）が設定できる。この最大差異は、時々、「陳腐化値」と称される。
【００６５】
陳腐化の誤った表示を回避するために、成功した同期化アクティビティに応答してタイムスタンプが更新される頻度を、陳腐化値と一致する期間中に少なくとも１回は行うように選択できる。例えば、メンバが別のメンバとの適正な接続を維持している場合、タイムスタンプは、そのメンバが適正な接続を維持している日ごとに更新されてよい。陳腐化値が３０日の場合にタイムスタンプが毎日更新されると、陳腐化の誤った表示が発生することはなさそうである。
【００６６】
陳腐化値と一致する期間中に少なくとも１回の更新の可能性を保証しない更新頻度を選択すると、陳腐化の誤った表示につながる可能性がある。例えば、タイムスタンプが３０日ごと、またはそれより長い期間に１回更新されるだけであって、陳腐化値が３０の場合、同期化アクティビティが成功していても（すなわち、適正な接続）、タイムスタンプについては更新されなかったということが起こり得る。
【００６７】
陳腐化値と比較してタイムスタンプを非常に頻繁に更新することとタイムスタンプをより低い頻度で更新することの間にはトレードオフ（例えば、オーバーヘッド）があることが理解されよう。１つの実施形態では、陳腐化値は３０日に設定されているときに、タイムスタンプが更新される頻度は、日に１回（その日、成功した同期化アクティビティが行われた場合）である。他の実施形態では、例えば、実施態様およびシステム構成に応じて他の頻度および陳腐化値を選択することができる。
【００６８】
加えて、ツームストーン収集期間に等しいか、それより小さい陳腐化値を設定することにより、様々な問題を回避または低減できる。ツームストーン収集期間とは、リソースが削除されたことを示すメタデータリソースレコードを削除する前にメンバが待つ期間のことである。典型的には、複製グループ内の他のメンバにツームストーンが伝搬され得るように、メンバはレコードを削除するのを待つ。メンバが複製グループの他のメンバから十分な期間にわたって切断されていると、リソースのツームストーンが作成されて、次いでメタデータリソースレコードが削除されてしまう可能性がある。本明細書で説明される機構がなくて、そのリソースが陳腐化したメンバ上に存在している場合（および図３に関連付けて説明された同期化が行われた場合）、そのリソースは、陳腐化したメンバから外部に複製され、その複製グループの他のメンバに再導入される可能性がある。
【００６９】
この動作を回避または低減するために、陳腐化値をツームストーン期間に等しいか、それより小さく設定することができる。ツームストーン期間に比べて陳腐化値が小さいほど、削除されたリソースに対するツームストーンがすべての陳腐化していないメンバに伝搬される前に、ツームストーンも削除されるということは減るだろう。メンバがツームストーン期間内に別のメンバと正常に同期化される限り、そのメンバは、ツームストーンを受信し、そのメンバの対応するリソースに削除のマークを付ける可能性が高くなる。メンバがこの期間中に別のメンバと正常に同期化されない場合、そのメンバのコンテンツに陳腐化しているというマークを付けることができ、以下で説明される他の機構を使用して、陳腐化したコンテンツが複製グループの他のメンバ内に再導入されないようにすることができる。
【００７０】
複製されたフォルダが陳腐化されると、システム管理者はそのフォルダを使用不可にして、次いで再度使用可能にして、インバウンド接続が使用可能な場合、その複製されたフォルダが別のメンバと同期化されるようにすることができる。複製されたフォルダを再度使用可能にすると、複製されたフォルダは初期同期化が行われる。この初期同期化中、複製されたフォルダを同期化させるために、以下で説明されるように、３つの複製ストラテジーの少なくとも１つを使用することができる。
【００７１】
１つのストラテジーでは、複製パートナーの１つ（例えば、陳腐化した内容を含むパートナー）を読取専用（またはスレーブ）として設定することができる。要するに、読取専用メンバ上の任意のアップデートは破棄される。そのメンバにファイルが作成された場合、そのファイルは削除される。既存のファイルが削除されると、そのファイルは再生される（例えば、削除されない）。ファイルが更新された場合、その更新は破棄され、元のバージョン、または別のパートナーからのより新しいバージョンが再インストールされる。概して言えば、これにより、非読取専用パートナー（例えば、マスタ）からのすべての更新が読取専用パートナーに複製される。
【００７２】
第２のストラテジーでは、リソースのマージが行われる。マージでは、アップストリームパートナーからのリソースが、陳腐化したパートナーに、陳腐化したパートナー上で異なるすべてのリソースに関して複製される。陳腐化したパートナーがリソースを含んでいない場合、そのリソースは、陳腐化したパートナーに複製される。陳腐化したパートナーが、アップストリームパートナーが含んでいないリソースを含んでいる場合、このリソースは、陳腐化したパートナー上で削除されず、その陳腐化したパートナーが別のメンバのアップストリームパートナーになった場合、このリソースは、陳腐化したパートナーから外部へ複写されることができる。
【００７３】
第３のストラテジーでは、図３に関連付けて上述された同期化を行うことができる。このストラテジーでは、概して言えば、より最新の変更日付を有するリソースが外部に複写され、より最新でない変更日付を有する他のメンバ上の対応するリソースに上書きされる。
【００７４】
複製グループのメンバのすべてが陳腐化していることがあり得る。そのような場合には、その複製メンバの１つを１次メンバとして設定することができる。メンバが１次メンバとして指定されると、そのメンバは、リソースを外部のダウンストリームパートナーに複製できるようになる。メンバが１次メンバとして指定されない場合、そのメンバがアップストリームパートナーとリソースを正常に同期化してしまうまで、そのメンバは、リソースを外部のダウンストリームパートナーに複製できない。メンバが別のメンバで正常に複製されると、そのメンバは、図３に関連付けて説明されているように、標準の複製アクティビティを再開することができる。
【００７５】
同期化中、どのリソースが勝つ（および外部へ複写される）かを制御するフェンス値を設定することができる。フェンス値は、システム管理者が、リソースの他の特性に関係なく、複製グループの他のメンバに複製されるメンバのリソースを示すことができるようにしている。例えば、より大きいフェンス値を割り当てられているリソースは、そのリソースが別のメンバの対応するリソースより古くても、外部に複製されることができる。
【００７６】
１つの実施形態では、複製グループの全メンバが陳腐化している場合、自動リカバリが実行される。１次メンバはシステム管理者によって、すべてのメンバが陳腐化した場合に１次メンバになるように予め指定されることができる。あるいは、メンバの他の特性（例えば、ロケーション、階層順（ある場合）、最新のタイムスタンプなど）を使用して、どのマシンが１次マシンとして指定されるかを決定することができる。
【００７７】
別の実施形態では、複製グループのメンバのすべてが陳腐化している場合、手動の介入を行うことができる。そのような介入では、メンバのすべてが陳腐化していることおよび１つのメンバを同期化が再開されるための１次として設定する必要があることをシステム管理者に通知することができる。次いで、システム管理者はどのメンバが１次メンバであるかを示すことができる。
【００７８】
複製グループメンバが、権限のあるリソースまたはアウトバウンド接続のみを有している（すなわち、そのメンバはアップストリームパートナーを有していない）場合、そのメンバは、長い期間にわたって他のメンバから切断されていた場合、陳腐化していると考えることもできる。権限のあるリソースとは、複製グループのすべての他のメンバ上の対応するリソース（「権限がある」と指定された他のリソースを除く）をオーバーライドするように指定されたリソースである。１つの実施形態では、これは、各権限のあるリソースに特別なフェンス値を割り当てることにより行うことができる。コンテンツセットのリソース（例えば、特定のメンバ上のリソース）は、例えば、１つのメンバにバックアップリストアが実行され、かつすべての他のメンバもこの同じコンテンツセットを有していることが望ましい場合に「権限がある」と指定することができる。
【００７９】
コンテンツセットのリソースは、メンバがリソースの消失から回復するとき、「権限がない」と指定することができる。権限がない場合、そのメンバのリソースはアップストリームパートナーからのリソースに負ける。特定のリソースの場合、リソースデータがアップストリームパートナー上に収められていたリソースデータと同一である場合、そのリソースデータは、リソースのリソースメタデータが異なっていても、アップストリームパートナーからダウンロードされる必要はない。コンテンツセット内のリソースは、例えば、複製グループのメンバのリソースが失われたか、または破壊され、そのリソースがバックアップからリストアされ、リソースがそのメンバから外部に複製されないことが望ましい場合に「権限がない」と指定することができる。
【００８０】
時々、メンバのリソースメタデータが破壊される、または失われるまたは削除されることがある。これが発生した場合、そのリソースメタデータを記憶しているデータベースを削除して、リソースデータから再構築することができる。この場合、メンバのコンテンツセットのリソースを「権限がない」と指定することもできる。
【００８１】
リソースおよびアップストリームパートナー上のその対応するリソースが「権限がある」または「権限がない」と指定されない場合、通常の競合解決策を使用することによって、どのリソースが勝って外部に複製されるかを決定することができる。
【００８２】
陳腐化したメンバをフレッシュにすることが望ましい場合、システム管理者が陳腐化した複製されたフォルダを強制的に最新にするためのインターフェースを表示することができる。１つの実施形態では、このインターフェースは、陳腐化したメンバをフレッシュにするためにタイムスタンプを更新することができる。
【００８３】
システムのヘルスがモニタされるシステムでは、ヘルスモデルは、陳腐化した状態の複製されたフォルダを警告状態と考えることができ、レポートに警告を表示することができる。上述のように、陳腐化したメンバがシステム管理者の介入を必要としないことがあり、そのため、１つの実施形態では、陳腐化した状態は、重大なエラーではなく、警告として指摘されることができる。
【００８４】
図４は、ローカルマシンのコンテンツが、複製グループの他のメンバと同期化されるのに十分にフレッシュであるかを判定する際に実行される可能性のあるアクションを本明細書で説明される主題の態様に従って概略的に表している流れ図である。ブロック４０５でアクションが始まる。
【００８５】
ブロック４１０で、接続要求がパートナー（アップストリームまたはダウンストリーム）から受信される。ブロック４１５で、要求を受信したメンバが、前に説明されているように、そのローカルリソースが陳腐化しているかを判定する。ブロック４２０で、ローカルリソースが陳腐化している場合、アクションはブロック４２５に進む。そうでない場合、アクションはブロック４３０に進む。ブロック４２５で、接続は拒否され、ローカルリソースが陳腐化していることを示すメッセージが要求側に戻されることがある。
【００８６】
ブロック４３０で、接続要求が受け入れられて、他の同期化アクティビティを実行できる（例えば、図３に関連付けられて説明されたアクティビティ）。ブロック４３５で、タイムスタンプを更新して、同期化が最近行われたことを示すことができる。
【００８７】
ブロック４４０で、アクションは終了する。
【００８８】
図示されていないが、メンバが別のメンバとの接続を要求する前に、そのメンバは、そのローカルリソースが陳腐化していないか判定することができる。陳腐化している場合、そのメンバは、接続の要求をやめることができる。そうでなければ、そのメンバは接続を要求し、他の同期化アクティビティを実行し、そのタイムスタンプを更新することができる。
【００８９】
図５は、メンバが陳腐化したコンテンツを有していると判定され、コンテンツを回復するためにスレーブとして設定されている場合に実行される可能性のあるアクションを本明細書で説明される主題の態様に従って概略的に表している流れ図である。ブロック５０５でアクションが初期同期化フェーズから始まる。
【００９０】
ブロック５１０で、メンバ上にローカルに含まれるが、ローカルパートナーが同期化されようとしているアップストリームパートナー上に含まれない任意のリソースが削除される。
【００９１】
ブロック５１５で、ローカルに含まれないが、アップストリームパートナー上に含まれる任意のリソースが追加される。
【００９２】
ブロック５２０で、アップストリームパートナーと同一でない任意のリソースが取得されて、ローカルリソースはそれに応じて更新される。
【００９３】
ブロック５２５で、アクションは終了する。アクションが終了した後、ローカルパートナーは初期同期化ステージを過ぎたと考えることができ、その後、図４に関連付けて説明されたようにリソースを同期化することができる。
【００９４】
図６は、メンバが陳腐化したコンテンツを有していると判定され、コンテンツをアップストリームパートナーとマージするように設定されている場合に実行される可能性のあるアクションを本明細書で説明される主題の態様に従って概略的に表している流れ図である。ブロック６０５でアクションが初期同期化フェーズから始まる。
【００９５】
ブロック６１０で、アップストリームパートナーと同一でない任意のリソースが取得されて、ローカルリソースはそれに応じて更新される。
【００９６】
ブロック６１５で、ローカルに含まれないが、アップストリームパートナー上に含まれる任意のリソースが追加される。
【００９７】
ブロック６２０で、アクションは終了する。アクションが終了した後、ローカルパートナーは初期同期化ステージを過ぎたと考えることができ、その後、図４に関連付けて説明されたようにリソースを同期化することができる。これは、前に説明したように、ツームストーンも削除されている他のメンバ上で削除されているリソースを外部に対して同期化することを含むことがある。
【００９８】
図４〜図６に関連付けて説明されたアクションは、複製システムでリソースのフレッシュさを検査するときに実行される可能性のあるすべてのアクションを完全に包含しているわけではないことを理解すべきである。さらに、アクションは特定の順序で実行されるものとして説明されているが、他の実施形態では、本明細書で説明される主題の精神または範囲から逸脱することなく、一部のアクションは並行して実行することができるし、または別の順序で順序することができる。
【００９９】
前述の詳しい説明から理解できるように、態様は、コンテンツのフレッシュさおよびリソース複製システムに関連付けて説明されている。本明細書で説明される主題の態様は様々な変更および代替の構成が可能であるが、そのうちのいくつかの例示された実施形態が図面に示されており、上で詳しく説明されている。しかし、特許請求された主題の態様を、開示された具体的な形に限定する意図はなく、それどころか、意図するところは、本明細書で説明される主題の様々な態様の精神および範囲内に分類されるすべての変更、代替の構成、および均等物を包含することであることを理解すべきである。
【図面の簡単な説明】
【０１００】
【図１】本明細書で説明される主題の態様を組み入れることができるコンピュータシステムを表しているブロック図である。
【図２】複製グループに加わっているマシンを本明細書で説明される主題の態様に従って概略的に表しているブロック図である。
【図３】リソース複製システム内で稼働するように構成されたマシンを本明細書で説明される主題の態様に従って表しているブロック図である。
【図４】ローカルマシンのコンテンツが、複製グループの他のメンバと同期化されるのに十分にフレッシュであるかを判定する際に実行される可能性のあるアクションを本明細書で説明される主題の態様に従って概略的に表している流れ図である。
【図５】メンバが陳腐化したコンテンツを有していると判定され、コンテンツを回復するためにスレーブとして設定されている場合に実行される可能性のあるアクションを本明細書で説明される主題の態様に従って概略的に表している流れ図である。
【図６】メンバが陳腐化したコンテンツを有していると判定され、コンテンツをアップストリームパートナーとマージするように設定されている場合に実行される可能性のあるアクションを本明細書で説明される主題の態様に従って概略的に表している流れ図である。
【図１】
2009518747.tif 000003
【図２】
2009518747.tif 000004
【図３】
2009518747.tif 000005
【図４】
2009518747.tif 000006
【図５】
2009518747.tif 000007
【図６】
2009518747.tif 000008
【国際調査報告】
2009518747.tif 000009
2009518747.tif 000010