Method and system for increasing parallelism of disk accesses when restoring data in a disk array system
Abstract
In a disk array environment such as a RAID-6 environment, the overall performance overhead associated with exposed mode operations such as resynchronization, rebuild and exposed mode read operations is reduced through increased parallelism. By selecting only subsets of the possible disks required to solve a parity stripe equation for a particular parity stripe, accesses to one or more disks in a disk array may be omitted, thus freeing the omitted disks to perform other disk accesses. In addition, disk accesses associated with different parity stripes may be overlapped such that the retrieval of data necessary for restoring data for one parity stripe is performed concurrently with the storage of restored data for another parity stripe.
Claims
exact text as granted — not AI-modified1 . A method of accessing a disk array comprising N disks, the method comprising the steps of, for each of a plurality of parity stripes defined in the disk array:
selecting a different subset of disks among the N disks to be used to solve a parity stripe equation for such parity stripe, wherein each subset of disks includes at most N-2 disks; initiating retrieval of data associated with such parity stripe only from the selected subset of disks; and solving the parity stripe equation using the retrieved data.
2 . The method of claim 1 , wherein the step of selecting comprises the step of randomly selecting the subset of disks.
3 . The method of claim 1 , wherein the disk array is of the type wherein the data in each parity stripe is related by multiple parity stripe equations.
4 . The method of claim 1 , wherein the disk array comprises a RAID-6 system.
5 . The method of claim 1 , wherein solving the parity stripe equation comprises rebuilding a data value, the method further comprising initiating storage of the data value to one of the disks other than the subset of disks.
6 . The method of claim 1 , further comprising initiating storage of a result of the parity stripe equation for a first parity stripe concurrently with initiating retrieval of data associated with a second parity stripe.
7 . A method of restoring data in a RAID-6 system of N disks, the method comprising the steps of:
identifying a plurality of data values, each to be restored to a respective one of the N disks, wherein each data value is capable of being restored from data retrieved from the other N-1 disks; and for each of the plurality of data values selecting N-2 disks from the respective other N-1 disks to be used to calculate the data value; and initiating retrieval of data from the respective selected N-2 disks for each of the plurality of data values, wherein the selection of N-2 disks for each of the plurality of data values balances utilization of the N disks during restoration of the data.
8 . The method of claim 7 , wherein the step of selecting N-2 disks includes selecting the N-2 disks randomly.
9 . A program product comprising:
program code configured upon execution to access a disk array of the type comprising N disks by, for each of a plurality of parity stripes defined in the disk array, selecting a different subset of disks among the N disks to be used to solve a parity stripe equation for such parity stripe, initiating retrieval of data associated with such parity stripe only from the selected subset of disks, and solving the parity stripe equation using the retrieved data, wherein each subset of disks includes at most N-2 disks; and a computer readable signal bearing medium bearing the program code.
10 . An apparatus comprising:
an interface configured to couple to at least N disks in a disk array; and a disk array controller coupled to the interface, the disk array controller configured to, for each of a plurality of parity stripes defined in the disk array, select a different subset of disks among the N disks to be used to solve a parity stripe equation for such parity stripe, initiate retrieval of data associated with such parity stripe only from the selected subset of disks, and solve the parity stripe equation using the retrieved data, wherein each subset of disks includes at most N-2 disks.
11 . The apparatus of claim 10 , wherein the disk array controller comprises a RAID-6 controller.
12 . The apparatus of claim 10 , wherein the disk array controller comprises program code configured to perform at least one of selecting the different subset, initiating retrieval of the data, and solving the parity stripe equation.
13 . The apparatus of claim 10 , further comprising a plurality of disks coupled to the interface.
14 . The apparatus of claim 10 , wherein the disk array controller is configured to select the different subset of disks by randomly selecting the subset of disks.
15 . The apparatus of claim 10 , wherein the disk array controller is configured to solve the parity stripe equation by rebuilding a data value, and to initiate storage of the data value to one of the disks other than the subset of disks.
16 . The apparatus of claim 10 , wherein the disk array controller is further configured to initiate storage of a result of the parity stripe equation for a first parity stripe concurrently with initiating retrieval of data associated with a second parity stripe.
17 . A method of restoring data in a disk array comprising a plurality of disks, the method comprising the steps of:
reading from the disk array a first set of data associated with a first parity stripe; writing to the disk array a result value generated by processing the first set of data; and concurrently with writing the result value to the disk array, reading from the disk array a second set of data associated with a second parity stripe.
18 . The method of claim 17 , further comprising:
writing to the disk array a second result value generated by processing the second set of data; and concurrently with writing the second result value to the disk array, reading from the disk array a third set of data.
19 . The method of claim 18 , wherein the first and second result values are generated by processing the first and second sets of data using at least one parity stripe equation.
20 . The method of claim 19 , wherein the third set of data is associated with the first parity stripe, the method further comprising:
writing to the disk array a third result value generated by processing the third set of data using a second parity stripe equation.
21 . The method of claim 20 , further comprising:
concurrently with writing the third result value to the disk array, reading from the disk array a fourth set of data associated with the second parity stripe; and writing to the disk array a fourth result value generated by processing the fourth set of data using the second parity stripe equation.
22 . The method of claim 19 , wherein the first and second result values each comprise a parity value, and wherein writing the first and second result values are performed to synchronize parity and data for the first and second parity stripes.
23 . The method of claim 19 , wherein the first and second result values each comprise a data value, and wherein writing the first and second result values are performed to rebuild data for a disk in the disk array.
24 . The method of claim 18 , wherein the third set of data is associated with a third parity stripe.
25 . The method of claim 17 , wherein writing the result value to the disk array comprises writing the result value to a first disk in the disk array, and wherein reading the second set of data from the disk array comprises reading the second set of data from a subset of disks in the disk array that excludes the first disk.
26 . A program product comprising:
program code configured upon execution to restore data in a disk array of the type comprising a plurality of disks by reading from the disk array a first set of data associated with a first parity stripe, writing to the disk array a result value generated by processing the first set of data, and reading from the disk array a second set of data associated with a second parity stripe concurrently with writing the result value to the disk array; and a computer readable signal bearing medium bearing the program code.
27 . An apparatus comprising:
an interface configured to couple to a plurality of disks in a disk array; and a disk array controller coupled to the interface, the disk array controller configured to restore data in the disk array by reading from the disk array a first set of data associated with a first parity stripe, writing to the disk array a result value generated by processing the first set of data, and reading from the disk array a second set of data associated with a second parity stripe concurrently with writing the result value to the disk array.
28 . The apparatus of claim 27 , wherein the disk array controller comprises a RAID-6 controller.
29 . The apparatus of claim 27 , wherein the disk array controller comprises program code configured to perform at least one of selecting the different subset, initiating retrieval of the data, and solving the parity stripe equation.
30 . The apparatus of claim 27 , further comprising a plurality of disks coupled to the interface.
31 . The apparatus of claim 27 , wherein the disk array controller is further configured to write to the disk array a second result value generated by processing the second set of data, and read from the disk array a third set of data concurrently with writing the second result value to the disk array.
32 . The apparatus of claim 31 , wherein the disk array controller is configured to generate the first and second result values by processing the first and second sets of data using at least one parity stripe equation.
33 . The apparatus of claim 32 , wherein the third set of data is associated with the first parity stripe, and wherein the disk array controller is further configured to write to the disk array a third result value generated by processing the third set of data using a second parity stripe equation.
34 . The apparatus of claim 33 , wherein the disk array controller is further configured to read from the disk array a fourth set of data associated with the second parity stripe concurrently with writing the third result value to the disk array, and to write to the disk array a fourth result value generated by processing the fourth set of data using the second parity stripe equation.
35 . The apparatus of claim 32 , wherein the first and second result values each comprise a parity value, and wherein the disk array controller is configured to write the first and second result values to synchronize parity and data for the first and second parity stripes.
36 . The apparatus of claim 32 , wherein the first and second result values each comprise a data value, and wherein the disk array controller is configured to write the first and second result values to rebuild data for a disk in the disk array.
37 . The apparatus of claim 31 , wherein the third set of data is associated with a third parity stripe.
38 . The apparatus of claim 27 , wherein the disk array controller is configured to write the result value to the disk array by writing the result value to a first disk in the disk array, and wherein the disk array controller is configured to read the second set of data from the disk array by reading the second set of data from a subset of disks in the disk array that excludes the first disk.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.