Storage Space Direct(簡稱S2D)是微軟在Windows Server 2016數據中心版集成的第三代軟件定義存儲技術,S2D技術可以將工業標準X86服務器的本地磁盤彙總構建出具有高可用、高性能和易擴展的軟件定義存儲架構。S2D的優點在於和自家產品如Hyper-V/WAC/SCVMM/SCOM整合較好,適用於那些已經普遍使用微軟企業級產品的用戶,微軟不只有成熟企業級產品,也有成熟的OEM生態圈,微軟不只在今年發佈了Windows Server 2019,同時還宣佈了WSSD產品的路線圖。隨着Windows Server 2019功能的不斷優化與加強,S2D的性能與可靠性已經獲得企業用戶承認,相信會有部分已經在使用2016版本S2D用戶會選擇將原有環境升級至最新版本,故本文老王將爲你們介紹如何在不停機的狀況下將2016環境的S2D滾動升級2019服務器
本文老王將不會過多介紹S2D相關概念原理,咱們將主要專一於S2D滾動升級的過程思考網絡
本文老王以S2D融合架構爲例主要講解,對於超融合場景會進行簡單提示架構
因爲目前網絡上面尚未相關文章,老王會將S2D滾動升級細節所有呈現,以供往後國內用戶升級時參考ide
滾動升級以前老王曾經寫過一篇Hyper-V 2012滾動升級2016的文章,滾動升級的概念可以得以實現,即在同一個羣集內完成不停機的升級,前提條件有二,一 羣集支持混合模式,二 虛擬化軟件支持向下兼容。來到S2D一樣是這個道理,只不過不是2012到2016,而是2016到2019支持滾動升級,因爲2012存儲空間與2016S2D架構不一樣,因此2012存儲空間升級到2016S2D時只有在2012節點重裝2016,而後升級存儲池,所以當中必定會產生宕機時間,可是2016到2019就不一樣了,因爲2016和2019採用的是相同的S2D架構,所以咱們能夠在升級過程當中,實現數據同時在2016節點與2019節點撒下,意味着當咱們重作了一臺2016節點裝成2019時,這個節點能夠直接加入現有存儲池的容錯,不會對業務產生任何可用性影響。性能
理解了前提條件以後,繼續日後看,衆所周知,S2D是基於微軟WSFC羣集實現的架構,而一旦一個WSFC羣集變成了S2D羣集以後,每一個機器除了做爲普通羣集節點,還會承擔S2D數據寫入故障域的角色,S2D將各個羣集節點本地磁盤彙總起來,在羣集裏面造成一個虛擬機的盤櫃,當數據寫入時,S2D會把數據切分紅一個個1GB的extent,按照虛擬磁盤容錯規則進行寫入,若是是鏡像,則確保extent兩個副本始終寫入在兩個不一樣節點,以此類推,不容許由於單個節點故障影響虛擬磁盤可用。優化
這樣咱們就須要額外考慮一些問題,不能當成單獨的羣集滾動升級對待,例如,當咱們暫停或刪除一個節點時,對於S2D產生的影響,節點恢復後應該執行那些操做,帶着這些疑問咱們走進環境開始實戰spa
環境介紹,當前有一套三節點S2D2016羣集,已經開啓了S2D,已經建立一個鏡像容錯的虛擬磁盤正在使用操作系統
咱們將經過不停機滾動升級的方式最終將三個節點都升級爲2019,關於驗證不停機的方法,老王採用實時寫入腳本進行驗證,腳本以下3d
for /L %i in (1,1,30000) do fsutil File createnew %i 1024 blog
這段腳本的意思是每隔一秒鐘對S2D卷寫入一個1KB的文件,寫入30000次,若是寫入在升級過程當中沒有中斷,能夠持續寫入,則說明滾動升級沒有對寫入形成任何影響,腳本能夠在一個節點一直跑到最後,直到最後這個節點要升級時,切換到其它節點繼續跑。
在執行S2D滾動升級以前,首先要作的一個步驟是檢查,檢查四樣東西
1.虛擬磁盤是否健康
2.是否有未完成的存儲做業
3.檢查磁盤操做狀態,是否存在Needs Rebalance提示,若是有請執行Optimize-Storagepool操做
4.是否存在CAU或VMM等自動更新任務,若有,請針對羣集節點所有關閉,以防止影響手動操做羣集升級過程。
確保環境已就緒,咱們就要開始執行S2D滾動升級第一個操做,暫停節點,對於通常的羣集節點而言,暫停節點意味着按照放置規則排出角色到其它節點,對於S2D意義又多了一點,首先,正常狀況下,數據會在三個節點之間隨機找到兩個節點進行鏡像寫入,假設一個羣集節點宕機,那麼對於虛擬磁盤來講會變成降級狀態,由於在該節點上面的extent副本將不可用,意味着一些數據塊可能此時會是沒有第二個副本可用的,暫停節點後數據再次寫入,extent將不會再次撒在暫停節點,當節點恢復後,暫停期間其它節點寫入的增量數據會自動同步到暫停節點。若是是超融合場景下,此步驟虛擬機中也將一塊兒被排出到其它節點。
暫停節點時S2D將執行刷新和提交數據,所以務必要記得執行暫停節點操做,當節點被置爲暫停狀態後,下一個操做是將節點從S2D羣集中刪除,咱們僅執行逐出操做,這意味着僅在羣集中刪除該節點,但並不刪除已經在羣集池中註冊的物理磁盤,即使節點被逐出羣集,但節點的本地磁盤依然會被記錄在羣集池中,只是被標記爲丟失狀態,即使是節點重作系統後,只要磁盤還插在節點上,那麼就能夠從新與羣集池中的磁盤關聯。
逐出以後,對節點進行脫域,乾淨重裝2019操做系統,機器名能夠和原來同樣,也能夠從新命名,此過程略
當節點被暫停逐出後,能夠看到虛擬磁盤此時的操做狀態爲降級,這是由於丟失了一個故障域節點,但並不影響對磁盤的寫入,可經過寫入腳本看出,對於一個故障域的虛擬磁盤來講,此時羣集不能再有節點宕機,不然磁盤將不可訪問,若是是三路鏡像,有兩個故障域,則能夠再容許宕機一個節點。
在虛擬化環境中執行此操做的朋友可能會遇到一個BUG,即2019節點新作好了以後怎麼也加入不到羣集裏面,根本緣由是error 1809的問題,此節點已加入啓用存儲空間直通的羣集,但未在當前版本上進行驗證,此節點將被隔離
WSSD是微軟的一個全新計劃,微軟和DELL/Dataon/HPE等廠商合做,推出合做解決方案,廠商提供設備,通過微軟認證後便可在上面出色的運行微軟最新的SDDC技術,S2D/SDN/WAC等等,可是有的客戶可能就是虛擬化環境,或者沒有買WSSD認證設備,那就會碰見這個問題,通過研究得知是2019節點加入S2D羣集時會通過一個判斷,檢查註冊表的一個鍵值,若是已存在則能夠運行加入S2D羣集
位置在HKEY_LOCAL_MECHINE\SYSTEM\CurrentControlSet\Services\ClusSvc\Parameters下面,管理員須要在S2D羣集裏面每一個節點鍵入該鍵值,DWORD類型,名稱S2D,數值爲1,針對於2019節點,需事先建Parameters項,再新建鍵值便可規避此問題
處理完成後2019節點便可正常加入S2D2016羣集
當2019節點加入到羣集後,咱們能夠經過註冊表觀察到當前羣集已經進入了混合模式,以下位置的MixedMode數值爲1,表明羣集當前處於混合模式,若是所有升級爲2019,羣集FunctionalLevel升級後,則數值爲0
經過獲取羣集詳細信息能夠看到,羣集當前功能級別爲9,表明着羣集當前是Windows Server 2016的羣集功能級別,若是羣集節點所有升級到2019後,提高羣集FunctionalLevel後,羣集功能級別將升級爲10。
節點正常加入羣集後,先前因爲重作系統而在羣集池中失聯的磁盤,從新聯繫上變爲正常狀態
獲取存儲做業能夠看到,首先,2019節點加入到S2D羣集後,S2D先執行Repair做業,此做業目的是將節點不在期間,各虛擬磁盤的增量數據進行從新同步,此操做證實S2D支持跨2016/2019節點撒下數據,此操做不會影響磁盤的正常寫入,但從節點暫停退出後到此修復過程,磁盤性能將有所降低。
你也可能會看到Optimize做業操做,這裏解釋下爲何升級過程要留意它,以及爲何開始以前要進行檢查,在S2D運做過程當中隨着數據的大量寫入刪除,可能在某一個時間節點,一個物理磁盤的利用率已經達到了百分之90 ,而其它物理磁盤只有百分之60,這樣就有可能出現單個物理硬盤被寫爆,致使影響寫入操做,甚至虛擬磁盤脫機,所以,建議在滾動升級過程當中,每作完一個節點就留意下各個磁盤的使用情況或者羣集管理器中的虛擬磁盤狀態,是否出現Needs Rebalance,若是有,當即執行Optimize-Storagepool ,除此以外當新加入節點至S2D羣集時,每隔一段時間大概30分鐘,會自動執行Optimize-Storagepool操做,等不及的話也能夠直接手動執行。
Repair做業是爲了同步節點暫停時其它節點更新的數據,Optimize做業是爲了平衡節點添加後各節點物理磁盤使用狀況,二者不要混淆
因爲每作一個節點時虛擬磁盤會降級,重作完成後節點須要從新同步數據,平衡負載,所以請務必每次僅執行一個節點的升級操做,若是在一個節點加入羣集後還未執行完畢Repair和Optimize做業就執行下一個節點,將會產生宕機的風險。
確認第一個節點執行完畢Repair和Optimize做業,虛擬磁盤操做狀態恢復爲OK就能夠開始作下一個節點
暫停節點 - 逐出節點 - 節點退域 - 重作系統 - 修改註冊表 - 加入羣集 - 等待Repair做業和Optimize做業執行 - 檢查羣集虛擬磁盤狀態
第二個節點按照相同步驟執行,所謂滾動升級,意思就是咱們每次只重裝故障域容許的節點,確保重裝以後,虛擬磁盤僅爲降級,不會影響讀寫,節點重作完成加入羣集後 虛擬磁盤又恢復爲完整,再重作下一臺,始終經過補上的方式阻止磁盤失去讀寫。操做步驟並不難,關鍵是要理解每一步背後所發生的事情,以及每個操做執行後應該關注的內容。
按照這樣的滾動思惟作到最後一個節點時,最後一個節點執行完全部步驟,檢查羣集虛擬磁盤狀態爲OK,即表明全部節點已經不停機滾動升級至2019,但目前羣集功能級別仍然是Windows Server 2016,升級羣集功能級別後羣集功能級別將爲10,享受WSFC2019全部新功能,此操做不可逆
檢查註冊表位置能夠發現MixedMode已經取消爲0鍵值
除此以外,若是檢查存儲池能夠看到,目前存儲池的版本仍是Windows Server 2016
執行命令 Get-StoragePool -FriendlyName "PoolName" | Update-StoragePool 升級存儲池爲最新版本,此操做不可逆。
羣集功能級別與存儲池升級後,能夠發現2019的新功能,和WAC集成實現的性能歷史記錄,經過在S2D建立一個10GB的磁盤以存放歷史數據,此功能爲S2D2019專有
最後若是是超融合架構,還須要升級虛擬機配置,此操做需關閉虛擬機才能夠升級,需單獨規劃時間進行操做。
須要注意,升級羣集功能級別,升級存儲池,升級虛擬機配置,這三個操做都不可逆,一旦敲下命令就沒有後悔藥能夠吃,若是猶豫不定,能夠在混合模式期間進行觀察回退,升級羣集功能級別以後就不能回退了。
升級過程最主要的是要理解執行每一個操做步驟對S2D羣集會發生的事情,作到思路清晰,內心有數,操做步驟並不繁瑣,循序漸進完成各節點升級,每個步驟都不能夠跳躍,每一個節點升級完成都應該謹慎檢查再下一個節點,按照順序操做咱們就能實現不停機的S2D滾動升級,最終完成操做系統升級,羣集功能級別升級,存儲池升級,虛擬機升級。