Network File System: Difference between revisions

Content deleted Content added
No edit summary
Tags: Reverted Mobile edit Mobile web edit
Adjust "Servers and shared computers you can connect to on Mac" citation.
 
(4 intermediate revisions by 3 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]] (RFC)i.e. RFCs, allowing anyone to implement the protocol.
 
== Versions and variations ==
Line 13:
Version&nbsp;2 of the protocol (defined in {{IETF RFC|1094|link=no}}, March 1989) originally operated only over [[User Datagram Protocol]] (UDP). Its designers meant to keep the server side [[Stateless server|stateless]], with [[lock (computer science)|locking]] (for example) implemented outside of the core protocol. People involved in the creation of NFS version&nbsp;2 include [[Russel Sandberg]], [[Bob Lyon (engineer)|Bob Lyon]], [[Bill Joy]], [[Steve Kleiman]], and others.<ref name="sun85" /><ref name="Rusty">{{Cite journal |title= The Sun Network Filesystem: Design, Implementation and Experience |journal= Technical Report |author= Russel Sandberg |publisher= Sun Microsystems |url= http://www.cse.buffalo.edu/faculty/tkosar/cse710_spring13/papers/nfs.pdf |archive-date= 2013-11-26 |access-date= 2013-08-04 |archive-url= https://web.archive.org/web/20131126095851/http://www.cse.buffalo.edu/faculty/tkosar/cse710_spring13/papers/nfs.pdf |url-status= live }}</ref>
 
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&nbsp;2, [[DOS]], and VAX/VMS using [[Eunice (software)|Eunice]].<ref name="Rusty" />
NFSv2 only allows the first 2&nbsp;GB of a file to be read due to [[32-bit]] limitations.
 
Line 24:
* assorted other improvements.
 
The first NFS Version&nbsp;3 proposal within Sun Microsystems was created not long after the release of NFS Version&nbsp;2. The principal motivation was an attempt to mitigate the performance issue of the synchronous write operation in NFS Version&nbsp;2.<ref name="usenix94">{{cite web |url=https://www.usenix.org/legacy/publications/library/proceedings/bos94/full_papers/pawlowski.ps |title=NFS Version&nbsp;3 Design and Implementation |year=1994 |publisher=[[USENIX]] |author1=Brian Pawlowski |author2=Chet Juszczak |author3=Peter Staubach |author4=Carl Smith |author5=Diane Lebel |author6=David Hitz |access-date=2015-11-23 |archive-date=2015-11-24 |archive-url=https://web.archive.org/web/20151124182558/https://www.usenix.org/legacy/publications/library/proceedings/bos94/full_papers/pawlowski.ps |url-status=live }}</ref> By July 1992, implementation practice had solved many shortcomings of NFS Version&nbsp;2, leaving only lack of large file support (64-bit file sizes and offsets) a pressing issue. At the time of introduction of Version&nbsp;3, vendor support for [[Transmission Control Protocol|TCP]] as a [[transport layer|transport-layer]] protocol began increasing. While several vendors had already added support for NFS Version&nbsp;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&nbsp;3. Using TCP as a transport made using NFS over a [[Wide area network|WAN]] more feasible, and allowed the use of larger read and write transfer sizes beyond the 8&nbsp;KB limit imposed by [[User Datagram Protocol]].
 
====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]], 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 [[List of TCP and UDP port numbers|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===
Line 75:
* [[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>
* [[macOS]], although the default networking protocol is [[Apple Filing Protocol]] (AFP)
* [[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>