在通过 fstab 安装的 sshfs 驱动器上强制重新连接

Woo*_*low 6 filesystems fstab sshfs

我有一个每天使用的远程 sshfs 驱动器。我以前每次启动计算机时都执行以下命令。

sshfs -o Ciphers=arcfour -o Compression=no -o reconnect remote:dev ~/dev
Run Code Online (Sandbox Code Playgroud)

显然,每次都手动执行此操作并不是很方便,所以我想我只需将遥控器添加到我的文件系统表中即可。我不熟悉 fstab 的格式,但在阅读了一些技术“操作方法”博客后,我决定在我的/etc/fstab文件中包含以下行。

sshfs#wbarlow@remote:/home/wbarlow/dev /home/wbarlow/dev fuse defaults,users,idmap=user 0 0
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果网络中出现故障,驱动器有时会出现故障。这种情况可能每天发生一次——当我尝试手动重新连接(通过单击 nautilus 中的驱动器)时,我收到一条消息,显示“传输端点未连接。”。

我的主要问题是:如何将-o reconnect我在终端命令中使用的选项带入我的 fstab 文件?我相信这会防止驱动器因闪烁而断开连接。

此外,我选择该密码是因为它是我的远程服务器支持的最快的密码(我认为),并删除了压缩,因为有线千兆网络比 CPU 压缩内容所花费的时间快。如果我也可以将这些选项拉入我的 fstab 中,那就太好了,但我可以没有它们。

这是我的内核/操作系统/架构信息:

[wbarlow ~]$ uname -r
4.1.3-200.fc22.x86_64
Run Code Online (Sandbox Code Playgroud)

sou*_*edi 5

要包含您想要的选项,您应该修改您的 fstab 条目,如下所示。请小心,因为添加一个实际上并不存在的选项会导致您的系统无法启动。

sshfs#wbarlow@remote:/home/wbarlow/dev /home/wbarlow/dev fuse defaults,users,noauto,idmap=user,Ciphers=arcfour,Compression=no,reconnect 0 0
Run Code Online (Sandbox Code Playgroud)

我测试了

  1. 检查输出 ps|grep ssh
  2. 跑步kill ssh并没有杀死坐骑。

我冒昧地添加了该noauto选项。这要求挂载不会自动发生,因此任何失败都不会停止启动过程(尤其是在使用 systemd 时)。它依赖于你有一种方便的跑步方式mount。希望你的文件管理器能提供这个,否则它就失去了意义......

另一种可能性是nofail选项。即使此文件系统无法挂载“如果此设备不存在”,此选项也会请求成功启动。不幸的是,我们发现 sshfs/fuse 没有实现这个选项。具有讽刺意味的是,使用nofail此处的选项将保证失败。


文档 ( man fstab) 描述了 fstab 条目的第四个字段:

第四个字段(fs_mntops)

此字段描述与文件系统关联的挂载选项。

它被格式化为逗号分隔的选项列表。它至少包含挂载类型(ro 或 rw),以及适合文件系统类型的任何附加选项(包括性能调整选项)。有关详细信息,请参阅 mount(8) 或 swapon(8)。

与文件系统无关的基本选项是:

  • defaults使用默认选项:rw、suid、dev、exec、auto、nouser 和 async。
  • noauto在给出“mount -a”时不挂载(例如,在启动时)。
  • user允许用户挂载。
  • owner允许设备所有者挂载。
  • 注释x-<name>供 fstab 维护程序使用。
  • 如果此设备不存在,则nofail不会报告此设备的错误。

完全独立于文件系统的选项由 fstab 处理。其他选项传递给特定于文件系统的命令(在本例中为 sshfs)。

  • 如果我复制粘贴该行,系统会正常启动,但在我的文件资源管理器中单击驱动器(以安装它)会向我显示一条错误消息:“保险丝:未知选项‘nofail’”。我不知道为什么该选项被传递到保险丝上,因为文档清楚地将其标识为独立于 fs 的选项之一。只有当我删除 `nofail` 选项时,安装才能按预期工作。此外,(re:noauto 选项)驱动器*从不* 自动安装。它列在我的驱动器中,但除非我点击它,否则不会挂载,就像我的 ntfs 驱动器一样。我以为这就是保险丝驱动器的工作原理。 (2认同)