本主题介绍如何向存储空间直通添加服务器或驱动器。
添加服务器
添加服务器(也称为横向扩展)将增加存储容量,并能提高存储性能和实现更高的存储效率。 如果是超聚合部署,添加服务器还可为你的工作负载提供更多计算资源。
通过添加服务器,典型的部署很容易实现横向扩展。 只需两步:
使用故障转移群集管理单元或使用 PowerShell 中的 Test-Cluster cmdlet 运行群集验证向导(以管理员身份运行)。 包括要添加的新服务器 <>NewNode。
Test-Cluster -Node <Node>, <Node>, <Node>, <NewNode> -Include "Storage Spaces Direct", Inventory, Network, "System Configuration"
由此确认正在运行 Windows Server 2016 Datacenter Edition 的新服务器与现有服务器一样已加入 Active Directory 域服务域,具有全部所需角色和功能,并已正确配置了网络。
重要
如果重新使用包含不再需要的旧数据或元数据的驱动器,请使用“磁盘管理”或 Reset-PhysicalDisk cmdlet 清除它们。 如果检测到旧数据或元数据,则不会共用驱动器。
在群集上运行以下 cmdlet 以完成服务器添加:
Add-ClusterNode -Name NewNode
注意
自动池取决于你只有一个池。 如果已规避标准配置来创建多个池,则需要使用 Add-physicaldisk 自行将新驱动器添加到首选池。
2 至 3 个服务器:解锁三向镜像
通过两个服务器仅可创建双向镜像卷(相较于分布式 RAID-1)。 通过三个服务器可以创建三向镜像卷,以提高容错能力。 建议尽可能使用三向镜像。
双向镜像卷无法就地升级到三向镜像。 相反,你可以创建一个新卷并将数据迁移(复制,例如使用存储副本)到该卷,然后删除旧卷。
若要开始创建三向镜像卷,你有几个不错的选项。 可以自由选择其中之一。
选项 1
创建时在每个新卷上指定“PhysicalDiskRedundancy = 2”。
New-Volume -FriendlyName <Name> -FileSystem CSVFS_ReFS -StoragePoolFriendlyName S2D* -Size <Size> -PhysicalDiskRedundancy 2
选项 2
可以改为在池中名为“Mirror”的“ResiliencySetting”对象上设置“PhysicalDiskRedundancyDefault = 2”。 然后,所有新的镜像卷都将自动使用三向镜像,即使未指定它也是如此。
Get-StoragePool S2D* | Get-ResiliencySetting -Name Mirror | Set-ResiliencySetting -PhysicalDiskRedundancyDefault 2
New-Volume -FriendlyName <Name> -FileSystem CSVFS_ReFS -StoragePoolFriendlyName S2D* -Size <Size>
选项 3
在名为“Capacity”的“StorageTier”模板上设置“PhysicalDiskRedundancy = 2”,然后通过引用层来创建卷。
Set-StorageTier -FriendlyName Capacity -PhysicalDiskRedundancy 2
New-Volume -FriendlyName <Name> -FileSystem CSVFS_ReFS -StoragePoolFriendlyName S2D* -StorageTierFriendlyNames Capacity -StorageTierSizes <Size>
3 至 4 个服务器:解锁双重奇偶校验
通过四个服务器可以使用双重奇偶校验,通常也称为删除编码(相较于分布式 RAID-6)。 这提供了与三向镜像相同的容错,但存储效率更高。 若要了解详细信息,请参阅容错和存储效率。
部署规模更小时,若要开始创建双重奇偶校验卷,你有几个不错的选项。 可以自由选择其中之一。
选项 1
创建时在每个新卷上指定“PhysicalDiskRedundancy = 2”和“ResiliencySettingName = Parity”。
New-Volume -FriendlyName <Name> -FileSystem CSVFS_ReFS -StoragePoolFriendlyName S2D* -Size <Size> -PhysicalDiskRedundancy 2 -ResiliencySettingName Parity
选项 2
在池中名为“Parity”的“ResiliencySetting”对象上设置“PhysicalDiskRedundancy = 2”。 然后,所有新的奇偶校验卷都将自动使用双重奇偶校验,即使未指定它也是如此
Get-StoragePool S2D* | Get-ResiliencySetting -Name Parity | Set-ResiliencySetting -PhysicalDiskRedundancyDefault 2
New-Volume -FriendlyName <Name> -FileSystem CSVFS_ReFS -StoragePoolFriendlyName S2D* -Size <Size> -ResiliencySettingName Parity
有四个服务器时,也可以开始使用镜像加速奇偶校验,其中单个卷为部分镜像,部分奇偶校验。
为此,需要更新“StorageTier”模板,以同时具有“Performance”和“Capacity”层,因为如果首先在四个服务器运行“Enable-ClusterS2D”,则会创建层。 具体来说,这两个层应设置容量设备(例如 SSD 或 HDD)的“MediaType”,且“PhysicalDiskRedundancy = 2”。 Performance 层应为 ResiliencySettingName = Mirror,Capacity 层应为 ResiliencySettingName = Parity。
选项 3
你可能会发现,最省事的方式只需删除现有层模板并创建两个新的即可。 这不会影响通过引用层模板创建的预先存在的任何卷:它只是一个模板。
Remove-StorageTier -FriendlyName Capacity
New-StorageTier -StoragePoolFriendlyName S2D* -MediaType HDD -PhysicalDiskRedundancy 2 -ResiliencySettingName Mirror -FriendlyName Performance
New-StorageTier -StoragePoolFriendlyName S2D* -MediaType HDD -PhysicalDiskRedundancy 2 -ResiliencySettingName Parity -FriendlyName Capacity
就这么简单! 现在,你已准备好通过引用这些层模板来创建镜像加速奇偶校验卷。
示例
New-Volume -FriendlyName "Sir-Mix-A-Lot" -FileSystem CSVFS_ReFS -StoragePoolFriendlyName S2D* -StorageTierFriendlyNames Performance, Capacity -StorageTierSizes <Size, Size>
超过 4 个服务器:奇偶校验效率更高
如扩展超过四个服务器,则新卷可以受益于越来越大的奇偶校验编码效率。 例如,在六和七个服务器之间效率可从 50.0% 提高到 66.7%,因为变得可以使用 Reed Solomon 4 + 2(而不是 2 + 2)。 无需任何操作即可开始享用全新效率;每次创建卷时都会自动确定最佳编码。
但是,任何预先存在的卷将不被“转换”为新的更广的编码。 一个主要的原因是,这样做将需要大量计算,而这会对整个部署中的每一个位都产生影响。 若要以较高的效率对预存在的数据进行编码,你可以将其迁移到新卷。
有关更多详细信息,请参阅容错和存储效率。
使用机箱或机架容错时添加服务器
如果你的部署使用机箱或机架容错,则必须在将它们添加到群集之前指定新服务器的机箱或机架。 这将告知“存储空间直通”如何最好地分发数据以最大化容错能力。
打开提升的 PowerShell 会话,然后使用以下命令(其中 <>NewNode 是新的群集节点名称),为节点创建一个临时故障域:
New-ClusterFaultDomain -Type Node -Name <NewNode>
按照 <>ParentName 所指定的位置将此临时故障域移动到新服务器在现实环境中位于的机箱或机架中:
Set-ClusterFaultDomain -Name <NewNode> -Parent <ParentName>
有关详细信息,请参阅 Windows Server 2016 中的容错域感知
如添加服务器中所述将服务器添加到群集。 当新服务器加入群集时,它会自动(使用其名称)与占位符容错域相关联。
添加驱动器
添加驱动器(也称为纵向扩展)将增加存储容量并提高性能。 如果有空闲插槽,则无需添加服务器便可将驱动器添加到每个服务器,从而扩展你的存储容量。 你可以随时单独添加缓存驱动器或容量驱动器。
重要
强烈建议所有服务器都使用相同的存储配置。
若要纵向扩展,请连接驱动器并验证 Windows 是否能够发现它们。 它们应出现在 PowerShell 中 Get-PhysicalDisk cmdlet 的输出中,且“CanPool”属性设置为“True”。 如果它们显示为“CanPool = False”,则可通过检查其“CannotPoolReason”属性来查看原因。
Get-PhysicalDisk | Select SerialNumber, CanPool, CannotPoolReason
在短时间内,符合条件的驱动器将由“存储空间直通”自动声明并添加到存储池,卷将跨所有驱动器自动均匀地重新分布。 此时,你已完成并已准备好扩展卷或创建新卷了。
如果驱动器未出现,可手动扫描检测硬件改动。 使用“操作”菜单下的“设备管理器”可以完成此操作。 如果它们包含旧数据或元数据,请考虑对其重格式化。 使用“磁盘管理”或 Reset-PhysicalDisk cmdlet 可以完成此操作。
注意
自动池取决于你只有一个池。 如果已规避标准配置来创建多个池,则需要使用 Add-physicaldisk 自行将新驱动器添加到首选池。
添加驱动器或服务器后优化驱动器使用情况
在一段时间内,随着驱动器的添加或删除,池中驱动器之间的数据分布可能会变得不均匀。 在某些情况下,这可能导致某些驱动器已满,而池中其他驱动器使用量要低得多。
为了使整个池中的驱动器保持均匀分配,存储空间直通会在你向池中添加驱动器或服务器后自动优化驱动器的使用情况(对于使用共享 SAS 机箱的存储空间系统,该过程需要手动完成)。 优化会在你向池中添加新的驱动器后的 15 分钟开始。 池优化作为低优先级后台操作运行,因此可能需要数小时或数天才能完成,尤其是使用大型硬盘驱动器更是如此。
优化使用两个作业(分别是“优化”和“再平衡”),通过以下命令可监视这些作业的进度:
Get-StorageJob
使用 Optimize-StoragePool cmdlet 可手动优化存储池。 下面是一个示例:
Get-StoragePool <PoolName> | Optimize-StoragePool