(57)【要約】  ブロックストレージサービスを実現するためにコンピュータ群が構成される。ブロックストレージサービスは、個別のユーザのセットの個別のコンピューティングインスタンスのセットからのデータを格納するためのブロックレベルストレージを含む。インターフェースは、個別のユーザのセットが、これらの個別のユーザ用のブロックレベルストレージに格納されている各データのバックアップコピーを格納するそれぞれの格納先を指定できるように構成される。それぞれの格納先のうちの少なくともいくつかは、互いに遠く離れた場所にある異なるストレージシステムのためのものである。ブロックレベルストレージに格納されているデータのバックアップコピーを、個別のユーザのセットの個別のコンピューティングインスタンスのセットによって作成するためのバックアップコピー機能が提供される。このバックアップコピーは、複数の個別のユーザのそれぞれがインターフェースを介して指定した種々の格納先の場所に格納される。【選択図】図５
2013540314.tif 000002
【特許請求の範囲】
【請求項１】
システムであって、
ブロックストレージサービスを実現するように構成された１つ以上のコンピュータを備え、
前記ブロックストレージサービスは、
或るユーザ用のコンピューティングインスタンスからのデータを格納するブロックレベルストレージと、
前記ユーザが前記ユーザ用の前記ブロックレベルストレージに格納されているそれぞれのデータのバックアップコピーを格納するために、それぞれの格納先を指定できるように構成されたインターフェースであって、前記それぞれの格納先の少なくともいくつかが、互いに遠く離れた場所にある異なるストレージシステムのためのものである、インターフェースと、
前記ユーザ用の前記コンピューティングインスタンスによって、前記ブロックレベルストレージに格納されているデータのバックアップコピーを作成し、前記バックアップコピーを、前記ユーザにより前記インターフェースを介して指定された異なる格納先の場所に格納するバックアップコピー機能と、を備えている、システム。
【請求項２】
前記ブロックレベルストレージは、複数の個別のユーザ用の複数の個別のコンピューティングインスタンスからのデータを格納するようにさらに構成されており、
前記インターフェースは、前記複数の個別のユーザが、前記複数の個別のユーザ用の前記ブロックレベルストレージに格納されている前記それぞれのデータの前記バックアップコピーを格納するための前記それぞれの格納先を指定できるようにさらに構成されており、
前記バックアップコピー機能は、前記複数の個別のユーザ用の前記ブロックレベルストレージに格納されているデータのバックアップコピーを作成し、前記バックアップコピーを、前記複数の個別のユーザのそれぞれにより前記インターフェースを介して指定された異なる格納先の場所に格納するようにさらに構成されている、請求項１に記載のシステム。
【請求項３】
前記ブロックレベルストレージは、前記複数の個別のコンピューティングインスタンスのうちの少なくとも１つにそれぞれ付属されている１つ以上のブロックレベルストレージボリュームを格納し、前記ブロックストレージサービスは、前記１つ以上のブロックレベルストレージボリュームのポイントインタイムスナップショットを作成するようにさらに構成されており、前記バックアップコピーは前記ポイントインタイムスナップショットのコピーである、請求項２に記載のシステム。
【請求項４】
前記インターフェースは、前記複数の個別のユーザのうちの所与の１人が、前記複数の個別のユーザのうちの前記所与の１人用に前記ブロックレベルストレージに格納されているデータのバックアップコピーを格納するための複数の個別の格納先を指定できるようにさらに構成されている、請求項２に記載のシステム。
【請求項５】
前記それぞれの格納先のうちの１つは、前記ブロックストレージサービスと同一のエンティティによって動作されるストレージシステム用であり、前記それぞれの格納先のうちの別の１つは、異なるエンティティによって動作されるストレージシステム用である、請求項２に記載のシステム。
【請求項６】
前記ブロックストレージサービスは、共通のアプリケーションプログラミングインターフェース（ＡＰＩ）に従って、前記バックアップコピーを前記それぞれの格納先に格納するように構成されている、請求項２に記載のシステム。
【請求項７】
前記ブロックストレージサービスは、異なるＡＰＩに従って、前記バックアップコピーを前記それぞれの格納先に格納するように構成されている、請求項２に記載のシステム。
【請求項８】
前記ブロックストレージサービスは、前記特定のユーザから、データを特定の格納先に格納するプラガブルモジュールを受容するようにさらに構成されており、前記プラガブルモジュールは、前記特定の格納先についてのストレージＡＰＩに従って格納操作を実行する、請求項７に記載のシステム。
【請求項９】
ブロックストレージサービスによって、ストレージボリュームのスナップショットコピーを取り出す特定のインポート場所を指定する入力を受信することと、
前記ブロックストレージサービスによって、前記特定のインポート場所から前記スナップショットコピーを取り出すことと、
前記スナップショットコピーに基づいて、前記ブロックストレージサービスのブロックレベルストレージ内にブロックレベルストレージボリュームを作成または復元することと、
前記ブロックレベルストレージボリュームを複数の個別のユーザのうちの特定の１ユーザに提供することと、
前記複数の個別のユーザのうちの別の１人用の異なるインポート場所からの別のスナップショットコピーについて、前記受信、前記取り出し、前記作成または復元、および前記提供を繰り返すことと、を含む、方法。
【請求項１０】
複数の個別のユーザのうちの特定のユーザに前記ブロックストレージボリュームを提供することは、前記ブロックストレージボリュームを前記複数の個別のユーザのうちの前記特定のユーザ用のコンピューティングインスタンスに提供することをさらに含む、請求項９に記載の方法。
【請求項１１】
前記特定のインポート場所から前記ブロックストレージサービスによって前記スナップショットコピーを取り出すことは、
前記コンピューティングインスタンスから受信した、前記ブロックレベルストレージボリュームから選択されたデータを読み出す旨の要求に応答して、選択されたデータを前記特定のインポート場所から取り出すことと、
選択されていないデータを前記特定のインポート場所から取り出すことと、
をさらに含む、請求項１０に記載の方法。
【請求項１２】
前記選択されていないデータを前記特定のインポート場所から取り出すことは、前記選択されていないデータを、予測される要求のパターンを示すために決められた順序で前記特定のインポート場所から取り出すことをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記ブロックレベルストレージボリュームを前記コンピューティングインスタンスに提供することは、前記選択されていないデータの取り出しが完了する前に前記選択されたデータを提供することをさらに含む、請求項１１に記載の方法。
【請求項１４】
前記特定のインポート場所は、前記ブロックストレージサービスと同一のエンティティによって動作されるストレージシステム用であり、前記異なるインポート場所は、異なるエンティティによって動作されるストレージシステム用である、請求項１０に記載の方法。
【請求項１５】
前記特定のインポート場所からデータを取り出すためのインターフェースモジュールを、前記入力に関連する特定のユーザから受信することをさらに含み、前記インターフェースモジュールは、前記特定のインポート場所についてのストレージＡＰＩに従って取り出し操作を実行する、請求項１０に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
近年、ハードウェアリソース、ソフトウェア、情報ストレージの仮想化をネットワーク上でダイナミックに共有する技術の変革によって、信頼性、スケーラビリティ、およびコスト効率性が増した。より詳細には、この仮想化の出現によって得られた仮想コンピューティングリソースをオンデマンドで提供する機能により、リソース処理を行う消費者が、コンピューティングの必要性を認識した直後にコンピューティング費用を柔軟に構築できるようになった。このような仮想化により、顧客は、これまでのように準備サイクル中に固定ハードウェアを購入またはリースし、このハードウェアの製造および展開配置の遅延やコストに左右されるのではなく、プロセッササイクルおよび関連のリソースをオンデマンドで瞬時に購入できるようになった。また、ユーザは、コンピューティングの可用性を決定する上で将来の需要の予測の正確性に頼るのではなく、むしろ「必要な時に即」というベースでコンピューティングリソースの使用を購入できる。
【０００２】
しかし、コンピューティングリソースをオンデマンドで提供する仮想化された環境では、バックアップオペレーションなどに見られるように、仮想化されたコンピューティングシステムとの間でのデータのインポートおよびエクスポートに伴う難点と非柔軟性が依然として残る。大きなデータセグメントのインポートおよびエクスポートに対する現行の解決策は手間のかかる回避策ばかりであり、これらは時間がかかるため苛立たしく、また信頼性の低いものであることがわかっている。コンピューティングパワーへのアクセスがより柔軟になった一方で、データをコンピューティングプロセスへ移動させ、コンピューティングプロセスからエクスポートするための方法は満足できる状態に進化していない。
【図面の簡単な説明】
【０００３】
【図１】仮想化されたコンピューティングを実現するように構成されるシステムの例示的な実施形態を示す。
【図２Ａ】複数のコンピューティングシステムがプログラムを実行し、ストレージにアクセスする例示的な実施形態のネットワーク図を示す。
【図２Ｂ】一実施形態に従ってストレージ操作を行うブロックストレージサービスを示す。
【図３Ａ】一実施形態に従ってボリュームのバックアップコピーを作成および格納するプロセスステップの高レベルフローチャートである。
【図３Ｂ】一実施形態に従ってボリュームのバックアップコピーを作成および格納するプロセスステップの高レベルフローチャートである。
【図４】一実施形態に従って、バックアップコピーを取り出し、ボリュームを再作成するまたはインポートするプロセスステップの高レベルフローチャートである。
【図５】一実施形態に従ってボリュームスナップショットの一連のバックアップコピーを格納するための一連のストレージの対話を示す高レベルブロック図である。
【図６】一実施形態に従ってボリュームの各部分の一連のバックアップコピーを格納するための一連のストレージの対話を示す高レベルブロック図である。
【図７】一実施形態に従って一連のボリュームスナップショットを復元するための一連のストレージの対話を示す高レベルブロック図である。
【図８】一実施形態に従って部分的なバックアップコピーからボリュームを復元するための一連のストレージの対話を示す高レベルブロック図である。
【図９】一実施形態の実現に適したコンピューティングシステム構成要素の構成を示す高レベルブロック線図である。
【０００４】
本明細書で述べる技術は様々な改良および代替形を許容し得るが、その特定の実施形態が例示により図面に示され、本明細書中で詳細に説明される。しかし、図面および詳細な説明は、本開示を開示された特定の形態に限定することを意図するものではないことを理解されたい。むしろ、添付の特許請求の範囲によって定義される本開示の趣旨および範囲に含まれる全ての改良形態、均等物、および代替形態を網羅するものである。
【発明を実施するための形態】
【０００５】
序文
クラウドコンピューティングサービスまたは他の仮想化されたコンピューティングに伴うオンデマンドストレージを提供する環境においては、ブロックストレージサービスが、個別ユーザのセット用の個別のコンピューティングインスタンスのセットにブロックレベルストレージを提供する。コンピューティングインスタンスはブロックレベルストレージと共に、または相互に常駐している必要はない。実施形態は、個別ユーザのセット用の個別のコンピューティングインスタンスのセットがブロックレベルストレージに格納したデータのバックアップコピーを作成するためのバックアップコピー機能と、バックアップコピーを個別ユーザのセットのそれぞれが指定した種々の格納先の場所に格納するためのストレージ機能との両方を提供する。
【０００６】
したがって、実施形態は、クラウドコンピューティングサービスの個別のコンピューティングインスタンスが使用しているブロックレベルストレージからのデータエクスポートに伴う従来の難点を軽減する上で役立つ。また本発明の実施形態によれば、データのバックアップコピーをブロックレベルストレージから複数の格納先へ送る柔軟性が得られる。いくつかの実施形態において、複数の格納場所はブロックレベルストレージおよび互いの格納場所から遠く離れた場所にある。一実施形態において、ブロックストレージサービスは、個別ユーザのセットのうちの特定の１人から、この個別ユーザのセットのうちの特定の１人のブロックレベルストレージに格納されているデータの少なくとも一部分のバックアップコピーを格納する特定の格納先が指定された入力を受信する。ブロックストレージサービスは、複数の個別ユーザのセットのうちこの特定の１人のブロックレベルストレージに格納されているデータの一部分のバックアップコピーを作成し、この個別ユーザのセットのうちこの特定の１人のブロックレベルストレージに格納されているデータの一部分のバックアップコピーを特定の格納先に格納する。
【０００７】
同様に、ブロックストレージサービスは、上記個別ユーザのセットのうちの別の１人から、個別ユーザのセットのうちのこの別の１人のブロックレベルストレージに格納されているデータの一部分のバックアップコピーを格納するための、先の１人のものとは異なる格納先を指定する入力を受信する。ブロックストレージサービスはこれを受信すると、この個別ユーザのセットのうちのこの別の１人のブロックレベルストレージに格納されているデータの一部分のバックアップコピーを作成し、この個別ユーザのセットのうちのこの別の１人のブロックレベルストレージに格納されているデータの一部分のバックアップコピーを上記の異なる格納先に格納する。いくつかの実施形態において、特定の格納先およびこれと異なる格納先は、互いに遠く離れた場所に存在する異なった格納システムである。
【０００８】
仮想化されたコンピューティングの概要
概して、仮想化されたコンピューティング（「仮想コンピューティング」または「仮想化」とも呼ばれることがある）とは、ソフトウェアからは、複数の独立した「仮想」コンピュータシステムと同様に動作しているように見える物理コンピュータシステムを構成する技術を指すものであってよい。仮想化されたコンピューティングは、従来のマルチタスクオペレーティングシステム（ＯＳ）とは区別され得る。典型的なＯＳは、その内部において種々のプロセスを互いに干渉し合うことなく実行させることが可能な多数の保護されたメモリスペースと、ならびにこれらプロセスの実行を管理し、システムリソースへのアクセスを調整する共通の特権ルーチンの組とを提供する。これに対し、仮想化されたコンピューティング技術を採用して複数の仮想マシンを構成すれば、仮想マシンの各々がそれぞれ異なった専用のＯＳを実行できるようになる。これにより、これらマシンへのアクセスをネットワーク上の異なるユーザ間で分散できるようになる。
【０００９】
仮想マシンの構成と演算を、仮想マシンを実行している下層の物理ハードウェアから分離すれば、仮想化されたコンピューティングによって、ユーザは定義された仕様に従って仮想マシンを構成し、先に構成された仮想マシンを、下層の物理ハードウェアの構成を何ら変更することなく後に再現できるようになる。以下に述べる実施形態を用いることで、インポート可能なスナップショットの他の使用の中でもとりわけ、仮想マシンの使用容量を再現するために使用するスナップショットイメージをインポートできるようになる。
【００１０】
図１に、仮想化されたコンピューティングの実現のために構成できるシステムの一例を示す。図示した実施形態では、物理システム１００はシステムメモリ１２０に接続したプロセッサ１１０を含む。例えば、プロセッサ１１０は、ｘ８６／ｘ６４  ＩＳＡ、ＰｏｗｅｒＰＣ（登録商標）ＩＳＡ、ＳＰＡＲＣ（登録商標）ＩＳＡ、ＡＲＭ（登録商標）ＩＳＡ、もしくはあらゆる他の適切なＩＳＡなどの、特定の命令セットアーキテクチャ（ＩＳＡ）が定義した命令を実行するように構成されたあらゆるタイプのマイクロプロセッサに対応可能である。システムメモリ１２０は、プロセッサ１１０が実行できるデータおよび命令を格納するよう構成されたあらゆるタイプのストレージデバイスに対応できる。例えば、システムメモリ１２０は多様なランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、不揮発メモリ（例えばフラッシュメモリ）、磁気メモリ、または他のあらゆる適切なタイプのメモリのうちのいずれを含んでいてもよい。
【００１１】
システムメモリ１２０は、プロセッサ１１０または別のプロセッサで実行されると、オペレーティングシステム１５０および仮想化モジュール１６０を実現するべく構成された命令およびデータを格納するように構成されてよい。概して、オペレーティングシステム１５０はあらゆる適切なタイプのオペレーティングシステム、例えば或るバージョンのＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  ＭａｃＯＳ（登録商標）、Ｕｎｉｘ（登録商標）、Ｌｉｎｕｘ（登録商標）、または別のオペレーティングシステムであってよい。典型的に、オペレーティングシステム１５０は、例えばメモリ、大容量ストレージデバイス、通信デバイス、システムサービスなどのような、コンピュータシステムが提供するアプリケーションとリソース間をつなぐインターフェースとして機能するように構成できる。
【００１２】
仮想化モジュール１６０は、複数の異なる仮想マシンが動作可能な環境を実現するように構成できる。仮想化モジュール１６０、ハイパーバイザあるいは仮想マシンモニタとも称される。図示の実施形態において、仮想化モジュール１６０はオペレーティングシステム１５０からの個別のソフトウェア層として実現することができ、この構成は「ホステッドハイパーバイザ」と称される。他の実施形態において、仮想化モジュール１６０は個別層内で実行されるのではなく、「ネイティブハイパーバイザ」と呼ばれる構成のオペレーティングシステム１５０に統合される。仮想化モジュール１６０のホステッドハイパーバイザ実現の数例には、ＶＭｗａｒｅ  ＥＳＸ／ＥＳＸｉ（登録商標）、ＶＭｗａｒｅ  Ｆｕｓｉｏｎ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  ＶｉｒｔｕａｌＰＣ（登録商標）、ＶｉｒｔｕａｌＢｏｘ（登録商標）およびＰａｒａｌｌｅｌｓ  Ｄｅｓｋｔｏｐ（登録商標）がある。ネイティブハイパーバイザ実現のいくつかの例には、Ｘｅｎ、ＶＭｗａｒｅ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ（登録商標）、Ｌｏｇｉｃａｌ  Ｄｏｍａｉｎｓ  Ｈｙｐｅｒｖｉｓｏｒ（登録商標）、およびＰａｒａｌｌｅｌｓ  Ｓｅｒｖｅｒ（登録商標）がある。他の例も実施可能であり、予測される。
【００１３】
図示の実施形態において、仮想化モジュール１６０は、多数の仮想モジュール１８０ａ〜ｎ、ならびに仮想ネットワーク１７５、仮想ストレージ１６５、ウェブサービスインターフェース１９０を実現するように構成される。これらエレメントの各々の例について順に述べてゆくが、その個数と構成は変更できる点に留意されたい。様々な実施形態において、様々なエレメントは代替用語を用いて称することができる。例えば、個々の仮想マシン１８０は「インスタンス」に相当し、様々な仮想マシン１８０の状態（例えばそれらのアプリケーション、データ、および構成）は「マシンイメージ」またはＭＩに対応する。これらのインスタンスは個別ユーザをサポートすることができる。
【００１４】
仮想マシン１８０、仮想ネットワーク１７５、仮想ストレージ１６５といった様々な仮想化されたエレメントを実現するプロセスは、仮想化モジュール１６０自体とは異なる物理ハードウェア上で実行可能である点に留意されたい。例えば、リモートプロシージャコールまたは他の技術を採用することで、特定の仮想マシン１８０やあらゆる他の仮想化されたエレメントに対応したプロセスまたはスレッドを、恐らくは物理システム１００と構成の異なる物理システム上で実行するように、仮想化モジュール１６０を構成することが可能である。
【００１５】
下層の物理システム１００ならびに仮想化モジュール１６０のリソース能力に応じて任意数の仮想マシン１８０を展開させることができる。概して、各仮想マシン１８０はオペレーティングシステムおよびアプリケーションの独自コピーを所有でき、このコピーは他の仮想マシン１８０に関係なく実行できる。例えば、図１は仮想オペレーティングシステム１８５ならびに１つ以上のアプリケーション１９５を含む仮想マシン１８０ｎを示す。仮想オペレーティングシステム１８５は、上記でオペレーティングシステム１５０に関連して述べたタイプのオペレーティングシステムが全てを含むあらゆる適切なオペレーティングシステムに相当する。仮想オペレーティングシステム１８５は、物理コンピュータシステム１００上で実行される下層のオペレーティングシステム１５０と違うものであってよい。例えば、仮想オペレーティングシステム１８５とオペレーティングシステム１５０は完全に異なるオペレーティングシステムであってよい。あるいは、両者は同タイプのオペレーティングシステムに相当するが、それぞれデータ構造および／または実行可能なコードの個別のコピーを所有し、別々に実行されるように構成されていてもよい。
【００１６】
各仮想マシン１８０は、仮想マシン１８０に割り当てられた物理システム１００のリソースを処理する独立した物理マシンであるかのように動作することができる。例えば、仮想マシン１８０ａは、或るバージョンのＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）および１つ以上のＷｉｎｄｏｗｓのアプリケーションを実行するように構成され、仮想マシン１８０ｎは、或るバージョンのＬｉｎｕｘおよび１つ以上のＬｉｎｕｘのアプリケーションを実行するように構成される。いくつかの実施形態において、仮想マシン１８０上で実行される所与のオペレーティングシステムとアプリケーションは、物理システムではなく仮想システムで実行されていることを識別できないかもしれない。したがって、仮想化は各仮想マシン１８０に関して透過的に実行することができる。
【００１７】
様々な実施形態において、仮想化モジュール１６０は、仮想化モジュール１６０が例えば物理システム１００外のクライアントから受け取った構成要求に応じて仮想マシン１８０ａ〜ｎをインスタンス化および破棄するように構成され得る。クライアントは、物理システム１００上、またはネットワークなどの物理システム１００と通信するよう構成された異なるシステム上で、ユーザに代わって実行されるプロセスに相当する。
【００１８】
様々な実施形態において、クライアントの要求は、要求先の所与の仮想マシン１８０のための構成パラメータを含んでいてよい。例えば、クライアントは、メモリ量や特定レベルのプロセッサパフォーマンスなどのような特定のリソースを所与の仮想マシン１８０に指定できる。あるいはクライアントは、利用できる構成のセットの中から特定のタイプまたはクラスの仮想マシン１８０を指定することができる。例えば、仮想化モジュール１６０は、クライアントが選べる「小型」、「中型」、「大型」、および／またはこれ以外のタイプの属性の仮想マシン構成を呈することができ、これらの各々にメモリ、パフォーマンス、および／または他の特徴が定義されている。いくつかの実施形態において、こうした特徴は、仮想ストレージ１６５の一部分のバックアップコピーや、仮想マシン１８０に関連してその他のデータ構造のバックアップコピーを格納する１つ以上の格納先の場所を含んでいてよい。いくつかの実施形態において、こうした特徴は、仮想ストレージ１６５の一部分のバックアップコピーや、仮想マシン１８０関連の他のデータ構造のバックアップコピーを取り出すための１つ以上のソース場所を含んでいてよい。このようなソース場所および格納先の場所は物理システム１００内でローカルにホストされるか、あるいは例えばネットワーク上で遠隔地からアクセスされることが可能である。
【００１９】
いくつかの実施形態において、クライアントの要求は、所与の仮想マシン１８０の状態をどのように初期化すべきかに関する情報を含むこともできる。例えば、要求は、ブートすべきオペレーティングシステム１８５、利用可能なアプリケーション（１つ以上）１９５、および／またはあらゆるデータ、ライブラリ、あるいはクライアントの計算実行に必要な他の入力を指定することができる。様々な実施形態において、クライアントは、多数の選択肢から初期状態を選択することや（例えば、利用可能なオペレーティングシステムのリストの中から選択）、または所与の仮想マシン１８０の望ましい初期状態を反映した（例えば、実行可能なコードおよび／またはデータを反映した）詳細なメモリイメージを提供すること、あるいはこれらおよび他の技術の組み合わせが可能である。様々な実施形態において、仮想ストレージ１６５の一部分や仮想マシン１８０に関連する他のデータ構造を格納するための１つ以上のインポート場所に格納されているバックアップコピーの中から、この初期状態を取り出すことができる。
【００２０】
所与の仮想マシン１８０を作成または初期化せよとの要求に応答して、仮想化モジュール１６０を、例えば所与の仮想マシン１８０が使用する特定量のシステムメモリ１２０を自己の仮想システムメモリとして使用することを除外することで、所与の仮想マシン１８０への物理システム１００のリソース割り当てを行うように構成できる。仮想化モジュール１６０は所与の仮想マシン１８０の初期化も行える。例えば、所与の仮想マシン１８０を、クライアントの指定に従って、あるいはデフォルト状態に初期化することが可能である。
【００２１】
構成および初期化が終わると（これらは同時に、または同一の演算の一部として行われる）、所与の仮想マシン１８０は動作を開始することができる。例えば、オペレーティングシステム１８５は過去に定義された状態からブートまたは再開することができる。アプリケーション（１つ以上）１９５は対話方式（つまり操作中にクライアントから入力を受信する）での実行および自律的な実行の両方が可能である。様々な実施形態において、以下に述べるように、仮想化モジュール１６０は所与の仮想マシン１８０にストレージへのアクセスや仮想ネットワークへのアクセスを提供することができ、これにより、所与の仮想マシン１８０が他の仮想マシン１８０と通信できるようになる。
【００２２】
何らかの時点で、所与の仮想マシン１８０を終了させる要求が発生する。例えばクライアントは、所与の仮想マシン１８０に構成されたタスクが完了した時に、あるいは何らかの他の理由で、このような要求を開始することができる。あるいは仮想化モジュール１６０は、例えばマシンが不安定になるか、またはクライアントの利用条件の何らかの面の違反が生じた時に、同様の要求を開始する。これに応答して所与の仮想マシン１８０が終了し、さらにそのリソースは解放されて他の仮想マシンが使用できるようになる。例えば、可能であれば、仮想化モジュール１６０は所与の仮想マシン１８０のシャットダウンを順序立てて実行しようと試みる。そして、所与の仮想マシン１８０の状態、仮想コンピューティング環境における仮想マシン１８０の構成に関する情報、および／または他の顕著な情報をアーカイブあるいは保存する。これらまたはあらゆる他のハウスキーピングタスクが完了すると、所与の仮想マシン１８０は完全に消滅される。
【００２３】
仮想化モジュール１６０は、仮想マシン１８０の構成および操作を提供する以外にも、仮想ネットワーク１７５上における仮想マシン１８０間の仮想化されたネットワーク接続性を提供するように構成される。例えば、ローカルエリアネットワーク（ＬＡＮ）や他の適切なタイプあるいはトポロジーのネットワークをエミュレートするように仮想ネットワーク１７５を構成できる。仮想ネットワーク１７５を介することで、複数の仮想マシン１８０をあたかも物理ネットワークに接続した物理マシンであるかのように相互に通信するように構成できる。
【００２４】
いくつかの実施形態において、複数の異なる物理システム上に実現された仮想ネットワーク間をブリッジするように仮想化モジュール１６０を構成することで、より大規模の仮想ネットワークを実現することが可能である。とは言え、例えば個別の物理システム１００上に実現された仮想マシン１８０は、１つの全体的な仮想ネットワーク１７５の一部として相互に通信することが可能である。このような実施形態では、異なる仮想化モジュール１６０のインスタンスを、これらインスタンスのそれぞれの物理システム１００をつなぐ物理ネットワークを介して相互に情報通信を行うように構成することで、仮想マシン１８０間での仮想ネットワーク通信を実現できる。
【００２５】
さらに仮想化モジュール１６０は、仮想ストレージ１６５として図示された大容量ストレージへのアクセスを仮想マシン１８０に提供するように構成してもよい。例えば、仮想ストレージ１６５は、ブロックストレージデバイス（例えば論理ストレージ容量）、ファイルシステム、データベースとして、あるいは、コンピュータシステムに提供されるあらゆる他の適切なタイプの大容量ストレージとして構成できる。仮想ストレージ１６５の実施形態は系統的に大容量ストレージリソースとも称される。いくつかの実施形態において、仮想ストレージ１６５は、仮想ネットワーク１７５上で複数の仮想マシン１８０へのアクセスが可能な、仮想ネットワークに接続したデバイスとして構成される。例えば、仮想ストレージ１６５は、仮想化されたネットワークに接続したストレージ（ＮＡＳ）デバイス、仮想化されたストレージエリアネットワーク（ＳＡＮ）、インターネットプロトコルを介してアクセスできるストレージサービス（例えば、ウェブサービスベースのストレージサービスとして）として、またはあらゆる他の適切な様式において構成できる。いくつかの実施形態において、仮想ストレージ１６５は、ローカルに実現されたサービスまたはネットワーク上でリモートアクセスが可能なサービスを介して実現される。
【００２６】
いくつかの実施形態において、仮想ストレージ１６５の管理は仮想化モジュール１６０が直接行うことができる。例えば、仮想化モジュール１６０は、仮想化された容量サーバ、ファイルサーバ、または他タイプの大容量ストレージアーキテクチャの実現に必要な機能性を含んでいてよい。他の実施形態では、仮想化モジュール１６０は代わりにインターフェースを提供し、仮想マシン１８０が、このインターフェースを介して仮想モジュール１６０の外部に存在および管理されているストレージにアクセスできるようにしている。例えば、物理システム１００または別のシステム上で実行されているいくつかの他のソフトウェア構成要素は、大容量ストレージとストレージにアクセスするためのアプリケーションプログラミングインターフェース（ＡＰＩ）とを提供するように構成される。こうすることで、仮想化モジュール１６０を、仮想マシン１８０からこの外部ＡＰＩへストレージアクセス要求を送るように構成できるようになる。
【００２７】
仮想化モジュール１６０は、クライアントが特定の仮想マシン１８０と対話するために用いる多数かつ多様なインターフェースをサポートするように構成される。例えば、仮想化モジュール１６０は、ベーシックな端末エミュレーションを実行することで、クライアントが仮想マシン１８０にテキスト入力を提供し、さらにテキスト出力をクライアントに戻して表示させることができるように構成される。所与の仮想マシン１８０が、所与の仮想マシン１８０内で実行されるソフトウェアによってホストされるウィンドウシステムや他タイプのグラフィックユーザインターフェース（ＧＵＩ）といった高性能のユーザインターフェースをサポートしている場合には、仮想化モジュール１６０は、クライアントの入力デバイス（例えばキーボード、ポインティングデバイスなど）からの入力を所与の仮想マシン１８０へ送り、グラフィカルな出力をクライアントへ送るように構成される。
【００２８】
いくつかの実施形態において、仮想化されたコンピューティングをクライアント向けのオンデマンドの有料サービスとして提供してもよい。例えば、或る企業は、仮想化されたコンピューティングの実現に使用する様々なハードウェアおよびソフトウェア構成要素のアセンブリングおよび維持を実施して、様々な料金モデル（例えば従量制、加入制の料金など）に基づいてこれらリソースへのアクセスをクライアントに提供できる。そのため、クライアントは、これらのリソースの実現に必要なインフラストラクチャを準備し維持する労力および費用を負うことなく、幅広い仮想コンピューティングリソースにアクセスできる。概して、仮想化されたコンピューティングサービスをクライアントに提供するために、仮想化モジュール１６０は、仮想化されたコンピューティングサービスＡＰＩをクライアントに対して呈示し、クライアントはこれを介して仮想化されたコンピューティングサービスへの多様な要求を提出できるように構成される。例えば、後で詳細に述べるように、クライアントは仮想化されたコンピューティングサービスＡＰＩを介して、仮想化されたコンピューティングリソースをインスタンス化、初期化、および／または削除するための要求を提出できる。さらに、クライアントは、仮想化されたコンピューティングリソースに様々な計算を実行させる要求を提出することもできる。
【００２９】
図１に示す実施形態では、仮想化モジュール１６０は、仮想マシン１８０のような仮想化されたコンピューティングリソースを、ウェブサービスインターフェース１９０を介したウェブサービスの一部としてクライアントに対し呈示するように構成される。概して、ウェブサービスとは、クライアントからの１つ以上のウェブサービスエンドポイントへのコールによって利用できるコンピューティング機能であると言及できる。この際、クライアントは、アプリケーションレベルや、ハイパーテキスト転送プロトコル（ＨＴＴＰ）のようなインターネットベースの転送プロトコルに従って、ウェブサービスエンドポイントをアドレス指定できる。例えば、或るウェブサービスエンドポイントは、クライアントが要求するウェブサービスオペレーションを定義する特定のＡＰＩを実現する。いくつかの実施形態において、ウェブサービスインターフェース１９０は、アドレス指定可能なウェブサービスエンドポイントを実現するように構成され、またさらに、クライアントに関連したウェブサービス要求および応答情報の送受信を行うように構成された機能性を含んでいる。
【００３０】
ウェブサービスに特定のオペレーションを実行するよう要求する場合、クライアントは要求をＡＰＩ指定の形式でフォーマットし、この要求をアドレス指定可能なエンドポイントに伝達する。例えば、エンドポイントを、ｖｉｒｔｕａｌｃｏｍｐｕｔｉｎｇ．ｃｏｍｐａｎｙ．ｃｏｍのような「ｅｎｄｐｏｉｎｔ．ｄｏｍａｉｎｎａｍｅ．ｔｏｐｌｅｖｅｌ」形式のユニフォームリソースインジケータ（ＵＲＩ）に従ってアドレス指定できる。あるいは、エンドポイントは、例えばＩＰアドレスのような数字形式のアドレスによりアドレス指定することも可能である。
【００３１】
様々な実施形態において、ウェブサービスインターフェース１９０は、クライアントが多数の適切な方法のいずれかによって呼び出すことができる。例えば、ウェブサービスインターフェース１９０は、レプレゼンテーショナルステートトランスファ（ＲＥＳＴ）形式のウェブサービスアーキテクチャを実現するように構成される。概して、ＲＥＳＴアーキテクチャでは、要求されたウェブサービスオペレーションとその様々なパラメータを、伝送プロトコルに従ってウェブサービスエンドポイントに掛けられるウェブサービスコールに付加することができる。例えば、要求されたオペレーションの詳細は、ＧＥＴ、ＰＵＴ、またはＰＯＳＴのようなＨＴＴＰ要求方法のパラメータとして含めることができる。あるいは、ウェブサービスインターフェース１９０は、ドキュメントまたはメッセージ指向のアーキテクチャを実現するように構成される。例えば、要求されたオペレーションの詳細をクライアントによって拡張マークアップ言語文書としてフォーマットし、或るバージョンのＳｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ（ＳＯＡＰ）を使用してカプセル化することができる。ウェブサービスインターフェース１９０は、このような文書を受信すると、要求されたウェブサービスオペレーションの詳細を抽出して、オペレーションの実行を試みるように構成される。
【００３２】
ウェブサービスとしての仮想化されたコンピューティングの面において、ウェブサービスインターフェース１９０により実現されたＡＰＩは、仮想化モジュール１６０によりクライアントに利用可能となったあらゆるまたは全てのタイプのオペレーションをサポートできると考えられる。ここで、上記のオペレーションには、容量のバックアップコピー作成要求またはバックアップコピーからの容量の復元要求の実行といったストレージオペレーションが含まれる。例えば、ＡＰＩは上で述べたように仮想モジュール１８０の構成、初期化、終了をサポートすることができる。さらに、いくつかの実施形態において、ＡＰＩは、クライアントと仮想マシン１８０または他の仮想化されたリソースとの間での入力および出力（テキスト、グラフィック、音声、その他）の交換をサポートすることもできる。
【００３３】
データセンターとバックアップストレージ
次に図２Ａを参照すると、複数のコンピューティングシステムがプログラムを実行しストレージにアクセスする例示的な一実施形態のネットワーク図を示す。プログラム実行サービスは、データセンター２００内の様々なホストコンピューティングシステム上におけるプログラムの実行を管理し、またブロックストレージサービスは、データセンターにおける複数の他のストレージシステムと協働して、実行中のプログラムにブロックレベルストレージを提供する。複数のリモート／ローカルストレージシステムを使用して、いくつかのブロックデータ容量の少なくともいくつかの部分のバックアップコピーといったさらなるコピーを格納する。
【００３４】
この例示的実施形態では、データセンター２００は多数のラック２０５を含んでおり、各ラックは多数のホストコンピューティングシステム、ならびに任意のラックサポートコンピュータシステム２２２を含む。図示のラック２０５上にあるホストコンピューティングシステム２１０ａ〜ｃの各々は、１つ以上の仮想マシン２２０と、そのホストコンピューティングシステム上の仮想マシンに対応した個別ノードマネージャモジュール２１５とをホストする。ノードマネージャモジュール２１５は、常駐先であるホストコンピューティングシステムに関連した仮想マシンを管理する。この例では、１つ以上の他のホストコンピューティングシステム２３５も、それぞれ１つ以上の仮想マシン２２０をホストしている。各仮想マシン２２０は、或るユーザ（図示せず）について１つ以上のプログラムコピー（図示せず）を実行する独立したコンピューティングインスタンスとして機能できる。この場合、このユーザは、例えば図１に関連して述べたウェブサービスインターフェース１９０のようなウェブサービスインターフェースを介してアクセスしたプログラム実行サービスの顧客である。
【００３５】
さらに、図２Ａの例証的なデータセンター２００はホストコンピューティングシステム２３０ａ〜ｂを含んでおり、このホストコンピューティングシステムは個別の仮想マシンを含まないが、しかしそれぞれが、或るユーザについて実行されている１つ以上のプログラム（図示せず）用のコンピューティングノードとして機能できる。ホストコンピューティングシステム２３０ａ〜ｂおよび２３５とは異なるコンピュータシステム（図示せず）上で実行されているノードマネージャモジュール２２５は、ホストコンピューティングシステム２３０ａ〜ｂおよび２３５に対応して、ホストコンピューティングシステムが提供したコンピュータノードを、ホストコンピューティングシステム２１０についてノードマネージャモジュール２１５が行う様式と類似した様式で管理する。ロックサポートコンピュータシステム２２２は、ラック２０５域内の他のコンピューティングシステム、ならびに恐らくはデータセンター内に設置されている他のコンピュータシステムに対して、様々なユーティリティサービスを提供する（例えば、長期ストレージ、プログラム実行の測定および他の監視、および／または他のコンピューティングシステムが実行するローカルラックへの非ローカルブロックデータストレージアクセス）。各コンピューティングシステム２１０、２３０、２３５は、実行中のプログラムや様々な他の構成要素が作成したあるいは使用しているプログラムおよび／またはデータのローカルコピーを格納するための、１つ以上のローカルアタッチされたストレージデバイス（図示せず）をさらに設けていてよい。
【００３６】
さらに、任意のプログラム実行サービス（ＰＥＳ）システムマネージャ２４０も図示されている。ＰＥＳシステムマネージャ２４０は、ＰＥＳシステムマネージャモジュールを実行するコンピューティングシステムであり、ホストコンピューティングシステム２１０、２３０、および２３５が提供するコンピューティングノード上でのプログラム実行の管理を補助する（あるいは任意で、１つ以上の他のデータセンター２６０内に位置するコンピューティングシステム（図示せず）上のプログラム、もしくはネットワーク２７０上で利用可能な他のリモートコンピューティングシステム（図示せず）上のプログラムの管理を補助する）。ＰＥＳシステムマネージャ２４０はプログラム実行管理の他にも、ユーザアカウントの管理（例えば支払いの作成、削除、請求、集金など）を含む様々なサービスを提供できる。ＰＥＳシステムマネージャ２４０はさらに、実行するプログラムの登録、格納、配布や、プログラム実行に関するパフォーマンスと監査データの収集ならびに処理を提供する。いくつかの実施形態において、ＰＥＳシステムマネージャ２４０はノードマネージャモジュール２１５、２２５と協働し、ノードマネージャモジュール２１５、２２５に関連したコンピューティングノード上でプログラム実行を管理する。
【００３７】
データセンター２００は、ブロックストレージサービス２６５をさらに含む（以降で図２Ｂを参照してより詳細に説明する）。このブロックストレージサービス２６５は、データセンター２００内に位置するホストコンピューティングシステム２１０、２３０、２３５、あるいは任意で１つ以上の他のデータセンター２６０内のコンピューティングシステム（図示せず）、またはネットワーク２７０上で利用可能な他のリモートコンピューティングシステム（図示せず）が提供するコンピューティングノード上で実行中のプログラムにブロックレベルのデータ格納を提供する。
【００３８】
いくつかの実施形態において、データセンター２００は、リモートストレージシステム２９７と通信する。リモートストレージシステム２９７は、データストアマネージャ２４７をサポートするオペレーティングシステム２４５を含む。リモートストレージシステム２９７は、ローカルストレージシステム２９２と同一のエンティティの制御下、またはこれと異なるエンティティの制御下にあってよい。データ格納マネージャは、ブロックストレージサービス２６５からスナップショットコピー２９５を受信して格納する。いくつかの実施形態において、リモートストレージシステム２９７内でブロックストレージアダプタ２５０を実行することで、ブロックストレージサービス２６５との通信を促進している。
【００３９】
図２Ｂは、一実施形態に従って格納操作を実行するためのブロックストレージサービスを示す。ブロックストレージサービス２６５はストレージシステムであって、１つ以上のボリューム２５５ならびに１つ以上のスナップショット２５６を格納するためのブロックレベルストレージを提供する複数サーバデータブロックストレージシステムのプール（簡素化のため図示省略）で構成されている。スナップショット２５６は、ボリューム２５５の状態のフィックストポイントインタイム表示である。いくつかの実施形態において、スナップショットをバックアップ目的で使用する。他の実施形態において、スナップショットを全ての形式のファイルオペレーションに使用することで、システムリソースの解放を早め、並行操作のパフォーマンスを向上させている。さらにスナップショットは、コンピューティングタスクの実行にデータの複製セットが役立つ多くのオペレーションにおいて使用される。ブロックストレージサービス２６５はブロックレベルストレージマネージャ２７５を実行し、ブロックストレージサービス２６５のオペレーションを補助する。具体的には、そして再び図２Ａを参照すると、ブロックレベルストレージマネージャ２７５は、データセンター２００内のホストコンピューティングシステム２１０、２３０、２３５、あるいは任意で１つ以上の他のデータセンター２６０内のコンピューティングシステム（図示せず）、もしくはネットワーク２７０上で利用可能な他のリモートコンピューティングシステム（図示せず）、が提供するコンピューティングノード上で実行中のプログラムへのブロックデータストレージの可用性の管理を補助するものである。図２Ａ、図２Ｂに示す実施形態では、ボリュームコピー２５５へのアクセスは、ノード２１０、２３５上で実行しているプログラムへの内部ネットワーク２８５によって提供される。ブロックレベルストレージマネージャ２７５はブロックレベルストレージ機能に関連した様々なサービスを提供し、これにはユーザアカウントの管理（例えば支払いの作成、削除、請求、集金など）が含まれる。ブロックレベルストレージマネージャ２７５はさらに、ブロックストレージサービス２６５上にあるボリューム２５５およびスナップショット２５６の作成、使用、削除に関連したサービスを提供する。ブロックレベルストレージマネージャ２７５はまた、ボリューム２５５とそのボリュームのスナップショット２５６の使用に関するパフォーマンスおよび監査データの収集ならびに処理に関連したサービスも提供する。
【００４０】
図２Ｂに戻ると、ブロックレベルストレージマネージャ２７５はさらにバックアップマネージャ２８０を含んでいる。バックアップマネージャ２８０は、スナップショット２５６や、ブロックストレージサービス２６５のボリューム２５５内に格納されているデータの他のバックアップイメージの作成、格納、管理、インポートを行うインターフェースを提供する。いくつかの実施形態において、バックアップマネージャモジュール２８０は、例えばスナップショットコピー２９０をローカルストレージシステム２９２上に、そしてスナップショットコピー２９５をリモートストレージシステム２９７上にというように、ストレージシステムへのスナップショットの格納を行う。バックアップマネージャ２８０はバックアップストレージ機能の提供に関連した様々なサービスを提供し、これにはユーザアカウントの管理（例えば支払いの承認、作成、削除、請求、集金など）が含まれる。一実施形態において、バックアップマネージャ２８０は、リモートストレージシステム２９７をコンピューティングインスタンスに関連付けする際に承認の証明を必要とする。さらに、バックアップマネージャ２８０は、特定のストレージシステム上のパフォーマンス特有のオペレーションに関連した請求率が、特定タスクのパフォーマンスを格納するストレージシステムを選ぶ上で影響する「料金体系に影響される選択」を提供する。例えば、ローカルストレージシステム２９２上へのスナップショットコピー２９０の格納の方が料金が高いことに基づいて、リモートストレージシステム２９７上へのスナップショットコピー２９５の格納を、ローカルストレージシステム２９２上へのスナップショットコピー２９０の格納よりも優先して実行するように、バックアップマネージャ２８０をプログラミングすることができる。
【００４１】
バックアップマネージャモジュール２８０は、バックアップオペレーションのパフォーマンスを発行せよとの要求を、コンピューティングインスタンスから、またはウェブサービスインターフェース（例えば図１のウェブサービスインターフェース１９０）のユーザから受信するためのバックアップマネージャインターフェース２７８を含んでいる。一実施形態において、こうした要求は、ブロックストレージサービス２６５がコンピューティングインスタンス（例えば仮想マシン２２０のうちの１つ）のユーザに提供しているブロックレベルストレージのボリューム２５５に格納されているデータの少なくとも一部のスナップショットコピー２９０の格納先（例えばローカルストレージシステム２９２）や他の構成パラメータなどを指定する。またこうした要求は、ウェブサービスインターフェース（例えば図１のウェブサービスインターフェース１９０）からのＡＰＩコールとして実施されてもよい。以降で述べるように、この要求は格納場所、ストレージ粒度、または他のパラメータを指定できる。バックアップマネージャインターフェース２７８は、リモートストレージシステム２９７上のスナップショット（例えばスナップショットコピー２９５）や他のバックアップコピーから、そしてローカルストレージシステム２９２上のスナップショットコピー２９０から、ボリューム２５５をブロックストレージサービス２６５内に復元せよとの要求を受信するように構成することもできる。
【００４２】
ストレージ粒度とは、特定の場所に作成および格納するよう要求されたバックアップまたは一連のバックアップの個数、頻度、サイズ、または包括性を意味する。或る粒度設定では、選択されたボリュームの全一連のフルバックアップスナップショットを特定の場所に格納することができる。あるいは、別の粒度設定では、ボリュームのスナップショットの各部分を１つの場所において作成および格納することができる。これらのデータ部分は、例えばファイルや、特定のバックアップパラメタを満たすべく定義されたブロック範囲（例えば任意のブロックスキーム、または前回のバックアップからデータが変更されているブロック範囲のみ）のように、特定のデータ構造を含むことができる。さらに、ストレージ粒度を柔軟に指定する機能は、ボリュームまたはボリュームの一部分を表す第１スナップショットが第１格納場所に格納されることや、同ボリュームの第２スナップショット、または或るボリュームの一部分の（または同ボリュームの異なる部分）の第２スナップショットが第２場所へ送られることを指定する機能を含む。構成ファイル２５２は、様々なバックアップ操作および復元操作の実行に関する詳細を含んでいる。こうした詳細は、特定のストレージシステムに関連したＡＰＩのフォーマット、特定の格納先やインポート場所におけるストレージシステムの場所、あるいはバックアップの特徴（例えばバックアップ粒度）、を指定する情報を含む。
【００４３】
バックアップマネージャモジュール２８０は、ボリュームのスナップショット、またはボリュームの各部のスナップショットを、バックアップマネージャインターフェース２７８経由で受信した入力の指定どおりに作成するためのバックアップ作成モジュール２７６をさらに含む。バックアップマネージャモジュールはまた、バックアップストレージマネージャ２８２を含む。バックアップストレージマネージャ２８２は、ローカルストレージシステム２９２内のスナップショットコピー２９０またはリモートストレージシステム２９７内のスナップショットコピー２９５のようなスナップショットの伝送および格納を実行する。バックアップストレージマネージャ２８２は、多種多様なトランスポート層プロトコル（例えばＴＣＰ、ＵＤＰなど）およびアプリケーション層プロトコル（例えばＨＴＴＰ、ＦＴＰ、ＸＭＬ−ＲＰＣ、ＳＯＡＰなど）のいずれかを使用して、ローカルストレージシステム２９２およびリモートストレージシステム２９７と通信するように構成される。なお、上記プロトコルは実施形態ごとに異なる。いくつかの実施形態において、バックアップストレージマネージャ２８２は、ローカルネットワーク２８５経由でスナップショットコピー２９０をローカルストレージシステム２９２へ伝送する。同様に、バックアップストレージマネージャ２８２は、ネットワーク２７０経由でスナップショットコピー２９５をリモートストレージシステム２９７へ伝送する。
【００４４】
いくつかの実施形態において、バックアップストレージマネージャ２８２は、バックアップストレージマネージャ２８２とデータストアマネージャ２４７の両方がサポートしているストレージコールのＡＰＩプロトコルを使用して、データストアマネージャ２４７と直接通信するように構成される。他の実施形態において、バックアップストレージマネージャ２８２が使用するストレージコールのＡＰＩプロトコルは、データストアマネージャ２４７上で直接サポートされておらず、ブロックストレージアダプタ２５０またはバックアップストレージ２５１を使用することで、データストアマネージャ２４７およびバックアップストレージマネージャ２８２の相互運用性を促進している。いくつかの実施形態において、同じホストノード上にある異なるコンピューティングインスタンスが、個別のＡＰＩプロトコルを使用して、異なるストレージトランザクションについてストレージシステムと通信する。バックアップマネージャ２８０は、ローカルアーカイブストレージシステム２９２から受け取ったスナップショットコピー２９０としてのボリュームまたはボリュームの各部分を、あるいはリモートアーカイブストレージシステム２９７から受け取ったスナップショットコピー２９５を、復元またはインポートするためのデータインポートマネージャ２８４をさらに含んでいる。
【００４５】
バックアップストレージと相互作用するためのプロセスステップ
以降で図３Ａ〜図４を参照して述べるプロセスステップは、個別ユーザ群をサポートするコンピューティングインスタンスに対し、ブロックレベルストレージに格納されているデータのバックアップコピーのバックアップサービスを提供するシステムの一実施形態によって実行される様々なステップを例証するものである。このようなシステムの実施形態は、個別ユーザ用のコンピューティングインスタンスによって、ブロックレベルストレージに格納されているデータのバックアップコピーを作成し、さらにこのバックアップコピーを、個別ユーザの各々が指定した異なる格納先の場所に格納するためのバックアップコピー機能を提供する。
【００４６】
図３Ａは、一実施形態に従ってスナップショットを作成および格納するプロセスステップの高レベルフローチャートである。バックアップ先の格納場所（他のバックアップ詳細と共に）を指定するユーザ入力を受信する（ブロック３００）。一実施形態では、このようなユーザ入力を、図１のウェブサービスインターフェース１９０のようなウェブサービスインターフェースから受信する。ユーザ入力で提供する詳細は、特定の場所において作成および格納するように要求されたスナップショットまたは一連のスナップショットの個数、頻度、サイズ、または包括性を含んでいてよい。さらにバックアップのタイミングを含むこともできる。あるいは、このようなユーザ入力は、図１の仮想マシン１８０のような仮想マシンから受信される。受信した詳細から抽出したバックアップについての詳細を、図２Ｂの構成ファイル２５２のような構成ファイルに記録する（ブロック３０５）。次に、構成ファイルからの詳細に従ってバックアップコピーを作成する（ブロック３１０）。一実施形態では、図２Ｂのバックアップ作成モジュール２７６のようなバックアップ作成モジュールでボリュームのスナップショットを生成することで、バックアップコピーを作成する。次に、このバックアップを、構成ファイルに指定されている１つ以上の場所に格納する（ブロック３１５）。これでプロセスが終了する。
【００４７】
図３Ｂは、一実施形態に従ってボリュームのバックアップコピーを作成および格納するプロセスステップの高レベルフローチャートである。サーバブロックデータストレージ内にスナップショットを作成する（ブロック３２０）。一実施形態では、サーバブロックデータストレージは、図２Ａのブロックストレージサービス２６５のようなブロックストレージサービスにより提供される。図２Ｂの構成ファイル２５２のような構成ファイルを精査することで、ストレージ構成が決定される（ブロック３２５）。一実施形態では、このストレージ構成はストレージ粒度に関する情報、つまりスナップショットを１つの全体的なスナップショットイメージとして格納するのか、あるいはファイルや、アドレスレンジを反映するデータチャンク、または他のフォーマットとして格納するのかの情報を含む。また、バックアップが一連のスナップショットの一部であるか、一連のスナップショットの各部分を１つの格納場所に集中させるのか、それとも複数の格納情報間に分散させるのか、１つのバックアップコピーの各部分を集中させるのか、それとも複数のサーバに分配するのか、どのエンティティで様々なバックアップ格納場所を制御するのか、さらに、バックアップを認証および保全する方法、といった他の情報を決定することも可能である。次に、格納先についてのストレージシステムパラメータを確定する（ブロック３３０）。一実施形態では、ストレージシステムパラメータは、特定のストレージシステムに関連したＡＰＩのフォーマットと、特定の格納先におけるストレージシステムの場所と、この格納先と通信する上でバックアップストレージアダプタまたはブロックストレージアダプタが必要かどうかの情報とを含む。ストレージ伝送を実行する（ブロック３３５）。ストレージ伝送において、スナップショットは全体のままあるいは指定されたコンポーネント部分に分割されて、格納先へ伝送される。いくつかの実施形態において、受信確認を受信する（ブロック３４０）。これでプロセスは終了である。
【００４８】
図４は、一実施形態に従ってボリュームスナップショットを取り出してボリュームを復元するプロセスステップの高レベルフローチャートである。復元要求を受信する（ブロック４００）。一実施形態では、このような復元要求を、図１のウェブサービスインターフェース１９０のようなウェブサービスインターフェースから受信する。復元要求で提供される詳細は、インポート場所と復元先（特定の仮想マシンホストなど）を含んでいてよい。さらに、アイドル状態のマシンサイクルの利用が可能である場合は、オペレーション実行の遅延のような復元のタイミングを含んでいてもよい。あるいは、このようなユーザ入力は、図１の仮想マシン１８０のような仮想マシンから受信される。復元要求に必要な構成を決定する（ブロック４０５）。一実施形態では、この必要な構成には、特定のストレージシステムに関連したＡＰＩのフォーマットを含んでいるパラメータと、特定の格納先におけるストレージシステムの場所と、格納先と通信する上でバックアップストレージアダプタまたはブロックストレージアダプタ必要かどうかについての情報とが含まれる。受信側ボリュームを作成する（ブロック４１０）。一実施形態では、受信側ボリュームは空のボリュームであり、この中に受信したデータを格納する。ボリュームをホストするストレージシステムに取り出し要求を送信する（ブロック４１５）。スナップショットデータを受信する（ブロック４２０）。一実施形態では、受信したデータは完全な１つのスナップショットとして、受信側ボリュームをホストするブロックレベルストレージ上に格納される。データを受信側ボリュームにインポートする（ブロック４２５）。プロセスはこれで終了である。
【００４９】
図４の処理は、明瞭化の目的から、直線的な一連のオペレーションとして示している。しかし、本開示を読了した当業者であれば、図４のオペレーションを繰り返し実行することで複数の要求を処理できることに気付くだろう。繰り返し実行できるオペレーションの一例として、要求オペレーション、受信オペレーション、インポートオペレーション（４１５〜４２５）を繰り返しループ様式で、全ての要求したデータが受信されるまで実行することができる。このような繰り返しパフォーマンスを提供する実施形態は本開示の範囲から逸脱するものではない。
【００５０】
さらに、明瞭化のために図４の説明から省略されたいくつかのオペレーションは実施形態の一部として実現される。明瞭化のために図４から省略されたオペレーションの一例として、本開示を読了した当業者は、図４の手法は受信認証ステップを含んでいてよく、また、選択したソースからのデータ受信の失敗に応答して、あるいはソースからのデータ受信の最適以下の遅延に応答して、データ受信の代わりのデータソースからインポートを選択する機能を含んでいてよいことを理解するだろう。このようなさらなるオペレーションを提供する実施形態は本開示の範囲から逸脱するものではない。
【００５１】
バックアップストレージとの対話を例証する格納例
図５〜図８は、個別ユーザ群をサポートするコンピューティングインスタンスに、ブロックレベルストレージに格納されているデータのバックアップコピーを提供し、またバックアップコピーに関連した取り出しサービスと復元サービスを提供するシステムの実施形態を採用する様々な使用例を示す。
【００５２】
図５は、一実施形態に従ってボリュームスナップショットの一連のバックアップコピーを格納するための一連の格納時の対話を示す高レベルブロック図である。ブロックストレージサービス５６５は、一連のボリューム５５５ａ〜５５５ｎを格納し、その各々は１つ以上のコンピューティングインスタンスにアタッチされ、さらにスナップショットのセット５５６ａｌ〜５５６ａｎ、５５６ｂｌ〜５５６ｂ２、および５５６ｎｌを作成する。ストレージシステム５９２は、スナップショットコピー５５７ａ１〜５５７ａｎならびにスナップショットコピー５５７ｂ１、およびスナップショットコピー５５７ｎ１を格納する。一実施形態では、スナップショット５５６ａ１〜５５６ａｎおよびスナップショットコピー５５７ａ１〜５５７ａｎは、スナップショットコピー間でブロックが共有される増分スナップショットである。そのため、スナップショットＡ１  ５５６ａ１とスナップショットＡ１コピー５５７ａ１は、ボリュームＡ５５６ａの復元に必要なブロックの完全なセットを包含していてよい。しかし、その次のスナップショットＡ２  ５５６ａ２とスナップショットＡ２コピー５５７ａ２は、特定のスナップショットＡ１  ５５６ａ１とその次のスナップショットＡ２  ５５６ａ２作成との間で変更されたブロックのみを包含できる。こうした実施形態では、スナップショットＡ２コピー５５７ａ２からのボリュームＡ  ５５５ａの復元に、スナップショットＡ２コピー５５７ａ２の全てのブロックと、スナップショットＡ１コピー５５７ａ１のブロックのうちの、スナップショットＡ１５５６ａ１の作成とその次のスナップショットＡ２  ５５６ａ２の作成の間で変更のなかったものとを使用できる。
【００５３】
一実施形態において、ストレージシステム５９２は図２Ａのローカルストレージシステム２９２と類似している。ストレージシステム５９２は内部ネットワーク５８５を使用してブロックストレージサービス５６５と通信する。同様に、ストレージシステム５９７はスナップショットコピー５５７ｎ１およびスナップショットコピー５５７ｂ２を格納する。一実施形態において、ストレージシステム５９７は図２Ａのストレージシステム２９７と類似している。ストレージシステム５９７は、ネットワーク５７０および内部ネットワーク５８５を使用してブロックストレージサービス５６５と通信する。一実施形態では、ブロックストレージアダプタ５５０は、ストレージシステム５９７がサポートするＡＰＩを使用して、ブロックストレージシステム５６５からのＡＰＩコールを受信してこれに応答する機能をストレージシステム５９７に提供する。一方、ストレージシステム５９２は、ストレージシステム５９７が使用したものとは異なり、またブロックストレージサービス５６５が使用しているＡＰＩを使用する。
【００５４】
一実施形態において、一連のスナップショットコピー（例えば、ストレージシステム５９２上に格納されているスナップショットコピー５５７ａ１〜５５７ａｎ）は、ブロックストレージサービス５６５がサポートする１つ以上のボリュームにアタッチされているコンピューティングインスタンスのユーザからの、バックアップ要求のセットのような入力から得られる。このようなバックアップ要求は、ブロックストレージサービス５６５のブロックレベルストレージ上のボリュームＡ５５５ａに格納されているデータのバックアップコピーのセットの全てを格納する特定の格納先（例えばストレージシステム５９２）を指定することができる。スナップショットコピー５５７ａ１〜５５７ａｎとして示す一連のスナップショットコピーは、ユーザが一連のボリュームスナップショット全体を要求することによって得られ、この場合、スナップショットコピー５５７ａ１〜５５７ａｎの各々は、特定の時間点におけるボリュームＡ５５５ａの完全な状態を表す。
【００５５】
このような要求に応答し、ブロックストレージサービス５６５は、図２Ｂのバックアップ作成モジュール２７６（上述のもの）のようなバックアップ作成モジュールを使用して、時間ｔ1においてスナップショットＡ１  ５５６ａ１を作成し、さらに、図２Ｂのバックアップストレージマネージャ２８２のようなバックアップストレージマネージャを使用して、スナップショットＡ１コピー５５７ａ１を内部ネットワーク５８５経由でストレージシステム５９２上に格納する。こうして、スナップショットコピーＡ１  ５５７ａ１が、時間ｔ1におけるボリュームＡ５５５ａの状態のバックアップコピーとして保存される。いくつかの実施形態において、この後、ブロックストレージサービス５６５上のスペースを維持するために、ブロックストレージサービス５６５がスナップショットＡ１  ５５６ａ１を削除または解放する。
【００５６】
次に時間ｔ2において、ブロックストレージサービス５６５がスナップショットＡ２  ５５６ａ２を作成し、スナップショットＡ２コピー５５７ａ２を内部ネットワーク５８５経由でストレージシステム５９２上に格納する。こうして、スナップショットＡ２コピー５５７ａ２が、時間ｔ2におけるボリュームＡ５５５ａの状態のバックアップコピーとして保存される。いくつかの実施形態において、この後、ブロックストレージサービス５６５上のスペースを維持するために、ブロックストレージサービス５６５がスナップショットＡ２  ５５６ａ２を削除または解放する。
【００５７】
次に、時間ｔnにおいて、ブロックストレージサービス５６５がスナップショットＡｎ５５６ａｎを作成し、スナップショットＡｎコピー５５７ａｎを内部ネットワーク５８５経由でストレージシステム５９２上に格納する。こうして、スナップショットＡｎコピー５５７ａｎが、時間ｔnにおけるボリュームＡ５５５ａの状態のバックアップコピーとして保存される。いくつかの実施形態において、この後、ブロックストレージサービス５６５上のスペースを維持するために、ブロックストレージサービス５６５がスナップショットＡｎ５５６ａｎを削除または解放する。こうして、ユーザからのストレージシステム５９２上の一連のボリュームバックアップコピー全体を要求するユーザ要求が、スナップショットコピー５５７ａ１〜５５７ａｎの作成および格納によって満たされる。スナップショットコピー５５７ａ１〜５５７ａｎの各々は、特定の時間点におけるボリュームＡ５５５ａの完全な状態を表す。
【００５８】
さらに一実施形態では、例えばストレージシステム５９２上に格納されたスナップショットコピー５５７ｂ１およびスストレージシステム５９７上に格納されたナップショットコピー５５７ｂ２のような一連のスナップショットコピーは、例えばブロックストレージサービス５６５がサポートする別のコンピューティングインスタンスを採用している別ユーザからのバックアップ要求といった入力によって得られる。こうしたバックアップ要求では、ブロックストレージサービス５６５のブロックレベルストレージ上のボリュームＢ５５５ｂ内にあるデータのバックアップコピーセットの交互の要素を格納するための格納先群に、例えばストレージシステム５９２およびストレージシステム５９７を指定することができる。スナップショットコピー５５７ｂ１〜５５７ｂ２として示された一連のスナップショットコピーは、ユーザが一連のボリュームスナップショット全体を要求することで得られ、この場合、スナップショットコピー５５７ｂ１〜５５７ｂ２の各々は、特定の時間点におけるボリュームＢ５５５ｂの完全な状態を表す。したがって、スナップショットコピー５５７ｂ１〜５５７ｂ２を作成することで、例えばストレージシステム５９２とストレージシステム５９７といった複数の格納先間で交互にローディングを行うバックアップコピーセットが得られる。
【００５９】
このような要求に応じて、ブロックストレージサービス５６５が、時間ｔ1においてスナップショットＢ１  ５５６ｂ１を作成し、スナップショットＢ１コピー５５７ｂ１を内部ネットワーク５８５経由でストレージシステム５９２上に格納する。こうして、スナップショットＢ１コピー５５７ｂ１が、時間ｔ1におけるボリュームＢ５５５ｂの状態のバックアップコピーとして保存される。いくつかの実施形態において、この後、ブロックストレージサービス５６５上のスペースを維持するために、ブロックストレージサービス５６５がスナップショットＢ１  ５５６ｂ１を削除または解放する。
【００６０】
次に時間ｔ2において、ブロックストレージサービス５６５がスナップショットＢ２  ５５６ｂ２を作成し、スナップショットＢ２コピー５５７ｂ２を内部ネットワーク５８５およびネットワーク５７０経由でストレージシステム５９７上に格納する。こうして、スナップショットＢ２コピー５５７ｂ２が、時間ｔ2におけるボリュームＢ５５５ｂの状態のバックアップコピーとして保存される。いくつかの実施形態において、この後、ブロックストレージサービス５６５上のスペースを維持するために、ブロックストレージサービス５６５がスナップショットＢ２  ５５６ｂ２を削除または解放する。こうして、ストレージシステム５９２およびストレージシステム５９７上の一連のボリュームバックアップコピー全てを要求するユーザ要求が、スナップショットコピー５５７ｂ１〜５５７ｂ２の作成および格納によって満たされた。スナップショットコピー５５７ｂ１〜５５７ｂ２の各々は、特定の時間点におけるボリュームＢ５５５ｂの完全な状態を示している。
【００６１】
さらに一実施形態では、例えばストレージシステム５９７上に格納されたスナップショットＮ１コピー５５７ｎ１およびストレージシステム５９２上に格納されたスナップショットＮ２コピー５５７ｎ２といった一連のスナップショットコピーは、ブロックストレージサービス５６５がサポートする別のコンピューティングインスタンスを採用しているさらに別のユーザからのバックアップ要求のような入力によって得られる。こうしたバックアップ要求は、ブロックストレージサービス５６５のブロックレベルストレージ上のボリュームＮ５５５ｎ内に格納されているデータのバックアップコピーセットの複製要素を格納するための格納先群に、例えばストレージシステム５９２およびストレージシステム５９７を指定できる。スナップショットコピー５５７ｎ１〜５５７ｂｎとして示されている一連の複製スナップショットコピーは、一連のボリュームスナップショット全体を要求するユーザ要求から得られ、この場合、スナップショットコピー５５７ｎ１〜５５７ｎ２の各々は同一の時間点におけるボリュームＮ５５５ｎの完全な状態を表す。したがって、スナップショットコピー５５７ｎ１〜５５７ｎ２を作成することで、ストレージシステム５９２とストレージシステム５９７の間に冗長的な可用性を提供するバックアップコピーセットが得られる。
【００６２】
このような要求に応答して、ブロックストレージサービス５６５が時間ｔ1においてスナップショットＮ１  ５５６ｎ１を作成し、スナップショットＮ１コピー５５７ｎ１を内部ネットワーク５８５およびネットワーク５７０経由でストレージシステム５９７上に格納する。こうして、スナップショットコピーＮ１  ５５７ｎ１が、時間ｔ1におけるボリュームＮ５５５ｎの状態のバックアップコピーとして保存される。次にブロックストレージサービス５６５は、スナップショットＮ１コピー５５７ｎ２を内部ネットワーク５８５経由でストレージシステム５９２上に格納する。こうして、スナップショットＮ１コピー５５７ｎ２が、時間ｔ1におけるボリュームＮ５５５ｎの状態のバックアップコピーとして保存される。いくつかの実施形態において、その後、ブロックストレージサービス５６５上のスペースを維持するために、ブロックストレージサービス５６５がスナップショットＮ１  ５５６ｎ１を削除または解放する。
【００６３】
図６は、一実施形態に従ってボリューム部分の一連のバックアップコピーを格納するための一連の格納時の対話を示す高レベルブロック図である。ブロックストレージサービス６６５は一連のボリューム６５５ａ〜６５５ｎを格納し、スナップショット６５６ａ〜６５６ｎのセットを作成する。ボリュームＡ６５５ａはチャンク６５５ａ１〜６５５ａｎに分割され、スナップショットＡ６５６ａはチャンク６５６ａ１〜６５６ａｎに分割される。チャンク６５５ａ１〜６５５ａｎおよびチャンク６５６ａ〜６５６ｎの各々は、例えばあらゆる特定のチャンク内に格納されたデータ項目間になんらの必要な論理関係も持たない、固定サイズレンジのブロックストレージアドレスのような、ボリュームＡ６５５ａのデータのサブセットを表す。これに対し、ボリュームＢ６５５ｂおよびスナップショットＢ６５６ｂは複数のファイルに分割される。ボリュームＢ６５５ｂはファイル６５５ｂ１〜６５５ｂｎに、スナップショットＢ６５６ｂはファイル６５６ｂ１〜６５６ｂｎに分割される。ファイル６５５ｂ１〜６５５ｂｎおよびファイル６５６ｂ１〜６５６ｂｎは、ボリュームＢ６５５ｂのデータの論理サブセットをそれぞれ表す。
【００６４】
ストレージシステム６９７ａは、スナップショット６５６ａからのチャンクコピー６５７ａ１〜６５７ａ２、ならびにスナップショット６５６ｂからのファイルコピー６５７ｂ１〜６５７ｂｎを格納する。一実施形態において、ストレージシステム６９７ａは図２Ａのストレージシステム２９７と類似している。ストレージシステム６９７ａは、ネットワーク６７０を使用してブロックストレージサービス６６５と通信する。同様に、ストレージシステム６９７ｂは、スナップショット６５６ａからのチャンクコピー６５７ａ３〜６５７ａｎ、ならびにスナップショット６５６ｂからのファイルコピー６５８ｂ１〜６５８ｂｎを格納する。一実施形態において、ストレージシステム６９７ｂは図２のストレージシステム２９７と類似している。ストレージシステム６９７ｂは、ネットワーク６７０を使用してブロックストレージサービス６６５と通信する。一実施形態において、バックアップストレージアダプタ６５０により、ブロックストレージサービス６６５は、要求をＡＰＩコールとしてストレージシステム６９７ａへ送り、またストレージＡＰＩフォーマットにてストレージシステム６９７ａが送ってくるストレージＡＰＩコールへの応答を受信できるようになる。ストレージＡＰＩフォーマットはストレージシステム６９７ａが使用するフォーマットであるが、ストレージサービス６６５はストレージアダプタ６５０がないとこれを使用することができない。一実施形態では、ストレージシステム６９７ｂおよびブロックストレージサービス６６５は、共通のＡＰＩフォーマットを使用することで、バックアップストレージアダプタ６５０のサービスを受けなくても通信できる。代替実施形態において、バックアップストレージアダプタ６５０により、ブロックストレージサービス６６５は、要求をＡＰＩコールとしてストレージシステム６９７ｂへ送り、またストレージＡＰＩフォーマットにてストレージシステム６９７ｂが送ってくるストレージＡＰＩコールへの応答を受信できるようになる。ストレージＡＰＩフォーマットはストレージシステム６９７ｂが使用するフォーマットであるが、ストレージサービス６６５はストレージアダプタ６５０がないとこれを使用することができない。ストレージシステム６９７ａおよびストレージシステム６９７ｂは、同一または異なるエンティティによって制御される。
【００６５】
一実施形態において、一連のチャンクコピー、例えばストレージシステム６９７ａおよびストレージシステム６９７ｂ上に格納されているチャンクコピー６５７ａ１〜６５７ａｎは、例えばブロックストレージサービス６６５によりサポートされたファイルまたはデータチャンクへのアクセスを提供している１つ以上のボリュームにアタッチされているコンピューティングインスタンスのユーザからのバックアップ要求のような入力によって得られる。このようなバックアップ要求は、ブロックストレージサービス６６５のブロックレベルストレージ上のボリュームＡ６５５ａに格納されたデータの各部分のバックアップコピーのセットの各バックアップコピーを格納する格納先に、例えばストレージシステム６９７ａおよびストレージシステム６９７ｂを指定することができる。チャンクコピー６５７ａ１〜６５７ａｎは、ブロックレンジにより定義されたスナップショットの各部分を複数のストレージシステムに分散させよとユーザが要求することで得られたものである。チャンクコピー６５７ａ１〜６５７ａｎを合わせると、特定の時間点における１つの状態にあるボリュームＡ６５５ａの完全なスナップショットを表す。
【００６６】
ブロックストレージサービス６６５は、上記のような要求に応答して、時間ｔ1におけるスナップショットＡ６５６ａを作成し、また、ストレージシステム６９７ａ上へのチャンク６５７ａ１〜６５７ａ２の格納と、ストレージシステム６９７ｂ上へのチャンク６５７ａ３〜６５７ａｎの格納の両方を行う。こうして、チャンク６５７ａ１〜６５７ａｎが、時間ｔ1におけるボリュームＡ６５５ａの状態のバックアップコピーとして保存される。いくつかの実施形態において、この後に、ブロックストレージサービス６６５上のスペースを維持するために、ブロックストレージサービス６６５がスナップショットＡ６５６ａを削除または解放する。
【００６７】
一実施形態ではさらに、例えばストレージシステム６９７ａ上に格納されたファイルコピー６５７ｂ１〜６５７ｂｎならびにストレージシステム６９７ｂ上に格納されたファイルコピー６５８ｂ１〜６５８ｂｎといった一連のバックアップファイルコピーは、ブロックストレージサービス６６５がサポートする１つ以上のボリュームにアタッチされたコンピューティングインスタンスのユーザがバックアップ要求のような入力を行うことで得られる。こうしたバックアップ要求は、ブロックストレージサービス６６５のブロックレベルストレージ上のボリュームＢ６５５ｂに格納されたデータのバックアップコピーのセットの複写要素のための宛先群を、ストレージシステム６９７ａおよびストレージシステム６９７ｂのように指定できる。ファイルコピー６５７ｂ１〜６５７ｂｎおよびファイルコピー６５８ｂ１〜６５８ｂｎとして示される一連のバックアップコピーは、ユーザからのスナップショット作成要求によって得られ、この場合、スナップショット内の各ファイルが２つの場所に別々に複写され、また、ファイルコピー６５７ｂ１〜６５７ｂｎのセットおよびファイルコピー６５８ｂ１〜６５８ｂｎのセットの両方によって特定の時間点におけるボリュームＢ６５５ｂの完全な状態が表される。したがって、ファイルコピー６５７ｂ１〜６５７ｂｎおよびファイルコピー６５８ｂ１〜６５８ｂｎを作成することで、ボリュームＢ６５５ｂの冗長的なバックアップを提供するバックアップコピーのセットが得られる。
【００６８】
ブロックストレージサービス６６５は上記のような要求に応答し、時間ｔ1におけるスナップショットＢ６５６ｂを作成し、ファイルコピー６５７ｂ１〜６５７ｂｎをネットワーク６７０経由でストレージシステム６９７ａ上に格納する。ブロックストレージサービス６６５は、ファイルコピー６５８ｂ１〜６５８ｂｎをネットワーク６７０経由でストレージシステム６９７ｂ上に格納する。こうして、ファイルコピー６５７ｂ１〜６５７ｂｎおよびファイルコピー６５８ｂ１〜６５８ｂｎが、時間ｔ1におけるボリュームＢ６５５ｂの状態の冗長的なバックアップコピーとして保存される。いくつかの実施形態において、この後に、ブロックストレージサービス６６５上のスペースを維持するために、ブロックストレージサービス６６５がスナップショットＢ６５６ｂを削除または解放する。
【００６９】
図７は、一実施形態に従って一連のボリュームスナップショットを復元するための一連のストレージの対話を示す高レベルブロック図である。ブロックストレージサービス７６５は、ネットワーク７７０上でストレージシステム７９７ａおよびストレージシステム７９７ｂと通信する。一実施形態において、ストレージシステム７９７ａは図２Ａの格納システム２９７と類似している。ストレージシステム７９７ａは、スナップショットコピー７５７ａ１〜７５７ａｎを保持しており、その各々が特定の時間点におけるボリュームＡの完全な状態を表す。一実施形態において、スナップショットコピー７５７ａ１〜７５７ａｎは、スナップショットコピー５５７ａ１〜５５７ａｎに関連して上で述べたものと類似の方法で作成される。ストレージシステム７９７ａはさらにスナップショットＢ１コピー７５７ｂ１を保持する。
【００７０】
ブロックストレージサービス７６５がサポートするコンピューティングインスタンスのユーザは、例えばコンピューティングインスタンスのユーザが見たいと思うボリュームＡの復元の時間点に基づいて、スナップショットコピー７５７ａ１〜７５７ａｎから特定の１つを選択することで、スナップショットコピー７５７ａ１〜７５７ａｎのうちの１つからボリュームＡを復元するように要求できる。ブロックストレージサービス７６５はこうした要求に応答して、ボリュームＡの作成に必要な構成を決定する。この構成は、例えばスナップショットコピー７５７ａｌ〜７５７ａｎのうち好みの１つのインポート場所、例えばスナップショットＡｎコピー７５７ａｎであってよい。ブロックストレージサービス７６５は、ボリュームＡ７５５ａとラベル付けした空の受信側ボリュームを作成する。次にブロックストレージサービス７６５は、スナップショットＡｎコピー７５７ａｎのコンテンツをブロックストレージサービス７６５へ送信するように要求する取り出し要求をストレージシステム７９７ａへ送信する。一実施形態において、ブロックストレージサービス７６５がスナップショットＡｎコピー７５７のコンテンツを受信すると、このスナップショットコピー７５７のコンテンツがスナップショットＡＮ７５６ａとしてデポジットされ、つづいてボリュームＡ７５５ａへ転送される。一実施形態において、受信されてボリュームＡ７５５ａへ転送されたこのコンテンツは、スナップショットコピー７５７ａｎからスナップショットＡＮ７５６ｎ内への全てのデータの受信が完了する前に利用可能となり、コンピュータインスタンスのユーザに供給される。さらに一実施形態では、ストレージシステム７９７ａおよびブロックストレージシステム７６５は、これらが共有するＡＰＩプロトコルを使用して通信することができる。
【００７１】
同様に、ストレージシステム７９７ａはスナップショットコピー７５７ｂ１を、ストレージシステム７９７ｂはスナップショットコピー７５７ｂ２を保持し、各々のスナップショットコピーは特定時点におけるボリュームＢの完全な状態を表す。一実施形態では、スナップショットコピー７５７ｂ１〜７５７ｂ２は、図５のスナップショットコピー５５７ｂ１〜５５７ｂ２に関連して上述したものと類似の方法で作成される。
【００７２】
ブロックストレージサービス７６５がサポートするコンピューティングインスタンスのユーザは、例えばコンピューティングインスタンスのユーザが見たいと思うボリュームＢの復元の時間点に基づいてスナップショットコピー７５７ｂ１〜７５７ｂ２のうちの特定の１つを選択することで、スナップショットコピー７５７ｂ１〜７５７ｂ２のうちの１つからボリュームＢの復元を要求することができる。ブロックストレージサービス７６５はこうした要求に応答して、ボリュームＢの作成に必要な構成、例えばスナップショット７５７ｂ１〜７５７ｂ２の適切な１つをインポートする場所を決定する。ブロックストレージサービス７６５は、ボリュームＢ７５５ｂとラベル付けした空の受信側ボリュームを作成する。次にブロックストレージサービス７６５は、スナップショットコピー７５７ｂ１のコンテンツをブロックストレージサービス７６５へ送信せよと要求する取り出し要求をストレージシステム７９７ａに送信する。一実施形態において、ブロックストレージサービス７６５がスナップショットコピー７５７ｂ１のコンテンツを受信すると、スナップショットコピー７５７ｂ１のコンテンツがスナップショットＢ１  ７５６ｂとしてデポジットされ、その後、ボリュームＢ７５５ｂへ転送される。
【００７３】
さらに、ストレージシステム７９７ｂが、各々が特定の時間点におけるボリュームＮの完全な状態を表したスナップショットコピー７５７ｎ１〜７５７ｎ２を保持する。一実施形態では、スナップショットコピー７５７ｎ１〜７５７ｎ２は、図５のスナップショットコピー５５７ｎ１〜５５７ｎ２に関連して上述したものと類似の方法で作成される。
【００７４】
ブロックストレージサービス７６５がサポートするコンピューティングインスタンスのユーザは、例えばコンピューティングインスタンスのユーザが見たいと思うボリュームＮの復元の時間点に基づいて、スナップショットコピー７５７ｎ１〜７５７ｎ２から特定の１つを選択することで、スナップショットコピー７５７ｎｌ〜７５７ｎ２のうちの１つからボリュームＮの復元を要求することができる。ブロックストレージサービス７６５がこうした要求に応答して、ボリュームＮの作成に必要な構成、例えばスナップショットコピー７５７ｎ１〜７５７ｎ２のインポート場所を決定する。ブロックストレージサービス７６５は、ボリュームＮ７５５ｎとラベル付けした空の受信側ボリュームを作成する。次にブロックストレージサービス７６５が、スナップショットＮ２コピー７５７ｎ２のコンテンツを取り出してブロックストレージサービス７６５へ送信するように要求する取り出し要求をストレージシステム７９７ｂへ送る。一実施形態において、ブロックストレージサービス７６５がスナップショットＮ２コピー７５７ｎ２のコンテンツを受信すると、スナップショットコピー７５７ｎ２のコンテンツがスナップショットＮ２  ７５６ｎとしてデポジットされ、その後ボリュームＮ７５５ｎへ転送される。一実施形態では、ブロックストレージシステム７６５が使用するプロトコル向けのフォーマットのＡＰＩ要求をストレージシステム７９７ｂが使用するプロトコル向けのフォーマットのＡＰＩ要求にトランスレートするために、ストレージシステム７９７ｂとブロックストレージシステム７６５がブロックストレージアダプタ７６０を使用して通信することができるようになっている。
【００７５】
図８は、一実施形態に従ってボリューム部分の一連のバックアップコピーを復元するための一連のストレージの対話を示す高レベルブロック図である。ブロックストレージサービス８６５は、ネットワーク８７０経由でストレージシステム８９７ａおよびストレージシステム８９７ｂと通信する。一実施形態において、ストレージシステム８９７ａは図２のストレージシステム２９７と類似している。ストレージシステム８９７ａは、チャンクコピー８５７ａｌ〜８５７ａ２ならびにファイルコピー８５７ｂ１〜８５７ｂｎを格納する。同様に、ストレージシステム８９７ｂは、チャンクコピー８５７ａ３〜８５７ａｎならびにファイルコピー８５８ｂ１〜８５８ｂｎを格納する。一実施形態において、ストレージシステム８９７ｂは図２のストレージシステム２９７と類似している。ストレージシステム８９７ｂは、ネットワーク８７０を使用してブロックストレージサービス８６５と通信する。一実施形態において、バックアップストレージアダプタ８５０は、ブロックストレージサービス８６５が要求をストレージシステム８９７ａへＡＰＩコールとして送り、またストレージＡＰＩフォーマットにてストレージシステム８９７ａが送ってくるストレージＡＰＩコールへの応答を受信できるようにする。ストレージＡＰＩフォーマットはストレージシステム８９７ａが使用するフォーマットであるが、ストレージサービス８６５はストレージアダプタ８５０がないとこれを使用することができない。一実施形態において、ストレージシステム８９７ｂおよびブロックストレージサービス８６５は、共通のＡＰＩフォーマットを使用することにより、バックアップストレージアダプタ８５０のサービスを受けずに通信できる。代替実施形態において、バックアップストレージアダプタ８５０は、ブロックストレージサービス８６５が、ストレージシステム８９７ｂへ要求をＡＰＩコールとして送り、またストレージＡＰＩフォーマットにてストレージシステム８９７ｂが送ってくるストレージＡＰＩコールへの応答を受信できるようにする。ストレージＡＰＩフォーマットはストレージシステム８９７ｂが使用するフォーマットであるが、ストレージサービス８６５はストレージアダプタ８５０がないとこれを使用することができない。ストレージシステム８９７ａおよびストレージシステム８９７ｂは、同一または異なるエンティティによって制御される。
【００７６】
ブロックストレージサービス８６５がサポートするコンピューティングインスタンスのユーザは、チャンクコピー８５７ａ１〜８５７ａｎで構造されたスナップショットからボリュームＡを復元するように要求できる。ブロックストレージサービス８６５がこの要求に応答し、ボリュームＡの作成に必要な構成、例えばストレージシステム８９７ａおよびストレージシステム８９７ｂ上のチャンクコピー８５７ａｌ〜８５７ａｎのインポート場所を決定する。ブロックストレージサービス８６５は、ボリュームＡ８５５ａとラベル付けした空の受信側ボリュームを作成する。次にブロックストレージサービス８６５が、チャンクコピー８５７ａｌ〜８５７ａｎのコンテンツをブロックストレージサービス８６５へ送信するように要求する取り出し要求を、ストレージシステム８９７ａおよびストレージ８９７ｂへ送信する。
【００７７】
一実施形態において、ブロックストレージサービス８６５がチャンクコピー８５７ａｌ〜８５７ａｎのコンテンツを受信すると、チャンクコピー８５７ａ１〜８５７ａｎのコンテンツが、チャンク８５６ａ１〜８５６ａｎを含んだスナップショットＡ８５６ａとしてデポジットされ、その後、チャンク８５５ａ１〜８５５ａｎとしてボリュームＡへ転送される。一実施形態において、受信されボリュームＡ８５５ａへ転送されたコンテンツは、チャンクコピー８５７ａ１〜８５７ａｎからの全データがスナップショットＡ８５６Ａ内に受信完了となる前に、利用可能となりコンピューティングインスタンスのユーザに供給される。
【００７８】
ブロックストレージサービス８６５がサポートするコンピューティングインスタンスのユーザは、ファイルコピー８５７ｂ１〜８５７ｂｎならびに８５８ｂ１〜８５８ｂｎで構造されたスナップショットＢ８５６ｂからボリュームＢ８５５ｂを復元するよう要求することができる。ブロックストレージサービス８６５はこうした要求に応答して、ボリュームＢの作成に必要な構成、例えばストレージシステム８９７ａおよびストレージシステム８９７ｂ上のファイルコピー８５７ｂ１〜８５７ｂｎおよび８５８ｂ１〜８５８ｂｎをインポートする場所を決定する。一実施形態において、ファイルコピー８５７ｂ１〜８５７ｂｎおよび８５８ｂ１〜８５８ｂｎの各々のインポート元の場所を、ストレージシステム８９７ａおよびストレージシステム８９７ｂへのローディングの分散や、あるいはサーバの信頼性や応答性といった他の基準に基づいて決定することができる。
【００７９】
詳細には、ストレージシステム８９７ａ上に常駐するファイルコピー８５７ｂ１〜８５７ｂｎと、ストレージシステム８９７ｂ上に常駐するファイルコピー８５８ｂ１〜８５８ｂｎとで構造されたスナップショットＢ８５６ｂからボリュームＢ８５５ｂを復元する機能によって、複数形式のストレージ柔軟性が得られる。例えば、ストレージシステム８９７ａ上に常駐するファイルコピー８５７ｂ１〜８５７ｂｎの取り出しが遅速化するか、またはストレージシステム８９７ａが全く応答しなくなった場合には、ストレージシステム８９７ｂ上に常駐するファイルコピー８５８ｂ１〜８５８ｂｎを取り出すことで、スナップショットＢ８５６ｂについてのデータのインポートを加速することが可能である。あるいは、ファイルコピー８５７ｂ１〜８５７ｂｎがストレージシステム８９７ａ上に、またファイルコピー８５８ｂ１〜８５８ｂｎがストレージシステム８９７ｂ上に常駐していることで、ファイルコピーがまず高速なストレージサーバ上で作成され、その後により遅速なサーバへ低速でコピーされて、最終的には時間と共に（いくつかの実施形態では、前回使用の時間または作成の時間から計測される）高速なサーバから削除されるというストレージ管理が可能になる。同様に、実施形態は、本開示の範囲から逸脱することなく、ストレージシステム８９７ａに常駐のファイルコピー８５７ｂ１〜８５７ｂｎならびにストレージシステム８９７ｂ上に常駐のファイルコピー８５８ｂ１〜８５８ｂｎの分散および使用と類似した複数コピーチャンクの分散を実行する。
【００８０】
ブロックストレージサービス８６５は、ボリュームＢ８５５ｂとラベル付けした空の受信側ボリュームを作成する。次にブロックストレージサービス８６５が、ストレージシステム８９７ａおよびストレージシステム８９７ｂのうちの選択した一方のコンテンツをブロックストレージサービス８６５へ送信するよう要求する取り出し要求を、ストレージシステム８９７ａおよびストレージシステム８９７ｂへ送信する。
【００８１】
一実施形態において、ファイルコピー８５７ｂ１〜８５７ｂｎおよび８５８ｂ１〜８５８ｂｎから選択された１つのファイルコピーのコンテンツがブロックストレージサービス８６５によって受信されると、ファイルコピー８５７ｂ１〜８５７ｂｎおよび８５８ｂ１〜８５８ｂｎから選択された１つのファイルコピーのコンテンツが、ファイル８５６ｂ１〜８５６ｂｎを含むスナップショットＢ８５６ｂとしてデポジットされ、その後、ファイル８５５ｂ１〜８５５ｂｎとしてボリュームＢ８５５ｂへ転送される。一実施形態において、受信されボリュームＢ８５５ｂへ転送されたコンテンツは、ファイルコピー８５７ｂ１〜８５７ｂｎおよび８５８ｂ１〜８５８ｂｎのうちの選択された１つからの全データがスナップショットＢ８５６Ｂ内に受信完了する前に利用可能となりコンピューティングインスタンスのユーザに供給される。
【００８２】
コンピュータシステム実施形態の例
いくつかの実施形態において、上述した方法、技術、または構成要素はいずれも、コンピュータからアクセスできる媒体経由での格納ならびに伝達が可能な命令およびデータとして実現できるものとみなされる。このような方法または技術には、例えば、また限定なく、個別のユーザのセットの個別のコンピューティングインスタンスのセットに対しブロックレベルストレージを提供するブロックストレージサービスの様々な方法が含まれる。この場合、実施形態は、個別のユーザのセットの個別のコンピューティングインスタンスのセットによって、ブロックレベルストレージに格納されているデータのバックアップコピーを作成するためのバックアップコピー機能と、バックアップコピーを個別のユーザのセットのそれぞれが指定した異なる格納先の場所に格納するための格納機能との両方を提供し、またこれらの機能は、上で述べ、図１〜図７に示したエレメントおよび方法によって、あるいはこのようなエレメントおよび方法の適切な応用形によって実行されるものである。このような命令は、特定の目的（例えば、ウェブサービストラフィックの処理、高精度の数字演算を行うなど）、ならびに高位機能（例えばオペレーティングシステム機能性、仮想化機能性、ネットワーク通信機能性、アプリケーション機能性、および／またはあらゆる他の適切な方法）にあつらえた特定の計算機能を行うために実行される。
【００８３】
コンピュータシステムの例示的な一実施形態は、図９に示すコンピュータからアクセスできる媒体を含む。コンピュータシステム９００は、図１の物理コンピュータシステム１００の例示的な構成に相当する。これと同様に、様々な実施形態では、上述した様々なモジュールまたは方法のいずれの機能性も（例えば、オペレーティングシステム１５０、仮想化モジュール１６０、仮想マシン１８０、および／または上述した他のエレメントが提供するもの）、コンピュータシステム９００の１つ以上のインスタンスによって実現され得る。同様、データセンター２００の様々なエレメント、例えばノード２１０、コンピューティングシステム２３０、ブロックストレージサービス２６５、ローカルストレージサービス２９２、およびデータセンター２００のような他の機能ユニットを、コンピュータシステム９００の１つ以上複数のインスタンスで実現することができる。
【００８４】
特に、図１に示したシステムの異なる複数のエレメントを異なる複数のコンピュータシステム９００によって実現できる点に留意されたい。例えば、仮想化モジュール１６０を１つのコンピュータ９００上で実現し、一方で、仮想マシン２００をこれとは異なるコンピュータシステム９００上で、仮想化モジュール１６０の制御下において実現できる。同様に、複数のノード２１０ならびに複数のコンピューティングシステム２３０をそれぞれ異なるコンピュータシステム９００によって実現し、一方で、ブロックストレージサービス２６５、リモートストレージシステム２９７、ローカルストレージシステム２９２をそれぞれ異なるコンピュータシステム９００によって実現することができる。コンピューティングシステムの様々な実施形態において、図９に示す様々な部分を除いた個々のコンピューティングシステム、ならびに図９中では省略されている他の部分を追加した個々のコンピューティングシステムが組み立てられる。
【００８５】
図示の実施形態において、コンピュータシステム９００は、入出力（Ｉ／Ｏ）インターフェース９３０経由でシステムメモリ９２０に接続した１つ以上のプロセッサ９１０を含む。コンピュータシステム９００は、Ｉ／Ｏインターフェース９３０に接続したネットワークインターフェース９４０をさらに含む。様々な実施形態において、コンピュータシステム９００は１つのプロセッサ９１０を含むユニプロセッサシステム、あるいは複数のプロセッサ９１０（例えば２、４、８個、または別の適切な個数）を含むマルチプロセッサシステムであってよい。プロセッサ９１０は、命令を実行できるあらゆる適切なプロセッサであってよい。例えば、様々な実施形態において、プロセッサ９１０は汎用プロセッサまたは組み込みプロセッサであり、ｘ８６、ＰｏｗｅｒＰＣ（登録商標）、ＳＰＡＲＣ（登録商標）、またはＭＩＰＳ（登録商標）ＩＳＡのような様々な命令セットアーキテクチャ（ＩＳＡ）、あるいは他のあらゆる適切なＩＳＡを実現する。マルチプロセッサシステムにおいて、通常、各プロセッサ９１０は同一のＩＳＡを実現できるが、しかし必ずしもそうでなくてもよい。
【００８６】
システムメモリ９２０は、プロセッサ９１０からアクセスできる命令およびデータを格納するように構成される。様々な実施形態において、システムメモリ９２０はあらゆる適切なメモリ技術、例えばスタティックランダムアクセスメモリ（ＳＲＡＭ）、同期ダイナミックＲＡＭ（ＳＤＲＡＭ）、不揮発性／フラッシュタイプメモリ、またはその他のあらゆるタイプのメモリを使用して実現される。図示の実施形態では、上述したような望ましい機能、方法、技術を実現する命令およびデータが、システムメモリ９２０内にコード９２５として格納される。いくつかの実施形態において、コード９２５は、プロセッサ９１０による直接の実行は不可能であるが、トランスレートすることでプロセッサ９１０が直接実行できる命令になる抽象形式で表示または符号化されるという望ましい機能を実現する命令およびデータを含んでいてよい。例えば、コード９２５は、プロセッサ９１０やプロセッサ９１０上で実行できる他のコード９２５によってエミュレートされ得るＩＳＡ内で指定された命令を含んでいてよい。あるいは、コード９２５は、コンパイルまたは実行中に解釈される抽象プログラミング言語にて実現できる命令、手順または文を含んでいてもよい。非限定的な例として、コード９２５は、ＣまたはＣ＋＋のような手順指向またはオブジェクト指向の言語、Ｐｅｒｌのようなスクリプト言語、ＨＴＭＬまたはＸＭＬマークアップ言語、もしくは他のあらゆる適切な言語にて指定されたコードを含むことができる。
【００８７】
一実施形態において、Ｉ／Ｏインターフェース９３０は、プロセッサ９１０と、システムメモリ９２０と、そしてネットワークインターフェース９４０や他の周辺インターフェースを含むデバイス内のあらゆる周辺デバイスとの間でＩ／Ｏトラフィックを調整するように構成される。いくつかの実施形態において、Ｉ／Ｏインターフェース９３０はあらゆる必要なプロトコル、タイミングを実行するか、あるいは、データ信号を或る構成要素（例えばシステムメモリ９２０）から別の構成要素（例えばプロセッサ９１０）での使用に適したフォーマットに変換するための他のデータ転換を実行する。いくつかの実施形態において、Ｉ／Ｏインターフェース９３０は、様々なタイプの周辺バスを介してアタッチされたデバイスのサポートを含んでいてよい。こうした周辺バスには、例えば、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス標準またはユニバーサルシリアルバス（ＵＳＢ）標準の応用形がある。いくつかの実施形態において、Ｉ／Ｏインターフェース９３０の機能を、例えばノースブリッジおよびサウスブリッジといった２つ以上の別々の構成要素に分割することができる。また、いくつかの実施形態において、例えばシステムメモリ９２０につないだインターフェースのようなＩ／Ｏインターフェース９３０の機能性のいくつかまたは全てを、プロセッサ９１０内に直接取り入れることができる。
【００８８】
ネットワークインターフェース９４０は、コンピュータシステム９００とネットワーク１２０にアタッチされた他のデバイス（例えば他のコンピュータシステム）との間でデータ交換を行えるように構成される。様々な実施形態において、ネットワークインターフェース９４０は、有線または無線式の汎用データネットワーク、例えばあらゆる適切なタイプのイーサネット（登録商標）ネットワークを介して、アナログ音声ネットワークやデジタルファイバ通信ネットワークのような遠隔通信／電話ネットワーク経由、ファイバチャネルＳＡＮのようなストレージエリアネットワーク経由、あるいは他のあらゆる適切なタイプのネットワークおよび／またはプロトコル経由で通信をサポートする。
【００８９】
いくつかの実施形態において、システムメモリ９２０は、上で述べたような命令およびデータを格納するように構成された、コンピュータからアクセスできるストレージ媒体の一実施形態であってよい。しかし、他の実施形態では、命令および／またはデータは、コンピュータからアクセスできる多様なタイプのストレージ媒体上で受信、送信、格納される。概して、コンピュータからアクセスできるストレージ媒体には、Ｉ／Ｏインターフェース９３０を介してコンピュータシステム９００に接続したディスクやＣＤ／ＤＶＤ−ＲＯＭといった、磁気または光学媒体のようなストレージ媒体またはメモリ媒体が含まれる。コンピュータからアクセスできるストレージ媒体には、コンピュータシステム９００のいくつかの実施形態の中にシステムメモリ９２０または別タイプのメモリとして含まれているあらゆる揮発性または不揮発性ストレージ媒体、例えばＲＡＭ（ＳＤＲＡＭ、ＤＤＲ、ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭなど）、ＲＯＭなどが含まれる。コンピュータからアクセスできるストレージ媒体には、総体的に、ネットワークインターフェース９４０を介して実現されるネットワークおよび／または無線リンクのような通信媒体経由で伝達される送信媒体または信号（電気信号、電磁信号、デジタル信号など）を介してアクセスできる。
【００９０】
上記で実施形態を非常に詳細に説明したが、上述の開示を十分に理解した当業者には多数の応用形および改良形が明白となるだろう。以下の請求項は、こうした応用形および改良形の全てを包括するものと解釈されることが意図される。
【００９１】
付記１．方法であって、
ブロックストレージサービスにより、複数の個別のユーザ用の複数の個別のコンピューティングインスタンスにブロックレベルストレージを提供することと、
上記ブロックレベルストレージ内に格納されたデータのバックアップコピーを上記複数の個別のユーザ用の上記複数の個別のコンピューティングインスタンスで作成し、このバックアップコピーを上記複数の個別のユーザがそれぞれ指定した異なる格納先に格納するバックアップコピー機能をブロックストレージサービスによって提供することと、
上記複数の個別のユーザのうちの特定の１人用のブロックレベルストレージに格納されているデータの少なくとも一部分のバックアップコピーを格納するために、上記複数の個別のユーザのうちの特定の１人からの、特定の格納先を指定する入力をブロックストレージサービスによって受信することと、
上記複数の個別のユーザの上記特定の１人用のブロックレベルストレージに格納されているデータの少なくとも一部分のバックアップコピーを作成し、上記複数の個別のユーザのうちの上記特定の１人用のブロックレベルストレージに格納されているデータの少なくとも一部分のバックアップコピーを特定の格納先に格納することと、
ブロックストレージサービスによって、上記複数の個別のユーザのうちの別の１人からの、上記複数の個別のユーザのうちの別の１人用ブロックレベルストレージに格納されたデータの少なくとも一部分のバックアップコピーを格納するために、異なる格納先を指定する入力を受信することと、
上記複数の個別のユーザのうちの上記別の１人用のブロックレベルストレージに格納されたデータの少なくとも一部分のバックアップコピーを作成し、上記複数の個別のユーザのうちの上記別の１人用のブロックレベルストレージに格納されたデータの少なくとも一部分のバックアップコピーを、異なる格納先に格納することと、を含み、
特定の格納先と異なる格納先とは、互いに遠く離れた場所にある異なるストレージシステムのためのものである、方法。
【００９２】
付記２．バックアップコピー用であるデータの少なくとも一部分を、上記特定のユーザ用の上記複数の個別のコンピューティングインスタンスのうちの１つにアタッチされるブロックレベルストレージボリュームとして指定する入力を、上記特定のユーザから受信することをさらに含む、付記１に記載の方法。
【００９３】
付記３．バックアップコピー用であるデータの少なくとも一部分を、ブロックレベルストレージに格納された１つ以上のファイルとして指定する入力を、特定のユーザから受信することをさらに含む、付記１に記載の方法。
【００９４】
付記４．バックアップコピー用であるデータの少なくとも一部分をブロックレベルストレージ内のデータ場所レンジとして指定する入力を、特定のユーザから受信することをさらに含む、付記１に記載の方法。
【００９５】
付記５．上記特定のユーザ用のブロックレベルストレージに格納されているデータの少なくとも一部分は、上記特定のユーザ用の上記複数の個別のコンピューティングインスタンスのうちの少なくとも１つにアタッチされたブロックレベルストレージボリュームであり、上記方法は、上記ブロックレベルストレージボリュームのポイントインタイムスナップショットを作成することをさらに含み、上記バックアップコピーはこのポイントインタイムスナップショットのコピーである、付記１に記載の方法。
【００９６】
付記６．バックアップコピーを格納するために少なくとも１つの別の格納先を指定する入力を、特定のユーザから受信することと、
ブロックストレージサービスによって、上記特定の格納先に加え、バックアップコピーを少なくとも１つの別の格納先に格納することと、をさらに含む、付記１に記載の方法
【００９７】
付記７．方法であって、
上記特定のユーザ用のブロックレベルストレージに格納されているデータの別の部分のバックアップコピーを格納するために少なくとも１つの他の格納先を指定する入力を、特定のユーザから受信することと、
ブロックストレージサービスによって、データの別の部分のバックアップコピーを他の格納先に格納することと、を含む、付記１に記載の方法。
【００９８】
付記８．上記特定の格納先は、ブロックストレージサービスと同一のエンティティによって操作されるストレージシステムのためのものであり、
異なる格納先は、異なるエンティティによって操作されるストレージシステムのためのものである、付記１に記載の方法。
【００９９】
付記９．特定の格納先への格納と、上記異なる格納先への格納の両方は、共通のアプリケーションプログラミングインターフェース（ＡＰＩ）に従って実行される、付記１に記載の方法。
【０１００】
付記１０．特定の格納先への上記格納と、異なる格納先への上記格納とは、異なるＡＰＩに従って実行される、付記１に記載の方法。
【０１０１】
付記１１．上記特定のユーザから、特定の格納先にデータを格納するためにインターフェースモジュールを受信することをさらに含み、上記インターフェースモジュールは、特定の格納先のためのストレージＡＰＩに従ってストレージオペレーションを実行する、付記１０に記載の方法。
【０１０２】
付記１２．ブロックレベルストレージ内に特定のユーザ用のストレージボリュームを作成または復元することをさらに含み、上記作成することは、上記特定の格納先から上記バックアップコピーを取り出すことを含む、付記１に記載の方法。
【０１０３】
付記１３．システムであって、
ブロックストレージサービスを実現するように構成された１つ以上のコンピュータを備え、このブロックストレージサービスは、
或るユーザ用のコンピューティングインスタンスからデータを格納するブロックレベルストレージと、
上記ユーザが、上記ユーザ用のブロックレベルストレージ内に格納されている各データのバックアップコピーを格納するために格納先をそれぞれ指定できるように構成されたインターフェースであって、上記それぞれの格納先の少なくともいくつかは、互いに遠く離れた場所にある異なるストレージシステムのためのものであるインターフェースと、
上記ユーザ用の上記複数の個別のコンピューティングインスタンスによって、上記ブロックレベルストレージに格納されているデータのバックアップコピーを作成し、このバックアップコピーを上記インターフェース経由で上記ユーザが指定した異なる格納先の場所に格納するためのバックアップコピー機能と、を備える、システム。
【０１０４】
付記１４．ブロックレベルストレージは、複数の個別のユーザ用の複数の個別のコンピューティングインスタンスからのデータを格納するようにさらに構成されており、
インターフェースは、上記複数の個別のユーザが、上記複数の個別のユーザ用のブロックレベルストレージに格納されている上記各データの上記バックアップコピーを格納するために、上記格納先をそれぞれ指定できるようにさらに構成されており、
バックアップコピー機能は、上記複数の個別のユーザ用の上記ブロックレベルストレージに格納されているデータのバックアップコピーを作成し、このバックアップコピーを、上記複数の個別のユーザのうちの各ユーザが上記インターフェース経由で指定した異なる格納先の場所に格納するようにさらに構成されている、付記１３に記載のシステム。
【０１０５】
付記１５．ブロックレベルストレージは、各々が上記複数の個別のコンピューティングインスタンスの少なくとも１つにアタッチされた１つ以上のブロックレベルストレージボリュームを格納し、ブロックストレージサービスは、１つ以上のブロックレベルストレージボリュームのポイントインタイムスナップショットを作成するようにさらに構成されており、上記バックアップコピーはこのポイントインタイムスナップショットのコピーである、付記１４に記載のシステム。
【０１０６】
付記１６．上記インターフェースは、上記複数の個別のユーザのうちの所与の１人が、上記ブロックレベルストレージ内に上記複数の個別のユーザのうちの所与の１人のために格納されているデータのバックアップコピーを格納するために、複数の個別の格納先を指定できるようにさらに構成されている、付記１４に記載のシステム。
【０１０７】
付記１７．それぞれの格納先のうちの１つは、ブロックストレージサービスと同一のエンティティによって動作されるストレージシステムのためのものであり、それぞれの格納先のうちの別の１つは、上記とは異なるエンティティによって動作されるストレージシステムのためのものである、付記１４に記載のシステム。
【０１０８】
付記１８．上記ブロックストレージサービスは、バックアップコピーを、共通のアプリケーションプログラミングインターフェース（ＡＰＩ）に従ってそれぞれの格納先に格納するように構成されている、付記１４に記載のシステム。
付記１９．上記ブロックストレージサービスは、バックアップコピーを、異なるＡＰＩに準拠してそれぞれの格納先に格納するように構成されている、付記１４に記載のシステム。
【０１０９】
付記２０．ブロックストレージサービスは、上記特定のユーザから、特定の格納先へのデータを格納するためのプラガブルモジュールを受容するように構成され、プラガブルモジュールは、特定の格納先のためのストレージＡＰＩに準拠してストレージ操作を実行する、付記１９に記載のシステム。
【０１１０】
付記２１．方法であって、
ブロックストレージサービスによって、ストレージボリュームのスナップショットコピーの取り出し元である特定のインポート場所を指定する入力を受信することと、
ブロックストレージサービスによって、スナップショットコピーを特定のインポート場所から取り出すことと、
スナップショットコピーに基づいて、ブロックストレージサービスのブロックレベルストレージ内にブロックレベルストレージボリュームを作成または復元することと、
複数の個別のユーザのうちの特定のユーザにブロックレベルストレージボリュームを提供することと、
複数の個別のユーザのうちの別の１人のための異なるインポート場所からの別のスナップショットコピーについて、上記受信すること、上記取り出すこと、上記作成または復元すること、および上記提供することを繰り返すことと、を含む、システム。
【０１１１】
付記２２．複数の個別のユーザのうちの特定のユーザにブロックストレージ容量を提供することは、この複数の個別のユーザのうちの特定のユーザ用のコンピューティングインスタンスにブロックストレージボリュームを提供することをさらに含む、付記２１に記載の方法。
【０１１２】
付記２３．ブロックストレージサービスによって、スナップショットコピーを特定のインポート場所から取り出すことは、
コンピューティングインスタンスから受信した、選択されたデータをブロックレベルストレージボリュームから読み出しせよとの要求に応答して、選択されたデータを特定のインポート場所から取り出すことと、
選択されていないデータを特定のインポート場所から取り出すことと、をさらに含む、付記２２に記載の方法。
【０１１３】
付記２４．選択されていないデータを特定のインポート場所から取り出すことは、選択されていないデータを、予測される要求のパターンを表すために決定された順序で特定のインポート場所から取り出すことをさらに含む、付記２３に記載の方法。
【０１１４】
付記２５．コンピューティングインスタンスにブロックレベルストレージボリュームを提供することは、選択されていないデータの取り出しが完了する前に、選択されたデータを提供することをさらに含む、付記２３に記載の方法。
【０１１５】
付記２６．特定のインポート場所は、ブロックストレージサービスと同一のエンティティによって動作されるストレージシステムのためのものであり、これと異なるインポート場所は異なるエンティティによって動作されるストレージシステムのためのものである、付記２２に記載の方法。
【０１１６】
付記２７．上記取り出すことと、上記取り出しを上記繰り返すことは、両方とも共通のアプリケーションプログラミングインターフェース（ＡＰＩ）に準拠して行われる、付記２２に記載の方法。
【０１１７】
付記２８．上記取り出すことと、上記取り出しを繰り返すこととは、異なるＡＰＩに準拠して行われる、付記２２に記載の方法。
【０１１８】
付記２９．特定のインポート場所からデータを取り出すために、インターフェースモジュールを上記入力に関連した特定のユーザから受信することをさらに含み、上記インターフェースモジュールは、特定のインポート場所のためのストレージＡＰＩに準拠して、取り出しオペレーションを行う、付記２２に記載の方法。
【０１１９】
付記３０．プログラム命令を格納する非一時的なコンピュータ可読媒体であって、上記プログラム命令は１つ以上のコンピュータ上で実行されると、
複数の個別のユーザ用の複数の個別のコンピューティングインスタンスからのデータを格納するブロックレベルストレージと、
上記複数の個別のユーザが、上記個別のユーザ用のブロックレベルストレージに格納されているそれぞれのデータのバックアップコピーを格納するために、それぞれの格納先を指定できるように構成されたインターフェースであって、それぞれの格納先の少なくともいくつかは、互いから遠く離れた場所にある異なるストレージシステムのためのものであるインターフェースと、
上記複数の個別のユーザ用の上記複数の個別のコンピューティングインスタンスによって、上記ブロックレベルストレージに格納されているデータのバックアップコピーを作成し、このバックアップコピーを、上記複数の個別のユーザのうちの各１人がインターフェース経由で指定した異なる格納先の場所に格納するバックアップコピー機能とを実現する、非一時的なコンピュータ可読媒体。
【０１２０】
付記３１．ブロックレベルストレージは、上記複数の個別のコンピューティングインスタンスのうちの少なくとも１つにそれぞれアタッチされた１つ以上のブロックレベルストレージボリュームを格納し、ブロックストレージサービスは、この１つ以上のブロックレベルストレージボリュームのポイントインタイムスナップショットを作成するようにさらに構成されており、上記バックアップコピーはこのポイントインタイムスナップショットのコピーである、付記３０に記載の方法。
【０１２１】
付記３２．上記インターフェースは、上記複数の個別のユーザのうちの所与の１人が、上記複数の個別のユーザのうちの上記１人のために上記ブロックレベルストレージに格納されているデータのバックアップコピーを格納するために、複数の個別の格納先を指定できる、付記３０に記載の媒体。
【０１２２】
付記３３．それぞれの格納先のうちの１つは、ブロックストレージサービスと同一のエンティティによって動作されるストレージシステムのためのものであり、それぞれの格納先のうちの別の１つは、上記とは異なるエンティティによって動作されるストレージシステムのためのものである、付記３０に記載の媒体。
【図１】
2013540314.tif 000003
【図２Ａ】
2013540314.tif 000004
【図２Ｂ】
2013540314.tif 000005
【図３Ａ】
2013540314.tif 000006
【図３Ｂ】
2013540314.tif 000007
【図４】
2013540314.tif 000008
【図５】
2013540314.tif 000009
【図６】
2013540314.tif 000010
【図７】
2013540314.tif 000011
【図８】
2013540314.tif 000012
【図９】
2013540314.tif 000013
【国際調査報告】
2013540314.tif 000014