Redundant array parity caching system
First Claim
Patent Images
1. A redundant storage array system including:
- a. a plurality of failure independent data storage units for storing data and redundancy information in the form of blocks;
b. caching means for temporarily storing remaining redundancy row parity (RRR-parity) blocks derived from the plurality of data storage units;
c. storage unit controller means, coupled to the plurality of data storage units and to the caching means, for;
(1) controlling reading data and redundancy blocks from, and writing data and redundancy blocks to, the plurality of data storage units;
(2) computing RRR-parity blocks derived from the plurality of data storage units; and
(3) caching the computed RRR-parity blocks in the caching means.
4 Assignments
0 Petitions
Accused Products
Abstract
An apparatus and method for improving the input/output performance of a redundant storage array system. The present invention provides a "special parity" cache within the controller for a redundant storage array system, and means for determining and caching a quantity known as the "remaining redundancy row parity" (RRR-parity) block. The RRR-parity block is equal to the old parity block of a redundancy row XOR'"'"'d with an old data block being read from the same redundancy row. By caching RRR-parity blocks, Write-intensive storage unit operations can be reduced by up to three input/output accesses.
87 Citations
28 Claims
-
1. A redundant storage array system including:
-
a. a plurality of failure independent data storage units for storing data and redundancy information in the form of blocks; b. caching means for temporarily storing remaining redundancy row parity (RRR-parity) blocks derived from the plurality of data storage units; c. storage unit controller means, coupled to the plurality of data storage units and to the caching means, for; (1) controlling reading data and redundancy blocks from, and writing data and redundancy blocks to, the plurality of data storage units; (2) computing RRR-parity blocks derived from the plurality of data storage units; and (3) caching the computed RRR-parity blocks in the caching means. - View Dependent Claims (2, 3)
-
-
4. A redundant storage array system including:
-
a. a plurality of failure independent data storage units for storing data and redundancy information in the form of blocks; b. caching means for temporarily storing remaining redundancy row parity (RRR-parity) blocks derived from the plurality of data storage units; c. a storage unit controller means, coupled to the plurality of data storage units and to the caching means, for; (1) receiving from a processor at least one command to read an old data block from at least one data storage unit; (2) reading the old data block from at least one data storage unit; (3) communicating with the caching means to determine if an RRR-parity block corresponding to the previously read old data block is stored therein, and if such a corresponding RRR-parity block is not stored within the caching means, then; (a) reading an old redundancy block, corresponding to the read data block, from at least one data storage unit; (b) computing an RRR-parity block from the read data block and the corresponding read redundancy block; (c) caching the computed RRR-parity block in the caching means. - View Dependent Claims (5)
-
-
6. A redundant storage array system including:
-
a. a plurality of failure independent data storage units for storing data and redundancy information in the form of blocks; b. caching means for temporarily storing remaining redundancy row parity (RRR-parity) blocks derived from the plurality of data storage units; c. a storage unit controller, coupled to the plurality of data storage units and to the caching means, comprising control means for modifying a data block including means for; (1) receiving a new data block from a processor; (2) communicating with the caching means to retrieve an RRR-parity block stored therein corresponding to the received new data block, and if such a corresponding RRR-parity block is not stored within the caching means, then; (a) reading an old data block, corresponding to the new data block, from at least one data storage unit; (b) reading an old redundancy block, corresponding to the new data block, from at least one data storage unit; (c) computing an RRR-parity block, corresponding to the new data block, from the previously read old data block and the corresponding read redundancy block; (d) caching the computed RRR-parity block in the caching means; (3) generating a new redundancy block from the new data block and the RRR-parity block corresponding to the new data block; (4) writing the new redundancy block to at least one data storage unit; (5) writing the new data block over the previously read old data block. - View Dependent Claims (7, 8)
-
-
9. A redundant storage array system including:
-
a. a plurality of failure independent data storage units for storing data and redundancy information in the form of blocks; b. caching means for temporarily storing remaining redundancy row parity (RRR-parity) blocks derived from the plurality of data storage units; c. a storage unit controller, coupled to the plurality of data storage units and to the caching means, comprising control means for modifying a data block including means for; (1) receiving from a processor at least one command to read an old data block from at least one data storage unit; (2) reading the old data block from at least one data storage unit; (3) communicating with the caching means to determine if an RRR-parity block corresponding to the previously read old data block is stored therein, and if such a corresponding RRR-parity block is not stored within the caching means, then; (a) reading an old redundancy block, corresponding to the read data block, from at least one data storage unit; (b) computing an RRR-parity block from the read data block and the corresponding read redundancy block; (c) caching the computed RRR-parity block in the caching means; (4) transmitting the read data block to the processor; (5) receiving a new data block from the processor; (6) communicating with the caching means to retrieve an RRR-parity block stored therein corresponding to the received new data block, and if such a corresponding RRR-parity block is not stored within the caching means, then; (a) reading an old data block, corresponding to the new data block, from at least one data storage unit; (b) reading an old redundancy block, corresponding to the new data block, from at least one data storage unit; (c) computing an RRR-parity block, corresponding to the new data block, from the previously read old data block and the corresponding read redundancy block; (d) caching the computed RRR-parity block in the caching means; (7) generating a new redundancy block from the new data block and the RRR-parity block corresponding to the new data block; (8) writing the new redundancy block to at least one data storage unit; (9) writing the new data block over the previously read old data block. - View Dependent Claims (10, 11)
-
-
12. A redundant storage array system including:
-
a. a plurality of failure independent data storage units for storing data and redundancy information in the form of blocks; b. caching means for temporarily storing remaining redundancy row parity (RRR-parity) blocks derived from the plurality of data storage units; c. a storage unit controller, coupled to the plurality of data storage units and to the caching means, comprising control means for modifying a data block including means for; (1) receiving from a processor at least one command to read an old data block from at least one data storage unit; (2) reading the old data block from at least one data storage unit; (3) transmitting the read data block to the processor; (4) receiving a new data block from the processor; (5) communicating with the caching means to retrieve an RRR-parity block stored therein corresponding to the received new data block, and if such a corresponding RRR-parity block is not stored within the caching means, then; (a) reading an old data block, corresponding to the new data block, from at least one data storage unit; (b) reading an old redundancy block, corresponding to the new data block, from at least one data storage unit; (c) computing an RRR-parity block, corresponding to the new data block, from the previously read old data block and the corresponding read redundancy block; (d) caching the computed RRR-parity block in the caching means; (6) generating a new redundancy block from the new data block and the RRR-parity block corresponding to the new data block; (7) writing the new redundancy block to at least one data storage unit; (8) writing the new data block over the previously read old data block. - View Dependent Claims (13, 14)
-
-
15. In a redundant storage array system including a controller, a cache coupled to the controller, and a plurality of failure independent data storage units coupled to the controller for storing data and redundancy information in the form of blocks, a method for improving the input/output performance of the redundant storage array system comprising the step of:
a. caching remaining redundancy row parity (RRR-parity) blocks derived from the plurality of data storage units. - View Dependent Claims (16, 17)
-
18. In a redundant storage array system including a controller, a cache coupled to the controller, and a plurality of failure independent data storage units coupled to the controller for storing data and redundancy information in the form of blocks, a method for improving the input/output performance of the redundant storage array system comprising the steps of:
-
a. receiving from a processor at least one command to read an old data block from at least one data storage unit; b. reading the old data block from at least one data storage unit; c. determining if an RRR-parity block corresponding to the previously read old data block is stored within the cache, and if such a corresponding RRR-parity block is not stored within the cache, then; (1) reading an old redundancy block, corresponding to the read data block, from at least one data storage unit; (2) computing an RRR-parity block from the read data block and the corresponding read redundancy block; (3) caching the computed RRR-parity block in the cache. - View Dependent Claims (19)
-
-
20. In a redundant storage array system including a controller, a cache coupled to the controller, and a plurality of failure independent data storage units coupled to the controller for storing data and redundancy information in the form of blocks, a method for improving the input/output performance of the redundant storage array system comprising the steps of:
-
a. receiving a new data block from a processor; b. retrieving an RRR-parity block stored in the cache corresponding to the received new data block, and if such a corresponding RRR-parity block is not stored within the cache, then; (1) reading an old data block, corresponding to the new data block, from at least one data storage unit; (2) reading an old redundancy block, corresponding to the new data block, from at least one data storage unit; (3) computing an RRR-parity block, corresponding to the new data block, from the previously read old data block and the corresponding read redundancy block; (4) caching the computed RRR-parity block in the cache; c. generating a new redundancy block from the new data block and the RRR-parity block corresponding to the new data block; d. writing the new redundancy block to at least one data storage unit; e. writing the new data block over the previously read old data block. - View Dependent Claims (21, 22)
-
-
23. In a redundant storage array system including a controller, a cache coupled to the controller, and a plurality of failure independent data storage units coupled to the controller for storing data and redundancy information in the form of blocks, a method for improving the input/output performance of the redundant storage array system comprising the steps of:
-
a. receiving from a processor at least one command to read an old data block from at least one data storage unit; b. reading the old data block from at least one data storage unit; c. determining if an RRR-parity block corresponding to the previously read old data block is stored within the cache, and if such a corresponding RRR-parity block is not stored within the cache, then; (1) reading an old redundancy block, corresponding to the read data block, from at least one data storage unit; (2) computing an RRR-parity block from the read data block and the corresponding read redundancy block; (3) caching the computed RRR-parity block in the cache; d. transmitting the read data block to the processor; e. receiving a new data block from the processor; f. retrieving an RRR-parity block stored in the cache corresponding to the received new data block, and if such a corresponding RRR-parity block is not stored within the cache, then; (1) reading an old data block, corresponding to the new data block, from at least one data storage unit; (2) reading an old redundancy block, corresponding to the new data block, from at least one data storage unit; (3) computing an RRR-parity block, corresponding to the new data block, from the previously read old data block and the corresponding read redundancy block; (4) caching the computed RRR-parity block in the cache; g. generating a new redundancy block from the new data block and the RRR-parity block corresponding to the new data block; h. writing the new redundancy block to at least one data storage unit; i. writing the new data block over the previously read old data block. - View Dependent Claims (24, 25)
-
-
26. In a redundant storage array system including a controller, a cache coupled to the controller, and a plurality of failure independent data storage units coupled to the controller for storing data and redundancy information in the form of blocks, a method for improving the input/output performance of the redundant storage array system comprising the steps of:
-
a. receiving from a processor at least one command to read an old data block from at least one data storage unit; b. reading the old data block from at least one data storage unit; c. transmitting the read data block to the processor; d. receiving a new data block from the processor; e. retrieving an RRR-parity block stored in the cache corresponding to the received new data block, and if such a corresponding RRR-parity block is not stored within the cache, then; (1) reading an old data block, corresponding to the new data block, from at least one data storage unit; (2) reading an old redundancy block, corresponding to the new data block, from at least one data storage unit; (3) computing an RRR-parity block, corresponding to the new data block, from the previously read old data block and the corresponding read redundancy block; (4) caching the computed RRR-parity block in the cache; f. generating a new redundancy block from the new data block and the RRR-parity block corresponding to the new data block; g. writing the new redundancy block to at least one data storage unit; h. writing the new data block over the previously read old data block. - View Dependent Claims (27, 28)
-
Specification