Home | (How To)?
0.1) Deljenje datoteka preko NFS-a.
0.1.1) UvodNFS (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 jezgruNa 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 alataInstalacija 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 logovaKao š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 serveraNa 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
.
. .
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 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
.
. .
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 klijentaSada 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
|