Windows C盘空间清理建议
1. 分析
1.1 C盘空间占用分析
使用FolderSize查看C盘空间占用,如下所示。
占用空间最大的目录为Windows,占用空间最大的文件为pagefile.sys(约16G)与hiberfil.sys(约12G)。
在Windows目录中,占用空间最大的目录为winsxs与Installer。
1.2 占用空间大的文件与目录分析
1.2.1 pagefile.sys文件
pagefile.sys文件是Windows系统虚拟内存使用的文件。
默认情况下,页面文件由操作系统管理,在Windows 7操作系统中,页面文件的最小大小与总物理内存大小相同。
Windows 7操作系统默认的虚拟内存设置如下图所示。
本机操作系统为Windows 7,总物理内存约16G,因此pagefile.sys文件大小约16G。
1.2.2 hiberfil.sys文件
hiberfil.sys为Windows休眠使用的文件。
在Windows 7操作系统中,hiberfil.sys文件的默认大小为总物理内存大小的75%。
本机操作系统为Windows 7,总物理内存约16G,因此hiberfil.sys文件大小约12G。
1.2.3 C:\Windows\winsxs目录
winsxs目录用于支持Windows自定义和更新所需的功能。
Windows借助称为硬链接的技术从Windows组件库(winsxs目录)之外的目录使用了许多文件。在此情况下,来自某个组件版本的文件将同时显示在winsxs目录和其他目录中。通过使用硬链接,Windows可以将同一版本文件的多个副本存储在操作系统上的多个位置中,但通常只有一个文件副本是需要占用实际空间的,其余的副本仅通过硬链接从winsxs目录“投影”。
硬链接是文件系统对象,允许两个文件引用磁盘上的同一位置,实际上无需占用多个副本所需的额外空间。某些工具(例如资源管理器)可确定目录大小,但不考虑包含的文件可能是硬链接的。这可能导致用户认为winsxs文件夹占用的磁盘空间比实际占用的要多。
在Windows 8及更高版本的操作系统可以通过dism命令分析winsxs目录的真实大小。
1.2.4 C:\Windows\Installer目录
Installer目录中包含Windows Installer安装应用程序的配置信息。
Installer目录的内容不建议自行进行删除,若删除可能导致很多程序无法运行。
Windows曾经提供过Microsoft Installer Cleanup Utility用于清理,后来已不再提供,因为可能对系统文件造成损害。
2. 清理方法
2.1.1 pagefile.sys文件
减小或关闭Windows虚拟内存可以减少或清除pagefile.sys文件,操作如下。
打开计算机属性,点击“高级系统设置”;或执行命令“systempropertiesadvanced”;
打开系统属性界面,切换到“高级”标签页,点击“性能”区域的“设置”按钮;
打开性能选项界面,切换到“高级”标签页,点击“更改”按钮。
打开虚拟内存设置界面,取消钩选“自动管理所有驱动器的分页文件大小”,选择“自定义大小”,根据实际需要选择页面文件的初始大小与最大大小,例如2048至4096(MB),点击“设置”按钮,再点击“确定”按钮。不建议关闭虚拟内存。
以上修改需要重启操作系统后生效。
2.1.2 hiberfil.sys文件
关闭Windows系统的休眠功能,可以删除hiberfil.sys文件(若笔记本需要使用休眠功能,则不建议关闭)。
使用管理员权限执行“powercfg /hibernate off”或“powercfg -h off”命令,关闭Windows休眠功能。执行后立即生效,不需要重启操作系统。
若需要开启Windows休眠功能,执行“powercfg /hibernate on”或“powercfg -h on”命令。
如果不关闭Windows休眠功能,但需要降低hiberfil.sys文件大小占总物理内存的比例,可执行“powercfg -h -size [比例]”命令,例如“powercfg -h -size 70”。若将该比例调得过低会导致Windows无法进入休眠。
2.1.3 C:\Windows\winsxs目录
2.1.3.1 安装KB2852386补丁
Windows 7 SP1操作系统安装KB2852386补丁后,可以通过Windows磁盘清理工具的“Windows 更新清理”选项来删除不再需要的Windows 更新。
64位操作系统的补丁安装包为“Windows6.1-KB2852386-x64.msu”,32位操作的补丁安装包为“Windows6.1-KB2852386-x86.msu”。
以上补丁可从附件中获取,或从微软官方网站下载。
可使用“systeminfo|findstr KB2852386”命令确认补丁是否已安装,若命令执行后有显示“KB2852386”则说明补丁已安装。
经测试,该补丁安装后不需要重启操作系统即可生效。若安装后未生效,请重启操作系统后再试。
2.1.3.2 运行磁盘清理
使用管理员权限执行“cleanmgr”命令,打开磁盘清理工具,选择系统盘C盘,点击“确定”按钮。
或打开C盘的属性界面,点击“常规”标签页的“磁盘清理”按钮,打开磁盘清理工具。
打开磁盘清理工具后,等待扫描结束,查看可以清理的内容,可以看到“Windows 更新清理”选项,钩选该选项,点击“确定”按钮,等待清理工作完成。
仅当磁盘清理工具成功检测到存在不需要的Windows更新时,“Windows 更新清理”选项才可用。
为了能够回滚至先前的更新,所有的更新内容会存储在winsxs目录中,即使某些更新已由后续更新所取代。因此,运行磁盘清理工具后,可能无法将系统回滚至被取代的更新。如果要将系统回滚至被磁盘清理工具删除的旧版更新,可以手动安装对应的更新。
2.1.4 其他文件
使用磁盘清理工具清理,钩选需要清理的其他文件,说明略。
2.1.5 使用第三方工具清理
稳定性未知,略。
3. 清理对比
3.1 pagefile.sys文件
3.1.1 清理前
3.1.2 清理后
3.2 hiberfil.sys文件
3.2.1 清理前
3.2.2 清理后
同pagefile.sys文件清理后截图。
3.3 C:\Windows\winsxs目录
略。
4. 其他说明
4.1 C:\Windows\winsxs目录
4.1.1 安装KB2852386补丁前后对比
Windows 7 SP1系统,安装KB2852386补丁前使用磁盘清理显示的可清除内容如下:
Windows 7 SP1系统,安装KB2852386补丁后使用磁盘清理显示的可清除内容如下:
4.1.2 磁盘清理工具查找Windows更新失败的情况说明
使用磁盘清理工具对C盘进行清理时,若查找Windows更新失败,则不会在可清除内容中显示“Windows 更新清理”。
使用磁盘清理工具对C盘进行清理,查找Windows更新产生的日志文件为“C:\Windows\Logs\CBS\DeepClean.log”。
当磁盘清理工具查找Windows更新成功时,DeepClean.log日志示例如下。
... 2017-11-27 22:17:03, Info CBS Skipping: Microsoft-Windows-CodecPack-Basic-Package~31bf3856ad364e35~amd64~~6.1.7601.17514 due to applicability ... 2017-11-27 22:17:03, Info CBS Adding: Microsoft-Windows-IE-Troubleshooters-Package~31bf3856ad364e35~amd64~~6.1.7601.17514 ... 2017-11-27 22:17:51, Info CBS DC: tree root as a root relative path: \Windows\winsxs\amd64_microsoft-windows-inetres-adm_31bf3856ad364e35_8.0.7601.18969_none_673e89a5259916a2 2017-11-27 22:17:51, Info CBS DC: Package_for_KB3087038~31bf3856ad364e35~amd64~~6.1.1.3: unique components: 228 Size: 160.80 MB (168,611,925 bytes) 2017-11-27 22:17:51, Info CBS Total size of superseded packages: 517.92 MB (543,078,664 bytes) |
当磁盘清理工具查找Windows更新失败时,DeepClean.log日志示例如下。
... 2017-11-27 21:04:12, Info CBS Failed opening package [HRESULT = 0x800b0100 - TRUST_E_NOSIGNATURE] 2017-11-27 21:04:12, Info CBS Failed opening package [HRESULT = 0x800b0100 - TRUST_E_NOSIGNATURE] 2017-11-27 21:04:12, Info CBS Failed getting superseded packages [HRESULT = 0x800b0100 - TRUST_E_NOSIGNATURE] 2017-11-27 21:04:12, Info CBS Failed getting list of superseded packages [HRESULT = 0x800b0100 - TRUST_E_NOSIGNATURE] 2017-11-27 21:04:12, Info CBS GetDeepCleanableSize failed. [HRESULT = 0x800b0100 - TRUST_E_NOSIGNATURE] |
如何解决以上失败情况未分析。
4.2 减少C盘空间占用的其他方法
尽量避免将软件安装在C盘;
将桌面目录移至其他磁盘;
使用mklink命令,将其他磁盘的文件或目录软链接至C盘(不同软件能否正常使用未知);
...