# US 2014/0208022 A1 · Raid erasure code applied to partitioned stripe

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

- Number: US 2014/0208022 A1
- Document ID: US20140208022A1
- Status: Published application
- Kind: A1
- Application number: 13/746,055
- Filed: 2013-01-21
- Published: 2014-07-24
- Earliest claimed: 2013-01-21
- Assignees: Kaminario Technologies Ltd.
- Applicants: Kaminario Technologies Ltd.
- Inventors: Eyal GORDON
- Web page: https://patentgrep.com/patent/US20140208022A1

## CPC

- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 2211/1057: Parity-multiple bits-RAID6, i.e. RAID 6 implementations
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The disclosure presents examples of a RAID storage system, method and computer program product where a stripe is logically partitioned into two or more sub-stripes and at least one RAID erasure code is applied to each sub-stripe independently of any other of the sub-stripe(s). Consequently, in some of these examples, a larger packet size may be used than if the stripe had not been partitioned. A larger packet size may in some cases allow for accelerated encoding and/or decoding.

## Claims

### Claim 1

A system, comprising:
a Redundant Array of Independent Disks, RAID, controller capable of logically partitioning a stripe into two or more sub-stripes, and of applying at least one RAID erasure code to each of said sub-stripes independently of any other of said sub-stripes.

### Claim 2 (depends on 1)

The system of claim 1, further comprising:
a plurality of storage devices;
wherein said RAID controller is capable of writing or reading said stripe to or from any of said plurality of storage devices.

### Claim 3 (depends on 1)

The system of claim 1, wherein each sub-segment associated with a same sub-stripe has identical size.

### Claim 4 (depends on 1)

The system of claim 1, wherein a size of a sub-segment associated with one of said sub-stripes differs from a size of a sub-segment associated with another of said sub-stripes.

### Claim 5 (depends on 1)

The system of claim 1, wherein two sub-segments associated with two different sub-stripes have identical size.

### Claim 6 (depends on 1)

The system of claim 1, wherein at least one selected from a group comprising: number of packets or size of packets, differs for different sub-stripes.

### Claim 7 (depends on 1)

The system of claim 1, wherein at least one selected from a group comprising: number of packets or size of packets, is identical for at least two different sub-stripes.

### Claim 8 (depends on 1)

The system of claim 1, wherein a size of a sub-segment associated with a sub-stripe does not equal a power of two.

### Claim 9 (depends on 1)

The system of claim 1, wherein a size of a sub-segment associated with a sub-stripe equals a power of two.

### Claim 10 (depends on 1)

The system of claim 1, wherein said RAID controller is capable of determining values of packet size and number of packets to use per sub-stripe.

### Claim 11 (depends on 10)

The system of claim 10, wherein said RAID controller being capable of determining values of packet size and number of packets to use per sub-stripe, includes said RAID controller being capable of selecting from among available sets which each includes values for any of packet size, number of packets, or sub-segment size per sub-stripe, at least partly based on at least one factor selected from a group comprising: segment size in stripe, type of said at least one RAID erasure code, number of data segments in stripe, testing data relating to acceleration of RAID erasure code application, in-turn selection, or random selection.

### Claim 12 (depends on 10)

The system of claim 10, wherein there is available to said RAID controller only one set including values for any of packet size, number of packets, or sub-segment size per sub-stripe, and wherein said RAID controller being capable of determining values of packet size and number of packets to use per sub-stripe, includes said RAID controller being capable of determining to use said set.

### Claim 13 (depends on 10)

The system of claim 10, wherein said RAID controller being capable of determining values of packet size and number of packets to use per sub-stripe includes said RAID controller being capable of deriving a value of packet size or sub-segment size to use per sub-stripe from an available set corresponding to a different segment size than segment size of said stripe.

### Claim 14 (depends on 10)

The system of claim 10, being capable of determining values of packet size and number of packets to use per sub-stripe, includes said RAID controller being capable of computing a value for packet size or number of packets from an available set which includes values for sub-segment size and number of packets or packet size respectively.

### Claim 15 (depends on 10)

The system of claim 10, wherein said RAID controller being capable of determining values of packet size and number of packets to use per sub-stripe includes said RAID controller being capable of determining values to use for decoding at least partly based on values which were used for encoding.

### Claim 16 (depends on 1)

The system of claim 1, wherein said RAID controller is capable of determining at least one possible set including values for any of packet size, number of packets, or sub-segment size per sub-stripe which complies with at least one predetermined constraint.

### Claim 17 (depends on 16)

The system of claim 16, wherein said at least one predetermined constraint is selected from a group comprising: number of packets per sub-segment of sub-stripe is greater than or equal to number of data segments, number of packets per sub-segment of sub-stripe is greater than or equal to number of data segments minus 1, number of packets per sub-segment of sub-stripe is equal to a prime number minus 1, packet size per sub-stripe is equal to a power of 2, or sum of sub-stripe sub-segment sizes is equal to stripe segment size.

### Claim 18 (depends on 1)

The system of claim 1, wherein said RAID controller being capable of applying at least one RAID erasure code includes said RAID controller being capable of encoding said sub-stripe in order to compute at least one parity sub-segment.

### Claim 19 (depends on 1)

The system of claim 1, wherein said RAID controller being capable of applying at least one RAID erasure code includes said RAID controller being capable of decoding at least one parity sub-segment in said sub-stripe.

### Claim 20 (depends on 1)

The system of claim 1, wherein said RAID controller being capable of applying at least one RAID erasure code includes said RAID controller being capable of applying different RAID erasure codes to different ones of said sub-stripes.

### Claim 21

A method performed by a Redundant Array of Independent Disks, RAID, controller, comprising:
logically partitioning a stripe into two or more sub-stripes, and
applying at least one RAID erasure code to each of said sub-stripes independently of any other of said sub-stripes.

### Claim 22 (depends on 21)

The method of claim 21, wherein said applying includes encoding said sub-stripe in order to compute at least one parity sub-segment.

### Claim 23 (depends on 21)

The method of claim 21, wherein said applying includes decoding at least one parity sub-segment in said sub-stripe.

### Claim 24 (depends on 21)

The method of claim 21, further comprising: determining values of packet size and number of packets to use per sub-stripe.

### Claim 25 (depends on 21)

The method of claim 21, further comprising: determining at least one possible set including values for any of packet size, number of packets or sub-segment size per sub-stripe which complies with at least one predetermined constraint.

### Claim 26 (depends on 21)

The method of claim 21, further comprising: reading said stripe from storage devices prior to said partitioning.

### Claim 27 (depends on 21)

The method of claim 21, further comprising: writing said stripe to storage devices after said applying.

### Claim 28

A computer program product comprising a non-transitory computer readable medium having Redundant Array of Independent Disks, RAID computer readable program code embodied therein the computer program product comprising:
computer readable program code for causing a computer to logically partition a stripe into two or more sub-stripes, and
computer readable program code for causing a computer to apply at least one RAID erasure code to each of said sub-stripes independently of any other of said sub-stripes.
