# US 12,602,287 B2 · Storage system utilizing independent erasure codes

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

- Number: US 12,602,287 B2
- Document ID: US12602287B2
- Status: Granted
- Kind: B2
- Application number: 18/771,920
- Filed: 2024-07-12
- Published: 2024-11-07
- Granted: 2026-04-14
- Earliest claimed: 2014-06-04
- Assignees: Everpure, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: John Hayes; John Colgrove; Robert Lee; Igor Ostrovsky; Joshua Robinson
- Web page: https://patentgrep.com/patent/US12602287B2

## CPC

- 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/1088: {Reconstruction on already foreseen single or plurality of spare disks}
- G06F 11/1096: {Parity calculation or recalculation after configuration or reconfiguration of the system}
- G06F 11/1415: {at system level}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for proactively rebuilding user data in a plurality of storage nodes of a storage cluster is provided. The method includes distributing user data and metadata throughout the plurality of storage nodes such that the plurality of storage nodes can read the user data, using erasure coding, despite loss of two of the storage nodes. The method includes determining that one of the storage nodes is unreachable and determining to rebuild the user data for the one of the storage nodes that is unreachable. The method includes reading the user data across a remainder of the plurality of storage nodes, using the erasure coding and writing the user data across the remainder of the plurality of storage nodes, using the erasure coding. A plurality of storage nodes within a single chassis that can proactively rebuild the user data stored within the storage nodes is also provided.

## Claims

### Claim 1

A storage system, comprising:
a plurality of storage nodes configured to communicate together as a storage cluster, the plurality of storage nodes having nonvolatile solid-state memory for data storage;
the plurality of storage nodes configured to distribute the data throughout the plurality of storage nodes using erasure coding; and
the plurality of storage nodes configured to rebuild data striped across a first set of the plurality of storage nodes from data striped across a second set of the plurality of storage nodes, wherein the data striped across the second set of the plurality of storage nodes is written according to a first erasure coding scheme and the rebuilt data is striped across the first set of the plurality of storage nodes according to a second erasure coding scheme.

### Claim 2 (depends on 1)

The storage system of claim 1, wherein the data is rebuilt independent of a request from outside the storage cluster to read the data.

### Claim 3 (depends on 1)

The storage system of claim 1, further comprising:
each of the plurality of storage nodes configured to emit a heartbeat, the heartbeat comprising a periodically issued message; and
each of the plurality of storage nodes configured to detect the heartbeat of another of the plurality of storage nodes.

### Claim 4 (depends on 1)

The storage system of claim 1, wherein one of the plurality of storage nodes comprises non-volatile solid state memory having uniform and non-uniform capacities.

### Claim 5 (depends on 1)

The storage system of claim 1, wherein:
the data is striped across the first set of the plurality of storage nodes according to a RAID level, and the data is rebuilt by reading and recovering the data from the first set of the plurality of storage nodes according to the RAID level.

### Claim 6 (depends on 1)

The storage system of claim 1, further comprising:
each of the plurality of storage nodes configured to consult others of the plurality of storage nodes to determine the second erasure coding scheme.

### Claim 7 (depends on 1)

The storage cluster of claim 1, further comprising:
each of the plurality of storage nodes configured to determine to which storage nodes to write the rebuilt data.

### Claim 8

A tangible, non-transitory, computer-readable media having instructions thereupon which, when executed by a processor, cause the processor to perform a method comprising:
distributing data throughout a plurality of storage nodes using erasure coding;
determining to rebuild the data; and
rebuilding the data striped across a first set of the plurality of storage nodes from data striped across a second set of the plurality of storage nodes, wherein the data striped across the second set of the plurality of storage nodes is written according to a first erasure coding scheme and the rebuilt data is striped across the first set of the plurality of storage nodes according to a second erasure coding scheme.

### Claim 9 (depends on 8)

The computer-readable media of claim 8, wherein the plurality of storge nodes includes flash memory.

### Claim 10 (depends on 8)

The computer-readable media of claim 8, wherein the data includes metadata and one of the plurality of storage nodes includes non-volatile solid state memory having uniform and non-uniform capacities.

### Claim 11 (depends on 8)

The computer-readable media of claim 8, further comprising:
determining that one of the plurality of storage nodes is unreachable based on one of a lack of a heartbeat of the storage node, a lack of a response to a query of the storage node, or a timeout of the storage node.

### Claim 12 (depends on 8)

The computer-readable media of claim 8, further comprising:
the plurality of storage nodes configured to initiate user data recovery based on lack of a heartbeat of the one of the plurality of storage nodes that is unreachable.

### Claim 13 (depends on 8)

The computer-readable media of claim 8, wherein determining to rebuild the data is initiated independent of an attempt to read the data.

### Claim 14 (depends on 8)

The computer-readable media of claim 8, further comprising:
reassigning, to one of the remainder of the plurality of storage nodes, entities owned by an unreachable storage node, wherein the entities include units of data.

### Claim 15

A method, comprising:
distributing data throughout a plurality of storage nodes using erasure coding;
determining to rebuild the data; and
rebuilding the data striped across a first set of the plurality of storage nodes from data striped across a second set of the plurality of storage nodes, wherein the data striped across the second set of the plurality of storage nodes is written according to a first erasure coding scheme and the rebuilt data is striped across the first set of the plurality of storage nodes according to a second erasure coding scheme.

### Claim 16 (depends on 15)

The method of claim 15, wherein the data includes metadata and one of the plurality of storage nodes includes non-volatile solid state memory having uniform and non-uniform capacities.

### Claim 17 (depends on 15)

The method of claim 15, further comprising:
determining that one of the plurality of storage nodes is unreachable based on one of a lack of a heartbeat of the storage node, a lack of a response to a query of the storage node, or a timeout of the storage node.

### Claim 18 (depends on 15)

The method of claim 15, wherein determining to rebuild the data is independent of a request from outside the storage cluster to read the data.

### Claim 19 (depends on 15)

The method of claim 15, wherein the first erasure coding scheme is different than the second erasure coding scheme.

### Claim 20 (depends on 15)

The method of claim 15, further comprising:
reassigning, to one of the remainder of the plurality of storage nodes, entities owned by an unreachable storage node, wherein the entities include units of data.
