在 Azure Stack HCI 中使用 ReFS 重复数据删除和压缩优化存储
本文内容
适用于:Azure Stack HCI 版本 23H2
本文介绍可复原文件系统 (ReFS) 重复数据删除和压缩功能,以及如何在 Azure Stack HCI 中使用此功能来优化存储。
什么是 ReFS 重复数据删除和压缩?
ReFS 重复数据删除和压缩是专为活动工作负载设计的存储优化功能,例如 Azure Stack HCI 上的 Azure 虚拟桌面基础结构 (VDI) 。 此功能有助于优化存储使用情况并降低存储成本。
此功能使用 ReFS 块克隆 来减少数据移动并启用仅限元数据的操作。 该功能在数据块级别运行,并使用固定的块大小,具体取决于群集大小。 压缩引擎生成热度地图,以确定块是否应符合压缩条件,并针对 CPU 使用率进行优化。
可以将 ReFS 重复数据删除和压缩作为一次性作业运行,也可以使用计划的作业自动执行它。 此功能适用于全闪存和混合系统,并支持各种复原设置,例如双向镜像、嵌套双向镜像、三向镜像和镜像加速奇偶校验。
好处
下面是使用 ReFS 重复数据删除和压缩的好处:
为活动工作负载节省存储。 专为活动工作负载(如 VDI)而设计,可确保在要求苛刻的环境中实现高效性能。
多种模式。 在三种模式下运行:仅重复数据删除、仅压缩和重复数据删除和压缩 (默认模式) ,可根据需要进行优化。
增量重复数据删除。 重复数据删除仅删除新的或更改的数据,而不是每次扫描整个卷,从而优化作业持续时间并减少对系统性能的影响。
先决条件
在开始之前,请确保满足以下先决条件:
有权访问已部署和注册的 Azure Stack HCI 群集。
你已在群集上创建了群集共享卷 (CSV) ,并且有权访问它。
CSV 尚未启用 Windows 重复数据删除功能。
使用 ReFS 重复数据删除和压缩
可以通过 Windows Admin Center 或 PowerShell 使用 ReFS 重复数据删除和压缩。 PowerShell 允许手动作业和自动化作业,而 Windows Admin Center 仅支持计划的作业。 无论采用哪种方法,都可以自定义作业设置并利用文件更改跟踪来加快后续运行。
启用并运行 ReFS 重复数据删除和压缩
在 Windows Admin Center 中,可以创建 ReFS 重复数据删除和压缩计划,以便在创建卷期间在现有卷或新卷上运行。
按照以下步骤通过Windows Admin Center启用 ReFS 重复数据删除和压缩,并设置运行时间的计划:
连接到群集,然后在左侧的“ 工具 ”窗格中,选择“ 卷 ”。
在“卷”页上,选择“清单”选项卡,选择相应的卷,然后选择“设置”。 若要为新卷启用 ReFS 重复数据删除和压缩,请选择“ + 创建 ”。
在右侧的“ 卷设置 ”窗格的“ 更多选项” 下拉列表中,选中“ 使用 ReFS 重复数据删除和压缩 ”复选框。
选择应运行 ReFS 重复数据删除和压缩的星期几、作业开始运行的时间,以及默认 (最长持续时间不受限制) ,然后选择“ 保存 ”。
以下屏幕截图显示 ReFS 重复数据删除和压缩在周五和周六上午 10:40 运行,最长持续时间为 2 小时,从 2023 年 9 月 22 日开始。 如果 开始日期 更改为 2023/9/21,则第一次运行仍将是 2023 年 9 月 22 日上午 10:40,因为这是 2023 年 9 月 21 日之后的第一个星期五。
验证卷的 “属性” 部分中的更改。 计划显示在 “属性” 部分下,并显示节省明细和下一个计划运行时间。 每次运行后,这些节省都会更新,你可以在“性能”部分下的图表中观察 性能 影响。
若要通过 PowerShell 使用 ReFS 重复数据删除和压缩,请先启用该功能,然后将其作为一次性手动作业运行,或自动将其作为计划作业运行。 作业在每个群集的 CSV 级别设置,可以根据模式、持续时间、系统资源使用情况等进行自定义。
启用 ReFS 重复数据删除和压缩
按照以下步骤通过 PowerShell 启用 ReFS 重复数据删除和压缩:
连接到 Azure Stack HCI 群集,并以管理员身份运行 PowerShell。
必须运行所有命令以修改所有者节点上给定卷上的设置。 运行以下 cmdlet 以显示所有 CSV 所有者节点和卷路径:
Get-ClusterSharedVolume | FT Name, OwnerNode, SharedVolumeInfo
下面是 cmdlet 用法的示例输出:
Name OwnerNode SharedVolumeInfo
---- --------- ----------------
Cluster Virtual Disk (Volume1) hci-server1 {C:\ClusterStorage\Volume1}
运行以下 cmdlet 以在特定卷上启用 ReFS 重复数据删除和压缩:
Enable-ReFSDedup -Volume <path> -Type <Dedup | DedupAndCompress | Compress>
其中: Type
是必需参数,可以采用以下值之一:
Dedup :仅启用重复数据删除。
DedupAndCompress :启用重复数据删除和压缩。 这是默认选项。
压缩 :仅启用压缩。
如果要更改 Type
参数,必须先 禁用 ReFS 重复数据删除和压缩 ,然后使用新 Type
参数再次启用它。
例如,运行以下 cmdlet 以在卷上启用重复数据删除和压缩:
PS C:\Users\hciuser> Enable-ReFSDedup -Volume "C:\ClusterStorage\Volume1" -Type DedupAndCompress
启用 ReFS 重复数据删除和压缩后,在 CSV 上验证其状态。 运行以下 cmdlet 并确保 Enabled
输出中的字段显示为 True
,并且字段 Type
显示指定的模式。
Get-ReFSDedupStatus -Volume <path> | FL
下面是 cmdlet 的示例输出, Get-ReFSDedupStatus
其中 Enabled
字段显示为 True
, Type
字段显示为 DedupAndCompress
:
PS C:\Users\hciuser> Get-ReFSDedupStatus -Volume "C:\ClusterStorage\Volume1" | FL
Volume : C:\ClusterStorage\Volume1
Enabled : True
Type : DedupAndCompress
Status : --
Used : 1.4 TiB
Deduped : 0 B
Compressed : 0 B
ScannedOnLastRun : 0 B
DedupedOnLastRun : 0 B
LastRunTime : N/A
LastRunDuration : N/A
MextRunTime : N/A
CompressionFormat : Uncompressed
CompressionLevel : 0
CompressionChunkSize : 0 B
VolumeClusterSizeBytes : 4 KiB
VolumeTotale lusters : 805289984
VolumeTotalAllocatedelusters : 353850628
VolumeTotalAllocatedCompressibleClusters : 0
VolumeTota1InUseCompressibleClusters : 0
VolumeTota1Compressedelusters : 0
运行 ReFS 重复数据删除和压缩
启用此功能后,可以手动运行一次性作业或根据需要计划定期作业。
在运行之前,还应考虑以下其他注意事项:
启用此功能后的第一次运行始终是对整个卷进行完全扫描和优化。 如果指定 了 FullRun
参数,则优化将涵盖整个卷,而不是新的或未优化的数据。
如果未指定压缩格式,则默认算法为 LZ4。 可以根据需要将算法从一个运行更改为另一个运行。
可以为更复杂的用例指定更多参数。 本部分中使用的 cmdlet 适用于最简单的用例。
“完全运行”、“排除的文件夹”、“排除的文件扩展名”和“上次修改时间最短”筛选器仅在运行重复数据删除时适用,在运行压缩时不适用。
手动运行 ReFS 重复数据删除和压缩作业
若要立即启动作业,请运行以下 cmdlet。 启动作业后,作业 State
可能显示为 NotStarted
,因为它可能仍处于初始化阶段。
Start-ReFSDedupJob -Volume <path> -Duration <TimeSpan> -FullRun -CompressionFormat <LZ4 | ZSTD>
例如,以下 cmdlet 使用 LZ4 压缩格式立即启动作业,持续时间为 5 小时:
PS C:\Users\hciuser> $Start = “10/31/2023 08:30:00”
PS C:\Users\hciuser> $Duration = New-Timespan -Hours 5
PS C:\Users\hciuser> Start-ReFSDedupJob -Volume "C:\ClusterStorage\Volume1" -FullRun -Duration $Duration -CompressionFormat LZ4
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
12 Job12 NotStarted True Start-Re...
若要停止正在运行的作业,请运行以下 cmdlet。 此 cmdlet 也适用于正在进行的计划作业。
Stop-ReFSDedupJob -Volume <path>
例如,以下 cmdlet 停止在上一示例中启动的作业:
PS C:\Users\hciuser> Stop-ReFSDedupJob -Volume "C:\ClusterStorage\Volume1"
若要查看作业的进度、节省和状态,请运行以下 cmdlet:
Get-ReFSDedupStatus -Volume <path> | FL
例如,以下 cmdlet 显示作业的状态:
PS C:\Users\hciuser> Get-ReFSDedupStatus -Volume "C:\ClusterStorage\Volume1"
Volume Type Used Deduped Compressed Format
------ ---- ---- ------- ---------- ------
C:\ClusterStorage\Volume1 DedupAndCompress 1.38 TiB 0 B 0 B Unc...
计划重复的 ReFS 重复数据删除和压缩作业
设置一个重复的计划,以运行卷的存储优化。 然后,可以查看、设置或修改、暂停、恢复或清除作业计划。
若要设置或修改计划,请运行以下 cmdlet:
Set-ReFSDedupSchedule -Volume <Path> -Start <DateTime> -Days <DayOfWeek[]> -Duration <TimeSpan> -CompressionFormat <LZ4 | ZSTD> -CompressionLevel <UInt16> -CompressionChunkSize <UInt32>
例如,若要设置计划于每周四上午 8:30 以 LZ4 格式运行 5 小时的定期作业,请运行以下 cmdlet。 如果要每天运行作业,请使用 -Days EveryDay
。
PS C:\Users\hciuser> $Start = “10/31/2023 08:30:00”
PS C:\Users\hciuser> $Duration = New-Timespan -Hours 5
PS C:\Users\hciuser> Set-ReFSDedupSchedule -Volume C:\ClusterStorage\Volume1 -Start $Start Days "Thursday" -Duration $Duration -CompressionFormat LZ4
若要查看作业计划,请运行以下 cmdlet:
Get-ReFSDedupSchedule -Volume <path> | FL
下面是在上一个示例中计划的作业的输出:
PS C:\Users\hciuser> Get-ReFSDedupSchedule -Volume "C:\ClusterStorage\Volume1" | FL
Volume : C:\ClusterStorage\Volume1
Enabled : True
Type : DedupAndCompress
CpuPercentage : Automatic
ConcurrentOpenFiles : Automatic
MinimumLastModifiedTimeHours : 0
ExcludeFileExtension : {}
ExcludeFolder : {}
CpuPercentage : 0
CompressionFormat : LZ4
CompressionLevel : 1
CompressionChunkSize : 4 B
CompressionTuning : 70
RecompressionTuning : 40
DecompressionTuning : 30
Start : 8:30:00 AM
Duration : 00m:00.000s
Days : Thursday
Suspended : False
挂起计划的作业
暂停计划会取消任何正在运行的作业,并停止将来的计划运行。 此选项保留 ReFS 重复数据删除和与压缩相关的元数据,并继续跟踪文件更改,以便优化将来的运行。 可以随时恢复计划,同时保留计划设置。
按照以下步骤使用 Windows Admin Center 挂起计划的作业:
连接到群集,然后在左侧的“ 工具 ”窗格中,选择“ 卷 ”。
在“卷”页上,选择“清单”选项卡,选择相应的卷,然后选择“设置”。
在右侧的 “卷设置 ”窗格的“ 更多选项” 下拉列表中,取消选中“ 设置计划 ”复选框,然后选择“ 保存 ”。
使用以下 cmdlet 暂停计划的作业,并使用 PowerShell 检查状态:
Suspend-ReFSDedupSchedule -Volume <path>
下面是 cmdlet 用法的示例输出。 字段 Suspended
显示为 True
。
PS C:\Users\hciuser> Suspend-ReFSDedupSchedule -Volume "C:\ClusterStorage\Volume1"
PS C:\Users\user> Get-ReFSDedupSchedule -Volume "C:\ClusterStorage\Volume1" | FL
Volume : C:\ClusterStorage\Volume1
Enabled : True
Type : DedupAndCompress
CpuPercentage : Automatic
ConcurrentOpenFiles : Automatic
MinimumLastModifiedTimeHours : 0
ExcludeFileExtension : {}
ExcludeFolder : {}
CpuPercentage : 0
CompressionFormat : LZ4
CompressionLevel : 1
CompressionChunkSize : 4 B
CompressionTuning : 70
RecompressionTuning : 40
DecompressionTuning : 30
Start : 8:30:00 AM
Duration : 00m:00.000s
Days : Thursday
Suspended : True
在卷上禁用 ReFS 重复数据删除和压缩
对卷禁用 ReFS 重复数据删除和压缩会停止正在进行的任何运行,并取消将来的计划作业。 此外,不会保留相关的卷元数据,并且会停止文件更改跟踪。
禁用此功能时,它不会撤消重复数据删除或压缩,因为所有操作都在元数据层进行。 随着时间的推移,当卷发生读取和写入时,数据将返回到其原始状态。
按照以下步骤使用 Windows Admin Center 禁用该功能:
连接到群集,然后在左侧的“ 工具 ”窗格中,选择“ 卷 ”。
在“卷”页上,选择“清单”选项卡,选择相应的卷,然后选择“设置”。
在右侧的 “卷设置 ”窗格的“ 更多选项 ”下拉列表中,取消选中“ 使用 ReFS 重复数据删除和压缩 ”复选框,然后选择“ 保存 ”。
使用以下 cmdlet 挂起计划的作业并检查状态:
Disable-ReFSDedup -Volume <path>
下面是 cmdlet 用法的示例输出。 字段 Enabled
显示为 False
, Type
字段显示为空白。
PS C:\Users\hciuser> Disable-ReFSDedup -Volume "C:\ClusterStorage\Volume1"
PS C:\Users\hciuser> Get-ReFSDedupSchedule -Volume "C:\ClusterStorage\Volume1" | FL
Volume : C:\ClusterStorage\Volume1
Enabled : False
Type :
CpuPercentage : Automatic
ConcurrentOpenFiles : Automatic
MinimumLastModifiedTimeHours : 0
ExcludeFileExtension : {}
ExcludeFolder : {}
CpuPercentage : 0
CompressionFormat : LZ4
CompressionLevel : 0
CompressionChunkSize : 0 B
CompressionTuning : 70
RecompressionTuning : 40
DecompressionTuning : 30
Start : N/A
Duration : N/A
Days : None
Suspended : False
常见问题 (FAQ)
本部分解答有关 ReFS 重复数据删除和压缩的常见问题。
ReFS 重复数据删除和压缩功能是否不同于 Windows 重复数据删除?
是的,此功能与 Windows 重复数据删除 功能完全不同。
重要
我们不支持同时启用 ReFS 重复数据删除和压缩以及 Windows 重复数据删除。
ReFS 重复数据删除和压缩专为活动工作负载而设计,侧重于在优化后最大程度地降低性能影响。 与 Windows 重复数据删除不同,ReFS 重复数据删除和压缩不使用区块存储来存储重复数据,并且不涉及物理数据移动。 该功能依赖于 ReFS 块克隆来启用仅元数据操作。 Windows 重复数据删除可能会提供更好的存储节省,因为它使用可变的块大小,它还适用于更广泛的工作负载类型,例如常规用途文件服务器 (GPFS) 、备份目标等。
ReFS 重复数据删除和压缩有哪些阶段?
优化过程包括以下阶段,这些阶段按顺序发生,具体取决于指定的模式。 如果优化运行达到持续时间限制,则压缩可能不会运行。
初始化。 在此阶段中,将扫描存储卷以识别冗余的数据块。
重复数据删除。 在此阶段中,冗余块使用 ReFS 块克隆进行单实例化和跟踪。
压缩。 在此阶段,将生成热度地图,以确定块是否应符合压缩条件。 默认设置将压缩不常访问的数据或冷数据,以减小其大小。 可以更改压缩级别以调整符合压缩条件的块的范围。
在完全优化卷之前达到持续时间限制时会发生什么情况?
设置持续时间限制,以防止在营业时间内优化作业对客户工作负载造成任何性能影响。 重复数据删除服务监视卷的优化部分和传入文件修改。 将来的作业将使用此数据来减少优化时间。 例如,如果由于持续时间限制,卷在第一次运行中只处理了 30%,则后续运行将处理剩余的 70% 和任何新数据。
已知问题
以下部分列出了 ReFS 重复数据删除和压缩当前存在的已知问题。
地位: 打开。
建议的最佳做法是考虑错开作业的开始时间,以避免任何重叠。 但是,如果所有作业必须同时运行,请调整所有 CSV 中每个作业的 CPU 分配,使其小于总群集 CPU 利用率的 50%。 请记住,施加 CPU 限制可能会导致作业执行时间更长。
reFS 重复数据删除和压缩作业 (成功完成或已取消) 且存储节省未列在Get-ReFSDedupStatus
或Windows Admin Center中。
地位: 解决。
此问题的临时解决方法是启动一次性作业并立即更新结果。
Start-ReFSDedupJob -Volume <path>
在卷上禁用 ReFS 重复数据删除和压缩后,发送已停止监视的 Windows (ETW 事件) 事件。
地位: 解决。
在卷上禁用 ReFS 重复数据删除和压缩后,ReFS 重复数据删除的 ETW 通道会记录重复停止的监视事件。 但是,我们预计不会因为此问题而对使用情况产生重大影响。
如果在压缩期间将卷移动到另一个节点,则未记录作业失败事件。
地位: 解决。
如果在压缩过程中将 CSV 移动到群集的另一个服务器,则作业失败事件不会记录在 ReFS 重复数据删除通道中。 但是,我们预计不会因为此问题而对使用情况产生重大影响。
后续步骤