Nfs
重新啟動後出現“過時的 NFS 文件句柄”
在伺服器節點上,可以訪問導出的文件夾。但是,在重新啟動(伺服器和客戶端)後,不再可以從客戶端訪問該文件夾。
在伺服器上
# 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 掛載上使用
hard
和intr
掛載選項。該hard
選項會導致 IO 無限期重試。該intr
選項允許程序在等待 NFS IO 完成時被終止。