(57)【要約】  ミラーリングされるデータサイト間のデータの複製のためのコンピュータ実装方法及びシステムが提供される。例示的な方法は、ミラーリングされるデータサイトにおいてデータオブジェクトを受信することを含むことができ、ミラーリングされるデータサイトは１又は複数のデータノードを含む。データオブジェクトは、１又は複数のデータノードに内部で複製される。次に、データオブジェクトに関連付けられるデータオブジェクト参照が生成される。データオブジェクトを参照する参照は、全ての他のミラーリングされるデータサイトへの送信のためにキューに入れられる。データオブジェクトに関連付けられるデータオブジェクト参照は、他のミラーリングされるデータサイトに送信される。データオブジェクトが各ミラーリングされるデータサイトで受信されるとき、サイト内の１又は複数のデータノードに複製される。データオブジェクトを送信した後、データオブジェクト参照は破棄される。
2016530608.tif 000002
【特許請求の範囲】
【請求項１】
ミラーリングされるデータサイト間のデータの複製の方法であって：
１又は複数のデータノードを含む前記ミラーリングされるデータサイトでデータオブジェクトを受信するステップ；
前記データオブジェクトを前記１又は複数のデータノードに内部で複製するステップ；
前記データオブジェクトに関連付けられるデータオブジェクト参照を生成するステップであって、前記参照は、他の前記ミラーリングされるデータサイトへの送信のためにキューに入れられている前記データオブジェクトを参照する、ステップ；
前記データオブジェクトに関連付けられる前記データオブジェクト参照を、１又は複数の予めプロビジョニングされる相互接続を有する前記他のミラーリングされるデータサイトに送信するステップ；及び
前記他のミラーリングされるデータサイトへの送信のために前記データオブジェクトをキューに入れるステップ；を含み、
前記他のミラーリングされるデータサイトへの前記送信に際し、前記データオブジェクトは、前記他のミラーリングされるデータサイトに付随する前記１又は複数のデータノードに複製されるとともに、前記データオブジェクト参照は破棄される、
方法。
【請求項２】
前記データオブジェクトが、現在の記憶容量制約のために前記他のミラーリングされるデータサイト内の前記ノードに直ちに書き込まれることができないとき、送信のために前記データオブジェクトを再試行するステップをさらに含み、利用可能な容量が前記他のミラーリングされるデータサイトにおいて認識されるまで、前記データオブジェクト参照は破棄される、
請求項１に記載の方法。
【請求項３】
前記データオブジェクト参照は、前記データオブジェクトに関連付けられる内容に暗号学的ハッシュ関数を実行することによって生成される、
請求項１に記載の方法。
【請求項４】
前記データオブジェクト参照は、前記データオブジェクトに関連付けられる前記内容に基づいて前記データオブジェクトを見つけることを可能にする、
請求項３に記載の方法。
【請求項５】
前記ミラーリングされるデータサイト及び前記他のミラーリングされるデータサイトは、同じデータロジックを使用するサイト間層動作及びサイト内層動作をサポートし、前記１又は複数のデータノードへの前記データオブジェクトの前記複製は、前記サイト内層動作を選択することによって実行され、前記他のミラーリングされるデータサイトにおける前記１又は複数のデータノードへの前記データオブジェクトの前記複製は、前記サイト間層動作を指定することによって実行される、
請求項１に記載の方法。
【請求項６】
前記ミラーリングされるデータサイトを同期するステップをさらに含み、前記同期するステップは：
１又は複数の前記データオブジェクト参照及び前記ミラーリングされるデータサイトに関連付けられる前記データオブジェクトを、前記他のミラーリングされるデータサイトの１又は複数の前記データオブジェクト参照及び前記他のミラーリングされるデータサイトに関連付けられる前記データオブジェクトと比較するステップ；並びに
前記１又は複数のデータオブジェクト参照に対応する前記１又は複数のデータオブジェクトの配信を要求するステップ；を含む、
請求項１に記載の方法。
【請求項７】
前記ミラーリングされるデータサイトは、ファイルシステムの一貫性のあるビューを提供する、
請求項１に記載の方法。
【請求項８】
前記ミラーリングされるデータサイト及び前記他のミラーリングされるデータサイトのそれぞれの前記ノードは、完全なメッシュを形成するように相互接続される、
請求項１に記載の方法。
【請求項９】
１つの前記データサイトは、前記ミラーリングされるデータサイト間のデータ複製を調停するためのアービトレータノードを含む、
請求項１に記載の方法。
【請求項１０】
メタデータ操作プロセッサ（ＭＯＰ）をホスティングするノードの障害に際し、そのサイトの他のノードが前記アービトレータノードとして指定される、
請求項９に記載の方法。
【請求項１１】
前記それぞれのミラーリングされるデータサイトは、前記ミラーリングされるデータサイト間のゲートウェイを確立するように構成されるそれぞれのゲートウェイノードを含む、
請求項１０に記載の方法。
【請求項１２】
前記ゲートウェイノードの１つの障害に際し、代替ゲートウェイノードが指定され、前記代替ゲートウェイノードは、前記ミラーリングされるデータサイト間に代替ゲートウェイを確立するように予めプロビジョニングされた経路を使用する、
請求項１１に記載の方法。
【請求項１３】
前記ミラーリングされるデータサイトにおいて、前記データオブジェクトの要求を受信するステップ；
前記データオブジェクトに関連付けられるプロキシデータオブジェクト参照に基づいて、前記データオブジェクトがこのデータサイトによって受信されていないことを決定するステップ；及び
前記決定に基づいて、前記プロキシデータオブジェクト参照によって参照される前記ミラーリングされるデータサイトに前記データオブジェクトを供給するように要求するステップ；をさらに含む、
請求項１に記載の方法。
【請求項１４】
ミラーリングされるデータサイト間の複製のためのシステムであって：
前記システムは、プロセッサ及びデータベースを有し、
前記プロセッサは：
１又は複数のデータノードを有する前記ミラーリングされるデータサイトにおいてデータオブジェクトを受信するように；
前記データオブジェクトを前記１又は複数のデータノードに内部で複製するように；
前記データオブジェクトに関連付けられるデータオブジェクト参照を生成するように；
前記データオブジェクトに関連付けられる前記データオブジェクト参照を他の前記ミラーリングされるデータサイトに送信するように；及び
前記他のミラーリングされるデータサイトへの送信のために前記データオブジェクトをキューに入れるように；構成され、
前記参照は、前記他のミラーリングされるデータサイトへの送信のためにキューに入れられている前記データオブジェクトを参照し、前記ミラーリングされるデータサイト及び前記他のミラーリングされるデータサイトは、１又は複数の予めプロビジョニングされる相互接続を有し、前記他のミラーリングされるデータサイトへの前記データオブジェクトの前記送信に際し、前記データオブジェクトは、前記他のミラーリングされるデータサイトに付随する前記１又は複数のデータノードに複製されるとともに、前記データオブジェクト参照は破棄され、
前記データベースは、又は複数の前記データオブジェクトに関連付けられる１又は複数の前記データオブジェクト参照を記憶するように構成される、
システム。
【請求項１５】
前記データオブジェクト参照は、前記データオブジェクトに関連付けられる内容に暗号学的ハッシュ関数を実行することによって生成される、
請求項１４に記載のシステム。
【請求項１６】
前記データオブジェクト参照は、前記データオブジェクトに関連付けられる前記内容に基づいて前記データオブジェクトを見つけることを可能にする、
請求項１５に記載のシステム。
【請求項１７】
前記ミラーリングされるデータサイト及び前記他のミラーリングされるデータサイトは、同じデータロジックを使用するサイト間層動作及びサイト内層動作をサポートし、前記１又は複数のデータノードへの前記データオブジェクトの前記複製は、前記サイト内層動作を選択することによって実行され、前記他のミラーリングされるデータサイトにおける前記１又は複数のデータノードへの前記データオブジェクトの前記複製は、前記サイト間層動作を選択することによって実行される、
請求項１４に記載のシステム。
【請求項１８】
前記プロセッサはさらに、前記ミラーリングされるデータサイト及び前記他のミラーリングされるデータサイトを同期するように構成され、前記同期は：
前記ミラーリングされるデータサイトに関連付けられる前記データオブジェクト及び１又は複数の前記データオブジェクト参照を、前記他のミラーリングされるデータサイトに関連付けられる前記データオブジェクト及び１又は複数の前記データオブジェクト参照と比較すること；並びに
前記１又は複数のデータオブジェクト参照に対応する前記１又は複数のデータオブジェクトの配信を要求すること；を含む、
請求項１４に記載のシステム。
【請求項１９】
前記ミラーリングされるデータサイトの１つは、全ての前記ミラーリングされるデータサイト間のデータ複製を調停するためのアービトレータノードを含む、
請求項１４に記載のシステム。
【請求項２０】
そこに記憶される命令を有する非一時的プロセッサ可読媒体であって、前記命令は、１又は複数のプロセッサによって実行されるとき、前記１又は複数のプロセッサに：
１又は複数のデータノードを含むミラーリングされるデータサイトにおいて、データオブジェクトを受信させ；
前記データオブジェクトを前記１又は複数のデータノードに内部で複製させ；
前記データオブジェクトに関連付けられるデータオブジェクト参照を生成させ；
前記データオブジェクトに関連付けられる前記データオブジェクト参照を他の前記ミラーリングされるデータサイトに送信させ；及び
前記他のミラーリングされるデータサイトへの送信のために前記データオブジェクトをキューに入れさせ；
前記参照は、前記他のミラーリングされるデータサイトへの送信のためにキューに入れられている前記データオブジェクトを参照し、前記ミラーリングされるデータサイト及び前記他のミラーリングされるデータサイトは、１又は複数の予めプロビジョニングされる相互接続を有し、前記他のミラーリングされるデータサイトへの前記データオブジェクトの前記送信に際し、前記データオブジェクトは、前記他のミラーリングされるデータサイトに付随する前記１又は複数のデータノードに複製されるとともに、前記データオブジェクト参照は破棄される、
媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概して、データ複製のためのシステム及び方法、より具体的には、任意のサイトから利用可能ファイルシステムの単一の一貫性のあるビューを提供するためのミラーリングされるデータサイトを含む複製インフラストラクチャに関する。
【背景技術】
【０００２】
この部分に記載されたアプローチは、追求されることができるが、必ずしも以前に考えられていた又は追求されていたアプローチではない。したがって、特に明記しない限り、この部分に記載されたアプローチのいずれかが、単にこの部分にそれらが組み入れられることによってだけで従来技術と見なすことが推定されるべきではない。
【０００３】
コンピューティングシステムにおいて、リモート複製は、データ保護、フォールトトレランスを向上させるために、及び障害復旧を提供するために、多数のサイト間のデータのコピーをすることを含むデータ保護の形態である。本出願で使用されるとき、用語「サイト」は、物理的に異なる地理的な位置を示し得る、又は、障害対応を必要とする別個のグループを示し得る。例えば、地震からの保護は、同じ断層線によって影響を受けないサイトにレプリカを置くことを意味し得る。保護が電力関連の障害に向けられる場合、２つのサイトは、同じ建物の中又は同じラックの中にさえあり得るが、それぞれのサイトは異なる電源を有する。
【０００４】
単一のサイトに対するデータ保護に使用されるプロシージャ及び異なるサイト間の複製に使用されるプロシージャは実質的に異なる場合がある。したがって、従来のシステムでは、２つの完全に異なる方法論が使用され得る。
【０００５】
さらに、サイト間のデータオブジェクトは、様々なネットワーク及びノード障害に悩まされ得る。このような障害は、検出され且つ復旧される必要がある。
【発明の概要】
【０００６】
この概要は、詳細な説明に以下にさらに記載される単純な形態で、概念の選択を導入するために提供される。この概要は、請求項に記載された主題の重要な特徴又は本質的な特徴を特定することをいとするものではなく、請求項に記載された主題の範囲を決定する補助として使用されることを意図するものでもない。
【０００７】
本開示の様々な実施形態によれば、ミラーリングサイト間の複製の方法が提供される。幾つかの実施形態では、方法は、多数のサイト間の内容参照可能オブジェクトストア（ｃｏｎｔｅｎｔ  ａｄｄｒｅｓｓａｂｌｅ  ｏｂｊｅｃｔ  ｓｔｏｒｅ）を複製することを含み、各オブジェクトは、オブジェクトデータから得られるシグネチャによって参照可能である。幾つかの実施形態では、方法は、内容参照可能オブジェクトストアに加えて構成されたファイルシステムを複製することを含み得る。
【０００８】
ミラーリングは、任意のサイトにおけるデータに対する変更が全ての他のサイトにコピーされるように双方向性であり得るとともに、全てのサイトは、ファイルシステムが利用可能なプロシージャにしたがってデータに同時にアクセスし得る。
【０００９】
加えて、方法は、複製されたサイトのセットにわたって、読み込み及び書き込み順序付けを保証することを含み得るとともに、ロックすることは、ファイルシステムがそのクライアントに伝えることを要求されることを保証する。幾つかの実施形態では、これらの順序付けルールは、規格及びプロトコルによって規定され得る。このような規格及びプロトコルの例は、ＰＯＳＩＸ、ＮＦＳ、ＣＩＦＳ、ＳＭＢ、ＲＥＳＴｆｕｌ、ＷｅｂＤａｖ等を含む。
【００１０】
各ミラーリングされるサイトは、１又は複数のノードを含み得、その１つはゲートウェイとして選ばれ得る。幾つかの実施形態では、ゲートウェイノードは、アービトレータとして１つのサイトを選ぶように協力し得る。代替的には、ゲートウェイは、この責任を協力して分担し得る。アービトレータは、全てのファイルシステム順序付けルールが忠実に守られることを保証する。
【００１１】
サイトは、ミラーに加えられ得る又はそれから除去され得る。加えられたサイトは、既にデータオブジェクトを含み得る。幾つかの実施形態では、これらのデータオブジェクトは、「初期同期」方法を使用して複製され得る。初期同期方法はまた、サイトが（例えば、ネットワーク障害に起因する）切断後に再接続されるときにはいつでも使用され得る。
【００１２】
本出願に記載された方法を使用することで、ミラーリングされるサイトのデータオブジェクトは、ミラーサイトが切断されている間に、他のサイトによって、アクセスされ、作られ、修正され、又は変更され得る。このために、データオブジェクトは、１つのサイトで受信され得る。次に、データオブジェクトは、そのサイトの１又は複数のノードに記憶され得る。さらに、データオブジェクトは、ゲートウェイに転送され得る。幾つかのデータオブジェクトに関して、ゲートウェイは、データオブジェクト及びメタデータをミラーリングされるサイトに同期して複製し得る。他のデータオブジェクトに関して、ゲートウェイは、データオブジェクトシグネチャ及びオブジェクトメタデータをミラーリングされるサイトに同期して送信し得る。データオブジェクトは、非同期伝送のためにキューに入れられ得る。幾つかの実施形態では、メタデータはサイト識別子を含み得る。
【００１３】
ミラーリングされるサイトのクライアントがまだ複製されていないデータオブジェクトにアクセスする必要があるとき、このミラーリングされるサイトは、以前に送信されたオブジェクトメタデータによって識別されるサイトにデータオブジェクトに対する要求を送信する。要求されたサイトはその後、要求しているサイトにオブジェクトデータを送信し得るとともに、それを送信保留中のオブジェクトのキューから取り除き得る。
【００１４】
幾つかの実施形態では、同期して複製されることになるオブジェクトのキューは、データオブジェクトの最大カウントに制限され得る。したがって、キューがその最大に達したとき、サイトは新しいデータオブジェクトを受け入れることを停止し得る。
【００１５】
前述の及び関連する目的の達成のために、本開示の１又は複数の実施形態は、以下に十分に記載されるとともに特に請求項で指摘される特徴を有し得る。以下の説明及び図面は、本開示の１又は複数の実施形態の特定の例示の特徴を詳細に述べる。しかし、これらの特徴は、本開示の様々な実施形態の原理が用いられ得る様々な方法の幾つかを示し、この記載は、本開示のこのような実施形態及びそれらの均等物を含むことが意図される。
【図面の簡単な説明】
【００１６】
実施形態は、例として示され、添付の図面への限定ではなく、同様の参照符号は同様の要素を示す。
【図１】コンピュータネットワークインフラストラクチャの単純化された構造を示す。
【図２】メタデータ操作プロセッサ（ＭＯＰ）及びゲートウェイサービスの移行のための単純化されたシナリオを示す。
【図３】メインゲートウェイの移行のためのシナリオを示す。
【図４】他のサイトにおけるゲートウェイサービスの接続状態の図表示を示す。
【図５】異なる層を使用するデータ複製を示す。
【図６】サイト間のデータ複製の図表示を示す。
【図７Ａ】サイト障害を示す。
【図７Ｂ】サイト障害に際してとられるアクションを示す。
【図８】データの複製のための方法を示すフローチャートである。
【図９】データの複製のためのサンプルシステムを示す。
【図１０】コンピュータシステムの例示的な電子的な形態におけるコンピューティングデバイスの図式表現を示す。
【発明を実施するための形態】
【００１７】
以下の詳細な説明は、添付の図面への参照を含み、この添付の図面は詳細な説明の一部を形成する。図面は、例示的な実施形態に従う説明を示す。「例」とも称される、これらの例示的な実施形態は、当業者が本主題を実施することを可能にするために十分詳細に記載されている。実施形態は組み合わされることができ、他の実施形態が利用されることができ、又は構造的、論理的及び電気的な変更が、請求項に記載されたものの範囲から逸脱することなしに行われることができる。したがって、以下の詳細な説明は、限定する意味で受け止められるべきではなく、範囲は、添付の請求項及びそれらの均等物によって定められる。
【００１８】
ここに開示されるアプローチ及び原理は、コンピュータネットワークインフラストラクチャの中のデータオブジェクトの複製のためのコンピュータに実装される方法及びシステムに関する。コンピュータネットワークインフラストラクチャは、それぞれが様々なデータオブジェクトを記憶するためのストレージリソースを有するとともに他のノードからそれらへのアクセスを可能にする複数のノードを含む。さらに、１つのノードのストレージリソースは、ＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（リードオンリメモリ）、ハードディスクドライブ（ＨＤＤ）、又はソリッドステートドライブ（ＳＳＤ）のような、１又は複数のハードドライブ又は他のメモリデバイスを含み得る。各データオブジェクト（例えば、ファイル、ファイルの集まり、又はオペレーティングシステム若しくはアプリケーションによって動作されることができる任意の他のエンティティ）は、インフラストラクチャのノードのそれぞれに複製され得る。
【００１９】
デバイスの間の論理接続は、様々なトポロジを形成し得る。トポロジは、物理的なネットワークのレイアウト、ネットワークのデバイスの数、及び他のファクタに依存し得る。１つの伝統的なトポロジは、データノードが円で接続されるとともに各データノードが隣接するデータノードに接続されるサイトを含む。他の伝統的なトポロジは、全てのデータノードがサイトの他の全てのデータノードに接続される「メッシュ」トポロジを含む。このようなサイトは、「リング」と称されることができる。リングは、ノードの各ペアの間の２地点間通信チャネルを使用して、メッシュに接続され得る。データノードは、２以上のリングが互いに接続され且つノードの全てのペアが２地点間通信チャネルを使用して接続されるとき、メッシュで接続されていると言われる。したがって、リングが３つのノードＡ、Ｂ、及びＣを含む場合、３つのネットワーク接続：Ａ−Ｂ、Ｂ−Ｃ、及びＣ−Ａがある。１つのメンバリングが２つのノード、Ａ、Ｂを含み、他が３つのノードＤ、Ｅ、Ｆを含むメッシュがある場合、次の１０のネットワーク接続がある：Ａ−Ｂ、Ｄ−Ｅ、Ｅ−Ｆ、Ｆ−Ｄ、Ａ−Ｄ、Ａ−Ｅ、Ａ−Ｆ、Ｂ−Ｄ、Ｂ−Ｅ、及びＢ−Ｆ。
【００２０】
より複雑な設計では、記載されたトポロジの両方が使用され得る。例えば、データサイトは、メッシュ接続を使用して互いに通信し得る。この接続では、データサイトの全てのノードは、他のデータサイトの全てのノードにデータを複製することができる。したがって、メッシュトポロジは、データサイト間に存在することができる。このトポロジは図１によって示されている。
【００２１】
図１は、幾つかの例示の実施形態による、コンピュータネットワークインフラストラクチャ１００の単純化された構造である。コンピュータネットワークインフラストラクチャ１００は、少なくとも２つのサイト、サイトＡ及びＢを含み、その両方がアクティブである。各サイトは、複数のノードを含み得る。各ノードは、ネットワークアドレスを維持するとともにデータオブジェクトを記憶し且つ共有することができる（さらなるコンポーネントデータ構成要素を含み得る）ネットワークデバイスである。例では、ノードは、複数のハードドライブ、コンピュータ、サーバ、ラップトップ、タブレットコンピュータ、シンクライアント、又はデータを複製するのに適した任意の他の電子コンピューティングデバイスを有するデバイスを参照し得る。さらに、各ノードは、ＲＡＭ、ＲＯＭ、フラッシュメモリ等のような複数のストレージリソースを含み得る。
【００２２】
図１に示されるように、サイトＡは、４つのノード：１Ａ、２Ａ、３Ａ、及び４Ａを含み得る。サイトＢも、４つのノード：１Ｂ、２Ｂ、３Ｂ、及び４Ｂを含み得る。サイトＡとサイトＢとの間の論理接続はメッシュトポロジを形成し得る。したがって、サイトＡの各ノードは、データをサイトＢの各ノードに複製し得る。これは、ノード２Ａの例によって示されている。ノード２Ａに関連付けられる通信が、サイトＢの各ノードにつながる矢印によって示されている。このような通信がノード２Ａに対してのみ示されているが、サイトＡの全てのノードがサイトＢの全てのノードとの同様の通信を有し得る。
【００２３】
サイトＡは配置空間（ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｓｐａｃｅ）１４０に関連付けられ得る一方、サイトＢは配置空間１６０に関連付けられ得る。ミラーのサイトＡ及びＢの配置空間１４０及び１６０は、データサイト間の複製のためのシステム１５０によって、整合され得る。システム１５０は、ファイルシステムの１つの共通のビューを提供するためにメッシュに接続されたサイトＡ及びＢの構成を整合させ得る。
【００２４】
ミラーリングサイト間のデータの複製は、同期及び非同期データ経路の両方を用い得る。同期データ経路は、メタデータ通信のために用いられ得る一方、非同期経路は、データ自体を送信するために使用され得る。このアプローチは図１に示されている。
【００２５】
複数サイトインフラストラクチャでは、１つのサイトは、複製を制御し且つメタデータ操作プロセッサ（Ｍｅｔａｄａｔａ  Ｏｐｅｒａｔｉｏｎａｌ  Ｐｒｏｃｅｓｓｏｒ）（ＭＯＰ）を動作させ得る。このサイトは、マスタサイトと称され得るとともに、メタデータを制御し且つコンフリクトを解決するために使用され得る。他のサイトは、それぞれＭＯＰプロキシを動作させ得る。これらのサイトは、従属サイトと称され得る。
【００２６】
図２は、幾つかの例示の実施形態による、コンピュータネットワークインフラストラクチャ２００の単純化された構造を示す。コンピュータネットワークインフラストラクチャ１００は、それぞれが４つのノードを有するとともにメッシュで接続されている、サイトＡ及びＢを含み得る。サイトＡでは、ノード２ＡはＭＯＰ２２０を含み得る。したがって、ノード２Ａは、アービトレータノードと称され得るとともに、ミラーリングされるデータサイトＡとミラーリングされるデータサイトＢとの間のデータ複製を調停し得る。ＭＯＰ２２０は、ファイルシステムの一貫性のあるビューを提示するために全てのメタデータ操作を同期させ得る。多数のノードからのメタデータ操作は、ＭＯＰ２２０を通じて送り込まれ得る。ＭＯＰ２２０は、サイト内の単一のノード上で動き得るが、その上でＭＯＰ２２０が動くノードは、データモデル及びサイトの状態に応じて変わり得る。幾つかの実施形態では、ＭＯＰの機能は、サイトのノードにわたって、又はサイト間で分散され得る。
【００２７】
ＭＯＰ２２０をホスティングしないサイトＢがＭＯＰプロキシ２３０を実行し得る。ＭＯＰプロキシ２３０は、ＭＯＰ２２０がサイトＡから要求を受信するのと同じように、サイトＢのノードから要求を受信し得る。しかし、プロキシとして作動することによって、ＭＯＰプロキシ２３０は、要求をサイトＡのＭＡＯＰ２２０に中継し得るとともに、要求を起こしたノードに応答を中継して返し得る。ＭＯＰプロキシ２３０は、転送エージェントとして作動し得るとともに、サイトＢのノードとサイトＡのＭＯＰ２２０を実行しているノードとの間でリモートプロシジャコール（ＲＰＣ）を中継し得る。
【００２８】
サイトＡ及びサイトＢは、各サイトのノード間の双方向接続を使用して接続され得る。この接続は、メインゲートウェイ２１０と呼ばれ得る。メインゲートウェイ２１０は、接続及びイベントのための分散メッセージングプロトコルを活用し得る。メインゲートウェイ２１０は、ローカルエリアネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）上で動作し得る。
【００２９】
次に図３を参照すると、メインゲートウェイ２１０及びＭＯＰサービスは併置され得る。ＭＯＰ２２０は、ゲートウェイサービスと共にサイトＡのノード２Ａに位置し得る一方、ＭＯＰプロキシ２３０は、ゲートウェイサービスと共にノード２Ｂに位置する。サイトＡの任意のノードがＭＯＰ２２０を実行するように選択され得るので、そして、サイトＢの任意のノードがＭＯＰプロキシ２３０を実行するように選択され得るので、全てのノードは、それらが他のサイトの各ノードに接続するように、事前にプロビジョニングされ得る。
【００３０】
これは、ＭＯＰ２２０（又はＭＯＰプロキシ２３０）をホスティングするノード２Ａが、サイトの他のノードにフェイルオーバするノードフェイルオーバシナリオに適応し得る。ゲートウェイサービスは、ノードフェイルオーバにおいてＭＯＰ２２０に従い得る。これは、ミラーリングされるサイト間の代替ゲートウェイを確立するために予めプロビジョニングされた経路を使用して実行され得る。接続の状態は、可能なＭＯＰ及びゲートウェイフェイルオーバ位置を制限するために使用され得る。
【００３１】
ノード２Ｂに関連付けられるＭＯＰプロキシ２３０は、サイトＢの他のノード（例えば、ノード４Ｂ）に移行され得る。これは、メインゲートウェイ２１０の障害の結果であり得る。メインゲートウェイ２１０及びＭＯＰサービスは併置されるので、メインゲートウェイ２１０もまたノード４Ｂに移行され得る。
【００３２】
接続状態
図４は、他のサイトからの接続を待つサイトの接続状態４００の図表示を示す。他のサイトのノードは、各サイトの配置空間に発行されるミラー配置にしたがって接続を開始し得る。
【００３３】
したがって、サイトの接続状態は、接続待ち４１０を含むことができ、この接続待ちは、他のサイトのノードによって開始され得る。接続が確立されるとき、サイト間の同期４２０が開始し得る。同期は、同期エラーが発生する４３０又は同期が終了する４３０のいずれかまで続き得る。状態４３０又は４４０のいずれかが生じるとき、サイト間の接続はもはや存在せず、サイトは再び状態４１０に行き、接続４１０を回復させようとし、同期が終了４４０まで同期４２０を続け得る。
【００３４】
初期同期
サイトが、接続又は再接続するとき、ゲートウェイサービスは、初期同期と呼ばれる段階に入る。各サイトのゲートウェイサービスは、それらのそれぞれのサイトに存在することが知られているオブジェクトのオブジェクト識別子を交換し得る。サイトに知られていないオブジェクトに対応するオブジェクト識別子は、データ受信動作を使用してゲートウェイサービスによってプルされ、次にデータ転送動作を使用してサイトに書き込まれ得る。これらの動作は、ゲートウェイサービスが、ネットワークリンクのより効率的な使用を伴ってオブジェクトの初期同期を実行することを可能にし得る。
【００３５】
幾つかの実施形態では、初期同期が長期間の動作であるので、初期同期に関連する状態キーが配置空間において発行され得る。このような方法で、初期同期の進捗がモニタされ得る。
【００３６】
ミラーが接続されるとき、１つのサイトで行われたファイルシステムアップデートは、他のサイトに中継され得る。オブジェクトレベルで、これは、１つのサイトで局所的に行われたアップデートを他のサイトに繰り返すことによって達成され得る。
【００３７】
層（Ｔｉｅｒ）アーキテクチャ
データオブジェクトは、サイト内のノード間で及びサイト間で複製され得る。サイト内及びサイト間動作が、異なるレベルで又は図５に示されるような層で実行され得る。
【００３８】
アップデートが、層０  ５１０（又はローカル層）を介してサイトＡで局所的に持続され得る。対応して、ノード１Ａと２Ａとの間、１Ａと３Ａとの間、３Ａと４Ａとの間、及び２Ａと４Ａとの間の動作のような、サイト内動作が、層０  ５１０で実行され得る。
【００３９】
アップデートは次に層１  ５２０（又はリモート層）を介してサイトＢにプッシュされ得る。サイトＢ内の動作も、すなわち、１Ｂと２Ｂ、１Ｂと３Ｂ、３Ｂと４Ｂ、及び２Ｂと４Ｂも、次に層０  ５１０で実行され得る。
【００４０】
サイト内及びサイト間動作を異なる層と関連付けることによって、動作のルーピングが回避され得る。例えば、データオブジェクト書き込みは、発生元サイトにおけるリストの層の全てに複製され得る。これらの層の１つは、他のサイトへのゲートウェイを含むことができ、このゲートウェイはデータオブジェクトがそのサイトに複製されることをもたらす。そのサイト内で、データオブジェクトを記憶するための層の新しいリストが発生し得るとともに、発生元層は、こちら側のゲートウェイがデータオブジェクトをまた発生側へルーピングさせることを避けるために、リストから取り除かれ得る。
【００４１】
幾つかの実施形態によれば、全体的なアップデート動作がうまく完了する前に、全ての層でうまく完了しなければならない。
【００４２】
ミラー接続は、高い待ち時間を伴う遅いＷＡＮのようなパフォーマンスを有し得るので、サイト間のアップデートは、転送されるデータオブジェクトについて他のサイトに伝えるデータ参照を作ることから始まり得る。例えば、ＲＰＣが、他のサイトのゲートウェイサービスによって処理されることができ、このポイントにおいて、エントリが、ＤＢ＿ＭＢと呼ばれる、プロキシオブジェクトデータベースの中に作られ得る。このようなエントリは、このエントリに対応するオブジェクトが結局は到着するという他のサイトによる約束を示し得る。オブジェクト転送が次に、他のサイトへの最終的な配信に関する要求を起動するノードでキューに入れられ得る。
【００４３】
幾つかの例示の実施形態では、設定可能なキュー長さ最大値が強制され得る。限度に達するとき、アラームがトリガされ得るとともに、元の動作は、キューが追加されることができるまで、完了しない。
【００４４】
他の例示の実施形態では、キュー限度に達するとき、新しい書き込みが受け付けられないように、バックプレッシャ（ｂａｃｋｐｒｅｓｓｕｒｅ）がクライアントに加えられ得る。これ及び同様の仕組みを介して、ミラー間の差が最小化され得るとともにやがて限度内にとどめられ得る。
【００４５】
読み込みをサポートするために、オブジェクト受信は、オブジェクトが任意の前の層の中に見られなくなった後にのみ、実行され得る。一貫性のあるファイルシステムビューをサポートするために、要求されたオブジェクトがローカルプロキシオブジェクトデータベースへのエントリに対応する場合、層０読み込み動作が、各サイトにおけるゲートウェイサービスノードを介して他のサイトで実行され得る。その間、対応するデータオブジェクトは、書き込み動作が最終的にデキューされ（ｄｅ−ｑｕｅｕｅｄ）且つうまく処理されるまで、そのサイトで持続され得ない。成功して完了すると、ＤＢ＿ＭＢの対応するエントリが除去される。ミラーが損なわれているとき書き込み動作が失敗することがあり得る。これは、以下により詳細に論じられる。
【００４６】
この書き込みキューの長さは、初期同期のための読み込みキューの長さと組み合わされるとき、２つのサイトの同期に関する情報を提供し得る。これらの長さは、配置空間のメッシュ状態キーに周期的に記録され得る。
【００４７】
非同期データオブジェクト書き込み動作
データオブジェクト６２０のための、サイト、例えば図６に示されるようなサイトＡ内の書き込み動作が層０  ５１０でうまく完了するとき、動作は、サイト間レベルで層１  ５２０にレベルを上げられ得る。このために、アップデート動作のデータオブジェクト６２０に関連付けられるプロキシ６４０は、他のサイトに同期して送られ得る。プロキシ６４０は、データオブジェクトを現在含むサイトを識別するサイト識別子（ＩＤ）を含むことができ、このデータオブジェクトにプロキシ６４０は関連付けられる。
【００４８】
プロキシ６４０を受信すると、サイトＢのプロキシ参照データベースがアップデートされ得る。したがって、プロキシ参照が、作られることができ、サイトＢに転送されるデータオブジェクト６２０を伝える。
【００４９】
データ配信キュー６１０が許可するとき、データオブジェクト６２０は圧縮されてサイトＢに送られ得る。データオブジェクト６２０は、非同期転送され得る。サイトＢでデータオブジェクト６２０を受信した後、データオブジェクト６２０は、解凍されてサイトＢのノードに書き込まれ得る。
【００５０】
全ての層におけるアップデート動作がうまく完了した後、プロキシ参照データベース６３０におけるプロキシオブジェクト情報６４０は除去され得る。
【００５１】
データオブジェクト読み込み動作
データオブジェクトのための読み込み動作が開始されるとき、データオブジェクトは、層０  ５１０において検索され得る。データオブジェクトが層０  ５１０において発見される場合、読み込み動作はうまく完了する。しかし、データオブジェクトがサイトにまだ書き込まれていない場合、データオブジェクトは発見されないので、読み込み動作が層１に対して再試行され得る。この処理は、オブジェクトが見つかる又は全ての層が調べ尽くされるかのいずれかまで繰り返され得る。後者の場合、オブジェクトは発見されることができないのでエラーが返送される。
【００５２】
図６を参照すると、読み込み動作がデータオブジェクト２に関連付けられる場合、データオブジェクト２に関連するプロキシ参照が、プロキシ参照データベース６３０において発見され得る。その後、要求が層１で発行され、データオブジェクト２は、前方にプルされ（ｐｕｌｌｅｄ  ｆｏｒｗａｒｄ）て、サイトＢに書き込まれ得る。
【００５３】
幾つかの実施形態では、データオブジェクトは、オブジェクト識別子に関連付けられ得る。オブジェクト識別子は、データオブジェクトの内容に基づいてデータオブジェクトを一意に識別し得る。したがって、データオブジェクトは、サイト内でデータレプリカを動的に再配置することを含むサイトにローカルな複製ポリシーにもかかわらず、任意の場所、オブジェクト識別子を使用する任意の層で見つけ出され得る
サイト障害シナリオ
幾つかの場合では、サイトの１つが様々な理由（例えば、停電）のために障害を経験し得る。リモートサイトが障害を起こす場合、新しいリモートサイトがプロビジョニングされ得るとともに、接続を確立した後、初期同期が開始され得る。ＭＯＰをホスティングするサイトが障害を起こす場合、リモート複製のためのシステムは、ＭＯＰをホスティングするように新しいサイトを指定し得る。
【００５４】
図７Ａは、幾つかの例示的な実施形態による、ＭＯＰをホスティングするサイトの障害を示す。サイトＡは、ＭＯＰをホスティングするサイトであり、サイトＢはＭＯＰをホスティングするサイトである。サイトは、データ配信の処理中である。データ配信キュー７１０はデータオブジェクトを含み、プロキシ参照データベース７３０は幾つかのプロキシ７４０を有する。サイトＡが障害を起こす場合、データサイト間の複製のためのシステムは、図７Ｂに示されるように、ホスティングするサイトになるようにサイトＢのレベルを上げ得る。
【００５５】
サイトＡが障害を起こす場合、プロキシ参照データベース７３０はプロキシを有するので、データサイト間の複製のためのシステムは、ロールバックを実行し得る。システムは、データベースをスキャンし得るとともにサイトＢに囲まれたデータをサポートするスナップショットにロールバックし得る。
【００５６】
他の動作は、データ配信キュー７１０を空にすること、プロキシ参照データベース７３０からプロキシを削除すること等を含み得る。
【００５７】
サイトＡが障害を起こし続いて復旧する（例えば、一時的な停電から復旧する）場合、それはＭＯＰを実行しているサイトにレベルを下げられ得る。サイト間の接続が確立されるとき、初期同期プロシージャが開始され得る。したがって、サイトＡに存在しているデータへのアクセスは失われない。
【００５８】
図８は、コンピュータネットワークインフラストラクチャ１００内のミラーリングされるデータサイト間のデータの複製の方法８００を示すプロセスフロー図である。方法８００は、ハードウェア（例えば、専用ロジック、プログラマブルロジック、及びマイクロコード）、ソフトウェア（例えば、汎用コンピュータシステム又は専用マシンで実行されるソフトウェア等）、又は両方の組み合わせを有し得るロジックによって実行され得る。１つの例示的な実施形態では、処理ロジックは、データサイト９００間の複製のためのシステムに存在し、システム９００の様々な要素が方法８００を実行することができる。
【００５９】
前述のモジュールは仮想であり得るとともに、モジュールによって実行されると言われている命令は、実際、システム９００によって取得され且つ実行され得ることが、当業者によって理解されるであろう。様々な要素が個々に記載された様々な動作の幾つか又は全てを実行するように構成され得るが、より少ない又はより多い要素が、提供され得るとともに様々な実施形態の範囲に依然として含まれ得る。
【００６０】
図８に示されるように、方法８００は、ミラーリングされるデータサイトでデータオブジェクトを受信することを伴う動作８１０で開始し得る。データサイトは、１又は複数のデータノードを含み得る。これらのデータノードの１つは、ＭＯＰを実行するノード、すなわち、サイト間のデータ複製を調停するためのアービトレータノード、として指定され得る。受信されたデータオブジェクトは、動作８２０で１又は複数のデータノードに内部で複製され得る。データオブジェクトが全てのデータノードに複製された後、データオブジェクトに関連付けられるデータオブジェクト参照が動作８３０で生成され得る。
【００６１】
幾つかの実施形態では、オブジェクト識別子が、データオブジェクトに関連付けられる内容に暗号学的ハッシュ関数を実行することによって生成され得る。したがって、データオブジェクトは、データオブジェクトに関連付けられる内容に基づいて発見され得る。
【００６２】
動作８４０において、データオブジェクト参照は、１又は複数のノードを含む他のミラーリングされるデータサイトの１又は複数に送信され得る。これらのノードのそれぞれは、完全なメッシュを形成するように他のミラーリングされるデータサイトの各ノードと相互接続され得る。幾つかの例示の実施形態では、データオブジェクト参照は、他のミラーリングされるデータサイトに関連付けられるデータオブジェクト参照データベースに送信され得る。その後、データオブジェクトは、動作８５０において他のミラーリングされるデータサイトのへの送信のためにキューに入れられ得る。
【００６３】
他のミラーリングされるデータサイトへのデータオブジェクトの送信に際し、データオブジェクトは、データサイトの１又は複数のノードに複製され得る。ミラーリングされるデータサイトへのデータオブジェクトの複製の完了後、データオブジェクト参照は破棄され得る。
【００６４】
幾つかの実施形態では、ミラーリングされるデータサイト内のノードへのデータオブジェクトの複製は、サイト内動作層で実行され得る一方、ミラーリングされるデータサイト間でデータオブジェクト参照及びデータオブジェクトを送信することは、サイト間動作層で実行され得る。両方の動作層における動作は、同じデータロジックを使用して実行され得る。
【００６５】
さらに、方法８００は任意選択で、ミラーリングされるデータサイト間でデータを同期することを含み得る。同期することは、ミラーリングされるデータサイトに関連付けられるデータオブジェクト参照及びデータオブジェクトを、内部で、他のミラーリングされるデータサイトの１又は複数と関連付けられるデータオブジェクト参照及びデータオブジェクトと比較することを含み得る。オブジェクト参照に対応するデータオブジェクトの配信は要求され得る。
【００６６】
幾つかの実施形態では、方法８００は、他のミラーリングされるデータサイトにおいてデータオブジェクトの要求を受信することを含み得る。そのサイトが要求されたデータオブジェクトを有していない場合、それは、他のミラーリングされるデータサイトに関連付けられるデータオブジェクト参照に基づいて決定され得る。この場合、ミラーリングされるデータサイトは、より高い優先度でデータオブジェクトを供給するように要求され得る。
【００６７】
図９は、幾つかの例示の実施形態による、データサイト間の複製のためのシステム９００を示す。システム９００は、プロセッサ９１０及びデータベース９２０を含み得る。プロセッサ９１０は、ミラーリングされるデータサイトにおいてデータオブジェクトを受信するように構成され得る。そのデータサイトは、１又は複数のデータノードを含み得るとともに、受信されるデータオブジェクトは、ローカル層において、１又は複数のデータノードに内部で複製され得る。その後、データオブジェクトに関連付けられるデータオブジェクト参照、例えば、プロキシ参照が、生成されてデータベース９２０に送信され得る。データベース９２０は、データオブジェクト参照を含むことができ、このデータオブジェクト参照は、幾つかの実施形態では、その中にデータが存在するサイトを識別する「プロキシ参照」と称される。
【００６８】
データオブジェクトはその後、他のミラーリングされるデータサイトの１又は複数への送信のためにキューに入れられ得る。他のミラーリングされるデータサイトの１又は複数へのデータオブジェクトの送信に際し、データオブジェクトは、他のミラーリングされるデータサイトの１又は複数のノードに複製され得るとともに、データオブジェクト参照が破棄され得る。
【００６９】
図１０は、コンピュータシステム１０００の例示的な電子的な形態でマシンのためのコンピューティングデバイスの概略表現を示し、このコンピュータシステムの中でマシンにここで論じられた方法のいずれか１つ又は複数を実行させる命令のセットが実行されることができる。様々な例示的な実施形態では、マシンは、スタンドアロンデバイスとして動作する又は他のマシンに接続される（例えば、ネットワーク化される）ことができる。ネットワーク化された配置では、マシンは、サーバ・クライアントネットワーク環境でのサーバ若しくはクライアントマシンの能力の中で、又はピア・ツー・ピア（又は分散）ネットワーク環境の中のピアマシンとして動作することができる。マシンは、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、携帯電話、デジタルカメラ、携帯音楽プレーヤ（例えば、ＭＰＥＧオーディオ層３（ＭＰ３）プレーヤのような携帯ハードドライブオーディオデバイス）、ウェブ機器、ネットワークルータ、スイッチ、ブリッジ、又はそのマシンで受け取られることになる動作を規定する（シーケンシャル又は別の）命令のセットを実行可能である任意のマシンであることができる。さらに、１つのマシンのみが図示されているが、用語「マシン」は、ここで論じられた方法のいずれか１つ又は複数を実行するための命令のセット（又は多数のセット）を個別に又は共同して実行するマシンの任意の集まりを含むようにも受け取られるべきである。
【００７０】
例示のコンピュータシステム１０００は、１つのプロセッサ又は多数のプロセッサ１００２、ハードディスクドライブ１００４、メインメモリ１００６及びスタティックメモリ１００８を含み、これらは互いにバス１０１０を介して通信する。コンピュータシステム１０００はまた、ネットワークインタフェースデバイス１０１２、並びにデータ圧縮及びオブジェクト識別子暗号計算専用コプロセッサを含み得る。ハードディスクドライブ１００４は、コンピュータ可読媒体１０２０を含むことができ、このコンピュータ可読媒体は、ここに論じられた方法又は機能のいずれか１つ若しくは複数を具体化する又は同方法又は機能のいずれか１つ若しくは複数によって用いられる命令１０２２の１又は複数のセットを記憶する。命令１０２２はまた、コンピュータシステム１０００によるそれらの実行の間にメインメモリ１００６の中に及び／又はプロセッサ１００２の中に、完全に又は少なくとも部分的に、存在することができる。メインメモリ１００６及びプロセッサ１００２はまた、例えば、ＨＤＤ又はＳＳＤのような、機械可読媒体を構成することができる。
【００７１】
コンピュータ可読媒体１０２０は例示的な実施形態において単一の媒体であるように示されているが、用語「コンピュータ可読媒体」は、命令の１又は複数のセットを記憶する多数の媒体（例えば、集中又は分散データベース、及び／又は付随するキャッシュ及びサーバ）又は単一の媒体を含むように受け取られるべきである。用語「コンピュータ可読媒体」はまた、マシンによる実行のための命令のセットを記憶し、エンコードし、若しくは担持することができるとともに本出願の方法論の何れか１つ又は複数をマシンに実行させる、又はこのような命令のセットによって利用される、若しくは、前述の命令の組に関連付けられるデータ構造を記憶し、エンコードし、若しくは担持することができる任意の媒体を含むよう受け取られるべきである。用語「コンピュータ可読媒体」は、したがって、限定されるものではないが、ソリッドステートメモリ、光学媒体及び磁気媒体を含むよう受け取られるべきである。このような媒体は、限定されるものではなく、ハード・ディスク、フロッピー（登録商標）ディスク、ＮＡＮＤ又はＮＯＲフラッシュメモリ、ディジタルビデオディスク、ＲＡＭ、ＲＯＭ、ＨＤＤ、ＳＳＤ等を含むことができる。
【００７２】
ここに記載された例示的な実施形態は、コンピュータ上に、ハードウェアに、又はソフトウェア及びハードウェアの組み合わせにインストールされたコンピュータ実行可能な命令（例えば、ソフトウェア）を備える動作環境において実現することが可能である。コンピュータ実行可能命令は、コンピュータプログラミング言語で記述されることができる、又は、ファームウェアロジックで実現されることができる。認知された標準に準拠したプログラミング言語で記述される場合、このような命令は、種々のハードウェアプラットフォーム上で、及び種々のオペレーティングシステムとのインタフェースに対して実行されることができる。これらの限定されるものではないが、本方法を実現するためのコンピュータソフトウェアプログラムは、例えば、Ｃ、Ｃ＋＋、Ｃ＃若しくは他のコンパイラ、アセンブラ、インタープリタ、又は他のコンピュータの言語若しくはプラットフォームなどの適切なプログラミング言語のどれでも記述することが可能である。
【００７３】
このように、ミラーリングされるサイト間のデータの複製のためのコンピュータ実装方法及びシステムが記載されている。実施形態は特定の例示的な実施形態を参照して説明されているが、本出願のより広い趣旨及び範囲から逸脱しない限り、種々の修正及び変更がこれらの例示的な実施形態に対して成されることが可能であることが明らかであろう。
したがって、明細書及び添付図面は、限定的意味合いというよりもむしろ例証的意味合いで受け止められるべきである。
【図１】
2016530608.tif 000003
【図２】
2016530608.tif 000004
【図３】
2016530608.tif 000005
【図４】
2016530608.tif 000006
【図５】
2016530608.tif 000007
【図６】
2016530608.tif 000008
【図７Ａ】
2016530608.tif 000009
【図７Ｂ】
2016530608.tif 000010
【図８】
2016530608.tif 000011
【図９】
2016530608.tif 000012
【図１０】
2016530608.tif 000013
【国際調査報告】
2016530608.tif 000014