存儲複製是Windows Server 2016中新增的一項功能,它是Windows Server上面原生自帶的塊級別複製技術,能夠實現分區對分區,單機對單機,延伸羣集,跨羣集複製等災備場景的複製,幫助組織更好的提升業務連續性,存儲複製技術實現爲非對稱存儲無關性,在單機對單機,以及羣集架構中,各節點可分別鏈接各自存儲。html
存儲複製技術的主要技術特色shell
使用SMB 3.1.1通信協議數據庫
支持同步複製與非同步複製安全
複製時會須要日誌磁盤與數據磁盤,數據先寫入日誌磁盤,再Commit數據磁盤服務器
每次複製的最小單位爲Block網絡
存儲無相關性,節點底層能夠是任何存儲結構架構
支持固定式磁盤,最新版本的Server 2016數據中心版,已經支持精簡置備磁盤app
複製過程存在主備關係,主複製分區可讀寫,備複製分區不可讀寫,暫未支持備只讀模式
異步
使用數據包簽名,AES-128-GCM全數據加密等安全技術,存儲複製過程使用Kerberos AES256進行節點間的全部身份驗證ide
事實上,存儲複製實際上是工做在Windows Storage Stack ,Partition Manager之上,Volume Manager之下的一個磁盤過濾器驅動程序,咱們都知道,分區是指存儲設備上連續的存儲區域,卷是指扇區的邏輯集合,一個卷的內部扇區可能來一個分區,或多個分區,或不一樣的磁盤,而存儲複製在分區到卷之間於又插入了一層邏輯,再公開給卷,對於上層的卷和application來講,是不知道底層作了這件事的,您依然可使用VSS技術,卷級別的Bitlocker 技術
下圖能夠進一步看到存儲的工做過程,能夠看到,存儲複製在兩個節點的Partition Manager之上,Volume Manager之下完成
經過這樣的架構,咱們就能夠看出,存儲複製和其它Windows上面的複製技術的不一樣
它是基於塊的複製,它插入在分區之上卷之下的區域,因此不知道文件的概念,不知道它們被使用,也不會像DFS同樣,會care文件是否是在被使用
它只關心寫入IO,能夠被用於CSVFS,NTFS和ReFS
它不是基於檢查點,而是連續複製,因此變化的增量每每遠低於基於快照的產品
它在分區層上運行,所以能夠複製由Windows Server或備份軟件建立的全部VSS快照
老王點評:
存儲複製技術,能夠說是一項廣大ITpro一直期待的技術,以前版本的Windows Server中一直沒有什麼很好的複製技術能夠被用於虛擬化,私有云的場景,DFS只能複製關閉的文件,因此不少場景並不能使用它,新的存儲複製技術能夠說是一大亮點,一個很典型的場景,若是一個企業要實現一套高可用羣集架構,這套架構多是異地的,可是又沒有錢實現設備級別的存儲複製,只好使用第三方的產品實現存儲複製,公開給羣集,例如Starwind或者Datakeeper等產品,主機級別實現軟件虛擬的存儲複製,公開給羣集,如今有了存儲複製技術,咱們直接使用微軟原生自帶的就能夠實現經濟實惠的窮人版的存儲複製,存儲複製技術的兩點還在於,它的平臺無關性,硬件無關性,存儲技術實現爲OS層面的一個技術,只要你有Windows Server 2016數據中心版,就可使用這項技術,那麼這就好玩啦,能夠是在咱們本地機房裏面玩,私有云裏面玩,公有云裏面玩,混合雲場景玩,只要有OS能夠,還很差說?硬件無關性,存儲複製並無對節點底層存儲作限制,能夠是本地SCSI/SATA,ISCSI,Share SAS ,SAN,對於單機對單機,以及羣集場景,您還能夠一方使用ISCSI,一方使用SAN,只要保證數據磁盤大小,日誌磁盤大小一致便可
存儲複製技術的四種使用場景
單機分區對分區
能夠實現針對於單機Server上面分區對分區級別的複製,複製協議使用SMB,實際應用場景很少,可以使用磁盤鏡像,存儲空間等技術替代
單機對單機
這種場景有必定的使用意義,能夠幫助兩個相同地域或不一樣地域的節點,在沒有羣集的狀況下實現基於塊級別的存儲複製
單機對單機複製的技術特色:需手動故障轉移,需使用Powershell建立維護,存儲無關性,支援同步複製或非同步複製,後面老王會介紹二者區別
延伸羣集
延伸羣集便是指,實現了存儲雙活的羣集,避免了存儲在單一站點,站點宕機存儲失聯的問題,以前老王在多站點與災難恢復篇曾經提到這點,在以前咱們僅能用第三方軟件或設備實現羣集存儲的複製,如今原生自帶存儲複製和WSFC完美融合,實現高可用+災難恢復。
延伸羣集的技術特色:GUI圖形界面管理 ,僅支持同步複製(確保羣集數據一致性),存儲無關性,全自動故障轉移
跨羣集複製
實現爲兩座不一樣的Cluster之間進行復制,這種場景在國內應該並很少見,老王能想到的是場景,大概可能主要是一套災備羣集,maybe有一套很重要的羣集系統,須要對羣集自己和羣集數據都進行災備,因而就原模原樣又搭建了一套羣集,平時不對外,數據實時複製到存儲,一旦主羣集壞掉或數據丟失,災備羣集馬上啓動。
跨羣集複製的技術特色:需手動故障轉移,支援同步或非同步複製,存儲無關性
存儲複製同步複製工做過程
模式 | 圖 | 工做過程 |
---|---|---|
同步 零數據丟失 RPO |
1.應用程序寫入數據 2.寫入日誌磁盤並將日誌複製到遠程站點 3.遠程站點寫入日誌 4.遠程站點返回寫入結果 5.複製引擎迴應寫入完成,應用程序IO結束 t&t1:稍後將日誌刷新至數據磁盤 |
存儲複製異步複製工做過程
模式 | 圖 | 腳步 |
---|---|---|
異步 近零數據丟失 (取決於多種因素) RPO |
1.應用程序寫入數據 2.數據寫入日誌磁盤 3.複製引擎迴應寫入完成,應用程序IO結束 4.複製日誌到遠程站點 5.遠程站點寫入日誌 6.遠程站點返回寫入完成確認信息 t&t1:稍後將日誌磁盤數據刷新至數據磁盤 |
同步複製與非同步複製適用場景
同步複製適用場景
關鍵性業務應用
短距離節點(網絡延遲<5ms, 或距離<30km)
專用的網絡鏈路,高帶寬,1GB起步,建議10GB以上實現同步複製。
對於同步複製而言,一個應用程序的寫入請求,會等待日誌複製到對方節點,返回寫入成功後,IO纔會結束,所以對於應用程序的寫入會略微感到一點延遲,因此對於網絡要求會很高,若是網絡帶寬足夠高,延遲不高,那麼就不會感受到寫入延遲,利用同步複製可使您的業務應用得到崩潰一致性,發生故障時應用轉移到其餘站點繼續運行,數據不會丟失。
異步複製適用場景
非關鍵性應用,能夠接受數據出現丟失的可能性
跨城市/跨國家的部署場景
網絡帶寬有限,沒有專用網絡鏈路
在異步複製場景中,應用程序的寫入請求會被複制引擎捕獲,寫入到本地日誌磁盤後就當即嚮應用程序確認寫入完成,此模式對於應用程序而言,性能並沒有消耗,稍後複製引擎會再把數據複製到遠程站點,但此過程已經不在應用程序IO路徑中,應用程序IO已經結束,因此遠程站點的響應性和距離並不重要,但若是源站點突然宕機,而且數據的副本仍未複製到遠程站點,則存在數據丟失的風險。
存儲複製能夠整合的其它微軟技術
部署:Nano Server , SCVMM
管理:PS,WMI,羣集管理器,Honolulu,SCOM,OMS,Azure Stack,Azure ASR
整合:Hyper-V,Storage Spaces Direct ,Scale-Out File Server,SMB Multichannel,SMB Direct,重複資料刪除,ReFS,NTFS
存儲複製技術部署需求
存儲複製是Windows Server 2016數據中心版纔有的功能
複製節點需安裝File Server角色,以及存儲副本功能
Active Directory域環境,提供複製過程各節點的Kerberos驗證
複製節點至少須要兩個磁盤,一個數據磁盤,一個日誌磁盤
數據磁盤和日誌磁盤的格式必須爲GPT,不支持MBR格式磁盤
兩個數據磁盤大小與分區大小必須相同,最大 10TB
兩個日誌磁盤大小與分區大小必須相同,最少 8GB
存儲複製使用445端口(SMB - 複製傳輸協議),5445端口(iWARP SMB - 僅在使用iWARP RDMA網絡時須要),5895端口(WSManHTTP - WMI / CIM / PowerShell的管理協議)
存儲複製規劃建議
建議爲日誌磁盤使用SSD,或NVME SSD,存儲複製首先寫入數據至日誌磁盤,良好的日誌磁盤性能能夠幫助提升寫入效率
建議規劃較大的日誌空間,較大的日誌容許從較大的中斷中恢復速度更快,但會消耗空間成本。
爲同步複製場景準備可靠高速的網絡帶寬,建議1Gbps起步,最好10Gbps,同步複製場景,若是帶寬不足,將延遲應用程序的寫入請求時間
在老王看來存儲複製的主要應用場景爲單機對單機,延伸羣集,跨羣集複製這三種,老王將分別爲你們進行實做講解
本文咱們將實做單機對單機的複製
實驗場景介紹
AD
Lan:10.0.0.2 255.0.0.0
16Server1
MGMT: 10.0.0.3 255.0.0.0 DNS 10.0.0.2
SMB01:60.0.0.3 255.0.0.0
SMB02:70.0.0.3 255.0.0.0
16Server2
MGMT: 10.0.0.4 255.0.0.0 DNS 10.0.0.2
SMB01:60.0.0.4 255.0.0.0
SMB02:70.0.0.4 255.0.0.0
當前兩個節點上面各經過vmware workstation新增了一塊20GB磁盤用於數據磁盤,一塊15GB磁盤用於日誌磁盤
分別聯機爲GPT磁盤,格式化卷爲NTFS
16Server1
16Server2
兩個複製節點已經加入到域,能夠正常利用Kerberos驗證
爲各節點安裝安裝File Server角色,以及存儲副本功能
在其中一臺執行便可
Invoke-Command -Computername 16server1,16server2 -ScriptBlock{Install-WindowsFeature -Name Storage-Replica,FS-FileServer -IncludeManagementTools -restart}
在實際實現存儲功能以前,建議先針對於環境進行測試,測試過程使用Test-SRTopology命令完成測試,該命令在完成按照存儲副本功能後便可使用,測試過程將評估現有環境是否符合存儲副本要求,將檢查磁盤大小,分區大小是否一致,帶寬是否符合要求,日誌大小是否符合,複製IOPS,初始複製性能等,最終將根據評估結果,出示html報表,強烈建議執行該測試,能夠幫助咱們評估當前環境是否適用於存儲複製,性能是否能夠達到預期。
執行Test-SRTopology命令需爲磁盤產生IO纔有效果,這裏老王使用Diskspd命令產生一個IO測試
Diskspd下載地址:https://gallery.technet.microsoft.com/DiskSpd-a-robust-storage-6cd2f223
Diskspd.exe -c1m –d300 -W5 -C5 -b8k -t2 -o2 -r –w25 –h s:\test.dat
產生測試報告
md C:\SRtest
Test-SRTopology
-SourceComputerName 16server1 #來源計算機
-SourceVolumeName S: #來源數據磁盤
-SourceLogVolumeName R: #來源日誌磁盤
-DestinationComputerName 16server2 #目標計算機
-DestinationVolumeName S: #目標數據磁盤
-DestinationLogVolumeName R: #目標日誌磁盤
-DurationInMinutes 1 #指定測試時間,生產環境建議10-30分鐘
-ResultPath C:\SRTest #報告生成路徑
等待一分鐘後測試完成,打開報告路徑便可看到html格式的存儲複製測試報告
需求測試
初始同步性能測試
複製寫入IO延遲
經過此測試咱們能夠看出,當前環境是否知足存儲複製基本需求,性能是否達到預期,若是沒有達到,應該如何作出調整,須要注意,此測試必定要在數據磁盤有IO產生時纔有意義,不然不會獲得測試數據。
測試完成後,咱們就能夠開始配置建立存儲複製,配置存儲複製的命令和測試的命令差很少,只不過是多了一個存儲組的參數,由來源存儲組,複製到目標存儲組,存儲複製組的概念和Azure ASR的概念相通
New-SRPartnership
-SourceComputerName 16server1
-SourceRGName RG01
-SourceVolumeName S:
-SourceLogVolumeName R:
-DestinationComputerName 16server2
-DestinationRGName RG02
-DestinationVolumeName S:
-DestinationLogVolumeName R:
-ReplicationMode Asynchronous #設置同步模式爲異步,默認爲同步
-Seeded True #合併來源端與目的端數據磁盤的數據,默認爲false,即來源端始終覆蓋目的端
-LogSizeInBytes 12GB #設置Log文件大小
-Verbose
打開16server2能夠看到數據磁盤S,成爲備磁盤,再也不可用,正如咱們前面說過的這樣,目前存儲複製只能是主備架構,主能夠讀寫,目標備不可讀寫。
最新版本的Windows Server 2016 1709版本新增了測試存儲副本的功能,能夠幫助咱們測試數據有沒有獲得正常的複製
首先在主數據磁盤產生數據
要使用存儲副本的測試故障轉移功能,您須要有一個未使用的NTFS或ReFS格式的卷,掛載到目標節點,且目前沒有參與存儲複製,測試過程能夠暫時掛載複製存儲的快照以用於測試或備份目的
#掛載當前備複製節點16server2的數據磁盤至K盤
Mount-SRDestination -Name RG2 -Computername 16server2 -TemporaryPath K:\
#移除測試故障轉移快照並放棄更改
Dismount-SRDestination -Name RG2 -Computername 16server2
監視存儲複製情況
命令查看
Get-SRPartnership
顯示覆制方向
來源服務器 -> 目標服務器
來源複製組 ->目的複製組
Get-SRgroup
顯示覆制組信息,其中主要關注Replication Status,該屬性爲Relicating說明正在複製,InitialBlockCopy說明還在初始複製,若是出現error字樣說明當前出現沒法執行復制
(Get-SRGroup).Replicas
顯示同一複製組內各分區複製狀態,每個複製組能夠複製兩個以上的分區,經過此命令能夠顯示全部分區的複製狀態
關於存儲複製的日誌,能夠經過事件查看器看到,設計爲兩個通道,Admin與Operational
位於應用程序和服務日誌 - Windows - StorageReplica
存儲複製性能計數器,若是有SCOM 可使用SCOM收集性能計數器指針,或編寫MP包進行監視,也可整合OMS,到雲端展現。
Storage Replica Partition I/O Statistics
Storage Replica Statistics
在單機對單機,或跨羣集複製時,不支持自動化的故障轉移,所以一旦節點宕機,須要手動切換複製,手動切換複製,其實就所謂的反向複製,咱們從新切換,由可用的一方爲主節點,提供讀寫功能。
計劃內故障轉移
刷新主節點複製組日誌至數據磁盤,防止數據丟失
Sync-SRGroup -Name RG01 -Force
反向複製命令
Set-SRPartnership -NewSourceComputerName 16server2 -SourceRGName RG2 -DestinationComputerName 16server1 -DestinationRGName RG1
執行反向複製完成後,當前數據在16server2可讀寫,能夠看到咱們以前複製過來的數據
若是是在計劃外災難恢復場景,單機對單機,主服務器突然斷電宕機,能夠在備節點使用這條命令執行強制故障轉移,此命令將備節點提高爲主,原主節點恢復後也能夠再改變方向,反向複製回去
Set-SRPartnership -NewSourceComputerName 16server2 -SourceRGName RG2 -DestinationComputerName 16server1 -DestinationRGName RG1
若是是備服務器突然宕機則不會對複製產生影響,主服務器仍然能夠正常執行讀寫,等待備服務器恢復正常,再將數據進行同步
存儲複製平常管理操做
刪除複製
#刪除存儲複製關係,其中一個節點執行便可
Get-SRPartnership | Remove-SRPartnership -Force
#刪除複製組,需在各節點執行
16server1
16server2
磁盤分別釋放給各節點,每一個節點的磁盤均可以看到數據
16server1
16server2
管理受權
默認狀況下存儲複製服務器本地管理員具有管理存儲複製權限,能夠經過委派普通用戶,而不須要本地管理員權限
Grant-SRDelegation -UserName oa\mikewang
限制存儲複製網卡
默認狀況下存儲複製會盡量使用全部可用通訊的網卡進行存儲複製,咱們能夠指定使用指定網卡完成存儲複製流量
Get-NetAdapter 獲取各節點網卡index信息
建立存儲複製網絡限制策略
Set-SRNetworkConstraint -SourceComputerName 16server1 -SourceRGName RG01 -SourceNWInterface 11,13 -DestinationComputerName 16server2 -DestinationNWInterface 10,12 -DestinationRGName RG02
各節點刷新SMB多通道鏈接
各節點獲取SMB多通道-存儲複製專用鏈路
限制存儲複製帶寬使用
建立SMB帶寬限制
Set-SmbBandwidthLimit -Category StorageReplication -BytesPerSecond 50MB
查看SMB帶寬限制
Get-SmbBandwidthLimit -Category StorageReplication
刪除SMB帶寬限制
Remove-SmbBandwidthLimit -Category StorageReplication
刪除複製後沒法再次配置複製
刪除全部孤立的Storage Replica分區數據庫並從新裝入全部分區(單機一招爽)
Clear-SRMetadata -AllPartitions
刪除全部孤立的Storage Replica日誌數據
Clear-SRMetadata -AllLogs
刪除全部孤立的故障轉移羣集配置數據
Clear-SRMetadata -AllConfiguration (羣集一招爽)
刪除單個複製組元數據
Clear-SRMetadata -Name RG01 -Logs -Partition