Sistema di file di rete - Network File System

Network File System ( NFS ) è un protocollo di file system distribuito originariamente sviluppato da Sun Microsystems (Sun) nel 1984, che consente a un utente su un computer client di accedere ai file su una rete di computer in modo molto simile all'accesso all'archiviazione locale. NFS, come molti altri protocolli, si basa sul sistema Open Network Computing Remote Procedure Call (ONC RPC). NFS è uno standard IETF aperto definito in una richiesta di commenti (RFC), che consente a chiunque di implementare il protocollo.

Versioni e varianti

Sun ha utilizzato la versione 1 solo per scopi sperimentali interni. Quando il team di sviluppo ha aggiunto modifiche sostanziali alla versione 1 di NFS e l'ha rilasciata al di fuori di Sun, ha deciso di rilasciare la nuova versione come v2, in modo da poter testare l'interoperabilità tra le versioni e il fallback della versione RPC.

NFSv2

La versione 2 del protocollo (definita in RFC 1094, marzo 1989) originariamente operava solo su User Datagram Protocol (UDP). I suoi progettisti intendevano mantenere il lato server senza stato , con il blocco (ad esempio) implementato al di fuori del protocollo principale. Le persone coinvolte nella creazione della versione 2 di NFS includono Russel Sandberg , Bob Lyon , Bill Joy , Steve Kleiman e altri.

L' interfaccia del Virtual File System consente un'implementazione modulare, riflessa in un semplice protocollo. Nel febbraio 1986, furono dimostrate le implementazioni per sistemi operativi come System V release 2, DOS e VAX/VMS utilizzando Eunice . NFSv2 consente solo la lettura dei primi 2 GB di un file a causa delle limitazioni a 32 bit .

NFSv3

La versione 3 (RFC 1813, giugno 1995) ha aggiunto:

  • supporto per dimensioni e offset di file a 64 bit, per gestire file più grandi di 2 gigabyte (GB);
  • supporto per scritture asincrone sul server, per migliorare le prestazioni di scrittura;
  • attributi di file aggiuntivi in ​​molte risposte, per evitare la necessità di recuperarli nuovamente;
  • un'operazione READDIRPLUS, per ottenere gli handle e gli attributi dei file insieme ai nomi dei file durante la scansione di una directory;
  • assortiti altri miglioramenti.

La prima proposta di NFS versione 3 all'interno di Sun Microsystems è stata creata non molto tempo dopo il rilascio di NFS versione 2. La motivazione principale era un tentativo di mitigare il problema di prestazioni dell'operazione di scrittura sincrona in NFS versione 2. A luglio 1992, la pratica di implementazione era stata risolta molte carenze di NFS versione 2, lasciando solo la mancanza di supporto per file di grandi dimensioni (dimensioni file a 64 bit e offset) un problema urgente. Questo è diventato un punto critico acuto per Digital Equipment Corporation con l'introduzione di una versione a 64 bit di Ultrix per supportare il processore RISC a 64 bit appena rilasciato , l' Alpha 21064 . Al momento dell'introduzione della versione 3, il supporto dei fornitori per TCP come protocollo a livello di trasporto iniziò ad aumentare. Mentre diversi fornitori avevano già aggiunto il supporto per NFS versione 2 con TCP come trasporto, Sun Microsystems ha aggiunto il supporto per TCP come trasporto per NFS allo stesso tempo ha aggiunto il supporto per la versione 3. Utilizzo di TCP come trasporto realizzato utilizzando NFS su una WAN più fattibile e ha consentito l'uso di dimensioni di trasferimento in lettura e scrittura maggiori oltre il limite di 8 KB imposto dallo User Datagram Protocol .

NFSv4

La versione 4 (RFC 3010, dicembre 2000; rivista in RFC 3530, aprile 2003 e di nuovo in RFC 7530, marzo 2015), influenzata da Andrew File System (AFS) e Server Message Block (SMB, chiamato anche CIFS), include miglioramenti delle prestazioni, impone una forte sicurezza e introduce un protocollo stateful . La versione 4 è diventata la prima versione sviluppata con l' Internet Engineering Task Force (IETF) dopo che Sun Microsystems ha consegnato lo sviluppo dei protocolli NFS.

NFS versione 4.1 (RFC 5661, gennaio 2010; rivista in RFC 8881, agosto 2020) mira a fornire il supporto del protocollo per sfruttare le distribuzioni di server in cluster, inclusa la possibilità di fornire un accesso parallelo scalabile ai file distribuiti tra più server (estensione pNFS). La versione 4.1 include il meccanismo di trunking di sessione (noto anche come NFS Multipathing) e disponibile in alcune soluzioni aziendali come VMware ESXi .

NFS versione 4.2 (RFC 7862) è stata pubblicata a novembre 2016 con nuove funzionalità tra cui: clone e copia lato server, avviso I/O dell'applicazione, file sparsi, prenotazione dello spazio, blocco dati dell'applicazione (ADB), etichettato NFS con sec_label che si adatta a qualsiasi sistema di sicurezza MAC e due nuove operazioni per pNFS (LAYOUTERROR e LAYOUTSTATS).

Un grande vantaggio di NFSv4 rispetto ai suoi predecessori è che viene utilizzata solo una porta UDP o TCP, 2049, per eseguire il servizio, il che semplifica l'utilizzo del protocollo attraverso i firewall.

Altre estensioni

WebNFS , un'estensione della versione 2 e della versione 3, consente a NFS di integrarsi più facilmente nei browser Web e di consentire il funzionamento tramite firewall. Nel 2007 Sun Microsystems ha reso open-source la propria implementazione WebNFS lato client.

Vari protocolli in banda laterale sono stati associati a NFS. Nota:

  • il protocollo Network Lock Manager (NLM) di advisory per l'intervallo di byte (aggiunto per supportare le API di blocco dei file di UNIX System V )
  • il protocollo RQUOTAD (remoto quota-reporting), che consente agli utenti NFS di visualizzare le proprie quote di archiviazione dati sui server NFS
  • NFS su RDMA , un adattamento di NFS che utilizza l'accesso diretto alla memoria remota (RDMA) come trasporto
  • NFS-Ganesha, un server NFS, in esecuzione nello spazio utente e che supporta vari file system come GPFS/Spectrum Scale, CephFS tramite i rispettivi moduli FSAL (File System Abstraction Layer). Il CephFS FSAL è supportato usando libcephfs
  • NFS affidabile (TNFS)

Piattaforme

NFS viene spesso utilizzato con sistemi operativi Unix (come Solaris , AIX , HP-UX ), macOS di Apple e sistemi operativi simili a Unix (come Linux e FreeBSD ). È anche disponibile per sistemi operativi come Acorn RISC OS , AmigaOS , il classico Mac OS , OpenVMS , MS-DOS , Microsoft Windows , OS/2 , ArcaOS , Novell NetWare e IBM i . I protocolli di accesso remoto ai file alternativi includono Server Message Block (SMB, chiamato anche CIFS), Apple Filing Protocol (AFP), NetWare Core Protocol (NCP) e file system OS/400 File Server (QFileSvr.400).

SMB e NetWare Core Protocol (NCP) si verificano più spesso di NFS sui sistemi che eseguono Microsoft Windows; AFP si verifica più spesso di NFS nei sistemi Apple Macintosh ; e QFileSvr.400 si verifica più spesso nei sistemi IBM i. Haiku nel 2012 ha aggiunto il supporto NFSv4 come parte di un progetto Google Summer of Code.

Confronto delle prestazioni NFS SPECsfs2008, al 22 novembre 2013

Implementazione tipica

Supponendo uno scenario in stile Unix in cui una macchina (il client ) ha bisogno di accedere ai dati archiviati su un'altra macchina (il server NFS ):

  1. Il server implementa processi daemon NFS , eseguiti per impostazione predefinita come nfsd, per rendere i suoi dati genericamente disponibili ai client.
  2. L'amministratore del server determina cosa rendere disponibile, esportando i nomi ei parametri delle directory , in genere utilizzando il /etc/exportsfile di configurazione e il exportfscomando.
  3. L' amministrazione della sicurezza del server garantisce di poter riconoscere e approvare i client convalidati.
  4. La configurazione della rete del server garantisce che i client appropriati possano negoziare con esso attraverso qualsiasi sistema firewall .
  5. La macchina client richiede l'accesso ai dati esportati, in genere emettendo un mountcomando. (Il client chiede al server (rpcbind) quale porta sta utilizzando il server NFS, il client si connette al server NFS (nfsd), nfsd passa la richiesta a mountd)
  6. Se tutto va bene, gli utenti sulla macchina client possono quindi visualizzare e interagire con i filesystem montati sul server entro i parametri consentiti.

Si noti che può avvenire l'automazione del processo di montaggio di NFS, forse utilizzando /etc/fstab e/o le strutture di montaggio automatico .

Sviluppo del protocollo

Durante lo sviluppo del protocollo ONC (chiamato all'epoca SunRPC ), solo il Network Computing System (NCS) di Apollo offriva funzionalità comparabili. Due gruppi concorrenti si sono sviluppati su differenze fondamentali nei due sistemi di chiamata a procedura remota. Gli argomenti si sono concentrati sul metodo per la codifica dei dati: l' External Data Representation (XDR) di ONC rendeva sempre i numeri interi in ordine big-endian , anche se entrambi i peer della connessione avevano architetture di macchine little-endian , mentre il metodo di NCS tentava di evitare lo scambio di byte ogni volta che due coetanei condividevano un endianness comune nelle loro architetture di macchine. Un gruppo industriale chiamato Network Computing Forum si è formato (marzo 1987) in un tentativo (in ultima analisi fallito) di riconciliare i due ambienti di elaborazione di rete.

Nel 1987, Sun e AT&T hanno annunciato che avrebbero sviluppato congiuntamente UNIX System V Release 4 di AT&T. Ciò ha causato la preoccupazione di molti degli altri licenziatari di UNIX System di AT&T che ciò avrebbe messo Sun in una posizione di vantaggio e alla fine ha portato a Digital Equipment, HP, IBM e altri che hanno formato la Open Software Foundation (OSF) nel 1988. Ironia della sorte, Sun e AT&T avevano precedentemente gareggiato per NFS di Sun contro Remote File System (RFS) di AT&T e la rapida adozione di NFS su RFS da parte di Digital Equipment, HP, IBM e molti altri fornitori di computer hanno suggerito alla maggior parte degli utenti di utilizzare NFS. L' interoperabilità NFS è stata aiutata da eventi chiamati "Connectathons" a partire dal 1986 che hanno consentito il test indipendente dal fornitore delle implementazioni tra loro. OSF ha adottato il Distributed Computing Environment (DCE) e il DCE Distributed File System (DFS) su Sun/ONC RPC e NFS. DFS utilizzava DCE come RPC e DFS derivava dall'Andrew File System (AFS); DCE stesso derivava da una suite di tecnologie, tra cui NCS e Kerberos di Apollo .

anni '90

Sun Microsystems e Internet Society (ISOC) hanno raggiunto un accordo per cedere il "controllo delle modifiche" di ONC RPC in modo che l'ente per gli standard di ingegneria dell'ISOC, l' Internet Engineering Task Force (IETF), possa pubblicare documenti standard (RFC) relativi a ONC RPC protocolli e potrebbe estendere ONC RPC. OSF ha tentato di rendere DCE RPC uno standard IETF, ma alla fine si è dimostrato non disposto a rinunciare al controllo delle modifiche. Successivamente, IETF ha scelto di estendere ONC RPC aggiungendo un nuovo tipo di autenticazione basato su GSSAPI ( Generic Security Services Application Program Interface ), RPCSEC GSS , per soddisfare i requisiti IETF che gli standard di protocollo hanno una sicurezza adeguata.

Successivamente, Sun e ISOC hanno raggiunto un accordo simile per dare a ISOC il controllo delle modifiche su NFS, sebbene abbia scritto attentamente il contratto per escludere NFS versione 2 e versione 3. Invece, ISOC ha ottenuto il diritto di aggiungere nuove versioni al protocollo NFS, che ha portato a IETF specificando la versione 4 di NFS nel 2003.

anni 2000

Nel 21° secolo, né DFS né AFS avevano ottenuto alcun grande successo commerciale rispetto a SMB-CIFS o NFS. IBM, che in precedenza aveva acquisito il principale fornitore commerciale di DFS e AFS, Transarc , ha donato la maggior parte del codice sorgente di AFS alla comunità del software libero nel 2000. Il progetto OpenAFS continua a vivere. All'inizio del 2005, IBM ha annunciato la fine delle vendite per AFS e DFS.

Nel gennaio 2010, Panasas ha proposto un NFSv4.1 basato sulla loro tecnologia Parallel NFS (pNFS) che afferma di migliorare la capacità di parallelismo di accesso ai dati. Il protocollo NFSv4.1 definisce un metodo per separare i metadati del filesystem dalla posizione dei dati del file; va oltre la semplice separazione nome/dati suddividendo i dati tra un insieme di server di dati. Questo differisce dal server NFS tradizionale che contiene i nomi dei file e i loro dati sotto l'unico ombrello del server. Alcuni prodotti sono server NFS multi-nodo, ma la partecipazione del client alla separazione di metadati e dati è limitata.

Il server pNFS NFSv4.1 è un insieme di risorse o componenti del server; si presume che questi siano controllati dal server di metadati.

Il client pNFS accede ancora a un server di metadati per l'attraversamento o l'interazione con lo spazio dei nomi; quando il client sposta i dati da e verso il server può interagire direttamente con l'insieme di server di dati appartenenti alla raccolta del server pNFS. Il client NFSv4.1 può essere abilitato per essere un partecipante diretto nella posizione esatta dei dati del file e per evitare l'interazione solitaria con un server NFS durante lo spostamento dei dati.

Oltre a pNFS, NFSv4.1 fornisce:

Guarda anche

Riferimenti

link esterno