Patent US2458619A successfully refreshed from Google Patents.
Patent US5303244A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5303244A Expired / Lapsed US ⏱️ 0.0 years remaining

Fault tolerant disk drive matrix

Assignee: Teradata US Inc
•
Filing: 1991-03-01
•
Granted: 1994-04-12
•
Expires: 2011-03-01
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A fault tolerant disk drive matrix comprises a plurality of disk drives. A mapping method associates a subset of the disk drives with a logical RAID-5 array. Each of the disk drives in the matrix may be associated with a plurality of different logical RAID-5 arrays. Logical units of data are subdivided into blocks and stored in an interleaved manner across the disk drives of the logical RAID-5 array. The arrangement of data and parity blocks on the logical RAID-5 arrays within the matrix reduces throughput degradation when a disk drive fails. In the event of a disk drive failure, data blocks stored on the failed disk drive can be reconstructed using redundancy blocks and data blocks from the surviving disk drives within the logical RAID-5 array. Replacement disk drives may also be provided to substitute for the failed disk drive in the logical RAID-5 array. Thus, the mapping of logical RAID-5 arrays to physical disk drives in the matrix may change in position and identity due to disk drive replacements caused by failures.

Inventors

  • 👤 M. Cameron Watson

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-28 19:18
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/07; G06F11/08; G06F11/10; G06F11/1076; G06F2211/00; G06F2211/10; G06F2211/1002; G06F2211/1011

Claims Analysis

Total Claims: 22
Claim 1
Independent Claim 126 words
A data storage device for a computer, comprising: (a) a plurality of disk drives arranged in a matrix, wherein each disk drive therein is identified by a row and column intersection of the matrix; (b) mapping means for associating a subset of the plurality of disk drives with a logical array, wherein each of the disk drives belongs to a plurality of different logical arrays, the mapping means further comprising means for mapping a logical unit number received from the computer into a column number and a row number of the matrix identifying a disk drive; and (c) storage means for subdividing a logical unit of data into blocks and storing the blocks in an interleaved manner across the disk drives associated with the logical array.
Claim 2
Dependent Claim 126 words
A data storage device for a computer, comprising: (a) a plurality of disk drives arranged in a matrix, wherein each disk drive therein is identified by a row and column intersection of the matrix; (b) mapping means for associating a subset of the plurality of disk drives with a logical array, wherein each of the disk drives belongs to a plurality of different logical arrays, the mapping means further comprising means for mapping a logical unit number received from the computer into a column number and a row number of the matrix identifying a disk drive; and (c) storage means for subdividing a logical unit of data into blocks and storing the blocks in an interleaved manner across the disk drives associated with the logical array.
Claim 3
Dependent Claim 14 words
The data storage device of claim 1, wherein the logical arrays are RAID-5 arrays.
Claim 4
Dependent Claim 34 words
The data storage device of claim 1, further comprising: (d) at least one replacement disk drive; and (e) means for substituting the replacement disk drive for a failed disk drive in the logical array.
Claim 5
Dependent Claim 35 words
The data storage device of claim 3, further comprising: (f) means for reconstructing data blocks stored on the failed disk drive using redundancy blocks and data blocks from surviving disk drives within the logical array.
Claim 6
Dependent Claim 174 words
The data storage device of claim 1, wherein the mapping means comprises: (1) means for mapping a data address received from the computer into a logical data cylinder, according to formulae: HosCyl=HosAdr/CylSize DatCyl=HosCyl+HosCyl/(Width-Redund) * Redund (2) means for mapping the logical unit number received from the computer into the column number and the row number of the matrix identifying the data disk drive, according to the formulae: DatCol=HosLun % Width DatRow=HosLun/Width wherein: HosAdr is the data address received from the computer, CylSize is a logical cylinder size, HosCyl is a cylinder address computed from the data address received from the computer, HosLun is the logical unit number received from the computer, DatCyl is the logical data cylinder, DatCol is the column number identifying the data disk drive, DatRow is the row number identifying the data disk drive, Width is a width of the matrix, Redund is a total number of redundancy disk drives in the logical array, operator "/" indicates integer divide with truncation, operator "*" indicates multiplication, and operator "%" indicates modulo divide.
Claim 7
Dependent Claim 154 words
The data storage device of claim 5, further comprising: (3) means for mapping the logical data cylinder into a logical redundancy cylinder, according to the formula: ParCyl=(DatCyl/Width) * Width+(Width-Redund) (4) means for mapping the logical data cylinder and the column number and the row number of the matrix identifying the data disk drive into a column number and a row number of the matrix identifying a redundancy disk drive, according to the formulae: ParCol=(DatCyl+DatCol+1) % Width NumReg=Depth ** ((Width+Depth-1)/Depth) Region=(ParCyl/Width) % NumReg Angle=Region/Depth Offset=Region % Depth DatSide=DatCol/Depth ParSide=ParCol/Depth ParRow=(DatRow+Angle * (DatCyl+1) +(if DatSide<ParSide then Offset else 0) +(if DatSide>ParSide then Depth-Offset else 0)) % Depth wherein: ParCyl is the logical redundancy cylinder, ParCol is the column number identifying the redundancy disk drive, ParRow is the row number identifying the redundancy disk drive, Depth is a depth of the matrix, NumReg, Region, Angle, Offset, DatSide, and ParSide are computational terms, and operator "**" indicates exponentiation.
Claim 8
Dependent Claim 184 words
The data storage device of claim 5, further comprising: (3) means for mapping the logical data cylinder into a logical redundancy cylinder, according to the formula: ParCyl=(DatCyl/Width) * Width+(Width-Redund) (4) means for mapping the logical data cylinder and the column number of the matrix identifying the data disk drive into a column number of the matrix identifying a redundancy disk drive, according to the formula: ParCol=(DatCyl+DatCol+1) % Width (5) means for mapping the logical data cylinder and the row number of the matrix identifying the data disk drive into a row number of the matrix identifying the redundancy disk drive, according to the formulae: NumReg=Depth ** ((Width+Depth-1)/Depth) Region=(DatCyl/Width) % NumReg ParRow=(DatRow+Region * (DatCyl+1)) % Depth wherein: Redund is equal to 1, Depth is a depth of the matrix and is a prime number, Width is less than or equal to the Depth, but not less than 2, ParCyl is the logical redundancy cylinder, ParCol is the column number identifying the redundancy disk drive, ParRow is the row number identifying the redundancy disk drive, NumReg and Region are computational terms, and operator "**" indicates exponentiation.
Claim 9
Dependent Claim 206 words
The data storage device of claim 5, further comprising: (3) means for mapping the logical data cylinder into a logical redundancy cylinder, according to the formula: ParCyl=(DatCyl/Width) * Width+(Width-Redund) (4) means for mapping the logical data cylinder and the column number of the matrix identifying the data disk drive into a column number of the matrix identifying a redundancy disk drive, according to the formula: ParCol=(DatCyl+DatCol+1) % Width (5) means for mapping the logical data cylinder and the row number of the matrix identifying data disk drive into a row number of the matrix identifying the redundancy disk drive, according to the formulae: NumReg=Depth ** ((Width+Depth-1)/Depth) Region=(DatCyl/Width) % NumReg Angle=Region/Depth Offset=Region % Depth DatSide=DatCol/Depth ParSide=ParCol/Depth ParRow=(DatRow+Angle * (DatCyl+1) +(if DatSide<ParSide then Offset else 0) +(if DatSide>ParSide then Depth-Offset else 0)) % Depth wherein: Redund is equal to 1, Depth is a depth of the matrix and is a prime number, Width is greater than the Depth, but less than or equal to twice the Depth, ParCyl is the logical redundancy cylinder, ParCol is the column number identifying the redundancy disk drive, ParRow is the row number identifying the redundancy disk drive, NumReg, Region, Angle, Offset, DatSide, and ParSide are computational terms, and operator "**" indicates exponentiation.
Claim 10
Dependent Claim 250 words
The data storage device of claim 5, further comprising: (3) means for mapping the logical data cylinder into a logical parity cylinder and a logical quotient cylinder, according to the formulae: ParCyl=(DatCyl/Width) * Width+(Width-1) QuoCyl=(DatCyl/Width) * Width+(Width-2) (4) means for mapping the logical data cylinder and the column number of the matrix identifying the data disk drive into a column number of the matrix identifying a parity disk drive and a column number of the matrix identifying a quotient disk drive, according to the formulae: ParCol=(DatCyl+DatCol+1) % Width QuoCol=(DatCyl+DatCol+2) % Width (5) means for mapping the logical data cylinder and the row number of the matrix identifying the data disk drive into a row number of the matrix identifying the parity disk drive and a row number of the matrix identifying the quotient disk drive, according to the formulae: NumReg=Depth ** ((Width+Depth-1)/Depth) Region=(DatCyl/Width) % NumReg ParRow=(DatRow+Region * (DatCyl+1)) % Depth QuoRow=(DatRow+Region * (DatCyl+2)) % Depth wherein: Redund is equal to 2, Depth is a depth of the matrix and is a prime number, Width is less than or equal to the Depth, but not less than 4, ParCyl is the logical parity cylinder, ParCol is the column number identifying the parity disk drive, ParRow is the row number identifying the parity disk drive, QuoCyl is the logical quotient cylinder, QuoCol is the column number identifying the quotient disk drive, QuoRow is the row number identifying the quotient disk drive, NumReg and Region are computational terms, and operator "**" indicates exponentiation.
Claim 11
Dependent Claim 287 words
The data storage device of claim 5, further comprising: (3) means for mapping the logical data cylinder into a logical parity cylinder and a logical quotient cylinder, according to the formulae: ParCyl=(DatCyl/Width) * Width+(Width-1) QuoCyl=(DatCyl/Width) * Width+(Width-2) (4) means for mapping the logical data cylinder and the column number of the matrix identifying the data disk drive into a column number of the matrix identifying a parity disk drive and a column number of the matrix identifying a quotient disk drive, according to the formulae: ParCol=(DatCyl+DatCol+1) % Width QuoCol=(DatCyl+DatCol+2) % Width (5) means for mapping the logical data cylinder and the row number of the matrix identifying the data disk drive into a row number of the matrix identifying the parity disk drive and a row number of the matrix identifying the quotient disk drive, according to the formulae: NumReg=Depth ** ((Width+Depth-1)/Depth) Region=(DatCyl/Width) % NumReg Angle=Region/Depth Offset=Region % Depth DatSide=DatCol/Depth ParSide=ParCol/Depth QuoSide=QuoCol/Depth ParRow=(DatRow+Angle * (DatCyl+1) +(if DatSide<ParSide then Offset else 0) +(if DatSide>ParSide then Depth-Offset else 0)) % Depth QuoRow=(DatRow+Angle * (DatCyl+2) +(if DatSide<QuoSide then Offset else 0) +(if DatSide>QuoSide then Depth-Offset else 0)) % Depth wherein: Redund is equal to 2, Depth is a depth of the matrix and is a prime number, Width is greater than the Depth but less than or equal to twice the Depth, ParCyl is the logical parity cylinder, ParCol is the column number identifying the parity disk drive, ParRow is the row number identifying the parity disk drive, QuoCyl is the logical quotient cylinder, QuoCol is the column number identifying the quotient disk drive, QuoRow is the row number identifying the quotient disk drive, NumReg, Region, Angle, Offset, DatSide, ParSide, and QuoSide are computational terms, and operator "**" indicates exponentiation.
Claim 12
Independent Claim 125 words
A method of storing data for a computer on a plurality of disk drives, comprising: (a) arranging the disk drives in a matrix, wherein each disk drive therein is identified by a row and column intersection of the matrix; (b) associating a subset of the plurality of disk drives with a logical array, wherein each of the disk drives is associated with a plurality of different logical arrays, the associating step further comprising mapping a logical unit number received from the computer into a column number and a row number of the matrix identifying a data disk drive; and (c) subdividing a logical unit of data into blocks and storing the blocks in an interleaved manner across the disk drives associated with the logical array.
Claim 13
Independent Claim 125 words
A method of storing data for a computer on a plurality of disk drives, comprising: (a) arranging the disk drives in a matrix, wherein each disk drive therein is identified by a row and column intersection of the matrix; (b) associating a subset of the plurality of disk drives with a logical array, wherein each of the disk drives is associated with a plurality of different logical arrays, the associating step further comprising mapping a logical unit number received from the computer into a column number and a row number of the matrix identifying a data disk drive; and (c) subdividing a logical unit of data into blocks and storing the blocks in an interleaved manner across the disk drives associated with the logical array.
Claim 14
Dependent Claim 12 words
The method of claim 11, wherein the logical arrays are RAID-5 arrays.
Claim 15
Dependent Claim 24 words
The method of claim 11, further comprising: (d) substituting at least one replacement disk drive for a failed disk drive in the logical array.
Claim 16
Dependent Claim 31 words
The method of claim 13, further comprising: (e) reconstructing data blocks stored on the failed disk drive using redundancy blocks and data blocks from surviving disk drives within the logical array.
Claim 17
Dependent Claim 168 words
The method of claim 11, wherein the associating step comprises: (1) mapping a data address received from the computer into a logical data cylinder, according to formulae: HosCyl=HosAdr/CylSize DatCyl=HosCyl+HosCyl/(Width-Redund) * Redund (2) mapping the logical unit number received from the computer into the column number and the row number of the matrix identifying the data disk drive, according to the formulae: DatCol=HosLun % Width DatRow=HosLun/Width wherein: HosAdr is the data address received from the computer, CylSize is a logical cylinder size, HosCyl is a cylinder address computed from the data address received from the computer, HosLun is the logical unit number received from the computer, DatCyl is the logical data cylinder, DatCol is the column number identifying the data disk drive, DatRow is the row number identifying the data disk drive, Width is a width of the matrix, Redund is a total number of redundancy disk drives in the logical array, operator "/" indicates integer divide with truncation, operator "*" indicates multiplication, and operator "%" indicates modulo divide.
Claim 18
Dependent Claim 148 words
The method of claim 15, further comprising: (3) mapping the logical data cylinder into a logical redundancy cylinder, according to the formula: ParCyl=(DatCyl/Width) * Width+(Width-Redund) (4) mapping the logical data cylinder and the column number and the row number of the matrix identifying the data disk drive into a column number and a row number of the matrix identifying a redundancy disk drive, according to the formulae: ParCol=(DatCyl+DatCol+1) % Width NumReg=Depth ** ((Width+Depth-1)/Depth) Region=(ParCyl/Width) % NumReg Angle=Region/Depth Offset=Region % Depth DatSide=DatCol/Depth ParSide=ParCol/Depth ParRow=(DatRow+Angle * (DatCyl+1) +(if DatSide<ParSide then Offset else 0) +(if DatSide>ParSide then Depth-Offset else 0)) % Depth wherein: ParCyl is the logical redundancy cylinder, ParCol is the column number identifying the redundancy disk drive, ParRow is the row number identifying the redundancy disk drive, Depth is a depth of the matrix, NumReg, Region, Angle, Offset, DatSide, and ParSide are computational terms, and operator "**" indicates exponentiation.
Claim 19
Dependent Claim 176 words
The method of claim 15, further comprising: (3) mapping the logical data cylinder into a logical redundancy cylinder, according to the formula: ParCyl=(DatCyl/Width) * Width+(Width-Redund) (4) mapping the logical data cylinder and the column number of the matrix identifying the data disk drive into a column number of the matrix identifying a redundancy disk drive, according to the formula: ParCol=(DatCyl+DatCol+1) % Width (5) mapping the logical data cylinder and the row number of the matrix identifying the data disk drive into a row number of the matrix identifying the redundancy disk drive, according to the formulae: NumReg=Depth ** ((Width+Depth-1)/Depth) Region=(DatCyl/Width) % NumReg ParRow=(DatRow+Region * (DatCyl+1)) % Depth wherein: Redund is equal to 1, Depth is a depth of the matrix and is a prime number, Width is less than or equal to the Depth, but not less than 2, ParCyl is the logical redundancy cylinder, ParCol is the column number identifying the redundancy disk drive, ParRow is the row number identifying the redundancy disk drive, NumReg and Region are computational terms, and operator "**" indicates exponentiation.
Claim 20
Dependent Claim 199 words
The method of claim 15, further comprising: (3) mapping the logical data cylinder into a logical redundancy cylinder, according to the formula: ParCyl=(DatCyl/Width) * Width+(Width-Redund) (4) mapping the logical data cylinder and the column number of the matrix identifying the data disk drive into a column number of the matrix identifying a redundancy disk drive, according to the formula: ParCol=(DatCyl+DatCol+1) % Width (5) mapping the logical data cylinder and the row number of the matrix identifying the data disk drive into a row number of the matrix identifying the redundancy disk drive, according to the formulae: NumReg=Depth ** ((Width+Depth-1)/Depth) Region=(DatCyl/Width) % NumReg Angle=Region/Depth Offset=Region % Depth DatSide=DatCol/Depth ParSide=ParCol/Depth ParRow=(DatRow+Angle * (DatCyl+1) +(if DatSide<ParSide then Offset else 0)) +(if DatSide>ParSide then Depth-Offset else 0)) % Depth wherein: Redund is equal to 1, Depth is a depth of the matrix and is a prime number, Width is greater than the Depth, but less than or equal to twice the Depth, ParCyl is the logical redundancy cylinder, ParCol is the column number identifying the redundancy disk drive, ParRow is the row number identifying the redundancy disk drive, NumReg, Region, Angle, Offset, DatSide, and ParSide are computational terms, and operator "**" indicates exponentiation.
Claim 21
Dependent Claim 242 words
The method of claim 15, further comprising: (3) mapping the logical data cylinder into a logical parity cylinder and a logical quotient cylinder, according to the formulae: ParCyl=(DatCyl/Width) * Width+(Width-1) QuoCyl=(DatCyl/Width) * Width+(Width-2) (4) mapping the logical data cylinder and the column number of the matrix identifying the data disk drive into a column number of the matrix identifying a parity disk drive and a column number of the matrix identifying a quotient disk drive, according to the formulae: ParCol=(DatCyl+DatCol+1) % Width QuoCol=(DatCyl+DatCol+2) % Width (5) mapping the logical data cylinder and the row number of the matrix identifying the data disk drive into a row number of the matrix identifying the parity disk drive and a row number of the matrix identifying the quotient disk drive, according to the formulae: NumReg=Depth ** ((Width+Depth-1)/Depth) Region=(DatCyl/Width) % NumReg ParRow=(DatRow+Region * (DatCyl+1)) % Depth QuoRow=(DatRow+Region * (DatCyl+2)) % Depth wherein: Redund is equal to 2, Depth is a depth of the matrix and is a prime number, Width is less than or equal to the Depth, but not less than 4, ParCyl is the logical parity cylinder, ParCol is the column number identifying the parity disk drive, ParRow is the row number identifying the parity disk drive, QuoCyl is the logical quotient cylinder, QuoCol is the column number identifying the quotient disk drive, QuoRow is the row number identifying the quotient disk drive, NumReg and Region are computational terms, and operator "**" indicates exponentiation.
Claim 22
Dependent Claim 279 words
The method of claim 15, further comprising: (3) mapping the logical data cylinder into a logical parity cylinder and a logical quotient cylinder, according to the formulae: ParCyl=(DatCyl/Width) * Width+(Width-1) QuoCyl=(DatCyl/Width) * Width+(Width-2) (4) mapping the logical data cylinder and the column number of the matrix identifying the data disk drive into a column number of the matrix identifying a parity disk drive and a column number of the matrix identifying a quotient disk drive, according to the formulae: ParCol=(DatCyl+DatCol+1) % Width QuoCol=(DatCyl+DatCol+2) % Width (5) mapping the logical data cylinder and the row number of the matrix identifying the data disk drive into a row number of the matrix identifying the parity disk drive and a row number of the matrix identifying the quotient disk drive, according to the formulae: NumReg=Depth ** ((Width+Depth-1)/Depth) Region=(DatCyl/Width) % NumReg Angle=Region/Depth Offset=Region % Depth DatSide=DatCol/Depth ParSide=ParCol/Depth QuoSide=QuoCol/Depth ParRow=(DatRow+Angle * (DatCyl+1) +(if DatSide<ParSide then Offset else 0) +(if DatSide>ParSide then Depth-Offset else 0)) % Depth QuoRow=(DatRow+Angle * (DatCyl+2) +(if DatSide<QuoSide then Offset else 0) +(if DatSide>QuoSide then Depth-Offset else 0)) % Depth wherein: Redund is equal to 2, Depth is a depth of the matrix and is a prime number, Width is greater than the Depth but less than or equal to twice the Depth, ParCyl is the logical parity cylinder, ParCol is the column number identifying the parity disk drive, ParRow is the row number identifying the parity disk drive, QuoCyl is the logical quotient cylinder, QuoCol is the column number identifying the quotient disk drive, QuoRow is the row number identifying the quotient disk drive, NumReg, Region, Angle, Offset, DatSide, ParSide, and QuoSide are computational terms, and operator "**" indicates exponentiation.

References Cited (Backward Citations)

US4380066A Cited
EP0249091A2 Cited
US4953122A Cited
US4989205A Cited
EP0369707A2 Cited
US5025418A Cited
US5088081A Cited
US5124987A Cited
US5210866A Cited
US5146588A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1997-04-11 1997-10-11 1998-04-12 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2001-04-11 2001-10-11 2002-04-12 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2005-04-11 2005-10-11 2006-04-12 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag