Objavljeno: 30.3.2005 18:19 | Avtor: Dalibor Kranjčič | Monitor December 2004

Omrežni datotečni sistemi

Storitev omrežnega datotečnega sistema NFS (Network File System) so razvili v podjetju Sun Microsystems v 80-tih letih prejšnjega stoletja kot način deljenja skupnega datotečnega sistema, ki je nameščen na disku krajevnega strežnika, za več odjemalcev operacijskega sistema UNIX. Ta topologija računalniškega omrežja je bila tedaj pogojena predvsem z visokimi cenami diskov.

Omrežni datotečni sistem NFS temelji na odnosu odjemalec-strežnik. Strežnik NFS ponuja podatkovne vire na lastnem disku na voljo odjemalcem NFS. Določanje podatkov za izvoz in dostopnih pravic za odjemalce ter pripadajoče uporabnike je opredeljeno v nastavitveni datoteki /etc/exports strežnika NFS. Odjemalci NFS priklapljajo mape v strežniku NFS na lokalne mape z ukazom mount, ki se prav tako uporablja za dostop do podatkov na disketi in cd-romu. Po priklopu podatkov so ti dostopni za običajne ukaze v datotečnih sistemih, na primer za preslikavo in urejanje datotek. Danes je uporaba datotečnega sistema NFS manj razširjena zaradi razmeroma nizke cene in zmogljivejših diskov, vendar je uporaba te storitve zelo uporabna, predvsem pri ustvarjanju javno dostopnih arhivov.

Priklop

Za priklop datotečnega sistema v krajevnem strežniku v omrežju na naš računalnik se uporabi ukaz mount (priklop). Osnovna sintaksa je naslednja:

mount opcije oddaljeni_strežnik:/mapa_na_oddaljenem_strežniku mapa_na_lokalnem_računalniku

Če želimo na primer priklopiti vsebino mape /home/odjemalci, ki je v oddaljenem strežniku master, na mapo lokalnega računalnika /mnt/nfs, kot korenski (root) uporabnik v ukazni lupini vpišemo naslednje:

# mount -t nfs master:/home/odjemalci /mnt/nfs

Argument nfs pri opciji -t določa tip datotečnega sistema. Za identifikacijo oddaljenega sistema je podano gostiteljsko ime (host name) strežnika master, ki je vpisano skupaj s pripadajočim naslovom IP v datoteko /etc/hosts v lokalnem računalniku. Če ta vpis ni podan v datoteki /etc/hosts, lahko za priklop uporabimo samo naslov IP. Na primer:

# mount -t nfs 213.161.3.11:/home/odjemalci /mnt/nfs

Podatek o gostiteljskem imenu ali naslovu IP strežnika NFS in dostopne pravice za uvoz map se dobi od upravitelja krajevnega omrežja.

Možen je izvoz oddaljene mape z dostopnimi pravicami samo za branje. V ta namen uporabimo opcijo -r (read-only):

# mount -t nfs -r 213.161.3.11:/home/odjemalci /mnt/nfs

ali pa

# mount -t nfs -o rdonly 213.161.3.11:/home/odjemalci /mnt/nfs

Več informacij o ukazu mount je podano na straneh man:

# man mount

Odklop

Sintaksa je enaka kot pri ukazu mount, vendar se tokrat uporabi ukaz umount (odklop).

Priklop ob zagonu

V datoteki /etc/fstab so podani datotečni sistemi računalnika, katerih priklop se izvede ob zagonu. Navadno ob zagonu priklapljamo datotečne sisteme na diskih, vendar je prav tako možno priklapljanje omrežnih datotečnih sistemov.

Naslednji vnos vrstice v datoteki /etc/fstab omogoča avtomatski priklop vsebine mape /home/odjemalci, ki je v oddaljenem strežniku master v mapo /mnt/nfs v lokalnem računalniku:

master:/home/odjemalci /mnt/nfs nfs rsize=8192,wsize=8192,timeo=14, intr

Pregled nastavitvenih opcij v datoteki /etc/fstab:

Rsize

Število bajtov, ki jih NFS prebere v enem podatkovnem paketu (datagram) iz strežnika NFS. Privzeta vrednost je 1024 bajtov. Vrednost 8192 bajtov bo zagotovila maksimalno prepustnost podatkov.

Wsize

Število bajtov, ki jih NFS vpisuje v enem podatkovnem paketu (datagram) v strežnik NFS. Privzeta vrednost je 1024 bajtov. Vrednost 8192 bajtov bo zagotovila maksimalno prepustnost podatkov.

Timeo = n

Nastavitev časovnega izteka timeout (v desetinah sekunde):

Odjemalec NFS počaka čas n na iztek trenutne zahteve strežniku NFS. Po preteku časovnega izteka se zahteva ponovi. Privzeta vrednost n je 14.

Intr

Omogoča uporabniku prekinitev klica na strežnik NFS s pomočjo signalov v Linuxu. Opcija ni privzeta.

Natančen opis opcij najdete na straneh "man" (man nfs).

Strežnik NFS

NFS uporablja zbirko orodij in knjižnic programskega paketa RPC (Remote Procedure Call - klic za oddaljeni postopek). Strežnik RPC je sestavljen iz zbirke postopkov, namenjenih za komunikacijo z odjemalci, ki jih odjemalci lahko kličejo s pošiljanjem zahteve RPC in pripadajočih parametrov postopka strežniku. Zbirka postopkov RPC je poimenovana program in jo identificira številka programa (program number).

Seznam, ki povezuje storitve RPC s številkami programov, je v datoteki /etc/rpc:

# cat /etc/rpc

#ident "@(#)rpc 1.11 95/07/14 SMI" /* SVr4.0 1.2 */

#

# rpc

#

portmapper 100000 portmap sunrpc rpcbind

rstatd 100001 rstat rup perfmeter rstat_svc

rusersd 100002 rusers

nfs 100003 nfsprog

ypserv 100004 ypprog

mountd 100005 mount showmount

ypbind 100007

walld 100008 rwall shutdown

yppasswdd 100009 yppasswd

(Izsek iz datoteke /etc/rpc)

Ključno vlogo pri postopku povezovanja odjemalca in strežnika RPC ima demon portmap. Strežnik RPC ob zagonu sporoči demonu portmap vrata TCP/UDP, na katerih posluša povezave in številke programov, ki jih streže. Ob klicu določene številke programa odjemalec najprej izvede povpraševanje demona portmap v strežniku, to pa nato določi številko vrat TCP/UDP za pošiljanje paketov RPC.

Zagon, zaustavitev in vnovični zagon demona portmap izvedemo kot korenski (root) uporabnik na naslednji način:

Red Hat Linux:

# /etc/rc.d/init.d/portmap start

# /etc/rc.d/init.d/portmap stop

# /etc/rc.d/init.d/portmap restart

SuSE Linux:

# rcportmap start

# rcportmap stop

# rcportmap restart

ali pa

# /etc/init.d/portmap start

# /etc/init.d/portmap stop

# /etc/init.d/portmap restart

Zahteva se, da demon portmap deluje pred zagonom strežnika NFS,

Jedro delovanja strežnika NFS omogočata demona rpc.nfsd (rpc.knfsd za kernel demon) in rpc.mountd. Način zagona, zaustavitve in vnovičnega strežnika NFS zagona je naslednji (uporabnik root):

Red Hat Linux:

# /etc/rc.d/init.d/nfs start

# /etc/rc.d/init.d/nfs stop

# /etc/rc.d/init.d/nfs restart

SuSE Linux:

# rcnfsserver start

# rcnfsserver stop

# rcnfsserver restart

Poglavitne nastavitve strežnika NFS, ki odločajo o mapah za izvoz odjemalcem NFS, so podane v izvozni datoteki (export file) /etc/ exports. Vsak vnos v datoteki /etc/exports se nanaša na en izvoz datotečnega sistema in ima sledečo osnovno sintakso:

datotečni-sistem oddaljeni_odjemalci(opcije, opcije...) ...

Zgled:

/home/mapa_za_izvoz     *(rw, no_root_squash)

Izvedli smo izvoz mape /home/mapa_za_izvoz in pripadajočih podmap vsem (znak *) računalnikom v omrežju. Če želimo omejiti izvoz na samo določene računalnike, uporabimo naslednjo sintakso:

/home/mapa_za_izvoz računalnik_1(rw, no_root_squash) računalnik_2(ro, no_root_squash) ...

Pregled nastavitvenih možnosti v datoteki /etc/exports:

ro

Izvoz mape samo za branje (read-only).

rw

Izvoz mape za branje in pisanje (read & write).

root_squash

Korenski (root) uporabnik v oddaljenem sistemu nima dovoljenja za pisanje v izvoženo mapo.

no_root_squash

Korenski (root) uporabnik v oddaljenem sistemu ima dovoljenja za pisanje v izvoženo mapo.

link_relative

Izvede pretvorbo absolutnih simboličnih povezav v izvoženi mapi na relativne simbolične povezave. Opcija je koristna pri izvozu celotnega datotečnega sistema in omogoča pravilno "preusmerjanje" simboličnih povezav po priklopu izvožene mape.

link_absolute

Ne spreminja simboličnih povezav.

Map_identity

Opcija predpostavi, da so uporabniki na strežniku NFS in uporabniki na odjemalcih NFS isti - omogočen je prenos dostopnih pravic "istih" uporabnikov pri izvozu mape iz strežnika na odjemalca. Privzeto.

Map_daemon

Opcija predpostavi, da uporabniki na strežniku NFS in uporabniki na odjemalcih NFS niso isti. Za preslikavo dostopnih pravic uporabnikov strežnika NFS na "iste" uporabnike odjemalca NFS se uporabi demon ugidd.

Vsaka naknadna sprememba nastavitev v datoteki /etc/exports zahteva vnovično ustvarjanje izvozne tabele (export table) s pomočjo orodja exportfs. Izvozna tabela se shranjuje v datoteko /var/lib/nfs/xtab, ki jo demon mountd prebere pri zahtevi odjemalca za priklapljanje. Torej, po spremembi nastavitev v datoteki /etc/exports poženemo ukaz (kot root):

# exportfs -r

Alternativa ukazu exportfs :

# rcnfsserver reload (Suse)

# /etc/rc.d/init.d/nfs reload (Red Hat)

Delovanje strežnika NFS se lahko preveri s pomočjo ukaza rpcinfo. Ukaz izpiše seznam vseh registriranih programov RPC v strežniku.

Zgled izpisa ukaza rpcinfo na delujočem strežniku NFS:

# rpcinfo -p

program vers proto port

100000 2 tcp 111 portmapper

100000 2 udp 111 portmapper

100003 2 udp 2049 nfs

100003 3 udp 2049 nfs

100003 2 tcp 2049 nfs

100003 3 tcp 2049 nfs

100021 1 udp 32771 nlockmgr

100021 3 udp 32771 nlockmgr

100021 4 udp 32771 nlockmgr

100021 1 tcp 32783 nlockmgr

100021 3 tcp 32783 nlockmgr

100021 4 tcp 32783 nlockmgr

100005 1 udp 740 mountd

100005 1 tcp 743 mountd

100005 2 udp 740 mountd

100005 2 tcp 743 mountd

100005 3 udp 740 mountd

100005 3 tcp 743 mountd

Samba

Samba je programski paket za Linux, ki omogoča povezavo z gostitelji, na katerih je nameščeni operacijski sistem Windows. Za komunikacijo uporablja Samba protokola NetBIOS in SMB , ki sta značilna za operacijske sisteme družine Windows.

Strežnik Samba, nameščen v krajevnem omrežju, je tako javno dostopen in viden računalnikom omrežja, ki imajo nameščen OS Windows, in nasprotno.

Ukaz mount v Linuxu omogoča priklop deljenih map gostitelja, v katerem je nameščen OS Windows oziroma strežnik Samba na Linuxu.

Zgled:

# mount

-t smbfs

-o username=uporabnik/DOMENA.SI%geslo

//gostitelj_win/deljena_mapa

/mnt/win

Ukaz izvede priklop deljene mape deljena_mapa, ki je v gostitelju gostitelj_win z nameščenim OS Windows, na mapo /mnt/win lokalnega računalnika. Za opcijo -o je podano uporabniško ime (username), domena (DOMENA.SI) in geslo uporabnika, ki se prijavlja za dostop na deljeno mapo. Tip datotečnega sistema, ki sledi opciji -t, je nastavljen na smbfs (samba datotečni sistem).

Možna je tudi naslednja sintaksa:

# mount

-t smbfs

-o username=uporabnik%geslo

//gostitelj/deljena_mapa

/mnt/win

# mount

-t smbfs

-o username=uporabnik

//gostitelj/deljena_mapa

/mnt/win

Odklop deljene mape:

# umount //gostitelj/deljena_mapa

Ukaz smbclient

je orodje paketa Samba, ki prav tako omogoča dostop do deljenih map v oddaljenem gostitelju, ki ima nameščen OS Windows. Način uporabe ukaza smbclient je zelo podoben orodju ftp (File Transfer Protocol), ki ga uporabljamo za prenos datotek med računalniki.

Zgled:

Prijava uporabnika izidor ob vstopu v mapo home oddaljenega gostitelja win_machine (Windows) v domeni DOMAIN.SI:

comp:/home/dali # smbclient //win_machine/home -W DOMAIN.SI -U izidor

added interface ip=172.16.52.14 bcast=172.16.52.255 nmask=255.255.255.0

Vpišemo geslo:

Password:

Anonymous login successful

Domain=[DOMAIN.SI] OS=[Windows 5.1]

Server=[Windows 2000 LAN Manager]

tree connect failed: NT_STATUS_ACCESS_DENIED

comp:/home/dali #

comp:/home/dali # smbclient

//win_machine/home -W DOMAIN.SI

-U izidor%test12

added interface ip=172.16.52.14 bcast=172.16.52.255

nmask=255.255.255.0

Domain=[DOMAIN.SI] OS=[Windows 5.1]

Server=[Windows 2000 LAN Manager]

Po uspešni prijavi se odpre upravljalna vrstica orodja smbclient:

smb: \>

Izpis datotek v mapi home v gostitelju win_machine:

smb: \> ls

. D 0 Tue Oct 19 09:06:46 2004

.. D 0 Tue Oct 19 09:06:46 2004

boot.iso A 24313856 Wed Sep 8 12:10:52 2004

setup.exe A 268800 Fri Aug 6 11:42:14 2004

55231 blocks of size 1048576. 24066 blocks available

Izpis lokalne mape (Linux):

smb: \> lcd

the local directory is now /home/dali

Izpis položaja v datotečnem sistemu gostitelja win_machine (Windows):

smb: \> pwd

Current directory is \\win_machine\home\

Preslikava mape boot.iso, ki je v deljeni mapi home gostitelja win_machine, v lokalni računalnik v mapo /home/dali:

smb: \> get boot.iso

getting file \boot.iso of size 0 as boot.iso (2675.7 kb/s)

(average 2675.7 kb/s)

smb: \> ! ls -la /home/dali/boot.iso.

-rw-r--r-- 1 root root 24313856 2004-10-19 10:03 boot.iso

smb: \>

Konec seje smbclient:

smb: \> exit

Ukaz smbclient je možno uporabiti tudi "zunaj seje". V tem primeru se ukazi seje podajo za opcijo -c (command):

comp:/home/dali # smbclient //win_machine/home

-W DOMAIN.SI -U izidor%geslo -c 'history'

added interface ip=172.16.52.14 bcast=172.16.52.255

nmask=255.255.255.0

Domain=[DOMAIN.SI] OS=[Windows 5.1]

Server=[Windows 2000 LAN Manager]

comp:/home/dali # smbclient //win_machine/home

-W DOMAIN.SI -U izidor%geslo -c 'lcd'

added interface ip=172.16.52.14 bcast=172.16.52.255

nmask=255.255.255.0

Domain=[DOMAIN.SI] OS=[Windows 5.1]

Server=[Windows 2000 LAN Manager]

the local directory is now /home/dali

Več informacij o ukazu smbclinet najdete na straneh man.

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!

Komentirajo lahko le prijavljeni uporabniki

 
  • Polja označena z * je potrebno obvezno izpolniti
  • Pošlji