把服务器虚拟内存换到别的盘,操作核心是打开“系统属性→性能选项→虚拟内存”,修改页面文件所在驱动器并设置大小,重启后即可生效。整个过程不需要第三方工具,Windows Server 自带的功能就能搞定,下面按场景拆解,每一步都说得明明白白。
为什么要把虚拟内存从C盘挪走?
C盘作为系统盘,承担着大量的日常读写任务,虚拟内存也就是页面文件,默认存放在C盘,这意味着系统托盘、临时文件、更新补丁和页面文件都在同一块磁盘上抢I/O资源。
服务器C盘空间不足虚拟内存怎么转移是运维人员最常碰到的场景,当C盘分区只剩几个G,而页面文件又占着好几个G时,后台程序会频繁报“虚拟内存不足”,严重时直接导致IIS应用池崩溃或数据库连接中断。
另外一个常见情况是物理内存较小但磁盘性能不均衡,服务器有SATA机械盘和NVMe固态盘两个盘位,把页面文件放机械盘和放固态盘,系统响应速度天差地别,这种情况下,换盘就是提升整体性能的捷径。
还有一个容易被忽略的原因:部分安全基线检查要求系统盘不存放可执行文件或交换文件,为了过审,也需要把虚拟内存迁移到独立数据盘。
换盘前先搞清楚这四件事
动手之前,先确认你的服务器环境。不要直接进界面乱点,先看清下面四个问题。
- 确认当前页面文件所在位置,右键点击“此电脑”→“属性”→“高级系统设置”→“高级”→“性能所属的“设置”→“高级”→“虚拟内存的“更改”,在打开的窗口里,勾选“自动管理所有驱动器的分页文件大小”时,下方会显示当前分配在哪个盘。
- 目标盘剩余空间是否充足,页面文件的大小建议不低于物理内存的1倍,比如物理内存32G,目标盘至少预留40G空闲空间,避免后续扩容无路。
- 目标盘的文件系统格式,必须为NTFS,FAT32格式最大单个文件只有4G,无法承载大页面文件,右键目标盘属性,查看“文件系统”一栏。
- 有无其他程序占用页面文件,部分数据库软件或安全程序会锁定pagefile.sys,迁移前最好停止相关服务,或直接离线操作。
服务器虚拟内存怎么换到别的盘?两种实操方法
图形界面操作步骤(适用Windows Server 2016/2019/2026)
这是最稳妥、最直观的方法,适合大多数不会接触命令行的管理员。
第一步:打开虚拟内存设置面板
按Win + R键,输入sysdm.cpl,回车,在“系统属性”窗口,切换到“高级”选项卡,点击“性能”区域右下角的“设置”,接着在“性能选项”窗口,点击“高级”选项卡,点击“虚拟内存”区域的“更改”。
第二步:取消自动管理
取消勾选顶部的“自动管理所有驱动器的分页文件大小”,如果不取消,下面的自定义选项是灰色的,无法操作。
第三步:设置C盘为“无分页文件”
在驱动器列表中选择C盘,勾选“无分页文件”,点击右侧“设置”按钮,系统会弹窗提示“如果C盘没有分页文件,系统崩溃时可能无法写入调试信息”,点击“是”确认。
第四步:选中目标盘,自定义大小
在驱动器列表中选择目标盘(例如D盘或E盘),勾选“自定义大小”,初始大小和最大值怎么填?这里有个通用公式:
- 如果物理内存≤8G,则初始大小设为物理内存的1.5倍,最大值设为物理内存的2倍。
- 如果物理内存大于8G小于32G,则初始大小设为物理内存的1倍,最大值设为1.5倍。
- 如果物理内存≥32G,且主要运行数据库或虚拟化平台,直接设为“系统管理的大小”即可,让系统自动调控。
填好后点击“设置”,然后点击“确定”。
第五步:重启服务器
系统会提示“为使更改生效,需要重新启动计算机”,保存所有工作,重启服务器,重启后进入系统,再次打开虚拟内存设置面板,确认目标盘下显示了页面文件,C盘显示“无”。
命令行迁移方式(适合多台服务器批量操作)
如果你手头有几十台服务器要统一配置,用命令行比图形界面高效得多。服务器虚拟内存设置多少合适这个问题在批量部署时更突出,用命令可以统一设定数值。
第一步:关闭C盘页面文件
用管理员身份打开命令提示符(CMD),执行以下命令:
wmic pagefileset where name="C:\\pagefile.sys" delete
这条命令会删除C盘的页面文件关联,如果系统提示“没有可用实例”,说明你用的是UEFI引导且隐藏了系统保留分区,改用下面PowerShell命令:
Remove-Item -Path C:\pagefile.sys -Force
第二步:在目标盘创建新的页面文件
wmic pagefileset create name="D:\\pagefile.sys"
第三步:设置大小
wmic pagefileset where name="D:\\pagefile.sys" set InitialSize=8192,MaximumSize=16384
这里的8192和16384单位是MB,分别对应8G初始大小和16G最大值,按实际物理内存调整。
第四步:重启
shutdown /r /t 0
PowerShell方式更简洁,打开管理员PowerShell,直接执行:
$cs = Get-WmiObject Win32_ComputerSystem
$cs.AutomaticManagedPagefile = $false
$cs.Put()
Set-WmiInstance -Class Win32_PageFileSetting -Arguments @{name="D:\pagefile.sys"; InitialSize=8192; MaximumSize=16384}
同样重启生效。
换盘后的验证与常见故障处理
重启完成后,不要急着部署业务,先花一分钟确认迁移成功。
- 打开文件资源管理器,在目标盘根目录查看是否存在pagefile.sys文件,默认情况下隐藏系统文件是看不到的,需要点击“查看”→“选项”→“查看”,取消勾选“隐藏受保护的操作系统文件”。
- 再次进入虚拟内存设置面板,确认C盘显示“无”,目标盘显示“系统管理的大小”或自定义大小。
- 打开任务管理器→“性能”→“内存”,查看右下角“分页缓冲池”数据是否正常变化。
有几种情况需要特别留意:
页面文件出现在多个盘上,比如C盘显示“无”,但D盘和E盘都有页面文件,这通常是没有取消全部盘的“无分页文件”设置,打开设置面板,将所有非目标盘统一设为“无分页文件”。
提示“虚拟内存最小值太低”,排查目标盘剩余空间是否被临时文件占满,服务器在长时间运行后,Windows更新缓存和程序崩溃转储文件可能吃掉大量空间,清理磁盘后重新设置页面文件大小。
目标盘是机械硬盘,页面文件读取慢导致数据库超时,这种情况建议检查是否有NVMe或SATA SSD空闲盘位,或者考虑调整最大值上限来减少换页频率,对于性能敏感型应用,行业共识认为页面文件放在独立SSD上的效果优于与系统文件同盘。
何时建议保留C盘页面文件?
并不是所有情况都建议把虚拟内存搬到其他盘。
如果C盘本身是NVMe固态盘,而其他盘是机械盘或者SATA SSD,那迁移反而降低性能,这种情况下应保留C盘页面文件,或者使用系统自动管理。
还有一种特殊场景:服务器启用了内核转储(memory dump),当系统蓝屏时,Windows需要往启动盘写入内核内存转储文件,如果C盘没有页面文件,转储可能会失败。服务器虚拟内存怎么换到别的盘同时还得兼顾崩溃调试时,需要在C盘保留一个固定大小的小页面文件,比如512MB初始大小,1GB最大值,或者单独调整转储设置,让转储文件写向目标盘。
从实际故障案例看,多数情况下管理员遇到的“C盘空间飘红且无法清理”问题,大约三分之一与页面文件占用有关,把页面文件迁出后,这些服务器都正常稳定运行。
Q&A:围绕虚拟内存换盘的常见疑问
服务器虚拟内存换到别的盘后,系统性能会明显提升吗?
分情况,如果原先C盘是机械硬盘,目标盘是NVMe固态盘,性能提升相当明显,主要体现为程序多开时不卡顿,系统响应更跟手,如果两个盘都是同类型硬盘,提升幅度有限,主要收益就是C盘空间释放。
如何确认哪个进程在占用pagefile.sys导致无法删除?
系统运行时pagefile.sys被占用是正常现象,要从C盘删除它,最简单的方法是按本文第一步到第三步操作,设置C盘为“无分页文件”并重启,重启过程中系统不会加载C盘页面文件,此时Delete操作就能成功。
虚拟内存设置多大合适?单位是MB吗?
页面文件单位是MB,初始大小建议不低于物理内存的1倍,最大值不高于物理内存的2倍,物理内存为16G的服务器,初始设为16384MB,最大设为24576MB是常见配置,具体数值要结合服务器实际负载,如果是内存密集型的SQL Server或Exchange,页面文件最大值可以尝试设为物理内存的1.5倍,观察事件查看器有无“资源不足”警告。
迁移虚拟内存这个动作看似简单,但一定要结合服务器角色和磁盘类型综合判断,换盘前做好数据备份,换盘后留出观察期,只要目标盘符合性能要求且空间充足,这个操作就能让系统运行更从容。