存储空间直通的嵌套复原

适用范围:Azure Stack HCI 版本 21H2 和 20H2;Windows Server 2022 和 Windows Server 2019

嵌套复原是 Azure Stack HCI 和 Windows Server 中存储空间直通的一项功能。 它使双服务器群集能够同时承受多个硬件故障,而不会损失存储可用性,因此用户、应用和虚拟机可以继续运行而不会中断。 本文介绍嵌套复原的工作原理,提供入门的分步说明,并回答最常见的问题。

准备阶段

在以下情况下考虑嵌套复原:

  • 群集运行以下操作系统之一:Azure Stack HCI 版本 21H2、Azure Stack HCI 版本 20H2、Windows Server 2022 或 Windows Server 2019;以及
  • 群集正好有两个服务器节点。

在以下情况下无法使用嵌套复原:

  • 群集运行 Windows Server 2016;或者
  • 群集只有一个服务器节点或有三个及以上服务器节点。

为什么嵌套复原

与经典的双向镜像复原不同,即使同时发生多个硬件故障,使用嵌套弹性的卷也可以保持联机和可访问状态。 例如,如果两个驱动器同时发生故障,或者如果一个服务器关闭而一个驱动器发生故障,则使用嵌套复原的卷将保持联机和可访问状态。 对于超聚合基础结构,这会增加应用和虚拟机的运行时间;对于文件服务器工作负载,这意味着用户可以不间断地访问其文件。

显示存储可用性的示意图。

需要权衡的问题是,嵌套复原的容量效率低于经典的双向镜像,这意味着获得的可用空间略少。 有关详细信息,请参阅以下部分的容量效率

工作原理

本部分提供存储空间直通嵌套复原的背景知识,并介绍两个新的复原选项及其容量效率。

灵感:RAID 5+1

RAID 5+1 是一种既定形式的分布式存储复原,可为理解嵌套复原提供有用的背景知识。 在 RAID 5+1 中,在每个服务器中,RAID-5 或单奇偶校验提供本地复原,以防止丢失任何单个驱动器。 然后,RAID-1 或双向镜像在两个服务器之间提供进一步的复原,以防止丢失其中任一服务器。

显示 RAID 5+1 的示意图。

复原选项

Azure Stack HCI 和 Windows Server 中的存储空间直通提供了两种在软件中实现的复原选项,无需专门的 RAID 硬件:

  • 嵌套双向镜像。 在每个服务器中,双向镜像提供本地复原,然后两个服务器之间的双向镜像提供进一步的复原。 这本质上是一种四向镜像,每个服务器上有两个副本,位于不同的物理磁盘上。 嵌套双向镜像提供了强大的性能:写入到所有副本,读取自所有副本。

    显示嵌套双向镜像的示意图。

  • 嵌套镜像加速奇偶校验。 将前一个图像中的嵌套双向镜像与嵌套奇偶校验相结合。 在每个服务器中,大多数数据的本地复原由单个位奇偶校验算法提供,但最近使用双向镜像的新写入除外。 然后,服务器之间的双向镜像为所有数据提供进一步的复原。 对卷的新写入进入镜像部分,每个服务器上的物理磁盘上分别有一个副本。 随着卷的镜像部分在每个服务器上填充,最早的数据将转换并在后台保存到奇偶校验部分。 因此,每个服务器都以双向镜像或单一奇偶校验结构的形式拥有卷的数据。 这类似于镜像加速奇偶校验的工作原理,不同之处在于镜像加速奇偶校验需要群集和存储池中有四个服务器,并使用不同的奇偶校验算法。

    显示嵌套镜像加速奇偶校验的示意图。

容量效率

容量效率是可用空间与卷占用情况的比率。 它描述因复原而引起的容量开销,并取决于所选复原选项。 举个简单的例子,没有复原的数据存储的容量效率为 100%(1 TB 的数据占用 1 TB 的物理存储容量),而双向镜像的效率为 50%(1 TB 的数据占用 2 TB 的物理存储容量)。

  • 嵌套双向镜像写入所有内容的四个副本。 这意味着要存储 1 TB 的数据,需要 4 TB 的物理存储容量。 尽管其简单性很吸引人,但嵌套双向镜像的容量效率为 25%,是存储空间直通的所有复原选项中最低的。

  • 嵌套镜像加速奇偶校验可实现更高的容量效率,大约 35%-40%,这取决于两个因素:每个服务器中的容量驱动器数,以及为卷指定的镜像和奇偶校验组合。 此表提供了常见配置的查找:

    每个服务器的容量驱动器数 10% 镜像 20% 镜像 30% 镜像
    4 35.7% 34.1% 32.6%
    5 37.7% 35.7% 33.9%
    6 39.1% 36.8% 34.7%
    7+ 40.0% 37.5% 35.3%

    以下是完整数学示例。 假设我们在两个服务器中各有六个容量驱动器,并且我们要创建一个 100 GB 的卷,其中包含 10 GB 的镜像和 90 GB 的奇偶校验。 服务器本地双向镜像的效率为 50.0%,这意味着 10 GB 的镜像数据存储在每个服务器上需要 20 GB 空间。 镜像到两个服务器,其总占用空间为 40 GB。 在这种情况下,服务器本地单一奇偶校验的效率为 5/6 = 83.3%,这意味着 90 GB 的奇偶校验数据存储在每个服务器上需要 108 GB 空间。 镜像到两个服务器,其总占用空间为 216 GB。 因此,总占用空间为 [(10 GB / 50.0%) + (90 GB / 83.3%)] × 2 = 256 GB,总容量效率为 39.1%。

    请注意,经典双向镜像(约 50%)和嵌套镜像加速奇偶校验(最高 40%)的容量效率差别不大。 根据要求,选择稍低的容量效率来显著提高存储可用性是非常值得的。 可以选择每个卷的复原,以便在同一群集中混合嵌套复原卷和经典双向镜像卷。

    显示双向镜像和嵌套镜像加速奇偶校验之间权衡的示意图。

创建嵌套复原卷

可以在 PowerShell 中使用熟悉的存储 cmdlet 创建具有嵌套复原能力的卷,如以下部分所述。

步骤 1:创建存储层模板(仅限 Windows Server 2019)

Windows Server 2019 要求在创建卷之前使用 New-StorageTier cmdlet 创建新的存储层模板。 只需执行一次此操作,然后创建的每个新卷都可以引用这些模板。

注意

如果正在 Windows Server 2022、Azure Stack HCI 21H2 或 Azure Stack HCI 20H2 上运行,则可以跳过此步骤。

指定容量驱动器的 -MediaType,并可选择性地指定 -FriendlyName。 请勿修改其他参数。

例如,如果容量驱动器是硬盘驱动器 (HDD),则请以管理员的身份启动 PowerShell 并运行以下 cmdlet。

若要创建 NestedMirror 层,请使用以下命令:

New-StorageTier -StoragePoolFriendlyName S2D* -FriendlyName NestedMirrorOnHDD -ResiliencySettingName Mirror -MediaType HDD -NumberOfDataCopies 4

若要创建 NestedParity 层,请使用以下命令:

New-StorageTier -StoragePoolFriendlyName S2D* -FriendlyName NestedParityOnHDD -ResiliencySettingName Parity -MediaType HDD -NumberOfDataCopies 2 -PhysicalDiskRedundancy 1 -NumberOfGroups 1 -FaultDomainAwareness StorageScaleUnit -ColumnIsolation PhysicalDisk

如果容量驱动器是固态硬盘 (SSD),则请将 -MediaType 设置为 SSD,并将 -FriendlyName 更改为 *OnSSD。 请勿修改其他参数。

提示

验证 Get-StorageTier 是否成功创建了层。

步骤 2:创建嵌套卷

使用 New-Volume cmdlet 创建新卷。

  • 嵌套双向镜像

    若要使用嵌套双向镜像,请参考 NestedMirror 层模板并指定大小。 例如:

    New-Volume -StoragePoolFriendlyName S2D* -FriendlyName Volume01 -StorageTierFriendlyNames NestedMirrorOnHDD -StorageTierSizes 500GB
    

    如果容量驱动器是固态硬盘 (SSD),则请将 -StorageTierFriendlyNames 更改为 *OnSSD

  • 嵌套镜像加速奇偶校验

    若要使用嵌套镜像加速奇偶校验,请同时引用 NestedMirrorNestedParity 层模板并指定两个大小,分别用于卷的每个部分(镜像第一个,奇偶校验第二个)。 例如,若要创建一个 20% 嵌套双向镜像和 80% 嵌套奇偶校验的 500 GB 卷,请运行:

    New-Volume -StoragePoolFriendlyName S2D* -FriendlyName Volume02 -StorageTierFriendlyNames NestedMirrorOnHDD, NestedParityOnHDD -StorageTierSizes 100GB, 400GB
    

    如果容量驱动器是固态硬盘 (SSD),则请将 -StorageTierFriendlyNames 更改为 *OnSSD

步骤 3:在 Windows Admin Center 中继续操作

使用嵌套复原的卷以清晰的标签显示在 Windows Admin Center 中,如以下屏幕截图所示。 创建这些卷后,可以使用 Windows Admin Center 管理和监视它们,就像存储空间直通中的任何其他卷一样。

Windows Admin Center 中的卷管理

可选:扩展到缓存驱动器

借助其默认设置,嵌套复原可防止同时丢失多个容量驱动器,或防止同时丢失一个服务器和一个容量驱动器。 要将这种保护扩展到缓存驱动器,有一个额外的注意事项:因为缓存驱动器通常为多个容量驱动器提供读写缓存,因此,确保可以容忍在其他服务器关闭时丢失缓存驱动器的唯一方法是不缓存写入,但这会影响性能。

为解决这种情况,存储空间直通提供了选项,可在双服务器群集中的一个服务器关闭时自动禁用写入缓存,然后在服务器备份后重新启用写入缓存。 为了在不影响性能的情况下允许例行重启,在服务器关闭后 30 分钟内不会禁用写入缓存。 禁用写入缓存后,写入缓存的内容将写入容量设备。 在此之后,服务器可以容忍联机服务器中出现故障的缓存设备,但如果缓存设备出现故障,从缓存中读取可能会延迟或失败。

注意

对于全缓存(单一介质类型)物理系统,无需考虑在双服务器群集中的一个服务器关闭时自动禁用写入缓存。 仅在使用存储总线层 (SBL) 缓存时才需要考虑这一点,这种缓存仅在使用 HDD 时才需要。

(可选)要在双服务器群集中的一个服务器关闭时自动禁用写入缓存,请以管理员身份启动 PowerShell 并运行:

Get-StorageSubSystem Cluster* | Set-StorageHealthSetting -Name "System.Storage.NestedResiliency.DisableWriteCacheOnNodeDown.Enabled" -Value "True"

设置为“True”时,缓存行为是:

场景 缓存行为 是否可以容忍缓存驱动器丢失?
两个服务器都启动 缓存读取和写入,全性能
服务器关闭,前 30 分钟内 缓存读取和写入,全性能 否(暂时)
前 30 分钟后 缓存只读,性能受影响 是(在将缓存写入容量驱动器之后)

常见问题

查找有关嵌套复原的常见问题解答。

是否可以在双向镜像和嵌套复原之间转换现有卷?

否,无法在复原类型之间转换卷。 对于 Azure Stack HCI、Windows Server 2022 或 Windows Server 2019 上的新部署,请提前确定最适合你需求的复原类型。 如果从 Windows Server 2016 升级,可以创建具有嵌套复原能力的新卷、迁移数据,然后删除旧卷。

是否可以将嵌套复原与多种类型的容量驱动器配合使用?

是,只需在上述步骤 1 期间相应地指定每一层的 -MediaType。 例如,NVMe、SSD 和 HDD 在同一群集中,NVMe 提供缓存,而后两者提供容量:将 NestedMirror 层设置为 -MediaType SSD,将 NestedParity 层设置为 -MediaType HDD。 在这种情况下,奇偶校验容量效率仅取决于 HDD 驱动器的数量,并且每个服务器至少需要 4 个 HDD 驱动器。

是否可以对三个或更多服务器使用嵌套复原?

否,仅当群集正好有两个服务器时,才使用嵌套复原。

需要多少个驱动器才能使用嵌套复原?

存储空间直通所需的最小驱动器数量是每个服务器节点四个容量驱动器,加上每个服务器节点两个缓存驱动器(如果有)。 此要求从 Windows Server 2016 开始未发生变化。 对嵌套复原没有其他要求,对保留容量的建议也没有变化。

嵌套复原是否会更改驱动器替换的工作方式?

否。

嵌套复原是否会更改服务器节点替换的工作方式?

否。 若要替换服务器节点及其驱动器,请按以下顺序操作:

  1. 停用传出服务器中的驱动器
  2. 将新服务器及其驱动器添加到群集
  3. 存储池将重新平衡
  4. 删除传出服务器及其驱动器

有关详细信息,请参阅删除服务器一文。

后续步骤