备份大型系统卷时备份程序不成功

本文解决了备份大型系统卷时备份程序不成功的问题。

适用于:Windows Server 2012 R2、Windows 10 - 所有版本
原始 KB 编号: 304101

症状

尝试使用 NTBackup.exe 或使用使用 NT 备份 API 的第三方备份程序创建备份时,备份可能无法成功完成。 即使在服务器上本地运行程序,也可能发生此行为。 此外,你可能会遇到以下一个或多个症状:

  • 应用程序日志中会显示以下一条或多条错误消息:
    错误消息 1

    错误 1450:系统资源不足,无法完成请求的服务。

    错误 1450:/十六进制0x5aa ERROR_NO_SYSTEM_RESOURCES

    操作系统错误 1450 系统资源不足,无法完成请求的服务。

    在“设备”上写入失败,状态 = 1450

    错误消息 2

    错误 1130:服务器存储不足,无法处理此命令。

    错误 1130/十六进制0x46a ERROR_NOT_ENOUGH_SERVER_MEMORY

    备份或还原操作异常终止。

  • 事件 ID 2020 和事件 ID 2021 消息可能由服务器服务生成。

    注意

    通常,不会显示事件 ID 2020 和事件 ID 2021 消息。

  • 如果运行 Hewlett-Packard (HP) OmniBack 备份程序,可能会收到类似于以下错误消息:

    [81:78] C:\foldername\file.name

    在偏移量为 436176408 (:1) 时无法读取 57256 个字节: ([1450]
    系统资源不足,无法完成请求的 service.) 。

  • 如果在 Windows 任务管理器中查看“ 性能 ”选项卡,则会发现非分页内核内存不足。

注意

你可能会因为与本文介绍的问题无关的原因而收到这些错误消息。 如果仅在备份大型系统卷时收到这些错误消息,则本文介绍的两个最可能的原因就是这些错误消息。

若要帮助确定是否遇到此问题,请启动 Windows 任务管理器,然后单击“ 性能 ”选项卡。在右下角,找到“ 内核内存 (K) ”区域,然后记下 Paged 的值。 当此值达到大约 160 兆字节 (MB) 时,在 Microsoft Windows 2000 或 Microsoft Windows NT 4.0 中可能会遇到此问题。 或者,当此值超过 160 MB 时,在 Microsoft Windows Server 2003 中可能会遇到此问题。 如果已将分页池内存的注册表项设置为更高的值,则在使用更高的分页池内存值之前,不会遇到此问题, (当分页池内存使用率达到) 设置值的 80% 左右时,可能会出现此问题。 如果 gflags 为池标记打开了设置,并且如果使用 Poolmon 实用工具,则会看到 MmSt 标记的使用率较高。 它是用于映射用于跟踪共享文件的操作系统内存的池标记。

原因

此问题的两个原因相关。 首先列出了更频繁的原因:

  • 打开的文件比内存缓存管理器可以处理的文件多。 因此,缓存管理器耗尽了可用的分页池内存。

  • 备份程序已尝试备份大小大于备份 API 在该版本的操作系统上可以访问的文件。 其结果 (相同,即分页池) 耗尽。

    注意

    这第二个问题更有可能发生在基于 Microsoft Windows NT 4.0 的计算机上。

每个问题的解决方法因你在 Windows Server 2003、Microsoft Windows 2000 还是 Windows NT 4.0 中遇到问题而异。

解决方案

Windows Server 2003 和 Windows 2000

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 有关如何备份和还原注册表的更多信息,请单击下面的文章编号查看 Microsoft 知识库中相应的文章:
322756 如何在 Windows 中备份和还原注册表

可能需要更改两个注册表设置。 始终更改第一个设置。 根据系统的配置,可能还需要更改第二个设置。

注册表设置 1

  1. 依次单击“开始”、“运行”,在“打开”框中键入“regedit”,然后单击“确定”

  2. 找到并单击下面的注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

  3. 在“编辑”菜单上,指向“新建”,然后单击“DWORD 值”

  4. 键入 PoolUsageMaximum 作为条目名称,然后按 Enter。

  5. 右键单击“ PoolUsageMaximum”,然后单击“ 修改”。

  6. 单击“ 小数”。

  7. 在“ 值数据 ”框中,键入 60,然后单击“ 确定”。

    重要

    • 使用 60 作为初始值。 如果备份不成功,请使用 40 作为值。 如果不起作用,则必须更改备份程序的行为以减少分页池的需求。 如果该值有效,则可能需要将值增加大约 25%,直到备份不起作用。 如果备份不成功,请使用本文中所述的第二个注册表设置。
    • 确保此注册表设置的值不超过 60。
    • 如果使用 /3GB 开关,请使用 40 作为初始设置。 请注意,此值是百分比值。
  8. 退出注册表编辑器。

  9. Restart your computer.

由于必须在最紧张的备份期间测试这些设置,因此,如果不确定哪个备份消耗的资源最多,可能需要等待一个月才能完成整个备份周期。 由于这种情况,Microsoft 建议先测试低值。 有关详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:

312362 服务器无法从系统分页池分配内存

注册表设置 2

  1. 单击“开始”,单击“运行”,在“打开”框中键入 regedit,然后单击“确定

  2. 找到并单击下面的注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

  3. 在“编辑”菜单上,指向“ 新建”,然后单击“ DWORD 值”。

  4. 键入 PagedPoolSize 作为条目名称,然后按 Enter。

  5. 右键单击“ PagedPoolSize”,然后单击“ 修改”。

  6. 单击“ 十六进制”。

  7. 在“ 值数据 ”框中,键入值 FFFFFF,然后单击“ 确定”。

    重要

    • 将 PagedPoolSize 设置为 0xFFFFFFFF (-1) 会将最大分页池而不是其他资源分配给计算机。 这通常在域控制器或终端服务器上是必需的。 默认情况下,大多数 Windows 2000 系统似乎限制为 160 MB 的分页池最大大小。 可以通过从公共网站下载内核调试器并在要使用的调试器中打开内核转储来验证这一点。 要使用的命令是 !vm 。 例如,这会显示最大 163840 KB 的分页池。 添加此值可减少系统上可用的页表项 (PTE) ,并将分页池的最大扩展至 Windows 2000 中的 343 MB。 可在 Windows Server 2003 中将分页池最大大小扩展到更大的值。

      Windows Server 2003 的默认和最大分页池值远大于 Windows 2000。 通常,Windows Server 2003 值至少比 Windows 2000 中的值高 50%。 这些较大的值使你不太可能遇到分页池值导致本文中所述的问题。 但是,仍可能出现此问题。

    • 此值限制可用的系统 PTE。 PTE 是系统使用的另一个不相关的系统资源。 此设置可能会导致操作系统意外停止,并在启动时在蓝屏上显示停止0x3F错误。 可以使用系统重启菜单或恢复主机上的 “上次已知良好 重启”选项从此恢复。 使用 性能监视器 查看免费系统页表条目计数器。 如果观察到的可用值超过 40,000,则可以添加 PagePoolSize 设置。

    • 如果同时运行 /3GB 和 /PAE,请不要在未经广泛测试的情况下设置此设置,在确定环境中必须具有多少系统 PTES 之前。 你可能会看到 10,000-20,000 免费范围内的值。 使用文章配置分页池内存,但绝不会低于 10,000 个可用系统 PTE。 如果使用 /3GB 开关,请不要将其设置为任何其他值。 唯一支持的值是 0、0A000000 和 FFFFFFFF。

  8. 退出注册表编辑器。

  9. Restart your computer.

Windows NT 4.0

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 有关如何备份和还原注册表的更多信息,请单击下面的文章编号查看 Microsoft 知识库中相应的文章:
322756 如何在 Windows 中备份和还原注册表

注意

必须使用 Windows NT 4.0 Service Pack 6a。

解决第一个问题

  1. 启动注册表编辑器 (Regedt32.exe)。

  2. 找到并单击下面的注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory_Management

  3. 在“编辑”菜单上,单击“添加值”,然后添加以下注册表值:
    值名称:UnusedFileCache
    数据类型:REG_DWORD
    Radix:Decimal
    值数据:15

    注意

    此数字表示未使用的段可以使用的池的百分比。 值为 0 表示系统将使用类似于 Windows NT 4.0 Service Pack 3 的默认行为。 值 5 到 40 表示系统会根据池使用情况剪裁未使用的文件缓存。 5 是最具攻击性的 (也就是说,它以最小) 增加缓存的大小,40 表示 (也就是说,它允许缓存在剪裁缓存之前增长最大。)

    重要

    • 使用 15 作为初始值。 如果备份不成功,请使用 5 作为值。 如果这不起作用,则必须更改备份程序的行为以减少分页池的需求,或者必须升级到 Windows 2000,其中分页池 (两倍以上,有关详细信息,请参阅) 的“Windows 2000”部分。 如果此值有效,可能需要将其增加大约 20%,直到备份失败。 如果备份不成功,请使用本文中所述的第二个注册表设置。

    • 如果使用 /3GB 开关,请使用 5 作为初始设置。

  4. 退出注册表编辑器。

  5. Restart your computer.

由于必须在最紧张的备份期间测试这些设置,因此,如果不确定哪个备份消耗的资源最多,可能需要等待一个月才能完成整个备份周期。 因此,Microsoft 建议先测试低值。

解决第二个问题

一种可能的解决方法是限制备份,以便一次备份一个文件。 它可能工作,也可能不起作用,具体取决于要备份的文件的大小。 (预期适用于小于 180 GB [GB]的文件 ) 如果要备份多个大型文件,但每个文件小于 180 GB,也可以尝试此分辨率。 按照步骤解决第一个问题。 对于大于 180 GB 的文件,不存在解决方法。 因此,必须将系统升级到 Windows 2000。 如果尝试远程备份系统作为解决方法,则会遇到相同的问题。

  1. 启动注册表编辑器 (Regedt32.exe)。

  2. 找到并单击下面的注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory_Management

  3. 在“编辑”菜单上,单击“添加值”,然后添加以下注册表值:
    值名称:DisablePagedPoolHint
    数据类型:REG_DWORD
    Radix:Decimal
    值数据:1

  4. 退出注册表编辑器。

  5. Restart your computer.

状态

Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。

更多信息

NTBackupread 和 NTBackupwrite 都使用缓冲 I/O。 这意味着Windows NT缓存针对流执行的 I/O。 它也是唯一用于备份文件元数据的 API。 此缓存是从有限的资源(即池和非分页池)拉取的。 因此,大量文件或大型文件可能会导致池资源运行不足。

有几个因素可能会耗尽分页池内存的供应。 可以打开池标记并按不同的时间间隔执行 poolsnaps 操作,以帮助你了解哪个驱动程序耗尽了分页池内存。 poolsnaps如果 指示 MmSt 标记 (Mm 节对象原型 PTE) 是最大的使用者并且超过 80 MB,则可能会在服务器上打开大量文件。

计算机上可能的最大分页池内存为 Windows 2000 中 343 MB 的分页池,并且分页池密钥设置为 FFFFFFFF;如果密钥不存在,则为 164 MB。 Windows NT中可能的最大分页池内存为 192 MB。 默认情况下,当系统达到总分页池的 80% 时,内存管理器会尝试剪裁分配的分页池内存。 例如,343 MB 的 80% 为 274 MB。 如果内存管理器的剪裁速度不足以满足需求,则可能会发生本文“症状”部分中列出的事件。 例如,如果优化内存管理器以在 (之前启动修整过程,则当内存管理器达到 40%) 时,计算机可以在突然高峰使用期间跟上分页池需求,这样就不会耗尽分页池内存。

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 对于这些产品的性能或可靠性,Microsoft 不作任何暗示保证或其他形式的保证。