Use of activity bins to increase the performance of disk arrays
First Claim
1. A method of reducing a rebuild time of a disk drive in a disk array, the method comprising:
- maintaining activity data indicating a respective state of each of a plurality of disk address ranges in which input/output (I/O) data can be stored on the disk drive, wherein the activity data for each disk address range reflects whether that disk address range is the target of a write operation that is pending, such that the activity data for the plurality of disk address ranges may be used following a power failure to identify disk address ranges in which one or more write operations did not complete successfully; and
during a rebuild operation, skipping over at least one of the disk address ranges for which the activity data indicates that no rebuild of I/O data is required.
4 Assignments
0 Petitions
Accused Products
Abstract
A disk array controller reliably improves performance in RAID configurations without the need for a battery backup. Write completion interrupts are queued until a write cache flush has been performed and are then sent to a host system. States of ranges of disk addresses (activity bins) are stored in nonvolatile storage elements associated with the ranges. The states allow rebuild times to be reduced after power failures and drive failures. A range is in a Changing state if at least one of the addresses is the target of a write operation that has been initiated but not completed. The range is in a Stable state if no addresses are the target of an uncompleted write operation. Two additional states are used to identify ranges of disk addresses that have been zeroed or never been written to. The additional states allow substantial reductions in RAID volume creation times.
-
Citations
40 Claims
-
1. A method of reducing a rebuild time of a disk drive in a disk array, the method comprising:
-
maintaining activity data indicating a respective state of each of a plurality of disk address ranges in which input/output (I/O) data can be stored on the disk drive, wherein the activity data for each disk address range reflects whether that disk address range is the target of a write operation that is pending, such that the activity data for the plurality of disk address ranges may be used following a power failure to identify disk address ranges in which one or more write operations did not complete successfully; and
during a rebuild operation, skipping over at least one of the disk address ranges for which the activity data indicates that no rebuild of I/O data is required. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 26, 27, 28, 29, 30, 31)
-
-
10. A method of rebuilding a disk array, the method comprising:
-
for each of a plurality of ranges of multiple disk addresses representing substantially the entire addressable storage space of the disk array, maintaining an associated memory element;
storing disk activity data in at least one of the memory elements; and
performing a rebuild of a drive in the disk array, wherein the rebuild skips the rebuilding of at least one address range based at least upon disk activity data stored in a memory element for the address range, wherein the disk activity data stored in at least one of the memory elements indicates that the associated address range does not contain written data.
-
-
11. A method of rebuilding a disk array, the method comprising:
-
for each of a plurality of ranges of multiple disk addresses representing substantially the entire addressable storage space of the disk array, maintaining an associated memory element;
storing disk activity data in at least one of the memory elements; and
performing a rebuild of a drive in the disk array, wherein the rebuild skips the rebuilding of at least one address range based at least upon disk activity data stored in a memory element for the address range, wherein the disk activity data stored in at least one of the memory elements indicates that the associated address range may have been the target of a write that may not have been completed.
-
-
12. A method of rebuilding a disk array, the method comprising:
-
for each of a plurality of ranges of multiple disk addresses representing substantially the entire addressable storage space of the disk array, maintaining an associated memory element;
storing disk activity data in at least one of the memory elements; and
performing a rebuild of a drive in the disk array, wherein the rebuild skips the rebuilding of at least one address range based at least upon disk activity data stored in a memory element for the address range, wherein the disk activity data stored in at least one of the memory elements indicates that the associated address range has not been the target of a write that may not have been completed.
-
-
13. A method of rebuilding a disk array, the method comprising:
-
for each of a plurality of ranges of multiple disk addresses representing substantially the entire addressable storage space of the disk array maintaining an associated memory element;
storing disk activity data in at least one of the memory elements; and
performing a rebuild of a drive in the disk array, wherein the rebuild skips the rebuilding of at least one address range based at least upon disk activity data stored in a memory element for the address range, wherein the disk activity data stored in a memory element indicates at least whether any portion of an address range corresponding to the memory element has been the target of an initiated write operation the completion of which has not been confirmed.
-
-
14. A method of rebuilding a disk array, the method comprising:
-
for each of a plurality of ranges of multiple disk addresses representing substantially the entire addressable storage space of the disk array, maintaining an associated memory element;
storing disk activity data in at least one of the memory elements; and
performing a rebuild of a drive in the disk array, wherein the rebuild skips the rebuilding of at least one address range based at least upon disk activity data stored in a memory element for the address range, wherein the disk activity data stored in a memory element indicates at least whether an address range corresponding to the memory element has been zeroed.
-
-
15. A method of rebuilding a disk array, the method comprising:
-
for each of a plurality of ranges of multiple disk addresses representing substantially the entire addressable storage space of the disk array, maintaining an associated memory element;
storing disk activity data in at least one of the memory elements; and
performing a rebuild of a drive in the disk array wherein the rebuild skips the rebuilding of at least one address range based at least upon disk activity data stored in a memory element for the address range, wherein the disk activity data stored in a memory element further indicates at least whether an address range corresponding to the memory element has ever been written to.
-
-
16. A method of rebuilding a disk array, the method comprising:
-
for each of a plurality of ranges of multiple disk addresses representing substantially the entire addressable storage space of the disk array, maintaining an associated memory element;
storing disk activity data in at least one of the memory elements; and
performing a rebuild of a drive in the disk array wherein the rebuild skips the rebuilding of at least one address range based at least upon disk activity data stored in a memory element for the address range, wherein the disk activity data stored in a memory element indicates at least whether any portion of an address range corresponding to the memory element has been the target of an initiated write operation.
-
-
17. A method of rebuilding a disk array, the method comprising:
-
for each of a plurality of ranges of multiple disk addresses representing substantially the entire addressable storage space of the disk array, maintaining an associated memory element;
storing disk activity data in at least one of the memory elements, wherein the disk activity data for a disk address range indicates at least one of the following;
(a) whether the respective disk address range is the target of a pending write operation, (b) whether the respective disk address range has been written to since being zeroed, (c) whether the respective disk address range has been written to since creation of a corresponding array unit; and
selectively rebuilding portions of a drive in the disk array based at least upon disk activity data stored in at least one of the memory elements, whereby a rebuild time is reduced. - View Dependent Claims (18, 32, 33, 34, 35)
-
-
19. A method of operating a RAID volume, the method comprising:
-
receiving a first write operation directed to a first range of target addresses;
storing activity data in a first nonvolatile memory element associated with the first range of target addresses;
no earlier than the activity data has been stored in the first nonvolatile memory element, initiating the first write operation;
experiencing a loss of power that interrupts the completion of the first write operation;
after power is restored, rebuilding at least the first range of target addresses based at least upon the activity data stored in the first nonvolatile memory element;
receiving a second write operation directed to a second range of target addresses;
initiating the second write operation;
no earlier than the second write operation has been completed and before the loss of power, storing activity data in the nonvolatile memory element associated with the second range of target addresses; and
after power is restored, skipping the rebuilding of at least the second range of target addresses based at least upon the activity data stored in the second nonvolatile memory element.
-
-
20. A method for maintaining a history of recently occurring disk activity, the method comprising:
-
maintaining two sets of storage elements in a nonvolatile memory;
storing disk activity data related to a write operation within both sets of storage elements before initiating a write to disk media of write operation data for the write operation; and
periodically clearing alternating ones of the two sets of storage elements such that a most recent set of activity data is not lost when one set of storage elements is cleared. - View Dependent Claims (21)
-
-
22. A method for identifying recently written portions of a disk drive, the method comprising:
-
(a) for each of a plurality of ranges of multiple disk addresses representing substantially the entire addressable storage space of the disk drive, maintaining a first associated memory element in nonvolatile storage and maintaining a second associated memory element in nonvolatile storage;
(b) setting all of the first and second memory elements to a first value;
(c) identifying a write command directed to at least one of the ranges of disk addresses;
(d) for the first and second memory elements that are associated with the at least one range of the ranges of disk addresses to which the write command is directed, setting the first and second memory elements to a second value; and
(e) subsequent to (d), initiating a write operation to execute the write command. - View Dependent Claims (23, 24, 25)
(f) resetting all of the first memory elements to the first value; and
(g) a predetermined amount of time after (f), resetting all of the second memory elements to the first value.
-
-
24. The method of claim 23, further comprising
(h) a predetermined amount of time after (g), repeating (f) and (g); - and
(i) repeating (h) a plurality of times.
- and
-
25. The method of claim 22, further comprising performing a rebuild of the disk drive, wherein the rebuild skips the rebuilding of at least one address range based at least upon disk activity data stored in a memory element for the address range.
-
36. A method of reducing rebuild times in a redundant disk array system, the method comprising:
-
at an outset of a write operation, recording, within a non-volatile memory, an indication that a disk address range to which the write operation corresponds is in a first state;
if the write operation completes successfully and no other write operations are pending within the disk address range, updating the non-volatile memory to indicate that the disk address range is in a second state; and
during a rebuild operation, rebuilding data stored within the disk address range if the non-volatile memory indicates that the disk address range is in the first state, and skipping rebuilding of the data stored within the disk address range if the non-volatile memory indicates that the disk address range is in the second state. - View Dependent Claims (37, 38, 39, 40)
-
Specification