Storage device array architecture with copyback cache
First Claim
1. A fault-tolerant storage device array including:
- a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks;
c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for;
(1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
(2) during idle time of at least some of the plurality of storage units;
(a) reading at least one pending data block from at least one copyback cache storage unit;
(b) accessing the storage units and reading information corresponding to each read pending data block;
(c) generating an associated error-correction block from the read information and each read pending data block;
(d) writing each such read pending data block and associated error-correction block to a corresponding stripe of the idle storage units;
(3) reading requested data blocks from at least one copyback cache storage unit when such requested data blocks have not been written to the plurality of storage units, otherwise from the plurality of storage units.
3 Assignments
0 Petitions
Accused Products
Abstract
A fault-tolerant storage device array using a copyback cache storage unit for temporary storage. When a Write occurs to the RAID system, the data is immediately written to the first available location in the copyback cache storage unit. Upon completion of the Write to the copyback cache storage unit, the host CPU is immediately informed that the Write was successful. Thereafter, further storage unit accesses by the CPU can continue without waiting for an error-correction block update for the data just written. In a first embodiment of the invention, during idle time for relevant storage units of the storage system, an error-correction block is computed for each "pending" data block on the copyback cache storage unit, and the data block and corresponding error-correction block are copied to their proper location in the RAID system. The copyback cache storage unit in effect stores "peak load" Write data and then completes the actual Write operations to the RAID system during relatively quiescent periods of I/O accesses by the CPU. In a second embodiment of the invention, after Write data is logged to the copyback cache storage unit, normal Read-Modify-Write operation by the RAID system controller continues in overlapped fashion with other CPU I/O accesses using Write data in the controller'"'"'s buffer memory. Performance is enhanced because the CPU can continue processing as soon as the simple Write operation to the copyback cache storage unit completes, thus eliminating the delay caused by a normal Read-Modify-Wrote RAID system. In this embodiment, the copyback cache storage unit acts more as a running "log" of Write data.
279 Citations
22 Claims
-
1. A fault-tolerant storage device array including:
-
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks; b. at least one copyback cache storage unit for temporarily storing data blocks; c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for; (1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks; (2) during idle time of at least some of the plurality of storage units; (a) reading at least one pending data block from at least one copyback cache storage unit; (b) accessing the storage units and reading information corresponding to each read pending data block; (c) generating an associated error-correction block from the read information and each read pending data block; (d) writing each such read pending data block and associated error-correction block to a corresponding stripe of the idle storage units; (3) reading requested data blocks from at least one copyback cache storage unit when such requested data blocks have not been written to the plurality of storage units, otherwise from the plurality of storage units. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for storing data in a fault-tolerant storage device array comprising a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks, including the steps of:
-
a. providing at least one copyback cache storage unit for temporarily writing received data blocks; b. writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks; c. during idle time of at least one of the plurality of storage units; (1) reading at least one pending data block from at least one copyback cache storage unit; (2) accessing the storage units and reading information corresponding to each read pending data block; (3) generating an associated error-correction block from the read information and each such read pending data block; (4) writing each such read pending data block and associated error-correction block to a corresponding stripe of the idle storage units; d. reading requested data blocks from at least one copyback cache storage unit when such requested data blocks have not been written to the plurality of storage units, otherwise from the plurality of storage units. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A fault-tolerant storage device array including:
-
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks; b. at least one copyback cache storage unit for temporarily storing data blocks; c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, having a buffer memory and including control means for; (1) writing received data blocks initially onto the at least one copyback cache storage unit; (2) temporarily storing received data blocks in the buffer memory as pending data blocks; (3) during idle time of at least some of the plurality of storage units; (a) accessing at least one pending data block from the buffer memory; (b) accessing the storage units and reading information corresponding to each accessed pending data block; (c) generating an associated error-correction block from the read information and each accessed pending data block; (d) writing each such accessed pending data block and associated error-correction block to a corresponding stripe of the idle storage units; (4) reading requested data blocks from the buffer memory when such requested data block have not been written to the plurality of storage units, otherwise from the plurality of storage units. - View Dependent Claims (12, 13, 14, 15, 16)
-
-
17. A method for storing data in a fault-tolerant storage device array comprising a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks, including the steps of:
-
a. providing buffer memory and at least one copyback cache storage unit for temporarily storing data blocks; b. writing received data blocks initially onto the at least one copyback cache storage unit; c. temporarily storing received data blocks in the buffer memory as pending data blocks; d. during idle time of at least one of the plurality of storage units; (1) accessing at least one pending data block from the buffer memory; (2) accessing the storage units and reading the information corresponding to each accessed pending data blocks; (3) generating an associated error-correction block from the read information and each such accessed pending data block; (4) writing each such accessed pending data block and associated error-correction block to a corresponding stripe of the idle storage units; e. reading requested data blocks from the buffer memory when such requested data blocks have not been written to the plurality of storage units, otherwise from the plurality of storage units. - View Dependent Claims (18, 19, 20, 21, 22)
-
Specification