CA2058734C - Storage device array architecture with copyback cache - Google Patents
Storage device array architecture with copyback cache Download PDFInfo
- Publication number
- CA2058734C CA2058734C CA002058734A CA2058734A CA2058734C CA 2058734 C CA2058734 C CA 2058734C CA 002058734 A CA002058734 A CA 002058734A CA 2058734 A CA2058734 A CA 2058734A CA 2058734 C CA2058734 C CA 2058734C
- Authority
- CA
- Canada
- Prior art keywords
- storage unit
- storage units
- block
- data block
- error
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1666—Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1435—Saving, restoring, recovering or retrying at system level using file system or storage system metadata
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2087—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring with a common controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
- G11B20/1833—Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2089—Redundant storage control functionality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1019—Fast writes, i.e. signaling the host that a write is done before data is written to disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1059—Parity-single bit-RAID5, i.e. RAID 5 implementations
Abstract
A fault-tolerant storage device array using a copyback cache storage unit for temporary storage. When a Write occurs to the RAID system, the data is immediately written to the first available location in the copyback cache storage unit. Upon completion of the Write to the copyback cache storage unit, the host CPU is immediately informed that the Write was successful. Thereafter, further storage unit accesses by the CPU can continue without waiting for an error-correction block update for the data just written, In a first embodiment of the invention, during idle time for relevant storage units of the storage system, an error-correction block is computed for each "pending" data block on the copy-back cache storage unit, and the data block and corresponding error-correction block are copied to their proper location in the RAID system. The copyback cache storage unit in effect stores "peak load" Write data and then completes the actual Write operations to the RAID system during relatively quiescent periods of I/O accesses by the CPU. In a second embodiment of the invention, after Write data is logged to the copyback cache storage unit, normal Read-Modify-Write operation by the RAID system controller continues in overlapped fashion with other CPU I/O accesses using Write data in the controller's buffer memory.
Performance is enhanced because the CPU can continue processing as soon as the simple Write operation to the copyback cache storage unit completes, thus eliminating the delay caused by a normal Read-Modify-Write RAID system. in this embodiment, the copyback cache storage unit acts more as a running "log" of Write data.
Performance is enhanced because the CPU can continue processing as soon as the simple Write operation to the copyback cache storage unit completes, thus eliminating the delay caused by a normal Read-Modify-Write RAID system. in this embodiment, the copyback cache storage unit acts more as a running "log" of Write data.
Description
t~~f~At"s~ DElItC~ ARRAN ARtehiITgGTIJ~t~ COPYBA~K ~A~ti$
~,e4tafCGROUND OF THE IPdY~NT'i6~N
t . Fiald of the Invendan This trn~andon retatas to computer system data .storage, and more pantcuiarfy to a fault tolerant storage device array using a copyback cache storage unit for temporary storage.
~,e4tafCGROUND OF THE IPdY~NT'i6~N
t . Fiald of the Invendan This trn~andon retatas to computer system data .storage, and more pantcuiarfy to a fault tolerant storage device array using a copyback cache storage unit for temporary storage.
2 Description of Related ~trt A typical data processing system generaity invohres one or more storage units which are connected to a Central Processor Unit (CPU) either directly or through 1 a a cottttoi unit and a channel. 'fhe function of the storage units is to storsr data and programs which the CPU uses in performing particular data processing tasks.
Various type of storage untts are used In current data processing systems. A
typical system may include one or more large capacity tape units anrllor disk drives (magnetic, optical, or semiconductor) connected to the system through 15 respective control units for storing data.
However, a probtam exists if one of the large opacity storage units fails such that information contained In that unit is no longer available to the system.
Generally, such a failure will strut down the entire computer system.
The prior art has suggested several ways of solving the problem of providing .20 reliable data storage, 1n systems where records are relatively small, it is possible to use error correcting codes whldt generate ECC syndrome bits trial are appended to each data record within a storage unit. With such codes, it 1s possible to correct a small amount of data that may be read erroneously.
However, such codas are generatty not suitable for correcting or recreating long records which are in error, and provide rto remedy at ail if a complete storage unit falls. Therefore, a need exists for providing data reliability external to individual storage units.
~?Zi~~r ~ia~ar~ac;h~s to s~a~h ~Fa~t~rrmfi" reliataiiity h~~r~ been ~3oa~ribsd in the art. ~, roE,~o~ar~h group ak the lJnfversity ~av ~~tifomia, Sorkoley, in a paper ~rrti~ed "A ~asa fret FPrioanclarrt R~.rr~ays c~f in~~partsfva Disk, (FdAI'~)~, Patt~prson, a?
~~1., f~roc< ABM
duns 8 9 has oarlock, ued a nurnlb~r car ~lafPor~nt approaches for pra~viding sash reilability ~rhor~ using disk rdriv~:~ ,torago ~aru3s. Arrays of desk dr~os ~'o oh.~raotari~~~t in one cxt ~'rv~ "~rchit~otur~, sander tho acronym °RAID° (for ~~dun~9a~t ~rr'~y s of inr~a~nsi~4 C~is~CS).
6~ lC~ ~1 architecture invoPvas providing a dupl(8o sat of "rr~irror°
storage unifs erred ka~aping a duplir,,ra8e c.~opy of ail daLs on each pelt wi s2~rage senile. While t ~ s~auh a solution scalves the rell,abilityy prot~lam, it doubles tho cost of storage. A
number oP implementations of RAIt3 t ard~itr~cturaa havQ boas made, in parilcutar by '~andarn ~orpc~ratlon.
A 1~!~ ~ architecture scores ear..h bit of each word of dad, plus Error ~~tact(on ~d ~orractton (EDT) bits foe eactl word, on separate disk drives (this is also t S known as "bit striping°). Por exr3mple, U.S. Patent Pto. ~,7~085 to Floe ef al.
discloses a disk drive memory using a plvratity of rala~tively small, independently operating disk subsystems to tunc~on as a large, high capacity disk drive having art untasualty high fault tolerance and a vary high data transfer bandwidth. A
data organizer adds 7 EDC bits (determined using the weN-known Hammlrtg code) to each 3~-bit data word to provide error detection arid error eorrectlott c8pability.
The resultant 3~-bit word is written, one bit par disk drive, on tt~ 39 disk drives.
fl one of the ~S disk drives fails, the remaining 38 bits of each stored 39-bit word can be used to reconstruct each 3~-bit data word on a word-by-word basis as data word is read from the disk drives, thetgby obtaining fault tolerance.
Art obvious drawback of such a system is the large number of disk drives require~p for a minimum system (since most large computers use a 3~.brt word), ertd tpt~
relatively high ratio of drives rewired to store the EDC bits (7 drives out of 39), A further limtt$tlon of a fiAio 2 disk drive memory system is that the individual disk actuators are operated in unison to write each deta block, the bits of which are distributed over all of the disk drives. 'this arrangement has a high data transfer ?~~r~ci?rArici?~, :~ifac~s ~~ac~s in~tJvi~Jt~al ~JI:pJt 2rar3sierrs p~a~rt ofi a blocft of data, rite net atef~~°? boiftg that vac ~~rrtlr~a taJc,~cJc is ~vsitabl~ to tP~~
~~arrtputor ~~:~?urn muc:Pt fa~tar L'taft if a sin~ts~ cJrfvo uvsro ~~"~ing ~t~a bioclC. ~'t~i~ is ~a~r~frL~~~us for large cJabloctcs. hio~~v~ar, this <arrancisrrjent also ~a'rl~ascr~r~ty pro~rt~tonly a singl~
r~aCi~e~rf~t~2 howl acauator for the ofx~f~ ~torago uP~ft, 't'h9~ ~as~r~srwaty ~stfathe ra~sd~frs ~~~ca~~ po~forrree~c~a o? ~~ drive array/ ,~Pt~rt ~t~2,~~ ~it~s~ ~r~
small, slnc~
only one ~dat~, file at a ilms~ r1 bs ~r,~aa~d by t~~ °~ingt~" aerator, 't'tttus, FiAflS
~ systems afe c~an~ratty not consldared to be ~u#ts~tp for cofnp~rt~r systems d~Jgnad for Can-tune TraottQn Prcr~..ing (sr7~'fP), such in t~nklng, 1 D tlnarsraal, and r~sarvatd~an syystems, where a large number of random accass~s to marry small data tiles compris~s tMg bulk of data storage sand transfer operations.
~ PdAln ~ arcttitoGtufs is basalt On 2he3 concept that each disk drive storage unit hinternal m~ans for detecting a faun or data error. Therefore, tt is not nece:3aary to store extea information to detect rite Ioc:atJon of an error; a simpler t 5 iorrvv of partly-based error r"orrectlon can thus be used. In this approach, the mrrtents of all storage units subject to failure era °Exclusive C~F~'d' (XOR'd) to generate parity irdormation. The rs3sutting parity information is stored In a stngle redundant storag~ unit. tP a storage unit felts, the data on that unit cart be reconstructed on to a replacement storage unit by XOR'ing the data front the 20 r~maining storage untts with the parityr Intormattan. Such an arrangement has the advantage over the mirrorAd disk RAID t architecture in that only one addttlonal storage unit is required for "N" storage units. A further aspect of tkt~ RAID
Various type of storage untts are used In current data processing systems. A
typical system may include one or more large capacity tape units anrllor disk drives (magnetic, optical, or semiconductor) connected to the system through 15 respective control units for storing data.
However, a probtam exists if one of the large opacity storage units fails such that information contained In that unit is no longer available to the system.
Generally, such a failure will strut down the entire computer system.
The prior art has suggested several ways of solving the problem of providing .20 reliable data storage, 1n systems where records are relatively small, it is possible to use error correcting codes whldt generate ECC syndrome bits trial are appended to each data record within a storage unit. With such codes, it 1s possible to correct a small amount of data that may be read erroneously.
However, such codas are generatty not suitable for correcting or recreating long records which are in error, and provide rto remedy at ail if a complete storage unit falls. Therefore, a need exists for providing data reliability external to individual storage units.
~?Zi~~r ~ia~ar~ac;h~s to s~a~h ~Fa~t~rrmfi" reliataiiity h~~r~ been ~3oa~ribsd in the art. ~, roE,~o~ar~h group ak the lJnfversity ~av ~~tifomia, Sorkoley, in a paper ~rrti~ed "A ~asa fret FPrioanclarrt R~.rr~ays c~f in~~partsfva Disk, (FdAI'~)~, Patt~prson, a?
~~1., f~roc< ABM
duns 8 9 has oarlock, ued a nurnlb~r car ~lafPor~nt approaches for pra~viding sash reilability ~rhor~ using disk rdriv~:~ ,torago ~aru3s. Arrays of desk dr~os ~'o oh.~raotari~~~t in one cxt ~'rv~ "~rchit~otur~, sander tho acronym °RAID° (for ~~dun~9a~t ~rr'~y s of inr~a~nsi~4 C~is~CS).
6~ lC~ ~1 architecture invoPvas providing a dupl(8o sat of "rr~irror°
storage unifs erred ka~aping a duplir,,ra8e c.~opy of ail daLs on each pelt wi s2~rage senile. While t ~ s~auh a solution scalves the rell,abilityy prot~lam, it doubles tho cost of storage. A
number oP implementations of RAIt3 t ard~itr~cturaa havQ boas made, in parilcutar by '~andarn ~orpc~ratlon.
A 1~!~ ~ architecture scores ear..h bit of each word of dad, plus Error ~~tact(on ~d ~orractton (EDT) bits foe eactl word, on separate disk drives (this is also t S known as "bit striping°). Por exr3mple, U.S. Patent Pto. ~,7~085 to Floe ef al.
discloses a disk drive memory using a plvratity of rala~tively small, independently operating disk subsystems to tunc~on as a large, high capacity disk drive having art untasualty high fault tolerance and a vary high data transfer bandwidth. A
data organizer adds 7 EDC bits (determined using the weN-known Hammlrtg code) to each 3~-bit data word to provide error detection arid error eorrectlott c8pability.
The resultant 3~-bit word is written, one bit par disk drive, on tt~ 39 disk drives.
fl one of the ~S disk drives fails, the remaining 38 bits of each stored 39-bit word can be used to reconstruct each 3~-bit data word on a word-by-word basis as data word is read from the disk drives, thetgby obtaining fault tolerance.
Art obvious drawback of such a system is the large number of disk drives require~p for a minimum system (since most large computers use a 3~.brt word), ertd tpt~
relatively high ratio of drives rewired to store the EDC bits (7 drives out of 39), A further limtt$tlon of a fiAio 2 disk drive memory system is that the individual disk actuators are operated in unison to write each deta block, the bits of which are distributed over all of the disk drives. 'this arrangement has a high data transfer ?~~r~ci?rArici?~, :~ifac~s ~~ac~s in~tJvi~Jt~al ~JI:pJt 2rar3sierrs p~a~rt ofi a blocft of data, rite net atef~~°? boiftg that vac ~~rrtlr~a taJc,~cJc is ~vsitabl~ to tP~~
~~arrtputor ~~:~?urn muc:Pt fa~tar L'taft if a sin~ts~ cJrfvo uvsro ~~"~ing ~t~a bioclC. ~'t~i~ is ~a~r~frL~~~us for large cJabloctcs. hio~~v~ar, this <arrancisrrjent also ~a'rl~ascr~r~ty pro~rt~tonly a singl~
r~aCi~e~rf~t~2 howl acauator for the ofx~f~ ~torago uP~ft, 't'h9~ ~as~r~srwaty ~stfathe ra~sd~frs ~~~ca~~ po~forrree~c~a o? ~~ drive array/ ,~Pt~rt ~t~2,~~ ~it~s~ ~r~
small, slnc~
only one ~dat~, file at a ilms~ r1 bs ~r,~aa~d by t~~ °~ingt~" aerator, 't'tttus, FiAflS
~ systems afe c~an~ratty not consldared to be ~u#ts~tp for cofnp~rt~r systems d~Jgnad for Can-tune TraottQn Prcr~..ing (sr7~'fP), such in t~nklng, 1 D tlnarsraal, and r~sarvatd~an syystems, where a large number of random accass~s to marry small data tiles compris~s tMg bulk of data storage sand transfer operations.
~ PdAln ~ arcttitoGtufs is basalt On 2he3 concept that each disk drive storage unit hinternal m~ans for detecting a faun or data error. Therefore, tt is not nece:3aary to store extea information to detect rite Ioc:atJon of an error; a simpler t 5 iorrvv of partly-based error r"orrectlon can thus be used. In this approach, the mrrtents of all storage units subject to failure era °Exclusive C~F~'d' (XOR'd) to generate parity irdormation. The rs3sutting parity information is stored In a stngle redundant storag~ unit. tP a storage unit felts, the data on that unit cart be reconstructed on to a replacement storage unit by XOR'ing the data front the 20 r~maining storage untts with the parityr Intormattan. Such an arrangement has the advantage over the mirrorAd disk RAID t architecture in that only one addttlonal storage unit is required for "N" storage units. A further aspect of tkt~ RAID
architecture is that the disk drives are operated in a coupled manner, similar to a RAID 2 system, and a Slngla disk driv~ Is designated as the parity unit.
25 One lmplementatfon of a RAID 3 architecture is tho Micropoiis Oorporat:on ParaJJ~I
Drfv~ Array, Model 1804 SGSI, that uses lour parallel, synchronized disk defuse and c~no redundant parity drive. The failure of one of th~ lour data disk drives can be remedied by the use of the partly btts stored on the partly disk drive.
Another example of a RAIL? 3 system is described in U.S. Patens No. 4,092.73? to Ouchi.
_n,.
~ ITtA,li7 ~ cdl:~(c ~lriy~ rr~~mCary ~~st~r~n has :a rt~ucP~ la:n~u~r r~a~ia of r~~~~n~iar't~yr unit tea data ~ar~it~9 than .a HAIL? ~ >~y;~ksrn. N~~waver, ~ ~i~,i~ ~ .Dya'tsrr~
t~thg same p~r~Yar'maa~c~ lirnttatis~n ~, ~a S~,il3 ~ sy;~~tar~l, in ti~~t ti~ca In~ltvi~lraai di~4c ~~~tuatc~rs are ccaup3~d, cap~r~ting in ~.~niW n. This advut'~~3ty :ati~sc2s trio random zas g~~rtor~ra~r~o~ of 2hta dri~so ~,rr~a~ ~srtsrt ~(a'~~ ftles arse srrta4i, aino.~ only on~ de~tx~ ftie ~t a tirn~ ,n ~~ a~~~~rr~ by tits "~inc~io° aa~a~tcar, ~u~, F~i~ ~
systems errs generally not considor~3r~ to t~~ ateitahie teac c~m~~~rtor :~~y:~t~rns dosignss~d for t7t~'TP
purposes.
A FiAI~ ~ ~trahftactur~a use th~ same partly error cory~~ion concept of th4 FiAI~
t 0 ~ architecture, but Improves on that performance or a ~iAie 3 system with respect to random rmading of small ftles by auncoupling" the operation o? the individual d(sk drive actuators, and reading and writing a larger minimum arnourrt of data (typioaliy, a dlak sector) to each disk (this is aJ.so known as bior~c striping). A
Further aspect of the RAIG a architeotura Is that a single storage un~ is designated 1 ~ as the parity unit A limitation of a F~lii7 4 system is that Writing a data block on arty of the independently operating data storage unite also r~uires writing a n~w parity block on the partly unit. The parity information stored on the parity unit muse be r~ad and XOR'd with the old data (to "remove" the information content of the old data), 2t~ and the reaufting sum must trim be XOR'd wtth the new data (to provtde new parity irrtormation). Both the data and the parity records then muss t~
rewritten to the disk drives. This process is commonly referred to as a "Read-Modity~Wrtte"
sequence.
Thus, a Read and a Wr'tte on the single parity unit occurs each time a record is 2J c~tanged on any of the data storage units covered by the parity record on the parfty unit. The parity unit becomes a bot~a.neck to data writing operations since th~ number of changes to r9cords which cart b~ made per unit of time is a function of the acce>gs rata of the parity unit, as opposed to the teeter access rate provided by parallel operation of th~ multiple data 3'toraga units. ~ecauss of this ~0 limitation, a RAtp ~ system i5 generally not considered to be suitable for computor system:, designed far Dhll~ purposes. lnd~aed, i1; appears that a RA11J ~
system hay not born implaa~narrtad for any aommercial p~urps~sa.
A RAID 5 architecture uses the same parity error rarrectlon concept of tYte RAID
~ archPtero and independent actuators, but irnprr~vos an the wrrong perform-ands of a RAID ~ sys~tam by dlstributlng the data and parity informa~on aoioss all at ih~ avaiiebte disk drtves. Tjlpit~lfy, "~! + 1" storage units in a set (also known as a "redundancy group~) are divided into a plurality of equally sued address areas referred to as blocks, Each storage unit generally contains the same number of blocks. Blocks tram each storage unit in a redundancy group having 1 D the same unit address ranges are referred to as "stripes", Each stripe has N
blacks of data, plus one parity black on one storage unit containing parity for the remainder of the Stripe. Further stripes each have a parity block, the parity blocks being dlstrtduted on different storage units. Parity updating ac~ivitir associated with every modification of data in a redundancy group is therefore distributed over 1 S the dlfterent storage units. No single unit is burdened with ail of the parity update activity.
For example, in a RAID 5 system comprising 5 disk drives, the parity information for the first stripe of blocks may be written to the frfth drive; ttte parity information for the second stripe of blocks may 4s written to the fourth drive; the parity 20 information for the third stripe of blocks may be written to the third drive; etc.
'fhe partty block iar succeeding snipes typically 'processes" around the disk drives in a helical pattern {although other patterns may be used).
Thus, no single disk dr7ve is used for storing the parity information, and the botde-neck of the FIAID 4 architecture is eliminated. An example of a FiAlO 5 system is 25 described in U.S. Patsnt No. 4,761,785 to Clark at al.
As in a RAiD a system, a limitation of a RAID 5 system is that a change in a data block requires a (lead-Modfty-Write s6quence comprising Nvo Read and two Write operartions: the old partly block and old d8ta block must be read sand XOR'd, and the resulting sum must then be XC?R'd with ttt9 new data. Bath the data and th~
parity blocks then mb~c be r~nrrit(sra to tho dlsl'; drives. VVJftile the hero Fiaad operations may bs dAns in parallgl9 as oan the two 4nlrlts operations, modtttcadon of a block of din ~ SID ~ or ~ RAID 5 system still takes subst~cdally longer den tt~e earns opsr~bn on a corerentional disk. A comrerrtlonai disk dos$ not require tf7e preliminary Read operation, and thus does hav~ to wait for the disk drive to rotate back to life previous positiort In order to perform the Write operation. The rotational laterf~cy time alone can amount to about ~09b of the time required for a typia~t! dmodti~tior~ operation. Further, two disk storar~e units are lrrvotved for the duration of each data modifir~tfon operation, Ilmt~ng the throughput of tt~e system as a whale.
Despite ttts ~Ir'rte performance penalty, RAID 5 type systems have become increasingly Popular, since they provide high data reliablifty with a tow overhead cx~st for redundancy, good Bead performance, and fair Write performance.
Hourever, it would be desirable to have the benefits oi: a RAID 5 system without the Wttts performance pertatty resuf~ng from life rotational Is~tency time imposed by the parity update operation.
The present Invention provides suds a system.
~t.9~~1 ~3~ °I'iwl~ i~9°l~d~'~(~~
The present invention sohres the errrar-rorraatlan block taardiQnac~ Inherent in a F~I~ 5 architaature by recngni~on that starag~ emit eases are irrtermittent.
"t'hhat Is, at various tim~s one ar mare Af the stc~raga units in a RAI~ ~
system are Idly In terrns of access requ~sts by th~ CPU. 'this ctsaracterlsttlc ~n be exploited by providing a "copybook cache" storage unit as an adJunct to a standard RAID
system. 'i'he pr~s~nt invention provides two attemative methods of operating such a syst~m.
In bath embodiments, when a Wrtta occurs to the F~AID system, the data is t d immediately written to the first available location in th~ capybadc cache storage unit. Upon cornpletion of the Wrfte to the copybook cache storage unit, the heat CPU is immediately informed that the Write was successful. Thereafter, further starag~ unit accesses by the CPU can continue without wait)ng for an error-correctton block update for the data just wrftten.
15 In the fjrst embodiment at the inverl"tton, during idle lima for relevant storage units of the storage system. an error~corractian bloGc (e.g., XOR parity? is computed for each "pending" data block on the copybook cache storage unit, and the data block and corresponding error-correction black are copied to their proper location in the FIAIC system. Optionally, if a number of pending data blocks are to be 2D written to the same sbfpe, an ~rrQr-correction block can be calculated from all data blocks in the stripe at one time, thus achieving some econarny of time.
In this embodiment, me copybook cache storage unit in eftact stores "peak load"
Write data and then completes the actual Write aperatjons to the FtAlO system during relatively quiescent periods of IIO accesses by the GPU.
In the second embodlmertt of the inver>tion, after Wrtte data is logged to the copybook cache storage unit, normal Read-Modify~Write operation by the f~AID
system controller continues in overlapped tashlon with other CPU IIO
accessras, using Write data in the Controller's buffer memory. Performanc~ is enhanced because the CPU cgn continue processing as soon as the simple carne operation -8..
to the copybaGk cache strarage unit completes, thin eliminating the delay caused by a normal Read-Madlfy-Write RAID system. In this embodimsrrt, the copybook cache storage unit sots more as a running "log° of Wr'ttg data. Data integrity is proservsd since the Write data is saved to the colayback cache storage unit end thus aooesstble even it the Raad-Modify-Write operation to the RAID system never con9(3let~DS.
'1°h~ copybook cache storage unit is preferably non-voisdile, so that data will net be lost on a power tallure. ft the c~opybadt cache storage unit is a dlak drhre, it preferably Is paired wfth a 'mirror" storage unit for fault tolerance.
Opttonaliy, the t t) copyback cache storage unit may ba a solid~te storage unit, which cart aohleve substaraially faster Write and error-corractiQn bk~dc update times titan a disk drive.
The details of the preferred embodiments of ute present tnverttton are set forth in the ar~,.compartying drawings and the descxiption below. Once the details vt the invention ar~ known, numerous addidonal innovsftions and changes will become obvious to one skilled in zhe art.
.g.
~i~i~EE~C~I~'Y'i~~ ~p "Ci'iE A'~ill~9C~
F1C~U~4E 9 is black dlagrarn of a copybac#c cache FIAIt~ system 1n asxordawra with the preserr2 irrverrblon.
~IGIIRE 2 Is a flo~nr-chart of Reaud and t~lriie op~r~don in ~ccorcianwith a ttrst embodlmant of the preaanrc invr~.
FiGIJt~E 3 is a flow-chart of Head anc! Write oper~tlon in accordance with s~
second embodiment at the present tnvertdon.
like reference numbers and designations in the drawings refer to Ilke elements.
p~°f'P~d' Pit39SC
CP~I~~J C~SCRI°iO~i CAF 1"~ti~'~'°'PIC~~i "itarouphout this dsscription> the pee?erred ~mbc~dimarits and examples shown should be considered as exemplars, rather than lirv~itrstiona on the present irlon.
Fi(~tJt~~ 1 is blocac diagram of ~9 copyback cache i~Ait~ system in accordance with ttte present invention. Shown are a CPU 1 coupled by a~ bus ~ to an array controller 3, whioit in the prv~ferred embodiment is a fautt~toi~rant cnritroller. 'fh~
array controller 3 is cqupted to each of the plurality of storag~ units s1-S5 (flue being shown by way of exempla only) by an I/O bus (e.g., a SCS1 bus). The stqrage units S1-SS ate failure independent, meaning that the failure of one unit saes not affect the physical operakton of other units. The array controller 3 is preferably includes a separately programmable processor (tar ~xample, the MIPS
RRtSC processor, made by MIPS of Sunnyvale, California) which can act independently of the Ci'U 1 to cortteol the storage units.
Atso attached to the controller 3 Is a copyback cache storage unit CC, which in the preferred embodiment is coupled to flue common I/O bus (8.g., a 8CSI bus) so that data cart be transferred berivaen the copyback cache storage unit CC
and the storage units S1-SS. The copybaCk cache storage unit CC is pr~ferat~ty non-volatila, so that data will not be lost on a power failure. If the copyback cache storage unit CC is a disk drive, it preferably is paired with a "mirror"
storage unit CC' for fault tolerance. The mirror storage unk CC' is coupled to the cortCrotter 3 such that all data written to the copyback cache storage unit CC is also written essentially simuttaneousty to the mirror storage unit CC', in known fashion.
Optionally, the copybadc cache storage unit CC may ba a solld~state storage unit, 5 which can achiev6 substantially faster Write and error-correc~tlon block update times than a disk drive. tn sucn a case, the solid-stat~ storage unit preferably includes error-datecHon and correction circuitry, and is either non-voiatil4 or has a battery backup on the power supply.
Tho storar~~ unitt~ S1-;~ cba groupaet into orm or mare r~urldancy groups.
1r3 the iiiustrated a~aralpt~s ~dascribad bolaw, ttto redundancy group comprises all of the s'tatage units S1-SS, for slmpllotty of oxplanatir~n.
T°ne prsaserrt invetttlott is preferably irrfplemartted as a ccmputar progr~un axecu~d S by the o~arvtrol9ar ~. FI~aI~Ft~ ~ is a high°lavel tlav~echs~rt roprasarrdng thg steps of the f~a~sd and YYyrite pr s for ~a ittst embodiment of the invention. FIC~~IR~
~ is a high-loved flowchart rapraser'rting the steps of the Road and vyrita proca&aes for a sac~,ond embodiment of the invention. The steps shown in FIGURhS 2 and 3 era raserenc~d below.
Tt~a PeaK Load ~rnbodlmenr 'fh~r controller a monitors input/output requests from the CPU 1 on asserdialiy a ~ntlnuous baaia (Step 20). If a Write request ir> pending (Step ~i ), the data block is immediately written to the first aYaliable location in the oopybadc cache storage unit CC (Step 22) (the data block is also stored on the mirror storage unit CC', if present). preferably, wrtting begins at the first logical block on the copyback cache storage unit CC, and Continues sequen~dalty to the and of the logical blocks. Thereafter, writing commences again at the first block (so long as no blocks are ovatwrirten that have not been stared in the array). This preferred method minlmtzes time-consuming S>rEiC operations (i.a., physical movements of a ReadtWrita head in a storage unit) in the copyback cache storage unit CC.
each data block stored on the copyback cache storage unit CC is also flagged with the location in the army Where the data block Is uJVmataiy to ba stored, and a pointer is sat to indicate that the data block is in the copyback cache storage unit CC (Step 43). This location and pointer ir>tormation is preferably kept in a 2S separate table in memory or on the copybadc cache storage unit CC. The table pref~tably comprises a directory table having entries that include standard information ragatding the si2a, attributes, and status of each data block. In addition, each entry has one or mote fields indicating whether the data block is stored on the copyback cache storage unit CC or in the array (S1-Sti), and the _t~~
°norrnai° 9oo~tlcan in the afray Par the data block's. Creation of ~~s~ dir~t~ary tables Is w~li-6tr~awn iat the ~'°t.
ft a data biaciC is vuritien to th~ ~pybao~c eacfte storage ur>it CC ~hfle a data block to be stared at the same location in the array is still a °psndirag block (a dad block that beta bean Written to the c~pyback cache stafage un'sk CC but not tra~ferfad t~ the array of -SS), the directory location pofrrter far ft ra data block is ~tl~Cl~~ to poir(t to the °neW° V8f~i0n f~l8r tt't$lrt to tile °016~~ 1I~n~tNi. 'Th9 ~51d version Is tt~araaft~r ignored, and may be written aver 1n subsac~uartt operations, Air a Write request is processed in this fashion, the corrOrotler 3 immedlat~ty f t? s~nds an acknowledgement to the CPU 1 indicating that the Wye do was successful (Step 24). 'f'~a monitoring process then repeats (Step 2a~. Further stofage unit accesses by the CPU ~ can cohunue without wat~ng for an error-corfection block update for the data blocfc just written. Thus. ~ W~a 'you~h-put" time of the array app~ars to be the same as a norn-redundant sys~m, slnc~
1 S storage of the Write data on the capybaok cache storage unit GC does not require the Read-Modify-Write sequence of a standard RAID system with respect t4 operation of the CpU 1.
if a Write request is not pending (Step 29), the controller 3 tests wi,ethef a (dead request is pending (Slap 2f3). it a Read request is pending, the controller 3 reads the directory table to determine the looatlon of each requested dais blodt (Step 2'~. If a requested data block is not In then array (Step 2i3), the ocntrolter 3 reads the block trorn the copybadc cache storage untt CC and transfers it to the C?U
1 (Step 29). Ttte monitoring process then repeats (Step 3o). ft the requested data block is in the array (Step 2b), the corrtrallar 3 reads the block from the stray (S1-S5) in normal tashton and transfers it to the CPU 1 (Step 31). The monitoring prdoess then repeats (Step 32).
Some embodiments of the invention may include disk cache memory in the corttroller 3. Read requests may of course be 'transparentt,P satts~d from such a cache in kno~rn Fashion.
If no lNrite or i~~aad operation la pending for parti~~l~tr scorag~a uni?s in the ~trtay, Indtcatlng that thosfl storage units aria "Idle" with rs~spact to Cf'~I 7 i/0 ao~sa9a, the ~~~arrc~ollar ~ checks tea see if any data blocks s,ra "pending blocks flagged to loc~dons cn ttrQ idh storag~ urltis. If no pencllng blocks exist (Step S3), the corrtroll~r a begins the monitoring cycle again (ata~p ).
if a pending block does exlsd (Step ~), the controller ~ reads a par~ltng block from the copyback cache storage anal CC (Step Vii). The Controller 3 then writes ~t~ pending block to the proper loca~on in the array, and compute and stores a new error-corracilon block that Is computed based upon the pandlrtg block.
1 o In the preiarred ~mbodiment of the irnrerrtlon, the error-corrs~on btodrs contain partht information. Titus, update of the error-eorreGtion block for the pending block can be accomplished by reading the old data block and old error-correction block corresponding to the array location indicated by the location informa~c~n for the pending block stored In the directory (Step 36). The controller 1 S 3 than XOR's the old d~a block, the pending data block, and tt~ okt error-correction block to generate a new error~orrectlon btodc (Step 37). The new error-correction block and the pending btxk are then written to the array S1-at their proper locations (Step 38).
Optionally, if a number of pending blocks are to be written to the same stripe, 20 error-correction can be calculated for all data blocks in the stripe at one i>me by reading all data blocks in the stripe that are not being updated, XORmg those data blocks with the pending blocks to generate a new error-correction block.
and writing the pending blocks and the new error-correction biotic to the array, This may achieve some economy of time.
?~ After the pending block is transferred from the capyback c~ChB storag9 unit CC
to the array, the directory entry for that bto:k Is modtfted to indicate that the data block is In the array rather than in the copyback cache storage unit CC (Step 39), Thereafter, the Corttroller 3 begins the monitoring cy~ie again (Step 40), -7 ~-PJitlougn ~'aa inv~3ntfon has bin desgxfbed In term of .d sequerTtiel branching process, the Invention may allso be inlpl~9173~9rrted In a mutt=tasking systefn as sepatate t~ks ~xecuxlng concurrently. Thus, Ute F~ea~t and Writs processes deacribvd above, as wall as the trtsr of pending data blor~s, may be Implemar~tad as separate tasks executed ooncurremtiy. Accordingly, tits tests indicated by Steps 21, 26, and 3~ in FiGtJRl: 2 may be impllcPtly performed in the c~lllng of ilea associated tasks for WrtUng and Fieadlng data blocks, anr~
transfer of pending bloGcs. Thus, for example, ttte transfer of a pending block from the copyback cache storage unit CC to a storage unit in the array may be performed 1 o concurrently with a Flead operation to a different storapg unit in the array. Further, it the array is of the type that permits the controller 3 to ~stac:k~ a number of I/O
requests for each stors~ge unit of the array (as is the case wish marry SCSi~based RAlD systems), the operations described above may b~ performed 'oonourrentPy' with respect to accesses to the same storage unit.
1 s The Data Log Embodiment As In the embodtmerrt describe above, the cormoller 3 monitors Input/output requests rrom the CptJ 1 err essentially a continuous basis (Step 50). In this embactimgnt, the controller 3 is provided with a relatively large (for example, one megabyte) data buffer to temporarily store data to be written to the array, tf a 2Q Write request is pending (Step 51 ), ttte data block I$ immediately written by the controller 3 to the first available locadan in the copybook cache storage unit CC
(Step 52) (the data block is also stored on the mirror storage unit CC', if present).
Preferably, wrtdng begins at the first logk~J block on the copybadc cache storage unit CC, and cornfnues sequentfalfy to the end of the logical blocks.
Thereafter, writing commences again at the first block (so long as no blocks are overwritten that have not been stored in the array). This preferred method minimizes SEl=K
operations in the copybaotc cache storage unit CC.
In ttte first embodiment, SEEK operations are required to retrieve pending blocks during idle times to transfer to the array. In this embodiment, the oopybadc cage 3o storage unit CC acts as a running 'tog' of Write data. in contrast wiW the ftrst embodimerrt, SEEK operations normally are necessary only to Change to a next 1 ~'~-d~t:~~~~ratir7~ ~~~ {u,~., ~ n~;~t aylinticr in a ~.ilsk ctriv.~j :vl~~sn tlt~
cc~rr~rri =arse; is f~ti(.
ar tca r~sad ttts.~ p~ac~N~rtt~a head back vo tt~~ logical b9c~inr~inc~ wr 2h~
,xrarage unit aft~rr r~~ohlnc~ th;~ 3ntl, car to re~tr'we ~ia~°~ bioc#~F.~ at'i~r ~
9afls~r~.
each data bl~rck ~tar~cl on tP~~ c~apyk~~cir ~ctaa ;~t~ar~aga unit t~~, i~
ai:~s~ flagged ~r9~kh the leatlon ire 2ha ;~rta~~ ~,~ta~ro then d~a~ta~ bloc's is ultim~t~iy tc~ b<a :;crated and tPte le~oaaimn caf the data blcack in the copybacic c~.aoi~~a stc~rag~ unit CC, and a poirrtor is sat to indicat~ that the clatt<t block !s In tho controller barter (Step 33j.
As before, such location and pointer information is pre9er~abiy i~opt in a directory table.
1 t~ muse at the buffQr in the corrtrplisr 3, the de~n~lon o9 a °psnding block" in the second erc~abodiment diPPers somewhat from the defin~lon in the ~~st embodiment described above. A "pending block' is a data block that has been Writte~l to the copyback cache storage unit CC but not transferred from ~ controller buffer to the array S1 ~5.
It a data block is written to the capyback cache storage unit CC while a data block to be stored at the same location in the array is still a "pending block" in the controller buffer, the directory location pointers for the data block are changed to point to the "new" version rather than to the "old" version both in the copyback cache storage unit CC and in the buffer. The old version is thereafter ignorAd, 2C and may be written aver In subsequent operations.
After a Write request is processed in this fashion, the controller 3 immediately sends an acknowledgement to the CPU t indica~ng that the Write operation was successful (Step S4). TTte monitoring process then repeats {Step 55j. FurtPler storage unf2 accesses by the CF~t1 1 can continue without watttng for an errar-:..5 correcilon block update for the data btodt Just wrttcen. Thus, the Write response time of ttte array appears to be the same as a non-redundant system, since storage of the Wr-tte data on the copyback ache storsg~ unit CC does not require the Read-Modlf)r-Wrhte sequence of a standard Re0.iD system with respect to operation of the CPU t.
.t~,.
It a Write reRuest is nc~t ponding (Step 51 ), the controller 3 tests v~hathar a Rsad raRuast is paneling (Step ), ti a F~oad rektuest is pending, the c~arrtrsalier 3 reads tt~ea diractc~ry table to determine tY~g lotion of each roquested data. block (Step 3~. if a requested data block is in the array (Step ;a8), the cortbrollor 3 reads the block from th~ array (Si ~-S5) in normal fashion and ~rariafars it to the CPU
1 (Slap 5g). ~ha man~oring pros then repeats (utep BO).
tt a rertuested data block is net in the array (Step 58), it is in the buffer of the controller 3. The controller 3 transfers th~ data block from its buffer to the CZ'U
1 (Step 61 ). "this operation is extremely fast compared to the first ernbo~tmant, since ih~ buffer operates at electronic speeds with no mschanicalty-impos~ad latency period. The monftoring process then repeats (8tep ~.
if no Write or Raad operation is pending for particular storage units in thte array, indicating that those storage units ate "idle" with re$pect tQ CPU 1 I/O
accssges, the controller 3 checks to see if arty data blocks in its buffer are 'pending blocks"
~aggad to locations on the idle storage units. if no pending blocks exist (Step ts3), tPte controller 3 begins the monitoring cycle again (Step 64).
tt a pending black does exist (Step 63), the corttiroller 3 accesses the pending blor,#c (Step 6a~, and then computes and stores a new error-correction biotic based upon the pending block. As before, in the preterr~d embodiment of the irnention, the error~orrec~on blocks contain parity information. Thus, update of thg error-corrsctJnn block for the pending block can be accomplished by reading the old data block and old error~.,rorrectian block corresponding to the array location indicated by the location information for the pending block stored in the directory (Step 6Sy. The controller 3 them XOF1's the old data block, the pending 2S data block, and the old error-correctfon black to generate a new error-correction block (Step 6~. The new error-correction block and the pending block are then wrtKen to the array S1.S5 (Step 88j.
Optionally, it a number of pending blocks are to be written to the same stripe, error-corn~ctton can be calculated for all data blocfcs in ttm stripes at one time by .i ~_ rca~~linr~ a!1 ~~ r~IcacY,s in tMa ~tri~:.-~ tiaat are root iaaing upd~al~, YOR'irsg those data blocks with th~a parading bioc3cr to c~anor~t~ a new error-correction bioc#c, and writing the pa,~cting k~ha~:#~:~ ~ra~ thea r3asra error-c:orraction block tee the array. i'ttis rraay ~aie~e soma acoratarray rai 'tsrra~a.
Altar tt~~s pen~iirag bloc#t i~ tr~a~rr~l from th~a bv.rtf~~r of the controller 3 to the ~arra~r, the dirac°tory irs mo~lth eaa to iradica~ that the pandlng block is no longer valid Ira the copybaokt cacila saor~ga unit CC or in tMa buffer (Step ag), The old pandlng bilk is thareafiar ignored, and may I~a v~ritt~an ovor in subsequent opera-tions. T'trra controller 3 than rash tMe mon~oring cycle (step ~0).
i 0 !P a faliurr~ to the syst~m occurs before alt pending blacks era written from rite b~rtPar to tho array, the oontrolier 3 can read the pending blocks frcxn the ~pyback cach~ storage anti ~~ that were not wrttten to the array. Th~
controller ~ then wrttes the selected pending blocks to the array.
Again, although the irnrentton has bean dasoribed in terms of a sequentlaJ
t 5 branching process, the invention may also ba implemented in a mtattking system as separate tasks executing concurrentty. Accordingly, the lasts 'sndir~teC!
by Steps 8t, 56, and C~,3 in FiGURIr 3 may ba impildt<y performed In the Ailing of the associated tasks for Wr'rttng and Reading data blocks, and transiar of pending blocks.
~0 The present invention therefore provides the benafrts of a FtAIO system without the Write performance penalty resutUng from the rotational latency time imposed by the standard arror.correction updat~ operation, so long as a clan-loaded cond~ion exists with respect to i10 acc~55es by the CPU t. idle time for any of the stray storage units is productively used to allow data stored on the copybadc cetfte ~5 xtorags unit C~ to be written to the array (either from the cacho itself, or tram the controller buffer) during momerrta of relative inactivity by the CPU t , thus improving overall perfomtanoa.
A number of embodiments of the present invention have been described.
Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. For example, the present invention can be used with S RAID 3, RAID 4, or RAID 5 systems. Furthermore, an error-correction method in addition to or in lieu of XOR-generated parity may be used for the necessary redundancy information. One such method using Reed-Solomon codes in disclosed in U.S.
Patent No. 5,148,432.
As another example, in many RAID systems, a "hot spare" storage unit is provided to immediately substitute for any active storage unit that falls. The present invention may be implemented by using such a "hot spare" as the copyback cache storage unit CC, thus eliminating the need for a storage unit dedicated to the copyback cache funtion. If the "hot spare" is needed for its primary purpose, the RAID system can fall back to a non-copyback caching mode of operation until a replacement disk is provided.
As yet another example, the copyback cache storage unit CC may be attached to the controller 3 through a dedicated bus, rather than through the preferred common I/O bus (e.g. a SCSI bus).
Accordingly, it is to be understood that the invention is not to be limited by the specific illustrated embodiment, but only by the scope of the appended claims.
25 One lmplementatfon of a RAID 3 architecture is tho Micropoiis Oorporat:on ParaJJ~I
Drfv~ Array, Model 1804 SGSI, that uses lour parallel, synchronized disk defuse and c~no redundant parity drive. The failure of one of th~ lour data disk drives can be remedied by the use of the partly btts stored on the partly disk drive.
Another example of a RAIL? 3 system is described in U.S. Patens No. 4,092.73? to Ouchi.
_n,.
~ ITtA,li7 ~ cdl:~(c ~lriy~ rr~~mCary ~~st~r~n has :a rt~ucP~ la:n~u~r r~a~ia of r~~~~n~iar't~yr unit tea data ~ar~it~9 than .a HAIL? ~ >~y;~ksrn. N~~waver, ~ ~i~,i~ ~ .Dya'tsrr~
t~thg same p~r~Yar'maa~c~ lirnttatis~n ~, ~a S~,il3 ~ sy;~~tar~l, in ti~~t ti~ca In~ltvi~lraai di~4c ~~~tuatc~rs are ccaup3~d, cap~r~ting in ~.~niW n. This advut'~~3ty :ati~sc2s trio random zas g~~rtor~ra~r~o~ of 2hta dri~so ~,rr~a~ ~srtsrt ~(a'~~ ftles arse srrta4i, aino.~ only on~ de~tx~ ftie ~t a tirn~ ,n ~~ a~~~~rr~ by tits "~inc~io° aa~a~tcar, ~u~, F~i~ ~
systems errs generally not considor~3r~ to t~~ ateitahie teac c~m~~~rtor :~~y:~t~rns dosignss~d for t7t~'TP
purposes.
A FiAI~ ~ ~trahftactur~a use th~ same partly error cory~~ion concept of th4 FiAI~
t 0 ~ architecture, but Improves on that performance or a ~iAie 3 system with respect to random rmading of small ftles by auncoupling" the operation o? the individual d(sk drive actuators, and reading and writing a larger minimum arnourrt of data (typioaliy, a dlak sector) to each disk (this is aJ.so known as bior~c striping). A
Further aspect of the RAIG a architeotura Is that a single storage un~ is designated 1 ~ as the parity unit A limitation of a F~lii7 4 system is that Writing a data block on arty of the independently operating data storage unite also r~uires writing a n~w parity block on the partly unit. The parity information stored on the parity unit muse be r~ad and XOR'd with the old data (to "remove" the information content of the old data), 2t~ and the reaufting sum must trim be XOR'd wtth the new data (to provtde new parity irrtormation). Both the data and the parity records then muss t~
rewritten to the disk drives. This process is commonly referred to as a "Read-Modity~Wrtte"
sequence.
Thus, a Read and a Wr'tte on the single parity unit occurs each time a record is 2J c~tanged on any of the data storage units covered by the parity record on the parfty unit. The parity unit becomes a bot~a.neck to data writing operations since th~ number of changes to r9cords which cart b~ made per unit of time is a function of the acce>gs rata of the parity unit, as opposed to the teeter access rate provided by parallel operation of th~ multiple data 3'toraga units. ~ecauss of this ~0 limitation, a RAtp ~ system i5 generally not considered to be suitable for computor system:, designed far Dhll~ purposes. lnd~aed, i1; appears that a RA11J ~
system hay not born implaa~narrtad for any aommercial p~urps~sa.
A RAID 5 architecture uses the same parity error rarrectlon concept of tYte RAID
~ archPtero and independent actuators, but irnprr~vos an the wrrong perform-ands of a RAID ~ sys~tam by dlstributlng the data and parity informa~on aoioss all at ih~ avaiiebte disk drtves. Tjlpit~lfy, "~! + 1" storage units in a set (also known as a "redundancy group~) are divided into a plurality of equally sued address areas referred to as blocks, Each storage unit generally contains the same number of blocks. Blocks tram each storage unit in a redundancy group having 1 D the same unit address ranges are referred to as "stripes", Each stripe has N
blacks of data, plus one parity black on one storage unit containing parity for the remainder of the Stripe. Further stripes each have a parity block, the parity blocks being dlstrtduted on different storage units. Parity updating ac~ivitir associated with every modification of data in a redundancy group is therefore distributed over 1 S the dlfterent storage units. No single unit is burdened with ail of the parity update activity.
For example, in a RAID 5 system comprising 5 disk drives, the parity information for the first stripe of blocks may be written to the frfth drive; ttte parity information for the second stripe of blocks may 4s written to the fourth drive; the parity 20 information for the third stripe of blocks may be written to the third drive; etc.
'fhe partty block iar succeeding snipes typically 'processes" around the disk drives in a helical pattern {although other patterns may be used).
Thus, no single disk dr7ve is used for storing the parity information, and the botde-neck of the FIAID 4 architecture is eliminated. An example of a FiAlO 5 system is 25 described in U.S. Patsnt No. 4,761,785 to Clark at al.
As in a RAiD a system, a limitation of a RAID 5 system is that a change in a data block requires a (lead-Modfty-Write s6quence comprising Nvo Read and two Write operartions: the old partly block and old d8ta block must be read sand XOR'd, and the resulting sum must then be XC?R'd with ttt9 new data. Bath the data and th~
parity blocks then mb~c be r~nrrit(sra to tho dlsl'; drives. VVJftile the hero Fiaad operations may bs dAns in parallgl9 as oan the two 4nlrlts operations, modtttcadon of a block of din ~ SID ~ or ~ RAID 5 system still takes subst~cdally longer den tt~e earns opsr~bn on a corerentional disk. A comrerrtlonai disk dos$ not require tf7e preliminary Read operation, and thus does hav~ to wait for the disk drive to rotate back to life previous positiort In order to perform the Write operation. The rotational laterf~cy time alone can amount to about ~09b of the time required for a typia~t! dmodti~tior~ operation. Further, two disk storar~e units are lrrvotved for the duration of each data modifir~tfon operation, Ilmt~ng the throughput of tt~e system as a whale.
Despite ttts ~Ir'rte performance penalty, RAID 5 type systems have become increasingly Popular, since they provide high data reliablifty with a tow overhead cx~st for redundancy, good Bead performance, and fair Write performance.
Hourever, it would be desirable to have the benefits oi: a RAID 5 system without the Wttts performance pertatty resuf~ng from life rotational Is~tency time imposed by the parity update operation.
The present Invention provides suds a system.
~t.9~~1 ~3~ °I'iwl~ i~9°l~d~'~(~~
The present invention sohres the errrar-rorraatlan block taardiQnac~ Inherent in a F~I~ 5 architaature by recngni~on that starag~ emit eases are irrtermittent.
"t'hhat Is, at various tim~s one ar mare Af the stc~raga units in a RAI~ ~
system are Idly In terrns of access requ~sts by th~ CPU. 'this ctsaracterlsttlc ~n be exploited by providing a "copybook cache" storage unit as an adJunct to a standard RAID
system. 'i'he pr~s~nt invention provides two attemative methods of operating such a syst~m.
In bath embodiments, when a Wrtta occurs to the F~AID system, the data is t d immediately written to the first available location in th~ capybadc cache storage unit. Upon cornpletion of the Wrfte to the copybook cache storage unit, the heat CPU is immediately informed that the Write was successful. Thereafter, further starag~ unit accesses by the CPU can continue without wait)ng for an error-correctton block update for the data just wrftten.
15 In the fjrst embodiment at the inverl"tton, during idle lima for relevant storage units of the storage system. an error~corractian bloGc (e.g., XOR parity? is computed for each "pending" data block on the copybook cache storage unit, and the data block and corresponding error-correction black are copied to their proper location in the FIAIC system. Optionally, if a number of pending data blocks are to be 2D written to the same sbfpe, an ~rrQr-correction block can be calculated from all data blocks in the stripe at one time, thus achieving some econarny of time.
In this embodiment, me copybook cache storage unit in eftact stores "peak load"
Write data and then completes the actual Write aperatjons to the FtAlO system during relatively quiescent periods of IIO accesses by the GPU.
In the second embodlmertt of the inver>tion, after Wrtte data is logged to the copybook cache storage unit, normal Read-Modify~Write operation by the f~AID
system controller continues in overlapped tashlon with other CPU IIO
accessras, using Write data in the Controller's buffer memory. Performanc~ is enhanced because the CPU cgn continue processing as soon as the simple carne operation -8..
to the copybaGk cache strarage unit completes, thin eliminating the delay caused by a normal Read-Madlfy-Write RAID system. In this embodimsrrt, the copybook cache storage unit sots more as a running "log° of Wr'ttg data. Data integrity is proservsd since the Write data is saved to the colayback cache storage unit end thus aooesstble even it the Raad-Modify-Write operation to the RAID system never con9(3let~DS.
'1°h~ copybook cache storage unit is preferably non-voisdile, so that data will net be lost on a power tallure. ft the c~opybadt cache storage unit is a dlak drhre, it preferably Is paired wfth a 'mirror" storage unit for fault tolerance.
Opttonaliy, the t t) copyback cache storage unit may ba a solid~te storage unit, which cart aohleve substaraially faster Write and error-corractiQn bk~dc update times titan a disk drive.
The details of the preferred embodiments of ute present tnverttton are set forth in the ar~,.compartying drawings and the descxiption below. Once the details vt the invention ar~ known, numerous addidonal innovsftions and changes will become obvious to one skilled in zhe art.
.g.
~i~i~EE~C~I~'Y'i~~ ~p "Ci'iE A'~ill~9C~
F1C~U~4E 9 is black dlagrarn of a copybac#c cache FIAIt~ system 1n asxordawra with the preserr2 irrverrblon.
~IGIIRE 2 Is a flo~nr-chart of Reaud and t~lriie op~r~don in ~ccorcianwith a ttrst embodlmant of the preaanrc invr~.
FiGIJt~E 3 is a flow-chart of Head anc! Write oper~tlon in accordance with s~
second embodiment at the present tnvertdon.
like reference numbers and designations in the drawings refer to Ilke elements.
p~°f'P~d' Pit39SC
CP~I~~J C~SCRI°iO~i CAF 1"~ti~'~'°'PIC~~i "itarouphout this dsscription> the pee?erred ~mbc~dimarits and examples shown should be considered as exemplars, rather than lirv~itrstiona on the present irlon.
Fi(~tJt~~ 1 is blocac diagram of ~9 copyback cache i~Ait~ system in accordance with ttte present invention. Shown are a CPU 1 coupled by a~ bus ~ to an array controller 3, whioit in the prv~ferred embodiment is a fautt~toi~rant cnritroller. 'fh~
array controller 3 is cqupted to each of the plurality of storag~ units s1-S5 (flue being shown by way of exempla only) by an I/O bus (e.g., a SCS1 bus). The stqrage units S1-SS ate failure independent, meaning that the failure of one unit saes not affect the physical operakton of other units. The array controller 3 is preferably includes a separately programmable processor (tar ~xample, the MIPS
RRtSC processor, made by MIPS of Sunnyvale, California) which can act independently of the Ci'U 1 to cortteol the storage units.
Atso attached to the controller 3 Is a copyback cache storage unit CC, which in the preferred embodiment is coupled to flue common I/O bus (8.g., a 8CSI bus) so that data cart be transferred berivaen the copyback cache storage unit CC
and the storage units S1-SS. The copybaCk cache storage unit CC is pr~ferat~ty non-volatila, so that data will not be lost on a power failure. If the copyback cache storage unit CC is a disk drive, it preferably is paired with a "mirror"
storage unit CC' for fault tolerance. The mirror storage unk CC' is coupled to the cortCrotter 3 such that all data written to the copyback cache storage unit CC is also written essentially simuttaneousty to the mirror storage unit CC', in known fashion.
Optionally, the copybadc cache storage unit CC may ba a solld~state storage unit, 5 which can achiev6 substantially faster Write and error-correc~tlon block update times than a disk drive. tn sucn a case, the solid-stat~ storage unit preferably includes error-datecHon and correction circuitry, and is either non-voiatil4 or has a battery backup on the power supply.
Tho storar~~ unitt~ S1-;~ cba groupaet into orm or mare r~urldancy groups.
1r3 the iiiustrated a~aralpt~s ~dascribad bolaw, ttto redundancy group comprises all of the s'tatage units S1-SS, for slmpllotty of oxplanatir~n.
T°ne prsaserrt invetttlott is preferably irrfplemartted as a ccmputar progr~un axecu~d S by the o~arvtrol9ar ~. FI~aI~Ft~ ~ is a high°lavel tlav~echs~rt roprasarrdng thg steps of the f~a~sd and YYyrite pr s for ~a ittst embodiment of the invention. FIC~~IR~
~ is a high-loved flowchart rapraser'rting the steps of the Road and vyrita proca&aes for a sac~,ond embodiment of the invention. The steps shown in FIGURhS 2 and 3 era raserenc~d below.
Tt~a PeaK Load ~rnbodlmenr 'fh~r controller a monitors input/output requests from the CPU 1 on asserdialiy a ~ntlnuous baaia (Step 20). If a Write request ir> pending (Step ~i ), the data block is immediately written to the first aYaliable location in the oopybadc cache storage unit CC (Step 22) (the data block is also stored on the mirror storage unit CC', if present). preferably, wrtting begins at the first logical block on the copyback cache storage unit CC, and Continues sequen~dalty to the and of the logical blocks. Thereafter, writing commences again at the first block (so long as no blocks are ovatwrirten that have not been stared in the array). This preferred method minlmtzes time-consuming S>rEiC operations (i.a., physical movements of a ReadtWrita head in a storage unit) in the copyback cache storage unit CC.
each data block stored on the copyback cache storage unit CC is also flagged with the location in the army Where the data block Is uJVmataiy to ba stored, and a pointer is sat to indicate that the data block is in the copyback cache storage unit CC (Step 43). This location and pointer ir>tormation is preferably kept in a 2S separate table in memory or on the copybadc cache storage unit CC. The table pref~tably comprises a directory table having entries that include standard information ragatding the si2a, attributes, and status of each data block. In addition, each entry has one or mote fields indicating whether the data block is stored on the copyback cache storage unit CC or in the array (S1-Sti), and the _t~~
°norrnai° 9oo~tlcan in the afray Par the data block's. Creation of ~~s~ dir~t~ary tables Is w~li-6tr~awn iat the ~'°t.
ft a data biaciC is vuritien to th~ ~pybao~c eacfte storage ur>it CC ~hfle a data block to be stared at the same location in the array is still a °psndirag block (a dad block that beta bean Written to the c~pyback cache stafage un'sk CC but not tra~ferfad t~ the array of -SS), the directory location pofrrter far ft ra data block is ~tl~Cl~~ to poir(t to the °neW° V8f~i0n f~l8r tt't$lrt to tile °016~~ 1I~n~tNi. 'Th9 ~51d version Is tt~araaft~r ignored, and may be written aver 1n subsac~uartt operations, Air a Write request is processed in this fashion, the corrOrotler 3 immedlat~ty f t? s~nds an acknowledgement to the CPU 1 indicating that the Wye do was successful (Step 24). 'f'~a monitoring process then repeats (Step 2a~. Further stofage unit accesses by the CPU ~ can cohunue without wat~ng for an error-corfection block update for the data blocfc just written. Thus. ~ W~a 'you~h-put" time of the array app~ars to be the same as a norn-redundant sys~m, slnc~
1 S storage of the Write data on the capybaok cache storage unit GC does not require the Read-Modify-Write sequence of a standard RAID system with respect t4 operation of the CpU 1.
if a Write request is not pending (Step 29), the controller 3 tests wi,ethef a (dead request is pending (Slap 2f3). it a Read request is pending, the controller 3 reads the directory table to determine the looatlon of each requested dais blodt (Step 2'~. If a requested data block is not In then array (Step 2i3), the ocntrolter 3 reads the block trorn the copybadc cache storage untt CC and transfers it to the C?U
1 (Step 29). Ttte monitoring process then repeats (Step 3o). ft the requested data block is in the array (Step 2b), the corrtrallar 3 reads the block from the stray (S1-S5) in normal tashton and transfers it to the CPU 1 (Step 31). The monitoring prdoess then repeats (Step 32).
Some embodiments of the invention may include disk cache memory in the corttroller 3. Read requests may of course be 'transparentt,P satts~d from such a cache in kno~rn Fashion.
If no lNrite or i~~aad operation la pending for parti~~l~tr scorag~a uni?s in the ~trtay, Indtcatlng that thosfl storage units aria "Idle" with rs~spact to Cf'~I 7 i/0 ao~sa9a, the ~~~arrc~ollar ~ checks tea see if any data blocks s,ra "pending blocks flagged to loc~dons cn ttrQ idh storag~ urltis. If no pencllng blocks exist (Step S3), the corrtroll~r a begins the monitoring cycle again (ata~p ).
if a pending block does exlsd (Step ~), the controller ~ reads a par~ltng block from the copyback cache storage anal CC (Step Vii). The Controller 3 then writes ~t~ pending block to the proper loca~on in the array, and compute and stores a new error-corracilon block that Is computed based upon the pandlrtg block.
1 o In the preiarred ~mbodiment of the irnrerrtlon, the error-corrs~on btodrs contain partht information. Titus, update of the error-eorreGtion block for the pending block can be accomplished by reading the old data block and old error-correction block corresponding to the array location indicated by the location informa~c~n for the pending block stored In the directory (Step 36). The controller 1 S 3 than XOR's the old d~a block, the pending data block, and tt~ okt error-correction block to generate a new error~orrectlon btodc (Step 37). The new error-correction block and the pending btxk are then written to the array S1-at their proper locations (Step 38).
Optionally, if a number of pending blocks are to be written to the same stripe, 20 error-correction can be calculated for all data blocks in the stripe at one i>me by reading all data blocks in the stripe that are not being updated, XORmg those data blocks with the pending blocks to generate a new error-correction block.
and writing the pending blocks and the new error-correction biotic to the array, This may achieve some economy of time.
?~ After the pending block is transferred from the capyback c~ChB storag9 unit CC
to the array, the directory entry for that bto:k Is modtfted to indicate that the data block is In the array rather than in the copyback cache storage unit CC (Step 39), Thereafter, the Corttroller 3 begins the monitoring cy~ie again (Step 40), -7 ~-PJitlougn ~'aa inv~3ntfon has bin desgxfbed In term of .d sequerTtiel branching process, the Invention may allso be inlpl~9173~9rrted In a mutt=tasking systefn as sepatate t~ks ~xecuxlng concurrently. Thus, Ute F~ea~t and Writs processes deacribvd above, as wall as the trtsr of pending data blor~s, may be Implemar~tad as separate tasks executed ooncurremtiy. Accordingly, tits tests indicated by Steps 21, 26, and 3~ in FiGtJRl: 2 may be impllcPtly performed in the c~lllng of ilea associated tasks for WrtUng and Fieadlng data blocks, anr~
transfer of pending bloGcs. Thus, for example, ttte transfer of a pending block from the copyback cache storage unit CC to a storage unit in the array may be performed 1 o concurrently with a Flead operation to a different storapg unit in the array. Further, it the array is of the type that permits the controller 3 to ~stac:k~ a number of I/O
requests for each stors~ge unit of the array (as is the case wish marry SCSi~based RAlD systems), the operations described above may b~ performed 'oonourrentPy' with respect to accesses to the same storage unit.
1 s The Data Log Embodiment As In the embodtmerrt describe above, the cormoller 3 monitors Input/output requests rrom the CptJ 1 err essentially a continuous basis (Step 50). In this embactimgnt, the controller 3 is provided with a relatively large (for example, one megabyte) data buffer to temporarily store data to be written to the array, tf a 2Q Write request is pending (Step 51 ), ttte data block I$ immediately written by the controller 3 to the first available locadan in the copybook cache storage unit CC
(Step 52) (the data block is also stored on the mirror storage unit CC', if present).
Preferably, wrtdng begins at the first logk~J block on the copybadc cache storage unit CC, and cornfnues sequentfalfy to the end of the logical blocks.
Thereafter, writing commences again at the first block (so long as no blocks are overwritten that have not been stored in the array). This preferred method minimizes SEl=K
operations in the copybaotc cache storage unit CC.
In ttte first embodiment, SEEK operations are required to retrieve pending blocks during idle times to transfer to the array. In this embodiment, the oopybadc cage 3o storage unit CC acts as a running 'tog' of Write data. in contrast wiW the ftrst embodimerrt, SEEK operations normally are necessary only to Change to a next 1 ~'~-d~t:~~~~ratir7~ ~~~ {u,~., ~ n~;~t aylinticr in a ~.ilsk ctriv.~j :vl~~sn tlt~
cc~rr~rri =arse; is f~ti(.
ar tca r~sad ttts.~ p~ac~N~rtt~a head back vo tt~~ logical b9c~inr~inc~ wr 2h~
,xrarage unit aft~rr r~~ohlnc~ th;~ 3ntl, car to re~tr'we ~ia~°~ bioc#~F.~ at'i~r ~
9afls~r~.
each data bl~rck ~tar~cl on tP~~ c~apyk~~cir ~ctaa ;~t~ar~aga unit t~~, i~
ai:~s~ flagged ~r9~kh the leatlon ire 2ha ;~rta~~ ~,~ta~ro then d~a~ta~ bloc's is ultim~t~iy tc~ b<a :;crated and tPte le~oaaimn caf the data blcack in the copybacic c~.aoi~~a stc~rag~ unit CC, and a poirrtor is sat to indicat~ that the clatt<t block !s In tho controller barter (Step 33j.
As before, such location and pointer information is pre9er~abiy i~opt in a directory table.
1 t~ muse at the buffQr in the corrtrplisr 3, the de~n~lon o9 a °psnding block" in the second erc~abodiment diPPers somewhat from the defin~lon in the ~~st embodiment described above. A "pending block' is a data block that has been Writte~l to the copyback cache storage unit CC but not transferred from ~ controller buffer to the array S1 ~5.
It a data block is written to the capyback cache storage unit CC while a data block to be stored at the same location in the array is still a "pending block" in the controller buffer, the directory location pointers for the data block are changed to point to the "new" version rather than to the "old" version both in the copyback cache storage unit CC and in the buffer. The old version is thereafter ignorAd, 2C and may be written aver In subsequent operations.
After a Write request is processed in this fashion, the controller 3 immediately sends an acknowledgement to the CPU t indica~ng that the Write operation was successful (Step S4). TTte monitoring process then repeats {Step 55j. FurtPler storage unf2 accesses by the CF~t1 1 can continue without watttng for an errar-:..5 correcilon block update for the data btodt Just wrttcen. Thus, the Write response time of ttte array appears to be the same as a non-redundant system, since storage of the Wr-tte data on the copyback ache storsg~ unit CC does not require the Read-Modlf)r-Wrhte sequence of a standard Re0.iD system with respect to operation of the CPU t.
.t~,.
It a Write reRuest is nc~t ponding (Step 51 ), the controller 3 tests v~hathar a Rsad raRuast is paneling (Step ), ti a F~oad rektuest is pending, the c~arrtrsalier 3 reads tt~ea diractc~ry table to determine tY~g lotion of each roquested data. block (Step 3~. if a requested data block is in the array (Step ;a8), the cortbrollor 3 reads the block from th~ array (Si ~-S5) in normal fashion and ~rariafars it to the CPU
1 (Slap 5g). ~ha man~oring pros then repeats (utep BO).
tt a rertuested data block is net in the array (Step 58), it is in the buffer of the controller 3. The controller 3 transfers th~ data block from its buffer to the CZ'U
1 (Step 61 ). "this operation is extremely fast compared to the first ernbo~tmant, since ih~ buffer operates at electronic speeds with no mschanicalty-impos~ad latency period. The monftoring process then repeats (8tep ~.
if no Write or Raad operation is pending for particular storage units in thte array, indicating that those storage units ate "idle" with re$pect tQ CPU 1 I/O
accssges, the controller 3 checks to see if arty data blocks in its buffer are 'pending blocks"
~aggad to locations on the idle storage units. if no pending blocks exist (Step ts3), tPte controller 3 begins the monitoring cycle again (Step 64).
tt a pending black does exist (Step 63), the corttiroller 3 accesses the pending blor,#c (Step 6a~, and then computes and stores a new error-correction biotic based upon the pending block. As before, in the preterr~d embodiment of the irnention, the error~orrec~on blocks contain parity information. Thus, update of thg error-corrsctJnn block for the pending block can be accomplished by reading the old data block and old error~.,rorrectian block corresponding to the array location indicated by the location information for the pending block stored in the directory (Step 6Sy. The controller 3 them XOF1's the old data block, the pending 2S data block, and the old error-correctfon black to generate a new error-correction block (Step 6~. The new error-correction block and the pending block are then wrtKen to the array S1.S5 (Step 88j.
Optionally, it a number of pending blocks are to be written to the same stripe, error-corn~ctton can be calculated for all data blocfcs in ttm stripes at one time by .i ~_ rca~~linr~ a!1 ~~ r~IcacY,s in tMa ~tri~:.-~ tiaat are root iaaing upd~al~, YOR'irsg those data blocks with th~a parading bioc3cr to c~anor~t~ a new error-correction bioc#c, and writing the pa,~cting k~ha~:#~:~ ~ra~ thea r3asra error-c:orraction block tee the array. i'ttis rraay ~aie~e soma acoratarray rai 'tsrra~a.
Altar tt~~s pen~iirag bloc#t i~ tr~a~rr~l from th~a bv.rtf~~r of the controller 3 to the ~arra~r, the dirac°tory irs mo~lth eaa to iradica~ that the pandlng block is no longer valid Ira the copybaokt cacila saor~ga unit CC or in tMa buffer (Step ag), The old pandlng bilk is thareafiar ignored, and may I~a v~ritt~an ovor in subsequent opera-tions. T'trra controller 3 than rash tMe mon~oring cycle (step ~0).
i 0 !P a faliurr~ to the syst~m occurs before alt pending blacks era written from rite b~rtPar to tho array, the oontrolier 3 can read the pending blocks frcxn the ~pyback cach~ storage anti ~~ that were not wrttten to the array. Th~
controller ~ then wrttes the selected pending blocks to the array.
Again, although the irnrentton has bean dasoribed in terms of a sequentlaJ
t 5 branching process, the invention may also ba implemented in a mtattking system as separate tasks executing concurrentty. Accordingly, the lasts 'sndir~teC!
by Steps 8t, 56, and C~,3 in FiGURIr 3 may ba impildt<y performed In the Ailing of the associated tasks for Wr'rttng and Reading data blocks, and transiar of pending blocks.
~0 The present invention therefore provides the benafrts of a FtAIO system without the Write performance penalty resutUng from the rotational latency time imposed by the standard arror.correction updat~ operation, so long as a clan-loaded cond~ion exists with respect to i10 acc~55es by the CPU t. idle time for any of the stray storage units is productively used to allow data stored on the copybadc cetfte ~5 xtorags unit C~ to be written to the array (either from the cacho itself, or tram the controller buffer) during momerrta of relative inactivity by the CPU t , thus improving overall perfomtanoa.
A number of embodiments of the present invention have been described.
Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. For example, the present invention can be used with S RAID 3, RAID 4, or RAID 5 systems. Furthermore, an error-correction method in addition to or in lieu of XOR-generated parity may be used for the necessary redundancy information. One such method using Reed-Solomon codes in disclosed in U.S.
Patent No. 5,148,432.
As another example, in many RAID systems, a "hot spare" storage unit is provided to immediately substitute for any active storage unit that falls. The present invention may be implemented by using such a "hot spare" as the copyback cache storage unit CC, thus eliminating the need for a storage unit dedicated to the copyback cache funtion. If the "hot spare" is needed for its primary purpose, the RAID system can fall back to a non-copyback caching mode of operation until a replacement disk is provided.
As yet another example, the copyback cache storage unit CC may be attached to the controller 3 through a dedicated bus, rather than through the preferred common I/O bus (e.g. a SCSI bus).
Accordingly, it is to be understood that the invention is not to be limited by the specific illustrated embodiment, but only by the scope of the appended claims.
Claims (41)
1. A fault-tolerant storage device array including:
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks;
c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
(2) during idle time of at least some of the plurality of storage units:
(a) reading at least one pending data block from at least one copyback cache storage unit;
(b) accessing the storage units and reading information corresponding to each read pending data block;
(c) generating an associated error-correction block from the read information and each read pending data block;
(d) writing each such read pending data block and associated error-correction block to a corresponding stripe of the idle storage units;
(3) reading requested data blocks from at least one copyback cache storage unit when such requested data blocks have not been written to the plurality of storage units, otherwise from the plurality of storage units.
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks;
c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
(2) during idle time of at least some of the plurality of storage units:
(a) reading at least one pending data block from at least one copyback cache storage unit;
(b) accessing the storage units and reading information corresponding to each read pending data block;
(c) generating an associated error-correction block from the read information and each read pending data block;
(d) writing each such read pending data block and associated error-correction block to a corresponding stripe of the idle storage units;
(3) reading requested data blocks from at least one copyback cache storage unit when such requested data blocks have not been written to the plurality of storage units, otherwise from the plurality of storage units.
2. The storage device array of claim 1, wherein the control means acknowledges completion of writing each received data block to the at least one copyback cache storage unit before writing such data block to one of the storage units.
3. The storage device array of claim 1, wherein the information corresponding to each read pending data block includes a corresponding old error-correction block and corresponding old data block read from the corresponding stripe of idle storage units.
4. The storage device array of claim 2, wherein generating a new error-correction block further includes a. reading a corresponding old data block from the corresponding stripe of the idle storage units;
b. reading a corresponding old error-correction block from the corresponding stripe of the idle storage units;
c. exclusively-OR'ing the old data block, the old error correction block, and the read pending data block, thereby generating a new error-correction block.
b. reading a corresponding old error-correction block from the corresponding stripe of the idle storage units;
c. exclusively-OR'ing the old data block, the old error correction block, and the read pending data block, thereby generating a new error-correction block.
5. The fault-tolerant storage device array of claim 1, wherein at least one copyback cache storage unit is non-volatile.
6. A method for storing data in a fault-tolerant storage device array comprising a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks, including the steps of:
a. providing at least one copyback cache storage unit for temporarily writing received data blocks;
b. writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
c. during idle time of at least one of the plurality of storage units:
(1) reading at least one pending data block from at least one copyback cache storage unit;
(2) accessing the storage units and reading information corresponding to each read pending data block;
(3) generating an associated error-correction block from the read information and each such read pending data block;
(4) writing each such read pending data block and associated error-correction block to a corresponding stripe of the idle storage units;
d. reading requested data blocks from at least one copyback cache storage unit when such requested data blocks have not been written to the plurality of storage units, otherwise from the plurality of storage units.
a. providing at least one copyback cache storage unit for temporarily writing received data blocks;
b. writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
c. during idle time of at least one of the plurality of storage units:
(1) reading at least one pending data block from at least one copyback cache storage unit;
(2) accessing the storage units and reading information corresponding to each read pending data block;
(3) generating an associated error-correction block from the read information and each such read pending data block;
(4) writing each such read pending data block and associated error-correction block to a corresponding stripe of the idle storage units;
d. reading requested data blocks from at least one copyback cache storage unit when such requested data blocks have not been written to the plurality of storage units, otherwise from the plurality of storage units.
7. The method of claim 6, further including the step of acknowledging completion of writing each received data block to the at least one copyback cache storage unit before writing such data block to one of the storage units.
8. The method of claim 6, wherein the step of generating an associated error-correction block from the read information and each read pending data block comprises the steps of:
a. generating a new error-correction block as a function of at least the read pending data block, and a corresponding old error-correction block and corresponding old data block read from the corresponding stripe of the idle storage units.
a. generating a new error-correction block as a function of at least the read pending data block, and a corresponding old error-correction block and corresponding old data block read from the corresponding stripe of the idle storage units.
9. The method of claim 8, wherein the step of generating a new error-correction block comprises the steps of:
a. reading a corresponding old data block from the corresponding stripe of the idle storage units;
b. reading a corresponding old error-correction block from the corresponding stripe of the idle storage units;
c. exclusively-OR'ing the old data block, the old error-correction block, and the read pending data block, thereby generating a new error-correction block.
a. reading a corresponding old data block from the corresponding stripe of the idle storage units;
b. reading a corresponding old error-correction block from the corresponding stripe of the idle storage units;
c. exclusively-OR'ing the old data block, the old error-correction block, and the read pending data block, thereby generating a new error-correction block.
10. The method of claim 6, wherein at least one copyback cache storage unit is non-volatile.
11. A fault-tolerant storage device array including:
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks;
c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, having a buffer memory and including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit;
(2) temporarily storing received data blocks in the buffer memory as pending data blocks;
(3) during idle time of at least some of the plurality of storage units:
(a) accessing at least one pending data block from the buffer memory;
(b) accessing the storage units and reading information corresponding to each accessed pending data block;
(c) generating an associated error-correction block from the read information and each accessed pending data block;
(d) writing each such accessed pending data block and associated error-correction block to a corresponding stripe of the idle storage units;
(4) reading requested data blocks from the buffer memory when such requested data blocks have not been written to the plurality of storage units, otherwise from the plurality of storage units.
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks;
c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, having a buffer memory and including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit;
(2) temporarily storing received data blocks in the buffer memory as pending data blocks;
(3) during idle time of at least some of the plurality of storage units:
(a) accessing at least one pending data block from the buffer memory;
(b) accessing the storage units and reading information corresponding to each accessed pending data block;
(c) generating an associated error-correction block from the read information and each accessed pending data block;
(d) writing each such accessed pending data block and associated error-correction block to a corresponding stripe of the idle storage units;
(4) reading requested data blocks from the buffer memory when such requested data blocks have not been written to the plurality of storage units, otherwise from the plurality of storage units.
12. The storage device array of claim 11, wherein the control means acknowledges completion of writing a received record to the at least one copyback cache storage unit before writing the received record to one of the storage units.
13. The storage device array of claim 11, wherein the read information includes a corresponding old error-correction block and corresponding old data block read from the corresponding stripe of the idle storage units.
14. The storage device array of claim 13, wherein generating a new error-correction block further includes a. reading a corresponding old data block from the corresponding stripe of the idle storage units;
b. reading a corresponding old error-correction block from the corresponding stripe of the idle storage units;
c. exclusively-OR'ing the old data block, the old error-correction block, and the accessed pending data block, thereby generating a new error-correction block.
b. reading a corresponding old error-correction block from the corresponding stripe of the idle storage units;
c. exclusively-OR'ing the old data block, the old error-correction block, and the accessed pending data block, thereby generating a new error-correction block.
15. The storage device array of claim 11, further including means for reading selected data blocks from the at least one copyback cache storage unit and writing such selected data blocks to the plurality of storage units upon a failure of the storage unit controller to write all corresponding data blocks from the buffer memory to the plurality of storage units.
16. The fault-tolerant storage device array of claim 11, wherein at least one copyback cache storage unit is non-volatile.
17. A method for storing data in a fault-tolerant storage device array comprising a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks, including the steps of:
a. providing buffer memory and at least one copyback cache storage unit for temporarily storing data blocks;
b. writing received data blocks initially onto the at least one copyback cache storage unit;
c. temporarily storing received data blocks in the buffer memory as pending data blocks;
d. during idle time of at least one of the plurality of storage units:
(1) accessing at least one pending data block from the buffer memory;
(2) accessing the storage units and reading the information corresponding to each accessed pending data blocks;
(3) generating an associated error-correction block from the read information and each such accessed pending data block;
(4) writing each such accessed pending data block and associated error-correction block to a corresponding stripe of the idle storage units;
e. reading requested data blocks from the buffer memory when such requested data blocks have not been written to the plurality of storage units, otherwise from the plurality of storage units.
a. providing buffer memory and at least one copyback cache storage unit for temporarily storing data blocks;
b. writing received data blocks initially onto the at least one copyback cache storage unit;
c. temporarily storing received data blocks in the buffer memory as pending data blocks;
d. during idle time of at least one of the plurality of storage units:
(1) accessing at least one pending data block from the buffer memory;
(2) accessing the storage units and reading the information corresponding to each accessed pending data blocks;
(3) generating an associated error-correction block from the read information and each such accessed pending data block;
(4) writing each such accessed pending data block and associated error-correction block to a corresponding stripe of the idle storage units;
e. reading requested data blocks from the buffer memory when such requested data blocks have not been written to the plurality of storage units, otherwise from the plurality of storage units.
18. The method of claim 17, further including the step of acknowledging completion of writing each received data block to the at least one copyback cache storage unit before writing such data block to one of the storage units.
19. The method of claim 17, wherein the step of generating an associated error-correction block for each accessed pending data block comprises the steps of:
a. generating a new error-correction block as a function of at least the accessed pending data block, and a corresponding old error-correction block and corresponding old data block read from the corresponding stripe of the idle storage units.
a. generating a new error-correction block as a function of at least the accessed pending data block, and a corresponding old error-correction block and corresponding old data block read from the corresponding stripe of the idle storage units.
20. The method of claim 19, wherein the step of generating a new error-correction block comprises the steps of:
a. reading a corresponding old data block from the corresponding stripe of the idle storage units;
b. reading a corresponding old error-correction block from the corresponding stripe of the idle storage units;
c. exclusively-OR'ing the old data block, the old error-correction block, and the accessed pending data block, thereby generating a new error-correction block.
a. reading a corresponding old data block from the corresponding stripe of the idle storage units;
b. reading a corresponding old error-correction block from the corresponding stripe of the idle storage units;
c. exclusively-OR'ing the old data block, the old error-correction block, and the accessed pending data block, thereby generating a new error-correction block.
21. The method of claim 17, further including the steps of reading selected data blocks from the at least one copyback cache storage unit and writing such selected data blocks to the plurality of storage units upon a failure of the storage unit controller to write all corresponding data blocks from the buffer memory to the plurality of storage units.
22. The method of claim 17, wherein at least one copyback cache storage unit is non-volatile.
23. A fault-tolerant storage device array including:
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks;
and c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
(2) during idle time of at least some of the plurality of storage units:
(a) reading at least one pending data block from at least one copyback cache storage unit;
(b) accessing the storage units and reading information corresponding to each read pending data block;
(c) generating an associated error-correction block from the read information and each read pending data block; and (d) writing each such read pending data block and associated error-correction block to a corresponding stripe of the idle storage units; and (3) acknowledging completion of writing each received data block to the at least one copyback cache storage unit before writing such data block to one of the storage units.
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks;
and c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
(2) during idle time of at least some of the plurality of storage units:
(a) reading at least one pending data block from at least one copyback cache storage unit;
(b) accessing the storage units and reading information corresponding to each read pending data block;
(c) generating an associated error-correction block from the read information and each read pending data block; and (d) writing each such read pending data block and associated error-correction block to a corresponding stripe of the idle storage units; and (3) acknowledging completion of writing each received data block to the at least one copyback cache storage unit before writing such data block to one of the storage units.
24. The fault-tolerant storage device array of claim 23, wherein at least one copyback cache storage unit is non-volatile.
25. A fault-tolerant storage device array including:
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks, at least one of said at least one copyback cache storage unit being non-volatile;
and c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
(2) during idle time of at least some of the plurality of storage units:
(a) reading at least one pending data block from at least one copyback cache storage unit;
(b) accessing the storage units and reading information corresponding to each read pending data block;
(c) generating an associated error-correction block from the read information and each read pending data block; and (d) writing each such read pending data block and associated error-correction block to a corresponding stripe of the idle storage units.
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks, at least one of said at least one copyback cache storage unit being non-volatile;
and c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
(2) during idle time of at least some of the plurality of storage units:
(a) reading at least one pending data block from at least one copyback cache storage unit;
(b) accessing the storage units and reading information corresponding to each read pending data block;
(c) generating an associated error-correction block from the read information and each read pending data block; and (d) writing each such read pending data block and associated error-correction block to a corresponding stripe of the idle storage units.
26. The storage device array of claim 25, wherein the control means acknowledges completion of writing each received data block to the at least one copyback cache storage unit before writing such data block to one of the storage units.
27. A fault-tolerant storage device array including:
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks, at least one of said at least one copyback cache storage unit being non-volatile;
and c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
(2) during idle time of at least some of the plurality of storage units:
(a) reading at least one pending data block from at least one copyback cache storage unit;
(b) accessing the storage units and reading information corresponding to each read pending data block;
(c) generating an associated error-correction block from the read information and each read pending data block; and (d) writing each such read pending data block and associated error-correction block to a corresponding stripe of the idle storage units;
and (3) acknowledging completion of writing each received data block to the at least one copyback cache storage unit before writing such data block to one of the storage units.
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks, at least one of said at least one copyback cache storage unit being non-volatile;
and c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
(2) during idle time of at least some of the plurality of storage units:
(a) reading at least one pending data block from at least one copyback cache storage unit;
(b) accessing the storage units and reading information corresponding to each read pending data block;
(c) generating an associated error-correction block from the read information and each read pending data block; and (d) writing each such read pending data block and associated error-correction block to a corresponding stripe of the idle storage units;
and (3) acknowledging completion of writing each received data block to the at least one copyback cache storage unit before writing such data block to one of the storage units.
28. A fault-tolerant storage device array including:
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks;
and c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
(2) reading at least one pending data block from at least one copyback cache storage unit;
(3) accessing the storage units and reading information corresponding to each read pending data block;
(4) generating an associated error-correction block from the read information and each read pending data block;
(5) writing each such read pending data block and associated error-correction block to a corresponding stripe of the storage units; and (6) acknowledging completion of writing each received data block to the at least one copyback cache storage unit before writing such data block to one of the storage units.
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks;
and c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
(2) reading at least one pending data block from at least one copyback cache storage unit;
(3) accessing the storage units and reading information corresponding to each read pending data block;
(4) generating an associated error-correction block from the read information and each read pending data block;
(5) writing each such read pending data block and associated error-correction block to a corresponding stripe of the storage units; and (6) acknowledging completion of writing each received data block to the at least one copyback cache storage unit before writing such data block to one of the storage units.
29. The storage device array of claim 28, wherein the information corresponding to each read pending data block includes a corresponding old error-correction block and corresponding old data block read from the corresponding stripe of the storage units.
30. The storage device array of claim 28, wherein generating an error-correction block further includes:
a. reading a corresponding old data block from the corresponding stripe of the storage units;
b. reading a corresponding old error-correction block from the corresponding stripe of the storage units; and c. exclusively-ORing the old data block, the old error correction block and the read pending data block, thereby generating a new error-correction block.
a. reading a corresponding old data block from the corresponding stripe of the storage units;
b. reading a corresponding old error-correction block from the corresponding stripe of the storage units; and c. exclusively-ORing the old data block, the old error correction block and the read pending data block, thereby generating a new error-correction block.
31. The storage device array of claim 28, wherein at least one copyback cache storage unit is non-volatile.
32. The storage device array of claim 28, wherein said storage unit controller further includes control means for reading requested data blocks from at least one copyback cache storage unit when such requested data blocks have not been written to the plurality of storage units, otherwise from the plurality of storage units.
33. A fault-tolerant storage device array including:
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks, at least one of said at least one copyback cache storage unit being non-volatile;
and c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
(2) reading at least one pending data block from at least one copyback cache storage unit;
(3) accessing the storage units and reading information corresponding to each read pending data block;
(4) generating an associated error-correction block from the read information and each read pending data block; and (5) writing each such read pending data block and associated error-correction block to a corresponding stripe of the storage units.
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks, at least one of said at least one copyback cache storage unit being non-volatile;
and c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
(2) reading at least one pending data block from at least one copyback cache storage unit;
(3) accessing the storage units and reading information corresponding to each read pending data block;
(4) generating an associated error-correction block from the read information and each read pending data block; and (5) writing each such read pending data block and associated error-correction block to a corresponding stripe of the storage units.
34. The storage device array of claim 33, wherein the control means acknowledges completion of writing each received data block to the at least one copyback cache storage unit before writing such data block to one of the storage units.
35. The storage device array of claim 34, wherein the information corresponding to each read pending data block includes a corresponding old error-correction block and corresponding old data block read from the corresponding stripe of the storage units.
36. The storage device array of claim 35, wherein generating an error-correction block further includes:
a. reading a corresponding old data block from the corresponding stripe of the storage units;
b. reading a corresponding old error-correction block from the corresponding stripe of the storage units; and c. exclusively-ORing the old data block, the old error correction block and the read pending data block, thereby generating a new error-correction block.
a. reading a corresponding old data block from the corresponding stripe of the storage units;
b. reading a corresponding old error-correction block from the corresponding stripe of the storage units; and c. exclusively-ORing the old data block, the old error correction block and the read pending data block, thereby generating a new error-correction block.
37. The storage device array of claim 33, wherein said storage unit controller further includes control means for reading requested data blocks from at least one copyback cache storage unit when such requested data blocks have not been written to the plurality of storage units, otherwise from the plurality of storage units.
38. A fault-tolerant storage device array including:
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks, at least one of said at least one copyback cache storage unit being non-volatile;
and c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
(2) reading at least one pending data block from at least one copyback cache storage unit;
(3) accessing the storage units and reading information corresponding to each read pending data block;
(4) generating an associated error-correction block from the read information and each read pending data block;
(5) writing each such read pending data block and associated error-correction block to a corresponding stripe of the storage units; and (6) acknowledging completion of writing each received data block to the at least one copyback cache storage unit before writing such data block to one of the storage units.
a. a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks;
b. at least one copyback cache storage unit for temporarily storing data blocks, at least one of said at least one copyback cache storage unit being non-volatile;
and c. a storage unit controller, coupled to the plurality of storage units and to the at least one copyback cache storage unit, including control means for:
(1) writing received data blocks initially onto the at least one copyback cache storage unit as pending data blocks;
(2) reading at least one pending data block from at least one copyback cache storage unit;
(3) accessing the storage units and reading information corresponding to each read pending data block;
(4) generating an associated error-correction block from the read information and each read pending data block;
(5) writing each such read pending data block and associated error-correction block to a corresponding stripe of the storage units; and (6) acknowledging completion of writing each received data block to the at least one copyback cache storage unit before writing such data block to one of the storage units.
39. The storage device array of claim 38, wherein the information corresponding to each read pending data block includes a corresponding old error-correction block and corresponding old data block read from the corresponding stripe of the storage units.
40. The storage device array of claim 38, wherein generating an error-correction block further includes:
a. reading a corresponding old data block from the corresponding stripe of the storage units;
b. reading a corresponding old error-correction block from the corresponding stripe of the storage units; and c. exclusively-ORing the old data block, the old error correction block and the read pending data block, thereby generating a new error-correction block.
a. reading a corresponding old data block from the corresponding stripe of the storage units;
b. reading a corresponding old error-correction block from the corresponding stripe of the storage units; and c. exclusively-ORing the old data block, the old error correction block and the read pending data block, thereby generating a new error-correction block.
41. The storage device array of claim 38, wherein said storage unit controller further includes control means for reading requested data blocks from at least one copyback cache storage unit when such requested data blocks have not been written to the plurality of storage units, otherwise from the plurality of storage units.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/638,167 US5274799A (en) | 1991-01-04 | 1991-01-04 | Storage device array architecture with copyback cache |
US07/638,167 | 1991-01-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CA2058734A1 CA2058734A1 (en) | 1992-07-05 |
CA2058734C true CA2058734C (en) | 2002-06-25 |
Family
ID=24558917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA002058734A Expired - Lifetime CA2058734C (en) | 1991-01-04 | 1992-01-03 | Storage device array architecture with copyback cache |
Country Status (7)
Country | Link |
---|---|
US (4) | US5274799A (en) |
EP (1) | EP0493984B1 (en) |
JP (1) | JP3129732B2 (en) |
AU (1) | AU1001492A (en) |
CA (1) | CA2058734C (en) |
DE (1) | DE69126416T2 (en) |
WO (1) | WO1992012482A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9875065B2 (en) * | 2015-02-27 | 2018-01-23 | Kyocera Document Solutions Inc. | Information processing device that extends service life of non-volatile semiconductor memory and recording medium |
Families Citing this family (330)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0679293B2 (en) * | 1990-10-15 | 1994-10-05 | 富士通株式会社 | Computer system |
US5829030A (en) * | 1990-11-05 | 1998-10-27 | Mitsubishi Denki Kabushiki Kaisha | System for performing cache flush transactions from interconnected processor modules to paired memory modules |
JP2641819B2 (en) * | 1990-11-05 | 1997-08-20 | 三菱電機株式会社 | Cache controller, fault tolerant computer and data transfer method thereof |
US5274799A (en) * | 1991-01-04 | 1993-12-28 | Array Technology Corporation | Storage device array architecture with copyback cache |
JP3192664B2 (en) * | 1991-01-22 | 2001-07-30 | 株式会社日立製作所 | Cache memory system and cache memory controller |
US6874101B2 (en) * | 1991-01-31 | 2005-03-29 | Hitachi, Ltd. | Storage unit subsystem |
JP3409859B2 (en) | 1991-01-31 | 2003-05-26 | 株式会社日立製作所 | Control method of control device |
US5592660A (en) * | 1991-03-04 | 1997-01-07 | Fujitsu Limited | Database management system to alternately perform retrieval process and updating process |
JP2923702B2 (en) | 1991-04-01 | 1999-07-26 | 株式会社日立製作所 | Storage device and data restoration method thereof |
JP2743606B2 (en) * | 1991-04-11 | 1998-04-22 | 三菱電機株式会社 | Array type recording device |
JP2913917B2 (en) | 1991-08-20 | 1999-06-28 | 株式会社日立製作所 | Storage device and storage device system |
US5499337A (en) | 1991-09-27 | 1996-03-12 | Emc Corporation | Storage device array architecture with solid-state redundancy unit |
JP3451099B2 (en) * | 1991-12-06 | 2003-09-29 | 株式会社日立製作所 | External storage subsystem |
US5537566A (en) * | 1991-12-17 | 1996-07-16 | Fujitsu Limited | Apparatus and method for controlling background processing in disk array device |
GB2264798A (en) * | 1992-03-04 | 1993-09-08 | Hitachi Ltd | High speed access control |
AU653670B2 (en) * | 1992-03-10 | 1994-10-06 | Data General Corporation | Improvements for high availability disk arrays |
US5469566A (en) * | 1992-03-12 | 1995-11-21 | Emc Corporation | Flexible parity generation circuit for intermittently generating a parity for a plurality of data channels in a redundant array of storage units |
US5708668A (en) * | 1992-05-06 | 1998-01-13 | International Business Machines Corporation | Method and apparatus for operating an array of storage devices |
JPH05341918A (en) * | 1992-05-12 | 1993-12-24 | Internatl Business Mach Corp <Ibm> | Connector for constituting duplex disk storage device system |
DE4392143C1 (en) * | 1992-05-21 | 1996-11-21 | Fujitsu Ltd | Disk array appts. |
WO1993023803A1 (en) * | 1992-05-21 | 1993-11-25 | Fujitsu Limited | Disk array apparatus |
US5315602A (en) * | 1992-08-12 | 1994-05-24 | Digital Equipment Corporation | Optimized stripe detection for redundant arrays of disk drives |
JP3183719B2 (en) * | 1992-08-26 | 2001-07-09 | 三菱電機株式会社 | Array type recording device |
GB2270791B (en) * | 1992-09-21 | 1996-07-17 | Grass Valley Group | Disk-based digital video recorder |
US5418925A (en) * | 1992-10-23 | 1995-05-23 | At&T Global Information Solutions Company | Fast write I/O handling in a disk array using spare drive for buffering |
US5416915A (en) * | 1992-12-11 | 1995-05-16 | International Business Machines Corporation | Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array |
GB2273798A (en) * | 1992-12-22 | 1994-06-29 | Ibm | Cache system for disk array. |
US5579474A (en) * | 1992-12-28 | 1996-11-26 | Hitachi, Ltd. | Disk array system and its control method |
US5761402A (en) * | 1993-03-08 | 1998-06-02 | Hitachi, Ltd. | Array type disk system updating redundant data asynchronously with data access |
US5557770A (en) * | 1993-03-24 | 1996-09-17 | International Business Machines Corporation | Disk storage apparatus and method for converting random writes to sequential writes while retaining physical clustering on disk |
JPH06332623A (en) * | 1993-05-24 | 1994-12-02 | Mitsubishi Electric Corp | Array type recorder and recorder |
JP3862274B2 (en) * | 1993-06-03 | 2006-12-27 | ネットワーク・アプライアンス・インコーポレイテッド | File allocation method of file system integrated with RAID disk subsystem |
US6604118B2 (en) | 1998-07-31 | 2003-08-05 | Network Appliance, Inc. | File system image transfer |
US7174352B2 (en) | 1993-06-03 | 2007-02-06 | Network Appliance, Inc. | File system image transfer |
EP1003103B1 (en) * | 1993-06-03 | 2008-10-01 | Network Appliance, Inc. | Write anywhere file-system layout method and apparatus |
US6138126A (en) | 1995-05-31 | 2000-10-24 | Network Appliance, Inc. | Method for allocating files in a file system integrated with a raid disk sub-system |
WO1994029795A1 (en) * | 1993-06-04 | 1994-12-22 | Network Appliance Corporation | A method for providing parity in a raid sub-system using a non-volatile memory |
US5550998A (en) * | 1993-06-14 | 1996-08-27 | Storage Technology Corporation | Pre-seeking process for enhancing reading and writing performance in a mass storage system having multiple individual disk drives |
US5392244A (en) * | 1993-08-19 | 1995-02-21 | Hewlett-Packard Company | Memory systems with data storage redundancy management |
US5548711A (en) * | 1993-08-26 | 1996-08-20 | Emc Corporation | Method and apparatus for fault tolerant fast writes through buffer dumping |
US5572660A (en) * | 1993-10-27 | 1996-11-05 | Dell Usa, L.P. | System and method for selective write-back caching within a disk array subsystem |
DE4423559A1 (en) * | 1993-11-09 | 1995-05-11 | Hewlett Packard Co | Data connection method and apparatus for multiprocessor computer systems with shared memory |
JPH07175728A (en) * | 1993-12-20 | 1995-07-14 | Hokkaido Nippon Denki Software Kk | Disk cache data maintenance system |
US5396620A (en) * | 1993-12-21 | 1995-03-07 | Storage Technology Corporation | Method for writing specific values last into data storage groups containing redundancy |
US5911150A (en) * | 1994-01-25 | 1999-06-08 | Data General Corporation | Data storage tape back-up for data processing systems using a single driver interface unit |
US5522032A (en) * | 1994-05-05 | 1996-05-28 | International Business Machines Corporation | Raid level 5 with free blocks parity cache |
US5537588A (en) * | 1994-05-11 | 1996-07-16 | International Business Machines Corporation | Partitioned log-structured file system and methods for operating the same |
US5634109A (en) * | 1994-06-20 | 1997-05-27 | International Business Machines Corporation | Method and system for enhanced data management efficiency in memory subsystems utilizing redundant arrays of disk memory devices and a nonvolatile cache |
US5412668A (en) * | 1994-09-22 | 1995-05-02 | International Business Machines Corporation | Parity striping feature for optical disks |
GB2293912A (en) * | 1994-10-05 | 1996-04-10 | Ibm | Disk storage device for disk array |
EP0707267A3 (en) * | 1994-10-12 | 1996-07-03 | Ibm | Redundant array of disk drives with asymmetric mirroring and asymmetric mirroring data processing method |
US5826046A (en) * | 1994-12-30 | 1998-10-20 | International Business Machines Corporation | Method and apparatus for polling and selecting any paired device in any drawer |
US5794242A (en) * | 1995-02-07 | 1998-08-11 | Digital Equipment Corporation | Temporally and spatially organized database |
US5666512A (en) * | 1995-02-10 | 1997-09-09 | Hewlett-Packard Company | Disk array having hot spare resources and methods for using hot spare resources to store user data |
JP3732869B2 (en) * | 1995-06-07 | 2006-01-11 | 株式会社日立製作所 | External storage device |
WO1997001139A1 (en) * | 1995-06-23 | 1997-01-09 | Elonex Plc | Disk array controller with enhanced synchronous write |
US5875456A (en) * | 1995-08-17 | 1999-02-23 | Nstor Corporation | Storage device array and methods for striping and unstriping data and for adding and removing disks online to/from a raid storage array |
US5657468A (en) * | 1995-08-17 | 1997-08-12 | Ambex Technologies, Inc. | Method and apparatus for improving performance in a reduntant array of independent disks |
US5799200A (en) * | 1995-09-28 | 1998-08-25 | Emc Corporation | Power failure responsive apparatus and method having a shadow dram, a flash ROM, an auxiliary battery, and a controller |
US5708771A (en) * | 1995-11-21 | 1998-01-13 | Emc Corporation | Fault tolerant controller system and method |
US6334195B1 (en) * | 1995-12-29 | 2001-12-25 | Lsi Logic Corporation | Use of hot spare drives to boost performance during nominal raid operation |
US5838892A (en) * | 1995-12-29 | 1998-11-17 | Emc Corporation | Method and apparatus for calculating an error detecting code block in a disk drive controller |
US5805787A (en) * | 1995-12-29 | 1998-09-08 | Emc Corporation | Disk based disk cache interfacing system and method |
US5790773A (en) * | 1995-12-29 | 1998-08-04 | Symbios, Inc. | Method and apparatus for generating snapshot copies for data backup in a raid subsystem |
US5787242A (en) * | 1995-12-29 | 1998-07-28 | Symbios Logic Inc. | Method and apparatus for treatment of deferred write data for a dead raid device |
US5720025A (en) * | 1996-01-18 | 1998-02-17 | Hewlett-Packard Company | Frequently-redundant array of independent disks |
DE19607101A1 (en) * | 1996-02-24 | 1997-08-28 | Hella Kg Hueck & Co | Electronic device and device for data transmission between two identical electronic devices |
US6233704B1 (en) | 1996-03-13 | 2001-05-15 | Silicon Graphics, Inc. | System and method for fault-tolerant transmission of data within a dual ring network |
US5864738A (en) * | 1996-03-13 | 1999-01-26 | Cray Research, Inc. | Massively parallel processing system using two data paths: one connecting router circuit to the interconnect network and the other connecting router circuit to I/O controller |
US5748900A (en) * | 1996-03-13 | 1998-05-05 | Cray Research, Inc. | Adaptive congestion control mechanism for modular computer networks |
US5724501A (en) * | 1996-03-29 | 1998-03-03 | Emc Corporation | Quick recovery of write cache in a fault tolerant I/O system |
US5734814A (en) * | 1996-04-15 | 1998-03-31 | Sun Microsystems, Inc. | Host-based RAID-5 and NV-RAM integration |
US5862313A (en) * | 1996-05-20 | 1999-01-19 | Cray Research, Inc. | Raid system using I/O buffer segment to temporary store striped and parity data and connecting all disk drives via a single time multiplexed network |
US5761534A (en) * | 1996-05-20 | 1998-06-02 | Cray Research, Inc. | System for arbitrating packetized data from the network to the peripheral resources and prioritizing the dispatching of packets onto the network |
US5805788A (en) * | 1996-05-20 | 1998-09-08 | Cray Research, Inc. | Raid-5 parity generation and data reconstruction |
US5819310A (en) * | 1996-05-24 | 1998-10-06 | Emc Corporation | Method and apparatus for reading data from mirrored logical volumes on physical disk drives |
US6108812A (en) * | 1996-06-20 | 2000-08-22 | Lsi Logic Corporation | Target device XOR engine |
US5860091A (en) * | 1996-06-28 | 1999-01-12 | Symbios, Inc. | Method and apparatus for efficient management of non-aligned I/O write request in high bandwidth raid applications |
US5974506A (en) * | 1996-06-28 | 1999-10-26 | Digital Equipment Corporation | Enabling mirror, nonmirror and partial mirror cache modes in a dual cache system |
US5802561A (en) * | 1996-06-28 | 1998-09-01 | Digital Equipment Corporation | Simultaneous, mirror write cache |
US5917998A (en) * | 1996-07-26 | 1999-06-29 | International Business Machines Corporation | Method and apparatus for establishing and maintaining the status of membership sets used in mirrored read and write input/output without logging |
US5812754A (en) * | 1996-09-18 | 1998-09-22 | Silicon Graphics, Inc. | Raid system with fibre channel arbitrated loop |
US5991852A (en) * | 1996-10-28 | 1999-11-23 | Mti Technology Corporation | Cache ram using a secondary controller and switching circuit and improved chassis arrangement |
US6038680A (en) * | 1996-12-11 | 2000-03-14 | Compaq Computer Corporation | Failover memory for a computer system |
US5990879A (en) * | 1996-12-20 | 1999-11-23 | Qorvis Media Group, Inc. | Method and apparatus for dynamically arranging information in a presentation sequence to minimize information loss |
US6073218A (en) * | 1996-12-23 | 2000-06-06 | Lsi Logic Corp. | Methods and apparatus for coordinating shared multiple raid controller access to common storage devices |
US5933824A (en) * | 1996-12-23 | 1999-08-03 | Lsi Logic Corporation | Methods and apparatus for locking files within a clustered storage environment |
US6108684A (en) * | 1996-12-23 | 2000-08-22 | Lsi Logic Corporation | Methods and apparatus for balancing loads on a storage subsystem among a plurality of controllers |
US6023584A (en) * | 1997-01-03 | 2000-02-08 | Ncr Corporation | Installation of computer programs using disk mirroring |
JP3204143B2 (en) * | 1997-01-06 | 2001-09-04 | 日本電気株式会社 | How to control disk cache |
US6678462B1 (en) * | 1997-03-25 | 2004-01-13 | Sony Corporation | Electronic device, method and apparatus for controlling an electronic device, and electronic device control system |
US6154853A (en) * | 1997-03-26 | 2000-11-28 | Emc Corporation | Method and apparatus for dynamic sparing in a RAID storage system |
US5944838A (en) * | 1997-03-31 | 1999-08-31 | Lsi Logic Corporation | Method for fast queue restart after redundant I/O path failover |
US5974503A (en) * | 1997-04-25 | 1999-10-26 | Emc Corporation | Storage and access of continuous media files indexed as lists of raid stripe sets associated with file names |
US6202160B1 (en) | 1997-05-13 | 2001-03-13 | Micron Electronics, Inc. | System for independent powering of a computer system |
US6249828B1 (en) | 1997-05-13 | 2001-06-19 | Micron Electronics, Inc. | Method for the hot swap of a mass storage adapter on a system including a statically loaded adapter driver |
US6249885B1 (en) | 1997-05-13 | 2001-06-19 | Karl S. Johnson | Method for managing environmental conditions of a distributed processor system |
US6338150B1 (en) | 1997-05-13 | 2002-01-08 | Micron Technology, Inc. | Diagnostic and managing distributed processor system |
US6363497B1 (en) | 1997-05-13 | 2002-03-26 | Micron Technology, Inc. | System for clustering software applications |
US6292905B1 (en) | 1997-05-13 | 2001-09-18 | Micron Technology, Inc. | Method for providing a fault tolerant network using distributed server processes to remap clustered network resources to other servers during server failure |
US6247080B1 (en) | 1997-05-13 | 2001-06-12 | Micron Electronics, Inc. | Method for the hot add of devices |
US6418492B1 (en) | 1997-05-13 | 2002-07-09 | Micron Electronics | Method for computer implemented hot-swap and hot-add |
US6269417B1 (en) | 1997-05-13 | 2001-07-31 | Micron Technology, Inc. | Method for determining and displaying the physical slot number of an expansion bus device |
US6163853A (en) | 1997-05-13 | 2000-12-19 | Micron Electronics, Inc. | Method for communicating a software-generated pulse waveform between two servers in a network |
US6173346B1 (en) | 1997-05-13 | 2001-01-09 | Micron Electronics, Inc. | Method for hot swapping a programmable storage adapter using a programmable processor for selectively enabling or disabling power to adapter slot in response to respective request signals |
US6243773B1 (en) | 1997-05-13 | 2001-06-05 | Micron Electronics, Inc. | Configuration management system for hot adding and hot replacing devices |
US6253334B1 (en) * | 1997-05-13 | 2001-06-26 | Micron Electronics, Inc. | Three bus server architecture with a legacy PCI bus and mirrored I/O PCI buses |
US6324608B1 (en) | 1997-05-13 | 2001-11-27 | Micron Electronics | Method for hot swapping of network components |
US6134668A (en) | 1997-05-13 | 2000-10-17 | Micron Electronics, Inc. | Method of selective independent powering of portion of computer system through remote interface from remote interface power supply |
US5892928A (en) | 1997-05-13 | 1999-04-06 | Micron Electronics, Inc. | Method for the hot add of a network adapter on a system including a dynamically loaded adapter driver |
US6195717B1 (en) | 1997-05-13 | 2001-02-27 | Micron Electronics, Inc. | Method of expanding bus loading capacity |
US6304929B1 (en) | 1997-05-13 | 2001-10-16 | Micron Electronics, Inc. | Method for hot swapping a programmable adapter by using a programmable processor to selectively disabling and enabling power thereto upon receiving respective control signals |
US6247079B1 (en) | 1997-05-13 | 2001-06-12 | Micron Electronics, Inc | Apparatus for computer implemented hot-swap and hot-add |
US6170067B1 (en) | 1997-05-13 | 2001-01-02 | Micron Technology, Inc. | System for automatically reporting a system failure in a server |
US6179486B1 (en) | 1997-05-13 | 2001-01-30 | Micron Electronics, Inc. | Method for hot add of a mass storage adapter on a system including a dynamically loaded adapter driver |
US6330690B1 (en) | 1997-05-13 | 2001-12-11 | Micron Electronics, Inc. | Method of resetting a server |
US6249834B1 (en) | 1997-05-13 | 2001-06-19 | Micron Technology, Inc. | System for expanding PCI bus loading capacity |
US6170028B1 (en) | 1997-05-13 | 2001-01-02 | Micron Electronics, Inc. | Method for hot swapping a programmable network adapter by using a programmable processor to selectively disabling and enabling power thereto upon receiving respective control signals |
US6266721B1 (en) | 1997-05-13 | 2001-07-24 | Micron Electronics, Inc. | System architecture for remote access and control of environmental management |
US6243838B1 (en) | 1997-05-13 | 2001-06-05 | Micron Electronics, Inc. | Method for automatically reporting a system failure in a server |
US6145098A (en) | 1997-05-13 | 2000-11-07 | Micron Electronics, Inc. | System for displaying system status |
US6499073B1 (en) | 1997-05-13 | 2002-12-24 | Micron Electronics, Inc. | System using programmable processor for selectively enabling or disabling power to adapter in response to respective request signals |
US6282673B1 (en) | 1997-05-13 | 2001-08-28 | Micron Technology, Inc. | Method of recording information system events |
US5987554A (en) | 1997-05-13 | 1999-11-16 | Micron Electronics, Inc. | Method of controlling the transfer of information across an interface between two buses |
US6192434B1 (en) | 1997-05-13 | 2001-02-20 | Micron Electronics, Inc | System for hot swapping a programmable adapter by using a programmable processor to selectively disabling and enabling power thereto upon receiving respective control signals |
US6202111B1 (en) | 1997-05-13 | 2001-03-13 | Micron Electronics, Inc. | Method for the hot add of a network adapter on a system including a statically loaded adapter driver |
US6014759A (en) * | 1997-06-13 | 2000-01-11 | Micron Technology, Inc. | Method and apparatus for transferring test data from a memory array |
US6044429A (en) | 1997-07-10 | 2000-03-28 | Micron Technology, Inc. | Method and apparatus for collision-free data transfers in a memory device with selectable data or address paths |
JPH1153235A (en) * | 1997-08-08 | 1999-02-26 | Toshiba Corp | Data updating method of disk storage device and disk storage control system |
US6553404B2 (en) | 1997-08-08 | 2003-04-22 | Prn Corporation | Digital system |
WO1999008203A1 (en) | 1997-08-08 | 1999-02-18 | Pics Previews, Inc. | An audiovisual content distribution system |
US6381674B2 (en) * | 1997-09-30 | 2002-04-30 | Lsi Logic Corporation | Method and apparatus for providing centralized intelligent cache between multiple data controlling elements |
US6065096A (en) * | 1997-09-30 | 2000-05-16 | Lsi Logic Corporation | Integrated single chip dual mode raid controller |
US5975738A (en) * | 1997-09-30 | 1999-11-02 | Lsi Logic Corporation | Method for detecting failure in redundant controllers using a private LUN |
US6154835A (en) | 1997-10-01 | 2000-11-28 | Micron Electronics, Inc. | Method for automatically configuring and formatting a computer system and installing software |
US6199173B1 (en) | 1997-10-01 | 2001-03-06 | Micron Electronics, Inc. | Method for mapping environmental resources to memory for program access |
US6263387B1 (en) | 1997-10-01 | 2001-07-17 | Micron Electronics, Inc. | System for automatically configuring a server after hot add of a device |
US6175490B1 (en) | 1997-10-01 | 2001-01-16 | Micron Electronics, Inc. | Fault tolerant computer system |
US6212585B1 (en) | 1997-10-01 | 2001-04-03 | Micron Electronics, Inc. | Method of automatically configuring a server after hot add of a device |
US6085303A (en) * | 1997-11-17 | 2000-07-04 | Cray Research, Inc. | Seralized race-free virtual barrier network |
US5970232A (en) * | 1997-11-17 | 1999-10-19 | Cray Research, Inc. | Router table lookup mechanism |
US6035347A (en) * | 1997-12-19 | 2000-03-07 | International Business Machines Corporation | Secure store implementation on common platform storage subsystem (CPSS) by storing write data in non-volatile buffer |
JPH11203056A (en) | 1998-01-19 | 1999-07-30 | Fujitsu Ltd | Input/output controller and array disk device |
US6061750A (en) * | 1998-02-20 | 2000-05-09 | International Business Machines Corporation | Failover system for a DASD storage controller reconfiguring a first processor, a bridge, a second host adaptor, and a second device adaptor upon a second processor failure |
US6112311A (en) * | 1998-02-20 | 2000-08-29 | International Business Machines Corporation | Bridge failover system |
US6457130B2 (en) | 1998-03-03 | 2002-09-24 | Network Appliance, Inc. | File access control in a multi-protocol file server |
US6317844B1 (en) | 1998-03-10 | 2001-11-13 | Network Appliance, Inc. | File server storage arrangement |
US6421746B1 (en) | 1998-03-26 | 2002-07-16 | Micron Electronics, Inc. | Method of data and interrupt posting for computer devices |
DE19819531C1 (en) * | 1998-04-30 | 1999-12-02 | Siemens Ag | RISC processor with a debug interface unit |
US6865642B2 (en) * | 1998-06-24 | 2005-03-08 | International Business Machines Corporation | Method and apparatus for disk caching for an intermediary controller |
US6243827B1 (en) | 1998-06-30 | 2001-06-05 | Digi-Data Corporation | Multiple-channel failure detection in raid systems |
US6505305B1 (en) * | 1998-07-16 | 2003-01-07 | Compaq Information Technologies Group, L.P. | Fail-over of multiple memory blocks in multiple memory modules in computer system |
US6205503B1 (en) | 1998-07-17 | 2001-03-20 | Mallikarjunan Mahalingam | Method for the hot swap and add of input/output platforms and devices |
US6223234B1 (en) | 1998-07-17 | 2001-04-24 | Micron Electronics, Inc. | Apparatus for the hot swap and add of input/output platforms and devices |
US6343343B1 (en) | 1998-07-31 | 2002-01-29 | International Business Machines Corporation | Disk arrays using non-standard sector sizes |
US6243795B1 (en) | 1998-08-04 | 2001-06-05 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | Redundant, asymmetrically parallel disk cache for a data storage system |
US6446237B1 (en) | 1998-08-04 | 2002-09-03 | International Business Machines Corporation | Updating and reading data and parity blocks in a shared disk system |
US6332197B1 (en) | 1998-08-04 | 2001-12-18 | International Business Machines Corp. | System for updating data in a multi-adaptor environment |
US6272662B1 (en) | 1998-08-04 | 2001-08-07 | International Business Machines Corporation | Distributed storage system using front-end and back-end locking |
US6128762A (en) * | 1998-08-04 | 2000-10-03 | International Business Machines Corporation | Updating and reading data and parity blocks in a shared disk system with request forwarding |
US6446220B1 (en) | 1998-08-04 | 2002-09-03 | International Business Machines Corporation | Updating data and parity data with and without read caches |
US6279138B1 (en) | 1998-08-04 | 2001-08-21 | International Business Machines Corporation | System for changing the parity structure of a raid array |
US6119244A (en) | 1998-08-25 | 2000-09-12 | Network Appliance, Inc. | Coordinating persistent status information with multiple file servers |
US6216174B1 (en) | 1998-09-29 | 2001-04-10 | Silicon Graphics, Inc. | System and method for fast barrier synchronization |
JP3511576B2 (en) * | 1998-10-02 | 2004-03-29 | 松下電器産業株式会社 | Disc recording / reproducing method and apparatus |
US6330687B1 (en) | 1998-11-13 | 2001-12-11 | Digi-Data Corporation | System and method to maintain performance among N single raid systems during non-fault conditions while sharing multiple storage devices during conditions of a faulty host computer or faulty storage array controller |
US6343984B1 (en) | 1998-11-30 | 2002-02-05 | Network Appliance, Inc. | Laminar flow duct cooling system |
US6769088B1 (en) * | 1999-06-30 | 2004-07-27 | Maxtor Corporation | Sector-coding technique for reduced read-after-write operations |
US6629199B1 (en) * | 1999-08-20 | 2003-09-30 | Emc Corporation | Digital data storage system including directory for efficiently providing formatting information for stored records and utilization of a check value for verifying that a record is from a particular storage location |
US6674720B1 (en) | 1999-09-29 | 2004-01-06 | Silicon Graphics, Inc. | Age-based network arbitration system and method |
US6467048B1 (en) * | 1999-10-07 | 2002-10-15 | Compaq Information Technologies Group, L.P. | Apparatus, method and system for using cache memory as fail-over memory |
US6553458B1 (en) * | 1999-12-14 | 2003-04-22 | Ncr Corporation | Integrated redundant storage device |
US6542960B1 (en) * | 1999-12-16 | 2003-04-01 | Adaptec, Inc. | System and method for parity caching based on stripe locking in raid data storage |
EP1128267A1 (en) * | 2000-02-25 | 2001-08-29 | Hewlett-Packard Company, A Delaware Corporation | Disk storage system having redundant solid state data storage devices |
US6701449B1 (en) | 2000-04-20 | 2004-03-02 | Ciprico, Inc. | Method and apparatus for monitoring and analyzing network appliance status information |
AU2001255523A1 (en) * | 2000-04-20 | 2001-11-07 | Ciprico Inc. | Method and apparatus for maintaining the integrity of configuration data in redundant, fault tolerant network appliances |
US6330642B1 (en) * | 2000-06-29 | 2001-12-11 | Bull Hn Informatin Systems Inc. | Three interconnected raid disk controller data processing system architecture |
US6802039B1 (en) * | 2000-06-30 | 2004-10-05 | Intel Corporation | Using hardware or firmware for cache tag and data ECC soft error correction |
US6728922B1 (en) | 2000-08-18 | 2004-04-27 | Network Appliance, Inc. | Dynamic data space |
US6636879B1 (en) | 2000-08-18 | 2003-10-21 | Network Appliance, Inc. | Space allocation in a write anywhere file system |
US7072916B1 (en) | 2000-08-18 | 2006-07-04 | Network Appliance, Inc. | Instant snapshot |
US6804819B1 (en) | 2000-09-18 | 2004-10-12 | Hewlett-Packard Development Company, L.P. | Method, system, and computer program product for a data propagation platform and applications of same |
US6725342B1 (en) * | 2000-09-26 | 2004-04-20 | Intel Corporation | Non-volatile mass storage cache coherency apparatus |
US6434682B1 (en) | 2000-09-28 | 2002-08-13 | International Business Machines Corporation | Data management system with shortcut migration via efficient automatic reconnection to previously migrated copy |
US6446160B1 (en) | 2000-09-28 | 2002-09-03 | International Business Machines Corporation | Multi-drive data storage system with analysis and selected demounting of idle data storage media |
US6604160B1 (en) | 2000-09-28 | 2003-08-05 | International Business Machines Corporation | Computing system arbitrating and selectively providing resource-seeking tasks with takeaway of non-shareable resources |
DE60114879T2 (en) * | 2000-12-20 | 2006-07-20 | Koninklijke Philips Electronics N.V. | POWER FAILURE BACKUP DEVICE FOR RECORDING / PLAYBACK SETTING |
US6785767B2 (en) | 2000-12-26 | 2004-08-31 | Intel Corporation | Hybrid mass storage system and method with two different types of storage medium |
US6606690B2 (en) | 2001-02-20 | 2003-08-12 | Hewlett-Packard Development Company, L.P. | System and method for accessing a storage area network as network attached storage |
US6799284B1 (en) | 2001-02-28 | 2004-09-28 | Network Appliance, Inc. | Reparity bitmap RAID failure recovery |
US6865717B2 (en) * | 2001-05-30 | 2005-03-08 | International Business Machines Corporation | Method, system, and program for generating a progress indicator |
US6996668B2 (en) * | 2001-08-06 | 2006-02-07 | Seagate Technology Llc | Synchronized mirrored data in a data storage device |
US7275135B2 (en) * | 2001-08-31 | 2007-09-25 | Intel Corporation | Hardware updated metadata for non-volatile mass storage cache |
EP2017901A1 (en) * | 2001-09-03 | 2009-01-21 | Panasonic Corporation | Semiconductor light emitting device, light emitting apparatus and production method for semiconductor light emitting DEV |
US20030074524A1 (en) * | 2001-10-16 | 2003-04-17 | Intel Corporation | Mass storage caching processes for power reduction |
US6973537B1 (en) * | 2001-10-23 | 2005-12-06 | Emc Corporation | Disk cache interfacing system and method |
US7174422B1 (en) * | 2001-10-23 | 2007-02-06 | Emc Corporation | Data storage device with two-tier raid control circuitry |
US7502886B1 (en) | 2001-10-23 | 2009-03-10 | Emc Corporation | Data storage device with two-tier raid control circuitry |
US6851082B1 (en) | 2001-11-13 | 2005-02-01 | Network Appliance, Inc. | Concentrated parity technique for handling double failures and enabling storage of more than one parity block per stripe on a storage device of a storage array |
US7346831B1 (en) | 2001-11-13 | 2008-03-18 | Network Appliance, Inc. | Parity assignment technique for parity declustering in a parity array of a storage system |
US7640484B2 (en) * | 2001-12-28 | 2009-12-29 | Netapp, Inc. | Triple parity technique for enabling efficient recovery from triple failures in a storage array |
US7613984B2 (en) | 2001-12-28 | 2009-11-03 | Netapp, Inc. | System and method for symmetric triple parity for failing storage devices |
US6993701B2 (en) * | 2001-12-28 | 2006-01-31 | Network Appliance, Inc. | Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array |
US7073115B2 (en) * | 2001-12-28 | 2006-07-04 | Network Appliance, Inc. | Correcting multiple block data loss in a storage array using a combination of a single diagonal parity group and multiple row parity groups |
US8402346B2 (en) | 2001-12-28 | 2013-03-19 | Netapp, Inc. | N-way parity technique for enabling recovery from up to N storage device failures |
US7080278B1 (en) | 2002-03-08 | 2006-07-18 | Network Appliance, Inc. | Technique for correcting multiple storage device failures in a storage array |
US7539991B2 (en) * | 2002-03-21 | 2009-05-26 | Netapp, Inc. | Method and apparatus for decomposing I/O tasks in a raid system |
US7200715B2 (en) * | 2002-03-21 | 2007-04-03 | Network Appliance, Inc. | Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes |
US7437727B2 (en) * | 2002-03-21 | 2008-10-14 | Network Appliance, Inc. | Method and apparatus for runtime resource deadlock avoidance in a raid system |
US7254813B2 (en) * | 2002-03-21 | 2007-08-07 | Network Appliance, Inc. | Method and apparatus for resource allocation in a raid system |
US6976146B1 (en) | 2002-05-21 | 2005-12-13 | Network Appliance, Inc. | System and method for emulating block appended checksums on storage devices by sector stealing |
US7028154B2 (en) | 2002-06-18 | 2006-04-11 | Hewlett-Packard Development Company, L.P. | Procedure to reduce copy time for data backup from short-term to long-term memory |
US6952758B2 (en) * | 2002-07-31 | 2005-10-04 | International Business Machines Corporation | Method and system for providing consistent data modification information to clients in a storage system |
US7454529B2 (en) * | 2002-08-02 | 2008-11-18 | Netapp, Inc. | Protectable data storage system and a method of protecting and/or managing a data storage system |
US7069466B2 (en) * | 2002-08-14 | 2006-06-27 | Alacritus, Inc. | Method and system for copying backup data |
US6922752B2 (en) * | 2002-08-23 | 2005-07-26 | Hewlett-Packard Development Company, L.P. | Storage system using fast storage devices for storing redundant data |
US7437387B2 (en) * | 2002-08-30 | 2008-10-14 | Netapp, Inc. | Method and system for providing a file system overlay |
US7882081B2 (en) * | 2002-08-30 | 2011-02-01 | Netapp, Inc. | Optimized disk repository for the storage and retrieval of mostly sequential data |
US6928515B2 (en) * | 2002-11-09 | 2005-08-09 | International Business Machines Corporation | Integrated sector format-error correction code system and method for efficient writing in a disk array system |
US7567993B2 (en) * | 2002-12-09 | 2009-07-28 | Netapp, Inc. | Method and system for creating and using removable disk based copies of backup data |
US8024172B2 (en) * | 2002-12-09 | 2011-09-20 | Netapp, Inc. | Method and system for emulating tape libraries |
US7437053B2 (en) * | 2003-01-15 | 2008-10-14 | Matsushita Electric Industrial Co., Ltd. | Digital video recorder, method of driving the video recorder and program |
JP3811127B2 (en) * | 2003-01-30 | 2006-08-16 | 株式会社東芝 | Information recording apparatus and information recording method |
US6973369B2 (en) * | 2003-03-12 | 2005-12-06 | Alacritus, Inc. | System and method for virtual vaulting |
US7185144B2 (en) * | 2003-11-24 | 2007-02-27 | Network Appliance, Inc. | Semi-static distribution technique |
US7111147B1 (en) * | 2003-03-21 | 2006-09-19 | Network Appliance, Inc. | Location-independent RAID group virtual block management |
US7664913B2 (en) * | 2003-03-21 | 2010-02-16 | Netapp, Inc. | Query-based spares management technique |
US7424637B1 (en) | 2003-03-21 | 2008-09-09 | Networks Appliance, Inc. | Technique for managing addition of disks to a volume of a storage system |
US7143235B1 (en) | 2003-03-21 | 2006-11-28 | Network Appliance, Inc. | Proposed configuration management behaviors in a raid subsystem |
US7328364B1 (en) | 2003-03-21 | 2008-02-05 | Network Appliance, Inc. | Technique for coherent suspension of I/O operations in a RAID subsystem |
US7210061B2 (en) * | 2003-04-17 | 2007-04-24 | Hewlett-Packard Development, L.P. | Data redundancy for writes using remote storage system cache memory |
US7275179B1 (en) | 2003-04-24 | 2007-09-25 | Network Appliance, Inc. | System and method for reducing unrecoverable media errors in a disk subsystem |
US7392347B2 (en) * | 2003-05-10 | 2008-06-24 | Hewlett-Packard Development Company, L.P. | Systems and methods for buffering data between a coherency cache controller and memory |
US7437492B2 (en) * | 2003-05-14 | 2008-10-14 | Netapp, Inc | Method and system for data compression and compression estimation in a virtual tape library environment |
US7380059B2 (en) * | 2003-05-16 | 2008-05-27 | Pillar Data Systems, Inc. | Methods and systems of cache memory management and snapshot operations |
US7047379B2 (en) | 2003-07-11 | 2006-05-16 | International Business Machines Corporation | Autonomic link optimization through elimination of unnecessary transfers |
US7546418B2 (en) * | 2003-08-20 | 2009-06-09 | Dell Products L.P. | System and method for managing power consumption and data integrity in a computer system |
JP2005122453A (en) * | 2003-10-16 | 2005-05-12 | Hitachi Ltd | Disk controller control system for storage device, and the storage device |
US7475186B2 (en) * | 2003-10-31 | 2009-01-06 | Superspeed Software | System and method for persistent RAM disk |
US7328305B2 (en) | 2003-11-03 | 2008-02-05 | Network Appliance, Inc. | Dynamic parity distribution technique |
US7263629B2 (en) * | 2003-11-24 | 2007-08-28 | Network Appliance, Inc. | Uniform and symmetric double failure correcting technique for protecting against two disk failures in a disk array |
US7366837B2 (en) * | 2003-11-24 | 2008-04-29 | Network Appliance, Inc. | Data placement technique for striping data containers across volumes of a storage system cluster |
US7647451B1 (en) | 2003-11-24 | 2010-01-12 | Netapp, Inc. | Data placement technique for striping data containers across volumes of a storage system cluster |
US7197599B2 (en) * | 2003-12-29 | 2007-03-27 | Intel Corporation | Method, system, and program for managing data updates |
US7315965B2 (en) * | 2004-02-04 | 2008-01-01 | Network Appliance, Inc. | Method and system for storing data using a continuous data protection system |
US7559088B2 (en) * | 2004-02-04 | 2009-07-07 | Netapp, Inc. | Method and apparatus for deleting data upon expiration |
US7490103B2 (en) * | 2004-02-04 | 2009-02-10 | Netapp, Inc. | Method and system for backing up data |
US7426617B2 (en) * | 2004-02-04 | 2008-09-16 | Network Appliance, Inc. | Method and system for synchronizing volumes in a continuous data protection system |
US7406488B2 (en) * | 2004-02-04 | 2008-07-29 | Netapp | Method and system for maintaining data in a continuous data protection system |
US7720817B2 (en) * | 2004-02-04 | 2010-05-18 | Netapp, Inc. | Method and system for browsing objects on a protected volume in a continuous data protection system |
US20050182910A1 (en) * | 2004-02-04 | 2005-08-18 | Alacritus, Inc. | Method and system for adding redundancy to a continuous data protection system |
US7783606B2 (en) * | 2004-02-04 | 2010-08-24 | Netapp, Inc. | Method and system for remote data recovery |
US7904679B2 (en) * | 2004-02-04 | 2011-03-08 | Netapp, Inc. | Method and apparatus for managing backup data |
US7325159B2 (en) * | 2004-02-04 | 2008-01-29 | Network Appliance, Inc. | Method and system for data recovery in a continuous data protection system |
US7165141B2 (en) * | 2004-02-27 | 2007-01-16 | Hewlett-Packard Development Company, L.P. | Daisy-chained device-mirroring architecture |
US8028135B1 (en) | 2004-09-01 | 2011-09-27 | Netapp, Inc. | Method and apparatus for maintaining compliant storage |
US7321905B2 (en) * | 2004-09-30 | 2008-01-22 | International Business Machines Corporation | System and method for efficient data recovery in a storage array utilizing multiple parity slopes |
US7318119B2 (en) * | 2004-10-29 | 2008-01-08 | International Business Machines Corporation | System and method for fault tolerant controller for network RAID |
US7290199B2 (en) * | 2004-11-19 | 2007-10-30 | International Business Machines Corporation | Method and system for improved buffer utilization for disk array parity updates |
US7392428B2 (en) * | 2004-11-19 | 2008-06-24 | International Business Machines Corporation | Method and system for recovering from abnormal interruption of a parity update operation in a disk array system |
US7392458B2 (en) * | 2004-11-19 | 2008-06-24 | International Business Machines Corporation | Method and system for enhanced error identification with disk array parity checking |
US20060123312A1 (en) * | 2004-11-19 | 2006-06-08 | International Business Machines Corporation | Method and system for increasing parallelism of disk accesses when restoring data in a disk array system |
US20060123271A1 (en) * | 2004-11-19 | 2006-06-08 | International Business Machines Corporation | RAID environment incorporating hardware-based finite field multiplier for on-the-fly XOR |
US8205058B2 (en) * | 2004-12-10 | 2012-06-19 | International Business Machines Corporation | Resource management for data storage services |
US7581118B2 (en) * | 2004-12-14 | 2009-08-25 | Netapp, Inc. | Disk sanitization using encryption |
US7558839B1 (en) | 2004-12-14 | 2009-07-07 | Netapp, Inc. | Read-after-write verification for improved write-once-read-many data storage |
US7774610B2 (en) * | 2004-12-14 | 2010-08-10 | Netapp, Inc. | Method and apparatus for verifiably migrating WORM data |
US7526620B1 (en) | 2004-12-14 | 2009-04-28 | Netapp, Inc. | Disk sanitization in an active file system |
US7730257B2 (en) * | 2004-12-16 | 2010-06-01 | Broadcom Corporation | Method and computer program product to increase I/O write performance in a redundant array |
US20060143412A1 (en) * | 2004-12-28 | 2006-06-29 | Philippe Armangau | Snapshot copy facility maintaining read performance and write performance |
US7441081B2 (en) * | 2004-12-29 | 2008-10-21 | Lsi Corporation | Write-back caching for disk drives |
US7143308B2 (en) * | 2005-01-14 | 2006-11-28 | Charlie Tseng | Apparatus, system, and method for differential rebuilding of a reactivated offline RAID member disk |
US7398460B1 (en) | 2005-01-31 | 2008-07-08 | Network Appliance, Inc. | Technique for efficiently organizing and distributing parity blocks among storage devices of a storage array |
US8296162B1 (en) | 2005-02-01 | 2012-10-23 | Webmd Llc. | Systems, devices, and methods for providing healthcare information |
US7360112B2 (en) | 2005-02-07 | 2008-04-15 | International Business Machines Corporation | Detection and recovery of dropped writes in storage devices |
US7779294B2 (en) * | 2005-04-15 | 2010-08-17 | Intel Corporation | Power-safe disk storage apparatus, systems, and methods |
GB0507912D0 (en) | 2005-04-20 | 2005-05-25 | Ibm | Disk drive and method for protecting data writes in a disk drive |
EP1877903B1 (en) | 2005-04-29 | 2008-09-03 | Network Appliance, Inc. | System and method for generating consistent images of a set of data objects |
US7437490B2 (en) * | 2005-05-27 | 2008-10-14 | International Business Machines Corporation | Channel communication array queues in hardware system area |
US7441146B2 (en) * | 2005-06-10 | 2008-10-21 | Intel Corporation | RAID write completion apparatus, systems, and methods |
US7562188B2 (en) * | 2005-06-17 | 2009-07-14 | Intel Corporation | RAID power safe apparatus, systems, and methods |
JP4817783B2 (en) * | 2005-09-30 | 2011-11-16 | 富士通株式会社 | RAID system and rebuild / copyback processing method thereof |
US7401198B2 (en) * | 2005-10-06 | 2008-07-15 | Netapp | Maximizing storage system throughput by measuring system performance metrics |
CN101900956A (en) * | 2005-11-23 | 2010-12-01 | Fsi国际公司 | Remove the method for material from base material |
US7752401B2 (en) | 2006-01-25 | 2010-07-06 | Netapp, Inc. | Method and apparatus to automatically commit files to WORM status |
US8560503B1 (en) | 2006-01-26 | 2013-10-15 | Netapp, Inc. | Content addressable storage system |
US7650533B1 (en) | 2006-04-20 | 2010-01-19 | Netapp, Inc. | Method and system for performing a restoration in a continuous data protection system |
US20080070688A1 (en) * | 2006-09-20 | 2008-03-20 | John Loehrer | Real-time gaming system having scalable database |
US7822921B2 (en) | 2006-10-31 | 2010-10-26 | Netapp, Inc. | System and method for optimizing write operations in storage systems |
WO2008056612A1 (en) * | 2006-11-06 | 2008-05-15 | Panasonic Corporation | Information security apparatus |
US7613947B1 (en) | 2006-11-30 | 2009-11-03 | Netapp, Inc. | System and method for storage takeover |
US7647526B1 (en) | 2006-12-06 | 2010-01-12 | Netapp, Inc. | Reducing reconstruct input/output operations in storage systems |
CN101622594B (en) * | 2006-12-06 | 2013-03-13 | 弗森-艾奥公司 | Apparatus, system, and method for managing data in a request device with an empty data token directive |
US8239706B1 (en) | 2007-01-03 | 2012-08-07 | Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | Data retrieval system and method that provides retrieval of data to any point in time |
US7730347B1 (en) | 2007-01-03 | 2010-06-01 | Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | Data recovery system and method including a disk array architecture that provides recovery of data to any point of time |
US7870356B1 (en) | 2007-02-22 | 2011-01-11 | Emc Corporation | Creation of snapshot copies using a sparse file for keeping a record of changed blocks |
US8312214B1 (en) | 2007-03-28 | 2012-11-13 | Netapp, Inc. | System and method for pausing disk drives in an aggregate |
US7653612B1 (en) | 2007-03-28 | 2010-01-26 | Emc Corporation | Data protection services offload using shallow files |
US8209587B1 (en) | 2007-04-12 | 2012-06-26 | Netapp, Inc. | System and method for eliminating zeroing of disk drives in RAID arrays |
US8898536B2 (en) | 2007-04-27 | 2014-11-25 | Netapp, Inc. | Multi-core engine for detecting bit errors |
US7840837B2 (en) | 2007-04-27 | 2010-11-23 | Netapp, Inc. | System and method for protecting memory during system initialization |
US7836331B1 (en) | 2007-05-15 | 2010-11-16 | Netapp, Inc. | System and method for protecting the contents of memory during error conditions |
JP4963088B2 (en) * | 2007-07-13 | 2012-06-27 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Data caching technology |
US7975102B1 (en) | 2007-08-06 | 2011-07-05 | Netapp, Inc. | Technique to avoid cascaded hot spotting |
US20090049050A1 (en) * | 2007-08-15 | 2009-02-19 | Jeff Whitehead | File-based horizontal storage system |
TWI362044B (en) * | 2007-11-09 | 2012-04-11 | Transcend Information Inc | Storage apparatus and method for accessing data and for managing memory block |
US7836226B2 (en) | 2007-12-06 | 2010-11-16 | Fusion-Io, Inc. | Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment |
US7984259B1 (en) | 2007-12-17 | 2011-07-19 | Netapp, Inc. | Reducing load imbalance in a storage system |
US8127182B2 (en) * | 2008-09-16 | 2012-02-28 | Lsi Corporation | Storage utilization to improve reliability using impending failure triggers |
US9158579B1 (en) | 2008-11-10 | 2015-10-13 | Netapp, Inc. | System having operation queues corresponding to operation execution time |
US8495417B2 (en) * | 2009-01-09 | 2013-07-23 | Netapp, Inc. | System and method for redundancy-protected aggregates |
US8307258B2 (en) * | 2009-05-18 | 2012-11-06 | Fusion-10, Inc | Apparatus, system, and method for reconfiguring an array to operate with less storage elements |
US8281227B2 (en) | 2009-05-18 | 2012-10-02 | Fusion-10, Inc. | Apparatus, system, and method to increase data integrity in a redundant storage system |
US8413132B2 (en) * | 2010-09-13 | 2013-04-02 | Samsung Electronics Co., Ltd. | Techniques for resolving read-after-write (RAW) conflicts using backup area |
US8775731B2 (en) | 2011-03-25 | 2014-07-08 | Dell Products, L.P. | Write spike performance enhancement in hybrid storage systems |
ES2824782T3 (en) * | 2011-04-12 | 2021-05-13 | Amadeus Sas | Cache structure and method |
US8688635B2 (en) * | 2011-07-01 | 2014-04-01 | International Business Machines Corporation | Data set connection manager having a plurality of data sets to represent one data set |
US10965742B2 (en) * | 2012-02-13 | 2021-03-30 | SkyKick, Inc. | Migration project automation, e.g., automated selling, planning, migration and configuration of email systems |
WO2014041638A1 (en) * | 2012-09-12 | 2014-03-20 | 株式会社 東芝 | Storage apparatus, storage controller, and method for managing location of error correction code block in array |
US10643668B1 (en) | 2013-08-27 | 2020-05-05 | Seagate Technology Llc | Power loss data block marking |
US9323630B2 (en) | 2013-09-16 | 2016-04-26 | HGST Netherlands B.V. | Enhanced data recovery from data storage devices |
US9798620B2 (en) | 2014-02-06 | 2017-10-24 | Sandisk Technologies Llc | Systems and methods for non-blocking solid-state memory |
US10176039B2 (en) | 2014-09-19 | 2019-01-08 | Micron Technology, Inc. | Self-accumulating exclusive OR program |
EP3201778A4 (en) * | 2014-10-03 | 2018-04-25 | Agency for Science, Technology and Research | Method for optimizing reconstruction of data for a hybrid object storage device |
US9766977B2 (en) | 2014-11-10 | 2017-09-19 | Dell Products, Lp | System and method for improving read performance of a distributed parity RAID solution |
US9672106B2 (en) | 2014-12-30 | 2017-06-06 | Nutanix, Inc. | Architecture for implementing erasure coding |
US9779023B1 (en) * | 2015-06-30 | 2017-10-03 | EMC IP Holding Company LLC | Storing inline-compressed data in segments of contiguous physical blocks |
CN105205017A (en) * | 2015-08-31 | 2015-12-30 | 浪潮(北京)电子信息产业有限公司 | Storage controller based on PCIE SSD |
CN108701005B (en) | 2016-02-18 | 2021-02-23 | 华为技术有限公司 | Data update technique |
US10567009B2 (en) | 2016-12-06 | 2020-02-18 | Nutanix, Inc. | Dynamic erasure coding |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3893178A (en) * | 1973-12-19 | 1975-07-01 | Information Storage Systems | Synchronization of multiple disc drives |
US4092732A (en) * | 1977-05-31 | 1978-05-30 | International Business Machines Corporation | System for recovering data stored in failed memory unit |
US4467421A (en) * | 1979-10-18 | 1984-08-21 | Storage Technology Corporation | Virtual storage system and method |
US4430701A (en) * | 1981-08-03 | 1984-02-07 | International Business Machines Corporation | Method and apparatus for a hierarchical paging storage system |
US4562576A (en) * | 1982-08-14 | 1985-12-31 | International Computers Limited | Data storage apparatus |
JPS59153251A (en) * | 1983-02-18 | 1984-09-01 | Toshiba Corp | Disc cashe system |
US4604750A (en) * | 1983-11-07 | 1986-08-05 | Digital Equipment Corporation | Pipeline error correction |
FR2561428B1 (en) * | 1984-03-16 | 1986-09-12 | Bull Sa | DISC MEMORY RECORDING METHOD AND DISC MEMORY SYSTEM |
US4667326A (en) * | 1984-12-20 | 1987-05-19 | Advanced Micro Devices, Inc. | Method and apparatus for error detection and correction in systems comprising floppy and/or hard disk drives |
US4754397A (en) * | 1985-02-15 | 1988-06-28 | Tandem Computers Incorporated | Fault tolerant modular subsystems for computers |
JPS61264599A (en) * | 1985-05-16 | 1986-11-22 | Fujitsu Ltd | Semiconductor memory device |
JPS62110902A (en) * | 1985-11-09 | 1987-05-22 | マルチ技研株式会社 | Production of woman underwear having cup parts |
JPS62132270A (en) * | 1985-12-05 | 1987-06-15 | Toshiba Corp | Magnetic disk device |
US4958351A (en) * | 1986-02-03 | 1990-09-18 | Unisys Corp. | High capacity multiple-disk storage method and apparatus having unusually high fault tolerance level and high bandpass |
US4722085A (en) * | 1986-02-03 | 1988-01-26 | Unisys Corp. | High capacity disk storage system having unusually high fault tolerance level and bandpass |
US4761785B1 (en) * | 1986-06-12 | 1996-03-12 | Ibm | Parity spreading to enhance storage access |
US4791642A (en) * | 1986-10-17 | 1988-12-13 | Amdahl Corporation | Buffer error retry |
US4775978A (en) * | 1987-01-12 | 1988-10-04 | Magnetic Peripherals Inc. | Data error correction system |
US4870643A (en) * | 1987-11-06 | 1989-09-26 | Micropolis Corporation | Parallel drive array storage system |
US4899342A (en) * | 1988-02-01 | 1990-02-06 | Thinking Machines Corporation | Method and apparatus for operating multi-unit array of memories |
US4993030A (en) * | 1988-04-22 | 1991-02-12 | Amdahl Corporation | File system for a plurality of storage classes |
US4920539A (en) * | 1988-06-20 | 1990-04-24 | Prime Computer, Inc. | Memory error correction system |
US4914656A (en) * | 1988-06-28 | 1990-04-03 | Storage Technology Corporation | Disk drive memory |
US4995041A (en) * | 1989-02-03 | 1991-02-19 | Digital Equipment Corporation | Write back buffer with error correcting capabilities |
JP3057498B2 (en) * | 1989-08-02 | 2000-06-26 | 富士通株式会社 | Array disk device and data reading method thereof |
US5058116A (en) * | 1989-09-19 | 1991-10-15 | International Business Machines Corporation | Pipelined error checking and correction for cache memories |
US5402428A (en) * | 1989-12-25 | 1995-03-28 | Hitachi, Ltd. | Array disk subsystem |
US5185876A (en) * | 1990-03-14 | 1993-02-09 | Micro Technology, Inc. | Buffering system for dynamically providing data to multiple storage elements |
US5274799A (en) * | 1991-01-04 | 1993-12-28 | Array Technology Corporation | Storage device array architecture with copyback cache |
US5499337A (en) * | 1991-09-27 | 1996-03-12 | Emc Corporation | Storage device array architecture with solid-state redundancy unit |
US5341381A (en) * | 1992-01-21 | 1994-08-23 | Tandem Computers, Incorporated | Redundant array parity caching system |
US5398253A (en) * | 1992-03-11 | 1995-03-14 | Emc Corporation | Storage unit generation of redundancy information in a redundant storage array system |
US5463765A (en) * | 1993-03-18 | 1995-10-31 | Hitachi, Ltd. | Disk array system, data writing method thereof, and fault recovering method |
US5548711A (en) * | 1993-08-26 | 1996-08-20 | Emc Corporation | Method and apparatus for fault tolerant fast writes through buffer dumping |
-
1991
- 1991-01-04 US US07/638,167 patent/US5274799A/en not_active Expired - Lifetime
- 1991-12-31 DE DE69126416T patent/DE69126416T2/en not_active Expired - Lifetime
- 1991-12-31 EP EP91312104A patent/EP0493984B1/en not_active Expired - Lifetime
-
1992
- 1992-01-02 AU AU10014/92A patent/AU1001492A/en not_active Abandoned
- 1992-01-03 JP JP04504448A patent/JP3129732B2/en not_active Expired - Lifetime
- 1992-01-03 WO PCT/US1992/000059 patent/WO1992012482A1/en unknown
- 1992-01-03 CA CA002058734A patent/CA2058734C/en not_active Expired - Lifetime
-
1993
- 1993-08-26 US US08/112,791 patent/US5526482A/en not_active Expired - Lifetime
-
1995
- 1995-12-27 US US08/579,545 patent/US5617530A/en not_active Expired - Lifetime
-
1997
- 1997-03-31 US US08/825,625 patent/US5911779A/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9875065B2 (en) * | 2015-02-27 | 2018-01-23 | Kyocera Document Solutions Inc. | Information processing device that extends service life of non-volatile semiconductor memory and recording medium |
Also Published As
Publication number | Publication date |
---|---|
DE69126416D1 (en) | 1997-07-10 |
DE69126416T2 (en) | 1998-02-05 |
JPH06504863A (en) | 1994-06-02 |
EP0493984A2 (en) | 1992-07-08 |
WO1992012482A1 (en) | 1992-07-23 |
US5274799A (en) | 1993-12-28 |
EP0493984A3 (en) | 1993-05-12 |
CA2058734A1 (en) | 1992-07-05 |
US5911779A (en) | 1999-06-15 |
US5617530A (en) | 1997-04-01 |
EP0493984B1 (en) | 1997-06-04 |
JP3129732B2 (en) | 2001-01-31 |
AU1001492A (en) | 1992-07-09 |
US5526482A (en) | 1996-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2058734C (en) | Storage device array architecture with copyback cache | |
US5572660A (en) | System and method for selective write-back caching within a disk array subsystem | |
US5548711A (en) | Method and apparatus for fault tolerant fast writes through buffer dumping | |
KR100255847B1 (en) | Method for performing a raid stripe write operation using a drive xor command set | |
US5689678A (en) | Distributed storage array system having a plurality of modular control units | |
US6523087B2 (en) | Utilizing parity caching and parity logging while closing the RAID5 write hole | |
US5819109A (en) | System for storing pending parity update log entries, calculating new parity, updating the parity block, and removing each entry from the log when update is complete | |
US5787460A (en) | Disk array apparatus that only calculates new parity after a predetermined number of write requests | |
US5375128A (en) | Fast updating of DASD arrays using selective shadow writing of parity and data blocks, tracks, or cylinders | |
US5546535A (en) | Multiple controller sharing in a redundant storage array | |
US5504858A (en) | Method and apparatus for preserving data integrity in a multiple disk raid organized storage system | |
US5226150A (en) | Apparatus for suppressing an error report from an address for which an error has already been reported | |
US5390187A (en) | On-line reconstruction of a failed redundant array system | |
US6912669B2 (en) | Method and apparatus for maintaining cache coherency in a storage system | |
US5586291A (en) | Disk controller with volatile and non-volatile cache memories | |
US6968425B2 (en) | Computer systems, disk systems, and method for controlling disk cache | |
US5951691A (en) | Method and system for detection and reconstruction of corrupted data in a data storage subsystem | |
EP0833248B1 (en) | Computer system with memory update history storage | |
US20030070041A1 (en) | Method and system for caching data in a storage system | |
JP2000056931A (en) | Storage management system | |
JPH08263227A (en) | Holding method of consistency of parity data in disk array | |
JP2001500654A (en) | High-performance data path that performs Xor operation during operation | |
JP4884721B2 (en) | Storage system and storage control method that do not require storage device format | |
US6810489B1 (en) | Checkpoint computer system utilizing a FIFO buffer to re-synchronize and recover the system on the detection of an error | |
JP2540008B2 (en) | Data processing system and method for validating data record image in memory means |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EEER | Examination request | ||
MKEX | Expiry |