In Unix (or even Linux:-), it's perfectly legal to delete a file while it's 
open.
If that's the last link to the file, it will go away once the last program that
has it open exits.

Problem is, NFS is stateless - the NFS server isn't keeping track of what
the clients are doing.  So NFS can't truly handle that particular Unix
behavior.  The clients work around the problem by renaming the file like that
and deferring the delete until nothing on the client has it open.

There are only two problems with that:
1) it's not totally invisible, so people ask questions about it
2) if the client crashes while "deleted" files are open, those .nfs* files
never get deleted.

To deal with (2), many NFS servers have a cron job that hunts down
files named .nfs* that haven't been accessed in more than a certain
number of days, and deletes them.  That isn't perfect, because if
a client program was still running but went too long (say more than
a week) between accesses to that file, the server would assume the
file had been abandoned and would delete it.  In practice, that
apparently is not a problem very often.

So you can either:
* ignore the problem, it'll probably go away eventually
* use lsof or something like it on the client to figure out what program
has the files open, and kill it (only do this if those files are huge and
you're running out of space)

Technically you could also log into the server and delete the files there,
but then the client would start getting "stale NFS file handle" errors or
something like that, because it was expecting that file to still be there.

Usually the best bet is to just ignore files like that...
-- 
This message posted from opensolaris.org
_______________________________________________
opensolaris-discuss mailing list
opensolaris-discuss@opensolaris.org

Reply via email to