| MOUNT_NFS(8) | System Manager's Manual | MOUNT_NFS(8) |
mount_nfs — mount
NFS file systems
mount_nfs |
[-o options]
server:/path directory |
The mount_nfs command calls the
mount(2) system call to prepare and
graft a remote NFS file system ( server:/path ) on to
the file system tree at the point directory.
This command is expected to be executed by the
mount(8) command. Direct use of
mount_nfs to mount NFS file systems is strongly
discouraged because there is little practical benefit of using it instead of
mount(8).
For NFS versions that use a separate mount protocol,
mount_nfs implements the mount protocol as described
in RFC 1094, Appendix A and NFS: Network File System
Version 3 Protocol Specification, RFC 1813, Appendix I.
By default, mount_nfs will attempt the
mount twice before exiting with an error. If the -o
bg option is given, it will attempt the mount once
and then background itself to continue trying another 10,000 times (pausing
for one minute between attempts). The option -o
retrycnt=⟨num⟩
can be used if a different retry behavior is desired for a mount.
If the server becomes unresponsive while an NFS file system is
mounted, any new or outstanding file operations on that file system will
hang uninterruptibly until the server comes back (or that NFS file system is
forcibly unmounted). To modify this default behaviour, see the
-o intr and
-o soft mount options.
Mount options are specified with a -o flag
followed by a comma separated string of options. See the
mount(8) man page for possible options
and their meanings. The following NFS-specific options are also
available:
bgretrycnt=⟨num⟩retrycnt to 0, in addition to only trying
to establish connection once, will case nfs client code to use quick time
out value (default 8s) instead of regular mount time out (default 30s)
value while establishing initial connection.
udptcpinetinet6proto=⟨netid⟩tcp (TCP over IPv4), udp
(UDP over IPv4), tcp6 (TCP over IPv6), and
udp6 (UDP over IPv6). Note that this option
differs from the separate tcp and
udp options described above in that each netid
value specifies both a transport protocol and address family (IP version).
mntudpmountport=⟨port-number⟩port=⟨port-number⟩noconnresvportresvport mount option.
intrEINTR when a termination signal is posted for the
process.
softretrans round trip timeout intervals. Note: mounts
which are both soft and read-only will also have the
locallocks mount option enabled by default -
unless explicitly overridden with a lock option (for example,
nolocks or nolocallocks ).
vers=⟨num[.num]⟩[-⟨num[.num]⟩]nfsvers=⟨num[.num]⟩[-⟨num[.num]⟩]vers or
nfsvers option. Versions 2 or 3 do not support
minor versioning so minor versions greater than zero are treated as above.
nfsv2nfsv3nfsv4-o
vers=⟨num⟩ to
specify NFS protocol version.
sec=⟨mechanism⟩etype=⟨encryption-type⟩realm=⟨realm⟩principal=⟨principal⟩sprincipal=⟨server-principal⟩rsize=⟨readsize⟩-s option to see what the “fragments
dropped due to timeout” value is.)
wsize=⟨writesize⟩rsize option, but using the “fragments
dropped due to timeout” value on the server instead of the client.
Note that both the rsize and
wsize options should only be used as a last ditch
effort at improving performance when mounting servers that do not support
TCP mounts.
rwsize=⟨size⟩dsize=⟨readdirsize⟩readahead=⟨maxreadahead⟩rdirplus
/ nordirplusacregmin=⟨seconds⟩acregmax=⟨seconds⟩acdirmin=⟨seconds⟩acdirmax=⟨seconds⟩acrootdirmin=⟨seconds⟩acrootdirmax=⟨seconds⟩acrootdirmin and
acrootdirmax will be assigned to those of
acdirmin and acdirmax
respectively, to maintain backward compatibility. Setting all the minimum
and maximum to zero will disable attribute caching. The algorithm to
calculate the timeout is based on the age of the file or directory. The
older it is, the longer the attribute cache is considered valid, subject
to the limits above. Note that the effectiveness of this algorithm depends
on how well the clocks on the client and server are synchronized.
actimeo=⟨seconds⟩noacactimeo to 0.
nonegnamecacheaccesscache=⟨size⟩locallockslocallocks mount
option enabled by default - unless explicitly overridden with a lock
option (for example, nolocks or
nolocallocks ).
nolocksnolockdnolocknonlmENOTSUP regardless of whether or not the NFS
server supports NFS file locking.
noquotaENOTSUP regardless of whether or not the NFS
server supports the RQUOTA service.
maxgroups=⟨num⟩dumbtimertimeo=⟨timeout⟩dumbtimer option should be specified when using
this option to manually tune the timeout interval.)
retrans=⟨count⟩deadtimeout=⟨timeout⟩deadtimeout mount
option set to 60 seconds. This can be explicitly overridden by setting
deadtimeout=0.
mutejukeboxasyncnfs.client.allow_async option in
nfs.conf(5) is also enabled.
syncnosync, behavior is to return once
the I/O has been queued up.)
nocallbacknonamedattrnamedattrnoaclacl option.
aclonlynoacl option.
nfcnfs.conf(5) can be used to
configure some NFS client options. In particular,
nfs.client.mount.options can be used to specify
default mount options. This can be useful in situations where it is not easy
to configure the command-line options. Some NFS client options in
nfs.conf(5) correspond to kernel
configuration values which will get set by mount_nfs
when performing a mount. To update these values without performing a mount,
use the command: mount_nfs
configupdate.
The following mount_nfs command line flags
have equivalent -o option
forms (shown in parentheses) and their use is strongly discouraged. These
command line flags are deprecated and the -o
option forms should be used instead.
-2 (vers=2), -3
(vers=3), -4 (vers=4), -L
(nolocks), -P (resvport), -T
(tcp), -U (mntudp), -b (bg),
-c (noconn), -d (dumbtimer),
-i (intr), -l (rdirplus),
-m (nordirplus), -s (soft),
-I readdirsize (dsize=#),
-R retrycnt (retrycnt=#),
-a maxreadahead (readahead=#),
-g maxgroups (maxgroups=#),
-r readsize (rsize=#),
-t timeout (timeo=#),
-w writesize (wsize=#),
-x retrans (retrans=#).
The simplest way to invoke mount_nfs is
with a command like:
mount remotehost:/filesystem
/localmountpointor:
mount -t nfs remotehost:/filesystem
/localmountpointAs can be derived from the comments accompanying the options, performance tuning of NFS can be a non-trivial task. Here are some common points to watch:
sync option will probably have a
detrimental affect on performance. Its use is discouraged as it provides
little benefit.async option may improve performance,
but only at the risk of losing data if the server crashes because the
client will not be making sure that all data is committed to stable
storage on the server.rsize
and wsize options respectively will increase
throughput if the network interface can handle the larger packet sizes.
The default read and write sizes are 8K when using UDP, and 32K when using TCP. Values over 16K are only supported for TCP, where 2M is the maximum.
Any value over 32K is unlikely to get you more performance, unless you have a very fast network.
This can especially happen with lossy network connections (e.g. wireless networks) which can lead to a lot of dropped packets.
In this case, decreasing the read and write size, using TCP, or a combination of both will usually lead to better throughput.
Some common problems with mount_nfs can be
difficult for first time users to understand.
mount_nfs: can't access /foo:
Permission deniedThis message means that the remote host is either not exporting the file system you requested or is not exporting it to your host. If you believe the remote host is indeed exporting a file system to you, make sure the exports(5) file is exporting the proper directories. The program showmount(8) can be used to see a server's exports list. The command “showmount -e remotehostname” will display what file systems the remote host is exporting.
A common mistake is that
mountd(8) will not export a file system
with the -alldirs option, unless it is a mount point
on the exporting host. It is not possible to remotely mount a subdirectory
of an exported mount, unless it is exported with the
-alldirs option.
The following error:
NFS Portmap: RPC: Program not
registeredmeans that the remote host is not running nfsd(8). or mountd(8). The program rpcinfo(8) can be used to determine if the remote host is running nfsd and mountd by issuing the command:
rpcinfo -p
remotehostnameIf the remote host is running nfsd, mountd, rpc.statd, and rpc.lockd it would display:
program vers proto port 100000 2 tcp 111
portmapper 100000 2 udp 111
portmapper 100005 1 udp 950 mountd 100005 3 udp 950 mountd 100005 1 tcp 884 mountd 100005 3 tcp 884 mountd 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100024 1 udp 644 status 100024 1 tcp 918 status 100021 0 udp 630
nlockmgr 100021 1 udp 630
nlockmgr 100021 3 udp 630
nlockmgr 100021 4 udp 630
nlockmgr 100021 0 tcp 917
nlockmgr 100021 1 tcp 917
nlockmgr 100021 3 tcp 917
nlockmgr 100021 4 tcp 917
nlockmgrThe following error:
mount_nfs: can't resolve
hostindicates that mount_nfs could not resolve
the name of the remote host.
The following error:
In case the remote host is not running rpc.statd and the client is
mounting the NFS directory with remote locks (enabled by default),
mount_nfs should fail with EPROGUNAVAIL. rpc.statd
status can be verified using rpcinfo (see above).
The following warning:
indicates that provided wsize is much
greater than rsize. which could end up with a
different amount of readahead RPCs compared to the
amount requested by the user.
mount(2), unmount(2), mount(8), umount(8), nfsstat(1), netstat(1), rpcinfo(8), showmount(8), automount(8), nfs.conf(5), nfs(5)
An NFS server shouldn't loopback-mount its own exported file systems because it's fundamentally prone to deadlock.
| February 28, 2010 | macOS 15.6 |