This is version 1.1.0 of nfs-utils, the Linux NFS utility package. 0. PROJECT RESOURCES Home page: http://sourceforge.net/projects/nfs/ To use the 'gss' support you must have kerberos-5 development libraries installed. Otherwise use "--disable-gss" To use nfsv4 support you need libevent and libnfsidmap development libraries. They are available from http://www.monkey.org/~provos/libevent/ http://www.citi.umich.edu/projects/nfsv4/linux/libnfsidmap/ Otherwise use --disable-nfsv4 To use the nfsdcld tracking daemon, nfsv4 support must be enabled, and the libsqlite3 development libraries must be installed. 1. COMPILING Unpack the sources and run these commands: # ./configure # make To install binaries and documenation, run this command: # make install 2. COMPILING FROM GIT Getting nfs-utils for the first time: git clone git://linux-nfs.org/nfs-utils Updating to the latest head after you've already got it. git pull Building requires that autotools be installed. To invoke them simply sh autogen.sh Finally, build as usual as above. 3. DAEMON STARTUP ORDER This nfs-utils packages does not provide any scripts for starting various daemons as most distributions replace them with their own, so any scripts we package would not get much testing. Instead, we explain the dependencies involved in startup so that scripts can be written to work correctly. 3.0 PREREQUISITES Name service (host name lookup) should be working before any NFS services are started. "portmap" must be running before any NFS services (server or client) are started. Normally network interfaces should be configured first as well, though this isn't critical for the NFS server (providing name service is handled locally). 3.1. SERVER STARTUP A/ mount -t nfsd /proc/fs/nfsd This filesystem needs to be mount before most daemons, particularly exportfs, mountd, svcgssd, idmapd. It could be mounted once, or the script that starts each daemon could test if it is mounted and mount it if not. B/ svcgssd ; idmapd These supply services to nfsd and so should be started before rpc.nfsd. Where they come between mounting the nfsd filesystem and starting the nfsd server is not important. idmapd is only needed for NFSv4 support. svcgssd is only needed if exportfs NFS filesystem with crypto- security (Kerberos). C/ exportfs -av ; rpc.mountd It is important that exportfs be run before mountd so that mountd is working from current information (in /var/lib/nfs/etab). It is also important that both of these are run before rpc.nfsd. If not, any NFS requests that arrive before mountd is started will get replied to with a 'Stale NFS File handle' error. D/ rpc.statd --no-notify It is best if statd is started before nfsd though this isn't critical. Certainly it should be at most a few seconds after nfsd. When nfsd starts it will start lockd. If lockd then receives a lock request it will communicate with statd. If statd is not running lockd will retry, but it won't wait forever for a reply. Note that if statd is started before nfsd, the --no-notify option must be used. If notify requests are sent out before nfsd start, clients may try to reclaim locks and, on finding that lockd isn't running, they will give up and never reclaim the lock. rpc.statd is only needed for NFSv2 and NFSv3 support. E/ nfsdcld This daemon is only needed on kernels that support the nfsdcld upcall, and only if the legacy client ID tracking isn't used. It is also not needed if the server does not support NFSv4. To determine whether you need this or not, do the following: # cat /proc/fs/nfsd/versions That should yield a list of NFS versions that this kernel supports, if "4" or later is not in that list, or they are prefixed with a "-" then you don't need to run this daemon. Next: # cat /proc/fs/nfsd/nfsv4recoverydir If that file is not present, or the directory that the above command outputs is not present, then this daemon is required in order to support lock recovery by the clients when the server reboots. F/ rpc.nfsd Starting nfsd will automatically start lockd. The nfs server will now be fully active and respond to any requests from clients. G/ sm-notify This will notify any client which might have locks from before a reboot to try to reclaim their locks. This should start immediately after rpc.nfsd is started so that clients have a chance to reclaim locks within the 90 second grace period. sm-notify is only needed for NFSv2 and NFSv3 support. 3.2. CLIENT STARTUP A/ sm-notify This should be run shortly after boot and before any NFS filesystems are mounted with remote-locking support - filesystems can be mounted with "-o nolock" before sm-notify. This is appropriate for '/', '/usr', and '/var'. B/ gssd ; idmapd idmapd should be started before mounting any NFSv4 filesystems. gssd should be started before mounting any NFS filesystems securely (with Kerberos). C/ statd should be run before any NFSv2 or NFSv3 filesystem is mounted with remote locking (i.e. without -o nolock). 'mount' will try to use "/usr/sbin/start-statd" to start statd if it is not already running, so there is no need to explicitly start statd in boot-time scripts. 3.3. SERVER/CLIENT INTERACTIONS A/ sm-notify Both the server and the client need sm-notify to be run. It should be run after the NFS server is started, but before and NFS filesystems are mounted with remote locking. B/ rpc.statd Both the server and the client need rpc.statd to be running. Each should try to start when they need it. C/ idmapd Both the server and client need idmapd to be running. If idmapd is started (for the client) before starting nfsd the 'nfsd' filesystem is mounted, then idmapd should be sent a HUP signal afterwards to signal that the server channels should be opened. Share And Enjoy! -- the nfs-utils developers