What are .nfsXXXX files and how do I delete them?
Files with a naming convention like
.nfsXXXX are created by NFSv3 clients when a file that is currently opened on a client is deleted by that client. The client renames the file to
.nfsXXXX which discourages other clients/processes from utilizing the file. The client that does the rename should delete the file once it's been closed by the client process. This delete might not occur if the client is rebooted or the process that would issue the delete is terminated.
These files are not generated by an ONTAP process and are only created in response to client requests.
NFSv4 clients do not see this issue due to the statefulness of the protocol.
Finding the NFS client and process using a
.nfsxxxx file may be very time consuming. It would require checking every process on every NFS client that could be accessing the NFS share containing the file. A utility such as
lsof may be used to determine the process using the
.nfsxxxx file. To prevent
.nfsXXXX files from being created, do not remove a file when it is open. If the
.nfsxxxx file is determined to no longer be in use then it may be removed. If a remove results in a new
.nfsxxxx file then a process on that NFS client has the file open.
Demonstration for creating and removing
- From the NFS client, create a file in the mounted NFS share and open it with the tail command. Suspend the process with
ctrl-zor open a new terminal to complete the rest of the demonstration.
shell# echo test > foo
shell# tail -f foo
+ Stopped tail -f foo
- Remove the file
footo make the NFS client create the
shell# rm foo
shell# ls -A
- Observe that subsequent
rmcommands only make the NFS client rename the file again.
shell# rm .nfs5ACF
shell# ls -A
- Locate the process that has the file open using lsof or fuser.
shell# lsof ./.nfs6ACF
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
tail 25725 root 3r REG 8,1 27603 6647 .nfs6ACF
shell# fuser .nfs6ACF
- Finally, kill the process holding the file open and observe that the
.nfsxxxfile is now removed.
shell# kill 25725
shell# ls -al
drwxr-sr-x 2 root src 400 Mar 29 15:39 .
drwxrwsr-x 36 root src 3336 Mar 21 09:37 .