The order of reboots is important. Rebooting the server after the clients can result in this situation. The stale NFS handle indicates that the client has a file open, but the server no longer recognizes the file handle. In some cases, NFS will cleanup its data structures after a timeout. In other cases, you will need to clean the NFS data structures yourself and restart NFS afterwards. Where these structures are located are somewhat O/S dependent.
Try restarting NFS first on the server and then on the clients. This may clear the file handles.
Rebooting NFS servers with files opened from other servers is not recommended. This is especially problematic if the open file has been deleted on the server. The server may keep the file open until it is rebooted, but the reboot will remove the in-memory file handle on the server side. Then the client will no longer be able to open the file.
Determining which mounts have been used from the server is difficult and unreliable. The
showmount -a option may show some active mounts, but may not report all of them. Locked files are easier to identify, but require the locking to be enabled and relies on the client software to lock the files.
You can use
lsof on the clients to identify the processes which have files open on the mounts.
I use the
intr mount options on my NFS mounts. The
hard option causes IO to be retried indefinitely. The
intr option allows processes to be killed if they are waiting on NFS IO to complete.