Network File System ( NFS ) este un protocol pentru accesul în rețea la sistemele de fișiere , dezvoltat inițial de Sun Microsystems în 1984 . Protocolul de apel de procedură de la distanță ( ONC RPC , în engleză Open Network Computing Remote Procedure Call [1] ) este luat ca bază . Vă permite să montați (montați) sisteme de fișiere la distanță într-o rețea.
NFS este extras din ambele tipuri de sisteme de fișiere server și client. Există multe implementări ale serverelor și clienților NFS pentru diferite sisteme de operare și arhitecturi hardware. Cea mai matură versiune de NFS este v.4 [2] , care acceptă diverse mijloace de autentificare (în special, Kerberos și LIPKEY folosind protocolul RPCSEC GSS ) și liste de control acces (atât tipurile POSIX , cât și Windows ).
NFS oferă clienților acces transparent la fișiere și la sistemul de fișiere al serverului. Spre deosebire de FTP , protocolul NFS accesează doar acele părți ale fișierului accesate de proces, iar principalul său avantaj este că face acest acces transparent. Aceasta înseamnă că orice aplicație client care poate funcționa cu un fișier local poate funcționa la fel de bine și cu un fișier NFS, fără nicio modificare a programului în sine.
Clienții NFS accesează fișierele de pe un server NFS trimițând cereri RPC către server. Acest lucru poate fi implementat folosind procese normale ale utilizatorului, și anume clientul NFS poate fi un proces utilizator care face apeluri RPC specifice către server, care poate fi și un proces utilizator.
O parte importantă a celei mai recente versiuni a standardului NFS (v4.1) este specificația pNFS , care își propune să ofere o implementare paralelă a partajării fișierelor care crește ratele de transfer de date proporțional cu dimensiunea și gradul de paralelism al sistemului.
Cerințele inițiale pentru dezvoltarea NFS au fost:
Implementarea NFS constă din mai multe componente. Unele dintre ele sunt localizate fie pe server, fie pe client, iar unele sunt utilizate pe ambele părți ale conexiunii. Unele componente nu sunt necesare pentru funcționalitatea de bază, dar fac parte din interfața NFS extinsă.
Protocolul NFS definește un set de cereri (operații) care pot fi trimise de un client către un server, precum și un set de argumente și valori returnate pentru fiecare dintre aceste solicitări. Versiunea 1 a acestui protocol a existat doar în intestinele Sun Microsystems și nu a fost niciodată lansată. Toate implementările NFS (inclusiv NFSv3) acceptă NFS versiunea 2 (NFSv2), care a fost lansată pentru prima dată în 1985 cu SunOS 2.0. Versiunea 3 a protocolului a fost publicată în 1993 și implementată de mai mulți furnizori.
Protocolul Remote Procedure Call ( RPC ) definește formatul tuturor comunicațiilor dintre un client și un server. Fiecare cerere NFS este trimisă ca pachet RPC.
Reprezentarea datelor externe (XDR ) oferă o metodă independentă de mașină de codificare a datelor pentru transmisie printr-o rețea. Toate cererile RPC folosesc codificarea XDR pentru a transfera date. XDR și RPC sunt folosite pentru a implementa multe alte servicii în afară de NFS.
Codul serverului NFS este responsabil pentru gestionarea tuturor solicitărilor clientului și pentru furnizarea de acces la sistemele de fișiere exportate. Codul client NFS implementează toate accesul sistemului client la fișierele de la distanță prin trimiterea uneia sau mai multor solicitări RPC către server.
Protocolul de montare definește semantica pentru montarea și demontarea sistemelor de fișiere NFS. NFS utilizează mai multe procese demon de fundal . Pe server, un set de demoni nfsd ascultă și răspunde solicitărilor de la clienții NFS. Demonul mountd gestionează cererile de montare. Pe client, un set de demoni biod se ocupă de I/O asincron de bloc de fișiere NFS.
Network Lock Manager (NLM) și Network Status Monitor (NSM) oferă împreună mijloacele de blocare a fișierelor în rețea. Aceste facilități, deși nu sunt asociate în mod oficial cu NFS, pot fi găsite în majoritatea implementărilor NFS. Ele furnizează servicii care nu sunt posibile în protocolul de bază. NLM și NSM implementează funcționalitatea serverului folosind demonii lockd și, respectiv, statd.
Prima versiune [3] a fost folosită doar intern la Sun în scopuri experimentale.
Versiunea 2 [3] (NFSv2) lansată în martie 1989, rula inițial în întregime peste protocolul UDP . Dezvoltatorii au ales să nu stocheze date interne de stare în interiorul protocolului, cum ar fi blocarea implementată în afara protocolului de bază. Persoanele implicate în crearea NFS versiunea 2 sunt Rusty Sandberg , Bob Lyon , Bill Joy și Steve Kleiman .
NFSv3 [4] a fost lansat în iunie 1995, a adăugat suport pentru descriptori de fișiere de dimensiune variabilă de până la 64 de octeți (în versiunea 2 - o matrice de dimensiune fixă de 32 de octeți), a eliminat limita de 8192 de octeți în apelurile de citire și scriere RPC (astfel, dimensiunea blocului transferat în apeluri este limitată doar de limita de datagramă UDP - 65535 octeți), este implementat suportul pentru fișiere mari, sunt acceptate apeluri asincrone pentru operațiuni de scriere, ACCESS (verificarea drepturilor de acces la fișiere), MKNOD (crearea unui Unix special fișier) sunt adăugate la procedurile READ și WRITE ), READDIRPLUS (returnează numele fișierelor dintr-un director împreună cu atributele acestora), FSINFO (returnează informații statistice despre sistemul de fișiere), FSSTAT (returnează informații dinamice despre sistemul de fișiere), PATHCONF (returnează informații POSIX.1 despre un fișier) și COMMIT (commite scrieri asincrone făcute anterior în stocarea permanentă).
La momentul introducerii versiunii 3, a existat o creștere a popularității în rândul dezvoltatorilor protocolului TCP . Unii dezvoltatori independenți au adăugat în mod independent suport pentru TCP la NFS versiunea 2 ca transport, Sun Microsystems a adăugat suport TCP la NFS într-unul dintre suplimentele pentru versiunea 3. Cu suportul TCP, a devenit posibilă utilizarea NFS peste WAN .
NFSv4 [2] a fost lansat în decembrie 2000, influențat de AFS și CIFS și include îmbunătățiri de performanță și securitate. Versiunea 4 a fost prima versiune dezvoltată în colaborare cu Internet Engineering Task Force ( IETF ). Versiunea NFS v4.1 a fost aprobată de IESG în ianuarie 2010 [5] (noua specificație de 612 pagini a devenit cunoscută drept cel mai lung document aprobat de IETF). O inovație importantă în versiunea 4.1 este specificația pNFS - Parallel NFS, un mecanism pentru accesul paralel al clientului NFS la datele de pe mai multe servere NFS distribuite. Prezența unui astfel de mecanism în standardul sistemului de fișiere de rețea va ajuta la construirea de sisteme de stocare și informații în cloud distribuite.
Versiunea NFS 4.2 RFC 7862 a fost publicată în noiembrie 2016 și include caracteristici noi: clonarea și copierea pe partea de server, recomandări I/O aplicații, fișiere rare , rezervare de spațiu, bloc de date aplicației (ADB) etichetat NFS cu atributul sec_label care se adaptează la orice MAC sistem de securitate și două operațiuni noi pentru pNFS (LAYOUTERROR și LAYOUTSTATS).
WebNFS este o extensie a NFS versiunile 2 și 3 care permite o integrare mai ușoară în browserele web și oferă posibilitatea de a lucra printr-un firewall . Diverse protocoale terțe au devenit asociate cu NFS, inclusiv:
Network Lock Manager (NLM) și Network Status Monitor (NSM) oferă împreună mijloacele de blocare a fișierelor în rețea. Aceste facilități, deși nu sunt asociate în mod oficial cu NFS, pot fi găsite în majoritatea implementărilor NFS. Ele oferă servicii care nu sunt posibile în protocolul de bază. NLM și NSM implementează funcționalitatea serverului folosind demonii lockd și, respectiv, statd.
Remote Quota Information Protocol (RQUOTAD) (NFS permite utilizatorilor să vadă cota de disc pe un server NFS la distanță).
Deși NFS este utilizat cel mai frecvent pe sisteme asemănătoare Unix , poate fi folosit și pe alte sisteme de operare, cum ar fi Mac OS Classic , OpenVMS , Microsoft Windows , Novell NetWare și IBM i .
Protocoalele alternative de acces la fișiere includ SMB ( Server Message Block , cunoscut și sub numele de Samba și CIFS ), Apple Filing Protocol (AFP), NetWare Core Protocol (NCP). În sistemul de operare Microsoft Windows, SMB și NetWare Core Protocol (NCP) sunt utilizate mai frecvent decât NFS. Pe sistemele Macintosh, AFP este mai comun decât NFS.
URI | scheme|
---|---|
Oficial | |
neoficial |
Stiva de protocol ONC | |
---|---|
Sisteme de fișiere ( listă , comparație ) | |||||||
---|---|---|---|---|---|---|---|
Disc |
| ||||||
Distribuit (rețea) | |||||||
Special |
|