IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

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

特開2024-73416クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー
<>
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図1
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図2
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図3
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図4
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図5
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図6
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図7
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図8
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図9
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図10
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図11
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図12
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図13
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図14
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図15
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図16
  • 特開-クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024073416
(43)【公開日】2024-05-29
(54)【発明の名称】クラウドプロバイダ基板拡張における仮想化ブロックストレージサーバー
(51)【国際特許分類】
   G06F 3/06 20060101AFI20240522BHJP
   G06F 9/455 20180101ALI20240522BHJP
   G06F 8/61 20180101ALI20240522BHJP
【FI】
G06F3/06 301Z
G06F9/455 150
G06F8/61
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024019232
(22)【出願日】2024-02-13
(62)【分割の表示】P 2021576312の分割
【原出願日】2020-06-11
(31)【優先権主張番号】16/457,850
(32)【優先日】2019-06-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/457,856
(32)【優先日】2019-06-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/457,853
(32)【優先日】2019-06-28
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.PYTHON
(71)【出願人】
【識別番号】506329306
【氏名又は名称】アマゾン テクノロジーズ インコーポレイテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】リグオリ、アンソニー ニコラス
(72)【発明者】
【氏名】オルソン、マーク ステファン
(72)【発明者】
【氏名】グリーンウッド、クリストファー マギー
(72)【発明者】
【氏名】ラボヴィク、パヴェル
(72)【発明者】
【氏名】ヴェルマ、マニシュ
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA07
5B376AD07
5B376AD09
(57)【要約】      (修正有)
【課題】カスタマーが選択したサイトにおいてプロバイダ管理インフラストラクチャを使用する場所に依存せずにカスタマーがアプリケーションを配備する方法を提供する。
【解決手段】方法は、プロバイダネットワークの拡張機能のコンピュータシステムによって、第1の仮想マシンを起動する第1の要求を受信して、ブロックストレージサーバーアプリケーションをホストし、ホストコンピュータシステムのストレージデバイスのストレージ容量の一部を、プロビジョニングされるストレージデバイスとして第1の仮想マシンにプロビジョニングし、ブロックストレージサーバーアプリケーションを第1の仮想マシンで実行する。前記実行することは、プロバイダネットワークのブロックストレージサービスからの第2の要求に応答して、プロビジョニングされたストレージデバイスに論理ボリュームを作成し、第3の要求を受信し、論理ボリュームで要求された入出力の操作を行う。
【選択図】図12
【特許請求の範囲】
【請求項1】
コンピュータ実施方法であって、
プロバイダネットワークの拡張機能のコンピュータシステムによって、第1の仮想マシンを起動する第1の要求を受信して、ブロックストレージサーバーアプリケーションをホストすることであって、前記プロバイダネットワークの前記拡張機能は、少なくともサードパーティネットワークを介して前記プロバイダネットワークと通信する、前記ホストすることと、
ホストコンピュータシステムの1つ以上のストレージデバイスのストレージ容量の少なくとも一部を、プロビジョニングされるストレージデバイスとして前記第1の仮想マシンにプロビジョニングすることと、
前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行することと、を備え、
前記ブロックストレージサーバーアプリケーションを実行することは、
論理ボリュームを作成するために前記プロバイダネットワークのブロックストレージサービスからの第2の要求に応答して、前記プロビジョニングされたストレージデバイスに前記論理ボリュームを作成することと、
第3の要求を受信して、前記論理ボリュームで入出力操作を行うことと、
前記論理ボリュームで前記要求された入出力操作を行うことと、を含む、
コンピュータ実施方法。
【請求項2】
前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行する前に、前記方法は、さらに、
別のアプリケーションを前記第1の仮想マシンで実行して、前記プロバイダネットワークのデータストアから取得されたマシンイメージからブートボリュームをロードすることであって、前記ブートボリュームは前記プロビジョニングされたストレージデバイスの別の論理ボリュームである、前記ロードすることと、
前記ブートボリュームからブートするために前記第1の仮想マシンを修正することと、
前記第1の仮想マシンを再起動することと、
を含む、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記ブロックストレージサーバーアプリケーションを実行する前に、前記第1の仮想マシンのメモリをクリアすることをさらに含む、請求項2に記載のコンピュータ実施方法。
【請求項4】
前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行する前に、前記方法は、さらに、前記第1の仮想マシンのブートボリュームを第1のブロックストレージデバイスによって記憶されたマシンイメージからロードすることを含み、前記ブートボリュームは前記プロビジョニングされたストレージデバイスの別の論理ボリュームであり、前記第1のブロックストレージデバイスは仮想ブロックストレージデバイスである、請求項1に記載のコンピュータ実施方法。
【請求項5】
前記ロードは、前記第1の仮想マシンの基本入出力システム及び前記第1の仮想マシンの統合型拡張可能ファームウェアインターフェースの少なくとも1つによって行われる、請求項4に記載のコンピュータ実施方法。
【請求項6】
前記第3の要求はブロックストレージクライアントアプリケーションから仮想ネットワークを介して受信され、
前記仮想ネットワークを通じて送信されるトラフィックは、前記仮想ネットワークに関連付けられるキーを使用して暗号化される、請求項1~5のいずれか1項に記載のコンピュータ実施方法。
【請求項7】
前記第1の仮想マシンは複数の仮想マシンのうちの1つであり、前記複数の仮想マシンのそれぞれは、ブロックストレージサーバーアプリケーションを実行して、前記方法は、さらに、
前記複数の仮想マシンの1つ以上に関連付けられるリソース使用率が閾値を超えていると決定することと、
別のホストコンピュータシステムの1つ以上のストレージデバイスのストレージ容量の少なくとも一部を、第2の仮想マシンにプロビジョニングすることと、
別のブロックストレージサーバーアプリケーションを前記第2の仮想マシンで実行することと、
を含む、請求項1~6のいずれか1項に記載のコンピュータ実施方法。
【請求項8】
前記ホストコンピュータシステムの前記1つ以上の物理ストレージデバイスの前記ストレージ容量の少なくとも別の部を、別のプロビジョニングされるストレージデバイスとして第2の仮想マシンにプロビジョニングすることと、
別のブロックストレージサーバーアプリケーションを前記第2の仮想マシンで実行することであって、前記第1の仮想マシンは前記コンピュータシステムの第1の物理コンポーネントを使用して実行され、前記第2の仮想マシンは前記第1の物理コンポーネントと異なる前記コンピュータシステムの第2の物理コンポーネントを使用して実行される、前記実行することと、
をさらに含む、請求項1~7のいずれか1項に記載のコンピュータ実施方法。
【請求項9】
前記入出力操作は、データのブロックを前記論理ボリュームのブロックアドレスに書き込むための書き込み操作であり、前記論理ボリュームで前記要求された入出力論理ボリュームを行うことは、前記データのブロックを前記論理ボリュームの前記ブロックアドレスに書き込むことを含み、前記第1の物理コンポーネントは第1のメモリデバイスであり、前記第2の物理コンポーネントは第2のメモリデバイスであり、前記プロバイダネットワークの前記拡張機能は、前記プロバイダネットワークのデータセンターの外側に配置され、前記プロバイダネットワークのカスタマーの構内にある1つ以上の物理コンピューティングデバイスを含む、請求項8に記載のコンピュータ実施方法。
【請求項10】
プロバイダネットワークの拡張機能のホストコンピュータシステムの1つ以上のストレージデバイスであって、前記プロバイダネットワークの前記拡張機能は少なくともサードパーティネットワークを介して前記プロバイダネットワークと通信する、前記1つ以上のストレージデバイスと、
ホストマネージャアプリケーションを実行するための前記ホストコンピュータシステムの1つ以上のプロセッサと、を含み、前記ホストマネージャアプリケーションは命令を含み、前記命令は、実行時に、前記ホストマネージャアプリケーションに、
第1の仮想マシンを起動する第1の要求を受信して、ブロックストレージサーバーアプリケーションをホストすることと、
前記1つ以上のストレージデバイスのストレージ容量の少なくとも一部を、プロビジョニングされるストレージデバイスとして前記第1の仮想マシンにプロビジョニングすることと、
前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行することと、を含み、前記ブロックストレージサーバーアプリケーションは命令を含み、前記命令は、実行時に、前記ブロックストレージサーバーアプリケーションに、
論理ボリュームを作成するために前記プロバイダネットワークのブロックストレージサービスからの第2の要求に応答して、前記プロビジョニングされたストレージデバイスに前記論理ボリュームを作成することと、
第3の要求を受信して、前記論理ボリュームで入出力操作を行うことと、
前記論理ボリュームで前記要求された入出力操作を行うことと、
を含む、システム。
【請求項11】
前記ホストマネージャアプリケーションはさらなる命令を含み、前記さらなる命令は、実行時に、前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行する前に、前記ホストマネージャアプリケーションに、
別のアプリケーションを前記第1の仮想マシンで実行して、前記プロバイダネットワークのデータストアから取得されたマシンイメージからブートボリュームをロードすることであって、前記ブートボリュームは前記プロビジョニングされたストレージデバイスの別の論理ボリュームである、前記ロードすることと、
前記ブートボリュームからブートするために前記第1の仮想マシンを修正することと、
前記第1の仮想マシンを再起動することと、
を行わせる、請求項10に記載のシステム。
【請求項12】
前記ホストマネージャアプリケーションは、実行時に、前記ブロックストレージサーバーアプリケーションを実行する前に、前記ホストマネージャアプリケーションに、前記第1の仮想マシンのメモリをクリアすることをさせるさらなる命令を含む、請求項11に記載のシステム。
【請求項13】
前記第1の仮想マシンのコンポーネントは、実行時に、前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行する前に、前記コンポーネントに、前記第1の仮想マシンのブートボリュームを、第1のブロックストレージデバイスによって記憶されたマシンイメージからロードさせる命令を含み、前記ブートボリュームは前記プロビジョニングされたストレージデバイスの別の論理ボリュームであり、前記第1のブロックストレージデバイスは仮想ブロックストレージデバイスである、請求項10に記載のシステム。
【請求項14】
前記コンポーネントは、前記第1の仮想マシンの基本入出力システム及び前記第1の仮想マシンの統合型拡張可能ファームウェアインターフェースの少なくとも1つである、請求項13に記載のシステム。
【請求項15】
前記第3の要求はブロックストレージクライアントアプリケーションから仮想ネットワークを介して受信され、
前記仮想ネットワークを通じて送信されるトラフィックは、前記仮想ネットワークに関連付けられるキーを使用して暗号化される、請求項10~14のいずれか1項に記載のシステム。
【請求項16】
前記ホストマネージャアプリケーションはさらなる命令を含み、前記さらなる命令は、実行時に、前記ホストマネージャアプリケーションに、
前記ホストコンピュータシステムの前記1つ以上の物理ストレージデバイスの前記ストレージ容量の少なくとも別の部を、別のプロビジョニングされるストレージデバイスとして第2の仮想マシンにプロビジョニングすることと、
別のブロックストレージサーバーアプリケーションを前記第2の仮想マシンで実行することであって、前記第1の仮想マシンは前記コンピュータシステムの第1の物理コンポーネントを使用して実行され、第2の仮想マシンは前記第1の物理コンポーネントと異なる前記コンピュータシステムの第2の物理コンポーネントを使用して実行される、前記実行することと、
を行わせる、請求項10~15のいずれか1項に記載のシステム。
【請求項17】
前記入出力操作は、データのブロックを前記論理ボリュームのブロックアドレスに書き込むための書き込み操作であり、前記論理ボリュームで前記要求された入出力論理ボリュームを行うことは、前記データのブロックを前記論理ボリュームの前記ブロックアドレスに書き込むことを含み、前記第1の物理コンポーネントは第1のメモリデバイスであり、前記第2の物理コンポーネントは第2のメモリデバイスであり、前記プロバイダネットワークの前記拡張機能は、前記プロバイダネットワークのデータセンターの外側に配置され、前記プロバイダネットワークのカスタマーの構内にある1つ以上の物理コンピューティングデバイスを含む、請求項16に記載のシステム。
【請求項18】
コンピュータ実施方法であって、
プロバイダネットワークの拡張機能のホストコンピュータシステムにおいて、第1の仮想マシンを起動する第1の要求を受信して、ブロックストレージサーバーアプリケーションをホストすることであって、前記プロバイダネットワークの前記拡張機能は、少なくともサードパーティネットワークを介して前記プロバイダネットワークと通信する、前記ホストすることと、
前記ホストコンピュータシステムの1つ以上の物理ストレージデバイスのストレージ容量の少なくとも一部を、プロビジョニングされるストレージデバイスとして前記第1の仮想マシンにプロビジョニングすることと、
前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行することと、を備え、
前記ブロックストレージサーバーアプリケーションを実行することは、
論理ボリュームを作成するために前記プロバイダネットワークのブロックストレージサービスからの第2の要求に応答して、前記プロビジョニングされたストレージデバイスに前記論理ボリュームを作成することと、
ブロックストレージクライアントアプリケーションから仮想ネットワークを介して第3の要求を受信して、前記論理ボリュームで入出力操作を行うことと、
前記論理ボリュームで前記要求された入出力操作を行うことと、を含む、
コンピュータ実施方法。
【請求項19】
前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行する前に、前記方法は、さらに、
別のアプリケーションを前記第1の仮想マシンで実行して、前記プロバイダネットワークのデータストアからブートボリュームに取得されたマシンイメージからブートボリュームをロードすることであって、前記ブートボリュームは前記プロビジョニングされたストレージデバイスの別の論理ボリュームである、前記ロードすることと、
前記ブートボリュームからブートするために前記第1の仮想マシンを修正することと、
前記第1の仮想マシンを再起動することと、
を含む、請求項18に記載のコンピュータ実施方法。
【請求項20】
前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行する前に、前記方法は、さらに、前記第1の仮想マシンのブートボリュームを第1のブロックストレージデバイスによって記憶されたマシンイメージからロードすることを含み、前記ブートボリュームは前記プロビジョニングされたストレージデバイスの別の論理ボリュームであり、前記第1のブロックストレージデバイスは仮想ブロックストレージデバイスである、請求項18に記載のコンピュータ実施方法。
【発明の詳細な説明】
【背景技術】
【0001】
多くの企業及び他の組織はそれらの運用をサポートするために、多くのコンピューティングシステムを相互接続するコンピュータネットワークを運用しており、例えば、コンピューティングシステムは、(例えば、ローカルネットワークの一部として)同じ場所に配置される、またはその代わりに、複数の異なる地理的場所に配置される(例えば、1つ以上のプライベートまたはパブリックの中間ネットワークを介して接続される)。例えば、かなりの数の相互接続されたコンピューティングシステムを収容するデータセンターが当たり前になっており、その例として、単一の組織によって及び単一の組織の代わりのものによって運用されるプライベートデータセンター、及び、コンピューティングリソースをカスタマーに提供するためにビジネスとしてエンティティによって運用されるパブリックデータセンター等が挙げられる。いくつかのパブリックデータセンターオペレータは、様々なカスタマーが所有するハードウェアのためのネットワークアクセス、電力、安全な設置施設を提供する一方、他のパブリックデータセンターオペレータは、そのカスタマーによる使用のために利用可能になったハードウェアリソースも含む「フルサービス」ファシリティを提供する。しかしながら、一般的なデータセンターの規模及び範囲が増加するにつれて、物理コンピューティングリソースのプロビジョニング、監督、及び管理のタスクはますます複雑になっている。
【0002】
汎用ハードウェアの仮想化技術の出現は、多様なニーズがある多くのカスタマーのために大規模なコンピューティングリソースを管理することに関して利益をもたらし、様々なコンピューティングリソースを複数のカスタマーによって効率的及び安全に共有することを可能にする。例えば、仮想化技術は、単一の物理コンピューティングマシンによってホストされる1つ以上の仮想マシンを各ユーザに提供することによって、単一の物理コンピューティングマシンを複数のユーザ間で共有することを可能にし得る。係る仮想マシンのそれぞれは、ユーザに所与のハードウェアコンピューティングリソースの唯一のオペレータ及び管理者であると錯覚をもたらす独特の論理コンピューティングシステムとして機能するソフトウェアシミュレーションであり、それと同時に、様々な仮想マシン間でアプリケーション隔離及び安全も提供する。さらに、いくつかの仮想化技術は、複数の独特の物理コンピューティングシステムに及ぶ複数の仮想プロセッサを伴う単一の仮想マシン等の2つ以上の物理リソースに及ぶ仮想リソースを提供することが可能である。別の例として、仮想化技術は、複数のデータストレージデバイスにわたって分散され得る仮想化データストアを各ユーザに提供することによって、データストレージハードウェアを複数のユーザ間で共有することを可能にし得、係る仮想化データストアのそれぞれは、ユーザがデータストレージリソースの唯一のオペレータ及び管理者であるという錯覚をユーザにもたらす独特の論理データストアとして機能する。
【0003】
コンピューティング集約型アプリケーション、メモリ集約型アプリケーション等の様々なタイプのアプリケーション用に最適化された様々な仮想マシンタイプは、クライアントの要求に応じて、いくつかのクラウドコンピューティングプロバイダネットワークのデータセンターにセットアップされ得る。さらに、仮想コンピューティングサービスの仮想マシンを使用してデータベースインスタンスがインスタンス化されるいくつかのデータベースサービス等の係るプロバイダネットワークの仮想コンピューティングサービスに依存する高レベルサービスは、また、プロバイダネットワーククライアントに利用可能になり得る。しかしながら、プロバイダネットワークの外側のカスタマーの構内に記憶される必要があるかなり大量のデータを処理するアプリケーション等のいくつかのタイプのアプリケーションに関して、プロバイダネットワークのデータセンターに配置されるハードウェアを使用する仮想化リソースを提供することに限定されるサービスは、例えば、レイテンシー関連の理由及び/または他の理由で最適ではない場合がある。
【0004】
以下の図面を参照して、本開示に従った様々な実施形態を説明する。
【図面の簡単な説明】
【0005】
図1】少なくともいくつかの実施形態による、プロバイダネットワークの外部のネットワーク内に配置されたプロバイダ基板拡張によって拡張された例示的なプロバイダネットワークを示すブロック図である。
図2】少なくともいくつかの実施形態による、例示的なプロバイダ基板拡張を示すブロック図である。
図3】少なくともいくつかの実施形態による、プロバイダネットワークとプロバイダ基板拡張との間の例示的な接続を示すブロック図である。
図4】少なくともいくつかの実施形態による、仮想化ブロックストレージシステムの例を示すブロック図である。
図5】少なくともいくつかの実施形態による、仮想化ブロックストレージシステムの例を示すブロック図である。
図6】少なくともいくつかの実施形態による、第1の技術を使用して仮想化ブロックストレージサーバーをブートするための例示的なシステムを示すブロック図である。
図7】少なくともいくつかの実施形態による、第2の技術を使用して仮想化ブロックストレージサーバーをブートするための例示的なシステムを示すブロック図である。
図8】少なくともいくつかの実施形態による、ブロックストレージサーバーからプロバイダ基板拡張の追加のコンピュートインスタンスをブートするための例示的なシステムを示すブロック図である。
図9】少なくともいくつかの実施形態による、仮想化ブロックストレージサーバーを管理するための例示的なシステムを示すブロック図である。
図10】少なくともいくつかの実施形態による、ブロックストレージクライアントにボリュームマッピングを提供するための例示的なシステムを示すブロック図である。
図11】少なくともいくつかの実施形態による、ボリュームマッピングを追跡するための例示的なシステムを示すブロック図である。
図12】少なくともいくつかの実施形態による、仮想化ブロックストレージサーバーを起動するための方法の動作を示すフロー図である。
図13】少なくともいくつかの実施形態による、仮想化ブロックストレージサーバーを使用するための方法の動作を示すフロー図である。
図14】少なくともいくつかの実施形態による、プロバイダ基板拡張における仮想化ブロックストレージサーバーを管理するための方法の動作を示すフロー図である。
図15】少なくともいくつかの実施形態による、例示的なプロバイダネットワーク環境を示す。
図16】少なくともいくつかの実施形態による、ストレージサービス及びハードウェア仮想化サービスをカスタマーに提供する例示的なプロバイダネットワークのブロック図である。
図17】少なくともいくつかの実施形態で使用され得る例示的なコンピューティングデバイスを示すブロック図である。
【発明を実施するための形態】
【0006】
本開示は、プロバイダネットワークの外部のネットワークと通信するためのプロバイダ基板拡張を構成するための及びプロバイダネットワークで利用可能なリソースと同じまたは同様である基板拡張上に仮想化リソースを提供するための方法、装置、システム、及び非一時的なコンピュータ可読ストレージ媒体に関する。プロバイダネットワークオペレータ(またはプロバイダ)は、そのユーザ(またはカスタマー)に、様々なタイプのコンピューティング関連リソースの1つ以上を利用する能力を提供し、コンピューティング関連リソースとして、例えば、コンピュートリソース(例えば、仮想マシン(VM)及び/またはコンテナの実行、バッチジョブの実行、サーバーのプロビジョニングなしでのコードの実行))、データ/ストレージリソース(例えば、オブジェクトストレージ、ブロックレベルストレージ、データアーカイブストレージ、データベース及びデータベーステーブル等)、ネットワーク関連リソース(例えば、コンピュートリソースのグループを含む仮想ネットワークの構成、コンテンツ配信ネットワーク(CDN)、ドメインネームサービス(DNS))、アプリケーションリソース(例えば、データベース、アプリケーション構築/展開サービス)、アクセスポリシーまたはアクセスロール、アイデンティティポリシーまたはアイデンティティロール、マシンイメージ、ルーター、及び他のデータ処理リソース等が挙げられる。これら及び他のコンピュートリソースはサービスとして提供され得る。
【0007】
プロバイダネットワークオペレータは、多くの場合、仮想化技術に依存するサービスとして、これら及び他のコンピューティングリソースを提供する。例えば、仮想化技術を使用して、コンピュートインスタンス(例えば、基盤となるホストOS上でさらに動作し得るまたは動作し得ないハイパーバイザーを使用して動作するゲストオペレーティングシステム(OS)を使用するVM、VMで動作し得るまたは動作し得ないコンテナ、基盤となるハイパーバイザーなしで「ベアメタル」ハードウェアで実行できるインスタンス)を制御または利用する能力をユーザに提供し得、単一の電子デバイスを使用して1つ以上のコンピュートインスタンスを実装できる。したがって、ユーザは、プロバイダネットワークによってホストされるインスタンス管理サービス(時々、ハードウェア仮想化サービスと呼ばれる)によって提供されるコンピュートインスタンスを直接利用して、様々なコンピューティングタスクを行い得る。追加的または代替的に、ユーザは、プロバイダネットワークによって実行されるコードをサブミットすることによって間接的にコンピュートインスタンスを利用し得(例えば、オンデマンドコード実行サービスによって利用される)、次に、コンピュートインスタンスを利用してコードを実行する(一般的に、ユーザが関連する基盤となるコンピュートインスタンス(複数可)をいずれかの制御を行わないでまたは認識しないで実行する)。
【0008】
ユーザにコンピューティング関連リソースを提供するサービスと、ユーザにプロビジョニングされたそのコンピューティング関連リソースとの両方をサポートするリソースは、概して、プロバイダネットワーク基板と称され得る。係るリソースは、一般的に、多くのネットワークコンピュータシステムの形式のハードウェア及びソフトウェアを含む。プロバイダネットワーク基板のトラフィック及び操作は、様々な実施形態では、2つのカテゴリ(論理制御プレーン上で運ばれる制御プレーントラフィック及び論理データプレーン上で運ばれるデータプレーン操作)に大まかに細分され得る。データプレーンは分散コンピューティングシステムを経由するユーザデータの移動を表すが、制御プレーンは分散コンピューティングシステムを経由する制御信号の移動を表す。制御プレーンは、概して、1つ以上の制御サーバーにわたって分散され、それらによって実装される1つ以上の制御プレーンコンポーネントを含む。制御プレーントラフィックは、概して、様々なカスタマー向けの分離された仮想ネットワークの確立、リソースの使用状況及び状態の監視、要求されたコンピュートインスタンスが起動される特定のホストまたはサーバーの識別、必要に応じて追加のハードウェアのプロビジョニング等の管理操作を含む。データプレーンは、プロバイダネットワークに実装されるカスタマーリソース(例えば、コンピューティングインスタンス、コンテナ、ブロックストレージボリューム、データベース、ファイルストレージ)を含む。データプレーントラフィックは、概して、カスタマーリソースを往復するデータを転送する等の非管理操作を含む。制御プレーンコンポーネントは、一般的に、データプレーンサーバーとは別のサーバーのセットに実装され、制御プレーントラフィック及びデータプレーントラフィックは、別の/異なるネットワークを通じて送信され得る。いくつかの実施形態では、制御プレーントラフィック及びデータプレーントラフィックは、異なるプロトコルによってサポートできる。いくつかの実施形態では、プロバイダネットワークを通じて送信されるメッセージ(例えば、パケット)は、トラフィックが制御プレーントラフィックまたはデータプレーントラフィックであるかを示すフラグを含む。いくつかの実施形態では、トラフィックのペイロードを検査して、そのタイプ(例えば、制御プレーンまたはデータプレーン)を決定できる。トラフィックタイプを区別するための他の技術が可能である。
【0009】
いくつかのカスタマーアプリケーションはプロバイダネットワーク環境に容易に移行するが、いくつかのカスタマーワークロードは、低遅延、大量のデータ、データセキュリティ、または他のカスタマーデータ処理の要求のために、構内にあるまま(「オンプレミス」)にする必要がある。例示的なオンプレミス環境は、カスタマーデータセンター、ロボット統合、フィールドロケーション、コロケーションファシリティ、電気通信施設(例えば、携帯電話基地局の近く)等を含む。カスタマーの要求を満足するために、本開示は、オンプレミスでの基板のようなリソースの展開に関する。用語「プロバイダ基板拡張」(PSE)は、カスタマーがオンプレミス(プロバイダネットワークから地理的に離れた場所等)に展開できるが、プロバイダネットワークで提供されるものと同じまたは同様の機能(例えば、仮想化されたコンピューティングリソース)を提供する、リソース(例えば、ハードウェア、ソフトウェア、ファームウェア、構成メタデータ等)のコレクションを指す。係るリソースは、オンプレミスの場所で一般的に見られるようなラックまたはキャビネットで配信される1つ以上のコンピュータシステムまたはサーバーとして物理的に配信され得る。PSEは、上記に説明したプロバイダネットワークの特性と同様に、オンプレミスに展開できる一連の特性及び能力をカスタマーに提供できる。実質的に、プロバイダネットワークのカスタマーの観点から、PSEは、PSEに対応できるいずれかの物理的場所(例えば、物理スペース、電力、インターネットアクセス等に関する)にセットアップできるプロバイダネットワークの能力のローカル拡張を表す。プロバイダネットワーク自体の観点から、PSEはコアプロバイダネットワーク基板と同じプロバイダネットワークデータセンターに仮想的に配置される一方、カスタマーが選択した展開サイトに物理的に配置されると見なされ得る。少なくともいくつかの実施形態では、PSEを物理的にホストしているカスタマーは、それ自体のカスタマー(例えば、プロバイダネットワークの他のユーザ)に許可を与えて、そのユーザがインスタンスを起動して、カスタマーのオンプレミスの場所でPSE内のその各々のワークロードをホストすることを可能にし、場合によって、そのワークロードがカスタマーのネットワークにアクセスすることを可能にする。
【0010】
少なくともいくつかの実施形態では、PSEは、例えば、プロバイダネットワークオペレータによって、ハードウェア要素、ソフトウェア要素、及び/またはファームウェア要素の適切な組み合わせで事前に構成され、様々なタイプのコンピューティング関連リソースをサポートし、プロバイダネットワーク自体またはプロバイダネットワークの任意の他のカスタマーのセキュリティを損なうことなく、様々なローカルデータ処理要求を満たす方法でサポートし得る。少なくともいくつかの実施形態では、PSEは、概して、カスタマーがプロバイダネットワーク内のコンピューティング関連リソースにアクセスするために使用するのと同じまたは同様のインターフェースのセットによって管理される。例えば、カスタマーは、プロバイダネットワーク内のコンピューティング関連リソースをプロビジョニング、管理、及び動作させるために他の方法で使用する同じアプリケーションプログラミングインターフェース(API)またはコンソールベースのインターフェースを使用して、プロバイダネットワークを経由して、様々な展開サイトにおけるオンプレムPSEまたは複数のPSE内で、コンピューティング関連リソースをプロビジョニング、管理、及び動作できる。
【0011】
少なくともいくつかの実施形態では、プロバイダネットワークのリソースは、様々なネットワーキングコンポーネントをインスタンス化して、プロバイダネットワークとPSEとの間の安全で信頼できる通信を確実にする。係るコンポーネントは、PSEとの1つ以上の安全なトンネル(例えば、VPN)を確立できる。係るコンポーネントは、さらに、制御プレーントラフィック及びデータプレーントラフィックをさらに分割し、トラフィックの方向(例えば、PSEを往復する方向)を含む要因に基づいて、各タイプのトラフィックを異なるように処理できる。少なくともいくつかの実施形態では、制御プレーンサービスは、展開されたPSEのためにこれらのネットワーキングコンポーネントを動的にプロビジョニング及び構成する。係る制御プレーンサービスは、各PSEのネットワークコンポーネントを監視し、プロバイダネットワーク内で発生する障害が原因でPSEとの通信が失われるのを防ぐように設計された自己修復または修復メカニズムを呼び出しできる。
【0012】
プロバイダネットワークのカスタマーに一般的に提供されるサービスの1つは、インスタンスが物理ストレージリソースの論理ビューが提示されるため、インスタンスの仮想化された永続ディスクとして機能できるブロックストレージサービスであるが、この論理ストレージスペースをストレージの実際の物理的場所にマッピングすることは仮想化システムによって処理される。ボリュームは1回以上複製され、カスタマーに高いアベイラビリティ及び耐久性を提供し得、レプリカは、一般的に、異なるサーバーに記憶される。カスタマーは1つ以上のブロックストレージボリュームをインスタンスにアタッチでき、インスタンスをサポートするクライアントは、仮想化されたブロックストレージボリュームを使用してインスタンスのブロックベース操作を行うことができる。例えば、カスタマーは、特定のインスタンスを所与のブートボリューム(例えば、オペレーティングシステムを含むボリューム)から起動して、インスタンスによって実行されるカスタマーアプリケーションによって記憶されたデータをサポートするために別のアタッチボリュームを有するように指定し得る。利用可能なストレージに関して高い適応性を提供するために、プロバイダネットワークは、所与のアタッチボリュームをサポートする物理ストレージデバイスを、所与のコンピュートインスタンスをサポートするコンピューティングリソースから切り離す。従来、ブロックストレージサービスをサポートするブロックストレージサーバーのフリートは、アタッチされている物理ストレージデバイス(例えば、ソリッドステートドライブ、磁気ドライブ等)を多くの論理ボリュームに分割するだろう。1つのブロックストレージサーバーが、数百またはさらに数千のインスタンスのストレージリソースをサポートし得る。これらのブロックストレージサーバーは、一般的に、「ベアメタル」構成で実行される。サーバーソフトウェアは、例えば、仮想マシン上またはコンテナ内の代わりに、専用サーバーハードウェア上で直接起動するオペレーティングシステム環境内で実行される。
【0013】
プロバイダ基板の拡張機能の容量がアベイラビリティゾーンの容量と比較して大幅に制限され得るため、このベアメタルブロックストレージサーバーの設計は、基板拡張にはあまり適し得ない。例えば、いくつかの基板拡張には単一のサーバー(または別の少数のサーバー)だけ有し得るため、サーバー全体をストレージリソースのブロック専用にすることは不可能であり得、それによって、そのサーバーをコンピュートインスタンスに使用できなくなる。この課題に対処するために、本開示の実施形態は、コンピュートインスタンス内で起動できるようにブロックストレージサービスを仮想化して、その結果、限られた容量のより適応性があり効率的な使用を可能にする。例えば、単一のサーバーを構成して、コンピュートインスタンスと、そのアタッチボリュームを仮想化したインスタンス(例えば、ブロックストレージサーバー)との両方をホストするように構成でき、PSEの有限のリソースのセットの使用に高い適応性を提供する。また、単一のサーバーを分離された障害ドメインに分割して、複数のブロックストレージサーバー(及びさらに、ボリュームの複数のレプリカ)をホストし得る。障害ドメインとは、概して、システムの他の部分に影響を与えることなく障害が発生する可能性のあるシステムの論理部分を指す。ベアメタルシステムで実行されるとき、ブロックストレージシステムの障害ドメインは、一般的に、ベアメタルコンピュータシステム全体に対応する。仮想化を使用して障害ドメインをサーバーごとのベースからサブサーバーベースに切り離すことによって、ブロックストレージサーバーインスタンスをサポートするために使用される基盤となるハードウェアの冗長性を利用して、PSE内の障害ドメインの数が増加し得る。結果として、ブロックストレージサーバーは、障害が発生したときに障害に関連付けられるデータを回復するためのワークロードが減るように、少量のデータを個々に管理できる。これらのブロックストレージインスタンスは、仮想プライベートクラウド(VPC)として作成でき、ブロックストレージボリュームと通信するインスタンスクライアントは、また、この同じVPCで通信できる。有益になるように、これにより、VPC暗号化を活用して、基板拡張における通信をより安全にできる。
【0014】
しかしながら、プロバイダ基板の拡張機能でブロックストレージサービスを仮想化すると、ブロックストレージサービスがブートボリュームを記憶することが可能であろう基板拡張で起動される前に、ブートボリューム(また、ブロックストレージサービスマシンイメージとも称される)からブロックストレージサービスを初期化することを含む特定の技術的な課題が生じる。PSEはオンプレミスファシリティに低遅延のコンピュートリソースを提供するが、それらのリソースはプロバイダネットワークに戻るときに遅延の増加を受ける。PSEはプロバイダネットワークの領域内のブロックストレージサーバーに依存し得るが、係る依存は遅延の増加の影響を受けるため、好ましくない。以下でさらに詳細に説明するように、本開示の実施形態は、プロバイダネットワークの領域に記憶されたデータからPSEのローカルストレージのブロックストレージサーバーのブートボリュームをロードし、次に、ブロックストレージサーバーをブートし、ボリュームをPSE内で起動した他のインスタンスに提供できるローカルブート技術によってこの課題に対処する。したがって、開示されたローカルブート技術は、ブロックストレージサービス自体がまだ基板拡張に存在しないときでも、カスタマーがブロックストレージサービスマシンイメージを使用して基板拡張でインスタンスを起動することを可能にする。
【0015】
開示されたシステム及び技術は、また、PSEをプロバイダネットワークに接続することによって可能になり得る潜在的なセキュリティ問題からプロバイダネットワークを保護する。いくつかの実施形態では、PSEは、動作するために、PSEが設置されているカスタマーサイトからプロバイダネットワーク基板(例えば、マシンの物理ネットワーク)への安全なネットワーキングトンネルを要求する可能性がある。これらのトンネルは、仮想化されたコンピューティングインスタンス(例えば、VM)及び基板の両方でホストされる仮想インフラストラクチャコンポーネントを含み得る。トンネルコンポーネントの例は、VPC及びプロキシコンピューティングインスタンスならびに/またはコンピューティングインスタンスで起動しているコンテナを含む。PSE内の各サーバーは、少なくとも2つのトンネル(1つは制御プレーントラフィック用で、もう1つはデータプレーントラフィック用である)を使用し得る。以下でさらに詳細に説明するように、プロバイダネットワーク基板とPSEの間のネットワークパスに沿って位置付けられる中間リソースは、基板とPSEとの間を流れるトラフィックを安全に管理できる。
【0016】
少なくともいくつかの実施形態では、プロバイダネットワークはクラウドプロバイダネットワークである。クラウドプロバイダネットワークまたは「クラウド」は、アクセス可能な仮想化コンピューティングリソース(コンピュートリソース、ストレージリソース、及びネットワークリソース、アプリケーション、ならびにサービス等)の大規模なプールを指す。クラウドは、カスタマーコマンドに応じてプログラムでプロビジョニング及びリリースできる構成可能なコンピューティングリソースの共有プールへの便利なオンデマンドネットワークアクセスを提供できる。これらのリソースは動的にプロビジョニング及び再構成され、可変負荷に適応できる。したがって、クラウドコンピューティングは、パブリックにアクセス可能なネットワーク(例えば、インターネット、セルラー通信ネットワーク)を通じてサービスとして配信されるアプリケーションと、それらのサービスを提供するクラウドプロバイダデータセンターのハードウェア及びソフトウェアの両方と見なすことができる。
【0017】
クラウドプロバイダネットワークはいくつかの領域として形成でき、領域は、クラウドプロバイダがデータセンターをクラスター化する地理的領域である。各領域は、例えば、ファイバー通信接続のプライベート高速ネットワークを介して相互に接続された2つ以上のアベイラビリティゾーンを含み得る。アベイラビリティゾーンは、別のアベイラビリティゾーンにあるものとは別の電源、別のネットワーク、及び別のクーリングを伴う1つ以上のデータセンターファシリティを含む分離された障害ドメインを指す。好ましくは、領域内のアベイラビリティゾーンは、同じ自然災害によって同時に2つ以上のアベイラビリティゾーンがオフラインにならないように、互いに十分に離れた場所に位置付けられる。カスタマーは、パブリックにアクセス可能なネットワーク(例えば、インターネット、セルラー通信ネットワーク)を介してクラウドプロバイダネットワークのアベイラビリティゾーンに接続できる。本明細書で説明するPSEは、また、パブリックにアクセス可能なネットワークを介して1つ以上のアベイラビリティゾーンに接続できる。
【0018】
クラウドプロバイダネットワークは、基板と称される物理ネットワーク(例えば、シートメタルボックス、ケーブル)を含み得る。クラウドプロバイダネットワークは、また、基板で起動する仮想化コンピューティングリソースのオーバーレイネットワークを含み得る。したがって、ネットワークパケットは、オーバーレイネットワークの構成(例えば、VPC、セキュリティグループ)に従って、基板ネットワークに沿ってルーティングできる。マッピングサービスは、これらのネットワークパケットのルーティングを調整できる。マッピングサービスがオーバーレイIP及びネットワーク識別子の組み合わせを基板IPにマッピングする地域分散ルックアップサービスであることにより、分散基板コンピューティングデバイスはパケットの宛先を検索できる。
【0019】
説明するために、各物理ホストは基板ネットワークにIPアドレスを有し得る。ハードウェア仮想化技術により、例えば、ホストの仮想マシンとして、複数のオペレーティングシステムをホストコンピュータ上で同時に起動することが可能になり得る。ホストのハイパーバイザーまたは仮想マシンモニタは、ホストの様々な仮想マシン間でホストのハードウェアリソースを割り付け、仮想マシンの実行を監視する。各仮想マシンはオーバーレイネットワークの1つ以上のIPアドレスが提供され得、ホストの仮想マシンモニタは、ホストの仮想マシンのIPアドレスを認識し得る。仮想マシンモニタ(及び/またはネットワーク基板の他のデバイスもしくはプロセス)は、カプセル化プロトコル技術を使用して、クラウドプロバイダネットワーク内の異なるホストの仮想化リソース間で、ネットワークパケット(例えば、クライアントIPパケット)をネットワーク基板上にカプセル化及びルーティングし得る。カプセル化プロトコル技術をネットワーク基板で使用して、オーバーレイネットワークパスまたはオーバーレイルートを介してネットワーク基板のエンドポイント間でカプセル化されたパケットをルーティングできる。カプセル化プロトコル技術は、ネットワーク基板にオーバーレイされた仮想ネットワークトポロジを提供するものと見なされ得る。カプセル化プロトコル技術は、IPオーバーレイアドレス(パブリックIPアドレス)を基板IPアドレス(プライベートIPアドレス)にマッピングするマッピングディレクトリを維持するマッピングサービスを含み得、マッピングサービスは、エンドポイント間でパケットをルーティングするためのクラウドプロバイダネットワーク状の様々なプロセスによってアクセスできる。
【0020】
当業者が本開示に照らして理解するように、特定の実施形態は、以下の(a)~(c)のいくつかまたは全てを含む様々な利点を達成することが可能であり得る。(a)プロバイダネットワークによって可能になったスケーラビリティ、セキュリティ、アベイラビリティ、及び他の運用上の利点をさらに維持しながら、カスタマーによって選択されたサイトにおいてプロバイダ管理インフラストラクチャ(例えば、PSE)を使用する場所に依存しない方式で、プロバイダネットワークオペレータのカスタマーが様々なアプリケーションを配備することを可能にする、(b)カスタマーデータセンターとプロバイダネットワークデータセンターとの間のリンク等を通じて長距離にわたって転送する必要があるアプリケーションデータの量及び結果として生じる量を減らす、(c)アプリケーションをデータソース/宛先の近くに移動することによって、潜在的に大量のデータが入力として消費され得るもしくは出力として生成され得るアプリケーションのレイテンシー及び応答性が全体的に向上する、ならびに/または(d)機密性の高いアプリケーションデータのセキュリティが向上する。
【0021】
図1は、少なくともいくつかの実施形態による、プロバイダネットワークの外部のネットワーク内に配置されたプロバイダ基板拡張によって拡張された例示的なプロバイダネットワークを示すブロック図である。プロバイダネットワーク100内で、カスタマーは、1つ以上の分離された仮想ネットワーク102を作成できる。カスタマーは、IVN内でコンピュートインスタンス101を起動して、そのアプリケーションを実行できる。これらのコンピュートインスタンス101は、プロバイダネットワーク基板(図示せず)の一部である基板アドレス可能デバイス(SAD)によってホストされる。同様に、プロバイダネットワーク基板の一部であるSADは、制御プレーンサービス104をホストできる。例示的な制御プレーンサービス104は、カスタマーまたは他の制御プレーンサービスがインスタンス及び/またはIVNを起動及び構成することを可能にするインスタンス管理サービス(時々、ハードウェア仮想化サービスと称される)、オブジェクトストレージを提供するオブジェクトストレージサービス、ブロックストレージデバイスをインスタンスにアタッチする能力を提供するブロックストレージサービス、様々なデータベースタイプを提供するデータベースサービス等を含む。
【0022】
プロバイダネットワーク100内に示されるコンポーネントは、論理コンポーネントとして扱うことができることに留意されたい。前述のように、これらのコンポーネントは、プロバイダネットワーク基板(図示せず)のSADによってホストされる。例えば、プロバイダネットワーク基板は、分離された仮想ネットワーク(IVN)内で動作するコンテナまたは仮想マシンを使用してインスタンス101をホストできる。係るコンテナまたは仮想マシンは、SADによって実行される。別の例として、プロバイダネットワーク基板は、ベアメタル構成(例えば、仮想化なし)でSADを使用して、1つ以上の制御プレーンサービス104をホストできる。少なくともいくつかの実施形態では、SADは、別のネットワーク(例えば、カスタマーネットワーク、IVN等)ではなく、プロバイダネットワークのネットワークアドレスを介してアドレス可能であるハードウェアによって実行されるソフトウェア(例えば、サーバー)を指す。少なくともいくつかの実施形態では、SADは、さらに、ソフトウェアを実行する基盤となるハードウェア(例えば、コンピュータシステム)を指し得る。
【0023】
図示のように、プロバイダネットワーク100は、カスタマーネットワーク185内に配備されたプロバイダ基板拡張(PSE)188及びカスタマーネットワーク195内に配備されたPSE198と通信する。各PSEは、PSE188内に示されるSAD189A~189N等の1つ以上の基板アドレス可能デバイス(SAD)を含む。係るSAD189は、PSE内のコンピューティング関連リソースのプロビジョニングを容易にする。SAD189A~189Nの場合のように、コンポーネントの実線のボックス-楕円-破線のボックスの組み合わせの図は、概して、この図面及び後続の図面にそれらのコンポーネントが1つ以上存在し得ることを示すために使用されることに留意されたい(ただし、対応するテキストの参照は、コンポーネントの単数形または複数形を指し、文字の最後尾がある場合及びない場合がある)。カスタマーゲートウェイ/ルーター186は、プロバイダネットワーク100とPSE188との間の接続、ならびにPSE188と他のカスタマーリソース187(例えば、カスタマーネットワーク185に接続された他のオンプレミスサーバーまたはオンプレミスサービス)との間の接続を提供する。同様に、カスタマーゲートウェイ/ルーター196は、プロバイダネットワーク100とPSE198との間の接続、ならびにPSE198と他のカスタマーリソース197との間の接続を提供する。PSE188に示されるようなインターネットのようなパブリックネットワークまたはPSE198に示されるような直接接続等の様々な接続オプションは、プロバイダネットワーク100とPSE198との間に存在する。
【0024】
プロバイダネットワーク100内で、制御プレーントラフィック106は、概して、(ただし、常にではなく)SADに向けられる一方、データプレーントラフィック104は、概して、(ただし、常にではなく)インスタンスに向けられる。例えば、いくつかのSADは、インスタンスの起動及び終了を可能にするAPIを販売できる。制御プレーンサービス104は、制御プレーンを介して係るSADのAPIにコマンドを送信して、IVN102で新しいインスタンスを起動できる。
【0025】
IVNは、その名前によって示唆されるように、プロバイダネットワークの他のリソース(例えば、他のIVN)から論理的に分離されるまたは離されるホストされる(例えば、仮想化された)リソースのセットを含み得る。制御プレーンサービスは、各IVNに識別子を割り当ててそれを他のIVNと区別することを含むIVNをセットアップ及び構成できる。プロバイダネットワークは、IVN間のピアリング関係等をセットアップすることによって、IVN間の通信を可能にする様々な方法を提供できる(例えば、あるIVNのゲートウェイが別のIVNのゲートウェイと通信するように構成される)。
【0026】
IVNは、様々な目的で確立できる。例えば、IVNは、カスタマー専用のリソースのセットを確保することによって特定のカスタマー向けにセットアップされ得、カスタマーに提供されるそのリソースのセットのネットワーク構成に関してかなりの適応性がある。IVN内で、カスタマーはサブネットをセットアップし、所望のプライベートIPアドレスを様々なリソースに割り当て、着信及び発信トラフィックを規定するセキュリティルールをセットアップする等を行い得る。少なくともいくつかの実施形態では、デフォルトで、あるIVN内にセットアップされたプライベートネットワークアドレスのセットは、別のIVNから(または、より一般的には、IVNの外側から)アクセス不可能であり得る。
【0027】
トンネリング技術は、プロバイダネットワーク100の異なるSADによってホストされるインスタンス間のIVNトラフィックのトラバーサルを容易にする。例えば、IVN102内で新しく起動するインスタンスはIVNアドレスAを有し、基板アドレスXのSADによってホストされ得る一方、インスタンス101はIVNアドレスBを有し、基板アドレスYのSADによってホストされ得る。これらのコンピュートインスタンス間の通信を容易にするために、SAD Xは、新しく起動するインスタンスからインスタンス101に(IVNアドレスAからIVNアドレスBに)送信されたパケットを、(基板アドレスXから基板アドレスYへに)各々のインスタンスをホストするSADのアドレス情報を有するパケットのペイロード内にカプセル化する。SAD間で送信されるパケットは、さらに、基板アドレスYのSADによってホストされる別のIVNとは対照的に、データがIVN102に向けられることを示すために、IVN102の識別子を含み得る。いくつかの実施形態では、SADは、さらに、インスタンス間で送信されるパケットを、IVNに関連付けられる暗号化キーを使用してSAD間で送信されるパケットのペイロード内で暗号化する。少なくともいくつかの実施形態では、カプセル化及び暗号化は、インスタンスをホストするSADのソフトウェアコンポーネントによって行われる。
【0028】
PSEの場合、プロバイダネットワーク100は1つ以上のネットワーキングコンポーネントを含み、それにより、プロバイダネットワーク100の外側のプロバイダネットワーク基板を、カスタマーのオンプレミスネットワークに接続されたPSEに効果的に拡張する。係るコンポーネントは、PSEを標的にするデータプレーン及び制御プレーンの操作が安全に、確実に、トランスペアレントにPSEに通信されることを確実にできる。図示の実施形態では、PSEインターフェース108、PSESADプロキシ110、及びPSESADアンカー112は、プロバイダネットワーク100とPSE188との間のデータプレーン及び制御プレーンの通信を容易にする。同様に、PSEインターフェース118、PSESADプロキシ120、及びPSESADアンカー122は、プロバイダネットワーク100とPSE198との間のデータプレーン及び制御プレーンの通信を容易にする。本明細書で説明するように、PSEインターフェースは、制御プレーントラフィック及びデータプレーントラフィックをプロバイダネットワークから受信して、係る制御プレーントラフィックをPSESADプロキシに送信して、係るデータプレーントラフィックをPSEに送信する。PSEインターフェースは、また、データプレーントラフィックをPSEから受信して、係るデータプレーントラフィックをプロバイダネットワーク内の適切な宛先に送信する。PSESADプロキシは、制御プレーントラフィックをPSEインターフェースから受信して、係る制御プレーントラフィックをPSESADアンカーに送信する。PSESADアンカーは、制御プレーントラフィックをPSESADプロキシから受信して、係る制御プレーントラフィックをPSEに送信する。PSESADアンカーは、また、制御プレーントラフィックをPSEから受信して、係る制御プレーントラフィックをPSESADプロキシに送信する。PSESADプロキシは、また、制御プレーントラフィックをPSESADアンカーから受信して、係る制御プレーントラフィックをプロバイダネットワーク内の適切な宛先に送信する。他の実施形態は、ネットワークコンポーネントの異なる組み合わせまたは構成を採用して、プロバイダネットワーク100とPSEとの間の通信を容易にし得る(例えば、PSEインターフェース、PSESADプロキシの機能、及び/またはPSESADアンカーは、PSEインターフェース及びPSESADプロキシの両方、PSESADプロキシ及びPSESADアンカーの両方、3つのコンポーネントの全ての動作を行うアプリケーション等によって、様々な方法で組み合わされ得る)。
【0029】
上記に示したように、各PSEは、SAD用の1つ以上の基板ネットワークアドレス(例えば、SAD189A~189N)を有する。それらの基板アドレスがプロバイダネットワーク100を介して直接到達可能ではないため、PSEインターフェース108、118は、各々のPSEの基板アドレスと一致するアタッチされた仮想ネットワークアドレス(VNA)でマスカレードする。図示のように、PSEインターフェース108は、PSE188のSADアドレス(複数可)と一致するVNA(複数可)150をアタッチしており、PSEインターフェース118は、PSE198のSADアドレス(複数可)と一致するVNA(複数可)152をアタッチしている。例えば、PSE188内のインターネットプロトコル(IP)アドレス192.168.0.10のSADに向けられるトラフィックは、アタッチされた仮想アドレス192.168.0.10を有するPSEインターフェース108に送信され、PSE198内のIPアドレスが192.168.1.10のSADに向けられるトラフィックは、192.168.1.10のアタッチされた仮想アドレスを有するPSEインターフェース118に送信される。IPv4またはIPv6アドレス指定が使用され得ることに留意されたい。少なくともいくつかの実施形態では、VNAは、IPアドレス等の様々なネットワーク関連の属性をインスタンス間でプログラムで転送することを可能にする論理構造である。係る転送は、VNAをインスタンスに「アタッチ」し、VNAをインスタンスから「デタッチ」することと称され得る。
【0030】
高レベルで、PSEインターフェースは、実質的に、トラフィックが制御プレーントラフィックまたはデータプレーントラフィックであるかに基づいてトラフィックをルーティングするパケット転送コンポーネントである。上記に説明した基板アドレス指定及びカプセル化技術を考えると、制御トラフィック及びデータプレーントラフィックの両方がSADに向けられるため、両方ともPSEインターフェースにルーティングされることに留意されたい。制御プレーントラフィックの場合、PSEインターフェースはSADアドレスに基づいてトラフィックをPSESADプロキシにルーティングする。データプレーントラフィックの場合、PSEインターフェースは、プロバイダネットワーク100とPSEとの間の1つ以上の暗号化されたデータプレーントラフィックトンネル(例えば、PSEインターフェース108とPSE188との間のトンネル191、PSEインターフェース118とPSE198と間のトンネル193)を確立し、エンドポイントとして機能する。プロバイダネットワーク100から受信されたデータプレーントラフィックに関して、PSEインターフェースは、トンネルを通じてPSEに伝送するためにトラフィックを暗号化する。PSEから受信されたデータプレーントラフィックに関して、PSEインターフェースはトラフィックを復号化し、オプションでパケットのSADアドレス指定を検証して、プロバイダネットワーク100を介して識別されたSAD宛先にトラフィックを送信する。PSEインターフェースがデータプレーントラフィックを伝送するために使用される予想される形式(例えば、プロトコル)に準拠していないトラフィックをPSEから受信する場合、PSEインターフェースは係るトラフィックをドロップできることに留意されたい。さらに、PSEインターフェースがカプセル化されたパケットのアドレス指定を検証して、トラフィックの発信者(例えば、特定のIVN内でPSEによってホストされるインスタンス)がアドレス指定された宛先(例えば、同じまたは異なるIVN内のプロバイダネットワークによってホストされるインスタンス)にトラフィックを送信することが許可されることを確実にできることに留意されたい。
【0031】
PSEの各SADは1つ以上のPSEインターフェースの対応するグループを有し、グループの各メンバーは、PSEとのデータプレーントラフィック用に1つ以上のトンネルを確立する。例えば、4つのSADを有するPSEに4つのPSEインターフェースがある場合、PSEインターフェースは、それぞれ、SADのそれぞれのデータプレーントラフィックエンドポイントとの安全なトンネル(例えば、16のトンネル)を確立する。代替として、関連するVNAをグループの各メンバーにアタッチすることによって、PSEインターフェースのグループを複数のSADによって共有し得る。
【0032】
各PSEは、1つ以上のPSESADプロキシと、プロバイダネットワーク100とPSEのSADとの間の制御プレーントラフィックを処理する1つ以上のPSESADアンカーとを有する。制御プレーントラフィックは、一般的に、コマンド-レスポンス形式またはリクエスト-レスポンス形式を有する。例えば、プロバイダネットワーク100の制御プレーンサービスは、インスタンスを起動するためのコマンドをPSESADに発行できる。PSEリソースの管理がプロバイダネットワークから容易になるため、セキュアトンネルを通じて送信される制御プレーンコマンドは、一般的に、PSEから発信されるはずはない。高レベルで、PSESADプロキシは、プロバイダネットワーク100とPSEとの間のステートフルセキュリティ境界として機能する(係る境界は、時々、データダイオードと称される)。そのために、PSESADプロキシは、受信した制御プレーントラフィックに様々なセキュリティポリシーまたはセキュリティルールを適用する等の1つ以上の技術を採用できる。他の制御プレーンサービス104は、間接的または直接的に公開APIを提供し、PSEによってホストされるインスタンスが非トンネリング通信を介して(例えば、インターネット等のパブリックネットワークを通じて)プロバイダネットワーク100にコマンドを発行することを可能にし得ることに留意されたい。
【0033】
プロバイダネットワーク100内から発信され、PSEに向けられるトラフィックに関して、PSESADプロキシは、PSE内のその対応するSADの制御プレーンエンドポイントAPIを提供できる。例えば、インスタンスをホストできるPSESADのPSESADプロキシは、インスタンスを起動、構成、及び終了するために制御プレーン操作を受信できるAPIと一致するAPIを提供できる。PSESADに向けられ、PSESADプロキシによって受信されたAPIコール及び関連パラメータに応じて、PSESADプロキシは様々な操作を行うことができる。いくつかの操作に関して、PSESADプロキシは、操作パラメータ及び関連パラメータを修正せずに宛先SADに渡すことができる。いくつかの実施形態では、PSESADプロキシは、それらの操作を終える前に、プロバイダネットワーク100内から受信されたAPIコールのパラメータがAPIに対して適格であることを検証できる。
【0034】
いくつかのAPIコールまたは関連パラメータに関して、PSESADは、機密情報がプロバイダネットワーク100の外側に送信されるのを防ぐための媒介装置として機能できる。例示的な機密情報は、暗号化キー、ネットワーク証明書等の暗号化情報を含む。例えば、PSESADプロキシは、機密キーを使用してデータを復号化し、PSEに曝すことができるキーを使用してデータを再暗号化できる。別の例として、PSESADプロキシは、プロバイダネットワーク100内から発信された第1のセキュアセッション(例えば、トランスポート層セキュリティ(TLS)セッション)を終了し、異なる証明書を使用して対応するSADとの新しいセキュアセッションを作成し、プロバイダネットワーク証明書がPSEにリークするのを防ぐことができる。したがって、PSESADプロキシは、機密情報を含むプロバイダネットワーク100内から特定のAPIコールを受信して、機密情報を交換するPSESADに代替APIコールまたは交換APIコールを発行できる。
【0035】
PSEから発信され、プロバイダネットワーク100に向けられるトラフィックに関して、PSESADプロキシは、例えば、PSEから発信される全ての制御プレーンコマンドもしくは制御プレーン要求、またはプロバイダネットワーク内の公開されている制御プレーンエンドポイントに向けられていないコマンドもしくは要求だけをドロップできる。
【0036】
いくつかの実施形態では、PSESADプロキシは、もしあれば、予想される応答の性質に応じて、制御プレーン操作への応答を処理できる。例えば、いくつかの応答に関して、PSESADプロキシは、対応するコマンドまたは要求の発信者にいずれかのメッセージを送信せずに、単に応答をドロップできる。別の例として、いくつかの応答に関して、PSESADプロキシは、応答をサニタイズして、サニタイズされた応答を対応するコマンドまたは要求の発信者に制御プレーントラフィック107を介して送信する前に、対応するコマンドまたは要求の予想される応答フォーマットに従うことを確実にできる。さらに別の例として、PSESADプロキシは、(すぐに、またはSADからの実際の応答の受信時に)応答を生成し、生成された応答を対応するコマンドまたは要求の発信者に制御プレーントラフィック107を介して送信できる。
【0037】
プロバイダネットワーク100とPSEとの間のセキュリティ境界として機能する一部として、PSESADプロキシは、プロバイダネットワークのコンポーネント(例えば、制御プレーンサービス104)とPSEの各SADとの間の通信状態を追跡できる。状態データは、セッション期間中のセッションキー、未処理の応答を追跡するために関連する送信元及び宛先を使用した保留中のアウトバウンドAPIコール、プロバイダネットワーク100内から受信されたAPIコールと、交換または置換された機密情報等とともにSADに発行されたそのAPIコールとの関係を含み得る。
【0038】
いくつかの実施形態では、PSESADプロキシは、制御プレーントラフィックに加えて、他のPSEからプロバイダへのネットワーク通信のためのステートフル通信を提供できる。係る通信は、ドメインネームシステム(DNS)トラフィック、ネットワークタイムプロトコル(NTP)トラフィック、及びオペレーティングシステムアクティベーショントラフィック(例えば、Windows(登録商標)アクティベーション用)を含み得る。
【0039】
いくつかの実施形態では、PSEの特定のコンポーネントだけが、プロバイダネットワーク100との暗号化された制御プレーントラフィックトンネルのエンドポイントとして機能することが可能である。プロバイダネットワーク100とPSEとの間の接続に冗長性及び信頼性を提供するために、PSESADアンカーは、PSEの利用可能なトンネルエンドポイントのそれぞれのプロバイダネットワーク側エンドポイントとして機能できる。図示のように、PSESADアンカー(複数可)112はトンネル190を介して制御プレーントラフィックをPSE188にトンネルする働きをし、PSESADアンカー(複数可)122はトンネル192を介して制御プレーントラフィックをPSE1198にトンネルする働きをする。
【0040】
様々な実施形態は、上記に説明したトラフィックを処理するための技術を使用することと、プロバイダネットワーク100の他の部分からトラフィックに曝されるそれらのネットワークコンポーネントを分離することとの両方を行うことによって、プロバイダネットワークの外側から(例えば、PSEが含まれる状態から)発生するいずれかの計画された攻撃のラジアルインパクトを制限できる。具体的には、ネットワークコンポーネントは、1つ以上のIVN内で動作して、攻撃者が侵入し得る範囲を制限でき、それによって、プロバイダネットワーク及び他のカスタマーの両方の動作を保護する。したがって、様々な実施形態は、1つ以上のIVN内で実行する仮想マシンまたはコンテナによって実行されるアプリケーションとして、PSEインターフェース、PSESADプロキシ、及びPSESADアンカーをインスタンス化できる。図示の実施形態では、異なるPSEのPSEインターフェースのグループは、マルチテナントIVN(例えば、PSE188及びPSE198のPSEインターフェースIVN132)の中で起動する。他の実施形態では、PSEインターフェースの各グループはシングルテナントIVNで起動できる。さらに、所与のPSEに関するPSESADプロキシの各グループ及びPSESADアンカーの各グループは、シングルテナントIVN(例えば、PSE188のPSESADプロキシIVN134、PSE188のPSESADアンカーIVN136、PSE198のPSESADプロキシIVN138、及びPSE198のPSESADプロキシIVN40)の中で起動する。
【0041】
ネットワークコンポーネント(例えば、PSEインターフェース、PSESADプロキシ、及びPSESADアンカー)のそれぞれに複数のインスタンスを動作させることによって提供される冗長性により、プロバイダネットワークは、PSEからプロバイダへのネットワーク通信を中断することなく、それらのコンポーネントをホストするインスタンスを定期的にリサイクルすることが可能であることに留意されたい。リサイクルは、例えば、インスタンスの再起動または新しいインスタンスの起動と、例えば、リサイクルされたインスタンスのアドレスを用いる他のインスタンスの再構成とを含み得る。定期的なリサイクルは、ネットワークコンポーネントが侵害された場合、攻撃者が侵害されたネットワークコンポーネントを利用し得る時間枠を制限する。
【0042】
PSE接続マネージャ180は、プロバイダネットワーク100とPSEとの間の接続を提供するネットワークコンポーネントのセットアップ及び構成を管理する。前述のように、PSEインターフェース108、118、PSESADプロキシ110、120、及びPSESADアンカー112、122は、プロバイダネットワーク基板によってインスタンスとしてホストできる。PSE接続マネージャ180は、PSEがカスタマーに出荷されるとき及び/またはそのPSEがオンラインになり、構成データをプロバイダネットワークと交換するとき、PSEインターフェース(複数可)、PSESADの単数のプロキシ/複数のプロキシ、及びPSEのPSESADアンカー(複数可)の起動を要求または開始できる。さらに、PSE接続マネージャ180は、さらに、PSEインターフェース(複数可)、PSESADの単数のプロキシ/複数のプロキシ、及びPSESADアンカー(複数可)を構成できる。例えば、PSEアタッチマネージャ180は、PSEのSADに対応するVNA(複数可)をPSEインターフェース(複数可)にアタッチし、PSEインターフェース(複数可)に、PSESADの単数のプロキシ/複数のプロキシのアドレスを提供し、PSESADの単数のプロキシ/複数のプロキシに、PSEのPSESADのPSESADアンカー(複数可)のアドレスを提供できる。さらに、PSE接続マネージャ180は、例えば、PSEインターフェースIVN132とPSEのPSESADプロキシIVNとの間の通信と、PSESADプロキシIVNとPSEのPSESADアンカーIVNとの間の通信とを可能にするように、様々なコンポーネントのIVNを構成できる。
【0043】
トンネル190~193の確立を容易にするために、トンネルエンドポイントは、各々のネットワークの外側から(例えば、PSEインターフェース及びPSESADアンカーに関するプロバイダネットワークの外側から、PSEのトンネルエンドポイントに関するカスタマーネットワークの外側から)トラフィックを受信できる1つ以上のアタッチされたVNAまたは割り当てられた物理ネットワークアドレスを有し得ることに留意されたい。例えば、PSE188は、単一の外向きのネットワークアドレスを有し、ポートアドレス変換(PAT)または複数の外向きのネットワークアドレスを使用して、複数のSADへの通信を管理できる。PSESADアンカー112、122のそれぞれは、外向きのネットワークアドレスを有し得るまたは(例えば、PATを介して)共有でき、PSEインターフェース108、118のそれぞれは、外向きのアクセス可能なネットワークアドレスを有し得るまたは(例えば、PATを介して)共有できる。
【0044】
図2は、少なくともいくつかの実施形態による、例示的なプロバイダ基板拡張を示すブロック図である。図示の実施形態では、PSE188は、1つ以上のPSEフレームワーク202及び1つ以上のホスト220を含む。高レベルで、ホスト220のそれぞれは、プロバイダネットワーク基板(例えば、プロバイダネットワーク内のインスタンスをホストするその基板リソース)の一部を形成するコンピュータシステムの少なくとも一部と機能的に(場合によって構造的に)同様であり得る一方、PSEフレームワーク(複数可)202は、PSE内のプロバイダネットワーク基板をエミュレートするために、ならびに制御プレーントラフィックトンネル及びデータプレーントラフィックトンネル(例えば、図1のトンネル190~193)を介してプロバイダネットワークへの接続を提供するためのサポートインフラストラクチャを提供する。
【0045】
少なくともいくつかの実施形態では、PSEフレームワーク202のそれぞれは、PSE制御プレーントラフィック240及びPSEデータプレーントラフィック242によって示されるように、メッシュのようなアーキテクチャにおいて、制御プレーントラフィックまたはデータプレーントラフィックをホスト220のそれぞれから送信または受信でき、逆もまた同様である。係る冗長性により、カスタマーがプロバイダネットワークに期待し得る信頼性レベルが可能になる。
【0046】
PSEフレームワーク202は、制御プレーントラフィックを運ぶ暗号化トンネル(例えば、トンネル190、トンネル192)を終端する1つ以上の制御プレーントンネルエンドポイント204を含む。いくつかの実施形態では、プロバイダネットワーク100は、制御プレーントンネルエンドポイント204のそれぞれのPSESADアンカーをホストする。プロバイダネットワークに戻ると、PSESADの単数のプロキシまたは複数のプロキシ(例えば、プロキシ110)は、制御プレーントラフィックをPSESADアンカー(例えば、アンカー112)に分散でき、制御プレーントラフィックのロードをPSE188のPSEフレームワーク202にわたって効果的に分散する。PSEフレームワーク202は、さらに、プロバイダネットワークのPSEインターフェースから、データプレーントラフィックを運ぶ暗号化トンネル(例えば、トンネル191、トンネル193)を終端する1つ以上のデータプレーントンネルエンドポイント206を含み、PSEフレームワーク202は、さらに、メッシュのようなアーキテクチャにおいて接続され得る(例えば、所与のPSEインターフェース108は、PSEフレームワーク202のそれぞれのデータプレーントンネルエンドポイント206とのトンネルを確立する)。
【0047】
上記に示したように、制御プレーントラフィックのパケット及びデータプレーントラフィックのパケットは、送信元及び宛先の両方としてSADを含み得る。後者(データプレーントラフィックのパケット)はSADベースのアドレス指定を有するパケットにカプセル化される。図示のように、PSEフレームワーク202はSAD289であり、ホスト220はSAD290である。PSE188内のSAD(例えば、SAD289、290)は、また、プロバイダネットワーク内の対応するPSESADの単数のプロキシまたは複数のプロキシ(例えば、PSESADプロキシ110)で確立されたセキュアセッションにセキュアセッション終了(例えば、TLS終了)を提供できることに留意されたい。
【0048】
SADは1つ以上の制御プレーンAPIを販売して、SADのリソースを管理するSADに向けられた制御プレーン操作を処理する。例えば、PSEフレームワーク202のPSEマネージャ210は、PSEフレームワーク202のコンポーネントを管理するための制御プレーンAPIを販売できる。係るコンポーネントの1つは、例えば、PSEマネージャ210に対してSAD289に向けられた制御プレーントラフィック、及びホストマネージャ222に対してSAD290に向けられた制御プレーントラフィックまたはデータプレーントラフィック等の、制御プレーントラフィック及び/またはデータプレーントラフィックをPSE188に出入りするようにルーティングするPSEゲートウェイ208である。PSEゲートウェイ208は、さらに、PSE展開サイトのネットワーク(例えば、カスタマーネットワーク185)を介してアクセス可能な他のカスタマーリソース187等にまたはそこから、カスタマーネットワークとの通信を容易にできる。
【0049】
PSEマネージャ210のAPIは、PSEフレームワーク202のPSEゲートウェイ208を構成するための1つ以上のコマンドを含み得る。PSEフレームワーク202の他のコンポーネント212は、DNS、動的ホスト構成プロトコル(DHCP)、及び/またはNTPサービス等のホスト220のためのPSEの基板の動作に関与する様々なアプリケーションまたはサービスを含み得る。
【0050】
ホストマネージャ222は、ホスト220のコンポーネントを管理するための制御プレーンAPIを販売できる。図示の実施形態では、ホストマネージャ222は、インスタンスマネージャ224及びネットワークマネージャ226を含む。インスタンスマネージャ224は、ホスト220によってホストされるインスタンスを起動、構成、及び及び/または終了するためのコマンドを含む、ホスト220の管理に関連するAPIコールを処理できる。例えば、プロバイダネットワーク(図示せず)内のインスタンス管理サービスは、制御プレーンコマンドをインスタンスマネージャ224に発行して、ホスト220でインスタンスを起動できる。図示のように、ホスト220は、カスタマーIVN233の内側で起動するカスタマーインスタンス232、3PIVN235の内側で起動するサードパーティ(3P)インスタンス234、及びサービスIVN237の内側で起動するサービスインスタンス236のホストである。これらのIVN233、234、235のそれぞれは、プロバイダネットワーク内に確立された既存のIVNを拡張できることに留意されたい。カスタマーインスタンス232は、いくつかのカスタマーアプリケーションまたはワークロードを実行し得、3Pインスタンス234は、カスタマーがPSE188内でインスタンスを起動することを許可している別のパーティのアプリケーションまたはワークロードを実行し得、サービスインスタンス236は、PSE188にローカルに提供するプロバイダネットワークのサービス(例えば、ブロックストレージサービス、データベースサービス等)を実行し得る。
【0051】
ネットワークマネージャ226は、ホスト220によって受信されたSADアドレス指定されたデータプレーントラフィックを処理できる。係るトラフィックに関して、ネットワークマネージャは、IVNパケットをアドレス指定されたホストされるインスタンスに送信する前に、IVNパケットの必要なカプセル化解除を行うことができる。さらに、ネットワークマネージャ226は、ホストされるインスタンスによって送信されたトラフィックのルーティングを処理できる。ホストされるインスタンスが(例えば、同じホストで)ローカルにホストされる別のインスタンスにトラフィックを送信しようとするとき、ネットワークマネージャ226はそのトラフィックをアドレス指定されたインスタンスに転送できる。ホストされるインスタンスが(例えば、同じホストにない)非ローカルインスタンスにトラフィックを送信しようとするとき、ネットワークマネージャ226は、非ローカルインスタンスをホストするデバイスの基板アドレスを見つけ、対応するパケットをカプセル化し、オプションで、SADアドレス指定されたパケットに暗号化し、そのパケットを、データプレーンを通じて送信できる(例えば、PSE内の別のホストに送信する、またはPSEゲートウェイ208を介してプロバイダネットワークに戻すのいずれかが行われる)。ネットワークマネージャ226は、データプレーントラフィックのルーティングを容易にする様々なデータを含み得る、またはそれらのデータにアクセスできることに留意されたい(例えば、これは、ホストされたインスタンスから受信されたパケットの宛先にIVNネットワークアドレスを有するインスタンスをホストするSADのアドレスを検索するためである)。
【0052】
図3は、少なくともいくつかの実施形態による、プロバイダネットワークとプロバイダ基板拡張との間の例示的な接続を示すブロック図である。具体的には、図3は、プロバイダネットワークとPSEとの間の例示的な接続を示す。図3に関して及び図の上部に示されるように、用語「インバウンド」はプロバイダネットワークによってPSEから受信されたトラフィックを指し、用語「アウトバウンド」はプロバイダネットワークによってPSEに送信されるトラフィックを指すことに留意されたい。図示されていないが、この例では、PSEがSADの2つのPSEフレームワーク202及び2つのホスト220(合計4つ)を含むと仮定する。PSEフレームワークは、制御プレーントラフィック用のトンネルエンドポイント204A、204Bと、データプレーントラフィック用のトンネルエンドポイント206A、206Bとを提供する。アウトバウンドトラフィックは復号化され、PSEゲートウェイ208A、208Bを介してPSE基板内の宛先に送信される。
【0053】
4つのSADのそれぞれに関して、プロバイダネットワークは、VNA、1つ以上のPSEインターフェース、及び1つ以上のPSESADプロキシを含む。この例では、プロバイダネットワークは、PSESADVNA304、2つのPSEインターフェース108A、108B、及び所与のPSESADのための2つのPSESADプロキシ110A、110Bを含む。一緒に、PSEインターフェース(複数可)及びPSESADの単数のプロキシ/複数のプロキシは示されるようにスライスと称され得、各スライスはPSE内の特定のSADに対応する。他の実施形態では、PSEインターフェース(複数可)は、SADの1つに対する単一のVNAではなく、VPNのための全てのVNAによって共有され得る。
【0054】
PSESADVNA304は、プロバイダネットワークの他のコンポーネントがPSEの対応するSADにトラフィックを送信して、そのSADから受信できる所与のPSEのフロントとして機能する。ロードバランサ(図示せず)は、PSESADVNA304に送信されるアウトバウンドトラフィックを、PSEインターフェース108A、108Bの1つにルーティングできる。所与のスライス及び他のスライス(図示せず)のものに関する図示されるPSEインターフェース108A、108Bは、PSEインターフェースIVN132内で動作する。PSEインターフェース108A、108Bは、データプレーントラフィックトンネルを介してデータプレーントラフィックをPSEに送信して、制御プレーントラフィックをスライスのPSESADプロキシ110A、110Bに転送することによって、制御プレーントラフィックをPSEに送信する。PSEインターフェース108A、108Bは、関連するSADのPSESADの単数のプロキシ/複数のプロキシのネットワークアドレス、データプレーントンネルエンドポイント(複数可)のネットワークアドレス、及びそれらのエンドポイント(複数可)との通信を保護するためのPSEのデータプレーントンネルエンドポイント(複数可)の1つ以上のキーまたは関連付けられるキーを記憶する(またはそれにアクセスできる)。
【0055】
少なくともいくつかの実施形態では、PSEインターフェース110A、110Bは、データプレーントンネルエンドポイント206A、206Bのそれぞれとのデータプレーントラフィックのための安全なトンネルを確立し、N個のデータプレーントンネルが生じ、ここで、NはSADごとのPSEインターフェースの数である(各SADが同じ数のインターフェースを有すると仮定する)にデータプレーントンネルエンドポイントの数を掛け、それにSADの数を掛ける。この例では、16個のデータプレーントンネルがPSEインターフェースとデータプレーントンネルエンドポイントとの間に確立される(つまり、SADごとに2つのPSEインターフェース×2つのデータプレーントンネルエンドポイント×4つのSAD)。
【0056】
PSESADプロキシ110A、110Bは、PSEインターフェース108A、108Bから制御プレーントラフィックを受信して、本明細書の他の箇所で説明される様々な動作を行い、2つのPSESADアンカー112A、112Bのいずれかを介して制御プレーントラフィックをPSEに送信する。同様に、PSESADプロキシ110A、110Bは、2つのPSESADアンカー112A、112Bのいずれかから制御プレーントラフィックを受信して、本明細書の他の箇所で説明される様々な動作を行い、プロバイダネットワーク内の宛先への制御プレーントラフィック107を行う。所与のスライスの図示されるPSESADプロキシ110A、110B及び他のスライス(図示せず)のプロキシは、PSESADプロキシIVN134内で動作する。PSEインターフェース108A、108Bは、PSESADアンカー(複数可)のネットワークアドレスを記憶する(またはそれにアクセスできる)。
【0057】
少なくともいくつかの実施形態では、PSESADプロキシは、共有データストア306にアクセスできる、またはそうでなければ、情報を交換することが可能である。係る情報交換はいくつかの理由で使用できる。例えば、PSESADプロキシはAPIインターフェースを販売して、PSE内の関連するSADのAPIインターフェースをエミュレートできることを思い出されたい。いくつかの通信がステートフルである可能性があり、様々なロードバランシング技術により、同じPSESADプロキシが所与の動作セットの全ての通信の処理を妨げ得るため、1つのPSESADプロキシは、異なるPSESADプロキシによって以前に処理された通信状態にアクセスする必要があり得る(例えば、PSESADプロキシ110Aは制御プレーン操作をPSEに送信して、PSESADプロキシ110Bは制御プレーン操作への応答をPSEから受信する)。インバウンド制御プレーントラフィックに関して、PSESADプロキシは、インバウンドメッセージが予想される状態と一致しているかどうかをチェックし、一致している場合、本明細書の他の箇所で説明されているように、制御プレーントラフィック107を介してメッセージを送信できる。一致しない場合、PSESADプロキシ110A、110Bはトラフィックをドロップできる。別の例として、PSESADプロキシは、プロバイダネットワーク証明書がPSEに送信されないように、別個の安全なセッション(例えば、TLSセッション)をブリッジできることを思い出されたい。この場合も、アウトバウンドメッセージを処理するPSESADプロキシはそのメッセージへの応答を処理するPSESADプロキシとは異なり得るため、応答メッセージを処理するPSESADプロキシは、安全な応答メッセージを、制御プレーントラフィック107を介して発信者に送信するために、アウトバウンドメッセージの発信者とアウトバウンドメッセージを処理したPSESADプロキシとの間で確立された同じキーを使用できる。
【0058】
この例では、各PSEフレームワークは、単一の制御プレーントンネルエンドポイント204を提供する。利用可能な制御プレーントンネルエンドポイント204のそれぞれに関して、プロバイダネットワークはPSEアンカーを含む。この例では、プロバイダネットワークは2つのPSEアンカー112A、112Bを含む。PSESADアンカー112A、112Bは、PSESADアンカーIVN136内で動作する。PSEアンカー112は、8つのPSESADプロキシ(4つのSADのそれぞれでスライスごとに2つ)のそれぞれから制御プレーントラフィックを受信して、そのトラフィックをPSEに送信する。PSEアンカーは、また、制御プレーントラフィックをPSEから受信して、そのトラフィックを、PSEからトラフィックの発信元のSADに関連付けられる2つのPSESADプロキシの1つに送信する。PSEアンカー112A、112Bは、SADのそれぞれのPSESADの単数のプロキシ/複数のプロキシのネットワークアドレス、制御プレーントンネルエンドポイント(複数可)のネットワークアドレス、及びそれらのエンドポイント(複数可)との通信を保護するためのPSEの制御プレーントンネルエンドポイント(複数可)の1つ以上のキーまたは関連付けられるキーを記憶する(またはそれにアクセスできる)。
【0059】
少なくともいくつかの実施形態では、ネットワークコンポーネントまたはプロバイダネットワークは、ロードバランシング技術を採用して、プロバイダネットワークとPSEとの間でルーティング制御及びデータプレーントラフィックのワークロードを分散できる。例えば、PSESADVNA304に送信されるトラフィックは、PSEインターフェース108A、108Bの間で分散できる。別の例として、PSEインターフェース108のそれぞれは、データプレーントンネルエンドポイント206A、206Bの間でトラフィックを分散できる。さらに別の例として、PSEインターフェース108のそれぞれは、PSESADプロキシ110A、110Bの間でトラフィックを分散できる。さらに別の例として、PSESADプロキシ110のそれぞれは、PSESADアンカー112A、112Bの間でアウトバウンドトラフィックを分散できる。さらに別の例として、PSESADアンカー112は、PSESADプロキシ110A、110Bの間でインバウンドトラフィックを分散できる。いずれの場合も、係るロードバランシングは、送信エンティティまたはロードバランサ(図示せず)によって行うことができる。例示的なロードバランシング技術は、そのアドレスの「後ろ」にある複数のコンポーネントにトラフィックを分散する単一のVNAを伴うロードバランサを採用することと、各データ送信者に複数の受信者のアドレスを提供することと、選択した受信者をアプリケーションレベルで分散すること等を含む。
【0060】
図1図3に示される実施形態は、制御プレーントラフィック及びデータプレーントラフィック用の別のトンネルの確立を示し、他の実施形態は、制御プレーントラフィック及びデータプレーントラフィックの両方のための1つ以上のトンネルを採用し得ることに留意されたい。例えば、PSEインターフェースは、共有トンネルを通じてPSEに伝送するために、データプレーントラフィックをPSESADアンカーにルーティングでき、制御プレーントラフィックでPSESADプロキシによって実行される追加の動作をバイパスする。
【0061】
図4及び図5は、少なくともいくつかの実施形態による、仮想化ブロックストレージシステムの例を示すブロック図である。図4に示されるように、プロバイダネットワーク400またはPSE488はホスト420Aを含む。ホスト420Aは、ブロックストレージサーバーインスタンス450のホストである。ブロックストレージサーバーインスタンス450をホストする際、ホスト420Aは、ブロックストレージサーバーインスタンス450のためにプロビジョニングされたストレージデバイス447(例えば、仮想ドライブまたは仮想ディスク)として、ホストストレージデバイス(複数可)421のいくらかの量をプロビジョニングしている。ブロックストレージサーバーインスタンス450は、プロビジョニングされたストレージデバイス447を分割し、他のインスタンスに代わってボリュームを作成及びホストできる。プロバイダネットワーク400のインスタンス管理サービス(図示せず)は、インスタンスマネージャ426を介して、プロバイダネットワーク400のホストまたはPSE488のホストのいずれかで係るブロックストレージサーバーインスタンスの起動を開始できる。インスタンスマネージャ426は、インスタンス(例えば、仮想マシン)用のホストリソース(例えば、計算、メモリ、ネットワーク、ストレージ)をプロビジョニングし、インスタンスを起動及び終了できる仮想マシンマネージャ(VMM)、ハイパーバイザー、または他の仮想化プログラムであり得る。
【0062】
ホスト420Aは、また、インスタンスIVN432内のインスタンスA430のホストである。ブロックストレージサーバーインスタンス450は、ブロックストレージボリュームA434をインスタンスA430に提供し、ブロックストレージボリュームB440を別のインスタンス(図示せず)に提供する。ホスト420Aは、ホストされるインスタンスがブロックストレージサーバーによってホストされるブロックストレージボリュームにアクセスする(例えば、仮想ブロックストレージインターフェースをインスタンスに提供することによってアクセスする)ブロックストレージクライアント460Aを含む。具体的には、ブロックストレージクライアント460は、インスタンスに「アタッチされた」ボリューム(例えば、インスタンスA430にアタッチされたブロックストレージボリュームA434)に発行されたブロックストレージ操作を傍受する、またはそうでなければ受信するソフトウェアプログラムであり得る。
【0063】
図5に示されるように、プロバイダネットワーク400またはPSE488は、2つのホスト420A及び420Bを含む。この場合も、ホスト420Aはブロックストレージサーバーインスタンス450のホストである。ホスト420BはインスタンスIVN438内のインスタンスB436のホストである。ブロックストレージサーバーインスタンス450は、ブロックストレージボリュームB440をインスタンスB436に提供する。ホスト420Bは、ホストされるインスタンスがブロックストレージサーバーによってホストされるブロックストレージボリュームにアクセスするブロックストレージクライアント460Bを含む。
【0064】
ボリュームがインスタンスにアタッチされるとき、ブロックストレージクライアントは、ボリュームを、レプリカをホストするブロックストレージサーバーインスタンス(複数可)に関連付けるマッピングを取得する。ブロックストレージクライアントは、ブロックストレージサーバーインスタンスのそれぞれとの通信セッションを(例えば、ネットワークベースのデータ転送プロトコルによって)開くことができる。ブロックストレージ操作をインスタンスから受信すると、ブロックストレージクライアントは適切なブロックストレージサーバー(複数可)に操作を発行して、インスタンスの操作を実現する。例えば、図4を参照すると、インスタンスA430は、ボリュームA434から所与のブロックアドレス(例えば、論理ブロックアドレスまたはLBA)でデータのブロックの読み取りを発行できる。ブロックストレージクライアント460Aは、読み取り操作を受信して、インスタンスアタッチボリュームA434のブロックストレージサーバーインスタンス450へのマッピングデータに基づいて、要求されたブロックアドレスを含む操作をブロックストレージサーバーインスタンス450に発行する。ブロックストレージサーバーインスタンス450からデータを受信すると、ブロックストレージクライアント460Aは、インスタンスA430にデータを提供する。同様の一連の動作は、図5のインスタンスB436、ブロックストレージクライアント460B、ブロックストレージサーバーインスタンス450、及びボリュームB440の間で実行できる。
【0065】
図4及び図5を参照すると、ブロックストレージクライアントとブロックストレージサーバーインスタンスとの間のブロックストレージメッセージングは、グローバルネットワークブロックデバイス(GNDB)等のネットワークベースのデータ転送プロトコルを使用して送信できる。本明細書の他の箇所で説明されるように、係るメッセージは、データプレーントラフィックとしてカプセル化され、各々のホストのネットワークマネージャ424によって、ブロックストレージクライアント460とブロックストレージサーバー450との間でルーティングできる。ブロックストレージサーバーインスタンスが、ブロックストレージ操作を発行するインスタンスと同じホストによってホストされるいくつかの実施形態では、ブロックストレージクライアントは、ネットワークベースのデータ転送プロトコルによって関連操作をネットワークマネージャに発行でき、次に、ネットワークマネージャはホストされるブロックストレージサーバーインスタンスに操作を内部でルーティングできる。ブロックストレージサーバーインスタンスが、ブロックストレージ操作を発行するインスタンスと同じホストによってホストされる他の実施形態では、ブロックストレージクライアントは、ブロックストレージクライアントとホストされるインスタンスとの間に常駐するPCIeまたは他の相互接続を介して関連操作を発行でき、これによって、ネットワークベースの転送に関連付けられるプロトコルパッキングを回避する。
【0066】
図4及び図5を参照すると、システムは様々なレベルの暗号化を展開して、ブロックストレージデータを保護できる。ブロックストレージトラフィックのエンドツーエンド暗号化を提供するために、ブロックストレージサーバーインスタンス452は、ブロックストレージサービス(BSS)IVN452内で実行して、任意の数のブロックストレージサーバーインスタンスを含み、プロバイダネットワークからPSEに及び得る。ブロックストレージクライアント460は、ブロックストレージサービスIVN452に関連付けられるVNA462を有する。このように、ブロックストレージサービスIVN暗号化キー484を使用するIVNレベル暗号化を使用して、ブロックストレージサーバーインスタンス450とブロックストレージクライアント460との間で送信されるトラフィックを暗号化及び復号化できる。ブロックストレージサービスIVNを介して運ばれるトラフィックの暗号化及び復号化は、IVNのエンドポイントにおけるネットワークマネージャによって行われ得ることに留意されたい。例えば、ネットワークマネージャ424Bは、VNA462Bを介してブロックストレージクライアント460Bから送信されるトラフィックを暗号化する。別の例として、ネットワークマネージャ424Aは、ブロックストレージサーバーインスタンス450を含む、BSSのIVN452内でホストされるインスタンスに送信されたトラフィックを復号化する。データの保存時の暗号化を提供するために、ブロックストレージボリュームは、さらに、ボリュームレベルの暗号化を有し得る。例えば、ボリュームA434はボリュームA暗号化キー480で暗号化でき、ボリュームB440はボリュームB暗号化キー482で暗号化できる。暗号化キー480を使用して、ブロックストレージクライアント460Aは、インスタンスA430によってボリュームA434に書き込まれたデータを暗号化し、インスタンスA430によってボリュームA434から読み取られたデータを復号化する。暗号化キー482を使用して、ブロックストレージクライアント460Bは、インスタンスB436とボリュームB440との間で同様の暗号化動作及び復号化動作を行うことができる。いくつかの実施形態では、ボリュームをホストするブロックストレージサーバーインスタンスがそのボリュームにアタッチされたインスタンスと同じホストでホストされるのを防ぎ、ボリューム暗号化キーが、それが暗号化するボリュームと同じホストでホストされるのを防ぐポリシーがインプレースであり得ることに留意されたい(例えば、ボリュームA暗号化キー480及びボリュームA434がホスト420Aになくなる)。
【0067】
いくつかの実施形態では、インスタンス及びホストマネージャは、図4及び図5に示されるように、異なるプロセッサ(複数可)によって実行される。例えば、ブロックストレージサーバーインスタンス450は、第1のプロセッサ(例えば、プロセッサ1710)によって実行でき、ホストマネージャ422Aは、第2のプロセッサ(例えば、プロセッサ1775)によって実行できる。ブロックストレージサーバーインスタンスを実行するプロセッサ(複数可)は、1つ以上の相互接続を介してホストのストレージデバイス(複数可)にアクセスする。例えば、ブロックストレージサーバーインスタンス450を実行するプロセッサ(複数可)(例えば、プロセッサ1710)は、2つの間のPCIe相互接続を介して、ストレージデバイス(複数可)421(例えば、ストレージデバイス1780)にアクセスし得る。別の例として、ブロックストレージサーバーインスタンス450を実行するプロセッサ(複数可)は、ホストマネージャ422A(例えば、プロセッサ1775)を実行するプロセッサまたはシステムオンチップに第1のPCIeバスを介してストレージデバイス(複数可)421にアクセスし得、次に、これは、第2のPCIeバスを介してそれらの通信をストレージデバイス(複数可)421にブリッジする。
【0068】
図4及び図5に単一ボリュームとして示されるが、インスタンスボリューム434、440のそれぞれは、システムに高い信頼性を提供するために、複数の異なるブロックストレージサーバーに記憶された複数のレプリカにわたってミラーリングされ得る。例えば、1つのレプリカは、ボリュームからの読み取り及びボリュームへの書き込み(入力動作及び出力動作、または「入出力(I/O)」)を処理するプライマリレプリカと称され得、そのプライマリレプリカをホストしているサーバーは、書き込みを他のセカンダリレプリカに同期的に伝播できる。プライマリレプリカに障害が発生した場合、セカンダリレプリカの1つがプライマリレプリカとして機能するように選択される(フェイルオーバーと称される)。レプリカはパーティションに細分(例えば、ストライプ化)され得、所与のレプリカの各パーティションは異なるサーバーに記憶され、並列読み取り及び並列書き込みが容易になる。レプリカはまた冗長性(例えば、パリティビット)でエンコードされ得るため、(例えば、サーバーまたはディスクの障害等が原因で)ブロックストレージサーバーが利用不可能になったとき、ロストデータを利用可能なデータから回復できる。結果として、インスタンスにアタッチされたボリュームは、多くのブロックストレージサーバーによってホストされ得る。
【0069】
仮想化されたコンテキストでブロックストレージサーバーをホストすることに関連付けられる1つの課題は、それらのサーバーをブートすることである。操作可能なブロックストレージサーバーインスタンスがない場合、ブロックストレージサーバーインスタンスは、ブロックストレージサーバーインスタンスによってホストされるブートボリュームからどのようにブートするか?これは、専用(またはベアメタル)ブロックストレージサーバーを含み得ないPSEのコンテキストでは特に困難である。図6及び図7は、PSE内で第1のブロックストレージサーバーインスタンスまたは「シード」ブロックストレージサーバーインスタンス(他のインスタンスを起動できるブロックストレージサーバーインスタンス)をブートするためのローカルブート技術の例を示す。いったん起動すると、シードブロックストレージサーバーインスタンスから他のインスタンスを起動できる。
【0070】
図6は、少なくともいくつかの実施形態による、第1の技術を使用して仮想化ブロックストレージサーバーをブートするための例示的なシステムを示すブロック図である。高レベルで、図6は、プロバイダネットワーク600内でホストされるプロキシサーバーを介して、インスタンス690内のブロックストレージサーバー650をリモートでブートする例を示す。プロバイダネットワーク600のブロックストレージサービス(BSS)606は、ブロックストレージボリュームを作成し、それらのボリュームをインスタンスにアタッチする能力をユーザに提供する。例えば、ユーザ(例えば、プロバイダネットワークのカスタマー、プロバイダネットワークの別のサービス)は、BSS606に中継されるAPIまたはコンソールを介してコマンドをサブミットして、BSSによって管理されるボリュームを作成、サイズ変更、または削除し、それらのボリュームをインスタンスにアタッチまたはデタッチできる。BSS606は、ボリュームスナップショットを含むBSSオブジェクトストア608を維持している。スナップショットは、ファイルと同様に、オブジェクトデータ及びオブジェクトに関するメタデータ(例えば、作成時間等)を含み得るオブジェクトのタイプと見なすことができる。ボリュームスナップショットは、所与の時点でのボリュームのコピー(またはバックアップ)であり、物理ドライブまたは仮想ドライブでそのボリュームの再作成を可能にする。スナップショットは、概して、ブートボリューム及び非ブートボリュームに分割でき、前者(ブートボリューム)はインスタンス内で実行されるソフトウェアのブートを容易にする。マシンイメージは、ブートボリュームを含む所与のインスタンスの1つ以上のスナップショットのグループであり得る。
【0071】
いくつかの実施形態では、BSS606は、BSSオブジェクトストア608内のオブジェクトのオブジェクトレベルの暗号化を適用する。プロバイダネットワーク600内で使用される暗号化キーの漏洩を防ぐために、BSS606は、さらに、PSEオブジェクトストア610を管理でき、BSSオブジェクトストア608のオブジェクトを暗号化するために使用されるものと異なる暗号化キーを使用して、所与のPSEに送信されるオブジェクトを再暗号化する。この例では、ブロックストレージサーバーインスタンスマシンイメージ612Aを使用して、PSEのホスト620でブロックストレージサーバー650をブートする。円Aに示されるように、BSS606は、プロバイダネットワーク600内に保持されたキーを使用してブロックストレージサーバーインスタンスマシンイメージ612Aを復号化し、PSEに送信できるキー613を使用してそれをブロックストレージサーバーインスタンスマシンイメージ612Bとして再暗号化する。
【0072】
IVNは、ブロックストレージサーバーインスタンスとブロックストレージクライアントとの間のトラフィックにセキュリティを提供できる。いくつかの実施形態では、BSS606は、BSSのIVN652として示されるそのIVNを管理する。ブロックストレージサーバー650が起動されるホスト620は、BSSのIVN652の関連するVNA662を伴うブロックストレージクライアント660を有するホストマネージャ622を含む。BSSのIVN652を通じたブロックストレージクライアント660とプロバイダネットワーク600との間の通信を容易にするために、BSS606は、BSSのIVN652内でプロキシサーバーインスタンス642を起動する。プロキシサーバーインスタンス642は、ブロックストレージクライアント660へのブロックストレージのようなインターフェースを提供し、クライアント660がブロックストレージサーバーインスタンスのマシンイメージ612Bにアクセスすることを可能にし得る。次のように、BSS606はプロキシサーバーインスタンス642を起動する。
【0073】
円Bに示されるように、BSS606は、最初に、ベアメタルブロックストレージサーバー614にメッセージを送信して、プロキシサーバーインスタンス642のブートボリュームとして機能する新しい論理ボリュームを作成する。ベアメタルブロックストレージサーバー614は、ベアメタルサーバー614のその1つ以上のストレージデバイス618上に新しい論理ボリューム619を作成し、BSSオブジェクトストア608に記憶されたプロキシサーバーマシンイメージ616をボリューム619にロードする。
【0074】
円Cに示されるように、BSS606は、インスタンス管理サービス640を用いてプロキシサーバーインスタンス642の起動を開始する。インスタンス管理サービス640は、プロバイダネットワーク600またはPSE内のインスタンスの起動を容易にするプロバイダネットワーク600の別の制御プレーンサービスである。いくつかの実施形態では、インスタンス管理サービス640は、ホストがどれだけ「ホット」であるかを示すホスト使用率メトリック(すなわち、CPU使用率、メモリ使用率、及びネットワーク使用率等のメトリック)を追跡し得るまたはそれにアクセスし得る。例えば、インスタンス管理サービス640または別のサービスは、定期的にホストをポーリングして、使用率メトリックを取得し得る。インスタンス管理サービス640は、潜在的なホストのプールに関連付けられるメトリックにアクセスすることによって(所与のPSE等内のホストの場所に関する何らかの制約に従う)、使用率が低い(例えば、ある閾値または複数の閾値を下回っている)を選択することによって、起動要求に応答してインスタンスをホストするホストを識別できる。プロキシサーバーインスタンス642の起動を要求する際に、BSS606は、インスタンスがBSSのIVN652内で、ボリューム619から起動するべきであることを指定する。円Dに示されるように、インスタンス管理サービス640は、インスタンスをホストするホスト646を識別し、ホスト646にメッセージを送信して、インスタンスを起動する。ホスト646のインスタンスマネージャ(図示せず)は、プロキシサーバーインスタンス642のためにホストのリソースをプロビジョニングし、それをブートボリューム619から起動する。
【0075】
BSS606は、また、インスタンス管理サービス640を介してブロックストレージサーバー650の起動を開始する。BSS606は、インスタンスが、特定のPSEの(例えば、PSE識別子を用いて)BSSのIVN652内で、プロキシサーバーインスタンス642によって利用可能にされたブートボリュームから起動するべきであることを指定する。円Eに示されるように、インスタンス管理サービス640は、ブロックストレージサーバーインスタンス650をホストするホスト620を識別し、(例えば、制御プレーントラフィックトンネルを介して)ホスト620にメッセージを送信して、インスタンスを起動する。図示のように、インスタンスを起動する要求は、インスタンスのホストリソースをプロビジョニングし、インスタンスを起動及び終了できるインスタンスマネージャ626によって受信される。ここで、インスタンスマネージャ626は、ブロックストレージサーバーをホストするためにインスタンス690を作成する。
【0076】
インスタンス690の構成の一部として、インスタンスマネージャ626は、インスタンス690の基本入出力システム(BIOS)692を構成し、プロキシサーバーインスタンス642を介して、仮想ブートボリューム694にブロックストレージサーバーインスタンスマシンイメージ612Bをロードできる。BIOS692は、ブロックストレージデバイスドライバー(例えば、不揮発性メモリエクスプレス(NVMe)ドライバー)を含み、2つのブロックストレージデバイスをアタッチできる。仮想化ブロックストレージデバイスは、ブロックストレージクライアント660及びブートボリューム694を介して、プロキシサーバーインスタンス642によって提示される。インスタンス690内に示されるが、ブートボリューム694は、ブロックストレージクライアント660またはホストマネージャ622の別のコンポーネントを介してアクセスできるホスト620のストレージデバイス(図示せず)からインスタンスマネージャ626によってインスタンス690に割り付けられた仮想ドライブのボリュームに一致することに留意されたい。他の実施形態は、インスタンス690を2つのブロックデバイスに接続するためのBIOS以外のインターフェース(例えば、Unified Extensible Firmware Interface(UEFI))を含み得る。
【0077】
実行中、BIOS692(またはUEFI等の他のファームウェア)は、ブートボリューム694をブロックストレージサーバーインスタンスマシンイメージ612Bからロードできる。ブロックストレージサーバーインスタンスマシンイメージ612Bがキー613を使用して暗号化されるとき、ブロックストレージクライアント660は、ロードプロセス中にブロックストレージサーバーインスタンスマシンイメージ612Bを復号化する。いったんロード動作が完了すると、BIOSはブートプロセスを継続して、ブロックストレージサーバーソフトウェアを含むブートボリュームD94からインスタンス690をブートする。いくつかの実施形態では、BIOS692は、ブロックストレージサーバーソフトウェア650をブートする前に、プロキシサーバーインスタンス642に対応するブロックストレージデバイスをデタッチできる。
【0078】
プロキシサーバーインスタンス642を使用して示され及び説明されているが、他の実施形態は、ブロックストレージサーバーインスタンスマシンイメージ612Aから起動されるブロックストレージサーバーインスタンス(図示せず)を使用して、ブロックストレージデバイスをインスタンス690にブロックストレージクライアント660を介して提供できる。BSS606は、起動されるブロックストレージサーバーインスタンスの仮想ドライブまたは仮想ディスクにボリュームを作成し、ブロックストレージサーバーインスタンスのマシンイメージ612Aをボリュームにロードする。ロードプロセス中に、ブロックストレージサーバーインスタンスはプロバイダネットワークキーを使用してマシンイメージを復号化し、オプションでボリューム固有キー(例えば、キー480がボリュームB440を暗号化する方法等)を使用して、ボリュームを暗号化し、これをBSS606によりブロックストレージクライアント660に提供できる。
【0079】
図7は、少なくともいくつかの実施形態による、第2の技術を使用して仮想化ブロックストレージサーバーをブートするための例示的なシステムを示すブロック図である。高レベルで、図7は、ブロックストレージサーバーソフトウェア750を実行する前に、インスタンス790によって実行されるプリブートソフトウェアを介して、インスタンス790をリモートでブートして、ブロックストレージサーバーソフトウェア750を実行する例を示す。具体的には、PSE720のストレージデバイス721は、(例えば、PSEの出荷前に)プリブートインスタンスブートボリューム723がプリロードされる。プリブートインスタンスブートボリューム723は、ブロックストレージサーバープリブートフェーズ798の間にインスタンスでブートして、ブロックストレージサーバーソフトウェアを別のブートボリュームにロードできるソフトウェアを含む。次に、インスタンスは、他のブートボリュームから再起動及びブートして、ブロックストレージサーバーのブートフェーズ799中にブロックストレージサーバーインスタンスを起動できる。
【0080】
円Aに示されるように、BSS606は、インスタンス管理サービス640を用いてブロックストレージサーバーインスタンスの起動を開始し、インスタンスが特定のPSEのBSSのIVN内で起動するべきであることを指定する。この場合も、インスタンス管理サービス640は、ブロックストレージサーバーインスタンス650をホストするPSEのホスト620を識別し、インスタンスを起動するために(例えば、制御プレーントラフィックトンネルを介して)ホストのホストマネージャ722にメッセージを送信する。インスタンスを起動する要求は、ホストマネージャ722のインスタンスマネージャ(図示せず)によって受信される。
【0081】
円Bに示されるように、ホストマネージャ722(またはインスタンスマネージャ)は、ブロックストレージサーバー750を実行するインスタンス790のためにホストのリソースをプロビジョニングする。さらに、ホストマネージャ722は、2つのアタッチされたブロックストレージデバイス(ブロックストレージクライアント(図示せず)によって、プリブートインスタンスブートボリューム723及び仮想ブートボリューム794(上記に説明したブートボリューム694等)に提示されるブロックストレージデバイスインターフェース)をBIOS792A(またはUEFI)に構成し、プリブートインスタンスのブートボリューム723からブートできる。
【0082】
円Cに示されるように、次に、BIOS792Aは、プリブートインスタンスブートボリューム723からのプリブートソフトウェア796のブートを可能にする。プリブートインスタンスブートボリューム723が汎用マシンイメージに基づく場合、ホストマネージャ722は、さらに、円Dに示されるように、プリブートソフトウェア796とプロバイダネットワーク700との間の通信を容易にするために、インスタンス790の構成を更新する必要があり得る。具体的には、ホストマネージャ722は、VNAをインスタンス790にアタッチし、プリブートソフトウェア796に、PSEオブジェクトストア610にアクセスするときに使用する認証情報を提供し、ブートボリューム794にロードされるマシンイメージを復号化するためのキーを提供できる。VNA構成、認証情報、及びキーは、インスタンスを起動するためのインスタンス管理サービス640からの要求の一部として、ホストマネージャ722に渡されている場合がある。
【0083】
円Eに示されるように、いったんインスタンス790が構成され、プリブートソフトウェア796を実行すると、プリブートソフトウェア796は、ブロックストレージサーバーインスタンスマシンイメージ612BをPSEオブジェクトストア610からコピーし、それをブートボリューム794にロードする。ブートボリューム794をロードする一部として、プリブートソフトウェア796は、それが暗号化されていたと仮定して、キー613でブロックストレージサーバーインスタンスマシンイメージ612Bを復号化できる。ホストマネージャ722はブートボリューム794のロード完了を検出できる、またはプリブートソフトウェアはそのロード完了の信号を送ることができる。例えば、プリブートソフトウェアは、ブートボリューム794がロードされているときに、インスタンスの再起動を開始できる。別の例として、ネットワークマネージャ724は、インスタンス790とPSEオブジェクトストア610との間のセッション終了を検出できる(例えば、TCPセッションが閉じられたときに検出する)。
【0084】
円Fに示されるように、ホストマネージャ722は、データ転送中またはいったんデータ転送が完了した後のいずれかに、BIOS792Aを792Bに更新できるまたはそうでなければ再構成できる。係る再構成は、ブートボリュームをプリブートインスタンスブートボリューム723からブートボリューム794に変更することと、プリブートインスタンスブートボリューム723を含むブロックストレージデバイスを除去することとを含む。インスタンス790を再起動する前に、ホストマネージャ722は、さらに、プリブートソフトウェア796によって書き込まれた残りのデータを含み得るインスタンス790にプロビジョニングされたメモリをクリアできる。インスタンス790を再起動すると、BIOS792Bは、ブートボリューム794からブロックストレージサーバー750をブートする。
【0085】
図6及び図7はPSE内でブロックストレージサーバーインスタンスをブートするための例示的な技術を示しているが、他の技術も可能である。例えば、インスタンスマネージャは、起動するインスタンスのプロビジョニングリソースの一部として、PSEのストレージデバイスにボリュームを作成できる。インスタンスを起動する前に、インスタンスマネージャは制御プレーンサービス(例えば、ブロックストレージサービスまたはインスタンス管理サービス)にメッセージを送信して、ボリュームにロードするためにブート可能なスナップショットを要求できる。制御プレーンサービスは、制御プレーントラフィックトンネルを介して、ブート可能なスナップショットをインスタンスマネージャに送信できる。いったんロードされると、インスタンスマネージャは、インスタンスソフトウェアを起動することを可能にする。
【0086】
図8は、少なくともいくつかの実施形態による、ブロックストレージサーバーからプロバイダ基板拡張の追加のコンピュートインスタンスをブートするための例示的なシステムを示すブロック図である。例えば、図6または図7を参照して説明した技術等を使用してブロックストレージサーバーインスタンスがいったん起動されると、その「シード」ブロックストレージサーバーインスタンスは、他のインスタンス(他のブロックストレージサーバーインスタンスを含む)にブートボリュームを提供できる。これは、シードブロックストレージサーバーインスタンスが、PSEの基板相互接続と比較して、プロバイダネットワークとPSEとの間の比較的遅い接続を通じて転送またはホストされるマシンイメージから起動されるPSEのコンテキストで特に役立ち得る。この例では、インスタンス890がPSE888のホスト820Aで起動されている。インスタンス890は、ブロックストレージサーバーソフトウェア850を実行しており、BSSのIVN844内で動作する。さらに、ブロックストレージクライアント860A及び860Bは、BSSのIVN844における通信を可能にするVNA862A及び862Bをアタッチしている。
【0087】
円Aに示されるように、プロバイダネットワーク800のインスタンス管理サービス640は、BSS606が指定されたスナップショットから新しいボリュームを作成することを要求できる。円Bに示されるように、BSS606は、ブロックストレージサーバーインスタンス890に、指定されたスナップショットに基づいてボリュームを作成することを命令できる。いくつかの実施形態では、インスタンス管理サービス640は、ボリュームを暗号化するために、ボリューム固有の暗号化キー(例えば、キー680)を提供し得る。
【0088】
円Cに示されるように、ブロックストレージサーバーインスタンス890は、PSEオブジェクトストア610等のオブジェクトストア810から指定されたスナップショットをフェッチすることによってボリュームを作成できる。図示されていないが、他の実施形態では、オブジェクトストア810は、ボリュームスナップショット及び/またはマシンイメージをキャッシュするために、PSE888のBSSキャッシュインスタンスによってホストされるオブジェクトストアであり得る。BSS606はBSSキャッシュインスタンスを管理し得、カスタマーは、インスタンスを起動するいずれかの要求の前に、特定のスナップショットがキャッシュにロードされることをBSS606に指定できる。このように、ブロックストレージサーバーインスタンス890は、キャッシュされたブートボリュームスナップショットからボリュームを作成でき、プロバイダネットワーク800のオブジェクトストアからブロックストレージサーバーインスタンス890へのデータ転送に関連付けられる遅延を避けることによってPSEのインスタンスのブート時間が劇的に減る。
【0089】
円Cに示されるように、プロバイダネットワーク600のインスタンス管理サービス640は、ブロックストレージサーバーインスタンス890によってホストされるボリュームを、PSE888によってホストされる他のインスタンスにアタッチまたはデタッチするコマンドをPSE888のホストに発行できる。例えば、ボリュームA832にブート可能なスナップショットがロードされ得る。インスタンス管理サービス640は、ボリュームA832に関連付けられるボリューム識別子を使用してインスタンスA830を起動することをホスト820Aに命令できる。それに応答して、ブロックストレージクライアント860Aは、ブロックストレージサーバーインスタンス890によってホストされるボリュームA832を、BSSのIVN844を介してインスタンスA830にアタッチでき、それによって、インスタンスA830がボリュームA832から起動することが可能になる。別の例として、ボリュームB836には、他のデータを含むブート不可能なスナップショットがロードされ得る。インスタンス管理サービス640は、ホスト820Bに、ボリュームB836をホストされるインスタンス834にアタッチすることを命令できる。それに応答して、ブロックストレージクライアント860Bは、ブロックストレージサーバーインスタンス890によってホストされるボリュームB836を、BSSのIVN844を介してインスタンスB834にアタッチできる。
【0090】
図9は、少なくともいくつかの実施形態による、仮想化ブロックストレージサーバーを管理するための例示的なシステムを示すブロック図である。仮想化環境内でブロックストレージサーバーを実行すると、インスタンス管理サービスが必要に応じて実行中のブロックストレージサーバーインスタンスの数を自動的にスケーリングすることを可能にすることを含むいくつかの利点をもたらす。インスタンス管理サービスは、手動で拡張されたベアメタルサーバーの定義済みプールで動作するBSSではなく、ホストリソース(例えば、CPU、メモリ、ネットワーク等)の使用率を監視し、実行中のブロックストレージサーバーインスタンスの数を自動的に調整できる。例えば、ブロックストレージサーバーインスタンスの2つのホストが高いリソース使用率をレポートしている場合、インスタンス管理サービスは、リソース使用率が低いホストで追加のブロックストレージサーバーインスタンスを起動できる。次に、ブロックストレージサービスは新しく起動するインスタンスにボリュームを作成でき、それによって、実行中のブロックストレージサーバーインスタンスのワークロードの増加及び起こり得るパフォーマンスの低下を回避する。
【0091】
さらに、ブロックストレージサーバーをインスタンスとして実行すると、障害ドメインをコンピュータシステム全体から切り離すことにより、障害ドメインの数がホストコンピュータシステムの数を超えることが可能になる。障害ドメインの数が増加すると、固定されたハードウェアセットで実行されるブロックストレージサーバーの数が増加することを可能にし、ブロックストレージサーバーの数が増加すると、いずれかの特定のサーバーによって管理されるデータの全体的なフットプリントが減る。例えば、システムには、より小さな障害ドメインに細分されていない9つのホストコンピュータシステムが含まれていると推定する(つまり、1つのコンピュータシステムには1つの障害ドメインがある)。データロスを回避するために、各ホストまたは障害ドメインは単一のブロックストレージサーバーを実行する。それらの9つのブロックストレージサーバーがインスタンスのボリュームにわたって90テラバイト(TB)のデータ(データリカバリを可能にするエンコードを含む)をホストする場合、各ブロックストレージサーバーは約10TBのデータを記憶するであろう。ホストの1つに障害が発生した場合、(例えば、他の80TBから)その10TBを回復する必要があるだろう。係るデータリカバリには、データの計算、転送、及び記憶のコストがかかる。それらの9つのホストがそれぞれ2つの障害ドメインに細分され、ブロックストレージサーバーの数が18に増加する場合、各ブロックストレージサーバーは約5TBのデータを記憶し、障害ドメインの1つのコンポーネントに障害が発生した場合、回復する必要があるだろうデータ量(及び対応するコスト)を約半分にする。
【0092】
この例では、PSE988またはプロバイダネットワーク900は、3つのホスト920A、920B、及び920Cを含む。ホストのハードウェア設計に応じて、ホストは単一の障害ドメインとして扱うこと、または2つ以上の障害ドメインに細分することのいずれかを行うことができる。ここで、ホスト920はそれぞれ2つの障害ドメインを含む。ホスト920Aは障害ドメイン922及び障害ドメイン924を含み、その結果、ある障害ドメインのコンポーネントは、別の障害ドメイン内のコンポーネントに障害が発生した場合でさえも継続して動作できる。例えば、障害ドメイン922は、第1のメモリバンク(例えば、RAM)に接続され、1つ以上のストレージドライブ(例えば、SSD)の第1のセットを使用するマルチプロセッサシステムの第1のプロセッサに対応し得る一方、障害ドメイン924は、第2のメモリバンクに接続され、1つ以上のストレージドライブの第2のセットを使用するシステムの第2のプロセッサに対応し得る。いくつかのコンポーネントは、電源等の障害ドメインにわたって共有され得るが、この場合も、ハードウェア設計の冗長性と、障害ドメインがハードウェアにどのようにオーバーレイされるかの影響を受けることに留意されたい。
【0093】
ホスト920Aは、障害ドメイン922内でブロックストレージサーバーインスタンス950Aを実行して、障害ドメイン924内でブロックストレージサーバーインスタンス950Bを実行している。ホスト920Bは、障害ドメイン926内でブロックストレージサーバーインスタンス950Cを実行して、障害ドメイン928内でブロックストレージサーバーインスタンス950Fを実行している。ボリュームAは、ブロックストレージサーバーインスタンス950Aによって提供されるプライマリレプリカ660と、ブロックストレージサーバーインスタンス950Bによって提供されるセカンダリレプリカ662とを含む。ボリュームBは、ブロックストレージサーバーインスタンス950Cによって提供されるプライマリレプリカ664と、ブロックストレージサーバーインスタンス950Aによって提供されるセカンダリレプリカ666とを含む。ボリュームCは、ブロックストレージサーバーインスタンス950Bによって提供されるプライマリレプリカ668と、ブロックストレージサーバーインスタンス950Cによって提供されるセカンダリレプリカ670とを含む。ボリュームごとに2つのレプリカがあるように示されるが、実際には、各ボリュームは、より少ない数またはより多い数のレプリカを有し得、各レプリカは、(例えば、ストライピングによって)多くの異なるブロックストレージサーバーインスタンス間で分割され得る。
【0094】
円Aに示されるように、インスタンス管理サービス940は、プロセッサ使用率、メモリ使用率、ストレージ使用率、及びネットワーク使用率等のホストの物理リソースの使用率を監視し、これらは、ホスト全体で集約され得る、障害ドメインによって分離され得る、またはリソースごとであり得る(例えば、インスタンス管理サービス940は、平均CPU使用率が50%であること、障害ドメイン922のプロセッサ(複数可)のCPU使用率が50%であること、または、障害ドメイン922をサポートする特定のプロセッサのCPU使用率が50%であることを示すメトリックをホスト920Aから受信し得る)。インスタンス管理サービス940は、データベース(図示せず)内のホストのリソース使用率を追跡できる。ブロックストレージサーバーインスタンスに加えて、示される障害ドメインは、ホストの物理リソースの利用に寄与する他のインスタンス(例えば、カスタマーインスタンス)をホストできることに留意されたい。インスタンス管理サービス940は、リソース使用率メトリックでBSS906を定期的に更新して、円Bに示されるように、新しいボリュームを作成するときにBSS906がより使用率の低いブロックストレージサーバーインスタンスを選択することを可能にし得る。
【0095】
円Cに示されるように、インスタンス管理サービス940は、ブロックストレージサーバーインスタンスをサポートするホストのリソース使用率が1つ以上の閾値を超えるとき、新しいブロックストレージサーバーインスタンスを起動できる。閾値は、ホストにわたって集計されたリソースごとに(例えば、ブロックストレージサーバーを実行している全てのプロセッサの平均プロセッサ使用率が50%である)、ホストにわたるリソースのいくつかの組み合わせ(例えば、ストレージ使用率が80%を上回り、プロセッサ使用率が50%を上回っている)、または個々のリソース及び/もしくはホストベース等の様々な方法で定義され得る。ブロックストレージサーバーインスタンスを既にホストしている障害ドメインでブロックストレージサーバーインスタンスを起動することを回避するために、インスタンス管理サービス940は、(例えば、リソース使用量メトリックを含むデータベースにおいて)どの障害ドメインが占有され、どれが利用可能であるかを追跡できる。ここで、インスタンス管理サービス940は、ホスト920A、920B、及び/または920Cのリソース使用率がある閾値を超えており、ホスト920Cの以前に占有されていなかった障害ドメイン930及び932で、各々、新しいブロックストレージサーバーインスタンス950D及び950Eを起動していたことを決定した。障害ドメイン928はボリュームをホストしていないブロックストレージサーバー950Fを含むが、その障害ドメイン内でホストされる他のインスタンスのリソース使用率またはホスト920Bの総リソース使用率は、別のブロックストレージサーバーインスタンスをサポートするには高すぎ得る。
【0096】
円Dに示されるように、インスタンス管理サービス940は、BSS906を更新して、動作ブロックストレージインスタンス950(ここで、ブロックストレージサーバー950D及び950Eを含む)の更新された識別情報を提供できる。識別されたブロックストレージインスタンス950及びインスタンス管理サービス940から受信されたリソース使用率メトリックに基づいて、BSS906は、円Eに示されるように、ホスト920Cで新しいボリュームを作成できる。ここで、インスタンス管理サービス940からレポートされるようにホスト920Cのリソース使用率が低いことを示したと仮定して、BSS906は、ブロックストレージサーバーインスタンス950Dによって提供されるプライマリレプリカ670と、ブロックストレージサーバーインスタンス950Eによって提供されるセカンダリレプリカ672とを含む新しいボリュームDを作成する。
【0097】
図10は、少なくともいくつかの実施形態による、ブロックストレージクライアントにボリュームマッピングを提供するための例示的なシステムを示すブロック図である。上記で示唆したように、単一ボリュームは、プライマリレプリカ及びいくつかのセカンダリレプリカ等の複数のレプリカに関連付けられ得る。各レプリカは、いくつかのブロックストレージサーバーにわたって分散され得る。ボリューム、そのレプリカ、及びそのレプリカ(またはレプリカの一部)をホストするサーバーの間の関連付けは、ハードウェア障害が発生するとき、または、バックグラウンドのロードバランシング動作の一部としてサーバー間でデータが移行するとき、時間の経過とともに変更できる。ブロックストレージサーバーをPSEに展開する際、高いデータアベイラビリティ(例えば、障害時に、プライマリレプリカからセカンダリレプリカになる)、高い耐久性(例えば、サーバーに障害が発生した場合にロストデータを再作成するプロセスをすぐに開始する)を維持するために、PSEがプロバイダネットワークから切断されている、またはプロバイダネットワークに到達することが不可能であるときでも、それらの関連付けを変更することが可能であることが好ましい。
【0098】
図示のように、PSE1088は、ブロックストレージサーバーインスタンスにわたってボリュームがどのように分散(またはマッピング)されるかを追跡するコンポーネントを含み、これにより、ブロックストレージクライアントがボリュームにアクセスする必要があるとき、ブロックストレージクライアントはそのボリュームをホストするブロックストレージサーバーを見つけることができる。例示的なボリュームAのマッピングデータ1098は、各エントリについていくつかの項目を含む。その項目として、サーバー識別子(例えば、インスタンスまたはホストハードウェアに関連付けられる一意の識別子)、サーバーアドレス(例えば、IPアドレス)、及びボリュームAのボリュームタイプ(例えば、プライマリまたはセカンダリ)が挙げられる。マッピングデータは、(例えば、レプリカが複数のブロックストレージサーバーインスタンスにわたって分割またはストライプ化される場合)ブロック識別子等の異なる項目または追加項目を含み得る。例示的なボリュームAのマッピングデータ1098は、ボリュームAが、ブロックストレージサーバーインスタンス1050Aによって提供されるプライマリレプリカ1052と、ブロックストレージサーバーインスタンス950B及び1050Cによって各々提供される2つのセカンダリレプリカ1054及び1056とを含むことを示す。PSE1088は、他の多くのブロックストレージサーバーインスタンス(図示せず)をホストでき、おそらくホストすることに留意されたい。
【0099】
ボリュームマッピングデータ1098を確実に記憶するために、分散データストア1064はボリュームマッピングデータ1098を記憶できる。いくつかの実施形態では、各分散データストアは、ボリュームマッピング(複数可)の状態を別々に維持するノードのクラスターに対応する。クラスターの各ノードは、クラスターの他のノードとメッセージを交換して、他のクラスターノードから見た状態に基づいてその状態を更新する。クラスターのノードの1つは、ボリュームマッピングへの変更が提案されるリーダーまたはプライマリノードとして指定され得る。クラスターのノードは、Paxosプロトコル等のコンセンサスプロトコルを実装して、所与のボリュームのボリュームマッピングデータへの変更を提案及び合意できる。クラスターは、1つ以上のボリュームのボリュームマッピングデータを追跡し得る。図示のように、クラスター1066はボリュームAのボリュームマッピングデータ1098を追跡する一方、他のクラスター1067は他のボリュームのボリュームマッピングデータを追跡する。
【0100】
いくつかの実施形態では、クラスターのノードは、プロバイダネットワークのホストによって実行されるインスタンスである。係るインスタンスは、ボリュームマッピングデータの個々のビューをホストの不揮発性ストレージに(例えば、ブロックストレージクライアントを介して、ブロックストレージサーバーインスタンスによってホストされるボリュームに)永続化する。他の実施形態では、クラスターのノードは、ブロックストレージサーバーインスタンスによって実行されるブロックストレージサーバーソフトウェアの一部である。例示的なノードソフトウェア環境1090に示されるように、ノードは、ブロックストレージサーバーソフトウェア1080に含まれるコンテナエンジンプロセス内でホストされるコンテナ1082として実行できる。係るノードは、ボリュームマッピングデータのビューを、ブロックストレージサーバーソフトウェアによって提供されるボリュームに直接永続化できる。好ましくは、クラスターのノードは、別個のインスタンスによって、または別個の障害ドメイン内でホストされる。
【0101】
PSEのホストによって実行される他のソフトウェアと同様に、ノードはハードウェア障害の影響を受ける。係る場合、残りのノード(またはプロバイダネットワークのブロックストレージサービス)は、ノードの損失を検出し、新しいノードを作成し、損失したノードを交換して、他のノードのボリュームマッピングデータのコンセンサスビューに基づいて新しいノードのボリュームマッピングデータを更新できる。結果として、ボリュームマッピングデータを変更できるだけでなく、クラスターのノードをホストしているインスタンスのIDも変更できる。クラスターマッピングデータを使用して、クラスターを追跡できる。例示的なクラスターマッピングデータ1099は、ノード識別子(例えば、VOL_A_NODE1)、ノードアドレス(例えば、IPアドレス)、及びノードタイプ(例えば、リーダーノード)等のいくつかの項目を含む。この例では、クラスターは5つのノードで形成される。
【0102】
クラスターマッピングデータは、クラスターディスカバリーサービス1062によって決定及び維持できる。円Aに示されるように、クラスターディスカバリーサービス1062は、PSE内のブロックストレージサーバーインスタンスによってホストされる様々なボリュームのクラスターのノードの場所を監視できる。クラスターディスカバリーサービス1062は、様々な方法でノードの場所を監視できる。例えば、ノードが環境1090で実行される実施形態では、クラスターディスカバリーサービス1062は、PSE1088によってホストされるブロックストレージサーバーインスタンス1050の全てを定期的にポーリングして、いずれかの常駐ノードのアイデンティティを取得できる。別の例として、PSE1088のホストのネットワークマネージャは、特別なブロードキャストメッセージをホストされるクラスターノードのいずれかにルーティングするように構成され得る(例えば、ブロックストレージサーバーインスタンス等によって直接的または間接的にホストされる)。クラスターディスカバリーサービス1062は、定期的にクエリをブロードキャストして、ホストされるクラスターノードのいずれかのアイデンティティを取得できる。
【0103】
いくつかの実施形態では、クラスターディスカバリーサービス1062は、PSE1088のホストのうちの1つによってホストされるインスタンスである。係るインスタンスはBSSのIVN1052内に予約済みのIPアドレスを伴うVNAを有し得るため、それはハードウェア障害が原因でホストを変更する必要がある場合でも到達できる。他の実施形態では、クラスターディスカバリーサービス1062は、PSEのDNSサービスに統合できる。例えば、ボリュームクラスターをドメインに関連付けでき、DNSサービスは、その名前に対する名前解決要求を、クラスターの1つ以上のノードのIPアドレスに対して解決できる。
【0104】
円Bに示されるように、インスタンス管理サービス1040は、特定のホストのブロックストレージクライアント1060にメッセージを送信して、ホストされるインスタンス(図示せず)にボリュームをアタッチできる。例えば、インスタンス管理サービス1040は、ボリュームAのインスタンス識別子及びボリューム識別子を含むメッセージをホストに送信できる。円Cに示されるように、ブロックストレージクライアント1060は、クラスターディスカバリーサービス1062にクエリを行って、ボリュームAのクラスター1066の1つ以上のノードのアイデンティティを取得できる。いくつかの実施形態では、ブロックストレージクライアント1060は、クラスターマッピングデータをクラスターマッピングデータキャッシュ1066にキャッシュできる。いくつかの実施形態では、クラスターディスカバリーサービス1062は省略され得、ブロックストレージクライアント1060は、PSE1088のブロックストレージサーバーインスタンスに(例えば、上記に説明したブロードキャストメカニズムによって)クエリを行い、ボリュームAのクラスター1066のノードを識別するように構成することに留意されたい。
【0105】
円Dに示されるように、ブロックストレージクライアント1060は、クラスター1066からボリュームAのボリュームマッピングデータの現在のビューを取得し、ボリュームマッピングデータに基づいて、円Eに示されるように、ボリュームAをホストするブロックストレージサーバー1050に接続できる。図示されていないが、いくつかの実施形態では、クライアントから接続要求を受信すると、ブロックストレージサーバーは、ブロックストレージサーバーがまだそのボリューム(または少なくともボリュームの一部)をホストしているかどうかを示すメッセージをボリュームクラスターに送信できる。ブロックストレージクライアントから接続要求を受信したにもかかわらず、ブロックストレージサーバーは様々な理由でボリュームをホストし得ない。例えば、ボリュームをホストしているサーバーのセットに対する最近の変更が、ボリュームクラスターに、もしくはボリュームクラスターを経由してまだ伝播されていない場合がある、または接続要求を送信するブロックストレージクライアントが、古いキャッシュボリュームマッピングデータに依存している場合がある。ブロックストレージサーバーがボリュームをホストしているかどうかに関係なく、クライアントから接続要求を受信するブロックストレージサーバーは、クラスターディスカバリーサービス1062からボリュームの1つ以上のノードのアイデンティティを取得できる。ブロックストレージサーバーがボリュームをホストしなくなった場合、ブロックストレージサーバーは、クラスターによって維持されるデータストアの更新を提案して、ブロックストレージサーバーをボリュームマッピングデータから除去できる。さらに、ブロックストレージサーバーは、要求を開始したブロックストレージクライアントに応答を送信して、接続の試行が失敗したことを示し得、オプションで、ボリュームがサーバーによってホストされなくなったことを示す。ブロックストレージサーバーがまだボリュームをホストしている場合、ブロックストレージサーバーはクラスターに確認応答を送信して、マッピングデータの少なくともその部分がまだ有効であることをクラスターに示すことができる。
【0106】
図11は、少なくともいくつかの実施形態による、ボリュームマッピングを追跡するための例示的なシステムを示すブロック図である。上記に説明したように、PSEとプロバイダネットワークとの間の接続は保証できない。データアベイラビリティ及びデータ耐久性の所望のレベルを満たすために、PSEは、所与のボリュームと、そのボリュームをホストするブロックストレージサーバーインスタンスとの間のマッピングを変更することを可能にするファシリティを含む。図10を参照して説明したように、所与のボリュームのボリュームは、分散データストアを実装するクラスターを使用して追跡できる。図11は、ボリューム配置への段階的アプローチ、またはボリュームのレプリカもしくはレプリカの一部をホストするためにブロックストレージサーバーインスタンスを選択するプロセスを示す。具体的には、BSS1106のBSSボリューム配置サービス1107は、ボリュームの作成時に初期配置決定及び関連するボリュームマッピングを行い、PSEボリューム配置サービス1108は、ボリュームの存続期間にわたってボリュームマッピングへの後続の変更を管理する。PSEボリューム配置サービス1108は、PSEフレームワーク(例えば、PSEフレームワーク202)のコンポーネントとして統合されたPSE1188によってホストされるインスタンス等によって様々な方法で実装できる。
【0107】
円Aに示されるように、PSEボリューム配置サービス1108は、PSE1188によってホストされるブロックストレージサーバーインスタンスのステータスを監視する。例えば、PSEボリューム配置サービス1108は、ホストされるブロックストレージサーバーインスタンスを定期的にポーリングして、その応答があるかどうかをチェックできる、ならびに/または(例えば、図9を参照して説明したような)ホストされるブロックストレージサーバーインスタンスのリソース使用量、その障害ドメイン、及び/もしくはホストに関連するメトリックを収集できる。図示のように、PSEボリューム配置サービス1108は、円Bに示されるように、収集されたサーバーステータスをBSSボリューム配置サービス1107に送信できる。他の実施形態では、BSSボリューム配置サービス1107は、(図9を参照して説明したような)インスタンス管理サービスからリソース使用率に関連するメトリックを取得し得ることに留意されたい。
【0108】
PSE1188によってホストされるインスタンスのために新しいブロックストレージボリュームを作成する要求を受信すると、BSS1106は、BSS配置サービス1107からボリューム配置推奨を要求できる。新しいボリュームのプロファイル(例えば、レプリカの数、ストライプとしてのレプリカかどうか等)に応じて、BSS配置サービス1107は、推奨されるブロックストレージサーバーインスタンスの識別情報を提供できる。この例では、BSS配置サービス1107は、ブロックストレージサーバーインスタンス1150A及び1150Bに、2つのレプリカを有する新しいボリュームAをホストすることを推奨する。推奨されるブロックストレージサーバーインスタンスを採用して、BSS1106は新しいクラスター1166を作成し、円Cに示されるようにボリュームAのボリュームマッピングデータを追跡する。マッピングデータは、最初に、ブロックストレージサーバーインスタンス1150Aを、プライマリレプリカブロックをホストするものとして識別し、ストレージサーバーインスタンス1150Bを、セカンダリレプリカをホストするものとして識別する。さらに、BSS1106は、1つ以上のメッセージを識別されたブロックストレージサーバーに送信して、円Dに示されるように、ストレージボリューム(例えば、ブロックストレージサーバーインスタンス1150Aによってホストされるストレージボリューム及びブロックストレージサーバーインスタンス1150Bによってホストされるストレージボリューム)を作成する。ストレージボリュームは、各々のブロックストレージサーバーインスタンスにプロビジョニングされた基盤となるホストストレージデバイスの容量によってバックアップできる。ブロックストレージサーバーインスタンス1150Aで作成されたストレージボリュームは、ボリュームAのプライマリレプリカ1152をホストでき、ブロックストレージサーバーインスタンス1150Bで作成されたストレージボリュームは、ボリュームAのセカンダリレプリカ1154Aをホストできる。いくつかの実施形態では、図8を参照して説明したようなボリュームスナップショットまたはマシンイメージから新しく作成されたストレージボリュームをロードできる。この例では、ボリュームAにアタッチされたインスタンス(図示せず)はしばらくの間ブロックストレージ操作を実行して、(例えば、円Eに示されるように、プライマリレプリカ1152からセカンダリレプリカ1154Bに書き込みを伝播するために)ブロックストレージサーバーインスタンス1150Aがブロックストレージサーバーインスタンス1150Bと通信する。
【0109】
ある時点で、ブロックストレージサーバーインスタンス1150Bは、円Fに示されるように、問題を経験し得る。例えば、ブロックストレージサーバーインスタンス1150Bは(例えば、メモリリーク、ハードウェア障害等が原因で)遅延し得る、または応答しなくなり得る。問題の検出は様々な方法で発生する可能性がある。いくつかの実施形態では、ブロックストレージサーバーインスタンス1150Aは、伝播された書き込みの確認の失敗等が原因の問題を検出する。係る場合、ブロックストレージサーバーインスタンス1150Aは、検出された問題に応答して実行するための1つ以上のアクションを含むポリシーを含み得る。例えば、ブロックストレージサーバーインスタンス1150Aは、いくつかの連続する伝播された書き込みが確認応答されなくなるのを待機し得る、または一定期間待機し得る。その時点で、ブロックストレージサーバーインスタンス1150Aは、PSEボリューム配置サービス1108からのセカンダリレプリカ1154の交換用ブロックストレージサーバーインスタンスを要求できる。他の実施形態では、PSEボリューム配置サービス1108は、円Aを参照して上記に説明した監視中に(例えば、収集されたメトリックまたは応答性に基づいて)問題を検出する。この場合も、PSEボリューム配置サービス1108は、セカンダリレプリカ1154のブロックストレージサーバーインスタンスの交換を開始することを含む検出された問題に応答して実行するための1つ以上のアクションを含むポリシーを含み得る。検出器に関係なく、PSEボリューム配置サービス1108は、ブロックストレージサーバーインスタンス1150Aに、交換用ブロックストレージサーバーインスタンスのアイデンティティを提供する。
【0110】
この例では、PSEボリューム配置サービス1108は、円Gに示されるように、ブロックストレージサーバーインスタンス1150Cをブロックストレージサーバーインスタンス1150Aに識別する。メッセージがブロックストレージサーバーインスタンス1150Cに送信され、再配置されているレプリカデータをバックアップするストレージボリュームが作成される。例えば、ブロックストレージサーバーインスタンス1150Cを識別すると、PSEボリューム配置サービス1108はブロックストレージサーバーインスタンス1150Cにメッセージを送信して、ストレージボリュームを作成できる。別の例として、ブロックストレージサーバーインスタンス1150Aは、PSEボリューム配置サービス1108から識別情報を受信すると、ストレージボリュームを作成するためのメッセージを送信できる。いったん作成されると、ブロックストレージサーバーインスタンス1150Aは、円Hに示されるように、レプリカ1154Bとして、ブロックストレージサーバーインスタンス1150Cへのレプリカ1152のミラーリングを開始できる。ブロックストレージサーバーインスタンス1150Bの応答性がある場合(しかし、例えば、低性能を示している場合)、ミラーリング動作はレプリカ1154Aをレプリカ1154Bにコピーすることによって実行できることに留意されたい。レプリカ1154またはレプリカ1152のいずれかからの再ミラーリングは、それらのレプリカがストレージサーバー間で分散されないため、このシナリオで実行可能であるが、他の実施形態では、レプリカが分散される様々なストレージサーバーにアクセスして、記憶されたデータにエンコードされた冗長性等(例えば、パリティビット、エラー訂正コード等)を使用することによって、ロストデータを再作成するまたはそうでなければ生成する必要があり得る。例えば、レプリカデータがエンコードされて10個のブロックストレージサーバーインスタンスにわたって分散され、その10個のうちの1つが失われた場合、残りの9個のブロックストレージサーバーインスタンスからレプリカに関連付けられるデータを読み取ることによって、ロストデータを再作成できる。別の例として、別の10個のブロックストレージサーバーが同じ分散パターンを使用してボリュームの別のレプリカをホストする場合、ロストデータは、他のレプリカの対応する部分をホストするブロックストレージサーバーインスタンスからコピーできる。
【0111】
円Iに示されるように、ブロックストレージサーバーインスタンス1150Aは、ボリュームAのボリュームマッピングを更新する要求をクラスター1166にサブミットして、ブロックストレージサーバーインスタンス1150Bを、セカンダリレプリカのホストとしてのブロックストレージサーバーインスタンス1150Cに交換できる。ブロックストレージサーバーインスタンス1150Aは、ブロックストレージサーバーインスタンス1150Cへの再ミラーリングを開始または完了すると、クラスター1166に要求をサブミットし得る。他の実施形態では、別のエンティティ(PSEボリューム配置サービス1108またはブロックストレージサーバーインスタンス1150C等)は、ボリュームAのボリュームマッピングを更新する要求を、クラスター1166にサブミットし得る。
【0112】
図12は、少なくともいくつかの実施形態による、仮想化ブロックストレージサーバーを起動するための方法の動作を示すフロー図である。一部または全ての動作(もしくは本明細書で説明する他のプロセス、もしくは変形形態、及び/またはそれらの組合せ)は、実行可能命令で構成される1つ以上のコンピュータシステムの制御下で行われ、ハードウェアまたはその組合せにより1つ以上のプロセッサでまとめて実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装される。コードは、例えば、1つ以上のプロセッサによって実行可能な命令を含むコンピュータプログラムの形式で、コンピュータ可読ストレージ媒体に記憶される。コンピュータ可読ストレージ媒体は非一時的である。いくつかの実施形態では、1つ以上(または全て)の動作は、プロバイダネットワークの拡張機能の1つ以上のコンポーネントによって実行されるコンピュータプログラムまたはアプリケーションによって実行される。プロバイダネットワークの拡張機能は1つ以上の物理コンピューティングデバイスまたはシステムを含み、プロバイダネットワークのカスタマーの構内等、プロバイダネットワークのデータセンターからリモートに(例えば、データセンターネットワークの外側に)配置される。クラウドプロバイダネットワーク等のプロバイダネットワークは、プロバイダネットワークのデータセンター内に配置されるコンピュータシステムによって実行される様々なサービスを含む。拡張機能の1つ以上のコンポーネントは、プロバイダネットワークのコンピュータシステムによって実行されるサービスから管理操作等を受信することによって、プロバイダネットワークと通信する。いくつかの実施形態では、1つ以上(または全て)の操作は、他の図のホスト(例えば、ホスト420A)のコンポーネントによって行われる。
【0113】
ブロック1205において、操作は、プロバイダネットワークの拡張機能のコンピュータシステムによって、第1の仮想マシンを起動する第1の要求を受信して、ブロックストレージサーバーアプリケーションをホストすることを含み、プロバイダネットワークの拡張機能は、少なくともサードパーティネットワークを介してプロバイダネットワークと通信する。ブロックストレージデバイスをPSEによってホストされるインスタンスに提供する際、PSEのホストによって提供される仮想化を使用して、ブロックストレージサーバーをホストできる。例えば、プロバイダネットワークのブロックストレージサービスは、インスタンス管理サービスによってブロックストレージサーバー仮想マシンの起動を開始でき、次に、インスタンス管理サービスは、プロバイダネットワークとPSEとの間の安全な通信チャネルを介して、起動要求をPSEの選択されたホストのホストマネージャに発行できる。
【0114】
操作は、さらに、ブロック1210において、ホストコンピュータシステムの1つ以上のストレージデバイスのストレージ容量の少なくとも一部を、プロビジョニングされるストレージデバイスとして第1の仮想マシンにプロビジョニングすることを含む。仮想マシンの起動の一部として、ホストシステムのホストマネージャは、ホストシステムのコンピューティングリソースの一部を仮想マシンに割り付けできる、またはプロビジョニングできる。係るリソースは、例えば、ホストシステムのストレージデバイス(例えば、SSD)のストレージ容量、メモリ容量(例えば、RAM)、プロセッサまたはプロセッサコア等を含み得る。
【0115】
ブロック1215において、操作は、さらに、ブロックストレージサーバーアプリケーションを第1の仮想マシンで実行することを含む。ブロックストレージサーバーアプリケーションを実行する一部として、ブロック1220において、操作は、さらに、プロバイダネットワークのブロックストレージサービスからの第2の要求に応答して、プロビジョニングされたストレージデバイスに論理ボリュームを作成し、論理ボリュームを作成することを含む。例えば、プロバイダネットワークのブロックストレージサービスは、1つ以上のメッセージを送信して、他のインスタンスにアタッチできる(プロビジョニングされたストレージ容量を使用して)ボリュームを作成でき、その結果、インスタンスがブロックストレージインターフェースを介してボリュームにアクセスできる。
【0116】
ブロックストレージサーバーアプリケーションを実行する一部として、ブロック1225において、操作は、さらに、論理ボリュームで入出力操作を行うための第3の要求を受信することと、ブロック1230において、論理ボリュームで要求された入出力の操作を行うこととを含む。例えば、図4を参照すると、インスタンスA430は、インスタンスにアタッチされ、ブロックストレージボリュームA434によってバックアップされた仮想ブロックデバイスのブロックアドレスからデータのブロックを読み取るコマンドを発行できる。ブロックストレージサーバーインスタンス450は、そのコマンドを(例えば、BSSのIVN452を介して)受信して、ブロックストレージボリュームA434に対してそれを処理できる。例えば、図5を参照すると、インスタンスB436は、インスタンスにアタッチされ、ブロックストレージボリュームB440によってバックアップされた仮想ブロックデバイスのブロックアドレスにデータのブロックを書き込むコマンドを発行できる。ブロックストレージサーバーインスタンス450は、そのコマンドを(例えば、BSSのIVN452を介して)受信して、ブロックストレージボリュームA440に対してそれを処理できる。
【0117】
図13は、少なくともいくつかの実施形態による、仮想化ブロックストレージサーバーを使用するための方法の動作を示すフロー図である。一部または全ての動作(もしくは本明細書で説明する他のプロセス、もしくは変形形態、及び/またはそれらの組合せ)は、実行可能命令で構成される1つ以上のコンピュータシステムの制御下で行われ、ハードウェアまたはその組合せにより1つ以上のプロセッサでまとめて実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装される。コードは、例えば、1つ以上のプロセッサによって実行可能な命令を含むコンピュータプログラムの形式で、コンピュータ可読ストレージ媒体に記憶される。コンピュータ可読ストレージ媒体は非一時的である。いくつかの実施形態では、1つ以上(または全て)の動作は、プロバイダネットワークの拡張機能の1つ以上のコンポーネントによって実行されるコンピュータプログラムまたはアプリケーションによって実行される。プロバイダネットワークの拡張機能は1つ以上の物理コンピューティングデバイスまたはシステムを含み、プロバイダネットワークのカスタマーの構内等、プロバイダネットワークのデータセンターからリモートに(例えば、データセンターネットワークの外側に)配置される。クラウドプロバイダネットワーク等のプロバイダネットワークは、プロバイダネットワークのデータセンター内に配置されるコンピュータシステムによって実行される様々なサービスを含む。拡張機能の1つ以上のコンポーネントは、プロバイダネットワークのコンピュータシステムによって実行されるサービスから管理操作等を受信することによって、プロバイダネットワークと通信する。いくつかの実施形態では、1つ以上(または全て)の操作は、他の図のホスト(例えば、ホスト420A)によって行われる。
【0118】
ブロック1305において、操作は、コンピュータシステムによって、コンピュータシステムの1つ以上のストレージデバイスを使用して第1のボリュームをホストするための第1のブロックストレージサーバー仮想マシンを実行することを含む。図4に示されるように、例えば、ホスト420Aは、仮想マシン(すなわち、ブロックストレージサーバーインスタンス450)をホストしている。ブロック1310において、操作は、さらに、コンピュータシステムによって、仮想ブロックストレージデバイスにアクセスできる第2の仮想マシンを実行することを含む。ホスト420Aは、また、別の仮想マシン(すなわち、インスタンス430)をホストしている。ブロック1315において、操作は、さらに、コンピュータシステムによって、ブロックストレージクライアントを実行することを含む。ホスト420Aはブロックストレージクライアント460Aを含み、これは、ホストされる仮想マシンへのブロックストレージデバイスのアタッチを容易にできる。ブロックストレージクライアントを実行する一部として、ブロック1320において、操作は、さらに、第2の仮想マシンから、仮想ブロックストレージデバイスで行う第1のブロックストレージ操作を受信することと、ブロック1325において、メッセージを送信して、第1のブロックストレージサーバー仮想マシンに、第1のブロックストレージサーバー仮想マシンに第1のボリュームで第1のブロックストレージ操作を行わせることとを含む。仮想マシンは、ブロックストレージクライアントを介してアタッチされたストレージデバイスをブロックするブロックストレージ操作(例えば、ブロックの読み取り、書き込み、バーストの読み取り、書き込み等)を発行できる。ブロックストレージクライアントは、例えば、それらのブロックストレージ操作を、ネットワーク全体でブロックアドレスを含むボリュームをホストするブロックストレージサーバーに中継できる。
【0119】
図14は、少なくともいくつかの実施形態による、プロバイダ基板拡張における仮想化ブロックストレージサーバーを管理するための方法の動作を示すフロー図である。一部または全ての動作(もしくは本明細書で説明する他のプロセス、もしくは変形形態、及び/またはそれらの組合せ)は、実行可能命令で構成される1つ以上のコンピュータシステムの制御下で行われ、ハードウェアまたはその組合せにより1つ以上のプロセッサでまとめて実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装される。コードは、例えば、1つ以上のプロセッサによって実行可能な命令を含むコンピュータプログラムの形式で、コンピュータ可読ストレージ媒体に記憶される。コンピュータ可読ストレージ媒体は非一時的である。いくつかの実施形態では、1つ以上(または全て)の動作は、プロバイダネットワークの拡張機能の1つ以上のコンポーネントによって実行されるコンピュータプログラムまたはアプリケーションによって実行される。プロバイダネットワークの拡張機能は1つ以上の物理コンピューティングデバイスまたはシステムを含み、プロバイダネットワークのカスタマーの構内等、プロバイダネットワークのデータセンターからリモートに(例えば、データセンターネットワークの外側に)配置される。クラウドプロバイダネットワーク等のプロバイダネットワークは、プロバイダネットワークのデータセンター内に配置されるコンピュータシステムによって実行される様々なサービスを含む。拡張機能の1つ以上のコンポーネントは、プロバイダネットワークのコンピュータシステムによって実行されるサービスから管理操作等を受信することによって、プロバイダネットワークと通信する。いくつかの実施形態では、1つ以上(または全て)の操作は、他の図のPSE(例えば、PSE1088、PSE1188)のコンポーネントによって行われる。
【0120】
ブロック1405において、操作は、第1のブロックストレージサーバーインスタンスによって第1の要求を受信して、第1のストレージボリュームを作成し、第1の論理ボリュームの第1の部を記憶することと、ブロック1410において、第2のブロックストレージサーバーインスタンスによって第2の要求を受信して、第2のストレージボリュームを作成し、第1の論理ボリュームの第2の部を記憶することとを含む。図11に示されるように、例えば、ボリューム(例えば、レプリカ、ストライプ化されたレプリカ等)の初期配置は、プロバイダネットワークのブロックストレージサービス1106から発信され、PSE1188のコンポーネントによって受信できる。図11に示される例では、ボリュームAは、PSE1188のホストでブロックストレージサーバーインスタンス1150A及び1150Cを使用して最初に記憶される。
【0121】
ブロック1415において、操作は、さらに、第3の要求を第3のブロックストレージサーバーインスタンスに送信して、第3のストレージボリュームを作成し、第1の論理ボリュームの第2の部を記憶することを含む。ある時点で、ボリュームの一部をホストするブロックストレージサーバーインスタンスを変更する必要があり得る。本明細書で説明するように、PSEボリューム配置サービス1108またはボリュームをホストする他のブロックストレージサーバーインスタンスの1つは、別のブロックストレージサーバーインスタンスにメッセージを送信して、変更されているインスタンスを交換できる。
【0122】
ブロック1420において、操作は、さらに、第3のブロックストレージサーバーインスタンスによって、第1の論理ボリュームの第2の部を第3のストレージボリュームに記憶することを含む。ブロック1425において、操作は、さらに、第1の論理ボリュームの一部をホストする各ブロックストレージサーバーインスタンスの識別情報を含むデータストアを更新して、第2のブロックストレージサーバーインスタンスの識別情報を除去し、第3のブロックストレージサーバーインスタンスの識別情報を追加することを含む。インスタンスにわたってボリュームの移行を追跡するために、PSE1188は、ボリューム(もしあれば、レプリカ、サーバーにわたるストライピング等を含む)をマッピングするデータストアをホストできる。係るデータストアは、図10を参照して説明したようなクラスターであり得る。
【0123】
図15は、少なくともいくつかの実施形態による、例示的なプロバイダネットワーク(または「サービスプロバイダシステム」)環境を示す。プロバイダネットワーク1500は1つ以上の仮想化サービス1510を介してカスタマーにリソース仮想化を提供し得、仮想化サービス1510は、カスタマーが、1つ以上のデータセンターの1つ以上の単数のプロバイダネットワークまたは複数のプロバイダネットワーク内のデバイスに実装された仮想化リソース(限定ではないが、計算リソース及びストレージリソースを含む)のインスタンス1512を購入、レンタル、または取得することを可能にする。ローカルインターネットプロトコル(IP)アドレス1516は、リソースインスタンス1512に関連付けられ得る。ローカルIPアドレスは、プロバイダネットワーク1500のリソースインスタンス1512の内部ネットワークアドレスである。いくつかの実施形態では、プロバイダネットワーク1500は、また、カスタマーがプロバイダ1500から取得し得るパブリックIPアドレス1514及び/またはパブリックIPアドレス範囲(例えば、インターネットプロトコルバージョン4(IPv4)またはインターネットプロトコルバージョン6(IPv6)アドレス)を提供し得る。
【0124】
従来、プロバイダネットワーク1500は、仮想化サービス1510を介して、サービスプロバイダのカスタマー(例えば、1つ以上のカスタマーデバイス(複数可)1552を含む1つ以上のクライアントネットワーク1550A~1550Cを運用するカスタマー)が、カスタマーに割り当てられたまたは割り付けられた少なくともいくつかのパブリックIPアドレス1514を、カスタマーに割り当てられた特定のリソースインスタンス1512に動的に関連付けることを可能にし得る。プロバイダネットワーク1500は、また、カスタマーが、カスタマーに割り付けられた1つの仮想化コンピューティングリソースインスタンス1512に以前にマッピングされたパブリックIPアドレス1514を、同様にカスタマーに割り付けられた別の仮想化コンピューティングリソースインスタンス1512に再マッピングすることを可能にし得る。サービスプロバイダによって提供される仮想化コンピューティングリソースインスタンス1512及びパブリックIPアドレス1514を使用して、カスタマーネットワーク(複数可)1550A~1550Cのオペレータ等のサービスプロバイダのカスタマーは、例えば、カスタマー固有のアプリケーションを実装し、インターネット等の中間ネットワーク1540のカスタマーのアプリケーションを提示し得る。次に、中間ネットワーク1540の他のネットワークエンティティ1520は、カスタマーネットワーク(複数可)1550A~1550Cによって公開された宛先パブリックIPアドレス1514へのトラフィックを生成し得る。トラフィックはサービスプロバイダデータセンターにルーティングされ、データセンターにおいて、ネットワーク基板を介して、宛先パブリックIPアドレス1514に現在マッピングされている仮想化コンピューティングリソースインスタンス1512のローカルIPアドレス1516にルーティングされる。同様に、仮想化コンピューティングリソースインスタンス1512からの応答トラフィックは、ネットワーク基板を介して中間ネットワーク1540にルーティングされて、ソースエンティティ1520に戻され得る。
【0125】
本明細書で使用される場合、ローカルIPアドレスは、例えば、プロバイダネットワークにおけるリソースインスタンスの内部または「プライベート」ネットワークアドレスを指す。ローカルIPアドレスは、インターネットエンジニアリングタスクフォース(IETF)のRequest for Comments(RFC)1918によって予約されたアドレスブロック内にあり得、及び/またはIETF RFC 4193によって指定されたアドレス形式のものであり得、プロバイダネットワーク内で変更可能であり得る。プロバイダネットワークの外側から発信されたネットワークトラフィックは、ローカルIPアドレスに直接ルーティングされない。代わりに、トラフィックはリソースインスタンスのローカルIPアドレスにマッピングされるパブリックIPアドレスを使用する。プロバイダネットワークは、パブリックIPアドレスからローカルIPアドレスに(またはその逆も同様に)マッピングを行うために、ネットワークアドレス変換(NAT)または同様の機能を提供するネットワークデバイスまたはアプライアンスを含み得る。
【0126】
パブリックIPアドレスは、サービスプロバイダまたはカスタマーのいずれかによってリソースインスタンスに割り当てられるインターネット可変ネットワークアドレスである。パブリックIPアドレスにルーティングされたトラフィックは、例えば、1:1のNATによって変換され、リソースインスタンスの各々のローカルIPアドレスに転送される。
【0127】
いくつかのパブリックIPアドレスは、プロバイダネットワークインフラストラクチャによって特定のリソースインスタンスに割り当てられ得る。これらのパブリックIPアドレスは、標準パブリックIPアドレスまたは単なる標準IPアドレスと称され得る。いくつかの実施形態では、リソースインスタンスのローカルIPアドレスへの標準IPアドレスのマッピングは、全てのリソースインスタンスタイプのデフォルトの起動構成である。
【0128】
少なくともいくつかのパブリックIPアドレスは、プロバイダネットワーク1500のカスタマーに割り付けられ得る、またはそのカスタマーによって取得され得る。次に、カスタマーはその割り付けられたパブリックIPアドレスを、カスタマーに割り付けられた特定のリソースインスタンスに割り当て得る。これらのパブリックIPアドレスは、カスタマーパブリックIPアドレスまたは単にカスタマーIPアドレスと称され得る。標準IPアドレスの場合のようにプロバイダネットワーク1500によってリソースインスタンスに割り当てられる代わりに、カスタマーIPアドレスは、例えば、サービスプロバイダによって提供されるAPIを介して、カスタマーによってリソースインスタンスに割り当てられ得る。標準IPアドレスとは異なり、カスタマーIPアドレスはカスタマーアカウントに割り付けられ、必要に応じてまたは所望に応じて、各々のカスタマーによって他のリソースインスタンスに再マッピングできる。カスタマーIPアドレスは、特定のリソースインスタンスではなく、カスタマーのアカウントに関連付けられ、カスタマーがそのIPアドレスを解除することを選択するまで、そのIPアドレスを制御する。従来の静的IPアドレスとは異なり、カスタマーIPアドレスは、カスタマーのパブリックIPアドレスをカスタマーのアカウントに関連付けられるいずれかのリソースインスタンスに再マッピングすることによって、カスタマーがリソースインスタンスまたはアベイラビリティゾーンの障害をマスクすることを可能にする。例えば、カスタマーIPアドレスは、カスタマーIPアドレスを交換用のリソースインスタンスに再マッピングすることによって、カスタマーのリソースインスタンスまたはソフトウェアの問題をうまく処理することが可能になる。
【0129】
図16は、少なくともいくつかの実施形態による、ストレージサービス及びハードウェア仮想化サービスをカスタマーに提供する例示的なプロバイダネットワークのブロック図である。ハードウェア仮想化サービス1620は、複数の計算リソース1624(例えば、VM)をカスタマーに提供する。計算リソース1624は、例えば、プロバイダネットワーク1600のカスタマー(例えば、カスタマーネットワーク1650を実装するカスタマー)にレンタルまたはリースされ得る。計算リソース1624のそれぞれは1つ以上のローカルIPアドレスが提供され得る。プロバイダネットワーク1600は、計算リソース1624のローカルIPアドレスからパブリックインターネット宛先に及びパブリックインターネットソースから計算リソース1624のローカルIPアドレスに、パケットをルーティングするように構成され得る。
【0130】
プロバイダネットワーク1600は、例えば、ローカルネットワーク1656を介して中間ネットワーク1640に結合されるカスタマーネットワーク1650に、中間ネットワーク1640及びプロバイダネットワーク1600に結合されるハードウェア仮想化サービス1620を介して仮想コンピューティングシステム1692を実装する能力を提供し得る。いくつかの実施形態では、ハードウェア仮想化サービス1620は、1つ以上のAPI1602、例えば、ウェブサービスインターフェースを提供し得、それを介して、カスタマーネットワーク1650は、例えば、コンソール1694(例えば、ウェブベースのアプリケーション、スタンドアロンのアプリケーション、モバイルアプリケーション等)を介して、ハードウェア仮想化サービス1620によって提供される機能にアクセスし得る。いくつかの実施形態では、プロバイダネットワーク1600において、カスタマーネットワーク1650における仮想コンピューティングシステム1692のそれぞれは、カスタマーネットワーク1650にリース、レンタル、またはそうでなければ提供される計算リソース1624に対応し得る。
【0131】
仮想コンピューティングシステム1692のインスタンス及び/または別のカスタマーデバイス1690から(例えば、コンソール1694を介して)、カスタマーは、例えば、1つ以上のAPI1602を介して、ストレージサービス1610の機能にアクセスして、プロバイダネットワーク1600によって提供される仮想データストア1616(例えば、フォルダまたは「バケット」、仮想化ボリューム、データベース等)のストレージリソース1618A~1618Nからデータにアクセスして、ストレージリソース1618A~1618Nにデータを記憶し得る。いくつかの実施形態では、仮想化データストアゲートウェイ(図示せず)がカスタマーネットワーク1650に提供され得、カスタマーネットワーク1650は、少なくともいくつかのデータ、例えば、頻繁にアクセスされるデータまたは重要データをローカルにキャッシュし得、1つ以上の多くの通信チャネルを介してストレージサービス1610と通信し、ローカルキャッシュから新しいデータまたは修正されたデータをアップロードし得、その結果、データのプライマリストア(仮想化データストア1616)が維持される。いくつかの実施形態では、ユーザは、仮想コンピューティングシステム1692を介して及び/または別のカスタマーデバイス1690で、ストレージ仮想化サービスとして機能するストレージサービス1610を介して仮想データストア1616のボリュームをマウント及びそれにアクセスし得、これらのボリュームは、ローカル(仮想化)ストレージ1698としてユーザに見え得る。
【0132】
図16には示されていないが、仮想化サービス(複数可)は、また、API(複数可)1602を介してプロバイダネットワーク1600内のリソースインスタンスからアクセスされ得る。例えば、カスタマー、アプライアンスサービスプロバイダ、または他のエンティティは、API1602を介してプロバイダネットワーク1600における各々の仮想ネットワーク内から仮想化サービスにアクセスして、仮想ネットワーク内または別の仮想内の1つ以上のリソースインスタンスの割り付けを要求し得る。
【0133】
図17は、少なくともいくつかの実施形態で使用され得る例示的なコンピューティングデバイスを示すブロック図である。少なくともいくつかの実施形態では、係るコンピュータシステムは、本明細書で説明するプロバイダ基板及び/もしくはPSEをサポートするために使用される制御プレーンコンポーネント及び/もしくはデータプレーンコンポーネント、様々な仮想化コンポーネント(仮想マシン、コンテナ等)、ならびに/またはSEDの1つ以上を実装するサーバーとして使用できる。係るコンピュータシステムは、1つ以上のコンピュータアクセス可能媒体を含むまたは1つ以上のコンピュータアクセス可能媒体にアクセスするように構成される汎用コンピュータシステムまたは専用コンピュータシステムを含み得る。少なくともいくつかの実施形態では、また、係るコンピュータシステムを使用して、プロバイダ基板及び/またはプロバイダの基板拡張の外側のコンポーネント(例えば、カスタマーゲートウェイ/ルーター186、他のカスタマーリソース187等)を実装できる。コンピュータシステムの図示の実施形態では、コンピュータシステム1700は、入出力(I/O)インターフェース1730を介して、システムメモリ1720に結合される1つ以上のプロセッサ1710を含む。コンピューティングデバイス1700は、さらに、I/Oインターフェース1730に結合されるネットワークインターフェース1740を含む。図17は、コンピュータシステム1700を単一のコンピューティングデバイスとして示し、様々な実施形態では、コンピュータシステム1700は、単一のコンピュータシステム1700として一緒に動作するように構成される1つのコンピューティングデバイスまたは任意の数のコンピューティングデバイスを含み得る。
【0134】
様々な実施形態では、コンピュータシステム1700は、1つのプロセッサ1710を含むユニプロセッサシステム、またはいくつかのプロセッサ1710(例えば、2つ、4つ、8つ、または別の適切な数)を含むマルチプロセッサシステムであり得る。プロセッサ1710は、命令を実行することが可能であるいずれかの適切なプロセッサであり得る。例えば、様々な実施形態では、プロセッサ2010は、x86、ARM、PowerPC、SPARC、もしくはMIPS ISA、または任意の他の適切なISA等の様々な命令セットアーキテクチャ(ISA)のいずれかを実装する汎用プロセッサまたは組み込みプロセッサであり得る。マルチプロセッサシステムでは、プロセッサ1710のそれぞれは、一般的に、必ずではないが同じISAを実装し得る。
【0135】
システムメモリ1720は、プロセッサ(複数可)1710によってアクセス可能な命令及びデータを記憶し得る。様々な実施形態では、システムメモリ1720は、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、同期ダイナミックRAM(SDRAM)、不揮発性/フラッシュ型メモリ、または任意の他のタイプのメモリ等のいずれかの適切なメモリ技術を使用して実装され得る。図示の実施形態では、上記に説明したそれらの方法、技術、及びデータ等の1つ以上の所望の機能を実施するプログラム命令及びデータは、システムメモリ1720内にコード1725及びデータ1726として記憶されていることが示される。
【0136】
一実施形態では、I/Oインターフェース1730は、プロセッサ1710、システムメモリ1720、及びネットワークインターフェース1740または他の周辺インターフェースを含むデバイスのいずれかの周辺デバイス間のI/Oトラフィックを調整するように構成され得る。いくつかの実施形態では、I/Oインターフェース1730は、いずれかの必要なプロトコル、タイミング、または他のデータ変換を行い、1つのコンポーネント(例えば、システムメモリ1720)からのデータ信号を、別のコンポーネント(例えば、プロセッサ1710)による使用に適切な形式に変換し得る。いくつかの実施形態では、I/Oインターフェース1730は、例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス規格またはユニバーサルシリアルバス(USB)規格の変形等の様々なタイプの周辺バスによってアタッチされるデバイスへのサポートを含み得る。いくつかの実施形態では、I/Oインターフェース1730の機能は、例えば、ノースブリッジ及びサウスブリッジ等の2つ以上の別のコンポーネントに分割され得る。また、いくつかの実施形態では、システムメモリ1720に対するインターフェース等のI/Oインターフェース1730の機能の一部または全ては、プロセッサ1710に直接組み込まれ得る。
【0137】
ネットワークインターフェース1740は、コンピュータシステム1700と、ネットワークまたは複数のネットワーク1750にアタッチされる他のデバイス1760(例えば、図1に示されるような他のコンピュータシステムまたはデバイス等)との間で、データを交換することを可能にするように構成され得る。様々な実施形態では、ネットワークインターフェース1740は、例えば、イーサネット(登録商標)ネットワークのタイプ等のいずれかの適切な有線または無線の一般的なデータネットワークを介して通信をサポートし得る。さらに、ネットワークインターフェース1740は、アナログ音声ネットワークもしくはデジタルファイバ通信ネットワーク等の電気通信/テレフォニネットワークを介して、ファイバチャネルSAN等のストレージエリアネットワーク(SAN)を介して、または任意の他の適切なタイプのネットワーク及び/もしくはプロトコルを介して通信をサポートし得る。
【0138】
いくつかの実施形態では、コンピュータシステム1700は、I/Oインターフェース1730(例えば、周辺機器相互接続エクスプレス(PCI-E)規格、またはQuickPath相互接続(QPI)もしくはUltraPath相互接続(UPI)等の別の相互接続のバージョンを実装するバス)を使用して接続される1つ以上のオフロードカード1770(1つ以上のプロセッサ1775を含む、場合によって、1つ以上のネットワークインターフェース1740を含む)を含む。例えば、いくつかの実施形態では、コンピュータシステム1700は、コンピュートインスタンスをホストするホスト電子デバイス(例えば、ハードウェア仮想化サービスの一部として動作する)として機能し得、1つ以上のオフロードカード1770は、ホスト電子デバイスで実行するコンピュートインスタンスを管理できる仮想化マネージャを実行する。例として、いくつかの実施形態では、オフロードカード(複数可)1770は、コンピュートインスタンスの一時停止及び/または一時停止の解除、コンピュートインスタンスの起動及び/または終了、メモリ転送/コピーの実行のコンピュートインスタンス管理操作の実行等ができる。これらの管理操作は、いくつかの実施形態では、ハイパーバイザーのコンピュータシステム1700他のプロセッサ1710A~1710Nによって実行されるハイパーバイザーと協調して(例えば、ハイパーバイザーからの要求に応じて)オフロードカード(複数可)1770によって行われ得る。しかしながら、いくつかの実施形態では、オフロードカード(複数可)1770によって実装される仮想化マネージャは、他のエンティティからの(例えば、コンピュートインスタンス自体からの)要求に対応でき、いずれかの別のハイパーバイザーと協調(またはそれにサービス提供)し得ない。図2を参照すると、少なくともいくつかの実施形態では、PSEフレームワーク202及びホストマネージャ222の機能の少なくとも一部は、オフロードカード1770の1つ以上のプロセッサ1775で実行され、その間、インスタンス(例えば、232、234、236)が1つ以上のプロセッサ1710で実行される。
【0139】
いくつかの実施形態では、コンピュータシステム1700は、1つ以上のストレージデバイス(SD)1780を含む。例示的なストレージデバイス1780は、ソリッドステートドライブ(例えば、様々なタイプのフラッシュまたは他のメモリを伴う)及び磁気ドライブを含む。プロセッサ(複数可)1710は、インターフェース(複数可)1730を介して、または場合によって、オフロードカード(複数可)1770を介して、SD1780にアクセスし得る。例えば、オフロードカード(複数可)1770は、複数の相互接続インターフェースを含むシステムオンチップ(SoC)を含み得、インターフェース1730とSD1780に対するインターフェースとをブリッジする(例えば、PCIe-to-PCIeブリッジを行う)。
【0140】
いくつかの実施形態では、システムメモリ1720は、上記に説明したようなプログラム命令及びデータを記憶するように構成されるコンピュータアクセス可能媒体の一実施形態であり得る。しかしながら、他の実施形態では、プログラム命令及び/またはデータは、異なるタイプのコンピュータアクセス可能媒体で受信、送信、または記憶され得る。一般的に言えば、コンピュータアクセス可能媒体は、I/Oインターフェース1730を介してコンピューティングデバイス1700に結合される磁気媒体または光媒体等(例えば、ディスクまたはDVD/CD)の非一時的ストレージ媒体またはメモリ媒体を含み得る。非一時的コンピュータアクセス可能ストレージ媒体は、また、システムメモリ1720または別のタイプのメモリとして、コンピューティングデバイス1700のいくつかの実施形態に含まれ得るRAM(例えば、SDRAM、ダブルデータレート(DDR)、SDRAM、SRAM等)、読み取り専用メモリ(ROM)等のいずれかの揮発性媒体または不揮発性媒体を含み得る。さらに、コンピュータアクセス可能媒体は、伝送媒体、またはネットワークインターフェース1740を介して実装され得るようなネットワーク及び/もしくは無線リンク等の通信媒体を介して伝達される電気信号、電磁信号、もしくはデジタル信号等の信号を含み得る。
【0141】
本明細書で説明または示唆されるような様々な実施形態は様々な動作環境で実装でき、動作環境は、場合によって、任意の数のアプリケーションを動作するために使用できる1つ以上のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含み得る。ユーザデバイスまたはクライアントデバイスは、標準オペレーティングシステムを起動するデスクトップコンピュータもしくはラップトップコンピュータ、ならびに、携帯電話向けソフトウェアを起動し、いくつかのネットワーキングプロトコル及びメッセージプロトコルをサポートすることが可能である、携帯デバイス、無線デバイス、及びハンドヘルドデバイス等のいくつかの汎用パーソナルコンピュータのいずれかを含み得る。係るシステムは、また、様々な市販のオペレーティングシステムのいずれかならびに開発及びデータベース管理等の目的のための他の既知のアプリケーションを起動するいくつかのワークステーションを含み得る。これらのデバイスは、また、ダミー端末、シンクライアント、ゲーム機、及びネットワークを介して通信することが可能である他のデバイス等の他の電子デバイスを含み得る。
【0142】
ほとんどの実施形態は、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ファイル転送プロトコル(FTP)、ユニバーサルプラグアンドプレイ(UPnP)、ネットワークファイルシステム(NFS)、共通インターネットファイルシステム(CIFS)、拡張メッセージング及びプレゼンスプロトコル(XMPP)、AppleTalk等の様々な市販のプロトコルのいずれかを使用して通信をサポートするための当業者に精通しているであろう少なくとも1つのネットワークを利用する。ネットワーク(複数可)は、例えば、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、仮想プライベートネットワーク(VPN)、インターネット、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク、及びそれらのいずれかの組み合わせを含み得る。
【0143】
ウェブサーバーを利用する実施形態では、ウェブサーバーは、HTTPサーバー、ファイル転送プロトコル(FTP)サーバー、共通ゲートウェイインターフェース(CGI)サーバー、データサーバー、Java(登録商標)サーバー、業務用アプリケーションサーバー等を含む様々なサーバーまたは中間層アプリケーションのいずれかを起動できる。サーバー(複数可)は、また、Java(登録商標)、C、C#、もしくはC++等のいずれかのプログラム言語、または、Perl、Python、もしくはTCL等のいずれかのスクリプト言語、及びそれらの組み合わせで書き込まれる、1つ以上のスクリプトまたはプログラムとして実装され得る、1つ以上のウェブアプリケーション等を実行することによって、ユーザデバイスからの要求に応答してプログラムまたはスクリプトを実行することが可能であり得る。サーバー(複数可)は、限定ではないが、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)等から市販されているものを含むデータベースサーバーも含み得る。データベースサーバーは、リレーショナルまたは非リレーショナル(例えば、「NoSQL」)、分散型または非分散型等であり得る。
【0144】
環境は、上記に説明したような様々なデータストアならびに他のメモリ及びストレージ媒体を含み得る。これらは、1つ以上のコンピュータにローカルにある(及び/もしくはそこに常駐する)、または、ネットワークにわたるコンピュータのいずれかもしくは全てからリモートにあるストレージ媒体等の様々な位置に常駐し得る。特定の実施形態のセットでは、情報は、当業者に精通しているストレージエリアネットワーク(「SAN」)内に常駐し得る。同様に、コンピュータ、サーバー、または他のネットワークデバイスに属する機能を行うためのいずれかの必要なファイルは、適宜、ローカルに及び/またはリモートに記憶され得る。システムがコンピュータ化されたデバイスを含む場合、係るデバイスのそれぞれは、バスを介して電気的に結合され得るハードウェア要素を含み得、ハードウェア要素は、例えば、少なくとも1つの中央処理ユニット(「CPU」)、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)、及び/または少なくとも1つの出力デバイス(例えば、ディスプレイデバイス、プリンタ、またはスピーカ)を含む。係るシステムは、また、ディスクドライブ、光学ストレージデバイス、及びランダムアクセスメモリ(RAM)または読み取り専用メモリ(ROM)等のソリッドステートストレージデバイス、ならびにリムーバブルストレージデバイス、メモリカード、フラッシュカード等の1つ以上のストレージデバイスを含み得る。
【0145】
また、係るデバイスは、上記に説明したようなコンピュータ可読ストレージ媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス等)、及びワーキングメモリを含み得る。コンピュータ可読ストレージ媒体リーダは、コンピュータ可読ストレージ媒体と接続でき、またはコンピュータ可読ストレージ媒体を受信するように構成され、リモートデバイス、ローカルデバイス、固定デバイス、及び/またはリムーバブルストレージデバイス、ならびにコンピュータ可読情報を一時的に及び/またはさらに永久的に含み、記憶し、伝送し、及び読み出すためのストレージ媒体を表す。また、システム及び様々なデバイスは、一般的に、いくつかのソフトウェアアプリケーション、モジュール、サービス、または少なくとも1つのワーキングメモリデバイス内に配置される他の要素を含み、クライアントアプリケーションまたはウェブブラウザ等のオペレーティングシステム及びアプリケーションプログラムを含む。代替の実施形態は、上記に説明したものからの多くの変形形態を有し得ることを理解されたい。例えば、カスタマイズされたハードウェアも使用され得、及び/または特定の要素は、ハードウェア、ソフトウェア(アプレット等のポータブルソフトウェアを含む)、もしくはこの両方において実装され得る。さらに、ネットワーク入出力デバイス等の他のコンピューティングデバイスへの接続が採用され得る。
【0146】
コードまたはコードの一部を含むためのストレージ媒体及びコンピュータ可読媒体は、限定ではないが、揮発性媒体及び不揮発性媒体、リムーバブル媒体及び非リムーバブル媒体等のストレージ媒体及び通信媒体を含む当技術分野で既知のまたは使用されるいずれかの適切な媒体を含み得、それらの媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報を記憶及び/または伝送するためのいずれかの方法または技術で実施され、RAM、ROM、電気的消去可能プログラム可能読み取り専用メモリ(「EEPROM」)、フラッシュメモリ、もしくは他のメモリ技術、コンパクトディスク読み取り専用メモリ(「CD-ROM」)、デジタル多用途ディスク(DVD)、もしくは他の光ストレージデバイス、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用でき、システムデバイスによってアクセスできるいずれかの他の媒体を含む。本明細書に提供される開示及び教示に基づいて、当業者は、様々な実施形態を実施するための他の手段及び/または方法を理解する。
【0147】
前述の説明では、様々な実施形態が説明される。説明の目的で、実施形態の徹底的な理解を提供するために特定の構成及び詳細が記載される。しかしながら、当業者には、実施形態がその具体的な詳細を伴わずに実践され得るということもまた明らかになる。さらに、周知の特性は、説明される実施形態を不明瞭にしないために、省略または簡略化され得る。
【0148】
本明細書では、括弧で囲まれたテキスト及び破線の境界線を有するブロック(例えば、大きなダッシュ、小さなダッシュ、鎖線、及び点線)を使用して、いくつかの実施形態に追加特性を追加するオプションの動作を説明する。しかしながら、係る表記は、これらが唯一のオプションまたはオプション動作であること及び/または特定の実施形態では、実線の境界線を有するブロックはオプションではないことを意味すると解釈すべきではない。
【0149】
最後尾の文字が付いた参照番号(例えば、101A、102A等)を使用して、様々な実施形態で参照エンティティの1つ以上のインスタンスが存在する可能性があることを示し得、複数のインスタンスが存在するとき、それぞれが同一である必要はないが、代わりに、いくつかの一般的な特徴を共有し得る、または、共通の方法で役割を果たし得る。さらに、使用される特定の最後尾は、特に反対の指示がない限り、特定の量のエンティティが存在することを含意することを意味しない。したがって、同じまたは異なる最後尾の文字を使用する2つのエンティティは、様々な実施形態で同じ数のインスタンスを有し得るまたは有し得ない。
【0150】
「一実施形態」、「ある実施形態」、「例示的な実施形態」等への言及は、説明される実施形態が、特定の特性、構造、または特徴を含み得るが、全ての実施形態が必ずしも特定の特性、構造、または特徴を含み得ないことを示す。さらに、係る語句は必ずしも同一の実施形態を指すわけではない。さらに、特定の特性、構造、または特徴が実施形態に関連して説明されるとき、明確に説明されているか否かにかかわらず、他の実施形態に関連して係る特性、構造、または特徴に影響を与えることは、当業者の知識の範囲内であると考えられる。
【0151】
さらに、上記に説明した様々な実施形態では、特に断りのない限り、語句「A、B、またはCの少なくとも1つ」等の選言的言語は、A、B、もしくはCのいずれか、またはそれらのいずれかの組み合わせ(例えば、A、B、及び/またはC)を意味すると理解されることを意図する。したがって、係る選言的言語は、所与の実施形態がAの少なくとも1つ、Bの少なくとも1つ、またはCの少なくとも1つがそれぞれ存在することを必要とすることを含意することを意図しない、また理解するべきではない。
【0152】
開示される技術の実施形態の少なくとも一部は以下の例を考慮して説明できる。
1.コンピュータ実施方法であって、
プロバイダネットワークの第1のコンピュータシステムの第1の1つ以上のプロセッサによって、ブロックストレージサーバー仮想マシンを実行して、前記第1のコンピュータシステムの1つ以上のストレージデバイスを使用して第1のストレージボリュームをホストすることと、
前記第1の1つ以上のプロセッサによって、仮想ブロックストレージデバイスにアクセスできるカスタマー仮想マシンを実行することと、
前記第1のコンピュータシステムの第2の1つ以上のプロセッサによって、ブロックストレージクライアントを実行することと、を備え、
前記ブロックストレージクライアントは、
前記カスタマー仮想マシンから、前記仮想ブロックストレージデバイスで行う第1のブロックストレージ操作を受信することと、
メッセージを前記ブロックストレージサーバー仮想マシンに送信して、前記ブロックストレージサーバー仮想マシンに第1のストレージボリュームで前記第1のブロックストレージ操作を行うことと、を含む、
前記コンピュータ実施方法。
2.前記メッセージは、仮想ネットワークを介して送信されるトラフィックをキーを使用して暗号化及び復号化して安全な前記仮想ネットワークを介して送信される、条項1に記載のコンピュータ実施方法。
3.前記仮想ネットワークの第1の仮想ネットワークアドレスは前記ブロックストレージサーバー仮想マシンに関連付けられ、前記仮想ネットワークの第2の仮想ネットワークアドレスは前記ブロックストレージクライアントに関連付けられる、条項2に記載のコンピュータ実施方法。
4.コンピュータ実施方法であって、
コンピュータシステムによって、第1のブロックストレージサーバー仮想マシンを実行して、前記コンピュータシステムの1つ以上のストレージデバイスを使用して第1のボリュームをホストすることと、
前記コンピュータシステムによって、仮想ブロックストレージデバイスにアクセスできる第2の仮想マシンを実行することと、
前記コンピュータシステムによって、ブロックストレージクライアントを実行することと、を備え、
前記ブロックストレージクライアントを実行することは、
前記第2の仮想マシンから、前記仮想ブロックストレージデバイスで行う第1のブロックストレージ操作を受信することと、
メッセージを前記第1のブロックストレージサーバー仮想マシンに送信して、前記第1のブロックストレージサーバー仮想マシンに、前記第1のボリュームで前記ブロックストレージ操作を行わせることと、を含む、
前記コンピュータ実施方法。
5.前記メッセージは、仮想ネットワークを介して送信されるトラフィックをキーを使用して暗号化及び復号化して安全な前記仮想ネットワークを介して送信される、条項4に記載のコンピュータ実施方法。
6.前記仮想ネットワークの第1の仮想ネットワークアドレスは前記第1のブロックストレージサーバー仮想マシンに関連付けられ、前記仮想ネットワークの第2の仮想ネットワークアドレスは前記ブロックストレージクライアントに関連付けられる、条項5に記載のコンピュータ実施方法。
7.前記第1のブロックストレージサーバー仮想マシン及び前記第2の仮想マシンは前記コンピュータシステムの第1の1つ以上のプロセッサによって実行され、前記ブロックストレージクライアントは、前記コンピュータシステムの第2の1つ以上のプロセッサによって実行される、条項4~6のいずれか1項に記載のコンピュータ実施方法。
8.前記第1のブロックストレージサーバー仮想マシンは前記コンピュータシステムによってホストされる第1の仮想マシンであり、前記第2の仮想マシンは前記コンピュータシステムによってホストされる第2の仮想マシンである、条項4~7のいずれか1項に記載のコンピュータ実施方法。
9.前記コンピュータシステムによって、第2のブロックストレージサーバー仮想マシンを実行して、前記コンピュータシステムの前記1つ以上のストレージデバイスを使用して第2のボリュームをホストすることをさらに含み、前記第2のボリュームは前記第1のボリュームに関連付けられるレプリカである、条項4に記載のコンピュータ実施方法。
10.前記第1のブロックストレージサーバー仮想マシンは前記コンピュータシステムの第1の物理コンポーネントを使用して実行され、前記第2のブロックストレージサーバー仮想マシンは、前記第1の物理コンポーネントと異なる前記コンピュータシステムの第2の物理コンポーネントを使用して実行される、条項9に記載のコンピュータ実施方法。
11.前記第1のブロックストレージ操作はデータのブロックの書き込みであり、前記ブロックストレージクライアントは、さらに、前記仮想ブロックストレージデバイスに関連付けられる暗号化キーを使用して、前記データのブロックを暗号化し、データの暗号化ブロックを生成し、前記第1のブロックストレージサーバー仮想マシンに送信される前記メッセージは前記データの暗号化ブロックを含み、前記第1のブロックストレージサーバー仮想マシンに、前記データの暗号化ブロックを前記第1のボリュームに書き込ませる、条項4~10のいずれか1項に記載のコンピュータ実施方法。
12.前記コンピュータシステムはプロバイダネットワークの拡張機能に含まれ、前記プロバイダネットワークの前記拡張機能は少なくともサードパーティネットワークを介して前記プロバイダネットワークと通信し、
前記プロバイダネットワークのインスタンス管理サービスは、前記コンピュータシステムによって、前記第1のブロックストレージサーバー仮想マシン及び前記第2の仮想マシンの前記実行を開始する、条項4~11のいずれか1項に記載のコンピュータ実施方法。
13.ホストコンピュータシステムの1つ以上のストレージデバイスと、
仮想ブロックストレージデバイスにアクセスできる第1のブロックストレージサーバーアプリケーション及び第2のアプリケーションを実行する前記ホストコンピュータシステムの第1の1つ以上のプロセッサであって、前記第1のブロックストレージサーバーアプリケーションは、実行時に、前記第1のブロックストレージサーバーアプリケーションに、前記1つ以上のストレージデバイスを使用して第1のボリュームをホストさせる命令を含む、前記第1の1つ以上のプロセッサと、
ブロックストレージクライアントアプリケーションを実行する前記ホストコンピュータシステムの第1の1つ以上のプロセッサであって、前記ブロックストレージクライアントアプリケーションは命令を含み、前記命令は、実行時に、前記ブロックストレージクライアントアプリケーションに、
前記第2のアプリケーションから、前記仮想ブロックストレージデバイスで行う第1のブロックストレージ操作を受信することと、
メッセージを前記第1のブロックストレージサーバーアプリケーションに送信して、前記第1のブロックストレージサーバーアプリケーションに、前記第1のボリュームで前記第1のブロックストレージ操作を行わせることと、を実施させる、前記第1の1つ以上のプロセッサと、
を含む、システム。
14.前記メッセージは、仮想ネットワークを介して送信されるトラフィックをキーを使用して暗号化及び復号化して安全な前記仮想ネットワークを介して送信される、条項13に記載のシステム。
15.前記仮想ネットワークの第1の仮想ネットワークアドレスは前記第1のブロックストレージサーバーアプリケーションに関連付けられ、前記仮想ネットワークの第2の仮想ネットワークアドレスは前記ブロックストレージアプリケーションに関連付けられる、条項14に記載のシステム。
16.前記第1のブロックストレージサーバーアプリケーションは前記ホストコンピュータシステムによってホストされる第1の仮想マシン内で実行され、前記第2のアプリケーションは前記ホストコンピュータシステムによってホストされる第2の仮想マシン内で実行される、条項13~15のいずれか1項に記載のシステム。
17.前記ホストコンピュータシステムの前記第1の1つ以上のプロセッサは、さらに、第2のブロックストレージサーバーアプリケーションを実行して、前記第2のブロックストレージサーバーアプリケーションは、実行時に、前記第2のブロックストレージサーバーアプリケーションに、前記ホストコンピュータシステムの前記1つ以上のストレージデバイスを使用して第2のボリュームをホストさせる命令を含み、前記第2のボリュームは前記第1のボリュームに関連付けられるレプリカである、条項13に記載のシステム。
18.前記第1のブロックストレージサーバーアプリケーションは前記コンピュータシステムの第1の物理コンポーネントを使用して実行され、前記第2のブロックストレージサーバーアプリケーションは、前記第1の物理コンポーネントと異なる前記コンピュータシステムの第2の物理コンポーネントを使用して実行される、条項17に記載のシステム。
19.前記第1のブロックストレージ操作はデータのブロックの書き込みであり、前記ブロックストレージクライアントアプリケーションは、さらに、実行時に、前記ブロックストレージクライアントアプリケーションに、前記仮想ブロックストレージデバイスに関連付けられる暗号化キーを使用して、前記データのブロックを暗号化させ、データの暗号化ブロックを生成させる命令を含み、前記第1のブロックストレージサーバーアプリケーションに送信された前記メッセージは前記データの暗号化ブロックを含み、前記第1のブロックストレージサーバーアプリケーションに、前記データの暗号化ブロックを前記第1のボリュームに書き込ませる、条項13~18のいずれか1項に記載のシステム。
20.前記ホストコンピュータシステムはプロバイダネットワークの拡張機能に含まれ、前記プロバイダネットワークの前記拡張機能は少なくともサードパーティネットワークを介して前記プロバイダネットワークと通信し、
前記プロバイダネットワークのインスタンス管理サービスは、前記ホストコンピュータシステムによって、前記第1のブロックストレージサーバーアプリケーション及び前記第2のアプリケーションの前記実行を開始する、条項13~19のいずれか1項に記載のシステム。
21.コンピュータ実施方法であって、
プロバイダネットワークの拡張機能のホストコンピュータシステムにおいて、第1の仮想マシンを起動する第1の要求を受信して、ブロックストレージサーバーアプリケーションをホストすることであって、前記プロバイダネットワークの前記拡張機能は、少なくともサードパーティネットワークを介して前記プロバイダネットワークと通信する、前記ホストすることと、
前記ホストコンピュータシステムの1つ以上の物理ストレージデバイスのストレージ容量の少なくとも一部を、プロビジョニングされるストレージデバイスとして前記第1の仮想マシンにプロビジョニングすることと、
前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行することと、を備え、
前記ブロックストレージサーバーアプリケーションを実行することは、
論理ボリュームを作成するために前記プロバイダネットワークのブロックストレージサービスからの第2の要求に応答して、前記プロビジョニングされたストレージデバイスに前記論理ボリュームを作成することと、
ブロックストレージクライアントアプリケーションから仮想ネットワークを介して第3の要求を受信して、前記論理ボリュームで入出力操作を行うことと、
前記論理ボリュームで前記要求された入出力操作を行うことと、を含む、
前記コンピュータ実施方法。
22.前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行する前に、前記方法は、さらに、
別のアプリケーションを前記第1の仮想マシンで実行して、前記プロバイダネットワークのデータストアからブートボリュームに取得されたマシンイメージからブートボリュームをロードすることであって、前記ブートボリュームは前記プロビジョニングされたストレージデバイスの別の論理ボリュームである、前記ロードすることと、
前記ブートボリュームからブートするために前記第1の仮想マシンを修正することと、
前記第1の仮想マシンを再起動することと、
を含む、条項21に記載のコンピュータ実施方法。
23.前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行する前に、前記方法は、さらに、前記第1の仮想マシンのブートボリュームを第1のブロックストレージデバイスによって記憶されたマシンイメージからロードすることを含み、前記ブートボリュームは前記プロビジョニングされたストレージデバイスの別の論理ボリュームであり、前記第1のブロックストレージデバイスは仮想ブロックストレージデバイスである、条項21に記載のコンピュータ実施方法。
24.コンピュータ実施方法であって、
プロバイダネットワークの拡張機能のコンピュータシステムによって、第1の仮想マシンを起動する第1の要求を受信して、ブロックストレージサーバーアプリケーションをホストすることであって、前記プロバイダネットワークの前記拡張機能は、少なくともサードパーティネットワークを介して前記プロバイダネットワークと通信する、前記ホストすることと、
前記ホストコンピュータシステムの1つ以上のストレージデバイスのストレージ容量の少なくとも一部を、プロビジョニングされるストレージデバイスとして前記第1の仮想マシンにプロビジョニングすることと、
前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行することと、を備え、
前記ブロックストレージサーバーアプリケーションを実行することは、
論理ボリュームを作成するために前記プロバイダネットワークのブロックストレージサービスからの第2の要求に応答して、前記プロビジョニングされたストレージデバイスに前記論理ボリュームを作成することと、
第3の要求を受信して、前記論理ボリュームで入出力操作を行うことと、
前記論理ボリュームで前記要求された入出力操作を行うことと、を含む、
前記コンピュータ実施方法。
25.前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行する前に、前記方法は、さらに、
別のアプリケーションを前記第1の仮想マシンで実行して、前記プロバイダネットワークのデータストアから取得されたマシンイメージからブートボリュームをロードすることであって、前記ブートボリュームは前記プロビジョニングされたストレージデバイスの別の論理ボリュームである、前記ロードすることと、
前記ブートボリュームからブートするために前記第1の仮想マシンを修正することと、
前記第1の仮想マシンを再起動することと、
を含む、条項24に記載のコンピュータ実施方法。
26.前記ブロックストレージサーバーアプリケーションを実行する前に、前記第1の仮想マシンのメモリをクリアすることをさらに含む、条項25に記載のコンピュータ実施方法。
27.前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行する前に、前記方法は、さらに、前記第1の仮想マシンのブートボリュームを第1のブロックストレージデバイスによって記憶されたマシンイメージからロードすることを含み、前記ブートボリュームは前記プロビジョニングされたストレージデバイスの別の論理ボリュームであり、前記第1のブロックストレージデバイスは仮想ブロックストレージデバイスである、条項24に記載のコンピュータ実施方法。
28.前記ロードは、前記第1の仮想マシンの基本入出力システム及び前記第1の仮想マシンの統合型拡張可能ファームウェアインターフェースの少なくとも1つによって行われる、条項27に記載のコンピュータ実施方法。
29.前記第3の要求はブロックストレージクライアントアプリケーションから仮想ネットワークを介して受信され、
前記仮想ネットワークを通じて送信されるトラフィックは、前記仮想ネットワークに関連付けられるキーを使用して暗号化される、条項24~28のいずれか1項に記載のコンピュータ実施方法。
30.前記第1の仮想マシンは複数の仮想マシンのうちの1つであり、前記複数の仮想マシンのそれぞれは、ブロックストレージサーバーアプリケーションを実行して、前記方法は、さらに、
前記複数の仮想マシンの1つ以上に関連付けられるリソース使用率が閾値を超えていると決定することと、
別のホストコンピュータシステムの1つ以上のストレージデバイスのストレージ容量の少なくとも一部を、第2の仮想マシンにプロビジョニングすることと、
別のブロックストレージサーバーアプリケーションを前記第2の仮想マシンで実行することと、
を含む、条項24~29のいずれか1項に記載のコンピュータ実施方法。
31.前記ホストコンピュータシステムの前記1つ以上の物理ストレージデバイスの前記ストレージ容量の少なくとも別の部を、別のプロビジョニングされるストレージデバイスとして第2の仮想マシンにプロビジョニングすることと、
別のブロックストレージサーバーアプリケーションを前記第2の仮想マシンで実行することであって、前記第1の仮想マシンは前記コンピュータシステムの第1の物理コンポーネントを使用して実行され、前記第2の仮想マシンは前記第1の物理コンポーネントと異なる前記コンピュータシステムの第2の物理コンポーネントを使用して実行される、前記実行することと、
をさらに含む、条項24~30のいずれか1項に記載のコンピュータ実施方法。
32.前記入出力操作は、データのブロックを前記論理ボリュームのブロックアドレスに書き込むための書き込み操作であり、前記論理ボリュームで前記要求された入出力論理ボリュームを行うことは、前記データのブロックを前記論理ボリュームの前記ブロックアドレスに書き込むことを含み、前記第1の物理コンポーネントは第1のメモリデバイスであり、前記第2の物理コンポーネントは第2のメモリデバイスであり、前記プロバイダネットワークの前記拡張機能は、前記プロバイダネットワークのデータセンターの外側に配置され、前記プロバイダネットワークのカスタマーの構内にある1つ以上の物理コンピューティングデバイスを含む、条項31に記載のコンピュータ実施方法。
33.プロバイダネットワークの拡張機能のホストコンピュータシステムの1つ以上のストレージデバイスであって、前記プロバイダネットワークの前記拡張機能は少なくともサードパーティネットワークを介して前記プロバイダネットワークと通信する、前記1つ以上のストレージデバイスと、
前記ホストマネージャアプリケーションを実行するための前記ホストコンピュータシステムの1つ以上のプロセッサと、を含み、前記ホストマネージャアプリケーションは命令を含み、前記命令は、実行時に、前記ホストマネージャアプリケーションに、
第1の仮想マシンを起動する第1の要求を受信して、ブロックストレージサーバーアプリケーションをホストすることと、
前記1つ以上のストレージデバイスのストレージ容量の少なくとも一部を、プロビジョニングされるストレージデバイスとして前記第1の仮想マシンにプロビジョニングすることと、
前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行することと、を含み、前記ブロックストレージサーバーアプリケーションは命令を含み、前記命令は、実行時に、前記ブロックストレージサーバーアプリケーションに、
論理ボリュームを作成するために前記プロバイダネットワークのブロックストレージサービスからの第2の要求に応答して、前記プロビジョニングされたストレージデバイスに前記論理ボリュームを作成することと、
第3の要求を受信して、前記論理ボリュームで入出力操作を行うことと、
前記論理ボリュームで前記要求された入出力操作を行うことと、
を含む、システム。
34.前記ホストマネージャアプリケーションはさらなる命令を含み、前記さらなる命令は、実行時に、前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行する前に、前記ホストマネージャアプリケーションに、
別のアプリケーションを前記第1の仮想マシンで実行して、前記プロバイダネットワークのデータストアから取得されたマシンイメージからブートボリュームをロードすることであって、前記ブートボリュームは前記プロビジョニングされたストレージデバイスの別の論理ボリュームである、前記ロードすることと、
前記ブートボリュームからブートするために前記第1の仮想マシンを修正することと、
前記第1の仮想マシンを再起動することと、
を行わせる、条項33に記載のシステム。
35.前記ホストマネージャアプリケーションは、実行時に、前記ブロックストレージサーバーアプリケーションを実行する前に、前記ホストマネージャアプリケーションに、前記第1の仮想マシンのメモリをクリアすることをさせるさらなる命令を含む、条項34に記載のシステム。
36.前記第1の仮想マシンのコンポーネントは、実行時に、前記ブロックストレージサーバーアプリケーションを前記第1の仮想マシンで実行する前に、前記コンポーネントに、前記第1の仮想マシンのブートボリュームを、前記第1のブロックストレージデバイスによって記憶されたマシンイメージからロードさせる命令を含み、前記ブートボリュームは前記プロビジョニングされたストレージデバイスの別の論理ボリュームであり、前記第1のブロックストレージデバイスは仮想ブロックストレージデバイスである、条項33に記載のシステム。
37.前記コンポーネントは、前記第1の仮想マシンの基本入出力システム及び前記第1の仮想マシンの統合型拡張可能ファームウェアインターフェースの少なくとも1つである、条項36に記載のシステム。
38.前記第3の要求はブロックストレージクライアントアプリケーションから仮想ネットワークを介して受信され、
前記仮想ネットワークを通じて送信されるトラフィックは、前記仮想ネットワークに関連付けられるキーを使用して暗号化される、条項33~37のいずれか1項に記載のシステム。
39.前記ホストマネージャアプリケーションはさらなる命令を含み、前記さらなる命令は、実行時に、前記ホストマネージャアプリケーションに、
前記ホストコンピュータシステムの前記1つ以上の物理ストレージデバイスの前記ストレージ容量の少なくとも別の部を、別のプロビジョニングされるストレージデバイスとして第2の仮想マシンにプロビジョニングすることと、
別のブロックストレージサーバーアプリケーションを前記第2の仮想マシンで実行することであって、前記第1の仮想マシンは前記コンピュータシステムの第1の物理コンポーネントを使用して実行され、第2の仮想マシンは前記第1の物理コンポーネントと異なる前記コンピュータシステムの第2の物理コンポーネントを使用して実行される、前記実行することと、
を行わせる、条項33~38のいずれか1項に記載のシステム。
40.前記入出力操作は、データのブロックを前記論理ボリュームのブロックアドレスに書き込むための書き込み操作であり、前記論理ボリュームで前記要求された入出力論理ボリュームを行うことは、前記データのブロックを前記論理ボリュームの前記ブロックアドレスに書き込むことを含み、前記第1の物理コンポーネントは第1のメモリデバイスであり、前記第2の物理コンポーネントは第2のメモリデバイスであり、前記プロバイダネットワークの前記拡張機能は、前記プロバイダネットワークのデータセンターの外側に配置され、前記プロバイダネットワークのカスタマーの構内にある1つ以上の物理コンピューティングデバイスを含む、条項39に記載のシステム。
41.コンピュータ実施方法であって、
第1のブロックストレージサーバーインスタンスによって、第1の要求をプロバイダネットワークのブロックストレージサービスから受信することであって、前記第1の要求は、第1のストレージボリュームを作成し、前記第1の論理ボリュームの第1の部を記憶する、前記受信することと、
第2のブロックストレージサーバーインスタンスによって、第2の要求を前記ブロックストレージサービスから受信することであって、前記第2の要求は、第2のストレージボリュームを作成し、前記第1の論理ボリュームの第2の部を記憶する、前記受信することと、
前記第2のブロックストレージサーバーインスタンスが応答しないと決定することと、
第3の要求を第3のブロックストレージサーバーインスタンスに送信して、第3のストレージボリュームを作成し、前記第1の論理ボリュームの前記第2の部を記憶することと、
前記第3のブロックストレージサーバーインスタンスによって、前記第1の論理ボリュームの前記第2の部を前記第3のストレージボリュームに記憶することと、
前記第1の論理ボリュームの一部をホストする各ブロックストレージサーバーインスタンスの識別情報を含むデータストアを更新して、前記第2のブロックストレージサーバーインスタンスの識別情報を除去し、前記第3のブロックストレージサーバーインスタンスの識別情報を追加することと、を含み、
前記第1のブロックストレージサーバーインスタンス、前記第2のブロックストレージサーバーインスタンス、及び前記第3のブロックストレージサーバーインスタンスは、前記プロバイダネットワークの拡張機能の1つ以上のコンピュータシステムによってホストされ、前記プロバイダネットワークの前記拡張機能は少なくともサードパーティネットワークを介して前記プロバイダネットワークと通信する、前記コンピュータ実施方法。
42.ブロックストレージクライアントによって、前記第1の論理ボリュームの一部をホストしている各ブロックストレージサーバーインスタンスの前記識別情報を前記データストアから受信することと、
前記ブロックストレージクライアントによって、前記識別情報に含まれる少なくとも1つのブロックストレージサーバーインスタンスへの接続を確立することと、
前記ブロックストレージクライアントによって、第1のブロックストレージ操作を別のインスタンスから受信することであって、前記第1のブロックストレージ操作はデータのブロックを仮想ブロックストレージデバイスのブロックアドレスに書き込む、前記受信することと、
前記ブロックストレージクライアントによって、前記接続を介して前記少なくとも1つのブロックストレージサーバーインスタンスにメッセージを送信して、前記少なくとも1つのブロックストレージサーバーインスタンスに、前記データのブロックを前記第1のストレージボリュームの前記ブロックアドレスに書き込ませることと、
をさらに含む、条項41に記載のコンピュータ実装方法。
43.前記第1のブロックストレージサーバーインスタンス及び前記第2のブロックストレージサーバーインスタンスの応答をポーリングすることをさらに含む、条項41~42のいずれか1項に記載のコンピュータ実施方法。
44.コンピュータ実施方法であって、
第1のブロックストレージサーバーインスタンスによって、第1の要求を受信して、第1のストレージボリュームを作成し、第1の論理ボリュームの第1の部を記憶することと、
第2のブロックストレージサーバーインスタンスによって、第2の要求を受信して、第2のストレージボリュームを作成し、前記第1の論理ボリュームの第2の部を記憶することと、
第3の要求を第3のブロックストレージサーバーインスタンスに送信して、第3のストレージボリュームを作成し、前記第1の論理ボリュームの前記第2の部を記憶することと、
前記第3のブロックストレージサーバーインスタンスによって、前記第1の論理ボリュームの前記第2の部を前記第3のストレージボリュームに記憶することと、
前記第1の論理ボリュームの一部をホストする各ブロックストレージサーバーインスタンスの識別情報を含むデータストアを更新して、前記第2のブロックストレージサーバーインスタンスの識別情報を除去し、前記第3のブロックストレージサーバーインスタンスの識別情報を追加することと、
を含む、前記コンピュータ実施方法。
45.ブロックストレージクライアントによって、前記第1の論理ボリュームの一部をホストしている各ブロックストレージサーバーインスタンスの前記識別情報を前記データストアから受信することと、
前記ブロックストレージクライアントによって、前記識別情報に含まれる少なくとも1つのブロックストレージサーバーインスタンスへの接続を確立することと、
前記ブロックストレージクライアントによって、第1のブロックストレージ操作を別のインスタンスから受信することであって、前記第1のブロックストレージ操作はデータのブロックを仮想ブロックストレージデバイスのブロックアドレスに書き込む、前記受信することと、
前記ブロックストレージクライアントによって、前記接続を介して前記少なくとも1つのブロックストレージサーバーインスタンスにメッセージを送信して、前記少なくとも1つのブロックストレージサーバーインスタンスに、前記データのブロックを前記第1のストレージボリュームの前記ブロックアドレスに書き込ませることと、
をさらに含む、条項44に記載のコンピュータ実装方法。
46.前記データストアは、コンセンサスプロトコルを独立して実行して前記識別情報を更新する複数のノードを含む分散データストアである、条項45に記載のコンピュータ実施方法。
47.前記ブロックストレージクライアントによって、サービスから前記複数のノードの各ノードの識別情報を取得することをさらに含む、条項46に記載のコンピュータ実施方法。
48.前記複数のノードのうちの1つのノードは、前記第1のブロックストレージサーバーインスタンスによってホストされるコンテナ内で実行される、条項46に記載のコンピュータ実施方法。
49.前記ブロックストレージクライアントによって、前記複数のノードのうちのいずれかのノードの識別情報に関する要求を複数のブロックストレージサーバーインスタンスにブロードキャストすることをさらに含む、条項48に記載のコンピュータ実施方法。
50.前記第1のブロックストレージサーバーインスタンス及び前記第2のブロックストレージサーバーインスタンスの応答をポーリングすることをさらに含み、前記第3の要求は、前記第2のブロックストレージサーバーインスタンスが応答しないとの決定に応答して送信される、条項44~49のいずれか1項に記載のコンピュータ実施方法。
51.前記第1のストレージボリュームは複数のブロックストレージサーバーインスタンスにわたってストライピングされ、前記複数のブロックストレージサーバーインスタンスのそれぞれは前記識別情報に含まれる、条項44~50のいずれか1項に記載のコンピュータ実施方法。
52.前記第1のブロックストレージサーバーインスタンス、前記第2のブロックストレージサーバーインスタンス、及び前記第3のブロックストレージサーバーインスタンスは、プロバイダネットワークの拡張機能の1つ以上のコンピュータシステムによってホストされ、前記第1の要求及び前記第2の要求は前記プロバイダネットワークのブロックストレージサービスから送信され、前記プロバイダネットワークの前記拡張機能は、少なくともサードパーティネットワークを介して前記プロバイダネットワークと通信する、条項44~51のいずれか1項に記載のコンピュータ実装方法。
53.プロバイダネットワークの拡張機能の1つ以上のコンピューティングデバイスであって、前記プロバイダネットワークの前記拡張機能は、少なくともサードパーティネットワークを介して前記プロバイダネットワークと通信することであり、前記1つ以上のコンピューティングデバイスは命令を含み、前記命令は、1つ以上のプロセッサにおける実行時に、前記1つ以上のコンピューティングデバイスに、
第1のブロックストレージサーバーインスタンスによって、第1の要求を受信して、第1のストレージボリュームを作成し、第1の論理ボリュームの第1の部を記憶することと、
第2のブロックストレージサーバーインスタンスによって、第2の要求を受信して、第2のストレージボリュームを作成し、前記第1の論理ボリュームの第2の部を記憶することと、
第3の要求を第3のブロックストレージサーバーインスタンスに送信して、第3のストレージボリュームを作成し、前記第1の論理ボリュームの前記第2の部を記憶することと、
前記第3のブロックストレージサーバーインスタンスによって、前記第1の論理ボリュームの前記第2の部を前記第3のストレージボリュームに記憶することと、
前記第1の論理ボリュームの一部をホストする各ブロックストレージサーバーインスタンスの識別情報を含むデータストアを更新して、前記第2のブロックストレージサーバーインスタンスの識別情報を除去し、前記第3のブロックストレージサーバーインスタンスの識別情報を追加することと、
を含む、システム。
54.前記1つ以上のコンピューティングデバイスはさらなる命令を含み、前記さらなる命令は、前記1つ以上のプロセッサにおける実行時に、前記1つ以上のコンピューティングデバイスに、
ブロックストレージクライアントによって、前記第1の論理ボリュームの一部をホストしている各ブロックストレージサーバーインスタンスの前記識別情報を前記データストアから受信することと、
前記ブロックストレージクライアントによって、前記識別情報に含まれる少なくとも1つのブロックストレージサーバーインスタンスへの接続を確立することと、
前記ブロックストレージクライアントによって、第1のブロックストレージ操作を別のインスタンスから受信することであって、前記第1のブロックストレージ操作はデータのブロックを仮想ブロックストレージデバイスのブロックアドレスに書き込む、前記受信することと、
前記ブロックストレージクライアントによって、前記接続を介して前記少なくとも1つのブロックストレージサーバーインスタンスにメッセージを送信して、前記少なくとも1つのブロックストレージサーバーインスタンスに、前記データのブロックを前記第1のストレージボリュームの前記ブロックアドレスに書き込ませることと、
を行わせる、条項53に記載のシステム。
55.前記データストアは、コンセンサスプロトコルを独立して実行して前記識別情報を更新する複数のノードを含む分散データストアである、条項54に記載のシステム。
56.前記1つ以上のコンピューティングデバイスは、前記1つ以上のプロセッサにおける実行時に、前記1つ以上のコンピューティングデバイスに、前記ブロックストレージクライアントによって、前記複数のノードの各ノードの識別情報をサービスから取得させるさらなる命令を含む、条項55に記載のシステム。
57.前記複数のノードのうちの1つのノードは、前記第1のブロックストレージサーバーインスタンスによってホストされるコンテナ内で実行される、条項55に記載のシステム。
58.前記1つ以上のコンピューティングデバイスは、前記1つ以上のプロセッサにおける実行時に、前記1つ以上のコンピューティングデバイスに、前記ブロックストレージクライアントによって、前記複数のノードのいずれかのノードの識別情報に関する要求を、複数のブロックストレージサーバーインスタンスにブロードキャストさせるさらなる命令を含む、条項57に記載のシステム。
59.前記1つ以上のコンピューティングデバイスは、前記1つ以上のプロセッサにおける実行時に、前記1つ以上のコンピューティングデバイスに、前記第1のブロックストレージサーバーインスタンス及び前記第2のブロックストレージサーバーインスタンスの応答をポーリングさせるさらなる命令を含み、前記第3の要求は、前記第2のブロックストレージサーバーインスタンスが応答しないとの決定に応答して送信される、条項53~58のいずれか1項に記載のシステム。
60.前記第1のストレージボリュームは複数のブロックストレージサーバーインスタンスにわたってストライピングされ、前記複数のブロックストレージサーバーインスタンスのそれぞれは前記識別情報に含まれる、条項53~59のいずれか1項に記載のシステム。
【0153】
したがって、本明細書及び図面は、限定的な意味ではなく例示的な意味で考えるべきである。しかしながら、特許請求の範囲に記載される本開示のより広範の主旨及び範囲から逸脱することなく、様々な修正及び変更が本明細書になされ得ることは明らかである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
【外国語明細書】