Parity assignment technique for parity declustering in a parity array of a storage system
First Claim
1. A method for enabling parity declustering in a balanced parity array of a storage system, comprising:
- combining a plurality of unbalanced parity stripe arrays to form the balanced parity array, the balanced parity array storing substantially the same number of parity blocks on all disks, each unbalanced parity stripe array and the balanced parity array having parity blocks on a set of storage devices that are disjoint from a set of storage devices storing data blocks, wherein each unbalanced parity stripe array is an arrangement having fewer parity blocks per disk than data blocks per disk in a stripe; and
distributing assignment of storage devices to parity groups throughout the balanced parity array.
1 Assignment
0 Petitions
Accused Products
Abstract
A parity assignment technique enables parity declustering in a large, balanced parity (“super-stripe”) array of a storage system. The balanced array may be constructed by combining a plurality of unbalanced parity stripe arrays, each having parity blocks on a set of storage devices, such as disks, that are disjoint from the set of disks storing the data blocks. The technique distributes the assignment of disks to parity groups among the combined super-stripe array such that all disks contain the same amount of data or parity information. Moreover, the technique ensures that all surviving data disks of the array are loaded uniformly during a reconstruction phase after a single or double disk failure.
120 Citations
58 Claims
-
1. A method for enabling parity declustering in a balanced parity array of a storage system, comprising:
-
combining a plurality of unbalanced parity stripe arrays to form the balanced parity array, the balanced parity array storing substantially the same number of parity blocks on all disks, each unbalanced parity stripe array and the balanced parity array having parity blocks on a set of storage devices that are disjoint from a set of storage devices storing data blocks, wherein each unbalanced parity stripe array is an arrangement having fewer parity blocks per disk than data blocks per disk in a stripe; and distributing assignment of storage devices to parity groups throughout the balanced parity array. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system that enables parity declustering in a balanced parity array of a storage system, the system comprising:
-
a plurality of storage devices, each storage device divided into blocks that are further organized into stripes, wherein each stripe contains data and parity blocks from each of the devices of a balanced array; a storage operating system including a storage layer configured to implement a parity assignment technique that distributes assignment of devices to parity groups throughout the balanced array such that all storage devices contain the same amount of information; and a processing element configured to execute the operating system to thereby invoke storage access operations to and from the balanced parity array in accordance with a concentrated parity technique, where the concentrated parity technique combines unbalanced parity stripe arrays from two or more of the parity groups to form a balanced parity array with an equal number of parity blocks per disk storing parity, wherein each unbalanced parity stripe array is an arrangement having fewer parity blocks per disk than data blocks per disk in the stripe. - View Dependent Claims (12, 13, 14, 15, 16, 17)
-
-
18. Apparatus for enabling parity declustering in a balanced parity array of a storage system, the apparatus comprising:
-
means for combining a plurality of unbalanced parity stripe arrays to form the balanced parity array, the balanced parity array storing substantially the same number of parity blocks on all disks, each unbalanced parity stripe array and the balanced parity array having parity blocks on a set of storage devices that are disjoint from a set of storage devices storing data blocks, wherein the unbalanced parity stripe array is an arrangement having fewer parity blocks per disk than data blocks per disk in a stripe; and means for distributing assignment of devices to parity groups throughout the balanced parity array. - View Dependent Claims (19, 20, 21)
-
-
22. A computer readable medium containing executable program instructions for enabling parity declustering in a balanced parity array of a storage system, the executable program instructions comprising program instructions for:
-
combining a plurality of unbalanced parity stripe arrays to form the balanced parity array, the balanced parity array storing substantially the same number of parity blocks on all disks, each unbalanced parity stripe array and the balanced parity array having parity blocks on a set of storage devices that are disjoint from a set of storage devices storing data blocks, wherein each unbalanced parity stripe array storing an unequal number of parity blocks per storage device then data blocks per storage device in a stripe; and distributing assignment of devices to parity groups throughout the balanced parity array. - View Dependent Claims (23, 24, 25)
-
-
26. A method for declustering a parity array having a plurality of storage devices, comprising:
-
assigning a first plurality of data and parity blocks to a first group, where the data blocks are stored on a plurality of storage devices that are disjoint from a plurality of storage devices storing parity blocks to form a first parity group, wherein the parity blocks are striped across the plurality of storage devices in the first parity group with fewer parity blocks per storage device than data blocks per storage device in a stripe; assigning a second plurality of data and parity blocks to a second group, where the data blocks are stored on a plurality of storage devices that are disjoint from a plurality of storage devices storing parity blocks to form a second parity group, wherein the parity blocks are striped across the plurality of storage devices in the second parity group with fewer parity blocks per storage device than data blocks per storage device in a stripe, wherein the first and second parity groups being independent from each other; and combining the first parity group and the second parity group to form a balanced parity array, the balanced parity array storing substantially the same number of parity blocks on the storage devices configured to store parity.
-
-
27. A method for declustering a parity array having a plurality of storage devices, comprising:
-
assigning a plurality of parity blocks to a plurality of parity groups, the plurality of parity groups being independent from each other and distributed throughout the plurality of storage devices of the parity array where each parity group forms an unbalanced parity stripe array, wherein each unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe; and combining the plurality of parity groups to form a balanced array, the balanced array storing substantially the same number of blocks on all disks.
-
-
28. A disk array having a declustered parity array, comprising:
-
a plurality of storage devices having a first and second parity group; a first plurality of parity blocks assigned to the first parity group where the first parity group forms a first unbalanced parity stripe array, wherein the first unbalanced parity array has fewer parity blocks per disk than data blocks per disk in a stripe; a second plurality of parity blocks assigned to the second parity group where the second parity group forms a second unbalanced parity stripe array, wherein the second unbalanced parity array has fewer parity blocks per disk than data blocks per disk in a stripe, the first and second parity groups being independent from each other and distributed throughout the plurality of storage devices of the parity array; and a balanced parity array created by combining the first parity group and the second parity group, the balanced parity array storing substantially the same number of blocks on all disks.
-
-
29. A disk array having a declustered parity array, comprising:
-
a plurality of storage devices having a plurality of parity groups; a plurality of parity blocks assigned to the plurality of parity groups where each parity group forms an unbalanced parity stripe array, wherein each unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe, the plurality of parity groups being independent from each other and distributed throughout the plurality of storage devices of the parity array; and a balanced parity array created by combining the plurality parity groups, the balanced parity array storing substantially the same number of parity blocks on all disks.
-
-
30. A disk array having a declustered parity array, comprising:
-
a plurality of storage devices; means for assigning a first plurality of parity blocks to a first parity group where the first parity group forms a first unbalanced parity stripe array, wherein the first unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe; means for assigning a second plurality of parity blocks to a second parity group, where the second parity group forms a second unbalanced parity stripe array, wherein the second unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe, the first and second parity groups being independent from each other and distributed throughout the plurality of storage devices of the parity array; and means for combining the first parity group and the second parity group to form a balanced parity array, the balanced parity array storing substantially the same number of parity blocks on all disks.
-
-
31. A disk array having a declustered parity array, comprising:
-
a plurality of storage devices; means for assigning a plurality of parity blocks to a plurality of parity groups, the plurality of parity groups being independent from each other and distributed throughout the plurality of storage devices of the parity array where each parity group forms an unbalanced parity stripe array, wherein each unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe; and means for combining the plurality of parity groups to form a balanced parity array, the balanced parity array storing substantially the same number of parity blocks on all disks.
-
-
32. A computer implemented method for enabling parity declustering of a storage system, comprising:
-
providing a first array of storage devices for storing data blocks and parity blocks, the data blocks organized into at least one parity group associated with the parity blocks, the first array forming a first unbalanced parity stripe array, wherein the first unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe; providing a second array of storage devices for storing data blocks and parity blocks, the data blocks organized into at least one parity group associated with the parity blocks, the second array forming a second unbalanced parity stripe array, wherein the second unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe; combining the first and second arrays to form a combined array having substantially the same number of parity blocks stored on each storage device of the combined array; and changing the association of data blocks with parity groups in the first array and the second array so that each parity group is associated with data blocks that are distributed substantially uniformly throughout the storage devices that store data blocks in the combined array. - View Dependent Claims (33, 34, 35, 36, 37, 38)
-
-
39. A computer implemented method for enabling parity declustering of a storage array having a plurality of storage devices, comprising:
-
dividing each storage device into blocks; organizing the blocks into a plurality of stripes across the storage devices, wherein each stripe contains data and parity blocks; storing data in data blocks and parity information in parity blocks, the parity blocks storing parity information for a plurality of parity groups; and varying the association of the storage devices to parity groups from stripe to stripe in the storage array such that each parity group is associated with data blocks that are distributed substantially uniformly throughout the storage devices that store data blocks in the storage array. - View Dependent Claims (40)
-
-
41. An apparatus for enabling parity declustering of a storage system, the apparatus comprising:
-
a first array of storage devices for storing data blocks and parity blocks, the data blocks organized into at least one parity group associated with the parity blocks, the first array forming a first unbalanced parity stripe array, wherein the first unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe; a second array of storage devices for storing data blocks and parity blocks, the data blocks organized into at least one parity group associated with the parity blocks, the second array forming a second unbalanced parity stripe array, wherein the second unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe; and a storage operating system configured to combine the first and second arrays to form a combined array having substantially the same number of blocks stored on each storage device of the combined array, and configured to change the association of data blocks with parity groups in the first array and the second array so that each parity group is associated with data blocks that are distributed substantially uniformly throughout the storage devices that store data blocks in the combined array. - View Dependent Claims (42, 43, 44, 45, 46)
-
-
47. An apparatus for enabling parity declustering of a storage array having a plurality of storage devices, the apparatus comprising:
-
a storage operating system configured to divide each storage device into blocks and organize the blocks into a plurality of stripes across the storage devices, wherein each stripe contains data and parity blocks and store data in data blocks and parity information in parity blocks, the parity blocks storing parity information for a plurality of parity groups; and the storage operating system further configured to vary the association of the storage devices to parity groups from stripe to stripe in the storage array such that, each parity group is associated with data blocks that are distributed substantially uniformly throughout the storage devices that store data blocks in the storage array.
-
-
48. A system that enables parity declustering of a storage system, the system comprising:
-
means for providing a first array of storage devices for storing data blocks and parity blocks, the data blocks organized into at least one parity group associated with the parity blocks, the first array forming a first unbalanced parity stripe array, wherein the first unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe; means for providing a second array of storage devices for storing data blocks and parity blocks, the data blocks organized into at least one parity group associated with the parity blocks, the second array forming a second unbalanced parity stripe array, wherein the second unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe; means for combining the first and second arrays to form a combined array having substantially the same number of blocks stored on each storage device of the combined array; and means for changing the association of data blocks with parity groups in the first array and the second array so that each parity group is associated with data blocks that are distributed substantially uniformly throughout the storage devices that store data blocks in the combined array.
-
-
49. An apparatus for enabling parity declustering of a storage array having a plurality of storage devices, the apparatus comprising:
-
means for dividing each storage device into blocks; means for organizing the blocks into a plurality of stripes across the storage devices, wherein each stripe contains data and parity blocks; means for storing data in data blocks and parity information in parity blocks, the parity blocks storing parity information for a plurality of parity groups; and means for varying the association of the storage devices to parity groups from stripe to stripe in the storage array such that, each parity group is associated with data blocks that are distributed substantially uniformly throughout the storage devices that store data blocks in the storage array.
-
-
50. A computer readable medium containing program instructions for execution on a processor, the executable program instructions comprising program instructions for:
-
dividing each storage device into blocks; organizing the blocks into a plurality of stripes across the storage devices, wherein each stripe contains data and parity blocks; storing data in data blocks and parity information in parity blocks, the parity blocks storing parity information for a plurality of parity groups; and varying the association of the storage devices to parity groups from stripe to stripe in the storage array such that, each parity group is associated with data blocks that are distributed substantially uniformly throughout the storage devices that store data blocks in the storage array.
-
-
51. An apparatus for parity declustering in a storage system, the apparatus comprising:
-
a storage operating system configured to combine a plurality of first arrays of storage devices, each first array has fewer parity blocks per storage device than data blocks per storage device in a stripe, to form a second array, the second array storing substantially the same number of parity blocks on storage devices that store parity blocks; and the storage operating system further configured to redistribute the assignment storage devices to parity groups in the second array so that each storage device will have a substantially equal number of blocks associated with each parity group.
-
-
52. An method for parity declustering in a storage system, comprising:
-
combining a plurality of first arrays of storage devices, each first array has fewer parity blocks per storage device than data blocks per storage device in a stripe, the second array storing substantially the same number of parity blocks on storage devices that store parity blocks; and configuring the storage operating system to redistribute the assignment storage devices to parity groups in the second array so that each storage device will have a substantially equal number of blocks associated with each parity group.
-
-
53. A computer implemented method for enabling parity declustering of a storage system, comprising:
-
providing a first array of storage devices for storing data blocks and parity blocks, the data blocks organized into at least one parity group associated with the parity blocks, the first array forming a first unbalanced parity stripe array, wherein the first unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe; providing a second array of storage devices for storing data blocks and parity blocks, the data blocks organized into at least one parity group associated with the parity blocks, the second array forming a second unbalanced parity stripe array, wherein the second unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe; and combining the first and second arrays to form a combined array having substantially the same number of parity blocks stored on each storage device of the combined array.
-
-
54. An apparatus for enabling parity declustering of a storage system, the apparatus comprising:
-
a first array of storage devices for storing data blocks and parity blocks, the data blocks organized into at least one parity group associated with the parity blocks, the first array forming a first unbalanced parity stripe array, wherein the first unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe; a second array of storage devices for storing data blocks and parity blocks, the data blocks organized into at least one parity group associated with the parity blocks, the second array forming a second unbalanced parity stripe array, wherein the second unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe; and a storage operating system configured to combine the first and second arrays to form a combined array having substantially the same number of parity blocks stored on each storage device of the combined array.
-
-
55. A method for enabling a balanced arrangement of a storage system, comprising:
-
creating a plurality of unbalanced stripe arrangements with each unbalanced stripe arrangement is an arrangement having fewer parity blocks per disk than data blocks per disk in a stripe; combining the plurality of unbalanced stripe arrangements to form the balanced arrangement, with the balanced arrangement storing substantially the same number of parity blocks per disk in the array of disks configured to store parity; storing parity blocks across one or more disks in the array of disks to create one or more parity groups; storing data blocks across the remaining disks of the disks in the array with the parity blocks and the data blocks stored on different disks of the array; and assigning storage devices to different parity groups throughout the balanced arrangement.
-
-
56. A method for enabling a balanced arrangement of a storage system, comprising:
-
creating a plurality of unbalanced stripe arrangements with each unbalanced stripe arrangement has fewer parity blocks per disk than data blocks per disk in a stripe; and combining the plurality of unbalanced stripe arrangements to form the balanced arrangement, with the balanced arrangement storing substantially the same number of parity blocks per disk in the array of disks configured to store parity.
-
-
57. A method for enabling parity declustering in a balanced parity array of a storage system, comprising:
-
combining a plurality of unbalanced parity stripe arrays from a plurality of RAID groups to form the balanced parity array, the balanced parity array storing substantially the same number of parity blocks on all disks, each unbalanced parity stripe array and the balanced parity array having parity blocks on a set of storage devices that are disjoint from a set of storage devices storing data blocks, wherein each unbalanced parity stripe array is an arrangement having fewer parity blocks per storage device than data blocks per storage device in a stripe; and distributing assignment of storage devices to parity groups throughout the balanced parity array.
-
-
58. A method, comprising:
-
providing a first array of storage devices for storing data blocks and parity blocks, the data blocks organized into at least one parity group associated with the parity blocks, the first array forming a first unbalanced parity stripe array, wherein the first unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in a stripe; providing a second array of storage devices for storing data blocks and parity blocks, the data blocks organized into at least one parity group associated with the parity blocks, the second array forming a second unbalanced parity stripe array, wherein the second unbalanced parity array has fewer parity blocks per storage device than data blocks per storage device in the stripe; determining to combine the first array and the second array when a number of parity blocks per a storage device divides evenly into a number of data blocks per storage device in the stripe; and in response to determining to combine the first array and the second array, combining the first and second arrays to form a combined array having substantially the same number of parity blocks stored on each storage device of the combined array.
-
Specification