IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヒタチ ヴァンタラ エルエルシーの特許一覧

<>
  • 特許-ハイブリッドクラウド非同期データ同期 図1
  • 特許-ハイブリッドクラウド非同期データ同期 図2
  • 特許-ハイブリッドクラウド非同期データ同期 図3
  • 特許-ハイブリッドクラウド非同期データ同期 図4
  • 特許-ハイブリッドクラウド非同期データ同期 図5
  • 特許-ハイブリッドクラウド非同期データ同期 図6
  • 特許-ハイブリッドクラウド非同期データ同期 図7
  • 特許-ハイブリッドクラウド非同期データ同期 図8
  • 特許-ハイブリッドクラウド非同期データ同期 図9
  • 特許-ハイブリッドクラウド非同期データ同期 図10
  • 特許-ハイブリッドクラウド非同期データ同期 図11
  • 特許-ハイブリッドクラウド非同期データ同期 図12
  • 特許-ハイブリッドクラウド非同期データ同期 図13
  • 特許-ハイブリッドクラウド非同期データ同期 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-07
(45)【発行日】2024-03-15
(54)【発明の名称】ハイブリッドクラウド非同期データ同期
(51)【国際特許分類】
   G06F 16/178 20190101AFI20240308BHJP
【FI】
G06F16/178
【請求項の数】 15
(21)【出願番号】P 2022539394
(86)(22)【出願日】2019-12-27
(65)【公表番号】
(43)【公表日】2023-03-10
(86)【国際出願番号】 US2019068667
(87)【国際公開番号】W WO2021133406
(87)【国際公開日】2021-07-01
【審査請求日】2022-07-21
(73)【特許権者】
【識別番号】520155228
【氏名又は名称】ヒタチ ヴァンタラ エルエルシー
(74)【代理人】
【識別番号】110000279
【氏名又は名称】弁理士法人ウィルフォート国際特許事務所
(72)【発明者】
【氏名】マンジャナサ, ソウミャ
(72)【発明者】
【氏名】シュロフ, アヌジュ
【審査官】酒井 恭信
(56)【参考文献】
【文献】特表2020-506461(JP,A)
【文献】特開2006-085324(JP,A)
【文献】特開2005-055948(JP,A)
【文献】特開2012-098923(JP,A)
【文献】特開2017-134539(JP,A)
【文献】特開2008-204301(JP,A)
【文献】国際公開第2008/126324(WO,A1)
【文献】米国特許出願公開第2013/0254320(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/10 - 16/188
G06F 3/06
(57)【特許請求の範囲】
【請求項1】
ネットワーク上で複数のネットワークストレージシステムと通信可能な第1演算装置を含むシステムであって、
第1ネットワークストレージシステムは、第1ストレージプロトコルを採用する第1サービスプロバイダにより提供され、第2ネットワークストレージシステムは、前記第1ストレージプロトコルと異なる第2ストレージプロトコルを採用する第2サービスプロバイダにより提供され、前記第1演算装置は処理を実行し、
前記処理は、
前記第1演算装置においてユーザデバイスから第1オブジェクトを受信することと、
前記第1オブジェクトに関して、前記第1ネットワークストレージシステムの第1リモートバケット及び前記第2ネットワークストレージシステムの第2リモートバケットを決定することと、
前記第1オブジェクトを前記第1リモートバケット及び前記第2リモートバケットと同期させるために第1待ち行列へ同期イベントを追加することと;
前記第1待ち行列から前記同期イベントを消費することに基づいて、前記第1オブジェクトのデータ及びメタデータを前記第1ストレージプロトコルに従って前記第1リモートバケットへ複製するとともに、前記第1オブジェクトのデータ及びメタデータを前記第2ストレージプロトコルに従って前記第2リモートバケットへ複製することと、を含む、システム。
【請求項2】
前記処理は、
第2待ち行列を生成することであって、前記第2待ち行列はデータを前記第1ネットワークストレージシステム及び前記第2ネットワークストレージシステムから前記第1演算装置へデータを同期させるための同期イベントを維持する、生成することと、
前記第1演算装置から前記第1ネットワークストレージシステム及び前記第2ネットワークストレージシステムへデータを同期させるための同期イベントを前記第1待ち行列に維持することと、をさらに含む、請求項1に記載のシステム。
【請求項3】
前記処理は、
前記第1ネットワークストレージシステムにおいて同期のためのデータの指示の発行を受信することと、
前記発行に基づいて同期イベントを前記第2待ち行列へ追加することと;
前記第2待ち行列の前記同期イベントに基づいて、前記第1ネットワークストレージシステムからの前記データを複製することと、を含む、請求項2に記載のシステム。
【請求項4】
前記第2待ち行列は同期イベントとして、前記第1ネットワークストレージシステムからの複製のためのデータの指示を受信し、
前記処理は、
前記第1ネットワークストレージシステムから前記第1演算装置のローカルストレージへ前記データを複製することをさらに含む、請求項2に記載のシステム。
【請求項5】
前記第1ネットワークストレージシステムは前記第1ネットワークストレージシステムにおいて待ち行列を生成し、前記処理は、
前記第1ネットワークストレージシステムの前記待ち行列から同期イベントを消費することと、
前記同期イベントに基づいて、前記第1ネットワークストレージシステムから前記第1演算装置へデータを複製することと、をさらに含む、請求項1に記載のシステム。
【請求項6】
前記処理は、
前記第1リモートバケット又は前記第2リモートバケットのうちの少なくとも1つへ関連付けられたフィルタを決定することと、
前記フィルタが前記第1オブジェクトへ適用されないということを決定したことに基づいて、前記データ及びメタデータを複製することと、を含む、請求項1に記載のシステム。
【請求項7】
前記フィルタは、前記第1リモートバケット又は前記第2リモートバケットのうちの少なくとも1つへの複製を制限するためにオブジェクト名又はオブジェクトメタデータのうちの少なくとも1つを対象とされている、請求項6に記載のシステム。
【請求項8】
前記処理は、
前記第1演算装置において第2オブジェクトを受信することと、
前記第2オブジェクトに関連付けられたサイズ及び前記第2オブジェクトのデータ及び/又はメタデータに基づくコンテンツハッシュが前記第1オブジェクトに関連付けられたサイズ及び前記第1オブジェクトのデータ及び/又はメタデータに基づくコンテンツハッシュに合致するかを判定することと、
前記第2オブジェクトのメタデータを前記第1リモートバケット及び前記第2リモートバケットへ複製し、前記第2オブジェクトのデータの代わりに前記第1オブジェクトへのリンクを示すことと、をさらに含む、請求項1に記載のシステム。
【請求項9】
前記処理は、
前記第1リモートバケット及び前記第2リモートバケットを決定することに基づいて、第1認証証明書を前記第1ネットワークストレージシステムへ提供し、第2認証証明書を前記第2ネットワークストレージシステムへ提供することをさらに含み、前記第1認証証明書は前記第2認証証明書と異なる、請求項1に記載のシステム。
【請求項10】
前記処理は、
前記第1演算装置でポリシーエンジンプログラムを実行することをさらに含み、前記ポリシーエンジンプログラムは前記第1演算装置を、
前記第1待ち行列から前記同期イベントを消費し、
前記第1オブジェクトを前記第1リモートバケットへ複製するために使用する第1ストレージプロトコルと、前記第1オブジェクトを前記第2リモートバケットへ複製するために使用する第2ストレージプロトコルとを決定するように構成する、請求項1に記載のシステム。
【請求項11】
前記処理は、
前記第1オブジェクトを受信することに応答して、前記第1オブジェクトのデータをローカルストレージにリアルタイムで格納することと、
前記第1オブジェクトのソースへリアルタイムで応答を送信することと、
その後、前記第1オブジェクトを前記第1ネットワークストレージシステム及び前記第2ネットワークストレージシステムへ非同期に複製することと、をさらに含む、請求項1に記載のシステム。
【請求項12】
ネットワーク上で複数のネットワークストレージシステムと通信することができる第1演算装置によりユーザデバイスから第1オブジェクトを受信することであって、第1ネットワークストレージシステムが、第1ストレージプロトコルを採用する第1サービスプロバイダにより提供され、第2ネットワークストレージシステムが、前記第1ストレージプロトコルと異なる第2ストレージプロトコルを採用する第2サービスプロバイダにより提供される、受信することと、
前記第1オブジェクトに関して、前記第1演算装置により、前記第1ネットワークストレージシステムの第1リモートバケット及び前記第2ネットワークストレージシステムの第2リモートバケットを決定することと、
前記第1演算装置により、前記第1オブジェクトを前記第1リモートバケット及び前記第2リモートバケットへ複製するために第1待ち行列へ同期イベントを追加することと、
前記第1待ち行列からの前記同期イベントを消費することに基づいて、前記第1演算装置により前記第1オブジェクトのデータ及びメタデータを前記第1ストレージプロトコルに従って前記第1リモートバケットへ複製するとともに、前記第1オブジェクトのデータ及びメタデータを前記第2ストレージプロトコルに従って前記第2リモートバケットへ複製することと、を含む、方法。
【請求項13】
前記第1ネットワークストレージシステム及び前記第2ネットワークストレージシステムから前記第1演算装置にデータを同期させるための同期イベントを維持する第2待ち行列を生成することと、
前記第1演算装置から前記第1ネットワークストレージシステム及び前記第2ネットワークストレージシステムへデータ同期させるための同期イベントを前記第1待ち行列内に維持することと、をさらに含む請求項12に記載の方法。
【請求項14】
第1演算装置の1又は複数の第1プロセッサに処理を実行させる命令を格納する1又は複数の非一時的コンピュータ可読記録媒体であって、
前記処理は、
ネットワーク上で複数のネットワークストレージシステムと通信することができる第1演算装置によりユーザデバイスから第1オブジェクトを受信することであって、第1ネットワークストレージシステムが、第1ストレージプロトコルを採用する第1サービスプロバイダにより提供され、第2ネットワークストレージシステムが、前記第1ストレージプロトコルと異なる第2ストレージプロトコルを採用する第2サービスプロバイダにより提供される、受信することと、
前記第1オブジェクトに関して、前記第1演算装置により、前記第1ネットワークストレージシステムの第1リモートバケット及び前記第2ネットワークストレージシステムの第2リモートバケットを決定することと、
前記第1演算装置により、前記第1オブジェクトを前記第1リモートバケット及び前記第2リモートバケットへ複製するために第1待ち行列へ同期イベントを追加することと、
前記同期イベントを前記第1待ち行列から消費することに基づいて、前記第1演算装置により、前記第1オブジェクトのデータ及びメタデータを前記第1ストレージプロトコルに従って前記第1リモートバケットへ複製するとともに、前記第1オブジェクトのデータ及びメタデータを前記第2ストレージプロトコルに従って前記第2リモートバケットへ複製することと、
を含む、1又は複数の非一時的コンピュータ可読記録媒体。
【請求項15】
前記処理は、
前記第1ネットワークストレージシステム及び前記第2ネットワークストレージシステムから前記第1演算装置へデータを同期させるための同期イベントを維持する第2待ち行列を生成することと、
前記第1演算装置から前記第1ネットワークストレージシステム及び前記第2ネットワークストレージシステムへデータを同期させるための同期イベントを前記第1待ち行列に維持することと、をさらに含む、請求項14に記載の1又は複数の非一時的コンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示はデータストレージの技術分野に関する。
【背景技術】
【0002】
ハイブリッドクラウドシステムにわたってデータを同期させることは、クラウドの様々なストレージサービスにわたるバックアップ及びデータ移動を可能にすることなどにより費用管理の柔軟性をストレージユーザへ提供する最近の概念である。例えば、ハイブリッドクラウドシステムでは、多種多様なサービス提供事業体のネットワークストレージ提供がデータを格納及び同期するために採用され得る。しかし、これらのシステムのそれぞれにおいて使用されるソフトウェアスタックが様々な事業体により構成され且つ制御されそして、複製に固有な変更は様々なシステムのすべてにおいて望まれるようには必ずしも機能するとはかぎらないので、データを複数の異種システムにわたって同期させることは困難である。
【発明の概要】
【課題を解決するための手段】
【0003】
いくつかの実装形態は、ネットワーク上で複数のネットワークストレージシステムと通信することが可能な演算装置を含む。例えば、第1ネットワークストレージシステムは第1ストレージプロトコルを採用する第1サービスプロバイダにより提供されてもよく、第2ネットワークストレージシステムは第1ストレージプロトコルと異なる第2ストレージプロトコルを採用する第2サービスプロバイダにより提供されてもよい。演算装置は、第1オブジェクトを受信してもよく、第1オブジェクトに関して、第1ネットワークストレージシステムの第1リモートバケット及び第2ネットワークストレージシステムの第2リモートバケットを決定してもよい。演算装置は、第1オブジェクトを第1リモートバケット及び第2リモートバケットへ複製するために待ち行列へ同期イベントを追加してもよい。待ち行列から同期イベントを消費することに基づいて、演算装置は第1オブジェクトのデータ及びメタデータを第1リモートバケット及び第2リモートバケットへ複製する。
【図面の簡単な説明】
【0004】
詳細説明は添付図面を参照して記載される。図面において、参照番号の最も左側の桁は参照番号が初めて出現する図を識別する。異なる図内の同じ参照番号の使用は、同様又は同一アイテム又は特徴を示している。
【0005】
図1図1は、いくつかの実装形態に係るデータ及びメタデータを複数の異種のストレージシステムへ格納することができるシステムのアーキテクチャ例を示す。
【0006】
図2図2は、いくつかの実装形態に係るシステムにおいてsync-toを行うための論理構成例を示すブロック図である。
【0007】
図3図3は、いくつかの実装形態に係るシステムにおいてsync-from同期の実行例を示すブロック図である。
【0008】
図4図4は、いくつかの実装形態に係る擬似コードの例を示す図である。
【0009】
図5図5は、いくつかの実装形態に係る擬似コードの例を示す図である。
【0010】
図6図6は、いくつかの実装形態によるローカルシステムオブジェクトバージョンのデータ構造例を示す。
【0011】
図7図7は、いくつかの実装形態に係るネットワークストレージシステムオブジェクトバージョンのデータ構造例を示す。
【0012】
図8図8は、いくつかの実装形態に係る複製のバージョン管理例を示す。
【0013】
図9図9は、いくつかの実装形態に係る複製のバージョン管理例を示す。
【0014】
図10図10は、いくつかの実装形態に係るフィルタをバケット複製へ適用する例を示す。
【0015】
図11図11は、いくつかの実装形態に係るフィルタをバケット複製へ適用する例を示す。
【0016】
図12図12は、いくつかの実装形態に係るsync-to処理の流れ図を示す。
【0017】
図13図13は、いくつかの実装形態に係るsync-from処理の流れ図を示す。
【0018】
図14図14は、本明細書において説明されるシステムの機能性の少なくともいくつかを実装するのに使用されてもよいサービス演算装置(群)の選択されたコンポーネント例を示す。
【発明を実施するための形態】
【0019】
本明細書におけるいくつかの実装形態は、データを同期させるための(データをバックアップする、データを複製する、データを検索する等々のための)ターゲットとして複数の異なるやり方で構成されたネットワークストレージシステムを活用することができるハイブリッドクラウドインフラストラクチャを含む分散コンピュータシステムのための技術及び配置へ向けられる。例えば、複数の異種ネットワークストレージシステムは、複数の異なるクラウドストレージプロバイダにより提供されるより広範なサービスをユーザが活用することを可能にする。本明細書における実装は、データセキュリティを保証するためにユーザデータをシームレスに同期し、且つ同期グループ化制御を提供するための機構を使用することにより、異種の複数のストレージサービスプロバイダにわたるデータ同期ターゲットを支援してもよい。したがって、本明細書における実装は、商用利用可能なクラウドストレージ、専有のクラウドストレージ、私的広域ネットワークストレージ、ローカルストレージ、及びそれらの任意の組み合せを含み得る異種ネットワークベースのストレージシステムにわたるユーザデータの1対多の同期を支援してもよい。
【0020】
加えて、1対多の異種同期を実現するために、いくつかの例は、データを複製するためのS3ベースのプロトコルAPIなどの、基本的な複製又はデータコピー機構を提供し得る1又は複数のオープンスタンダードアプリケーションプログラムインターフェース(API:application programming interface)の使用を含む。それにもかかわらず、従来のAPIはコピーの効率と精度とに相違を残す。例えば、従来のAPIは、いくつかのデータ管理目的のための正確なデータコピーに加えて望ましい、正確なメタデータコピーを提供することができないかもしれない。基本的なデータコピーを使用することに加えて、本明細書におけるいくつかの例はまた、関連データと共にメタデータの精度を維持するための正確なメタデータ更新を保証するのを助けるためにデータバージョン管理及び特定イベント起動を採用する。加えて、本明細書における実装は、リモート側のバケット又は他のコンテナのための通知機構を含んでもよい。さらに、いくつかのケースでは、解決能力は、効率的且つ正確なデータ管理の解決策を提供するためにすべてのシステム上の異なるサービスを活用することにより拡張されてもよい。
【0021】
本明細書におけるいくつかの例は、複数のリモートパブリッククラウドストレージシステム及び/又は私的クラウドストレージシステムと通信している専有ローカルストレージシステムを含むハイブリッドアーキテクチャを支援してもよい。さらに、本明細書における実装は、様々な異なるプロバイダからの様々な異なるソフトウェアスタックを実行するハイブリッドクラウドシステムにわたる多方向の複製を行うための新規な取り組みを提供してもよい。
【0022】
同じソフトウェアスタックを実行しない複数の異なるプロバイダシステムにわたっての同期を可能にするために、本明細書におけるいくつかの例は、すべての通信がオープン標準APIを使用することにより実行されることを保証する。加えて、情報の交換はオープン標準メッセージングプロトコルに固執してもよい。さらに、いくつかのケースでは、すべてのタイプのネットワークストレージシステムがすべての様々なタイプのシステムのための識別子管理の連合を許容するとは限らないので、複数の異なるシステムは別々に認証され得てもよい。加えて、本明細書におけるいくつかの例は、リモートシステムへの更新の量又は頻度を限定してもよく、最適化性能のためのコンテンツの転送を低減してもよい。
【0023】
加えて、異なるネットワークストレージシステムは、可変応答時間データを受信、格納、及び/又は提供するために可変応答時間により、異なる速度で動作してもよい。したがって、本明細書におけるいくつかの例は、例えば複数の共同ネットワークドメインにアクセスするための柔軟な制御をシステム管理者に提供するため等のように、様々なネットワークストレージシステムにわたり通信を制御するための極めて細かい粒度の許可レベル又は役割を提供してもよい。
【0024】
論述目的のために、いくつかの実装例は、データ及びメタデータの格納を管理するための様々なストレージプロバイダからの複数の異なるネットワークストレージシステムと通信する1又は複数のサービス演算装置の環境において説明される。しかし、本明細書における実装は、提供される特定例へ制限されることはなく、本明細書の開示に照らし当業者に明らかになるように、他のタイプのコンピューティングシステムアーキテクチャ、他のタイプのストレージ環境、他のストレージプロバイダ、他のタイプのクライアント構成、他のタイプのデータ等々へ拡張されてもよい。
【0025】
図1は、いくつかの実装形態に係るデータ及びメタデータを複数の異種のストレージシステムに格納することができるシステム100のアーキテクチャ例を示す。システム100は、1又は複数のネットワーク106などを介して、例えば第1プロバイダネットワークストレージシステム104(1)、第2プロバイダネットワークストレージシステム104(2)、第3プロバイダネットワークストレージシステム104(3)、第4プロバイダネットワークストレージシステム104(4)等の複数のネットワークストレージシステムと通信することができる又は接続されている複数のサービス演算装置102を含む。上述のように、ネットワークストレージシステムの各プロバイダは、他のプロバイダと無関係な異なる事業体であってもよい。商用ネットワークストレージプロバイダの例としては、いくつかを挙げるとAMAZON WEB SERVICES、MICROSOFT AZURE、GOOGLE CLOUD、IBM CLOUD、及びORACLE CLOUDを含む。ネットワークストレージシステム104(1)~104(4)は、いくつかの例では「クラウドストレージ」又は「クラウドベースストレージ」と表されてもよく、いくつかのケースではサービス演算装置102で利用可能であるローカルストレージよりもギガバイトあたりの低コストのストレージ解決策を可能にしてもよい。加えて、いくつかの例では、ストレージプロバイダは、代替的に特定ユーザ、事業体等だけにアクセスを提供するためなどの、サービス演算装置102に関連付けられた私的又は専有のストレージプロバイダであってもよい。専有のシステムの例は、HITACHI CONTENT PLATFORMの構成を含んでもよい。
【0026】
さらに、サービス演算装置102はネットワーク(群)106上で1又は複数のユーザコンピューティングデバイス108及び1又は複数の管理者コンピューティングデバイス110と通信することができる。ユーザデバイス108及び管理者デバイス110は、以下に追加的に論述されるような様々なタイプのコンピューティングデバイスのうちの任意のものであってもよい。
【0027】
いくつかの例では、サービス演算装置102は任意数の方法で具現化され得る1又は複数のサーバを含んでもよい。例えば、サービス演算装置102のプログラム、他の機能コンポーネント、及びデータストレージの少なくとも一部は、例えばサーバのクラスタ、サーバファーム、データセンター、クラウドでホストされるコンピューティングサービス等の少なくとも1つのサーバ上に実装されてもよいが、他のコンピュータアーキテクチャは追加的に又は代替的に使用されてもよい。サービス演算装置102の追加詳細は図14に関して以下に論述される。
【0028】
1又は複数のネットワーク106は、インターネットなどの広域ネットワーク;イントラネットなどのローカルエリアネットワーク(LAN);セルラーネットワーク、Wi-Fiなどのローカル無線ネットワーク、及び/又はBLUETOOTH(登録商標)などの短距離無線通信などの無線ネットワーク;ファイバチャネル、光ファイバ、イーサーネット、又は任意の他のこのようなネットワーク、直接有線接続、又はそれらの任意の組み合せ含む有線ネットワークを含む任意の好適なネットワークを含んでもよい。したがって、1又は複数のネットワーク106は有線及び/又は無線通信技術の両方を含んでもよい。このような通信に使用されるコンポーネントはネットワークのタイプ、選択される環境、又はその両方に少なくとも部分的に依存してもよい。このようなネットワーク上で通信するためのプロトコルは周知であり、本明細書では詳細には論述されない。したがって、サービス演算装置102、ネットワークストレージシステム104、ユーザデバイス108、及び管理デバイス110は、有線又は無線接続及びそれらの組み合わせを使用して、1又は複数のネットワーク106上で通信することができる。
【0029】
加えて、サービス演算装置102は1又は複数のネットワーク107上で互いに通信できてもよい。いくつかのケースでは、1又は複数のネットワーク107はLAN、私設ネットワークなどであってもよく、一方、他のケースでは1又は複数のネットワーク107は上に論述されたネットワーク106のうちの任意のものを含んでもよい。
【0030】
サービス演算装置102はユーザデバイス110を介してユーザ112へストレージ及びデータ管理サービスをそれぞれ提供するように構成されてもよい。いくつかの非限定的例として、ユーザ112は、いくつかの例では非常に大量のデータのストレージを含み得る、ビジネス、企業、組織、政府事業体、学術事業体などのための機能を行うユーザを含んでもよい。それにもかかわらず、本明細書における実装は、システム100並びに本明細書において説明される他のシステム及び配置のためのいかなる特定使用又は応用へに限定されない。
【0031】
各ユーザデバイス108は、デスクトップ、ラップトップ、タブレットコンピューティングデバイス、モバイルデバイス、スマートフォン、ウェアラブルデバイス、端末、及び/又はネットワーク上でデータを送信することができる任意の他のタイプのコンピューティングデバイスなどの任意の好適なタイプのコンピューティングデバイスであってもよい。ユーザ112は、例えばそれぞれのユーザアカウント、ユーザログイン証明書などを介してユーザデバイスに関連付けられてもよい。さらに、ユーザデバイス108は、1又は複数のネットワーク106を介し、別個のネットワークを介し、又は任意の他の好適なタイプの通信接続を介して、サービス演算装置(群)102と通信できるようにしてもよい。無数の他の変形形態が本明細書の開示の恩恵を有する当業者に明らかになる。
【0032】
さらに、各ユーザデバイス108は、例えばネットワークストレージシステム104上の格納のためにユーザデータを送信するため、及び/又はデータ命令118などを介してネットワークストレージシステム104から格納されたデータを受信するための、例えばサービス演算装置(群)102上で実行可能なユーザウェブアプリケーション116との通信のための、ユーザデバイス108上で実行し得るユーザアプリケーション114のそれぞれのインスタンスを含んでもよい。いくつかのケースでは、アプリケーション114はブラウザを含んでもよく、又はブラウザを介して動作してもよい一方で、他のケースではアプリケーション114は、1又は複数のネットワーク106上でユーザウェブアプリケーション116との通信を可能にする通信機能を有する任意の他のタイプのアプリケーションを含んでもよい。
【0033】
システム100のいくつかの例では、ユーザ112は、それぞれのユーザデバイス108が通信するサービス演算装置(群)102へデータを格納し、そこからデータを受信してもよい。したがって、サービス演算装置102はユーザ112及びそれぞれのユーザデバイス108のためのストレージを提供してもよい。定常状態動作中、サービス演算装置102と定期的に通信するユーザ108が存在してもよい。
【0034】
加えて、管理者デバイス110は、デスクトップ、ラップトップ、タブレットコンピューティングデバイス、モバイルデバイス、スマートフォン、ウェアラブルデバイス、端末、及び/又はネットワーク上でデータを送信することができる任意の他のタイプのコンピューティングデバイスなどの任意の好適なタイプのコンピューティングデバイスであってよい。管理者120は、それぞれのアドミニストレータアカウント、アドミニストレータログイン証明書などを介するなどしてアドミニストレータデバイス110へ関連付けられてもよい。さらに、管理者デバイス110は、1又は複数のネットワーク106、107を介し、別個のネットワークを介し、又は任意の他の好適なタイプの通信接続を介してサービス演算装置(群)102と通信できるようにしてもよい。
【0035】
さらに、各管理者デバイス110は、例えばシステム100を管理するための管理命令を送信するため、例えばネットワークストレージシステム104上の格納のために管理データを送信するため及び/又は例えば管理命令126などを介して格納された管理データをネットワークストレージシステム104から受信するための、例えばサービス演算装置(群)102上で実行可能である管理ウェブアプリケーション124との通信のための管理者デバイス110上で実行し得る管理者アプリケーション122のそれぞれのインスタンスを含んでもよい。いくつかのケースでは、管理者アプリケーション122はブラウザを含んでもよく又はブラウザを介して動作してもよい、一方、他のケースでは管理者アプリケーション122は、1又は複数のネットワーク106上の管理ウェブアプリケーション124との通信を可能にする通信機能を有する任意の他のタイプのアプリケーションを含んでもよい。
【0036】
サービス演算装置102は、例えばネットワークストレージシステム104へ格納されるデータを送信するための及びネットワークストレージシステム104又はローカルストレージ132から要求データを取り出すためのゲートウエイをネットワークストレージシステム104へ提供し得るストレージプログラム130を実行してもよい。加えて、ストレージプログラム130は、例えばデータ保存期間、データ保護レベル、データ複製等を管理するためのシステム100により格納されるデータを管理してもよい。
【0037】
サービス演算装置102は、例えばパーティションなどの複数のメタデータDB部に分割されてもよく、複数のサービス演算装置102にわたって分散されてもよいメタデータデータベース(DB)134をさらに含んでもよい。例えば、メタデータDB134は、ネットワークストレージシステム104に格納されるオブジェクトデータ136及びローカルストレージ132に格納されるローカルオブジェクトデータ137を管理するために使用されてもよい。メタデータDB134は、個々のオブジェクトに関する情報、個々のオブジェクトにアクセスする方法、オブジェクトのストレージ保護レベル、ストレージ保存期間、オブジェクト所有者情報、オブジェクトサイズ、オブジェクトタイプなどオブジェクトデータ136に関する無数のメタデータを含んでもよい。さらに、メタデータゲートウエイプログラム138は、新しいオブジェクトが格納された、古いオブジェクトが消去された、オブジェクトが移動されたなどするとメタデータDB134を更新するため、及びデータにアクセスするための要求に応答するためなどのメタデータDB134を管理し且つ維持してもよい。
【0038】
加えて、サービス演算装置(群)102は、ネットワークストレージシステム104(1)~104(4)とのデータ同期を行うために実行され得るポリシーエンジンプログラム140を含んでもよい。いくつかのケースでは、ポリシーエンジンプログラム140はストレージプログラム130の1モジュールであってもよく、他のケースではポリシーエンジンプログラム140は別個のプログラムであってもよい。いくつかのケースでは、ポリシーエンジンプログラム140は、オブジェクトデータ136をネットワークストレージシステム104と同期させるためのメッセージ待ち行列化プログラム142と協働して動作してもよく。本明細書におけるいくつかの例において使用されてもよいメッセージ待ち行列化プログラムの例は、RABBITMQ及びACTIVEMQなどのオーブンソースマルチプロトコルメッセージブローカーを含む。
【0039】
さらに、ポリシーエンジンプログラム140は、オブジェクトデータ136を非同期でネットワークストレージシステム104と同期させてもよい。例えば、ユーザへ報告する前に、一定の格納操作をネットワークストレージシステム104に対し行って、これらの操作を完了するのではなく、ストレージプログラム130は、オブジェクトデータをローカルオブジェクトデータ137としてローカルストレージ132へ格納してもよく、オブジェクトのメタデータをローカルメタデータデータベース132へ追加してもよく、そして完了メッセージなどにより要求デバイスへ返答してもよい。ストレージプログラム130はその後、1又は複数のデータ同期操作144を介して、データを1又は複数のネットワークストレージシステム104とその後非同期に同期させるために、データを待ち行列へ送信してもよい。
【0040】
本明細書における実装は、同期処理を、データをネットワークストレージシステム104へ同期させるsync-to手順と、データをネットワークストレージシステム104から戻して同期させるsync-from手順とを含む2つの部分へ分割してもよい。このアプローチは、オペレータ(例えばユーザ112及び/又は管理者120)が複製のレベルを制御するために多量の柔軟性を提供すること及びループの形成を防止する能力をさらに提供することなどのいくつかの利点を有する。例えば、システムは、例えばセットアップの時点にオペレータがシステム不安定性を防止するために追加介入を必要とする無限複製を引き起こすループを形成するリング又はトポロジーを生成していないことを確認するためのシステム内の検証を提供することができる。
【0041】
システム100では、データ同期の速度が管理者により管理されることができることを保証するために、サービス管理のレート制御制限及び/又は品質などの行為を適用するように構成されるポリシーエンジンプログラム140により誘導されるイベント駆動型同期が採用される。さらに、いくつかの例は、データのバージョン管理を採用してもよく、例えば、各更新は、ネットワークストレージシステム104上のオブジェクトデータ136の順序付けを提供するのをその後助け得る異なるバージョンを生じ得る。例えば、ネットワークストレージシステム104のそれぞれは、異なるバージョン管理方式を利用してもよいので、プロバイダツールを使用してオブジェクトデータ136の順序付けを維持することは難しいかもしれない。しかし、ポリシーエンジンプログラム140を介してバージョン管理能力を提供することは、オペレータ/アプリケーションがいくつかのバージョンを手動で消去することにより又は正しいコンテンツを有するバージョンをその後更新することによりのいずれかによりバージョンの競合を比較して消去する能力を可能にする。
【0042】
さらに、いくつかの例では、データオブジェクトの各バージョンのユーザメタデータはオブジェクトデータと共に同期されてもよく、このことは、さらなるデータ管理のために望ましい任意の固有情報をアプリケーションが追加することを可能にする。一例として、この特徴はデータを生成したアプリケーション/オペレータの動作記録の維持を可能にする。例えば、メタデータタグは、オリジナルのソース又はオリジナルのアプリケーションに関する情報だけでなくアプリケーションがデータを生成した時刻も含んでもよく、これらの情報は、そのオブジェクトのメタデータに含まれるタイムスタンプに基づいて、バージョンの再順序付けを可能にするためにデータバージョンと共に使用される。
【0043】
加えて、本明細書におけるいくつかの例は、例えば、オペレータにより規定される格納されたデータのサブセットだけの同期を可能にするために適用され得るバケットレベルフィルタのセットアップを可能にする。本明細書における同期はまた、フィルタ無しで同様に機能し得るが、フィルタは、複製されるデータの量を制限する追加レベルの柔軟性を提供してもよい。
【0044】
いくつかのケースでは、サービス演算装置102は、例えばサイト150における1又は複数のグループ、クラスタ、システムなどへ配置されてもよい。例えば、複数のサイト150は、データ複製、災害復旧保護などを提供するなどのために地理的に互いに分散されてもよい。さらに、いくつかのケースでは、複数の異なるサイト150におけるサービス演算装置102は、例えば複数のサイト150の連合を提供するように互いに安全に通信するように構成されてもよい。
【0045】
図2は、いくつかの実装形態に係るシステム100でsync-toを実行するための論理構成例を示すブロック図である。いくつかの例では、システム100は、本明細書の開示の利点を有する当業者にとって明白になるように、上に論述されたシステム100又は様々な他の可能なコンピューティングシステムアーキテクチャのうちの任意のものに対応してもよい。システム100は、分散オブジェクト格納を可能にしてもよく、ユーザ及び管理者のためのフロントエンドとしてウェブアプリケーションの使用を含んでもよい。いくつかのケースでは、システム100は、ユーザ及び/又は管理者により生成され得るバケットにネットワークストレージシステム104上のオブジェクトを格納してもよい。システム100は、ローカルシステム及びクラウドシステムにわたって分散された資源を使用することによりデータの複雑な管理及び格納を可能にしてもよい。
【0046】
本明細書における実装では、同期処理は、例えばsync-toネットワークストレージシステム104及びsync-fromネットワークストレージシステム104の2つの工程を使用することにより実行されてもよい。例えば、データ同期処理を方向に基づき2段階処理へ分割することは、本明細書における実装が多重同期及び多重ターゲット支援を提供することを可能にし、さらに、それらの工程の組み合わせを構成する能力を提供してもよい。さらに、本明細書におけるいくつかの実装は、複数のネットワークストレージシステム104への多重ターゲット複製のための2段階非同期イベント駆動型実行フレームワークを含む。
【0047】
図2は、ネットワークストレージシステム104へデータを同期させる例の要素を示し、sync-to方向の一部としてのデータ複製の流れの概要を含む。本明細書におけるいくつかの例は、独立コンピュートエンジンとして機能することができるコンテナ内で走るマイクロサービスを実行することに少なくとも部分的に基づいてもよい。例えば、ストレージプログラム130、メタデータゲートウエイプログラム138及び/又はポリシーエンジンプログラム140の各サービスの複数のインスタンス又はコンテナは、例えば、サービス演算装置102のうちの複数のサービス演算装置における分散クラスタにわたって実行されてもよい。複数のマイクロサービスインスタンスは、異種アプリケーションワークロードに起因して必要とされ得るような、分散クラスタ又は他の分散コンピューティングアーキテクチャにわたるポリシーエンジンのスケーリングを可能にしてもよい。
【0048】
一例として、データをアプリケーションから取り込む際(例えばユーザウェブアプリケーション116又は管理ウェブアプリケーション124を介し)、2つの同期行為がリアルタイムで行われる。例えば、ユーザは、ユーザウェブアプリケーション116を介してオブジェクトA202を保存したと仮定する。最初に、204で示されるように、オブジェクトAに関して、アプリケーションにより入力されるオブジェクト名、バージョンID、タイムスタンプ、オブジェクトサイズ、ユーザメタデータタグ、アクセス制御リストなどの情報を含むオブジェクトメタデータ206が生成されてもよい。加えて、また、208で示されるように同期的に、オブジェクトAのオブジェクトデータ210は、ローカルオブジェクトデータ137の一部としてローカルストレージ132へ格納され、そして格納されたオブジェクトロケータIDは、オブジェクトメタデータ206の一部として他のシステムメタデータへ追加される。メタデータゲートウエイプログラム138はオブジェクトAメタデータ206をメタデータデータベース134(図2に図示せず)へ追加してもよい。これらの2つの行動はリアルタイムで行われるので、ストレージプログラム130は、オブジェクトA202の格納が正常に完了したことを示す応答をユーザへ戻してもよい。
【0049】
212で示すように、メタデータゲートウエイプログラム138はその後、オブジェクトA202についての同期イベントを非同期的に生成してもよく、この同期イベントを、上に論述されたメッセージ待ち行列化プログラム142により提供されるメッセージ待ち行列化フレームワーク216の1又は複数の待ち行列214へ追加してもよい。例えば、本明細書におけるマイクロサービスの残りと同様に、待ち行列(群)214は他のサービスとは独立してスケールアップ又はスケールダウンされてもよい。例えば、メッセージ待ち行列化フレームワーク216により提供されるように、待ち行列(群)214は状態維持可能及び恒久性の両方であってもよい。例えば、1つの待ち行列214が破損されれば又はサービス停止になれば、待ち行列214のイベントの1又は複数の構成可能な冗長コピーが、障害時の回復のために少なくとも1つの他の待ち行列214にわたって維持されてもよい。イベント駆動型メッセージング待ち行列フレームワーク216は、同期を行うためのクエリによりメタデータゲートウエイプログラム138が溢れないように、メタデータ格納及び検索を行うために実行されるメタデータゲートウエイプログラム138上のトラフィックを低減する。さらに、待ち行列化フレームワークはまた、システムの他のすべての同期イベントからミラーリングイベントを分離するのを助け得る。
【0050】
ポリシーエンジンプログラム140は、220で示すように、各同期ターゲットについて待ち行列214からイベントをポーリング及び消費するためにバックグラウンドで動作する一組のコンテナサービスを提供するために実行されてもよい。例えば、ポリシーエンジンプログラム140は、待ち行列214から同期イベントを非同期に引き出してもよく、待ち行列214のイベントをネットワークストレージシステム104のそれぞれの1つずつへ同期させてもよい。例えば、各同期イベントは、その中にネットワークストレージシステム104のうちの特定な1つに基づく別個のターゲット及び名前付けられたバケットを有してもよい。したがって、以下に追加的に論述される技術に基いて、ポリシーエンジンプログラム140は、222で示されるように、オブジェクトA、いくつかのケースではオブジェクトAのメタデータを含むと、意図された同期ターゲットとを同期させてもよい。同期ターゲットはこの例ではネットワークストレージシステム104(1)~104(4)を含んでもよく、ネットワークストレージシステム104(1)~104(4)のそれぞれは、異なるストレージ構成、プロトコルなどを有する異なるサービスプロバイダにより提供され得る。
【0051】
いくつかの実装では、発信される同期イベント(すなわちsync-toイベント)は1又は複数の発信待ち行列へ分離されてもよく、ネットワークストレージシステム104からデータを取り出すための同期イベント(すなわちsync-fromイベント)は1又は複数のsync-from待ち行列へ分離されてもよい。別個の待ち行列214を使用することによる方向による通信の分離は、ネットワークストレージシステム104の1つが誤動作していれば又はネットワーク接続性問題があればネットワークストレージシステム104のうちの正しく機能している他のネットワークストレージシステム104への通信は影響されないことを保証するのを助けてもよい。ネットワークストレージシステム104が複数の異なるサービスプロバイダにより提供されるとすれば、システム100は、一時的に停止しているネットワークストレージシステム104又は完全に使用不能になっているネットワークストレージシステム104との間で容易に区別することができないかもしれない。また、例えば資源又は割り当て制限、メインテナンス中のサーバ、又はシステム内のバグに起因したエラー又は障害の正確な理由を提供するために特定のネットワークストレージシステム104に依存することは実用的ではないかもしれない。
【0052】
加えて、本明細書におけるいくつかの例はカテゴリに基づいて同期イベントを分離することを含んでもよい。例えば、待ち行列化フレームワーク216は、別個のリモートターゲットドメイン毎に別個の待ち行列214の組(例えば、sync-to待ち行列及びsync-fromは待ち行列)を含んでもよく、例えば、待ち行列化フレームワーク216は、第1プロバイダネットワークストレージシステム(群)104(1)についての第1の待ち行列214の組、第2プロバイダネットワークストレージシステム(群)104(2)についての第2の待ち行列214の組、第3プロバイダネットワークストレージシステム(群)104(3)についての第3の待ち行列214の組等を含んでもよい。したがって、ポリシーエンジンプログラム140はサービス演算装置(群)102からネットワークストレージシステム104へのデータの1対多同期を実行してもよい。
【0053】
さらに、いくつかのケースでは、ポリシーエンジンプログラム140は1又は複数のフィルタを待ち行列214の同期イベントへ適用してもよい。例えば、ポリシーエンジンプログラムは、オブジェクトに関連付けられたオブジェクトタグに基づいて、一定のオブジェクトをフィルタすることを含み得るユーザ指定ルールを適用するためにユーザにより構成可能であってもよい。これらのユーザ指定ルールに基づいて、ポリシーエンジンプログラム140は、待ち行列214のうちの1つから同期イベントを消費し、同期イベントのターゲットであるデータとともに含まれるメタデータタグを比較し、そしてメタデータタグが指定ルールに適合する場合には、同期イベントは実行されず、ポリシーエンジンプログラム140により廃棄されてもよい。
【0054】
さらに、いくつかの例では、ポリシーエンジンプログラム140が待ち行列214のうちの1つから同期イベントを消費すると、ポリシーエンジンプログラムはまず、どのネットワークストレージシステム104のどのバケットが同期イベントのターゲットであるかを決定してもよい。ターゲットバケット及びターゲットネットワークストレージシステム(群)104を決定した後、ポリシーエンジンプログラム140は、ターゲットネットワークストレージシステム(群)104へのアクセス呼び出しを行うための認証証明書にアクセスしてもよい。認証に続いて、ポリシーエンジンプログラム140は、ターゲットネットワークストレージシステム(群)104に対応するプロバイダ固有プロトコル及び手順を使用することなどによりターゲットネットワークストレージシステム(群)104にアクセスしてもよい。
【0055】
図3はいくつかの実装形態に係るシステム100のsync-from同期の実行例を示すブロック図である。例えば、同期イベントは、様々なサービスプロバイダによりホストされるネットワークストレージシステム104からデータを検索すること含んでもよい。sync-fromを構成することは、リモートに格納されたデータの、例えばローカルストレージ132及び/又はユーザデバイス108又はアドミニストレータデバイス110などのクライアントデバイスなどのシステム100への復元を許容し得る。システム100では、ポリシーエンジンプログラム140は、待ち行列化フレームワーク216からイベントを引き出すことにより同期イベントを処理する一組のコンシューマとして行動してもよい。sync-fromイベントとsync-toイベントとを別個に処理するための1つの理由は、同じタイプの消費サービスをネットワークストレージシステム104の他のものへ提示しないネットワークストレージシステム104を支援することである。例えば、図示の例における第2プロバイダネットワークストレージシステム(群)104(2)などのいくつかのネットワークストレージシステム104は、第2プロバイダネットワークストレージシステム(群)104(2)のバケットへ入れられるとオブジェクトがデータバケットへの変更の通知を提供し得る一組のプロデューサを含み得るように、発行者機構302を提示してもよい。
【0056】
他のネットワークストレージシステム104は、新しい変更が待ち行列へ送信され且つ待ち行列を介して照会され得る待ち行列型通知システムを提供してもよい。さらに、他のネットワークストレージシステム104は、完全に異なる方法を取り込んでもよく、また、いかなる通知又はイベント消費機構も提示しなくてもよい。したがって、本明細書における実装は、イベント通知が無いかどうか又は異なる通知モデルのために採用された様々な異なる技術のうちの任意の技術があるかどうかにかかわらず、任意のタイプのネットワークストレージシステム104から複製し戻すことができる。
【0057】
いくつかの例では、システムは、ミラーバック操作を行うためのネットワークストレージシステム104の新しいデータを能動的に探してもよい。したがって、例えば、ネットワークストレージシステムのうちのいくつかにより提供される待ち行列に直接アクセスすることにより、ネットワークストレージシステム104のデータは、本明細書におけるsync-from機能を使用することにより又は代替的に、待ち行列化フレームワーク216により提供されるローカルsync-from待ち行列へ追加され得るメッセージを受信することに基づいて、ネットワークストレージシステム104のデータは、ローカルシステム100へ複製されて戻されてもよい。
【0058】
待ち行列化フレームワーク216の待ち行列214から同期イベントを引き出すポリシーエンジンプログラム140と共に上に論述されたイベント駆動型待ち行列化及び通知消費フレームワークは、この例においても同様に使用されてもよい。例えば、リモート差異通知は、内部待ち行列化フレームワーク216を使用することにより抽出されてもよい。ネットワークストレージシステム104がそれ自身の待ち行列化フレームワークを提供する場合、本明細書におけるいくつかの実装は、追加ローカル待ち行列化フレームワーク216により追加される可能性があるいかなる追加待ち時間も導入しないようにするために、サービスプロバイダにより提供される待ち行列化フレームワークを直接使用してもよい。リモートシステムが通知サービスを提供しない場合、本明細書におけるいくつかの例は、データバケットからリモートユーザデータエントリを列挙し、このエントリをプロデューサ待ち行列に生成するスレッドを使用してもよい。
【0059】
図示の例では、第1のプロバイダネットワークストレージシステム(群)104(1)はAMAZON WEB SERVICES(AWS)であり、このプロバイダは待ち行列306を提供するAWS待ち行列化サービス304(「単純待ち行列化サービス」(SQS)とも呼ばれる)を含むと仮定する。例えば、メッセージを失うことなく又は各コンポーネントが常に利用可能である必要無くシステムの分散されたコンポーネント間でデータを移動するためなどのコンピュータ間で移動する際にメッセージを格納するために、待ち行列306は、スケーリング可能なホスト待ち行列であってもよい。加えて、図示の例では、第4プロバイダネットワークストレージシステム(群)104(4)は、アプリケーション等の間の信頼性のある且つ永続的なメッセージングを提供し得る待ち行列310を提供するWINDOWS(登録商標) AZURE Queuing Service (WAQS)308を提供するMICROSOFT WINDOWS AZUREシステムであると仮定する。例えば、待ち行列310はアプリケーション間又はサービス間でメッセージを転送するために使用されてもよい。
【0060】
上述のように、本明細書の例では、ポリシーエンジンプログラム140は、ネットワークストレージシステム104(1)、104(4)からデータを直接検索するために待ち行列306、310をそれぞれ使用してもよい。例えば、312に示されるように、ポリシーエンジンプログラム140は待ち行列306、310から直接ポーリング及び消費してもよい。他方で、第2プロバイダネットワークストレージシステム104(2)に関し、このシステムが発行者機構302を使用するので、314に示すように、ポリシーエンジンプログラム140は、316に示されるように、ポリシーエンジンプログラム142が発行者機構302により発行された発行データを消費することを可能にするsync-fromイベントを含む待ち行列化フレームワーク216の待ち行列214からポーリング及び消費する。同様に、第3プロバイダネットワークストレージシステム(群)104(3)に関して、このストレージシステムはメタデータを含み、318に示されるように、ポリシーエンジンプログラム140が、320に示すようにメタデータを読み出すために待ち行列化フレームワーク216の待ち行列214からポーリングし消費すると仮定する。
【0061】
ポリシーエンジン140により受信されたデータは、324に示されるようにローカルストレージ132に格納されてもよい。さらに、メタデータゲートウエイプログラム138は、326に示されるように、メタデータデータベースのメタデータを更新してもよい。したがって、sync-from操作は、1対1又は多対1であってもよい。ネットワークストレージシステム104のうちの1つのネットワークストレージシステム104のバケットへ追加される任意のオブジェクトは本明細書における実装に従って検索され得る。
【0062】
図4はいくつかの実装形態に係る擬似コード400の例を示す図である。本明細書におけるいくつかの例では、システム100の管理者はポリシーエンジンプログラム140の複製設定及び他の同期設定を構成することができてもよい。例えば、管理者は、データがローカルシステム100から離れる前に適切なセキュリティ処置がプロキシーホストにおける組織により適用され得るように、通信がプロキシーホストを介して流れることを許容することにより、リモート複製ターゲット及びセットアップセキュリティ処置を有効又は無効にしてもよい。
【0063】
この例では、402に示されるように、管理者はまた、データが複製される送付先を制限してもよい。プロバイダタイプなどの情報は、通知がその送付先をターゲットとし得るかどうか又は特定プロバイダのネットワークストレージシステム104が追加メタデータ要求などを許容するかどうかなどの各サービスプロバイダにより可能である通信のタイプを理解することができるように格納されてもよい。
【0064】
図5はいくつかの実装形態に係る擬似コード500の例を示す図である。この例では、ポリシーエンジンプログラム140の同期ルールは、システムへデータを取り込むアプリケーションユーザにより確立されてもよい。例えば、502に示されるように、バケット及びサービスプロバイダの名前がsync-fromに関して指定されてもよい。さらに、504に示されるように、バケット及びサービスプロバイダの名前は、sync-to関しても指定されてもよい。
【0065】
図6はいくつかの実装形態に係るローカルシステムオブジェクトバージョンのデータ構造600の例を示す。例えば、オブジェクトバージョン管理は、送信元ターゲットと送信先ターゲットとの競合を管理することを助けるためにsync-to又はsync-from複製ルールを定義する一方でユーザにより有効にされてもよい。オブジェクトバージョン管理の他の利点は、単一インスタンス化のための支援を有効にすること又はコンテンツが変更されない場合にデータのコピーを制限することを含んでもよい。この例では、データ構造600はバージョンID602、コンテンツハッシュ604、オブジェクトのサイズ606、オブジェクトの複製状態608、及び更新時刻610を含むローカルシステムオブジェクトバージョンの情報を含む。例えば、コンテンツハッシュ604は、各オブジェクトのオブジェクトデータ及び/又はメタデータの少なくとも一部に対して任意の好適な低衝突ハッシュ関数を使用することにより決定されてもよい。ハッシュ関数の例は、SHA-1、SHA-256、MD5、FarmHash Fingerprint64等を含む。
【0066】
具体的使用ケースの一例として、ユーザは、同じバケット内へ格納するために、既に取り込まれたオブジェクトの同一コピーを生成してもよい。これは、オブジェクトが、例えばリモートシステム上のより冷たいストレージ()への階層化のターゲットにならないように、オブジェクトが依然として熱いということを示すためにネットワークストレージシステム104のオブジェクトメタデータを変更するために行われてもよい。同一コピーを生成するための別の理由は、例えば1つのオブジェクトバージョンに対し読み出し/書き込み許可を生成し、オブジェクトの別のバージョンに対して読み出し専用許可を生成するために、異なるアクセス許可を支援するためであってもよい。したがって、バージョン管理は、ユーザに対してシステムがより精細なレベルの制御を提供することを可能にしてもよい。オブジェクトバージョンは、例えば、各バージョンは1又は複数のネットワークストレージシステム104へ複製されるように、伝播されてもよい。いくつかのケースでは、同一コンテンツがネットワークストレージシステムへ既に複製されたということを本明細書におけるシステムが判定すれば、リモートシステムがこれを許容すれば、再び同じコンテンツを再伝搬する代わりに、同じコンテンツを含むオリジナルのバージョンに対するリンクが生成されてもよい。
【0067】
図7はいくつかの実装形態に係るネットワークストレージシステムオブジェクトバージョンのデータ構造700の例を示す。この例では、データ構造はバージョンID702、メタデータタグ704、コンテンツサイズ706、ストレージサイズ708、及びタイムスタンプ710を含む。上述のように、リモートシステムオブジェクトバージョンデータ構造700は、データ構造が関係するリモートネットワークストレージシステム104にオブジェクトの他のバージョンが存在するかどうかを判断するために使用されてもよい。さらに、以下に論述されるように、メタデータタグ704は実際には、特定オブジェクトのコンテンツハッシュに対応してもよい。
【0068】
いくつかの例では、データ構造600、700のバージョンID602、702は異なるシステム(すなわち、ローカルシステム及びリモートシステム)によりそれぞれ制御されるので、特定オブジェクトバージョンのバージョンID602、702は一致しないかもしれない。しかし、両システム上のコンテンツハッシュ及びサイズは、同じバージョンが維持されれば、同じになるだろう。加えて、本明細書におけるいくつかの例は、オブジェクトバージョンのメタデータタグを生成することを支援するS3プロトコルを使用してもよい。例えば、すべてのネットワークストレージシステム104がコンテンツハッシュの検索に対応しているとは限らないので、コンテンツハッシュは、リモートに格納されたオブジェクトへメタデータタグとして追加され得、メタデータタグはさらに、特定オブジェクトの同じバージョンが既に存在するかどうかを判定する場合に比較のために使用され得る。ローカルシステムのオブジェクトバージョンの状態は、再複製が発生するのを防止するために維持されてもよい。適合するコンテンツハッシュ及びサイズを有するオブジェクトの新バージョンがローカルストレージシステム内に既に存在し、例えば図6の612に示されるように、ユーザにより再取り込みされていれば、オブジェクトの同じバージョンをネットワークストレージシステムへ2回以上複製する代わりに、図7の712に示されるようにオブジェクトへのリンクだけが複製され、コンテンツは再送信されない。例えば、リンクはネットワークストレージシステムに既に存在するコンテンツのバージョンを指してもよい。
【0069】
図8はいくつかの実装形態に係る複製をバージョン管理する例800を示す。例えば、第1ユーザデバイス108(1)の第1ユーザ112(1)がオブジェクトを生成し、上に論述されたシステム100へ格納するためにユーザアプリケーション114(1)を使用すると仮定する。さらに、第1ユーザ112(1)はローカルストレージ132のローカルアプリケーションバケット802と、1又は複数のネットワークストレージシステム104のユーザのオブジェクトの複製を受信するためのリモートアプリケーションバケット804とを構成すると仮定する。
【0070】
ポリシーエンジンプログラム140がオブジェクトをローカルアプリケーションバケット802からリモートアプリケーションバケット804へ複製する場合、ポリシーエンジンプログラム140は、複製されるオブジェクトのメタデータへメタデータタグを追加してもよい。806に示されるように、メタデータタグはローカルアプリケーションバケット802のオブジェクトについて既に決定されたコンテンツハッシュを含んでもよい。したがって、複製中、ポリシーエンジンプログラム140は、オブジェクトデータ及びユーザメタデータを含むオブジェクトのすべてのコンテンツをリモートアプリケーションバケット804に格納するためにネットワークストレージデバイスへ送信してもよい。808に示されるように、ネットワークストレージシステムは、リモートアプリケーションバケット804に格納された複製オブジェクトに、それ自身のバージョンIDを割り当ててもよい。
【0071】
図9はいくつかの実装形態に係る複製をバージョン管理する例900を示す。この例では、第1ユーザ112(1)は同じオブジェクトのコピーをローカルアプリケーションバケット802へ再取り込みすると仮定する。ローカルシステムは902に示されるように、新しいバージョンIDを割り当て、データ構造600のオブジェクトのタイムスタンプを更新することになるが、コンテンツハッシュ及びサイズは図8の既に取り込まれたオブジェクトと同じである。オブジェクトの新しいバージョンが複製される場合、904に示されるように、オブジェクトコンテンツは送信されないが、その代りに、ネットワークストレージシステムのタイムスタンプ更新を強いるためのリンクが生成され、ユーザメタデータ更新も複製される。したがって、オブジェクトの新しいバージョンがリモートアプリケーションバケット804へ追加されると、新しいバージョンIDが906に示されるように割り当てられ、ストレージサイズが、908に示されるように、リンクにより零として示される。
【0072】
図10はいくつかの実装形態に係るフィルタをバケット複製へ適用する例1000を示す。例えば、上に述べたように、フィルタは、ポリシーエンジンプログラム140による同期中にオブジェクト名、メタデータタグへ適用される、又は他のメタデータに基づいて適用されるバケットに対してユーザにより実装されてもよい。
【0073】
この例では、ユーザ又は管理者などのオペレータが、「foo」で始まる名前を有するオブジェクトが複製されることを許容するフィルタルールを含むようにバケット複製を構成すると仮定する。その後、ユーザアプリケーション114(1)が、foo2と名付けられたオブジェクトをローカルアプリケーションバケット802へ取り込むと仮定する。オブジェクトfoo2はローカルアプリケーションバケット802へ格納される。次に、ポリシーエンジンプログラム140は、foo2がリモートアプリケーションバケット804への複製上の定位置に置かれたフィルタにより許容されるので、オブジェクトのすべてのコンテンツをリモートアプリケーションバケット804へ複製してもよい。
【0074】
図11はいくつかの実装形態に係るフィルタをバケット複製へ適用する例1100を示す。上に論述された図10の例では、ユーザ112(1)は、オブジェクト名「bar」を有するオブジェクトをローカルアプリケーションバケット802へ取り込むためにアプリケーション114(1)を使用すると仮定する。オブジェクトをリモートアプリケーションバケット804へ複製することに先立って、ポリシーエンジンは、フィルタをチェックし、フィルタに基づいてBarは複製されることを許容されないと判定する。したがって、1102に示されるように、barはフィルタにより許可されないので、オブジェクトはリモートアプリケーションバケット804へ複製されない。
【0075】
図12、13はいくつかの実装形態に係るメタデータ要求をルーティングする処理例を示す流れ図である。この処理は、一連の操作を表し、そのいくつか又はすべてはハードウェア、ソフトウェア又はそれらの組み合せで実装され得る論理的流れ図のブロックの集合として示される。ソフトウェアの文脈では、ブロックは、1又は複数のプロセッサにより実行されると列挙された操作をプロセッサに行わせるようにプログラムする1又は複数のコンピュータ可読媒体に格納されたコンピュータ実行可能命令を表してもよい。一般的に、コンピュータ実行可能命令は、特定機能を実行する又は特定データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。ブロックが説明される順番は制限として解釈されるべきでない。説明されるブロックのうちの任意数のブロックは処理又は代替処理を実施するために任意の順番で及び/又は並列に組み合わせられ得、そしてブロックのすべてが実行される必要があるわけではない。論述目的のために、処理は本明細書の例において説明される環境、フレームワーク、及びシステムを参照して説明されることになるが、処理は幅広い種類の他の環境、フレームワーク及びシステムにおいて実装されてもよい。
【0076】
図12はいくつかの実装形態に係るsync-to処理1200の流れ図を示す。図12の例では、処理1200は、ストレージプログラム130、メタデータゲートウエイプログラム138、及び/又はポリシーエンジンプログラム140を実行する1又は複数のサービス演算装置102により少なくとも部分的に実行されてもよい。
【0077】
1202では、管理者はターゲット1にアクセスするための許可をユーザグループ1へ提供してもよい。例えば、ターゲット1は上に論述したようにネットワークストレージシステム104であってもよい。
【0078】
1204では、ユーザグループ1からのユーザ1はターゲット1へバケット複製を追加することを試みる。
【0079】
1206では、ユーザグループ2からのユーザ2はターゲット1へバケット複製を追加することを試みる。しかし、ユーザ2がユーザグループ1ではなくユーザグループ2に属するので、この努力は失敗し、これによりターゲット1へへの複製の設定をすることができない。
【0080】
1208では、システムは複製のセットアップが成功したかどうかを判定する。そうであれば、処理は1212へ進み。そうでなければ、処理は1210へ進む。
【0081】
1210では、複製のセットアップが成功しなければ、システムは失敗に関する警報をユーザへ送信してもよい。
【0082】
1212では、複製のセットアップが成功すれば、ユーザ1はオブジェクトをローカルシステム内へ、例えばローカルバケット内へ取り込んでもよい。
【0083】
1214では、ローカルシステム内へのオブジェクトの取り込みに続いて、ターゲット1へのオブジェクトの同期のための同期イベントが待ち行列に入れられる。
【0084】
1216では、システムはターゲット1のリモートバケットにオブジェクトを同期させることを試みてもよい。
【0085】
1218では、システムはオブジェクト同期が成功したかどうかを判定してもよい。そうであれば、処理は1222へ進む。そうでなければ、処理は1220へ進む。
【0086】
1220では、同期が成功していない場合、システムはオブジェクト同期再試行限度に到達したかどうかを判定する。そうであれば、システムは1214へ戻り、オブジェクトの別の同期イベントを待ち行列に入れる。他方で、再試行限度に未だ到達していない場合、処理は1216へ進み、システムはターゲット1に対する別のオブジェクト同期試みを行う。
【0087】
1222では、オブジェクト同期が成功した場合、オブジェクトはリモートシステム上に現われ、そして同期イベントメッセージが待ち行列からデキューされる。
【0088】
図13はいくつかの実装形態に係るsync-from処理1300の流れ図を示す。図13の例では、処理1300は、ストレージプログラム130、メタデータゲートウエイプログラム138、及び/又はポリシーエンジンプログラム140を実行する1又は複数のサービス演算装置102により少なくとも部分的に実行されてもよい。
【0089】
1302では、管理者はターゲット1にアクセスするための許可をユーザグループ1へ提供してもよい。例えば、ターゲット1は上に論述したようにネットワークストレージシステム104であってもよい。
【0090】
1304では、ユーザグループ1からのユーザ1はバケット複製をターゲット1へ追加しようと試みる。
【0091】
1306では、ユーザグループ2からのユーザ2はバケット複製をターゲット1へ追加しようと試みる。しかし、ユーザ2はユーザグループ1ではなくユーザグループ2に属するので、この努力は失敗し、複製をターゲット1へ設定することができない。
【0092】
1308では、システムは複製のセットアップが成功したかどうかを判定する。そうであれば、処理は1312へ進む。そうでなければ、処理は1310へ進む。
【0093】
1310では、複製のセットアップが成功しなかった場合、システムは失敗に関する警報をユーザへ送信してもよい。
【0094】
1312では、複製のセットアップが成功した場合、その後、オブジェクトに関するコンシューマからの同期が開始されてもよい。
【0095】
1314では、オブジェクトPUTメッセージが、ターゲット1に対応するリモート待ち行列で受信されてもよい。
【0096】
1316では、オブジェクト同期試みが行われてもよい。
【0097】
1318では、システムはオブジェクト同期が成功したかどうかを判定してもよい。そうであれば、処理は1322へ進む。そうでなければ、処理は1320へ進む。
【0098】
1320では、同期が成功していなかった場合、システムはオブジェクト同期再試行限度に到達したかどうかを判定する。そうであれば、システムは1314へ戻り、別のオブジェクトPUTメッセージをリモート待ち行列に入れる。他方で、再試行限度に未だ到達していない場合、処理は1316へ進む、システムは別のオブジェクト同期の試みを行う。
【0099】
1322では、オブジェクト同期が成功した場合、オブジェクトはローカルシステム上に現われ、そして同期イベントメッセージはリモート待ち行列からデキューされる。
【0100】
本明細書において説明される処理例は論述目的のために提供される処理の単に一例である。無数の他の変形形態が本明細書の開示に照らして当業者に明らかになる。さらに、本明細書の開示は処理を実行するための好適なフレームワーク、アーキテクチャ及び環境のいくつかの例を記載するが、本明細書における実装は示され且つ論述された特定例に限定されない。さらに、本開示は添付図面において説明及び示したように様々な例示的実装形態を提供する。しかし、本開示は、本明細書で説明され示された実装形態に限定されないが、当業者に知られているであろうように又は知られるようになるであろうように他の実装形態へ拡張し得る。
【0101】
図14は、本明細書において説明されるシステムの機能性の少なくともいくつかを実施するために使用され得るサービス演算装置(群)(102)の選択されたコンポーネント例を示す。サービス演算装置(群)102は、1又は複数のサーバ、又は任意数の方法で具現化され得る他のタイプのコンピューティングデバイスを含んでもよい。例えば、サーバの場合、プログラム、他の機能コンポーネント、及びデータは、単一サーバ、サーバのクラスタ、サーバファーム又はデータセンター、クラウドホストコンピュータサービス等上に実装されてもよいが、他のコンピュータアーキテクチャが追加的に又は代替的に使用されてもよい。複数のサービス演算装置(群)102は、例えば仮想サーバ、サーババンク、及び/又はサーバファームとして併せて又は別々に配置されそして編成され得る。説明された機能は、単一事業体又は企業のサーバにより提供されてもよいし、又は複数の異なる事業体又は企業のサーバ及び/又はサービスにより提供されてもよい。
【0102】
図示の例では、サービスコンピューティングデバイス(群)102は1又は複数のプロセッサ1402、1又は複数のコンピュータ可読媒体1404、及び1又は複数の通信インターフェース1406を含んでもよいし、それらと関連付けられてもよい。各プロセッサ1402は、単一処理ユニット又は多数の処理ユニットであってもよく、単一又は複数のコンピューティングユニット若しくは複数の処理コアを含んでもよい。プロセッサ(群)1402は、1又は複数の中央処理ユニット、マイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、ステートマシン、論理回路構成、及び/又は操作命令に基づき信号を操作する任意のデバイスとして実装され得る。一例として、プロセッサ(群)1402は、本明細書において説明されるアルゴリズム及び処理を実行するように特別にプログラム又は構成された任意の好適なタイプの1又は複数のハードウェアプロセッサ及び/又は論理回路構成を含んでもよい。プロセッサ(群)1402は、本明細書において説明される機能をプロセッサ(群)1402に行うようにプログラムし得る、コンピュータ可読媒体1404に格納されたコンピュータ可読命令をフェッチ及び実行するように構成されてもよい。
【0103】
コンピュータ可読媒体1404は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報の格納のための任意のタイプの技術で実現される揮発性及び非揮発性メモリ及び/又は着脱可能及び着脱不能媒体を含んでもよい。例えば、コンピュータ可読媒体1404は、限定しないが、RAM、ROM、EEPROM、フラッシュメモリ又は他のメモリ技術、光学ストレージ、ソリッドステートストレージ、磁気テープ、磁気ディスクストレージ、RAIDストレージシステム、ストレージアレイ、ネットワーク接続ストレージ、ストレージエリアネットワーク、クラウドストレージ、又は所望情報を格納するために使用され得、コンピューティングデバイスによりアクセスされ得る任意の他の媒体を含んでもよい。サービス演算装置(群)102の構成に依存して、コンピュータ可読媒体1404は、非一時的コンピュータ可読媒体がエネルギー、搬送波信号、電磁波、及び/又は信号それ自体などの媒体を排除すると述べる限りにおいて、有形な非一時的媒体であってもよい。いくつかのケースでは、コンピュータ可読媒体1404はサービス演算装置102と同じ場所にあってもよい一方で、他の例ではコンピュータ可読媒体1404はサービス演算装置102から部分的に遠くにあってもよい。例えば、いくつかのケースでは、コンピュータ可読媒体1404は、図1に関し、上に論述されたネットワークストレージシステム(群)104のストレージの一部を含んでもよい。
【0104】
コンピュータ可読媒体1404はプロセッサ(群)1402により実行可能である任意数の機能コンポーネントを格納するために使用されてもよい。多くの実装では、これらの機能コンポーネントは、プロセッサ(群)1402により実行可能である命令又はプログラムであって実行されると本明細書ではサービス演算装置102に帰属する行為を行うようにプロセッサ(群)1402を特にプログラムし得る命令又はプログラムを含む。コンピュータ可読媒体1404に格納された機能コンポーネントは、それぞれが1又は複数のコンピュータプログラム、アプリケーション、実行可能コード又はその一部を含み得るユーザウェブアプリケーション116、管理ウェブアプリケーション124、ストレージプログラム130、メタデータゲートウエイプログラム138、ポリシーエンジンプログラム140、及びメッセージ待ち行列化プログラム142を含んでもよい。さらに、これらのプログラムはこの例では一緒に示されたが、使用中、これらのプログラムの一部又はすべては別個のサービス演算装置102で実行されてもよい。
【0105】
加えて、コンピュータ可読媒体1404は、本明細書において説明される機能及びサービスを行うために使用されるデータ、データ構造、及び他の情報を格納してもよい。例えば、コンピュータ可読媒体1404はメタデータデータベース134及びローカルオブジェクトデータ144を格納してもよい。さらに、これらのデータ構造はこの例では一緒に示されたが、使用中、これらのデータ構造の一部又はすべては別個のサービス演算装置102に格納されてもよい。サービス演算装置102はまた、プログラム、ドライバなどを含み得る、他の機能コンポーネント及びデータ並びに機能コンポーネントにより使用又は生成されるデータを含んでもよく又は維持してもよい。さらに、サービス演算装置102は多くの他の論理コンポーネント、プログラムコンポーネント、及び物理的コンポーネントを含んでもよいが、上述のものは本明細書における論述に関連する単なる一例である。
【0106】
1又は複数の通信インターフェース1406は、1又は複数のネットワーク106、107上などの様々な他のデバイスとの通信を可能にするための1又は複数のソフトウェア及びハードウェアコンポーネントを含んでもよい。例えば、通信インターフェース(群)1406は、本明細書の他のどこかで追加的に列挙されるようなLAN、インターネット、ケーブルネットワーク、セルラーネットワーク、無線ネットワーク(例えばWi-Fi)及び有線ネットワーク(例えばファイバチャネル、光ファイバ、イーサーネット)、直接接続、並びにBLUETOOTH(登録商標)などの近距離通信等々のうちの1又は複数を介して通信を可能にしてもよい。
【0107】
本明細書において説明される様々な命令、方法、及び技術は、コンピュータ可読媒体上に格納され、本明細書のプロセッサ(群)により実行されるコンピュータプログラム及びアプリケーションなどのコンピュータ実行可能命令の一般的文脈において考慮されてもよい。一般的に、用語プログラム及びアプリケーションは、交換可能に使用されてもよく、特定タスクを行う又は特定データタイプを実装するための命令、ルーチン、モジュール、オブジェクト、コンポーネント、データ構造、実行可能コードなどを含んでもよい。これらのプログラム、アプリケーションなどは仮想マシン又は他のジャストインタイムコンパイル実行環境などにおいてネイティブコードとして実行されてもよく又はダウンロードされて実行されてもよい。典型的には、プログラム及びアプリケーションの機能性は、様々な実装において所望にしたがって組み合わせられてもよく又は分散さてれてもよい。これらのプログラム、アプリケーション、及び技術の実装形態は、コンピュータストレージ媒体に格納されてもよく又はある形式の通信媒体にわたって送信されてもよい。
【0108】
本主題は構造的特徴及び/又は方法論的行為に固有の言語で説明されたが、添付の特許請求の範囲において定義される主題は必ずしも説明された特定特徴又は行為に限定されないということを理解すべきである。むしろ、特定特徴及び行為は特許請求の範囲を実現する例示的形式として開示される。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14