Content deleted Content added
→Platforms: Improve reference |
Adjust "Servers and shared computers you can connect to on Mac" citation. |
||
(24 intermediate revisions by 15 users not shown) | |||
Line 4:
{{IPstack}}
'''Network File System''' ('''NFS''') is a [[distributed file system]] protocol originally developed by [[Sun Microsystems]] (Sun) in 1984,<ref name="sun85">{{cite conference |url=https://www.cs.cornell.edu/courses/cs6411/2018sp/papers/nfs.pdf|title=Design and Implementation of the Sun Network Filesystem |date=June 11–14, 1985 |author1=Russel Sandberg |author2=David Goldberg |author3=Steve Kleiman |author4=Dan Walsh |author5=Bob Lyon |___location=Portland, Oregon USA|conference=Usenix Association Summer Conference|citeseerx = 10.1.1.14.473}}</ref> allowing a user on a client [[computer]] to access files over a [[computer network]] much like local storage is accessed. NFS, like many other protocols, builds on the [[Open Network Computing Remote Procedure Call]] (ONC RPC) system. NFS is an open [[IETF]] standard. After the first experimental version developed in house at Sun Microsystems, all subsequent versions of the protocol are defined in a series of [[Request for Comments]]
== Versions and variations ==
Line 10:
===NFSv2===
Version 2 of the protocol (defined in
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 (software)|Eunice]].<ref name="Rusty" />
Line 18 ⟶ 17:
===NFSv3===
Version 3 (
* support for 64-bit file sizes and offsets, to handle files larger than 2 gigabytes (GB);
* support for asynchronous writes on the server, to improve write performance;
* additional file attributes in many replies, to avoid the need to re-fetch them;
* a READDIRPLUS operation, to get file handles<ref>{{cite book|last1=Arpaci-Dusseau|first1=Remzi|last2=Arpaci-Dusseau|first2=Andrea|title=Operating Systems: Three Easy Pieces|date=March 2015|publisher=Arpaci-Dusseau Books|edition=.9|page=5|url=http://pages.cs.wisc.edu/~remzi/OSTEP/dist-nfs.pdf|access-date=8 November 2017|archive-date=3 April 2019|archive-url=https://web.archive.org/web/20190403140732/http://pages.cs.wisc.edu/~remzi/OSTEP/dist-nfs.pdf|url-status=live}}</ref> 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.<ref name="usenix94">{{cite web |url=
====YANFS/WebNFS====
{{anchor|WebNFS|reason=Old section name; could have incoming links, though they should probably go to the main article.}}
{{Main|WebNFS}}
YANFS (Yet Another NFS), formerly [[WebNFS]],
===NFSv4===
Version 4 (
NFS version 4.1 (
▲ }}</ref> 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.<ref>{{cite tech report|url=https://www.netapp.com/media/10720-tr-4067.pdf|title=NFS in NetApp ONTAP, Best practice and implementation guide|author1=Justin Parisi|author2= Elliott Ecton|date=June 2023|publisher=NetApp}}</ref>
===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.<ref>
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-Ganesha, an NFS server, running in user-space and supporting various file systems like [[GPFS|GPFS/Spectrum Scale]], CephFS via respective FSAL (File System Abstraction Layer) modules. The [[Ceph (software)|CephFS]] FSAL is supported using libcephfs<ref>
{{cite book
| last1 = Singh
Line 71 ⟶ 64:
</ref>
*Trusted NFS (TNFS)<ref>{{cite
== Platforms ==
NFS is available on:
* [[Unix-like]] operating systems ([[Solaris (operating system)|Solaris]], [[AIX]], [[HP-UX]], [[FreeBSD]], and [[Linux distros]])
* [[AmigaOS]]
* [[ArcaOS]]<ref>{{cite web|url=https://www.arcanoae.com/shop/netdrive-for-os2/|title=NetDrive for OS/2|access-date=2020-09-22|website=arcanoae.com|archive-date=2015-11-03|archive-url=https://web.archive.org/web/20151103233414/https://www.arcanoae.com/shop/netdrive-for-os2/|url-status=live}}</ref>
* [[Haiku (operating system)|Haiku]]<ref>{{Cite web |url=https://www.haiku-os.org/blog/pawe%C5%82_dziepak/2013-03-15_nfsv4_client_finally_merged/ |first=Paweł |last=Dziepak |title=NFSv4 client finally merged |website=Paweł Dziepak's blog |publisher=Haiku, Inc |date=2013-03-15}}</ref>
* [[IBM i]],<ref name="OS/400-NFS">{{cite web|title=OS/400 Network File System Support|url=https://public.dhe.ibm.com/systems/power/docs/systemi/v5r4/en_US/sc415714.pdf|publisher=IBM|access-date=23 May 2024}}</ref> although the default networking protocol is OS/400 File Server (QFileSvr.400)
* [[macOS]],<ref>{{cite web|title=Servers and shared computers you can connect to on Mac|url=https://support.apple.com/guide/mac-help/servers-shared-computers-connect-mac-mchlp3015/15.0/mac/15.0|website=Apple Support|access-date=7 August 2025 |language=en}}</ref> although the default networking protocol is [[Server Message Block]] (SMB)<ref>{{cite web |title=Set up file sharing on Mac |url=https://support.apple.com/guide/mac-help/set-up-file-sharing-on-mac-mh17131/15.0/mac/15.0 |website=Apple Support |access-date=7 August 2025 |language=en}}</ref>
* [[Microsoft Windows]],<ref name="SFU">{{cite web|title=Introduction to Microsoft Windows Services for UNIX 3.5|url=https://technet.microsoft.com/en-us/library/bb463212.aspx|website=technet.microsoft.com|date=5 December 2007|publisher=Microsoft|access-date=24 September 2016|archive-date=18 June 2018|archive-url=https://web.archive.org/web/20180618045332/https://technet.microsoft.com/en-us/library/bb463212.aspx|url-status=live}}</ref> although the default networking protocol is [[Server Message Block]] (SMB)
* [[MS-DOS]]<ref name="PCNFS">{{cite web|title=Other Software by SUN Microsystems|url=http://www.computinghistory.org.uk/det/12549/PC-NFS%20version%205.0/|website=www.computinghistory.org.uk|publisher=The Centre for Computing History|access-date=24 September 2016}}</ref>
* [[Novell NetWare]],<ref name="NFSforNetWare">{{cite web|title=NFS Gateway for NetWare 6.5|url=https://www.novell.com/products/openenterpriseserver/features/nfs-gateway-for-netware65.html|website=www.novell.com|publisher=Novell|access-date=24 September 2016}}</ref> although the default networking protocol is [[NetWare Core Protocol]] (NCP)
* [[OpenVMS]]<ref name="NFSforVMS">{{cite web|title=HP TCP/IP Services for OpenVMS Management|url=http://h41379.www4.hpe.com/doc/83final/6526/6526pro_052.html|website=h41379.www4.hpe.com|publisher=HP|access-date=24 September 2016|archive-url=https://web.archive.org/web/20160924192510/http://h41379.www4.hpe.com/doc/83final/6526/6526pro_052.html|archive-date=2016-09-24}}</ref>
* [[OS/2]]<ref>{{cite web|url=https://ecsoft2.org/network-file-system-nfs-plugin-netdrive|access-date=2020-09-22|website=ecsoft2.org|title=NTFS plugin for NetDrive|archive-date=2016-02-22|archive-url=https://web.archive.org/web/20160222155213/https://ecsoft2.org/network-file-system-nfs-plugin-netdrive|url-status=live}}</ref>
* [[RISC OS]]<ref name="Sunfish/Moonfish by Alex Waugh">{{Cite web|url=http://www.cp15.org/networking/|title = Networking related programs|website=cp15.org}}</ref>
[[File:NfsPerformanceGraph.png|thumb|600px|center|NFS SPECsfs2008 performance comparison, as of 22 November 2013]]
== Protocol development ==
Line 115 ⟶ 105:
=== {{anchor|PNFS}}2000s ===
By the 21st century, neither DFS nor AFS had achieved any major commercial success as compared to SMB
In January, 2010, [[Panasas]] proposed an NFSv4.1 based on their ''Parallel NFS'' (pNFS) technology claiming to improve data-access parallelism<ref>{{Cite web |title= pNFS |publisher= [[Panasas]] |url= http://www.pnfs.com/ |access-date= August 4, 2013 |archive-date= August 7, 2013 |archive-url= https://web.archive.org/web/20130807180615/http://www.pnfs.com/ |url-status= live }}</ref> capability. The NFSv4.1 protocol defines a method of separating the [[metadata#File system metadata|filesystem meta-data]] from file data ___location; it goes beyond the simple name/data separation by striping the data amongst a set of data servers. This differs from the traditional NFS server which holds the names of files and their data under the single umbrella of the server. Some products are multi-node NFS servers, but the participation of the client in separation of meta-data and data is limited.
The NFSv4.1 pNFS server is a set of server resources or components; these are assumed to be controlled by the meta-data server.
Line 134 ⟶ 124:
== See also ==
{{Div col|colwidth=30em}}
* [[9P (protocol)]]
* [[Alluxio]]
* [[
* [[CacheFS]] – a caching mechanism for Linux NFS clients
* [[Hadoop Distributed File System]] (
* [[Kerberos (protocol)]]
* [[Network Information Service]]
* [[Remote File System]]
* [[Root squash]]
* [[
* [[Shared resource]]
* [[TCP Wrapper]]{{Div col end}}
==References==
Line 159 ⟶ 143:
{{colbegin}}
* [[Request for Comments|RFCs]]:
** {{IETF RFC|1094|link=no}} – NFS Version 2 Protocol Specification▼
** {{IETF RFC|1790|link=no}} – Sun/ISOC ONC RPC Change Control Agreement▼
** {{IETF RFC|1813|link=no}} – NFS Version 3 Protocol Specification▼
** {{IETF RFC|2054|link=no}} – WebNFS Client Specification▼
** {{IETF RFC|2055|link=no}} – WebNFS Server Specification▼
** {{IETF RFC|2203|link=no}} – RPCSEC_GSS Specification▼
** {{IETF RFC|2224|link=no}} – NFS URL Scheme Specification▼
** {{IETF RFC|2339|link=no}} – Sun/ISOC NFS Change Control Agreement▼
** {{IETF RFC|3010|link=no}} – NFS Version 4 Protocol Specification (obsoleted by RFC 3530)▼
** {{IETF RFC|3530|link=no}} – NFS Version 4 Protocol Specification (obsoleted by RFC 7530 and RFC 7531)▼
** {{IETF RFC|5403|link=no}} – RPCSEC_GSS Version 2▼
** {{IETF RFC|5661|link=no}} – NFS Version 4.1 Protocol Specification (obsoleted by RFC 8881)▼
** {{IETF RFC|5662|link=no}} – NFS Version 4.1 Protocol XDR Description▼
** {{IETF RFC|5663|link=no}} – Parallel NFS - Block/Volume Layout Specification▼
** {{IETF RFC|5664|link=no}} – Parallel NFS - Object-Based Operations Specification▼
** {{IETF RFC|7530|link=no}} – NFS Version 4 Protocol Specification▼
** {{IETF RFC|7531|link=no}} – NFS Version 4 Protocol XDR Description▼
** {{IETF RFC|7862|link=no}} – NFS Version 4.2 Protocol Specification▼
** {{IETF RFC|7863|link=no}} – NFS Version 4.2 Protocol XDR Description▼
** {{IETF RFC|8154|link=no}} – Parallel NFS - SCSI Layout Specification▼
** {{IETF RFC|8275|link=no}} – Umask attribute extension for NFS Version 4.2▼
** {{IETF RFC|8276|link=no}} – Xattrs extension for NFSv4▼
** {{IETF RFC|8434|link=no}} – Parallel NFS - Flexible File Layout Specification▼
** {{IETF RFC|8881|link=no}} – NFS Version 4.1 Protocol Specification
▲** {{IETF RFC|8434|link=no}} – Parallel NFS - Flexible File Layout Specification
▲** {{IETF RFC|8276|link=no}} – Xattrs extension for NFSv4
▲** {{IETF RFC|8275|link=no}} – Umask attribute extension for NFS Version 4.2
▲** {{IETF RFC|8154|link=no}} – Parallel NFS - SCSI Layout Specification
▲** {{IETF RFC|7863|link=no}} – NFS Version 4.2 Protocol XDR Description
▲** {{IETF RFC|7862|link=no}} – NFS Version 4.2 Protocol Specification
▲** {{IETF RFC|7531|link=no}} – NFS Version 4 Protocol XDR Description
▲** {{IETF RFC|7530|link=no}} – NFS Version 4 Protocol Specification
▲** {{IETF RFC|5664|link=no}} – Parallel NFS - Object-Based Operations Specification
▲** {{IETF RFC|5663|link=no}} – Parallel NFS - Block/Volume Layout Specification
▲** {{IETF RFC|5662|link=no}} – NFS Version 4.1 Protocol XDR Description
▲** {{IETF RFC|5661|link=no}} – NFS Version 4.1 Protocol Specification (obsoleted by RFC 8881)
▲** {{IETF RFC|5403|link=no}} – RPCSEC_GSS Version 2
▲** {{IETF RFC|3530|link=no}} – NFS Version 4 Protocol Specification (obsoleted by RFC 7530 and RFC 7531)
▲** {{IETF RFC|3010|link=no}} – NFS Version 4 Protocol Specification (obsoleted by RFC 3530)
▲** {{IETF RFC|2339|link=no}} – Sun/ISOC NFS Change Control Agreement
▲** {{IETF RFC|2224|link=no}} – NFS URL Scheme Specification
▲** {{IETF RFC|2203|link=no}} – RPCSEC_GSS Specification
▲** {{IETF RFC|2055|link=no}} – WebNFS Server Specification
▲** {{IETF RFC|2054|link=no}} – WebNFS Client Specification
▲** {{IETF RFC|1813|link=no}} – NFS Version 3 Protocol Specification
▲** {{IETF RFC|1790|link=no}} – Sun/ISOC ONC RPC Change Control Agreement
▲** {{IETF RFC|1094|link=no}} – NFS Version 2 Protocol Specification
* Open Group Technical Standards:
** [https://archive.opengroup.org/publications/archive/CDROM/c702.pdf Protocols for Interworking: XNFS, Version 3W] – Open Group specification of NFS2, NFS3 and side-band protocols MNT, NSM and NLM for file locking which are not covered by RFC documents
** [https://archive.opengroup.org/publications/archive/CDROM/d030.pdf Protocols for X/Open PC Interworking: (PC)NFS] – Open Group specification of NFS2 and side-band protocols MNT, NLM and PCNFSD which are not covered by RFC documents
* Various resources:
** [https://web.archive.org/web/20080216083308/http://www.ietf.org/html.charters/nfsv4-charter.html IETF: Network File System Version 4 (nfsv4) Charter]
Line 206 ⟶ 191:
[[Category:Distributed file systems]]
[[Category:Network booting]]
[[Category:1984 software]]
|