Võrgufailisüsteem

**Võrgufailisüsteem** (**NFS**) on võrguprotokoll, mis lubab arvutile juurdepääsu failidele võrgu kaudu nii, nagu asuksid need failid sellesama arvuti kohalikel ketastel.

Võrgufailisüsteemi arendas välja Sun Microsystems 1984. aastal. NFS on üles ehitatud toetudes avatud võrguandmetöötluse kaudprotseduurikutsete (ONC RPC) protokollidele. NFS on kommentaarinõude (RFC) poolt defineeritud kui avatud standard, mistõttu on kõigil õigus protokolli rakendada.

## Versioonid ja variatsioonid
### NFSv1
NFS protokolli esimene versioon oli kasutusel mõnda aega ja sedagi ainult eksperimenteerimise eesmärgil Sun Microsystemsi siseselt. Kasutamise käigus arendati seda pidevalt edasi ja pärast arengumeeskonna poolt algversiooniga võrreldes protokollile arvestatavalt suurte muudatuste tegemist otsustati avaldada uus versioon ehk v2. Uue versiooni avaldamise eesmärgiks oli luua võiamlus katsetada selle versiooni koostöötamisevabadust ja RPC versiooni tagavaravarianti.

### NFSv2
Protokolli järgmine ehk teine versioon (defineeritud standardis RFC 1094, märts 1989) oli kasutatav ainult üle kasutajadatagrammi protokolli (UDP). NFSi arendajad soovisid hoida serveripoole olekuta, tehes seda näiteks läbi luku kasutamise. NFS-i teise versiooni loomisega olid seotud Russel Sandberg, Bob Lyon, Bill Joy, Steve Kleiman, ja teised.

Virtuaalse failisüsteemi kasutajaliides lubas modulaarset implementatsiooni, mis väljendus protokolli lihtsuses. Protokolli kasutajate hulk suurenes ja 1986. aasta veebruariks oli NFSv2 võetud kasutusele mitmetes erinevates operatsioonisüsteemides (näiteks AT&T Unix System V teine versioon, DOS ning Eunice tarkvara kasutavad VAX/VMS). 32-biti arhitektuuri piirangute tõttu oli NFSv2 protokolli kasutades võimalik saata ainult failide esimesed 2 GB.

### NFSv3
Versioon 3 (defineeritud standardis RFC 1813, juuni 1995) lisas:
* toe 64-bit failisuurustele ning nihetele, lubades töödelda faile, mis on suuremad kui 2 GB.
* toe serveril asünkroonsele kirjutamisele, et parendada kirjutamise kiirust.
* lisa failitunnused paljudes vastustes, et vältida nende uuesti hankimise vajadust.
* READDIRPLUS operatsiooni, et saada failipide ning -tunnused koos failinimedega kui kataloogi skaneeritakse.
* erinevaid muid muutusi

Esimene NFS versioon kolme ettepanek tehti Sun Microsystems siseselt üsna varsti pärast NFSv2 avaldamist. Peamiseks ajendiks oli püüe leevendada sünkroonkirjutamisega seotud jõudlusprobleeme.. 1992. aasta juuliks olid märkimisväärselt paljud NFSv2 puudused arendusmeeskonna poolt eemaldatud ning ainsaks tähelepanuväärivaks probleemiks peeti suurte failide (64-bit failisuurustele ning nihete) toe puudumist. Sun Microsystems lisas edastusohje protokolli (TCP) toe NFSle samal ajal kui lisati versioon kolme tugi. TCP kasutamine transpordiks tegi NFS kasutamise laivõrgu (WAN) asemel võimalikuks ning lubas UDP poolt kehtestatud 8 KBst suuremate kirjutamis- ja lugemissuuruste kasutamist.

### NFSv4
Versioon 4 (defineeritud standardis RFC 3010, detsember 2000, muudetud standardis RFC 3530, aprill 2003, uuesti muudetud standardis RFC 7530, märts 2015) oli mõjutatud Andrew’ failisüsteemist (AFS) ning serverisõnumiplokist (SMB) ning sisaldas jõudlustäiustusi, kindlustas tugeva turvalisuse läbi Kerberos V5, SPKM-3 või LIPKEY kasutamise ning tutvustas olekuga protokolli. Versioon 4 oli esimene versioon, mille arendas välja Internetiehituse töörühm (IETF) pärast seda, kui Sun Microsystems andis üle NFS protokolli arenduse. 

NFS versioon 4.1 (defineeritud standardis RFC 5661, jaanuar 2010) eesmärgiks oli anda protokolli tuge, et ära kasutada serveriklastrite juurutamist. 
NFSv4.1 lisab:
* pNFSi;
* sessioonid;
* kataloogi delegatsiooni ja teated;
* multiserveri nimeruumi;
* pääsuloendi ja valikulise pääsukontrolli (DCA);
* muid muutusi;
* pääsupiiramisloendid (ACL).

Versioon 4.2 on arendamisel.

### Muud laiendused
WebNFS kui versioonide 2 ja 3 laiendus aitab NFS protokolli lihtsamalt veebibrauserisse integreerida ning võimaldab teha tööd läbi tulemüüride. 2007. aastal avalikustas Sun Microsystems enda kliendipoolse WebNFS-i implementatsiooni.

Mitmed protokollid on praeguseks seotud NFS-iga. Näiteks:
* Võrguluku haldaja (NLM).
* RQUOTAD protokoll.
* NFS üle RDMA, mis kasutab RDMA protokolli transpordiks.
* NFS-Ganesha, NFS server mis töötab kasutajaruumis ning toetab CephFS FSAL-i kasutades *libcephfs*'i.

## Platvormid
NFS-i kasutatakse tihti UNIX-i operatsioonisüsteemides (näiteks Solaris, AIX ning HP-UX), Apple'i macOS-is ning UNIXi-laadsetes operatsioonisüsteemides (näiteks Linux ja FreeBSD. See on kasutatav teiste operatsiooni süsteemide jaoks, nagu näiteks: Acorn RISC OS the klassikaline Mac OS, OpenVMS, MS-DOS, Microsoft Windows, Novell NetWare, ning IBM AS/400.

## Tüüpiline teostus
Unix-tüüpi stsenaariumi korral, kus üks masin (klient) vajab ligipääsu andmetele mis paiknevad teises arvutis (NFS server):
# Server rakendab NFS Daemon protsessi et teha andmed kliendile üldiselt avalikuks. 
# Serveri administraator määrab mida avalikuks teha, ekspordib kataloogide nimed ja parameetrid.
# Serveri turvaadministraator kindlustab, et see tunneb ära ning kinnitab valideeritud kliendid.
# Serveri võrgukonfiguratsioon kindlustab, et vastavad kliendid suudavad sellega suhelda läbi tulemüüride.
# Klient küsib juurdepääsu eksporditud andmetele.
# Juhul kui kõik on hästi läinud saavad kliendid nüüd lubatud parameetrite siseselt vaadelda ning suhelda serveril olevate failisüsteemidega. 
NFS kliendil käitatakse tavaliselt asünkroonseid I/O harusid.

## Protokolli arendus
ONC protokolli arendamise ajal pakkus ainult Apollo Network Copmuting System (NCS) võrreldavat funktsionaalsust. Tänu fundamentaalsetele erinevustele kahes kaugprotseduurikutse süsteemis tekkis kaks omavahel võistlevat gruppi. Argumendid keskendusid andmekodeerimise meetoditele – ONC XDR protokoll visualiseeris täisarvud jämedaotsalises järjekorras, isegi kui mõlemad partnerid kasutasid peeneotsalist arhitektuuri. NCSi meetod üritas vältida baidi-vahetust kui kaks partnerit kasutasid sama otsalisust enda masina-arhitektuurides. Märtsis 1987 loodi tööstusgrupp "Network Comuting Forum", mille eesmärgiks oli üritada kaht võrguandmetöötluse keskkonda omavahel lepitada. Paraku see ülesanne ebaõnnestus.

Hiljem teatasid SUN ja AT&T, et nad arendaksid koos AT&T Unix süsteemi neljanda väljaande. See põhjustas paljude teiste Atja T teistel litsentsiomanikel muret, et see paneks SUNi eelisolukorda. Lõpuks viis see selleni, et 1988.a asutasid Digital Equipment, HP, IBM ja teised ühise Vabavara Sihtasutuse (Open Software Foundation, OSF). Iroonilisel kombel olid SUN-i protokoll NFS ning AtjaT loodud RFS olnud seni konkureerivad tooted. Nüüd tekkis olukord, kus NFSi kasutuselevõtt Digital Equipmenti, HP, IBMi jpt arvutimüüjate poolt suunas suurema osa arvutikasutajaid NFSi poolele. NFSi koostalitusvõimet aitas edendada arendusürituste sari nimega „Connectathons“, mis algas 1986. aastal ning lõi võimalused müüjaneutraalseks programmidevahelise haakumise teostuse testimiseks. 
OSF võttis kasutusele andmetöötluse hajuskeskkonna (DCE) ja andmetöötluse hajuskeskkonna hajusfailisüsteem (DFS) Suni/ONC RPC ja NFS-i asemel. DFS kasutas DCEd kui RPCd ja DFS oli tuletatud AFSist. DCE ise oli tuletatud erinevatest tehnoloogiakomplektidest, nagu näiteks Apollo NCS ja Kerberos.

### 1990. aastad
Sun Microsystems ning Internet Society (ISOC) jõudsid kokkuleppele, et loovutada ONC RPC muutuste kontrollimine, et ISOC internetiehituse töörühm (IETF) saaks avaldada standardite dokumendid (RFCd), mis on seotud ONC RPC protokollidega ja saaksid laiendada ONC RPCd. OSF üritas teha DCE RPC IETF-standardiks, kuid lõpuks ei olnud nõus kontrolli ära andma. Hiljem otsustas IETF laiendada ONC RPCd, lisades uue autentimise, mis põhines GSSAPI-l ja RPCSEC GSSil. Eesmärk oli vastata IETFi enda kehtestatud nõuetele, et protokollistandardid oleksid piisavalt turvalised. 
Mõne aja pärast andis SUN ISOCle üle õigused HFSi uuematele versioonidele (4 ja hilisemad). 

### 2000. aastad
21. sajandiks ei olnud ei DFS ega ka AFS saavutanud SNB-CIFSi või NFSiga võrreldes suurt kaubanduslikku edu. DFSi ja AFSi peamise edasimüüja Transarc omandanud IBM annetas suurema osa AFSi lähtekoodist vabavarakommuunile. 2005.a. kuulutas IBM DFSi ja AFSi müügi lõppenuks. 2010.a jaanuaris pakkus Panasas välja NFSv4.1, mis põhines nende paralleelNFS- tehnoloogial ning väidetavalt parandas andmepöörduse parallelismivõimekust. 
NFSv4.1 pNFS server on serveriressursside ja serverite komplekt. 
## Viited

## Välislingid
*Implementing NFSv4 in the Enterprise: Planning and Migration Strategies
*Freebsd handbook peatükk 28.3. Network File System (NFS)
*Red Hat Enterprise NFS Guide
* IETF: Network File System Version 4 (nfsv4) Põhikiri
* Linux NFS ülevaade, KKK ja HOWTO dokumendid
* NFS operatsioonid järgnevusskeemidega seletatult
* RFCd:
** RFC 5661 – Network File System (NFS) Versioon 4 Alamversioon 1 Protokoll
** RFC 5403 – RPCSEC_GSS Versioon 2
** RFC 3530 – NFS Versioon 4 Protokolli Spetsifikatsioonid
** RFC 2054 – WebNFS Specification
** RFC 2339 – Sun/ISOC NFS Muutuse Kontrolli Kokkulepe (Change Control Agreement)
** RFC 2203 – RPCSEC_GSS Spetsifikatsioonid
** RFC 1813 – NFS Versioon 3 Protokolli Spetsifikatsioonid
** RFC 1790 – Sun/ISOC ONC RPC Muutuse Kontrolli Kokkulepe (Change Control Agreement)
** RFC 1094 – NFS Versioon 2 Protokolli Spetsifikatsioonid