(58)【調査した分野】(Int.Cl.,DB名)
前記ゲートウェイプロセスが、前記ローカルデータストアと一致する、前記ローカルデータストアの前記スナップショットを作成するために、前記ローカルデータストア上に格納された前記データの少なくとも一部を前記サービスプロバイダにアップロードするように動作可能である、請求項1に記載の装置。
前記顧客ネットワーク上の前記1つまたは複数のプロセスが、前記顧客ネットワーク上の前記ストレージゲートウェイによって公開された1つまたは複数のデータポートに対して、前記読取り要求および前記書込み要求を開始する、請求項1に記載の装置。
前記ゲートウェイプロセスが、前記書込みデータを前記サービスプロバイダに前記送信することを、前記読取り要求および前記書込み要求を前記ローカルデータストアに前記渡すこと、ならびに前記読取り要求および前記書込み要求に対する前記ローカルデータストアからの応答を前記開始プロセスに返すことと非同期に実行するように動作可能である、請求項1に記載の装置。
前記ゲートウェイプロセスが、前記ローカルデータストア内の少なくとも一部のデータを、前記ローカルデータストアの前記スナップショットから復元するようにさらに動作可能である、請求項1に記載の装置。
前記ローカルデータストアの前記スナップショットが、前記リモートデータストア上で前記サービスプロバイダによりブロックフォーマットで維持され、かつ、前記書込み要求によって示される書込みデータをサービスプロバイダに送信するために、前記ゲートウェイプロセスが、前記書込みデータによって修正されたデータのブロックを前記サービスプロバイダにアップロードするようにさらに動作可能である、請求項1に記載の装置。
サービスプロバイダから受信された設定情報に従って、コンピュータを顧客ネットワーク上でシャドーイングゲートウェイとして設定することを含む方法であって、シャドーイングゲートウェイは、ローカルデータストア上に格納されたデータを前記サービスプロバイダによって維持されるリモートデータストアにシャドーイングするストレージゲートウェイであり、
前記ローカルデータストア上に格納されたデータを前記リモートデータストアにシャドーイングするために、前記シャドーイングゲートウェイが、
前記顧客ネットワーク上の1つまたは複数のプロセスから前記ローカルデータストアに向けられた書込み要求を受信することと、
前記リモートデータストア上で前記サービスプロバイダにより維持される前記ローカルデータストアのスナップショットを前記書込みデータで更新するために、前記書込み要求によって示される書込みデータを前記サービスプロバイダにアップロードすることと、
前記書込み要求によって示される書込みデータを前記サービスプロバイダにアップロードするために、前記シャドーイングゲートウェイが、
前記1つまたは複数のプロセスから受信した前記書込みデータを書込みログにバッファリングすることと、
前記バッファリングされた書込みデータを前記書込みログから前記サービスプロバイダにアップロードすることと
を行うように動作可能である、
方法。
前記設定することに続いて、前記ローカルデータストアと一致する、前記ローカルデータストアの前記スナップショットを作成するために、前記シャドーイングゲートウェイが、前記ローカルデータストア上に格納された前記データの少なくとも一部を前記サービスプロバイダにアップロードするように動作可能である、請求項8に記載の方法。
前記顧客ネットワーク上の前記1つまたは複数のプロセスが、前記顧客ネットワーク上の前記シャドーイングゲートウェイによって公開された1つまたは複数のデータポートに対して、前記読取り要求および前記書込み要求を開始する、請求項8に記載の方法。
前記シャドーイングゲートウェイが、前記書込み要求を前記ローカルデータストアに渡すようにさらに動作可能であり、かつ、前記シャドーイングゲートウェイが、前記書込みデータを前記サービスプロバイダに前記アップロードすることを、前記書込み要求を前記ローカルデータストアに前記渡すこと、および前記読取り要求を前記処理することと非同期的に実行するように動作可能である、請求項8に記載の方法。
書込みデータを前記サービスプロバイダにアップロードするために、前記シャドーイングゲートウェイが、前記サービスプロバイダのウェブサービスインタフェースに従って、前記書込みデータをアップロードするようにさらに動作可能である、請求項8に記載の方法。
書込みデータを前記サービスプロバイダにアップロードするために、前記シャドーイングゲートウェイが、前記書込みデータによって修正されたデータのブロックを前記サービスプロバイダにアップロードするようにさらに動作可能である、請求項8に記載の方法。
【発明を実施するための形態】
【0007】
リモートストレージに対してローカルゲートウェイを提供するための方法、装置、およびコンピュータアクセス可能記憶媒体の様々な実施形態が説明される。ストレージゲートウェイの実施形態が、本明細書では、インターネットなどの中間ネットワークを通じて、ストレージサービスを、サービスプロバイダの1つまたは複数の顧客に提供する、サービスプロバイダのコンテキストで説明される。ストレージゲートウェイは、顧客のデータセンターにおいてオンプレミス(on−premise)(その建物内)でインストールされ、顧客のデータセンターとストレージサービスとの間でゲートウェイとして機能する、仮想または物理アプライアンスとして実装され得る。ストレージゲートウェイは、ストレージサービスを経由してリモートで提供される一次記憶装置へのインタフェースとして、およびそれに対するローカルキャッシュとして設定され得るか、かつ/またはストレージサービスによって提供されたリモートストレージへ顧客のネットワーク上に実装された一次記憶装置をシャドーイングするインタフェースとして設定され得る。ストレージゲートウェイは、アプライアンスのフロントエンドで、顧客のアプリケーションに対する標準データアクセスインタフェースを提示し、アプライアンスのバックエンドで、そのデータアクセスをストレージサービス要求に変換し、ストレージサービスインタフェースに従って、そのデータを、ネットワークを通じてストレージサービスに伝達し得る。少なくともいくつかの実施形態では、ストレージサービスインタフェースは、ウェブサービスインタフェースとして実装され得る。
【0008】
ストレージゲートウェイの実施形態は、オンプレミスインタフェースを、ストレージサービスを通じて提供された、実質的に無制限で、柔軟な、拡張可能リモートストレージに提供し得る。ストレージゲートウェイは、従来型のオンプレミスストレージソリューションに対して、費用効率が高く、柔軟で、さらに容易に拡張可能な代替手段を提供し得る。記憶装置の費用は減少しているが、従来型のオンプレミスストレージソリューションの管理、ならびに他のソフトウェアおよびハードウェアの費用は比較的一定のままであるか、または場合によって増加している。ストレージゲートウェイの実施形態は、サービスプロバイダの顧客が、ストレージの総所有費用を下げることを可能にし得、少なくともいくらかの管理および他の費用をサービスプロバイダに渡す。
【0009】
少なくともいくつかの実施形態では、ストレージサービスは、ブロックストレージ技術に従って、リモートデータストア内に顧客のデータを格納し得る。少なくともいくつかの実施形態では、ストレージゲートウェイは、ブロックストレージプロトコル(例えば、iSCSI、GNBD(グローバルネットワークブロックデバイス)など)、ファイルストレージプロトコル(例えば、NFS(ネットワークファイルストレージ)、CIFS(共通インターネットファイルシステム)など)、および/またはオブジェクトストレージプロトコル(例えば、REST(Representationl State Transfer:表現状態転送))を、顧客のアプリケーションに対するフロントエンドで公開し得る。iSCSIなどのブロックストレージプロトコルは、リモートデータストアの基礎となるデータブロックへの直接アクセスを可能にする。
【0010】
ストレージゲートウェイによって公開されたNFSまたはCIFSなどのファイルストレージプロトコルを介してアプリケーションによりリモートデータストアに書き込まれたファイルは、ブロックストレージ技術に従って、リモートデータストアに格納され得る。NFSおよびCIFSなどの公開されたファイルストレージプロトコルを通じて、ストレージゲートウェイは、ブロックストレージ技術に従ってリモートデータストアに格納された、顧客のデータを、それらがゲートウェイから顧客のネットワークを通じて顧客のアプリケーションに伝送される前に、顧客のアプリケーションにファイルとして提示する。例えば、iSCSIなどの公開されたブロックストレージプロトコルは、ブロックを顧客のアプリケーションに伝送し、従って、そのアプリケーションが、データブロックの解釈を、そのアプリケーションが期待するどんなフォーマットにも処理することを要求する。
【0011】
iSCSIなどのブロックストレージプロトコルは、低レベルブロックストレージプロトコルであり、従って、NFSおよびCIFSなどのファイルストレージプロトコルよりも広い範囲の使用事例を可能にし得る。ブロックストレージプロトコルは、通常、Microsoft(登録商標) SharePoint(登録商標)およびOracle(登録商標)データベースなどの、ブロックストアに書き込むアプリケーションに対するサポートを可能にし得、CIFSまたはNFSファイルサーバーに対する基礎となるストレージを提供するようにも設定され得る。それ故、ストレージゲートウェイの少なくともいくつかの実施形態では、iSCSIなどのブロックストレージプロトコルが、顧客のアプリケーションに対して公開されたインタフェースとして採用され得る。
【0012】
図1は、少なくともいくつかの実施形態に従った、サービスプロバイダ例およびサービス顧客例を含む、ネットワーキング環境例のハイレベルブロック図である。ストレージゲートウェイ84は、いくつかのリモートデータ記憶機能のうちの1つまたは複数をクライアントネットワーク80上の顧客プロセス(単数または複数)88に提供するために、サービス顧客ローカルネットワークまたはデータセンター(例えば、クライアントネットワーク80)内で、仮想または物理アプライアンスとして、インストール、有効化、および設定され得る。顧客プロセス88は、クライアントネットワーク80上に存在し、ゲートウェイ84のデータポートのデータプロトコル(例えば、iSCSIプロトコル)を介して、ストレージゲートウェイ84と接続して通信できる、任意のハードウェア、ソフトウェア、および/またはそれらの組合せであり得る。ストレージゲートウェイ84は、例えば、オンプレミス記憶装置として、および/または顧客プロセス(単数または複数)88上のクライアントネットワーク80と、サービスプロバイダ60によって提供されるストレージサービス64との間のインタフェースとして、機能し得る。ストレージサービス64に加えて、サービスプロバイダ60は、ハードウェア仮想化サービスを含むが、それに限らず、他のサービスも、サービスプロバイダ60の顧客に提供し得ることに留意されたい。
【0013】
サービスプロバイダ60の顧客は、本明細書では、サービス顧客または単に顧客と呼ばれ得るが、ローカルネットワークまたはネットワーク上の1人または複数のユーザーに、サービスプロバイダ60によってリモートで提供される1つまたは複数のサービスを含め、ネットワーク化コンピューティングサービスを提供するために、インターネットなどの中間ネットワーク50に結合された、コンピュータネットワークまたは複数のネットワークを実装する任意の事業体であり得る。サービス顧客は、企業、教育機関、政府機関、または、ネットワーク化コンピューティングサービスをユーザーに提供するコンピュータネットワークまたは複数のネットワークを実装する、一般的な任意の事業体であり得る。
図1は、単一のクライアントネットワーク80を示しているが、複数のクライアントネットワーク80があり得る。各クライアントネットワーク80は、異なるサービス顧客に対応し得るか、または2つ以上のクライアントネットワーク80が、例えば、企業の異なる支社もしくは学校組織の異なるキャンパスなど、同じサービス顧客の異なるデータセンターもしくは地域に対応し得る。少なくともいくつかの実施形態では、サービスプロバイダ60の各顧客は、サービスプロバイダ60にアカウントを有し得、セキュリティ認証情報(例えば、アカウント名および/または識別子、パスワードなど)が提供され得るが、それを用いて、一人または複数の顧客の代表者(例えば、クライアントネットワーク管理者)が、サービスプロバイダ60によって提供された、ストレージサービスを含むがそれに限らない、1つまたは複数のサービスによって提供される顧客のリソースを管理するために、サービスプロバイダ60へのインタフェース(例えば、ウェブページ)にログインし得る。
【0014】
ストレージゲートウェイ84の実施形態は、ハードウェア、ソフトウェア、またはそれらの組合せで実装され得る。少なくともいくつかの実施形態では、ストレージゲートウェイ84は、例えば、ホストシステム上でインスタンス生成された仮想マシン内で実行し得る、仮想アプライアンスとして実装され得る。少なくともいくつかの実施形態では、ストレージゲートウェイ84は、サービス顧客のデータセンター(例えば、クライアントネットワーク80)において、ローカルネットワークインフラストラクチャに結合されたサーバーシステムなどの、1つまたは複数のコンピューティング装置上で、ダウンロードされるか、または別の方法でインストールされて、有効化され、かつ設定され得る仮想アプライアンスとして実装され得る。代替として、ストレージゲートウェイ84は、サービス顧客のデータセンター(例えば、クライアントネットワーク80)において、ローカルネットワークインフラストラクチャに結合され得る専用装置またはアプライアンスとして実装され得;その専用装置またはアプライアンスは、ストレージゲートウェイ84の機能を実現するソフトウェアおよび/またはハードウェアを含み得る。
図26は、ストレージゲートウェイ84の実施形態がその上に実装され得るコンピュータシステム例を示す。少なくともいくつかの実施形態では、ストレージゲートウェイ84は、ファイアウォール82技術を通し、中間ネットワーク50(例えば、インターネット)を経てサービスプロバイダ60ネットワークと通信する。サービスプロバイダ60ネットワークは、中間ネットワーク50への、およびそこからのネットワークトラフィックが通過する、フロントエンド62技術(例えば、ファイアウォール技術、境界ルーター技術、負荷分散装置技術など)も含むことに留意されたい。
【0015】
ストレージゲートウェイ84の少なくともいくつかの実施形態は、顧客に対するデータ保護、ならびに顧客または第3者によるゲートウェイ84の誤用および不正使用(例えば、不法コピー)に対する保護を提供するセキュリティモデルに従って実装され得る。ストレージゲートウェイ84とストレージサービス64との間の通信が保護および暗号化され得る。本文書内で有効化プロセスが後で説明されるが、その中で、新しくインストールされたストレージゲートウェイ84が、セキュリティ認証情報を取得するために、サービスプロバイダ60ネットワークとの接続を開始し、それに対して識別される。少なくともいくつかの実施形態では、有効化プロセス中に、顧客は、サービスプロバイダ60で顧客のアカウントにログインして、ゲートウェイ84の登録で使用される情報をサービスプロバイダ60に提供する。しかし、顧客はストレージゲートウェイ84にログインせず、従って、顧客のセキュリティ認証情報および他のアカウント情報は、ゲートウェイ84上で公開されない。これは、顧客に対するセキュリティリスクを最小限にし得る。
【0016】
少なくともいくつかの実施形態では、セキュリティモデルの態様は、ゲートウェイ84は、クライアントネットワーク80上の顧客プロセス(単数または複数)88に対して公開された1つまたは複数のデータポート(例えば、iSCSIポート)への外部開始接続のみを受け入れることである。ストレージゲートウェイは、外部プロセスへの全ての他の接続を開始し;外部プロセスは、ゲートウェイへのいかなる他の接続をも開始できない。例えば、少なくともいくつかの実施形態では、ストレージゲートウェイ84は、ゲートウェイ管理およびサービスプロバイダ60への他の接続を開始し;サービスプロバイダ60はゲートウェイ84への接続を開始しない。別の例として、クライアントネットワーク80のネットワーク管理者プロセス90は、ゲートウェイ84を設定および管理するために、ストレージゲートウェイ84に直接接続できない。代わりに、ネットワーク管理者プロセス90によるストレージゲートウェイ84の設定および管理は、例えば、サービスプロバイダ60ネットワーク上のコンソールプロセス68を介して、サービスプロバイダ60を通して実行され得る。従って、少なくともいくつかの実施形態では、クライアントネットワーク80上のユーザー、ネットワークマネージャ、またはプロセス(例えば、ネットワーク管理者プロセス90もしくは顧客プロセス(単数または複数)88)は、ストレージゲートウェイ84に直接「ログイン」できず、サービスプロバイダ60ネットワーク上(例えば、コンソールプロセス68およびストレージサービス64)もしくは何らかの他の外部ネットワーク上のユーザー、マネージャ、もしくはプロセスもストレージゲートウェイ84への接続を開始することもできない。これは、ストレージゲートウェイ84上のセキュリティ認証情報および他の動作情報が、クライアントネットワーク80上の人もしくはプロセスによって、または外部の人もしくはプロセスによって、故意もしくは故意ではなく危険にさらされるのを防ぐ役に立つ。
【0017】
ストレージゲートウェイ84の実施形態は、いくつかのデータストア66機能のうちの1つまたは複数を提供するために、インストールされ、有効化され、かつ、ストレージサービス64との使用のために設定され得る。例えば、ストレージゲートウェイ84は、以下のものとして機能するために、インストールされ、有効化され、設定され、かつストレージサービス64で採用され得る:
・ファイルシステムゲートウェイ。この設定では、ストレージゲートウェイは、ストレージサービス64に対するNASストレージインタフェース(例えば、CIFSまたはNFSプロトコルを使用して)として機能する。リモートデータストア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上の顧客のデータのスナップショット(単数または複数)を要求またはアクセスし得る。
【0018】
ファイルシステムゲートウェイおよびクラウドボリュームゲートウェイは、両方ともリモートデータストアに対するゲートウェイとして機能し、また両方ともローカルにデータを、例えば、頻繁におよび/または最近使用されたデータを、キャッシュし得る、という点で似ていることに留意されたい。ファイルシステムゲートウェイおよびクラウドボリュームゲートウェイの両方では、顧客プロセスからのデータ読取りは、可能であれば、ローカルキャッシュから、そうでなければ、リモートデータストアからサービスされ得る。対照的に、シャドーイングゲートウェイでは、データ読取りは、ゲートウェイを通して、顧客のローカルデータストアに渡される。本文書の目的のため、ファイルシステムゲートウェイおよびクラウドボリュームゲートウェイは、これらの実施態様をシャドーイングゲートウェイと区別するために、キャッシュゲートウェイと総称され得る。
【0019】
〔ストレージゲートウェイアプライアンスアーキテクチャ例〕
図2は、少なくともいくつかの実施形態に従った、ストレージゲートウェイのためのアーキテクチャ例およびその構成要素を示す。
図2に示された構成要素のいくつかは、キャッシュゲートウェイ実施態様と比較した場合、シャドーイングゲートウェイ実施態様では、使用されないか、または使用され得るかもしくは異なって実装され得ることに留意されたい。
【0020】
ブロックドライバ10は、ストレージゲートウェイ84の顧客プロセス88とのインタフェースとなる。一般に、ブロックドライバ10は、顧客プロセス88が(例えば、読取り/書込み要求を介して)ストレージゲートウェイ84とやりとりできるようにする。ストレージゲートウェイ84は、顧客プロセス88のオンサイトであるので、プロセス88の観点から見れば、データがローカルに格納されるように見える。しかし、ストレージゲートウェイ84は、ストレージサービス64によって提供されるリモートデータストア66にデータを格納するように、ストレージサービス64とインタフェースをとる。キャッシュゲートウェイについて、一次データストアはリモートデータストア66であるが、頻繁にアクセスされるデータは、ゲートウェイ84によってローカルにキャッシュされ得る。読取りは、ローカルキャッシュから、または仮想データ記憶66から満足され得;書込みは、ローカルキャッシュ内および/または仮想データ記憶66内のデータブロックを適切に更新するように処理される。シャドーイングゲートウェイについて、一次データストアはローカルデータストア86であり;読取りは、ローカルデータストア86に渡され、また、書込みは、ローカルデータストア86に送信されるだけでなく、仮想データ記憶66にシャドーイングされる。
【0021】
ブロックドライバ10は、顧客プロセス88からの読取り/書込み要求を捉え、その要求をストレージコントローラ12に渡す。少なくともいくつかの実施形態では、ブロックドライバ10は、ブロックストレージプロトコル(例えば、iSCSIまたはGMBD)を顧客プロセス88へのインタフェースとして提供する。いくつかの実施形態では、ブロックストレージプロトコルインタフェースの代わりに、またはその代替として、ブロックドライバ10は、ファイルストレージプロトコルインタフェース(例えば、NFSまたはCIFS)を提供し得、ファイルシステムセマンティクスをストレージコントローラ12へのインタフェースとして使用し得る。
図2は1つのブロックドライバ10を示しているが、2つ以上のブロックドライバが存在し得ることに留意されたい。
【0022】
ストレージコントローラ12は、ブロックドライバ10と、キャッシュマネージャ14を介したストレージとの間の仲立ちとして機能する。ストレージコントローラ12の責任は、読取りおよび書込み要求をブロックドライバ10からストレージに、ならびにストレージがデータで応答すると、コールバックをブロックドライバ10に転送することを含み得る。ブロックドライバ10は、進行中の要求数などの統計値も保持し得る。
【0023】
少なくともいくつかの実施形態では、1つのストレージゲートウェイ84上のストレージコントローラ12は、別のストレージゲートウェイ84上のキャッシュマネージャ14と通信し得る。少なくともいくつかの実施形態では、各ストレージゲートウェイ84は、発見および障害の検出ためにハートビートメッセージを送信し得る。所与のオブジェクトに対して責任があるストレージゲートウェイ84を識別するためにコンシステントハッシュ法が使用され得、データを取得するための要求が、対象とするストレージゲートウェイ84上のキャッシュマネージャ14に転送され得る。キャッシュマネージャ14は、ストレージコントローラ12によって提供されたコールバックを起動することによって応答し得る。
【0024】
キャッシュゲートウェイ実施形態では、キャッシュマネージャ14は、例えば、頻繁にアクセスされるデータに対してストレージを提供する、ローカルキャッシュ28を管理し得る。ローカルキャッシュ28は、ストレージゲートウェイ84の内部の揮発性および/もしくは不揮発性メモリ上に実装され得るか、または代替として、顧客によって提供される外部のローカルデータストア86上に、少なくとも一部実装され得る。少なくともいくつかの実施形態では、ローカルキャッシュ28は、仮想化データ記憶66内に格納されたデータを表し;顧客プロセス88からの書込みは、ローカルキャッシュ28に直接影響を及ぼすことはない場合がある。
【0025】
複数のゲートウェイ84を採用する少なくともいくつかの実施形態では、分散されたローカルキャッシュが使用され得、所与のキーを保持する責任のあるキャッシュを識別するために、キーについてコンシステントハッシュ法が使用され得る。少なくともいくつかの実施形態では、地域を意識した要求分散(locality−aware request distribution)がゲートウェイ84間の通信を減らすために使用され得るが、それは、追加の負荷分散を要求し得る。
【0026】
リモートデータストア66内の所与のボリュームへの全ての書込み要求は、特定のゲートウェイ84ノードに回され得る。ボリュームに対する全ての書込み要求が特定のゲートウェイ84ノードに転送されるので、ネットワーク分割は問題ではないかもしれない。
【0027】
〔ステージング〕
少なくともいくつかの実施形態では、キャッシュマネージャ14は、ステージング16構成要素を含み得るか、またはステージング16構成要素とインタフェースをとり得る。ステージング16は、書込みログ18を含み得るか、または書込みログ18へのアクセスを有し得る。少なくともいくつかの実施形態では、データ構造が書込みログ18を通して構築され、メタデータストア26として使用され得る。メタデータストア26は、特定のブロックに対する全ての書込みへの素早いアクセスを可能にし得る。メタデータストア26は、例えば、ブロック内の異なるセグメントに対して変更(mutation)を適用するのに使用され得る。書込みデータが顧客プロセス88から受信されると、そのデータが書込みログ18に付加される。例えば、オフセットおよび長さなど、ブロックに関連した書込みデータに対するメタデータが、メタデータストア26に格納され得る。少なくともいくつかの実施形態では、書込みログ18は、線形または円形キューのいずれかとして実装された1次元データバッファとして実装され得る。少なくともいくつかの実施形態では、メタデータストア26は、例えば、Berkeley Databaseとして実装された、キー/値ストアであり得る。書込みログ18およびメタデータストア26の両方の他の実施態様が、いくつかの実施形態で使用され得る。
【0028】
キャッシュゲートウェイ実施態様では、読取りが実行されると、元のブロックがローカルキャッシュ28から、またはリモートデータストア66から取得され得、書込みログ18によって示される任意の保留の変更が、データをそれぞれの顧客プロセス88に返す前に、適用され得る。
【0029】
いくつかの実施形態では、ゲートウェイ84が障害を起こす(例えばクラッシュする)と、データが既にローカルデータストア86に書き込まれていない限り、メモリ内の書込みデータが失われ得る。いくつかの実施形態では、顧客サイトに複数のゲートウェイ84がある場合、別のゲートウェイ84が、クラッシュしたゲートウェイ84によって所有されているキーの責任を持ち、ローカルデータストア86上のスナップショット(ある場合)から書込みを復元して、それぞれのボリュームに向けられた要求の受入れを開始し得る。いくつかの実施形態では、書込みログ18および/またはメタデータストア26が、冗長性およびより良い耐久性を提供するために、2つ以上のゲートウェイ84にわたって、複製され得る。ゲートウェイ84の障害の場合には、他のゲートウェイ84のうちの1つが、故障したゲートウェイの書込みログ18およびメタデータストア26を引き継ぎ得る。しかし、少なくともいくつかの実施形態では、メタデータストア26は、所有者のゲートウェイ84上でのみ保持され得る。これらの実施形態では、ゲートウェイ84の障害の場合、他のゲートウェイ84のうちの1つが、メタデータストア26を再構築するために、一次書込みログ18を引き継いで、解析し得る。
【0030】
キャッシュゲートウェイ実施態様では、ブロックフェッチャ22は、ブロックの要求されたセグメントをリモートデータストア66からストレージサービス64を介してフェッチする。少なくともいくつかの実施形態では、ブロックフェッチャ22は、キャッシングのため完全なブロックをフェッチするために、遅延フェッチ(lazy fetching)技術を採用し得る。キャッシュゲートウェイおよびシャドーイングゲートウェイの両方について、ブロックストア24は、ステージング16からのデータをストレージサービス64を介してリモートデータストア66にプッシュ型配信する。少なくともいくつかの実施形態では、ブロックストア24は、ブロックをプッシュ型配信するために、遅延プッシュ技術を採用し得る。
【0031】
少なくともいくつかの実施形態では、キャッシュゲートウェイに対する読取り動作中に、ブロックドライバ10は、ボリュームID、開始オフセットおよび長さを含む読取り要求を、ストレージコントローラ12に送信する。少なくともいくつかの実施形態では、ストレージコントローラ12は、ボリュームIDおよびオフセットをオブジェクトキーに変換し得る。ストレージコントローラ12は、読取り要求情報をキャッシュコントローラ14に渡し得るが、それは、その読取り要求を適切なローカルキャッシュ28から満足しようと試み得る。そのデータがローカルキャッシュ28内に存在しない場合、要求はブロックフェッチャ22に転送されるが、それは、そのデータをリモートデータストア66上の適切なボリュームからストレージサービス64を介してフェッチする。データが取得されると、ローカルキャッシュ28が更新され、書込みログ18からの変更が適用されて、読取り応答が顧客プロセス88に返される。少なくともいくつかの実施形態では、複数のブロックが要求される場合、各々がそれぞれのブロックに対する相対オフセットを示す、複数の読取り応答が返され得る。少なくともいくつかの実施形態では、順次読取りが検出されると、連続したブロックが事前にフェッチされ得る。
【0032】
少なくともいくつかの実施形態では、書込み動作中に、ブロックドライバ10は、ボリュームIDおよび書込みデータを含む書込み要求を、そのボリュームに対して責任があるストレージコントローラ12に送信する。書込みデータが書込みログ18に書き込まれ、メタデータストア26が、バッファプール20内の変更されたデータに対する参照を含むように更新される。
【0033】
〔バッファプール〕
少なくともいくつかの実施形態では、バッファプール20は、ストレージコントローラ12とローカルデータストア86との間に存在する。バッファプール20は、以下のタスクの1つまたは複数を実行し得るが、それらに限らない。いくつかのタスクはキャッシュゲートウェイにのみ適用され得ることに留意されたい:
・書込みログ18およびローカルキャッシュ28に対するローカルデータ記憶装置(単数または複数)上のそれらの物理位置からの論理オフセットのためのデータのキャッシュ。
・読取りおよび書込み動作中のバッファ上のロックの維持。
・例えば、エビクション(eviction)技術に基づく最低使用頻度(LRU)など、エビクション技術のローカルキャッシュ28に対する物理記憶装置への適用。これは、シャドーイングゲートウェイには必要でないことに留意されたい。
・各キャッシュゲートウェイ内での読取りに対して、要求されたデータがローカルキャッシュ28内で見つからない場合、バッファプール20がリモートデータストア66からブロックをフェッチするために、ブロックフェッチャ22と通信し得る。代替として、いくつかの実施形態では、ブロックフェッチャ22は、ブロックをフェッチするために、ストレージサービス64と直接通信し得る。
【0034】
少なくともいくつかの実施形態では、バッファプール20は、データベース(例えば、Berkeleyデータベース(BDB))をそのメタデータストア26として採用し得る。以下に示す表1は、少なくともいくつかの実施形態に従って、メタデータストア26内に格納され得る情報を示す。表1内のエントリは、内容または配置にしたがって制限することを意図しないことに留意されたい。
【0036】
少なくともいくつかの実施形態では、物理ディスクオフセットは、例えば、4MB境界においてなど、決められた境界においてである。少なくともいくつかの実施形態では、これは、ボリューム内および書込みログ18内の両方のデータに対する境界を含む。少なくともいくつかの実施形態では、特定のボリュームに対する書込みは、順次書込みであり得、従って、ディスク上の断片化は、考慮する必要がない。「チャンク(chunk)」は、ブロック、または1つもしくは複数のブロックに対応し得ることに留意されたい。
【0037】
メタデータストア26は、S(スナップショット)およびC(チャンク)エントリの両方を含み得、これらは、ストレージコントローラ12がそれを介してブロックにアクセスしようと試みる方式で最新の状態に維持される必要がある。例えば、ブロックは、最初は、スナップショットIDを使用して参照され得るが、その後は、いつも、チャンクIDを使用する。これは、メタデータストア26に保存され得る。スナップショットが完了すると、ストレージコントローラ12が、スナップショットIDを使用してスナップショットからブロックを参照し得;それ故、メタデータストア26内のC(チャンク)エントリは、対応するS(スナップショット)エントリに変換され得る。
【0038】
〔キャッシュゲートウェイの動作〕
少なくともいくつかの実施形態では、読取り要求が受信されると、ブロックに対する書込みログ18エントリまたは複数のエントリがメタデータストア26内で検索される。読取り要求が、書込みログ18エントリまたは複数のエントリを使用して満足できる場合、全ての要求されたエントリがメタデータストア26内で検索され、バッファ内に読み取られて、フラット化され、要求された断片が返される。読取り要求が、書込みログ18エントリまたは複数のエントリだけを使用して満足できない場合、キャッシュデータブロック(例えば、4MBブロック)に対するオフセットが読取り要求内のオフセットから計算される。ブロックの位置がメタデータストア26内で検索される。ブロックがローカルキャッシュ28内にある場合、そのブロックがローカルキャッシュ28から読み取られ、また、そうでない場合は、リモートデータストア66からフェッチされる。要求された書込みログ18エントリは、前述のようにフェッチされ、ブロックでフラット化されて、要求された断片が返される。ブロックがリモートデータストア66からフェッチされる場合、そのブロックはローカルキャッシュ28にキャッシュされて、メタデータストア26内に記録される。ローカルキャッシュ28内のブロックに対する最後のアクセス時間も更新される。
【0039】
少なくともいくつかの実施形態では、書込み要求が受信されると、次の書込みログ18オフセットで変更が記録されて、メタデータ、すなわち、オフセットおよび長さがメタデータストア26内に記録される。
【0040】
少なくともいくつかの実施形態では、ブロックアップロードが完了すると、そのブロックの最新バージョンが(適用された変更とともに)ローカルキャッシュ28に追加されて、メタデータストア26内に記録される。ブロックの以前のバージョンがローカルキャッシュ28内に存在する場合、このブロックはメタデータストア26内で空きとして印を付けられる。
【0041】
少なくともいくつかの実施形態では、スナップショットが完了すると、メタデータストア26は、前述のように再編成される必要があり得る。すなわち、そのスナップショットに属するブロックエントリは、リモートデータストア66上の対応するスナップショットエントリに変換され得る。
【0042】
〔シャドーイングゲートウェイの動作〕
少なくともいくつかの実施形態では、読取り要求がローカルデータストア86に渡される。
【0043】
少なくともいくつかの実施形態では、書込み要求が受信されると、書込みデータが次の書込みログ18オフセットで記録され、その書込みに対する適切なメタデータがメタデータストア26内に記録される。書込み要求もローカルデータストア86に渡される。
【0044】
少なくともいくつかの実施形態では、ブロックをリモートデータストア66にアップロードするために、アップロードプロセスが書込みログ18を読み取るためにバッファプール20を呼び出す。バッファプール20は、論理書込みログ18オフセットから物理オフセットへの変換を実行するためにメタデータストア26を使用し、データは次いで、メモリバッファに読み込まれる。バッファは次いで、アップロードプロセスに提示される。アップロードプロセスは、ブロックをリモートデータストア66にアップロードし、そのブロックをバッファプール20に解放する。
【0045】
〔書込みログのパージ〕
少なくともいくつかの実施形態では、書込みログ18がパージされる必要のある場合、バッファプール20は、書込みログ18がパージできるボリュームに対する書込みログオフセットを取得する。少なくともいくつかの実施形態では、書込みログオフセットが、例えば、各エントリに対するオフセットをチェックするデータベースのウォークオーバー(walk over)を実行することにより、メタデータストア26から決定され得る。書込みログ18をパージするために、そのログのパージ可能な部分に対応する既存の書込みログエントリが、空きエントリとして印を付けられ得る。
【0046】
〔実施態様例〕
図3は、ストレージゲートウェイの実施形態が実装され得るネットワーク環境例のハイレベルブロック図である。中間ネットワーク100(例えば、インターネット)上のサービスプロバイダ110は、中間ネットワーク100に同様に結合された、1つまたは複数のサービス顧客ネットワーク(例えば、クライアントネットワーク(単数または複数)150)に、ストレージサービス112を介して、リモートデータストア116へのアクセスを提供する。各クライアントネットワーク150が、異なるサービス顧客に対応し得るか、または2つ以上のクライアントネットワーク150が、例えば、企業の異なる支社もしくは学校組織の異なるキャンパスなど、同じサービス顧客の異なるデータセンターもしくは地域に対応し得る。サービス顧客は、企業、教育機関、政府機関、民間団体、または、ネットワーク化コンピューティングサービスを1人または複数のユーザーに提供するために、インターネットなどの中間ネットワーク100に結合された、コンピュータネットワークまたは複数のネットワークを実装する、一般的な任意の事業体であり得る。いくつかの実施形態では、ストレージサービス112は、インタフェース(例えば、ウェブサービスインタフェース)を提供し得、それを通じて、各サービス顧客のクライアントネットワーク(単数または複数)150が、ストレージサービス112によって提供された機能にアクセスし得る。
【0047】
顧客プロセス154Aおよび154Bは、サービス顧客のクライアントネットワーク150に接続された物理および/または仮想マシンもしくはシステムを表す。ストレージサービス112によって提供される機能の一例として、ユーザーは、顧客プロセス154を介し、ストレージサービス112を通じて、リモートデータストア116内にデータボリュームを作成およびマウントし得る。クライアントネットワーク150上のユーザーの観点から見れば、ストレージサービス112によって提供されたデータボリュームは、それらがローカルストレージであるかのように見え得;従って、かかるデータボリュームは、仮想データボリューム158と呼ばれ得る。仮想データボリューム158は、リモートデータストア116がその上にインスタンス生成される、1つまたは複数の物理記憶装置もしくは記憶システムに実際にマッピングするが;このマッピングは、ストレージサービス112によって処理され、従って、クライアントネットワーク150上のユーザーの観点から見れば透過的である。顧客プロセス154のユーザーは、デスクトップ上または装置リスト内にマウントされたボリュームを単に見るだけであり得る。顧客プロセス154のユーザーは、まるでボリューム158がローカルに取り付けられた記憶装置であるかのように、仮想データボリューム158上で、データの作成、データの変更、データの削除、および一般なデータ関連機能の実行を行い得る。
【0048】
図4は、少なくともいくつかの実施形態に従った、クライアントネットワーク250とストレージサービス212との間のインタフェースとして機能する、サービス顧客のクライアントネットワーク250でのオンサイトのストレージゲートウェイ252を含むネットワーク環境例のブロック図である。少なくともいくつかの実施形態では、ストレージゲートウェイ252は、サービス顧客のデータセンターでオンサイトでインストールされるファイルおよび/またはブロックストレージアプライアンスであり得る。
【0049】
ストレージゲートウェイ252は、例えば、ファイルシステムゲートウェイとして、クラウドボリュームゲートウェイとして機能するように、インストール、有効化、および設定され得、キャッシュゲートウェイとして、またはシャドーイングゲートウェイとして総称される。ファイルシステムゲートウェイは、(例えば、CIFSまたはNFSプロトコルを使用して)ストレージサービス212に対するNASストレージインタフェースとして機能する。リモートデータストア216は、実際にはブロックストレージとして実装されながら、顧客に対してオブジェクトストア(例えば、REST)として提示され得る。クラウドボリュームゲートウェイは、ストレージサービス212によって提供された仮想化ボリュームストレージゲートウェイに対するインタフェースとして機能する。ボリュームストレージは、ブロックストレージとして実装され得る。ゲートウェイ252は、柔軟で、本質的に制限のない一次記憶容量を提供するバックエンド記憶装置として機能するリモートデータストア216(クラウドボリュームとも呼ばれ得る)との、ローカルネットワークアクセスポイントを提供する。シャドーイングゲートウェイは、顧客の書込みデータ(例えば、iSCSI書込み)の、ストレージサービス212によって提供されるリモートストレージへのシャドーイングを提供するために、顧客のアプリケーションと顧客のローカルデータストアとの間の「bump in the wire」として機能する。リモートデータストア216は、ブロックストレージとして実装され得る。
【0050】
キャッシュゲートウェイ実施態様では、ストレージゲートウェイ252は、データを安全に暗号化して、サービスプロバイダ210に戻るのを促進しながら、頻繁にアクセスされるデータのローカルキャッシュをローカルデータストア254上に格納し得る。同様に、シャドーイングゲートウェイ実施態様が、書込みデータを安全に暗号化して、サービスプロバイダ210への移動を加速し得る。標準的なインターネット接続と比較して、この加速されたデータ移動は、例えば、データ重複排除、圧縮、並列化、およびTCPウィンドウスケーリング技術のうちの1つまたは複数を使用して、達成され得る。ストレージゲートウェイ252は、通常、一次記憶装置またはバックアップ記憶装置としてのオンサイトストレージアレイの管理に伴う、費用、利用、保守、およびプロビジョニングの頭痛の種を大幅に削減し得る。ストレージゲートウェイ252は、顧客が、そうでなければ、社内で、高価なハードウェア(例えば、NASまたはSANハードウェア)上に格納し得る、何百ものテラバイトからペタバイトのデータを、費用効率が高いアプライアンスで置き換えることによってこれを達成し得る。ストレージゲートウェイ252を用いて、顧客は、サービスプロバイダ210によって提供される、耐久性のある、利用可能で拡張性のある分散ストレージインフラストラクチャを活用しながら、オンサイト記憶装置(キャッシュゲートウェイ実施態様においてゲートウェイ252によって維持されるローカルキャッシュによって提供される)の低アクセス遅延から恩恵を受け得る。
【0051】
ストレージゲートウェイ252の実施形態は、顧客のオンサイトアプリケーションとシームレスに連携し得る。少なくともいくつかの実施形態では、顧客は、SAN(iSCSI)、NAS(NFS、Microsoft(登録商標) CIFS)、またはオブジェクト(REST)記憶装置をサポートするために、ストレージゲートウェイ252を設定し得る。少なくともいくつかの実施形態では、ストレージゲートウェイ252によって提供されたiSCSIインタフェースは、Microsoft(登録商標) SharePoint(登録商標)およびOracle(登録商標)データベースなどのオンサイトブロックストレージアプリケーションとの統合を可能にし得る。少なくともいくつかの実施形態では、顧客は、Windows(登録商標)、Linux(登録商標)、およびUNIX(登録商標)環境を含むが、それらに限らない、環境にわたって、ファイルストレージを統合するために、ストレージゲートウェイ252によって提供されるNFSおよびCIFSインタフェースを利用し得る。少なくともいくつかの実施形態では、ストレージゲートウェイ252は、RESTベースの要求をサポートするようにも設定され得る。
【0052】
少なくともいくつかの実施形態では、ストレージゲートウェイ252は、顧客のデータセンターで、クライアントネットワーク250インフラストラクチャに結合されたサーバーシステムなどの、1つまたは複数のコンピューティング装置上に、ダウンロードされるかまたは他の方法でインストールされ、有効化されて、設定され得る、仮想装置またはアプライアンスとして実装され得る。あるいは、ストレージゲートウェイ252は、クライアントネットワーク250インフラストラクチャに結合され得る専用装置またはアプライアンスとして実装され得;その専用装置またはアプライアンスは、ゲートウェイの機能がその上に実装され得る、ソフトウェアおよび/またはハードウェアを含み得る。
【0053】
少なくともいくつかの実施態様では、ストレージゲートウェイ252は、中間ネットワーク200(例えば、インターネット)を経由して、サービスプロバイダ210と通信する。ストレージゲートウェイ252の中間ネットワーク200への結合は、大量のデータが、ストレージサービス212とストレージゲートウェイ252との間の中間ネットワーク200を通じて伝達され得るので、一般に、サービス顧客のクライアントネットワーク250によって提供された高帯域幅接続を介し得る。例えば、ピーク時には、接続は、100メガビット/秒(100Mビット/秒)以上のデータ転送をサポートする必要があり得る。しかし、少なくともいくつかの実施形態では、データ重複排除などの技術が、ストレージゲートウェイ252からストレージサービス212へデータをアップロードする際に、帯域幅利用を削減するために採用され得、従って、より多くの顧客の帯域幅が他の用途に対して利用可能であり得る。少なくともいくつかの実施形態で採用され得るデータ重複排除技術の例が、「RECEIVER−SIDE DATA DEDUPLICATION IN DATA SYSTEMS」という名称の米国特許出願第12/981,393号、および、「REDUCED BANDWIDTH DATA UPLOADING IN DATA SYSTEMS」という名称の米国特許出願第12/981,397号に記載されている。
【0054】
少なくともいくつかの実施形態では、中間ネットワーク200を通じたクライアントネットワーク250とサービスプロバイダ210との間の接続上の帯域幅が、ストレージゲートウェイ252に、および、例えば、クライアントネットワーク250でのネットワーク管理者プロセス260を介して、他の顧客アプリケーションに割り当てられ得る。ストレージゲートウェイ252は、例えば、データ重複排除技術に従って、変化した(新規または変更された)データをストレージサービス212に、継続的に、またはほぼ継続的にアップロードし得る。しかし、クライアントネットワーク250でのデータの変化率は、時間とともに変わり得る;例えば、日中は、顧客プロセス書込みスループットが高くなり得るが、夜間には、書込みスループットが低くなり得る。従って、変化率が高いビジー時には、ストレージゲートウェイ252に割り当てられた帯域幅がついて行くのに十分に高くない場合、変化したデータのアップロードに遅れ得;ストレージゲートウェイ252は、その後、変化率がそれほど高くない、あまりビジーでない時に追い付き得る。少なくともいくつかの実施形態では、ストレージゲートウェイ252が指定された閾値以上に遅れる場合、ストレージゲートウェイ252は、追加の帯域幅の割当てを要求し得る。少なくともいくつかの実施形態では、ストレージゲートウェイ252は、必要であれば、より多くの帯域幅を要求するために警報を発し得る。
【0055】
図4は、ストレージゲートウェイ252とストレージサービス212との間の直接接続を示しているが、ストレージゲートウェイ252とストレージサービス212との間の接続は、ローカルネットワーク256を経由し得ることに留意されたい。
【0056】
ストレージゲートウェイ252の少なくともいくつかの実施形態では、要求に応じてリモートデータストア216からデータを取得するのではなく、データの大規模なブロックまたはチャンク、データのボリューム全体さえも、ローカルデータストア254にローカルにキャッシュされ得る。ストレージゲートウェイ252は、データ、例えば、頻繁にアクセスされるデータまたは重要なデータ、のローカルキャッシュがその上で保持され得る物理データ記憶および/またはメモリ(ローカルデータストア254)を含み得るか、またはそれに対してアクセスし得る。ローカルデータストア254は、揮発性もしくは不揮発性の記憶装置もしくはメモリ、またはそれらの組合せであり得る。頻繁にアクセスされるデータのローカルキャッシュを保持することは、多くの、またはほとんどのデータアクセスが、リモートデータストア216からデータを取得するよりも、ローカルキャッシュからサービスできるので、一般に、顧客プロセス258に対するデータアクセス時間を改善し得る。しかし、リモートデータストア216は、サービス顧客のクライアントネットワーク250に対して一次データストアとして機能し得;従って、ストレージゲートウェイ252は、定期的に、非定期的に、または継続的に、新規または変更されたデータをローカルキャッシュからリモートデータストア216にアップロードするため、および必要に応じて、要求されたデータをリモートデータストア216からダウンロードするために、中間ネットワーク200を介してストレージサービス212と通信し得る。
【0057】
図4では、リモートデータストア216の記憶装置(218A、218B、218C、...)は、リモートデータストア216が、サービスプロバイダ210のローカルネットワーク214に接続された、いくつかの記憶装置またはシステム上で、またはそれらにわたって実装され得ることを示す。従って、サービス顧客のデータが、「バックエンド」上の2つ以上の物理記憶装置またはシステムに散在し得る。バックエンド記憶装置は、他の顧客と共有されるマルチテナント型装置であり得るが、必ずしも必要ではない。しかし、
図3に関連して述べた、クライアントネットワーク250上のユーザーおよびプロセスの観点から見れば、クライアントのデータは、仮想ボリュームまたはファイルとして提示され得る。
【0058】
少なくともいくつかの実施形態では、
図3および
図4に関連して説明されるように、サービスプロバイダは、ハードウェア仮想化技術および場合により他の仮想化技術も顧客に提供し得る。サービスプロバイダ200は、ブロックストレージ機能(すなわち、ブロックベースの記憶システム)を顧客に提供するブロックストレージ技術を含め、様々な仮想化コンピューティング技術および仮想化ストレージ技術を提供し得る。サービスプロバイダ200によって提供される、ハードウェア仮想化技術に従って実装される仮想コンピューティング環境またはシステムは、ブロックストレージ技術によってサポートされ得る。ブロックストレージ技術は、例えば、ブロックレベルのストレージ機能を、それがサポートするボリュームの構造的および機能的詳細に、およびそれがストレージ可用性を提供する仮想コンピューティングシステム(または他のシステム)上で実行するオペレーティングシステムに、依存しなくする、標準ストレージ呼出しを通じて仮想コンピューティングシステムとやりとりすることができる、仮想化記憶システムを提供し得る。
【0059】
ストレージゲートウェイ252の実施形態は、オンサイトの顧客アプリケーションならびにサービスプロバイダ200によって提供される仮想化コンピューティングおよびストレージ技術と統合され得、弾力性のある「クラウドベースの」コンピューティングおよび記憶リソースへのアクセスを顧客に提供する。例えば、SANストレージに対してストレージゲートウェイ252を使用する顧客は、彼らのデータの一致した、ある時点のブロックベースのスナップショットを作成し得る。これらのスナップショットは、次いで、ブロックベースの記憶システムが提供する、高入出力および低遅延データアクセスを必要とするハードウェア仮想化技術アプリケーションまたはインスタンス(例えば、
図5における仮想コンピューティングシステム264を参照)によって処理され得る。別の例として、顧客は、NASストレージに対するストレージゲートウェイ252を、NFSまたはCIFSファイルプロトコルを介して設定し得、また、ハードウェア仮想化技術インスタンスからアクセス可能な彼らのファイルデータのある時点のスナップショットを作成し得る。
【0060】
いくつかの実施形態では、ストレージゲートウェイ252によって提供されるRESTベースのインタフェースを使用して書き込まれたオブジェクトは、サービスプロバイダにより提供される仮想化ストレージ技術から、HTTPまたは他のプロトコルを介して直接アクセスされ得るか、またはサービスプロバイダによって提供される統合コンテンツ配信を使用して配信され得る。いくつかの実施形態では、顧客は、ハードウェア仮想化技術インスタンス上で、これらのオブジェクトの並列化処理に対する仮想化ストレージ技術によって提供された、高度に拡張性のある、分散インフラストラクチャも利用し得る。
【0061】
図5は、少なくともいくつかの実施形態に従って、ストレージサービスおよびハードウェア仮想化サービスをサービスプロバイダの顧客に対して提供する、サービスプロバイダ例のブロック図である。サービス顧客のクライアントネットワーク250は、例えば、
図4に関連して説明したように、クライアントネットワーク250と、サービスプロバイダ210のストレージサービス212との間のインタフェースとして機能する、1つまたは複数のストレージゲートウェイ252を含み得る。サービスクライアント(単数または複数)は、サービスプロバイダ210によって提供されるサービスの1つにアクセスし得る、任意の管理者、ユーザー、またはプロセスであり得る。
【0062】
ハードウェア仮想化技術は、複数のオペレーティングシステムをホストコンピュータ292上で同時に、すなわち、ホスト292上で仮想マシン(VM)296として、実行可能にし得る。VM 296は、例えば、サービスプロバイダ210の顧客に賃貸またはリースされ得る。ホスト292上のハイパーバイザー、すなわち、仮想マシンモニター(VMM)294は、ホスト292上のVM 296に仮想プラットフォームを提示して、VM 296の実行を監視する。各VM 296は、1つまたは複数のIPアドレスを提供され得;ホスト292上のVMM 294は、ホスト上のVM 296のIPアドレスを認識し得る。サービスプロバイダ210のローカルネットワークは、パケットを、VM 296からのインターネット宛先(例えば、クライアントネットワーク250上のサービスクライアント(単数または複数)262)に、およびインターネット送信元(例えば、サービスクライアント(単数または複数)262)からVM 296に、経路指定するように設定され得る。
【0063】
サービスプロバイダ210は、ローカルネットワーク256を介して中間ネットワーク200に結合されたサービス顧客のクライアントネットワーク250に、中間ネットワーク200およびサービスプロバイダ210のローカルネットワークに結合されたハードウェア仮想化サービス290を通じて仮想コンピューティングシステム264を実装する能力を提供し得る。いくつかの実施形態では、ハードウェア仮想化サービス290は、インタフェース、例えば、ウェブサービスインタフェースを提供し得、それを経由して、サービスクライアント262がハードウェア仮想化サービス290によって提供される機能にアクセスし得る。サービスプロバイダ210では、各仮想コンピューティングシステム264は、サービス顧客に対してリース、賃貸、または他の方法で提供される、ホスト292システム上の仮想マシン(VM)296を表し得る。
【0064】
仮想コンピューティングシステム264のインスタンスから、ユーザーは、以前に説明したように、ストレージサービス212の機能にアクセスし得る。従って、
図5に示すように、仮想化システムの実施形態は、クライアントが、サービスプロバイダ210によって提供されるVM 296上に実装された仮想コンピューティングシステム264のローカルインスタンスを生成して、仮想コンピューティングシステム264のローカルインスタンスから、サービスプロバイダ210によって実装されたリモートデータストア216からのデータにアクセスし、そこにデータを格納できるようにし得る。
【0065】
前述のように、1つまたは複数のストレージゲートウェイ252は、クライアントネットワーク250でインスタンス生成され得る。ゲートウェイ252の少なくとも1つは、少なくともいくつかのデータ、例えば、頻繁にアクセスされるかまたは重要なデータ、をローカルにキャッシュする、キャッシュゲートウェイ実施態様であり得る。ストレージゲートウェイ(単数または複数)252は、例えば、データの一次ストア(リモートデータストア216)がキャッシュゲートウェイ実施態様で保持されるように、新規もしくは修正されたデータをローカルキャッシュからアップロードするため、または新規もしくは修正されたデータ(書込みデータ)を、シャドーイングゲートウェイ実施態様内のリモートデータストア216上のローカルの一次データストアのスナップショットにアップロードするために、1つまたは複数の高帯域幅通信チャネルを通じて、ストレージサービス212と通信し得る。
【0066】
〔キャッシュゲートウェイ実施態様〕
図6は、ストレージゲートウェイの一実施形態が、ファイルシステムゲートウェイとして、またはクラウドボリュームゲートウェイとして設定される、ネットワーク環境例のアーキテクチャおよびその中のデータフローを大まかに示すハイレベルブロック図であり、それらのゲートウェイは、キャッシュゲートウェイとして総称され得る。少なくともいくつかの実施形態では、ストレージゲートウェイ252は、サービス顧客のデータセンターで、オンサイトでインストールされる、ファイルおよび/またはブロックストレージアプライアンスであり得る。
図6では、ストレージゲートウェイ252は、例えば、ファイルシステムゲートウェイとして、またはクラウドボリュームゲートウェイとして、機能するように、インストール、有効化、および設定され得る。ファイルシステムゲートウェイは、ストレージサービス212に対して(例えば、CIFSまたはNFSプロトコルを使用して)NASストレージインタフェースとして機能する。リモートデータストア216は、ブロックストレージとして実装されるが、顧客に対してオブジェクトストア(例えば、REST)として提示され得る。クラウドボリュームゲートウェイは、ストレージサービス212によって提供される仮想化ボリュームストレージに対するインタフェースとして機能する。仮想化ボリュームストレージは、ブロックストレージとして実装され得る。ゲートウェイ252は、柔軟で、本質的に制限のない一次記憶容量を提供するバックエンド記憶装置として機能するリモートデータストア216(クラウドボリュームとも呼ばれ得る)との、ローカルネットワークアクセスポイントを提供する。
【0067】
ストレージゲートウェイ252が、インストールされ、有効化されて、設定されると、クライアントネットワーク250のネットワーク管理者プロセス260は、リモートデータストア216上で、ストレージサービス212を介して、例えば、新規のデータボリューム270を作成し得るか、または既存のデータボリューム270をマウントし得る。ボリューム作成要求および他のサービス要求は、サービスプロバイダフロントエンド280を介して、サービス212に対して作成され得る。フロントエンド280は、ストレージゲートウェイ252への接続およびそれとの通信も管理し得る。フロントエンド280は、ファイアウォール、境界ルーター、負荷分散装置、ゲートウェイサーバー、ゲートウェイプロキシ、コンソールプロセス、ならびに、ストレージサービス212をクライアントネットワーク(単数または複数)250に公開し、そのストレージサービス212をストレージゲートウェイ(単数または複数)252とインタフェースで接続するために必要であり得る、一般的な任意のネットワーキング装置および/またはプロセス、のうちの1つまたは複数を含み得るが、それらに限らない。
【0068】
少なくともいくつかの実施形態では、ストレージゲートウェイ252は、サービスプロバイダフロントエンド280を介した、サービスプロバイダ210への全ての接続を開始し;サービスプロバイダ210は、ゲートウェイ252への接続を開始しない。さらに、ネットワーク管理者プロセス260は、直接ゲートウェイ252への接続を開始せず;例えば、ゲートウェイ252を設定および管理するため、ネットワーク管理者プロセス260によるゲートウェイ252へのアクセスは、サービスプロバイダフロントエンド280を介して、サービスプロバイダ210を通過する。
【0069】
ストレージゲートウェイ252は、1つまたは複数のデータポート(例えば、iSCSIポート)を、クライアントネットワーク250上の顧客プロセス(単数または複数)258に公開する。顧客プロセス258は、クライアントネットワーク250上に存在し、ゲートウェイ252のデータポートのデータプロトコル(例えば、iSCSIプロトコル)を介して、ストレージゲートウェイ252と通信する、任意のハードウェア、ソフトウェア、および/またはそれらの組合せであり得る。顧客プロセス258は、例えば、Microsoft(登録商標) SharePoint(登録商標)およびOracle(登録商標)データベースなどのストレージアプリケーション、サーバー(例えば、SQLサーバー、Microsoft(登録商標) Exchange(登録商標)サーバーなど)、データベースアプリケーション(例えば、SQLデータベースアプリケーション、およびOracle(登録商標)データベースアプリケーション)、Microsoft(登録商標) Exchange(登録商標)アプリケーション、または、ストレージゲートウェイ252データポート(単数または複数)と通信する働きをするクライアントネットワーク250上の1つまたは複数の装置上で実行する任意の他のアプリケーションまたはプロセスであり得る。顧客プロセスは、本明細書では、クライアントネットワーク250内の1つまたは複数の装置上で実行されている可能性のある任意のソフトウェアプロセスを包含するが;プロセスがその上で実行する基礎となるハードウェアが、プロセスの代わりに、ストレージゲートウェイ252データポート(単数または複数)に対する接続および通信に関与し得るか、またはそれを実行し得ることに留意されたい。
【0070】
マウントされたボリューム270は、ストレージゲートウェイ252によって顧客プロセス(単数または複数)258に提示され得る。顧客プロセス(単数または複数)258は、次いで、例えば、iSCSIプロトコルに従って、ストレージゲートウェイ252によって公開されたデータポートを介して、ボリューム270からの読取りおよびボリューム270への書込みを実行し得る。ストレージゲートウェイ252は、ボリューム270に対する全ての読取りおよび書込み要求を処理する。リモートデータストア216上のボリューム270は一次データストアとして機能するが、ストレージゲートウェイ252も、ローカルデータストア254上の頻繁にアクセスされるデータのローカルキャッシュを格納し得る。ローカルデータストア254は、ストレージゲートウェイ252の内部のストレージハードウェア上、サービス顧客によって提供されるストレージゲートウェイ252の外部のストレージハードウェア上、またはそれらの組合せ上で実装され得る。
【0071】
読取りについて、ストレージゲートウェイ252は、まず、所与の読取りがローカルキャッシュから満足できるかどうかを確認するために、ローカルキャッシュをチェックし得る。読取りがローカルキャッシュから満足できない場合、ストレージゲートウェイ252は、ストレージサービス212からデータを要求し得るが、それは、要求されたデータ(または、要求されたデータを含むデータのブロックもしくはチャンク)をリモートデータストア216から取得し、その要求されたデータをストレージゲートウェイ252に返す。ストレージゲートウェイ252は、ストレージサービス212から受信されたデータのブロックまたはチャンクをローカルキャッシュに格納し得る。
【0072】
書込みについて、ストレージゲートウェイ252は、新規または更新されたデータをローカルキャッシュに書き込み得る。少なくともいくつかの実施形態では、書込みデータは、ローカルキャッシュ内に実装されたブロックベースの書込みログに付加され得る。ストレージゲートウェイ252は、定期的に、非定期的に、または継続的に、ローカルキャッシュ内の新規または修正されたデータを一次データストア216にアップロードするために、サービスプロバイダ210で受信者側データアップロードプロセス(図示せず)と通信する送信者側データアップロードプロセス(図示せず)を含み得る。書込みデータの書込みログからのアップロードは、ローカルデータストア254に対する開始プロセスからの読取りおよび書込み動作の処理と非同期に実行され得る。少なくともいくつかの実施形態では、このアップロードプロセスは、データ重複排除、圧縮、並列化、およびTCPウィンドウスケーリング技術のうちの1つまたは複数を採用し得る。
図6に示すように、少なくともいくつかの実施形態で採用され得るデータ重複排除技術例は、米国特許出願第12/981,393号および第12/981,397号に記載されている。
【0073】
リモートデータストア216は本質的に制限のない記憶空間を提供し得るが、ローカルキャッシュは、サイズにおいて制限され得る。従って、ストレージゲートウェイ252は、ローカルキャッシュ内の、より古くて、かつ/または比較的アクティブでないデータブロックを、さらに新しいか、かつ/またはアクティブなデータブロックで、除去、置換、または上書きし得る。
【0074】
〔シャドーイングゲートウェイ実施態様〕
図7は、ストレージゲートウェイの一実施形態がシャドーイングゲートウェイとして設定される、ネットワーク環境例のアーキテクチャおよびその中のデータフローを大まかに示すハイレベルブロック図である。
図7では、ストレージゲートウェイ252は、顧客の書込みデータ(例えば、iSCSI書込み)の、ストレージサービス212によって提供されるリモートストレージへのシャドーイングを提供するために、顧客のアプリケーションと顧客のローカルデータストアとの間の「bump in the wire」として動作するシャドーイングゲートウェイとして機能するように、インストールされ、有効化されて、設定される。リモートデータストア216は、ブロックストレージとして実装され得る。
【0075】
図7に示す実施形態では、ローカルデータスト254は、リモートデータストア216が一次データストアとして機能する、
図6におけるキャッシュゲートウェイ実施態様とは対照的に、クライアントネットワーク250上の顧客プロセス(単数または複数)258に対する一次データストアとして機能する。ストレージゲートウェイ252が、シャドーイングゲートウェイとして、インストールされ、有効化されて、設定されると、ストレージゲートウェイ252は、1つまたは複数のデータポート(例えば、iSCSIポート)を、クライアントネットワーク250上の顧客プロセス(単数または複数)258に公開する。クライアントネットワーク250上の顧客プロセス(単数または複数)258は、次いで、ストレージゲートウェイ252データポート(単数または複数)を介して、ローカルデータストア254からの読取りおよびローカルデータストア254への書込みを行い得る。顧客プロセス258は、クライアントネットワーク250上に存在し、ゲートウェイ252データポートのデータプロトコル(例えば、iSCSIプロトコル)を介して、ストレージゲートウェイ252と通信する、任意のハードウェア、ソフトウェア、および/またはそれらの組合せであり得る。顧客プロセス258は、例えば、Microsoft(登録商標) SharePoint(登録商標)およびOracle(登録商標)データベースなどのストレージアプリケーション、サーバー(例えば、SQLサーバー、Microsoft(登録商標) Exchange(登録商標)サーバーなど)、データベースアプリケーション(例えば、SQLデータベースアプリケーション、およびOracle(登録商標)データベースアプリケーション)、Microsoft(登録商標) Exchange(登録商標)アプリケーション、または、ストレージゲートウェイ252データポート(単数または複数)と通信する働きをするクライアントネットワーク250上の1つまたは複数の装置上で実行する任意の他のアプリケーションまたはプロセスであり得る。顧客プロセスは、本明細書では、クライアントネットワーク250内の1つまたは複数の装置上で実行されている可能性のある任意のソフトウェアプロセスを包含するが;顧客プロセスがその上で実行する基礎となるハードウェアが、プロセスの代わりに、ストレージゲートウェイ252データポート(単数または複数)に対する接続および通信に関与し得るか、またはそれを実行し得ることに留意されたい。
【0076】
読取りおよび書込み要求は、ゲートウェイ252データポート(単数または複数)によって受信され得る。読取りについて、要求は、ゲートウェイ252によるさらなる干渉または処理なしで、ローカルデータストア254に直接渡され得、その要求されたデータがローカルデータストア254から顧客プロセス258に直接渡され得る。ローカルデータストア254に向けられた書込み要求も、ストレージゲートウェイ252によってローカルデータストア254に渡される。しかし、書込み要求をローカルデータストア254に渡すことに加えて、ストレージゲートウェイ252は、書込み要求によって示された新規または更新されたデータを、ストレージサービス212を介して、リモートデータストア216にシャドーイングし得る。
【0077】
少なくともいくつかの実施形態では、新規または更新されたデータをリモートデータストア216にシャドーイングするために、ストレージゲートウェイ252は、リモートデータストア216に、例えば、先入れ先出し方式(FIFO)の書込みログ内に、アップロードされる書込みデータをローカルに格納またはバッファリングし得る。少なくともいくつかの実施形態では、書込みログは、ブロックストレージフォーマットで実装され得、書込みログは1つまたは複数のブロック(例えば、4MBブロック)を含む。書込み要求で受信された書込みデータは、書込みログに付加され得る。2つ以上の書込み要求からの書込みデータが、書込みログ内の同じブロックに書き込まれ得る。ブロックに関連した書込みデータに対するメタデータ(例えば、書込みログブロックにおけるオフセットおよび長さ、ならびに対象とするデータストアにおけるオフセット)が、メタデータストアに格納され得る。
【0078】
ストレージゲートウェイ252は、定期的に、非定期的に、または継続的に、ローカルに格納された書込みデータを、書込みログから、リモートデータストア216でシャドーイングされたデータボリュームにアップロードするために、サービスプロバイダ210で受信者側データアップロードプロセス(図示せず)と通信する送信者側データアップロードプロセス(図示せず)を含み得る。書込みデータの書込みログからのアップロードは、ローカルデータストア254に対する開始プロセスからの読取りおよび書込み動作の処理と非同期に実行され得る。アップロードプロセスは、書込みデータを書込みログからブロックでアップロードし得る。書込みログブロックがうまくアップロードされると、対応するブロックが書込みログ内で空きとして印を付けられ得る。
【0079】
少なくともいくつかの実施形態では、アップロードプロセスは、データ重複排除、圧縮、並列化、およびTCPウィンドウスケーリング技術のうちの1つまたは複数を採用し得る。
図7に示すように、少なくともいくつかの実施形態で採用され得るデータ重複排除技術例は、米国特許出願第12/981,393号および第12/981,397号に記載されている。
【0080】
サービスプロバイダフロントエンド280が、ストレージゲートウェイ252への接続を管理し得ることに留意されたい。少なくともいくつかの実施形態では、ストレージゲートウェイ252は、フロントエンド280を介して、サービスプロバイダ210への接続を開始し;サービスプロバイダ210は、ゲートウェイ252への接続を開始しない。フロントエンド280は、ファイアウォール、境界ルーター、負荷分散装置、ゲートウェイサーバー、ゲートウェイプロキシ、コンソールプロセス、ならびに、ストレージサービス212をクライアントネットワーク(単数または複数)250に公開し、そのストレージサービス212をストレージゲートウェイ(単数または複数)252とインタフェースで接続するために必要であり得る、一般的な任意のネットワーキング装置および/またはプロセス、のうちの1つまたは複数を含み得るが、それらに限らない。
【0081】
少なくともいくつかの実施形態では、ストレージゲートウェイ252は、サービスプロバイダフロントエンド280を介した、サービスプロバイダ210への全ての接続を開始し;サービスプロバイダ210は、ゲートウェイ252への接続を開始しない。さらに、ネットワーク管理者プロセス260は、直接ゲートウェイ252への接続を開始せず;例えば、ゲートウェイ252を設定および管理するため、ネットワーク管理者プロセス260によるゲートウェイ252へのアクセスは、サービスプロバイダフロントエンド280を介して、サービスプロバイダ210を通過する。
【0082】
シャドーイングゲートウェイとして、ストレージゲートウェイ252によって提供されるシャドーイング動作は、クライアントネットワーク250上のユーザーの観点からすれば、効果的に透過的であり得る。顧客プロセス(単数または複数)258は、クライアントネットワーク250上のストレージゲートウェイ252によって公開されたデータポート(単数または複数)(例えば、iSCSIポート)に対する読取りおよび書込みを実行する。顧客プロセス258の観点から見れば、ストレージゲートウェイ252は、任意の他のデータターゲット(例えば、iSCSIターゲット)のように見え得る。データポート(単数または複数)上で受信された顧客プロセス(単数または複数)258からの読取り要求は、一次データストアとして機能するローカルデータストア254に伝えられる。データポート(単数または複数)上で受信された顧客プロセス(単数または複数)258からの書込み要求は、ローカルデータストア254に伝えられ、リモートデータストア216にシャドーイングされる。ゲートウェイ252のシャドーイング動作は、一次データストアの、またはクライアントネットワーク250の性能に著しく影響を及ぼすことなく、バックグラウンドで実行され得る。
【0083】
図7に示す「bump in the wire」シャドーイングゲートウェイ設定に対するユースケースの一例は、障害復旧に対してである。ストレージゲートウェイ252は、データの更新を、クライアントネットワーク250からストレージサービス212に送信するが、それは、スナップショット270とも呼ばれる、シャドーボリュームまたは複数のボリューム内にデータを格納する。データは、ブロックストレージフォーマットでスナップショット270内に格納され得る。データはローカルデータストア254にも格納される。ローカルに格納されたボリュームの一部もしくは全部の破損または損失という結果になる何かが起こった場合、破損したか、または失われたデータは、データストア216内に格納されたボリュームのスナップショット270から回復され得る。ストレージプロバイダ210は、顧客ネットワーク管理者が(例えば、ネットワーク管理者プロセス260を介して)それを通じて、リモートデータストア216上のシャドーイングされたボリュームから、ローカルに格納されたボリュームの一部または全部のスナップショット270の回復を要求し得る、インタフェースを提供し得る。少なくともいくつかの実施形態では、データがそこから回復されるシャドーイングされたボリュームが可能な限り最新であることを確実にするために、データのスナップショット270を回復する前に、ストレージゲートウェイ252によって維持される書込みログの少なくとも一部が、リモートデータストア216にアップロードされ得る。いくつかの場合には、少なくともいくつかのデータが、ストレージゲートウェイ252によって維持される書込みログから直接回復され得ることに留意されたい。
【0084】
〔顧客プロセス‐ゲートウェイ通信〕
前述の通り、顧客管理者は、ネットワーク管理者プロセス260を介して、例えば、ゲートウェイ252を設定するために、サービスプロバイダ280フロントエンドを通じて、ストレージゲートウェイ252(例えば、シャドーイングゲートウェイ)と通信し得る。少なくともいくつかの実施形態では、1つまたは複数の顧客プロセス258は、ゲートウェイ252の要求を行うために、サービスプロバイダ280フロントエンドを介して、ストレージゲートウェイ252と通信するようにも設定され得る。例えば、顧客プロセス258は、サービスプロバイダ280フロントエンドを介して、ストレージゲートウェイ252と通信するように設定されるSQLサーバーであり得る。
【0085】
〔シャドーイングゲートウェイブートストラップ技術〕
図7に示すように、ストレージゲートウェイ252が、シャドーイングゲートウェイとして、インストールされ、有効化されて、設定されると、ストレージゲートウェイ252は、1つまたは複数のデータポート(例えば、iSCSIポート)を、クライアントネットワーク250上の顧客プロセス(単数または複数)258に公開する。クライアントネットワーク250上の顧客プロセス(単数または複数)258は、次いで、ストレージゲートウェイ252データポート(単数または複数)を介して、ローカルデータストア254からの読取りおよびローカルデータストア254への書込みを行い得る。読取りおよび書込み要求が、ローカルデータストア254に渡され、その書込み要求によって示された書込みデータは、ローカルデータストアのスナップショット(単数または複数)272が更新され得るように、リモートデータストア216にシャドーイングされる。
【0086】
しかし、最初にインストールされ、有効化されて、設定された時、または何らかの理由でオフラインになった後のいずれかで、シャドーイングゲートウェイが顧客のネットワーク内でオンラインになると、リモートデータストア216上のスナップショット(単数または複数)272内にない、ローカルデータストア254内のデータがあり得る。従って、少なくともいくつかの実施形態は、シャドーイングゲートウェイのためのブートストラッププロセスを提供し得るが、その間、スナップショット(単数または複数)が、ローカルデータストア254上に現在あるデータを正確に反映するように、投入および/または更新できるよう、ローカルデータストア254からの少なくともいくつかのデータがリモートデータストア216にアップロードされ得る。
【0087】
図8は、少なくともいくつかの実施形態に従った、ネットワーク環境例内でのシャドーイングゲートウェイのブートストラップを大まかに示すハイレベルブロック図である。ストレージゲートウェイ252が、クライアントネットワーク250上でシャドーイングゲートウェイとしてオンラインになると、ゲートウェイ252は、スナップショット272をローカルデータストア254と一致させるために、リモートデータストア216にアップロードされる必要のあるローカルデータストア254内のデータがあると判断し得る。ゲートウェイ252のアップロードプロセスは、次いで、ローカルデータストア254からのデータのブロックの、サービスプロバイダ210におけるリモートデータストア216へのアップロードを開始し得る。ストレージゲートウェイ252は、また、そのデータポートを顧客プロセス(単数または複数)258に対して公開して、ローカルデータストア254に向けられた読取り要求および書込み要求の受取りおよび処理を開始し、書込み要求によって示された新規の書込みデータの書込みログへのキャッシングを開始して、書込みログからの書込みデータのリモートデータストア216へのアップロードを開始し得る。ローカルデータストア254からのデータのアップロードは、そのようにして、ストレージゲートウェイ252がそのシャドーイング機能をクライアントネットワーク250上で実行している間に、バックグラウンドで実行され得る。ローカルデータストア254からのデータのアップロードが完了すると、ストレージゲートウェイ252は、そのシャドーイング機能の実行を継続する。
【0088】
図9は、少なくともいくつかの実施形態に従った、シャドーイングゲートウェイのためのブートストラッププロセスの流れ図である。300に示すように、シャドーイングゲートウェイが顧客のネットワーク上でオンラインになる。例えば、ストレージゲートウェイの新しいインスタンスが、ネットワーク上にシャドーイングゲートウェイとして、インストールされ、有効化されて、設定される。別の例として、シャドーイングゲートウェイの既存のインスタンスが、何らかの理由でオフラインになった後、オンラインに戻り得;ゲートウェイがオフラインだった間、顧客プロセス(単数または複数)が、データの読取りおよび書込みのために、ローカルデータストアに直接伝達していた可能性がある。別の例として、シャドーイングゲートウェイは、シャドーイング動作が、その間、何らかの理由で(例えば、書込みログがいっぱいになったため)一時的に中断される、パススルーモードに入り得、そして、パススルーモードを出て、シャドーイング動作を再開している可能性がある。
【0089】
302に示すように、シャドーイングゲートウェイは、必要であれば、既存のデータのローカルデータストアからリモートデータストアへのアップロードを開始し得る。例えば、これが新しいシャドーイングゲートウェイで、ローカルデータストアが既にデータを投入されている場合、ローカルデータストア内の既存のデータは、一致したスナップショットが生成できるように、リモートデータストアにアップロードされる必要がある。別の例として、パススルーモードを出て、既存のシャドーイングゲートウェイがオンラインに戻るか、またはシャドーイング動作を再開すると、新規のデータがローカルデータストアに書き込まれている可能性があり、従って、リモートデータストア上のスナップショットを、ローカルデータストア上の現在のデータと一致させる必要がある。
【0090】
304に示すように、シャドーイングゲートウェイは、顧客のネットワーク上に公開されたゲートウェイデータポート(単数または複数)を介して、顧客プロセスから読取りおよび書込みの受入れを開始し得る。306に示すように、シャドーイングゲートウェイは、書込みからの書込みデータの書込みログへのキャッシュを開始して、308に示すように、書込みログからの書込みデータのリモートデータストアへのアップロードを開始し得る。
【0091】
302で開始された、ローカルデータストアからのデータのアップロードは、シャドーイングゲートウェイが読取りおよび書込み要求を受け入れて、そのシャドーイング機能を顧客のネットワーク上で実行している間、バックグラウンドで実行され得る。ローカルデータストアからのデータのアップロードが完了すると、シャドーイングゲートウェイは、そのシャドーイング機能の実行を継続する。
【0092】
図9における要素の順番は異なり得ることに留意されたい。例えば、要素302は、要素304から308までの任意の1つの後に実行され得る。言い換えれば、シャドーイングゲートウェイは、ローカルデータストアから既存のデータのアップロードを開始する前に、読取りおよび書込みの受入れ、ならびにそのシャドーイング機能の実行を開始し得る。
【0093】
図10は、少なくともいくつかの実施形態に従って、パススルーモードに入り、それから回復するシャドーイングゲートウェイの流れ図である。320に示すように、シャドーイングゲートウェイは、そのシャドーイング機能を中断する(すなわち、書込みデータのキャッシュおよびアップロードを停止する)ことによりパススルーモードに入り得るが、その間、顧客のネットワーク上の顧客プロセスからローカルデータストアに向けられた読取りおよび書込みの受入れおよびサービスを継続している。ゲートウェイは、シャドーイング機能を失敗させ得る何らかの状態を検出すると、パススルーモードに入り得る。一例として、シャドーイングゲートウェイは、書込みログがいっぱいで、うまくアップロードできないことを検出すると、パススルーモードに入り得る。ゲートウェイは、検出された状態をローカルネットワーク管理者に警告し得;管理者は、次いで、警告によって示された問題に対処し得る。例えば、管理者は、より多くのメモリを書込みログに割り当て得、かつ/またはより多くの帯域幅をゲートウェイアップロードプロセスに割り当て得る。管理者は、次いで、問題が対処されていることをゲートウェイに通知し得る。
【0094】
シャドーイングゲートウェイが、例えば、パススルーモードを引き起こした検出された問題が対処されているという指示を受信することにより、パススルーモードを出ることができると判断すると、ゲートウェイは、322に示すように、シャドーイングを再開し得る(すなわち、書込みデータのキャッシュおよびアップロードを開始する)。
【0095】
パススルーモードを出ると、リモートデータストアにアップロードされていないローカルデータストア内のデータがあり得る。ゲートウェイは、パススルーモードの間に、書込み要求の受信および処理を継続しているので、新規のデータがローカルデータストアに書き込まれている可能性がある。従って、シャドーイングゲートウェイは、
図8および
図9に示すように、ブートストラップを実行して、324に示すように、パススルーモードから回復するため、少なくともいくつかのデータをローカルデータストアからリモートデータストアにアップロードし得る。
【0096】
少なくともいくつかの実施形態では、シャドーイングゲートウェイのために最適化されたブートストラッププロセスが、ローカルデータストアからリモートデータストアにアップロードされるデータの量を削減するために採用され得る。最適化されたブートストラッププロセスは、リモートデータストアに既にアップロードされているデータのブロックを検出し得、従って、既にアップロードされているブロックのアップロードを回避し得る。最適化されたブートストラッププロセスは、ゲートウェイからリモートデータストアへのデータの一般的なアップロード中に、ストレージゲートウェイプロセスに対して生成および維持される、追跡データを利用し得る。
【0097】
図11は、少なくともいくつかの実施形態に従って、ゲートウェイからリモートデータストアへブロックをアップロード、更新、および追跡するための方法の流れ図である。通常のゲートウェイ動作中、ゲートウェイは、360に示すように、サービスプロバイダにおいて、書込みデータをリモートデータストアに、具体的にはストレージサービスに、アップロードする。ストレージサービスは、書込みデータを受信して、342に示すように、それぞれのブロック(単数または複数)(例えば、4MBブロック)をリモートデータストアから取得する。ストレージサービスは、次いで、344に示すように、書込みデータに従って、それぞれのブロック(単数または複数)を修正し、修正されたブロック(単数または複数)を、新しいバージョン名でリモートデータストアにアップロードして戻す。各修正されたブロックに対して、346に示すように、修正されたブロックを示すトークンがストレージゲートウェイに送り返される。ストレージゲートウェイは、これらのトークンを追跡し;ブロックが修正されるたびに、修正されている参照ブロックがストレージサービスに送信される必要がある。
【0098】
348に示すように、ストレージゲートウェイは、サービスプロバイダにおいて、定期的または非定期的に、トークンマニフェスト(token manifest)を更新し、ローカルに追跡されたトークンの少なくとも一部をパージし得る。ストレージゲートウェイは、多数のトークンを追跡する必要があり得る。少なくともいくつかの実施形態では、マニフェストは、ストレージゲートウェイから、多数のトークンをローカルに追跡する必要があるという負担を取り除き得る。ストレージゲートウェイは、マニフェストを、ゲートウェイが受信しているトークンで更新するために、定期的または非定期的にストレージサービスを呼び出し得、それぞれローカルに格納されたトークンをパージし得る。
【0099】
少なくともいくつかの実施形態では、最適化されたブートストラッププロセスは、マニフェスト内の各ブロックのハッシュをチェックする呼出しを行うことにより、どのブロックがアップロードされ、どのブロックがアップロードされていないかを判断するためにマニフェストを利用して、マニフェストによって示されたどのブロックが、ローカルデータストア上のブロックに一致するかに対して、マニフェストによって示されたどのブロックが、ローカルデータストア上のブロックに一致しないか、従ってアップロードされる必要があるかを判断し得る。言い換えれば、マニフェストは、ローカルデータストア上のどのブロックがダーティブロックであるか、およびどれがダーティブロックでないかを検出するために使用される。このようにして、最適化されたブートストラッププロセスは、マニフェストを介して、どのブロックが既にアップロードされているかを判断しようと試みて、既にアップロードされたブロックが再度アップロードされず、ダーティブロックだけがアップロードされるようにする。少なくともいくつかの実施形態では、最適化されたブートストラッププロセスが、アップロードされる必要があると判断するブロック(ダーティブロック)に対して、ダーティブロックから実際にアップロードされるデータの量を削減するために、これらのブロックをアップロードする際に、データ重複排除技術が適用され得る。
【0100】
図12は、少なくともいくつかの実施形態に従った、シャドーイングゲートウェイのための最適化されたブートストラッププロセスの流れ図である。ブートストラッププロセスは、例えば、ゲートウェイがパススルーモードを出るときに、シャドーイングゲートウェイに対して開始される。360に示されるように、ブロックがローカルデータストアから取得される。362に示されるように、リモートデータストア上に格納され得る、マニフェストが、現在のブロックが、アップロードされる必要のあるダーティブロックであるかどうかを判断するために、チェックされ得る。364で、現在のブロックがマニフェストに従ってダーティである場合には、366に示されるように、データ重複排除技術に従って、ブロックの少なくとも一部がリモートデータストアにアップロードされ得る。方法は、次いで、368に進む。364で、現在のブロックがマニフェストに従ってダーティでない場合、方法は、直接368に進む。368で、さらなるブロックが処理される場合、方法は、次のブロックを処理するために、要素360に戻る。そうでない場合、ブートストラッププロセスは終了する。
【0101】
〔ストレージゲートウェイセキュリティモデル〕
ストレージゲートウェイの実施形態が、顧客に対するデータ保護、ならびに顧客または第3者によるゲートウェイの誤用および不正使用(例えば、不法コピー)に対する保護を提供するセキュリティモデルに従って実装され得る。
図13は、少なくともいくつかの実施形態に従った、ストレージゲートウェイセキュリティモデルの態様を示す。
【0102】
少なくともいくつかの実施形態では、セキュリティモデルの一態様は、ストレージゲートウェイ84が、サービスプロバイダ60との通信で使用するために、ゲートウェイ84に対するセキュリティ認証情報または他の識別情報なしで、クライアントネットワーク80上に配信されて最初にインストールされることである。有効化プロセスが採用され得、それを介して、顧客ネットワーク上のストレージゲートウェイ84がサービスプロバイダ60に登録できる。有効化プロセスの少なくともいくつかの実施形態では、ストレージゲートウェイ84は、必要なセキュリティ認証情報を取得するために、それぞれの顧客アカウントに対する正しいゲートウェイとして、サービスプロバイダ60との接続(例えば、SSL(セキュアソケットレイヤー)/TCP接続)を開始し、サービスプロバイダ60に対して自身を識別し得る。有効化プロセス中、サービス顧客は、ゲートウェイ84に対して名前を指定する。少なくともいくつかの実施形態では、サービス顧客は、サービスプロバイダ60でその顧客のアカウントにログインして、ゲートウェイ84を登録する際に使用される、ゲートウェイ名を含むがそれに限らない、情報をサービスプロバイダ60に提供する。しかし、サービス顧客は、ストレージゲートウェイ84にログインせず、従って、サービス顧客のセキュリティ認証情報および他のアカウント情報は、ゲートウェイ84上で公開されない。これは、サービス顧客に対するセキュリティリスクを最小限にし得る。このゲートウェイ名は、ゲートウェイ84およびサービス顧客に関連した他のメタデータとともに、サービスプロバイダ60によって格納され、それぞれのゲートウェイ84の追跡および識別で使用され得る。サービス顧客は、クライアントネットワーク80上でインストールおよび有効化された1つまたは複数のゲートウェイ84を有し得、各々は一意の識別名および他のメタデータを有することに留意されたい。
図15〜
図17Bは、以下の「ストレージゲートウェイ有効化プロセス」という表題のセクションでさらに説明されるが、少なくともいくつかの実施形態で採用され得る有効化プロセスを示す。有効化プロセスでは、ゲートウェイ84は、サービスプロバイダ60への接続を開始し、ゲートウェイ84プラットフォームに関するメタデータを、公開鍵とともに、サービスプロバイダ60に提供し得る。サービスプロバイダ60は、次いで、有効化プロセスで使用される、一時的な一意の有効化キーをゲートウェイ84に提供し得る。さらに、サービス顧客は、ゲートウェイ84を有効化するために、サービスプロバイダコンソールプロセスを通じて、顧客のアカウントにログインするように要求され得;そのようにして、ゲートウェイ84は、ゲートウェイ84を有効化しようと試みるサービス顧客のアカウントと照合され得る。ストレージゲートウェイ84により有効化プロセスを通じて取得されたセキュリティ認証情報および他のメタデータ(例えば、顧客提供のゲートウェイ名)が、次いで、ゲートウェイ84をサービスプロバイダ84プロセスに対して識別するために、サービスプロバイダ60ネットワークの様々なプロセスとの通信でストレージゲートウェイ84によって使用され得る。
【0103】
少なくともいくつかの実施形態では、
図13に示すように、セキュリティモデルの別の態様は、ストレージゲートウェイ84は、クライアントネットワーク80上で顧客プロセス(単数または複数)88に対して公開された1つまたは複数のデータポート(例えば、iSCSIポート)への外部から開始された接続のみを受け入れる。ストレージゲートウェイは、他の外部から開始された接続を受け入れず、外部プロセスへの全ての必要な接続を開始する。例えば、少なくともいくつかの実施形態では、ストレージゲートウェイ84は、サービスプロバイダ60への少なくとも1つの安全な接続92(例えば、SSL(セキュアソケットレイヤー)/TCP接続)を開始するが;サービスプロバイダ60は、しかし、ゲートウェイ84への接続を開始できない。ゲートウェイ開始接続および少なくともいくつかの実施形態で使用され得るロングポーリング技術を使用した、リモートゲートウェイ管理のための方法例が、
図18〜
図20に示されている。
【0104】
さらに、
図13に示すように、少なくともいくつかの実施形態では、サービス顧客(例えば、ネットワーク管理者プロセス90)は、ゲートウェイ84を設定および管理するために、ストレージゲートウェイ84に直接接続せず;代わりに、ストレージゲートウェイ84に対する設定および動作要求が、サービスプロバイダ60を通して行われ、それは、要求を、ゲートウェイ84によって開始された安全な通信チャネル92を介してゲートウェイ84に渡す。例えば、
図18〜
図21に示すように、ゲートウェイ84に対する設定および動作要求は、サービスプロバイダ60ネットワーク上のコンソールプロセスを通して、ネットワーク管理者プロセス90によって、またはそれを介して実行され得る。少なくともいくつかの実施形態では、コンソールプロセスは、顧客のゲートウェイ84に向けられた、受信された設定要求または動作要求が、ゲートウェイ開始接続92を維持するゲートウェイ制御プレーンに転送される。ゲートウェイ制御プレーンは、要求の対象であるゲートウェイ84への現在の接続、例えば、特定のゲートウェイ制御サーバー上で維持された接続、を探し、要求がその接続を介してゲートウェイ84に転送される。
【0105】
従って、少なくともいくつかの実施形態では、ユーザー、ネットワーク管理者、または顧客のプロセスは、ストレージゲートウェイ84への接続を直接開始することもそれに「ログイン」することもできず、サービスプロバイダ60ネットワーク上のオペレータまたはプロセスなどの外部の人またはプロセスもストレージゲートウェイ84への接続を開始できない。これは、ゲートウェイセキュリティモデルの他の態様とともに、ストレージゲートウェイ84上のセキュリティ認証情報および他の動作情報が、外部の人またはプロセスによって故意または故意ではなく危険にさらされるのを防ぐのに役立ち得る。
【0106】
セキュリティモデルの別の態様では、ゲートウェイの有効化および動作中の、ストレージゲートウェイとストレージサービスとの間の全ての通信が、保護されて暗号化され得る。前述のように、セキュリティモデルの一態様は、ストレージゲートウェイとストレージサービスとの間の通信が、ゲートウェイ開始の安全な接続(例えば、SSL/TCP接続)を通して実行されることである。暗号化技術、例えば、公開/秘密鍵の暗号化が、ゲートウェイ開始の安全な接続を通した通信で使用され得る。
【0107】
図14は、少なくともいくつかの実施形態に従った、ストレージゲートウェイの有効化、設定、および動作中の、ゲートウェイセキュリティモデルの少なくともいくつかの態様を示す、流れ図である。400に示すように、ストレージゲートウェイが、顧客ネットワーク上でインスタンス生成され得る。例えば、ストレージゲートウェイのインスタンスを生成するために、ストレージゲートウェイは、通常、ファイアウォールの後ろで、サービス顧客のローカルネットワークまたはデータセンター上に仮想または物理アプライアンスとしてインストールされ得る。例えば、少なくともいくつかの実施形態では、ストレージゲートウェイは、サービス顧客のローカルネットワーク上のサーバーシステムなどの、1つまたは複数のコンピューティング装置上にダウンロードされ得るか、または他の方法でインストールされ得る仮想アプライアンスとして実装され得る。あるいは、ストレージゲートウェイは、サービス顧客のローカルネットワークに結合され得る専用装置またはアプライアンスとして実装され得;その専用装置またはアプライアンスは、ストレージゲートウェイの機能を実装するソフトウェアおよび/またはハードウェアを含み得る。402に示すように、インスタンス生成されたストレージゲートウェイは、ゲートウェイを識別して、ゲートウェイセキュリティ認証情報を取得するために、サービスプロバイダおよび顧客とともに有効化プロセスを開始する。少なくともいくつかの実施形態では、セキュリティ認証情報は、ゲートウェイ提供の公開鍵で署名された証明書を含む。有効化プロセス例が、
図15〜
図17Bに関連して以下で説明される。有効化プロセスは、ゲートウェイが顧客ネットワーク上に最初にインストールされると、ゲートウェイによって開始され得、また、他の時に、例えば、ゲートウェイ装置が、アップグレード、保守、または何らかの他の理由のために電源が切られていた後に電源がオンになった時にも開始され得ることに留意されたい。
図14の404に示されるように、ストレージゲートウェイは、サービスプロバイダへの安全な接続を確立する。少なくともいくつかの実施形態で使用され得るロングポーリング技術を使用するゲートウェイ開始接続のための方法例が、
図18〜
図21に示される。
図14の406に示されるように、顧客は、サービスプロバイダコンソールプロセスを通して、ストレージゲートウェイを設定および操作する。ゲートウェイ開始接続および少なくともいくつかの実施形態で使用され得るロングポーリング技術を使用した、リモートゲートウェイ管理のための方法例が、
図18〜
図21に示されている。
図14の408に示されるように、ストレージゲートウェイは、例えば、ストレージサービスプロセスと通信するために、ゲートウェイをサービスプロバイダに対して識別するための有効化プロセス中に取得されたゲートウェイセキュリティ認証情報およびおそらく他のメタデータを使用して、サービスプロバイダと通信する。
【0108】
〔ストレージゲートウェイ有効化プロセス〕
ストレージゲートウェイの実施形態は、例えば、オンプレミス記憶装置として、およびサービス顧客のネットワークと、サービスプロバイダによって提供されるストレージサービスとの間のインタフェースとして、機能し得る。少なくともいくつかの実施形態では、ストレージゲートウェイは、顧客データセンターで顧客のローカルネットワークインフラストラクチャに結合されたサーバーシステムなどの、1つまたは複数のコンピューティング装置上にダウンロードされ得るか、または他の方法でインストールされ得る仮想装置またはアプライアンスとして実装され得る。あるいは、ストレージゲートウェイは、顧客のローカルネットワークインフラストラクチャに結合され得る専用装置またはアプライアンスとして実装され得る。専用装置またはアプライアンスは、ゲートウェイの機能を実現するソフトウェアおよび/またはハードウェアを含み得る。
【0109】
少なくともいくつかの実施形態では、ゲートウェイがインストールされた後にストレージゲートウェイを使用するために、ゲートウェイはサービスプロバイダで有効化される必要がある。この節は、ストレージゲートウェイの識別、認証、および認可が、ストレージゲートウェイのブートストラップまたは有効化中に実行され得る方法を説明する。ゲートウェイ有効化方法では、ストレージゲートウェイが識別されて、顧客のサービスプロバイダアカウントに関連付けられる。しかし、顧客の認証情報は、有効化プロセス中にストレージゲートウェイに公開されない。少なくともいくつかの実施形態では、顧客は、サービスプロバイダで顧客のアカウントにログインして、ゲートウェイ84を登録する際に使用される、ゲートウェイ名を含むがそれに限らない、情報をサービスプロバイダに提供する。しかし、顧客は、ストレージゲートウェイにログインせず、従って、顧客のセキュリティ認証情報および他のアカウント情報は、ゲートウェイ上で公開されない。これは、顧客に対するセキュリティリスクを最小限にし得る。少なくともいくつかの実施形態では、顧客により有効化プロセスで使用されるサービスプロバイダアカウントは、
図5に示されるように、ストレージサービスによって提供される他のストレージリソースおよびハードウェア仮想化サービスによって提供される仮想化ハードウェアリソースを含むがそれらに限らない、サービスプロバイダによって顧客に提供される他のリソースを管理するために顧客が使用した、同一のアカウントであり得る。
【0110】
図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つ以上ゲートウェイ制御サーバーを含む制御プレーンとして実装され得る。
【0111】
図16Aおよび
図16Bは、少なくともいくつかの実施形態に従って、ゲートウェイ有効化プロセス中に、
図15に示す構成要素間のやりとりを示すプロセス流れ図である。有効化プロセスは、顧客の観点から見れば、2つのやりとりの点を含む。第1は、
図16Aに示すように、顧客がゲートウェイ84とやりとりする。第2は、
図16Bに示すように、顧客が、サービスプロバイダ(SP)コンソール68とやりとりする。
【0112】
図16Aは、有効化プロセス中に、顧客(
図15でネットワーク管理者プロセス90によって表される)、ゲートウェイ84、およびサービスプロバイダ(SP)ゲートウェイ制御70の間のやりとりを示す。ゲートウェイ84がインストールされ、かつ/または電源をオンにされた後、ゲートウェイ84は、公開鍵(例えば、RSA鍵ペア)を生成し、ゲートウェイ84がその上にインストールされている装置のハードウェアおよび/またはソフトウェアに関するメタデータを収集する。例えば、メタデータは、IPアドレス、MACアドレス、または装置の他のハードウェアおよびソフトウェア特性を含み得る。ゲートウェイ84は、次いで、公開鍵およびメタデータを、例えば、HTTP POSTを通じて、ゲートウェイ制御70に公開する。それに応じて、ゲートウェイ制御70は、有効化キーを生成し得、その有効化キーをゲートウェイ84に返す。有効化キーは、グローバル一意識別子(GUID)、例えば、Nビットのランダムに生成された数であり得る。ゲートウェイ制御70は、有効化キーを、ゲートウェイ84から取得された公開鍵およびメタデータとともに、格納し得る。
【0113】
ゲートウェイ制御70から有効化キーを受信した後、ゲートウェイ84は、ゲートウェイ84 VMまたは装置上の固定ポート(IPアドレス:ポート)において、クライアントネットワーク80内で有効化キーを提供する。顧客は次いで、ネットワーク管理者プロセス90を介して、有効化キーを取得するために、ゲートウェイ84の固定ポートにアクセスし得;そのアクセスは、クエリ文字列内の有効化キーで、サービスプロバイダ(SP)コンソール68プロセスにリダイレクトされる。
【0114】
少なくともいくつかの実施形態では、有効化キーは、ある期間または存続期間(例えば、30分間)、有効であり、その後、有効化キーは失効する。少なくともいくつかの実施形態では、有効化キーは、指定された存続期間の間だけ有効であるので、失効した有効化キーを除去する、バックグラウンドのガーベジコレクションプロセスが、サービスプロバイダ60で提供され得る。少なくともいくつかの実施形態では、有効化キーに対する存続期間は、境界例を処理するために、サービスプロバイダ60側上では、ゲートウェイ84上よりも長い可能性がある(例えば、サービスプロバイダ60側上で45分、ゲートウェイ84上で30分)。
【0115】
図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と関連付ける際に使用され得る。
【0116】
顧客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によって格納される。
【0117】
少なくともいくつかの実施形態では、SPコンソール68とSPゲートウェイ制御70との間、およびゲートウェイ84とSPゲートウェイ制御70との間で交換される全てのデータが、暗号化され得る。少なくともいくつかの実施形態では、顧客の認証情報、アクセスキーまたは秘密鍵などの極秘データは、有効化プロセス内で渡されない。
【0118】
図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への将来の通信で、認証のために使用され得る。
【0119】
少なくともいくつかの実施形態では、顧客が、同じ有効化キーを使用して複数のゲートウェイ84を有効化するのを防ぐ支援をするために、システム/ハードウェア固有の情報も、ゲートウェイ84によってSPゲートウェイ制御70に公開される有効化キーとともに、含まれ得る。
【0120】
図17Aおよび
図17Bは、少なくともいくつかの実施形態に従って、ストレージゲートウェイの観点から見た、有効化プロセスの流れ図である。
図17Aの500に示すように、ゲートウェイがインストールされ、かつ/または電源をオンにされた後、ゲートウェイは、永続記憶装置をチェックして、それが既に有効化されているかどうかを判断する。例えば、ゲートウェイは、アップグレード、保守、または何らかの他の理由のために電源が切られていた可能性がある。ゲートウェイが有効化されている場合、有効化プロセスは、
図17Bの要素530に進み、そこで、ゲートウェイは、SPゲートウェイ制御から設定情報を取得し得る。
【0121】
図17Aの500で、ゲートウェイが以前に有効化されていない場合、有効化プロセスは、
図17Aの要素502に進み、そこで、ゲートウェイは、証明書署名要求(CSR)を生成するための任意の永続的な顧客情報を有するかどうかをチェックする。ゲートウェイが永続的な顧客情報を有する場合、プロセスは、
図17Bの要素520に進む。ゲートウェイが永続的な顧客情報をもたない場合、プロセスは、
図17Aの要素504に進む。504で、ゲートウェイは、公開鍵(例えば、RSA鍵ペア)を生成する。ゲートウェイは、ゲートウェイがその上にインストールされている装置のハードウェアおよび/またはソフトウェアに関するメタデータも収集し得る。例えば、メタデータは、IPアドレス、MACアドレス、または装置の他のハードウェアおよびソフトウェア特性を含み得る。ゲートウェイは、次いで、506に示すように、公開鍵およびメタデータをSPゲートウェイ制御に公開する。508で、ゲートウェイは、有効化キーをSPゲートウェイ制御から受信する。510で、ゲートウェイは、サービス顧客のネットワーク上の固定ポート(IPアドレス:ポート)上で、有効化キーを提供する。
【0122】
図17Aの512〜516に示すように、ゲートウェイは、次いで、CSRを生成するために必要とされる顧客情報を求めて、SPゲートウェイ制御をポーリングし得る。顧客情報は、顧客のアカウントIDおよびゲートウェイに対する顧客提供名を含み得るが、それに限らない。512で、ゲートウェイは、例えば、1分間またはいくらかの他の期間、一時停止し得、次いで、SPゲートウェイ制御から情報を受信しているかどうかをチェックし得る。514で、情報が受信されていない場合、516に示すように、ゲートウェイは、有効化キーが失効しているかどうかをチェックする。少なくともいくつかの実施形態では、有効化キーは、ある期間または存続期間(例えば、30分間)、有効であり、その後、有効化キーは失効する。516で、有効化キーが失効していない場合、有効化プロセスは、SPゲートウェイ制御のポーリングを継続するために、
図17Aの要素512に戻る。516で、有効化キーが失効している場合、有効化プロセスは、新しい有効化キーをSP制御プレーンから取得するために、
図17Aの要素504に戻る。
【0123】
図17Aの514で、顧客情報がSPゲートウェイ制御から受信されている場合、有効化プロセスは、
図17Aの要素518に進み、そこで、ゲートウェイは、顧客情報を永続的メモリに格納する。少なくともいくつかの実施形態では、受信された顧客情報は暗号化され得、それ故、ゲートウェイは、情報を格納する前に情報を復号し得る。プロセスは、次いで、
図17Bの要素520に進む。
【0124】
図17Bを参照すると、520において、ゲートウェイは、それが既に証明書を有するかどうかをチェックし得る。520で、ゲートウェイが既に証明書を有している場合、プロセスは
図17Bの要素530に進み得、そこで、ゲートウェイは設定情報をSPゲートウェイ制御から取得し得る。520で、ゲートウェイが証明書を有していない場合、プロセスは要素522に進む。522で、ゲートウェイは、CSRを生成し、そのCSRをSP制御プレーンに送信する。524で、ゲートウェイは、CSRの受信に応答して、SP制御プレーンからセキュリティ証明書を受信し;その証明書は、ゲートウェイに対するセキュリティ認証情報として機能し得る。526で、ゲートウェイは、有効化キーの提供(
図17Aのステップ510を参照)を無効にし得る。528で、ゲートウェイは、有効化プロセスで取得されている情報(証明書、顧客指定ゲートウェイ名など)を持続するために、その現在の状態を保存し得る。
【0125】
この時点で、有効化プロセスが完了する。530で、ゲートウェイは、設定情報をSPゲートウェイ制御から取得し得る。少なくともいくつかの実施形態では、顧客が、ゲートウェイがうまく有効化されたことを通知されると、顧客はSPコンソールを介して、インストールおよび有効化されたゲートウェイを設定し得る。SPコンソールは、顧客がそれにログオンできる、ユーザーインタフェース、例えば、ウェブインタフェースを、顧客のアカウントに提供し、(顧客指定の名前によって識別され得る)ゲートウェイを選択して、そのゲートウェイに対する設定を指定し得る。少なくともいくつかの実施形態では、SPコンソールは、この設定をSPゲートウェイ制御に伝え、それは、次いで、ゲートウェイ自身によって開始された接続(例えば、およびSSL/TCP接続)を介して、指定されたゲートウェイを設定する。
【0126】
〔有効化キーのセキュリティ〕
図17Aの510に示されるように、有効化キーがサービス顧客のネットワーク上の公開IPアドレスで利用可能にされ、暗号化されていない状態で、クエリ文字列内で顧客からSPコンソールに渡され得る。有効化キーは限られた存続期間をもち、IPアドレスは顧客にのみ知られているが、有効化キーがIP:ポートで公開される短い期間がまだある。有効化キーは、ゲートウェイによってSPゲートウェイ制御にも公開されるメタデータなしでは、単独で役に立たないが、ゲートウェイは、この短期間の間、ある程度脆弱であり得る。少なくともいくつかの実施形態では、顧客は、悪意のあるユーザーまたはプロセスが有効化キーを取得して、誰か他の人のゲートウェイを有効化するのを防ぐ支援をするために、セキュリティグループまたは他のセキュリティ手段を利用し得る。さらに、顧客はゲートウェイを有効化するために、SPコンソールプロセスにログインする必要があるので、ゲートウェイは、それを有効化しようと試みる顧客アカウントと照合できる。
【0127】
〔ゲートウェイ開始接続を使用したリモートゲートウェイ管理〕
ストレージゲートウェイの実施形態は、例えば、オンプレミス記憶装置として、およびサービス顧客のネットワークと、サービスプロバイダによって提供されたストレージサービスとの間のインタフェースとして、機能し得る。少なくともいくつかの実施形態では、インストールされたストレージゲートウェイは、サービスプロバイダで実装されたゲートウェイ制御技術を通して、有効化、追跡、設定、および管理され得る。
図18は、少なくともいくつかの実施形態において採用され得るゲートウェイ制御アーキテクチャ例を示すハイレベルブロック図である。少なくともいくつかの実施形態では、
図18に示すように、ゲートウェイ制御70は、2つ以上のゲートウェイ制御サーバー74(例えば、ゲートウェイ制御サーバー74A、74B、74C、...)のグループを含み得る。複数のゲートウェイ制御サーバー74は、負荷分散および高可用性を提供し得る。動作中、所与の時に、サービス顧客のネットワーク80上の特定のインストールおよび有効化されたストレージゲートウェイ84が、ゲートウェイ制御サーバー74の特定の1つに接続される。しかし、ストレージゲートウェイ84は、いつか他の時に、異なるゲートウェイ制御サーバー74に接続され得ることに留意されたい。
【0128】
ストレージゲートウェイ84に現在接続されているゲートウェイ制御サーバー74は、要求またはコマンドを中間ネットワーク50を介してストレージゲートウェイ84に送信することにより、ストレージゲートウェイ84を管理し得る。ストレージゲートウェイ84を管理するためにゲートウェイ制御サーバー74から開始される要求は、設定変更要求および動作要求を含み得るが、それらに限らない。しかし、ストレージゲートウェイ84は、クライアントネットワーク80ファイアウォールの後ろに配備され得るので、ゲートウェイ制御サーバー74は、例外規則がゲートウェイ84に対して作成されない限り、ファイアウォールの外側からゲートウェイ84に到達できないことがあり得る。さらに、少なくともいくつかの実施形態では、ストレージゲートウェイ84に対するセキュリティモデルは、サービスプロバイダプロセスを含むがそれに限らない、外部プロセスが、ストレージゲートウェイ84への接続を開始するのを許可されないことを指示し得る。
【0129】
少なくともいくつかの実施形態では、サービスプロバイダがゲートウェイ84への接続を開始するのを許可しないセキュリティモデルを実施している間に、ゲートウェイ制御サーバー74が、要求またはコマンドをストレージゲートウェイ84に送信できるようにするために、ゲートウェイ開始接続を使用したリモートゲートウェイ管理のための方法および装置が提供される。リモートゲートウェイ管理方法では、ゲートウェイは、接続要求を送信することにより、サービスプロバイダへの接続を開始する。少なくともいくつかの実施形態では、負荷分散装置72を介して、特定のゲートウェイ制御サーバー74への接続が確立される。しかし、ゲートウェイ84は、要求メッセージを、ゲートウェイ開始接続を介して、サービスプロバイダに送信しない。代わりに、サービスプロバイダ(例えば、ゲートウェイ制御サーバー74)は、ゲートウェイ84が応答を待つ間、ゲートウェイ84に送信される接続保留要求を保持する。ゲートウェイ84に対する要求を、例えば、ネットワーク管理者プロセス90または、ゲートウェイ84がその上にインストールされているクライアントネットワーク80上の何らかの他のプロセスから、受信すると、サービスプロバイダ(例えば、ゲートウェイ制御サーバー74)は、要求を、サービスプロバイダ(例えば、ゲートウェイ制御サーバー74)が保持し続けているゲートウェイ開始接続を介して、ゲートウェイ84に送信する。ゲートウェイ84は、要求に対する応答も、ゲートウェイ開始接続を介して、サービスプロバイダ80に送信し得る。
【0130】
少なくともいくつかの実施形態では、ゲートウェイ84からの接続がそれに対して確立されるゲートウェイ制御サーバー74(例えば、ゲートウェイ制御サーバー74A)は、接続を登録サービス76に登録し得る。ゲートウェイ制御サーバー74が、それに対する接続を保持していないゲートウェイ74に対する要求を受信すると、ゲートウェイ制御サーバー74は、どのゲートウェイ制御サーバー74が接続を保持しているかを見つけるために、登録サービス76に問合せを行い得、その要求を、ゲートウェイ84への接続を保持するゲートウェイ制御サーバー74に転送し得る。いくつかの実施形態では、代替として、それに対する接続を保持していないゲートウェイ74に対する要求を受信するゲートウェイ制御サーバー74は、その要求を、2つ以上の他のゲートウェイ制御サーバー84に単にブロードキャストし得る。
【0131】
少なくともいくつかの実施形態では、サービスプロバイダ80は、ゲートウェイ開始接続を監視するために、pingプロセスを採用し得る。pingプロセスでは、ゲートウェイ74への接続を保持するゲートウェイ制御サーバー84は、定期的または非定期的にpingメッセージをゲートウェイ84に送信し得る。ゲートウェイ84は、pingメッセージに応答する。ゲートウェイ84が、ある指定されたタイムアウト期間の間pingメッセージに応答していないことを検出すると、ゲートウェイ制御サーバー74は、接続を中断し得、そして、登録サービス76でその接続の登録を抹消し得る。
【0132】
少なくともいくつかの実施形態では、pingメッセージは、定期的な間隔でゲートウェイ(単数または複数)74に送信され得る。少なくともいくつかの実施形態は、接続が信頼できていないゲートウェイ84に対しては短い間隔で、また、接続が一般に信頼できているゲートウェイに対してはもっと長い間隔でpingメッセージが送信されるように、特定のゲートウェイ84の接続の信頼性に従って、ping間隔を調整し得る。ping間隔は、接続が信頼できるままの時は、所与のゲートウェイ84に対して時間とともに増加し得、接続が信頼できていない所与のゲートウェイ84に対しては減少し得る。
【0133】
少なくともいくつかの実施形態では、ゲートウェイ84は、そのゲートウェイ開始接続が終了しているか、または中断されているかを検出し得る。接続が終了していることを検出すると、ゲートウェイ84は、接続を再確立するために、別の接続要求をサービスプロバイダ80に送信し得る。接続は、以前に接続を保持していたものとは異なるゲートウェイ制御サーバー74に再接続され得ることに留意されたい。少なくともいくつかの実施形態では、ゲートウェイ84は、pingメッセージを監視して、pingメッセージが指定されたタイムアウト期間の間、その接続を通して受信されていないと判断することにより、そのゲートウェイ開始接続が中断されていると判断し得る。
【0134】
このようにして、リモートゲートウェイ管理方法では、ゲートウェイ84は、サービスプロバイダへの接続を確立して、サービスプロバイダからの要求(単数または複数)を予期および待機する。サービスプロバイダは、ゲートウェイ84に対する接続保留要求を保持する。ゲートウェイ84に対する要求を受信すると、サービスプロバイダは、その要求を、ゲートウェイ開始接続を通してそれぞれのゲートウェイに転送する。サービスプロバイダおよびゲートウェイの両方が、接続を監視および管理して、接続が何らかの理由で中断した場合に、その中断が検出されて、ゲートウェイ84が接続を再確立できるようにする。
【0135】
図19は、少なくともいくつかの実施形態に従って、ゲートウェイ開始接続を使用したリモートゲートウェイ管理のための方法の流れ図である。600に示すように、ゲートウェイは、接続要求を介して、ゲートウェイ制御サーバーへの接続を確立する。例えば、ゲートウェイは、
図18に示すように、接続要求により、ゲートウェイ制御サーバーとのアウトバウンドSSL/TCP接続を、負荷分散装置を通して確立し得る。
図19の602に示すように、ゲートウェイへの接続が確立されると、ゲートウェイ制御サーバーは、接続を持ち続け、その接続を維持する。
図19の604に示すように、ゲートウェイ制御サーバーは、ゲートウェイに対する要求を受信し得る。例えば、ゲートウェイ制御サーバー74は、
図18に示すように、ゲートウェイ84に対する設定要求または動作要求を、それぞれのネットワーク管理者プロセス90からコンソールプロセス68を介して受信する。ゲートウェイ制御サーバーがゲートウェイに対する要求を受信した後、ゲートウェイ制御サーバーは、
図19の606に示すように、その要求をゲートウェイ開始接続を介して、ゲートウェイに転送する。
【0136】
再度
図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に対する要求を送達できるようにする方法または複数の方法を、提供し得る。
【0137】
いくつかの実施形態では、これを達成するために、サーバー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および72C)を発見するために、登録サービス76をポーリングし得る。ゲートウェイ制御サーバー72(例えば、サーバー72A)は、次いで、626で示すように、登録サービス76を介して発見されたサーバー72の全てに対するゲートウェイ要求を転送し得る。要求によって示されたゲートウェイ84への接続を現在保持するゲートウェイ制御サーバー72(例えば、サーバー72B)は、次いで、要求をそれぞれのゲートウェイ84に送信し得る。
【0138】
図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に送信し得る。
【0139】
少なくともいくつかの実施形態では、要求がゲートウェイ84に配信され、それによって処理されると、ステータスが、ゲートウェイ84から、そのゲートウェイ84への接続を現在保持するゲートウェイ制御サーバー72(例えば、サーバー72B)に返され、それは、続いて、それが以前にそれから転送された要求を受信したゲートウェイ制御サーバー72(例えば、サーバー72A)にステータスが返され、それは次いで、そのステータスをコンソールプロセス68に返す。コンソールプロセス68は、次いで、要求の結果の指示を、その要求を開始した顧客プロセス(例えば、ネットワーク管理者プロセス90)に提供し得る。要求が、何らかの理由で、対象のゲートウェイ84に到達できない場合、例えば、要求によって示されたゲートウェイ84が利用できないか、または見つけることができない場合、コンソールプロセス68は、要求の失敗の指示を、その要求を開始した顧客プロセス(例えば、ネットワーク管理者プロセス90)に提供し得る。顧客プロセスは、必要であるか、または所望であれば、要求を再試行し得る。
【0140】
図22は、少なくともいくつかの実施形態に従って、ゲートウェイ開始接続を確立、監視、および維持するための方法の流れ図である。660に示すように、ゲートウェイはクライアントネットワーク上でインスタンス生成され得る。662に示すように、インスタンス生成後、ゲートウェイは、サービスプロバイダへの安全な接続(例えば、SSL(セキュアソケットレイヤー)/TCP接続)を確立するために、接続要求をサービスプロバイダに送信する。少なくともいくつかの実施形態では、サービスプロバイダにおけるゲートウェイ制御プロセスは、664に示すように、接続を保持し得、その接続を登録サービスに登録し得る。サービスプロバイダによって受信されたゲートウェイに対する要求は、次いで、ゲートウェイ開始接続を通して、ゲートウェイに転送され得る。
【0141】
666に示すように、ゲートウェイ制御プロセスは、接続を中断し得る。例えば、少なくともいくつかの実施形態は、ゲートウェイ制御プロセスは、定期的または非定期的に、接続を通してゲートウェイをpingし得、ゲートウェイがそのpingに応答しないことを検出すると、接続を中断し得る。登録サービスに登録されている場合、ゲートウェイ制御プロセスは、その接続の登録を削除し得る。
【0142】
668に示すように、ゲートウェイは、接続が中断されていることを検出し得る。例えば、少なくともいくつかの実施形態は、ゲートウェイ制御プロセスは、定期的または非定期的に、接続を通してゲートウェイをpingし得る。ゲートウェイは、サービスプロバイダからのpingが接続を通して受信されていないと判断することにより、接続が中断されていることを検出し得る。
【0143】
サービスプロバイダ側またはクライアントネットワーク/ゲートウェイ側のいずれかから、中断された接続を検出するための他の方法が、いくつかの実施形態で採用され得ることに留意されたい。
【0144】
〔ゲートウェイプロキシ〕
前述の
図18は、複数のゲートウェイ制御サーバー74を含むゲートウェイ制御プレーンとして実装されたゲートウェイ制御70を含むサービスプロバイダネットワークを示す。少なくともいくつかの実施形態では、サービスプロバイダネットワークは、複数のゲートウェイプロキシノードを含み、ストレージゲートウェイと通信するためにゲートウェイ制御プレーンによって使用され得る、ゲートウェイプロキシプレーンを含み得る。ゲートウェイプロキシは、ゲートウェイ制御サーバー74に対するゲートウェイ開始接続を保持および管理するために使用され得る。ゲートウェイ84は、ゲートウェイプロキシへの接続を開始し;ゲートウェイプロキシは、ゲートウェイ84への通信チャネルを維持し得、また、同じゲートウェイ84の複数のコピーなどの誤用を防ぐのに役立つだけでなく、サービスプロバイダ(例えば、ゲートウェイ制御サーバー74)とゲートウェイとの間のメッセージの安全な交換を確実にするのに役立ち得る。
【0145】
〔ゲートウェイとプロキシ間のやりとり〕
図23Aは、少なくともいくつかの実施形態に従って、ゲートウェイプロキシプレーンを含むサービスプロバイダネットワークのためのアーキテクチャを大まかに示すブロック図である。ゲートウェイプロキシプレーンは、2つ以上のプロキシノード700、プロキシストア702、外部ネットワークに公開されるクライアント側インタフェースプロセス(CIP)720、および外部ネットワークに公開されない、プロキシノード700とゲートウェイ制御サーバー(単数または複数)74との間のサーバー側インタフェースプロトコル(SIP)710を含み得る。いくつかの実施形態では、ゲートウェイプロキシ700は、ゲートウェイ制御サーバー(単数または複数)74として、同じ物理装置上で実装され得る。他の実施形態では、ゲートウェイプロキシ700は、ゲートウェイ制御サーバー(単数または複数)74とは別の装置上で実装され得る。
【0146】
インストールされて有効化されたストレージゲートウェイ84は、ゲートウェイプロキシノード700への安全な接続要求(例えば、SSL/TCP接続要求)をCIP 700を介して開始する。接続要求を受信するプロキシノード700(この例では、プロキシノード700B)は、この接続を開始したゲートウェイ84のゲートウェイ識別子および顧客アカウント識別子を見つけるために、接続要求に関連付けられたゲートウェイの証明書を検査する。顧客およびゲートウェイ84は、証明書からのゲートウェイ識別子および顧客アカウント識別子を使用して、認証され得る。顧客およびゲートウェイ84の認証後、プロキシノード700は、次いで、それが接続されたゲートウェイ84と通信する、正式な(authoritative)プロキシ700であることを、プロキシストア702に対して公開する。プロキシ(例えば、プロキシ700Aおよび700B)は、特定のゲートウェイへの接続を現在保持する他のプロキシを発見するために、プロキシストア702に問合せを行い得る。
【0147】
少なくともいくつかの実施形態では、プロキシストア702は、データベースとして実現され得る。データベースは、分散型または集中型データベースのいずれかであり得る。少なくともいくつかの実施形態では、プロキシストア702は、次の関連付けを格納し得る:
(ゲートウェイID,アカウントID,プロキシエンドポイント)
【0148】
メッセージがゲートウェイ84に送信される場合、プロキシ700は、どのプロキシ702がゲートウェイ84への接続を有するかを見つけるために、プロキシストア702に問合せを行い得る。少なくともいくつかの実施形態では、プロキシストア702内にゲートウェイ84につき1つのエントリのみが存在する。
【0149】
〔ゲートウェイ制御サーバーおよびプロキシのやりとり〕
図23Bは、少なくともいくつかの実施形態に従い、ゲートウェイプロキシプレーンを通じて、ゲートウェイにメッセージ送信するゲートウェイ制御サーバーを示す。
図23Bに示すように、少なくともいくつかの実施形態では、ゲートウェイ制御サーバー74は、特定のゲートウェイ84に送信される必要のあるメッセージを有し得る。ゲートウェイ制御サーバー74は、SIP 710を介して、メッセージをゲートウェイプロキシノード700に送信する。メッセージを受信するプロキシノード700がゲートウェイ84への接続を保持する場合、プロキシノード700は、その接続を介してメッセージをゲートウェイ84に転送する。しかし、メッセージを受信するプロキシノード700がゲートウェイ84への接続を保持していな場合、プロキシノード700は、どのプロキシノード700がゲートウェイ84への接続を保持するかを判断するために、プロキシストア702に問合せを行い、メッセージを、その正式なプロキシノード700(この例では、プロキシ700B)に転送する。正式なプロキシノード700は、次いで、その接続を介して、そのメッセージをゲートウェイ84に転送する。
【0150】
図23Cは、少なくともいくつかの実施形態に従い、ゲートウェイプロキシプレーンを通じて、ゲートウェイ制御サーバー要求に応答するゲートウェイを示す。少なくともいくつかの実施形態では、ゲートウェイ84からゲートウェイ制御サーバー74への応答は、ゲートウェイ84からの応答を受信するCIP 720から始まる、
図23Bに示すように、ゲートウェイ制御サーバー74からゲートウェイ84への要求が辿った逆の経路を辿り得る。CIP 720は、それが要求をそこから受信したプロキシノード(プロキシ700B)に応答を送信する。プロキシ700Bは、応答がどのゲートウェイ制御サーバー74に対するかを知らないことに留意されたい。プロキシ700Bは、それが要求をそこから受信したプロキシノード(プロキシ700A)に応答を送信することにより、要求を完了する。プロキシ700Aは、次いで、応答を、要求を開始したゲートウェイ制御サーバー74に送信する。
【0151】
〔接続の監視および管理〕
少なくともいくつかの実施形態では、プロキシによってゲートウェイ開始接続の管理において使用される、pingプロセスが実装され得る。少なくともいくつかの実施形態では、ゲートウェイ84は、前述のように、ゲートウェイプロキシ700への安全な接続、例えば、SSL/TCP接続を、CIP 720を介して開始する。ゲートウェイプロキシ700は、定期的または非定期的にpingメッセージをゲートウェイ84に送信し得る。各pingメッセージは、タイムアウトを含み得;ゲートウェイ84が時間間隔内にpingを受信しない場合、それは、現在の接続を閉じ、CIP 720を介して接続を再度開始する。少なくともいくつかの実施形態では、いずれの時点においても、プロキシストア702内には1つのみのプロキシゲートウェイマッピングが存在する。ゲートウェイプロキシ700がpingを送信し、ゲートウェイ84から応答を得ない場合、それは、ゲートウェイ84へのその接続を閉じる。
【0152】
少なくともいくつかの実施形態では、全てのping上で、ゲートウェイプロキシ700は、プロキシストア702に問合せを行い、別のプロキシ700がゲートウェイ84への接続を公開しているかどうかを判断することにより、それが所与のゲートウェイ84に対する正式なプロキシであるかどうかをチェックする。それが正式なプロキシではない場合、プロキシ700はゲートウェイ84への接続を閉じる。これは、プロキシノード700に対する複数の接続が同じゲートウェイ84によって開始されている場合、例えば、ゲートウェイ84の証明書が別のゲートウェイにコピーされて、両方のゲートウェイが接続を開始しようとする場合に対処し得る。
【0153】
図23Dは、少なくともいくつかの実施形態に従った、ゲートウェイプロキシプレーンに対するpingメッセージ交換を示す。少なくともいくつかの実施形態では、ゲートウェイプロキシに関して、pingはエンドツーエンドpingである。pingを行う理由は、TCP「キープアライブ」機能が2時間の最小間隔を有するが、他方、実施形態は接続のタイムアウトまたは終了をもっと短い時間間隔で検出する必要があり得ることである。
【0154】
少なくともいくつかの実施形態では、pingは、
図23Dに示される経路を辿る。ゲートウェイプロキシノード(この例では、プロキシ700B)は、pingメッセージをSIP 710を介して送信する。メッセージは、ゲートウェイプロキシノード700のうちの1つ、この例ではプロキシ700A、に行きあたる。プロキシ700Aは、プロキシストア702に問合せを行うことにより、ゲートウェイ84に対する正式なプロキシ700(この例では、プロキシ700B)を見つけ、pingメッセージをプロキシ700Bに転送する。プロキシ700Bは、メッセージをゲートウェイ84に転送し、ゲートウェイ84からの応答は同じ経路を辿る。少なくともいくつかの実施形態では、プロキシ700Bがpingに対する応答をゲートウェイ84から取得すると、それは、そのゲートウェイ84に対するそのping間隔を増やす。ゲートウェイ84接続が中断すると、ping間隔が最小値にリセットされ得る。このようにして、貧弱なゲートウェイとプロキシ間の接続はより頻繁にping送信される傾向がある。
【0155】
プロキシ700が最初にpingメッセージをSIP 710に送信することによりpingメッセージを開始する、前述したエンドツーエンドping方法は、ゲートウェイプロキシノード700が制御プレーンから到達可能であることを保証する役に立ち得る。pingが失敗すると、プロキシ700は、(例えば、ネットワーク分割のために)それが制御プレーンから到達可能ではないと仮定して、ゲートウェイ84への接続を閉じ得る。
【0156】
〔ロングポーリング接続を使用したリモートゲートウェイ管理〕
いくつかの実施形態では、ロングポーリング技術がゲートウェイ開始接続に対して使用され得る。再度
図18を参照すると、ロングポーリングは、サーバー(例えば、ゲートウェイ制御サーバー74)からクライアント(例えば、ストレージゲートウェイ84)への情報のプッシュ型配信をエミュレートするポーリング技術である。ロングポーリング技術では、クライアント(例えば、ストレージゲートウェイ84)がサーバー(例えば、ゲートウェイ制御サーバー74)へのロングポーリング接続を開始して、標準的なクライアント/サーバーポーリングにおけるように、サーバーからの情報を要求する。しかし、サーバーが、クライアントに対して利用可能ないかなる情報も有していない場合、空の応答を送信する代わりに、サーバーはクライアントの要求を保持して、情報がそのクライアントに対して利用可能になるのを待機する。情報が利用可能になると、サーバー(例えば、ゲートウェイ制御サーバー74)は、クライアントのロングポーリング要求に応答し得、その応答は、クライアント(例えば、ストレージゲートウェイ84)に送信される情報を含む。
【0157】
ロングポーリングを使用するゲートウェイ開始接続方法では、ゲートウェイ84は、ロングポーリング要求を介して、ゲートウェイ制御サーバー74への接続を確立する。例えば、ゲートウェイ84は、
図18に示すように、ロングポーリング要求により、負荷分散装置72を通してゲートウェイ制御サーバー74とのアウトバウンドSSL/TCP接続を確立し得る。ゲートウェイ制御サーバー74は、要求を持ち続け、その接続を維持する。ゲートウェイ制御サーバー74は、ゲートウェイ84に対する要求を受信する。例えば、ゲートウェイ制御サーバー74は、
図18に示すように、ゲートウェイ84に対する設定要求または動作要求を、それぞれのネットワーク管理者プロセス90からコンソールプロセス68を介して受信し得る。ゲートウェイ制御サーバー74がゲートウェイ84に対する要求を受信した後、ゲートウェイ制御サーバー74は、ゲートウェイのロングポーリング要求に対する応答を送信し;その応答はゲートウェイ84に対する要求(例えば、設定要求または動作要求)を含む。いくつかの実施形態では、代替として、ゲートウェイ制御サーバー74は、受信した要求を、ロングポーリング要求に応答することなく、ゲートウェイ制御サーバーが維持しているゲートウェイに対して確立された接続上のゲートウェイ84に送信し得る。
【0158】
〔ストレージゲートウェイ上のブロックストレージ入出力動作〕
ストレージゲートウェイの実施形態は、前述のように、キャッシュゲートウェイまたはシャドーイングゲートウェイとして実現され得る。実施形態例では、キャッシュゲートウェイは、最も頻繁にアクセスされるデータに対してオンプレミス(ローカル)ストレージを、また本質的に無限の総容量に対してストレージサービスによって提供されたリモートストレージを利用する、オンプレミスブロックベースのアプライアンスと考えられ得る。
図6は、キャッシュゲートウェイの一実施形態が実現される、ネットワーク環境例のアーキテクチャおよびその中のデータフローを大まかに示すハイレベルブロック図である。キャッシュゲートウェイは、サービス顧客のローカルネットワークと、サービスプロバイダのネットワークにおけるストレージサービスとの間のインタフェースとして機能し得る。少なくともいくつかの実施形態では、キャッシュゲートウェイは、iSCSIインタフェースを顧客ネットワーク上のプロセスに公開し得るが、いくつかの実施形態では、他のデータインタフェースが公開され得る。そのため、キャッシュゲートウェイは、クライアントネットワーク内で動作するデータインタフェースターゲット(例えば、iSCSIターゲット)のように見え得、例えば、キャッシュゲートウェイは、クライアントネットワーク上にストレージアレイとして現れ得る。キャッシュゲートウェイは、例えば、論理ユニット番号(LUN)、例えば、ハードディスクなどのブロックベースの記憶装置を、クライアントネットワーク内の装置上で実行するプロセスに公開し得る。プロセスは、次いで、LUNとのデータセッション(例えば、SCSIセッション)を開始し、データコマンド(例えば、SCSIコマンド)をキャッシュゲートウェイに送信し得る。
【0159】
図24は、少なくともいくつかの実施形態に従った、キャッシュゲートウェイのための全体アーキテクチャおよびそのデータ入出力動作を示す。一般に、キャッシュゲートウェイ800では、書込みデータが顧客プロセス830から受信されると、そのデータが書込みログ814に付加され;そのデータは、後に、アップロードプロセスによって書込みログ814からリモートデータストア820にアップロードされる。ブロックに関連した書込みデータに対するメタデータ(例えば、ブロック位置、ブロックタイプ、オフセット(単数または複数)および長さ)が、メタデータストア806に追加され得る。少なくともいくつかの実施形態では、メタデータストア806は、データベース、例えば、Berkelyデータベース(BDB)として実現され得る。キャッシュゲートウェイ800は、少なくともいくつかのデータ(例えば、頻繁に、および/または最近使用されたデータ)もローカルキャッシュ812にローカルにキャッシングし得、それは、いくつかの読取りが、リモートデータストア820からの代わりに、ローカルキャッシュ812から満足され得るので、顧客の読取り要求に対する応答を改善し得る。ローカルキャッシュ812は、読取りキャッシュとも呼ばれ得る。メタデータストア806は、ローカルにキャッシュされた読取りデータに関する位置および他の情報もローカルキャッシュ812内に含み得る。
図24は、1つのメタデータストア806が読取りキャッシュエントリおよび書込みキャッシュエントリの両方を含む実施形態を示しているが、いくつかの実施形態では、読取りキャッシュエントリおよび書込みキャッシュエントリが別々のメタデータストア806内に維持され得る。少なくともいくつかの実施形態では、顧客プロセス830からのデータ読取り要求が、可能であれば、書込みログ814またはローカルキャッシュ812から提供され得;そうでない場合は、要求されたデータがリモートデータストア830からフェッチされ得る。読取り要求を満足するためにフェッチおよび(例えば、ブロックバッファ804に)バッファリングされる、ローカルキャッシュ812またはリモートデータストア830からのデータは、そのデータに対する書込みログ814内に更新が存在する場合、そのデータが、読取り要求を満足するために顧客プロセス830に返される前に、書込みログ814からのデータで更新され得る。
【0160】
少なくともいくつかの実施形態では、書込みログ814およびデータキャッシュ812の両方が、共通のローカルのブロックベースデータストア810内に実装され得る。ブロックデータストア810は、揮発性メモリ、不揮発性メモリ、またはその組合せで実装され得る。ブロックデータストア810は、キャッシュゲートウェイ800がその上に実装される物理装置内の物理メモリ上、キャッシュゲートウェイ800がその上に実装される物理装置に外部のメモリ上(例えば、顧客によりゲートウェイ800に割り当てられた1つまたは複数の記憶装置上)、またはそれらの組合せ上に実装され得る。
【0161】
書込みログデータおよびキャッシングされた読取りデータはともに、ブロックデータストア810に、ブロックストレージフォーマットで、例えば、4MB(4メガバイト)ブロックとして、格納され得る。ブロックデータストア810内のキャッシングされた読取りブロックは、読取りキャッシュとみなされ得、ブロックデータストア内の書込みログブロックは書込みバッファとみなされ得る。メタデータストア806は、ブロックデータストア810内の読取りキャッシュ812ブロックおよび書込みログ814ブロックの両方を見つけるためのエントリを含み得る。読取り要求を満足するために、ブロックが読取りキャッシュ812から(または書込みログ814から)読み取られ得、ブロックが、アップロードプロセスにより、書込みログ814からリモートデータストア820にアップロードされ得る。少なくともいくつかの実施形態では、書込みブロックを書込みログ814からアップロードする際に、アップロードされたデータが、新しい読取りブロックとして読取りキャッシュ812に追加され得る。アップロードされた書込みログ814ブロックは、ブロックデータストア810内で「空き」として印を付けられ得、その変更をブロックデータストア810に反映するために、メタデータストア806が適切に更新され得る。
【0162】
少なくともいくつかの実施形態では、書込み要求は、ブロックの比較的ごく小さな部分のみを修正または変更し得る。従って、少なくともいくつかの実施形態では、ブロックを書込みログ814からアップロードする際に、例えば、前述のように、データ重複排除技術を使用して、変更された部分のみがリモートデータストア820にアップロードされ得る。さらに、書込みログ814は、異なる書込みログ814ブロックに格納された1つまたは複数の重なり合う書込み(すなわち、同一の論理ブロックへの書込み)を含み得る。書込みデータを書込みログ814からアップロードする際に、2つ以上の重なり合う書込みがアップロードのために結合され得る。この結合は、データストアの外部で、例えば、ブロックバッファ804内のブロック内で実行され得;書込みログ814内のブロック自体は変更されない。
【0163】
前述のように、少なくともいくつかの実施形態では、書込みブロックを書込みログ814からアップロードする際に、アップロードされたデータが、新しい読取りブロックとして読取りキャッシュ812に追加され得る。少なくともいくつかの場合、例えば、書込みブロックが多数の変更を含む場合、および/または書込みブロックの大きな部分が変更されている場合、書込みブロックは、新しい読取りブロックとして単に読取りキャッシュ812にコピーされて、メタデータストア806が更新される。しかし、前述のように、書込み要求は、書込みログ814ブロックの比較的小さな部のみを修正または変更し得る。従って、少なくともいくつかの場合、それぞれの対応するブロックがまず、リモートデータストア820からフェッチされ得、そのフェッチされたブロックが、読取りキャッシュ812内のブロック全体が最新であることを保証するために、そのブロックを読み取りキャッシュ812に追加する前に、読取りログ814からの変更で更新される。述べたように、書込みログ814は、異なる書込みログ814ブロック内に格納された2つ以上の重なり合う書込み(すなわち、同一の論理ブロックへの書込み)を含み得、従って、フェッチされブロックが1つまたは複数の書込みログ814ブロックに従って更新され得る。少なくともいくつかの実施形態では、フェッチされたブロックは、読取りキャッシュ812に追加される前に、書込みログ804ブロックからの更新のために、ブロックバッファ804に格納され得る。
【0164】
一般に、新しい書込みは、ブロックデータストア810内の以前に空きとされた書込みログ814ブロックに格納されるが;ブロックデータストア810が、いっぱいまたは、ほぼいっぱいであるとして検出される場合、1つまたは複数のキャッシングされた読取りブロックが、書込みデータのためのスペースを空けるため、パージされ得る。読取りブロックは、他の理由のため、例えば、新しい読取りデータのためにスペースを空けるため、ブロックデータストア810からパージされ得ることに留意されたい。様々な実施形態では、読取りブロックをブロックデータストア810からパージするために、異なる技術またはポリシーが使用され得る。例えば、いくつかの実施形態では、最も古い読取りブロックをブロックデータストア810からパージするために、最低使用頻度(LRU)ポリシーが適用され得る。
【0165】
少なくともいくつかの実施形態では、キャッシュゲートウェイ800は、リモートデータストア820上の2つ以上のボリューム822にインタフェースを提供し得る。少なくともいくつかの実施形態では、別個の書込みログ814および読取りキャッシュ812が、各ボリューム822に対して、キャッシュゲートウェイ800によって維持され得る。少なくともいくつかの実施形態では、2つ以上のボリューム822に対する別個の書込みログ814および読取りキャッシュ812が、同一のブロックデータストア810内に実現され得る。しかし、少なくともいくつかの実施形態では、異なるボリューム822に対する書込みログ814および読取りキャッシュ812が、ブロックデータストア810上で論理的または物理的に分離され得る。さらに、少なくともいくつかの実施形態では、別個のメタデータストア806が別個のボリューム822に対して維持され得る。
【0166】
図24は、読取りキャッシュ812および書込みログ814がブロックデータストア810内で論理的に別個であるとして示しているが、少なくともいくつかの実施形態では、所与のボリューム822に対する読取りブロックおよび書込みログブロックが、ブロックデータストア810内で物理的に混合され得る。例えば、第1の物理ブロックが読取りブロックであり得、第2〜第5の物理ブロックが書込みブロックであり得、次の2つの物理ブロックが読取りブロックであり得、以下同様に続く。
【0167】
前述のように、
図24は、少なくともいくつかの実施形態に従った、キャッシュゲートウェイのための全体アーキテクチャおよびそのデータ入出力動作を示す。しかし、ストレージゲートウェイは、例えば、
図7に示すように、シャドーイングゲートウェイとしても設定され得る。
図25は、少なくともいくつかの実施形態に従った、シャドーイングゲートウェイのための全体アーキテクチャおよびそのデータ入出力動作を示す。シャドーイングゲートウェイ801は、
図24でキャッシュゲートウェイ800に対して例示および説明したのと同様のアーキテクチャ、構成要素、およびデータ入出力動作を含み得るが、シャドーイングゲートウェイ801は、読取りキャッシュ812に対するメタデータストア806内に読取りキャッシュ812またはエントリを含まず、また、キャッシュゲートウェイに対して前述した読取り関連動作が実行されないことを除く。シャドーイングゲートウェイに対する書込み動作は、書込みが読取りキャッシュに追加されないことを除いて、キャッシュゲートウェイに対するものと同様であり得る。さらに、顧客プロセス(単数または複数)830からの読取りおよび書込み要求が、ローカルデータストア840に転送される。しかし、書込み要求からの書込みデータは、リモートデータストア820にシャドーイングされる。少なくともいくつかの実施形態では、書込みデータが、ブロックデータストア810内の書込みログ814に付加され、書込みログ814内の書込みデータが、定期的または非定期的に、リモートデータストア820にアップロードされるが、それは、ローカルデータストア840上の一次データストアのスナップショット824を保持する。
【0168】
少なくともいくつかの実施形態では、例えば
図24に示すように、キャッシュゲートウェイに対して、および、例えば
図25に示すように、シャドーイングゲートウェイに対して、書込みログ814および書込み動作が、書込み性能に関して最適化され得る。少なくともいくつかの実施形態では、ゲートウェイ800の少なくともいくつかの入出力動作は、ブロックデータストア810を順次データストアとして使用し得る。特に、書込みログ814は、順次データ構造として扱われ得、書込みログ814に対する書込み動作は、順次書込み動作として実現され得る。少なくともいくつかの実施形態では、書込みログ814は、線形または円形キューとして実装された1次元データバッファとして扱われ得る。キャッシュゲートウェイについて、リモートデータストア820からダウンロードされたデータは、顧客プロセス(単数または複数)830からゲートウェイ800に送信された書込みデータとは別の読取りキャッシュ812に格納され得、書込みデータは書込みログ814に格納される。キャッシュゲートウェイおよびシャドーイングゲートウェイの両方について、書込み要求は、顧客プロセス(単数または複数)830から任意の順序(すなわち、書込み要求は順序付けされていないか、または非順次であり得る)で受信され得、顧客プロセス(単数または複数)830から受信された、順序付けされていない書込み要求によって示される書込みデータは、任意のサイズであり得、対象とするデータストア内の任意の位置またはオフセットに向けられ得る。しかし、順序付けされていない書込み要求内で顧客プロセス(単数または複数)830から受信された任意の書込みデータは、書込みログ814に連続して書き込まれ付加される。少なくともいくつかの実施形態では、付加は、サブブロックレベルで行われ得る;すなわち、書込みデータの2つ以上のインスタンスが、書込みログ814内の同一ブロック内で付加され得る。書込みログ814に対する更新のためのメタデータ(例えば、書込みログ814ブロック内の書込みデータのオフセットおよび長さ、ならびに対象とするデータストア内のオフセット)が、メタデータストア806内に格納される。
【0169】
図26は、少なくともいくつかの実施形態に従って、ブロックデータストア上の書込みログに書き込むための方法の流れ図である。書込みログ814を順次データ構造として、例えば、1次元キューとして、実現することは、入出力ハンドラー802が、顧客プロセス(単数または複数)830から受信された任意の書込みデータのブロックデータストア810へ順次書込みすることを実行可能にし得る。850に示すように、1つまたは複数の書込み要求が、顧客プロセス830から受信され得る。書込み要求は、任意の順序(すなわち、書込み要求は順序付けされていない)で受信され得、顧客プロセス(単数または複数)830から受信された書込み要求によって示される書込みデータは、任意のサイズであり得、対象とするデータストア内の任意の位置またはオフセットに向けられ得る。852に示すように、任意の書込みデータをブロックデータストア810上の書込みログ814に連続して書くために、順次書込みが実行され得る。854に示すように、ブロックデータストア810への順次書込み内のデータが、ブロックデータストア810内の隣接する位置(例えば、セクター)、例えば、ブロックデータストア810を実現するディスク記憶装置上の隣接する位置(例えば、セクター)に書き込まれ得る。隣接する位置は、同一の書込みログブロック内であり得るが、必ずしもそうである必要はないことに留意されたい。記憶装置への順次書込みを使用することは、基礎となる記憶装置上でランダムセクターシークを実行する必要性を減らすか、また取り除き得る。ランダムセクターシークを実行することは、入出力動作にマイナスの影響を及ぼす。例えば、ディスク入出力スループットは、連続的な書込みを使用することにより、ランダムセクターシークを必要とする非順次、非連続な書込みと比較した場合、10倍〜100倍だけ増加し得る。856に示すように、メタデータストア806は、書込みログ814への書込みを反映するために、適切に更新され得る。少なくともいくつかの実施形態では、書込みに対するメタデータは、メタデータストア806に連続して追加され得るが、それは、メタデータがメタデータストア806にもっとランダムに追加された場合よりも、書込みログ814内のデータにさらに効率的にアクセスする必要があるプロセスによるメタデータストア806の読取りを可能にし得る。
【0170】
少なくともいくつかの実施形態では、全ての書込みログ814データをブロックデータストア810内の隣接する位置に書き込むことは必ずしも可能ではない。例えば、2つの書込みログ814ブロック間に読取りキャッシュ812ブロックがあり得る。従って、854で、実施形態は、書込みログ814データを隣接する位置に可能な限りたくさん書き込もうとし得るが、いくつかの位置(例えば、ブロック)が使用されているとして印が付けられている場合は、その位置をスキップする必要があり得る。メタデータストア806は、たとえデータが隣接するブロック内に格納されていなくても、書込みログ814データを見つけることができるように、適切に更新される。
【0171】
前述のように、論理的に、任意の書込みデータが書込みデータの終わりに付加される。これを実現するために、少なくともいくつかの実施形態では、ブロックバッファ804が、書込みログ814で使用されるのと同じサイズのブロック(例えば、4MBブロック)で確保される。割り当てられたバッファブロックがいっぱいになるまで付加される。別のバッファブロックが、新書込みデータを付加するために割り当てられ得;いっぱいのバッファブロックは、ブロックデータストア上の書込みログ814に非同期的かつ連続してフラッシュされ得る。書込みログ814内のいっぱいのブロックは、アップロードインタフェースにより、非同期的かつ連続して、リモートデータストア820にアップロードされ得;書込みログ814からアップロードされたブロックは、「空き」として印を付けられ得る。
【0172】
図24に示すキャッシュゲートウェイ実施態様では、データ整合性を維持するために、読取りデータは、ゲートウェイ800が要求されたデータを顧客プロセス830に返す前に、書込みデータと統合される必要があり得る。
図27は、キャッシュゲートウェイの少なくともいくつかの実施形態に従って、読取り要求を満足するための方法の流れ図である。860に示すように、読取り要求が顧客プロセス830から受信される。少なくともいくつかの実施形態では、読取り要求が顧客プロセス830から受信されると、ゲートウェイ800は、メタデータストア806内で読取りのデータ範囲を調べて、読取り範囲に重なり合う書込みログ814内にデータがあるかどうかを判断する。
図27の862で、重なり合うデータが読取り範囲を完全にカバーする書込みログ814内で見つかる場合、864に示すように、書込みログ814からのデータが、読取り要求を直接満足するために使用され得る。そうでなければ、
図27の866で、重なり合うデータが、読取り範囲を部分的カバーする書込みログ814内で見つかる場合、868に示すように、データがそのデータ範囲に対して存在するかどうか、読取りキャッシュ812がチェックされ得る。データが読取りキャッシュ812内にある場合、870に示すように、1つまたは複数のデータブロック(単数または複数)が読取りキャッシュ812からフェッチされ得る。そうでなければ、872に示すように、1つまたは複数のブロックがリモートデータストア820からフェッチされ得る。いくつかの実施形態では、ブロックは、いくつかの読取り要求を満足するために、読取りキャッシュおよびリモートデータストア820の両方からフェッチされ得ることに留意されたい。
図27の874で、フェッチされたデータブロックは、次いで、書込みログ814からの変更されたデータで更新され得る。
図27の876で、変更されたデータが、読取り要求を満足するために、要求しているプロセス830に返され得る。いくつかの実施形態では、
図27の878に示すように、更新されたブロックが読取りキャッシュ812に追加され得る。
【0173】
いくつかの実施形態では、読取り要求を満足するためのリモートデータストア820から読み取られたブロックが、読取りキャッシュ812に追加され、ブロックを要求しているプロセス830に送信する前に、書込みログ814から更新され得る。あるいは、ブロックは、例えば、ブロックバッファ804にバッファリングされ、そのバッファ内で更新され得る。更新されたブロックは、次いで、バッファ804から、要求しているプロセス830に送信され、バッファ804から読取りキャッシュ814に追加され得る。
【0174】
いくつかの実施形態では、読取り要求を満足するために使用される読取りキャッシュ812内のブロックが、適切な位置で書込みログ814からのデータで更新され、次いで、読取り要求を満足するために読取りキャッシュ812から要求しているプロセス830に送信され得る。あるいは、ブロックが、読取りキャッシュ812から読み取られて、例えば、ブロックバッファ804にバッファリングされ、そのバッファ内で更新され得る。更新されたブロックは、次いで、バッファ804から、要求しているプロセス830に送信され、バッファ804から、読取りキャッシュ814に追加され得る。バッファ内に読み取られた読取りキャッシュ812内の以前のバージョンのブロックは、空きとして印を付けられ得、かつ/または新しく更新されたブロックで上書きされ得る。
【0175】
図27の866で、書込みログ814内に重なり合うデータがない場合は、
図27の880に示すように、読取りキャッシュ812は、読取り要求が読取りキャッシュ812から満足できるかどうかをチェックし得る。
図27の880で、読取り要求が読取りキャッシュ812から満足できる場合は、
図27の882に示すように、読取りキャッシュ812からのデータが、読取り要求を満足するために顧客プロセス830に返され得る。
図27の880で、読取り要求が読取りキャッシュ812から満足できない場合には、
図27の884に示すように、1つまたは複数のデータブロック(単数または複数)がリモートデータストア820からフェッチされ得る。
図27の886に示すように、フェッチされたブロックからのデータが、読取り要求を満足するために顧客プロセス830に返され得る。いくつかの実施形態では、
図27の888に示すように、読取り要求を満足するためにリモートデータストア820からフェッチされたブロックが、読取りキャッシュ812に追加され得る。
【0176】
少なくともいくつかの実施形態では、ゲートウェイ800は、顧客が、取得されてリモートデータストア820にアップロードされる書込みログ814のスナップショットを、例えば、サービスプロバイダによって提供されたコンソールプロセスを介して、要求できるようにし得る。追加で、または代わりに、ゲートウェイ800は、定期的または非定期的に、書込みログ814のスナップショットを自動的に取得してリモートデータストア820にアップロードし得る。書込みログ814のスナップショットをアップロードすることは、例えば、データの、ハードウェアおよびソフトウェア障害からの保護を提供し得る。少なくともいくつかの実施形態では、スナップショットは、ある時点のスナップショットであり;スナップショットが要求された時点において書込みログ内にある変更されたデータのみがスナップショット内にアップロードされる。少なくともいくつかの実施形態では、キャッシュゲートウェイ実施態様について、変更されたデータがアップロードされる場合、将来の読取りのために、データがリモートデータストア820からダウンロードされる必要がないように、ローカルに格納された読取りキャッシュ812も、アップロードされているデータの少なくとも一部で更新され得る。変更されたデータがリモートデータストア820にアップロードされた後、書込みログ814内のデータおよびメタデータストア806内の対応するデータが廃棄でき(例えば、「空き」と印を付けられる)、そのスペースが再使用できる。
【0177】
〔リモートデータストアにアップロードするための書込みデータの結合〕
前述のように、書込みログブロックは、定期的または非定期的に、リモートデータストアにアップロードされ得る。少なくともいくつかの実施形態では、書込みログブロックをアップロードする際にデータ重複排除技術が使用され得る。しかし、説明したデータ重複排除技術は、アップロードされるためにステージされるブロック(単数または複数)内にあるどのデータに関するアップロードプロセス中にも動作する。顧客プロセス(単数または複数)からの任意の書込みが順番に書込みログに付加され、また、顧客プロセス(単数または複数)は対象とするデータストア内の同じ位置に複数回書込み得るので、書込みログブロックまたは複数のブロックは、対象とするデータストアの同じ位置(例えば、オフセットおよび/または範囲)に向けられた2つ以上の書込みを含み得る。
【0178】
従って、少なくともいくつかの実施形態は、書込みログブロック内の書込みデータに対して、アップロード前結合(pre−upload coalescing)技術を実装し得る。この技術では、アップロードのためにステージされている書込みログブロック(または複数のブロック)に対するメタデータが、対象とするデータストア内の同じ位置に向けられている書込みログブロック(単数または複数)内の2つ以上の書込みがあるかどうかを判断するために検査され得る。所与の位置に対する複数の書込みがある場合、アップロードされるバッファブロックを構築する際に、前の書込み(単数または複数)が抑制され得る。このようにして、アップロードのためにアップロードプロセスに渡されるブロックは、例えば、データ重複排除技術に従って、アップロード前結合技術が適用されていなければ存在し得る、同じ位置へのおそらくは2つ以上の書込みではなく、所与の位置への1つだけの書込み(最新の書込み)を含み得る。
【0179】
〔例示説明となるシステム〕
少なくともいくつかの実施形態では、本明細書で説明する1つまたは複数のストレージゲートウェイ技術のうちの一部または全部を実装するコンピュータシステムは、
図28に示すコンピュータシステム3000などの、1つもしくは複数のコンピュータアクセス可能媒体を含むか、またはそれにアクセスするように構成される汎用コンピュータシステムを含み得る。図示した実施形態では、コンピュータシステム3000は、入力/出力(I/O)インタフェース3030を介してシステムメモリ3020に結合された1つまたは複数のプロセッサ3010を含む。コンピュータシステム3000は、入出力インタフェース3030に結合されたネットワークインタフェース3040をさらに含む。
【0180】
様々な実施形態では、コンピュータシステム3000は、1つのプロセッサ3010を含む単一プロセッサシステム、またはいくつかの(例えば、2、4、8、または別の適切な数)プロセッサ3010を含むマルチプロセッサシステムであり得る。プロセッサ3010は、命令を実行できる任意の適切なプロセッサであり得る。例えば、様々な実施形態では、プロセッサ3010は、x86、PowerPC、SPARC、またはMIPS ISA、もしくは任意の他の適切なISAなどの、任意の様々な命令セットアーキテクチャ(ISA)を実装する汎用または組込みプロセッサであり得る。マルチプロセッサシステムでは、プロセッサ3010の各々は、一般に、同じISAを実装し得るが、必ずしもその必要はない。
【0181】
システムメモリ3020は、プロセッサ(単数または複数)3010によってアクセス可能な命令およびデータを格納するように構成され得る。様々な実施形態では、システムメモリ320は、スタティックランダムアクセスメモリ(SRAM)、シンクロナスダイナミックRAM(SDRAM)、不揮発性/フラッシュ型メモリ、または任意の他のタイプのメモリなどの、任意の適切なメモリ技術を使用して実装され得る。図示した実施形態では、ストレージゲートウェイ技術のための、前述した方法、技術、およびデータなどの、1つまたは複数の所望の機能を実現する、プログラム命令およびデータが、システムメモリ3020内にコード3025およびデータ3026として格納される。
【0182】
一実施形態では、入出力インタフェース3030は、ネットワークインタフェース3040または他の周辺インタフェースを含め、プロセッサ3010、システムメモリ3020、および装置内の任意の周辺装置の間の入出力トラフィックを調整するように構成され得る。いくつかの実施形態では、入出力インタフェース3030は、1つの構成要素(例えば、システムメモリ3020)からのデータ信号を別の構成要素(例えば、プロセッサ3010)による使用に適したフォーマットに変換するため、任意の必要なプロトコル、タイミング、または他のデータ変換を実行し得る。いくつかの実施形態では、入出力インタフェース3030は、例えば、PCI(Peripheral Component Interconnect)バス規格の変形またはユニバーサルシリアルバス(USB)規格などの、様々なタイプの周辺機器用バスを通して取り付けられた装置に対するサポートを含み得る。いくつかの実施形態では、入出力インタフェース3030の機能は、例えば、ノースブリッジおよびサウスブリッジなどの、2つ以上の別個の構成要素に分割され得る。また、いくつかの実施形態では、システムメモリ3020へのインタフェースなどの、入出力インタフェース3030の機能の一部または全部が、プロセッサ3010に直接組み込まれ得る。
【0183】
ネットワークインタフェース3040は、コンピュータシステム3000と、ネットワークまたは複数のネットワーク3050に接続された他の装置3060(例えば、本明細書に記載される他の図に示されるような、他のコンピュータシステムまたは装置など)との間でデータが交換できるように構成され得る。様々な実施形態では、ネットワークインタフェース3040は、例えば、イーサネット(登録商標)ネットワークのタイプなどの、任意の適切な有線または無線の一般的なデータネットワークを経由した通信をサポートし得る。さらに、ネットワークインタフェース3040は、アナログ音声ネットワークもしくはデジタルファイバー通信ネットワークなどの電気通信/電話網を介した、ファイバーチャンネルSANなどのストレージエリアネットワークを介した、または任意の他の適切なネットワークおよび/もしくはプロトコルを介した、通信をサポートし得る。
【0184】
いくつかの実施形態では、システムメモリ3020は、ストレージゲートウェイ技術の実施形態の実現のため、他の図に関連して前述したプログラム命令およびデータを格納するように構成されたコンピュータアクセス可能媒体の一実施形態であり得る。しかし、他の実施形態では、プログラム命令および/またはデータは、異なるタイプのコンピュータアクセス可能媒体上で、受信、送信、または格納され得る。一般的に言えば、コンピュータアクセス可能媒体は、磁気または光媒体、例えば、入出力インタフェース3030を介してコンピュータシステム3000に結合されたディスクまたはDVD/CD、などの、持続性記憶媒体またはメモリ媒体を含み得る。持続性コンピュータアクセス可能記憶媒体は、コンピュータシステム3000のいくつかの実施形態で、システムメモリ3020または別のタイプのメモリとして含まれ得る、RAM(例えば、SDRAM、DDR SDRAM、RDRAM、SRAMなど)、ROMなどの、任意の揮発性または不揮発性媒体も含み得る。さらに、コンピュータアクセス可能媒体は、ネットワークインタフェース3040を介して実現され得るような、ネットワークおよび/または無線リンクなどの通信媒体を介して伝達された、電気、電磁気、またはデジタル信号などの、伝送媒体または信号を含み得る。
【0185】
〔結論〕
様々な実施形態は、コンピュータアクセス可能媒体に関する前述の説明に従って実現される命令および/またはデータの受信、送信または格納をさらに含み得る。一般的に言えば、コンピュータアクセス可能媒体は、例えば、磁気もしくは光媒体(例えば、ディスクもしくはDVD/CD−ROM)、RAM(例えば、SDRAM、DDR、RDRAM、SRAMなど)、ROMなどの揮発性もしくは不揮発性媒体、などの記憶媒体またはメモリ媒体、ならびに、ネットワークおよび/もしくは無線リンクなどの通信媒体を介して伝達される、電気、電磁気、もしくはデジタル信号などの、伝送媒体または信号を含み得る。
【0186】
図に示し、本明細書で説明したような様々な方法は、方法の例となる実施形態を表す。それらの方法は、ソフトウェア、ハードウェア、またはそれらの組合せで実現され得る。方法の順序は変更され得、また、様々な要素が追加、再順序付け、結合、省略、修正など、され得る。
【0187】
本開示の利益を得る当業者には明らかであるように、様々な修正および変更が行われ得る。かかる修正および変更の全てを包含することが意図され、したがって、前述の説明は、制限的な意味よりもむしろ、例示的な意味と見なされる。
【0188】
様々な実施形態が、以下の付記項を考慮して、記述できる:
付記項1.顧客ネットワーク上のストレージゲートウェイによって、リモートデータストアをサービスプロバイダの顧客に提供するサービスプロバイダに、そのストレージゲートウェイを登録するプロセスを開始することと、
そのストレージゲートウェイによって、そのストレージゲートウェイが顧客ネットワーク上のシャドーイングゲートウェイとして機能するように指定する設定情報を受信することであって、シャドーイングゲートウェイが、顧客ネットワーク内のローカルデータストア上に格納されたデータを、リモートデータストアにシャドーイングし、ローカルデータストアがそのデータに対する一次データストアとして機能する、設定情報を受信することと、
設定情報に応答して、ストレージゲートウェイを、顧客ネットワーク上のシャドーイングゲートウェイとして設定することと、
顧客ネットワーク上の1つまたは複数のプロセスからのストレージゲートウェイによって、一次データストアに向けられた読取り要求および書込み要求を受信することと、
読取り要求について、その読取り要求を一次データストアに渡すことと、
書込み要求について:
書込み要求を一次データストアに渡し、かつ、
リモートデータストア上の一次データストアのスナップショットを書込みデータで更新するために、書込み要求によって示される書込みデータをサービスプロバイダに送信することと
を含む方法。
【0189】
付記項2.一次データストアと一致する、一次データストアのスナップショットを作成するために、ローカルデータストア上に格納されたデータの少なくとも一部をサービスプロバイダにアップロードするブートストラッププロセスを、ストレージゲートウェイが開始することをさらに含む、付記項1に記載の方法。
【0190】
付記項3.読取り要求および書込み要求を受信すること、読取り要求および書込み要求を一次データストアに渡すこと、およびサービスプロバイダに対する書込み要求によって示される書込みデータを終了させることが、ストレージゲートウェイによって、ブートストラッププロセスと同時に実行される、付記項2に記載の方法。
【0191】
付記項4.書込み要求によって示される書込みデータのサービスプロバイダへの前記送信が、ある期間中断されるパススルーモードにゲートウェイプロセスが入ることと、
ゲートウェイプロセスがパススルーモードから出ることと、
前記パススルーモードを出た後、一次データストアと一致する、一次データストアのスナップショットを作成するために、ゲートウェイプロセスが、ローカルデータストア上に格納されたデータの少なくとも一部をサービスプロバイダにアップロードすることと
をさらに含む、付記項1に記載の方法。
【0192】
付記項5.顧客ネットワーク上の1つまたは複数のプロセスが、顧客ネットワーク上のストレージゲートウェイによって公開された1つまたは複数のデータポートに対して、読取り要求および書込み要求を開始する、付記項1に記載の方法。
【0193】
付記項6.書込みデータをサービスプロバイダに前記送信することが、読取り要求および書込み要求をローカルデータストアに前記渡すこと、ならびに読取り要求および書込み要求に対するローカルデータストアからの応答を1つまたは複数のプロセスに返すことと非同期に実行される、付記項1に記載の方法。
【0194】
付記項7.ローカルデータストアが1つまたは複数の記憶装置を含み、前記方法が、1つまたは複数の記憶装置のうちの少なくとも1つ上の少なくとも一部のデータを、リモートデータストア上の一次データストアのスナップショットから復元することをさらに含む、付記項1に記載の方法。
【0195】
付記項8.書込み要求によって示される書込みデータをサービスプロバイダに前記送信することが、
書込みデータを書込みログにバッファリングすることと、
ストレージゲートウェイのアップロード構成要素によって、バッファリングされた書込みデータを、サービスプロバイダの対応するアップロード構成要素にアップロードすることと
を含む、付記項1に記載の方法。
【0196】
付記項9.リモートデータストアが、サービスプロバイダのストレージサービスによって提供され、かつ、書込み要求によって示される書込みデータをサービスプロバイダに前記送信することが、ストレージサービスへのインタフェースに従って、サービスプロバイダが書込みデータを送信することを含む、付記項1に記載の方法。
【0197】
付記項10.少なくとも1つのプロセッサと
プログラム命令を含むメモリであって、そのプログラム命令が、
顧客ネットワーク上の1つまたは複数のプロセスから、顧客ネットワーク上のローカルデータストアに向けられた読取り要求および書込み要求を受信することと、
その読取り要求および書込み要求をローカルデータストアに渡すことと、
サービスプロバイダによりリモートデータストア上で維持されるローカルデータストアのスナップショットを書込みデータで更新するために、書込み要求によって示される書込みデータをサービスプロバイダ送信することと
を行うように動作可能なゲートウェイプロセスを実現するように、少なくとも1つのプロセッサによって実行可能である、メモリと
を備える装置。
【0198】
付記項11.ローカルデータストアと一致する、ローカルデータストアのスナップショットを作成するために、ゲートウェイプロセスが、ローカルデータストア上に格納されたデータの少なくとも一部をサービスプロバイダにアップロードするように動作可能である、付記項10に記載の装置。
【0199】
付記項12.顧客ネットワーク上の1つまたは複数のプロセスが、顧客ネットワーク上のストレージゲートウェイによって公開された1つまたは複数のデータポートに対して、読取り要求および書込み要求を開始する、付記項10に記載の装置。
【0200】
付記項13.前記ゲートウェイプロセスが、書込みデータをサービスプロバイダに前記送信することを、読取り要求および書込み要求をローカルデータストアに前記渡すこと、ならびに読取り要求および書込み要求に対するローカルデータストアからの応答を開始プロセスに返すことと非同期に実行するように動作可能である、付記項10に記載の装置。
【0201】
付記項14.ゲートウェイプロセスが、そのゲートウェイプロセスをサービスプロバイダに登録するプロセスを開始するようにさらに動作可能である、付記項10に記載の装置。
【0202】
付記項15.ゲートウェイプロセスが、ストレージサービスから受信した設定情報に従って、シャドーイングゲートウェイとして設定されるようにさらに動作可能であり、シャドーイングゲートウェイがローカルデータストア上に格納されたデータをリモートデータストアにシャドーイングする、付記項14に記載の装置。
【0203】
付記項16.ゲートウェイプロセスが、ローカルデータストア内の少なくとも一部のデータを、ローカルデータストアのスナップショットから復元するようにさらに動作可能である、付記項10に記載の装置。
【0204】
付記項17.書込み要求によって示される書込みデータをサービスプロバイダに送信するために、ゲートウェイプロセスが、
その書込みデータを書込みログにバッファリングすることと、
そのバッファリングされた書込みデータを書込みログからサービスプロバイダにアップロードすることと
を行うようにさらに動作可能である、付記項10に記載の装置。
【0205】
付記項18.前記アップロードすることが、データ重複排除技術に従って実行される、付記項17に記載の装置。
【0206】
付記項19.リモートデータストアが、サービスプロバイダのストレージサービスによって提供され、かつ、書込みデータをそのサービスプロバイダに送信するために、ゲートウェイプロセスが、その書込みデータをストレージサービスのインタフェースによって指定されたフォーマットで送信するようにさらに動作可能である、付記項10に記載の装置。
【0207】
付記項20.ローカルデータストアのスナップショットが、リモートデータストア上でサービスプロバイダによりブロックフォーマットで維持され、かつ、書込み要求によって示される書込みデータをサービスプロバイダに送信するために、ゲートウェイプロセスが、書込みデータによって修正されたデータのブロックをサービスプロバイダにアップロードするようにさらに動作可能である、付記項10に記載の装置。
【0208】
付記項21.前記ブロックをアップロードすることが、データ重複排除技術に従って実行される、付記項20に記載の装置。
【0209】
付記項22.ゲートウエイプロセスを実現するコンピュータで実行可能なプログラム命令を格納するための持続性コンピュータアクセス可能記憶媒体であって、そのゲートウエイプロセスが:
サービスプロバイダから受信された設定情報に従って、コンピュータを顧客ネットワーク上でシャドーイングゲートウェイとして設定されることであって、シャドーイングゲートウェイが、ローカルデータストア上に格納されたデータをサービスプロバイダによって維持されるリモートデータストアにシャドーイングするように、
ゲートウェイとして設定されるように動作可能であり、
ローカルデータストア上に格納されたデータをリモートデータストアにシャドーイングするために、ゲートウェイプロセスは、
顧客ネットワーク上の1つまたは複数のプロセスからローカルデータストアに向けられた書込み要求を受信することと、
リモートデータストア上でサービスプロバイダにより維持されるローカルデータストアのスナップショットを書込みデータで更新するために、その書込み要求によって示される書込みデータをサービスプロバイダにアップロードすることと
を行うように動作可能である、
持続性コンピュータアクセス可能記憶媒体。
【0210】
付記項23.前記設定することに続いて、ローカルデータストアと一致する、ローカルデータストアのスナップショットを作成するために、ゲートウェイプロセスが、ローカルデータストア上に格納されたデータの少なくとも一部をサービスプロバイダにアップロードするように動作可能である、付記項22に記載の持続性コンピュータアクセス可能記憶媒体。
【0211】
付記項24.ゲートウェイプロセスが、ローカルデータストアに向けられた読取り要求を受信および処理するようにさらに動作可能である、付記項22に記載の持続性コンピュータアクセス可能記憶媒体。
【0212】
付記項25.顧客ネットワーク上の1つまたは複数のプロセスが、顧客ネットワーク上のストレージゲートウェイによって公開された1つまたは複数のデータポートに対して、読取り要求および書込み要求を開始する、付記項24に記載の持続性コンピュータアクセス可能記憶媒体。
【0213】
付記項26.ゲートウェイプロセスが、書込み要求をローカルデータストアに渡すようにさらに動作可能であり、ゲートウェイプロセスが、書込みデータをサービスプロバイダに前記アップロードすることを、書込み要求をローカルデータストアに前記渡すこと、および読取り要求を前記処理することと非同期的に実行するように動作可能である、付記項24に記載の持続性コンピュータアクセス可能記憶媒体。
【0214】
付記項27.書込み要求によって示される書込みデータをサービスプロバイダにアップロードするために、ゲートウェイプロセスが、
その書込みデータを書込みログにバッファリングすることと、
データ重複排除技術に従って、そのバッファリングされた書込みデータを書込みログからサービスプロバイダにアップロードすることと
を行うようにさらに動作可能である、
付記項22に記載の持続性コンピュータアクセス可能記憶媒体。
【0215】
付記項28.書込みデータをサービスプロバイダにアップロードするために、ゲートウェイプロセスが、サービスプロバイダのウェブサービスインタフェースに従って、書込みデータをアップロードするようにさらに動作可能である、付記項22に記載の持続性コンピュータアクセス可能記憶媒体。
【0216】
付記項29.書込みデータをサービスプロバイダにアップロードするために、ゲートウェイプロセスが、書込みデータによって修正されたデータのブロックをサービスプロバイダにアップロードするようにさらに動作可能である、付記項22に記載の持続性コンピュータアクセス可能記憶媒体。
【0217】
付記項30.前記アップロードすることが、データ重複排除技術に従って実行される、付記項29に記載の持続性コンピュータアクセス可能記憶媒体。