WWW.GENTOO-SRBIJA.ORG
This foreign policy stuff is a little frustrating-GW Četvrtak, 08 Januar/2009  
 » SADRŽAJ
 › Uvod
 › Performanse
 › Mirori
 › Linkovi
 › Download
 › Mailing lista
 › Kontakt
 » PROFIL
» šifra
zapamti me
  Registracija
 » PRETRAGA
 » NOVI PAKETI
mail-filter/MailScanner-4.70.7.1: Free Anti-Virus and Anti-Spam Filter
dev-util/tmake-2.12: A Cross platform Makefile tool
dev-perl/Filesys-Df-0.92: Disk free based on Filesys::Statvfs
app-shells/bash-completion-20060301: Programmable Completion for bash
app-portage/gentoolkit-0.2.4.2-r1: Collection of administration scripts for Gentoo
app-crypt/pgpdump-0.26: A PGP packet visualizer
app-admin/bcfg2-0.9.6: Bcfg2 is a configuration management tool.
net-misc/dhcpcd-4.0.7: A fully featured, yet light weight RFC2131 compliant DHCP client
net-misc/dhcpcd-4.99.6: A fully featured, yet light weight RFC2131 compliant DHCP client
net-misc/dhcpcd-4.0.6: A fully featured, yet light weight RFC2131 compliant DHCP client
 » WEBMAIL
 » GENTOO-PORTAGE
And we're back
 »  NFS_deljenje_datoteka
Home | (How To)?
0.1 Deljenje datoteka preko NFS-a.
0.1.1 Uvod
0.1.2 Podrška u jezgru
0.1.2.1 2.4 jezgro
0.1.2.2 2.6 jezgro
0.1.3 Emerge NFS alata
0.1.4 Podešavanje EXPORTS fajla
0.1.4.1 Opcije za izvočenje (export)
0.2 Pokretanje servisa i testiranje
0.2.1 Pokretanje i pregled logova
0.3 Podešavanje NFS servera
0.4 Podešavanje NFS klijenta
0.5 NFS verzija 4



0.1) Deljenje datoteka preko NFS-a.


0.1.1) Uvod

NFS (Network File System), u prevodu mrežni sistem fajlova, je najčešće korišćeni sistem za deljenje fajlova i direktorijuma, kada su Linux mašine u pitanju. NFS je napravio Sun Microsystems, kako bi se preko ovog porta omogućio komunikaciju različitih računarskih okruženja. Preko ovog sistema se udaljeni direktorijum ponaša i vidi kao lokalni. Godinama se svašta menjalo kad je NFS u pitanju, recimo nekada je podržavao samo UDP pakete, a danas podržava sve TCP konekcije. U Linuxu se podrška za NFS uključuje u jezgro (kernel) ili kao modul, postoje verzije 2,3 a 4 koje su podržane u 2.6 jezgru, naravno za oba TCP i UDP protokola.


U ovom dokumentu će u nekoliko koraka biti objašnjeno kao podići i podesiti NFS server i klijent.


0.1.2) Podrška u jezgru

Na početku je najbolje proveriti imamo li uključenu podršku za NFS u jezgru:


0.1.2.1) 2.4 jezgro


cd /usr/src/linux
make menuconfig

File Systems --->
 Network File Systems --->
  < > Coda file system support (advanced network fs)
  < > InterMezzo file system suport
  <*> NFS file system support
  [*]   Provide NFSv3 client support
  [ ]   Allow direct I/O on NFS files (EXPERIMENTAL)
  <*> NFS server support
  [*]   Provide NFSv3 server support
  [ ]   Provide NFS server over TCP support
  < > SMB file system support (to mount Windows shares etc.)
  < > NCP file system support (to mount NetWare volumes)



0.1.2.2) 2.6 jezgro


cd /usr/src/linux
make menuconfig

File Systems --->
 Network File Systems --->
  <*> NFS file system support
  [*]   Provide NFSv3 client support
  [ ]   Provide NFSv4 client support (EXPERIMENTAL)
  [ ]   Allow direct I/O on NFS files (EXPERIMENTAL)
  <*> NFS server support
  [*]   Provide NFSv3 server support
  [ ]   Provide NFS server over TCP support (EXPERIMENTAL)
  < > Secure RPC: Kerberos V mechanism (EXPERIMENTAL)
  < > SMB file system support (to mount Windows shares etc.)
  < > CIFS support (advanced network filesystem for Samba, Window and o...)
  < > NCP file system support (to mount NetWare volumes)
  < > Coda file system support (advanced network fs)
  < > Andrew File System support (AFS) (Experimental)



Nakon konfiguracije jezgro prevodimo i "instaliramo" standardnom procedurom. Podrška za mrežni sistem fajlova može biti, kao što je gore navedeno, uključena i kao modul i prevedena u jezgro (buildin) . Razlika je što, ako podršku obrezbedimo preko modula, nećemo biti u mogućnosti da sistem podignemo sa mreže u slučaju (diskless mašine) tačnije NFS neće biti dostupan sve dok sistem ne učita modul, a ako eksperimentišete sa njim na nekom nižem nivou najbolje je da bude uključen u jezgro.


0.1.3) Emerge NFS alata

Instalacija neophodnog paketa nfs-utils je gotova jednom komandom:



emerge nfs-utils



0.1.4) Podešavanje EXPORTS fajla


Kada neki direktorijum na lokalnom računaru podelimo sa ostalim računarima u mreži onda taj direktorijum nazivamo NFS export kraće export, u daljem tekstu, izvoz. Fajl /etc/exports sadrži konfiguraciju i podešavanja za sve izvezene direktorijume, tj. direktorijume koje delimo u mreži. Primer jednog /etc/exports fajla izgleda ovako:



/mnt/share gentoos*(rw,sync)
/tmp/fileswap *(rw,no_root_squash,async)
/mnt/storage 192.168.1.0/24(rw,no_root_squash,sync)
/var/ftp 192.168.1.0/24(ro,all_squash,async)
/home/zion watchtower(rw,all_squash,sync,anonuid=567,anongid=567)


Objašnjenje za svaki primer koji smo gore naveli:

1. Direktorijum /mnt/share je dostupan za sve radne stanice čiji hostname počinje sa gentoos. Izvoz (export) ima dozvole za čitanje/pisanje i po prirodi sinhroni prenos podataka.

2. Direktorijum /tmp/fileswap je dostupan za sve radne stanice (uključujući i imena). Izvoz ima dozvole za čitanje/pisanje i po prirodi ima asinhroni prenos podataka. Administratorski root nalog sa lokalne stanice će imati root pristup na udaljenoj radnoj stanici.

3. Direktorijum /mnt/storage je dostupan za sve radne stanice u 192.168.1.0/24 sabnetu. Izvoz (export) ima dozvole za čitanje/pisanje i po prirodi sinhroni prenos podataka. Administratorski root nalog sa lokalne stanice će imati root pristup na udaljenoj radnoj stanici.

4. Direktorijum /var/ftp je dostupan za sve radne stanice u 192.168.1.0/24 sabnetu. Izvoz (export) ima dozvolu samo za čitanje, i svi korisnici će biti prebačeni da se povežu na 'nobody' nalog (squashed). Ima asinhroni prenos podataka.

5. Direktorijum /home/zion je jedino vidljiv sa watchtower radne stanice. Izvoz ima dozvole za čitanje/pisanje i prenos podataka je sinhroni. Svi korinici će biti prebačeni da se povežu kao UID i GID 567. Ovo podrazumeva da nalog zion na serveru ima UID/GID 567.


0.1.4.1) Opcije za izvočenje (export)

Sledeće opcije koje sam naveo su osnovne opcije za izvočenje direktorijuma, za više informacija otkucajte man exports.

rw - Dozoljava čitanje i pisanje u izvezeni direktorijum.

ro - Dozvoljava samo čitanje, pisanje je zabranjeno.

all_squash - Prebacuje sve korisnike da se povežu na nobody nalog i da preuzmu njegove dozvole.

no_root_squash - Dozvoljava administratorskom root nalogu na klijentu da pristupi izvezenom direktorijumu na serveru kao root nalog.

anonuid Prebacuje sve anonimus konekcije na predefinisani UID na serveru

anongid Prebacuje sve anonimus konekcije na predefinisani GID na serveru

Nakon odrečivanja svih direktorijuma koje želimo da izvezemo, promene moraju biti poslate kroz NFS mounting daemon (mountd) koji čuva listu svih dostupnih izvoza u fajlu /var/lib/nfs/etab (ili xtab).



exportfs -rav
exporting gentoos*:/mnt/share
exporting *:/tmp/fileswap
exporting 192.168.1.0/24:/mnt/storage
exporting 192.168.1.0/24:/var/ftp
exportfs: zelda has non-inet addr



0.2) Pokretanje servisa i testiranje


0.2.1) Pokretanje i pregled logova

Kao što smo spomenuli, opcije za izvoz direktorijuma mogu da se proguraju do mount daemon-a preko komande exportfs, nfs i portmap init skripte se brinu ostale bitne funkcije. Treba proveriti da li su ovi servisi pokrenuti, ako nisu treba ih pokrenuti:



/etc/init.d/nfs restart
/etc/init.d/portmap restart


Da bi smo proverili listu svih izvezenih direktorijuma, koristimo komandu showmount -e (za lokalni ili udaljeni računar).



showmount -e zelda
/mnt/share gentoos*(rw,sync)
/tmp/fileswap *(rw,no_root_squash,async)
/mnt/storage 192.168.1.0/24(rw,no_root_squash,sync)
/var/ftp 192.168.1.0/24(ro,all_squash,async)
/home/zion zelda(rw,all_squash,sync,anonuid=567,anongid=567)


Logovi svih dešavanja i grešaka se mogu videti komandom:



tail -n 50 /var/log/messages



0.3) Podešavanje NFS servera

Na početku smo spomenuli da je podrška za NFS 2,3 i 4 je uključena u samo jezgro. Komandu rpcinfo možemo iskoristiti da proverimo server koji će vratiti listu RPC detalja, najvažniji od njih su nfs i mountd . Sledeći upit na zelda serveru nam govori da su pokrenute verzije 1,2 i 3 NFS protokola, verzija 4 je drugačije podržana i ovaj deo ćemo objasniti kasnije.



rpcinfo -p zelda
    program vers proto   port
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
.
.   ### OSTALO JE UKLONJENO ###
.
    100005    1   udp    997  mountd
    100005    1   tcp   1000  mountd
    100005    2   udp    997  mountd
    100005    2   tcp   1000  mountd
    100005    3   udp    997  mountd
    100005    3   tcp   1000  mountd


NFS "demon za montažu" se može konfigurisati da ignoriše klijente koji pokušaju da se povežu sa odrečenom NFS verzijom. Sledeće opcije u fajlu "/etc/conf.d/nfs" upućuju demona da ignoriše verzije 1 i 2. Za više informacija o "demonu za montažu" (mounting daemon) u komandnom promptu otucajte "man rpc.mountd".



cat /etc/conf.d/nfs #ostale opcije su uklonjene
RPCMOUNTDOPTS="-N 1 -N 2"


Nakon dodavanja ovih opcija potrebno je restartovati NFS servis,



/etc/init.d/nfs restart


a izlaz komande rpcinfo -p nakon ovih izmena izgleda ovako:



rpcinfo -p zelda
   program vers proto   port
.
.   ### OSTALO JE UKLONJENO ###
.
    100005    3   udp    997  mountd
    100005    3   tcp   1000  mountd


Napomena: Ako koristite verziju 4 NFS protokola, mountd mora da podrži bar verziju 3; ne možemo isključiti sve tri verzije.


0.4) Podešavanje NFS klijenta

Sada kad smo uspešno konfigurisali NFS server sa izvezenim fajlsistemima, treba konfigurisati radne stanice (klijente) da se uspešno povežu i koriste resurce na NFS server mašini. Servis portmap je zadužen za pozive izmeču servera i klijenta, prema tome ovaj servis treba da bude pokrenut; portmap servis bi trebala, automatski, da pokrene init skripta za NFS ( /etc/init.d/nfs ) ali ako je potrebno nezavisno startovati/gasiti/restartovati, portmap ima svoju init skriptu ( /etc/init.d/portmap ). Za proveru statusa portmap servisa na klijentu, koristimo komandu rpcinfo:



rpcinfo -p watchtower
   program vers proto   port
    100000    2   tcp     111  portmapper
    100000    2   udp    111  portmapper


Nakon provere postojanja portmap servisa, komandom showmount -e zelda proveravamo koji su resursi izvezeni na serveru;



showmount -e zelda
/mnt/share gentoos*(rw,sync)
/tmp/fileswap *(rw,no_root_squash,async)
/mnt/storage 192.168.1.0/24(rw,no_root_squash,sync)
/var/ftp 192.168.1.0/24(ro,all_squash,async)
/home/zion zelda(rw,all_squash,sync,anonuid=567,anongid=567)


Izvezene fajlsisteme koje server vrati kao izlaz komande shownmount, montiramo u istom stilu kao i lokalne fajlsisteme, koristimo komandu mount. Prvo ćemo kreirati direktorijume kao krajnja mesta za montažu (mountpoints) na primer:



mkdir /mnt/zelda/share
mkdir /mnt/zelda/storage
mkdir /tmp/fileswap
mkdir /mnt/zelda/ftp
mkdir /home/zelda/zion


Tabela fajl sistema ( /etc/fstab ) je konfiguracioni fajl sa detaljima za montiranje svih fajlsistema koji se nalaze na domaćinu; u ovom fajlu ćemo dodati informacije kako bi smo uspešno montirali izvezene fajlsisteme sa našeg NFS servera. Takoče treba znati da je moguće za svaki izvezeni fajlsistem definisati nezavisne/posebne/dodatne opcije. Sledeći primer izgleda fstab fajla, na lokalnom računaru, će pokazati da je definisani fajlsistem nfs podešen da podrži tj. da se poveže verzijom 2 i 3 nfs protokola. Default verzija (ovo zavisi od server) je obično verzija 2, tako da će primeri u drugom i petom redu, zahtevati od servera da se izričito povežu verzijom 3 (nfsvers=3)



cp /etc/fstab /etc/fstab.original
nano /etc/fstab
zelda:/mnt/share      /mnt/zelda/share         nfs      defaults 0 0
zelda:/tmp/fileswap  /tmp/fileswap               nfs      defaults,nfsvers=3,tcp 0 0
zelda:/mnt/storage   /mnt/zelda/storage       nfs      defaults,rsize=8192,wsize=8192 0 0
zelda:/var/ftp           /mnt/zelda/ftp              nfs      sync,auto,ro,noexec,hard,intr 0 0
zelda:/home/zion      /home/zelda/zion         nfs      defaults,nfsvers=3,tcp,retry=30,rsize=8192,wsize=8192 0 0


Sada je naša tabela fajlsistema spremna i sadrži sve nophodne detalje da se uspešno poveže na NFS server, konekcije se mogu ostvariti komanadom mount. Sledeći primer pokazuje kako da montiramo lakaciju /mnt/zelda/storage koju smo prethodno definisali u fajlsistem tabeli.



mount /mnt/zelda/storage


Ostale konekcije, takoče mogu biti ostvarene u isto vreme ako mount komandi bacimo opciju -a (all), i definišemo nfs fajlsistem opcijom -t. Ova komanda će nam brzo obezbediti sve konekcije u isto vreme.



mount -a -t nfs


Kad ostvarimo konekciju, komandom za listanje direktorijuma možemo da pogledamo sadžaj uvezenog NFS fajlsistema.



ls -l /mnt/zelda/storage
drwxr-xr-x   3 root root      4096 Aug 29 21:35 Diablo
drwxrwxrwx  21 root root      4096 Oct 13 22:12 Warcraft III
drwxr-xr-x   7 1001 users     4096 Mar  3  2005 Linuxinstall
drwxrwxr-x  19 1001 portage   4096 Sep 16 23:12 gentoo


Konekcija sa NFS serverom se takoče može ostvariti "ručno" iz komandne linije. Pogledajmo sledeći primer:



mount -t nfs zelda:/var/ftp /tmp/ftp -o ro,sync,auto,hard,intr


Komandom mount -l možemo videti kompletan listing svih montiranih fajlsistema i ostvarenih NFS konekcija, a ako želimo da "otkačimo" uvezene fajlsisteme, koristićemo komandu umount na primer:



umount /mnt/zelda/storage
umount /home/zelda/zion


Ako je konekcija sa NFS serverom dobro konfigurisana ali slučajno iz nekog razloga postane problematična, ponovno pokretanje portmap servisa može biti od pomoći. Ovo se vrlo retko dešava.



/etc/init.d/portmap restart



0.5) NFS verzija 4






  Stranicu poslednji put izmenio: z10n 2006-04-25 12:40:23