The mounting of NFS volumes closely resembles regular file
systems. Invoke mount using the following syntax:[1]
# mount -t nfs nfs_volume local_dir options |
nfs_volume is given as
remote_host:remote_dir.
Since this notation is unique to NFS filesystems, you can leave out
the –t nfs option.
There are a number of additional options that you can specify to
mount upon mounting an NFS volume. These may be
given either following the –o switch on the
command line or in the options field of the
/etc/fstab entry for the volume. In both cases,
multiple options are separated by commas and must not
contain any whitespace characters. Options specified on the command
line always override those given in the fstab
file.
Here is a sample entry from /etc/fstab :
# volume mount point type options
news:/var/spool/news /var/spool/news nfs timeo=14,intr |
This volume can then be mounted using this command:
# mount news:/var/spool/news |
In the absence of an fstab entry, NFS
mount invocations look a lot uglier. For instance,
suppose you mount your users' home directories from a machine named
moonshot, which uses a default
block size of 4 K for read/write operations. You might increase the
block size to 8 K to obtain better performance by issuing the command:
# mount moonshot:/home /home -o rsize=8192,wsize=8192 |
The list of all valid options is described in its entirety in the
nfs(5) manual page. The following is a partial list
of options you would probably want to use:
- rsize=n and wsize=n
These specify the datagram size used by the NFS clients on read and write
requests, respectively. The default depends on the version of kernel, but
is normally 1,024 bytes.
- timeo=n
This sets the time (in tenths of a second) the NFS client will wait for a
request to complete. The default value is 7 (0.7 seconds). What happens after
a timeout depends on whether you use the hard or
soft option.
- hard
Explicitly mark this volume as hard-mounted. This is on by default.
This option causes the server to report a message to the console when a
major timeout occurs and continues trying indefinitely.
- soft
Soft-mount (as opposed to hard-mount) the driver. This option causes
an I/O error to be reported to the process attempting a file operation when
a major timeout occurs.
- intr
Allow signals to interrupt an NFS call. Useful for aborting when the
server doesn't respond.
Except for rsize and wsize, all of these options
apply to the client's behavior if the server should become temporarily
inaccessible. They work together in the following way: Whenever the
client sends a request to the NFS server, it expects the operation to
have finished after a given interval (specified in the
timeout option). If no confirmation
is received within this time, a so-called minor timeout
occurs, and the operation is retried with the timeout interval doubled. After
reaching a maximum timeout of 60 seconds, a major timeout
occurs.
By default, a major timeout causes the client to print a message
to the console and start all over again, this time with an initial
timeout interval twice that of the previous cascade. Potentially, this
may go on forever. Volumes that stubbornly retry an operation until
the server becomes available again are called
hard-mounted. The opposite variety, called
soft-mounted, generate an I/O error for the
calling process whenever a major timeout occurs. Because of the
write-behind introduced by the buffer cache, this error condition is
not propagated to the process itself before it calls the
write function the next time, so a program can
never be sure that a write operation to a soft-mounted volume has
succeeded at all.
Whether you hard- or soft-mount a volume depends partly on taste but
also on the type of information you want to access from a volume. For
example, if you mount your X programs by NFS, you certainly would not
want your X session to go berserk just because someone brought the
network to a grinding halt by firing up seven copies of Doom at the
same time or by pulling the Ethernet plug for a moment. By
hard-mounting the directory containing these programs, you make sure
that your computer waits until it is able to re-establish contact
with your NFS server. On the other hand, non-critical data such as
NFS-mounted news partitions or FTP archives may also be
soft-mounted, so if the remote machine is temporarily unreachable or
down, it doesn't hang your session. If your network connection to the
server is flaky or goes through a loaded router, you may either
increase the initial timeout using the timeo option or hard-mount the
volumes. NFS volumes are hard-mounted by default.
Hard mounts present a problem because, by default, the file operations
are not interruptible. Thus, if a process attempts, for example, a
write to a remote server and that server is unreachable, the user's
application hangs and the user can't do anything to abort the
operation. If you use the intr
option in conjuction with a hard mount, any signals received by the
process interrupt the NFS call so that users can still abort
hanging file accesses and resume work (although without saving the
file).
Usually, the rpc.mountd daemon in some way or other
keeps track of which directories have been mounted by what hosts. This
information can be displayed using the showmount
program, which is also included in the NFS server package:
# showmount -e moonshot
Export list for localhost:
/home <anon clnt>
# showmount -d moonshot
Directories on localhost:
/home
# showmount -a moonshot
All mount points on localhost:
localhost:/home |