我的 Samba 文件服务器具有随机千兆带宽

我的 Samba 文件服务器具有随机千兆带宽

我有一台个人文件服务器,基于 AMD X2 平台构建,配备英特尔千兆 CT 网络适配器,运行 Debian 6.0。

我建立了一个 raid5 (2To x 3),由 samba 3.5.6 共享

从我的台式电脑(windows7)复制大文件时,有时下载/上传速度稳定在 55/60Mb/s 左右,有时非常不稳定,下降到 1 或 2Mb/s,最高为 20/30Mb/s,非常不稳定。

我也在 raid 和主磁盘上使用 samba 共享进行了测试,结果类似。

我在服务器上运行了一些 hdparm -tT:

/dev/sda:
  Timing cached reads:   4698 MB in  2.00 seconds = 2349.11 MB/sec
  Timing buffered disk reads: 374 MB in  3.00 seconds = 124.49 MB/sec

/dev/md0:
 Timing cached reads:   4814 MB in  2.00 seconds = 2407.76 MB/sec
 Timing buffered disk reads: 640 MB in  3.00 seconds = 213.02 MB/sec 

另外,我还使用 iperf 测试了两台计算机之间的带宽:

iperf.exe -c pacem -n 1073741824 -fm
------------------------------------------------------------
Client connecting to pacem, TCP port 5001
TCP window size: 0.06 MByte (default)
------------------------------------------------------------
[  3] local 10.0.0.145 port 50913 connected with 10.0.0.37 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-68.7 sec  1024 MBytes   125 Mbits/sec 

我怎样才能有效地找到问题所在?

谢谢阅读!

答案1

您所描述的问题很可能是由以下三个因素造成的:

  1. socket options[global]smb.conf 文件的部分中。一个好的起点是:

    socket options = IPTOS_THROUGHPUT TCP_NODELAY SO_KEEPALIVE
    

    看看它是如何工作的;通常它足以让 Samba “摆脱”性能瓶颈。有关其他选项,请查看 Samba 页面;尤其是 SO_SNDBUF 和 SO_RCVBUF。错误地设置这些值会对性能产生负面影响;这可能需要一些反复试验。

  2. 更糟糕的是,文件的大小会影响 Samba。小文件有更多开销。如果您调整套接字选项以进行批量传输,您会发现小文件速度变差。同样,调整小文件会使大文件传输变得更糟。理想情况下,您会弄清楚您最常传输什么,或者什么对您来说影响最大(4GB DVD ISO 上的慢通常比 1KB 文件上的慢更有意义)。

  3. DNS 和 VFS 设置。如果您没有正确配置 DNS 正向和反向映射,则需要禁用 Samba 的 DNS 查找(dns proxy = nohostname lookups = no)。这在您首次连接到 Samba 共享时最为明显(如果花费的时间超过 5 秒,则存在问题)。

    Samba 的 [global] 部分中可以配置各种 VFS 和相关选项。如果这些选项有误,Samba 将不得不在打开/保存每个文件时处理错误。适合您的服务器的设置将取决于其文件系统、安全性以及您想要启用的一些功能。这部分没有快速答案,但总体而言,它的影响最小。

相关内容