RAID systeem
RAID is een afkorting van redundant array of independent disks en is de benaming voor een set methodieken voor fysieke data-opslag op harde schijven.
Gegevens worden over meerdere schijven verdeeld, op meer dan één schijf opgeslagen, of beide, ten behoeve van snelheidswinst en/of beveiliging tegen gegevensverlies.
Voor videobewerking en 3D animatie wordt meestal RAID-0 (striping) gebruikt door de toename van snelheid. Servers gebruiken Raid1 (mirroring) of Raid5 voor betrouwbaarheid.
RAID is ontstaan in een tijdperk waarin goedkope harde schijven erg onbetrouwbaar waren. 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.
De duurste schijven met SAS-interface worden meestal gebruikt in een RAID-array. Grotere opslagvolumes bekomt men eerder met SATA schijven.
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-niveaus
RAID-niveau | Minimum aantal 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 |
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.
Populaire RAID-niveaus
RAID-0 (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 (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 door de hoge kost per MB, biedt dit wel een erg betrouwbare oplossing als het om veiligheid van 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.
RAID 5
RAID-5 is de meestgebruikte variant in servers. Doordat er pariteitblokken worden opgeslagen op alle schijven in de array, kan er bij verlies van data worden berekend wat het verloren datablok was. Bij RAID-5 mag er één schijf uitvallen. RAID-6 is vrijwel gelijk aan RAID-5, maar dan mogen er zelfs twee schijven kapot gaan.
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.
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.