Dynamic parity distribution technique
First Claim
1. A system adapted to distribute redundant information across disks of an array, the system comprising:
- a storage operating system configured to invoke storage operations executed by a storage system, the storage operating system further configured to manage storage of information, including the redundant information and data, on blocks of the disks in response to disk access operations, the storage operating system including a storage module adapted to compute the redundant information in response to a layout of the data in stripes across the disks, the storage operating system maintaining at least one unallocated block per stripe for use by the storage module to store the computed redundant information, wherein the at least one unallocated block used to store the redundant information is located in any disk and wherein the location of the at least one unallocated block used to store the redundant information is dynamically allocated in a non-fixed pattern by the storage module before each write request is completed for each stripe.
2 Assignments
0 Petitions
Accused Products
Abstract
A dynamic parity distribution system and technique distributes parity across disks of an array. The dynamic parity distribution system includes a storage operating system that integrates a file system with a RAID system. In response to a request to store (write) data on the array, the file system determines which disks contain free blocks in a next allocated stripe of the array. There may be multiple blocks within the stripe that do not contain file system data (i.e., unallocated data blocks) and that could potentially store parity. One or more of those unallocated data blocks can be assigned to store parity, arbitrarily. According to the dynamic parity distribution technique, the file system determines which blocks hold parity each time there is a write request to the stripe. The technique alternately allows the RAID system to assign a block to contain parity when each stripe is written.
-
Citations
51 Claims
-
1. A system adapted to distribute redundant information across disks of an array, the system comprising:
a storage operating system configured to invoke storage operations executed by a storage system, the storage operating system further configured to manage storage of information, including the redundant information and data, on blocks of the disks in response to disk access operations, the storage operating system including a storage module adapted to compute the redundant information in response to a layout of the data in stripes across the disks, the storage operating system maintaining at least one unallocated block per stripe for use by the storage module to store the computed redundant information, wherein the at least one unallocated block used to store the redundant information is located in any disk and wherein the location of the at least one unallocated block used to store the redundant information is dynamically allocated in a non-fixed pattern by the storage module before each write request is completed for each stripe. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
-
24. A method for distributing redundant information across disks of an array, comprising:
-
dividing each disk into blocks, the blocks being organized into stripes such that each stripe contains one block from each disk; selecting one or more blocks in a stripe layout of the stripe not used to contain data to contain the redundant information, wherein the selected one or more blocks used to contain the redundant information are located in any disk and wherein the location of the selected one or more blocks used to contain the redundant information is dynamically allocated in a non-fixed pattern before each write request for each stripe is completed; computing the redundant information based on contents of all other blocks in the stripe layout, regardless of whether the blocks contain data; and writing the data in one or more allocated blocks and the redundant information in the one or more selected blocks of the stripe that is written across the disks of the array. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31, 32)
-
-
33. Apparatus for distributing redundant information across disks of an array, the apparatus comprising:
-
means for dividing each disk into stripes, with each stripe containing one block from each disk; means for selecting one or more blocks in a stripe layout of the stripe not used to contain data to contain redundant information, wherein the selected one or more blocks used to contain the redundant information are located in any disk and wherein the location of the selected one or more blocks used to contain the redundant information is dynamically allocated in a non-fixed pattern before each write request for each stripe is completed; means for computing the redundant information based on contents of all other blocks in the stripe layout, regardless of whether the blocks contain data; and means for writing the data in one or more allocated blocks and the redundant information in the one or more selected blocks of the stripe that is written across the disks of the array. - View Dependent Claims (34)
-
-
35. A computer readable medium containing executable program instructions for distributing parity across disks of an array, the executable instructions comprising one or more program instructions for:
-
dividing each disk into stripes, with each stripe containing one block from each disk; selecting one or more blocks in a stripe layout of the stripe not used to contain data to contain parity, wherein the selected one or more blocks used to contain the parity are located in any disk and wherein the location of the selected one or more block used to contain the parity is dynamically allocated in a non-fixed pattern before each write request for each stripe is completed; computing the parity based on contents of all other blocks in the stripe, regardless of whether the blocks contain data; and writing the data in one or more allocated blocks and the redundant information in the one or more selected blocks of the stripe that is written across the disks of the array.
-
-
36. A method for distributing redundant information across disks of an away with a plurality of blocks on each disk, comprising:
-
determining which blocks are unallocated in a stripe across the disks; reserving unallocated blocks for storing the redundant information in one or more reserved unallocated blocks; arranging data in the stripe for the data to be stored in one or more allocated blocks across the disks of the array; assigning the redundant information in a non-fixed pattern to the one or more reserved unallocated blocks; and writing the data in the allocated blocks and the redundant information in the one or more reserved unallocated blocks as the stripe across the disks of the array. - View Dependent Claims (37, 38)
-
-
39. An apparatus for distributing redundant information across disks of an array with a plurality of blocks on each disk, comprising:
-
means for determining which blocks are unallocated in a stripe across the disks; means for reserving unallocated blocks for storing the redundant information in one or more reserved unallocated blocks; means for arranging data in the stripe for the data to be stored in one or more allocated blocks across the disks of the array; means for assigning the redundant information in a non-fixed pattern to the one or more reserved unallocated block; and means for writing the data in the allocated blocks and the redundant information in the one or more reserved unallocated blocks as the stripe across the disks of the array. - View Dependent Claims (40, 41)
-
-
42. A system for distributing redundant information across disks of an array with a plurality of blocks on each disk, comprising:
a storage operating system configured to invoke storage operations executed by a storage system, the storage operating system further configured (i) to determine which blocks are unallocated in a stripe across the disks, (ii) to reserve unallocated blocks for storing the redundant information in one or more reserved unallocated blocks, (iii) to arrange data in the stripe for the data to be stored in one or more allocated blocks across the disks of the array, (iv) to assign the redundant information in a non-fixed pattern to the one or more reserved unallocated block, and (iv) to write the data in the allocated blocks and the redundant information in the one or more reserved unallocated blocks as the stripe across the disks of the array. - View Dependent Claims (43)
-
44. A computer readable medium containing executable program instructions for distributing parity across disks of an array, the executable instructions comprising one or more program instructions for:
-
determining which blocks are unallocated in a stripe across the disks, where each disk has a plurality of blocks; reserving unallocated blocks for storing the redundant information in one or more reserved unallocated blocks; arranging data in the stripe for the data to be stored in one or more allocated blocks across the disks of the array; and assigning the redundant information in a non-fixed pattern to the one or more reserved unallocated block; and writing the data in the allocated blocks and the redundant information in the one or more reserved unallocated blocks as the stripe across the disks of the array.
-
-
45. A method for distributing redundant information across disks of an array with a plurality of blocks on each disk, comprising:
-
allocating data to blocks in a stripe layout, where the stripe layout represents a stripe across the disks of the array; reserving unallocated blocks for storing the redundant information in one or more reserved unallocated blocks; assigning the redundant information to the one or more reserved unallocated blocks in a non-fixed pattern; and writing the data in the allocated blocks and the redundant information in the one or more reserved unallocated blocks as the stripe across the disks of the array. - View Dependent Claims (46, 47, 48, 49, 50, 51)
-
Specification