在Windows Server 2012中使用SMB 3.0多通道

本文同步自(最佳显示效果请点击):https://zohead.com/archives/smb3-multichannel/

Windows Server 2012 系统中更新支持的 SMB 3.0 网络共享协议相对于原来的 SMB 1.0 有诸多改进,例如:RDMA 支持、Multichannel 多通道支持等等,详情请参考我之前写过的文章介绍如何在 Windows Server 2012 中使用 SMB 3.0 over RDMA:

https://zohead.com/archives/smb3-over-rdma-performance/

这里我主要关注 SMB 3.0 Multichannel 的实际效果,Multichannel 可以实现 SMB 客户端和服务器之间同时发起多个 SMB 连接(对于 SMB 1.0 和 2.0 是很大进步之一),通过在多网卡环境下使用 SMB 3.0 Multichannel 可以达到提高系统吞吐量、支持错误容忍、多通道自动配置等效果,从上面的文章中再来回顾下 SMB 3.0 的 Multichannel(多通道)需要的条件:

  • SMB 服务器和客户端计算机必须都为 Windows Server 8 或者 2012;
  • 必须都有多个网卡,网卡类型和速度需要一致,或者其中一个或多个网卡支持 RSS 或者 NIC Teaming(网卡绑定)或者 RDMA。

有一点需要说明的是 samba 新推出的 4.0 正式版本虽然提供了 SMB 3.0 协议的支持,但并不支持 Multichannel 多通道、RDMA 这些高级功能的,因此此测试暂时还只能在 Windows Server 2012 系统中做了。

测试环境:

服务器:


Intel S5500BC 服务器主板;

Intel Xeon E5506 CPU * 1;

Kingston DDR3 1066 4G 服务器内存 * 1;

Intel EXPI9402PTBLK 双千兆网卡(PCI-E x 8 插槽);

LSI MegaRAID 84016E RAID卡(PCI-E x 8 插槽);

WD WD10EVDS 1TB SATA 监控硬盘 * 16;

Windows Server 8 Beta Datacenter Build 8250 64位中文版;

 

客户端:


TYAN S7002 服务器主板;

Intel Xeon E5506 CPU * 1;

Kingston DDR3 1066 2G 服务器内存 * 1;

主板内置双千兆网卡;

Windows Server 8 Beta Datacenter Build 8250 64位中文版;

其它环境:


TP-LINK 24 口千兆交换机;

测试软件:


IBM Tivoli SANergy(测试大块文件连续读写);

测试步骤及结果:

SMB Multichannel 在 Windows Server 2012 系统中默认就是启用的,你可以分别在服务器和客户端中的 PowerShell 中运行 Get-SmbServerConfigurationGet-SmbClientConfiguration 命令查看 Multichannel 是否已经启用。

然后可以在 PowerShell 中分别运行 Get-SmbServerNetworkInterfaceGet-SmbClientNetworkInterface 命令查看是否满足多通道的条件。以我的实际测试环境为例,先看看服务器上的配置:

SMB 3.0 Multichannel服务器网卡

从图中可以看到服务器中是两个千兆网卡,两个网卡的 IP 地址在同一网段,Interface Index 为网卡的序号(后面会用到),另外会显示 RSS 和 RDMA 都是不支持的,此时表示可以使用多通道。需要说明的是如果两个网卡都是千兆的,但是一个支持 RSS,另一个不支持 RSS,SMB 3.0 Multichannel 在类似这种情况下也是不能使用的。

再来看看客户端上的网卡情况:

SMB 3.0 Multichannel客户端网卡

客户端的网卡多一些,但我们只需看网络通了的网卡(Interface 12 和 13),也是千兆网卡,两个网卡的 IP 地址也在同一网段(图中显示的是 IPv6 地址,实际也都在 192.168.1.0 网段),但两个网卡都支持 RSS,不支持 RDMA,这样多通道也是可以用的。

在服务器上建立磁盘阵列(我是建的 RAID5 哦),建立共享目录,然后在客户端上通过映射网络驱动器访问共享目录即可,由于要使用多通道,因此最好直接使用 “\\服务器主机名\共享名称” 这种形式(不要直接指定服务器上的某个 IP 地址)。

客户端中连接上共享目录之后,就可以在客户端的 PowerShell 中运行 Get-SmbMultichannelConnection 命令查看 SMB 连接是否使用了多通道:

SMB 3.0 Multichannel连接

从上图可以看到详细的 SMB 连接信息,也可以明显的得出客户端到服务器的连接已经启用了多通道(不同的客户端 IP 地址对应不同的服务端 IP 地址,从客户端和服务端的 Interface Index 网卡序号也可以看出)。另外虽然客户端网卡是支持 RSS 的,但由于服务端并不支持,因此 SMB 连接仍然未启用 RSS,当然 RDMA 就更没有启用了。

下面就可以用测试软件进行读写测试了,测试过程中可以分别看客户端和服务器上的网卡占用情况,就可以看出 SMB 3.0 多通道已经发挥作用(两个网卡都有读写产生的流量的):

SMB 3.0 Multichannel网络占用

接着就可以测试容错功能是否有用了,在读写测试过程中,拔掉客户端或服务器的一根网线,可以看到对测试过程没有影响,读写可以继续进行。由本测试可以看到,Windows Server 2012 中的 SMB 3.0 多通道基本可以实现我们需要的类似负载平衡的目的,而且多通道在一般情况下完全不需要用户进行配置,Windows 会自动选择类型和速度完全一致的网卡自动进行多通道匹配。

参考链接:

http://blogs.technet.com/b/josebda/archive/2012/06/28/the-basics-of-smb-multichannel-a-feature-of-windows-server-2012-and-smb-3-0.aspx

发表评论

电子邮件地址不会被公开。 必填项已用*标注


*