JP6139718B2 - シャドーイングストレージゲートウェイ - Google Patents

シャドーイングストレージゲートウェイ Download PDF

Info

Publication number
JP6139718B2
JP6139718B2 JP2016022137A JP2016022137A JP6139718B2 JP 6139718 B2 JP6139718 B2 JP 6139718B2 JP 2016022137 A JP2016022137 A JP 2016022137A JP 2016022137 A JP2016022137 A JP 2016022137A JP 6139718 B2 JP6139718 B2 JP 6139718B2
Authority
JP
Japan
Prior art keywords
gateway
storage
data store
write
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016022137A
Other languages
English (en)
Other versions
JP2016129036A (ja
Inventor
サード ソレンソン,ジェームズ,クリストファー,ザ
サード ソレンソン,ジェームズ,クリストファー,ザ
リン,ユン
サリヤーズ,デイヴィッド,シイ
ケートラパル,アンクル
Original Assignee
アマゾン・テクノロジーズ・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アマゾン・テクノロジーズ・インコーポレーテッド filed Critical アマゾン・テクノロジーズ・インコーポレーテッド
Publication of JP2016129036A publication Critical patent/JP2016129036A/ja
Application granted granted Critical
Publication of JP6139718B2 publication Critical patent/JP6139718B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1724Details of de-fragmentation performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Description

多くの企業および他の組織は、多数のコンピューティングシステムを、例えば、コンピ
ューティングシステムを同一場所に(例えば、ローカルネットワークの一部として)配置
して、または代わりに、複数の異なる地理的位置に(例えば、1つもしくは複数のプライ
ベートまたは公共の中間ネットワークを経由して接続して)配置して、それらの動作をサ
ポートするために、相互接続するコンピュータネットワークを運用する。例えば、単一の
組織によって、または組織の代わりに運用されているプライベートのデータセンター、お
よび顧客にコンピューティングリソースを提供するビジネスとして、事業体によって運用
されている公共データセンターなどの、かなりの数の相互接続されたコンピューティング
システムを収容するデータセンターが当たり前になっている。いくつかの公共データセン
ターの運営事業体は、様々な顧客によって所有されているハードウェアに対して、ネット
ワークアクセス、電力、および安全な設置施設を提供するが、一方、他の公共データセン
ターの運営事業体は、それらの顧客による使用が可能なハードウェアリソースも含む、「
完全なサービス」施設を提供する。しかし、通常のデータセンターの規模および範囲が拡
大するにつれて、物理的コンピューティングリソースをプロビジョニング、運営、および
管理するタスクがますます複雑になっている。
コモディティハードウェアに対する仮想化技術の出現は、多様なニーズをもつ多数の顧
客に対する大規模なコンピューティングリソースの管理に関して利益をもたらし、様々な
コンピューティングリソースが効果的かつ安全に複数の顧客によって共有可能になった。
例えば、仮想化技術は、単一の物理コンピューティングマシンによってホストされた1つ
または複数の仮想マシンを各ユーザーに提供することにより、単一の物理コンピューティ
ングマシンが複数のユーザー間で共有できるようにし得るが、各かかる仮想マシンは、ユ
ーザーに、彼らが所与のハードウェアリソースの唯一のオペレータおよび管理者であると
いう錯覚をもたらす、別個の論理コンピューティングシステムとして機能し、同時に、様
々な仮想マシン間でのアプリケーションの分離およびセキュリティも提供する、ソフトウ
ェアシミュレーションである。さらに、いくつかの仮想化技術は、複数の別個の物理コン
ピューティングシステムにわたる複数の仮想プロセッサを有する単一の仮想マシンなど、
2つ以上の物理リソースにわたる仮想リソースを提供できる。
別の例として、仮想化技術は、複数のデータ記憶装置にわたって分散され得る仮想化デ
ータストアを各ユーザーに提供することにより、データ記憶ハードウェアが、複数のユー
ザー間で共有できるようにし得るが、各かかる仮想化データストアは、ユーザーに、彼ら
がそのデータ記憶リソースの唯一のオペレータおよび管理者であるという錯覚をもたらす
、別個の論理データストアとして機能する。
〔ウェブサービス〕
従来型のウェブモデルは、ウェブブラウザなどの、HTTPクライアントプログラムを
経由して、クライアントがウェブリソース(例えば、アプリケーション、サービス、およ
びデータ)にアクセスできるようにする。ウェブサービスと呼ばれる技術は、ウェブリソ
ースへのプログラムによるアクセスを提供するために開発された。ウェブサービスは、ウ
ェブサービスインタフェースを経由したウェブサーバーシステムなどのウェブ接続された
コンピュータ上でホストされる技術的プラットフォーム(例えば、アプリケーションおよ
びサービス)およびデータ(例えば、製品カタログおよび他のデータベース)を含め、ウ
ェブリソースへのプログラムによるアクセスを提供するために使用され得る。一般的に言
えば、ウェブサービスインタフェースが、何らかのサービスが実行されることを要求して
いるクライアントとサービスプロバイダとの間の通信のために、標準的なクロスプラット
フォームAPI(アプリケーションプログラミングインタフェース)を提供するように設
定され得る。いくつかの実施態様では、ウェブサービスインタフェースが、サービス要求
およびその要求に対する応答を記述する情報を含む文書またはメッセージの交換をサポー
トするように設定され得る。かかる文書、またはメッセージは、例えば、ハイパーテキス
ト転送プロトコル(HTTP)などの、標準ウェブプロトコルを使用して交換され得、ま
た、例えば、拡張マークアップ言語(XML)などの、プラットフォームに依存しないデ
ータフォーマットでフォーマットされ得る。
少なくともいくつかの実施形態に従った、サービスプロバイダ例およびサービス顧客例を含む、ネットワーキング環境例のハイレベルブロック図である。 少なくともいくつかの実施形態に従った、ストレージゲートウェイのためのアーキテクチャ例およびその構成要素を示す。 ストレージゲートウェイの実施形態が実現され得るネットワーク環境例のハイレベルブロック図である。 少なくともいくつかの実施形態に従った、サービス顧客ネットワークとサービスプロバイダネットワーク上のストレージサービスとの間のインタフェースとして機能する、サービス顧客ネットワークでのオンサイトのストレージゲートウェイを含むネットワーク環境例のブロック図である。 少なくともいくつかの実施形態に従って、ストレージサービスおよびハードウェア仮想化サービスをサービスプロバイダの顧客に対して提供する、サービスプロバイダ例のブロック図である。 ストレージゲートウェイの一実施形態がキャッシュゲートウェイとして設定される、ネットワーク環境例のアーキテクチャおよびその中のデータフローを大まかに示すハイレベルブロック図である。 ストレージゲートウェイの一実施形態がシャドーイングゲートウェイとして設定される、ネットワーク環境例のアーキテクチャおよびその中のデータフローを大まかに示すハイレベルブロック図である。 少なくともいくつかの実施形態に従った、ネットワーク環境例内でのシャドーイングゲートウェイのブートストラップを大まかに示すハイレベルブロック図である。 少なくともいくつかの実施形態に従った、シャドーイングゲートウェイのためのブートストラッププロセスの流れ図である。 少なくともいくつかの実施形態に従って、パススルーモードに入り、それから回復するシャドーイングゲートウェイの流れ図である。 少なくともいくつかの実施形態に従って、ゲートウェイからリモートデータストアへブロックをアップロード、更新、および追跡するための方法の流れ図である。 少なくともいくつかの実施形態に従った、シャドーイングゲートウェイのための最適化されたブートストラッププロセスの流れ図である。 少なくともいくつかの実施形態に従った、ストレージゲートウェイセキュリティモデルの態様を示す。 少なくともいくつかの実施形態に従った、ストレージゲートウェイの有効化、設定、および動作中の、ゲートウェイセキュリティモデルの少なくともいくつかの態様を示す、流れ図である。 少なくともいくつかの実施形態に従って、ゲートウェイ有効化プロセスに関与する、サービス顧客およびサービスプロバイダ構成要素または事業体を示すネットワーキング環境例のハイレベルブロック図である。 少なくともいくつかの実施形態に従って、ゲートウェイ有効化プロセス中に、図15に示す構成要素間のやりとりを示すプロセス流れ図である。 少なくともいくつかの実施形態に従って、ゲートウェイ有効化プロセス中に、図15に示す構成要素間のやりとりを示すプロセス流れ図である。 少なくともいくつかの実施形態に従って、ストレージゲートウェイの観点から見た、有効化プロセスの流れ図である。 少なくともいくつかの実施形態に従って、ストレージゲートウェイの観点から見た、有効化プロセスの流れ図である。 少なくともいくつかの実施形態において採用され得るゲートウェイ制御アーキテクチャ例を示すハイレベルブロック図である。 少なくともいくつかの実施形態に従って、ゲートウェイ開始接続およびロングポーリング技術を使用したリモートゲートウェイ管理のための方法の流れ図である。 いくつかの実施形態に従って、ゲートウェイ制御サーバーがゲートウェイ要求をそのピアサーバーにブロードキャストするための方法の流れ図である。 いくつかの実施形態に従って、ゲートウェイ要求を適切なゲートウェイ制御サーバーに送達するための代替方法の流れ図である。 少なくともいくつかの実施形態に従って、ゲートウェイ開始接続を確立、監視、および維持するための方法の流れ図である。 少なくともいくつかの実施形態に従って、ゲートウェイプロキシプレーン(proxy plane)を含む、サービスプロバイダネットワークのためのアーキテクチャを大まかに示すブロック図である。 少なくともいくつかの実施形態に従い、ゲートウェイプロキシプレーンを通じて、ゲートウェイにメッセージ送信するゲートウェイ制御サーバーを示す。 少なくともいくつかの実施形態に従い、ゲートウェイプロキシプレーンを通じて、ゲートウェイ制御サーバー要求に応答するゲートウェイを示す。 少なくともいくつかの実施形態に従った、ゲートウェイプロキシプレーンに対するpingメッセージ交換を示す。 少なくともいくつかの実施形態に従った、キャッシュゲートウェイのための全体アーキテクチャおよびそのデータ入出力動作を示す。 少なくともいくつかの実施形態に従った、シャドーイングゲートウェイのための全体アーキテクチャおよびそのデータ入出力動作を示す。 少なくともいくつかの実施形態に従って、ブロックデータストア上の書込みログに書き込むための方法の流れ図である。 キャッシュゲートウェイの少なくともいくつかの実施形態に従って、読取り要求を満足するための方法の流れ図である。 いくつかの実施形態で使用され得るコンピュータシステム例を示すブロック図である。
本明細書では、実施形態が、いくつかの実施形態に対する例および例示的な図によって
説明されているが、当業者は、実施形態は、説明された実施形態または図に制限されない
ことを理解するであろう。加えて、図およびそれに対する詳細な説明は、実施形態を開示
した特定の形態に制限することを意図せず、逆に、意図は、添付の請求項で定義される精
神および範囲内に含まれる、全ての修正、均等物、および代替手段を包含することが理解
されるはずである。本明細書で使用される見出しは、編成目的のためだけであり、記述ま
たは請求項の範囲を制限するために使用されることを意図していない。本願全体で使用さ
れるように、「〜し得る(may)」という用語は、強制的な意味(すなわち、〜しなけ
ればならない(must)という意味)よりもむしろ、許可的な意味(すなわち、〜する
可能性があるという意味)で使用される。同様に、「を含む(include)」、「を
含み(including)」、および「を含む(includes)」という用語は、
限定されないが含むことを意味する。
リモートストレージに対してローカルゲートウェイを提供するための方法、装置、およ
びコンピュータアクセス可能記憶媒体の様々な実施形態が説明される。ストレージゲート
ウェイの実施形態が、本明細書では、インターネットなどの中間ネットワークを通じて、
ストレージサービスを、サービスプロバイダの1つまたは複数の顧客に提供する、サービ
スプロバイダのコンテキストで説明される。ストレージゲートウェイは、顧客のデータセ
ンターにおいてオンプレミス(on−premise)(その建物内)でインストールさ
れ、顧客のデータセンターとストレージサービスとの間でゲートウェイとして機能する、
仮想または物理アプライアンスとして実装され得る。ストレージゲートウェイは、ストレ
ージサービスを経由してリモートで提供される一次記憶装置へのインタフェースとして、
およびそれに対するローカルキャッシュとして設定され得るか、かつ/またはストレージ
サービスによって提供されたリモートストレージへ顧客のネットワーク上に実装された一
次記憶装置をシャドーイングするインタフェースとして設定され得る。ストレージゲート
ウェイは、アプライアンスのフロントエンドで、顧客のアプリケーションに対する標準デ
ータアクセスインタフェースを提示し、アプライアンスのバックエンドで、そのデータア
クセスをストレージサービス要求に変換し、ストレージサービスインタフェースに従って
、そのデータを、ネットワークを通じてストレージサービスに伝達し得る。少なくともい
くつかの実施形態では、ストレージサービスインタフェースは、ウェブサービスインタフ
ェースとして実装され得る。
ストレージゲートウェイの実施形態は、オンプレミスインタフェースを、ストレージサ
ービスを通じて提供された、実質的に無制限で、柔軟な、拡張可能リモートストレージに
提供し得る。ストレージゲートウェイは、従来型のオンプレミスストレージソリューショ
ンに対して、費用効率が高く、柔軟で、さらに容易に拡張可能な代替手段を提供し得る。
記憶装置の費用は減少しているが、従来型のオンプレミスストレージソリューションの管
理、ならびに他のソフトウェアおよびハードウェアの費用は比較的一定のままであるか、
または場合によって増加している。ストレージゲートウェイの実施形態は、サービスプロ
バイダの顧客が、ストレージの総所有費用を下げることを可能にし得、少なくともいくら
かの管理および他の費用をサービスプロバイダに渡す。
少なくともいくつかの実施形態では、ストレージサービスは、ブロックストレージ技術
に従って、リモートデータストア内に顧客のデータを格納し得る。少なくともいくつかの
実施形態では、ストレージゲートウェイは、ブロックストレージプロトコル(例えば、i
SCSI、GNBD(グローバルネットワークブロックデバイス)など)、ファイルスト
レージプロトコル(例えば、NFS(ネットワークファイルストレージ)、CIFS(共
通インターネットファイルシステム)など)、および/またはオブジェクトストレージプ
ロトコル(例えば、REST(Representationl State Tran
sfer:表現状態転送))を、顧客のアプリケーションに対するフロントエンドで公開
し得る。iSCSIなどのブロックストレージプロトコルは、リモートデータストアの基
礎となるデータブロックへの直接アクセスを可能にする。
ストレージゲートウェイによって公開されたNFSまたはCIFSなどのファイルスト
レージプロトコルを介してアプリケーションによりリモートデータストアに書き込まれた
ファイルは、ブロックストレージ技術に従って、リモートデータストアに格納され得る。
NFSおよびCIFSなどの公開されたファイルストレージプロトコルを通じて、ストレ
ージゲートウェイは、ブロックストレージ技術に従ってリモートデータストアに格納され
た、顧客のデータを、それらがゲートウェイから顧客のネットワークを通じて顧客のアプ
リケーションに伝送される前に、顧客のアプリケーションにファイルとして提示する。例
えば、iSCSIなどの公開されたブロックストレージプロトコルは、ブロックを顧客の
アプリケーションに伝送し、従って、そのアプリケーションが、データブロックの解釈を
、そのアプリケーションが期待するどんなフォーマットにも処理することを要求する。
iSCSIなどのブロックストレージプロトコルは、低レベルブロックストレージプロ
トコルであり、従って、NFSおよびCIFSなどのファイルストレージプロトコルより
も広い範囲の使用事例を可能にし得る。ブロックストレージプロトコルは、通常、Mic
rosoft(登録商標) SharePoint(登録商標)およびOracle(登
録商標)データベースなどの、ブロックストアに書き込むアプリケーションに対するサポ
ートを可能にし得、CIFSまたはNFSファイルサーバーに対する基礎となるストレー
ジを提供するようにも設定され得る。それ故、ストレージゲートウェイの少なくともいく
つかの実施形態では、iSCSIなどのブロックストレージプロトコルが、顧客のアプリ
ケーションに対して公開されたインタフェースとして採用され得る。
図1は、少なくともいくつかの実施形態に従った、サービスプロバイダ例およびサービ
ス顧客例を含む、ネットワーキング環境例のハイレベルブロック図である。ストレージゲ
ートウェイ84は、いくつかのリモートデータ記憶機能のうちの1つまたは複数をクライ
アントネットワーク80上の顧客プロセス(単数または複数)88に提供するために、サ
ービス顧客ローカルネットワークまたはデータセンター(例えば、クライアントネットワ
ーク80)内で、仮想または物理アプライアンスとして、インストール、有効化、および
設定され得る。顧客プロセス88は、クライアントネットワーク80上に存在し、ゲート
ウェイ84のデータポートのデータプロトコル(例えば、iSCSIプロトコル)を介し
て、ストレージゲートウェイ84と接続して通信できる、任意のハードウェア、ソフトウ
ェア、および/またはそれらの組合せであり得る。ストレージゲートウェイ84は、例え
ば、オンプレミス記憶装置として、および/または顧客プロセス(単数または複数)88
上のクライアントネットワーク80と、サービスプロバイダ60によって提供されるスト
レージサービス64との間のインタフェースとして、機能し得る。ストレージサービス6
4に加えて、サービスプロバイダ60は、ハードウェア仮想化サービスを含むが、それに
限らず、他のサービスも、サービスプロバイダ60の顧客に提供し得ることに留意された
い。
サービスプロバイダ60の顧客は、本明細書では、サービス顧客または単に顧客と呼ば
れ得るが、ローカルネットワークまたはネットワーク上の1人または複数のユーザーに、
サービスプロバイダ60によってリモートで提供される1つまたは複数のサービスを含め
、ネットワーク化コンピューティングサービスを提供するために、インターネットなどの
中間ネットワーク50に結合された、コンピュータネットワークまたは複数のネットワー
クを実装する任意の事業体であり得る。サービス顧客は、企業、教育機関、政府機関、ま
たは、ネットワーク化コンピューティングサービスをユーザーに提供するコンピュータネ
ットワークまたは複数のネットワークを実装する、一般的な任意の事業体であり得る。図
1は、単一のクライアントネットワーク80を示しているが、複数のクライアントネット
ワーク80があり得る。各クライアントネットワーク80は、異なるサービス顧客に対応
し得るか、または2つ以上のクライアントネットワーク80が、例えば、企業の異なる支
社もしくは学校組織の異なるキャンパスなど、同じサービス顧客の異なるデータセンター
もしくは地域に対応し得る。少なくともいくつかの実施形態では、サービスプロバイダ6
0の各顧客は、サービスプロバイダ60にアカウントを有し得、セキュリティ認証情報(
例えば、アカウント名および/または識別子、パスワードなど)が提供され得るが、それ
を用いて、一人または複数の顧客の代表者(例えば、クライアントネットワーク管理者)
が、サービスプロバイダ60によって提供された、ストレージサービスを含むがそれに限
らない、1つまたは複数のサービスによって提供される顧客のリソースを管理するために
、サービスプロバイダ60へのインタフェース(例えば、ウェブページ)にログインし得
る。
ストレージゲートウェイ84の実施形態は、ハードウェア、ソフトウェア、またはそれ
らの組合せで実装され得る。少なくともいくつかの実施形態では、ストレージゲートウェ
イ84は、例えば、ホストシステム上でインスタンス生成された仮想マシン内で実行し得
る、仮想アプライアンスとして実装され得る。少なくともいくつかの実施形態では、スト
レージゲートウェイ84は、サービス顧客のデータセンター(例えば、クライアントネッ
トワーク80)において、ローカルネットワークインフラストラクチャに結合されたサー
バーシステムなどの、1つまたは複数のコンピューティング装置上で、ダウンロードされ
るか、または別の方法でインストールされて、有効化され、かつ設定され得る仮想アプラ
イアンスとして実装され得る。代替として、ストレージゲートウェイ84は、サービス顧
客のデータセンター(例えば、クライアントネットワーク80)において、ローカルネッ
トワークインフラストラクチャに結合され得る専用装置またはアプライアンスとして実装
され得;その専用装置またはアプライアンスは、ストレージゲートウェイ84の機能を実
現するソフトウェアおよび/またはハードウェアを含み得る。図26は、ストレージゲー
トウェイ84の実施形態がその上に実装され得るコンピュータシステム例を示す。少なく
ともいくつかの実施形態では、ストレージゲートウェイ84は、ファイアウォール82技
術を通し、中間ネットワーク50(例えば、インターネット)を経てサービスプロバイダ
60ネットワークと通信する。サービスプロバイダ60ネットワークは、中間ネットワー
ク50への、およびそこからのネットワークトラフィックが通過する、フロントエンド6
2技術(例えば、ファイアウォール技術、境界ルーター技術、負荷分散装置技術など)も
含むことに留意されたい。
ストレージゲートウェイ84の少なくともいくつかの実施形態は、顧客に対するデータ
保護、ならびに顧客または第3者によるゲートウェイ84の誤用および不正使用(例えば
、不法コピー)に対する保護を提供するセキュリティモデルに従って実装され得る。スト
レージゲートウェイ84とストレージサービス64との間の通信が保護および暗号化され
得る。本文書内で有効化プロセスが後で説明されるが、その中で、新しくインストールさ
れたストレージゲートウェイ84が、セキュリティ認証情報を取得するために、サービス
プロバイダ60ネットワークとの接続を開始し、それに対して識別される。少なくともい
くつかの実施形態では、有効化プロセス中に、顧客は、サービスプロバイダ60で顧客の
アカウントにログインして、ゲートウェイ84の登録で使用される情報をサービスプロバ
イダ60に提供する。しかし、顧客はストレージゲートウェイ84にログインせず、従っ
て、顧客のセキュリティ認証情報および他のアカウント情報は、ゲートウェイ84上で公
開されない。これは、顧客に対するセキュリティリスクを最小限にし得る。
少なくともいくつかの実施形態では、セキュリティモデルの態様は、ゲートウェイ84
は、クライアントネットワーク80上の顧客プロセス(単数または複数)88に対して公
開された1つまたは複数のデータポート(例えば、iSCSIポート)への外部開始接続
のみを受け入れることである。ストレージゲートウェイは、外部プロセスへの全ての他の
接続を開始し;外部プロセスは、ゲートウェイへのいかなる他の接続をも開始できない。
例えば、少なくともいくつかの実施形態では、ストレージゲートウェイ84は、ゲートウ
ェイ管理およびサービスプロバイダ60への他の接続を開始し;サービスプロバイダ60
はゲートウェイ84への接続を開始しない。別の例として、クライアントネットワーク8
0のネットワーク管理者プロセス90は、ゲートウェイ84を設定および管理するために
、ストレージゲートウェイ84に直接接続できない。代わりに、ネットワーク管理者プロ
セス90によるストレージゲートウェイ84の設定および管理は、例えば、サービスプロ
バイダ60ネットワーク上のコンソールプロセス68を介して、サービスプロバイダ60
を通して実行され得る。従って、少なくともいくつかの実施形態では、クライアントネッ
トワーク80上のユーザー、ネットワークマネージャ、またはプロセス(例えば、ネット
ワーク管理者プロセス90もしくは顧客プロセス(単数または複数)88)は、ストレー
ジゲートウェイ84に直接「ログイン」できず、サービスプロバイダ60ネットワーク上
(例えば、コンソールプロセス68およびストレージサービス64)もしくは何らかの他
の外部ネットワーク上のユーザー、マネージャ、もしくはプロセスもストレージゲートウ
ェイ84への接続を開始することもできない。これは、ストレージゲートウェイ84上の
セキュリティ認証情報および他の動作情報が、クライアントネットワーク80上の人もし
くはプロセスによって、または外部の人もしくはプロセスによって、故意もしくは故意で
はなく危険にさらされるのを防ぐ役に立つ。
ストレージゲートウェイ84の実施形態は、いくつかのデータストア66機能のうちの
1つまたは複数を提供するために、インストールされ、有効化され、かつ、ストレージサ
ービス64との使用のために設定され得る。例えば、ストレージゲートウェイ84は、以
下のものとして機能するために、インストールされ、有効化され、設定され、かつストレ
ージサービス64で採用され得る:
・ファイルシステムゲートウェイ。この設定では、ストレージゲートウェイは、ストレー
ジサービス64に対するNASストレージインタフェース(例えば、CIFSまたはNF
Sプロトコルを使用して)として機能する。リモートデータストア66は、ゲートウェイ
84により顧客に対してオブジェクトストア(例えば、REST)として提示され得るが
、他方、データストア66は、ブロックストレージ技術に従って実装される。この設定で
は、リモートデータストア66は、顧客がそれに対してファイルを書き込むことができ、
かつ、顧客がそれからファイルを読み取ることができる、仮想化ファイルシステムとして
、顧客に提示され得る。
・クラウドボリュームゲートウェイ。この設定では、ストレージゲートウェイ84は、ス
トレージサービス64を介して、リモートデータストア66上に実装されたボリューム(
単数または複数)へのインタフェースとして機能する。リモートデータストア66は、ブ
ロックストレージ技術を使用して実装され得る。ゲートウェイ84は、柔軟で本質的に制
限のない一次記憶容量を提供するバックエンド記憶装置として機能する、リモートデータ
ストア66上のボリューム(単数または複数)(クラウドボリュームとも呼ばれ得る)と
の、ローカルネットワークアクセスポイントを提供する。この設定では、リモートデータ
ストア66は、顧客が、データの読取りおよび書込み用のボリュームをそこからローカル
にマウントできる、クラウドボリュームシステムとして、顧客に対して提示され得る。
・シャドーイングゲートウェイ。この設定では、ストレージゲートウェイ84は、顧客の
書込みデータ(例えば、iSCSI書込み)のリモートデータストア66へのシャドーイ
ングをストレージサービス84を介して提供するために、顧客のアプリケーション(例え
ば、顧客プロセス(単数または複数)88)と顧客のローカルデータストア86との間の
「bump in the wire」として機能する。リモートデータストア66は、
ブロックストレージ技術を使用して実装され得る。この設定では、ストレージゲートウェ
イ84は、顧客のローカルデータストアをリモートデータストア66上のスナップショッ
ト(単数または複数)にシャドーイングするシャドーイングアプライアンスとして機能し
得る。このシャドーイングは、ローカルネットワーク上のユーザーの観点から見れば透過
的に行われ得る。必要であるかまたは望ましい場合、顧客は、例えば、顧客のデータの一
部または全部を、スナップショット(単数または複数)からローカルストア86に、復元
、回復、またはコピーするために、リモートデータストア66上の顧客のデータのスナッ
プショット(単数または複数)を要求またはアクセスし得る。
ファイルシステムゲートウェイおよびクラウドボリュームゲートウェイは、両方ともリ
モートデータストアに対するゲートウェイとして機能し、また両方ともローカルにデータ
を、例えば、頻繁におよび/または最近使用されたデータを、キャッシュし得る、という
点で似ていることに留意されたい。ファイルシステムゲートウェイおよびクラウドボリュ
ームゲートウェイの両方では、顧客プロセスからのデータ読取りは、可能であれば、ロー
カルキャッシュから、そうでなければ、リモートデータストアからサービスされ得る。対
照的に、シャドーイングゲートウェイでは、データ読取りは、ゲートウェイを通して、顧
客のローカルデータストアに渡される。本文書の目的のため、ファイルシステムゲートウ
ェイおよびクラウドボリュームゲートウェイは、これらの実施態様をシャドーイングゲー
トウェイと区別するために、キャッシュゲートウェイと総称され得る。
〔ストレージゲートウェイアプライアンスアーキテクチャ例〕
図2は、少なくともいくつかの実施形態に従った、ストレージゲートウェイのためのア
ーキテクチャ例およびその構成要素を示す。図2に示された構成要素のいくつかは、キャ
ッシュゲートウェイ実施態様と比較した場合、シャドーイングゲートウェイ実施態様では
、使用されないか、または使用され得るかもしくは異なって実装され得ることに留意され
たい。
ブロックドライバ10は、ストレージゲートウェイ84の顧客プロセス88とのインタ
フェースとなる。一般に、ブロックドライバ10は、顧客プロセス88が(例えば、読取
り/書込み要求を介して)ストレージゲートウェイ84とやりとりできるようにする。ス
トレージゲートウェイ84は、顧客プロセス88のオンサイトであるので、プロセス88
の観点から見れば、データがローカルに格納されるように見える。しかし、ストレージゲ
ートウェイ84は、ストレージサービス64によって提供されるリモートデータストア6
6にデータを格納するように、ストレージサービス64とインタフェースをとる。キャッ
シュゲートウェイについて、一次データストアはリモートデータストア66であるが、頻
繁にアクセスされるデータは、ゲートウェイ84によってローカルにキャッシュされ得る
。読取りは、ローカルキャッシュから、または仮想データ記憶66から満足され得;書込
みは、ローカルキャッシュ内および/または仮想データ記憶66内のデータブロックを適
切に更新するように処理される。シャドーイングゲートウェイについて、一次データスト
アはローカルデータストア86であり;読取りは、ローカルデータストア86に渡され、
また、書込みは、ローカルデータストア86に送信されるだけでなく、仮想データ記憶6
6にシャドーイングされる。
ブロックドライバ10は、顧客プロセス88からの読取り/書込み要求を捉え、その要
求をストレージコントローラ12に渡す。少なくともいくつかの実施形態では、ブロック
ドライバ10は、ブロックストレージプロトコル(例えば、iSCSIまたはGMBD)
を顧客プロセス88へのインタフェースとして提供する。いくつかの実施形態では、ブロ
ックストレージプロトコルインタフェースの代わりに、またはその代替として、ブロック
ドライバ10は、ファイルストレージプロトコルインタフェース(例えば、NFSまたは
CIFS)を提供し得、ファイルシステムセマンティクスをストレージコントローラ12
へのインタフェースとして使用し得る。図2は1つのブロックドライバ10を示している
が、2つ以上のブロックドライバが存在し得ることに留意されたい。
ストレージコントローラ12は、ブロックドライバ10と、キャッシュマネージャ14
を介したストレージとの間の仲立ちとして機能する。ストレージコントローラ12の責任
は、読取りおよび書込み要求をブロックドライバ10からストレージに、ならびにストレ
ージがデータで応答すると、コールバックをブロックドライバ10に転送することを含み
得る。ブロックドライバ10は、進行中の要求数などの統計値も保持し得る。
少なくともいくつかの実施形態では、1つのストレージゲートウェイ84上のストレー
ジコントローラ12は、別のストレージゲートウェイ84上のキャッシュマネージャ14
と通信し得る。少なくともいくつかの実施形態では、各ストレージゲートウェイ84は、
発見および障害の検出ためにハートビートメッセージを送信し得る。所与のオブジェクト
に対して責任があるストレージゲートウェイ84を識別するためにコンシステントハッシ
ュ法が使用され得、データを取得するための要求が、対象とするストレージゲートウェイ
84上のキャッシュマネージャ14に転送され得る。キャッシュマネージャ14は、スト
レージコントローラ12によって提供されたコールバックを起動することによって応答し
得る。
キャッシュゲートウェイ実施形態では、キャッシュマネージャ14は、例えば、頻繁に
アクセスされるデータに対してストレージを提供する、ローカルキャッシュ28を管理し
得る。ローカルキャッシュ28は、ストレージゲートウェイ84の内部の揮発性および/
もしくは不揮発性メモリ上に実装され得るか、または代替として、顧客によって提供され
る外部のローカルデータストア86上に、少なくとも一部実装され得る。少なくともいく
つかの実施形態では、ローカルキャッシュ28は、仮想化データ記憶66内に格納された
データを表し;顧客プロセス88からの書込みは、ローカルキャッシュ28に直接影響を
及ぼすことはない場合がある。
複数のゲートウェイ84を採用する少なくともいくつかの実施形態では、分散されたロ
ーカルキャッシュが使用され得、所与のキーを保持する責任のあるキャッシュを識別する
ために、キーについてコンシステントハッシュ法が使用され得る。少なくともいくつかの
実施形態では、地域を意識した要求分散(locality−aware reques
t distribution)がゲートウェイ84間の通信を減らすために使用され得
るが、それは、追加の負荷分散を要求し得る。
リモートデータストア66内の所与のボリュームへの全ての書込み要求は、特定のゲー
トウェイ84ノードに回され得る。ボリュームに対する全ての書込み要求が特定のゲート
ウェイ84ノードに転送されるので、ネットワーク分割は問題ではないかもしれない。
〔ステージング〕
少なくともいくつかの実施形態では、キャッシュマネージャ14は、ステージング16
構成要素を含み得るか、またはステージング16構成要素とインタフェースをとり得る。
ステージング16は、書込みログ18を含み得るか、または書込みログ18へのアクセス
を有し得る。少なくともいくつかの実施形態では、データ構造が書込みログ18を通して
構築され、メタデータストア26として使用され得る。メタデータストア26は、特定の
ブロックに対する全ての書込みへの素早いアクセスを可能にし得る。メタデータストア2
6は、例えば、ブロック内の異なるセグメントに対して変更(mutation)を適用
するのに使用され得る。書込みデータが顧客プロセス88から受信されると、そのデータ
が書込みログ18に付加される。例えば、オフセットおよび長さなど、ブロックに関連し
た書込みデータに対するメタデータが、メタデータストア26に格納され得る。少なくと
もいくつかの実施形態では、書込みログ18は、線形または円形キューのいずれかとして
実装された1次元データバッファとして実装され得る。少なくともいくつかの実施形態で
は、メタデータストア26は、例えば、Berkeley Databaseとして実装
された、キー/値ストアであり得る。書込みログ18およびメタデータストア26の両方
の他の実施態様が、いくつかの実施形態で使用され得る。
キャッシュゲートウェイ実施態様では、読取りが実行されると、元のブロックがローカ
ルキャッシュ28から、またはリモートデータストア66から取得され得、書込みログ1
8によって示される任意の保留の変更が、データをそれぞれの顧客プロセス88に返す前
に、適用され得る。
いくつかの実施形態では、ゲートウェイ84が障害を起こす(例えばクラッシュする)
と、データが既にローカルデータストア86に書き込まれていない限り、メモリ内の書込
みデータが失われ得る。いくつかの実施形態では、顧客サイトに複数のゲートウェイ84
がある場合、別のゲートウェイ84が、クラッシュしたゲートウェイ84によって所有さ
れているキーの責任を持ち、ローカルデータストア86上のスナップショット(ある場合
)から書込みを復元して、それぞれのボリュームに向けられた要求の受入れを開始し得る
。いくつかの実施形態では、書込みログ18および/またはメタデータストア26が、冗
長性およびより良い耐久性を提供するために、2つ以上のゲートウェイ84にわたって、
複製され得る。ゲートウェイ84の障害の場合には、他のゲートウェイ84のうちの1つ
が、故障したゲートウェイの書込みログ18およびメタデータストア26を引き継ぎ得る
。しかし、少なくともいくつかの実施形態では、メタデータストア26は、所有者のゲー
トウェイ84上でのみ保持され得る。これらの実施形態では、ゲートウェイ84の障害の
場合、他のゲートウェイ84のうちの1つが、メタデータストア26を再構築するために
、一次書込みログ18を引き継いで、解析し得る。
キャッシュゲートウェイ実施態様では、ブロックフェッチャ22は、ブロックの要求さ
れたセグメントをリモートデータストア66からストレージサービス64を介してフェッ
チする。少なくともいくつかの実施形態では、ブロックフェッチャ22は、キャッシング
のため完全なブロックをフェッチするために、遅延フェッチ(lazy fetchin
g)技術を採用し得る。キャッシュゲートウェイおよびシャドーイングゲートウェイの両
方について、ブロックストア24は、ステージング16からのデータをストレージサービ
ス64を介してリモートデータストア66にプッシュ型配信する。少なくともいくつかの
実施形態では、ブロックストア24は、ブロックをプッシュ型配信するために、遅延プッ
シュ技術を採用し得る。
少なくともいくつかの実施形態では、キャッシュゲートウェイに対する読取り動作中に
、ブロックドライバ10は、ボリュームID、開始オフセットおよび長さを含む読取り要
求を、ストレージコントローラ12に送信する。少なくともいくつかの実施形態では、ス
トレージコントローラ12は、ボリュームIDおよびオフセットをオブジェクトキーに変
換し得る。ストレージコントローラ12は、読取り要求情報をキャッシュコントローラ1
4に渡し得るが、それは、その読取り要求を適切なローカルキャッシュ28から満足しよ
うと試み得る。そのデータがローカルキャッシュ28内に存在しない場合、要求はブロッ
クフェッチャ22に転送されるが、それは、そのデータをリモートデータストア66上の
適切なボリュームからストレージサービス64を介してフェッチする。データが取得され
ると、ローカルキャッシュ28が更新され、書込みログ18からの変更が適用されて、読
取り応答が顧客プロセス88に返される。少なくともいくつかの実施形態では、複数のブ
ロックが要求される場合、各々がそれぞれのブロックに対する相対オフセットを示す、複
数の読取り応答が返され得る。少なくともいくつかの実施形態では、順次読取りが検出さ
れると、連続したブロックが事前にフェッチされ得る。
少なくともいくつかの実施形態では、書込み動作中に、ブロックドライバ10は、ボリ
ュームIDおよび書込みデータを含む書込み要求を、そのボリュームに対して責任がある
ストレージコントローラ12に送信する。書込みデータが書込みログ18に書き込まれ、
メタデータストア26が、バッファプール20内の変更されたデータに対する参照を含む
ように更新される。
〔バッファプール〕
少なくともいくつかの実施形態では、バッファプール20は、ストレージコントローラ
12とローカルデータストア86との間に存在する。バッファプール20は、以下のタス
クの1つまたは複数を実行し得るが、それらに限らない。いくつかのタスクはキャッシュ
ゲートウェイにのみ適用され得ることに留意されたい:
・書込みログ18およびローカルキャッシュ28に対するローカルデータ記憶装置(単数
または複数)上のそれらの物理位置からの論理オフセットのためのデータのキャッシュ。
・読取りおよび書込み動作中のバッファ上のロックの維持。
・例えば、エビクション(eviction)技術に基づく最低使用頻度(LRU)など
、エビクション技術のローカルキャッシュ28に対する物理記憶装置への適用。これは、
シャドーイングゲートウェイには必要でないことに留意されたい。
・各キャッシュゲートウェイ内での読取りに対して、要求されたデータがローカルキャッ
シュ28内で見つからない場合、バッファプール20がリモートデータストア66からブ
ロックをフェッチするために、ブロックフェッチャ22と通信し得る。代替として、いく
つかの実施形態では、ブロックフェッチャ22は、ブロックをフェッチするために、スト
レージサービス64と直接通信し得る。
少なくともいくつかの実施形態では、バッファプール20は、データベース(例えば、
Berkeleyデータベース(BDB))をそのメタデータストア26として採用し得
る。以下に示す表1は、少なくともいくつかの実施形態に従って、メタデータストア26
内に格納され得る情報を示す。表1内のエントリは、内容または配置にしたがって制限す
ることを意図しないことに留意されたい。
Figure 0006139718
少なくともいくつかの実施形態では、物理ディスクオフセットは、例えば、4MB境界
においてなど、決められた境界においてである。少なくともいくつかの実施形態では、こ
れは、ボリューム内および書込みログ18内の両方のデータに対する境界を含む。少なく
ともいくつかの実施形態では、特定のボリュームに対する書込みは、順次書込みであり得
、従って、ディスク上の断片化は、考慮する必要がない。「チャンク(chunk)」は
、ブロック、または1つもしくは複数のブロックに対応し得ることに留意されたい。
メタデータストア26は、S(スナップショット)およびC(チャンク)エントリの両
方を含み得、これらは、ストレージコントローラ12がそれを介してブロックにアクセス
しようと試みる方式で最新の状態に維持される必要がある。例えば、ブロックは、最初は
、スナップショットIDを使用して参照され得るが、その後は、いつも、チャンクIDを
使用する。これは、メタデータストア26に保存され得る。スナップショットが完了する
と、ストレージコントローラ12が、スナップショットIDを使用してスナップショット
からブロックを参照し得;それ故、メタデータストア26内のC(チャンク)エントリは
、対応するS(スナップショット)エントリに変換され得る。
〔キャッシュゲートウェイの動作〕
少なくともいくつかの実施形態では、読取り要求が受信されると、ブロックに対する書
込みログ18エントリまたは複数のエントリがメタデータストア26内で検索される。読
取り要求が、書込みログ18エントリまたは複数のエントリを使用して満足できる場合、
全ての要求されたエントリがメタデータストア26内で検索され、バッファ内に読み取ら
れて、フラット化され、要求された断片が返される。読取り要求が、書込みログ18エン
トリまたは複数のエントリだけを使用して満足できない場合、キャッシュデータブロック
(例えば、4MBブロック)に対するオフセットが読取り要求内のオフセットから計算さ
れる。ブロックの位置がメタデータストア26内で検索される。ブロックがローカルキャ
ッシュ28内にある場合、そのブロックがローカルキャッシュ28から読み取られ、また
、そうでない場合は、リモートデータストア66からフェッチされる。要求された書込み
ログ18エントリは、前述のようにフェッチされ、ブロックでフラット化されて、要求さ
れた断片が返される。ブロックがリモートデータストア66からフェッチされる場合、そ
のブロックはローカルキャッシュ28にキャッシュされて、メタデータストア26内に記
録される。ローカルキャッシュ28内のブロックに対する最後のアクセス時間も更新され
る。
少なくともいくつかの実施形態では、書込み要求が受信されると、次の書込みログ18
オフセットで変更が記録されて、メタデータ、すなわち、オフセットおよび長さがメタデ
ータストア26内に記録される。
少なくともいくつかの実施形態では、ブロックアップロードが完了すると、そのブロッ
クの最新バージョンが(適用された変更とともに)ローカルキャッシュ28に追加されて
、メタデータストア26内に記録される。ブロックの以前のバージョンがローカルキャッ
シュ28内に存在する場合、このブロックはメタデータストア26内で空きとして印を付
けられる。
少なくともいくつかの実施形態では、スナップショットが完了すると、メタデータスト
ア26は、前述のように再編成される必要があり得る。すなわち、そのスナップショット
に属するブロックエントリは、リモートデータストア66上の対応するスナップショット
エントリに変換され得る。
〔シャドーイングゲートウェイの動作〕
少なくともいくつかの実施形態では、読取り要求がローカルデータストア86に渡され
る。
少なくともいくつかの実施形態では、書込み要求が受信されると、書込みデータが次の
書込みログ18オフセットで記録され、その書込みに対する適切なメタデータがメタデー
タストア26内に記録される。書込み要求もローカルデータストア86に渡される。
少なくともいくつかの実施形態では、ブロックをリモートデータストア66にアップロ
ードするために、アップロードプロセスが書込みログ18を読み取るためにバッファプー
ル20を呼び出す。バッファプール20は、論理書込みログ18オフセットから物理オフ
セットへの変換を実行するためにメタデータストア26を使用し、データは次いで、メモ
リバッファに読み込まれる。バッファは次いで、アップロードプロセスに提示される。ア
ップロードプロセスは、ブロックをリモートデータストア66にアップロードし、そのブ
ロックをバッファプール20に解放する。
〔書込みログのパージ〕
少なくともいくつかの実施形態では、書込みログ18がパージされる必要のある場合、
バッファプール20は、書込みログ18がパージできるボリュームに対する書込みログオ
フセットを取得する。少なくともいくつかの実施形態では、書込みログオフセットが、例
えば、各エントリに対するオフセットをチェックするデータベースのウォークオーバー(
walk over)を実行することにより、メタデータストア26から決定され得る。
書込みログ18をパージするために、そのログのパージ可能な部分に対応する既存の書込
みログエントリが、空きエントリとして印を付けられ得る。
〔実施態様例〕
図3は、ストレージゲートウェイの実施形態が実装され得るネットワーク環境例のハイ
レベルブロック図である。中間ネットワーク100(例えば、インターネット)上のサー
ビスプロバイダ110は、中間ネットワーク100に同様に結合された、1つまたは複数
のサービス顧客ネットワーク(例えば、クライアントネットワーク(単数または複数)1
50)に、ストレージサービス112を介して、リモートデータストア116へのアクセ
スを提供する。各クライアントネットワーク150が、異なるサービス顧客に対応し得る
か、または2つ以上のクライアントネットワーク150が、例えば、企業の異なる支社も
しくは学校組織の異なるキャンパスなど、同じサービス顧客の異なるデータセンターもし
くは地域に対応し得る。サービス顧客は、企業、教育機関、政府機関、民間団体、または
、ネットワーク化コンピューティングサービスを1人または複数のユーザーに提供するた
めに、インターネットなどの中間ネットワーク100に結合された、コンピュータネット
ワークまたは複数のネットワークを実装する、一般的な任意の事業体であり得る。いくつ
かの実施形態では、ストレージサービス112は、インタフェース(例えば、ウェブサー
ビスインタフェース)を提供し得、それを通じて、各サービス顧客のクライアントネット
ワーク(単数または複数)150が、ストレージサービス112によって提供された機能
にアクセスし得る。
顧客プロセス154Aおよび154Bは、サービス顧客のクライアントネットワーク1
50に接続された物理および/または仮想マシンもしくはシステムを表す。ストレージサ
ービス112によって提供される機能の一例として、ユーザーは、顧客プロセス154を
介し、ストレージサービス112を通じて、リモートデータストア116内にデータボリ
ュームを作成およびマウントし得る。クライアントネットワーク150上のユーザーの観
点から見れば、ストレージサービス112によって提供されたデータボリュームは、それ
らがローカルストレージであるかのように見え得;従って、かかるデータボリュームは、
仮想データボリューム158と呼ばれ得る。仮想データボリューム158は、リモートデ
ータストア116がその上にインスタンス生成される、1つまたは複数の物理記憶装置も
しくは記憶システムに実際にマッピングするが;このマッピングは、ストレージサービス
112によって処理され、従って、クライアントネットワーク150上のユーザーの観点
から見れば透過的である。顧客プロセス154のユーザーは、デスクトップ上または装置
リスト内にマウントされたボリュームを単に見るだけであり得る。顧客プロセス154の
ユーザーは、まるでボリューム158がローカルに取り付けられた記憶装置であるかのよ
うに、仮想データボリューム158上で、データの作成、データの変更、データの削除、
および一般なデータ関連機能の実行を行い得る。
図4は、少なくともいくつかの実施形態に従った、クライアントネットワーク250と
ストレージサービス212との間のインタフェースとして機能する、サービス顧客のクラ
イアントネットワーク250でのオンサイトのストレージゲートウェイ252を含むネッ
トワーク環境例のブロック図である。少なくともいくつかの実施形態では、ストレージゲ
ートウェイ252は、サービス顧客のデータセンターでオンサイトでインストールされる
ファイルおよび/またはブロックストレージアプライアンスであり得る。
ストレージゲートウェイ252は、例えば、ファイルシステムゲートウェイとして、ク
ラウドボリュームゲートウェイとして機能するように、インストール、有効化、および設
定され得、キャッシュゲートウェイとして、またはシャドーイングゲートウェイとして総
称される。ファイルシステムゲートウェイは、(例えば、CIFSまたはNFSプロトコ
ルを使用して)ストレージサービス212に対するNASストレージインタフェースとし
て機能する。リモートデータストア216は、実際にはブロックストレージとして実装さ
れながら、顧客に対してオブジェクトストア(例えば、REST)として提示され得る。
クラウドボリュームゲートウェイは、ストレージサービス212によって提供された仮想
化ボリュームストレージゲートウェイに対するインタフェースとして機能する。ボリュー
ムストレージは、ブロックストレージとして実装され得る。ゲートウェイ252は、柔軟
で、本質的に制限のない一次記憶容量を提供するバックエンド記憶装置として機能するリ
モートデータストア216(クラウドボリュームとも呼ばれ得る)との、ローカルネット
ワークアクセスポイントを提供する。シャドーイングゲートウェイは、顧客の書込みデー
タ(例えば、iSCSI書込み)の、ストレージサービス212によって提供されるリモ
ートストレージへのシャドーイングを提供するために、顧客のアプリケーションと顧客の
ローカルデータストアとの間の「bump in the wire」として機能する。
リモートデータストア216は、ブロックストレージとして実装され得る。
キャッシュゲートウェイ実施態様では、ストレージゲートウェイ252は、データを安
全に暗号化して、サービスプロバイダ210に戻るのを促進しながら、頻繁にアクセスさ
れるデータのローカルキャッシュをローカルデータストア254上に格納し得る。同様に
、シャドーイングゲートウェイ実施態様が、書込みデータを安全に暗号化して、サービス
プロバイダ210への移動を加速し得る。標準的なインターネット接続と比較して、この
加速されたデータ移動は、例えば、データ重複排除、圧縮、並列化、およびTCPウィン
ドウスケーリング技術のうちの1つまたは複数を使用して、達成され得る。ストレージゲ
ートウェイ252は、通常、一次記憶装置またはバックアップ記憶装置としてのオンサイ
トストレージアレイの管理に伴う、費用、利用、保守、およびプロビジョニングの頭痛の
種を大幅に削減し得る。ストレージゲートウェイ252は、顧客が、そうでなければ、社
内で、高価なハードウェア(例えば、NASまたはSANハードウェア)上に格納し得る
、何百ものテラバイトからペタバイトのデータを、費用効率が高いアプライアンスで置き
換えることによってこれを達成し得る。ストレージゲートウェイ252を用いて、顧客は
、サービスプロバイダ210によって提供される、耐久性のある、利用可能で拡張性のあ
る分散ストレージインフラストラクチャを活用しながら、オンサイト記憶装置(キャッシ
ュゲートウェイ実施態様においてゲートウェイ252によって維持されるローカルキャッ
シュによって提供される)の低アクセス遅延から恩恵を受け得る。
ストレージゲートウェイ252の実施形態は、顧客のオンサイトアプリケーションとシ
ームレスに連携し得る。少なくともいくつかの実施形態では、顧客は、SAN(iSCS
I)、NAS(NFS、Microsoft(登録商標) CIFS)、またはオブジェ
クト(REST)記憶装置をサポートするために、ストレージゲートウェイ252を設定
し得る。少なくともいくつかの実施形態では、ストレージゲートウェイ252によって提
供されたiSCSIインタフェースは、Microsoft(登録商標) ShareP
oint(登録商標)およびOracle(登録商標)データベースなどのオンサイトブ
ロックストレージアプリケーションとの統合を可能にし得る。少なくともいくつかの実施
形態では、顧客は、Windows(登録商標)、Linux(登録商標)、およびUN
IX(登録商標)環境を含むが、それらに限らない、環境にわたって、ファイルストレー
ジを統合するために、ストレージゲートウェイ252によって提供されるNFSおよびC
IFSインタフェースを利用し得る。少なくともいくつかの実施形態では、ストレージゲ
ートウェイ252は、RESTベースの要求をサポートするようにも設定され得る。
少なくともいくつかの実施形態では、ストレージゲートウェイ252は、顧客のデータ
センターで、クライアントネットワーク250インフラストラクチャに結合されたサーバ
ーシステムなどの、1つまたは複数のコンピューティング装置上に、ダウンロードされる
かまたは他の方法でインストールされ、有効化されて、設定され得る、仮想装置またはア
プライアンスとして実装され得る。あるいは、ストレージゲートウェイ252は、クライ
アントネットワーク250インフラストラクチャに結合され得る専用装置またはアプライ
アンスとして実装され得;その専用装置またはアプライアンスは、ゲートウェイの機能が
その上に実装され得る、ソフトウェアおよび/またはハードウェアを含み得る。
少なくともいくつかの実施態様では、ストレージゲートウェイ252は、中間ネットワ
ーク200(例えば、インターネット)を経由して、サービスプロバイダ210と通信す
る。ストレージゲートウェイ252の中間ネットワーク200への結合は、大量のデータ
が、ストレージサービス212とストレージゲートウェイ252との間の中間ネットワー
ク200を通じて伝達され得るので、一般に、サービス顧客のクライアントネットワーク
250によって提供された高帯域幅接続を介し得る。例えば、ピーク時には、接続は、1
00メガビット/秒(100Mビット/秒)以上のデータ転送をサポートする必要があり
得る。しかし、少なくともいくつかの実施形態では、データ重複排除などの技術が、スト
レージゲートウェイ252からストレージサービス212へデータをアップロードする際
に、帯域幅利用を削減するために採用され得、従って、より多くの顧客の帯域幅が他の用
途に対して利用可能であり得る。少なくともいくつかの実施形態で採用され得るデータ重
複排除技術の例が、「RECEIVER−SIDE DATA DEDUPLICATI
ON IN DATA SYSTEMS」という名称の米国特許出願第12/981,3
93号、および、「REDUCED BANDWIDTH DATA UPLOADIN
G IN DATA SYSTEMS」という名称の米国特許出願第12/981,39
7号に記載されている。
少なくともいくつかの実施形態では、中間ネットワーク200を通じたクライアントネ
ットワーク250とサービスプロバイダ210との間の接続上の帯域幅が、ストレージゲ
ートウェイ252に、および、例えば、クライアントネットワーク250でのネットワー
ク管理者プロセス260を介して、他の顧客アプリケーションに割り当てられ得る。スト
レージゲートウェイ252は、例えば、データ重複排除技術に従って、変化した(新規ま
たは変更された)データをストレージサービス212に、継続的に、またはほぼ継続的に
アップロードし得る。しかし、クライアントネットワーク250でのデータの変化率は、
時間とともに変わり得る;例えば、日中は、顧客プロセス書込みスループットが高くなり
得るが、夜間には、書込みスループットが低くなり得る。従って、変化率が高いビジー時
には、ストレージゲートウェイ252に割り当てられた帯域幅がついて行くのに十分に高
くない場合、変化したデータのアップロードに遅れ得;ストレージゲートウェイ252は
、その後、変化率がそれほど高くない、あまりビジーでない時に追い付き得る。少なくと
もいくつかの実施形態では、ストレージゲートウェイ252が指定された閾値以上に遅れ
る場合、ストレージゲートウェイ252は、追加の帯域幅の割当てを要求し得る。少なく
ともいくつかの実施形態では、ストレージゲートウェイ252は、必要であれば、より多
くの帯域幅を要求するために警報を発し得る。
図4は、ストレージゲートウェイ252とストレージサービス212との間の直接接続
を示しているが、ストレージゲートウェイ252とストレージサービス212との間の接
続は、ローカルネットワーク256を経由し得ることに留意されたい。
ストレージゲートウェイ252の少なくともいくつかの実施形態では、要求に応じてリ
モートデータストア216からデータを取得するのではなく、データの大規模なブロック
またはチャンク、データのボリューム全体さえも、ローカルデータストア254にローカ
ルにキャッシュされ得る。ストレージゲートウェイ252は、データ、例えば、頻繁にア
クセスされるデータまたは重要なデータ、のローカルキャッシュがその上で保持され得る
物理データ記憶および/またはメモリ(ローカルデータストア254)を含み得るか、ま
たはそれに対してアクセスし得る。ローカルデータストア254は、揮発性もしくは不揮
発性の記憶装置もしくはメモリ、またはそれらの組合せであり得る。頻繁にアクセスされ
るデータのローカルキャッシュを保持することは、多くの、またはほとんどのデータアク
セスが、リモートデータストア216からデータを取得するよりも、ローカルキャッシュ
からサービスできるので、一般に、顧客プロセス258に対するデータアクセス時間を改
善し得る。しかし、リモートデータストア216は、サービス顧客のクライアントネット
ワーク250に対して一次データストアとして機能し得;従って、ストレージゲートウェ
イ252は、定期的に、非定期的に、または継続的に、新規または変更されたデータをロ
ーカルキャッシュからリモートデータストア216にアップロードするため、および必要
に応じて、要求されたデータをリモートデータストア216からダウンロードするために
、中間ネットワーク200を介してストレージサービス212と通信し得る。
図4では、リモートデータストア216の記憶装置(218A、218B、218C、
...)は、リモートデータストア216が、サービスプロバイダ210のローカルネッ
トワーク214に接続された、いくつかの記憶装置またはシステム上で、またはそれらに
わたって実装され得ることを示す。従って、サービス顧客のデータが、「バックエンド」
上の2つ以上の物理記憶装置またはシステムに散在し得る。バックエンド記憶装置は、他
の顧客と共有されるマルチテナント型装置であり得るが、必ずしも必要ではない。しかし
、図3に関連して述べた、クライアントネットワーク250上のユーザーおよびプロセス
の観点から見れば、クライアントのデータは、仮想ボリュームまたはファイルとして提示
され得る。
少なくともいくつかの実施形態では、図3および図4に関連して説明されるように、サ
ービスプロバイダは、ハードウェア仮想化技術および場合により他の仮想化技術も顧客に
提供し得る。サービスプロバイダ200は、ブロックストレージ機能(すなわち、ブロッ
クベースの記憶システム)を顧客に提供するブロックストレージ技術を含め、様々な仮想
化コンピューティング技術および仮想化ストレージ技術を提供し得る。サービスプロバイ
ダ200によって提供される、ハードウェア仮想化技術に従って実装される仮想コンピュ
ーティング環境またはシステムは、ブロックストレージ技術によってサポートされ得る。
ブロックストレージ技術は、例えば、ブロックレベルのストレージ機能を、それがサポー
トするボリュームの構造的および機能的詳細に、およびそれがストレージ可用性を提供す
る仮想コンピューティングシステム(または他のシステム)上で実行するオペレーティン
グシステムに、依存しなくする、標準ストレージ呼出しを通じて仮想コンピューティング
システムとやりとりすることができる、仮想化記憶システムを提供し得る。
ストレージゲートウェイ252の実施形態は、オンサイトの顧客アプリケーションなら
びにサービスプロバイダ200によって提供される仮想化コンピューティングおよびスト
レージ技術と統合され得、弾力性のある「クラウドベースの」コンピューティングおよび
記憶リソースへのアクセスを顧客に提供する。例えば、SANストレージに対してストレ
ージゲートウェイ252を使用する顧客は、彼らのデータの一致した、ある時点のブロッ
クベースのスナップショットを作成し得る。これらのスナップショットは、次いで、ブロ
ックベースの記憶システムが提供する、高入出力および低遅延データアクセスを必要とす
るハードウェア仮想化技術アプリケーションまたはインスタンス(例えば、図5における
仮想コンピューティングシステム264を参照)によって処理され得る。別の例として、
顧客は、NASストレージに対するストレージゲートウェイ252を、NFSまたはCI
FSファイルプロトコルを介して設定し得、また、ハードウェア仮想化技術インスタンス
からアクセス可能な彼らのファイルデータのある時点のスナップショットを作成し得る。
いくつかの実施形態では、ストレージゲートウェイ252によって提供されるREST
ベースのインタフェースを使用して書き込まれたオブジェクトは、サービスプロバイダに
より提供される仮想化ストレージ技術から、HTTPまたは他のプロトコルを介して直接
アクセスされ得るか、またはサービスプロバイダによって提供される統合コンテンツ配信
を使用して配信され得る。いくつかの実施形態では、顧客は、ハードウェア仮想化技術イ
ンスタンス上で、これらのオブジェクトの並列化処理に対する仮想化ストレージ技術によ
って提供された、高度に拡張性のある、分散インフラストラクチャも利用し得る。
図5は、少なくともいくつかの実施形態に従って、ストレージサービスおよびハードウ
ェア仮想化サービスをサービスプロバイダの顧客に対して提供する、サービスプロバイダ
例のブロック図である。サービス顧客のクライアントネットワーク250は、例えば、図
4に関連して説明したように、クライアントネットワーク250と、サービスプロバイダ
210のストレージサービス212との間のインタフェースとして機能する、1つまたは
複数のストレージゲートウェイ252を含み得る。サービスクライアント(単数または複
数)は、サービスプロバイダ210によって提供されるサービスの1つにアクセスし得る
、任意の管理者、ユーザー、またはプロセスであり得る。
ハードウェア仮想化技術は、複数のオペレーティングシステムをホストコンピュータ2
92上で同時に、すなわち、ホスト292上で仮想マシン(VM)296として、実行可
能にし得る。VM 296は、例えば、サービスプロバイダ210の顧客に賃貸またはリ
ースされ得る。ホスト292上のハイパーバイザー、すなわち、仮想マシンモニター(V
MM)294は、ホスト292上のVM 296に仮想プラットフォームを提示して、V
M 296の実行を監視する。各VM 296は、1つまたは複数のIPアドレスを提供
され得;ホスト292上のVMM 294は、ホスト上のVM 296のIPアドレスを
認識し得る。サービスプロバイダ210のローカルネットワークは、パケットを、VM
296からのインターネット宛先(例えば、クライアントネットワーク250上のサービ
スクライアント(単数または複数)262)に、およびインターネット送信元(例えば、
サービスクライアント(単数または複数)262)からVM 296に、経路指定するよ
うに設定され得る。
サービスプロバイダ210は、ローカルネットワーク256を介して中間ネットワーク
200に結合されたサービス顧客のクライアントネットワーク250に、中間ネットワー
ク200およびサービスプロバイダ210のローカルネットワークに結合されたハードウ
ェア仮想化サービス290を通じて仮想コンピューティングシステム264を実装する能
力を提供し得る。いくつかの実施形態では、ハードウェア仮想化サービス290は、イン
タフェース、例えば、ウェブサービスインタフェースを提供し得、それを経由して、サー
ビスクライアント262がハードウェア仮想化サービス290によって提供される機能に
アクセスし得る。サービスプロバイダ210では、各仮想コンピューティングシステム2
64は、サービス顧客に対してリース、賃貸、または他の方法で提供される、ホスト29
2システム上の仮想マシン(VM)296を表し得る。
仮想コンピューティングシステム264のインスタンスから、ユーザーは、以前に説明
したように、ストレージサービス212の機能にアクセスし得る。従って、図5に示すよ
うに、仮想化システムの実施形態は、クライアントが、サービスプロバイダ210によっ
て提供されるVM 296上に実装された仮想コンピューティングシステム264のロー
カルインスタンスを生成して、仮想コンピューティングシステム264のローカルインス
タンスから、サービスプロバイダ210によって実装されたリモートデータストア216
からのデータにアクセスし、そこにデータを格納できるようにし得る。
前述のように、1つまたは複数のストレージゲートウェイ252は、クライアントネッ
トワーク250でインスタンス生成され得る。ゲートウェイ252の少なくとも1つは、
少なくともいくつかのデータ、例えば、頻繁にアクセスされるかまたは重要なデータ、を
ローカルにキャッシュする、キャッシュゲートウェイ実施態様であり得る。ストレージゲ
ートウェイ(単数または複数)252は、例えば、データの一次ストア(リモートデータ
ストア216)がキャッシュゲートウェイ実施態様で保持されるように、新規もしくは修
正されたデータをローカルキャッシュからアップロードするため、または新規もしくは修
正されたデータ(書込みデータ)を、シャドーイングゲートウェイ実施態様内のリモート
データストア216上のローカルの一次データストアのスナップショットにアップロード
するために、1つまたは複数の高帯域幅通信チャネルを通じて、ストレージサービス21
2と通信し得る。
〔キャッシュゲートウェイ実施態様〕
図6は、ストレージゲートウェイの一実施形態が、ファイルシステムゲートウェイとし
て、またはクラウドボリュームゲートウェイとして設定される、ネットワーク環境例のア
ーキテクチャおよびその中のデータフローを大まかに示すハイレベルブロック図であり、
それらのゲートウェイは、キャッシュゲートウェイとして総称され得る。少なくともいく
つかの実施形態では、ストレージゲートウェイ252は、サービス顧客のデータセンター
で、オンサイトでインストールされる、ファイルおよび/またはブロックストレージアプ
ライアンスであり得る。図6では、ストレージゲートウェイ252は、例えば、ファイル
システムゲートウェイとして、またはクラウドボリュームゲートウェイとして、機能する
ように、インストール、有効化、および設定され得る。ファイルシステムゲートウェイは
、ストレージサービス212に対して(例えば、CIFSまたはNFSプロトコルを使用
して)NASストレージインタフェースとして機能する。リモートデータストア216は
、ブロックストレージとして実装されるが、顧客に対してオブジェクトストア(例えば、
REST)として提示され得る。クラウドボリュームゲートウェイは、ストレージサービ
ス212によって提供される仮想化ボリュームストレージに対するインタフェースとして
機能する。仮想化ボリュームストレージは、ブロックストレージとして実装され得る。ゲ
ートウェイ252は、柔軟で、本質的に制限のない一次記憶容量を提供するバックエンド
記憶装置として機能するリモートデータストア216(クラウドボリュームとも呼ばれ得
る)との、ローカルネットワークアクセスポイントを提供する。
ストレージゲートウェイ252が、インストールされ、有効化されて、設定されると、
クライアントネットワーク250のネットワーク管理者プロセス260は、リモートデー
タストア216上で、ストレージサービス212を介して、例えば、新規のデータボリュ
ーム270を作成し得るか、または既存のデータボリューム270をマウントし得る。ボ
リューム作成要求および他のサービス要求は、サービスプロバイダフロントエンド280
を介して、サービス212に対して作成され得る。フロントエンド280は、ストレージ
ゲートウェイ252への接続およびそれとの通信も管理し得る。フロントエンド280は
、ファイアウォール、境界ルーター、負荷分散装置、ゲートウェイサーバー、ゲートウェ
イプロキシ、コンソールプロセス、ならびに、ストレージサービス212をクライアント
ネットワーク(単数または複数)250に公開し、そのストレージサービス212をスト
レージゲートウェイ(単数または複数)252とインタフェースで接続するために必要で
あり得る、一般的な任意のネットワーキング装置および/またはプロセス、のうちの1つ
または複数を含み得るが、それらに限らない。
少なくともいくつかの実施形態では、ストレージゲートウェイ252は、サービスプロ
バイダフロントエンド280を介した、サービスプロバイダ210への全ての接続を開始
し;サービスプロバイダ210は、ゲートウェイ252への接続を開始しない。さらに、
ネットワーク管理者プロセス260は、直接ゲートウェイ252への接続を開始せず;例
えば、ゲートウェイ252を設定および管理するため、ネットワーク管理者プロセス26
0によるゲートウェイ252へのアクセスは、サービスプロバイダフロントエンド280
を介して、サービスプロバイダ210を通過する。
ストレージゲートウェイ252は、1つまたは複数のデータポート(例えば、iSCS
Iポート)を、クライアントネットワーク250上の顧客プロセス(単数または複数)2
58に公開する。顧客プロセス258は、クライアントネットワーク250上に存在し、
ゲートウェイ252のデータポートのデータプロトコル(例えば、iSCSIプロトコル
)を介して、ストレージゲートウェイ252と通信する、任意のハードウェア、ソフトウ
ェア、および/またはそれらの組合せであり得る。顧客プロセス258は、例えば、Mi
crosoft(登録商標) SharePoint(登録商標)およびOracle(
登録商標)データベースなどのストレージアプリケーション、サーバー(例えば、SQL
サーバー、Microsoft(登録商標) Exchange(登録商標)サーバーな
ど)、データベースアプリケーション(例えば、SQLデータベースアプリケーション、
およびOracle(登録商標)データベースアプリケーション)、Microsoft
(登録商標) Exchange(登録商標)アプリケーション、または、ストレージゲ
ートウェイ252データポート(単数または複数)と通信する働きをするクライアントネ
ットワーク250上の1つまたは複数の装置上で実行する任意の他のアプリケーションま
たはプロセスであり得る。顧客プロセスは、本明細書では、クライアントネットワーク2
50内の1つまたは複数の装置上で実行されている可能性のある任意のソフトウェアプロ
セスを包含するが;プロセスがその上で実行する基礎となるハードウェアが、プロセスの
代わりに、ストレージゲートウェイ252データポート(単数または複数)に対する接続
および通信に関与し得るか、またはそれを実行し得ることに留意されたい。
マウントされたボリューム270は、ストレージゲートウェイ252によって顧客プロ
セス(単数または複数)258に提示され得る。顧客プロセス(単数または複数)258
は、次いで、例えば、iSCSIプロトコルに従って、ストレージゲートウェイ252に
よって公開されたデータポートを介して、ボリューム270からの読取りおよびボリュー
ム270への書込みを実行し得る。ストレージゲートウェイ252は、ボリューム270
に対する全ての読取りおよび書込み要求を処理する。リモートデータストア216上のボ
リューム270は一次データストアとして機能するが、ストレージゲートウェイ252も
、ローカルデータストア254上の頻繁にアクセスされるデータのローカルキャッシュを
格納し得る。ローカルデータストア254は、ストレージゲートウェイ252の内部のス
トレージハードウェア上、サービス顧客によって提供されるストレージゲートウェイ25
2の外部のストレージハードウェア上、またはそれらの組合せ上で実装され得る。
読取りについて、ストレージゲートウェイ252は、まず、所与の読取りがローカルキ
ャッシュから満足できるかどうかを確認するために、ローカルキャッシュをチェックし得
る。読取りがローカルキャッシュから満足できない場合、ストレージゲートウェイ252
は、ストレージサービス212からデータを要求し得るが、それは、要求されたデータ(
または、要求されたデータを含むデータのブロックもしくはチャンク)をリモートデータ
ストア216から取得し、その要求されたデータをストレージゲートウェイ252に返す
。ストレージゲートウェイ252は、ストレージサービス212から受信されたデータの
ブロックまたはチャンクをローカルキャッシュに格納し得る。
書込みについて、ストレージゲートウェイ252は、新規または更新されたデータをロ
ーカルキャッシュに書き込み得る。少なくともいくつかの実施形態では、書込みデータは
、ローカルキャッシュ内に実装されたブロックベースの書込みログに付加され得る。スト
レージゲートウェイ252は、定期的に、非定期的に、または継続的に、ローカルキャッ
シュ内の新規または修正されたデータを一次データストア216にアップロードするため
に、サービスプロバイダ210で受信者側データアップロードプロセス(図示せず)と通
信する送信者側データアップロードプロセス(図示せず)を含み得る。書込みデータの書
込みログからのアップロードは、ローカルデータストア254に対する開始プロセスから
の読取りおよび書込み動作の処理と非同期に実行され得る。少なくともいくつかの実施形
態では、このアップロードプロセスは、データ重複排除、圧縮、並列化、およびTCPウ
ィンドウスケーリング技術のうちの1つまたは複数を採用し得る。図6に示すように、少
なくともいくつかの実施形態で採用され得るデータ重複排除技術例は、米国特許出願第1
2/981,393号および第12/981,397号に記載されている。
リモートデータストア216は本質的に制限のない記憶空間を提供し得るが、ローカル
キャッシュは、サイズにおいて制限され得る。従って、ストレージゲートウェイ252は
、ローカルキャッシュ内の、より古くて、かつ/または比較的アクティブでないデータブ
ロックを、さらに新しいか、かつ/またはアクティブなデータブロックで、除去、置換、
または上書きし得る。
〔シャドーイングゲートウェイ実施態様〕
図7は、ストレージゲートウェイの一実施形態がシャドーイングゲートウェイとして設
定される、ネットワーク環境例のアーキテクチャおよびその中のデータフローを大まかに
示すハイレベルブロック図である。図7では、ストレージゲートウェイ252は、顧客の
書込みデータ(例えば、iSCSI書込み)の、ストレージサービス212によって提供
されるリモートストレージへのシャドーイングを提供するために、顧客のアプリケーショ
ンと顧客のローカルデータストアとの間の「bump in the wire」として
動作するシャドーイングゲートウェイとして機能するように、インストールされ、有効化
されて、設定される。リモートデータストア216は、ブロックストレージとして実装さ
れ得る。
図7に示す実施形態では、ローカルデータスト254は、リモートデータストア216
が一次データストアとして機能する、図6におけるキャッシュゲートウェイ実施態様とは
対照的に、クライアントネットワーク250上の顧客プロセス(単数または複数)258
に対する一次データストアとして機能する。ストレージゲートウェイ252が、シャドー
イングゲートウェイとして、インストールされ、有効化されて、設定されると、ストレー
ジゲートウェイ252は、1つまたは複数のデータポート(例えば、iSCSIポート)
を、クライアントネットワーク250上の顧客プロセス(単数または複数)258に公開
する。クライアントネットワーク250上の顧客プロセス(単数または複数)258は、
次いで、ストレージゲートウェイ252データポート(単数または複数)を介して、ロー
カルデータストア254からの読取りおよびローカルデータストア254への書込みを行
い得る。顧客プロセス258は、クライアントネットワーク250上に存在し、ゲートウ
ェイ252データポートのデータプロトコル(例えば、iSCSIプロトコル)を介して
、ストレージゲートウェイ252と通信する、任意のハードウェア、ソフトウェア、およ
び/またはそれらの組合せであり得る。顧客プロセス258は、例えば、Microso
ft(登録商標) SharePoint(登録商標)およびOracle(登録商標)
データベースなどのストレージアプリケーション、サーバー(例えば、SQLサーバー、
Microsoft(登録商標) Exchange(登録商標)サーバーなど)、デー
タベースアプリケーション(例えば、SQLデータベースアプリケーション、およびOr
acle(登録商標)データベースアプリケーション)、Microsoft(登録商標
) Exchange(登録商標)アプリケーション、または、ストレージゲートウェイ
252データポート(単数または複数)と通信する働きをするクライアントネットワーク
250上の1つまたは複数の装置上で実行する任意の他のアプリケーションまたはプロセ
スであり得る。顧客プロセスは、本明細書では、クライアントネットワーク250内の1
つまたは複数の装置上で実行されている可能性のある任意のソフトウェアプロセスを包含
するが;顧客プロセスがその上で実行する基礎となるハードウェアが、プロセスの代わり
に、ストレージゲートウェイ252データポート(単数または複数)に対する接続および
通信に関与し得るか、またはそれを実行し得ることに留意されたい。
読取りおよび書込み要求は、ゲートウェイ252データポート(単数または複数)によ
って受信され得る。読取りについて、要求は、ゲートウェイ252によるさらなる干渉ま
たは処理なしで、ローカルデータストア254に直接渡され得、その要求されたデータが
ローカルデータストア254から顧客プロセス258に直接渡され得る。ローカルデータ
ストア254に向けられた書込み要求も、ストレージゲートウェイ252によってローカ
ルデータストア254に渡される。しかし、書込み要求をローカルデータストア254に
渡すことに加えて、ストレージゲートウェイ252は、書込み要求によって示された新規
または更新されたデータを、ストレージサービス212を介して、リモートデータストア
216にシャドーイングし得る。
少なくともいくつかの実施形態では、新規または更新されたデータをリモートデータス
トア216にシャドーイングするために、ストレージゲートウェイ252は、リモートデ
ータストア216に、例えば、先入れ先出し方式(FIFO)の書込みログ内に、アップ
ロードされる書込みデータをローカルに格納またはバッファリングし得る。少なくともい
くつかの実施形態では、書込みログは、ブロックストレージフォーマットで実装され得、
書込みログは1つまたは複数のブロック(例えば、4MBブロック)を含む。書込み要求
で受信された書込みデータは、書込みログに付加され得る。2つ以上の書込み要求からの
書込みデータが、書込みログ内の同じブロックに書き込まれ得る。ブロックに関連した書
込みデータに対するメタデータ(例えば、書込みログブロックにおけるオフセットおよび
長さ、ならびに対象とするデータストアにおけるオフセット)が、メタデータストアに格
納され得る。
ストレージゲートウェイ252は、定期的に、非定期的に、または継続的に、ローカル
に格納された書込みデータを、書込みログから、リモートデータストア216でシャドー
イングされたデータボリュームにアップロードするために、サービスプロバイダ210で
受信者側データアップロードプロセス(図示せず)と通信する送信者側データアップロー
ドプロセス(図示せず)を含み得る。書込みデータの書込みログからのアップロードは、
ローカルデータストア254に対する開始プロセスからの読取りおよび書込み動作の処理
と非同期に実行され得る。アップロードプロセスは、書込みデータを書込みログからブロ
ックでアップロードし得る。書込みログブロックがうまくアップロードされると、対応す
るブロックが書込みログ内で空きとして印を付けられ得る。
少なくともいくつかの実施形態では、アップロードプロセスは、データ重複排除、圧縮
、並列化、およびTCPウィンドウスケーリング技術のうちの1つまたは複数を採用し得
る。図7に示すように、少なくともいくつかの実施形態で採用され得るデータ重複排除技
術例は、米国特許出願第12/981,393号および第12/981,397号に記載
されている。
サービスプロバイダフロントエンド280が、ストレージゲートウェイ252への接続
を管理し得ることに留意されたい。少なくともいくつかの実施形態では、ストレージゲー
トウェイ252は、フロントエンド280を介して、サービスプロバイダ210への接続
を開始し;サービスプロバイダ210は、ゲートウェイ252への接続を開始しない。フ
ロントエンド280は、ファイアウォール、境界ルーター、負荷分散装置、ゲートウェイ
サーバー、ゲートウェイプロキシ、コンソールプロセス、ならびに、ストレージサービス
212をクライアントネットワーク(単数または複数)250に公開し、そのストレージ
サービス212をストレージゲートウェイ(単数または複数)252とインタフェースで
接続するために必要であり得る、一般的な任意のネットワーキング装置および/またはプ
ロセス、のうちの1つまたは複数を含み得るが、それらに限らない。
少なくともいくつかの実施形態では、ストレージゲートウェイ252は、サービスプロ
バイダフロントエンド280を介した、サービスプロバイダ210への全ての接続を開始
し;サービスプロバイダ210は、ゲートウェイ252への接続を開始しない。さらに、
ネットワーク管理者プロセス260は、直接ゲートウェイ252への接続を開始せず;例
えば、ゲートウェイ252を設定および管理するため、ネットワーク管理者プロセス26
0によるゲートウェイ252へのアクセスは、サービスプロバイダフロントエンド280
を介して、サービスプロバイダ210を通過する。
シャドーイングゲートウェイとして、ストレージゲートウェイ252によって提供され
るシャドーイング動作は、クライアントネットワーク250上のユーザーの観点からすれ
ば、効果的に透過的であり得る。顧客プロセス(単数または複数)258は、クライアン
トネットワーク250上のストレージゲートウェイ252によって公開されたデータポー
ト(単数または複数)(例えば、iSCSIポート)に対する読取りおよび書込みを実行
する。顧客プロセス258の観点から見れば、ストレージゲートウェイ252は、任意の
他のデータターゲット(例えば、iSCSIターゲット)のように見え得る。データポー
ト(単数または複数)上で受信された顧客プロセス(単数または複数)258からの読取
り要求は、一次データストアとして機能するローカルデータストア254に伝えられる。
データポート(単数または複数)上で受信された顧客プロセス(単数または複数)258
からの書込み要求は、ローカルデータストア254に伝えられ、リモートデータストア2
16にシャドーイングされる。ゲートウェイ252のシャドーイング動作は、一次データ
ストアの、またはクライアントネットワーク250の性能に著しく影響を及ぼすことなく
、バックグラウンドで実行され得る。
図7に示す「bump in the wire」シャドーイングゲートウェイ設定に
対するユースケースの一例は、障害復旧に対してである。ストレージゲートウェイ252
は、データの更新を、クライアントネットワーク250からストレージサービス212に
送信するが、それは、スナップショット270とも呼ばれる、シャドーボリュームまたは
複数のボリューム内にデータを格納する。データは、ブロックストレージフォーマットで
スナップショット270内に格納され得る。データはローカルデータストア254にも格
納される。ローカルに格納されたボリュームの一部もしくは全部の破損または損失という
結果になる何かが起こった場合、破損したか、または失われたデータは、データストア2
16内に格納されたボリュームのスナップショット270から回復され得る。ストレージ
プロバイダ210は、顧客ネットワーク管理者が(例えば、ネットワーク管理者プロセス
260を介して)それを通じて、リモートデータストア216上のシャドーイングされた
ボリュームから、ローカルに格納されたボリュームの一部または全部のスナップショット
270の回復を要求し得る、インタフェースを提供し得る。少なくともいくつかの実施形
態では、データがそこから回復されるシャドーイングされたボリュームが可能な限り最新
であることを確実にするために、データのスナップショット270を回復する前に、スト
レージゲートウェイ252によって維持される書込みログの少なくとも一部が、リモート
データストア216にアップロードされ得る。いくつかの場合には、少なくともいくつか
のデータが、ストレージゲートウェイ252によって維持される書込みログから直接回復
され得ることに留意されたい。
〔顧客プロセス‐ゲートウェイ通信〕
前述の通り、顧客管理者は、ネットワーク管理者プロセス260を介して、例えば、ゲ
ートウェイ252を設定するために、サービスプロバイダ280フロントエンドを通じて
、ストレージゲートウェイ252(例えば、シャドーイングゲートウェイ)と通信し得る
。少なくともいくつかの実施形態では、1つまたは複数の顧客プロセス258は、ゲート
ウェイ252の要求を行うために、サービスプロバイダ280フロントエンドを介して、
ストレージゲートウェイ252と通信するようにも設定され得る。例えば、顧客プロセス
258は、サービスプロバイダ280フロントエンドを介して、ストレージゲートウェイ
252と通信するように設定されるSQLサーバーであり得る。
〔シャドーイングゲートウェイブートストラップ技術〕
図7に示すように、ストレージゲートウェイ252が、シャドーイングゲートウェイと
して、インストールされ、有効化されて、設定されると、ストレージゲートウェイ252
は、1つまたは複数のデータポート(例えば、iSCSIポート)を、クライアントネッ
トワーク250上の顧客プロセス(単数または複数)258に公開する。クライアントネ
ットワーク250上の顧客プロセス(単数または複数)258は、次いで、ストレージゲ
ートウェイ252データポート(単数または複数)を介して、ローカルデータストア25
4からの読取りおよびローカルデータストア254への書込みを行い得る。読取りおよび
書込み要求が、ローカルデータストア254に渡され、その書込み要求によって示された
書込みデータは、ローカルデータストアのスナップショット(単数または複数)272が
更新され得るように、リモートデータストア216にシャドーイングされる。
しかし、最初にインストールされ、有効化されて、設定された時、または何らかの理由
でオフラインになった後のいずれかで、シャドーイングゲートウェイが顧客のネットワー
ク内でオンラインになると、リモートデータストア216上のスナップショット(単数ま
たは複数)272内にない、ローカルデータストア254内のデータがあり得る。従って
、少なくともいくつかの実施形態は、シャドーイングゲートウェイのためのブートストラ
ッププロセスを提供し得るが、その間、スナップショット(単数または複数)が、ローカ
ルデータストア254上に現在あるデータを正確に反映するように、投入および/または
更新できるよう、ローカルデータストア254からの少なくともいくつかのデータがリモ
ートデータストア216にアップロードされ得る。
図8は、少なくともいくつかの実施形態に従った、ネットワーク環境例内でのシャドー
イングゲートウェイのブートストラップを大まかに示すハイレベルブロック図である。ス
トレージゲートウェイ252が、クライアントネットワーク250上でシャドーイングゲ
ートウェイとしてオンラインになると、ゲートウェイ252は、スナップショット272
をローカルデータストア254と一致させるために、リモートデータストア216にアッ
プロードされる必要のあるローカルデータストア254内のデータがあると判断し得る。
ゲートウェイ252のアップロードプロセスは、次いで、ローカルデータストア254か
らのデータのブロックの、サービスプロバイダ210におけるリモートデータストア21
6へのアップロードを開始し得る。ストレージゲートウェイ252は、また、そのデータ
ポートを顧客プロセス(単数または複数)258に対して公開して、ローカルデータスト
ア254に向けられた読取り要求および書込み要求の受取りおよび処理を開始し、書込み
要求によって示された新規の書込みデータの書込みログへのキャッシングを開始して、書
込みログからの書込みデータのリモートデータストア216へのアップロードを開始し得
る。ローカルデータストア254からのデータのアップロードは、そのようにして、スト
レージゲートウェイ252がそのシャドーイング機能をクライアントネットワーク250
上で実行している間に、バックグラウンドで実行され得る。ローカルデータストア254
からのデータのアップロードが完了すると、ストレージゲートウェイ252は、そのシャ
ドーイング機能の実行を継続する。
図9は、少なくともいくつかの実施形態に従った、シャドーイングゲートウェイのため
のブートストラッププロセスの流れ図である。300に示すように、シャドーイングゲー
トウェイが顧客のネットワーク上でオンラインになる。例えば、ストレージゲートウェイ
の新しいインスタンスが、ネットワーク上にシャドーイングゲートウェイとして、インス
トールされ、有効化されて、設定される。別の例として、シャドーイングゲートウェイの
既存のインスタンスが、何らかの理由でオフラインになった後、オンラインに戻り得;ゲ
ートウェイがオフラインだった間、顧客プロセス(単数または複数)が、データの読取り
および書込みのために、ローカルデータストアに直接伝達していた可能性がある。別の例
として、シャドーイングゲートウェイは、シャドーイング動作が、その間、何らかの理由
で(例えば、書込みログがいっぱいになったため)一時的に中断される、パススルーモー
ドに入り得、そして、パススルーモードを出て、シャドーイング動作を再開している可能
性がある。
302に示すように、シャドーイングゲートウェイは、必要であれば、既存のデータの
ローカルデータストアからリモートデータストアへのアップロードを開始し得る。例えば
、これが新しいシャドーイングゲートウェイで、ローカルデータストアが既にデータを投
入されている場合、ローカルデータストア内の既存のデータは、一致したスナップショッ
トが生成できるように、リモートデータストアにアップロードされる必要がある。別の例
として、パススルーモードを出て、既存のシャドーイングゲートウェイがオンラインに戻
るか、またはシャドーイング動作を再開すると、新規のデータがローカルデータストアに
書き込まれている可能性があり、従って、リモートデータストア上のスナップショットを
、ローカルデータストア上の現在のデータと一致させる必要がある。
304に示すように、シャドーイングゲートウェイは、顧客のネットワーク上に公開さ
れたゲートウェイデータポート(単数または複数)を介して、顧客プロセスから読取りお
よび書込みの受入れを開始し得る。306に示すように、シャドーイングゲートウェイは
、書込みからの書込みデータの書込みログへのキャッシュを開始して、308に示すよう
に、書込みログからの書込みデータのリモートデータストアへのアップロードを開始し得
る。
302で開始された、ローカルデータストアからのデータのアップロードは、シャドー
イングゲートウェイが読取りおよび書込み要求を受け入れて、そのシャドーイング機能を
顧客のネットワーク上で実行している間、バックグラウンドで実行され得る。ローカルデ
ータストアからのデータのアップロードが完了すると、シャドーイングゲートウェイは、
そのシャドーイング機能の実行を継続する。
図9における要素の順番は異なり得ることに留意されたい。例えば、要素302は、要
素304から308までの任意の1つの後に実行され得る。言い換えれば、シャドーイン
グゲートウェイは、ローカルデータストアから既存のデータのアップロードを開始する前
に、読取りおよび書込みの受入れ、ならびにそのシャドーイング機能の実行を開始し得る
図10は、少なくともいくつかの実施形態に従って、パススルーモードに入り、それか
ら回復するシャドーイングゲートウェイの流れ図である。320に示すように、シャドー
イングゲートウェイは、そのシャドーイング機能を中断する(すなわち、書込みデータの
キャッシュおよびアップロードを停止する)ことによりパススルーモードに入り得るが、
その間、顧客のネットワーク上の顧客プロセスからローカルデータストアに向けられた読
取りおよび書込みの受入れおよびサービスを継続している。ゲートウェイは、シャドーイ
ング機能を失敗させ得る何らかの状態を検出すると、パススルーモードに入り得る。一例
として、シャドーイングゲートウェイは、書込みログがいっぱいで、うまくアップロード
できないことを検出すると、パススルーモードに入り得る。ゲートウェイは、検出された
状態をローカルネットワーク管理者に警告し得;管理者は、次いで、警告によって示され
た問題に対処し得る。例えば、管理者は、より多くのメモリを書込みログに割り当て得、
かつ/またはより多くの帯域幅をゲートウェイアップロードプロセスに割り当て得る。管
理者は、次いで、問題が対処されていることをゲートウェイに通知し得る。
シャドーイングゲートウェイが、例えば、パススルーモードを引き起こした検出された
問題が対処されているという指示を受信することにより、パススルーモードを出ることが
できると判断すると、ゲートウェイは、322に示すように、シャドーイングを再開し得
る(すなわち、書込みデータのキャッシュおよびアップロードを開始する)。
パススルーモードを出ると、リモートデータストアにアップロードされていないローカ
ルデータストア内のデータがあり得る。ゲートウェイは、パススルーモードの間に、書込
み要求の受信および処理を継続しているので、新規のデータがローカルデータストアに書
き込まれている可能性がある。従って、シャドーイングゲートウェイは、図8および図9
に示すように、ブートストラップを実行して、324に示すように、パススルーモードか
ら回復するため、少なくともいくつかのデータをローカルデータストアからリモートデー
タストアにアップロードし得る。
少なくともいくつかの実施形態では、シャドーイングゲートウェイのために最適化され
たブートストラッププロセスが、ローカルデータストアからリモートデータストアにアッ
プロードされるデータの量を削減するために採用され得る。最適化されたブートストラッ
ププロセスは、リモートデータストアに既にアップロードされているデータのブロックを
検出し得、従って、既にアップロードされているブロックのアップロードを回避し得る。
最適化されたブートストラッププロセスは、ゲートウェイからリモートデータストアへの
データの一般的なアップロード中に、ストレージゲートウェイプロセスに対して生成およ
び維持される、追跡データを利用し得る。
図11は、少なくともいくつかの実施形態に従って、ゲートウェイからリモートデータ
ストアへブロックをアップロード、更新、および追跡するための方法の流れ図である。通
常のゲートウェイ動作中、ゲートウェイは、360に示すように、サービスプロバイダに
おいて、書込みデータをリモートデータストアに、具体的にはストレージサービスに、ア
ップロードする。ストレージサービスは、書込みデータを受信して、342に示すように
、それぞれのブロック(単数または複数)(例えば、4MBブロック)をリモートデータ
ストアから取得する。ストレージサービスは、次いで、344に示すように、書込みデー
タに従って、それぞれのブロック(単数または複数)を修正し、修正されたブロック(単
数または複数)を、新しいバージョン名でリモートデータストアにアップロードして戻す
。各修正されたブロックに対して、346に示すように、修正されたブロックを示すトー
クンがストレージゲートウェイに送り返される。ストレージゲートウェイは、これらのト
ークンを追跡し;ブロックが修正されるたびに、修正されている参照ブロックがストレー
ジサービスに送信される必要がある。
348に示すように、ストレージゲートウェイは、サービスプロバイダにおいて、定期
的または非定期的に、トークンマニフェスト(token manifest)を更新し
、ローカルに追跡されたトークンの少なくとも一部をパージし得る。ストレージゲートウ
ェイは、多数のトークンを追跡する必要があり得る。少なくともいくつかの実施形態では
、マニフェストは、ストレージゲートウェイから、多数のトークンをローカルに追跡する
必要があるという負担を取り除き得る。ストレージゲートウェイは、マニフェストを、ゲ
ートウェイが受信しているトークンで更新するために、定期的または非定期的にストレー
ジサービスを呼び出し得、それぞれローカルに格納されたトークンをパージし得る。
少なくともいくつかの実施形態では、最適化されたブートストラッププロセスは、マニ
フェスト内の各ブロックのハッシュをチェックする呼出しを行うことにより、どのブロッ
クがアップロードされ、どのブロックがアップロードされていないかを判断するためにマ
ニフェストを利用して、マニフェストによって示されたどのブロックが、ローカルデータ
ストア上のブロックに一致するかに対して、マニフェストによって示されたどのブロック
が、ローカルデータストア上のブロックに一致しないか、従ってアップロードされる必要
があるかを判断し得る。言い換えれば、マニフェストは、ローカルデータストア上のどの
ブロックがダーティブロックであるか、およびどれがダーティブロックでないかを検出す
るために使用される。このようにして、最適化されたブートストラッププロセスは、マニ
フェストを介して、どのブロックが既にアップロードされているかを判断しようと試みて
、既にアップロードされたブロックが再度アップロードされず、ダーティブロックだけが
アップロードされるようにする。少なくともいくつかの実施形態では、最適化されたブー
トストラッププロセスが、アップロードされる必要があると判断するブロック(ダーティ
ブロック)に対して、ダーティブロックから実際にアップロードされるデータの量を削減
するために、これらのブロックをアップロードする際に、データ重複排除技術が適用され
得る。
図12は、少なくともいくつかの実施形態に従った、シャドーイングゲートウェイのた
めの最適化されたブートストラッププロセスの流れ図である。ブートストラッププロセス
は、例えば、ゲートウェイがパススルーモードを出るときに、シャドーイングゲートウェ
イに対して開始される。360に示されるように、ブロックがローカルデータストアから
取得される。362に示されるように、リモートデータストア上に格納され得る、マニフ
ェストが、現在のブロックが、アップロードされる必要のあるダーティブロックであるか
どうかを判断するために、チェックされ得る。364で、現在のブロックがマニフェスト
に従ってダーティである場合には、366に示されるように、データ重複排除技術に従っ
て、ブロックの少なくとも一部がリモートデータストアにアップロードされ得る。方法は
、次いで、368に進む。364で、現在のブロックがマニフェストに従ってダーティで
ない場合、方法は、直接368に進む。368で、さらなるブロックが処理される場合、
方法は、次のブロックを処理するために、要素360に戻る。そうでない場合、ブートス
トラッププロセスは終了する。
〔ストレージゲートウェイセキュリティモデル〕
ストレージゲートウェイの実施形態が、顧客に対するデータ保護、ならびに顧客または
第3者によるゲートウェイの誤用および不正使用(例えば、不法コピー)に対する保護を
提供するセキュリティモデルに従って実装され得る。図13は、少なくともいくつかの実
施形態に従った、ストレージゲートウェイセキュリティモデルの態様を示す。
少なくともいくつかの実施形態では、セキュリティモデルの一態様は、ストレージゲー
トウェイ84が、サービスプロバイダ60との通信で使用するために、ゲートウェイ84
に対するセキュリティ認証情報または他の識別情報なしで、クライアントネットワーク8
0上に配信されて最初にインストールされることである。有効化プロセスが採用され得、
それを介して、顧客ネットワーク上のストレージゲートウェイ84がサービスプロバイダ
60に登録できる。有効化プロセスの少なくともいくつかの実施形態では、ストレージゲ
ートウェイ84は、必要なセキュリティ認証情報を取得するために、それぞれの顧客アカ
ウントに対する正しいゲートウェイとして、サービスプロバイダ60との接続(例えば、
SSL(セキュアソケットレイヤー)/TCP接続)を開始し、サービスプロバイダ60
に対して自身を識別し得る。有効化プロセス中、サービス顧客は、ゲートウェイ84に対
して名前を指定する。少なくともいくつかの実施形態では、サービス顧客は、サービスプ
ロバイダ60でその顧客のアカウントにログインして、ゲートウェイ84を登録する際に
使用される、ゲートウェイ名を含むがそれに限らない、情報をサービスプロバイダ60に
提供する。しかし、サービス顧客は、ストレージゲートウェイ84にログインせず、従っ
て、サービス顧客のセキュリティ認証情報および他のアカウント情報は、ゲートウェイ8
4上で公開されない。これは、サービス顧客に対するセキュリティリスクを最小限にし得
る。このゲートウェイ名は、ゲートウェイ84およびサービス顧客に関連した他のメタデ
ータとともに、サービスプロバイダ60によって格納され、それぞれのゲートウェイ84
の追跡および識別で使用され得る。サービス顧客は、クライアントネットワーク80上で
インストールおよび有効化された1つまたは複数のゲートウェイ84を有し得、各々は一
意の識別名および他のメタデータを有することに留意されたい。図15〜図17Bは、以
下の「ストレージゲートウェイ有効化プロセス」という表題のセクションでさらに説明さ
れるが、少なくともいくつかの実施形態で採用され得る有効化プロセスを示す。有効化プ
ロセスでは、ゲートウェイ84は、サービスプロバイダ60への接続を開始し、ゲートウ
ェイ84プラットフォームに関するメタデータを、公開鍵とともに、サービスプロバイダ
60に提供し得る。サービスプロバイダ60は、次いで、有効化プロセスで使用される、
一時的な一意の有効化キーをゲートウェイ84に提供し得る。さらに、サービス顧客は、
ゲートウェイ84を有効化するために、サービスプロバイダコンソールプロセスを通じて
、顧客のアカウントにログインするように要求され得;そのようにして、ゲートウェイ8
4は、ゲートウェイ84を有効化しようと試みるサービス顧客のアカウントと照合され得
る。ストレージゲートウェイ84により有効化プロセスを通じて取得されたセキュリティ
認証情報および他のメタデータ(例えば、顧客提供のゲートウェイ名)が、次いで、ゲー
トウェイ84をサービスプロバイダ84プロセスに対して識別するために、サービスプロ
バイダ60ネットワークの様々なプロセスとの通信でストレージゲートウェイ84によっ
て使用され得る。
少なくともいくつかの実施形態では、図13に示すように、セキュリティモデルの別の
態様は、ストレージゲートウェイ84は、クライアントネットワーク80上で顧客プロセ
ス(単数または複数)88に対して公開された1つまたは複数のデータポート(例えば、
iSCSIポート)への外部から開始された接続のみを受け入れる。ストレージゲートウ
ェイは、他の外部から開始された接続を受け入れず、外部プロセスへの全ての必要な接続
を開始する。例えば、少なくともいくつかの実施形態では、ストレージゲートウェイ84
は、サービスプロバイダ60への少なくとも1つの安全な接続92(例えば、SSL(セ
キュアソケットレイヤー)/TCP接続)を開始するが;サービスプロバイダ60は、し
かし、ゲートウェイ84への接続を開始できない。ゲートウェイ開始接続および少なくと
もいくつかの実施形態で使用され得るロングポーリング技術を使用した、リモートゲート
ウェイ管理のための方法例が、図18〜図20に示されている。
さらに、図13に示すように、少なくともいくつかの実施形態では、サービス顧客(例
えば、ネットワーク管理者プロセス90)は、ゲートウェイ84を設定および管理するた
めに、ストレージゲートウェイ84に直接接続せず;代わりに、ストレージゲートウェイ
84に対する設定および動作要求が、サービスプロバイダ60を通して行われ、それは、
要求を、ゲートウェイ84によって開始された安全な通信チャネル92を介してゲートウ
ェイ84に渡す。例えば、図18〜図21に示すように、ゲートウェイ84に対する設定
および動作要求は、サービスプロバイダ60ネットワーク上のコンソールプロセスを通し
て、ネットワーク管理者プロセス90によって、またはそれを介して実行され得る。少な
くともいくつかの実施形態では、コンソールプロセスは、顧客のゲートウェイ84に向け
られた、受信された設定要求または動作要求が、ゲートウェイ開始接続92を維持するゲ
ートウェイ制御プレーンに転送される。ゲートウェイ制御プレーンは、要求の対象である
ゲートウェイ84への現在の接続、例えば、特定のゲートウェイ制御サーバー上で維持さ
れた接続、を探し、要求がその接続を介してゲートウェイ84に転送される。
従って、少なくともいくつかの実施形態では、ユーザー、ネットワーク管理者、または
顧客のプロセスは、ストレージゲートウェイ84への接続を直接開始することもそれに「
ログイン」することもできず、サービスプロバイダ60ネットワーク上のオペレータまた
はプロセスなどの外部の人またはプロセスもストレージゲートウェイ84への接続を開始
できない。これは、ゲートウェイセキュリティモデルの他の態様とともに、ストレージゲ
ートウェイ84上のセキュリティ認証情報および他の動作情報が、外部の人またはプロセ
スによって故意または故意ではなく危険にさらされるのを防ぐのに役立ち得る。
セキュリティモデルの別の態様では、ゲートウェイの有効化および動作中の、ストレー
ジゲートウェイとストレージサービスとの間の全ての通信が、保護されて暗号化され得る
。前述のように、セキュリティモデルの一態様は、ストレージゲートウェイとストレージ
サービスとの間の通信が、ゲートウェイ開始の安全な接続(例えば、SSL/TCP接続
)を通して実行されることである。暗号化技術、例えば、公開/秘密鍵の暗号化が、ゲー
トウェイ開始の安全な接続を通した通信で使用され得る。
図14は、少なくともいくつかの実施形態に従った、ストレージゲートウェイの有効化
、設定、および動作中の、ゲートウェイセキュリティモデルの少なくともいくつかの態様
を示す、流れ図である。400に示すように、ストレージゲートウェイが、顧客ネットワ
ーク上でインスタンス生成され得る。例えば、ストレージゲートウェイのインスタンスを
生成するために、ストレージゲートウェイは、通常、ファイアウォールの後ろで、サービ
ス顧客のローカルネットワークまたはデータセンター上に仮想または物理アプライアンス
としてインストールされ得る。例えば、少なくともいくつかの実施形態では、ストレージ
ゲートウェイは、サービス顧客のローカルネットワーク上のサーバーシステムなどの、1
つまたは複数のコンピューティング装置上にダウンロードされ得るか、または他の方法で
インストールされ得る仮想アプライアンスとして実装され得る。あるいは、ストレージゲ
ートウェイは、サービス顧客のローカルネットワークに結合され得る専用装置またはアプ
ライアンスとして実装され得;その専用装置またはアプライアンスは、ストレージゲート
ウェイの機能を実装するソフトウェアおよび/またはハードウェアを含み得る。402に
示すように、インスタンス生成されたストレージゲートウェイは、ゲートウェイを識別し
て、ゲートウェイセキュリティ認証情報を取得するために、サービスプロバイダおよび顧
客とともに有効化プロセスを開始する。少なくともいくつかの実施形態では、セキュリテ
ィ認証情報は、ゲートウェイ提供の公開鍵で署名された証明書を含む。有効化プロセス例
が、図15〜図17Bに関連して以下で説明される。有効化プロセスは、ゲートウェイが
顧客ネットワーク上に最初にインストールされると、ゲートウェイによって開始され得、
また、他の時に、例えば、ゲートウェイ装置が、アップグレード、保守、または何らかの
他の理由のために電源が切られていた後に電源がオンになった時にも開始され得ることに
留意されたい。図14の404に示されるように、ストレージゲートウェイは、サービス
プロバイダへの安全な接続を確立する。少なくともいくつかの実施形態で使用され得るロ
ングポーリング技術を使用するゲートウェイ開始接続のための方法例が、図18〜図21
に示される。図14の406に示されるように、顧客は、サービスプロバイダコンソール
プロセスを通して、ストレージゲートウェイを設定および操作する。ゲートウェイ開始接
続および少なくともいくつかの実施形態で使用され得るロングポーリング技術を使用した
、リモートゲートウェイ管理のための方法例が、図18〜図21に示されている。図14
の408に示されるように、ストレージゲートウェイは、例えば、ストレージサービスプ
ロセスと通信するために、ゲートウェイをサービスプロバイダに対して識別するための有
効化プロセス中に取得されたゲートウェイセキュリティ認証情報およびおそらく他のメタ
データを使用して、サービスプロバイダと通信する。
〔ストレージゲートウェイ有効化プロセス〕
ストレージゲートウェイの実施形態は、例えば、オンプレミス記憶装置として、および
サービス顧客のネットワークと、サービスプロバイダによって提供されるストレージサー
ビスとの間のインタフェースとして、機能し得る。少なくともいくつかの実施形態では、
ストレージゲートウェイは、顧客データセンターで顧客のローカルネットワークインフラ
ストラクチャに結合されたサーバーシステムなどの、1つまたは複数のコンピューティン
グ装置上にダウンロードされ得るか、または他の方法でインストールされ得る仮想装置ま
たはアプライアンスとして実装され得る。あるいは、ストレージゲートウェイは、顧客の
ローカルネットワークインフラストラクチャに結合され得る専用装置またはアプライアン
スとして実装され得る。専用装置またはアプライアンスは、ゲートウェイの機能を実現す
るソフトウェアおよび/またはハードウェアを含み得る。
少なくともいくつかの実施形態では、ゲートウェイがインストールされた後にストレー
ジゲートウェイを使用するために、ゲートウェイはサービスプロバイダで有効化される必
要がある。この節は、ストレージゲートウェイの識別、認証、および認可が、ストレージ
ゲートウェイのブートストラップまたは有効化中に実行され得る方法を説明する。ゲート
ウェイ有効化方法では、ストレージゲートウェイが識別されて、顧客のサービスプロバイ
ダアカウントに関連付けられる。しかし、顧客の認証情報は、有効化プロセス中にストレ
ージゲートウェイに公開されない。少なくともいくつかの実施形態では、顧客は、サービ
スプロバイダで顧客のアカウントにログインして、ゲートウェイ84を登録する際に使用
される、ゲートウェイ名を含むがそれに限らない、情報をサービスプロバイダに提供する
。しかし、顧客は、ストレージゲートウェイにログインせず、従って、顧客のセキュリテ
ィ認証情報および他のアカウント情報は、ゲートウェイ上で公開されない。これは、顧客
に対するセキュリティリスクを最小限にし得る。少なくともいくつかの実施形態では、顧
客により有効化プロセスで使用されるサービスプロバイダアカウントは、図5に示される
ように、ストレージサービスによって提供される他のストレージリソースおよびハードウ
ェア仮想化サービスによって提供される仮想化ハードウェアリソースを含むがそれらに限
らない、サービスプロバイダによって顧客に提供される他のリソースを管理するために顧
客が使用した、同一のアカウントであり得る。
図15は、少なくともいくつかの実施形態に従って、ゲートウェイ有効化プロセスに関
与する、サービス顧客およびサービスプロバイダ構成要素または実体を示すネットワーキ
ング環境例のハイレベルブロック図である。これらの参与するものは、ストレージゲート
ウェイ84、ネットワーク管理者プロセス90、コンソールプロセス68、およびゲート
ウェイ制御70を含み得るが、それらに限らない。ストレージゲートウェイ84は、通常
、ファイアウォールの後ろで、サービス顧客のローカルネットワークまたはデータセンタ
ー(例えば、クライアントネットワーク80)上に仮想または物理アプライアンスとして
インストールされ得る。例えば、ストレージゲートウェイ84は、例えば、仮想マシン内
で実行する仮想アプライアンスであり得、クライアントネットワーク80上のサーバー装
置上にダウンロードされてインスタンス生成され得る。サービスプロバイダ60ネットワ
ーク上のコンソールプロセス68は、顧客のアカウントにサインオンするために、例えば
、クライアントネットワーク80上の装置から、またはクライアントネットワーク80に
外部の装置から、ネットワーク管理者プロセス90によって、またはそれを通してアクセ
ス可能であり得る。例えば、コンソールプロセス68は、サービスプロバイダ60によっ
て提供されるアカウントおよびリソースを表示および管理するために、ネットワーク管理
者が、ネットワーク管理者プロセス90を通して、それぞれのサービス顧客のアカウント
にそれを介してサインオンし得る、ウェブインタフェースまたは何らかの他のインタフェ
ースを提供し得る。サービスプロバイダ60ネットワークのゲートウェイ制御70プロセ
スまたはプレーンは、サービスプロバイダ60の1つまたは複数の顧客においてインスト
ールされた1つまたは複数のストレージゲートウェイ(単数または複数)84に対して追
跡および管理機能を実行し得る。ゲートウェイ制御70およびコンソールプロセス68は
、例えば、サービスプロバイダ60ネットワーク上の1つまたは複数のサーバーコンピュ
ータ装置上で実装され得る。少なくともいくつかの実施形態では、ゲートウェイ制御70
は、負荷分散および高可用性を提供するため、2つ以上ゲートウェイ制御サーバーを含む
制御プレーンとして実装され得る。
図16Aおよび図16Bは、少なくともいくつかの実施形態に従って、ゲートウェイ有
効化プロセス中に、図15に示す構成要素間のやりとりを示すプロセス流れ図である。有
効化プロセスは、顧客の観点から見れば、2つのやりとりの点を含む。第1は、図16A
に示すように、顧客がゲートウェイ84とやりとりする。第2は、図16Bに示すように
、顧客が、サービスプロバイダ(SP)コンソール68とやりとりする。
図16Aは、有効化プロセス中に、顧客(図15でネットワーク管理者プロセス90に
よって表される)、ゲートウェイ84、およびサービスプロバイダ(SP)ゲートウェイ
制御70の間のやりとりを示す。ゲートウェイ84がインストールされ、かつ/または電
源をオンにされた後、ゲートウェイ84は、公開鍵(例えば、RSA鍵ペア)を生成し、
ゲートウェイ84がその上にインストールされている装置のハードウェアおよび/または
ソフトウェアに関するメタデータを収集する。例えば、メタデータは、IPアドレス、M
ACアドレス、または装置の他のハードウェアおよびソフトウェア特性を含み得る。ゲー
トウェイ84は、次いで、公開鍵およびメタデータを、例えば、HTTP POSTを通
じて、ゲートウェイ制御70に公開する。それに応じて、ゲートウェイ制御70は、有効
化キーを生成し得、その有効化キーをゲートウェイ84に返す。有効化キーは、グローバ
ル一意識別子(GUID)、例えば、Nビットのランダムに生成された数であり得る。ゲ
ートウェイ制御70は、有効化キーを、ゲートウェイ84から取得された公開鍵およびメ
タデータとともに、格納し得る。
ゲートウェイ制御70から有効化キーを受信した後、ゲートウェイ84は、ゲートウェ
イ84 VMまたは装置上の固定ポート(IPアドレス:ポート)において、クライアン
トネットワーク80内で有効化キーを提供する。顧客は次いで、ネットワーク管理者プロ
セス90を介して、有効化キーを取得するために、ゲートウェイ84の固定ポートにアク
セスし得;そのアクセスは、クエリ文字列内の有効化キーで、サービスプロバイダ(SP
)コンソール68プロセスにリダイレクトされる。
少なくともいくつかの実施形態では、有効化キーは、ある期間または存続期間(例えば
、30分間)、有効であり、その後、有効化キーは失効する。少なくともいくつかの実施
形態では、有効化キーは、指定された存続期間の間だけ有効であるので、失効した有効化
キーを除去する、バックグラウンドのガーベジコレクションプロセスが、サービスプロバ
イダ60で提供され得る。少なくともいくつかの実施形態では、有効化キーに対する存続
期間は、境界例を処理するために、サービスプロバイダ60側上では、ゲートウェイ84
上よりも長い可能性がある(例えば、サービスプロバイダ60側上で45分、ゲートウェ
イ84上で30分)。
図16Bは、有効化プロセス中に、顧客(図15でネットワーク管理者プロセス90に
よって表される)、サービスプロバイダ(SP)コンソール68、およびサービスプロバ
イダ(SP)ゲートウェイ制御70の間のやりとりを示す。ネットワーク管理者プロセス
90がゲートウェイ84から有効化キーを取得すると、ゲートウェイ95を顧客のサービ
スプロバイダ60アカウントに追加するために有効化キーが使用され得る。SPコンソー
ル68にリダイレクトされた後、顧客がそのアカウントに(例えば、ネットワーク管理者
プロセス90を介して)ログインし、ゲートウェイ84がゲートウェイ制御70に対して
公開したメタデータをフェッチするために、クエリ文字列からの有効化キーが使用される
。このメタデータの少なくとも一部が(例えば、ネットワーク管理者プロセス90を介し
て)顧客に表示される。ゲートウェイ制御70からSPコンソール68に返されて、顧客
90に表示されるメタデータは、ゲートウェイ84によってゲートウェイ制御70に以前
に提供されたメタデータであり、有効化されるゲートウェイ84に関して顧客90に通知
するために使用され得る。表示されるメタデータは、そのメタデータによって示されたそ
れぞれのゲートウェイ84が、顧客のネットワークでインストールされているゲートウェ
イ84であることを顧客90に確認し得る。例えば、ゲートウェイ84のIPアドレスが
表示され得、顧客90が確認し得るのは、ゲートウェイ84のIPアドレスである。さら
に、アカウントにログインするために顧客90から取得された認証情報(例えば、顧客ア
カウント番号および/または他の顧客識別情報)が、顧客90を、それぞれのゲートウェ
イ84を所有する顧客として認証し、顧客90をそれぞれのゲートウェイ84と関連付け
る際に使用され得る。
顧客90は、SPコンソール68によって、追加の情報、例えば、ゲートウェイ84に
対する名前を入力するようにも促され得る。表示されたメタデータを見て検証した後、顧
客90は、例えば、「確認」または「有効化」または「登録」ユーザーインタフェース要
素を選択することにより、SPコンソール68を介して、ゲートウェイ84のゲートウェ
イ制御70への登録を認可し得る。顧客90がSPコンソール68によってゲートウェイ
84の登録を認可する場合、SPコンソール68は、顧客90から取得された有効化キー
をゲートウェイ制御70に渡し得る。例えば、ゲートウェイ84に対する顧客提供名、顧
客アカウントIDなどの顧客情報も、ゲートウェイ制御70に渡され得る。顧客提供の有
効化キーが、ゲートウェイ84によりゲートウェイ制御70に以前に提供された有効化キ
ーに対して照合される。顧客情報(例えば、ゲートウェイ84の名前)が、例えば、ゲー
トウェイ84によって以前に提供されたメタデータとともに、ゲートウェイ制御70によ
って格納される。
少なくともいくつかの実施形態では、SPコンソール68とSPゲートウェイ制御70
との間、およびゲートウェイ84とSPゲートウェイ制御70との間で交換される全ての
データが、暗号化され得る。少なくともいくつかの実施形態では、顧客の認証情報、アク
セスキーまたは秘密鍵などの極秘データは、有効化プロセス内で渡されない。
図16Aを再度参照すると、少なくともいくつかの実施形態では、SPゲートウェイ制
御70が、ゲートウェイ84の登録および有効化に関する全ての情報の維持に責任を負う
。ゲートウェイ84は、その間、証明書署名要求(CSR)を生成するための情報を求め
て、SPゲートウェイ制御70を継続的にポーリングする。図16Bに示すように、SP
ゲートウェイ制御70が、SPコンソール68を介して、顧客90から認可を受信し、顧
客提供の有効化キーを、ゲートウェイ84によって提供された有効化キーと照合すると、
図16Bに示すように、SPゲートウェイ制御70は、顧客90から受信された顧客情報
の少なくとも一部を含むが、それに限らない、メタデータを提供することにより、ゲート
ウェイ84のGET要求に応答し得る。ゲートウェイ84は、次いで、CSRを生成し、
SPゲートウェイ制御70に送信する。CSRに応答して、SPゲートウェイ制御70は
証明書を生成し、ゲートウェイ84の以前に提供された公開鍵でその証明書に署名する。
少なくともいくつかの実施形態では、証明書は、顧客および/またはゲートウェイ情報、
例えば、顧客アカウントIDおよび顧客提供のゲートウェイ84名を含み得る。SPゲー
トウェイ制御70は、次いで、ゲートウェイ84によって以前に提供された公開鍵で暗号
化された、自己署名証明書をゲートウェイ84に送信することにより、応答する。証明書
は、次いで、ゲートウェイ84からサービスプロバイダ60への将来の通信で、認証のた
めに使用され得る。
少なくともいくつかの実施形態では、顧客が、同じ有効化キーを使用して複数のゲート
ウェイ84を有効化するのを防ぐ支援をするために、システム/ハードウェア固有の情報
も、ゲートウェイ84によってSPゲートウェイ制御70に公開される有効化キーととも
に、含まれ得る。
図17Aおよび図17Bは、少なくともいくつかの実施形態に従って、ストレージゲー
トウェイの観点から見た、有効化プロセスの流れ図である。図17Aの500に示すよう
に、ゲートウェイがインストールされ、かつ/または電源をオンにされた後、ゲートウェ
イは、永続記憶装置をチェックして、それが既に有効化されているかどうかを判断する。
例えば、ゲートウェイは、アップグレード、保守、または何らかの他の理由のために電源
が切られていた可能性がある。ゲートウェイが有効化されている場合、有効化プロセスは
、図17Bの要素530に進み、そこで、ゲートウェイは、SPゲートウェイ制御から設
定情報を取得し得る。
図17Aの500で、ゲートウェイが以前に有効化されていない場合、有効化プロセス
は、図17Aの要素502に進み、そこで、ゲートウェイは、証明書署名要求(CSR)
を生成するための任意の永続的な顧客情報を有するかどうかをチェックする。ゲートウェ
イが永続的な顧客情報を有する場合、プロセスは、図17Bの要素520に進む。ゲート
ウェイが永続的な顧客情報をもたない場合、プロセスは、図17Aの要素504に進む。
504で、ゲートウェイは、公開鍵(例えば、RSA鍵ペア)を生成する。ゲートウェイ
は、ゲートウェイがその上にインストールされている装置のハードウェアおよび/または
ソフトウェアに関するメタデータも収集し得る。例えば、メタデータは、IPアドレス、
MACアドレス、または装置の他のハードウェアおよびソフトウェア特性を含み得る。ゲ
ートウェイは、次いで、506に示すように、公開鍵およびメタデータをSPゲートウェ
イ制御に公開する。508で、ゲートウェイは、有効化キーをSPゲートウェイ制御から
受信する。510で、ゲートウェイは、サービス顧客のネットワーク上の固定ポート(I
Pアドレス:ポート)上で、有効化キーを提供する。
図17Aの512〜516に示すように、ゲートウェイは、次いで、CSRを生成する
ために必要とされる顧客情報を求めて、SPゲートウェイ制御をポーリングし得る。顧客
情報は、顧客のアカウントIDおよびゲートウェイに対する顧客提供名を含み得るが、そ
れに限らない。512で、ゲートウェイは、例えば、1分間またはいくらかの他の期間、
一時停止し得、次いで、SPゲートウェイ制御から情報を受信しているかどうかをチェッ
クし得る。514で、情報が受信されていない場合、516に示すように、ゲートウェイ
は、有効化キーが失効しているかどうかをチェックする。少なくともいくつかの実施形態
では、有効化キーは、ある期間または存続期間(例えば、30分間)、有効であり、その
後、有効化キーは失効する。516で、有効化キーが失効していない場合、有効化プロセ
スは、SPゲートウェイ制御のポーリングを継続するために、図17Aの要素512に戻
る。516で、有効化キーが失効している場合、有効化プロセスは、新しい有効化キーを
SP制御プレーンから取得するために、図17Aの要素504に戻る。
図17Aの514で、顧客情報がSPゲートウェイ制御から受信されている場合、有効
化プロセスは、図17Aの要素518に進み、そこで、ゲートウェイは、顧客情報を永続
的メモリに格納する。少なくともいくつかの実施形態では、受信された顧客情報は暗号化
され得、それ故、ゲートウェイは、情報を格納する前に情報を復号し得る。プロセスは、
次いで、図17Bの要素520に進む。
図17Bを参照すると、520において、ゲートウェイは、それが既に証明書を有する
かどうかをチェックし得る。520で、ゲートウェイが既に証明書を有している場合、プ
ロセスは図17Bの要素530に進み得、そこで、ゲートウェイは設定情報をSPゲート
ウェイ制御から取得し得る。520で、ゲートウェイが証明書を有していない場合、プロ
セスは要素522に進む。522で、ゲートウェイは、CSRを生成し、そのCSRをS
P制御プレーンに送信する。524で、ゲートウェイは、CSRの受信に応答して、SP
制御プレーンからセキュリティ証明書を受信し;その証明書は、ゲートウェイに対するセ
キュリティ認証情報として機能し得る。526で、ゲートウェイは、有効化キーの提供(
図17Aのステップ510を参照)を無効にし得る。528で、ゲートウェイは、有効化
プロセスで取得されている情報(証明書、顧客指定ゲートウェイ名など)を持続するため
に、その現在の状態を保存し得る。
この時点で、有効化プロセスが完了する。530で、ゲートウェイは、設定情報をSP
ゲートウェイ制御から取得し得る。少なくともいくつかの実施形態では、顧客が、ゲート
ウェイがうまく有効化されたことを通知されると、顧客はSPコンソールを介して、イン
ストールおよび有効化されたゲートウェイを設定し得る。SPコンソールは、顧客がそれ
にログオンできる、ユーザーインタフェース、例えば、ウェブインタフェースを、顧客の
アカウントに提供し、(顧客指定の名前によって識別され得る)ゲートウェイを選択して
、そのゲートウェイに対する設定を指定し得る。少なくともいくつかの実施形態では、S
Pコンソールは、この設定をSPゲートウェイ制御に伝え、それは、次いで、ゲートウェ
イ自身によって開始された接続(例えば、およびSSL/TCP接続)を介して、指定さ
れたゲートウェイを設定する。
〔有効化キーのセキュリティ〕
図17Aの510に示されるように、有効化キーがサービス顧客のネットワーク上の公
開IPアドレスで利用可能にされ、暗号化されていない状態で、クエリ文字列内で顧客か
らSPコンソールに渡され得る。有効化キーは限られた存続期間をもち、IPアドレスは
顧客にのみ知られているが、有効化キーがIP:ポートで公開される短い期間がまだある
。有効化キーは、ゲートウェイによってSPゲートウェイ制御にも公開されるメタデータ
なしでは、単独で役に立たないが、ゲートウェイは、この短期間の間、ある程度脆弱であ
り得る。少なくともいくつかの実施形態では、顧客は、悪意のあるユーザーまたはプロセ
スが有効化キーを取得して、誰か他の人のゲートウェイを有効化するのを防ぐ支援をする
ために、セキュリティグループまたは他のセキュリティ手段を利用し得る。さらに、顧客
はゲートウェイを有効化するために、SPコンソールプロセスにログインする必要がある
ので、ゲートウェイは、それを有効化しようと試みる顧客アカウントと照合できる。
〔ゲートウェイ開始接続を使用したリモートゲートウェイ管理〕
ストレージゲートウェイの実施形態は、例えば、オンプレミス記憶装置として、および
サービス顧客のネットワークと、サービスプロバイダによって提供されたストレージサー
ビスとの間のインタフェースとして、機能し得る。少なくともいくつかの実施形態では、
インストールされたストレージゲートウェイは、サービスプロバイダで実装されたゲート
ウェイ制御技術を通して、有効化、追跡、設定、および管理され得る。図18は、少なく
ともいくつかの実施形態において採用され得るゲートウェイ制御アーキテクチャ例を示す
ハイレベルブロック図である。少なくともいくつかの実施形態では、図18に示すように
、ゲートウェイ制御70は、2つ以上のゲートウェイ制御サーバー74(例えば、ゲート
ウェイ制御サーバー74A、74B、74C、...)のグループを含み得る。複数のゲ
ートウェイ制御サーバー74は、負荷分散および高可用性を提供し得る。動作中、所与の
時に、サービス顧客のネットワーク80上の特定のインストールおよび有効化されたスト
レージゲートウェイ84が、ゲートウェイ制御サーバー74の特定の1つに接続される。
しかし、ストレージゲートウェイ84は、いつか他の時に、異なるゲートウェイ制御サー
バー74に接続され得ることに留意されたい。
ストレージゲートウェイ84に現在接続されているゲートウェイ制御サーバー74は、
要求またはコマンドを中間ネットワーク50を介してストレージゲートウェイ84に送信
することにより、ストレージゲートウェイ84を管理し得る。ストレージゲートウェイ8
4を管理するためにゲートウェイ制御サーバー74から開始される要求は、設定変更要求
および動作要求を含み得るが、それらに限らない。しかし、ストレージゲートウェイ84
は、クライアントネットワーク80ファイアウォールの後ろに配備され得るので、ゲート
ウェイ制御サーバー74は、例外規則がゲートウェイ84に対して作成されない限り、フ
ァイアウォールの外側からゲートウェイ84に到達できないことがあり得る。さらに、少
なくともいくつかの実施形態では、ストレージゲートウェイ84に対するセキュリティモ
デルは、サービスプロバイダプロセスを含むがそれに限らない、外部プロセスが、ストレ
ージゲートウェイ84への接続を開始するのを許可されないことを指示し得る。
少なくともいくつかの実施形態では、サービスプロバイダがゲートウェイ84への接続
を開始するのを許可しないセキュリティモデルを実施している間に、ゲートウェイ制御サ
ーバー74が、要求またはコマンドをストレージゲートウェイ84に送信できるようにす
るために、ゲートウェイ開始接続を使用したリモートゲートウェイ管理のための方法およ
び装置が提供される。リモートゲートウェイ管理方法では、ゲートウェイは、接続要求を
送信することにより、サービスプロバイダへの接続を開始する。少なくともいくつかの実
施形態では、負荷分散装置72を介して、特定のゲートウェイ制御サーバー74への接続
が確立される。しかし、ゲートウェイ84は、要求メッセージを、ゲートウェイ開始接続
を介して、サービスプロバイダに送信しない。代わりに、サービスプロバイダ(例えば、
ゲートウェイ制御サーバー74)は、ゲートウェイ84が応答を待つ間、ゲートウェイ8
4に送信される接続保留要求を保持する。ゲートウェイ84に対する要求を、例えば、ネ
ットワーク管理者プロセス90または、ゲートウェイ84がその上にインストールされて
いるクライアントネットワーク80上の何らかの他のプロセスから、受信すると、サービ
スプロバイダ(例えば、ゲートウェイ制御サーバー74)は、要求を、サービスプロバイ
ダ(例えば、ゲートウェイ制御サーバー74)が保持し続けているゲートウェイ開始接続
を介して、ゲートウェイ84に送信する。ゲートウェイ84は、要求に対する応答も、ゲ
ートウェイ開始接続を介して、サービスプロバイダ80に送信し得る。
少なくともいくつかの実施形態では、ゲートウェイ84からの接続がそれに対して確立
されるゲートウェイ制御サーバー74(例えば、ゲートウェイ制御サーバー74A)は、
接続を登録サービス76に登録し得る。ゲートウェイ制御サーバー74が、それに対する
接続を保持していないゲートウェイ74に対する要求を受信すると、ゲートウェイ制御サ
ーバー74は、どのゲートウェイ制御サーバー74が接続を保持しているかを見つけるた
めに、登録サービス76に問合せを行い得、その要求を、ゲートウェイ84への接続を保
持するゲートウェイ制御サーバー74に転送し得る。いくつかの実施形態では、代替とし
て、それに対する接続を保持していないゲートウェイ74に対する要求を受信するゲート
ウェイ制御サーバー74は、その要求を、2つ以上の他のゲートウェイ制御サーバー84
に単にブロードキャストし得る。
少なくともいくつかの実施形態では、サービスプロバイダ80は、ゲートウェイ開始接
続を監視するために、pingプロセスを採用し得る。pingプロセスでは、ゲートウ
ェイ74への接続を保持するゲートウェイ制御サーバー84は、定期的または非定期的に
pingメッセージをゲートウェイ84に送信し得る。ゲートウェイ84は、pingメ
ッセージに応答する。ゲートウェイ84が、ある指定されたタイムアウト期間の間pin
gメッセージに応答していないことを検出すると、ゲートウェイ制御サーバー74は、接
続を中断し得、そして、登録サービス76でその接続の登録を抹消し得る。
少なくともいくつかの実施形態では、pingメッセージは、定期的な間隔でゲートウ
ェイ(単数または複数)74に送信され得る。少なくともいくつかの実施形態は、接続が
信頼できていないゲートウェイ84に対しては短い間隔で、また、接続が一般に信頼でき
ているゲートウェイに対してはもっと長い間隔でpingメッセージが送信されるように
、特定のゲートウェイ84の接続の信頼性に従って、ping間隔を調整し得る。pin
g間隔は、接続が信頼できるままの時は、所与のゲートウェイ84に対して時間とともに
増加し得、接続が信頼できていない所与のゲートウェイ84に対しては減少し得る。
少なくともいくつかの実施形態では、ゲートウェイ84は、そのゲートウェイ開始接続
が終了しているか、または中断されているかを検出し得る。接続が終了していることを検
出すると、ゲートウェイ84は、接続を再確立するために、別の接続要求をサービスプロ
バイダ80に送信し得る。接続は、以前に接続を保持していたものとは異なるゲートウェ
イ制御サーバー74に再接続され得ることに留意されたい。少なくともいくつかの実施形
態では、ゲートウェイ84は、pingメッセージを監視して、pingメッセージが指
定されたタイムアウト期間の間、その接続を通して受信されていないと判断することによ
り、そのゲートウェイ開始接続が中断されていると判断し得る。
このようにして、リモートゲートウェイ管理方法では、ゲートウェイ84は、サービス
プロバイダへの接続を確立して、サービスプロバイダからの要求(単数または複数)を予
期および待機する。サービスプロバイダは、ゲートウェイ84に対する接続保留要求を保
持する。ゲートウェイ84に対する要求を受信すると、サービスプロバイダは、その要求
を、ゲートウェイ開始接続を通してそれぞれのゲートウェイに転送する。サービスプロバ
イダおよびゲートウェイの両方が、接続を監視および管理して、接続が何らかの理由で中
断した場合に、その中断が検出されて、ゲートウェイ84が接続を再確立できるようにす
る。
図19は、少なくともいくつかの実施形態に従って、ゲートウェイ開始接続を使用した
リモートゲートウェイ管理のための方法の流れ図である。600に示すように、ゲートウ
ェイは、接続要求を介して、ゲートウェイ制御サーバーへの接続を確立する。例えば、ゲ
ートウェイは、図18に示すように、接続要求により、ゲートウェイ制御サーバーとのア
ウトバウンドSSL/TCP接続を、負荷分散装置を通して確立し得る。図19の602
に示すように、ゲートウェイへの接続が確立されると、ゲートウェイ制御サーバーは、接
続を持ち続け、その接続を維持する。図19の604に示すように、ゲートウェイ制御サ
ーバーは、ゲートウェイに対する要求を受信し得る。例えば、ゲートウェイ制御サーバー
74は、図18に示すように、ゲートウェイ84に対する設定要求または動作要求を、そ
れぞれのネットワーク管理者プロセス90からコンソールプロセス68を介して受信する
。ゲートウェイ制御サーバーがゲートウェイに対する要求を受信した後、ゲートウェイ制
御サーバーは、図19の606に示すように、その要求をゲートウェイ開始接続を介して
、ゲートウェイに転送する。
再度図18を参照すると、サービス顧客は、示されたストレージゲートウェイ84に対
する設定変更要求または動作要求を開始するために、サービスプロバイダコンソール60
にアクセスし得る。例えば、ネットワーク管理者は、ネットワーク管理者プロセス90を
通して、要求を、コンソールプロセス68を介して送信し得る。コンソールプロセス68
は、次いで、要求を、負荷分散装置72の後ろのゲートウェイ制御サーバー74に送信し
得る。しかし、コンソールプロセス68がそれに対して要求を送信するゲートウェイ制御
サーバー72は、それぞれのゲートウェイ84への接続を保持するゲートウェイ制御サー
バー72ではない可能性がある。例えば、ゲートウェイ制御サーバー72Bがゲートウェ
イ84への接続を保持し得るが、一方、ゲートウェイ84に対する要求がゲートウェイ制
御サーバー72Aに送信され得る。それ故、コンソールプロセス68から要求を受信する
ゲートウェイ制御サーバー72(例えば、ゲートウェイ制御サーバー72A)は、要求を
適切なゲートウェイ84に配信するために、ゲートウェイ84への接続を保持するゲート
ウェイ制御サーバー(例えば、ゲートウェイ制御サーバー72B)に要求を転送する必要
があり得る。このように、少なくともいくつかの実施形態は、ゲートウェイ制御サーバー
72(例えば、サーバー72A)が、コンソールプロセス68から受信された、要求によ
って示された特定のゲートウェイ84への接続を現在保持するゲートウェイ制御サーバー
72(例えば、サーバー72B)へ、特定のゲートウェイ84に対する要求を送達できる
ようにする方法または複数の方法を、提供し得る。
いくつかの実施形態では、これを達成するために、サーバー72がそれに対する接続を
保持していないゲートウェイ84に対する要求を受信するゲートウェイ制御サーバー72
(例えば、サーバー72A)は、そのピアゲートウェイ制御サーバー72の全てに対して
、要求をブロードキャストし得る。図20は、いくつかの実施形態に従って、ゲートウェ
イ制御サーバーがゲートウェイ要求をそのピアサーバーにブロードキャストするための方
法の流れ図である。620に示すように、各ゲートウェイ制御サーバー72がインスタン
ス生成されると、サーバー72は登録サービス76に登録し得る。ゲートウェイ制御サー
バー72が終了すると、サーバー72は、登録サービス76から登録を抹消される。登録
サービス76は、例えば、データベースサービスまたは分散ストレージサービスによって
後援され得る。622に示すように、ゲートウェイ制御サーバー72(例えば、サーバー
72A)は、サーバー72がそれに対する接続を保持していないゲートウェイ84に対す
る要求を受信し得る。要求をそのピアゲートウェイ制御サーバー72にブロードキャスト
するために、ゲートウェイ制御サーバー72(例えば、サーバー72A)は、624に示
すように、そのピアゲートウェイ制御サーバー72(例えば、サーバー72Bおよび72
C)を発見するために、登録サービス76をポーリングし得る。ゲートウェイ制御サーバ
ー72(例えば、サーバー72A)は、次いで、626で示すように、登録サービス76
を介して発見されたサーバー72の全てに対するゲートウェイ要求を転送し得る。要求に
よって示されたゲートウェイ84への接続を現在保持するゲートウェイ制御サーバー72
(例えば、サーバー72B)は、次いで、要求をそれぞれのゲートウェイ84に送信し得
る。
図21は、少なくともいくつかの実施形態に従って、適切なゲートウェイ制御サーバー
に対するゲートウェイ要求を取得するための代替方法の流れ図である。640に示すよう
に、ゲートウェイ制御サーバー72(例えば、サーバー72B)がゲートウェイ84から
接続要求を受信すると、サーバー72は、ゲートウェイ84とのペア形成を登録サービス
76内に登録する。642に示すように、ゲートウェイ制御サーバー72(例えば、サー
バー72A)は、サーバー72がそれに対する接続を保持していないゲートウェイ84に
対する要求を受信し得る。644に示すように、サーバー72がそれに対する接続を保持
していないゲートウェイ84に対する要求を受信するゲートウェイ制御サーバー72(例
えば、サーバー72A)は、次いで、ゲートウェイ84に対する接続を現在保持するゲー
トウェイ制御サーバー72(例えば、サーバー72B)を見つけるために、登録サービス
72に問合せを行い得、その後、646に示すように、その要求を、登録サービス76に
よって示されるゲートウェイ制御サーバー72(例えば、サーバー72B)に転送し得る
。要求によって示されるゲートウェイ84への接続を現在保持するゲートウェイ制御サー
バー72(例えば、サーバー72B)は、次いで、要求を、ゲートウェイ開始接続を介し
て、それぞれ対応するゲートウェイ84に送信し得る。
少なくともいくつかの実施形態では、要求がゲートウェイ84に配信され、それによっ
て処理されると、ステータスが、ゲートウェイ84から、そのゲートウェイ84への接続
を現在保持するゲートウェイ制御サーバー72(例えば、サーバー72B)に返され、そ
れは、続いて、それが以前にそれから転送された要求を受信したゲートウェイ制御サーバ
ー72(例えば、サーバー72A)にステータスが返され、それは次いで、そのステータ
スをコンソールプロセス68に返す。コンソールプロセス68は、次いで、要求の結果の
指示を、その要求を開始した顧客プロセス(例えば、ネットワーク管理者プロセス90)
に提供し得る。要求が、何らかの理由で、対象のゲートウェイ84に到達できない場合、
例えば、要求によって示されたゲートウェイ84が利用できないか、または見つけること
ができない場合、コンソールプロセス68は、要求の失敗の指示を、その要求を開始した
顧客プロセス(例えば、ネットワーク管理者プロセス90)に提供し得る。顧客プロセス
は、必要であるか、または所望であれば、要求を再試行し得る。
図22は、少なくともいくつかの実施形態に従って、ゲートウェイ開始接続を確立、監
視、および維持するための方法の流れ図である。660に示すように、ゲートウェイはク
ライアントネットワーク上でインスタンス生成され得る。662に示すように、インスタ
ンス生成後、ゲートウェイは、サービスプロバイダへの安全な接続(例えば、SSL(セ
キュアソケットレイヤー)/TCP接続)を確立するために、接続要求をサービスプロバ
イダに送信する。少なくともいくつかの実施形態では、サービスプロバイダにおけるゲー
トウェイ制御プロセスは、664に示すように、接続を保持し得、その接続を登録サービ
スに登録し得る。サービスプロバイダによって受信されたゲートウェイに対する要求は、
次いで、ゲートウェイ開始接続を通して、ゲートウェイに転送され得る。
666に示すように、ゲートウェイ制御プロセスは、接続を中断し得る。例えば、少な
くともいくつかの実施形態は、ゲートウェイ制御プロセスは、定期的または非定期的に、
接続を通してゲートウェイをpingし得、ゲートウェイがそのpingに応答しないこ
とを検出すると、接続を中断し得る。登録サービスに登録されている場合、ゲートウェイ
制御プロセスは、その接続の登録を削除し得る。
668に示すように、ゲートウェイは、接続が中断されていることを検出し得る。例え
ば、少なくともいくつかの実施形態は、ゲートウェイ制御プロセスは、定期的または非定
期的に、接続を通してゲートウェイをpingし得る。ゲートウェイは、サービスプロバ
イダからのpingが接続を通して受信されていないと判断することにより、接続が中断
されていることを検出し得る。
サービスプロバイダ側またはクライアントネットワーク/ゲートウェイ側のいずれかか
ら、中断された接続を検出するための他の方法が、いくつかの実施形態で採用され得るこ
とに留意されたい。
〔ゲートウェイプロキシ〕
前述の図18は、複数のゲートウェイ制御サーバー74を含むゲートウェイ制御プレー
ンとして実装されたゲートウェイ制御70を含むサービスプロバイダネットワークを示す
。少なくともいくつかの実施形態では、サービスプロバイダネットワークは、複数のゲー
トウェイプロキシノードを含み、ストレージゲートウェイと通信するためにゲートウェイ
制御プレーンによって使用され得る、ゲートウェイプロキシプレーンを含み得る。ゲート
ウェイプロキシは、ゲートウェイ制御サーバー74に対するゲートウェイ開始接続を保持
および管理するために使用され得る。ゲートウェイ84は、ゲートウェイプロキシへの接
続を開始し;ゲートウェイプロキシは、ゲートウェイ84への通信チャネルを維持し得、
また、同じゲートウェイ84の複数のコピーなどの誤用を防ぐのに役立つだけでなく、サ
ービスプロバイダ(例えば、ゲートウェイ制御サーバー74)とゲートウェイとの間のメ
ッセージの安全な交換を確実にするのに役立ち得る。
〔ゲートウェイとプロキシ間のやりとり〕
図23Aは、少なくともいくつかの実施形態に従って、ゲートウェイプロキシプレーン
を含むサービスプロバイダネットワークのためのアーキテクチャを大まかに示すブロック
図である。ゲートウェイプロキシプレーンは、2つ以上のプロキシノード700、プロキ
シストア702、外部ネットワークに公開されるクライアント側インタフェースプロセス
(CIP)720、および外部ネットワークに公開されない、プロキシノード700とゲ
ートウェイ制御サーバー(単数または複数)74との間のサーバー側インタフェースプロ
トコル(SIP)710を含み得る。いくつかの実施形態では、ゲートウェイプロキシ7
00は、ゲートウェイ制御サーバー(単数または複数)74として、同じ物理装置上で実
装され得る。他の実施形態では、ゲートウェイプロキシ700は、ゲートウェイ制御サー
バー(単数または複数)74とは別の装置上で実装され得る。
インストールされて有効化されたストレージゲートウェイ84は、ゲートウェイプロキ
シノード700への安全な接続要求(例えば、SSL/TCP接続要求)をCIP 70
0を介して開始する。接続要求を受信するプロキシノード700(この例では、プロキシ
ノード700B)は、この接続を開始したゲートウェイ84のゲートウェイ識別子および
顧客アカウント識別子を見つけるために、接続要求に関連付けられたゲートウェイの証明
書を検査する。顧客およびゲートウェイ84は、証明書からのゲートウェイ識別子および
顧客アカウント識別子を使用して、認証され得る。顧客およびゲートウェイ84の認証後
、プロキシノード700は、次いで、それが接続されたゲートウェイ84と通信する、正
式な(authoritative)プロキシ700であることを、プロキシストア70
2に対して公開する。プロキシ(例えば、プロキシ700Aおよび700B)は、特定の
ゲートウェイへの接続を現在保持する他のプロキシを発見するために、プロキシストア7
02に問合せを行い得る。
少なくともいくつかの実施形態では、プロキシストア702は、データベースとして実
現され得る。データベースは、分散型または集中型データベースのいずれかであり得る。
少なくともいくつかの実施形態では、プロキシストア702は、次の関連付けを格納し得
る:
(ゲートウェイID,アカウントID,プロキシエンドポイント)
メッセージがゲートウェイ84に送信される場合、プロキシ700は、どのプロキシ7
02がゲートウェイ84への接続を有するかを見つけるために、プロキシストア702に
問合せを行い得る。少なくともいくつかの実施形態では、プロキシストア702内にゲー
トウェイ84につき1つのエントリのみが存在する。
〔ゲートウェイ制御サーバーおよびプロキシのやりとり〕
図23Bは、少なくともいくつかの実施形態に従い、ゲートウェイプロキシプレーンを
通じて、ゲートウェイにメッセージ送信するゲートウェイ制御サーバーを示す。図23B
に示すように、少なくともいくつかの実施形態では、ゲートウェイ制御サーバー74は、
特定のゲートウェイ84に送信される必要のあるメッセージを有し得る。ゲートウェイ制
御サーバー74は、SIP 710を介して、メッセージをゲートウェイプロキシノード
700に送信する。メッセージを受信するプロキシノード700がゲートウェイ84への
接続を保持する場合、プロキシノード700は、その接続を介してメッセージをゲートウ
ェイ84に転送する。しかし、メッセージを受信するプロキシノード700がゲートウェ
イ84への接続を保持していな場合、プロキシノード700は、どのプロキシノード70
0がゲートウェイ84への接続を保持するかを判断するために、プロキシストア702に
問合せを行い、メッセージを、その正式なプロキシノード700(この例では、プロキシ
700B)に転送する。正式なプロキシノード700は、次いで、その接続を介して、そ
のメッセージをゲートウェイ84に転送する。
図23Cは、少なくともいくつかの実施形態に従い、ゲートウェイプロキシプレーンを
通じて、ゲートウェイ制御サーバー要求に応答するゲートウェイを示す。少なくともいく
つかの実施形態では、ゲートウェイ84からゲートウェイ制御サーバー74への応答は、
ゲートウェイ84からの応答を受信するCIP 720から始まる、図23Bに示すよう
に、ゲートウェイ制御サーバー74からゲートウェイ84への要求が辿った逆の経路を辿
り得る。CIP 720は、それが要求をそこから受信したプロキシノード(プロキシ7
00B)に応答を送信する。プロキシ700Bは、応答がどのゲートウェイ制御サーバー
74に対するかを知らないことに留意されたい。プロキシ700Bは、それが要求をそこ
から受信したプロキシノード(プロキシ700A)に応答を送信することにより、要求を
完了する。プロキシ700Aは、次いで、応答を、要求を開始したゲートウェイ制御サー
バー74に送信する。
〔接続の監視および管理〕
少なくともいくつかの実施形態では、プロキシによってゲートウェイ開始接続の管理に
おいて使用される、pingプロセスが実装され得る。少なくともいくつかの実施形態で
は、ゲートウェイ84は、前述のように、ゲートウェイプロキシ700への安全な接続、
例えば、SSL/TCP接続を、CIP 720を介して開始する。ゲートウェイプロキ
シ700は、定期的または非定期的にpingメッセージをゲートウェイ84に送信し得
る。各pingメッセージは、タイムアウトを含み得;ゲートウェイ84が時間間隔内に
pingを受信しない場合、それは、現在の接続を閉じ、CIP 720を介して接続を
再度開始する。少なくともいくつかの実施形態では、いずれの時点においても、プロキシ
ストア702内には1つのみのプロキシゲートウェイマッピングが存在する。ゲートウェ
イプロキシ700がpingを送信し、ゲートウェイ84から応答を得ない場合、それは
、ゲートウェイ84へのその接続を閉じる。
少なくともいくつかの実施形態では、全てのping上で、ゲートウェイプロキシ70
0は、プロキシストア702に問合せを行い、別のプロキシ700がゲートウェイ84へ
の接続を公開しているかどうかを判断することにより、それが所与のゲートウェイ84に
対する正式なプロキシであるかどうかをチェックする。それが正式なプロキシではない場
合、プロキシ700はゲートウェイ84への接続を閉じる。これは、プロキシノード70
0に対する複数の接続が同じゲートウェイ84によって開始されている場合、例えば、ゲ
ートウェイ84の証明書が別のゲートウェイにコピーされて、両方のゲートウェイが接続
を開始しようとする場合に対処し得る。
図23Dは、少なくともいくつかの実施形態に従った、ゲートウェイプロキシプレーン
に対するpingメッセージ交換を示す。少なくともいくつかの実施形態では、ゲートウ
ェイプロキシに関して、pingはエンドツーエンドpingである。pingを行う理
由は、TCP「キープアライブ」機能が2時間の最小間隔を有するが、他方、実施形態は
接続のタイムアウトまたは終了をもっと短い時間間隔で検出する必要があり得ることであ
る。
少なくともいくつかの実施形態では、pingは、図23Dに示される経路を辿る。ゲ
ートウェイプロキシノード(この例では、プロキシ700B)は、pingメッセージを
SIP 710を介して送信する。メッセージは、ゲートウェイプロキシノード700の
うちの1つ、この例ではプロキシ700A、に行きあたる。プロキシ700Aは、プロキ
シストア702に問合せを行うことにより、ゲートウェイ84に対する正式なプロキシ7
00(この例では、プロキシ700B)を見つけ、pingメッセージをプロキシ700
Bに転送する。プロキシ700Bは、メッセージをゲートウェイ84に転送し、ゲートウ
ェイ84からの応答は同じ経路を辿る。少なくともいくつかの実施形態では、プロキシ7
00Bがpingに対する応答をゲートウェイ84から取得すると、それは、そのゲート
ウェイ84に対するそのping間隔を増やす。ゲートウェイ84接続が中断すると、p
ing間隔が最小値にリセットされ得る。このようにして、貧弱なゲートウェイとプロキ
シ間の接続はより頻繁にping送信される傾向がある。
プロキシ700が最初にpingメッセージをSIP 710に送信することによりp
ingメッセージを開始する、前述したエンドツーエンドping方法は、ゲートウェイ
プロキシノード700が制御プレーンから到達可能であることを保証する役に立ち得る。
pingが失敗すると、プロキシ700は、(例えば、ネットワーク分割のために)それ
が制御プレーンから到達可能ではないと仮定して、ゲートウェイ84への接続を閉じ得る
〔ロングポーリング接続を使用したリモートゲートウェイ管理〕
いくつかの実施形態では、ロングポーリング技術がゲートウェイ開始接続に対して使用
され得る。再度図18を参照すると、ロングポーリングは、サーバー(例えば、ゲートウ
ェイ制御サーバー74)からクライアント(例えば、ストレージゲートウェイ84)への
情報のプッシュ型配信をエミュレートするポーリング技術である。ロングポーリング技術
では、クライアント(例えば、ストレージゲートウェイ84)がサーバー(例えば、ゲー
トウェイ制御サーバー74)へのロングポーリング接続を開始して、標準的なクライアン
ト/サーバーポーリングにおけるように、サーバーからの情報を要求する。しかし、サー
バーが、クライアントに対して利用可能ないかなる情報も有していない場合、空の応答を
送信する代わりに、サーバーはクライアントの要求を保持して、情報がそのクライアント
に対して利用可能になるのを待機する。情報が利用可能になると、サーバー(例えば、ゲ
ートウェイ制御サーバー74)は、クライアントのロングポーリング要求に応答し得、そ
の応答は、クライアント(例えば、ストレージゲートウェイ84)に送信される情報を含
む。
ロングポーリングを使用するゲートウェイ開始接続方法では、ゲートウェイ84は、ロ
ングポーリング要求を介して、ゲートウェイ制御サーバー74への接続を確立する。例え
ば、ゲートウェイ84は、図18に示すように、ロングポーリング要求により、負荷分散
装置72を通してゲートウェイ制御サーバー74とのアウトバウンドSSL/TCP接続
を確立し得る。ゲートウェイ制御サーバー74は、要求を持ち続け、その接続を維持する
。ゲートウェイ制御サーバー74は、ゲートウェイ84に対する要求を受信する。例えば
、ゲートウェイ制御サーバー74は、図18に示すように、ゲートウェイ84に対する設
定要求または動作要求を、それぞれのネットワーク管理者プロセス90からコンソールプ
ロセス68を介して受信し得る。ゲートウェイ制御サーバー74がゲートウェイ84に対
する要求を受信した後、ゲートウェイ制御サーバー74は、ゲートウェイのロングポーリ
ング要求に対する応答を送信し;その応答はゲートウェイ84に対する要求(例えば、設
定要求または動作要求)を含む。いくつかの実施形態では、代替として、ゲートウェイ制
御サーバー74は、受信した要求を、ロングポーリング要求に応答することなく、ゲート
ウェイ制御サーバーが維持しているゲートウェイに対して確立された接続上のゲートウェ
イ84に送信し得る。
〔ストレージゲートウェイ上のブロックストレージ入出力動作〕
ストレージゲートウェイの実施形態は、前述のように、キャッシュゲートウェイまたは
シャドーイングゲートウェイとして実現され得る。実施形態例では、キャッシュゲートウ
ェイは、最も頻繁にアクセスされるデータに対してオンプレミス(ローカル)ストレージ
を、また本質的に無限の総容量に対してストレージサービスによって提供されたリモート
ストレージを利用する、オンプレミスブロックベースのアプライアンスと考えられ得る。
図6は、キャッシュゲートウェイの一実施形態が実現される、ネットワーク環境例のアー
キテクチャおよびその中のデータフローを大まかに示すハイレベルブロック図である。キ
ャッシュゲートウェイは、サービス顧客のローカルネットワークと、サービスプロバイダ
のネットワークにおけるストレージサービスとの間のインタフェースとして機能し得る。
少なくともいくつかの実施形態では、キャッシュゲートウェイは、iSCSIインタフェ
ースを顧客ネットワーク上のプロセスに公開し得るが、いくつかの実施形態では、他のデ
ータインタフェースが公開され得る。そのため、キャッシュゲートウェイは、クライアン
トネットワーク内で動作するデータインタフェースターゲット(例えば、iSCSIター
ゲット)のように見え得、例えば、キャッシュゲートウェイは、クライアントネットワー
ク上にストレージアレイとして現れ得る。キャッシュゲートウェイは、例えば、論理ユニ
ット番号(LUN)、例えば、ハードディスクなどのブロックベースの記憶装置を、クラ
イアントネットワーク内の装置上で実行するプロセスに公開し得る。プロセスは、次いで
、LUNとのデータセッション(例えば、SCSIセッション)を開始し、データコマン
ド(例えば、SCSIコマンド)をキャッシュゲートウェイに送信し得る。
図24は、少なくともいくつかの実施形態に従った、キャッシュゲートウェイのための
全体アーキテクチャおよびそのデータ入出力動作を示す。一般に、キャッシュゲートウェ
イ800では、書込みデータが顧客プロセス830から受信されると、そのデータが書込
みログ814に付加され;そのデータは、後に、アップロードプロセスによって書込みロ
グ814からリモートデータストア820にアップロードされる。ブロックに関連した書
込みデータに対するメタデータ(例えば、ブロック位置、ブロックタイプ、オフセット(
単数または複数)および長さ)が、メタデータストア806に追加され得る。少なくとも
いくつかの実施形態では、メタデータストア806は、データベース、例えば、Berk
elyデータベース(BDB)として実現され得る。キャッシュゲートウェイ800は、
少なくともいくつかのデータ(例えば、頻繁に、および/または最近使用されたデータ)
もローカルキャッシュ812にローカルにキャッシングし得、それは、いくつかの読取り
が、リモートデータストア820からの代わりに、ローカルキャッシュ812から満足さ
れ得るので、顧客の読取り要求に対する応答を改善し得る。ローカルキャッシュ812は
、読取りキャッシュとも呼ばれ得る。メタデータストア806は、ローカルにキャッシュ
された読取りデータに関する位置および他の情報もローカルキャッシュ812内に含み得
る。図24は、1つのメタデータストア806が読取りキャッシュエントリおよび書込み
キャッシュエントリの両方を含む実施形態を示しているが、いくつかの実施形態では、読
取りキャッシュエントリおよび書込みキャッシュエントリが別々のメタデータストア80
6内に維持され得る。少なくともいくつかの実施形態では、顧客プロセス830からのデ
ータ読取り要求が、可能であれば、書込みログ814またはローカルキャッシュ812か
ら提供され得;そうでない場合は、要求されたデータがリモートデータストア830から
フェッチされ得る。読取り要求を満足するためにフェッチおよび(例えば、ブロックバッ
ファ804に)バッファリングされる、ローカルキャッシュ812またはリモートデータ
ストア830からのデータは、そのデータに対する書込みログ814内に更新が存在する
場合、そのデータが、読取り要求を満足するために顧客プロセス830に返される前に、
書込みログ814からのデータで更新され得る。
少なくともいくつかの実施形態では、書込みログ814およびデータキャッシュ812
の両方が、共通のローカルのブロックベースデータストア810内に実装され得る。ブロ
ックデータストア810は、揮発性メモリ、不揮発性メモリ、またはその組合せで実装さ
れ得る。ブロックデータストア810は、キャッシュゲートウェイ800がその上に実装
される物理装置内の物理メモリ上、キャッシュゲートウェイ800がその上に実装される
物理装置に外部のメモリ上(例えば、顧客によりゲートウェイ800に割り当てられた1
つまたは複数の記憶装置上)、またはそれらの組合せ上に実装され得る。
書込みログデータおよびキャッシングされた読取りデータはともに、ブロックデータス
トア810に、ブロックストレージフォーマットで、例えば、4MB(4メガバイト)ブ
ロックとして、格納され得る。ブロックデータストア810内のキャッシングされた読取
りブロックは、読取りキャッシュとみなされ得、ブロックデータストア内の書込みログブ
ロックは書込みバッファとみなされ得る。メタデータストア806は、ブロックデータス
トア810内の読取りキャッシュ812ブロックおよび書込みログ814ブロックの両方
を見つけるためのエントリを含み得る。読取り要求を満足するために、ブロックが読取り
キャッシュ812から(または書込みログ814から)読み取られ得、ブロックが、アッ
プロードプロセスにより、書込みログ814からリモートデータストア820にアップロ
ードされ得る。少なくともいくつかの実施形態では、書込みブロックを書込みログ814
からアップロードする際に、アップロードされたデータが、新しい読取りブロックとして
読取りキャッシュ812に追加され得る。アップロードされた書込みログ814ブロック
は、ブロックデータストア810内で「空き」として印を付けられ得、その変更をブロッ
クデータストア810に反映するために、メタデータストア806が適切に更新され得る
少なくともいくつかの実施形態では、書込み要求は、ブロックの比較的ごく小さな部分
のみを修正または変更し得る。従って、少なくともいくつかの実施形態では、ブロックを
書込みログ814からアップロードする際に、例えば、前述のように、データ重複排除技
術を使用して、変更された部分のみがリモートデータストア820にアップロードされ得
る。さらに、書込みログ814は、異なる書込みログ814ブロックに格納された1つま
たは複数の重なり合う書込み(すなわち、同一の論理ブロックへの書込み)を含み得る。
書込みデータを書込みログ814からアップロードする際に、2つ以上の重なり合う書込
みがアップロードのために結合され得る。この結合は、データストアの外部で、例えば、
ブロックバッファ804内のブロック内で実行され得;書込みログ814内のブロック自
体は変更されない。
前述のように、少なくともいくつかの実施形態では、書込みブロックを書込みログ81
4からアップロードする際に、アップロードされたデータが、新しい読取りブロックとし
て読取りキャッシュ812に追加され得る。少なくともいくつかの場合、例えば、書込み
ブロックが多数の変更を含む場合、および/または書込みブロックの大きな部分が変更さ
れている場合、書込みブロックは、新しい読取りブロックとして単に読取りキャッシュ8
12にコピーされて、メタデータストア806が更新される。しかし、前述のように、書
込み要求は、書込みログ814ブロックの比較的小さな部のみを修正または変更し得る。
従って、少なくともいくつかの場合、それぞれの対応するブロックがまず、リモートデー
タストア820からフェッチされ得、そのフェッチされたブロックが、読取りキャッシュ
812内のブロック全体が最新であることを保証するために、そのブロックを読み取りキ
ャッシュ812に追加する前に、読取りログ814からの変更で更新される。述べたよう
に、書込みログ814は、異なる書込みログ814ブロック内に格納された2つ以上の重
なり合う書込み(すなわち、同一の論理ブロックへの書込み)を含み得、従って、フェッ
チされブロックが1つまたは複数の書込みログ814ブロックに従って更新され得る。少
なくともいくつかの実施形態では、フェッチされたブロックは、読取りキャッシュ812
に追加される前に、書込みログ804ブロックからの更新のために、ブロックバッファ8
04に格納され得る。
一般に、新しい書込みは、ブロックデータストア810内の以前に空きとされた書込み
ログ814ブロックに格納されるが;ブロックデータストア810が、いっぱいまたは、
ほぼいっぱいであるとして検出される場合、1つまたは複数のキャッシングされた読取り
ブロックが、書込みデータのためのスペースを空けるため、パージされ得る。読取りブロ
ックは、他の理由のため、例えば、新しい読取りデータのためにスペースを空けるため、
ブロックデータストア810からパージされ得ることに留意されたい。様々な実施形態で
は、読取りブロックをブロックデータストア810からパージするために、異なる技術ま
たはポリシーが使用され得る。例えば、いくつかの実施形態では、最も古い読取りブロッ
クをブロックデータストア810からパージするために、最低使用頻度(LRU)ポリシ
ーが適用され得る。
少なくともいくつかの実施形態では、キャッシュゲートウェイ800は、リモートデー
タストア820上の2つ以上のボリューム822にインタフェースを提供し得る。少なく
ともいくつかの実施形態では、別個の書込みログ814および読取りキャッシュ812が
、各ボリューム822に対して、キャッシュゲートウェイ800によって維持され得る。
少なくともいくつかの実施形態では、2つ以上のボリューム822に対する別個の書込み
ログ814および読取りキャッシュ812が、同一のブロックデータストア810内に実
現され得る。しかし、少なくともいくつかの実施形態では、異なるボリューム822に対
する書込みログ814および読取りキャッシュ812が、ブロックデータストア810上
で論理的または物理的に分離され得る。さらに、少なくともいくつかの実施形態では、別
個のメタデータストア806が別個のボリューム822に対して維持され得る。
図24は、読取りキャッシュ812および書込みログ814がブロックデータストア8
10内で論理的に別個であるとして示しているが、少なくともいくつかの実施形態では、
所与のボリューム822に対する読取りブロックおよび書込みログブロックが、ブロック
データストア810内で物理的に混合され得る。例えば、第1の物理ブロックが読取りブ
ロックであり得、第2〜第5の物理ブロックが書込みブロックであり得、次の2つの物理
ブロックが読取りブロックであり得、以下同様に続く。
前述のように、図24は、少なくともいくつかの実施形態に従った、キャッシュゲート
ウェイのための全体アーキテクチャおよびそのデータ入出力動作を示す。しかし、ストレ
ージゲートウェイは、例えば、図7に示すように、シャドーイングゲートウェイとしても
設定され得る。図25は、少なくともいくつかの実施形態に従った、シャドーイングゲー
トウェイのための全体アーキテクチャおよびそのデータ入出力動作を示す。シャドーイン
グゲートウェイ801は、図24でキャッシュゲートウェイ800に対して例示および説
明したのと同様のアーキテクチャ、構成要素、およびデータ入出力動作を含み得るが、シ
ャドーイングゲートウェイ801は、読取りキャッシュ812に対するメタデータストア
806内に読取りキャッシュ812またはエントリを含まず、また、キャッシュゲートウ
ェイに対して前述した読取り関連動作が実行されないことを除く。シャドーイングゲート
ウェイに対する書込み動作は、書込みが読取りキャッシュに追加されないことを除いて、
キャッシュゲートウェイに対するものと同様であり得る。さらに、顧客プロセス(単数ま
たは複数)830からの読取りおよび書込み要求が、ローカルデータストア840に転送
される。しかし、書込み要求からの書込みデータは、リモートデータストア820にシャ
ドーイングされる。少なくともいくつかの実施形態では、書込みデータが、ブロックデー
タストア810内の書込みログ814に付加され、書込みログ814内の書込みデータが
、定期的または非定期的に、リモートデータストア820にアップロードされるが、それ
は、ローカルデータストア840上の一次データストアのスナップショット824を保持
する。
少なくともいくつかの実施形態では、例えば図24に示すように、キャッシュゲートウ
ェイに対して、および、例えば図25に示すように、シャドーイングゲートウェイに対し
て、書込みログ814および書込み動作が、書込み性能に関して最適化され得る。少なく
ともいくつかの実施形態では、ゲートウェイ800の少なくともいくつかの入出力動作は
、ブロックデータストア810を順次データストアとして使用し得る。特に、書込みログ
814は、順次データ構造として扱われ得、書込みログ814に対する書込み動作は、順
次書込み動作として実現され得る。少なくともいくつかの実施形態では、書込みログ81
4は、線形または円形キューとして実装された1次元データバッファとして扱われ得る。
キャッシュゲートウェイについて、リモートデータストア820からダウンロードされた
データは、顧客プロセス(単数または複数)830からゲートウェイ800に送信された
書込みデータとは別の読取りキャッシュ812に格納され得、書込みデータは書込みログ
814に格納される。キャッシュゲートウェイおよびシャドーイングゲートウェイの両方
について、書込み要求は、顧客プロセス(単数または複数)830から任意の順序(すな
わち、書込み要求は順序付けされていないか、または非順次であり得る)で受信され得、
顧客プロセス(単数または複数)830から受信された、順序付けされていない書込み要
求によって示される書込みデータは、任意のサイズであり得、対象とするデータストア内
の任意の位置またはオフセットに向けられ得る。しかし、順序付けされていない書込み要
求内で顧客プロセス(単数または複数)830から受信された任意の書込みデータは、書
込みログ814に連続して書き込まれ付加される。少なくともいくつかの実施形態では、
付加は、サブブロックレベルで行われ得る;すなわち、書込みデータの2つ以上のインス
タンスが、書込みログ814内の同一ブロック内で付加され得る。書込みログ814に対
する更新のためのメタデータ(例えば、書込みログ814ブロック内の書込みデータのオ
フセットおよび長さ、ならびに対象とするデータストア内のオフセット)が、メタデータ
ストア806内に格納される。
図26は、少なくともいくつかの実施形態に従って、ブロックデータストア上の書込み
ログに書き込むための方法の流れ図である。書込みログ814を順次データ構造として、
例えば、1次元キューとして、実現することは、入出力ハンドラー802が、顧客プロセ
ス(単数または複数)830から受信された任意の書込みデータのブロックデータストア
810へ順次書込みすることを実行可能にし得る。850に示すように、1つまたは複数
の書込み要求が、顧客プロセス830から受信され得る。書込み要求は、任意の順序(す
なわち、書込み要求は順序付けされていない)で受信され得、顧客プロセス(単数または
複数)830から受信された書込み要求によって示される書込みデータは、任意のサイズ
であり得、対象とするデータストア内の任意の位置またはオフセットに向けられ得る。8
52に示すように、任意の書込みデータをブロックデータストア810上の書込みログ8
14に連続して書くために、順次書込みが実行され得る。854に示すように、ブロック
データストア810への順次書込み内のデータが、ブロックデータストア810内の隣接
する位置(例えば、セクター)、例えば、ブロックデータストア810を実現するディス
ク記憶装置上の隣接する位置(例えば、セクター)に書き込まれ得る。隣接する位置は、
同一の書込みログブロック内であり得るが、必ずしもそうである必要はないことに留意さ
れたい。記憶装置への順次書込みを使用することは、基礎となる記憶装置上でランダムセ
クターシークを実行する必要性を減らすか、また取り除き得る。ランダムセクターシーク
を実行することは、入出力動作にマイナスの影響を及ぼす。例えば、ディスク入出力スル
ープットは、連続的な書込みを使用することにより、ランダムセクターシークを必要とす
る非順次、非連続な書込みと比較した場合、10倍〜100倍だけ増加し得る。856に
示すように、メタデータストア806は、書込みログ814への書込みを反映するために
、適切に更新され得る。少なくともいくつかの実施形態では、書込みに対するメタデータ
は、メタデータストア806に連続して追加され得るが、それは、メタデータがメタデー
タストア806にもっとランダムに追加された場合よりも、書込みログ814内のデータ
にさらに効率的にアクセスする必要があるプロセスによるメタデータストア806の読取
りを可能にし得る。
少なくともいくつかの実施形態では、全ての書込みログ814データをブロックデータ
ストア810内の隣接する位置に書き込むことは必ずしも可能ではない。例えば、2つの
書込みログ814ブロック間に読取りキャッシュ812ブロックがあり得る。従って、8
54で、実施形態は、書込みログ814データを隣接する位置に可能な限りたくさん書き
込もうとし得るが、いくつかの位置(例えば、ブロック)が使用されているとして印が付
けられている場合は、その位置をスキップする必要があり得る。メタデータストア806
は、たとえデータが隣接するブロック内に格納されていなくても、書込みログ814デー
タを見つけることができるように、適切に更新される。
前述のように、論理的に、任意の書込みデータが書込みデータの終わりに付加される。
これを実現するために、少なくともいくつかの実施形態では、ブロックバッファ804が
、書込みログ814で使用されるのと同じサイズのブロック(例えば、4MBブロック)
で確保される。割り当てられたバッファブロックがいっぱいになるまで付加される。別の
バッファブロックが、新書込みデータを付加するために割り当てられ得;いっぱいのバッ
ファブロックは、ブロックデータストア上の書込みログ814に非同期的かつ連続してフ
ラッシュされ得る。書込みログ814内のいっぱいのブロックは、アップロードインタフ
ェースにより、非同期的かつ連続して、リモートデータストア820にアップロードされ
得;書込みログ814からアップロードされたブロックは、「空き」として印を付けられ
得る。
図24に示すキャッシュゲートウェイ実施態様では、データ整合性を維持するために、
読取りデータは、ゲートウェイ800が要求されたデータを顧客プロセス830に返す前
に、書込みデータと統合される必要があり得る。図27は、キャッシュゲートウェイの少
なくともいくつかの実施形態に従って、読取り要求を満足するための方法の流れ図である
。860に示すように、読取り要求が顧客プロセス830から受信される。少なくともい
くつかの実施形態では、読取り要求が顧客プロセス830から受信されると、ゲートウェ
イ800は、メタデータストア806内で読取りのデータ範囲を調べて、読取り範囲に重
なり合う書込みログ814内にデータがあるかどうかを判断する。図27の862で、重
なり合うデータが読取り範囲を完全にカバーする書込みログ814内で見つかる場合、8
64に示すように、書込みログ814からのデータが、読取り要求を直接満足するために
使用され得る。そうでなければ、図27の866で、重なり合うデータが、読取り範囲を
部分的カバーする書込みログ814内で見つかる場合、868に示すように、データがそ
のデータ範囲に対して存在するかどうか、読取りキャッシュ812がチェックされ得る。
データが読取りキャッシュ812内にある場合、870に示すように、1つまたは複数の
データブロック(単数または複数)が読取りキャッシュ812からフェッチされ得る。そ
うでなければ、872に示すように、1つまたは複数のブロックがリモートデータストア
820からフェッチされ得る。いくつかの実施形態では、ブロックは、いくつかの読取り
要求を満足するために、読取りキャッシュおよびリモートデータストア820の両方から
フェッチされ得ることに留意されたい。図27の874で、フェッチされたデータブロッ
クは、次いで、書込みログ814からの変更されたデータで更新され得る。図27の87
6で、変更されたデータが、読取り要求を満足するために、要求しているプロセス830
に返され得る。いくつかの実施形態では、図27の878に示すように、更新されたブロ
ックが読取りキャッシュ812に追加され得る。
いくつかの実施形態では、読取り要求を満足するためのリモートデータストア820か
ら読み取られたブロックが、読取りキャッシュ812に追加され、ブロックを要求してい
るプロセス830に送信する前に、書込みログ814から更新され得る。あるいは、ブロ
ックは、例えば、ブロックバッファ804にバッファリングされ、そのバッファ内で更新
され得る。更新されたブロックは、次いで、バッファ804から、要求しているプロセス
830に送信され、バッファ804から読取りキャッシュ814に追加され得る。
いくつかの実施形態では、読取り要求を満足するために使用される読取りキャッシュ8
12内のブロックが、適切な位置で書込みログ814からのデータで更新され、次いで、
読取り要求を満足するために読取りキャッシュ812から要求しているプロセス830に
送信され得る。あるいは、ブロックが、読取りキャッシュ812から読み取られて、例え
ば、ブロックバッファ804にバッファリングされ、そのバッファ内で更新され得る。更
新されたブロックは、次いで、バッファ804から、要求しているプロセス830に送信
され、バッファ804から、読取りキャッシュ814に追加され得る。バッファ内に読み
取られた読取りキャッシュ812内の以前のバージョンのブロックは、空きとして印を付
けられ得、かつ/または新しく更新されたブロックで上書きされ得る。
図27の866で、書込みログ814内に重なり合うデータがない場合は、図27の8
80に示すように、読取りキャッシュ812は、読取り要求が読取りキャッシュ812か
ら満足できるかどうかをチェックし得る。図27の880で、読取り要求が読取りキャッ
シュ812から満足できる場合は、図27の882に示すように、読取りキャッシュ81
2からのデータが、読取り要求を満足するために顧客プロセス830に返され得る。図2
7の880で、読取り要求が読取りキャッシュ812から満足できない場合には、図27
の884に示すように、1つまたは複数のデータブロック(単数または複数)がリモート
データストア820からフェッチされ得る。図27の886に示すように、フェッチされ
たブロックからのデータが、読取り要求を満足するために顧客プロセス830に返され得
る。いくつかの実施形態では、図27の888に示すように、読取り要求を満足するため
にリモートデータストア820からフェッチされたブロックが、読取りキャッシュ812
に追加され得る。
少なくともいくつかの実施形態では、ゲートウェイ800は、顧客が、取得されてリモ
ートデータストア820にアップロードされる書込みログ814のスナップショットを、
例えば、サービスプロバイダによって提供されたコンソールプロセスを介して、要求でき
るようにし得る。追加で、または代わりに、ゲートウェイ800は、定期的または非定期
的に、書込みログ814のスナップショットを自動的に取得してリモートデータストア8
20にアップロードし得る。書込みログ814のスナップショットをアップロードするこ
とは、例えば、データの、ハードウェアおよびソフトウェア障害からの保護を提供し得る
。少なくともいくつかの実施形態では、スナップショットは、ある時点のスナップショッ
トであり;スナップショットが要求された時点において書込みログ内にある変更されたデ
ータのみがスナップショット内にアップロードされる。少なくともいくつかの実施形態で
は、キャッシュゲートウェイ実施態様について、変更されたデータがアップロードされる
場合、将来の読取りのために、データがリモートデータストア820からダウンロードさ
れる必要がないように、ローカルに格納された読取りキャッシュ812も、アップロード
されているデータの少なくとも一部で更新され得る。変更されたデータがリモートデータ
ストア820にアップロードされた後、書込みログ814内のデータおよびメタデータス
トア806内の対応するデータが廃棄でき(例えば、「空き」と印を付けられる)、その
スペースが再使用できる。
〔リモートデータストアにアップロードするための書込みデータの結合〕
前述のように、書込みログブロックは、定期的または非定期的に、リモートデータスト
アにアップロードされ得る。少なくともいくつかの実施形態では、書込みログブロックを
アップロードする際にデータ重複排除技術が使用され得る。しかし、説明したデータ重複
排除技術は、アップロードされるためにステージされるブロック(単数または複数)内に
あるどのデータに関するアップロードプロセス中にも動作する。顧客プロセス(単数また
は複数)からの任意の書込みが順番に書込みログに付加され、また、顧客プロセス(単数
または複数)は対象とするデータストア内の同じ位置に複数回書込み得るので、書込みロ
グブロックまたは複数のブロックは、対象とするデータストアの同じ位置(例えば、オフ
セットおよび/または範囲)に向けられた2つ以上の書込みを含み得る。
従って、少なくともいくつかの実施形態は、書込みログブロック内の書込みデータに対
して、アップロード前結合(pre−upload coalescing)技術を実装
し得る。この技術では、アップロードのためにステージされている書込みログブロック(
または複数のブロック)に対するメタデータが、対象とするデータストア内の同じ位置に
向けられている書込みログブロック(単数または複数)内の2つ以上の書込みがあるかど
うかを判断するために検査され得る。所与の位置に対する複数の書込みがある場合、アッ
プロードされるバッファブロックを構築する際に、前の書込み(単数または複数)が抑制
され得る。このようにして、アップロードのためにアップロードプロセスに渡されるブロ
ックは、例えば、データ重複排除技術に従って、アップロード前結合技術が適用されてい
なければ存在し得る、同じ位置へのおそらくは2つ以上の書込みではなく、所与の位置へ
の1つだけの書込み(最新の書込み)を含み得る。
〔例示説明となるシステム〕
少なくともいくつかの実施形態では、本明細書で説明する1つまたは複数のストレージ
ゲートウェイ技術のうちの一部または全部を実装するコンピュータシステムは、図28に
示すコンピュータシステム3000などの、1つもしくは複数のコンピュータアクセス可
能媒体を含むか、またはそれにアクセスするように構成される汎用コンピュータシステム
を含み得る。図示した実施形態では、コンピュータシステム3000は、入力/出力(I
/O)インタフェース3030を介してシステムメモリ3020に結合された1つまたは
複数のプロセッサ3010を含む。コンピュータシステム3000は、入出力インタフェ
ース3030に結合されたネットワークインタフェース3040をさらに含む。
様々な実施形態では、コンピュータシステム3000は、1つのプロセッサ3010を
含む単一プロセッサシステム、またはいくつかの(例えば、2、4、8、または別の適切
な数)プロセッサ3010を含むマルチプロセッサシステムであり得る。プロセッサ30
10は、命令を実行できる任意の適切なプロセッサであり得る。例えば、様々な実施形態
では、プロセッサ3010は、x86、PowerPC、SPARC、またはMIPS
ISA、もしくは任意の他の適切なISAなどの、任意の様々な命令セットアーキテクチ
ャ(ISA)を実装する汎用または組込みプロセッサであり得る。マルチプロセッサシス
テムでは、プロセッサ3010の各々は、一般に、同じISAを実装し得るが、必ずしも
その必要はない。
システムメモリ3020は、プロセッサ(単数または複数)3010によってアクセス
可能な命令およびデータを格納するように構成され得る。様々な実施形態では、システム
メモリ320は、スタティックランダムアクセスメモリ(SRAM)、シンクロナスダイ
ナミックRAM(SDRAM)、不揮発性/フラッシュ型メモリ、または任意の他のタイ
プのメモリなどの、任意の適切なメモリ技術を使用して実装され得る。図示した実施形態
では、ストレージゲートウェイ技術のための、前述した方法、技術、およびデータなどの
、1つまたは複数の所望の機能を実現する、プログラム命令およびデータが、システムメ
モリ3020内にコード3025およびデータ3026として格納される。
一実施形態では、入出力インタフェース3030は、ネットワークインタフェース30
40または他の周辺インタフェースを含め、プロセッサ3010、システムメモリ302
0、および装置内の任意の周辺装置の間の入出力トラフィックを調整するように構成され
得る。いくつかの実施形態では、入出力インタフェース3030は、1つの構成要素(例
えば、システムメモリ3020)からのデータ信号を別の構成要素(例えば、プロセッサ
3010)による使用に適したフォーマットに変換するため、任意の必要なプロトコル、
タイミング、または他のデータ変換を実行し得る。いくつかの実施形態では、入出力イン
タフェース3030は、例えば、PCI(Peripheral Component
Interconnect)バス規格の変形またはユニバーサルシリアルバス(USB)
規格などの、様々なタイプの周辺機器用バスを通して取り付けられた装置に対するサポー
トを含み得る。いくつかの実施形態では、入出力インタフェース3030の機能は、例え
ば、ノースブリッジおよびサウスブリッジなどの、2つ以上の別個の構成要素に分割され
得る。また、いくつかの実施形態では、システムメモリ3020へのインタフェースなど
の、入出力インタフェース3030の機能の一部または全部が、プロセッサ3010に直
接組み込まれ得る。
ネットワークインタフェース3040は、コンピュータシステム3000と、ネットワ
ークまたは複数のネットワーク3050に接続された他の装置3060(例えば、本明細
書に記載される他の図に示されるような、他のコンピュータシステムまたは装置など)と
の間でデータが交換できるように構成され得る。様々な実施形態では、ネットワークイン
タフェース3040は、例えば、イーサネット(登録商標)ネットワークのタイプなどの
、任意の適切な有線または無線の一般的なデータネットワークを経由した通信をサポート
し得る。さらに、ネットワークインタフェース3040は、アナログ音声ネットワークも
しくはデジタルファイバー通信ネットワークなどの電気通信/電話網を介した、ファイバ
ーチャンネルSANなどのストレージエリアネットワークを介した、または任意の他の適
切なネットワークおよび/もしくはプロトコルを介した、通信をサポートし得る。
いくつかの実施形態では、システムメモリ3020は、ストレージゲートウェイ技術の
実施形態の実現のため、他の図に関連して前述したプログラム命令およびデータを格納す
るように構成されたコンピュータアクセス可能媒体の一実施形態であり得る。しかし、他
の実施形態では、プログラム命令および/またはデータは、異なるタイプのコンピュータ
アクセス可能媒体上で、受信、送信、または格納され得る。一般的に言えば、コンピュー
タアクセス可能媒体は、磁気または光媒体、例えば、入出力インタフェース3030を介
してコンピュータシステム3000に結合されたディスクまたはDVD/CD、などの、
持続性記憶媒体またはメモリ媒体を含み得る。持続性コンピュータアクセス可能記憶媒体
は、コンピュータシステム3000のいくつかの実施形態で、システムメモリ3020ま
たは別のタイプのメモリとして含まれ得る、RAM(例えば、SDRAM、DDR SD
RAM、RDRAM、SRAMなど)、ROMなどの、任意の揮発性または不揮発性媒体
も含み得る。さらに、コンピュータアクセス可能媒体は、ネットワークインタフェース3
040を介して実現され得るような、ネットワークおよび/または無線リンクなどの通信
媒体を介して伝達された、電気、電磁気、またはデジタル信号などの、伝送媒体または信
号を含み得る。
〔結論〕
様々な実施形態は、コンピュータアクセス可能媒体に関する前述の説明に従って実現され
る命令および/またはデータの受信、送信または格納をさらに含み得る。一般的に言えば
、コンピュータアクセス可能媒体は、例えば、磁気もしくは光媒体(例えば、ディスクも
しくはDVD/CD−ROM)、RAM(例えば、SDRAM、DDR、RDRAM、S
RAMなど)、ROMなどの揮発性もしくは不揮発性媒体、などの記憶媒体またはメモリ
媒体、ならびに、ネットワークおよび/もしくは無線リンクなどの通信媒体を介して伝達
される、電気、電磁気、もしくはデジタル信号などの、伝送媒体または信号を含み得る。
図に示し、本明細書で説明したような様々な方法は、方法の例となる実施形態を表す。
それらの方法は、ソフトウェア、ハードウェア、またはそれらの組合せで実現され得る。
方法の順序は変更され得、また、様々な要素が追加、再順序付け、結合、省略、修正など
、され得る。
本開示の利益を得る当業者には明らかであるように、様々な修正および変更が行われ得
る。かかる修正および変更の全てを包含することが意図され、したがって、前述の説明は
、制限的な意味よりもむしろ、例示的な意味と見なされる。
様々な実施形態が、以下の付記項を考慮して、記述できる:
付記項1.顧客ネットワーク上のストレージゲートウェイによって、リモートデータス
トアをサービスプロバイダの顧客に提供するサービスプロバイダに、そのストレージゲー
トウェイを登録するプロセスを開始することと、
そのストレージゲートウェイによって、そのストレージゲートウェイが顧客ネットワー
ク上のシャドーイングゲートウェイとして機能するように指定する設定情報を受信するこ
とであって、シャドーイングゲートウェイが、顧客ネットワーク内のローカルデータスト
ア上に格納されたデータを、リモートデータストアにシャドーイングし、ローカルデータ
ストアがそのデータに対する一次データストアとして機能する、設定情報を受信すること
と、
設定情報に応答して、ストレージゲートウェイを、顧客ネットワーク上のシャドーイン
グゲートウェイとして設定することと、
顧客ネットワーク上の1つまたは複数のプロセスからのストレージゲートウェイによっ
て、一次データストアに向けられた読取り要求および書込み要求を受信することと、
読取り要求について、その読取り要求を一次データストアに渡すことと、
書込み要求について:
書込み要求を一次データストアに渡し、かつ、
リモートデータストア上の一次データストアのスナップショットを書込みデータで更
新するために、書込み要求によって示される書込みデータをサービスプロバイダに送信す
ることと
を含む方法。
付記項2.一次データストアと一致する、一次データストアのスナップショットを作成
するために、ローカルデータストア上に格納されたデータの少なくとも一部をサービスプ
ロバイダにアップロードするブートストラッププロセスを、ストレージゲートウェイが開
始することをさらに含む、付記項1に記載の方法。
付記項3.読取り要求および書込み要求を受信すること、読取り要求および書込み要求
を一次データストアに渡すこと、およびサービスプロバイダに対する書込み要求によって
示される書込みデータを終了させることが、ストレージゲートウェイによって、ブートス
トラッププロセスと同時に実行される、付記項2に記載の方法。
付記項4.書込み要求によって示される書込みデータのサービスプロバイダへの前記送
信が、ある期間中断されるパススルーモードにゲートウェイプロセスが入ることと、
ゲートウェイプロセスがパススルーモードから出ることと、
前記パススルーモードを出た後、一次データストアと一致する、一次データストアのス
ナップショットを作成するために、ゲートウェイプロセスが、ローカルデータストア上に
格納されたデータの少なくとも一部をサービスプロバイダにアップロードすることと
をさらに含む、付記項1に記載の方法。
付記項5.顧客ネットワーク上の1つまたは複数のプロセスが、顧客ネットワーク上の
ストレージゲートウェイによって公開された1つまたは複数のデータポートに対して、読
取り要求および書込み要求を開始する、付記項1に記載の方法。
付記項6.書込みデータをサービスプロバイダに前記送信することが、読取り要求およ
び書込み要求をローカルデータストアに前記渡すこと、ならびに読取り要求および書込み
要求に対するローカルデータストアからの応答を1つまたは複数のプロセスに返すことと
非同期に実行される、付記項1に記載の方法。
付記項7.ローカルデータストアが1つまたは複数の記憶装置を含み、前記方法が、1
つまたは複数の記憶装置のうちの少なくとも1つ上の少なくとも一部のデータを、リモー
トデータストア上の一次データストアのスナップショットから復元することをさらに含む
、付記項1に記載の方法。
付記項8.書込み要求によって示される書込みデータをサービスプロバイダに前記送信
することが、
書込みデータを書込みログにバッファリングすることと、
ストレージゲートウェイのアップロード構成要素によって、バッファリングされた書込
みデータを、サービスプロバイダの対応するアップロード構成要素にアップロードするこ
とと
を含む、付記項1に記載の方法。
付記項9.リモートデータストアが、サービスプロバイダのストレージサービスによっ
て提供され、かつ、書込み要求によって示される書込みデータをサービスプロバイダに前
記送信することが、ストレージサービスへのインタフェースに従って、サービスプロバイ
ダが書込みデータを送信することを含む、付記項1に記載の方法。
付記項10.少なくとも1つのプロセッサと
プログラム命令を含むメモリであって、そのプログラム命令が、
顧客ネットワーク上の1つまたは複数のプロセスから、顧客ネットワーク上のローカル
データストアに向けられた読取り要求および書込み要求を受信することと、
その読取り要求および書込み要求をローカルデータストアに渡すことと、
サービスプロバイダによりリモートデータストア上で維持されるローカルデータストア
のスナップショットを書込みデータで更新するために、書込み要求によって示される書込
みデータをサービスプロバイダ送信することと
を行うように動作可能なゲートウェイプロセスを実現するように、少なくとも1つのプロ
セッサによって実行可能である、メモリと
を備える装置。
付記項11.ローカルデータストアと一致する、ローカルデータストアのスナップショ
ットを作成するために、ゲートウェイプロセスが、ローカルデータストア上に格納された
データの少なくとも一部をサービスプロバイダにアップロードするように動作可能である
、付記項10に記載の装置。
付記項12.顧客ネットワーク上の1つまたは複数のプロセスが、顧客ネットワーク上
のストレージゲートウェイによって公開された1つまたは複数のデータポートに対して、
読取り要求および書込み要求を開始する、付記項10に記載の装置。
付記項13.前記ゲートウェイプロセスが、書込みデータをサービスプロバイダに前記
送信することを、読取り要求および書込み要求をローカルデータストアに前記渡すこと、
ならびに読取り要求および書込み要求に対するローカルデータストアからの応答を開始プ
ロセスに返すことと非同期に実行するように動作可能である、付記項10に記載の装置。
付記項14.ゲートウェイプロセスが、そのゲートウェイプロセスをサービスプロバイ
ダに登録するプロセスを開始するようにさらに動作可能である、付記項10に記載の装置
付記項15.ゲートウェイプロセスが、ストレージサービスから受信した設定情報に従
って、シャドーイングゲートウェイとして設定されるようにさらに動作可能であり、シャ
ドーイングゲートウェイがローカルデータストア上に格納されたデータをリモートデータ
ストアにシャドーイングする、付記項14に記載の装置。
付記項16.ゲートウェイプロセスが、ローカルデータストア内の少なくとも一部のデ
ータを、ローカルデータストアのスナップショットから復元するようにさらに動作可能で
ある、付記項10に記載の装置。
付記項17.書込み要求によって示される書込みデータをサービスプロバイダに送信す
るために、ゲートウェイプロセスが、
その書込みデータを書込みログにバッファリングすることと、
そのバッファリングされた書込みデータを書込みログからサービスプロバイダにアップ
ロードすることと
を行うようにさらに動作可能である、付記項10に記載の装置。
付記項18.前記アップロードすることが、データ重複排除技術に従って実行される、
付記項17に記載の装置。
付記項19.リモートデータストアが、サービスプロバイダのストレージサービスによ
って提供され、かつ、書込みデータをそのサービスプロバイダに送信するために、ゲート
ウェイプロセスが、その書込みデータをストレージサービスのインタフェースによって指
定されたフォーマットで送信するようにさらに動作可能である、付記項10に記載の装置
付記項20.ローカルデータストアのスナップショットが、リモートデータストア上で
サービスプロバイダによりブロックフォーマットで維持され、かつ、書込み要求によって
示される書込みデータをサービスプロバイダに送信するために、ゲートウェイプロセスが
、書込みデータによって修正されたデータのブロックをサービスプロバイダにアップロー
ドするようにさらに動作可能である、付記項10に記載の装置。
付記項21.前記ブロックをアップロードすることが、データ重複排除技術に従って実
行される、付記項20に記載の装置。
付記項22.ゲートウエイプロセスを実現するコンピュータで実行可能なプログラム命
令を格納するための持続性コンピュータアクセス可能記憶媒体であって、そのゲートウエ
イプロセスが:
サービスプロバイダから受信された設定情報に従って、コンピュータを顧客ネットワー
ク上でシャドーイングゲートウェイとして設定されることであって、シャドーイングゲー
トウェイが、ローカルデータストア上に格納されたデータをサービスプロバイダによって
維持されるリモートデータストアにシャドーイングするように、
ゲートウェイとして設定されるように動作可能であり、
ローカルデータストア上に格納されたデータをリモートデータストアにシャドーイング
するために、ゲートウェイプロセスは、
顧客ネットワーク上の1つまたは複数のプロセスからローカルデータストアに向けら
れた書込み要求を受信することと、
リモートデータストア上でサービスプロバイダにより維持されるローカルデータスト
アのスナップショットを書込みデータで更新するために、その書込み要求によって示され
る書込みデータをサービスプロバイダにアップロードすることと
を行うように動作可能である、
持続性コンピュータアクセス可能記憶媒体。
付記項23.前記設定することに続いて、ローカルデータストアと一致する、ローカル
データストアのスナップショットを作成するために、ゲートウェイプロセスが、ローカル
データストア上に格納されたデータの少なくとも一部をサービスプロバイダにアップロー
ドするように動作可能である、付記項22に記載の持続性コンピュータアクセス可能記憶
媒体。
付記項24.ゲートウェイプロセスが、ローカルデータストアに向けられた読取り要求
を受信および処理するようにさらに動作可能である、付記項22に記載の持続性コンピュ
ータアクセス可能記憶媒体。
付記項25.顧客ネットワーク上の1つまたは複数のプロセスが、顧客ネットワーク上
のストレージゲートウェイによって公開された1つまたは複数のデータポートに対して、
読取り要求および書込み要求を開始する、付記項24に記載の持続性コンピュータアクセ
ス可能記憶媒体。
付記項26.ゲートウェイプロセスが、書込み要求をローカルデータストアに渡すよう
にさらに動作可能であり、ゲートウェイプロセスが、書込みデータをサービスプロバイダ
に前記アップロードすることを、書込み要求をローカルデータストアに前記渡すこと、お
よび読取り要求を前記処理することと非同期的に実行するように動作可能である、付記項
24に記載の持続性コンピュータアクセス可能記憶媒体。
付記項27.書込み要求によって示される書込みデータをサービスプロバイダにアップ
ロードするために、ゲートウェイプロセスが、
その書込みデータを書込みログにバッファリングすることと、
データ重複排除技術に従って、そのバッファリングされた書込みデータを書込みログか
らサービスプロバイダにアップロードすることと
を行うようにさらに動作可能である、
付記項22に記載の持続性コンピュータアクセス可能記憶媒体。
付記項28.書込みデータをサービスプロバイダにアップロードするために、ゲートウ
ェイプロセスが、サービスプロバイダのウェブサービスインタフェースに従って、書込み
データをアップロードするようにさらに動作可能である、付記項22に記載の持続性コン
ピュータアクセス可能記憶媒体。
付記項29.書込みデータをサービスプロバイダにアップロードするために、ゲートウ
ェイプロセスが、書込みデータによって修正されたデータのブロックをサービスプロバイ
ダにアップロードするようにさらに動作可能である、付記項22に記載の持続性コンピュ
ータアクセス可能記憶媒体。
付記項30.前記アップロードすることが、データ重複排除技術に従って実行される、
付記項29に記載の持続性コンピュータアクセス可能記憶媒体。

Claims (15)

  1. 顧客ネットワーク上のストレージゲートウェイによって、リモートデータストアをサービスプロバイダの顧客に提供するサービスプロバイダに、前記ストレージゲートウェイを登録するプロセスを開始することと、
    前記ストレージゲートウェイによって、前記ストレージゲートウェイが顧客ネットワーク上のシャドーイングゲートウェイとして機能するように指定する設定情報を受信することであって、前記シャドーイングゲートウェイが、前記顧客ネットワーク内のローカルデータストア上に格納されたデータを、前記リモートデータストアにシャドーイングし、前記ローカルデータストアが前記データに対する一次データストアとして機能する、設定情報を受信することと、
    前記設定情報に応答して、前記ストレージゲートウェイを、前記顧客ネットワーク上の前記シャドーイングゲートウェイとして設定することと、
    前記顧客ネットワーク上の1つまたは複数のプロセスから、前記ストレージゲートウェイによって、前記一次データストアに向けられた読取り要求および書込み要求を受信することであって、前記ストレージゲートウェイは、前記顧客ネットワーク上の前記1つまたは複数のプロセスから、ブロックストレージプロトコルを介して、前記読取り要求および書込み要求を受信することと、
    前記読取り要求について、前記読取り要求を前記一次データストアに渡すことと、
    前記書込み要求について、前記書込み要求を前記一次データストアに渡し、かつ、前記リモートデータストア上の前記一次データストアのスナップショットを書込みデータで更新するために、前記書込み要求によって示される書込みデータを前記サービスプロバイダに送信することとを含む、
    方法。
  2. 前記ストレージゲートウェイが、前記顧客ネットワーク上の前記一次データストアと一致する、前記一次データストアの前記スナップショットを作成するために、前記ローカルデータストア上に格納されたデータの少なくとも一部を前記サービスプロバイダにアップロードするブートストラッププロセスを開始することをさらに含む、請求項1に記載の方法。
  3. 前記読取り要求および書込み要求を受信すること、前記読取り要求および前記書込み要求を前記一次データストアに渡すこと、および前記サービスプロバイダに前記書込み要求によって示される書込みデータを送信することが、前記ストレージゲートウェイによって、前記ブートストラッププロセスと同時に実行される、請求項2に記載の方法。
  4. 前記ストレージゲートウェイが、前記書込み要求によって示される前記書込みデータのサービスプロバイダへの送信が、所定の期間中断されるパススルーモードに入ることと、
    前記ストレージゲートウェイが、前記パススルーモードから出ることと、
    前記ストレージゲートウェイが、前記パススルーモードを出た後、前記一次データストアと一致する、前記一次データストアの前記スナップショットを作成するために、前記ローカルデータストア上に格納されたデータの少なくとも一部を前記サービスプロバイダにアップロードすることとをさらに含む、請求項1に記載の方法。
  5. 前記書込みデータを前記サービスプロバイダに送信することが、前記読取り要求および前記書込み要求を前記ローカルデータストアに渡すこと、ならびに前記読取り要求および前記書込み要求に対する前記ローカルデータストアからの応答を前記1つまたは複数のプロセスに返すことと非同期に実行される、請求項1に記載の方法。
  6. 前記ローカルデータストアが、1つまたは複数の記憶装置を含み、前記1つまたは複数の記憶装置のうちの少なくとも1つ上の少なくとも一部のデータを、前記リモートデータストア上の前記一次データストアの前記スナップショットから復元することをさらに含む、請求項1に記載の方法。
  7. 前記書込み要求によって示される書込みデータを前記サービスプロバイダに送信することが、前記書込みデータを書込みログにバッファリングすることと、前記ストレージゲートウェイのアップロード構成要素によって、前記バッファリングされた書込みデータを、前記サービスプロバイダの対応するアップロード構成要素にアップロードすることとを含む、請求項1に記載の方法。
  8. 少なくとも1つのプロセッサとプログラム命令を含むメモリを備え、
    前記プログラム命令は、
    顧客ネットワーク上の1つまたは複数のプロセスから、前記顧客ネットワーク上のローカルデータストアに向けられた読取り要求および書込み要求を受信することであって、ゲートウェイプロセスは、前記顧客ネットワーク上の前記1つまたは複数のプロセスから、ブロックストレージプロトコルを介して、前記読取り要求および前記書込み要求を受信することと、
    前記読取り要求および前記書込み要求を前記ローカルデータストアに渡すことと、
    サービスプロバイダによりリモートデータストア上で維持される前記ローカルデータストアのスナップショットを書込みデータで更新するために、前記書込み要求によって示される書込みデータを前記サービスプロバイダ送信することと
    を行うように動作可能なゲートウェイプロセスを実現するように、前記少なくとも1つのプロセッサによって実行可能である、
    装置。
  9. ゲートウェイプロセスが、前記顧客ネットワーク上の前記ローカルデータストアと一致する、前記ローカルデータストアの前記スナップショットを作成するために、前記ローカルデータストア上に格納されたデータの少なくとも一部を前記サービスプロバイダにアップロードするように動作可能である、請求項8に記載の装置。
  10. 前記ゲートウェイプロセスが、前記書込みデータを前記サービスプロバイダに送信することを、前記読取り要求および前記書込み要求を前記ローカルデータストアに渡すこと、ならびに前記読取り要求および前記書込み要求に対する前記ローカルデータストアからの応答を前記1つまたは複数のプロセスに返すことと非同期に実行するように動作可能である、請求項8に記載の装置。
  11. 前記ゲートウェイプロセスが、前記ゲートウェイプロセスを前記サービスプロバイダに登録するプロセスを開始するようにさらに動作可能である、請求項8に記載の装置。
  12. 前記ゲートウェイプロセスが、前記サービスプロバイダから受信した設定情報に従って、シャドーイングゲートウェイとして設定されるようにさらに動作可能であり、前記シャドーイングゲートウェイが前記ローカルデータストア上に格納されたデータを前記リモートデータストアにシャドーイングする、請求項11に記載の装置。
  13. 前記ゲートウェイプロセスが、前記ローカルデータストア内の少なくとも一部のデータを、前記ローカルデータストアの前記スナップショットから復元するようにさらに動作可能である、請求項8に記載の装置。
  14. 前記書込み要求によって示される書込みデータを前記サービスプロバイダに送信するために、前記ゲートウェイプロセスが、前記書込みデータを書込みログにバッファリングすることと、前記バッファリングされた書込みデータを前記書込みログから前記サービスプロバイダにアップロードすることとを行うようにさらに動作可能である、請求項8に記載の装置。
  15. 前記ローカルデータストアの前記スナップショットが、前記リモートデータストア上で前記サービスプロバイダによりブロックフォーマットで維持され、かつ、前記書込み要求によって示される書込みデータを前記サービスプロバイダに送信するために、前記ゲートウェイプロセスが、前記書込みデータによって修正されたデータのブロックを前記サービスプロバイダにアップロードするようにさらに動作可能である、請求項8に記載の装置。
JP2016022137A 2011-06-30 2016-02-08 シャドーイングストレージゲートウェイ Active JP6139718B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/174,505 US9294564B2 (en) 2011-06-30 2011-06-30 Shadowing storage gateway
US13/174,505 2011-06-30

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2014519136A Division JP6073878B2 (ja) 2011-06-30 2012-06-29 シャドーイングストレージゲートウェイ

Publications (2)

Publication Number Publication Date
JP2016129036A JP2016129036A (ja) 2016-07-14
JP6139718B2 true JP6139718B2 (ja) 2017-05-31

Family

ID=47391781

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014519136A Active JP6073878B2 (ja) 2011-06-30 2012-06-29 シャドーイングストレージゲートウェイ
JP2016022137A Active JP6139718B2 (ja) 2011-06-30 2016-02-08 シャドーイングストレージゲートウェイ

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2014519136A Active JP6073878B2 (ja) 2011-06-30 2012-06-29 シャドーイングストレージゲートウェイ

Country Status (6)

Country Link
US (2) US9294564B2 (ja)
EP (1) EP2727001B1 (ja)
JP (2) JP6073878B2 (ja)
CN (1) CN103930879B (ja)
CA (1) CA2840596C (ja)
WO (1) WO2013003713A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7021909B2 (ja) 2017-11-07 2022-02-17 ケイミュー株式会社 親綱保持具及び親綱設置方法

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9294564B2 (en) 2011-06-30 2016-03-22 Amazon Technologies, Inc. Shadowing storage gateway
US9009106B1 (en) 2011-08-10 2015-04-14 Nutanix, Inc. Method and system for implementing writable snapshots in a virtualized storage environment
US9652265B1 (en) 2011-08-10 2017-05-16 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment with multiple hypervisor types
US8549518B1 (en) 2011-08-10 2013-10-01 Nutanix, Inc. Method and system for implementing a maintenanece service for managing I/O and storage for virtualization environment
US8863124B1 (en) 2011-08-10 2014-10-14 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US9747287B1 (en) 2011-08-10 2017-08-29 Nutanix, Inc. Method and system for managing metadata for a virtualization environment
US8601473B1 (en) 2011-08-10 2013-12-03 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment
US8850130B1 (en) 2011-08-10 2014-09-30 Nutanix, Inc. Metadata for managing I/O and storage for a virtualization
US8789208B1 (en) 2011-10-04 2014-07-22 Amazon Technologies, Inc. Methods and apparatus for controlling snapshot exports
US9148381B2 (en) 2011-10-21 2015-09-29 Qualcomm Incorporated Cloud computing enhanced gateway for communication networks
US9116893B2 (en) 2011-10-21 2015-08-25 Qualcomm Incorporated Network connected media gateway for communication networks
GB2496377B (en) * 2011-11-02 2014-07-30 Ibm Message reconciliation during disaster recovery
US8990163B2 (en) * 2011-12-15 2015-03-24 Sap Se Snapshot of distributed enterprise business data stored in various cloud services
CN104040996B (zh) * 2012-01-09 2017-07-07 高通股份有限公司 用于通信网络的受云计算控制的网关
US9772866B1 (en) 2012-07-17 2017-09-26 Nutanix, Inc. Architecture for implementing a virtualization environment and appliance
US8862550B1 (en) * 2012-09-29 2014-10-14 Emc Corporation Reliable in-place bootstrap metadata transformation in a shared data store
US9268652B1 (en) 2012-10-31 2016-02-23 Amazon Technologies, Inc. Cached volumes at storage gateways
US9514007B2 (en) * 2013-03-15 2016-12-06 Amazon Technologies, Inc. Database system with database engine and separate distributed storage service
US9813499B2 (en) * 2013-07-23 2017-11-07 Virtual Strongbox, Inc. Virtual storage system and method of sharing access to the virtual storage system for adding electronic documents
WO2015014189A1 (zh) * 2013-08-02 2015-02-05 优视科技有限公司 一种访问网站的方法及装置
US11422907B2 (en) * 2013-08-19 2022-08-23 Microsoft Technology Licensing, Llc Disconnected operation for systems utilizing cloud storage
US9529679B2 (en) * 2013-11-13 2016-12-27 Verizon Patent And Licensing Inc. Volume snapshot in a shared environment
US9342457B2 (en) * 2014-03-11 2016-05-17 Amazon Technologies, Inc. Dynamically modifying durability properties for individual data volumes
US10055352B2 (en) * 2014-03-11 2018-08-21 Amazon Technologies, Inc. Page cache write logging at block-based storage
US9600203B2 (en) 2014-03-11 2017-03-21 Amazon Technologies, Inc. Reducing data volume durability state for block-based storage
CN104080107B (zh) * 2014-04-15 2017-09-29 石家庄安瑞科气体机械有限公司 无线网关寄存器映射表自动设置的方法
US10303663B1 (en) 2014-06-12 2019-05-28 Amazon Technologies, Inc. Remote durable logging for journaling file systems
CN105451271B (zh) * 2014-09-05 2019-07-02 中兴通讯股份有限公司 一种资源管理方法及装置
US9697268B1 (en) 2014-09-16 2017-07-04 Amazon Technologies, Inc. Bulk data distribution system
US10114828B2 (en) * 2014-11-11 2018-10-30 International Business Machines Corporation Local content sharing through edge caching and time-shifted uploads
US10031679B2 (en) 2014-11-21 2018-07-24 Security First Corp. Gateway for cloud-based secure storage
US10270879B1 (en) * 2014-12-30 2019-04-23 EMC IP Holding Company LLC Multi-tenant caching storage intelligence
US10505862B1 (en) * 2015-02-18 2019-12-10 Amazon Technologies, Inc. Optimizing for infrastructure diversity constraints in resource placement
US9900386B2 (en) * 2015-04-09 2018-02-20 International Business Machines Corporation Provisioning data to distributed computing systems
US9971526B1 (en) * 2015-06-29 2018-05-15 Amazon Technologies, Inc. Volume-based key-value store
US10360529B2 (en) * 2015-06-30 2019-07-23 Amazon Technologies, Inc. Shippable network-attached data storage device with updateable electronic display
US10893102B2 (en) * 2015-07-07 2021-01-12 Nasuni Corporation Systems and methods for restoring an interface to a global file system
US9830273B2 (en) 2015-07-30 2017-11-28 Netapp, Inc. Deduplicated host cache flush to remote storage
CN107615260B (zh) * 2015-10-22 2021-05-07 甲骨文国际公司 用于在事务处理环境中提供分布式高速缓存的系统和方法
CN107122123A (zh) * 2016-02-24 2017-09-01 湖南百里目科技有限责任公司 一种新型存储虚拟化网关直通模式方法
CN107229660A (zh) * 2016-03-25 2017-10-03 阿里巴巴集团控股有限公司 一种数据去重的方法和设备
US10467103B1 (en) 2016-03-25 2019-11-05 Nutanix, Inc. Efficient change block training
US10708389B2 (en) * 2016-12-06 2020-07-07 Intelligrated Headquarters, Llc Phased deployment of scalable real time web applications for material handling system
US10491567B2 (en) * 2017-03-17 2019-11-26 Verizon Patent And Licensing Inc. Dynamic firewall configuration based on proxy container deployment
US10521143B2 (en) * 2017-03-23 2019-12-31 Netapp Inc. Composite aggregate architecture
US10560263B2 (en) * 2017-03-24 2020-02-11 Micron Technology, Inc. Secure memory arrangements
KR102532173B1 (ko) 2017-06-23 2023-05-16 후아웨이 테크놀러지 컴퍼니 리미티드 메모리 액세스 기술 및 컴퓨터 시스템
US10534642B2 (en) 2017-09-25 2020-01-14 International Business Machines Corporation Application restore time from cloud gateway optimization using storlets
US20190129802A1 (en) * 2017-11-02 2019-05-02 EMC IP Holding Company LLC Backup within a file system using a persistent cache layer to tier data to cloud storage
JP7007565B2 (ja) * 2017-11-20 2022-01-24 富士通株式会社 情報処理装置および情報処理プログラム
KR20190058132A (ko) * 2017-11-21 2019-05-29 에이치피프린팅코리아 유한회사 롱폴링 연결 유지를 위한 응답 지연 시간 결정
KR20190074890A (ko) * 2017-12-20 2019-06-28 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
EP3727264A1 (en) 2017-12-20 2020-10-28 Pharmadome S.R.L. Rigid or semi-rigid protecting element for covering wounds
US10848545B2 (en) * 2018-01-31 2020-11-24 EMC IP Holding Company LLC Managing cloud storage of block-based and file-based data
US10931656B2 (en) 2018-03-27 2021-02-23 Oracle International Corporation Cross-region trust for a multi-tenant identity cloud service
US11165634B2 (en) 2018-04-02 2021-11-02 Oracle International Corporation Data replication conflict detection and resolution for a multi-tenant identity cloud service
US11258775B2 (en) * 2018-04-04 2022-02-22 Oracle International Corporation Local write for a multi-tenant identity cloud service
US11258853B2 (en) 2018-05-04 2022-02-22 EMC IP Holding Company, LLC Storage management system and method
US10860527B2 (en) 2018-05-04 2020-12-08 EMC IP Holding Company, LLC Storage management system and method
US10891257B2 (en) 2018-05-04 2021-01-12 EMC IP Holding Company, LLC Storage management system and method
CN111147430A (zh) * 2018-11-06 2020-05-12 中移(杭州)信息技术有限公司 一种应用于智能家庭网关的加密方法及装置
US11669321B2 (en) 2019-02-20 2023-06-06 Oracle International Corporation Automated database upgrade for a multi-tenant identity cloud service
US10949124B2 (en) 2019-06-28 2021-03-16 Amazon Technologies, Inc. Virtualized block storage servers in cloud provider substrate extension
US10949131B2 (en) * 2019-06-28 2021-03-16 Amazon Technologies, Inc. Control plane for block storage service distributed across a cloud provider substrate and a substrate extension
US11411771B1 (en) 2019-06-28 2022-08-09 Amazon Technologies, Inc. Networking in provider network substrate extensions
US11374789B2 (en) 2019-06-28 2022-06-28 Amazon Technologies, Inc. Provider network connectivity to provider network substrate extensions
US11044118B1 (en) * 2019-06-28 2021-06-22 Amazon Technologies, Inc. Data caching in provider network substrate extensions
EP3987387A1 (en) * 2019-06-28 2022-04-27 Amazon Technologies Inc. Virtualized block storage servers in cloud provider substrate extension
US10949125B2 (en) * 2019-06-28 2021-03-16 Amazon Technologies, Inc. Virtualized block storage servers in cloud provider substrate extension
US11659058B2 (en) 2019-06-28 2023-05-23 Amazon Technologies, Inc. Provider network connectivity management for provider network substrate extensions
US12045252B2 (en) 2019-09-13 2024-07-23 Pure Storage, Inc. Providing quality of service (QoS) for replicating datasets
US11797569B2 (en) 2019-09-13 2023-10-24 Pure Storage, Inc. Configurable data replication
US11281541B2 (en) 2020-01-15 2022-03-22 EMC IP Holding Company LLC Dynamic snapshot backup in multi-cloud environment
CN111464622B (zh) * 2020-03-30 2023-07-14 北京星辰天合科技股份有限公司 分布式存储系统中的卷映射处理方法及装置
CN111581016B (zh) * 2020-04-14 2021-05-18 上海爱数信息技术股份有限公司 一种现代应用的副本数据管理系统及方法

Family Cites Families (110)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3838228A (en) 1973-10-01 1974-09-24 Gte Automatic Electric Lab Inc Junctor disconnect detection circuit
US5636355A (en) 1993-06-30 1997-06-03 Digital Equipment Corporation Disk cache management techniques using non-volatile storage
JP3089160B2 (ja) * 1994-05-20 2000-09-18 シャープ株式会社 ディジタル記録再生装置
DE69719934T2 (de) 1996-12-20 2003-11-27 International Business Machines Corp., Armonk Verfahren und Vorrichtung zur schnellen und sicheren Datensammlung
US6148368A (en) 1997-07-31 2000-11-14 Lsi Logic Corporation Method for accelerating disk array write operations using segmented cache memory and data logging
GB9717718D0 (en) 1997-08-22 1997-10-29 Philips Electronics Nv Memory management with compaction of data blocks
GB2335104B (en) * 1998-03-06 2002-01-30 British Broadcasting Corp Cascading of up conversion and down conversion
US7103797B1 (en) 1998-03-30 2006-09-05 Emc Corporation Resource allocation throttling in remote data mirroring system
US6792540B1 (en) 1998-05-28 2004-09-14 Oracle International Corporation Data replication security
JP3763992B2 (ja) 1999-03-30 2006-04-05 富士通株式会社 データ処理装置及び記録媒体
US6216199B1 (en) 1999-08-04 2001-04-10 Lsi Logic Corporation Hardware mechanism for managing cache structures in a data storage system
US8032634B1 (en) * 1999-08-23 2011-10-04 Oracle America, Inc. Approach for allocating resources to an apparatus based on resource requirements
US6477624B1 (en) 1999-11-08 2002-11-05 Ondotek, Inc. Data image management via emulation of non-volatile storage device
US7093028B1 (en) * 1999-12-15 2006-08-15 Microsoft Corporation User and content aware object-based data stream transmission methods and arrangements
US6880086B2 (en) 2000-05-20 2005-04-12 Ciena Corporation Signatures for facilitating hot upgrades of modular software components
US20010049773A1 (en) 2000-06-06 2001-12-06 Bhavsar Shyamkant R. Fabric cache
US7386610B1 (en) * 2000-09-18 2008-06-10 Hewlett-Packard Development Company, L.P. Internet protocol data mirroring
GB0026981D0 (en) 2000-11-04 2000-12-20 Koninkl Philips Electronics Nv Bridging system for interoperation of remote groups of devices
US6920615B1 (en) 2000-11-29 2005-07-19 Verizon Corporate Services Group Inc. Method and system for service-enablement gateway and its service portal
US6976060B2 (en) * 2000-12-05 2005-12-13 Agami Sytems, Inc. Symmetric shared file storage system
DE20020657U1 (de) 2000-12-06 2002-01-17 Fa. Hermann Heye i.Ins., 31683 Obernkirchen Vorrichtung zum Schließen und Öffnen von Formhälften einer Glasformmaschine
US7562110B2 (en) * 2001-01-11 2009-07-14 F5 Networks, Inc. File switch and switched file system
US6748502B2 (en) 2001-01-12 2004-06-08 Hitachi, Ltd. Virtual volume storage
US20020169827A1 (en) 2001-01-29 2002-11-14 Ulrich Thomas R. Hot adding file system processors
US6516380B2 (en) 2001-02-05 2003-02-04 International Business Machines Corporation System and method for a log-based non-volatile write cache in a storage controller
US20020199205A1 (en) * 2001-06-25 2002-12-26 Narad Networks, Inc Method and apparatus for delivering consumer entertainment services using virtual devices accessed over a high-speed quality-of-service-enabled communications network
US7096300B2 (en) * 2001-08-31 2006-08-22 American Megatrends, Inc. Method and apparatus for suspending communication with a hard disk drive in order to transfer data relating to the hard disk drive
JP2003122508A (ja) 2001-10-15 2003-04-25 Hitachi Ltd ボリューム管理方法及び装置
JP2003202964A (ja) 2002-01-09 2003-07-18 Hitachi Ltd 計算機システムの制御方法、計算機システム、記憶装置の制御方法及び記憶装置
US6948089B2 (en) 2002-01-10 2005-09-20 Hitachi, Ltd. Apparatus and method for multiple generation remote backup and fast restore
US6934799B2 (en) * 2002-01-18 2005-08-23 International Business Machines Corporation Virtualization of iSCSI storage
US6934826B2 (en) 2002-03-26 2005-08-23 Hewlett-Packard Development Company, L.P. System and method for dynamically allocating memory and managing memory allocated to logging in a storage area network
JP2003316522A (ja) 2002-04-26 2003-11-07 Hitachi Ltd 計算機システムおよび計算機システムの制御方法
US7448077B2 (en) 2002-05-23 2008-11-04 International Business Machines Corporation File level security for a metadata controller in a storage area network
US7191304B1 (en) 2002-09-06 2007-03-13 3Pardata, Inc. Efficient and reliable virtual volume mapping
US7624170B2 (en) 2002-09-26 2009-11-24 International Business Machines Corporation Integrated storage appliance
US7752329B1 (en) 2002-10-31 2010-07-06 Aol Inc. Migrating configuration information based on user identity information
US7010645B2 (en) 2002-12-27 2006-03-07 International Business Machines Corporation System and method for sequentially staging received data to a write cache in advance of storing the received data
WO2004077211A2 (en) * 2003-02-28 2004-09-10 Tilmon Systems Ltd. Method and apparatus for increasing file server performance by offloading data path processing
US6925533B2 (en) * 2003-05-07 2005-08-02 International Business Machines Corporation Virtual disk image system with local cache disk for iSCSI communications
US20040243699A1 (en) 2003-05-29 2004-12-02 Mike Koclanes Policy based management of storage resources
US7460672B2 (en) 2003-07-18 2008-12-02 Sanrad, Ltd. Method for securing data storage in a storage area network
US8776050B2 (en) * 2003-08-20 2014-07-08 Oracle International Corporation Distributed virtual machine monitor for managing multiple virtual resources across multiple physical nodes
US20050157730A1 (en) * 2003-10-31 2005-07-21 Grant Robert H. Configuration management for transparent gateways in heterogeneous storage networks
US7340639B1 (en) 2004-01-08 2008-03-04 Network Appliance, Inc. System and method for proxying data access commands in a clustered storage system
US7130956B2 (en) 2004-02-10 2006-10-31 Sun Microsystems, Inc. Storage system including hierarchical cache metadata
US20050183021A1 (en) * 2004-02-13 2005-08-18 Allen Joel E. Method for electronically packaging a user's personal computing environment on a computer or device, and mobilizing it for transfer over a network
US7843906B1 (en) * 2004-02-13 2010-11-30 Habanero Holdings, Inc. Storage gateway initiator for fabric-backplane enterprise servers
US7966293B1 (en) * 2004-03-09 2011-06-21 Netapp, Inc. System and method for indexing a backup using persistent consistency point images
US7325019B2 (en) * 2004-03-12 2008-01-29 Network Appliance, Inc. Managing data replication policies
US7340652B2 (en) 2004-04-30 2008-03-04 International Business Machines Corporation Invalidation of storage control unit cache metadata
US7523341B2 (en) * 2004-05-13 2009-04-21 International Business Machines Corporation Methods, apparatus and computer programs for recovery from failures in a computing environment
US7681069B1 (en) * 2004-08-30 2010-03-16 Netapp, Inc. Corruption checking during backup
US7523286B2 (en) 2004-11-19 2009-04-21 Network Appliance, Inc. System and method for real-time balancing of user workload across multiple storage systems with shared back end storage
US20060155581A1 (en) * 2005-01-10 2006-07-13 George Eisenberger Systems with user selectable data attributes for automated electronic search, identification and publication of relevant data from electronic data records at multiple data sources
DE102005014477A1 (de) 2005-03-30 2006-10-12 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung und Verfahren zum Erzeugen eines Datenstroms und zum Erzeugen einer Multikanal-Darstellung
US7549014B1 (en) * 2005-04-22 2009-06-16 Network Appliance, Inc. Method and apparatus for coalesced multi-block read
US20060271656A1 (en) 2005-05-24 2006-11-30 Yuichi Yagawa System and method for auditing storage systems remotely
US8037026B1 (en) 2005-07-01 2011-10-11 Hewlett-Packard Development Company, L.P. Protected user-controllable volume snapshots
US7651593B2 (en) 2005-12-19 2010-01-26 Commvault Systems, Inc. Systems and methods for performing data replication
US7801912B2 (en) 2005-12-29 2010-09-21 Amazon Technologies, Inc. Method and apparatus for a searchable data service
US8127288B2 (en) * 2006-01-17 2012-02-28 International Business Machines Corporation Installing and updating interpreted programming language applications using a designated virtual machine
US8560503B1 (en) * 2006-01-26 2013-10-15 Netapp, Inc. Content addressable storage system
US8560569B2 (en) * 2006-01-27 2013-10-15 Emc Corporation Method and apparatus for performing bulk file system attribute retrieval
JP4767057B2 (ja) 2006-03-27 2011-09-07 富士通株式会社 ハッシュ値生成プログラム、ストレージ管理プログラム、判定プログラム及びデータ変更検証装置
US7873601B1 (en) 2006-06-29 2011-01-18 Emc Corporation Backup of incremental metadata in block based backup systems
US7676702B2 (en) 2006-08-14 2010-03-09 International Business Machines Corporation Preemptive data protection for copy services in storage systems and applications
US7797323B1 (en) 2006-10-11 2010-09-14 Hewlett-Packard Development Company, L.P. Producing representative hashes for segments of a file
US8589341B2 (en) * 2006-12-04 2013-11-19 Sandisk Il Ltd. Incremental transparent file updating
US9064010B2 (en) * 2006-12-13 2015-06-23 Quickplay Media Inc. Encoding and transcoding for mobile media
WO2008085205A2 (en) * 2006-12-29 2008-07-17 Prodea Systems, Inc. System and method for providing network support services and premises gateway support infrastructure
US20080178278A1 (en) 2007-01-22 2008-07-24 Doron Grinstein Providing A Generic Gateway For Accessing Protected Resources
US7823286B2 (en) 2007-02-06 2010-11-02 Jaffe Limited Method for disposing wick structure in a heat pipe body assembly
US7865663B1 (en) 2007-02-16 2011-01-04 Vmware, Inc. SCSI protocol emulation for virtual storage device stored on NAS device
US20090077097A1 (en) * 2007-04-16 2009-03-19 Attune Systems, Inc. File Aggregation in a Switched File System
US8161179B2 (en) * 2007-06-28 2012-04-17 Apple Inc. Generating low resolution user interfaces for transmission to mobile devices
US7801993B2 (en) 2007-07-19 2010-09-21 Hitachi, Ltd. Method and apparatus for storage-service-provider-aware storage system
US7802286B2 (en) * 2007-07-24 2010-09-21 Time Warner Cable Inc. Methods and apparatus for format selection for network optimization
US8190763B2 (en) 2007-09-14 2012-05-29 At&T Intellectual Property I, Lp System and method for trouble detection, isolation, and management
EP2201474B1 (en) 2007-10-03 2020-05-06 NTT Global Networks Incorporated Virtualized application acceleration infrastructure
US8478865B2 (en) * 2007-10-09 2013-07-02 Cleversafe, Inc. Systems, methods, and apparatus for matching a connection request with a network interface adapted for use with a dispersed data storage network
US8145844B2 (en) 2007-12-13 2012-03-27 Arm Limited Memory controller with write data cache and read data cache
US7865785B2 (en) * 2008-02-13 2011-01-04 Honeywell International Inc. System and method for improving communications for systems having communications protocol enabled devices
JP5269916B2 (ja) * 2008-03-14 2013-08-21 テレフオンアクチーボラゲット エル エム エリクソン(パブル) ローカル・ネットワークへのリモート・アクセスの方法および装置
US8200638B1 (en) 2008-04-30 2012-06-12 Netapp, Inc. Individual file restore from block-level incremental backups by using client-server backup protocol
US8126847B1 (en) 2008-04-30 2012-02-28 Network Appliance, Inc. Single file restore from image backup by using an independent block list for each file
US8019882B2 (en) 2008-06-27 2011-09-13 Microsoft Corporation Content identification for peer-to-peer content retrieval
US20100057984A1 (en) 2008-08-26 2010-03-04 Seagate Technology Llc Memory hierarchy containing only non-volatile cache
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US20100125730A1 (en) 2008-11-17 2010-05-20 David Dodgson Block-level data storage security system
US20100162032A1 (en) 2008-12-23 2010-06-24 David Dodgson Storage availability using cryptographic splitting
US8868675B2 (en) 2008-12-04 2014-10-21 Cisco Technology, Inc. Network optimization using distributed virtual resources
WO2010090745A1 (en) 2009-02-06 2010-08-12 Osr Open Systems Resources, Inc. Methods and systems for data storage
US8305893B2 (en) 2009-03-16 2012-11-06 Samsung Electronics Co., Ltd. Quality of service management for home-to-home connections
US8880656B2 (en) 2009-05-12 2014-11-04 Cisco Technology, Inc. Customer edge device auto-configuration
US20100333116A1 (en) * 2009-06-30 2010-12-30 Anand Prahlad Cloud gateway system for managing data storage to cloud storage sites
US8285967B1 (en) 2009-06-30 2012-10-09 Emc Corporation Method for on-demand block map generation for direct mapped LUN
US9158788B2 (en) * 2009-12-16 2015-10-13 International Business Machines Corporation Scalable caching of remote file data in a cluster file system
US8495250B2 (en) * 2009-12-16 2013-07-23 International Business Machines Corporation Asynchronous file operations in a scalable multi-node file system cache for a remote cluster file system
EP2993858B1 (en) * 2009-12-21 2017-07-26 Koninklijke KPN N.V. Content distribution system
JP5537181B2 (ja) * 2010-02-17 2014-07-02 株式会社日立製作所 メッセージシステム
US8370297B2 (en) 2010-03-08 2013-02-05 International Business Machines Corporation Approach for optimizing restores of deduplicated data
US8997196B2 (en) * 2010-06-14 2015-03-31 Microsoft Corporation Flexible end-point compliance and strong authentication for distributed hybrid enterprises
ES2584057T3 (es) * 2010-08-12 2016-09-23 Security First Corp. Sistema y método de almacenamiento de datos remoto seguro
EP2630799A4 (en) * 2010-10-20 2014-07-02 Nokia Corp METHOD AND DEVICE FOR VIDEO CODING AND DECODING
US8627136B2 (en) * 2010-12-27 2014-01-07 Netapp Inc. Non-disruptive failover of RDMA connection
US9116909B2 (en) * 2010-12-29 2015-08-25 Amazon Technologies, Inc. Reduced bandwidth data uploading in data systems
CN102611721B (zh) * 2011-01-24 2015-06-17 鸿富锦精密工业(深圳)有限公司 存取网关及其提供云存储服务方法
US9619417B2 (en) 2011-06-17 2017-04-11 Alcatel Lucent Method and apparatus for remote delivery of managed USB services via a mobile computing device
US9294564B2 (en) 2011-06-30 2016-03-22 Amazon Technologies, Inc. Shadowing storage gateway

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7021909B2 (ja) 2017-11-07 2022-02-17 ケイミュー株式会社 親綱保持具及び親綱設置方法

Also Published As

Publication number Publication date
US20160205187A1 (en) 2016-07-14
CA2840596C (en) 2017-04-04
JP6073878B2 (ja) 2017-02-01
US10536520B2 (en) 2020-01-14
CN103930879B (zh) 2017-12-26
WO2013003713A3 (en) 2014-05-01
JP2016129036A (ja) 2016-07-14
EP2727001B1 (en) 2021-08-04
EP2727001A4 (en) 2015-05-20
CA2840596A1 (en) 2013-01-03
US9294564B2 (en) 2016-03-22
US20130007219A1 (en) 2013-01-03
WO2013003713A2 (en) 2013-01-03
JP2014529111A (ja) 2014-10-30
CN103930879A (zh) 2014-07-16
EP2727001A2 (en) 2014-05-07

Similar Documents

Publication Publication Date Title
JP6139718B2 (ja) シャドーイングストレージゲートウェイ
US11570249B2 (en) Redundant storage gateways
US11881989B2 (en) Remote storage gateway management using gateway-initiated connections
JP5716134B2 (ja) 実行中のプロセスをリモートに更新するための方法および装置
US9225697B2 (en) Storage gateway activation process
US9659017B2 (en) Methods and apparatus for data restore and recovery from a remote data store
US9203801B1 (en) Storage gateway security model
US10754813B1 (en) Methods and apparatus for block storage I/O operations in a storage gateway

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170328

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170427

R150 Certificate of patent or registration of utility model

Ref document number: 6139718

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250