(57)【特許請求の範囲】
【請求項１】
１つまたは複数のコンピューティングデバイスにより、
クライアントから受け取ったデータボリュームに対する書き込み要求を、前記データボリュームに対するレプリケーションを実行するために、前記データボリュームのレプリカを維持する複数のストレージノードにおいて完了することであって、前記書き込み要求は、前記複数のストレージノードのそれぞれにおいて完了したときに、完了として承認される、前記完了することと、
前記複数のストレージノードの１つのストレージノードがレプリケーションに利用できないことを判定することと、
前記ストレージノードが利用できないことの前記判定に応答して、前記データボリュームに対するレプリケーションが前記ストレージノードに対して無効となるように、前記データボリュームに対する低減した耐久性状態にしたがって、前記データボリュームに対する後から受け取った書き込み要求を処理することであって、前記処理することは、
前記データボリュームに対する前記後から受け取った書き込み要求のそれぞれに対して、
レプリケーションに利用可能な前記複数のストレージノードの１つまたは複数のストレージノードで、前記後から受け取った書き込み要求を完了し、この書き込み要求は前記複数のストレージノードよりも少ない数のストレージノードで完了されることと、
前記書き込み要求を承認するために以前使用された前記複数のストレージノードより少ない数の前記１つまたは複数のストレージノードでの前記後から受け取った書き込み要求の完了に応答して、前記後から受け取った書き込み要求完了の承認を行うことと、を包含する、前記処理することと、
を実行することを備える方法。
【請求項２】
前記複数のストレージノードは、マスタストレージノードとスレーブストレージノードとを有し、レプリケーションに利用できないと判定された前記ストレージノードはマスタストレージノードであり、前記データボリュームに対する前記書き込み要求はマスタストレージノードで受け取り、前記マスタストレージノードは、前記マスタストレージノードで受け取った書き込み要求を、前記スレーブストレージノードに送り前記スレーブストレージノードで完了し、この方法は、更に、
前記ストレージノードは利用できないとの前記判定に応答して、前記スレーブストレージノードを前記データボリュームに対する新しいマスタストレージノードに格上げし、前記後から受け取った前記データボリュームに対する書き込み要求は、前記新しいマスタストレージノードで受け取り、
レプリケーションに利用できる前記複数のストレージノードの前記１つまたは複数のストレージノードにおける前記後から受け取った書き込み要求の前記完了は、前記後から受け取った書き込み要求が、前記複数のストレージノードの他の任意のストレージノードでの書き込み要求が完了することなく、前記新しいマスタストレージノードで完了するように実行される、請求項１に記載の方法。
【請求項３】
更に、
前記データボリュームに対する書き込み要求を処理するため、他のストレージノードに対して前記データボリュームのレプリケーションを有効化することを決定し、
前記データボリュームのレプリケーションを有効化することの決定に対応して、
前記データボリュームの他の複製を維持する前記他のストレージノードを特定し
１つまたは複数のストレージノードに維持されるように前記データボリュームを複製するために、前記データボリュームの前記他の複製を更新する１つまたは複数の複製操作を実行し、更に、
追加の書き込み要求を完了として承認する前に、前記他のストレージノードで追加の書き込み要求が完了するように、前記他のストレージノードに対するレプリケーションを可能にする、請求項１に記載の方法。
【請求項４】
前記他のストレージノードは、利用できないと判定された前記ストレージノードと相違し、前記他の複製の更新を実行した前記１つまたは複数の複製操作は、前記１つまたは複数のストレージノードに維持される全てのデータボリュームのコピーを送り、前記コピーは、前記データボリュームの前記他の複製として格納される、請求項３に記載の方法。
【請求項５】
前記複数のストレージノードが、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、前記データボリュームに対するレプリケーションの前記判定は、
前記データボリュームの前記他の複製を維持するためのストレージノードの前記大きなコレクション中の記憶容量、
前記ストレージノードの大きなコレクション中のネットワーク利用、または、
前記データボリュームに対する耐久性の状態、
の１つまたは複数に、少なくとも一部が基づいて行われる、請求項３に記載の方法。
【請求項６】
前記１つまたは複数のコンピューティングデバイスの少なくともいくつかは、ストレージノードの前記大きなコレクションに対する制御プレーンを実装し、前記データボリュームに対するレプリケーションを有効化することの前記決定は、前記制御プレーンで実行される、請求項５に記載の方法。
【請求項７】
前記複数のストレージノードは、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、前記複数の異なるデータボリュームの少なくともいくつかに対する書き込み要求は、それぞれの低減した耐久性状態にしたがって処理され、前記データボリュームに対するレプリケーションを有効化することの前記決定は、それぞれ低減した耐久性状態の少なくともいくつかのデータボリュームの耐久性を増大するための優先順位付けスキームに少なくとも部分的に基づく、請求項２−６のいずれか一項に記載の方法。
【請求項８】
前記複数のストレージノードは、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、前記ストレージノードが利用できないことの前記判定、前記低減した耐久性状態にしたがう前記データボリュームに対する前記後から受け取った書き込み要求の前記処理、レプリケーションを有効化することの前記決定、他のストレージノードの前記特定、前記１つまたは複数の複製操作の前記実行、及び、他のストレージに対する前記レプリケーションの有効化は、前記複数のデータボリュームの異なるものを格納する少なくともいくつかのストレージノードに対して実行される、請求項２−６のいずれか一項に記載の方法。
【請求項９】
前記複数のストレージノードは、ネットワークベースでブロックベースのストレージサービスを実装するストレージノードの大きなコレクションの一部であり、書き込み要求は、ネットワークベースの仮想計算サービスにより実装される１つまたは複数の仮想計算インスタンスから受け取り、前記ネットワークベースでブロックベースのストレージサービス及びネットワークベースの仮想計算サービスは、同じプロバイダネットワークの一部として共に実装される、請求項１−７のいずれか一項に記載の方法。
【請求項１０】
プログラム命令を格納する非一過性のコンピュータ読取可能な記憶媒体であって、このプログラム命令は、１つまたは複数のコンピューティングデバイスで実行されたときに、この１つまたは複数のコンピューティングデバイスに、
クライアントから受け取ったデータボリュームに対する書き込み要求を、前記データボリュームに対するレプリケーションを実行するために、前記データボリュームのレプリカを維持する複数のストレージノードにおいて完了させることであって、前記書き込み要求は、前記複数のストレージノードのそれぞれにおいて完了したときに、完了として承認される、前記完了させることと、
データボリュームの複製を維持する前記複数のストレージノードの1つのストレージノードがレプリケーションに利用できないことを判定させることと、
前記ストレージノードが利用できないことの前記判定に応答して、前記データボリュームに対するレプリケーションがストレージノードに対して無効となるように、前記データボリュームに対する低減した耐久性状態にしたがって、前記データボリュームに対する後から受け取った書き込み要求を処理させることであって、前記処理させることは、
前記データボリュームに対する前記後から受け取った書き込み要求のそれぞれに対して、
レプリケーションに利用可能な前記複数のストレージノードの１つまたは複数のストレージノードで、前記後から受け取った書き込み要求を完了させることであって、この書き込み要求は、前記複数のストレージノードよりも少ない数のストレージノードで完了され、更に、
前記書き込み要求を承認するために以前使用された前記複数のストレージノードより少ない数の前記１つまたは複数のストレージノードでの前記後から受け取った書き込み要求の完了に応答して、前記後から受け取った書き込み要求完了の承認を行わせる、ことを包含する、前記処理することと、
を実行させる、非一過性のコンピュータ読取可能な記憶媒体。
【請求項１１】
前記複数のストレージノードは、マスタストレージノード及びスレーブストレージノードを有し、利用できないと判定された前記ストレージノードは前記スレーブストレージノードであり、前記マスタストレージノードは、前記マスタストレージノードで受け取った前記クライアントからの前記書き込み要求を、前記スレーブストレージノードに送り前記スレーブストレージノードで完了し、レプリケーションに利用可能な前記複数のストレージノードの前記１つまたは複数のストレージノードで前記後から受け取った書き込み要求の前記完了は、前記複数のストレージノードの他の任意のストレージノードで前記書き込み要求を完了することなく、前記後から受け取った書き込み要求が前記マスタストレージノードで完了するように、実行される、請求項１０に記載の非一過性のコンピュータ読取可能な記憶媒体。
【請求項１２】
前記プログラム命令は前記１つまたは複数のコンピューティングデバイスに、更に、
前記データボリュームに対する書き込み要求を処理するため、他のストレージノードに対して前記データボリュームのレプリケーションを有効化することを決定させ、
前記データボリュームをレプリケーション有効化することの決定に対応して、
前記データボリュームの他の複製を維持する前記他のストレージノードを特定させ、
前記１つまたは複数のストレージノードに維持されるように前記データボリュームを複製するために、前記データボリュームの前記他の複製を更新する１つまたは複数の複製操作を実行させ、更に、
追加の書き込み要求が完了として承認する前に、前記他のストレージノードで前記追加の書き込み要求が完了するように、前記他のストレージノードに対するレプリケーションを可能にさせる、請求項１０に記載の非一過性でコンピュータ読取可能なストレージ媒体。
【請求項１３】
前記他のストレージノードは利用できないと決定された前記ストレージノードであり、前記データボリュームの前記他の複製は前記データボリュームの前記それぞれの複製であり、前記データボリュームの前記他の複製を更新する前記１つまたは複数の複製操作を前記実行するときに、前記プログラム命令は、前記１つまたは複数のコンピューティングデバイスに、
前記データボリュームの前記それぞれの複製を更新するために、前記ストレージノードの前記データボリュームに対する複製の無効化の後で変更された前記データボリュームのデータチャンクを送らせる、請求項１２に記載の非一過性でコンピュータ読取可能なストレージ媒体。
【請求項１４】
前記複数のストレージノードは、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、前記データボリュームに対するレプリケーションを有効化することの前記決定は、
前記データボリュームの前記他の複製を維持するためのストレージノードの前記大きなコレクション中の記憶容量、
ストレージノードの前記大きなコレクション中のネットワーク利用、または、
前記データボリュームに対する耐久性の状態、
の１つまたは複数に、少なくとも一部が基づいて行うことが可能である、請求項１２または１３に記載の非一過性でコンピュータ読取可能なストレージ媒体。
【請求項１５】
前記複数のストレージノードは、ネットワークベースでブロックベースのストレージサービスを実装するストレージノードの大きなコレクションの一部であり、書き込み要求は、ネットワークベースの仮想計算サービスにより実装される１つまたは複数の仮想計算インスタンスから受け取り、前記ネットワークベースでブロックベースのストレージサービス及び前記ネットワークベースの仮想計算サービスは、同じプロバイダネットワークの一部として共に実装される、請求項１０−１４のいずれか一項に記載の非一過性でコンピュータ読取可能なストレージ媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ハードウェアリソース、ソフトウェア及びネットワーク全体における情報記憶の仮想化を動的に共有するための最近の技術革新は、コンピューティングにおける信頼性、スケーラビリティ及びコスト効率を向上させている。特に、仮想化の出現を通して、オンデマンドで仮想コンピューティングリソース及びストレージを提供できるようになったことは、リソース及び記憶装置を処理するコンシューマが、コンピューティング及び記憶装置の必要性を直ちに認識し、それに応じてそのコンピューティング及び記憶のコストを弾力的に構築することを可能にした。仮想化によって顧客は、製造の遅れ及びコスト並びにハードウェアの配置で決定づけられるプロビジョニングサイクルにおける固定されたハードウェアの購入またはリースではなく、授業が発生した時にプロセッササイクル及び記憶装置を獲得することができる。コンピューティング及び記憶装置の可用性を判定するための将来の需要の正確な予測に依存する代わりに、ユーザは必要に応じて比較的瞬時にコンピューティング及び記憶装置リソースの使用を獲得することができる。
【０００２】
仮想化されたコンピューティング環境は、ブロックベースのストレージでサポートされることが多い。このようなブロックベースのストレージは、このブロックベースストレージは、一連の標準化されたストレージの呼び出しを通じて、多様な計算仮想化環境と対話できるストレージシステムを提供する。このとき、標準化されたストレージの呼び出しは、ブロックベースストレージを、それがサポートするボリュームの構造的、機能的な詳細や、それがストレージの可用性を提供する仮想環境上で実行中のオペレーティングシステムに機能的に依存しない状態にする。しかし、仮想化リソースの処理能力の増大と共に、ネットワークの伝送能力が増大すると、ブロックベースストレージへの入出力要求も増大することがある。入出力要求がサービス要求に対するブロックベースのストレージの能力を超えると、待ち時間、及び／または、仮想化コンピューティングリソースのブロックベースのストレージ性能の耐久性が低下し、仮想化コンピューティング性能の損失となる。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態によるブロックベースストレージに対するデータボリュームの耐久性状態の低減及びブロックベースストレージ用効率的なデータボリュームのレプリケーションを示す一連のブロック図である。
【図２】いくつかの実施形態によるブロックベースストレージに対するデータボリューム耐久性状態の低減及び効率的なデータボリュームのレプリケーションを実行するブロックベースストレージサービスを含むマルチネットワークベースのサービスを実行するプロバイダネットワークを示すブロック図である。
【図３】いくつかの実施形態による、データボリューム耐久性状態の低減及び効率的なデータボリュームのレプリケーションを実行するストレージノードを示すブロック図である。
【図４】いくつかの実施形態による、データボリュームに対する耐久性状態を低減するときのクライアント、マスタストレージノード、スレーブストレージノード及び制御プレーン間の対話を説明するシーケンス図である。
【図５】いくつかの実施形態による、低減された耐久性状態から耐久性状態を増加したデータボリュームに対する有効レプリケーション操作を実行するマスタストレージノードとスレーブストレージノードとの間の対話を説明するシーケンス図である。
【図６】いくつかの実施形態による、ブロックベースのストレージに対する耐久性を低減する種々の方法及び技術を説明する高レベルフロー図である。
【図７】いくつかの実施形態による、低減された耐久性状態からデータボリュームに対する耐久性状態を増大する種々の方法及び技術を示す高レベルフロー図である。
【図８】いくつかの実施形態による、データボリュームに対する効果的レプリケーションに対する種々の方法及び技術を示す高レベルフロー図である。
【図９】いくつかの実施形態による、更新するための古い複製を有するストレージノードを識別するための種々の方法及び技術を示す高レベルフロー図である。
【図１０】いくつかの実施形態による、効率的なレプリケーションが実行できないことを判定するための種々の方法及び技術を示す高レベルフロー図である。
【図１１】いくつかの実施形態による例示的なコンピューティングシステムを示すブロック図である。
【発明を実施するための形態】
【０００４】
本明細書には、例として複数の実施形態及び説明図について記載しているが、当業者であれば、実施形態は、ここに記載の実施形態または図に制限されるものではないことが認識される。図面及びこれの詳細な説明は、ここに記載の特定の形態に実施形態を制限することを意図するものではなく、反対に、その意図は、添付の請求の範囲で画定される精神及び範囲に包含される変更、同等物及び代替の全てを包含することにある。ここに使用する見出しは組織化目的だけであり、説明または請求の範囲の影響する範囲を制限するために使用することを意味するものではない。本願全体を通じて使用されるように、用語「ｍａｙ」は、強制的な意味（すなわち、〜なければならないの意味）よりは、許可の意味（すなわち、可能性を有することを意味する）。同様に、用語「ｉｎｃｌｕｄｅ」、「ｉｎｃｌｕｄｉｎｇ」及び「ｉｎｃｌｕｄｅｓ」は、制限するものではない。
【０００５】
ここに記載のシステム及び方法は、ブロックベースストレージに対するデータボリューム耐久性状態の低減を実現することができる。ブロックベースストレージシステムは、種々の実施形態において、データボリュームの現在のバージョンを維持する複製の数を増加することによりブロックベースストレージシステムにより維持されるデータボリュームに対する耐久性状態を確立することが可能である。データボリュームの耐久性状態は、データボリュームを維持するブロックベースストレージシステムのルール、要件または他の保証の一環として、データボリュームに対して実施することが可能である。特定のデータボリュームの複製を維持するストレージノード間における複製操作は、データボリュームの耐久性状態に従ってデータボリュームの最新のバージョンを維持するために、データボリュームの複製の全体に対してデータボリュームへの変更を実行させることが可能である。しかし、ストレージノード間における複製操作は中断される可能性がある。ネットワーク分割、ネットワーク高利用度またはシステム障害は、データボリュームに対する複製操作を中断させる可能性のある多くの異なる事象のいくつかである。これらの複製操作における中断によって、データボリュームの複製を維持するストレージノードが他のストレージノードとの複製に対して利用できなくなり、データボリュームの耐久性状態に反することになり得る。データボリュームに向けた書き込み要求及び他の入出力操作は、データボリュームに対する耐久性状態が充足されていないために、ブロックされる可能性がある。ブロックベースストレージシステムにおけるデータボリュームの耐久性状態を低減することによって、データボリュームに対する耐久性状態を維持することができない事象において、データボリュームに向けた操作をほとんど中断することなく、持続できるようにし得る。いくつかの実施形態では、データボリュームに対する耐久性状態の低減は、データボリュームの耐久性に顕著な危険とはならない可能性がある（例えば、制限時間内までに完了さえしていれば）。
【０００６】
ここに記載のシステム及び方法は、効果的なデータボリュームレプリケーションの実行することが可能である。上述のように、いくつかの実施形態では、データボリュームの多数の複製が異なるストレージノード内に維持され、データボリュームに対する耐久性を確立する。データボリュームが低減された耐久性状態にあるときに発生するような、データボリュームが多数のストレージノードで既に維持されていない場合、低減された耐久性状態になる際にデータボリュームに対して行われた変更を示すためにデータボリュームの一部に対する変更が維持される。例えば、データボリュームがマスタストレージノード及びスレーブストレージノードに維持され、スレーブストレージノードがレプリケーションに利用できなくなる場合、マスタストレージノードはデータボリュームに対する入出力（Ｉ／Ｏ）の処理を続け、データボリュームのどの部分が変更されたのかを記録する。後に、マスタストレージノードは、データボリュームの古い複製を維持する他のストレージノード（前のスレーブストレージノードまたはデータボリュームの複製を維持する他のストレージノード）のデータボリュームを複製することにより、データボリュームの耐久性状態を増大することが可能である。データボリュームの変更された部分は、古い複製内におけるデータからでは無いデータボリュームの部分を送ることなく、古い複製を更新するために送ることが可能であり、レプリケーションを実行及び/またはマスタストレージノードと新しいスレーブストレージノードとの間のネットワークトラフィックを低下するための時間量を削減する。古い複製が更新されると、マスタストレージノードと新しいスレーブストレージノードとの間のデータボリュームに対する複製操作が、データボリュームに対する将来の変更のために可能とすることができる。
【０００７】
図１は、いくつかの実施形態による、ブロックベースストレージ用データボリューム耐久性状態の低減及び効率的なデータレプリケーションを示す一連のブロック図である。ブロックベースストレージサービス１００は、マスタストレージノード１１０及びスレーブストレージノード１２０を実装し、データボリューム１１２に対する耐久性状態を確立する。マスタストレージノード１１０及びスレーブストレージノード１２０は、持続性ブロックベースストレージ（例えば、ハードディスクドライブまたはソリッドステートドライブ）を実装し、データボリュームの複製１１２、１２２それぞれを格納することができるストレージサービスまたは他のコンピューティングシステム（例えば、図１１に関して以下に説明するコンピューティングシステム２０００）とすることができる。種々の実施形態では、データボリューム複製１１２、１２２は、データチャンク１１４がデータチャンク１２４に対応するように、複製操作のためにデータチャンク１１４、１２４にそれぞれ分割される。
【０００８】
場面１０２に示すように、入出力要求１３２（例えば、書き込み要求）は、マスタストレージノードが受取り、これが入出力要求１３２を完了させることができる。例えば、マスタストレージノード１１０が受取ったデータボリューム１１２の一部を変更する書き込み要求を実行することができる。入出力要求は、この後、いくつかの実施形態では、スレーブストレージノード１２０に送られ１３４、マスタストレージノード１１０でデータに行われた何らかの変更のレプリケーションを行う。このようにして、データボリューム１１２の最新の耐久性状態を充足することができる。
【０００９】
場面１０４に示すように、スレーブストレージノード１２０は、利用不能となる１３６。これは、ネットワーク分割、大量のネットワークトラフィック、システム障害、または、制御システムの指示の下（例えば、スレーブストレージノード１２０にボリューム複製１２２の維持を停止するよう命令することがある）等のネットワーク状態によることがある。しかし、入出力要求１３２は、マスタストレージノード１１０でも受け取ることがある。書き込み要求をブロックする、失敗する、または他の方法で書き込み要求を完了しないことに代えて、データボリューム１１０に対する耐久性状態を低減させることができる。例えば、いくつかの実施形態では、入出力要求１３２がマスタストレージノード１１０で完了し、入出力１３２を要求したクライアントまたは他のシステム、コンポーネント、デバイスに受け取ったことを確認することが可能である。したがって、入出力要求１３２（場面１０４で受け取られるように）、他のいかなるストレージノード（スレーブストレージノード１２０または他のブロックベースのストレージサービス１００における他のストレージノード）で完了することなく、マスタストレージノード１１０で完了することがある。２つ以上のストレージノードを有する（例えば３つのストレージノード）を有する他の実施例では、３つのストレージノードに維持されるデータボリュームに対する耐久性状態を低減すること（２つのストレージノードに耐久性状態を低減すること等）は、入出力要求が完了したとして確認する前に、より少ない数のストレージノードで入出力要求が完了することができるようになり得る。
【００１０】
種々の実施形態では、マスタストレージノード１１０は、低減した耐久性状態で作動しつつ、データボリューム１１２で行われる変更を追跡することができる。例えば、変更されたデータチャンク１１６をマークし、指標を付し、リストし、または、他の識別を付す（例えば、データボリュームメタデータで）ことができる。ある時点で、データボリューム１１２に対する増加した耐久性状態による入出力要求を処理するために、データボリュームの複製を可能とするための判定を行うことができる。この判定は、データボリュームの他の複製を格納するためのストレージノードの可用性、現在のネットワークの利用、トラフィックまたは他のネットワーク事象、または、データボリュームに対する耐久性の状態（例えば、１つのストレージノード、２つのストレージノード等に複製された）等の複数の要因に基づいて行うことができる。耐久性状態を増加するために、データボリューム複製を維持していた、以前のストレージノードを識別することができる。例えば、制御システムは、ストレージノード識別子のリストをマスタストレージノード１１０に送り、または、マスタストレージノード１１０自体が、データボリュームの複製を維持する先のストレージノードのリストを維持することができる。スレーブストレージノード１２０が識別されると（図示の実施例では、識別されたストレージノード１２０は、データボリュームの複製を維持する最も新しいストレージノードであるが、しかし、データボリュームの古い複製を維持するか、またはデータボリュームの複製を全く維持しない他のストレージノードが選択される可能性もある）、変更されたデータチャンク１１６は、場面１０６に示すようにスレーブストレージノード１２０に複製し１３８、ボリュームの複製１２２に格納することができる。変更されてないデータチャンクは複製する必要はない。場面１０８に示すように、レプリケーションは、入出力要求１３２としてデータボリュームに対して再度有効とすることができ、再度レプリケーションのためにスレーブストレージノード１２０に送られ１４０、データボリューム１１２に対する耐久性状態が増大し、マスタストレージノード１１０及びスレーブストレージノード１２０の双方に維持される。
【００１１】
上記説明は制限することを意図するものでなく、単に、ブロックベースストレージシステムに対する低減状態及び効果的なレプリケーションとして設けられたものである。例えば、ストレージノードの数、または、データボリュームの数は、図１に示すものと相違してもよい。異なるレプリケーションスキーム（例えば、マスタまたはスレーブの役割無しで）を実行することができ、データボリュームに対する異なる耐久性状態を確立することができる。いくつかの実施形態では、耐久性状態の低減は、１つより多くのストレージノードが利用不能となったときに（例えば３つのストレージノードが１つの利用可能なストレージノードに）、生じる可能性がある。
【００１２】
本明細書は、データボリューム耐久性状態の低減及び効率的なデータボリュームのレプリケーションを実現することのできる一般的な記述のブロックベースのストレージサービスプロバイダで開始する。この後、異なるコンポーネント／モジュール、または、ブロックベースストレージサービスプロバイダを実現する部分として採用することのできるコンポーネント／モジュールの配置を含む、ブロックベースストレージサービスプロバイダの種々の実施例を検討する。データボリューム耐久性状態を低減すること、及び、効率的なデータボリュームレプリケーションを実行する多くの異なる方法及び技術を、この後、検討し、これらのいくつかを添付のフロー図に示す。最後に、種々のコンポーネント、モジュール、システム、デバイス、及び／または、ノードを実現することのできる例示的なコンピューティングシステムを説明する。種々の実施例が明細書を通じて提供される。
【００１３】
図２は、いくつかの実施形態による、スナップショット操作中に最適化した書き込み動作を実行するブロックベースストレージサービスを含む多数のネットワークベースサービスを実現するプロバイダネットワークを説明するブロック図である。プロバイダネットワーク２００は、企業または公的部門の組織等のエンティティによってセットアップされ、インターネット及び／または他のネットワークを介してクライアント２１０にアクセス可能な１つまたは複数のサービス（種々のタイプのクラウドベースのコンピューティングまたはストレージ等）を提供することができる。プロバイダネットワーク２００は、プロバイダネットワーク２００で提供されるインフラストラクチャ及びサービスを実行及び分散するために必要とされる、物理的及び／または仮想コンピュータサービス、ストレージデバイス、ネットワーク設備等のコレクション等（例えば、図１１に関して後述するコンピューティングシステム２０００）の種々のリソースプールをホスティングする多数のデータセンタを有しても良い。いくつかの実施形態では、プロバイダネットワーク２００は、仮想コンピュータサービス２３０、ブロックベースのストレージサービス２２０等のストレージサービス、及び、他のストレージサービス２４０（オブジェクト／キー値ベースのデータストア等の種々のストレージ形式または種々のタイプのデータベースシステムを包含することができる）、及び／または、任意の他の形式のネットワークベースのサービス２５０等のコンピューティングリソースを提供することができる。クライアント２１０は、ネットワーク２６０を介してプロバイダネットワーク２００で提供されるこれらの種々のサービスにアクセスすることができる。同様に、ネットワークベースサービスは、自身が通信し及び／または互いに使用して異なるサービスを提供する。例えば、クライアント２１０に「インスタンス」と呼ばれる単位で提供される、仮想または物理的計算インスタンスまたはストレージインスタンス等のコンピューティングリソースは、特定のデータボリューム２２６を使用することができ、計算インスタンス用の仮想ブロックストレージを提供する。
【００１４】
上述のように、仮想計算サービス２３０は、クライアント２１０に種々の計算インスタンスを提供することができる。仮想計算インスタンスは、例えば、特別の計算能力（これは、ＣＰＵのタイプ及び数、及び、主メモリサイズ等を示すことで特定することができる）を有する１つまたはそれ以上のサーバ、及び、特定のソフトウェアスタック（例えば、ハイバーバイザの上で順に実行することができるオペレーティングシステムの特定のバージョン）を備えることができる。多数の異なる形式のコンピューティングデバイスを単独でまたは組合わせて使用し、一般的目的または特定目的のコンピュータサーバ、ストレージデバイス、ネットワークデバイス等を含む異なる実施形態で仮想計算サービス２３０の計算インスタンスを実行することができる。いくつかの実施形態では、インスタンスクライアント２１０または他の任意のユーザは１つの計算インスタンスに対してネットワークトラフィックを向けるように構成される（及び／または、許可される）ことができる。種々の実施形態では、計算インスタンスは、種々の操作を実行するための永続的なブロックベースストレージを取得するために、ブロックベースストレージサービス２２０で提供される１つまたはそれ以上のデータボリューム２２６に取り付けまたはマップすることができる。
【００１５】
計算インスタンスは、アプリケーションサーバーインスタンス、Ｊａｖａ（登録商標）仮想マシン（ＪＶＭ）、汎用若しくは特殊目的のオペレーティングシステム等の種々の異なるプラットフォーム、Ｒｕｂｙ、Ｐｅｒｌ、Ｐｙｔｈｏｎ、Ｃ、Ｃ＋＋等のインタプリタ形式若しくはコンパイルされたプログラミング言語をサポートするプラットフォーム、または、クライアントアプリケーションを実行するのに適した高性能演算プラットフォームを、例えばクライアント２１０がインスタンスにアクセスすることを必要とせずに、操作または実行することができる。いくつかの実施形態では、計算インスタンスは、予想される稼働率に基づいて、異なる形式または構成を有する。特定の計算インスタンスの稼働率は、例えば予約された時間の総量に対するインスタンスが作動される時間の量の比として定義することができる。稼働率は、いくつかの実行で使用率と呼ぶことができる。クライアントは、インスタンスが予約される時間に対する比較的僅かな時間（例えば、年間予約の３０％〜３５％）だけ計算インスタンスを使用することを見込む場合、クライアントは、低稼働率インスタンスとしてインスタンスを確保することを判定することができ、関連する価格設定ポリシーにしたがって、割引時間単位の使用料を支払う。クライアントは、その時間のほとんどインスタンスが稼働していることを必要とする定常状態のワークロードを予想する場合、クライアントは高稼働率のインスタンスを予約し、さらに安い時間単位の使用量を支払うが、いくつかの実施形態では、時間単位の料金は、実際の使用時間数に関わりなく、価格設定ポリシーにしたがって予約の全期間にわたって請求されることがある。中稼働率のインスタンスに対する選択は、対応する価格設定ポリシーと共に、初期費用及び時間単位費用が対応する高稼働率コスト及び低稼働率コスト間に収まるいくつかの実施形態においても、対応することができる。
【００１６】
計算インスタンス構成は、更に、計算集約型アプリケーションのための計算作業負荷（例えば高トラフィックウェブアプリケーション、広告配信、バッチ処理、ビデオエンコーディング、分散型分析、高エネルギー物理学、ゲノム解析、及び、計算流体力学）、グラフィックス集約型の作業負荷等（例えば、ゲームストリーミング、３Ｄアプリケーションストリーミング、サーバ側のグラフィックス作業負荷、レンダリング、財務モデリング、及び、エンジニアリングデザイン）、メモリ集約型の作業負荷（例えば、高性能データベース、分散メモリキャッシュ、インメモリ分析、ゲノムアセンブリ、及び、分析）、及び、ストレージ最適化された作業負荷（例えば、データウェアハウス、及び、クラスタファイルシステム）等の汎用または特定目的の計算インスタンスを包含することができる。特定の数の仮想ＣＰＵコア、メモリ、キャッシュ、ストレージ等の計算インスタンスのサイズ、及び、任意の他の性能。また、計算インスタンスの構成は、特定のデータセンタ内の位置、利用可能ゾーン、地理的、位置等...及び、（予約された計算インスタンスの場合）予約語長を含むことができる。
【００１７】
種々の実施形態では、プロバイダネットワーク２００は、記憶操作を実行するためのブロックベースのストレージサービス２２０も実行することができる。ブロックベースのストレージサービス２２０は、複数の独立したストレージノード２２４ａ、２２４ｂ、２２４ｃ〜２２４ｎ（例えば、サーバのブロックデータ記憶システム）のプールから構成されるストレージシステムであり、データボリュームデータボリューム（複数可）２２６ａ、２２６ｂ、２２６ｃ〜２２６ｎの１つまたは複数のセットを格納するためのブロックレベルのストレージを提供する。データボリューム２２６は、論理ブロックの連続集合として仮想ブロックベースの記憶装置（例えば、ハードディスク記憶装置または他の永続ストレージ）を提供する、特定のクライアントにマッピングしても良い。いくつかの実施形態では、データボリューム２２６は、スナップショット操作または複製操作等の他のブロックストレージ操作を実行するために複数のデータチャンク（１つまたは複数のデータブロックを含む）に分割することができる。
【００１８】
データボリューム２２６のボリュームスナップショットは、データボリューム２２６の状態の固定時点の表示とすることができる。
いくつかの実施形態では、ボリュームスナップショット２４２は、他のストレージサービス２４０内等、データボリュームを維持するストレージノード２２４から遠隔的に格納しても良い。
スナップショット操作は、他のストレージサービス２４０内のリモートスナップショットデータ保存等、他の記憶場所の所定のデータボリュームのスナップショットを、送り、コピーし、及び／または、保存するために実行しても良い。
【００１９】
ブロックベースのストレージサービス２２０は、ブロックベースのストレージサービス２２０の操作を支援するために、ブロックベースのストレージサービス制御プレーン２２２を実行しても良い。種々の実施形態では、ブロックベースのストレージサービス制御プレーン２２２が、仮想計算サービス２３０及び／または、任意でプロバイダネットワーク２００内に配置される他のネットワークベースのサービス及び／または１つまたは複数の他のデータセンタ内に配置されるコンピューティングシステム（図示しない）またはネットワーク２６０上で利用可能なプロバイダネットワーク２００の外部の他のコンピューティングシステムで提供される計算インスタンス上で実行するプログラム等のクライアントに対するブロックデータストレージの可用性の管理を支援する。データボリューム２２６に対するアクセスは、ブロックデータトランザクション命令に応じて、プロバイダネットワーク２００内の内部ネットワーク上で、または、ネットワーク２６０を介して外部に提供される。
【００２０】
ブロックベースのストレージサービス制御プレーン２２２は、ユーザーアカウントの管理（例えば、作成、削除、請求、支払の回収など）を含む、ブロックレベルのストレージ機能を提供することに関連した様々なサービスを提供することができる。ブロックベースのストレージサービス制御プレーン２２２はさらに、設定要求に応じて、データボリューム２２６の作成、使用、および削除に関連するサービスを提供することができる。ブロックベースのストレージサービス制御プレーン２２２は、更に、他のストレージサービス２４０上のボリュームスナップショット２４２の作成、使用及び削除に連するサービスを提供することができる。ブロックベースのストレージサービス制御プレーン２２２は、更に、データボリューム２２６及びこれらのボリュームのスナップショット２４２の使用に関するパフォーマンスおよび監査データの収集及び処理に関連するサービスを提供する。
【００２１】
上述のように、プロバイダネットワーク２００はまた、別のストレージサービス２４０を実現しても良い。他のストレージサービス２４０は、ブロックベースのストレージサービス２２０によって提供されるものと同じまたは異なる形式のストレージを提供しても良い。例えば、いくつかの実施形態では、他のストレージサービス２４０は、データオブジェクトとしてデータを格納及び管理できるオブジェクトベースのストレージサービスを提供しても良い。例えば、種々のデータボリューム２２６のボリュームスナップショット２４２は、特定のデータボリューム２２６に対するスナップショットオブジェクトとして格納しても良い。他のストレージサービス２４０に加え、プロバイダネットワーク２００は、他のネットワークベースのサービス２５０を実行しても良く、これは、様々な形式の分析、計算、格納、または、プロバイダネットワーク２００の他のサービス（例えば、ブロックベースのストレージサービス２２０、仮想計算サービス２３０及び／または他のストレージサービス２４０）に加えて、クライアント２１０が様々なタスクを実行または要求するのを可能とする他のネットワークベースのシステムを含むことができる。
【００２２】
クライアント２１０は、ネットワークプロバイダ２００に要求を送信するため設定可能な任意の形式のクライアントを包含することができる。例えば、所定のクライアント２１０は、ウェブブラウザの適切なバージョンを有してもよく、または、ウェブブラウザにより提供された実行環境内で若しくは拡張として実行するように構成されたプラグインモジュール若しくはコードモジュールの他のタイプを有しても良い。これに代え、クライアント２１０は、データベースアプリケーション（または、そのユーザインタフェース）、メディアアプリケーション、オフィスアプリケーション、または、計算インスタンス、データボリューム２２６若しくは種々の操作を実行するプロバイダネットワーク２００内の他のネットワークベースのサービスを使用することのできる他のアプリケーション等のアプリケーションを有しても良い。いくつかの実施形態では、そのようなアプリケーションは、全ての形式のネットワークベースのデータに対するフルブラウザサポートを必ずしも実行することなく、ネットワークベースのサービス要求を生成及び処理する充分なプロトコルサポート（例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ）の適切なバージョンに対する）を包含することができる。いくつかの実施形態では、クライアント２１０は、表示状態転送（Ｒｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ（ＲＥＳＴ））スタイルのネットワークベースのサービスアーキテクチャ、ドキュメントベース若しくはメッセージベースのネットワークベースのサービスアーキテクチャ、または、他の適切なネットワークベースのサービスアーキテクチャによる、ネットワークベースのサービス要求を生成するように構成することができる。いくつかの実施形態では、クライアント２１０（例えば、計算クライアント）は、計算インスタンスで提供されるコンピュータリソースまたはデータボリューム２２６で提供されるブロックストレージを使用するクライアント２１０上で実行するアプリケーションに対して透過的な方法で、計算インスタンスまたはデータボリューム２２６へのアクセスを提供するように構成することができる。
【００２３】
クライアント２１０は、外部ネットワーク２６０を介して、プロバイダネットワーク２００にネットワークベースのサービス要求を伝えることができる。種々の実施形態では、外部ネットワーク２６０は、クライアント２１０とプロバイダネットワーク２００との間のネットワークベースの通信を確立するために必要なネットワークハードウェア及びプロトコルの任意の適切な組み合わせを包含することができる。例えば、ネットワーク２６０は、一般に、集合的に、インターネットを実現する様々な電気通信ネットワーク及びサービスプロバイダを包含することができる。ネットワーク２６０は、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）のようなプライベートネットワーク、及び、公衆またはプライベート無線ネットワークを包含しても良い。例えば、所定のクライアント２１０及びプロバイダネットワーク２００の双方は、それぞれ独自の内部ネットワークを有する企業内に設けても良い。このような実施形態では、ネットワーク２６０は、所定のクライアント２１０とインターネット間、及び、インターネットとプロバイダネットワーク２００間においてネットワークリンクを確立するために必要なハードウェア（例えば、モデム、ルータ、スイッチ、ロードバランサ、プロキシサーバ等）、及び、ソフトウェア（例えば、プロトコルスタック、会計ソフト、ファイアウォール／セキュリティソフトウェア等）有しても良い。なお、いくつかの実施形態では、クライアント２１０は、公共インターネットよりはむしろプライベートネットワークを使用するプロバイダネットワーク２００と通信しても良いことに注目される。
【００２４】
ブロックベースのストレージサービス２２０は、様々な方法でデータボリューム２２６を管理し、維持することができる。別の耐久性スキームは、データボリュームの複製を維持する二つ以上のストレージノード間でいくつかのデータボリュームで実行することができる。例えば、ミラーリング及び／または複製技術の異なる形式で実行し（例えば、ＲＡＩＤ１）、データボリュームの単一の障害ポイントを排除すること等によって、データボリュームの耐久性を高めることができる。データボリュームへのアクセスを提供するために、ストレージノードは、データボリュームの複製を維持する複数のストレージノード間で書き込み要求などの入出力要求を、調整することができる。スナップショット操作時の書き込み最適化を提供するストレージノードのために、追加の調整を実行することができる。
【００２５】
図３は、いくつかの実施形態による、データボリュームの耐久性状態の低減及び効率的なデータボリュームの複製を実行するストレージノードを示すブロック図である。ストレージノード３１０ａ、３１０ｂ、３１０ｃ〜３１０ｎ等の複数のストレージノードを、ブロックベースのストレージサービスを提供するために実装しても良い。ストレージノード３１０は、ストレージサーバまたは他のコンピューティングシステム（例えば、図１１に関連して後述するコンピューティングシステム２０００）等の１つまたは複数のコンピューティングシステムまたはデバイスであっても良い。各ストレージノード３１０は、データボリュームのそれぞれの複製を維持することができる。例えば、ストレージノード３１０ａは、データボリューム３１２ａ、３１２ｂ、３１２ｃ、３１２ｄ〜３１２ｎを維持し、ストレージノード３１０ｂは、データボリューム３１４ａ、３１４ｂ、３１４ｃ、３１４ｄ〜３１４ｎを維持し、ストレージノード３１０ｃは、データボリューム３１６ａ、３１６ｂ、３１６ｃ、３１６ｄ〜３１６ｎを維持し、を介してデータボリューム３１８ａ、３１８ｂ、３１８ｃ、３１８ｄ〜３１８ｎを維持するストレージノード３１０ｎに至る。ストレージノード３１０は等しい数のデータボリュームを有するように示してあるが、ストレージノード上で維持されるデータボリュームの数は、ストレージノード３１０から他のストレージノード３１０までに変化させてもよい。いくつかの実施形態では、いくつかのデータボリュームが、他のデータボリュームとサイズが異なってもよい。ストレージノード３１０は、マルチテナント型ストレージを提供することができる。例えば、いくつかの実施形態では、ストレージノード３１０ｃに維持されるデータボリューム３１６ａは、ブロックベースのストレージサービス２２０の１つのアカウントを維持し、一方、ストレージノード３１０ｃに維持されるデータボリューム３１６ｂは、別のアカウントを維持することができる。ストレージノード３１０は、直接それぞれのストレージノードを実現するコンピューティングシステム、またはデバイスに設けることができる１つまたは複数のブロックベースのストレージデバイス（例えば、ハードディスクドライブ、ソリッドステートドライブ等）で、それぞれのデータボリュームを持続することができる。
【００２６】
ブロックベースのストレージサービス２２０は、種々の異なる方法でデータボリュームを管理し、維持することができる。データボリュームの耐久性状態を確立するデータボリュームの同じ複製を維持する二つ以上のストレージノードのうちのいくつかのデータボリューム対して、異なる耐久性スキームを実行しても良い。例えば、ミラーリング及び／または複製技術の異なる形式を実行（例えば、ＲＡＩＤ１）し、データボリュームの単一障害点を排除すること等によって、データボリュームの耐久性を高めることができる。データボリュームへのアクセスを提供するために、ストレージノードは、データボリュームの複製を維持する複数のストレージノード間で書き込み要求等入出力要求を調整することができる。例えば、所定のデータボリューム３１２ａに対して、ストレージノード３１０ａがマスタストレージノードとして機能することができる。マスタストレージノードは、様々な実施形態において、データボリュームのクライアントからの要求（例えば、入出力要求）を受け、処理することができる。これにより、ストレージノード３１０ａは、書き込み要求等の入出力要求の複製、または、データボリューム３１２ａのその他の変更若しくは修正を、スレーブストレージノードとして作用する１つ以上の他のストレージノードに対して調整することができる。例えば、ストレージノード３１０ｃは、データボリューム３１２ａの複製であるデータボリューム３１６ｄを維持することができる。したがって、ストレージノード３１０ａのデータボリューム３１２ａに対する書き込み要求を受けたときに、ストレージノード３１０ａは、書き込み要求をストレージノード３１０ｃに転送し、ストレージノード３１０で書き込み要求を完了する前に、ストレージノード３１０ｃが、書き込み要求が完了していると承認するまで待つことができる。マスタストレージノードは、スナップショットの操作または他の入出力操作（例えば、読み出し要求の提供）等のデータボリュームに対する他の操作を命令することができる。
【００２７】
なお、いくつかの実施形態では、マスタ及びスレーブストレージノードの役割は、データボリューム毎に割り当てても良い。例えば、ストレージノード３１０ａに維持されるデータボリューム３１２ａに対し、ストレージノード３１０ａはマスタストレージノードとして機能することができる。一方、ストレージノード３１０ａに維持されるデータボリューム３１２ｂ等の他のデータボリュームに対しては、ストレージノード３１０ａはスレーブストレージノードとして機能することができる。
【００２８】
種々の実施形態では、ストレージノード３１０はそれぞれ、ページキャッシュを実装しても良い。ページキャッシュは、それぞれのストレージノードに維持されるデータボリューム３１２の１つからデータのページまたは他のグループを格納するシステムメモリまたは他のメモリデバイスの一部としても良い。データボリュームの要求されたデータの一部を維持するブロックベースのストレージデバイスに直接書き込みまたは読み出す代わりに、ページキャッシュを更新しても良い。例えば、データボリュームの一部に対する読出し要求を受け取った場合、最初にデータがページキャッシュに存在するか否かを判定することができる。はいの場合、データを、ページキャッシュから読み出すことができる。いいえの場合、データは、データボリュームの要求されたデータの部分を維持するそれぞれのブロックベースのストレージデバイスから検索し、将来の使用のためにページキャッシュに書き込むことができる。同様に、書き込み要求は、ページキャッシュに向けても良い。受け取った書き込み要求に対し、書き込まれるデータに対応するページキャッシュエントリ（例えば、既にページキャッシュに維持されるデータボリュームの部分）は、書き込み要求にしたがって更新することができる。同様に、書き込み要求によって変更されるべきデータがページキャッシュに存在しない場合には、まずデータを維持するブロックベースのストレージデバイスからデータを取得し、ページキャッシュ内の新しいページキャッシュエントリに書き込み、この後、書き込み要求にしたがって更新することができる。ページキャッシュ技術は、当業者に周知であり、したがって、上述の実施例は、他のページのキャッシュ技術に制限することを意図するものではない。
【００２９】
種々の実施形態では、ストレージノード３１０は、ページキャッシュログ３２０ａ、３２０ｂ、３２０ｃ〜３２０ｎ等の各ページキャッシュログを実行することができる。ページキャッシュログは、ページキャッシュ３３０に維持されるデータを変更する書き込み要求等、各ページキャッシュの更新を記述するログレコードを格納することができる。したがって、ページキャッシュ３３０内のデータを喪失させるシステムまたは他の障害が発生した場合に、ページキャッシュログ３２０内のログレコードを使用して、障害前の状態にページキャッシュを復元することができる。いくつかの実施形態において、ログレコードは、ページキャッシュ３３０に加えられた更新の順序に従って順に格納することができる。例えば、書き込み要求１Ａが受取られ、実行され、そして、対応するログレコード１Ａが格納される。次に、書き込み要求１Ｂが受取られ、実行され、そして、対応するログレコード１Ｂが格納され、同様に続く。ログレコードを順次格納することによって、ログレコードは、特定の時点で、ページキャッシュの状態を生成するために、格納された順番で再生または再適用することができる。
【００３０】
更に、ログレコードの順次記憶は、ログレコードを格納するための書き込み待ち時間を減少させることができる。ページキャッシュログ３２０は、永続的ストレージデバイス（例えば、ハードディスクドライブ、ソリッドステートドライブ（ＳＳＤ）、又は他のブロックベースのストレージデバイス）として実現しても良い。このような形式の永続的ストレージデバイスへの順次書き込みは、多くの場合、ランダムアクセスによる書き込みよりも、より高速である。種々の実施形態では、ページキャッシュログ３２０は、ストレージノードのための専用のブロックストレージデバイス上に実現しても良い。いくつかの実施形態では、ページキャッシュログを持続する永続的ストレージデバイスは、ストレージノードにデータボリュームを持続するブロックベースのストレージデバイスから分離することができる。
【００３１】
ストレージノード３１０は、入出力マネージャ３４０ａ、３４０ｂ、３４０ｃ〜３４０ｎ等の各入出力マネージャを実装してもよい。入出力マネージャ３４０は、特定のストレージノードに維持されるデータボリュームに向けられた入出力要求を操作することができる。したがって、入出力マネージャ３４０ｂは、例えば、ストレージノード３１０ｂにおけるボリューム３１４ｂへの書き込み要求を処理し、操作することができる。入出力マネージャ３４０は、ブロックベースのストレージサービスのアプリケーションプログラミングインタフェース（ＡＰＩ）、及び／または、インターネットスモールコンピュータシステムインタフェース（ｉＳＣＳＩ）等の他の通信プロトコルにしたがって入出力要求を処理するように構成することができる。いくつかの実施形態では、入出力マネージャ３４０は、ログ管理３４２ａ、３４２ｂ、３４２ｃ〜３４２ｎ等のログ管理コンポーネントをそれぞれ実現することができる。ログ管理コンポーネントは、ログレコードのトリミング及び／または少なくとも部分的にログレコードに基づくベースページキャッシュリカバリの実行等の種々のログ管理機能を実行することができる。
【００３２】
図３は、ブロックベースのストレージサービスで実行することができるストレージノードの実施例を提供することに注目されたい。ストレージノードの他の配置または構成も、ページキャッシュ書き込みログを実行してないストレージノード等、いくつかの実施形態で実現することができる。
【００３３】
図４は、いくつかの実施形態によるデータボリュームに対する耐久性状態を低減するときの、クライアントと、マスタストレージノードと、スレーブストレージノードと、制御プレーンとの間の対話を示すシーケンス図である。クライアント４１０は、マスタストレージノードであるストレージノード４２０の特定のデータボリュームに対する入出力要求４６１（例えば、書き込み要求）をマスタストレージノード４２０に送ることができる。データボリュームに対する現在の耐久性状態を満たす一環として、マスタストレージノード４２０は、スレーブストレージノード４３０に入出力要求を複製しようと試みることができるが、最終的に失敗することがある４６３。上述のように、種々の、ネットワーク分割、高ネットワーク使用率、システム障害、または他の形式の事象が、データボリュームの複製操作を阻害することがある。例えば、ネットワーク分割がマスタストレージノード４２０とスレーブストレージノード４３０との間に発生する状況では、マスタストレージノードの４２０の不成功の入出力要求４６３は、スレーブストレージノード４３０に到達しないことがある。そのスレーブストレージノード４３０が複製のために利用できないことの判定に応答して、マスタストレージノードは、データボリュームの複製を無効にするためのストレージサービス制御プレーン４４０からの許可を要求する４６５ことによって、データボリュームに対する低減した耐久性状態に入ることを試みることができる。ストレージサービス制御プレーン４４０は、現在のネットワークの状態（例えば、ネットワーク分割、大規模障害、大量のネットワークトラフィック）等の種々の要因に基づいて、マスタストレージノード４２０が低減した耐久性で操作し、レプリケーションを無効にする４６７ことを可能にすることができる。データボリュームの低減された耐久性状態が許可されると、マスタストレージノード４２０は、特定のデータボリュームに対する入出力承認４６９を行うことを許可され得る。
【００３４】
ある時点で、マスタストレージノード４２０（または制御プレーン４４０）は、データボリュームのより大きな耐久性状態を再開したい場合がある。例えば、データボリュームのための耐久性の状態を増加させることを試みる前に、一定の時間が経過するまで、または、データボリュームに対する所定数の変更を受け取るまで、マスタストレージノード４２０は待機することができる。マスタストレージノード４２０からの要求は、ストレージサービス制御プレーン４４０に送られ、データボリューム４７１のための複製を有効化することを許可することができる。上述したものと同様の要素に基づいて、ストレージサービス制御プレーンは、マスタストレージノード４２０に、候補とするスレーブストレージノード４７３のリストを送ることができる。候補ストレージノードのリストは、最新でないデータボリュームの古い複製を維持するストレージノード及び／またはデータボリュームの複製を維持しないが、データボリュームの複製を格納する容量を有するストレージノードを包含することができる。いくつかの実施形態では、マスタストレージノード４２０は、候補ストレージノードのリストを取得する必要はなくても良いが、候補スレーブストレージノードのリストをローカルに（例えば、以前マスタストレージノード４２０がデータボリュームに対して複製されたストレージノード）維持することができる。マスタストレージノード４２０は新しいスレーブノード４５０等、候補ストレージノードのリストからスレーブノードを選択して、４５０にデータボリュームを複製することができる。マスタストレージノードは、スレーブストレージノード４５０上にデータボリュームの新しいボリュームの複製４７５を作成するための要求を送ることができる。スレーブストレージノード４５０は、作られたボリュームの複製４７７を承認することができる。マスタストレージノード４２０は、この後、１つまたは複数の複製操作を開始し、マスタストレージノード４２０に維持されたものと同じボリュームを複製することができる。各複製操作は、データボリュームの一部を、格納すべき新しいスレーブストレージノード４５０に送ることができる。複製が完了すると、マスタストレージノード４２０は、データボリュームに対して再度レプリケーション４８１を有効化し、データボリュームの増大した耐久性状態に応じて入出力要求を処理することができる。例えば、マスタストレージノード４２０が受取った入出力要求４８３は、新しいスレーブストレージノード４５０に送られる４８５。
【００３５】
いくつかの実施形態では、データボリュームの低減した耐久性状態から増加した耐久性状態に遷移するとき、種々の効率的なデータボリュームのレプリケーション技術を実行することができる。図５は、いくつかの実施形態による、低減した耐久性状態から増加した耐久性状態への効率的なデータボリュームの複製操作を実行する、マスタストレージノードとスレーブストレージノードとの間の対話を示すシーケンス図である。クライアント５１０は、マスタストレージノード５２０に入出力要求５５１を送ることができる。図４に関して上述したように、スレーブストレージノード５３０が利用できないため入出力要求が失敗することがある。マスタストレージノード５２０は、複製を無効にする権限を要求し５５５、データボリュームの低減した耐久性状態に入ることができる。種々の要因（例えば、ネットワーク分割、大規模障害、大量のネットワークトラフィック）に基づいて、ストレージサービス制御プレーン５４０は、レプリケーションを無効化することを許可し５５７、マスタストレージノードが再度入出力を完了及び承認５５９できるようにすることができる。
【００３６】
マスタストレージノード５２０は、ある時点でデータボリュームの耐久性状態を増大することを望み、ストレージサービス制御プレーン５４０からレプリケーションを有効化することの承認を求める５６１ことができる。再度、上記のように、種々の要因に基づいて、ストレージサービス制御プレーンは、レプリケーションを許可し、マスタストレージノードに候補スレーブノード５６３を送信することができる。候補スレーブノード５６３は、データボリュームの古い（すなわち、最新でない）複製を維持するストレージノードを含んでも良い。古い複製は、データボリュームに対する変更を複製する候補ストレージノードとマスタストレージノード５２０との過去のペアリングから生じることがある。候補ストレージノードのリストを使用し、マスタストレージノード５２０は、複製するための最小データ量でスレーブストレージノードを識別すること等により、ストレージノードに対するスレーブを選択するように構成することができる。例えば、いくつかの実施形態では、マスタストレージノード５２０は、ボリューム５６５内のデータチャンクのバージョン番号を示すボリュームメタデータを予想されるスレーブストレージノードに送ることができる。スレーブストレージノードは、古い複製の自身のボリュームメタデータと比較することによって、ボリュームのメタデータを評価し、複製する必要のある自身の複製のデータチャンクを識別することができる。
【００３７】
識別されたデータチャンクはマスタストレージノードに示すことができる５６７。古い複製を有するスレーブストレージノードが複数ある場合、データチャンクの最も小さい番号を有するスレーブストレージノードが必要とされる（または、古くないデータチャンクの最も大きい番号が、新しいスレーブストレージノードとして選択することができる）。いくつかの実施形態では、この選択は、他の要因、例えば、候補スレーブストレージノードに向けられているネットワークトラフィックの現在の量、及び／または、スレーブストレージノードの作業負荷との組み合わせて行うことができる。図５では、スレーブストレージノード５３０が選択されている（最新のスレーブストレージノードとして、マスタストレージノード上のデータボリュームとの差が最も少ない）。識別されたデータチャンクは、マスタストレージノードとスレーブストレージノード５２０とに維持されるデータボリュームの複製を同期させるために、この後、スレーブストレージノードに複製される５６９。このように、データボリュームの古い複製のデータチャンクは、種々の実施形態において、更新する必要はない。レプリケーションは、データボリュームに対する増大した耐久性状態にしたがって要求を処理するために、データボリュームに対して有効化される５７１ことができる。したがって、マスタストレージノード５２０に送信された入出力要求４７３は、データボリュームを複製する一環として、スレーブストレージノード５３０に５７５で送られ、データボリュームの耐久性状態を復元することができる。
【００３８】
いくつかの実施形態では、マスタとスレーブストレージノードの役割は、データボリューム毎に割り当てても良いことに注意されたい。例えば、あるストレージノードで維持される１つのデータボリュームに対し、このストレージノードはマスタストレージノードとして作用することができる。一方、同じストレージノードで維持される他のデータボリュームに対しては、このストレージノードは、スレーブストレージノードとして作用することができる。
【００３９】
図２〜５に関連して上述したブロックベースのストレージに対するデータボリュームの耐久性状態の低減及びブロックベースのストレージに対する効果的なデータボリュームのレプリケーションの実施例は、ブロックベースのストレージサービスに関して行ってきた。種々の他の形式またはブロックベースのストレージの構成は、これらの技術を実装することができる。例えば、ストレージノードの異なる構成も、上述のマスタ及びスレーブ（複数の）モデルとは異なるデータボリュームの耐久性状態を確立することができる種々の数の複製、ミラーリング、または他の耐久性技術を実行することができる。図６は、いくつかの実施形態による、ブロックベースのストレージのためのデータボリュームの耐久性を低下させるための種々の方法および技術を示す高レベルフローチャートである。図２〜５に関連して上述したように、これらの技術は、１つ以上のストレージノード（または、ブロックベースのストレージ内のデータボリュームを維持する他のシステムコンポーネント）を使用して実行しても良い。
【００４０】
ストレージノードのグループは、いくつかの実施形態では、ブロックベースのストレージのデータボリュームの複製を維持することができる。ストレージノードのグループは、データボリュームのレプリケーションを実行するために、書き込み要求が完了したと承認する前に、グループ内のストレージノードのそれぞれにおけるデータボリュームに対する受信した書き込み要求を完了することによって、データボリュームの耐久性状態を確立することができる。いくつかの実施形態では、これらのストレージノードは、ピアストレージノードと称することができる。６１０で示すように、データボリュームの複製を維持するストレージノードのグループのあるストレージノードは、複製のために利用できないことを、判定することができる。例えば、３つのストレージノードがデータボリュームの複製を維持している場合に、３つのストレージノードの１つが利用できなくなる。ストレージノードは、多くの理由でレプリケーションに使用できなくなることがあり、これには、ネットワーク分割、高ネットワーク使用率、システム障害、または、他の任意の事象が含まれるが、これらに限定されるものではない。いくつかの実施形態では、ストレージノードで維持されるデータボリュームの複製を維持するピアストレージノードは、書き込み要求を複製するために使用できないことの判定を、ストレージノードのグループの他のストレージノードで行っても良い。例えば、ピアストレージノードに送られた書き込み要求が承認されず、種々のハートビート、またはピアストレージノードに健全性若しくは状況を示す他のゴシッププロトコルが、ストレージノードが利用できないことを示すことができる。いくつかの実施形態では、図２のブロックベースのストレージサービス制御プレーン２２２のような制御システムが、ピアストレージノードが利用できないことの指摘を他のストレージノードに送ることができる。
【００４１】
しかし判定されると、それに応じて、データボリュームに対する後から受け取った書き込み要求の処理が、データボリュームに対して低減した耐久性状態にしたがって実行することができ、６２０で示されるように、データボリュームに対するレプリケーションは利用不能のストレージノードに対して不能にする。耐久性状態の変化は、例えばデータボリュームを維持するストレージノードのグループ内のストレージノードに維持される等、データボリュームについて維持される情報に記録されまたは示される。いくつかの実施形態では、図２のブロックベースのストレージサービス制御プレーン２２２等の制御システムは、特定のデータボリュームが低減した耐久性状態にしたがって作動していることを示すブロックベースのストレージシステム情報を更新することができる。
【００４２】
低減された耐久性状態のデータボリュームに対して書込み要求を後から受け取ったときに、６３０で示すように、書き込み要求は、レプリケーションが利用可能なストレージノードで完了する。したがって、書き込み要求は、耐久性状態を低減する前よりも少ない数のストレージノードで完了することができる。例えば、データボリュームの複製を維持する５つのストレージノードの１つのストレージノードが、レプリケーションに使用できない場合、及び、データボリュームの耐久性状態が低減された場合、５つのストレージノードのうちのレプリケーションに使用できる４つのストレージノードが書き込み要求を完了することができる（書き込み要求を完了することのできたであろう５つのストレージノードよりも少ない）。マスタストレージノードとスレーブストレージノードのみを有する図４に関して上述したように、いくつかの実施形態では、書き込み要求は、単一のストレージノードでデータボリュームに対して完了することができ、ブロックベースのストレージシステム内の任意の他のストレージノードでは完了しない。実際には、種々の実施形態において、書込み要求は、書き込み要求を受けたストレージノードで完了するのみである。他のストレージノードで、このような状況では書き込み要求を複製または完了することはない。６４０で示すように、低減した耐久性状態にしたがって完了した書き込み要求は、この後、クライアントに肯定応答することができる。
【００４３】
図７は、いくつかの実施形態による、データボリュームの耐久性状態を復元するための種々の方法および技術を示す高レベルのフローチャートである。７１０で示すように、増加した耐久性状態にしたがって書き込み要求を処理するために、ストレージノードで維持されたデータボリュームのレプリケーションを他のストレージノードに対して可能にすることの決定を行うことができる。種々の実施形態では、この決定は、図２のブロックベースのストレージサービス制御プレーン２２２等の制御システムによって、またはストレージノード自体によって行うことができる。
【００４４】
レプリケーションを有効にすることでデータボリュームの耐久性状態を増加する時期を、様々な異なる要因で決定することができる。いくつかの実施形態では、ピアストレージノード（マスタまたはスレーブ）として作用する利用可能なストレージノードの数を変更することができる。例えば、利用可能なストレージノードの数が増加する場合、データボリュームの他の複製を格納するための容量を増加することができるため、データボリュームに対するレプリケーションを有効化することができる。別の因子、ブロックベースのストレージシステムの全体として状態（データセンタ等の特定の位置における物理的設備であるか否か）を考慮することができる。ブロックベースのストレージシステム内のストレージノード間で発生したブロックベースのストレージシステムにおける複製操作の数も考慮することができる。いくつかの実施形態では、データボリュームの耐久性状態も考慮することができる。例えば、データボリュームが、ブロックベースのストレージシステムに加え、ページキャッシュ等の特定のハードウェアの最適化であろうとなかろうと他の別のデータストアにアーカイブされまたはバックアップされる場合、図３に関連して上述した書き込みログが実行される。いくつかの実施形態では、別の要因は、レプリケーションを実行するために、所望のまたは好適なピアストレージノードの利用可能性とすることができる。例えば、好ましいピアは、現在、多数の複製操作を実行しており、その時点でデータボリュームのレプリケーションを開始することができなくても良い。種々の実施形態において、１つ、複数、または、全てのこれらの様々な要因が、レプリケーションを有効化するタイミングを評価するために用いられる。いくつかの実施形態では、優先順位付けのスキームまたは順序は、各要因を重み付けし、レプリケーションが他ではなく１つのデータボリュームに対して有効とすべきときに、間の関係を破壊するために使用することができる。
【００４５】
７２０で示されるように、いくつかの実施形態では、他のストレージノードは、データボリュームの複製を維持するために識別することができる。このストレージノードは、いくつかの実施形態では、データボリュームの古い複製を維持する以前のピアであっても良い。いくつかの実施形態では、識別されるストレージノードは、データボリュームの複製を維持していない新しいストレージノードであっても良い。一旦識別されると、１つ以上の複製操作を、他のストレージノードに格納されたデータボリュームの複製を更新するために実行することができる。複製操作は、ストレージノードに維持されるデータボリュームのデータチャンクの一部または全部が他のストレージノードに送られ、そこに維持されるデータボリュームの複製に書き込まれることを包含しても良い。図８は、データボリュームが低減した耐久性状態に入った後に変更されたデータチャンクを送るための技術等、以下に詳述する効果的な複製技術を記載する。複製操作が完了し、ストレージノード及び他のストレージノードに維持されるデータボリュームが同期されると、ストレージノードにおけるレプリケーションが有効となり、ストレージノード及び他のストレージノードの双方で書き込みが完了するまで、書き込み要求は、７４０で示すように、完了したと承認されない。この後、書き込み要求は、データボリュームの最新のバージョンを維持するようになったストレージノード及び他のストレージノードにおいて完了したときに、肯定応答される。上述のように、いくつかの実施形態では、複数のストレージノードがデータボリュームの複製を維持することができ、ストレージノード（例えば４つのストレージノード）の低減された耐久性状態が、７２０、７３０、７４０で示すように、追加のストレージノードを加えて増大する（例えば５つのストレージノードに増加）。他のストレージノードに対してレプリケーションが有効な状態で、データボリュームに対して書き込み要求を受けた場合、書き込み要求が完了したとの肯定応答の前（例えば、肯定応答の前に５つのストレージノードで完了して）に、多数のストレージノード及び他のストレージノードで書き込み要求を完了することができる。
【００４６】
図８は、いくつかの実施形態による、データボリュームの耐久性状態を増大させる際に発生する等の、効率的なデータボリュームのレプリケーションのための種々の方法および技術を示す高レベルのフローチャートである。種々の実施形態では、古い複製は、データボリュームに対する低減された耐久性状態で動作するストレージノード等、１つのストレージノードがデータボリュームの最新のバージョンを有するストレージノードのグループ（対のストレージノード等）の一部であったストレージノードに維持されても良い。利点は、ストレージノード間で複製を同期させるためにレプリケーションの実行がより少ないピアストレージノードを識別するためにこれらの古い複製から得られる。８１０で示すように、有効化事象は、データボリュームのレプリケーションのためのストレージノードで検出することができる。複製の有効化事象は、種々の要因に基づく等の上述の部材７１０と同様に決定されまたはトリガされることができ、これらの要因には、データボリュームの耐久性状態、データボリュームの複製を格納するための他のストレージノードの可用性、または、ブロックベースのストレージシステム間のネットワーク利用率が含まれるが、これに制限するものではない。
【００４７】
８２０で示すように、ピアストレージノードは、ストレージノードに維持されるデータボリュームにしたがって更新するデータボリュームの古い複製を維持していることを識別されることができる。いくつかの実施形態では、識別されるストレージノードは、データボリュームの複製操作を実行するためのデータボリュームの古い複製を維持する最新のストレージノードとすることができる。図９は、いくつかの実施形態による、更新する古い複製を有するストレージノードを識別するための種々の方法および技術を示す高レベルのフローチャートである。９１０で示すように、データボリュームのそれぞれの古い複製を維持する候補ストレージノードの識別子は、種々の実施形態において、ストレージノードで受け取ることができる。図２の制御プレーン２２２等の制御システムは、データボリュームの複製を維持している前回のストレージノードを追跡することができる。いくつかの実施形態では、種々の要因（例えば、ストレージノードは利用可能か、健全か、先の障害の履歴を有するか、または、現在の作業負荷はどうか）にしたがって、制御プレーンは、データボリュームの古い複製を維持しているストレージノードの番号のサブセットから候補ストレージノードのリストを作成することができる。いくつかの実施形態では、ストレージノード自体は、ストレージノードがデータボリュームの複製操作を行ったというストレージノードの履歴を追跡し、維持することができる。これらのストレージノードのネットワークアドレス等、ストレージノードの識別子は、送られ、または、ストレージノードに維持することができる。９２０で示すように、いくつかの実施形態では、判定は、データボリュームのそれぞれの古い複製における更新すべき古いデータチャンクのそれぞれの番号に関して、候補ストレージノードのそれぞれに行うことができる。例えば、いくつかの実施形態において、書き込み要求が無効にされた複製を有するストレージノードで受け取られたときに、データボリュームに対するメタデータが更新され、どのデータチャンクが変更されたか示すことができる（例えば、単調に増加するバージョン番号を、各データチャンクに対して維持することができる）。候補ストレージノードは古い複製の各データチャンクのそれぞれのバージョン番号とボリュームのメタデータを維持することもできる。しかし、古い複製のこのボリュームメタデータも、同様に古くなっていることがある。したがって、データボリュームの古い複製と、データボリュームの最新のバージョンとの間のデータチャンクの違いを識別することができる。例えば、いくつかの実施形態では、ストレージノードは、そのボリュームメタデータを、データボリュームに対する最新のボリュームメタデータと比較するために、それぞれの候補ストレージノードに問い合わせることができる。候補ストレージノードは、データボリュームの複製を同期させるために更新する必要があるデータチャンクの識別子を送ることができる。古いデータチャンクのこれらのそれぞれの番号に基づいて、ピアストレージノードは、更新するように選択することができる。９３０で示すように、例えば、この選択されたストレージノードは、古いデータチャンクの最小の番号を有する候補のストレージノードの１つとすることができる。いくつかの実施形態では、他の要因も、更新すべき古いデータチャンクの量と組合わせて、更新するピアストレージノードを選択するために使用することができる。例えば、現在の作業負荷、向けられたネットワークトラフィック、または、レプリケーションを実行するための特定の候補ストレージノードの性能若しくは能力に関する他の情報も用いても良い。例えば、１つの候補ストレージノードが他の候補ストレージノードよりも多くの更新すべきデータチャンクを有するが、複製操作を実行するためにより多くの容量を有する場合（例えば、他の候補ストレージノードが他のデータボリュームの複製操作または他の作業を実行している）、より多くの更新すべきデータチャンクを有する候補ストレージノードを選択することができる。
【００４８】
図８に戻ると、８３０で示すように、一度選択されると、ピアストレージノードのデータボリュームの複製におけるデータチャンクをアップデートし、ストレージノードのデータボリュームにおける対応するデータチャンクと整合させる複製操作を実行することができる。したがって、いくつかの実施形態では、ストレージノード間で同期されていないデータチャンク（すなわち一致していない）だけが更新する必要があり、ストレージノード間でデータチャンクを送るために必要なネットワークトラフィックが低減する。データボリュームの古い複製とデータボリュームの最新のバージョンとが一致しているデータチャンクについては、複製操作を実行しなくても良い。複製操作が完了すると、データボリュームに対するレプリケーションは、ストレージノードとピアストレージノードとの双方で有効化され得る。ストレージノードとピアストレージノードとの双方で実行されるまで、書き込み要求は完了したと承認されない。
【００４９】
図１０は、いくつかの実施形態による、データボリュームに対する効率的なレプリケーションが実行されていないことを判定するための種々の方法および技術を示す高レベルのフローチャートである。１０１０で示すように、判定は、ストレージノードに対して、ストレージノードに維持されるデータボリュームのレプリケーションを無効とすることができる低減した耐久性状態に入ることと、現在の時間との間の時間が有効なレプリケーションの時間閾値を超えるデータボリュームの古い複製を有するピアストレージノードを特定することで行うことができる。効率的な時間閾値は、古い複製が期限を経過しすぎており、新しい複製をレプリケーションすることがストレージノードにおける古い複製を更新するよりも効率的に複製操作を実行できるような、時間を示すことができる。いくつかの実施形態では、効率的な時間の複製閾値は、データボリュームの耐久性状態（例えば、データボリュームが別の場所にバックアップされているか、または、アーカイブされているかどうか）に基づく等、特定のデータボリュームに対して決定されても良い。１０２０で示すように、それに応答して、データボリュームの古い複製を維持しない利用可能なストレージノードに対して、データボリュームの完全なレプリケーションを実行することができる。データボリュームに対する効率的なレプリケーションを実行しないことの判定は、時間の他の異なる情報に基づいて行うことができる。例えば、いくつかの実施形態では、候補となるストレージノードに置換するための古いデータチャンクの数（すなわち、更新されるデータの量）が、データレプリケーションのための効率的データ量の閾値を超えており、代わりにデータボリュームの新しい複製を作成することができる。
【００５０】
１０１０に関して説明したような、効率的なレプリケーションを非効率にする時間、データまたはその他検討要因を有する古い複製を維持するストレージノードに対して、１０３０で示すように、古い複製は自ら識別することができる。図２の制御プレーン２２２等の制御システムは、１０４０で示すように、ストレージノードがそれぞれの古い複製を削除することを要求することができる。いくつかの実施形態では、ストレージノード自体が、ストレージノードに維持される特定の古い複製を維持する必要がなく、古い複製を削除することを決定しても良い。
【００５１】
本明細書に記載される方法は、様々な実施形態において、ハードウェアとソフトウェアの任意の組み合わせによって実現することができる。例えば、１つの実施形態では、方法は、プロセッサに連結されたコンピュータ読み取り可能な記憶媒体に格納されたプログラム命令を実行する１つ又は複数のプロセッサを含む、コンピュータシステム（図１１のように、例えば、コンピュータシステム）によって実現することができる。プログラム命令は、本明細書に記載された機能（例えば、種々のサーバ、ストレージノード、制御プレーン、管理及び／または他のコンポーネントの機能、例えば、本明細書に記載のブロックベースのストレージサービスを実行するもの等）を実行するように構成しても良い。図面に示し、本明細書に記載された種々の方法は、方法の例示的な実施形態を表す。任意の方法の順番を変更し、種々の要素を追加し、並び換え、組合せ、省略し、変更することができる。
【００５２】
本開示の実施形態は、以下の条項を考慮して説明することができる。
項１．  複数のストレージノードを備え、複数のストレージノードのそれぞれは、ストレージノードで実行されるブロックベースのストレージデバイス内の複数のデータボリュームの複製を維持し、有効なレプリケーションを有する複数のデータボリュームのデータボリュームに対するクライアントから受け取った書き込み要求が、クライアントに対する書き込み要求を承認する前に、データボリュームの各それぞれの複製で完了され、
複数のストレージノードのそれぞれは、
ストレージノードに維持されている複数のデータボリュームの特定のデータボリュームの同じ複製を維持する複数のストレージノードのピアストレージノードがレプリケーションのために利用できないことを判定し、
ピアストレージノードが利用できないことの判定に応答して、特定のデータボリュームのレプリケーションを無効にし、これが、
ストレージノードで書き込み要求を受け取った後に完了し、
複数のストレージノードの他のいずれのストレージノードでも書き込み要求を完了することなく、完了した書き込み要求を承認することを包含するように、構成される、
システム。
項２．  更に、
複数のデータボリュームに対するレプリケーションの有効化及び無効化を認可する制御プレーンを備え、
各ストレージノードは、制御プレーンからレプリケーションの無効化の許可の受け取りに応答して特定のデータボリュームのレプリケーションの無効化を実行するように構成され、
制御プレーンは、
１つまたは複数の候補ストレージノードが特定のデータボリュームの別の複製を維持するという、ストレージノードからの要求の受け取りに応答して、
特定のデータボリュームに対するレプリケーションを有効化することを決定し、
特定のデータボリュームに対するレプリケーションを有効化することの決定に応答して、複数のストレージノードの１つまたは複数の候補ストレージノードのそれぞれの識別子を要求しているストレージノードに送り、要求しているストレージノードが特定のデータボリュームを１つまたは複数の候補ストレージノードに複製するように構成される、項１のシステム。
項３．  要求するストレージノードは、
１つまたは複数の候補ストレージノードのそれぞれの識別子を受け取り、
少なくとも一部が候補識別子に基づいて、１つまたは複数の候補ストレージノードの特定の１つを識別して、データボリュームの他の複製を維持し、
要求するストレージノードで維持される特定のデータボリュームの複製を複製するために、１つまたは複数の複製操作を実行してデータボリュームの他の複製を更新し、更に、
書き込む要求の完了との承認前に、要求するストレージノードで受け取られた書き込み要求が、他のストレージノードに送られるように、特定のデータボリュームに対するレプリケーションを有効化する、項２のシステム。
項４．  複数のストレージノードは、一緒に、ネットワークベースでブロックベースのストレージサービスを実行し、このとき書き込み要求は、ネットワークベースの仮想計算サービルにより実行される１つまたは複数の仮想計算インスタンスから受け取られ、ネットワークベースでブロックベースのストレージサービス及びネットワークベースの仮想計算サービスが、同じネットワークベースのサービスのプロバイダネットワークの一部として共に実行される、項１のシステム。
項５．  １つまたは複数のコンピューティングデバイスにより実行し、
データボリュームのそれぞれの複製を維持する複数のストレージノードの１つのストレージノードがレプリケーションに利用できないことを判定し、このときデータボリュームに対するレプリケーションを実行するためにデータボリュームのために受け取った書き込み要求は複数のストレージノードのそれぞれで完了され、書き込み要求は、複数のストレージノードのそれぞれのストレージノードで完了したときに、完了として承認され、
ストレージノードが利用できないことの前記判定に応答して、データボリュームに対するレプリケーションがストレージノードに対して無効となるように、データボリュームに対する低減した耐久性状態にしたがって、後から受け取ったデータボリュームに対する書き込み要求を処理し、これは、
データボリュームに対する後から受け取った書き込み要求のそれぞれに対して、
レプリケーションに利用可能な複数のストレージノードの１つまたは複数のストレージノードで、後から受け取った書き込み要求を完了し、この書き込み要求は複数のストレージノードよりも少ない数のストレージノードで完了し、更に、
書き込み要求の完了に応答して、書き込み要求完了の承認を行うことを包含する、方法。
項６．  複数のストレージノードは、マスタストレージノードとスレーブストレージノードとを有し、レプリケーションに使用不能と判定されたストレージノードは、マスタストレージノードであり、データボリュームに対する書き込み要求はマスタストレージノードで受け取り、マスタストレージノードは、マスタストレージノードで受け取った書き込み要求を、スレーブストレージノードで完了するためにスレーブストレージノードに送る、項５に記載の方法であって、この方法は、更に、
前記ストレージノードは利用できないとの判定に応答して、スレーブストレージノードをデータボリュームに対する新しいマスタストレージノードに格上げし、後から受け取ったデータボリュームに対する書き込み要求は、新しいマスタストレージノードで受け取り、
レプリケーションに利用できる複数のストレージノードの１つまたは複数のストレージノードにおける前記後から受け取った書き込み要求の完了は、後から受け取った書き込み要求が、複数のストレージノードの他の任意のストレージノードでの書き込み要求が完了することなく、新しいマスタストレージノードで完了するように実行される。
項７．  更に、
増大した耐久性状態にしたがってデータボリュームに対する書き込み要求を処理するため、他のストレージノードに対してデータボリュームのレプリケーションを有効化することを決定し、
データボリュームに対するレプリケーションを有効化することの決定に対応して、
データボリュームの他の複製を維持する他のストレージノードを特定し
１つまたは複数のストレージノードに維持されるようにデータボリュームを複製するために、データボリュームの他の複製を更新する１つまたは複数の複製操作を実行し、更に、
追加の書き込み要求を完了として承認する前に、他のストレージノードで追加の書き込み要求が完了するように、他のストレージノードに対するレプリケーションを有効化する、項５の方法。
項８．  他のストレージノードは、利用不能であると判定されたストレージノードと相違し、他の複製の更新を実行した１つまたは複数の複製操作は、１つまたは複数のストレージノードに維持される全てのデータボリュームのコピーを送りデータボリュームの他の複製として格納される、項７の方法。
項９．  複数のストレージノードが、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、前記データボリュームに対するレプリケーションを有効化するという決定は、
データボリュームの他の複製を維持するためのストレージノードの大きなコレクション中の記憶容量、
ストレージノードの大きなコレクション中のネットワーク利用、または、
データボリュームに対する耐久性の状態、
の１つまたは複数に、少なくとも一部が基づいている、項７の方法。
項１０．  １つまたは複数のコンピューティングデバイスの少なくともいくつかは、ストレージノードの大きなコレクションに対する制御プレーンを実装し、データボリュームに対するレプリケーションを有効化することの決定は、制御プレーンで実行される、項９の方法。
項１１．  複数のストレージノードは、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、複数の異なるデータボリュームの少なくともいくつかに対する書き込み要求は、それぞれの低減した耐久性状態にしたがって処理され、データボリュームに対するレプリケーションを有効化することの前記決定は、それぞれ低減した耐久性状態の少なくともいくつかのデータボリュームの耐久性を増大するための優先順位付けスキームに少なくとも部分的に基づく、項７の方法。
項１２．  複数のストレージノードは、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、ストレージノードが利用不能であることの前記判定、低減した耐久性状態にしたがうデータボリュームに対する後から受け取った書き込み要求の前記処理、レプリケーションを有効化することの前記決定、他のストレージノードの前記特定、１つまたは複数の複製操作の前記実行、及び、他のストレージに対する前記レプリケーションを有効化することは、複数の異なるデータボリュームの異なるものを格納する少なくともいくつかのストレージノードに対して実行される、項７の方法。
項１３．  複数のストレージノードは、ネットワークベースでブロックベースのストレージサービスを実装するストレージノードの大きなコレクションの一部であり、書き込み要求は、ネットワークベースの仮想計算サービスにより実装される１つまたは複数の仮想計算インスタンスから受け取り、ネットワークベースでブロックベースのストレージサービス及びネットワークベースの仮想計算サービスは、同じプロバイダネットワークの一部として共に実装される、項５の方法。
項１４．  プログラム命令を格納する非一過性のコンピュータ読取可能な記憶媒体であって、このプログラム命令は、１つまたは複数のコンピューティングデバイスで実行されたときに、この１つまたは複数のコンピューティングデバイスを、
データボリュームのそれぞれの複製を維持する複数のストレージノードの1つのストレージノードがレプリケーションに利用できないことを判定し、データボリュームに対するレプリケーションを実行するためにデータボリュームのために受け取った書き込み要求が複数のストレージノードのそれぞれで完了し、書き込み要求は、複数のストレージノードのそれぞれのストレージノードで完了したときに、完了として承認させ、
ストレージノードが利用できないことの前記判定に応答して、データボリュームに対するレプリケーションがストレージノードに対して無効となるように、データボリュームに対する低減した耐久性状態にしたがって、後から受け取ったデータボリュームに対する書き込み要求を処理させ、これは、
データボリュームに対する後から受け取った書き込み要求のそれぞれに対して、
レプリケーションに利用可能な複数のストレージノードの１つまたは複数のストレージノードで、後から受け取る書き込み要求を完了させ、この書き込み要求は、複数のストレージノードよりも少ない数のストレージノードで完了され、更に、
書き込み要求の完了に応答して、書き込み要求完了の承認を行わせる。
項１５．  項１４に記載の非一過性のコンピュータ読取可能な記憶媒体であって、複数のストレージノードは、マスタストレージノード及びスレーブストレージノードを有し、使用不能と判定されたストレージノードはスレーブストレージノードであり、マスタストレージノードは、マスタストレージノードで受け取ったクライアントからの書き込み要求を、スレーブストレージノードに送りスレーブストレージノードで完了し、レプリケーションに利用可能な複数のストレージノードの１つまたは複数のストレージノードで後から受け取った書き込み要求の前記完了は、複数のストレージノードの他の任意のストレージノードで書き込み要求を完了することなく、後から受け取った書き込み要求がマスタストレージノードで完了するように、実行される。
項１６．  項１４の非一過性のコンピュータ読取可能なストレージ媒体であって、プログラム命令は１つまたは複数のコンピューティングデバイスに、更に、
増大した耐久性状態にしたがってデータボリュームに対する書き込み要求を処理するため、他のストレージノードに対してデータボリュームのレプリケーションを有効化することを決定させ、
データボリュームのレプリケーションを有効化することの決定に対応して、
データボリュームの他の複製を維持する他のストレージノードを特定させ、
１つまたは複数のストレージノードに維持されるようにデータボリュームを複製するために、データボリュームの他の複製を更新する１つまたは複数の複製操作を実行し、更に、
追加の書き込み要求が完了として承認する前に、他のストレージノードで追加の書き込み要求が完了するように、他のストレージノードに対するレプリケーションを有効化する。
項１７．  項１６の非一過性でコンピュータ読取可能なストレージ媒体であって、他のストレージノードはストレージノードであり、データボリュームの他の複製はデータボリュームのそれぞれの複製であり、データボリュームの他の複製を更新する１つまたは複数の複製操作の前記実行するときに、プログラム命令は、１つまたは複数のコンピューティングデバイスに、
データボリュームのそれぞれの複製を更新するために、ストレージノードのデータボリュームに対する複製の無効化の後で変更されたデータボリュームのデータチャンクを送らせる。
項１８．  項１６の非一過性でコンピュータ読取可能なストレージ媒体であって、複数のストレージノードは、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、データボリュームに対するレプリケーションを有効化することの前記決定は、
データボリュームの他の複製を維持するためのストレージノードの大きなコレクション中の記憶容量、
ストレージノードの大きなコレクション中のネットワーク利用、または、
データボリュームに対する耐久性の状態、
の１つまたは複数に、少なくとも一部が基づいて行うことが可能である。
項１９．  項１６の非一過性でコンピュータ読取可能なストレージ媒体であって、複数のストレージノードは、複数の異なるデータボリュームを格納するストレージノードの大きなコレクションの一部として実装され、複数の異なるデータボリュームの少なくともいくつかに対する書き込み要求は、それぞれの低減した耐久性状態にしたがって処理され、データボリュームに対するレプリケーションを有効化することの前記判定は、それぞれ低減した耐久性状態の少なくともいくつかのデータボリュームの耐久性を増大するための優先順位付けスキームに少なくとも部分的に基づく。
項２０．  項１４の非一過性でコンピュータ読取可能なストレージ媒体であって、複数のストレージノードは、ネットワークベースでブロックベースのストレージサービスを実装するストレージノードの大きなコレクションの一部であり、書き込み要求は、ネットワークベースの仮想計算サービスにより実装される１つまたは複数の仮想計算インスタンスから受け取り、ネットワークベースでブロックベースのストレージサービス及びネットワークベースの仮想計算サービスは、同じプロバイダネットワークの一部として共に実装される。
【００５３】
本明細書に記載されるように、ブロックベースストレージの耐久性状態の低減及び効率的なデータボリュームのレプリケーションの実施形態は、様々な他のデバイスと対話することができる１つ以上のコンピュータシステム上で実行することができる。図１１は、様々な実施形態による、例示的なコンピュータシステムを示すブロック図である。例えば、コンピュータシステム２０００は、異なる実施形態で、ストレージ、及び／または、計算クラスタ、データストア及び／またはクライアントの計算ノードを実装するように構成することができる。コンピュータシステム２０００は、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ若しくはノート型コンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、コンシューマデバイス、アプリケーションサーバ、ストレージデバイス、電話、携帯電話、または、一般に任意のタイプのコンピューティングデバイスの任意の種々の形式のデバイスを包含するが、これらに限定するものではない。
【００５４】
コンピュータシステム２０００は、入出力（Ｉ／Ｏ）インタフェース２０３０を介してシステムメモリ２０２０と連結された１つ以上のプロセッサ２０１０（いずれもの単一またはマルチスレッドとすることができる複数のコアを含むことができる）を有する。コンピュータシステム２０００は、さらに、入出力インタフェース２０３０に連結されたネットワークインターフェース２０４０を有する。様々な実施形態では、コンピュータシステム２０００は、１つのプロセッサ２０１０を有する単一プロセッサシステム、または、複数のプロセッサ２０１０（例えば、２個、４個、８個、又は他の適切な数）を有するマルチプロセッサシステムとすることができる。プロセッサ２０１０は、命令を実行することができる任意の適切なプロセッサであっても良い。例えば、様々な実施形態において、プロセッサ２０１０は、ｘ８６、ＰｏｗｅｒＰＣ、ＳＰＡＲＣ、ＭＩＰＳ  ＩＳＡ、または、任意の他の適切なＩＳＡ等、種々の命令セットアーキテクチャ（ＩＳＡ）を実行する汎用又は組み込みプロセッサとすることができる。マルチプロセッサシステムにおいて、プロセッサ２０１０はそれぞれ、必ずではないが、一般に、同一のＩＳＡを実装することができる。コンピュータシステム２０００は、更に、通信ネットワーク（例えば、インターネット、ＬＡＮ、等）を介して他のシステムおよび／または要素と通信するための１つまたは複数のネットワーク通信デバイス（例えば、ネットワークインターフェース２０４０）を有する。
【００５５】
図示の実施形態では、コンピュータシステム２０００は、更に、１つまたは複数の永続的ストレージデバイス２０６０及び／または１つ以上の入出力デバイス２０８０を有する。種々の実施形態では、永続的ストレージデバイス２０６０は、ディスクドライブ、テープドライブ、固体メモリ、他の大容量記憶装置、ブロックベースの記憶装置、または、他の永続的記憶装置に対応しても良い。コンピュータシステム２０００（又は分散型アプリケーションまたはその上で動作するオペレーティングシステム）は、所望に応じて、永続的ストレージデバイス２０６０に命令及び／またはデータを格納し、必要に応じて、格納された命令および／またはデータを取り出すことができる。例えば、いくつかの実施形態では、コンピュータシステム２０００は、ストレージシステムのサーバーノードを主宰（ｈｏｓｔ）することができ、永続ストレージ２０６０は、サーバーノードに取り付けられたＳＳＤを有することができる。
【００５６】
コンピュータシステム２０００は、プロセッサ（複数を含む）２０１０がアクセス可能な命令及びデータを記憶するように構成された１つまたは複数のシステムメモリ２０２０を有する。種々の実施形態では、システムメモリ２０２０は、任意の適切なメモリ技術を使用して実装することができる（例えば、１つ以上のキャッシュ、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ＤＲＡＭ、ＲＤＲＡＭ、ＥＤＯ  ＲＡＭ、ＤＤＲ  １０  ＲＡＭ、同期ダイナミックＲＡＭ（ＳＤＲＡＭ）、ランバスＲＡＭ、ＥＥＰＲＯＭ、不揮発性／フラッシュ型メモリ、または、他の形式のメモリ）。システムメモリ２０２０は、本明細書に記載の方法および技術を実行するためにプロセッサ（複数を含む）２０１０によって実行可能なプログラム命令２０２５を包含することができる。種々の実施形態では、プログラム命令２０２５は、プラットフォームのネイティブバイナリ、Ｊａｖａ（商標）バイトコード等の任意のインタプリタ言語、若しくはＣ／Ｃ＋＋、Ｊａｖａ（商標）等の任意の他の言語、または、その任意の組合わせに符号化することができる。例えば、図示の実施形態では、プログラム命令２０２５は、異なる実施形態において、ストレージノードの機能を実行するために実行可能なプログラム命令を有する。いくつかの実施形態では、プログラム命令２０２５は、複数の独立したクライアント、ノード、及び／または他のコンポーネントを実装することができる。
【００５７】
いくつかの実施形態では、プログラム命令２０２５は、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ、Ｓｏｌａｒｉｓ（商標）、ＭａｃＯＳ（商標）、Ｗｉｎｄｏｗｓ（商標）等の種々のオペレーティングシステムのいずれでもよいオペレーティングシステム（図示せず）を実行するために実行可能な命令を包含することができる。プログラム命令２０２５のいずれかまたは全部は、コンピュータプログラム製品またはソフトウェアとして提供することができ、これは、命令を格納した非一過性のコンピュータ可読記憶媒体を包含することができ、この命令は、コンピュータシステム（または、他の電子装置）のプログラムを作成し、種々の実施形態による処理を実行することができる。非一過性のコンピュータ可読記憶媒体は、機械（例えば、コンピュータ）によって読み取り可能な形式（例えば、ソフトウェア、処理アプリケーション）で情報を格納するための任意の機構を含むことができる。一般的に、非一過性のコンピュータアクセス可能媒体は、入出力インタフェース２０３０を介してコンピュータシステム２０００に連結される、例えば、ディスクまたはＤＶＤ／ＣＤ−ＲＯＭである磁気又は光媒体等のコンピュータ可読記憶媒体又はメモリ媒体を含むことができる。持続的コンピュータ可読記憶媒体は、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭ等）、ＲＯＭ等の揮発性又は不揮発性媒体を含むことができ、これらは、コンピュータシステム２０００のいくつかの実施形態では、システムメモリ２０２０または他の形式のメモリとして包含することができる。他の実施形態では、プログラム命令は、ネットワークインターフェース２０４０を介して実施することができるようなネットワーク及び／または無線リンク等の通信媒体を介して搬送される、光、音響または他の形態の伝播信号（例えば、搬送波、赤外線信号、デジタル信号、等）を使用して通信することができる。
【００５８】
いくつかの実施形態では、システムメモリ２０２０は、本明細書に記載されるように構成することができるデータストア２０４５含むことができる。一般に、システムメモリ２０２０（例えば、システムメモリ２０２０内のデータストア２０４５）、永続的ストレージ２０６０及び／またはリモートストレージ２０７０は、データブロック、データブロックの複製、データのブロック及び／またはそれらの状態に関連するメタデータ、構成情報、及び／または本明細書に記載の方法および技術を実施する際に使用可能な他の情報を格納することができる。
【００５９】
一実施形態では、入出力インタフェース２０３０は、プロセッサ２０１０、システムメモリ２０２０、及び、ネットワークインターフェース２０４０又は他の周辺インタフェースを介するものを含むシステム内の任意の周辺機器の間で入出力トラフィックを調整するように構成することができる。いくつかの実施形態では、入出力インタフェース２０３０は、１つのコンポーネント（例えば、システムメモリ２０２０）からのデータ信号を他のコンポーネント（例えば、プロセッサ２０１０）が使用するのに適した形式に変換するため、必要なプロトコル、タイミング又は他のデータ変換を実行することができる。いくつかの実施形態では、入出力インタフェース２０３０は、例えば、周辺構成要素相互接続（ＰＣＩ）バス規格又はユニバーサルシリアルバス（ＵＳＢ）規格の変種等の種々の形式の周辺バスを通じて取り付けられたデバイスのサポートを包含することができる。いくつかの実施形態では、入出力インタフェース２０３０の機能は、例えば、ノースブリッジ及びサウスブリッジなど、２つ以上の別々のコンポーネントに分割することができる。更に、いくつかの実施形態では、システムメモリ２０２０とのインタフェース等の入出力インタフェース２０３０の機能の一部または全てをプロセッサ２０１０に直接組み込むことができる。
【００６０】
ネットワークインターフェース２０４０は、コンピュータシステム２０００と、例えば、他のコンピュータシステム２０９０のようなネットワークに接続された他の装置との間でデータを交換できるように構成しても良い。さらに、ネットワークインターフェース２０４０は、コンピュータシステム２０００と、種々の入出力デバイス２０５０及び／またはリモートストレージ２０７０との間の通信を可能にするように構成しても良い。入力／出力装置２０５０は、いくつかの実施形態では、１つ以上のディスプレイ端末、キーボード、キーパッド、タッチパッド、走査デバイス、音声又は光学認識デバイス、または、１つ以上のコンピュータシステム２０００でデータを入力若しくは検索するのに適した任意の他のデバイスを有することができる。複数の入力／出力装置２０５０は、コンピュータシステム２０００に存在しても良く、または、コンピュータシステム２０００を含む分散システムの種々のノード上に分散しても良い。いくつかの実施形態では、同様な入力／出力デバイスが、コンピュータシステム２０００から独立しても良く、ネットワークインターフェース２０４０による等の有線または無線接続を介して、コンピュータシステム２０００を含む分散システムの１つまたは複数のノードと対話することができる。ネットワークインターフェース２０４０は、一般に、１つまたは複数の無線ネットワーキングプロトコルをサポートすることができる（例えば、Ｗｉ−Ｆｉ／ＩＥＥＥ  ８０２．１１、または他の無線ネットワーク標準）。しかし、種々の実施形態では、ネットワークインターフェース２０４０は、例えば、イーサネット（登録商標）ネットワークの他のタイプ等の任意の適切な有線又は無線による一般のデータネットワークを介して通信をサポートすることができる。更に、ネットワークインターフェース２０４０は、ファイバチャネルＳＡＮなどのストレージエリアネットワークを介して、または任意の他の適切な種類のネットワーク及び／またはプロトコルを介して、アナログ音声ネットワーク又はデジタルファイバ通信ネットワーク等の電気通信／電話ネットワークを介する通信をサポートすることができる。種々の実施形態では、コンピュータシステム２０００は、図１１２０００に示したものよりも、多い、少ない、または、異なる部材を包含することができる（例えば、ディスプレイ、ビデオカード、オーディオカード、周辺機器、ＡＴＭインタフェース等の他のネットワークインターフェース、イーサネットインタフェース、フレームリレーインタフェース、等）。
【００６１】
なお、本明細書に記載の分散システムの実施形態のいずれか、または、その部材のいずれかは、１つまたは複数のネットワークベースのサービスとして実施しても良い。例えば、コンピューティングサービス内のコンピュータクラスタは、コンピューティング及び／またはストレージサービス、及び／または、本明細書に記載の分散コンピューティングシステムを使用する他のタイプのサービスを、ネットワークベースのサービスとしてクライアントに提示することができる。いくつかの実施形態では、ネットワークベースのサービスは、ソフトウェア及び／またはネットワークを介して相互運用可能な機械対機械の対話をサポートするように設計されたハードウェアシステムによって実行することができる。ネットワークベースのサービスは、Ｗｅｂサービス記述言語（ＷＳＤＬ）などの機械処理可能な形式で記述されたインタフェースを有しても良い。他のシステムは、ネットワークベースのサービスのインタフェースの説明で規定される方法により、ネットワークベースのサービスと相互作用することができる。例えば、ネットワークベースのサービスは、他のシステムが呼び出す種々の操作を画定することができ、種々の操作を要求するときに他のシステムが適合することを期待する特定のアプリケーションプログラミングインターフェース（ＡＰＩ）を画定することができる。だが
【００６２】
様々な実施形態では、ネットワークベースのサービスは、ネットワークベースのサービスの要求に関連するパラメータ及び／またはデータを含むメッセージの使用を通じて、要求しまたは呼び出すことができる。このようなメッセージは、拡張マークアップ言語（ＸＭＬ）等の特定のマークアップ言語にしたがってフォーマットし、及び／または、簡易オブジェクトアクセスプロトコル（ＳＯＡＰ）のようなプロトコルを用いてカプセル化することができる。ネットワークベースのサービス要求を実行するため、ネットワークベースのサービスクライアントは、要求を含むメッセージをアセンブルし、ハイパーテキスト転送プロトコル（ＨＴＴＰ）のようなインターネットベースのアプリケーション層転送プロトコルを使用して、ネットワークベースのサービスに対応するアドレス可能なエンドポイント（例えば、ユニフォームリソースロケータ（ＵＲＬ））にメッセージを伝えることができる。
【００６３】
いくつかの実施形態では、ネットワークベースのサービスは、メッセージベースの技術よりも、むしろＲｅｐｒｅｓｅｎｔａｔｉｏｎａｌ  Ｓｔａｔｅ  Ｔｒａｎｓｆｅｒ（「ＲＥＳＴｆｕｌ」）の技術を用いて実現することができる。例えば、ＲＥＳＴｆｕｌ技術にしたがって実行されるネットワークベースのサービスは、ＳＯＡＰメッセージ内にカプセル化するよりも、むしろＰＵＴ、ＧＥＴ、ＤＥＬＥＴＥ等のＨＴＴＰメソッド内に含まれるパラメータを介して呼び出すことができる。
【００６４】
上記実施形態について、かなり詳細に説明してきたが、上記の開示を完全に理解することにより、当業者にとって明らかなように、多くの変形及び変更が可能である。したがって、以下の特許請求の範囲は、このような変形及び変更を包含するように解釈されること意図したものであり、上記の説明は説明のためであり、場面に限定するものではない。
【図１】
0006353924.tif 000002
【図２】
0006353924.tif 000003
【図３】
0006353924.tif 000004
【図４】
0006353924.tif 000005
【図５】
0006353924.tif 000006
【図６】
0006353924.tif 000007
【図７】
0006353924.tif 000008
【図８】
0006353924.tif 000009
【図９】
0006353924.tif 000010
【図１０】
0006353924.tif 000011
【図１１】
0006353924.tif 000012