Overview NFS

NFS è l'acronimo di NETWORK FILE SYSTEM, è un protocollo sviluppato originariamente da SUN nei primi anni 80, per poter shareare o meglio esportare directory o interi filesystem a più client.

NFS si appoggia alla classica struttare server/client dove il server è il sistema che realmente possiede le risorse che esporterà e il cliente tramite un client NFS e il protocollo NFS potrà montare le risorse remote e utilizzare tali risorse come se fossero in locale.

Nel corso della storia dell'evoluzione di ambienti Unix e Unix-like l'uso di NFS si è trasformato (attualmente vengono utilizzate due versioni NFSv2 e NFSv3) e il suo reale impiego è cambiato.
Nato come supporto per workstation diskless ora viene utilizzato in ambienti distribuiti per propagare o per rendere disponibile a tutti i sistemi una risorsa.
Il classico esempio è la DocumenRoot di un server web che viene esportata a tutti i serverweb di una farm.

In questi ultimi anni NFS è stato affiancato da altri protocolli per lo sharing di risorse ma viene tuttora comunemente utilizzato sia in ambiente Unix che misto proprio per il fatto che è un protocollo supportato dalla maggior parte dei sistemi operativi, nonostante la pericolosità derivate dall'insicurezza intrinsica del protocollo.
Di fatto NFS si appoggia a RPC per rafforzare il rapporto client e server con tutti i problemi del caso legato a questa procedura (i bachi di RPC sono molto famosi ed utilizzati per accedere alle macchine altrui).
NFS risulta essere una soluzione vincente in una intranet o in una struttura dove le risorse non possono essere montate da sistemi esterni per ovvi motivi di sicurezza.

Di seguito sono riportati le principali differenze fra i protocolli NFSv2 e NFSv3:

- Il limite della dimensione del file.
Nella vesione v2 è limitato a 2 Gb mentre nella versione v3 supporta file molto più grandi.

- Il protocollo nfsv2 prevede 8k come dimensione massima del blocco dati in lettura e scrittura.
Il limite teorico del protocollo nfsv3 è superiore a 64k ma attualmente i parametri di default del kernel prevedono ancora blocchi da 8k. In alcune kernel patch è previsto l'incremento fino a 32k.  

- Nfsv2 prevede che ogni richiesta di scrittura del client venga eseguita prima che il server stesso risponda al client. Nfsv3 invece prevede che il server invii lo status della richiesta di scrittura finchè tutti i dati non verranno scritti su disco, quindi maggior controllo sulla richiesta di scrittura dati da remoto.

Attualmente è in via di sviluppo il protocollo NFSv4 da parte della IETF (Internet Engineering Task Force), la quale a reso pubblica tutta la documentazione relativa a questo nuovo protocollo al seguente indirizzo: http://www.ietf.org/ids.by.wg/nfsv4.html.

Maggiori informazioni sull'implementazione di NFS con linux si possono traovare al seguente indirizzo: http://nfs.sourceforge.net/.

Dettagli tecnici sul protocollo sono reperibili tramite le relative RFC:
- NFSv2 RFC n° 1094   http://www.ietf.org/rfc/rfc1094.txt
- NFSv3 RFC n° 1813   http://www.ietf.org/rfc/rfc1813.txt
- NFSv4 RFC n° 3010   http://www.ietf.org/rfc/rfc3010.txt

Privacy Policy