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

Bar*_*rge 1 networking linux bandwidth samba debian-squeeze

我拥有一个个人文件服务器,构建在 AMD X2 平台上,带有英特尔千兆 CT 网络适配器,运行 debian 6.0。

我已经构建了一个由 samba 3.5.6 共享的 raid5 (2To x 3)

我的台式机(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 
Run Code Online (Sandbox Code Playgroud)

另外,我使用 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 
Run Code Online (Sandbox Code Playgroud)

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

谢谢阅读!

Chr*_*s S 5

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

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

    socket options = IPTOS_THROUGHPUT TCP_NODELAY SO_KEEPALIVE
    
    Run Code Online (Sandbox Code Playgroud)

    看看它是如何工作的;通常足以让 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 将不得不在打开/保存每个文件时处理错误。适用于您的服务器的设置将取决于它的文件系统、安全性以及您想要启用的一些功能。这部分没有快速答案,但总体而言差异最小。