AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1063448
Accepted
Zam
Zam
Asked: 2021-05-14 06:08:59 +0800 CST2021-05-14 06:08:59 +0800 CST 2021-05-14 06:08:59 +0800 CST

为什么 Windows 累积更新需要这么长时间,为什么我的服务器上有这么多被取代的更新?

  • 772

背景

  • 我们的服务器是 Server 2016 Version 1607
  • 我们的服务器是在不同的时间创建的,有些已经运行了几个月,有些则运行了几年
  • 我们通过 SCCM 部署补丁

问题

在我们为 Windows Server 2016 虚拟机应用最新和最好的补丁程序的维护窗口期间,我们注意到偶尔(随着时间的推移更频繁地),Cumulative Update(CU)补丁程序最终要么卡住,要么需要数小时才能应用。我们认为,这些长时间的原因是服务器上被取代的更新的存在和数量。

所以这就留下了一个问题——为什么这些被取代的更新会累积而不被清理?我们如何清理它们?

windows wsus sccm
  • 1 1 个回答
  • 1978 Views

1 个回答

  • Voted
  1. Best Answer
    Zam
    2021-05-14T06:08:59+08:002021-05-14T06:08:59+08:00

    TL:博士

    简而言之,被取代的更新是由 Windows 拥有的计划任务失败引起的。此计划任务负责清理被取代的更新。要解决此问题,您可以运行Dism.exe命令手动清理这些被取代的更新。这允许在维护窗口期间进行更快、更可靠的修补。在此处查找有关这些计划任务和Dism.exe命令的更多信息。

    事件日志中被取代的更新

    所以首先让我们谈谈我们如何知道有 CU 和其他更新正在清理并延迟补丁安装。对于刚开始研究 Windows Server 上的修补程序的人,有一个称为 Windows 事件查看器日志Setup,其中包含与修补程序安装相关的事件。在此事件查看器日志中,我们可以看到一个事件,表明 KB 被标记为已被取代并且将被删除。下面是这样一个事件的样子。

    在此处输入图像描述

    当我们在维护窗口期间开始修补时,这些事件总是会发生。这意味着我们花在补丁上的大部分时间实际上都花在了处理这些被取代的更新上,导致我们的补丁花费的时间比我们计划的要长得多。

    那么为什么这些被取代的更新仍然存在并且只在修补期间被清理呢?

    Windows 任务计划程序StartComponentCleanup

    在研究这个问题时,我看到了一篇文章,详细介绍了 Windows 内置的清理过时组件的功能。事实证明,这正是我想要的。本文讨论的清理是清理旧组件,这与删除被取代的更新相关。

    清理 WinSxS 文件夹 - 任务计划程序

    本文提供有关内置任务计划程序任务的信息:Library\Microsoft\Windows\Servicing\StartComponentCleanup

    StartComponentCleanup 任务是在 Windows 8 中创建的,用于在系统不使用时定期自动清理组件。此任务设置为在操作系统触发时自动运行。自动运行时,该任务将在安装更新的组件后至少等待 30 天,然后再卸载该组件的先前版本。如果您选择运行此任务,该任务将有 1 小时超时,并且可能不会完全清理所有文件。

    在我们的服务器上查看此任务后,我发现此任务的许多实例要么无法运行,要么在它能够完成之前被停止。我认为这是由于上述 Microsoft 摘录中讨论的时间限制造成的,并且我相信此任务在我们的许多服务器上失败是我们遇到被取代更新过剩的原因。当此任务无法运行时,无法定期清理被取代的更新。

    在此处输入图像描述

    安装程序

    然后前面提到的文章继续讨论Dism.exe可用于执行此手动清理的命令。

    清理 WinSxS 文件夹 - Dism.exe

    实际上,您可以运行与计划任务运行相同的命令来清理过时的组件,尽管不受计划任务施加的限制。

    我发现首先运行带有标志的Dism.exe命令是有益的。AnalyzeComponentStore这将返回是否有任何过时的组件以及您是否应该运行清理命令。

    Dism.exe /online /Cleanup-Image /AnalyzeComponentStore

    C:\Users\StackOverflow>"%SystemRoot%\System32\Dism.exe" /online /Cleanup-Image /AnalyzeComponentStore
    Deployment Image Servicing and Management tool
    Version: 10.0.14393.4169
    Image Version: 10.0.14393.4169
    [==========================100.0%==========================]
    Component Store (WinSxS) information:
    Windows Explorer Reported Size of Component Store : 9.52 GB
    Actual Size of Component Store : 9.12 GB
        Shared with Windows : 5.29 GB
        Backups and Disabled Features : 3.15 GB
        Cache and Temporary Data : 672.30 MB
    Date of Last Cleanup : 2019-04-10 08:58:06
    Number of Reclaimable Packages : 3
    Component Store Cleanup Recommended : Yes
    The operation completed successfully.
    

    如果您在结果中看到这一点:Component Store Cleanup Recommended : Yes那么您可能可以使用以下命令继续进行组件清理。请注意,这可能需要相当长的时间才能运行。

    Dism.exe /online /Cleanup-Image /StartComponentCleanup

    运行这个命令正是我想要的!运行此命令将启动 Windows 删除被取代更新的过程(如下面的屏幕截图所示)。这很重要,因为它使我们能够在维护窗口之前主动删除被取代的更新。这使我们的维护窗口更加可预测,超出窗口或卡住的可能性更小。

    在此处输入图像描述

    结论

    简而言之,被取代的更新是由 Windows 拥有的计划任务失败引起的。此计划任务负责清理被取代的更新。要解决此问题,您可以运行Dism.exe命令手动清理这些被取代的更新。这允许在维护窗口期间进行更快、更可靠的修补。

    有关修补 Windows Server 版本 1607 的奖励信息

    下面是一篇讨论微软用来修补操作系统的机制的文章。它提供了有关如何以及为什么 1607 版本的 Windows 需要比其他版本更长的时间来修补的信息。如果你在这个版本上,它可能值得一看。

    如何提高 Windows 累积更新安装时间

    • 2

相关问题

  • 知道任何适用于 Windows 的快速可编写脚本的 ftp 客户端吗?[关闭]

  • 如果 Windows 服务崩溃,如何自动重新启动它?

  • 无法安排任务(访问被拒绝)

  • 物理机重启时自动重启虚拟机(VMWare)

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve