在部署以前仍是須要了解下硬件要求:算法
其中重點是:windows
最少 2 臺服務器,最多 16 臺服務器緩存
對於Storage Spaces Direct元數據,每一個服務器上每TB緩存磁盤容量爲4 GB RAM,換言之每臺服務器上SSD是每1TB須要耗費4G內存服務器
系統磁盤大小不低於200G,通常都是300G做爲系統磁盤網絡
小規模測試環境2-3臺服務器,用於生產環境4臺服務器起架構
SSD必須提供電源中斷保護dom
緩存設備大於等於32GBide
S2D磁盤連接方式:工具
直接鏈接 SATA 驅動器
直連 NVMe 驅動器
SAS 驅動器的 SAS 主機總線適配器 (HBA)
SATA 驅動器的 SAS 主機總線適配器 (HBA)
不支持: RAID 控制器卡或 SAN (光纖通道、 iSCSI、 FCoE) 存儲。 主機總線適配器 (HBA) 卡必須實現簡單的傳遞模式
用於緩存的SSD每臺至少2個;容量的SAS每臺至少4個
在這裏個人測試環境是2臺服務器(這裏我是利用物理機建立的2臺Hyper-V虛擬機,故這2臺虛擬機我開啓了嵌套虛擬化),每臺服務器1個系統磁盤127G,每臺配置了2個SSD磁盤和4個HDD磁盤(每個SSD磁盤爲10G大小;每個HDD磁盤爲20G大小)
爲每一臺服務器完成了以下準備工做:
加域
安裝角色或功能以下:
Install-WindowsFeature -Name "Hyper-V", "Failover-Clustering", "Data-Center-Bridging", "RSAT-Clustering-PowerShell", "Hyper-V-PowerShell", "FS-FileServer"
故障轉移羣集
Hyper-V
文件服務器 (若是您想要託管任何文件共享,例如,針對聚合部署)
Data-Center-Bridging(若是正在使用 RoCEv2,而不是 iWARP 網絡適配器)
RSAT-Clustering-PowerShell
Hyper-V-PowerShell
清空磁盤驅動器
在其中一臺S2D服務器上執行以下腳本:
備註:此腳本將永久刪除操做系統啓動驅動器之外的任何驅動器上的任何數據 !
# Fill in these variables with your values
$ServerList = "Server01", "Server02", "Server03", "Server04"
Invoke-Command ($ServerList) {
Update-StorageProviderCache
Get-StoragePool | ? IsPrimordial -eq $false | Set-StoragePool -IsReadOnly:$false -ErrorAction SilentlyContinue
Get-StoragePool | ? IsPrimordial -eq $false | Get-VirtualDisk | Remove-VirtualDisk -Confirm:$false -ErrorAction SilentlyContinue
Get-StoragePool | ? IsPrimordial -eq $false | Remove-StoragePool -Confirm:$false -ErrorAction SilentlyContinue
Get-PhysicalDisk | Reset-PhysicalDisk -ErrorAction SilentlyContinue
Get-Disk | ? Number -ne $null | ? IsBoot -ne $true | ? IsSystem -ne $true | ? PartitionStyle -ne RAW | % {
$_ | Set-Disk -isoffline:$false
$_ | Set-Disk -isreadonly:$false
$_ | Clear-Disk -RemoveData -RemoveOEM -Confirm:$false
$_ | Set-Disk -isreadonly:$true
$_ | Set-Disk -isoffline:$true
}
Get-Disk | Where Number -Ne $Null | Where IsBoot -Ne $True | Where IsSystem -Ne $True | Where PartitionStyle -Eq RAW | Group -NoElement -Property FriendlyName
} | Sort -Property PsComputerName, Count
例如:
# Fill in these variables with your values
$ServerList = "S2D1", "S2D2"
Invoke-Command ($ServerList) {
Update-StorageProviderCache
Get-StoragePool | ? IsPrimordial -eq $false | Set-StoragePool -IsReadOnly:$false -ErrorAction SilentlyContinue
Get-StoragePool | ? IsPrimordial -eq $false | Get-VirtualDisk | Remove-VirtualDisk -Confirm:$false -ErrorAction SilentlyContinue
Get-StoragePool | ? IsPrimordial -eq $false | Remove-StoragePool -Confirm:$false -ErrorAction SilentlyContinue
Get-PhysicalDisk | Reset-PhysicalDisk -ErrorAction SilentlyContinue
Get-Disk | ? Number -ne $null | ? IsBoot -ne $true | ? IsSystem -ne $true | ? PartitionStyle -ne RAW | % {
$_ | Set-Disk -isoffline:$false
$_ | Set-Disk -isreadonly:$false
$_ | Clear-Disk -RemoveData -RemoveOEM -Confirm:$false
$_ | Set-Disk -isreadonly:$true
$_ | Set-Disk -isoffline:$true
}
Get-Disk | Where Number -Ne $Null | Where IsBoot -Ne $True | Where IsSystem -Ne $True | Where PartitionStyle -Eq RAW | Group -NoElement -Property FriendlyName
} | Sort -Property PsComputerName, Count
輸出結果中計數是每一個模型中的每一個服務器的磁盤數
驗證羣集
在每一臺S2D服務器補充安裝以下管理工具
在其中一臺S2D服務器上執行驗證:
建立羣集
在其中一臺S2D的服務器上執行:
New-Cluster -Name S2D01 -Node "S2D1","S2D2" -StaticAddress 10.20.30.60 -NoStorage
配置羣集見證
配置在羣集的見證服務器,以便具備三個或多個服務器羣集能夠承受兩臺服務器發生故障或處於脫機狀態。雙服務器部署須要羣集見證,不然進入脫機狀態的任一服務器會致使另外一個也變得不可用
在這裏我是2節點的S2D測試環境,所以我在DC服務器上建立一個共享文件夾
在DC的共享見證文件夾裏就自動生成了見證文件了
啓用S2D
Enable-ClusterStorageSpacesDirect -CimSession <ClusterName>
在其中一臺S2D服務器上執行:
例如:
Enable-ClusterStorageSpacesDirect -CimSession S2D01
出現以下報錯:
在Windows Server 2019中禁用了Enable-ClusterStorageSpacesDirect功能。其緣由在於Microsoft正在爲硬件供應商提供Windows Server 2019的硬件認證,可是您能夠添加到羣集節點的簡單註冊表項經過開啓S2D(固然微軟不建議這樣操做)
在每臺S2D的服務器上用powershell執行
New-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\ClusSvc\Parameters" -Name S2D -Value 1 -PropertyType DWORD -Force
執行完成後註冊表會新增以下一條記錄
接下來再啓用S2D
Enable-ClusterStorageSpacesDirect -CimSession S2D01
可經過Get-ClusterStorageSpacesDirect檢查S2D狀態
建立卷
能夠參考https://docs.microsoft.com/zh-cn/windows-server/storage/storage-spaces/create-volumes
在這裏我使用Windows Admin Center來建立卷
添加好後點擊進入超聚合羣集管理器
也能夠打開卷,添加上傳文件等操做
這就等於建立好了羣集共享卷
剩下的就是按照傳統方式能夠在這個羣集共享卷裏去建立虛擬機來跑了
接下來要給你們介紹一個新特性,是Windows Server 2019針對雙節點保證數據可用性的新功能:
S2D的嵌套復原能力:
參考自:https://docs.microsoft.com/en-us/windows-server/storage/storage-spaces/nested-resiliency
羣集裏的兩個服務器可以承受多個硬件故障時不會丟失存儲可用性,所以用戶、應用、 Windows Server 2019和虛擬機繼續運行而不發生中斷
與經典雙向鏡像復原能力不一樣的是:使用嵌套的復原能力的卷即便多個硬件故障發生在同一時間也將保持聯機和可訪問。例如,若是兩個磁盤故障一次或一臺服務器出現故障時,使用嵌套復原能力的卷將保持聯機和可訪問。對於超聚合基礎結構,這將增長應用和虛擬機;的運行的時間,對於文件服務器工做負載意味着用戶享有不間斷地的訪問他們的文件能力
弊端是比經典的雙向鏡像而言,具備該嵌套復原能力會進一步下降可用容量空間。
使用此功能,將擁有比傳統雙向鏡像更低的容量,但能夠得到更高的可靠性,這是超融合基礎架構的基礎,克服了之前版本的Windows Server中存在的羣集環境限制:只有兩節。不須要特定的硬件實現兩個新的選項:
嵌套雙向鏡像:在每一個服務器中,本地使用雙向鏡像,兩個服務器之間的雙向鏡像保證了進一步的彈性。實際上它是一個四向鏡像,每一個服務器有兩個數據副本。
嵌套鏡像加速奇偶校驗:前面描述的雙向鏡像與嵌套奇偶校驗相結合
先決條件:
可用使用嵌套復原能力
羣集中運行的是Windows Server 2019且羣集裏只有2個服務器節點
不能使用嵌套復原能力
羣集中運行的是Windows Server 2016或羣集裏有3個或3個以上的服務器節點
具體的容量消耗保證數據可用性的嵌套復原能力可用空間算法請參看上面連接,我大概總結下就是:
嵌套復原能力也分爲2種
嵌套雙向鏡像:可用空間爲總磁盤可用空間的25%
嵌套的鏡像加速奇偶校驗:可用空間爲總磁盤可用空間的35%~40%
傳統的雙向鏡像可用空間爲總磁盤可用空間的50%
在這裏我建立一個嵌套雙向鏡像存儲模板和一個嵌套的鏡像加速奇偶校驗存儲模板
嵌套雙向鏡像存儲模板
New-StorageTier -StoragePoolFriendlyName S2D* -FriendlyName NestedMirror -ResiliencySettingName Mirror -MediaType HDD -NumberOfDataCopies 4
嵌套的鏡像加速奇偶校驗存儲模板
New-StorageTier -StoragePoolFriendlyName S2D* -FriendlyName NestedParity -ResiliencySettingName Parity -MediaType HDD -NumberOfDataCopies 2 -PhysicalDiskRedundancy 1 -NumberOfGroups 1 -FaultDomainAwareness StorageScaleUnit -ColumnIsolation PhysicalDisk
備註:若是容量磁盤是固態硬盤 (SSD),設置-MediaType爲SSD便可,不要修改其餘參數
驗證是否建立成功:Get-StorageTier
接下來建立嵌套的雙向鏡像卷
New-Volume -StoragePoolFriendlyName S2D* -FriendlyName Volume02 -StorageTierFriendlyNames NestedMirror -StorageTierSizes 10GB
最後再建立一個嵌套的鏡像加速奇偶校驗卷
若要使用嵌套的鏡像加速奇偶校驗,能夠同時引用NestedMirror和NestedParity層模板並指定兩個大小,用於不一樣的卷(首先是鏡像部分大小,其次是奇偶校驗部分大小)。 例如,若要建立一個是 20%嵌套雙向鏡像和 80%的 10GB 卷嵌套奇偶校驗
New-Volume -StoragePoolFriendlyName S2D* -FriendlyName Volume03 -StorageTierFriendlyNames NestedMirror, NestedParity -StorageTierSizes 2GB, 8GB
除了這些好的功能外,固然還有其餘相似Azure公有云上的故障感知域功能,在本地也能夠實現了,從站點到機櫃到刀片服務器刀箱到刀片服務器均可以作不一樣的容錯域級別,若是對這塊感興趣,能夠參看:https://docs.microsoft.com/zh-cn/windows-server/failover-clustering/fault-domains
好了,這麼好的功能就介紹到這了,更多精彩內容期待您的關注,謝謝。