Hvilken type RAID skal du bruge til dine servere?

tweak_dk_wd_green_dual_6_tb_raid_review_03
RAID eller "Redundant Array of Inexpensive Disks" er processen med at kombinere flere harddiske eller SSD'er parallelt som et logisk volume, hvilket gør arrayet mere modstandsdygtigt mod drevfejl. Der er mange typer RAID, og i denne guide sætter vi fokus på, hvilken du skal vælge.


Hvad er RAID?

Lad os sige, at du har to 1 TB harddiske. På en normal pc vil du sandsynligvis bare tilslutte dem begge og have 2 TB brugbar plads til at arbejde med. Men i et servermiljø er det faktisk bedre at tage den anden disk og bruge den som en sikkerhedskopi og danne en RAID-array. Dette kan gøres i realtid med en RAID-controller, der opretter forbindelse til drevene og administrerer RAID-arrayet for dig. Der er også software RAID, men de fleste servere kommer med en dedikeret RAID-controller.

Uden RAID er der ingen redundans - dog er dette faktisk ikke det største problem. Data bør aldrig rigtig gå tabt med en god sikkerhedskopieringsstrategi, men hvis du mister et drev, kan serveren opleve en alvorlig nedetid, mens den gendannes. Dette er ikke acceptabelt i et servermiljø og er meget, meget værre end et midlertidigt tab af data.

RAID-arrays kan genopbygges, mens de stadig kan bruges, og når et drev fejler, behøver du ikke gendanne fra sikkerhedskopier. Dette er den primære fordel ved RAID-arrays. Servere er designet til aldrig at gå ned, også under vedligeholdelse i mange tilfælde - Du kan bogstaveligt talt frakoble et drev fra en produktions-webserver, og den vil fortsætte med at virke, omend med lavere ydelse.

På mange måder er RAID meget bedre end et stort drev. Et stort 8 TB-drev er ikke så robust som fem 2 TB-drev, der er konfigureret i RAID 5. 

RAID fungerer bedst med identiske drev. Det kan arbejde med forskellige drev, men du vil typisk være begrænset til hastigheden og pladsen på det langsomste og mindste drev.

Hele denne diskussion gælder typisk kun, hvis du selv administrerer en server, som en hjemme-NAS, der indeholder mange harddiske; i dette tilfælde er den type RAID, du vælger, meget vigtig. Hvis du lejer virtuelle servere fra AWS eller dybest set en hvilken som helst anden udbyder, konfigureres RAID normalt for dig af hostingfirmaet, da dette kontrolniveau fjernes fra dig.

En note, inden vi begynder: De tal, der bruges til at udpege forskellige RAID-niveauer, betyder ikke rigtig noget. RAID 5 er ikke fem gange bedre end RAID 1. Der er andre RAID-niveauer, som RAID 2, 3 og 4, men de bruges ikke i praksis og er ikke værd at gennemgå.

JBOD

Dette er ikke teknisk set en RAID-konfiguration, men det er værd at nævne her. JBOD står teknisk for “Joint Batch Of Disks”, men det omtales ofte som “just a bunch of disks,”, da det dybest set er, hvad det er. JBOD sammenkæder simpelthen diske sammen til en stor disk. Dette tilbyder ingen præstationsforbedring og har ingen redundans.

JBOD.png

Mange RAID-controllere tilbyder JBOD-mode. Du burde ikke bruge den, medmindre du har fået en masse diske i forskellige størrelser og vil forbinde dem sammen.

RAID 0

Data i RAID 0 er delt på tværs af flere drev; Hvis du f.eks. vil læse en fil fra RAID-arrayet, læser du fra flere drev parallelt, hvilket gør RAID 0 meget hurtigere end et enkelt drev.

Der er dog ingen spejling, paritet eller anden redundansmekanisme, så hvis et enkelt drev fejler, mister du alle data på hele arrayet. På grund af dette bruges RAID 0, når hastighed betyder noget, og redundans er ikke nødvendig.

1200px-RAID_0.svg.png

På en måde kan man betegne RAID 0, som du slet ikke har et RAID. Det giver dig fordelen ved at have alle drev i en enkelt, stor volume samt meget højere adgangshastigheder. En enkelt drevfejl kan imidlertid være katastrofalt for dataene i arrayet, så du bør aldrig køre RAID 0 uden en sikkerhedskopieringsløsning, medmindre dataene er beregnet til at være 100% virtuel.

RAID 0 maksimerer også kapaciteten, da der ikke bruges plads til redundans. Hvis du har to 1 TB-diske, vil array størrelse være 2 TB. RAID 0 er dog begrænset til den laveste diskstørrelse ud af array - hvis du prøver at RAID 0 et 2 TB-drev med et 1 TB-drev, har du kun 2 TB plads, hvor 1 TB spildes helt.

RAID 0 med SSD'er er almindeligt, og mere fornuftigt i betragtning af SSD'er har lavere fejlfrekvens. Dette er en almindelig opsætning i high end,da hastighed betyder mere end redundans.

RAID 1

RAID 1 er en anden grundlæggende type RAID. Ligesom med RAID 0 bruger RAID 1 to eller flere diske, men snarere end at spejle data på tværs af dem, spejles dataene fra det første drev til det andet (og eventuelle yderligere drev i arrayet). Hvis du har to drev, bruges det ene udelukkende som en slags backup i realtid og halverer din samlede lagerkapacitet i processen. Hvis et af drevene går fløjten, kan du fortsætte med at læse fra det andet drev og genopbygge arrayet ved at udskifte det defekte drev.

Dette har nogle fordele ved læseevne, da to drev kan bruges, men da det læser de samme data fra hvert drev, er det ofte ikke så godt som RAID 0. Skrivefunktionen vil være begrænset til hastigheden på det langsomste drev.

1200px-RAID_1.svg.png

RAID 1 er dit eneste praktiske valg, hvis du har to drev og ikke har råd til en drevfejl ved udtagning af dine data. Det er dog ikke det mest effektive, da du cutter din lagerkapacitet, og det koster dobbelt så meget som sammenligneligt enkelt drev.

Redundansen i en server er dog meget mere værd end prisen på et enkelt drev. Hvis du bare har brug for en grundlæggende drevopsætning, skal du vælge et simpel RAID 1 array. De fleste RAID-controllere vil som standard være RAID 1, når der tilsluttes to drev.


RAID 5

RAID 5 er, hvor tingene begynder at blive interessante. I stedet for at duplikere data som RAID 1, bruger RAID 5 en meget mere effektiv metode - paritet.

Paritet er en form for fejlkontrol, ligesom en hash, men meget enklere. Grundlæggende omtales det som du har 7 bits data, som du vil sende til nogen, og du vil sikre dig, at de kommer frem helt intakt. Hvis 1 bit går tabt i transmission, vil de ikke have nogen måde at finde ud af det. Løsningen er at tælle alle positive bits op; Hvis der er et lige antal, vil pariteten være 0. Hvis der er et ulige antal, vil pariteten være 1. Du tilføjer dette til de data, du sender, og når personen i den anden ende modtager det, beregner de pariteten selv. Hvis der er opstået en fejl, og en smule er blevet tabt (selv paritetsbiten i sig selv), ved den anden person det, og anmoder om, at dataene sendes på ny. Hvis der er to fejl i en enkelt transmission, bryder dette system ned, men det er ikke så almindeligt.

x83bc2750.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.P1YihVZ78Q.jpg

I stedet for at gemme kopier af dataene (hvilket ville være som at sende en besked to gange), lagrer RAID 5 blot en paritetsbit. Du kan forestille dig det som RAID 0 med redundans - det kræver mindst tre drev. Alle undtagen et af drevene bruges som et almindelig RAID 0 array, men det sidste drev bruges til paritet. Hvis et af drevene står af, kan du udføre paritetsberegningen omvendt for at gendanne alle data på et af drevene (selvom dette er en langvarig og omfattende operation).

I praksis bruger RAID 5 ikke et dedikeret drev til paritet, da det er hurtigere at stripper paritets-bitene på tværs af alle drevene, men du kan tænke på det på denne måde, når du beregner, hvor meget plads et RAID 5-array giver dig. Tilføj hovedsageligt alt undtagen et af dine drev, og det er hvor meget plads du har. RAID 5 bliver mere pladseffektiv med flere drev - tre drev er 66% effektivitet, men 10 drev er 90% effektivitet. Dette sænker omkostningerne dramatisk i forhold til RAID 1.

RAID 5 er imidlertid ikke uden ulemper. Da paritet skal beregnes, hver gang drevet skrives til, reduceres skriveydelsen. Problemet forstærkes, når man tager højde for det faktum, at vending af en enkelt bit i et drev kræver, at alle drev skal læses fra for at genberegne paritet for den blok. I praksis, hvis RAID 0 giver skalering med ydeevne med n drev, giver RAID 5 n - 1 ydeevne til skriveoperationer. Men med et stort antal, er problemet ikke så slemt.

Ligegyldigt hvor mange drev du har, kan du kun overleve 1 drevfejl. Dette ser ikke ud til at være et stort problem, da fejl er usædvanlige, og det er usandsynligt, at du oplever to af dem på samme tid, men array-genopbygninger kan være meget intensive på dine drev - du læser dybest set hver eneste bit data fra hver enkelt, på det tidspunkt, hvor de er mest sårbare. Så hvis en af dem fejler, er der en større chance for, at et andet drev også fejler.

RAID 5 skal være din valgmulighed, hvis du har tre drev, da RAID 1 ville være spild af plads. Hvis du har 4 drev, er det stadig sandsynligvis den bedste løsning, men de andre to løsninger på denne liste er også tilgængelige for dig.


RAID 6

RAID 6 er som RAID 5, undtagen “paritetsdisken” er spejlet. Dette gør det muligt for dit array at overleve to drevfejl. Skriveydelsen er dog værre ved n - 2, og du vil selvfølgelig have mindre plads.

7956959_2.jpg

Der er virkelig ikke meget mere at sige om det. Hvis du har et stort udvalg af drev (6, 8 eller mere), kan du overveje RAID 6 for dens ekstra redundans. RAID 6 alene opfylder den første del af backup-strategien 3-2-1 - gem mindst tre kopier af dine data med to sikkerhedskopier på forskellige medier, med mindst en af dem placeret offsite. RAID 6 kan overleve to drevfejl, hvilket gør den funktionelt den samme som RAID 1 med tre diske (minus genopbygningstider).

I praksis vil RAID 6 næsten aldrig opleve en total array-fejl, især hvis du tilføjer flere paritetsskiver i ligningen. Dette kombineret med sikkerhedskopier og kopier i andre datacentre, er hvordan arkivtjenester som AWS Glacier og Backblaze opnår 99.999999999% holdbarhed.


RAID 10 (1+0)

RAID 10 er teknisk set en form for nestet RAID, som er en kompliceret ting i sig selv. Grundlæggende, hvis du har fire drev og ikke ønsker at bruge RAID 5 eller 6, er dine eneste andre muligheder RAID 0 og 1, som begge har deres egne problemer. I stedet for opdeler du disse drev i halvdelen, laver to RAID 1-arrays og tager derefter disse arrays og bruger dem til at oprette et stort RAID 0-array. RAID 10 kræver mindst fire drev og kræver også et ens antal samlede drev.

xb2238d6a.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.0-eXvEDh_E.png

Dette giver dig alle fordelene ved RAID 1 og RAID 0 uden mange ulemper - hurtige læsehastigheder, hurtige skrivehastigheder, høj redundans og let genopbygning, mens du stadig kan bruge halvdelen af den samlede plads på alle dine drev. RAID 10 er faktisk mere fleksibel end RAID 1. I diagrammet ovenfor kunne Disk 1 og Disk 3 fejle, og arrayet kan stadig være genopbygget (dog hvis både Disk 0 og Disk 1 fejler, kan dette array ikke genoprettes).

RAID 10 er et meget almindeligt RAID-niveau for servere. 


RAID 50/60

RAID 50/60 er dybest set to RAID 5 eller 6 arrays i RAID 0. Dette forbedrer ydeevnen ligesom RAID 10, og vigtigst af alt forbedrer skriveydelsen, da læsning fra de andre drev når beregningen af paritet er hurtigere.

Det kræver mindst seks drev (otte i tilfælde af RAID 60), og da der er separat RAID 5-arrays, har du brug for yderligere paritetsdrev, hvilket gør det mindre pladseffektivt, men lidt mere robust. Generelt er RAID 50 dybest set en mere performant version af RAID 5.


Image credit:

Wikipedia