(57)【特許請求の範囲】
【請求項１】
複数の格納クライアントのために１つまたは複数のそれぞれの格納ボリュームを保持するブロックベース格納サービスを実施する複数のコンピュートノードと、
前記複数の格納ボリュームを保持するためにストレージを提供する複数の格納ノードと、
前記ブロックベース格納サービスのための制御プレーンを実行する前記複数のコンピュートノードのうちの少なくともいくつかと、
を備えるシステムであって、前記制御プレーンは、
前記複数の格納ボリュームを監視し、
前記複数の格納ボリュームの前記監視に少なくとも部分的に基づいて、前記格納ボリュームに対する指定されたスケーリングポリシーに従って、前記複数の格納ボリュームのうちの格納ボリュームに対するスケーリングイベントを検出し、前記格納ボリュームは、前記複数の格納クライアントのうちの格納クライアントにてマウントされ、かつファイルシステム用に構成され、
前記スケーリングイベントの前記検出に応じて、
前記スケーリングポリシーに従って、前記格納クライアント用の前記格納ボリュームを動的にスケーリングするために、前記格納ボリュームに割り当てられた前記ストレージを修正し、
前記修正されたストレージ内の前記スケーリングされた格納ボリュームを使用するよう前記格納クライアントにおける前記ファイルシステムが更新されるように、前記格納クライアントに対し、前記格納ボリュームの前記スケーリングイベントを通知する、
ように構成される、システム。
【請求項２】
前記格納クライアントは、さらに、
前記格納ボリュームに対する前記スケーリングイベントの前記通知を受信し、
前記スケーリングイベントに従って前記ファイルシステムを更新し、
前記更新されたファイルシステムを利用して、後続のファイルシステム入出力（Ｉ／Ｏ）に関して前記スケーリングされた格納ボリュームにアクセスする、
ように構成される、
請求項１に記載のシステム。
【請求項３】
前記格納クライアントは、さらに、
前記ファイルシステムのために１つまたは複数の性能メトリクスを収集し、
前記１つまたは複数の性能メトリクスを前記制御プレーンに送信する、
ように構成されるシステムであって、
前記スケーリングイベントの前記検出はさらに、前記格納クライアントにて収集された前記１つまたは複数の性能メトリクスに基づく、
請求項１に記載のシステム。
【請求項４】
１つまたは複数のコンピューティングデバイスにより、
格納クライアント用のネットワークベースデータストアの一部として実施されるストレージに格納ボリュームを保持することであって、前記格納ボリュームは前記格納クライアントにてマウントされ、かつファイルシステムのために構成される、前記格納クライアント用の前記ネットワークベースデータストアの一部として実施される前記ストレージに前記格納ボリュームを保持することと、
前記格納ボリュームに対し指定されたスケーリングポリシーに従って、前記格納ボリュームのスケーリングイベントを検出することと、
前記格納ボリュームの前記スケーリングイベントの検出に応じて、
前記スケーリングポリシーに従って、前記格納クライアント用の前記格納ボリュームをスケーリングするために、前記格納ボリュームを保持する前記ストレージを修正することと、
前記修正されたストレージ内の前記スケーリングされた格納ボリュームを使用するよう前記格納クライアントにおける前記ファイルシステムが更新されるように、前記格納クライアントに対し、前記格納ボリュームの前記スケーリングイベントを通知することと、
を実行することを含む方法。
【請求項５】
前記格納ボリュームに対し前記指定されたスケーリングポリシーは、前記格納クライアントから前記ネットワークベースデータストアのインターフェースを介して受信される、請求項４に記載の方法。
【請求項６】
前記ネットワークベースデータストアは、前記格納クライアントを含む複数の異なる格納クライアントのために、前記格納ボリュームを含む複数の格納ボリュームを保持するマルチテナントのブロックベース格納サービスであり、
前記格納ボリュームを保持する前記ストレージは、前記複数の格納ボリュームを保持する格納デバイスの集合の一部であり、前記格納ボリュームの前記スケーリングイベントを検出することは、前記複数の格納ボリュームを保持する格納デバイスの前記集合を監視することに少なくとも部分的に基づく、請求項４に記載の方法。
【請求項７】
前記スケーリングイベントは前記格納ボリュームを拡大させ、前記格納ボリュームを保持する前記ストレージを修正することは、前記格納ボリュームに追加格納スペースを割り当てることを含む、請求項４に記載の方法。
【請求項８】
前記格納ボリュームに対する前記スケーリングイベントの前記通知を、前記格納クライアントにて受信することと、
前記スケーリングイベントに従って、前記格納ボリュームに対する追加格納容量を含むように、前記ファイルシステムを前記格納クライアントにて更新することと、
前記更新されたファイルシステムを前記格納クライアントにて利用して、後続のファイルシステム入出力（Ｉ／Ｏ）に関して前記スケーリングされた格納ボリュームにアクセスすることと、
をさらに含む請求項７に記載の方法。
【請求項９】
前記保持、前記検出、前記修正、及び前記通知は、前記ネットワークベースデータストアの制御プレーンにより実行され、
前記スケーリングイベントは前記格納ボリュームを縮小させ、
前記方法はさらに、
前記格納ボリュームに対する前記スケーリングイベントの前記通知を、前記格納クライアントにて受信することと、
前記スケーリングイベントに従って、前記格納ボリュームに割り当てられた格納スペースを回収するように、前記ファイルシステムを前記格納クライアントにて更新することと、
前記格納クライアントから、前記ネットワークベースデータストアの前記制御プレーンに対し、前記ストレージ内で回収する前記格納スペースを特定するスケーリングイベント応答を送信することと、
前記更新されたファイルシステムを前記格納クライアントにて利用して、後続のファイルシステム入出力（Ｉ／Ｏ）に関して前記スケーリングされた格納ボリュームにアクセスすることと、
を含み、
前記格納ボリュームを保持する前記ストレージを修正することは、前記ストレージの前記特定された格納スペースを回収することを含む、
請求項４に記載の方法。
【請求項１０】
プログラム命令を記憶するコンピュータ可読記憶媒体であって、前記プログラム命令は１つまたは複数のコンピューティングデバイスにより実行されると、前記１つまたは複数のコンピューティングデバイスに、
格納クライアント用のネットワークベースデータストアの一部として実施されるブロックベースストレージに保持される格納ボリュームを監視することであって、前記格納ボリュームは前記格納クライアントにてマウントされ、かつファイルシステムのために構成される、前記格納クライアント用の前記ネットワークベースデータストアの一部として実施される前記ブロックベースストレージに保持される前記格納ボリュームを監視することと、
前記監視に少なくとも部分的に基づいて、前記格納ボリュームに対し指定されたスケーリングポリシーに従って、前記格納ボリュームのスケーリングイベントを検出することと、
前記格納ボリュームの前記スケーリングイベントの検出に応じて、
前記スケーリングポリシーに従って、前記格納クライアント用の前記格納ボリュームを動的にスケーリングするために、前記格納ボリュームを保持する前記ブロックベースストレージを修正することと、
前記修正されたブロックベースストレージ内の前記スケーリングされた格納ボリュームを使用するよう前記格納クライアントにおける前記ファイルシステムが更新されるように、前記格納クライアントに対し、前記格納ボリュームの前記スケーリングイベントを通知することと、
を実行させる、コンピュータ可読記憶媒体。
【請求項１１】
前記スケーリングイベントは前記格納ボリュームを縮小させ、前記格納ボリュームを保持する前記ブロックベースストレージを修正する際、前記プログラム命令は、前記１つまたは複数のコンピューティングデバイスに、前記格納ボリュームに割り当てられた前記ブロックベースストレージの格納スペースを回収することを実行させる、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１２】
前記スケーリングイベントは前記格納ボリュームを拡大させ、前記格納ボリュームを保持する前記ブロックベースストレージを修正する際、前記プログラム命令は、前記１つまたは複数のコンピューティングデバイスに、前記格納ボリュームに追加格納スペースを割り当てることを実行させる、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記プログラム命令は前記１つまたは複数のコンピューティングデバイスにさらに、
前記格納ボリュームに対する前記スケーリングイベントの前記通知を、前記格納クライアントにて受信することと、
前記スケーリングイベントに従って、前記格納クライアントにて前記ファイルシステムを更新することと、
前記更新されたファイルシステムを前記格納クライアントにて利用して、後続のファイルシステム入出力（Ｉ／Ｏ）に関して前記スケーリングされた格納ボリュームにアクセスすることと、
を実行させる、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記プログラム命令はさらに、前記１つまたは複数のコンピューティングデバイスに、
前記スケーリングイベントの検出に応じて、前記スケーリングイベントに従って前記スケーリングされた格納ボリュームに対するファイルシステム入出力（Ｉ／Ｏ）を処理するために、前記ネットワークベースデータストアにて保持されるマッピング情報を更新すること、
を実行させる、請求項１０に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記格納クライアント用の前記格納ボリュームをスケーリングするために前記格納ボリュームを保持する前記ブロックベースストレージを修正する際、前記プログラム命令はさらに、前記１つまたは複数のコンピューティングデバイスに、
前記格納ボリュームを保持する前記ブロックベースストレージにおける前記格納ボリュームに対し、１つまたは複数のストレージメンテナンス動作を行うこと、
を実行させる、請求項１０に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ネットワークを通じた仮想化ハードウェアリソース、ソフトウェア、及び情報格納の動的共有に関する昨今の技術革命は、コンピューティングの信頼性、スケーラビリティ、費用効果性を向上させた。より具体的には、仮想化の出現によるオンデマンドで仮想化コンピューティングリソース及び格納を提供する能力は、リソース及び格納処理の顧客が、即時認識されたコンピューティング及び格納要求に応じて、自身のコンピューティング及び格納費用を柔軟に組み立てることを可能にした。仮想化により、顧客は、ハードウェアの製造及び開発の遅延及び費用により決定される供給サイクルにおいて固定のハードウェアを購入または賃貸するのではなく、要求時のプロセッササイクル及び格納を購入することが可能となる。将来的要求予測の正確性に依存してコンピューティング及び格納の可用性を特定するのではなく、ユーザは、比較的に瞬間要求に応じてコンピューティング及び格納リソースの使用を購入することが可能である。
【０００２】
仮想化コンピューティング環境はしばしば、ブロックベース格納により支えられている。このようなブロックベース格納は、一連の標準化された格納呼び出しを通して様々な仮想化コンピューティングと対話することが可能である格納システムを提供する。当該一連の標準化された格納呼び出しにより、ブロックベース格納は、自身が対応するボリュームの構造的及び機能的詳細、並びに自身が格納可用性を提供する仮想上で作動するオペレーティングシステムに対し、機能的に依存しなくなる。しかしながら、仮想化リソースの処理能力の増大に伴ってネットワーク伝送能力が高まるにつれ、ブロックベース格納に対する入出力要求も増加し得る。入出力要求がブロックベース格納の要求対応能力を超えると、仮想化コンピューティングリソースのブロックベース格納性能のレイテンシ及び／または耐久性は劣化し、仮想化コンピューティングの性能損失をもたらす。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを例示する一連の図解である。
【図２】いくつかの実施形態による、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行するブロックベース格納サービスを実施するプロバイダネットワークを例示するブロック図である。
【図３】いくつかの実施形態による、格納クライアントの様々なコンポーネントを例示するブロック図である。
【図４】いくつかの実施形態による、ブロックベース格納サービスの様々なコンポーネントを例示するブロック図である。
【図５】いくつかの実施形態による、格納クライアントと、動的格納ボリュームスケーリングを実行するブロックベース格納サービスとの間の対話を例示するブロック図である。
【図６】いくつかの実施形態による、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行する方法及び技術を例示する高次フローチャートである。
【図７】いくつかの実施形態による、ファイルシステム用格納ボリュームのスケーリングイベントに従ってファイルシステムを更新する方法及び技術を例示する高次フローチャートである。
【図８】いくつかの実施形態による、例示的コンピュータシステムである。
【０００４】
本明細書において実施形態はいくつかの例示的実施形態及び例示的図面として説明されるが、実施形態は説明される実施形態または図面に限定されないことを、当業者は認識するであろう。図面とその詳細説明には、実施形態を開示される特定の形態に限定する意図はなく、それとは逆に、添付の特許請求の範囲により定義される趣旨及び範囲に入る全ての変更、均等物、及び代替案を包含する意図があることを理解されたい。本明細書において使用される見出しは、構成目的でのみ用いられ、説明または特許請求の範囲を限定するために用いられることを意図しない。本出願を通して使用される英単語「ｍａｙ」は、義務的な意味（すなわち「〜しなければならない」という意味）ではなく、許容的な意味（すなわち「〜する可能性がある」という意味）で使用される。英単語「ｉｎｃｌｕｄｅ」、「ｉｎｃｌｕｄｉｎｇ」、及び「ｉｎｃｌｕｄｅｓ」は無制限の関係性を示し、従って「含む」ことを意味するが、その対象に限定されない。同様に、英単語「ｈａｖｅ」、「ｈａｖｉｎｇ」、及び「ｈａｓ」も無制限の関係性を示し、従って「有する」ことを意味するが、その対象に限定されない。本明細書において使用される用語「第１」、「第２」、「第３」等は、それらが先行する名詞のラベルとして使用され、明示的に示されない限りいかなる種類の順序（例えば空間的、時間的、論理的等）も意味しない。
【０００５】
様々なコンポーネントが、１つまたは複数のタスクを実行「するように構成される」と説明され得る。このような文脈において、「するように構成される」は、動作中に１つまたは複数のタスクを実行「するような構造を有する」ことを一般的に意味する概略的記述である。このように、コンポーネントは、現在あるタスクを実行していなくとも、当該タスクを実行するように構成され得る。（例えば、コンピュータシステムは、現在ある動作を実行していなくとも、当該動作を実行するように構成され得る。）いくつかの文脈において、「するように構成される」は、動作中に１つまたは複数のタスクを実行「するような回路を有する」ことを一般的に意味する構造の概略的記述であり得る。このように、コンポーネントは、現在起動していなくとも、タスクを実行するように構成され得る。一般に、「するように構成される」に対応する構造を形成する回路は、ハードウェア回路を含み得る。
【０００６】
説明の都合上、様々なコンポーネントは、１つまたは複数のタスクを実行するものとして説明され得る。このような説明は、「するように構成される」という句を含むものとして解釈されたい。１つまたは複数のタスクを実行するように構成されるコンポーネントの記述は、当該コンポーネントに対し米国特許法第１１２条（ｆ）の解釈を喚起しないようにすることを明確に意図する。
【０００７】
本明細書において使用される用語「に基づく」は、決定に影響する１つまたは複数の要因を説明するために使用される。当用語は、決定に影響し得る追加要因を排除しない。すなわち、決定は、これらの要因にのみ基づき得る、あるいは少なくとも部分的にこれらの要因に基づき得る。「Ｂに基づいてＡを決定する」という句を検討する。ＢはＡの決定に影響する要因であり得るが、このような句は、Ａの決定がＣにも基づくことを排除しない。他の事例において、ＡはＢにのみ基づいて決定され得る。
【０００８】
本開示の範囲は、本明細書において記載される問題のいずれかまたは全てを緩和するか否かに関わらず、本明細書において開示される任意の特徴または特徴の組み合わせ（明示的または暗示的）、あるいはその任意の一般化を含む。従って、任意のこのような特徴の組み合わせに対し、本出願（またはそれに優先権を主張する出願）の訴追中に、新たな請求項が策定され得る。特に、添付の特許請求の範囲を参照すると、従属請求項の特徴は独立請求項の特徴と組み合わせられ、それぞれの独立請求項の特徴は、単に添付の特許請求の範囲において挙げられる特定の組み合わせではなく、任意の好適な手法で組み合わせられ得る。
【発明を実施するための形態】
【０００９】
本明細書において、格納クライアントファイルシステム用格納ボリュームの動的スケーリングに関する様々な実施形態が説明される。ネットワークベースデータストアは、様々な異なる格納クライアントアプリケーションに対し、耐久力があり柔軟な格納ソリューションを提供する。例えば、格納クライアントは、ネットワークベースデータストアにおいてファイルシステムに対応する格納ボリュームを実行し得る。格納ボリュームの動的スケーリングの提供により、格納費用は格納ボリュームの実際の使用にしっかり一致することが可能になり、経時的な格納要件の変更が補償される。図１は、いくつかの実施形態による、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを例示する一連の図解である。ネットワークベースデータストア１１０は、様々な格納クライアント（複数可）１４０に対し持続的データ格納を提供し得る。ネットワークベースデータストア１１０における格納は、少なくともいくつかの実施形態において、ブロックベース格納であり得る。格納クライアント（複数可）１４０は、ネットワークベースデータストア１１０において格納ボリューム１３０を準備し得る。データストアを準備する際、格納クライアント（複数可）１４０は、格納ボリュームを装備し、格納クライアント（複数可）１４０において実行されるファイルシステムのために格納ボリュームを設定し得る。
【００１０】
前述のように、格納容量及び／または性能に対する要求は、時間と共に変化し得る。これらの変化を考慮すると、静的に供給される格納リソースは、費用効率が低くなり得る。さらに、複数の異なる格納クライアントに格納を提供するネットワークベースデータストアに関して、完全に使用されていない格納リソースは、ネットワークベースデータストアの効率性を低減させている別の格納クライアントに使用されたほうが良くあり得る。従って、様々な実施形態において、ネットワークベースデータストア１１０は、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行し得る。シーン１０２に例示されるように、格納クライアント（複数可）１４０におけるファイルシステムマネジャー１５０は、格納クライアント（複数可）１４０にて実行されるファイルシステムのために格納ボリュームを使用する一環として、様々な入出力要求を格納ボリューム１３０に送信し得る。格納ボリューム１３０のスケーリングイベントを検出するために格納ボリュームを監視し得るデータストア制御プレーン１２０に対し、ボリューム性能が報告１３２され得る。
【００１１】
格納ボリューム１３０のスケーリングポリシーに従って、スケーリングイベントが検出され得る。スケーリングポリシーは、格納ボリューム１３０をスケーリングする様々な制御プレーン行動を引き起こす１つまたは複数の条件を含み得る。例えば、格納ボリューム１３０は、サイズ拡大、サイズ縮小、格納ボリュームの格納リソースを異なるように再分配、及び／または格納ボリューム１３０の異なるスループット性能（例えば毎秒入出力動作（ＩＯＰ））の供給のために、スケーリングされ得る。スケーリングイベントを検出するために、ボリューム性能メトリクス及び格納容量に関して、様々な異なる閾値または条件が調べられ得る（例えば多過ぎるまたは少な過ぎる格納容量または帯域幅）。
【００１２】
シーン１０４に例示されるように、格納ボリューム１３０のスケーリングイベントが発生した。データストア制御プレーン１２０は、ボリュームのスケーリングイベントの開示１２２をファイルシステムマネジャー１５０に提供する。当開示により、ファイルシステムマネジャー１５０は、スケーリングされた格納ボリュームにアクセス可能になり得る。データストア制御プレーン１２０はまた、格納ボリュームを動的にスケーリングし、当実施例においては追加分１３２を追加する。スケーリングイベントに関して格納ボリュームの所望構成に相応する格納リソースを割り当てる様々な異なる格納動作が行われ、これには様々な格納メンテナンス動作が含まれる。ファイルシステムマネジャー１５０は、開示１２２を受信し、スケーリングされた格納ボリューム１６０を含むように格納クライアント（複数可）１４０におけるファイルシステムを更新し得る。例えば、ファイスシステムマネジャー１５０は、ボリューム追加１３２の結果としてスケーリングされた格納ボリューム１６０を開示するために、ファイルシステムメタデータを更新する様々なサイズ変更動作を実行し得る。それからファイルシステムマネジャー１５０は、ネットワークベースデータストア１１０内のスケーリングされた格納ボリュームを使用するために、入出力要求１１４を送信し得る。
【００１３】
図１は、格納クライアントファイルシステム用格納ボリュームの動的スケーリングの例示として提供され、本明細書に説明されるコンポーネント、モジュール、またはデバイスの物理的配置、サイズ、または数に関して制限する意図はないことに留意されたい。
【００１４】
本明細書はまず、ネットワークベースデータストアの実施例として、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを提供し得るブロックベース格納サービスを説明する。ブロックベース格納サービスを実施し得る様々なコンポーネント、モジュール、システム、またはデバイス、並びにブロックベース格納サービスのクライアントが説明される。本明細書はそれから、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行する方法の様々な実施形態のフローチャートを説明する。次に本明細書は、開示される技術を実行し得る例示的システムを説明する。本明細書を通して様々な実施例が提供される。
【００１５】
図２は、いくつかの実施形態による、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行するブロックベース格納サービスを実施するプロバイダネットワークを例示するブロック図である。インターネット及び／または他のネットワークを介してアクセス可能な１つまたは複数のサービス（様々な種類のクラウドベースのコンピューティングまたは格納等）を、クライアント２１０に提供するために、企業または公的機関等の事業体により、プロバイダネットワーク２００が構築され得る。プロバイダネットワーク２００は、プロバイダネットワーク２００が提供するインフラストラクチャ及びサービスを実行及び配給するために必要な物理及び／または仮想化コンピュータサーバ、格納デバイス、ネットワーク機器等の集合（例えば図８に関して後述されるコンピューティングシステム１０００）といった様々なリソースプールを提供する多数のデータセンターを含み得る。いくつかの実施形態において、プロバイダネットワーク２００は、仮想コンピュートサービス２３０等のコンピューティングリソース、ブロックベース格納サービス２２０及び他の格納サービス２４０等の格納サービス（オブジェクト／キー値ベースデータストア等の様々な格納種類、または様々な種類のデータベースシステムを含み得る）、及び／またはその他の種類のネットワークベースサービス２５０を提供し得る。クライアント２１０は、ネットワーク２６０を介して、プロバイダネットワーク２００が提供するこれらの様々なサービスにアクセスし得る。同様に、ネットワークベースサービス自体は、異なるサービスを提供するために、お互いに通信及び／または利用し合い得る。例えば、仮想または物理コンピュートインスタンスまたは格納インスタンスといった「インスタンス」と呼ばれるユニットでクライアント２１０に提供されるコンピューティングリソースは、特定のデータボリューム２２６を利用して、コンピュートインスタンス用の仮想ブロック格納を提供し得る。
【００１６】
前述のように、仮想コンピュートサービス２３０は、様々なコンピュートインスタンス（複数可）２３２をクライアント２１０に提供し得る。仮想コンピュートインスタンスは、例えば、指定演算能力（ＣＰＵの種類と数、メインメモリサイズ等を指示することで指定可能）を有する１つまたは複数のサーバと、指定ソフトウェアスタック（例えば今度はハイパーバイザーの上部で作動し得る特定バージョンのオペレーティングシステム）とを備え得る。異なる実施形態において、仮想コンピュートサービス２３０のコンピュートインスタンスを実行するために、多数の異なる種類のコンピューティングデバイスが単一で、または組み合わせて使用され、これには汎用または専用コンピュータサーバ、格納デバイス、ネットワークデバイス等が含まれる。いくつかの実施形態において、インスタンスクライアント２１０またはその他のユーザは、ネットワークトラフィックをコンピュートインスタンスへ向けるように構成され得る（及び／または権限が与えられ得る）。様々な実施形態において、様々な動作の実行用に持続的ブロックベース格納を取得するために、コンピュートインスタンスは、ブロックベース格納サービス２２０が提供する１つまたは複数のデータボリューム２２６に結び付けまたはマッピングされ得る。
【００１７】
コンピュートインスタンス（複数可）２３２は、アプリケーションサーバインスタンス、Ｊａｖａ（登録商標）仮想マシン（ＪＶＭ）、汎用または専用オペレーティングシステム、Ｒｕｂｙ、Ｐｅｒｌ、Ｐｙｔｈｏｎ、Ｃ、Ｃ＋＋等の様々なインタプリタ型またはコンパイラ型プログラミング言語に対応するプラットフォーム、または高性能コンピューティングプラットフォーム等、例えばインスタンスにアクセスするようクライアント２１０に要求することなく、クライアントアプリケーションを実行するのに好適な様々な異なるプラットフォームを作動または実行し得る。いくつかの実施形態において、コンピュートインスタンスは、期待稼働率に基づいて、異なる種類または構成を有する。特定のコンピュートインスタンスの稼働率は、インスタンスが確保されている総時間に対し、インスタンスが作動している時間の比率に定義され得る。いくつかの実施態様において、稼働率は使用率とも称され得る。インスタンスが確保されている時間のうち比較的少ない分率だけコンピュートインスタンスを使用することをクライアントが見込む場合（例えば年間確保のうち３０％〜３５％）、クライアントはインスタンスを低稼働率インスタンスとして確保することに決定し、関連価格設定ポリシーに従って割引時間利用料を支払い得る。ほとんどの時間インスタンスが作動するよう求める定常状態作業負荷を有することをクライアントが見込む場合、クライアントは高稼働率インスタンスを確保し、より低い時間利用料を支払う可能性さえあるが、いくつかの実施形態において、時間料金は価格設定ポリシーに従って、実際の利用時間数にかかわらず、確保存続時間全体に対し課金され得る。いくつかの実施形態において、対応価格設定ポリシーを伴う中間稼働率インスタンスの選択が同様に支持され、中間稼働率インスタンスでは、初期費用及び時間費用は、対応高稼働率費用と対応低稼働率費用の中間に位置する。
【００１８】
コンピュートインスタンス構成はまた、コンピュート集中アプリケーションの演算作業負荷（例えば高トラフィックウェブアプリケーション、広告提供、バッチ処理、ビデオ符号化、分散解析論、高エネルギー物理学、ゲノム分析、及び計算流体力学）、グラフィック集中作業負荷（例えばゲームストリーミング、３Ｄアプリケーションストリーミング、サーバ側グラフィック作業負荷、レンダリング、財務モデリング、及び工学設計）、メモリ集中作業負荷（例えば高性能データベース、分散メモリキャッシュ、インメモリ分析論、ゲノムアセンブリ及び分析）、及び格納最適化作業負荷（例えばデータウェアハウジング及びクラスタファイルシステム）といった汎用及び専用目的のコンピュートインスタンスも含み得る。特定数の仮想ＣＰＵコア、メモリ、キャッシュ、格納、並びにその他の性能特性等、コンピュートインスタンスのサイズ。コンピュートインスタンスの構成はまた、特定のデータセンター、可用性区域、地理、場所等におけるそれらの位置と、確保期間（確保されたコンピュートインスタンスの場合）とを含み得る。
【００１９】
様々な実施形態において、プロバイダネットワーク２００は、格納動作を行うために、ブロックベース格納サービス２２０も実施し得る。ブロックベース格納サービス２２０は、１つまたは複数の持続的格納デバイス（複数可）２２６ａ、２２６ｂ、２２６ｃ、〜、２２６ｎを使用してブロックレベル格納を提供する複数の独立格納ノード２２４ａ、２２４ｂ、２２４ｃ、〜、２２４ｎのプールから成る格納システム（例えばサーバブロックデータ格納システム）である。保持される格納ボリュームは、特定のクライアントにマッピングされ、論理ブロックの連続的集合として仮想ブロックベース格納（例えばハードディスク格納または他の持続的格納）が提供され得る。いくつかの実施形態において、スナップショット動作または複製動作等、他のブロック格納動作を実行するために、格納ボリュームは、複数のデータチャンク（１つまたは複数のデータブロックを含む）に分割され得る。
【００２０】
格納ボリュームのボリュームスナップショットは、格納ボリュームのステートの特定時点固定表現であり得る。いくつかの実施形態において、ボリュームスナップショットは、バックアップ格納サービス２４０内等、格納ボリュームを保持する格納ノード２２４から遠く離れた場所に格納され得る。スナップショット動作は、バックアップ格納サービス２４０内の遠隔スナップショットデータストア等、別の格納場所に所定の格納ボリュームのスナップショットを送信、複写、及び／あるいは保存するために行われ得る。
【００２１】
ブロックベース格納サービス２２０は、ブロックベース格納サービス制御プレーン２２２を実行して、ブロックベース格納サービス２２０の動作を支援し得る。様々な実施形態において、ブロックベース格納サービス制御プレーン２２２は、プロバイダネットワーク２００内に配置される仮想コンピュートサービス２３０及び／または他のネットワークベースサービス、及び／または任意で１つまたは複数の他のデータセンター内に配置されるコンピューティングシステム（図示せず）、またはネットワーク２６０上で利用可能なプロバイダネットワーク２００外の他のコンピューティングシステム（例えばクライアント（複数可）２１０）により提供されるコンピュートインスタンス上で実行されるプログラム等、クライアントに対するブロックデータ格納の可用性の管理を支援する。格納ノード２２４上の格納ボリュームへのアクセスは、ブロックデータトランザクション命令に応じて、プロバイダネットワーク２００内の内部ネットワークを介して、または外部的にネットワーク２６０を介して提供され得る。
【００２２】
ブロックベース格納サービス制御プレーン２２２は、ユーザアカウントの管理（例えば作成、削除、課金、支払い収集等）を含むブロックレベル格納機能の提供に関連する様々なサービスを提供し得る。ブロックベース格納サービス制御プレーン２２２はさらに、構成要求に応じて、格納ボリューム及びスケーリングポリシーの作成、使用、削除に関連するサービスを提供し得る。ブロックベース格納サービス制御プレーン２２２はまた、バックアップ格納サービス２４０上のボリュームスナップショットの作成、使用、削除に関連するサービスを提供し得る。ブロックベース格納サービス制御プレーン２２２はまた、格納ボリュームの使用及びこれらボリュームのスナップショットに関連する性能及び監査データの収集及び処理に関連するサービスを提供し得る。
【００２３】
ブロックベース格納サービス２２０は、様々な異なる方法で格納ボリュームを管理及び維持し得る。格納ボリュームのレプリカを保持する２つ以上の格納ノードの中で、いくつかのデータボリュームに対し、異なる耐久性スキームが実施され得る。例えば、データボリュームの単一障害点を削除すること等、データボリュームの耐久性を向上するために、異なる種類のミラーリング及び／または複製技術が実施され得る（例えばＲＡＩＤ  １）。格納ボリュームへのアクセスを提供するために、格納ノードはそれから、格納ボリュームのレプリカを保持する２つ以上の格納ノード間で、書き込み要求等の入出力要求を調整し得る。
【００２４】
プロバイダネットワーク２００はまた、前述のように、バックアップ格納サービス２４０を実施し得る。バックアップ格納サービス２４０は、ブロックベース格納サービス２２０により提供される格納と、同じまたは異なる種類の格納を提供し得る。例えば、いくつかの実施形態において、他の格納サービス２４０は、データをデータオブジェクトとして格納及び管理し得るオブジェクトベース格納サービスを提供し得る。例えば、様々な格納ボリュームのボリュームスナップショットは、特定格納ボリュームのスナップショットオブジェクトとして格納され得る。バックアップ格納サービス２４０に加えて、プロバイダネットワーク２００は、他のネットワークベースサービス２５０を実施し得る。これには、クライアント２１０並びにプロバイダネットワーク２００の他のサービス（例えばブロックベース格納サービス２２０、仮想コンピュートサービス２３０、及び／または他の格納サービス２４０）が様々なタスクを実行または要求することを可能にする様々な異なる種類の分析、演算、格納、または他のネットワークベースシステムが含まれ得る。
【００２５】
クライアント２１０は、ネットワークプロバイダ２００に対し要求を提出するように構成可能な任意の種類のクライアントを含み得る。例えば、所定のクライアント２１０は、好適バージョンのウェブブラウザを含み得る、あるいはウェブブラウザが提供する実行環境に対する拡張、または実行環境内の拡張として、実行されるように構成されるプラグインモジュールまたは他の種類のコードモジュールを含み得る。あるいは、クライアント２１０は、データベースアプリケーション（またはそのユーザインターフェース）、メディアアプリケーション、オフィスアプリケーション、または様々な動作を実行するためにプロバイダネットワーク２００内のコンピュートインスタンス、格納ボリューム、または他のネットワークベースサービスを利用し得るその他のアプリケーションといったアプリケーションを含み得る。いくつかの実施形態において、このようなアプリケーションは、全ての種類のネットワークベースデータの完全なブラウザサポートを必ずしも実施することなくネットワークベースサービス要求を生成及び処理するのに十分なプロトコルサポート（例えば好適バージョンのハイパーテキスト転送プロトコル（ＨＴＴＰ））を含み得る。いくつかの実施形態において、クライアント２１０は、レプレゼンテーショナルステートトランスファ（ＲＥＳＴ）式ネットワークベースサービスアーキテクチャ、ドキュメントベースまたはメッセージベースのネットワークベースサービスアーキテクチャ、または別の好適なネットワークベースサービスアーキテクチャに従って、ネットワークベースサービス要求を生成するように構成され得る。いくつかの実施形態において、クライアント２１０（例えば演算クライアント）は、コンピュートインスタンスまたは格納ボリュームが提供するブロック格納により提供される演算リソースを使用するクライアント２１０に実装されたアプリケーションに対し明白な方法で、コンピュートインスタンスまたは格納ボリュームへのアクセスを提供するように構成され得る。少なくともいくつかの実施形態において、クライアント（複数可）２１０は、クライアント（複数可）２１０にて実行されるファイルシステムのために、ブロックベース格納サービス２２０にて実行される格納ボリュームを準備、装備、及び設定し得る。
【００２６】
クライアント２１０は、外部ネットワーク２６０を介して、プロバイダネットワーク２００にネットワークベースサービス要求を伝達し得る。様々な実施形態において、外部ネットワーク２６０は、クライアント２１０とプロバイダネットワーク２００との間のネットワークベース通信を確立するために必要なネットワークハードウェア及びプロトコルの任意の好適な組み合わせを含み得る。例えば、ネットワーク２６０は一般に、共同でインターネットを実施する様々な電気通信ネットワーク及びサービスプロバイダを含み得る。ネットワーク２６０はまた、ローカルエリアネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）等の私設ネットワーク、並びに公衆または私設無線ネットワークを含み得る。例えば、所定のクライアント２１０及びプロバイダネットワーク２００の両者が、自身の内部ネットワークを有する企業内にそれぞれ準備され得る。このような実施形態において、ネットワーク２６０は、所定のクライアント２１０とインターネット間、並びにインターネットとプロバイダネットワーク２００間のネットワークリンクを確立するために必要なハードウェア（例えばモデム、ルータ、スイッチ、ロードバランサ、プロキシサーバ等）及びソフトウェア（例えばプロトコルスタック、会計ソフトウェア、ファイアウォール／セキュリティソフトウェア等）を含み得る。いくつかの実施形態において、クライアント２１０は、公衆インターネットではなく私設ネットワークを使用して、プロバイダネットワーク２００と通信し得ることに留意されたい。
【００２７】
前述の様々な格納クライアントは、多数の方法で実行され得る。図３は、いくつかの実施形態による、格納クライアントの様々なコンポーネントを例示するブロック図である。クライアント２１０、仮想コンピュートインスタンス２３２、または前述の内部クライアントであり得る格納クライアント３００は、ネットワーク３６０（前のネットワーク２６０と同様）を介してブロックベースサービス３７０と通信し得る。ブロックベース格納サービス３７０は、いくつかの実施形態において、ブロックベース格納サービス２２０に類似し得る。格納クライアント３００は、格納クライアント３００にて実行されるファイルシステムのために、ブロックベース格納システム内３７０に保持される格納ボリューム３７２を装備し得る。
【００２８】
様々な実施形態において、格納クライアント３００は、格納クライアント３００の様々なコンポーネント間の入出力（Ｉ／Ｏ）を命令するように構成され得るファイルシステムマネジャー３１０を実行し得る。様々な実施形態において、ファイルシステムマネジャー３１０は、格納クライアント３００のオペレーティングシステム内のカーネルの一環として実行され得る。ファイルシステムマネジャー３１０は、他の入出力間のファイルシステムに対する変更に対応し得る。ファイルシステムマネジャー３１０は、スケーリング管理モジュール３１４を実行し、制御プレーン３７４からのブロックベース格納サービス３７０内の格納ボリューム３７２に対するスケーリングイベントの様々な指示に対応し得る。例えば、スケーリング管理モジュール３１４は、格納クライアント３００にて維持されるファイルシステムを更新するために、図６、７に関して後述される様々な技術を実行し得る。サイズ変更動作は、例えば、ファイルシステムのための様々なメタデータ及び情報構造を更新する（図示せず）。スケーリング管理モジュール３１４は、いくつかの実施形態において、様々なファイルシステム性能メトリクス（例えば格納容量、アクセスパターン、入出力性能）を収集し、それらを制御プレーン３７４へ送信し得る。少なくともいくつかの実施形態において、制御プレーン３７４は、格納クライアントにて収集される性能メトリクスに少なくとも部分的に基づいて、格納ボリュームに対するスケーリングイベントを検出し得る。様々な実施形態において、ファイルシステムマネジャー３１０は、バックアップ管理モジュール３１６を実行し得る。バックアップ管理モジュール３６８は、ファイルシステムのスナップショットを、前の図２におけるバックアップ格納サービス２４０が提供し得る等のバックアップ格納へ差し向ける、または送信し得る。
【００２９】
図４は、いくつかの実施形態による、ブロックベース格納サービスの様々なコンポーネントを例示するブロック図である。図８に後述されるコンピューティングシステム１０００等の１つまたは複数のコンピューティングノードまたはシステムは、ブロックベースサービス４００の様々なコンポーネントを実行し得る。格納クライアント（複数可）４５０は、ネットワーク４５２（前述のネットワーク２６０と同様）を介して、または前述のプロバイダネットワーク内の内部ネットワーク経路（コンピュートインスタンス２３２がブロックベース格納サービス４００と通信することを可能にし得る）を介して、ブロックベース格納サービス４００にアクセスし得る。
【００３０】
様々な実施形態において、ブロックベース格納サービス４００は、フロントエンドモジュール４１２を実行し得る。フロントエンドモジュール４１２は、サービス要求を受信し、要求を転送する、またはリソース管理モジュール４１４、動的ボリュームスケーリングモジュール４１８、またはリソースモニター４１６からの適切な応答を伝えるように構成され得る。様々な実施形態において、フロントモジュール４１０は、ブロックベース格納サービス４００に対する要求を、サービス４００のプログラマチックインターフェース（ＡＰＩ）に従って変換し、及び／またはプログラマチックインターフェースを使用する格納クライアント（複数可）４５０におけるウェブサイトまたはコマンドラインインターフェースを介して実行されるユーザインターフェース等、別のインターフェースを介して受信される要求を受信、処理、開示するように構成され得る。
【００３１】
様々な実施形態において、ブロックベース格納サービス４００は、リソース管理モジュール４１４を実行し得る。リソース管理モジュール４１４は、クライアント４５０用格納ボリュームを供給し、格納ボリュームのスケーリングポリシーを受け入れるように構成され得る。例えば、リソースマネジャー４１４は、ブロックベース格納サービス４００における特定アカウント（及び関連格納ボリューム）を、特定クライアント４５０に関連付ける情報を格納し得る。例えば、スケーリングイベントの結果、異なる格納ボリューム費用が決定され得る。格納ボリュームに関連付けられたアカウント情報により、格納ボリュームの計量及び課金が、正しいアカウントに追加されることが可能になり得る。リソース管理モジュール４１４は、いくつかの実施形態において、クライアント４５０が格納ボリュームにアクセスするためのアクセス認証情報または他の情報を格納／管理し得る。いくつかの実施形態において、リソース管理モジュール４１４は、複数の格納クライアント４５０が同一の格納ボリュームにアクセス可能なように、様々なロックまたは同期スキームを実行し得る。リソース管理モジュール４１２は、格納ノード４２０上のボリューム格納４２６の部分等、格納リソースを供給するように構成され得る。リソース管理モジュール４１４はまた、特定クライアント４５０用の格納ボリュームにアクセスするために、クライアント４５０またはインスタンスに対し、アクセス認証情報及び他の識別情報を提供し得る。
【００３２】
様々な実施形態において、ブロックベース格納サービス４００は、リソースモニター４１６を実行し得る。リソースモニター４１６は、性能メトリクスを受信し、及び／または格納ノード（複数可）４２０に対しヘルスチェックを実行し得る。リソースモニター４１６は、当データを分析、集約、及び／またはリソースマネジャー４１４（様々なリソース管理動作を実行するため）及び動的ボリュームスケーリングモジュール４１８に当データを提供し得る。例えば、リソース管理モジュール４１４は、リソースモニター４１６により収集される性能メトリクス及び他の情報に基づいて、スケーリング動作に関わる新たな格納の供給または取得／格納の削除のために、配置決定を行うように構成され得る。少なくともいくつかの実施形態において、リソースモニター４１６は、統計に基づく予測を提供し、これにより格納ノードは、格納ボリュームのスケーリング履歴に基づいて格納ボリュームに対するより多くのデータを受け入れることが可能になる。
【００３３】
様々な実施形態において、ブロックベース格納サービスは、動的ボリュームスケーリングモジュール４１８を実行して、格納ボリュームを動的にスケーリングし得る。下の図５、６に関してより詳細に論述されるように、動的ボリュームスケーリングモジュール４１８は、特定の格納ボリュームに対する格納スケーリングイベントを検出し、スケーリングイベントに従って格納リソースを変更し、格納クライアントに対しスケーリングイベントに関する開示を提供し得る。少なくともいくつかの実施形態において、動的ボリュームスケーリングモジュールは、様々なブロックベース格納サービス性能基準に関して引き起こされたスケーリングイベントを検出し得る。例えば、ある格納ノード（複数可）４２０は、他の格納ノードより大きい割合のネットワークトラフィックを受信する「ホットスポット」として特定され得る。ホットスポットへのネットワークトラフィックを軽減するために、他の格納ノードに対しあるボリューム格納を再分配するようボリュームスケーリングイベントが引き起こされ得る。動的ボリュームスケーリングモジュール４１８はまた、スケーリングされる格納ボリュームに対する様々な格納メンテナンス動作の実行を命令し得る。例えば、格納ノード（複数可）４２０におけるボリューム格納４２６内の未使用格納スペースを低減するために、デフラグメンテーション動作が行われ得る。様々な他の圧縮、再利用、及び／または再編制技術は、動的ボリュームスケーリングモジュール４１８（または格納ノード（複数可）４２２における制御プレーン４１０または入出力マネジャー４２２の他のコンポーネント）から命令され得る。
【００３４】
ブロックベース格納サービス４００は、複数の格納ノード（複数可）４２０を実行して、ブロックベース格納サービス４００にて保持される格納ボリュームの持続的格納を提供し得る。格納ノード４２０は、格納サーバまたは他のコンピューティングシステム（例えば図８に関して後述されるコンピューティングシステム１０００）等、１つまたは複数のコンピューティングシステムまたはデバイスであり得る。各格納ノード４２０は、ボリューム格納４２６における格納ボリュームのそれぞれのレプリカまたは部分を保持し得る。格納ノード４２０はまた、マルチテナント格納を提供し得る。例えば、いくつかの実施形態において、格納ノードは、複数格納クライアント４５０のために、ボリューム格納４２６内に格納ボリュームを保持し得る。ボリューム格納４２６は、それぞれの格納ノード４２０を実施するコンピューティングシステムまたはデバイスに直接取り付け可能な１つまたは複数のブロックベース格納デバイス（例えばハードディスクドライブ、ソリッドステートドライブ等）に、それぞれのデータボリュームを存続させ得る。様々な実施形態において、要求される性能特徴（例えばＳＳＤ上の高供給格納ボリューム）を提供するために、いくつかの格納ボリュームが対応格納デバイスを有する格納ノード上で実施され得るように、格納ノードは異なる種類の構成の格納デバイスを有し得る。
【００３５】
ブロックベース格納サービス４００は、様々な異なる方法で格納ボリュームを管理及び維持し得る。格納ボリュームの耐久性ステートを確立するデータボリュームの同一レプリカを保持する２つ以上の格納ノードの中で、いくつかの格納ボリュームに対し、異なる耐久性スキームが実施され得る。例えば、格納ボリュームの単一障害点を削除すること等、格納ボリュームの耐久性を向上するために、異なる種類のミラーリング及び／または複製技術が実施され得る（例えばＲＡＩＤ  １）。データボリュームへのアクセスを提供するために、格納ノード４２０はそれから、格納ボリュームのレプリカを保持する２つ以上の格納ノード間で、書き込み要求等の入出力要求を調整し得る。例えば、所定の格納ボリュームに対し、１つの格納ノードがマスタ格納ノードとして機能し得る。マスタ格納ノードは、様々な実施形態において、格納ボリュームのクライアントからの要求（例えば入出力要求）の受信及び処理を行い得る。従って、マスタ格納ノードはそれから、格納ボリュームに対する書き込み要求等の入出力要求、またはその他の変更もしくは修正の複製を、スレーブ格納ノードとして機能する１つまたは複数の他の格納ノードに対し調整し得る。従って、格納ボリュームに対する書き込み要求が格納ノードにて受信されると、格納ノードは、書き込み要求を別の格納ノードに転送し、書き込みを完了する前に、別の格納ノードが書き込み要求を完全に受信したことを認めるまで待機し得る。マスタ格納ノードは、スナップショット動作または他の入出力動作（例えば読み出し要求対応）のような、格納ボリュームに対する他の動作を命令し得る。いくつかの実施形態において、マスタ及びスレーブ格納ノードの役割は、データボリュームごとに割り当てられ得ることに留意されたい。
【００３６】
格納ノード４２０は、入出力マネジャー４２２等、それぞれの入出力マネジャーを実行し得る。入出力マネジャー４２２は、特定の格納ノードにて保持されるデータボリュームに対する入出力要求に対応し得る。従って、入出力マネジャー４２２は、例えば格納ノードにおける格納ボリュームに対する書き込み要求を処理及び対応し得る。入出力マネジャー４２２は、ブロックベース格納サービスアプリケーションプログラミングインターフェース（ＡＰＩ）及び／またはインターネット小型コンピュータシステムインターフェース（ｉＳＣＳＩ）等の他の通信プロトコルに従って、入出力要求を処理するように構成され得る。いくつかの実施形態において、入出力マネジャー３４０は、格納ボリューム（または格納ノード４２０にて従って保持される部分）に関するファイルシステムマッピング情報を実施し得る。様々な実施形態において、ファイルシステム入出力は、ファイルシステムマッピング情報を使用して、利用され得る。
【００３７】
図４に関する前の説明は、例示目的のみで提供され、説明される機能を実行する様々なコンポーネントの数、配置、または構成に関して限定する意図はないことに留意されたい。
【００３８】
図５は、いくつかの実施形態による、格納クライアントと、格納ボリューム動的スケーリングを実行するブロックベース格納サービスとの間の対話を例示するブロック図である。格納クライアント５１０（または格納クライアント５１０のために作動する別のクライアントデバイス）は、格納ボリュームに対する要求５６１を、格納サービスインターフェース５８０（例えばＡＰＩまたはＧＵＩ）を介して格納サービス制御プレーン５２０に送信し得る。要求は、格納ボリュームの初期サイズを含む様々なパラメータ、並びに作成時に格納ボリュームのフォーマットを行うファイルシステム構成を含み得る。様々な実施形態において、要求５６１は、格納サービスインターフェース５８０を介して、格納ボリュームのスケーリングポリシーを指定し得る。スケーリングポリシーを指定する個別の要求、並びにスケーリングポリシーを更新、置き換え、及び／または削除する様々な要求（例示せず）が行われ得ることに留意されたい。格納制御プレーン５２０は、格納ノード（複数可）５３０等の１つまたは複数の格納リソースにわたり格納ボリュームの供給５６３を行い得る。一度供給されると、格納サービス制御プレーン５２０は、格納サービスインターフェース５８０を介して格納クライアント５１０に対し、格納ボリュームエンドポイント５６５を提供し得る。例えば、ｉＳＣＳＩ対象が、格納クライアント５１０に提供され得る。
【００３９】
いくつかの実施形態において、格納クライアント５１０はそれから、格納ノード（複数可）５３０にて保持される格納ボリュームに対し、ファイルシステム入出力を開始し得る。ファイルシステム入出力は、ｉＳＣＳＩ等のネットワークベース格納プロトコル５８２に従って実行され得る。性能メトリクス５６９並びに格納ボリュームの監視に関連した他の情報が、格納ノード（複数可）５３０から格納サービス制御プレーン５２０へ報告され得る。いくつかの実施形態においては、格納クライアント５１０が、性能メトリクス５８９（これらの一部は格納サービスでは収集不可能であり得る）を、スケーリングイベントの検出に使用されるように、格納サービス制御プレーン５２０へ送信し得る。格納ボリュームに対しスケーリングイベントが検出されると、格納サービス制御プレーン５２０は、格納ボリュームをスケーリングするための持続的格納の修正５７１を行い得る。例えば、様々な複写、移動、割り当て、削除、またはデフラグ命令が、格納ノード（複数可）５３０へ送信され得る。格納サービス制御プレーン５２０はまた、格納ボリュームに対するスケーリングイベントの開示５７３を、格納サービスインターフェース５８０を介して格納クライアント５１０に対し提供し得る。少なくともいくつかの実施形態において、格納クライアント５１０は、格納サービスインターフェース５８０を介して、スケーリングイベント応答５７５を提供し、これは、格納ボリューム５７１をスケーリングするための持続的格納の修正を調整及び／または実行するために、使用され得る。従って、図５に例示される様々なメッセージは、異なる時点に送信及び／または受信され得るため、前の説明に限定する意図はないことに留意されたい。一度ファイルシステムが更新されると、格納クライアント５１０は、スケーリングされた格納ボリュームに対し、更新されたファイルシステム入出力５７７を実行し得る。少なくともいくつかの実施形態において、格納ボリュームがオンラインで、ファイルシステム入出力を引き続き受け付けられるように、格納ボリュームのスケーリングは実行されることに留意されたい。
【００４０】
様々な実施形態において、上記の図１〜５及び下記の図６〜７で説明されるネットワークベースまたはプログラマチックインターフェース（ＡＰＩ等）の呼び出し及び応答は、セキュアプロキシ接続（例えばサービス及び／またはプロバイダネットワークへのゲートウェイ制御プレーンにより管理されるもの）上で実行され得る、または公衆ネットワーク上、あるいは仮想私設ネットワーク（ＶＰＮ）接続等の私設チャネル上で実行され得ることに留意されたい。本明細書において説明されるシステムのコンポーネントに対する及び／またはコンポーネント間のこれら及び他のＡＰＩは、簡易オブジェクトアクセスプロトコル（ＳＯＡＰ）技術及びレプレゼンテーショナルステートトランスファ（ＲＥＳＴ）技術を含むがこれに限定されない異なる技術に従って実行され得る。例えば、これらのＡＰＩは、必ずしもではないが、ＳＯＡＰ  ＡＰＩまたはＲＥＳＴｆｕｌ  ＡＰＩとして実行され得る。ＳＯＡＰは、ネットワークベースサービスに即して情報を交換するプロトコルである。ＲＥＳＴは、分散ハイパーメディアシステムのアーキテクチャ様式である。ＲＥＳＴｆｕｌ  ＡＰＩ（ＲＥＳＴｆｕｌネットワークベースサービスとも称され得る）は、ＨＴＴＰ及びＲＥＳＴ技術を使用して実行されるネットワークベースサービスＡＰＩである。本明細書において説明されるＡＰＩは、いくつかの実施形態において、ネットワークベースデータストア、遠隔持続的ログを実施するクライアントデバイス、または他のシステム、サービス、コンポーネント、もしくはデバイスとの統合に対応するために、Ｃ、Ｃ＋＋、Ｊａｖａ、Ｃ＃、及びＰｅｒｌを含むがこれに限定されない様々な言語のクライアントライブラリでラップされ得る。
【００４１】
図２〜５に関して前述される格納クライアントファイルシステム用格納ボリュームの動的スケーリングの様々な実施形態は、様々な方法で動的スケーリングを実行し得る。さらに、格納クライアントファイルシステム用格納ボリュームの動的スケーリングは、このようなシステムに限定されない。例示的ブロック格納サービスに加えて、様々な他の種類の格納システムが、動的スケーリングを実行し得る。さらに、ファイルシステム自体は、種類、スキーム、または実施態様において幅広く異なり得る。タブレットコンピュータ、ラップトップ、携帯電話、またはパーソナルデジタルアシスタント等の携帯コンピューティングデバイスを含む数多くの異なるデバイスもまた、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行し得る。図６は、いくつかの実施形態による、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行する方法及び技術を例示する高次フローチャートである。システム及び／またはデバイスの異なる組み合わせが、後述の様々な技術を実施し得る。
【００４２】
６１０に示されるように、様々な実施形態において、ネットワークベースデータストアの一環として実施される格納に、格納ボリュームは供給され得る。ネットワークベースデータストアは、ブロックベースデータストア、または格納クライアントにて実施されるファイルシステムが利用し得る他のデータストアであり得る。格納クライアントは、格納クライアントにて実施されるファイルシステムのための格納として機能するようネットワークベースデータストア内に格納ボリュームを装備するように構成され得る任意のシステム、プログラム、またはデバイスであり得る。少なくともいくつかの実施形態において、ネットワークベース格納プロトコル（例えばインターネット小型コンピュータシリアルインターフェース（ｉＳＣＳＩ））は、格納クライアントとネットワークベースデータストア内の格納ボリュームとの間にまたがり通信を行うために使用され得る。複数の格納クライアントは、いくつかの実施形態において、同一の格納ボリュームにアクセスし、よってそれぞれが後述の技術を実行し得る。
【００４３】
少なくともいくつかの実施形態において、スケーリングポリシーは、格納ボリュームの供給要求と共に含まれ得る。例えば、ＡＰＩまたはＧＵＩ等のネットワークベースインターフェースは、供給要求の提出、及び格納ボリュームに対するスケーリングポリシーの定義を行うために使用され得る。スケーリングポリシーは、１つまたは複数の条件を含み得る。例えば、スケーリングポリシーは、異なる閾値またはアラーム、並びにそれらが満たされたまたは引き起こされた場合の結果的スケーリング行動を定義し得る。例えば、格納ボリュームにおける可用格納容量は、超えられると格納ボリューム内の格納容量を適宜拡大または縮小させる下限及び／または上限閾値を有し得る。別の実施例において、格納ボリュームの部分（または全て）を格納する１つまたは複数の格納デバイスにおける毎秒入出力動作数（ＩＯＰ）等の格納ボリュームの性能特徴も同様である。スケーリングポリシーは、引き起こされたアラームに応じて取られる行動を定義し得る。例えば、スケーリングポリシーは、格納ボリュームが拡大または縮小され得る割合または量を定義し得る。いくつかの実施形態において、スケーリングポリシーは、格納ボリュームの部分（または全て）を保持するレプリカまたはノードの数を示して、ボリュームが再分配されるべきか否かを示し得る。いくつかの実施形態において、ネットワークベースデータストアが格納サービスである場合、スケーリングポリシーは、費用閾値に関して定義され得る。いくつかの実施形態において、スケーリングポリシーは、様々な情報を複数の異なる要求欄及び／またはメッセージフラグに入力すること等により、ＡＰＩを使用してネットワークベースデータストアに対し記述され提供され得る。スケーリングポリシーは、様々な人間に解読可能及び／またはスクリプト技術（例えばＸＭＬまたはＪＳＯＮ）を使用して定義され得る。様々な実施形態において、スケーリングポリシーは、修正、置き換え、及び／または削除され得る。スケーリングポリシーは、少なくともいくつかの実施形態において、クライアント及び／またはネットワークベースプロバイダにより、修正または削除され得る。
【００４４】
様々な実施形態において、６２０に示されるように、格納ボリューム（またはネットワークベースデータストアにわたる監視の場合は複数の格納ボリューム）が監視され得る。様々な性能メトリクス、トラフィックメトリクス、及び／またはスケーリングイベントが起こったか否かを示すその他の情報が、収集及び／または分析され得る。制御プレーンまたは他の監視コンポーネントは、いくつかの実施形態において、格納ボリュームを保持する様々な格納ノードまたはコンポーネントからのレポートを受信し得る、あるいは格納ボリューム（例えばロードバランサまたは他のトラフィックコントローラ）と対話し得る。いくつかの実施形態において、格納クライアントはまた、様々な性能メトリクスを提供し得る。様々な実施形態において、６３０からの肯定的出向により示されるように、格納ボリュームに対する指定されたスケーリングポリシーに従って、スケーリングイベントが検出され得る。スケーリングイベントは、格納ボリュームに対するスケーリングポリシーの条件の不成立／成立により引き起こされ、当該条件の不成立／成立は、性能メトリクスの分析に基づいて判別され得る。様々な実施形態において、引き起こされるスケーリングイベントは、スケーリングポリシー内で定義される対応応答行動を示し得る。
【００４５】
いくつかの実施形態において、ネットワークベースデータストアポリシー、配置スキーム、または他のサービス管理動作もしくは制約は、格納ボリュームに対し指定されたデフォルトスケーリングポリシーとしての役割を果たし得る。例えば、特定の格納ノード（複数の異なる格納ボリュームの部分を提供するマルチテナントであり得る）上で可用格納容量に場合、スケーリングイベントが検出され得る。特定の格納ノード上の格納ボリュームのうちの１つまたは複数に関して、スケーリングイベントは、１つまたは複数の新たな格納場所に対し、格納ボリュームの再分配を引き起こし得る（これにより格納ボリュームの修正された格納場所に基づいたファイルシステム変更がもたらされ得る）。同様に、熱管理、トラフィック制御、及び／または他の格納システム関連は、スケーリングイベントを引き起こして、格納ボリュームに対するファイルシステム入出力要求に対応する作業負荷を再分配（または統合）し得る。
【００４６】
格納ボリュームに対しスケーリングイベントが検出されない場合には、６２０からの否定的出向により示されるように、格納ボリュームの監視は継続され得る。格納ボリュームに対しスケーリングイベントが検出された場合には、６３０からの肯定的出向により示されるように、格納ボリュームは動的にスケーリングされ得る。６４０に示されるように、様々な実施形態において、スケーリングポリシーに従って格納ボリュームを動的にスケーリングするように、格納ボリュームを保持する格納は修正され得る。従って、現在の格納リソース及びデバイス、または新たな格納リソースまたはデバイス（例えばディスクドライブまたは格納ノード）の部分が、格納ボリュームの保持に追加され得る、あるいは格納ボリュームの保持から削除され得る。少なくともいくつかの実施形態において、持続的格納の修正は、格納クライアントから受信した情報に応じて実行され得る。例えば、図７に関してさらに詳しく後述されるように、ファイルシステムは、格納ボリュームをより小さいサイズにスケーリングするために、格納ボリュームからどの格納場所を取り除くかを決定し得る。前記のように、持続的格納の修正は、例えば格納ボリュームに対し格納容量及び／または格納帯域（例えばＩＯＰ）が拡大または縮小され得る割合を制限し得るスケーリングポリシーに従って行われ得る。
【００４７】
６５０に示されるように、格納ボリュームに対して検出されたスケーリングイベントは、様々な実施形態において、格納クライアントに対し開示され得る。スケーリングされた格納ボリュームを使用するよう格納クライアントにおけるファイルシステムが更新されるように、開示は提供され得る。例えば、いくつかの実施形態において、開示は、格納ボリュームにて拡大または縮小される格納量（例えばデータブロック／ページの数）を提供する等により、ファイルシステムに対し格納クライアントにてサイズ変更動作を行うための情報またはパラメータを提供し得る。開示は、格納クライアントにて作動しているオペレーティングシステムまたはネットワークベースデータストアエージェントが、ファイルシステムの更新を実行し得るスクリプトまたは実行ファイルを提供し得る。いくつかの実施形態において、スケーリングイベントの開示は、格納ボリュームに対する変更に関する簡潔通知を、格納クライアントに提供し得る。ネットワークベースデータストアが、格納ボリュームに対するスケーリングイベントの結果としての新たな／再構成された格納場所を、スケーリングイベント前に格納クライアントに提示されていた格納場所とリンクするようマッピング情報を保持し得るため、ファイルシステムに対する更新は単純に、拡大または縮小された格納を説明することであり得る（ファイルのデフラグ等、サイズ変更動作の負荷を、格納クライアントにおけるファイルシステムの代わりに、ネットワークベースデータストアに対し転嫁する）。
【００４８】
格納クライアントにて実行されるファイルシステムは、前記のように、ネットワークベースデータストア内のスケーリングされた格納ボリュームに対し様々な方法で応答し得る。例えば、いくつかのファイルシステムは、スケーリングされた格納ノードのサイズの開示を格納クライアントに提供するのに十分であり得るようなオンラインサイズ変更機能を実行し、これによりファイルシステムは、ネットワークベースデータストアとのさらなる補助または対話なしに、開示されたサイズに従って更新されることが可能となる。しかしながら、いくつかのファイルシステムは、格納クライアントにおけるファイルシステムを更新し、及び／またはネットワークベースデータストアにおける格納ボリュームを再スケーリングするために、制御プレーン（または格納ボリューム再スケーリングを命令する他のネットワークベースデータストアコンポーネント）と、対話、協働、及び／または連動し得る。図７は、いくつかの実施形態による、ファイルシステム用格納ボリュームのスケーリングイベントに従ってファイルシステムを更新する方法及び技術を例示する高次フローチャートである。
【００４９】
格納ボリュームを拡大または縮小させるスケーリングイベント等、異なる種類のスケーリングイベントが、様々な実施形態において、格納クライアントにて別様に対応され得る。７１０に示されるように、いくつかの実施形態において、格納クライアントにて実行されるファイルシステム用にネットワークベースデータストアにて実行される格納ボリュームを拡大させるスケーリングイベントの開示が、格納クライアントにて受信され得る。様々な実施形態において、開示は、拡大量を提供し得る。例えば、開示は、スケーリングされた格納ボリュームに割り当てられた格納スペースの追加データブロックまたはページの数を提供し得る。いくつかの実施形態において、格納ボリュームに割り当てられた特定論理ブロック等のマッピング情報が開示され得る、あるいはこのような決定は格納クライアントにおけるファイルシステムに任され得る／確保され得る。
【００５０】
７２０に示されるように、様々な実施形態において、ファイルシステムは、開示されたスケーリングイベントに従って、格納ボリュームに対する追加格納容量を含むように更新され得る。例えば、ファイルシステムは、追加格納容量を、追加格納スペースを利用し得る格納クライアントにおける他のプログラム、アプリケーション、コンポーネント、またはデバイスによりアクセス可能にするように、ファイルシステムメタデータ及び／または他のファイルシステム構造を更新する１つまたは複数の構成動作を実行し得る。索引構造、スーパーブロック、及び／またはｉノードは、スケーリングされた格納ボリュームを利用するようファイルシステムを更新する際に修正され得る多数の異なるファイルシステム構造のうちの一部である。７３０に示されるように、追加格納容量を含むように一度ファイルシステムが更新されると、その後、後続のファイルシステム入出力（Ｉ／Ｏ）に関してはスケーリングされた格納ボリュームにアクセスするように、更新されたファイルシステムが利用され得る。例えば、ファイルシステムを利用する格納クライアントにおけるプログラム、アプリケーション、コンポーネント、またはデバイスは今度、追加ファイルの格納（または既存ファイルへの追加）を行うために、追加格納容量を利用し得る。
【００５１】
いくつかの種類のスケーリングイベントに関して、ファイルシステムは、ネットワークベースデータストアにおける格納ボリュームをスケーリングする上で、より大きな役割を果たし得る。例えば、７３０に示されるように、いくつかの実施形態において、格納クライアントにて実行されるファイルシステム用にネットワークベースデータストアにて実行される格納ボリュームを縮小させるスケーリングイベントの開示が、格納クライアントにて受信され得る。開示は、格納ボリュームの格納容量における削減を特定し得る（例えばデータブロックまたはページの数）。
【００５２】
様々な実施形態において、７４０に示されるように、スケーリングイベントに従って格納ボリュームを縮小させるために、格納ボリュームに割り当てられた格納スペースを回収するようにファイルシステムは更新され得る。例えば、格納スペースを利用し得る格納クライアントにおける他のプログラム、アプリケーション、コンポーネント、またはデバイスによりアクセス可能な格納容量を削減するように、ファイルシステムメタデータ及び／または他のファイルシステム構造を更新する１つまたは複数のサイズ変更動作が実行され得る。索引構造、スーパーブロック、及び／またはｉノードは、スケーリングされた格納ボリュームを利用するようファイルシステムを更新する際に修正され得る多数の異なるファイルシステム構造のうちの一部である。少なくともいくつかの実施形態において、ファイルシステムを更新する一環として、縮小された格納ボリュームのファイルシステムの性能を向上させるために、様々な実施形態において、回収する特定の格納場所が同定され得る。例えば、残りの格納場所におけるデータを緊密にまとめるために、ある格納場所は回収対象として選ばれ得る。格納クライアントにおけるファイルシステムは、どの格納場所を回収したほうがより有益か、ネットワークベースデータストアより良く把握し得る（格納クライアントにおけるファイルシステムの実施態様に依存し得ない）。様々な実施形態において、７５０に示されるように、ネットワークベースデータストアにおける持続的格納内で回収する格納スペースを特定する応答が、格納ボリュームの制御プレーンに送信され得る。少なくともいくつかの実施形態において、格納ボリュームの持続的格納は、回収する特定格納スペースを同定する（例えば特定論理データブロックまたはページを同定する）応答が受信されるまで、修正され得ない。
【００５３】
７３０に示されるように、格納ボリューム内の回収された格納スペースを取り除くように一度ファイルシステムが更新されると、その後、後続のファイルシステム入出力（Ｉ／Ｏ）に関してはスケーリングされた格納ボリュームにアクセスするように、更新されたファイルシステムが利用され得る。例えば、ファイルシステムを利用する格納クライアントにおけるプログラム、アプリケーション、コンポーネント、またはデバイスは、追加ファイルの格納（または既存ファイルへの追加）を行う際、回収された格納スペースの使用、または当該格納スペースの検討はもはや行い得ない。
【００５４】
構成要素７３０〜７５０に関する格納ボリュームを縮小させる前述の実施例は、格納クライアントにおけるファイルシステムとネットワークベースデータストアとの間で格納スペースの回収を調整することを伴うが、少なくともいくつかの実施形態において、ネットワークベースデータストアは、ファイルシステム入出力要求を処理するためにマッピング情報を保持し得る。そのため、ネットワークベースデータストアは、格納クライアントにおいて格納スペースの選択またはデフラグメンテーションを行うことなく、どの格納スペースを回収するか（すなわちデフラグメンテーションを行うか）選択可能である。例えば、ネットワークベースデータストアから格納クライアントにおけるファイルシステムに提示される論理ブロック数は、格納ボリュームの持続的格納における対応論理ブロック数とは異なり得る。マッピング情報により、ネットワークベースデータストアの制御プレーンまたは他のコンポーネントは、格納クライアントに作業負荷を課さずに、回収する（すなわちデフラグする）格納スペースを最適に選択することが可能であり得る。代わりに、ネットワークベースデータストアにて受信される格納クライアントからのファイルシステム入出力要求は、要求を処理するために格納ボリューム用に保持されたマッピング情報に従って、変換され得る。
【００５５】
本明細書において説明される方法は、様々な実施形態において、ハードウェア及びソフトウェアの任意の組み合わせにより実施され得る。例えば、一実施形態において、方法は、プロセッサに接続されたコンピュータ可読格納媒体上に格納されたプログラム命令を実行する１つまたは複数のプロセッサを含むコンピュータシステム（例えば図８のコンピュータシステム）により実施され得る。プログラム命令は、本明細書において説明される機能（例えば本明細書において説明されるデータベースサービス／システム及び／または格納サービス／システムを実施する様々なサーバ及び他のコンポーネントの機能）を実行するように構成され得る。本明細書において図示及び説明される様々な方法は、方法の例示的実施形態を表す。任意の方法の順序は変更され、そして様々な要素が追加、並替、結合、省略、変更等され得る。
【００５６】
前述の内容は、以下の条項を考慮することでより理解され得る。
１．複数の格納クライアントのために１つまたは複数のそれぞれの格納ボリュームを保持するブロックベース格納サービスを実施する複数のコンピュートノードと、
前記複数の格納ボリュームを保持するために格納を提供する複数の格納ノードと、
前記ブロックベース格納サービスのための制御プレーンを実行する前記複数のコンピュートノードのうちの少なくともいくつかと、
を備えるシステムであって、前記制御プレーンは、
前記複数の格納ボリュームを監視し、
前記複数の格納ボリュームの前記監視に少なくとも部分的に基づいて、前記格納ボリュームに対する指定されたスケーリングポリシーに従って、前記複数の格納ボリュームのうちの格納ボリュームに対するスケーリングイベントを検出し、前記格納ボリュームは、前記複数の格納クライアントのうちの格納クライアントにて装備され、かつファイルシステム用に構成され、
前記スケーリングイベントの前記検出に応じて、
前記スケーリングポリシーに従って、前記格納クライアント用の前記格納ボリュームを動的にスケーリングするために、前記格納ボリュームに割り当てられた前記格納を修正し、
前記修正された格納内の前記スケーリングされた格納ボリュームを使用するよう前記格納クライアントにおける前記ファイルシステムが更新されるように、前記格納クライアントに対し、前記格納ボリュームの前記スケーリングイベントを開示する、
ように構成される、前記システム。
【００５７】
２．前記格納ボリュームに対し前記指定されたスケーリングポリシーは、前記格納クライアントから前記ブロックベース格納サービスのインターフェースを介して受信される、条項１に記載のシステム。
【００５８】
３．前記格納ボリュームに対する前記スケーリングイベントの前記開示を受信し、
前記スケーリングイベントに従って前記ファイルシステムを更新し、
前記更新されたファイルシステムを利用して、後続のファイルシステム入出力（Ｉ／Ｏ）に関して前記スケーリングされた格納ボリュームにアクセスする、
ように構成された前記格納クライアントを
さらに備える条項１に記載のシステム。
【００５９】
４．前記ファイルシステムのために１つまたは複数の性能メトリクスを収集し、
前記１つまたは複数の性能メトリクスを前記制御プレーンに送信する、
ように構成された前記格納クライアントを
さらに備えるシステムであって、
前記スケーリングイベントの前記検出はさらに、前記格納クライアントにて収集された前記１つまたは複数の性能メトリクスに基づく、
条項１に記載のシステム。
【００６０】
５．前記ブロックベース格納サービスは、プロバイダネットワークの一環として実施される複数のネットワークベースサービスのうちの１つであり、前記格納クライアントは、前記プロバイダネットワークにおけるその他のネットワークベースサービスのうちの１つの一環として実施される、条項１に記載のシステム。
【００６１】
６．１つまたは複数のコンピューティングデバイスにより、
格納クライアント用ネットワークベースデータストアの一環として実施される格納に格納ボリュームを保持することであって、前記格納ボリュームは前記格納クライアントにて装備され、かつファイルシステムのために構成される、前記格納クライアント用の前記ネットワークベースデータストアの一環として実施される、前記格納に前記格納ボリュームを保持することと、
前記格納ボリュームに対し指定されたスケーリングポリシーに従って、前記格納ボリュームのスケーリングイベントを検出することと、
前記格納ボリュームの前記スケーリングイベントの検出に応じて、
前記スケーリングポリシーに従って、前記格納クライアント用の前記格納ボリュームを動的にスケーリングするために、前記格納ボリュームを保持する前記格納を修正することと、
前記修正された格納内の前記スケーリングされた格納ボリュームを使用するよう前記格納クライアントにおける前記ファイルシステムが更新されるように、前記格納クライアントに対し、前記格納ボリュームの前記スケーリングイベントを開示することと、
を実行することを含む方法。
【００６２】
７．前記格納ボリュームに対し前記指定されたスケーリングポリシーは、前記格納クライアントから前記ネットワークベースデータストアのインターフェースを介して受信される、条項６に記載の方法。
【００６３】
８．前記ネットワークベースデータストアは、前記格納クライアントを含む複数の異なる格納クライアントのために、前記格納ボリュームを含む複数の格納ボリュームを保持するマルチテナントのブロックベース格納サービスであり、
前記格納ボリュームを保持する前記格納は、前記複数の格納ボリュームを保持する格納デバイスの集合の一部であり、前記格納ボリュームの前記スケーリングイベントを検出することは、前記複数の格納ボリュームを保持する格納デバイスの前記集合を監視することに少なくとも部分的に基づく、条項６に記載の方法。
【００６４】
９．前記スケーリングイベントは前記格納ボリュームを拡大させ、前記格納ボリュームを保持する前記格納を修正することは、前記格納ボリュームに追加格納スペースを割り当てることを含む、条項６に記載の方法。
【００６５】
１０．前記格納ボリュームに対する前記スケーリングイベントの前記開示を、前記格納クライアントにて受信することと、
前記スケーリングイベントに従って、前記格納ボリュームに対する追加格納容量を含むように、前記ファイルシステムを前記格納クライアントにて更新することと、
前記更新されたファイルシステムを前記格納クライアントにて利用して、後続のファイルシステム入出力（Ｉ／Ｏ）に関して前記スケーリングされた格納ボリュームにアクセスすることと、
をさらに含む条項９に記載の方法。
【００６６】
１１．前記保持、前記検出、前記修正、及び前記開示は、前記ネットワークベースデータストアの前記制御プレーンにより実行され、
前記スケーリングイベントは前記格納ボリュームを縮小させ、
前記方法はさらに、
前記格納ボリュームに対する前記スケーリングイベントの前記開示を、前記格納クライアントにて受信することと、
前記スケーリングイベントに従って、前記格納ボリュームに割り当てられた格納スペースを回収するように、前記ファイルシステムを前記格納クライアントにて更新することと、
前記格納クライアントから、前記ネットワークベースデータストアの前記制御プレーンに対し、前記格納内で回収する前記格納スペースを特定するスケーリングイベント応答を送信することと、
前記更新されたファイルシステムを前記格納クライアントにて利用して、後続のファイルシステム入出力（Ｉ／Ｏ）に関して前記スケーリングされた格納ボリュームにアクセスすることと、
を含み、
前記格納ボリュームを保持する前記格納を修正することは、前記格納の前記特定された格納スペースを回収することを含む、
条項６に記載の方法。
【００６７】
１２．前記検出、前記修正、及び前記開示は、前記格納ボリュームを解除することなく実行される、条項６に記載の方法。
【００６８】
１３．前記ネットワークベースデータストアは、マルチテナントのブロックベース格納サービスであり、前記格納クライアントは、前記ブロックベース格納サービスの複数の格納クライアントのうちの１つである、条項６に記載の方法。
【００６９】
１４．前記ブロックベース格納サービスは、プロバイダネットワークの一環として実施される複数のネットワークベースサービスのうちの１つであり、前記複数の格納クライアントのうちの少なくともその他の１つは、前記プロバイダネットワークにおけるその他のネットワークベースサービスのうちの１つの一環として実施され、前記格納クライアントは前記プロバイダネットワークの外部で実施される、条項１３に記載の方法。
【００７０】
１５．プログラム命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記プログラム命令は１つまたは複数のコンピューティングデバイスにより実行されると、前記１つまたは複数のコンピューティングデバイスに、
格納クライアント用ネットワークベースデータストアの一環として実施されるブロックベース格納に保持される格納ボリュームを監視することであって、前記格納ボリュームは前記格納クライアントにて装備され、かつファイルシステムのために構成される、前記格納クライアント用の前記ネットワークベースデータストアの一環として実施される前記ブロックベース格納に保持される前記格納ボリュームを監視することと、
前記監視に少なくとも部分的に基づいて、前記格納ボリュームに対し指定されたスケーリングポリシーに従って、前記格納ボリュームのスケーリングイベントを検出することと、
前記格納ボリュームの前記スケーリングイベントの検出に応じて、
前記スケーリングポリシーに従って、前記格納クライアント用の前記格納ボリュームを動的にスケーリングするために、前記格納ボリュームを保持する前記ブロックベース格納を修正することと、
前記修正されたブロックベース格納内の前記スケーリングされた格納ボリュームを使用するよう前記格納クライアントにおける前記ファイルシステムが更新されるように、前記格納クライアントに対し、前記格納ボリュームの前記スケーリングイベントを開示することと、
を実行させる、前記非一時的コンピュータ可読記憶媒体。
【００７１】
１６．前記格納ボリュームに対し前記指定されたスケーリングポリシーは、前記格納クライアントから前記ネットワークベースデータストアのインターフェースを介して受信される、条項１５に記載の非一時的コンピュータ可読記憶媒体。
【００７２】
１７．前記スケーリングイベントは前記格納ボリュームを縮小させ、前記格納ボリュームを保持する前記格納を修正する際、前記プログラム命令は、前記１つまたは複数のコンピューティングデバイスに、前記格納ボリュームに割り当てられた前記格納の格納スペースを回収することを実行させる、条項１５に記載の非一時的コンピュータ可読記憶媒体。
【００７３】
１８．前記スケーリングイベントは前記格納ボリュームを拡大させ、前記格納ボリュームを保持する前記格納を修正する際、前記プログラム命令は、前記１つまたは複数のコンピューティングデバイスに、前記格納ボリュームに追加格納スペースを割り当てることを実行させる、条項１５に記載の非一時的コンピュータ可読記憶媒体。
【００７４】
１９．前記プログラム命令は前記１つまたは複数のコンピューティングデバイスにさらに、
前記格納ボリュームに対する前記スケーリングイベントの前記開示を、前記格納クライアントにて受信することと、
前記スケーリングイベントに従って、前記格納クライアントにて前記ファイルシステムを更新することと、
前記更新されたファイルシステムを前記格納クライアントにて利用して、後続のファイルシステム入出力（Ｉ／Ｏ）に関して前記スケーリングされた格納ボリュームにアクセスすることと、
を実行させる、条項１５に記載の非一時的コンピュータ可読記憶媒体。
【００７５】
２０．前記プログラム命令はさらに、前記１つまたは複数のコンピューティングデバイスに、
前記スケーリングイベントの検出に応じて、前記スケーリングイベントに従って前記スケーリングされた格納ボリュームに対するファイルシステム入出力（Ｉ／Ｏ）を処理するために、前記ネットワークベースデータストアにて保持されるマッピング情報を更新すること、
を実行させる、条項１５に記載の非一時的コンピュータ可読記憶媒体。
【００７６】
２１．前記スケーリングされた格納ボリュームのデフラグメンテーションを実行することなく前記格納クライアントにおける前記ファイルシステムが更新されるように、前記マッピング情報の前記更新は行われる、条項１５に記載の非一時的コンピュータ可読記憶媒体。
【００７７】
２２． 前記格納クライアント用の前記格納ボリュームを動的にスケーリングするために前記格納ボリュームを保持する前記ブロックベース格納を修正する際、前記プログラム命令はさらに、前記１つまたは複数のコンピューティングデバイスに、
前記格納ボリュームを保持する前記ブロックベース格納における前記格納ボリュームに対し、１つまたは複数の格納メンテナンス動作を行うこと、
を実行させる、条項１５に記載の非一時的コンピュータ可読記憶媒体。
【００７８】
２３．前記ネットワークベースデータストアは、マルチテナントのブロックベース格納サービスであり、
前記ブロックベース格納サービスは、プロバイダネットワークの一環として実施される複数のネットワークベースサービスのうちの１つであり、
前記格納クライアントは、前記プロバイダネットワークにおけるその他のネットワークベースサービスのうちの１つの一環として実施される、
条項１５に記載の非一時的コンピュータ可読記憶媒体。
【００７９】
図８は、様々な実施形態による、本明細書において説明されるように、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行するように構成されたコンピュータシステムを例示するブロック図である。例えば、コンピュータシステム１０００は、異なる実施形態において、クライアントシステム、あるいは、遠隔版ファイルシステム変更ログと対話するために使用されるネットワークベース格納システムまたはジャーナリングファイルシステムサービスの複数のノードまたはコンポーネントのうちの１つを実行するように構成され得る。コンピュータシステム１０００は、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップもしくはノートブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、消費者デバイス、アプリケーションサーバ、ストレージデバイス、電話、携帯電話、または一般に任意の種類のコンピューティングデバイスを含むが、これに限定されない様々な種類のデバイスのうちのいずれかであり得る。
【００８０】
コンピュータシステム１０００は、入出力（Ｉ／Ｏ）インターフェース１０３０を介してシステムメモリ１０２０に接続された１つまたは複数のプロセッサ１０１０（当該プロセッサのうちのいずれかは複数のコアを含み、当該プロセッサはシングルまたはマルチスレッドであり得る）を含む。コンピュータシステム１０００はさらに、Ｉ／Ｏインターフェース１０３０に接続されたネットワークインターフェース１０４０を含む。様々な実施形態において、コンピュータシステム１０００は、１つのプロセッサ１０１０を含むユニプロセッサシステム、またはいくつか（例えば２つ、４つ、８つ、または別の好適な個数）のプロセッサ１０１０を含むマルチプロセッサシステムであり得る。プロセッサ１０１０は、命令を実行可能な任意の好適なプロセッサであり得る。例えば、様々な実施形態において、プロセッサ１０１０は、様々な命令集合アーキテクチャ（ＩＳＡ）、例えばｘ８６、ＰｏｗｅｒＰＣ、ＳＰＡＲＣ、もしくはＭＩＰＳ  ＩＳＡ、またはその他の好適なＩＳＡ等、そのうちのいずれかを実行する汎用または組み込みプロセッサであり得る。マルチプロセッサシステムにおいて、それぞれのプロセッサ１０１０は一般に、必ずしもではないが、同一のＩＳＡを実行し得る。コンピュータシステム１０００はまた、コミュニケーションネットワーク（例えばインターネット、ＬＡＮ等）上で他のシステム及び／またはコンポーネントと通信するための１つまたは複数のネットワーク通信デバイス（例えばネットワークインターフェース１０４０）を含む。例えば、システム１０００上で実行されるクライアントアプリケーションは、ネットワークインターフェース１０４０を使用して、単一サーバ上、または本明細書において説明されるネットワークベースサービスのコンポーネントのうちの１つまたは複数を実行するサーバのクラスタ上で実行されるサーバアプリケーションと通信し得る。別の実施例において、コンピュータシステム１０００上で実行されるサーバアプリケーションのインスタンスは、ネットワークインターフェース１０４０を使用して、他のコンピュータシステム（例えばコンピュータシステム１０９０）上で実行され得るサーバアプリケーション（または別のサーバアプリケーション）の他のインスタンスと通信し得る。
【００８１】
図示された実施形態において、コンピュータデバイス１０００はまた、１つまたは複数の持続的格納デバイス１０６０、及び／または１つまたは複数の入出力デバイス１０８０を含む。様々な実施形態において、持続的格納デバイス１０６０は、ディスクドライブ、テープドライブ、ソリッドステートメモリ、他の大容量格納デバイス、またはその他の持続的格納デバイスに該当し得る。コンピュータシステム１０００（または分散アプリケーションもしくはコンピュータシステム１０００上で作動するオペレーティングシステム）は、命令及び／またはデータを所望通りに持続的格納デバイス１０６０に格納し、格納された命令及び／またはデータを必要に応じ取り出し得る。例えば、いくつかの実施形態において、コンピュータシステム１０００は格納システムサーバノードを提供し、持続的格納１０６０はそのサーバノードに取り付けられるＳＳＤを含み得る。
【００８２】
コンピュータシステム１０００は、プロセッサ（複数可）１０１０によりアクセス可能な命令及びデータを格納するように構成された１つまたは複数のシステムメモリ１０２０を含む。様々な実施形態において、システムメモリ１０２０は、任意の好適なメモリ技術（例えばキャッシュ、静的ランダムアクセスメモリ（ＳＲＡＭ）、ＤＲＡＭ、ＲＤＲＡＭ、ＥＤＯ  ＲＡＭ、ＤＤＲ  １０  ＲＡＭ、同期式動的ＲＡＭ（ＳＤＲＡＭ）、ラムバスＲＡＭ、ＥＥＰＲＯＭ、不揮発性／フラッシュタイプメモリ、またはその他の種類のメモリ、以上のうちの１つまたは複数）を使用して実行され得る。システムメモリ１０２０は、本明細書において説明される方法及び技術を実行するためにプロセッサ（複数可）１０１０により実行可能なプログラム命令１０２５を含み得る。様々な実施形態において、プログラム命令１０２５は、Ｊａｖａ（登録商標）バイトコード等のプラットフォームネイティブバイナリの任意のインタプリタ言語で、またはＣ／Ｃ＋＋、Ｊａｖａ（登録商標）等のその他の言語で、あるいはそれらの任意の組み合わせで、符号化され得る。例示される実施形態において、例えば、プログラム命令１０２５は、異なる実施形態において、ジャーナリングファイルシステムマネジャー、またはネットワークベースサービスの複数のノードのうちの１つの機能を実行するために実行可能なプログラム命令を含む。いくつかの実施形態において、プログラム命令１０２５は、複数の個別のクライアント、サーバノード、及び／または他のコンポーネントを実行し得る。
【００８３】
いくつかの実施形態において、プログラム命令１０２５は、ＵＮＩＸ（登録商標）、ＬＩＮＵＸ、Ｓｏｌａｒｉｓ（登録商標）、ＭａｃＯＳ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）等の様々なオペレーティングシステムのうちのいずれかであり得るオペレーティングシステム（図示せず）を実施するために実行可能な命令を含み得る。プログラム命令１０２５のうちのいずれかまたは全ては、様々な実施形態に従ってプロセスを実行するようにコンピュータシステム（または他の電子デバイス）をプログラムするために使用され得る命令を自身に格納した非一時的コンピュータ可読記憶媒体を含み得るコンピュータプログラム製品またはソフトウェアとして、提供され得る。非一時的コンピュータ可読記憶媒体は、マシン（例えばコンピュータ）により可読な形態（例えばソフトウェア、処理アプリケーション）で情報を記憶する任意の機構を含み得る。概して、非一時的コンピュータアクセス可能媒体は、例えば入出力インターフェース１０３０を介してコンピュータシステム１０００に接続されるディスクまたはＤＶＤ／ＣＤ‐ＲＯＭといった磁気媒体または光学媒体等のコンピュータ可読記憶媒体またはメモリ媒体を含み得る。非一時的コンピュータ可読記憶媒体はまた、システムメモリ１０２０または別の種類のメモリとして、コンピュータシステム１０００のいくつかの実施形態に含まれ得るＲＡＭ（例えばＳＤＲＡＭ、ＤＤＲ‐ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭ等）、ＲＯＭ等の任意の揮発性または不揮発性媒体を含み得る。別の実施形態において、プログラム命令は、ネットワークインターフェース１０４０を通して実施され得るようなネットワーク及び／または無線リンク等の通信媒体を介して伝達される光学、音響、または他の形態の伝搬信号（例えば搬送波、赤外線信号、デジタル信号等）を使用して通信され得る。
【００８４】
いくつかの実施形態において、システムメモリ１０２０は、本明細書において説明されるように構成され得るデータストア１０４５を含み得る。例えば、ネットワークベース格納システムにより格納されている本明細書にて説明される情報は、異なる時点に様々な実施形態において、１つまたは複数のノード上のデータストア１０４５内もしくはシステムメモリ１０２０の別の部分内、持続的格納１０６０内、及び／または１つまたは複数の遠隔格納デバイス１０７０上に、格納され得る。同様に、格納されている本明細書にて説明される情報は、異なる時点に様々な実施形態において、１つまたは複数のノード上のデータストア１０４５内もしくはシステムメモリ１０２０の別の部分内、持続的格納１０６０内、及び／または１つまたは複数の遠隔格納デバイス１０７０上に、格納され得る。一般に、システムメモリ１０２０（例えばシステムメモリ１０２０内のデータストア１０４５）、持続的格納１０６０、及び／または遠隔格納１０７０は、データブロック、データブロックのレプリカ、データブロックに対応付けられたメタデータ及び／またはそれらのステート、構成情報、並びに／あるいは本明細書において説明される方法及び技術を実施する際使用可能なその他の情報を、格納し得る。
【００８５】
一実施形態において、入出力インターフェース１０３０は、プロセッサ１０１０と、システムメモリ１０２０と、ネットワークインターフェース１０４０または他の周辺インターフェースを通した任意の周辺デバイスとの間の入出力トラフィックをシステム内で調整するように構成され得る。いくつかの実施形態において、入出力インターフェース１０３０は、１つのコンポーネント（例えばシステムメモリ１０２０）からのデータ信号を、別のコンポーネント（例えばプロセッサ１０１０）が使用するのに好適な形式に変換するために、任意の必要なプロトコル変換、タイミング変換、または他のデータ変換を実行し得る。いくつかの実施形態において、入出力インターフェース１０３０は、例えば周辺構成要素相互接続（ＰＣＩ）バス規格または汎用シリアルバス（ＵＳＢ）規格の変形等、様々な種類の周辺バスを介して取り付けられるデバイスのサポートを含み得る。いくつかの実施形態において、入出力インターフェース１０３０の機能は、例えばノースブリッジとサウスブリッジといった２つ以上の別々のコンポーネントに分割され得る。また、いくつかの実施形態において、システムメモリ１０２０に対するインターフェース等、入出力インターフェース１０３０の機能のうちの一部または全ては、プロセッサ１０１０に直接組み込まれ得る。
【００８６】
ネットワークインターフェース１０４０は、コンピュータシステム１０００と、例えば他のコンピュータシステム１０９０（本明細書に説明されるネットワークベースサービス及び／またはクライアントを実施する１つまたは複数のノードを実行し得る）といったネットワークに接続された他のデバイスとの間で、データ交換を可能にするように構成され得る。さらに、ネットワークインターフェース１０４０は、コンピュータシステム１０００と、様々な入出力デバイス１０５０及び／または遠隔格納１０７０との間の通信を可能にするように構成され得る。いくつかの実施形態において、入出力デバイス１０５０は、１つまたは複数のディスプレイ端末、キーボード、キーパッド、タッチパッド、スキャニングデバイス、音声もしくは光学認識デバイス、または１つまたは複数のコンピュータシステム１０００がデータ入力もしくはデータ取得を行うのに好適なその他のデバイスを含み得る。複数の入出力デバイス１０５０は、コンピュータシステム１０００内に存在し得る、あるいはコンピュータシステム１０００を含む分散システムの様々なノード上に分散され得る。いくつかの実施形態において、同様の入出力デバイスは、コンピュータシステム１０００とは別個であり、ネットワークインターフェース１０４０上等の有線または無線接続を通して、コンピュータシステム１０００を含む分散システムの１つまたは複数のノードと対話し得る。ネットワークインターフェース１０４０は一般に、１つまたは複数の無線ネットワークプロトコル（例えばＷｉ‐Ｆｉ／ＩＥＥＥ８０２．１１または他の無線ネットワーク規格）に対応し得る。しかしながら、様々な実施形態において、ネットワークインターフェース１０４０は、例えば、他の種類のイーサネット（登録商標）ネットワーク等、任意の好適な有線または無線汎用データネットワークを介して、通信に対応し得る。さらに、ネットワークインターフェース１０４０は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワーク等の電気通信／電話ネットワークを介して、あるいはファイバチャネルＳＡＮ等の格納エリアネットワークを介して、あるいはその他の好適な種類のネットワーク及び／またはプロトコルを介して、通信に対応し得る。様々な実施形態において、コンピュータシステム１０００は、図８に例示されるコンポーネントと比べると、より多い、より少ない、または異なるコンポーネントを含み得る（例えばディスプレイ、ビデオカード、オーディオカード、周辺デバイス、他のネットワークインターフェース、例えばＡＴＭインターフェース、イーサネットインターフェース、フレームリレーインターフェース等）。
【００８７】
本明細書に説明される分散システムの実施形態のうちのいずれか、またはそれらのコンポーネントのうちのいずれかは、１つまたは複数のネットワークベースサービスとして実行され得ることに留意されたい。例えば、格納サービス内の格納ノードは、本明細書において説明される分散格納システムを採用するデータサービス及び／または他の種類のデータ格納サービスを、ネットワークベースサービスとしてクライアントに提供し得る。いくつかの実施形態において、ネットワークベースサービスは、ネットワーク上の相互運用可能なマシン間対話に対応するように設計されたソフトウェア及び／またはハードウェアシステムにより実施され得る。ネットワークベースサービスは、ウェブサービス記述言語（ＷＳＤＬ）等のマシン処理可能な形式で記述されたインターフェイーを有し得る。他のシステムは、ネットワークベースサービスのインターフェースの記述により定められたやり方で、ネットワークベースサービスと対話し得る。例えば、ネットワークベースサービスは、他のシステムが呼び出し得る様々な動作を定義し、他のシステムが様々な動作を要求する際従うべき特定のアプリケーションプログラミングインタフェース（ＡＰＩ）を定義し得る。
【００８８】
様々な実施形態において、ネットワークベースサービスは、ネットワークベースサービス要求に対応付けられたパラメータ及び／またはデータを含むメッセージの使用を通して、要求または呼び出され得る。このようなメッセージは、拡張マークアップ言語（ＸＭＬ）等の特定のマークアップ言語に従ってフォーマットされ、及び／または簡易オブジェクトアクセスプロトコル（ＳＯＡＰ）等のプロトコルを使用してカプセル化され得る。ネットワークベースサービス要求を行うために、ネットワークベースサービスのクライアントは、要求を含むメッセージをアセンブルし、そして当該メッセージを、ネットワークベースサービスに対応するアドレス指定可能なエンドポイント（例えばユニフォームリソースロケータ（ＵＲＬ））へ、ハイパーテキスト転送プロトコル（ＨＴＴＰ）等のインターネットベースアプリケーション層転送プロトコルを使用して、伝送し得る。
【００８９】
いくつかの実施形態において、ネットワークベースサービスは、メッセージベース技術ではなく、レプレゼンテーショナルステートトランスファ（「ＲＥＳＴｆｕｌ」）技術を使用して、実施され得る。例えば、ＲＥＳＴｆｕｌ技術に従って実施されるネットワークベースサービスは、ＳＯＡＰメッセージ内にカプセル化されたパラメータではなく、ＰＵＴ、ＧＥＴ、またはＤＥＬＥＴＥ等のＨＴＴＰメソッド内に含まれるパラメータを通して、呼び出され得る。
【００９０】
前述の実施形態はかなり詳細に説明されているが、一度前述の開示が十分に理解されれば、多数の変形及び修正が当業者に理解され、行われるであろう。以下の特許請求の範囲は全てのこのような修正及び変更を包含すると解釈され、従って前述の説明は制限的な意味ではなく例示的な意味で考慮されるものとする。
【図１】
0006381801.tif 000002
【図２】
0006381801.tif 000003
【図３】
0006381801.tif 000004
【図４】
0006381801.tif 000005
【図５】
0006381801.tif 000006
【図６】
0006381801.tif 000007
【図７】
0006381801.tif 000008
【図８】
0006381801.tif 000009