diff --git a/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml index 29da9dc340..84863afe90 100644 --- a/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/geom/chapter.sgml @@ -1,445 +1,702 @@ Tom Rhodes Geschreven door Siebrand Mazeland Vertaald door GEOM: Modulair schijftransformatie framework Overzicht GEOM GEOM schijf framework GEOM Dit hoofdstuk beschrijft het gebruik van schijven in het GEOM framework in &os;. Hieronder vallen de belangrijkste RAID besturingsprogramma's die het framework gebruikt voor instellingen. In dit hoofdstuk wordt niet diepgaand beschreven hoe GEOM omgaat met I/O, het onderliggende subsysteem of code. Die informatie staat in het hulppagina voor &man.geom.4; en de verscheidene SEE ALSO referenties. Dit hoofdstuk is ook geen definitief stuk over het instellen van RAID. Alleen de door GEOM ondersteunde RAID-classificaties worden beschreven. Na het lezen van dit hoofdstuk weet de lezer: Welk type RAID-ondersteuning via GEOM beschikbaar is; Hoe de basisgereedschappen te gebruiken om de verschillende RAID-niveau's in te stellen, te onderhouden en te wijzigen; Hoe schijfapparaten via GEOM te spiegelen, aaneen te schakelen, te versleutelen en vanaf afstand schijven aan te sluiten; Hoe problemen op te lossen met schijven die via het GEOM framework zijn aangesloten. Veronderstelde voorkennis: Begrijpen hoe &os; omgaat met schijfapparaten (); Weten hoe een nieuwe &os; kernel in te stellen en te installeren (). GEOM inleiding GEOM staat toegang en controle toe op klassen, Master Boot Records, BSD labels, enzovoort, door gebruik te maken van diensten of de speciale bestanden in /dev. GEOM ondersteunt verschillende software RAID instellingen en biedt transparante toegang tot het besturingssysteem en de hulpprogramma's. Tom Rhodes Geschreven door Murray Stokely RAID0 - aaneengeschakeld GEOM aaneengeschakeld Aaneenschakelen is een methode die gebruikt wordt om meerdere schijven te combineren tot een enkele volume. In veel gevallen wordt dit gedaan met hardware controllers. Het GEOM subsysteem biedt softwareondersteuning voor RAID0, ook wel bekend als aaneenschakelen (disk striping). In een RAID0-systeem worden gegevens opgedeeld in blokken die verdeeld worden over de schijven in een reeks. In plaats van te hoeven wachten tot een systeem 256k naar één schijf heeft geschreven, kan een RAID0-systeem tegelijkertijd 64k naar vier verschillende schijven schrijven, waardoor superieure I/O prestaties worden bereikt. Deze prestaties kunnen nog verbeterd worden door meerdere schijfcontrollers te gebruiken. Iedere schijf in een RAID0-aaneenschakeling moet van dezelfde grootte zijn, omdat I/O-verzoeken altijd zijn opgebouwd uit precies gelijk over de schijven verdeelde verzoeken tot lezen of schrijven. Illustratie aaneengeschakelde schijven Ongeformatteerde ATA-schijven aaneenschakelen Laad de module geom_stripe: - &prompt.root; kldload geom_stripe.ko + &prompt.root; kldload geom_stripe - Zorg ervoor dat er een mountpunt beschikbaar is. Als dit + Zorg ervoor dat er een koppelpunt beschikbaar is. Als dit volume een rootpartitie wordt, gebruikt dan tijdelijk een - ander mountpunt zoals /mnt: &prompt.root; mkdir /mnt Stel de apparaatnamen voor de schijven vast die aaneen - worden geschakeld en maak het nieuwe apparaat aan. Het - volgende commando kan bijvoorbeeld gebruikt worden om twee + worden geschakeld en maak het nieuwe apparaat aan. Om twee ongebruikte, ongepartitioneerde ATA schijven aaneen te schakelen (/dev/ad2 - en /dev/ad3). + en /dev/ad3): &prompt.root; gstripe label -v st0 /dev/ad2 /dev/ad3 - Er moet een partitietabel gemaakt worden op het nieuwe - volume: + Schrijf een standaard label naar de nieuwe partitie, ook + wel bekend als een partitietabel en installeer de standaard + opstart code: &prompt.root; bsdlabel -wB /dev/stripe/st0 Dit proces hoort twee nieuwe apparaten gemaakt te hebben in de map /dev/stripe naast het apparaat st0, te weten st0a en - st0c. Nu kan er een bestandssysteem - gemaakt worden op het apparaat st0a - met newfs: + st0c. Vanaf nu kan er een + bestandssysteem op st0a worden + gezet met behulp van de newfs applicatie: &prompt.root; newfs -U /dev/stripe/st0a Na het uitvoeren van het bovenstaande commando rollen er veel getallen over het scherm en na een aantal seconden is het proces afgerond. Het volume is gereed en klaar om gemount te worden. - Mount een nieuw gemaakte aaneengeschakelde schijf handmatig - met het volgende commando: + Om de nieuwe aaneengeschakelde schijf handmatig te koppelen + moet het volgende gedaan worden: &prompt.root; mount /dev/stripe/st0a /mnt Om dit aaneengeschakelde bestandssysteem automatisch te mounten bij het opstarten kan de volume-informatie in /etc/fstab gezet worden: &prompt.root; echo "/dev/stripe/st0a /mnt ufs rw 2 2" \ >> /etc/fstab - Laadt de module geom ook automatisch + Laadt de module geom_stripe ook automatisch bij het initialiseren van een systeem door de volgende regel toe te voegen aan /boot/loader.conf: &prompt.root; echo 'geom_stripe_load="YES"' >> /boot/loader.conf RAID1 - spiegelen GEOM schijf spiegelen Spiegelen (mirroring) is een technologie die door veel bedrijven en thuisgebruikers wordt ingezet om gegevens te back-uppen zonder onderbrekingen. Als er een spiegel bestaat, betekent dat eenvoudigweg dat schijfB een kopie is van schijfA, of misschien zijn schijvenC+D een kopie van schijvenA+B. Los van de schijfinstellingen is het belangrijkste aspect dat de gegevens van de ene schijf of partitie worden gerepliceerd naar de andere. Later kunnen die gegevens eenvoudiger worden hersteld of geback-upped zonder dat dit leidt tot onderbrekingen in dienstverlening of toegang tot gegevens en schijven kunnen zelfs fysiek worden opgeslagen in een kluis. Begin met een systeem dat twee schijven heeft van gelijke grootte. Deze oefening stelt dat het directe toegang (&man.da.4;) SCSI-schijven zijn. Begin door &os; te installeren op de eerste schijf met twee partities. Een van de twee moet een swap-partitie zijn die twee keer de grootte van het RAM-geheugen is en de rest van de ruimte moet toegewezen worden aan het root bestandssysteem (/). Er zouden eigen partities - gemaakt kunnen worden voor andere mountpunten, maar hierdoor + gemaakt kunnen worden voor andere koppelpunten, maar hierdoor wordt de moeilijkheidsgraad wel tien keer hoger doordat de instellingen voor &man.bsdlabel.8; and &man.fdisk.8; handmatig gewijzigd moeten worden. Herstart en wacht tot het systeem volledig is geïnitialiseerd. Meld daarna aan als gebruiker root. Maak het apparaat /dev/mirror/gm en link het aan /dev/da1: &prompt.root; gmirror label -vnb round-robin gm0 /dev/da1 Het systeem hoort te antwoorden met: Metadata value stored on /dev/da1. Done. Initialiseer GEOM, waardoor de kernelmodule /boot/kernel/geom_mirror.ko wordt geladen: &prompt.root; gmirror load Dit commando hoort de apparaatnode gm0 gemaakt te hebben onder de map /dev/mirror. Installeer het algemene fdisk label en de bootcode op het nieuw aangemaakte apparaat gm0: &prompt.root; fdisk -vBI /dev/mirror/gm0 Installeer nu de algemene bsdlabel informatie: &prompt.root; bsdlabel -wB /dev/mirror/gm0s1 Als meerdere slices en partities bestaan, dienen de vlaggen voor de vorige twee commando's anders te zijn. Ze moeten gelijk zijn aan de groottes van de slice en partitie van de andere schijf. - Gebruik &man.newfs.8; om een standaard bestandssysteem te - maken op de apparaatnode gm0s1a: + Gebruik &man.newfs.8; om een standaard UFS + bestandssysteem te maken op de apparaatnode + gm0s1a: &prompt.root; newfs -U /dev/mirror/gm0s1a Door het bovenstaande commando spuugt een systeem wat informatie uit en wat getalletjes. Dat is goed. Bekijk de - uitvoer op het voorkomen van foutmeldingen en mount het apparaat - op het mountpunt /mnt: &prompt.root; mount /dev/mirror/gm0s1a /mnt Verplaats nu alle gegevens van de bootschijf naar dit nieuwe bestandssysteem. In dit voorbeeld worden &man.dump.8; en &man.restore.8; gebruikt, maar &man.dd.1; werkt ook in dit scenario. &prompt.root; dump -L -0 -f- / |(cd /mnt && restore -r -v -f-) Dit dient voor ieder bestandssysteem uitgevoerd te worden. Plaats eenvoudigweg het juiste bestandssysteem op de juiste plaats bij het uitvoeren van het voorgaande commando. Wijzig nu het gerepliceerde bestand /mnt/etc/fstab en verwijder het swapbestand of plaats er een commentaarteken voor. Het uitcommentariëren van de regel voor het swapbestand in fstab zorgt er waarschijnlijk voor dat het beschikbaar maken van swapruimte op een andere manier bewerkstelligd moet worden. In staat daarover meer informatie. Wijzig de informatie voor de andere bestandssystemen zodat ze de - nieuwe schijf gebruiken. Zie het volgende voorbeeld: + nieuwe schijf gebruiken, zie daarvoor het volgende voorbeeld: # Device Mountpoint FStype Options Dump Pass# #/dev/da0s2b none swap sw 0 0 /dev/mirror/gm0s1a / ufs rw 1 1 - Maak nu een bestand boot.conf op zowel + Maak nu een bestand boot.config aan op zowel de huidige als de nieuwe rootpartitie. Dit bestand helpt het BIOS van een systeem - op te starten van de juiste schijf: + op te starten vanaf de juiste schijf: &prompt.root; echo "1:da(1,a)/boot/loader" > /boot.config &prompt.root; echo "1:da(1,a)/boot/loader" > /mnt/boot.config Dit bestand dient op beide rootpartities te staan om zeker te stellen dat een systeem goed opstart. Als een systeem om welke reden dan ook niet kan lezen van de nieuwe rootpartitie, dan is een achtervang beschikbaar. - Voeg de volgende regel toe aan de nieuwe - /boot/loader.conf: + Zorg ervoor dat de geom_mirror.ko + module automatisch geladen wordt tijdens het opstarten van het + systeem: &prompt.root; echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf Hiermee wordt aan &man.loader.8; aangegeven dat de module geom_mirror.ko geladen moet worden tijdens de initialisatie van een systeem. Herstart het systeem: &prompt.root; shutdown -r now Als alles goed is gegaan, hoort het systeem gestart te zijn vanaf het apparaat gm0s1a en er moet een login prompt staan te wachten. Als er iets mis is gegaan, kijk dan in de volgende sectie voor het oplossen van problemen. Voeg nu de schijf da0 toe aan het apparaat gm0: &prompt.root; gmirror configure -a gm0 &prompt.root; gmirror insert gm0 /dev/da0 De vlag geeft &man.gmirror.8; aan dat automatische synchronisatie gebruikt moet worden, ofwel dat schrijfbewerkingen naar schijf automatisch gespiegeld moeten worden. In de hulppagina wordt beschreven hoe schijven herbouwd en vervangen kunnen worden, hoewel daar data wordt gebruikt in plaats van gm0. Problemen oplossen Systeem weigert op te starten Als een systeem opstart in een prompt dat op het volgende lijkt: ffs_mountroot: can't find rootvp Root mount failed: 6 mountroot> Herstart te machine met de aan/uit-schakelaar of met de resetknop. Selecteer in het bootmenu optie zes (6). Hierdoor komt een systeem in een &man.loader.8; prompt. Laad de kernelmodules handmatig: - OK? load geom_mirror.ko + OK? load geom_mirror OK? boot Als dit werkt werd de module om welke reden dan ook niet juist geladen. Zet de onderstaande regel in het bestand met kernelinstellingen en herbouw en installeer de kernel. options GEOM_MIRROR Hiermee moet het probleem opgelost zijn. + + + GEOM Gate netwerk apparaten + + GEOM ondersteund het op afstand gebruiken van apparaten, zoals + schijven, CD-ROMs, bestanden, etc. door het gebruik van de gate + applicaties. Dit is vergelijkbaar met NFS. + + Om te beginnen moet er een exports bestand gemaakt worden. + Dit bestand specificeert wie de geexporteerde bron mag benaderen + en welke rechten er op dat moment verleend worden. Bijvoorbeeld + om de vierde slice te exporteren van de eerste + SCSI schijf, moet het volgende in + /etc/gg.exports gezet worden: + + 192.168.1.0/24 RW /dev/da0s4d + + Dit staat alle machines in het prive netwerk toe om het + bestandssysteem op da0s4d te benaderen. + + Om dit apparaat te kunnen exporteren is het van belang dat de + schijf nog niet gekoppeld is en moet de &man.ggated.8; dienst + gestart worden. + + &prompt.root; ggated + + Om vervolgens het apparaat aan een client machine te koppelen + moet het volgende gedaan worden: + + &prompt.root; ggatec create -o rw 192.168.1.1 /dev/da0s4d +ggate0 +&prompt.root; mount /dev/ggate0 /mnt + + Vanaf dit moment kan de schijf benaderd worden via het + /mnt koppelpunt. + + + Let op, dit mislukt als de schijf reeds gekoppeld is op + de server machine of als deze reeds gekoppeld is aan een andere + machine op het netwerk. + + + Zodra het apparaat niet langer nodig is, kan het veilig + ontkoppeld worden met behulp van &man.umount.8; net zoals met + elke andere schijf. + + + + Het labelen van schijven + + GEOM + + Disk Labels + + Tijdens het initialiseren van het systeem zal de &os; kernel + apparaatnodes creeeren nadat het een apparaat gevonden heeft. + Deze manier om te zoeken naar apparaten levert wat problemen op + bijvoorbeeld wanneer er een nieuwe schijf wordt toegevoegd via + USB. Het is hoogst waarschijnlijk dat een + flash apparaat een apparaatnode krijgt van + da0, waarna de originele + da0 op schuift naar + da1. Dit levert problemen op als + bestandssystemen worden gekoppeld als ze gedefinieerd zijn in + /etc/fstab, dit kan zelfs ertoe leiden dat + het systeem niet opstart. + + Een mogelijke oplossing hiervoor is om de + SCSI schijven een vaste plek te geven op + een bepaalde volgorde, zodat zodra er een nieuwe schijf geplaatst + wordt, deze een ongebruikt apparaatnode toegewezen krijgt. Maar + wat als er USB apparaten zijn die de primaire + SCSI disk vervangt? Dit gebeurd omdat + USB apparaten meestal eerder gevonden worden + dan een SCSI kaart. Een oplossing hiervoor + is om de apparaten pas toe te voegen als het systeem reeds + gestart is, een andere methode kan zijn om alleen een enkele + ATA schijf te koppelen en nooit + SCSI schijven door middel van + /etc/fstab. + + Maar er is een betere oplossing beschikbaar. Door het gebruik + van glabel kunnen beheerders en gebruikers een + label toevoegen aan een schijf, en deze labels gebruiken in + /etc/fstab. Omdat glabel + het label bewaard in de laatste sector van de schijf, kan het + label bewaard blijven ook na een reboot en kan het + bestandssysteem altijd gekoppeld worden ongeacht welke apparaatnode + toegekend is aan het apparaat. + + + Uiteraard hoeft een label niet permanent te zijn, het + glabel programma kan zowel tijdelijke als + permanente labels aanmaken. Alleen een permanent label blijft + beschikbaar ook na een reboot. Zie de &man.glabel.8; handleiding + voor meer informatie over de verschillen tussen de + labeltypes. + + + + Label types en voorbeelden + + Er zijn twee type labels: een generiek label en een + tijdelijk label. Het verschil tussen de labels zit hem in + de automatische herkennen die gekoppeld zijn aan permanente + labels en het feit dat dit type label ook beschikbaar blijft + na een herstart van het systeem. Deze labels krijgen een + speciale directory toegewezen in + /dev, welke genoemd + wordt naar het bestandssysteem type. Bijvoorbeeld + UFS2 labels worden geplaatst in de + /dev/ufs2 directory. + + Een generiek label verdwijnt na een herstart van het systeem. + Deze labels worden gecreeerd in + /dev/label en zijn + perfect voor experimenten. + + + Permanente labels kunnen op het bestandssysteem gezet worden + door gebruik van het tunefs of + newfs commando. Om een permanent label te + schrijven voor een UFS2 bestandssysteem + zonder de huidige data te vernietigen: + + &prompt.root; tunefs -L home /dev/da3 + + + Als het bestandssyteem vol is kan dit leiden tot data + corruptie; echter als het bestandssysteem vol is zou het + hoofddoel moeten zijn om oude achtergebleven bestanden weg + te halen in plaats van het toevoegen van labels. + + + Er zou nu een label moeten bestaan in + /dev/ufs2, welke + toegevoegd kan worden aan het /etc/fstab + bestand: + + /dev/ufs2/home /home ufs rw 2 2 + + + Het bestandssysteem mag niet gekoppeld zijn op het moment + dat tunefs gebruikt wordt. + + + Nu kan het bestandssysteem net als normaal worden gekoppeld: + + &prompt.root; mount /home + + Vanaf dit moment is het mogelijk om, zolang de + geom_label.ko geladen wordt tijdens het + opstarten van het systeem, of als deze is meegecompileerd door + middel van de GEOM_LABEL optie in de kernel, + de apparaatnode te wijzigen zonder ernstige gevolgen voor het + systeem. + + Bestandssystemen kunnen ook een standaard label mee krijgen + door gebruik te maken van de optie met het + newfs commando. Zie de &man.newfs.8; + handleiding voor meer informatie. + + Het volgende commando kan worden gebruikt om een label te + verwijderen: + + &prompt.root; glabel destroy home + + + + + UFS logboeken door middel van GEOM + + GEOM + + Journaling + + Met de komst van &os; 7.0 komt ook de langverwachte + optie van UFS logboeken. De implementatie + zelf is gedaan door middel van het GEOM subsysteem, welke + makkelijk geconfigureerd kan worden met behulp van de + &man.gjournal.8; applicatie. + + Wat is logboeken? Logboek mogelijkheden betekend het opslaan + van bestandssysteem transacties, zoals wijzigingen die een + complete schrijf actie zijn, voor er meta-data wordt toegevoegd + en voor de wijzigingen op schijf worden gezet. Deze transactie + log kan later opnieuw afgespeeld worden om te voorkomen dat er + bestandssysteem inconsistenties voorkomen. + + Deze methode is een extra manier om te beschermen tegen + data verlies en inconsistenties van het bestandssysteem. In + tegenstelling tot Soft Updates, welke bijhoud welke meta-data + wijzigingen er worden uitgevoerd en Snapshots, wat een beeld + bestand is van het bestandssysteem, wordt er een complete log + bewaard in de laatste sector, of zoals in sommige gevallen op + een compleet andere schijf. + + In tegenstelling tot andere logboek implementaties is de + gjournal methode blok gebaseerd en niet + geimplementeerd als onderdeel van het bestandssysteem maar als + uitbreiding op GEOM. + + Om ondersteuning in te schakelen voor + gjournal, moet de kernel over de volgende optie + beschikken, welke standaard is op 7.x systemen: + + options UFS_GJOURNAL + + Het creeeren van een logboek op een vrij en beschikbaar + bestandssysteem kan nu gedaan worden met behulp van de volgende + stappen, ervanuit gaande dat da4 de + nieuwe beschikbare SCSI schijf is: + + &prompt.root; gjournal label /dev/da4 +&prompt.root; gjournal load + + Op dit moment zou er een ad4 + apparaatnode en een ad4.journal + apparaatnode moeten zijn. Nu kan er een bestandssysteem op + gezet worden: + + &prompt.root; newfs -O 2 -J /dev/da4.journal + + Het hiervoor ingevoerde commando zal een + UFS2 bestandssysteem met logboek + ondersteuning aanmaken. + + Koppel het apparaat op een gewenst koppelpunt met: + + &prompt.root; mount /dev/da4.journal /mnt + + + In het geval dat er meerdere slices zijn, zal er een logboek + voor elke slice gecreeerd worden. Bijvoorbeeld, als + ad4s1 en ad4s2 + allebei slices zijn, dan zal gjournal een + ad4s1.journal en een + ad4s2.journal creeeren. In het geval + dat het commando twee keer gestart wordt, wordt het resultaat + journals. + + + In sommige gevallen kan het gewenst zijn om het logboek op een + andere schijf te bewaren. Voor deze gevallen moet de + logboekleverancier of het opslagapparaat gespecificeerd worden + achter het apparaat waarop de logboek functionaliteit aangebracht + moet worden. De logboek functionaliteit kan ook worden ingeschakeld + op een reeds bestaand systeem met behulp van + tunefs. Maak echter altijd een backup voor dat + dit soort dingen uitgeprobeerd worden. In de meeste gevallen zal + gjournal falen als het geen actueel logboek + kan maken, maar het voorkomt geen dataverlies als gevolg van + verkeerd gebruik van tunefs. +