# US 10,503,590 B2 · Storage array comprising a host-offloaded storage function

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

- Number: US 10,503,590 B2
- Document ID: US10503590B2
- Status: Granted
- Kind: B2
- Application number: 15/710,881
- Filed: 2017-09-21
- Published: 2019-03-21
- Granted: 2019-12-10
- Earliest claimed: 2017-09-21
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Ioannis Koltsidas; Nikolas Ioannou; Robert Haas; Charalampos Pozidis; Thomas D. Weigold; Thomas P. Parnell
- Web page: https://patentgrep.com/patent/US10503590B2

## CPC

- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0613: {in relation to throughput}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/0658: {Controller construction arrangements}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The invention relates to a storage system comprising one or more storage controllers, two or more storage devices and two or more storage clients, the storage controllers, the storage devices and the storage clients being coupled via a network in order to exchange information between the storage controllers, said storage devices and said storage clients, wherein each storage client is adapted to provide data-path-storage commands to the storage devices via the network bypassing the storage controllers, wherein the storage system is adapted to provide data redundancy using a data redundancy scheme higher than RAID 1.

## Claims

### Claim 1

A storage system comprising:
one or more storage controllers communicatively connected to a network, wherein the one or more storage controllers implement the control path functions to perform operations in the control path;
two or more storage devices communicatively connected to the network; and
two or more storage clients communicatively connected to the network;
wherein information flows between the storage controllers, the two or more storage devices, the two or more storage clients, and the network, wherein the two or more storage clients are adapted to provide data-path-storage commands toward the two or more storage devices through the network bypassing the two or more storage controllers, and wherein the storage system is adapted to provide data redundancy using a data redundancy scheme higher than RAID 1.

### Claim 2 (depends on 1)

The storage system of claim 1, wherein the storage controller further comprises a data redundancy engine for implementing the data redundancy scheme, and wherein the data redundancy engine further comprises a RAID engine implementing a RAID 5 redundancy scheme or a RAID 6 data redundancy scheme.

### Claim 3 (depends on 1)

The storage system of claim 1, wherein data-path-storage commands referring to a read operation are directly provided from the storage client to the storage device whereas data-path-storage commands referring to a write operation are provided from the storage client to the storage device via the storage controller in order to implement the data redundancy scheme to data to be written into the storage.

### Claim 4 (depends on 2)

The storage system of claim 2, wherein the data redundancy engine further comprises hardware portion for calculating an erasure code.

### Claim 5 (depends on 2)

The storage system of claim 2, wherein the data redundancy engine further comprises hardware portion adapted to calculate parity information for implementing the RAID 5 redundancy or the RAID 6 data redundancy scheme.

### Claim 6 (depends on 1)

The storage system of claim 1, wherein data-path-storage commands referring to a read operation are directly provided from the storage client to the storage device, and data-path-storage commands referring to a write operation are provided from the storage client to the storage device from the storage controller.

### Claim 7 (depends on 1)

The storage system of claim 1, wherein the storage clients comprise a data redundancy engine for implementing the data redundancy scheme.

### Claim 8 (depends on 7)

The storage system of claim 7, wherein the data redundancy engine of the storage clients comprises a RAID engine implementing RAID 5 or RAID 6 data redundancy scheme and, wherein the data redundancy engine comprises a hardware portion for calculating an erasure code, specifically for calculating parity information for implementing RAID 5 or RAID 6 data redundancy scheme.

### Claim 9 (depends on 1)

The storage system of claim 1, wherein the storage client is adapted to aggregate data in order to form data segments, wherein the storage client is adapted to apply a data redundancy scheme to a respective data segment, specifically, the storage client is adapted to apply parity information to the respective data segment.

### Claim 10 (depends on 9)

The storage system of claim 9, wherein the data segment forms a RAID stripe.

### Claim 11 (depends on 9)

The storage system of claim 9, wherein the data segment comprises a log-structured data layout.

### Claim 12 (depends on 7)

The storage system of claim 7, wherein the storage client comprises compression means for compressing data segments to be written into a storage device.

### Claim 13 (depends on 7)

The storage system of claim 7, wherein the storage client is adapted to directly write a data segment comprising erasure code information to said storage devices.

### Claim 14 (depends on 9)

The storage system of claim 9, wherein the storage controller is adapted to buffer information included in a data segment during the aggregation of data in order to provide backup information.

### Claim 15 (depends on 9)

The storage system of claim 9, being adapted to update information included in a data segment by relocating updated data blocks to new data segment and sign outdated data blocks as invalid.

### Claim 16 (depends on 15)

The storage system of claim 15, wherein the storage client is adapted to instruct the storage controller to move a data block from one physical address to another physical address during a garbage collection process.

### Claim 17

A method for data storage in a storage system comprising one or more storage controllers, two or more storage devices and two or more storage clients, the storage controllers, the storage devices and the storage clients being coupled via a network in order to exchange information between the storage controllers, the storage devices and the storage clients, the method comprising:
providing, by one or more processors, data-path-storage commands directly to the two or more storage devices by the two or more storage clients and bypassing the one or more storage controllers via the network, wherein the data-path-storage commands are initiated by the two or more storage clients and executed by the one or more storage controllers; and
implementing, by the one or more processors, data redundancy using a data redundancy scheme higher than RAID 1.

### Claim 18 (depends on 17)

The method of claim 17 further comprising:
preforming, by the one or more processors, garbage collection process to free up space;
selecting, by the one or more processors, a data segment to collect garbage according to garbage collection policy; and
picking, by the one or more processors, a next valid data block.

### Claim 19 (depends on 18)

The method of claim 18 further comprising:
computing, by the one or more processors, a new physical location for the data block.

### Claim 20

A computer program product for data storage, the computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions being executable by a processor, the computer program product comprising:
providing, by one or more processors, data-path-storage commands directly to two or more storage devices by two or more storage clients and bypassing the storage controllers via the network, wherein the data-path-storage commands are initiated by the two or more storage clients and executed by the one or more storage controllers; and
program instructions to implement data redundancy using a data redundancy scheme higher than RAID 1.
