Repost》》》》》

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

http://technet.microsoft.com/zh-cn/hh763481.aspx

SMB简介

服务器消息块 (SMB) 协议是微软开发实践的网络文件共享协议,通过该协议可以让应用程序读取和写入文件以及从计算机网络中的服务器程序请求服务。
SMB 协议可在其 TCP/IP 协议或其他网络协议上使用。使用 SMB 协议时,应用程序(或应用程序用户)可访问远程服务器上的文件或其他资源。这让应用程序可以读取、创建和更新远程服务器上的文件。它还可以与任何设置为接收 SMB 客户端请求的服务器程序通信。
简单来说,SMB与基于TCP/IP网络实现块存储的iSCSI或FCoE存储协议不同的是,它是一种高效文件访问协议,类似的协议是NFS协议,这种协议被广泛的应用在NAS存储中;通过类似协议组织存储具有低成本和极大的配置灵活性和可扩展性,尤其是大型的集群环境和云环境。对于共享型存储的环境,你不再需要为每个连接端配置昂贵的HBA卡或FCoE卡,更不必特意构建昂贵的光纤连接,而且对于存储配置变更你也不必为了一个存储组的配置反复修改上联端的WWN,避免的复杂造成出错的可能性等等。
 
因此在Windows Server 2012 引入了全新 3.0 版的 SMB 协议,增加了对虚拟化以及SQL数据库的支持并增加了一系列的性能增强和特性后,让这个协议和应用更有吸引力更有应用的场景;其中些核心的特×××如下:
  • SMB 高可用透明故障转移
  • SMB 高可用横向扩展
  • SMB 多通道
  • SMB RDMA直连方式
  • 用于服务器应用程序的性能计数器
  • 性能优化
  • SMB-专用 Windows PowerShell cmdlet
  • SMB 加密
  • SMB 目录租用
这其中其实有很多非常有特色的功能,例如通过过透明故障转移和横向扩展,多通道等功能,近乎就是用Windows Server 2012“软件定义存储”方式实现了一个高可用横向扩展的存储集群;今天我们就来探讨一下其中多通道这个必不可少的通道端的功能。
 

SMB多通道简介

关于多通道技术,类似于在块存储中的多路径MPIO技术,那么既然是SMB可以基于以太网络实现,可以简单理解就是通过端到端的多个网络适配器组成的多条通道组合后实现:
  • 整体吞吐能力提高。如果单纯增加主机节点固然可以提高处理能力,但单节点的吞吐往往依赖于其IO系统的能力,可以并行传输的多通道功能显然是必不可少的。
  • 网络故障转移能力实现。某个网卡出现故障时其他网卡可以透明接管实现故障转移。
微软的SMB 3.0版本多通道技术还可以实现网络可用路径的自动识别和自动添加,这样可以大大的简化管理的难度。
 

前提条件

实现多通道特性需要以下两个条件:
1. 需要服务器端为Windows Server 2012, SMB客户端为Windows Server 2012 或Windows 8。
2. 需要多块最好为同一规格网络适配器(可以不同品牌)。例如:可以都为千兆网卡或都为万兆, 条件好的还可以考虑都采用具有RDMA功能的万兆融合卡或Infiniband卡。
 

配置方法

对于Windows Server 2012和Windows 8的操作系统,其实并不需要额外配置, SMB多通道功能默认是启用的,作为SMB客户端来说会自动判断SMB会话状态和版本,如果为3.0则会自动像服务器端申请可以参与多通道的适配器列表,会根据性能以及是否为同一规格自动协商用于多通道的适配器组。
一般来说并不需要单独启用或禁用多通道功能,不过若果你确实希望屏蔽或启用该功能,可以通过Powershell CMDLET实现,并且通过查看SMB配置确认多通道的开关。

服务器端:

禁用启用查看
Set-SmbServerConfiguration -EnableMultiChannel $false
Set-SmbServerConfiguration -EnableMultiChannel $true
Get-SmbServerConfiguration | Select-Object EnableMultiChannel

 

 

 

 

客户端:

禁用启用查看
Set-SmbClientConfiguration -EnableMultiChannel $false
Set-SmbClientConfiguration -EnableMultiChannel $true
Get-SmbClientConfiguration | Select-Object EnableMultiChannel

 

常见应用场景

常用的多通道连接有大致以下几种方式。
1. 单个接收端扩展技术网卡
这种配置需要在服务器端和客户端配置一块10GbE NIC。如果没有SMB多通道技术,如果在服务器端和客户端建立一个SMB会话,SMB只能使用单个TCP/IP连接,因此只有一个CPU核心参与。如果有很多小的IO操作,又是10GbE网络,那么CPU核心很可能成为封包解包的性能瓶颈。所以,现在大多数网卡都支持一种被称为接收端扩展技术(RSS),这项技术允许多个CPU核心处理多个连接,注意如果没有多通道技术对于如下图的单连接,RSS也无能为力,因此必须借助多通道技术才可以完全利用RSS的能力,SMB会为单个会话建立多个TCP/IP连接,这样可以充分调度多个CPU核心的能力因此可以非常有效的避免由于小IO操作造成的CPU端的性能瓶颈。
2. 多网卡多SMB通道方式
如下图所示,如果不启用SMB多通道模式,尽管在服务器端和客户端有多个网络连接,仍然只能通过一个物理网络连接并且只有一个会话,这样即损失了性能又无法实现高可用性。有利多通道技术,SMB会对每个会话建立多个TCP/IP连接,这样不但可以充分提高整个链路的吞吐而且可以提供高可用的功能。
 
3. 多通道和网络聚合组合模式
也许大家看过之前我写的一篇关于Windows Server 2012网卡汇聚的功能,这个功能当然也是在网络层提供高可用和负载均衡能力的,对于非SMB的流量这个功能是有灰常效果的,可是在SMB应用中,如果没有多通道的帮助,如下图所示,还是只有一个NIC一个CPU核心会参与SMB通信,这样除了可用性那么负载均衡是无法是真正实现的。所以在已经做了网卡聚合的网络上,我们仍然可以通过启用SMB的多通道功能,进一步平衡负载,不但可以使用所有的网络适配器,并且可以对于单个会话可以建立多个TCP/IP连接,这样多个CPU核心也被调用,如何?可用性和带宽都可以最大化得到使用,并且对于SMB和非SMB流量都可以得到优化。
 
 

常用命令

通常对于SMB的多通道配置是主机环境自动调节的,如果你发现SMB的功能没有如约兑现,可以做一些简单的初步判断:
1. 首先检查网卡的配置信息,判断网卡的规格速率,是否启用了RSS等,需要在SMB的服务器端和客户端分别运行。
Get-NetAdapter
Get-NetAdapterAdvancedProperty
Get-NetAdapterRSS
Get-NetAdapterHardwareInfo

 

 
 
2. 检查SMB的配置信息,确认多通道功能没有禁用,确认SMB已经准确识别网络适配器。
在SMB客户端的Powershell中通过
Get-SmbClientConfiguration | Select EnableMultichannel
Get-SmbClientNetworkInterface

在SMB服务器端的Powershell中通过
Get-SmbServerConfiguration | Select EnableMultichannel
Get-SmbServerNetworkInterface

 
3. 确认SMB的会话连接
在SMB客户端的Powershell中运行
Get-SmbConnection
可以确认会话建立状态和版本等信息。
Get-SmbMultichannelConnection
基本上是个人最喜欢的确认多通道会话连接的命令,如果你尝试查看多通道的自动屏蔽和加入失效网络的状态,这是一个非常有效的命令。
(你可以拷贝一个大的文件或者通过SQLIO等工具持续的创建一些底层IO,在此期间启用禁用网卡并通过这个命令查看多通道的状态)
 

常见问题

1. 网卡都符合要求但就是无法加入到SMB的多通道中?
在我的测试环境中,我发现如果在Windows Server 2012中启用了Hyper-V角色,并且Hyper-V虚拟交换机为来宾虚拟机或管理网络设置了上行端口所用网络适配器,那么该适配器是不参与到SMB多通道网络中的。这是因为为了隔离存储网络和虚拟机网络,我理解SMB的角色本来和Hyper-V的角色要最好分开,例如你建立一个SMB的存储集群也不能回环支持同时在其上构建一个Hyper-V的集群,因此Hyper-V和SMB最好不要放到一起。
 
2. 单网络适配器可支持的SMB连接数
SMB多通道对于单网络适配器支持的连接数不同,对于支持RSS的网卡(根据我的理解10GbE)单会话支持4个TCP/IP连接,其他网卡支持1个。官方说法每个服务器客户端组最多支持8个
Get-SmbClientConfiguration | select maximumconnnectioncountperserver
(我怎么在我的环境看到默认是32个?)
当然这个值也是可以修改的:
Set-SmbClientConfiguration –MaximumConnectionCountPerServer <n>
 

3. 网卡支持RSS可是千兆网卡,怎么看到SMB多通道连接对于一块网卡始终是1个连接?
对于千兆卡来说无论是否支持并启用了RSS,对于CPU来说都不会产生很大的负载需要用到多线程分布,因此除非你在底层启用了网卡聚合,对于单网卡就是一个连接。
 
4. 怎样限定多通道仅使用某个或某几个网络适配器?
首先,通常并不建议在使用的SMB的环境中启用限制功能,如果你确实需要,可以通过客户端打开Powershell利用CMDLET实现。
例如,在我的环境中,如果希望对Deepdivesvr03这台SMB服务器在客户端限制仅仅通过4块网络适配器中的2个(网卡索引14,15)实现多通道。
New-SmbMultichannelConstraint –ServerName Deepdivesvr03 -InterfaceIndex 14, 15
 

5. SMB多通道技术的负载均衡算法是什么?
据我所知,是根据参与多通道的物理网络适配器的动态队列深度来进行负载均衡的,因此并不是通过简单的RR策略。

转载于:https://blog.51cto.com/3387405/1118659

微软的私有云存储协议SMB 3.0的多通道应用相关推荐

  1. 应对各类网盘关闭最有效方法以及使用Aria2+KodExplorer轻松搭建私有云存储

    网盘在前几年打起了容量战,先后不断增加容量,让我们普通人感到占了大便宜,存片存游戏存音乐,后来开始加强管理,也就出现一批网盘关闭潮.实际上国内的不少网盘所给的容量华而不实,因为很少有人可以存满几个T的 ...

  2. 腾讯云首推私有云存储,意欲抢占更多用户市场

    腾讯云首推私有云存储,意欲抢占更多用户市场 8月23日,腾讯云于2017腾讯"云+未来"峰会北京站,面向全球用户,重磅推出了智能云存储新品系列.其中,为给各行业领域提供更多能满足其 ...

  3. Dropbox再曝泄密危机 亚信安全建议企业用户部署安全的私有云存储

    9月2日消息,公有云脆弱的安全性再次成为风口浪尖上的热门话题.近日,美国云存储服务公司Dropbox确认,2012年时发现并披露的一次数据泄露事故影响要比之前预计的更严重,此次数据泄露事故影响范围超过 ...

  4. 私有云存储 linux,搭建nextcloud私有云存储网盘

    本文将要为您介绍的是搭建nextcloud私有云存储网盘,具体完成步骤: 简介: 搭建个人云存储一般会想到ownCloud,堪称是自建云存储服务的经典.而Nextcloud是ownCloud原开发团队 ...

  5. 利用Bdrive打造个人私有云存储解决方案

    Bdrive 一款私有云储存软件,可以自己方便的在 Mac/Windows 下架设服务器,并可以通过 PC.Mac.iOS.Android 跨平台使用.以下简单介绍一下利用Bdrive来完成个人私有云 ...

  6. 医院私有云存储的规划、配置、调优工程实例

    一.项目背景介绍 二.建设目标 三.IBM 解决方案 3.1 方案架构 3.1.1 物理拓扑图 3.1.2 逻辑图 3.1.3 存储规划建议 3.2 方案特点 3.2.1 实现存储资源池化 3.2.2 ...

  7. 给大家介绍一款校园网盘软件,孜创校园网盘软件,搭建学校私有云存储

    一.孜创校园网盘简介   http://www.schoolzic.cn/ 创建学校自己的私有云平台(教学资源库管理平台\校园网盘) 把学校的教学文件.档案文件.备课文件.图片.视频等所有文档进行统一 ...

  8. ArcGIS Server 注册私有云存储并发布影像切片服务

    通过本地发布影像切片服务,但切片缓存在私有云存储中 环境配置 ArcGIS Server 1071 ArcGIS desktop1071或Arc GIS Pro 2.4 S3私有云存储 注册私有云存储 ...

  9. 燕麦私有云,应用最广泛的私有云存储方案

    每当提及燕麦企业云盘,大家很自然的会联想到燕麦片这一绿色.健康且富含营养的食品.其实此燕麦非彼燕麦,燕麦企业云盘(OATOS企业网盘)是基于云计算技术,面向政企用户的云端文件管理与协同工作平台.燕麦私 ...

最新文章

  1. hadoop cdh 4.5的安装配置
  2. java8 注解: @FunctionalInterface (函数式接口)
  3. LeetCode 1796. 字符串中第二大的数字
  4. springcloud不使用数据库微服务启动异常解决
  5. mysql定时发送慢日志到邮件
  6. P1541 乌龟棋 线性dp
  7. ERROR: Could not create or update '/usr/local/nagios/var/nagios.configtest'
  8. 必须掌握的30种SQL语句优化
  9. MindMaster for Mac(亿图思维导图)
  10. DevOps平台的“精益创业”之路
  11. 帝都机器人便利店_我把北京80%的便利店吃了个遍!吐血整理出这份帝都便利店大攻略!...
  12. 双通道5.2GSPS(或单通道10.4GSPS)射频采样FMC+模块
  13. 凸包旋转卡壳(andrew)
  14. window10下WSL使用Ubuntu报错: System has not been booted with systemd as init system (PID 1). Can‘t operat
  15. 怎么给视频换背景?只需4步,即可轻松换背景
  16. 视频尺寸修改的小方法,同时处理多个视频,新媒体必备
  17. 疫情下的在线教育行业未来发展
  18. 架构集一---语音连麦聊天室实现方案分析
  19. 未来的搜索大战:生态能力成为胜负手
  20. Fabric实战(四)-多机部署fabric网络-solo

热门文章

  1. java 转义_JAVA的转义字符
  2. Oracle复制解决方案
  3. 前端开发的一些插件汇总
  4. ss-panel v3前端与ss-manyuser后端配置supervisord守护完整教程
  5. mysql sql decode函数用法_Sql decode sign when length concat 用法详述
  6. cocos2d-lua取消绑定事件
  7. python123怎么绑定慕课_python学习30——绑定方法与非绑定方法
  8. docker 彻底卸载
  9. java fetch_Fetch使用
  10. Python实现数据库备份与恢复(定时手动)