Windows使用MCS连接威联通NAS实现iSCSI带宽翻倍

前言

iSCSI 的 MCS(Multiple Connections per Session)是 iSCSI 协议中的一项扩展功能,允许在同一个 iSCSI 会话(session)中建立多个 TCP 连接(connection)。这与 MPIO(多路径 I/O)不同,后者是通过多个 session(会话)实现冗余和负载均衡,而 MCS 是在一个 session 内实现多连接。

背景

上文介绍了如何在存储设备和终端都有多张网卡的情况下使用SMB多通道实现SMB协议的带宽叠加,由于本人在家中的威联通NAS上启用了iSCSI目标,将百度云、Pikpak等下载软件的目的设置为远端iSCSI磁盘而非本地固态硬盘,节约了大量的下载空间。

而原先Windows只通过iSCSI发起程序建立了一条连接会话,因为当时我的磁盘没有组Raid,单条2.5G的带宽已经能跑满单块HC550的速度。而这次进行了存储改造以后,我两台NAS都组了Raid5,顺序读写的性能得到了大幅的加强,因此单条2.5G的带宽已经不能满足我的性能需求。

理论上MPIO会更适合一些,因为通过轮询多个session也能实现带宽叠加,并且提供了会话间负载均衡和冗余的功能,但是只有Windows Server支持该功能,Windows11专业版只能使用MCS进行带宽叠加,但是也够用了。

拓扑

拓扑如下图所示,本文将使用电脑的两张网卡分别对192.168.50.100与10.10.0.1两个IP建立iSCSI连接。

环境要求

  • 一台Windows主机,理论系统版本10和11都可以但必须有多网卡,本文在Windows 11 Professional版本进行操作。

  • 一台iSCSI服务器,必须有多网卡,本文以威联通NAS为例。

威联通建立iSCSI目标

进入iSCSI与光纤通道应用,选择iSCSI存储,点击创建,选择iSCSI目标。

填写目标别名,勾选允许对此目标进行集群访问

CHAP家用环境选择无CHAP即可

网络门户由于需要聚合,因此需要两张网卡都勾选。

点击应用后会要求用户创建LUN,可以根据需要将存储池剩余空间分配给LUN,如果存储池没有剩余空间使用文件LUN即可。前者性能会更好适合虚拟化环境,后者更灵活适合家用环境,按需分配,此处使用文件LUN。

LUN使用厚置备会立即占用所有空间,选择精简置备会弹性分配空间,按需选择。

LUN容量按需分配,此处选择3TB,高级设置中的区块大小选择4KB在Windows平台上性能会更好些。

至此,iSCSI目标创建完毕,并且存在可调用的LUN。

使用Windows iSCSI发起程序连接LUN并启用MCS功能

点击左下角Windows自带搜索,搜索iSCSI,选择iSCSI发起程序。

选择发现,添加发现门户,地址填写目标NAS的两个IP地址即可。

此时在目标中点击刷新,应当能在已发现的目标中看到我们的iSCSI目标。

点击连接,不要勾选启用多路径,点击高级,在连接方式中指定本地适配器,发起程序IP和目标门户IP,如果配置了校验和与CHAP也需要如实填写。

此时,iSCSI目标应该已经被成功连接上,先不急着格式化,选择已连接上的iSCSI目标,并点击下方的属性。

点击最下方的MCS,开始多连接会话配置。

MCS策略保持默认的协商会议也就是轮询,点击下方的添加,点击高级,将另一个网卡作为发起程序并向同网段的目标门户发起连接会话。

此时该会话应当有两个连接,点击应用并确定保持配置。

进入磁盘管理,格式化磁盘,即可得到一个驱动器,格式化步骤不详细说了,和一般磁盘一致。

速率测试

实测下载速度基本都能在450MB/s,并且能观察到双网卡都在工作传输数据。

但是通过Windows管理器上传文件速度波动比较大,上传速度经常会只有几十M,但使用百度云等下载软件写入速度又比较正常,该问题暂时不确定是什么问题导致的。