我们的设置:
服务器:Windows Server 2008
客户端:SHMZ 6.6 (FreePBX, CentOS)
mount.cifs 版本:4.8.1
smbclient 版本:3.6.23-14.el6_6
使用此命令进行连接:
mount.cifs //192.168.0.10/Share /mnt/share -o "username=windowsuser,sec=ntlm,servern=SERVERNAME,password=windowsuserpassword"
挂载一个空文件夹需要 1 分 3 秒。
问题是:如何加快挂载过程?
更新 1:你可能已经注意到我在写这篇文章之前没有做任何诊断。主要是因为我不知道从哪里开始。请至少给我一个提示如何分析连接过程。
更新 2:嗯,我捕获了挂载过程,我看到有 2 个主要滞后:~10 和~30 秒。虽然无法弄清楚原因。你能建议什么吗?http://tinypic.com/r/2cxz21z/9
在这种情况下,数据包跟踪可能会很有帮助。
然后执行您的安装。完成后取消 tcpdump。然后在可以加载到wireshark的某个地方获取mount-trace.pcap文件。
这将需要一些时间,但安装需要很长时间才能完成的 windows 卷通常是由于对话双方无法同意协议以继续对话。如果您查看手册页
mount.cifs
并查看sec=
您正在使用的参数的选项,您可以看到其中有多少。您在wireshark 中寻找的是对话部分之间的长间隔。这种事情可能表明在继续使用故障恢复方法之前必须超时。Wireshark 对 CIFS 的支持非常好,您可以通过观察它所经历的各个阶段来了解 Windows 身份验证的工作原理。
如果这太可怕了,我建议
sec=ntlm
从你的 mount-command 中删除参数并依赖默认值,或者将其设置为ntlmssp
. 这与 NTLM 是 Microsoft 身份验证协议的旧方言有关,后来被 NTLMv2 取代,最终被kerberos取代。Windows Server 2008 已经有十年的历史了,它位于 NTLM 被坚决删除和由于遗留原因仍然被允许之间的中间空间。不幸的是,遗留的原因包括非常旧的 CentOS 版本。就像,版本 5 旧。
一旦你再次快速获得它,重做那个 tcpdump 并与第一个比较。你会看到差异!