Frequently-redundant array of independent disks
First Claim
1. A method for storing data in a fault-tolerant storage device having a plurality of disk units forming a disk array with a plurality of stripes for storing data and parity information, comprising the steps of:
- identifying at least one target area on said array to write new data, with said at least one target area including old data and being associated with one of said plurality of stripes, defining an updated stripe;
in the absence of a reading step, writing new data to said at least one target area, said new data not having corresponding parity information defining unprotected data;
monitoring a quantity of said unprotected data present on said array to detect presence of a preselected condition related to susceptibility of said at least one target area to loss of said unprotected data; and
in response to said step of monitoring said quantity of said unprotected data and prior to completion of writing all of said new data at said at least one target area, dynamically adjusting said quantity of unprotected data present on said array by generating and writing parity information corresponding to a first portion of said new data to said disk array, while leaving a second portion of said new data as unprotected data.
4 Assignments
0 Petitions
Accused Products
Abstract
There is provided a method and apparatus for effectuating data updates on a fault-tolerant storage device having a plurality of disk-drive units forming a disk array, with parity-block updates temporarily suspended to provide increased performance. Parity-block updates are typically deferred until the array is idle. Thus, data is written onto the array with no parity error correction information being present for a short amount of time. Data updates are effectuated by identifying the blocks in the array where data is to be written. New data is then written directly to the identified blocks without reading the old data present therein. A "needs parity rebuild bit" (NPRB) is written to non-volatile memory, identifying the stripes not having parity information on the array. The number of NPRBs present is monitored to allow continuous calculation of a mean-time-to-data-loss (MTTDL). If the MTTDL is acceptable, parity updates are deferred until the array is idle. To that end, the I/O patterns to and from the array are monitored to determine idleness. If the I/O patterns indicate that the disk array is idle, new data is read and parity information is generated which is then written to the array.
157 Citations
18 Claims
-
1. A method for storing data in a fault-tolerant storage device having a plurality of disk units forming a disk array with a plurality of stripes for storing data and parity information, comprising the steps of:
-
identifying at least one target area on said array to write new data, with said at least one target area including old data and being associated with one of said plurality of stripes, defining an updated stripe; in the absence of a reading step, writing new data to said at least one target area, said new data not having corresponding parity information defining unprotected data; monitoring a quantity of said unprotected data present on said array to detect presence of a preselected condition related to susceptibility of said at least one target area to loss of said unprotected data; and in response to said step of monitoring said quantity of said unprotected data and prior to completion of writing all of said new data at said at least one target area, dynamically adjusting said quantity of unprotected data present on said array by generating and writing parity information corresponding to a first portion of said new data to said disk array, while leaving a second portion of said new data as unprotected data. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method for storing data in a fault-tolerant storage device having a plurality of disk drive units forming a disk array with a plurality of stripes for storing data and parity information, comprising the steps of:
-
monitoring the I/O patterns to and from the disk drive units of the array to determine the idleness of the disk array; identifying multiple target areas on each disk of said array to write new data, with at least one of said multiple target areas including old data, with said multiple target areas being associated with one of said plurality of stripes, defining a target stripe; in the absence of a reading step, writing new data to a plurality of said multiple target areas, wherein new data not having corresponding parity information stored on said array defines unprotected data; monitoring a quantity of unprotected data present on said array to detect when said quantity exceeds a preselected threshold; and in response to said monitoring of said quantity of unprotected data, dynamically adjusting the quantity of unprotected data by generating and writing to said target stripe parity information corresponding to said unprotected data to at least one of said multiple target areas such that said quantity is maintained at a level below said preselected threshold. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. An apparatus for generating parity information for a plurality of disk drives, comprising:
-
a plurality of individual disk drives defining an array of disks having a plurality of stripes, each of said plurality of stripes having multiple target areas in which data may be written, with at least one of said multiple target areas including old data, defining an old data target area; a controller means, in data communication with said array, for coordinating the operation of said array; means, in data communication with both said controller means and said array, for writing new data onto a first plurality of said multiple target areas, including said old data target area, defining new data target areas; means, in data communication with said controller means, for generating parity information from said new data present in said new data target areas, whereby new data not having corresponding parity information written on said array defines unprotected data; means, in data communication with both said controller means and said array, for monitoring a quantity of unprotected data present on said array to detect presence of a preselected condition relating to susceptibility of said new data target areas to loss of said new data; means, in data communication with both controller means and said array and responsive to said monitoring means, for dynamically adjusting said quantity of unprotected data on said array by generating and writing parity information corresponding to a first portion of said new data to said array, while leaving a second portion of said new data as unprotected data. - View Dependent Claims (16, 17, 18)
-
Specification