# US 10,372,561 B1 · Block storage relocation on failure

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

- Number: US 10,372,561 B1
- Document ID: US10372561B1
- Status: Granted
- Kind: B1
- Application number: 15/620,478
- Filed: 2017-06-12
- Granted: 2019-08-06
- Earliest claimed: 2017-06-12
- Assignees: Amazon Technologies, Inc.
- Applicants: Amazon Technologies, Inc.
- Inventors: Danny Wei; Shiow-wen Wendy Cheng
- Web page: https://patentgrep.com/patent/US10372561B1

## CPC

- G06F 3/0611: {in relation to response time}
- G06F 11/1662: {the resynchronized component or unit being a persistent storage device (re-synchronization of failed mirror storage G06F11/2082; rebuild or reconstruction of parity RAID storage G06F11/1008)}
- G06F 3/0616: {in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 11/1088: {Reconstruction on already foreseen single or plurality of spare disks}
- G06F 11/2092: {Techniques of failing over between control units}
- G06F 12/1009: using page tables, e.g. page table structures
- G06F 12/1072: Decentralised address translation, e.g. in distributed shared memory systems
- G06F 2201/805: Real-time
- G06F 2201/82: Solving problems relating to consistency
- G06F 2201/85: Active fault masking without idle spares
- G06F 2212/1032: Reliability improvement, data loss prevention, degraded operation etc
- G06F 2212/154: Networked environment
- G06F 2212/651: Multi-level translation tables
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A failure of a storage device used to provide a mirrored storage volume can be managed without a full re-mirroring of the volume. The volume can be provided using a set of similar storage devices on each of a master server and a slave server, and a technique such as data striping can be used to store the data for the volume across the various devices. When a storage device becomes unavailable, the data from the corresponding storage device on the other mirrored server can be written to the remaining storage devices on the server experiencing the device failure. The data interface can be virtualized such that the user can continue to send input and output (I/O) requests using the same address information. A translation layer can map the virtualized addresses to the physical addresses where the data is stored.

## Claims

### Claim 1

A computer-implemented method, comprising:
writing a master copy of a data volume to a first set of storage devices of a master server, the data volume being striped across the first set of storage devices using a redundant array of inexpensive disks (RAID) configuration;
writing a slave copy of the data volume to a second set of storage devices of a slave server, the slave copy being a redundant with respect to the master copy;
detecting an availability issue with a problem device of the first set of storage devices on the master server;
causing first data from the slave copy, corresponding to a subset of the data volume previously stored on the problem device, to be written across remaining devices of the first set of storage devices on the master server;
remapping a set of entries in a translation table for the first data written across the remaining devices, the entries in the translation table including virtual block addresses from the first data on the problem device and physical addresses on the remaining devices where the first data is stored;
receiving a request for access to data previously stored on the problem device, the request specifying a virtual block address;
consulting the translation table to determine the physical address for the virtual block address of the request; and
providing access to the first data using the physical block address.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, further comprising:
placing an address range lock on at least a subset of the first data corresponding to the problem device until the first data is written back to the remaining devices on the first set of storage devices on the master server.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, further comprising:
detecting an availability issue with a second device of the second set of storage devices on the slave server;
causing second data from the master copy, corresponding to a portion of the second data previously stored on the second device, to be written across remaining devices of the second set of storage devices on the slave server; and
remapping a set of entries in a translation table for the second data written across the remaining devices on the slave server, the entries in the translation table including a virtual block address from the second data on the second device and a physical address on one of the remaining devices where the second data is stored.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, wherein the RAID configuration is a RAID-0 configuration.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, further comprising:
using the entries in the translation table to enable a relocation of at least a portion of the first data across the remaining set of storage devices while retaining the virtual block addresses for relocated data.

### Claim 6

A computer-implemented method, comprising:
generating a redundant data volume, the redundant data volume including a first copy of a full set of data written across a first set of storage devices and a second copy of the full set data written across a second set of storage devices;
detecting an availability issue with a problem storage device of the first set of storage devices;
causing first data, associated with the problem storage device, to be written from the second set of storage devices to an available subset of storage devices of the first set, so that the full set of data is available on first set of storage devices; and
mapping, in a translation table, entries for the first data written from the second set of storage devices to the available subset of storage devices, the entries including virtual block addresses for the first data previously located on the problem storage device and physical addresses where the first data is stored on the available storage devices, wherein the first data is accessible from the first set of storage devices using the virtual block addresses.

### Claim 7 (depends on 6)

The computer-implemented method of claim 6, further comprising:
writing the first copy of the full set of data to the first set of storage devices as a master copy on a master server, locations of the full set of data on the master server being determined using a data placement algorithm; and
writing the second copy of the full set of data to the second set of storage devices as a slave copy on a slave server, locations of the full set of data on the slave server corresponding to the locations on the master server.

### Claim 8 (depends on 7)

The computer-implemented method of claim 7, wherein the data placement algorithm corresponds to a RAID-0 methodology, and wherein the locations are data stripe locations selected in order across the first set of storage devices.

### Claim 9 (depends on 7)

The computer-implemented method of claim 7, further comprising:
receiving an access request for a subset of the full set the data, the access request specifying a virtual block address;
consulting the translation table to determine the corresponding physical address for the subset of data; and
providing the access to the subset of data at the corresponding physical address, wherein the request can specify the virtual block address independent of the actual physical address where the subset of data is currently stored.

### Claim 10 (depends on 6)

The computer-implemented method of claim 6, further comprising:
writing the first copy of the full set of data to the first set of storage devices as a slave copy on a slave server, locations of the full set of data on the slave server corresponding to locations of the full set of data on the second set of storage devices operating on a master server, wherein access operations are performed with respect to the master server and copies of the full set of data for the access operations are written to the available storage devices on the slave server.

### Claim 11 (depends on 6)

The computer-implemented method of claim 6, wherein the first set of storage devices storage devices include at least one of solid state devices, magnetic disk devices, magnetic tape devices, or optical storage devices.

### Claim 12 (depends on 6)

The computer-implemented method of claim 6, wherein the redundant data volume is associated with a customer of a resource provider, the first set of storage devices and the second set of storage devices corresponding to network-based block storage resources provided by the resource provider as part of a multi-tenant resource environment, and wherein the first set of storage devices and second set of storage devices are each capable of supporting storage volumes for multiple customers.

### Claim 13 (depends on 6)

The computer-implemented method of claim 6, further comprising:
determining that the available subset of storage devices of the first set lack sufficient capacity to store the first data from the problem storage device and maintain a minimum amount of available capacity; and
causing a new set of storage devices to be allocated to store the first copy of the full set of data.

### Claim 14 (depends on 6)

The computer-implemented method of claim 6, further comprising:
placing an address range lock on at least a subset of the first data corresponding to the problem storage device until the first data is written back to the available storage devices of the first set of storage devices.

### Claim 15

A system, comprising:
at least one processor; and
memory including instructions that, when executed by the at least one processor, cause the system to:
generate a redundant data volume, the redundant data volume including a first copy of a full set of data written across a first set of storage devices and a second copy of the full set of data written across a second set of storage devices;
detect an availability issue with a problem storage device of the first set of storage devices;
cause first data, corresponding to the problem storage device, to be written from the second set of storage devices to an available subset of storage devices of the first set, so that the full set of data is available on the first set of storage devices has a full set of data for the redundant data volume; and
generate, in a translation table, entries for the first data written from the corresponding storage device to the available subset of storage devices, the entries including virtual block addresses for the first data previously located on the problem storage device and physical addresses where the first data is stored on the available storage devices, wherein the first data is accessible from the first set of storage devices using the virtual block addresses.

### Claim 16 (depends on 15)

The system of claim 15, wherein the instructions when executed further cause the system to:
write the first copy of the full set of data to the first set of storage devices as a master copy on a master server, locations of the full set of data on the master server being determined using a data placement algorithm; and
write the second copy of the full set of data to the second set of storage devices as a slave copy on a slave server, locations of the full set of data on the slave server corresponding to the locations on the master server.

### Claim 17 (depends on 15)

The system of claim 15, wherein the instructions when executed further cause the system to:
receive an access request for a subset of the full set of data, the access request specifying a virtual block address;
consult the translation table to determine the corresponding physical address for the subset of data; and
provide the access to the subset of data at the corresponding physical address, wherein the request can specify the virtual block address independent of the actual physical address where the subset of data is currently stored.

### Claim 18 (depends on 15)

The system of claim 15, wherein the instructions when executed further cause the system to:
write the first copy of the full set of data to the first set of storage devices as a slave copy on a slave server, locations of the full set of data on the slave server being corresponding to locations of the full set of data on the second set of storage devices operating on a master server, wherein access operations are performed with respect to the master server and copies of the full set of data for the access operations are written to the available storage devices on the slave server.

### Claim 19 (depends on 15)

The system of claim 15, wherein the instructions when executed further cause the system to:
place an address range lock on at least a subset of the first data corresponding to the problem storage device until the first data is written back to the available storage devices of the first set of storage devices.

### Claim 20 (depends on 15)

The system of claim 15, wherein the data placement algorithm corresponds to a RAID-0 methodology, and wherein the locations are data stripe locations selected in order across the first set of storage device.
