当前位置:首页>Linux>Linux虚拟机与局域网其他机器传输数据怎么只有几十/几百KB呢???

Linux虚拟机与局域网其他机器传输数据怎么只有几十/几百KB呢???

  • 2026-09-30 23:01:12
Linux虚拟机与局域网其他机器传输数据怎么只有几十/几百KB呢???

事情是这样的,我在Windows宿主机上,通过VirtualBox构建了一个CentOS虚拟机,想用该虚拟机作为对接局域网内机器的一个跳板机。

今天从局域网一台Linux服务器上往虚拟机中拷贝一个文件时,发现速度只有可怜的几十KB,我果断停掉,重新再拷贝,速度还是慢的可怜,把rsync换成scp之后,照样不行!局域网千兆网络,速度到不了百兆,怎么也得几十MB呀,真的是惊出我一身冷汗!!!听我慢慢给大家道来。

首先给大家介绍一个linux上好用的,测服务器间网络速度、带宽、丢包率的软件 iperf3,在两台服务器间都安装该软件,如果服务器不可联网,可以在一台能联网的服务器上安装好后,将可执行文件拷贝过来直接使用也可以。

1. iperf3安装及使用

安装命令:

yum install -y iperf3

在目标服务器上运行:

iperf3 -s

在虚拟机上运行:

iperf3 -c target_ip -P 4
  • -c,--client
  • -P,--parallel 4,同时建立 4 条 TCP 连接一起测速,目的是把带宽跑满,才能测试出真实的最大带宽
  • -R,--reverse,测试反向流量(服务端 → 客户端)

2. iperf3测速

用iperf3测试虚拟机与目标服务器的传输速度,本次测试使用的是单线程(-P 1),结果如下,发送(sender)速度为 366/8 ≈ 46KB/s,接收(receiver)速度 286/8 ≈ 36KB/s,这个速度对于局域网来说肯定是不正常的,于是开始一通搜索如何解决。

先是各种调整virtualbox上虚拟机的各种参数:网络模式(使用桥接模式)、增加CPU个数、网卡控制芯片类型(改为virtio-net)、关闭宿主机防火墙等等,总之都是没有改善。

[ ID] Interval           Transfer     Bandwidth[  4]   0.00-1.00   sec  7.07 KBytes  57.9 Kbits/sec                  [  4]   1.00-2.00   sec  17.0 KBytes   139 Kbits/sec                  [  4]   2.00-3.01   sec  35.4 KBytes   287 Kbits/sec                  [  4]   3.01-4.00   sec  35.4 KBytes   292 Kbits/sec                  [  4]   4.00-5.00   sec  28.3 KBytes   232 Kbits/sec                  [  4]   5.00-6.00   sec  35.4 KBytes   289 Kbits/sec                  [  4]   6.00-7.00   sec  35.4 KBytes   290 Kbits/sec                  [  4]   7.00-8.01   sec  28.3 KBytes   229 Kbits/sec                  [  4]   8.01-9.01   sec  35.4 KBytes   290 Kbits/sec                  [  4]   9.01-10.02  sec  28.3 KBytes   231 Kbits/sec                  - - - - - - - - - - - - - - - - - - - - - - - - -[ ID] Interval           Transfer     Bandwidth       Retr[  4]   0.00-10.02  sec   366 KBytes   300 Kbits/sec  140             sender[  4]   0.00-10.02  sec   286 KBytes   234 Kbits/sec                  receiver

3. 终极解决方案

经过一番折腾,最后查到可能和这个有关:

Windows 网卡的 Offload / Checksum 功能与虚拟桥接冲突。

按照前辈们的方法,参考下图调整宿主机的网卡配置,控制面板 → 网络和共享中心 → 更改适配器设置 → 右键物理网卡 → 属性 → 配置 → 高级打开下图这个弹框:

图1. 将图中红框几个参数全部改为”关闭“状态

好了,我们再测试一遍网速,可以看到网速来到了 1.03 GBytes ,是不是正常呢?是的!这就是我们常说的千兆网卡(千兆实际就是1000 Bytes/字节)对应的速度,那换算成MB,就是 1.03*1000/8 ≈ 129 MB/s,但是我们日常用scp、rsync拷贝文件时并达不到这个速度,为什么呢?

给大家解释一下:iperf3测试的是网卡→网卡间的极限理论速度,而我们真正拷贝数据时,数据传输路径是:磁盘→内存→网络→内存→磁盘,多了两段磁盘 IO,加上数据传输中会进行一些校验,所以真实传输速度就会下降一些。

图2. 修改宿主机网卡配置后,再次测速


折腾了大半天,终于解决了,分享给大家。我做了好几台虚拟机,有些虚拟机就不存在这个问题,所以大家也未必会遇到这个问题,当大家遇到时,可以记着试试哈!要不先收藏一下吧!

都看到了这里,辛苦关注一下吧!☟☟☟

最新文章

随机文章