Index: translations/nl_NL.ISO8859-1/books/handbook/dtrace/chapter.xml =================================================================== --- translations/nl_NL.ISO8859-1/books/handbook/dtrace/chapter.xml (revision 47731) +++ translations/nl_NL.ISO8859-1/books/handbook/dtrace/chapter.xml (revision 47732) @@ -1,398 +1,373 @@ - - &dtrace; + + + &dtrace; + TomRhodesGeschreven door RenéLadanVertaald door - - Overzicht &dtrace; - &dtrace;-ondersteuning - &dtrace; &dtrace;, ook bekend als Dynamic Tracing, was ontwikkeld door &sun; als een gereedschap om prestatie-bottlenecks in productie- en preproductiesystemen op te sporen. Het is in geen enkel opzicht een debug-gereedschap, maar een gereedschap voor real-time analyse om prestatie- en andere zaken op te sporen. &dtrace; is een opmerkelijk profileringsgereedschap, met een indrukwekkende verzameling mogelijkheden om systeemzaken te diagnosticeren. Het kan ook worden gebruikt om vooraf geschreven scripts te draaien om zo voordeel te halen uit de mogelijkheden. Gebruikers kunnen zelfs hun eigen middelen schrijven door gebruik - te maken van de &dtrace; D Language, wat ze in staat stelt om hun + te maken van de &dtrace; D taal, wat ze in staat stelt om hun profilering aan te passen aan hun specifieke behoeften. + De &os; implementatie biedt volledige ondersteuning voor kernel + &dtrace; en experimentele ondersteuning voor userland &dtrace;. + Userland &dtrace; stelt gebruikers in staat om functie begrensde + tracing uit te voeren voor userland programma's met behulp van de + pid provider, en om statische sondes in te + voegen in userland programma's om achteraf te traceren. Sommige + ports, zoals databases/postgres-server en + lang/php5 hebben een &dtrace; optie om + statische probes in te schakelen. &os; 10.0-release heeft redelijk + goede userland &dtrace; support, maar het wordt niet klaar geacht + voor productie. In bijzonder, het is mogelijk dat getracede + programma's crashen. + + De officiële gids voor DTrace wordt onderhouden door de Illumos + project op DTrace + Gids. + Na het lezen van dit hoofdstuk weet u: Wat &dtrace; is en welke mogelijkheden het biedt. De verschillen tussen de &dtrace;-implementatie van &solaris; en degene die door &os; wordt aangeboden. Hoe &dtrace; op &os; aan te zetten en te gebruiken. Voordat u dit hoofdstuk leest, dient u: De beginselen van &unix; en &os; te begrijpen (). - Bekend te zijn met de beginselen van kernelconfiguratie en - -compilatie (). - - - Wat bekendheid te hebben met beveiliging en hoe het zich verhoudt tot &os; (). - - - Te begrijpen hoe de broncode van &os; te verkrijgen en te - herbouwen (). - - - - - Deze mogelijkheid wordt als experimenteel beschouwd. Van - sommige opties kan er functionaliteit ontbreken, andere delen - kunnen in het geheel niet werken. In de loop der tijd zal deze - mogelijkheid als productierijp worden beschouwd en zal deze - documentatie worden aangepast om die situatie te - representeren. - Implementatieverschillen Hoewel &dtrace; in &os; erg lijkt op degene die in &solaris; - zit, zijn er verschillen die uitgelegd moeten worden voordat er - verder wordt gegaan. Het primaire verschil dat gebruikers zullen - zien is dat &dtrace; specifiek moet worden aangezet op &os;. Er - zijn kernelopties en modulen die aangezet moeten worden om - &dtrace; juist te laten werken. Deze zullen later worden - uitgelegd. + zit, zijn er verschillen. Het primaire verschil is dat in &os;, + &dtrace; geimplementeerd is als een set van kernel modules en + &dtrace; pas gebruikt kan worden als deze geladen zijn. Om alle + benodigde modules te laden: +&prompt.root; kldload dtraceall + + Beginnend met &os; 10.0-RELEASE, worden de modules + automatisch geladen wanneer dtrace uitgevoerd + word. + Er is een kerneloptie DDB_CTF die gebruikt wordt om ondersteuning voor het laden van CTF-gegevens van kernelmodulen en de kernel zelf. CTF is het Compact C Type Format van &solaris; welke een beperkte vorm van debuginformatie bevat die vergelijkbaar is met DWARF en de befaamde stabs. Deze CTF-gegevens worden door de bouwmiddelen ctfconvert en ctfmerge aan de binairen toegevoegd. Het hulpmiddel ctfconvert parseert DWARF ELF-debug-secties die door de compiler zijn aangemaakt en ctfmerge voegt CTF ELF-secties van - objecten samen in hun executables of gedeelde bibliotheken. Meer - informatie over hoe dit voor de bouw van de kernel en &os; aan te - zetten komt eraan. + objecten samen in hun executables of gedeelde bibliotheken. Sommige aanbieders voor &os; verschillen van die voor &solaris;. De meest opmerkelijke is de aanbieder dtmalloc, welke het volgen van malloc() op soort in de &os;-kernel - toestaat. + toestaat. Sommige van de providers gevonden in &solaris;, zoals + cpc en mib, zijn niet + aanwezig in &os;. Deze kunnen mogelijk in toekomstige versies + van &os; voorkomen. Bovendien zijn sommige van de aanbieders + die in beide operationele systemen voorkomen niet compatibel, + in de zin dat hun probes verschillende argumenten gebruiken. Zo + werken D scripts geschreven op &solaris; + mogelijk niet ongemodificeerd op &os;, en vice versa. - Alleen root mag &dtrace; op &os; - gebruiken. Dit heeft te maken met beveiligingsverschillen, + Alleen root mag &dtrace; + op &os; gebruiken. Dit heeft te maken met beveiligingsverschillen, &solaris; heeft enkele beveiligingscontroles op laag niveau die nog niet bestaan in &os;. Hierom is /dev/dtrace/dtrace strikt beperkt tot root. Tenslotte valt de &dtrace;-software onder de CDDL-licentie van &sun;. De Common Development and Distribution License wordt bij &os; geleverd, zie /usr/src/cddl/contrib/opensolaris/OPENSOLARIS.LICENSE - of bekijk het online op - http://www.opensolaris.org/os/licensing. - - Deze licentie houdt in dat een &os;-kernel met de - &dtrace;-opties nog steeds onder de - BSD-licentie valt; de CDDL - komt echter op de proppen wanneer de modulen in binaire vorm - worden verspreid, of wanneer de binairen zijn geladen. + of bekijk het online op http://www.opensolaris.org/os/licensing. + Deze licentie houdt in dat een &os;-kernel met de &dtrace;-opties + nog steeds onder de BSD-licentie valt; de + CDDL komt echter op de proppen wanneer de modulen + in binaire vorm worden verspreid, of wanneer de binairen zijn + geladen. Ondersteuning voor &dtrace; aanzetten - Voeg de volgende regels toe aan het kernelinstellingenbestand - om ondersteuning voor &dtrace; aan te zetten: + In &os; 9.2 en 10.0, is &dtrace; support ingebouwd in de + GENERIC kernel. Gebruikers van eerdere versies + van &os; of die liever statische ondersteuning van &dtrace; compileren + moeten de volgende regels toe voegen aan een aangepast kernel + configuratie bestand en de kernel opnieuw compileren met behulp van + de instructies in : options KDTRACE_HOOKS -options DDB_CTF +options DDB_CTF +makeoptions DEBUG=-g +makeoptions WITH_CTF=1 - - Gebruikers van de AMD64-architectuur zullen de volgende - regel aan hun kernelinstellingenbestand willen toevoegen: + Gebruikers van de AMD64-architectuur zullen de volgende + regel aan hun kernelinstellingenbestand willen toevoegen: - options KDTRACE_FRAME + options KDTRACE_FRAME - Deze optie biedt ondersteuning voor de mogelijkheid - FBT. &dtrace; zal zonder deze optie werken; - er zal echter beperkte ondersteuning zijn voor het volgen van - functiegrenzen. - + Deze optie biedt ondersteuning voor de mogelijkheid + FBT. &dtrace; zal zonder deze optie werken; + er zal echter beperkte ondersteuning zijn voor het volgen van + functiegrenzen. - Alle broncode moet herbouwd en geherinstalleerd worden met de - CTF-opties. Om deze taak te volbrengen, wordt - de &os;-broncode herbouwd met: + Nadat opnieuw is opgestart en de nieuwe kernel in het geheugen + is geladen, of de &dtrace; kernel modules zijn geladen met + kldload dtraceall, dient ondersteuning voor de + Korn-shell te worden toegevoegd. + Dit is nodig omdat de verschillende hulpmiddelen van + &dtrace; Toolkit in ksh zijn geschreven. Installeer + shells/ksh93. Het is ook mogelijk om deze + hulpmiddelen in shells/pdksh of shells/mksh te draaien. - + Tot slot, installeer de huidige &dtrace; Toolkit, een verzameling + van kant en klare scripts voor het verzamelen van informatie over + het systeem. Er zijn scripts om open bestanden, geheugen, + CPU-gebruik en nog veel meer te controleren. + &os; 10 installeert een paar van deze scripts in + /usr/share/dtrace. Op andere &os; versies + of om de volledige &dtrace; Toolkit te installeren, gebruik + sysutils/DTraceToolkit pakket of + poort. - &prompt.root; cd /usr/src - -&prompt.root; make WITH_CTF=1 kernel - + + De scripts in + /usr/share/dtrace zijn specifiek + geport naar &os;. Niet alle scripts in de &dtrace; + Toolkit zullen zoals ze nu zijn op &os; werken een aantal scripts hebben + mogelijk wat aanpassingen nodig om ze te laten werken op &os;. + - Het systeem moet opnieuw gestart worden. - - Nadat opnieuw is opgestart en de nieuwe kernel in het geheugen - is geladen, dient ondersteuning voor de Korn-shell te worden - toegevoegd. Dit is nodig omdat de verschillende hulpmiddelen van - &dtrace;Toolkit in ksh zijn geschreven. Installeer - shells/ksh93. Het is ook - mogelijk om deze hulpmiddelen in shells/pdksh of shells/mksh te draaien. - - Als laatste dient de huidige &dtrace;Toolkit verkregen te worden. - Indien u &os; 10 draait, vindt u de &dtrace;Toolkit in - /usr/share/dtrace. In andere gevallen kunt u de - &dtrace;Toolkit installeren via de port sysutils/DTraceToolkit. + De &dtrace; Toolkit bevat vele scripts in de speciale + taal van &dtrace;. Deze taal wordt de D taal genoemd + en lijkt sterk op C++. Een diepgaande discussie over de + taal valt buiten het bereik van dit document. Het wordt uitgebreid + behandeld op http://wikis.oracle.com/display/DTrace/Documentation. &dtrace; gebruiken - Voordat er gebruik wordt gemaakt van de functionaliteit van - &dtrace;, moet het &dtrace;-apparaat bestaan. Geef het volgende - commando om het apparaat te laten: + &dtrace; scripts bestaan uit een lijst van een of meer + probes of instrumentatie punten, waar de + elke probe is gekoppeld aan een actie. Wanneer aan de conditie + van een probe wordt voldaan, wordt de bijbehorende actie uitgevoerd. + Bijvoorbeeld, een actie kan optreden wanneer een bestand wordt geopend, + een proces word gestart, of een regel code wordt uitgevoerd. De actie kan + zijn om wat informatie te loggen of context variabelen te wijzigen. Het + lezen en schrijven van de context variabelen staat probes toe + informatie te delen en om samen de correlatie van verschillende + gebeurtenissen te analyseren. - &prompt.root; kldload dtraceall + Om alle probes te bekijken, kan de beheerder het volgende + commando uitvoeren: - Ondersteuning van &dtrace; zou nu beschikbaar moeten zijn. De - beheerder kan het volgende commando uitvoeren om alle sondes te - bekijken: - &prompt.root; dtrace -l | more - Alle uitvoer wordt aan het hulpmiddel more - doorgegeven omdat het snel de schermbuffer zal laten overstromen. - &dtrace; kan nu als werkend worden beschouwd. Het is nu tijd om - de gereedschapskist te bekijken. + Iedere probe heeft een ID, een + PROVIDER (dtrace of fbt), een + MODULE, en een + FUNCTION NAME. Raadpleeg &man.dtrace.1; voor + meer informatie over dit commando. - De gereedschapskist is een verzameling van kant-en-klare - scripts die met &dtrace; gedraaid kunnen worden om informatie over - het systeem te verzamelen. Er zijn scripts om open bestanden, - geheugen, CPU-gebruik, en nog veel meer te - controleren. Pak de scripts uit met het volgende commando: - - &prompt.root; gunzip -c DTraceToolkit* | tar xvf - - - Ga naar die map met cd en zet de - uitvoerpermissies voor alle bestanden waarvan de naam uit kleine - letters bestaat, op 755. - - De inhoud van al deze scripts moet veranderd worden. Degenen - die naar /usr/bin/ksh verwijzen dienen naar - /usr/local/bin/ksh te verwijzen, de anderen - die /usr/bin/sh gebruiken dienen gewijzigd te - worden om /bin/sh te gebruiken, en tenslotte - dienen degenen die /usr/bin/perl gebruiken - veranderd te worden om /usr/local/bin/perl te - gebruiken. - - - Op dit moment is het voorzichtig om de lezer eraan te - herinneren dat de ondersteuning voor &dtrace; in &os; - niet compleet en - experimenteel is. Veel van deze scripts - zullen niet werken omdat ze of te &solaris;-specifiek zijn of - omdat ze sondes gebruiken die momenteel niet ondersteund - worden. - - - Op het moment van schrijven worden slechts twee scripts van de - &dtrace; Toolkit volledig ondersteund in &os;: de scripts + De voorbeelden in dit gedeelte geven u een overzicht van het + gebruik van twee volledig ondersteunde scripts in de + &dtrace; Toolkit: de hotkernel en - procsystime. Dit zijn de twee die we in de - volgende gedeelten van deze sectie zullen bekijken. + procsystime scripts. De hotkernel is ontworpen om te identificeren welke functie de meeste kerneltijd gebruikt. Als het normaal gedraaid wordt, zal het uitvoer die op de volgende lijkt produceren: &prompt.root; cd /usr/share/dtrace/toolkit &prompt.root; ./hotkernel Sampling... Hit Ctrl-C to end. De systeembeheerder moet de toetsencombinatie CtrlC gebruiken om het proces te stoppen. Nadat het gestopt is, zal het script een lijst van kernelfuncties en timinginformatie weergeven, waarbij de uitvoer in volgorde van toenemende tijd is gesorteerd: kernel`_thread_lock_flags 2 0.0% 0xc1097063 2 0.0% kernel`sched_userret 2 0.0% kernel`kern_select 2 0.0% kernel`generic_copyin 3 0.0% kernel`_mtx_assert 3 0.0% kernel`vm_fault 3 0.0% kernel`sopoll_generic 3 0.0% kernel`fixup_filename 4 0.0% kernel`_isitmyx 4 0.0% kernel`find_instance 4 0.0% kernel`_mtx_unlock_flags 5 0.0% kernel`syscall 5 0.0% kernel`DELAY 5 0.0% 0xc108a253 6 0.0% kernel`witness_lock 7 0.0% kernel`read_aux_data_no_wait 7 0.0% kernel`Xint0x80_syscall 7 0.0% kernel`witness_checkorder 7 0.0% kernel`sse2_pagezero 8 0.0% kernel`strncmp 9 0.0% kernel`spinlock_exit 10 0.0% kernel`_mtx_lock_flags 11 0.0% kernel`witness_unlock 15 0.0% kernel`sched_idletd 137 0.3% 0xc10981a5 42139 99.3% Het script werkt ook met kernelmodules. Draai het script met de vlag om deze mogelijkheid te gebruiken: &prompt.root; ./hotkernel -m Sampling... Hit Ctrl-C to end. ^C MODULE COUNT PCNT 0xc107882e 1 0.0% 0xc10e6aa4 1 0.0% 0xc1076983 1 0.0% 0xc109708a 1 0.0% 0xc1075a5d 1 0.0% 0xc1077325 1 0.0% 0xc108a245 1 0.0% 0xc107730d 1 0.0% 0xc1097063 2 0.0% 0xc108a253 73 0.0% kernel 874 0.4% 0xc10981a5 213781 99.6% Het script procsystime vangt en beeldt het tijdsgebruik van systeemaanroepen af voor een gegeven PID of procesnaam. In het volgende voorbeeld wordt er een nieuwe instantie van /bin/csh gedraaid. Het procsystime werd uitgevoerd en bleef wachten terwijl er enkele commando's op de andere instantie van csh werden getypt. Dit zijn de resultaten van deze test: &prompt.root; ./procsystime -n csh Tracing... Hit Ctrl-C to end... ^C Elapsed Times for processes csh, SYSCALL TIME (ns) getpid 6131 sigreturn 8121 close 19127 fcntl 19959 dup 26955 setpgid 28070 stat 31899 setitimer 40938 wait4 62717 sigaction 67372 sigprocmask 119091 gettimeofday 183710 write 263242 execve 492547 ioctl 770073 vfork 3258923 sigsuspend 6985124 read 3988049784 Zoals te zien is, lijkt de systeemaanroep read() de meeste tijd in nanoseconden te gebruiken en gebruikte de systeemaanroep getpid() de minste hoeveelheid tijd. - - - - De taal D - - De &dtrace;-gereedschapskist bevat vele scripts in de speciale - taal van &dtrace;. Deze taal wordt de taal D - genoemd door de documentatie van &sun;, en lijkt sterk op C++. - Een diepgaande discussie over de taal valt buiten het bereik van - dit document. Het wordt uitgebreid behandeld op http://wikis.oracle.com/display/DTrace/Documentation. Index: translations/nl_NL.ISO8859-1/books/handbook/filesystems/chapter.xml =================================================================== --- translations/nl_NL.ISO8859-1/books/handbook/filesystems/chapter.xml (revision 47731) +++ translations/nl_NL.ISO8859-1/books/handbook/filesystems/chapter.xml (revision 47732) @@ -1,898 +1,207 @@ - - Ondersteuning van bestandssystemen + + + Andere bestandssystemen + TomRhodesGeschreven door WouterReckmanVertaald door RenéLadan - + Overzicht Bestandssystemen - Ondersteuning bestandssystemen - Bestandssystemen Bestandssystemen zijn een integraal onderdeel van ieder besturingssysteem. Ze stellen gebruikers in de gelegenheid om bestanden te uploaden en op te slaan, geven toegang tot gegevens en maken natuurlijk harde schijven bruikbaar. Verschillende - besturingssystemen hebben gewoonlijk één - gezamenlijk aspect, namelijk het bestandssysteem. Op &os; staat - dit bestandssysteem bekend onder de naam Fast File System ofwel - FFS, dat is gebaseerd op het oorspronkelijke - Unix™ File System, ook bekend als UFS. - Dit is het oorspronkelijke bestandssysteem van &os; dat op - harde schijven wordt geplaatst voor gegevenstoegang. + besturingssystemen hebben hun eigen bestandssysteem. Traditioneel + was het eigen &os; bestandssysteem het Unix File System + UFS welke gemoderniseerd is als + UFS2. Sinds &os;  7.0, is het Z File System + (ZFS) ook beschikbaar als een eigen bestandssysteem. + Zie voor meer informatie. &os; ondersteunt daarnaast ook een groot aantal andere bestandssystemen om lokaal toegang tot gegevens van andere besturingssystemen te bewerkstelligen; dat wil zeggen: gegevens opgeslagen op lokaal aangesloten USB - opslagapparaten, flash drives, en harde schijven. Verder is er - ook ondersteuning voor vreemde bestandssystemen. Dit zijn - bestandssystemen ontwikkeld voor andere besturingssystemen - zoals het &linux; Extended File System (EXT) - en het &sun; Z File System (ZFS). + opslagapparaten, flash drives, en harde schijven. Dit omvat + ondersteuning voor het &linux; Extended File System + (EXT) en het Reiser file system. Er zijn verschillende gradaties van ondersteuning voor de verschillende bestandssystemen op &os;. Sommigen vereisen het laden van een kernelmodule, voor anderen moet een toolset - worden geïnstalleerd. Dit hoofdstuk is geschreven om - gebruikers van &os; te helpen om op hun systeem toegang te - verkrijgen tot andere bestandssystemen, te beginnen met het - &sun; Z File System. + worden geïnstalleerd. Sommige niet-eigen bestandssystemen + hebben volledige lezen-schrijven ondersteuning andere + alleen-lezen. Na het lezen van dit hoofstuk weet de lezer: Het verschil tussen eigen en ondersteunde bestandssystemen. Welke bestandssystemen zijn ondersteund in &os;. Hoe niet-eigen bestandssystemen geactiveerd, geconfigureerd, benaderd en gebruikt kunnen worden. Voorafgaand aan het lezen van dit hoofdstuk dient de lezer: Begrip te hebben van de beginselen van &unix; en &os; (). Bekend te zijn met de beginselen van kernelconfiguratie en -compilatie (). Vertrouwd te zijn met installatie van software van derden in &os; (). Enigszins bekend te zijn met schijven, opslag en apparaatnamen in &os; (). - - Het Z File System (ZFS) - - Het Z File System, ontwikkeld door &sun;, is een - nieuwe technologie ontwikkeld om gebruik te maken van een - pool-gebaseerde opslagmethode. Dit houdt in dat ruimte pas - wordt gebruikt wanneer het nodig is voor dataopslag. Verder is - het ontworpen voor maximale integriteit van gegevens, - ondersteuning van gegevens-snapshots, meerdere kopieën, en - gegevenschecksums. Ook is een nieuw gegevensreplicatiemodel, - bekend als RAID-Z, toegevoegd; - RAID-Z lijkt op RAID5, - maar is ontworpen om corruptie tijdens het schrijven van - gegevens te voorkomen. - - - ZFS tuning - - Het ZFS subsysteem maakt gebruik van - veel systeembronnen waardoor het nodig kan zijn een en ander - af te stellen, zodat voor het dagelijks gebruik maximale - efficiëntie wordt behaald. Doordat het een - experimentele eigenschap van &os; is, kan dit in de nabije - toekomst veranderen; op dit moment echter, worden de volgende - stappen aangeraden. - - - Geheugen - - De totale hoeveelheid systeemgeheugen dient minstens - één gigabyte te zijn, maar twee gigabytes of meer - wordt aanbevolen. In alle voorbeelden hier heeft het systeem - één gigabyte geheugen, met verschillende andere - afstelmechanismen in werking. - - Sommigen hebben succes gehad met minder dan een - gigabyte geheugen, maar met een dergelijke, beperkte - hoeveelheid geheugen is de kans groot dat onder zware - belasting een kernelpanic in &os; op zal treden door uitputting - van het geheugen. - - - - Kernelconfiguratie - - Het wordt aangeraden om ongebruikte - stuurprogramma's en opties te verwijderen uit het - kernelconfiguratiebestand. Omdat de meeste - stuurprogramma's beschikbaar zijn als modules kunnen ze - alsnog worden geladen door middel van het bestand - /boot/loader.conf. - - Gebruikers van de &i386;-architectuur dienen de volgende - optie aan hun kernelconfiguratiebestand toe te voegen, de - kernel opnieuw te compileren, en opnieuw op te - starten: - - options KVA_PAGES=512 - - Deze optie vergroot de kerneladresruimte, waarmee het - mogelijk wordt gemaakt om de vm.kvm_size - afstelling hoger dan de huidige limiet van 1 GB - (2 GB voor PAE) in te stellen. - Deel, om de meest geschikte waarde voor deze optie te - vinden, de gewenste hoeveelheid adresruimte door vier (4). - In dit geval is dat 512 voor - 2 GB. - - - - Loader tunables - - De kmem adresruimte dient te - worden vergroot op alle &os; architecturen. Op het - testsysteem met één gigabyte fysiek geheugen werd - succes behaald met de volgende opties, die in het bestand - /boot/loader.conf geplaatst dienen te - worden, waarna het systeem opnieuw moet worden - opgestart: - - vm.kmem_size="330M" -vm.kmem_size_max="330M" -vfs.zfs.arc_max="40M" -vfs.zfs.vdev.cache.size="5M" - - Zie voor een meer gedetailleerde lijst van aanbevelingen - aangaande ZFS-afstelling: - http://wiki.freebsd.org/ZFSTuningGuide - . - - - - - Gebruik maken van <acronym>ZFS</acronym> - - Er is een opstartmechanisme dat &os; in staat stelt om - ZFS pools te mounten tijdens initialisatie van - het systeem. Voer de volgende commando's uit om dit in te - stellen: - - &prompt.root; echo 'zfs_enable="YES"' >> /etc/rc.conf -&prompt.root; service zfs start - - In het resterende deel van dit document wordt aangenomen - dat er drie SCSI-schijven beschikbaar zijn, - en dat hun apparaatnamen respectievelijk - da0, - da1 en - da2 zijn. - Gebruikers van IDE-hardware kunnen de - ad - apparaten gebruiken in plaats van - SCSI-apparaten. - - - Een pool op een enkele schijf - - Voer het commando zpool uit om een simpele, - niet-redundante ZFS-pool op een enkele schijf aan - te maken: - - &prompt.root; zpool create example /dev/da0 - - Bestudeer de uitvoer van het commando - df om de nieuwe pool te zien: - - &prompt.root; df -Filesystem 1K-blocks Used Avail Capacity Mounted on -/dev/ad0s1a 2026030 235230 1628718 13% / -devfs 1 1 0 100% /dev -/dev/ad0s1d 54098308 1032846 48737598 2% /usr -example 17547136 0 17547136 0% /example - - In deze uitvoer wordt duidelijk dat de - example-pool niet alleen is aangemaakt, - maar ook direct gemount is. Hij is ook - toegankelijk, net als een gewoon bestandssysteem; er kunnen - bestanden op worden aangemaakt en gebruikers kunnen er op - rondkijken zoals in het volgende voorbeeld: - - &prompt.root; cd /example -&prompt.root; ls -&prompt.root; touch testfile -&prompt.root; ls -al -total 4 -drwxr-xr-x 2 root wheel 3 Aug 29 23:15 . -drwxr-xr-x 21 root wheel 512 Aug 29 23:12 .. --rw-r--r-- 1 root wheel 0 Aug 29 23:15 testfile - - Helaas benut deze pool nog geen - ZFS-mogelijkheden. Maak een bestandssysteem - aan op deze pool en activeer er compressie op: - - &prompt.root; zfs create example/compressed -&prompt.root; zfs set compression=gzip example/compressed - - example/compressed is nu een - gecomprimeerd ZFS-bestandssysteem. Probeer - er een paar grote bestanden naartoe te kopiëren door ze - naar /example/compressed - te kopiëren. - - De compressie kan nu worden uitgeschakeld met: - - &prompt.root; zfs set compression=off example/compressed - - Voer het volgende commando uit om het bestandssysteem te - unmounten, en controleer dat daarna met - df: - - &prompt.root; zfs umount example/compressed -&prompt.root; df -Filesystem 1K-blocks Used Avail Capacity Mounted on -/dev/ad0s1a 2026030 235232 1628716 13% / -devfs 1 1 0 100% /dev -/dev/ad0s1d 54098308 1032864 48737580 2% /usr -example 17547008 0 17547008 0% /example - - Mount het bestandssysteem opnieuw om het weer - toegankelijk te maken en controleer met - df: - - &prompt.root; zfs mount example/compressed -&prompt.root; df -Filesystem 1K-blocks Used Avail Capacity Mounted on -/dev/ad0s1a 2026030 235234 1628714 13% / -devfs 1 1 0 100% /dev -/dev/ad0s1d 54098308 1032864 48737580 2% /usr -example 17547008 0 17547008 0% /example -example/compressed 17547008 0 17547008 0% /example/compressed - - De pool en het bestandssysteem zijn ook zichtbaar in de - uitvoer van mount: - - &prompt.root; mount -/dev/ad0s1a on / (ufs, local) -devfs on /dev (devfs, local) -/dev/ad0s1d on /usr (ufs, local, soft-updates) -example on /example (zfs, local) -example/data on /example/data (zfs, local) -example/compressed on /example/compressed (zfs, local) - - Zoals is te zien kunnen - ZFS-bestandssystemen, nadat ze zijn - gecreëerd, net als gewone bestandssystemen worden - gebruikt; er zijn echter ook vele andere mogelijkheden - beschikbaar. In het volgende voorbeeld wordt er een nieuw - bestandssysteem data gecreëerd. - Er zullen belangrijke bestanden op worden bewaard, dus het - bestandssysteem wordt zodanig ingesteld dat het twee - kopieën van ieder gegevensblok opslaat: - - &prompt.root; zfs create example/data -&prompt.root; zfs set copies=2 example/data - - Het is nu mogelijk om het gegevens- en ruimtegebruik te - bekijken door df opnieuw te - draaien: - - &prompt.root; df -Filesystem 1K-blocks Used Avail Capacity Mounted on -/dev/ad0s1a 2026030 235234 1628714 13% / -devfs 1 1 0 100% /dev -/dev/ad0s1d 54098308 1032864 48737580 2% /usr -example 17547008 0 17547008 0% /example -example/compressed 17547008 0 17547008 0% /example/compressed -example/data 17547008 0 17547008 0% /example/data - - Merk op dat ieder bestandssysteem in de pool dezelfde - hoeveelheid vrije ruimte heeft. Dit is de reden dat - df steeds wordt gebruikt tussen de - voorbeelden door, om te laten zien dat de bestandssystemen - slechts zoveel ruimte gebruiken als ze nodig hebben en - allemaal putten uit dezelfde pool. - Het ZFS bestandssysteem elimineert - concepten als volumes en partities, en staat verschillende - bestandssystemen toe om in dezelfde pool te bestaan. - Verwijder nu de bestandssystemen en verwijder daarna de pool, - omdat deze niet meer nodig zijn: - - &prompt.root; zfs destroy example/compressed -&prompt.root; zfs destroy example/data -&prompt.root; zpool destroy example - - Schijven gaan slechter werken en begeven het, een - onvermijdelijke eigenschap. Wanneer de schijf stukgaat - zullen de gegevens verloren gaan. Een methode om - gegevensverlies ten gevolge van een kapotte harde schijf te - vermijden is het implementeren van RAID. - ZFS ondersteunt deze mogelijkheid in zijn - pool-ontwerp en wordt beschreven in de volgende - sectie. - - - - <acronym>ZFS</acronym> RAID-Z - - Zoals eerder opgemerkt wordt in deze sectie aangenomen - dat er drie SCSI-schijven bestaan als de - apparaten da0, da1 - en da2 (of ad0 en - hoger als IDE-schijven worden gebruikt). Voer het volgende commando - uit om een RAID-Z-pool te creëren: - - &prompt.root; zpool create storage raidz da0 da1 da2 - - - &sun; raadt aan om tussen de drie en negen schijven te gebruiken - voor een RAID-Z-configuratie. Overweeg, als u - een enkele pool met 10 of meer schijven nodig heeft, om deze te - splitsen in kleine RAID-Z-groepen. Overweeg, als - u slechts twee schijven heeft en nog steeds redundantie nodig heeft, - om in plaats hiervan een ZFS-spiegel te - gebruiken. Bekijk de handleidingpagina &man.zpool.8; voor meer - details. - - - De storage zpool zou gecreëerd - moeten zijn. Dit kan worden geverifieerd met de - &man.mount.8; en &man.df.1; commando's zoals eerder. Er - kunnen meer schijfapparaten worden toegewezen door ze aan het - einde van de bovenstaande lijst toe te voegen. - Maak een nieuw bestandssysteem in de pool, genaamd - home, waar op den duur de - gebruikersbestanden geplaatst zullen worden: - - &prompt.root; zfs create storage/home - - Het is nu mogelijk om compressie in te schakelen en extra - kopieën te bewaren van de gebruikersmappen en - -bestanden. Dit kan net als eerder worden bewerkstelligd - door de volgende commando's uit te voeren: - - &prompt.root; zfs set copies=2 storage/home -&prompt.root; zfs set compression=gzip storage/home - - Kopieer, om dit als de nieuwe home-map voor gebruikers in - te stellen, de gebruikersgegevens naar deze map en - creëer de benodigde links: - - &prompt.root; cp -rp /home/* /storage/home -&prompt.root; rm -rf /home /usr/home -&prompt.root; ln -s /storage/home /home -&prompt.root; ln -s /storage/home /usr/home - - De gebruikersgegevens zouden nu op het nieuw aangemaakte - /storage/home - bestandssysteem moeten staan. Test dit door een nieuwe - gebruiker aan te maken en daarmee in te loggen. - - Probeer een snapshot te maken dat later weer hersteld kan - worden: - - &prompt.root; zfs snapshot storage/home@08-30-08 - - Merk op dat de snapshot-optie alleen een echt - bestandssysteem vastlegt, geen mappen of bestanden. Het - @-karakter wordt gebruikt als - scheidingsteken tussen de naam van het bestandssysteem of de - naam van het volume. Wanneer de home-map van een gebruiker - wordt weggegooid, kan deze worden hersteld met: - - &prompt.root; zfs rollback storage/home@08-30-08 - - Voer ls in de - .zfs/snapshot - directory van het bestandssysteem uit om een lijst van alle - beschikbare snapshots te krijgen. Voer, om bijvoorbeeld - het zojuist gemaakte snapshot te zien, het volgende commando - uit: - - &prompt.root; ls /storage/home/.zfs/snapshot - - Het is mogelijk om een script te schrijven dat - maandelijks een snapshot van de gebruikersgegevens maakt; na - verloop van tijd kunnen snapshots echter een grote - hoeveelheid schrijfruimte in beslag nemen. Het vorige - snapshot kan worden verwijderd met het volgende - commando: - - &prompt.root; zfs destroy storage/home@08-30-08 - - Na al dit testen is er geen reden om - /storage/home in zijn - huidige staat nog te bewaren. Maak er het echte - /home - bestandssysteem van: - - &prompt.root; zfs set mountpoint=/home storage/home - - Het uitvoeren van de commando's df en - mount laat zien dat het systeem ons - bestandssysteem nu als de echte /home behandelt: - - &prompt.root; mount -/dev/ad0s1a on / (ufs, local) -devfs on /dev (devfs, local) -/dev/ad0s1d on /usr (ufs, local, soft-updates) -storage on /storage (zfs, local) -storage/home on /home (zfs, local) -&prompt.root; df -Filesystem 1K-blocks Used Avail Capacity Mounted on -/dev/ad0s1a 2026030 235240 1628708 13% / -devfs 1 1 0 100% /dev -/dev/ad0s1d 54098308 1032826 48737618 2% /usr -storage 26320512 0 26320512 0% /storage -storage/home 26320512 0 26320512 0% /home - - Hiermee is de RAID-Z configuratie - compleet. Voer het volgende commando uit om status-updates - van de gecreëerde bestandssystemen te krijgen tijdens - het draaien van de nachtelijke &man.periodic.8;: - - &prompt.root; echo 'daily_status_zfs_enable="YES"' >> /etc/periodic.conf - - - - Het herstellen van <acronym>RAID</acronym>-Z - - Iedere software-RAID heeft een methode - om zijn status te inspecteren. - ZFS is geen uitzondering. De status van - RAID-Z-apparaten kan worden - geïnspecteerd met het volgende commando: - - &prompt.root; zpool status -x - - Als alle pools in orde zijn en alles is normaal, dan - wordt het volgende bericht weergegeven: - - all pools are healthy - - Als er een probleem is, misschien een schijf die offine - is gegaan, dan wordt de status van de pool weergegeven en dat - zal er als volgt uitzien: - - pool: storage - state: DEGRADED -status: One or more devices has been taken offline by the administrator. - Sufficient replicas exist for the pool to continue functioning in a - degraded state. -action: Online the device using 'zpool online' or replace the device with - 'zpool replace'. - scrub: none requested -config: - - NAME STATE READ WRITE CKSUM - storage DEGRADED 0 0 0 - raidz1 DEGRADED 0 0 0 - da0 ONLINE 0 0 0 - da1 OFFLINE 0 0 0 - da2 ONLINE 0 0 0 - -errors: No known data errors - - Hier staat dat het apparaat offline is gezet door de - beheerder. Dat is waar voor dit specifieke voorbeeld. Om de - schijf offline te zetten werd het volgende commando - gebruikt: - - &prompt.root; zpool offline storage da1 - - Het is nu mogelijk om de schijf - da1 te vervangen nadat het systeem - uitgeschakeld is. Zodra het systeem weer opgestart is, kan - het volgende commando worden uitgevoerd om de schijf te - vervangen: - - &prompt.root; zpool replace storage da1 - - Nu kan de status opnieuw geïnspecteerd worden, - dit keer zonder de vlag, om de - statusinformatie op te vragen: - - &prompt.root; zpool status storage - pool: storage - state: ONLINE - scrub: resilver completed with 0 errors on Sat Aug 30 19:44:11 2008 -config: - - NAME STATE READ WRITE CKSUM - storage ONLINE 0 0 0 - raidz1 ONLINE 0 0 0 - da0 ONLINE 0 0 0 - da1 ONLINE 0 0 0 - da2 ONLINE 0 0 0 - -errors: No known data errors - - Zoals te zien in dit voorbeeld lijkt alles normaal te - zijn. - - - - Gegevensverificatie - - Zoals eerder opgemerkt gebruikt ZFS - checksums om de integriteit van opgeslagen - gegevens te verifiëren. Ze worden automatisch - ingeschakeld bij het creëeren van bestandssystemen en - kunnen worden uitgeschakeld door middel van het volgende - commando: - - &prompt.root; zfs set checksum=off storage/home - - Dit is echter geen verstandig idee, omdat checksums zeer - weinig opslagruimte innemen en nuttiger zijn wanneer ze zijn - ingeschakeld. Het lijkt daarnaast ook geen merkbare invloed - op de prestaties te hebben wanneer ze zijn ingeschakeld. - Wanneer ze aanstaan is het mogelijk om ZFS - gegevensintegriteit te laten controleren door middel van - checksum-verificatie. Dit proces staat bekend als - scrubbing. Voer het volgende commando uit om - de gegevensintegriteit van de storage-pool - te controleren: - - &prompt.root; zpool scrub storage - - Dit proces kan, afhankelijk van de hoeveelheid opgeslagen - gegevens, een aanzienlijke hoeveelheid tijd in beslag nemen. - Het is daarnaast ook zeer I/O-intensief, - zozeer dat slechts één van deze operaties - tegelijkertijd uitgevoerd kan worden. Nadat de scrub is - voltooid wordt de status bijgewerkt en kan deze worden - bekeken door een statusaanvraag te doen: - - &prompt.root; zpool status storage - pool: storage - state: ONLINE - scrub: scrub completed with 0 errors on Sat Aug 30 19:57:37 2008 -config: - - NAME STATE READ WRITE CKSUM - storage ONLINE 0 0 0 - raidz1 ONLINE 0 0 0 - da0 ONLINE 0 0 0 - da1 ONLINE 0 0 0 - da2 ONLINE 0 0 0 - -errors: No known data errors - - De voltooiingstijd is in dit voorbeeld duidelijk - zichtbaar. Deze eigenschap helpt om gegevensintegriteit te - garanderen gedurende een langere tijdsperiode. - - Er zijn vele andere opties voor het Z-bestandssysteem, zie - de handleidingpagina's &man.zfs.8; en &man.zpool.8;. - - - - ZFS quota - - ZFS ondersteunt verschillende soorten quota: de refquota, de - algemene quota, de gebruikersquota en de groepsquota. Deze sectie - legt de beginselen van ieder van deze uit en bevat wat instructies - voor gebruik. - - Quota beperken de hoeveelheid ruimte die een gegevensverzameling - en zijn afstammelingen kunnen gebruiken en dwingen een limiet af op de - hoeveelheid ruimte dat gebruikt wordt door bestandssystemen en - snapshots voor deze afstammelingen. Vanuit gebruikers zijn quota - handig om de hoeveelheid ruimte die een bepaalde gebruiker kan - gebruiken te beperken. - - - Quota kunnen niet op volumes worden ingesteld, aangezien de - eigenschap volsize als een impliciet quotum - optreedt. - - - De refquota, - refquota=grootte, - beperkt de hoeveelheid ruimte die een gegevensverzameling in beslag - kan nemen door een harde grens aan de gebruikte ruimte te stellen. - Deze harde grens bevat echter niet de ruimte gebruikt door - afstammelingen, zoals bestandssystemen of snapshots. - - Gebruik het volgende om een algemeen quotum van 10 GB voor - /home/storage/bob af te dwingen: - - &prompt.root; zfs set quota=10G storage/home/bob - - Gebruikersquota beperken de hoeveelheid ruimte die door de - aangegeven gebruiker kan worden gebruikt. Het algemene formaat is - userquota@gebruiker=grootte - waarbij de gebruikersnaam in één van de volgende - formaten dient te zijn: - - - - Naam compatibel met POSIX - (bijvoorbeeld jan). - - - Numeriek POSIX-ID - (bijvoorbeeld 789). - - - SID-naam - (bijvoorbeeld - jan.bloggs@example.com). - - - Numeriek SID-ID - (bijvoorbeeld S-1-123-456-789). - - - - Gebruik het volgende om bijvoorbeeld een quotum van 50 GB - voor een gebruiker jan af te - dwingen: - - &prompt.root; zfs set userquota@jan=50G - - Gebruik in plaats hiervan, om het quotum te verwijderen of er - zeker van te zijn dat er geen is ingesteld: - - &prompt.root; zfs set userquota@jan=none - - Eigenschappen van gebruikersquota worden niet weergegeven door - zfs get all. Niet-root - gebruikers kunnen alleen hun eigen quota zien tenzij het privilege - userquota aan ze is gegeven. Gebruikers met dit - privilege kunnen ieders quota bekijken en instellen. - - Groepsquota beperken de hoeveelheid ruimte die de gespecificeerde - gebruikersgroep in beslag kan nemen. Het algemene formaat is - groupquota@groep=grootte. - - Gebruik om het quotum voor de groep - eerstegroep op 50 GB in te - stellen: - - &prompt.root; zfs set groupquota@eerstegroep=50G - - Gebruik in plaats hiervan, om het quotum voor de groep - eerstegroep te verwijderen of om er voor te - zorgen dat deze niet is ingesteld: - - &prompt.root; zfs set groupquota@eerstegroep=none - - Net zoals bij de eigenschappen van gebruikersquota kunnen - niet-root-gebruikers alleen de quota zien die - geassocieerd zijn met de gebruikersgroepen waar ze bij horen, een - root-gebruiker of een gebruiker met het privilege - groupquota kan alle quota voor alle groepen - bekijken en instellen. - - Het deelcommando zfs userspace geeft de - hoeveelheid ruimte weer die door elke gebruiker op de snapshot van het - gespecificeerde bestandssysteem in beslag wordt genomen, tezamen met - alle ingestelde quota. Het deelcommando zfs - groupspace doet hetzelfde voor groepen. Bekijk - &man.zfs.1; voor meer informatie over ondersteunde opties of het - weergegeven van specifieke opties. - - Gebruik het volgende om de quota voor - storage/home/bob weer te geven, als u de juiste - privileges heeft of root bent: - - &prompt.root; zfs get quota storage/home/bob - - - - Reserveringen in ZFS - - ZFS ondersteunt twee soorten van ruimtereserveringen. Deze sectie - legt de beginselen van elk van de twee uit en bevat enkele instructies - voor gebruik. - - De eigenschap reservation maakt het mogelijk om - een gegarandeerde minimale hoeveelheid ruimte voor een - gegevensverzameling en zijn afstammelingen te reserveren. - Dit betekent dat als er een reservering van 10 GB is ingesteld - voor storage/home/bob en de schijfruimte op - raakt, er tenminste 10 GB aan ruimte is gereserveerd voor deze - gegevensverzameling. De eigenschap reservation - stelt de minimale hoeveelheid ruimte in die gegarandeerd is voor een - gegevensverzameling exclusief afstammelingen zoals snapshots, of geeft - deze aan. Als er bijvoorbeeld een snapshot is genomen van - storage/home/bob moet er genoeg schijfruimte zijn - buiten de refreservation hoeveelheid om de operatie - te laten slagen omdat afstammelingen van de hoofdgegevensverzameling - niet worden meegeteld in de refreservation - hoeveelheid en dus niet stiekem de vastgestelde ruimte - wijzigen. - - Reserveringen kunnen in allerlei situaties nuttig zijn, - bijvoorbeeld voor het plannen en testen van de geschiktheid van het - toewijzen van schijfruimte in een nieuw systeem, of om ervoor te - zorgen dat er genoeg schijfruimte beschikbaar is op bestandsssystemen - voor systeemherstelprocedures en bestanden. - - Het algemene formaat van de eigenschap - reservation is - reservation=grootte, dus - gebruik het onderstaande commando om een reservering van 10 GB op - storage/home/bob te plaatsen: - - &prompt.root; zfs set reservation=10G storage/home/bob - - Gebruik, om te controleren of er geen reservatie is geplaatst of - om een reservatie te verwijderen: - - &prompt.root; zfs set reservation=none storage/home/bob - - Het zelfde principe kan worden toegepast op de eigenschap - refreservation om een refreservation in te stellen, - met het algemene formaat - refreservation=grootte. - - Gebruik één van de volgende commando's om te kijken - of er een reservatie of refreservation bestaat op - storage/home/bob: - - &prompt.root; zfs get reservation storage/home/bob -&prompt.root; zfs get refreservation storage/home/bob - - - - &linux; bestandssystemen - Deze sectie beschrijft enkele van de &linux; bestandssystemen die door - &os; worden ondersteund. + &os; biedt ingebouwde ondersteuning voor verschillende &linux; + bestandssystemen. Deze sectie laat zien hoe ondersteuning te laden en + hoe ondersteunde &linux; bestandssystemen aan te koppelen. - Ext2FS + <acronym>ext2</acronym> - De kernelimplementatie van het &man.ext2fs.5; bestandssysteem was - geschreven door Godmar Back, het eerste stuurprogramma verscheen in + De kernelimplementatie van het ext2 bestandssysteem verscheen in &os; 2.2. In &os; 8 en eerder is de code gelicenseerd onder de GNU Public License, onder &os; 9 is de code echter herschreven en nu beschikbaar onder de BSD-licentie. Het stuurprogramma &man.ext2fs.5; stelt de &os;-kernel in staat om ext2 bestandssystemen te lezen en er naar te schrijven. - Laad ten eerste de kernelmodule: + + + Deze driver kan ook worden gebruikt om toegang te krijgen ext3 en ext4 + bestandssystemen. Echter, ext3 journaling, uitgebreide attributen, en + inodes van meer dan 128 bytes worden niet ondersteund. Ondersteuning + voor ext4 is alleen-lezen. + + Laad, om een ext bestandssysteem te gebruiken, + ten eerste de kernelmodule: + &prompt.root; kldload ext2fs - Koppel daarna een &man.ext2fs.5;-volume aan dat zich op - /dev/ad1s1 bevindt: + Koppel daarna het ext volume door het specificeren van de &os; + partitie naam en een bestaand koppel punt. Dit voorbeeld + koppelt /dev/ad1s1 op + /mnt: - &prompt.root; mount -t ext2fs /dev/ad1s1 /mnt + &prompt.root; mount -t ext2fs /dev/ad1s1 /mnt - XFS - - Het X-bestandssysteem, XFS, is origineel - geschreven door SGI voor het besturingssysteem - IRIX, ze hebben het overgebracht naar &linux;. De - broncode is vrijgegeven onder de GNU Public License. - Kijk op deze - pagina voor meer details. De &os;-port werd gestart door - Russel Cattelan, &a.kan.email; en &a.rodrigc.email;. - - Om XFS als een kernelmodule te laden: - - &prompt.root; kldload xfs - - Het stuurprogramma &man.xfs.5; stelt de &os;-kernel in staat om - XFS-bestandssystemen te benaderen. Momenteel is echter alleen - ondersteuning voor lezen aanwezig. Schrijven naar een volume is niet - mogelijk. - - Om een &man.xfs.5;-volume wat op /dev/ad1s1 aan - te koppelen: - - &prompt.root; mount -t xfs /dev/ad1s1 /mnt - - Merk op dat de port sysutils/xfsprogs het gereedschap - mkfs.xfs bevat wat het mogelijk maakt om - XFS-bestandssystemen aan te maken, en verder - gereedschappen om ze te analyseren en repareren. - - De vlag -p van mkfs.xfs kan - worden gebruikt om een &man.xfs.5;-bestandssysteem aan te maken welke - bevolkt wordt met bestanden en andere meta-gegevens. Dit kan worden - gebruikt om snel een alleen-lezen bestandssysteem aan te maken welke op - &os; getest kan worden. - - - ReiserFS - Het Reiser bestandssysteem, ReiserFS, was overgebracht naar &os; - door &a.dumbbell.email; en is vrijgegeven onder de GNU - Public License. + &os; biedt alleen-lezen ondersteuning voor het Reiser + bestandssysteem, ReiserFS. - Het stuurprogramma voor ReiserFS stelt de &os;-kernel momenteel in - staat om ReiserFS bestandssystemen te benaderen en hun inhoud te lezen, - maar het kan ze momenteel niet beschrijven. + Om de &man.reiserfs.5; driver te laden: - Laad ten eerste eerst de kernelmodule: - &prompt.root; kldload reiserfs Om ten tweede een ReiserFS-volume dat zich op /dev/ad1s1 aan te koppelen: - &prompt.root; mount -t reiserfs /dev/ad1s1 /mnt + &prompt.root; mount -t reiserfs /dev/ad1s1 /mnt - + -->