NFS Error – Stale File Handle and Unmounting Issues

mountnfsunmounting

Every time I try to mount a NFS share I get this:

>> mount -t nfs gitlab-replica-storage.blah.com:/export/registry-gitlab-prod-data-vol /mnt/test
mount.nfs: Stale file handle

The problem is that I cannot umount, as it says:

>> umount -f -l /mnt/test
umount: /mnt/test: not mounted

I tried checking if any process was using the mountpoint, but that is not the case.

Any other alternative to troubleshoot this?

As clarification:

  • I can mount it in another machine.
  • I cannot mount it in another mountpoint on the affected machine.

Best Answer

The error, ESTALE, was originally introduced to handle the situation where a file handle, which NFS uses to uniquely identify a file on the server, no longer refers to a valid file on the server. This can happen when the file is removed on the server, either by an application on the server, some other client accessing the server, or sometimes even by another mounted file system from the same client. The NFS server also returns this error when the file resides upon a file system which is no longer exported. Additionally, some NFS servers even change the file handle when a file is renamed, although this practice is discouraged.

This error occurs even if a file or directory, with the same name, is recreated on the server without the client being aware of it. The file handle refers to a specific instance of a file and deleting the file and then recreating it creates a new instance of the file.

The error, ESTALE, is usually seen when cached directory information is used to convert a pathname to a dentry/inode pair. The information is discovered to be out of date or stale when a subsequent operation is sent to the NFS server. This can easily happen in system calls such as stat(2) when the pathname is converted a dentry/inode pair using cached information, but then a subsequent GETATTR call to the server discovers that the file handle is no longer valid.

This error can also occur when a change is made on the server in between looking up different components of the pathname to be looked up or between a successful lookup and a subsequent operation.

Original link about ESTALE: ESTALE LWN .

I suggest to you check files and directories on NFS server or say to admin of NFS server to do this.

Maybe some old pagecache, inode, dentry cache entries are exists on NFS server. Please clean it:

# To free pagecache
echo 1 > /proc/sys/vm/drop_caches

# To free dentries and inodes
echo 2 > /proc/sys/vm/drop_caches

# To free pagecache, dentries and inodes
echo 3 > /proc/sys/vm/drop_caches
Related Question