

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 重复数据删除问题排查
<a name="data-dedup-ts"></a>

使用以下信息帮助排查配置和使用重复数据删除时产生的一些常见问题。

**Topics**
+ [重复数据删除不起作用](#data-dedup-not-working)
+ [重复数据删除值意外设置为 0](#data-dedup-stopped)
+ [删除文件后，文件系统上的空间未被释放](#data-dedup-freed-space)

## 重复数据删除不起作用
<a name="data-dedup-not-working"></a>

要查看重复数据删除的当前状态，请运行`Get-FSxDedupStatus` PowerShell 命令以查看最新重复数据删除作业的完成状态。如果一个或多个作业失败，则文件系统的可用存储容量可能不会增加。

重复数据删除作业失败的最常见原因是内存不足。
+ Microsoft [建议](https://docs.microsoft.com/en-us/windows-server/storage/data-deduplication/install-enable#faq)最好每 1 TB 的逻辑数据有 1 GB 的内存（或者每 1 TB 的逻辑数据至少有 350 MB 的内存）。使用 [Amazon FSx 性能表](performance.md#performance-table)来确定与您的文件系统的吞吐容量相关的内存，并确保内存资源足以容纳您的数据大小。如果不够，则需要[提高文件系统的吞吐能力](managing-throughput-capacity.md)，使其满足每 1 TB 逻辑数据提供 1 GB 内存的要求。
+ 重复数据删除作业使用 Windows 推荐的默认 25% 内存分配配置，这意味着对于具有 32 GB 内存的文件系统，8 GB 可用于重复数据删除。内存分配是可配置的（使用带 `–Memory` 参数的 `Set-FSxDedupSchedule` 命令）。请注意，为重复数据删除使用较高的内存分配可能会影响文件系统的性能。
+ 您可以修改重复数据删除作业的配置，以降低内存需求量。例如，您可以将优化限制为针对特定文件类型或文件夹运行，或者设置优化的最小文件大小和期限。我们还建议将重复数据删除作业配置为在文件系统负载最小的空闲期间运行。

如果重复数据删除作业没有足够的时间完成，也可能会出错。您可能需要更改作业的最长持续时间，如 [修改重复数据删除计划](managing-data-dedup.md#set-dedup-sched) 中所述。

如果重复数据删除作业已经失败了很长时间，并且在此期间文件系统上的数据发生了变化，那么后续的重复数据删除作业可能需要更多资源才能首次成功完成。

## 重复数据删除值意外设置为 0
<a name="data-dedup-stopped"></a>

对于已配置重复数据删除的文件系统，`SavedSpace` 和 `OptimizedFilesSavingsRate` 的值意外设为 0。

在存储优化过程中，当您增加文件系统的存储容量时，可能会发生这种情况。当您增加文件系统的存储容量时，Amazon 会在存储优化过程中 FSx 取消现有的重复数据删除任务，该过程会将数据从旧磁盘迁移到更大的新磁盘。存储优化任务完成后，Amazon 将 FSx 恢复文件系统的重复数据删除。有关增加存储容量和存储优化的更多信息，请参阅[管理存储容量](managing-storage-configuration.md#managing-storage-capacity)。

## 删除文件后，文件系统上的空间未被释放
<a name="data-dedup-freed-space"></a>

重复数据删除的预期行为是，如果删除的数据是重复数据删除节省空间的内容，那么文件系统上的空间实际上要在垃圾回收作业运行后才会释放。

您可能会发现，将计划设置为在删除大量文件后立即运行垃圾回收作业很有用。垃圾回收作业完成后，您可以将垃圾回收计划恢复回其原始设置。这便可以确保您能立即快速查看删除内容释放的空间。

按照以下步骤将垃圾回收作业设置为 5 分钟后运行。

1. 要验证是否启用了重复数据删除，请使用 `Get-FSxDedupStatus` 命令。有关命令及其预期输出的更多信息，请参阅[查看节省的空间量](managing-data-dedup.md#get-dedup-status)。

1. 按照以下步骤将计划设置为垃圾回收作业在从现在起 5 分钟后运行。

   ```
   $FiveMinutesFromNowUTC = ((get-date).AddMinutes(5)).ToUniversalTime()
   $DayOfWeek = $FiveMinutesFromNowUTC.DayOfWeek
   $Time = $FiveMinutesFromNowUTC.ToString("HH:mm")
   
   Invoke-Command -ComputerName ${RPS_ENDPOINT} -ConfigurationName FSxRemoteAdmin -ScriptBlock {   
       Set-FSxDedupSchedule -Name "WeeklyGarbageCollection" -Days $Using:DayOfWeek -Start $Using:Time -DurationHours 9
   }
   ```

1. 在运行垃圾回收作业并释放空间后，将计划恢复回其原始设置。