NFS (Network Filesystem)

Jiří Škrabal, xskrabal


Obsah



RPC (Remote Procedure Call)

RPC, neboli vzdalene volani procedur, poskytuje velmi obecny mechanismus pro aplikace typu klient-server. Vyvynula ho firma Sun Microsystem a je to v podstate sada knihoven. Krome NFS vyuziva RPC hlavne NIS (Network information system). Server RPC se sklada ze sady procedur, ktere si muze klient zavolat tak, ze posle serveru pozadavek RPC vcetne parametru procedury. Server spusti jmenem klienta pozadovanou proceduru a pripadne navratovy kod. Server RPC nabizi jednu nebo vice sad procedur, kazda se nazyva program a je jednoznacne urcena cislem programu. Seznam sluzeb a jejich cisel je v souboru /etc/rpc. U syte typu TCP/IP nebo UDP/IP se pouziva pro sluzbu specificke cislo portu. Implicitne se pouzije UDP, pokud se posilana data nevejdou do jednoho datagramu, pouzije se TCP. Protoze ale nemuzeme predem vedet, zda urceny port neni obsazeny nejakym jinym procesem, vyberou si aplikace RPC nejaky volny port a registruji ho pomoci demona portmapd. Ten pak zprostredkuje predavani cisel portu volajicich aplikaci.

Secure RPC

Samozrejme z duvodu bezpecnosti a omezeni pristupu k RPC sluzbam. Klientske programy pouzivajici RPC server tedy potrebuji nejaky zpusob autentizace, aby server rozlisil ktere informace muze klientovi zpristupnit. Je nekolik zpusobu, jak se autentizovat, ale ne vsechny jsou dostupne ve vsech verzich RPC.
AUTH_NONE bez autentizace
AUTH_UNIX klient posila sve UID a GID's
AUTH_DES Zalozeno na asymetricke kriptografii
AUTH_KERB Zalozeno na systemu kerberos
Na konci 80-tych let Sun prislo se Secure RPC. To pouziva AUTH_DES autentizace a jeste jine bezpecnostni sluzby.

Co je to NFS

NFS umoznuje pristup k souborum na vzdalenych hostitelich. V podstate jde o stejny system pristupu k souborum, jako pristup uzivatele k mistnim souborum. Toto je realizovano pomoci sluzeb jadra na strane klienta a NFS serveru na strane serveru. Vyhodou je treba pripojeni home adresaru, ktere mohou byt uschovany na jednom serveru. V kombinaci se systemem NIS mohou vsichni uzivatele pracovat se stejnou sadou souboru.

Vyvoj NFS

NFS Verze 1:
Toto byla jen prototypova verze a nikdy nebyla pouzita.
NFS Verze 2:
Toto byla prvni distribucni verze v SunOS 2 operacnim systemu.
NFS Verze 3:
Tato verze podporuje mnoho z verze 2, plus jeste pridava podporu Secure RPC.

Jak NFS funguje

NFS tedy pracuje nad protokoly MOUNT a NFS. Pokud je tedy potreba pripojit vzdaleny adresar, postupuje se jako pri pripojovani fyzickeho zarizeni. Napriklad pro hostitele host1, ktery chce pripojit adresar /tmp z pocitace nykolka do sveho adresare /mnt/tmp:

$ mount -t nfs nykolka:/tmp /mnt/tmp

Prikaz mount se pokusi pomoci RPC procedur spojit s pripojovacim demonem mountd , ktery bezi na pocitaci nykolka. Pak probehne autentizace a predani klice, ... Pri pristupu k souborum pomoci systemu souboru NFS spusti jadro volani procedury RPC smerem na demona nfsd, ktery je opet na pocitaci nykolka. Implementace NFS na Linuxu je udelana tak, ze kod klienta je pevne integrovan do virtualniho systemu souboru (VFS) v jadru a server bezi v uzivatelskem prostoru. Je tedy nemozne spustit nekolik kopii serveru najednou, protoze pak nastavaji problemy se synchronizaci.

Konfigurace NFS

Pro pouzivani NFS je potreba mit v jadru prikompilovanou podporu NFS. To, zda vas system podporuje NFS, se da zjistit ze souboru /proc/filesystems. Take se to da zjistit napriklad prikazem:

$ mount -t nfs localhost:/etc /tmp/novy_adresar

Nektere volby pro "mountovani":
rsize=n wsize=n tyto volby urcuji velikost datagramu, ktere jsou pouzity pro cteni/zapis. Implicitni hodnota je 1kB
timeo=n Specifikuje, jak dlouho bude klient cekat na splneni pozadavku. Impicitne 0,7 sekundy. (Zadavano v desetina sekundy)
hard Pokud pozadavek k serveru selze, pak (pokud neni zadano option intr) nelze klientsky program ukoncit. Ten obnovi cinnost pote, co server bude zase funkcni. Timto zpusobem nedojde k poruseni struktury souboru. Je doporuce pouzivat.
soft Opak hard. Pri "spadnuti" serveru muze dojit k poskozeni souboru. Nedoporuceno zejmena pro home adresare (vcetne mail)
intr Tato volba povoli signalum prerusit volani systemu NFS
Demon mountdbude obvykle nejakym zpusobem informovan o tom, ktere adresare jsou pripojeny ke kterym hostitelum. Tyto informace lze zobrazit pomoci programu showmount
Pro konfiguraci serveru je tedy potreba mit bezici demony: rpc.portmap, nfsd a mountd. Volby pro konfiguraci serveru jsou v souboru /etc/exports. Chcete-li jednomu nebo vice hostitelum umoznit pripojeni adresare pomoci NFS, musi byt tento adresar exportovan, tj. uveden v /etc/exports Format tohoto souboru je:
directory machine1(option11,option12) machine2(option21,option22)
volby optionXX jsou nektere z:
ro pouze pro cteni
rw pro cteni a zapis
no_root_squash root pripojujici se z klienta bude root-em i na exportovanem svazku
no_subtree_check pokud se pripojuje cely svazek, pak to je pro urychleni pripojeni
Pro zvyseni bezpecnosti se pouzivaji pro omezeni pristupu k exportovanym svazkum soubory /etc/hosts.allow a /etc/hosts.deny.

Automounter

V nekterych pripadech neni hospodarne pripojovat svazek ihned po startu systemu a v podstate naporad. Z tohoto duvodu existuje demon "automatickeho pripojovani". Jedna se o demona, ktery automaticky (v pripade potreby) pripojuje libovolne svazky systeme a take automaticky odpojuje, pokud nebyly po urcitou dobu pouzivany. Timto demonem je automount a je spousten skriptem /etc/rc.d/init.d/autofs. autofs cte konfiguracni soubor /etc/auto.master a spousti demona s potrebnymi parametry. Format souboru /etc/auto.master je:
mount_pointmap_type:map_nameoptions
Kde mount_poit je misto pripojeni,
map_type:map_name reprezentuje pripojovane misto (map_type je jeden z: file, program, yp, nisplus, hesiod a map_name je jmeno svazku)
options jsou nepovinne volby (napriklad --timeout n)
Format casti map_name je napriklad:

kernel -ro,soft,intr ftp.kernel.org:/pub/linux
boot -fstype=ext2 :/dev/hda1
windoze -fstype=smbfs ://windoze/c


kde prvni pole je klic, druhe reprezentuje options a treti je adresar (pripadne jeste stroj)

Literatura