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

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

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

<>
  • 特許6840125-データボリュームの動的な構成 図000002
  • 特許6840125-データボリュームの動的な構成 図000003
  • 特許6840125-データボリュームの動的な構成 図000004
  • 特許6840125-データボリュームの動的な構成 図000005
  • 特許6840125-データボリュームの動的な構成 図000006
  • 特許6840125-データボリュームの動的な構成 図000007
  • 特許6840125-データボリュームの動的な構成 図000008
  • 特許6840125-データボリュームの動的な構成 図000009
  • 特許6840125-データボリュームの動的な構成 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6840125
(24)【登録日】2021年2月18日
(45)【発行日】2021年3月10日
(54)【発明の名称】データボリュームの動的な構成
(51)【国際特許分類】
   G06F 13/14 20060101AFI20210301BHJP
   G06F 3/06 20060101ALI20210301BHJP
   G06F 9/50 20060101ALI20210301BHJP
   G06F 13/10 20060101ALI20210301BHJP
   G06F 16/182 20190101ALI20210301BHJP
   G06F 16/188 20190101ALI20210301BHJP
【FI】
   G06F13/14 330E
   G06F13/14 330B
   G06F3/06 301Z
   G06F3/06 304N
   G06F9/50 120Z
   G06F13/10 340A
   G06F16/182
   G06F16/188
【請求項の数】14
【全頁数】33
(21)【出願番号】特願2018-500284(P2018-500284)
(86)(22)【出願日】2016年3月25日
(65)【公表番号】特表2018-513510(P2018-513510A)
(43)【公表日】2018年5月24日
(86)【国際出願番号】US2016024328
(87)【国際公開番号】WO2016154587
(87)【国際公開日】20160929
【審査請求日】2017年9月20日
【審判番号】不服2019-13909(P2019-13909/J1)
【審判請求日】2019年10月18日
(31)【優先権主張番号】14/668,782
(32)【優先日】2015年3月25日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】507303550
【氏名又は名称】アマゾン・テクノロジーズ・インコーポレーテッド
(74)【代理人】
【識別番号】100098394
【弁理士】
【氏名又は名称】山川 茂樹
(74)【代理人】
【識別番号】100153006
【弁理士】
【氏名又は名称】小池 勇三
(74)【代理人】
【識別番号】100064621
【弁理士】
【氏名又は名称】山川 政樹
(72)【発明者】
【氏名】ブルッカー,マーク・ジョン
(72)【発明者】
【氏名】トンプソン,ジェームズ・マイケル
(72)【発明者】
【氏名】オルソン,マーク・スティーヴン
【合議体】
【審判長】 田中 秀人
【審判官】 山澤 宏
【審判官】 月野 洋一郎
(56)【参考文献】
【文献】 特開2006−012156(JP,A)
【文献】 特開2008−299559(JP,A)
【文献】 米国特許第8549224(US,B1)
【文献】 国際公開第2012/066671(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06- 3/08
G06F 9/455- 9/54
G06F12/00
G06F13/10-13/14
(57)【特許請求の範囲】
【請求項1】
ストレージシステムであって、
1つまたは複数のリソースホストであって、ブロックベースストレージサービスの複数のクライアントのために複数のデータボリュームを格納するように構成されており、前記複数のデータボリュームの少なくとも1つが前記複数のデータボリュームの別のものと同一のリソースホストに格納される、前記1つまたは複数のリソースホストと、
前記ストレージシステムのための構成マネージャであって、前記データボリュームの所与のデータボリュームに関して、
記データボリュームのクライアント利用をモニタし、
記データボリュームの前記クライアント利用に少なくとも一部基づいて、前記ブロックベースストレージサービスの1つまたは複数のデータボリュームオファリングの中から前記データボリュームを再構成するための1つまたは複数の構成推奨を決定し、前記1つまたは複数のデータボリュームオファリングは、様々なタイプ及び/またはリソース割り当てを含む前記データボリュームの構成を示し、
前記クライアントに前記1つまたは複数の構成推奨を提供し、
前記1つまたは複数の構成推奨の選択された1つを実施するための前記クライアントによって示されたクライアント認証をクライアントから受信し、
その後の前記データボリュームの利用が前記再構成されたデータボリュームに従って行われるように、前記クライアント認証された構成推奨に従って前記データボリュームの構成を指示する、
ように構成される、前記構成マネージャと、
を備える、ネットワークベースのブロックベースストレージシステム。
【請求項2】
前記1つまたは複数の構成推奨を決定して、前記データボリュームを再構成するために、前記構成マネージャが、前記データボリュームに関して、
パフォーマンス最適化目的、または
コスト最適化目的のうちの少なくとも一方を含む1つまたは複数の最適化目的、を特定し、
前記構成推奨として提供するために、前記最適化目的に対して前記データボリュームを改善する前記1つまたは複数のデータボリュームオファリングを決定する、
ように構成される、請求項1に記載のシステム。
【請求項3】
前記クライアント認証された構成推奨に従って前記データボリュームの構成を指示するために、前記構成マネージャが、前記クライアント認証された構成推奨を提供することが可能な1つまたは複数の異なるリソースホストに前記データボリュームを再配置するために、1つまたは複数のマイグレーション操作を開始するように構成される、
請求項1に記載のシステム。
【請求項4】
前記1つまたは複数の構成推奨が、グラフィカルユーザインターフェースを介して前記クライアントに提供され、
前記クライアント認証を検出して1つの前記選択された構成推奨を実施するために、前記構成マネージャが、前記グラフィカルユーザインターフェースを介して前記クライアントから1つの前記構成推奨の指示を受信する、
請求項1に記載のシステム。
【請求項5】
方法であって、
1つまたは複数のコンピューティングデバイスによって、
データボリュームのクライアント利用をモニタし、前記データボリュームのクライアント利用少なくとも一部基づいて、ブロックベースストレージサービスの1つまたは複数のデータボリュームオファリングの中から、前記ブロックベースストレージサービス内でクライアントのためにホストされる前記データボリュームを再構成するための1つまたは複数の構成推奨を決定することであって、前記1つまたは複数のデータボリュームオファリングは、様々なタイプ及び/またはリソース割り当てを含む前記データボリュームの構成を示す、前記決定することと、
前記クライアントに前記1つまたは複数の構成推奨を提供することと、
選択された前記構成推奨の1つを実施するためにクライアント認証を検出することであって、前記1つの前記構成推奨を実施するためにクライアント認証を検出することは、前記クライアントから前記1つの前記構成推奨の指示を受信することを含む、前記検出することと、
前記データボリュームのその後の利用が前記再構成されたデータボリュームに従って行われるように、前記クライアント認証された構成推奨に従って前記データボリュームを構成することと、
を実行すること、を含む、前記方法。
【請求項6】
前記データボリュームに関する推奨事象を検出することをさらに含み、前記推奨事象は、前記1つまたは複数の構成推奨を決定する及び/または実行するための事象であり、
前記1つまたは複数の構成推奨を決定することが、前記推奨事象の検出に応じて行われる、
請求項5に記載の方法。
【請求項7】
前記データボリュームを再構成するために前記1つまたは複数の構成推奨を決定することが、
前記データボリュームに関して、1つまたは複数の最適化目的を特定することであって、前記1つまたは複数の最適化目的の少なくとも1つがパフォーマンス最適化目的である、前記特定することと、
前記1つまたは複数の最適化目的に対して前記データボリュームを改善する前記1つまたは複数のデータボリュームオファリングを決定することと、
を含む、請求項5に記載の方法。
【請求項8】
前記クライアント認証された構成推奨が、前記データボリュームに関して1つまたは複数のリソース割り当てを変更することを含む、
請求項5に記載の方法。
【請求項9】
前記ブロックベースストレージサービスがプロバイダネットワークの一部として実装され、前記クライアント認証された構成推奨に従って前記データボリュームを構成することが、前記プロバイダネットワークの一部として実装された別のストレージサービスに前記データボリュームをマイグレートすることを含む、
請求項5に記載の方法。
【請求項10】
1つまたは複数のコンピューティングデバイスによって実行される際、前記1つまたは複数のコンピューティングデバイスに、
ブロックベースストレージサービス内でクライアントのためにホストされるデータボリュームのクライアント利用をモニタすること
前記データボリュームの前記クライアント利用に少なくとも一部基づいて、前記ブロックベースストレージサービスの1つまたは複数のデータボリュームオファリングの中から、前記データボリュームを再構成するための1つまたは複数の構成推奨を決定することであって、前記1つまたは複数のデータボリュームオファリングは、様々なタイプ及び/またはリソース割り当てを含む前記データボリュームの構成を示す、前記決定することと、
前記クライアントに前記1つまたは複数の構成推奨を提供することと、
選択された前記構成推奨の1つを実施するためにクライアント認証を検出することであって、前記1つの前記構成推奨を実施するためにクライアント認証を検出することは、前記クライアントから前記1つの前記構成推奨の指示を受信することを含む、前記検出することと、
その後の前記データボリュームの利用が前記再構成されたデータボリュームに従って行われるように、前記クライアント認証された構成推奨に従って前記データボリュームを構成することと、
を実施させるプログラム命令を記憶する、コンピュータ読み取り可能記憶媒体。
【請求項11】
前記データボリュームを再構成するために前記1つまたは複数の構成推奨を決定する際、前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、
前記データボリュームに関して、1つまたは複数の最適化目的を特定することであって、前記最適化目的の少なくとも1つがコスト最適化目的である、前記特定することと、
前記最適化目的に対して前記データボリュームを改善する前記1つまたは複数のデータボリュームオファリングを決定することと、
を実施させる、請求項10に記載のコンピュータ読み取り可能記憶媒体。
【請求項12】
前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、
前記データボリュームに関して推奨事象を検出することをさらに実施させ、前記推奨事象は、前記1つまたは複数の構成推奨を決定する及び/または実行するための事象であり、
前記1つまたは複数の構成推奨を決定することが、前記推奨事象を検出することに応答して行われる、
請求項10に記載のコンピュータ読み取り可能記憶媒体。
【請求項13】
前記クライアント認証された構成推奨に従って前記データボリュームを構成する際、前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、前記再構成されたデータボリュームを提供するために、前記データボリュームの1つまたは複数のホストを更新することを実施させる、
請求項10に記載のコンピュータ読み取り可能記憶媒体。
【請求項14】
前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、
グラフィカルユーザインターフェースを介して前記クライアントに前記1つまたは複数の構成推奨を提供することをさらに実施させ、
1つの前記選択された構成推奨を実施するために前記クライアント認証を検出する際、前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、前記グラフィカルユーザインターフェースを介して前記クライアントから1つの前記選択された構成推奨の指示を受信することを実施させる、
請求項10に記載のコンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
ハードウェアリソース、ソフトウェア及びネットワークにわたる情報記憶の仮想化を動的に共有するための最近の技術革新は、コンピューティングの信頼性、スケーラビリティ及びコスト効率を高めてきた。より具体的には、仮想化の出現を通してオンデマンドで仮想コンピューティングリソース及びストレージを提供できるようになったことは、リソース及びストレージを処理するコンシューマが、コンピューティング及びストレージの必要性を直ちに認識し、それに応じてそのコンピューティング及びストレージのコストを柔軟に構築することを可能にしてきた。仮想化によって、コンシューマは、生産の遅れやコストならびにハードウェアの配置によって要求されるプロビジョニングサイクルにおける固定されたハードウェアを購入またはリースするのではなく、需要が生じた時にプロセッササイクル及びストレージを獲得することが可能になる。コンピューティング及びストレージの可用性を判定するための将来の需要の正確な予測に依存するのではなく、ユーザは、必要に応じて比較的瞬時にコンピューティング及びストレージリソースの使用を獲得することができる。
【背景技術】
【0002】
仮想化されたコンピューティング環境は、コンピューティングリソースの可用性及び耐久性に関して様々な保証を与えることができる。多重リソースホストの中でも分散コンピューティングリソースは、様々な可用性及び耐久性の特徴を提供することができる。例えば仮想コンピューティングリソースは、ブロックベースのストレージを提供する場合がある。そのようなブロックベースストレージは、一連の標準化されたストレージの呼び出しを通じて、多様な計算仮想化環境とやり取りすることができるストレージシステムを提供する。この標準化されたストレージの呼び出しは、ブロックベースストレージを、それがサポートするボリュームの構造的及び機能的な詳細、ならびにそれがストレージの可用性を提供する仮想化環境上で実行中のオペレーティングシステムに機能的に依存しない状態にする。ブロックベースストレージは、多くの方法で構成されて良く、そのうちの一部は、特定のケースに関して他のものよりもより最適な場合がある。しかしながらブロックベースストレージが構成され得る方法は多数あるため、最初にストレージを設定する際、最適な構成を見つけることが難しい場合がある。
【図面の簡単な説明】
【0003】
図1】一部の実施形態による、データボリュームの動的な構成を例示する一連の論理ブロック図である。
図2】一部の実施形態による、データボリュームの動的な構成を実現するブロックベースストレージサービスを含むプロバイダネットワークを例示するブロック図である。
図3】一部の実施形態による、データボリュームの動的な構成を実現する構成マネージャを図示する論理ブロック図である。
図4】一部の実施形態による、データボリュームの動的な構成を構成するためのクライアントとストレージサービスの間の対話を例示する論理ブロック図である。
図5】一部の実施形態による、データボリュームに関する構成推奨の通知の一例の図である。
図6】一部の実施形態による、データボリュームの動的な構成を実現するための種々の方法及び技術を図示するハイレベルのフローチャートである。
図7】一部の実施形態による、構成推奨を決定するための種々の方法及び技術を図示するハイレベルのフローチャートである。
図8】一部の実施形態による、データボリュームを構成するための種々の方法及び技術を図示するハイレベルのフローチャートである。
図9】一部の実施形態による、一例のコンピューティングシステムを例示するブロック図である。
【発明を実施するための形態】
【0004】
複数の実施形態及び例示の図面に関する一例として、いくつかの実施形態が本明細書に記載されるが、当業者は、これらの実施形態が記載される実施形態または図面に限定されないことを理解するであろう。図面及びそれに対する詳細な記載は、実施形態を開示される特定の形態に限定することは意図するものではなく、むしろ添付の特許請求の範囲によって定義される精神及び範囲の範囲内にあるすべての修正形態、等価物及び代替形態を包含することが意図されることを理解されたい。本明細書で使用される表題は、単に編成する目的であって、記載または特許請求の範囲の範囲を限定するのに使用されることは意味していない。本出願の全体を通して使用される際、用語「may(して良い)」は、義務的な意味(すなわちmust(しなければならない)の意味)ではなく、許可を意味するのに使用されている。同様の用語「include(含む)」、「includes(含む)」及び「includes(含む)」は、含んでいることを意味するが、それに限定されるものではない。
【0005】
本明細書に記載されるシステム及び方法は、データボリュームの動的な構成を実現することができる。データボリュームは、種々の実施形態において様々なクライアントに対してブロックベースストレージを提供して良い。このようなクライアントは、例えばデータベースシステム、仮想デスクトップ、開発及びテスト環境、ビジネスアプリケーションまたはデータアーカイブなどの多くの異なるアプリケーションを実行する一環としてデータボリュームを利用する。より最適なパフォーマンス及び/またはコスト利益を提供するために、データボリュームは、様々に構成されて良い。例えば一部のデータボリュームは、大きなI/Oワークロードを受け取る場合があるが、他のデータボリュームは、めったにアクセスされない場合もある。予想されるデータボリュームの利用が、実際のデータボリュームの利用と等しくならない場合があるため、適切なデータボリューム構成を決定することが難しい場合がある。よって、データボリュームの利用が始まった時点で、選択されたデータボリュームの最初の構成が、特定のタスクに関して最適なものであると証明されない場合もある。データボリュームの動的な構成は、データボリュームの実際の利用に基づいて最適なデータボリュームを見つけるための1つの方法を提供することができる。データボリューム構成に対する変更は自動で行われる場合、または明白な認証によって行われる場合がある。
【0006】
図1は、一部の実施形態による、データボリュームの動的な構成を例示する一連の論理ブロック図である。シーン102に例示されるように、クライアント130は、データボリューム112を利用して140、様々なクライアントアプリケーション、タスク及び/または機能に対してブロックベースストレージを提供する。例えばクライアント130は、データボリューム112内にデータベースに関するデータを保存するデータベースエンジンであって良く、データベースに関するデータを取得し更新するために様々な読み取り及び書き込みリクエストを行う。ストレージシステム110は、特定の構成においてクライアント130に関するデータボリューム112をホストすることができる。例えば、データボリューム112は、データボリュームにデータを保存するためにソリッドステートドライブ(SSD)または磁気ストレージドライブ(例えばHDD)によって実現されて良い。データボリュームは、多くの異なるタイプの1つとして実現されて良い。さらに異なるボリュームタイプに関して異なるリソースの割り当てが用いられる場合がある(例えばデータボリュームに対するアクセスを行うために割り当てられるストレージスペースの大きさまたはIOPSの数)。データボリューム構成は、ストレージシステム110によって提供されるデータボリュームオファリングに従って構築されて良い。例えば、特定のタイプのデータボリュームは、異なるリソース割り当て(例えば100IOPSの単位でのIOPSの割り当て、または特定の範囲におけるユーザ定義のリソース割り当てを可能にする)を有する場合がある。
【0007】
ストレージシステム110は、構成マネージャ120を実装することでデータボリューム112のクライアントの利用を追跡する142場合がある。シーン104に図示されるように、構成マネージャ120は、データボリューム112を再構成するために構成推奨(複数可)144を提供して良い。そのような推奨される構成は、種々の実施形態において、ストレージシステム110のデータボリュームのオファリングに従って、データボリュームのパフォーマンス及び/またはコストを改善し、データボリュームのタイプ及び/またはリソース割り当てを変えることができる。例えばデータボリューム112がHDD内に格納される場合、SSDによってバックアップされるボリュームタイプへの変更がデータボリュームのワークロードの最大限度を高める可能性があることを構成推奨が示す場合がある。この推奨は、SSDによってバックアップされるボリュームタイプを含むデータボリュームオファリングを示して良い。図6及び図7は、以下に、構成推奨(複数可)の決定の種々の例を提供する。
【0008】
シーン106に例示されるように、推奨された構成推奨のうちの1つを認証するために、再構成認証146が提供されて良い。例えば選択は、実行する構成推奨を指示するグラフィカルユーザインターフェースまたはアプリケーションプログラミングインターフェース(API)リクエストを介して提供されて良い。構成マネージャ148が、再構成されたデータボリューム114を実現するように再構成を指示する148ことができる。一部の実施形態では、再構成されたデータボリュームをホストすることが可能であり得る他のホストにデータボリュームを移動させるためにマイグレーション操作が行われる場合もある。シーン106に例示されるように、クライアント130は、再構成の間もデータボリューム112へのアクセスを続けることができる。ひとたび完了すると、クライアント130は、再構成されたデータボリューム114にアクセスし、新たな構成に従ってデータボリュームを利用する150ことができる。
【0009】
先の記載は、限定することを意図するものではなく、単にデータボリュームの動的な構成の一例として提供されていることに留意されたい。種々の構成要素が、構成の管理を行う場合がある。異なる数またはタイプのデータボリューム及びクライアントが利用される場合もある。
【0010】
本明細書は、プロバイダネットワークの一般的な記載によって始まり、これはブロックベースストレージサービスを介して提供されるデータボリュームの動的な構成を実現することができる。そしてブロックベースストレージサービス内でデータボリュームを構成する一環として利用され得る種々の構成要素/モジュールまたは構成要素/モジュールの配置を含め、ブロックベースストレージサービスの種々の例が考察される。データボリュームの動的な構成を実現するためのいくつかの異なる方法及び技術がこのとき考察されており、その一部は、添付のフローチャートに図示されている。最後に、種々の構成要素、モジュール、システム及び/またはノードが実装され得る一例のコンピューティングシステムの記載が提供されている。種々の例は、本明細書を通して提供される。
【0011】
図2は、一部の実施形態による、データボリュームの動的な構成を実現するブロックベースストレージサービスを含むプロバイダネットワークを例示するブロック図である。プロバイダネットワーク200は、インターネット及び/または他のネットワークを介してアクセス可能な1つまたは複数のサービス(例えば様々な種類のクラウドベースのコンピューティングまたはストレージ)をクライアント210に提供するために、例えば企業または公共部門機構などのエンティティによって設定されて良い。プロバイダネットワーク200は、プロバイダネットワーク200によって提供されるインフラ及びサービスを実行し分散させるのに必要とされる、例えば物理的及び/または仮想化コンピュータサーバ、ストレージデバイス、ネットワーキング機器など(例えば、図9に関して以下に記載されるコンピューティングシステム1000)の集まりなどの種々のリソースプールをホストする非常に多くのデータセンターを含んで良い。いくつかの実施形態において、プロバイダネットワーク200は、例えば仮想コンピュートサービス230などのコンピューティングリソース、ブロックベースストレージサービス220及び他のストレージサービス240などのストレージサービス(これは例えばオブジェクト/キー値ベースのデータストア、もしくは種々のタイプのデータベースシステムなどの様々なストレージタイプを含み得る)及び/または他のタイプのネットワークベースサービス250などを提供する場合がある。クライアント210は、ネットワーク260を介して、プロバイダネットワーク200によって提供されるこれらの種々のサービスにアクセスして良い。同様のネットワークベースサービスが、それ自体で通信する、及び/または互いを利用して異なるサービスを提供する場合もある。例えば仮想または物理コンピュートインスタンスまたはストレージインスタンスなどの「インスタンス」と呼ばれるユニットにおいて、クライアント210によって提供されるコンピューティングリソースは、特定のデータボリューム226を利用して、コンピュートインスタンスのための仮想ブロックストレージを提供する場合もある。
【0012】
上記で指摘したように、仮想コンピュートサービス230は、種々のコンピュートインスタンスをクライアント210に提供して良い。仮想コンピュートインスタンスは、例えば指定された計算容量(これはCPUのタイプ及び数、メインメモリのサイズなどを示すことによって特定され得る)、ならびに指定されたソフトウェアスタック(例えばハイパーバイザのトップで可動し得るオペレーティングシステムの特定のバージョン)を備えた1つまたは複数のサーバを備えて良い。種々の実施形態において、専用コンピュータサーバ、ストレージデバイス、ネットワークデバイスなどを含め、仮想コンピュートサービス230のコンピュートインスタンスを実装するためにいくつかの異なるタイプのコンピューティングデバイスが単独で、または組み合わせて使用される場合がある。いくつかの実施形態において、インスタンスクライアント210または他の任意の他のユーザが、ネットワークトラフィックをコンピュートインスタンスへと誘導するように構成され(及び/または認証され)て良い。種々の実施形態において、様々な動作を行うために永続的なブロックベースストレージを獲得するために、コンピュートインスタンスは、ブロックベースストレージサービス220によって提供される1つまたは複数のデータボリューム226にアタッチまたはマップすることができる。
【0013】
コンピュートインスタンスは、例えばクライアント210が特定のインスタンスにアクセスすることを必要とせずに、例えばアプリケーションサーバインスタンス、Java(商標)仮想マシン(JVM)、専用オペレーティングシステム、種々の解読された、もしくはコンパイルされたプログラミング言語、例えばRuby、Perl、Python、C、C++などをサポートするプラットフォーム、またはクライアントアプリケーションを実行するのに適したハイパフォーマンスコンピューティングプラットフォームなどの多様な種類の異なるプラットフォームを動作させるまたは実装することができる。いくつかの実施形態において、コンピュートインスタンスは、予想される稼働率に基づいて異なるタイプまたは構成を有する。特定のコンピュートインスタンスの稼働率は、そのインスタンスが作動される時間量と、そのインスタンスが予約される総時間量の比として定義されて良い。稼働率はまた、一部の実装形態では利用率と呼ばれる場合もある。クライアントが、そのインスタンスが予約される時間のうち比較的短い時間にわたって(例えば1年を通じた予約のうちの30%〜35%)コンピュートインスタンスを使用することを予想する場合、クライアントは、そのインスタンスを低稼働率のインスタンスとして予約することを決め、関連する値付け方針に従って割引された1時間毎の利用料を支払うことができる。クライアントが、ほとんどの時間インスタンスを立ち上げることを必要する定常状態のワークロードを有することを予想する場合、クライアントは、高稼働率のインスタンスを予約し、場合によっては均一なより低額の1時間毎の利用料を支払う場合もあるが、一部の実施形態では、実際の使用時間数に関係なく、値付け方針に従って、予約の継続期間全体にわたって時間毎の料金が課される場合もある。対応する値付け方針による中程度の稼働率のインスタンスの場合のオプションも一部の実施形態において同様にサポートされて良く、この場合、先払いコストと時間当たりコストは、対応する高稼働率のコストと低稼働率のコストの間になる。
【0014】
コンピュートインスタンス構成はまた、汎用または専用の目的を有する、例えば計算集約アプリケーションのための計算ワークロード(例えばハイトラフィックウェブアプリケーション、アドサービング、バッチ処理、ビデオエンコーディング、分散分析、高エネルギー力学、ゲノム分析及び計算流体力学)、グラフィック集約ワークロード(例えばゲームストリーミング、3Dアプリケーションストリーミング、サーバサイドグラフィックワークロード、レンダリング、金融モデリング及びエンジニアリングデザイン)、メモリ集約ワークロード(例えば高パフォーマンスデータベース、分散メモリキャッシュ、イン−メモリ分析、ゲノムアセンブリ及び分析)ならびにストレージ最適化ワークロード(例えばデータウェアハウジング及びクラスタファイルシステム)などのコンピュートインスタンスを含む場合がある。コンピュートインスタンスのサイズ、例えば特定の数の仮想CPUコア、メモリ、キャッシュ、ストレージならびに任意の他のパフォーマンス特徴。コンピュートインスタンスの構成はまた、特定のデータセンター、利用可能ゾーン、地理的なロケーションなどにおける、それぞれのロケーションと、(リザーブドコンピュートインスタンスの場合)予約期間の長さを含んで良い。
【0015】
種々の実施形態において、プロバイダネットワーク200はまた、ストレージ動作を実行するためにブロックベースのストレージサービス220を実装して良い。ブロックベースストレージサービス220は、複数の独立したリソースホスト224a、224b、224c〜224nまで(例えばサーバブロックデータストレージシステムまたはストレージノード)のプールで構成されるストレージシステムであり、これらのリソースホストは、1つまたは複数のセットのデータボリューム、すなわちデータボリューム(複数可)226a、226b、226c〜226nまでを格納するためのブロックレベルのストレージを提供する。データボリューム226は、ネットワークを介して特定のクライアント(例えば仮想コンピュートサービス230の仮想コンピュートインスタンス)に対してマップまたはアタッチされて良く、隣接したセットの論理ブロックとして仮想ブロックベースストレージ(例えばハードディスクストレージまたは他の永続的ストレージ)を提供する。いくつかの実施形態において、データボリューム226は、例えばスナップショット動作またはレプリケーション動作など他のブロックストレージ動作を行うために複数のデータチャンクまたはデータパーティション(1つまたは複数のデータブロックを含む)に分割されて良い。データボリューム226のボリュームスナップショットは、データボリューム226の状態の固定された特定の時点を表示するものであって良い。いくつかの実施形態において、ボリュームスナップショットは、データボリュームを維持するリソースホスト224から離れて、例えば別のストレージサービス240内などに保存される場合もある。スナップショット動作は、所与のデータボリュームのスナップショットを別の記憶場所、例えば他のストレージサービス240におけるリモートスナップショットデータストアなどに送信する、コピーする、及び/またはそうでなければ保存するために行われる場合がある。
【0016】
リソースホスト224は、1つまたは複数のコンピューティングシステムまたはデバイスであって良く、例えばストレージサーバまたは他のコンピューティングシステム(例えば図9に関して以下に記載されるコンピューティングシステム1000)であって良い。各々のリソースホスト224は、データボリュームのそれぞれのレプリカを維持して良い。一部の実施形態では、一部のデータボリュームは、他のデータボリュームとは構成が異なる場合がある。したがって一部のリソースホスト224は、異なる構成を有し得る複数のデータボリュームをホストする場合がある。データボリュームの一部の構成は、種々のタイプ、仕様及び他のパフォーマンス特徴のデータボリュームを提供するために、特定のタイプのハードウェア(例えばソリッドステートストレージドライブ(SSD)もしくは磁気ディスクストレージ(例えばハードディスクドライブ(HDD))またはソフトウェア(例えば種々のストレージマネージャオペレーション/アプリケーション)によって、リソースホストにおいて実現されて良い。例えば一部のリソースホストは、より高いスループット能力を提供するために(例えば1秒当たりの入/出力回数(IOPS))、永続的なブロックストレージのためにSSDを実装する場合があり、その一方で他のリソースホストは、より大きなストレージ能力を有し得る(仮にスループット能力がより低いとすると)HDDまたは他の磁気ベースの永続的なストレージデバイスを実装する場合もある。
【0017】
リソースホストはまた、マルチ−テナントストレージを提供する場合もある。例えばいくつかの実施形態において、1つのリソースホストは、ブロックベースストレージサービス220の1つのアカウントに対して1つのデータボリュームを維持し、その一方で同一のリソースホストに維持される別のデータボリュームは、異なるアカウントに対して維持されて良い。リソースホストは、そのそれぞれのデータボリュームを、それぞれのリソースホストを実装しているコンピューティングシステムまたはデバイスに直接アタッチされ得る1つまたは複数のブロックベースストレージデバイス(例えばハードディスクドライブ、ソリッドステートドライブなど)内で持続させることができる。リソースホストは、異なる永続的ストレージデバイスを実装する場合もある。
【0018】
ブロックベースストレージサービス220は、様々な種類の異なる方法でデータボリュームを管理し維持する場合がある。データボリュームの異なるパーティションにおいてデータボリュームの同一のレプリカを維持する分散リソースとしての2つ以上のリソースホストの中の一部のデータボリュームに関して様々な耐久性スキームが実行されて良い。例えば、データボリュームに関する単一障害点をなくすことによってデータボリュームの耐久性を高めるために、例えば種々のタイプのミラーリング及び/またはレプリカ技術が実行されて良い(例えばRAID 1)。データボリュームへのアクセスを行うために、リソースホストは、このときデータボリュームのレプリカを維持する2つ以上のリソースホストの間で、書き込みリクエストなどのI/Oリクエストを調整することができる。例えば所与のデータボリュームに関して、1つのリソースホストが、マスターリソースホストとして機能して良い。マスターリソースホストは、種々の実施形態において、データボリュームのクライアントからリクエスト(例えばI/Oリクエスト)を受信しこれを処理することができる。これによりマスターリソースホストは次いで、スレーブリソースホストとして機能する1つまたは複数の他のリソースホストに対して、例えば書き込みリクエストなどのI/Oリクエストのレプリケーション、またはそのデータボリュームに対する任意の他の変更もしくは修正を調整することができる。その後、マスターリソースホストにおいてデータボリュームに関して書き込みリクエストが受信される際、マスターリソースホストは、その書き込みリクエストをスレーブリソースホスト(複数可)に転送し、書き込みリクエストがマスターリソースホストにおいて完了する前にスレーブリソースホスト(複数可)が書き込みリクエストを完璧に承認するまで待つことができる。マスターリソースホストは、スナップショット動作または他のI/O動作(例えば読み取りリクエストを満たす)などのデータボリュームに関する他の動作を指示する場合もある。
【0019】
いくつかの実施形態においては、マスター及びスレーブリソースホストの役割はデータボリューム毎に割り当てられる場合もあることに留意されたい。例えば1つのリソースホストにおいて維持されるデータボリュームに関して、このリソースホストは、マスターリソースホストとして機能して良い。同一のリソースホストにおいて維持される別のデータボリュームに関して、リソースホストが、スレーブリソースホストとして機能する場合もある。リソースホストは、それぞれのI/Oマネージャを実装して良い。I/Oマネージャは、特定のリソースホストにおいて維持されるデータボリュームに向けられたI/Oリクエストを扱うことができる。これにより例えばI/Oマネージャは、リソースホストにおけるボリュームに対する書き込みリクエストを処理し扱うことができる。I/Oマネージャは、ブロックベースストレージサービスアプリケーションプログラミングインターフェース(API)及び/または他の通信プロトコル、例えばインターネットスモールコンピュータシステムインターフェース(iSCSI)に従ってI/Oリクエストを処理するように構成されて良い。
【0020】
リソースホストは、異なるインフラストラクチャゾーン内に配置されて良い。インフラストラクチャゾーンは、サーバラック、ネットワーキングスイッチ、ルータもしくは他の構成要素、電源(または他のリソースホストサプライヤ)などのデバイス、または物理的もしくは地理的ロケーション(例えば特定の行、空間、建物、データセンター、フォールト・トレラントゾーンなど)によって規定されて良い。インフラストラクチャゾーンは、リソースホスト(及びリソースホスト上に構築されたデータボリュームのレプリカ)が複数の異なるタイプのインフラストラクチャゾーン内、例えば特定のネットワークルータまたはブリック、特定の空間ロケーション、特定のサイト内などにあるように有効範囲が変化する場合がある。
【0021】
上記で指摘したように、ブロックベースストレージサービス220は、例えば異なるタイプのデータボリュームまたは異なるリソース割り当てなどの多様な種類の異なる構成のデータボリュームを提供することで、様々なパフォーマンス特徴を提供することができる。ブロックベースストレージサービス220によって提供される異なるデータボリュームオファリングは、クライアントによる利用に対して様々なタイプ及び/またはリソース割り当てのデータボリュームを組み合わせることができる。例えば、少なくとも一部の実施形態では、ブロックベースストレージサービス220は、例えば(これに限定するものではないが)汎用データボリューム、プロビジョンドアクセスデータボリューム及び/またはコスト効率の良いデータボリュームなどの異なるタイプのデータボリュームを含むデータボリュームオファリングを提供することができる。データボリュームオファリングは、クライアントがデータボリュームのパフォーマンス及び/またはコストを(変動する精度によって)選択することを可能にすることができる。
【0022】
少なくとも一部の実施形態では、汎用データボリュームは、SSDによってバックアップされて良く、例えば小型から中型サイズのデータベース、開発及びテスト環境、ならびにブートデータボリュームなどの多くの異なるタイプのワークロードに対して十分なパフォーマンスを提供することができる。ブートデータボリュームは、一部の実施形態では、例えば仮想コンピュートサービス230によって提供されるインスタンス、などの仮想コンピュートインスタンスが、ブートデータボリュームから直接ブートすることを可能にする。ブートデータボリュームからブートされた仮想インスタンスは、停止され、その後再始動させることができ、ブートデータボリュームにセーブされるいずれかのその状態を保持し、インスタンスが停止される間の仮想コンピュートインスタンスの一部の特性の修正を可能にする。汎用データボリュームに関するリソース割り当ては、多くの方法で構成されて良い。例えば、汎用データボリュームは、異なるストレージサイズ(例えば1ギガバイト〜1テラバイト)の範囲内で構成されて良い。
【0023】
保存されたデータへのアクセスを行うためのリソース割り当ても同様に変化し得る。例えば、いくつかの実施形態において、汎用データボリュームの種々のデータボリュームオファリングは、ベースラインアクセスパフォーマンス(例えば1つのデータボリュームに関して1秒当たり128メガバイトまでの総スループットを有するギガバイト当たり3IOPS)を提供することができる。利用可能なまたは基準とする様々なシェアリングまたはスケジューリングスキームとして、追加のアクセスパフォーマンス容量が提供されて良い。例えば、汎用データボリュームは、バーストパフォーマンス(例えばボリューム当たり3,000IOPSまでバーストする能力)に対して追加のアクセス容量を提供することができる。このようなバーストパフォーマンス容量は、いくつかの実施形態において、ボリュームサイズに左右される場合がある(例えば20GBデータボリュームまたは900GBデータボリュームに関して3,000IOPSのバーストパフォーマンスを可能にする)。一部の実施形態では、どのくらいの追加のアクセス容量がデータボリュームに対して提供され得るかを判定するためのクレジットバランススキームを実行することによって、バーストパフォーマンス容量が割り当てられる場合がある。例えばデータボリュームの記憶サイズは、データボリュームのクレジットバランスに関するクレジット補充速度に結びつけられて良い。クレジットは、一定の期間にわたる追加のアクセス容量を保証することができる(例えば1秒間に3,000IOPSを保証する)。追加の容量が利用される各々の期間において、データボリュームに関するクレジットバランスからクレジットが差し引かれて良い。クレジット補充速度に従って新たなクレジットをクレジットバランスに加えることができる。データボリュームに関する全てのクレジットが使用されたならば、一部の実施形態では、データボリュームに対するアクセスは、ベースラインパフォーマンスレベルまで抑制される場合がある。
【0024】
ブロックベースストレージサービス200は、一部の実施形態ではプロビジョンドアクセスデータボリュームタイプを提供する場合がある。プロビジョンドアクセスデータボリュームは、安定した低レイテンシパフォーマンスをストレージに与えることができ、これはI/O集約ワークロード(例えばデータベース)を伴うクライアントの利用に関して有益であり得る。少なくとも一部の実施形態では、プロビジョンドアクセスデータボリュームは、SSDによってバックアップされて良い。例えばプロビジョンドアクセスデータボリュームは、1つのデータボリュームに関して特定の数のIOPSまでをサポートする(例えばGB当たり30IOPS、これは134GBほどの小さいプロビジョンドアクセスデータボリュームに関して4,000IOPSがプロビジョンされることを可能にする)。プロビジョンドアクセスデータボリュームは、達成すべきデータボリュームに関して異なるスループットレベルを可能にし得る(例えば特定のデータボリュームに対する500IOPSのプロビジョニングは、128MB/Sスループットまでを可能にし得る)。いくつかの実施形態において、複数のボリュームを論理的に組み合わせる(例えばRAIDフォーマット内で併せてストライプ化される)ことができ、これはアクセス及びスループットパフォーマンスを高めることができる。いくつかの実施形態において、低レイテンシで安定したパフォーマンスを実現するために、プロビジョンドアクセスを最適化するように構成された仮想コンピュートインスタンスタイプが、プロビジョンドアクセスデータボリュームと組み合わせて利用される場合もある。
【0025】
ブロックベースストレージサービス200は、一部の実施形態においてコスト効率の高いデータボリュームタイプを提供する場合がある。コスト効率の高いデータボリュームタイプは、他のデータボリュームタイプよりもデータの記憶に関してより低いコストを実現することができる。例えば、いくつかの実施形態において、コスト効率の高いデータボリュームは、磁気ストレージドライブ(例えばHDD)によってバックアップされて良い。コスト効率の高いデータボリュームは、データが頻繁にアクセスされるデータボリュームの利用に関して、及び/または最も低い記憶コストが重要なシナリオに関して効率的なストレージを実現することができる。コスト効率の高いデータボリュームは、様々なアクセス能力(例えば数百IOPSまでバーストする能力を有する100IOPSベースラインパフォーマンス)を提供し得る。
【0026】
ブロックベースストレージサービス220は、ブロックベースストレージサービス220の操作を支援するためにブロックベースストレージサービス制御プレーン222を実装する場合がある。種々の実施形態において、ブロックベースストレージサービス制御プレーン222は、例えば仮想コンピュートサービス230によって提供されるコンピュートインスタンス上で実行中のプログラム及び/もしくはプロバイダネットワーク200内に配置された他のネットワークベースサービス及び/もしくは1つまたは複数の他のデータセンター内に配置された任意選択のコンピューティングシステム(図示せず)、またはネットワーク260を介して利用可能なプロバイダネットワーク200の外部の他のコンピューティングシステムなど、クライアントに対するブロックデータストレージの可用性を管理するのを支援する。データボリューム226へのアクセスは、ブロックデータトランザクション命令に応答して、プロバイダネットワーク200内の内部ネットワークを介して、またはネットワーク260を介して外部から行われて良い。
【0027】
ブロックベースストレージサービス制御プレーン222は、ユーザアカウントの管理を含め、提供するブロックレベルのストレージ機能に関連した様々な種類のサービス(例えば作成、削除、請求書作成、支払いの徴収など)を提供することができる。ブロックベースストレージサービス制御プレーン222はさらに、配置リクエストに応答して、データボリューム226の形成、利用及び削除に関連したサービスを提供する場合もある。少なくとも一部の実施形態において、ブロックベースストレージサービス制御プレーン222は、図3に関して以下でさらに詳細に記載されるような構成マネージャ227、及び図4に関して以下に記載されるようなインターフェース229を実装する場合がある。ブロックベースストレージサービス制御プレーン222はまた、他のストレージサービス240上でのボリュームスナップショットの形成、利用及び削除に関連したサービスを提供する場合もある。ブロックベースストレージサービス制御プレーン222はまた、データボリューム226の利用及びそれらのボリュームのスナップショットに関連した収集、パフォーマンスの処理及びデータの審査に関連したサービスを提供する場合もある。
【0028】
プロバイダネットワーク200はまた、上記で指摘したように別のストレージサービス240を実装する場合もある。他のストレージサービス240は、ブロックベースストレージサービス220によって提供されるものと同一のまたは異なるタイプのストレージを提供する場合がある。例えば、いくつかの実施形態において、他のストレージサービス240は、オブジェクトベースのストレージサービスを提供する場合があり、これはデータオブジェクトとしてデータを保存し管理することができる。例えば、種々のデータボリューム226のボリュームスナップショットは、特定のデータボリューム226に関するスナップショットオブジェクトとして保存されて良い。少なくとも一部の実施形態では、構成推奨が、データボリュームが別のストレージサービス(例えばスナップショットまたはアーカイブされたコピーなど)内に移動されるまたは格納されることを示す場合がある。他のストレージサービス240に加えて、プロバイダネットワーク200は、他のネットワークベースサービス250を実装する場合もあり、これは、クライアント210ならびにプロバイダネットワーク200の他のサービス(例えばブロックベースストレージサービス220、仮想コンピュートサービス230及び/または他のストレージサービス240)が種々のタスクを実行するまたはリクエストすることを可能にする種々の異なるタイプの分析、計算、記憶または他のネットワークベースのシステムを含んで良い。
【0029】
クライアント210は、ネットワークプロバイダ200にリクエストを発信するように構成可能な任意のタイプのクライアントを包含して良い。例えば、所与のクライアント210は、好適なバージョンのウェブブラウザを含んで良い、またはプラグインモジュール、もしくはウェブブラウザによって提供される実行環境に対する拡張機能として、もしくはその実行環境内で実行するように構成された他のタイプのコードモジュールを含む場合もある。あるいは、クライアント210は、データベースアプリケーション(またはそのユーザインターフェース)、メディアアプリケーション、オフィスアプリケーションもしくはコンピュートインスタンスを利用し得る任意の他のアプリケーション、データボリューム226、または種々の動作を行うためのプロバイダネットワーク200内の他のネットワークベースサービスなどのアプリケーションを包含する場合もある。いくつかの実施形態において、そのようなアプリケーションは、全てのタイプのネットワークベースのデータに関して必ずしもフルブラウザサポートを実行せずに、ネットワークベースサービスリクエストを生成し処理するのに十分なプロトコルサポート(好適なバージョンのハイパーテキストトランスファープロトコル(HTTP))を含んで良い。いくつかの実施形態において、クライアント210は、レプレゼンテーショナル・ステート・トランスファー(REST)−スタイルのネットワークベースサービスアーキテクチャ、ドキュメント−もしくはメッセージベースのネットワークベースサービスアーキテクチャ、または別の好適なネットワークベースサービスアーキテクチャに従ってネットワークベースサービスリクエストを生成するように構成されて良い。いくつかの実施形態において、クライアント210(例えば計算クライアント)は、データボリューム226によって提供されるコンピュートインスタンスまたはブロックストレージによって提供される計算リソースを利用するクライアント210上のアプリケーション実装に対してトランスペアレントなやり方で、コンピュートインスタンスまたはデータボリューム226に対するアクセスを行うように構成されて良い。
【0030】
クライアント210は、外部ネットワーク260を介してネットワークベースサービスリクエストをプロバイダネットワーク200に伝達することができる。種々の実施形態において、外部ネットワーク260は、クライアント210とプロバイダネットワーク200の間にネットワークベースの通信を確立するのに必要なネットワーキングハードウェアと、プロトコルの任意の好適な組み合わせを包含して良い。例えば、ネットワーク260は一般に、インターネットを集合的に構築する種々の電気通信ネットワーク及びサービスプロバイダを包含して良い。ネットワーク260は、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)などのプライベートネットワークならびに公共のまたはプライベート無線ネットワークなども含んで良い。例えば、所与のクライアント210及びプロバイダネットワーク200は両方とも、その独自の内部ネットワークを有するエンタープライズにおいてそれぞれプロビジョンされる場合もある。そのような実施形態では、ネットワーク260は、所与のクライアント210とインターネット間、ならびにインターネットとプロバイダネットワーク200間にネットワーキングリンクを確立するのに必要なハードウェア(例えばモデム、ルータ、スイッチ、ロードバランサー、プロキシサーバなど)、及びソフトウェア(例えばプロトコルスタック、アカウンティングソフトウェア、ファイアウォール/セキュリティソフトウェアなど)を含んで良い。一部の実施形態では、クライアント210は、公共のインターネットではなく、プライベートネットワークを利用してプロバイダネットワーク200と通信する場合もあることに留意されたい。
【0031】
図3は、一部の実施形態による、データボリュームの動的な構成を実現する構成マネージャを図示する論理ブロック図である。構成マネージャ227は、図4図8に関して以下で考察されるものなど、様々な技術を実装することでデータボリュームの動的な構成を実現することができる。構成マネージャ227は、構成推奨を決定する及び/または実行するための推奨事象を検出することができる。いくつかの実施形態において、再構成は、クライアント(複数可)350に構成推奨の通知を提供する、及び/または構成推奨を行うための選択または認証を受け取ることができる。いくつかの実施形態において、構成推奨は、(例えば予め受信した認証及び/または予め選択された最適化目的に基づいて)自動で行われて良い。
【0032】
上記で指摘したように、ブロックベースストレージサービスを提供するために、複数のリソースホスト、例えばリソースホスト(複数可)300が実装されて良い。種々の実施形態において、構成マネージャ227は、クライアント利用モニタ320を実装することで、履歴となるクライアントの利用データを収集する、追跡する及びまたはモニタすることができる。例えば、クライアント利用モニタ320は、リソースホスト(複数可)上でホストされるデータボリュームのクライアントの利用を示す情報、メトリクスまたはメタデータに関するクエリによってリソースホスト(複数可)300を周期的にスイープすることができる。例えば、クライアント利用データは、種々の実施形態において、データボリュームがクライアントのために使用されてきた様々な局面を示す場合がある。例えば、ストレージ利用は、そのデータボリュームに割り当てられた総ストレージ(例えば200ギガバイト)からの特定のデータボリューム(例えば10ギガバイト)内に保存されたデータの全体量を示して良い。アクセス利用(またはデータボリュームへのアクセスを行ったワークロードの何らかのその他の指示)が収集される場合もある(例えば利用されたIOPSの数)。他のパフォーマンス特徴、クライアント利用を示す、またはそれに関連し得る、例えばスループット(例えば毎秒当たりに転送されるバイト数)またはレイテンシ(例えばデータボリュームにおいて特定の動作またはトランザクションを実行するための時間量)が収集されて良い。クライアント利用モニタ320は、履歴クライアント利用ストア322にデータを保存することができ、このストアは収集したデータを永続的に維持することができる。いくつかの実施形態において、履歴クライアント利用ストア322は、データベースとして、またはそうでなければ検索可能/照会可能なストレージシステムとして実装されることで、構成マネージャ227の他の構成要素(例えば構成推奨を決定するために、推奨エンジン310によって)またはブロックベースストレージサービス制御プレーン226に対してアクセスを行うことができる。
【0033】
少なくとも一部の実施形態では、クライアント利用モニタ320は、推奨事象(または構成推奨を実施するための事象)を検出またはトリガすることができる。例えば、現在のストレージ利用がほぼ全体の容量に近い場合、クライアントモニタ320は、推奨事象をトリガして良く、これに関して推奨エンジン310が構成推奨(複数可)を検出し決定することができる(例えば増大したストレージサイズを有するようにデータボリュームを構成するために)。種々の実施形態において、データボリュームを決定するためのトリガは、認証管理340を介してクライアント350(複数可)によって構成及び/または決定されて良い。
【0034】
構成マネージャ227は、種々の実施形態において推奨エンジン310を実装することで、リソースホスト(複数可)300におけるデータボリュームに関する推奨事象を検出する及び/または構成推奨を決定することができる。推奨エンジン310は、再構成後のデータボリュームへのその後アクセスが新たな構成において行われるように、種々の推奨技術を実行して、データボリュームに関して様々な構成推奨を特定して、データボリュームを再構成することができる。例えば、履歴クライアント利用データの分析に基づいて、データボリュームに関するベースラインまたは見込まれる利用または要件が決定されて良い。例えば、データボリュームのワークロードが100から500IOPSの間で変動する場合、このとき500IOPSのベースライン要件が特定されて良い。少なくとも一部の実施形態では、データボリュームの現在の構成に関してベースラインまたは見込まれる利用が検討されて良い。上記の例を考慮すると、この場合データボリュームに関して時として500IOPSまで利用される場合もある。現在の構成は、データボリュームにおけるワークロードに関して保証された100IOPSのパフォーマンスのみを提供するコスト効率の高いデータボリュームタイプにおいて構築されて良い。データボリュームに関するワークロードが、そのタイプのデータボリュームに関して設けられた保証を超えるため、異なる構成のデータボリュームが、より最適なサービスの保証を提供する場合もある(例えばより高度のベースラインIOPSパフォーマンスを有する汎用データボリュームタイプ)。データボリュームのワークロードに適合する能力を提供するデータボリュームオファリングが推奨のために特定されて良い。
【0035】
パフォーマンス及び/またはコストに関してデータボリュームを最適化するまたは改良し得る構成推奨が決定されて良い。それがパフォーマンスの欠陥(例えば上記の例で記載されたような)に関して特定されようと、コストの欠陥(例えばコストが浪費されるような全てのデータボリュームを利用しない)に関して特定されようと、構成の目的が、データボリュームに関して特定されて良い。いくつかの実施形態において、構成の目的は、クライアントによって明白に定義されて良い(例えばパフォーマンスを高め、かつコストを下げる構成推奨のみを提供する)。他の実施形態では、構成の目的は、上記に記載したパフォーマンス及び/もしくはコストの欠陥に基づいて、ならびに/またはボリューム構成を変更する必要があり得る(例えばデータボリュームが利用可能なストレージ以外で稼働していることを検知する)トリガ、アラームまたはシナリオに基づいて動的に特定される場合もある。データボリュームの可能な構成に基づいて特定された構成の目的を解決するために様々な最適化技術を実行することで(例えば、様々な有限の、反復の、またはヒューリスティックベースの技術を実行する)、特定された目的の1つまたは複数に関してデータボリュームを改善する構成を見いだすことができる。構成推奨は、データボリュームのタイプ(例えば、汎用、プロビジョンドアクセスもしくはコスト効率)及び/またはデータボリュームのリソース割り当てもしくは利用(例えばストレージボリューム)に対する変更を含む場合がある。いくつかの実施形態において、異なるローカリティ(例えば、異なるリソースホストまたはインフラストラクチャゾーン)がデータボリュームに関してより最適なパフォーマンスを提供し得る(例えば、データボリュームへのより最適なネットワークアクセスを行うために、ネットワーク利用がより少ないローカリティにおいてデータボリュームを構成する)という判断に基づいて構成推奨が生成される場合もある。一部の実施形態において、推奨構成を提供する適切なデータボリュームオファリングが特定されて良い。複数の構成推奨が1つのデータボリュームに関して生成される場合もある。
【0036】
構成マネージャ227は、以下で考察するように、種々の実施形態において、クライアント(複数可)350に構成推奨の通知を提供する場合がある。例えば、認証管理340が実装されて、構成推奨を含む通知(例えば電子メールメッセージ、クライアントにモニタされるメッセージボードへの投稿メッセージ、または他の通信技術)を生成し送信する場合がある。認証管理340は、一部の実施形態において、図4に関して以下で考察するように、データボリュームの自動再構成に関する認証を行う及び/または設定することが許された構成推奨の返信である選択を受信するためのインターフェースを提供する場合もある。
【0037】
構成マネージャ227は、認証された構成を実行するために再構成コーディネータ330を実装して良い。例えば、少なくとも一部の実施形態ではマイグレーション操作が行われて、新たな推奨構成においてデータボリュームをホストする能力及び/または容量を備えた異なるリソースホストにデータボリュームを移動させる場合がある。マイグレーション操作は、一部の実施形態では、データボリュームを移動先のリソースホストに移し替えるように現在のリソースホストに命じることによって実施されて良い。いくつかの実施形態において、リソースを移動先のリソースホストに送る前に、マイグレーションワーカータスクまたはノードなどの仲介物が、リソースに命じる及び/またはリソースを受け取る場合もある。一部の実施形態では、複数のマイグレーション操作を行って、複数のレプリカまたはコピー(例えば、マスター及びスレーブ(複数可))を有するデータボリュームを移動させる場合もある。マイグレーション操作は、データボリュームのクライアント利用を妨害したり、それに影響を与えたりしないようなやり方で行われて良い。例えば、マイグレーション操作は、データボリュームの1つまたは複数のレプリカが、データボリュームへのサービスアクセスリクエストに対して利用可能であるようにして常に行われて良い(例えば、新たな構成において2つのレプリカが第3のレプリカを追加し、この第3のレプリカにデータボリュームをコピーし、最初の2つのレプリカのうちの1つを削除し、第2の新たなレプリカを新たな構成において追加することを繰り返し、最後に、新たな構成において2つのレプリカを有するために古い構成の第2のレプリカを削除する)。少なくとも一部の実施形態では、データボリュームを構成する作業は、データボリュームをマイグレートせずに、リソースホストを更新して新たな構成においてデータボリュームを提供することを含む場合がある(例えば、追加のストレージをデータボリュームに割り当てる、追加のIOPSをデータボリュームに割り当てるなど)。データボリュームを再構成することによって成された変更を反映するために、様々なメタデータ、アカウント情報、請求書作成、メータリング、またはクライアントに関する他のデータに対する更新が行われる場合もある(例えば、新たなボリューム構成を反映するために請求率または他のメータリング情報を更新する)。
【0038】
図4は、一部の実施形態による、データボリュームの動的な構成を構成するためのクライアントとストレージサービスの間の対話を例示する論理ブロック図である。図2に関して上記で考察されたインターフェース229が、ブロックベースストレージサービス220に関して実装されてクライアント(複数可)400、例えば、プロバイダネットワーク200の外部のクライアント(例えばクライアント210)またはプロバイダネットワーク200の内部のクライアント(例えば他のサービス230、240など)に、ブロックベースストレージサービス220によって提供される種々のサービス及び機能へのアクセスを与えることができる。インターフェース229は、ネットワークベースのサイト(例えばウェブサイト)において実装され得るような、プログラムに基づいたインターフェース(例えばアプリケーションプログラミングインターフェース(API))及び/またはグラフィカルユーザインターフェース(GUI)として実装されて良い。一部の実施形態では、以下に記載される様々なリクエスト、応答、通知及び他の通信が、インターフェース229を介して提供されて良い。例えば、専用APIリクエストは、リクエスト410及び430ならびに応答420及び440用にフォーマットされて良い。
【0039】
自動構成を認証する1つまたは複数のリクエスト(複数可)410が、インターフェース229を介して送信されて良い。例えば、ポップアップウィンドウ、一連のインターフェース(例えばウィザード)または他のグラフィカルユーザインターフェースが、データボリュームの自動構成を構成するための1つまたは複数のオプションまたは選択を提供することができる。例えば、特定のデータボリュームを特定するためのインターフェース要素(例えば特定のユーザアカウントに対応付けられたデータボリュームのドロップメニュー)、またはデータボリュームの名前または他の識別子が入力され得るサーチインターフェースが実装されて良い。選択または入力410が行われてデータボリュームを特定することができる。同一の及び/または異なるユーザインターフェース要素(例えば「私は同意します」というボタン)を介して自動再構成を行うための認証または同意が伝達されて良い。少なくとも一部の実施形態では、自動構成は、特定の状況において行われるようにさらに構成される場合もある。例えば、再構成が行われ得ることに応答してトリガ事象またはアラームが設定されて良い(図6に関して以下で考察するように)。一部の実施形態では、推奨または構成事象をトリガするための様々なメトリクス、情報または他のシナリオが、自動構成リクエスト410に関する認証の一部として指定される場合もある。
【0040】
インターフェース229(または何らかの他の通信技術)を介して推奨通知(複数可)420がクライアント(複数可)400に提供されて良い。例えば推奨通知(複数可)420は、クライアントに対して直接送信されるAPIフォーマット化された応答を介して提供されて良い。いくつかの実施形態において、代替の通信プロトコルまたは技術、例えば電子メール(e−メール)、可聴メッセージ(例えば携帯電話に対する)、またはSMSもしくはMMSテキストメッセージを利用して推奨通知を提供する場合もある。少なくとも一部の実施形態では、図5に関して以下で考察するように、グラフィカルユーザインターフェース通知が提供されて良い。例えばe−メールが、ユーザアカウントに登録されたe−メールアドレスまたは推奨通知に関して認証された受取人に送信されて良く、これは推奨通知を含むグラフィカルユーザインターフェースを実装するネットワークベースのサイトへのリンクを提供することができる。通知は、サイトダッシュボード、メッセージボード、またはグラフィカルユーザインターフェースを介して提供される他の通信インターフェースに投稿または表示される場合もある。
【0041】
図5は、一部の実施形態による、データボリュームに関する構成推奨の通知の一例の図である。推奨通知500は、データボリュームに関して推奨される構成(複数可)の指示を与えるためにテキストの要素及び/またはグラフィカル要素を含んで良い。例えば、推奨通知は、データボリュームの名前または識別子によって特定のデータボリュームを特定することができる。少なくとも一部の実施形態において、概要の提示またはセクションが、構成推奨を行うように選択することによって達成され得る、見込まれる変更を示すことができる。例えば、図5に例示されるように、「再構成することによってデータボリューム492SA104XZに関して書き込みパフォーマンスをX%増大させ、コストをX%セーブする」ことが述べられている。
【0042】
いくつかの実施形態において、現在の構成の要素510は、そのデータボリュームの現在の構成を表す詳細を提供して良い。例えば、現在の構成510は、現在のデータボリュームタイプ(例えばソリッドステートストレージにバックアップされる、もしくは磁気ストレージにバックアップされる)、ストレージサイズ(例えば全体及び/または現在利用される)、どのようにストレージスループットが管理されるか/割り当てられるか(例えばクレジットベース、プロビジョンされる)、及び/または現在のコスト、を表示することができる。少なくとも一部の実施形態では、1つまたは複数のクライアント利用のメトリクスまたは履歴パフォーマンス512が提供される場合もある(例えばIOPS)。例えば、説明する目的で(または推奨される構成と対比させるために)メトリクスが推進するまたはトリガする推奨が含まれる場合もある。図5に例示されるように、履歴パフォーマンス512は、点線の閾値を横断する際、急激な低下を示す利用のメトリクスを図示している(例えばIOPSクレジットバランスを超えたときのI/Oスロットリングを図示する)。
【0043】
構成推奨520が推奨通知500の中に含まれて良く、様々な変更(例えばボリュームタイプ、リソース割り当てもしくは他の変更、位置及び/またはコストの変更など)及び/または推奨される変更を提供するデータボリュームオファリングを記載して良い。少なくとも一部の実施形態では、可能性のある上昇傾向または最適化(例えばパフォーマンス及び/またはコストに対する)を例示するために示される、推定されるパフォーマンス522の表示が含まれる場合もある。例えば、推定されるパフォーマンス522は、点線(例えばプロビジョンされたIOPS閾値)を超えないように図示され、これは(履歴パフォーマンス512に図示される変動とは対照的に)より安定したパフォーマンスを示すことができる。図5には1つの推奨される構成が図示されているが、推奨通知500には複数の推奨される構成が含まれて良く(そのうちの1つが選択されて良い)、よって図5は、含まれ得る推奨構成の数に関して例示することは意図されないことに留意されたい。
【0044】
少なくとも一部の実施形態では、構成推奨は、異なるデータボリュームオファリングとして表示される場合があり、さらなる詳細の表示のために選択され得る複数の異なるデータボリュームオファリングをリストアップする。例えば、異なるより大きなストレージサイズを提供するデータボリュームオファリングが、例えばリストアップされて良い。異なるデータボリュームオファリングのうちの1つの選択などのやり取りが、パフォーマンス特徴及び/またはコストなどの、さらなる情報を提供することができる。少なくとも一部の実施形態では、異なるデータボリュームオファリングに対して異なる値付けモデルが実行される場合もある。例えば、市場モデルによって、プロバイダネットワークまたは第三者プロバイダ/ファシリテータ/オペレータによって、特定の構成を有するデータボリュームオファリングがリストアップされることを可能にすることができる。データボリュームオファリングは、現在の要求(例えばそのボリュームオファリングに従ってデータボリュームを再構成するコストを変更する)に基づいて提供されて良い、及び/または異なる利用期間(例えば異なる値札付けスキームの長さ、予約されたもしくは割り込み可能なサービスなど)を提供する場合もある。
【0045】
図5に例示されるように、推奨通知500に対する応答を行うために、1つまたは複数のグラフィカルユーザインターフェース要素530及び540が実装されて良い。例えば、図5において、構成推奨520に従ってデータボリュームを再構成するために「はい」という要素530が選択されて良い。少なくとも一部の実施形態では、「はい」の要素530は、ひとたび選択されると、さらなるユーザ対話なしで再構成が自動で行われるような「ワン−クリック」ユーザエクスペリエンスを提供することができる。他のそのようなユーザインターフェース要素も同様のワン−クリックエクスペリエンス(例えば複数の構成推奨のリストの各々の隣の「はい」の要素など)を提供することができる。一部の実施形態では、再構成の実施を拒否するために「いいえ」というインターフェース要素540が選択される場合もある。
【0046】
グラフィカルユーザインターフェースとして構成されても、テキスト通知として構成されても、または他の形態の通知として構成されても、図5に関して上記で考察した情報の種々の部分の多くがこの通知に含まれて良い。同様に、上記で考察した種々のユーザインターフェース要素に加えて、またはその代わりに構成選択430がテキスト応答として提供される(例えばコマンドラインインターフェースを介して)場合もある。したがって先の考察は、他の形態の推奨通知(複数可)420または構成選択430に関して限定することは意図されていない。
【0047】
少なくとも一部の実施形態では、データボリュームの再構成が完了すると、インターフェース229を介して構成完了通知が送信されて良い440。構成が自動で行われた例では、例えば、構成推奨に関して上記で考察したようなさらなる詳細(例えばボリュームタイプ、リソース割り当て、位置に対する変更など)が提供される場合もある。いくつかの実施形態において、通知440は、グラフィカル通知システム、または推奨通知(複数可)420に関して上記で考察したようなカスタマ−アカウントに関するメッセージボードを介して提供されて良い。
【0048】
図2図5に関して上記で考察した一例のデータボリュームの動的構成は、ブロックベースストレージサービスに関して提供されてきた。データボリュームを提供する種々の他のタイプまたは構成のストレージシステムまたはサービスがこのような技術を実行する場合がある。上記に記載した種々のモジュール、構成要素、システム及び/またはサービスの異なる構成が、データボリュームの動的な構成を実現して良く、構成推奨を決定し、認証を検出して構成推奨を実行し、データボリュームを構成するように構成されて良い。図6は、一部の実施形態による、データボリュームの動的な構成を実現するための種々の方法及び技術を図示するハイレベルのフローチャートである。これらの技術は、図2図5に関して上記に記載したような、制御プレーン、構成マネージャ、またはデータボリュームをストレージシステム内で構成するための他の構成要素を利用して実行されて良い。
【0049】
610に示されるように、クライアントのためにストレージサービス内にホストされるデータボリュームのクライアント利用がモニタされて良い。クライアント利用データは、種々の実施形態において、そのデータボリュームに割り当てられた総ストレージからの特定のデータボリューム内に保存されるデータの全体量、IOPS(またはデータボリュームにアクセスするために行われるワークロードの何らかの他の表示)などのアクセス利用、データボリュームのクライアント利用を示す、もしくはそれに関連し得るスループット(例えば毎秒当たり転送されるバイト数)またはレイテンシ(例えばデータボリュームにおいて特定の動作もしくはトランザクションを実行するための時間量)などの、何らかの他のパフォーマンス特徴を示すストレージ利用であって良い。
【0050】
620に示されるように、推奨事象が検出されて良い。推奨事象は、いくつかの実施形態において、特定のアラーム、またはモニタされるクライアント利用データによって示されるシナリオ(例えばデータボリュームがX回バーストアクセスクレジットバランス超えたこと)に基づいてトリガされて良い。いくつかの実施形態において、推奨事象は単に、データボリュームに関して周期的な推奨を生成させる(例えば1週間または1ヶ月に一回)タイマーまたは他の事象である場合もある。いくつかの実施形態において、構成推奨(複数可)は、検出された推奨事象に応答して決定される場合もある。
【0051】
630に示されるように、一部の実施形態では、データボリュームのクライアント利用に少なくとも一部基づいて、サービスのデータボリュームオファリングに従ってデータボリュームを再構成するための構成推奨(複数可)が決定されて良い。再構成後のデータボリュームへのその後のアクセスが新たな構成を介して行われるように、種々の推奨技術を実行して、データボリュームを再構成する利用可能なデータボリュームオファリングに従って、データボリュームに関する構成推奨を決定することができる。例えば、履歴クライアント利用データの分析に基づいて、データボリュームに関するベースラインまたは見込まれる利用または要件が決定されて良い。例えば、データボリュームの利用されるストレージが450から650ギガバイトの間で変動する場合、このとき650ギガバイトのベースライン要件が特定されて良い。パフォーマンス及び/またはコストに関してデータボリュームを最適化し得る、または改善し得る構成推奨が決定されて良い。以下で考察される図7は、構成の目的を最適化するために構成分析の種々の例を提供する。いくつかの実施形態において、構成の目的は、クライアントによって明白に定義されてよい(例えばパフォーマンスを高め、かつコストを下げる構成推奨のみを提供する)。他の実施形態において、構成の目的は、上記に記載したパフォーマンスの欠陥及び/またはコストの欠陥、もしくはボリューム構成を変更する必要があり得る(例えばデータボリュームが利用可能なストレージ以外で稼働していることを検出する)他のトリガ、アラームまたはシナリオに基づいて動的に特定される場合もある。
【0052】
データボリュームの可能な構成に基づいて特定された構成の目的を解決するために様々な最適化技術を実行する(例えば様々な有限の、反復の、またはヒューリスティックベースの技術を実行する)ことで、特定された目的の1つまたは複数に関してデータボリュームを改善する構成を見いだすことができる。構成推奨は、データボリュームタイプ(例えば上記で考察した汎用、プロビジョンドアクセスまたはコスト効率)及び/またはデータボリュームのリソース割り当てもしくは利用(ストレージ、IOPS)に対する変更を含む場合もある。例えば、構成推奨は、データボリュームタイプを変更してIOPSを増大させる場合、またはストレージサイズを変更してIOPSを増大させる場合がある。いくつかの実施形態において、異なるローカリティ(例えば異なるリソースホストまたはインフラストラクチャゾーン)が特定のデータボリュームに関してより最適なパフォーマンスを提供し得る(例えばそのデータボリュームに対するより最適なネットワークアクセスを行うために、よりネットワーク利用がより少ないローカリティにおいてデータボリュームを構成する)という判断に基づいて、構成推奨が生成される場合もある。一部の実施形態において、推奨構成を提供する適切なデータボリュームオファリングが特定されて良い。複数の構成推奨が1つのデータボリュームに関して生成される場合もある。
【0053】
640に示されるように、推奨を実施するためのクライアント認証が検出されて良い。クライアント認証は、一部の実施形態では、インターフェースを介して明白に受信され検知されて良い。例えば、図5に関して上記で考察したグラフィカルユーザインターフェースが実装されて良く、これは選択されたならば、構成推奨を実施すべきことを示す単独のユーザインターフェース要素を提供することができる。他のタイプの構成、または構成推奨の選択の指示、例えばコマンドラインインターフェースから生成されたAPIリクエストなどが受信される場合もある。少なくとも一部の実施形態では、特定の最適化の目的(例えばコスト及びパフォーマンス)、またはトリガ事象(例えば利用可能な記憶容量が不十分である)のいずれかに関して、クライアントまたはユーザがクライアント推奨を事前に認証する場合もある。ユーザアカウント設定、データストア、またはそれに関して事前の認証が承諾されたデータボリュームを(及びどのタイプの構成推奨かについて)指示するその他のセットの情報が維持されて良い。
【0054】
650に示されるように、この構成推奨に従ってデータボリュームが再構成されて良い。例えば、マイグレーション操作が行われて、新たな推奨される構成においてデータボリュームをホストする能力及び/または容量を備えた異なるリソースホストにデータボリューム移動させることができる。マイグレーション操作は、一部の実施形態ではデータボリュームを移動先のリソースホストに移し替えるように現在のリソースホストに指示することによって実施されて良い。いくつかの実施形態において、リソースを移動先のリソースホストに送る前に、マイグレーションワーカータスクまたはノードなどの仲介物がリソースに命じる及び/またはリソースを受け取る場合もある。一部の実施形態では複数のマイグレーション操作を行って、複数のレプリカまたはコピー(例えばマスター及びスレーブ(複数可))を有するデータボリュームを移動させる場合もある。マイグレーション操作は、データボリュームのクライアント利用を妨害したりそれに影響を与えたりしないようなやり方で行われて良い。少なくとも一部の実施形態では、データボリュームを構成する作業は、データボリュームをマイグレートせずに、リソースホストを更新して新たな構成においてデータボリュームを提供することを含む場合がある。一部の実施形態では、新たな構成を反映するために、メタデータ、アクセスもしくは利用ポリシー、ストレージマッピング、またはどのようにデータボリュームがホスト(複数可)において実現されるのかを制御する他のデータが更新される場合もある。
【0055】
データボリュームのグループを評価して推奨される変更を行うために、制御プレーンまたは他のストレージサービス管理システムの一部として、図6に関して上記に記載した技術が実施されて良い。例えば、多くの異なるクライアントまたはユーザアカウントに関するデータボリュームが制御プレーンによって周期的に評価されることで、異なる構成がデータボリュームのコストを下げる(パフォーマンスを下げることなく)可能性があるかどうか判定することができる。そうであるならば、データボリュームのこのグループに関してコスト削減を達成するために、制御プレーンは、このグループのデータボリュームを再構成することができる。
【0056】
図7は、一部の実施形態による、構成推奨を決定するための種々の方法及び技術を図示するハイレベルのフローチャートである。710で示されるように、データボリュームに関する最適化の目的が特定されて良い。最適化の目的は、一部の実施形態では、データボリュームのユーザまたはクライアントによって明白に定義されて良い、または設定されて良い。例えば、そのデータボリュームに関してコストの改善が確認された場合、データボリュームは自動構成に関して認証されて良い。同様に、推奨の通知を受信したとき、ユーザが明白に認証するまたは拒否し得る、パフォーマンスの改善を考慮するためのデータボリュームが特定される場合もある。少なくとも一部の実施形態では、複数の目的(例えばコスト、パフォーマンス及びコストとパフォーマンスの両方)が特定される場合もある。
【0057】
720、730及び740に示されるように、コスト最適化の目的、パフォーマンス最適化の目的、及びパフォーマンスとコストを改善するための最適化の目的が特定されて良い。722、732及び742に示されるように、データボリュームオファリングのそれぞれの決定は、これらの目的の各々、それぞれに関してデータボリュームを改善するように行われて良い。異なる最適化目的の各々にどのように到達し得るかを評価するために、データボリュームの履歴クライアント利用データが分析されて良い。例えば、履歴クライアント利用データが、データボリュームにおいて行われるIOPSが、データボリュームのプロビジョンドアクセス容量を完全には利用しなかったこと、及び汎用データボリュームを含むデータボリュームオファリングによって提供されるバースト容量が、同様のパフォーマンス体験を提供するのに十分であることを示したならば、コスト最適化の目的は、プロビジョンドアクセスから汎用ボリュームへとボリュームタイプを変更することが、そのデータボリュームに対するアクセス容量に対して全く(またはほとんど)影響せずに特定のデータ量を保存し、これにアクセスするためのコストを下げる可能性があることを認識し得る。コスト最適化の目的の別の例では、そのデータがあまりにもまれにしかアクセスされないため、コスト効率の高いデータボリュームを含むデータボリュームオファリングへのボリュームタイプの変更は、データボリュームのパフォーマンスに対して全く(またはほとんど)影響せずにデータボリュームに対してより低コストを実現するであろうと、データボリュームの評価が判定する場合もある。
【0058】
同様の分析が、パフォーマンス目的に関しても行われて良い。例えば、コスト効率の高いデータボリュームタイプで実現されたデータボリュームの履歴クライアント利用は、汎用またはプロビジョンドアクセスボリュームタイプを含むデータボリュームオファリングへの変更が、そのデータボリュームへのより最適なアクセスを提供することを示す場合がある。上記で指摘したような一部のデータボリュームオファリングは、データボリュームに対するリソース割り当てに対する変更を含む場合がある(たとえボリュームタイプに対する変更がなくても)。例えば、別のパフォーマンス最適化の例では、アクセスクレジットが不足しているため、データボリュームへのアクセスが抑制されていることを示すクライアント利用履歴の分析に基づいて、バーストアクセスクレジットがそのデータボリュームに関するクレジットバランスに加えられる補充速度を上げるために、汎用ボリュームのストレージサイズに対して推奨される増加が決定される場合がある。
【0059】
いくつかの実施形態において、パフォーマンス及びコストは、742に示されるように共に最適化されて良い(これはコストまたはパフォーマンスを個々に最適化するのではなく、異なるデータボリュームオファリングを提供することができる)。例えば、履歴クライアント利用データが、データボリュームに対して行われるアクセスが不十分である(例えばIOPSが十分でない)ことを示す場合がある。バーストアクセスクレジットに関してより高速の補充速度を実現するために、データボリュームのストレージサイズが大きい場合もあるが、ストレージサイズの一部のみが実際には利用される。履歴クライアント利用データによって示されるIOPS要件を満たすようにプロビジョンされたIOPSの数を有するプロビジョンドアクセスボリュームとして、より小さい(及びより安い)ストレージサイズを有するようにデータボリュームを構成するために、データボリュームオファリングが特定されて良い。
【0060】
少なくとも一部の実施形態では、データボリュームオファリング(複数可)は、改善閾値を超える構成推奨(複数可)として提供されて良い。改善閾値は、構成を実施するコストに匹敵すべき利益のいかなる閾値も満たさない推奨を除外するために、クライアント及び/またはストレージシステムによって決定されて良い。例えば、ストレージシステムは、この閾値を実行することで、ごくわずかな利益の推奨は提供されないこと、及び/または自動的に行われてシステムリソースを無駄にすることがないことを保証することができる。同様に、クライアントは、この利益がある特定の意味がある場合のみ(例えば特定の分量のコストを削減する)推奨を受けるように選択することができる。
【0061】
760に示されるように、構成推奨(複数可)の通知が提供760されて良い。図4及び図5に関して上記で考察したように、通知は、クライアントに直接送信されるAPIフォーマット化された応答を介して提供されて良い。いくつかの実施形態において、代替の通信プロトコルまたは技術、例えば電子メール(e−メール)、可聴メッセージ(例えば携帯電話に対する)またはSMSもしくはMMSテキストメッセージを利用して、推奨通知を提供する場合もある。少なくとも一部の実施形態では、グラフィカルユーザインターフェース通知が提供される場合もある。通知は、サイトダッシュボード、メッセージボード、またはグラフィカルユーザインターフェースを介して提供される他の通信インターフェースに投稿または表示されて良い。
【0062】
図8は、一部の実施形態による、データボリュームを構成するための種々の方法及び技術を図示するハイレベルのフローチャートである。上記で考察した様々な技術に従ってデータボリュームの認証された構成推奨が決定されて良い。データボリュームの構成作業は、再構成される際、データボリュームをホストする能力及び容量を備えたリソースホストを特定することを含んで良い。810に示されるように、一部の実施形態において、データボリュームの認証された再構成に関するホストの位置が特定されて良い。例えば、再構成されたデータボリュームをホストするための記憶容量及びアクセス容量(例えばIOPS)を備えたそのようなリソースホストを特定するために、ホスト利用データ及び/または構成データが評価されて良い。同様に、再構成されたデータボリュームを提供するためにハードウェア(例えばSSDまたはHDD)及び/またはソフトウェアを備えたホストの位置が特定されて良い。
【0063】
少なくとも一部の実施形態において、820に示されるように、最初の判断は、現在データボリュームをホストするリソースホストが構成後もこのデータボリュームを継続してホストするかどうかについてのチェックであって良い。例えば、ホストがSSDバックアップストレージをホストし、かつ構成推奨が、共にSSDバックアップストレージを利用するボリュームタイプの間での変更を含む場合、ホストは、再構成後もデータボリュームをホストすることができる。850に示されるように、そのようなシナリオにおいて、一部の実施形態では、データボリュームを再構成するために現在のホスト(複数可)が更新されて良い。例えば、新たな構成を反映するために(例えばストレージサイズを増大/縮小する、IOPSを増大/減少するなど)、メタデータアクセスもしくは利用ポリシー、ストレージマッピング、またはデータボリュームがこのホスト(複数可)においていかにして実現されるかを管理する他のデータが更新されて良い。
【0064】
820からの肯定的な出口として示されるように、データボリュームが移動される場合、830に示されるように、特定されたホストの位置にデータボリュームを再配置するためにマイグレーション操作(複数可)が始動されて良い。種々の実施形態において、要素850に関して上記で考察したように、特定されたホスト位置は、データボリュームを新たな構成で実現するように構成されて良い(例えばメタデータ、アクセスまたは利用ポリシー、ストレージマッピング、もしくはどのようにデータボリュームが実現されるかを管理する他のデータを更新する)。マイグレーション操作は、いくつかの実施形態において、データボリュームを移動先のリソースホストに移し替えるように現在のリソースホストに指示することによって実施されて良い。いくつかの実施形態において、リソースを移動先のリソースホストに送る前に、マイグレーションワーカータスクまたはノードなどの仲介物がリソースに命じる及び/またはリソースを受け取る場合もある。一部の実施形態では、複数のマイグレーション操作を行って、複数のレプリカまたはコピー(例えばマスター及びスレーブ(複数可))を有するデータボリュームを移動させる場合もある。マイグレーション操作は、データボリュームのクライアント利用を妨害したりそれに影響を与えたりしないようなやり方で行われて良い。例えば、マイグレーション操作が完了していない間も、データボリュームへのアクセスはなおもデータボリュームの現在の構成に従って行われて良い。マイグレーション操作が完了すると、種々の実施形態において、860に示されるように、再構成が完了したことを示す通知が送信されて良い。
【0065】
本開示の実施形態を、以下の条項を鑑みて記載することができる。
1. 1つまたは複数のストレージノードであって、
ブロックベースストレージサービスの複数のクライアントのために複数のデータボリュームを格納するように構成されており、前記複数のデータボリュームの少なくとも1つが前記複数のデータボリュームの別のものと同一のストレージノードに格納される、前記1つまたは複数のストレージノードと、
前記ストレージシステムのための構成マネージャであって、
前記データボリュームの所与のデータボリュームに関して、
前記データボリュームのクライアント利用を追跡し、
前記データボリュームの前記クライアント利用に少なくとも一部基づいて、前記ブロックベースストレージサービスの1つまたは複数のデータボリュームオファリングに従って前記データボリュームを再構成するために1つまたは複数の構成推奨を決定し、
前記クライアントに前記1つまたは複数の構成推奨を提供し、
前記構成推奨の1つを実施するためのクライアント認証を受信し、
その後の前記データボリュームの利用が前記再構成されたデータボリュームに従って行われるように、前記認証された構成推奨に従って前記データボリュームの構成を指示するように構成される、前記構成マネージャと、
を備える、ネットワークベースのブロックベースストレージサービス。
2.前記1つまたは複数の構成推奨を決定して、前記データボリュームを再構成するために、前記構成マネージャが、前記データボリュームに関して、
パフォーマンス最適化目的、または
コスト最適化目的のうちの少なくとも一方を含む1つまたは複数の最適化目的、を特定し、
前記構成推奨として提供するために、前記最適化目的に対して前記データボリュームを改善する前記1つまたは複数のデータボリュームオファリングを決定する、
ように構成される、条項1に記載のシステム。
3.前記認証された構成推奨に従って前記データボリュームの構成を指示するために、前記構成マネージャが、前記認証された構成推奨を提供することが可能な1つまたは複数の異なるリソースホストに前記データボリュームを再配置するために、1つまたは複数のマイグレーション操作を開始するように構成される、
条項1に記載のシステム。
4.前記1つまたは複数の構成推奨が、グラフィカルユーザインターフェースを介して前記クライアントに提供され、
前記クライアント認証を検出して前記1つの構成推奨を実施するために、前記構成マネージャが、前記グラフィカルユーザインターフェースを介して前記クライアントから前記1つの構成推奨の指示を受信する、
条項1に記載のシステム。
5.方法であって、
1つまたは複数のコンピューティングデバイスによって、
データボリュームのクライアント利用履歴に少なくとも一部基づいて、ブロックベースストレージサービスの1つまたは複数のデータボリュームオファリングに従って、前記ブロックベースストレージサービス内でクライアントのためにホストされる前記データボリュームを再構成するために、1つまたは複数の構成推奨を決定することと、
前記構成推奨の1つを実施するためにクライアント認証を検出することと、
前記データボリュームのその後の利用が前記再構成されたデータボリュームに従って行われるように、前記認証された構成推奨に従って前記データボリュームを構成することと、
を実行すること、を含む前記方法。
6.前記方法がさらに、前記クライアントに前記1つまたは複数の構成推奨を提供することを含み、
前記1つの構成推奨を実施するためにクライアント認証を検出することは、前記クライアントから前記1つの構成推奨の指示を受信することを含む、
条項5に記載の方法。
7.前記1つまたは複数の構成推奨は、グラフィカルユーザインターフェースを介して前記クライアントに提供され、前記受信される指示は、前記グラフィカルユーザインターフェースのユーザインターフェース要素の選択であり、
前記グラフィカルユーザインターフェースの前記ユーザインターフェース要素の前記選択に応答して、前記認証された構成推奨に従って前記データボリュームを構成することが行われる、
条項6に記載の方法。
8.前記データボリュームに関する推奨事象を検出することをさらに含み、
前記構成推奨を決定することが、前記推奨事象の検出に応じて行われる、
条項5に記載の方法。
9.前記データボリュームを再構成するために前記1つまたは複数の構成推奨を決定することが、
前記データボリュームに関して、1つまたは複数の最適化目的を特定することであって、前記1つまたは複数の最適化目的の少なくとも1つがパフォーマンス最適化目的である、前記特定することと、
前記最適化目的に対して前記データボリュームを改善する前記1つまたは複数のデータボリュームオファリングを決定することと、
を含む、条項5に記載の方法。
10.前記認証された構成推奨が、前記データボリュームを異なるデータボリュームタイプに変更することを含む、条項5に記載の方法。
11.前記認証された構成推奨が、前記データボリュームに関して1つまたは複数のリソース割り当てを変更することを含む、条項5に記載の方法。
12.前記認証された構成推奨に従って前記データボリュームを構成することが、前記認証された構成推奨を提供することが可能な1つまたは複数の異なるリソースホストに前記データボリュームを再配置するために、1つまたは複数のマイグレーション操作を行うことを含む、条項5に記載の方法。
13.前記ブロックベースストレージサービスがプロバイダネットワークの一部として実装され、前記認証された構成推奨に従って前記データボリュームを構成することが、前記プロバイダネットワークの一部として実装された別のストレージサービスに前記データボリュームをマイグレートすることを含む、条項5に記載の方法。
14.1つまたは複数のコンピューティングデバイスによって実行される際、前記1つまたは複数のコンピューティングデバイスに、
ブロックベースストレージサービス内でクライアントのためにホストされるデータボリュームのクライアント利用をモニタすることと、
前記データボリュームの前記クライアント利用に少なくとも一部基づいて、前記ブロックベースストレージサービスの1つまたは複数のデータボリュームオファリングに従って前記データボリュームを再構成するために1つまたは複数の構成推奨を決定することと、
前記構成推奨の1つを実施するためにクライアント認証を検出することと、
その後の前記データボリュームの利用が前記再構成されたデータボリュームに従って行われるように、前記認証された構成推奨に従って前記データボリュームを構成することと、
を実施させるプログラム命令を記憶する、非一時的なコンピュータ読み取り可能記憶媒体。
15.前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、前記クライアントに対して前記1つまたは複数の構成推奨を提供することをさらに実施させ、かつ
前記特定の構成推奨を実施するためにクライアント認証を検出する際、前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、前記クライアントから前記1つの構成推奨の指示を受信することを実施させる、
条項14に記載の非一時的なコンピュータ読み取り可能記憶媒体。
16.前記データボリュームを再構成するために前記1つまたは複数の構成推奨を決定する際、前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、
前記データボリュームに関して、1つまたは複数の最適化目的を特定することであって、前記最適化目的の少なくとも1つがコスト最適化目的である、前記特定することと、
前記最適化目的に対して前記データボリュームを改善する前記1つまたは複数のデータボリュームオファリングを決定することと、
を実施させる、条項14に記載の非一時的なコンピュータ読み取り可能記憶媒体。
17.前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、
前記データボリュームに関して推奨事象を検出することをさらに実施させ、
前記構成推奨を決定することが、前記推奨事象を検出することに応答して行われる、
条項14に記載の非一時的なコンピュータ読み取り可能記憶媒体。
18.前記認証された構成推奨に従って前記データボリュームを構成する際、前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、前記再構成されたデータボリュームを提供するために、前記データボリュームの1つまたは複数のホストを更新することを実施させる、
条項14に記載の非一時的なコンピュータ読み取り可能記憶媒体。
19.前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、前記データボリュームの前記構成が完了したとき、前記データボリュームの構成が完了したことを示す通知を前記クライアントに提供することをさらに実施させる、
条項14に記載の非一時的なコンピュータ読み取り可能記憶媒体。
20.前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、
グラフィカルユーザインターフェースを介して前記クライアントに前記1つまたは複数の構成推奨を提供することをさらに実施させ、
前記1つの構成推奨を実施するために前記クライアント認証を検出する際、前記プログラム命令が、前記1つまたは複数のコンピューティングデバイスに、前記グラフィカルユーザインターフェースを介して前記クライアントから前記1つの構成推奨の指示を受信することを実施させる、
条項14に記載の非一時的なコンピュータ読み取り可能記憶媒体。
【0066】
本明細書に記載される方法は、種々の実施形態において、ハードウェア及びソフトウェアの任意の組み合わせによって実行されて良い。例えば一実施形態において、プロセッサに結合されたコンピュータ読み取り可能記憶媒体に保存されたプログラム命令を実行する1つまたは複数のプロセッサを含むコンピュータシステム(例えば図9におけるようなコンピュータシステム)によって、方法は実行されて良い。プログラム命令は、本明細書に記載される機能(例えば種々のサーバ、リソースホスト、制御プレーン、マネージャ及び/または他の構成要素、例えば本明細書に記載されるブロックベースストレージサービスを実装するものなど)を実行するように構成されて良い。図面に例示される及び本明細書に記載される種々の方法は、方法の一例の実施形態を表している。任意の方法の順序は変更されて良く、種々の要素が追加される、順序が変えられる、組み合わされる、削除される、修正されるなどする場合もある。
【0067】
本明細書に記載されるデータボリュームの動的構成の実施形態は、種々の他のデバイスと対話することができる1つまたは複数のコンピュータシステム上で実行されて良い。図9は、種々の実施形態による、一例のコンピュータシステムを例示するブロック図である。例えば、コンピュータシステム1000は、種々の実施形態において、コンピュータクラスタ、データストア及び/またはクライアントのストレージ及び/またはコンピュートノードを実装するように構成されて良い。コンピュータシステム1000は、種々のタイプのデバイスのいずれかであって良く、これは、限定するものではないが、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップまたはノートブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、コンシューマデバイス、アプリケーションサーバ、ストレージデバイス、電話、携帯電話、または一般的な任意のタイプのコンピューティングデバイスが含まれる。
【0068】
コンピュータシステム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)を含む。
【0069】
例示される実施形態では、コンピュータシステム1000はまた、1つまたは複数の永続的なストレージデバイス1060及び/または1つまたは複数のI/Oデバイス1080を含む。種々の実施形態において、永続的なストレージデバイス1060は、ディスクドライブ、テープドライブ、ソリッドステートメモリ、他のマスストレージデバイス、ブロックベースストレージデバイス、または任意の他の永続的なストレージデバイスに相当し得る。コンピュータシステム1000(またはそこで動作する分散アプリケーションまたはオペレーティングシステム)は、所望により永続的なストレージデバイス1060に命令及び/またはデータを保存することができ、保存された命令及び/またはデータを必要に応じて取り出すことができる。例えば、いくつかの実施形態において、コンピュータシステム1000は、ストレージシステムサーバノードをホストして良く、永続的ストレージ1060は、このサーバノードにアタッチされたSSDを含んで良い。
【0070】
コンピュータシステム1000は、プロセッサ(複数可)1010によってアクセス可能な命令及びデータを保存するように構成された1つまたは複数のシステムメモリ1020を含む。種々の実施形態において、システムメモリ1020は、任意の好適なメモリ技術(例えば1つまたは複数のキャッシュ、スタティックランダムアクセスメモリ(SRAM)、DRAM、RDRAM、EDO RAM、DDR 10 RAM、同期ダイナミックRAM(SDRAM)、ランバスRAM、EEPROM、不揮発性/フラッシュタイプメモリ、または任意の他のタイプのメモリ)を利用して実装されて良い。システムメモリ1020は、本明細書に記載される方法及び技術を実行するためにプロセッサ(複数可)1010によって実行可能なプログラム命令1025を収容して良い。種々の実施形態において、プログラム命令1025は、プラットフォームネイティブバイナリ、Java(商標)バイトコードなどの何らかの解読された言語、またはC/C++、Java(商標)などの任意の他の言語、またはそれらの何らかの組み合わせにおいてエンコードされて良い。例えば、図示される実施形態では、プログラム命令1025は、種々の実施形態において、リソースホストの機能を実行するために実行可能なプログラム命令を含む。いくつかの実施形態において、プログラム命令1025は、複数の別個のクライアント、ノード及び/または他の構成要素を組み込む場合もある。
【0071】
いくつかの実施形態において、プログラム命令1025は、オペレーティングシステム(図示せず)を実施するために実行可能な命令を含んで良く、このオペレーティングシステムは、UNIX(登録商標)、LINUX、Solaris(商標)、MacOS(商標)、Windows(商標)などの種々のオペレーティングシステムのいずれかであって良い。プログラム命令1025のいずれかまたは全ては、そこに保存された命令を有する非一時的コンピュータ読み取り可能記憶媒体を含み得るコンピュータプログラム製品またはソフトウェアとして提供されて良く、このプログラム命令を使用して、種々の実施形態によってプロセスを実行するためのコンピュータシステム(または他の電子デバイス)をプログラムすることができる。非一時的コンピュータ読み取り可能記憶媒体は、機械(例えばコンピュータ)によって読み取ることが可能な形態(例えばソフトウェア、プロセッシングアプリケーション)で情報を保存するための何らかの機構を含んで良い。一般的に言えば、非一時的コンピュータアクセス可能媒体は、磁気または光学媒体などのコンピュータ読み取り可能記憶媒体またはメモリ媒体、例えばI/Oインターフェース1030を介してコンピュータシステム1000に結合されたディスクまたはDVD/CD−ROMを含んで良い。非一時的コンピュータ読み取り可能記憶媒体はまた、RAM(例えばSDRAM、DDRSDRAM、RDRAM、SRAMなど)、ROMなどの任意の揮発性または不揮発性媒体を含む場合もあり、これは、システムメモリ1020または別のタイプのメモリとしてコンピュータシステム1000の一部の実施形態に含まれて良い。他の実施形態において、プログラム命令は、光学、音響、またはネットワークインターフェース1040を介して実装され得るようなネットワーク及び/または無線リンクなどの通信媒体を介して伝えられる他の形態の伝播信号(搬送波、赤外線信号、デジタル信号など)を利用して伝達されて良い。
【0072】
いくつかの実施形態において、システムメモリ1020は、データストア1045を含んで良く、これは本明細書で記載されるように構成されて良い。一般に、システムメモリ1020(例えばシステムメモリ1020内のデータストア1045)、永続的ストレージ1060及び/またはリモートストレージ1070は、データブロック、データブロックに対応付けたメタデータ及び/もしくはその状態、構成情報、ならびに/または本明細書に記載される方法及び技術を実行するのに利用可能な任意の他の情報を保存して良い。
【0073】
一実施形態において、I/Oインターフェース1030は、ネットワークインターフェース1040または他の周辺インターフェースを経由することを含め、プロセッサ1010、システムメモリ1020及びシステム内の周辺装置間のI/Oトラフィックを調整するように構成されて良い。いくつかの実施形態において、I/Oインターフェース1030は、任意の必須のプロトコル、タイミングまたは他のデータ変換を行うことで、特定の構成要素(例えばシステムメモリ1020)から別の構成要素(例えばプロセッサ1010)によって使用するのに適したフォーマットにデータ信号を変換することができる。いくつかの実施形態において、I/Oインターフェース1030は、例えば、周辺構成要素相互接続(PCI)バス標準またはユニバーサルシリアルバス(USB)標準の変形などの様々な種類の周辺バスを含んで良い。いくつかの実施形態において、I/Oインターフェース1030の機能は、2つ以上の別個の構成要素、例えば、ノースブリッジとサウスブリッジに分けられて良い。また、いくつかの実施形態において、I/Oインターフェース1030の機能の一部または全て、例えばシステムメモリ1020へのインターフェースなどは、プロセッサ1010に直接組み込まれる場合もある。
【0074】
ネットワークインターフェース1040は、コンピュータシステム1000と、ネットワークにアタッチされた他のデバイス、例えば他のコンピュータシステム1090の間でデータをやり取りすることを可能にするように構成されて良い。加えてネットワークインターフェース1040は、コンピュータシステム1000と種々のI/Oデバイス1050及び/またはリモートストレージ1070の間で通信することを可能にするように構成されて良い。入力/出力デバイス1050は、いくつかの実施形態において、1つまたは複数のディスプレイターミナル、キーボード、キーパッド、タッチパッド、スキャンデバイス、音声もしくは光学認識デバイス、または1つまたは複数のコンピュータシステム1000によってデータを入力するまたは取り出すのに好適な任意の他のデバイスを含んで良い。複数の入力/出力デバイス1050が、コンピュータシステム1000内に存在する場合がある、またはコンピュータシステム1000を含む分散システムの多様なノード上に分散される場合もある。いくつかの実施形態において、同様の入/出力デバイスがコンピュータシステム1000から切り離される場合もあり、ネットワークインターフェース1040を介するなどして、有線または無線接続を通してコンピュータシステム1000を含む分散システムの1つまたは複数のノードとやり取りすることができる。ネットワークインターフェース1040は、1つまたは複数の無線ネットワーキングプロトコル(例えば、Wi−Fi/IEEE 802.11または別の無線ネットワーキング標準)を共通してサポートして良い。しかしながら種々の実施形態において、ネットワークインターフェース1040は、任意の好適な有線または無線の一般的なデータネットワーク、例えば、他のタイプのイーサネット(登録商標)ネットワークなどを介する通信をサポートする場合もある。追加として、ネットワークインターフェース1040は、例えばアナログ音声ネットワークまたはデジタルファイバ通信ネットワークなどの電気通信/電話通信ネットワークを介して、Fibre Channel SANなどのストレージエリアネットワークを介して、または任意の他の好適なタイプのネットワーク及び/もしくはプロトコルを介して、通信をサポートする場合もある。種々の実施形態において、コンピュータシステム1000は、図9に例示されるものより多くの、より少ない、または異なる構成要素(例えばディスプレイ、ビデオカード、音響カード、周辺機器、他のネットワークインターフェース、例えば、ATMインターフェース、イーサネットインターフェース、フレームリレーインターフェースなど)を含む場合がある。
【0075】
本明細書に記載される分散システム実施形態のいずれか、またはその構成要素のいずれかは、1つまたは複数のネットワークベースサービスとして実装され得ることに留意されたい。例えば、コンピューティングサービスにおけるコンピュータクラスタは、コンピューティング及び/もしくはストレージサービス、ならびに/または本明細書に記載される分散コンピューティングシステムを利用する他のタイプのサービスをネットワークベースサービスとしてクライアントに提示することができる。いくつかの実施形態において、ネットワークベースサービスは、ネットワークを介する相互利用可能なマシン間の対話をサポートするように設計されたソフトウェア及び/またはハードウェアシステムによって実現されて良い。ネットワークベースサービスは、ウェブサービス記述言語(WSDL)などのマシン処理可能なフォーマットで記載されたインターフェースを有することができる。他のシステムは、ネットワークベースサービスのインターフェースの記述によって定められたやり方でネットワークベースサービスとやり取りすることができる。例えば、ネットワークベースサービスは、他のシステムが起動し得る種々の動作を定義することができ、種々の動作をリクエストする際、他のシステムが従うことが予測され得る特定のアプリケーションプログラミングインターフェース(API)を定義する場合もある。
【0076】
種々の実施形態において、ネットワークベースサービスは、ネットワークベースサービスのリクエストに対応付けられたパラメータ及び/またはデータを含むメッセージの利用を通してリクエストされて良い、または呼び出されて良い。そのようなメッセージは、例えば、拡張マークアップ言語(XML)などの特定のマークアップ言語に従ってフォーマットされて良い、及び/またはシンプルオブジェクトアクセスプロトコル(SOAP)などのプロトコルを利用してカプセル化されて良い。ネットワークベースサービスを実施するために、ネットワークベースサービスのクライアントは、そのリクエストを含むメッセージをアセンブルし、ハイパーテキスト転送プロトコル(HTTP)などのインターネットベースのアプリケーションレイヤ転送プロトコルを利用して、そのネットワークベースサービスに相当するアドレサブルなエンドポイント(例えばユニフォームリソースロケータ(URL))にメッセージを伝えることができる。
【0077】
いくつかの実施形態において、ネットワークベースサービスは、メッセージによる技術ではなく、リプリゼンテーションステート転送(「RESTful」)技術を用いて実現される場合もある。例えば、RESTful技術によって実現されたネットワークベースサービスは、SOAPメッセージの中カプセル化されるのではなく、例えばPUT、GETまたはDELETEなどのHTTP法に含まれるパラメータを通して呼び出すことができる。
【0078】
上記の実施形態を、考慮すべき詳細において記載してきたが、上記の開示が完全に理解されたならば当業者に明らかであるように、多くの変形形態及び修正形態が形成される可能性がある。以下の特許請求の範囲は、全てのそのような修正形態及び変更を包含するように解釈されるように意図されており、したがって上記の記載は、限定する意味ではなく、例示の意味とみなすべきである。
図1
図2
図3
図4
図5
図6
図7
図8
図9