CA2053692A1 - On-line reconstruction of a failed redundant array system - Google Patents

On-line reconstruction of a failed redundant array system

Info

Publication number
CA2053692A1
CA2053692A1 CA002053692A CA2053692A CA2053692A1 CA 2053692 A1 CA2053692 A1 CA 2053692A1 CA 002053692 A CA002053692 A CA 002053692A CA 2053692 A CA2053692 A CA 2053692A CA 2053692 A1 CA2053692 A1 CA 2053692A1
Authority
CA
Canada
Prior art keywords
data block
block
modified
storage unit
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.)
Abandoned
Application number
CA002053692A
Other languages
French (fr)
Inventor
David Charles Stallmo
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EMC Corp
Original Assignee
David Charles Stallmo
Array Technology Corporation
Emc Corporation
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by David Charles Stallmo, Array Technology Corporation, Emc Corporation filed Critical David Charles Stallmo
Publication of CA2053692A1 publication Critical patent/CA2053692A1/en
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

ABSTRACT
A method for on-line reconstruction of a failed storage unit in a redundant array system, After providing a replacement storage unit for the failed storage unit,reconstruction begins for each data stripe in the array. General reconstructionconsists of applying an error-correction operation (such as an XOR operation on data blocks and a corresponding parity block) to the data blocks from the remain-in storage units in the redundancy group, and storing the result in the corre-sponding block of the replacement storage unit. If a Read operation is requested by the CPU for a data block on the replacement storage unite, then a concurrent Read task is executed which reconstructs the stripe containing the requested data block. If a Read operation is requested by the CPU for a data block not on the replacement storage unit, a concurrent Read task is executed which performs a normal Read. If a Write operation is requested for any data block, then a concurrent Write task is executed which performs a Read-Modify-Write sequence in the general case (the Read operation being performed in accordance with the above rules).

Description

Pl:) 0807SD

S~N-UME RECO?~lg i~ ~10N OF A FAII~I~ REIDUNDAN~ AF~RAY SYSTEM

~AcK~Rouplla OF ~ INYENTK~N

1. ~le~d ef a,e In~ntlon Thl~ InvenUon r~ to ompul~r 6ys~em ~a ~s~or~E~e, ~nd more p~rtla,~larly to a methocl ~or on-lin0 r~constru~lun ~ ~ taU0d s~r~r~go unlt In a re~unaant ~rrAy m.
2. L1~scn'ptlon o~ flol~ted hn .~A typl~l d~t~ proce3sln~ ~y~larn ~ener~ly Involw~ ono or rrK~re stor~o ~nit4 whlch ~r~ conn~ct0cl to ~ Cenlral Proeeagor Unil ~CPU) elth0r dlrocUy or throu~h~ ~antr~l unlt an~ a ctlarmel; Tno nJnc~on o~ ora~e unr~ 1~ fo sfore drlfa and pro~rams whlch the CPU u~ In pcrrormln~ p~rUcul~ da~a proce~lnE~ k9.

Variou~ type o~ stor~e unl~a are u~ed In ourr~n~ data processln~ syst3rns. A
typleal ~y~tom may Includo ono or mora lar~u capaclty 1ape unll~ ~nd/or dlsk drlves (ma~neUo, optlcal, or s~rnlconductor) conn~c~ed to the systern 1nrou~h re~pc~ctlvd oontrel unltc h~r 6torln~ dat;L

However, r~ problem exl~ts U one of the lat~e capaclty stora~e units ~8118 auch ~hat Informatlon cont~ln~d In that unK 18 no lon~r available ~o the systern. GanGrally, uch ~ l~llure will shut down th~ ~ntlre computor syslem.

mO prlor art h3s su~ested eeveral ways ol 601vln~ the probl0m o~ provi~in~
rotl~ble dat~ stora~e. In systems where recorda are relathHly small, 11 Is posslble to u~n error correctln~ codes whlcl~ ~netate ECC syndrome blle that ere appended to each dsta record wlthln n slora~e unll. Wlth ~uch codes, It le po331blo to Gorrect ~ srnall ~mount o1 data that rnay bo read erroneously.
Howo~Jer, ~uch co~es ue ~enerell~y no~ ~ultabb lor correctlr~ or reueat~ lon~
r~cords \,vhlch ~re In error, and provlde no remedy ~t all H ~ oomplete stora~e unlt f~ . Therefore, H n0~d exl~s ~or provldln~ data rellabalty axl~rnal to indhldual~toru~e units, -2- PAT~
PD~1807SD

Olh~F ~ppro~ch~ to such ~exl~rn~D roll~bil~y haive b~r~ describ~ In th0 ~n. A
re~0arch ~roup r~ Unlv~r~ C~ orrlla, ~erkcl~y, h a pap3r entitl~ "A Ca~e 10t RedundRn~ Array~ of Inexpen~lv0 Dlsks (R~D)-, PaHetson, 0t ~1., Pr~. ACM
SJ(;~OD, Jun~ l~Br~l h~s o~al49u~ ~ nurn~er of ~IHwenl ~pproaahn~ ~or psovlclin~ 3UCtl r~llablllty when ~slr~ ~Isk drlv~q ~5 slorn~ unll6. Arraya o1 dl~l~
drh/e~ aro charact~rl~ In or~ ol 7ivo ~rchltccture~, und~r thc acranyrn ~AID~
(~ R~urldQnt Arr~y~ o~ Inexpen~lve Dl~

A FiAID ~ archltecture Involve6 providin~ ~ duplicsle ~el of "mlrrorn eter~ge unlts ~ncl keepln~ ~ dupllcai~ copy ot all da~Q on oach p~lt ol 6tor~0 uni~, Whlle such ~ solutlon sc~ h0 r~ blllty probbm, It doubl0s the cost o7 stora~e. A
numb~r 3~ Irnplementatlone o? ~slD 1 arc~tecture~ have ba4n mado, In puticulsr by T~nderrl CorporaUon A RAID 2 ar~hltacture etore~ eaoh ~t ot eash word o~ ~t~, plus Error D~toc~on ~d Çorroctlon (EDC) bKs tor e~oh wotd, on ~para~e disk drlvos (thla la ~Iw 1~ known as ~blt ~trlppln~"). For ex~mpl0, u.S. Patent No. 4,~22,0~510 Flor~
dlsc~oss~ 8 dl~k dr~ve rnemory usiny ~ ~ura~y of r~lathrely ~mall, Ind~p~ndentlyoper~tln0 dlsk subsy3tcms t~ hmcthn a8 a Inr~o, hlgh capadly dl~k drlve h~vln~
an ~nus~lly hl~h ~a-4t tolQrAncq ~nd a very hl~h data tran6rer banrJwldth. A data organlz~r add~ 7 EDC blts (determlned uslng the w~ kno~Hn Hctnrnin3 codo) to ~Q e~ch 32-blt data word to provWe crtor delection and error cor~otlon c~ablllty.
Th~ resull~n~ 3~1S word Is wrltt~n, ona bl~ pat dlsk drlve, on to 39 dlsk drlvcs.
Il or~ o1 tl~ 39 dlsk ddvo~ , th~ rarnslnln~ 98 blts ot ~ch r~torad 3~bH word ~n bo u~ed to recorwtr~ct e~ch 32-bH da~ word on a word-by~ord ba~i~ o~
~ch data w~rd Is re~d Irorn Ihe dbk driv~, thereby obl~nin~ fault toler~nce.

2~ An obvloL~s dtswbsck of suoh a systcm i3 th~ l~r~ numbet o~ dl~k drlvos roqulrcd ~or ~ mlnlmun sysl~rn ~slnoe most l~r~e compul8rs use a 32 blt word), and the rr~latlvely h~h r~lo of drlves requfred to dor~ thh FDC blls (7 clrlvcs out ol 3~.
A further llmltatlon ol ~ ~AID 2 dlsk drlva memory sysl3rn i~ l lhs indlvldu~l dl3k ~ctu~tors Jre op~r~ted In unlson to wrlt~ e~ch data block, the blt~ ot whlch aredl~lrlbutod over all ol the dl~k drlves. Thls arran0~m~nt nas a hi~h d~la lr~ns~r -~ PATI~NT
PD~7Sr~

banslvvld~h, ~Ino~ o~cll indhldl~r~l diek tr~laf~ part oS ~ blrx~ of dal~, tt~ net ~ect bsln~ t~)a~ ntlr~ block 18 ~lablo to ~he computer sy~l~m much ~a6~er ~hs~n 11~ 81r~1a drlv~ w~3r~ rlc:aa861nt7 IhO b!~?ck. ThlC 18 a~van~a~o~ or l~r~a d~t~ !o~. ~lev~r~Y~r, Ihle arran~emar~ o e~lecUve~ provldr~s ~nly ~ sln~la te~twtlla hr~d ach~ator 1Or Iho entlra 3~e9E~ llnn. Thl~ ~dv~t~oty ~ t3 1ha r~ndom aoCra~ perlo~man~0 ~f ~h0 ~r~ arrar~ n r~l~ s ~re small, ~ince ~Iy on~ nl~ al a tlme cen be aac~s~sd by thu '~In~lo" ~Ictu~tor. ThUs, RAID
2 ~t~rn~ ara ~ensrrllly not oonsld~red t~ i~a sult~bha ~r c~mput0r sy~tcm~
deel~r~ ~or On-Une Tran~sacSion Proc~slng (OLTP3, ~uch ~ in banklng, t o ~ncl~l, ~d r~er~lon ~ys~mll, w~re a lar~o numb~r ot rundorn accessos to .~ rna~y err ~11 do~ fllos r,~rnprls~s ~he bulk ot d4t~l g~ot~a ~ Ir~ns(er ~poraUons.

A FtAlD 3 archlt0clure 1~ i~aso~ on the concopt 1h~t ~ch dl~k drlve s~ora~c unitha~ Internal rn~ans 70r det0ctln~ ~ huit or data ~rror. Thcrator~, n h not necsss~y to etore exlra lnfottnatlon to detect the locatlon ol an ~rror; a slrnplor fo~n~ of parlty-basod error corrocUon can thus be used. In thls epproach, th~
oontents of all ~lora~e unlls sublrlct to ~ilure are ~Excluslve OR~U (XOR d) to yon~r~te psrlty InlormaUon. The resulUna parlq,~ Intorrnatlon Is stor~d In ~ 91n~19 r~d~ndAnl otortA~a unl~ tor~go unn ~al~ Ula d~ta on th~t unlt c~;n be r~con~tructed on to a te~!~ceme-t stora~o un~t by XORln~ Ula deto from lhs remalnlng StOrQ~e unl~ e pnrl~r In~onnatlon. Such an ~rrang~rnerlt h~s the adv~nts~a over ~he n~irrored dl~k RAID 1 archH~cture In lhn1 only one ad0Uonal stora~o unlt ~ requlred for ~ torago unrts. A furthor ~poct ot th- ~AID 3 arehiteotw~ 19 th~t the dl~k drhleQ ate opor~ h ~I cc~ d m nner ~kr~ to ~ ~ID 2 systorn and ~ oln~b dlsk drlve le desl~nal~d s~r thlr p4rlty unlt.

2~ One ImplernontaUon of n RAID 3 erchltecture 13 Ule Mlcropoll~ Corporatlon Parallel Drlvo Arr~y, Model 1BO~ SCSI, that U808 four p~rallel, synchronlz~d di~k drlvr~sand one redundsnt psrlty drlv4. Ih~ ~allure ot ono ot the four data dlsk drlves c~n ba rern~dled by the u8~ o~ tho p~rlty blts stor~d on th~ parlty di~k drlve. AnoUl~r example oi a RAID 3 systQrn 1~ deocri~rJ in U.S. Patont No, 4,092,732 ~o Ouchl.

~~ PAT~
PD~7SD

A ~If~ Isk drh~0 m~rnory 3y3t0m h~ a m~l lo~er ratlo oi r~dundan~r unlts to ~at~ unlt~ ~han a R~ID ~ ~ysl~m. ~lowsver, a RAID 3 syss~m hs~a 1ho c~m~
p~r~rm~ncs llmllr~tl~n ~s a R~ID ~ ~y~m, in Ihat ~ho indh1~ual dls~ actuator~ ~;re ~up1~d, s;~p~r~tln~ h un~on. Thb ~v~rso~ arrec~ ~e r~om r~cco~6 pa~ n¢e o~ dr~ rr~y ~h~ dat~ Sil0c ~r~ sm~l, ~hc0 ~ on~ d~ nie tlrn~ ~n b~ Ir~ tor. Thu8, FUUD 3 8y~
n~r~1y not ~nci~er0d t~ ~ ~ult~bl4 ~ ~omputor ~yst~m~ d0~i~n~ci for OLTP
qs~

A ~ID ~ arr hll~cl~ra uses the ~arn~ p~rity ~rror corre~ion eonccpt o~ tho i~AiiD
3 ai!chlte~llre, but knprove8 orl th0 ~rlorm~ o~ a ~iD 3 sysl~m ~ h r0~j,~ct to ranciorn t~adlrl~ o~ smai~ filr~ by ~uncouplln~" Ul~ operatir~n o~ the Ir~iYiciual di3k drlve ~tuator~ i r~4dln0 an~i wrlnn~ r~cr mlnlmum unount cf dst~
~typlwlly, ~ dl~k s~or) to ~ach ~IQk (~hb b al~o known as bl~ck vtrlp~ ). A
lurth~r ~sp~ thr~ RAICI ~ uchitecturrs 1~ that 0 slngle dora~e unit 1~ d~;natod thx p~rlty llnlt.

A llrni~Uon ol ~ ~D 4 ~6tem i8 Ulat WrlthD a dat~ bhck on ~ny o~ tha Indcp~nd~ntiy operalln~ dtila slors~;~ unlts also requlre~ wrltln~; a now pamy i~lock on th~ parlty unlt. rh~ parity ~nhrn~Horl ~tued on the parity unit must ba read and XOR'd wl~h tha dd dat~ (to ~remove~ Ihs inrorm~lon oonlont ol tile old dala), and the resultln~ sum must then be XOi rd w~ the n~w ct~to (to i~ro~td~ n~w p~rlty In~ormation). Bo~h the d~ta nnd the parlty rocord~ ~hen nNJ~t ico r~ten to lhe dl~k d~l~ mis ptoc~sa i5 cornmonly re~rr~d to as a ~Read-Modity-Wrlte"
s~qu~rK~e.

Thu5, ~ Ro~d ~nd a Wrlte a- the shgie par;ty unil oc~urs each tlrne a record 1 2~ ctlangeci on any ot the data storaSic unit~ covor c by the parity rocord on the patity unlt. ll~e p~rlty unlt becomo~ ~ bottlof~eck to data ~ritinSi oper~tlon~ since ti~ number et chan5;e~ to reoorcls whlch c~n be m~ie p~f unit Gt tlrne Is a function o~ the ~ ee r~te of tile parlty unit, r~ opposed to the f~tsr acc~ss rate provicl~d by parailel operation ol the rnultiplo data stor~ge unlts. 8ecaus4 ol tt~is llmlt~ n, a flAID 4 ~y~tem is ~nsraily not con~idorod to b~ sullablo lor cornputor A~r PD~8078CI

~y~t~rno ~l~d ~or OLTP p~rpo~a~. ~n~e~d, it appe~r~ Ih~ a ~ 4 æy~em h~ not b~n lmplem~3nted ~ ~ny oomrnerci~l purpose.

A FWD 5 archlt~re U~Q~ t~ g~me p~y errot corrscalon conCopt o~ the FU~ID
4 ~chlt~et~o ~nd Ind~pen~ tors, bu~ lmproves orl ~e wrl~ln~ p~rlorm-~!lnC~D 0161 ~D 4 ~y31em by ~IstrlbuUng ~he ~ata ~nd parily ~formatlon aCro~S eJI
0~ ? evall~bl~ dlsk drh~. l'yplo~lly, ~iN ~ 1~ stor~e unll~ ~n a ~ot (~Igo h~owna ~edurldan~y ~roup'r) ~r~ dvid~ ir~o a plur~lity o7 0qu~11y ~k~d aWre88 ar~ 5 r~rted ~0 ~ blod~. EaC7~ stor~Elr~ unl~ ~n~rt~ cont~n~ tho ~ame num~r oi block~, ~bck~ ~rom e~h ~ora~ uni~ In ~ ro~undancy aroup h~n~
.. th~ ~em0 unlt addra~s ran~es ~re re~err~cl to ~ t~lp~. E~ ~po har N
block~ ol ~ , ph~ ono p~ y block on on~ ~tor~g~ devlco conlalnln9 p~ity lor th~ r0m~lnd~ o~ th9 gtrlpe. ~:urlh~t ~tr~ e~ch h~vo ~ p4rlty block 1h~ parlty blooks belr~ dl~rlbutad on ~ner~nt 6~ra~ unlls. Parlty updstln~ activily a~o~l~ted ~Am every modff~ on ot data In t~ rodundancy gr~up 1~ Ulerororo 16 dlstrlbuted oYor ~he dm~rent gtorage uni~. No ~h~l~ un~ l6 burd~ned wlth all ol U~ parlty updat~ actlvlty.

For ex~mple, In ~ RAID 5 ~ystern compt;sin~ 5 disk dtihre-, the p~r Inform~ltion~or Ule flr~t strlpo o~ bi~cks m~ aq ~ e flnh drlve; lhe parHy htormallon ~or the ~acon~ st~i~a ot block~ m~y be uni~tton to th0 iourth drive; Ul~ pasity ~0 Inf~rrn~Uon for the Ullrd slrlpe o~ blocks may b~ wrltt~n to U~ lrd drivo; 6tc. Tho p~rl~r biock ~or su~c00dlng stripa~ typloally ~'prec0sses~ around the disk drives in a h~llc~l pattem (ai-nouEih oUler patterns may b~ uaeci).

Thu~, no sbn~le dl~k drlve 18 u~ or slorln~ ths pcrlty InlorrnaUon, ~nd tile ootti~e nock o~ e RAID 4 archil~otur~ is 011mlna~ad. An ~xsmple o~ a i~AiD 6 syst0rn la de~crlbed In U.S. i~0nt No. ~ to Clsrk et ~/.
~ 7~7~ 7~
A~ In a ~AID 4 ~y6~ , a llrnlt~tlon o~ a iWD 5 ~y~tem i5 tha1 a cJl~n~e In ~ data block r6qulre~ a ReadModHy-Wfito s~quonc~ comprl~in~ oad and two Writo oper~tlons: tine old parrty bl~ck an~ oid data block rnu~t bo read snd XOR'd, and the resulUng sum mu~ en bo XOR'd wrh the now dala. Both Ih4 d~ta ~nd PATE~
Pi3~07St~

~o p~rity blockE~ rl mu~ b~ rowritt~n 20 lno dlsk ~riV~g. 1~110 Iho lwo i~ad oporaSlon~ r~y b0 dono In p~ali-el, ~ n the h~o Wrlte opcratlon6, mo~ifi~bn ot a block o~ ~ia2~ ln ~ RAID 4 or ~ D ~ rsys~rn ~till ~k~ sub~t~nli~lly lon~er ~n lho ~m~ op~r~Uon on ~ convonlion~ k. ~, oonvonlio~3ai di3k doo~; not ~ulr~ tho pr~llmlnary iR~sd op~ralion, ~nci th~ doss hav~ to watt for Iho dbk sirlve~ to rota~e back ~o th~ prevrJu~ posHion In order to i~ri~orm tiho Writ0 op~r~lon, Tho ro~thn~l 18t~1i~y Um~ ~lo~ c n ~mr3un~ ~O ~t 50% c~ o time r0gulreci 70r ~ typi-cal da lncauon o~raUon. Fu~hor, two dlck sto~-o ~It~
ar~ Invo~ed tor ihe dur~lon of eaeh d~ modHlc~Uon op~ra~ion, limltlng ~e thrs:~u~hput o~ tha ~ystem ~8 a w~ol~

~ e~pi~ Ihe Wrlto por~rmz~nc~ penalty, R~ID ~ Iype 3ystam~ hava b~comc Increa31n~1y popular, ~Ince ~hey provl~o hi~in ~t~ rcliabllity with ~ low overhead c~et ~or rcclundancy, rgood P~d perforrnanco, and rair Write i~ormance.

A RAID 5 ~rchl~ecture ha~ prlr~lcular utl1ity In OLTP cennput~r sy~tem~. Many OLTP syst~ms must be hlgh-avallabUity systerns, meanlng that complcle ~llura o~
y~tem hac a lu~-probeblll~v. H10h ~v~ilabillty csn ~ ach0~ 1 by usln~ hi~h-rellablllty compon~n~, hnvln~ a tault-tol0rant de~lgn wiul ~ low mean-Ume-to-repalr (MTTiR), an~ do~l3nln0 t~r ~ag~i" d radaUon, where the 1allurc ct 8 component may r~d~-co cy6tem ~p~blllty but wllhoul c~usln~ total sy~lem tsllure.
Aithou~h a prlnclp~l teatute o~ 8 ~ID system 1~ ~ault-tohrance, such capabillty alonr~ does not guarantee a hbh-avallabUlty systenL 11 a stot~e unlt falls, 5~0nusl ~y3t rn operatlon ~sannot contln~J~ until tho hll~d ~torage unlt i-~ r0plac~d and the Intorrn~Uon on It 1~ restored. When a ~tor~ unlt taUs In a R.IUD tirchlt0clwo, thc ~n teaches that a r~plaoement 6tora~e unn 18 subsUtuted ~Of th~ falled stara~0 unlt (elther manu~lly er el~clronlcslly 8w1tched In ~rom a set ot onQ or more ~p~r~), and th~ Ylost~ data 1~ reconstructod on tho topbc~m~ttt slora~ unlt by XOR'lng each parlty biwk wlth all corr~spondln~ dala block~ Irom U~e r0malnln~
stor~e unlt drlv~s in th~ redundancy ~roup. miS oporation l8 strai~forward 1 th~ ontlre r~dundancy 3tOup can bo dedlcated to reconstructin~ Ihe lallGd stor~eunlt. However, 11 appear~ that the art t~aches Ot OUÇI~J08t6 r95toting the d~ta on PD~07SD

Ih~ r~pl~comont storag~ unlt as a ~epara~e procsdure be~oro ~naral ~ystern operatlon oan b~ recommenc~d. S~ch a mo~hod for rooonntnJcUon do~ not provld~ ~r hi~h av~ilabllity.

Thu~, ~o far as known, Ih~ an doe8 not ~r~oh roeons~ tin6i a ~aileci 3tor~ge unit S In A RAID uchltectut~ whlle con~ulng to provlde on~lna a~Ce~ls lo the enUre reciundancy ~roup.

n thue ~w be hl~hly d~sirat~le to havs ~ RAlt) archltecturo ~y~tcrn h ~vhkh reoon~truction o~ n f~ d slora~0 un~ 4n be cond~i ~on~iino~, whlle genernl ~ ~yst~m operaUon conUmles In a norrr~ bshlon. K 1~ c deslrsbie to ho ah h ~ r ~ power f~ilure with the rr~construction opor~ion tn progross 9~ never pt00ent b~d data ~ ~ooc d~4 to the CPI.I.

Tha preson; hvDnUon provlc~r~ euch a oystem.

PATE~
P~)~807SD

~UMMARY ~F ~}lg~ IIMVE~I~N

~he pr~nt InvenUon provld~ ~ msthod ~r on-l~no r~nstruotion ol ~1 lallad ~1~3 d~a s~or~de unlt. All0r proYldln~ ~ rap~ac~ rl~ g~sr~e unil lor the hllad ~or~e ~1~, ~ r~constr~on l~sk bs~ln~ ~or th0 ~rr~y. 13~neral r4t ~n~trwUon con~l6t~ ol ~pplyln~ ~n 0tror~Drrs~on 4p~r~0n ~s~ch ~ an XOR opor-tbn on dat~ blocke ~nd ~ ~rr~spondln~ parlly block, or ~ Read SolorrK~n co~) to tll~
block~ ~rom th~ r~m~lnln~ slor~a unl~ In lht~ radunclnncy ~roup, ~nd ~torln~ rs3ul~ In the corte~pondln~ ~lock o~ Ule replacement ~tor~e unlt.

d oper~Uon 18 r3qu~3t~d by Ulc CPU 70r P da~ block on th~ replacemon~
3~0raga unlt, then ~ concurr~nt Read ta~k 18 executad ~h reconl~buds the oont~lnln~ re~u~st~d d~l~ block.

U ~ R~ad op~ratlon 1~ requo~t~d by 1h~ CPU for a d~ta block not on the r~pl~cement ~torage unll, ~h0n 6 c~:>ncurrent ~ead t~k 1~ ~x~ d whlch p~rtorrn~
a norn~l R~ed.

16 111 ~ Wrlte op~ration i~ rcq~ostod ~or any ~ata block, ~hen a concurrent Wrlla task lo ex~cut0d whlch perforrns a Recd-M~ Wrlt~ ~qu~n~e In the g~naral cas~
(ths flead opsratlon belr~ perforrned In accord~nce wllh the above rulos).

AKi~ou~h d~t~ block~ on Ihe r0pl~c3ment stora~e un/l "~bove~ the reoonstruction ~rlpo ara ~alld, ~rKi could bo raad clrcctly, the above procadute h easl ~nd ~0 simpler to Irnplemsnt, slnce thore b no nead to koop u~ck of whether or not n rcciueet0d data block 18 ~bove~ th~ r~con~tructlon drlpe. However, ln an aKett~tlv~r embodlmr~nt d the Ir~entlon, the po~ition ~f t~ reques~ed data t~lOCk with respect to 1h~ reconstruction etrlpe 18 tracked, and reconstruotion 1~ onlyperforrnoc for d~ blocks th~t ~e no~ above the ~econstructlon slripe.

Thu8, t~e general ~ies of operatlon In the pre~erred enl~oclment aro lh~t ~il R~ad operatlons trom the replacernent storage unlt raqu~e on-the-fJy raconstructbn olall ol the data blocks request~d, r~3ardl~ ot wheth~r any ol tho~0 data blocks ~~ ~ PATEtJT
PC)~D

havo In ~et been recon~r~ by the ~nsral r~cons~rucUon proCcs~. A~ wnte oper~tlon~ proc~ed In a Resd-ModHy YVrilo ~equcnce in ~he ~eneral case, with ~e Rs~ pAtt of U~u op~aon boln~ per~ d In laoeord~nce ~th 1he ~bove rulos.

Tho pts~ent Inv~n~lon provld~ 4 tellable meth~d or tecor#~ructin3 all o~ U10 data ot al l~llgd ~tora~ unll ontc~ ~ rcpl~cemenl unil, wllUe contlnuin~ tO pl~rmit R9~1n~ and Wrltlcl~ opqraUon-Q t~ 8~0ra~e uni~ ~rray ~s e whole, ~md to Uu~
roplaoement ~toraae untt ~n psnr~l~. U~ ot a flao permlt8 detecUon Ot en abnermt~l tennlnallon o~ eneral rooonetruc~on procegs. The rocon~ruoffon m&y to~um~ ollher at the InlUsl recon~rucllon st~ln0 polnt, w, optlona~ t the .~ polnt ot obnorm~l lotmlnaUon.

Tho ~etillb o1 ~he prelelred embodlment ot the presenl InvenUon ~re set 1sr~n Inth0 ~ccompanyln~ ~r~wlng~ ond the dflswlptlon below. Once the detall- d tho Invsn~lon tlre known, nurnerou~ eddKlonal Inno~allon~ t~nd ch~n~es w111 become obvb~ to one 6kl~ed In the ~

- 1~ PA~ENT

Bi~lEF ~ESC~IPTIION CIIP T~E l)RAWINS35 F1~3lJRE 1 18 biook dla~r~m o~ a ~ llzod FUU01 ~y~lam In t~rd~nce wffll the pt~s~nt Inv~nllon.

FitlUi~E 2/1~18 a d~rBm ot ~ ~d01 RP~ID 5 ~ m, 3howin~ an Initial ~a~.

6 FI~UF/E ~B 1~ ~ dl~tarn al a r~l RAIO 6 ~y6t~rn. showlny a lali0d 3tora~-ie unit.

FI~URE 2C ~ a dla~rrlrn ot ~ mocl~l RAit~ 5 ~y~tem, ~ing an hlt~-lz~d .~rephc~ nt stor~e unit.

Flt~lURE 2D Is ~ dl~gram ol r~ mod~l RAID 5 ~yst~m, showin~ n p~Sia~iy r~con~ d r~plac~ment elora~ ur~

F1~3lJRE 2E h a dla~r~m ot ~ moci~l RAID 6 systorn, ~howir~ ~ compl~y roconetl!uded replacsrnenl ~l~ra~e unl~

Fl~lJRE 3 ie a ~iowch~rt ropr~wnlln~ the ~ener~ reconstsucllon proce~ Oot lhe pre~erred embr~lment o~ the ptesent Invsntbn.

Flt IURE 4 1~ ~ llowch~rt representir~ ~ Re~d op~ratlon tor the preterred embocil-rn~nt ~ the pre~ent Inventlon.

FIQURE 5 18 ~ llowc~lart repru~en~n~ a Wtite opsr~Uon ~or tite preferred embodl-m~t o1 tho present In!~rentlon.

Uk6 re~sronce numbers and ~signaUons in the drawlng~ re~er to liko ol~nts.

PATE~
PC~B07SD

~'~AI~ PTlO~ nrlO~3 rhr~u~hou~ Uhl~ d~3crlpllon, Ul~ pro~orro~ em~oclrr~nl and ~xamples shown ~houlci l}~ oonsld~r~ Xem~ls, r~h~ than llmi~al;on~ ~n ~ m~lhod ~1 ~e ~es~nt In~onil~n.

~3 Flt:llURE~ loc~ cllr.~ram of ~3 ~cnsr~ ys~m in accofd~nc~ e pr~ n~ invenUon. Shown ~r~ ~ CPU 1 s:~uplod l~y a ~ o ~n array corllrdlr~r 3. The ~rr~y oonbroll~r 3 1~ coupled to ~aeh o~ Ih~3 plurall~y ol s~orc~ un~ S1-s~ (nY~3 b~ln~ ~hown by w~y o1 ex~mple snly) by an 1/0 bu0 (e.~ 3(~31 bu5).
rr~y contrull0r 3~r~bly Includes a ~;epar~t~ pro~rammablo, multl-t~sklng proc~aor (~W 0~ampla, th0 MIPS R3000 RIS~ pr~o~s~or, made by MIPS C~ o~, of Sunnyv~10, ~all~ornls,) whloh ORn ~ct Indep~nden21y o~ tha CPU 1 to contr~l t~lo ~tor~e unlls.

The ~tor~g3 unlt~ S1~5 c~n be ~roupod Into on~ or mor~ ledundancy ~roups.
In U~ Illu~trat0d oxampl~s d~gcr~ elow, ffle redundanoy ~roup ~.-nprl~ ~l ~5 of th~ ~torago unl~3 S1~6, 10r s~plcity of sxplana~n.

Th~ present hvenUon i~ pref~r~bly Implsm0nted as 1 m~N~-ta~klng oompular pto~ram cxocutod by the conlrollor 3. Flt3URES ~A-2E are d agrammatlc mr del~
018 RAID ~ sy~tem. FIGUR~ 319 a hl~n-hvel flowchar~ tepresentin~ U~e steps o~
the ~ner~l reconstrwtion prooe~ ~or th0 prererred embodlmont or the invanUon.
~0 FIGURE 413 a Ill~h~Q~rQI 11awchart reprcsenthg the 8t~p8 0~ o~d op~rohbn fo~
tho proterr~d embodlment ol th~ Irvention. fl~;URE 5 is c hi~h-iovol ftowch~t ropretor~in~ the 8top5 01 a Wrlle opsr~tlon tor 1he pre~err~d embo~lmern o1 tt~
Inv~nUon. ~he steps re1erenced In FIGURES ~5 r~ro reler~nced bolow.

(3~n~ral Fieconst~ on 2~ FIGURE 2A Is a ~ia~ram o~ a moclel RAII) y~t~m, showin~ an iniUal s~t~. Th3 Illu3tr~ted arr~y comprl~ fh~o stora~e unlts, Sl-S5. Esch tow A-H i~ ~ strlpa.
Purlty In~ormaffon 1~ Indicated by clrcled num~srs, and i~ ~pr~d throughout tho array Allho~gh on~ p~tt~m of parlty Inlorrneti~n dblrlbutlon 13 showr~, lho ~D-~7~

Inv~nllon ~ncomp~ ny dl~rlblJthn. {:n~ b,it "~ock~ ~r~ s~own ~r e~ch ~tor~ unlt In ~ ~trlpfl lor ~impllcJ~ ch blOCk coul~ In~e~ci b~3 ~ny ot~0r uni~
~7 ~Iz~, a~ch ~ ~ byt~, ~e~tor, ~ ~roup o~ 20r3. In Ihe pre~eneel ~n~o~m~n~, ~oh bl~lt 1~ at l~a~1 on~ ~ctor In ~t2e.

~IQUF~E ~B ~how~ ~h~ ~m~ m~r~0i ~ FK3 URE ZA, ~ut ~Ih ~ra~D unlt S~
h~ ta d (Ih~ cl~h4~ repr0~ntln~ comipbDci dat~ ote ~t ~ XOF( a~n ol ~oh ~brlp~ tor e~r~e un~ 2~ ~s~ J6 th0 lo~ da~e ~7 ~tora~e urlil Sl ~wn in Fl(~URE 2A.

.FI~31URE 2G show~ th~ ~rno ~ID mod~l ~3 FIQURE 2~, bu~ ~ilh I~lied ~toru,~o Wllt Sl havln~ bei n r0p~ce~ r~p~c0ment 6tora~e uni~ S~'. The r~pla~em~nl may b~ on a physlc~l b~3 (I.~., a n wv ~or~o unlt b~in~ FYny81ca~ lltut~d tor ~o f~ unlt), or on ~ lo~ cal bs~l~ Q.o., ~ 6pare ~tor~e unll h oommunicn-~1~ wlth th~ ~:ontroll~r 3 beln~ elsctronlc~ wltch~d into opcratlon). In ~H
ted 0mbodlmont, th~ repl~cem~nt 3torage unlt Sl' ~a~ nol b~en Ir~lz0cl 1~ lo any par~culw data pattern, a~ Indlc~1ed by tho x'~, b~ut tho urit could h~ rmy p~tt~rn ol In~ormaUon on 11.

Ono~ repl~cem~nS ~lora~e unlt S1 ' 18 substltut~d lor the !a!!sd otorage ut~t S1, n~ral r~ nlctlon prooes~ commonco~a a~ ~ task (FIGIUFIE 3, St~p ~O).
Tho roplr~cement e~ora~o unlt S1' 18 mark~ int~rnally to Indlc~to that U~e ~torrd~o ~0 unlt b "Under F(econstnurtlon~ and ~eh~ r~}construct~d (Stop 31).

FK3URE ZD Illuslra~ r~n Interm~dhte ~ta~e ot rccons~ruction, wlUl stripe D, shown hl~hll~l~t~, S5 tha rr cor~truc11On strlpQ. In ~e pr~lerrecl ~mbodlmcnt, a WtNo oporstlon 1hat requlr~s recon~tructlan o~ a slrlpe wnnot t)e m~e to Ihe rccon~
sb~uc~lon ~trlp~ b~auyo that strlpe 18 "lodcod~, In known ~a~hlon, to pr~nt ~6 ~Iteretlon ~Nhile under~dr~ rec~r7~tructlon (Step æ). Th~relore, the Wrlte operatlon Is delay~d Im~U th~ stripe 1~ reeonstructecl.

In th0 pre~errecl smbodlment, the data and parny ~locka are Raad trom stora~o unR~ S2~3 ~or cach strip- ~H ~n thQ array ~nd XOR'd, with tho rc9ult from ~ach ~ 3 PATENT
PD~7SD

~trlpo b~ln~ ~lofod In 11~ oo~rc~porldln~ bl~ck ~f llhs rap~c~me~1 ~tOTa~9 urilt 51' (St~ 33). In ~ 4xP~mple ~ihown In FIGIJ~E 2, ~hl~ pr~s bo~ns nt ~p~ ~4 ~nd pr~ods to ths ~nd o~ lhe ~lor~g~ unlts, ~ ~trlpe ~. How~vcr, any ~ ng poln~ rney b0 u~d, wl~h any p~ m o~ recon~b~ctlon (9.~ Itorr~tln~ ~ip9s).

1~ con2r~7~r 3 U~sn unlocks ~ r~con3~rwUnn ~Iripe (S~op 34), and adv~nco8 tho rooonstr~n ~trlp~ (~3t~p 35). 1~ rer,~ uucilon b 7ncompl~ S~op 33), Ule ~nor~l reconettuc~on prooGss con11nuea (S~ep 32~ unUI U~e en~ire repL~ment ~tora~e unll S~' 13 reconakuc~d, a~ shown In FIGURE 2E. Wh~n the ~eneral ~econ~lrucUon proco~s k cornpleted (5t~,p 36), the ropl~earnenl etot~e l~nlt S1'la mar~ a~ ~No~ Und~r R~construollo7r (Stop 37) ~nd ~11 opor~te normal~ ~Step 3~).

N Ihe reconslluctlon ,woce~ 18 Into~p1ed dw to a power fdlur~ or any other re~on, the lAst st~p o~ m~rkln~ tho roplacemant ~ora~ un~ St' as aNot Und~r PlqconslrLK:tlon'' wlll r~t ba complet~. It ~ thcro~ore po~lole to d0te~t such ~n 16 ~bnorm~l terminatlon. In woh a or~0, the conlrollc~r 3 may resbrt the rer;on6truc-tlon ptoc~ from the ~e~lnnln~ without lo~lny any data. Thl~ may r0~ult in cortoctln~ ~trlp~ that h0ve alr~dy been wrroct~d, but thla ~pproacl~ ~uarRnt~s Unal ~e array s~syst~m wNI never Indlcst4 that dala i~ aood ~hen It h~ not bo~n r~construot~d.

In an alternaffve ombodlrner~t, after each seoUon of the replacement ~tora~o Unit tc.~., o~ch cylind-r ot a disk drive~ le recon~ucI~d, a na~ n0l~ In the replacemen~
~tora~e unlt S1' (or elsewh~e, It deslred~ b marked int~mslly lo Indkale ~a I~st t h~ be~n recor~tructed. AJter an abnorm01 tarminatbn, 1~
reconatructbn process rnay be restarted aftu the 1ast indlca~ed sectl~n, Ulefeby2B oevlng roconottuc~'on tlmo, Conc~lr~nt 1/0 T~k~
Durln~ ttle ~en2r~1 locons~Notion proc~ss, proG~sin~ by Ihe CPU 1 can contlnuo, bu~ wlth some poss ble p~norrnanc~ dagradab'~n ~OI th~ compu1er ~ystcm. ~3 d~wlbod bolow, the general recans~tuclhn proc~ss rn~y be Interrupled to perrnK

PATENI
I~D~7~;D

Fl~d or Wrlt~ op~(atlorl r~c U~t6Ki by the CPU I ~ ps 33, 3~). Such Int~rrupllon~ ar~ pr~ bly Impl~rnq~n~ec~ by rne~n5 ~ urr~nt ~sks h woU-hrlo~n i~hlon. ~ Y~r, th~ InYflnUon ~suornpf~r~Fs E3ny means ol oencunr ~nd/or In~rrupt-dr~n 1/0 op~raUon. F~l~win~3 ~ a d~crlpUon s)f ~0 prnferlad emi~dlrrler~ ol ~udl ~d ~nd Wrlhs op0rdior~.

R~d op~ta~lon 1~ raq~ toGi by Iho CPU 11 dutln~i ~snaral ~ecor~str~ction, a Read pro~3s~ t~Eiln3 ~ Em Indepondent bln concurren~ ~sk (---IGUFIE " Step 40).Tnl~ mo~n~ ~hal ihe reconslructlon t~k contr~uoa ~o exeCUtO, but Ulat ihe ~ad .. 1~ak and recons~uctlon la~k conlond ~c~r ~ygt~m rcs::1uroes, In known ~ashlon, lhe controller 3 pre~r~bly locks tho rocon~tructlon ~tnpe ~o pro~JQnt Inadvonr~n~t~rRblon o~ the sttlp~ undor~olng r~construcUon (Step ~ e F(~d rcquost Is 7er ~ dst~ block not on U~e roplac0ment (~ "n~) storage unR S1' ~Stap 4Z), the controll~l 3 par~rmg a normal Re~d opcr2Uon ol~d trr~n~le~ the da~a block h ~e CPU 1 (St~p ~). Boc~u~o d~ta ~rom the othe~ s~orr~ge unlts ~S2~3 In tho 0x~rnple ot Fl(~URE 2) 18 corroct, no lo~ o~ p~rformance occur~. ~he oonbroaar 3 th~n unbck~ U~e ~cens~lon strlpe (St0p 4~), and Ula R3ad ta~k tormlnate~
~;tap 45), 1~ ~ho Ro~ oporatlon r0qu~st~d by the CPU 1 Is for a dat~ block on tho rapl~c~
~0 rn~nt ctota~s unlt S1' (Step 42), tho procodute is diHerent, Th~ cornroller 3 Ir~tead reCOnstrlJC[s tt e stripe c~nt~lnln~ the requsst~ data ~loc~ ~on~
Thq controll~r 3 reads all of the other data block6 and U~e correspondln~ pa~itybbck In th- ~trlpc (Step 47). The bbck~ are th~n XOR'd to genora~e a correc~ed dsta blocl~, whlall Is tt~an trnns~rred to the CPU 1 v~a the controllet 3 ~St~p 4~).
2g Thare~ner, the controllflr 3 unlocks tho recor~ttuoUon sttlpa (Stop 44), and ~ne Rsad t~4k t~rmlnates (~tep 4~).

FIC~URE 2D Illustr~tes both oasos of Rer~dln~. Strlpe D, shown hi~hllyht~d, 18 the r~wrl6tructlon st~lpe. Il a Read rcquest 18 ma~e ror data ~lock ~52, tl~e conlroll~r PC1-~O7~;~

3 wlll aca~s ritc~r~ nl~ S~ In ~ pe A, ~nd dl~cl~ r~ bln~ry O firom Ih0 ~tc)r~0 llnit iclr 2r~n~r le ~h~ ~PV 1.

1~ a Fi~a~ r~u~r~t 1~ m~ r cl~ blo~k ~1, whlah 1~ not y~t r~ tructæd, th0 eonlr~ r ~ wlll acc~sa ~a~or~ ~nl}~ 32~ h strip~ tJ ar~ r~çi ~1 ot 2hr~
71~ bl~ck6 ~e til~n XOF~'d, ~r~n~r~ln0 ~ blnary U, which ~a ~r~na~err~d to 1~1~ CPU
.

~Irn rly, 1~ ~ Read re~uesl Is masl0 i~r ~iat~ bloc~ c~nlralbt 3 ~tal ~c~ar3~ etorage unl~ 5~5 In ~ripe ~ anc3 rea~ all ol l~O bl~ck~. ~e bl~ck6 aro -~ then XOR'd, a~ner~ln~ a blnary ~, ~rhlc~ ~ tran~?0rr~ ~o Ihe CPU 1.

0 ~hu3, l~r ~li R~d op~raUon~ In ~he pre~erred efnbo~lm~n~ tho d~t~ win 4~ys be ~orroct~ by teoonstruo~lorl ~ven thou~h U13 C;'u i m~y bl~ ro~dln6i trom a 6trlp0 2h~ 18 ~l~iy rucon~ruc~d and the C;i~U - there~ore could hsve reaci tl~ ciat~
dlrectiy. ~a ~cldl~lor~l llme tr~ corr~ ~ooc oata will oniy be Incurrec d~dn~ ~ereeon~ n proc~, whlch ~hould occur InfrequenUy. Thls approtAch allowa . tt~ d~t~ ~tw~e 8ub8y5tem to always m~ln~ln ~nd present correo;t dat~ withou~
h~vlna to kcsp track o~ whe~er or r;ot a requc~tad clr~ts black b ~ow~ ~e r~onaSruotlon ~rlpo.

Alt~m~ ly, th~ Read ta~l< ~ kaep trac1< of wh~thot or not e reques~e~ data blwk b ~abov~ th~ recor~s~ructlon 8trlp~. ~e~errlng to FIGURE 4, r~ r the controlbr clotorrnlne~ that ~ re~ue~ d~ bhck Is on th~ replacom~nt dorQ~o unl;t Sl' ~Step 42~, the controlhr compu0s the posltlon o~ the roque~lod d~ta block In tho ~torago unlt S1 wllh ~a curr~m poonion ol tll~ rocorY~tructlon strlpo (Shp 46, Indtcated ~ opUonal by dD~hod ar~). Il the r~qu~stcd block 1~ not sbovo the reconslrucllon lln~, the wntroRer 3 reconstructs the clrlp0 conlalnln~the r~quwtad d2trl block bn-Ur~e~ by rwdln~ ~nd XOR~n~ ~11 o~ ~he o~hor drlte blocks ~nd th~ corr~pondh~ p~lty olock In Ihe ~trlP~ (Steps 47 ~nd ~8).
HO~NQV01', N U~e rr~qu~sted block k ~bovoU tho roconYtructlon Ihe, the block hn~atre~dy been r~constructed. th~reror0, She conlroller 3 per70nn3 n normal R3ad ot tho d~ta block ~nd trane~er~ Ihe dat~ blocls lo the CPU 1 (Step U). Whlle -1 ~ PA~ENT
PD~ 3D

ppro~ch r~qulree tr~ckln~ th~r w n~t a requ~ad d~t~ bloc~ br~
lh0 r~ons1ruction s~rlpo, ~Im4 is ~Q~ In Rea~ln$~ prevlou~y r~constructod date bl~ck~ on ~ roplacernen~ s~ora~4 unlL

a~d~
H ~ Write operation is requ~ted by th~ CPU ~ durlns~ n~rsl re~n~Pucllon, ~
Wrl~ proc~ b~ln~ n In~4p~n~ent ~ut concunen~ t~stc (FIGUR~ 5, Sl~p ~.
Thl~ me~n~ that lh~ r~cons~ ctlon ta6k contlrluo~ ~o ~x~cuto, but 1hnt tho Wrl~o~ ~nd recor~truotlon l~sk oonterui Sor systorn ro60ure~, In known 1e6hlon.

....... The oon~r~ r ~ locks~ the rocon6tn~10n g~rlpe to pr~vent ~dvertent ~Iter~tlon of ~ qtrlp~ under~oln~ reoons~suot~n (Stap 61). 1~ the Wrlte operatlon s~quwted IB tor ~ data bhck eind corr~pondlnç~ par~ bhc~ nos on ~ho replacemertt slora~e unK St' ~Step 52), the controller 3 pertorms a normal Read-MDdiiy-Wrlte s~u~.
That IB, 1he old pQri~y block and old d~ta b oc~t aro Re~d from the ~rr y (Slep 53~, ~d tho old p~rlty btock b modifi~d by Dsu~ actin~ our (XOF('ln~) ths dd d~t~
76 bl~ nd ~acl~in~ in" ~ ) ~e now data block (Step ~ The r~w p~rlty blook ~nd the now d~ta block 3re then Written to the ana~ (Step 5q. A~br ~e Wrlte opar~Uon b cornploted, Ulo r,,ontrollor S unlock3 th0 r~constructlon ~tl1pe ~tep 66), and th~ Wrlt~ t~rmlnatos (Step 57~.

tt does not mr~ner In thls ca~e wheUlur or no~ the correspondln~ dat~ block on ;i~ the re,olacem~nt stora~e unlt S 1 ' ha~ been correct~d. Because lhe re~ussted d~ta block ~nd Itl; parlty blo~k ue not on the replr~mont stotaSo unlt 51', tho R~sd pul of the R~a~Modi~y-Writ~ sequenc~ doe~ not need to reconstruct th- data.
mus, essenUally no loss o~ perlorm~nco ocaur~, Il the Wr~te op~r~Uon r~que~t~d by Uho CPU 1 1~ tot a data block whero olthar tho d~ta blr~k or 11~ eorre~pondlrlg parlty blod~ aru on tl~ replacement slora~e unll S1' (Step 52), tha prweduro Is dl~rent. The oontroll~r 3 Instoad recomputes a parlt,y block tor tho strlpo ~on-the-ny- ~y readlng all o~ the othcr d~t~ block8 In U~o ~trlpe ~Step 58) and XOR'in~ ~h0n~ (Sbp 59). The new data block le then XOR'd v 1th the recomput~d parity block to ~enerate a new psrlty block ~SIep Bû). ~h0 Pl:~[)7SD

naw t~t~ l~lock ov~r~r;l~ ul~ d~t3 bl~k and th4 n~w parlty ~lock e~/~8 t~ old parily blook ~S~p 5~ r th~ Wrl~ opcr~n Is ~ompl~ed, ~e controller 3 unlwks tl1~ r~or~tru~lon ~trlp~ (S~ep 6~ he W~ite ~k t~mln~ (St~p 57~.

An cll~rrl~livb pr~dure, Indl~tad ~y dash~d llncs In FIGU~E 5, Is 10 nrst r~or~ttu~ Un~ bl~ck on th3 r4plac~ nt ~tor~ unlt S1'. The ~r~llu 3 readc ~ll o~ ~ho o~or blook~ In tho ~ttlpa t~ap ~ hon XOR's Ulem t8top 62).
ma r~sult may b~ stor~d on the rsple44man~ sitora~o unlt Sl~ (Step ~) or ~n 4 ~mpc,r~ry momory. ~he reconslruc~ed block esn thsn ~e u88d In A norrnol Resd-1G .. Mo~ Wrlt~ s0qu~nc3 (Step~ 57).

1~ hould be no~ed IhQt the ~bov~ dlsw~ahn ol a Wrlte oper~llon pert~lr~ to Iho ~nar~ ca~0 o~ ~ss th~n ~l o~ in ~ suipe h~ln~ rno~inod. In ~o l:~p~3Ckll ca80 wh~ro all blocks In s 6~rlpe aro b~ln~ m~dln0d, then the ~o~d ModHy-Wrlts ~quano~ i8 ~nnecessary. ~t l~, the Initi~l Read operatEon b~ not qulr~d, ~Ince ~he parHy ~ or th0 strlpe can bo computs~ o~y on tho næw data. Th~ computed p~ty bbck and the naw data blochs ~ an ~Imply ~tored on ths strlpo. 8trlcUy ~poaldn~, no ~reconstruc~on~ ol the strlpe i8 per~ormed.

It the CPU 1 Wrltes to strlp~ that havo airoady b~n cor(~cted, tho new data is recorded correctly. It ~ Ci'U 1 Writes to sSrlpes Ulat have nol yet heen cor~cted, the new data 18 r~orded corroc~ly and wl~ corr~ed~ H~aln ~lthough N 18 no lon~er Incorrect) ~han the reconstructlon strips advances to the 8t11i~ oonts~'nin~ ~he new datn. Tho ~dditional Um~ to rc~ort~ct ~ooci data wiiibe Incurrad wi~h dlminishln~ ~requency durh~ tho r~con~truction process r~ Ih0 2s r~on~tructlon ~trlpe advancos. Tl~ ppro~ch a~owe the d~t~ ~toraaa sub~y~-tern to alw~y~ malntain an~ pres~nt ootteot data wllhoul ha~ln~ to keep tta~k o~~vhether or not a requ~stod dstJ biock 1- ~ab~ve' or ~beiow~ ~e recon~t~ on strlp3.

-1~ PAT~NT
P~0807S~

~itern~tiYoly, an ~dc~llor~l ~tep mey b0 ~dd~ to tho racor~6lr~c~Jon 1~sk (FIGURE
t ~hl3th0~ ~ ~trlpe h~s rllr~udy ~en rec~n~trucl~ ~y a wr~ta op~atlon (Sbp ~1 H r~constru~lon h~ ~ir~sdy occurrsd, ti~e outrenl r0~nutnl~tion sttlpe mey be unl~cked ~nd proc~a~lng conllnu~i ~t Y r~xt ~trlpe (Step~ & 35). Il r~G~n~ruc~lon h~ not occutrcd, tha ~n~r~l r~c~n3~ctlon l~k ~ntlnu~
~3tocutl~n (Step 33).

A nurnb~r of em~o~irtl~t~ ~ ~ pres~nt Inv0ntl0n ha~ ~n dsu:rliogd.
~bv~rthelea~ wlll be und~rs~ood ~hat varlou~ ml~alio~tk~ns mey ~ made withotlt ~i0p~rtinç~ Irom th~ 3plr~l end ~cope o~ tJle Irr~/enUon. For exampl~, tne pres0nt ~nvontlon csn b~ u~d wlth RAID 3, RAID 4, or RA D 5 ~ys~em~. Furthormoto, t,~n ~rror~ott~ctlon me~hod In addltlen lo or In 0eu o~ the XOR~ner~lod parlly rnay be u~ or Il1e neccssary radun~ancy IntorrnaUon. One such rr~thod usln~
Reed~Sobmon codw l~ dlucle~d In U.S. Patent Applic~tion S~rl~J No. 270,713, nl0~ 1111418~, ~nUtlod AArr~yod ûlsk ~ti~e ~y~m and Method~ ~d ~lgn~d lo Ule ~ssl5anee ot th~ ptssent inv~ntlon. W~th Ihe structure and mothod ~ught i~y th~ referenc0, ~h~ ptcsetlt Invontlon c~n eccornmoda~e ~he loss ot tw~ J~or-~o units H both XOil and Recd~olomon pr any other sys~em) redund~ncy 1~
Accordln~ly, It 1~ to bu und~r~tood that Ihe Invantlon le no~ lo be llmlted by ~e ~pecl~lc Illw~ra~ed em~odiment, but only by ~ho scope o! Ihe eppended dalms.

Claims (17)

PD-0807SD
1. A method for on-line reconstruction of a failed data storage unit in a redundant array of storage units coupled to a controller, the storage units having a plurality of stripes each containing a plurality of data blocks and at least one associated error-correction block, comprising the steps of:
a. providing a replacement storage unit for the failed storage unit;
b. reconstructing the data block of the failed storage unit for each stripe in the arrays;
c. storing the reconstructed data block on the replacement storage unit in the corresponding stripe;
d. if the controller requests a read operation for a data block during reconstruction, then;
(1) If the requested data block is located on the replacement storage unit then:
(a) accessing all of the other data blocks and at least one corre-sponding error-correction block in the stripe containing the requested data block;
(b) reconstructing the requested data block from the accessed blocks;
(c) providing the reconstructed data block to the controller;
(2) If the requested data block is not located on the replacement storage unit, then:
(a) accessing the requested data block directly;
(b) providing the requested data block to the controller.
2. A method for on-line reconstruction of a failed data storage unit in a redundant array of storage units coupled to a controller, the storage units having a plurality of stripes each containing a plurality of data blocks and at least one associated error-correction block, comprising the steps of:
a. providing a replacement storage unit for the failed storage unit;
b. reconstructing the data block of the failed storage unit for each stripe in the array;
c. storing the reconstructed data block on the replacement storage unit in the corresponding stripe;
d. if the controller requests a write operation for a new data block during reconstruction, then:
(1) If the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then:
(a) updating the at least one associated error-correction block in the striped containing the data block to be modified;
(b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified;
(2) if the data block to be modified is located on the replacement storage unit, then:
(a) accessing all of the other blocks in the stripe containing the data block to be modified;
(b) reconstructing the data block to be modified from the accessed blocks;
(c) updating the at least one associated error-correction block in the stripe containing the data block to be modified;
(d) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified.
3. The method of claim 2, wherein the write operation step includes the further steps of:
a. if the at least one error-correction block associated with the data block to be modified is located on the replacement storage unit, then:
(1) accessing all of the other data blocks in the stripe containing the data block to be modified;
(2) computing at least one error-correction block from the accessed blocks and the new data block;
(3) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
4. A method for on-line reconstruction of a failed data storage unit in a redundant array of storage units coupled to a controller, the storage units having a plurality of stripes each containing a plurality of data blocks and at least on associated error-correction block, comprising the steps of:
a. providing a replacement storage unit for the failed storage unit;
b. reconstructing the data block of the failed storage unit for each stripe in the array;
c. storing the reconstructed data block on the replacement storage unit in the corresponding stripe;
d. if the controller requests a write operation for a new data block during reconstruction, then:
(1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then:
(a) updating the at least one associated error-correction block in the stripe containing the data block to be modified;
(b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified:
(2) if the data block to be modified or its at least one associated error-correction block are located on the replacement storage unit, then:
(a) accessing all of the other data blocks in the striped containing the data block to be modified;
(b) computing at least one error-correction block from the accessed blocks and the new data block;
(c) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
5. The method of claim 1, further including the steps of:
a. if the controller requests a write operation for a new data block during reconstruction, then:
(1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then:
(a) updating the at least one associated error-correction block in the stripe containing the data block to be modified;
(b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified;
(2) if the data block to be modified is located on the replacement storage unit, then:
(a) accessing all of the other blocks in the stripe containing the data block to be modified;
(b) reconstructing the data block to be modified from the accessed blocks;
(c) updating the at least one associated error-correction block in the stripe containing the data block to be modified;
(d) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified.
6. The method of claim 5, wherein the write operation step include the further steps of:
a. if the at least one error-correction block associated with the data block to be modified is located on the replacement storage unit, then:
(1) accessing all of the data blocks in the stripe containing the data block to be modified;
(2) computing at least one error-correction block from the accessed blocks and the new data block;
(3) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
7. The method of claim 1, further including the steps of:
a. if the controller requests a write operation for a new data block during reconstruction, then:
(1) if the data block to be modified and its at least one associated error-correction block are not located on the replacement storage unit, then:
(a) updating the at least one associated error-correction block in the stripe containing the data block to be modified;
(b) writing the updated at least one error-correction block and the new data block in the stripe containing the data block to be modified;
(2) if the data block to be modified or its at least one associated error-correction block are located on the replacement storage unit, then:
(a) accessing all of the other data blocks in the stripe containing data block to be modified;
(b) computing at least one error-correction block from the accessed blocks and the new data block;
(c) writing the computed at least one error-correction block and the new data block in the stripe containing the data block to be modified.
8. The method of claims 1, 2, or 4, wherein at least one error-correction block contains parity information, and the step of reconstructing each data block of the failed storage unit comprises the steps of:
a. accessing all of the other data blocks and the corresponding parity error-correction block in the corresponding stripe;
b. exclusively-OR'ing all of the accessed blocks to generate a new data block.
9. The method of claims 2, 4, 5, or 7, wherein at least one error-correction block contains parity information, and the step of updating the at least one associated error-correction block during a write operation comprises the steps of:
a. reading the data block to be modified and the associated parity error-correction block;
b. exclusively-OR'ing the parity error-correction block with the data block to be modified and the new data block to generate an updated parity error-correction block.
10. The method of claims 3, 4, 6, or 7, wherein the step of computing at leastone error-correction block during a write operation comprises exclusively-OR'ing the accessed blocks and the new data block.
11. The method of claim 1, wherein the step of reconstructing the requested data block from the accessed blocks comprises exclusively-OR'ing the accessed blocks.
12. The method of claims 2 or 5, wherein the step of reconstructing the data block to be modified from the accessed blocks comprises exclusively-OR'ing the accessed block.
13. The method of claims 1, 5, or 7, wherein the requested data block is located on the replacement storage unit;
a. if the block has previously been reconstructed, then:
(1) accessing the requested data block directly;
(2) providing the requested data block to the controller;
b. otherwise:
(1) accessing all of the other data blocks and at least one corre-sponding error-correction block in the stripe containing the requested data block;
(2) reconstructing the requested data block from the accessed blocks;
(3) providing the reconstructed data block to the controller.
14. The method of claims 1, 2, or 4, wherein the step of reconstructing the data block of the failed storage unit for each stripe in the array is performed only for stripes that have not previously been reconstructed.
15. Control means for on-line reconstruction to a replacement storage unit of afailed data storage unit in a redundant array of storage units, the storage units having a plurality of stripes each containing a plurality of data blocks and an associated error-correction block, the control means being coupled to the array of storage units and including:
a. reconstruction means for reconstructing the data block of the failed storage unit for each stripe in the array and storing the reconstructed data block on the replacement storage unit in the corresponding stripe;
b. read operation means, for reading a requested data block during operation of the reconstruction means by:
(1) if the requested data block is located on the replacement storage unit then:
(a) accessing all of the other data blocks and the correspond-ing error-correction block in the stripe containing the requested data block;
(b) reconstructing the requested data block from the accessed blocks;
(c) providing the reconstructed data block to the control means:
(2) if the requested data block is not located on the replacement storage unit, then:
(a) accessing the requested data block directly;
(b) providing the requested data block to the control means.
10. Control means for on-line reconstruction to a replacement storage unit of afailed data storage unit in a redundant array of storage units, the storage units having a plurality of stripes each containing a plurality of data blocks and an associated error-correction block, the control means being coupled to the array of storage units and including:
a. reconstruction means for reconstructing the data block of the failed storage unit for each stripe in the array and storing the reconstructed data block on the replacement storage unit in the corresponding stripe;
b. write operation means, for writing a new data block during operation of the reconstruction means by:
(1) if the data block to be modified and the associated error-correction block are not located on the replacement storage unit, then:
(a) updating the associated error-correction block in the stripe containing the data block to be modified;
(b) writing the updated error-correction block and the new data block in the stripe containing the data block to be modified;
(2) if the data block to be modified is located on the replacement storage unit, then:
(a) accessing all the other blocks in the strips containing the data block to modified;
(b) reconstructing the data block to be modified from the accessed blocks;
(c) updating the associated error-correction block in the stripe containing the data block to be modified;
(d) writing the updated error-correction block and the new da block in the stripe containing the dance block to be modified.
17. Control means for on-line reconstruction to a replacement storage unit of afailed data storage unit in a redundant array of storage units, the storage units having a plurality of stripes each containing a plurality of data blocks and an associated error-correction block, the control means being coupled to the array of storage units and including:
a. reconstruction means for reconstructing the data block of the failed storage unit for each stripe in the array and storing the reconstructed data block on the replacement storage unit in the corresponding stripe;
b. write operation means, for writing a new data block during operation of the reconstruction means, by:
(1) if the data block to be modified and its associated error-correction block are not located on the replacement storage unit, then:
(a) updating the associated error-correction block in the stripe containing the data block to be modified:
(b) writing the updated error-correction block and the new data block in the stripe containing the data block to be modified;
(2) if the data block to be modified or its associated error-correction block are located on the replacement storage until, then:
(a) accessing all of the other data blocks in the stripe containing the data block to be modified;
(b) computing a error-correction block and the new data block in the stripe containing the data block to be modified.
CA002053692A 1990-10-23 1991-10-18 On-line reconstruction of a failed redundant array system Abandoned CA2053692A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/601,912 US5208813A (en) 1990-10-23 1990-10-23 On-line reconstruction of a failed redundant array system
US07/601,912 1990-10-23

Publications (1)

Publication Number Publication Date
CA2053692A1 true CA2053692A1 (en) 1992-04-24

Family

ID=24409250

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002053692A Abandoned CA2053692A1 (en) 1990-10-23 1991-10-18 On-line reconstruction of a failed redundant array system

Country Status (6)

Country Link
US (2) US5208813A (en)
EP (2) EP0831400A3 (en)
JP (1) JP2959901B2 (en)
AU (1) AU8590491A (en)
CA (1) CA2053692A1 (en)
DE (1) DE69130279T2 (en)

Families Citing this family (340)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2603757B2 (en) * 1990-11-30 1997-04-23 富士通株式会社 Method of controlling array disk device
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
US5345565A (en) * 1991-03-13 1994-09-06 Ncr Corporation Multiple configuration data path architecture for a disk array controller
JP2923702B2 (en) * 1991-04-01 1999-07-26 株式会社日立製作所 Storage device and data restoration method thereof
US5506979A (en) * 1991-04-02 1996-04-09 International Business Machines Corporation Method and means for execution of commands accessing variable length records stored on fixed block formatted DASDS of an N+2 DASD synchronous array
US5258984A (en) * 1991-06-13 1993-11-02 International Business Machines Corporation Method and means for distributed sparing in DASD arrays
US5278838A (en) * 1991-06-18 1994-01-11 Ibm Corp. Recovery from errors in a redundant array of disk drives
JP2880000B2 (en) * 1991-07-25 1999-04-05 三菱電機株式会社 Array type disk drive system
JP2913917B2 (en) 1991-08-20 1999-06-28 株式会社日立製作所 Storage device and storage device system
US5522065A (en) * 1991-08-30 1996-05-28 Compaq Computer Corporation Method for performing write operations in a parity fault tolerant disk array
US5369758A (en) * 1991-11-15 1994-11-29 Fujitsu Limited Checking for proper locations of storage devices in a storage array
US5802264A (en) * 1991-11-15 1998-09-01 Fujitsu Limited Background data reconstruction in a storage device array system
US5974544A (en) * 1991-12-17 1999-10-26 Dell Usa, L.P. Method and controller for defect tracking in a redundant array
US5506977A (en) * 1991-12-17 1996-04-09 Dell Usa, L.P. Method and controller for minimizing reads during partial stripe write operations to a disk drive
US5313626A (en) * 1991-12-17 1994-05-17 Jones Craig S Disk drive array with efficient background rebuilding
US5341381A (en) * 1992-01-21 1994-08-23 Tandem Computers, Incorporated Redundant array parity caching system
US5337322A (en) * 1992-03-02 1994-08-09 Acer Incorporated Method of processing stored data containing parity data
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
JPH06509896A (en) * 1992-05-12 1994-11-02 セイコーエプソン株式会社 scalable coprocessor
US5471640A (en) * 1992-07-06 1995-11-28 Hewlett-Packard Programmable disk array controller having n counters for n disk drives for stripping data where each counter addresses specific memory location by a count n
JP3181398B2 (en) * 1992-10-06 2001-07-03 三菱電機株式会社 Array type recording device
US5450415A (en) * 1992-11-25 1995-09-12 Matsushita Electric Industrial Co., Ltd. Boundary scan cell circuit and boundary scan test circuit
US5819109A (en) * 1992-12-07 1998-10-06 Digital Equipment Corporation 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
US5689678A (en) * 1993-03-11 1997-11-18 Emc Corporation Distributed storage array system having a plurality of modular control units
US5574851A (en) * 1993-04-19 1996-11-12 At&T Global Information Solutions Company Method for performing on-line reconfiguration of a disk array concurrent with execution of disk I/O operations
GB2278228B (en) * 1993-05-21 1997-01-29 Mitsubishi Electric Corp An arrayed recording apparatus
US7174352B2 (en) 1993-06-03 2007-02-06 Network Appliance, Inc. File system image transfer
US6604118B2 (en) 1998-07-31 2003-08-05 Network Appliance, Inc. File system image transfer
JPH08511368A (en) * 1993-06-04 1996-11-26 ネットワーク・アプリアンス・コーポレーション Method for forming parity in RAID subsystem using non-volatile memory
US5581690A (en) * 1993-06-29 1996-12-03 Digital Equipment Corporation Method and apparatus for preventing the use of corrupt data in a multiple disk raid organized storage system
JP3249868B2 (en) * 1993-11-19 2002-01-21 株式会社日立製作所 Array type storage system
EP0660236B1 (en) * 1993-11-30 1999-06-09 Hitachi, Ltd. Disc array system having disc storage devices dispersed on plural boards and accessible at withdrawal of part of the boards
US5485571A (en) * 1993-12-23 1996-01-16 International Business Machines Corporation Method and apparatus for providing distributed sparing with uniform workload distribution in failures
US5530948A (en) * 1993-12-30 1996-06-25 International Business Machines Corporation System and method for command queuing on raid levels 4 and 5 parity drives
US5446855A (en) * 1994-02-07 1995-08-29 Buslogic, Inc. System and method for disk array data transfer
US5537567A (en) * 1994-03-14 1996-07-16 International Business Machines Corporation Parity block configuration in an array of storage devices
JP2846837B2 (en) * 1994-05-11 1999-01-13 インターナショナル・ビジネス・マシーンズ・コーポレイション Software-controlled data processing method for early detection of faults
US5778167A (en) * 1994-06-14 1998-07-07 Emc Corporation System and method for reassigning a storage location for reconstructed data on a persistent medium storage system
US5657439A (en) * 1994-08-23 1997-08-12 International Business Machines Corporation Distributed subsystem sparing
JP3661205B2 (en) * 1994-09-09 2005-06-15 株式会社日立製作所 Disk array system and method for generating parity data of disk array system
US5412668A (en) * 1994-09-22 1995-05-02 International Business Machines Corporation Parity striping feature for optical disks
US5623595A (en) * 1994-09-26 1997-04-22 Oracle Corporation Method and apparatus for transparent, real time reconstruction of corrupted data in a redundant array data storage system
US5581740A (en) * 1994-10-04 1996-12-03 Dell Usa, L.P. System for reading CD ROM data from hard disks
US5615352A (en) * 1994-10-05 1997-03-25 Hewlett-Packard Company Methods for adding storage disks to a hierarchic disk array while maintaining data availability
US5524204A (en) * 1994-11-03 1996-06-04 International Business Machines Corporation Method and apparatus for dynamically expanding a redundant array of disk drives
US5748885A (en) * 1994-12-23 1998-05-05 Emc Corporation Method and apparatus for reduction of I/O operations in persistent storage system
US5613085A (en) * 1994-12-27 1997-03-18 International Business Machines Corporation System for parallel striping of multiple ordered data strings onto a multi-unit DASD array for improved read and write parallelism
US5581566A (en) * 1995-01-06 1996-12-03 The Regents Of The Univ. Of California Office Of Technology Transfer High-performance parallel interface to synchronous optical network gateway
US5548712A (en) * 1995-01-19 1996-08-20 Hewlett-Packard Company Data storage system and method for managing asynchronous attachment and detachment of storage disks
JP2969251B2 (en) * 1995-01-26 1999-11-02 日本アイ・ビー・エム株式会社 Data storage system and parity generation method for data storage system
JP3253473B2 (en) * 1995-01-27 2002-02-04 富士通株式会社 Method and apparatus for resynchronization processing of duplicated shared memory
US6467054B1 (en) 1995-03-13 2002-10-15 Compaq Computer Corporation Self test for storage device
JPH08263226A (en) * 1995-03-23 1996-10-11 Toshiba Corp Information storage device
US5870630A (en) * 1995-07-31 1999-02-09 Hewlett-Packard Company System for online SCSI drive repair utilizing detachable secondary I/O buses pigtailed to primary I/O bus wherein each secondary I/O bus has a length in excess of 100mm
US5881249A (en) * 1995-07-31 1999-03-09 Hewlett-Packard Company I/O bus
DE69614460T2 (en) * 1995-07-31 2002-06-06 Hewlett Packard Co Computer frame structure with module housing
US5657468A (en) * 1995-08-17 1997-08-12 Ambex Technologies, Inc. Method and apparatus for improving performance in a reduntant array of independent disks
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
US5809224A (en) * 1995-10-13 1998-09-15 Compaq Computer Corporation On-line disk array reconfiguration
US5961652A (en) * 1995-10-13 1999-10-05 Compaq Computer Corporation Read checking for drive rebuild
US5933592A (en) * 1995-10-13 1999-08-03 Digital Equipment Corporation Promoting device level error to raidset level error to restore redundacy in a raid array data storage system
US5826001A (en) * 1995-10-13 1998-10-20 Digital Equipment Corporation Reconstructing data blocks in a raid array data storage system having storage device metadata and raid set metadata
US5790775A (en) * 1995-10-23 1998-08-04 Digital Equipment Corporation Host transparent storage controller failover/failback of SCSI targets and associated units
US6449730B2 (en) 1995-10-24 2002-09-10 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
US5862312A (en) * 1995-10-24 1999-01-19 Seachange Technology, Inc. Loosely coupled mass storage computer cluster
US5708771A (en) * 1995-11-21 1998-01-13 Emc Corporation Fault tolerant controller system and method
JP2981482B2 (en) * 1995-12-06 1999-11-22 日本アイ・ビー・エム株式会社 Data storage system, data transfer method and data reconstruction method
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
US5742752A (en) * 1995-12-29 1998-04-21 Symbios Logic Inc. Method for performing a RAID stripe write operation using a drive XOR command set
US5805787A (en) * 1995-12-29 1998-09-08 Emc Corporation Disk based disk cache interfacing system and method
US5890214A (en) * 1996-02-27 1999-03-30 Data General Corporation Dynamically upgradeable disk array chassis and method for dynamically upgrading a data storage system utilizing a selectively switchable shunt
US5724501A (en) * 1996-03-29 1998-03-03 Emc Corporation Quick recovery of write cache in a fault tolerant I/O system
GB2312319B (en) * 1996-04-15 1998-12-09 Discreet Logic Inc Video storage
CA2201679A1 (en) 1996-04-15 1997-10-15 Raju C. Bopardikar Video data storage
US6055577A (en) * 1996-05-06 2000-04-25 Oracle Corporation System for granting bandwidth for real time processes and assigning bandwidth for non-real time processes while being forced to periodically re-arbitrate for new assigned bandwidth
US5819310A (en) * 1996-05-24 1998-10-06 Emc Corporation Method and apparatus for reading data from mirrored logical volumes on physical disk drives
US5857208A (en) * 1996-05-31 1999-01-05 Emc Corporation Method and apparatus for performing point in time backup operation in a computer system
US5764880A (en) * 1996-09-10 1998-06-09 International Business Machines Corporation Method and system for rebuilding log-structured arrays
US6041423A (en) * 1996-11-08 2000-03-21 Oracle Corporation Method and apparatus for using undo/redo logging to perform asynchronous updates of parity and data pages in a redundant array data storage environment
DE69724649T2 (en) * 1996-11-14 2004-07-01 Emc Corp., Hopkinton DYNAMICALLY EXTENDABLE DISK ARRANGEMENT SYSTEM AND METHOD
US5875478A (en) * 1996-12-03 1999-02-23 Emc Corporation Computer backup using a file system, network, disk, tape and remote archiving repository media system
US6032224A (en) * 1996-12-03 2000-02-29 Emc Corporation Hierarchical performance system for managing a plurality of storage units with different access speeds
US6460123B1 (en) 1996-12-03 2002-10-01 Emc Corporation Mirroring computer data
US6029231A (en) * 1996-12-03 2000-02-22 Emc Corporation Retrieval of data stored on redundant disks across a network using remote procedure calls
US5926836A (en) * 1996-12-03 1999-07-20 Emc Corporation Computer and associated method for restoring data backed up on archive media
US5889933A (en) * 1997-01-30 1999-03-30 Aiwa Co., Ltd. Adaptive power failure recovery
JP3428350B2 (en) * 1997-03-14 2003-07-22 株式会社日立製作所 Storage system
US6154853A (en) * 1997-03-26 2000-11-28 Emc Corporation Method and apparatus for dynamic sparing in a RAID storage system
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
US5951691A (en) * 1997-05-16 1999-09-14 International Business Machines Corporation Method and system for detection and reconstruction of corrupted data in a data storage subsystem
US6571324B1 (en) * 1997-06-26 2003-05-27 Hewlett-Packard Development Company, L.P. Warmswap of failed memory modules and data reconstruction in a mirrored writeback cache system
US6021462A (en) * 1997-08-29 2000-02-01 Apple Computer, Inc. Methods and apparatus for system memory efficient disk access to a raid system using stripe control information
US6092215A (en) * 1997-09-29 2000-07-18 International Business Machines Corporation System and method for reconstructing data in a storage array system
US6151641A (en) * 1997-09-30 2000-11-21 Lsi Logic Corporation DMA controller of a RAID storage controller with integrated XOR parity computation capability adapted to compute parity in parallel with the transfer of data segments
US6032217A (en) 1997-11-04 2000-02-29 Adaptec, Inc. Method for reconfiguring containers without shutting down the system and with minimal interruption to on-line processing
JP2927282B2 (en) * 1997-11-06 1999-07-28 日本電気株式会社 Disk array device
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
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
US6343343B1 (en) 1998-07-31 2002-01-29 International Business Machines Corporation Disk arrays using non-standard sector sizes
US6279138B1 (en) 1998-08-04 2001-08-21 International Business Machines Corporation System for changing the parity structure of a raid array
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
US6272662B1 (en) 1998-08-04 2001-08-07 International Business Machines Corporation Distributed storage system using front-end and back-end locking
US6446237B1 (en) 1998-08-04 2002-09-03 International Business Machines Corporation Updating and reading data and parity blocks in a shared disk system
US6446220B1 (en) 1998-08-04 2002-09-03 International Business Machines Corporation Updating data and parity data with and without read caches
US6332197B1 (en) 1998-08-04 2001-12-18 International Business Machines Corp. System for updating data in a multi-adaptor environment
US6119244A (en) 1998-08-25 2000-09-12 Network Appliance, Inc. Coordinating persistent status information with multiple file servers
GB2343265A (en) * 1998-10-28 2000-05-03 Ibm Data storage array rebuild
US6343984B1 (en) 1998-11-30 2002-02-05 Network Appliance, Inc. Laminar flow duct cooling system
US6493656B1 (en) * 1999-02-26 2002-12-10 Compaq Computer Corporation, Inc. Drive error logging
US6401214B1 (en) 1999-03-04 2002-06-04 International Business Machines Corporation Preventive recovery action in hard disk drives
US6466540B1 (en) 1999-05-05 2002-10-15 International Business Machines Corporation Self-healing coupler for a serial raid device
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
US6964008B1 (en) * 1999-11-12 2005-11-08 Maxtor Corporation Data checksum method and apparatus
GB0008319D0 (en) * 2000-04-06 2000-05-24 Discreet Logic Inc Image processing
US6654912B1 (en) * 2000-10-04 2003-11-25 Network Appliance, Inc. Recovery of file system data in file servers mirrored file system volumes
US6952797B1 (en) 2000-10-25 2005-10-04 Andy Kahn Block-appended checksums
US6941490B2 (en) * 2000-12-21 2005-09-06 Emc Corporation Dual channel restoration of data between primary and backup servers
US6317857B1 (en) * 2001-01-12 2001-11-13 Hewlett-Packard Company System and method for utilizing checksums to recover data
US6665830B2 (en) * 2001-01-31 2003-12-16 Hewlett-Packard Development Company, L.P. System and method for building a checksum
US6799284B1 (en) 2001-02-28 2004-09-28 Network Appliance, Inc. Reparity bitmap RAID failure recovery
US6668264B1 (en) 2001-04-03 2003-12-23 Network Appliance, Inc. Resynchronization of a target volume with a source volume
GB2374749B (en) * 2001-04-20 2005-04-06 Discreet Logic Inc Image data processing
US6957351B2 (en) * 2001-07-03 2005-10-18 International Business Machines Corporation Automated disk drive library with removable media powered via contactless coupling
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
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
JP3723960B2 (en) * 2001-11-19 2005-12-07 インターナショナル・ビジネス・マシーンズ・コーポレーション EXTERNAL STORAGE DEVICE, EXTERNAL STORAGE DEVICE CONTROL METHOD, PROGRAM, AND RECORDING MEDIUM
US7613984B2 (en) * 2001-12-28 2009-11-03 Netapp, Inc. System and method for symmetric triple parity for failing storage devices
US8402346B2 (en) * 2001-12-28 2013-03-19 Netapp, Inc. N-way parity technique for enabling recovery from up to N storage device failures
US7640484B2 (en) 2001-12-28 2009-12-29 Netapp, Inc. Triple parity technique for enabling efficient recovery from triple failures in a storage array
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
US7080278B1 (en) 2002-03-08 2006-07-18 Network Appliance, Inc. Technique for correcting multiple storage device failures in a storage array
US7254813B2 (en) * 2002-03-21 2007-08-07 Network Appliance, Inc. Method and apparatus for resource allocation in a raid system
US7437727B2 (en) * 2002-03-21 2008-10-14 Network Appliance, Inc. Method and apparatus for runtime resource deadlock avoidance 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
US7539991B2 (en) 2002-03-21 2009-05-26 Netapp, Inc. Method and apparatus for decomposing I/O tasks in a raid system
US7120826B2 (en) * 2002-03-29 2006-10-10 International Business Machines Corporation Partial mirroring during expansion thereby eliminating the need to track the progress of stripes updated during expansion
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
US6857001B2 (en) * 2002-06-07 2005-02-15 Network Appliance, Inc. Multiple concurrent active file systems
US7024586B2 (en) * 2002-06-24 2006-04-04 Network Appliance, Inc. Using file system information in raid data reconstruction and migration
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
US7143235B1 (en) 2003-03-21 2006-11-28 Network Appliance, Inc. Proposed configuration management behaviors in a raid subsystem
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
US7328364B1 (en) 2003-03-21 2008-02-05 Network Appliance, Inc. Technique for coherent suspension of I/O operations in a RAID subsystem
US7275179B1 (en) 2003-04-24 2007-09-25 Network Appliance, Inc. System and method for reducing unrecoverable media errors in a disk subsystem
US7143305B2 (en) * 2003-06-25 2006-11-28 International Business Machines Corporation Using redundant spares to reduce storage device array rebuild time
JP2005107839A (en) * 2003-09-30 2005-04-21 Toshiba Corp Array controller and disk array rebuilding method
US7266716B2 (en) * 2003-10-23 2007-09-04 Hewlett-Packard Development Company, L.P. Method and recovery of data using erasure coded data from stripe blocks
US7328305B2 (en) * 2003-11-03 2008-02-05 Network Appliance, Inc. Dynamic parity distribution technique
US7428691B2 (en) * 2003-11-12 2008-09-23 Norman Ken Ouchi Data recovery from multiple failed data blocks and storage units
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
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
US20050193273A1 (en) * 2004-02-18 2005-09-01 Xiotech Corporation Method, apparatus and program storage device that provide virtual space to handle storage device failures in a storage system
US7162647B2 (en) * 2004-03-11 2007-01-09 Hitachi, Ltd. Method and apparatus for cryptographic conversion in a data storage system
JP4144549B2 (en) * 2004-03-31 2008-09-03 日本電気株式会社 Data storage system and control method of the system
US20060075281A1 (en) * 2004-09-27 2006-04-06 Kimmel Jeffrey S Use of application-level context information to detect corrupted data in a storage system
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
US7290199B2 (en) * 2004-11-19 2007-10-30 International Business Machines Corporation Method and system for improved buffer utilization for disk array parity updates
US7392458B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
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
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
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
US20060143412A1 (en) * 2004-12-28 2006-06-29 Philippe Armangau Snapshot copy facility maintaining read performance and write performance
US7386758B2 (en) * 2005-01-13 2008-06-10 Hitachi, Ltd. Method and apparatus for reconstructing data in object-based storage arrays
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
US7984018B2 (en) * 2005-04-18 2011-07-19 Microsoft Corporation Efficient point-to-multipoint data reconciliation
US7774542B2 (en) * 2005-07-06 2010-08-10 Ji Zhang System and method for adaptive operation of storage capacities of RAID systems
US8560503B1 (en) 2006-01-26 2013-10-15 Netapp, Inc. Content addressable storage system
US20070180292A1 (en) * 2006-01-31 2007-08-02 Bhugra Kern S Differential rebuild in a storage environment
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
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
US8370715B2 (en) * 2007-04-12 2013-02-05 International Business Machines Corporation Error checking addressable blocks in storage
US8209587B1 (en) 2007-04-12 2012-06-26 Netapp, Inc. System and method for eliminating zeroing of disk drives in RAID arrays
US7840837B2 (en) * 2007-04-27 2010-11-23 Netapp, Inc. System and method for protecting memory during system initialization
US8898536B2 (en) * 2007-04-27 2014-11-25 Netapp, Inc. Multi-core engine for detecting bit errors
US7836331B1 (en) 2007-05-15 2010-11-16 Netapp, Inc. System and method for protecting the contents of memory during error conditions
US7975102B1 (en) 2007-08-06 2011-07-05 Netapp, Inc. Technique to avoid cascaded hot spotting
EP2297742B1 (en) 2008-05-16 2013-07-24 Fusion-io, Inc. Apparatus, system, and method for detecting and replacing failed data storage
US8006128B2 (en) * 2008-07-31 2011-08-23 Datadirect Networks, Inc. Prioritized rebuilding of a storage device
US9158579B1 (en) 2008-11-10 2015-10-13 Netapp, Inc. System having operation queues corresponding to operation execution time
JP2010128572A (en) 2008-11-25 2010-06-10 Fuji Xerox Co Ltd Data control device, storage device, and method of connecting data control device
US8495417B2 (en) * 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates
EP2366148B1 (en) 2009-04-21 2013-06-12 International Business Machines Corporation Apparatus and method for controlling a solid state disk ( ssd ) device
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
US8849877B2 (en) 2010-08-31 2014-09-30 Datadirect Networks, Inc. Object file system
US8468318B2 (en) 2010-09-15 2013-06-18 Pure Storage Inc. Scheduling of I/O writes in a storage environment
US8732426B2 (en) 2010-09-15 2014-05-20 Pure Storage, Inc. Scheduling of reactive I/O operations in a storage environment
US11614893B2 (en) 2010-09-15 2023-03-28 Pure Storage, Inc. Optimizing storage device access based on latency
US11275509B1 (en) 2010-09-15 2022-03-15 Pure Storage, Inc. Intelligently sizing high latency I/O requests in a storage environment
US8589655B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of I/O in an SSD environment
US8589625B2 (en) 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of reconstructive I/O read operations in a storage environment
US8726070B2 (en) * 2010-09-27 2014-05-13 Dell Products L.P. System and method for information handling system redundant storage rebuild
US9244769B2 (en) 2010-09-28 2016-01-26 Pure Storage, Inc. Offset protection data in a RAID array
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US11307930B1 (en) 2010-11-29 2022-04-19 Pure Storage, Inc. Optimized selection of participants in distributed data rebuild/verification
US10802763B2 (en) * 2010-11-29 2020-10-13 Pure Storage, Inc. Remote storage verification
US8589724B2 (en) 2011-06-30 2013-11-19 Seagate Technology Llc Rapid rebuild of a data set
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US11636031B2 (en) 2011-08-11 2023-04-25 Pure Storage, Inc. Optimized inline deduplication
US8719540B1 (en) 2012-03-15 2014-05-06 Pure Storage, Inc. Fractal layout of data blocks across multiple devices
US9164841B2 (en) * 2012-06-05 2015-10-20 Cleversafe, Inc. Resolution of a storage error in a dispersed storage network
US8874956B2 (en) 2012-09-18 2014-10-28 Datadirect Networks, Inc. Data re-protection in a distributed replicated data storage system
US10623386B1 (en) 2012-09-26 2020-04-14 Pure Storage, Inc. Secret sharing data protection in a storage system
US11032259B1 (en) 2012-09-26 2021-06-08 Pure Storage, Inc. Data protection in a storage system
US8745415B2 (en) 2012-09-26 2014-06-03 Pure Storage, Inc. Multi-drive cooperation to generate an encryption key
US8843447B2 (en) 2012-12-14 2014-09-23 Datadirect Networks, Inc. Resilient distributed replicated data storage system
US11733908B2 (en) 2013-01-10 2023-08-22 Pure Storage, Inc. Delaying deletion of a dataset
US10908835B1 (en) 2013-01-10 2021-02-02 Pure Storage, Inc. Reversing deletion of a virtual machine
US9589008B2 (en) 2013-01-10 2017-03-07 Pure Storage, Inc. Deduplication of volume regions
US11768623B2 (en) 2013-01-10 2023-09-26 Pure Storage, Inc. Optimizing generalized transfers between storage systems
CN103970481B (en) * 2013-01-29 2017-03-01 国际商业机器公司 The method and apparatus rebuilding memory array
US9020893B2 (en) 2013-03-01 2015-04-28 Datadirect Networks, Inc. Asynchronous namespace maintenance
US10365858B2 (en) 2013-11-06 2019-07-30 Pure Storage, Inc. Thin provisioning in a storage device
US11128448B1 (en) 2013-11-06 2021-09-21 Pure Storage, Inc. Quorum-aware secret sharing
US10263770B2 (en) 2013-11-06 2019-04-16 Pure Storage, Inc. Data protection in a storage system using external secrets
US9516016B2 (en) 2013-11-11 2016-12-06 Pure Storage, Inc. Storage array password management
US9208086B1 (en) 2014-01-09 2015-12-08 Pure Storage, Inc. Using frequency domain to prioritize storage of metadata in a cache
US10656864B2 (en) 2014-03-20 2020-05-19 Pure Storage, Inc. Data replication within a flash storage array
US20170132095A1 (en) * 2014-03-28 2017-05-11 Hewlett Packard Enterprise Development Lp Data restoration
US9513820B1 (en) 2014-04-07 2016-12-06 Pure Storage, Inc. Dynamically controlling temporary compromise on data redundancy
US9779268B1 (en) 2014-06-03 2017-10-03 Pure Storage, Inc. Utilizing a non-repeating identifier to encrypt data
US11399063B2 (en) 2014-06-04 2022-07-26 Pure Storage, Inc. Network authentication for a storage system
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9218407B1 (en) 2014-06-25 2015-12-22 Pure Storage, Inc. Replication and intermediate read-write state for mediums
US10496556B1 (en) 2014-06-25 2019-12-03 Pure Storage, Inc. Dynamic data protection within a flash storage system
US9563509B2 (en) 2014-07-15 2017-02-07 Nimble Storage, Inc. Methods and systems for storing data in a redundant manner on a plurality of storage units of a storage system
US10296469B1 (en) 2014-07-24 2019-05-21 Pure Storage, Inc. Access control in a flash storage system
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US9864761B1 (en) 2014-08-08 2018-01-09 Pure Storage, Inc. Read optimization operations in a storage system
US10430079B2 (en) 2014-09-08 2019-10-01 Pure Storage, Inc. Adjusting storage capacity in a computing system
US10176039B2 (en) 2014-09-19 2019-01-08 Micron Technology, Inc. Self-accumulating exclusive OR program
US10164841B2 (en) 2014-10-02 2018-12-25 Pure Storage, Inc. Cloud assist for storage systems
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
US9489132B2 (en) 2014-10-07 2016-11-08 Pure Storage, Inc. Utilizing unmapped and unknown states in a replicated storage system
US10430282B2 (en) 2014-10-07 2019-10-01 Pure Storage, Inc. Optimizing replication by distinguishing user and system write activity
US9727485B1 (en) 2014-11-24 2017-08-08 Pure Storage, Inc. Metadata rewrite and flatten optimization
US9773007B1 (en) 2014-12-01 2017-09-26 Pure Storage, Inc. Performance improvements in a storage system
US9552248B2 (en) 2014-12-11 2017-01-24 Pure Storage, Inc. Cloud alert to replica
US9588842B1 (en) * 2014-12-11 2017-03-07 Pure Storage, Inc. Drive rebuild
US9864769B2 (en) 2014-12-12 2018-01-09 Pure Storage, Inc. Storing data utilizing repeating pattern detection
US10545987B2 (en) 2014-12-19 2020-01-28 Pure Storage, Inc. Replication to the cloud
US9672106B2 (en) 2014-12-30 2017-06-06 Nutanix, Inc. Architecture for implementing erasure coding
US9569357B1 (en) 2015-01-08 2017-02-14 Pure Storage, Inc. Managing compressed data in a storage system
US11947968B2 (en) 2015-01-21 2024-04-02 Pure Storage, Inc. Efficient use of zone in a storage device
US10296354B1 (en) 2015-01-21 2019-05-21 Pure Storage, Inc. Optimized boot operations within a flash storage array
US9710165B1 (en) 2015-02-18 2017-07-18 Pure Storage, Inc. Identifying volume candidates for space reclamation
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US10310740B2 (en) 2015-06-23 2019-06-04 Pure Storage, Inc. Aligning memory access operations to a geometry of a storage device
US9547441B1 (en) 2015-06-23 2017-01-17 Pure Storage, Inc. Exposing a geometry of a storage device
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
KR20170028825A (en) 2015-09-04 2017-03-14 퓨어 스토리지, 아이앤씨. Memory-efficient storage and searching in hash tables using compressed indexes
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US9843453B2 (en) * 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
WO2017151211A1 (en) * 2016-02-29 2017-09-08 Microsemi Storage Solutions (U.S.), Inc. Method and system for handling random access write requests for a shingled magnetic recording hard disk drive
US10133503B1 (en) 2016-05-02 2018-11-20 Pure Storage, Inc. Selecting a deduplication process based on a difference between performance metrics
US10452297B1 (en) 2016-05-02 2019-10-22 Pure Storage, Inc. Generating and optimizing summary index levels in a deduplication storage system
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US10756816B1 (en) 2016-10-04 2020-08-25 Pure Storage, Inc. Optimized fibre channel and non-volatile memory express access
US10545861B2 (en) 2016-10-04 2020-01-28 Pure Storage, Inc. Distributed integrated high-speed solid-state non-volatile random-access memory
US20180095788A1 (en) * 2016-10-04 2018-04-05 Pure Storage, Inc. Scheduling operations for a storage device
US10191662B2 (en) 2016-10-04 2019-01-29 Pure Storage, Inc. Dynamic allocation of segments in a flash storage system
US10162523B2 (en) 2016-10-04 2018-12-25 Pure Storage, Inc. Migrating data between volumes using virtual copy operation
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US10185505B1 (en) 2016-10-28 2019-01-22 Pure Storage, Inc. Reading a portion of data to replicate a volume based on sequence numbers
US10359942B2 (en) 2016-10-31 2019-07-23 Pure Storage, Inc. Deduplication aware scalable content placement
US10567009B2 (en) 2016-12-06 2020-02-18 Nutanix, Inc. Dynamic erasure coding
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US10452290B2 (en) 2016-12-19 2019-10-22 Pure Storage, Inc. Block consolidation in a direct-mapped flash storage system
US11093146B2 (en) 2017-01-12 2021-08-17 Pure Storage, Inc. Automatic load rebalancing of a write group
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11403019B2 (en) 2017-04-21 2022-08-02 Pure Storage, Inc. Deduplication-aware per-tenant encryption
US10944671B2 (en) 2017-04-27 2021-03-09 Pure Storage, Inc. Efficient data forwarding in a networked device
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10776202B1 (en) 2017-09-22 2020-09-15 Pure Storage, Inc. Drive, blade, or data shard decommission via RAID geometry shrinkage
US10789211B1 (en) 2017-10-04 2020-09-29 Pure Storage, Inc. Feature-based deduplication
CN109725826B (en) * 2017-10-27 2022-05-24 伊姆西Ip控股有限责任公司 Method, apparatus and computer readable medium for managing storage system
US10884919B2 (en) 2017-10-31 2021-01-05 Pure Storage, Inc. Memory management in a storage system
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US11010233B1 (en) 2018-01-18 2021-05-18 Pure Storage, Inc Hardware-based system monitoring
US11144638B1 (en) 2018-01-18 2021-10-12 Pure Storage, Inc. Method for storage system detection and alerting on potential malicious action
US10970395B1 (en) 2018-01-18 2021-04-06 Pure Storage, Inc Security threat monitoring for a storage system
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
US11494109B1 (en) 2018-02-22 2022-11-08 Pure Storage, Inc. Erase block trimming for heterogenous flash memory storage devices
US11934322B1 (en) 2018-04-05 2024-03-19 Pure Storage, Inc. Multiple encryption keys on storage drives
US10678433B1 (en) 2018-04-27 2020-06-09 Pure Storage, Inc. Resource-preserving system upgrade
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US10678436B1 (en) 2018-05-29 2020-06-09 Pure Storage, Inc. Using a PID controller to opportunistically compress more data during garbage collection
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US10776046B1 (en) 2018-06-08 2020-09-15 Pure Storage, Inc. Optimized non-uniform memory access
US11281577B1 (en) 2018-06-19 2022-03-22 Pure Storage, Inc. Garbage collection tuning for low drive wear
US10725941B2 (en) * 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
US11869586B2 (en) 2018-07-11 2024-01-09 Pure Storage, Inc. Increased data protection by recovering data from partially-failed solid-state devices
US11194759B2 (en) 2018-09-06 2021-12-07 Pure Storage, Inc. Optimizing local data relocation operations of a storage device of a storage system
US11133076B2 (en) 2018-09-06 2021-09-28 Pure Storage, Inc. Efficient relocation of data between storage devices of a storage system
US10846216B2 (en) 2018-10-25 2020-11-24 Pure Storage, Inc. Scalable garbage collection
US11113409B2 (en) 2018-10-26 2021-09-07 Pure Storage, Inc. Efficient rekey in a transparent decrypting storage array
US11194473B1 (en) 2019-01-23 2021-12-07 Pure Storage, Inc. Programming frequently read data to low latency portions of a solid-state storage array
US11588633B1 (en) 2019-03-15 2023-02-21 Pure Storage, Inc. Decommissioning keys in a decryption storage system
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11397674B1 (en) 2019-04-03 2022-07-26 Pure Storage, Inc. Optimizing garbage collection across heterogeneous flash devices
US11775189B2 (en) 2019-04-03 2023-10-03 Pure Storage, Inc. Segment level heterogeneity
US10990480B1 (en) 2019-04-05 2021-04-27 Pure Storage, Inc. Performance of RAID rebuild operations by a storage group controller of a storage system
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US10929046B2 (en) 2019-07-09 2021-02-23 Pure Storage, Inc. Identifying and relocating hot data to a cache determined with read velocity based on a threshold stored at a storage device
US11422751B2 (en) 2019-07-18 2022-08-23 Pure Storage, Inc. Creating a virtual storage system
US11086713B1 (en) 2019-07-23 2021-08-10 Pure Storage, Inc. Optimized end-to-end integrity storage system
US11963321B2 (en) 2019-09-11 2024-04-16 Pure Storage, Inc. Low profile latching mechanism
US11403043B2 (en) 2019-10-15 2022-08-02 Pure Storage, Inc. Efficient data compression by grouping similar data within a data segment
US11615185B2 (en) 2019-11-22 2023-03-28 Pure Storage, Inc. Multi-layer security threat detection for a storage system
US11720692B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Hardware token based management of recovery datasets for a storage system
US11625481B2 (en) 2019-11-22 2023-04-11 Pure Storage, Inc. Selective throttling of operations potentially related to a security threat to a storage system
US11341236B2 (en) 2019-11-22 2022-05-24 Pure Storage, Inc. Traffic-based detection of a security threat to a storage system
US11755751B2 (en) 2019-11-22 2023-09-12 Pure Storage, Inc. Modify access restrictions in response to a possible attack against data stored by a storage system
US11500788B2 (en) 2019-11-22 2022-11-15 Pure Storage, Inc. Logical address based authorization of operations with respect to a storage system
US11687418B2 (en) 2019-11-22 2023-06-27 Pure Storage, Inc. Automatic generation of recovery plans specific to individual storage elements
US11675898B2 (en) 2019-11-22 2023-06-13 Pure Storage, Inc. Recovery dataset management for security threat monitoring
US11651075B2 (en) 2019-11-22 2023-05-16 Pure Storage, Inc. Extensible attack monitoring by a storage system
US11657155B2 (en) 2019-11-22 2023-05-23 Pure Storage, Inc Snapshot delta metric based determination of a possible ransomware attack against data maintained by a storage system
US11645162B2 (en) 2019-11-22 2023-05-09 Pure Storage, Inc. Recovery point determination for data restoration in a storage system
US11520907B1 (en) 2019-11-22 2022-12-06 Pure Storage, Inc. Storage system snapshot retention based on encrypted data
US11720714B2 (en) 2019-11-22 2023-08-08 Pure Storage, Inc. Inter-I/O relationship based detection of a security threat to a storage system
US11941116B2 (en) 2019-11-22 2024-03-26 Pure Storage, Inc. Ransomware-based data protection parameter modification
CN116719484A (en) * 2023-08-09 2023-09-08 苏州浪潮智能科技有限公司 Method, device, equipment and medium for processing write data of disk array
CN117008845B (en) * 2023-09-27 2024-01-26 苏州元脑智能科技有限公司 Method and device for dividing read-write instruction, storage medium and electronic device

Family Cites Families (22)

* Cited by examiner, † Cited by third party
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
US4562576A (en) * 1982-08-14 1985-12-31 International Computers Limited Data storage apparatus
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
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
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
US4989206A (en) * 1988-06-28 1991-01-29 Storage Technology Corporation Disk drive memory
US4914656A (en) * 1988-06-28 1990-04-03 Storage Technology Corporation Disk drive memory
AU630635B2 (en) * 1988-11-14 1992-11-05 Emc Corporation Arrayed disk drive system and method
US5007053A (en) * 1988-11-30 1991-04-09 International Business Machines Corporation Method and apparatus for checksum address generation in a fail-safe modular memory
US5134619A (en) * 1990-04-06 1992-07-28 Sf2 Corporation Failure-tolerant mass storage system
US5088081A (en) * 1990-03-28 1992-02-11 Prime Computer, Inc. Method and apparatus for improved disk access
US5130992A (en) * 1990-04-16 1992-07-14 International Business Machines Corporaiton File-based redundant parity protection in a parallel computing system
JPH0731582B2 (en) * 1990-06-21 1995-04-10 インターナショナル・ビジネス・マシーンズ・コーポレイション Method and apparatus for recovering parity protected data

Also Published As

Publication number Publication date
US5390187A (en) 1995-02-14
EP0482819A2 (en) 1992-04-29
EP0482819B1 (en) 1998-09-30
DE69130279T2 (en) 1999-06-17
JP2959901B2 (en) 1999-10-06
US5208813A (en) 1993-05-04
EP0831400A2 (en) 1998-03-25
AU8590491A (en) 1992-05-07
DE69130279D1 (en) 1998-11-05
EP0831400A3 (en) 2000-10-11
JPH05143471A (en) 1993-06-11
EP0482819A3 (en) 1993-01-13

Similar Documents

Publication Publication Date Title
CA2053692A1 (en) On-line reconstruction of a failed redundant array system
KR100985444B1 (en) Data storage array
JP5923964B2 (en) Disk array device, control device, and program
JP3304115B2 (en) Configurable redundant array storage
JPWO2006123416A1 (en) Disk failure recovery method and disk array device
US6546499B1 (en) Redundant array of inexpensive platters (RAIP)
US7562281B2 (en) Autonomic parity exchange
TWI295021B (en) Storage system and method for handling bad storage device data therefor
Menon et al. Comparison of sparing alternatives for disk arrays
US20040123032A1 (en) Method for storing integrity metadata in redundant data layouts
TW200532449A (en) Efficient media scan operations for storage systems
JPH0736143B2 (en) Record update method, single-pass access guarantee method, and system
JPH06504863A (en) Storage array with copyback cache
TWI259355B (en) Method and apparatus for preservation of failure state in a read destructive memory
US20050283654A1 (en) Method and apparatus for decreasing failed disk reconstruction time in a raid data storage system
JPH03240123A (en) Array disk device
JP2006252328A (en) Disk array controller, storage system and disk array control method
TWI278745B (en) Raid consistency initialization method
CN106227463A (en) RAID model, reading and writing data and method for reconstructing thereof
CN104461373A (en) Method and device for processing data of RAID (redundant array of independent disks)
US11606442B2 (en) Subscription to edits of blockchain transaction
JPH0916343A (en) Disk drive system
JP2004326357A (en) Storage system with redundant block, as well as control device, control method, program and recording medium for the storage system
TWI272581B (en) Optical disk drive, optical disk, security control method for optical disk drive
JP2001156649A (en) Digital data coding processing circuit, coding processing method, and digital data recorder provided with coding processing circuit

Legal Events

Date Code Title Description
FZDE Discontinued