SMB多通道是微軟Windows Server 2012時新增的一項功能,微軟SMB3.0協議的一部分,主要用於SMB文件傳輸時,檢測到多張可通訊網卡,自動使用多張網卡進行傳輸,提升吞吐量,鏈路容錯。前端
Windows Server 2012和以前的服務器操做系統最大的一個不一樣點就在於,2012利用操做系統自己實現了不少原來只有硬件才能作的技術,同時又和各大硬件廠商合做,使各大硬件廠商的設備可以在微軟OS上面發揮出最好的性能,例如,2012實現了原生的SMB 多通道,NIC teaming,能夠和存儲設備感知,實現ODX技術,等等node
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 teamingshell
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多通道和羣集,咱們分爲兩個層面來看
存儲流量
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多通道限制策略,主要有如下幾種場景
防止存儲通訊淹沒管理網絡,但願管理網絡更多的流量來作其它事情
防止CSV redirect IO流量淹沒管理網絡
關於CSV redirect IO流量,老王在後面會提到
到這裏相信你們對於SMB多通道在WSFC羣集的應用有了個初步的認識,簡單來講,就是微軟在SMB領域的一個創新,讓你們更多的去使用它的SMB架構,咱們能夠部署一個SOFS,交付給前端的HV,SQL,應用使用RDMA SMB多通道技術鏈接到後端,得到高性能和容錯性,爲IT基礎架構多了一種新的選擇,SMB多通道在羣集中也能夠獲得應用,WSFC 2012時代只要知足多子網羣集網絡,網卡速率參數相同就能夠利用SMB多通道技術
SMB多通道技術在WSFC 2012羣集中主要有兩種應用場景
傳統SMB流量,HV SQL SOFS羣集自己使用SMB協議傳輸存儲的流量,這種類型的SMB多通道,會挑選羣集網絡中,客戶端可訪問的網絡
CSV 重定向流量
在正常的狀況下,全部一個羣集中,全部節點對於CSV - 存儲,都是直接訪問IO,一個寫入請求直接經過CSV寫入到存儲,此流量成爲南北向流量,還有一種東西向流量,假設羣集中的單個節點失去到存儲的訪問資格,便是說該節點到鏈路出現問題,那麼CSV卷就會進入重定向模式,在這種模式下,雖然上層鏈接到CSV的應用不會中斷,但會感受到性能有明顯的降低,所以每一次的寫入IO,都會由失去資格的節點把IO重定向到能夠訪問存儲的節點,而後該節點再完成IO請求
一般狀況下CSV捲進入重定向模式,有如下幾種可能
單節點失去到存儲的訪問資格
節點上安裝了不兼容的篩選器驅動程序
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重定向流量多通道
以上咱們看了
SMB多通道技術介紹
SMB多通道在WSFC羣集的應用及要求
SMB多通道在SOFS羣集內部的應用
SMB多通道在SOFS羣集與HV羣集之間的應用
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多通道用途