Log in


Forgot your password?
prijatelji LUGoNSa
gnu.gif
linuxzasve.jpg
hulk.jpg
zextras_logo.png
 
You are here: Home / Uputstva / Opšte / Network File System - NFS

Network File System - NFS

by Nikola Kotur last modified Aug 04, 2006 02:41 PM
Kratko upustvo kako radi i kako se koristi NFS
Network File System (NFS u budućem tekstu) je poseban set protokola razvijen da bi omogućio računarima u mreži da koriste disk particiju ili direktorijum na udaljenoj mašini, i da bez problema dele fajlove. Linux NFS web stranica se nalazi na adresi: http://nfs.sourceforge.net, i tamo možete naći mnogo podataka o ovom odličnom paketu. Dokumentacija je na engleskom jeziku, a ako se javi interesovanje LUGoNS može prevesti najpotrebnije dokumente i na srpski. Pre nego što počnete da podešavate NFS, morate znati da on nije smišljen za heterogenu mrežu koja se sastoji iz različitih računara (pre svega mislim da sadrži i Windows operativne sisteme), i u tom slučaju je bolje da pogledate Sambu kao rešenje.

Šta je potrebno?

Svi kerneli iznad verzije 2.4 imaju ugrađenu NFS 3 funkcionalnost, i ona mora biti ukompajlirana bilo kao modul ili statički. Ako koristite kernel vaše distribucije velike su šanse da je to već tako i urađeno, pa se nećete morati truditi da prolazite kroz kompajliranje kernela sa uključivanjem svih potrebnih opcija. Pošto skoro svih distro kerneli imaju NFS dostupan, kompajliranjem kernela se ovde nećemo baviti, jer onaj ko sam sebi kompajlira kernel, ionako treba da zna šta radi i sam može to da uradi. Svi potrebni programi takođe dolaze sa svim distribucijama, i sa te strane nema nikakvih problema.
 
Podešavanje servera

NFS implementacija se sastoji iz servera (u kome se nalaze deljene particije i direktorijumi) i klijenta (koji njima pristupa). Server se podešava tako što se prvo podese konfiguracioni fajlovi za NFS, a zatim se pokrenu odgovarajuće skripte. Sa serverske strane imaćete posla samo sa tri fajla:

/etc/exports, /etc/hosts.allow, i /etc/hosts.deny.

Doduše, za podešavanje samog servera možete editovati samo prvi fajl, ali bi onda ostavili mrežu veoma ranjivom na napade spolja. Sintaksa /etc/exports fajl je vrlo jednostavna i možete je pogledati sa man exports, i tu se nalazi spisak direktorijuma koje delimo sa mrežom.

Za svaki direktorijum se navode računari koji smeju da mu pristupe i s kojim pravima. Primer /etc/exports fajla:

/usr/share 192.168.0.0/255.255.255.0(rw)
/mnt/cdrom 192.168.0.2(ro)


Sintaksa ovog fajla je vrlo vrlo jednostavna i možete je se prisetiti preko man exports. Fajlovi /etc/hosts.allow i /etc/hosts.deny su vrlo bitni za sigurnost vaše mreže. Kada server primi bilo koji zahtev od nekog udaljenog računara, on onda radi sledeće:
  • Server prvo proverava da li se taj računar nalazi u fajlu /etc/hosts.allow, odnosno da li se nalazi njegova IP adresa. Ako je tako, onda je pristup dozvoljen.
  • Ako računara nema u /etc/hosts.allow, onda server pogleda u fajl /etc/hosts.deny, pa ako se računar nalazi na tom spisku, onda njegov zahtev bude galantno odbijen.
  • Ako računara nema ni na jednom od spiskova, pristup je dozvoljen.

Mislim da sada shvatate važnost ova dva fajla. Prvi korak je da u fajl /etc/hosts.deny dodate sledeće redove:

portmap: ALL
lockd: ALL
mountd: ALL
rquotad: ALL
statd: ALL


I zatim u /etc/hosts.allow na primer sledeće redove:

portmap: 192.168.0.1 , 192.168.0.2
lockd: 192.168.0.1 , 192.168.0.2
rquotad: 192.168.0.1 , 192.168.0.2
mountd: 192.168.0.1 , 192.168.0.2
statd: 192.168.0.1 , 192.168.0.2


IP brojevi se mogu razlikovati, već u tipu mreže koji izaberete i samih brojeva računara, pošto se poslednji broj najčešće proizvoljno određuje za mreže klase C (ali ne može biti ni 0 niti 255). Za ovo pogledajte naredbu ifconfig na svakom računaru čiji vas IP interesuje. Sada smo podesili sve fajlove i ostalo nam je da startujemo server.

Prvi koji mora biti startovan je program zvani Portmapper. Sve što dalje budem iznosio u vezi lokacije programa se odnosi na Slackware distribuciju, a SysV orijentisane distribucije sve sistemske skripte drže u /etc/init.d/ direktorijumu i možete ih tamo naći.
Dakle, prvo budimo Portmappera. Kao root korisnik kucajte:

chmod 755 /etc/rc.d/rc.portmap
/etc/rc.d/rc.portmap start


Nije potrebno da restartujete sistem, pošto smo startovali Portmappera i dajući mu prava na izvršavanje, on će biti startovan pri svakom narednom uključivanju računara, te ćemo ove naredbe morati izvršiti samo jednom. Samo da napomenem, GNU/Linux sisteme je potrebno restartovati samo kada menjate kernel ili kada ubacite neki novi hardver u računar, i nikada više. Ako vam bilo ko bude tvrdio nešto drugo, znajte da se radi ili o ne znanju ili o lenjosti dotičnog da to uradi bez potrebe za restartovanjem. No, da se vratimo temi.

Sledeća skripta koju treba da pokrenete je /etc/rc.d/rc.nfsd, koja će pokrenuti sam server. Ovde je važno napomenuti da u fajlu /etc/exports morate imati već nameštene neke direktorijume koje ćete deliti, inače će NFS misliti da se šalite s njime i budite ga bez veze i neće hteti da se podigne. Dakle, kao root korisnik kucajte sledeće:

chmod 755 /etc/rc.d/rc.nfsd
/etc/rc.d/rc.nfsd start


I sada je sve spremno, što se servera tiče. Još samo ostaje da proverite da li je sve pokrenuto, a to ćete uraditi tako što ćete upitati Portmapera na sledeći način:

root@~# rpcinfo -p
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100011 1 udp 946 rquotad
100011 2 udp 946 rquotad
100011 1 tcp 949 rquotad
100011 2 tcp 949 rquotad
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100021 1 udp 1024 nlockmgr
100021 3 udp 1024 nlockmgr
100021 4 udp 1024 nlockmgr
100005 1 udp 958 mountd
100005 1 tcp 961 mountd
100005 2 udp 958 mountd
100005 2 tcp 961 mountd
100005 3 udp 958 mountd
100005 3 tcp 961 mountd
100024 1 udp 964 status
100024 1 tcp 967 status

Ako dobijete ovakav ili sličan odgovor na rpcinfo -p naredbu, onda znači da je sve u redu i da možete nastaviti sa podešavanjem klijenata. Ako bude nekih problema, onda se vratite na početak teksta i pogledajte da li ste sve uradili kako treba, a posebno obratite pažnju da /etc/exports fajl ne bude prazan inače vas NFS neće shvatati ozbiljno. Ako budete menjali fajl /etc/exports dok je server startovan, nemojte zaboraviti da posle svake izmene pokrenete exportfs -ra komandu. Nemojte da bude uzaludnog čupanja kose :)

Podešavanje klijenta

I kada smo završili sa serverom, red je da se malo pozabavimo i sa klijentskom stranom priče. Oba računara treba da imaju NFS 3 i kernel i /proc fajl sistem, ali pošto to daje bukvalno svaka distribucija, nema mnogo smisla izlizivati prste objašnjavajući to.

Bitno je da se Portmapper mora izvršavati na klijent mašini. Već smo objasnili kako da se pokrene taj program. Takođe, da bi se koristile neke napredne funkcije NFS sistema, potrebno je da na klijentu budu pokrenuti i rpc.statd, kao i rpc.lockd. Ti programi se pokreću u nekoj od startup skripti koje dolaze sa distribucijom (za Slackware je to rc.nfsd), i pogledajte u dokumentaciji za vašu distribuciju kako da ih pokrenete, a kao naznaku, reći ću vam da se nalaze u direktorijumu /sbin. Kada je sve spremno, možete da mount-ujete direktorijum na udaljenom računaru.

NFS direktorijumi se uključuju preko mount komande, baš kao i particije na vašem hard disku. Probajte sada da mount-ujete udaljeni direktorijum: mount 192.168.0.1:/usr/share /mnt/test S tim da je 192.168.0.1 IP adresa udaljenog računara, i da morate imati napravljen /mnt/test direktorijum. Kada se uverite da sve radi, možete isključiti udaljeni fajl sistem preko: umount /mnt/test Sada možete podestiti sistem da mount-uje taj udaljeni direktorijum svaki put kada pokrene računar. Kao i za svaki fajl sistem, to se vrši u konfiguracionom fajlu koji se zove /etc/fstab. Sintaksu ovog fajla možete pogledati sa man fstab, ali ću vas sada ovde kratko napomenuti kako treba da izgleda. Taj fajl se sastoji iz linija u kojima se definiše koji fajl sistem se mount-uje, gde, kako i s kojim opcijama. Svaki red se sastoji iz "reči" koje su razdvojene razmacima ili tabulatorima i koje imaju značenje:
  1. Uređaj ili udaljeni direkorijum
  2. Mesto monunt-ovanja
  3. Tip fajls sistema
  4. Opcije
  5. Dampovati ili ne
  6. FSCK red

I primer za automatsko mount-ovanje udaljnog direktorijuma za naš slučaj u fstab-u bi izgledao ovako:

# device mountpoint fs-type options dump fsckorder 192.168.0.1:/usr/share /mnt/test nfs rw,hard,intr 0 0

I to bi bilo to.

Rezime

Sada znate kako funkcioniše i kako se stavlja u funkciju NFS sistem. Znate da se sastoji iz serverskog i klijentskog dela, i grubo znate da podesiti obe strane te medalje. Ako negde budete imali problema, možete potražiti pomoć na oficijelnom sajtu NFS-a, u mnogobrojnim forumima na kojima će se neko sigurno naći ko može da vam pomogne, ili se možete obratiti nama iz LugoNS-a, tj. Udruženja Linux korisnika Novog Sada.
Sada ste verovatno u stanju da podignete fajl server za svoju lokalnu ili bilo koju mrežu, i vidite da to nije nikakav problem, samo ako se zna šta i gde treba da se gleda. Ako imate Windows mašine u svojoj mreži, onda NFS nije ono što vam treba, jer, kao što i sami znate, Majkrosoft ima čudnu praksu da svojevoljno menja standarde ne obazirući se da li je to na korist njegovih mušterija, već radi dominacije na određenom polju. U tom slučaju, moraćete koristiti Samba paket koji daje podršku za SMB protokol. A u svakom drugom slučaju, bilo da imate AIX, BSD, HP-UX, Solaris, ili bilo koju drugu mašinu, onda ćete NFS-om postići deljenje fajlova unutar mreže.

Document Actions

Filed under: