# US 2021/0240560 A1 · Block-storage service supporting multi-attach and health check failover mechanism

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2021/0240560 A1
- Document ID: US20210240560A1
- Status: Published application
- Kind: A1
- Application number: 17/239,440
- Filed: 2021-04-23
- Published: 2021-08-05
- Earliest claimed: 2019-09-04
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Fan Ping; Andrew Boyer; Oleksandr Chychykalo; James Pinkerton; Danny Wei; Norbert Paul Kusters; Divya Ashok Kumar Jain; Jianhua Fan; Thomas Tarak Mathew Veppumthara; Sebastiano Peluso
- Web page: https://patentgrep.com/patent/US20210240560A1

## CPC

- G06F 11/0751: {Error or fault detection not based on redundancy (power supply failures G06F1/30; network fault management H04L41/06)}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 11/0709: {in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems}
- G06F 11/0712: {in a virtual computing platform, e.g. logically partitioned systems}
- G06F 11/0757: {by exceeding a time limit, i.e. time-out, e.g. watchdogs}
- G06F 11/0793: {Remedial or corrective actions (recovery from an exception in an instruction pipeline G06F9/3861; by retry G06F11/1402; for recovering from a failure of a protocol instance or entity H04L69/40)}
- G06F 11/1451: {by selection of backup contents}
- G06F 11/2023: {Failover techniques}
- G06F 11/2058: {using more than 2 mirrored copies}
- G06F 11/2097: {maintaining the standby controller/processing unit updated (initialisation or re-synchronisation thereof G06F11/1658 and subgroups)}
- G06F 11/1456: {Hardware arrangements for backup}
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06F 2201/82: Solving problems relating to consistency
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A block-based storage system hosts logical volumes that are implemented via multiple replicas of volume data stored on multiple resource hosts in different failure domains. Also, the block-based storage service allows multiple client computing devices to attach to a same given logical volume at the same time. In order to prevent unnecessary failovers, a primary node storing a primary replica is configured with a health check application programmatic interface (API) and a secondary node storing a secondary replica determines whether or not to initiate a failover based on the health of the primary replica.

## Claims

### Claim at position 1

-22. (canceled)

### Claim 23

A system, comprising:
one or more computing devices configured to implement a block storage system, wherein the block storage system is configured to:
host a plurality of volumes;
enable at least one of the volumes to be attached to multiple virtual machines, wherein the volume appears as a locally attached storage device to each of the multiple virtual machines;
receive a write request from a first one of the virtual machines attached to the volume and commit a write included in the write request to the volume, wherein the multiple virtual machines remain attached to the volume while receiving and committing the write; and
receive a second write request from a different one of the virtual machines attached to the volume and commit another write included in the second write request to the volume, wherein the multiple virtual machines remain attached to the volume while receiving and committing the other write.

### Claim 24 (depends on 23)

The system of claim 23, wherein the block storage system is configured to:
receive a read request from the first one of the virtual machines attached to the volume and perform a requested read from the volume while the multiple virtual machines remain attached to the volume; and
receive a second read request from a different one of the virtual machines attached to the volume and perform another requested read from the volume while the multiple virtual machines remain attached to the volume.

### Claim 25 (depends on 23)

The system of claim 23, further comprising:
network-accessible computing resources configured to implement a cloud provider network,
wherein the one or more computing devices configured to implement the block storage system are included in the cloud provider network.

### Claim 26 (depends on 25)

The system of claim 25, further comprising:
one or more computing devices configured to implement a virtual compute service,
wherein the one or more computing devices configured to implement the virtual compute service are included in the cloud provider network, and
wherein the multiple virtual machines attached to the volume are compute instances provided by the virtual compute service of the cloud provider network.

### Claim 27 (depends on 25)

The system of claim 25, wherein the one or more computing devices configured to implement the block storage system comprise:
a first set of computing devices in a first availability zone of the cloud provider network;
a second set of computing devices in a second availability zone of the cloud provider network; and
a third set of computing devices in a third availability zone of the cloud provider network,
wherein the block storage system is configured to store three replicas of blocks of the volume in the three availability zones of the cloud provider network.

### Claim 28 (depends on 27)

The system of claim 27, wherein the first, second, and third sets of computing devices comprise solid-state drives that store replicated data for the volume in each of the three availability zones.

### Claim 29 (depends on 27)

The system of claim 27, wherein the block storage system is configured to synchronously update the three replicas prior to committing the write from the first virtual machine or synchronously updated the three replicas prior to committing the other write from the second virtual machine, wherein the multiple virtual machines remain attached to the volume while committing the writes.

### Claim 30

One or more non-transitory, computer-readable, media storing program instructions, that when executed on or across one or more processors, cause the one or more processors to:
attach multiple virtual machines to a volume hosted by a block-storage service, wherein the volume appears as a locally attached storage device to each of the multiple virtual machines;
commit, in the volume, a write received from a first one of the virtual machines while the volume remains attached to the multiple virtual machines; and
commit, in the volume, a write received from a second one of the virtual machines while the volume remains attached to the multiple virtual machines.

### Claim 31 (depends on 30)

The one or more, non-transitory, computer-readable, media of claim 30, wherein the program instruction, when executed on or across the one or more processors, cause the one or more processors to:
authorize a membership group for the volume; and
verify, for a given one of the writes received from the first or second virtual machine, that a current sequence number for the membership group stored by a computing device of the block-storage system receiving the given write has not been superseded at other computing devices of the membership group prior to committing the given write.

### Claim 32 (depends on 31)

The one or more, non-transitory, computer-readable, media of claim 31, wherein to commit the write received from the first virtual machine or to commit the write received from the second virtual machine, the program instruction, when executed on or across the one or more processors, cause the one or more processors to:
cause the write to be stored in a persistent storage of a first computing device of the block storage system; and
cause replicas of the write to be stored in persistent storages of at least two other computing devices of the block storage system.

### Claim 33 (depends on 32)

The one or more, non-transitory, computer-readable, media of claim 32, wherein to verify that the first virtual machine or the second virtual machine is a current member of the membership group for the volume the program instructions, when executed on or across the one or more processors, cause the one or more processors to:
verify that a sequence number included with the given write is equal to or greater than a sequence number stored by the first computing device;
compare the sequence number included with the write to sequence numbers stored by at least two other computing devices of the block-storage service hosting replicas of the volume; and
decline to commit the write in response to the first computing device or at least one of the at least two other computing devices indicating a current sequence number stored for the volume is greater than the sequence number included with the given write.

### Claim 34 (depends on 32)

The one or more, non-transitory, computer-readable, media of claim 32, wherein the program instructions, when executed on or across the one or more processors, cause the one or more processors to:
receive a read request from the first one of the virtual machines attached to the volume and perform a requested read from the volume while the multiple virtual machines remain attached to the volume; and
receive a second read request from a different one of the virtual machines attached to the volume and perform another requested read from the volume while the multiple virtual machines remain attached to the volume.

### Claim 35 (depends on 34)

The one or more, non-transitory, computer-readable, media of claim 34, wherein to perform the read received from the first virtual machine or to perform the read received from the second virtual machine the program instructions, when executed on or across the one or more processors, cause the one or more processors to:
compare a sequence number stored for the volume by a first computing device of the block-storage service receiving the request from the first or second virtual machines to sequence numbers for the volume stored by other computing devices of the block-storage service storing replicas of the volume; and
decline to perform the read in response to at least one of the other computing devices storing a sequence number for the given volume greater than the sequence number stored by the first computing device receiving the read request.

### Claim 36 (depends on 30)

The one or more, non-transitory, computer-readable, media of claim 30, wherein the program instructions, when executed on or across the one or more processors, cause the one or more processors to:
send, in response to receiving a failover request from the first or second virtual machine, a health check to other computing devices of the block storage system storing replicas of the volume; and
determining, based on a result of the health check, whether to initiate a transition for a secondary replica of the volume to assume a role of primary replica for the volume.

### Claim 37

A method, comprising:
attaching multiple virtual machines to a volume of a block-storage service, wherein the volume appears as a locally attached storage device to each of the multiple virtual machines;
committing a write received from a first one of the virtual machines in the volume while the volume remains attached to the multiple virtual machines; and
committing a write received from a second one of the virtual machines in the volume while the volume remains attached to the multiple virtual machines.

### Claim 38 (depends on 37)

The method of claim 37, wherein:
the block storage system is implemented in a cloud provider network; and
the first and second virtual machines are compute instances of a virtualized computing service implemented in the cloud provider network.

### Claim 39 (depends on 37)

The method of claim 37, further comprising:
authorizing a membership group for the volume; and
verify, for a given one of the writes received from the first or second virtual machine, that a current sequence number for the membership group stored by a computing device of the block-storage system receiving the given write has not been superseded at other computing devices of the membership group prior to committing the given write.

### Claim 40 (depends on 39)

The method of claim 39, further comprising:
verifying that a sequence number included with the given write is equal to or greater than a current sequence number for the volume stored by a computing device receiving the write request from the first or second virtual machine;
comparing the sequence number included with the write to sequence numbers stored by at least two other computing devices of the block-storage system storing replicas of the volume; and
declining to commit the write in response to the first computing device or one of the at least two other computing devices storing a sequence number for the volume greater than the sequence number included with the given write.

### Claim 41 (depends on 37)

The method of claim 37, further comprising:
receiving a read request from the first one of the virtual machines attached to the volume and performing a requested read from the volume while the multiple virtual machines remain attached to the volume; and
receiving a second read request from a different one of the virtual machines attached to the volume and performing another requested read from the volume while the multiple virtual machines remain attached to the volume.

### Claim 42 (depends on 41)

The method of claim 41, further comprising:
comparing, in response to receiving the read request, a sequence number of a first computing device of the block storage that received the read request to sequence numbers stored by other computing devices of the block-storage service that store replicas of the volume; and
declining to perform the read in response to at least one of the other computing devices storing a sequence number for the volume that is greater than the sequence number stored by the first computing device receiving the read request.
