为什么 CBS.log 文件大小为 20 GB

skm*_*asq 132 disk-space hard-drive logging windows-8

两天前我有一个完整的C:驱动器,之后我删除了 8 GB 的数据。第二天硬盘又满了,所以我继续删除另外5GB,第二天磁盘又满了。

在搜索了导致磁盘空间如此快被填满的原因之后,我使用该windirstat工具来查找哪些文件占用了最多的空间。我发现CBS.log位于 中的文件c:\windows\logs\cbs\有 20 GB 大。

我正在使用 Windows 8。

  • 这个文件应该这么大,如果不是,我该如何减小大小?
  • 这个文件的目的是什么?
  • 我可以删除它吗?

小智 88

我有一个 17 gb 的 cbs.persist.log 文件,因为我确定不是我填满了我的 ssd,我在 windows 日志目录中搜索了不寻常的大文件。无论如何只能想到压缩问题。

因此,要重置 CBS 文件夹中的压缩,我使用了以下方法:

  1. 在任务管理器服务中禁用 TrustedInstaller.exe(Windows 模块安装程序)
  2. 删除 C:\Windows\Logs\ CBS目录中的所有 .log 文件,同时删除 .persist 和 .cab 文件
  3. 再次启用 TrustedInstaller.exe

注意:清理 CBS 文件夹会重置压缩过程,因此在压缩为 .cab 文件之前,新创建的日志文件不应超过 50 Mb。

没有直接的视觉结果,您需要等到这样的日志文件足够大。

一年后,此解决方案在 Windows 7 / 8 / 8.1 上仍然适用于我

虽然我不能确定压缩永远不会再次失败,如果确实如此……那么只需再次重复该解决方案,但一定要在删除 CBS 文件夹中的文件之前禁用 TrustedInstaller。

希望这可以帮助。

  • 如何禁用 Windows 模块安装程序?在“服务”窗口中,所有启动、停止、恢复、暂停等按钮都是灰色的。Windows 任务管理器也无法杀死 TrustedInstaller.exe.. (5认同)
  • @Alph.Dev 通过Win+R(“运行”)启动`services.msc`,找到服务,右键-属性-开始:禁用。然后重新启动,清理文件,并将其设置回手动或自动(自动是我的 Win7 系统上的默认设置)。 (3认同)

Lin*_*ger 34

这是由 Microsoft Windows 资源检查器 (SFC.exe) 生成的文件。

不,它不应该那么大。当 CBS 的大小达到 50 兆左右时,应该生成 CBS.persist.log。CBS.log 应复制到 cbs.persist.log 并应启动新的 cbs.log 文件。

您可以尝试压缩文件:

  • 如果您右键单击 CBS.log 文件
  • 然后点击属性
  • 在常规选项卡上,单击高级
  • 选中“压缩内容以节省磁盘空间”,然后单击“确定”

或者,如果您确定系统运行良好,则可以删除此文件。SFC.exe 将创建一个新的,下次运行时。但是,它可能有助于解决问题。

  • 仅供参考,`CBS.log` 不是由证监会生成的。虽然 SFC 确实附加到它(带有“[SR]”标签),但 TrustedInstaller.exe(又名 CBS 又名基于组件的服务)似乎是创建日志文件的原因。来源:【了解基于组件的服务】(http://blogs.technet.com/b/askperf/archive/2008/04/23/understanding-component-based-servicing.aspx) (17认同)
  • 为什么当@Vinayak 暗示它有错误的细节时,这被标记为正确答案?当然,这就是“编辑”功能的用途吗? (6认同)
  • @SamB 是正确的。出现这个问题是因为 .CAB 格式有 2GiB 文件大小的硬限制,TrustedInstaller 将继续定期发出 `makecab`,每次在您的临时文件夹中创建一个新的 ~100MiB 文件。解决方案是删除 2GB 日志文件(这可以安全地完成,因为它们仅用于故障排除)。 (5认同)
  • 嗯,我严重怀疑 NTFS 压缩会阻止 TrustedInstaller 表单尝试在日志文件上运行 `makecab`,如果它的大小 >= 2 GiB,它将死。一个更好的主意是以其他一些显式压缩格式压缩它,这通常会给它一个新的文件名,从而防止 TrustedInstaller 毫无意义地将它提供给 `makecab`... (3认同)

Fir*_*tal 27

以防万一有人想知道为什么会发生这种情况。我相信我已经重现了特殊条件(我确信这些条件还有其他变化可能会导致相同的结果):

  1. 我启动了大量非常大的 Windows 更新(一堆语言包和服务包等),同时我还打开了大量其他应用程序和窗口(我是一名开发人员)。然后我去吃午饭了。
  2. Windows 更新一直运行到系统内存不足 (RAM) 为止。我有 32 GB,但这还不够。
  3. “Trusted Installer.exe”(“Windows Module Installer”服务)试图压缩快速增长的日志文件,但无法运行,要么是因为日志增长太快,要么是因为内存不足而无法启动,或两者。因此,当需要时,Windows Module Installer 服务甚至根本没有启动(甚至是暂时启动)。
  4. 从那时起,它无法处理日志文件,因为它对于 .CAB 压缩来说太大了(大约 25 GB!),因此恶性循环开始了,没有什么可以阻止它(除非通过“杜松子酒”以上)。
  5. 一旦日志文件在我的 SSD 上增长到 60 GB,它就使用了我所有的可用空间,我收到了“存储空间不足”警告,并开始寻找原因。

以下过程似乎解决了该问题:“禁用 Windows Module Installer 服务,删除 C:\Windows\Logs\CBS\ 文件夹和'C:\Windows\Temp' 文件夹中的内容——跳过任何正在使用的文件,然后再次启动 Windows 模块安装程序服务并将其设置为“手动”启动(默认)”。重启。

  • 我的机器上的 c:\windows\temp 中有数千个文件 - 希望将其修剪为几百个文件将对减少 CBS.log 的爆炸性增长产生正确的影响 (2认同)

iva*_*tpr 10

作为解决方法,在 Windows 7 上,如果“Windows 模块安装程序”服务停止,则启动它似乎会触发日志轮换过程,该过程会创建新的 cbs.log 文件并将旧文件移动到压缩的 CbsPersist .cab 存档中。我的 500mb 日志文件被压缩到 30mb。

请注意,可能需要几分钟才能运行。一旦完成,该服务似乎会自动停止。

  • 请注意,如果任何文件已经达到 2GiB 标记,则它本身不起作用,因为 `makecab` 只会在它到达那么远时放弃(在 `%WINDIR%\Temp` 中留下损坏的 `cab_*` 文件); 在这种情况下,您还需要以某种方式处理过大的 `CbsPersist_*.log` 文件,以便 TrustedInstaller(“Windows 模块安装程序”)不会在启动时尝试在它们上运行 `makecab`。我使用 7-zip 将我的压缩成 .log.xz 文件,但删除或重命名可能也是选项。之后,重新启动它将处理合理大小的那些。 (10认同)
  • @SamB 是正确的。出现这个问题是因为 .CAB 格式有 2GiB 文件大小的硬限制,TrustedInstaller 将继续定期发出 `makecab`,每次在您的临时文件夹中创建一个新的 ~100MiB 文件。解决方案是删除 2GB 日志文件(这可以安全地完成,因为它们仅用于故障排除)。非常感谢 SamB 发帖,您已经找到了这个问题的根本原因。我使用的是 Windows 7 SP1 64 位。我不敢相信微软还没有解决这个问题。 (6认同)

gna*_*naa 5

就我而言,即使在禁用后我也无法停止服务。以下步骤帮助我停止服务并删除 CBS 日志。

C:\Windows\system32>net stop TrustedInstaller
The requested pause, continue, or stop is not valid for this service.

More help is available by typing NET HELPMSG 2191.

C:\Windows\system32>sc qc TrustedInstaller
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: TrustedInstaller
    TYPE               : 10  WIN32_OWN_PROCESS
    START_TYPE         : 4   DISABLED
    ERROR_CONTROL      : 1   NORMAL
    BINARY_PATH_NAME   : C:\Windows\servicing\TrustedInstaller.exe
    LOAD_ORDER_GROUP   : ProfSvc_Group
    TAG                : 0
    DISPLAY_NAME       : Windows Modules Installer
    DEPENDENCIES       :
    SERVICE_START_NAME : localSystem

C:\Windows\system32>tasklist | find /i "TrustedInstaller.exe"
TrustedInstaller.exe          2164 Services                   0    132,404 K

C:\Windows\system32>taskkill /f /im "TrustedInstaller.exe"
SUCCESS: The process "TrustedInstaller.exe" with PID 2164 has been terminated.
Run Code Online (Sandbox Code Playgroud)

以防万一它会帮助某人。