SUMMARY: How to force NFS umouting?

From: Gustavo Chaves (gustavo@cpqd.com.br)
Date: Tue May 26 1998 - 16:39:37 CDT


Hi,

I've received 13 responses so far to the following question:

> I have two machines S and C both running SunOS-5.5.1. S serves a
> directory via NFS to C. C was mounting the directory for three or
> four days and yesterday we brought S to its knees, changed its IP
> address and rebooted it. Now, C can't lookup the directory and I'm
> unable to umount it.
>
> This situation has arisen some times before and I always solved it by
> rebooting the client machine. I have the feeling that there's no
> other way but this time I decided to call your wittiness just in case
> someone knows of a way to solve the problem without rebooting.

> Thanks to everyone. I'll summarize.

Unfortunately, I wasn't able to solve the problem. The suggestions I
received were the following:

- Mark Hargrave <hargrme@wisdom.maf.nasa.gov>, told me to:

        # /etc/rc2.d/S74autofs stop
        # /etc/rc2.d/S74autofs start

  This doesn't help. When the automounter is stopping it `tries' to
  umount every mount it has already performed but it doesn't force
  it. In particular, busy mountpoints aren't umounted just like the
  `stale' mountpoint I got.

- Mark Hokkanen <mhokkane@securecomputing.com>, told me to pay
  check if S can resolve the IP address of C. It can, but that's not
  the problem. I changed the IP address of S while C was mounting one
  of S's directories. Now I can ping each one from the other but I
  can't umount the directory.

- Colin_Melville@mastercard.com told me to kill rpc.statd and lockd,
  then to `rm -r /etc/sm /etc/sm.bak', and then to restart both
  daemons. These directories don't exist on either S or C. I
  stopped/restarted the daemons doing

        # sh /etc/init.d/nfs.client stop
        # sh /etc/init.d/nfs.client start

  but it didn't work.

- Rodney C. Marable <marable@xcom.net> told me essentially the same
  thing.

- Robert T. Clift <rclift@nswc.navy.mil> told me to try to mount the
  directory again under a different mountpoint. I did and it worked.
  I just can't reuse the original mountpoint.

- Glenn W. Cantello <glenn.w.cantello@hydro.on.ca> told me to try the
  umountall command with the flags -F, -k and -r. After reading the
  manpage to understand what I would do, I did

        # umountall -k -h S

  but it hanged. I trussed the process and it was sleeping like this:

        stat("/home/micro", 0xDFFFFBA8) (sleeping...)

  /home/micro is the mountpoint in C that was mounting the remote
  directory S:/l/home0/micro.

- Jim Harmon <jharmon@telecnnct.com> misunderstood my problem which is
  my fault for not having been clear enough. After rebooting S and
  changing its IP address C still thinks it's mounting a directory
  from S. The problem is that I can't umount it.

- Jason Axley <jason.axley@attws.com> told me to

        # sh /etc/init.d/nscd stop
        # sh /etc/init.d/nscd start

  to restart the name service cache daemon of C because it could have
  cached the old IP of S. I did it but I knew this wasn't the problem
  because I could ping S from C already.

- Mark Belanger <mark_belanger@ltx.com> told me to check if no process
  was using the mountpoint by using the standard fuser(1) and the
  freeware lsof. I have lsof installed (it's really useful) and have
  already check this. In fact, the first time I checked, the was a
  csh process using /home/micro. I tried to kill it with SIGTERM and
  SIGKILL. At first it didn't died what wasn't exactly a surprise.
  What surprised me was that a few minutes later the csh gone away and
  I don't understand why. Anyway, I still can't umount the
  directory. Look what I get

        # umount /home/micro
        nfs umount: /home/micro: is busy

  Mark also told me to try to remount the directory over its old
  mountpoint by passing the -O switch to mount. I tried but mount
  hangs trying to stat("/home/micro").

- Shawn Kondel <shawnk@sunfs.math.usu.edu> told me essentially the
  same thing.

- Ade E Oyeyemi <oyeyemi_ade@jpmorgan.com> told me that

      ``Stale NFS mount points are always a big problem , the only way
        to get rid of them without rebooting the client is to re-
        create the Stale mount point , umount the File system on the
        client and then make the changes on the server.''

  I tried this a some times and it always worked. However, this often
  means that we must redo lots of things that aren't always easy.
  (Imagine if the server machine was moved to a different building
  with no near access to its old network.)

- Chris Marble <cmarble@orion.ac.hmc.edu> told me essentially the same
  thing.

- Amjad Zamil <amjadz@sts.com.jo> told me to `nfs.client stop', then
  to edit /etc/mnttab and remove from it the line associated with the
  mounted FS and to `nfs.client start'. Well, I've never thought of
  this. I tried (I'm going to reboot C in a few minutes anyway :-)
  and look what happened afterwards:

        # umount /home/micro
        umount: warning: /home/micro not in mnttab
        umount: /home/micro busy

  It seems that the kernel maintains the mounting state in memory
  structures, not only in the /etc/mnttab file.

Well, thank very much to all of you. We can't win every time. Now
excuse me, cause I have to reboot a machine. :-)

Gustavo.



This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:12:40 CDT