Bragt i computerworld d. 23/12 2016.
Som amatør-youtube’er er mit pladsbehov eksploderet og derfor er min gode gamle NAS, som jeg før har skrevet om løbet tør for plads.
Valget stod mellem en simpel opgradering af diske, og så en helt ny NAS. Ved udsigten til friskbrygget ny hardware var det ikke svært at lokke mig selv…
Den anden dag købte jeg derfor en ny NAS. Jeg er glad for QNAP, og derfor faldt valget atter på en QNAP model.
Jeg købte en TS-563, som er en 5-bay model med en ret potent quad-core CPU. Se unboxing og installation af 5*5 TB harddiske her, og jeg har efterfølgende opgraderet den til 16 GB RAM.
Hvad skal man med så megen RAM i en NAS? Virtualisering!
… og nu kommer vi til sagens kerne. Min gamle NAS havde 1TB diske forbundet i et RAID5 setup. Jeg valgte af gammel vane samme konfiguration med de nye 5 TB diske til min nye NAS, hvorefter en kollega gjorde mig opmærksom på at med de nye store HDD størrelser, så giver RAID 5 og RAID 6 i realiteten kun en falsk fornemmelse af sikkerhed.
Jeg må bekende, at jeg ikke lige havde skænket det en tanke, og efter at jeg har undersøgt sagen nærmere må jeg give min kollega ret! Det kunne være at der er andre derude, som heller ikke lige er opmærksom på dette, og derfor vil jeg lige beskrive problematikken.
For de nysgerrige: RAID = Redundant Array of Inexpensive Disks. Wikipedia har en god baggrundsartikel.
Først og fremmest er det vigtigt, at påpege, at RAID ikke kan være en erstatning for en backup! Derfor har jeg da også løbende foretaget (nogenlunde regelmæssig) backup af de vigtige data.
RAID kan derimod afhængig af konfiguration forbedre ydelsen, og minimere eller helt eliminere nedetid i forbindelse med fejl på en eller flere diske.
Jeg har brugt RAID 5, hvor data og en distribueret paritet fordeles over de fem diske, således at hvis en disk fejler vil RAID array’et kunne genopbygges med data fra de resterende fire diske. Prisen man betaler for denne beskyttelse er så at kapacitet, svarende til en hel disk i arrayet bliver dedikeret til paritet. I mit tilfælde går jeg altså fra 25 TB til 20 TB kapacitet.
Men får jeg egentlig den beskyttelse jeg “betaler for”?
Hvis en disk fejler, forudsætter en succesfuld genopbygning af array’et, at de resterende fire diske kan læses uden en eneste bitfejl. Og dette er en vigtig pointe! Hvis én eneste bit ud af de 160.000.000.000.000 bits læses forkert, er samtlige data på diskene tabt!
Sandsynligheden for at det sker kan vi beregne.
Hvis vi siger, at er sandsynligheden for at en bit bliver fejllæst, så kan vi udtrykke som sandsynligheden for at læsningen af en bit går godt.
For at genopbygge et RAID 5 array med N diske, á K terabytes, skal vi læse terabytes data. Omregnet til bits, , vil det sige at vi skal gennemlæse bits.
Sandsynligheden, for at genopbygningen af array’et sker uden bitfejl, kan nu udtrykkes som .
Termen i harddisk sammenhæng er URE (Unrecoverable Read Error), og URE for mine harddiske er [1] og dermed kan beregnes til . Med andre ord er der en sandsynlighed for at genopbygningen af mit RAID array vil fejle!!
Av for den lede!
Det skal retfærdigvis siges, at denne beregning er worst-case, da vi i det ovenstående antager at bitfejl er uniformt fordelt over såvel harddiskene, som tid. Det er der ikke nødvendigvis belæg for at antage.
Det er vigtigt, at huske, at URE er en statistisk term. Det, der dog taler for ovenstående beregning er, at mine harddiske (og det er nok gældende for de fleste) er samme model, og da de er købt sammen er der stor sandsynlighed for at de også kommer fra samme produktionsbatch. I et RAID 5 setup bliver de iøvrigt belastet 100% ens ved skrivninger/læsninger, så det er ikke en urimelig antagelse at når en disk begynder at fejle, så er der ret stor sandsynlighed for at de andre diske også kan begynde fejle.
Så spørgsmålet jeg må stille mig selv er: “Når sandsynligheden for at mit RAID 5 setup overhovedet vil have en nytteeffekt er mindre end sandsynligheden for at kaste en sekser i første terningkast, er det så overhovedet prisen værd?”
For RAID 6 er sandsynligheden for at en genopbygning fejler lidt bedre, men i realiteten ikke signifikant: . Grunden til dette er, at et RAID 6 array har to distribuerede pariteter. Men dermed betaler man så også den dobbelte pris i tabt kapacitet, så jeg synes egentlig ikke det står mål med fordelen.
Så min anbefaling er: Hvis dine harddiske er større end 1 TB, så giver det ikke mening at benytte RAID 5. Er de større end 2 TB, giver det heller ikke mening at bruge RAID 6.
Jamen hvad skal jeg så gøre?
Man kunne bare have hver disk som et separat volume (= ingen RAID overhovedet), men det er ufleksibelt og giver pladsspild, så jeg vil have ét volumen med den samlede diskkapacitet og så laver jeg dedikerede shares oven på det. Derved udnytter jeg pladsen optimalt.
Så hvis vi lige genbesøger de forskellige RAID varianter, har vi RAID0 som den eneste RAID-variant uden overhead. Der er ingen redundans, men data spredes over alle diske i array’et, hvilket øger skrive/læsehastigheden. Denne er en god kandidat for mig.
RAID 1, 1+0, 2, 3, 4, 5, 6 benytter alle redundante data i større eller mindre omfang og tilbyder dermed en vis beskyttelse mod nedetid ved diskfejl, men som beskrevet ovenfor er der forholdsvis stor sandsynlighed for at data alligevel kan mistes i tilfælde af disknedbrud.
Dernæst findes der en række RAID varianter som mest af alt er marketing BS: RAID10, 50, 51, etc. De er alle variationer over de ovenstående grund-varianter.
Jeg har valgt at køre mine diske i et RAID 0 setup, hvor der ikke er nogen redundans men stadig en hastighedsgevinst. Alternativt kunne man vælge JBOD (Just a Bunch Of Disks), men så får man ikke performance fordelen. RAID 0 kræver dog, at alle diske er samme størrelse, hvor de kan være forskellige i et JBOD setup.
Backup har jeg hele tiden kørt, og det gør jeg selvfølgelig fortsat i mit nye setup.
Sluttelig lige et surt opstød til QNAP: Hvorfor giver de ikke en advarsel i deres GUI når brugeren under installationen vælger et setup med så lille sandsynlighed for at virke? Noget i retning af “Kære bruger. Med de installerede harddisk størrelser, er sandsynligheden for at array’et kan genopbygges kun X%. Er du sikker på du vil vælge denne konfiguration?”. Det synes jeg de burde.
[1] Datasheet for HGST Deskstar NAS
Mister du ikke bare en 64KB blok for hver bit der ikke kan genskabes?
Dette kunne være flere filer men ikke alle filer. Så sagen er som jeg ser det ikke en alt eller intet beskyttelse men mere et generelt niveau af sikkerhed for dine filer
Hej Jens,
Det var også min forventning, men folk sagde at det ikke nødvendigvis er tilfældet. Derfor undersøgte jeg sagen nærmere. Hvis du kigger på hvordan md (som er linux’s software-raid) virker (se f.eks. http://www.unix.com/man-page/all/4/md/), så kan du finde denne passus under recovery:
In kernels prior to about 2.6.15, a read error would cause the same effect as a write
error. In later kernels, a read-error will instead cause md to attempt a recovery by
overwriting the bad block. i.e. it will find the correct data from elsewhere, write it
over the block that failed, and then try to read it back again. If either the write or
the re-read fail, md will treat the error the same way that a write error is treated, and
will fail the whole device.
… så hvis en blok data ikke kan læses, og ikke kan ‘genlæses’, så vil hele devicet blive dømt fail. Hvis det sker under recovery af et RAID5 hvor en disk allerede er fejlet, så er du på skideren, for så er alle de andre data på devicet også utilgængelige.
Med RAID 0 får du godt nok en hastighedsfordel fremfor JBOD, men samtidig en forøget risiko: hvis en enkelt af diskene fejler er alt data i arrayet tabt. Er den ekstra hastighed så vigtig for dig?
Er problemet lige så stort i RAID 0? Jeg er klar over at kun halvdelen af din faktiske diskplads er tilgængelig. Men jeg har altid betragtet dette setup som et alternativ til at lave backup, da diskene hele tiden spejles.
Problemet er, at du har din backup i samme fysiske enhed. Hvad nu hvis strømforsyningen brænder af? Et muligt fejlmode ved en strømforsyning er, at den sender overspænding ud i apparatet. Derved vil alle dine diske jo dø på samme tid.
Steen,
Hvis det er ZDnet’s artikler (http://www.zdnet.com/article/why-raid-5-stops-working-in-2009/, http://www.zdnet.com/article/why-raid-6-stops-working-in-2019/, http://www.zdnet.com/article/has-raid5-stopped-working/) din kollega refererede til, så er det blevet debunk’et siden da i et par omgange.
For det andet så er beregningen for RAID6 ikke korrekt: din beregning gælder kun for den specifikke stripe-blok som er blevet ramt af den første fejl. Rammes to forskellige stripe-blokke, er der fortsat redundans til rådighed.
Der ud over bør Rigtige Nørder(TM) køre med et checksumming filsystem ala ZFS. Her er al metadata checksummet op igennem systemet, og det kan derfor ikke blot fortælle dig at der har været en fejl, men hvilken disk og hvilke filer som var påvirket, men kan også genskrive evt korrupte data.
ZFS er ikke bare et filsystem, men håndterer også organiseringen af data & paritet på diskene (RAID delen). Derfor kan ZFS nøjes med kun at genbygge de aktive data og ikke hele den fysiske disk, i tilfælde af disk-crash.
Uanset hvilket type filsystem/RAID man benytter, er der dog en god pointe at tage med sig: det første man skal gøre når (ikke hvis) man løber ind i et problem, er at lave en fuld backup over på en/flere andre disk(e). Når man har en verificeret god backup, kan man gå igang med at skifte disk og genopbygge arrayet, da udskiftning & genopbygning af et RAID array kan fremprovokere fejl som bliver katastrofale.
QNAP og Synology tilbyder desværre ikke ZFS, så det kræver at man bygger sin egen NAS (læs: installerer en Linux distribution ala Ubuntu).