雲原生 Cloud Native 雲端基礎架構 Windows Server 2022

Windows Server 2022全新支援 兼顧資料讀寫效能靈活性

啟用內建SBC機制 單機打造高效軟體定義儲存

2022-06-06
最新的Windows Server 2022作業系統中,內建了SBC儲存匯流排快取機制,讓中小型企業組織以最少的IT預算就能夠提供高靈活性和高儲存效能方案。對此,本文將深入剖析並透過實戰演練的方式詳細加以說明。

當企業和組織嘗試建立「雲端原生」(Cloud Native)的各項應用時,卻經常會忽略「雲端基礎架構」(Cloud Infrastructure)的重要性。

舉例來說,由於雲端基礎架構效能不佳,導致上層的應用中,雖然已經將應用服務拆分為多台VM虛擬主機或多個容器或多項微服務,卻因為雲端基礎架構效能不佳,導致各項服務之間溝通緩慢,進而造成整體回應時間過長或等候逾時等問題。

此外,對於中小型企業組織來說,在IT預算並不充足的情況下,經常難以建構完整的雲端基礎架構,舉例來說,擔任運算資源的伺服器數量不多、無法配置高階儲存設備、無法建構超融合基礎架構(HCI)或軟體定義儲存(SDS)環境等等。因此,在本文中將說明和實戰演練如何透過最新Windows Server 2022作業系統中內建的「儲存匯流排快取」(Storage Bus Cache,SBC)機制,讓「單台主機」(Standalone Server)輕鬆建構出軟體定義儲存環境,為上層各項雲端原生應用程式提供充足的儲存效能,讓上層的VM虛擬主機、容器、微服務等等應用能無後顧之憂盡情發揮效能和靈活性,讓有限的IT預算發揮最大的優勢。

SBC儲存匯流排快取運作架構

在舊版的Windows Server運作環境中,獨立伺服器並無法使用Storage Spaces Direct相關技術,必須整合多台Windows Server並建構容錯移轉叢集後才能使用。

而最新的Windows Server 2022版本中,單台的獨立伺服器只要硬體配置時,採用混合式的儲存媒體裝置,例如SSD + HDD或NVMe + HDD的情況下,便能啟用SBC儲存匯流排快取機制,讓獨立伺服器能夠大幅提升資料讀取和寫入效能,如圖1所示。

圖1  獨立伺服器支援SBC儲存匯流排快取機制運作架構示意圖。 (圖片來源:Microsoft Docs – 在獨立伺服器上啟用具有儲存空間的儲存匯流排快取)

獨立伺服器啟用SBC快取機制

以下實戰演練將採用最新Windows Server 2022伺服器版本,除了安裝Window Server 2022作業系統的硬碟外,還額外配置「4個」容量300GB的SSD固態硬碟,以及「6個」容量1TB的HDD機械式硬碟,這10個不同儲存媒介的硬碟裝置,將會透過Storage Spaces儲存堆疊技術融合在一起,然後啟用SBC儲存匯流排快取機制,達到大幅提升資料讀取和寫入儲存效能,同時具備高靈活性和高可用性的目標。

值得注意的是,當獨立伺服器啟用SBC儲存匯流排快取機制時,硬碟類型僅支援混合式儲存架構,例如NVMe + HDD或SSD + HDD,如圖2所示,不支援採用All-Flash儲存架構,例如全部NVMe或SSD或NVMe + SSD,如圖3所示。

圖2  混合式硬碟儲存架構示意圖。 (圖片來源:瞭解Azure Stack HCI和Windows伺服器叢集中的存放集區快取 - Azure Stack HCI | Microsoft Docs)
圖3  All-Flash儲存架構示意圖。 (圖片來源:瞭解Azure Stack HCI和Windows伺服器叢集中的存放集區快取 - Azure Stack HCI | Microsoft Docs)

安裝容錯移轉叢集功能

雖然是獨立伺服器的運作環境,但在啟用SBC儲存匯流排快取機制之前,必須為Windows Server 2022安裝「容錯移轉叢集」伺服器功能才行,因為系統需要叢集元件才能順利啟用SBC儲存匯流排快取機制。

登入主機後,依序點選「Server Manager > Manage > Add Roles and Features > Role-based or feature-based installation > Failover Clustering」項目,進行伺服器功能的安裝,如圖4所示,或執行PowerShell指令「Install-WindowsFeature –Name Failover-Clustering –IncludeManagementTools」進行安裝作業。

圖4  為獨立伺服器安裝容錯移轉叢集伺服器功能。

值得注意的是,雖然為獨立伺服器安裝容錯移轉叢集伺服器功能,但是它並不能加入任何一個容錯移轉叢集中,也就是它不能成為任何一個容錯移轉叢集的成員節點主機。

簡單來說,獨立伺服器要能成功啟用SBC儲存匯流排快取機制,必須滿足三個條件,分別是採用Windows Server 2022伺服器版本、採用混合式儲存架構、安裝容錯移轉叢集伺服器功能。倘若主機有下列任一情況出現時,便無法成功啟用SBC儲存匯流排快取機制:

‧採用Windows Server 2019或更舊的伺服器版本

‧採用All-Flash全快閃儲存架構

‧主機已經加入容錯移轉叢集成為叢集中的成員節點主機

調整部署模式和快取百分比

在正式啟用SBC儲存匯流排快取機制之前,先在PowerShell視窗中執行「Get-PhysicalDisk | Sort-Object Size」指令,確認獨立伺服器額外配置的儲存裝置,如圖5所示,可以看到總共配置4個300GB的SSD固態硬碟,以及6個1TB的HDD機械式硬碟,並且除了安裝Windows Server 2022的系統磁碟外,其餘額外配置的硬碟在「CanPool」欄位皆為「True」,表示這些硬碟稍後可以加入Storage Pool當中。

圖5  獨立伺服器額外配置4個300GB的SSD固態硬碟和6個1TB的HDD機械式硬碟。

接著,執行「Get-StorageBusCache」指令,查詢系統預設的SBC儲存匯流排快取進階參數值內容,例如部署模式和快取百分比,如圖6所示。因為一旦獨立伺服器啟用SBC儲存匯流排快取機制後,這些進階參數值內容系統將會自動鎖定且無法進行任何變動,所以管理人員倘若希望調整進階參數值內容的話,必須在啟用SBC儲存匯流排快取機制之前進行調整才行。

圖6  查詢系統預設的SBC儲存匯流排快取進階參數值內容。

原則上,資料存取類型為一般用途時,無須調整任何系統預設值,倘若需要調整也建議僅調整部署模式和共用取快百分比即可,其他進階欄位並不建議調整。下列為SBC儲存匯流排快取進階參數值內容各項欄位說明:

‧ProvisionMode:部署模式,在SBC儲存匯流排快取架構中共支援兩種部署模式,分別是「共享」(Shared)和「快取」(Cache),系統預設值為採用共享部署模式。簡單來說,採用共享部署模式時,資料快取空間僅會佔用較快媒體裝置,例如SSD或NVMe的固定百分比,而採用快取部署模式時,則資料快取空間會佔用較快媒體裝置的所有儲存空間。管理人員執行PowerShell的「Set-StorageBusCache -ProvisionMode Cache」指令,即可調整為快取部署模式。

‧SharedCachePercent:共用快取百分比,當採用共享部署模式時,此進階參數值才會套用生效,系統預設值為15%,管理人員可以調整的百分比範圍為5%~90%。值得注意的是,當規劃採用「鏡像加速同位元」(Mirror-Accelerated Parity)磁碟區時,共用快取百分比不建議使用超過50%,因為在快取資料和鏡像層級之外必須保持平衡,否則儲存比例失衡的情況下將會影響儲存效能造成反效果。舉例來說,管理人員可以執行PowerShell的「Set-StorageBusCache -SharedCachePercent 30」指令,將共用快取百分比調整至30%。

‧CacheMetadataReserveBytes:中繼資料儲存空間,當採用快取部署模式時此進階參數值才會套用生效,系統預設建立32GB儲存空間,用途為存放屆時Storage Pool和Virtual Disk等中繼資料。

‧CacheModeHDD:HDD儲存層級快取模式,系統預設採用ReadWrite組態設定,表示允許HDD儲存層級快取資料的方式為讀取和寫入。當採用「簡單空間」(Simple Space)磁碟區時,則快取資料方式支援ReadWrite或WriteOnly類型。

‧CacheModeSSD:SSD儲存層級快取模式,系統預設採用WriteOnly組態設定,表示SSD儲存層級快取資料的方式為寫入。

‧CachePageSizeKBytes:快取資料大小,系統預設為16KB,管理人員可以視資料型態調整大小為8KB、16KB、32KB、64KB。

‧Enabled:確認SBC儲存匯流排快取機制,是否為啟用狀態。

啟用SBC儲存匯流排快取機制

獨立伺服器運作環境準備完畢,並且管理人員依據需求調整SBC儲存匯流排快取進階參數值內容後,執行PowerShell的「Import-Module StorageBusCache」指令,匯入SBC儲存匯流排快取Cmdlet。

接著,執行「Enable-StorageBusCache」指令,系統將會自動執行多個動作,以便將SSD固態硬碟和HDD機械式硬碟融合在一起,包括將所有硬碟融合後建立Storage Pool、自動為較快的SSD固態硬碟和較慢的HDD機械式硬碟建立儲存層級、新增並啟用SBC儲存匯流排快取機制等等。

順利啟用SBC儲存匯流排快取機制後,執行「Get-StoragePool」指令以查看系統自動建立的Storage Pool資訊,並再次執行「Get-PhysicalDisk」指令,可以發現融合後的SSD固態硬碟和HDD機械式硬碟,在「Number」欄位數值改變為大於500,表示該儲存裝置已經被SBC儲存匯流排快取機制,宣告為使用中的儲存裝置,並且「CanPool」欄位也從原本的True改變為「False」,如圖7所示。

圖7  啟用SBC儲存匯流排快取機制。

可以再次執行「Get-StorageBusCache」指令,確認目前SBC儲存匯流排快取的部署模式,以及Enabled欄位是否為True,確認系統已經正確啟用。此外,管理人員應該很好奇6個HDD機械式硬碟如何使用SSD固態硬碟,從剛才的「Get-PhysicalDisk」指令結果中,可以看到SSD固態硬碟的編號為「506 - 509」,而HDD機械式硬碟的編號為「500 - 505」,執行「Get-StorageBusBinding」指令,可以看到哪個HDD機械式硬碟使用哪個SSD固態硬碟,例如本文實作環境中,編號500的HDD機械式硬碟搭配使用編號509的SSD固態硬碟,如圖8所示。

圖8  確認SBC儲存匯流排快取啟用狀態和檢查儲存裝置繫結狀態。

建立磁碟區

現在管理人員可以依據需求,建立不同用途的磁碟區,在SBC儲存匯流排快取儲存架構中,可建立具備災難復原機制的「鏡像加速同位」,但快取類型僅「讀取」的磁碟區,或是建立無法容忍任何硬碟故障的「Simple」,但快取類型支援「讀取和寫入」的磁碟區。

在本文實作環境中,鍵入PowerShell指令「New-Volume –FriendlyName "Mirror-Parity" -FileSystem ReFS -StoragePoolFriendlyName Storage* -StorageTierFriendlyNames MirrorOnSSD, ParityOnHDD -StorageTierSizes 200GB, 800GB」,建立鏡像加速同位類型且儲存空間為1TB的磁碟區,其中佔用200GB位於SSD固定態硬碟的鏡像層,以及800GB位於HDD機械式硬碟中的同位層所組成。

接著鍵入PowerShell指令「New-Volume -FriendlyName "TestVolume" -FileSystem ReFS -StoragePoolFriendlyName Storage* -ResiliencySettingName Simple -Size 1TB」,建立Simple類型儲存空間為1TB的磁碟區,具備讀取和寫入快取機制,但無法容忍任何硬碟發生故障。

完成建立兩種不同類型的磁碟區後,執行PowerShell指令「Get-VirtualDisk」,查詢磁碟區健康情況和相關資訊,可以看到建立的1TB鏡像加速同位類型磁碟區,其實在Storage Pool中佔用1.76TB儲存空間,這也是為何鏡像加速同位類型磁碟區具備災難復原的原因,如圖9所示。

圖9  建立鏡像加速同位類型和Simple類型的磁碟區。

值得注意的是,剛才建立的磁碟區並未指定磁碟區代號,為了稍後方便測試災難復原機制,可以透過PowerShell指令,先以「Get-Disk」查詢要指定磁碟機代號的磁碟,接著以「Get-Partition -DiskNumber」查詢磁碟中的分割區,之後執行「Set-Partition -NewDriveLetter」指令,即可指定磁碟機代號,最後以「Get-Volume」指令確認磁碟機代號是否套用生效,可以看到本文實作環境中指派鏡像加速同位類型磁碟區採用「M」,而Simple類型採用「S」磁碟機代號,如圖10所示。

圖10  為鏡像加速同位和Simple指定磁碟機代號。

擴充磁碟區儲存空間

因應企業和組織不斷成長的專案需求,一開始建立的磁碟區儲存空間可能會發生不足的情況,此時管理人員能夠輕鬆透過PowerShell指令,擴充原有的磁碟區儲存空間。值得注意的是,鏡像加速同位類型和Simple類型的磁碟區,這兩種不同類型的磁碟區作法可能稍有不同,並且了解儲存架構的階層,從上層的「Volume > Partition > Disk > Virtual Disk」到底層的「Storage Tier」,這將有助於擴充磁碟區儲存空間工作任務,如圖11所示。

圖11  磁碟區儲存堆疊架構示意圖。 (圖片來源:展開Azure Stack HCI和Windows伺服器叢集上的磁片區 - Azure Stack HCI | Microsoft Docs)

首先,執行「Get-VirtualDisk」指令,了解磁碟區的FriendlyName,接著搭配「Get-StorageTier」指令,檢查需要擴充儲存空間的磁碟區是否使用儲存層,在本文實作環境中,Simple類型磁碟區便沒有使用儲存層,而鏡像加速同位類型磁碟區則有使用儲存層,如圖12所示。

圖12  檢查需要擴充儲存空間的磁碟區是否使用儲存層。

針對沒有使用儲存層的磁碟區,可以直接使用「Resize-VirtualDisk -Size」指令擴充磁碟區儲存空間。針對1TB的Simple類型磁碟區,先將底層的VirtualDisk儲存空間進行擴充,執行「Get-VirtualDisk Simple | Resize-VirtualDisk -Size 1.5TB」指令,即可看到VirtualDisk已經從原本的1TB擴充為1.5TB,但磁碟區的部分仍顯示為1TB儲存空間,如圖13所示。

圖13  擴充Simple類型磁碟區的VirtualDisk儲存空間。

順利擴充VirtualDisk儲存空間後,可透過「Get-Partition | Where PartitionNumber -Eq 2」指令,指定磁碟區中的PartitionNumber =2進行分割區擴充儲存空間的工作任務,最後執行「Get-Volume S」指令,確認Simple類型磁碟區已經順利擴充至1.5TB的儲存空間,如圖14所示,並且資料讀取和寫入也正常無誤。

圖14  順利擴充Simple類型磁碟區至1.5TB的儲存空間。

與擴充Simple類型磁碟區工作任務類似,只是在擴充VirtualDisk的部分,必須先針對鏡像加速同位類型磁碟區的儲存層進行擴充之後,才進行分割區擴充的工作任務。

首先,執行「Get-VirtualDisk Mirror-Parity | Get-StorageTier」指令,確認每個儲存層級的儲存空間大小,在本文實作環境中,僅將HDD機械式硬碟的儲存空間,由原本的800GB擴充為1TB儲存空間,至於SSD固態硬碟儲存層則保持原有的200GB,之後再執行「Resize-Partition」指令擴充鏡像加速同位類型磁碟區分割區。最後,執行「Get-Volume M」指令,確認鏡像加速同位類型磁碟區已經順利擴充至1.2TB的儲存空間,如圖15所示,並且資料讀取和寫入也正常無誤。

圖15  順利擴充鏡像加速同位類型磁碟區至1.2TB的儲存空間。

擴充Storage Pool儲存空間

當磁碟區空間不足時,管理人員可以透過上述PowerShell指令,線上擴充鏡像加速同位和Simple類型磁碟區儲存空間。同樣地,最底層Storage Pool儲存空間不足時,可以為Windows Server 2022主機額外增加實體SSD固態硬碟或HDD機械式硬碟,以便擴充底層Storage Pool儲存空間。

在本文實作環境中,為Windows Server 2022主機再新增1個300GB的SSD固態硬碟,以及2個1TB的HDD機械式硬碟。執行「Get-StoragePool」指令,確認目前Storage Pool的整體空間為6.99TB,若執行「Get-PhysicalDisk」指令,可以看到稍後要加入Storage Pool的3個硬碟,並且CanPool欄位為「True」,如圖16所示。

圖16  準備將新增的SSD固態硬碟和HDD機械式硬碟加入Storage Pool。

執行「Update-StorageBusCache」指令,系統便會自動將SSD固態硬碟和HDD機械式硬碟加入至Storage Pool整體儲存空間當中。完成後再次執行「Get-StoragePool」指令,Storage Pool儲存空間將由原本的6.99TB擴充為「9.23TB」,並且所有的硬碟CanPool欄位皆為「False」,如圖17所示。

圖17  順利擴充Storage Pool儲存空間。

實務上,需要擴充Storage Pool儲存空間時,表示原有的硬碟中儲存空間已經耗盡,新加入的硬碟則是許多儲存空間,這表示資料的分佈並不平均會影響資料讀取和寫入效能,建議在加入新的硬碟之後執行「Get-StoragePool Storage* | Optimize-StoragePool」指令,針對Storage Pool執行資料「最佳化」(Optimize)和「重新平衡」(Rebalance)的工作任務。

順利加入新增的SSD硬碟和HDD機械式硬碟後,執行「Get-StorageBusBinding」指令,再次查看SSD硬碟和HDD機械式硬碟的對應關係,如圖18所示。

圖18  查看SSD固態硬碟和HDD機械式硬碟的對應關係。

值得注意的是,新增硬碟並不會影響資料「讀取快取」的部分,因為先前執行「Enable-StorageBusCache」指令後,系統便會自動鎖定進階功能,無法變更部署模式、共用快取百分比、快取模式和對應關係等等,管理人員只能透過「Remove-StorageBusBinding」和「New-StorageBusBinding」重新指定快取模式對應關係,但將會遺失現有的「讀取快取」。

災難復原測試

無論儲存架構多麼靈活並具備高效能,倘若無法承受災難事件,例如SSD固態硬碟或HDD機械式硬碟故障損壞,相信無法被企業和組織所接受。

現在,針對Windows Server 2022主機,分別隨機移除1個SSD固態硬碟和2顆HDD機械式硬碟,模擬硬碟發生故障損壞的情況,驗證剛才建立的鏡像加速同位類型和Simple類型是否能夠承受災難事件資料不致遺失或損壞,並驗證災難事件發生後磁碟區能否繼續進行資料讀取和寫入等動作。

執行「Get-StoragePool」指令,可以看到Storage Pool的健康狀態欄位OperationalStatus和HealthStatus,從原本的OK、Healthy轉變成目前發生災難事件的Degraded、Warning,表示雖然有硬碟發生故障損壞,但是Storage Pool整體仍然能夠正常運作。

執行「Get-VirtualDisk」指令,可以看到VirtualDisk健康狀態欄位的轉變,其中Simple類型磁碟區從原本的OK、Healthy變為No Redundancy、Unhealthy,並且磁碟機S:已經無法存取,而鏡像加速同位類型磁碟區從原本的OK、Healthy變為Degraded, Incomplete、Warning,並且磁碟機M:仍然能夠正常存取進行資料讀取和寫入,表示鏡像加速同位類型具備災難復原的能力,而Simple類型則無。

最後,執行「Get-PhysicalDisk」指令,可以看到發生故障損壞的實體硬碟,除了硬碟代號消失之外,在健康狀態欄位的轉變從原本的OK、Healthy,轉變成為Lost Communication、Warning的狀態,如圖19所示。

圖19  查詢Storage Pool、VirtualDisk、實體硬碟健康狀態。

後續,只要為Windows Server 2022主機更換故障損壞的實體硬碟,然後確認系統偵測到新加入的實體硬碟,並且CanPool欄位為True之後,再次執行「Update-StorageBusCache」指令,即可成功更換故障損壞的實體硬碟,並將新增的實體硬碟加入Storage Pool儲存空間內。

<本文作者:王偉任,Microsoft MVP及VMware vExpert。早期主要研究Linux/FreeBSD各項整合應用,目前則專注於Microsoft及VMware虛擬化技術及混合雲運作架構,部落格weithenn.org。>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!