Nfs

重新啟動後出現“過時的 NFS 文件句柄”

  • December 28, 2020

在伺服器節點上,可以訪問導出的文件夾。但是,在重新啟動(伺服器和客戶端)後,不再可以從客戶端訪問該文件夾。

在伺服器上

# ls /data
Folder1
Forlder2

並且 /etc/exports 文件包含

/data 192.168.1.0/24(rw,no_subtree_check,async,no_root_squash)

在客戶端

# ls /data
ls: cannot access /data: Stale NFS file handle

我不得不說客戶端的共享文件夾沒有問題,但是在重新啟動(伺服器和客戶端)後,我看到了這條消息。

有什麼辦法可以解決嗎?

重新啟動的順序很重要。在客戶端之後重新啟動伺服器可能會導致這種情況。陳舊的 NFS 句柄表示客戶端打開了文件,但伺服器不再辨識文件句柄。在某些情況下,NFS 會在超時後清理其資料結構。在其他情況下,您需要自己清理 NFS 資料結構,然後重新啟動 NFS。這些結構所在的位置在某種程度上取決於 O/S。

嘗試先在伺服器上重新啟動 NFS,然後在客戶端上重新啟動。這可能會清除文件句柄。

不建議使用從其他伺服器打開的文件重新啟動 NFS 伺服器。如果在伺服器上刪除了打開的文件,這尤其成問題。伺服器可能會保持文件打開,直到重新啟動,但重新啟動將刪除伺服器端的記憶體中文件句柄。然後客戶端將無法再打開該文件。

從伺服器確定使用了哪些掛載是困難且不可靠的。該showmount -a選項可能會顯示一些活動的坐騎,但可能不會報告所有這些坐騎。鎖定的文件更容易辨識,但需要啟用鎖定並依賴客戶端軟體鎖定文件。

您可以lsof在客戶端上使用來辨識在掛載上打開文件的程序。

我在我的 NFS 掛載上使用hardintr掛載選項。該hard選項會導致 IO 無限期重試。該intr選項允許程序在等待 NFS IO 完成時被終止。

引用自:https://serverfault.com/questions/617610