当连接丢失时,SSHFS 会正常降级而不是冻结。这可能吗?

当连接丢失时,SSHFS 会正常降级而不是冻结。这可能吗?

第三方程序会将文件写入 SSHFS 挂载目录。如果互联网连接丢失,第三方程序可能会崩溃(严重),因为所有试图在这种状态下(当没有互联网连接时)访问此类 SSHFS 挂载目录的程序都会进入一些人所说的“不间断睡眠”状态。SSHFS 有一个自动重新连接的选项,但这没有帮助,因为如果连接丢失,第三方程序仍会挂起(并崩溃)(即使连接恢复后,SSHFS 会重新挂载目录)。Autofs 不会有帮助,基本上它是关于连接丢失时 SSHFS 的行为。为什么它不能像网络共享目录(Samba 或其他方式)那样运行,并尽快返回错误,而不是……永远不返回?

如果 SSHFS 不能按描述工作,是否有 SSHFS 的替代品?

其他信息:

操作系统:我使用的是 Ubuntu Linux (12.04 LTS)

答案1

令人沮丧的问题。我过去曾多次尝试使用 sshfs。

一旦连接丢失,访问已安装文件夹中文件的应用程序就会冻结并崩溃。甚至是终端。应用程序甚至不知道它们在等待。这是内核层面的问题,无法处理 sshfs,让它们永远等待……甚至卸载也不起作用,有时甚至会冻结,因为挂载的文件夹在文件系统内核层面以某种方式被锁定。

为什么当我拔下 USB 驱动器时不会发生这种情况?

这个问题已经存在好几年了……

如果您无法随时重新建立连接,自动重新连接就无济于事。(就我而言,我的 kerberos Tickes 已经用完了)。

抱歉,但我必须声明: sshfs 无法使用!
(连接从未丢失的情况除外)

我总是最终使用 scp。令人沮丧的问题

答案2

sshfs 文档建议使用-o ServerAliveInterval=15。这可能会导致数据丢失,但在网络中断 45 秒后应返回错误。

https://github.com/libfuse/sshfs/blob/master/sshfs.rst#sshfs-hangs-after-the-connection-was-interrupted

答案3

简而言之:不 - 因为冻结来自应用程序,sshfs 失败是正常的 - 它会告诉应用程序等待。 - 应用程序不尊重这一点的事实不是 SSHFS 的错误。

如果应用程序正在访问可移动存储(例如 USB 驱动器)上的文件,而您将其移除,则应用程序也会执行完全相同的操作。应用程序需要捕获并处理 I/O 上的超时事件,而不是只是停滞不前地等待响应。

相关内容