两台电脑文件传输速度提高到220M每秒
介绍
有些电脑硬盘满了,经常需要迁移数据,从小硬盘迁移到大硬盘。从1台机器迁移到另一台机器。
之前迁移方式一般使用移动硬盘做中转,最近又遇到文件迁移问题发现目前技术进步让网络传输文件变成了不错的选择。
记得10年前上大学的时候,网线和网卡只支持百兆网络,在学校内网中可以自建FTP服务器以10MB/S传输文件已经很惊艳了,同学之间同步文件、电影非常方便。
10年后的今天,网络已经普及到2500m甚至万兆了,两台2.5G网口电脑直连传输文件速度实测可以达到220MB/S,这已经可以在很多场景代替数据线传输了,本文主要介绍这种方式,文章最后也会探讨其他文件传输方式。
220MB/S,意味着10分钟可以传输130G文件,差不多是一台虚拟机的大小。这对服务器集群还是很有意义的,可以让集群之前文件可以任意转移,无缝扩展,连成一个整体而没有什么瓶颈,换硬盘、迁移系统都很方便。 实际使用中遇到一些坑,本文也会做解析
两台电脑直连传输文件
要实现两台电脑直连传输文件,首先需要一根网线连接两台电脑的网口,然后配置两台电脑的IP地址在同一网段,例如一台设为192.168.1.1,另一台设为192.168.1.2,子网掩码均为255.255.255.0。网关不用配置。
这里遇到第一个问题,默认网络是公共网络,想互联需要关闭防火墙。也可以将网络配置为专用网络,默认自定义IP的网络没法在网络设置里方便得设置专用网络,参考下文
https://blog.csdn.net/heiljsf/article/details/123684719
彻底解决未识别的网络、公共网络的问题
https://learn.microsoft.com/zh-cn/answers/questions/4281676/(-)
在注册表中将无法识别的网络,配置为专用网络,禁用再重启适配器即可。
之后将要传输的文件设置为共享,在运行里使用\IP访问服务端文件,可以直接复制也可以使用fastcopy做文件复制
关于fastcopy
fastcopy是文件复制最快的软件吧,在大量小文件复制中优势比较明显,这个优势对比系统自带复制,和其他文件复制软件。
它支持SMB的内网传输,不过不支持FTP。也对比了一下FTP,速度没有比SMB快。
fastcopy网上最多的版本是4.X版的,以及5.X的破解版。5以上版本支持完美校验。对比测试单个文件传输速度差不多。
遇到的问题
https://zhuanlan.zhihu.com/p/623852667
内网传输速度解析参考
2.5G内网跑不满很正常,常见的实际传输速度是220、180、150
我们的目标是220,为什么实际只有120呢,下面是解决这个问题踩的一些坑
iperf3
一开始2.5G网口传输速度只有120MB/S,远低于上限,大概一半左右。 这时候可以使用
iperf.fr这个工具进行测试网络速度
https://iperf.fr/iperf-download.php
在powershell中执行
服务端
iperf3 -s
客户端
./iperf3.exe -c 172.168.68.2 -P 4
最后得到下面结果
[SUM] 0.00-10.06 sec 2.54 GBytes 2.17 Gbits/sec receiver
发现网络连接速度是正常的,
另外可以查看网卡协商速率和MTU(参考,没用)
powershell
Get-NetAdapter | Select Name, Status, LinkSpeed
查看MTU
netsh interface ipv4 show subinterfaces
默认是 1500,可以改成 9000:
netsh interface ipv4 set subinterface "以太网" mtu=9000 store=persistent
改完两台都重启网络,再用 ping 测试:
ping 192.168.x.x -f -l 8972
如果成功说明 MTU=9000 生效。
任务管理器
Task Manager → 性能 → 以太网 → 速度曲线,
硬盘占用、CPU占用
查看瓶颈在网络还是硬盘读写、CPU
关于SMB
关闭 SMB 加密,这个经过测试没什么提升
1. 在两台电脑都用管理员身份打开 PowerShell
2. 分别运行以下命令:
Set-SmbServerConfiguration -EnableSecuritySignature $false -Force
Set-SmbClientConfiguration -EnableSecuritySignature $false -Force
3. 之后重启两台电脑(或者至少重启一次 SMB 服务)
验证是否生效:
运行:
Get-SmbServerConfiguration | Select EnableSecuritySignature
Get-SmbClientConfiguration | Select EnableSecuritySignature
重新开启加密
Set-SmbServerConfiguration -EnableSecuritySignature $true -Force
Set-SmbClientConfiguration -EnableSecuritySignature $true -Force
但是B站搜发现SMB这个东西可以做网速叠加,也就是比如电脑有两个网卡,分别连上比如交换机或者网线直连。
电脑A,B之间连了4条网线,2个网口都是2.5G,传输文件的时候可以将两个网口速度叠加到5G。
不过需要开启SMB的叠加功能,可以另外搜一下
另外SMB需要版本在3以上,以下命令参考
在 PowerShell(管理员)中执行:
Get-SmbConnection
看输出中的 “Dialect” 列,若不是 3.1.1 或 3.0.x,说明 SMB 版本太旧,可尝试启用:
Set-SmbServerConfiguration -SMB2ProtocolEnabled $true
Set-SmbServerConfiguration -SMB1ProtocolEnabled $false
然后重连共享。
关于网线
需要买超6类网线才能支持2.5G,5类和6类网线好像只支持千兆
网卡驱动(关键)
各种方法排查以后都解决不了突破120M问题,后来更新网卡驱动好了
鲁大师查看网卡型号,去对应官网下载网卡最新驱动
https://www.realtek.com/Download/List?cate_id=584
网卡配置
参考,没啥用
可在设备管理器 → 网络适配器 → 属性 → 高级 中关闭
- “Energy-Efficient Ethernet (EEE)” 关闭
- “Green Ethernet” 关闭
- Power Saving Mode
- “Interrupt Moderation” 关闭
- “Large Send Offload (IPv4/IPv6)” 开启
- “Receive Side Scaling (RSS)” 开启
- Interrupt Moderation
还有协商速度,固定到2.5G,这个改了貌似有一点提高,从120提高了150
其他方案
前面提到SMB支持网口叠加方案,可以将电脑多个网口连到同一个交换机,或者直接连接。
这里交换机可以买全2.5G口的,搜了一下就算路由器lan口只支持千兆,如果都接二级交换机也有机会协商一个2.5G的网速的。
更进一步,可以买USB转网卡的扩展,USB3理论速度在10G,usb4全功能typeC可以到40G。
USB网卡,千兆在几十,2.5G的200左右,10G的就要几百了
同样的交换机也可以换万兆的,6.700吧
wifi5,wifi6.wifi7目前感觉挺混乱的,涉及到国内的阉割。
wifi5实际网卡好像400M,支持双频的话翻倍到800M。
wifi6大概在1G,wifi7好像是2G,都挺贵的,目前看性价比还不高
USB传输到移动硬盘,机械硬盘读写速度大概100MB/S,移动硬盘壳套固态硬盘应该速度会不错,感觉瓶颈不在USB而在硬盘读写。 固态硬盘盘内复制速度大概在1GB/S以上