IP Library Granted Patent US 11,272,005
Granted Patent B1
US 11,272,005 · App. 16/141,867 · Granted Mar 8, 2022

Communicating state information in a distributed storage environment

Inventors: Avram Israel Blaszka (Seattle, WA); Pieter Kristian Brouwer (Bellevue, WA); Marc Stephen Olson (Bellevue, WA)
Assignee: Amazon Technologies, Inc.
H04L67/1097G06F3/067G06F3/0619G06F3/0653G06F3/0664
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,272,005
App. No.
16/141,867
Granted
Mar 8, 2022
Kind
B1
Abstract

Techniques are described for using in-band communication channels to exchange state information between components of a distributed storage environment, including between client computing devices and storage servers hosting network-connected block storage volumes. The exchange of the state information can be used, for example, to inform client computing devices of relevant events involving one or more storage volumes attached to compute instances (for example, virtual machines (VMs)) running on the client computing devices, involving one or more failover servers storing backup copies of one or more storage volumes, or involving any other relevant system components. The exchange of such state information in a distributed storage environment enables client computing devices, storage servers, and other system components to act efficiently in response to a variety of system events thereby mitigating input/output (I/O) latency increases and other issues that can arise when system components lack access to such information.

Claims (57)

1. A computer-implemented method performed by a storage server in a distributed storage environment, the method comprising:

establishing a network connection with a client computing device, the network connection used by a client compute instance running on the client computing device to perform input/output (I/O) operations on a block storage volume hosted by the storage server;

receiving, from the client computing device, an event notification request message;

determining that the storage server is to perform an update causing the storage server to become temporarily unavailable to the client compute instance; and

sending, via the network connection, an event notification message to the client computing device indicating that the storage server is to perform a software update causing the storage server to become temporarily unavailable to the client computing instance and instructing the client computing device to failover to a failover storage server, wherein the event notification message is sent as a response to the event notification request message, and wherein the failover storage server hosts a copy of the block storage volume.

2. The computer-implemented method of claim 1 , wherein the failover storage server is a first failover storage server hosting a first copy of the block storage volume, wherein the event notification message is a first event notification message, wherein establishing the network connection with the client computing device includes sending an identifier of the first failover storage server, and wherein the method further comprises:

sending a second event notification message indicating that the first failover storage server is unavailable; and

sending a third event notification message including an identifier of a second failover storage server hosting a second copy of the block storage volume.

3. The computer-implemented method of claim 1 , further comprising:

determining that the storage server is to become temporarily unavailable to a plurality of client compute instances including the client compute instance, wherein each client compute instance of the plurality of client compute instances has an attached block storage volume hosted by the storage server; and

sending the event notification message to each client compute instance of the plurality of client compute instances.

4. A computer-implemented method comprising:

establishing, by a storage server, a network connection with a client computing device, wherein the network connection is used by the client computing device to perform input/output (I/O) operations on a storage volume hosted by the storage server;

receiving, from the client computing device, an event notification request message;

obtaining, by the storage server and based on communications with a failover server hosting a copy of the storage volume, information indicating an event related to the storage volume, wherein the event is associated with an event type from a plurality of event types supported by a protocol used by the client computing device and the storage server; and

sending, by the storage server hosting the storage volume and via the network connection between the storage server and the client computing device, an event notification message indicating the event to the client computing device, wherein the event notification message is sent as a response to the event notification request message.

5. The computer-implemented method of claim 4 , wherein the event notification message is a first event notification message, and wherein the method further comprises:

determining that the storage server is to perform a software update and become temporarily unavailable to the client computing device; and

sending, via the network connection, a second event notification message indicating that the storage server is to perform the software update and become temporarily unavailable, wherein the second event notification message instructs the client computing device to failover to a failover storage server hosting a copy of the storage volume.

6. The computer-implemented method of claim 4 , further comprising:

determining that the event is related to a plurality of storage volumes hosted by the storage server, wherein each of the plurality of storage volumes is associated with one of a plurality of client compute instances hosted by one or more client computing devices including the client computing device; and

sending a respective event notification message to each client compute instance of the plurality of client compute instances.

7. The computer-implemented method of claim 4 , wherein the event corresponds to a failover storage server becoming unavailable or being added, and wherein the event notification message includes an identifier of the failover storage server.

8. The computer-implemented method of claim 4 , wherein the event notification message indicates that the storage server supports the protocol.

9. The computer-implemented method of claim 4 , further comprising:

receiving, from the client computing device, a plurality of event notification request messages including the event notification request message;

storing at least one of the plurality of event notification request messages in a queue; and

sending the event notification message as a response to the event notification request message of the plurality of event notification request messages in the queue.

10. The computer-implemented method of claim 4 , further comprising:

obtaining information indicating a plurality of events related to the storage volume;

merging the plurality of events related to the storage volume into a single event; and

sending the event notification message to the client computing device based on the single event.

11. The computer-implemented method of claim 4 , wherein the storage server is managed by a storage service of a service provider network, and wherein the client computing device is managed by a hardware virtualization service of the service provider network.

12. The computer-implemented method of claim 4 , wherein the event includes a determination that the failover server has more of the storage volume stored locally than the storage server, and wherein the event notification message instructs the client computing device to failover to the failover server.

13. The computer-implemented method of claim 4 , wherein the event includes a determination that the storage server is exhibiting degraded performance, and wherein the event notification message instructs the client computing device to failover to the failover server.

14. A system comprising:

a client computing device including instructions that upon execution cause the client computing device to:

establish a network connection with a storage server, wherein the network connection is used by the client computing device to perform input/output (I/O) operations relative to a storage volume hosted by the storage server,

send, via the network connection, an event notification request message to the storage server, and

receive, via the network connection, an event notification message from the storage server instructing the client computing device to failover to a failover storage server hosting a copy of the storage volume; and

the storage server implemented by a second one or more electronic devices, the storage server including instructions that upon execution cause the storage server to:

receive, from the client computing device, the event notification request message,

obtain, based on communications with a failover server hosting a copy of the storage volume, information indicating an event related to the storage volume, wherein the event is associated with an event type from a plurality of event types supported by a protocol used by the client computing device and the storage server,

send, via the network connection, the event notification message to the client computing device, wherein the event notification message is sent as a response to the event notification request message.

15. The system of claim 14 , wherein the event notification message is a first event notification message, and wherein the storage server includes further instructions that upon execution cause the storage server to:

determine that the storage server is to perform a software update and become temporarily unavailable; and

send, via the network connection, a second event notification message indicating that the storage server is to perform the software update and become temporarily unavailable, wherein the second event notification message instructs the client computing device to failover to the failover storage server hosting the copy of the storage volume.

16. The system of claim 14 , wherein the event corresponds to a failover storage server becoming unavailable or being added, and wherein the event notification message includes an identifier of the failover storage server.

17. The system of claim 14 , wherein the event notification message indicates that the storage server supports the protocol.

18. The system of claim 14 , wherein the storage server further includes instructions that upon execution cause the storage server to:

receive, from the client computing device, a plurality of event notification request messages;

store at least one of the plurality of event notification request messages in a queue; and

send the event notification message as a response to an event notification request message of the plurality of event notification request messages in the queue.

19. The system of claim 14 , wherein the storage server further includes instructions that upon execution cause the storage server to:

obtain information indicating a plurality of events related to the storage volume;

merge the plurality of events related to the storage volume into a single event; and

send an event notification message to the client computing device based on the single event.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 13, 2018
From: BLASZKA, AVRAM ISRAEL; BROUWER, PIETER KRISTIAN; OLSON, MARC STEPHEN
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 047768/0850 →
Cited By (3)
US 12,353,434 US 12,537,869 US 12,596,608