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

适用于:Windows Server 2022

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

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

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

Diagram of storage bus cache read and write paths.

在本教程中,你将学习:

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

先决条件

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

  • 服务器运行 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。

    Screenshot showing the result from Get-PhysicalDisk before enabling the storage bus cache.

  4. 启用存储总线缓存。

    Enable-StorageBusCache
    

    此步骤将会:

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

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

    Screenshot showing the results of Get-StoragePool and Get-PhysicalDisk after enabling the storage bus cache.

  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

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

Screenshot showing the output of Get-StorageBusBinding.

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

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

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

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

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

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

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

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

Set-StorageBusCache -ProvisionMode Cache