original in es Antonio Castro
es to en Miguel A Sepulveda
en to nl Guus Snijders
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.
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.
|
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.
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.
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 |
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 md3Ons 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.
In deze mode is het uiteindelijke doel om de voordelen van RAID0 en RAID1 te combineren. Data wordt georganizeerd met een mix ban beide methoden. De fysieke 1 tot N-1 worden georganizeerd in striping mode (RAID0) en de Nde slaat de pariteit op van de individuele bits, corresponderend met de blokken van 1 tot N-1. Als er een willekeurige disk faalt, is het mogelijk te herstellen door gebruik te maken van de pariteits info op de Nde schijf. Efficiëntie gedurende lees operaties is N-1 en tijdens schrijf operaties 1/2 (omdat het schrijven van een data block nu ook het schrijven naar de pariteits disk bevat. Om een beschadigde harde schijf te vervangen, hoeft alleenmaar de informatie opnieuw gelezen te worden en opnieuw geschreven te worden (er wordt gelezen van de pariteits disk maar er wordt geschreven naar de nieuwe disk).
|
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.
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/?] YNa 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.
-mdadd -mdrun -mdstop -mdopDeze 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 |
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 -aOp dit moment zou md0 moeten verschijnen als reeds geïnitialiseerd. Om deze te formatteren:
mke2fs /dev/md0En om deze te mounten
mkdir /mount/md0 mount /dev/md0 /mount/md0Als 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 /".
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/sdb2De 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.