在部署以前仍是须要了解下硬件要求:算法
其中重点是: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
好了,这么好的功能就介绍到这了,更多精彩内容期待您的关注,谢谢。