Nfs
阻止損壞的 NFS 掛載鎖定目錄?
我有一個有趣的設置:在一個文件夾中安裝了多個遠端 NFS 伺服器的伺服器,然後通過 Samba 重新導出該文件夾。將其視為共享代理,將所有共享文件夾保存在一個位置。
不過,我的問題是,每當其中一個掛載出現故障(伺服器重新啟動、服務重新啟動、伺服器正在導出的外部硬碟驅動器被移除等)時,任何試圖永久讀取掛載塊的嘗試。這也意味著
ls
在該目錄中執行會凍結,通過 Samba 連接的使用者也會凍結。這也導致我的一個 cron 作業多次阻塞,幾乎使伺服器崩潰,因為它有數百個被阻塞的程序。這變得非常煩人,因為我通常必須啟動一個不等待ls
完成的終端(無法取消它),執行for i in *; do sudo umount -l -f $i; done;
,希望它有效,解決問題,然後重新安裝所有內容。有沒有辦法掛載 NFS 共享,並規定如果連接因任何原因(最好有重試期)失敗,那麼掛載解除安裝本身或至少不會阻塞?
通常在掛載 NFS 時,最好設置類似於以下的標誌:
bg,intr,soft
bg If the first NFS mount attempt times out, retry the mount in the background. After a mount operation is backgrounded, all subsequent mounts on the same NFS server will be backgrounded immediately, without first attempting the mount. A missing mount point is treated as a timeout, to allow for nested NFS mounts. soft If an NFS file operation has a major timeout then report an I/O error to the calling program. The default is to continue retrying NFS file operations indefinitely. intr If an NFS file operation has a major timeout and it is hard mounted, then allow signals to interupt the file operation and cause it to return EINTR to the calling program. The default is to not allow file operations to be interrupted.
您還可以設置:
timeo=5,retrans=5,actimeo=10,retry=5
如果 NFS 伺服器斷開連接而不是等待重試,這應該允許 NFS 掛載超時並使目錄無法訪問。
查看此連結以獲取有關 NFS 掛載選項的更多資訊