1. 程式人生 > >Windows Server 2016存儲復制淺談

Windows Server 2016存儲復制淺談

存儲復制 storagereplica 2016存儲復制

存儲復制是Windows Server 2016中新增的一項功能,它是Windows Server上面原生自帶的塊級別復制技術,可以實現分區對分區,單機對單機,延伸群集,跨群集復制等災備場景的復制,幫助組織更好的提高業務連續性,存儲復制技術實現為非對稱存儲無關性,在單機對單機,以及群集架構中,各節點可分別連接各自存儲。


存儲復制技術的主要技術特點



  1. 使用SMB 3.1.1通訊協議

  2. 支持同步復制與非同步復制

  3. 復制時會需要日誌磁盤與數據磁盤,數據先寫入日誌磁盤,再Commit數據磁盤

  4. 每次復制的最小單位為Block

  5. 存儲無相關性,節點底層可以是任何存儲結構

  6. 支持固定式磁盤,最新版本的Server 2016數據中心版,已經支持精簡置備磁盤

  7. 復制過程存在主備關系,主復制分區可讀寫,備復制分區不可讀寫,暫未支持備只讀模式

  8. 使用數據包簽名,AES-128-GCM全數據加密等安全技術,存儲復制過程使用Kerberos AES256進行節點間的所有身份驗證


事實上,存儲復制其實是工作在Windows Storage Stack ,Partition Manager之上,Volume Manager之下的一個磁盤過濾器驅動程序,我們都知道,分區是指存儲設備上連續的存儲區域,卷是指扇區的邏輯集合,一個卷的內部扇區可能來一個分區,或多個分區,或不同的磁盤,而存儲復制在分區到卷之間於又插入了一層邏輯,再公開給卷,對於上層的卷和application來說,是不知道底層做了這件事的,您依然可以使用VSS技術,卷級別的Bitlocker 技術

技術分享圖片

下圖可以進一步看到存儲的工作過程,可以看到,存儲復制在兩個節點的Partition Manager之上,Volume Manager之下完成

技術分享圖片


通過這樣的架構,我們就可以看出,存儲復制和其它Windows上面的復制技術的不同


  1. 它是基於塊的復制,它插入在分區之上卷之下的區域,所以不知道文件的概念,不知道它們被使用,也不會像DFS一樣,會care文件是不是在被使用

  2. 它只關心寫入IO,可以被用於CSVFS,NTFS和ReFS

  3. 它不是基於檢查點,而是連續復制,所以變化的增量往往遠低於基於快照的產品

  4. 它在分區層上運行,因此可以復制由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:稍後將日誌磁盤數據刷新至數據磁盤


同步復制與非同步復制適用場景


同步復制適用場景


  1. 關鍵性業務應用

  2. 短距離節點(網絡延遲<5ms, 或距離<30km)

  3. 專用的網絡鏈路,高帶寬,1GB起步,建議10GB以上實現同步復制。


對於同步復制而言,一個應用程序的寫入請求,會等待日誌復制到對方節點,返回寫入成功後,IO才會結束,因此對於應用程序的寫入會略微感到一點延遲,所以對於網絡要求會很高,如果網絡帶寬足夠高,延遲不高,那麽就不會感覺到寫入延遲,利用同步復制可以使您的業務應用獲得崩潰一致性,發生故障時應用轉移到其他站點繼續運行,數據不會丟失。


異步復制適用場景


  1. 非關鍵性應用,可以接受數據出現丟失的可能性

  2. 跨城市/跨國家的部署場景

  3. 網絡帶寬有限,沒有專用網絡鏈路


在異步復制場景中,應用程序的寫入請求會被復制引擎捕獲,寫入到本地日誌磁盤後就立即向應用程序確認寫入完成,此模式對於應用程序而言,性能並無消耗,稍後復制引擎會再把數據復制到遠程站點,但此過程已經不在應用程序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


存儲復制技術部署需求


  1. 復制節點需安裝File Server角色,以及存儲副本功能

  2. Active Directory域環境,提供復制過程各節點的Kerberos驗證

  3. 復制節點至少需要兩個磁盤,一個數據磁盤,一個日誌磁盤

  4. 數據磁盤和日誌磁盤的格式必須為GPT,不支持MBR格式磁盤

  5. 兩個數據磁盤大小與分區大小必須相同,最大 10TB

  6. 兩個日誌磁盤大小與分區大小必須相同,最少 8GB

  7. 存儲復制使用445端口(SMB - 復制傳輸協議),5445端口(iWARP SMB - 僅在使用iWARP RDMA網絡時需要),5895端口(WSManHTTP - WMI / CIM / PowerShell的管理協議)


存儲復制規劃建議


  1. 建議為日誌磁盤使用SSD,或NVME SSD,存儲復制首先寫入數據至日誌磁盤,良好的日誌磁盤性能可以幫助提高寫入效率

  2. 建議規劃較大的日誌空間,較大的日誌允許從較大的中斷中恢復速度更快,但會消耗空間成本。

  3. 為同步復制場景準備可靠高速的網絡帶寬,建議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可讀寫,可以看到我們之前復制過來的數據

技術分享圖片

這裏有一點需要和大家說明,很多外國的博客都沒提到這點,對於單機對單機復制,反向復制切換僅在計劃內維護有效,例如,當前server1,server2存活,計劃內我們知道server1要維護,可以利用反向復制把server1的復制切換到server2提供讀寫服務,然後維護server1,但是一旦server1忽然宕機,這時候在server2再次執行這條命令是不會成功的,根據老王的了解,在單機對單機的情況下,這種場景,只有刪除存儲復制組,這時磁盤會分別釋放給兩個節點,兩個節點都能讀寫,這時候例如server1宕機,我在server2上面刪除復制關系,釋放出磁盤,給應用讀寫,等server1可用時再重建復制關系,只有這樣做了,並不是很完美,期望以後可以更智能一些,server1忽然宕機,server2運行一條命令能夠直接接管


#刪除存儲復制關系,其中一個節點執行即可

Get-SRPartnership | Remove-SRPartnership -Force

技術分享圖片


#刪除復制組,需在各節點執行


16server1

技術分享圖片


16server2

技術分享圖片


磁盤分別釋放給各節點,每個節點的磁盤都可以看到數據


16server1

技術分享圖片


16server2

技術分享圖片



如果是兩個節點的情況下,忽然宕機,大家可以遵循這樣的步驟去恢復


時間節點1:主服務器宕機

時間節點2:備服務器刪除復制關系,復制組

時間節點3:備服務器提供讀寫

時間節點4:主服務器恢復,備服務器重新創建復制關系至主服務器



存儲復制日常管理操作


管理授權


默認情況下存儲復制服務器本地管理員具備管理存儲復制權限,可以通過委派普通用戶,而不需要本地管理員權限

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



Windows Server 2016存儲復制淺談