教程:在独立服务器上使用存储空间启用存储总线缓存

独立服务器的存储总线缓存可以显著提高读取和写入性能,同时保持存储效率和较低的操作成本。 此功能将速度较快的媒体(例如 SSD)与速度较慢的媒体(例如 HDD)绑定在一起来创建层。 有关详细信息,请参阅了解存储池缓存。 默认情况下,只会保留较快媒体层的一部分用于缓存。

复原能力 缓存类型
无(简单空间) 读取和写入
镜像加速奇偶校验 读取

如果系统不需要复原能力或者具有外部备份,则存储总线缓存支持读取和写入缓存。 对于复原系统,存储总线缓存仅用作读取缓存,你应该选择复原文件系统 (ReFS) 镜像加速奇偶校验来获得卷复原能力。 这种组合提高了随机读取性能,因为数据将从奇偶校验层读取并缓存在较快的镜像层上。 如果“预配模式”设置为“共享”(默认),镜像层还能提供写入缓存功能。

存储总线缓存读取和写入路径的示意图。

在本教程中,你将学习:

  • 什么是存储总线缓存
  • 如何启用存储总线缓存
  • 在部署后管理缓存

先决条件

如果你的环境符合以下所有特征,则应考虑使用存储总线缓存

  • 服务器运行 Windows Server 2022;并且
  • 服务器上有 2 种媒体/驱动器类型,其中一种类型必须是 HDD(例如:SSD+HDD 或 NVMe+HDD);并且
  • 服务器上安装了故障转移群集功能

如果你的环境符合以下任何特征,则不能使用存储总线缓存

  • 服务器运行 Windows Server 2016 或 2019;或者
  • 服务器采用全闪存配置;或者
  • 服务器是故障转移群集的成员

注意

此功能要求在服务器上安装故障转移群集功能,但服务器不能是故障转移群集的一部分。

功能概述

本部分将解释存储总线缓存的每个可配置字段以及适用的值。

Get-StorageBusCache

未启用时,输出应如以下示例所示:

ProvisionMode                  : Shared
SharedCachePercent             : 15
CacheMetadataReserveBytes      : 34359738368
CacheModeHDD                   : ReadWrite
CacheModeSSD                   : WriteOnly
CachePageSizeKBytes            : 16
Enabled                        : False

注意

对于常规用途,应使用默认设置。 必须在启用存储总线缓存之前进行任何更改。

预配模式

此字段确定是要将较快媒体层用于缓存,还是仅将此层的一部分用于缓存。 启用存储总线缓存后无法修改此字段。 预配模式有两个选项:

  • 共享(默认):缓存将只占用较快媒体层的一部分。 确切的百分比可通过“共享缓存百分比”字段配置。
  • 缓存:将大部分而不是小部分较快媒体层专用于缓存。 有关详细信息,请参阅了解存储池缓存

共享缓存百分比

仅当“预配模式”设置为“共享”时,此字段才适用。 默认值为 15%,该字段可设置为 5% 到 90%。 使用镜像加速奇偶校验卷时,不应使用超过 50% 的值,因为缓存与镜像层之间需要平衡。

Enabled

此字段引用存储总线缓存的状态,可为 true 或 false。

高级字段

重要

不建议对这些字段进行更改。 启用存储总线缓存后无法做出调整。

  • 缓存元数据保留字节数:为存储空间保留的磁盘空间量(以字节为单位)。 仅当“预配模式”为“缓存”时,才应用此字段。

  • 缓存模式 HDD:默认设置为允许 HDD 容量设备缓存读取和写入。 对于简单空间,可将此设置指定为“读写”或“只写”。

  • 缓存模式 SSD:此模式供将来支持全闪存系统时使用。 默认设置为允许 SSD 容量设备仅缓存写入。

  • 缓存页大小(KB):此字段可设置为 8、16(默认)、32 和 64。

在 PowerShell 中启用存储总线缓存

本部分提供有关如何在 PowerShell 中为独立服务器启用存储总线缓存的分步指南。

  1. 导入模块。

    Import-Module StorageBusCache 
    
  2. 配置存储总线缓存设置。

    应使用默认设置。 如果是这样,请跳过此步骤以使用默认值继续。

    重要

    如果需要配置,请在启用存储总线缓存之前进行配置。 有关字段的详细信息,请参阅“功能概述”部分。

  3. 检查驱动器状态。

    Get-PhysicalDisk
    

    输出应如下图所示,其中 Number 列显示了小于 500 的值,CanPool 列对所有非启动驱动器显示了 true。

    显示在启用存储总线缓存之前 Get-PhysicalDisk 的结果的屏幕截图。

  4. 启用存储总线缓存。

    Enable-StorageBusCache
    

    此步骤将会:

    • 创建包含所有可用驱动器的存储池。
    • 绑定快速和慢速媒体并构成缓存。
    • 使用默认设置或自定义设置添加存储总线缓存。

    可以运行 Get-StoragePool 以查看存储池的名称,并再次运行 Get-PhysicalDisk 以查看启用存储总线缓存的效果。 输出应如下图所示。 Number 列显示了大于 500 的值,这表示存储总线已认领驱动器。 CanPool 列现在对所有非启动驱动器显示了 False。 如果 ProvisionMode 在启用之前设置为 Cache,则对于较快的驱动器,Usage 列将显示为 Journal。

    显示在启用存储总线缓存后 Get-StoragePool 和 Get-PhysicalDisk 的结果的屏幕截图。

  5. 检查存储总线缓存状态。

    检查字段是否正确,以及 Enabled 字段现在是否设置为 true。

    Get-StorageBusCache 
    

    输出应与下面的示例类似:

    ProvisionMode                  : Shared
    SharedCachePercent             : 15
    CacheMetadataReserveBytes      : 34359738368
    CacheModeHDD                   : ReadWrite
    CacheModeSSD                   : WriteOnly
    CachePageSizeKBytes            : 16
    Enabled                        : True
    

由于已成功启用存储总线缓存,下一步是创建卷。

创建卷

要创建哪个卷取决于该卷是否具有复原能力。

具有复原能力的卷

以下 PowerShell cmdlet 创建“镜像:奇偶校验”比为 20:80(这是用于大多数工作负载的配置)的 1-TiB 镜像加速奇偶校验卷。 有关详细信息,请参阅镜像加速奇偶校验

New-Volume –FriendlyName "TestVolume" -FileSystem ReFS -StoragePoolFriendlyName Storage* -StorageTierFriendlyNames MirrorOnSSD, ParityOnHDD -StorageTierSizes 200GB, 800GB

没有复原能力的卷

以下 PowerShell cmdlet 创建 1-TB 简单卷,该卷不能承受任何磁盘故障。 支持读取和写入缓存。

New-Volume -FriendlyName "TestVolume" -FileSystem ReFS -StoragePoolFriendlyName Storage* -ResiliencySettingName Simple -Size 1TB

在启用存储总线缓存后进行更改

运行 Enable-StorageBusCache 后,无法修改“预配模式”、“共享缓存百分比”、“缓存元数据保留字节数”、“缓存模式 HDD”、“缓存模式 SSD”和“缓存页大小”。 可以对物理设置进行有限的更改。 有关详细信息,请参阅以下常见方案。

添加或更换容量驱动器 (HDD)

手动添加驱动器后,运行以下 cmdlet 以完成接入过程。

Update-StorageBusCache

添加或更换缓存驱动器(NVMe 或 SSD)

没有任何 cmdlet 可以取消绑定/重新绑定现有绑定和平衡关系。 以下步骤会导致现有读取缓存丢失。

Remove-StorageBusBinding
New-StorageBusBinding 

检查和平衡缓存与容量绑定

使用以下 cmdlet 检查现有的缓存和容量绑定。

Get-StorageBusBinding

在以下示例中,第一列列出了容量驱动器,第三列列出了这些驱动器绑定到的缓存驱动器。 按照“添加或更换缓存驱动器”中的说明进行平衡,以便不会保留现有缓存。

显示 Get-StorageBusBinding 的输出的屏幕截图。

存储总线缓存常见问题解答

本部分解答有关 Windows Server 2022 上的存储总线缓存的常见问题。

当服务器不是故障转移群集的一部分时,为何需要安装故障转移群集功能?

此功能专为独立服务器而设计,但构建在存储空间直通的存储总线层 (SBL) 缓存基础之上。 由于需要群集组件,因此需要安装故障转移群集功能。

存储总线缓存是否适用于全闪存配置?

不可以,仅当有两种媒体类型,并且其中一种类型是 HDD 时,此功能才能正常工作。 此功能不适用于 RAID、SAN 或闪存系统。

如何更改存储总线缓存设置?

请参阅以下示例了解如何将“预配模式”从“共享”(默认)更改为“缓存”。 建议使用默认设置,并且应在启用存储总线缓存之前进行任何更改。

Set-StorageBusCache -ProvisionMode Cache