【文献】
中田 敦,Close Up,日経コンピュータ,日本,日経BP社,2008年11月15日,第717号,pp.108−112
(58)【調査した分野】(Int.Cl.,DB名)
前記ブロックレベルストレージは、前記複数の個別のコンピューティングインスタンスのうちの少なくとも1つにそれぞれ付属されている1つ以上のブロックレベルストレージボリュームを格納し、前記ネットワークベースのブロックストレージサービスは、前記1つ以上のブロックレベルストレージボリュームのポイントインタイムスナップショットを作成するようにさらに構成されており、前記バックアップコピーは前記ポイントインタイムスナップショットのコピーである、請求項1に記載のシステム。
前記インターフェースは、前記複数の個別のユーザのうちの所与の1人が、前記複数の個別のユーザのうちの前記所与の1人用に前記ブロックレベルストレージに格納されているデータのバックアップコピーを格納するための複数の個別の格納先を指定できるようにさらに構成されている、請求項1に記載のシステム。
前記ネットワークベースのブロックストレージサービスは、共通のアプリケーションプログラミングインターフェース(API)に従って、前記バックアップコピーを前記それぞれの格納先に格納するように構成されている、請求項1に記載のシステム。
前記ネットワークベースのブロックストレージサービスは、異なるAPIに従って、前記バックアップコピーを前記それぞれの格納先に格納するように構成されている、請求項1に記載のシステム。
前記ネットワークベースのブロックストレージサービスは、前記特定のユーザから、データを特定の格納先に格納するプラガブルモジュールを受容するようにさらに構成されており、前記プラガブルモジュールは、前記特定の格納先についてのストレージAPIに従って格納操作を実行する、請求項5に記載のシステム。
ネットワークベースのブロックストレージサービスによって、ストレージボリュームのスナップショットコピーを取り出す特定のインポート場所を指定する入力を受信するステップと、
前記ネットワークベースのブロックストレージサービスによって、前記特定のインポート場所から前記スナップショットコピーを取り出すステップと、
前記スナップショットコピーに基づいて、前記ネットワークベースのブロックストレージサービスのブロックレベルストレージ内にブロックレベルストレージボリュームを作成または復元するステップと、
前記ネットワークベースのブロックレベルストレージボリュームを、ネットワークを介して複数の個別のコンピューティングインスタンスの複数の個別のユーザのうちの特定の1ユーザに提供するステップであって、前記複数の個別のコンピューティングインスタンスは、ネットワークベースコンピューティングの仮想化された環境で実行され、前記ネットワークベースのブロックストレージサービスは、前記複数の個別のコンピューティングインスタンスのうちのそれぞれに対するアクセスのために、前記ブロックレベルストレージの一部をそれぞれの仮想ブロックストレージデバイスとして提供する、ステップと、
同じネットワークベースのブロックストレージサービスによって、前記複数の個別のユーザのうちの別の1人用の異なるインポート場所からの別のスナップショットコピーについて、前記受信、前記取り出し、前記作成または復元、および前記提供を繰り返すステップと、を含み、
前記特定のインポート場所は、前記ネットワークベースのブロックストレージサービスと同一のエンティティによって動作されるストレージシステム用であり、前記異なるインポート場所は、異なるエンティティによって動作されるストレージシステム用である、方法。
前記選択されていないデータを前記特定のインポート場所から取り出すステップは、前記選択されていないデータを、予測される要求のパターンを示すために決められた順序で前記特定のインポート場所から取り出すステップをさらに含む、請求項8に記載の方法。
前記ブロックレベルストレージボリュームを前記コンピューティングインスタンスに提供するステップは、前記選択されていないデータの取り出しが完了する前に前記選択されたデータを提供するステップをさらに含む、請求項8に記載の方法。
前記特定のインポート場所からデータを取り出すためのインターフェースモジュールを、前記入力に関連する特定のユーザから受信するステップをさらに含み、前記インターフェースモジュールは、前記特定のインポート場所についてのストレージAPIに従って取り出し操作を実行する、請求項7に記載の方法。
【発明を実施するための形態】
【0005】
序文
クラウドコンピューティングサービスまたは他の仮想化されたコンピューティングに伴うオンデマンドストレージを提供する環境においては、ブロックストレージサービスが、個別ユーザのセット用の個別のコンピューティングインスタンスのセットにブロックレベルストレージを提供する。コンピューティングインスタンスはブロックレベルストレージと共に、または相互に常駐している必要はない。実施形態は、個別ユーザのセット用の個別のコンピューティングインスタンスのセットがブロックレベルストレージに格納したデータのバックアップコピーを作成するためのバックアップコピー機能と、バックアップコピーを個別ユーザのセットのそれぞれが指定した種々の格納先の場所に格納するためのストレージ機能との両方を提供する。
【0006】
したがって、実施形態は、クラウドコンピューティングサービスの個別のコンピューティングインスタンスが使用しているブロックレベルストレージからのデータエクスポートに伴う従来の難点を軽減する上で役立つ。また本発明の実施形態によれば、データのバックアップコピーをブロックレベルストレージから複数の格納先へ送る柔軟性が得られる。いくつかの実施形態において、複数の格納場所はブロックレベルストレージおよび互いの格納場所から遠く離れた場所にある。一実施形態において、ブロックストレージサービスは、個別ユーザのセットのうちの特定の1人から、この個別ユーザのセットのうちの特定の1人のブロックレベルストレージに格納されているデータの少なくとも一部分のバックアップコピーを格納する特定の格納先が指定された入力を受信する。ブロックストレージサービスは、複数の個別ユーザのセットのうちこの特定の1人のブロックレベルストレージに格納されているデータの一部分のバックアップコピーを作成し、この個別ユーザのセットのうちこの特定の1人のブロックレベルストレージに格納されているデータの一部分のバックアップコピーを特定の格納先に格納する。
【0007】
同様に、ブロックストレージサービスは、上記個別ユーザのセットのうちの別の1人から、個別ユーザのセットのうちのこの別の1人のブロックレベルストレージに格納されているデータの一部分のバックアップコピーを格納するための、先の1人のものとは異なる格納先を指定する入力を受信する。ブロックストレージサービスはこれを受信すると、この個別ユーザのセットのうちのこの別の1人のブロックレベルストレージに格納されているデータの一部分のバックアップコピーを作成し、この個別ユーザのセットのうちのこの別の1人のブロックレベルストレージに格納されているデータの一部分のバックアップコピーを上記の異なる格納先に格納する。いくつかの実施形態において、特定の格納先およびこれと異なる格納先は、互いに遠く離れた場所に存在する異なった格納システムである。
【0008】
仮想化されたコンピューティングの概要
概して、仮想化されたコンピューティング(「仮想コンピューティング」または「仮想化」とも呼ばれることがある)とは、ソフトウェアからは、複数の独立した「仮想」コンピュータシステムと同様に動作しているように見える物理コンピュータシステムを構成する技術を指すものであってよい。仮想化されたコンピューティングは、従来のマルチタスクオペレーティングシステム(OS)とは区別され得る。典型的なOSは、その内部において種々のプロセスを互いに干渉し合うことなく実行させることが可能な多数の保護されたメモリスペースと、ならびにこれらプロセスの実行を管理し、システムリソースへのアクセスを調整する共通の特権ルーチンの組とを提供する。これに対し、仮想化されたコンピューティング技術を採用して複数の仮想マシンを構成すれば、仮想マシンの各々がそれぞれ異なった専用のOSを実行できるようになる。これにより、これらマシンへのアクセスをネットワーク上の異なるユーザ間で分散できるようになる。
【0009】
仮想マシンの構成と演算を、仮想マシンを実行している下層の物理ハードウェアから分離すれば、仮想化されたコンピューティングによって、ユーザは定義された仕様に従って仮想マシンを構成し、先に構成された仮想マシンを、下層の物理ハードウェアの構成を何ら変更することなく後に再現できるようになる。以下に述べる実施形態を用いることで、インポート可能なスナップショットの他の使用の中でもとりわけ、仮想マシンの使用容量を再現するために使用するスナップショットイメージをインポートできるようになる。
【0010】
図1に、仮想化されたコンピューティングの実現のために構成できるシステムの一例を示す。図示した実施形態では、物理システム100はシステムメモリ120に接続したプロセッサ110を含む。例えば、プロセッサ110は、x86/x64 ISA、PowerPC(登録商標)ISA、SPARC(登録商標)ISA、ARM(登録商標)ISA、もしくはあらゆる他の適切なISAなどの、特定の命令セットアーキテクチャ(ISA)が定義した命令を実行するように構成されたあらゆるタイプのマイクロプロセッサに対応可能である。システムメモリ120は、プロセッサ110が実行できるデータおよび命令を格納するよう構成されたあらゆるタイプのストレージデバイスに対応できる。例えば、システムメモリ120は多様なランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、不揮発メモリ(例えばフラッシュメモリ)、磁気メモリ、または他のあらゆる適切なタイプのメモリのうちのいずれを含んでいてもよい。
【0011】
システムメモリ120は、プロセッサ110または別のプロセッサで実行されると、オペレーティングシステム150および仮想化モジュール160を実現するべく構成された命令およびデータを格納するように構成されてよい。概して、オペレーティングシステム150はあらゆる適切なタイプのオペレーティングシステム、例えば或るバージョンのMicrosoft Windows(登録商標)、Apple MacOS(登録商標)、Unix(登録商標)、Linux(登録商標)、または別のオペレーティングシステムであってよい。典型的に、オペレーティングシステム150は、例えばメモリ、大容量ストレージデバイス、通信デバイス、システムサービスなどのような、コンピュータシステムが提供するアプリケーションとリソース間をつなぐインターフェースとして機能するように構成できる。
【0012】
仮想化モジュール160は、複数の異なる仮想マシンが動作可能な環境を実現するように構成できる。仮想化モジュール160、ハイパーバイザあるいは仮想マシンモニタとも称される。図示の実施形態において、仮想化モジュール160はオペレーティングシステム150からの個別のソフトウェア層として実現することができ、この構成は「ホステッドハイパーバイザ」と称される。他の実施形態において、仮想化モジュール160は個別層内で実行されるのではなく、「ネイティブハイパーバイザ」と呼ばれる構成のオペレーティングシステム150に統合される。仮想化モジュール160のホステッドハイパーバイザ実現の数例には、VMware ESX/ESXi(登録商標)、VMware Fusion(登録商標)、Microsoft VirtualPC(登録商標)、VirtualBox(登録商標)およびParallels Desktop(登録商標)がある。ネイティブハイパーバイザ実現のいくつかの例には、Xen、VMware Infrastructure(登録商標)、Logical Domains Hypervisor(登録商標)、およびParallels Server(登録商標)がある。他の例も実施可能であり、予測される。
【0013】
図示の実施形態において、仮想化モジュール160は、多数の仮想モジュール180a〜n、ならびに仮想ネットワーク175、仮想ストレージ165、ウェブサービスインターフェース190を実現するように構成される。これらエレメントの各々の例について順に述べてゆくが、その個数と構成は変更できる点に留意されたい。様々な実施形態において、様々なエレメントは代替用語を用いて称することができる。例えば、個々の仮想マシン180は「インスタンス」に相当し、様々な仮想マシン180の状態(例えばそれらのアプリケーション、データ、および構成)は「マシンイメージ」またはMIに対応する。これらのインスタンスは個別ユーザをサポートすることができる。
【0014】
仮想マシン180、仮想ネットワーク175、仮想ストレージ165といった様々な仮想化されたエレメントを実現するプロセスは、仮想化モジュール160自体とは異なる物理ハードウェア上で実行可能である点に留意されたい。例えば、リモートプロシージャコールまたは他の技術を採用することで、特定の仮想マシン180やあらゆる他の仮想化されたエレメントに対応したプロセスまたはスレッドを、恐らくは物理システム100と構成の異なる物理システム上で実行するように、仮想化モジュール160を構成することが可能である。
【0015】
下層の物理システム100ならびに仮想化モジュール160のリソース能力に応じて任意数の仮想マシン180を展開させることができる。概して、各仮想マシン180はオペレーティングシステムおよびアプリケーションの独自コピーを所有でき、このコピーは他の仮想マシン180に関係なく実行できる。例えば、
図1は仮想オペレーティングシステム185ならびに1つ以上のアプリケーション195を含む仮想マシン180nを示す。仮想オペレーティングシステム185は、上記でオペレーティングシステム150に関連して述べたタイプのオペレーティングシステムが全てを含むあらゆる適切なオペレーティングシステムに相当する。仮想オペレーティングシステム185は、物理コンピュータシステム100上で実行される下層のオペレーティングシステム150と違うものであってよい。例えば、仮想オペレーティングシステム185とオペレーティングシステム150は完全に異なるオペレーティングシステムであってよい。あるいは、両者は同タイプのオペレーティングシステムに相当するが、それぞれデータ構造および/または実行可能なコードの個別のコピーを所有し、別々に実行されるように構成されていてもよい。
【0016】
各仮想マシン180は、仮想マシン180に割り当てられた物理システム100のリソースを処理する独立した物理マシンであるかのように動作することができる。例えば、仮想マシン180aは、或るバージョンのMicrosoft Windows(登録商標)および1つ以上のWindowsのアプリケーションを実行するように構成され、仮想マシン180nは、或るバージョンのLinuxおよび1つ以上のLinuxのアプリケーションを実行するように構成される。いくつかの実施形態において、仮想マシン180上で実行される所与のオペレーティングシステムとアプリケーションは、物理システムではなく仮想システムで実行されていることを識別できないかもしれない。したがって、仮想化は各仮想マシン180に関して透過的に実行することができる。
【0017】
様々な実施形態において、仮想化モジュール160は、仮想化モジュール160が例えば物理システム100外のクライアントから受け取った構成要求に応じて仮想マシン180a〜nをインスタンス化および破棄するように構成され得る。クライアントは、物理システム100上、またはネットワークなどの物理システム100と通信するよう構成された異なるシステム上で、ユーザに代わって実行されるプロセスに相当する。
【0018】
様々な実施形態において、クライアントの要求は、要求先の所与の仮想マシン180のための構成パラメータを含んでいてよい。例えば、クライアントは、メモリ量や特定レベルのプロセッサパフォーマンスなどのような特定のリソースを所与の仮想マシン180に指定できる。あるいはクライアントは、利用できる構成のセットの中から特定のタイプまたはクラスの仮想マシン180を指定することができる。例えば、仮想化モジュール160は、クライアントが選べる「小型」、「中型」、「大型」、および/またはこれ以外のタイプの属性の仮想マシン構成を呈することができ、これらの各々にメモリ、パフォーマンス、および/または他の特徴が定義されている。いくつかの実施形態において、こうした特徴は、仮想ストレージ165の一部分のバックアップコピーや、仮想マシン180に関連してその他のデータ構造のバックアップコピーを格納する1つ以上の格納先の場所を含んでいてよい。いくつかの実施形態において、こうした特徴は、仮想ストレージ165の一部分のバックアップコピーや、仮想マシン180関連の他のデータ構造のバックアップコピーを取り出すための1つ以上のソース場所を含んでいてよい。このようなソース場所および格納先の場所は物理システム100内でローカルにホストされるか、あるいは例えばネットワーク上で遠隔地からアクセスされることが可能である。
【0019】
いくつかの実施形態において、クライアントの要求は、所与の仮想マシン180の状態をどのように初期化すべきかに関する情報を含むこともできる。例えば、要求は、ブートすべきオペレーティングシステム185、利用可能なアプリケーション(1つ以上)195、および/またはあらゆるデータ、ライブラリ、あるいはクライアントの計算実行に必要な他の入力を指定することができる。様々な実施形態において、クライアントは、多数の選択肢から初期状態を選択することや(例えば、利用可能なオペレーティングシステムのリストの中から選択)、または所与の仮想マシン180の望ましい初期状態を反映した(例えば、実行可能なコードおよび/またはデータを反映した)詳細なメモリイメージを提供すること、あるいはこれらおよび他の技術の組み合わせが可能である。様々な実施形態において、仮想ストレージ165の一部分や仮想マシン180に関連する他のデータ構造を格納するための1つ以上のインポート場所に格納されているバックアップコピーの中から、この初期状態を取り出すことができる。
【0020】
所与の仮想マシン180を作成または初期化せよとの要求に応答して、仮想化モジュール160を、例えば所与の仮想マシン180が使用する特定量のシステムメモリ120を自己の仮想システムメモリとして使用することを除外することで、所与の仮想マシン180への物理システム100のリソース割り当てを行うように構成できる。仮想化モジュール160は所与の仮想マシン180の初期化も行える。例えば、所与の仮想マシン180を、クライアントの指定に従って、あるいはデフォルト状態に初期化することが可能である。
【0021】
構成および初期化が終わると(これらは同時に、または同一の演算の一部として行われる)、所与の仮想マシン180は動作を開始することができる。例えば、オペレーティングシステム185は過去に定義された状態からブートまたは再開することができる。アプリケーション(1つ以上)195は対話方式(つまり操作中にクライアントから入力を受信する)での実行および自律的な実行の両方が可能である。様々な実施形態において、以下に述べるように、仮想化モジュール160は所与の仮想マシン180にストレージへのアクセスや仮想ネットワークへのアクセスを提供することができ、これにより、所与の仮想マシン180が他の仮想マシン180と通信できるようになる。
【0022】
何らかの時点で、所与の仮想マシン180を終了させる要求が発生する。例えばクライアントは、所与の仮想マシン180に構成されたタスクが完了した時に、あるいは何らかの他の理由で、このような要求を開始することができる。あるいは仮想化モジュール160は、例えばマシンが不安定になるか、またはクライアントの利用条件の何らかの面の違反が生じた時に、同様の要求を開始する。これに応答して所与の仮想マシン180が終了し、さらにそのリソースは解放されて他の仮想マシンが使用できるようになる。例えば、可能であれば、仮想化モジュール160は所与の仮想マシン180のシャットダウンを順序立てて実行しようと試みる。そして、所与の仮想マシン180の状態、仮想コンピューティング環境における仮想マシン180の構成に関する情報、および/または他の顕著な情報をアーカイブあるいは保存する。これらまたはあらゆる他のハウスキーピングタスクが完了すると、所与の仮想マシン180は完全に消滅される。
【0023】
仮想化モジュール160は、仮想マシン180の構成および操作を提供する以外にも、仮想ネットワーク175上における仮想マシン180間の仮想化されたネットワーク接続性を提供するように構成される。例えば、ローカルエリアネットワーク(LAN)や他の適切なタイプあるいはトポロジーのネットワークをエミュレートするように仮想ネットワーク175を構成できる。仮想ネットワーク175を介することで、複数の仮想マシン180をあたかも物理ネットワークに接続した物理マシンであるかのように相互に通信するように構成できる。
【0024】
いくつかの実施形態において、複数の異なる物理システム上に実現された仮想ネットワーク間をブリッジするように仮想化モジュール160を構成することで、より大規模の仮想ネットワークを実現することが可能である。とは言え、例えば個別の物理システム100上に実現された仮想マシン180は、1つの全体的な仮想ネットワーク175の一部として相互に通信することが可能である。このような実施形態では、異なる仮想化モジュール160のインスタンスを、これらインスタンスのそれぞれの物理システム100をつなぐ物理ネットワークを介して相互に情報通信を行うように構成することで、仮想マシン180間での仮想ネットワーク通信を実現できる。
【0025】
さらに仮想化モジュール160は、仮想ストレージ165として図示された大容量ストレージへのアクセスを仮想マシン180に提供するように構成してもよい。例えば、仮想ストレージ165は、ブロックストレージデバイス(例えば論理ストレージ容量)、ファイルシステム、データベースとして、あるいは、コンピュータシステムに提供されるあらゆる他の適切なタイプの大容量ストレージとして構成できる。仮想ストレージ165の実施形態は系統的に大容量ストレージリソースとも称される。いくつかの実施形態において、仮想ストレージ165は、仮想ネットワーク175上で複数の仮想マシン180へのアクセスが可能な、仮想ネットワークに接続したデバイスとして構成される。例えば、仮想ストレージ165は、仮想化されたネットワークに接続したストレージ(NAS)デバイス、仮想化されたストレージエリアネットワーク(SAN)、インターネットプロトコルを介してアクセスできるストレージサービス(例えば、ウェブサービスベースのストレージサービスとして)として、またはあらゆる他の適切な様式において構成できる。いくつかの実施形態において、仮想ストレージ165は、ローカルに実現されたサービスまたはネットワーク上でリモートアクセスが可能なサービスを介して実現される。
【0026】
いくつかの実施形態において、仮想ストレージ165の管理は仮想化モジュール160が直接行うことができる。例えば、仮想化モジュール160は、仮想化された容量サーバ、ファイルサーバ、または他タイプの大容量ストレージアーキテクチャの実現に必要な機能性を含んでいてよい。他の実施形態では、仮想化モジュール160は代わりにインターフェースを提供し、仮想マシン180が、このインターフェースを介して仮想モジュール160の外部に存在および管理されているストレージにアクセスできるようにしている。例えば、物理システム100または別のシステム上で実行されているいくつかの他のソフトウェア構成要素は、大容量ストレージとストレージにアクセスするためのアプリケーションプログラミングインターフェース(API)とを提供するように構成される。こうすることで、仮想化モジュール160を、仮想マシン180からこの外部APIへストレージアクセス要求を送るように構成できるようになる。
【0027】
仮想化モジュール160は、クライアントが特定の仮想マシン180と対話するために用いる多数かつ多様なインターフェースをサポートするように構成される。例えば、仮想化モジュール160は、ベーシックな端末エミュレーションを実行することで、クライアントが仮想マシン180にテキスト入力を提供し、さらにテキスト出力をクライアントに戻して表示させることができるように構成される。所与の仮想マシン180が、所与の仮想マシン180内で実行されるソフトウェアによってホストされるウィンドウシステムや他タイプのグラフィックユーザインターフェース(GUI)といった高性能のユーザインターフェースをサポートしている場合には、仮想化モジュール160は、クライアントの入力デバイス(例えばキーボード、ポインティングデバイスなど)からの入力を所与の仮想マシン180へ送り、グラフィカルな出力をクライアントへ送るように構成される。
【0028】
いくつかの実施形態において、仮想化されたコンピューティングをクライアント向けのオンデマンドの有料サービスとして提供してもよい。例えば、或る企業は、仮想化されたコンピューティングの実現に使用する様々なハードウェアおよびソフトウェア構成要素のアセンブリングおよび維持を実施して、様々な料金モデル(例えば従量制、加入制の料金など)に基づいてこれらリソースへのアクセスをクライアントに提供できる。そのため、クライアントは、これらのリソースの実現に必要なインフラストラクチャを準備し維持する労力および費用を負うことなく、幅広い仮想コンピューティングリソースにアクセスできる。概して、仮想化されたコンピューティングサービスをクライアントに提供するために、仮想化モジュール160は、仮想化されたコンピューティングサービスAPIをクライアントに対して呈示し、クライアントはこれを介して仮想化されたコンピューティングサービスへの多様な要求を提出できるように構成される。例えば、後で詳細に述べるように、クライアントは仮想化されたコンピューティングサービスAPIを介して、仮想化されたコンピューティングリソースをインスタンス化、初期化、および/または削除するための要求を提出できる。さらに、クライアントは、仮想化されたコンピューティングリソースに様々な計算を実行させる要求を提出することもできる。
【0029】
図1に示す実施形態では、仮想化モジュール160は、仮想マシン180のような仮想化されたコンピューティングリソースを、ウェブサービスインターフェース190を介したウェブサービスの一部としてクライアントに対し呈示するように構成される。概して、ウェブサービスとは、クライアントからの1つ以上のウェブサービスエンドポイントへのコールによって利用できるコンピューティング機能であると言及できる。この際、クライアントは、アプリケーションレベルや、ハイパーテキスト転送プロトコル(HTTP)のようなインターネットベースの転送プロトコルに従って、ウェブサービスエンドポイントをアドレス指定できる。例えば、或るウェブサービスエンドポイントは、クライアントが要求するウェブサービスオペレーションを定義する特定のAPIを実現する。いくつかの実施形態において、ウェブサービスインターフェース190は、アドレス指定可能なウェブサービスエンドポイントを実現するように構成され、またさらに、クライアントに関連したウェブサービス要求および応答情報の送受信を行うように構成された機能性を含んでいる。
【0030】
ウェブサービスに特定のオペレーションを実行するよう要求する場合、クライアントは要求をAPI指定の形式でフォーマットし、この要求をアドレス指定可能なエンドポイントに伝達する。例えば、エンドポイントを、virtualcomputing.company.comのような「endpoint.domainname.toplevel」形式のユニフォームリソースインジケータ(URI)に従ってアドレス指定できる。あるいは、エンドポイントは、例えばIPアドレスのような数字形式のアドレスによりアドレス指定することも可能である。
【0031】
様々な実施形態において、ウェブサービスインターフェース190は、クライアントが多数の適切な方法のいずれかによって呼び出すことができる。例えば、ウェブサービスインターフェース190は、レプレゼンテーショナルステートトランスファ(REST)形式のウェブサービスアーキテクチャを実現するように構成される。概して、RESTアーキテクチャでは、要求されたウェブサービスオペレーションとその様々なパラメータを、伝送プロトコルに従ってウェブサービスエンドポイントに掛けられるウェブサービスコールに付加することができる。例えば、要求されたオペレーションの詳細は、GET、PUT、またはPOSTのようなHTTP要求方法のパラメータとして含めることができる。あるいは、ウェブサービスインターフェース190は、ドキュメントまたはメッセージ指向のアーキテクチャを実現するように構成される。例えば、要求されたオペレーションの詳細をクライアントによって拡張マークアップ言語文書としてフォーマットし、或るバージョンのSimple Object Access Protocol(SOAP)を使用してカプセル化することができる。ウェブサービスインターフェース190は、このような文書を受信すると、要求されたウェブサービスオペレーションの詳細を抽出して、オペレーションの実行を試みるように構成される。
【0032】
ウェブサービスとしての仮想化されたコンピューティングの面において、ウェブサービスインターフェース190により実現されたAPIは、仮想化モジュール160によりクライアントに利用可能となったあらゆるまたは全てのタイプのオペレーションをサポートできると考えられる。ここで、上記のオペレーションには、容量のバックアップコピー作成要求またはバックアップコピーからの容量の復元要求の実行といったストレージオペレーションが含まれる。例えば、APIは上で述べたように仮想モジュール180の構成、初期化、終了をサポートすることができる。さらに、いくつかの実施形態において、APIは、クライアントと仮想マシン180または他の仮想化されたリソースとの間での入力および出力(テキスト、グラフィック、音声、その他)の交換をサポートすることもできる。
【0033】
データセンターとバックアップストレージ
次に
図2Aを参照すると、複数のコンピューティングシステムがプログラムを実行しストレージにアクセスする例示的な一実施形態のネットワーク図を示す。プログラム実行サービスは、データセンター200内の様々なホストコンピューティングシステム上におけるプログラムの実行を管理し、またブロックストレージサービスは、データセンターにおける複数の他のストレージシステムと協働して、実行中のプログラムにブロックレベルストレージを提供する。複数のリモート/ローカルストレージシステムを使用して、いくつかのブロックデータ容量の少なくともいくつかの部分のバックアップコピーといったさらなるコピーを格納する。
【0034】
この例示的実施形態では、データセンター200は多数のラック205を含んでおり、各ラックは多数のホストコンピューティングシステム、ならびに任意のラックサポートコンピュータシステム222を含む。図示のラック205上にあるホストコンピューティングシステム210a〜cの各々は、1つ以上の仮想マシン220と、そのホストコンピューティングシステム上の仮想マシンに対応した個別ノードマネージャモジュール215とをホストする。ノードマネージャモジュール215は、常駐先であるホストコンピューティングシステムに関連した仮想マシンを管理する。この例では、1つ以上の他のホストコンピューティングシステム235も、それぞれ1つ以上の仮想マシン220をホストしている。各仮想マシン220は、或るユーザ(図示せず)について1つ以上のプログラムコピー(図示せず)を実行する独立したコンピューティングインスタンスとして機能できる。この場合、このユーザは、例えば
図1に関連して述べたウェブサービスインターフェース190のようなウェブサービスインターフェースを介してアクセスしたプログラム実行サービスの顧客である。
【0035】
さらに、
図2Aの例証的なデータセンター200はホストコンピューティングシステム230a〜bを含んでおり、このホストコンピューティングシステムは個別の仮想マシンを含まないが、しかしそれぞれが、或るユーザについて実行されている1つ以上のプログラム(図示せず)用のコンピューティングノードとして機能できる。ホストコンピューティングシステム230a〜bおよび235とは異なるコンピュータシステム(図示せず)上で実行されているノードマネージャモジュール225は、ホストコンピューティングシステム230a〜bおよび235に対応して、ホストコンピューティングシステムが提供したコンピュータノードを、ホストコンピューティングシステム210についてノードマネージャモジュール215が行う様式と類似した様式で管理する。ロックサポートコンピュータシステム222は、ラック205域内の他のコンピューティングシステム、ならびに恐らくはデータセンター内に設置されている他のコンピュータシステムに対して、様々なユーティリティサービスを提供する(例えば、長期ストレージ、プログラム実行の測定および他の監視、および/または他のコンピューティングシステムが実行するローカルラックへの非ローカルブロックデータストレージアクセス)。各コンピューティングシステム210、230、235は、実行中のプログラムや様々な他の構成要素が作成したあるいは使用しているプログラムおよび/またはデータのローカルコピーを格納するための、1つ以上のローカルアタッチされたストレージデバイス(図示せず)をさらに設けていてよい。
【0036】
さらに、任意のプログラム実行サービス(PES)システムマネージャ240も図示されている。PESシステムマネージャ240は、PESシステムマネージャモジュールを実行するコンピューティングシステムであり、ホストコンピューティングシステム210、230、および235が提供するコンピューティングノード上でのプログラム実行の管理を補助する(あるいは任意で、1つ以上の他のデータセンター260内に位置するコンピューティングシステム(図示せず)上のプログラム、もしくはネットワーク270上で利用可能な他のリモートコンピューティングシステム(図示せず)上のプログラムの管理を補助する)。PESシステムマネージャ240はプログラム実行管理の他にも、ユーザアカウントの管理(例えば支払いの作成、削除、請求、集金など)を含む様々なサービスを提供できる。PESシステムマネージャ240はさらに、実行するプログラムの登録、格納、配布や、プログラム実行に関するパフォーマンスと監査データの収集ならびに処理を提供する。いくつかの実施形態において、PESシステムマネージャ240はノードマネージャモジュール215、225と協働し、ノードマネージャモジュール215、225に関連したコンピューティングノード上でプログラム実行を管理する。
【0037】
データセンター200は、ブロックストレージサービス265をさらに含む(以降で
図2Bを参照してより詳細に説明する)。このブロックストレージサービス265は、データセンター200内に位置するホストコンピューティングシステム210、230、235、あるいは任意で1つ以上の他のデータセンター260内のコンピューティングシステム(図示せず)、またはネットワーク270上で利用可能な他のリモートコンピューティングシステム(図示せず)が提供するコンピューティングノード上で実行中のプログラムにブロックレベルのデータ格納を提供する。
【0038】
いくつかの実施形態において、データセンター200は、リモートストレージシステム297と通信する。リモートストレージシステム297は、データストアマネージャ247をサポートするオペレーティングシステム245を含む。リモートストレージシステム297は、ローカルストレージシステム292と同一のエンティティの制御下、またはこれと異なるエンティティの制御下にあってよい。データ格納マネージャは、ブロックストレージサービス265からスナップショットコピー295を受信して格納する。いくつかの実施形態において、リモートストレージシステム297内でブロックストレージアダプタ250を実行することで、ブロックストレージサービス265との通信を促進している。
【0039】
図2Bは、一実施形態に従って格納操作を実行するためのブロックストレージサービスを示す。ブロックストレージサービス265はストレージシステムであって、1つ以上のボリューム255ならびに1つ以上のスナップショット256を格納するためのブロックレベルストレージを提供する複数サーバデータブロックストレージシステムのプール(簡素化のため図示省略)で構成されている。スナップショット256は、ボリューム255の状態のフィックストポイントインタイム表示である。いくつかの実施形態において、スナップショットをバックアップ目的で使用する。他の実施形態において、スナップショットを全ての形式のファイルオペレーションに使用することで、システムリソースの解放を早め、並行操作のパフォーマンスを向上させている。さらにスナップショットは、コンピューティングタスクの実行にデータの複製セットが役立つ多くのオペレーションにおいて使用される。ブロックストレージサービス265はブロックレベルストレージマネージャ275を実行し、ブロックストレージサービス265のオペレーションを補助する。具体的には、そして再び
図2Aを参照すると、ブロックレベルストレージマネージャ275は、データセンター200内のホストコンピューティングシステム210、230、235、あるいは任意で1つ以上の他のデータセンター260内のコンピューティングシステム(図示せず)、もしくはネットワーク270上で利用可能な他のリモートコンピューティングシステム(図示せず)、が提供するコンピューティングノード上で実行中のプログラムへのブロックデータストレージの可用性の管理を補助するものである。
図2A、
図2Bに示す実施形態では、ボリュームコピー255へのアクセスは、ノード210、235上で実行しているプログラムへの内部ネットワーク285によって提供される。ブロックレベルストレージマネージャ275はブロックレベルストレージ機能に関連した様々なサービスを提供し、これにはユーザアカウントの管理(例えば支払いの作成、削除、請求、集金など)が含まれる。ブロックレベルストレージマネージャ275はさらに、ブロックストレージサービス265上にあるボリューム255およびスナップショット256の作成、使用、削除に関連したサービスを提供する。ブロックレベルストレージマネージャ275はまた、ボリューム255とそのボリュームのスナップショット256の使用に関するパフォーマンスおよび監査データの収集ならびに処理に関連したサービスも提供する。
【0040】
図2Bに戻ると、ブロックレベルストレージマネージャ275はさらにバックアップマネージャ280を含んでいる。バックアップマネージャ280は、スナップショット256や、ブロックストレージサービス265のボリューム255内に格納されているデータの他のバックアップイメージの作成、格納、管理、インポートを行うインターフェースを提供する。いくつかの実施形態において、バックアップマネージャモジュール280は、例えばスナップショットコピー290をローカルストレージシステム292上に、そしてスナップショットコピー295をリモートストレージシステム297上にというように、ストレージシステムへのスナップショットの格納を行う。バックアップマネージャ280はバックアップストレージ機能の提供に関連した様々なサービスを提供し、これにはユーザアカウントの管理(例えば支払いの承認、作成、削除、請求、集金など)が含まれる。一実施形態において、バックアップマネージャ280は、リモートストレージシステム297をコンピューティングインスタンスに関連付けする際に承認の証明を必要とする。さらに、バックアップマネージャ280は、特定のストレージシステム上のパフォーマンス特有のオペレーションに関連した請求率が、特定タスクのパフォーマンスを格納するストレージシステムを選ぶ上で影響する「料金体系に影響される選択」を提供する。例えば、ローカルストレージシステム292上へのスナップショットコピー290の格納の方が料金が高いことに基づいて、リモートストレージシステム297上へのスナップショットコピー295の格納を、ローカルストレージシステム292上へのスナップショットコピー290の格納よりも優先して実行するように、バックアップマネージャ280をプログラミングすることができる。
【0041】
バックアップマネージャモジュール280は、バックアップオペレーションのパフォーマンスを発行せよとの要求を、コンピューティングインスタンスから、またはウェブサービスインターフェース(例えば
図1のウェブサービスインターフェース190)のユーザから受信するためのバックアップマネージャインターフェース278を含んでいる。一実施形態において、こうした要求は、ブロックストレージサービス265がコンピューティングインスタンス(例えば仮想マシン220のうちの1つ)のユーザに提供しているブロックレベルストレージのボリューム255に格納されているデータの少なくとも一部のスナップショットコピー290の格納先(例えばローカルストレージシステム292)や他の構成パラメータなどを指定する。またこうした要求は、ウェブサービスインターフェース(例えば
図1のウェブサービスインターフェース190)からのAPIコールとして実施されてもよい。以降で述べるように、この要求は格納場所、ストレージ粒度、または他のパラメータを指定できる。バックアップマネージャインターフェース278は、リモートストレージシステム297上のスナップショット(例えばスナップショットコピー295)や他のバックアップコピーから、そしてローカルストレージシステム292上のスナップショットコピー290から、ボリューム255をブロックストレージサービス265内に復元せよとの要求を受信するように構成することもできる。
【0042】
ストレージ粒度とは、特定の場所に作成および格納するよう要求されたバックアップまたは一連のバックアップの個数、頻度、サイズ、または包括性を意味する。或る粒度設定では、選択されたボリュームの全一連のフルバックアップスナップショットを特定の場所に格納することができる。あるいは、別の粒度設定では、ボリュームのスナップショットの各部分を1つの場所において作成および格納することができる。これらのデータ部分は、例えばファイルや、特定のバックアップパラメタを満たすべく定義されたブロック範囲(例えば任意のブロックスキーム、または前回のバックアップからデータが変更されているブロック範囲のみ)のように、特定のデータ構造を含むことができる。さらに、ストレージ粒度を柔軟に指定する機能は、ボリュームまたはボリュームの一部分を表す第1スナップショットが第1格納場所に格納されることや、同ボリュームの第2スナップショット、または或るボリュームの一部分の(または同ボリュームの異なる部分)の第2スナップショットが第2場所へ送られることを指定する機能を含む。構成ファイル252は、様々なバックアップ操作および復元操作の実行に関する詳細を含んでいる。こうした詳細は、特定のストレージシステムに関連したAPIのフォーマット、特定の格納先やインポート場所におけるストレージシステムの場所、あるいはバックアップの特徴(例えばバックアップ粒度)、を指定する情報を含む。
【0043】
バックアップマネージャモジュール280は、ボリュームのスナップショット、またはボリュームの各部のスナップショットを、バックアップマネージャインターフェース278経由で受信した入力の指定どおりに作成するためのバックアップ作成モジュール276をさらに含む。バックアップマネージャモジュールはまた、バックアップストレージマネージャ282を含む。バックアップストレージマネージャ282は、ローカルストレージシステム292内のスナップショットコピー290またはリモートストレージシステム297内のスナップショットコピー295のようなスナップショットの伝送および格納を実行する。バックアップストレージマネージャ282は、多種多様なトランスポート層プロトコル(例えばTCP、UDPなど)およびアプリケーション層プロトコル(例えばHTTP、FTP、XML−RPC、SOAPなど)のいずれかを使用して、ローカルストレージシステム292およびリモートストレージシステム297と通信するように構成される。なお、上記プロトコルは実施形態ごとに異なる。いくつかの実施形態において、バックアップストレージマネージャ282は、ローカルネットワーク285経由でスナップショットコピー290をローカルストレージシステム292へ伝送する。同様に、バックアップストレージマネージャ282は、ネットワーク270経由でスナップショットコピー295をリモートストレージシステム297へ伝送する。
【0044】
いくつかの実施形態において、バックアップストレージマネージャ282は、バックアップストレージマネージャ282とデータストアマネージャ247の両方がサポートしているストレージコールのAPIプロトコルを使用して、データストアマネージャ247と直接通信するように構成される。他の実施形態において、バックアップストレージマネージャ282が使用するストレージコールのAPIプロトコルは、データストアマネージャ247上で直接サポートされておらず、ブロックストレージアダプタ250またはバックアップストレージ251を使用することで、データストアマネージャ247およびバックアップストレージマネージャ282の相互運用性を促進している。いくつかの実施形態において、同じホストノード上にある異なるコンピューティングインスタンスが、個別のAPIプロトコルを使用して、異なるストレージトランザクションについてストレージシステムと通信する。バックアップマネージャ280は、ローカルアーカイブストレージシステム292から受け取ったスナップショットコピー290としてのボリュームまたはボリュームの各部分を、あるいはリモートアーカイブストレージシステム297から受け取ったスナップショットコピー295を、復元またはインポートするためのデータインポートマネージャ284をさらに含んでいる。
【0045】
バックアップストレージと相互作用するためのプロセスステップ
以降で
図3A〜
図4を参照して述べるプロセスステップは、個別ユーザ群をサポートするコンピューティングインスタンスに対し、ブロックレベルストレージに格納されているデータのバックアップコピーのバックアップサービスを提供するシステムの一実施形態によって実行される様々なステップを例証するものである。このようなシステムの実施形態は、個別ユーザ用のコンピューティングインスタンスによって、ブロックレベルストレージに格納されているデータのバックアップコピーを作成し、さらにこのバックアップコピーを、個別ユーザの各々が指定した異なる格納先の場所に格納するためのバックアップコピー機能を提供する。
【0046】
図3Aは、一実施形態に従ってスナップショットを作成および格納するプロセスステップの高レベルフローチャートである。バックアップ先の格納場所(他のバックアップ詳細と共に)を指定するユーザ入力を受信する(ブロック300)。一実施形態では、このようなユーザ入力を、
図1のウェブサービスインターフェース190のようなウェブサービスインターフェースから受信する。ユーザ入力で提供する詳細は、特定の場所において作成および格納するように要求されたスナップショットまたは一連のスナップショットの個数、頻度、サイズ、または包括性を含んでいてよい。さらにバックアップのタイミングを含むこともできる。あるいは、このようなユーザ入力は、
図1の仮想マシン180のような仮想マシンから受信される。受信した詳細から抽出したバックアップについての詳細を、
図2Bの構成ファイル252のような構成ファイルに記録する(ブロック305)。次に、構成ファイルからの詳細に従ってバックアップコピーを作成する(ブロック310)。一実施形態では、
図2Bのバックアップ作成モジュール276のようなバックアップ作成モジュールでボリュームのスナップショットを生成することで、バックアップコピーを作成する。次に、このバックアップを、構成ファイルに指定されている1つ以上の場所に格納する(ブロック315)。これでプロセスが終了する。
【0047】
図3Bは、一実施形態に従ってボリュームのバックアップコピーを作成および格納するプロセスステップの高レベルフローチャートである。サーバブロックデータストレージ内にスナップショットを作成する(ブロック320)。一実施形態では、サーバブロックデータストレージは、
図2Aのブロックストレージサービス265のようなブロックストレージサービスにより提供される。
図2Bの構成ファイル252のような構成ファイルを精査することで、ストレージ構成が決定される(ブロック325)。一実施形態では、このストレージ構成はストレージ粒度に関する情報、つまりスナップショットを1つの全体的なスナップショットイメージとして格納するのか、あるいはファイルや、アドレスレンジを反映するデータチャンク、または他のフォーマットとして格納するのかの情報を含む。また、バックアップが一連のスナップショットの一部であるか、一連のスナップショットの各部分を1つの格納場所に集中させるのか、それとも複数の格納情報間に分散させるのか、1つのバックアップコピーの各部分を集中させるのか、それとも複数のサーバに分配するのか、どのエンティティで様々なバックアップ格納場所を制御するのか、さらに、バックアップを認証および保全する方法、といった他の情報を決定することも可能である。次に、格納先についてのストレージシステムパラメータを確定する(ブロック330)。一実施形態では、ストレージシステムパラメータは、特定のストレージシステムに関連したAPIのフォーマットと、特定の格納先におけるストレージシステムの場所と、この格納先と通信する上でバックアップストレージアダプタまたはブロックストレージアダプタが必要かどうかの情報とを含む。ストレージ伝送を実行する(ブロック335)。ストレージ伝送において、スナップショットは全体のままあるいは指定されたコンポーネント部分に分割されて、格納先へ伝送される。いくつかの実施形態において、受信確認を受信する(ブロック340)。これでプロセスは終了である。
【0048】
図4は、一実施形態に従ってボリュームスナップショットを取り出してボリュームを復元するプロセスステップの高レベルフローチャートである。復元要求を受信する(ブロック400)。一実施形態では、このような復元要求を、
図1のウェブサービスインターフェース190のようなウェブサービスインターフェースから受信する。復元要求で提供される詳細は、インポート場所と復元先(特定の仮想マシンホストなど)を含んでいてよい。さらに、アイドル状態のマシンサイクルの利用が可能である場合は、オペレーション実行の遅延のような復元のタイミングを含んでいてもよい。あるいは、このようなユーザ入力は、
図1の仮想マシン180のような仮想マシンから受信される。復元要求に必要な構成を決定する(ブロック405)。一実施形態では、この必要な構成には、特定のストレージシステムに関連したAPIのフォーマットを含んでいるパラメータと、特定の格納先におけるストレージシステムの場所と、格納先と通信する上でバックアップストレージアダプタまたはブロックストレージアダプタ必要かどうかについての情報とが含まれる。受信側ボリュームを作成する(ブロック410)。一実施形態では、受信側ボリュームは空のボリュームであり、この中に受信したデータを格納する。ボリュームをホストするストレージシステムに取り出し要求を送信する(ブロック415)。スナップショットデータを受信する(ブロック420)。一実施形態では、受信したデータは完全な1つのスナップショットとして、受信側ボリュームをホストするブロックレベルストレージ上に格納される。データを受信側ボリュームにインポートする(ブロック425)。プロセスはこれで終了である。
【0049】
図4の処理は、明瞭化の目的から、直線的な一連のオペレーションとして示している。しかし、本開示を読了した当業者であれば、
図4のオペレーションを繰り返し実行することで複数の要求を処理できることに気付くだろう。繰り返し実行できるオペレーションの一例として、要求オペレーション、受信オペレーション、インポートオペレーション(415〜425)を繰り返しループ様式で、全ての要求したデータが受信されるまで実行することができる。このような繰り返しパフォーマンスを提供する実施形態は本開示の範囲から逸脱するものではない。
【0050】
さらに、明瞭化のために
図4の説明から省略されたいくつかのオペレーションは実施形態の一部として実現される。明瞭化のために
図4から省略されたオペレーションの一例として、本開示を読了した当業者は、
図4の手法は受信認証ステップを含んでいてよく、また、選択したソースからのデータ受信の失敗に応答して、あるいはソースからのデータ受信の最適以下の遅延に応答して、データ受信の代わりのデータソースからインポートを選択する機能を含んでいてよいことを理解するだろう。このようなさらなるオペレーションを提供する実施形態は本開示の範囲から逸脱するものではない。
【0051】
バックアップストレージとの対話を例証する格納例
図5〜
図8は、個別ユーザ群をサポートするコンピューティングインスタンスに、ブロックレベルストレージに格納されているデータのバックアップコピーを提供し、またバックアップコピーに関連した取り出しサービスと復元サービスを提供するシステムの実施形態を採用する様々な使用例を示す。
【0052】
図5は、一実施形態に従ってボリュームスナップショットの一連のバックアップコピーを格納するための一連の格納時の対話を示す高レベルブロック図である。ブロックストレージサービス565は、一連のボリューム555a〜555nを格納し、その各々は1つ以上のコンピューティングインスタンスにアタッチされ、さらにスナップショットのセット556al〜556an、556bl〜556b2、および556nlを作成する。ストレージシステム592は、スナップショットコピー557a1〜557anならびにスナップショットコピー557b1、およびスナップショットコピー557n1を格納する。一実施形態では、スナップショット556a1〜556anおよびスナップショットコピー557a1〜557anは、スナップショットコピー間でブロックが共有される増分スナップショットである。そのため、スナップショットA1 556a1とスナップショットA1コピー557a1は、ボリュームA556aの復元に必要なブロックの完全なセットを包含していてよい。しかし、その次のスナップショットA2 556a2とスナップショットA2コピー557a2は、特定のスナップショットA1 556a1とその次のスナップショットA2 556a2作成との間で変更されたブロックのみを包含できる。こうした実施形態では、スナップショットA2コピー557a2からのボリュームA 555aの復元に、スナップショットA2コピー557a2の全てのブロックと、スナップショットA1コピー557a1のブロックのうちの、スナップショットA1556a1の作成とその次のスナップショットA2 556a2の作成の間で変更のなかったものとを使用できる。
【0053】
一実施形態において、ストレージシステム592は
図2Aのローカルストレージシステム292と類似している。ストレージシステム592は内部ネットワーク585を使用してブロックストレージサービス565と通信する。同様に、ストレージシステム597はスナップショットコピー557n1およびスナップショットコピー557b2を格納する。一実施形態において、ストレージシステム597は
図2Aのストレージシステム297と類似している。ストレージシステム597は、ネットワーク570および内部ネットワーク585を使用してブロックストレージサービス565と通信する。一実施形態では、ブロックストレージアダプタ550は、ストレージシステム597がサポートするAPIを使用して、ブロックストレージシステム565からのAPIコールを受信してこれに応答する機能をストレージシステム597に提供する。一方、ストレージシステム592は、ストレージシステム597が使用したものとは異なり、またブロックストレージサービス565が使用しているAPIを使用する。
【0054】
一実施形態において、一連のスナップショットコピー(例えば、ストレージシステム592上に格納されているスナップショットコピー557a1〜557an)は、ブロックストレージサービス565がサポートする1つ以上のボリュームにアタッチされているコンピューティングインスタンスのユーザからの、バックアップ要求のセットのような入力から得られる。このようなバックアップ要求は、ブロックストレージサービス565のブロックレベルストレージ上のボリュームA555aに格納されているデータのバックアップコピーのセットの全てを格納する特定の格納先(例えばストレージシステム592)を指定することができる。スナップショットコピー557a1〜557anとして示す一連のスナップショットコピーは、ユーザが一連のボリュームスナップショット全体を要求することによって得られ、この場合、スナップショットコピー557a1〜557anの各々は、特定の時間点におけるボリュームA555aの完全な状態を表す。
【0055】
このような要求に応答し、ブロックストレージサービス565は、
図2Bのバックアップ作成モジュール276(上述のもの)のようなバックアップ作成モジュールを使用して、時間t
1においてスナップショットA1 556a1を作成し、さらに、
図2Bのバックアップストレージマネージャ282のようなバックアップストレージマネージャを使用して、スナップショットA1コピー557a1を内部ネットワーク585経由でストレージシステム592上に格納する。こうして、スナップショットコピーA1 557a1が、時間t
1におけるボリュームA555aの状態のバックアップコピーとして保存される。いくつかの実施形態において、この後、ブロックストレージサービス565上のスペースを維持するために、ブロックストレージサービス565がスナップショットA1 556a1を削除または解放する。
【0056】
次に時間t
2において、ブロックストレージサービス565がスナップショットA2 556a2を作成し、スナップショットA2コピー557a2を内部ネットワーク585経由でストレージシステム592上に格納する。こうして、スナップショットA2コピー557a2が、時間t
2におけるボリュームA555aの状態のバックアップコピーとして保存される。いくつかの実施形態において、この後、ブロックストレージサービス565上のスペースを維持するために、ブロックストレージサービス565がスナップショットA2 556a2を削除または解放する。
【0057】
次に、時間t
nにおいて、ブロックストレージサービス565がスナップショットAn556anを作成し、スナップショットAnコピー557anを内部ネットワーク585経由でストレージシステム592上に格納する。こうして、スナップショットAnコピー557anが、時間t
nにおけるボリュームA555aの状態のバックアップコピーとして保存される。いくつかの実施形態において、この後、ブロックストレージサービス565上のスペースを維持するために、ブロックストレージサービス565がスナップショットAn556anを削除または解放する。こうして、ユーザからのストレージシステム592上の一連のボリュームバックアップコピー全体を要求するユーザ要求が、スナップショットコピー557a1〜557anの作成および格納によって満たされる。スナップショットコピー557a1〜557anの各々は、特定の時間点におけるボリュームA555aの完全な状態を表す。
【0058】
さらに一実施形態では、例えばストレージシステム592上に格納されたスナップショットコピー557b1およびスストレージシステム597上に格納されたナップショットコピー557b2のような一連のスナップショットコピーは、例えばブロックストレージサービス565がサポートする別のコンピューティングインスタンスを採用している別ユーザからのバックアップ要求といった入力によって得られる。こうしたバックアップ要求では、ブロックストレージサービス565のブロックレベルストレージ上のボリュームB555b内にあるデータのバックアップコピーセットの交互の要素を格納するための格納先群に、例えばストレージシステム592およびストレージシステム597を指定することができる。スナップショットコピー557b1〜557b2として示された一連のスナップショットコピーは、ユーザが一連のボリュームスナップショット全体を要求することで得られ、この場合、スナップショットコピー557b1〜557b2の各々は、特定の時間点におけるボリュームB555bの完全な状態を表す。したがって、スナップショットコピー557b1〜557b2を作成することで、例えばストレージシステム592とストレージシステム597といった複数の格納先間で交互にローディングを行うバックアップコピーセットが得られる。
【0059】
このような要求に応じて、ブロックストレージサービス565が、時間t
1においてスナップショットB1 556b1を作成し、スナップショットB1コピー557b1を内部ネットワーク585経由でストレージシステム592上に格納する。こうして、スナップショットB1コピー557b1が、時間t
1におけるボリュームB555bの状態のバックアップコピーとして保存される。いくつかの実施形態において、この後、ブロックストレージサービス565上のスペースを維持するために、ブロックストレージサービス565がスナップショットB1 556b1を削除または解放する。
【0060】
次に時間t
2において、ブロックストレージサービス565がスナップショットB2 556b2を作成し、スナップショットB2コピー557b2を内部ネットワーク585およびネットワーク570経由でストレージシステム597上に格納する。こうして、スナップショットB2コピー557b2が、時間t
2におけるボリュームB555bの状態のバックアップコピーとして保存される。いくつかの実施形態において、この後、ブロックストレージサービス565上のスペースを維持するために、ブロックストレージサービス565がスナップショットB2 556b2を削除または解放する。こうして、ストレージシステム592およびストレージシステム597上の一連のボリュームバックアップコピー全てを要求するユーザ要求が、スナップショットコピー557b1〜557b2の作成および格納によって満たされた。スナップショットコピー557b1〜557b2の各々は、特定の時間点におけるボリュームB555bの完全な状態を示している。
【0061】
さらに一実施形態では、例えばストレージシステム597上に格納されたスナップショットN1コピー557n1およびストレージシステム592上に格納されたスナップショットN2コピー557n2といった一連のスナップショットコピーは、ブロックストレージサービス565がサポートする別のコンピューティングインスタンスを採用しているさらに別のユーザからのバックアップ要求のような入力によって得られる。こうしたバックアップ要求は、ブロックストレージサービス565のブロックレベルストレージ上のボリュームN555n内に格納されているデータのバックアップコピーセットの複製要素を格納するための格納先群に、例えばストレージシステム592およびストレージシステム597を指定できる。スナップショットコピー557n1〜557bnとして示されている一連の複製スナップショットコピーは、一連のボリュームスナップショット全体を要求するユーザ要求から得られ、この場合、スナップショットコピー557n1〜557n2の各々は同一の時間点におけるボリュームN555nの完全な状態を表す。したがって、スナップショットコピー557n1〜557n2を作成することで、ストレージシステム592とストレージシステム597の間に冗長的な可用性を提供するバックアップコピーセットが得られる。
【0062】
このような要求に応答して、ブロックストレージサービス565が時間t
1においてスナップショットN1 556n1を作成し、スナップショットN1コピー557n1を内部ネットワーク585およびネットワーク570経由でストレージシステム597上に格納する。こうして、スナップショットコピーN1 557n1が、時間t
1におけるボリュームN555nの状態のバックアップコピーとして保存される。次にブロックストレージサービス565は、スナップショットN1コピー557n2を内部ネットワーク585経由でストレージシステム592上に格納する。こうして、スナップショットN1コピー557n2が、時間t
1におけるボリュームN555nの状態のバックアップコピーとして保存される。いくつかの実施形態において、その後、ブロックストレージサービス565上のスペースを維持するために、ブロックストレージサービス565がスナップショットN1 556n1を削除または解放する。
【0063】
図6は、一実施形態に従ってボリューム部分の一連のバックアップコピーを格納するための一連の格納時の対話を示す高レベルブロック図である。ブロックストレージサービス665は一連のボリューム655a〜655nを格納し、スナップショット656a〜656nのセットを作成する。ボリュームA655aはチャンク655a1〜655anに分割され、スナップショットA656aはチャンク656a1〜656anに分割される。チャンク655a1〜655anおよびチャンク656a〜656nの各々は、例えばあらゆる特定のチャンク内に格納されたデータ項目間になんらの必要な論理関係も持たない、固定サイズレンジのブロックストレージアドレスのような、ボリュームA655aのデータのサブセットを表す。これに対し、ボリュームB655bおよびスナップショットB656bは複数のファイルに分割される。ボリュームB655bはファイル655b1〜655bnに、スナップショットB656bはファイル656b1〜656bnに分割される。ファイル655b1〜655bnおよびファイル656b1〜656bnは、ボリュームB655bのデータの論理サブセットをそれぞれ表す。
【0064】
ストレージシステム697aは、スナップショット656aからのチャンクコピー657a1〜657a2、ならびにスナップショット656bからのファイルコピー657b1〜657bnを格納する。一実施形態において、ストレージシステム697aは
図2Aのストレージシステム297と類似している。ストレージシステム697aは、ネットワーク670を使用してブロックストレージサービス665と通信する。同様に、ストレージシステム697bは、スナップショット656aからのチャンクコピー657a3〜657an、ならびにスナップショット656bからのファイルコピー658b1〜658bnを格納する。一実施形態において、ストレージシステム697bは
図2のストレージシステム297と類似している。ストレージシステム697bは、ネットワーク670を使用してブロックストレージサービス665と通信する。一実施形態において、バックアップストレージアダプタ650により、ブロックストレージサービス665は、要求をAPIコールとしてストレージシステム697aへ送り、またストレージAPIフォーマットにてストレージシステム697aが送ってくるストレージAPIコールへの応答を受信できるようになる。ストレージAPIフォーマットはストレージシステム697aが使用するフォーマットであるが、ストレージサービス665はストレージアダプタ650がないとこれを使用することができない。一実施形態では、ストレージシステム697bおよびブロックストレージサービス665は、共通のAPIフォーマットを使用することで、バックアップストレージアダプタ650のサービスを受けなくても通信できる。代替実施形態において、バックアップストレージアダプタ650により、ブロックストレージサービス665は、要求をAPIコールとしてストレージシステム697bへ送り、またストレージAPIフォーマットにてストレージシステム697bが送ってくるストレージAPIコールへの応答を受信できるようになる。ストレージAPIフォーマットはストレージシステム697bが使用するフォーマットであるが、ストレージサービス665はストレージアダプタ650がないとこれを使用することができない。ストレージシステム697aおよびストレージシステム697bは、同一または異なるエンティティによって制御される。
【0065】
一実施形態において、一連のチャンクコピー、例えばストレージシステム697aおよびストレージシステム697b上に格納されているチャンクコピー657a1〜657anは、例えばブロックストレージサービス665によりサポートされたファイルまたはデータチャンクへのアクセスを提供している1つ以上のボリュームにアタッチされているコンピューティングインスタンスのユーザからのバックアップ要求のような入力によって得られる。このようなバックアップ要求は、ブロックストレージサービス665のブロックレベルストレージ上のボリュームA655aに格納されたデータの各部分のバックアップコピーのセットの各バックアップコピーを格納する格納先に、例えばストレージシステム697aおよびストレージシステム697bを指定することができる。チャンクコピー657a1〜657anは、ブロックレンジにより定義されたスナップショットの各部分を複数のストレージシステムに分散させよとユーザが要求することで得られたものである。チャンクコピー657a1〜657anを合わせると、特定の時間点における1つの状態にあるボリュームA655aの完全なスナップショットを表す。
【0066】
ブロックストレージサービス665は、上記のような要求に応答して、時間t
1におけるスナップショットA656aを作成し、また、ストレージシステム697a上へのチャンク657a1〜657a2の格納と、ストレージシステム697b上へのチャンク657a3〜657anの格納の両方を行う。こうして、チャンク657a1〜657anが、時間t
1におけるボリュームA655aの状態のバックアップコピーとして保存される。いくつかの実施形態において、この後に、ブロックストレージサービス665上のスペースを維持するために、ブロックストレージサービス665がスナップショットA656aを削除または解放する。
【0067】
一実施形態ではさらに、例えばストレージシステム697a上に格納されたファイルコピー657b1〜657bnならびにストレージシステム697b上に格納されたファイルコピー658b1〜658bnといった一連のバックアップファイルコピーは、ブロックストレージサービス665がサポートする1つ以上のボリュームにアタッチされたコンピューティングインスタンスのユーザがバックアップ要求のような入力を行うことで得られる。こうしたバックアップ要求は、ブロックストレージサービス665のブロックレベルストレージ上のボリュームB655bに格納されたデータのバックアップコピーのセットの複写要素のための宛先群を、ストレージシステム697aおよびストレージシステム697bのように指定できる。ファイルコピー657b1〜657bnおよびファイルコピー658b1〜658bnとして示される一連のバックアップコピーは、ユーザからのスナップショット作成要求によって得られ、この場合、スナップショット内の各ファイルが2つの場所に別々に複写され、また、ファイルコピー657b1〜657bnのセットおよびファイルコピー658b1〜658bnのセットの両方によって特定の時間点におけるボリュームB655bの完全な状態が表される。したがって、ファイルコピー657b1〜657bnおよびファイルコピー658b1〜658bnを作成することで、ボリュームB655bの冗長的なバックアップを提供するバックアップコピーのセットが得られる。
【0068】
ブロックストレージサービス665は上記のような要求に応答し、時間t
1におけるスナップショットB656bを作成し、ファイルコピー657b1〜657bnをネットワーク670経由でストレージシステム697a上に格納する。ブロックストレージサービス665は、ファイルコピー658b1〜658bnをネットワーク670経由でストレージシステム697b上に格納する。こうして、ファイルコピー657b1〜657bnおよびファイルコピー658b1〜658bnが、時間t
1におけるボリュームB655bの状態の冗長的なバックアップコピーとして保存される。いくつかの実施形態において、この後に、ブロックストレージサービス665上のスペースを維持するために、ブロックストレージサービス665がスナップショットB656bを削除または解放する。
【0069】
図7は、一実施形態に従って一連のボリュームスナップショットを復元するための一連のストレージの対話を示す高レベルブロック図である。ブロックストレージサービス765は、ネットワーク770上でストレージシステム797aおよびストレージシステム797bと通信する。一実施形態において、ストレージシステム797aは
図2Aの格納システム297と類似している。ストレージシステム797aは、スナップショットコピー757a1〜757anを保持しており、その各々が特定の時間点におけるボリュームAの完全な状態を表す。一実施形態において、スナップショットコピー757a1〜757anは、スナップショットコピー557a1〜557anに関連して上で述べたものと類似の方法で作成される。ストレージシステム797aはさらにスナップショットB1コピー757b1を保持する。
【0070】
ブロックストレージサービス765がサポートするコンピューティングインスタンスのユーザは、例えばコンピューティングインスタンスのユーザが見たいと思うボリュームAの復元の時間点に基づいて、スナップショットコピー757a1〜757anから特定の1つを選択することで、スナップショットコピー757a1〜757anのうちの1つからボリュームAを復元するように要求できる。ブロックストレージサービス765はこうした要求に応答して、ボリュームAの作成に必要な構成を決定する。この構成は、例えばスナップショットコピー757al〜757anのうち好みの1つのインポート場所、例えばスナップショットAnコピー757anであってよい。ブロックストレージサービス765は、ボリュームA755aとラベル付けした空の受信側ボリュームを作成する。次にブロックストレージサービス765は、スナップショットAnコピー757anのコンテンツをブロックストレージサービス765へ送信するように要求する取り出し要求をストレージシステム797aへ送信する。一実施形態において、ブロックストレージサービス765がスナップショットAnコピー757のコンテンツを受信すると、このスナップショットコピー757のコンテンツがスナップショットAN756aとしてデポジットされ、つづいてボリュームA755aへ転送される。一実施形態において、受信されてボリュームA755aへ転送されたこのコンテンツは、スナップショットコピー757anからスナップショットAN756n内への全てのデータの受信が完了する前に利用可能となり、コンピュータインスタンスのユーザに供給される。さらに一実施形態では、ストレージシステム797aおよびブロックストレージシステム765は、これらが共有するAPIプロトコルを使用して通信することができる。
【0071】
同様に、ストレージシステム797aはスナップショットコピー757b1を、ストレージシステム797bはスナップショットコピー757b2を保持し、各々のスナップショットコピーは特定時点におけるボリュームBの完全な状態を表す。一実施形態では、スナップショットコピー757b1〜757b2は、
図5のスナップショットコピー557b1〜557b2に関連して上述したものと類似の方法で作成される。
【0072】
ブロックストレージサービス765がサポートするコンピューティングインスタンスのユーザは、例えばコンピューティングインスタンスのユーザが見たいと思うボリュームBの復元の時間点に基づいてスナップショットコピー757b1〜757b2のうちの特定の1つを選択することで、スナップショットコピー757b1〜757b2のうちの1つからボリュームBの復元を要求することができる。ブロックストレージサービス765はこうした要求に応答して、ボリュームBの作成に必要な構成、例えばスナップショット757b1〜757b2の適切な1つをインポートする場所を決定する。ブロックストレージサービス765は、ボリュームB755bとラベル付けした空の受信側ボリュームを作成する。次にブロックストレージサービス765は、スナップショットコピー757b1のコンテンツをブロックストレージサービス765へ送信せよと要求する取り出し要求をストレージシステム797aに送信する。一実施形態において、ブロックストレージサービス765がスナップショットコピー757b1のコンテンツを受信すると、スナップショットコピー757b1のコンテンツがスナップショットB1 756bとしてデポジットされ、その後、ボリュームB755bへ転送される。
【0073】
さらに、ストレージシステム797bが、各々が特定の時間点におけるボリュームNの完全な状態を表したスナップショットコピー757n1〜757n2を保持する。一実施形態では、スナップショットコピー757n1〜757n2は、
図5のスナップショットコピー557n1〜557n2に関連して上述したものと類似の方法で作成される。
【0074】
ブロックストレージサービス765がサポートするコンピューティングインスタンスのユーザは、例えばコンピューティングインスタンスのユーザが見たいと思うボリュームNの復元の時間点に基づいて、スナップショットコピー757n1〜757n2から特定の1つを選択することで、スナップショットコピー757nl〜757n2のうちの1つからボリュームNの復元を要求することができる。ブロックストレージサービス765がこうした要求に応答して、ボリュームNの作成に必要な構成、例えばスナップショットコピー757n1〜757n2のインポート場所を決定する。ブロックストレージサービス765は、ボリュームN755nとラベル付けした空の受信側ボリュームを作成する。次にブロックストレージサービス765が、スナップショットN2コピー757n2のコンテンツを取り出してブロックストレージサービス765へ送信するように要求する取り出し要求をストレージシステム797bへ送る。一実施形態において、ブロックストレージサービス765がスナップショットN2コピー757n2のコンテンツを受信すると、スナップショットコピー757n2のコンテンツがスナップショットN2 756nとしてデポジットされ、その後ボリュームN755nへ転送される。一実施形態では、ブロックストレージシステム765が使用するプロトコル向けのフォーマットのAPI要求をストレージシステム797bが使用するプロトコル向けのフォーマットのAPI要求にトランスレートするために、ストレージシステム797bとブロックストレージシステム765がブロックストレージアダプタ760を使用して通信することができるようになっている。
【0075】
図8は、一実施形態に従ってボリューム部分の一連のバックアップコピーを復元するための一連のストレージの対話を示す高レベルブロック図である。ブロックストレージサービス865は、ネットワーク870経由でストレージシステム897aおよびストレージシステム897bと通信する。一実施形態において、ストレージシステム897aは
図2のストレージシステム297と類似している。ストレージシステム897aは、チャンクコピー857al〜857a2ならびにファイルコピー857b1〜857bnを格納する。同様に、ストレージシステム897bは、チャンクコピー857a3〜857anならびにファイルコピー858b1〜858bnを格納する。一実施形態において、ストレージシステム897bは
図2のストレージシステム297と類似している。ストレージシステム897bは、ネットワーク870を使用してブロックストレージサービス865と通信する。一実施形態において、バックアップストレージアダプタ850は、ブロックストレージサービス865が要求をストレージシステム897aへAPIコールとして送り、またストレージAPIフォーマットにてストレージシステム897aが送ってくるストレージAPIコールへの応答を受信できるようにする。ストレージAPIフォーマットはストレージシステム897aが使用するフォーマットであるが、ストレージサービス865はストレージアダプタ850がないとこれを使用することができない。一実施形態において、ストレージシステム897bおよびブロックストレージサービス865は、共通のAPIフォーマットを使用することにより、バックアップストレージアダプタ850のサービスを受けずに通信できる。代替実施形態において、バックアップストレージアダプタ850は、ブロックストレージサービス865が、ストレージシステム897bへ要求をAPIコールとして送り、またストレージAPIフォーマットにてストレージシステム897bが送ってくるストレージAPIコールへの応答を受信できるようにする。ストレージAPIフォーマットはストレージシステム897bが使用するフォーマットであるが、ストレージサービス865はストレージアダプタ850がないとこれを使用することができない。ストレージシステム897aおよびストレージシステム897bは、同一または異なるエンティティによって制御される。
【0076】
ブロックストレージサービス865がサポートするコンピューティングインスタンスのユーザは、チャンクコピー857a1〜857anで構造されたスナップショットからボリュームAを復元するように要求できる。ブロックストレージサービス865がこの要求に応答し、ボリュームAの作成に必要な構成、例えばストレージシステム897aおよびストレージシステム897b上のチャンクコピー857al〜857anのインポート場所を決定する。ブロックストレージサービス865は、ボリュームA855aとラベル付けした空の受信側ボリュームを作成する。次にブロックストレージサービス865が、チャンクコピー857al〜857anのコンテンツをブロックストレージサービス865へ送信するように要求する取り出し要求を、ストレージシステム897aおよびストレージ897bへ送信する。
【0077】
一実施形態において、ブロックストレージサービス865がチャンクコピー857al〜857anのコンテンツを受信すると、チャンクコピー857a1〜857anのコンテンツが、チャンク856a1〜856anを含んだスナップショットA856aとしてデポジットされ、その後、チャンク855a1〜855anとしてボリュームAへ転送される。一実施形態において、受信されボリュームA855aへ転送されたコンテンツは、チャンクコピー857a1〜857anからの全データがスナップショットA856A内に受信完了となる前に、利用可能となりコンピューティングインスタンスのユーザに供給される。
【0078】
ブロックストレージサービス865がサポートするコンピューティングインスタンスのユーザは、ファイルコピー857b1〜857bnならびに858b1〜858bnで構造されたスナップショットB856bからボリュームB855bを復元するよう要求することができる。ブロックストレージサービス865はこうした要求に応答して、ボリュームBの作成に必要な構成、例えばストレージシステム897aおよびストレージシステム897b上のファイルコピー857b1〜857bnおよび858b1〜858bnをインポートする場所を決定する。一実施形態において、ファイルコピー857b1〜857bnおよび858b1〜858bnの各々のインポート元の場所を、ストレージシステム897aおよびストレージシステム897bへのローディングの分散や、あるいはサーバの信頼性や応答性といった他の基準に基づいて決定することができる。
【0079】
詳細には、ストレージシステム897a上に常駐するファイルコピー857b1〜857bnと、ストレージシステム897b上に常駐するファイルコピー858b1〜858bnとで構造されたスナップショットB856bからボリュームB855bを復元する機能によって、複数形式のストレージ柔軟性が得られる。例えば、ストレージシステム897a上に常駐するファイルコピー857b1〜857bnの取り出しが遅速化するか、またはストレージシステム897aが全く応答しなくなった場合には、ストレージシステム897b上に常駐するファイルコピー858b1〜858bnを取り出すことで、スナップショットB856bについてのデータのインポートを加速することが可能である。あるいは、ファイルコピー857b1〜857bnがストレージシステム897a上に、またファイルコピー858b1〜858bnがストレージシステム897b上に常駐していることで、ファイルコピーがまず高速なストレージサーバ上で作成され、その後により遅速なサーバへ低速でコピーされて、最終的には時間と共に(いくつかの実施形態では、前回使用の時間または作成の時間から計測される)高速なサーバから削除されるというストレージ管理が可能になる。同様に、実施形態は、本開示の範囲から逸脱することなく、ストレージシステム897aに常駐のファイルコピー857b1〜857bnならびにストレージシステム897b上に常駐のファイルコピー858b1〜858bnの分散および使用と類似した複数コピーチャンクの分散を実行する。
【0080】
ブロックストレージサービス865は、ボリュームB855bとラベル付けした空の受信側ボリュームを作成する。次にブロックストレージサービス865が、ストレージシステム897aおよびストレージシステム897bのうちの選択した一方のコンテンツをブロックストレージサービス865へ送信するよう要求する取り出し要求を、ストレージシステム897aおよびストレージシステム897bへ送信する。
【0081】
一実施形態において、ファイルコピー857b1〜857bnおよび858b1〜858bnから選択された1つのファイルコピーのコンテンツがブロックストレージサービス865によって受信されると、ファイルコピー857b1〜857bnおよび858b1〜858bnから選択された1つのファイルコピーのコンテンツが、ファイル856b1〜856bnを含むスナップショットB856bとしてデポジットされ、その後、ファイル855b1〜855bnとしてボリュームB855bへ転送される。一実施形態において、受信されボリュームB855bへ転送されたコンテンツは、ファイルコピー857b1〜857bnおよび858b1〜858bnのうちの選択された1つからの全データがスナップショットB856B内に受信完了する前に利用可能となりコンピューティングインスタンスのユーザに供給される。
【0082】
コンピュータシステム実施形態の例
いくつかの実施形態において、上述した方法、技術、または構成要素はいずれも、コンピュータからアクセスできる媒体経由での格納ならびに伝達が可能な命令およびデータとして実現できるものとみなされる。このような方法または技術には、例えば、また限定なく、個別のユーザのセットの個別のコンピューティングインスタンスのセットに対しブロックレベルストレージを提供するブロックストレージサービスの様々な方法が含まれる。この場合、実施形態は、個別のユーザのセットの個別のコンピューティングインスタンスのセットによって、ブロックレベルストレージに格納されているデータのバックアップコピーを作成するためのバックアップコピー機能と、バックアップコピーを個別のユーザのセットのそれぞれが指定した異なる格納先の場所に格納するための格納機能との両方を提供し、またこれらの機能は、上で述べ、
図1〜
図7に示したエレメントおよび方法によって、あるいはこのようなエレメントおよび方法の適切な応用形によって実行されるものである。このような命令は、特定の目的(例えば、ウェブサービストラフィックの処理、高精度の数字演算を行うなど)、ならびに高位機能(例えばオペレーティングシステム機能性、仮想化機能性、ネットワーク通信機能性、アプリケーション機能性、および/またはあらゆる他の適切な方法)にあつらえた特定の計算機能を行うために実行される。
【0083】
コンピュータシステムの例示的な一実施形態は、
図9に示すコンピュータからアクセスできる媒体を含む。コンピュータシステム900は、
図1の物理コンピュータシステム100の例示的な構成に相当する。これと同様に、様々な実施形態では、上述した様々なモジュールまたは方法のいずれの機能性も(例えば、オペレーティングシステム150、仮想化モジュール160、仮想マシン180、および/または上述した他のエレメントが提供するもの)、コンピュータシステム900の1つ以上のインスタンスによって実現され得る。同様、データセンター200の様々なエレメント、例えばノード210、コンピューティングシステム230、ブロックストレージサービス265、ローカルストレージサービス292、およびデータセンター200のような他の機能ユニットを、コンピュータシステム900の1つ以上複数のインスタンスで実現することができる。
【0084】
特に、
図1に示したシステムの異なる複数のエレメントを異なる複数のコンピュータシステム900によって実現できる点に留意されたい。例えば、仮想化モジュール160を1つのコンピュータ900上で実現し、一方で、仮想マシン200をこれとは異なるコンピュータシステム900上で、仮想化モジュール160の制御下において実現できる。同様に、複数のノード210ならびに複数のコンピューティングシステム230をそれぞれ異なるコンピュータシステム900によって実現し、一方で、ブロックストレージサービス265、リモートストレージシステム297、ローカルストレージシステム292をそれぞれ異なるコンピュータシステム900によって実現することができる。コンピューティングシステムの様々な実施形態において、
図9に示す様々な部分を除いた個々のコンピューティングシステム、ならびに
図9中では省略されている他の部分を追加した個々のコンピューティングシステムが組み立てられる。
【0085】
図示の実施形態において、コンピュータシステム900は、入出力(I/O)インターフェース930経由でシステムメモリ920に接続した1つ以上のプロセッサ910を含む。コンピュータシステム900は、I/Oインターフェース930に接続したネットワークインターフェース940をさらに含む。様々な実施形態において、コンピュータシステム900は1つのプロセッサ910を含むユニプロセッサシステム、あるいは複数のプロセッサ910(例えば2、4、8個、または別の適切な個数)を含むマルチプロセッサシステムであってよい。プロセッサ910は、命令を実行できるあらゆる適切なプロセッサであってよい。例えば、様々な実施形態において、プロセッサ910は汎用プロセッサまたは組み込みプロセッサであり、x86、PowerPC(登録商標)、SPARC(登録商標)、またはMIPS(登録商標)ISAのような様々な命令セットアーキテクチャ(ISA)、あるいは他のあらゆる適切なISAを実現する。マルチプロセッサシステムにおいて、通常、各プロセッサ910は同一のISAを実現できるが、しかし必ずしもそうでなくてもよい。
【0086】
システムメモリ920は、プロセッサ910からアクセスできる命令およびデータを格納するように構成される。様々な実施形態において、システムメモリ920はあらゆる適切なメモリ技術、例えばスタティックランダムアクセスメモリ(SRAM)、同期ダイナミックRAM(SDRAM)、不揮発性/フラッシュタイプメモリ、またはその他のあらゆるタイプのメモリを使用して実現される。図示の実施形態では、上述したような望ましい機能、方法、技術を実現する命令およびデータが、システムメモリ920内にコード925として格納される。いくつかの実施形態において、コード925は、プロセッサ910による直接の実行は不可能であるが、トランスレートすることでプロセッサ910が直接実行できる命令になる抽象形式で表示または符号化されるという望ましい機能を実現する命令およびデータを含んでいてよい。例えば、コード925は、プロセッサ910やプロセッサ910上で実行できる他のコード925によってエミュレートされ得るISA内で指定された命令を含んでいてよい。あるいは、コード925は、コンパイルまたは実行中に解釈される抽象プログラミング言語にて実現できる命令、手順または文を含んでいてもよい。非限定的な例として、コード925は、CまたはC++のような手順指向またはオブジェクト指向の言語、Perlのようなスクリプト言語、HTMLまたはXMLマークアップ言語、もしくは他のあらゆる適切な言語にて指定されたコードを含むことができる。
【0087】
一実施形態において、I/Oインターフェース930は、プロセッサ910と、システムメモリ920と、そしてネットワークインターフェース940や他の周辺インターフェースを含むデバイス内のあらゆる周辺デバイスとの間でI/Oトラフィックを調整するように構成される。いくつかの実施形態において、I/Oインターフェース930はあらゆる必要なプロトコル、タイミングを実行するか、あるいは、データ信号を或る構成要素(例えばシステムメモリ920)から別の構成要素(例えばプロセッサ910)での使用に適したフォーマットに変換するための他のデータ転換を実行する。いくつかの実施形態において、I/Oインターフェース930は、様々なタイプの周辺バスを介してアタッチされたデバイスのサポートを含んでいてよい。こうした周辺バスには、例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス標準またはユニバーサルシリアルバス(USB)標準の応用形がある。いくつかの実施形態において、I/Oインターフェース930の機能を、例えばノースブリッジおよびサウスブリッジといった2つ以上の別々の構成要素に分割することができる。また、いくつかの実施形態において、例えばシステムメモリ920につないだインターフェースのようなI/Oインターフェース930の機能性のいくつかまたは全てを、プロセッサ910内に直接取り入れることができる。
【0088】
ネットワークインターフェース940は、コンピュータシステム900とネットワーク120にアタッチされた他のデバイス(例えば他のコンピュータシステム)との間でデータ交換を行えるように構成される。様々な実施形態において、ネットワークインターフェース940は、有線または無線式の汎用データネットワーク、例えばあらゆる適切なタイプのイーサネット(登録商標)ネットワークを介して、アナログ音声ネットワークやデジタルファイバ通信ネットワークのような遠隔通信/電話ネットワーク経由、ファイバチャネルSANのようなストレージエリアネットワーク経由、あるいは他のあらゆる適切なタイプのネットワークおよび/またはプロトコル経由で通信をサポートする。
【0089】
いくつかの実施形態において、システムメモリ920は、上で述べたような命令およびデータを格納するように構成された、コンピュータからアクセスできるストレージ媒体の一実施形態であってよい。しかし、他の実施形態では、命令および/またはデータは、コンピュータからアクセスできる多様なタイプのストレージ媒体上で受信、送信、格納される。概して、コンピュータからアクセスできるストレージ媒体には、I/Oインターフェース930を介してコンピュータシステム900に接続したディスクやCD/DVD−ROMといった、磁気または光学媒体のようなストレージ媒体またはメモリ媒体が含まれる。コンピュータからアクセスできるストレージ媒体には、コンピュータシステム900のいくつかの実施形態の中にシステムメモリ920または別タイプのメモリとして含まれているあらゆる揮発性または不揮発性ストレージ媒体、例えばRAM(SDRAM、DDR、SDRAM、RDRAM、SRAMなど)、ROMなどが含まれる。コンピュータからアクセスできるストレージ媒体には、総体的に、ネットワークインターフェース940を介して実現されるネットワークおよび/または無線リンクのような通信媒体経由で伝達される送信媒体または信号(電気信号、電磁信号、デジタル信号など)を介してアクセスできる。
【0090】
上記で実施形態を非常に詳細に説明したが、上述の開示を十分に理解した当業者には多数の応用形および改良形が明白となるだろう。以下の請求項は、こうした応用形および改良形の全てを包括するものと解釈されることが意図される。
【0091】
付記1.方法であって、
ブロックストレージサービスにより、複数の個別のユーザ用の複数の個別のコンピューティングインスタンスにブロックレベルストレージを提供することと、
上記ブロックレベルストレージ内に格納されたデータのバックアップコピーを上記複数の個別のユーザ用の上記複数の個別のコンピューティングインスタンスで作成し、このバックアップコピーを上記複数の個別のユーザがそれぞれ指定した異なる格納先に格納するバックアップコピー機能をブロックストレージサービスによって提供することと、
上記複数の個別のユーザのうちの特定の1人用のブロックレベルストレージに格納されているデータの少なくとも一部分のバックアップコピーを格納するために、上記複数の個別のユーザのうちの特定の1人からの、特定の格納先を指定する入力をブロックストレージサービスによって受信することと、
上記複数の個別のユーザの上記特定の1人用のブロックレベルストレージに格納されているデータの少なくとも一部分のバックアップコピーを作成し、上記複数の個別のユーザのうちの上記特定の1人用のブロックレベルストレージに格納されているデータの少なくとも一部分のバックアップコピーを特定の格納先に格納することと、
ブロックストレージサービスによって、上記複数の個別のユーザのうちの別の1人からの、上記複数の個別のユーザのうちの別の1人用ブロックレベルストレージに格納されたデータの少なくとも一部分のバックアップコピーを格納するために、異なる格納先を指定する入力を受信することと、
上記複数の個別のユーザのうちの上記別の1人用のブロックレベルストレージに格納されたデータの少なくとも一部分のバックアップコピーを作成し、上記複数の個別のユーザのうちの上記別の1人用のブロックレベルストレージに格納されたデータの少なくとも一部分のバックアップコピーを、異なる格納先に格納することと、を含み、
特定の格納先と異なる格納先とは、互いに遠く離れた場所にある異なるストレージシステムのためのものである、方法。
【0092】
付記2.バックアップコピー用であるデータの少なくとも一部分を、上記特定のユーザ用の上記複数の個別のコンピューティングインスタンスのうちの1つにアタッチされるブロックレベルストレージボリュームとして指定する入力を、上記特定のユーザから受信することをさらに含む、付記1に記載の方法。
【0093】
付記3.バックアップコピー用であるデータの少なくとも一部分を、ブロックレベルストレージに格納された1つ以上のファイルとして指定する入力を、特定のユーザから受信することをさらに含む、付記1に記載の方法。
【0094】
付記4.バックアップコピー用であるデータの少なくとも一部分をブロックレベルストレージ内のデータ場所レンジとして指定する入力を、特定のユーザから受信することをさらに含む、付記1に記載の方法。
【0095】
付記5.上記特定のユーザ用のブロックレベルストレージに格納されているデータの少なくとも一部分は、上記特定のユーザ用の上記複数の個別のコンピューティングインスタンスのうちの少なくとも1つにアタッチされたブロックレベルストレージボリュームであり、上記方法は、上記ブロックレベルストレージボリュームのポイントインタイムスナップショットを作成することをさらに含み、上記バックアップコピーはこのポイントインタイムスナップショットのコピーである、付記1に記載の方法。
【0096】
付記6.バックアップコピーを格納するために少なくとも1つの別の格納先を指定する入力を、特定のユーザから受信することと、
ブロックストレージサービスによって、上記特定の格納先に加え、バックアップコピーを少なくとも1つの別の格納先に格納することと、をさらに含む、付記1に記載の方法
【0097】
付記7.方法であって、
上記特定のユーザ用のブロックレベルストレージに格納されているデータの別の部分のバックアップコピーを格納するために少なくとも1つの他の格納先を指定する入力を、特定のユーザから受信することと、
ブロックストレージサービスによって、データの別の部分のバックアップコピーを他の格納先に格納することと、を含む、付記1に記載の方法。
【0098】
付記8.上記特定の格納先は、ブロックストレージサービスと同一のエンティティによって操作されるストレージシステムのためのものであり、
異なる格納先は、異なるエンティティによって操作されるストレージシステムのためのものである、付記1に記載の方法。
【0099】
付記9.特定の格納先への格納と、上記異なる格納先への格納の両方は、共通のアプリケーションプログラミングインターフェース(API)に従って実行される、付記1に記載の方法。
【0100】
付記10.特定の格納先への上記格納と、異なる格納先への上記格納とは、異なるAPIに従って実行される、付記1に記載の方法。
【0101】
付記11.上記特定のユーザから、特定の格納先にデータを格納するためにインターフェースモジュールを受信することをさらに含み、上記インターフェースモジュールは、特定の格納先のためのストレージAPIに従ってストレージオペレーションを実行する、付記10に記載の方法。
【0102】
付記12.ブロックレベルストレージ内に特定のユーザ用のストレージボリュームを作成または復元することをさらに含み、上記作成することは、上記特定の格納先から上記バックアップコピーを取り出すことを含む、付記1に記載の方法。
【0103】
付記13.システムであって、
ブロックストレージサービスを実現するように構成された1つ以上のコンピュータを備え、このブロックストレージサービスは、
或るユーザ用のコンピューティングインスタンスからデータを格納するブロックレベルストレージと、
上記ユーザが、上記ユーザ用のブロックレベルストレージ内に格納されている各データのバックアップコピーを格納するために格納先をそれぞれ指定できるように構成されたインターフェースであって、上記それぞれの格納先の少なくともいくつかは、互いに遠く離れた場所にある異なるストレージシステムのためのものであるインターフェースと、
上記ユーザ用の上記複数の個別のコンピューティングインスタンスによって、上記ブロックレベルストレージに格納されているデータのバックアップコピーを作成し、このバックアップコピーを上記インターフェース経由で上記ユーザが指定した異なる格納先の場所に格納するためのバックアップコピー機能と、を備える、システム。
【0104】
付記14.ブロックレベルストレージは、複数の個別のユーザ用の複数の個別のコンピューティングインスタンスからのデータを格納するようにさらに構成されており、
インターフェースは、上記複数の個別のユーザが、上記複数の個別のユーザ用のブロックレベルストレージに格納されている上記各データの上記バックアップコピーを格納するために、上記格納先をそれぞれ指定できるようにさらに構成されており、
バックアップコピー機能は、上記複数の個別のユーザ用の上記ブロックレベルストレージに格納されているデータのバックアップコピーを作成し、このバックアップコピーを、上記複数の個別のユーザのうちの各ユーザが上記インターフェース経由で指定した異なる格納先の場所に格納するようにさらに構成されている、付記13に記載のシステム。
【0105】
付記15.ブロックレベルストレージは、各々が上記複数の個別のコンピューティングインスタンスの少なくとも1つにアタッチされた1つ以上のブロックレベルストレージボリュームを格納し、ブロックストレージサービスは、1つ以上のブロックレベルストレージボリュームのポイントインタイムスナップショットを作成するようにさらに構成されており、上記バックアップコピーはこのポイントインタイムスナップショットのコピーである、付記14に記載のシステム。
【0106】
付記16.上記インターフェースは、上記複数の個別のユーザのうちの所与の1人が、上記ブロックレベルストレージ内に上記複数の個別のユーザのうちの所与の1人のために格納されているデータのバックアップコピーを格納するために、複数の個別の格納先を指定できるようにさらに構成されている、付記14に記載のシステム。
【0107】
付記17.それぞれの格納先のうちの1つは、ブロックストレージサービスと同一のエンティティによって動作されるストレージシステムのためのものであり、それぞれの格納先のうちの別の1つは、上記とは異なるエンティティによって動作されるストレージシステムのためのものである、付記14に記載のシステム。
【0108】
付記18.上記ブロックストレージサービスは、バックアップコピーを、共通のアプリケーションプログラミングインターフェース(API)に従ってそれぞれの格納先に格納するように構成されている、付記14に記載のシステム。
付記19.上記ブロックストレージサービスは、バックアップコピーを、異なるAPIに準拠してそれぞれの格納先に格納するように構成されている、付記14に記載のシステム。
【0109】
付記20.ブロックストレージサービスは、上記特定のユーザから、特定の格納先へのデータを格納するためのプラガブルモジュールを受容するように構成され、プラガブルモジュールは、特定の格納先のためのストレージAPIに準拠してストレージ操作を実行する、付記19に記載のシステム。
【0110】
付記21.方法であって、
ブロックストレージサービスによって、ストレージボリュームのスナップショットコピーの取り出し元である特定のインポート場所を指定する入力を受信することと、
ブロックストレージサービスによって、スナップショットコピーを特定のインポート場所から取り出すことと、
スナップショットコピーに基づいて、ブロックストレージサービスのブロックレベルストレージ内にブロックレベルストレージボリュームを作成または復元することと、
複数の個別のユーザのうちの特定のユーザにブロックレベルストレージボリュームを提供することと、
複数の個別のユーザのうちの別の1人のための異なるインポート場所からの別のスナップショットコピーについて、上記受信すること、上記取り出すこと、上記作成または復元すること、および上記提供することを繰り返すことと、を含む、システム。
【0111】
付記22.複数の個別のユーザのうちの特定のユーザにブロックストレージ容量を提供することは、この複数の個別のユーザのうちの特定のユーザ用のコンピューティングインスタンスにブロックストレージボリュームを提供することをさらに含む、付記21に記載の方法。
【0112】
付記23.ブロックストレージサービスによって、スナップショットコピーを特定のインポート場所から取り出すことは、
コンピューティングインスタンスから受信した、選択されたデータをブロックレベルストレージボリュームから読み出しせよとの要求に応答して、選択されたデータを特定のインポート場所から取り出すことと、
選択されていないデータを特定のインポート場所から取り出すことと、をさらに含む、付記22に記載の方法。
【0113】
付記24.選択されていないデータを特定のインポート場所から取り出すことは、選択されていないデータを、予測される要求のパターンを表すために決定された順序で特定のインポート場所から取り出すことをさらに含む、付記23に記載の方法。
【0114】
付記25.コンピューティングインスタンスにブロックレベルストレージボリュームを提供することは、選択されていないデータの取り出しが完了する前に、選択されたデータを提供することをさらに含む、付記23に記載の方法。
【0115】
付記26.特定のインポート場所は、ブロックストレージサービスと同一のエンティティによって動作されるストレージシステムのためのものであり、これと異なるインポート場所は異なるエンティティによって動作されるストレージシステムのためのものである、付記22に記載の方法。
【0116】
付記27.上記取り出すことと、上記取り出しを上記繰り返すことは、両方とも共通のアプリケーションプログラミングインターフェース(API)に準拠して行われる、付記22に記載の方法。
【0117】
付記28.上記取り出すことと、上記取り出しを繰り返すこととは、異なるAPIに準拠して行われる、付記22に記載の方法。
【0118】
付記29.特定のインポート場所からデータを取り出すために、インターフェースモジュールを上記入力に関連した特定のユーザから受信することをさらに含み、上記インターフェースモジュールは、特定のインポート場所のためのストレージAPIに準拠して、取り出しオペレーションを行う、付記22に記載の方法。
【0119】
付記30.プログラム命令を格納する非一時的なコンピュータ可読媒体であって、上記プログラム命令は1つ以上のコンピュータ上で実行されると、
複数の個別のユーザ用の複数の個別のコンピューティングインスタンスからのデータを格納するブロックレベルストレージと、
上記複数の個別のユーザが、上記個別のユーザ用のブロックレベルストレージに格納されているそれぞれのデータのバックアップコピーを格納するために、それぞれの格納先を指定できるように構成されたインターフェースであって、それぞれの格納先の少なくともいくつかは、互いから遠く離れた場所にある異なるストレージシステムのためのものであるインターフェースと、
上記複数の個別のユーザ用の上記複数の個別のコンピューティングインスタンスによって、上記ブロックレベルストレージに格納されているデータのバックアップコピーを作成し、このバックアップコピーを、上記複数の個別のユーザのうちの各1人がインターフェース経由で指定した異なる格納先の場所に格納するバックアップコピー機能とを実現する、非一時的なコンピュータ可読媒体。
【0120】
付記31.ブロックレベルストレージは、上記複数の個別のコンピューティングインスタンスのうちの少なくとも1つにそれぞれアタッチされた1つ以上のブロックレベルストレージボリュームを格納し、ブロックストレージサービスは、この1つ以上のブロックレベルストレージボリュームのポイントインタイムスナップショットを作成するようにさらに構成されており、上記バックアップコピーはこのポイントインタイムスナップショットのコピーである、付記30に記載の方法。
【0121】
付記32.上記インターフェースは、上記複数の個別のユーザのうちの所与の1人が、上記複数の個別のユーザのうちの上記1人のために上記ブロックレベルストレージに格納されているデータのバックアップコピーを格納するために、複数の個別の格納先を指定できる、付記30に記載の媒体。
【0122】
付記33.それぞれの格納先のうちの1つは、ブロックストレージサービスと同一のエンティティによって動作されるストレージシステムのためのものであり、それぞれの格納先のうちの別の1つは、上記とは異なるエンティティによって動作されるストレージシステムのためのものである、付記30に記載の媒体。