| This is nfs-utils, the Linux NFS userland 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://git.linux-nfs.org/~steved/nfs-utils.git |
| |
| 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/ rpc.nfsd |
| Starting nfsd will automatically start lockd. The nfs server |
| will now be fully active and respond to any requests from |
| clients. |
| |
| F/ 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 |
| <linux-nfs@vger.kernel.org> |