我正在尝试缩小我的分区。为了达到我需要的数量,我正在使用 JKdefrag。我已经看到一些文件被标记为红色 - 不可移动,例如hibernation.sys和pagefile.sys。
最后,它们只是文件,而我是管理员。我唯一能做的就是通过禁用来删除它们。
为什么它们不能移动?
注意:我不是在问如何禁用hibernation.sys、pagefile.sys等文件。我正在寻找它们不可移动的原因。可能被骗的问题中的答案不包含原因。
我正在尝试缩小我的分区。为了达到我需要的数量,我正在使用 JKdefrag。我已经看到一些文件被标记为红色 - 不可移动,例如hibernation.sys和pagefile.sys。
最后,它们只是文件,而我是管理员。我唯一能做的就是通过禁用来删除它们。
为什么它们不能移动?
注意:我不是在问如何禁用hibernation.sys、pagefile.sys等文件。我正在寻找它们不可移动的原因。可能被骗的问题中的答案不包含原因。
某些系统文件在系统启动后无法移动,例如页面文件和注册表数据库文件。它们由 Windows 本身独占锁定,因此在 Windows 运行时无法移动或直接更新。
例如,当 Windows 运行时,页面文件由其在磁盘上的直接簇号引用。由于交换是影响系统性能的关键操作,Windows 在想要执行或撤消交换时没有时间搜索磁盘和文件夹元数据。
使这些文件不可移动的另一个原因是它们对 Windows 的操作至关重要,因此 Windows 会最大限度地保护它们,并且不允许任何不通过其专用实用程序或 API 的访问。
任何能够移动这些文件的产品都需要重新启动才能在 Windows 启动之前访问磁盘。
Raymond Chen的一个很酷的故事:
Windows 机密 - 文件系统悖论
简而言之:
hibernate 和 page 文件是低级系统文件。两者都用于在非易失性存储(磁盘或 ssd)上临时存储系统内存 (RAM)。
休眠(也称为磁盘挂起)是在关闭计算机的同时保留其状态(因此,例如,正在处理的文字处理器文件不必先保存)。当系统再次上电时,RAM 图像数据从“休眠图像”恢复,系统继续运行,就好像它根本没有断电一样。
分页是虚拟内存系统的一个核心特征,其中每个程序都被赋予一种错觉,即其特定于进程的内存空间是计算机上的所有地址空间。这种错觉是通过将最近不使用的小块(通常为 4,096 字节,但有时更大——32 KiB、1 MiB、16 MiB、1 TiB)的内存移动到磁盘直到需要时提供的。当程序访问已被调出的内存时,操作系统内核会处理称为“页面错误”的低级 CPU 操作,以将页面带回内存,然后在错误指令处无缝恢复程序,因此它可以像页面一直在内存中一样执行。
分页和休眠都是在操作系统的最低级别实现的。结果,磁盘碎片整理程序在这些文件可能正在使用时干净地移动这些文件的磁盘块是不方便和混乱的。为了大大简化可能这样做的程序,更容易识别这些文件并禁止此类操作。
另外,我认为值得在这里补充的是,您的原始问题有一个解决方案(允许您缩小分区)。
使用系统设置,您可以将您的页面文件设置为不同的驱动器并禁用休眠,因此弹出一个笔式驱动器以放置您的页面文件,您将重新启动,远离那些根本不存在的不可移动文件。