Semi-static distribution technique
First Claim
1. A method for distributing parity blocks across a disk array, the method comprising the steps of:
- adding a new disk to a number of pre-existing disks of the array;
dividing each disk into blocks, the blocks being organized into stripes such that each stripe contains one block from each disk; and
distributing parity among blocks of the new and pre-existing disks by moving every Nth parity block to the new disk to arrange each disk of the array with approximately 1/N parity blocks, where N is equal to the number of pre-existing disks plus the new disk.
2 Assignments
0 Petitions
Accused Products
Abstract
A semi-static distribution technique distributes parity across disks of an array. According to the technique, parity is distributed (assigned) across the disks of the array in a manner that maintains a fixed pattern of parity blocks among the stripes of the disks. When one or more disks are added to the array, the semi-static technique redistributes parity in a way that does not require recalculation of parity or moving of any data blocks. Notably, the parity information is not actually moved; the technique merely involves a change in the assignment (or reservation) for some of the parity blocks of each pre-existing disk to the newly added disk.
104 Citations
47 Claims
-
1. A method for distributing parity blocks across a disk array, the method comprising the steps of:
-
adding a new disk to a number of pre-existing disks of the array; dividing each disk into blocks, the blocks being organized into stripes such that each stripe contains one block from each disk; and distributing parity among blocks of the new and pre-existing disks by moving every Nth parity block to the new disk to arrange each disk of the array with approximately 1/N parity blocks, where N is equal to the number of pre-existing disks plus the new disk. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system adapted to distribute parity across disks of a storage system, the system comprising:
-
a disk array comprising a number of pre-existing disks and at least one new disk; and a storage module configured to compute parity in blocks of stripes across the disks and reconstruct blocks of disks lost as a result of failure, the storage module further configured to assign the parity among the blocks of the new and pre-existing disks by moving every Nth parity block to the at least one new disk to arrange each disk of the array with approximately 1/N parity blocks, where N is equal to the number of pre-existing disks plus with at least one new disk. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. Apparatus for distributing parity across a disk array, the apparatus comprising:
-
means for adding a new disk to a number of pre-existing disks of the array; means for dividing each disk into blocks, the blocks being organized into stripes such that each stripe contains one block from each disk; and means for distributing parity among blocks of the new and pre-existing disks by moving every Nth parity block to the new disk to arrange each disk of the array with approximately 1/N parity blocks, where N is equal to the number of pre-existing disks plus the new disk. - View Dependent Claims (16)
-
-
17. A computer readable medium containing executable program instructions for distributing parity across a disk array, the executable instructions comprising one or more program instructions for:
-
adding a new disk to a number of pre-existing disks of the array; dividing each disk into blocks, the blocks being organized into stripes such that each stripe contains one block from each disk; and distributing parity among blocks of the new and pre-existing disks by moving every Nth parity block to the new disk to arrange each disk of the array with approximately 1/N parity blocks, where N is equal to the number of pre-existing disks plus the new disk. - View Dependent Claims (18)
-
-
19. A method for distributing parity blocks across a disk array, comprising:
-
providing a pre-existing disk array with a number of pre-existing disks, each pre-existing disk divided into a plurality of blocks; assigning data blocks and parity blocks to the pre-existing disks in stripes, where each disk is arranged with approximately one over the number of pre-existing disks of parity blocks per disk; adding a new disk to the pre-existing array to form an expanded array with a new number of disks, where N is equal to the number of pre-existing disks plus the new disk, the new disk divided into a plurality of blocks; and reassigning the parity blocks across the expanded array to arrange the parity blocks with approximately 1/N blocks of parity on each disk by moving every Nth parity block stored on each of the pre-existing disks to the new disk. - View Dependent Claims (20, 21, 22, 23, 24, 25, 27, 28)
-
-
26. A method for distributing parity blocks across a disk array, comprising:
-
providing a pre-existing disk array with a number of pre-existing disks, each pre-existing disk divided into a plurality of blocks; assigning data blocks and parity blocks to the pre-existing disks in stripes, where each disk is arranged with approximately one over the number of pre-existing disks of parity blocks per disk; adding a plurality of new disks to the pre-existing array to form an expanded array with a new number of disks, where N is equal to the number of pre-existing disks plus the plurality of new disks, the plurality of new disks each divided into a plurality of blocks; and reassigning the parity blocks across the expanded array to arrange the parity blocks with approximately 1/N blocks of parity on each disk by moving every Nth parity block stored on each of the pre-existing disks to the plurality of new disks.
-
-
29. An apparatus to distribute parity blocks across a disk array, comprising:
-
means for providing a pre-existing disk array with a number of pre-existing disks, each pre-existing disk divided into a plurality of blocks; means for assigning data blocks and parity blocks to the pre-existing disks in stripes, where each disk is arranged with approximately one over the number of pre-existing disks of parity blocks per disk; means for adding a new disk to the pre-existing array to form an expanded array with a new number of disks, where N is equal to the number of pre-existing disks plus the new disk, the new disk divided into a plurality of blocks; and means for reassigning the parity blocks across the expanded array to arrange the parity blocks with approximately 1/N blocks of parity on each disk by moving every Nth parity block stored on each of the pre-existing disks to the new disk. - View Dependent Claims (30, 31, 32, 33, 34, 35)
-
-
36. A apparatus for distributing parity blocks across a disk array, comprising:
-
means for providing a pre-existing disk array with a number of pre-existing disks, each pre-existing disk divided into a plurality of blocks; means for assigning data blocks and parity blocks to the pre-existing disks in stripes, where each disk is arranged with approximately one over the number of pre-existing disks of parity blocks per disk; means for adding a plurality of new disks to the pre-existing array to form an expanded array with a new number of disks, where N is equal to the number of pre-existing disks plus the plurality of new disks, the plurality of new disks each divided into a plurality of blocks; and means for reassigning the parity blocks across the expanded array to arrange the parity blocks with approximately 1/N blocks of parity on each disk by moving every Nth parity block stored on each of the pre-existing disks to the plurality of new disks. - View Dependent Claims (37, 38)
-
-
39. A system to distribute parity blocks across a disk array, comprising:
-
a pre-existing disk array with a number of pre-existing disks, each pre-existing disk divided into a plurality of blocks; a storage module to assign data blocks and parity blocks to the pre-existing disks in stripes, where each disk is arranged with approximately one over the number of pre-existing disks of parity blocks per disk; an expanded array comprising a new disk and the number of pre-existing disks, where the expanded array includes a new number of disks, the new disk divided into a plurality of blocks, where N is equal to the number of pre-existing disks plus the new disk; and the storage module further configured to reassign the parity blocks across the expanded array to arrange the parity blocks with approximately 1/N blocks of parity on each disk by moving every Nth parity block stored on each of the pre-existing disks to the new disk. - View Dependent Claims (40, 41, 42)
-
-
43. A system for distributing parity blocks across a disk array, comprising:
-
a pre-existing disk array with a number of pre-existing disks, each pre-existing disk divided into a plurality of blocks; a storage module configured to assign data blocks and parity blocks to the pre-existing disks in stripes, where each disk is arranged with approximately one over the number of pre-existing disks of parity blocks per disk; an expanded array comprising a plurality of new disks and the number of pre-existing disks, where the expanded array includes a new number of disks, the plurality of new disks each divided into a plurality of blocks, where N is equal to the number of pre-existing disks plus the plurality of new disks; and the storage module further configured to reassign the parity blocks across the expanded array to arrange the parity blocks with approximately 1/N blocks of parity on each disk by moving every Nth parity block stored on each of the pre-existing disks to the plurality of new disks. - View Dependent Claims (44, 45)
-
-
46. A computer readable medium containing executable program instructions for distributing parity blocks across a disk array, comprising:
-
providing a pre-existing disk array with a number of pre-existing disks, each pre-existing disk divided into a plurality of blocks; assigning data blocks and parity blocks to the pre-existing disks in stripes, where each disk is arranged with approximately one over the number of pre-existing disks of parity blocks per disk; adding a new disk to the pre-existing array to form an expanded array with a new number of disks, where N is equal to the number of pre-existing disks plus the new disk, the new disk divided into a plurality of blocks; and reassigning the parity blocks across the expanded array to arrange the parity blocks with approximately 1/N blocks of parity on each disk by moving every Nth parity block stored on each of the pre-existing disks to the new disk.
-
-
47. A computer readable medium containing executable program instructions for distributing parity blocks across a disk array, comprising:
-
providing a pre-existing disk array with a number of pre-existing disks, each pre-existing disk divided into a plurality of blocks; assigning data blocks and parity blocks to the pre-existing disks in stripes, where each disk is arranged with approximately one over the number of pre-existing disks of parity blocks per disk; adding a plurality of new disks to the pre-existing array to form an expanded array with a new number of disks, where N is equal to the number of pre-existing disks plus the plurality of new disks, the plurality of new disks each divided into a plurality of blocks; and reassigning the parity blocks across the expanded array to arrange the parity blocks with approximately 1/N blocks of parity on each disk by moving every Nth parity block stored on each of the pre-existing disks to the plurality of new disks.
-
Specification