Nfs

使用 nfs 掛載選項 bg、hard、nointr 時儲存離線時系統鎖定

  • July 29, 2014

我在我的系統上定義了以下掛載選項。如果發生任何儲存中斷,這些(bg,hard,nointr)原因是否會鎖定控制台訪問?

       storage:/vol/myvol on /test type nfs (rw,bg,hard,nointr,rsize=65536,wsize=65536,tcp,nfsvers=3,timeo=600)

nfs 選項的哪些組合被認為是正確的做法?

所有 NFS 掛載選項都有優點和缺點。

  • bg這意味著,當您嘗試訪問mount文件系統時(通常在系統啟動期間),如果伺服器沒有及時響應,則掛載會分叉一個在後台執行的程序並定期重試掛載。

如果您不使用該bg選項,mount將重試並且不會退出(如果您使用了,也不會繼續掛載其他文件系統mount -a),直到掛載成功或失敗。

如果您需要從經常停機的伺服器掛載文件系統,並且不希望系統啟動被它延遲,請使用該bg選項(或自動掛載程序)。

bg選項的缺點是系統可能在沒有掛載遠端文件系統的情況下啟動,這可能會導致希望使用該文件系統的應用程序失敗(或者更糟的是,將本應寫入本地磁碟的內容填滿遠端文件系統)。

因此,使用bg是您必須做出的選擇。

  • hardsoft在文件系統安裝後應用。

如果遠端伺服器崩潰或無法訪問,硬掛載將無限期地繼續重試 i/o 請求。

軟安裝將向應用程序返回錯誤,通常應用程序會將其視為不可恢復的錯誤,就好像本地磁碟驅動器已斷電一樣。如果應用程序執行檔本身在軟掛載的遠端文件系統上並且變得不可訪問,那麼當本地核心需要從遠端文件系統獲取頁面時,應用程序將被終止。

所以選擇取決於您:當遠端伺服器(或您的網路)出現故障時,您是希望程序失敗,還是希望它們無限期地重試 i/o,直到遠端再次可以訪問?

  • 使用硬掛載,如果遠端伺服器宕機,任何使用遠端文件系統的程序都不會被信號中斷,就像使用本地磁碟的程序在(通常很小的)時間內不可中斷一樣需要做磁碟 i/o。這會讓使用者感到沮喪,因為他們的程序會掛起,而且他們無法使用control-C. 如果您希望能夠中斷等待 NFS i/o 的程序,請包含intrmount 選項。使用該intr選項通常是安全的;請記住,它可能會導致程序EINTR在中斷時看到 i/o 錯誤(錯誤)。

我有一個建議:當使用硬掛載的 NFS 文件系統和可能出現故障的遠端伺服器時,不要將文件系統掛載在/(例如/test)中的目錄上,或者實際上與許多人使用的目錄處於同一級別的任何目錄上,例如/home/username。這是因為pwd或它的 C 庫等效項遍歷目錄樹,stat對目錄執行 s。如果應用程序stat在沒有響應的硬掛載 NFS 掛載點上執行操作,它將掛起。**這是使用者抱怨 NFS 的主要原因:他們無法登錄,因為他們的 shell 執行了一個pwd並且一些他們甚至不需要使用的 NFS 文件系統已關閉。**這是對主目錄使用自動掛載程序的另一個很好的理由。

這是我們對 NFS 掛載的最佳實踐:

  • 使用自動掛載器
  • 如果不能,則使用 options將每個遠端文件系統掛載到 /n/ remoteservername / filesystemnamehard,intr上。
  • /n 和 /n/ remoteservername是從不是 NFS 掛載點的本地目錄。
  • 配置updatedb或其他任何查看整個目錄樹而不查看/n.

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