从 Linux 移动 swapfile.sys

从 Linux 移动 swapfile.sys

我安装了两个操作系统(Windows 8 和 Mint),我正在尝试缩小原始 Windows 分区,但 swapfile.sys 永久文件挡住了路。所以我想知道,是否可以登录 Linux 端,然后在 swapfile.sys 未打开时访问它并移动它?

答案1

您可以swapfile.sys通过禁用页面文件然后在C:\swapfile.sys(假设 C: 是您的系统驱动器) 创建符号链接来移动。整个过程可以在 Windows 环境中执行。

以下步骤将禁用swapfile.sys(在 Windows 8 和 Windows 8.1 Preview 上测试):

  1. 禁用页面文件全部驱动器(通过控制面板->系统和安全->系统->高级系统设置 ->先进的->性能选项->先进的->虚拟内存)。
  2. 重启你的电脑。
  3. swapfile.sys现在应该已经消失了。如果仍然存在,可能需要手动删除。

然后在命令行中输入以下命令(需要管理权限):

mklink C:\swapfile.sys "<NEW LOCATION>:\swapfile.sys"

如果新位置路径不包含空格,则可以省略引号。请注意,在 Windows PowerShell(在 Windows 8.1 中推广)中mklink无法访问命令。您应该通过键入来调用常规命令行cmd,然后在同一窗口中继续。

之后,您可以启用页面文件,新创建的页面文件swapfile.sys将位于符号链接指向的任何位置。符号链接本身占用的磁盘空间尽可能小。

答案2

这是“Windows Store Apps”的新页面文件。我曾寻找过移动它的方法,但一直没找到。只有完全禁用页面文件才能停止创建。

答案3

还有一个未记录的注册表值,它控制swapfile.sys存储位置:

  • 注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
  • 值名称:SwapFile
  • 类型:REG_MULTI_SZ

其值应为具有以下格式的单个字符串:<path> <min_size> <max_size>。例如,要将交换文件移动到d:\swapfile.sys最小大小为 100 MB、最大大小为 600 MB,可以将条目设置为d:\swapfile.sys 100 600

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v "SwapFile" /t REG_MULTI_SZ /d "d:\swapfile.sys 100 600"

PagingFiles语法与控制文件位置和大小的同一注册表项中的值相同pagefile.sys。理论上,将最小和最大大小都设置为 0 应该可以让 Windowsswapfile.sys自动管理文件的大小,就像文件的情况一样pagefile.sys。但这似乎不起作用,因此您必须在注册表值中手动设置大小。将两个大小都设置为 0 实际上会阻止创建文件。

默认情况下,最小大小设置为 256 MB,最大大小设置为总 RAM 的 150% 或硬盘总空间的 10%(以最小者为准)。对于小型驱动器,最小大小设置为 16 MB,如果磁盘大小小于或等于 16 GB,则最大大小设置为相同值,如果磁盘大小小于或等于 32 GB,则最大大小设置为 256 MB。

与该mklink方法相比,更改注册表中的值应该能够保留 Windows(10)主要更新之间的设置。

相关内容