我有一台 Ubuntu 14.04 服务器,它有一个 Azure 文件存储挂载点,可通过 FSTAb 在启动时自动挂载。要创建此配置,我按照这篇文章中的说明进行操作,并且运行良好。
我遇到的问题是,一段时间后,挂载会间歇性地掉线。似乎不是在任何特定的时间或事件中发生的,我知道它已经消失的唯一方法是用户抱怨他们无法上传文件(应用程序将文件保留在 Azure 文件挂载上)。如果我尝试 cd 到挂载,我的控制台就会挂起。如果我尝试执行 df -h 列出所有内容,控制台也会挂起。我能够让一切恢复正常的唯一方法是重新启动服务器,然后一切都会恢复正常。
我怀疑与 Azure 文件存储的连接可能会间歇性断开并恢复,但也许服务器只是在再次可用时没有重新安装?我有几个其他 (Windows) 服务器连接到同一个文件共享,到目前为止我没有遇到这个问题。有没有其他人遇到过这种情况,是否有一种配置可以在共享不可用时自动重新安装?
任何建议将不胜感激!
答案1
我似乎已经通过使用 AutoFS 而不是 fstab 来挂载共享解决了这个问题。进行更改后,我们没有遇到最初报告的问题。进行更改几天后,我确实收到了 Microsoft 的回复,称这是一个已知问题(以下消息的 c/p)。AutoFS 或 Microsoft 的建议应该是解决此问题的可行方法。
我们的工程师为您提供了以下反馈:
当客户端长时间处于空闲状态时,Linux 驱动程序重新连接到共享时会发生此错误。它会断开连接并且客户端连接超时。
•客户端长时间处于空闲状态。Linux 客户端定期发送 ECHO 命令以保持连接处于活动状态。•TCP 连接由于某种原因断开(例如节点进行软件发布)。•Linux 客户端与端口 445 建立新的 TCP 连接,但在该连接上不发送任何内容。
•空闲 60 秒后,SLB 断开 TCP 连接。•一段时间后,Linux 应用程序尝试访问文件,Linux 发送 NEGOTIATE 数据包,该数据包被 SLB 屏蔽。•Linux 客户端等待 15 分钟,直至 TCP 超时。在我们得到 Linux 开发人员的修复之前,建议的解决方法是定期访问共享。
解决方法:将文件保存在 Azure 文件共享中,并定期对其进行写入以维持连接并避免进入空闲状态。这必须是写入操作,例如,重写文件的创建/修改日期,否则您可能会得到缓存结果,并且您的操作可能不会触发连接。