特許第6381801号(P6381801)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アマゾン・テクノロジーズ・インコーポレーテッドの特許一覧

特許6381801格納クライアントファイルシステム用格納ボリュームの動的スケーリング
<>
  • 特許6381801-格納クライアントファイルシステム用格納ボリュームの動的スケーリング 図000002
  • 特許6381801-格納クライアントファイルシステム用格納ボリュームの動的スケーリング 図000003
  • 特許6381801-格納クライアントファイルシステム用格納ボリュームの動的スケーリング 図000004
  • 特許6381801-格納クライアントファイルシステム用格納ボリュームの動的スケーリング 図000005
  • 特許6381801-格納クライアントファイルシステム用格納ボリュームの動的スケーリング 図000006
  • 特許6381801-格納クライアントファイルシステム用格納ボリュームの動的スケーリング 図000007
  • 特許6381801-格納クライアントファイルシステム用格納ボリュームの動的スケーリング 図000008
  • 特許6381801-格納クライアントファイルシステム用格納ボリュームの動的スケーリング 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6381801
(24)【登録日】2018年8月10日
(45)【発行日】2018年8月29日
(54)【発明の名称】格納クライアントファイルシステム用格納ボリュームの動的スケーリング
(51)【国際特許分類】
   G06F 12/00 20060101AFI20180820BHJP
   G06F 13/10 20060101ALI20180820BHJP
【FI】
   G06F12/00 545A
   G06F12/00 514E
   G06F12/00 501A
   G06F13/10 340A
【請求項の数】15
【全頁数】30
(21)【出願番号】特願2017-523879(P2017-523879)
(86)(22)【出願日】2015年11月5日
(65)【公表番号】特表2017-539000(P2017-539000A)
(43)【公表日】2017年12月28日
(86)【国際出願番号】US2015059318
(87)【国際公開番号】WO2016073775
(87)【国際公開日】20160512
【審査請求日】2017年5月1日
(31)【優先権主張番号】14/534,097
(32)【優先日】2014年11月5日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】507303550
【氏名又は名称】アマゾン・テクノロジーズ・インコーポレーテッド
(74)【代理人】
【識別番号】100098394
【弁理士】
【氏名又は名称】山川 茂樹
(74)【代理人】
【識別番号】100064621
【弁理士】
【氏名又は名称】山川 政樹
(72)【発明者】
【氏名】ディッペナー,アンドリース・ペトルス・ヨハネス
(72)【発明者】
【氏名】ブラムヒル,ギャヴィン・アレクサンダー
【審査官】 田名網 忠雄
(56)【参考文献】
【文献】 米国特許出願公開第2006/0095705(US,A1)
【文献】 特開2002−222061(JP,A)
【文献】 特開2010−191670(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06−3/08
G06F 12/00
G06F 13/10−13/14
(57)【特許請求の範囲】
【請求項1】
複数の格納クライアントのために1つまたは複数のそれぞれの格納ボリュームを保持するブロックベース格納サービスを実施する複数のコンピュートノードと、
前記複数の格納ボリュームを保持するためにストレージを提供する複数の格納ノードと、
前記ブロックベース格納サービスのための制御プレーンを実行する前記複数のコンピュートノードのうちの少なくともいくつかと、
を備えるシステムであって、前記制御プレーンは、
前記複数の格納ボリュームを監視し、
前記複数の格納ボリュームの前記監視に少なくとも部分的に基づいて、前記格納ボリュームに対する指定されたスケーリングポリシーに従って、前記複数の格納ボリュームのうちの格納ボリュームに対するスケーリングイベントを検出し、前記格納ボリュームは、前記複数の格納クライアントのうちの格納クライアントにてマウントされ、かつファイルシステム用に構成され、
前記スケーリングイベントの前記検出に応じて、
前記スケーリングポリシーに従って、前記格納クライアント用の前記格納ボリュームを動的にスケーリングするために、前記格納ボリュームに割り当てられた前記ストレージを修正し、
前記修正されたストレージ内の前記スケーリングされた格納ボリュームを使用するよう前記格納クライアントにおける前記ファイルシステムが更新されるように、前記格納クライアントに対し、前記格納ボリュームの前記スケーリングイベントを通知する、
ように構成される、システム。
【請求項2】
前記格納クライアントは、さらに、
前記格納ボリュームに対する前記スケーリングイベントの前記通知を受信し、
前記スケーリングイベントに従って前記ファイルシステムを更新し、
前記更新されたファイルシステムを利用して、後続のファイルシステム入出力(I/O)に関して前記スケーリングされた格納ボリュームにアクセスする、
ように構成される、
請求項1に記載のシステム。
【請求項3】
前記格納クライアントは、さらに、
前記ファイルシステムのために1つまたは複数の性能メトリクスを収集し、
前記1つまたは複数の性能メトリクスを前記制御プレーンに送信する、
ように構成されシステムであって、
前記スケーリングイベントの前記検出はさらに、前記格納クライアントにて収集された前記1つまたは複数の性能メトリクスに基づく、
請求項1に記載のシステム。
【請求項4】
1つまたは複数のコンピューティングデバイスにより、
格納クライアント用のネットワークベースデータストアの一として実施されるストレージに格納ボリュームを保持することであって、前記格納ボリュームは前記格納クライアントにてマウントされ、かつファイルシステムのために構成される、前記格納クライアント用の前記ネットワークベースデータストアの一として実施される前記ストレージに前記格納ボリュームを保持することと、
前記格納ボリュームに対し指定されたスケーリングポリシーに従って、前記格納ボリュームのスケーリングイベントを検出することと、
前記格納ボリュームの前記スケーリングイベントの検出に応じて、
前記スケーリングポリシーに従って、前記格納クライアント用の前記格納ボリュームをスケーリングするために、前記格納ボリュームを保持する前記ストレージを修正することと、
前記修正されたストレージ内の前記スケーリングされた格納ボリュームを使用するよう前記格納クライアントにおける前記ファイルシステムが更新されるように、前記格納クライアントに対し、前記格納ボリュームの前記スケーリングイベントを通知することと、
を実行することを含む方法。
【請求項5】
前記格納ボリュームに対し前記指定されたスケーリングポリシーは、前記格納クライアントから前記ネットワークベースデータストアのインターフェースを介して受信される、請求項4に記載の方法。
【請求項6】
前記ネットワークベースデータストアは、前記格納クライアントを含む複数の異なる格納クライアントのために、前記格納ボリュームを含む複数の格納ボリュームを保持するマルチテナントのブロックベース格納サービスであり、
前記格納ボリュームを保持する前記ストレージは、前記複数の格納ボリュームを保持する格納デバイスの集合の一部であり、前記格納ボリュームの前記スケーリングイベントを検出することは、前記複数の格納ボリュームを保持する格納デバイスの前記集合を監視することに少なくとも部分的に基づく、請求項4に記載の方法。
【請求項7】
前記スケーリングイベントは前記格納ボリュームを拡大させ、前記格納ボリュームを保持する前記ストレージを修正することは、前記格納ボリュームに追加格納スペースを割り当てることを含む、請求項4に記載の方法。
【請求項8】
前記格納ボリュームに対する前記スケーリングイベントの前記通知を、前記格納クライアントにて受信することと、
前記スケーリングイベントに従って、前記格納ボリュームに対する追加格納容量を含むように、前記ファイルシステムを前記格納クライアントにて更新することと、
前記更新されたファイルシステムを前記格納クライアントにて利用して、後続のファイルシステム入出力(I/O)に関して前記スケーリングされた格納ボリュームにアクセスすることと、
をさらに含む請求項7に記載の方法。
【請求項9】
前記保持、前記検出、前記修正、及び前記通知は、前記ネットワークベースデータストアの制御プレーンにより実行され、
前記スケーリングイベントは前記格納ボリュームを縮小させ、
前記方法はさらに、
前記格納ボリュームに対する前記スケーリングイベントの前記通知を、前記格納クライアントにて受信することと、
前記スケーリングイベントに従って、前記格納ボリュームに割り当てられた格納スペースを回収するように、前記ファイルシステムを前記格納クライアントにて更新することと、
前記格納クライアントから、前記ネットワークベースデータストアの前記制御プレーンに対し、前記ストレージ内で回収する前記格納スペースを特定するスケーリングイベント応答を送信することと、
前記更新されたファイルシステムを前記格納クライアントにて利用して、後続のファイルシステム入出力(I/O)に関して前記スケーリングされた格納ボリュームにアクセスすることと、
を含み、
前記格納ボリュームを保持する前記ストレージを修正することは、前記ストレージの前記特定された格納スペースを回収することを含む、
請求項4に記載の方法。
【請求項10】
プログラム命令を記憶するンピュータ可読記憶媒体であって、前記プログラム命令は1つまたは複数のコンピューティングデバイスにより実行されると、前記1つまたは複数のコンピューティングデバイスに、
格納クライアント用のネットワークベースデータストアの一として実施されるブロックベースストレージに保持される格納ボリュームを監視することであって、前記格納ボリュームは前記格納クライアントにてマウントされ、かつファイルシステムのために構成される、前記格納クライアント用の前記ネットワークベースデータストアの一として実施される前記ブロックベースストレージに保持される前記格納ボリュームを監視することと、
前記監視に少なくとも部分的に基づいて、前記格納ボリュームに対し指定されたスケーリングポリシーに従って、前記格納ボリュームのスケーリングイベントを検出することと、
前記格納ボリュームの前記スケーリングイベントの検出に応じて、
前記スケーリングポリシーに従って、前記格納クライアント用の前記格納ボリュームを動的にスケーリングするために、前記格納ボリュームを保持する前記ブロックベースストレージを修正することと、
前記修正されたブロックベースストレージ内の前記スケーリングされた格納ボリュームを使用するよう前記格納クライアントにおける前記ファイルシステムが更新されるように、前記格納クライアントに対し、前記格納ボリュームの前記スケーリングイベントを通知することと、
を実行させる、ンピュータ可読記憶媒体。
【請求項11】
前記スケーリングイベントは前記格納ボリュームを縮小させ、前記格納ボリュームを保持する前記ブロックベースストレージを修正する際、前記プログラム命令は、前記1つまたは複数のコンピューティングデバイスに、前記格納ボリュームに割り当てられた前記ブロックベースストレージの格納スペースを回収することを実行させる、請求項10に記載のンピュータ可読記憶媒体。
【請求項12】
前記スケーリングイベントは前記格納ボリュームを拡大させ、前記格納ボリュームを保持する前記ブロックベースストレージを修正する際、前記プログラム命令は、前記1つまたは複数のコンピューティングデバイスに、前記格納ボリュームに追加格納スペースを割り当てることを実行させる、請求項10に記載のンピュータ可読記憶媒体。
【請求項13】
前記プログラム命令は前記1つまたは複数のコンピューティングデバイスにさらに、
前記格納ボリュームに対する前記スケーリングイベントの前記通知を、前記格納クライアントにて受信することと、
前記スケーリングイベントに従って、前記格納クライアントにて前記ファイルシステムを更新することと、
前記更新されたファイルシステムを前記格納クライアントにて利用して、後続のファイルシステム入出力(I/O)に関して前記スケーリングされた格納ボリュームにアクセスすることと、
を実行させる、請求項10に記載のンピュータ可読記憶媒体。
【請求項14】
前記プログラム命令はさらに、前記1つまたは複数のコンピューティングデバイスに、
前記スケーリングイベントの検出に応じて、前記スケーリングイベントに従って前記スケーリングされた格納ボリュームに対するファイルシステム入出力(I/O)を処理するために、前記ネットワークベースデータストアにて保持されるマッピング情報を更新すること、
を実行させる、請求項10に記載のンピュータ可読記憶媒体。
【請求項15】
前記格納クライアント用の前記格納ボリュームをスケーリングするために前記格納ボリュームを保持する前記ブロックベースストレージを修正する際、前記プログラム命令はさらに、前記1つまたは複数のコンピューティングデバイスに、
前記格納ボリュームを保持する前記ブロックベースストレージにおける前記格納ボリュームに対し、1つまたは複数のストレージメンテナンス動作を行うこと、
を実行させる、請求項10に記載のンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
ネットワークを通じた仮想化ハードウェアリソース、ソフトウェア、及び情報格納の動的共有に関する昨今の技術革命は、コンピューティングの信頼性、スケーラビリティ、費用効果性を向上させた。より具体的には、仮想化の出現によるオンデマンドで仮想化コンピューティングリソース及び格納を提供する能力は、リソース及び格納処理の顧客が、即時認識されたコンピューティング及び格納要求に応じて、自身のコンピューティング及び格納費用を柔軟に組み立てることを可能にした。仮想化により、顧客は、ハードウェアの製造及び開発の遅延及び費用により決定される供給サイクルにおいて固定のハードウェアを購入または賃貸するのではなく、要求時のプロセッササイクル及び格納を購入することが可能となる。将来的要求予測の正確性に依存してコンピューティング及び格納の可用性を特定するのではなく、ユーザは、比較的に瞬間要求に応じてコンピューティング及び格納リソースの使用を購入することが可能である。
【0002】
仮想化コンピューティング環境はしばしば、ブロックベース格納により支えられている。このようなブロックベース格納は、一連の標準化された格納呼び出しを通して様々な仮想化コンピューティングと対話することが可能である格納システムを提供する。当該一連の標準化された格納呼び出しにより、ブロックベース格納は、自身が対応するボリュームの構造的及び機能的詳細、並びに自身が格納可用性を提供する仮想上で作動するオペレーティングシステムに対し、機能的に依存しなくなる。しかしながら、仮想化リソースの処理能力の増大に伴ってネットワーク伝送能力が高まるにつれ、ブロックベース格納に対する入出力要求も増加し得る。入出力要求がブロックベース格納の要求対応能力を超えると、仮想化コンピューティングリソースのブロックベース格納性能のレイテンシ及び/または耐久性は劣化し、仮想化コンピューティングの性能損失をもたらす。
【図面の簡単な説明】
【0003】
図1】いくつかの実施形態による、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを例示する一連の図解である。
図2】いくつかの実施形態による、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行するブロックベース格納サービスを実施するプロバイダネットワークを例示するブロック図である。
図3】いくつかの実施形態による、格納クライアントの様々なコンポーネントを例示するブロック図である。
図4】いくつかの実施形態による、ブロックベース格納サービスの様々なコンポーネントを例示するブロック図である。
図5】いくつかの実施形態による、格納クライアントと、動的格納ボリュームスケーリングを実行するブロックベース格納サービスとの間の対話を例示するブロック図である。
図6】いくつかの実施形態による、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行する方法及び技術を例示する高次フローチャートである。
図7】いくつかの実施形態による、ファイルシステム用格納ボリュームのスケーリングイベントに従ってファイルシステムを更新する方法及び技術を例示する高次フローチャートである。
図8】いくつかの実施形態による、例示的コンピュータシステムである。
【0004】
本明細書において実施形態はいくつかの例示的実施形態及び例示的図面として説明されるが、実施形態は説明される実施形態または図面に限定されないことを、当業者は認識するであろう。図面とその詳細説明には、実施形態を開示される特定の形態に限定する意図はなく、それとは逆に、添付の特許請求の範囲により定義される趣旨及び範囲に入る全ての変更、均等物、及び代替案を包含する意図があることを理解されたい。本明細書において使用される見出しは、構成目的でのみ用いられ、説明または特許請求の範囲を限定するために用いられることを意図しない。本出願を通して使用される英単語「may」は、義務的な意味(すなわち「〜しなければならない」という意味)ではなく、許容的な意味(すなわち「〜する可能性がある」という意味)で使用される。英単語「include」、「including」、及び「includes」は無制限の関係性を示し、従って「含む」ことを意味するが、その対象に限定されない。同様に、英単語「have」、「having」、及び「has」も無制限の関係性を示し、従って「有する」ことを意味するが、その対象に限定されない。本明細書において使用される用語「第1」、「第2」、「第3」等は、それらが先行する名詞のラベルとして使用され、明示的に示されない限りいかなる種類の順序(例えば空間的、時間的、論理的等)も意味しない。
【0005】
様々なコンポーネントが、1つまたは複数のタスクを実行「するように構成される」と説明され得る。このような文脈において、「するように構成される」は、動作中に1つまたは複数のタスクを実行「するような構造を有する」ことを一般的に意味する概略的記述である。このように、コンポーネントは、現在あるタスクを実行していなくとも、当該タスクを実行するように構成され得る。(例えば、コンピュータシステムは、現在ある動作を実行していなくとも、当該動作を実行するように構成され得る。)いくつかの文脈において、「するように構成される」は、動作中に1つまたは複数のタスクを実行「するような回路を有する」ことを一般的に意味する構造の概略的記述であり得る。このように、コンポーネントは、現在起動していなくとも、タスクを実行するように構成され得る。一般に、「するように構成される」に対応する構造を形成する回路は、ハードウェア回路を含み得る。
【0006】
説明の都合上、様々なコンポーネントは、1つまたは複数のタスクを実行するものとして説明され得る。このような説明は、「するように構成される」という句を含むものとして解釈されたい。1つまたは複数のタスクを実行するように構成されるコンポーネントの記述は、当該コンポーネントに対し米国特許法第112条(f)の解釈を喚起しないようにすることを明確に意図する。
【0007】
本明細書において使用される用語「に基づく」は、決定に影響する1つまたは複数の要因を説明するために使用される。当用語は、決定に影響し得る追加要因を排除しない。すなわち、決定は、これらの要因にのみ基づき得る、あるいは少なくとも部分的にこれらの要因に基づき得る。「Bに基づいてAを決定する」という句を検討する。BはAの決定に影響する要因であり得るが、このような句は、Aの決定がCにも基づくことを排除しない。他の事例において、AはBにのみ基づいて決定され得る。
【0008】
本開示の範囲は、本明細書において記載される問題のいずれかまたは全てを緩和するか否かに関わらず、本明細書において開示される任意の特徴または特徴の組み合わせ(明示的または暗示的)、あるいはその任意の一般化を含む。従って、任意のこのような特徴の組み合わせに対し、本出願(またはそれに優先権を主張する出願)の訴追中に、新たな請求項が策定され得る。特に、添付の特許請求の範囲を参照すると、従属請求項の特徴は独立請求項の特徴と組み合わせられ、それぞれの独立請求項の特徴は、単に添付の特許請求の範囲において挙げられる特定の組み合わせではなく、任意の好適な手法で組み合わせられ得る。
【発明を実施するための形態】
【0009】
本明細書において、格納クライアントファイルシステム用格納ボリュームの動的スケーリングに関する様々な実施形態が説明される。ネットワークベースデータストアは、様々な異なる格納クライアントアプリケーションに対し、耐久力があり柔軟な格納ソリューションを提供する。例えば、格納クライアントは、ネットワークベースデータストアにおいてファイルシステムに対応する格納ボリュームを実行し得る。格納ボリュームの動的スケーリングの提供により、格納費用は格納ボリュームの実際の使用にしっかり一致することが可能になり、経時的な格納要件の変更が補償される。図1は、いくつかの実施形態による、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを例示する一連の図解である。ネットワークベースデータストア110は、様々な格納クライアント(複数可)140に対し持続的データ格納を提供し得る。ネットワークベースデータストア110における格納は、少なくともいくつかの実施形態において、ブロックベース格納であり得る。格納クライアント(複数可)140は、ネットワークベースデータストア110において格納ボリューム130を準備し得る。データストアを準備する際、格納クライアント(複数可)140は、格納ボリュームを装備し、格納クライアント(複数可)140において実行されるファイルシステムのために格納ボリュームを設定し得る。
【0010】
前述のように、格納容量及び/または性能に対する要求は、時間と共に変化し得る。これらの変化を考慮すると、静的に供給される格納リソースは、費用効率が低くなり得る。さらに、複数の異なる格納クライアントに格納を提供するネットワークベースデータストアに関して、完全に使用されていない格納リソースは、ネットワークベースデータストアの効率性を低減させている別の格納クライアントに使用されたほうが良くあり得る。従って、様々な実施形態において、ネットワークベースデータストア110は、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行し得る。シーン102に例示されるように、格納クライアント(複数可)140におけるファイルシステムマネジャー150は、格納クライアント(複数可)140にて実行されるファイルシステムのために格納ボリュームを使用する一環として、様々な入出力要求を格納ボリューム130に送信し得る。格納ボリューム130のスケーリングイベントを検出するために格納ボリュームを監視し得るデータストア制御プレーン120に対し、ボリューム性能が報告132され得る。
【0011】
格納ボリューム130のスケーリングポリシーに従って、スケーリングイベントが検出され得る。スケーリングポリシーは、格納ボリューム130をスケーリングする様々な制御プレーン行動を引き起こす1つまたは複数の条件を含み得る。例えば、格納ボリューム130は、サイズ拡大、サイズ縮小、格納ボリュームの格納リソースを異なるように再分配、及び/または格納ボリューム130の異なるスループット性能(例えば毎秒入出力動作(IOP))の供給のために、スケーリングされ得る。スケーリングイベントを検出するために、ボリューム性能メトリクス及び格納容量に関して、様々な異なる閾値または条件が調べられ得る(例えば多過ぎるまたは少な過ぎる格納容量または帯域幅)。
【0012】
シーン104に例示されるように、格納ボリューム130のスケーリングイベントが発生した。データストア制御プレーン120は、ボリュームのスケーリングイベントの開示122をファイルシステムマネジャー150に提供する。当開示により、ファイルシステムマネジャー150は、スケーリングされた格納ボリュームにアクセス可能になり得る。データストア制御プレーン120はまた、格納ボリュームを動的にスケーリングし、当実施例においては追加分132を追加する。スケーリングイベントに関して格納ボリュームの所望構成に相応する格納リソースを割り当てる様々な異なる格納動作が行われ、これには様々な格納メンテナンス動作が含まれる。ファイルシステムマネジャー150は、開示122を受信し、スケーリングされた格納ボリューム160を含むように格納クライアント(複数可)140におけるファイルシステムを更新し得る。例えば、ファイスシステムマネジャー150は、ボリューム追加132の結果としてスケーリングされた格納ボリューム160を開示するために、ファイルシステムメタデータを更新する様々なサイズ変更動作を実行し得る。それからファイルシステムマネジャー150は、ネットワークベースデータストア110内のスケーリングされた格納ボリュームを使用するために、入出力要求114を送信し得る。
【0013】
図1は、格納クライアントファイルシステム用格納ボリュームの動的スケーリングの例示として提供され、本明細書に説明されるコンポーネント、モジュール、またはデバイスの物理的配置、サイズ、または数に関して制限する意図はないことに留意されたい。
【0014】
本明細書はまず、ネットワークベースデータストアの実施例として、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを提供し得るブロックベース格納サービスを説明する。ブロックベース格納サービスを実施し得る様々なコンポーネント、モジュール、システム、またはデバイス、並びにブロックベース格納サービスのクライアントが説明される。本明細書はそれから、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行する方法の様々な実施形態のフローチャートを説明する。次に本明細書は、開示される技術を実行し得る例示的システムを説明する。本明細書を通して様々な実施例が提供される。
【0015】
図2は、いくつかの実施形態による、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行するブロックベース格納サービスを実施するプロバイダネットワークを例示するブロック図である。インターネット及び/または他のネットワークを介してアクセス可能な1つまたは複数のサービス(様々な種類のクラウドベースのコンピューティングまたは格納等)を、クライアント210に提供するために、企業または公的機関等の事業体により、プロバイダネットワーク200が構築され得る。プロバイダネットワーク200は、プロバイダネットワーク200が提供するインフラストラクチャ及びサービスを実行及び配給するために必要な物理及び/または仮想化コンピュータサーバ、格納デバイス、ネットワーク機器等の集合(例えば図8に関して後述されるコンピューティングシステム1000)といった様々なリソースプールを提供する多数のデータセンターを含み得る。いくつかの実施形態において、プロバイダネットワーク200は、仮想コンピュートサービス230等のコンピューティングリソース、ブロックベース格納サービス220及び他の格納サービス240等の格納サービス(オブジェクト/キー値ベースデータストア等の様々な格納種類、または様々な種類のデータベースシステムを含み得る)、及び/またはその他の種類のネットワークベースサービス250を提供し得る。クライアント210は、ネットワーク260を介して、プロバイダネットワーク200が提供するこれらの様々なサービスにアクセスし得る。同様に、ネットワークベースサービス自体は、異なるサービスを提供するために、お互いに通信及び/または利用し合い得る。例えば、仮想または物理コンピュートインスタンスまたは格納インスタンスといった「インスタンス」と呼ばれるユニットでクライアント210に提供されるコンピューティングリソースは、特定のデータボリューム226を利用して、コンピュートインスタンス用の仮想ブロック格納を提供し得る。
【0016】
前述のように、仮想コンピュートサービス230は、様々なコンピュートインスタンス(複数可)232をクライアント210に提供し得る。仮想コンピュートインスタンスは、例えば、指定演算能力(CPUの種類と数、メインメモリサイズ等を指示することで指定可能)を有する1つまたは複数のサーバと、指定ソフトウェアスタック(例えば今度はハイパーバイザーの上部で作動し得る特定バージョンのオペレーティングシステム)とを備え得る。異なる実施形態において、仮想コンピュートサービス230のコンピュートインスタンスを実行するために、多数の異なる種類のコンピューティングデバイスが単一で、または組み合わせて使用され、これには汎用または専用コンピュータサーバ、格納デバイス、ネットワークデバイス等が含まれる。いくつかの実施形態において、インスタンスクライアント210またはその他のユーザは、ネットワークトラフィックをコンピュートインスタンスへ向けるように構成され得る(及び/または権限が与えられ得る)。様々な実施形態において、様々な動作の実行用に持続的ブロックベース格納を取得するために、コンピュートインスタンスは、ブロックベース格納サービス220が提供する1つまたは複数のデータボリューム226に結び付けまたはマッピングされ得る。
【0017】
コンピュートインスタンス(複数可)232は、アプリケーションサーバインスタンス、Java(登録商標)仮想マシン(JVM)、汎用または専用オペレーティングシステム、Ruby、Perl、Python、C、C++等の様々なインタプリタ型またはコンパイラ型プログラミング言語に対応するプラットフォーム、または高性能コンピューティングプラットフォーム等、例えばインスタンスにアクセスするようクライアント210に要求することなく、クライアントアプリケーションを実行するのに好適な様々な異なるプラットフォームを作動または実行し得る。いくつかの実施形態において、コンピュートインスタンスは、期待稼働率に基づいて、異なる種類または構成を有する。特定のコンピュートインスタンスの稼働率は、インスタンスが確保されている総時間に対し、インスタンスが作動している時間の比率に定義され得る。いくつかの実施態様において、稼働率は使用率とも称され得る。インスタンスが確保されている時間のうち比較的少ない分率だけコンピュートインスタンスを使用することをクライアントが見込む場合(例えば年間確保のうち30%〜35%)、クライアントはインスタンスを低稼働率インスタンスとして確保することに決定し、関連価格設定ポリシーに従って割引時間利用料を支払い得る。ほとんどの時間インスタンスが作動するよう求める定常状態作業負荷を有することをクライアントが見込む場合、クライアントは高稼働率インスタンスを確保し、より低い時間利用料を支払う可能性さえあるが、いくつかの実施形態において、時間料金は価格設定ポリシーに従って、実際の利用時間数にかかわらず、確保存続時間全体に対し課金され得る。いくつかの実施形態において、対応価格設定ポリシーを伴う中間稼働率インスタンスの選択が同様に支持され、中間稼働率インスタンスでは、初期費用及び時間費用は、対応高稼働率費用と対応低稼働率費用の中間に位置する。
【0018】
コンピュートインスタンス構成はまた、コンピュート集中アプリケーションの演算作業負荷(例えば高トラフィックウェブアプリケーション、広告提供、バッチ処理、ビデオ符号化、分散解析論、高エネルギー物理学、ゲノム分析、及び計算流体力学)、グラフィック集中作業負荷(例えばゲームストリーミング、3Dアプリケーションストリーミング、サーバ側グラフィック作業負荷、レンダリング、財務モデリング、及び工学設計)、メモリ集中作業負荷(例えば高性能データベース、分散メモリキャッシュ、インメモリ分析論、ゲノムアセンブリ及び分析)、及び格納最適化作業負荷(例えばデータウェアハウジング及びクラスタファイルシステム)といった汎用及び専用目的のコンピュートインスタンスも含み得る。特定数の仮想CPUコア、メモリ、キャッシュ、格納、並びにその他の性能特性等、コンピュートインスタンスのサイズ。コンピュートインスタンスの構成はまた、特定のデータセンター、可用性区域、地理、場所等におけるそれらの位置と、確保期間(確保されたコンピュートインスタンスの場合)とを含み得る。
【0019】
様々な実施形態において、プロバイダネットワーク200は、格納動作を行うために、ブロックベース格納サービス220も実施し得る。ブロックベース格納サービス220は、1つまたは複数の持続的格納デバイス(複数可)226a、226b、226c、〜、226nを使用してブロックレベル格納を提供する複数の独立格納ノード224a、224b、224c、〜、224nのプールから成る格納システム(例えばサーバブロックデータ格納システム)である。保持される格納ボリュームは、特定のクライアントにマッピングされ、論理ブロックの連続的集合として仮想ブロックベース格納(例えばハードディスク格納または他の持続的格納)が提供され得る。いくつかの実施形態において、スナップショット動作または複製動作等、他のブロック格納動作を実行するために、格納ボリュームは、複数のデータチャンク(1つまたは複数のデータブロックを含む)に分割され得る。
【0020】
格納ボリュームのボリュームスナップショットは、格納ボリュームのステートの特定時点固定表現であり得る。いくつかの実施形態において、ボリュームスナップショットは、バックアップ格納サービス240内等、格納ボリュームを保持する格納ノード224から遠く離れた場所に格納され得る。スナップショット動作は、バックアップ格納サービス240内の遠隔スナップショットデータストア等、別の格納場所に所定の格納ボリュームのスナップショットを送信、複写、及び/あるいは保存するために行われ得る。
【0021】
ブロックベース格納サービス220は、ブロックベース格納サービス制御プレーン222を実行して、ブロックベース格納サービス220の動作を支援し得る。様々な実施形態において、ブロックベース格納サービス制御プレーン222は、プロバイダネットワーク200内に配置される仮想コンピュートサービス230及び/または他のネットワークベースサービス、及び/または任意で1つまたは複数の他のデータセンター内に配置されるコンピューティングシステム(図示せず)、またはネットワーク260上で利用可能なプロバイダネットワーク200外の他のコンピューティングシステム(例えばクライアント(複数可)210)により提供されるコンピュートインスタンス上で実行されるプログラム等、クライアントに対するブロックデータ格納の可用性の管理を支援する。格納ノード224上の格納ボリュームへのアクセスは、ブロックデータトランザクション命令に応じて、プロバイダネットワーク200内の内部ネットワークを介して、または外部的にネットワーク260を介して提供され得る。
【0022】
ブロックベース格納サービス制御プレーン222は、ユーザアカウントの管理(例えば作成、削除、課金、支払い収集等)を含むブロックレベル格納機能の提供に関連する様々なサービスを提供し得る。ブロックベース格納サービス制御プレーン222はさらに、構成要求に応じて、格納ボリューム及びスケーリングポリシーの作成、使用、削除に関連するサービスを提供し得る。ブロックベース格納サービス制御プレーン222はまた、バックアップ格納サービス240上のボリュームスナップショットの作成、使用、削除に関連するサービスを提供し得る。ブロックベース格納サービス制御プレーン222はまた、格納ボリュームの使用及びこれらボリュームのスナップショットに関連する性能及び監査データの収集及び処理に関連するサービスを提供し得る。
【0023】
ブロックベース格納サービス220は、様々な異なる方法で格納ボリュームを管理及び維持し得る。格納ボリュームのレプリカを保持する2つ以上の格納ノードの中で、いくつかのデータボリュームに対し、異なる耐久性スキームが実施され得る。例えば、データボリュームの単一障害点を削除すること等、データボリュームの耐久性を向上するために、異なる種類のミラーリング及び/または複製技術が実施され得る(例えばRAID 1)。格納ボリュームへのアクセスを提供するために、格納ノードはそれから、格納ボリュームのレプリカを保持する2つ以上の格納ノード間で、書き込み要求等の入出力要求を調整し得る。
【0024】
プロバイダネットワーク200はまた、前述のように、バックアップ格納サービス240を実施し得る。バックアップ格納サービス240は、ブロックベース格納サービス220により提供される格納と、同じまたは異なる種類の格納を提供し得る。例えば、いくつかの実施形態において、他の格納サービス240は、データをデータオブジェクトとして格納及び管理し得るオブジェクトベース格納サービスを提供し得る。例えば、様々な格納ボリュームのボリュームスナップショットは、特定格納ボリュームのスナップショットオブジェクトとして格納され得る。バックアップ格納サービス240に加えて、プロバイダネットワーク200は、他のネットワークベースサービス250を実施し得る。これには、クライアント210並びにプロバイダネットワーク200の他のサービス(例えばブロックベース格納サービス220、仮想コンピュートサービス230、及び/または他の格納サービス240)が様々なタスクを実行または要求することを可能にする様々な異なる種類の分析、演算、格納、または他のネットワークベースシステムが含まれ得る。
【0025】
クライアント210は、ネットワークプロバイダ200に対し要求を提出するように構成可能な任意の種類のクライアントを含み得る。例えば、所定のクライアント210は、好適バージョンのウェブブラウザを含み得る、あるいはウェブブラウザが提供する実行環境に対する拡張、または実行環境内の拡張として、実行されるように構成されるプラグインモジュールまたは他の種類のコードモジュールを含み得る。あるいは、クライアント210は、データベースアプリケーション(またはそのユーザインターフェース)、メディアアプリケーション、オフィスアプリケーション、または様々な動作を実行するためにプロバイダネットワーク200内のコンピュートインスタンス、格納ボリューム、または他のネットワークベースサービスを利用し得るその他のアプリケーションといったアプリケーションを含み得る。いくつかの実施形態において、このようなアプリケーションは、全ての種類のネットワークベースデータの完全なブラウザサポートを必ずしも実施することなくネットワークベースサービス要求を生成及び処理するのに十分なプロトコルサポート(例えば好適バージョンのハイパーテキスト転送プロトコル(HTTP))を含み得る。いくつかの実施形態において、クライアント210は、レプレゼンテーショナルステートトランスファ(REST)式ネットワークベースサービスアーキテクチャ、ドキュメントベースまたはメッセージベースのネットワークベースサービスアーキテクチャ、または別の好適なネットワークベースサービスアーキテクチャに従って、ネットワークベースサービス要求を生成するように構成され得る。いくつかの実施形態において、クライアント210(例えば演算クライアント)は、コンピュートインスタンスまたは格納ボリュームが提供するブロック格納により提供される演算リソースを使用するクライアント210に実装されたアプリケーションに対し明白な方法で、コンピュートインスタンスまたは格納ボリュームへのアクセスを提供するように構成され得る。少なくともいくつかの実施形態において、クライアント(複数可)210は、クライアント(複数可)210にて実行されるファイルシステムのために、ブロックベース格納サービス220にて実行される格納ボリュームを準備、装備、及び設定し得る。
【0026】
クライアント210は、外部ネットワーク260を介して、プロバイダネットワーク200にネットワークベースサービス要求を伝達し得る。様々な実施形態において、外部ネットワーク260は、クライアント210とプロバイダネットワーク200との間のネットワークベース通信を確立するために必要なネットワークハードウェア及びプロトコルの任意の好適な組み合わせを含み得る。例えば、ネットワーク260は一般に、共同でインターネットを実施する様々な電気通信ネットワーク及びサービスプロバイダを含み得る。ネットワーク260はまた、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)等の私設ネットワーク、並びに公衆または私設無線ネットワークを含み得る。例えば、所定のクライアント210及びプロバイダネットワーク200の両者が、自身の内部ネットワークを有する企業内にそれぞれ準備され得る。このような実施形態において、ネットワーク260は、所定のクライアント210とインターネット間、並びにインターネットとプロバイダネットワーク200間のネットワークリンクを確立するために必要なハードウェア(例えばモデム、ルータ、スイッチ、ロードバランサ、プロキシサーバ等)及びソフトウェア(例えばプロトコルスタック、会計ソフトウェア、ファイアウォール/セキュリティソフトウェア等)を含み得る。いくつかの実施形態において、クライアント210は、公衆インターネットではなく私設ネットワークを使用して、プロバイダネットワーク200と通信し得ることに留意されたい。
【0027】
前述の様々な格納クライアントは、多数の方法で実行され得る。図3は、いくつかの実施形態による、格納クライアントの様々なコンポーネントを例示するブロック図である。クライアント210、仮想コンピュートインスタンス232、または前述の内部クライアントであり得る格納クライアント300は、ネットワーク360(前のネットワーク260と同様)を介してブロックベースサービス370と通信し得る。ブロックベース格納サービス370は、いくつかの実施形態において、ブロックベース格納サービス220に類似し得る。格納クライアント300は、格納クライアント300にて実行されるファイルシステムのために、ブロックベース格納システム内370に保持される格納ボリューム372を装備し得る。
【0028】
様々な実施形態において、格納クライアント300は、格納クライアント300の様々なコンポーネント間の入出力(I/O)を命令するように構成され得るファイルシステムマネジャー310を実行し得る。様々な実施形態において、ファイルシステムマネジャー310は、格納クライアント300のオペレーティングシステム内のカーネルの一環として実行され得る。ファイルシステムマネジャー310は、他の入出力間のファイルシステムに対する変更に対応し得る。ファイルシステムマネジャー310は、スケーリング管理モジュール314を実行し、制御プレーン374からのブロックベース格納サービス370内の格納ボリューム372に対するスケーリングイベントの様々な指示に対応し得る。例えば、スケーリング管理モジュール314は、格納クライアント300にて維持されるファイルシステムを更新するために、図6、7に関して後述される様々な技術を実行し得る。サイズ変更動作は、例えば、ファイルシステムのための様々なメタデータ及び情報構造を更新する(図示せず)。スケーリング管理モジュール314は、いくつかの実施形態において、様々なファイルシステム性能メトリクス(例えば格納容量、アクセスパターン、入出力性能)を収集し、それらを制御プレーン374へ送信し得る。少なくともいくつかの実施形態において、制御プレーン374は、格納クライアントにて収集される性能メトリクスに少なくとも部分的に基づいて、格納ボリュームに対するスケーリングイベントを検出し得る。様々な実施形態において、ファイルシステムマネジャー310は、バックアップ管理モジュール316を実行し得る。バックアップ管理モジュール368は、ファイルシステムのスナップショットを、前の図2におけるバックアップ格納サービス240が提供し得る等のバックアップ格納へ差し向ける、または送信し得る。
【0029】
図4は、いくつかの実施形態による、ブロックベース格納サービスの様々なコンポーネントを例示するブロック図である。図8に後述されるコンピューティングシステム1000等の1つまたは複数のコンピューティングノードまたはシステムは、ブロックベースサービス400の様々なコンポーネントを実行し得る。格納クライアント(複数可)450は、ネットワーク452(前述のネットワーク260と同様)を介して、または前述のプロバイダネットワーク内の内部ネットワーク経路(コンピュートインスタンス232がブロックベース格納サービス400と通信することを可能にし得る)を介して、ブロックベース格納サービス400にアクセスし得る。
【0030】
様々な実施形態において、ブロックベース格納サービス400は、フロントエンドモジュール412を実行し得る。フロントエンドモジュール412は、サービス要求を受信し、要求を転送する、またはリソース管理モジュール414、動的ボリュームスケーリングモジュール418、またはリソースモニター416からの適切な応答を伝えるように構成され得る。様々な実施形態において、フロントモジュール410は、ブロックベース格納サービス400に対する要求を、サービス400のプログラマチックインターフェース(API)に従って変換し、及び/またはプログラマチックインターフェースを使用する格納クライアント(複数可)450におけるウェブサイトまたはコマンドラインインターフェースを介して実行されるユーザインターフェース等、別のインターフェースを介して受信される要求を受信、処理、開示するように構成され得る。
【0031】
様々な実施形態において、ブロックベース格納サービス400は、リソース管理モジュール414を実行し得る。リソース管理モジュール414は、クライアント450用格納ボリュームを供給し、格納ボリュームのスケーリングポリシーを受け入れるように構成され得る。例えば、リソースマネジャー414は、ブロックベース格納サービス400における特定アカウント(及び関連格納ボリューム)を、特定クライアント450に関連付ける情報を格納し得る。例えば、スケーリングイベントの結果、異なる格納ボリューム費用が決定され得る。格納ボリュームに関連付けられたアカウント情報により、格納ボリュームの計量及び課金が、正しいアカウントに追加されることが可能になり得る。リソース管理モジュール414は、いくつかの実施形態において、クライアント450が格納ボリュームにアクセスするためのアクセス認証情報または他の情報を格納/管理し得る。いくつかの実施形態において、リソース管理モジュール414は、複数の格納クライアント450が同一の格納ボリュームにアクセス可能なように、様々なロックまたは同期スキームを実行し得る。リソース管理モジュール412は、格納ノード420上のボリューム格納426の部分等、格納リソースを供給するように構成され得る。リソース管理モジュール414はまた、特定クライアント450用の格納ボリュームにアクセスするために、クライアント450またはインスタンスに対し、アクセス認証情報及び他の識別情報を提供し得る。
【0032】
様々な実施形態において、ブロックベース格納サービス400は、リソースモニター416を実行し得る。リソースモニター416は、性能メトリクスを受信し、及び/または格納ノード(複数可)420に対しヘルスチェックを実行し得る。リソースモニター416は、当データを分析、集約、及び/またはリソースマネジャー414(様々なリソース管理動作を実行するため)及び動的ボリュームスケーリングモジュール418に当データを提供し得る。例えば、リソース管理モジュール414は、リソースモニター416により収集される性能メトリクス及び他の情報に基づいて、スケーリング動作に関わる新たな格納の供給または取得/格納の削除のために、配置決定を行うように構成され得る。少なくともいくつかの実施形態において、リソースモニター416は、統計に基づく予測を提供し、これにより格納ノードは、格納ボリュームのスケーリング履歴に基づいて格納ボリュームに対するより多くのデータを受け入れることが可能になる。
【0033】
様々な実施形態において、ブロックベース格納サービスは、動的ボリュームスケーリングモジュール418を実行して、格納ボリュームを動的にスケーリングし得る。下の図5、6に関してより詳細に論述されるように、動的ボリュームスケーリングモジュール418は、特定の格納ボリュームに対する格納スケーリングイベントを検出し、スケーリングイベントに従って格納リソースを変更し、格納クライアントに対しスケーリングイベントに関する開示を提供し得る。少なくともいくつかの実施形態において、動的ボリュームスケーリングモジュールは、様々なブロックベース格納サービス性能基準に関して引き起こされたスケーリングイベントを検出し得る。例えば、ある格納ノード(複数可)420は、他の格納ノードより大きい割合のネットワークトラフィックを受信する「ホットスポット」として特定され得る。ホットスポットへのネットワークトラフィックを軽減するために、他の格納ノードに対しあるボリューム格納を再分配するようボリュームスケーリングイベントが引き起こされ得る。動的ボリュームスケーリングモジュール418はまた、スケーリングされる格納ボリュームに対する様々な格納メンテナンス動作の実行を命令し得る。例えば、格納ノード(複数可)420におけるボリューム格納426内の未使用格納スペースを低減するために、デフラグメンテーション動作が行われ得る。様々な他の圧縮、再利用、及び/または再編制技術は、動的ボリュームスケーリングモジュール418(または格納ノード(複数可)422における制御プレーン410または入出力マネジャー422の他のコンポーネント)から命令され得る。
【0034】
ブロックベース格納サービス400は、複数の格納ノード(複数可)420を実行して、ブロックベース格納サービス400にて保持される格納ボリュームの持続的格納を提供し得る。格納ノード420は、格納サーバまたは他のコンピューティングシステム(例えば図8に関して後述されるコンピューティングシステム1000)等、1つまたは複数のコンピューティングシステムまたはデバイスであり得る。各格納ノード420は、ボリューム格納426における格納ボリュームのそれぞれのレプリカまたは部分を保持し得る。格納ノード420はまた、マルチテナント格納を提供し得る。例えば、いくつかの実施形態において、格納ノードは、複数格納クライアント450のために、ボリューム格納426内に格納ボリュームを保持し得る。ボリューム格納426は、それぞれの格納ノード420を実施するコンピューティングシステムまたはデバイスに直接取り付け可能な1つまたは複数のブロックベース格納デバイス(例えばハードディスクドライブ、ソリッドステートドライブ等)に、それぞれのデータボリュームを存続させ得る。様々な実施形態において、要求される性能特徴(例えばSSD上の高供給格納ボリューム)を提供するために、いくつかの格納ボリュームが対応格納デバイスを有する格納ノード上で実施され得るように、格納ノードは異なる種類の構成の格納デバイスを有し得る。
【0035】
ブロックベース格納サービス400は、様々な異なる方法で格納ボリュームを管理及び維持し得る。格納ボリュームの耐久性ステートを確立するデータボリュームの同一レプリカを保持する2つ以上の格納ノードの中で、いくつかの格納ボリュームに対し、異なる耐久性スキームが実施され得る。例えば、格納ボリュームの単一障害点を削除すること等、格納ボリュームの耐久性を向上するために、異なる種類のミラーリング及び/または複製技術が実施され得る(例えばRAID 1)。データボリュームへのアクセスを提供するために、格納ノード420はそれから、格納ボリュームのレプリカを保持する2つ以上の格納ノード間で、書き込み要求等の入出力要求を調整し得る。例えば、所定の格納ボリュームに対し、1つの格納ノードがマスタ格納ノードとして機能し得る。マスタ格納ノードは、様々な実施形態において、格納ボリュームのクライアントからの要求(例えば入出力要求)の受信及び処理を行い得る。従って、マスタ格納ノードはそれから、格納ボリュームに対する書き込み要求等の入出力要求、またはその他の変更もしくは修正の複製を、スレーブ格納ノードとして機能する1つまたは複数の他の格納ノードに対し調整し得る。従って、格納ボリュームに対する書き込み要求が格納ノードにて受信されると、格納ノードは、書き込み要求を別の格納ノードに転送し、書き込みを完了する前に、別の格納ノードが書き込み要求を完全に受信したことを認めるまで待機し得る。マスタ格納ノードは、スナップショット動作または他の入出力動作(例えば読み出し要求対応)のような、格納ボリュームに対する他の動作を命令し得る。いくつかの実施形態において、マスタ及びスレーブ格納ノードの役割は、データボリュームごとに割り当てられ得ることに留意されたい。
【0036】
格納ノード420は、入出力マネジャー422等、それぞれの入出力マネジャーを実行し得る。入出力マネジャー422は、特定の格納ノードにて保持されるデータボリュームに対する入出力要求に対応し得る。従って、入出力マネジャー422は、例えば格納ノードにおける格納ボリュームに対する書き込み要求を処理及び対応し得る。入出力マネジャー422は、ブロックベース格納サービスアプリケーションプログラミングインターフェース(API)及び/またはインターネット小型コンピュータシステムインターフェース(iSCSI)等の他の通信プロトコルに従って、入出力要求を処理するように構成され得る。いくつかの実施形態において、入出力マネジャー340は、格納ボリューム(または格納ノード420にて従って保持される部分)に関するファイルシステムマッピング情報を実施し得る。様々な実施形態において、ファイルシステム入出力は、ファイルシステムマッピング情報を使用して、利用され得る。
【0037】
図4に関する前の説明は、例示目的のみで提供され、説明される機能を実行する様々なコンポーネントの数、配置、または構成に関して限定する意図はないことに留意されたい。
【0038】
図5は、いくつかの実施形態による、格納クライアントと、格納ボリューム動的スケーリングを実行するブロックベース格納サービスとの間の対話を例示するブロック図である。格納クライアント510(または格納クライアント510のために作動する別のクライアントデバイス)は、格納ボリュームに対する要求561を、格納サービスインターフェース580(例えばAPIまたはGUI)を介して格納サービス制御プレーン520に送信し得る。要求は、格納ボリュームの初期サイズを含む様々なパラメータ、並びに作成時に格納ボリュームのフォーマットを行うファイルシステム構成を含み得る。様々な実施形態において、要求561は、格納サービスインターフェース580を介して、格納ボリュームのスケーリングポリシーを指定し得る。スケーリングポリシーを指定する個別の要求、並びにスケーリングポリシーを更新、置き換え、及び/または削除する様々な要求(例示せず)が行われ得ることに留意されたい。格納制御プレーン520は、格納ノード(複数可)530等の1つまたは複数の格納リソースにわたり格納ボリュームの供給563を行い得る。一度供給されると、格納サービス制御プレーン520は、格納サービスインターフェース580を介して格納クライアント510に対し、格納ボリュームエンドポイント565を提供し得る。例えば、iSCSI対象が、格納クライアント510に提供され得る。
【0039】
いくつかの実施形態において、格納クライアント510はそれから、格納ノード(複数可)530にて保持される格納ボリュームに対し、ファイルシステム入出力を開始し得る。ファイルシステム入出力は、iSCSI等のネットワークベース格納プロトコル582に従って実行され得る。性能メトリクス569並びに格納ボリュームの監視に関連した他の情報が、格納ノード(複数可)530から格納サービス制御プレーン520へ報告され得る。いくつかの実施形態においては、格納クライアント510が、性能メトリクス589(これらの一部は格納サービスでは収集不可能であり得る)を、スケーリングイベントの検出に使用されるように、格納サービス制御プレーン520へ送信し得る。格納ボリュームに対しスケーリングイベントが検出されると、格納サービス制御プレーン520は、格納ボリュームをスケーリングするための持続的格納の修正571を行い得る。例えば、様々な複写、移動、割り当て、削除、またはデフラグ命令が、格納ノード(複数可)530へ送信され得る。格納サービス制御プレーン520はまた、格納ボリュームに対するスケーリングイベントの開示573を、格納サービスインターフェース580を介して格納クライアント510に対し提供し得る。少なくともいくつかの実施形態において、格納クライアント510は、格納サービスインターフェース580を介して、スケーリングイベント応答575を提供し、これは、格納ボリューム571をスケーリングするための持続的格納の修正を調整及び/または実行するために、使用され得る。従って、図5に例示される様々なメッセージは、異なる時点に送信及び/または受信され得るため、前の説明に限定する意図はないことに留意されたい。一度ファイルシステムが更新されると、格納クライアント510は、スケーリングされた格納ボリュームに対し、更新されたファイルシステム入出力577を実行し得る。少なくともいくつかの実施形態において、格納ボリュームがオンラインで、ファイルシステム入出力を引き続き受け付けられるように、格納ボリュームのスケーリングは実行されることに留意されたい。
【0040】
様々な実施形態において、上記の図1〜5及び下記の図6〜7で説明されるネットワークベースまたはプログラマチックインターフェース(API等)の呼び出し及び応答は、セキュアプロキシ接続(例えばサービス及び/またはプロバイダネットワークへのゲートウェイ制御プレーンにより管理されるもの)上で実行され得る、または公衆ネットワーク上、あるいは仮想私設ネットワーク(VPN)接続等の私設チャネル上で実行され得ることに留意されたい。本明細書において説明されるシステムのコンポーネントに対する及び/またはコンポーネント間のこれら及び他のAPIは、簡易オブジェクトアクセスプロトコル(SOAP)技術及びレプレゼンテーショナルステートトランスファ(REST)技術を含むがこれに限定されない異なる技術に従って実行され得る。例えば、これらのAPIは、必ずしもではないが、SOAP APIまたはRESTful APIとして実行され得る。SOAPは、ネットワークベースサービスに即して情報を交換するプロトコルである。RESTは、分散ハイパーメディアシステムのアーキテクチャ様式である。RESTful API(RESTfulネットワークベースサービスとも称され得る)は、HTTP及びREST技術を使用して実行されるネットワークベースサービスAPIである。本明細書において説明されるAPIは、いくつかの実施形態において、ネットワークベースデータストア、遠隔持続的ログを実施するクライアントデバイス、または他のシステム、サービス、コンポーネント、もしくはデバイスとの統合に対応するために、C、C++、Java、C#、及びPerlを含むがこれに限定されない様々な言語のクライアントライブラリでラップされ得る。
【0041】
図2〜5に関して前述される格納クライアントファイルシステム用格納ボリュームの動的スケーリングの様々な実施形態は、様々な方法で動的スケーリングを実行し得る。さらに、格納クライアントファイルシステム用格納ボリュームの動的スケーリングは、このようなシステムに限定されない。例示的ブロック格納サービスに加えて、様々な他の種類の格納システムが、動的スケーリングを実行し得る。さらに、ファイルシステム自体は、種類、スキーム、または実施態様において幅広く異なり得る。タブレットコンピュータ、ラップトップ、携帯電話、またはパーソナルデジタルアシスタント等の携帯コンピューティングデバイスを含む数多くの異なるデバイスもまた、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行し得る。図6は、いくつかの実施形態による、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行する方法及び技術を例示する高次フローチャートである。システム及び/またはデバイスの異なる組み合わせが、後述の様々な技術を実施し得る。
【0042】
610に示されるように、様々な実施形態において、ネットワークベースデータストアの一環として実施される格納に、格納ボリュームは供給され得る。ネットワークベースデータストアは、ブロックベースデータストア、または格納クライアントにて実施されるファイルシステムが利用し得る他のデータストアであり得る。格納クライアントは、格納クライアントにて実施されるファイルシステムのための格納として機能するようネットワークベースデータストア内に格納ボリュームを装備するように構成され得る任意のシステム、プログラム、またはデバイスであり得る。少なくともいくつかの実施形態において、ネットワークベース格納プロトコル(例えばインターネット小型コンピュータシリアルインターフェース(iSCSI))は、格納クライアントとネットワークベースデータストア内の格納ボリュームとの間にまたがり通信を行うために使用され得る。複数の格納クライアントは、いくつかの実施形態において、同一の格納ボリュームにアクセスし、よってそれぞれが後述の技術を実行し得る。
【0043】
少なくともいくつかの実施形態において、スケーリングポリシーは、格納ボリュームの供給要求と共に含まれ得る。例えば、APIまたはGUI等のネットワークベースインターフェースは、供給要求の提出、及び格納ボリュームに対するスケーリングポリシーの定義を行うために使用され得る。スケーリングポリシーは、1つまたは複数の条件を含み得る。例えば、スケーリングポリシーは、異なる閾値またはアラーム、並びにそれらが満たされたまたは引き起こされた場合の結果的スケーリング行動を定義し得る。例えば、格納ボリュームにおける可用格納容量は、超えられると格納ボリューム内の格納容量を適宜拡大または縮小させる下限及び/または上限閾値を有し得る。別の実施例において、格納ボリュームの部分(または全て)を格納する1つまたは複数の格納デバイスにおける毎秒入出力動作数(IOP)等の格納ボリュームの性能特徴も同様である。スケーリングポリシーは、引き起こされたアラームに応じて取られる行動を定義し得る。例えば、スケーリングポリシーは、格納ボリュームが拡大または縮小され得る割合または量を定義し得る。いくつかの実施形態において、スケーリングポリシーは、格納ボリュームの部分(または全て)を保持するレプリカまたはノードの数を示して、ボリュームが再分配されるべきか否かを示し得る。いくつかの実施形態において、ネットワークベースデータストアが格納サービスである場合、スケーリングポリシーは、費用閾値に関して定義され得る。いくつかの実施形態において、スケーリングポリシーは、様々な情報を複数の異なる要求欄及び/またはメッセージフラグに入力すること等により、APIを使用してネットワークベースデータストアに対し記述され提供され得る。スケーリングポリシーは、様々な人間に解読可能及び/またはスクリプト技術(例えばXMLまたはJSON)を使用して定義され得る。様々な実施形態において、スケーリングポリシーは、修正、置き換え、及び/または削除され得る。スケーリングポリシーは、少なくともいくつかの実施形態において、クライアント及び/またはネットワークベースプロバイダにより、修正または削除され得る。
【0044】
様々な実施形態において、620に示されるように、格納ボリューム(またはネットワークベースデータストアにわたる監視の場合は複数の格納ボリューム)が監視され得る。様々な性能メトリクス、トラフィックメトリクス、及び/またはスケーリングイベントが起こったか否かを示すその他の情報が、収集及び/または分析され得る。制御プレーンまたは他の監視コンポーネントは、いくつかの実施形態において、格納ボリュームを保持する様々な格納ノードまたはコンポーネントからのレポートを受信し得る、あるいは格納ボリューム(例えばロードバランサまたは他のトラフィックコントローラ)と対話し得る。いくつかの実施形態において、格納クライアントはまた、様々な性能メトリクスを提供し得る。様々な実施形態において、630からの肯定的出向により示されるように、格納ボリュームに対する指定されたスケーリングポリシーに従って、スケーリングイベントが検出され得る。スケーリングイベントは、格納ボリュームに対するスケーリングポリシーの条件の不成立/成立により引き起こされ、当該条件の不成立/成立は、性能メトリクスの分析に基づいて判別され得る。様々な実施形態において、引き起こされるスケーリングイベントは、スケーリングポリシー内で定義される対応応答行動を示し得る。
【0045】
いくつかの実施形態において、ネットワークベースデータストアポリシー、配置スキーム、または他のサービス管理動作もしくは制約は、格納ボリュームに対し指定されたデフォルトスケーリングポリシーとしての役割を果たし得る。例えば、特定の格納ノード(複数の異なる格納ボリュームの部分を提供するマルチテナントであり得る)上で可用格納容量に場合、スケーリングイベントが検出され得る。特定の格納ノード上の格納ボリュームのうちの1つまたは複数に関して、スケーリングイベントは、1つまたは複数の新たな格納場所に対し、格納ボリュームの再分配を引き起こし得る(これにより格納ボリュームの修正された格納場所に基づいたファイルシステム変更がもたらされ得る)。同様に、熱管理、トラフィック制御、及び/または他の格納システム関連は、スケーリングイベントを引き起こして、格納ボリュームに対するファイルシステム入出力要求に対応する作業負荷を再分配(または統合)し得る。
【0046】
格納ボリュームに対しスケーリングイベントが検出されない場合には、620からの否定的出向により示されるように、格納ボリュームの監視は継続され得る。格納ボリュームに対しスケーリングイベントが検出された場合には、630からの肯定的出向により示されるように、格納ボリュームは動的にスケーリングされ得る。640に示されるように、様々な実施形態において、スケーリングポリシーに従って格納ボリュームを動的にスケーリングするように、格納ボリュームを保持する格納は修正され得る。従って、現在の格納リソース及びデバイス、または新たな格納リソースまたはデバイス(例えばディスクドライブまたは格納ノード)の部分が、格納ボリュームの保持に追加され得る、あるいは格納ボリュームの保持から削除され得る。少なくともいくつかの実施形態において、持続的格納の修正は、格納クライアントから受信した情報に応じて実行され得る。例えば、図7に関してさらに詳しく後述されるように、ファイルシステムは、格納ボリュームをより小さいサイズにスケーリングするために、格納ボリュームからどの格納場所を取り除くかを決定し得る。前記のように、持続的格納の修正は、例えば格納ボリュームに対し格納容量及び/または格納帯域(例えばIOP)が拡大または縮小され得る割合を制限し得るスケーリングポリシーに従って行われ得る。
【0047】
650に示されるように、格納ボリュームに対して検出されたスケーリングイベントは、様々な実施形態において、格納クライアントに対し開示され得る。スケーリングされた格納ボリュームを使用するよう格納クライアントにおけるファイルシステムが更新されるように、開示は提供され得る。例えば、いくつかの実施形態において、開示は、格納ボリュームにて拡大または縮小される格納量(例えばデータブロック/ページの数)を提供する等により、ファイルシステムに対し格納クライアントにてサイズ変更動作を行うための情報またはパラメータを提供し得る。開示は、格納クライアントにて作動しているオペレーティングシステムまたはネットワークベースデータストアエージェントが、ファイルシステムの更新を実行し得るスクリプトまたは実行ファイルを提供し得る。いくつかの実施形態において、スケーリングイベントの開示は、格納ボリュームに対する変更に関する簡潔通知を、格納クライアントに提供し得る。ネットワークベースデータストアが、格納ボリュームに対するスケーリングイベントの結果としての新たな/再構成された格納場所を、スケーリングイベント前に格納クライアントに提示されていた格納場所とリンクするようマッピング情報を保持し得るため、ファイルシステムに対する更新は単純に、拡大または縮小された格納を説明することであり得る(ファイルのデフラグ等、サイズ変更動作の負荷を、格納クライアントにおけるファイルシステムの代わりに、ネットワークベースデータストアに対し転嫁する)。
【0048】
格納クライアントにて実行されるファイルシステムは、前記のように、ネットワークベースデータストア内のスケーリングされた格納ボリュームに対し様々な方法で応答し得る。例えば、いくつかのファイルシステムは、スケーリングされた格納ノードのサイズの開示を格納クライアントに提供するのに十分であり得るようなオンラインサイズ変更機能を実行し、これによりファイルシステムは、ネットワークベースデータストアとのさらなる補助または対話なしに、開示されたサイズに従って更新されることが可能となる。しかしながら、いくつかのファイルシステムは、格納クライアントにおけるファイルシステムを更新し、及び/またはネットワークベースデータストアにおける格納ボリュームを再スケーリングするために、制御プレーン(または格納ボリューム再スケーリングを命令する他のネットワークベースデータストアコンポーネント)と、対話、協働、及び/または連動し得る。図7は、いくつかの実施形態による、ファイルシステム用格納ボリュームのスケーリングイベントに従ってファイルシステムを更新する方法及び技術を例示する高次フローチャートである。
【0049】
格納ボリュームを拡大または縮小させるスケーリングイベント等、異なる種類のスケーリングイベントが、様々な実施形態において、格納クライアントにて別様に対応され得る。710に示されるように、いくつかの実施形態において、格納クライアントにて実行されるファイルシステム用にネットワークベースデータストアにて実行される格納ボリュームを拡大させるスケーリングイベントの開示が、格納クライアントにて受信され得る。様々な実施形態において、開示は、拡大量を提供し得る。例えば、開示は、スケーリングされた格納ボリュームに割り当てられた格納スペースの追加データブロックまたはページの数を提供し得る。いくつかの実施形態において、格納ボリュームに割り当てられた特定論理ブロック等のマッピング情報が開示され得る、あるいはこのような決定は格納クライアントにおけるファイルシステムに任され得る/確保され得る。
【0050】
720に示されるように、様々な実施形態において、ファイルシステムは、開示されたスケーリングイベントに従って、格納ボリュームに対する追加格納容量を含むように更新され得る。例えば、ファイルシステムは、追加格納容量を、追加格納スペースを利用し得る格納クライアントにおける他のプログラム、アプリケーション、コンポーネント、またはデバイスによりアクセス可能にするように、ファイルシステムメタデータ及び/または他のファイルシステム構造を更新する1つまたは複数の構成動作を実行し得る。索引構造、スーパーブロック、及び/またはiノードは、スケーリングされた格納ボリュームを利用するようファイルシステムを更新する際に修正され得る多数の異なるファイルシステム構造のうちの一部である。730に示されるように、追加格納容量を含むように一度ファイルシステムが更新されると、その後、後続のファイルシステム入出力(I/O)に関してはスケーリングされた格納ボリュームにアクセスするように、更新されたファイルシステムが利用され得る。例えば、ファイルシステムを利用する格納クライアントにおけるプログラム、アプリケーション、コンポーネント、またはデバイスは今度、追加ファイルの格納(または既存ファイルへの追加)を行うために、追加格納容量を利用し得る。
【0051】
いくつかの種類のスケーリングイベントに関して、ファイルシステムは、ネットワークベースデータストアにおける格納ボリュームをスケーリングする上で、より大きな役割を果たし得る。例えば、730に示されるように、いくつかの実施形態において、格納クライアントにて実行されるファイルシステム用にネットワークベースデータストアにて実行される格納ボリュームを縮小させるスケーリングイベントの開示が、格納クライアントにて受信され得る。開示は、格納ボリュームの格納容量における削減を特定し得る(例えばデータブロックまたはページの数)。
【0052】
様々な実施形態において、740に示されるように、スケーリングイベントに従って格納ボリュームを縮小させるために、格納ボリュームに割り当てられた格納スペースを回収するようにファイルシステムは更新され得る。例えば、格納スペースを利用し得る格納クライアントにおける他のプログラム、アプリケーション、コンポーネント、またはデバイスによりアクセス可能な格納容量を削減するように、ファイルシステムメタデータ及び/または他のファイルシステム構造を更新する1つまたは複数のサイズ変更動作が実行され得る。索引構造、スーパーブロック、及び/またはiノードは、スケーリングされた格納ボリュームを利用するようファイルシステムを更新する際に修正され得る多数の異なるファイルシステム構造のうちの一部である。少なくともいくつかの実施形態において、ファイルシステムを更新する一環として、縮小された格納ボリュームのファイルシステムの性能を向上させるために、様々な実施形態において、回収する特定の格納場所が同定され得る。例えば、残りの格納場所におけるデータを緊密にまとめるために、ある格納場所は回収対象として選ばれ得る。格納クライアントにおけるファイルシステムは、どの格納場所を回収したほうがより有益か、ネットワークベースデータストアより良く把握し得る(格納クライアントにおけるファイルシステムの実施態様に依存し得ない)。様々な実施形態において、750に示されるように、ネットワークベースデータストアにおける持続的格納内で回収する格納スペースを特定する応答が、格納ボリュームの制御プレーンに送信され得る。少なくともいくつかの実施形態において、格納ボリュームの持続的格納は、回収する特定格納スペースを同定する(例えば特定論理データブロックまたはページを同定する)応答が受信されるまで、修正され得ない。
【0053】
730に示されるように、格納ボリューム内の回収された格納スペースを取り除くように一度ファイルシステムが更新されると、その後、後続のファイルシステム入出力(I/O)に関してはスケーリングされた格納ボリュームにアクセスするように、更新されたファイルシステムが利用され得る。例えば、ファイルシステムを利用する格納クライアントにおけるプログラム、アプリケーション、コンポーネント、またはデバイスは、追加ファイルの格納(または既存ファイルへの追加)を行う際、回収された格納スペースの使用、または当該格納スペースの検討はもはや行い得ない。
【0054】
構成要素730〜750に関する格納ボリュームを縮小させる前述の実施例は、格納クライアントにおけるファイルシステムとネットワークベースデータストアとの間で格納スペースの回収を調整することを伴うが、少なくともいくつかの実施形態において、ネットワークベースデータストアは、ファイルシステム入出力要求を処理するためにマッピング情報を保持し得る。そのため、ネットワークベースデータストアは、格納クライアントにおいて格納スペースの選択またはデフラグメンテーションを行うことなく、どの格納スペースを回収するか(すなわちデフラグメンテーションを行うか)選択可能である。例えば、ネットワークベースデータストアから格納クライアントにおけるファイルシステムに提示される論理ブロック数は、格納ボリュームの持続的格納における対応論理ブロック数とは異なり得る。マッピング情報により、ネットワークベースデータストアの制御プレーンまたは他のコンポーネントは、格納クライアントに作業負荷を課さずに、回収する(すなわちデフラグする)格納スペースを最適に選択することが可能であり得る。代わりに、ネットワークベースデータストアにて受信される格納クライアントからのファイルシステム入出力要求は、要求を処理するために格納ボリューム用に保持されたマッピング情報に従って、変換され得る。
【0055】
本明細書において説明される方法は、様々な実施形態において、ハードウェア及びソフトウェアの任意の組み合わせにより実施され得る。例えば、一実施形態において、方法は、プロセッサに接続されたコンピュータ可読格納媒体上に格納されたプログラム命令を実行する1つまたは複数のプロセッサを含むコンピュータシステム(例えば図8のコンピュータシステム)により実施され得る。プログラム命令は、本明細書において説明される機能(例えば本明細書において説明されるデータベースサービス/システム及び/または格納サービス/システムを実施する様々なサーバ及び他のコンポーネントの機能)を実行するように構成され得る。本明細書において図示及び説明される様々な方法は、方法の例示的実施形態を表す。任意の方法の順序は変更され、そして様々な要素が追加、並替、結合、省略、変更等され得る。
【0056】
前述の内容は、以下の条項を考慮することでより理解され得る。
1.複数の格納クライアントのために1つまたは複数のそれぞれの格納ボリュームを保持するブロックベース格納サービスを実施する複数のコンピュートノードと、
前記複数の格納ボリュームを保持するために格納を提供する複数の格納ノードと、
前記ブロックベース格納サービスのための制御プレーンを実行する前記複数のコンピュートノードのうちの少なくともいくつかと、
を備えるシステムであって、前記制御プレーンは、
前記複数の格納ボリュームを監視し、
前記複数の格納ボリュームの前記監視に少なくとも部分的に基づいて、前記格納ボリュームに対する指定されたスケーリングポリシーに従って、前記複数の格納ボリュームのうちの格納ボリュームに対するスケーリングイベントを検出し、前記格納ボリュームは、前記複数の格納クライアントのうちの格納クライアントにて装備され、かつファイルシステム用に構成され、
前記スケーリングイベントの前記検出に応じて、
前記スケーリングポリシーに従って、前記格納クライアント用の前記格納ボリュームを動的にスケーリングするために、前記格納ボリュームに割り当てられた前記格納を修正し、
前記修正された格納内の前記スケーリングされた格納ボリュームを使用するよう前記格納クライアントにおける前記ファイルシステムが更新されるように、前記格納クライアントに対し、前記格納ボリュームの前記スケーリングイベントを開示する、
ように構成される、前記システム。
【0057】
2.前記格納ボリュームに対し前記指定されたスケーリングポリシーは、前記格納クライアントから前記ブロックベース格納サービスのインターフェースを介して受信される、条項1に記載のシステム。
【0058】
3.前記格納ボリュームに対する前記スケーリングイベントの前記開示を受信し、
前記スケーリングイベントに従って前記ファイルシステムを更新し、
前記更新されたファイルシステムを利用して、後続のファイルシステム入出力(I/O)に関して前記スケーリングされた格納ボリュームにアクセスする、
ように構成された前記格納クライアントを
さらに備える条項1に記載のシステム。
【0059】
4.前記ファイルシステムのために1つまたは複数の性能メトリクスを収集し、
前記1つまたは複数の性能メトリクスを前記制御プレーンに送信する、
ように構成された前記格納クライアントを
さらに備えるシステムであって、
前記スケーリングイベントの前記検出はさらに、前記格納クライアントにて収集された前記1つまたは複数の性能メトリクスに基づく、
条項1に記載のシステム。
【0060】
5.前記ブロックベース格納サービスは、プロバイダネットワークの一環として実施される複数のネットワークベースサービスのうちの1つであり、前記格納クライアントは、前記プロバイダネットワークにおけるその他のネットワークベースサービスのうちの1つの一環として実施される、条項1に記載のシステム。
【0061】
6.1つまたは複数のコンピューティングデバイスにより、
格納クライアント用ネットワークベースデータストアの一環として実施される格納に格納ボリュームを保持することであって、前記格納ボリュームは前記格納クライアントにて装備され、かつファイルシステムのために構成される、前記格納クライアント用の前記ネットワークベースデータストアの一環として実施される、前記格納に前記格納ボリュームを保持することと、
前記格納ボリュームに対し指定されたスケーリングポリシーに従って、前記格納ボリュームのスケーリングイベントを検出することと、
前記格納ボリュームの前記スケーリングイベントの検出に応じて、
前記スケーリングポリシーに従って、前記格納クライアント用の前記格納ボリュームを動的にスケーリングするために、前記格納ボリュームを保持する前記格納を修正することと、
前記修正された格納内の前記スケーリングされた格納ボリュームを使用するよう前記格納クライアントにおける前記ファイルシステムが更新されるように、前記格納クライアントに対し、前記格納ボリュームの前記スケーリングイベントを開示することと、
を実行することを含む方法。
【0062】
7.前記格納ボリュームに対し前記指定されたスケーリングポリシーは、前記格納クライアントから前記ネットワークベースデータストアのインターフェースを介して受信される、条項6に記載の方法。
【0063】
8.前記ネットワークベースデータストアは、前記格納クライアントを含む複数の異なる格納クライアントのために、前記格納ボリュームを含む複数の格納ボリュームを保持するマルチテナントのブロックベース格納サービスであり、
前記格納ボリュームを保持する前記格納は、前記複数の格納ボリュームを保持する格納デバイスの集合の一部であり、前記格納ボリュームの前記スケーリングイベントを検出することは、前記複数の格納ボリュームを保持する格納デバイスの前記集合を監視することに少なくとも部分的に基づく、条項6に記載の方法。
【0064】
9.前記スケーリングイベントは前記格納ボリュームを拡大させ、前記格納ボリュームを保持する前記格納を修正することは、前記格納ボリュームに追加格納スペースを割り当てることを含む、条項6に記載の方法。
【0065】
10.前記格納ボリュームに対する前記スケーリングイベントの前記開示を、前記格納クライアントにて受信することと、
前記スケーリングイベントに従って、前記格納ボリュームに対する追加格納容量を含むように、前記ファイルシステムを前記格納クライアントにて更新することと、
前記更新されたファイルシステムを前記格納クライアントにて利用して、後続のファイルシステム入出力(I/O)に関して前記スケーリングされた格納ボリュームにアクセスすることと、
をさらに含む条項9に記載の方法。
【0066】
11.前記保持、前記検出、前記修正、及び前記開示は、前記ネットワークベースデータストアの前記制御プレーンにより実行され、
前記スケーリングイベントは前記格納ボリュームを縮小させ、
前記方法はさらに、
前記格納ボリュームに対する前記スケーリングイベントの前記開示を、前記格納クライアントにて受信することと、
前記スケーリングイベントに従って、前記格納ボリュームに割り当てられた格納スペースを回収するように、前記ファイルシステムを前記格納クライアントにて更新することと、
前記格納クライアントから、前記ネットワークベースデータストアの前記制御プレーンに対し、前記格納内で回収する前記格納スペースを特定するスケーリングイベント応答を送信することと、
前記更新されたファイルシステムを前記格納クライアントにて利用して、後続のファイルシステム入出力(I/O)に関して前記スケーリングされた格納ボリュームにアクセスすることと、
を含み、
前記格納ボリュームを保持する前記格納を修正することは、前記格納の前記特定された格納スペースを回収することを含む、
条項6に記載の方法。
【0067】
12.前記検出、前記修正、及び前記開示は、前記格納ボリュームを解除することなく実行される、条項6に記載の方法。
【0068】
13.前記ネットワークベースデータストアは、マルチテナントのブロックベース格納サービスであり、前記格納クライアントは、前記ブロックベース格納サービスの複数の格納クライアントのうちの1つである、条項6に記載の方法。
【0069】
14.前記ブロックベース格納サービスは、プロバイダネットワークの一環として実施される複数のネットワークベースサービスのうちの1つであり、前記複数の格納クライアントのうちの少なくともその他の1つは、前記プロバイダネットワークにおけるその他のネットワークベースサービスのうちの1つの一環として実施され、前記格納クライアントは前記プロバイダネットワークの外部で実施される、条項13に記載の方法。
【0070】
15.プログラム命令を記憶する非一時的コンピュータ可読記憶媒体であって、前記プログラム命令は1つまたは複数のコンピューティングデバイスにより実行されると、前記1つまたは複数のコンピューティングデバイスに、
格納クライアント用ネットワークベースデータストアの一環として実施されるブロックベース格納に保持される格納ボリュームを監視することであって、前記格納ボリュームは前記格納クライアントにて装備され、かつファイルシステムのために構成される、前記格納クライアント用の前記ネットワークベースデータストアの一環として実施される前記ブロックベース格納に保持される前記格納ボリュームを監視することと、
前記監視に少なくとも部分的に基づいて、前記格納ボリュームに対し指定されたスケーリングポリシーに従って、前記格納ボリュームのスケーリングイベントを検出することと、
前記格納ボリュームの前記スケーリングイベントの検出に応じて、
前記スケーリングポリシーに従って、前記格納クライアント用の前記格納ボリュームを動的にスケーリングするために、前記格納ボリュームを保持する前記ブロックベース格納を修正することと、
前記修正されたブロックベース格納内の前記スケーリングされた格納ボリュームを使用するよう前記格納クライアントにおける前記ファイルシステムが更新されるように、前記格納クライアントに対し、前記格納ボリュームの前記スケーリングイベントを開示することと、
を実行させる、前記非一時的コンピュータ可読記憶媒体。
【0071】
16.前記格納ボリュームに対し前記指定されたスケーリングポリシーは、前記格納クライアントから前記ネットワークベースデータストアのインターフェースを介して受信される、条項15に記載の非一時的コンピュータ可読記憶媒体。
【0072】
17.前記スケーリングイベントは前記格納ボリュームを縮小させ、前記格納ボリュームを保持する前記格納を修正する際、前記プログラム命令は、前記1つまたは複数のコンピューティングデバイスに、前記格納ボリュームに割り当てられた前記格納の格納スペースを回収することを実行させる、条項15に記載の非一時的コンピュータ可読記憶媒体。
【0073】
18.前記スケーリングイベントは前記格納ボリュームを拡大させ、前記格納ボリュームを保持する前記格納を修正する際、前記プログラム命令は、前記1つまたは複数のコンピューティングデバイスに、前記格納ボリュームに追加格納スペースを割り当てることを実行させる、条項15に記載の非一時的コンピュータ可読記憶媒体。
【0074】
19.前記プログラム命令は前記1つまたは複数のコンピューティングデバイスにさらに、
前記格納ボリュームに対する前記スケーリングイベントの前記開示を、前記格納クライアントにて受信することと、
前記スケーリングイベントに従って、前記格納クライアントにて前記ファイルシステムを更新することと、
前記更新されたファイルシステムを前記格納クライアントにて利用して、後続のファイルシステム入出力(I/O)に関して前記スケーリングされた格納ボリュームにアクセスすることと、
を実行させる、条項15に記載の非一時的コンピュータ可読記憶媒体。
【0075】
20.前記プログラム命令はさらに、前記1つまたは複数のコンピューティングデバイスに、
前記スケーリングイベントの検出に応じて、前記スケーリングイベントに従って前記スケーリングされた格納ボリュームに対するファイルシステム入出力(I/O)を処理するために、前記ネットワークベースデータストアにて保持されるマッピング情報を更新すること、
を実行させる、条項15に記載の非一時的コンピュータ可読記憶媒体。
【0076】
21.前記スケーリングされた格納ボリュームのデフラグメンテーションを実行することなく前記格納クライアントにおける前記ファイルシステムが更新されるように、前記マッピング情報の前記更新は行われる、条項15に記載の非一時的コンピュータ可読記憶媒体。
【0077】
22. 前記格納クライアント用の前記格納ボリュームを動的にスケーリングするために前記格納ボリュームを保持する前記ブロックベース格納を修正する際、前記プログラム命令はさらに、前記1つまたは複数のコンピューティングデバイスに、
前記格納ボリュームを保持する前記ブロックベース格納における前記格納ボリュームに対し、1つまたは複数の格納メンテナンス動作を行うこと、
を実行させる、条項15に記載の非一時的コンピュータ可読記憶媒体。
【0078】
23.前記ネットワークベースデータストアは、マルチテナントのブロックベース格納サービスであり、
前記ブロックベース格納サービスは、プロバイダネットワークの一環として実施される複数のネットワークベースサービスのうちの1つであり、
前記格納クライアントは、前記プロバイダネットワークにおけるその他のネットワークベースサービスのうちの1つの一環として実施される、
条項15に記載の非一時的コンピュータ可読記憶媒体。
【0079】
図8は、様々な実施形態による、本明細書において説明されるように、格納クライアントファイルシステム用格納ボリュームの動的スケーリングを実行するように構成されたコンピュータシステムを例示するブロック図である。例えば、コンピュータシステム1000は、異なる実施形態において、クライアントシステム、あるいは、遠隔版ファイルシステム変更ログと対話するために使用されるネットワークベース格納システムまたはジャーナリングファイルシステムサービスの複数のノードまたはコンポーネントのうちの1つを実行するように構成され得る。コンピュータシステム1000は、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップもしくはノートブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、消費者デバイス、アプリケーションサーバ、ストレージデバイス、電話、携帯電話、または一般に任意の種類のコンピューティングデバイスを含むが、これに限定されない様々な種類のデバイスのうちのいずれかであり得る。
【0080】
コンピュータシステム1000は、入出力(I/O)インターフェース1030を介してシステムメモリ1020に接続された1つまたは複数のプロセッサ1010(当該プロセッサのうちのいずれかは複数のコアを含み、当該プロセッサはシングルまたはマルチスレッドであり得る)を含む。コンピュータシステム1000はさらに、I/Oインターフェース1030に接続されたネットワークインターフェース1040を含む。様々な実施形態において、コンピュータシステム1000は、1つのプロセッサ1010を含むユニプロセッサシステム、またはいくつか(例えば2つ、4つ、8つ、または別の好適な個数)のプロセッサ1010を含むマルチプロセッサシステムであり得る。プロセッサ1010は、命令を実行可能な任意の好適なプロセッサであり得る。例えば、様々な実施形態において、プロセッサ1010は、様々な命令集合アーキテクチャ(ISA)、例えばx86、PowerPC、SPARC、もしくはMIPS ISA、またはその他の好適なISA等、そのうちのいずれかを実行する汎用または組み込みプロセッサであり得る。マルチプロセッサシステムにおいて、それぞれのプロセッサ1010は一般に、必ずしもではないが、同一のISAを実行し得る。コンピュータシステム1000はまた、コミュニケーションネットワーク(例えばインターネット、LAN等)上で他のシステム及び/またはコンポーネントと通信するための1つまたは複数のネットワーク通信デバイス(例えばネットワークインターフェース1040)を含む。例えば、システム1000上で実行されるクライアントアプリケーションは、ネットワークインターフェース1040を使用して、単一サーバ上、または本明細書において説明されるネットワークベースサービスのコンポーネントのうちの1つまたは複数を実行するサーバのクラスタ上で実行されるサーバアプリケーションと通信し得る。別の実施例において、コンピュータシステム1000上で実行されるサーバアプリケーションのインスタンスは、ネットワークインターフェース1040を使用して、他のコンピュータシステム(例えばコンピュータシステム1090)上で実行され得るサーバアプリケーション(または別のサーバアプリケーション)の他のインスタンスと通信し得る。
【0081】
図示された実施形態において、コンピュータデバイス1000はまた、1つまたは複数の持続的格納デバイス1060、及び/または1つまたは複数の入出力デバイス1080を含む。様々な実施形態において、持続的格納デバイス1060は、ディスクドライブ、テープドライブ、ソリッドステートメモリ、他の大容量格納デバイス、またはその他の持続的格納デバイスに該当し得る。コンピュータシステム1000(または分散アプリケーションもしくはコンピュータシステム1000上で作動するオペレーティングシステム)は、命令及び/またはデータを所望通りに持続的格納デバイス1060に格納し、格納された命令及び/またはデータを必要に応じ取り出し得る。例えば、いくつかの実施形態において、コンピュータシステム1000は格納システムサーバノードを提供し、持続的格納1060はそのサーバノードに取り付けられるSSDを含み得る。
【0082】
コンピュータシステム1000は、プロセッサ(複数可)1010によりアクセス可能な命令及びデータを格納するように構成された1つまたは複数のシステムメモリ1020を含む。様々な実施形態において、システムメモリ1020は、任意の好適なメモリ技術(例えばキャッシュ、静的ランダムアクセスメモリ(SRAM)、DRAM、RDRAM、EDO RAM、DDR 10 RAM、同期式動的RAM(SDRAM)、ラムバスRAM、EEPROM、不揮発性/フラッシュタイプメモリ、またはその他の種類のメモリ、以上のうちの1つまたは複数)を使用して実行され得る。システムメモリ1020は、本明細書において説明される方法及び技術を実行するためにプロセッサ(複数可)1010により実行可能なプログラム命令1025を含み得る。様々な実施形態において、プログラム命令1025は、Java(登録商標)バイトコード等のプラットフォームネイティブバイナリの任意のインタプリタ言語で、またはC/C++、Java(登録商標)等のその他の言語で、あるいはそれらの任意の組み合わせで、符号化され得る。例示される実施形態において、例えば、プログラム命令1025は、異なる実施形態において、ジャーナリングファイルシステムマネジャー、またはネットワークベースサービスの複数のノードのうちの1つの機能を実行するために実行可能なプログラム命令を含む。いくつかの実施形態において、プログラム命令1025は、複数の個別のクライアント、サーバノード、及び/または他のコンポーネントを実行し得る。
【0083】
いくつかの実施形態において、プログラム命令1025は、UNIX(登録商標)、LINUX、Solaris(登録商標)、MacOS(登録商標)、Windows(登録商標)等の様々なオペレーティングシステムのうちのいずれかであり得るオペレーティングシステム(図示せず)を実施するために実行可能な命令を含み得る。プログラム命令1025のうちのいずれかまたは全ては、様々な実施形態に従ってプロセスを実行するようにコンピュータシステム(または他の電子デバイス)をプログラムするために使用され得る命令を自身に格納した非一時的コンピュータ可読記憶媒体を含み得るコンピュータプログラム製品またはソフトウェアとして、提供され得る。非一時的コンピュータ可読記憶媒体は、マシン(例えばコンピュータ)により可読な形態(例えばソフトウェア、処理アプリケーション)で情報を記憶する任意の機構を含み得る。概して、非一時的コンピュータアクセス可能媒体は、例えば入出力インターフェース1030を介してコンピュータシステム1000に接続されるディスクまたはDVD/CD‐ROMといった磁気媒体または光学媒体等のコンピュータ可読記憶媒体またはメモリ媒体を含み得る。非一時的コンピュータ可読記憶媒体はまた、システムメモリ1020または別の種類のメモリとして、コンピュータシステム1000のいくつかの実施形態に含まれ得るRAM(例えばSDRAM、DDR‐SDRAM、RDRAM、SRAM等)、ROM等の任意の揮発性または不揮発性媒体を含み得る。別の実施形態において、プログラム命令は、ネットワークインターフェース1040を通して実施され得るようなネットワーク及び/または無線リンク等の通信媒体を介して伝達される光学、音響、または他の形態の伝搬信号(例えば搬送波、赤外線信号、デジタル信号等)を使用して通信され得る。
【0084】
いくつかの実施形態において、システムメモリ1020は、本明細書において説明されるように構成され得るデータストア1045を含み得る。例えば、ネットワークベース格納システムにより格納されている本明細書にて説明される情報は、異なる時点に様々な実施形態において、1つまたは複数のノード上のデータストア1045内もしくはシステムメモリ1020の別の部分内、持続的格納1060内、及び/または1つまたは複数の遠隔格納デバイス1070上に、格納され得る。同様に、格納されている本明細書にて説明される情報は、異なる時点に様々な実施形態において、1つまたは複数のノード上のデータストア1045内もしくはシステムメモリ1020の別の部分内、持続的格納1060内、及び/または1つまたは複数の遠隔格納デバイス1070上に、格納され得る。一般に、システムメモリ1020(例えばシステムメモリ1020内のデータストア1045)、持続的格納1060、及び/または遠隔格納1070は、データブロック、データブロックのレプリカ、データブロックに対応付けられたメタデータ及び/またはそれらのステート、構成情報、並びに/あるいは本明細書において説明される方法及び技術を実施する際使用可能なその他の情報を、格納し得る。
【0085】
一実施形態において、入出力インターフェース1030は、プロセッサ1010と、システムメモリ1020と、ネットワークインターフェース1040または他の周辺インターフェースを通した任意の周辺デバイスとの間の入出力トラフィックをシステム内で調整するように構成され得る。いくつかの実施形態において、入出力インターフェース1030は、1つのコンポーネント(例えばシステムメモリ1020)からのデータ信号を、別のコンポーネント(例えばプロセッサ1010)が使用するのに好適な形式に変換するために、任意の必要なプロトコル変換、タイミング変換、または他のデータ変換を実行し得る。いくつかの実施形態において、入出力インターフェース1030は、例えば周辺構成要素相互接続(PCI)バス規格または汎用シリアルバス(USB)規格の変形等、様々な種類の周辺バスを介して取り付けられるデバイスのサポートを含み得る。いくつかの実施形態において、入出力インターフェース1030の機能は、例えばノースブリッジとサウスブリッジといった2つ以上の別々のコンポーネントに分割され得る。また、いくつかの実施形態において、システムメモリ1020に対するインターフェース等、入出力インターフェース1030の機能のうちの一部または全ては、プロセッサ1010に直接組み込まれ得る。
【0086】
ネットワークインターフェース1040は、コンピュータシステム1000と、例えば他のコンピュータシステム1090(本明細書に説明されるネットワークベースサービス及び/またはクライアントを実施する1つまたは複数のノードを実行し得る)といったネットワークに接続された他のデバイスとの間で、データ交換を可能にするように構成され得る。さらに、ネットワークインターフェース1040は、コンピュータシステム1000と、様々な入出力デバイス1050及び/または遠隔格納1070との間の通信を可能にするように構成され得る。いくつかの実施形態において、入出力デバイス1050は、1つまたは複数のディスプレイ端末、キーボード、キーパッド、タッチパッド、スキャニングデバイス、音声もしくは光学認識デバイス、または1つまたは複数のコンピュータシステム1000がデータ入力もしくはデータ取得を行うのに好適なその他のデバイスを含み得る。複数の入出力デバイス1050は、コンピュータシステム1000内に存在し得る、あるいはコンピュータシステム1000を含む分散システムの様々なノード上に分散され得る。いくつかの実施形態において、同様の入出力デバイスは、コンピュータシステム1000とは別個であり、ネットワークインターフェース1040上等の有線または無線接続を通して、コンピュータシステム1000を含む分散システムの1つまたは複数のノードと対話し得る。ネットワークインターフェース1040は一般に、1つまたは複数の無線ネットワークプロトコル(例えばWi‐Fi/IEEE802.11または他の無線ネットワーク規格)に対応し得る。しかしながら、様々な実施形態において、ネットワークインターフェース1040は、例えば、他の種類のイーサネット(登録商標)ネットワーク等、任意の好適な有線または無線汎用データネットワークを介して、通信に対応し得る。さらに、ネットワークインターフェース1040は、アナログ音声ネットワークまたはデジタルファイバ通信ネットワーク等の電気通信/電話ネットワークを介して、あるいはファイバチャネルSAN等の格納エリアネットワークを介して、あるいはその他の好適な種類のネットワーク及び/またはプロトコルを介して、通信に対応し得る。様々な実施形態において、コンピュータシステム1000は、図8に例示されるコンポーネントと比べると、より多い、より少ない、または異なるコンポーネントを含み得る(例えばディスプレイ、ビデオカード、オーディオカード、周辺デバイス、他のネットワークインターフェース、例えばATMインターフェース、イーサネットインターフェース、フレームリレーインターフェース等)。
【0087】
本明細書に説明される分散システムの実施形態のうちのいずれか、またはそれらのコンポーネントのうちのいずれかは、1つまたは複数のネットワークベースサービスとして実行され得ることに留意されたい。例えば、格納サービス内の格納ノードは、本明細書において説明される分散格納システムを採用するデータサービス及び/または他の種類のデータ格納サービスを、ネットワークベースサービスとしてクライアントに提供し得る。いくつかの実施形態において、ネットワークベースサービスは、ネットワーク上の相互運用可能なマシン間対話に対応するように設計されたソフトウェア及び/またはハードウェアシステムにより実施され得る。ネットワークベースサービスは、ウェブサービス記述言語(WSDL)等のマシン処理可能な形式で記述されたインターフェイーを有し得る。他のシステムは、ネットワークベースサービスのインターフェースの記述により定められたやり方で、ネットワークベースサービスと対話し得る。例えば、ネットワークベースサービスは、他のシステムが呼び出し得る様々な動作を定義し、他のシステムが様々な動作を要求する際従うべき特定のアプリケーションプログラミングインタフェース(API)を定義し得る。
【0088】
様々な実施形態において、ネットワークベースサービスは、ネットワークベースサービス要求に対応付けられたパラメータ及び/またはデータを含むメッセージの使用を通して、要求または呼び出され得る。このようなメッセージは、拡張マークアップ言語(XML)等の特定のマークアップ言語に従ってフォーマットされ、及び/または簡易オブジェクトアクセスプロトコル(SOAP)等のプロトコルを使用してカプセル化され得る。ネットワークベースサービス要求を行うために、ネットワークベースサービスのクライアントは、要求を含むメッセージをアセンブルし、そして当該メッセージを、ネットワークベースサービスに対応するアドレス指定可能なエンドポイント(例えばユニフォームリソースロケータ(URL))へ、ハイパーテキスト転送プロトコル(HTTP)等のインターネットベースアプリケーション層転送プロトコルを使用して、伝送し得る。
【0089】
いくつかの実施形態において、ネットワークベースサービスは、メッセージベース技術ではなく、レプレゼンテーショナルステートトランスファ(「RESTful」)技術を使用して、実施され得る。例えば、RESTful技術に従って実施されるネットワークベースサービスは、SOAPメッセージ内にカプセル化されたパラメータではなく、PUT、GET、またはDELETE等のHTTPメソッド内に含まれるパラメータを通して、呼び出され得る。
【0090】
前述の実施形態はかなり詳細に説明されているが、一度前述の開示が十分に理解されれば、多数の変形及び修正が当業者に理解され、行われるであろう。以下の特許請求の範囲は全てのこのような修正及び変更を包含すると解釈され、従って前述の説明は制限的な意味ではなく例示的な意味で考慮されるものとする。
図1
図2
図3
図4
図5
図6
図7
図8