1 april 2010

Redundant opslaan van gegevens

image for Redundant opslaan van gegevens image

In zijn originele opzet betekent RAID ‘Redundant Array of Inexpensive Disks’, in het Nederlands ‘Redundante Verzameling van Goedkope Schijven’. RAID is voor het eerst beschreven in 1987 door David A. Patterson, Garth A. Gibson en Randy Katz aan de Universiteit van Berkeley en is sindsdien in diverse soorten uitgegroeid tot de ruggengraat van gegevensopslag op magnetische opslagmedia. In de praktijk komt de techniek erop neer dat een verzameling harde schijven gegroepeerd in een behuizing hangen en middels een speciale controller (aanstuurmechanisme) aangestuurd worden.

In zijn originele opzet betekent RAID ‘Redundant Array of Inexpensive Disks’, in het Nederlands ‘Redundante Verzameling van Goedkope Schijven’. RAID is voor het eerst beschreven in 1987 door David A. Patterson, Garth A. Gibson en Randy Katz aan de Universiteit van Berkeley en is sindsdien in diverse soorten uitgegroeid tot de ruggengraat van gegevensopslag op magnetische opslagmedia. In de praktijk komt de techniek erop neer dat een verzameling harde schijven gegroepeerd in een behuizing hangen en middels een speciale controller (aanstuurmechanisme) aangestuurd worden.

Waarom RAID?
Het hele doel achter RAID staat al vermeld in de naam: redundantie. Voor zowel de overheid als voor het bedrijfsleven zijn gegevens van vitaal belang en dienen deze altijd beschikbaar te zijn. Neem de Gemeentelijke Basis Administratie als voorbeeld. Als deze wordt opgeslagen zonder gebruik te maken van RAID en de harde schijf waarop deze gegevens, gaat defect, dan zal de gehele administratie verloren zijn, of als er back-ups van zijn alleen de wijzigingen sinds de laatste back-up. Zou deze server RAID gebruiken, dan was er slechts één schijf defect en kunnen de gegevens nog prima worden teruggelezen en gewijzigd worden op de andere schijf/schijven.

Werking van RAID
De spil in een RAID-opstelling is de RAID-controller. Dit kan een speciale hardware zijn of een onderdeel van het besturingssysteem (software). In de praktijk wordt in servers bijna altijd gebruik gemaakt van een hardware-opstelling. In software RAID is het besturingssysteem verantwoordelijk voor het verwerken van welke data waar naartoe geschreven worden, wat resulteert in een hogere processor-belasting en een tragere server. Bij een hardware-oplossing is er een speciale chip aanwezig die deze taken overneemt van de processor, wat resulteert in een sneller werkend systeem.

Er zijn diverse soorten RAID, welke soms bestaan uit een combinatie van technieken die ervoor zorgen dat de opstelling optimaal zijn werk doet. Uiteindelijk is RAID in drie combinaties te onderscheiden: gestreept, gespiegeld en foutcorrectie (soms ook wel ‘pariteit’ genoemd).

De gestreepte opstelling
Een gestreepte RAID-opstelling knipt gegevens op in meerdere blokken en schrijft deze weg over de diverse schijven. Neem bijvoorbeeld het tellen van stemmen bij verkiezingen. Stel er zijn vijfhonderd stemmen uitgebracht en hiervan moet een uitslag worden gemaakt. In plaats van alle stemmen door één persoon te laten tellen is het vele malen efficiënter om dit met tien mensen te doen. Ieder persoon hoeft hierdoor maar vijftig stemmen te tellen, wat dus significant sneller is dan alles door één persoon te laten doen.
Deze RAID-opstelling heeft snelheid als doel. Door de gegevens op te knippen in kleinere blokken en over meerdere harde schijven uit te splitsen kan de computer veel sneller gegevens lezen en schrijven. Dit systeem heeft echter één groot nadeel: Zodra een van de schijven defect raakt, is de gehele opstelling ook defect. Er ontbreekt namelijk een deel van de gegevens, waardoor het origineel niet meer kan worden gereconstrueerd.

De gespiegelde opstelling
Het tweede type RAID is die van gegevens spiegelen. Hierbij worden de gegevens niet opgeknipt, maar dubbel weggeschreven over twee schijven welke identiek van grootte zijn. Alle gegevens die naar de RAID-controller worden gestuurd, worden tegelijk naar alle schijven weggeschreven. Mocht een van de schijven defect gaan dan zijn er nog de andere schijven waar de gegevens op staan. De systeembeheerder kan vervolgens de kapotte schijf in de server vervangen en de RAID-opstelling ‘herbouwen’. Hierbij krijgt de controller de opdracht om de nieuwe schijf te synchroniseren met de andere schijven. Deze opstelling heeft naast het bevorderen van de beschikbaarheid van data ook een kleine winst met het uitlezen van gegevens. De gegevens staan over meerdere schijven, waardoor de controller een gelijk deel van iedere schijf kan lezen om de gegevens vervolgens aan elkaar te plakken. Nadeel is echter wel dat er een verlies in snelheid optreedt met schrijven, omdat de controller moet wachten op het ‘OK’-teken van alle schijven voordat deze verder kan gaan.

Pariteit
De laatste en derde soort van RAID is de pariteit. Deze aanpak vereist een minimum van drie harde schijven (maar meer is mogelijk). De controller berekent van alle gegevens een pariteitsblok en schrijft deze weg. In geval van een defecte schijf, kunnen aan de hand van het pariteitsblok de originele gegevens worden teruggerekend.
Het werkt als volgt. Ieder blok gegevens dat naar de RAIDcontroller wordt gestuurd, wordt opgeknipt in losse bytes. Vervolgens wordt met elke twee bytes een eXclusive OR (XOR)-operatie gedaan. Deze XOR-operatie werkt door individuele bits met elkaar te vergelijken en als exact een van de twee bits een 1 is, dan is de uitkomst 1, en anders 0. De XORoperatie levert een extra byte op die wordt weggeschreven met de gegevens.

Figuur 1
Figuur 1. Terugrekenen met de XOR-operatie

Mocht er nu een van de drie schijven defect gaan, dan is er geen probleem want de data zijn nog volledig beschikbaar op de twee andere schijven. Hoe? Door terug te rekenen! XORoperaties zijn namelijk altijd terug te leiden als twee van de drie bytes beschikbaar zijn.

Dit kan het beste worden gedemonstreerd met een simpele wiskundige berekening. Stel, we schrijven twee bytes naar onze RAID-opstelling, namelijk 105 en 200. De controller berekent hiervan de XOR-waarde, welke 161 is, en schrijft alle drie de waarden vervolgens naar de schijven toe. Stel nu, de schijf waarop de waarde 200 is geschreven gaat defect. Dan blijft de RAID-array bij het lezen van de gegevens over met: 105 XOR … = 161. Door nu de 161 in te vullen op de plaats van de onbekende waarde kan de controller direct het antwoord zien: 105 XOR 161 = 200. Dit is te controleren door op Windows XP de rekenmachine te starten en deze via beeld op wetenschappelijk te zetten (Vista/Windows 7 vereist de ‘programmeurs’- instelling).

De integriteit van de gegevens is nu alsnog gewaarborgd doordat er kan worden teruggerekend; alleen is het uitlezen een stuk trager omdat er constant gerekend dient te worden. Zodra de defecte schijf is vervangen, kan de controller de data opnieuw opbouwen door dit berekenproces te herhalen voor alle gegevens en de juiste bytes te schrijven naar de nieuwe schijf.

Toegepaste RAID-niveaus
Nu we de drie RAID-soorten hebben gezien, kunnen we gaan kijken naar de toegepaste RAID-niveaus. Er zijn namelijk diverse soorten RAID-niveaus, welke soms enkel een van de soorten gebruiken, of een combinatie ervan.

Zo is er RAID 0, welke puur gebruik maakt van strepen over twee harde schijven. Deze manier is erg geschikt voor video- en beeldbewerking doordat er snel gelezen/geschreven kan worden. RAID 1 is spiegelen over twee schijven heen, welke zich uitstekend leent voor servers.

RAID 5 is in principe het RAID-niveau dat commercieel veel wordt gebruikt in het bedrijfsleven en door de overheid. RAID- 5 maakt gebruikt van interleaved parity, een methodiek die de gegevens en de pariteitsblokken roterend over de schijven wegschrijft. Dit betekent dat de pariteitsblokken over alle schijven gelijkmatig worden verdeeld. Door de pariteit over diverse schijven uit te spreiden blijft de snelheid waarmee gewerkt kan worden optimaal. Verder is er nog RAID 1+0, een combinatie van RAID 1 en 0 welke minimaal vier schijven vereist: twee voor de eerste helft gespiegelde gegevens en twee voor de andere gespiegelde helft. RAID 0+1 doet in feite hetzelfde, maar spreidt de data over twee schijven en de gestreepte schijven worden vervolgens gespiegeld. Naast RAID 0, 1 en 5 zijn er nog een aantal obscure varianten. Deze behandel ik niet, omdat ze commercieel (bijna) niet gebruikt worden door complexiteit, hoge kosten of traagheid. Voor RAID 2 is bijvoorbeeld geen enkele commerciële leverancier te vinden.

Extra veiligheid
Veel moderne RAID-opstellingen hebben een extra ingebouwde veiligheid in de vorm van een spare. Deze spare is een harde schijf die niet gebruikt wordt door de opstelling zolang de opstelling ‘gezond’ is. Zodra een van de schijven defect is, kan de controller hierop inspringen door de defecte schijf uit te schakelen en nieuwe schijf in te zetten en te synchroniseren. Dit wordt in veel moderne RAID-opstellingen gebruikt, omdat een nieuwe schijf bestellen vaak tijd kost en met deze opstelling de defecte schijf vervangen kan worden op een tijdstip dat het goed uitkomt.

Conclusie
Het leven in een wereld zonder RAID is voor zowel het bedrijfsleven als de overheid ondenkbaar. Harde schijven zijn stukken elektronica die met grote regelmaat stuk gaan en het verlies van productiviteit en zelfs van bedrijfskritische gegevens kan catastrofaal zijn. RAID zorgt voor een veilige en efficiënte opslag van gegevens en zorgt ervoor dat deze bijna altijd beschikbaar zijn. Toch is RAID niet het ultieme antwoord op alle problemen gerelateerd aan dataopslag. Er kunnen bijvoorbeeld meerdere schijven tegelijk defect gaan in een opstelling of er kan brand uitbreken, waardoor de volledige server verloren kan gaan. Toch kan RAID wel degelijk een hogere continuïteit waarborgen dan systemen zonder en dient deze techniek vooral als eerste verdediging tegen dataverlies. Aanvullende methodes zijn nodig om in te springen op situaties die met RAID niet voorkomen kunnen worden.

 

patrick@toolmaker.nl

Patrick van der Willik is zelfstandig ondernemer onder de naam ‘Toolmaker’.