There are a few interesting differences between NFSv3 and NFSv4. Comparison of NFSv3 and NFSv4 is quite hard to obtain and the information is referenced from NFS Version 4 Open Source Project.
From a File System perspective, there are
- In NFSv3, client must rely on auxiliary protocol, the mount protocol to request a list of server’s exports and obtain root filehandle of a given export. It is fed into the NFS protocol proper once the root filehandle is obtained.
- In NFSv4 uses the virtual file system to present the server’s export and associated root filehandles to the client.
- NFSv4 defines a special operation to retrieve the Root filehandle and the NFS Server presents the appearance to the client that each export is just a directory in the pseudofs
- NFSv4 Pseudo File System is supposed to provide maximum flexibility. Exports Pathname on servers can be changed transparently to clients.
- NFSv3 is stateless. In other words if the server reboots, the clients can pick up where it left off. No state has been lost.
- NFSv3 is typically used with NLM, an auxiliary protocol for file locking. NLM is stateful that the server LOCKD keeps track of locks.
- In NFSv4, locking operations are part of the protocol
- NFSv4 servers keep track of open files and delegations
- NFSv3 rely on NLM. Basically, Client process is put to “sleep”. When a callback is received from the server, client process is granted the lock.
- For NFSv4, the client to put to sleep, but will poll the server periodically for the lock.
- The benefits of the mechanism is that there is one-way reachability from client to server. But it may be less efficient.