将 存储空间 Direct 与 CSV 内存中读取缓存一同使用

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016

本主题介绍如何使用系统内存来提升 存储空间性能

存储空间 Direct 与内存中群集共享卷 (缓存) CSV 兼容。 对于使用未缓冲 I/O 访问 VHD 或 VHDX 文件的应用程序(如 Hyper-V),使用系统内存缓存读取可以性能。 (未缓冲的 IOS 是缓存管理器.Windows缓存的任何)

由于内存中缓存是服务器本地缓存,因此它改进了超聚合 存储空间 直接部署的数据位置:最近的读取操作缓存在运行虚拟机的同一主机上的内存中,从而减少了读取通过网络进行读取的频繁度。 这可实现更低的延迟和更好的存储性能。

规划注意事项

内存中读取缓存对于读取密集型工作负载(如虚拟桌面基础结构 (VDI))最有效。 相反,如果工作负载是极端的写入密集型,则缓存引入的开销可能会高于获得的价值,因此应禁用。

可以将多达 80% 的总物理内存用于 CSV 内存中读取缓存。

提示

对于计算和存储在同一服务器上运行的超聚合部署,请注意为虚拟机保留足够的内存。 对于聚合Scale-Out文件服务器 (SoFS) 部署,内存争用较少,这不适用。

注意

某些微基准工具(如 DISKSPD 和 VM Fleet)在启用了 CSV 内存中读取缓存时得到的结果可能比未启用时更差。 默认情况下,VM Fleet 为每个虚拟机创建一个 10 gibibyte (GiB) VHDX(对于 100 个 VM 总共约 1 TiB)然后执行统一随机读取和写入。 与实际工作负载不同,读取不遵循任何可预测或重复的模式,因此内存中缓存不起作用,只会产生开销。

配置内存中读取缓存

CSV 内存中读取缓存在 Windows Server 2019 中可用,Windows Server 2016具有相同的功能。 在 Windows Server 2019 中,它默认为打开状态,分配了 1 GiB。 在 Windows Server 2016 中,它在默认情况下处于关闭状态。

OS 版本 默认 CSV 缓存大小
Windows Server 2019 1 GiB
Windows Server 2016 0(禁用)
Windows Server 2012 R2 enabled - 用户必须指定大小
Windows Server 2012 0(禁用)

若要使用 PowerShell 查看分配的内存量,请运行:

(Get-Cluster).BlockCacheSize

返回的值针对每台服务器,以 MiB 为单位。 例如, 表示 1024 1 gibibyte (GiB) 。

若要更改分配的内存量,请使用 PowerShell 修改此值。 例如,若要为每台服务器分配 2 GiB,请运行:

(Get-Cluster).BlockCacheSize = 2048

若要使更改立即生效,请暂停,然后恢复 CSV 卷,或在服务器之间移动它们。 例如,使用此 PowerShell 片段将每个 CSV 移动到另一个服务器节点,并再次返回:

Get-ClusterSharedVolume | ForEach {
    $Owner = $_.OwnerNode
    $_ | Move-ClusterSharedVolume
    $_ | Move-ClusterSharedVolume -Node $Owner
}

其他参考