如何确定复制文件夹的最低临时区域 DFSR 需求

本文是关于如何计算 DFSR 正常运行所需的最小暂存区域的快速参考指南。 如果值低于这些值,可能会导致复制速度变慢或完全停止。

请记住,这些只是最小值。 考虑临时区域大小时,暂存区域越大越好,最大不超过已复制文件夹的大小。 请参阅“如何确定你是否有暂存区问题”一节以及本文末尾链接的博客文章,了解有关为什么拥有适当大小的暂存区域很重要的更多详细信息。

一般指南

暂存区域配额必须与已复制文件夹中最大的 32 个文件一样大。

与日常复制相比,初始复制将更多地使用暂存区域。 如果你有可用的驱动器空间,强烈建议你在初始复制期间将暂存区域设置为高于最小值。

如何找到这 X 个最大的文件?

使用 PowerShell 脚本查找 32 个或 9 个最大的文件,并确定它们加起来有多少 GB. 在开始之前,启用最大路径长度支持,这是在 Windows Server 2016 中首次使用最大路径长度限制添加的

  1. 运行以下命令:

    Get-ChildItem c:\\temp -recurse | Sort-Object length -descending | select-object -first 32 | ft name,length -wrap –auto
    

    此命令将返回文件名和文件大小(以字节为单位)。 如果你想知道已复制文件夹中最大的 32 个文件是什么,以便可以“访问”它们的所有者,这将非常有用。

  2. 运行以下命令:

    Get-ChildItem c:\\temp -recurse | Sort-Object length -descending | select-object -first 32 | measure-object -property length –sum
    

    此命令将返回文件夹中 32 个最大文件的总字节数,而不列出文件名。

  3. 运行以下命令:

    $big32 = Get-ChildItem c:\\temp -recurse | Sort-Object length -descending | select-object -first 32 | measure-object -property length –sum
    
    $big32.sum /1gb
    

    此命令将获取文件夹中 32 个最大文件的总字节数,并计算将字节转换为千兆字节。 此命令由两行组成。 可以一次将它们粘贴到 PowerShell 命令 shell 中,也可以背对背运行它们。

手动演练

运行命令 1 将返回与以下输出类似的结果。 为简洁起见,此示例仅使用 16 个文件。 对于 Windows 2008 及更高版本的操作系统,始终使用 32。

PowerShell 返回的示例数据

名称 长度
File5.zip 10286089216
archive.zip 6029853696
BACKUP.zip 5751522304
 file9.zip 5472683008
MENTOS.zip 5241586688
File7.zip 4321264640
file2.zip 4176765952
frd2.zip 4176765952
BACKUP.zip 4078994432
File44.zip 4058424320
file11.zip 3858056192
Backup2.zip 3815138304
BACKUP3.zip 3815138304
Current.zip 3576931328
Backup8.zip 3307488256
File999.zip 3274982400

如何使用此数据确定最小暂存区域大小:

  • 名称 = 文件的名称。
  • 长度 = 字节
  • 1 千兆字节 =1073741824 字节

首先,对总字节数求和。 接下来,将总数除以 1073741824。 可以通过 Microsoft Excel 轻松完成此操作。

示例

根据上面的示例,总字节数为 75241684992。 要获得所需的最小暂存区域配额,你需要将 75241684992 除以 1073741824。

75241684992 / 1073741824 = 70.07 GB

根据此数据,如果四舍五入到最接近的整数,你可以将我的暂存区设置为 71GB.

实际方案:

虽然手动演练很有趣,但自己计算可能会很浪费时间。 要自动执行该过程,请使用上述示例中的命令 3。 结果将如下所示

使用示例命令 3,除了四舍五入到最接近的整数外,不需要任何额外的工作,你就可以确定你需要为 d:\docs 分配 6GB 的暂存区域配额。

是否需要重新引导或重新启动 DFSR 服务才能获取更改?

对暂存区域配额的更改不需要重新启动或重新启动服务即可生效。 需要等待 AD 复制和 DFSR 的 AD 轮询周期才能应用更改。

如何确定是否存在暂存区域问题

可以通过监视 DFSR 服务器上的特定事件 ID 来检测暂存区域问题。 事件列表为 4202、4204、4206、4208 和 4212。 下面列出了这些事件的文本。 区分 4202 和 4204 以及其他事件非常重要。 在正常操作条件下,可能会记录大量的 4202 和 4204 事件。

暂存区域事件

事件 ID:4202 严重性:警告

DFS 复制服务检测到,本地路径(路径)中已复制文件夹所使用的临时空间高于高水位线。 该服务将尝试删除最旧的暂存文件。 性能可能会受到影响。

事件 ID:4204 严重性:信息

DFS 复制服务已成功删除本地路径(PATH)中已复制文件夹的旧暂存文件。 暂存空间现在低于高水位线。

事件 ID:4206 严重性:警告

DFS 复制服务未能清理本地路径(路径)中的已复制文件夹的旧暂存文件。 该服务可能无法复制某些大文件,并且已复制文件夹可能无法同步。该服务将在 (x) 分钟后自动重试临时空间清理。 如果检测到某些暂存文件已解锁,则该服务可能会提前开始清理。

事件 ID:4208 严重性:警告

DFS 复制服务检测到,临时空间使用率大于本地路径(路径)中的已复制文件夹的暂存配额。 该服务可能无法复制某些大文件,并且已复制文件夹可能无法同步。该服务将尝试自动清理暂存空间。

事件 ID:4212 严重性:错误

DFS 复制服务无法复制本地路径(路径)中的已复制文件夹,因为该分段路径无效或不可访问。

4202 和 4208 有什么区别?

事件 4202 和 4208 具有类似的文本;即 DFSR 检测到暂存区域使用率超过高水位线。 不同之处在于,4208 是在运行暂存区域清理之后记录的,并且仍然超过了暂存配额。 4202 是正常的预期事件,而 4208 是异常的,需要干预。

多少个 4202、4204 事件算是太多?

这个问题没有单一的答案。 与 4206、4208 或 4212 事件不同(这些事件始终表示错误并且表示需要用户采取操作),4202 和 4204 事件是在正常运行条件下发生。 看到大量 4202 和 4204 事件可能表示存在问题。 注意事项:

  1. 复制的文件夹 (RF) 日志记录 4202 是否执行初始复制? 如果是,则记录 4202 和 4204 事件是正常的。 在初始复制过程中,你将需要通过提供尽可能多的暂存区域来尽可能减少这些数据
  2. 仅仅检查 4202 个事件的总数是不够的。 你必须知道每个 RF 记录了多少。 如果你在 24 小时内为一个 RF 记录 20 个 4202 事件,则视为高。 但是,如果你有 20 个已复制文件夹,并且每个文件夹有一个事件,那么表示你做得很好。
  3. 你应该检查几天的数据以确定趋势。

我们通常建议客户在正常操作条件下,每个已复制文件夹每天最多允许一个 4202 事件。 “正常”表示没有发生初始复制。 我们的理由是:

  1. 清理暂存区域所花费的时间就是不复制文件所花费的时间。 清除暂存区域时,复制将暂停。
  2. DFSR 受益于完整的暂存区域,将其用于 RDC 和跨文件 RDC,或者将相同的文件复制到其他成员
  3. 记录的 4202 和 4204 事件越多,就越有可能出现 DFSR 无法清理暂存区域或必须提前从暂存区域清除文件的情况。
  4. 根据我的经验,4206、4208 和 4212 事件之前和之后总是有大量的 4202 和 4204 事件。

虽然每天每个 RF 只允许一个 4202 事件是很保守的行为,但这大大降低了你遇到暂存区域问题的几率,并更好地利用你的 DFSR 服务器资源来实现复制文件的预期目的。