如何妥善处理 Samba 共享离线?

如何妥善处理 Samba 共享离线?

我有一台 Ubuntu 16.04 LTS Web 服务器,它通过 Samba 安装 Windows 文件服务器。Web 服务器需要能够偶尔执行与该服务器上的文件交互的任务。但是,我们最近遇到了 Windows 文件服务器中断的问题,这导致 Web 服务器开始表现非常糟糕。我希望安装失败只会导致尝试与该文件夹交互的命令立即失败(允许我们快速捕获和处理异常),但事实是,与安装的交互似乎非常频繁。慢慢地反而。

以下是 /etc/fstab 中用于挂载共享的条目:

//<Windows server hostname>/TPA /mnt/TPA cifs username=tasker,password=<redacted>,domain=<our domain>,sec=ntlm,iocharset=utf8,sec=ntlm 0 0

我说的“慢慢地”的意思是,如果我这样做ls /mnt,该命令大约需要 30 秒才能完成,然后会给我以下消息:

user@server:/mnt$ ls
ls: cannot access 'TPA': Host is down

这种缓慢在 Web 应用程序本身中也很明显。如果可能的话,我希望能够设置 Web 应用程序来检测共享是否已关闭并妥善处理,但我不希望每次请求都花 30 秒来处理。有没有办法可以配置一些东西,以便更妥善地处理它?

为了使事情变得更加复杂,Web 应用程序实际上位于一个 Docker 容器内,该容器中有一个添加了指向的卷/mnt,这可能会使事情变得更糟,但我想如果我解决了主机的问题,那么容器也应该能够同样符合要求。

任何建议将不胜感激!

编辑:我要补充一点,目前,我们已经卸载了有问题的挂载点,并从 fstab 中注释掉了该行,这似乎让它“高兴”了,但理想情况下,我更喜欢一种不那么手动的解决方案。

答案1

只是一些想法...

我不确定如何测试/mnt访问时会如何响应。但我对如何更准确地预测它有一些想法。

您可以使用smbclientnmap尝试连接到服务器。或者使用等在后台运行某些程序cron……看起来不错,/mnt 下的文件 - 这样,在遇到超时时不会减慢任何速度。如果任何测试失败,请告知 Web 应用程序。

test -d /mnt && echo true当文件服务器关闭时也会失败...如果这有帮助的话。但您需要等待它超时。

smbclient //host/share -Uuser password 如果服务器宕机,将几乎立即返回所以它不会减慢任何速度。nmap但它实际上并没有尝试登录文件服务器。

我希望这些能对你有帮助。

相关内容