Kernel mode NFS

From OpenStora
Jump to: navigation, search

This is a (hopefully better) alternative to Installing userland NFS (UNFSD) on the Stora!

Aug 2011 update: thanks to missing script by Michael pleased to confirm file locking appears to be working! (mounts work without the nolock option). The packages have been updated. credit to Michael for discovering the issue

Preparation

Get Easy Root Access, install Nano and fix your PATH (see under Installing a package manager)
Note that all the commands on this page are run as root so begin your SSH sessions with "sudo -E -s" and make sure you have the bash-3.2# prompt.

  • [For the Stora] Download the NFS package from here, rename the file to "nfs-utils_STORA.tar.gz".
  • Check that your Stora is running the correct kernel for these NFS modules:
-bash-3.2# uname -a
Linux axentraserver.xxxx.mystora.com 2.6.22.18-Netgear #16 Sun Jun 13 19:54:46 EDT 2010 armv5tejl armv5tejl armv5tejl GNU/Linux

At the time of writing this NFS package by Pipponne is built for kernel v2.6.22.18 (tested under Netgear firmware v1.2 and v2.3)

  • [For the GoFlex Home] Download the NFS package from here, rename the file to "nfs-utils_GFH.tar.gz".
  • Check that your GoFlex Home is running the correct kernel for these NFS modules:
-bash-3.2# uname -a
Linux axentraserver.XXXX.seagateshare.com 2.6.22.18 #16 Thu Jun 17 01:37:53 EDT 2010 armv5tejl armv5tejl armv5tejl GNU/Linux

At the time of writing this, NFS kernel modules are built for kernel v2.6.22.18 (tested under Seagate firmware v2.5.1). The rest of the package was built by Pipponne for the Stora.

  • [For Stora and GoFlex Home] Drop the NFS package onto a share on your Stora or GoFlex Home and copy it to the root of the filesystem (this is to make sure everything extracts into the correct paths).

e.g. if you drag and drop the package to the FamilyShare on Stora:

cd /home/0common
cp nfs-utils_STORA.tar.gz /

e.g. if you drag and drop the package to the GoFlex Home Public on GoFlex Home:

cd /home/0common
cp nfs-utils_GFH.tar.gz /


Setting up the NFS kernel modules

With the nfs-utils_STORA.tar.gz package in / the root of your Stora as explained above and still running as root user:

cd /
tar xvfz nfs-utils_STORA.tar.gz

For the GoFlex Home the file is named nfs-utils_GFH.tar.gz so you have to run

cd /
tar xvfz nfs-utils_GFH.tar.gz

You will see a whole list of files extracted.

Refresh and load the new modules:

depmod -a
modprobe nfsd

now check the loaded modules with "lsmod" - you should see nfsd, exportfs, and nfs_acl amoungst the others you already had

create a simple nfs export config file (this is just a test, you will go back and create your real NFS config later!)

nano /etc/exports

if you copy paste the following line you will export (share) your FamilyLibrary folder (GoFlex Home Public in the GoFlex Home) so it's available for mounting to all machines on your LAN (assuming your LAN uses the range 192.168.1.x, change as needed):

/home/0common 192.168.1.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check)

save and exit Nano. Note: NFS cannot be used with Paragon NTFS driver. This means that you cannot export GoFlex Home NTFS formatted drive. Then start the server like this:

-bash-3.2# /etc/init.d/portmap start
Starting portmap:                                          [  OK  ]
-bash-3.2# /etc/init.d/nfs start
Starting NFS services:                                     [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]

Check that your exports are working by typing "exportfs -v" - the line(s) in your /etc/exports should be shown
At this point you can try mounting the share on your NFS client - any Linux workstation should do, remember to install the nfs-common package if your distro doesn't include it (Ubuntu for example has it in its repos but isn't installed by default).

Making the NFS server start automatically when your Stora or GoFlex Home boots

As root, type the following lines

chkconfig --add portmap
chkconfig --level 235 portmap on
chkconfig --add nfs
chkconfig --level 235 nfs on

Then you need to specify something for RPCNFSDARGS inside /etc/sysconfig/nfs

 nano /etc/sysconfig/nfs

uncomment (remove the # in front of) the line RPCNFSDARGS="-N 4" (v4 NFS isn't supported anyway we don't think)

Now the service startup should load the module automatically if it isn't already loaded (e.g. at boot). Reboot and run

exportfs -v

again to test.

Q&A

  • Which NFS version is this?

NFSv3 is the highest supported, you can force v2 if you prefer through the config file (see above).

  • What's NFS performance like on the Stora? What settings can i change to speed NFS up?

From my (Smiff's) testing NFS is faster (or more efficient) than SMB by a significant margin, from 10% to 30% depending on client. CPU usage on the Stora is similar however (around 50% to 75% for large file transfers). I have tried numerous settings whilst setting up home shares on the Stora and the setting I found to have the most significant effect by far was async, which roughly halved the time needed to open a large application e.g. a web browser. Application close times are reduced even more, probably because these apps are writing large numbers of small files when they exit and this is slow over NFS (compared to a local disk).
Configure async in your /etc/exports e.g.

/home/user       192.168.1.0/24(rw,async,no_subtree_check,no_root_squash)

Note there is a slight risk of data loss e.g. if power is lost to the Stora during writes, however the performance benefit is great so this is probably a good tradeoff.

Note that only a small subset of possible NFS server settings seem to be supported on the Stora (for example nosuid isn't supported?). To check which settings the server is actually understanding and using (as opposed to what you've told it to use in /etc/exports), run

cat /proc/fs/nfs/exports

Other relevant settings:
wdelay you will find is enabled by default; this option has no affect with async (?)
rsize and wsize values, good values to try are 8192, 16384, 32768 (8k,16k,32k) you will need to experiment to see what works best on your network. For my (gigabit) network and my Ubuntu client, 16 and 32 give similar write speeds, both are about 40% faster than 8192.
noatime don't forget your client mount options (probably set in auto.master if using autofs). anything you can do to reduce file system writes is good.

Good little article on NFS performance optimisations http://www.techrepublic.com/blog/opensource/tuning-nfs-for-better-performance/64 If anyone has other tips to improve performance please let us know on the forum!


  • Why are there 8 NFSD processes?

If you use top during a file transfer you may see 8 threads - this is normal, 8 is the default for an NFS server. you can change this by editing /etc/sysconfig/nfs but note that you must have at least one thread per client session. You may need to raise this number if you need more simultaneous sessions.

  • I've edited my NFS configuration or exports, do I have to reboot my Stora?

You don't need to restart the whole machine, to just restart the NFS service type

service nfs restart

or to quickly update the exports:

exportfs -r


  • I need help configuring/setting up NFS!

Further reading: troubleshooting NFS http://www.troubleshooters.com/linux/nfs.htm


-- Page written by Smiff, nearly all information provided by Pippone
Have you followed this page? Did Kernel mode NFS work well/badly/not at all for you? Please tell us here

--J.M. 17:17, 10 March 2011 (UTC) Added GoFlex Home kernel modules and utils (from Pippone). Information here