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

Data storage subsystem including a storage disk array employing dynamic data striping

Assignee: Oracle America Inc
•
Filing: 2000-10-02
•
Granted: 2004-06-01
•
Expires: 2020-10-02
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A data storage subsystem including a storage disk array employing dynamic data striping. A data storage subsystem includes a plurality of storage devices configured in an array and a storage controller coupled to the storage devices. The storage controller is configured to store a first stripe of data as a plurality of data stripe units across the plurality of storage devices. The plurality of data stripe units includes a plurality of data blocks and a parity block which is calculated for the plurality of data blocks. The storage controller is further configured to store a second stripe of data as a plurality of data stripe units across the storage devices. The second plurality of data stripe units includes another plurality of data blocks, which is different in number than the first plurality of data blocks, and a second parity block calculated for the second plurality of data blocks. Furthermore, the second plurality of data blocks may be a modified subset of the first plurality of data blocks. The storage controller is also configured to store the second plurality of data blocks and the second parity block to new locations.

Inventors

  • 👤 Whay S. Lee
  • 👤 Randall D. Rettberg

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-04 23:13
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/07; G06F11/08; G06F11/10; G06F11/1076; G06F3/00; G06F3/06; G06F3/0601; G06F3/0602; G06F3/061; G06F3/0613; G06F3/0628; G06F3/0638; G06F3/064; G06F3/0668; G06F3/0671; G06F3/0683; G06F3/0689; G06F2211/00; G06F2211/10; G06F2211/1002; G06F2211/1026; G06F3/0629; G06F3/0631

Claims Analysis

Total Claims: 48
Claim 1
Independent Claim 178 words
A data storage subsystem, comprising: a plurality of storage devices configured in an array; and a storage controller coupled to said plurality of storage devices, wherein said storage controller is configured to store a first stripe of data as a first plurality of data stripe units across ones of said plurality of storage devices; wherein said first plurality of data stripe units includes a first plurality of data blocks and a first parity block which is calculated for said first plurality of data blocks; wherein, in response to a data modification operation, said storage controller is configured to receive a write transaction modifying a second stripe of data, and to store only said second stripe of data as a second plurality of data stripe units to new locations across said ones of said plurality of storage devices, wherein said second plurality of data stripe units includes a second plurality of data blocks, which is a subset of said first plurality of data blocks, and a second parity block which is calculated for said second plurality of data blocks.
Claim 2
Dependent Claim 178 words
A data storage subsystem, comprising: a plurality of storage devices configured in an array; and a storage controller coupled to said plurality of storage devices, wherein said storage controller is configured to store a first stripe of data as a first plurality of data stripe units across ones of said plurality of storage devices; wherein said first plurality of data stripe units includes a first plurality of data blocks and a first parity block which is calculated for said first plurality of data blocks; wherein, in response to a data modification operation, said storage controller is configured to receive a write transaction modifying a second stripe of data, and to store only said second stripe of data as a second plurality of data stripe units to new locations across said ones of said plurality of storage devices, wherein said second plurality of data stripe units includes a second plurality of data blocks, which is a subset of said first plurality of data blocks, and a second parity block which is calculated for said second plurality of data blocks.
Claim 3
Dependent Claim 62 words
The data storage subsystem as recited in claim 1 , wherein said storage controller is further configured to compute said second parity block for said second plurality of data blocks, which is a modified subset of said first plurality of data blocks, and to store said second plurality of data blocks and said second parity block to a plurality of new locations.
Claim 4
Dependent Claim 57 words
The data storage subsystem as recited in claim 2 , wherein each one of said plurality of storage devices includes a disk head unit configured for reading and writing data, and wherein said storage controller is further configured to select which ones of said plurality of new locations is closest in proximity to said disk head unit.
Claim 5
Dependent Claim 79 words
The data storage subsystem as recited in claim 1 , wherein said storage controller is further configured to maintain a free segment bitmap comprising: a listing of segments located on each one of said plurality of storage devices; an indication of whether each of said segments contains active data, or no data; and a current disk head position pointer configured to indicate the current position of a disk head unit on each one of said plurality of storage devices.
Claim 6
Dependent Claim 62 words
The data storage subsystem as recited in claim 4 , wherein said storage controller is further configured to calculate a disk head offset value for each one of said plurality of storage devices, wherein said disk head offset value represents a positive or negative offset from a theoretical position indicated by said current disk head position pointer in said free segment bitmap.
Claim 7
Dependent Claim 45 words
The data storage subsystem as recited in claim 4 , wherein said storage controller is further configured to maintain a block remapping table which maps a logical address for a data block to a first physical segment on one of said plurality of storage devices.
Claim 8
Dependent Claim 50 words
The data storage subsystem as recited in claim 6 , wherein said block remapping table further maps said first physical segment in a first parity group to a second physical segment which belongs to said first parity group and is stored on another one of said plurality of storage devices.
Claim 9
Dependent Claim 110 words
The data storage subsystem as recited in claim 7 , wherein said storage controller is further configured to remap a plurality of parity groups by: collecting a plurality of existing parity groups each one of which comprises a non-default number of data blocks stored across said storage devices; forming a plurality of new parity groups from said plurality of existing parity groups, wherein each one of said plurality of new parity groups comprises a default number of data blocks; calculating a plurality of new parity blocks for each one of said new parity groups; and storing each one of said plurality of new parity groups and said new parity blocks.
Claim 10
Dependent Claim 49 words
The data storage subsystem as recited in claim 8 , wherein said storage controller is further configured to maintain a plurality of versions of said plurality of existing parity groups which existed prior to a modification of ones of said data blocks in said plurality of existing parity groups.
Claim 11
Independent Claim 173 words
A method for storing data in a data storage subsystem including a plurality of storage devices configured in an array and a storage controller coupled to said plurality of storage devices, said method comprising: storing a first tripe of data as a first plurality of data stripe units across ones of a plurality of storage devices, wherein said first plurality of data stripe units includes a first plurality of data blocks and a first parity block which is calculated for said first plurality of data blocks; and in response to a data modification operation, receiving a write transaction modifying a second stripe of data, and storing only said second stripe of data as a second plurality of data stripe units to new locations across said ones of said plurality of storage devices; wherein said second plurality of data stripe units includes a second plurality of data blocks, which is a subset of said first plurality of data blocks, and a second parity block which is calculated for said second plurality of data blocks.
Claim 12
Independent Claim 173 words
A method for storing data in a data storage subsystem including a plurality of storage devices configured in an array and a storage controller coupled to said plurality of storage devices, said method comprising: storing a first tripe of data as a first plurality of data stripe units across ones of a plurality of storage devices, wherein said first plurality of data stripe units includes a first plurality of data blocks and a first parity block which is calculated for said first plurality of data blocks; and in response to a data modification operation, receiving a write transaction modifying a second stripe of data, and storing only said second stripe of data as a second plurality of data stripe units to new locations across said ones of said plurality of storage devices; wherein said second plurality of data stripe units includes a second plurality of data blocks, which is a subset of said first plurality of data blocks, and a second parity block which is calculated for said second plurality of data blocks.
Claim 13
Dependent Claim 57 words
The method as recited in claim 10 , wherein said method further comprises computing said second parity block for said second plurality of data blocks, which is a modified subset of said first plurality of data blocks, and to store said second plurality of data blocks and said second parity block to a plurality of new locations.
Claim 14
Dependent Claim 52 words
The method as recited in claim 11 , wherein each one of said plurality of storage devices includes a disk head unit configured for reading and writing data, and wherein said method further comprises selecting which ones of said plurality of new locations is closest in proximity to said disk head unit.
Claim 15
Dependent Claim 74 words
The method as recited in claim 12 , wherein said method further comprises maintaining a free segment bitmap comprising: a listing of segments located on each one of said plurality of storage devices; an indication of whether each of said segments contains active data, or no data; and a current disk head position pointer configured to indicate the current position of said disk head unit on each one of said plurality of storage devices.
Claim 16
Dependent Claim 57 words
The method as recited in claim 13 , wherein said method further comprises calculating a disk head offset value for each one of said plurality of storage devices, wherein said disk head offset value represents a positive or negative offset from a theoretical position indicated by said current disk head position pointer in said free segment bitmap.
Claim 17
Dependent Claim 40 words
The method as recited in claim 14 , wherein said method further comprises maintaining a block remapping table which maps a logical address of a data block to a first physical segment on one of said plurality of storage devices.
Claim 18
Dependent Claim 52 words
The method as recited in claim 14 , wherein said method further comprises said block remapping table further mapping said first physical segment in a first parity group to a second physical segment which belongs to said first parity group and is stored on another one of said plurality of storage devices.
Claim 19
Dependent Claim 104 words
The method as recited in claim 14 , wherein said method further comprises remapping a plurality of parity groups by: collecting a plurality of existing parity groups each one of which comprises a non-default number of data blocks stored across said storage devices; forming a plurality of new parity groups from said plurality of existing parity groups, wherein each one of said plurality of new parity groups comprises a default number of data blocks; calculating a plurality of new parity blocks for each one of said new parity groups; storing each one of said plurality of new parity groups and said new parity blocks.
Claim 20
Dependent Claim 44 words
The method as recited in claim 14 , wherein said method further comprises maintaining a plurality of versions of said plurality of existing parity groups which existed prior to a modification of ones of said data blocks in said plurality of existing parity groups.
Claim 21
Dependent Claim 212 words
A computer system, comprising: a processor, a bus bridge unit coupled to said processor, a memory coupled to said bus bridge unit; and a data storage subsystem coupled to said bus bridge unit, the data storage subsystem including: a plurality of storage devices configured in an array; and a storage controller coupled to said plurality of storage devices, wherein said storage controller is configured to store a first strip of data as a first plurality of data stripe units across ones of said plurality of storage devices; wherein said first plurality of data stripe unites includes a first plurality of data blocks and a first parity block which is calculated for said first plurality of data blocks; wherein, in response to a data modification operation, said storage controller is configured to receive a write transaction modifying a second stripe of data and to store only said second stripe of data as a second plurality of data stripe units to new locations across said ones of said plurality of storage devices; and wherein said second plurality of data stripe units includes a second plurality of data blocks, which is a subset of said first plurality of data blocks, and a second parity block which is calculated for said second plurality of data blocks.
Claim 22
Dependent Claim 212 words
A computer system, comprising: a processor, a bus bridge unit coupled to said processor, a memory coupled to said bus bridge unit; and a data storage subsystem coupled to said bus bridge unit, the data storage subsystem including: a plurality of storage devices configured in an array; and a storage controller coupled to said plurality of storage devices, wherein said storage controller is configured to store a first strip of data as a first plurality of data stripe units across ones of said plurality of storage devices; wherein said first plurality of data stripe unites includes a first plurality of data blocks and a first parity block which is calculated for said first plurality of data blocks; wherein, in response to a data modification operation, said storage controller is configured to receive a write transaction modifying a second stripe of data and to store only said second stripe of data as a second plurality of data stripe units to new locations across said ones of said plurality of storage devices; and wherein said second plurality of data stripe units includes a second plurality of data blocks, which is a subset of said first plurality of data blocks, and a second parity block which is calculated for said second plurality of data blocks.
Claim 23
Dependent Claim 61 words
The computer system as recited in claim 19 , wherein said storage controller is further configured to compute said second parity block for said second plurality of data blocks, which is a modified subset of said first plurality of data blocks, and to store said second plurality of data blocks and said second parity block to a plurality of new locations.
Claim 24
Dependent Claim 56 words
The computer system as recited in claim 20 , wherein each one of said plurality of storage devices includes a disk head unit configured for reading and writing data, and wherein said storage controller is further configured to select which ones of said plurality of new locations is closest in proximity to said disk head unit.
Claim 25
Dependent Claim 78 words
The computer system as recited in claim 19 , wherein said storage controller is further configured to maintain a free segment bitmap comprising: a listing of segments located on each one of said plurality of storage devices; an indication of whether each of said segments contains active data, or no data; and a current disk head position pointer configured to indicate the current position of a disk head unit on each one of said plurality of storage devices.
Claim 26
Dependent Claim 61 words
The computer system as recited in claim 22 , wherein said storage controller is further configured to calculate a disk head offset value for each one of said plurality of storage devices, wherein said disk head offset value represents a positive or negative offset from a theoretical position indicated by said current disk head position pointer in said free segment bitmap.
Claim 27
Dependent Claim 44 words
The computer system as recited in claim 22 , wherein said storage controller is further configured to maintain a block remapping table which maps a logical address of a data block to a first physical segment on one of said plurality of storage devices.
Claim 28
Dependent Claim 49 words
The computer system as recited in claim 24 , wherein said block remapping table further maps said first physical segment in a first parity group to a second physical segment which belongs to said first parity group and is stored on another one of said plurality of storage devices.
Claim 29
Dependent Claim 108 words
The computer system as recited in claim 25 , wherein said storage controller is further configured to remap a plurality of parity groups by: collecting a plurality of existing parity groups each one of which comprises a non-default number of data blocks stored across said storage devices; forming a plurality of new parity groups from said plurality of existing parity groups, wherein each one of said plurality of new parity groups comprises a default number of data blocks; calculating a plurality of new parity blocks for each one of said new parity groups; storing each one of said plurality of new parity groups and said new parity blocks.
Claim 30
Dependent Claim 48 words
The computer system as recited in claim 26 , wherein said storage controller is further configured to maintain a plurality of versions of said plurality of existing parity groups which existed prior to a modification of ones of said data blocks in said plurality of existing parity groups.
Claim 31
Dependent Claim 171 words
A data storage subsystem comprising: a plurality of storage devices configured in an array; and a storage controller coupled to said plurality of storage devices, wherein said storage controller is configured to store a first stripe of data as a first plurality of data stripe units across ones of said plurality of storage devices; wherein said first plurality of data stripe units includes a first plurality of data blocks and a first parity block which is calculated for said first plurality of data blocks; wherein said storage controller is configured to receive a write transaction modifying a subset of said first plurality of data blocks; wherein said storage controller is configured to calculate a new parity block for said subset of said first plurality of data blocks; wherein said storage controller is configured to only store said subset of said first plurality of data blocks modified by the write transaction and said new parity block as a new parity group to new locations across ones of said plurality of storage devices.
Claim 32
Dependent Claim 171 words
A data storage subsystem comprising: a plurality of storage devices configured in an array; and a storage controller coupled to said plurality of storage devices, wherein said storage controller is configured to store a first stripe of data as a first plurality of data stripe units across ones of said plurality of storage devices; wherein said first plurality of data stripe units includes a first plurality of data blocks and a first parity block which is calculated for said first plurality of data blocks; wherein said storage controller is configured to receive a write transaction modifying a subset of said first plurality of data blocks; wherein said storage controller is configured to calculate a new parity block for said subset of said first plurality of data blocks; wherein said storage controller is configured to only store said subset of said first plurality of data blocks modified by the write transaction and said new parity block as a new parity group to new locations across ones of said plurality of storage devices.
Claim 33
Dependent Claim 55 words
The data storage subsystem as recited in claim 28 , wherein each one of said plurality of storage devices includes a disk head unit configured for reading and writing data, and wherein said storage controller is further configured to select ones of a plurality of new locations closest in proximity to said disk head unit.
Claim 34
Dependent Claim 83 words
The data storage subsystem as recited in claim 28 , wherein said storage controller is further configured to store a second stripe of data as a second plurality of data stripe units across said ones of said plurality of storage devices, wherein said second plurality of data stripe units includes a second plurality of data blocks, which is different in number than said first plurality of data blocks, and a second parity block which is calculated for said second plurality of data blocks.
Claim 35
Dependent Claim 121 words
The data storage subsystem as recited in claim 28 , wherein said storage controller is further configured to remap a plurality of parity groups by: collecting a plurality of existing parity groups each one of which comprises a non-default number of data blocks stored across said storage devices; forming a plurality of new parity groups from said plurality of existing parity groups, wherein each one of said plurality of new parity groups comprises a default number of data blocks; calculating a plurality of new parity blocks for each one of said new parity groups; and storing each one of said plurality of new parity groups and said new parity blocks to new locations across ones of said plurality of storage devices.
Claim 36
Dependent Claim 49 words
The data storage subsystem as recited in claim 31 , wherein said storage controller is further configured to maintain a plurality of versions of said plurality of existing parity groups which existed prior to a modification of ones of said data blocks in said plurality of existing parity groups.
Claim 37
Independent Claim 153 words
A method for storing data in a data storage subsystem including a plurality of storage devices configured in an array and a storage controller coupled to said plurality of storage devices, said method comprising: storing a first stripe of data as a first plurality of data stripe units across ones of a plurality of storage devices; wherein said first plurality of data stripe units includes a first plurality of data blocks and a first parity block which is calculated for said first plurality of data blocks; receiving a write transaction modifying a subset of said first plurality of data blocks; calculating a new parity block for said subset of said first plurality of data blocks; and storing only said subset of said first plurality of data blocks modified by the write transaction and said new parity block as a new parity group to new locations across ones of said plurality of storage devices.
Claim 38
Independent Claim 153 words
A method for storing data in a data storage subsystem including a plurality of storage devices configured in an array and a storage controller coupled to said plurality of storage devices, said method comprising: storing a first stripe of data as a first plurality of data stripe units across ones of a plurality of storage devices; wherein said first plurality of data stripe units includes a first plurality of data blocks and a first parity block which is calculated for said first plurality of data blocks; receiving a write transaction modifying a subset of said first plurality of data blocks; calculating a new parity block for said subset of said first plurality of data blocks; and storing only said subset of said first plurality of data blocks modified by the write transaction and said new parity block as a new parity group to new locations across ones of said plurality of storage devices.
Claim 39
Dependent Claim 52 words
The method as recited in claim 33 , wherein each one of said plurality of storage devices includes a disk head unit configured for reading and writing data, and wherein said method further comprises selecting which ones of said plurality of new locations is closest in proximity to said disk head unit.
Claim 40
Dependent Claim 78 words
The method as recited in claim 34 , wherein said method further comprises storing a second stripe of data as a second plurality of data stripe units across said ones of said plurality of storage devices, wherein said second plurality of data stripe units includes a second plurality of data blocks, which is different in number than said first plurality of data blocks, and a second parity block which is calculated for said second plurality of data blocks.
Claim 41
Dependent Claim 116 words
The method as recited in claim 35 , wherein said method further comprises remapping a plurality of parity groups by: collecting a plurality of existing parity groups each one of which comprises a non-default number of data blocks stored across said storage devices; forming a plurality of new parity groups from said plurality of existing parity groups, wherein each one of said plurality of new parity groups comprises a default number of data blocks; calculating a plurality of new parity blocks for each one of said new parity groups; and storing each one of said plurality of new parity groups and said new parity blocks to new locations across ones of said plurality of storage devices.
Claim 42
Dependent Claim 44 words
The method as recited in claim 35 , wherein said method further comprises maintaining a plurality of versions of said plurality of existing parity groups which existed prior to a modification of ones of said data blocks in said plurality of existing parity groups.
Claim 43
Dependent Claim 205 words
A computer system comprising: a processor; a bus bridge unit coupled to said processor; a memory coupled to said bus bridge unit; and a data storage subsystem coupled to said bus bridge unit, the data storage subsystem including: a plurality of storage devices configured in an array; and a storage controller coupled to said plurality of storage devices, wherein said storage controller is configured to store a first stripe of data as a first plurality of data stripe units across ones of said plurality of storage devices, wherein said first plurality of data stripe units includes a first plurality of data blocks and a first parity block which is calculated for said first plurality of data blocks; and wherein said storage controller is configured to receive a write transaction modifying a subset of said first plurality of data blocks; wherein said storage controller is configured to calculate a new parity block for said subset of said first plurality of data blocks; wherein said storage controller is configured to only store said subset of said first plurality of data blocks modified by the write transaction and said new parity block as a new parity group to new locations across ones of said plurality of storage devices.
Claim 44
Dependent Claim 205 words
A computer system comprising: a processor; a bus bridge unit coupled to said processor; a memory coupled to said bus bridge unit; and a data storage subsystem coupled to said bus bridge unit, the data storage subsystem including: a plurality of storage devices configured in an array; and a storage controller coupled to said plurality of storage devices, wherein said storage controller is configured to store a first stripe of data as a first plurality of data stripe units across ones of said plurality of storage devices, wherein said first plurality of data stripe units includes a first plurality of data blocks and a first parity block which is calculated for said first plurality of data blocks; and wherein said storage controller is configured to receive a write transaction modifying a subset of said first plurality of data blocks; wherein said storage controller is configured to calculate a new parity block for said subset of said first plurality of data blocks; wherein said storage controller is configured to only store said subset of said first plurality of data blocks modified by the write transaction and said new parity block as a new parity group to new locations across ones of said plurality of storage devices.
Claim 45
Dependent Claim 54 words
The computer system as recited in claim 38 , wherein each one of said plurality of storage devices includes a disk head unit configured for reading and writing data, and wherein said storage controller is further configured to select ones of a plurality of new locations closest in proximity to said disk head unit.
Claim 46
Dependent Claim 82 words
The computer system as recited in claim 39 , wherein said storage controller is further configured to store a second stripe of data as a second plurality of data stripe units across said ones of said plurality of storage devices, wherein said second plurality of data stripe units includes a second plurality of data blocks, which is different in number than said first plurality of data blocks, and a second parity block which is calculated for said second plurality of data blocks.
Claim 47
Dependent Claim 120 words
The computer system as recited in claim 40 , wherein said storage controller is further configured to remap a plurality of parity groups by: collecting a plurality of existing parity groups each one of which comprises a non-default number of data blocks stored across said storage devices; forming a plurality of new parity groups from said plurality of existing parity groups, wherein each one of said plurality of new parity groups comprises a default number of data blocks; calculating a plurality of new parity blocks for each one of said new parity groups; and storing each one of said plurality of new parity groups and said new parity blocks to new locations across ones of said plurality of storage devices.
Claim 48
Dependent Claim 48 words
The computer system as recited in claim 41 , wherein said storage controller is further configured to maintain a plurality of versions of said plurality of existing parity groups which existed prior to a modification of ones of said data blocks in said plurality of existing parity groups.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2007-06-01 2007-12-01 2008-06-01 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2011-06-01 2011-12-01 2012-06-01 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2015-06-01 2015-12-01 2016-06-01 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag