向存储空间直通添加服务器或驱动器

本主题介绍如何向存储空间直通添加服务器或驱动器。

添加服务器

添加服务器(也称为横向扩展)将增加存储容量,并能提高存储性能和实现更高的存储效率。 如果是超聚合部署,添加服务器还可为你的工作负载提供更多计算资源。

向四节点群集添加服务器的动画

通过添加服务器,典型的部署很容易实现横向扩展。 只需两步:

  1. 使用故障转移群集管理单元或使用 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 域服务域,具有全部所需角色和功能,并已正确配置了网络。

    Important

    如果重新使用包含不再需要的旧数据或元数据的驱动器,请使用 磁盘管理Reset-PhysicalDisk cmdlet 清除它们。 如果检测到旧数据或元数据,则不会共用驱动器。

  2. 在群集上运行以下 cmdlet 以完成服务器添加:

Add-ClusterNode -Name NewNode

Note

自动池取决于你只有一个池。 如果绕过了创建多个池的标准配置,则需要使用 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 模板,使其同时具有性能和容量层,因为如果你在四台服务器上首次运行 Enable-ClusterS2D,则会创建它们。 具体而言,这两个层都应具有容量设备的 MediaType (如 SSD 或 HDD)和 PhysicalDiskRedundancy = 2性能层应为 ResiliencySettingName = Mirror容量层应为 ResiliencySettingName = 奇偶校验

选项 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

就是这样! 现在,你已准备好通过引用这些层模板来创建镜像加速奇偶校验卷。

Example

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)。 无需任何操作即可开始享用全新效率;每次创建卷时都会自动确定最佳编码。

但是,任何预先存在的卷 都不会 “转换为新的更广泛的编码”。 一个主要的原因是,这样做将需要大量计算,而这会对整个部署中的每一个位都产生影响。 若要以较高的效率对预存在的数据进行编码,你可以将其迁移到新卷。

有关更多详细信息,请参阅容错和存储效率

使用机箱或机架容错时添加服务器

如果你的部署使用机箱或机架容错,则必须在将它们添加到群集之前指定新服务器的机箱或机架。 这将告知“存储空间直通”如何最好地分发数据以最大化容错能力。

  1. 打开提升的 PowerShell 会话,然后使用以下命令(其中 <NewNode> 是新的群集节点名称),为节点创建一个临时故障域:

    New-ClusterFaultDomain -Type Node -Name <NewNode>
    
  2. 按照 <ParentName> 所指定的位置将此临时故障域移动到新服务器在现实环境中位于的机箱或机架中:

    Set-ClusterFaultDomain -Name <NewNode> -Parent <ParentName>
    

    有关详细信息,请参阅 Windows Server 2016 中的容错域感知

  3. 添加服务器中所述,将服务器添加到群集。 当新服务器加入群集时,它会自动(使用其名称)与占位符容错域相关联。

添加驱动器

添加驱动器(也称为纵向扩展)将增加存储容量并提高性能。 如果有空闲插槽,则无需添加服务器便可将驱动器添加到每个服务器,从而扩展你的存储容量。 你可以随时单独添加缓存驱动器或容量驱动器。

Important

强烈建议所有服务器都使用相同的存储配置。

显示向系统添加驱动器的动画

若要纵向扩展,请连接驱动器并验证 Windows 是否能够发现它们。 它们应显示在 PowerShell 中 Get-PhysicalDisk cmdlet 的输出中,其 CanPool 属性设置为 True。 如果它们显示为“CanPool = False”,则可通过检查其“CannotPoolReason”属性来查看原因

Get-PhysicalDisk | Select SerialNumber, CanPool, CannotPoolReason

在短时间内,符合条件的驱动器将由“存储空间直通”自动声明并添加到存储池,卷将跨所有驱动器自动均匀地重新分布。 此时,你已完成并已准备好扩展卷创建新卷了。

如果驱动器未出现,可手动扫描检测硬件改动。 可以使用“”菜单下的“设备管理器”完成此作。 如果它们包含旧数据或元数据,请考虑对其重格式化。 可以使用 磁盘管理Reset-PhysicalDisk cmdlet 来完成此作。

Note

自动池取决于你只有一个池。 如果绕过了创建多个池的标准配置,则需要使用 Add-PhysicalDisk 自行将新驱动器添加到首选池。

添加驱动器或服务器后优化驱动器使用情况

在一段时间内,随着驱动器的添加或删除,池中驱动器之间的数据分布可能会变得不均匀。 在某些情况下,这可能导致某些驱动器已满,而池中其他驱动器使用量要低得多。

为了使整个池中的驱动器保持均匀分配,存储空间直通会在你向池中添加驱动器或服务器后自动优化驱动器的使用情况(对于使用共享 SAS 机箱的存储空间系统,该过程需要手动完成)。 优化会在你向池中添加新的驱动器后的 15 分钟开始。 池优化作为低优先级后台操作运行,因此可能需要数小时或数天才能完成,尤其是使用大型硬盘驱动器更是如此。

优化使用两个作业(一个名为 Optimize 和一个名为 Rebalance ),可以使用以下命令监视其进度:

Get-StorageJob

可以使用 Optimize-StoragePool cmdlet 手动优化存储池。 下面是一个示例:

Get-StoragePool <PoolName> | Optimize-StoragePool