Mounting an NFS share after boot, and checking up on it periodically…

** NOTE: This version is obsoleted! The latest version can be found here.

I needed to automatically mount an NFS share after reboot. But the availability of that share could not be guaranteed – the system on the LAN offering the share might be down for maintenance when the system mounting the share is being rebooted. In such case there would be a lengthy wait during the boot sequence until the mount attempt would time out.

So I wrote a short script to handle the situation. When initialized at boot time through init.d or rc.d, it’ll first attempt to mount the share, but then times out in two seconds (this is a LAN NFS share so if the system offering the share is up there should not be a longer delay than that) and so the boot sequence is not slowed down terribly. (see update below) Once boot is complete, the script is run via cron every five minutes. Depending on the criticality of the share you may want to make that time shorter or longer. In this case it is a backup share which is not critical for the system’s functioning.

This technique would handle circular mounts, too, but obviously you would run into trouble if the mounts are required for successful system boot.

For this to work successfully add a marker file, such as “.myremoteservertransfers” in my example script below, in the share folder on the system exporting the share. I usually set the undeletable attribute on the file to make sure it doesn’t get accidentally deleted.

Update: Even with this code the boot sequence appears to hang until portmap times out (which takes quite a while) if the NFS share is not available at boot time. I removed the rc.d mount attempt and just shortened the cron poll period to 1 minute. That way the share will be up very quickly once it becomes available, yet the overhead caused by the periodic ping is minimal (both servers are on local LAN).



# remote system name

# remote share name

# local mount point

# file to indicate local mount status

# --- end variables ---

# ping result to the remote system (2 sec timeout); not empty is OK
remoteping=`ping -c1 -o -q -t2 ${remotesystem} | grep " 0.0%"`

if [ "${remoteping}" != "" ] ; then

   # server is available so query availability of the remote share; not empty is OK
   offsiteshare=`showmount -e ${remotesystem} | grep "${remoteshare}"`

   # make sure the local mountpoint is not active; not empty is OK
   localmount=`/sbin/mount | /usr/bin/grep "${mountpoint}"`

   if [ "${offsiteshare}" != "" ] ; then
      if [ ! -e ${testfile} ] ; then
         if [ "${localmount}" = "" ] ; then
            mount -r -t nfs ${remotesystem}:${remoteshare} ${mountpoint}

exit 0

4 thoughts on “Mounting an NFS share after boot, and checking up on it periodically…”

  1. I made a small change to the script: I added the check for local mount to prevent multiple overlapping mounts under certain conditions.

    I’ve also taken up a practice of creating an unmutable file “.unmounted” in each local mount point folder. That way it’s easy to check and validate whether a NFS share (that in some cases is an empty directory) has been mounted: if the “.unmounted” file is displayed, then the underlying mount point is visible and no NFS mount is present.

  2. Hey, it’s a been a few years, think you could hit up your source and ask microsoft if they changed their minds any on the Trackball Explorer? Honestly it’s still the best trackball mouse I’ve ever used. I’ve resorted to buying trackball explorers off ebay at $100+ used for parts. It’s a little funny and sad, and I’m not the only one doing this. Theres even people making money for repair services off ebay for the TBE. It’s crazy really.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.