Linux:CIFS / Samba安装挂起几分钟


26

我有一个小型的本地网络,其中有一个Gentoo框和一个Windows框。我使用以下命令将源自Windows框的共享安装到Gentoo框上:

mount -t cifs -o username=WindowsUsername,password=thepassword,uid=pistos //192.168.0.103/Users /mnt/windowsbox

在大多数时候,一切都正常,我可以毫无问题地进行读写。但是,每隔几周左右,连接或挂载点似乎会死机或挂起,因此任何尝试访问挂载点的进程都会陷入D状态(磁盘或I / O等待)。这些过程不受TERM和KILL信号的影响。从网络上断开和重新连接Windows框并没有帮助。冻结状态持续5分钟以上。这真的很令人沮丧,并且妨碍了正常工作,因为它冻结了另存为对话框,ls命令等。如果我umount在挂载点上发出a ,它也会挂起,或者报告挂载点正在使用中。最终,死状态将自行解决,并且挂载点将被挂载,或者变为umount无延迟。

我的猜测是,这种情况发生在连接/挂接处于空闲状态或Windows计算机处于空闲状态时。我不太确定

为什么会发生这种情况,我该怎么做才能防止这种情况发生?还是我怎样才能成功地杀死这些D状态进程?

可能相关:CIFS挂载在读取时挂起


1
两台机器之间是否使用任何类型的防火墙?
2014年

@Schrute:我假设Linux上有任何默认设置(iptables?),并且Windows正在运行。您认为防火墙正在超时连接吗?我从来没有听说过这样的事情。
Pistos 2014年

我认为这可能是linux系统的问题。我看到了一个类似的问题-不是cifs和Windows-但安装了nfs共享。无法保存-我猜是由于访问不存在的nfs服务器时某些进程挂起。这通常在服务器崩溃时发生。
cornelinux 2014年

1
我的建议是在linux机器上设置环形缓冲区网络捕获(即tcpdump -i eth0 -C 5 -W 10 -s 0 -v -w /tmp/cifs.pcap主机192.168.0.103-我也要运行它在屏幕下方,以防止断开连接时进程终止)。当出现问题时,请在几秒钟后停止跟踪,并且至少应能够在查看数据包跟踪时确定是哪一方导致了问题(即服务器停止响应,会话断开连接等)。
GeekyDeaks 2014年

1
@Pistos-Wireshark是您的朋友!跟踪看起来可能会令人困惑,但是wireshark将解码帧以提供帮助。您想先消除一些基础知识,例如服务器或客户端丢弃会话(FIN数据包),然后再进行其他处理,例如服务器停止响应等。如果您有时间,2013年在CIFS上有一个sharkfest视频(youtube.com/watch ?v = XbvFXSPig-w),但时间相当长:)
GeekyDeaks 2014年

Answers:


11

不知道为什么会发生此问题,但是作为一种变通办法,您是否尝试过每分钟通过cron touch /mnt/windowsbox/keepalive.txtecho "I am still alive." >/mnt/windowsbox/keepalive.txt运行cron?这样,连接应保持活动状态。


好主意。我将其放置到位,然后看看会发生什么。
Pistos

2
我应该提到,这似乎已经解决了问题。
Pistos

很高兴听到!
Janne Pikkarainen 2014年

1
根据@Pat的回答,可以将其从每分钟心跳调整为每5分钟(300秒)一次心跳,这*/5 * * * *在crontab时间表中
woodvi

我现在正在使用这个。在三天内,我有三台单独的Ubuntu Server 16 LTS计算机(两台物理,一台VM)在重启数小时后断开了SMB连接。启动时,SMB连接已安装,没有任何问题,但最终无响应。
user38537


0

另一个可能的答案是建议通过cron定期将文件写入安装文件。我建议改为使用smbclient程序连接到共享并断开连接。

我写了这样的bash脚本来完成该任务:

#!/bin/bash

su usernamehere -c "smbclient \\\\\\\\\\\\\\\\servernamehere\\\\\\\\sharenamehere passwordhere -c exit" >/dev/null 2>&1

该命令与共享建立新连接,然后运行exit命令,立即关闭刚在命令行上建立的连接。服务器名称前应有8个斜杠,共享名称前应有4个斜杠,因为反斜杠需要转义,并且在双引号引起来的字符串中需要转义。也许有一种更聪明的方法可以做到这一点,但这似乎确实可行。

也许有一种方法可以使它一次保持几分钟的连接断开状态,从而使此方法更加可靠,但这有点超出我的能力了。


有趣的建议。如果我在其他解决方案上还没有成功,那我就去做。
Pistos

我看不出这会有什么帮助?Janne的解决方案将使cifs客户端建立的连接保持活动状态,而这将与smbclient创建一个新的,不相关的连接-那么它将如何帮助呢?
flungo

1
仅供参考,如果您要使用正斜杠而不是反斜杠,则smbclient支持正斜杠,因此//servername/sharname在需要大量转义的地方更容易。
史蒂夫·弗里德尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.