automount nfs:不可靠伺服器的 autofs 超時設置 - 如何避免掛斷?
我正在為我們的平面共享執行一個小型伺服器。它主要是帶有一些附加服務的文件伺服器。客戶端是 Linux 機器(主要是 Ubuntu,但也有一些其他發行版)和介於兩者之間的一些 Mac(-Book)(但它們對於這個問題並不重要)。伺服器正在執行Ubuntu 11.10 (Oneiric Ocelot)“伺服器版”,我進行設置和測試的系統執行 11.10“桌面版”。我們使用 Samba(我們更熟悉)執行我們的共享很長一段時間,然後遷移到NFS(因為我們在 LAN 中沒有任何 Windows 使用者並想嘗試一下),到目前為止一切正常.
現在我想使用autofs設置自動掛載以使事情順利進行(到目前為止,每個人都在需要時手動掛載共享)。自動安裝似乎也有效。問題是我們的“伺服器”不是 24/7 執行以節省能源(如果有人需要伺服器上的東西,他/她打開電源然後關閉它,所以它每天只執行幾個小時)。但是由於 autofs 設置,當伺服器沒有執行時,客戶端經常掛斷退出。
即使伺服器沒有執行,我也可以很好地啟動所有客戶端。
但是當我想顯示一個目錄(在終端或 nautilus 中)時,它包含指向共享的符號連結,
/nfs
而伺服器沒有執行,它會掛起至少兩分鐘(因為 autofs 無法連接到伺服器但保持嘗試,我假設)。
- 有沒有辦法避免這種情況?這樣安裝會延遲到更改目錄或訪問該目錄的內容?不是在“查看”下的共享連結時
/nfs
?我認為不是,但也許有可能不嘗試訪問它這麼長時間?只需給我一個空目錄或“找不到/連接到該目錄”或類似的東西。當伺服器執行時,一切正常。
但是,當伺服器關閉時,在解除安裝共享之前
df
,工具(如或ll
)掛起(假設因為他們認為共享仍在執行但伺服器不再響應)。
- 當連接失去時,有沒有辦法自動解除安裝共享?
此外,當伺服器關閉並且它們仍然掛載共享時,客戶端不會關閉或重新啟動。他們(似乎無限地)“殺死剩餘的程序”並且似乎沒有任何事情發生。
我認為這一切都歸結為安裝和解除安裝的整潔超時值。並且可能在與伺服器的連接失去時刪除所有共享。
所以我的問題是:如何處理?作為獎勵:是否有一種
/nfs
無需掛載真實共享的好方法來連結內部(一個 autofs 選項,或者可能使用偽 FS,/nfs
當掛載發生時會被替換或類似的東西)?我的設置
NFS 設置非常基本,但到目前為止對我們的服務很好(使用NFSv4):
/etc/default/nfs-common
NEED_STATD= STATDOPTS= NEED_IDMAPD=YES NEED_GSSD=
/etc/idmapd.conf
[General] Verbosity = 0 Pipefs-Directory = /var/lib/nfs/rpc_pipefs Domain = localdomain [Mapping] Nobody-User = nobody Nobody-Group = nogroup
/etc/出口
/srv/ 192.168.0.0/24(rw,no_root_squash,no_subtree_check,crossmnt,fsid=0)
在導出根目錄下,
/srv
我們有兩個目錄bind
:/etc/fstab(伺服器)
... /shared/shared/ /srv/shared/ none bind 0 0 /home/Upload/ /srv/upload/ none bind 0 0
第一個主要是只讀的(但我通過文件屬性和所有權而不是 NFS 設置強制執行),第二個是所有的rw。注意:它們在/etc/exports中沒有額外的條目,但是單獨安裝它們可以工作。
在客戶端,他們
/etc/fstab
根據需要進行設置和手動安裝(morton
是伺服器的名稱,它可以很好地解析)。/etc/fstab(客戶端)
morton:/shared /nfs/shared nfs4 noauto,users,noatime,soft,intr,rsize=8192,wsize=8192 0 0 morton:/upload /nfs/upload nfs4 noauto,users,noatime,soft,intr,rsize=8192,wsize=8192 0 0
對於autofs 設置,我從客戶端上刪除了條目,
/etc/fstab
其餘設置如下:/etc/auto.master
/nfs /etc/auto.nfs
首先,我綁定了提供的執行檔
/etc/auto.net
(您可以在此處查看),但它不會自動為我安裝任何東西。然後我/etc/auto.nfs
根據我在網上找到的一些 HowTos 寫了一個:/etc/auto.nfs
shared -fstype=nfs4 morton:/shared upload -fstype=nfs4 morton:/upload
它有點工作……或者如果伺服器將執行 24/7 將工作。因此,當客戶端在伺服器未執行的情況下啟動,或者當伺服器出現故障而共享仍然連接時,我們會遇到掛斷。
使用掛載選項“bg,intr,hard”在客戶端上掛載 NFS 共享。
在您的情況下,最重要的是背景的“bg” - 它告訴系統在伺服器不可用時不要阻塞。
“intr” 表示可中斷 - 因此您可以使用 kill 命令殺死客戶端上的掛載。
“硬”是“軟”的反義詞。不同之處在於“硬”將不斷嘗試,而“軟”將在伺服器不可用時以指數方式退出重試。
我使用手冊頁中的一些選項進行了更多嘗試。所有
bg,hard
,bg,soft
,fg,hard
並fg,soft
給我超過兩分鐘的返回時間。但是,設置
retrans=1,retry=0
(與上述任何一項結合)給了我大約三秒鐘的時間。相當體面。雖然我不確定每種組合的含義。將進一步探勘。我還遇到了 autofs 選項
MOUNT_WAIT
和UMOUNT_WAIT
. 我無法與他們取得一些不同的結果,但我會繼續努力。似乎是使用“更安全”(也就是更多重試等)NFS 選項但 autofs 的快速返回時間的好方法,或者不是?