# US 12,008,266 B2 · Efficient read by reconstruction

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

- Number: US 12,008,266 B2
- Document ID: US12008266B2
- Status: Granted
- Kind: B2
- Application number: 17/724,149
- Filed: 2022-04-19
- Published: 2022-11-10
- Granted: 2024-06-11
- Earliest claimed: 2010-09-15
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Vincent Wang; Mark Fay; Jun He; Renjie Fan; John Colgrove
- Web page: https://patentgrep.com/patent/US12008266B2

## CPC

- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0611: {in relation to response time}
- G06F 3/0613: {in relation to throughput}
- G06F 3/0629: {Configuration or reconfiguration of storage systems}
- G06F 3/0634: {by changing the state or mode of one or more devices}
- G06F 3/0649: {Lifecycle management}
- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 3/0655: {Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 11/0727: {in a storage system, e.g. in a DASD or network based storage system (drivers for digital recording or reproducing units G06F3/06; circuits for error detection or correction within digital recording or reproducing units G11B20/18; for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS], H04L67/1097)}
- G06F 11/0751: {Error or fault detection not based on redundancy (power supply failures G06F1/30; network fault management H04L41/06)}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 11/108: {Parity data distribution in semiconductor storages, e.g. in SSD}
- G06F 11/2094: {Redundant storage or storage space (G06F11/2056 takes precedence)}
- G06F 11/3409: {for performance assessment}
- G06F 11/3419: {by assessing time}
- G06F 11/3485: {for I/O devices}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 12/0804: with main memory updating (G06F12/0806 takes precedence)
- G06F 12/0866: for peripheral storage systems, e.g. disk cache
- G06F 21/78: to assure secure storage of data (address-based protection against unauthorised use of memory G06F12/14; record carriers for use with machines and with at least a part designed to carry digital markings G06K19/00)
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 11/1446: Point-in-time backing up or restoration of persistent data
- G06F 11/2089: {Redundant storage control functionality}
- G06F 11/3034: {where the computing system component is a storage system, e.g. DASD based or network based (digital input from or digital output to record carriers G06F3/06; digital recording or reproducing G11B20/18; for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS], H04L67/1097)}
- G06F 11/3055: {Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available (error or fault processing without redundancy G06F11/0703; error detection or correction by redundancy in data representation G06F11/08; error detection or correction of the data by redundancy in operations G06F11/14; error detection or correction by redundancy in hardware G06F11/16)}
- G06F 12/0868: Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
- G06F 21/64: Protecting data integrity, e.g. using checksums, certificates or signatures
- G06F 2201/81: Threshold
- G06F 2201/885: Monitoring specific for caches
- G06F 2212/1024: Latency reduction
- G06F 2212/1032: Reliability improvement, data loss prevention, degraded operation etc
- G06F 2212/214: Solid state disk
- G06F 2212/262: configured as RAID
- G06F 2212/502: using adaptive policy
- G06F 2212/7208: Multiple device management, e.g. distributing data over multiple flash devices
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for efficient reads by reconstruction may determining an expected read latency for reading data from a primary read location of a plurality of storage devices, determining an expected reconstruction latency for reconstructing the data using reconstruction data, wherein portions of the reconstruction data are stored at a plurality of alternative read locations of the plurality of storage devices, reading the portions of the reconstruction data from the plurality of alternative read locations of the plurality of storage devices, and reconstructing the data stored at the primary read location using the reconstruction data, wherein the expected reconstruction latency is lower than the expected read latency.

## Claims

### Claim 1

A storage system comprising:
a plurality of storage devices; and
a storage controller operatively coupled to the storage devices, the storage controller comprising a processing device, the processing device configured to implement steps comprising:
determining an expected read latency for reading data from a primary read location of the plurality of storage devices;
determining an expected reconstruction latency for reconstructing the data using reconstruction data, wherein portions of the reconstruction data are stored at a plurality of alternative read locations of the plurality of storage devices;
reading the portions of the reconstruction data from the plurality of alternative read locations of the plurality of storage devices; and
reconstructing the data stored at the primary read location using the reconstruction data, wherein the expected reconstruction latency is lower than the expected read latency.

### Claim 2 (depends on 1)

The storage system of claim 1 further comprising determining that the expected reconstruction latency is lower than the expected read latency by a set threshold.

### Claim 3 (depends on 1)

The storage system of claim 1 wherein a read location comprises a die of a storage device.

### Claim 4 (depends on 1)

The storage system of claim 1 wherein the expected reconstruction latency is determined based on at least one of a die queue depth, a drive queue depth, or a device profile for the each of the plurality of alternative read locations and the expected read latency is determined based on at least one of a die queue depth, a drive queue depth, or a latency profile for the primary read location.

### Claim 5 (depends on 1)

The storage system of claim 1 wherein the processing device is further configured to implement steps comprising:
determining a second expected read latency for reading second data from a primary read location for the second data of the plurality of storage devices;
determining a second expected reconstruction latency for reconstructing the second data using reconstruction data stored at a plurality of alternative read locations for the second data of the plurality of storage devices;
determining that at least one storage device of the plurality of storage devices will reach a resource limit during read by reconstruction, wherein the second expected reconstruction latency is lower than the second expected read latency; and
reading the second data from the primary read location of the second data.

### Claim 6 (depends on 5)

The storage system of claim 5 wherein determining that at least one storage device of the plurality of storage devices will reach a resource limit during read by reconstruction comprises determining that at least one drive of the plurality of storage devices has a quantity of active dies that exceeds a threshold.

### Claim 7 (depends on 5)

The storage system of claim 5 wherein determining that at least one storage device of the plurality of storage devices will reach a resource limit during read by reconstruction comprises determining that at least one die of the plurality of storage devices will exceed a power consumption limit.

### Claim 8

A method of efficient reads by reconstruction, comprising:
determining an expected read latency for reading data from a primary read location of a plurality of storage devices;
determining an expected reconstruction latency for reconstructing the data using reconstruction data, wherein portions of the reconstruction data are stored at a plurality of alternative read locations of the plurality of storage devices;
reading the portions of the reconstruction data from the plurality of alternative read locations of the plurality of storage devices; and
reconstructing the data stored at the primary read location using the reconstruction data, wherein the expected reconstruction latency is lower than the expected read latency.

### Claim 9 (depends on 8)

The method of claim 8 wherein the expected reconstruction latency is lower than the expected read latency by a set threshold.

### Claim 10 (depends on 8)

The method of claim 8 wherein a read location comprises a die of a storage device.

### Claim 11 (depends on 8)

The method of claim 8, wherein the expected reconstruction latency is determined based on at least one of a die queue depth, a drive queue depth, or a device profile for the each of the plurality of alternative read locations and the expected read latency is determined based on at least one of a die queue depth, a drive queue depth, or a latency profile for the primary read location.

### Claim 12 (depends on 8)

The method of claim 8, further comprising:
determining a second expected read latency for reading second data from a primary read location for the second data of the plurality of storage devices;
determining a second expected reconstruction latency for reconstructing the second data using reconstruction data stored at a plurality of alternative read locations for the second data of the plurality of storage devices;
determining that at least one storage device of the plurality of storage devices will reach a resource limit during read by reconstruction, wherein the second expected reconstruction latency is lower than the second expected read latency; and
reading the second data from the primary read location of the second data.

### Claim 13 (depends on 12)

The method of claim 12 wherein determining that at least one storage device of the plurality of storage devices will reach a resource limit during read by reconstruction comprises determining that at least one drive of the plurality of storage devices has a quantity of active dies that exceeds a threshold.

### Claim 14 (depends on 12)

The method of claim 12 wherein determining that at least one storage device of the plurality of storage devices will reach a resource limit during read by reconstruction comprises determining that at least one die of the plurality of storage devices will exceed a power consumption limit.

### Claim 15

A non-transitory computer readable storage medium storing instructions, which when executed, cause a processing device of a storage controller to implement steps comprising:
determining an expected read latency for reading data from a primary read location of a plurality of storage devices;
determining an expected reconstruction latency for reconstructing the data using second reconstruction data, wherein portions of the second reconstruction data are stored at a plurality of alternative read locations of the plurality of storage devices;
reading the portions of the reconstruction data from the plurality of alternative read locations of the plurality of storage devices; and
reconstructing the data stored at the primary read location using the reconstruction data, wherein the expected reconstruction latency is lower than the expected read latency.

### Claim 16 (depends on 15)

The non-transitory computer readable storage medium of claim 15, wherein a read location comprises a die of a storage device.

### Claim 17 (depends on 15)

The non-transitory computer readable storage medium of claim 15 wherein the expected reconstruction latency is determined based on at least one of a die queue depth, a drive queue depth, or a device profile for the each of the plurality of alternative read locations and the expected read latency is determined based on at least one of a die queue depth, a drive queue depth, or a latency profile for the primary read location.

### Claim 18 (depends on 17)

The non-transitory computer readable storage medium of claim 17 wherein determining that at least one storage device of the plurality of storage devices will reach a resource limit during read by reconstruction comprises determining that at least one Drive of the plurality of storage devices has a quantity of active dies that exceeds a threshold.

### Claim 19 (depends on 17)

The non-transitory computer readable storage medium of claim 17 wherein determining that at least one storage device of the plurality of storage devices will reach a resource limit during read by reconstruction comprises determining that at least one die of the plurality of storage devices will exceed a power consumption limit.

### Claim 20 (depends on 15)

The non-transitory computer readable storage medium of claim 15 wherein the instructions further cause the processing device of the storage controller to implement steps comprising:
determining a second expected read latency for reading second data from a primary read location for the second data of the plurality of storage devices;
determining a second expected reconstruction latency for reconstructing the second data using reconstruction data stored at a plurality of alternative read locations for the second data of the plurality of storage devices;
determining that at least one storage device of the plurality of storage devices will reach a resource limit during read by reconstruction, wherein the second expected reconstruction latency is lower than the second expected read latency; and
reading the second data from the primary read location of the second data.
