我们的设置:
服务器: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:好吧,我捕获了安装过程,发现有两个主要延迟:约 10 秒和约 30 秒。但无法找出原因。您能提出什么建议吗?http://tinypic.com/r/2cxz21z/9
答案1
对于这类问题,数据包跟踪可能会很有帮助。
tcpdump -s 0 -i eth0 -w mount-trace.pcap
然后执行挂载。完成后取消 tcpdump。然后将 mount-trace.pcap 文件放到可以加载到 wireshark 的地方。
这需要一些探索,但安装 Windows 卷需要很长时间才能完成,通常是因为对话双方无法就继续对话的协议达成一致。如果您查看手册页mount.cifs
并查看您正在使用的参数的选项sec=
,您可以看到有多少个选项。
您在 wireshark 中寻找的是对话各部分之间的长间隔。这种事情可能表明在转到故障回复方法之前必须经过超时。Wireshark 对 CIFS 的支持非常好,您只需观察它经历的各个阶段,就可以了解很多有关 Windows 身份验证如何工作的信息。
如果这太可怕,我建议sec=ntlm
从 mount 命令中删除该参数并依赖默认值,或将其设置为ntlmssp
。这与 NTLM 是 Microsoft 身份验证协议的旧方言有关,后来被 NTLMv2 取代,最终凯尔伯罗斯。Windows Server 2008 已有十年历史,处于 NTLM 被彻底删除与由于遗留原因仍然允许的中间阶段。
不幸的是,遗留原因包括非常老的 CentOS 版本。例如,版本 5 旧。
一旦你恢复速度,重新执行 tcpdump 并与第一个进行比较。你会看到差异!