[LinuxFocus-icon]
<--  | Home  | Map  | Index  | Zoek

Nieuws | Archieven | Links | Over LF
[Antonio Castro]
door Antonio Castro
<acastro/at/ctv.es>

Over de auteur:

Ik ben computerwetenschapper en heb de mogelijkheid gehad om verschillende Unix smaken te werken. Verder heb ik diverse taken gehad, van software ontwerp tot systeem beheer.



Vertaald naar het Nederlands door:
Guus Snijders <ghs/at/linuxfocus.org>

Inhoud:

 

Installatie en Configuratie van een RAID Systeem

[Ilustratie]

Kort:

RAID (Redundant Array of Inexpensive Disks) bestaat uit een serie systemen die een aantal harde schijven organiseren in een enkele entiteit, welke zich gedraagt als een enkele virtuele schijf en de verschillende schijven parallel laat werken, om zo de prestaties te verhogen en de informatie te beveiligen crashes.

ERKENNINGEN
Ik zal volledige LinuxFocus team altijd dankbaar zijn, welke vaak hebben samengewerkt vanaf niet-zichtbare posities om het aspect van het artikel te verbeteren en te vertalen. Op dit punt moet ik een persoon in het bijzonder noemen. Dit artikel zou niet mogelijk zijn geweest zonder de hulp van Luis Colorado, wie, in email-na-email, zijn kennis van RAID systemen met me gedeeld heeft. Dank je Luis.

_________________ _________________ _________________

 

Introductie

Er zijn een aantal hardware oplossingen op de markt, meestal erg duur en vaak gebaseerd op het gebruik van bepaalde controller kaarten.

Er zijn ook andere RAID implementaties, gebaseerd op kaarten die de gebruiker toestaan om meerdere identieke schijven te beheren als een RAID, dankzij de simpele Z80 chip en onboard software. Met deze specificaties is het niet mogelijk om te claimen dat deze oplossing een betere efficiëntie zou opleveren dan een Linux gebaseerde oplossing.

Implementaties gebaseerd op controller kaarten zijn duur en dwingen de gebruiker ook om alleen identieke harde schijven te gebruiken. Aan de andere kant zou Linux, met de juiste drivers voor sommige van deze kaarten, al zou niet een erg interessante oplossing zijn daar Linux een oplossing biedt welke gebaseerd is op vrije software, even efficiënt kunnen zijn en zo de gebruiker de dure hardware alternatieven kunnen besparen.

...daar Linux een oplossing biedt welke gebaseerd is op vrije software, even efficiënt kunnen zijn en zo de gebruiker de dure alternatieven hardware kunnen besparen.
Het RAID systeem voor Linux dat we hier zullen bespreken, is geïmplenteerd op kernel niveau en staat ons toe om van verschillende types schijven te gebruiken. De schijven kunnen een mix zijn van IDE en SCSI schijven. Zelfs schijven van verschillende groottes zijn mogelijk, maar in dit geval is het nodig om partities van gelijke grootte te gebruiken op iedere disk. De meest voorkomende oplossing is om verschillende schijven van gelijke grootte te gebruiken, maar desalniettemin kan het nooit kwaad aan te geven dat Linux veel meer flexibiliteit toestaat. Zo kan bijvoorbeeld een deel van de disk gebruikt kunnen worden voor een RAID en een ander deel als een onafhankelijke partitie. Dit is vaak geen goed idee omdat het gebruik van een onafhankelijke partitie de snelheid van het RAID systeem omlaag kan halen. In andere woorden, hoewel Linux het mogelijk maakt verschillende schijven te gebruiken is het altijd beter, indien mogelijk, om gebruik te maken van schijven van dezelfde capaciteit en karakteristieken. Een andere belangrijke overweging is dat SCSI technologie gelijktijdige toegang tot verschillende apparaten aan dezelfde bus toestaat.

Als contrast, het gebruik van meerdere schijf stations op de dezelfde IDE controller kaart, betekend dat deze apparaten nooit simultaan benaderd kunnen worden. Het is jammer dat SCSI schijven nog altijd aanmerkelijk duurder zijn dan de IDE tegenhangers. De software oplossing voor een Linux RAID systeem is vergelijkbaar efficiïnt (indien niet beter) dan die gebaseerd op speciale kaarten en natuurlijk goedkoper en flexibeler in termen van de te gebruiken schijven.

Waar in een SCSI bus een apparaat data kan dumpen op de bus terwijl een andere deze inleest, op een IDE interface wordt eerst de ene disk benaderd, daarna de andere.

 

Schijven selecteren voor een RAID

Het gebruik van erg snelle schijven om een RAID op te zetten is niet altijd gerechtvaardigd. Ze zijn altijd duurder. Harde schijven zijn snel omdat hun koppen efficiënter zijn en zich erg snel boven de juiste sector kunnen plaatsen. Het springen tussen sectoren zijn de operaties die het de meeste tijd kosten op een harde schijf, maar onder Linux, in tegenstelling tot MS-DOS bijvoorbeeld, wordt deze operatie geoptimaliseerd tot een dergelijk niveau dat de data niet wordt benaderd in dezelfde volgorde als dat het wordt opgevraagd, in plaats daarvan wordt het opgevraagt op een intelligente manier die de aanvragen onthoud en deze in de meest efficiënte manier benaderd. Er zijn andere strategiën die de performance verhogen door de schijf toegang te minimaliseren, zoals geheugen cache. De rotatie snelheid van de schijven ontloopt mekaar meestal niet veel, maar er kunnen verschillen zijn met betrekking tot de dichtheid en het aantal koppen die zeker van invloed zijn op de doorvoer snelheid. Deze parameter moeten we overwegen. Kort gezegd, ons advies is om indien mogelijk, SCSI schijven te gebruiken, of vergelijkbare karakteristieken en niet per se duur. De doorvoersnelheid van het RAID systeem zal bereikt worden dor het gelijktijdige gebruik en niet door de individuele snelheden.

Het is nodig om ook te onthouden dat het Linux systeem moet starten van een niet-RAID disk, liefst een van kleine grootte, zodat de root partitie relatief vrij is.

 

Karakteristieken van een SCSI systeem

Bij het aanschaffen van harde schijven kunnen veel twijfels optreden. Hierom is het een goed idee om iets meer over de belangrijkste karakteristieken te vertellen.

Naam NumBits NumDev MB/s Connector Max Kabel Lengte
SCSI-1 8 7 5 50 pins LowDens 6 mts
SCSI-2
(alias) Fast scsi, o Narrow scsi
8 7 10 50 pins HighDens 3 mts
SCSI-3
(alias) Ultra, o Fast20
8 7 20 50 pins HighDens 3 mts
Ultra Wide
(alias) Fast scsi-3
16 15 40 68 pins HighDens 1.5 mts
Ultra2 16 15 80 68 pins HighDens 12 mts

Een RAID kan gebouwd worden uit meerdere disk partities maar het uiteindelijke resultaat is een enkele logische partitie met een een enkele disk waarin we geen additionele partities kunnen maken. De naam van dit logische device is metadisk.

IDE apparaten hebben device bestanden onder Linux, genaamd /dev/hd..., SCSI apparaten corresponderen met /dev/sd..., en voor metadisks is er /dev/md.. na het compileren van de kernel met de opties die we later zullen specificeren. Er zouden 4 dergelijke devices aanwezig moeten zijn:

brw-rw----   1 root     disk       9,   0 may 28  1997 md0
brw-rw----   1 root     disk       9,   1 may 28  1997 md1
brw-rw----   1 root     disk       9,   2 may 28  1997 md2
brw-rw----   1 root     disk       9,   3 may 28  1997 md3
Ons eerste doel zou moeten zijn om de toegangstijd voor de swap zo kort mogelijk te maken, voor dat doel is het het beste om een kleine metadisk te maken op de RAID, of om de swap op de klassieke manier te verdelen over alle fysieke schijven. Als er meerdere swap partities worden gebruikt, ieder op een eigen fysieke disk, zorgt het swap systeem van Linux voor het verdelen van het gebruik onder deze, waardoor de RAID onnodig zou zijn in dit scenario.
 

Soorten RAID

... we gaan ons concentreren op RAID0 omdat deze de meest efficiënte is ondanks zijn gebrek aan redundantie ...
Er zijn andere types van gemixte RAID gebaseerd op RAID1 en sommige andere soorten RAID. ER zijn ook pogingen om disk compressie mogelijk te maken op de fysieke schijven, maar niet zonder controverse omdat het niet duidelijk is wat het voordeel van compressie zou zijn. Het is vrijwel zeker dat er in de toekomst meer voorstellen komen. Op het moment gaan we ons concentreren op RAID0 omdat deze de meest efficiënte is ondanks zijn gebrek aan redundantie om de gebruiker te beschermen tegen schijf uitval. Als de RAID bestaat uit een paar disks (3 of 4) heeft de redundantie hoge kosten (er gaat een derde of een vierde van de capaciteit verloren). Redundantie op een RAID beschermt de data tegen schijf fouten, maar niet tegen het per ongeluk verwijderen van informatie, het hebben van een RAID bespaard ons dus geen backups. Aan de andere kant, als er meerdere schijven worden gebruikt, (5 of meer) is er verspilling van capaciteit lager en heeft de redundantie dus lagere kosten. Sommige 16-bit SCSI kaarten staan tot 15 apparaten toe. In dit geval is RAID5 zeker een aanrader.

Als de lezer geen identieke schijven kan gebruiken, hou er dan rekening mee dat RAID systemen altijd werken met identieke blokken informatie. Het is mogelijk dat de traagste harde schijven worden geforceerd harder te werken, maar in ieder geval zal de RAID configuratie nog steeds een betere performance opleveren. De verbeterde performance op een juist geconfigureerd RAID systeem is werkelijk spectaculair. Het is bijna waar om te zeggen dat de performance lineair toeneemt met het aantal harde schijven in de RAID.

 

Een RAID0 installatie

Hier zullen we beschrijven hoe een RAID0 opgezet kan worden. Als de lezer een andere RAID dan deze wil installeren op een 2.0.xx kernel, is het nodig om een speciale patch op te halen.

RAID0 heeft geen redundantie, maar onthoud dat het wordt aangeraden om alleen redundantie toe te passen bij een groot aantal schijven, om niet te veel schijf capaciteit te verspillen. Een volledige schijf gebruiken als we er slechts drie hebben is verspilling. Verder beschermt dit niet tegen alle mogelijke oorzaken van verlies van informatie, maar alleen tegen die die te maken hebben met het verslijten van de harde schijven, een redelijk zeldzaam verschijnsel. Als er 10 harde schijven beschikbaar zijn, is het gebruik van 1 voor pariteits controle geen groot gemis. Op een RAID0 betekend een fout op een willekeurige schijf dat alle informatie op alle schijven onbereikbaar is geworden, daarom bevelen we een goed backup beleid aan.

De eerste stap is om de juiste drivers aan de kernel toe te voegen. Voor Linux 2.0.xx RAID, zijn de opties:

   Multiple devices driver support (CONFIG_BLK_DEV_MD) [Y/n/?] Y
      Linear (append) mode (CONFIG_MD_LINEAR) [Y/m/n/?] Y
      RAID-0 (striping) mode (CONFIG_MD_STRIPED) [Y/m/n/?] Y
Na het booten van het systeem met de nieuwe kernel, zal het bestand mdstat in /proc voorkomen, welke de status bevat van de vier (dit is de standaard waarde) apparaten, aangemaakt als md0, md1, md2 en md3. Daar nog geen van alle geïntitaliseerd is, zouden deze moeten verschijnen als inactief en zou er nog geen een bruikbaar moeten zijn.
De vier nieuwe apparaten worden gemanaged met de volgende 'mdutils'
        -mdadd
        -mdrun
        -mdstop
        -mdop
Deze kunnen worden gedownload vanaf: sweet-smoke.ufr-info-p7.ibp.fr /pub/Linux, maar zijn vaak deel van veel distributies.

Voor kernel 2.1.62 en hoger is er een ander pakket, genaamd 'RAIDtools', welke gebruik kan maken van een RAID0, RAID4 of RAID5.

In het volgende voorbeeld illustreren we hoe een RAID0 metadisk met twee schijven wordt gedefiniëerd, namelijk /dev/sdb1 en /dev/sdc1.

meta-device RAID Mode Disk Partitie 1 Disk Partitie 1
/dev/md0 linear /dev/sdb1 /dev/sdc1
Er kunnen meer partities worden toegevoegd.

Als de metadisk eenmaal geformatteerd is, zou deze niet meer veranderd moeten worden, of alle informatie er in opgeslagen zou verloren gaan.

mdadd -a
mdrun -a
Op dit moment zou md0 moeten verschijnen als reeds geïnitialiseerd. Om deze te formatteren:
mke2fs /dev/md0
En om deze te mounten
mkdir /mount/md0
mount /dev/md0 /mount/md0
Als alles tot zover werkte, kan de lezer nu verder gaan en deze commando's opnemen in de boot scripts zodat de volgende keer als het systeem herstart, de RAID0 metadisk automatisch gemount wordt. Om het RAID0 systeem automatisch te mounten, is het eerst nodig om een entry toe te voegen aan het /etc/fstab bestand toe te voegen, en ook het uitvoeren van de commando's 'mdadd -a' en 'mdrun -a' vanuit een script bestand, alvorens te mounten. Op een Debian distributie, zou een goede plaats voor deze commando's het /etc/init.d/checkroot.sh script bestand zijn, vlak voor de regels die het root bestandssysteem lees/schrijf mouten, dus voor de regel "mount -n -o remount,rw /".

Voorbeeld:

Dit is de configuratie die ik op dit moment gebruik. Ik heb een 6.3 Gb IDE schijf, een 4.2 Gb SCSI schijf en een andere van 2 Gb.

HD 6.3Gb IDE

/ /bigTemp + /incoming swap 2Gb(RAID) hda4

HD 4.2Gb SCSI

C: D: swap 2Gb(RAID) sda4

HD 2Gb SCSI

swap 2Gb(RAID) sdb2
#######</etc/fstab>################################################
# <file system> <mount point>  <type>  <options>     <dump>  <pass>
/dev/hda1       /               ext2    defaults       0       1
/dev/hda2       /mnt/hda2       ext2    defaults       0       2
/dev/md0        /mnt/md0        ext2    defaults       0       2
proc            /proc           proc    defaults       0       2
/dev/hda3        none           swap    sw,pri=10
/dev/sdb1        none           swap    sw,pri=10
/dev/sda3        none           swap    sw,pri=10
#########</etc/mdtab>#######################################
# <meta-device> <RAID-mode> <DskPart1> <DskPart1> <DskPart1>
/dev/md0         RAID0,8k    /dev/hda4  /dev/sda4 /dev/sdb2
De root partitie is geplaatst op de 6 Gb schijf als hda1 en er is een grote partitie, gebruikt voor de downloads vanaf Internet, opslag van CD images, enz. Deze partitie wordt niet echt intensief gebruikt. De 4 Gb schijf heeft geen partities die de efficiëntie echt benadelen, daar deze MSDOS partities vrijwel nooit gebruikt worden vanuit Linux. De 2 Gb schijf is bijna volledig gebruikt voor het RAID systeem. Er is een kleine ruimte gereserveerd op iedere schijf als swap ruimte.

We zouden moeten proberen om alle schijven (partities) in de RAID van ongeveer dezelfde grootte te maken, omdat grote verschillen de performance van de RAID omlaag brengen. Kleine verschillen zijn niet significant. We gebruiken alle beschikbare ruimte zodat de data over alle de schijven verdeeld is, en de overblijvende data blijft vrij.

Meerdere IDE schijven op een enkele RAID mounten is niet erg efficiënt, maar het mounten van een IDE met verschillende SCSI schijven werkt erg goed. IDE schijven staan geen gelijktijdige toegang toe, terwijl SCSI schijven dit wel doen.

 

Voor meer informatie:


<--, Terug naar de titelpagina van dit nummer

Site onderhouden door het LinuxFocus editors team
© Antonio Castro, FDL
LinuxFocus.org
Vertaling info:
es --> -- : Antonio Castro <acastro/at/ctv.es>
es --> en: Miguel A Sepulveda <Miguel.Sepulveda/at/disney.com>
en --> nl: Guus Snijders <ghs/at/linuxfocus.org>

2004-03-03, generated by lfparser version 2.43