Claims Analysis
Total Claims: 30
Claim 1
Independent Claim
273 words
A storage subsystem for a computer system, comprising: storage subsystem controller, said controller having a processor and a memory; a plurality of data storage units coupled to sad controller, a first group of at least three data storage units coupled to said controller, wherein addressable storage space in said plurality of data storage units corresponds to a two-dimensional array of storage blocks, each column of said array representing a different one of said data storage units, and each row of said array representing a discrete range of storage locations within each storage unit; means for computing parity blocks from data stored in data storage blocks, wherein each parity block is computed from data stored in a corresponding set of data storage blocks, each said data storage block of said set being located on a different one of said data storage units; means for storing said parity blocks on one or more parity rows in said first group of at least three data storage units of said array, said parity rows being fewer than half of all the rows of said array, each of said parity rows comprising a plurality of storage blocks containing parity blocks, wherein each parity block is stored on a storage unit different from any of the storage units containing storage blocks of the set of storage blocks corresponding to said parity block and; a second group of at least one data storage unit, the storage blocks of said second group containing data, each storage block containing data in said second group being associated with a parity block in said first group of said at least three data storage units.
Claim 2
Dependent Claim
273 words
A storage subsystem for a computer system, comprising: storage subsystem controller, said controller having a processor and a memory; a plurality of data storage units coupled to sad controller, a first group of at least three data storage units coupled to said controller, wherein addressable storage space in said plurality of data storage units corresponds to a two-dimensional array of storage blocks, each column of said array representing a different one of said data storage units, and each row of said array representing a discrete range of storage locations within each storage unit; means for computing parity blocks from data stored in data storage blocks, wherein each parity block is computed from data stored in a corresponding set of data storage blocks, each said data storage block of said set being located on a different one of said data storage units; means for storing said parity blocks on one or more parity rows in said first group of at least three data storage units of said array, said parity rows being fewer than half of all the rows of said array, each of said parity rows comprising a plurality of storage blocks containing parity blocks, wherein each parity block is stored on a storage unit different from any of the storage units containing storage blocks of the set of storage blocks corresponding to said parity block and; a second group of at least one data storage unit, the storage blocks of said second group containing data, each storage block containing data in said second group being associated with a parity block in said first group of said at least three data storage units.
Claim 3
Dependent Claim
25 words
The storage subsystem of claim 1, wherein said parity rows are no more than one quarter of the total number of rows of said array.
Claim 4
Dependent Claim
55 words
The storage subsystem of claim 1, wherein said array contains R/N parity rows, R/N being rounded upward to the nearest integer value, where R is the total number of rows of said array and N is the number of said data storage units in said array which contain parity blocks, N being greater than one.
Claim 5
Dependent Claim
29 words
The storage subsystem of claim 3, wherein all data storage units in said array contain parity blocks, N being the total number of data storage units in said array.
Claim 6
Dependent Claim
24 words
The storage subsystem of claim 1, wherein said data storage blocks of each respective set are stored along a respective diagonal of said array.
Claim 7
Dependent Claim
25 words
The storage subsystem of claim 1, wherein said parity rows are located in the upper range of addresses of said first group of storage units.
Claim 8
Dependent Claim
26 words
The storage subsystem of claim 1, wherein said one or more parity rows represent storage locations which are selected to maximize performance of said storage subsystem.
Claim 9
Dependent Claim
241 words
A storage subsystem for a computer system, comprising: storage subsystem controller, said controller having a processor and a memory; at least three data storage units coupled to said controller, wherein addressable storage space in said data storage units corresponds to a two-dimensional array of storage blocks, each column of said array representing a different one of said data storage units, and each row of said array representing a discrete range of storage locations within each storage unit; means for computing parity blocks from data stored in data storage blocks, wherein each parity block is computed from data stored in a corresponding set of data storage blocks, each said data storage block of said set being located on a different one of said data storage units; and means for storing said parity blocks on one or more parity rows of said array, said parity rows being fewer than half of all the rows of said array, each of said parity rows comprising a plurality of storage blocks containing parity blocks, wherein each parity block is stored on a storage unit different from any of the storage units containing storage blocks of the set of storage blocks corresponding to said parity block, wherein said storage units are rotating magnetic disk drive storage units, and wherein said one or more parity rows represent storage locations in a plurality of middle annular regions of respective disk surfaces of said rotating magnetic disk drive storage units.
Claim 10
Dependent Claim
241 words
A storage subsystem for a computer system, comprising: storage subsystem controller, said controller having a processor and a memory; at least three data storage units coupled to said controller, wherein addressable storage space in said data storage units corresponds to a two-dimensional array of storage blocks, each column of said array representing a different one of said data storage units, and each row of said array representing a discrete range of storage locations within each storage unit; means for computing parity blocks from data stored in data storage blocks, wherein each parity block is computed from data stored in a corresponding set of data storage blocks, each said data storage block of said set being located on a different one of said data storage units; and means for storing said parity blocks on one or more parity rows of said array, said parity rows being fewer than half of all the rows of said array, each of said parity rows comprising a plurality of storage blocks containing parity blocks, wherein each parity block is stored on a storage unit different from any of the storage units containing storage blocks of the set of storage blocks corresponding to said parity block, wherein said storage units are rotating magnetic disk drive storage units, and wherein said one or more parity rows represent storage locations in a plurality of middle annular regions of respective disk surfaces of said rotating magnetic disk drive storage units.
Claim 11
Dependent Claim
276 words
A controller for a storage subsystem of a computer system, comprising: a processor; a memory; a first interface for communicating with a processor of said computer system; a second interface for communicating with a plurality of data storage units, wherein addressable storage space in said data storage units corresponds to a two-dimensional array of storage blocks, each column of said array representing a different one of said data storage units, and each row of said array representing a discrete range of storage locations within each storage unit; means for computing parity blocks from data stored in data storage blocks, wherein each parity block is computed from data stored in a corresponding set of data storage blocks, each said data storage block of said set being located on a different one of said data storage units; a first group of said plurality of data storage units, said first group having addressable storage blocks containing data and other addressable storage blocks storing parity information; means for storing said parity blocks on one or more parity rows of said array, said parity rows being fewer than half of all the rows of said array, each of said parity rows comprising a plurality of storage blocks containing parity blocks, wherein each parity block is stored on a storage unit different from any of the storage units containing storage blocks of the set of storage blocks corresponding to said parity block and; a second group of said plurality of data storage units, said second group storing data in said addressable storage blocks of said second group and being associated with addressable storage blocks of said first group that store parity information.
Claim 12
Dependent Claim
276 words
A controller for a storage subsystem of a computer system, comprising: a processor; a memory; a first interface for communicating with a processor of said computer system; a second interface for communicating with a plurality of data storage units, wherein addressable storage space in said data storage units corresponds to a two-dimensional array of storage blocks, each column of said array representing a different one of said data storage units, and each row of said array representing a discrete range of storage locations within each storage unit; means for computing parity blocks from data stored in data storage blocks, wherein each parity block is computed from data stored in a corresponding set of data storage blocks, each said data storage block of said set being located on a different one of said data storage units; a first group of said plurality of data storage units, said first group having addressable storage blocks containing data and other addressable storage blocks storing parity information; means for storing said parity blocks on one or more parity rows of said array, said parity rows being fewer than half of all the rows of said array, each of said parity rows comprising a plurality of storage blocks containing parity blocks, wherein each parity block is stored on a storage unit different from any of the storage units containing storage blocks of the set of storage blocks corresponding to said parity block and; a second group of said plurality of data storage units, said second group storing data in said addressable storage blocks of said second group and being associated with addressable storage blocks of said first group that store parity information.
Claim 13
Dependent Claim
28 words
The controller for a storage subsystem of claim 9, wherein said parity rows are no more than one quarter of the total number of rows of said array.
Claim 14
Dependent Claim
58 words
The controller for a storage subsystem of claim 9, wherein said array contains R/N parity rows, R/N being rounded upward to the nearest integer value, where R is the total number of rows of said array and N is the number of said data storage units in said array which contain parity blocks, N being greater than one.
Claim 15
Dependent Claim
32 words
The controller for a storage subsystem of claim 9, wherein all data storage units in said array contain parity blocks, N being the total number of data storage units in said array.
Claim 16
Dependent Claim
27 words
The controller for a storage subsystem of claim 9, wherein said data storage blocks of each respective set are stored along a respective diagonal of said array.
Claim 17
Dependent Claim
275 words
A computer system, comprising: a bus for communicating among components of said computer system; at least one central processing unit communicating with said bus; a system memory communicating with said bus; a plurality of data storage units further including a first group of at least three data storage units communicating with said bus, and a second group of at least one data storage unit communicating with said bus; wherein addressable storage space in said plurality of data storage units corresponds to a two-dimensional array of storage blocks, each column of said array representing a different one of said data storage units, and each row of said array representing a discrete range of storage locations within each storage unit; means for computing parity blocks from data stored in data storage blocks, wherein each parity block is computed from data stored in a corresponding set of data storage blocks in a first group of at least three data storage units and in a second group of at least one data storage unit, each said data storage block of said set being located on a different one of said data storage units; and means for storing said parity blocks on one or more parity rows in said first group of at least three data storage units of said array, said parity rows being fewer than half of all the rows of said array, each of said parity rows comprising a plurality of storage blocks containing parity blocks, wherein each parity block is stored on a storage unit different from any of the storage units containing storage blocks of the set of storage blocks corresponding to said parity block.
Claim 18
Dependent Claim
275 words
A computer system, comprising: a bus for communicating among components of said computer system; at least one central processing unit communicating with said bus; a system memory communicating with said bus; a plurality of data storage units further including a first group of at least three data storage units communicating with said bus, and a second group of at least one data storage unit communicating with said bus; wherein addressable storage space in said plurality of data storage units corresponds to a two-dimensional array of storage blocks, each column of said array representing a different one of said data storage units, and each row of said array representing a discrete range of storage locations within each storage unit; means for computing parity blocks from data stored in data storage blocks, wherein each parity block is computed from data stored in a corresponding set of data storage blocks in a first group of at least three data storage units and in a second group of at least one data storage unit, each said data storage block of said set being located on a different one of said data storage units; and means for storing said parity blocks on one or more parity rows in said first group of at least three data storage units of said array, said parity rows being fewer than half of all the rows of said array, each of said parity rows comprising a plurality of storage blocks containing parity blocks, wherein each parity block is stored on a storage unit different from any of the storage units containing storage blocks of the set of storage blocks corresponding to said parity block.
Claim 19
Dependent Claim
25 words
The computer system of claim 14, wherein said parity rows are no more than one quarter of the total number of rows of said array.
Claim 20
Dependent Claim
55 words
The computer system of claim 14, wherein said array contains R/N parity rows, R/N being rounded upward to the nearest integer value, where R is the total number of rows of said array and N is the number of said data storage units in said array which contain parity blocks, N being greater than one.
Claim 21
Dependent Claim
24 words
The computer system of claim 14, wherein said data storage blocks of each respective stripe are stored along a respective diagonal of said array.
Claim 22
Independent Claim
295 words
A method for operating a redundant array of a plurality of data storage units, said plurality of data storage units in a first group of at least three data storage units of a data storage system and in a second group of at least one data storage unit of a data storage system, wherein addressable storage space in said data storage units corresponds to a two-dimensional array of storage blocks, each column of said array representing a different one of said data storage units, and each row of said array representing a discrete range of storage locations within each storage unit, said method comprising the machine implemented steps of: identifying data to be written to a first data block of said array of storage blocks; identifying a parity block associated with said data block, said parity block representing a parity function of a set of data blocks, said first data block being a member of said set of data blocks, each of said data blocks of said set and said parity block being stored on a different one of said storage devices; writing said data to be written to said first data block in said first group of data storage units; updating said parity block to reflect said data written to said first data block; writing said data to be written to said second data block in said second group of data storage units; updating said parity block to reflect said data written to said second data block; storing said parity block in one of a plurality of party rows of said first group of storage units of said array, each said parity row containing a plurality of parity blocks, said parity rows being fewer than half the total number of rows of said array.
Claim 23
Independent Claim
295 words
A method for operating a redundant array of a plurality of data storage units, said plurality of data storage units in a first group of at least three data storage units of a data storage system and in a second group of at least one data storage unit of a data storage system, wherein addressable storage space in said data storage units corresponds to a two-dimensional array of storage blocks, each column of said array representing a different one of said data storage units, and each row of said array representing a discrete range of storage locations within each storage unit, said method comprising the machine implemented steps of: identifying data to be written to a first data block of said array of storage blocks; identifying a parity block associated with said data block, said parity block representing a parity function of a set of data blocks, said first data block being a member of said set of data blocks, each of said data blocks of said set and said parity block being stored on a different one of said storage devices; writing said data to be written to said first data block in said first group of data storage units; updating said parity block to reflect said data written to said first data block; writing said data to be written to said second data block in said second group of data storage units; updating said parity block to reflect said data written to said second data block; storing said parity block in one of a plurality of party rows of said first group of storage units of said array, each said parity row containing a plurality of parity blocks, said parity rows being fewer than half the total number of rows of said array.
Claim 24
Dependent Claim
62 words
The method for operating a redundant array of storage units of claim 18, wherein said array contains R/N parity rows, R/N being rounded upward to the nearest integer value, where R is the total number of rows of said array and N is the number of said data storage units in said array which contain parity blocks, N being greater than one.
Claim 25
Dependent Claim
36 words
The method for operating a redundant array of storage units of claim 19, wherein all data storage units in said array contain parity blocks, N being the total number of data storage units in said array.
Claim 26
Dependent Claim
31 words
The method for operating a redundant array of storage units of claim 18, wherein said data storage blocks of each respective set are stored along a respective diagonal of said array.
Claim 27
Dependent Claim
33 words
The method for operating a redundant array of storage units of claim 18, wherein said parity rows occupy a single contiguous band of addressable storage space of said first group of said array.
Claim 28
Dependent Claim
279 words
A storage subsystem for a computer system, comprising: a storage subsystem controller, said controller having a processor and a memory; a plurality of data storage units coupled to said controller including a first group of at least three data storage units coupled to said controller, and a second group of at least one data storage unit coupled to said controller, wherein addressable storage space in said plurality of data storage units corresponds to a two-dimensional array of storage blocks, each column of said array representing a different one of said data storage units, and each row of said array representing a discrete range of storage locations within each storage unit; means for computing parity blocks from data stored in data storage blocks located in data rows of said array, each of said data rows containing a plurality of storage blocks containing data blocks, wherein each said data row contains no parity blocks, wherein each parity block is computed from data stored in a corresponding set of data storage blocks, each said data storage block of said set being located on a different one of said data storage units; and means for storing said parity blocks on one or more parity rows of said first group of said array, each of said parity rows comprising a plurality of storage blocks containing parity blocks, wherein each parity block is stored on a storage unit different from any of the storage units containing storage blocks of the set of storage blocks corresponding to said parity block, data blocks from said first and second group of data storage units being associated with at least one of said parity blocks in said first group.
Claim 29
Dependent Claim
279 words
A storage subsystem for a computer system, comprising: a storage subsystem controller, said controller having a processor and a memory; a plurality of data storage units coupled to said controller including a first group of at least three data storage units coupled to said controller, and a second group of at least one data storage unit coupled to said controller, wherein addressable storage space in said plurality of data storage units corresponds to a two-dimensional array of storage blocks, each column of said array representing a different one of said data storage units, and each row of said array representing a discrete range of storage locations within each storage unit; means for computing parity blocks from data stored in data storage blocks located in data rows of said array, each of said data rows containing a plurality of storage blocks containing data blocks, wherein each said data row contains no parity blocks, wherein each parity block is computed from data stored in a corresponding set of data storage blocks, each said data storage block of said set being located on a different one of said data storage units; and means for storing said parity blocks on one or more parity rows of said first group of said array, each of said parity rows comprising a plurality of storage blocks containing parity blocks, wherein each parity block is stored on a storage unit different from any of the storage units containing storage blocks of the set of storage blocks corresponding to said parity block, data blocks from said first and second group of data storage units being associated with at least one of said parity blocks in said first group.
Claim 30
Dependent Claim
24 words
The storage subsystem of claim 23, wherein said data storage blocks of each respective set are stored along a respective diagonal of said array.