Data protection in a heterogeneous random access storage array
AssigneeEMC IP Holding Company LLC
InventorsTal Ben-Moshe, Anton Kucherov, Niko Farhi, Kirill Shoikhet, David Krakov, Eli Dorfman
Life of this patent
Estimating the term…
Abstract
Described herein are embodiments of a process for efficiently allocating RAID stripes across an array of disks (e.g., SSDs). In some embodiments, the process can be used to allocate RAID stripes across a “heterogeneous” storage array (i.e., an array of different sized disks). Also described herein are embodiments of a storage system that utilize said processing.
Claims14
A method for use in a storage system, comprising:
- selecting a stripe having a largest number of unused chunks among a plurality of existing stripes, the selected stripe including M chunks of data that are currently used, the selected stripe having a total capacity of N chunks of data;
- aggregating chunks of data that are associated with incoming write requests received at the storage system, the chunks of data being stored in a write cache until N−M chunks have been aggregated, the N−M chunks of data being used to fill a remaining capacity of the selected stripe for minimizing parity updates;
- determining free capacity information for a plurality of disks within a storage array;
- selecting, from the plurality of disks, N+k disks based upon the free capacity information, wherein the selected N+k disks are selected in order of highest available number of chunks using the free capacity information;
- generating k parity chunks using the N data chunks within the selected stripe;
- and
- writing each of the N data and k parity chunks to a respective one of the N+k disks.
A system comprising:
- a processor;
- and
- a memory storing computer program code that when executed on the processor causes the processor to execute a process operable to perform the operations of:
- selecting a stripe having a largest number of unused chunks among a plurality of existing stripes, the selected stripe including M chunks of data that are currently used, the selected stripe having a total capacity of N chunks of data;
- aggregating chunks of data that are associated with incoming write requests, the chunks of data being stored in a write cache until N−M chunks have been aggregated, the N−M chunks of data being used to fill a remaining capacity of the selected stripe for minimizing parity updates;
- determining free capacity information for a plurality of disks within a storage array;
- selecting, from the plurality of disks, N+k disks based upon the free capacity information, wherein the selected N+k disks are selected in order of highest available number of chunks using the free capacity information;
- generating k parity chunks using the N data chunks within the selected stripe;
- and
- writing each of the N data and k parity chunks to a respective one of the N+k disks.
A computer program product tangibly embodied in a non-transitory computer-readable medium, the computer-readable medium storing program instructions that are executable to:
- selecting a stripe having a largest number of unused chunks among a plurality of existing stripes, the selected stripe including M chunks of data that are currently used, the selected stripe having a total capacity of N chunks of data;
- aggregate chunks of data that are associated with incoming write requests, the chunks of data being stored in a write cache until N−M chunks have been aggregated, the N−M chunks of data being used to fill a remaining capacity of the selected stripe for minimizing parity updates;
- determine free capacity information for a plurality of disks within a storage array;
- select, from the plurality of disks, N+k disks based upon the free capacity information, wherein the selected N+k disks are selected in order of highest available number of chunks using the free capacity information;
- generate k parity chunks using the N data chunks within the selected stripe;
- and
- write each of the N data and k parity chunks to a respective one of the N+k disks.
Dependencies are inferred from the claim text.