Ryan Steele wrote:
Hey list,

I was in the middle of testing an FAI install today, and had to re-run 'fai-setup -v'. However, I noticed that it was taking a long, long time to delete the old nfsroot, and noticed something extremely alarming. The nfsroot is located at '/srv/fai/nfsroot', as defined in make-fai-nfsroot.conf:

NFSROOT=/srv/fai/nfsroot

And, the mount point for the mirror is defined as /media/mirror in fai.conf:

MNTPOINT=/media/mirror

However, I noticed that this appears to be relative to /srv/fai/nfsroot/live/filesystem.dir:

[EMAIL PROTECTED]:~# mount | grep nfsroot
remotenfshost:/path/to/repo on /srv/fai/nfsroot/live/filesystem.dir/media/mirror type nfs (rw,remount,noatime,rsize=8192,addr=10.x.x.x)

When running 'fai-setup -v', it detected that there was an existing nfsroot, and it went to delete that, but disturbingly, it did so with the following command:

root 27858 0.7 0.1 2952 660 pts/0 S+ 18:48 0:04 rm -rf /srv/fai/nfsroot/.??* /srv/fai/nfsroot/live

Correct me if I'm wrong, but doesn't this mean that the mirror located at /srv/fai/nfsroot/live/filesystem.dir/media/mirror is going to be blown away if it was mounted rw, as seen above? I happened to catch this, but I'm not sure all what was lost yet. This was using FAI 3.2.8.

In fact, it had started deleting the local mirror, which had been mounted via NFS. It's not catastrophic, since I can rebuild it with debmirror, but why would make-nfs-root (called via fai-setup) not unmount that NFS mirror before executing an 'rm -rf' in an attempt to get rid of the old nfsroot? I've decided to do away with NFS-mounting the mirror and do it over HTTP instead to eliminate the possibility of another bad experience, but this seems like a glaring flaw unless I'm very mistaken. The offending code from make-fai-nfsroot is:

if [ -d $NFSROOT/proc -a ! "$recover" ]
then
   echo $NFSROOT already exists. Removing $NFSROOT
   umount $NFSROOT/dev/pts 1>/dev/null 2>&1 || true
   [ -L $NFSROOT/proc/self ] && umount $NFSROOT/proc || true
[ -L $NFSROOT/proc/self ] && die "/proc is still mounted inside the nfsroot."
   rm -rf $oldnfsroot/.??* $oldnfsroot/*
   # also remove files $NFSROOT/.? but not . and ..
   find $oldnfsroot -xdev -maxdepth 1 ! -type d | xargs -r rm -f
fi



Antwort per Email an