局域网中的文件传输速度

局域网中的文件传输速度

我从一台 Linux 主机向另一台 Linux 主机传输了大约 15TB 的数据。发送方主机有以下网卡:

[44.206701] igb:eth0 NIC 链路处于 1000 Mbps 全双工状态,流量控制:RX/TX

[44.274112]bonding:bond0:接口 eth0 的链路状态绝对正常,1000 Mbps 全双工。

[44.278534] igb:eth1 NIC 链路处于 1000 Mbps 全双工状态,流量控制:RX/TX

[44.573636]bonding:bond0:接口 eth1 的链路状态绝对正常,1000 Mbps 全双工。

接收方主机有此网卡:

[16.964486] e1000e:eth0 NIC 链路处于 100 Mbps 全双工状态,流量控制:无

我现在的最大传输速度是 11 MB/s。我想知道,我需要做什么才能提高传输速度?升级接收方网卡?

谢谢!

答案1

接收方正在连接速度仅为 100 Mb/s:

e1000e:eth0 NIC 链接已启动100 Mbps全双工,流量控制:无

这相当于最大原始带宽约为 12.5 MB/s。考虑到 IP/TCP 开销后,11 MB/s 基本上就是最大接收带宽。

答案2

接收机器上最好有一张 1gig 网卡,是的,另外,我可以从标签中看到您正在使用 scp。

scp 通常不适合用于重要的数据传输,我使用它时总是遇到糟糕的性能问题

尝试 ftp(但未加密),您会清楚地注意到传输速度的重要差异。

ftp(或其他协议/程序,但不是 scp)+接收机器上至少 1000mb NIC 显然会对你有帮助

答案3

正如其他人所说,您只能获得 11Mb/秒的速度是因为接收网卡的链接速度为 100MBit,尽管该卡理论上可以处理 1GBit。

我能想到的唯一可能原因是网卡连接到 100MBit 交换机,或者网卡配置为自动协商速度,但协商的速度错误。在这种情况下,您应该能够强制网卡以 1GBit 运行。

按照目前的传输速率,传输 15Tb 大约需要 15 天(http://www.thecloudcalculator.com/calculators/file-transfer.html)。

使用接收端 1GBit 连接,仅需要大约 1.5 天。

答案4

尽管接收接口并未以最大速度运行,但您传输的数据接近其极限。您的交换机能处理这种速度吗?

您的瓶颈可能是您读取或写入磁盘的速度,也可能是网络瓶颈。几个问题:

  • 您如何传输数据?(磁盘映像可能比单个文件更快。)
  • 您的系统上有哪些类型的磁盘?(闪存驱动器通常比硬盘更快。Raid 系统可以增加写入时间开销。接口速度通常高于读/写速度。)
  • 它们的传输速率是多少?(如果您无法以接近网络传输速率读取或写入数据,那么网络速度有多快都无关紧要。)
  • 您要传输的文件有多大?(小文件具有更多的文件系统开销。)
  • 目标文件系统是否使用日志?(除非您禁用日志,否则这会增加额外的写入开销。)
  • 您是否正在缓冲通过网络传输的数据?(缓冲允许尚未写入的数据通过网络传输。)
  • 您能并行运行多个传输吗?(如果传输在不同的磁盘上运行,您可能会获得整体传输速率。过多的并行传输会增加额外的开销,从而减慢文件移动速度。)
  • 传输流是否加密/压缩?(两者都会增加开销。压缩可以弥补网络瓶颈。)
  • 任何接口上是否存在错误?(双工不匹配可能会导致问题。)
  • 网卡/交换机端口是否以满负荷/高速运行?(如果网络上的任何设备以满负荷运行,就会成为瓶颈。如果它们没有全速运行,则会降低可用的吞吐量。)

正如我在评论中指出的那样,接收系统的以太网卡似乎以最大速度的十分之一运行。您实现的传输速率接近当前网卡速度下不进行压缩时可实现的最大传输速率。

一方面,以守护进程模式运行 rsync 可能比使用 SSH 进行隧道传输提供更好的性能。以守护进程模式运行 rsync 存在安全隐患。

相关内容