# US 10,372,368 B2 · Operating a RAID array with unequal stripes

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

- Number: US 10,372,368 B2
- Document ID: US10372368B2
- Status: Granted
- Kind: B2
- Application number: 15/292,202
- Filed: 2016-10-13
- Published: 2018-04-19
- Granted: 2019-08-06
- Earliest claimed: 2016-10-13
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Robert Galbraith; Adrian C. Gerhard; Daniel F. Moertl
- Web page: https://patentgrep.com/patent/US10372368B2

## CPC

- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0629: {Configuration or reconfiguration of storage systems}
- G06F 3/064: {Management of blocks}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Operating a RAID array with unequal stripes, the RAID array comprising N number of drives, where each RAID stripe includes P number of parity drives and N-P number of data drives, including buffering, by a RAID controller, write operations received from a host, each write operation specifying data to be written to the RAID array; distributing, by the RAID controller, the data to be written amongst N-P write groups, including: dividing the data into chunks of a sub-stripe size, wherein the sub-stripe size is less than a parity stripe size; and assigning the chunks, in round-robin order, to the N-P write groups; calculating parity from the N-P write groups; and writing the N-P write groups and the calculated parity as a first RAID stripe to the RAID array.

## Claims

### Claim 1

A method of operating a redundant array of independent disks (RAID) array, the RAID array comprising N number of drives to which data is written in RAID stripes, where each RAID stripe includes P number of parity drives that store parity in parity stripes and N-P number of data drives that store data in data stripes, the method comprising:
buffering, by a RAID controller, write operations received from a host, each write operation specifying data to be written to the RAID array;
distributing, by the RAID controller, the data to be written amongst the data drives of a first RAID stripe of the RAID array, including:
dividing the data into chunks of a sub-stripe size, wherein the sub-stripe size is less than a parity stripe size; and
assigning the chunks to write groups in a repeating pattern, each write group corresponding to a particular data drive of the first RAID stripe, the pattern including assigning respective first chunks to each write group in consecutive order beginning with a first data drive, assigning respective second chunks to each write group in consecutive order beginning with the first data drive, and so on such that each write group includes non-consecutive sub-stripe sized chunks of data;
calculating parity from the write groups; and
writing the write groups and the calculated parity as the first RAID stripe to the RAID array, including:
writing each write group as a data stripe to a corresponding data drive of the first RAID stripe; and
writing the calculated parity as a parity stripe to a corresponding parity drive of the first RAID stripe.

### Claim 2 (depends on 1)

The method of claim 1, wherein the write groups are written to corresponding data stripes of the first RAID stripe before writing data stripes of a second RAID stripe to the RAID array.

### Claim 3 (depends on 2)

The method of claim 2, wherein at least one data stripe of the second RAID stripe is written to a drive of the RAID array on which the parity stripe of the first RAID stripe resides.

### Claim 4 (depends on 1)

The method of claim 1, wherein a number of chunks that are of the sub-stripe size is greater than the N-P number of data drives.

### Claim 5 (depends on 1)

The method of claim 1, wherein the parity stripe of the first RAID stripe is written to a higher logical block address than the data stripes of the first RAID stripe.

### Claim 6 (depends on 1)

The method of claim 1, wherein writing the write groups and the calculated parity as the first RAID stripe to the RAID array further includes performing a single write operation to each drive of the RAID array.

### Claim 7 (depends on 1)

The method of claim 1, wherein the calculated parity is less than the parity stripe size.

### Claim 8

An apparatus for operating a redundant array of independent disks (RAID) array, the RAID array comprising N number of drives to which data is written in RAID stripes, where each RAID stripe includes P number of parity drives that store parity in parity stripes and N-P number of data drives that store data in data stripes, the apparatus comprising a computer processor and a computer memory having disposed within it computer program instructions that, when executed by the computer processor, cause the apparatus to carry out the steps of:
buffering, by a RAID controller, write operations received from a host, each write operation specifying data to be written to the RAID array;
distributing, by the RAID controller, the data to be written amongst the data drives of a first RAID stripe of the RAID array, including:
dividing the data into chunks of a sub-stripe size, wherein the sub-stripe size is less than a parity stripe size; and
assigning the chunks to write groups in a repeating pattern, each write group corresponding to a particular data drive of the first RAID stripe, the pattern including assigning respective first chunks to each write group in consecutive order beginning with a first data drive, assigning respective second chunks to each write group in consecutive order beginning with the first data drive, and so on such that each write group includes non-consecutive sub-stripe sized chunks of data;
calculating parity from the write groups; and
writing the write groups and the calculated parity as the first RAID stripe to the RAID array, including:
writing each write group as a data stripe to a corresponding data drive of the first RAID stripe; and
writing the calculated parity as a parity stripe to a corresponding parity drive of the first RAID stripe.

### Claim 9 (depends on 8)

The apparatus of claim 8, wherein the write groups are written to corresponding data stripes of the first RAID stripe before writing data stripes of a second RAID stripe to the RAID array.

### Claim 10 (depends on 9)

The apparatus of claim 9, wherein at least one data stripe of the second RAID stripe is written to a drive of the RAID array on which the parity stripe of the first RAID stripe resides.

### Claim 11 (depends on 8)

The apparatus of claim 8, wherein a number of chunks that are of the sub-stripe size is greater than the N-P number of data drives.

### Claim 12 (depends on 8)

The apparatus of claim 8, wherein the parity stripe of the first RAID stripe is written to a higher logical block address than the data stripes of the first RAID stripe.

### Claim 13 (depends on 8)

The apparatus of claim 8, wherein writing the write groups and the calculated parity as the first RAID stripe to the RAID array further includes performing a single write operation to each drive of the RAID array.

### Claim 14 (depends on 8)

The apparatus of claim 8, wherein the calculated parity is less than the parity stripe size.

### Claim 15

A computer program product for operating a redundant array of independent disks (RAID) array, the RAID array comprising N number of drives to which data is written in RAID stripes, where each RAID stripe includes P number of parity drives that store parity in parity stripes and N-P number of data drives that store data in data stripes, the computer program product comprising a non-transitory computer readable storage medium comprising computer readable program instructions stored thereon, the program instructions executable to cause a computer to carry out the steps of:
buffering, by a RAID controller, write operations received from a host, each write operation specifying data to be written to the RAID array;
distributing, by the RAID controller, the data to be written amongst the data drives of a first RAID stripe of the RAID array, including:
dividing the data into chunks of a sub-stripe size, wherein the sub-stripe size is less than a parity stripe size; and
assigning the chunks to write groups in a repeating pattern, each write group corresponding to a particular data drive of the first RAID stripe, the pattern including assigning respective first chunks to each write group in consecutive order beginning with a first data drive, assigning respective second chunks to each write group in consecutive order beginning with the first data drive, and so on such that each write group includes non-consecutive sub-stripe sized chunks of data;
calculating parity from the write groups; and
writing the write groups and the calculated parity as the first RAID stripe to the RAID array, including:
writing each write group as a data stripe to a corresponding data drive of the first RAID stripe; and
writing the calculated parity as a parity stripe to a corresponding parity drive of the first RAID stripe.

### Claim 16 (depends on 15)

The computer program product of claim 15, wherein the write groups are written to corresponding data stripes of the first RAID stripe before writing data stripes of a second RAID stripe to the RAID array.

### Claim 17 (depends on 16)

The computer program product of claim 16, wherein at least one data stripe of the second RAID stripe is written to a drive of the RAID array on which the parity stripe of the first RAID stripe resides.

### Claim 18 (depends on 15)

The computer program product of claim 15, wherein a number of chunks that are of the sub-stripe size is greater than the N-P number of data drives.

### Claim 19 (depends on 15)

The computer program product of claim 15, wherein the parity stripe of the first RAID stripe is written to a higher logical block address than the data stripes of the first RAID stripe.

### Claim 20 (depends on 15)

The computer program product of claim 15, wherein writing the write groups and the calculated parity as the first RAID stripe to the RAID array further includes performing a single write operation to each drive of the RAID array.
