Network File System
NFS (Network File System) is basically developed for sharing of files and folders between Linux/Unix systems by Sun Microsystems in 1980. It allows you to mount your local file systems over a network and remote hosts to interact with them as they are mounted locally on the same system. With the help of NFS, we can set up file sharing between Unix to Linux system and Linux to Unix system.
Network File System (NFS) is a distributed file system protocol originally developed by Sun Microsystems in 1984, 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. The NFS is an open standard defined in Request for Comments (RFC), allowing anyone to implement the protocol.
Benefits of NFS:
A) :- NFS allows local access to remote files.
B) :- It uses standard client/server architecture for file sharing between all *nix based machines.
C) :- With NFS it is not necessary that both machines run on the same OS.
D) :- With the help of NFS we can configure centralized storage solutions.
E) :- Users get their data irrespective of physical location.
F) :- No manual refresh needed for new files.
G) :- Newer version of NFS also supports acl, pseudo root mounts.
H) :- Can be secured with Firewalls and Kerberos.
Versions and variations:-
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.
NFSv2:
Version 2 of the protocol (defined in RFC 1094, March 1989) originally operated only over User Datagram Protocol (UDP). Its designers meant to keep the server side stateless, with locking (for example) implemented outside of the core protocol. People involved in the creation of NFS version 2 include Russel Sandberg, Bob Lyon, Bill Joy, Steve Kleiman, and others.
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. NFSv2 only allows the first 2 GB of a file to be read due to 32-bit limitations.
NFSv3:
A) :- support for 64-bit file sizes and offsets, to handle files larger than 2 gigabytes (GB).
B) :- support for asynchronous writes on the server, to improve write performance.
C) :- additional file attributes in many replies, to avoid the need to re-fetch them.
D) :- a READDIRPLUS operation, to get file handles[5] and attributes along with file names when scanning a directory.
E) :- 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. This became an acute pain point for Digital Equipment Corporation with the introduction of a 64-bit version of Ultrix to support their newly released 64-bit RISC processor, the Alpha 21064. 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.
NFSv4:
Version 4 (RFC 3010, December 2000; revised in RFC 3530, April 2003 and again in RFC 7530, March 2015), influenced by Andrew File System (AFS) and Server Message Block (SMB, also termed CIFS), 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 (RFC 5661, January 2010) 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).
NFS version 4.2 (RFC 7862) 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).
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.
Platforms:
NFS is often used with Unix operating systems (such as Solaris, AIX, HP-UX), Apple's macOS, and Unix-like operating systems (such as Linux and FreeBSD). It is also available to operating systems such as Acorn RISC OS, the classic Mac OS, OpenVMS, MS-DOS, Microsoft Windows, Novell NetWare, and IBM AS/400. Alternative remote file access protocols include the Server Message Block (SMB, also termed CIFS), Apple Filing Protocol (AFP), NetWare Core Protocol (NCP), and OS/400 File Server file system (QFileSvr.400).
Typical implementation:
Assuming a Unix-style scenario in which one machine (the client) needs access to data stored on another machine (the NFS server):
A) :- The server implements NFS daemon processes, running by default as nfsd, to make its data generically available to clients.
B) :- The server administrator determines what to make available, exporting the names and parameters of directories, typically using the /etc/exports configuration file and the exportfs command.
C) :- The server security-administration ensures that it can recognize and approve validated clients.
D) :- The server network configuration ensures that appropriate clients can negotiate with it through any firewall system.
E) :- The client machine requests access to exported data, typically by issuing a mount command. (The client asks the server (rpcbind) which port the NFS server is using, the client connects to the NFS server (nfsd), nfsd passes the request to mountd)
F) :- If all goes well, users on the client machine can then view and interact with mounted filesystems on the server within the parameters permitted.
Note that automation of the NFS mounting process may take place — perhaps using /etc/fstab and/or automounting facilities.
Important Files for NFS Configuration:
A) :- /etc/exports : Its a main configuration file of NFS, all exported files and directories are defined in this file at the NFS Server end.
B) :- /etc/fstab : To mount a NFS directory on your system across the reboots, we need to make an entry in /etc/fstab.
C) :- /etc/sysconfig/nfs : Configuration file of NFS to control on which port rpc and other services are listening.
NFS (Network File System) is basically developed for sharing of files and folders between Linux/Unix systems by Sun Microsystems in 1980. It allows you to mount your local file systems over a network and remote hosts to interact with them as they are mounted locally on the same system. With the help of NFS, we can set up file sharing between Unix to Linux system and Linux to Unix system.
Network File System (NFS) is a distributed file system protocol originally developed by Sun Microsystems in 1984, 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. The NFS is an open standard defined in Request for Comments (RFC), allowing anyone to implement the protocol.
Benefits of NFS:
A) :- NFS allows local access to remote files.
B) :- It uses standard client/server architecture for file sharing between all *nix based machines.
C) :- With NFS it is not necessary that both machines run on the same OS.
D) :- With the help of NFS we can configure centralized storage solutions.
E) :- Users get their data irrespective of physical location.
F) :- No manual refresh needed for new files.
G) :- Newer version of NFS also supports acl, pseudo root mounts.
H) :- Can be secured with Firewalls and Kerberos.
Versions and variations:-
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.
NFSv2:
Version 2 of the protocol (defined in RFC 1094, March 1989) originally operated only over User Datagram Protocol (UDP). Its designers meant to keep the server side stateless, with locking (for example) implemented outside of the core protocol. People involved in the creation of NFS version 2 include Russel Sandberg, Bob Lyon, Bill Joy, Steve Kleiman, and others.
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. NFSv2 only allows the first 2 GB of a file to be read due to 32-bit limitations.
NFSv3:
A) :- support for 64-bit file sizes and offsets, to handle files larger than 2 gigabytes (GB).
B) :- support for asynchronous writes on the server, to improve write performance.
C) :- additional file attributes in many replies, to avoid the need to re-fetch them.
D) :- a READDIRPLUS operation, to get file handles[5] and attributes along with file names when scanning a directory.
E) :- 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. This became an acute pain point for Digital Equipment Corporation with the introduction of a 64-bit version of Ultrix to support their newly released 64-bit RISC processor, the Alpha 21064. 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.
NFSv4:
Version 4 (RFC 3010, December 2000; revised in RFC 3530, April 2003 and again in RFC 7530, March 2015), influenced by Andrew File System (AFS) and Server Message Block (SMB, also termed CIFS), 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 (RFC 5661, January 2010) 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).
NFS version 4.2 (RFC 7862) 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).
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.
Platforms:
NFS is often used with Unix operating systems (such as Solaris, AIX, HP-UX), Apple's macOS, and Unix-like operating systems (such as Linux and FreeBSD). It is also available to operating systems such as Acorn RISC OS, the classic Mac OS, OpenVMS, MS-DOS, Microsoft Windows, Novell NetWare, and IBM AS/400. Alternative remote file access protocols include the Server Message Block (SMB, also termed CIFS), Apple Filing Protocol (AFP), NetWare Core Protocol (NCP), and OS/400 File Server file system (QFileSvr.400).
Typical implementation:
Assuming a Unix-style scenario in which one machine (the client) needs access to data stored on another machine (the NFS server):
A) :- The server implements NFS daemon processes, running by default as nfsd, to make its data generically available to clients.
B) :- The server administrator determines what to make available, exporting the names and parameters of directories, typically using the /etc/exports configuration file and the exportfs command.
C) :- The server security-administration ensures that it can recognize and approve validated clients.
D) :- The server network configuration ensures that appropriate clients can negotiate with it through any firewall system.
E) :- The client machine requests access to exported data, typically by issuing a mount command. (The client asks the server (rpcbind) which port the NFS server is using, the client connects to the NFS server (nfsd), nfsd passes the request to mountd)
F) :- If all goes well, users on the client machine can then view and interact with mounted filesystems on the server within the parameters permitted.
Note that automation of the NFS mounting process may take place — perhaps using /etc/fstab and/or automounting facilities.
Important Files for NFS Configuration:
A) :- /etc/exports : Its a main configuration file of NFS, all exported files and directories are defined in this file at the NFS Server end.
B) :- /etc/fstab : To mount a NFS directory on your system across the reboots, we need to make an entry in /etc/fstab.
C) :- /etc/sysconfig/nfs : Configuration file of NFS to control on which port rpc and other services are listening.