本文提供了因重复数据删除期间从完全垃圾回收中流失而导致的性能问题的解决方法。
原始 KB 数: 3066175
现象
与“常规”垃圾回收相比,完全垃圾回收作业回收的可用空间要多。 但是,完全垃圾回收对卷产生更多的改动。 这是因为,如果有任何未引用的区块,则会压缩每个区块容器(重写)。
卷上的此改动可能会导致以下问题和副作用:
- 删除卷影复制服务 (VSS) 卷影副本
- 系统上的大量 I/O 负载,尤其是在服务器已运行高改动或 IO 密集型重复数据删除工作负荷时
- 增加某些解决方案(例如增量备份和文件复制)的卷工作负荷,因为文件变动而增长
原因
在以下情况下,可能会出现此行为:
- 当工作负荷包含许多文件删除或就地写入时。 这会导致许多区块变得未推理。 问题也由删除触发,导致许多具有旧区块和新区块的区块容器体验压缩。
- 当系统具有相对较少的物理可用空间时,NTFS 首先使用不会导致卷影复制存储区域消耗的可用空间。 如果卷几乎没有可用空间,则 NTFS 将为触发“写入时复制”行为的区域中的新文件分配空间。 存储区域用完时,VSS 会删除卷影副本。
解决方法
若要解决这些问题,请使用以下方法之一:
将 VSS 配置为对其差异区域(“阴影存储区域”)使用单独的(可能专用)卷。 可以使用Vssadmin.exe和其他工具执行此操作。 此解决方法有助于解决影子复制删除问题。
注意
在专用卷上具有差异区域还有其他性能优势。
将重复数据删除配置为不运行 完整 GC ,而是仅在常规模式下运行垃圾回收。 默认情况下,垃圾回收作业计划每周运行一次。 此外,默认情况下,每个第四个垃圾回收作业都设置为在完整 GC 中运行(按月节奏运行)。
注意
可以通过手动运行以下 Windows PowerShell 命令来按需运行 Full GC:
Start-DedupJob <volume> -Type GarbageCollection -Full
若要防止完整 GC,请配置以下注册表项:
HKLM\System\CurrentControlSet\Services\ddpsvc\Settings /v DeepGCInterval /t REG_DWORD /d 0xffffffff
如果系统已群集化,则必须改为配置以下注册表项:
HKLM\CLUSTER\Dedup\ /v DeepGCInterval /t REG_DWORD /d 0xffffffff
此解决方法有助于减少“症状”部分中介绍的所有副作用。 但是,常规模式垃圾回收不如完整 GC 那么彻底。 如果系统从未运行完整 GC,则可能无法回收一些未推理重复数据删除区块。 然而,常规模式垃圾回收仍应回收超过 95% 的未引用数据。
在运行 Windows Server 2012 的系统上,确保 已安装修补程序2897997 。 (Windows Server 2012 R2 不需要这样做。