SMB多通道是微软Windows Server 2012时新增的一项功能,微软SMB3.0协议的一部分,主要用于SMB文件传输时,检测到多张可通信网卡,自动使用多张网卡进行传输,提高吞吐量,链路容错。

Windows Server 2012和之前的服务器操作系统最大的一个不同点就在于,2012利用操作系统本身实现了很多原来只有硬件才能做的技术,同时又和各大硬件厂商合作,使各大硬件厂商的设备能够在微软OS上面发挥出最好的性能,例如,2012实现了原生的SMB 多通道,NIC teaming,可以和存储设备感知,实现ODX技术,等等

SMB多通道,很多人可能没有关心过,其实这是一项很好用的技术,我们不需要额外配置什么,Windows Server 2012 /Win8 之后的OS原生自带,只要你有两台机器,它们之间要进行SMB传输,机器1上面有两张网卡 192.168.1.1和192.168.2.1 ,机器二上面有两张网卡 192.168.1.2 192.168.2.2,那么SMB多通道技术就会自动聚合两站网卡的带宽,进行协议传输,一旦其中一张网卡坏掉,自动使用单条通道进行传输

通过SMB多通道,我们可以实现类似于MPIO的效果,它的优点就是自动聚合多网卡带宽,最大化利用网卡性能,自动容错,自动扩展,发现有可用通道自动加入传输。缺点就是SMB多通道,只能在SMB协议传输时有用,其它协议传输时无效,但SMB多通道技术可以和NIC teaming技术配合,SMB协议传输使用SMB多通道,其它流量使用NIC teaming

SMB多通道技术要求:

至少需要两台运行Windows Server 2012,Windows Server 2012R2或Windows 8计算机

不需要安装其他功能 - 默认情况下启用SMB Multichannel

多个可通信网络适配器

可选要求

一个或多个支持RSS的网络适配器

使用NIC Teaming配置的多个网络适配器之一

一个或多个支持远程直接内存访问(RDMA)的网络适配器

SMB多通道适用场景

多个支持RSS的网卡

此为SMB多通道典型配置,在2012之前,即便两个节点具备多张可以通讯的网卡,但是传输流量的时候也只会使用一个接口建立连接,并不会自动聚合所有接口带宽,2012开始,一旦检测到多张可通讯网卡,将自动聚合所有网卡,如果网卡支持RSS功能,则SMB为单个会话创建多个TCP / IP连接,每个接口至少有一个或多个连接,此配置使SMB能够使用可用的组合网络适配器带宽,并使得SMB客户端可以在网络适配器出现故障的情况下继续而不会中断。

多个NIC Teaming中的网卡

Windows Server 2012 R2和Windows Server 2012支持通过使用称为网卡绑定的功能将多个网络适配器合并到一个网络适配器的功能。尽管一个Teaming总是提供容错功能,但是当SMB没有SMB多通道部署时,SMB每个团队只能创建一个TCP / IP连接。此配置会导致所使用的CPU内核数量和队列带宽的最大使用量受到限制。

当使用SMB多通道部署SMB时,SMB为单个会话创建多个TCP / IP连接,以实现CPU内核之间更好的平衡并更好地利用可用带宽。NIC Teaming继续提供故障转移功能,这比单独使用SMB Multichannel更快,我们还建议使用网卡组合绑定,因为它为不依赖SMB的其他工作负载提供故障切换功能,这些工作负载无法从SMB多通道的故障切换功能中受益。

单个或多个支持RDMA的网络适配器


SMB多通道检测网络适配器的RDMA功能,这使得SMB Direct功能(SMB Direct over RDMA)成为可能,当使用SMB多通道部署SMB时,SMB检测网络适配器的RDMA能力,并为该单个会话创建多个RDMA连接,每个接口有两个RDMA连接,通过此配置,SMB可以利用RDMA支持的网络适配器提供的高吞吐量,低延迟和低CPU利用率,当您使用多个RDMA接口时,它还提供容错功能。

RDMA技术在大型数据传输时性能提升特别明显,在2012R2时,这项技术并不支持NIC teaming,因此如果您想要获得SMB Direct技术,在2012时代,只有选择SMB多通道+RDMA,2016时代起,支持融合网络架构能够获得RDMA技术。

简单介绍完SMB多通道技术,我们再来看下它和WSFC的关系,在WSFC 2012时×××始,群集开始支持SMB多通道技术,SMB多通道和群集,我们分为两个层面来看

  1. 存储流量

  2. CSV重定向流量

典型的场景是Hyper-V over SMB,或 SQL over SMB,前面是应用群集,后面是存储群集,应用通过SMB协议访问存储群集,利用RDMA技术和SMB多通道技术提高传输效率

在这种场景下,SMB多通道,会仅使用角色1的群集网络,即挑选启用客户端和群集通信的网络来做存储流量负载均衡使用

WSFC场景下的SMB多通道通常会遵循以下规则

1.挑选不同子网,度量值尽可能相近的群集网络进行SMB多通道汇总

2.只有网卡速率,RSS  , RDMA等参数完全相同的网卡,才会被纳入SMB多通道传输

3.如果有多个不同速率的网卡都可以使用,则SMB多通道将首选速率块的网卡建立通道

什么是度量值呢,事实上这是隐藏在群集网络内部的运作参数,界面上我们看不到它

在WSFC 2008时×××始,可以通过Powershell命令获得

Get-ClusterNetwork | ft Name, Metric, AutoMetric

WSFC 2008时代,默认情况下群集内部网络度量值为1000,群集首个发现的内部网络为1000,之后的内部网络依次向上递增100,群集以未设置网卡网关为内部网络挑选依据

所有对外网络的群集网络度量值默认为10000,之后发现的依次递增100,群集以设置网卡网关为对外网络挑选依据。

所有无群集通讯的群集网络度量值默认为10100,之后发现的依次递增100,群集以检测到网卡具备ISCSI通信为依据。

一个典型的架构如下

群集网络获得最低的度量值,因此WSFC 2008时代,CSV流量,群集数据库流量,心跳检测流量将首先通过这个网络进行

实时迁移网卡获得第二低的度量值,因此群集将会使用此网卡进行实时迁移,直接通过GUI界面选择实时迁移网卡,可覆盖此决定。

默认情况下群集网络度量值由群集根据算法自动生成,对于高端用户也可以手动进行修改

看过一些外国的设计通常针对管理网卡和群集网卡会设置备用网卡,例如这样的架构

Cluster1 900

Cluster2 910

MGMT1 10200

MGMT2 10300

这样设计的一个好处是,可以防止一旦群集功能或管理功能网卡坏掉,去使用其它不应该使用的网卡,事先规划出度量值网卡,到时群集会自动挑选下一度量值网卡使用

到了Windows Server 2012时代 群集网络度量值的评定发生了变化,不仅可以基于角色,还可以基于硬件功能

接下来我们将通过实际搭建一个利用SMB多通道的SOFS群集来实际看下效果

实验环境

当前SOFS群集已经配置完成

SOFS群集角色已配置完成

群集网络设置如下

默认情况下SMB多通道已启用,可以看到,当我们把文件在两个节点间互相拷贝时,调用了所有网卡

禁用SMB多通道功能

再次拷贝文件,发现已经没有了SMB多通道,只会调用一块网卡进行拷贝。

再次启用SMB多通道功能

拷贝过程重新调用所有网卡

查看群集网络度量值,发现不太标准,并不是我们想要的,CLUS网卡度量值没有是最低,CLUS MGMET SMB02 度量值过于接近,容易产生负载均衡

重新定义度量值 CLUS3000  ,SMB01为50000 ,SMB02为50001 ,MGMET为70000。规划控制SMB多通道只在SMB01 SMB02网络传输

上面我们在SOFS群集内部中查看了SMB多通道的效果,下面我们安装hyper-v群集,进一步查看

当前HV01 HV02节点已经完成Hyper-V群集配置

新建虚拟机,设置存储路径为SOFS群集路径

在虚拟机所在节点查看SMB多通道,可以看到,当前HV节点通过30 40两条通道连接到SOFS存储群集节点,同时利用两张网卡的带宽,并获得了容错性。

通过查看网络配置我们可以发现 在HV群集中,网络度量值为规范,只有SMB01,SMB02网络度量值接近,其它条件也都满足,因此HV群集优先使用此两条链路进行连接

在一些情况下,可能并不会这样顺利,有时度量值计算可能不会像这样按照我们希望的来,会有一些偏差,导致其它网络,例如管理网络,实时迁移网络也和存储网络处于接近的度量值,这样就有可能会产生负载均衡,一旦您部署了SOFS群集与前端群集,发现前端群集没有使用想要的链路去连接到SOFS群集,除了修改度量值,您还可以选择手动创建SMB多通道限制策略,强制限制SMB多通道仅在我们想要的网卡上面执行

首先在前端群集,指连接到SOFS群集的HV或SQL群集,上面运行Get-NetAdapter,查看网卡index记录,记下它

创建SMB多通道限制策略

New-SmbMultichannelConstraint -ServerName wisdom -InterfaceIndex 13,16

New-SmbMultichannelConstraint -ServerName wisdom.oa.com -InterfaceIndex 13,16

ServerName的的地方建议输入SOFS VCO名称及FQDN名称,这样,凡是HV群集连接到SOFS群集的这个名称,都仅会调用到我们指定的网卡,来完成SMB多通道

此设置需在HV群集 或 SQL群集 的每个节点上面进行设置

需要注意:SMB多通道限制策略,只有在网卡已满足SMB多通道要求的情况下才有意义,例如,三块网卡,速率,RSS,RDMA参数相同,度量值也接近,但是你不想要同时使用这三块网卡,只想使用其中两块,那么可以通过SMB多通道限制策略,如果是两块网卡,但是速率不同,创建SMB多通道限制策略无意义,因为SMB多通道必须多网卡速率相同才可以构建多条通道,速率不同的情况下,将仅使用速率高的网卡建立通道。

设置SMB多通道限制策略,主要有以下几种场景

  1. 防止存储通信淹没管理网络,希望管理网络更多的流量来做其它事情

  2. 防止CSV redirect IO流量淹没管理网络

关于CSV redirect IO流量,老王在后面会提到

到这里相信大家对于SMB多通道在WSFC群集的应用有了个初步的认识,简单来说,就是微软在SMB领域的一个创新,让大家更多的去使用它的SMB架构,我们可以部署一个SOFS,交付给前端的HV,SQL,应用使用RDMA SMB多通道技术连接到后端,获得高性能和容错性,为IT基础架构多了一种新的选择,SMB多通道在群集中也可以得到应用,WSFC 2012时代只要满足多子网群集网络,网卡速率参数相同就可以利用SMB多通道技术

SMB多通道技术在WSFC 2012群集中主要有两种应用场景

  1. 传统SMB流量,HV SQL SOFS群集本身使用SMB协议传输存储的流量,这种类型的SMB多通道,会挑选群集网络中,客户端可访问的网络

  2. CSV 重定向流量

在正常的情况下,所有一个群集中,所有节点对于CSV - 存储,都是直接访问IO,一个写入请求直接通过CSV写入到存储,此流量成为南北向流量,还有一种东西向流量,假设群集中的单个节点失去到存储的访问资格,即是说该节点到链路出现问题,那么CSV卷就会进入重定向模式,在这种模式下,虽然上层连接到CSV的应用不会中断,但会感觉到性能有明显的下降,因此每一次的写入IO,都会由失去资格的节点把IO重定向到可以访问存储的节点,然后该节点再完成IO请求

通常情况下CSV卷进入重定向模式,有以下几种可能

  1. 单节点失去到存储的访问资格

  2. 节点上安装了不兼容的筛选器驱动程序

  3. CSV备份,2008 R2无法创建CSV的单个同步VSS快照,导致在备份操作过程中大量重定向IO,有些存储系统会受到压力,导致2008 R2 Hyper-V群集崩溃

在2012时代,针对于CSV备份机制发生了改变,不再使用VSS备份操作,而是采用分布式快照机制来简单的备份CSV卷

因此在2012时代发生CSV重定向大概有几种可能 1.存储链路 2.节点筛选器驱动干扰 3.元数据更新

通常情况下元数据更新数据量很小,我们不需要过多关心它,筛选器驱动通常如果节点很干净也不会出现

WSFC 2012时代出现CSV重定向几率最多的还是单节点存储链路失败,或还原操作的场景

实际上CSV重定向流量是一种很危险的流量,在2008时代,很多人不知道这一点,于是就放了带宽很低的一个群集通信网络,结果发现当单节点存储链路出问题,CSV重定向模式下整个群集几乎没办法执行IO操作

在WSFC 2008 时代,对于CSV重定向流量,默认情况下,只使用度量值最低的群集网络,来完成重定向时的东西向流量

WSFC 2012时×××始,CSV重定向流量有了新的变化,不再根据度量值挑选,而是使用SMB协议,SMB多通道来完成CSV重定向时的流量传输,使用新的方式传输CSV重定向流量将比原来方式提高四倍,更好的处理CSV重定向时的性能问题,对于CSV重定向时的SMB多通道挑选,将遵循以下规则

1.SMB多通道优先于NetFT的网络优先级,以决定CSV重定向流量使用哪些子网

2.CSV重定向将仅使用内部群集网络进行SMB Multichannel,此行为可以更改为也使用外部网络修改UseClientAccessNetworksForSharedVolumes群集参数

3.SMB多通道需要相同的链路速度和特性(RSS和/或RDMA)才能同时在不同的子网上传输CSV重定向的流量

4.如果适配器不相同,SMB多通道将使用更快的适配器来传输CSV重定向的流量

5.只有在SMB Multichannel不可用或禁用的情况下,故障转移群集才会故障返回到NetFT决定使用哪个子网。然后,将应用最低度量标准逻辑,并通过最低度量子网发送CSV重定向流量

如果不希望重定向流量使用SMB多通道,仅使用单个网络,那么您可以直接关闭节点SMB多通道功能

Set-SMBClientConfiguration -EnableMultichannel $ False”

在一个理想的情况下,一个SMB架构的群集

应该是使用两种不同的SMB多通道,两种SMB多通道网络类型都按照规则执行

存储流量使用对外的网络进行SMB多通道

CSV重定向流量使用群集内部网络进行SMB多通道

如果在WSFC 2012时代遇见CSV重定向流量淹没其它网络的情况,例如还原一个备份失败,CSV重定向流量调用了CSV网卡和管理网卡,淹没了管理网卡,导致管理网卡不能访问,这时候您可以使用New-SmbMultichannelConstraint 来强制限制CSV多通道SMB多通道流量

建议 1.不要使用会产生CSV重定向的备份工具 2.规划特定的网卡来完成CSV重定向 SMB多通道流量

对于这里的场景来说,老王相信国内使用这种SMB架构用于企业生产的还是不多,而且在一个群集里面完成两组SMB多通道,也稍微有点麻烦,需要分别制定不同的SMB多通道策略,那么怎么能够实现一组SMB多通道,完成存储流量和CSV重定向流量,老王想到一种办法,修改群集的一个参数,UseClientAccessNetworksForSharedVolumes,让CSV重定向流量也可以使用对外类型的群集网络,这样的话,只要存储流量和CSV重定向网卡类型的网卡,速率,RSS ,RDMA参数相同,就可以使用SMB多通道功能,届时将是一组SMB多通道,完成存储流量和CSV重定向流量,也可以通过New-SmbMultichannelConstraint 来强制限制CSV多通道SMB多通道的网卡。

那么一个SOFS群集就是 管理网卡一张,对外存储网卡两张 心跳卡一张,对外存储网络既完成SMB存储流量多通道,也完成CSV重定向流量多通道

以上我们看了

  1. SMB多通道技术介绍

  2. SMB多通道在WSFC群集的应用及要求

  3. SMB多通道在SOFS群集内部的应用

  4. SMB多通道在SOFS群集与HV群集之间的应用

  5. SMB多通道的两种不同类型流量:存储连接流量,CSV重定向流量

在WSFC 2016时代,SMB多通道技术和群集的结合变的更为融洽,群集不再要求必须多个子网才可以在群集中做SMB多通道,现在相同子网的多张网卡也可以在群集中构建多通道,事实上,SMB多通道技术本身就支持相同子网多网卡,或不同子网多网卡,只是说2012时代的WSFC有所限制,构建网络拓扑时,相同子网的多张网卡不会被构建到群集的网络拓扑,WSFC 2016时代群集修改了这个规则,相同子网的多个网卡也可以被构建到群集网络拓扑,实现群集SMB多通道

所谓的相同子网多个网卡构建到群集网络拓扑,并不是说,相同子网,会出现多个群集网络,而是可以让一个群集网络下面包含单个子网的多个网卡

本例中共计16node1 16node2两个节点,各节点四块网卡,分别MGMET SMB01 SMB02 Heart

其中

节点1 SMB网卡30.0.0.18 30.0.0.19

节点2 SMB网卡30.0.0.0.20 30.0.0.21

在两个节点之间拷贝文件,可以看到SMB多通道调用了所有网卡

创建SMB多通道限制策略 ,在各节点分别执行

再次拷贝,发现只调用选定网卡

运行命令查看,发现当前对于HV02节点的文件拷贝,只是通过30网段的四张网卡进行

除了限制SMB默认传输流量,我们还可以限制CSV重定向流量

配置群集,允许CSV重定向流量使用外部网络  (可选,建议最好可以单独布置多张内部通信网卡)

分别新建存储各节点CSV重定向 SMB多通道限制策略

针对于CSV重定向 SMB多通道限制策略,server name不能输入常规的机器名称,根据结果来看应该是NETFT虚拟出来的一个地址,该名称可以通过下图命令获得

此策略需分别在连接存储的CSV各节点设置其它节点的名称

创建完成后,模拟CSV重定向

通过命令可以查看到,节点1由于模拟了CSV重定向模式,因此节点1对于CSV的东西向流量访问都将通过节点2完成

细心的朋友可能会发现,这里的命令和 2012时代不太一样, 2016的Get-SmbMultichannelConnection命令 多了一个 SmbInstance参数

通过这个参数,我们可以看出,SMB多通道在各个不同的类型中所使用的网卡

Default:传统SMB传输

CSV:CSV重定向

SBL:2016 SDS特定流量

SR:2016 存储复制特定流量

由于环境有限,在WSFC 2016场景中,我并没有完整的展示后端SOFS群集,前端HV群集的场景

本例我们是以一个融合群集为例

事实上如果说是前端HV群集,后端SOF群集,才是最佳的架构

在这种架构里面

SMB多通道限制策略应该这样设计

HV群集设计由那两块网卡完成存储连接SMB存储连接多通道

SOFS群集设计由那两块网卡完成CSV重定向多通道

对于SMB存储多通道只需要在HV一方设计即可,SOFS群集会检测到对方只与我开放两条通道,而自动选择两条通道去建立连接

SOFS群集直接和存储连接,承载CSV卷,因此有必要设计CSV重定向流量多通道,可以通过添加多个内部群集网卡,然后通过策略限定,或修改参数,允许CSV重定向使用对外网卡

需要注意的一点是,SMB多通道限制策略,需要输入一个ServerName名称,在完成场景下,应该是在HV或SQL各节点创建这条策略,输入名称应该SOFS的VCO和VCO FQDN名称

本例我们用于模拟测试输入的对方节点名称,实际场景是不会这样做的!

对于CSV重定向 SMB多通道的限制是特殊的,因为它的Server Name不是使用的节点名称,而是使用的奇怪的地址,这点可以通过事先模拟CSV重定向,获取到对方地址,然后创建CSV重定向的 SMB多通道限制策略

以上为WSFC 2016 SMB多通道的新功能介绍,WSFC 2016时×××始,支持群集使用单个子网不同网卡构建SMB多通道,新增SMB Instance命令,用于查看SMB多通道用途

本文转自 老收藏家 51CTO博客,原文链接:http://blog.51cto.com/wzde2012/2043510

WSFC2016 SMB多通道与网络调校相关推荐

  1. debian11安装samba(smb)协议的网络共享

    简介 SMB(Server Message Block)通信协议是微软和英特尔在1987年制定的协议,主要是作为Microsoft网络的通讯协议,它是当今世上网络文件系统协议两极之一的存在 Samba ...

  2. windows 10 smb,添加网络位置,输入的文件夹似乎无效

    在windows 10中遇到一个现象,在"添加一个网络位置"的时候,弹出"输入的文件夹似乎无效.请选择另一个",我在这里是需要连接到Linux上的smb指定目录 ...

  3. windows文件服务器高可用,通过 Windows Server 2012 构建高可用性的文件服务器

    存储与可用性概述 • Windows Server 2012 存储解决方案栈概述与简介 解决客户面临的挑战 •Windows Server 2012 如何帮助组织满足存储与可用性方面的挑战 演示 •介 ...

  4. SMB小传 —— SMB网络文件系统协议介绍

    SMB网络文件系统协议, 全名服务器消息块(Server Message Block),曾用名CIFS(通用互联网文件系统 Common Internet File System), 公元1983年诞 ...

  5. 微软的私有云存储协议SMB 3.0的多通道应用

    Repost>>>>> 鉴于之前用心写的这个博客可能比较冷僻,但是我感觉又很有用,因此放上我在Technet网络广播中针对这个题材课程以及演示下载链接,供大家参考. ht ...

  6. 管理扫描到计算机,复印机扫描到windows网络文件夹(scan to SMB)

    扫描到网络文件夹(scan to SMB) 扫描到网络文件夹是中高速机器扫描的一种常用方法.它不像sharpdesk序列号需要与硬件捆绑,理论上可以免费供局域网内几百个用户使用. 如果局域网内本身就有 ...

  7. Windows Server 2012 存储 (四) SMB 对SQL 数据库和Hyper-V的支持

    Module 2: SMB Support for SQL and Hyper-V SMB 3.0 服务器 SMB 3.0 使用网络状态持久性通过跟踪文件句柄状态和 SMB 的连接来解决无法回放操作的 ...

  8. smb服务器速度测试_通过 SMB 直通优化文件服务器的性能 | Microsoft Docs

    SMB 直通SMB Direct 04/05/2018 本文内容 适用于:Windows Server 2012 R2.Windows Server 2012.Windows Server 2016A ...

  9. 微软SMB 3.0文件共享协议新特性介绍

    SMB(*nix平台和Win NT4.0又称CIFS)协议是Windows平台标准文件共享协议.Linux平台通过samba来支持.SMB最新版本v3.0,在v2.0基础上针对WAN和分布式有改进.详 ...

最新文章

  1. python cx oracle安装_python3.6的安装及cx_oracle安装
  2. python的直接赋值不会拷贝,只相当于变量的一个别名
  3. 直接在PDF文件中改变字体的小技巧
  4. 第十六届智能车竞赛广东省线上比赛第二波来袭
  5. 小程序在输入npm命令_微信小程序使用npm包步骤
  6. 撕起来了!谁说数据少就不能用深度学习?这锅俺不背!
  7. 用神经网络分类连续与离散
  8. Linux环境 文件分割的方法
  9. BHO插件操作IE浏览器,js调用C#方法
  10. linux下的磁盘配额简介暨 linux下加挂硬盘续
  11. 36-高级特性之自定义类(1)
  12. RDS数据库全量恢复方案
  13. (可再看)深度学习学习笔记(1)
  14. i12蓝牙耳机使用(小米手机)
  15. JAVA之父----詹姆斯.高斯林
  16. 针式打印机的使用与维护
  17. 云计算革命-IT产业第三次变革,将如何影响人类社会
  18. 编程中的数学——编程遇见数学,让数学更有趣!
  19. js判断图片加载完成后再执行代码
  20. 【基于JAVA的旅游路线推荐系统-哔哩哔哩】 https://b23.tv/4STx5NI

热门文章

  1. DOMContentLoaded 与onload区别以及使用
  2. 乡下人最嘲笑城里人的16件事,无语了!
  3. COM 组件设计与应用(六)——用 ATL 写第一个组件(vc.net)
  4. 【mysql错误】用as别名 做where条件,报未知的列 1054 - Unknown column 'name111' in 'field list'...
  5. 07-09-Exchange Server 2019-配置-Outlook 2019
  6. Loader 入门【Webpack Book 翻译】
  7. Skype for Business Server 2015-03-后端服务器-0-准备
  8. L1-008.求整数段和
  9. Cento7+Nginx 之 URL重写
  10. 干货|建议初创团队起初也要构建分布式应用