**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 aastal 1984. 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. NFSi 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 limitatsioonide 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 faili nimedega 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 hetkel 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 WebNFSi implementatsiooni.

Mitmed protokollid on praeguseks seotud NFSga. 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
----------

NFSi kasutatakse tihti UNIX-i operatsioonisüsteemides (näiteks Solaris, AIX ning HP-UX), Apple'i macOS's ning UNIXi-laadsetes operatsioonisüsteemides (näieks 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.

NFS specint2008 jõudluse võrdlus, 22 november 2013 seisuga

Tüüpiline teostus
-----------------

Unix-tüüpi stsenaariumi korral, kus üks masin (klient) vajab ligipääsu andmetele mis paiknevad teises arvutis (NFS server):

1. Server rakendab NFS Daemon protsessi et teha andmed kliendile üldiselt avalikuks.
2. Serveri administraator määrab mida avalikuks teha, ekspordib kataloogide nimed ja parameetrid.
3. Serveri turvaadministraator kindlustab, et see tunneb ära ning kinnitab valideeritud kliendid.
4. Serveri võrgukonfiguratsioon kindlustab, et vastavad kliendid suudavad sellega suhelda läbi tulemüüride.
5. Klient küsib juurdepääsu eksporditud andmetele.
6. 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 jooksutatakse 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 Equipment´i, 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.a 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) Sun'i/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-ndad

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-ndad

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
------

1. 1 2  Russel Sandberg; David Goldberg; Steve Kleiman; Dan Walsh; Bob Lyon (1985). "Design and Implementation of the Sun Network Filesystem". USENIX.
2. ↑  *NFS Illustrated* (2000) by Brent Callaghan – ISBN 0-201-32570-5
3. ↑  Russel Sandberg. "The Sun Network Filesystem: Design, Implementation and Experience" (PDF). *Technical Report*. Sun Microsystems.
4. ↑  Brian Pawlowski; Chet Juszczak; Peter Staubach; Carl Smith; Diane Lebel; David Hitz (1994). "NFS Version 3 Design and Implementation". USENIX.
5. ↑  "NFS Version 4". USENIX.
6. ↑  *Implementing NFSv4 in the Enterprise: Planning and Migration Strategies* (2000) by Gene Curylo, Richard Joltes, Trishali Nayar, Bob Oesterlin, Aniket Patel, Chris Almond – ISBN 978-0-738-49423-4
7. ↑  Haynes, Thomas (14. märts 2013). "NFS Version 4 Minor Version 2".
8. ↑  yanfs.dev.java.net[*alaline kõdulink*]
9. ↑  Brent Callaghan (1. mai 2017). "NFS over RDMA" (PDF). Sun Microsystems.
10. ↑  
Singh, Karan (2016). "4: Working with the Ceph Filesystem". *Ceph Cookbook*. Birmingham: Packt Publishing Ltd. Lk 110. ISBN 9781784397364. Vaadatud 21.03.2017. NFS-Ganesha is an NFS server that runs in user space and supports the CephFS FSAL (File System Abstraction Layer) using libcephfs.
11. ↑
12. ↑  "HP TCP/IP Services for OpenVMS Management". *h41379.www4.hpe.com*. HP.
13. ↑  "Other Software by SUN Microsystems". *www.computinghistory.org.uk*. The Centre for Computing History.
14. ↑  "Introduction to Microsoft Windows Services for UNIX 3.5". *technet.microsoft.com*. Microsoft.
15. ↑  "NFS Gateway for NetWare 6.5". *www.novell.com*. Novell.
16. ↑  "OS/400 Network File System Support" (PDF). *publib.boulder.ibm.com*. IBM.
17. ↑  *Managing NFS and NIS: Help for Unix System Administrators* (2001) by Mike Eisler, Ricardo Labiaga, Hal Stern – ISBN 978-0-596-55194-0
18. ↑  "What is Connectathon?". *Original Connectathon.Org web site*. Originaali arhiivikoopia seisuga 28.01.1999.

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