automount en autofs

ArticleCategory:

System Administration

AuthorImage:

[Photo of the Author]

TranslationInfo:

original in fr. Frédéric Raynal

fr to en Philippe Trbich and Emmanuel Bonnel

en to nl Tom Uijldert

AboutTheAuthor:

Frédéric Raynal is bezig met een scriptie aan het INRIA in de computerwetenschappen. Hij is dol op lezen (van Tolkien tot Balzac) en het luisteren naar muziek (van Mozart tot Philip Glass en van Led Zeppelin tot Massive Attack of Björk en Boris Vian, alles behalve rap, techno en andere herrie ;-)

Abstract:

automount en autofs zijn krachtige hulpmiddelen voor het bijhouden van je bestanden. Ze maken het mogelijk dat gebruikers op een machine automatisch hele bestandssystemen kunnen mounten op het moment dat ze nodig zijn.

ArticleIllustration:

[Illustratie]

ArticleBody:

Inleiding

Al naar gelang het soort ijzerwaren wat we tot onze beschikking hebben (harde schijven, floppies of cd-rom...) en/of het soort besturingssysteem, wordt data op verschillende manieren opgeslagen (en dan hebben we het niet over de inhoud van de data). Dit is wat we een bestandssysteem noemen (met excuus aan de guru's en puristen voor het vereenvoudigen van de uitleg). In het bestand /etc/fstab staan de harde locaties voor het laden van bestandssystemen tijdens opstarten. Ieder laadpunt hierin geeft de plaats en het betreffende bestandssysteem weer wat daar moet worden geladen (bijvoorbeeld één van de partities van je harde schijf). Wanneer je na het opstarten nog andere delen wilt inladen dan kan alleen de gebruiker root dit doen met het mount-commando (of de speciale optie user moet zijn meegegeven in het bestand /etc/fstab). Als gebruiker root zul je aan moeten geven waar je het bestandssysteem wil laden, wat voor soort bestandssysteem dat is en hoe je dat wilt doen. Een doorsnee gebruiker heeft (gelukkig) niet de mogelijkheid om zo alle gegevens te benaderen.

De man pagina's over mount en fstab geven meer informatie over het gebruik van deze commando's.

Beide (zowel automount als autofs) stellen de beheerder in staat om in te stellen welke bestandssystemen een machine allemaal kan benaderen, net als bij het mount commando. De gebruiker kan vervolgens deze bestanden benaderen zonder zich het hoofd te hoeven breken over hoe de kernel dit allemaal afhandelt.

Beschrijving

Men kan dit (automount, autofs) zien als het client-server-model zoals we dat van netwerken kennen. Een server wacht in de achtergrond op een verzoek. Wanneer dit binnenkomt zal de server zichzelf kopiëren, waarbij de kopie het verzoek behandelt en het origineel wacht op nieuwe verzoeken.

In dit verhaal is autofs de server en automount de "kopie". De verzoeken zijn vastgelegd in configuratiebestanden.

autofs

Meestal wordt autofs gestart tijdens het opstarten en pas weer neergehaald bij het afsluiten van het systeem. De beheerder kan het echter ook tussentijds "handmatig" afsluiten en weer opstarten.

autofs kent vier verschillende mogelijkheden:

  1. start: het moge duidelijk zijn dat dit het proces start. Tijdens het opstarten gaat autofs op zoek naar maps (die een laadpunt specificeren) in het configuratiebestand /etc/auto.master. Vervolgens wordt voor ieder laadpunt automount gestart. Daarna gaat het op zoek naar NIS mappen (we zullen hier niet verder in gaan op yellow pages).
  2. stop: stopt het proces en eventuele automount's die nog draaien.
  3. status: laat alle instellingen zien en alle nog draaiende automount's.
  4. reload: leest opnieuw het bestand auto.master en zal nieuwe bestandssystemen inladen of uitwerpen, al naar gelang de configuratie. Merk op dat wijzigingen sowieso bij een herstart mee worden genomen. Tevens geven wijzigingen de noodzaak van een herstart aan.
Kort en goed is autofs niets meer dan een script dat automount opstart aan de hand van de instructies in auto.master.

automount

Dit programma gaat uit van een laadpunt (aangegeven door autofs) met de daarbij behorende karakteristieken. Hierin staan alle gegevens die nodig zijn voor het automatisch laden van het betreffende bestandssysteem (vandaar de naam automount). Het bestandssysteem wordt geladen zodra iemand toegang probeert te krijgen tot een directory onder het laadpunt.

Vervolgens wordt het bestandssysteem er automatisch weer af gehaald (umount) nadat er een tijd niets op is gebeurd (meestal na een minuut of vijf).

Instelling

De instelling gaat met behulp van 2 bestanden. Het bestand auto.master beschrijft de laadpunten en verder is er een bestand wat de bestandssystemen verder detailleert.

Het bestand /etc/auto.master

We beschrijven hier het formaat van Sun. Het andere formaat (hesiod) kan de gegevens hieronder niet verwerken.

Dit is het hoofdbestand van autofs. Iedere regel beschrijft een laadpunt en wijst naar een bestand die het bestandssysteem dat geladen moet worden verder beschrijft. Het derde en laatste veld kan mogelijke opties hebben die mee kunnen worden gegeven aan het laadcommando.

Het formaat is als volgt:

laadpunt verwijzing-naar-bestandssysteem [opties-gescheiden-door-komma]
Voorbeeld:
/home	/etc/auto.home
/misc	/etc/auto.misc	-timeout 60
/mnt	yp:mnt.map	-intr,nosuid,nodev
Hiermee worden drie laadpunten ingesteld, te weten /home, /misc en /mnt. Wanneer toegang wordt gezocht naar bestanden onder /misc dan zal automount het bestand /etc/auto.misc lezen voor gegevens over het bestandssysteem en hoe dit moet worden geladen.
De twee laatste regels bevatten opties. Dit zijn standaard opties die worden beschreven in de man-pagina's van mount. Zoals te zien in de laatste regel kunnen autofs en automount ook yellow pages aan (en NIS en anderen).

Gegevens van automount

Het formaat van dit bestand is hetzelfde als die van auto.master (dat kan ook niet anders want deze bevat dezelfde gegevens ;-):
sleutelwaarde [-opties-gescheiden-door-komma] locatie
De sleutelwaarde benoemt de plaats onder het laadpunt. De locatie geeft aan waar het bestandssysteem echt te vinden is.

Laten we het voorgaande voorbeeld nog eens bekijken met het volgende /etc/auto.misc-bestand:

kernel	-ro,soft,intr	ftp.kernel.org:/pub/linux
cd-rom	-fstype=iso9660,ro	:/dev/cdrom
floppy	-fstype=auto	:/dev/fd0
windoz	-fstype=vfat	:/dev/hda1
Het absolute pad naar een bestand wordt dan:
/laadpunt/sleutelwaarde/pad/bestand
Om dus mijn Windows config.sys te kunnen lezen moet ik intikken:
$ cat /misc/windoz/config.sys
en het operating systeem zal het vinden door de schijf /dev/hda1 te lezen.

Merk op dat we naar een NFS-directory kunnen kijken (zie de eerste regel), om maar even te laten zien hoe flexibel automount en autofs zijn in het gebruik ;-)

Resterende opmerkingen

Allereerst moeten we even wijzen op het feit dat bij een eerste toegang tot een bestand in een dergelijke directory, het mechanisme om een pad te completeren niet werkt. Om niet de volledige padnaam in te hoeven tikken maken we vaak gebruik van de TAB-toets die vervolgens namen voor ons completeert. Als het bestandssysteem nog niet geladen is zal dit niet werken. Uitgaande van het vorige voorbeeld waarbij ik toegang wil tot config.sys wil ik het volgende intikken:
$ cat /misc/<TAB>
dit zal gevolgd worden door een teleurstellende "piep" (verwar dit niet met het optimistische "piep" die je vertelt dat er meerdere mogelijkheden zijn, toets <CTRL + D> in, die je zal vertellen wat die mogelijke keuzes zijn, als ze er al zijn).

Sterker nog, dit is normaal gedrag. Het moge duidelijk zijn dat de directory-inhoud wordt uitgelezen op het moment dat je probeert een naam te completeren. De directory /misc is echter leeg omdat het de bedoeling is dat er pas een bestandssysteem wordt geladen op het moment dat je daarop toegang probeert te krijgen. Daar staat tegenover dat je het wél kunt gebruiken als het bestandssysteem eenmaal is geladen tot het moment dat het weer automatisch wordt afgekoppeld (wanneer het in vijf minuten niet is gebruikt bijvoorbeeld).

Laten we eens kijken naar het effect hiervan, vóór en na het laden van een bestandssysteem, aan de hand van het reeds gegeven voorbeeld:

/dev/hda6 on / type ext2 (rw)
none on /proc type proc (rw)
/dev/hda9 on /home type ext2 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
automount(pid362) on /home type autofs (rw,fd=5,pgrp=362,minproto=2,maxproto=3)
automount(pid364) on /misc type autofs (rw,fd=5,pgrp=364,minproto=2,maxproto=3)
automount(pid366) on /mnt type autofs (rw,fd=5,pgrp=366,minproto=2,maxproto=3)
We zie hier een daemon (zeg maar systeemproces) voor ieder laadpunt. Verder is het aangegeven type hiervoor autofs. Na het lezen van mijn bestand /misc/windoz/config.sys ziet het systeem er zó uit:
/dev/hda6 on / type ext2 (rw)
none on /proc type proc (rw)
/dev/hda9 on /home type ext2 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
automount(pid362) on /home type autofs (rw,fd=5,pgrp=362,minproto=2,maxproto=3)
automount(pid364) on /misc type autofs (rw,fd=5,pgrp=364,minproto=2,maxproto=3)
automount(pid366) on /mnt type autofs (rw,fd=5,pgrp=366,minproto=2,maxproto=3)
/dev/hda1 on /misc/windoz type vfat (rw)
De laatste regel geeft precies weer wat we hadden verwacht :). Indien we nu 60 seconden wachten zonder wederom een bestand hierin te lezen dan zullen we de regel zien verdwijnen.

Afronding

Op een PC met daarop Linux en, bijvoorbeeld, Windows is het gebruik van dit mechanisme niet zo nuttig, tenzij je het regelmatig inloggen als root wilt voorkomen (wat op zich een goede zaak is). Het is dan voldoende om de gegevens te definiëren voor FAT en FAT32- partities om zodoende data te kunnen lezen.

Het wordt echter wat interessanter in een netwerk omdat we dan yellow pages, NFS en anderen kunnen benaderen zonder dat we ons zorgen hoeven maken over op welke machine we nou fysiek zitten.

Een groot voordeel van automount is dat een kapotte bestandsserver alleen dié gebruikers dupeert die momenteel op die server werken. Dit kan de nutteloos verbruikte tijd in grote bedrijven aardig bekorten (met bijvoorbeeld 10 NFS-servers).