JP7440195B2 - Virtualized block storage server in cloud provider board expansion - Google Patents

Virtualized block storage server in cloud provider board expansion Download PDF

Info

Publication number
JP7440195B2
JP7440195B2 JP2021576312A JP2021576312A JP7440195B2 JP 7440195 B2 JP7440195 B2 JP 7440195B2 JP 2021576312 A JP2021576312 A JP 2021576312A JP 2021576312 A JP2021576312 A JP 2021576312A JP 7440195 B2 JP7440195 B2 JP 7440195B2
Authority
JP
Japan
Prior art keywords
block storage
storage server
instance
volume
network
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021576312A
Other languages
Japanese (ja)
Other versions
JP2022538826A (en
Inventor
ニコラス リグオリ、アンソニー
ステファン オルソン、マーク
マギー グリーンウッド、クリストファー
ラボヴィク、パヴェル
ヴェルマ、マニシュ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/457,850 external-priority patent/US10949124B2/en
Priority claimed from US16/457,853 external-priority patent/US10949131B2/en
Priority claimed from US16/457,856 external-priority patent/US10949125B2/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2022538826A publication Critical patent/JP2022538826A/en
Application granted granted Critical
Publication of JP7440195B2 publication Critical patent/JP7440195B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Description

多くの企業及び他の組織はそれらの運用をサポートするために、多くのコンピューティングシステムを相互接続するコンピュータネットワークを運用しており、例えば、コンピューティングシステムは、(例えば、ローカルネットワークの一部として)同じ場所に配置される、またはその代わりに、複数の異なる地理的場所に配置される(例えば、1つ以上のプライベートまたはパブリックの中間ネットワークを介して接続される)。例えば、かなりの数の相互接続されたコンピューティングシステムを収容するデータセンターが当たり前になっており、その例として、単一の組織によって及び単一の組織の代わりのものによって運用されるプライベートデータセンター、及び、コンピューティングリソースをカスタマーに提供するためにビジネスとしてエンティティによって運用されるパブリックデータセンター等が挙げられる。いくつかのパブリックデータセンターオペレータは、様々なカスタマーが所有するハードウェアのためのネットワークアクセス、電力、安全な設置施設を提供する一方、他のパブリックデータセンターオペレータは、そのカスタマーによる使用のために利用可能になったハードウェアリソースも含む「フルサービス」ファシリティを提供する。しかしながら、一般的なデータセンターの規模及び範囲が増加するにつれて、物理コンピューティングリソースのプロビジョニング、監督、及び管理のタスクはますます複雑になっている。 Many businesses and other organizations operate computer networks that interconnect many computing systems to support their operations; ) co-located, or alternatively, located at multiple different geographic locations (e.g., connected via one or more private or public intermediate networks). For example, data centers housing a significant number of interconnected computing systems have become commonplace, such as private data centers operated by and on behalf of a single organization. , and public data centers operated by an entity as a business to provide computing resources to customers. Some public data center operators provide network access, power, and secure installation facilities for hardware owned by various customers, while other public data center operators provide network access, power, and secure installation facilities for use by their customers. It offers "full service" facilities, including available hardware resources. However, as the size and scope of typical data centers increases, the tasks of provisioning, supervising, and managing physical computing resources become increasingly complex.

汎用ハードウェアの仮想化技術の出現は、多様なニーズがある多くのカスタマーのために大規模なコンピューティングリソースを管理することに関して利益をもたらし、様々なコンピューティングリソースを複数のカスタマーによって効率的及び安全に共有することを可能にする。例えば、仮想化技術は、単一の物理コンピューティングマシンによってホストされる1つ以上の仮想マシンを各ユーザに提供することによって、単一の物理コンピューティングマシンを複数のユーザ間で共有することを可能にし得る。係る仮想マシンのそれぞれは、ユーザに所与のハードウェアコンピューティングリソースの唯一のオペレータ及び管理者であると錯覚をもたらす独特の論理コンピューティングシステムとして機能するソフトウェアシミュレーションであり、それと同時に、様々な仮想マシン間でアプリケーション隔離及び安全も提供する。さらに、いくつかの仮想化技術は、複数の独特の物理コンピューティングシステムに及ぶ複数の仮想プロセッサを伴う単一の仮想マシン等の2つ以上の物理リソースに及ぶ仮想リソースを提供することが可能である。別の例として、仮想化技術は、複数のデータストレージデバイスにわたって分散され得る仮想化データストアを各ユーザに提供することによって、データストレージハードウェアを複数のユーザ間で共有することを可能にし得、係る仮想化データストアのそれぞれは、ユーザがデータストレージリソースの唯一のオペレータ及び管理者であるという錯覚をユーザにもたらす独特の論理データストアとして機能する。 The advent of general-purpose hardware virtualization technology offers benefits in managing large-scale computing resources for many customers with diverse needs, allowing various computing resources to be efficiently and efficiently managed by multiple customers. Enable secure sharing. For example, virtualization technology allows a single physical computing machine to be shared among multiple users by providing each user with one or more virtual machines hosted by the single physical computing machine. It can be possible. Each such virtual machine is a software simulation that functions as a unique logical computing system that provides the user with the illusion of being the sole operator and manager of a given hardware computing resource, while at the same time It also provides application isolation and security between machines. Additionally, some virtualization technologies are capable of providing virtual resources that span two or more physical resources, such as a single virtual machine with multiple virtual processors that span multiple unique physical computing systems. be. As another example, virtualization technology may enable data storage hardware to be shared among multiple users by providing each user with a virtualized data store that may be distributed across multiple data storage devices; Each such virtualized data store functions as a unique logical data store that provides the user with the illusion that the user is the sole operator and administrator of the data storage resource.

コンピューティング集約型アプリケーション、メモリ集約型アプリケーション等の様々なタイプのアプリケーション用に最適化された様々な仮想マシンタイプは、クライアントの要求に応じて、いくつかのクラウドコンピューティングプロバイダネットワークのデータセンターにセットアップされ得る。さらに、仮想コンピューティングサービスの仮想マシンを使用してデータベースインスタンスがインスタンス化されるいくつかのデータベースサービス等の係るプロバイダネットワークの仮想コンピューティングサービスに依存する高レベルサービスは、また、プロバイダネットワーククライアントに利用可能になり得る。しかしながら、プロバイダネットワークの外側のカスタマーの構内に記憶される必要があるかなり大量のデータを処理するアプリケーション等のいくつかのタイプのアプリケーションに関して、プロバイダネットワークのデータセンターに配置されるハードウェアを使用する仮想化リソースを提供することに限定されるサービスは、例えば、レイテンシー関連の理由及び/または他の理由で最適ではない場合がある。 Various virtual machine types, optimized for different types of applications such as compute-intensive applications, memory-intensive applications, etc., are set up in data centers of several cloud computing provider networks as required by clients. can be done. In addition, high-level services that rely on such provider network virtual computing services, such as some database services where database instances are instantiated using virtual computing service virtual machines, are also available to provider network clients. It could be possible. However, for some types of applications, such as applications that process fairly large amounts of data that need to be stored on customer premises outside the provider network, virtualization using hardware located in the provider network's data center Services that are limited to providing customized resources may not be optimal, for example, for latency-related and/or other reasons.

以下の図面を参照して、本開示に従った様々な実施形態を説明する。 Various embodiments according to the present disclosure will be described with reference to the following drawings.

少なくともいくつかの実施形態による、プロバイダネットワークの外部のネットワーク内に配置されたプロバイダ基板拡張によって拡張された例示的なプロバイダネットワークを示すブロック図である。FIG. 2 is a block diagram illustrating an example provider network extended with provider board extensions located in a network external to the provider network, in accordance with at least some embodiments. 少なくともいくつかの実施形態による、例示的なプロバイダ基板拡張を示すブロック図である。FIG. 2 is a block diagram illustrating an example provider board extension, in accordance with at least some embodiments. 少なくともいくつかの実施形態による、プロバイダネットワークとプロバイダ基板拡張との間の例示的な接続を示すブロック図である。FIG. 2 is a block diagram illustrating an example connection between a provider network and a provider board extension, according to at least some embodiments. 少なくともいくつかの実施形態による、仮想化ブロックストレージシステムの例を示すブロック図である。1 is a block diagram illustrating an example virtualized block storage system, according to at least some embodiments. FIG. 少なくともいくつかの実施形態による、仮想化ブロックストレージシステムの例を示すブロック図である。1 is a block diagram illustrating an example virtualized block storage system, according to at least some embodiments. FIG. 少なくともいくつかの実施形態による、第1の技術を使用して仮想化ブロックストレージサーバーをブートするための例示的なシステムを示すブロック図である。1 is a block diagram illustrating an example system for booting a virtualized block storage server using a first technique, in accordance with at least some embodiments. FIG. 少なくともいくつかの実施形態による、第2の技術を使用して仮想化ブロックストレージサーバーをブートするための例示的なシステムを示すブロック図である。1 is a block diagram illustrating an example system for booting a virtualized block storage server using a second technique, in accordance with at least some embodiments. FIG. 少なくともいくつかの実施形態による、ブロックストレージサーバーからプロバイダ基板拡張の追加のコンピュートインスタンスをブートするための例示的なシステムを示すブロック図である。FIG. 2 is a block diagram illustrating an example system for booting additional compute instances of a provider board extension from a block storage server, in accordance with at least some embodiments. 少なくともいくつかの実施形態による、仮想化ブロックストレージサーバーを管理するための例示的なシステムを示すブロック図である。1 is a block diagram illustrating an example system for managing virtualized block storage servers, according to at least some embodiments. FIG. 少なくともいくつかの実施形態による、ブロックストレージクライアントにボリュームマッピングを提供するための例示的なシステムを示すブロック図である。1 is a block diagram illustrating an example system for providing volume mapping to block storage clients, according to at least some embodiments. FIG. 少なくともいくつかの実施形態による、ボリュームマッピングを追跡するための例示的なシステムを示すブロック図である。1 is a block diagram illustrating an example system for tracking volume mapping, according to at least some embodiments. FIG. 少なくともいくつかの実施形態による、仮想化ブロックストレージサーバーを起動するための方法の動作を示すフロー図である。FIG. 2 is a flow diagram illustrating the operation of a method for starting a virtualized block storage server, according to at least some embodiments. 少なくともいくつかの実施形態による、仮想化ブロックストレージサーバーを使用するための方法の動作を示すフロー図である。FIG. 2 is a flow diagram illustrating the operation of a method for using a virtualized block storage server, according to at least some embodiments. 少なくともいくつかの実施形態による、プロバイダ基板拡張における仮想化ブロックストレージサーバーを管理するための方法の動作を示すフロー図である。FIG. 2 is a flow diagram illustrating the operation of a method for managing virtualized block storage servers in provider board expansion, according to at least some embodiments. 少なくともいくつかの実施形態による、例示的なプロバイダネットワーク環境を示す。1 illustrates an example provider network environment, in accordance with at least some embodiments. 少なくともいくつかの実施形態による、ストレージサービス及びハードウェア仮想化サービスをカスタマーに提供する例示的なプロバイダネットワークのブロック図である。1 is a block diagram of an example provider network that provides storage services and hardware virtualization services to customers, according to at least some embodiments. FIG. 少なくともいくつかの実施形態で使用され得る例示的なコンピューティングデバイスを示すブロック図である。1 is a block diagram illustrating an example computing device that may be used in at least some embodiments. FIG.

本開示は、プロバイダネットワークの外部のネットワークと通信するためのプロバイダ基板拡張を構成するための及びプロバイダネットワークで利用可能なリソースと同じまたは同様である基板拡張上に仮想化リソースを提供するための方法、装置、システム、及び非一時的なコンピュータ可読ストレージ媒体に関する。プロバイダネットワークオペレータ(またはプロバイダ)は、そのユーザ(またはカスタマー)に、様々なタイプのコンピューティング関連リソースの1つ以上を利用する能力を提供し、コンピューティング関連リソースとして、例えば、コンピュートリソース(例えば、仮想マシン(VM)及び/またはコンテナの実行、バッチジョブの実行、サーバーのプロビジョニングなしでのコードの実行))、データ/ストレージリソース(例えば、オブジェクトストレージ、ブロックレベルストレージ、データアーカイブストレージ、データベース及びデータベーステーブル等)、ネットワーク関連リソース(例えば、コンピュートリソースのグループを含む仮想ネットワークの構成、コンテンツ配信ネットワーク(CDN)、ドメインネームサービス(DNS))、アプリケーションリソース(例えば、データベース、アプリケーション構築/展開サービス)、アクセスポリシーまたはアクセスロール、アイデンティティポリシーまたはアイデンティティロール、マシンイメージ、ルーター、及び他のデータ処理リソース等が挙げられる。これら及び他のコンピュートリソースはサービスとして提供され得る。 This disclosure provides a method for configuring a provider board extension to communicate with a network external to a provider network and for providing virtualized resources on a board extension that are the same or similar to resources available in the provider network. , apparatus, system, and non-transitory computer-readable storage medium. A provider network operator (or provider) provides its users (or customers) with the ability to utilize one or more of various types of computing-related resources, such as computing resources (e.g. running virtual machines (VMs) and/or containers, running batch jobs, running code without server provisioning), data/storage resources (e.g., object storage, block-level storage, data archive storage, databases and tables, etc.), network-related resources (e.g., virtual network configurations including groups of compute resources, content delivery networks (CDNs), domain name services (DNS)), application resources (e.g., databases, application build/deployment services), Examples include access policies or roles, identity policies or roles, machine images, routers, and other data processing resources. These and other compute resources may be provided as services.

プロバイダネットワークオペレータは、多くの場合、仮想化技術に依存するサービスとして、これら及び他のコンピューティングリソースを提供する。例えば、仮想化技術を使用して、コンピュートインスタンス(例えば、基盤となるホストOS上でさらに動作し得るまたは動作し得ないハイパーバイザーを使用して動作するゲストオペレーティングシステム(OS)を使用するVM、VMで動作し得るまたは動作し得ないコンテナ、基盤となるハイパーバイザーなしで「ベアメタル」ハードウェアで実行できるインスタンス)を制御または利用する能力をユーザに提供し得、単一の電子デバイスを使用して1つ以上のコンピュートインスタンスを実装できる。したがって、ユーザは、プロバイダネットワークによってホストされるインスタンス管理サービス(時々、ハードウェア仮想化サービスと呼ばれる)によって提供されるコンピュートインスタンスを直接利用して、様々なコンピューティングタスクを行い得る。追加的または代替的に、ユーザは、プロバイダネットワークによって実行されるコードをサブミットすることによって間接的にコンピュートインスタンスを利用し得(例えば、オンデマンドコード実行サービスによって利用される)、次に、コンピュートインスタンスを利用してコードを実行する(一般的に、ユーザが関連する基盤となるコンピュートインスタンス(複数可)をいずれかの制御を行わないでまたは認識しないで実行する)。 Provider network operators often offer these and other computing resources as services that rely on virtualization technology. For example, a Compute instance (e.g., a VM using a guest operating system (OS) that runs using a hypervisor that may or may not additionally run on top of the underlying host OS) using virtualization technology; It may provide users with the ability to control or utilize containers that may or may not run in VMs (instances that can run on "bare metal" hardware without an underlying hypervisor), using a single electronic device. can implement one or more Compute instances. Accordingly, users may directly utilize compute instances provided by instance management services (sometimes referred to as hardware virtualization services) hosted by provider networks to perform various computing tasks. Additionally or alternatively, a user may utilize a Compute instance indirectly by submitting code to be executed by a provider network (e.g., utilized by an on-demand code execution service), and then to execute code (typically without the user having any control over or knowledge of the associated underlying Compute instance(s)).

ユーザにコンピューティング関連リソースを提供するサービスと、ユーザにプロビジョニングされたそのコンピューティング関連リソースとの両方をサポートするリソースは、概して、プロバイダネットワーク基板と称され得る。係るリソースは、一般的に、多くのネットワークコンピュータシステムの形式のハードウェア及びソフトウェアを含む。プロバイダネットワーク基板のトラフィック及び操作は、様々な実施形態では、2つのカテゴリ(論理制御プレーン上で運ばれる制御プレーントラフィック及び論理データプレーン上で運ばれるデータプレーン操作)に大まかに細分され得る。データプレーンは分散コンピューティングシステムを経由するユーザデータの移動を表すが、制御プレーンは分散コンピューティングシステムを経由する制御信号の移動を表す。制御プレーンは、概して、1つ以上の制御サーバーにわたって分散され、それらによって実装される1つ以上の制御プレーンコンポーネントを含む。制御プレーントラフィックは、概して、様々なカスタマー向けの分離された仮想ネットワークの確立、リソースの使用状況及び状態の監視、要求されたコンピュートインスタンスが起動される特定のホストまたはサーバーの識別、必要に応じて追加のハードウェアのプロビジョニング等の管理操作を含む。データプレーンは、プロバイダネットワークに実装されるカスタマーリソース(例えば、コンピューティングインスタンス、コンテナ、ブロックストレージボリューム、データベース、ファイルストレージ)を含む。データプレーントラフィックは、概して、カスタマーリソースを往復するデータを転送する等の非管理操作を含む。制御プレーンコンポーネントは、一般的に、データプレーンサーバーとは別のサーバーのセットに実装され、制御プレーントラフィック及びデータプレーントラフィックは、別の/異なるネットワークを通じて送信され得る。いくつかの実施形態では、制御プレーントラフィック及びデータプレーントラフィックは、異なるプロトコルによってサポートできる。いくつかの実施形態では、プロバイダネットワークを通じて送信されるメッセージ(例えば、パケット)は、トラフィックが制御プレーントラフィックまたはデータプレーントラフィックであるかを示すフラグを含む。いくつかの実施形態では、トラフィックのペイロードを検査して、そのタイプ(例えば、制御プレーンまたはデータプレーン)を決定できる。トラフィックタイプを区別するための他の技術が可能である。 Resources that support both the services that provide computing-related resources to users and the computing-related resources that are provisioned to users may generally be referred to as provider network substrates. Such resources generally include hardware and software in the form of many networked computer systems. Provider network board traffic and operations may be broadly subdivided into two categories in various embodiments: control plane traffic carried on the logical control plane and data plane operations carried on the logical data plane. The data plane represents the movement of user data through the distributed computing system, whereas the control plane represents the movement of control signals through the distributed computing system. The control plane generally includes one or more control plane components distributed across and implemented by one or more control servers. Control plane traffic generally involves establishing isolated virtual networks for various customers, monitoring resource usage and status, identifying specific hosts or servers on which requested Compute instances are launched, and optionally Includes administrative operations such as provisioning additional hardware. The data plane includes customer resources (e.g., compute instances, containers, block storage volumes, databases, file storage) that are implemented in the provider network. Data plane traffic generally includes non-managed operations such as transferring data to and from customer resources. Control plane components are typically implemented on a separate set of servers from the data plane servers, and control plane traffic and data plane traffic may be sent through separate/different networks. In some embodiments, control plane traffic and data plane traffic can be supported by different protocols. In some embodiments, messages (eg, packets) sent through the provider network include a flag indicating whether the traffic is control plane traffic or data plane traffic. In some embodiments, the payload of traffic can be inspected to determine its type (eg, control plane or data plane). Other techniques for differentiating traffic types are possible.

いくつかのカスタマーアプリケーションはプロバイダネットワーク環境に容易に移行するが、いくつかのカスタマーワークロードは、低遅延、大量のデータ、データセキュリティ、または他のカスタマーデータ処理の要求のために、構内にあるまま(「オンプレミス」)にする必要がある。例示的なオンプレミス環境は、カスタマーデータセンター、ロボット統合、フィールドロケーション、コロケーションファシリティ、電気通信施設(例えば、携帯電話基地局の近く)等を含む。カスタマーの要求を満足するために、本開示は、オンプレミスでの基板のようなリソースの展開に関する。用語「プロバイダ基板拡張」(PSE)は、カスタマーがオンプレミス(プロバイダネットワークから地理的に離れた場所等)に展開できるが、プロバイダネットワークで提供されるものと同じまたは同様の機能(例えば、仮想化されたコンピューティングリソース)を提供する、リソース(例えば、ハードウェア、ソフトウェア、ファームウェア、構成メタデータ等)のコレクションを指す。係るリソースは、オンプレミスの場所で一般的に見られるようなラックまたはキャビネットで配信される1つ以上のコンピュータシステムまたはサーバーとして物理的に配信され得る。PSEは、上記に説明したプロバイダネットワークの特性と同様に、オンプレミスに展開できる一連の特性及び能力をカスタマーに提供できる。実質的に、プロバイダネットワークのカスタマーの観点から、PSEは、PSEに対応できるいずれかの物理的場所(例えば、物理スペース、電力、インターネットアクセス等に関する)にセットアップできるプロバイダネットワークの能力のローカル拡張を表す。プロバイダネットワーク自体の観点から、PSEはコアプロバイダネットワーク基板と同じプロバイダネットワークデータセンターに仮想的に配置される一方、カスタマーが選択した展開サイトに物理的に配置されると見なされ得る。少なくともいくつかの実施形態では、PSEを物理的にホストしているカスタマーは、それ自体のカスタマー(例えば、プロバイダネットワークの他のユーザ)に許可を与えて、そのユーザがインスタンスを起動して、カスタマーのオンプレミスの場所でPSE内のその各々のワークロードをホストすることを可能にし、場合によって、そのワークロードがカスタマーのネットワークにアクセスすることを可能にする。 While some customer applications migrate easily to provider network environments, some customer workloads remain on-premises due to low latency, large amounts of data, data security, or other customer data processing requirements. (“on-premises”). Exemplary on-premises environments include customer data centers, robotic integration, field locations, colocation facilities, telecommunications facilities (eg, near mobile phone base stations), and the like. To satisfy customer requirements, the present disclosure relates to the deployment of resources such as substrates on-premises. The term "provider board extension" (PSE) refers to the term "provider board extension" (PSE), which a customer can deploy on-premises (e.g., geographically remote from the provider network), but with the same or similar functionality provided by the provider network (e.g., virtualized). A collection of resources (e.g., hardware, software, firmware, configuration metadata, etc.) that provides Such resources may be physically delivered as one or more computer systems or servers delivered in racks or cabinets such as those commonly found in on-premises locations. A PSE can provide customers with a set of features and capabilities that can be deployed on-premises, similar to those of provider networks described above. Effectively, from the perspective of a provider network customer, a PSE represents a local extension of the provider network's capabilities that can be set up at any physical location (e.g., in terms of physical space, power, Internet access, etc.) that can accommodate the PSE. . From the perspective of the provider network itself, the PSE may be considered to be virtually located in the same provider network data center as the core provider network board, while being physically located at the customer's chosen deployment site. In at least some embodiments, a customer physically hosting a PSE may grant permission to its own customers (e.g., other users of the provider network) to launch instances and host their respective workloads within the PSE at an on-premises location and, in some cases, allow that workload to access the customer's network.

少なくともいくつかの実施形態では、PSEは、例えば、プロバイダネットワークオペレータによって、ハードウェア要素、ソフトウェア要素、及び/またはファームウェア要素の適切な組み合わせで事前に構成され、様々なタイプのコンピューティング関連リソースをサポートし、プロバイダネットワーク自体またはプロバイダネットワークの任意の他のカスタマーのセキュリティを損なうことなく、様々なローカルデータ処理要求を満たす方法でサポートし得る。少なくともいくつかの実施形態では、PSEは、概して、カスタマーがプロバイダネットワーク内のコンピューティング関連リソースにアクセスするために使用するのと同じまたは同様のインターフェースのセットによって管理される。例えば、カスタマーは、プロバイダネットワーク内のコンピューティング関連リソースをプロビジョニング、管理、及び動作させるために他の方法で使用する同じアプリケーションプログラミングインターフェース(API)またはコンソールベースのインターフェースを使用して、プロバイダネットワークを経由して、様々な展開サイトにおけるオンプレムPSEまたは複数のPSE内で、コンピューティング関連リソースをプロビジョニング、管理、及び動作できる。 In at least some embodiments, the PSE is preconfigured with appropriate combinations of hardware, software, and/or firmware elements, e.g., by a provider network operator, to support various types of computing-related resources. and may support in a manner that satisfies various local data processing demands without compromising the security of the provider network itself or any other customers of the provider network. In at least some embodiments, the PSE is generally managed by the same or similar set of interfaces that customers use to access computing-related resources within the provider network. For example, customers can use the same application programming interfaces (APIs) or console-based interfaces that they otherwise use to provision, manage, and operate computing-related resources within a provider network to to provision, manage, and operate computing-related resources within an on-premise PSE or multiple PSEs at various deployment sites.

少なくともいくつかの実施形態では、プロバイダネットワークのリソースは、様々なネットワーキングコンポーネントをインスタンス化して、プロバイダネットワークとPSEとの間の安全で信頼できる通信を確実にする。係るコンポーネントは、PSEとの1つ以上の安全なトンネル(例えば、VPN)を確立できる。係るコンポーネントは、さらに、制御プレーントラフィック及びデータプレーントラフィックをさらに分割し、トラフィックの方向(例えば、PSEを往復する方向)を含む要因に基づいて、各タイプのトラフィックを異なるように処理できる。少なくともいくつかの実施形態では、制御プレーンサービスは、展開されたPSEのためにこれらのネットワーキングコンポーネントを動的にプロビジョニング及び構成する。係る制御プレーンサービスは、各PSEのネットワークコンポーネントを監視し、プロバイダネットワーク内で発生する障害が原因でPSEとの通信が失われるのを防ぐように設計された自己修復または修復メカニズムを呼び出しできる。 In at least some embodiments, provider network resources instantiate various networking components to ensure secure and reliable communications between the provider network and the PSE. Such components can establish one or more secure tunnels (eg, VPNs) with the PSE. Such components can further partition control plane traffic and data plane traffic and treat each type of traffic differently based on factors including the direction of the traffic (eg, to and from the PSE). In at least some embodiments, control plane services dynamically provision and configure these networking components for deployed PSEs. Such control plane services may monitor the network components of each PSE and invoke self-healing or repair mechanisms designed to prevent loss of communication with the PSE due to failures occurring within the provider network.

プロバイダネットワークのカスタマーに一般的に提供されるサービスの1つは、インスタンスが物理ストレージリソースの論理ビューが提示されるため、インスタンスの仮想化された永続ディスクとして機能できるブロックストレージサービスであるが、この論理ストレージスペースをストレージの実際の物理的場所にマッピングすることは仮想化システムによって処理される。ボリュームは1回以上複製され、カスタマーに高いアベイラビリティ及び耐久性を提供し得、レプリカは、一般的に、異なるサーバーに記憶される。カスタマーは1つ以上のブロックストレージボリュームをインスタンスにアタッチでき、インスタンスをサポートするクライアントは、仮想化されたブロックストレージボリュームを使用してインスタンスのブロックベース操作を行うことができる。例えば、カスタマーは、特定のインスタンスを所与のブートボリューム(例えば、オペレーティングシステムを含むボリューム)から起動して、インスタンスによって実行されるカスタマーアプリケーションによって記憶されたデータをサポートするために別のアタッチボリュームを有するように指定し得る。利用可能なストレージに関して高い適応性を提供するために、プロバイダネットワークは、所与のアタッチボリュームをサポートする物理ストレージデバイスを、所与のコンピュートインスタンスをサポートするコンピューティングリソースから切り離す。従来、ブロックストレージサービスをサポートするブロックストレージサーバーのフリートは、アタッチされている物理ストレージデバイス(例えば、ソリッドステートドライブ、磁気ドライブ等)を多くの論理ボリュームに分割するだろう。1つのブロックストレージサーバーが、数百またはさらに数千のインスタンスのストレージリソースをサポートし得る。これらのブロックストレージサーバーは、一般的に、「ベアメタル」構成で実行される。サーバーソフトウェアは、例えば、仮想マシン上またはコンテナ内の代わりに、専用サーバーハードウェア上で直接起動するオペレーティングシステム環境内で実行される。 One of the services commonly offered to provider network customers is block storage services, which allow instances to act as virtualized persistent disks for instances as they are presented with a logical view of physical storage resources. Mapping the logical storage space to the actual physical location of storage is handled by the virtualization system. Volumes may be replicated one or more times to provide high availability and durability to customers, and replicas are typically stored on different servers. A customer can attach one or more block storage volumes to an instance, and clients that support the instance can use the virtualized block storage volumes to perform block-based operations on the instance. For example, a customer may boot a particular instance from a given boot volume (e.g., the volume containing the operating system) and create another attached volume to support data stored by customer applications run by the instance. It can be specified to have. To provide high flexibility with respect to available storage, provider networks separate the physical storage devices that support a given attached volume from the computing resources that support a given compute instance. Traditionally, a fleet of block storage servers supporting block storage services will partition the attached physical storage devices (eg, solid state drives, magnetic drives, etc.) into many logical volumes. One block storage server may support hundreds or even thousands of instances of storage resources. These block storage servers typically run in a "bare metal" configuration. Server software runs within an operating system environment that boots directly on dedicated server hardware, for example, instead of on a virtual machine or within a container.

プロバイダ基板の拡張機能の容量がアベイラビリティゾーンの容量と比較して大幅に制限され得るため、このベアメタルブロックストレージサーバーの設計は、基板拡張にはあまり適し得ない。例えば、いくつかの基板拡張には単一のサーバー(または別の少数のサーバー)だけ有し得るため、サーバー全体をストレージリソースのブロック専用にすることは不可能であり得、それによって、そのサーバーをコンピュートインスタンスに使用できなくなる。この課題に対処するために、本開示の実施形態は、コンピュートインスタンス内で起動できるようにブロックストレージサービスを仮想化して、その結果、限られた容量のより適応性があり効率的な使用を可能にする。例えば、単一のサーバーを構成して、コンピュートインスタンスと、そのアタッチボリュームを仮想化したインスタンス(例えば、ブロックストレージサーバー)との両方をホストするように構成でき、PSEの有限のリソースのセットの使用に高い適応性を提供する。また、単一のサーバーを分離された障害ドメインに分割して、複数のブロックストレージサーバー(及びさらに、ボリュームの複数のレプリカ)をホストし得る。障害ドメインとは、概して、システムの他の部分に影響を与えることなく障害が発生する可能性のあるシステムの論理部分を指す。ベアメタルシステムで実行されるとき、ブロックストレージシステムの障害ドメインは、一般的に、ベアメタルコンピュータシステム全体に対応する。仮想化を使用して障害ドメインをサーバーごとのベースからサブサーバーベースに切り離すことによって、ブロックストレージサーバーインスタンスをサポートするために使用される基盤となるハードウェアの冗長性を利用して、PSE内の障害ドメインの数が増加し得る。結果として、ブロックストレージサーバーは、障害が発生したときに障害に関連付けられるデータを回復するためのワークロードが減るように、少量のデータを個々に管理できる。これらのブロックストレージインスタンスは、仮想プライベートクラウド(VPC)として作成でき、ブロックストレージボリュームと通信するインスタンスクライアントは、また、この同じVPCで通信できる。有益になるように、これにより、VPC暗号化を活用して、基板拡張における通信をより安全にできる。 This bare metal block storage server design may not be well suited for board expansion because the provider board's expansion capability capacity may be significantly limited compared to the availability zone capacity. For example, because some board expansions may have only a single server (or another few servers), it may not be possible to dedicate an entire server to a block of storage resources, thereby is no longer available for Compute instances. To address this challenge, embodiments of the present disclosure virtualize block storage services so that they can be launched within Compute instances, thereby enabling more adaptive and efficient use of limited capacity. Make it. For example, a single server can be configured to host both a Compute instance and an instance that has virtualized its attached volumes (e.g., a block storage server), making use of the PSE's finite set of resources. provides high adaptability. Also, a single server may be partitioned into isolated fault domains to host multiple block storage servers (and even multiple replicas of volumes). A fault domain generally refers to a logical part of a system that can fail without affecting other parts of the system. When running on a bare metal system, a block storage system's fault domain typically corresponds to the entire bare metal computer system. By using virtualization to separate fault domains from a per-server to a sub-server basis, you can take advantage of redundancy in the underlying hardware used to support block storage server instances within a PSE. The number of failure domains may increase. As a result, block storage servers can manage small amounts of data individually so that when a failure occurs, the workload for recovering data associated with the failure is reduced. These block storage instances can be created as virtual private clouds (VPCs), and instance clients that communicate with block storage volumes can also communicate in this same VPC. Beneficially, this allows the use of VPC encryption to make communications in the board extension more secure.

しかしながら、プロバイダ基板の拡張機能でブロックストレージサービスを仮想化すると、ブロックストレージサービスがブートボリュームを記憶することが可能であろう基板拡張で起動される前に、ブートボリューム(また、ブロックストレージサービスマシンイメージとも称される)からブロックストレージサービスを初期化することを含む特定の技術的な課題が生じる。PSEはオンプレミスファシリティに低遅延のコンピュートリソースを提供するが、それらのリソースはプロバイダネットワークに戻るときに遅延の増加を受ける。PSEはプロバイダネットワークの領域内のブロックストレージサーバーに依存し得るが、係る依存は遅延の増加の影響を受けるため、好ましくない。以下でさらに詳細に説明するように、本開示の実施形態は、プロバイダネットワークの領域に記憶されたデータからPSEのローカルストレージのブロックストレージサーバーのブートボリュームをロードし、次に、ブロックストレージサーバーをブートし、ボリュームをPSE内で起動した他のインスタンスに提供できるローカルブート技術によってこの課題に対処する。したがって、開示されたローカルブート技術は、ブロックストレージサービス自体がまだ基板拡張に存在しないときでも、カスタマーがブロックストレージサービスマシンイメージを使用して基板拡張でインスタンスを起動することを可能にする。 However, when virtualizing a block storage service with a provider board extension, it would be possible for the block storage service to store the boot volume (also the block storage service machine image) before it is started on the board extension. Particular technical challenges arise, including initializing block storage services from Although PSEs provide low-latency compute resources to on-premises facilities, those resources are subject to increased latency when returning to the provider network. Although the PSE may rely on block storage servers within the realm of the provider network, such dependence is undesirable because it suffers from increased latency. As described in further detail below, embodiments of the present disclosure load the block storage server boot volume of the PSE's local storage from data stored in an area of the provider network and then boot the block storage server. This challenge is addressed by local boot techniques that can provide volumes to other instances launched within the PSE. Accordingly, the disclosed local boot technique enables a customer to launch an instance on a board extension using a block storage service machine image, even when the block storage service itself is not yet present on the board extension.

開示されたシステム及び技術は、また、PSEをプロバイダネットワークに接続することによって可能になり得る潜在的なセキュリティ問題からプロバイダネットワークを保護する。いくつかの実施形態では、PSEは、動作するために、PSEが設置されているカスタマーサイトからプロバイダネットワーク基板(例えば、マシンの物理ネットワーク)への安全なネットワーキングトンネルを要求する可能性がある。これらのトンネルは、仮想化されたコンピューティングインスタンス(例えば、VM)及び基板の両方でホストされる仮想インフラストラクチャコンポーネントを含み得る。トンネルコンポーネントの例は、VPC及びプロキシコンピューティングインスタンスならびに/またはコンピューティングインスタンスで起動しているコンテナを含む。PSE内の各サーバーは、少なくとも2つのトンネル(1つは制御プレーントラフィック用で、もう1つはデータプレーントラフィック用である)を使用し得る。以下でさらに詳細に説明するように、プロバイダネットワーク基板とPSEの間のネットワークパスに沿って位置付けられる中間リソースは、基板とPSEとの間を流れるトラフィックを安全に管理できる。 The disclosed systems and techniques also protect provider networks from potential security issues that may be made possible by connecting a PSE to a provider network. In some embodiments, a PSE may require a secure networking tunnel from the customer site where the PSE is installed to the provider network board (eg, the machine's physical network) in order to operate. These tunnels may include virtual infrastructure components hosted on both virtualized computing instances (eg, VMs) and substrates. Examples of tunnel components include VPCs and proxy computing instances and/or containers running on computing instances. Each server within a PSE may use at least two tunnels, one for control plane traffic and one for data plane traffic. As described in further detail below, intermediate resources located along the network path between the provider network board and the PSE can securely manage traffic flowing between the board and the PSE.

少なくともいくつかの実施形態では、プロバイダネットワークはクラウドプロバイダネットワークである。クラウドプロバイダネットワークまたは「クラウド」は、アクセス可能な仮想化コンピューティングリソース(コンピュートリソース、ストレージリソース、及びネットワークリソース、アプリケーション、ならびにサービス等)の大規模なプールを指す。クラウドは、カスタマーコマンドに応じてプログラムでプロビジョニング及びリリースできる構成可能なコンピューティングリソースの共有プールへの便利なオンデマンドネットワークアクセスを提供できる。これらのリソースは動的にプロビジョニング及び再構成され、可変負荷に適応できる。したがって、クラウドコンピューティングは、パブリックにアクセス可能なネットワーク(例えば、インターネット、セルラー通信ネットワーク)を通じてサービスとして配信されるアプリケーションと、それらのサービスを提供するクラウドプロバイダデータセンターのハードウェア及びソフトウェアの両方と見なすことができる。 In at least some embodiments, the provider network is a cloud provider network. A cloud provider network or "cloud" refers to a large pool of accessible virtualized computing resources, such as compute, storage, and network resources, applications, and services. The cloud can provide convenient, on-demand network access to a shared pool of configurable computing resources that can be provisioned and released programmatically in response to customer commands. These resources can be dynamically provisioned and reconfigured to adapt to variable loads. Cloud computing therefore refers to both applications delivered as services over publicly accessible networks (e.g., the Internet, cellular communications networks) and the hardware and software of cloud provider data centers that provide those services. be able to.

クラウドプロバイダネットワークはいくつかの領域として形成でき、領域は、クラウドプロバイダがデータセンターをクラスター化する地理的領域である。各領域は、例えば、ファイバー通信接続のプライベート高速ネットワークを介して相互に接続された2つ以上のアベイラビリティゾーンを含み得る。アベイラビリティゾーンは、別のアベイラビリティゾーンにあるものとは別の電源、別のネットワーク、及び別のクーリングを伴う1つ以上のデータセンターファシリティを含む分離された障害ドメインを指す。好ましくは、領域内のアベイラビリティゾーンは、同じ自然災害によって同時に2つ以上のアベイラビリティゾーンがオフラインにならないように、互いに十分に離れた場所に位置付けられる。カスタマーは、パブリックにアクセス可能なネットワーク(例えば、インターネット、セルラー通信ネットワーク)を介してクラウドプロバイダネットワークのアベイラビリティゾーンに接続できる。本明細書で説明するPSEは、また、パブリックにアクセス可能なネットワークを介して1つ以上のアベイラビリティゾーンに接続できる。 A cloud provider network can be formed as a number of regions, where a region is a geographical area in which a cloud provider clusters its data centers. Each region may include two or more availability zones interconnected via, for example, a private high speed network of fiber communication connections. Availability Zone refers to an isolated failure domain that includes one or more data center facilities with separate power supplies, separate networks, and separate cooling than those in another Availability Zone. Preferably, the availability zones within a region are located sufficiently far apart from each other such that the same natural disaster does not take more than one availability zone offline at the same time. Customers can connect to the cloud provider network's availability zones via publicly accessible networks (eg, the Internet, cellular communications networks). The PSEs described herein can also connect to one or more availability zones via a publicly accessible network.

クラウドプロバイダネットワークは、基板と称される物理ネットワーク(例えば、シートメタルボックス、ケーブル)を含み得る。クラウドプロバイダネットワークは、また、基板で起動する仮想化コンピューティングリソースのオーバーレイネットワークを含み得る。したがって、ネットワークパケットは、オーバーレイネットワークの構成(例えば、VPC、セキュリティグループ)に従って、基板ネットワークに沿ってルーティングできる。マッピングサービスは、これらのネットワークパケットのルーティングを調整できる。マッピングサービスがオーバーレイIP及びネットワーク識別子の組み合わせを基板IPにマッピングする地域分散ルックアップサービスであることにより、分散基板コンピューティングデバイスはパケットの宛先を検索できる。 A cloud provider network may include a physical network called a substrate (eg, sheet metal box, cable). The cloud provider network may also include an overlay network of virtualized computing resources running on the board. Thus, network packets can be routed along the substrate network according to the configuration of the overlay network (eg, VPC, security groups). A mapping service can coordinate the routing of these network packets. The mapping service is a geographically distributed lookup service that maps the overlay IP and network identifier combination to the substrate IP so that the distributed substrate computing device can locate the destination of the packet.

説明するために、各物理ホストは基板ネットワークにIPアドレスを有し得る。ハードウェア仮想化技術により、例えば、ホストの仮想マシンとして、複数のオペレーティングシステムをホストコンピュータ上で同時に起動することが可能になり得る。ホストのハイパーバイザーまたは仮想マシンモニタは、ホストの様々な仮想マシン間でホストのハードウェアリソースを割り付け、仮想マシンの実行を監視する。各仮想マシンはオーバーレイネットワークの1つ以上のIPアドレスが提供され得、ホストの仮想マシンモニタは、ホストの仮想マシンのIPアドレスを認識し得る。仮想マシンモニタ(及び/またはネットワーク基板の他のデバイスもしくはプロセス)は、カプセル化プロトコル技術を使用して、クラウドプロバイダネットワーク内の異なるホストの仮想化リソース間で、ネットワークパケット(例えば、クライアントIPパケット)をネットワーク基板上にカプセル化及びルーティングし得る。カプセル化プロトコル技術をネットワーク基板で使用して、オーバーレイネットワークパスまたはオーバーレイルートを介してネットワーク基板のエンドポイント間でカプセル化されたパケットをルーティングできる。カプセル化プロトコル技術は、ネットワーク基板にオーバーレイされた仮想ネットワークトポロジを提供するものと見なされ得る。カプセル化プロトコル技術は、IPオーバーレイアドレス(パブリックIPアドレス)を基板IPアドレス(プライベートIPアドレス)にマッピングするマッピングディレクトリを維持するマッピングサービスを含み得、マッピングサービスは、エンドポイント間でパケットをルーティングするためのクラウドプロバイダネットワーク状の様々なプロセスによってアクセスできる。 To illustrate, each physical host may have an IP address on the substrate network. Hardware virtualization techniques may allow multiple operating systems to run simultaneously on a host computer, for example, as host virtual machines. A host's hypervisor or virtual machine monitor allocates the host's hardware resources among the host's various virtual machines and monitors the execution of the virtual machines. Each virtual machine may be provided with one or more IP addresses of the overlay network, and the host's virtual machine monitor may recognize the host's virtual machine's IP address. The virtual machine monitor (and/or other devices or processes on the network board) uses encapsulation protocol techniques to transfer network packets (e.g., client IP packets) between virtualized resources of different hosts within the cloud provider network. can be encapsulated and routed onto the network board. Encapsulation protocol techniques can be used in the network board to route encapsulated packets between endpoints of the network board via an overlay network path or route. Encapsulation protocol technology may be viewed as providing a virtual network topology overlaid on the network substrate. The encapsulation protocol technique may include a mapping service that maintains a mapping directory that maps IP overlay addresses (public IP addresses) to substrate IP addresses (private IP addresses), the mapping service for routing packets between endpoints. can be accessed by various processes such as cloud provider networks.

当業者が本開示に照らして理解するように、特定の実施形態は、以下の(a)~(c)のいくつかまたは全てを含む様々な利点を達成することが可能であり得る。(a)プロバイダネットワークによって可能になったスケーラビリティ、セキュリティ、アベイラビリティ、及び他の運用上の利点をさらに維持しながら、カスタマーによって選択されたサイトにおいてプロバイダ管理インフラストラクチャ(例えば、PSE)を使用する場所に依存しない方式で、プロバイダネットワークオペレータのカスタマーが様々なアプリケーションを配備することを可能にする、(b)カスタマーデータセンターとプロバイダネットワークデータセンターとの間のリンク等を通じて長距離にわたって転送する必要があるアプリケーションデータの量及び結果として生じる量を減らす、(c)アプリケーションをデータソース/宛先の近くに移動することによって、潜在的に大量のデータが入力として消費され得るもしくは出力として生成され得るアプリケーションのレイテンシー及び応答性が全体的に向上する、ならびに/または(d)機密性の高いアプリケーションデータのセキュリティが向上する。 As those skilled in the art will appreciate in light of this disclosure, certain embodiments may be capable of achieving various advantages, including some or all of the following (a)-(c). (a) where the provider managed infrastructure (e.g., PSE) is used at sites selected by the customer while still maintaining the scalability, security, availability, and other operational benefits enabled by the provider network; (b) applications that need to be transferred over long distances, such as over links between customer data centers and provider network data centers; (c) reduce the amount of data and the resulting amount of data; (c) by moving the application closer to the data source/destination, the latency and overall responsiveness is improved; and/or (d) security of sensitive application data is improved.

図1は、少なくともいくつかの実施形態による、プロバイダネットワークの外部のネットワーク内に配置されたプロバイダ基板拡張によって拡張された例示的なプロバイダネットワークを示すブロック図である。プロバイダネットワーク100内で、カスタマーは、1つ以上の分離された仮想ネットワーク102を作成できる。カスタマーは、IVN内でコンピュートインスタンス101を起動して、そのアプリケーションを実行できる。これらのコンピュートインスタンス101は、プロバイダネットワーク基板(図示せず)の一部である基板アドレス可能デバイス(SAD)によってホストされる。同様に、プロバイダネットワーク基板の一部であるSADは、制御プレーンサービス104をホストできる。例示的な制御プレーンサービス104は、カスタマーまたは他の制御プレーンサービスがインスタンス及び/またはIVNを起動及び構成することを可能にするインスタンス管理サービス(時々、ハードウェア仮想化サービスと称される)、オブジェクトストレージを提供するオブジェクトストレージサービス、ブロックストレージデバイスをインスタンスにアタッチする能力を提供するブロックストレージサービス、様々なデータベースタイプを提供するデータベースサービス等を含む。 FIG. 1 is a block diagram illustrating an example provider network extended with provider board extensions located in a network external to the provider network, in accordance with at least some embodiments. Within provider network 100, a customer can create one or more isolated virtual networks 102. A customer can launch a compute instance 101 within the IVN to run its applications. These compute instances 101 are hosted by substrate addressable devices (SADs) that are part of a provider network substrate (not shown). Similarly, a SAD that is part of a provider network board can host control plane services 104. Exemplary control plane services 104 include instance management services (sometimes referred to as hardware virtualization services) that enable customers or other control plane services to launch and configure instances and/or IVNs, object These include object storage services that provide storage, block storage services that provide the ability to attach block storage devices to instances, database services that provide various database types, and so on.

プロバイダネットワーク100内に示されるコンポーネントは、論理コンポーネントとして扱うことができることに留意されたい。前述のように、これらのコンポーネントは、プロバイダネットワーク基板(図示せず)のSADによってホストされる。例えば、プロバイダネットワーク基板は、分離された仮想ネットワーク(IVN)内で動作するコンテナまたは仮想マシンを使用してインスタンス101をホストできる。係るコンテナまたは仮想マシンは、SADによって実行される。別の例として、プロバイダネットワーク基板は、ベアメタル構成(例えば、仮想化なし)でSADを使用して、1つ以上の制御プレーンサービス104をホストできる。少なくともいくつかの実施形態では、SADは、別のネットワーク(例えば、カスタマーネットワーク、IVN等)ではなく、プロバイダネットワークのネットワークアドレスを介してアドレス可能であるハードウェアによって実行されるソフトウェア(例えば、サーバー)を指す。少なくともいくつかの実施形態では、SADは、さらに、ソフトウェアを実行する基盤となるハードウェア(例えば、コンピュータシステム)を指し得る。 Note that the components shown within provider network 100 can be treated as logical components. As mentioned above, these components are hosted by the SAD of the provider network board (not shown). For example, the provider network board can host instance 101 using a container or virtual machine running within an isolated virtual network (IVN). Such containers or virtual machines are executed by SAD. As another example, a provider network board can host one or more control plane services 104 using SAD in a bare metal configuration (eg, without virtualization). In at least some embodiments, SAD is software executed by hardware (e.g., a server) that is addressable via the network address of the provider network rather than another network (e.g., customer network, IVN, etc.). refers to In at least some embodiments, SAD may also refer to the underlying hardware (eg, computer system) that executes the software.

図示のように、プロバイダネットワーク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との間に存在する。 As shown, the provider network 100 communicates with a provider board extension (PSE) 188 located within a customer network 185 and a PSE 198 located within a customer network 195. Each PSE includes one or more substrate addressable devices (SADs), such as SADs 189A-189N shown within PSE 188. Such SAD 189 facilitates the provisioning of computing related resources within the PSE. As in SAD 189A-189N, solid box-ellipse-dashed box combination illustrations of components are generally used to indicate that more than one of those components may be present in this and subsequent drawings. (note that the corresponding textual references refer to the singular or plural form of the component, with or without a trailing letter). Customer gateway/router 186 provides connections between provider network 100 and PSE 188 as well as connections between PSE 188 and other customer resources 187 (e.g., other on-premise servers or on-premise services connected to customer network 185). provide. Similarly, customer gateway/router 196 provides connectivity between provider network 100 and PSE 198 as well as between PSE 198 and other customer resources 197. Various connectivity options exist between provider network 100 and PSE 198, such as a public network such as the Internet as shown in PSE 188 or a direct connection as shown in PSE 198.

プロバイダネットワーク100内で、制御プレーントラフィック106は、概して、(ただし、常にではなく)SADに向けられる一方、データプレーントラフィック104は、概して、(ただし、常にではなく)インスタンスに向けられる。例えば、いくつかのSADは、インスタンスの起動及び終了を可能にするAPIを販売できる。制御プレーンサービス104は、制御プレーンを介して係るSADのAPIにコマンドを送信して、IVN102で新しいインスタンスを起動できる。 Within the provider network 100, control plane traffic 106 is generally (but not always) directed to the SAD, while data plane traffic 104 is generally (but not always) directed to the instances. For example, some SADs may sell APIs that allow launching and terminating instances. The control plane service 104 can launch a new instance on the IVN 102 by sending commands to the API of the relevant SAD via the control plane.

IVNは、その名前によって示唆されるように、プロバイダネットワークの他のリソース(例えば、他のIVN)から論理的に分離されるまたは離されるホストされる(例えば、仮想化された)リソースのセットを含み得る。制御プレーンサービスは、各IVNに識別子を割り当ててそれを他のIVNと区別することを含むIVNをセットアップ及び構成できる。プロバイダネットワークは、IVN間のピアリング関係等をセットアップすることによって、IVN間の通信を可能にする様々な方法を提供できる(例えば、あるIVNのゲートウェイが別のIVNのゲートウェイと通信するように構成される)。 An IVN, as suggested by its name, is a set of hosted (e.g., virtualized) resources that are logically separated or remote from other resources in a provider network (e.g., other IVNs). may be included. Control plane services can set up and configure IVNs, including assigning an identifier to each IVN to distinguish it from other IVNs. A provider network can provide various ways to enable communication between IVNs, such as by setting up peering relationships between IVNs (e.g., one IVN's gateway is configured to communicate with another IVN's gateway). ).

IVNは、様々な目的で確立できる。例えば、IVNは、カスタマー専用のリソースのセットを確保することによって特定のカスタマー向けにセットアップされ得、カスタマーに提供されるそのリソースのセットのネットワーク構成に関してかなりの適応性がある。IVN内で、カスタマーはサブネットをセットアップし、所望のプライベートIPアドレスを様々なリソースに割り当て、着信及び発信トラフィックを規定するセキュリティルールをセットアップする等を行い得る。少なくともいくつかの実施形態では、デフォルトで、あるIVN内にセットアップされたプライベートネットワークアドレスのセットは、別のIVNから(または、より一般的には、IVNの外側から)アクセス不可能であり得る。 IVNs can be established for various purposes. For example, an IVN may be set up for a particular customer by reserving a set of resources dedicated to the customer, and there is considerable flexibility regarding the network configuration of that set of resources provided to the customer. Within the IVN, customers can set up subnets, assign desired private IP addresses to various resources, set up security rules governing incoming and outgoing traffic, and so on. In at least some embodiments, by default, the set of private network addresses set up within one IVN may be inaccessible from another IVN (or more generally, from outside the IVN).

トンネリング技術は、プロバイダネットワーク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のソフトウェアコンポーネントによって行われる。 Tunneling techniques facilitate traversal of IVN traffic between instances hosted by different SADs of provider network 100. For example, a newly launched instance within IVN 102 may have IVN address A and be hosted by a SAD with substrate address X, while instance 101 may have IVN address B and be hosted by a SAD with substrate address Y. To facilitate communication between these compute instances, SAD ) Each instance is encapsulated within the payload of the packet with address information of the hosting SAD. Packets sent between SADs may further include an identifier of IVN 102 to indicate that the data is directed to IVN 102, as opposed to another IVN hosted by the SAD at substrate address Y. In some embodiments, the SAD further encrypts packets sent between instances within the payload of the packets sent between the SADs using an encryption key associated with the IVN. In at least some embodiments, encapsulation and encryption is performed by a software component of the SAD hosting the instance.

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つのコンポーネントの全ての動作を行うアプリケーション等によって、様々な方法で組み合わされ得る)。 In the case of a PSE, provider network 100 includes one or more networking components, thereby effectively extending the provider network board outside of provider network 100 to a PSE connected to a customer's on-premises network. Such components can ensure that data plane and control plane operations targeting the PSE are securely, reliably, and transparently communicated to the PSE. In the illustrated embodiment, PSE interface 108, PSESAD proxy 110, and PSESAD anchor 112 facilitate data plane and control plane communications between provider network 100 and PSE 188. Similarly, PSE interface 118, PSESAD proxy 120, and PSESAD anchor 122 facilitate data plane and control plane communications between provider network 100 and PSE 198. As described herein, the PSE interface receives control plane traffic and data plane traffic from the provider network, sends such control plane traffic to the PSESAD proxy, and sends such data plane traffic to the PSE. The PSE interface also receives data plane traffic from the PSE and transmits such data plane traffic to appropriate destinations within the provider network. The PSESAD proxy receives control plane traffic from the PSE interface and sends such control plane traffic to the PSESAD anchor. The PSESAD anchor receives control plane traffic from the PSESAD proxy and sends such control plane traffic to the PSE. The PSESAD anchor also receives control plane traffic from the PSE and sends such control plane traffic to the PSESAD proxy. The PSESAD proxy also receives control plane traffic from the PSESAD anchor and sends such control plane traffic to the appropriate destination within the provider network. Other embodiments may employ different combinations or configurations of network components to facilitate communication between provider network 100 and a PSE (e.g., a PSE interface, a PSESAD proxy function, and/or a PSESAD anchor). Both PSE interfaces and PSESAD proxies, both PSESAD proxies and PSESAD anchors, applications that perform the operations of all three components, etc. may be combined in various ways).

上記に示したように、各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をインスタンスから「デタッチ」することと称され得る。 As indicated above, each PSE has one or more substrate network addresses for SADs (eg, SADs 189A-189N). Since their board addresses are not directly reachable via the provider network 100, the PSE interfaces 108, 118 masquerade with an attached virtual network address (VNA) that matches the board address of each PSE. As shown, PSE interface 108 has attached VNA(s) 150 that match the SAD address(es) of PSE 188 and PSE interface 118 has attached VNA(s) 150 that match the SAD address(es) of PSE 198. (Multiple possible) 152 are attached. For example, traffic destined for a SAD with Internet Protocol (IP) address 192.168.0.10 within PSE 188 is sent to PSE interface 108 with an attached virtual address 192.168.0.10 and Traffic directed to the SAD with IP address 192.168.1.10 is sent to PSE interface 118 with an attached virtual address of 192.168.1.10. Note that IPv4 or IPv6 addressing may be used. In at least some embodiments, a VNA is a logical construct that allows various network-related attributes, such as IP addresses, to be programmatically transferred between instances. Such transfers may be referred to as "attaching" the VNA to the instance and "detaching" the VNA from the instance.

高レベルで、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内のプロバイダネットワークによってホストされるインスタンス)にトラフィックを送信することが許可されることを確実にできることに留意されたい。 At a high level, the PSE interface is essentially a packet forwarding component that routes traffic based on whether it is control plane traffic or data plane traffic. Note that given the substrate addressing and encapsulation techniques described above, since both control traffic and data plane traffic are directed to the SAD, they are both routed to the PSE interface. For control plane traffic, the PSE interface routes traffic to the PSESAD proxy based on the SAD address. For data plane traffic, the PSE interface includes one or more encrypted data plane traffic tunnels between provider network 100 and the PSE (e.g., tunnel 191 between PSE interface 108 and PSE 188, tunnel 191 between PSE interface 108 and PSE 188, It establishes a tunnel 193) with the PSE 198 and functions as an endpoint. For data plane traffic received from provider network 100, the PSE interface encrypts the traffic for transmission to the PSE through the tunnel. For data plane traffic received from a PSE, the PSE interface decodes the traffic, optionally verifies the SAD addressing of the packet, and sends the traffic to the identified SAD destination via provider network 100. Note that if a PSE interface receives traffic from a PSE that does not conform to the expected format (e.g., protocol) used to transmit data plane traffic, the PSE interface can drop such traffic. In addition, the PSE interface verifies the addressing of the encapsulated packets so that the originator of the traffic (e.g., an instance hosted by the PSE within a particular IVN) is connected to the addressed destination (e.g., in the same or a different IVN). Note that you can ensure that you are allowed to send traffic to (instances hosted by the provider network within).

PSEの各SADは1つ以上のPSEインターフェースの対応するグループを有し、グループの各メンバーは、PSEとのデータプレーントラフィック用に1つ以上のトンネルを確立する。例えば、4つのSADを有するPSEに4つのPSEインターフェースがある場合、PSEインターフェースは、それぞれ、SADのそれぞれのデータプレーントラフィックエンドポイントとの安全なトンネル(例えば、16のトンネル)を確立する。代替として、関連するVNAをグループの各メンバーにアタッチすることによって、PSEインターフェースのグループを複数のSADによって共有し得る。 Each SAD of a PSE has a corresponding group of one or more PSE interfaces, and each member of the group establishes one or more tunnels for data plane traffic with the PSE. For example, if there are four PSE interfaces in a PSE with four SADs, each PSE interface establishes a secure tunnel (eg, 16 tunnels) with a respective data plane traffic endpoint of the SAD. Alternatively, a group of PSE interfaces may be shared by multiple SADs by attaching an associated VNA to each member of the group.

各PSEは、1つ以上のPSESADプロキシと、プロバイダネットワーク100とPSEのSADとの間の制御プレーントラフィックを処理する1つ以上のPSESADアンカーとを有する。制御プレーントラフィックは、一般的に、コマンド-レスポンス形式またはリクエスト-レスポンス形式を有する。例えば、プロバイダネットワーク100の制御プレーンサービスは、インスタンスを起動するためのコマンドをPSESADに発行できる。PSEリソースの管理がプロバイダネットワークから容易になるため、セキュアトンネルを通じて送信される制御プレーンコマンドは、一般的に、PSEから発信されるはずはない。高レベルで、PSESADプロキシは、プロバイダネットワーク100とPSEとの間のステートフルセキュリティ境界として機能する(係る境界は、時々、データダイオードと称される)。そのために、PSESADプロキシは、受信した制御プレーントラフィックに様々なセキュリティポリシーまたはセキュリティルールを適用する等の1つ以上の技術を採用できる。他の制御プレーンサービス104は、間接的または直接的に公開APIを提供し、PSEによってホストされるインスタンスが非トンネリング通信を介して(例えば、インターネット等のパブリックネットワークを通じて)プロバイダネットワーク100にコマンドを発行することを可能にし得ることに留意されたい。 Each PSE has one or more PSESAD proxies and one or more PSESAD anchors that handle control plane traffic between provider network 100 and the PSE's SAD. Control plane traffic typically has a command-response or request-response format. For example, a control plane service of provider network 100 can issue a command to PSESAD to start an instance. Control plane commands sent over a secure tunnel generally should not originate from the PSE, as management of PSE resources is facilitated from the provider network. At a high level, the PSESAD proxy acts as a stateful security boundary between the provider network 100 and the PSE (such a boundary is sometimes referred to as a data diode). To that end, the PSESAD proxy may employ one or more techniques, such as applying various security policies or rules to the received control plane traffic. Other control plane services 104 indirectly or directly provide public APIs for PSE-hosted instances to issue commands to provider network 100 via non-tunneled communications (e.g., over a public network such as the Internet). Note that it may be possible to

プロバイダネットワーク100内から発信され、PSEに向けられるトラフィックに関して、PSESADプロキシは、PSE内のその対応するSADの制御プレーンエンドポイントAPIを提供できる。例えば、インスタンスをホストできるPSESADのPSESADプロキシは、インスタンスを起動、構成、及び終了するために制御プレーン操作を受信できるAPIと一致するAPIを提供できる。PSESADに向けられ、PSESADプロキシによって受信されたAPIコール及び関連パラメータに応じて、PSESADプロキシは様々な操作を行うことができる。いくつかの操作に関して、PSESADプロキシは、操作パラメータ及び関連パラメータを修正せずに宛先SADに渡すことができる。いくつかの実施形態では、PSESADプロキシは、それらの操作を終える前に、プロバイダネットワーク100内から受信されたAPIコールのパラメータがAPIに対して適格であることを検証できる。 For traffic originating from within the provider network 100 and directed to the PSE, the PSESAD proxy may provide the control plane endpoint API of its corresponding SAD within the PSE. For example, a PSESAD proxy for a PSESAD that can host an instance can provide an API that matches the API that can receive control plane operations to launch, configure, and terminate the instance. Depending on the API calls and related parameters directed to and received by the PSESAD proxy, the PSESAD proxy may perform various operations. For some operations, the PSESAD proxy may pass the operation parameters and related parameters to the destination SAD without modification. In some embodiments, PSESAD proxies may verify that the parameters of API calls received from within provider network 100 are eligible for the API before completing their operations.

いくつかのAPIコールまたは関連パラメータに関して、PSESADは、機密情報がプロバイダネットワーク100の外側に送信されるのを防ぐための媒介装置として機能できる。例示的な機密情報は、暗号化キー、ネットワーク証明書等の暗号化情報を含む。例えば、PSESADプロキシは、機密キーを使用してデータを復号化し、PSEに曝すことができるキーを使用してデータを再暗号化できる。別の例として、PSESADプロキシは、プロバイダネットワーク100内から発信された第1のセキュアセッション(例えば、トランスポート層セキュリティ(TLS)セッション)を終了し、異なる証明書を使用して対応するSADとの新しいセキュアセッションを作成し、プロバイダネットワーク証明書がPSEにリークするのを防ぐことができる。したがって、PSESADプロキシは、機密情報を含むプロバイダネットワーク100内から特定のAPIコールを受信して、機密情報を交換するPSESADに代替APIコールまたは交換APIコールを発行できる。 For some API calls or related parameters, PSESAD can act as an intermediary to prevent sensitive information from being sent outside of provider network 100. Exemplary sensitive information includes cryptographic information such as encryption keys, network certificates, etc. For example, the PSESAD proxy can decrypt the data using a private key and re-encrypt the data using a key that can be exposed to the PSE. As another example, the PSESAD proxy may terminate a first secure session (e.g., a Transport Layer Security (TLS) session) originating from within the provider network 100 and connect it to the corresponding SAD using a different certificate. A new secure session can be created and provider network certificates can be prevented from being leaked to the PSE. Accordingly, the PSESAD proxy can receive certain API calls from within the provider network 100 that include sensitive information and issue alternative or replacement API calls to the PSESAD that exchanges the sensitive information.

PSEから発信され、プロバイダネットワーク100に向けられるトラフィックに関して、PSESADプロキシは、例えば、PSEから発信される全ての制御プレーンコマンドもしくは制御プレーン要求、またはプロバイダネットワーク内の公開されている制御プレーンエンドポイントに向けられていないコマンドもしくは要求だけをドロップできる。 With respect to traffic originating from a PSE and destined for the provider network 100, the PSESAD proxy, for example, Only undefined commands or requests can be dropped.

いくつかの実施形態では、PSESADプロキシは、もしあれば、予想される応答の性質に応じて、制御プレーン操作への応答を処理できる。例えば、いくつかの応答に関して、PSESADプロキシは、対応するコマンドまたは要求の発信者にいずれかのメッセージを送信せずに、単に応答をドロップできる。別の例として、いくつかの応答に関して、PSESADプロキシは、応答をサニタイズして、サニタイズされた応答を対応するコマンドまたは要求の発信者に制御プレーントラフィック107を介して送信する前に、対応するコマンドまたは要求の予想される応答フォーマットに従うことを確実にできる。さらに別の例として、PSESADプロキシは、(すぐに、またはSADからの実際の応答の受信時に)応答を生成し、生成された応答を対応するコマンドまたは要求の発信者に制御プレーントラフィック107を介して送信できる。 In some embodiments, the PSESAD proxy can process responses to control plane operations depending on the nature of the expected response, if any. For example, for some responses, the PSESAD proxy may simply drop the response without sending any message to the originator of the corresponding command or request. As another example, for some responses, the PSESAD proxy sanitizes the response and sends the response to the corresponding command or request before sending the sanitized response to the originator of the corresponding command or request via control plane traffic 107. or can ensure that the expected response format of the request is followed. As yet another example, the PSESAD proxy generates a response (either immediately or upon receipt of an actual response from the SAD) and passes the generated response to the originator of the corresponding command or request via control plane traffic 107. can be sent.

プロバイダネットワーク100とPSEとの間のセキュリティ境界として機能する一部として、PSESADプロキシは、プロバイダネットワークのコンポーネント(例えば、制御プレーンサービス104)とPSEの各SADとの間の通信状態を追跡できる。状態データは、セッション期間中のセッションキー、未処理の応答を追跡するために関連する送信元及び宛先を使用した保留中のアウトバウンドAPIコール、プロバイダネットワーク100内から受信されたAPIコールと、交換または置換された機密情報等とともにSADに発行されたそのAPIコールとの関係を含み得る。 As part of serving as a security boundary between the provider network 100 and the PSE, the PSESAD proxy can track the state of communications between components of the provider network (eg, control plane services 104) and each SAD of the PSE. State data is exchanged or exchanged with session keys during the session, pending outbound API calls with associated sources and destinations to track outstanding responses, and API calls received from within provider network 100. It may include the relationship to that API call issued to the SAD, along with replaced sensitive information, etc.

いくつかの実施形態では、PSESADプロキシは、制御プレーントラフィックに加えて、他のPSEからプロバイダへのネットワーク通信のためのステートフル通信を提供できる。係る通信は、ドメインネームシステム(DNS)トラフィック、ネットワークタイムプロトコル(NTP)トラフィック、及びオペレーティングシステムアクティベーショントラフィック(例えば、Windows(登録商標)アクティベーション用)を含み得る。 In some embodiments, the PSESAD proxy can provide stateful communication for network communication from other PSEs to providers in addition to control plane traffic. Such communications may include Domain Name System (DNS) traffic, Network Time Protocol (NTP) traffic, and operating system activation traffic (eg, for Windows activation).

いくつかの実施形態では、PSEの特定のコンポーネントだけが、プロバイダネットワーク100との暗号化された制御プレーントラフィックトンネルのエンドポイントとして機能することが可能である。プロバイダネットワーク100とPSEとの間の接続に冗長性及び信頼性を提供するために、PSESADアンカーは、PSEの利用可能なトンネルエンドポイントのそれぞれのプロバイダネットワーク側エンドポイントとして機能できる。図示のように、PSESADアンカー(複数可)112はトンネル190を介して制御プレーントラフィックをPSE188にトンネルする働きをし、PSESADアンカー(複数可)122はトンネル192を介して制御プレーントラフィックをPSE1198にトンネルする働きをする。 In some embodiments, only certain components of the PSE may serve as endpoints for encrypted control plane traffic tunnels with provider network 100. To provide redundancy and reliability for the connection between the provider network 100 and the PSE, the PSESAD anchor can serve as a provider network side endpoint for each of the PSE's available tunnel endpoints. As shown, PSESAD anchor(s) 112 serve to tunnel control plane traffic to PSE 188 via tunnel 190 and PSESAD anchor(s) 122 serve to tunnel control plane traffic to PSE 1198 via tunnel 192. work to do.

様々な実施形態は、上記に説明したトラフィックを処理するための技術を使用することと、プロバイダネットワーク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)の中で起動する。 Various embodiments both use the techniques for processing traffic described above and isolate those network components that are exposed to traffic from other parts of provider network 100. This can limit the radial impact of any planned attack originating from outside the provider network (e.g., from a situation where the PSE is included). Specifically, network components can operate within one or more IVNs to limit the scope to which an attacker can penetrate, thereby protecting the operations of both the provider network and other customers. Accordingly, various embodiments may instantiate the PSE interface, PSESAD proxy, and PSESAD anchor as applications executed by virtual machines or containers running within one or more IVNs. In the illustrated embodiment, a group of PSE interfaces of different PSEs are activated within a multi-tenant IVN (eg, PSE interface IVN 132 of PSE 188 and PSE 198). In other embodiments, each group of PSE interfaces can be launched with a single tenant IVN. Additionally, each group of PSESAD proxies and each group of PSESAD anchors for a given PSE is a single-tenant IVN (e.g., PSESAD Proxy IVN 134 of PSE 188, PSESAD Anchor IVN 136 of PSE 188, PSESAD Proxy IVN 138 of PSE 198, and PSESAD Proxy IVN 138 of PSE 198). N40 ).

ネットワークコンポーネント(例えば、PSEインターフェース、PSESADプロキシ、及びPSESADアンカー)のそれぞれに複数のインスタンスを動作させることによって提供される冗長性により、プロバイダネットワークは、PSEからプロバイダへのネットワーク通信を中断することなく、それらのコンポーネントをホストするインスタンスを定期的にリサイクルすることが可能であることに留意されたい。リサイクルは、例えば、インスタンスの再起動または新しいインスタンスの起動と、例えば、リサイクルされたインスタンスのアドレスを用いる他のインスタンスの再構成とを含み得る。定期的なリサイクルは、ネットワークコンポーネントが侵害された場合、攻撃者が侵害されたネットワークコンポーネントを利用し得る時間枠を制限する。 The redundancy provided by running multiple instances of each of the network components (e.g., PSE interfaces, PSESAD proxies, and PSESAD anchors) allows provider networks to Note that it is possible to periodically recycle the instances hosting those components. Recycling may include, for example, restarting an instance or launching a new instance and reconfiguring other instances using, for example, the address of the recycled instance. Periodic recycling limits the time window in which an attacker can take advantage of a compromised network component if the network component is compromised.

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を構成できる。 PSE connection manager 180 manages the setup and configuration of network components that provide connectivity between provider network 100 and PSEs. As previously discussed, PSE interfaces 108, 118, PSESAD proxies 110, 120, and PSESAD anchors 112, 122 may be hosted as instances by the provider network board. The PSE connectivity manager 180 connects the PSE interface(s) to the PSESAD proxy/proxy(s) when the PSE is shipped to a customer and/or when the PSE comes online and exchanges configuration data with the provider network. , and activation of the PSE's PSESAD anchor(s). In addition, PSE connection manager 180 can further configure PSE interface(s), PSESAD proxy/proxies, and PSESAD anchor(s). For example, the PSE attach manager 180 attaches the VNA(s) corresponding to the PSE's SAD to the PSE interface(s) and assigns the address of the PSESAD's proxy/proxies to the PSE interface(s). and provide the PSESAD's proxy/proxies with the address of the PSESAD anchor(s) of the PSE's PSESAD. Additionally, the PSE connection manager 180 may be configured to provide a variety of connections, such as to enable communication between the PSE interface IVN 132 and the PSE's PSESAD proxy IVN, and between the PSESAD proxy IVN and the PSE's PSESAD anchor IVN. You can configure IVNs for components.

トンネル190~193の確立を容易にするために、トンネルエンドポイントは、各々のネットワークの外側から(例えば、PSEインターフェース及びPSESADアンカーに関するプロバイダネットワークの外側から、PSEのトンネルエンドポイントに関するカスタマーネットワークの外側から)トラフィックを受信できる1つ以上のアタッチされたVNAまたは割り当てられた物理ネットワークアドレスを有し得ることに留意されたい。例えば、PSE188は、単一の外向きのネットワークアドレスを有し、ポートアドレス変換(PAT)または複数の外向きのネットワークアドレスを使用して、複数のSADへの通信を管理できる。PSESADアンカー112、122のそれぞれは、外向きのネットワークアドレスを有し得るまたは(例えば、PATを介して)共有でき、PSEインターフェース108、118のそれぞれは、外向きのアクセス可能なネットワークアドレスを有し得るまたは(例えば、PATを介して)共有できる。 To facilitate the establishment of the tunnels 190-193, the tunnel endpoints are connected from outside the respective networks (e.g., from outside the provider network for the PSE interface and PSESAD anchor, from outside the customer network for the PSE's tunnel endpoints). ) Note that it may have one or more attached VNAs or assigned physical network addresses that can receive traffic. For example, the PSE 188 may have a single outgoing network address and manage communications to multiple SADs using port address translation (PAT) or multiple outgoing network addresses. Each of the PSESAD anchors 112, 122 may have or be shared (e.g., via PAT) with an outward facing network address, and each of the PSE interfaces 108, 118 may have an outward accessible network address. can be obtained or shared (eg, via PAT).

図2は、少なくともいくつかの実施形態による、例示的なプロバイダ基板拡張を示すブロック図である。図示の実施形態では、PSE188は、1つ以上のPSEフレームワーク202及び1つ以上のホスト220を含む。高レベルで、ホスト220のそれぞれは、プロバイダネットワーク基板(例えば、プロバイダネットワーク内のインスタンスをホストするその基板リソース)の一部を形成するコンピュータシステムの少なくとも一部と機能的に(場合によって構造的に)同様であり得る一方、PSEフレームワーク(複数可)202は、PSE内のプロバイダネットワーク基板をエミュレートするために、ならびに制御プレーントラフィックトンネル及びデータプレーントラフィックトンネル(例えば、図1のトンネル190~193)を介してプロバイダネットワークへの接続を提供するためのサポートインフラストラクチャを提供する。 FIG. 2 is a block diagram illustrating an example provider board extension, in accordance with at least some embodiments. In the illustrated embodiment, PSE 188 includes one or more PSE frameworks 202 and one or more hosts 220. At a high level, each of the hosts 220 is functionally (and in some cases structurally) connected to at least a portion of a computer system that forms part of a provider network board (e.g., its board resources that host instances within the provider network). ), while the PSE framework(s) 202 may be similar to ) to provide the support infrastructure for providing connectivity to provider networks.

少なくともいくつかの実施形態では、PSEフレームワーク202のそれぞれは、PSE制御プレーントラフィック240及びPSEデータプレーントラフィック242によって示されるように、メッシュのようなアーキテクチャにおいて、制御プレーントラフィックまたはデータプレーントラフィックをホスト220のそれぞれから送信または受信でき、逆もまた同様である。係る冗長性により、カスタマーがプロバイダネットワークに期待し得る信頼性レベルが可能になる。 In at least some embodiments, each of the PSE frameworks 202 transmits control plane traffic or data plane traffic to the hosts 220 in a mesh-like architecture, as illustrated by PSE control plane traffic 240 and PSE data plane traffic 242. and vice versa. Such redundancy allows for the level of reliability that customers can expect from provider networks.

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とのトンネルを確立する)。 PSE framework 202 includes one or more control plane tunnel endpoints 204 that terminate encrypted tunnels (eg, tunnel 190, tunnel 192) that carry control plane traffic. In some embodiments, provider network 100 hosts a PSESAD anchor for each of the control plane tunnel endpoints 204. Returning to the provider network, the PSESAD proxy or proxies (e.g., proxy 110) can distribute control plane traffic to the PSESAD anchors (e.g., anchor 112) and load the control plane traffic to the PSE framework of PSE 188. effectively distributed over 202. The PSE framework 202 further includes one or more data plane tunnel endpoints 206 that terminate encrypted tunnels (e.g., tunnel 191, tunnel 193) that carry data plane traffic from the provider network's PSE interfaces to PSE frames. Works 202 may further be connected in a mesh-like architecture (eg, a given PSE interface 108 establishes a tunnel with a respective data plane tunnel endpoint 206 of PSE framework 202).

上記に示したように、制御プレーントラフィックのパケット及びデータプレーントラフィックのパケットは、送信元及び宛先の両方としてSADを含み得る。後者(データプレーントラフィックのパケット)はSADベースのアドレス指定を有するパケットにカプセル化される。図示のように、PSEフレームワーク202はSAD289であり、ホスト220はSAD290である。PSE188内のSAD(例えば、SAD289、290)は、また、プロバイダネットワーク内の対応するPSESADの単数のプロキシまたは複数のプロキシ(例えば、PSESADプロキシ110)で確立されたセキュアセッションにセキュアセッション終了(例えば、TLS終了)を提供できることに留意されたい。 As indicated above, control plane traffic packets and data plane traffic packets may include SADs as both sources and destinations. The latter (packets of data plane traffic) are encapsulated into packets with SAD-based addressing. As shown, PSE framework 202 is SAD 289 and host 220 is SAD 290. A SAD within a PSE 188 (e.g., SADs 289, 290) may also provide secure session termination (e.g., Note that TLS termination) can be provided.

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等にまたはそこから、カスタマーネットワークとの通信を容易にできる。 The SAD sells one or more control plane APIs to handle control plane operations directed to the SAD that manage the SAD's resources. For example, PSE manager 210 of PSE framework 202 can sell control plane APIs for managing components of PSE framework 202. One such component may include control plane traffic and data plane traffic, such as, for example, control plane traffic directed to SAD 289 for PSE manager 210 and control plane traffic or data plane traffic directed to SAD 290 for host manager 222. and/or a PSE gateway 208 that routes data plane traffic to and from PSE 188. PSE gateway 208 may further facilitate communication with the customer network, such as to or from other customer resources 187 accessible via the PSE deployment site's network (eg, customer network 185).

PSEマネージャ210のAPIは、PSEフレームワーク202のPSEゲートウェイ208を構成するための1つ以上のコマンドを含み得る。PSEフレームワーク202の他のコンポーネント212は、DNS、動的ホスト構成プロトコル(DHCP)、及び/またはNTPサービス等のホスト220のためのPSEの基板の動作に関与する様々なアプリケーションまたはサービスを含み得る。 The PSE manager 210 API may include one or more commands for configuring the PSE gateway 208 of the PSE framework 202. Other components 212 of PSE framework 202 may include various applications or services involved in the operation of the PSE substrate for host 220, such as DNS, Dynamic Host Configuration Protocol (DHCP), and/or NTP services. .

ホストマネージャ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にローカルに提供するプロバイダネットワークのサービス(例えば、ブロックストレージサービス、データベースサービス等)を実行し得る。 Host manager 222 may sell control plane APIs for managing components of host 220. In the illustrated embodiment, host manager 222 includes instance manager 224 and network manager 226. Instance manager 224 can handle API calls related to managing host 220, including commands to start, configure, and/or terminate instances hosted by host 220. For example, an instance management service within a provider network (not shown) can issue control plane commands to instance manager 224 to launch an instance on host 220. As shown, host 220 hosts a customer instance 232 running inside a customer IVN 233 , a third party (3P) instance 234 running inside a 3PIVN 235 , and a service instance 236 running inside a service IVN 237 . Note that each of these IVNs 233, 234, 235 can extend an existing IVN established within a provider network. Customer instance 232 may run several customer applications or workloads, and 3P instances 234 may run applications or workloads of another party that the customer has authorized to launch instances within PSE 188. , service instance 236 may execute provider network services (eg, block storage services, database services, etc.) that are provided locally to PSE 188.

ネットワークマネージャ226は、ホスト220によって受信されたSADアドレス指定されたデータプレーントラフィックを処理できる。係るトラフィックに関して、ネットワークマネージャは、IVNパケットをアドレス指定されたホストされるインスタンスに送信する前に、IVNパケットの必要なカプセル化解除を行うことができる。さらに、ネットワークマネージャ226は、ホストされるインスタンスによって送信されたトラフィックのルーティングを処理できる。ホストされるインスタンスが(例えば、同じホストで)ローカルにホストされる別のインスタンスにトラフィックを送信しようとするとき、ネットワークマネージャ226はそのトラフィックをアドレス指定されたインスタンスに転送できる。ホストされるインスタンスが(例えば、同じホストにない)非ローカルインスタンスにトラフィックを送信しようとするとき、ネットワークマネージャ226は、非ローカルインスタンスをホストするデバイスの基板アドレスを見つけ、対応するパケットをカプセル化し、オプションで、SADアドレス指定されたパケットに暗号化し、そのパケットを、データプレーンを通じて送信できる(例えば、PSE内の別のホストに送信する、またはPSEゲートウェイ208を介してプロバイダネットワークに戻すのいずれかが行われる)。ネットワークマネージャ226は、データプレーントラフィックのルーティングを容易にする様々なデータを含み得る、またはそれらのデータにアクセスできることに留意されたい(例えば、これは、ホストされたインスタンスから受信されたパケットの宛先にIVNネットワークアドレスを有するインスタンスをホストするSADのアドレスを検索するためである)。 Network manager 226 can process SAD addressed data plane traffic received by host 220. For such traffic, the network manager may perform the necessary decapsulation of the IVN packets before sending them to the addressed hosted instance. Additionally, network manager 226 can handle the routing of traffic sent by hosted instances. When a hosted instance attempts to send traffic to another locally hosted instance (eg, on the same host), network manager 226 can forward the traffic to the addressed instance. When a hosted instance attempts to send traffic to a non-local instance (e.g., not on the same host), network manager 226 finds the board address of the device hosting the non-local instance, encapsulates the corresponding packet, Optionally, the packet can be encrypted into a SAD-addressed packet and sent across the data plane (e.g., either to another host within the PSE or back to the provider network via the PSE gateway 208). carried out). Note that the network manager 226 may contain or have access to various data that facilitates the routing of data plane traffic (e.g., it may determine the destination of packets received from hosted instances). (to find the address of the SAD hosting the instance with the IVN network address).

図3は、少なくともいくつかの実施形態による、プロバイダネットワークとプロバイダ基板拡張との間の例示的な接続を示すブロック図である。具体的には、図3は、プロバイダネットワークとPSEとの間の例示的な接続を示す。図3に関して及び図の上部に示されるように、用語「インバウンド」はプロバイダネットワークによってPSEから受信されたトラフィックを指し、用語「アウトバウンド」はプロバイダネットワークによってPSEに送信されるトラフィックを指すことに留意されたい。図示されていないが、この例では、PSEがSADの2つのPSEフレームワーク202及び2つのホスト220(合計4つ)を含むと仮定する。PSEフレームワークは、制御プレーントラフィック用のトンネルエンドポイント204A、204Bと、データプレーントラフィック用のトンネルエンドポイント206A、206Bとを提供する。アウトバウンドトラフィックは復号化され、PSEゲートウェイ208A、208Bを介してPSE基板内の宛先に送信される。 FIG. 3 is a block diagram illustrating example connections between a provider network and provider board extensions, according to at least some embodiments. Specifically, FIG. 3 shows an example connection between a provider network and a PSE. Note with respect to FIG. 3 and as shown at the top of the figure, the term "inbound" refers to traffic received from the PSE by the provider network, and the term "outbound" refers to traffic sent by the provider network to the PSE. sea bream. Although not shown, this example assumes that the PSE includes two SAD PSE frameworks 202 and two hosts 220 (four total). The PSE framework provides tunnel endpoints 204A, 204B for control plane traffic and tunnel endpoints 206A, 206B for data plane traffic. Outbound traffic is decrypted and sent via PSE gateways 208A, 208B to a destination within the PSE board.

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によって共有され得る。 For each of the four SADs, the provider network includes a VNA, one or more PSE interfaces, and one or more PSESAD proxies. In this example, the provider network includes a PSESAD VNA 304, two PSE interfaces 108A, 108B, and two PSESAD proxies 110A, 110B for a given PSESAD. Together, the PSE interface(s) and the proxy/proxies of the PSESAD may be referred to as slices as shown, with each slice corresponding to a particular SAD within the PSE. In other embodiments, the PSE interface(s) may be shared by all VNAs for the VPN rather than a single VNA for one of the SADs.

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つ以上のキーまたは関連付けられるキーを記憶する(またはそれにアクセスできる)。 PSESAD VNA 304 acts as a front for a given PSE through which other components of the provider network can send traffic to and receive traffic from the PSE's corresponding SAD. A load balancer (not shown) can route outbound traffic sent to PSESAD VNA 304 to one of PSE interfaces 108A, 108B. The illustrated PSE interfaces 108A, 108B for a given slice and those of other slices (not shown) operate within PSE interface IVN 132. The PSE interfaces 108A, 108B send control plane traffic to the PSE by sending data plane traffic to the PSE via a data plane traffic tunnel and forwarding the control plane traffic to the slice's PSESAD proxy 110A, 110B. The PSE interfaces 108A, 108B provide the network address of the PSESAD proxy/proxies of the associated SAD, the network address of the data plane tunnel endpoint(s), and communication with those endpoint(s). Stores (or has access to) one or more keys or associated keys of the data plane tunnel endpoint(s) of the PSE to protect.

少なくともいくつかの実施形態では、PSEインターフェース110A、110Bは、データプレーントンネルエンドポイント206A、206Bのそれぞれとのデータプレーントラフィックのための安全なトンネルを確立し、N個のデータプレーントンネルが生じ、ここで、NはSADごとのPSEインターフェースの数である(各SADが同じ数のインターフェースを有すると仮定する)にデータプレーントンネルエンドポイントの数を掛け、それにSADの数を掛ける。この例では、16個のデータプレーントンネルがPSEインターフェースとデータプレーントンネルエンドポイントとの間に確立される(つまり、SADごとに2つのPSEインターフェース×2つのデータプレーントンネルエンドポイント×4つのSAD)。 In at least some embodiments, the PSE interfaces 110A, 110B establish secure tunnels for data plane traffic with each of the data plane tunnel endpoints 206A, 206B, resulting in N data plane tunnels, where where N is the number of PSE interfaces per SAD (assuming each SAD has the same number of interfaces) multiplied by the number of data plane tunnel endpoints, multiplied by the number of SADs. In this example, 16 data plane tunnels are established between the PSE interfaces and the data plane tunnel endpoints (ie, 2 PSE interfaces per SAD x 2 data plane tunnel endpoints x 4 SADs).

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アンカー(複数可)のネットワークアドレスを記憶する(またはそれにアクセスできる)。 The PSESAD proxies 110A, 110B receive control plane traffic from the PSE interfaces 108A, 108B to perform various operations described elsewhere herein and route the traffic through either of the two PSESAD anchors 112A, 112B. and send control plane traffic to the PSE. Similarly, the PSESAD proxies 110A, 110B receive control plane traffic from either of the two PSESAD anchors 112A, 112B to perform various operations described elsewhere herein and to Control plane traffic 107 to the destination. The illustrated PSESAD proxies 110A, 110B for a given slice and the proxies for other slices (not shown) operate within the PSESAD proxy IVN 134. The PSE interfaces 108A, 108B store (or have access to) the network address of the PSESAD anchor(s).

少なくともいくつかの実施形態では、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プロキシとの間で確立された同じキーを使用できる。 In at least some embodiments, the PSESAD proxies may have access to or otherwise exchange information with the shared data store 306. Such information exchange can be used for several reasons. For example, recall that a PSESAD proxy can sell an API interface to emulate the API interface of an associated SAD within a PSE. One PSESAD proxy may not be supported by different PSESAD proxies because some communications may be stateful and various load balancing techniques may prevent the same PSESAD proxy from handling all communications for a given set of operations. There may be a need to access previously processed communication state (eg, PSESAD proxy 110A sends control plane operations to the PSE, and PSESAD proxy 110B receives responses to the control plane operations from the PSE). For inbound control plane traffic, the PSESAD proxy checks whether the inbound message matches the expected state and, if so, sends the control plane Messages can be sent via traffic 107. If there is no match, PSESAD proxies 110A, 110B can drop the traffic. As another example, recall that a PSESAD proxy can bridge separate secure sessions (eg, TLS sessions) such that provider network credentials are not sent to the PSE. Again, the PSESAD proxy that handles the outbound message may be different from the PSESAD proxy that handles the response to that message, so the PSESAD proxy that handles the response message sends the secure response message via the control plane traffic 107. The same key established between the originator of the outbound message and the PSESAD proxy that processed the outbound message can be used to send it to the originator.

この例では、各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つ以上のキーまたは関連付けられるキーを記憶する(またはそれにアクセスできる)。 In this example, each PSE framework provides a single control plane tunnel endpoint 204. For each available control plane tunnel endpoint 204, the provider network includes a PSE anchor. In this example, the provider network includes two PSE anchors 112A, 112B. PSESAD anchors 112A, 112B operate within PSESAD anchor IVN 136. PSE anchor 112 receives control plane traffic from each of the eight PSESAD proxies (two per slice in each of the four SADs) and sends the traffic to the PSE. The PSE anchor also receives control plane traffic from the PSE and sends the traffic from the PSE to one of two PSESAD proxies associated with the SAD from which the traffic originates. The PSE anchors 112A, 112B provide the network address of the SAD's respective PSESAD proxy/proxies, the network address of the control plane tunnel endpoint(s), and the communication with those endpoint(s). Stores (or has access to) one or more keys or associated keys of the PSE's control plane tunnel endpoint(s) to protect.

少なくともいくつかの実施形態では、ネットワークコンポーネントまたはプロバイダネットワークは、ロードバランシング技術を採用して、プロバイダネットワークと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を伴うロードバランサを採用することと、各データ送信者に複数の受信者のアドレスを提供することと、選択した受信者をアプリケーションレベルで分散すること等を含む。 In at least some embodiments, a network component or provider network may employ load balancing techniques to distribute the workload of routing control and data plane traffic between the provider network and the PSEs. For example, traffic sent to PSESA DVNA 304 may be distributed between PSE interfaces 108A, 108B. As another example, each of the PSE interfaces 108 can distribute traffic between data plane tunnel endpoints 206A, 206B. As yet another example, each of the PSE interfaces 108 can distribute traffic between PSESAD proxies 110A, 110B. As yet another example, each of PSESAD proxies 110 can distribute outbound traffic between PSESAD anchors 112A, 112B. As yet another example, PSESAD anchor 112 can distribute inbound traffic between PSESAD proxies 110A, 110B. In either case, such load balancing may be performed by a transmitting entity or a load balancer (not shown). An exemplary load balancing technique is to employ a load balancer with a single VNA that distributes traffic to multiple components "behind" that address, and to assign multiple recipient addresses to each data sender. distribution of selected recipients at the application level, etc.

図1~図3に示される実施形態は、制御プレーントラフィック及びデータプレーントラフィック用の別のトンネルの確立を示し、他の実施形態は、制御プレーントラフィック及びデータプレーントラフィックの両方のための1つ以上のトンネルを採用し得ることに留意されたい。例えば、PSEインターフェースは、共有トンネルを通じてPSEに伝送するために、データプレーントラフィックをPSESADアンカーにルーティングでき、制御プレーントラフィックでPSESADプロキシによって実行される追加の動作をバイパスする。 The embodiments shown in FIGS. 1-3 depict the establishment of separate tunnels for control plane traffic and data plane traffic; other embodiments include one or more tunnels for both control plane traffic and data plane traffic. Note that tunnels may be employed. For example, the PSE interface can route data plane traffic to the PSESAD anchor for transmission to the PSE over a shared tunnel, bypassing the additional operations performed by the PSESAD proxy on the control plane traffic.

図4及び図5は、少なくともいくつかの実施形態による、仮想化ブロックストレージシステムの例を示すブロック図である。図4に示されるように、プロバイダネットワーク400またはPSE488はホスト420Aを含む。ホスト420Aは、ブロックストレージサーバーインスタンス450のホストである。ブロックストレージサーバーインスタンス450をホストする際、ホスト420Aは、ブロックストレージサーバーインスタンス450のためにプロビジョニングされたストレージデバイス447(例えば、仮想ドライブまたは仮想ディスク)として、ホストストレージデバイス(複数可)421のいくらかの量をプロビジョニングしている。ブロックストレージサーバーインスタンス450は、プロビジョニングされたストレージデバイス447を分割し、他のインスタンスに代わってボリュームを作成及びホストできる。プロバイダネットワーク400のインスタンス管理サービス(図示せず)は、インスタンスマネージャ426を介して、プロバイダネットワーク400のホストまたはPSE488のホストのいずれかで係るブロックストレージサーバーインスタンスの起動を開始できる。インスタンスマネージャ426は、インスタンス(例えば、仮想マシン)用のホストリソース(例えば、計算、メモリ、ネットワーク、ストレージ)をプロビジョニングし、インスタンスを起動及び終了できる仮想マシンマネージャ(VMM)、ハイパーバイザー、または他の仮想化プログラムであり得る。 4 and 5 are block diagrams illustrating example virtualized block storage systems, according to at least some embodiments. As shown in FIG. 4, provider network 400 or PSE 488 includes host 420A. Host 420A is the host for block storage server instance 450. In hosting a block storage server instance 450, the host 420A may use some of the host storage device(s) 421 as storage devices 447 (e.g., virtual drives or virtual disks) provisioned for the block storage server instance 450. Provisioning amount. Block storage server instance 450 can partition provisioned storage device 447 and create and host volumes on behalf of other instances. An instance management service (not shown) of provider network 400 can initiate the startup of such block storage server instances on either provider network 400 hosts or PSE 488 hosts via instance manager 426 . Instance manager 426 is a virtual machine manager (VMM), hypervisor, or other device that can provision host resources (e.g., compute, memory, network, storage) for instances (e.g., virtual machines), and start and terminate instances. It can be a virtualization program.

ホスト420Aは、また、インスタンスIVN432内のインスタンスA430のホストである。ブロックストレージサーバーインスタンス450は、ブロックストレージボリュームA434をインスタンスA430に提供し、ブロックストレージボリュームB440を別のインスタンス(図示せず)に提供する。ホスト420Aは、ホストされるインスタンスがブロックストレージサーバーによってホストされるブロックストレージボリュームにアクセスする(例えば、仮想ブロックストレージインターフェースをインスタンスに提供することによってアクセスする)ブロックストレージクライアント460Aを含む。具体的には、ブロックストレージクライアント460は、インスタンスに「アタッチされた」ボリューム(例えば、インスタンスA430にアタッチされたブロックストレージボリュームA434)に発行されたブロックストレージ操作を傍受する、またはそうでなければ受信するソフトウェアプログラムであり得る。 Host 420A is also the host of instance A 430 within instance IVN 432. Block storage server instance 450 provides block storage volume A 434 to instance A 430 and block storage volume B 440 to another instance (not shown). Host 420A includes a block storage client 460A through which hosted instances access block storage volumes hosted by block storage servers (eg, by providing virtual block storage interfaces to the instances). Specifically, block storage client 460 intercepts or otherwise receives block storage operations issued to volumes “attached” to an instance (e.g., block storage volume A 434 attached to instance A 430). It can be a software program that

図5に示されるように、プロバイダネットワーク400またはPSE488は、2つのホスト420A及び420Bを含む。この場合も、ホスト420Aはブロックストレージサーバーインスタンス450のホストである。ホスト420BはインスタンスIVN438内のインスタンスB436のホストである。ブロックストレージサーバーインスタンス450は、ブロックストレージボリュームB440をインスタンスB436に提供する。ホスト420Bは、ホストされるインスタンスがブロックストレージサーバーによってホストされるブロックストレージボリュームにアクセスするブロックストレージクライアント460Bを含む。 As shown in FIG. 5, provider network 400 or PSE 488 includes two hosts 420A and 420B. Again, host 420A is the host of block storage server instance 450. Host 420B is the host of instance B 436 within instance IVN 438. Block storage server instance 450 provides block storage volume B 440 to instance B 436. Host 420B includes a block storage client 460B whose hosted instances access block storage volumes hosted by block storage servers.

ボリュームがインスタンスにアタッチされるとき、ブロックストレージクライアントは、ボリュームを、レプリカをホストするブロックストレージサーバーインスタンス(複数可)に関連付けるマッピングを取得する。ブロックストレージクライアントは、ブロックストレージサーバーインスタンスのそれぞれとの通信セッションを(例えば、ネットワークベースのデータ転送プロトコルによって)開くことができる。ブロックストレージ操作をインスタンスから受信すると、ブロックストレージクライアントは適切なブロックストレージサーバー(複数可)に操作を発行して、インスタンスの操作を実現する。例えば、図4を参照すると、インスタンスA430は、ボリュームA434から所与のブロックアドレス(例えば、論理ブロックアドレスまたはLBA)でデータのブロックの読み取りを発行できる。ブロックストレージクライアント460Aは、読み取り操作を受信して、インスタンスアタッチボリュームA434のブロックストレージサーバーインスタンス450へのマッピングデータに基づいて、要求されたブロックアドレスを含む操作をブロックストレージサーバーインスタンス450に発行する。ブロックストレージサーバーインスタンス450からデータを受信すると、ブロックストレージクライアント460Aは、インスタンスA430にデータを提供する。同様の一連の動作は、図5のインスタンスB436、ブロックストレージクライアント460B、ブロックストレージサーバーインスタンス450、及びボリュームB440の間で実行できる。 When a volume is attached to an instance, the block storage client obtains a mapping that associates the volume with the block storage server instance(s) that hosts the replica. A block storage client may open a communication session (eg, via a network-based data transfer protocol) with each of the block storage server instances. Upon receiving a block storage operation from an instance, the block storage client issues the operation to the appropriate block storage server(s) to implement the operation on the instance. For example, referring to FIG. 4, instance A 430 may issue a read of a block of data at a given block address (eg, logical block address or LBA) from volume A 434. Block storage client 460A receives the read operation and issues an operation to block storage server instance 450 that includes the requested block address based on the mapping data of instance attached volume A 434 to block storage server instance 450. Upon receiving data from block storage server instance 450, block storage client 460A provides the data to instance A 430. A similar set of operations can be performed between instance B 436, block storage client 460B, block storage server instance 450, and volume B 440 of FIG. 5.

図4及び図5を参照すると、ブロックストレージクライアントとブロックストレージサーバーインスタンスとの間のブロックストレージメッセージングは、グローバルネットワークブロックデバイス(GNDB)等のネットワークベースのデータ転送プロトコルを使用して送信できる。本明細書の他の箇所で説明されるように、係るメッセージは、データプレーントラフィックとしてカプセル化され、各々のホストのネットワークマネージャ424によって、ブロックストレージクライアント460とブロックストレージサーバー450との間でルーティングできる。ブロックストレージサーバーインスタンスが、ブロックストレージ操作を発行するインスタンスと同じホストによってホストされるいくつかの実施形態では、ブロックストレージクライアントは、ネットワークベースのデータ転送プロトコルによって関連操作をネットワークマネージャに発行でき、次に、ネットワークマネージャはホストされるブロックストレージサーバーインスタンスに操作を内部でルーティングできる。ブロックストレージサーバーインスタンスが、ブロックストレージ操作を発行するインスタンスと同じホストによってホストされる他の実施形態では、ブロックストレージクライアントは、ブロックストレージクライアントとホストされるインスタンスとの間に常駐するPCIeまたは他の相互接続を介して関連操作を発行でき、これによって、ネットワークベースの転送に関連付けられるプロトコルパッキングを回避する。 Referring to FIGS. 4 and 5, block storage messaging between block storage clients and block storage server instances may be sent using a network-based data transfer protocol such as Global Network Block Device (GNDB). Such messages can be encapsulated as data plane traffic and routed between block storage client 460 and block storage server 450 by network manager 424 of each host, as described elsewhere herein. . In some embodiments where the block storage server instance is hosted by the same host as the instance that issues the block storage operation, the block storage client can issue the related operation to the network manager via a network-based data transfer protocol, and then , the network manager can internally route operations to hosted block storage server instances. In other embodiments where the block storage server instance is hosted by the same host as the instance that issues block storage operations, the block storage client may have a PCIe or other interconnect that resides between the block storage client and the hosted instance. Related operations can be issued over the connection, thereby avoiding protocol packing associated with network-based transport.

図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になくなる)。 Referring to FIGS. 4 and 5, the system can deploy various levels of encryption to protect block storage data. To provide end-to-end encryption of block storage traffic, a block storage server instance 452 runs within a block storage service (BSS) IVN 452 that includes any number of block storage server instances and provides access to the PSE from a provider network. It can reach up to Block storage client 460 has a VNA 462 associated with block storage service IVN 452. In this manner, IVN level encryption using block storage service IVN encryption key 484 may be used to encrypt and decrypt traffic sent between block storage server instance 450 and block storage client 460. Note that encryption and decryption of traffic carried through the block storage service IVN may be performed by a network manager at the endpoints of the IVN. For example, network manager 424B encrypts traffic sent from block storage client 460B via VNA 462B. As another example, network manager 424A decrypts traffic sent to instances hosted within BSS's IVN 452, including block storage server instance 450. To provide encryption at rest of data, block storage volumes may further have volume-level encryption. For example, volume A 434 may be encrypted with volume A encryption key 480 and volume B 440 may be encrypted with volume B encryption key 482. Using encryption key 480, block storage client 460A encrypts data written to volume A 434 by instance A 430 and decrypts data read from volume A 434 by instance A 430. Using encryption key 482, block storage client 460B can perform similar encryption and decryption operations between instance B 436 and volume B 440. Some embodiments prevent the block storage server instance that hosts a volume from being hosted on the same host as the instance attached to that volume, and ensure that the volume encryption key is not hosted on the same host as the volume it encrypts. Note that the policy that prevents being hosted may be in-place (eg, Volume A encryption key 480 and Volume A 434 are no longer on host 420A).

いくつかの実施形態では、インスタンス及びホストマネージャは、図4及び図5に示されるように、異なるプロセッサ(複数可)によって実行される。例えば、ブロックストレージサーバーインスタンス450は、第1のプロセッサ(例えば、プロセッサ1710)によって実行でき、ホストマネージャ422Aは、第2のプロセッサ(例えば、プロセッサ1775)によって実行できる。ブロックストレージサーバーインスタンスを実行するプロセッサ(複数可)は、1つ以上の相互接続を介してホストのストレージデバイス(複数可)にアクセスする。例えば、ブロックストレージサーバーインスタンス450を実行するプロセッサ(複数可)(例えば、プロセッサ1710)は、2つの間のPCIe相互接続を介して、ストレージデバイス(複数可)421(例えば、ストレージデバイス1780)にアクセスし得る。別の例として、ブロックストレージサーバーインスタンス450を実行するプロセッサ(複数可)は、ホストマネージャ422A(例えば、プロセッサ1775)を実行するプロセッサまたはシステムオンチップに第1のPCIeバスを介してストレージデバイス(複数可)421にアクセスし得、次に、これは、第2のPCIeバスを介してそれらの通信をストレージデバイス(複数可)421にブリッジする。 In some embodiments, the instance and host managers are executed by different processor(s), as shown in FIGS. 4 and 5. For example, block storage server instance 450 may be executed by a first processor (eg, processor 1710) and host manager 422A may be executed by a second processor (eg, processor 1775). Processor(s) running a block storage server instance accesses host storage device(s) via one or more interconnects. For example, processor(s) (e.g., processor 1710) running block storage server instance 450 access storage device(s) 421 (e.g., storage device 1780) via a PCIe interconnect between the two. It is possible. As another example, the processor(s) running the block storage server instance 450 connects the storage device(s) to the processor or system-on-chip running the host manager 422A (e.g., processor 1775) via a first PCIe bus. ) 421, which in turn bridges those communications to the storage device(s) 421 via the second PCIe bus.

図4及び図5に単一ボリュームとして示されるが、インスタンスボリューム434、440のそれぞれは、システムに高い信頼性を提供するために、複数の異なるブロックストレージサーバーに記憶された複数のレプリカにわたってミラーリングされ得る。例えば、1つのレプリカは、ボリュームからの読み取り及びボリュームへの書き込み(入力動作及び出力動作、または「入出力(I/O)」)を処理するプライマリレプリカと称され得、そのプライマリレプリカをホストしているサーバーは、書き込みを他のセカンダリレプリカに同期的に伝播できる。プライマリレプリカに障害が発生した場合、セカンダリレプリカの1つがプライマリレプリカとして機能するように選択される(フェイルオーバーと称される)。レプリカはパーティションに細分(例えば、ストライプ化)され得、所与のレプリカの各パーティションは異なるサーバーに記憶され、並列読み取り及び並列書き込みが容易になる。レプリカはまた冗長性(例えば、パリティビット)でエンコードされ得るため、(例えば、サーバーまたはディスクの障害等が原因で)ブロックストレージサーバーが利用不可能になったとき、ロストデータを利用可能なデータから回復できる。結果として、インスタンスにアタッチされたボリュームは、多くのブロックストレージサーバーによってホストされ得る。 Although shown as a single volume in FIGS. 4 and 5, each instance volume 434, 440 is mirrored across multiple replicas stored on multiple different block storage servers to provide high reliability to the system. obtain. For example, one replica may be referred to as a primary replica that handles reads from and writes to a volume (input and output operations, or "input/output (I/O)"), and a replica that hosts the primary replica. server can synchronously propagate writes to other secondary replicas. If a primary replica fails, one of the secondary replicas is selected to act as the primary replica (referred to as failover). Replicas may be subdivided (eg, striped) into partitions, with each partition of a given replica stored on a different server to facilitate parallel reads and writes. Replicas may also be encoded with redundancy (e.g., parity bits) so that when a block storage server becomes unavailable (e.g., due to server or disk failure, etc.), lost data can be replaced with available data. I can recover. As a result, volumes attached to an instance may be hosted by many block storage servers.

仮想化されたコンテキストでブロックストレージサーバーをホストすることに関連付けられる1つの課題は、それらのサーバーをブートすることである。操作可能なブロックストレージサーバーインスタンスがない場合、ブロックストレージサーバーインスタンスは、ブロックストレージサーバーインスタンスによってホストされるブートボリュームからどのようにブートするか?これは、専用(またはベアメタル)ブロックストレージサーバーを含み得ないPSEのコンテキストでは特に困難である。図6及び図7は、PSE内で第1のブロックストレージサーバーインスタンスまたは「シード」ブロックストレージサーバーインスタンス(他のインスタンスを起動できるブロックストレージサーバーインスタンス)をブートするためのローカルブート技術の例を示す。いったん起動すると、シードブロックストレージサーバーインスタンスから他のインスタンスを起動できる。 One challenge associated with hosting block storage servers in a virtualized context is booting those servers. If there are no operational block storage server instances, how does a block storage server instance boot from a boot volume hosted by a block storage server instance? This is particularly difficult in the context of PSEs, which may not include dedicated (or bare metal) block storage servers. 6 and 7 illustrate examples of local boot techniques for booting a first or "seed" block storage server instance (a block storage server instance that can launch other instances) within a PSE. Once launched, you can launch other instances from the seed block storage server instance.

図6は、少なくともいくつかの実施形態による、第1の技術を使用して仮想化ブロックストレージサーバーをブートするための例示的なシステムを示すブロック図である。高レベルで、図6は、プロバイダネットワーク600内でホストされるプロキシサーバーを介して、インスタンス690内のブロックストレージサーバー650をリモートでブートする例を示す。プロバイダネットワーク600のブロックストレージサービス(BSS)606は、ブロックストレージボリュームを作成し、それらのボリュームをインスタンスにアタッチする能力をユーザに提供する。例えば、ユーザ(例えば、プロバイダネットワークのカスタマー、プロバイダネットワークの別のサービス)は、BSS606に中継されるAPIまたはコンソールを介してコマンドをサブミットして、BSSによって管理されるボリュームを作成、サイズ変更、または削除し、それらのボリュームをインスタンスにアタッチまたはデタッチできる。BSS606は、ボリュームスナップショットを含むBSSオブジェクトストア608を維持している。スナップショットは、ファイルと同様に、オブジェクトデータ及びオブジェクトに関するメタデータ(例えば、作成時間等)を含み得るオブジェクトのタイプと見なすことができる。ボリュームスナップショットは、所与の時点でのボリュームのコピー(またはバックアップ)であり、物理ドライブまたは仮想ドライブでそのボリュームの再作成を可能にする。スナップショットは、概して、ブートボリューム及び非ブートボリュームに分割でき、前者(ブートボリューム)はインスタンス内で実行されるソフトウェアのブートを容易にする。マシンイメージは、ブートボリュームを含む所与のインスタンスの1つ以上のスナップショットのグループであり得る。 FIG. 6 is a block diagram illustrating an example system for booting a virtualized block storage server using a first technique, in accordance with at least some embodiments. At a high level, FIG. 6 illustrates an example of remotely booting block storage server 650 in instance 690 via a proxy server hosted within provider network 600. A block storage service (BSS) 606 of provider network 600 provides users with the ability to create block storage volumes and attach those volumes to instances. For example, a user (e.g., a customer of a provider network, another service of a provider network) can submit commands via an API or console relayed to the BSS 606 to create, resize, or create volumes managed by the BSS. and attach or detach those volumes to an instance. BSS 606 maintains a BSS object store 608 that includes volume snapshots. A snapshot, like a file, can be considered a type of object that can include object data and metadata about the object (eg, creation time, etc.). A volume snapshot is a copy (or backup) of a volume at a given point in time, allowing it to be recreated on a physical or virtual drive. A snapshot can generally be divided into a boot volume and a non-boot volume, the former (boot volume) facilitating booting of software running within the instance. A machine image may be a group of one or more snapshots of a given instance, including the boot volume.

いくつかの実施形態では、BSS606は、BSSオブジェクトストア608内のオブジェクトのオブジェクトレベルの暗号化を適用する。プロバイダネットワーク600内で使用される暗号化キーの漏洩を防ぐために、BSS606は、さらに、PSEオブジェクトストア610を管理でき、BSSオブジェクトストア608のオブジェクトを暗号化するために使用されるものと異なる暗号化キーを使用して、所与のPSEに送信されるオブジェクトを再暗号化する。この例では、ブロックストレージサーバーインスタンスマシンイメージ612Aを使用して、PSEのホスト620でブロックストレージサーバー650をブートする。円Aに示されるように、BSS606は、プロバイダネットワーク600内に保持されたキーを使用してブロックストレージサーバーインスタンスマシンイメージ612Aを復号化し、PSEに送信できるキー613を使用してそれをブロックストレージサーバーインスタンスマシンイメージ612Bとして再暗号化する。 In some embodiments, BSS 606 applies object-level encryption of objects within BSS object store 608. To prevent compromise of the encryption keys used within the provider network 600, the BSS 606 can further manage the PSE object store 610 and use encryption different from that used to encrypt objects in the BSS object store 608. The key is used to re-encrypt objects sent to a given PSE. In this example, block storage server instance machine image 612A is used to boot block storage server 650 on PSE host 620. As shown in circle A, the BSS 606 decrypts the block storage server instance machine image 612A using a key held within the provider network 600 and sends it to the block storage server using a key 613 that can be sent to the PSE. It is re-encrypted as an instance machine image 612B.

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を起動する。 An IVN can provide security for traffic between block storage server instances and block storage clients. In some embodiments, the BSS 606 manages its IVN, designated as BSS IVN 652. The host 620 on which the block storage server 650 is started includes a host manager 622 that has a block storage client 660 with an associated VNA 662 of a BSS's IVN 652. To facilitate communication between the block storage client 660 and the provider network 600 through the BSS's IVN 652, the BSS 606 launches a proxy server instance 642 within the BSS's IVN 652. Proxy server instance 642 may provide a block storage-like interface to block storage client 660 and allow client 660 to access machine image 612B of the block storage server instance. BSS 606 launches proxy server instance 642 as follows.

円Bに示されるように、BSS606は、最初に、ベアメタルブロックストレージサーバー614にメッセージを送信して、プロキシサーバーインスタンス642のブートボリュームとして機能する新しい論理ボリュームを作成する。ベアメタルブロックストレージサーバー614は、ベアメタルサーバー614のその1つ以上のストレージデバイス618上に新しい論理ボリューム619を作成し、BSSオブジェクトストア608に記憶されたプロキシサーバーマシンイメージ616をボリューム619にロードする。 As shown in circle B, BSS 606 first sends a message to bare metal block storage server 614 to create a new logical volume to serve as the boot volume for proxy server instance 642. Bare metal block storage server 614 creates a new logical volume 619 on its one or more storage devices 618 of bare metal server 614 and loads proxy server machine image 616 stored in BSS object store 608 into volume 619.

円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から起動する。 As shown in circle C, BSS 606 initiates startup of proxy server instance 642 using instance management service 640 . Instance management service 640 is another control plane service in provider network 600 that facilitates launching instances within provider network 600 or a PSE. In some embodiments, instance management service 640 tracks host usage metrics that indicate how "hot" the host is (i.e., metrics such as CPU usage, memory usage, and network usage). be able to do or have access to it. For example, instance management service 640 or another service may periodically poll hosts to obtain utilization metrics. Instance management service 640 determines whether the host is underutilized (subject to some constraint regarding the location of the host within a given PSE, etc.) by accessing metrics associated with a pool of potential hosts (e.g., at some threshold or multiple (below a threshold), the host that hosts the instance can be identified in response to the launch request. In requesting the startup of proxy server instance 642, BSS 606 specifies that the instance should be launched from volume 619 within BSS's IVN 652. As shown in circle D, instance management service 640 identifies the host 646 that hosts the instance and sends a message to host 646 to start the instance. An instance manager (not shown) of host 646 provisions the host's resources for proxy server instance 642 and boots it from boot volume 619 .

BSS606は、また、インスタンス管理サービス640を介してブロックストレージサーバー650の起動を開始する。BSS606は、インスタンスが、特定のPSEの(例えば、PSE識別子を用いて)BSSのIVN652内で、プロキシサーバーインスタンス642によって利用可能にされたブートボリュームから起動するべきであることを指定する。円Eに示されるように、インスタンス管理サービス640は、ブロックストレージサーバーインスタンス650をホストするホスト620を識別し、(例えば、制御プレーントラフィックトンネルを介して)ホスト620にメッセージを送信して、インスタンスを起動する。図示のように、インスタンスを起動する要求は、インスタンスのホストリソースをプロビジョニングし、インスタンスを起動及び終了できるインスタンスマネージャ626によって受信される。ここで、インスタンスマネージャ626は、ブロックストレージサーバーをホストするためにインスタンス690を作成する。 BSS 606 also initiates startup of block storage server 650 via instance management service 640. BSS 606 specifies that the instance should boot from a boot volume made available by proxy server instance 642 within the BSS's IVN 652 of a particular PSE (eg, using a PSE identifier). As shown in circle E, instance management service 640 identifies host 620 that hosts block storage server instance 650 and sends a message to host 620 (e.g., via a control plane traffic tunnel) to host the instance. to start. As shown, a request to launch an instance is received by an instance manager 626, which can provision host resources for the instance and launch and terminate the instance. Here, instance manager 626 creates instance 690 to host the block storage server.

インスタンス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))を含み得る。 As part of configuring instance 690, instance manager 626 configures instance 690's basic input/output system (BIOS) 692 and installs block storage server instance machine image 612B on virtual boot volume 694 via proxy server instance 642. Can be loaded. BIOS 692 includes a block storage device driver (eg, a Non-Volatile Memory Express (NVMe) driver) and can attach two block storage devices. Virtualized block storage devices are presented by proxy server instance 642 via block storage client 660 and boot volume 694. Although shown within instance 690 , a boot volume 694 is allocated to instance 690 by instance manager 626 from a storage device (not shown) of host 620 that is accessible via block storage client 660 or another component of host manager 622 . Note that it matches the volume of the virtual drive you created. Other embodiments may include an interface other than BIOS (eg, a Unified Extensible Firmware Interface (UEFI)) to connect instance 690 to two block devices.

実行中、BIOS692(またはUEFI等の他のファームウェア)は、ブートボリューム694をブロックストレージサーバーインスタンスマシンイメージ612Bからロードできる。ブロックストレージサーバーインスタンスマシンイメージ612Bがキー613を使用して暗号化されるとき、ブロックストレージクライアント660は、ロードプロセス中にブロックストレージサーバーインスタンスマシンイメージ612Bを復号化する。いったんロード動作が完了すると、BIOSはブートプロセスを継続して、ブロックストレージサーバーソフトウェアを含むブートボリュームD94からインスタンス690をブートする。いくつかの実施形態では、BIOS692は、ブロックストレージサーバーソフトウェア650をブートする前に、プロキシサーバーインスタンス642に対応するブロックストレージデバイスをデタッチできる。 During execution, BIOS 692 (or other firmware such as UEFI) can load boot volume 694 from block storage server instance machine image 612B. When block storage server instance machine image 612B is encrypted using key 613, block storage client 660 decrypts block storage server instance machine image 612B during the load process. Once the load operation is complete, the BIOS continues the boot process to boot instance 690 from boot volume D94 containing block storage server software. In some embodiments, BIOS 692 can detach the block storage device corresponding to proxy server instance 642 before booting block storage server software 650.

プロキシサーバーインスタンス642を使用して示され及び説明されているが、他の実施形態は、ブロックストレージサーバーインスタンスマシンイメージ612Aから起動されるブロックストレージサーバーインスタンス(図示せず)を使用して、ブロックストレージデバイスをインスタンス690にブロックストレージクライアント660を介して提供できる。BSS606は、起動されるブロックストレージサーバーインスタンスの仮想ドライブまたは仮想ディスクにボリュームを作成し、ブロックストレージサーバーインスタンスのマシンイメージ612Aをボリュームにロードする。ロードプロセス中に、ブロックストレージサーバーインスタンスはプロバイダネットワークキーを使用してマシンイメージを復号化し、オプションでボリューム固有キー(例えば、キー480がボリュームB440を暗号化する方法等)を使用して、ボリュームを暗号化し、これをBSS606によりブロックストレージクライアント660に提供できる。 Although shown and described using proxy server instance 642, other embodiments use a block storage server instance (not shown) launched from block storage server instance machine image 612A to Devices can be provided to instance 690 via block storage client 660. The BSS 606 creates a volume on the virtual drive or virtual disk of the block storage server instance being started and loads the block storage server instance machine image 612A into the volume. During the loading process, the block storage server instance uses the provider network key to decrypt the machine image and optionally uses a volume-specific key (for example, how key 480 encrypts volume B 440) to encrypt the volume. It can be encrypted and provided by BSS 606 to block storage client 660 .

図7は、少なくともいくつかの実施形態による、第2の技術を使用して仮想化ブロックストレージサーバーをブートするための例示的なシステムを示すブロック図である。高レベルで、図7は、ブロックストレージサーバーソフトウェア750を実行する前に、インスタンス790によって実行されるプリブートソフトウェアを介して、インスタンス790をリモートでブートして、ブロックストレージサーバーソフトウェア750を実行する例を示す。具体的には、PSE720のストレージデバイス721は、(例えば、PSEの出荷前に)プリブートインスタンスブートボリューム723がプリロードされる。プリブートインスタンスブートボリューム723は、ブロックストレージサーバープリブートフェーズ798の間にインスタンスでブートして、ブロックストレージサーバーソフトウェアを別のブートボリュームにロードできるソフトウェアを含む。次に、インスタンスは、他のブートボリュームから再起動及びブートして、ブロックストレージサーバーのブートフェーズ799中にブロックストレージサーバーインスタンスを起動できる。 FIG. 7 is a block diagram illustrating an example system for booting a virtualized block storage server using a second technique, in accordance with at least some embodiments. At a high level, FIG. 7 illustrates an example of remotely booting an instance 790 to run block storage server software 750 via pre-boot software executed by instance 790 prior to running block storage server software 750. show. Specifically, the storage device 721 of the PSE 720 is preloaded with a pre-boot instance boot volume 723 (eg, before shipping the PSE). Pre-boot instance boot volume 723 contains software that can be booted into the instance during block storage server pre-boot phase 798 to load block storage server software into a separate boot volume. The instance can then restart and boot from the other boot volume to start the block storage server instance during the block storage server boot phase 799.

円Aに示されるように、BSS606は、インスタンス管理サービス640を用いてブロックストレージサーバーインスタンスの起動を開始し、インスタンスが特定のPSEのBSSのIVN内で起動するべきであることを指定する。この場合も、インスタンス管理サービス640は、ブロックストレージサーバーインスタンス650をホストするPSEのホスト620を識別し、インスタンスを起動するために(例えば、制御プレーントラフィックトンネルを介して)ホストのホストマネージャ722にメッセージを送信する。インスタンスを起動する要求は、ホストマネージャ722のインスタンスマネージャ(図示せず)によって受信される。 As shown in circle A, the BSS 606 initiates the startup of a block storage server instance using the instance management service 640 and specifies that the instance should be launched within the BSS's IVN of a particular PSE. Again, the instance management service 640 identifies the PSE's host 620 that hosts the block storage server instance 650 and sends a message to the host's host manager 722 (e.g., via a control plane traffic tunnel) to start the instance. Send. A request to launch an instance is received by an instance manager (not shown) of host manager 722.

円Bに示されるように、ホストマネージャ722(またはインスタンスマネージャ)は、ブロックストレージサーバー750を実行するインスタンス790のためにホストのリソースをプロビジョニングする。さらに、ホストマネージャ722は、2つのアタッチされたブロックストレージデバイス(ブロックストレージクライアント(図示せず)によって、プリブートインスタンスブートボリューム723及び仮想ブートボリューム794(上記に説明したブートボリューム694等)に提示されるブロックストレージデバイスインターフェース)をBIOS792A(またはUEFI)に構成し、プリブートインスタンスのブートボリューム723からブートできる。 As shown in circle B, host manager 722 (or instance manager) provisions host resources for instance 790 running block storage server 750. In addition, the host manager 722 is presented with two attached block storage devices, a pre-boot instance boot volume 723 and a virtual boot volume 794 (such as the boot volume 694 described above) by a block storage client (not shown). block storage device interface) to BIOS 792A (or UEFI) and can boot from the boot volume 723 of the pre-boot instance.

円Cに示されるように、次に、BIOS792Aは、プリブートインスタンスブートボリューム723からのプリブートソフトウェア796のブートを可能にする。プリブートインスタンスブートボリューム723が汎用マシンイメージに基づく場合、ホストマネージャ722は、さらに、円Dに示されるように、プリブートソフトウェア796とプロバイダネットワーク700との間の通信を容易にするために、インスタンス790の構成を更新する必要があり得る。具体的には、ホストマネージャ722は、VNAをインスタンス790にアタッチし、プリブートソフトウェア796に、PSEオブジェクトストア610にアクセスするときに使用する認証情報を提供し、ブートボリューム794にロードされるマシンイメージを復号化するためのキーを提供できる。VNA構成、認証情報、及びキーは、インスタンスを起動するためのインスタンス管理サービス640からの要求の一部として、ホストマネージャ722に渡されている場合がある。 As shown in circle C, BIOS 792A then enables booting of pre-boot software 796 from pre-boot instance boot volume 723. If the pre-boot instance boot volume 723 is based on a generic machine image, the host manager 722 further configures the instance 790 to facilitate communication between the pre-boot software 796 and the provider network 700, as shown in circle D. You may need to update your configuration. Specifically, host manager 722 attaches a VNA to instance 790, provides pre-boot software 796 with credentials to use when accessing PSE object store 610, and installs a machine image to be loaded into boot volume 794. You can provide the key to decrypt it. The VNA configuration, credentials, and keys may have been passed to host manager 722 as part of the request from instance management service 640 to launch an instance.

円Eに示されるように、いったんインスタンス790が構成され、プリブートソフトウェア796を実行すると、プリブートソフトウェア796は、ブロックストレージサーバーインスタンスマシンイメージ612BをPSEオブジェクトストア610からコピーし、それをブートボリューム794にロードする。ブートボリューム794をロードする一部として、プリブートソフトウェア796は、それが暗号化されていたと仮定して、キー613でブロックストレージサーバーインスタンスマシンイメージ612Bを復号化できる。ホストマネージャ722はブートボリューム794のロード完了を検出できる、またはプリブートソフトウェアはそのロード完了の信号を送ることができる。例えば、プリブートソフトウェアは、ブートボリューム794がロードされているときに、インスタンスの再起動を開始できる。別の例として、ネットワークマネージャ724は、インスタンス790とPSEオブジェクトストア610との間のセッション終了を検出できる(例えば、TCPセッションが閉じられたときに検出する)。 As shown in circle E, once instance 790 is configured and runs pre-boot software 796, pre-boot software 796 copies block storage server instance machine image 612B from PSE object store 610 and loads it into boot volume 794. do. As part of loading boot volume 794, pre-boot software 796 can decrypt block storage server instance machine image 612B with key 613, assuming it was encrypted. The host manager 722 can detect when the boot volume 794 has been loaded, or the pre-boot software can signal the completion of the load. For example, pre-boot software can initiate a reboot of the instance while boot volume 794 is being loaded. As another example, network manager 724 can detect termination of a session between instance 790 and PSE object store 610 (eg, detect when a TCP session is closed).

円Fに示されるように、ホストマネージャ722は、データ転送中またはいったんデータ転送が完了した後のいずれかに、BIOS792Aを792Bに更新できるまたはそうでなければ再構成できる。係る再構成は、ブートボリュームをプリブートインスタンスブートボリューム723からブートボリューム794に変更することと、プリブートインスタンスブートボリューム723を含むブロックストレージデバイスを除去することとを含む。インスタンス790を再起動する前に、ホストマネージャ722は、さらに、プリブートソフトウェア796によって書き込まれた残りのデータを含み得るインスタンス790にプロビジョニングされたメモリをクリアできる。インスタンス790を再起動すると、BIOS792Bは、ブートボリューム794からブロックストレージサーバー750をブートする。 As shown in circle F, host manager 722 can update or otherwise reconfigure BIOS 792A to 792B either during the data transfer or once the data transfer is complete. Such reconfiguration includes changing the boot volume from pre-boot instance boot volume 723 to boot volume 794 and removing the block storage device containing pre-boot instance boot volume 723. Prior to restarting instance 790, host manager 722 may also clear the memory provisioned to instance 790, which may contain residual data written by pre-boot software 796. When instance 790 is restarted, BIOS 792B boots block storage server 750 from boot volume 794.

図6及び図7はPSE内でブロックストレージサーバーインスタンスをブートするための例示的な技術を示しているが、他の技術も可能である。例えば、インスタンスマネージャは、起動するインスタンスのプロビジョニングリソースの一部として、PSEのストレージデバイスにボリュームを作成できる。インスタンスを起動する前に、インスタンスマネージャは制御プレーンサービス(例えば、ブロックストレージサービスまたはインスタンス管理サービス)にメッセージを送信して、ボリュームにロードするためにブート可能なスナップショットを要求できる。制御プレーンサービスは、制御プレーントラフィックトンネルを介して、ブート可能なスナップショットをインスタンスマネージャに送信できる。いったんロードされると、インスタンスマネージャは、インスタンスソフトウェアを起動することを可能にする。 Although FIGS. 6 and 7 illustrate example techniques for booting block storage server instances within a PSE, other techniques are possible. For example, the instance manager can create a volume on the PSE's storage device as part of the provisioning resources for the instance it launches. Before launching an instance, the instance manager can send a message to a control plane service (eg, block storage service or instance management service) to request a bootable snapshot to load into a volume. Control plane services can send bootable snapshots to instance managers via control plane traffic tunnels. Once loaded, the instance manager allows instance software to be started.

図8は、少なくともいくつかの実施形態による、ブロックストレージサーバーからプロバイダ基板拡張の追加のコンピュートインスタンスをブートするための例示的なシステムを示すブロック図である。例えば、図6または図7を参照して説明した技術等を使用してブロックストレージサーバーインスタンスがいったん起動されると、その「シード」ブロックストレージサーバーインスタンスは、他のインスタンス(他のブロックストレージサーバーインスタンスを含む)にブートボリュームを提供できる。これは、シードブロックストレージサーバーインスタンスが、PSEの基板相互接続と比較して、プロバイダネットワークとPSEとの間の比較的遅い接続を通じて転送またはホストされるマシンイメージから起動されるPSEのコンテキストで特に役立ち得る。この例では、インスタンス890がPSE888のホスト820Aで起動されている。インスタンス890は、ブロックストレージサーバーソフトウェア850を実行しており、BSSのIVN844内で動作する。さらに、ブロックストレージクライアント860A及び860Bは、BSSのIVN844における通信を可能にするVNA862A及び862Bをアタッチしている。 FIG. 8 is a block diagram illustrating an example system for booting additional compute instances of a provider board extension from a block storage server, in accordance with at least some embodiments. For example, once a block storage server instance is launched using techniques such as those described with reference to FIG. 6 or FIG. ). This is particularly useful in the context of a PSE where the seed block storage server instance is launched from a machine image that is transferred or hosted over a relatively slow connection between the provider network and the PSE compared to the PSE's board interconnect. obtain. In this example, instance 890 is started on host 820A of PSE 888. Instance 890 is running block storage server software 850 and operates within the BSS's IVN 844. Additionally, block storage clients 860A and 860B have attached VNAs 862A and 862B that enable communication in the BSS's IVN 844.

円Aに示されるように、プロバイダネットワーク800のインスタンス管理サービス640は、BSS606が指定されたスナップショットから新しいボリュームを作成することを要求できる。円Bに示されるように、BSS606は、ブロックストレージサーバーインスタンス890に、指定されたスナップショットに基づいてボリュームを作成することを命令できる。いくつかの実施形態では、インスタンス管理サービス640は、ボリュームを暗号化するために、ボリューム固有の暗号化キー(例えば、キー680)を提供し得る。 As shown in circle A, the instance management service 640 of the provider network 800 can request that the BSS 606 create a new volume from a specified snapshot. As shown in circle B, BSS 606 can instruct block storage server instance 890 to create a volume based on the specified snapshot. In some embodiments, instance management service 640 may provide a volume-specific encryption key (eg, key 680) to encrypt the volume.

円Cに示されるように、ブロックストレージサーバーインスタンス890は、PSEオブジェクトストア610等のオブジェクトストア810から指定されたスナップショットをフェッチすることによってボリュームを作成できる。図示されていないが、他の実施形態では、オブジェクトストア810は、ボリュームスナップショット及び/またはマシンイメージをキャッシュするために、PSE888のBSSキャッシュインスタンスによってホストされるオブジェクトストアであり得る。BSS606はBSSキャッシュインスタンスを管理し得、カスタマーは、インスタンスを起動するいずれかの要求の前に、特定のスナップショットがキャッシュにロードされることをBSS606に指定できる。このように、ブロックストレージサーバーインスタンス890は、キャッシュされたブートボリュームスナップショットからボリュームを作成でき、プロバイダネットワーク800のオブジェクトストアからブロックストレージサーバーインスタンス890へのデータ転送に関連付けられる遅延を避けることによってPSEのインスタンスのブート時間が劇的に減る。 As shown in circle C, block storage server instance 890 can create a volume by fetching a specified snapshot from an object store 810, such as PSE object store 610. Although not shown, in other embodiments, object store 810 may be an object store hosted by a BSS cache instance of PSE 888 for caching volume snapshots and/or machine images. BSS 606 may manage BSS cache instances, and customers may specify to BSS 606 that particular snapshots are to be loaded into the cache prior to any request to launch an instance. In this way, block storage server instance 890 can create volumes from cached boot volume snapshots, avoiding the delays associated with transferring data from the provider network 800 object store to block storage server instance 890 . Dramatically reduces instance boot time.

円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にアタッチできる。 As shown in circle C, the instance management service 640 of the provider network 600 issues commands to the hosts of the PSE 888 to attach or detach volumes hosted by the block storage server instance 890 to other instances hosted by the PSE 888. can. For example, volume A 832 may be loaded with a bootable snapshot. Instance management service 640 can instruct host 820A to launch instance A 830 using the volume identifier associated with volume A 832. In response, block storage client 860A can attach volume A 832 hosted by block storage server instance 890 to instance A 830 via BSS's IVN 844, thereby allowing instance A 830 to boot from volume A 832. become. As another example, volume B 836 may be loaded with a non-bootable snapshot that includes other data. Instance management service 640 can instruct host 820B to attach volume B 836 to hosted instance 834. In response, block storage client 860B can attach volume B 836 hosted by block storage server instance 890 to instance B 834 via BSS's IVN 844.

図9は、少なくともいくつかの実施形態による、仮想化ブロックストレージサーバーを管理するための例示的なシステムを示すブロック図である。仮想化環境内でブロックストレージサーバーを実行すると、インスタンス管理サービスが必要に応じて実行中のブロックストレージサーバーインスタンスの数を自動的にスケーリングすることを可能にすることを含むいくつかの利点をもたらす。インスタンス管理サービスは、手動で拡張されたベアメタルサーバーの定義済みプールで動作するBSSではなく、ホストリソース(例えば、CPU、メモリ、ネットワーク等)の使用率を監視し、実行中のブロックストレージサーバーインスタンスの数を自動的に調整できる。例えば、ブロックストレージサーバーインスタンスの2つのホストが高いリソース使用率をレポートしている場合、インスタンス管理サービスは、リソース使用率が低いホストで追加のブロックストレージサーバーインスタンスを起動できる。次に、ブロックストレージサービスは新しく起動するインスタンスにボリュームを作成でき、それによって、実行中のブロックストレージサーバーインスタンスのワークロードの増加及び起こり得るパフォーマンスの低下を回避する。 FIG. 9 is a block diagram illustrating an example system for managing virtualized block storage servers, according to at least some embodiments. Running a block storage server within a virtualized environment provides several benefits, including allowing the instance management service to automatically scale the number of running block storage server instances as needed. The Instance Management Service is not a BSS that operates on a predefined pool of manually expanded bare metal servers, but instead monitors the utilization of host resources (e.g., CPU, memory, network, etc.) and manages the usage of running block storage server instances. The number can be adjusted automatically. For example, if two hosts of block storage server instances are reporting high resource utilization, the instance management service can launch additional block storage server instances on the hosts with low resource utilization. The block storage service can then create volumes on newly launched instances, thereby avoiding increased workload and possible performance degradation of running block storage server instances.

さらに、ブロックストレージサーバーをインスタンスとして実行すると、障害ドメインをコンピュータシステム全体から切り離すことにより、障害ドメインの数がホストコンピュータシステムの数を超えることが可能になる。障害ドメインの数が増加すると、固定されたハードウェアセットで実行されるブロックストレージサーバーの数が増加することを可能にし、ブロックストレージサーバーの数が増加すると、いずれかの特定のサーバーによって管理されるデータの全体的なフットプリントが減る。例えば、システムには、より小さな障害ドメインに細分されていない9つのホストコンピュータシステムが含まれていると推定する(つまり、1つのコンピュータシステムには1つの障害ドメインがある)。データロスを回避するために、各ホストまたは障害ドメインは単一のブロックストレージサーバーを実行する。それらの9つのブロックストレージサーバーがインスタンスのボリュームにわたって90テラバイト(TB)のデータ(データリカバリを可能にするエンコードを含む)をホストする場合、各ブロックストレージサーバーは約10TBのデータを記憶するであろう。ホストの1つに障害が発生した場合、(例えば、他の80TBから)その10TBを回復する必要があるだろう。係るデータリカバリには、データの計算、転送、及び記憶のコストがかかる。それらの9つのホストがそれぞれ2つの障害ドメインに細分され、ブロックストレージサーバーの数が18に増加する場合、各ブロックストレージサーバーは約5TBのデータを記憶し、障害ドメインの1つのコンポーネントに障害が発生した場合、回復する必要があるだろうデータ量(及び対応するコスト)を約半分にする。 Additionally, running a block storage server as an instance allows the number of failure domains to exceed the number of host computer systems by isolating failure domains from the overall computer system. An increase in the number of fault domains allows for an increase in the number of block storage servers running on a fixed set of hardware, and an increase in the number of block storage servers reduces the amount of data managed by any particular server. ’s overall footprint is reduced. For example, assume that the system includes nine host computer systems that are not subdivided into smaller fault domains (ie, there is one fault domain per computer system). To avoid data loss, each host or failure domain runs a single block storage server. If those nine block storage servers host 90 terabytes (TB) of data (including encoding to enable data recovery) across the instance's volumes, each block storage server will store approximately 10 TB of data. . If one of the hosts fails, that 10TB will need to be recovered (eg, from the other 80TB). Such data recovery involves data computation, transfer, and storage costs. If those nine hosts are each subdivided into two fault domains and the number of block storage servers increases to 18, each block storage server will store approximately 5TB of data and one component of the fault domain will fail. In this case, the amount of data (and corresponding cost) that would need to be recovered would be roughly halved.

この例では、PSE988またはプロバイダネットワーク900は、3つのホスト920A、920B、及び920Cを含む。ホストのハードウェア設計に応じて、ホストは単一の障害ドメインとして扱うこと、または2つ以上の障害ドメインに細分することのいずれかを行うことができる。ここで、ホスト920はそれぞれ2つの障害ドメインを含む。ホスト920Aは障害ドメイン922及び障害ドメイン924を含み、その結果、ある障害ドメインのコンポーネントは、別の障害ドメイン内のコンポーネントに障害が発生した場合でさえも継続して動作できる。例えば、障害ドメイン922は、第1のメモリバンク(例えば、RAM)に接続され、1つ以上のストレージドライブ(例えば、SSD)の第1のセットを使用するマルチプロセッサシステムの第1のプロセッサに対応し得る一方、障害ドメイン924は、第2のメモリバンクに接続され、1つ以上のストレージドライブの第2のセットを使用するシステムの第2のプロセッサに対応し得る。いくつかのコンポーネントは、電源等の障害ドメインにわたって共有され得るが、この場合も、ハードウェア設計の冗長性と、障害ドメインがハードウェアにどのようにオーバーレイされるかの影響を受けることに留意されたい。 In this example, PSE 988 or provider network 900 includes three hosts 920A, 920B, and 920C. Depending on the host's hardware design, the host can either be treated as a single fault domain or subdivided into two or more fault domains. Here, each host 920 includes two failure domains. Host 920A includes a fault domain 922 and a fault domain 924 such that components in one fault domain can continue to operate even if a component in another fault domain fails. For example, failure domain 922 corresponds to a first processor of a multiprocessor system connected to a first memory bank (e.g., RAM) and using a first set of one or more storage drives (e.g., SSD). While failure domain 924 may correspond to a second processor of the system connected to a second memory bank and using a second set of one or more storage drives. Note that some components may be shared across fault domains, such as power supplies, but again this is subject to redundancy in the hardware design and how the fault domains are overlaid on the hardware. sea bream.

ホスト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つのレプリカがあるように示されるが、実際には、各ボリュームは、より少ない数またはより多い数のレプリカを有し得、各レプリカは、(例えば、ストライピングによって)多くの異なるブロックストレージサーバーインスタンス間で分割され得る。 Host 920A is running block storage server instance 950A in failure domain 922 and block storage server instance 950B in failure domain 924. Host 920B is running block storage server instance 950C in failure domain 926 and block storage server instance 950F in failure domain 928. Volume A includes a primary replica 660 provided by block storage server instance 950A and a secondary replica 662 provided by block storage server instance 950B. Volume B includes a primary replica 664 provided by block storage server instance 950C and a secondary replica 666 provided by block storage server instance 950A. Volume C includes a primary replica 668 provided by block storage server instance 950B and a secondary replica 670 provided by block storage server instance 950C. Although shown as having two replicas per volume, in reality each volume may have fewer or more replicas, and each replica may have many different blocks (e.g., by striping). Can be split between storage server instances.

円Aに示されるように、インスタンス管理サービス940は、プロセッサ使用率、メモリ使用率、ストレージ使用率、及びネットワーク使用率等のホストの物理リソースの使用率を監視し、これらは、ホスト全体で集約され得る、障害ドメインによって分離され得る、またはリソースごとであり得る(例えば、インスタンス管理サービス940は、平均CPU使用率が50%であること、障害ドメイン922のプロセッサ(複数可)のCPU使用率が50%であること、または、障害ドメイン922をサポートする特定のプロセッサのCPU使用率が50%であることを示すメトリックをホスト920Aから受信し得る)。インスタンス管理サービス940は、データベース(図示せず)内のホストのリソース使用率を追跡できる。ブロックストレージサーバーインスタンスに加えて、示される障害ドメインは、ホストの物理リソースの利用に寄与する他のインスタンス(例えば、カスタマーインスタンス)をホストできることに留意されたい。インスタンス管理サービス940は、リソース使用率メトリックでBSS906を定期的に更新して、円Bに示されるように、新しいボリュームを作成するときにBSS906がより使用率の低いブロックストレージサーバーインスタンスを選択することを可能にし得る。 As shown in circle A, the instance management service 940 monitors the host's physical resource usage, such as processor usage, memory usage, storage usage, and network usage, which are aggregated across hosts. may be separated by fault domain, or may be per resource (e.g., the instance management service 940 may have an average CPU usage of 50%, the CPU usage of the processor(s) in the fault domain 922 may be (or a metric may be received from host 920A indicating that the CPU utilization of a particular processor supporting fault domain 922 is 50%). Instance management service 940 can track host resource usage in a database (not shown). Note that in addition to block storage server instances, the illustrated fault domain can host other instances (eg, customer instances) that contribute to the utilization of the host's physical resources. Instance management service 940 periodically updates BSS 906 with resource utilization metrics to ensure that BSS 906 selects a less utilized block storage server instance when creating a new volume, as shown in circle B. can be made possible.

円Cに示されるように、インスタンス管理サービス940は、ブロックストレージサーバーインスタンスをサポートするホストのリソース使用率が1つ以上の閾値を超えるとき、新しいブロックストレージサーバーインスタンスを起動できる。閾値は、ホストにわたって集計されたリソースごとに(例えば、ブロックストレージサーバーを実行している全てのプロセッサの平均プロセッサ使用率が50%である)、ホストにわたるリソースのいくつかの組み合わせ(例えば、ストレージ使用率が80%を上回り、プロセッサ使用率が50%を上回っている)、または個々のリソース及び/もしくはホストベース等の様々な方法で定義され得る。ブロックストレージサーバーインスタンスを既にホストしている障害ドメインでブロックストレージサーバーインスタンスを起動することを回避するために、インスタンス管理サービス940は、(例えば、リソース使用量メトリックを含むデータベースにおいて)どの障害ドメインが占有され、どれが利用可能であるかを追跡できる。ここで、インスタンス管理サービス940は、ホスト920A、920B、及び/または920Cのリソース使用率がある閾値を超えており、ホスト920Cの以前に占有されていなかった障害ドメイン930及び932で、各々、新しいブロックストレージサーバーインスタンス950D及び950Eを起動していたことを決定した。障害ドメイン928はボリュームをホストしていないブロックストレージサーバー950Fを含むが、その障害ドメイン内でホストされる他のインスタンスのリソース使用率またはホスト920Bの総リソース使用率は、別のブロックストレージサーバーインスタンスをサポートするには高すぎ得る。 As shown in circle C, instance management service 940 can launch a new block storage server instance when the resource utilization of the host supporting the block storage server instance exceeds one or more thresholds. Thresholds can be set for each resource aggregated across hosts (e.g., average processor utilization of all processors running a block storage server is 50%) and for some combination of resources across hosts (e.g., storage usage processor utilization is greater than 80%, processor utilization is greater than 50%), or on an individual resource and/or host basis. To avoid starting a block storage server instance in a fault domain that already hosts a block storage server instance, the instance management service 940 determines which fault domains are occupied (e.g., in a database containing resource usage metrics). and can track which ones are available. Here, the instance management service 940 determines that the resource utilization of the hosts 920A, 920B, and/or 920C exceeds a certain threshold and that a new It was determined that block storage server instances 950D and 950E were running. Although fault domain 928 includes a block storage server 950F that is not hosting any volumes, the resource utilization of other instances hosted within that fault domain or the total resource utilization of host 920B may exceed that of another block storage server instance. May be too expensive to support.

円Dに示されるように、インスタンス管理サービス940は、BSS906を更新して、動作ブロックストレージインスタンス950(ここで、ブロックストレージサーバー950D及び950Eを含む)の更新された識別情報を提供できる。識別されたブロックストレージインスタンス950及びインスタンス管理サービス940から受信されたリソース使用率メトリックに基づいて、BSS906は、円Eに示されるように、ホスト920Cで新しいボリュームを作成できる。ここで、インスタンス管理サービス940からレポートされるようにホスト920Cのリソース使用率が低いことを示したと仮定して、BSS906は、ブロックストレージサーバーインスタンス950Dによって提供されるプライマリレプリカ670と、ブロックストレージサーバーインスタンス950Eによって提供されるセカンダリレプリカ672とを含む新しいボリュームDを作成する。 As shown in circle D, instance management service 940 can update BSS 906 to provide updated identification information for operational block storage instances 950 (here including block storage servers 950D and 950E). Based on the identified block storage instance 950 and the resource utilization metrics received from the instance management service 940, the BSS 906 can create a new volume on the host 920C, as shown in circle E. Now, assuming that the host 920C has shown low resource utilization as reported by the instance management service 940, the BSS 906 determines that the primary replica 670 provided by the block storage server instance 950D and the block storage server instance Create a new volume D containing the secondary replica 672 provided by the 950E.

図10は、少なくともいくつかの実施形態による、ブロックストレージクライアントにボリュームマッピングを提供するための例示的なシステムを示すブロック図である。上記で示唆したように、単一ボリュームは、プライマリレプリカ及びいくつかのセカンダリレプリカ等の複数のレプリカに関連付けられ得る。各レプリカは、いくつかのブロックストレージサーバーにわたって分散され得る。ボリューム、そのレプリカ、及びそのレプリカ(またはレプリカの一部)をホストするサーバーの間の関連付けは、ハードウェア障害が発生するとき、または、バックグラウンドのロードバランシング動作の一部としてサーバー間でデータが移行するとき、時間の経過とともに変更できる。ブロックストレージサーバーをPSEに展開する際、高いデータアベイラビリティ(例えば、障害時に、プライマリレプリカからセカンダリレプリカになる)、高い耐久性(例えば、サーバーに障害が発生した場合にロストデータを再作成するプロセスをすぐに開始する)を維持するために、PSEがプロバイダネットワークから切断されている、またはプロバイダネットワークに到達することが不可能であるときでも、それらの関連付けを変更することが可能であることが好ましい。 FIG. 10 is a block diagram illustrating an example system for providing volume mapping to block storage clients, according to at least some embodiments. As alluded to above, a single volume may be associated with multiple replicas, such as a primary replica and several secondary replicas. Each replica may be distributed across several block storage servers. The association between a volume, its replica, and the server that hosts that replica (or part of a replica) can occur when a hardware failure occurs or when data is transferred between servers as part of a background load-balancing operation. As you migrate, you can change it over time. When deploying block storage servers on PSEs, you need to ensure high data availability (e.g., the primary replica becomes the secondary replica in the event of a failure), high durability (e.g., the process of recreating lost data in the event of a server failure). It is preferable that it is possible to change their association even when PSEs are disconnected from the provider network or it is impossible to reach the provider network, in order to maintain .

図示のように、PSE1088は、ブロックストレージサーバーインスタンスにわたってボリュームがどのように分散(またはマッピング)されるかを追跡するコンポーネントを含み、これにより、ブロックストレージクライアントがボリュームにアクセスする必要があるとき、ブロックストレージクライアントはそのボリュームをホストするブロックストレージサーバーを見つけることができる。例示的なボリュームAのマッピングデータ1098は、各エントリについていくつかの項目を含む。その項目として、サーバー識別子(例えば、インスタンスまたはホストハードウェアに関連付けられる一意の識別子)、サーバーアドレス(例えば、IPアドレス)、及びボリュームAのボリュームタイプ(例えば、プライマリまたはセカンダリ)が挙げられる。マッピングデータは、(例えば、レプリカが複数のブロックストレージサーバーインスタンスにわたって分割またはストライプ化される場合)ブロック識別子等の異なる項目または追加項目を含み得る。例示的なボリュームAのマッピングデータ1098は、ボリュームAが、ブロックストレージサーバーインスタンス1050Aによって提供されるプライマリレプリカ1052と、ブロックストレージサーバーインスタンス950B及び1050Cによって各々提供される2つのセカンダリレプリカ1054及び1056とを含むことを示す。PSE1088は、他の多くのブロックストレージサーバーインスタンス(図示せず)をホストでき、おそらくホストすることに留意されたい。 As illustrated, the PSE 1088 includes components that track how volumes are distributed (or mapped) across block storage server instances, so that when a block storage client needs to access a volume, it A storage client can find a block storage server that hosts its volumes. The exemplary volume A mapping data 1098 includes several items for each entry. The items include a server identifier (eg, a unique identifier associated with an instance or host hardware), a server address (eg, an IP address), and a volume type of volume A (eg, primary or secondary). The mapping data may include different or additional items such as block identifiers (eg, if replicas are split or striped across multiple block storage server instances). Mapping data 1098 for example volume A shows that volume A has a primary replica 1052 provided by block storage server instance 1050A and two secondary replicas 1054 and 1056 provided by block storage server instances 950B and 1050C, respectively. Indicates that it includes. Note that PSE 1088 can and likely hosts many other block storage server instances (not shown).

ボリュームマッピングデータ1098を確実に記憶するために、分散データストア1064はボリュームマッピングデータ1098を記憶できる。いくつかの実施形態では、各分散データストアは、ボリュームマッピング(複数可)の状態を別々に維持するノードのクラスターに対応する。クラスターの各ノードは、クラスターの他のノードとメッセージを交換して、他のクラスターノードから見た状態に基づいてその状態を更新する。クラスターのノードの1つは、ボリュームマッピングへの変更が提案されるリーダーまたはプライマリノードとして指定され得る。クラスターのノードは、Paxosプロトコル等のコンセンサスプロトコルを実装して、所与のボリュームのボリュームマッピングデータへの変更を提案及び合意できる。クラスターは、1つ以上のボリュームのボリュームマッピングデータを追跡し得る。図示のように、クラスター1066はボリュームAのボリュームマッピングデータ1098を追跡する一方、他のクラスター1067は他のボリュームのボリュームマッピングデータを追跡する。 To reliably store volume mapping data 1098, distributed data store 1064 can store volume mapping data 1098. In some embodiments, each distributed data store corresponds to a cluster of nodes that separately maintain the state of the volume mapping(s). Each node in the cluster exchanges messages with other nodes in the cluster to update its state based on the state seen by the other cluster nodes. One of the nodes of the cluster may be designated as the leader or primary node to which changes to the volume mapping are proposed. The nodes of the cluster can implement a consensus protocol, such as the Paxos protocol, to propose and agree on changes to the volume mapping data for a given volume. A cluster may track volume mapping data for one or more volumes. As shown, cluster 1066 tracks volume mapping data 1098 for volume A, while other clusters 1067 track volume mapping data for other volumes.

いくつかの実施形態では、クラスターのノードは、プロバイダネットワークのホストによって実行されるインスタンスである。係るインスタンスは、ボリュームマッピングデータの個々のビューをホストの不揮発性ストレージに(例えば、ブロックストレージクライアントを介して、ブロックストレージサーバーインスタンスによってホストされるボリュームに)永続化する。他の実施形態では、クラスターのノードは、ブロックストレージサーバーインスタンスによって実行されるブロックストレージサーバーソフトウェアの一部である。例示的なノードソフトウェア環境1090に示されるように、ノードは、ブロックストレージサーバーソフトウェア1080に含まれるコンテナエンジンプロセス内でホストされるコンテナ1082として実行できる。係るノードは、ボリュームマッピングデータのビューを、ブロックストレージサーバーソフトウェアによって提供されるボリュームに直接永続化できる。好ましくは、クラスターのノードは、別個のインスタンスによって、または別個の障害ドメイン内でホストされる。 In some embodiments, the nodes of the cluster are instances run by hosts in the provider network. Such instances persist individual views of volume mapping data to a host's non-volatile storage (e.g., via a block storage client to a volume hosted by a block storage server instance). In other embodiments, the nodes of the cluster are pieces of block storage server software executed by block storage server instances. As shown in example node software environment 1090, a node can run as a container 1082 hosted within a container engine process included in block storage server software 1080. Such nodes can persist views of volume mapping data directly to volumes provided by block storage server software. Preferably, the nodes of the cluster are hosted by separate instances or within separate fault domains.

PSEのホストによって実行される他のソフトウェアと同様に、ノードはハードウェア障害の影響を受ける。係る場合、残りのノード(またはプロバイダネットワークのブロックストレージサービス)は、ノードの損失を検出し、新しいノードを作成し、損失したノードを交換して、他のノードのボリュームマッピングデータのコンセンサスビューに基づいて新しいノードのボリュームマッピングデータを更新できる。結果として、ボリュームマッピングデータを変更できるだけでなく、クラスターのノードをホストしているインスタンスのIDも変更できる。クラスターマッピングデータを使用して、クラスターを追跡できる。例示的なクラスターマッピングデータ1099は、ノード識別子(例えば、VOL_A_NODE1)、ノードアドレス(例えば、IPアドレス)、及びノードタイプ(例えば、リーダーノード)等のいくつかの項目を含む。この例では、クラスターは5つのノードで形成される。 Like other software executed by the PSE's host, the nodes are subject to hardware failures. In such case, the remaining nodes (or the provider network's block storage service) will detect the loss of the node, create a new node, and replace the lost node based on a consensus view of the other nodes' volume mapping data. update the volume mapping data for the new node. As a result, not only the volume mapping data can be changed, but also the identity of the instance hosting the nodes of the cluster. Cluster mapping data can be used to track clusters. Exemplary cluster mapping data 1099 includes several items, such as a node identifier (eg, VOL_A_NODE1), a node address (eg, IP address), and a node type (eg, leader node). In this example, the cluster is formed with five nodes.

クラスターマッピングデータは、クラスターディスカバリーサービス1062によって決定及び維持できる。円Aに示されるように、クラスターディスカバリーサービス1062は、PSE内のブロックストレージサーバーインスタンスによってホストされる様々なボリュームのクラスターのノードの場所を監視できる。クラスターディスカバリーサービス1062は、様々な方法でノードの場所を監視できる。例えば、ノードが環境1090で実行される実施形態では、クラスターディスカバリーサービス1062は、PSE1088によってホストされるブロックストレージサーバーインスタンス1050の全てを定期的にポーリングして、いずれかの常駐ノードのアイデンティティを取得できる。別の例として、PSE1088のホストのネットワークマネージャは、特別なブロードキャストメッセージをホストされるクラスターノードのいずれかにルーティングするように構成され得る(例えば、ブロックストレージサーバーインスタンス等によって直接的または間接的にホストされる)。クラスターディスカバリーサービス1062は、定期的にクエリをブロードキャストして、ホストされるクラスターノードのいずれかのアイデンティティを取得できる。 Cluster mapping data may be determined and maintained by cluster discovery service 1062. As shown in circle A, cluster discovery service 1062 can monitor the location of cluster nodes for various volumes hosted by block storage server instances within a PSE. Cluster discovery service 1062 can monitor node locations in a variety of ways. For example, in an embodiment where the nodes run in environment 1090, cluster discovery service 1062 may periodically poll all of the block storage server instances 1050 hosted by PSE 1088 to obtain the identity of any resident node. . As another example, the PSE 1088's host network manager may be configured to route special broadcast messages to any of the hosted cluster nodes (e.g., hosted directly or indirectly by a block storage server instance, etc.). ). Cluster discovery service 1062 can periodically broadcast queries to obtain the identity of any of the hosted cluster nodes.

いくつかの実施形態では、クラスターディスカバリーサービス1062は、PSE1088のホストのうちの1つによってホストされるインスタンスである。係るインスタンスはBSSのIVN1052内に予約済みのIPアドレスを伴うVNAを有し得るため、それはハードウェア障害が原因でホストを変更する必要がある場合でも到達できる。他の実施形態では、クラスターディスカバリーサービス1062は、PSEのDNSサービスに統合できる。例えば、ボリュームクラスターをドメインに関連付けでき、DNSサービスは、その名前に対する名前解決要求を、クラスターの1つ以上のノードのIPアドレスに対して解決できる。 In some embodiments, cluster discovery service 1062 is an instance hosted by one of the hosts of PSE 1088. Such an instance may have a VNA with a reserved IP address in the BSS's IVN 1052 so that it can be reached even if it needs to change hosts due to hardware failure. In other embodiments, cluster discovery service 1062 can be integrated with the PSE's DNS service. For example, a volume cluster can be associated with a domain, and a DNS service can resolve name resolution requests for that name to the IP addresses of one or more nodes in the cluster.

円Bに示されるように、インスタンス管理サービス1040は、特定のホストのブロックストレージクライアント1060にメッセージを送信して、ホストされるインスタンス(図示せず)にボリュームをアタッチできる。例えば、インスタンス管理サービス1040は、ボリュームAのインスタンス識別子及びボリューム識別子を含むメッセージをホストに送信できる。円Cに示されるように、ブロックストレージクライアント1060は、クラスターディスカバリーサービス1062にクエリを行って、ボリュームAのクラスター1066の1つ以上のノードのアイデンティティを取得できる。いくつかの実施形態では、ブロックストレージクライアント1060は、クラスターマッピングデータをクラスターマッピングデータキャッシュ1066にキャッシュできる。いくつかの実施形態では、クラスターディスカバリーサービス1062は省略され得、ブロックストレージクライアント1060は、PSE1088のブロックストレージサーバーインスタンスに(例えば、上記に説明したブロードキャストメカニズムによって)クエリを行い、ボリュームAのクラスター1066のノードを識別するように構成することに留意されたい。 As shown in circle B, the instance management service 1040 can send a message to a particular host's block storage client 1060 to attach a volume to a hosted instance (not shown). For example, instance management service 1040 can send a message to the host that includes the instance identifier and volume identifier for volume A. As shown in circle C, block storage client 1060 can query cluster discovery service 1062 to obtain the identity of one or more nodes in volume A's cluster 1066. In some embodiments, block storage client 1060 can cache cluster mapping data in cluster mapping data cache 1066. In some embodiments, the cluster discovery service 1062 may be omitted, and the block storage client 1060 queries the block storage server instances of the PSE 1088 (e.g., by the broadcast mechanism described above) and determines the cluster 1066 of the volume A. Note that the configuration is configured to identify nodes.

円Dに示されるように、ブロックストレージクライアント1060は、クラスター1066からボリュームAのボリュームマッピングデータの現在のビューを取得し、ボリュームマッピングデータに基づいて、円Eに示されるように、ボリュームAをホストするブロックストレージサーバー1050に接続できる。図示されていないが、いくつかの実施形態では、クライアントから接続要求を受信すると、ブロックストレージサーバーは、ブロックストレージサーバーがまだそのボリューム(または少なくともボリュームの一部)をホストしているかどうかを示すメッセージをボリュームクラスターに送信できる。ブロックストレージクライアントから接続要求を受信したにもかかわらず、ブロックストレージサーバーは様々な理由でボリュームをホストし得ない。例えば、ボリュームをホストしているサーバーのセットに対する最近の変更が、ボリュームクラスターに、もしくはボリュームクラスターを経由してまだ伝播されていない場合がある、または接続要求を送信するブロックストレージクライアントが、古いキャッシュボリュームマッピングデータに依存している場合がある。ブロックストレージサーバーがボリュームをホストしているかどうかに関係なく、クライアントから接続要求を受信するブロックストレージサーバーは、クラスターディスカバリーサービス1062からボリュームの1つ以上のノードのアイデンティティを取得できる。ブロックストレージサーバーがボリュームをホストしなくなった場合、ブロックストレージサーバーは、クラスターによって維持されるデータストアの更新を提案して、ブロックストレージサーバーをボリュームマッピングデータから除去できる。さらに、ブロックストレージサーバーは、要求を開始したブロックストレージクライアントに応答を送信して、接続の試行が失敗したことを示し得、オプションで、ボリュームがサーバーによってホストされなくなったことを示す。ブロックストレージサーバーがまだボリュームをホストしている場合、ブロックストレージサーバーはクラスターに確認応答を送信して、マッピングデータの少なくともその部分がまだ有効であることをクラスターに示すことができる。 Block storage client 1060 obtains a current view of volume mapping data for volume A from cluster 1066, as shown in circle D, and based on the volume mapping data, hosts volume A, as shown in circle E. A block storage server 1050 can be connected to the block storage server 1050. Although not shown, in some embodiments, upon receiving a connection request from a client, the block storage server sends a message indicating whether the block storage server is still hosting the volume (or at least a portion of the volume). can be sent to the volume cluster. Despite receiving a connection request from a block storage client, the block storage server is unable to host the volume for various reasons. For example, recent changes to the set of servers hosting the volume may not yet have been propagated to or through the volume cluster, or the block storage client sending the connection request may have an old cache May depend on volume mapping data. Regardless of whether a block storage server hosts a volume, a block storage server that receives a connection request from a client can obtain the identity of one or more nodes of the volume from cluster discovery service 1062. If a block storage server no longer hosts a volume, the block storage server can suggest an update to the data store maintained by the cluster to remove the block storage server from the volume mapping data. Further, the block storage server may send a response to the block storage client that initiated the request indicating that the connection attempt failed and optionally indicating that the volume is no longer hosted by the server. If the block storage server is still hosting the volume, the block storage server can send an acknowledgment to the cluster to indicate to the cluster that at least that portion of the mapping data is still valid.

図11は、少なくともいくつかの実施形態による、ボリュームマッピングを追跡するための例示的なシステムを示すブロック図である。上記に説明したように、PSEとプロバイダネットワークとの間の接続は保証できない。データアベイラビリティ及びデータ耐久性の所望のレベルを満たすために、PSEは、所与のボリュームと、そのボリュームをホストするブロックストレージサーバーインスタンスとの間のマッピングを変更することを可能にするファシリティを含む。図10を参照して説明したように、所与のボリュームのボリュームは、分散データストアを実装するクラスターを使用して追跡できる。図11は、ボリューム配置への段階的アプローチ、またはボリュームのレプリカもしくはレプリカの一部をホストするためにブロックストレージサーバーインスタンスを選択するプロセスを示す。具体的には、BSS1106のBSSボリューム配置サービス1107は、ボリュームの作成時に初期配置決定及び関連するボリュームマッピングを行い、PSEボリューム配置サービス1108は、ボリュームの存続期間にわたってボリュームマッピングへの後続の変更を管理する。PSEボリューム配置サービス1108は、PSEフレームワーク(例えば、PSEフレームワーク202)のコンポーネントとして統合されたPSE1188によってホストされるインスタンス等によって様々な方法で実装できる。 FIG. 11 is a block diagram illustrating an example system for tracking volume mapping, according to at least some embodiments. As explained above, connectivity between the PSE and the provider network cannot be guaranteed. To meet the desired level of data availability and data durability, the PSE includes facilities that allow the mapping between a given volume and the block storage server instance hosting that volume to be changed. As discussed with reference to FIG. 10, volumes for a given volume can be tracked using a cluster implementing a distributed data store. FIG. 11 illustrates a step-by-step approach to volume placement, or the process of selecting a block storage server instance to host a replica of a volume or a portion of a replica. Specifically, the BSS Volume Placement Service 1107 of the BSS 1106 makes initial placement decisions and associated volume mappings during volume creation, and the PSE Volume Placement Service 1108 manages subsequent changes to the volume mappings over the lifetime of the volume. do. PSE volume placement service 1108 can be implemented in a variety of ways, such as by an instance hosted by PSE 1188 integrated as a component of a PSE framework (eg, PSE framework 202).

円Aに示されるように、PSEボリューム配置サービス1108は、PSE1188によってホストされるブロックストレージサーバーインスタンスのステータスを監視する。例えば、PSEボリューム配置サービス1108は、ホストされるブロックストレージサーバーインスタンスを定期的にポーリングして、その応答があるかどうかをチェックできる、ならびに/または(例えば、図9を参照して説明したような)ホストされるブロックストレージサーバーインスタンスのリソース使用量、その障害ドメイン、及び/もしくはホストに関連するメトリックを収集できる。図示のように、PSEボリューム配置サービス1108は、円Bに示されるように、収集されたサーバーステータスをBSSボリューム配置サービス1107に送信できる。他の実施形態では、BSSボリューム配置サービス1107は、(図9を参照して説明したような)インスタンス管理サービスからリソース使用率に関連するメトリックを取得し得ることに留意されたい。 As shown in circle A, PSE volume placement service 1108 monitors the status of block storage server instances hosted by PSE 1188. For example, the PSE volume placement service 1108 can periodically poll a hosted block storage server instance to check for a response and/or (e.g., as described with reference to FIG. 9). ) can collect metrics related to the resource usage of hosted block storage server instances, their failure domains, and/or hosts. As shown, PSE volume placement service 1108 can send collected server status to BSS volume placement service 1107, as shown in circle B. Note that in other embodiments, the BSS volume placement service 1107 may obtain metrics related to resource utilization from an instance management service (such as described with reference to FIG. 9).

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と通信する。 Upon receiving a request to create a new block storage volume for an instance hosted by PSE 1188, BSS 1106 can request volume placement recommendations from BSS placement service 1107. Depending on the new volume's profile (eg, number of replicas, whether replicas as stripes, etc.), the BSS placement service 1107 can provide the identity of a recommended block storage server instance. In this example, BSS placement service 1107 recommends that block storage server instances 1150A and 1150B host new volume A with two replicas. Adopting the recommended block storage server instance, BSS 1106 creates a new cluster 1166 and tracks volume mapping data for volume A as shown in circle C. The mapping data initially identifies block storage server instance 1150A as hosting the primary replica block and storage server instance 1150B as hosting the secondary replica. Additionally, the BSS 1106 sends one or more messages to the identified block storage servers to identify the storage volumes (e.g., the storage volumes hosted by the block storage server instance 1150A and the block storage servers), as shown in circle D. Create a storage volume (hosted by instance 1150B). Storage volumes can be backed up by the capacity of the underlying host storage device provisioned to each block storage server instance. A storage volume created in block storage server instance 1150A can host a primary replica 1152 of volume A, and a storage volume created in block storage server instance 1150B can host a secondary replica 1154A of volume A. In some embodiments, a newly created storage volume can be loaded from a volume snapshot or machine image, such as that described with reference to FIG. In this example, an instance (not shown) attached to volume A performs block storage operations for some time (e.g., propagates writes from primary replica 1152 to secondary replica 1154B, as shown in circle E). block storage server instance 1150A communicates with block storage server instance 1150B.

ある時点で、ブロックストレージサーバーインスタンス1150Bは、円Fに示されるように、問題を経験し得る。例えば、ブロックストレージサーバーインスタンス1150Bは(例えば、メモリリーク、ハードウェア障害等が原因で)遅延し得る、または応答しなくなり得る。問題の検出は様々な方法で発生する可能性がある。いくつかの実施形態では、ブロックストレージサーバーインスタンス1150Aは、伝播された書き込みの確認の失敗等が原因の問題を検出する。係る場合、ブロックストレージサーバーインスタンス1150Aは、検出された問題に応答して実行するための1つ以上のアクションを含むポリシーを含み得る。例えば、ブロックストレージサーバーインスタンス1150Aは、いくつかの連続する伝播された書き込みが確認応答されなくなるのを待機し得る、または一定期間待機し得る。その時点で、ブロックストレージサーバーインスタンス1150Aは、PSEボリューム配置サービス1108からのセカンダリレプリカ1154の交換用ブロックストレージサーバーインスタンスを要求できる。他の実施形態では、PSEボリューム配置サービス1108は、円Aを参照して上記に説明した監視中に(例えば、収集されたメトリックまたは応答性に基づいて)問題を検出する。この場合も、PSEボリューム配置サービス1108は、セカンダリレプリカ1154のブロックストレージサーバーインスタンスの交換を開始することを含む検出された問題に応答して実行するための1つ以上のアクションを含むポリシーを含み得る。検出器に関係なく、PSEボリューム配置サービス1108は、ブロックストレージサーバーインスタンス1150Aに、交換用ブロックストレージサーバーインスタンスのアイデンティティを提供する。 At some point, block storage server instance 1150B may experience a problem, as shown in circle F. For example, block storage server instance 1150B may become delayed or unresponsive (eg, due to memory leaks, hardware failures, etc.). Detection of problems can occur in various ways. In some embodiments, block storage server instance 1150A detects problems due to propagated write confirmation failures and the like. In such a case, block storage server instance 1150A may include a policy that includes one or more actions to take in response to the detected problem. For example, block storage server instance 1150A may wait for a number of consecutive propagated writes to go unacknowledged, or may wait for a period of time. At that point, block storage server instance 1150A can request a replacement block storage server instance for secondary replica 1154 from PSE volume placement service 1108. In other embodiments, the PSE volume placement service 1108 detects problems during monitoring (e.g., based on collected metrics or responsiveness) as described above with reference to Circle A. Again, the PSE volume placement service 1108 may include a policy that includes one or more actions to take in response to a detected problem, including initiating a replacement of the block storage server instance of the secondary replica 1154. . Regardless of the detector, PSE volume placement service 1108 provides block storage server instance 1150A with the identity of a replacement block storage server instance.

この例では、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個のブロックストレージサーバーが同じ分散パターンを使用してボリュームの別のレプリカをホストする場合、ロストデータは、他のレプリカの対応する部分をホストするブロックストレージサーバーインスタンスからコピーできる。 In this example, PSE volume placement service 1108 identifies block storage server instance 1150C to block storage server instance 1150A, as shown in circle G. A message is sent to block storage server instance 1150C to create a storage volume to back up the replica data being relocated. For example, upon identifying block storage server instance 1150C, PSE volume placement service 1108 can send a message to block storage server instance 1150C to create a storage volume. As another example, block storage server instance 1150A can send a message to create a storage volume upon receiving identification information from PSE volume placement service 1108. Once created, block storage server instance 1150A can begin mirroring replica 1152 to block storage server instance 1150C as replica 1154B, as shown in circle H. Note that if block storage server instance 1150B is responsive (but exhibits poor performance, for example), a mirroring operation can be performed by copying replica 1154A to replica 1154B. Although remirroring from either replica 1154 or replica 1152 is possible in this scenario because those replicas are not distributed across storage servers, in other embodiments the replicas are distributed across various storage servers. It may be necessary to recreate or otherwise generate lost data by accessing and using redundancies etc. (e.g. parity bits, error correction codes, etc.) encoded in the stored data. . For example, if replica data is encoded and distributed across 10 block storage server instances and one of the 10 is lost, reading the data associated with the replica from the remaining 9 block storage server instances Lost data can be recreated. As another example, if another 10 block storage servers host another replica of a volume using the same distribution pattern, the lost data will be lost from the block storage server instance hosting the corresponding portion of the other replica. Can be copied.

円Iに示されるように、ブロックストレージサーバーインスタンス1150Aは、ボリュームAのボリュームマッピングを更新する要求をクラスター1166にサブミットして、ブロックストレージサーバーインスタンス1150Bを、セカンダリレプリカのホストとしてのブロックストレージサーバーインスタンス1150Cに交換できる。ブロックストレージサーバーインスタンス1150Aは、ブロックストレージサーバーインスタンス1150Cへの再ミラーリングを開始または完了すると、クラスター1166に要求をサブミットし得る。他の実施形態では、別のエンティティ(PSEボリューム配置サービス1108またはブロックストレージサーバーインスタンス1150C等)は、ボリュームAのボリュームマッピングを更新する要求を、クラスター1166にサブミットし得る。 As shown in circle I, block storage server instance 1150A submits a request to cluster 1166 to update the volume mapping for volume A, causing block storage server instance 1150B to host block storage server instance 1150C as the host of the secondary replica. can be exchanged for When block storage server instance 1150A initiates or completes a remirror to block storage server instance 1150C, it may submit a request to cluster 1166. In other embodiments, another entity (such as PSE volume placement service 1108 or block storage server instance 1150C) may submit a request to cluster 1166 to update the volume mapping for volume A.

図12は、少なくともいくつかの実施形態による、仮想化ブロックストレージサーバーを起動するための方法の動作を示すフロー図である。一部または全ての動作(もしくは本明細書で説明する他のプロセス、もしくは変形形態、及び/またはそれらの組合せ)は、実行可能命令で構成される1つ以上のコンピュータシステムの制御下で行われ、ハードウェアまたはその組合せにより1つ以上のプロセッサでまとめて実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装される。コードは、例えば、1つ以上のプロセッサによって実行可能な命令を含むコンピュータプログラムの形式で、コンピュータ可読ストレージ媒体に記憶される。コンピュータ可読ストレージ媒体は非一時的である。いくつかの実施形態では、1つ以上(または全て)の動作は、プロバイダネットワークの拡張機能の1つ以上のコンポーネントによって実行されるコンピュータプログラムまたはアプリケーションによって実行される。プロバイダネットワークの拡張機能は1つ以上の物理コンピューティングデバイスまたはシステムを含み、プロバイダネットワークのカスタマーの構内等、プロバイダネットワークのデータセンターからリモートに(例えば、データセンターネットワークの外側に)配置される。クラウドプロバイダネットワーク等のプロバイダネットワークは、プロバイダネットワークのデータセンター内に配置されるコンピュータシステムによって実行される様々なサービスを含む。拡張機能の1つ以上のコンポーネントは、プロバイダネットワークのコンピュータシステムによって実行されるサービスから管理操作等を受信することによって、プロバイダネットワークと通信する。いくつかの実施形態では、1つ以上(または全て)の操作は、他の図のホスト(例えば、ホスト420A)のコンポーネントによって行われる。 FIG. 12 is a flow diagram illustrating the operation of a method for starting a virtualized block storage server, according to at least some embodiments. Some or all of the operations (or other processes or variations described herein, and/or combinations thereof) may be performed under the control of one or more computer systems comprised of executable instructions. , hardware, or a combination thereof, as code (eg, executable instructions, one or more computer programs, or one or more applications) that collectively execute on one or more processors. The code is stored on a computer-readable storage medium, for example, in the form of a computer program containing instructions executable by one or more processors. Computer-readable storage media are non-transitory. In some embodiments, one or more (or all) of the operations are performed by a computer program or application executed by one or more components of the provider network extension. A provider network extension includes one or more physical computing devices or systems that are located remotely from the provider network's data center (eg, outside of the data center network), such as on the premises of a provider network customer. A provider network, such as a cloud provider network, includes various services performed by computer systems located within the provider network's data centers. One or more components of the extension communicate with the provider network, such as by receiving administrative operations from services executed by computer systems of the provider network. In some embodiments, one or more (or all) of the operations are performed by components of other illustrated hosts (eg, host 420A).

ブロック1205において、操作は、プロバイダネットワークの拡張機能のコンピュータシステムによって、第1の仮想マシンを起動する第1の要求を受信して、ブロックストレージサーバーアプリケーションをホストすることを含み、プロバイダネットワークの拡張機能は、少なくともサードパーティネットワークを介してプロバイダネットワークと通信する。ブロックストレージデバイスをPSEによってホストされるインスタンスに提供する際、PSEのホストによって提供される仮想化を使用して、ブロックストレージサーバーをホストできる。例えば、プロバイダネットワークのブロックストレージサービスは、インスタンス管理サービスによってブロックストレージサーバー仮想マシンの起動を開始でき、次に、インスタンス管理サービスは、プロバイダネットワークとPSEとの間の安全な通信チャネルを介して、起動要求をPSEの選択されたホストのホストマネージャに発行できる。 At block 1205, the operations include receiving, by a computer system of a provider network extension, a first request to launch a first virtual machine to host a block storage server application; communicates with the provider network via at least a third party network. When providing block storage devices to instances hosted by a PSE, the virtualization provided by the host of the PSE can be used to host the block storage server. For example, a provider network's block storage service can initiate the startup of a block storage server virtual machine by an instance management service, which then initiates the startup over a secure communication channel between the provider network and the PSE. A request can be issued to the host manager of the selected host in the PSE.

操作は、さらに、ブロック1210において、ホストコンピュータシステムの1つ以上のストレージデバイスのストレージ容量の少なくとも一部を、プロビジョニングされるストレージデバイスとして第1の仮想マシンにプロビジョニングすることを含む。仮想マシンの起動の一部として、ホストシステムのホストマネージャは、ホストシステムのコンピューティングリソースの一部を仮想マシンに割り付けできる、またはプロビジョニングできる。係るリソースは、例えば、ホストシステムのストレージデバイス(例えば、SSD)のストレージ容量、メモリ容量(例えば、RAM)、プロセッサまたはプロセッサコア等を含み得る。 The operations further include, at block 1210, provisioning at least a portion of the storage capacity of one or more storage devices of the host computer system to the first virtual machine as a provisioned storage device. As part of starting a virtual machine, a host manager of the host system can allocate or provision a portion of the host system's computing resources to the virtual machine. Such resources may include, for example, storage capacity of a storage device (eg, SSD), memory capacity (eg, RAM), processor or processor core, etc. of the host system.

ブロック1215において、操作は、さらに、ブロックストレージサーバーアプリケーションを第1の仮想マシンで実行することを含む。ブロックストレージサーバーアプリケーションを実行する一部として、ブロック1220において、操作は、さらに、プロバイダネットワークのブロックストレージサービスからの第2の要求に応答して、プロビジョニングされたストレージデバイスに論理ボリュームを作成し、論理ボリュームを作成することを含む。例えば、プロバイダネットワークのブロックストレージサービスは、1つ以上のメッセージを送信して、他のインスタンスにアタッチできる(プロビジョニングされたストレージ容量を使用して)ボリュームを作成でき、その結果、インスタンスがブロックストレージインターフェースを介してボリュームにアクセスできる。 At block 1215, the operations further include running a block storage server application on the first virtual machine. As part of executing the block storage server application, at block 1220, the operations further include creating a logical volume on the provisioned storage device in response to a second request from a block storage service of a provider network, and creating a logical Including creating volumes. For example, a provider network's block storage service can send one or more messages to create a volume (using provisioned storage capacity) that can be attached to other instances so that the instance The volume can be accessed through.

ブロックストレージサーバーアプリケーションを実行する一部として、ブロック1225において、操作は、さらに、論理ボリュームで入出力操作を行うための第3の要求を受信することと、ブロック1230において、論理ボリュームで要求された入出力の操作を行うこととを含む。例えば、図4を参照すると、インスタンスA430は、インスタンスにアタッチされ、ブロックストレージボリュームA434によってバックアップされた仮想ブロックデバイスのブロックアドレスからデータのブロックを読み取るコマンドを発行できる。ブロックストレージサーバーインスタンス450は、そのコマンドを(例えば、BSSのIVN452を介して)受信して、ブロックストレージボリュームA434に対してそれを処理できる。例えば、図5を参照すると、インスタンスB436は、インスタンスにアタッチされ、ブロックストレージボリュームB440によってバックアップされた仮想ブロックデバイスのブロックアドレスにデータのブロックを書き込むコマンドを発行できる。ブロックストレージサーバーインスタンス450は、そのコマンドを(例えば、BSSのIVN452を介して)受信して、ブロックストレージボリュームA440に対してそれを処理できる。 As part of executing the block storage server application, at block 1225, the operation further includes receiving a third request to perform an I/O operation on the logical volume; This includes performing input/output operations. For example, referring to FIG. 4, instance A 430 may issue a command to read a block of data from a block address of a virtual block device attached to the instance and backed by block storage volume A 434. Block storage server instance 450 can receive the command (eg, via BSS's IVN 452) and process it against block storage volume A 434. For example, referring to FIG. 5, instance B 436 may issue a command to write a block of data to a block address of a virtual block device attached to the instance and backed by block storage volume B 440. Block storage server instance 450 can receive the command (eg, via BSS's IVN 452) and process it against block storage volume A 440.

図13は、少なくともいくつかの実施形態による、仮想化ブロックストレージサーバーを使用するための方法の動作を示すフロー図である。一部または全ての動作(もしくは本明細書で説明する他のプロセス、もしくは変形形態、及び/またはそれらの組合せ)は、実行可能命令で構成される1つ以上のコンピュータシステムの制御下で行われ、ハードウェアまたはその組合せにより1つ以上のプロセッサでまとめて実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装される。コードは、例えば、1つ以上のプロセッサによって実行可能な命令を含むコンピュータプログラムの形式で、コンピュータ可読ストレージ媒体に記憶される。コンピュータ可読ストレージ媒体は非一時的である。いくつかの実施形態では、1つ以上(または全て)の動作は、プロバイダネットワークの拡張機能の1つ以上のコンポーネントによって実行されるコンピュータプログラムまたはアプリケーションによって実行される。プロバイダネットワークの拡張機能は1つ以上の物理コンピューティングデバイスまたはシステムを含み、プロバイダネットワークのカスタマーの構内等、プロバイダネットワークのデータセンターからリモートに(例えば、データセンターネットワークの外側に)配置される。クラウドプロバイダネットワーク等のプロバイダネットワークは、プロバイダネットワークのデータセンター内に配置されるコンピュータシステムによって実行される様々なサービスを含む。拡張機能の1つ以上のコンポーネントは、プロバイダネットワークのコンピュータシステムによって実行されるサービスから管理操作等を受信することによって、プロバイダネットワークと通信する。いくつかの実施形態では、1つ以上(または全て)の操作は、他の図のホスト(例えば、ホスト420A)によって行われる。 FIG. 13 is a flow diagram illustrating the operation of a method for using a virtualized block storage server, according to at least some embodiments. Some or all of the operations (or other processes or variations described herein, and/or combinations thereof) may be performed under the control of one or more computer systems comprised of executable instructions. , hardware, or a combination thereof, as code (eg, executable instructions, one or more computer programs, or one or more applications) that collectively execute on one or more processors. The code is stored on a computer-readable storage medium, for example, in the form of a computer program containing instructions executable by one or more processors. Computer-readable storage media are non-transitory. In some embodiments, one or more (or all) of the operations are performed by a computer program or application executed by one or more components of the provider network extension. A provider network extension includes one or more physical computing devices or systems that are located remotely from the provider network's data center (eg, outside of the data center network), such as on the premises of a provider network customer. A provider network, such as a cloud provider network, includes various services performed by computer systems located within the provider network's data centers. One or more components of the extension communicate with the provider network, such as by receiving administrative operations from services executed by computer systems of the provider network. In some embodiments, one or more (or all) of the operations are performed by a host in another figure (eg, host 420A).

ブロック1305において、操作は、コンピュータシステムによって、コンピュータシステムの1つ以上のストレージデバイスを使用して第1のボリュームをホストするための第1のブロックストレージサーバー仮想マシンを実行することを含む。図4に示されるように、例えば、ホスト420Aは、仮想マシン(すなわち、ブロックストレージサーバーインスタンス450)をホストしている。ブロック1310において、操作は、さらに、コンピュータシステムによって、仮想ブロックストレージデバイスにアクセスできる第2の仮想マシンを実行することを含む。ホスト420Aは、また、別の仮想マシン(すなわち、インスタンス430)をホストしている。ブロック1315において、操作は、さらに、コンピュータシステムによって、ブロックストレージクライアントを実行することを含む。ホスト420Aはブロックストレージクライアント460Aを含み、これは、ホストされる仮想マシンへのブロックストレージデバイスのアタッチを容易にできる。ブロックストレージクライアントを実行する一部として、ブロック1320において、操作は、さらに、第2の仮想マシンから、仮想ブロックストレージデバイスで行う第1のブロックストレージ操作を受信することと、ブロック1325において、メッセージを送信して、第1のブロックストレージサーバー仮想マシンに、第1のブロックストレージサーバー仮想マシンに第1のボリュームで第1のブロックストレージ操作を行わせることとを含む。仮想マシンは、ブロックストレージクライアントを介してアタッチされたストレージデバイスをブロックするブロックストレージ操作(例えば、ブロックの読み取り、書き込み、バーストの読み取り、書き込み等)を発行できる。ブロックストレージクライアントは、例えば、それらのブロックストレージ操作を、ネットワーク全体でブロックアドレスを含むボリュームをホストするブロックストレージサーバーに中継できる。 At block 1305, operations include executing, by the computer system, a first block storage server virtual machine to host a first volume using one or more storage devices of the computer system. As shown in FIG. 4, for example, host 420A is hosting a virtual machine (ie, block storage server instance 450). At block 1310, the operations further include executing, by the computer system, a second virtual machine that has access to the virtual block storage device. Host 420A is also hosting another virtual machine (ie, instance 430). At block 1315, the operations further include executing a block storage client by the computer system. Host 420A includes a block storage client 460A, which can facilitate the attachment of block storage devices to hosted virtual machines. As part of executing the block storage client, at block 1320, the operation further includes receiving, from a second virtual machine, a first block storage operation to perform on the virtual block storage device; transmitting to cause the first block storage server virtual machine to perform a first block storage operation on the first volume. A virtual machine can issue block storage operations (eg, block reads, writes, burst reads, writes, etc.) that block attached storage devices via a block storage client. Block storage clients may, for example, relay their block storage operations across a network to block storage servers that host volumes containing block addresses.

図14は、少なくともいくつかの実施形態による、プロバイダ基板拡張における仮想化ブロックストレージサーバーを管理するための方法の動作を示すフロー図である。一部または全ての動作(もしくは本明細書で説明する他のプロセス、もしくは変形形態、及び/またはそれらの組合せ)は、実行可能命令で構成される1つ以上のコンピュータシステムの制御下で行われ、ハードウェアまたはその組合せにより1つ以上のプロセッサでまとめて実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装される。コードは、例えば、1つ以上のプロセッサによって実行可能な命令を含むコンピュータプログラムの形式で、コンピュータ可読ストレージ媒体に記憶される。コンピュータ可読ストレージ媒体は非一時的である。いくつかの実施形態では、1つ以上(または全て)の動作は、プロバイダネットワークの拡張機能の1つ以上のコンポーネントによって実行されるコンピュータプログラムまたはアプリケーションによって実行される。プロバイダネットワークの拡張機能は1つ以上の物理コンピューティングデバイスまたはシステムを含み、プロバイダネットワークのカスタマーの構内等、プロバイダネットワークのデータセンターからリモートに(例えば、データセンターネットワークの外側に)配置される。クラウドプロバイダネットワーク等のプロバイダネットワークは、プロバイダネットワークのデータセンター内に配置されるコンピュータシステムによって実行される様々なサービスを含む。拡張機能の1つ以上のコンポーネントは、プロバイダネットワークのコンピュータシステムによって実行されるサービスから管理操作等を受信することによって、プロバイダネットワークと通信する。いくつかの実施形態では、1つ以上(または全て)の操作は、他の図のPSE(例えば、PSE1088、PSE1188)のコンポーネントによって行われる。 FIG. 14 is a flow diagram illustrating the operation of a method for managing virtualized block storage servers in a provider board extension, according to at least some embodiments. Some or all of the operations (or other processes or variations described herein, and/or combinations thereof) may be performed under the control of one or more computer systems comprised of executable instructions. , hardware, or a combination thereof, as code (eg, executable instructions, one or more computer programs, or one or more applications) that collectively execute on one or more processors. The code is stored on a computer-readable storage medium, for example, in the form of a computer program containing instructions executable by one or more processors. Computer-readable storage media are non-transitory. In some embodiments, one or more (or all) of the operations are performed by a computer program or application executed by one or more components of the provider network extension. A provider network extension includes one or more physical computing devices or systems that are located remotely from the provider network's data center (eg, outside of the data center network), such as on the premises of a provider network customer. A provider network, such as a cloud provider network, includes various services performed by computer systems located within the provider network's data centers. One or more components of the extension communicate with the provider network, such as by receiving administrative operations from services executed by computer systems of the provider network. In some embodiments, one or more (or all) of the operations are performed by components of PSEs in other figures (eg, PSE 1088, PSE 1188).

ブロック1405において、操作は、第1のブロックストレージサーバーインスタンスによって第1の要求を受信して、第1のストレージボリュームを作成し、第1の論理ボリュームの第1の部を記憶することと、ブロック1410において、第2のブロックストレージサーバーインスタンスによって第2の要求を受信して、第2のストレージボリュームを作成し、第1の論理ボリュームの第2の部を記憶することとを含む。図11に示されるように、例えば、ボリューム(例えば、レプリカ、ストライプ化されたレプリカ等)の初期配置は、プロバイダネットワークのブロックストレージサービス1106から発信され、PSE1188のコンポーネントによって受信できる。図11に示される例では、ボリュームAは、PSE1188のホストでブロックストレージサーバーインスタンス1150A及び1150Cを使用して最初に記憶される。 At block 1405, operations include receiving a first request by a first block storage server instance to create a first storage volume and storing a first portion of a first logical volume; At 1410, a second request is received by a second block storage server instance to create a second storage volume and store a second portion of the first logical volume. As shown in FIG. 11, for example, initial placement of volumes (eg, replicas, striped replicas, etc.) can originate from the provider network's block storage service 1106 and be received by components of the PSE 1188. In the example shown in FIG. 11, volume A is initially stored using block storage server instances 1150A and 1150C hosted on PSE 1188.

ブロック1415において、操作は、さらに、第3の要求を第3のブロックストレージサーバーインスタンスに送信して、第3のストレージボリュームを作成し、第1の論理ボリュームの第2の部を記憶することを含む。ある時点で、ボリュームの一部をホストするブロックストレージサーバーインスタンスを変更する必要があり得る。本明細書で説明するように、PSEボリューム配置サービス1108またはボリュームをホストする他のブロックストレージサーバーインスタンスの1つは、別のブロックストレージサーバーインスタンスにメッセージを送信して、変更されているインスタンスを交換できる。 At block 1415, the operation further includes sending a third request to a third block storage server instance to create a third storage volume and store the second portion of the first logical volume. include. At some point, you may need to change the block storage server instance that hosts some of your volumes. As described herein, the PSE volume placement service 1108 or one of the other block storage server instances hosting the volume sends a message to another block storage server instance to replace the instance that is being modified. can.

ブロック1420において、操作は、さらに、第3のブロックストレージサーバーインスタンスによって、第1の論理ボリュームの第2の部を第3のストレージボリュームに記憶することを含む。ブロック1425において、操作は、さらに、第1の論理ボリュームの一部をホストする各ブロックストレージサーバーインスタンスの識別情報を含むデータストアを更新して、第2のブロックストレージサーバーインスタンスの識別情報を除去し、第3のブロックストレージサーバーインスタンスの識別情報を追加することを含む。インスタンスにわたってボリュームの移行を追跡するために、PSE1188は、ボリューム(もしあれば、レプリカ、サーバーにわたるストライピング等を含む)をマッピングするデータストアをホストできる。係るデータストアは、図10を参照して説明したようなクラスターであり得る。 At block 1420, the operations further include storing the second portion of the first logical volume in a third storage volume by a third block storage server instance. At block 1425, the operation further updates the data store containing the identification information of each block storage server instance that hosts the portion of the first logical volume and removes the identification information of the second block storage server instance. , including adding an identification of a third block storage server instance. To track migration of volumes across instances, PSE 1188 can host datastores that map volumes (including replicas, striping across servers, etc., if any). Such a data store may be a cluster as described with reference to FIG.

図15は、少なくともいくつかの実施形態による、例示的なプロバイダネットワーク(または「サービスプロバイダシステム」)環境を示す。プロバイダネットワーク1500は1つ以上の仮想化サービス1510を介してカスタマーにリソース仮想化を提供し得、仮想化サービス1510は、カスタマーが、1つ以上のデータセンターの1つ以上の単数のプロバイダネットワークまたは複数のプロバイダネットワーク内のデバイスに実装された仮想化リソース(限定ではないが、計算リソース及びストレージリソースを含む)のインスタンス1512を購入、レンタル、または取得することを可能にする。ローカルインターネットプロトコル(IP)アドレス1516は、リソースインスタンス1512に関連付けられ得る。ローカルIPアドレスは、プロバイダネットワーク1500のリソースインスタンス1512の内部ネットワークアドレスである。いくつかの実施形態では、プロバイダネットワーク1500は、また、カスタマーがプロバイダ1500から取得し得るパブリックIPアドレス1514及び/またはパブリックIPアドレス範囲(例えば、インターネットプロトコルバージョン4(IPv4)またはインターネットプロトコルバージョン6(IPv6)アドレス)を提供し得る。 FIG. 15 illustrates an example provider network (or “service provider system”) environment, according to at least some embodiments. Provider network 1500 may provide resource virtualization to a customer via one or more virtualization services 1510, which may provide resource virtualization to a customer via one or more provider networks of one or more data centers or Enables purchasing, renting, or acquiring instances 1512 of virtualized resources (including, but not limited to, compute and storage resources) implemented on devices in multiple provider networks. A local Internet Protocol (IP) address 1516 may be associated with resource instance 1512. The local IP address is the internal network address of the resource instance 1512 of the provider network 1500. In some embodiments, provider network 1500 also provides a public IP address 1514 and/or range of public IP addresses (e.g., Internet Protocol version 4 (IPv4) or Internet Protocol version 6 (IPv6) that a customer may obtain from provider 1500. ) address).

従来、プロバイダネットワーク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に戻され得る。 Traditionally, the provider network 1500 is configured to provide, via a virtualization service 1510, a service provider's customers (e.g., customers operating one or more client networks 1550A-1550C that include one or more customer device(s) 1552). , may enable at least some public IP addresses 1514 assigned or assigned to a customer to be dynamically associated with a particular resource instance 1512 assigned to the customer. Provider network 1500 also allows a customer to transfer a public IP address 1514 previously mapped to one virtualized computing resource instance 1512 assigned to the customer to another virtualized computing resource instance 1512 also assigned to the customer. It may be possible to remap to instance 1512. Using virtualized computing resource instances 1512 and public IP addresses 1514 provided by the service provider, a customer of the service provider, such as an operator of customer network(s) 1550A-1550C, may implement customer-specific applications, for example. and may present customer applications on an intermediate network 1540, such as the Internet. Other network entities 1520 of intermediate network 1540 may then generate traffic to destination public IP addresses 1514 exposed by customer network(s) 1550A-1550C. Traffic is routed to the service provider data center, where it is routed via the network board to the local IP address 1516 of the virtualized computing resource instance 1512 that is currently mapped to the destination public IP address 1514. Similarly, response traffic from virtualized computing resource instance 1512 may be routed through the network substrate to intermediate network 1540 and back to source entity 1520.

本明細書で使用される場合、ローカルIPアドレスは、例えば、プロバイダネットワークにおけるリソースインスタンスの内部または「プライベート」ネットワークアドレスを指す。ローカルIPアドレスは、インターネットエンジニアリングタスクフォース(IETF)のRequest for Comments(RFC)1918によって予約されたアドレスブロック内にあり得、及び/またはIETF RFC 4193によって指定されたアドレス形式のものであり得、プロバイダネットワーク内で変更可能であり得る。プロバイダネットワークの外側から発信されたネットワークトラフィックは、ローカルIPアドレスに直接ルーティングされない。代わりに、トラフィックはリソースインスタンスのローカルIPアドレスにマッピングされるパブリックIPアドレスを使用する。プロバイダネットワークは、パブリックIPアドレスからローカルIPアドレスに(またはその逆も同様に)マッピングを行うために、ネットワークアドレス変換(NAT)または同様の機能を提供するネットワークデバイスまたはアプライアンスを含み得る。 As used herein, local IP address refers to the internal or "private" network address of a resource instance in a provider network, for example. The local IP address may be within the address block reserved by Internet Engineering Task Force (IETF) Request for Comments (RFC) 1918, and/or may be of the address format specified by IETF RFC 4193, and may be of the address format specified by IETF RFC 4193, and May be changeable within the network. Network traffic originating from outside the provider network is not routed directly to local IP addresses. Instead, traffic uses a public IP address that maps to the resource instance's local IP address. A provider network may include network devices or appliances that provide network address translation (NAT) or similar functionality to map public IP addresses to local IP addresses (or vice versa).

パブリックIPアドレスは、サービスプロバイダまたはカスタマーのいずれかによってリソースインスタンスに割り当てられるインターネット可変ネットワークアドレスである。パブリックIPアドレスにルーティングされたトラフィックは、例えば、1:1のNATによって変換され、リソースインスタンスの各々のローカルIPアドレスに転送される。 A public IP address is an Internet variable network address assigned to a resource instance by either a service provider or a customer. Traffic routed to the public IP address is translated by, for example, 1:1 NAT and forwarded to the local IP address of each of the resource instances.

いくつかのパブリックIPアドレスは、プロバイダネットワークインフラストラクチャによって特定のリソースインスタンスに割り当てられ得る。これらのパブリックIPアドレスは、標準パブリックIPアドレスまたは単なる標準IPアドレスと称され得る。いくつかの実施形態では、リソースインスタンスのローカルIPアドレスへの標準IPアドレスのマッピングは、全てのリソースインスタンスタイプのデフォルトの起動構成である。 Several public IP addresses may be assigned to a particular resource instance by the provider network infrastructure. These public IP addresses may be referred to as standard public IP addresses or just standard IP addresses. In some embodiments, mapping a standard IP address to a resource instance's local IP address is the default startup configuration for all resource instance types.

少なくともいくつかのパブリックIPアドレスは、プロバイダネットワーク1500のカスタマーに割り付けられ得る、またはそのカスタマーによって取得され得る。次に、カスタマーはその割り付けられたパブリックIPアドレスを、カスタマーに割り付けられた特定のリソースインスタンスに割り当て得る。これらのパブリックIPアドレスは、カスタマーパブリックIPアドレスまたは単にカスタマーIPアドレスと称され得る。標準IPアドレスの場合のようにプロバイダネットワーク1500によってリソースインスタンスに割り当てられる代わりに、カスタマーIPアドレスは、例えば、サービスプロバイダによって提供されるAPIを介して、カスタマーによってリソースインスタンスに割り当てられ得る。標準IPアドレスとは異なり、カスタマーIPアドレスはカスタマーアカウントに割り付けられ、必要に応じてまたは所望に応じて、各々のカスタマーによって他のリソースインスタンスに再マッピングできる。カスタマーIPアドレスは、特定のリソースインスタンスではなく、カスタマーのアカウントに関連付けられ、カスタマーがそのIPアドレスを解除することを選択するまで、そのIPアドレスを制御する。従来の静的IPアドレスとは異なり、カスタマーIPアドレスは、カスタマーのパブリックIPアドレスをカスタマーのアカウントに関連付けられるいずれかのリソースインスタンスに再マッピングすることによって、カスタマーがリソースインスタンスまたはアベイラビリティゾーンの障害をマスクすることを可能にする。例えば、カスタマーIPアドレスは、カスタマーIPアドレスを交換用のリソースインスタンスに再マッピングすることによって、カスタマーのリソースインスタンスまたはソフトウェアの問題をうまく処理することが可能になる。 At least some public IP addresses may be assigned to or obtained by customers of provider network 1500. The customer may then assign the assigned public IP address to a particular resource instance assigned to the customer. These public IP addresses may be referred to as customer public IP addresses or simply customer IP addresses. Instead of being assigned to a resource instance by the provider network 1500 as is the case with standard IP addresses, customer IP addresses may be assigned to resource instances by the customer, for example, via an API provided by the service provider. Unlike standard IP addresses, customer IP addresses are assigned to customer accounts and can be remapped by each customer to other resource instances as needed or desired. A customer IP address is associated with the customer's account, rather than a particular resource instance, and controls the IP address until the customer chooses to release it. Unlike traditional static IP addresses, customer IP addresses allow a customer to mask the failure of a resource instance or Availability Zone by remapping the customer's public IP address to any resource instance associated with the customer's account. make it possible to For example, the customer IP address may be enabled to address problems with the customer's resource instance or software by remapping the customer IP address to a replacement resource instance.

図16は、少なくともいくつかの実施形態による、ストレージサービス及びハードウェア仮想化サービスをカスタマーに提供する例示的なプロバイダネットワークのブロック図である。ハードウェア仮想化サービス1620は、複数の計算リソース1624(例えば、VM)をカスタマーに提供する。計算リソース1624は、例えば、プロバイダネットワーク1600のカスタマー(例えば、カスタマーネットワーク1650を実装するカスタマー)にレンタルまたはリースされ得る。計算リソース1624のそれぞれは1つ以上のローカルIPアドレスが提供され得る。プロバイダネットワーク1600は、計算リソース1624のローカルIPアドレスからパブリックインターネット宛先に及びパブリックインターネットソースから計算リソース1624のローカルIPアドレスに、パケットをルーティングするように構成され得る。 FIG. 16 is a block diagram of an example provider network that provides storage services and hardware virtualization services to customers, according to at least some embodiments. Hardware virtualization service 1620 provides multiple computational resources 1624 (eg, VMs) to a customer. Computing resources 1624 may be rented or leased, for example, to a customer of provider network 1600 (eg, a customer implementing customer network 1650). Each of the computational resources 1624 may be provided with one or more local IP addresses. Provider network 1600 may be configured to route packets from a local IP address of computational resource 1624 to a public Internet destination and from a public Internet source to a local IP address of computational resource 1624 .

プロバイダネットワーク1600は、例えば、ローカルネットワーク1656を介して中間ネットワーク1640に結合されるカスタマーネットワーク1650に、中間ネットワーク1640及びプロバイダネットワーク1600に結合されるハードウェア仮想化サービス1620を介して仮想コンピューティングシステム1692を実装する能力を提供し得る。いくつかの実施形態では、ハードウェア仮想化サービス1620は、1つ以上のAPI1602、例えば、ウェブサービスインターフェースを提供し得、それを介して、カスタマーネットワーク1650は、例えば、コンソール1694(例えば、ウェブベースのアプリケーション、スタンドアロンのアプリケーション、モバイルアプリケーション等)を介して、ハードウェア仮想化サービス1620によって提供される機能にアクセスし得る。いくつかの実施形態では、プロバイダネットワーク1600において、カスタマーネットワーク1650における仮想コンピューティングシステム1692のそれぞれは、カスタマーネットワーク1650にリース、レンタル、またはそうでなければ提供される計算リソース1624に対応し得る。 Provider network 1600 may, for example, connect virtual computing system 1692 to customer network 1650 which is coupled to intermediate network 1640 via local network 1656 and to virtual computing system 1692 via hardware virtualization service 1620 which is coupled to intermediate network 1640 and provider network 1600. can provide the ability to implement In some embodiments, the hardware virtualization service 1620 may provide one or more APIs 1602, e.g., a web services interface, through which the customer network 1650 can, e.g., connect the console 1694 (e.g., web-based applications, standalone applications, mobile applications, etc.) may access the functionality provided by hardware virtualization services 1620. In some embodiments, in provider network 1600, each virtual computing system 1692 in customer network 1650 may correspond to a computing resource 1624 that is leased, rented, or otherwise provided to customer network 1650.

仮想コンピューティングシステム1692のインスタンス及び/または別のカスタマーデバイス1690から(例えば、コンソール1694を介して)、カスタマーは、例えば、1つ以上のAPI1602を介して、ストレージサービス1610の機能にアクセスして、プロバイダネットワーク1600によって提供される仮想データストア1616(例えば、フォルダまたは「バケット」、仮想化ボリューム、データベース等)のストレージリソース1618A~1618Nからデータにアクセスして、ストレージリソース1618A~1618Nにデータを記憶し得る。いくつかの実施形態では、仮想化データストアゲートウェイ(図示せず)がカスタマーネットワーク1650に提供され得、カスタマーネットワーク1650は、少なくともいくつかのデータ、例えば、頻繁にアクセスされるデータまたは重要データをローカルにキャッシュし得、1つ以上の多くの通信チャネルを介してストレージサービス1610と通信し、ローカルキャッシュから新しいデータまたは修正されたデータをアップロードし得、その結果、データのプライマリストア(仮想化データストア1616)が維持される。いくつかの実施形態では、ユーザは、仮想コンピューティングシステム1692を介して及び/または別のカスタマーデバイス1690で、ストレージ仮想化サービスとして機能するストレージサービス1610を介して仮想データストア1616のボリュームをマウント及びそれにアクセスし得、これらのボリュームは、ローカル(仮想化)ストレージ1698としてユーザに見え得る。 From an instance of virtual computing system 1692 and/or another customer device 1690 (e.g., via console 1694), the customer can access the functionality of storage service 1610, e.g., via one or more APIs 1602, and Access data from and store data in storage resources 1618A-1618N of virtual data stores 1616 (e.g., folders or “buckets”, virtualized volumes, databases, etc.) provided by provider network 1600. obtain. In some embodiments, a virtualized data store gateway (not shown) may be provided to customer network 1650, where customer network 1650 stores at least some data, such as frequently accessed or critical data, locally. may communicate with storage service 1610 via one or more of a number of communication channels to upload new or modified data from the local cache so that the data's primary store (virtualized data store 1616) is maintained. In some embodiments, a user may mount and mount volumes of a virtual datastore 1616 via a virtual computing system 1692 and/or on another customer device 1690 via a storage service 1610 that functions as a storage virtualization service. These volumes may appear to the user as local (virtualized) storage 1698.

図16には示されていないが、仮想化サービス(複数可)は、また、API(複数可)1602を介してプロバイダネットワーク1600内のリソースインスタンスからアクセスされ得る。例えば、カスタマー、アプライアンスサービスプロバイダ、または他のエンティティは、API1602を介してプロバイダネットワーク1600における各々の仮想ネットワーク内から仮想化サービスにアクセスして、仮想ネットワーク内または別の仮想内の1つ以上のリソースインスタンスの割り付けを要求し得る。 Although not shown in FIG. 16, virtualized service(s) may also be accessed from resource instances within provider network 1600 via API(s) 1602. For example, a customer, appliance service provider, or other entity may access virtualization services from within each virtual network in provider network 1600 via API 1602 to access one or more resources within the virtual network or within another virtual network. May request instance allocation.

図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つのコンピューティングデバイスまたは任意の数のコンピューティングデバイスを含み得る。 FIG. 17 is a block diagram illustrating an example computing device that may be used in at least some embodiments. In at least some embodiments, such computer systems include control plane components and/or data plane components used to support the provider boards and/or PSEs described herein, various virtualization components (virtual machine, container, etc.) and/or a server implementing one or more SEDs. Such a computer system may include a general purpose or special purpose computer system that includes or is configured to access one or more computer-accessible media. In at least some embodiments, such computer systems may also be used to implement components external to the provider board and/or provider board extensions (e.g., customer gateway/router 186, other customer resources 187, etc.). . In the illustrated embodiment of the computer system, computer system 1700 includes one or more processors 1710 coupled to system memory 1720 through an input/output (I/O) interface 1730. Computing device 1700 further includes a network interface 1740 coupled to I/O interface 1730. FIG. 17 depicts computer system 1700 as a single computing device, and in various embodiments, computer system 1700 is configured to operate together as a single computing device or May include any number of computing devices.

様々な実施形態では、コンピュータシステム1700は、1つのプロセッサ1710を含むユニプロセッサシステム、またはいくつかのプロセッサ1710(例えば、2つ、4つ、8つ、または別の適切な数)を含むマルチプロセッサシステムであり得る。プロセッサ1710は、命令を実行することが可能であるいずれかの適切なプロセッサであり得る。例えば、様々な実施形態では、プロセッサ2010は、x86、ARM、PowerPC、SPARC、もしくはMIPS ISA、または任意の他の適切なISA等の様々な命令セットアーキテクチャ(ISA)のいずれかを実装する汎用プロセッサまたは組み込みプロセッサであり得る。マルチプロセッサシステムでは、プロセッサ1710のそれぞれは、一般的に、必ずではないが同じISAを実装し得る。 In various embodiments, computer system 1700 is a uniprocessor system that includes one processor 1710 or a multiprocessor system that includes several processors 1710 (e.g., two, four, eight, or another suitable number). It can be a system. Processor 1710 may be any suitable processor capable of executing instructions. For example, in various embodiments, processor 2010 is a general purpose processor implementing any of a variety of instruction set architectures (ISAs), such as x86, ARM, PowerPC, SPARC, or MIPS ISA, or any other suitable ISA. Or it can be an embedded processor. In a multiprocessor system, each of the processors 1710 may typically, but not necessarily, implement the same ISA.

システムメモリ1720は、プロセッサ(複数可)1710によってアクセス可能な命令及びデータを記憶し得る。様々な実施形態では、システムメモリ1720は、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、同期ダイナミックRAM(SDRAM)、不揮発性/フラッシュ型メモリ、または任意の他のタイプのメモリ等のいずれかの適切なメモリ技術を使用して実装され得る。図示の実施形態では、上記に説明したそれらの方法、技術、及びデータ等の1つ以上の所望の機能を実施するプログラム命令及びデータは、システムメモリ1720内にコード1725及びデータ1726として記憶されていることが示される。 System memory 1720 may store instructions and data that can be accessed by processor(s) 1710. In various embodiments, system memory 1720 is any of random access memory (RAM), static RAM (SRAM), synchronous dynamic RAM (SDRAM), nonvolatile/flash type memory, or any other type of memory, etc. may be implemented using any suitable memory technology. In the illustrated embodiment, program instructions and data implementing one or more desired functions, such as those methods, techniques, and data described above, are stored in system memory 1720 as code 1725 and data 1726. It is shown that there is.

一実施形態では、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に直接組み込まれ得る。 In one embodiment, I/O interface 1730 is configured to coordinate I/O traffic between processor 1710, system memory 1720, and any peripheral devices of the device, including network interface 1740 or other peripheral interfaces. obtain. In some embodiments, I/O interface 1730 performs any necessary protocol, timing, or other data conversion to convert data signals from one component (e.g., system memory 1720) to another component. (eg, processor 1710). In some embodiments, I/O interface 1730 provides support for devices attached by various types of peripheral buses, such as, for example, variations of the Peripheral Component Interconnect (PCI) bus standard or the Universal Serial Bus (USB) standard. may include. In some embodiments, the functionality of I/O interface 1730 may be divided into two or more separate components, such as, for example, a northbridge and a southbridge. Also, in some embodiments, some or all of the functionality of I/O interface 1730, such as an interface to system memory 1720, may be integrated directly into processor 1710.

ネットワークインターフェース1740は、コンピュータシステム1700と、ネットワークまたは複数のネットワーク1750にアタッチされる他のデバイス1760(例えば、図1に示されるような他のコンピュータシステムまたはデバイス等)との間で、データを交換することを可能にするように構成され得る。様々な実施形態では、ネットワークインターフェース1740は、例えば、イーサネット(登録商標)ネットワークのタイプ等のいずれかの適切な有線または無線の一般的なデータネットワークを介して通信をサポートし得る。さらに、ネットワークインターフェース1740は、アナログ音声ネットワークもしくはデジタルファイバ通信ネットワーク等の電気通信/テレフォニネットワークを介して、ファイバチャネルSAN等のストレージエリアネットワーク(SAN)を介して、または任意の他の適切なタイプのネットワーク及び/もしくはプロトコルを介して通信をサポートし得る。 Network interface 1740 exchanges data between computer system 1700 and other devices 1760 (such as other computer systems or devices as shown in FIG. 1) that are attached to network or networks 1750. may be configured to allow. In various embodiments, network interface 1740 may support communication via any suitable wired or wireless common data network, such as, for example, a type of Ethernet network. Additionally, the network interface 1740 can be configured via a telecommunications/telephony network, such as an analog voice network or a digital fiber communications network, via a storage area network (SAN), such as a Fiber Channel SAN, or any other suitable type. Communication may be supported via networks and/or protocols.

いくつかの実施形態では、コンピュータシステム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で実行される。 In some embodiments, the computer system 1700 has an I/O interface 1730 (e.g., based on the Peripheral Component Interconnect Express (PCI-E) standard, or another such as the QuickPath Interconnect (QPI) or the UltraPath Interconnect (UPI)). one or more offload cards 1770 (including one or more processors 1775, and optionally including one or more network interfaces 1740) connected using a bus that implements a version of an interconnect. For example, in some embodiments, computer system 1700 may function as a host electronic device (e.g., operating as part of a hardware virtualization service) that hosts compute instances and one or more offload cards 1770 runs a virtualization manager that can manage Compute instances running on host electronic devices. By way of example, in some embodiments, offload card(s) 1770 can suspend and/or unpause a Compute instance, start and/or terminate a Compute instance, perform memory transfers/copies, You can perform instance management operations, etc. These management operations, in some embodiments, are performed by the offload card in coordination with the hypervisor (e.g., in response to a request from the hypervisor) performed by other processors 1710A-1710N of the hypervisor's computer system 1700. 1770. However, in some embodiments, the virtualization manager implemented by offload card(s) 1770 can service requests from other entities (e.g., from the Compute instance itself), and can serve requests from any other entity. Unable to coordinate with (or provide services to) the hypervisor. Referring to FIG. 2, in at least some embodiments, at least some of the functionality of the PSE framework 202 and host manager 222 is performed on one or more processors 1775 of the offload card 1770, while the instances (e.g. , 232, 234, 236) are executed on one or more processors 1710.

いくつかの実施形態では、コンピュータシステム1700は、1つ以上のストレージデバイス(SD)1780を含む。例示的なストレージデバイス1780は、ソリッドステートドライブ(例えば、様々なタイプのフラッシュまたは他のメモリを伴う)及び磁気ドライブを含む。プロセッサ(複数可)1710は、インターフェース(複数可)1730を介して、または場合によって、オフロードカード(複数可)1770を介して、SD1780にアクセスし得る。例えば、オフロードカード(複数可)1770は、複数の相互接続インターフェースを含むシステムオンチップ(SoC)を含み得、インターフェース1730とSD1780に対するインターフェースとをブリッジする(例えば、PCIe-to-PCIeブリッジを行う)。 In some embodiments, computer system 1700 includes one or more storage devices (SD) 1780. Exemplary storage devices 1780 include solid state drives (eg, with various types of flash or other memory) and magnetic drives. Processor(s) 1710 may access SD 1780 via interface(s) 1730 or, optionally, via offload card(s) 1770. For example, offload card(s) 1770 may include a system-on-chip (SoC) that includes multiple interconnect interfaces and bridges interface 1730 and an interface to SD 1780 (e.g., performs a PCIe-to-PCIe bridge). ).

いくつかの実施形態では、システムメモリ1720は、上記に説明したようなプログラム命令及びデータを記憶するように構成されるコンピュータアクセス可能媒体の一実施形態であり得る。しかしながら、他の実施形態では、プログラム命令及び/またはデータは、異なるタイプのコンピュータアクセス可能媒体で受信、送信、または記憶され得る。一般的に言えば、コンピュータアクセス可能媒体は、I/Oインターフェース1730を介してコンピューティングデバイス1700に結合される磁気媒体または光媒体等(例えば、ディスクまたはDVD/CD)の非一時的ストレージ媒体またはメモリ媒体を含み得る。非一時的コンピュータアクセス可能ストレージ媒体は、また、システムメモリ1720または別のタイプのメモリとして、コンピューティングデバイス1700のいくつかの実施形態に含まれ得るRAM(例えば、SDRAM、ダブルデータレート(DDR)、SDRAM、SRAM等)、読み取り専用メモリ(ROM)等のいずれかの揮発性媒体または不揮発性媒体を含み得る。さらに、コンピュータアクセス可能媒体は、伝送媒体、またはネットワークインターフェース1740を介して実装され得るようなネットワーク及び/もしくは無線リンク等の通信媒体を介して伝達される電気信号、電磁信号、もしくはデジタル信号等の信号を含み得る。 In some embodiments, system memory 1720 may be one embodiment of a computer-accessible medium configured to store program instructions and data as described above. However, in other embodiments, program instructions and/or data may be received, transmitted, or stored on different types of computer-accessible media. Generally speaking, computer-accessible media refers to non-transitory storage media such as magnetic or optical media (e.g., disks or DVDs/CDs) that are coupled to computing device 1700 via I/O interface 1730 or may include a memory medium. Non-transitory computer-accessible storage media may also be included in some embodiments of computing device 1700 as system memory 1720 or another type of memory, such as RAM (e.g., SDRAM, double data rate (DDR), SDRAM, SRAM, etc.), read-only memory (ROM), and any other volatile or non-volatile media. Additionally, computer-accessible media can include transmission media or electrical, electromagnetic, or digital signals conveyed through a communication medium, such as a network and/or wireless link, such as may be implemented through network interface 1740. may include signals.

本明細書で説明または示唆されるような様々な実施形態は様々な動作環境で実装でき、動作環境は、場合によって、任意の数のアプリケーションを動作するために使用できる1つ以上のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含み得る。ユーザデバイスまたはクライアントデバイスは、標準オペレーティングシステムを起動するデスクトップコンピュータもしくはラップトップコンピュータ、ならびに、携帯電話向けソフトウェアを起動し、いくつかのネットワーキングプロトコル及びメッセージプロトコルをサポートすることが可能である、携帯デバイス、無線デバイス、及びハンドヘルドデバイス等のいくつかの汎用パーソナルコンピュータのいずれかを含み得る。係るシステムは、また、様々な市販のオペレーティングシステムのいずれかならびに開発及びデータベース管理等の目的のための他の既知のアプリケーションを起動するいくつかのワークステーションを含み得る。これらのデバイスは、また、ダミー端末、シンクライアント、ゲーム機、及びネットワークを介して通信することが可能である他のデバイス等の他の電子デバイスを含み得る。 Various embodiments as described or suggested herein may be implemented in a variety of operating environments, including, in some cases, one or more user computers that can be used to run any number of applications; May include a computing device or a processing device. User devices or client devices include desktop or laptop computers running a standard operating system, as well as mobile devices running mobile phone software and capable of supporting several networking and messaging protocols. It may include any of a number of general purpose personal computers, such as wireless devices and handheld devices. Such systems may also include several workstations running any of a variety of commercially available operating systems as well as other known applications for purposes such as development and database management. These devices may also include other electronic devices such as dummy terminals, thin clients, gaming consoles, and other devices capable of communicating over a network.

ほとんどの実施形態は、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ファイル転送プロトコル(FTP)、ユニバーサルプラグアンドプレイ(UPnP)、ネットワークファイルシステム(NFS)、共通インターネットファイルシステム(CIFS)、拡張メッセージング及びプレゼンスプロトコル(XMPP)、AppleTalk等の様々な市販のプロトコルのいずれかを使用して通信をサポートするための当業者に精通しているであろう少なくとも1つのネットワークを利用する。ネットワーク(複数可)は、例えば、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、仮想プライベートネットワーク(VPN)、インターネット、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク、及びそれらのいずれかの組み合わせを含み得る。 Most embodiments support Transmission Control Protocol/Internet Protocol (TCP/IP), File Transfer Protocol (FTP), Universal Plug and Play (UPnP), Network File System (NFS), Common Internet File System (CIFS), Extended Messaging and Presence Protocol (XMPP), AppleTalk, etc., to support communications using any of a variety of commercially available protocols, such as AppleTalk. The network(s) can be, for example, a local area network (LAN), wide area network (WAN), virtual private network (VPN), the Internet, an intranet, an extranet, a public switched telephone network (PSTN), an infrared network, a wireless network. , and any combination thereof.

ウェブサーバーを利用する実施形態では、ウェブサーバーは、HTTPサーバー、ファイル転送プロトコル(FTP)サーバー、共通ゲートウェイインターフェース(CGI)サーバー、データサーバー、Java(登録商標)サーバー、業務用アプリケーションサーバー等を含む様々なサーバーまたは中間層アプリケーションのいずれかを起動できる。サーバー(複数可)は、また、Java(登録商標)、C、C#、もしくはC++等のいずれかのプログラム言語、または、Perl、Python、もしくはTCL等のいずれかのスクリプト言語、及びそれらの組み合わせで書き込まれる、1つ以上のスクリプトまたはプログラムとして実装され得る、1つ以上のウェブアプリケーション等を実行することによって、ユーザデバイスからの要求に応答してプログラムまたはスクリプトを実行することが可能であり得る。サーバー(複数可)は、限定ではないが、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)等から市販されているものを含むデータベースサーバーも含み得る。データベースサーバーは、リレーショナルまたは非リレーショナル(例えば、「NoSQL」)、分散型または非分散型等であり得る。 In embodiments that utilize a web server, the web server may be a variety of servers, including an HTTP server, a file transfer protocol (FTP) server, a common gateway interface (CGI) server, a data server, a Java server, a business application server, etc. can start either a server or a middle-tier application. The server(s) may also be written in any programming language, such as Java, C, C#, or C++, or any scripting language, such as Perl, Python, or TCL, and combinations thereof. It may be possible to execute a program or script in response to a request from a user device by executing one or more web applications, etc., which may be implemented as one or more scripts or programs written in . The server(s) may also include database servers including, but not limited to, those commercially available from Oracle®, Microsoft®, Sybase®, IBM®, and the like. A database server may be relational or non-relational (eg, "NoSQL"), distributed or non-distributed, etc.

環境は、上記に説明したような様々なデータストアならびに他のメモリ及びストレージ媒体を含み得る。これらは、1つ以上のコンピュータにローカルにある(及び/もしくはそこに常駐する)、または、ネットワークにわたるコンピュータのいずれかもしくは全てからリモートにあるストレージ媒体等の様々な位置に常駐し得る。特定の実施形態のセットでは、情報は、当業者に精通しているストレージエリアネットワーク(「SAN」)内に常駐し得る。同様に、コンピュータ、サーバー、または他のネットワークデバイスに属する機能を行うためのいずれかの必要なファイルは、適宜、ローカルに及び/またはリモートに記憶され得る。システムがコンピュータ化されたデバイスを含む場合、係るデバイスのそれぞれは、バスを介して電気的に結合され得るハードウェア要素を含み得、ハードウェア要素は、例えば、少なくとも1つの中央処理ユニット(「CPU」)、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)、及び/または少なくとも1つの出力デバイス(例えば、ディスプレイデバイス、プリンタ、またはスピーカ)を含む。係るシステムは、また、ディスクドライブ、光学ストレージデバイス、及びランダムアクセスメモリ(RAM)または読み取り専用メモリ(ROM)等のソリッドステートストレージデバイス、ならびにリムーバブルストレージデバイス、メモリカード、フラッシュカード等の1つ以上のストレージデバイスを含み得る。 The environment may include various data stores and other memory and storage media as described above. These may reside in various locations, such as on a storage medium that is local to (and/or resides on) one or more computers or remote from any or all of the computers across a network. In a particular set of embodiments, the information may reside within a storage area network (“SAN”) that is familiar to those skilled in the art. Similarly, any necessary files for performing functions belonging to a computer, server, or other network device may be stored locally and/or remotely, as appropriate. Where the system includes computerized devices, each such device may include hardware elements that may be electrically coupled via a bus, the hardware elements including, for example, at least one central processing unit (“CPU ”), at least one input device (e.g., mouse, keyboard, controller, touch screen, or keypad), and/or at least one output device (e.g., display device, printer, or speakers). Such systems may also include one or more disk drives, optical storage devices, and solid state storage devices such as random access memory (RAM) or read only memory (ROM), as well as removable storage devices such as memory cards, flash cards, etc. May include storage devices.

また、係るデバイスは、上記に説明したようなコンピュータ可読ストレージ媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス等)、及びワーキングメモリを含み得る。コンピュータ可読ストレージ媒体リーダは、コンピュータ可読ストレージ媒体と接続でき、またはコンピュータ可読ストレージ媒体を受信するように構成され、リモートデバイス、ローカルデバイス、固定デバイス、及び/またはリムーバブルストレージデバイス、ならびにコンピュータ可読情報を一時的に及び/またはさらに永久的に含み、記憶し、伝送し、及び読み出すためのストレージ媒体を表す。また、システム及び様々なデバイスは、一般的に、いくつかのソフトウェアアプリケーション、モジュール、サービス、または少なくとも1つのワーキングメモリデバイス内に配置される他の要素を含み、クライアントアプリケーションまたはウェブブラウザ等のオペレーティングシステム及びアプリケーションプログラムを含む。代替の実施形態は、上記に説明したものからの多くの変形形態を有し得ることを理解されたい。例えば、カスタマイズされたハードウェアも使用され得、及び/または特定の要素は、ハードウェア、ソフトウェア(アプレット等のポータブルソフトウェアを含む)、もしくはこの両方において実装され得る。さらに、ネットワーク入出力デバイス等の他のコンピューティングデバイスへの接続が採用され得る。 Such devices may also include computer-readable storage media readers, communication devices (eg, modems, network cards (wireless or wired), infrared communication devices, etc.), and working memory as described above. A computer-readable storage medium reader is capable of connecting to or configured to receive a computer-readable storage medium and is capable of storing computer-readable information on a remote device, a local device, a fixed device, and/or a removable storage device, as well as temporarily storing computer-readable information. Refers to a storage medium for permanently and/or permanently containing, storing, transmitting, and retrieving information. The systems and various devices also generally include a number of software applications, modules, services, or other elements located within at least one working memory device and an operating system such as a client application or web browser. and application programs. It should be understood that alternative embodiments may have many variations from those described above. For example, customized hardware may also be used and/or certain elements may be implemented in hardware, software (including portable software such as applets), or both. Additionally, connections to other computing devices such as network input/output devices may be employed.

コードまたはコードの一部を含むためのストレージ媒体及びコンピュータ可読媒体は、限定ではないが、揮発性媒体及び不揮発性媒体、リムーバブル媒体及び非リムーバブル媒体等のストレージ媒体及び通信媒体を含む当技術分野で既知のまたは使用されるいずれかの適切な媒体を含み得、それらの媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報を記憶及び/または伝送するためのいずれかの方法または技術で実施され、RAM、ROM、電気的消去可能プログラム可能読み取り専用メモリ(「EEPROM」)、フラッシュメモリ、もしくは他のメモリ技術、コンパクトディスク読み取り専用メモリ(「CD-ROM」)、デジタル多用途ディスク(DVD)、もしくは他の光ストレージデバイス、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用でき、システムデバイスによってアクセスできるいずれかの他の媒体を含む。本明細書に提供される開示及び教示に基づいて、当業者は、様々な実施形態を実施するための他の手段及び/または方法を理解する。 Storage media and computer-readable media for containing code or portions of code are defined in the art, including, but not limited to, storage media and communication media such as volatile and non-volatile media, removable and non-removable media. It may include any suitable medium known or in use for storing and/or transmitting information such as computer readable instructions, data structures, program modules, or other data. A method or technology implemented in RAM, ROM, electrically erasable programmable read-only memory ("EEPROM"), flash memory, or other memory technology, compact disk read-only memory ("CD-ROM"), digital Use disc (DVD) or other optical storage device, magnetic cassette, magnetic tape, magnetic disk storage, or other magnetic storage device, or any other device that can be used to store desired information and that can be accessed by a system device. Including other media. Based on the disclosure and teachings provided herein, those skilled in the art will recognize other means and/or ways to implement the various embodiments.

前述の説明では、様々な実施形態が説明される。説明の目的で、実施形態の徹底的な理解を提供するために特定の構成及び詳細が記載される。しかしながら、当業者には、実施形態がその具体的な詳細を伴わずに実践され得るということもまた明らかになる。さらに、周知の特性は、説明される実施形態を不明瞭にしないために、省略または簡略化され得る。 In the foregoing description, various embodiments are described. For purposes of explanation, specific configurations and details are set forth to provide a thorough understanding of the embodiments. However, it will also be apparent to those skilled in the art that the embodiments may be practiced without these specific details. Furthermore, well-known features may be omitted or simplified in order not to obscure the described embodiments.

本明細書では、括弧で囲まれたテキスト及び破線の境界線を有するブロック(例えば、大きなダッシュ、小さなダッシュ、鎖線、及び点線)を使用して、いくつかの実施形態に追加特性を追加するオプションの動作を説明する。しかしながら、係る表記は、これらが唯一のオプションまたはオプション動作であること及び/または特定の実施形態では、実線の境界線を有するブロックはオプションではないことを意味すると解釈すべきではない。 Herein, we describe the option of adding additional characteristics to some embodiments using bracketed text and blocks with dashed borders (e.g., large dashes, small dashes, dashed lines, and dotted lines). Explain the operation. However, such notation should not be construed to mean that these are the only options or optional operations and/or that blocks with solid borders are not optional in certain embodiments.

最後尾の文字が付いた参照番号(例えば、101A、102A等)を使用して、様々な実施形態で参照エンティティの1つ以上のインスタンスが存在する可能性があることを示し得、複数のインスタンスが存在するとき、それぞれが同一である必要はないが、代わりに、いくつかの一般的な特徴を共有し得る、または、共通の方法で役割を果たし得る。さらに、使用される特定の最後尾は、特に反対の指示がない限り、特定の量のエンティティが存在することを含意することを意味しない。したがって、同じまたは異なる最後尾の文字を使用する2つのエンティティは、様々な実施形態で同じ数のインスタンスを有し得るまたは有し得ない。 Reference numbers with a last letter (e.g., 101A, 102A, etc.) may be used to indicate that there may be one or more instances of the referenced entity in various embodiments, and multiple instances may be used. When present, each need not be identical, but instead may share some common characteristics or play a role in a common way. Furthermore, the particular suffix used is not meant to imply the presence of a particular amount of the entity, unless specifically indicated to the contrary. Thus, two entities that use the same or different suffixes may or may not have the same number of instances in various embodiments.

「一実施形態」、「ある実施形態」、「例示的な実施形態」等への言及は、説明される実施形態が、特定の特性、構造、または特徴を含み得るが、全ての実施形態が必ずしも特定の特性、構造、または特徴を含み得ないことを示す。さらに、係る語句は必ずしも同一の実施形態を指すわけではない。さらに、特定の特性、構造、または特徴が実施形態に関連して説明されるとき、明確に説明されているか否かにかかわらず、他の実施形態に関連して係る特性、構造、または特徴に影響を与えることは、当業者の知識の範囲内であると考えられる。 References to "one embodiment," "an embodiment," "exemplary embodiment," etc. refer to all embodiments, although the described embodiment may include the particular feature, structure, or feature. Indicates that it does not necessarily include a particular property, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Additionally, when a particular feature, structure, or feature is described in connection with an embodiment, such feature, structure, or feature may be discussed in connection with other embodiments, whether or not explicitly described. It is considered to be within the knowledge of those skilled in the art.

さらに、上記に説明した様々な実施形態では、特に断りのない限り、語句「A、B、またはCの少なくとも1つ」等の選言的言語は、A、B、もしくはCのいずれか、またはそれらのいずれかの組み合わせ(例えば、A、B、及び/またはC)を意味すると理解されることを意図する。したがって、係る選言的言語は、所与の実施形態がAの少なくとも1つ、Bの少なくとも1つ、またはCの少なくとも1つがそれぞれ存在することを必要とすることを含意することを意図しない、また理解するべきではない。 Furthermore, in the various embodiments described above, unless otherwise specified, disjunctive language such as the phrase "at least one of A, B, or C" refers to either A, B, or C, or It is intended to be understood to mean any combination thereof (eg, A, B, and/or C). Thus, such disjunctive language is not intended to imply that a given embodiment requires the presence of at least one of A, at least one of B, or at least one of C, respectively. Nor should we understand.

開示される技術の実施形態の少なくとも一部は以下の例を考慮して説明できる。
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項に記載のシステム。
At least some of the embodiments of the disclosed technology can be explained in light of the following examples.
1. A computer-implemented method, comprising:
A block storage server virtual machine is executed by a first one or more processors of a first computer system of a provider network to perform first storage using one or more storage devices of said first computer system. hosting the volume; and
executing a customer virtual machine that has access to a virtual block storage device by the first one or more processors;
executing a block storage client by a second one or more processors of the first computer system;
The block storage client is
receiving from the customer virtual machine a first block storage operation to perform on the virtual block storage device;
sending a message to the block storage server virtual machine to cause the block storage server virtual machine to perform the first block storage operation on a first storage volume;
The computer-implemented method.
2. 2. The computer-implemented method of clause 1, wherein the message is sent over the virtual network securely by encrypting and decrypting traffic sent over the virtual network using a key.
3. 3. The computer-implemented method of clause 2, wherein a first virtual network address of the virtual network is associated with the block storage server virtual machine and a second virtual network address of the virtual network is associated with the block storage client.
4. A computer-implemented method, comprising:
executing a first block storage server virtual machine by a computer system to host a first volume using one or more storage devices of the computer system;
executing, by the computer system, a second virtual machine that has access to a virtual block storage device;
executing a block storage client by the computer system;
Running the block storage client includes:
receiving from the second virtual machine a first block storage operation to perform on the virtual block storage device;
sending a message to the first block storage server virtual machine to cause the first block storage server virtual machine to perform the block storage operation on the first volume;
The computer-implemented method.
5. 5. The computer-implemented method of clause 4, wherein the message is sent over the virtual network securely by encrypting and decrypting traffic sent over the virtual network using a key.
6. The computer-implemented method of clause 5, wherein a first virtual network address of the virtual network is associated with the first block storage server virtual machine and a second virtual network address of the virtual network is associated with the block storage client. Method.
7. The first block storage server virtual machine and the second virtual machine are executed by a first one or more processors of the computer system, and the block storage client is executed by a second one or more processors of the computer system. 7. A computer-implemented method according to any one of clauses 4 to 6, executed by a processor.
8. Clauses 4 to 4, wherein the first block storage server virtual machine is a first virtual machine hosted by the computer system, and the second virtual machine is a second virtual machine hosted by the computer system. 7. The computer-implemented method of any one of 7.
9. further comprising: executing a second block storage server virtual machine by the computer system to host a second volume using the one or more storage devices of the computer system; 5. The computer-implemented method of clause 4, wherein is a replica associated with the first volume.
10. The first block storage server virtual machine is executed using a first physical component of the computer system, and the second block storage server virtual machine is executed using a first physical component of the computer system that is different from the first physical component. 10. The computer-implemented method of clause 9, wherein the computer-implemented method is performed using two physical components.
11. The first block storage operation is writing a block of data, and the block storage client further encrypts the block of data using an encryption key associated with the virtual block storage device and writes a block of data. the message that generates an encrypted block and is sent to the first block storage server virtual machine includes the encrypted block of data; 11. The computer-implemented method of any one of clauses 4 to 10, wherein the first volume is written to.
12. the computer system is included in an extension of a provider network, the extension of the provider network communicating with the provider network via at least a third party network;
A computer according to any one of clauses 4 to 11, wherein the instance management service of the provider network initiates the execution of the first block storage server virtual machine and the second virtual machine by the computer system. Method of implementation.
13. one or more storage devices of the host computer system;
a first one or more processors of the host computer system executing a first block storage server application and a second application that have access to a virtual block storage device, the first block storage server application executing the first one or more processors, the first one or more processors comprising instructions for causing the first block storage server application to host a first volume using the one or more storage devices;
A first one or more processors of the host computer system running a block storage client application, the block storage client application including instructions that, when executed, cause the block storage client application to:
receiving from the second application a first block storage operation to perform on the virtual block storage device;
sending a message to the first block storage server application to cause the first block storage server application to perform the first block storage operation on the first volume; one or more processors of 1;
system, including.
14. 14. The system of clause 13, wherein the message is sent over the virtual network securely by encrypting and decrypting traffic sent over the virtual network using a key.
15. 15. The system of clause 14, wherein a first virtual network address of the virtual network is associated with the first block storage server application and a second virtual network address of the virtual network is associated with the block storage application.
16. The first block storage server application executes within a first virtual machine hosted by the host computer system, and the second application executes within a second virtual machine hosted by the host computer system. The system according to any one of Articles 13 to 15,
17. The first one or more processors of the host computer system further execute a second block storage server application, the second block storage server application, when executed, controlling the second block storage server application. Clause 13, wherein the application includes instructions for using the one or more storage devices of the host computer system to host a second volume, the second volume being a replica associated with the first volume. system described in.
18. The first block storage server application is executed using a first physical component of the computer system, and the second block storage server application is executed using a second physical component of the computer system that is different from the first physical component. 18. The system of clause 17, implemented using physical components.
19. The first block storage operation is writing a block of data, and the block storage client application further causes the block storage client application, at runtime, to write a block of data using an encryption key associated with the virtual block storage device. , the message sent to the first block storage server application includes instructions for encrypting the block of data to generate an encrypted block of data, and the message sent to the first block storage server application includes the encrypted block of data, 19. The system of any one of clauses 13-18, causing a block storage server application to write an encrypted block of the data to the first volume.
20. the host computer system is included in an extension of a provider network, the extension of the provider network communicating with the provider network via at least a third party network;
20. The system of any one of clauses 13-19, wherein the provider network instance management service initiates the execution of the first block storage server application and the second application by the host computer system.
21. A computer-implemented method, comprising:
At a host computer system of an extension of a provider network, receiving a first request to launch a first virtual machine to host a block storage server application, the extension of the provider network performing at least one of the following steps: said hosting in communication with said provider network via a third party network;
provisioning at least a portion of the storage capacity of one or more physical storage devices of the host computer system to the first virtual machine as a provisioned storage device;
executing the block storage server application on the first virtual machine;
Running the block storage server application includes:
creating the logical volume on the provisioned storage device in response to a second request from a block storage service of the provider network to create the logical volume;
receiving a third request from a block storage client application via a virtual network to perform an I/O operation on the logical volume;
performing the requested input/output operation on the logical volume;
The computer-implemented method.
22. Before running the block storage server application on the first virtual machine, the method further includes:
executing another application on the first virtual machine to load a boot volume from a machine image obtained from a data store of the provider network to a boot volume, the boot volume being a part of the provisioned storage; loading said device to be another logical volume of the device;
modifying the first virtual machine to boot from the boot volume;
restarting the first virtual machine;
The computer-implemented method of clause 21, comprising:
23. Before running the block storage server application on the first virtual machine, the method further includes loading a boot volume of the first virtual machine from a machine image stored by a first block storage device. 22. The computer-implemented method of clause 21, wherein the boot volume is another logical volume of the provisioned storage device and the first block storage device is a virtual block storage device.
24. A computer-implemented method, comprising:
receiving, by a computer system of an extension of a provider network, a first request to launch a first virtual machine to host a block storage server application; said hosting in communication with said provider network via a party network;
provisioning at least a portion of the storage capacity of one or more storage devices of the host computer system to the first virtual machine as a provisioned storage device;
executing the block storage server application on the first virtual machine;
Running the block storage server application includes:
creating the logical volume on the provisioned storage device in response to a second request from a block storage service of the provider network to create the logical volume;
receiving a third request to perform an input/output operation on the logical volume;
performing the requested input/output operation on the logical volume;
The computer-implemented method.
25. Before running the block storage server application on the first virtual machine, the method further includes:
executing another application on the first virtual machine to load a boot volume from a machine image obtained from a data store of the provider network, the boot volume being separate from the provisioned storage device; loading the logical volume of
modifying the first virtual machine to boot from the boot volume;
restarting the first virtual machine;
25. The computer-implemented method of clause 24, comprising:
26. 26. The computer-implemented method of clause 25, further comprising clearing memory of the first virtual machine before running the block storage server application.
27. Before running the block storage server application on the first virtual machine, the method further includes loading a boot volume of the first virtual machine from a machine image stored by a first block storage device. 25. The computer-implemented method of clause 24, wherein the boot volume is another logical volume of the provisioned storage device and the first block storage device is a virtual block storage device.
28. 28. The computer-implemented method of clause 27, wherein the loading is performed by at least one of a basic input/output system of the first virtual machine and an integrated extensible firmware interface of the first virtual machine.
29. the third request is received from a block storage client application over a virtual network;
29. The computer-implemented method of any one of clauses 24-28, wherein traffic sent through the virtual network is encrypted using a key associated with the virtual network.
30. the first virtual machine is one of a plurality of virtual machines, each of the plurality of virtual machines running a block storage server application, the method further comprising:
determining that resource utilization associated with one or more of the plurality of virtual machines exceeds a threshold;
provisioning at least a portion of the storage capacity of one or more storage devices of another host computer system to a second virtual machine;
running another block storage server application on the second virtual machine;
The computer-implemented method of any one of clauses 24-29, comprising:
31. provisioning at least another portion of the storage capacity of the one or more physical storage devices of the host computer system as another provisioned storage device to a second virtual machine;
executing another block storage server application on the second virtual machine, the first virtual machine being executed using a first physical component of the computer system; is performed using a second physical component of the computer system that is different from the first physical component;
31. The computer-implemented method of any one of clauses 24-30, further comprising:
32. The input/output operation is a write operation for writing a block of data to a block address of the logical volume, and performing the requested input/output on the logical volume means writing the block of data to a block address of the logical volume. writing to the block address of the provider network, the first physical component is a first memory device, the second physical component is a second memory device, and the extension of the provider network writes to the block address of the provider network. 32. The computer-implemented method of clause 31, comprising one or more physical computing devices located outside a data center of a provider network and on the premises of a customer of the provider network.
33. one or more storage devices of a host computer system of an extension of a provider network, wherein the extension of the provider network communicates with the provider network via at least a third party network; ,
one or more processors of the host computer system for executing the host manager application, the host manager application including instructions that, when executed, cause the host manager application to:
receiving a first request to launch a first virtual machine to host a block storage server application;
provisioning at least a portion of the storage capacity of the one or more storage devices to the first virtual machine as a provisioned storage device;
executing the block storage server application on the first virtual machine, the block storage server application including instructions that, when executed, cause the block storage server application to:
creating the logical volume on the provisioned storage device in response to a second request from a block storage service of the provider network to create the logical volume;
receiving a third request to perform an input/output operation on the logical volume;
performing the requested input/output operation on the logical volume;
system, including.
34. The host manager application includes further instructions, the further instructions causing the host manager application, during execution, to:
executing another application on the first virtual machine to load a boot volume from a machine image obtained from a data store of the provider network, the boot volume being separate from the provisioned storage device; loading the logical volume of
modifying the first virtual machine to boot from the boot volume;
restarting the first virtual machine;
The system described in Article 33, which causes the system to perform.
35. 35. The host manager application, upon execution, includes further instructions causing the host manager application to clear memory of the first virtual machine before executing the block storage server application. system.
36. A component of the first virtual machine, at runtime, causes the component to have a boot volume of the first virtual machine stored in the first virtual machine before running the block storage server application on the first virtual machine. instructions for loading from a machine image stored by a block storage device, the boot volume being another logical volume of the provisioned storage device, and the first block storage device being a virtual block storage device; The system described in 33.
37. 37. The system of clause 36, wherein the component is at least one of a basic input/output system of the first virtual machine and an integrated extensible firmware interface of the first virtual machine.
38. the third request is received from a block storage client application over a virtual network;
38. The system of any one of clauses 33-37, wherein traffic sent through the virtual network is encrypted using a key associated with the virtual network.
39. The host manager application includes further instructions, which upon execution cause the host manager application to:
provisioning at least another portion of the storage capacity of the one or more physical storage devices of the host computer system as another provisioned storage device to a second virtual machine;
executing another block storage server application on the second virtual machine, the first virtual machine executing using a first physical component of the computer system; the performing is performed using a second physical component of the computer system that is different from the first physical component;
The system according to any one of Articles 33 to 38, which causes the system to perform.
40. The input/output operation is a write operation for writing a block of data to a block address of the logical volume, and performing the requested input/output on the logical volume means writing the block of data to a block address of the logical volume. writing to the block address of the provider network, the first physical component is a first memory device, the second physical component is a second memory device, and the extension of the provider network writes to the block address of the provider network. 40. The system of clause 39, comprising one or more physical computing devices located outside a data center of a provider network and on the premises of a customer of said provider network.
41. A computer-implemented method, comprising:
receiving, by a first block storage server instance, a first request from a block storage service of a provider network, the first request to create a first storage volume and to create a first logical volume; said receiving, storing a first part of said first part;
receiving, by a second block storage server instance, a second request from the block storage service, the second request to create a second storage volume and to create a second storage volume of the first logical volume; said receiving and storing the second part;
determining that the second block storage server instance is unresponsive;
sending a third request to a third block storage server instance to create a third storage volume and store the second portion of the first logical volume;
storing the second portion of the first logical volume in the third storage volume by the third block storage server instance;
updating a data store containing the identity of each block storage server instance that hosts a portion of the first logical volume to remove the identity of the second block storage server instance; adding identification information for the server instance;
the first block storage server instance, the second block storage server instance, and the third block storage server instance are hosted by one or more computer systems of an extension of the provider network; The computer-implemented method, wherein the extension communicates with the provider network via at least a third party network.
42. receiving, by a block storage client, the identification information of each block storage server instance hosting a portion of the first logical volume from the data store;
establishing a connection by the block storage client to at least one block storage server instance included in the identification information;
receiving, by the block storage client, a first block storage operation from another instance, the first block storage operation writing a block of data to a block address of a virtual block storage device; and,
sending a message by the block storage client to the at least one block storage server instance via the connection to send the at least one block storage server instance the block of data to the block of the first storage volume; to write to the address, and
42. The computer-implemented method of clause 41, further comprising:
43. 43. The computer-implemented method of any one of clauses 41-42, further comprising polling the first block storage server instance and the second block storage server instance for responses.
44. A computer-implemented method, comprising:
receiving, by a first block storage server instance, a first request to create a first storage volume and store a first portion of the first logical volume;
receiving a second request to create a second storage volume and store a second portion of the first logical volume by a second block storage server instance;
sending a third request to a third block storage server instance to create a third storage volume and store the second portion of the first logical volume;
storing the second portion of the first logical volume in the third storage volume by the third block storage server instance;
updating a data store containing the identity of each block storage server instance that hosts a portion of the first logical volume to remove the identity of the second block storage server instance; Adding identification information for the server instance;
The computer-implemented method.
45. receiving, by a block storage client, the identification information of each block storage server instance hosting a portion of the first logical volume from the data store;
establishing a connection by the block storage client to at least one block storage server instance included in the identification information;
receiving, by the block storage client, a first block storage operation from another instance, the first block storage operation writing a block of data to a block address of a virtual block storage device; and,
sending a message by the block storage client to the at least one block storage server instance via the connection to send the at least one block storage server instance the block of data to the block of the first storage volume; to write to the address, and
45. The computer-implemented method of clause 44, further comprising:
46. 46. The computer-implemented method of clause 45, wherein the data store is a distributed data store that includes multiple nodes that independently execute a consensus protocol to update the identification information.
47. 47. The computer-implemented method of clause 46, further comprising obtaining, by the block storage client, an identification of each node of the plurality of nodes from a service.
48. 47. The computer-implemented method of clause 46, wherein one node of the plurality of nodes executes within a container hosted by the first block storage server instance.
49. 49. The computer-implemented method of clause 48, further comprising broadcasting, by the block storage client, a request for identification information of any node of the plurality of nodes to a plurality of block storage server instances.
50. further comprising polling the first block storage server instance and the second block storage server instance for responses, the third request being responsive to a determination that the second block storage server instance is not responsive. 49. The computer-implemented method according to any one of clauses 44 to 49, wherein the computer-implemented method is transmitted as:
51. 51. The computer-implemented method of any one of clauses 44-50, wherein the first storage volume is striped across a plurality of block storage server instances, each of the plurality of block storage server instances being included in the identification information.
52. the first block storage server instance, the second block storage server instance, and the third block storage server instance are hosted by one or more computer systems of an extension of a provider network; and said second request is sent from a block storage service of said provider network, and said extension of said provider network communicates with said provider network via at least a third party network. The computer implementation method described in .
53. one or more computing devices of an extension of a provider network, the extension of the provider network communicating with the provider network via at least a third party network; The device includes instructions that, when executed on one or more processors, cause the one or more computing devices to:
receiving, by a first block storage server instance, a first request to create a first storage volume and store a first portion of the first logical volume;
receiving a second request to create a second storage volume and store a second portion of the first logical volume by a second block storage server instance;
sending a third request to a third block storage server instance to create a third storage volume and store the second portion of the first logical volume;
storing the second portion of the first logical volume in the third storage volume by the third block storage server instance;
updating a data store containing the identity of each block storage server instance that hosts a portion of the first logical volume to remove the identity of the second block storage server instance; Adding identification information for the server instance;
system, including.
54. The one or more computing devices include further instructions, and the further instructions, when executed on the one or more processors, cause the one or more computing devices to:
receiving, by a block storage client, the identification information of each block storage server instance hosting a portion of the first logical volume from the data store;
establishing a connection by the block storage client to at least one block storage server instance included in the identification information;
receiving, by the block storage client, a first block storage operation from another instance, the first block storage operation writing a block of data to a block address of a virtual block storage device; and,
sending a message by the block storage client to the at least one block storage server instance via the connection to send the at least one block storage server instance the block of data to the block of the first storage volume; to write to the address, and
The system according to clause 53, which causes
55. 55. The system of clause 54, wherein the data store is a distributed data store that includes multiple nodes that independently execute a consensus protocol to update the identification information.
56. The one or more computing devices, when executed on the one or more processors, cause the one or more computing devices to obtain identification information for each node of the plurality of nodes from a service by the block storage client. 56. The system according to clause 55, comprising further instructions to cause the system to:
57. 56. The system of clause 55, wherein one node of the plurality of nodes runs within a container hosted by the first block storage server instance.
58. The one or more computing devices, when executed on the one or more processors, request the one or more computing devices, by the block storage client, for identification information of any node of the plurality of nodes. 58. The system of clause 57, comprising further instructions for causing the block storage server instances to broadcast the block storage server instance to the plurality of block storage server instances.
59. The one or more computing devices transmit responses of the first block storage server instance and the second block storage server instance to the one or more computing devices when executed on the one or more processors. 59. The system of any one of clauses 53-58, including further instructions to poll, wherein the third request is sent in response to a determination that the second block storage server instance is not responsive.
60. 60. The system of any one of clauses 53-59, wherein the first storage volume is striped across a plurality of block storage server instances, each of the plurality of block storage server instances being included in the identification information.

したがって、本明細書及び図面は、限定的な意味ではなく例示的な意味で考えるべきである。しかしながら、特許請求の範囲に記載される本開示のより広範の主旨及び範囲から逸脱することなく、様々な修正及び変更が本明細書になされ得ることは明らかである。 Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense. It will be evident, however, that various modifications and changes may be made herein without departing from the broader spirit and scope of the disclosure as set forth in the claims.

Claims (14)

コンピュータ実施方法であって、
コンピュータシステムによって、第1のブロックストレージサーバー仮想マシンを実行して、前記コンピュータシステムの1つ以上のストレージデバイスを使用して第1のボリュームをホストすることと、
前記コンピュータシステムによって、仮想ブロックストレージデバイスにアクセスできる第2の仮想マシンを実行することと、
前記コンピュータシステムによって、ブロックストレージクライアントを実行することと、を備え、
前記ブロックストレージクライアントを実行することは、
前記第2の仮想マシンから、前記仮想ブロックストレージデバイスで行う第1のブロックストレージ操作を受信することと、
メッセージを前記第1のブロックストレージサーバー仮想マシンに送信して、前記第1のブロックストレージサーバー仮想マシンに、前記第1のボリュームで前記第1のブロックストレージ操作を行わせることと、を含み、
前記コンピュータシステムはプロバイダネットワークの拡張部に含まれ、前記プロバイダネットワークの前記拡張部は少なくともサードパーティネットワークを介して前記プロバイダネットワークと通信し、
前記プロバイダネットワークのインスタンス管理サービスは、前記コンピュータシステムによって、前記第1のブロックストレージサーバー仮想マシン及び前記第2の仮想マシンの前記実行を開始する、
コンピュータ実施方法。
A computer-implemented method, comprising:
executing a first block storage server virtual machine by a computer system to host a first volume using one or more storage devices of the computer system;
executing, by the computer system, a second virtual machine that has access to a virtual block storage device;
executing a block storage client by the computer system;
Running the block storage client includes:
receiving from the second virtual machine a first block storage operation to perform on the virtual block storage device;
sending a message to the first block storage server virtual machine to cause the first block storage server virtual machine to perform the first block storage operation on the first volume;
the computer system is included in an extension of a provider network, the extension of the provider network communicating with the provider network via at least a third party network;
the provider network instance management service initiates the execution of the first block storage server virtual machine and the second virtual machine by the computer system;
Computer-implemented method.
前記メッセージは、仮想ネットワークを介して送信されるトラフィックをキーを使用して暗号化及び復号化して安全な前記仮想ネットワークを介して送信される、請求項1に記載のコンピュータ実施方法。 2. The computer-implemented method of claim 1, wherein the message is sent over the virtual network securely by encrypting and decrypting traffic sent over the virtual network using a key. 前記仮想ネットワークの第1の仮想ネットワークアドレスは前記第1のブロックストレージサーバー仮想マシンに関連付けられ、前記仮想ネットワークの第2の仮想ネットワークアドレスは前記ブロックストレージクライアントに関連付けられる、請求項2に記載のコンピュータ実施方法。 3. The computer of claim 2, wherein a first virtual network address of the virtual network is associated with the first block storage server virtual machine and a second virtual network address of the virtual network is associated with the block storage client. Method of implementation. 前記第1のブロックストレージサーバー仮想マシン及び前記第2の仮想マシンは前記コンピュータシステムの第1の1つ以上のプロセッサによって実行され、前記ブロックストレージクライアントは、前記コンピュータシステムの第2の1つ以上のプロセッサによって実行される、請求項1~3のいずれか1項に記載のコンピュータ実施方法。 The first block storage server virtual machine and the second virtual machine are executed by a first one or more processors of the computer system, and the block storage client is executed by a second one or more processors of the computer system. A computer-implemented method according to any one of claims 1 to 3, executed by a processor. 前記第1のブロックストレージサーバー仮想マシンは前記コンピュータシステムによってホストされる第1の仮想マシンであり、前記第2の仮想マシンは前記コンピュータシステムによってホストされる第2の仮想マシンである、請求項1~4のいずれか1項に記載のコンピュータ実施方法。 2. The first block storage server virtual machine is a first virtual machine hosted by the computer system, and the second virtual machine is a second virtual machine hosted by the computer system. 4. The computer-implemented method according to any one of items 4 to 4. 前記コンピュータシステムによって、第2のブロックストレージサーバー仮想マシンを実行して、前記コンピュータシステムの前記1つ以上のストレージデバイスを使用して第2のボリュームをホストすることをさらに含み、前記第2のボリュームは前記第1のボリュームに関連付けられるレプリカである、請求項1に記載のコンピュータ実施方法。 further comprising: executing a second block storage server virtual machine by the computer system to host a second volume using the one or more storage devices of the computer system; The computer-implemented method of claim 1, wherein is a replica associated with the first volume. 前記第1のブロックストレージサーバー仮想マシンは前記コンピュータシステムの第1の物理コンポーネントを使用して実行され、前記第2のブロックストレージサーバー仮想マシンは、前記第1の物理コンポーネントと異なる前記コンピュータシステムの第2の物理コンポーネントを使用して実行される、請求項6に記載のコンピュータ実施方法。 The first block storage server virtual machine is executed using a first physical component of the computer system, and the second block storage server virtual machine is executed using a first physical component of the computer system that is different from the first physical component. 7. The computer-implemented method of claim 6, wherein the computer-implemented method is performed using two physical components. 前記第1のブロックストレージ操作はデータのブロックの書き込みであり、前記ブロックストレージクライアントは、さらに、前記仮想ブロックストレージデバイスに関連付けられる暗号化キーを使用して、前記データのブロックを暗号化し、データの暗号化ブロックを生成し、前記第1のブロックストレージサーバー仮想マシンに送信される前記メッセージは前記データの暗号化ブロックを含み、前記第1のブロックストレージサーバー仮想マシンに、前記データの暗号化ブロックを前記第1のボリュームに書き込ませる、請求項1~7のいずれか1項に記載のコンピュータ実施方法。 The first block storage operation is writing a block of data, and the block storage client further encrypts the block of data using an encryption key associated with the virtual block storage device and writes a block of data. the message that generates an encrypted block and is sent to the first block storage server virtual machine includes the encrypted block of data; A computer-implemented method according to any one of claims 1 to 7, wherein the first volume is written to. ホストコンピュータシステムの1つ以上のストレージデバイスと、
仮想ブロックストレージデバイスにアクセスできる第1のブロックストレージサーバーアプリケーション及び第2のアプリケーションを実行する前記ホストコンピュータシステムの第1の1つ以上のプロセッサであって、前記第1のブロックストレージサーバーアプリケーションは、実行時に、前記第1のブロックストレージサーバーアプリケーションに、前記1つ以上のストレージデバイスを使用して第1のボリュームをホストさせる命令を含む、前記第1の1つ以上のプロセッサと、
ブロックストレージクライアントアプリケーションを実行する前記ホストコンピュータシステムの第1の1つ以上のプロセッサと、を備え、
前記ブロックストレージクライアントアプリケーションは命令を含み、
前記命令は、実行時に、前記ブロックストレージクライアントアプリケーションに、
前記第2のアプリケーションから、前記仮想ブロックストレージデバイスで行う第1のブロックストレージ操作を受信することと、
メッセージを前記第1のブロックストレージサーバーアプリケーションに送信して、前記第1のブロックストレージサーバーアプリケーションに、前記第1のボリュームで前記第1のブロックストレージ操作を行わせることと、を実施させ、
前記ホストコンピュータシステムはプロバイダネットワークの拡張部に含まれ、前記プロバイダネットワークの前記拡張部は少なくともサードパーティネットワークを介して前記プロバイダネットワークと通信し、
前記プロバイダネットワークのインスタンス管理サービスは、前記ホストコンピュータシステムによって、前記第1のブロックストレージサーバーアプリケーション及び前記第2のアプリケーションの前記実行を開始する、システム。
one or more storage devices of the host computer system;
a first one or more processors of the host computer system executing a first block storage server application and a second application that have access to a virtual block storage device, the first block storage server application executing the first one or more processors, the first one or more processors comprising instructions for causing the first block storage server application to host a first volume using the one or more storage devices;
a first one or more processors of the host computer system running a block storage client application;
The block storage client application includes instructions;
The instructions, when executed, cause the block storage client application to:
receiving from the second application a first block storage operation to perform on the virtual block storage device;
sending a message to the first block storage server application to cause the first block storage server application to perform the first block storage operation on the first volume;
the host computer system is included in an extension of a provider network, the extension of the provider network communicating with the provider network via at least a third party network;
The system wherein the instance management service of the provider network initiates the execution of the first block storage server application and the second application by the host computer system.
前記メッセージは、仮想ネットワークを介して送信されるトラフィックをキーを使用して暗号化及び復号化して安全な前記仮想ネットワークを介して送信される、請求項9に記載のシステム。 10. The system of claim 9, wherein the message is sent over the virtual network securely using a key to encrypt and decrypt traffic sent over the virtual network. 前記仮想ネットワークの第1の仮想ネットワークアドレスは前記第1のブロックストレージサーバーアプリケーションに関連付けられ、前記仮想ネットワークの第2の仮想ネットワークアドレスは前記ブロックストレージクライアントアプリケーションに関連付けられる、請求項10に記載のシステム。 The system of claim 10, wherein a first virtual network address of the virtual network is associated with the first block storage server application and a second virtual network address of the virtual network is associated with the block storage client application. . 前記第1のブロックストレージサーバーアプリケーションは前記ホストコンピュータシステムによってホストされる第1の仮想マシン内で実行され、前記第2のアプリケーションは前記ホストコンピュータシステムによってホストされる第2の仮想マシン内で実行される、請求項9~11のいずれか1項に記載のシステム。 The first block storage server application executes within a first virtual machine hosted by the host computer system, and the second application executes within a second virtual machine hosted by the host computer system. The system according to any one of claims 9 to 11. 前記ホストコンピュータシステムの前記第1の1つ以上のプロセッサは、さらに、第2のブロックストレージサーバーアプリケーションを実行して、前記第2のブロックストレージサーバーアプリケーションは、実行時に、前記第2のブロックストレージサーバーアプリケーションに、前記ホストコンピュータシステムの前記1つ以上のストレージデバイスを使用して第2のボリュームをホストさせる命令を含み、前記第2のボリュームは前記第1のボリュームに関連付けられるレプリカである、請求項9に記載のシステム。 The first one or more processors of the host computer system further execute a second block storage server application, the second block storage server application, when executed, controlling the second block storage server application. 10. An application comprising instructions for causing a second volume to be hosted using the one or more storage devices of the host computer system, the second volume being a replica associated with the first volume. 9. The system described in 9. 前記第1のブロックストレージサーバーアプリケーションは前記ホストコンピュータシステムの第1の物理コンポーネントを使用して実行され、前記第2のブロックストレージサーバーアプリケーションは、前記第1の物理コンポーネントと異なる前記ホストコンピュータシステムの第2の物理コンポーネントを使用して実行される、請求項13に記載のシステム。 The first block storage server application is executed using a first physical component of the host computer system, and the second block storage server application is executed using a first physical component of the host computer system that is different from the first physical component. 14. The system of claim 13, implemented using two physical components.
JP2021576312A 2019-06-28 2020-06-11 Virtualized block storage server in cloud provider board expansion Active JP7440195B2 (en)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US16/457,856 2019-06-28
US16/457,850 2019-06-28
US16/457,850 US10949124B2 (en) 2019-06-28 2019-06-28 Virtualized block storage servers in cloud provider substrate extension
US16/457,853 2019-06-28
US16/457,853 US10949131B2 (en) 2019-06-28 2019-06-28 Control plane for block storage service distributed across a cloud provider substrate and a substrate extension
US16/457,856 US10949125B2 (en) 2019-06-28 2019-06-28 Virtualized block storage servers in cloud provider substrate extension
PCT/US2020/037195 WO2020263578A1 (en) 2019-06-28 2020-06-11 Virtualized block storage servers in cloud provider substrate extension

Publications (2)

Publication Number Publication Date
JP2022538826A JP2022538826A (en) 2022-09-06
JP7440195B2 true JP7440195B2 (en) 2024-02-28

Family

ID=71950729

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021576312A Active JP7440195B2 (en) 2019-06-28 2020-06-11 Virtualized block storage server in cloud provider board expansion

Country Status (5)

Country Link
EP (1) EP3987387A1 (en)
JP (1) JP7440195B2 (en)
KR (1) KR20220011186A (en)
CN (2) CN114008593B (en)
WO (1) WO2020263578A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130007219A1 (en) 2011-06-30 2013-01-03 Sorenson Iii James Christopher Shadowing Storage Gateway
US20140365549A1 (en) 2013-06-10 2014-12-11 Amazon Technologies, Inc. Distributed lock management in a cloud computing environment
US20140366155A1 (en) 2013-06-11 2014-12-11 Cisco Technology, Inc. Method and system of providing storage services in multiple public clouds
JP2016513305A (en) 2013-01-22 2016-05-12 アマゾン・テクノロジーズ・インコーポレーテッド Instance host configuration
WO2019094829A1 (en) 2017-11-10 2019-05-16 Amazon Technologies, Inc. Capacity management in provider networks using dynamic host device instance model reconfigurations

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9235589B2 (en) * 2011-12-13 2016-01-12 International Business Machines Corporation Optimizing storage allocation in a virtual desktop environment
CN103503376B (en) * 2011-12-29 2018-05-01 华为技术有限公司 The method of storage resource in cloud computing system and management cloud computing system
CN103797770B (en) * 2012-12-31 2015-12-02 华为技术有限公司 A kind of method and system of shared storage resources
US10268492B2 (en) * 2014-05-20 2019-04-23 Amazon Technologies, Inc. Low latency connections to workspaces in a cloud computing environment
CN105549904B (en) * 2015-12-08 2019-01-08 华为技术有限公司 A kind of data migration method and storage equipment applied in storage system
CN105892943B (en) * 2016-03-30 2019-03-01 上海爱数信息技术股份有限公司 The access method and system of block storing data in a kind of distributed memory system
US20180150234A1 (en) * 2016-11-28 2018-05-31 Hewlett Packard Enterprise Development Lp Cloud volume storage
CN106656631B (en) * 2017-01-19 2019-10-25 武汉噢易云计算股份有限公司 The method that logical volume dynamically distributes is realized in shared storage

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130007219A1 (en) 2011-06-30 2013-01-03 Sorenson Iii James Christopher Shadowing Storage Gateway
JP2014529111A (en) 2011-06-30 2014-10-30 アマゾン・テクノロジーズ・インコーポレーテッド Shadowing storage gateway
JP2016513305A (en) 2013-01-22 2016-05-12 アマゾン・テクノロジーズ・インコーポレーテッド Instance host configuration
US20140365549A1 (en) 2013-06-10 2014-12-11 Amazon Technologies, Inc. Distributed lock management in a cloud computing environment
JP2016524760A (en) 2013-06-10 2016-08-18 アマゾン・テクノロジーズ・インコーポレーテッド Distributed lock management in cloud computing environment
US20140366155A1 (en) 2013-06-11 2014-12-11 Cisco Technology, Inc. Method and system of providing storage services in multiple public clouds
WO2019094829A1 (en) 2017-11-10 2019-05-16 Amazon Technologies, Inc. Capacity management in provider networks using dynamic host device instance model reconfigurations
JP2021502643A (en) 2017-11-10 2021-01-28 アマゾン テクノロジーズ インコーポレイテッド Capacity management in the provider network using dynamic host device instance model reconfiguration

Also Published As

Publication number Publication date
CN114008593B (en) 2023-03-24
CN114008593A (en) 2022-02-01
KR20220011186A (en) 2022-01-27
WO2020263578A1 (en) 2020-12-30
JP2022538826A (en) 2022-09-06
EP3987387A1 (en) 2022-04-27
CN116010035A (en) 2023-04-25

Similar Documents

Publication Publication Date Title
US10949125B2 (en) Virtualized block storage servers in cloud provider substrate extension
US11620081B1 (en) Virtualized block storage servers in cloud provider substrate extension
US11539552B1 (en) Data caching in provider network substrate extensions
US10949131B2 (en) Control plane for block storage service distributed across a cloud provider substrate and a substrate extension
AU2019306541B2 (en) Address migration service
US10698721B2 (en) Virtual machine migration
US11659058B2 (en) Provider network connectivity management for provider network substrate extensions
US11368407B2 (en) Failover management using availability groups
US11431497B1 (en) Storage expansion devices for provider network substrate extensions
US10462009B1 (en) Replicating customers' information technology (IT) infrastructures at service provider networks
US11159344B1 (en) Connectivity of cloud edge locations to communications service provider networks
US11283708B1 (en) Dedicating network paths between computing resources in a cloud provider network
CN114026826B (en) Provider network connection management for provider network underlying extensions
US11374789B2 (en) Provider network connectivity to provider network substrate extensions
US11411771B1 (en) Networking in provider network substrate extensions
JP7440195B2 (en) Virtualized block storage server in cloud provider board expansion
CN113330435A (en) Tracking contaminated connection proxies
US11778025B1 (en) Cross-region directory service
US11050618B1 (en) Replication of domain controller settings
US20240036988A1 (en) Disaster recovery pipeline for block storage and dependent applications
JP7212158B2 (en) Provider network service extension

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220112

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230502

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231017

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240116

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240213

R150 Certificate of patent or registration of utility model

Ref document number: 7440195

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150