概要
Windows Server 重复数据删除是一项广泛使用的功能,用于通过删除冗余数据块并仅存储唯一信息来优化磁盘空间。 尽管重复数据删除可以节省大量存储,但它也引入了可能导致各种故障模式的复杂性,例如作业失败、空间回收问题、文件访问问题、高区块存储使用率和迁移方案中的错误。
本文提供了在 NTFS 和 ReFS 文件系统中诊断和解决 Windows Server 2022、2019 和 2016 中常见重复数据删除问题的有条不紊的方法。
故障排除清单
使用此清单进行系统故障排除:
-
验证磁盘空间和可用空间
- 请确保去重卷上至少有 10 GB 的可用空间。 区块存储不应超过 80-90% 的使用。
-
检查系统资源
- 验证是否存在足够的 RAM(最小 1 GB 或 1 TB 逻辑数据)和足够的 CPU,以及内存和 CPU 阈值是否未超过。
-
查看重复数据删除作业状态
- 使用 PowerShell 检查作业是正在运行、停滞还是失败。
-
检查事件日志
- 查找相关的重复数据删除、系统和应用程序日志事件。
-
检查文件系统运行状况
- 根据需要运行 chkdsk /scan,并修复(对于 NTFS)。
-
检查重复数据删除角色或功能状态
- 验证重复数据删除角色是否已在卷上安装并启用。
-
评估最近的更改
- 查看任何 OS 升级、服务器迁移或新的安全性和备份软件部署。
-
验证重复数据删除设置
- 确保重复数据删除计划、卷支持和内存或核心分配与最佳做法保持一致。
-
备份和灾难恢复
- 确保备份是最新的。 请勿在没有工作备份的情况下修复或迁移服务器。
常见问题和解决方案
以下部分详细介绍了最常见的故障模式,并提供分步解决方案。
磁盘空间不足和区块存储增长
症状
- 去重卷的可用空间极低,尽管删除了文件。
- 区块存储文件夹(System Volume Information)过大。
- 存储操作(备份、文件副本)失败。
决议
手动运行维护作业:
Start-DedupJob -Volume <DriveLetter> -Type GarbageCollection -Full Start-DedupJob -Volume <DriveLetter> -Type Scrubbing -Full删除孤立卷影副本/检查点:
vssadmin list shadows devnodeclean如果存储空间仍然不足,请考虑扩展卷。
如果涉及 ReFS/群集大小限制:
- 备份、重新格式化 64K 群集和还原数据。
调查文件模式:使用 TreeSize 或类似的工具查找用户数据中不可见的占用大量空间的文件。
如果维护作业失败,请参阅 F 部分了解文件系统损坏修复。
重复数据删除作业失败和停滞的作业
症状
- 重复数据删除作业(优化、垃圾回收、清理)开始,但进度停留在 0% 或中止。
- 作业失败并出现以下错误:
- “没有足够的内存资源可用于完成此作。
- 操作被取消了。
- 事件 ID:4105、4106、4140、4142、4185 等。
决议
查看作业状态:
Get-DedupJob增加可用资源:
通过停止不必要的进程释放 RAM 或 CPU。
尽可能增加物理或虚拟内存。
调整作业内存阈值:
Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Services\ddpsvc\Settings -Name WlmMemoryOverPercentThreshold -Value 100
将作业重新安排在非高峰时段,以避开争用。
减少任务内存参数:
Start-DedupJob -Volume <DriveLetter> -Type Optimization -Memory 25如果作业持续停滞,请重启服务器。
检查计划冲突:
- 使用 Get-DedupSchedule 并根据需要进行调整。
文件系统损坏和重复数据删除导致的元数据损坏
症状
- 事件日志显示损坏的用户数据容器、失败的区块存储引用或错误,例如:
- “区块存储中用户数据容器已损坏”(事件 ID:12837)
- “重定向表太小”(例如,0x8056530c)
- 维护作业重复失败。
- 删除不会回收空间。
决议
检查并修复文件系统:
chkdsk <DriveLetter>: /f /scan如果问题仍然存在:
- 使用 Windows Server Backup 备份数据。
- 创建新卷、还原备份并启用数据去重。
作为最后的手段:
- 使用受支持的工具(而不是 Robocopy)将数据迁移到新存储,以便删除重复数据。
文件访问或迁移问题
症状
- 在 Windows 升级或迁移后,无法打开或移动文件。
- 升级后访问文件时,“ERROR_CANT_ACCESS_FILE”(0x80070780)。
- 手动将文件副本复制到新服务器会扩大数据(“复水”)并耗尽目标存储。
决议
在 OS 升级后重新安装重复数据删除功能:
Install-WindowsFeature -Name FS-Data-Deduplication Enable-DedupVolume -Volume <DriveLetter>使用支持的备份和还原过程或直接磁盘移动进行迁移:
- 避免使用 Robocopy 处理已重复数据删除的数据。
- 使用 Windows 备份、将磁盘直接附加到新服务器或映像整个卷。
如果必须移动数据而需要保留数据去重:
- 使用文件资源管理器以小批量复制,以允许重复数据删除作业以增量方式处理。
错误上报或不完整的去重状态
症状
- 重复数据删除状态未显示在服务器管理器/管理中心中,但在 PowerShell 中可用。
- 管理员没有发现错误,但对功能的理解存在困惑。
决议
使用 PowerShell 获取准确的状态:
Get-DedupVolume检查 S2D 和群集环境:
- 验证卷组所有权和状态。
- 如果遇到已知的代码缺陷,请升级到Microsoft支持。 如果业务影响很高,请提供 BI 文档。
去重率低或意外的存储空间占用
症状
- 重复数据删除率远远低于预期(小于 30%)。
- 尽管重复数据删除,但磁盘使用率仍然很高。
决议
- 分析数据概况:
- 确定已压缩或加密文件的流行程度(.jpg、.zip、.mp4)。
- 重复数据删除在此类数据类型上效率较低。
- 查看被跳过文件的去重日志。
- 运行手动优化作业并监视空间节省效果。
- 调整文件类型和模式的重复数据删除配置。
与第三方软件和功能的交互
症状
- 重复数据删除卷上缺少文件或文件损坏。
- 数据去重功能反复自行禁用。
- 连接到终端安全(例如 CrowdStrike)或存储供应商的重复数据删除的错误。
决议
检查活动文件筛选器:
fltmc从安全/防病毒扫描中排除数据去重文件夹。
在重复数据删除(SAN + Windows)之前咨询供应商文档。
如果发生数据损坏,请从备份还原。
常见问题快速参考表
| 症状 | 根源 | 决议 | 快捷键命令和脚本 |
|---|---|---|---|
| Dedup 作业停滞/失败、事件 ID 4105、4140、4142 等。 | 资源限制;作业配置 | 释放内存,调整作业的参数,重启设备,在非高峰时段运行作业 | Start-DedupJob,Set-ItemProperty |
| 迁移/升级后无法访问文件(0x80070780) | 缺失/非活动重复数据删除功能 | 重新安装 dedup 角色,在卷上启用 | Install-WindowsFeature.Enable-DedupVolume |
| 删除后未回收任何空间 | 区块存储过度增长,无 GC | 手动运行垃圾回收和清理任务,扩展卷容量 | Start-DedupJob -Type GarbageCollection -Full |
| 磁盘使用量过多的块存储/使用峰值 | 高唯一数据,旧数据 | 运行 GC,查看文件模式,扩展磁盘,考虑存档/迁移 | Get-DedupMetadata |
| GUI 中未显示 Dedup 状态 | S2D/群集代码错误 | 使用 PowerShell 监测状态,如有需要请通过商务智能工具提升处理级别。 | Get-DedupVolume |
| 重复数据删除率低 | 不可压缩/加密数据 | 查看数据概况,重置预期,检查配置 | Get-DedupStatus |
| 未释放的磁盘空间;chkdsk 检测到错误 | 文件系统损坏 | 修复文件系统,迁移数据,重新生成存储 | chkdsk、robocopy、Backup/Restore |
| 异常备份/快照增长 | 块级重复数据删除更改 | 重新考虑备份目标的重复使用情况,调整备份计划 | — |
| Robocopy 在迁移过程中解除冻结数据 | 未识别重复数据 | 使用 Windows 备份或磁盘转移,在复制后启用去重;避免使用 Robocopy | Windows 备份,robocopy(有警告) |
数据收集
在联系Microsoft支持人员之前,可以收集有关你的问题的以下信息。
去重任务与状态:
Get-DedupJob Get-DedupStatus | fl \* Get-DedupVolume | fl \* Get-DedupMetadata <DriveLetter>作业和系统事件日志:
get-winevent -LogName 'Microsoft-Windows-Deduplication/Operational' -MaxEvents 10000 | export-csv dedup_operational.csv get-winevent -LogName 'Microsoft-Windows-Deduplication/Diagnostic' -MaxEvents 10000 | export-csv dedup_diag.csv get-winevent -LogName 'Microsoft-Windows-Deduplication/Scrubbing' -MaxEvents 10000 | export-csv dedup_scrubbing.csvCHKDSK 输出:
chkdsk <DriveLetter>: /f /scan内存和 CPU 使用率:
Get-Process | Sort-Object -Descending WorkingSet | Select-Object -First 20目录和分配报告:
dir <volume> /s /a > output.txt fsutil volume allocationReport <drive>: output.txt卷影复制状态和设备:
vssadmin list shadows devnodeclean /?
在故障排除步骤之前和之后收集这些输出,以便进行比较。 如有必要,请安全地将日志发送到Microsoft。