WSFC2016 SMB多通道与网络调校

简介:

   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通信为依据。


一个典型的架构如下


d1beff0f33974749c0ae28b01b137352.png

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


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


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

05245a5fd2acd41a6a5565449456b044.png


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


Cluster1 900

Cluster2 910

MGMT1 10200

MGMT2 10300


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


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


e240ef047c98cc6409778ddf00b2a52d.png



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


实验环境

9d544b81b3837ab09659a41e2f33d0b5.png

当前SOFS群集已经配置完成

2017-11-23_095251.png

SOFS群集角色已配置完成

2017-11-23_095910.png


群集网络设置如下


2017-11-23_095300.png

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

589f1bd07d10c49647d9456b18af02d8.png


ca2f9dc194e26cebcddc97f194d8dd6e.png

禁用SMB多通道功能

28450dec5cbbc278806aef15f7e1ecfd.png

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

e6e79368ced3f7833d9827f7129a2ae3.png


d881143fe636fe8a79e7aeae3a9bcfb6.png

再次启用SMB多通道功能

432df6e7cf8118bfead06e6771ea660b.png

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

142041da2e43d6e12e06df52ff5e1c7b.png

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

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

6b7c507f28c6e978905970324ded46a2.png

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


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

2017-11-23_095544.png

2017-11-23_095636.png

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

2017-11-23_095816.png

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

2017-11-23_100115.png

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

2017-11-21_213640.png

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


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

2017-11-21_212700.png

创建SMB多通道限制策略

New-SmbMultichannelConstraint -ServerName wisdom -InterfaceIndex 13,16

2017-11-23_100859.png

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

2017-11-23_100947.png


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多通道

2017-11-21_215850.png

如果在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

2017-11-23_123712.png


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

2017-11-23_124318.png

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

2017-11-23_130457.png

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

2017-11-23_132425.png

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

2017-11-23_131939.png

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


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


2017-11-23_125525.png


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

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

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

2017-11-23_132647.png

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

2017-11-23_130749.png

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

2017-11-23_131717.png


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

2017-11-23_133256.png

通过这个参数,我们可以看出,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


相关文章
|
1月前
|
网络协议 Shell Linux
【Shell 命令集合 网络通讯 】Linux 提供SMB共享 smbd命令 使用指南
【Shell 命令集合 网络通讯 】Linux 提供SMB共享 smbd命令 使用指南
39 0
|
1月前
|
Linux Shell 网络安全
【Shell 命令集合 网络通讯 】Linux 与SMB服务器进行交互 smbclient命令 使用指南
【Shell 命令集合 网络通讯 】Linux 与SMB服务器进行交互 smbclient命令 使用指南
52 1
|
缓存 安全 网络协议
Kerberos网络身份认证协议介绍及SMB文件系统对其的支持
本文简单介绍了Kerberos网络认证协议,以及SMB文件系统对Kerberos认证的支持。
6283 1
Kerberos网络身份认证协议介绍及SMB文件系统对其的支持
|
存储 缓存 Linux
SMB小传 —— SMB网络文件系统协议介绍
SMB网络文件系统协议, 全名服务器消息块(Server Message Block),曾用名CIFS(通用互联网文件系统 Common Internet File System), 公元1983年诞生于IBM[1],幼年得到英特尔和微软的照料,最终在微软的培养下成长为当今世上网络文件系统协议两极之一的存在。
17753 0
|
3月前
|
网络协议 安全 Shell
【网络协议】网络文件共享协议SMB(Server Message Block)
SMB协议允许在局域网(LAN)或广域网(WAN)上共享文件、打印机和其他资源。
48 0
|
存储 安全 网络协议
RH358提供基于文件的网络存储--提供SMB文件共享
RH358提供基于文件的网络存储--提供SMB文件共享
188 0
RH358提供基于文件的网络存储--提供SMB文件共享
|
1月前
|
机器学习/深度学习 数据采集 人工智能
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
41 0