Filesystems

在通過 fstab 安裝的 sshfs 驅動器上強制重新連接

  • January 26, 2019

我有一個每天使用的遠端 sshfs 驅動器。我以前每次啟動電腦時都執行以下命令。

sshfs -o Ciphers=arcfour -o Compression=no -o reconnect remote:dev ~/dev

顯然,每次手動操作都不是很方便,所以我想我只是將遙控器添加到我的文件系統表中。我不熟悉 fstab 的格式,但在閱讀了一些技術“操作指南”部落格後,我決定在我的/etc/fstab文件中包含以下行。

sshfs#wbarlow@remote:/home/wbarlow/dev /home/wbarlow/dev fuse defaults,users,idmap=user 0 0

不幸的是,如果網路出現故障,驅動器有時會出現故障。這可能每天發生一次 - 當我嘗試手動重新連接(通過點擊 nautilus 中的驅動器)時,我收到一條消息,顯示“傳輸端點未連接。”。

我的主要問題是:**如何將-o reconnect我在終端命令中使用的選項帶入我的 fstab 文件?**我相信這會防止驅動器由於光點而斷開連接。

另外,我之所以選擇該密碼,是因為它是我的遠端伺服器支持的最快的密碼(我認為),並刪除了壓縮,因為有線千兆網路比 CPU 壓縮內容所花費的時間更快。如果我也可以將這些選項拉到我的 fstab 中,那就太好了,但我可以沒有它們。

這是我的核心/作業系統/架構資訊:

[wbarlow ~]$ uname -r
4.1.3-200.fc22.x86_64

要包含您想要的選項,您應該修改您的 fstab 條目,如下所示。小心,因為添加一個實際上不存在的選項會導致您的系統無法啟動。

sshfs#wbarlow@remote:/home/wbarlow/dev /home/wbarlow/dev fuse defaults,users,noauto,idmap=user,Ciphers=arcfour,Compression=no,reconnect 0 0

我測試了它

  1. 檢查輸出ps|grep ssh
  2. 跑步kill ssh並沒有殺死坐騎。

我冒昧地添加了該noauto選項。這要求掛載不會自動發生,因此任何失敗都不會停止引導過程(尤其是在使用 systemd 時)。它依賴於你有一種方便的跑步方式mount。希望你的文件管理器會提供這個,否則它會失敗……

另一種可能性是nofail選項。即使此文件系統無法掛載“此設備不存在”,此選項也會請求成功引導。不幸的是我們發現 sshfs/fuse 沒有實現這個選項。具有諷刺意味的是,在這裡使用該nofail選項將保證失敗。


docs ( man fstab) 描述了 fstab 條目的第四個欄位:

第四個欄位(fs_mntops)

此欄位描述與文件系統關聯的掛載選項。

它被格式化為以逗號分隔的選項列表。它至少包含掛載類型(ro 或 rw),以及適合文件系統類型的任何附加選項(包括性能調整選項)。有關詳細資訊,請參閱 mount(8) 或 swapon(8)。

與文件系統無關的基本選項是:

  • 預設值使用預設選項:rw、suid、dev、exec、auto、nouser 和 async。
  • noauto在給出“mount -a”時不掛載(例如,在引導時)。
  • user允許使用者掛載。
  • owner允許設備所有者掛載。
  • 註釋或**x-<name>**供 fstab 維護程序使用。
  • 如果此設備不存在,則nofail不報告錯誤。

完全獨立於文件系統的選項由 fstab 處理。其他選項被傳遞給特定於文件系統的命令(在本例中為 sshfs)。

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