119 期 - 微軟最新 SR 儲存複本機制,實戰伺服器間同步複寫


網管人雜誌

本文刊載於 網管人雜誌第 119 期 - 2015 年 12 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。





文章目錄

1、前言
2、同步複寫機制
3、非同步複寫機制
4、儲存複本功能整理
5、實作 Server to Server 同步複寫機制
          先決條件
          初始環境組態設定
          安裝 Storage Replica 功能
          環境測試
          建立儲存複本機制 – 新增複寫合作夥伴
          查詢儲存複寫資訊 – 複寫群組
          查詢儲存複寫資訊 – 複寫合作夥伴
          查詢儲存複寫資訊 – 磁碟複寫
          查詢儲存複寫資訊 – 複寫事件
          監控儲存複寫效能數據
          反轉複寫方向
          移除儲存複寫機制
6、結語





1、前言

在微軟下一代 Windows Server 作業系統,先前開發代號為 Windows Server vNext,目前則稱為 Windows Server 2016 的新式儲存機制當中,有一項新的儲存特色功能稱之為「SR(Storage Replica)」。

它是一種與傳統儲存設備種類(DAS/NAS/SAN)無關,屬於「區塊層級(Block Level)」的儲存複本機制,支援採用「同步(Synchronous)」及「非同步(Asynchronous)」兩種不同的資料複寫方式,以 SMB 3 通訊協定來進行資料的複寫傳送。

它並非是資料備份的解決方案,而是「災難備援(Disaster Recovery,DR)」的解決方案,透過 SR 儲存複本機制將資料複寫到另外的伺服器或叢集當中,除了提升企業或組織的「服務等級協議(Service Level Agreements,SLA)」之外,更能有效降低「復原時間目標(Recovery Time Objective,RTO)」及「復原點目標(Recovery Point Objective,RPO)」。

此外,SR(Storage Replica)儲存複本機制,可以跟 Hyper-V、Storage Spaces Direct、Cluster、SOFS(Scale-Out File Server)、Deduplication 等特色功能協同運作,並且支援採用 ReFS / NTFS / CSVFS 等新舊檔案系統。並且 Storage Replica 在使用案例上,又可以區分出「Server to Server」、「Stretch Cluster」、「Cluster to Cluster」等不同的應用情境。

事實上,Storage Replica 儲存複本特色功能,也支援單台實體伺服器「自我複寫(Server-to-Self Replication)」機制,也就是可以單台伺服器中多個磁碟區進行資料複寫的動作,但這樣仍有 SPOF 單點失敗的風險。

圖 1、Storage Replica 使用案例運作架構示意圖





2、同步複寫機制

當採用「同步(Synchronous)」複寫機制時,系統將會保證每次的資料 IO 作業完成之前,都會將資料寫入至少兩個不同的位置之後,才會回覆給上層的應用程式已完成 IO 作業。所以,當來源端節點主機發生故障損壞事件時,便可以進行容錯備援的切換動作,接著讓應用程式使用目的端節點主機的資料快速恢復運作。因此,它適合應用於需要高可用性及災難復原,也就是「零資料損失(Zero Data Loss)」的營運服務。

下列為採用同步複寫機制時,兩端主機之間資料複寫的動作如下:

1. 應用程式發出寫入資料需求。
2. 來源端節點主機將資料寫入至本地端儲存資源「日誌(Log)」當中,同時透過 SMB 3 協定將資料傳輸至目的端節點主機。
3. 目的端節點主機,將所收到的資料寫入至本地端儲存資源「日誌(Log)」當中。
4. 目的端節點主機寫入完成後,回覆給來源端主機已完成 IO 動作。
5. 來源端節點主機回覆應用程式確認已完成 IO 動作。

最後,當回覆給上層應用程式完成 IO 動作之後,來源端及目的端節點主機才會真正透過日誌磁碟區中的確認資料,執行更新寫入磁碟區資料的動作。

圖 2、Storage Replica「同步(Synchronous)」複寫機制運作架構示意圖





3、非同步複寫機制

當採用「非同步(Asynchronous)」複寫機制時,系統會在本地端完成 IO 作業後便立即回覆給上層的應用程式,之後才將資料複寫到另一個位置。所以,這樣的資料複寫機制仍然有資料遺失的風險存在,只能達成「近乎零資料損失(Near Zero Data Loss)」的運作環境,因此並不適合用於需要高可用性的運作環境中(例如,容錯移轉叢集)。

下列為採用非同步複寫機制時,兩端主機之間資料複寫的動作如下:

1. 應用程式發出寫入資料需求。
2. 來源端節點主機將資料寫入至本地端儲存資源「日誌(Log)」當中。
3. 來源端節點主機回覆應用程式確認已完成 IO 動作。
4. 透過 SMB 3 協定將資料傳輸至目的端節點主機。
5. 目的端節點主機,將所收到的資料寫入至本地端儲存資源「日誌(Log)」當中。
6. 目的端節點主機寫入完成後,回覆給來源端主機已完成 IO 動作。

圖 3、Storage Replica「非同步(Asynchronous)」複寫機制運作架構示意圖





4、儲存複本功能整理

在下列表格當中,我們將儲存複本功能的特色功能進行概要整理:






5、實作 Server to Server 同步複寫機制

此實作為儲存複本機制中「Server > Server」方式,目前在 Windows Server 2016 技術預覽當中,針對此使用情境的部分,並沒有 GUI 圖形化工具可以進行組態設定作業,因此將統一採用 PowerShell 進行實作。

這兩台進行儲存複寫的單機伺服器,它們可以位於同一個站台或是不同站台皆可。本次實作環境中,兩台主機將位於同一個站台同一個網域當中,但是擺放在不同樓層的實體位置,以期能夠因應故障損壞事件。

圖 4、Server to Server 儲存複本運作架構示意圖



先決條件

下列項目為實作儲存複本機制時,每台實體伺服器所應採用及注意的先決條件事項,後續在進行實作之前我們也會使用 Test-SRTopology 指令,來進行儲存複本實作前的環境檢查作業:

  • 支援採用的儲存資源種類有 SAS JBODs、Fibre Channel SAN、iSCSI Target、DAS…等。
  • 在儲存資源中的硬碟種類,應該要包含一般機械式硬碟(用來存放資料),以及 SSD 固態硬碟(用來存放日誌)。
  • 在網路傳輸的部分,至少應該有 1 條專用的 1GbE 傳輸線路,或是 10GbE、RDMA(RoCE、iWARP、InfiniBand),並且平均 ≤5ms 的來回延遲時間。
  • 在防火牆規則的部分,在來源端及目的端的節點主機當中,都需要允許 ICMP、SMB(Port 445、5445)、WS-MAN(Port 5985)流量可以進行雙向通訊。



初始環境組態設定

了解實作儲存複本的環境需求後,接著便可以進行初始環境的設定作業了。在此次的實作環境中,將會有三台實體伺服器,一台主機擔任網域控制站的角色,另外二台主機(SR-SRV01、SR-SRV03)則是實作儲存複本 Server to Server 機制。

首先,實作儲存複本機制的主機,採用的 Windows Server 2016 必須為 DataCenter 版本才行,在官方的規劃中 Standard 版本並不支援儲存複本機制。安裝好 Windows Server 2016 作業系統後,組態設定好 IP 位址及電腦名稱並且加入網域後重新啟動主機。

圖 5、實作儲存複本機制的主機順利加入網域

確認實作儲存複本機制的二台主機所採用的儲存資源種類(JBOD / iSCSI / FC SAN / DAS),此實作環境中二台主機採用 DAS(Direct-Attached Storage),也就是實體伺服器的本機硬碟來擔任儲存資源。如果,採用 JBOD、iSCSI、FC SAN 等儲存資源時,應該採用儲存設備廠商所提供最新最穩定的 Firmware 及驅動程式。

此外,在實作伺服器方面,除了也應採用最新最穩定的 BIOS/UEFI Firmware 版本之外,其它如主機板、網路卡、晶片組…等驅動程式也應採用最新穩定版本。在 BIOS 設定的部分,建議停用 C-State 節省電力設定,並啟用 QPI Speed、NUMA、High Performance…等設定,以便讓伺服器保持在最佳效能狀態。

選擇好採用的儲存資源後,在實作儲存複本機制之前仍有相關注意事項如下:

  • 至少要建立兩個磁碟區,一個磁碟區用於儲存資料,另一個磁碟區則用於儲存日誌
  • 用於儲存複本機制的兩個磁碟區,僅能採用新式的 GPT 進行初始化而非舊式的 MBR
  • 實作儲存複本機制的兩台伺服器,不管是資料磁碟區或日誌磁碟區其儲存空間大小必須一致
  • 日誌磁碟區,至少要 8GB 的儲存空間,並且視複寫的資料磁碟區空間大小而相對應增加空間,同時建議採用反應快速的儲存資源,例如,SSD 固態硬碟進行儲存。
  • 資料磁碟區,最大支援至 10TB 的儲存空間,可以採用一般機械式硬碟、SSD 固態硬碟,也支援採用 RAID 1、10、5、50,也支援內建的 Storage Space(Tier、Mirror、Parity)等 Virtual Disk。
  • 進行儲存複本的磁碟區,應該包含系統磁碟區(System Volume)、分頁檔案(Page File)、傾印檔案(Dump Files)。

在本文的實作環境中,為兩台伺服器增加二顆硬碟,分別是 100GB 用來擔任資料磁碟區,並且給予 D 磁碟機代號及 SR-Data 的磁碟標籤,以及 10GB 用來擔任日誌磁碟,並且給予 L 磁碟機代號及 SR-Log 的磁碟標籤以利識別。

圖 6、兩端主機分別新增 100GB 資料磁碟區及 10GB 日誌磁碟區



安裝 Storage Replica 功能

完成兩台伺服器的初始化設定後,便可以接著為兩台伺服器安裝相關角色及功能。請開啟伺服器管理員後,安裝「File Server」角色以及「Storage Replica」功能(包含管理工具)。

圖 7、安裝 File Server 角色及 Storage Replica 功能

你也可以採用 PowerShell 指令「Install-WindowsFeature –Name Storage-Replica,FS-FileServer –IncludeManagementTools –Restart」,進行角色及功能的安裝作業。



環境測試

在開始真正進行儲存複寫的動作以前,建議先進行環境測試作業,以便再次確認所建立的儲存複本運作環境屆時能運作無誤。

簡單來說,環境測試作業便是使用 Test-SRTopology 指令,模擬執行儲存複本作業並產生報表檔案以便確認,但若只是單純模擬執行但卻沒有實際資料 IO 的話,那麼產生的報表檔案便不具備參考價值。因此,我們可以下載 DISKSPD 工具,幫助我們產生資料 IO 工作負載,並配合模擬執行儲存複本作業即可達成環境測試的目的。

在執行 Test-SRTopology 指令進行儲存複本環境測試作業之前,我們將會以下列 DISKSPD 指令產生資料 IO 工作負載持續 5 分鐘(300 秒)。值得注意的是,因為此次實作環境中我們的資料磁碟區是在「D 槽」,因此 DISKSPD 指令產生的資料 IO 工作負載便寫入至 D 槽。
Diskspd.exe –c1g –d300 –W5 –C5 –b8k –t2 –o2 –r –w5 –h d:\io.dat

接著,便可以執行 Test-SRTopology 指令進行儲存複本環境測試作業,指令的參數都非常直覺也就是指定來源端及目的端節點主機相關資訊,例如,電腦名稱、資料磁碟區、日誌磁碟區、測試時間、測試間隔...等。最後,我們指定環境測試的報表檔案產生在 C:\tmp 資料夾內,檔案名稱將為「TestSrTopologyReport-<日期>-<時間>.html」。
Test-SRTopology -SourceComputerName SR-SRV01 -SourceVolumeNames D: -SourceLogVolumeName L: -DestinationComputerName SR-SRV03 -DestinationVolumeNames D: -DestinationLogVolumeName L: -DurationInMinutes 5 -IntervalInSeconds 1 -ResultPath C:\tmp

圖 8、儲存複本環境測試報表檔案概觀

從環境測試報表檔案內容中可以看到,通過所有的環境測試作業及建議值,以此次實作環境來看系統建議的日誌磁碟區只要採用預設的「8 GB」即可,並且兩台主機之前的網路環境平均延遲時間也在「5 ms」之內。

圖 9、儲存複本環境測試報表: 先決條件測試結果及初始化同步效能測試結果



建立儲存複本機制 – 新增複寫合作夥伴

順利通過儲存複本的環境檢查及測試作業後,接著我們就可以著手建立儲存複本機制。事實上,建立儲存複本機制的 New-SRPartnership 指令,與剛才的 Test-SRTopology 測試指令相當類似,不同的是有其它進階參數可以使用。

  • -ReplicationMode: 指定儲存複寫模式,預設值為「同步(Synchronous)」複寫,可依環境需求指定採用「非同步(Asynchronous)」複寫(目前僅支援 Server > Server)。
  • -Seeded: 資料衝突的處理方式,預設值為「False」也就是來源端資料直接「覆蓋」目的端磁碟區的資料,可依環境需求指定採用「True」也就是「合併」來源端與目的端磁碟區的資料。
  • -LogSizeInBytes: 日誌磁碟區大小,至少指定 8GB 大小,並參考 Test-SRTopology 指令的測試結果建議值。

圖 10、建立儲存複本機制-新增複寫合作關係



查詢儲存複寫資訊 – 複寫群組

順利建立儲存複本機制之後,可以使用「Get-SRGroup」指令查詢複寫群組資訊。事實上,複寫群組儲存著複寫合作夥伴的組態設定內容,並且每個複寫群組可以包含「一個或多個」磁碟區。

圖 11、查詢複寫群組資訊



查詢儲存複寫資訊 – 複寫合作夥伴

你可以使用「Get-SRPartnership」指令,來查詢儲存複本的複寫合作夥伴資訊,以便了解來源端主機及目的端主機,以及複寫群組等相關資訊。

圖 12、查詢複寫合作夥伴資訊



查詢儲存複寫資訊 – 磁碟複寫

你可以使用「(Get-SRGroup).Replicas」指令,搭配指定的來源端主機或目的端主機的電腦名稱,即可查詢磁碟複寫資訊,例如,資料磁碟區、複寫模式...等。

圖 13、查詢磁碟複寫資訊



查詢儲存複寫資訊 – 複寫事件

此外,你也可以開啟事件檢視器後,依序點選「Applications and Services Logs > Microsoft > Windows > StorageReplica > Admin」查看相關事件,在「來源端主機」中你將會看到 Event ID 1237、2200、5001、5002、5004、5015...等事件,在「目的端主機」中你將會看到 Event ID 1237、2200、5001、5005、5009、5015...等事件。

圖 14、查詢複寫事件

或者,你也可以在 PowerShell 視窗中鍵入「Get-WinEvent -ProviderName Microsoft-Windows-StorageReplica –max 10」指令,顯示最新 10 筆事件,然後搭配過濾參數及 Event ID 的方式,來檢視指定 Event ID 的複寫事件。

圖 15、以 PowerShell 查詢儲存複寫事件



監控儲存複寫效能數據

事實上,當你為主機安裝 Storage Replica 功能之後,系統便會新增二項效能監控項目分別是「Storage Replica Partition I/O Statistics」及「Storage Replica Statistics」。你可以分別加入監控這二個項目,以便了解儲存複寫的相關效能表現。

圖 16、監控儲存複本機制資料複寫效能數據



反轉複寫方向

事實上,在儲存複本的運作機制當中,當來源端主機與目的端主機建立複寫合作夥伴關係之後,目的端主機的資料磁碟區(此實作為 L 槽),便會取消磁碟機代號以及磁碟標籤,同時檔案系統也從原本的 NTFS 轉變為 RAW,以避免儲存複寫當中的資料磁碟區被不當寫入資料。

圖 17、建立複寫合作夥伴關係之後,磁碟區將轉變為 RAW 避免被不當寫入資料

此外,目前在 Windows Server 2016 TP3 版本中,並沒有指令可以輕鬆驗證目的端主機的資料磁碟區當中,存放與來源端主機資料磁碟區一模一樣的檔案。因此,最簡單的驗證方式,便是反轉複寫方向即可進行驗證。

首先,於來源端主機中執行「Sync-SRGroup –Name SR-RG01 –Force」指令,讓來源端主機當中的複寫群組,將手上所擁有的所有資料磁碟區,再次強迫複寫資料至目的端主機。接著,便可以使用「Set-SRPartnership」指令,指定新的來源端主機及複寫群組名稱,以及新的目的端主機及複寫群組名稱,便可以進行反轉複寫方向的動作。最後,再執行「Get-SRPartnership」指令,確認是否真正完成反轉複寫方向的動作。

圖 18、反轉複寫方向

順利反轉複寫方向之後,原本的目的端主機(SR-SRV03)現在變成來源端主機,所以你可以切換至該主機查看資料磁碟區,現在 SR-SRV03 主機的 D 槽便可以順利看到檔案,不再是先前避免寫入的鎖定狀態 RAW,同時進入 D 槽後便可以看到剛才進行資料複寫的相關檔案。



移除儲存複寫機制

最後,如果你希望移除儲存複寫機制的話,那麼請先使用「Get-SRPartnership」指令確認目前的儲存複寫資訊。接著,切換到「來源端」主機上執行「Get-SRPartnership | Remove-SRPartnership」指令,然後在「來源端及目的端」主機上執行「Get-SRGroup | Remove-SRGroup」指令,即可順利移除儲存複寫機制。

圖 19、移除儲存複寫機制





6、結語

透過本文的說明及實作演練,讀者應該了解 Windows Server 2016 儲存複本的強大功能。在本文中因為篇幅的關系,僅實作儲存複本機制中 Server to Server 的部分,在後續的文章當中將為大家進一步實作,整合 Hyper-V 及 Storage Space Direct 的進階 Stretch Cluster Cluster to Cluster 部分。