(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-01-14
(45)【発行日】2022-01-25
(54)【発明の名称】データセンタにわたってメタデータおよびデータの整合性を維持するための方法、デバイス、およびシステム
(51)【国際特許分類】
G06F 16/182 20190101AFI20220118BHJP
G06F 16/14 20190101ALI20220118BHJP
G06F 16/172 20190101ALI20220118BHJP
【FI】
G06F16/182
G06F16/14
G06F16/172
(21)【出願番号】P 2019545967
(86)(22)【出願日】2018-03-12
(86)【国際出願番号】 US2018022062
(87)【国際公開番号】W WO2018169886
(87)【国際公開日】2018-09-20
【審査請求日】2021-01-21
(32)【優先日】2017-03-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】515154894
【氏名又は名称】ワンディスコ,インク.
(74)【代理人】
【識別番号】100115738
【氏名又は名称】鷲頭 光宏
(74)【代理人】
【識別番号】100121681
【氏名又は名称】緒方 和文
(72)【発明者】
【氏名】サンダー ジェーガネ
(72)【発明者】
【氏名】ドビセク ミハル
(72)【発明者】
【氏名】アーラット イエツール
(72)【発明者】
【氏名】マッケオウン マーク
【審査官】鹿野 博嗣
(56)【参考文献】
【文献】特表2016-530636(JP,A)
【文献】特表2017-500670(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/182
G06F 16/14
G06F 16/172
(57)【特許請求の範囲】
【請求項1】
コンピュータネットワーク上で、少なくとも1つの第1のデータセンタおよび第2のデータセンタに及ぶ、分散ファイルシステムにおけるレプリケートフォルダの整合性を維持するコンピュータ実施方法であって、
前記第1のデータセンタにおいて、前記第1のデータセンタ
と通信するアプリケーションクライアントの代わりに、前記レプリケートフォルダ
内にファイルを作成するための合意済み提案
および当該合意済み提案と関連付けられた
一意のグローバルシーケンス番号(GSN)
を受信することと、
前記第1のデータセンタにおける第1のデータレプリケーションサーバに結合された第1の実行合意キャッシュ
および前記第2のデータセンタにおける第2のデータレプリケーションサーバに結合された第2の実行合意キャッシュにおいて、作成される
べき前記ファイルのメタデータ、および前記合意済み提案と
一意に関連付けられた前記GSNを
同期的に記憶することと、
作成されるべき前記ファイルの前記メタデータが前記第1の実行合意キャッシュおよび前記第2の実行合意キャッシュに記憶された後、前記アプリケーションクライアントの代わりに前記第1のデータセンタにおけるストレージ
において前記ファイルを作成することと、および、
前記アプリケーションクライアントが、前記第1のデータセンタにおける前記ストレージにおいて作成済み前記ファイルにデータを書き込みできるようにすることと、を含む、コンピュータ実施方法。
【請求項2】
前記第1の実行合意キャッシュにおいて前記ファイルのファイル名、パス、またはデータを変更するために前記第1のデータセンタにおいて受信された、任意の合意済み提案に対応する、更新されたメタデータおよび関連付けられた
一意のGSNを記憶すること、
および、前記第2の実行合意キャッシュに
おいて前記更新されたメタデータおよび前記関連付けられた
一意のGSNを同期的に記憶することをさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記第2の実行合意キャッシュにおいて前記ファイルのファイル名、パス、またはデータを変更するために前記第2のデータセンタにおいて受信された、任意の合意済み提案に対応する、更新されたメタデータおよび関連付けられた
一意のGSNを記憶すること、および、前記第1の実行合意キャッシュにおいて前記更新されたメタデータおよび関連付けられた
一意のGSNを同期的に記憶することをさらに含む、
請求項1又は2に記載のコンピュータ実施方法。
【請求項4】
前記ファイルの前記データに対する前記第2のデータセンタからの要求を受信することであって、前記要求は、データが要求される前記ファイルの作成についての合意と関連付けられた少なくとも1つの作成GSNを含む、受信することと、
前記要求の受信に応答して、データが要求される前記ファイルの前記作成GSNより大きい
一意のGSNと関連付けられる前記ファイルの更新されたメタデータに対する前記第1の実行合意キャッシュにおけるエントリをサーチすることと、
前記第1の実行合意キャッシュの前記エントリをサーチした後、サーチすることによって更新されたメタデータが見つからなかった場合、前記要求において受信された前記メタデータに対応するデータを
前記第1のデータセンタにおける前記ストレージから読み出し、サーチすることによって更新されたメタデータが見つけられた場合、更新された前記メタデータに対応するデータを
前記第1のデータセンタにおける前記ストレージから読み出すことと、および
読み出された前記データを、前記ファイルの前記データに対する前記第2のデータセンタからの受信された前記要求に応じて提供することと、をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項5】
前記更新されたメタデータと関連付けられた前記
一意のGSNより大きい
一意のGSNと関連付けられる前記ファイルのメタデータに対する前記第2の実行合意キャッシュにおけるエントリをサーチすることと、
前記第2の実行合意キャッシュの前記エントリをサーチした後、前記第2の実行合意キャッシュをサーチすることによって更新されたメタデータが見つからなかった場合、提供された前記データを前記第2のデータセンタにおけるストレージに書き込むことと、および、
前記第2の実行合意キャッシュをサーチすることによって更新されたメタデータが見つかった場合、前記第2の実行合意キャッシュにおいて見つけられた前記メタデータに対応するデータを読み出し、かつ前記第2のデータセンタにおける前記ストレージに読み出された前記データを書き込むことと、をさらに含む、請求項4に記載のコンピュータ実施方法。
【請求項6】
サーチすることは、名前マッピングサービスアプリケーションプログラムインターフェース(API)を実行することによって実施される、
請求項4又は5に記載のコンピュータ実施方法。
【請求項7】
前記ファイルの前記データが前記第1のデータセンタにおける第1のバージョンブリッジサーバによって受信されるようにするための前記第2のデータセンタからの前記要求をさらに含み、前記第1のバージョンブリッジサーバは前記第1のデータレプリケーションサーバと別個でありかつ異なっている、
請求項4乃至6のいずれか一項に記載のコンピュータ実施方法。
【請求項8】
前記第1のデータセンタにおける不揮発性メモリにおいて前記第1の実行合意キャッシュの少なくとも一部分を周期的に
ジャーナリングして存続させることと、および
前記第2のデータセンタにおける不揮発性メモリにおいて前記第2の実行合意キャッシュの少なくとも一部分を周期的に
ジャーナリングして存続させることと、をさらに含む、請求項1に記載のコンピュータ実施方法。
【請求項9】
第1のデータセンタにおける第1の実行合意キャッシュを提供し、かつ、第2のデータセンタにおける第2の実行合意キャッシュを提供することと、
前記第1のデータセンタおよび前記第2のデータセンタに記憶された
ファイルの作成または変更を行うための提案についての合意を受信することと、
前記第1の実行合意キャッシュおよび前記第2の実行合意キャッシュにおいて受信した前記合意によって参照される前記ファイルのメタデータを記憶することと、
前記受信した合意によって参照される前記ファイルが作成または変更される前に互いに同期する前記第1の実行合意キャッシュおよび前記第2の実行合意キャッシュを維持することと、
前記第1および第2の実行合意キャッシュに記憶された前記受信した合意によって参照される前記ファイルの前記メタデータと前記第1および第2の実行合意キャッシュとが同期された後にのみ
、前記受信した合意によって参照される
前記ファイルの作成または変更を行うことと、および
前記第1のデータセンタまたは前記第2のデータセンタに記憶されたファイルのデータに対する要求が前記第1のデータセンタまたは前記第2のデータセンタにおいて受信
されたとき、更新されたメタデータに対する前記第1の実行合意キャッシュおよび前記第2の実行合意キャッシュのうちの少なくとも1つをサーチし、更新されたメタデータが見つけられた時に
は、前記第1のデータセンタが前記第2のデータセンタから前記要求を受信した場合には前記第2のデータセンタに対して、また前記第2のデータセンタが前記第1のデータセンタから前記要求を受信した場合には前記第1のデータセンタに対して、前記更新されたメタデータに対応するデータを提供することと、を含む、コンピュータ実施方法。
【請求項10】
一意のグローバルシーケンス番号(GSN)をそれぞれの合意と関連付け、かつそれぞれの合意の前記GSNを、前記第1の実行合意キャッシュおよび前記第2の実行合意キャッシュにおける前記メタデータと共に記憶することをさらに含み、
前記更新されたメタデータについてチェックすることは、前記更新されたメタデータと関連付けられた前記GSNを使用して前記ファイルの前記更新されたメタデータに対して前記第1の実行合意キャッシュおよび前記第2の実行合意キャッシュのうちの少なくとも1つにおけるエントリをサーチすることによって実行される、請求項9に記載のコンピュータ実施方法。
【請求項11】
チェックすることは、名前マッピングサービスに前記第1の実行合意キャッシュにおける前記エントリを求める第1のデータレプリケーションサーバによって前記第1のデータセンタにおいて行われ、チェックすることは、名前マッピングサービスに前記第2の実行合意キャッシュにおける前記エントリを求める第2のデータレプリケーションサーバによって前記第2のデータセンタにおいて行われる、
請求項10に記載のコンピュータ実施方法。
【請求項12】
前記第1のデータレプリケーションサーバが、前記名前マッピングサービスに、要求された前記データに対応する更新されたメタデータに対して前記第1の実行合意キャッシュをチェックすることを求めるようにするように構成される第1のバージョンブリッジサーバにおいて、前記第1のデータセンタにおける前記データに対する要求を受信することと、および
前記第2のデータレプリケーションサーバが、前記名前マッピングサービスに、前記要求されたデータに対応する更新されたメタデータに対して前記第2の実行合意キャッシュをチェックすることを求めるようにするように構成される第2のバージョンブリッジサーバにおいて前記第2のデータセンタにおける前記データに対する要求を受信することと、をさらに含む、請求項11に記載のコンピュータ実施方法。
【請求項13】
前記第1のバージョンブリッジサーバが、前記更新されたメタデータが前記第1の実行合意キャッシュにおいて見つけられた時に前記更新されたメタデータに対応するデータを検索しかつ提供することによって前記データに対する要求をサービス提供することと、および
前記第2のバージョンブリッジサーバが、
前記更新されたメタデータが前記第2の実行合意キャッシュにおいて見つけられた時に前記更新されたメタデータに対応するデータを検索しかつ提供することによって前記データに対する要求をサービス提供することと、をさらに含む、請求項12に記載のコンピュータ実施方法。
【請求項14】
前記第2のデータセンタに記憶されるデータに対する前記第1のデータセンタにおける前記第1のデータレプリケーションサーバによって出される全ての要求は、前記第2のデータセンタにおける前記第2のバージョンブリッジサーバによって使用可能にされ、前記第1のデータセンタに記憶されるデータに対する前記第2のデータセンタにおける前記第2のデータレプリケーションサーバによって出される全ての要求は、前記第1のデータセンタにおける前記第1のバージョンブリッジサーバによって使用可能にされる、請求項12に記載のコンピュータ実施方法。
【請求項15】
コンピュータネットワークに結合される第1のデータセンタおよび第2のデータセンタに及ぶコンピュータ実施システムであって、
前記第1のデータセンタにおける、第1のストレージ、第1のデータレプリケーションサーバ、メタデータを記憶するように構成される第1のキャッシュおよび第1のバージョンブリッジサーバと、および、
前記第2のデータセンタにおける、第2のストレージ、第2のデータレプリケーションサーバ、メタデータを記憶するように構成される第2のキャッシュ、および第2のバージョンブリッジサーバと、を含み、
前記第1のキャッシュおよび前記第2のキャッシュは、
前記第1のストレージおよび前記第2のストレージにデータが記憶される前に、前記第1のストレージおよび前記第2のストレージに記憶される
べき前記データの
互いの整合性を維持するためのメタデータを記憶する
ように構成され、
前記第2のデータセンタから出される前記第1のストレージに記憶されるデータに対する要求は、前記第1の
データレプリケーションサーバに、要求される前記データの更新されたメタデータに対する前記第1のキャッシュをサーチさせるように構成される前記第1のバージョンブリッジサーバによって使用可能にされ、前記第1のバージョンブリッジサーバは、更新されたメタデータが前記第1のキャッシュにおいて見つけられた時に前記更新されたメタデータに対応するデータを前記第2のデータセンタに提供するようにさらに構成され、
前記第1のデータセンタから出される前記第2のストレージに記憶されるデータに対する要求は、前記第2の
データレプリケーションサーバに、更新されたメタデータに対する前記第2のキャッシュをサーチさせるように構成される前記第2のバージョンブリッジサーバによって使用可能にされ、前記第2のバージョンブリッジサーバは、更新されたメタデータが前記第2のキャッシュにおいて見つけられた時に前記更新されたメタデータに対応するデータを前記第1のデータセンタに提供するようにさらに構成される、コンピュータ実施システム。
【請求項16】
前記第1のキャッシュおよび前記第2のキャッシュにおけるそれぞれのエントリは
一意のグローバルシーケンス番号(
GSN)を記憶するように構成され、前記第1のデータレプリケーションサーバおよび前記第2のデータレプリケーションサーバのそれぞれは、前記GSNを使用して要求された前記データの更新されたメタデータに対して前記第1のキャッシュおよび前記第2のキャッシュそれぞれをサーチするように構成される、請求項15に記載のコンピュータ実施システム。
【請求項17】
前記第1のデータレプリケーションサーバおよび前記第2のデータレプリケーションサーバは、それぞれが前記第1のキャッシュおよび前記第2のキャッシュにおける前記エントリに対して名前マッピングサービスをそれぞれ実行することによって、前記第1のキャッシュおよび前記第2のキャッシュそれぞれをサーチするように構成される、
請求項16に記載のコンピュータ実施システム。
【請求項18】
前記第2のデータセンタに記憶されるデータに対する前記第1のデータセンタにおける前記第1のデータレプリケーションサーバによって出される全ての要求は、前記第2のデータセンタにおける前記第2のバージョンブリッジサーバによって使用可能にされ、前記第1のデータセンタに記憶されるデータに対する前記第2のデータセンタにおける前記第2のデータレプリケーションサーバによって出される全ての要求は、前記第1のデータセンタにおける前記第1のバージョンブリッジサーバによって使用可能にされる、
請求項15乃至17のいずれか一項に記載のコンピュータ実施
システム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に開示された実施形態の分野は、分散ファイルシステムを含む。とりわけ、実施形態は、例えば、インターネットを含むことができる広域ネットワーク(WAN)上で分散ファイルシステムにおけるレプリケートファイルフォルダの整合性を維持するための方法、デバイス、およびシステムに関する。
【図面の簡単な説明】
【0002】
【
図1】実施形態による、方法、デバイス、およびシステムの実装に適する分散ファイルシステム実装形態の図である。
【0003】
【
図2】コンピュータネットワークに結合されるローカルおよびリモートデータセンタの図である。
【0004】
【
図3】実施形態による、コンピュータ実施システムおよび方法のコンピュータネットワークおよび態様に結合されるデータセンタを示す図である。
【0005】
【
図4】実施形態による、コンピュータ実施システムおよび方法のコンピュータネットワークおよび態様に結合されるデータセンタを示す図である。
【0006】
【
図5】実施形態による、コンピュータ実施システムおよび方法のコンピュータネットワークおよび態様に結合されるデータセンタを示す図である。
【0007】
【
図6】1つの実施形態によるコンピュータ実施方法のフローチャートである。
【0008】
【
図7】1つの実施形態によるコンピュータ実施方法のフローチャートである。
【0009】
【
図8】1つの実施形態によるコンピュータ実施方法のフローチャートである。
【0010】
【
図9】一実施形態の態様が実践可能であるハードウェアコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【0011】
Hadoop互換ファイルシステム(HCFS)名前空間は、ファイルおよびディレクトリの階層構造である。Hadoopは、分散コンピューティング環境におけるかなり大きいデータセットの処理および記憶をサポートするオープンソースのJavaベースのプログラミングフレームワークであり、これはApache Software Foundationが提供しているApacheプロジェクトの一部である。ファイルおよびディレクトリは、InodeによってNameNode上に表される。Inodeは、許可、修正、およびアクセス時間、名前空間、およびディスク空間割り当てを記録する。ファイルコンテンツは、大きいデータブロック(典型的に128MB)に分割され、ファイルのそれぞれのデータブロックは複数のDataNode(典型的には3つ)で独立してレプリケートされる。HCFSの1つの実装形態は、Hadoop分散ファイルシステム(HDFS)である。NameNodeは、名前空間動作を担うHDFSのメタデータサービスである。NameNodeは、名前空間ツリー、およびDataNodeへのブロックのマッピングを維持する。すなわち、NameNodeはHadoopクラスタ内のデータの場所を追跡し、かつこの場所へクライアントアクセスを調整する。従来、それぞれのクラスタは単一のNameNodeを有する。クラスタは、それぞれのDataNodeが複数のアプリケーションタスクを同時に実行できるように、クラスタごとに、何千ものDataNodeおよび何万ものHDFSクライアントを有することができる。Inode、および名前システムのメタデータを定義するデータブロックのリストは画像と呼ばれる。NameNodeはランダムアクセスメモリ(RAM)において全名前空間画像を保持する。
【0012】
分散ファイルシステムのノード間のシステム整合性を維持するために、ノード間のさまざまな分散イベントの調整が必要になる場合がある。全てのノードによって一貫して学習されなければならない特定のイベントを調整する最も簡易なやり方は、指定される単一のマスタを選定し、かつそのイベントをマスタ上に記録することで、他のノードがマスタからイベントを知ることができるようにすることである。このアプローチは、簡易であるが、単一のマスタの障害によって全システムの進行がストールするため、信頼性がない。これを認識して、従来のHDFS実装形態は、通常動作中にアクセスされるアクティブNameNode、およびアクティブNameNodeの障害が生じる場合にフェイルオーバーとして使用されるスタンバイNameNodeと呼ばれるバックアップを使用する。
【0013】
しかしながら、これは次善の解決策であると考えらえる。例えば、この方式では、トランザクションジャーナル(複数可)自体は、単一障害点になる。実際は、トランザクションジャーナル(複数可)の破損時に、スタンバイNameNodeはもはや、アクティブNameNodeと同じ状態を想定することができず、アクティブNameNodeからスタンバイNameNodeへのフェイルオーバーはもはや可能ではない。
【0014】
さらに、クラスタごとのアクティブNameNodeを1つのみサポートするHadoop解決策において、スタンバイサーバは、上記のように、典型的には、ネットワーク接続ストレージ(NAS)デバイスを介して同期して保持される。アクティブNameNodeが作動しなくなり、スタンバイNameNodeが引き継がなければならない場合、アクティブNameNodeに書き込まれた変更がNASにまだ書き込まれていない場合、データ損失の可能性がある。フェイルオーバー中の管理者のエラーによって、さらなるデータ損失が引き起こされる可能性がある。また、アクティブサーバがスタンバイサーバと通信できないが、クラスタにおける他のマシンと通信できるネットワーク障害が生じ、かつスタンバイサーバが、アクティブサーバが機能しないと誤って想定し、かつアクティブな役割を引き継ぐ場合、「分離脳」として知られる異常なネットワークの状態が生じる可能性があり、この場合、2つのノードは、それらがアクティブNameNodeであると考え、この状態によってデータ破損が引き起こされる可能性がある。
【0015】
(名前空間の状態をメンバーシップに変更する提案を行う人を処理する)提案部、(名前空間の状態を変更する提案がメンバーシップによって合意されるべきであるかどうかについて投票する人を処理する)受け入れ部、および、(メンバーシップにおいて、行われた合意を知る人を処理する)学習部の役割は、例えば、全体が本明細書に組み込まれている、Lamport、L.、The Part-Time Parliament、ACM Transactions on Computer Systems 16、2(1998年、5月)、133-169に説明されるPaxosアルゴリズムの実装形態に定義されている。1つの実施形態によると、複数のノードは役割のそれぞれを実行するように構成されてよい。調整エンジンによって、複数の学習部は高い可用性を実現するために複数の受け入れ部を活用して複数の提案部によってエンジンに送られるイベントの順序について合意できるようにしてよい。信頼性、可用性、およびスケーラビリティを実現するために、複数の同時のアクティブNameNode(総称してメタデータサーバと考えられてよい)は、名前空間がレプリケートされるノードの状態がこのようなノード間で整合したままにするという要件で、複数のノード上の名前空間の状態をレプリケートすることによって提供されてよい。
【0016】
NameNode間のこの整合性は、調整エンジンによって保証されてよく、この調整エンジンは、名前空間を更新するための提案を受け入れ、この提案を更新のグローバルシーケンスに合理化し、さらにまた、NameNodeが合意済み順序でそれらの個々の状態に対する更新を知りかつ適用することのみできるようにするように構成されてよい。本明細書において、「整合性」は、Addison Wesley、1987年、第6、7、および8章によって公開された、Bernsteinらによる「Concurrency Control & Recovery in Database Systems」に詳述されるような1コピー等価性(One-Copy Equivalence)を意味し、この全体が本明細書に組み込まれている。NameNodeが同じ状態から開始し、かつ同じ決定論的順序で同じ決定論的更新を適用するため、それらの各状態は整合しておりかつ整合したままである。
【0017】
従って、1つの実施形態によると、名前空間は、
a)それぞれのノードがその名前空間レプリカを修正することが可能である、および
b)名前空間レプリカがノードにわたって互いに整合したままであるように、1つの名前空間レプリカに対する更新が他のノード上での名前空間レプリカに伝達されなければならないことを条件として、複数のNameNode(またはより一般的には、メタデータサーバ)上でレプリケートされてよい。
【0018】
図1は、WAN環境において特定の有用性を見出す1つの実施形態による分散ファイルシステムの図である。
図1はまた、レプリケート状態マシンモデルに基づく分散されたHCFS(例えば、HDFSなど)についてWAN上で適用可能なレプリケーション方法の態様も示す。1つの実施形態によると、NameNodeは、種々の地理的に分散したデータセンタに位置する。このようなデータセンタは、例えば、種々の大陸に位置することができる。例えば、インターネット、および/または、プライベートもしくは独自のWANを含む、例えば、WAN上のHCFSクラスタに及ぶ分散ファイルシステムに適用可能である実施形態が本明細書に記載されている。
【0019】
アーキテクチャ概要
図1は、1つの実施形態による、WANに及ぶクラスタおよび分散ファイルシステムのコンポーネントのブロック図である。そこに示されるように、1つの実施形態による分散ファイルシステム102を起動する(例えば単一の)クラスタは、2つ以上のデータセンタ、すなわち、データセンタA(DCA)104およびデータセンタB(DCB)106を含んでよい。DCA104およびDCB106は互いに地理的に遠隔であってよい。例えば、DCA104およびDCB106は単一の国の種々の地域に位置してよく、種々の大陸、種々の時間帯において分散されてよく、完全に独立した配電網から引き込んでよい。DCA104およびDCB106は、例えば、インターネットならびに/または他のプライベートおよび/もしくは独自のネットワークを含んでよいWAN108を介して互いに緩く結合されてよい。DCA104およびDCB106はまた、他の専用の高速接続によって結合されてよい。2つのデータセンタ104、106のみが
図1に示されているが、実施形態がより多数のデータセンタを含んでよく、かつ分散ファイルシステム102がこのようなデータセンタ全てにわたって拡張することは理解されたい。
【0020】
示されるように、DCA104は、「MDS」として図に示される、複数の(例えば、スタンバイまたはフェイルオーバーとは対照的に)アクティブなメタデータサーバ(であるが、Hadoop NameNodeが1つの可能な実装形態である)を含んでよい。このように、DCA104は、参照番号110、112、および114によって示されるMDSを含んでよく、DCB106は、参照番号116、118、および120によって示されるMDSを含んでよい。MDS110、112、114、116、118、および120のそれぞれは、分散ファイルシステムの名前空間の状態を記憶するように、および単一の名前空間がMDSおよびデータセンタにわたって整合することを維持するように構成されてよい。MDS間の調整、およびMDSにわたる単一の名前空間のメンテナンスの態様は、分散調整エンジン(CE)プロセス122によって提供されてよい。
図1において、CEプロセス122は、DCA104、DCB106、およびWAN108に及ぶ別個の論理エンティティであることを示唆するように示される。しかしながら、1つの実施形態によると、上でおよび以下に説明されるCE122の機能性は、MDS110、112、114、116、118、および120のそれぞれによって遂行されてよい。すなわち、MDS110、112、114、116、118、および120のそれぞれは、いくつかある機能の中で特に、CE122の役目の一部または全てを実行するように構成されてよい。
【0021】
DCA
104は、
図1では「DN」として参照される複数のDataNode124、126、128、130を含んでよい。同様に、DCB
106はまた、
図1において「DN」として参照される複数のDataNode132、134、136、138を含んでよい。示されるように、DataNode124、126、128、130のそれぞれは、DCA
104のMDS110、112、および114のそれぞれに結合されかつこれと通信するように構成されてよい。さらに示されるように、DataNode132、134、136、138のそれぞれは、DCB106のMDS116、118、および120のそれぞれに結合されかつこれと通信するように構成されてよい。1つの実施形態によると、MDSはDataNodeと直接通信しない場合がある。実際は、1つの実施形態によると、DataNodeはMDSに要求を送るように構成されてよく、これに従って、MDSは受信した要求に応答してDataNodeにコマンドを出す。従って、MDSがDataNodeを制御すると考えられる場合があるが、DataNodeは、1つの実施形態によると、MDSに要求を送ることでそこからコマンドを受信するように構成されてよい。DCA104には4つのDataNode124、126、128、130が示されている。同様に、DCB106には4つのDataNode132、134、136、および138が示されている。しかしながら、データセンタ104および106はそれぞれ、
図1に示されるよりもさらに多くの(例えば、何千もの)データノードを含んでよい。
【0022】
3つのMDS110、112、114はDCA104内に設けられていると示されているが、より多くのMDSがDCA104内に設けられてよい。同様に、3つのMDS116、118、120がDCB106内に設けられていると示されているが、より多くのMDSがDCB106内に設けられてよい。1つの実施形態によると、データセンタ内のMDSの数は奇数となるように選択されてよい。
【0023】
1つの実施形態によると、
図1は、種々の地理的に分離したデータセンタに及ぶ単一の分散ファイルシステムを起動するクラスタを示す。分散ファイルシステムは例えば、HDFSの態様を組み込んでよい。DataNodeのそれぞれは、これら自体のデータセンタ内のMDSとのみ(DataNode-NameNode間リモートプロシージャコール(RPC)プロトコルを通して)通信するように構成されてよい。逆に、データセンタのMDSは、それら自体のデータセンタ内のDataNodeのみを制御するように構成されてよい。すなわち、データセンタ104のDataNodeは、1つの実施形態によると、それら自体のデータセンタ104のMDSと通信することだけでき、データセンタ106のデータノードは、それら自体のデータセンタ106のMDSと通信することだけできる。データセンタ
104、106両方のMDSは、名前空間の状態を、調整エンジン122を通して整合するように維持するために互いに調整する。1つのデータセンタのデータノードは他のデータセンタ(単数または複数)のデータノードと通信してよい。
【0024】
1つの実施形態によると、CEプロセス122は、名前空間の状態への同じ決定論的更新が全てのMDS上の同じ決定論的順序で適用されることを保証するように構成されてよい。1つの実施形態によると、決定論的順序はグローバルシーケンス番号(GSN)によって定義される。従って、CEプロセス122の大きな役割は、1つの実施形態によると、全てのMDSからの名前空間の状態を修正あるいは更新し、かつそれらを合意の大域的に順序付けられたシーケンスに変換する提案を処理することである。MDSはさらにまた、それらの記憶された状態への更新としてのその順序付けられたシーケンスからの合意を順次適用してよい。1つの実施形態によると、GSNは一意の単調増加数として構成されてよい。しかしながら、GSNは、その他の場合、当業者が認識できるように構成されてよい。GSNはさらにまた、名前空間の状態を更新し、かつ名前空間の状態がMDSにわたって整合するように保持する(または、MDSのそれぞれに記憶された名前空間の状態を、合意の大域的に順序付けられたシーケンスの順次の適用を通して経時的に整合させる)際に種々のMDSの進行を比較するために使用されてよい。例えば、MDS110が、まさにMDS112によって処理したGSN2より小さい、GSN1と番号付けされた合意をまさに処理した場合、MDS110はMDS112よりも早い名前空間状態を有する。MDS110によって記憶された名前空間の状態は、MDS112が暫定的により大きい番号が付けられた合意を処理していないことを条件として、MDS110がGSN2を処理するとすぐにMDS112によって記憶されるものにマッチすることになる。このように、CEプロセス122によって生成された合意の(GSN機構を通して)順序付けられたセットの順次的な実行を通して、データセンタのそれぞれにおけるMDSのそれぞれに記憶された名前空間の状態は、整合させる、または整合性が維持される。
【0025】
1つの実施形態によると、それぞれの動作によって、クライアントは、クライアントが現在接続されているMDS上で処理される最新のGSNについて学習する。その後、クライアントが別のMDSに切り換える場合、1つの実施形態によると、最初、新しいMDSが書き込みなどのデータアクセスコマンドを含むRPCを出す前にクライアントが知っている最新のGSN(すなわち、クライアントが以前にアクセスしたMDSから受信したMDS)に追い付くまで(必要に応じて)待機するものとする。これによって古くなった読み出し問題が回避されることになる。MDSが同じ状態から開始するため、更新のこの順序付けられた適用は、同じGSNにおける合意を処理している種々のノード上で取られたそれについてのスナップショットが、データセンタ内でおよびこれにわたる両方で同一であるというレプリカの整合性を含意する。
【0026】
1つの実施形態は、CEプロセス122が合意を送達すると瞬時に(または、ネットワークに固有の帯域幅およびレイテンシを考慮してほぼ瞬時に)MDS110、112、114、116、118、120間の全てのメタデータを調整する。同様に、全てのファイルシステムデータはまた、クラスタの複数のデータセンタにわたって自動的にレプリケートされる。1つの実施形態は、(例えば、限定はされないが、Hadoop)クラスタにおけるファイルシステム間の、整合する連続的なデータレプリケーションをもたらす。クライアントアプリケーションは、複数のクラスタにわたって基礎を成すストレージを統合する仮想ファイルシステムと相互作用するように構成されてよい。1つのクラスタにおいてファイルに変更が行われる時、それらの変更は他に及ぶクラスタと整合するようにレプリケートされる。1つの実施形態は、Hadoop展開によって、例えば、CDH、HDP、EMC Isilon、Amazon S3/EMRFS、およびMapRなどの、Hadoopの種々の、さらには非互換のバージョンを起動している(例えば、Hadoop)クラスタ間のHCFSデータをレプリケートすることが可能になるソフトウェアアプリケーションを含んでよい。また、1つの実装形態によると、Hadoopの種々のベンダ分散およびバージョンの間でレプリケートすることが可能である。
【0027】
有利には、実施形態によって、全てのHadoopアプリケーションと互換性があるHadoop、種々のタイプのHadoopからストレージを統合する単一の仮想名前空間、大域的に分散したストレージ機構、およびアクティブ/アクティブレプリケーション技術を使用して、広範囲に及ぶデータセンタ間でレプリケートされた、単一コピー整合HDFSデータを送達するWANレプリケーションのための仮想ファイルシステムを提供する。
【0028】
1つの実施形態によると、本明細書に説明される機能性の一部または全ては、Hadoopスタックにおいてより高いレベルで、例えば、アクティブなMDSおよび調整エンジンから離れてHadoopクラスタに隣接するサーバ(単数または複数)内で実行されてよい。このように、NameNodeレベルで深く機能するのではなく、1つの実施形態は、Hadoopファイルシステムに対する代理アプリケーションとして動作するように構成されてよい。
【0029】
実施形態は、必要に応じて追加の処理能力を入手するために、例えば、Amazon Web Services(AWS)などのリモートクラウドサービス、オンデマンド計算能力を供給するプラットフォーム、データベースストレージ、コンテンツ配信、および他の機能性にデータを転送することによって、クラウドにおける処理能力を増大させるように構成されてよい。
【0030】
さらに、実施形態は、可能なものをいくつか挙げると、例えば、2つのHortonworksクラスタ間といった、HortonworksとClouderaとの間、およびEMCのIsilonストレージシステムをレプリケートする能力など、種々のHadoop分散にわたる同期を可能にする。HBaseサーバによる同期も適応させてよい。Hbaseは、GoogleのBigTableの後にモデリングされた、オープンソースの非関係の分散データベースであり、Javaで書き込まれる。Hbaseは、Apache Software FoundationのApache Hadoopプロジェクトの一部として開発されたものであり、Hadoopに対するBigTableのような機能を提供するように、HDFSに加えて起動する。
【0031】
1つの実施形態では、
図2に示されるように、データレプリケーションサーバ204、206、208のマジョリティクォーラムによって、コンピュータネットワーク202上で、合意されるPaxos合意を使用して同期的にメタデータ動作(例えば、ファイルを作成する)をレプリケートする。示されるように、コンピュータネットワーク202は、WAN(広域ネットワーク)リンクによって接続される世界中の多数の場所に及んでよい。メタデータ動作と関連付けられてよいデータ動作(例えば、ファイルデータを書き込む)は、多くはメタデータ動作の後に調整なしで非同期的にレプリケートされる。すなわち、ファイル作成メタデータ動作と関連付けられた分散ファイルシステムストレージ210、212、および218への書き込みは、複数のデータレプリケーションサーバ204、206、208の間の調整なく、非同期的に実行されてよい。これは、レプリケート元データセンタ(DCO)214における記憶性能は、悪影響を受けないが、リモートデータセンタ(RDC)は、RDC216における分散ファイル
システムストレージ212に対してDCO214における分散ファイルシステムストレージ210に書き込まれたデータをレプリケートしているように徹底するためである。しかしながら、これらの非調整データ書き込み動作によってウィンドウが開き、暫定的に、同じファイルオブジェクト上での後続のメタデータ動作によって、このような非調整データコピー動作を行うことができないようにしてよい。例えば、ファイルネームまたはパスは、非調整データ書き込み動作のうちの1つが実行されていた間に変更可能であり、これによって、データ書き込み動作を行うことができないようになる。
【0032】
このような問題の実例には、DCO214のクライアントが、ファイル、例えば「foo.tmp」を作成し、200MBのデータをファイルに書き込み、これを閉じ、その後、「foo.tmp」ファイルを「foo」に名前変更する。RDC(複数可)216におけるデータレプリケーションサーバ(複数可)は、「foo.tmp」についてのファイル作成動作についてのメタデータをとらえることになるが、これが200MBのデータをコピーしている間、DCOにおけるデータレプリケーションサーバは、「foo.tmpをfooに名前変更する」という合意を実行してよいことで、取り出される場所にはもはや存在しないファイル「foo.tmp」から200MBのデータを取り出しているため、RDCへの「foo.tmp」データのレプリケーションを行うことができなくなる。
【0033】
1つの実装形態は、ファイルのデータが非同期的に取り出されている間にファイルを名前変更する時にDCO214からRDC216へのデータの取り出しを再開する。実際は、ファイルクローズ時に開始されたデータ取り出しは、介在するファイル名前変更動作により行うことができない。これを克服するために、名前変更動作では、ファイルが非整合であるかどうかをとらえるためにチェックし、非整合である場合、取り出すデータのDCOソースとしての名前変更先による取り出しを再開する。
【0034】
別の実施形態では、より有利には、ファイル名前変更、またはデータがレプリケートされるファイルに対するパスへの変更などの動作の後のデータレプリケーションの失敗を防止するためにデータセンタにわたるメタデータ変更を追跡する。本開示は、このような同期メタデータおよび非同期データレプリケーションシステムの実施形態について説明している。
【0035】
設計原理
ビッグデータレプリケーションプラットフォーム上でのその展開に関連して、1つの実施形態は、以下の3つの設計原理を具現化するように構成されてよい。
1.限定ではないが、クライアント、データレプリケーションサーバ、またはバージョンブリッジサーバを含む、以降に説明されるコンピューティングコンポーネントのいずれかにおいて記憶またはキャッシュされるデータはない。実際は、1つの実施形態は、合意済み提案のメタデータ動作をキャッシュすることによって実施されてよく、このような動作と関連付けられるデータはない。
2.リモートデータセンタクライアント(データが元々書き込まれていたDCO214のデータセンタクライアントとは対照的に、データがレプリケートされるRDC216のデータセンタクライアント)は、GSNの機構を使用して、基礎を成すストレージの時点で整合しているメタデータのビューをとらえることになる。すなわち、クラスタにわたる名前空間、およびレプリケートされたフォルダの状態は、データセンタにわたって同じGSNで同一となる。しかしながら、データは不完全である場合がある。換言すれば、リモートクライアントは、ファイルの存在を(このメタデータが同期的にキャッシュされているため)とらえることができるが、この基礎を成すデータはまだ完全に書き込まれていない場合がある。この挙動は、ビッグデータストレージシステムの単一データセンタインスタンスにおいて一括読み出し部による遅い書き込み部の挙動を再現している。
3.RDCクライアントは、そのファイルシステムの時点に属していないデータをとらえることはないし、さらに以下で進展するように、ファイルの異なる時点からデータの混合をとらえることもない。
【0036】
開示された実施形態の正確さを検証する
正確さを証明する最も簡易なやり方は、後続のメタデータ動作における同じパスに変更がなされる場合にいずれのデータ取り出し(すなわち、データをDCOからRDCに取り出すこと)を中止させることである。ファイルは非整合とマーキングされ、非整合を補正するための修復が行われる。このチェックは、レプリケーションサービスの最小知識、すなわち、基礎を成すストアのファイルシステム意味論の知識で行われ得る。
【0037】
設計
まさに、直上に列挙された正確さ基準を満たすことが考えられる単純な実装は、多くの中止および修復動作をもたらすことになって、レプリケートされたフォルダを非整合にし、かつ分散システムの効率が低下する。それ故に、本明細書に説明される実施形態は、基礎を成すストレージシステムのファイルシステム意味論に基づく最適化を提供する。
【0038】
1つの実施形態によると、DCO214またはRDC216のどちらかにおけるデータ取り出し動作の失敗によって、名前マッピングサービスを使用して動作が再開されることになる場合がある。実際は、DCO214からRDC216へのデータ取り出し動作は、DCO214における読み出し動作およびRDC216における書き込み動作の両方を必要とする。どちらかを行うことができない場合、本明細書ではMapFilenameとも示される名前マッピングサービス、アプリケーションプログラムインターフェース(API)を使用して再試行される。これらの最適化、および名前マッピングサービスの展開は、1つの実施形態によると、それぞれの合意において行われるファイルシステム動作について記憶されるより詳細な情報を必要とする。
【0039】
1つの実施形態によると、拡張は次の3つの態様、
1.実行合意キャッシュ309、311における実行合意をキャッシュするための、およびこの実行合意キャッシュ309、311を使用してMapFilename APIを実装するための、データレプリケーションサーバ206、208(
図2)、308、310(
図3)に対する拡張、
2.名前マッピングサービスMapFilenameにDCO214におけるソースファイル名を求めるためのバージョンブリッジサーバ312の展開、および
3.名前マッピングサービスにRDC216におけるターゲットファイル名を求めるためのデータレプリケーションサーバ310に対する拡張、および名前マッピングサービスにRDC216におけるソースファイル名を求めるためのバージョンブリッジサーバ314の対応する展開、を含むことができる。
【0040】
図3は、1つの実施形態による、コンピュータ実施方法およびシステムの態様を示すブロック図である。示されるように、参照番号214はDCOを示し、参照番号216はRDCを示すが、名称は入れ替えられる可能性がある。DCO214およびRDC216は、1つまたは複数のコンピュータネットワーク302を介して緩く結合されてよく、球体301によって示唆されるように、地理的に分離されてよい。DCO214において、クライアントアプリケーション304は、データレプリケーションサーバ308にデータアクセスコマンドを出すためにクライアントライブラリを利用してよい。同様に、RDC216において、クライアントアプリケーション306は、データレプリケーションサーバ310にデータアクセスコマンドを出すためにクライアントライブラリを利用してよい。データレプリケーションサーバ308は、1つの実施形態によると、(実行合意キャッシュ309として
図3に示される)キャッシュ309における、レプリケートされたフォルダの状態を変更するための合意のメタデータ、および合意の関連付けられたGNSをキャッシュし、データレプリケーションサーバ310はまた、キャッシュ311における、合意のメタデータ、および関連付けられたGNSをキャッシュする。キャッシュ309、311は、後述されるように、互いに整合するように維持される。1つの実施形態によって、DCO214におけるバージョンブリッジサーバ312、およびRDC216におけるバージョンブリッジサーバ314が設けられる。最後に、DCO214およびRDC216のそれぞれは、316、318に示されるように、ストレージを含み、このストレージは、実行合意キャッシュ309、311においてキャッシュされたメタデータに対応するデータを永続的に記憶するように構成される。
【0041】
作成GSN
レプリケートされるファイルは、1つの実施形態によると、一意の作成GSNによって特定されてよい。作成GSNは、ファイルの作成についての合意に対する割り当ておよび関連付けが同時に行われる一意のGSNである。ちなみに、これによって、実施形態が、HFlush特徴を有さない、S3などのストレージシステムと途切れなく相互操作可能であることが徹底される。
【0042】
実行合意キャッシュ
データレプリケーションサーバ308は、1つの実施形態によると、実行合意キャッシュ309において実行合意をキャッシュするように構成されてよく、データレプリケーションサーバ310は、1つの実施形態によると、実行合意キャッシュ311において実行合意をキャッシュするように構成されてよい。1つの実施形態によると、データレプリケーションサーバ308、310は、それぞれ、実行合意キャッシュ309、311におけるエントリにおいて名前マッピングサービスMapFilename APIを実装するように構成されてよい。合意は順不同で実行可能であるため、データレプリケーションサーバ308、310は、特定されたGSNより大きいGSN全てを通して反復しかつサーチする能力によって構成されてよい。
【0043】
続けて
図3を参照すると、クライアントアプリケーション304は、ファイル作成提案を出すことができ、これに対して、調整エンジンは対応する合意を出すことができる。クライアントアプリケーション304はさらにまた、(1)に示されるように、データレプリケーションサーバ308にファイル作成動作を出してよい。リモートデータセンタにおけるデータ書き込みの終わりに対する取り出し動作の作成、書き込み、開始からのファイル名、パス、またはデータに対する変更がない時だけでなく、介在する変更が生じる時にも機能する包括的解決策を提供するために、以下の方法が行われてよい。有意には、および1つの実施形態によると、ファイル作成動作と関連付けられたメタデータは、(2)に示されるように、DCO214における実行合意キャッシュ308においてキャッシュされてよく、すぐに(例えば、迅速に)ネットワーク302上でRDC216においてデータレプリケーションサーバ310と同期させて、データレプリケーションサーバの実行合意キャッシュ311を更新することができる。これによって、ファイル作成動作はRDC216に可視になり、データセンタ214、216にわたるレプリケートされたフォルダの単一ビューが維持される。1つの実施形態によると、それぞれのレプリケートされたフォルダに対して1つの実行合意キャッシュがあってよい。他の実装形態が可能であり、単一の物理キャッシュは、いくつかのレプリケートされたフォルダのメタデータに適応させるために論理的にパーティション分割されてよい。メタデータは、比較的少量のデータから成るため、少なくとも、DCO214におけるストレージ316からRDC216におけるストレージ318に対応するファイルデータをレプリケートするために必要とされる時間と比較すると、DCO214における実行合意キャッシュ309からRDC216における実行合意キャッシュ311までの高速動作で、有線で送られる。目的は、実行合意キャッシュ309、311(および存在する場合、その他)にわたって、生成されたGSNを使用してファイル書き込み動作を迅速に調整した後、基礎を成すデータ自体を、調整なく非同期的に(および、比較的遅くなることが多いが)レプリケート可能にすることである。このように、データの書き込み部(本明細書において進展している例では、クライアントアプリケーション304)は、ファイルを作成しかつ基礎を成すローカルストレージ316に書き込む際に、(例えば、レイテンシまたはネットワーク帯域制限に関して)いずれの大きなペナルティも課さない。
【0044】
(3)に示されるように、ファイル作成動作のメタデータの調整されたレプリケーション後、データレプリケーションサーバ308は、特定された完全修飾パスおよびファイル名においてクライアントアプリケーションの代わりにストレージ316においてファイルを作成することができる。その情報はさらにまた、クライアントアプリケーション304に返されてよく、クライアントアプリケーション304はその後、(4)に示されるように、そのファイル名にデータを書き込んでよい(比較的より速いローカルエリアネットワーク(LAN)速度である場合がある)。クライアントアプリケーション304はさらにまた、データの書き込みが終わった時、(5)に示されるように、ファイルを閉じることができる。
【0045】
RDC216におけるデータレプリケーションサーバ310はここで、作成されたファイル(現時点では、実行合意キャッシュ311においてこのメタデータを記憶しているため)「について知っている」ため、DCO214のバージョンブリッジサーバ312にクエリを行う。データレプリケーションサーバ310は、バージョンブリッジサーバ312に、作成されたファイルと関連付けられた作成GSNを提供してよく、作成GSNは、(2)においてDCOのデータレプリケーションサーバ308から得られたメタデータの一部を形成する。バージョンブリッジサーバ312はその後、DCO214のデータレプリケーションサーバ308に、実行合意キャッシュ309におけるエントリにおいて名前マッピングサービスを実行させることができ、さらにまた、実行合意キャッシュ309において(作成GSNの後で)後続のGSNを進んで、ファイルのファイル名、パス、および/またはデータに対するいずれの変更も作成GSNがこれをRDCのデータレプリケーションサーバ310によって提供してから(すなわち、これより大きいGSNで)その後生じたかどうかを判断することができる。ファイルのファイル名、パス、および/またはデータに対するそれらの変更が、暫定的にデータレプリケーションサーバ310の実行合意キャッシュ311において、調整下で、提案され、合意され、このメタデータがDCO214における実行合意キャッシュ309に記憶され、かつレプリケートされていることが考えられることは留意されたい。
【0046】
DCO214のバージョンブリッジサーバ312はさらにまた、いずれの更新済みファイル名、パス、およびデータも、RDC216におけるデータレプリケーションサーバ310に提供することができる。データレプリケーションサーバ310はさらにまた、ストレージ318において適正なファイル名、パスに対してデータを書き込み可能であり、ひいては得られ得る。当然ながら、RDC216におけるクライアントアプリケーションは、データのレプリケーション前、中、または後にファイルに対するある状態変更動作を実行していてよい。これらの起こり得る事態のそれぞれは、本明細書において以下に補填される。
【0047】
1つの実装形態によると、以下の情報はデータレプリケーションサーバ308、310によって実行されるそれぞれの合意に対してキャッシュされてよい。
1.実行合意キャッシュEntry.Operation。これは、名前変更、削除、切り捨て、アペンド、または修復などのファイル動作の識別である。
2.以下の制約を有する、実行合意キャッシュEntry.Path1。
a.パスはディレクトリまたはファイルの(相対するパスとは対照的に)完全修飾パスとしなければならない。
b.ワイルドカードは許可されない(*、$など)
c.名前変更動作の場合、この実行合意キャッシュEntry.Path1はソースパスである。
3.以下の制約を有する実行合意キャッシュEntry.Path2。
a.ディレクトリまたはファイルの完全修飾宛先パス
b.ワイルドカードは許可されない。
c.名前変更の場合にのみ存在する。
4.実行合意キャッシュEntry.FileLength。これは、ファイルのファイル長である。ここで、
a.ファイル切り捨て動作の場合、これはファイルが切り捨てられた長さである。
b.アペンドについて、これはアペンドが開始される前のファイルの長さである。
【0048】
実行合意キャッシュにおいてこのようなメタデータ情報をキャッシュすること、および、そのメタデータ情報を同期するようにリモート実行合意キャッシュに伝達することによって、基礎を成すデータを比較的ゆっくりと書き込むことができ、データセンタにわたってそれぞれのGSNにおいてレプリケートされたフォルダの状態を整合するように保持することができる。すなわち、GSN122でDCO214におけるレプリケートされたフォルダの状態は、RDC216におけるデータレプリケーションサーバ310がレプリケートされたデータフォルダ上のGSN127と関連付けられた合意をその後実行しており、かつDCO214におけるデータレプリケーションサーバ308がそのレプリケートされたフォルダ上でGSN127にまだ追い付いていない場合でも、RDC216においてGSN122におけるレプリケートされたフォルダの状態と同じになる。
【0049】
実行合意キャッシュのガベージコレクション
実行合意キャッシュ309、311のガベージコレクションを行うことは、このシステムに対する動作上の考慮すべき事項の重要な側面である。これによって、分散ファイルシステムのノードのいずれかによって必要とされる可能性がもはやないメタデータの実行合意キャッシュが取り除かれる。これによって、実行合意キャッシュのサイズを合理的なサイズに保持することが可能になり、さらに、実行合意キャッシュを効率的に存続させ、かつこのような作用が必要とされる場合に再構築することが可能になる。従って、1つの実施形態は、実行合意キャッシュ(単数または複数)のガベージコレクションを行うように構成されてよい。このようなガベージコレクション機能性の1つの実装形態は、最小GSNを追跡するそれぞれのデータレプリケーションサーバを含んでよく、これに対して、データについてのいずれの要求(例えば、データ取り出し要求)もアクティブである。この情報はさらにまた、クォーラムにおいて全てのデータレプリケーションサーバに分散されてよく、このクォーラムは、特定のレプリケート済みフォルダまたは選択されたレプリケート済みフォルダのGSNを追跡するデータレプリケーションサーバ群を含んでよい。その後、クォーラムにおける任意のアクティブな取り出しの最低GSNを下回る実行合意キャッシュにおけるエントリはさらにまた、ガベージコレクションが行われてよく、それ自体はもはや必要とされない。1つの実施形態によると、実行合意キャッシュにおけるエントリ数に対する設定可能な限度は、例えば、10,000などが課される場合があり、それぞれのエントリはGSNと関連付けられる。実行合意キャッシュ309、311は、より少ないまたはより多い数の合意を記憶するように構成されてよい。ErrorExecutedAgreementCacheGarbageCollectedなどのエラーコードは、マップがガベージコレクションを行っているようにGSNに要求する場合、名前マッピングサービスMapFilename APIによって返されてよい。別の実施形態では、データレプリケーションサーバ308、310は、最低アクティブデータ取り出しGSNを追跡するように構成されてよく、この最低アクティブデータ取り出しGSNを、データセンタにわたって(さらには、レプリケート済みフォルダごとに)全てのデータレプリケーションサーバに分散してよいことで、ガベージコレクションを継続していくように実行することが可能になる。
【0050】
上記のように、実行合意キャッシュは、データレプリケーションサーバ308、310がそれぞれ、それぞれのレプリケート済みフォルダデータ構造ごとに、複数のキャッシュにアクセスしかつこれを維持することができるように、レプリケート済みフォルダデータ構造ごとに構成されてよい。
【0051】
1つの実施形態によると、選択的レプリケーション正規表現に対する変更など、レプリケート済みデータ構造と関連付けられた管理または動作コマンドは、対応する実行合意キャッシュのフラッシュを生じさせるものとし、これはさらにまた、スクラッチから再構築されてよい。このような再構築は、名前空間変更動作に対する提案が承認されかつ実施される際に行われてよい。
【0052】
名前マッピングサービス
上記のように、名前マッピングサービスMapFilename APIコールは、データレプリケーションサーバ308、310によって実施されてよい。このAPIの使用には以下が含まれてよい。
1.DCO214において、バージョンブリッジサーバ312は、ファイルを転送する要求を受信する時、この方法を呼び出すように構成されてよい。呼び出された名前マッピングサービスはさらにまた、作成GSNとして既知であったようにファイルの名前をマッピングすることになり、これは、ファイルの作成と関連付けられるGSNである。ファイルの読み出し中、この読み出しができない場合、バージョンブリッジサーバ312は、再び名前マッピングサービスに、ファイルのデータを読み出していた間にファイル名が変更されたかどうかを判断するように求めることになる。
2.RDC216において、データレプリケーションサーバは、書き込みを開始する前に、また、ローカルファイルへの取り出されたデータの書き込みができない時に、名前マッピングサービスにファイル名をマッピングするように求めることになる。
【0053】
1つの実施形態によると、バージョンブリッジサーバ312は上で挙げられた最初の使用時のプロセス以外のものであり、上記の第2の使用時のプロセスにおけるものであるため、名前マッピングサービスは、同じJava仮想マシン(JVM)内の要求APIおよび局所的方法の両方として利用可能であるように構成されてよい。他の実装形態が可能である。
【0054】
名前マッピングサービスMapFilenameの入力および出力パラメータ
名前マッピングサービスの入力パラメータは、1つの実装形態によると、以下を含むことができる。
1.作成GSN
a.これはファイルまたはオブジェクトが作成されたGSNである。
2.Path-in
a.path-inは、リモートデータセンタがデータを要求しているファイルの完全修飾パスである。
b.Path-inはディレクトリとすることができない。
【0055】
名前マッピングサービスの出力パラメータは、1つの実施形態によると、以下を含むことができる。
1.ReturnValue
a.ReturnValueは「FileExistsUnchanged」であってよく、これはファイルがその作成GSNから変更されていないことを意味する。
b.ReturnValueは「FileExistsChanged」であってよく、これは、ファイルが書き込まれてから(その作成GSNから)変更されていることを意味する。
c.ReturnValueは「FileDeleted」であってよく、これは、ファイルがもはや存在しないことを意味する。
d.「ErroExecuted agreement cacheGarbageCollected」のReturnValueは、ファイルが、その後ガベージコレクションが行われた作成GSNと関連付けられていることを指示している。
e.「AbortPullRepairComingUp」のReturnValueは、修復動作がスケジューリングされているため、このファイルに対するデータ取り出しが中止されるべきであることを指示している。
2.NewPath
戻り値が「FileExistsUnchanged」である場合、「NewPath」のReturnValueは、現時点で基礎を成すファイルシステムに存在し、かつファイルの作成GSNから変更されていないため、ファイルのパスである。この出力パラメータは、基礎を成すストレージの現時点のGSNまで作成GSNからPath-inへの変更を追跡する。ファイル名への変更、および任意の親ディレクトリコンポーネントへの変更は両方共、このように追跡されかつ報告される。
3.ファイルに対して有効であるデータの長さ
a.この出力パラメータは、ファイルの終わりにデータを削除してよい任意の可能な切り捨て動作を考慮している。
【0056】
名前マッピングサービスの動作
1つの実施形態によると、名前マッピングサービスが呼び出される時、後述される機能および動作の1つまたは複数は、実行されてよい。
【0057】
呼び出されると、名前マッピングサービスは、APIが呼び出されるファイルと関連付けられた作成GSNが実行合意キャッシュに記憶された最低GSNを下回っているかどうかをチェックすることができる。そうであるなら、データレプリケーションサーバが変更に対する実行合意キャッシュをチェックすることができなくなるため、「ErroExecuted agreement cacheGarbageCollected」を返す。
【0058】
実行合意キャッシュに記憶された最大(1つの実施形態では、最高)GSNに達するまで、名前マッピングサービスが呼び出されたファイルと関連付けられた作成GSNより大きいGSNによって特定される実行合意キャッシュにおけるエントリ全てを進める。
【0059】
ExecutedAgreementCacheEntry.Path1(実行合意キャッシュでのエントリにおけるファイルに対するパス)が入力パラメータPath-inに厳密にマッチする場合、行われるステップは基礎を成すファイル動作に左右される。ファイル動作が名前変更である場合、Path-inを、実行合意キャッシュにおける新しいパス「ExecutedAgreementCacheEntry.Path2」と置き換え、かつ実行合意キャッシュにおける残りのエントリを反復し続ける。動作がアペンドまたは切り捨てである場合、呼び出し部に返すためにExecutedAgreementCacheEntry.FileLengthを保存し、実行合意キャッシュエントリにおける残りのエントリを反復し続ける。動作が削除である場合、すぐにFileDeletedを返し、動作が修復である場合、すぐにAbortPullRepairComingUpを返す。
【0060】
ExecutedAgreementCacheEntry.Path1がPath-inにマッチしない場合、Path-inの親ディレクトリを抽出する。例えば、Path-inが、/user/jagane/hive-tables/weblogs/fileABCである場合、Path-inの親ディレクトリは、/user/jagane/hive-tables/weblogsである。Executed agreement cacheEntry.Path1がPath-inの親ディレクトリより長い場合、データレプリケーションサーバは実行合意キャッシュにおいて(名前マッピングサービスが呼び出されたファイルの作成GSNより大きいGSNを有する)残りのエントリを反復し続けるものとする。
【0061】
ExecutedAgreementCacheEntry.Path1がPath-inの親ディレクトリより短いまたは等しいと判断される時に下記が行われる。Executed agreement cacheEntry.Path1がPath-in-parentdirのあるプレフィックス部分列に等しい場合、これは、Path-inの親ディレクトリコンポーネントのうちの1つが動作していたことを指示している。ExecutedAgreementCacheEntry.Path1がディレクトリでなければならず、この時点でファイルとすることはできないことは留意されたい。動作が名前変更である場合、Path-in-parentdirにおけるプレフィックスは、ExecutedAgreementCacheEntry.Path2と置き換えられ、Path-inは再構成される。上で進展した例を続けると、ExecutedAgreementCacheEntry.Path1が/user/jagane/hive-tablesである場合、およびExecutedAgreementCacheEntry.Path2が/user/jagane/archived-hive-tablesである場合、Path-inを/user/jagane/archived-hive-tables/weblogs/fileABCと置き換える。その後、実行合意キャッシュエントリの残りを反復し続ける。動作が削除である場合、サブディレクトリ全体は削除されており、FileDeletedがすぐに返される。動作が修復である場合、AbortPullRepairComingUpが返される。ExecutedAgreementCacheEntry.Path1がディレクトリでなければならないため、アペンドおよび切り捨てがこの時点では無効な動作であることは留意されたい。
【0062】
Executed agreement cacheEntry.Path1が(ルートディレクトリ以外の)Path-in-parentdirの任意のプレフィックス部分列に等しくない場合、実行合意キャッシュエントリの残りを反復し続ける。上記のループの終わりに、Path-inに対していずれもマッチするものがなかった場合、FileExistsUnchangedを返す。上記のループの終わりに、いくつかの変更に直面した場合、Path-inまたは長さのどちらかに対して、戻り値として新しいパスおよび新しい長さと共にFileExistsChangedを返す。
【0063】
DCOにおけるソースファイル名に対する名前マッピングサービスを呼び出すための拡張
データレプリケーションサーバ308は、本明細書に示されかつ説明されるように、固有GSNにおいて行われるファイルシステム動作の詳細をキャッシュするように構成される実行合意キャッシュ309を維持するように構成されてよい。この実行合意キャッシュ309は、1つの実施形態によると、バージョンブリッジサーバ312に名前マッピングサービスを提供して、基礎を成すファイルシステムの現時点の状態への(実行合意キャッシュにおける最高GSNまで)これまでの固有GSNにおけるファイル名のマッピングを要求するように構成されてよい。
【0064】
名前変更/削除の合意が、DCOにおけるデータレプリケーションサーバ310からの取り出し要求がDCO214におけるバージョンブリッジサーバ312に到達する前、間、または後に、データレプリケーションサーバ308によって実行されてよいことに留意されたい。これらの起こり得る事態のそれぞれは、さらには下記に論じられる。
取り出し要求の前のデータレプリケーションによって実行される名前変更/削除の合意
図4は、取り出し要求がRDCから受信される前にソースファイルまたは親パスが名前変更/削除される場合を示すブロック図である。示されるように、(1)は、RDC216におけるデータレプリケーションサーバ310によって出され、かつDCOにおけるバージョンブリッジサーバ312に向けられた取り出し要求を指示する。例えば、データレプリケーションサーバ310は、データが要求されたファイルのファイル名または親ディレクトリが、その最初の書き込みから変更している場合がある可能性に注意して、作成GSN21において、ファイルMapFilename /jagane/hive/foo.tmpの名前マッピングを要求することができる。(2)に示されるように、この取り出し要求を受信したバージョンブリッジサーバ312は、最大GSNがここで(この例において)50である、実行合意キャッシュ309における実行合意に対してデータレプリケーションサーバ308によって実行される、名前マッピングサービスを呼び出す。これに応答して、名前マッピングサービスは、GSN21~50を反復して、GSN21とGSN50との間の介在する時間における/jagane/hive/foo.tmpへの可能な変更についてサーチする。名前マッピングサービスは、この例では、/jagane/hive/foo.tmpが実際は、GSN21~GSN50のあるGSNにおいて、/Jagane/hive/fooに変更されたことを見出す。この情報はさらにまた、バージョンブリッジサーバ312に返され、その後、(/jagane/hive/foo.tmpを読み出す代わりに)分散ファイルシステム316から/Jagane/hive/fooを読み出し、リモートストレージ318へのこの非同期レプリケーションに対して、新しいファイル名およびここに記憶されたデータを、RDCにおけるデータレプリケーションサーバ310に返す。
【0065】
取り出し要求がバージョンブリッジサーバによってサービス提供されている間にデータレプリケーションサーバによって実行される名前変更/削除の合意
図5は、リモート取り出し要求がバージョンブリッジサーバによってサービス提供されている間にソースファイルまたは親パスが名前変更される/削除される場合を示すブロック図である。バージョンブリッジサーバ312がリモート取り出し要求を満たすために基礎を成すストレージ316からファイルを読み出している間はいつでも、データレプリケーションサーバは、取り出し要求の対象であるファイル、または取り出し要求の対象であるファイルの親パスを名前変更/削除する別の合意を実行することができる。この場合、ファイル取り出しは、ファイルが名前変更されているもしくは削除されている、またはパスが変更されているのどちらかを理由に、進行中に失敗することになる。1つの実施形態によると、バージョンブリッジサーバ312は、ソースファイルの名前/パスをマッピングするために名前マッピングサービスを再び呼び出す。名前マッピングサービスからの戻り値は、ファイルが別の名前で存在するかどうか、またはファイルが削除されたかどうかを指示することになる。
【0066】
図5に示されるように、(1)に示されるように、特定ファイルに対する取り出し要求を、RDC216のデータレプリケーションサーバ310は送ることができ、DCO214のバージョンブリッジサーバ312は受信することができる。この例では、取り出し要求は、作成GSN21におけるファイルJagane/hive/foo.tmpに対するものである。(2)に示されるように、DCO214におけるバージョンブリッジサーバ312は、さらにまた、データレプリケーションサーバ308に、GSN32までの実行合意を現時点で記憶している、実行合意キャッシュ309において実行合意のメタデータを含むキャッシュされたエントリに対する名前マッピングサービスを実行するように求める。名前マッピングサービスは、foo.tmpがGSN21から変更されていない(すなわち、名前変更または削除されていない)ことを指示する、/Jagane/hive/foo.tmpの値を返す。(3)に示されるように、DCO214におけるバージョンブリッジサーバ312はさらにまた、この時、依然同じ/Jagane/hive/foo.tmpであるマッピングされたファイル名を読み出すことによって取り出し要求のサービス提供を始める。
【0067】
(4)に示されるように、取り出し要求がサービス提供されている間に、データレプリケーションサーバ308は、/Jagane/hive/foo.tmpを/Jagane/hive/fooに名前変更する合意を実行する。これによって、取り出し要求は、このファイルが名前変更されており、/Jagane/hive/foo.tmpがもはや存在しない際に、バージョンブリッジサーバ312がもはや/Jagane/hive/foo.tmpを読み出し続けることができないため、失敗する。これに応答して、/Jagane/hive/foo.tmpを取り出すための要求をサービス提供しているバージョンブリッジサーバ312は、ここで、データレプリケーションサーバ308に、この時、GSN50までの合意(恐らくGSN32とGSN50との間のどこかで生じた「foo.tmp」から「foo」への名前変更)を記憶する、実行合意キャッシュ309におけるキャッシュされたメタデータに対して/Jagane/hive/foo.tmpに対する名前マッピングサービスを再実行するように求める。名前マッピングサービスはマッピングされた情報/jagane/hive/fooを返す。バージョンブリッジサーバ312は、ここで、マッピングされたファイル/Jagane/hive/fooを読み出すこと、およびこのファイルをRDC216におけるデータレプリケーションサーバ310に提供することによって取り出し要求のサービス提供を続けることができ、これによって、マッピングされたメタデータによってそれ自体の実行合意キャッシュ311を更新し、かつRDC216におけるストレージ318に取り出されたデータを書き込むことになる。
【0068】
リモートサイトからの取り出し要求後にソースファイルまたは親パスが名前変更/削除される
取り出し要求が完了し、その後にのみ、ファイルまたは親パスが名前変更または削除される場合、DCO214およびRDC216両方における実行合意キャッシュがいずれの以前のまたは進行中の取り出し要求とも干渉せずに適当に更新されることになるため、何の措置も講じられない。全てのデータセンタは、これらが同期されているため、それらの対応する実行合意キャッシュを通して名前変更/削除を知ることになる。
【0069】
名前マッピングサービスに対象ファイル名を求めるためのリモートデータセンタにおけるデータレプリケーションサーバ
データレプリケーションサーバは、1つの実施形態によると、データ取り出し、かつ取り出されたデータを非同期的にローカルファイルに書き込むように構成される。このプロセスは、データレプリケーションサーバが書き込んでいるローカルファイルが名前変更または削除される場合に失敗して中断される場合がある。これは、メタデータ動作、すなわち、合意が、データが取り出されかつ書き込まれている間に実行され続けるためである。1つの実装形態によると、この起こり得る事態に対処するために、データレプリケーションサーバの名前マッピングサービスを使用して、宛先ファイルを新しく名前変更されたファイルにマッピングする。リモートデータレプリケーションサーバ310がデータ取り出しをもたらす合意を実行する時、1つの実施形態によると、データレプリケーションコピーオブジェクトが作成され、このデータレプリケーションコピーオブジェクトはGSNと関連付けられる。このGSNは2つの目的で使用される。
1.GSNは、データを取り出している間に、リモートデータレプリケーションサーバからDCO214のバージョンブリッジサーバ312に渡される。
2.GSNは、ローカルファイルへの書き込みが失敗する時名前マッピングサービスに対するパラメータとして使用される。
【0070】
名前変更/削除の合意が、データコピーを行っているスレッドの前、間、または後にデータレプリケーションサーバにおける別のスレッドによって非同期的に実行されてよいことは、留意されたい。
事例1:宛先ファイルまたは親パスはデータコピースレッドが取り出されたデータの書き込みを開始できる前に名前変更および/または削除される。
事例2:宛先ファイルまたは親パスはデータコピースレッドが取り出されたデータを書き込んでいる間に名前変更および/または削除される。
事例3:宛先ファイルまたは親パスはデータコピースレッドが取り出されたデータの書き込みを終了した後に名前変更および/または削除される。これは、実行合意キャッシュにおけるメタデータが同期的に更新されかつリモートに伝達されることになるため、関係がない。
【0071】
上記のように、データレプリケーションコピーオブジェクトは、1つの実施形態によると、データの非同期コピーがRDC216において実装される機構である。データレプリケーションコピーオブジェクトは、それ自体の実行スレッドを有し、このスレッドにメタデータ修正と無関係に起動する能力を与える。よって、データレプリケーションコピーオブジェクト実装によって、同期的メタデータ動作および非同期的データ動作が可能になる。
【0072】
1つの実施形態によると、データレプリケーションコピーオブジェクトが作成される時、データが取り出されるファイルの名前、および、そのようにファイルに名前が付けられたGSN番号が与えられる。これによって、データレプリケーションコピーオブジェクトは2つのことを行うことができる。
1.DCO214からデータを要求する時、RDC216のバージョンブリッジサーバは、データが取り出されるファイル名、およびファイルが呼び出されたGSN両方をもたらす。
2.RDC216のデータレプリケーションサーバがDCO214の分散ファイルシステムから取り出されたデータをRDC216の分散ファイルシステムに書き込む時、1つの実施形態によると、名前マッピングサービスは、ファイル名が変更されたか否かを判断するために、これらの2つのパラメータ、GSNおよびFilenameで呼び出される。すなわち、RDC216におけるクライアントアプリケーション306が、取り出されたデータが書き込まれる前、または取り出されたファイルデータが書き込まれている間にデータへの変更がなされることが可能である。ファイル名が、GSNと、基礎を成すファイルシステムの現時点の状態との間で変更されている場合、データレプリケーションサーバ310は、ファイルが、RDC216における実行合意キャッシュ311からのメタデータを使用して基礎を成すファイルシステムの現時点の状態において名前が付けられるように該ファイルに書き込まれることになる。
【0073】
それぞれのデータセンタにおける実行合意キャッシュが揮発性ランダムアクセスメモリ(例えば、ダイナミックランダムアクセスメモリ(DRAM))において実装されてよいため、電力不足発生時、または、結合されるデータレプリケーションサーバの障害発生時にそのデータは失われやすい。このような実装形態では、データレプリケーションサーバの障害発生時に、新しく選ばれた書き込み部は、空の実行合意キャッシュから始まることになり、異常に多数のErroExecutedAgreementCacheGarbageCollectedを返す場合がある。しかしながら、1つの実施形態によると、実行合意キャッシュは、例えば、書き込み部の障害/再選択の場合などに必要に応じて、(実行合意キャッシュを不揮発性メモリにおいて存続させた最後の時点で)少なくとも部分的に回復されることが可能になる。不揮発性ストレージは、ストレージ316および/または318の一部である、またはそれ自体専用の不揮発性メモリである。
【0074】
1つの実施形態によると、ファイル名および/またはパスが変更され、かつ非整合になる時、レプリケートされたフォルダ全体は非整合であり信用できないとマーキングされる場合がある。別の実施形態によると、非整合になったファイル/ファルダは、不揮発性メモリにおいて存続させてよく、これによって、非整合である特定のサブディレクトリのみが本明細書に詳述されるように修復されることが可能である。
【0075】
別の実施形態によると、データを取り出すリモートデータセンタは、レプリケート元データセンタからデータを必ずしも取り出すことを必要とするわけではない。分散ファイルシステムにおけるデータの1コピー等価性の性質の場合は、RDC216は、別のデータセンタ(すなわち、DCO214以外)と接触し、かつ他のデータセンタから同じデータを要求する(取り出す)ことができる。これは、負荷分散、帯域幅管理、障害復旧、および新しいデータセンタをオンラインにすることなどを含むさまざまな理由で行われてよい。
【0076】
図6は、1つの実施形態による、分散ファイルシステムにおいてレプリケートされたフォルダの整合性を維持するコンピュータ実施方法のフローチャートである。分散ファイルシステムは、コンピュータネットワーク上で、(少なくとも)1つの第1のデータセンタおよび第2のデータセンタに及んでよい。該方法は、ブロックB61に示されるように、第1のデータセンタにおいて、および第1のデータセンタにおけるアプリケーションクライアントの代わりに、レプリケートされたフォルダにおけるファイル、および合意済み提案と関連付けられたGSNを作成するために合意済み提案を受信することを含んでよい。ブロックB62は、第1のデータセンタ(
図3における214)における(例えば、
図3における308で示される)第1のデータレプリケーションサーバに結合された(例えば、
図3における309で示される)第1の実行合意キャッシュにおいて、作成されるファイルのメタデータ、および合意済み提案と関連付けられたGSNを記憶することを求める。その後、B63に示されるように、メタデータおよび関連付けられたGSNは、(
図3における参照番号216で示される)第2のデータセンタにおける第2のデータレプリケーションサーバ(
図3における310)に結合される第2の実行合意キャッシュ(
図3における311)に同期的に記憶されてよい。ファイルはさらにまた、B64に示されるように、アプリケーションクライアント(
図3における304)の代わりに第1のデータセンタにおける第1のデータレプリケーションサーバによってストレージにおいて(例えば、
図3におけるストレージ316において)作成されてよい。クライアントアプリケーションは、次いで、ブロックB65に見られるように、第1のデータセンタにおけるストレージにおいて作成済みファイルにデータを書き込んでよい。
【0077】
コンピュータ実施方法は、ブロックB66に示されるように、ファイルへの変更に対する提案が合意済みである際に同期されかつ最新であるように実行合意キャッシュを保持することをさらに含んでよい。実際は、ファイルのファイル名、パス、またはデータを変更するために第1のデータセンタにおいて受信された、任意の合意済み提案に対応する、更新されたメタデータおよび関連付けられたGSNは、第1の実行合意キャッシュに記憶されてよく、第2の実行合意キャッシュにおける、更新されたメタデータおよび関連付けられたGSNはまた、第2のデータセンタに同期的に記憶されてよい。同様に、ファイルのファイル名、パス、またはデータを変更するために第2のデータセンタにおいて受信された、任意の合意済み提案に対応する、更新されたメタデータおよび関連付けられたGSNは、第2の実行合意キャッシュに記憶されてよく、更新されたメタデータおよび関連付けられたGSNは、第1の実行合意キャッシュに同期的に記憶されてよい。
【0078】
図7において、ブロックB71は、ファイルのデータに対する第2のデータセンタからの要求(本明細書ではデータ取り出し要求とも称される)を受信することを求める。この要求は、データが要求されるファイルの作成についての合意と関連付けられた少なくとも1つの作成GSNを含む。ブロックB72は、要求の受信に応答して、データが要求されるファイルの作成GSNより大きい(例えば、より最近の合意済み提案を代表する)GSNと関連付けられるファイルの更新されたメタデータに対する第1の実行合意キャッシュにおけるエントリをサーチすることを求める。これによって、取り出し要求が開始されてからなされたファイルへのいずれの変更もキャプチャされることになる。第1の実行合意キャッシュのエントリをサーチした後、ブロックB73は、サーチすることによって更新されたメタデータが見つからなかった場合要求において受信されたメタデータに対応するデータを読み出すこと、および、サーチすることによって更新されたメタデータが見つけられた場合更新されたメタデータに対応するデータを読み出すことを特定する。読み出されたデータはさらにまた、B74に示されるように、ファイルのデータに対する第2のデータセンタからの受信された要求に応じて提供されてよい。
【0079】
図8において、第2の実行合意キャッシュにおけるエントリは、B81に示されるように、更新されたメタデータと関連付けられたGSNより大きいGSNと関連付けられるファイルのメタデータに対してサーチされてよい。B82に示されるように、第2の実行合意キャッシュのエントリをサーチした後、B83に示されるように、第2の実行合意キャッシュをサーチすることによって更新されたメタデータが見つからなかった(ファイルへの介在する変更がなされなかった)場合、提供されたデータは第2のデータセンタにおけるストレージに書き込まれてよく、および、第2の実行合意キャッシュにおいて更新されたメタデータを見つけることから明らかなように、B84に示されるように、第2の実行合意キャッシュをサーチすることによって更新されたメタデータが見つかった(ファイルへの介在する変更がなされた)場合、第2の実行合意キャッシュにおいて見つけられたメタデータに対応するデータを読み出し、かつ第2のデータセンタにおけるストレージに読み出されたデータを書き込んでよい。
【0080】
1つの実施形態によると、サーチすることは、名前マッピングサービスAPIを実行することによって実施されてよい。第1の実行合意キャッシュおよび第2の実行合意キャッシュの少なくとも一部分は、それぞれ、第1のデータセンタおよび第2のデータセンタにおける不揮発性メモリにおいてジャーナリング(すなわち、存続)されてよい。実行合意キャッシュが再構築される必要がある場合、不揮発性メモリにおけるこのバージョンは検索されてよく、必要に応じてガベージコレクションが行われてよく、現時点の合意のGSNに更新されてよい。別の実施形態によると、実行合意キャッシュは、揮発性メモリにジャーナリングされず、必要に応じて単にスクラッチから再構築される。
【0081】
コンピュータ実施方法の別の実施形態は、第1のデータセンタにおける第1の実行合意キャッシュを提供しかつ第2のデータセンタにおける第2の実行合意キャッシュを提供することと、第1のデータセンタおよび第2のデータセンタに記憶されたファイルへの変更を作成するまたは行うための提案についての合意を受信することと、第1の実行合意キャッシュおよび第2の実行合意キャッシュのうちの1つにおいて受信した合意によって参照されるファイルのメタデータを記憶することと、受信した合意によって参照されるファイルが作成または変更される前に互いに同期する第1の実行合意キャッシュおよび第2の実行合意キャッシュを維持することと、第1の合意キャッシュおよび第2の実行合意キャッシュが同期された後にのみ受信した合意によって参照されるファイルへの変更を作成するまたは行うことと、第1のデータセンタまたは第2のデータセンタに記憶されたファイルのデータに対する要求が第1のデータセンタまたは第2のデータセンタのどちらかにおいて受信されるかどうか、更新されたメタデータに対する第1の実行合意キャッシュおよび第2の実行合意キャッシュのうちの少なくとも1つをチェックし、受信した要求に応答して、更新されたメタデータが見つけられた時に更新されたメタデータに対応するデータを提供することと、を含んでよい。
【0082】
GSNはそれぞれの合意と関連付けられてよく、それぞれの合意のGSNは、第1の実行合意キャッシュおよび第2の実行合意キャッシュにおけるメタデータと共に記憶されてよい。更新されたメタデータについてチェックすることまたはサーチすることは、更新されたメタデータと関連付けられたGSNを使用してファイルの更新されたメタデータに対して第1の実行合意キャッシュおよび/または第2の実行合意キャッシュにおけるエントリをサーチすることによって実行されてよい。チェックすることまたはサーチすることは、名前マッピングサービスに第1の実行合意キャッシュにおけるエントリを求める第1のデータレプリケーションサーバによって第1のデータセンタにおいて行われてよく、チェックすることまたはサーチすることは、名前マッピングサービスに第2の実行合意キャッシュにおけるエントリを求める第2のデータレプリケーションサーバによって第2のデータセンタにおいて行われてよい。
【0083】
データに対する要求は、第1のデータレプリケーションサーバが、名前マッピングサービスに、要求されたデータに対応する更新されたメタデータに対して第1の実行合意キャッシュをチェックすることを求めるようにするように構成される第1のバージョンブリッジサーバにおいて第1のデータセンタで受信されてよい。同様に、データに対する要求は、第2のデータレプリケーションサーバが、名前マッピングサービスに、要求されたデータに対応する更新されたメタデータに対して第2の実行合意キャッシュをチェックすることを求めるようにするように構成される第2のバージョンブリッジサーバにおいて第2のデータセンタで受信されてよい。データに対する要求をサービス提供することは、第1のバージョンブリッジサーバが、更新されたメタデータが第1の実行合意キャッシュにおいて見つけられた時に更新されたメタデータに対応するデータを検索しかつ提供することによって実行されてよい。同様に、データに対する要求をサービス提供することは、第2のバージョンブリッジサーバが、更新されたメタデータが第2の実行合意キャッシュにおいて見つけられた時に更新されたメタデータに対応するデータを検索しかつ提供することによって実行されてよい。このように、第2のデータセンタに記憶されるデータに対する第1のデータセンタにおける第1のデータレプリケーションサーバによって出される全ての要求は、第2のデータセンタにおける第2のバージョンブリッジサーバによってサービス提供されてよく、第1のデータセンタに記憶されるデータに対する第2のデータセンタにおける第2のデータレプリケーションサーバによって出される全ての要求は、第1のデータセンタにおける第1のバージョンブリッジサーバによってサービス提供されてよい。
【0084】
図9は、コンピューティングデバイス900のブロック図を示し、この実施形態は実装可能である。
コンピューティングデバイス900は、情報を通信するためのバス901または他の通信機構、および情報を処理するためにバス901と結合される1つまたは複数のプロセッサ902を含んでよい。
コンピューティングデバイス900は、プロセッサ(複数可)902によって実行される情報および命令を記憶するためにバス901に結合される、ランダムアクセスメモリ(RAM)または他の動的記憶デバイス904(メインメモリと称される)をさらに含む。メインメモリ904はまた、プロセッサ902による命令の実行中に一時的な変数または他の中間情報を記憶するために使用されてよい。コンピューティングデバイス900は、プロセッサ902に対する静的情報および命令を記憶するためにバス901に結合される、読み出し専用メモリ(ROM)および/または他の静的記憶デバイス906を含んでもよい。例えば、磁気ディスクまたはフラッシュストレージなどの非一時的な有形データ記憶デバイス907は、情報および命令を記憶するためにバス901に結合されてよい。非一時的な有形データ記憶デバイスは、プロセッサ902によって実行される時、コンピューティングデバイスに、本明細書に説明されかつ示される実施形態の1つまたは複数を実行させる、コンピュータ可読命令を記憶するように構成されてよい。コンピューティングデバイス900はまた、コンピュータユーザに情報を表示するためにバス901を介してディスプレイデバイス910に結合されてよい。英数字キーおよび他のキーを含む英数字入力デバイス922は、情報およびコマンド選択をプロセッサ(複数可)902に通信するためにバス901に結合されてよい。別のタイプのユーザ入力デバイスは、方向情報およびコマンド選択をプロセッサ902に通信し、かつディスプレイ
デバイス910上のカーソル移動を制御するための、マウス、トラックボール、またはカーソル方向キーなどのカーソル制御923である。コンピューティングデバイス900は、通信デバイス(例えば、モデム、NIC)を介してネットワーク926に、および分散コンピューティングシステムの1つまたは複数のノードに結合されてよい。
【0085】
実施形態は、コンピュータネットワーク上でデータセンタにわたってメタデータおよびデータの整合性を維持するためのコンピューティングデバイスの使用、および/または複数のこのようなコンピューティングデバイスに関連している。1つの実施形態によると、本明細書に説明される方法およびシステムは、プロセッサ(複数可)902がメモリ904に含有される命令のシーケンスを実行することに応じて、1つまたは複数のコンピューティングデバイス900によって提供されてよい。このような命令は、データ記憶デバイス907など、別のコンピュータ可読媒体からメモリ904内に読み出されてよい。メモリ904に含有される命令のシーケンスの実行によって、プロセッサ(複数可)902は、ステップを行い、かつ本明細書に説明される機能を有する。代替的な実施形態では、ハードワイヤード回路は、本発明を実装するためにソフトウェア命令の代わりにまたはこれと組み合わせて使用されてよい。よって、本発明は、ハードウェア回路およびソフトウェアの任意の特定の組み合わせに限定されない。実際は、任意の適したコンピューティングデバイスが本明細書に説明される機能性を実装することができることは、当業者には理解されるべきである。コンピューティングデバイスは、所望の機能を実行するために機能する1つまたは複数のマイクロプロセッサを含んでよい。1つの実施形態では、マイクロプロセッサ(単数または複数)によって実行される命令は、マイクロプロセッサ(複数可)に本明細書に説明されるステップを行わせるように動作可能である。命令は、任意のコンピュータ可読媒体に記憶可能である。1つの実施形態では、該命令は、マイクロプロセッサに外付けされる不揮発性半導体メモリ上に記憶されてよい、または、マイクロプロセッサと一体化されてよい。別の実施形態では、命令は、ディスク上に記憶され、かつマイクロプロセッサによる実行前に揮発性半導体メモリに読み込まれてよい。
【0086】
上述されたさまざまな特徴およびプロセスは、互い無関係に使用されてよい、またはさまざまなやり方で組み合わせられてよい。ある特定の例示の実施形態が説明されているが、これらの実施形態は、例としてのみ提示されており、本明細書に開示される発明の範囲を限定することを意図するものではない。よって、前述の説明において、任意の特定の特徴、特性、ステップ、モジュール、またはブロックが必要であるまたは不可欠であることを含意することは意図されていない。実際は、本明細書に説明される新規の方法およびシステムはさまざまな他の形式で具現化可能であり、さらに、本明細書に開示される実施形態の趣旨から逸脱することなく、本明細書に説明される方法およびシステムの形式におけるさまざまな省略、置き換え、および変更がなされてよい。