RAID

RAID er en betegnelse for en måde at kombinere tilgangen til flere lagermedier (typisk harddiske). 

Den oprindelige betydning af dette akronym (opfundet af David Patterson, Garth Gibson og Randy Katz, Berkeley 1988) var »Redundant Array of Inexpensive Disks« (på dansk: Redundant række af billige diske). Ideen var at man, ved at kombinere billige diske af ringere mekanisk kvalitet (konstrueret til PC-markedet), kunne opnå (eller overgå) den lave fejlrate og den høje ydeevne som normalt kun var tilgængelig ved brug af dyre diske konstrueret til mainframe  og supercomputere. 

I dag bliver RAID generelt fortolket som »Redundant Array of Independent Disks« (på dansk: Redundant række af uafhængige diske). 

Idéen bag er at sandsynligheden er ekstremt lav for at to uafhængige harddiske fejler på præcis samme tid, og derfor laves kopier af data på flere diske, hvormed der gives redundans for at en enkelt disk fejler totalt. Set fra almindelig software fremstår et RAID altid som en enkelt disk, selvom det fysisk består af flere diske.

Desuden kan visse af RAID algoritmerne, der også kaldes "RAID levels", benyttes til at forbedre visse aspekter af hastigheden hvormed diske kan tilgås. Det drejer sig navnlig om RAID level 1 og RAID level 0, hvoraf den sidste kun er egentlig RAID hvis den bruges i kombination (kaldet "nesting") med en anden RAID algoritme, idet RAID level 0 i sig selv faktisk forringer redundans.

Andre fejltyper 
Der kan opstå mange andre problemer end en total diskfejl. Det er vigtigt at man også tager hånd om disse, hvis man vil opnå at éns data er sikre.

Bitfejl 
RAID beskytter ikke per definition mod bitfejl på de enkelte diske. Nogle RAID-systemer beskytter dog mod dette ved at skanne med et givent interval på alle diske i systemet, og rekonstruere data i de sektorer hvor der ikke kan læses fra en disk pga en bitfejl. De rekonstruerede data skrives tilbage til den disk, der har fejlen. Disken véd at der er en fejl der hvor den lige har forsøgt at læse, og laver derfor en "remapping" af den dårlige sektor til et specielt "spare area" på disken.

Delvist skrevne data 
RAID beskytter ikke mod data fejl pga. strømnedbrud. Hvis strømmen går, kan en RAID skrivning nå nogle men ikke alle diske, eller en diske kan nå at skrive noget af en blok men ikke hele blokken til permanent lager. Nogle RAID systemer beskytter dog mod dette ved at benytte et Battery-Backed Write Cache. Alternativt kan man selv beskytte mod dette ved at benytte redundant strømforsyning og UPS i systemet.

Tab af redundans 
Når en disk fejler forringes redundansen, indtil der kun er en kopi af data tilbage i systemet. Det er derfor vigtigt at have en metode hvormed en person alarmeres, når en disk fejler totalt, så den pågældende disk kan udskiftes så hurtigt som muligt.

Standard niveauer 
Der findes et sæt standard "RAID levels" (på dansk: RAID-niveauer):

 RAID 0 (striping): Data fordeles skiftevis fra disk til disk. Kræver minimum 2 diske.
 Redundans: Når en enkelt disk fejler, fejler hele systemet. Redundansen forringes til 1 divideret med antallet af diske.
 Performance: Søgetiden er den samme som de underliggende diske. Overførselshastighed øges med en faktor svarende til antallet af underliggende diske, både ved læsning og skrivning.

 RAID 1 (mirroring): Data spejles på flere diske. Kræver minimum 2 diske.
 Redundans: Redundansen forøges med en faktor svarende til antallet af diske. To diske betyder eksempelvis dobbelt så høj redundans.
 Performance: Ved parallel tilgang øges søgetiden med en faktor svarende til antallet af brugte diske. Overførselshastigheden øges med en faktor svarende til antallet af diske, men kun for læsninger. Ved skrivninger gælder samme overførselshastighed som for de underliggende diske.

 RAID 0+1 (striping + mirroring): Kombination af de to ovenstående, hvor data først bliver skrevet skiftevis ud på 2 diske og disse så spejles på 2 andre diske. Kræver som minimum 4 diske; et lige antal diske. Rekonstruktion er en markant besværligere proces end for RAID 1+0, som i øvrigt giver samme fordele, derfor anbefales det ikke at bruge RAID 0+1.
 Redundans og performance er afhængigt af konfiguration, se redundans og performance for RAID 1 og RAID 0.

 RAID 1+0 (mirroring + striping): Data bliver først spejlet og derefter skiftevis fordelt ud på flere diske. Kræver minimum 4 diske; et lige antal diske. Benyttes ofte for at give alle redundans- og performancefordelene fra RAID 1, og yderligere vinde bedre hastighed ved skrivning fra RAID 0.
 Redundans og performance: se ovenfor. Ved at putte flere diske i hvert mirror øges faktoren af fordelene fra RAID 1. Ved at indsætte flere mirrors i stripen øges den forbedrede skrivehastighed fra RAID level 0.

 RAID 2 Data fordeles på bitniveau eller i meget små blokke på flere diske, og en "Hamming-kode" udregnes og gemmes på en eller flere paritetsdiske. Kræver som minimum 3 diske.

 RAID 3 og RAID 4 (striping med dedikeret paritet): Som RAID 0, men med en disk som er dedikeret til hhv. paritets-bit (RAID 3) eller paritets-blok (RAID 4). Pariteten anvendes ved data-genskabelse ved nedbrud i én disk. Kræver minimum 3 diske.

 RAID 5 (striping med distribueret paritet): Som RAID 4, men med distribueret paritetsblok. Igen kan data genskabes ved nedbrud af én disk. Kræver minimum 3 diske for at fungere og for at have nogen relevans sammenlignet med RAID level 1.
 Redundans: Forbedring svarende til 1 divideret med antallet af diske.
 Performance: Søgetid er den samme som den langsommeste af de underliggende diske. Overførselshastighed ved læsning er den samme som summen af de underliggende diske minus én disk, og lidt mere ved læsning, da paritetsblokken ikke skal læses. Skrivning kan være markant langsommere, fordi der ved skrivninger er mindre end en hel RAID blok først skal læses datablokken og en paritetsblok, hvorefter der indføres nye data, paritet udregnes igen, hvorefter datablokken og paritetsblokken skrives tilbage. Specielt søgetiden ifbm. læsning af blokken kan forårsage et stort fald i performance.

 RAID 6 (striping med dobbelt distribueret paritet): Som RAID 5, men med dobbelt så mange paritetsblokke. Her er det muligt at genskabe data ved nedbrud af to diske. kræver minimum 4 diske.
 Redundans: Forbedring svarende til 2 divideret med antallet af diske.
 Performance: Som RAID level 5 minus én disk.

 RAID 10 kan være forskellige ting: Linux' RAID driver har et RAID10 modul, der minder om RAID 1+0, men som kan køre med blot 2 diske, kan bruge et ulige antal diske, kan fordele data på forskellige måder og har en lidt anden ydelsesprofil, bl.a. læsehastighed som RAID0. Desuden bruges RAID 10 ofte som benævnelse af fabrikanter som en marketing-gimmick, hvor der blot er tale om et alternativt navn for RAID level 1+0. Det samme gælder i øvrigt RAID50 vs. RAID 5+0 og RAID51 vs. RAID 5+1.

Mere information 
RAID kombinerer to eller flere fysiske hardiske til en enkelt logisk enhed ved enten at bruge speciel hardware eller software. Hardware-løsninger er ofte designet til at fremstå som en enkelt enhed og operativsystemet er sjældent klar over dets tekniske opbygning. Software-løsninger er ofte implementeret i et operativsystem, og vil også præsentere RAID-drevene som en enkelt enhed til de forskellige applikationer.

Der er tre koncepter i RAID: Mirroring, hvor data kopieres til mere end én disk i systemet; Striping, som splitter data over mere end én harddisk; Paritet, hvor redundante data bliver gemt for at tillade problemer at blive detekteret og forhåbentlig repareret (også kendt som fejltolerance). Forskellige RAID-niveauer bruger én eller flere af disse teknikker, afhængig af systemets krav. Formålet med at benytte RAID er at forbedre stabiliteten, vigtigt for at beskytte information der er kritisk for firmaer, f.eks. en database af kunders ordrer, eller hvor hastighed er vigtig, f.eks. et system der leverer Video On Demand TV-programmer til mange brugere.

Noter 

Systemprogrammer