There are currently two main NFS protocol versions in mainstream use. The first is version 3, which was introduced in 1995 as part of RFC 1813. NFSv3 implementations use separate daemons to implement the locking (rpc.lockd), status (rpc.statd), mount (rpc.mountd) and port assignments (portmap) features required by the protocol. NFSv4, which was introduced in 2003 as part of RFC 3530, takes a different approach. The locking and stat functions are now part of the core NFS implementation, so you no longer need to ensure that the portmap, rpc.lockd and rpc.statd daemons are running on your Linux NFSv4 clients and servers. There is a blurb regarding this in the Redhat Linux 5.5 administration guide:
“Because protocol support has been incorporated into the v4 protocol, NFSv4 has no interaction with the portmap, rpc.lockd, and rpc.statd daemons. NFSv4 listens on the well-known TCP port 2049, which eliminates the need for portmap interaction. The mounting and locking protocols have been incorporated into the V4 protocol which eliminates the need for interaction with rpc.lockd and rpc.statd. The rpc.mountd daemon is still required on the server, but is not involved in any over-the-wire operations.”
This is an interesting tidbit that I wasn’t aware of, and I’m learning a lot of new things as I dig through some of the NFS implementation details. If you are interested in learning how NFS truly works, check out the NFSv3 and NFSv4 RFCs! You will be glad you did!!