# US 10,503,597 B2 · Symbol-level declustering of raid stripes to isolate data corruption

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

- Number: US 10,503,597 B2
- Document ID: US10503597B2
- Status: Granted
- Kind: B2
- Application number: 15/711,186
- Filed: 2017-09-21
- Published: 2019-03-21
- Granted: 2019-12-10
- Earliest claimed: 2017-09-21
- Assignees: Seagate Technology LLC
- Applicants: Seagate Technology LLC
- Inventors: Eugene Taranta
- Web page: https://patentgrep.com/patent/US10503597B2

## CPC

- G06F 11/1088: {Reconstruction on already foreseen single or plurality of spare disks}
- G06F 3/0611: {in relation to response time}
- G06F 3/064: {Management of blocks}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 16/13: File access structures, e.g. distributed indices (arrangements of input from, or output to, record carriers G06F3/06)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Data targeted for storage into a drive array is divided into codewords with data and parity symbols. The symbols of the codewords are randomly distributed across a stripe of the drive array. One or more drives affected by data corruption are found based on a probability that a subset of inconsistent codewords intersects the one or more drives.

## Claims

### Claim 1

A method, comprising:
dividing data targeted for storage on a drive array into codewords, each of the codewords having a first set of data symbols and a second set of parity symbols, the symbols having a size less than a sector size of the drive array;
randomly distributing the symbols of the codewords across a stripe of the drive array such that no two symbols from the same codeword map to the same drive;
determining an inconsistent set of the codewords due to data corruption of one or more sectors of the drive array;
determining, for each drive of the drive array, a probability that a subset of the inconsistent set stored on the drive is due to the drive failing, the determination of each probability involving:
identifying a disjoint codeword subset that comprises codewords that only intersect the drive and not any other drives that store inconsistent codewords;
counting corruptions in the pairwise disjoint codeword subsets; and
determining the probability based on a ratio of the corruptions verses the subset size; and
determining one or more drives affected by data corruption based on the probabilities.

### Claim 2 (depends on 1)

The method of claim 1, wherein the stripe comprises a plurality of chunks each associated with a particular drive of the drive array, wherein a size of each chunk corresponds to a smallest capacity that allows the stripe to store an integral number of sectors and codewords.

### Claim 3 (depends on 1)

The method of claim 1, wherein the parity symbols provide single redundancy.

### Claim 4 (depends on 1)

The method of claim 1, wherein each sector of the stripe includes a random collection of both the data symbols and the parity symbols.

### Claim 5 (depends on 1)

The method of claim 1, wherein determining the one or more drives affected by data corruption based on the probabilities comprises selecting a maximum hypothesis whose probability exceeds that of other hypotheses by a rejection threshold δ.

### Claim 6 (depends on 1)

The method of claim 1, wherein the size of the symbols is one byte.

### Claim 7

A system comprising:
an array of data storage drives;
a controller coupled to the array of data storage drives and configured to perform:
dividing data targeted for the array into codewords, each of the codewords having a first set of data symbols and a second set of parity symbols, each sector of the array storing a plurality of symbols;
randomly distributing the symbols of the codewords across a stripe of the array such that no two symbols from the same codeword map to the same drive;
determining an inconsistent set of the codewords due to data corruption of one or more sectors of the drive array;
determining, for each drive of the array, a probability that a subset of the inconsistent set stored on the drive is due to the drive failing, the determination of each probability involving:
identifying a disjoint codeword subset that comprises codewords that only intersect the drive and not any other drives that store inconsistent codewords;
counting corruptions in the pairwise disjoint codeword subsets; and
determining the probability based on a ratio of the corruptions verses the subset size; and
determining one or more drives affected by data corruption based on the probabilities.

### Claim 8 (depends on 7)

The system of claim 7, wherein the stripe comprises a plurality of chunks each associated with a particular drive of the drive array, wherein a size of each chunk corresponds to a smallest capacity that allows the stripe to store an integral number of sectors and codewords.

### Claim 9 (depends on 7)

The system of claim 7, wherein the parity symbols provide single redundancy.

### Claim 10 (depends on 7)

The system of claim 7, wherein each sector of the stripe includes a random collection of both the data symbols and the parity symbols.

### Claim 11 (depends on 7)

The system of claim 7, wherein determining the one or more drives affected by data corruption based on the probabilities comprises selecting a maximum hypothesis whose probability exceeds that of other hypotheses by a rejection threshold δ.

### Claim 12 (depends on 7)

The system of claim 7, wherein the size of the symbols is one byte.

### Claim 13

A method comprising:
dividing an array of drives into stripes;
for each stripe, declustering individual symbols of codewords across the stripe, the symbols comprising a first set of data symbols and a second set of parity symbols, each sector of the stripe storing a random collection of both the data symbols and the parity symbols;
determining an inconsistent set of the codewords due to data corruption of one or more sectors of the drive array;
determining a plurality of hypotheses that symbol corruptions are due to failures on a respective subsets of the drives, the determination of each hypothesis involving, for each drive in the subset:
identifying a disjoint codeword subset that comprises codewords that only intersect the drive and not any other drives that store inconsistent codewords;
counting corruptions in the pairwise disjoint codeword subsets; and
determining the probability based on a ratio of the corruptions verses the subset size;
determining a maximum hypothesis whose probability exceeds that of other hypotheses by a rejection threshold; and
performing mitigation on the subset of drives identified associated with the maximum hypotheses.

### Claim 14 (depends on 13)

The method of claim 13, wherein the subset of the drives is limited to three or fewer drives to reduce a number of the hypotheses.

### Claim 15 (depends on 13)

The method of claim 13, wherein each stripe comprises a plurality of chunks each associated with a particular drive of the drive array, wherein a size of each chunk corresponds to a smallest capacity that allows the stripe to store an integral number of sectors and codewords.

### Claim 16 (depends on 13)

The method of claim 13, wherein the parity symbols provide single redundancy.

### Claim 17 (depends on 13)

The method of claim 13, wherein a size of the symbols is one byte.
