我继承了一台 Windows 2012 R2 服务器,该服务器的 SMB/CIFS 性能非常糟糕,尤其是对于 Mac OS X 客户端而言。该服务器正在执行文件服务,并且是 Active Directory 域控制器(域的两个控制器之一)。它是 PDC 模拟器。另一个域控制器是 Windows 2003 服务器。
客户端环境是 Windows 7 和 Mac OS X 10.9 Mavericks 机器的混合体。所有机器都位于同一个物理和逻辑千兆 LAN 上。Windows 7 用户的性能符合预期。Mac OS X 10.9 Mavericks 客户端的性能非常糟糕,包括:目录列表、遍历、文件读取和文件写入速度缓慢。读/写性能似乎存在显著的不对称,其中写入性能明显较慢。
我们尝试强制 OS X 客户端使用 SMBv1 和 CIFS,而不是较新的 SMBX/SMB2 实现。所有版本都存在此问题。我们还安装了 Thursby DAVE 进行测试。列表/遍历性能略有改善,但速度仍然慢得令人无法接受。
我安装了一个共享,并用于dd
读取/dev/random
和写入 1GB 的文本文件到共享。写入性能为 .33 Mbps。我tcpdump
在写入过程中运行以捕获通信。请原谅格式的缺失 - 我似乎无法回退以退出此块:
编辑
我为 Windows Server 启用了 NFS 服务器,并将其安装在 Mac OS X 客户端上。我进行了上述相同的dd
测试,结果/性能相似。
15:45:45.221337 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], ack 102, win 32767, options [nop,nop,TS val 1279665835 ecr 242798971], length 0
15:45:45.221546 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 1:501, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500WARNING: Packet is continued in later TCP segments
SMB PACKET: SMBwriteX (REQUEST)
15:45:45.221547 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 501:1001, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221547 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 1001:1501, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221547 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 1501:2001, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221548 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 2001:2501, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221548 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 2501:3001, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221549 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 3001:3501, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221549 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 3501:4001, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221550 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 4001:4501, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221550 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 4501:5001, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
15:45:45.221551 IP 10.0.1.53.59596 > server.example.local.microsoft-ds: Flags [.], seq 5001:5501, ack 102, win 32768, options [nop,nop,TS val 1279665835 ecr 242798971], length 500SMB-over-TCP packet:(raw data or continuation?)
编辑
- 我可以采取哪些下一步的故障排除步骤来找出潜在原因?
- 从上面标题的 tcpdump 中可以得出什么结论吗?
- 是否有任何建议的网络性能调整建议可以缓解所描述的性能问题?
答案1
尝试在服务器上禁用 SMB 3.0,看看性能是否有所提高。禁用 SMB 3.0 并不是一个好主意,尤其是当服务器作为 Hyper-V VM 或 SQL 数据存储的存储点运行时,但如果您以相当基本的方式使用它,您可能会成功。
在 Windows 和 Windows Server 中检测、启用和禁用 SMBv1、SMBv2 和 SMBv3 | Microsoft 支持
答案2
这个链接对我帮助很大: 将 Mac 集成到 Windows Active Directory 域 | TechRepublic
它基本上表明您需要修改 Mac 上的目录服务设置。转到系统偏好设置/用户和组,然后单击登录选项。单击网络帐户服务器的编辑按钮,然后单击“打开目录实用程序”修改设置以满足您的需求。
双击“Active Directory”并转到高级选项:
- “强制在启动盘上使用本地主目录”将“强制在本地硬盘上为所有用户创建配置文件”
- “使用 Active Directory 中的 UNC 路径派生网络主位置”检查并选择使用的协议 - smb
- “映射,涉及为 ADDS 中用于识别计算机对象帐户的某些属性指定唯一的 GUID。OS X 在绑定到域时会默认随机生成这些映射;但是,您可能希望使用企业管理员生成的特定映射集。”
答案3
我本想添加一条评论,但我做不到。我没有任何想法让你尝试,但我想告诉你的是,我的一位同事最近安装了一台新的 OSX 服务器,几乎所有客户端都是 OSX。他也遇到了一些奇怪的文件共享问题,比如性能问题,客户端无法从 OSX 服务器打开网络驱动器上的某些文件。我们最终从 Apple 购买了一份支持合同来帮助他,他们告诉他让用户下载他们想要处理的文件,在 Mac 上本地完成他们的工作,然后再将其全部复制回来……
看到这个让我认为新的 OSX 在访问网络共享的方式上有问题。
答案4
我看到的一些原因如下:[按顺序]
检查交换机上的生成树设置。生成树设置会影响所看到的内容以及 Mac 上的连接质量。
MTU 大小
巨型数据包设置
CPU 卸载
禁用未使用的协议我见过许多启用了但未使用的协议的网络。
菊花链式连接太多交换机错误地违反了以太网标准。
广播风暴抑制
接线违规:
缠绕过多的以太网线 - 产生磁感应;RJ45 连接器端接不当;长度不足,无法提供足够的欧姆电阻;将电线缠绕在高功率导管上