Sun used version 1 only for in-house experimental purposes. When the development team added substantial changes to NFS version 1 and released it outside of Sun, they decided to release the new version as v2, so that version interoperation and RPC version fallback could be tested. The
Virtual File System interface allows a modular implementation, reflected in a simple protocol. By February 1986, implementations were demonstrated for operating systems such as
System V release 2,
DOS, and VAX/VMS using
Eunice. and attributes along with file names when scanning a directory; • assorted other improvements. The first NFS Version 3 proposal within Sun Microsystems was created not long after the release of NFS Version 2. The principal motivation was an attempt to mitigate the performance issue of the synchronous write operation in NFS Version 2. By July 1992, implementation practice had solved many shortcomings of NFS Version 2, leaving only lack of large file support (64-bit file sizes and offsets) a pressing issue. At the time of introduction of Version 3, vendor support for
TCP as a
transport-layer protocol began increasing. While several vendors had already added support for NFS Version 2 with TCP as a transport, Sun Microsystems added support for TCP as a transport for NFS at the same time it added support for Version 3. Using TCP as a transport made using NFS over a
WAN more feasible, and allowed the use of larger read and write transfer sizes beyond the 8 KB limit imposed by
User Datagram Protocol.
YANFS/WebNFS YANFS (Yet Another NFS), formerly
WebNFS, is an extension to NFSv2 and NFSv3 allowing it to function behind restrictive firewalls without the complexity of Portmap and MOUNT protocols. YANFS/WebNFS has a fixed
TCP/UDP port number (2049), and instead of requiring the client to contact the MOUNT RPC service to determine the initial filehandle of every filesystem, it introduced the concept of a
public filehandle (null for NFSv2, zero-length for NFSv3) which could be used as the starting point. Both of those changes were later incorporated into NFSv4. YANFS's post-WebNFS development has also included server-side integration.
NFSv4 Version 4 (, December 2000; revised in , April 2003 and again in , March 2015), influenced by
Andrew File System (AFS) and
Server Message Block (SMB), includes performance improvements, mandates strong security, and introduces a
stateful protocol. Version 4 became the first version developed with the
Internet Engineering Task Force (IETF) after
Sun Microsystems handed over the development of the NFS protocols. NFS version
4.1 (, January 2010; revised in , August 2020) aims to provide protocol support to take advantage of clustered server deployments including the ability to provide scalable parallel access to files distributed among multiple servers (
pNFS extension). Version 4.1 includes Session trunking mechanism (Also known as NFS Multipathing) and is available in some enterprise solutions as
VMware ESXi. NFS version
4.2 () was published in November 2016 with new features including: server-side clone and copy, application I/O advise, sparse files, space reservation, application data block (ADB), labeled NFS with sec_label that accommodates any MAC security system, and two new operations for pNFS (LAYOUTERROR and LAYOUTSTATS). One big advantage of NFSv4 over its predecessors is that only one UDP or TCP port, 2049, is used to run the service, which simplifies using the protocol across firewalls.
Other extensions WebNFS, an extension to Version 2 and Version 3, allows NFS to integrate more easily into Web-browsers and to enable operation through firewalls. In 2007 Sun Microsystems open-sourced their client-side WebNFS implementation. Various side-band protocols have become associated with NFS. Note: • the byte-range advisory Network Lock Manager (NLM) protocol (added to support
UNIX System V file locking APIs) • the remote quota-reporting (RQUOTAD) protocol, which allows NFS users to view their data-storage quotas on NFS servers • NFS over RDMA, an adaptation of NFS that uses
remote direct memory access (RDMA) as a transport • NFS-Ganesha, an NFS server, running in user-space and supporting various file systems like
GPFS/Spectrum Scale, CephFS via respective FSAL (File System Abstraction Layer) modules. The
CephFS FSAL is supported using libcephfs • Trusted NFS (TNFS) == Platforms ==