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


129

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

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

我正在使用Windows 8。

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

您是否添加了详细的日志记录?blogs.technet.com/b/joscon/archive/2010/11/18/...
magicandre1981

Answers:


34

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

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

您可以尝试压缩文件:

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

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


16
仅供参考,CBS.log不是由SFC生成的。尽管SFC确实附加了(带有[SR]标签),但TrustedInstaller.exe(又名CBS,又名基于组件的服务)似乎是创建日志文件的源。来源:了解基于组件的服务
Vinayak,2015年

3
嗯,我严重怀疑NTFS压缩是否会阻止TrustedInstaller表单尝试makecab在日志文件上运行,如果日志文件的大小> = 2 GiB,该文件将死亡。一个更好的主意是以其他显式压缩格式压缩它,这通常会给它一个新的文件名,从而防止TrustedInstaller毫无意义地将其馈送到makecab...
SamB

5
@SamB是正确的。发生此问题的原因是.CAB格式具有2GiB文件大小的硬限制,并且TrustedInstaller将继续按makecab常规发行,每次在您的temp文件夹中创建一个新的〜100MiB文件。解决方案是删除2GB日志文件(可以安全地完成此操作,因为它们仅用于故障排除)。
Syclone0044 2015年

6
当@Vinayak建议输入错误的详细信息时,为什么将此标记为正确答案?当然这就是“编辑”功能的作用吗?
Criggie '16

85

我的cbs.persist.log文件为17 gb,因为我确定不是我填满了ssd,所以我在Windows日志目录中搜索了异常的大文件。反正只能想到压缩问题。

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

  1. 在Taskmanager Services中禁用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。

希望这可以帮助。


5
如何禁用Windows模块安装程序?在“服务”窗口中,所有开始,停止,继续,暂停等按钮均显示为灰色。Windows任务管理器也无法杀死TrustedInstaller.exe。–
Alph.Dev

3
@ Alph.Dev services.msc通过Win + R(“运行”)启动,找到服务,右键单击-属性-开始:禁用。然后重新启动,清理文件,然后将其设置回“手动”或“自动”(自动是Win7系统上的默认设置)。
chrki '16

有更简单的方法,只需使用LockHunter删除它即可。
majkinetor

powershell脚本?
PreguntonCojoneroCabrón

27

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

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

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


2
有成千上万的文件在C:\ WINDOWS我的机器上\ TEMP -希望,修剪,要几百文件将有权对减少cbs.log中的爆炸式增长
Toybuilder

10

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

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


10
请注意,如果任何文件已经达到2GiB标记,它本身就无法工作,因为当文件到达2GiB标记makecab时就放弃了(将损坏的cab_*文件保留在中%WINDIR%\Temp);在这种情况下,您还需要以CbsPersist_*.log某种方式处理超大文件,以便TrustedInstaller(“ Windows模块安装程序”)makecab在启动时不会尝试在它们上运行。我使用7-zip将我的文件压缩为.log.xz文件,但是删除或重命名也可能是选项。在那之后,重新启动它将照顾大小合适的那些。
SamB

6
@SamB是正确的。发生此问题的原因是.CAB格式具有2GiB文件大小的硬限制,并且TrustedInstaller将继续按makecab常规发行,每次在您的temp文件夹中创建一个新的〜100MiB文件。解决方案是删除2GB日志文件(可以安全地完成此操作,因为它们仅用于故障排除)。非常感谢SamB的发布,您已经找到了此问题的根本原因。我使用的是Windows 7 SP1 64位。我不敢相信Microsoft尚未解决此问题。
Syclone0044 2015年

如果该服务处于活动状态,则选择“重新启动”具有相同的效果。如果将Logs \ CBS目录设置为压缩状态,效果将不那么理想。
PJTraill '16

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.

以防万一它会帮助某人。


MS论坛上的一个人说这是设计使然
StackzOfZtuff

可能吧。这就是为什么我们需要如上所述停止服务以删除日志文件的原因。
gnaanaa

1
是的,但是由于无法手动停止它,因此必须禁用并重新启动。
StackzOfZtuff

在W7x64上,我无法禁用该服务,但可以杀死TrustedInstaller.exe。这从文件中删除了锁定,我可以将其删除。
user136036

1

在Server 2008 R2上,我C:\windows\temp为空。我尝试删除cbs日志,并且不断返回2.5 GB的cbs日志,因此C:\windows\temp在尝试删除日志后进行了检查,并且在.dmp那里出现了大量文件。

删除了这些,日志文件现在消失了。磁盘空间已恢复。(即使删除后,我也一直返回。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.