[Bioclusters] Apple NFS + Automounter file loss behavior

Christopher Dwan cdwan at bioteam.net
Mon Jan 8 10:56:44 EST 2007


Over the past several years, I've had several customers mysteriously  
lose the entire contents of an NFS shared volume on OS X.  I finally  
isolated the behavior, and I want to share the recipe in the hopes  
that it might prevent future data loss.

I've reported this to Apple through their "Radar" system (ID  
4890612).  It's also been reported under another number:  4666168.   
The general response is that this will be resolved in the next  
version of OS X (Leopard), and may or may not be addressed as a patch  
for existing systems.

In order to completely destroy the contents of an NFS export by this  
method, one must do four questionable, but not totally unreasonable,  
things all at the same time:

1) The directory must be NFS exported with root=root, rather than  
with root "squashed"
2) The client machine must use the automounter to access the directory.
3) The client machine must use the NFS SystemStarter script to stop  
and start NFS (note, not AutoFS ... but NFS on the client).
4) The client machine must have had the NFS lockfile manually removed.

If you do all of those things, then the following code from the NFS  
SystemStarter script will run (/System/Library/StartupItems/NFS/NFS):

================================
AUTOMOUNTDIR=/private/var/automount

StartService ()
{
     CheckForNetwork
     if [ "${NETWORKUP}" = "-NO-" ]; then exit; fi
     lockfile -r 0 /var/run/NFS.StartupItem || exit 0

     ##
     # Set up NFS client.
     ##
     echo "Starting network file system"

         if [ -d ${AUTOMOUNTDIR} ]; then
                 chflags -R nouchg ${AUTOMOUNTDIR}
                 rm -rf ${AUTOMOUNTDIR}
         fi
==================================

If the lock file is present, you get this message:

node001:~ root# SystemStarter start NFS
lockfile: Sorry, giving up on "/var/run/NFS.StartupItem"

If the lockfile has been removed but the NFS export directory is  
still mounted under AUTMOUNTDIR then when the SystemStarter script  
runs again the "rm -rf" as root will systematically destroy all the  
data in the mounted directory.

Hopefully this will be useful.  I've been chasing it for a long time,  
and had to tell someone.

-Chris Dwan



More information about the Bioclusters mailing list