SMB 多通道:两块网卡把局域网带宽叠起来
链路聚合叠不了单条传输的速度,SMB 多通道可以。前提是两边都支持,而且网口够用。
很多人做了链路聚合,发现拷贝速度还是千兆——因为聚合是按流分配的,一条 TCP 连接只走一个物理口。
想让单条 SMB 传输跑出双倍带宽,得用 SMB 多通道(SMB Multichannel)。
什么原理
SMB3 支持一条会话里开多条 TCP 连接,分别走不同的网卡。所以两块千兆网卡可以合起来跑接近 2Gbps,两块 2.5G 网卡接近 5Gbps。
和聚合的区别:
- 聚合(bonding):多个口对外是一个逻辑接口、一个 IP,多条连接分散到不同口,单条连接不加速;
- 多通道:多个口各有自己的 IP,同一条 SMB 会话同时用多个口,单条传输也加速。
前提条件
- 服务端(飞牛)和客户端(Windows/Mac)都有两个以上网口;
- 两个口在同一个子网(多数实现要求同网段),或者支持 RSS/RDMA 的配置;
- 交换机侧不能把两个口做成 LACP 聚合(会和多通道冲突);
- SMB 版本至少是 SMB3。
注意最后一条:如果交换机上做了链路聚合,多通道用不了,二选一。
飞牛侧怎么配
两个网口各配一个同网段的静态 IP,都接在同一台交换机上:
网口1: 192.168.1.100/24
网口2: 192.168.1.101/24
不要做 bonding,不要配 LACP。默认网关只留一个。
Windows 侧
- 客户端也要有两个网口,接入同一交换机;
- 两个网口都在
192.168.1.x; - 用
\\192.168.1.100\共享访问; - 在「服务器管理器 → 远程访问」或者资源监视器里能看到多条 SMB 连接。
PowerShell 查看:
Get-SmbMultichannelConnection
能看到多条连接就算生效了。
效果预期
- 单条大文件拷贝:接近两个口的带宽之和(有损耗);
- 多个客户端同时访问:本来就会分散,收益不明显;
- 小文件:受 IOPS 限制,看不出差别;
- 机械盘:可能成为瓶颈,先确认存储能跑多快。
常见的坑
交换机做了聚合:和 SMB 多通道冲突,二选一。
两个口不同网段:多数实现要求同子网,跨网段不生效。
客户端只有一个网口:只有服务端多通道,客户端侧没有,用不上。
以为能翻倍:实际受存储、CPU、协议开销限制,通常能到理论值的七八成。
无线也用:Wi-Fi 和多通道基本不兼容,别试。
值不值得
- 家里只有千兆、偶尔传文件:不值得折腾;
- 经常在 NAS 和工作站之间倒大文件:值得,收益直接;
- 多台设备同时读写:聚合或者分开走更合适。
小结
SMB 多通道解决的是单条传输跑不满多网卡的问题,聚合解决的是多客户端分流的问题。
先想清楚你要哪一种,再决定配哪个。
留言