[SoftNAS KB]: NFS Common Commands (Cheat Sheet)

NFS Shares

Update Exports

After editing /etc/exports run

exportfs -a

List Exports

# showmount -e
Export list for myserver:
/export/home       10.1.0.0/24
#

Show Clients

On the NFS server run 'showmount' to see mounting clients

# showmount
Hosts on myserver:
10.1.0.15
#

List Protocols/Services

To list local services run:

# rpcinfo -p
  program vers proto   port  service
   100000    4   tcp    111  portmapper
   100000    3   tcp    111  portmapper
   100000    2   tcp    111  portmapper
   100000    4   udp    111  portmapper
   100000    3   udp    111  portmapper
   100000    2   udp    111  portmapper
   100024    1   udp  48555  status
   100024    1   tcp  49225  status
   100003    2   tcp   2049  nfs
   100003    3   tcp   2049  nfs
   100003    4   tcp   2049  nfs
   100227    2   tcp   2049
   100227    3   tcp   2049
   100003    2   udp   2049  nfs
   100003    3   udp   2049  nfs
   100003    4   udp   2049  nfs
   100227    2   udp   2049
   100227    3   udp   2049
   100021    1   udp  51841  nlockmgr
   100021    3   udp  51841  nlockmgr
   100021    4   udp  51841  nlockmgr
   100021    1   tcp  37319  nlockmgr
   100021    3   tcp  37319  nlockmgr
   100021    4   tcp  37319  nlockmgr
   100005    1   udp  57376  mountd
   100005    1   tcp  37565  mountd
   100005    2   udp  36255  mountd
   100005    2   tcp  36682  mountd
   100005    3   udp  54897  mountd
   100005    3   tcp  51122  mountd


Above output is from an NFS server. You can also run it for remote servers by passing an IP. NFS clients usually just run status and portmapper:

# rpcinfo -p 10.1.0.15
  program vers proto   port  service
   100000    4   tcp    111  portmapper
   100000    3   tcp    111  portmapper
   100000    2   tcp    111  portmapper
   100000    4   udp    111  portmapper
   100000    3   udp    111  portmapper
   100000    2   udp    111  portmapper
   100024    1   udp  44152  status
   100024    1   tcp  53182  status


NFSv4

Mounting NFSv4 Shares

The difference in mounting is that you need to provide "nfs4" and transport and port options like this:

mount -t nfs4 -o proto=tcp,port=2049 server:/export/home /mnt

Ensure Running Id Mapper

When using NFSv4 share ensure to have the id mapper running on all clients. On Debian you need to explicitely start it:

service idmapd start

Mapping Users

You might want to set useful NFSv4 default mappings and some explicit mappings for unknown users:

#cat /etc/idmapd.conf
[...]
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup

[Static]
someuser@otherserver = localuser


Tuning

Tuning NFS Clients

When optimizing for performance try the following client mount option changes:

  • Use "hard" instead of "soft"

  • Add "intr" to allow for dead server and killable client programs

  • Increase "mtu" to maximum

  • Increase "rsize" and "wsize" to maximum supported by clients and server

  • Remove "sync"

After changing and remounting check for effective options using "nfsstat -m" which will give you a list like this:

$ nfsstat -m
/data from 10.1.0.16:/data
Flags:    rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=10.1.0.16,local_lock=none,addr=10.1.0.15
$


When synchronous shares are important try the "noac" mount option.

Getting NFS Statistics

Use "nfsstat" for detailed NFS statistics! The options are "-c" for client and "-s" for server statistics. On the server caching statistics are most interesting,

# nfsstat -o rc
Server reply cache:
hits       misses     nocache
0          63619      885550  
#

on the client probably errors and retries. Also note that you can get live per-interval results when running with "--sleep=<interval>". For example

# nfsstat -o fh --sleep=2


fromhttp://lzone.de/cheat-sheet/NFS