Redundant array of independent disks
RAID is een afkorting van redundant array of independent disks, ook bekend als redundant array of inexpensive disks (of drives) en is de benaming voor een set methodieken voor fysieke data-opslag op harde schijven waarbij de gegevens over meer schijven verdeeld worden, op meer dan één schijf worden opgeslagen, of beide, ten behoeve van snelheidswinst en/of beveiliging tegen gegevensverlies. Voor gamers wordt meestal RAID-0 gebruikt door de toename van snelheid. Servers gebruiken Raid1 of Raid5 voor betrouwbaarheid.
RAID is ontstaan in een tijdperk waarin goedkope harde schijven erg onbetrouwbaar waren. Men moest dieper in de buidel tasten om schijven te kunnen betalen die wél betrouwbaar (genoeg) geacht werden. Informatici van de Universiteit van Californië op Berkeley kregen daarom het idee om deze goedkope schijven te combineren in een redundante array, zodat óók goedkope schijven een betrouwbaar opslagmedium konden vormen. Tegenwoordig zijn schijven bedoeld voor de consumentenmarkt stukken betrouwbaarder geworden en beperkt de vraag naar meer betrouwbaarheid en meer snelheid zich niet alleen tot deze markt. Integendeel: de duurste schijven met SCSI of SAS-interface worden meestal gebruikt in een RAID-array. Om deze reden is de oorspronkelijke betekenis I in de afkorting RAID gewijzigd van inexpensive (goedkoop) in independent (onafhankelijk).
Zonder RAID
Bij normaal gebruik wordt iedere harde schijf door het besturingssysteem benaderd als een afzonderlijke eenheid. Onder Unix en Unixachtige besturingssystemen als Linux en BSD, waar het bestandssysteem als een logisch geheel aan de gebruiker wordt getoond, zijn de gebruikte schijfeenheden herkenbaar in de zogeheten koppelpunten (mount points).
Bij gebruik zonder RAID wordt door de schijfcontroller de data naar de schijf gestuurd die de gebruiker aangeeft, waarbij de data achter elkaar naar deze schijf geschreven worden. Alle data komen terecht op één en dezelfde fysieke schijf.
RAID
In een RAID-systeem worden meerdere harde schijven gecombineerd tot een groep van schijven (disk array). De in het systeem ingebouwde software zorgt ervoor dat de computer logisch gezien maar één schijf ziet. In de achtergrond verdeelt de controller de gegevens over de betrokken schijven. Het RAID-systeem kan uit een willekeurig aantal schijven bestaan. Door deze combinatie van schijven kan een systeem sneller en/of data-veiliger werken dan een enkele schijf.
RAID-controllers
RAID is mogelijk met uitsluitend software, waarbij de aansturing van de schijven door het besturingssysteem van de computer verzorgd wordt. Softwarematige RAID is mogelijk onder Linux, en ook zijn de eenvoudiger RAID-configuraties al mogelijk met desktopuitvoeringen van Windows NT, Windows 2000, Windows XP en Mac OS X. De serveruitvoeringen hiervan kunnen ook de complexere varianten aan. Deze oplossing kost voor de rekenintensieve RAID-varianten wel relatief veel CPU-tijd.
Een efficiëntere oplossing is de hardware-assisted software-RAID, waarbij een speciale processor de pariteitsberekeningen (zie hieronder bij RAID-5) op zich neemt, maar het uitvoeren van RAID zelf nog door software gedaan wordt.
Er zijn ook intelligente RAID-controllers die alle functies met een eigen ingebouwde processor verzorgen, en waarbij de systeem-CPU geen extra werk hoeft te verrichten.
Een bezwaar van een hardwarematige RAID-controller is dat bij een defect aan de controller alle schijven ontoegankelijk worden. Afhankelijk van de gebruikte controller en/of het RAID-niveau kan het moeilijk worden om de gegevens op de schijven weer te benaderen als geen vervangende controller van gelijk type meer voorhanden is.
Er bestaan verschillende RAID-niveaus met ieder een eigen toepassingsgebied.
RAID-niveaus
RAID-niveau | Minimumaantal schijven | Pluspunten | Minpunten |
---|---|---|---|
JBOD | 2 | Eenvoudige opzet, eenvoudig in te voeren | Geen foutcorrectie: bij een defect gaat de data op de defecte schijf verloren |
0 | 2 | Snelste doorvoer van data voor alle data, eenvoudige opzet, eenvoudig in te voeren | Geen foutcorrectie: bij een defect op een van de schijven gaat de data op alle schijven verloren |
1 | 2 | Volledige foutcorrectie, eenvoudige opzet, goede leesprestaties | Relatief duur |
2 | 3 | Foutcorrectie, ook voor schijven zonder ingebouwd correctiesysteem | Geen praktische toepassing |
3 | 3 | Snelle doorvoer voor aaneengesloten data, efficiënte foutcorrectie | Kan niet gelijktijdig schrijven en lezen |
4 | 3 | Goede leesprestaties, efficiënte foutcorrectie | Langzaam schrijven |
5 | 3 | Goede leesprestaties, efficiënte foutcorrectie, beste voor netwerktoepassingen | Schrijfsnelheid vanwege pariteitsberekeningen afhankelijk van de gebruikte processor of controller |
6 | 4 | Robuuste foutcorrectie, tolereert twee falende schijven | Nog rekenintensiever dan RAID-5: controller mogelijk duurder |
Combinaties van RAID komen ook voor, zo wordt RAID-1 en RAID-0 gecombineerd tot RAID-10 (waarvoor minimaal 4 schijven nodig zijn) of RAID-0+1, RAID-3 en RAID-0 tot RAID-30, RAID-5 en RAID-0 tot RAID-50 en RAID-5 en RAID-1 tot RAID-15 of RAID-51.
JBOD
JBOD (van 'Just a Bunch Of Disks') is het simpelweg achter elkaar plakken van een aantal schijven waarbij de totale grootte de som is van de ruimte op alle schijven. Dit is op zich geen RAID maar wordt wel ondersteund door veel RAID-controllers.
JBOD is ten opzichte van RAID-0 'veiliger', als een schijf stukgaat in een JBOD-set blijft de data op de andere schijven onaangetast. Bij RAID-0 is de hele set verbroken en is alle data verloren.
RAID-0
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
RAID-0 (ook bekend als striping); een aantal schijven wordt in een array geplaatst en benaderd als één grote schijf. De gegevens worden in kleine (enige tientallen kilobyte) blokken (ook wel 'stripes' genoemd) verdeeld en op de verschillende schijven weggeschreven. Hiermee wordt een snelheidsverhoging bereikt omdat meerdere schijven tegelijkertijd gegevens kunnen ophalen of wegschrijven. Theoretisch zou de snelheidsverhoging recht evenredig kunnen zijn met het aantal schijven, in de praktijk wordt dit echter meestal niet bereikt.
RAID-0 biedt geen foutcorrectie. De term 'redundant' is hier dan eigenlijk ook niet van toepassing. Als één schijf uitvalt dan zijn alle gegevens van de hele array verloren.
De (qua capaciteit) kleinste schijf in de array bepaalt de omvang van alle RAID-systemen. Als bijvoorbeeld een 50GB-, 100GB- en een 250GB-schijf in een RAID-0-array worden gezet, dan zal de controller aan de pc een schijf aanbieden van 150 GB (50 GB × 3). Hierbij gaat bij veel controllers dus effectief 250 GB verloren. Sommige controllers kunnen echter de overblijvende ruimte nog gebruiken voor een andere RAID-set.
Software RAID-0 wordt ook wel aangeduid als Volume Sets. Hierbij is echter niet altijd sprake van striping op blokniveau, maar worden mappen en de daarin aanwezige bestanden door het filesysteem op die schijf binnen de Volume Set geplaatst die op dat moment de meeste vrije ruimte heeft.
RAID-1
RAID-1 (ook bekend als mirroring) slaat de data twee (of meer) keren op verschillende schijven op.
Als een schijf uitvalt zal het computersysteem hier geen hinder van hebben en gewoon blijven werken. De controller zal dan alle I/O laten lopen over de andere schijf (of schijven). De controller zal de gebruiker natuurlijk wel een hint geven dat er iets fout is - maar het systeem werkt gewoon door. Als de defecte schijf wordt vervangen zal de inhoud van de goede schijf teruggeschreven worden op de nieuwe.
Lezen gebeurt hier theoretisch op dubbele snelheid, maar schrijven gaat even snel als op 1 enkele schijf.
Hoewel RAID-1 niet de meest efficiënte manier van databeveiliging is en voor conventionele SCSI RAID-systemen een tamelijk dure oplossing is, biedt dit voor IDE-oplossingen een simpele maar erg betrouwbare oplossing als het om veiligheid van de data gaat. Als er 1-op-1-mirroring toegepast wordt met twee 1TB-schijven, dan zal het systeem maar één schijf ter grootte van 1 TB zien.
Ook hier is de kleinste schijf bepalend voor de uiteindelijke opslagcapaciteit van het gehele RAID-systeem. Voor de pc is de logische schijf zo groot als de kleinste schijf uit de set.
NB: Bij gebruik van RAID-1 met twee schijven als Master en Slave op één enkele IDE-poort kan het gebeuren dat de defecte schijf de hele IDE-bus ophangt, en dat de andere schijf daardoor ook niet meer bruikbaar is. Hoewel het systeem wel weer zal werken zodra de defecte schijf verwijderd is biedt dit niet de betrouwbaarheid die van RAID-1 verwacht mag worden.
Naast de mirroringversie van RAID-1 is er ook een duplexingversie. Waar bij mirroring de schijven alle aangesloten zijn op een enkele controller, worden de schijven bij duplexing aangesloten op verschillende controllers.
RAID-2
RAID-2 gebruikt parallel datatransport (zie ook striping bij RAID-0) aangevuld met een zogenaamde Hamming Error Correction Code (ECC), bedoeld voor schijven die geen eigen foutcorrectie hebben.
Alle moderne harde schijven hebben tegenwoordig wel een ingebouwde foutcorrectie. Omdat bij gebruik van een Hamming-code extra bits worden toegevoegd, heeft men meer dan één schijf nodig voor de opslag van deze code. Deze RAID-variant heeft geen voordelen ten opzichte van RAID-3.
RAID-3
RAID-3 werkt bijna hetzelfde als RAID-2 met het verschil dat men een aparte schijf gebruikt voor het opslaan van een berekende pariteit voor de Hamming Error Correct Code. Ook hier wordt parallel gewerkt zoals bij striping in RAID-0. De pariteit wordt per setje bytes (A1, A2 en A3) berekend en opgeslagen.
Als een disk uitvalt, kan men terug berekenen wat de verloren byte had moeten zijn. Door deze pariteitsdata kan een RAID-3-systeem echter vaak niet gelijktijdig schrijven en lezen.
RAID-4
RAID-4 is identiek aan RAID-3 maar nu wordt de pariteit niet per byte maar per datablok (stripe) berekend. Een dergelijk datablok is bijvoorbeeld 32 of 64 kilobyte groot. Hierdoor kan gelijktijdig geschreven en gelezen worden mits er geen overlapping plaatsvindt. Wel is het zo dat de schijf die voor de pariteit gebruikt wordt, voor iedere schrijfactie aangesproken moet worden en dus een snelheidsbeperkende factor is.
RAID-5
RAID 5 werkt identiek aan RAID-4, met het verschil dat de pariteitblokken niet op een enkele schijf opgeslagen worden maar verdeeld over de schijven in de array. Hierdoor geldt het nadeel van de pariteitsschijf die de snelheid beperkt dus niet meer. In de praktijk wordt RAID-5 dan ook vaak toegepast in tegenstelling tot de andere RAID-varianten met pariteit.
Voorbeeld van RAID-5-opslag over 4 schijven:
schijf1 | schijf2 | schijf3 | schijf4 | |
---|---|---|---|---|
stripe 1-4: | Data01 | Data02 | Data03 | Par 01,02,03 |
stripe 5-8: | Data04 | Data05 | Par 04,05,06 | Data06 |
stripe 9-12: | Data07 | Par 07,08,09 | Data08 | Data09 |
stripe 13-16: | Par 10,11,12 | Data10 | Data11 | Data12 |
stripe 17-20: | Data13 | Data14 | Data15 | Par 13,14,15 |
stripe 21-n: | ... | ... | ... | ... |
Voorbeeld pariteitsberekening RAID 5
De pariteitsberekening werkt vrij eenvoudig, alle te controleren bits van een set worden via een XOR-functie met elkaar gecombineerd. De XOR-functie kijkt in wezen alleen maar hoeveel bits er op 1 staan. Als het aantal bits met waarde 1 oneven is komt er een 1 te staan, als het aantal bits met waarde 1 even is komt er een 0 te staan. Het totaal aantal bits dat op 1 staat is dus altijd een even getal. Voor het bovenstaande voorbeeld zou de berekening bijvoorbeeld als volgt kunnen gebeuren voor de allereerste byte:
blok byte --------- -------- Data01 00101001 Data02 10010101 Data03 00101011 -------- -------- Par010203 10010111
Dus:
Kolom 1: 1 x 1, p(ariteit) = 1 Kolom 2: 0 x 1, p = 0 (nul is even) Kolom 3: 2 x 1, p = 0 Kolom 4: 1 x 1, p = 1 Kolom 5: 2 x 1, p = 0 Kolom 6: 1 x 1, p = 1 Kolom 7: 1 x 1, p = 1 Kolom 8: 3 x 1, p = 1
Bij wegvallen van een willekeurige schijf kan door nogmaals de XOR-functie toe te passen de verloren informatie gereconstrueerd worden, er is immers bekend dat het totaal aantal bits dat op 1 staat een even aantal moet zijn. Zolang de schijf kapot is zal dit per opgevraagd blok gebeuren, dit zal de snelheid negatief beïnvloeden. Als de schijf vervangen is zal de nieuwe schijf eenmalig blok voor blok geheel gereconstrueerd worden, dit wordt rebuilden genoemd. Als dit eenmaal klaar is, is de array weer compleet functioneel.
RAID-6
RAID 6 is te vergelijken met RAID-5 maar gebruikt twee pariteitsblokken die verdeeld worden over alle schijven. De effectief bruikbare ruimte neemt dan ook met twee schijven af. De pariteitsberekening is veel complexer dan voor RAID-5, en is alleen op een beperkt aantal RAID-controllers beschikbaar. Hiermee kunnen dan wel twee willekeurige schijven falen.
Combinaties
RAID-configuraties kunnen ook in combinaties voorkomen, waarmee sommige van de nadelen van specifieke oplossingen verminderd worden. Zo kunnen RAID-0 en 1 gecombineerd worden tot RAID-10 (zie afbeelding), waarmee met minimaal 4 schijven de snelheid van RAID-0 en de betrouwbaarheid van RAID-1 gecombineerd worden. Ook RAID 5 wordt gecombineerd met RAID-0 in RAID-50 voor extra snelheid, of met RAID-1 in RAID-51 voor extra betrouwbaarheid.
Hybride RAID
Sommige systemen ondersteunen ook hybride RAID-configuraties, waarbij de ruimte op schijven met verschillende groottes optimaal benut kan worden. Een combinatie van drie schijven van 2 TB en twee van 3 TB kan op deze manier voor de eerste 2 TB van elke schijf een RAID-5-set van 5 schijven vormen, de twee resterende stukken van 1 TB op de grotere schijven kunnen samen als RAID-1-set nog een TB extra opleveren.
schijf nummer: | 1 | 2 | 3 | 4 | 5 |
totale capaciteit schijf | 2 TB | 2 TB | 2 TB | 3 TB | 3 TB |
part 1 (2 TB) | 8 TB (uit RAID-5) | ||||
part 2 (1 TB) | geen | 1 TB (uit RAID-1) |
Speciale functies
Hot-spare
Veel RAID-controllers kunnen met een speciaal hiervoor geïnstalleerde "hot-spare"-schijf meteen beginnen met het reconstrueren van gegevens zodra een schijf uitvalt. Hiermee wordt de periode dat het systeem kwetsbaar is voor uitval van een tweede schijf zo kort mogelijk gehouden.
Realtime migratie en uitbreiding
Sommige RAID-controllers kunnen ook zonder verlies van gegevens en soms zelfs zonder te hoeven stoppen, migreren van het ene naar het andere RAID-niveau. Stel er is een RAID-controller met twee schijven in RAID-1, door het bijplaatsen van een extra schijf kan dan de effectieve capaciteit verdubbeld worden door er een RAID-5 set van te maken. Een bestaande RAID-5 set kan door bijplaatsen van extra schijven ook nog eens uitgebreid worden.