我有一个小的本地networking,有一个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信号的影响。 从networking断开连接并重新连接Windows盒子没有帮助。 冷冻状态持续5分钟以上。 这真的令人沮丧,妨碍了正常的工作,因为它冻结了另存为对话框, ls
命令等。如果我在挂载点上发出一个umount
,它也挂起,或报告挂载点正在使用。 最终,死亡状态自行解决,挂载点被卸载,或者可以毫不拖延地umount
。
我的猜测是,当连接/挂载空闲或Windows机器闲置时会发生这种情况。 我不确定。
为什么会发生这种情况,我能做些什么来防止它呢? 或者我怎样才能成功地杀死这些D状态进程?
可能相关: CIFS挂载挂在读取
不知道为什么这个问题正在发生,但是作为一个解决方法,你是否尝试过把touch /mnt/windowsbox/keepalive.txt
或echo "I am still alive." >/mnt/windowsbox/keepalive.txt
echo "I am still alive." >/mnt/windowsbox/keepalive.txt
通过cron每分钟运行? 这样的连接应该保持活跃。
我也是每隔几个月遇到一次。 sudo umount -l
是我的解决方法。 https://stackoverflow.com/a/96288/2097284
如果您遇到networking问题,并且Windows 7运行7请阅读
弹性打开清道夫计时器[MS-SMB2](默认300秒)
有关cifs超时的更多信息
http://blogs.msdn.com/b/openspecification/archive/2013/03/19/cifs-and-smb-timeouts-in-windows.aspx
如果你的问题有一个自动恢复的行为,然后寻找超时…
另一个可能的答案build议通过cron定期写入mount上的文件。 我会build议,而不是使用smbclient程序连接到共享和断开连接。
我写了一个这样的bash脚本来完成这个任务:
#!/bin/bash su usernamehere -c "smbclient \\\\\\\\\\\\\\\\servernamehere\\\\\\\\sharenamehere passwordhere -c exit" >/dev/null 2>&1
这个命令与共享build立了一个新的连接,然后运行exit命令,立即closures刚在命令行build立的连接。 在服务器名称前面应该有8个斜杠,在共享名称前面应该有4个斜杠,因为反斜杠需要被转义,并且在双引号string内需要转义。 也许有一个更聪明的方法来做到这一点,但这似乎工作。
也许有办法让这个连接一次打开几分钟,使它更加可靠,但是这有点儿超出了我的联盟。