Nfs

阻止損壞的 NFS 掛載鎖定目錄?

  • February 17, 2012

我有一個有趣的設置:在一個文件夾中安裝了多個遠端 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 掛載選項的更多資訊

引用自:https://unix.stackexchange.com/questions/31979