Windows磁盘存储的一些分析

关于WindowsC盘存储的一点问题

背景

今天从柚子那里看到一个好玩的问题,C盘剩余容量与所有文件的总和不一致,于是我打开了我的电脑

image-20220125034714056

剩余容量188GB,用掉186GB,总共374GB,点进去,ctrl+A全选所有文件,查看属性发现容量差距确实有点大

image-20220125034253545

隐藏文件

首先要考虑到隐藏文件,点击资源管理器选项

image-20220125034407771

点击显示隐藏的文件,取消隐藏受保护的操作系统文件

image-20220125034540635

会看到出现了许多先前未存在的文件,比如休眠文件hiberfil.sys,这时我们重新计算所有文件看到容量已经上升到165GB

image-20220125034824319

System Volume Information

在查看隐藏文件的过程中,我们发现System Volume Information这个文件有点特殊。如果我们直接右键查看属性,会因为权限问题,显示0字节

![4_I8463%DFY7[RWNXG`08.jpg)

点击高级,赋予当前用户修改的权限,在任务管理器里结束资源管理器,然后点击“运行新任务”,输入“explorer”重启资源管理器,就会发现占用的空间大小

image-20220125033204735

重新全选c盘所有文件,查看属性,惊喜的发现容量已经上升到183GB,剩下的3GB,要考虑到下面的诸多因素,在此不能清清楚楚的区分每一GB(好吧..确实能力达不到呜呜呜)

image-20220125035306080

其他可能影响的因素

虚拟内存

虚拟内存并不是真实的内存产品,而是一种技术,通过虚拟技术,将外部存储设备的一部分空间,划分给系统,作为在内存不足时临时用作数据缓存。

虚拟内存别称虚拟存储器(Virtual Memory)。电脑中所运行的程序均需经由内存执行,若执行的程序占用内存很大或很多,则会导致内存消耗殆尽。为解决该问题,Windows中运用了虚拟内存技术,即匀出一部分硬盘空间来充当内存使用。当内存耗尽时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。若计算机运行程序或操作所需的随机存储器(RAM)不足时,则 Windows 会用虚拟存储器进行补偿。它将计算机的RAM和硬盘上的临时空间组合。当RAM运行速率缓慢时,它便将数据从RAM移动到称为“分页文件”的空间中。将数据移入分页文件可释放RAM,以便完成工作。

预留存储

要确保设备能够成功更新并运行最佳,Windows保留一部分存储空间供临时文件、缓存和其他文件使用。 当你的设备空间不足时,Windows 将清除保留的存储空间,以便将其用于其他进程,如 Windows 更新。 保留存储还有助于使设备的磁盘空间使用量更加可预测和稳定。

当应用程序和系统进程创建临时文件时,这些文件将自动放入保留存储中。这些临时文件在创建时不会占用可用用户空间,并且在临时文件数量增加时不太可能这样做,前提是预留空间未满。由于已为此目的预留了磁盘空间,因此您的设备将更可靠地运行。存储感知将自动删除不需要的临时文件,但如果由于某种原因您的保留区域已满,Windows 将继续按预期运行,同时如果临时已满,则会暂时消耗保留之外的一些磁盘空间。

休眠文件

没错就是休眠文件。

补充

如果你是win11系统,可在设置的存储选项查看磁盘空间分配,这里的空间总和加起来正好188GB,在找不到头绪时,我们可以在这里寻找突破口。

image-20220125035845169

其中我们要注意到的是“系统和保留空间”比较难以计算,存在诸多隐藏或受保护,有权限的文件,我们点进去,发现这里占用空间的具体情况,但是可能和先前计算的有些不符,比如System Volume Information存储的时系统还原信息,先前计算的是19.1GB,这里却是18.6GB,原因见下面“大小和占用空间”

image-20220125040029265

大小和占用空间

属性中显示的「大小」和「占用空间」是两个不同的概念。

「大小」是指所选文件或文件夹的实际体积,而「占用空间」是指这些内容在硬盘上占据的存储空间的多少。

这两个值在很多时候都是不等的,「占用空间」会大于「大小」。这主要取决于硬盘存储数据的原理。在硬盘上创建分区并使用某种文件系统格式化之后,格式化工具会在这部分硬盘空间上划分大量容量相同的「块」,也叫做簇。在存储数据时,会将文件按照簇的大小拆分保存在多个簇上。

假设每个簇的大小为 4KB,但有一个 5KB 的文件需要存储,这个文件将占据两个簇,其中一个簇会存满,但另一个簇会有 3KB 空间是闲置的。但问题在于,其他文件不能写入这闲置的 3KB 空间中。那么这个例子里,每存储一个 5KB 的文件,会浪费掉 3KB 的硬盘空间。如果有一万个 5KB 的文件需要存储的话...

而 NTFS 压缩机制的目的就是让簇中闲置的这 3KB 空间可以用来存储其他文件。因此启用这个功能的文件或文件夹,其「大小」和「占用空间」会尽可能相等,可以提高硬盘容量的利用率。

总结

WindowsC盘空间分配是一个非常复杂的内容,涉及诸多权限问题,隐藏问题,还有预留空间,虚拟内存等问题,不必于过分追问这些底层问题,c盘剩余容量的大小跟系统运行速度可以说是几乎无关系,一般人只要会用就好。

还有,系统保护的文件还是默认隐藏比较好,避免误删。

参考

https://www.crucial.cn/articles/about-memory/what-is-virtual-memory

https://support.microsoft.com/zh-cn/Windows/%E9%A2%84%E7%95%99%E5%AD%98%E5%82%A8%E5%9C%A8%E5%AD%98%E5%82%A8%E4%B8%ADWindows-5bc98443-0711-8038-4621-6a18ddc904f2#WindowsVersion=Windows_11

https://answers.microsoft.com/zh-hans/Windows/forum/all/%E4%B8%BA%E4%BD%95%E6%96%87%E4%BB%B6%E5%AE%9E/af25c564-0763-4c69-8dd0-6c07b94d1c9e


Windows磁盘存储的一些分析
https://d4wnnn.github.io/2022/01/26/Others/Windows磁盘存储的一些分析/
作者
D4wn
发布于
2022年1月26日
许可协议