过去一周我一直在为此绞尽脑汁,但似乎找不到任何解决方案。所以,这就是我的问题...我有一台 Juniper ex4500 10g 交换机,通过 sfp+ 双轴电缆连接到我的服务器。
第一台服务器(文件服务器):Dell R620
RAM : 96GB
N/W card : Ethernet controller: QLogic Corp. cLOM8214 1/10GbE Controller (rev 58) (2 ports) on bond0 which makes this 20Gbps
OS : centos 6.7 x86_64
Storage : 24 disks connected via perc 810 on RAID 5
第二台服务器(计算):Dell R810
RAM : 256GB
N/W card : Ethernet controller: QLogic Corp. cLOM8214 1/10GbE Controller (rev 58) (2 ports) no bond
OS : centos 6.7 x86_64
Storage : single disk 512GB 6Bb/s
第三台服务器(计算):Dell R810
RAM : 512GB
N/W card : Ethernet controller: QLogic Corp. cLOM8214 1/10GbE Controller (rev 58) (2 ports) no bond
OS : centos 6.7 x86_64
Storage : single disk 512GB 6Bb/s
我有一个 CentOS 6.7 ISO 文件,用于测试传输速度。这就是我开始测试的方式。首先,我使用服务器 2 和服务器 3 开始scp centos 6.7.iso root@server3:~/
,其传输速度最高达到 167MB/秒。我认为这是因为 MTU 是 1500,而我的速度却越来越慢。因此,将交换机上服务器所连接端口和服务器 ifcfg-px 文件中的 MTU 更改为 9214,然后重新启动服务器。但现在传输速度只增加到 200MB/秒。我使用具有绑定的服务器 1 进行测试,并将 MTU 设置为 9000,我仍然得到 200MB/秒。
iperf 显示带宽为 10g,但我看不到。scp 的开销是否太大,以至于最大可达 200MB/s?
无论如何,如果你们当中有人知道问题是什么,请告诉我。我将不胜感激。
以下是我的 iperf 和 scp 的输出。
Client connecting to teng.tofu, TCP port 5001
TCP window size: 92.6 KByte (default)
[ 3] local 10.10.113.15 port 58221 connected with 10.10.113.21 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 11.5 GBytes 9.90 Gbits/sec
SCP
100% 3926MB 186.9MB/s 00:21
答案1
限制肯定是 SSH 中的硬编码缓冲区和 SCP 客户端中的附加硬编码缓冲区。您可以使用 ewwhite 提到的 HPN ssh 补丁来解决这个问题,但我首先会考虑其他方法,而不是修改您的 ssh 守护程序。或者,如果必须的话,创建第二个自定义 ssh 守护程序。
如果您的流量需要加密,有几种方法可以在主机之间设置 VPN,然后您可以简单地使用传统方法,例如本机 rsync(rsync host::resource/path 与 rsync host:/path)或 NFS。如果您使用临时 vpn 设置(例如 OpenVPN、Tinc 或内核内置的本机 IPSEC),则本机 rsync 更容易保护。
要确定网络不太可能是您的故障,请创建 NFS 共享,或启动 rsync 作为守护进程并使用本机 rsync 协议(不使用 ssh)。要达到 10gb/s,您需要调整 /etc/sysctl.conf 中的缓冲区大小(默认情况下不存在),并且可能需要通过 /etc/modprobe.d/driver-name.conf 调整千兆以太网驱动程序的默认选项,您需要阅读相关内容。
编辑
如果您只是想测试您的 10Gb 卡,那么请在一台机器上启动 iperf3 作为服务器,并在另一台机器上使用 iperf3 作为客户端。如果使用 centos/redhat,您应该能够在 EPEL repo 中找到它,或者您可以自己编译它。iperf3 将向您显示您的服务器可能获得的最大速度不计算应用程序开销然后,您就可以调整 sysctl.conf、gig 模块驱动程序选项等来获得更高的速度(如果需要)。
答案2
不要为此使用传统的 SSH/rsync。
另外,我不知道你复制的方向,但你的客户端的提取速度可能不太快。你是否已经达到存储的上限?
(我不会对 24 磁盘 RAID5 设置发表评论)
另请参阅:提高高延迟链路上大文件的传输速度
答案3
SCP 使用 SFTS/SSH 来加密/解密文件。对于高速网络来说,它的开销相当高。您可以尝试使用较弱的密码(例如 arcfour)来降低加密开销。
尝试发出以下命令:scp -o Ciphers=arcfour <local> <remote>
编辑:如果你不关心 SCP/SSH 性能,那么你应该不是使用 SCP 对您的 LAN 进行基准测试。要测试纯网络速度,您可以使用 netperf 或 iperf。如果您关心 NFS,只需导出带有大文件(例如:ISO 文件)的 NFS 挂载,将其传输到另一台机器上并检查传输所需的秒数。