JP2022538826A - Virtualization block storage server in cloud provider board expansion - Google Patents

Virtualization block storage server in cloud provider board expansion Download PDF

Info

Publication number
JP2022538826A
JP2022538826A JP2021576312A JP2021576312A JP2022538826A JP 2022538826 A JP2022538826 A JP 2022538826A JP 2021576312 A JP2021576312 A JP 2021576312A JP 2021576312 A JP2021576312 A JP 2021576312A JP 2022538826 A JP2022538826 A JP 2022538826A
Authority
JP
Japan
Prior art keywords
block storage
storage server
volume
instance
block
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.)
Granted
Application number
JP2021576312A
Other languages
Japanese (ja)
Other versions
JP7440195B2 (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,853 external-priority patent/US10949131B2/en
Priority claimed from US16/457,856 external-priority patent/US10949125B2/en
Priority claimed from US16/457,850 external-priority patent/US10949124B2/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2022538826A publication Critical patent/JP2022538826A/en
Priority to JP2024019232A priority Critical patent/JP2024073416A/en
Application granted granted Critical
Publication of JP7440195B2 publication Critical patent/JP7440195B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Stored Programmes (AREA)

Abstract

コンピュータシステムの1つ以上のストレージデバイスを使用して第1のボリュームをホストする第1のブロックストレージサーバー仮想マシンはコンピュータシステムによって実行される。仮想ブロックストレージデバイスにアクセスできる第2の仮想マシンはコンピュータシステムによって実行される。ブロックストレージクライアントは、コンピュータシステムによって実行される。第1のブロックストレージ操作はブロックストレージクライアントによって第2の仮想マシンから受信され、第1のブロックストレージ操作は仮想ブロックストレージデバイスで行われる。メッセージはブロックストレージクライアントによって第1のブロックストレージサーバー仮想マシンに送信され、第1のブロックストレージサーバー仮想マシンに、第1のボリュームでブロックストレージ操作を行わせる。【選択図】図4A first block storage server virtual machine that hosts a first volume using one or more storage devices of the computer system is executed by the computer system. A second virtual machine that has access to the virtual block storage device is executed by the computer system. A block storage client is executed by a computer system. A first block storage operation is received by the block storage client from the second virtual machine, and the first block storage operation is performed on the virtual block storage device. The message is sent by the block storage client to the first block storage server virtual machine to cause the first block storage server virtual machine to perform block storage operations on the first volume. [Selection drawing] Fig. 4

Description

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

汎用ハードウェアの仮想化技術の出現は、多様なニーズがある多くのカスタマーのために大規模なコンピューティングリソースを管理することに関して利益をもたらし、様々なコンピューティングリソースを複数のカスタマーによって効率的及び安全に共有することを可能にする。例えば、仮想化技術は、単一の物理コンピューティングマシンによってホストされる1つ以上の仮想マシンを各ユーザに提供することによって、単一の物理コンピューティングマシンを複数のユーザ間で共有することを可能にし得る。係る仮想マシンのそれぞれは、ユーザに所与のハードウェアコンピューティングリソースの唯一のオペレータ及び管理者であると錯覚をもたらす独特の論理コンピューティングシステムとして機能するソフトウェアシミュレーションであり、それと同時に、様々な仮想マシン間でアプリケーション隔離及び安全も提供する。さらに、いくつかの仮想化技術は、複数の独特の物理コンピューティングシステムに及ぶ複数の仮想プロセッサを伴う単一の仮想マシン等の2つ以上の物理リソースに及ぶ仮想リソースを提供することが可能である。別の例として、仮想化技術は、複数のデータストレージデバイスにわたって分散され得る仮想化データストアを各ユーザに提供することによって、データストレージハードウェアを複数のユーザ間で共有することを可能にし得、係る仮想化データストアのそれぞれは、ユーザがデータストレージリソースの唯一のオペレータ及び管理者であるという錯覚をユーザにもたらす独特の論理データストアとして機能する。 The advent of general-purpose hardware virtualization technology has brought benefits in terms of managing large-scale computing resources for many customers with diverse needs, allowing various computing resources to be efficiently and effectively shared by multiple customers. Allows for secure sharing. For example, virtualization technology encourages sharing a single physical computing machine among multiple users by providing each user with one or more virtual machines hosted by the single physical computing machine. can make it 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 administrator of a given hardware computing resource, while also providing various virtual machines. 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 distinct physical computing systems. be. As another example, virtualization technology may allow 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 gives the user the illusion that he or she is the sole operator and manager of the data storage resources.

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

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

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

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

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

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

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

少なくともいくつかの実施形態では、PSEは、例えば、プロバイダネットワークオペレータによって、ハードウェア要素、ソフトウェア要素、及び/またはファームウェア要素の適切な組み合わせで事前に構成され、様々なタイプのコンピューティング関連リソースをサポートし、プロバイダネットワーク自体またはプロバイダネットワークの任意の他のカスタマーのセキュリティを損なうことなく、様々なローカルデータ処理要求を満たす方法でサポートし得る。少なくともいくつかの実施形態では、PSEは、概して、カスタマーがプロバイダネットワーク内のコンピューティング関連リソースにアクセスするために使用するのと同じまたは同様のインターフェースのセットによって管理される。例えば、カスタマーは、プロバイダネットワーク内のコンピューティング関連リソースをプロビジョニング、管理、及び動作させるために他の方法で使用する同じアプリケーションプログラミングインターフェース(API)またはコンソールベースのインターフェースを使用して、プロバイダネットワークを経由して、様々な展開サイトにおけるオンプレムPSEまたは複数のPSE内で、コンピューティング関連リソースをプロビジョニング、管理、及び動作できる。 In at least some embodiments, the PSE is pre-configured, e.g., by the provider network operator, with an appropriate combination of hardware, software, and/or firmware elements to support various types of computing-related resources. and support in a manner that meets various local data processing needs without compromising the security of the provider network itself or any other customer of the provider network. In at least some embodiments, PSEs are generally governed by the same or similar set of interfaces that customers use to access computing-related resources within provider networks. For example, a customer can access the Provider Network via the same application programming interface (API) or console-based interface that it otherwise uses to provision, manage, and operate computing-related resources within the Provider Network. As such, computing-related resources can be provisioned, managed, and operated 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 communication between the provider network and the PSE. Such components can establish one or more secure tunnels (eg, VPN) with the PSE. Such components can further split control plane traffic and data plane traffic and treat each type of traffic differently based on factors including the direction of the traffic (eg, direction to and from the PSE). In at least some embodiments, the control plane service dynamically provisions and configures these networking components for deployed PSEs. Such control plane services can monitor each PSE's network components and invoke self-healing or recovery mechanisms designed to prevent loss of communication with a PSE due to failures occurring within the provider network.

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

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

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

開示されたシステム及び技術は、また、PSEをプロバイダネットワークに接続することによって可能になり得る潜在的なセキュリティ問題からプロバイダネットワークを保護する。いくつかの実施形態では、PSEは、動作するために、PSEが設置されているカスタマーサイトからプロバイダネットワーク基板(例えば、マシンの物理ネットワーク)への安全なネットワーキングトンネルを要求する可能性がある。これらのトンネルは、仮想化されたコンピューティングインスタンス(例えば、VM)及び基板の両方でホストされる仮想インフラストラクチャコンポーネントを含み得る。トンネルコンポーネントの例は、VPC及びプロキシコンピューティングインスタンスならびに/またはコンピューティングインスタンスで起動しているコンテナを含む。PSE内の各サーバーは、少なくとも2つのトンネル(1つは制御プレーントラフィック用で、もう1つはデータプレーントラフィック用である)を使用し得る。以下でさらに詳細に説明するように、プロバイダネットワーク基板とPSEの間のネットワークパスに沿って位置付けられる中間リソースは、基板とPSEとの間を流れるトラフィックを安全に管理できる。 The disclosed systems and techniques also protect the provider network from potential security issues that can be enabled by connecting the PSE to the 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 containers running on VPC and proxy computing instances and/or computing instances. Each server in the PSE may use at least two tunnels, one for control plane traffic and one for data plane traffic. As described in more 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 programmatically provisioned and released upon customer command. These resources are dynamically provisioned and reconfigured to accommodate variable loads. Cloud computing therefore considers both applications delivered as services over publicly accessible networks (e.g., the Internet, cellular communication networks) and the hardware and software of the 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 the cloud provider clusters its data centers. Each region may include two or more Availability Zones interconnected via a private high-speed network of fiber communications connections, for example. An Availability Zone refers to an isolated failure domain that includes one or more data center facilities with separate power sources, separate networks, and separate cooling from those in another Availability Zone. Preferably, Availability Zones within a region are located far enough from each other that the same natural disaster does not take more than one Availability Zone offline at the same time. A customer can connect to the cloud provider network's availability zone via a publicly accessible network (eg, the Internet, a cellular communication network). A PSE 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 boxes, cables). A cloud provider network may also include an overlay network of virtualized computing resources running on the substrate. 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 a combination of overlay IP and network identifier to a substrate IP so that distributed substrate computing devices can look up a packet's destination.

説明するために、各物理ホストは基板ネットワークにIPアドレスを有し得る。ハードウェア仮想化技術により、例えば、ホストの仮想マシンとして、複数のオペレーティングシステムをホストコンピュータ上で同時に起動することが可能になり得る。ホストのハイパーバイザーまたは仮想マシンモニタは、ホストの様々な仮想マシン間でホストのハードウェアリソースを割り付け、仮想マシンの実行を監視する。各仮想マシンはオーバーレイネットワークの1つ以上のIPアドレスが提供され得、ホストの仮想マシンモニタは、ホストの仮想マシンのIPアドレスを認識し得る。仮想マシンモニタ(及び/またはネットワーク基板の他のデバイスもしくはプロセス)は、カプセル化プロトコル技術を使用して、クラウドプロバイダネットワーク内の異なるホストの仮想化リソース間で、ネットワークパケット(例えば、クライアントIPパケット)をネットワーク基板上にカプセル化及びルーティングし得る。カプセル化プロトコル技術をネットワーク基板で使用して、オーバーレイネットワークパスまたはオーバーレイルートを介してネットワーク基板のエンドポイント間でカプセル化されたパケットをルーティングできる。カプセル化プロトコル技術は、ネットワーク基板にオーバーレイされた仮想ネットワークトポロジを提供するものと見なされ得る。カプセル化プロトコル技術は、IPオーバーレイアドレス(パブリックIPアドレス)を基板IPアドレス(プライベートIPアドレス)にマッピングするマッピングディレクトリを維持するマッピングサービスを含み得、マッピングサービスは、エンドポイント間でパケットをルーティングするためのクラウドプロバイダネットワーク状の様々なプロセスによってアクセスできる。 For purposes of explanation, each physical host may have an IP address on the substrate network. Hardware virtualization technology may allow multiple operating systems to run simultaneously on a host computer, for example, as the host's 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 be aware of the IP addresses of the host's virtual machines. Virtual machine monitors (and/or other devices or processes on the network board) use 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 on the network board. Encapsulation protocol techniques can be used in the network board to route encapsulated packets between network board endpoints over overlay network paths or routes. Encapsulation protocol technology can be viewed as providing a virtual network topology overlaid on a network substrate. The encapsulation protocol technology 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) for routing packets between endpoints. can be accessed by various processes across the cloud provider network.

当業者が本開示に照らして理解するように、特定の実施形態は、以下の(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 (a)-(c) below. (a) where it uses a provider-managed infrastructure (e.g., PSE) at a site selected by the customer while still maintaining the scalability, security, availability, and other operational advantages enabled by the provider network; Allows customers of the provider network operator to deploy a variety of applications in an agnostic manner; (b) applications that need to be transported over long distances, such as through links between customer data centers and provider network data centers; (c) latency of applications where potentially large amounts of data can be consumed as input or produced as output by moving the application closer to the data source/destination; 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 exemplary provider network extended by provider board extensions located within the network external to the provider network, in accordance with at least some embodiments. Within provider network 100 , customers can create one or more isolated virtual networks 102 . Customers can launch compute instances 101 within the IVN to run their applications. These compute instances 101 are hosted by board addressable devices (SADs) that are part of the provider network board (not shown). Similarly, a SAD that is part of the provider network board can host control plane services 104 . Exemplary control plane services 104 are instance management services (sometimes referred to as hardware virtualization services), object It includes 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, a provider network board can host instances 101 using containers or virtual machines 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, no virtualization). In at least some embodiments, the SAD is software (e.g., a server) executed by hardware that is addressable via a network address of the provider network rather than another network (e.g., customer network, IVN, etc.) point to In at least some embodiments, SAD can also refer to the underlying hardware (eg, computer system) that executes 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, provider network 100 communicates with provider substrate extension (PSE) 188 deployed within customer network 185 and PSE 198 deployed within customer network 195 . Each PSE includes one or more board addressable devices (SADs), such as SADs 189A-189N shown within PSE 188. FIG. Such SADs 189 facilitate 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 one or more of those components may be present in this and subsequent figures. used (whereas the corresponding textual references refer to the singular or plural form of the component, with or without the letter suffix). Customer gateway/router 186 provides connectivity between provider network 100 and PSE 188, as well as connectivity between PSE 188 and other customer resources 187 (e.g., other on-premise servers or on-premise services connected to customer network 185). offer. Similarly, customer gateway/router 196 provides connectivity between provider network 100 and PSE 198 as well as connectivity 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. FIG.

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

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 separated from other resources of a provider network (e.g., other IVNs). can contain. Control plane services can set up and configure IVNs, including assigning an identifier to each IVN to distinguish it from other IVNs. Provider networks can provide various ways to enable communication between IVNs by setting up peering relationships, etc. between IVNs (e.g., one IVN's gateway is configured to communicate with another ).

IVNは、様々な目的で確立できる。例えば、IVNは、カスタマー専用のリソースのセットを確保することによって特定のカスタマー向けにセットアップされ得、カスタマーに提供されるそのリソースのセットのネットワーク構成に関してかなりの適応性がある。IVN内で、カスタマーはサブネットをセットアップし、所望のプライベートIPアドレスを様々なリソースに割り当て、着信及び発信トラフィックを規定するセキュリティルールをセットアップする等を行い得る。少なくともいくつかの実施形態では、デフォルトで、あるIVN内にセットアップされたプライベートネットワークアドレスのセットは、別のIVNから(または、より一般的には、IVNの外側から)アクセス不可能であり得る。 IVNs can be established for a variety of purposes. For example, an IVN can be set up for a particular customer by reserving a set of resources dedicated to the customer, with considerable flexibility regarding the network configuration of that set of resources offered to the customer. Within the IVN, the customer 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, a 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 technology facilitates 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 at board address X, while instance 101 may have IVN address B and be hosted by a SAD at board address Y. To facilitate communication between these compute instances, SAD X forwards packets sent from the newly launched instance to instance 101 (from IVN address A to IVN address B) to (from board address X to board address Y d) Encapsulate in the payload of a packet with the address information of the SAD that hosts each instance. Packets sent between SADs may also include an identifier for IVN 102 to indicate that the data is directed to IVN 102 as opposed to another IVN hosted by the SAD at board address Y. In some embodiments, the SAD also encrypts packets sent between instances within the payload of packets sent between SADs using the encryption key associated with the IVN. In at least some embodiments, encapsulation and encryption are performed by the software component of the SAD hosting 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 PSEs, provider network 100 includes one or more networking components, thereby effectively extending provider network substrates outside of provider network 100 to PSEs connected to the customer's on-premises network. Such components can ensure that data plane and control plane operations targeting a PSE are communicated to the PSE securely, reliably, and transparently. 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 PSES AD proxy, and sends such data plane traffic to the PSE. The PSE interface also receives data plane traffic from the PSE and directs such data plane traffic to the appropriate destination 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 directs 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 the provider network 100 and the PSE (e.g., the PSE interface, the PSESAD Proxy functionality, and/or the PSESAD Anchor may Both PSE Interface and PSESAD Proxy, both PSESAD Proxy and PSESAD Anchor, may be combined in various ways by applications performing the operations of all three components, etc.).

上記に示したように、各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, SAD189A-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 each PSE's board address. As shown, PSE interface 108 has attached VNA(s) 150 that match the SAD address(es) of PSE 188, and PSE interface 118 attaches VNA(s) 150 that match the SAD address(es) of PSE 198. 152 is attached. For example, traffic destined for a SAD with Internet Protocol (IP) address 192.168.0.10 in PSE 188 is sent to PSE interface 108 with attached virtual address 192.168.0.10 and Traffic destined for 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 can 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 board addressing and encapsulation techniques described above, both control and data plane traffic are directed to the SAD and are therefore both routed to the PSE interface. For control plane traffic, the PSE interface routes traffic to the PSES AD proxy based on the SAD address. For data plane traffic, the PSE interface may be one or more encrypted data plane traffic tunnels between provider network 100 and PSE (e.g., tunnel 191 between PSE interface 108 and PSE 188, PSE interface 118 and It establishes a tunnel 193) to and from PSE 198 and acts as an endpoint. For data plane traffic received from provider network 100, the PSE interface encrypts the traffic for transmission over the tunnel to the PSE. For data plane traffic received from a PSE, the PSE interface decrypts the traffic, optionally verifies the SAD addressing of the packets, and sends the traffic over the provider network 100 to the identified SAD destination. 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. Additionally, the PSE interface verifies the addressing of encapsulated packets so that the originator of the traffic (e.g., an instance hosted by the PSE within a particular IVN) is addressed to the destination (e.g., the same or a different IVN). Note that you can ensure that traffic is allowed to be sent to instances hosted by the provider network within the

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 a PSE with 4 SADs has 4 PSE interfaces, then each PSE interface establishes a secure tunnel (eg, 16 tunnels) with each data plane traffic endpoint of the SAD. Alternatively, a group of PSE interfaces can 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 the provider network 100 and the PSE's SADs. Control plane traffic generally has a command-response format or a 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 secure tunnels should generally 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 boundary is sometimes referred to as a data diode). To do so, 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 the provider network 100 via non-tunneled communications (eg, 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 within the provider network 100 and destined for the PSE, the PSES AD proxy can provide the control plane endpoint API of its corresponding SAD within the PSE. For example, a PSESAD proxy of a PSESAD that can host instances can provide APIs that match those that can receive control plane operations to launch, configure, and terminate instances. Depending on the API calls and associated parameters directed to the PSESAD and received by the PSESAD proxy, the PSESAD proxy can perform various operations. For some operations, the PSESAD proxy can pass the operation parameters and related parameters to the destination SAD without modification. In some embodiments, PSESAD proxies can verify that the parameters of API calls received from within provider network 100 are well-formed against the API before terminating their operation.

いくつかの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 device to prevent sensitive information from being sent outside provider network 100 . Exemplary confidential information includes cryptographic information such as cryptographic keys, network certificates, and the like. For example, a PSESAD proxy can decrypt data using a confidential key and re-encrypt data using a key that can be exposed to the PSE. As another example, the PSESAD proxy terminates a first secure session originating from within provider network 100 (e.g., a Transport Layer Security (TLS) session) and uses a different certificate to establish a connection with the corresponding SAD. A new secure session can be created to prevent the provider network certificate from leaking to the PSE. Thus, the PSESAD proxy can receive certain API calls from within the provider network 100 containing sensitive information and issue alternative or replacement API calls to the PSESAD exchanging sensitive information.

PSEから発信され、プロバイダネットワーク100に向けられるトラフィックに関して、PSESADプロキシは、例えば、PSEから発信される全ての制御プレーンコマンドもしくは制御プレーン要求、またはプロバイダネットワーク内の公開されている制御プレーンエンドポイントに向けられていないコマンドもしくは要求だけをドロップできる。 For traffic originating from a PSE and destined for the provider network 100, the PSESAD proxy, for example, handles all control plane commands or requests originating from the PSE or directed to exposed control plane endpoints within the provider network. Only commands or requests that are not specified 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 may sanitize the response and send 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 you can ensure that the expected response format of the request is followed. As yet another example, the PSESAD proxy may generate a response (immediately or upon receipt of the actual response from the SAD) and send the generated response to the originator of the corresponding command or request via control plane traffic 107. can be sent using

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

いくつかの実施形態では、PSESADプロキシは、制御プレーントラフィックに加えて、他のPSEからプロバイダへのネットワーク通信のためのステートフル通信を提供できる。係る通信は、ドメインネームシステム(DNS)トラフィック、ネットワークタイムプロトコル(NTP)トラフィック、及びオペレーティングシステムアクティベーショントラフィック(例えば、Windows(登録商標)アクティベーション用)を含み得る。 In some embodiments, the PSESAD proxy can provide stateful communications for network communications 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 are capable of functioning as endpoints of encrypted control plane traffic tunnels with provider network 100 . In order to provide redundancy and reliability to the connection between the provider network 100 and the PSE, a PSESAD anchor can serve as the provider network side endpoint of 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 tunnel control plane traffic to PSE 1198 via tunnel 192 . work to

様々な実施形態は、上記に説明したトラフィックを処理するための技術を使用することと、プロバイダネットワーク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 handling traffic described above and isolate those network components that are exposed to traffic from the rest of the provider network 100. can limit the radial impact of any planned attack originating from outside the provider network (eg, from where the PSE is involved). Specifically, a network component can operate within one or more IVNs to limit the scope of an attacker's intrusion, thereby protecting the operations of both the provider network and other customers. Accordingly, various embodiments can 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, groups of PSE interfaces of different PSEs run in 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. In addition, each group of PSESAD proxies and each group of PSESAD anchors for a given PSE is a single-tenant IVN (e.g., PSE 188's PSESAD proxy IVN 134, PSE 188's PSESAD anchor IVN 136, PSE 198's PSESAD proxy IVN 138, and PSE 198's PSESAD proxy IVN 40). ).

ネットワークコンポーネント(例えば、PSEインターフェース、PSESADプロキシ、及びPSESADアンカー)のそれぞれに複数のインスタンスを動作させることによって提供される冗長性により、プロバイダネットワークは、PSEからプロバイダへのネットワーク通信を中断することなく、それらのコンポーネントをホストするインスタンスを定期的にリサイクルすることが可能であることに留意されたい。リサイクルは、例えば、インスタンスの再起動または新しいインスタンスの起動と、例えば、リサイクルされたインスタンスのアドレスを用いる他のインスタンスの再構成とを含み得る。定期的なリサイクルは、ネットワークコンポーネントが侵害された場合、攻撃者が侵害されたネットワークコンポーネントを利用し得る時間枠を制限する。 The redundancy provided by running multiple instances of each of the network components (e.g., PSE Interface, PSESAD Proxy, and PSESAD Anchor) allows the provider network to: Note that it is possible to periodically recycle the instances that host those components. Recycling may include, for example, restarting an instance or launching a new instance and, for example, reconfiguring other instances using the recycled instance's address. 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 mentioned, the PSE interfaces 108, 118, PSESAD proxies 110, 120, and PSESAD anchors 112, 122 can be hosted as instances by provider network boards. The PSE connection manager 180 is responsible for connecting the PSE interface(s), PSESAD proxy/proxies when the PSE is shipped to the customer and/or when the PSE comes online and exchanges configuration data with the provider network. , and activation of the PSE's PSES AD anchor(s). In addition, the 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 provides the PSE interface(s) with the addresses of the PSESAD's proxy/proxies. The proxy/proxies of the PSESAD can be provided with the address of the PSESAD anchor(s) of the PSE's PSESAD. In addition, the PSE Connection Manager 180 may include, for example, various interfaces 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 the IVN for the component.

トンネル190~193の確立を容易にするために、トンネルエンドポイントは、各々のネットワークの外側から(例えば、PSEインターフェース及びPSESADアンカーに関するプロバイダネットワークの外側から、PSEのトンネルエンドポイントに関するカスタマーネットワークの外側から)トラフィックを受信できる1つ以上のアタッチされたVNAまたは割り当てられた物理ネットワークアドレスを有し得ることに留意されたい。例えば、PSE188は、単一の外向きのネットワークアドレスを有し、ポートアドレス変換(PAT)または複数の外向きのネットワークアドレスを使用して、複数のSADへの通信を管理できる。PSESADアンカー112、122のそれぞれは、外向きのネットワークアドレスを有し得るまたは(例えば、PATを介して)共有でき、PSEインターフェース108、118のそれぞれは、外向きのアクセス可能なネットワークアドレスを有し得るまたは(例えば、PATを介して)共有できる。 To facilitate the establishment of tunnels 190-193, tunnel endpoints are identified from outside each network (e.g., from outside the provider network for PSE interfaces and PSESAD anchors, from outside the customer network for PSE tunnel endpoints). ) may have one or more attached VNAs or assigned physical network addresses that can receive traffic. For example, PSE 188 may have a single outgoing network address and use port address translation (PAT) or multiple outgoing network addresses to manage communications to multiple SADs. Each of the PSESAD anchors 112, 122 can have an outgoing network address or can be shared (e.g., via PAT), and each of the PSE interfaces 108, 118 can have an outgoing 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 exemplary provider board extension, according to 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 functionally (and possibly structurally) with at least a portion of a computer system forming part of a provider network substrate (e.g., its substrate resources hosting instances within the provider network). ), while the PSE framework(s) 202 are used to emulate provider network substrates within the PSE, as well as control plane traffic tunnels and data plane traffic tunnels (e.g., tunnels 190-193 of FIG. 1). ) to provide connectivity to provider networks.

少なくともいくつかの実施形態では、PSEフレームワーク202のそれぞれは、PSE制御プレーントラフィック240及びPSEデータプレーントラフィック242によって示されるように、メッシュのようなアーキテクチャにおいて、制御プレーントラフィックまたはデータプレーントラフィックをホスト220のそれぞれから送信または受信でき、逆もまた同様である。係る冗長性により、カスタマーがプロバイダネットワークに期待し得る信頼性レベルが可能になる。 In at least some embodiments, each of PSE frameworks 202 directs control plane traffic or data plane traffic to host 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 control plane tunnel endpoints 204 . Back in the provider network, the PSESAD's proxy or proxies (e.g., proxy 110) can distribute control plane traffic to PSESAD anchors (e.g., anchors 112) and distribute the control plane traffic load to the PSE framework of PSE 188. 202 are effectively distributed. 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 interface and PSE frames. Works 202 may also be connected in a mesh-like architecture (eg, a given PSE interface 108 establishes a tunnel with each 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, packets of control plane traffic and packets of data plane traffic may contain SADs as both sources and destinations. The latter (packets of data plane traffic) are encapsulated in packets with SAD-based addressing. As shown, PSE framework 202 is SAD 289 and host 220 is SAD 290 . The SADs in PSE 188 (e.g., SADs 289, 290) 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等にまたはそこから、カスタマーネットワークとの通信を容易にできる。 A SAD sells one or more control plane APIs to handle control plane operations directed to the SAD that manages the SAD's resources. For example, PSE manager 210 of PSE framework 202 may sell control plane APIs for managing components of PSE framework 202 . One such component is control plane traffic and data plane traffic, such as, for example, control plane traffic directed to SAD 289 for PSE manager 210 and control or data plane traffic directed to SAD 290 for host manager 222. / or PSE gateway 208 that routes data plane traffic to and from PSE 188 . PSE gateway 208 may also facilitate communication with customer networks, such as to or from other customer resources 187 accessible via a network of PSE deployment sites (eg, customer network 185).

PSEマネージャ210のAPIは、PSEフレームワーク202のPSEゲートウェイ208を構成するための1つ以上のコマンドを含み得る。PSEフレームワーク202の他のコンポーネント212は、DNS、動的ホスト構成プロトコル(DHCP)、及び/またはNTPサービス等のホスト220のためのPSEの基板の動作に関与する様々なアプリケーションまたはサービスを含み得る。 The API of PSE Manager 210 may include one or more commands for configuring PSE Gateway 208 of PSE Framework 202 . Other components 212 of PSE framework 202 may include various applications or services involved in operating the PSE infrastructure 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 the components of host 220 . In the illustrated embodiment, host manager 222 includes instance manager 224 and network manager 226 . Instance manager 224 may handle API calls related to managing host 220 , including commands to launch, configure, and/or terminate instances hosted by host 220 . For example, an instance management service within a provider network (not shown) can issue a control plane command to instance manager 224 to launch an instance on host 220 . As shown, host 220 hosts customer instance 232 running inside customer IVN 233 , third party (3P) instance 234 running inside 3PIVN 235 , and service instance 236 running inside service IVN 237 . Note that each of these IVNs 233, 234, 235 can extend an existing IVN established within the provider network. Customer instance 232 may run some customer applications or workloads, and 3P instance 234 may run another party's applications or workloads that the customer is allowing to launch instances within PSE 188. , service instance 236 may run a provider network's services (eg, block storage services, database services, etc.) that it provides 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 can perform any necessary decapsulation of the IVN packet before sending it to the addressed hosted instance. In addition, network manager 226 can handle 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, encrypting into a SAD-addressed packet can be sent over the data plane (e.g., either to another host in the PSE, or back to the provider network via the PSE gateway 208). done). Note that the network manager 226 may contain or have access to various data that facilitates routing of data plane traffic (e.g., it may indicate 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 exemplary connections between provider networks and provider board extensions, according to at least some embodiments. Specifically, FIG. 3 shows an exemplary connection between the provider network and the PSE. Note that 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 to the PSE by the provider network. sea bream. Although not shown, this example assumes that the PSE includes two PSE frameworks 202 and two hosts 220 (four total) of SADs. 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 through PSE gateways 208A, 208B to destinations 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 PSESADVNA 304, two PSE interfaces 108A, 108B, and two PSESAD proxies 110A, 110B for a given PSESAD. Together, the PSE interface(s) and PSESAD proxies/proxies 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 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つ以上のキーまたは関連付けられるキーを記憶する(またはそれにアクセスできる)。 The PSESADVNA 304 acts as a front for a given PSE from 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 the PSESADVNA 304 to one of the PSE interfaces 108A, 108B. The illustrated PSE interfaces 108A, 108B for a given slice and those of other slices (not shown) operate within the PSE interface IVN 132 . The PSE interfaces 108A, 108B transmit control plane traffic to the PSEs by transmitting the data plane traffic to the PSEs over data plane traffic tunnels and forwarding the control plane traffic to the PSES AD proxies 110A, 110B of the slices. The PSE interfaces 108A, 108B provide the network addresses of the PSESAD's proxy/proxies of the associated SAD, the network addresses of the data plane tunnel endpoint(s), and communications with those endpoint(s). Stores (or has access to) one or more keys or associated keys for the PSE's data plane tunnel endpoint(s) 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, PSE interfaces 110A, 110B establish secure tunnels for data plane traffic with data plane tunnel endpoints 206A, 206B, respectively, 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 PSE interfaces and data plane tunnel endpoints (ie, 2 PSE interfaces x 2 data plane tunnel endpoints x 4 SADs per SAD).

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, perform various operations described elsewhere herein, and pass through either of the two PSESAD anchors 112A, 112B. to 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 and perform various operations described elsewhere herein to provide Control plane traffic 107 to the destination. The illustrated PSESAD proxies 110 A, 110 B for a given slice and proxies for other slices (not shown) operate within 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, PSESAD proxies can access shared data store 306 or otherwise exchange information. Such information exchange can be used for several reasons. For example, remember that a PSESAD proxy can sell an API interface to emulate the API interface of the associated SAD in the PSE. One PSESAD proxy may be routed by different PSESAD proxies because some communications may be stateful and various load balancing techniques may prevent the same PSESAD proxy from processing all communications for a given working set. It may be necessary to access previously processed communication state (eg, PSESAD proxy 110A sends control plane operations to the PSE and PSESAD proxy 110B receives responses to control plane operations from the PSE). For inbound control plane traffic, the PSESAD proxy checks if the inbound message matches the expected state, and if so, controls the control plane traffic as described elsewhere herein. Messages can be sent via traffic 107 . If not, the PSESAD proxy 110A, 110B can drop the traffic. As another example, recall that the PSESAD proxy can bridge a separate secure session (eg, a TLS session) so that provider network credentials are not sent to the PSE. Again, the PSESAD proxy handling the outbound message may be different from the PSESAD proxy handling the response to that message, so the PSESAD proxy handling the response message sends the secure response message through 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 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 PSES AD proxies (two per slice on 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 the two PSES AD proxies associated with the SAD from which the traffic originated. The PSE Anchors 112A, 112B provide the network addresses of the proxy/proxies of the SAD's respective PSES ADs, the network addresses of the control plane tunnel endpoint(s), and communications with those endpoint(s). Stores (or has access to) one or more keys or associated keys for 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, network components or provider networks can employ load balancing techniques to distribute routing control and data plane traffic workloads between provider networks and PSEs. For example, traffic sent to PSESADVNA 304 can be distributed between PSE interfaces 108A, 108B. As another example, each of the PSE interfaces 108 can distribute traffic between the data plane tunnel endpoints 206A, 206B. As yet another example, each of the PSE interfaces 108 can distribute traffic between the PSES AD proxies 110A, 110B. As yet another example, each of PSESAD proxies 110 can distribute outbound traffic among PSESAD anchors 112A, 112B. As yet another example, PSESAD Anchor 112 can distribute inbound traffic among PSESAD Proxies 110A, 110B. In either case, such load balancing may be performed by a transmitting entity or load balancer (not shown). An exemplary load balancing technique employs a load balancer with a single VNA that distributes traffic to multiple components "behind" that address, and assigns multiple receiver addresses to each data sender. Including providing and distributing selected recipients at the application level.

図1~図3に示される実施形態は、制御プレーントラフィック及びデータプレーントラフィック用の別のトンネルの確立を示し、他の実施形態は、制御プレーントラフィック及びデータプレーントラフィックの両方のための1つ以上のトンネルを採用し得ることに留意されたい。例えば、PSEインターフェースは、共有トンネルを通じてPSEに伝送するために、データプレーントラフィックをPSESADアンカーにルーティングでき、制御プレーントラフィックでPSESADプロキシによって実行される追加の動作をバイパスする。 1-3 show the establishment of separate tunnels for control plane traffic and data plane traffic, other embodiments show one or more tunnels for both control plane traffic and data plane traffic. Note that a tunnel of . For example, the PSE interface can route data plane traffic to the PSESAD anchor for transmission to the PSE over the shared tunnel, bypassing additional operations performed by the PSESAD proxy on 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 examples of 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 420 A is the host for block storage server instance 450 . In hosting the block storage server instance 450, the host 420A uses 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. You are provisioning a quantity. A block storage server instance 450 can partition provisioned storage devices 447 and create and host volumes on behalf of other instances. A provider network 400 instance management service (not shown), via instance manager 426 , can initiate the launch of such block storage server instances on either provider network 400 hosts or PSE 488 hosts. Instance manager 426 is a virtual machine manager (VMM), hypervisor, or other manager that can provision host resources (e.g., compute, memory, network, storage) for instances (e.g., virtual machines) and launch 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). The host 420A includes a block storage client 460A through which the hosted instance accesses block storage volumes hosted by the block storage server (eg, by providing a virtual block storage interface to the instance). Specifically, block storage client 460 intercepts or otherwise receives block storage operations issued to volumes “attached” to instances (eg, 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 for 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 . The host 420B includes a block storage client 460B whose hosted instance accesses block storage volumes hosted by the block storage server.

ボリュームがインスタンスにアタッチされるとき、ブロックストレージクライアントは、ボリュームを、レプリカをホストするブロックストレージサーバーインスタンス(複数可)に関連付けるマッピングを取得する。ブロックストレージクライアントは、ブロックストレージサーバーインスタンスのそれぞれとの通信セッションを(例えば、ネットワークベースのデータ転送プロトコルによって)開くことができる。ブロックストレージ操作をインスタンスから受信すると、ブロックストレージクライアントは適切なブロックストレージサーバー(複数可)に操作を発行して、インスタンスの操作を実現する。例えば、図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 host the replica. A block storage client can 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 for the instance. For example, referring to FIG. 4, instance A 430 can issue a read 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 the operation to block storage server instance 450, including 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 series of operations can be performed between instance B 436, block storage client 460B, block storage server instance 450, and volume B 440 of FIG.

図4及び図5を参照すると、ブロックストレージクライアントとブロックストレージサーバーインスタンスとの間のブロックストレージメッセージングは、グローバルネットワークブロックデバイス(GNDB)等のネットワークベースのデータ転送プロトコルを使用して送信できる。本明細書の他の箇所で説明されるように、係るメッセージは、データプレーントラフィックとしてカプセル化され、各々のホストのネットワークマネージャ424によって、ブロックストレージクライアント460とブロックストレージサーバー450との間でルーティングできる。ブロックストレージサーバーインスタンスが、ブロックストレージ操作を発行するインスタンスと同じホストによってホストされるいくつかの実施形態では、ブロックストレージクライアントは、ネットワークベースのデータ転送プロトコルによって関連操作をネットワークマネージャに発行でき、次に、ネットワークマネージャはホストされるブロックストレージサーバーインスタンスに操作を内部でルーティングできる。ブロックストレージサーバーインスタンスが、ブロックストレージ操作を発行するインスタンスと同じホストによってホストされる他の実施形態では、ブロックストレージクライアントは、ブロックストレージクライアントとホストされるインスタンスとの間に常駐するPCIeまたは他の相互接続を介して関連操作を発行でき、これによって、ネットワークベースの転送に関連付けられるプロトコルパッキングを回避する。 4 and 5, block storage messaging between block storage clients and block storage server instances can 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 clients 460 and block storage servers 450 by each host's network manager 424, as described elsewhere herein. . In some 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 can issue related operations 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 is 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 the protocol packing associated with network-based transfers.

図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になくなる)。 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, Block Storage Server Instances 452 run within Block Storage Service (BSS) IVN 452 and include any number of Block Storage Server Instances to provide PSEs from provider networks. can reach. Block storage client 460 has VNA 462 associated with block storage service IVN 452 . Thus, IVN level encryption using block storage service IVN encryption key 484 can 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 over the block storage service IVN can be done by the network manager at the IVN's endpoints. For example, network manager 424B encrypts traffic sent from block storage client 460B over VNA 462B. As another example, network manager 424A decrypts traffic sent to instances hosted within IVN 452 of the BSS, including block storage server instance 450 . Block storage volumes may also have volume-level encryption to provide encryption at rest for data. For example, volume A 434 can be encrypted with volume A encryption key 480 and volume B 440 can 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 prevent the volume encryption key from being hosted on the same host as the volume it encrypts. Note that the policy to prevent being hosted can 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 manager are executed by different processor(s), as shown in FIGS. For example, block storage server instance 450 can be executed by a first processor (eg, processor 1710) and host manager 422A can be executed by a second processor (eg, processor 1775). The processor(s) running a block storage server instance access the host's storage device(s) via one or more interconnects. For example, processor(s) running block storage server instance 450 (eg, processor 1710) access storage device(s) 421 (eg, storage device 1780) via a PCIe interconnect between the two. can. As another example, the processor(s) running block storage server instance 450 may connect the storage device(s) to the processor or system-on-chip running host manager 422A (e.g., processor 1775) via a first PCIe bus. 421, which in turn bridges their communication to the storage device(s) 421 over a 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 the primary replica that handles reads from and writes to volumes (input and output operations, or "input/output (I/O)") and hosts that primary replica. can synchronously propagate writes to other secondary replicas. If the primary replica fails, one of the secondary replicas is selected to act as the primary replica (referred to as failover). Replicas can 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 can 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 is replaced with available data. can recover. As a result, volumes attached to an instance can 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. How does a block storage server instance boot from a boot volume hosted by a block storage server instance if there is no operational block storage server instance? This is especially difficult in the context of PSEs, which may not include dedicated (or bare metal) block storage servers. Figures 6 and 7 illustrate examples of local boot techniques for booting a first or "seed" block storage server instance (a block storage server instance from which other instances can be started) within a PSE. Once started, other instances can be started 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 exemplary system for booting a virtualized block storage server using the first technique, according to at least some embodiments. At a high level, FIG. 6 illustrates an example of remotely booting a block storage server 650 within instance 690 via a proxy server hosted within provider network 600 . Block storage services (BSS) 606 of provider network 600 provide users with the ability to create block storage volumes and attach those volumes to instances. For example, a user (e.g., a customer of the provider network, another service of the provider network) submits commands via an API or console relayed to the BSS 606 to create, resize, or create volumes managed by the BSS. can be deleted and those volumes can be attached or detached from the instance. BSS 606 maintains a BSS object store 608 containing 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 re-creation of that volume 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 the booting of software running within an instance. A machine image may be a group of one or more snapshots of a given instance, including boot volumes.

いくつかの実施形態では、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 in BSS object store 608 . To prevent leakage of encryption keys used within the provider network 600, the BSS 606 can also manage a PSE object store 610 and use different ciphers than those 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's 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. Re-encrypt as 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, BSS 606 manages its IVN, shown as BSS IVN 652 . The host 620 on which the block storage server 650 runs contains a host manager 622 having a block storage client 660 with an associated VNA 662 of the 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, allowing client 660 to access block storage server instance machine image 612B. 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 . The bare metal block storage server 614 creates a new logical volume 619 on its one or more storage devices 618 on the bare metal server 614 and loads the proxy server machine image 616 stored in the BSS object store 608 into the 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 indicated by circle C, BSS 606 initiates activation of proxy server instance 642 using instance management service 640 . Instance management service 640 is another control plane service of provider network 600 that facilitates launching instances within provider network 600 or PSEs. In some embodiments, the instance management service 640 tracks host utilization metrics (i.e. metrics such as CPU utilization, memory utilization, and network utilization) that indicate how "hot" the host is. can or can access it. For example, instance management service 640 or another service may periodically poll hosts to obtain utilization metrics. By accessing metrics associated with pools of potential hosts (subject to some constraints on host location within a given PSE, etc.), Instance Management Service 640 identifies low utilization (e.g., thresholds or thresholds). is below the threshold) to identify the host hosting the instance in response to the launch request. In requesting activation of proxy server instance 642 , BSS 606 specifies that the instance should be activated from volume 619 within the BSS's IVN 652 . As shown in circle D, instance management service 640 identifies host 646 that hosts the instance and sends a message to host 646 to launch 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 booting of block storage server 650 via instance management service 640 . BSS 606 specifies that an 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 hosting block storage server instance 650 and sends a message to host 620 (eg, via a control plane traffic tunnel) to restore the instance. to start. As shown, a request to launch an instance is received by an instance manager 626, which can provision the instance's host resources 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 the instance 690, the instance manager 626 configures the basic input/output system (BIOS) 692 of the instance 690 and, via the proxy server instance 642, places the block storage server instance machine image 612B on the virtual boot volume 694. can be loaded. BIOS 692 contains block storage device drivers (eg, non-volatile memory express (NVMe) drivers) and can attach two block storage devices. A virtualized block storage device is presented by proxy server instance 642 through block storage client 660 and boot volume 694 . Although shown within instance 690 , boot volume 694 is allocated to instance 690 by instance manager 626 from a storage device (not shown) of host 620 accessible through 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 a non-BIOS interface (eg, Unified Extensible Firmware Interface (UEFI)) for connecting 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 loading 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 provide block storage Devices can be provided to instances 690 via block storage clients 660 . The BSS 606 creates a volume on the virtual drive or virtual disk of the block storage server instance to be launched and loads the machine image 612A of the block storage server instance into the volume. During the load process, the block storage server instance decrypts the machine image using the provider network key, optionally using a volume-specific key (e.g., how key 480 encrypts volume B 440, etc.) 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 exemplary system for booting a virtualized block storage server using a second technology, according to at least some embodiments. At a high level, FIG. 7 illustrates an example of remotely booting instance 790 to execute block storage server software 750 via pre-boot software executed by instance 790 prior to executing block storage server software 750. show. Specifically, storage device 721 of PSE 720 is preloaded with pre-boot instance boot volume 723 (eg, prior to shipment of PSE). The pre-boot instance boot volume 723 contains software that allows an instance to boot during the block storage server pre-boot phase 798 to load block storage server software into another boot volume. The instance can then reboot and boot from the other boot volume to launch 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, BSS 606 initiates the launch of a block storage server instance using instance management services 640, specifying that the instance should launch within the IVN of the BSS of a particular PSE. Again, the instance management service 640 identifies the host 620 of the PSE that hosts the block storage server instance 650 and sends a message to the host's host manager 722 (eg, via the control plane traffic tunnel) to launch the instance. to 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 to the pre-boot instance boot volume 723 and the virtual boot volume 794 (such as the boot volume 694 described above) by two attached block storage devices (block storage clients (not shown)). block storage device interface) into the BIOS 792A (or UEFI) and 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に渡されている場合がある。 BIOS 792A then enables booting of preboot software 796 from preboot instance boot volume 723, as indicated by circle C. FIG. If pre-boot instance boot volume 723 is based on a generic machine image, host manager 722 also configures instance 790 to facilitate communication between pre-boot software 796 and provider network 700, as shown in circle D. Configuration may need to be updated. 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 stores machine images loaded into boot volume 794 . Can provide a key to decrypt. The VNA configuration, credentials, and keys may have been passed to host manager 722 as part of the request from instance management services 640 to launch the 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 running 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. Host manager 722 can detect that boot volume 794 has completed loading, or pre-boot software can signal its loading completion. For example, pre-boot software can initiate an instance reboot when boot volume 794 is loaded. As another example, network manager 724 can detect session termination 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 indicated by circle F, host manager 722 can update or otherwise reconfigure BIOS 792A to 792B either during data transfer or once 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 rebooting instance 790 , host manager 722 may also clear memory provisioned to instance 790 , which may contain residual data written by pre-boot software 796 . Upon rebooting instance 790 , BIOS 792 B boots block storage server 750 from boot volume 794 .

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

図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 exemplary system for booting additional compute instances of provider board extensions from a block storage server, according to at least some embodiments. For example, once a block storage server instance is launched using techniques such as those described with reference to FIGS. ) can provide boot volumes. This is particularly useful in the context of PSEs where seed block storage server instances are launched from machine images that are transferred or hosted over relatively slow connections between the provider network and the PSE compared to the PSE's substrate interconnect. obtain. In this example, instance 890 is launched on PSE 888 host 820A. Instance 890 is running block storage server software 850 and operates within IVN 844 of the BSS. In addition, block storage clients 860A and 860B have attached VNAs 862A and 862B that enable communication on the IVN 844 of the BSS.

円Aに示されるように、プロバイダネットワーク800のインスタンス管理サービス640は、BSS606が指定されたスナップショットから新しいボリュームを作成することを要求できる。円Bに示されるように、BSS606は、ブロックストレージサーバーインスタンス890に、指定されたスナップショットに基づいてボリュームを作成することを命令できる。いくつかの実施形態では、インスタンス管理サービス640は、ボリュームを暗号化するために、ボリューム固有の暗号化キー(例えば、キー680)を提供し得る。 As shown in circle A, instance management service 640 of provider network 800 can request that BSS 606 create a new volume from a specified snapshot. As shown in circle B, BSS 606 can command 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 indicated by circle C, a 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 a customer may specify to BSS 606 that a particular snapshot be loaded into cache prior to any request to activate an instance. In this way, block storage server instance 890 can create volumes from cached boot volume snapshots and PSE's by avoiding the delays associated with transferring data from provider network 800 object stores 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, instance management service 640 of provider network 600 issues commands to hosts of PSE 888 to attach or detach volumes hosted by block storage server instance 890 to other instances hosted by 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 containing other data. Instance management service 640 can instruct host 820 B 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 IVN 844 of the BSS.

図9は、少なくともいくつかの実施形態による、仮想化ブロックストレージサーバーを管理するための例示的なシステムを示すブロック図である。仮想化環境内でブロックストレージサーバーを実行すると、インスタンス管理サービスが必要に応じて実行中のブロックストレージサーバーインスタンスの数を自動的にスケーリングすることを可能にすることを含むいくつかの利点をもたらす。インスタンス管理サービスは、手動で拡張されたベアメタルサーバーの定義済みプールで動作するBSSではなく、ホストリソース(例えば、CPU、メモリ、ネットワーク等)の使用率を監視し、実行中のブロックストレージサーバーインスタンスの数を自動的に調整できる。例えば、ブロックストレージサーバーインスタンスの2つのホストが高いリソース使用率をレポートしている場合、インスタンス管理サービスは、リソース使用率が低いホストで追加のブロックストレージサーバーインスタンスを起動できる。次に、ブロックストレージサービスは新しく起動するインスタンスにボリュームを作成でき、それによって、実行中のブロックストレージサーバーインスタンスのワークロードの増加及び起こり得るパフォーマンスの低下を回避する。 FIG. 9 is a block diagram illustrating an exemplary system for managing virtualized block storage servers, according to at least some embodiments. Running block storage servers within a virtualized environment provides several benefits, including allowing instance management services to automatically scale the number of running block storage server instances as needed. The Instance Management Service monitors the utilization of host resources (e.g., CPU, memory, network, etc.), rather than the BSS running on a defined pool of manually scaled bare metal servers, and the number of running block storage server instances. 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 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 fault domains to exceed the number of host computer systems by decoupling fault domains from the overall computer system. As the number of failure domains increases, more block storage servers run on a fixed set of hardware, and as the number of block storage servers increases, data managed by any one particular server increases. reduces the overall footprint of For example, assume that the system includes nine host computer systems that are not subdivided into smaller failure domains (ie, one computer system has one failure domain). To avoid data loss, each host or fault domain runs a single block storage server. If those nine block storage servers host 90 terabytes (TB) of data (including encoding that enables data recovery) across the instance's volume, each block storage server would store approximately 10TB of data. . If one of the hosts fails, it will need to recover its 10TB (eg, from another 80TB). Such data recovery has a cost of computing, transferring and storing data. If each of those 9 hosts is subdivided into 2 failure domains and the number of block storage servers is increased to 18, each block storage server stores about 5TB of data and 1 component of the failure domain fails. approximately halves the amount of data (and corresponding cost) that would need to be recovered.

この例では、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 hardware design of the host, the host can either be treated as a single fault domain or subdivided into two or more fault domains. Here, hosts 920 each contain two failure domains. Host 920A includes fault domain 922 and fault domain 924 so that components in one fault domain can continue to operate even if components in another fault domain fail. For example, fault domain 922 corresponds to a first processor in a multiprocessor system connected to a first bank of memory (e.g., RAM) and using a first set of one or more storage drives (e.g., SSDs). While it may, failure domain 924 may correspond to a second processor in a 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 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 practice each volume may have fewer or more replicas, with each replica having many different blocks (e.g., by striping). It 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, Instance Management Service 940 monitors utilization of host physical resources, such as processor utilization, memory utilization, storage utilization, and network utilization, which are aggregated across hosts. may be isolated by fault domain, or may be per resource (e.g., instance management service 940 may specify that the average CPU utilization is 50%, that the CPU utilization of processor(s) in fault domain 922 is 50%, or a metric may be received from host 920A indicating that the CPU utilization of a particular processor supporting fault domain 922 is 50%). The instance management service 940 can track the host's resource utilization in a database (not shown). Note that in addition to block storage server instances, the indicated fault domains can host other instances (eg, customer instances) that contribute to the utilization of the host's physical resources. The Instance Management Service 940 periodically updates the BSS 906 with resource utilization metrics so that the BSS 906 selects less utilized block storage server instances when creating new volumes, as shown in circle B. can enable

円Cに示されるように、インスタンス管理サービス940は、ブロックストレージサーバーインスタンスをサポートするホストのリソース使用率が1つ以上の閾値を超えるとき、新しいブロックストレージサーバーインスタンスを起動できる。閾値は、ホストにわたって集計されたリソースごとに(例えば、ブロックストレージサーバーを実行している全てのプロセッサの平均プロセッサ使用率が50%である)、ホストにわたるリソースのいくつかの組み合わせ(例えば、ストレージ使用率が80%を上回り、プロセッサ使用率が50%を上回っている)、または個々のリソース及び/もしくはホストベース等の様々な方法で定義され得る。ブロックストレージサーバーインスタンスを既にホストしている障害ドメインでブロックストレージサーバーインスタンスを起動することを回避するために、インスタンス管理サービス940は、(例えば、リソース使用量メトリックを含むデータベースにおいて)どの障害ドメインが占有され、どれが利用可能であるかを追跡できる。ここで、インスタンス管理サービス940は、ホスト920A、920B、及び/または920Cのリソース使用率がある閾値を超えており、ホスト920Cの以前に占有されていなかった障害ドメイン930及び932で、各々、新しいブロックストレージサーバーインスタンス950D及び950Eを起動していたことを決定した。障害ドメイン928はボリュームをホストしていないブロックストレージサーバー950Fを含むが、その障害ドメイン内でホストされる他のインスタンスのリソース使用率またはホスト920Bの総リソース使用率は、別のブロックストレージサーバーインスタンスをサポートするには高すぎ得る。 As indicated by circle C, the instance management service 940 can launch new block storage server instances when the resource utilization of the host supporting the block storage server instances exceeds one or more thresholds. The threshold can be some combination of resources across hosts (e.g., storage usage rate is greater than 80% and processor utilization is greater than 50%), or defined in various ways such as on an individual resource and/or host basis. To avoid starting a block storage server instance on a fault domain that already hosts block storage server instances, the instance management service 940 determines which fault domain is occupied (e.g., in a database containing resource usage metrics). and you can track which ones are available. At this point, instance management service 940 has exceeded a certain threshold of resource utilization of hosts 920A, 920B, and/or 920C, causing new It was determined that block storage server instances 950D and 950E were being started. Failure domain 928 includes block storage server 950F that is not hosting any volumes, but the resource utilization of other instances hosted within that failure domain or the total resource utilization of host 920B may be affected by another block storage server instance. Get too high 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 resource utilization metrics received from the identified block storage instance 950 and instance management service 940, the BSS 906 can create a new volume on host 920C, as shown in circle E. Now, assuming that host 920C has shown low resource utilization as reported by instance management service 940, BSS 906 determines primary replica 670 provided by block storage server instance 950D and block storage server instance create a new volume D containing the secondary replica 672 provided by 950E.

図10は、少なくともいくつかの実施形態による、ブロックストレージクライアントにボリュームマッピングを提供するための例示的なシステムを示すブロック図である。上記で示唆したように、単一ボリュームは、プライマリレプリカ及びいくつかのセカンダリレプリカ等の複数のレプリカに関連付けられ得る。各レプリカは、いくつかのブロックストレージサーバーにわたって分散され得る。ボリューム、そのレプリカ、及びそのレプリカ(またはレプリカの一部)をホストするサーバーの間の関連付けは、ハードウェア障害が発生するとき、または、バックグラウンドのロードバランシング動作の一部としてサーバー間でデータが移行するとき、時間の経過とともに変更できる。ブロックストレージサーバーをPSEに展開する際、高いデータアベイラビリティ(例えば、障害時に、プライマリレプリカからセカンダリレプリカになる)、高い耐久性(例えば、サーバーに障害が発生した場合にロストデータを再作成するプロセスをすぐに開始する)を維持するために、PSEがプロバイダネットワークから切断されている、またはプロバイダネットワークに到達することが不可能であるときでも、それらの関連付けを変更することが可能であることが好ましい。 FIG. 10 is a block diagram illustrating an exemplary system for providing volume mappings 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 replicas, and the servers that host those replicas (or parts of replicas) prevents data from being transferred between servers in the event of a hardware failure or as part of background load balancing operations. As you migrate, you can change over time. When deploying block storage servers in PSE, high data availability (e.g. primary replica becomes secondary replica in case of failure), high durability (e.g. process to recreate lost data in case of server failure) ), it is preferable to be able to change their association even when PSEs are disconnected from the provider network or the provider network is unreachable. .

図示のように、PSE1088は、ブロックストレージサーバーインスタンスにわたってボリュームがどのように分散(またはマッピング)されるかを追跡するコンポーネントを含み、これにより、ブロックストレージクライアントがボリュームにアクセスする必要があるとき、ブロックストレージクライアントはそのボリュームをホストするブロックストレージサーバーを見つけることができる。例示的なボリュームAのマッピングデータ1098は、各エントリについていくつかの項目を含む。その項目として、サーバー識別子(例えば、インスタンスまたはホストハードウェアに関連付けられる一意の識別子)、サーバーアドレス(例えば、IPアドレス)、及びボリュームAのボリュームタイプ(例えば、プライマリまたはセカンダリ)が挙げられる。マッピングデータは、(例えば、レプリカが複数のブロックストレージサーバーインスタンスにわたって分割またはストライプ化される場合)ブロック識別子等の異なる項目または追加項目を含み得る。例示的なボリュームAのマッピングデータ1098は、ボリュームAが、ブロックストレージサーバーインスタンス1050Aによって提供されるプライマリレプリカ1052と、ブロックストレージサーバーインスタンス950B及び1050Cによって各々提供される2つのセカンダリレプリカ1054及び1056とを含むことを示す。PSE1088は、他の多くのブロックストレージサーバーインスタンス(図示せず)をホストでき、おそらくホストすることに留意されたい。 As shown, 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, a block A storage client can find the block storage server that hosts the volume. The exemplary volume A mapping data 1098 includes several items for each entry. The items include the server identifier (eg, a unique identifier associated with the instance or host hardware), the server address (eg, IP address), and the volume type of volume A (eg, primary or secondary). 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). Exemplary volume A mapping data 1098 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 contains Note that PSE 1088 can and possibly 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 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 other cluster nodes. One of the nodes of the cluster may be designated as the leader or primary node to which changes to volume mappings are proposed. Nodes of a cluster may implement a consensus protocol, such as the Paxos protocol, to propose and agree on changes to 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 of the provider network. Such instances persist individual views of the volume mapping data to the host's non-volatile storage (eg, via the block storage client to volumes hosted by the block storage server instance). In other embodiments, the nodes of the cluster are part of block storage server software executed by block storage server instances. As shown in exemplary node software environment 1090 , nodes can run as containers 1082 hosted within container engine processes 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 failure domains.

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

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

円Dに示されるように、ブロックストレージクライアント1060は、クラスター1066からボリュームAのボリュームマッピングデータの現在のビューを取得し、ボリュームマッピングデータに基づいて、円Eに示されるように、ボリュームAをホストするブロックストレージサーバー1050に接続できる。図示されていないが、いくつかの実施形態では、クライアントから接続要求を受信すると、ブロックストレージサーバーは、ブロックストレージサーバーがまだそのボリューム(または少なくともボリュームの一部)をホストしているかどうかを示すメッセージをボリュームクラスターに送信できる。ブロックストレージクライアントから接続要求を受信したにもかかわらず、ブロックストレージサーバーは様々な理由でボリュームをホストし得ない。例えば、ボリュームをホストしているサーバーのセットに対する最近の変更が、ボリュームクラスターに、もしくはボリュームクラスターを経由してまだ伝播されていない場合がある、または接続要求を送信するブロックストレージクライアントが、古いキャッシュボリュームマッピングデータに依存している場合がある。ブロックストレージサーバーがボリュームをホストしているかどうかに関係なく、クライアントから接続要求を受信するブロックストレージサーバーは、クラスターディスカバリーサービス1062からボリュームの1つ以上のノードのアイデンティティを取得できる。ブロックストレージサーバーがボリュームをホストしなくなった場合、ブロックストレージサーバーは、クラスターによって維持されるデータストアの更新を提案して、ブロックストレージサーバーをボリュームマッピングデータから除去できる。さらに、ブロックストレージサーバーは、要求を開始したブロックストレージクライアントに応答を送信して、接続の試行が失敗したことを示し得、オプションで、ボリュームがサーバーによってホストされなくなったことを示す。ブロックストレージサーバーがまだボリュームをホストしている場合、ブロックストレージサーバーはクラスターに確認応答を送信して、マッピングデータの少なくともその部分がまだ有効であることをクラスターに示すことができる。 As indicated by circle D, block storage client 1060 obtains a current view of volume mapping data for volume A from cluster 1066, and based on the volume mapping data, assigns volume A to host volume A, as indicated by circle E. can be connected to a block storage server 1050 that 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 still hosts the volume (or at least part of the volume). can be sent to the volume cluster. Despite receiving a connection request from a block storage client, the block storage server cannot host the volume for various reasons. For example, recent changes to the set of servers hosting the volume may not have yet propagated to or through the volume cluster, or the block storage client sending the connection request may have a stale cache. May rely on volume mapping data. 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 the cluster discovery service 1062, regardless of whether the block storage server hosts the volume. If a block storage server no longer hosts a volume, the block storage server can suggest updates to the datastores maintained by the cluster to remove the block storage server from the volume mapping data. Additionally, 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 exemplary system for tracking volume mappings, according to at least some embodiments. As explained above, connectivity between the PSE and the provider network cannot be guaranteed. To meet desired levels of data availability and data durability, the PSE includes facilities that allow changing the mapping between a given volume and the block storage server instance that hosts that volume. As described with reference to Figure 10, the volume of a given volume can be tracked using a cluster that implements a distributed data store. FIG. 11 illustrates a stepwise approach to volume placement, or the process of selecting block storage server instances to host replicas or portions of replicas of volumes. Specifically, the BSS Volume Placement Service 1107 of the BSS 1106 makes initial placement decisions and associated volume mappings at volume creation time, and the PSE Volume Placement Service 1108 manages subsequent changes to volume mapping over the life of the volume. do. PSE volume placement service 1108 may be implemented in various ways, such as by an instance hosted by PSE 1188 integrated as a component of the 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 the hosted block storage server instance to check for its response and/or (eg, as described with reference to FIG. 9) ) resource usage of the hosted block storage server instance, its failure domains, and/or metrics related to the host. As shown, the PSE Volume Placement Service 1108 can send the collected server status to the 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 Instance Management Services (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 profile of the new volume (eg, number of replicas, whether replicas as stripes, etc.), the BSS placement service 1107 can provide identification of recommended block storage server instances. 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 to track volume mapping data for volume A as shown in circle C. The mapping data first identifies block storage server instance 1150A as hosting the primary replica block and storage server instance 1150B as hosting the secondary replica. In addition, the BSS 1106 sends one or more messages to the identified block storage server(s) to indicate the storage volume (e.g., the storage volume hosted by block storage server instance 1150A and the block storage server(s), as shown in circle D). Create a storage volume hosted by instance 1150B). Storage volumes can be backed by the underlying host storage device's capacity 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, newly created storage volumes can be loaded from volume snapshots or machine images as described with reference to FIG. In this example, an instance (not shown) attached to volume A performs block storage operations for some time to propagate writes from primary replica 1152 to secondary replica 1154B (as shown, for example, 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 indicated by circle F. For example, block storage server instance 1150B may lag or become unresponsive (eg, due to memory leaks, hardware failures, etc.). Problem detection can occur in a variety of ways. In some embodiments, block storage server instance 1150A detects problems such as failures to acknowledge propagated writes. As such, 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 wait for a period of time. At that point, block storage server instance 1150 A 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 (eg, based on collected metrics or responsiveness) during monitoring as described above with reference to Circle A. Again, the PSE volume placement service 1108 may include policies that include one or more actions to take in response to detected problems, 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 the 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, the PSE volume placement service 1108 identifies block storage server instance 1150C to block storage server instance 1150A, as indicated by 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, identifying the block storage server instance 1150C allows the PSE volume placement service 1108 to send a message to the block storage server instance 1150C to create the 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, for example, exhibits poor performance), the mirroring operation can be performed by copying replica 1154A to replica 1154B. Re-mirroring from either replica 1154 or replica 1152 is feasible in this scenario as those replicas are not distributed across storage servers, but in other embodiments the various storage servers where the replicas are distributed. to recreate or otherwise generate lost data by using redundancy, etc. (e.g., parity bits, error correction codes, etc.) encoded in the stored data . For example, if replica data is encoded and distributed across ten block storage server instances and one of the ten is lost, reading the data associated with the replica from the remaining nine block storage server instances can recreate the lost data. As another example, if 10 different block storage servers host different replicas of a volume using the same distribution pattern, the lost data is transferred from the block storage server instance hosting the corresponding portion of the other replicas. 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 become block storage server instance 1150C as the host of the secondary replica. can be exchanged for Block storage server instance 1150A may submit a request to cluster 1166 when it initiates or completes a remirror to block storage server instance 1150C. 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 of volume A.

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

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

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

ブロック1215において、操作は、さらに、ブロックストレージサーバーアプリケーションを第1の仮想マシンで実行することを含む。ブロックストレージサーバーアプリケーションを実行する一部として、ブロック1220において、操作は、さらに、プロバイダネットワークのブロックストレージサービスからの第2の要求に応答して、プロビジョニングされたストレージデバイスに論理ボリュームを作成し、論理ボリュームを作成することを含む。例えば、プロバイダネットワークのブロックストレージサービスは、1つ以上のメッセージを送信して、他のインスタンスにアタッチできる(プロビジョニングされたストレージ容量を使用して)ボリュームを作成でき、その結果、インスタンスがブロックストレージインターフェースを介してボリュームにアクセスできる。 At block 1215, operations further include executing the block storage server application on the first virtual machine. As part of executing the block storage server application, at block 1220, the operation also creates a logical volume on the provisioned storage device in response to a second request from the block storage service of the provider network, 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 can use the block storage interface You can access the volume via

ブロックストレージサーバーアプリケーションを実行する一部として、ブロック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 operations are further performed by receiving a third request to perform an I/O operation on the logical volume and, at block 1230, on the requested logical volume. and performing input/output operations. For example, referring to FIG. 4, instance A 430 can 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. The block storage server instance 450 can receive the command (eg, via the BSS's IVN 452) and process it to block storage volume A 434. For example, referring to FIG. 5, Instance B 436 can 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. The block storage server instance 450 can receive the command (eg, via the BSS's IVN 452) and process it to block storage volume A 440.

図13は、少なくともいくつかの実施形態による、仮想化ブロックストレージサーバーを使用するための方法の動作を示すフロー図である。一部または全ての動作(もしくは本明細書で説明する他のプロセス、もしくは変形形態、及び/またはそれらの組合せ)は、実行可能命令で構成される1つ以上のコンピュータシステムの制御下で行われ、ハードウェアまたはその組合せにより1つ以上のプロセッサでまとめて実行するコード(例えば、実行可能命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装される。コードは、例えば、1つ以上のプロセッサによって実行可能な命令を含むコンピュータプログラムの形式で、コンピュータ可読ストレージ媒体に記憶される。コンピュータ可読ストレージ媒体は非一時的である。いくつかの実施形態では、1つ以上(または全て)の動作は、プロバイダネットワークの拡張機能の1つ以上のコンポーネントによって実行されるコンピュータプログラムまたはアプリケーションによって実行される。プロバイダネットワークの拡張機能は1つ以上の物理コンピューティングデバイスまたはシステムを含み、プロバイダネットワークのカスタマーの構内等、プロバイダネットワークのデータセンターからリモートに(例えば、データセンターネットワークの外側に)配置される。クラウドプロバイダネットワーク等のプロバイダネットワークは、プロバイダネットワークのデータセンター内に配置されるコンピュータシステムによって実行される様々なサービスを含む。拡張機能の1つ以上のコンポーネントは、プロバイダネットワークのコンピュータシステムによって実行されるサービスから管理操作等を受信することによって、プロバイダネットワークと通信する。いくつかの実施形態では、1つ以上(または全て)の操作は、他の図のホスト(例えば、ホスト420A)によって行われる。 FIG. 13 is a flow diagram illustrating operations 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 and/or combinations thereof described herein) may be performed under the control of one or more computer systems made up of executable instructions. , hardware or a combination thereof, implemented 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) operations are performed by a computer program or application executed by one or more components of the extension of the provider network. An extension of a provider network includes one or more physical computing devices or systems located remotely from the provider network's data center (eg, outside the data center network), such as on the premises of a customer of the provider network. A provider network, such as a cloud provider network, includes various services performed by computer systems located within the provider network's data center. One or more components of the extension communicate with the provider network by receiving management operations, etc. from services executed by computer systems of the provider network. In some embodiments, one or more (or all) 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, with 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 hosts a virtual machine (ie, block storage server instance 450). At block 1310, operations further include executing, with the computer system, a second virtual machine that can access the virtual block storage device. Host 420A also hosts another virtual machine (ie, instance 430). At block 1315, operations further include executing a block storage client with the computer system. Host 420A includes block storage client 460A, which can facilitate attachment of block storage devices to hosted virtual machines. As part of running the block storage client, at block 1320, the operation further includes receiving from the second virtual machine a first block storage operation to perform on the virtual block storage device and, at block 1325, sending a message to the virtual block storage device. sending to the first block storage server virtual machine 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 read, write, burst read, write, etc.) that block attached storage devices through a block storage client. Block storage clients, for example, can 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 operations 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 and/or combinations thereof described herein) may be performed under the control of one or more computer systems made up of executable instructions. , hardware or a combination thereof, implemented 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) operations are performed by a computer program or application executed by one or more components of the extension of the provider network. An extension of a provider network includes one or more physical computing devices or systems located remotely from the provider network's data center (eg, outside the data center network), such as on the premises of a customer of the provider network. A provider network, such as a cloud provider network, includes various services performed by computer systems located within the provider network's data center. One or more components of the extension communicate with the provider network by receiving management operations, etc. 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 receive a first request by a first block storage server instance to create a first storage volume to store a first portion of a first logical volume; At 1410, receiving a second request by a second block storage server instance to create a second storage volume to 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 the PSE 1188 component. In the example shown in FIG. 11, volume A is initially stored using block storage server instances 1150A and 1150C on hosts of PSE 1188. In the example shown in FIG.

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

ブロック1420において、操作は、さらに、第3のブロックストレージサーバーインスタンスによって、第1の論理ボリュームの第2の部を第3のストレージボリュームに記憶することを含む。ブロック1425において、操作は、さらに、第1の論理ボリュームの一部をホストする各ブロックストレージサーバーインスタンスの識別情報を含むデータストアを更新して、第2のブロックストレージサーバーインスタンスの識別情報を除去し、第3のブロックストレージサーバーインスタンスの識別情報を追加することを含む。インスタンスにわたってボリュームの移行を追跡するために、PSE1188は、ボリューム(もしあれば、レプリカ、サーバーにわたるストライピング等を含む)をマッピングするデータストアをホストできる。係るデータストアは、図10を参照して説明したようなクラスターであり得る。 At block 1420, the operations further include storing, by the third block storage server instance, the second portion of the first logical volume to the third storage volume. At block 1425, the operation further updates the datastore containing identification information for each block storage server instance that hosts a portion of the first logical volume to remove identification information for the second block storage server instance. , adding the identification information of the third block storage server instance. To track migration of volumes across instances, PSE 1188 can host a datastore that maps volumes (including replicas, striping across servers, etc., if any). Such data stores may be clusters 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 exemplary provider network (or “service provider system”) environment, according to at least some embodiments. Provider network 1500 may provide resource virtualization to customers via one or more virtualization services 1510, which allow customers to use one or more provider networks in one or more data centers or It allows purchasing, renting, or acquiring instances 1512 of virtualized resources (including but not limited to computing 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 resource instance 1512 of provider network 1500 . In some embodiments, provider network 1500 also includes a public IP address 1514 and/or public IP address ranges (e.g., Internet Protocol version 4 (IPv4) or Internet Protocol version 6 (IPv6)) that customers 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 allows customers of the service provider (eg, customers operating one or more client networks 1550A-1550C including one or more customer device(s) 1552) to , may enable dynamically associating at least some public IP addresses 1514 assigned or allocated to a customer with particular resource instances 1512 assigned to the customer. The 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 similarly 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, customers of the service provider, such as operators of customer network(s) 1550A-1550C, implement customer-specific applications, for example. , and may present the customer's application on an intermediate network 1540 such as the Internet. Other network entities 1520 in the intermediate network 1540 may then generate traffic to the destination public IP address 1514 published by the customer network(s) 1550A-1550C. The traffic is routed to the service provider data center, where it is routed through the network board to the local IP address 1516 of the virtualized computing resource instance 1512 currently mapped to the destination public IP address 1514 . Similarly, response traffic from virtualized computing resource instance 1512 may be routed through network board 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, a local IP address refers to the internal or "private" network address of a resource instance, eg, in a provider network. The local IP address may be in 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; May be changeable within the network. Network traffic originating outside the provider network is not routed directly to local IP addresses. Instead, traffic uses a public IP address that maps to the local IP address of the resource instance. The provider network may include network devices or appliances that provide network address translation (NAT) or similar functions to perform the mapping from 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 a public IP address is translated by, for example, a 1:1 NAT and forwarded to the local IP address of each resource instance.

いくつかのパブリックIPアドレスは、プロバイダネットワークインフラストラクチャによって特定のリソースインスタンスに割り当てられ得る。これらのパブリックIPアドレスは、標準パブリックIPアドレスまたは単なる標準IPアドレスと称され得る。いくつかの実施形態では、リソースインスタンスのローカルIPアドレスへの標準IPアドレスのマッピングは、全てのリソースインスタンスタイプのデフォルトの起動構成である。 Some public IP addresses may be assigned to specific resource instances by the provider network infrastructure. These public IP addresses may be referred to as standard public IP addresses or simply standard IP addresses. In some embodiments, the mapping of standard IP addresses to resource instance local IP addresses is the default launch 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 can then assign the assigned public IP address to the specific 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 resource instances 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, eg, via an API provided by the service provider. Unlike standard IP addresses, customer IP addresses are assigned to customer accounts and can be remapped to other resource instances by each customer as needed or desired. A customer IP address is associated with the customer's account, rather than a specific resource instance, and controls that IP address until the customer chooses to release that IP address. Unlike traditional static IP addresses, customer IP addresses allow customers to mask resource instance or Availability Zone failures by remapping the customer's public IP address to one of the resource instances associated with the customer's account. make it possible to For example, a customer IP address can be remapped to a replacement resource instance to work around a customer resource instance or software problem.

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

プロバイダネットワーク1600は、例えば、ローカルネットワーク1656を介して中間ネットワーク1640に結合されるカスタマーネットワーク1650に、中間ネットワーク1640及びプロバイダネットワーク1600に結合されるハードウェア仮想化サービス1620を介して仮想コンピューティングシステム1692を実装する能力を提供し得る。いくつかの実施形態では、ハードウェア仮想化サービス1620は、1つ以上のAPI1602、例えば、ウェブサービスインターフェースを提供し得、それを介して、カスタマーネットワーク1650は、例えば、コンソール1694(例えば、ウェブベースのアプリケーション、スタンドアロンのアプリケーション、モバイルアプリケーション等)を介して、ハードウェア仮想化サービス1620によって提供される機能にアクセスし得る。いくつかの実施形態では、プロバイダネットワーク1600において、カスタマーネットワーク1650における仮想コンピューティングシステム1692のそれぞれは、カスタマーネットワーク1650にリース、レンタル、またはそうでなければ提供される計算リソース1624に対応し得る。 Provider network 1600 connects, for example, customer network 1650 coupled to intermediate network 1640 via local network 1656 and virtual computing system 1692 via hardware virtualization service 1620 coupled to intermediate network 1640 and provider network 1600 . provide the ability to implement In some embodiments, hardware virtualization service 1620 may provide one or more APIs 1602, e.g., web service interfaces, through which customer network 1650, e.g., console 1694 (e.g., web-based applications, stand-alone applications, mobile applications, etc.) may access the functionality provided by the hardware virtualization service 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 functionality of storage service 1610, e.g., via one or more APIs 1602, Access data from and store data in storage resources 1618A-1618N of virtual datastores 1616 (eg, 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, which stores at least some data, e.g., frequently accessed or critical data, locally. , communicates with Storage Service 1610 over one or more of a number of communication channels, and may upload new or modified data from the local cache, resulting in a primary store of data (virtualized data store 1616) is maintained. In some embodiments, users can mount and mount volumes of virtual datastores 1616 via storage service 1610 acting as a storage virtualization service via virtual computing system 1692 and/or on another customer device 1690 . These volumes can be accessed and viewed as local (virtualized) storage 1698 to the user.

図16には示されていないが、仮想化サービス(複数可)は、また、API(複数可)1602を介してプロバイダネットワーク1600内のリソースインスタンスからアクセスされ得る。例えば、カスタマー、アプライアンスサービスプロバイダ、または他のエンティティは、API1602を介してプロバイダネットワーク1600における各々の仮想ネットワーク内から仮想化サービスにアクセスして、仮想ネットワーク内または別の仮想内の1つ以上のリソースインスタンスの割り付けを要求し得る。 Although not shown in FIG. 16, virtualization 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 a virtualized service 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 allocation of an instance.

図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つのコンピューティングデバイスまたは任意の数のコンピューティングデバイスを含み得る。 Figure 17 is a block diagram illustrating an exemplary computing device that may be used with at least some embodiments. In at least some embodiments, such computer systems include control plane components and/or data plane components, various virtualization components (virtual machine, container, etc.) and/or a server that implements one or more of the SEDs. Such computer systems may include general-purpose or special-purpose computer systems that include or are configured to access one or more computer-accessible media. In at least some embodiments, such computer systems can also be used to implement provider boards and/or components outside of provider board extensions (e.g., customer gateways/routers 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 via input/output (I/O) interface 1730 . Computing device 1700 also includes a network interface 1740 coupled to I/O interface 1730 . FIG. 17 illustrates computer system 1700 as a single computing device, and in various embodiments computer system 1700 is one computing device or computer configured to operate together as single computer system 1700. It may contain 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 including one processor 1710 or a multiprocessor system including several processors 1710 (eg, two, four, eight, or another suitable number). 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 may be an embedded processor. In a multiprocessor system, each of 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 accessible by processor(s) 1710 . In various embodiments, system memory 1720 is either random access memory (RAM), static RAM (SRAM), synchronous dynamic RAM (SDRAM), non-volatile/flash type memory, or any other type of memory, or the like. can be implemented using any suitable memory technology. In the illustrated embodiment, program instructions and data that implement 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. is shown.

一実施形態では、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 any of the peripheral devices including processor 1710, system memory 1720, and network interface 1740 or other peripheral interface. obtain. In some embodiments, I/O interface 1730 performs any necessary protocol, timing, or other data conversion to transfer data signals from one component (eg, system memory 1720) to another component. into a form suitable for use by (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. can include In some embodiments, the functionality of I/O interface 1730 may be split into two or more separate components, such as, for example, northbridge and 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 incorporated 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 attached to a network or networks 1750 (eg, other computer systems or devices such as those shown in FIG. 1). can be configured to allow In various embodiments, network interface 1740 may support communication over any suitable wired or wireless general data network, such as, for example, Ethernet network types. Additionally, network interface 1740 may be 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 of network. 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, computer system 1700 includes an I/O interface 1730 (eg, Peripheral Component Interconnect Express (PCI-E) standard or another such as QuickPath Interconnect (QPI) or UltraPath Interconnect (UPI)). one or more offload cards 1770 (including one or more processors 1775, and possibly one or more network interfaces 1740) connected using a bus implementing a version of the interconnect. For example, in some embodiments, computer system 1700 may act 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 the host electronic device. By way of example, in some embodiments, the offload card(s) 1770 may be used to suspend and/or unsuspend compute instances, launch and/or terminate compute instances, perform memory transfers/copies. Can execute instance management operations, etc. These management operations, in some embodiments, are executed by hypervisor computer system 1700 other processors 1710A-1710N in coordination with the hypervisor (eg, in response to a request from the hypervisor). may be performed by (s) 1770; However, in some embodiments, the virtualization manager implemented by the offload card(s) 1770 can serve requests from other entities (eg, from the compute instance itself) and any other It cannot cooperate with (or serve) a hypervisor. Referring to FIG. 2, in at least some embodiments, at least a portion of the functionality of PSE framework 202 and host manager 222 executes on one or more processors 1775 of offload card 1770, while 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 possibly via offload card(s) 1770 . For example, offload card(s) 1770 may include a system-on-chip (SoC) that includes multiple interconnect interfaces, bridging interface 1730 with an interface to SD 1780 (e.g., performing PCIe-to-PCIe bridging). ).

いくつかの実施形態では、システムメモリ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 DVD/CDs) that are coupled to computing device 1700 through I/O interface 1730; A memory medium may be included. 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), It can include any volatile or non-volatile media such as SDRAM, SRAM, etc.), read only memory (ROM), and the like. Additionally, computer-accessible media can include electrical, electromagnetic, or digital signals conveyed over a transmission medium or communication medium, such as a network and/or wireless link, such as can be implemented through network interface 1740. signal.

本明細書で説明または示唆されるような様々な実施形態は様々な動作環境で実装でき、動作環境は、場合によって、任意の数のアプリケーションを動作するために使用できる1つ以上のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含み得る。ユーザデバイスまたはクライアントデバイスは、標準オペレーティングシステムを起動するデスクトップコンピュータもしくはラップトップコンピュータ、ならびに、携帯電話向けソフトウェアを起動し、いくつかのネットワーキングプロトコル及びメッセージプロトコルをサポートすることが可能である、携帯デバイス、無線デバイス、及びハンドヘルドデバイス等のいくつかの汎用パーソナルコンピュータのいずれかを含み得る。係るシステムは、また、様々な市販のオペレーティングシステムのいずれかならびに開発及びデータベース管理等の目的のための他の既知のアプリケーションを起動するいくつかのワークステーションを含み得る。これらのデバイスは、また、ダミー端末、シンクライアント、ゲーム機、及びネットワークを介して通信することが可能である他のデバイス等の他の電子デバイスを含み得る。 Various embodiments as described or suggested herein can be implemented in various operating environments, which in some cases include one or more user computers that can be used to run any number of applications; It may include a computing device or processing device. User or client devices include desktop or laptop computers that run standard operating systems, as well as mobile devices that run software for mobile phones and are 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 a system 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, game 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 use 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), Extensible Messaging and Presence Protocol (XMPP), utilizes at least one network that will be familiar to those skilled in the art to support communications using any of a variety of commercially available protocols such as AppleTalk. The network(s) may be, for example, a local area network (LAN), a wide area network (WAN), a 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 utilizing a web server, the web server may include HTTP servers, file transfer protocol (FTP) servers, common gateway interface (CGI) servers, data servers, Java servers, business application servers, and the like. can start either a simple server or a middle-tier application. The server(s) may also be 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 programs or scripts in response to requests from user devices 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. Database servers can be relational or non-relational (eg, “NoSQL”), distributed or non-distributed, and the like.

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

また、係るデバイスは、上記に説明したようなコンピュータ可読ストレージ媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス等)、及びワーキングメモリを含み得る。コンピュータ可読ストレージ媒体リーダは、コンピュータ可読ストレージ媒体と接続でき、またはコンピュータ可読ストレージ媒体を受信するように構成され、リモートデバイス、ローカルデバイス、固定デバイス、及び/またはリムーバブルストレージデバイス、ならびにコンピュータ可読情報を一時的に及び/またはさらに永久的に含み、記憶し、伝送し、及び読み出すためのストレージ媒体を表す。また、システム及び様々なデバイスは、一般的に、いくつかのソフトウェアアプリケーション、モジュール、サービス、または少なくとも1つのワーキングメモリデバイス内に配置される他の要素を含み、クライアントアプリケーションまたはウェブブラウザ等のオペレーティングシステム及びアプリケーションプログラムを含む。代替の実施形態は、上記に説明したものからの多くの変形形態を有し得ることを理解されたい。例えば、カスタマイズされたハードウェアも使用され得、及び/または特定の要素は、ハードウェア、ソフトウェア(アプレット等のポータブルソフトウェアを含む)、もしくはこの両方において実装され得る。さらに、ネットワーク入出力デバイス等の他のコンピューティングデバイスへの接続が採用され得る。 Such devices may also include computer-readable storage medium readers, communication devices (eg, modems, network cards (wireless or wired), infrared communication devices, etc.), and working memories as described above. A computer-readable storage medium reader is connectable to or configured to receive a computer-readable storage medium and includes remote, local, fixed and/or removable storage devices and computer-readable information. Represents a storage medium for permanently and/or more permanently containing, storing, transmitting, and retrieving. Also, the system and various devices generally include some software application, module, service, or other element located within at least one working memory device, and may be used by an operating system, such as a client application or web browser. and application programs. It should be appreciated that alternate embodiments may have many variations from those described above. For example, customized hardware may also be used and/or particular 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 include, but are not limited to, storage media and communication media, such as volatile and nonvolatile media, removable and non-removable media, and are known in the art. It can include any suitable media known or used for storing and/or transmitting information such as computer readable instructions, data structures, program modules or other data. Any method or technology embodied in RAM, ROM, electrically erasable programmable read-only memory (“EEPROM”), flash memory, or other memory technology, compact disc read-only memory (“CD-ROM”), digital multimedia A disk (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, a person of ordinary skill in the art will appreciate other means and/or methods for implementing the various embodiments.

前述の説明では、様々な実施形態が説明される。説明の目的で、実施形態の徹底的な理解を提供するために特定の構成及び詳細が記載される。しかしながら、当業者には、実施形態がその具体的な詳細を伴わずに実践され得るということもまた明らかになる。さらに、周知の特性は、説明される実施形態を不明瞭にしないために、省略または簡略化され得る。 Various embodiments are described in the foregoing description. 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 one skilled in the art that the embodiments may be practiced without the specific details. Additionally, well-known features may be omitted or simplified so as not to obscure the described embodiments.

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

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

「一実施形態」、「ある実施形態」、「例示的な実施形態」等への言及は、説明される実施形態が、特定の特性、構造、または特徴を含み得るが、全ての実施形態が必ずしも特定の特性、構造、または特徴を含み得ないことを示す。さらに、係る語句は必ずしも同一の実施形態を指すわけではない。さらに、特定の特性、構造、または特徴が実施形態に関連して説明されるとき、明確に説明されているか否かにかかわらず、他の実施形態に関連して係る特性、構造、または特徴に影響を与えることは、当業者の知識の範囲内であると考えられる。 References to "one embodiment," "an embodiment," "exemplary embodiment," and the like are used, although the described embodiments may include specific features, structures, or features, but all embodiments may include Indicates that a particular property, structure, or characteristic may not necessarily be included. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or feature is described in connection with an embodiment, such feature, structure, or feature is described in connection with other embodiments, whether explicitly stated or not. Influencing 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つがそれぞれ存在することを必要とすることを含意することを意図しない、また理解するべきではない。 Further, in the various embodiments described above, unless otherwise noted, 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. Also should not be understood.

開示される技術の実施形態の少なくとも一部は以下の例を考慮して説明できる。
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 embodiments of the disclosed technology can be described in view 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 store a first storage using one or more storage devices of said first computer system. hosting the volume;
running a customer virtual machine with 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
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 secure virtual network using a key to encrypt and decrypt traffic sent over the virtual network.
3. Clause 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, by a computer system, a first block storage server virtual machine to host a first volume using one or more storage devices of said computer system;
running, with the computer system, a second virtual machine that can access a virtual block storage device;
executing a block storage client by the computer system;
Executing 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 secure virtual network using a key to encrypt and decrypt traffic sent over the virtual network.
6. 6. The computer implementation 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. The computer-implemented method of any one of clauses 4-6, executed by a processor.
8. Clauses 4-, wherein said first block storage server virtual machine is a first virtual machine hosted by said computer system and said second virtual machine is a second virtual machine hosted by said computer system; 8. The computer-implemented method of any one of clause 7.
9. further comprising executing, with said computer system, a second block storage server virtual machine to host a second volume using said one or more storage devices of said computer system; is a replica associated with the first volume.
10. The first block storage server virtual machine is run using a first physical component of the computer system and the second block storage server virtual machine is a second block storage server virtual machine of the computer system different from the first physical component. 10. The computer-implemented method of clause 9, performed using two physical components.
11. The first block storage operation is writing a block of data, 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. generating an encrypted block, the message sent to the first block storage server virtual machine includes the encrypted block of the data, and sending the encrypted block of the data to the first block storage server virtual machine; 11. The computer-implemented method of any one of clauses 4-10, causing the first volume to be written.
12. said computer system being included in an extension of a provider network, said extension of said provider network communicating with said provider network through at least a third party network;
12. The computer of any one of clauses 4-11, wherein 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. Implementation method.
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 capable of accessing a virtual block storage device, the first block storage server application executing said first one or more processors, sometimes including instructions to cause said first block storage server application to host a first volume using said one or more storage devices;
A first one or more processors of the host computer system executing a block storage client application, the block storage client application comprising instructions which, 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 that is secure by encrypting and decrypting traffic sent over the virtual network using a key.
15. Clause 15. The system of Clause 14, wherein a first virtual network address of said virtual network is associated with said first block storage server application and a second virtual network address of said virtual network is associated with said 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. 16. The system according to any one of clauses 13-15.
17. The first one or more processors of the host computer system further execute a second block storage server application which, when executed, causes the second block storage server to: Clause 13, comprising instructions to cause an application to use said one or more storage devices of said host computer system to host a second volume, said second volume being a replica associated with said first volume. The 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 on a second physical component of the computer system 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, at runtime, instructs the block storage client application to use an encryption key associated with the virtual block storage device. , the message sent to the first block storage server application includes instructions to cause the block of data to be encrypted and to generate an encrypted block of data, the message sent to the first block storage server application including the encrypted block of data; 19. The system of any one of clauses 13-18, wherein a block storage server application writes encrypted blocks of said data to said first volume.
20. said host computer system being included in an extension of a provider network, said extension of said provider network communicating with said provider network through 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:
receiving a first request to launch a first virtual machine at a host computer system of an extension of a provider network to host a block storage server application, the extension of the provider network comprising at least: 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;
running 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 the provider network block storage service to create a logical volume;
receiving a third request from a block storage client application over the virtual network to perform an input/output operation on the logical volume;
performing the requested I/O operation on the logical volume;
The computer-implemented method.
22. Before executing the block storage server application on the first virtual machine, the method further comprises:
running another application in the first virtual machine to load a boot volume from a machine image obtained from a datastore of the provider network into a boot volume, the boot volume being the provisioned storage; said loading being another logical volume of the device;
modifying the first virtual machine to boot from the boot volume;
restarting the first virtual machine;
22. The computer-implemented method of Clause 21, comprising:
23. Before executing 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 a first request to launch a first virtual machine by a computer system of an extension of a provider network to host a block storage server application, the extension of the provider network comprising at least a third 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;
running 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 the provider network block storage service to create a logical volume;
receiving a third request to perform an I/O operation on the logical volume;
performing the requested I/O operation on the logical volume;
The computer-implemented method.
25. Before executing the block storage server application on the first virtual machine, the method further comprises:
running another application in the first virtual machine and loading a boot volume from a machine image obtained from a datastore of the provider network, the boot volume being another of the provisioned storage devices; said loading, which is a 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 prior to executing the block storage server application.
27. Before executing 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 a unified extensible firmware interface of the first virtual machine.
29. the third request is received from a block storage client application via 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 in the second virtual machine;
30. 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 to a second virtual machine as another provisioned storage device;
running another block storage server application in said second virtual machine, said first virtual machine being run using a first physical component of said 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 logical volume on the logical volume writes the block of data to the logical volume. wherein 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 comprises writing to the block address of the 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 said provider network.
33. one or more storage devices of a host computer system of extensions of a provider network, wherein said extensions of said provider network communicate with said provider network through 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 which, 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 comprising instructions, the instructions, when executed, causing the block storage server application to:
creating the logical volume on the provisioned storage device in response to a second request from the provider network block storage service to create a logical volume;
receiving a third request to perform an I/O operation on the logical volume;
performing the requested I/O operation on the logical volume;
system, including
34. The host manager application includes further instructions that, when executed, before executing the block storage server application in the first virtual machine, cause the host manager application to:
running another application in the first virtual machine and loading a boot volume from a machine image obtained from a datastore of the provider network, the boot volume being another of the provisioned storage devices; said loading, which is a logical volume of
modifying the first virtual machine to boot from the boot volume;
restarting the first virtual machine;
34. The system of Clause 33, which causes the
35. 35. The method of clause 34, wherein the host manager application, when executed, includes further instructions that cause the host manager application to clear memory of the first virtual machine before executing the block storage server application. system.
36. Components of the first virtual machine, at run time, cause the component to copy the boot volume of the first virtual machine to the first virtual machine before executing the block storage server application in the first virtual machine. comprising instructions to load from a machine image stored by a block storage device, wherein said boot volume is another logical volume of said provisioned storage device and said first block storage device is a virtual block storage device. 34. The system according to 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 a unified extensible firmware interface of the first virtual machine.
38. the third request is received from a block storage client application via 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, when executed, 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 to a second virtual machine as another provisioned storage device;
running another block storage server application in the second virtual machine, the first virtual machine running using a first physical component of the computer system, the second virtual machine said performing performed using a second physical component of said computer system different from said first physical component;
39. The system according to any one of clauses 33-38, which causes the
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 logical volume on the logical volume writes the block of data to the logical volume. wherein 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 comprises writing to the block address of the 40. The system of clause 39, comprising one or more physical computing devices located outside a data center of a provider network and on customer premises 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, said first request creating a first storage volume and said first logical volume; said receiving, storing a first portion of
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 first logical volume of the first logical volume. storing the part of 2;
determining that the second block storage server instance is not responding;
sending a third request to a third block storage server instance to create a third storage volume to store said second portion of said first logical volume;
storing, by the third block storage server instance, the second portion of the first logical volume in the third storage volume;
updating a datastore containing identification information for each block storage server instance that hosts a portion of the first logical volume to remove identification information for the second block storage server instance and the third block storage 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 in extensions of the provider network and The computer-implemented method, wherein the extension communicates with the provider network through at least a third party network.
42. receiving, by a block storage client, from the datastore the identification of each block storage server instance hosting a portion of the first logical volume;
establishing a connection by the block storage client to at least one block storage server instance included in the identification;
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; When,
sending, by the block storage client, a message over the connection to the at least one block storage server instance to instruct the at least one block storage server instance to transfer the block of data to the block of the first storage volume; to write to an 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 for responses of the first block storage server instance and the second block storage server instance.
44. A computer-implemented method comprising:
receiving, by the first block storage server instance, the first request to create a first storage volume and store a first portion of the first logical volume;
receiving, by a second block storage server instance, a second request to create a second storage volume to store a second portion of the first logical volume;
sending a third request to a third block storage server instance to create a third storage volume to store said second portion of said first logical volume;
storing, by the third block storage server instance, the second portion of the first logical volume in the third storage volume;
updating a datastore containing identification information for each block storage server instance that hosts a portion of the first logical volume to remove identification information for the second block storage server instance and the third block storage adding identification information for the server instance;
The computer-implemented method, comprising:
45. receiving, by a block storage client, from the datastore the identification of each block storage server instance hosting a portion of the first logical volume;
establishing a connection by the block storage client to at least one block storage server instance included in the identification;
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; When,
sending, by the block storage client, a message over the connection to the at least one block storage server instance to instruct the at least one block storage server instance to transfer the block of data to the block of the first storage volume; to write to an 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 including multiple nodes that independently run a consensus protocol to update the identity.
47. 47. The computer-implemented method of clause 46, further comprising obtaining, by the block storage client, identification information 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 runs within a container hosted by the first block storage server instance.
49. 49. The computer-implemented method of clause 48, further comprising, by said block storage client, broadcasting a request for identification information of any of said plurality of nodes to a plurality of block storage server instances.
50. polling for responses of the first block storage server instance and the second block storage server instance, wherein the third request is responsive to a determination that the second block storage server instance does not respond 49. The computer-implemented method of any one of Clauses 44-49, transmitted as a
51. Clauses 44-50, wherein the first storage volume is striped across multiple block storage server instances, each of the multiple 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 in extensions 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. A computer-implemented method as described in .
53. one or more computing devices in extensions of a provider network, said extensions of said provider network communicating with said provider network over at least a third party network, said one or more computing devices The device comprises instructions which, when executed on one or more processors, cause the one or more computing devices to:
receiving, by the first block storage server instance, the first request to create a first storage volume and store a first portion of the first logical volume;
receiving, by a second block storage server instance, a second request to create a second storage volume to store a second portion of the first logical volume;
sending a third request to a third block storage server instance to create a third storage volume to store said second portion of said first logical volume;
storing, by the third block storage server instance, the second portion of the first logical volume in the third storage volume;
updating a datastore containing identification information for each block storage server instance that hosts a portion of the first logical volume to remove identification information for the second block storage server instance and the third block storage adding identification information for the server instance;
system, including
54. The one or more computing devices comprise further instructions which, when executed on the one or more processors, cause the one or more computing devices to:
receiving, by a block storage client, from the datastore the identification of each block storage server instance hosting a portion of the first logical volume;
establishing a connection by the block storage client to at least one block storage server instance included in the identification;
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; When,
sending, by the block storage client, a message over the connection to the at least one block storage server instance to instruct the at least one block storage server instance to transfer the block of data to the block of the first storage volume; to write to an address; and
54. The system of Clause 53, causing the
55. 55. The system of clause 54, wherein the data store is a distributed data store including multiple nodes that independently run a consensus protocol to update the identity.
56. The one or more computing devices obtain identification information of each node of the plurality of nodes from a service by the block storage client to the one or more computing devices when executing on the one or more processors. 56. The system of clause 55, including further instructions to cause the
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 of the plurality of nodes. to the plurality of block storage server instances.
59. The one or more computing devices, when executed on the one or more processors, provide the one or more computing devices with responses of the first block storage server instance and the second block storage server instance. 59. The system of any one of clauses 53-58, comprising further instructions to poll, wherein said third request is sent in response to determining that said second block storage server instance does not respond.
60. 60. The system of any one of clauses 53-59, wherein the first storage volume is striped across multiple block storage server instances, each of the multiple block storage server instances being included in the identification information.

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

Claims (15)

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

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2024019232A JP2024073416A (en) 2019-06-28 2024-02-13 Virtualized block storage servers in cloud provider infrastructure extensions

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
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,853 2019-06-28
US16/457,850 2019-06-28
US16/457,856 2019-06-28
US16/457,856 US10949125B2 (en) 2019-06-28 2019-06-28 Virtualized block storage servers in cloud provider substrate extension
US16/457,850 US10949124B2 (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

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2024019232A Division JP2024073416A (en) 2019-06-28 2024-02-13 Virtualized block storage servers in cloud provider infrastructure extensions

Publications (2)

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

Family

ID=71950729

Family Applications (2)

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
JP2024019232A Pending JP2024073416A (en) 2019-06-28 2024-02-13 Virtualized block storage servers in cloud provider infrastructure extensions

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2024019232A Pending JP2024073416A (en) 2019-06-28 2024-02-13 Virtualized block storage servers in cloud provider infrastructure extensions

Country Status (5)

Country Link
EP (1) EP3987387A1 (en)
JP (2) JP7440195B2 (en)
KR (1) KR20220011186A (en)
CN (1) 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 (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013097147A1 (en) * 2011-12-29 2013-07-04 华为技术有限公司 Cloud computing system and method for managing storage resources therein
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
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
WO2020263578A1 (en) 2020-12-30
CN114008593B (en) 2023-03-24
EP3987387A1 (en) 2022-04-27
CN116010035A (en) 2023-04-25
CN114008593A (en) 2022-02-01
JP2024073416A (en) 2024-05-29
KR20220011186A (en) 2022-01-27
JP7440195B2 (en) 2024-02-28

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
KR102540776B1 (en) address migration service
US11431497B1 (en) Storage expansion devices for provider network substrate extensions
US11659058B2 (en) Provider network connectivity management for provider network substrate extensions
US11159344B1 (en) Connectivity of cloud edge locations to communications service provider networks
US10462009B1 (en) Replicating customers' information technology (IT) infrastructures at service provider networks
US11323477B1 (en) Establishing secure connections to instances in private subnets of a cloud provider network
US11283708B1 (en) Dedicating network paths between computing resources in a cloud provider network
US11411771B1 (en) Networking in provider network substrate extensions
CN114026826B (en) Provider network connection management for provider network underlying extensions
US11374789B2 (en) Provider network connectivity to provider network substrate extensions
US11662928B1 (en) Snapshot management across cloud provider network extension security boundaries
JP7440195B2 (en) Virtualized block storage server in cloud provider board expansion
US11363113B1 (en) Dynamic micro-region formation for service provider network independent edge locations
CN116010035B (en) Virtualized block storage server in cloud provider underlying extensions
CN113330435A (en) Tracking contaminated connection proxies
US11934667B1 (en) Encrypted-data-only media operations
JP7212158B2 (en) Provider network service extension
US11778025B1 (en) Cross-region directory service
US11050618B1 (en) Replication of domain controller settings
US20240036988A1 (en) Disaster recovery pipeline for block storage and dependent applications
Rivero de la Cruz High available GNU/Linux systems

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