活动
4月29日 14时 - 4月30日 19时
请与Microsoft工程师一起参加 4 月 29 日至 30 日的最终 Windows Server 虚拟活动,进行深入的技术会话和实时 Q&A。
立即注册存储空间可以使用两种基本技术为数据提供容错:镜像和奇偶校验。 在存储空间直通中,ReFS 引入了镜像加速奇偶校验,允许创建同时使用镜像和奇偶校验弹性的卷。 镜像加速奇偶校验在不牺牲性能的情况下提供了低廉、高空间效率的存储。
镜像和奇偶校验复原方案具有完全不同的存储和性能特征:
因此,镜像倾向于提供性能敏感的存储,而奇偶校验则提供改进的存储容量利用率。 在镜像加速奇偶校验中,ReFS 利用每种复原类型的优势,通过在单个卷中组合两种复原方案,提供容量高效和性能敏感的存储。
ReFS 在镜像和奇偶校验之间实时主动旋转数据。 这允许将传入的写入快速写入镜像,然后旋转到奇偶校验,以便高效存储。 这样一来,传入 IO 可以在镜像中快速得到服务,而原始数据则可以高效地存储在奇偶校验中,从而在同一卷中提供最佳性能和成本损失存储。
为了在镜像和奇偶校验之间旋转数据,ReFS 以逻辑方式将卷划分为 64MiB 的区域,它们是旋转的单位。 下图描绘了已划分为多个区域的镜像加速奇偶校验卷。
镜像层达到指定的容量级别,ReFS 就开始将整个区域从镜像旋转到奇偶校验。 ReFS 不是立即将数据从镜像移动到奇偶校验,而是等待并尽可能长时间地将数据保留在镜像中,从而使 ReFS 能够持续为数据提供最佳性能(请参阅下面的“IO 性能”)。
当数据从镜像移动到奇偶校验时,会读取数据、计算奇偶校验编码,然后将该数据写入奇偶校验。 下面的动画使用三向镜像区域对此进行了说明,该区域在旋转过程中转换为擦除编码区域:
写入:ReFS 以三种不同的方式为传入写入提供服务:
写入镜像:
写入镜像,从奇偶校验重新分配:
如果传入写入修改奇偶校验中的数据,并且 ReFS 可以在镜像中成功找到足够多的可用空间,以供传入写入使用,则 ReFS 将首先使奇偶校验中的以前数据失效,然后再写入镜像。 此无效是快速而低廉的元数据操作,有助于显著提高奇偶校验的写入性能。
写入奇偶校验:
如果 ReFS 无法在镜像中成功找到足够的可用空间,ReFS 将向奇偶校验写入新数据或直接修改奇偶校验中的现有数据。 下面的“性能优化”部分提供了指南,有助于最小化奇偶校验的写入。
读取:ReFS 将直接从包含相关数据的层中读取。 如果奇偶校验是用 HDD 构建的,存储空间直通中的缓存将缓存此数据,以加速未来读取。
备注
读取永远不会导致 ReFS 将数据旋转回镜像层。
写入:上方描述的每种类型的写入都有自己的性能特征。 大体来说,写入镜像层比重新分配的写入快得多,而重新分配的写入比直接写入奇偶校验层也要快得多。 下面的不等式说明了这种关系:
读取:从奇偶校验读取时不会对性能产生实际负面影响:
Windows Server 2019 及更高版本中提供了适用于 ReFS 的压缩功能,这大大提高了超过 90% 空间已满的镜像加速奇偶校验卷的性能。
背景:以前,当镜像加速奇偶校验卷已满时,这些卷的性能可能会降低。 由于整个卷中的热数据和原始数据会随着时间的推移而混合,因此性能会下降。 这表示可以存储在镜像中的热数据会减少,因为原始数据占用了镜像中可由被热数据使用的空间。 将热数据存储在镜像中对于保持高性能至关重要,因为直接写入镜像比重新分配的写入快得多,且比直接写入奇偶校验快几个数量级。 因此,镜像中有原始数据对性能不利,因为它降低了 ReFS 直接写入镜像的可能性。
ReFS 压缩通过为热数据释放镜像空间来解决这些性能问题。 压缩首先将镜像和奇偶校验中的所有数据合并为奇偶校验。 这减少了卷内的碎片,并增加了镜像中的可寻址空间量。 更重要的是,此过程使 ReFS 能够将热数据合并回镜像:
重要
建议将写入密集型 VHD 放置在不同的子目录中。 这是因为 ReFS 在目录及其文件级别写入元数据更改。 因此,如果你将写入密集型文件分布到各个目录中,元数据操作会更小,并且会并行运行,从而降低了应用的延迟。
ReFS 维护性能计数器,以帮助评估镜像加速奇偶校验的性能。
如上面的“写入奇偶校验”部分所述,ReFS 将在镜像中找不到可用空间时直接写入奇偶校验。 通常,当镜像层的填充速度快于 ReFS 将数据旋转为奇偶校验时,就会发生这种情况。 换句话说,ReFS 的旋转无法跟上引入速率。 以下性能计数器标识 ReFS 直接写入奇偶校验的时间:
# Windows Server 2016
ReFS\Data allocations slow tier/sec
ReFS\Metadata allocations slow tier/sec
# Windows Server 2019
ReFS\Allocation of Data Clusters on Slow Tier/sec
ReFS\Allocation of Metadata Clusters on Slow Tier/sec
如果这些计数器为非零,则表示 ReFS 将数据旋转出镜像的速度不够快。 为了帮助缓解这种情况,可以改变旋转主动性或增加镜像层的大小。
镜像达到指定容量阈值后,ReFS 就开始旋转数据。
ReFS 引入了可调参数以调整此阈值,其可使用注册表项进行配置。 必须在存储空间直通部署中的每个节点上配置此注册表项,并且需要重新启动才能使任何更改生效。
如果未设置此注册表项,ReFS 将使用默认值 85%。 对于大多数部署,建议使用此默认值,且不建议使用低于 50% 的值。 下面的 PowerShell 命令演示如何使用值 75% 设置此注册表项:
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Policies -Name DataDestageSsdFillRatioThreshold -Value 75
要在存储空间直通部署中的每个节点上配置此注册表项,可以使用以下 PowerShell 命令:
$Nodes = 'S2D-01', 'S2D-02', 'S2D-03', 'S2D-04'
Invoke-Command $Nodes {Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Policies -Name DataDestageSsdFillRatioThreshold -Value 75}
增加镜像层的大小可使 ReFS 在镜像中保留工作集的较大部分。 这提高了 ReFS 可以直接写入镜像的可能性,这将有助于实现更好的性能。 以下 PowerShell cmdlet 演示如何增加镜像层的大小:
Resize-StorageTier -FriendlyName "Performance" -Size 20GB
Resize-StorageTier -InputObject (Get-StorageTier -FriendlyName "Performance") -Size 20GB
提示
请确保在重设 StorageTier 的大小后重设分区和卷的大小。 有关详细信息和示例,请参阅 扩展基本卷。
下面的 PowerShell cmdlet 可创建镜像:奇偶校验比为 20:80 的镜像加速奇偶校验卷,这是推荐用于大多数工作负载的配置。 有关更多信息和示例,请参阅在存储空间直通中创建卷。
New-Volume -FriendlyName "TestVolume" -FileSystem CSVFS_ReFS -StoragePoolFriendlyName "StoragePoolName" -StorageTierFriendlyNames Performance, Capacity -StorageTierSizes 200GB, 800GB
活动
4月29日 14时 - 4月30日 19时
请与Microsoft工程师一起参加 4 月 29 日至 30 日的最终 Windows Server 虚拟活动,进行深入的技术会话和实时 Q&A。
立即注册培训
模块
Implement Windows Server File Server high availability - Training
Implement Windows Server File Server high availability