Network file system (NFS), server message block (SMB) and common internet file system (CIFS) are all file access storage protocols, used to access files on remote servers and storage servers (such as NAS storage) as if they were local files.
They are not the file system, but they are protocols that operate at the application layer to establish synchronised communication between applications and storage, via the file system, whichever one may be in use. As application layer protocols, they are of the same order as HTTP, FTP, POP, and SMTP, for example.
NFS, SMB and CIFS are generally used with NAS file access storage systems, not SAN block storage, which can access blocks within files.
NFS: roots in Linux/Unix
NFS is mostly used with Linux and Unix operating systems. It was originally developed by Sun Microsystems in 1984 and is now at version 4, with parallel file access functionality (pNFS, used in scale-out NAS).
NFS uses a client-server architecture to make files accessible to multiple computers on a LAN. Admins can set which files are accessible by who (including via access control tools such as Active Directory) and NFS keeps up with synching data between machines.
NFS could run on the internet, in theory, but it lacks the ability to handle complex routing instructions and it is not encrypted by default.
Although developed by a Unix vendor and often used for Unix and Linux, NFS can also be used in Windows environments.
SMB: on the Windows side
SMB is primarily used in Windows environments and it forms the basis for Microsoft’s distributed file system.
IBM developed SMB originally in 1983 as a way of providing shared access to files and printers across a network. Microsoft picked it up later. The company used it in LAN Manager for IBM OS/2 in 1987 and subsequently built it into Windows NT 3.1 and has retained it in its operating systems since then.
SMB clients mount to files and directories via computer hostname or IP address (NFS uses the Unix command line). SMB can also be used in Unix and Linux environments and is a little easier to use in hybrid (Windows and Linux/Unix) environments than NFS.
SMB 1.0 arrived in 1983 with some encryption and running NetBIOS, with a great deal of chattiness that was later mitigated in SMB 2.0. File locking in SMB – so-called opportunistic locking – came in with version 2.0.
SMB 3.0 brought the SMB direct Protocol to give RDMA (direct access to memory) functionality, plus security enhancements such as end-to-end encryption. The latest version – 3.1.1 – beefs up security even further. Samba and others are third-party, reverse-engineered version of SMB developed back when it was proprietary.
Common internet file system (CIFS) is an implementation, or “dialect” of SMB, first introduced as a version of SMB 1.0 in 1996. It is mostly used with NetBIOS-based transports – which can get cumbersome on bigger, busier networks – and was focused on small LAN file, print and application access to storage. For that reason, it has been less scalable than NFS. CIFS is considered chatty, buggy and less than optimally secure compared to SMB.