# US 10,481,979 B2 · Storage system, computing system, and methods thereof

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

- Number: US 10,481,979 B2
- Document ID: US10481979B2
- Status: Granted
- Kind: B2
- Application number: 15/718,031
- Filed: 2017-09-28
- Published: 2019-03-28
- Granted: 2019-11-19
- Earliest claimed: 2017-09-28
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Marcin Pioch; Kapil Karkra; Piotr Wysocki; Slawomir Ptak
- Web page: https://patentgrep.com/patent/US10481979B2

## CPC

- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- G11C 29/52: Protection of memory contents; Detection of errors in memory contents
- G11C 29/74: {using duplex memories, i.e. using dual copies}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11C: STATIC STORES (semiconductor memory devices H10B)

## Abstract

According to various aspects, a storage system is provided, the storage system including a multiplicity of storage devices, and one or more processors configured to store user data on the multiplicity of storage devices, the stored user data being distributed among the multiplicity of storage devices together with redundancy data and with log data; generate a classification associated with the redundancy data and the log data to provide classified redundancy data and classified log data, and write the classified redundancy data and the classified log data on the respective storage device of the multiplicity of storage devices according to the classification associated therewith.

## Claims

### Claim 1

A storage system, comprising:
one or more processors configured to
divide at least three storage devices into strips,
provide a plurality of stripes, each stripe of the plurality of stripes comprising at least three strips,
receive user data,
distribute the user data along the plurality of stripes together with parity data associated with the user data such that each stripe of the plurality of stripes comprises at least two data strips and at least one parity strip associated with the at least two data strips, and
write the user data and the parity data to each storage device of the at least three storage devices based on a first data stream directed to a first storage region of a respective storage device of the at least three storage devices and a second data stream directed to a second storage region of the respective storage device of the at least three storage devices,
wherein the second storage region is different from the first storage region,
the first data stream comprising the parity data, and
the second data stream comprising the user data.

### Claim 2 (depends on 1)

The storage system of claim 1,
the at least two data strips comprising user data and the at least one parity strip comprising parity data.

### Claim 3 (depends on 2)

The storage system of claim 2,
wherein the one or more processors are further configured to
write log data associated with the writing of the user data and the parity data to the at least three storage devices.

### Claim 4 (depends on 3)

The storage system of claim 3,
the log data comprising write hole protection data.

### Claim 5 (depends on 3)

The storage system of claim 3,
wherein the one or more processors are configured to distribute the log data across the at least three storage devices.

### Claim 6 (depends on 3)

The storage system of claim 3,
wherein the one or more processors are further configured to
write the log data to each storage device of the at least three storage devices based on a third data stream directed to a third storage region of the respective storage device of the at least three storage devices,
the third storage region is different from the first storage region and the second storage region.

### Claim 7 (depends on 1)

The storage system of claim 1,
the first data stream being substantially free of the user data.

### Claim 8 (depends on 1)

The storage system of claim 1,
the second data stream being substantially free of the parity data.

### Claim 9 (depends on 1)

The storage system of claim 1,
wherein each storage device of the at least three storage devices has a first granularity associated with writing data and a second granularity greater than the first granularity associated with updating or deleting data.

### Claim 10 (depends on 1)

The storage system of claim 1,
wherein each storage device of the at least three storage devices comprises a solid state drive.

### Claim 11 (depends on 1)

The storage system of claim 1,
wherein the one or more processors are configured to
write the user data and the parity data respectively with a corresponding write block size, and
erase the user data and the parity data respectively with a corresponding erase block size, the erase block size being greater than the write block size.

### Claim 12

A method for operating a storage system, the method comprising:
operating a multiplicity of storage devices as a redundant array of independent drives,
receiving user data and storing the received user data on the multiplicity of storage in a striping configuration,
calculating parity data corresponding to the received user data,
generating a parity classification associated at least with the parity data corresponding to a physical data placement of the parity data and the user data on each of the multiplicity of storage devices according to the parity classification, and
writing the parity data to each storage device of the multiplicity of storage devices via a first stream and writing the user data to each of the multiplicity of storage devices via a second stream according to the parity classification.

### Claim 13

A method for operating a storage system, the method comprising:
operating a multiplicity of storage devices as a redundant array of independent drives,
receiving user data and storing the received user data on the multiplicity of storage in a striping configuration,
calculating parity data corresponding to the received user data,
generating a parity classification associated at least with the parity data corresponding to a physical data placement of the parity data and the user data on each of the multiplicity of storage devices according to the parity classification,
providing log data associated with the received user data and the generated parity data,
generating a log classification associated at least with the log data corresponding to a physical data placement of the log data on each of the multiplicity of storage devices according to the log data classification,
writing the parity data to each of the multiplicity of storage devices via a first stream and writing the user data to each of the multiplicity of storage devices via a second stream according to the parity classification, and
writing the log data to each of the multiplicity of storage devices via the first data stream or a third stream.
