我的 1TB SSD 用了两年多,C 盘只剩 13GB。Java 开发环境里的 Maven 本地仓库、Gradle 缓存、Node.js 的 node_modules、Docker 镜像、Windows 更新缓存,这些吃空间的东西不会因为你只分了一个 C 盘就手下留情。
磁盘结构是这样的:C 盘 198GB 夹在 EFI 分区和恢复分区之间,D 盘 732GB 躺在恢复分区右边,大半空间空闲。Windows 自带的磁盘管理对这种布局无能为力——压缩 D 盘产生的未分配空间在磁盘最右端,跟 C 盘隔着整个 D 盘和一个恢复分区,根本无法扩展。
本文记录使用 DiskGenius 从 D 盘前部切出 200GB、移过恢复分区、合并到 C 盘的完整过程。
风险提醒: 分区调整涉及底层磁盘结构变更。DiskGenius 的无损调整功能在正常情况下不会丢失数据,但官方文档明确警告:磁盘坏道、突然断电、系统异常都可能导致操作失败。操作前务必备份 C 盘和 D 盘的重要数据。
为什么 Windows 磁盘管理搞不定
打开磁盘管理(Win+X → 磁盘管理),对 D 盘执行”压缩卷”,得到的结果是:
1 | [C 盘 198GB] [恢复分区 918MB] [D 盘 532GB] [未分配 200GB] |
C 盘的”扩展卷”按钮仍然是灰色的。原因在于 Windows 磁盘管理的扩展规则非常死板:C 盘只能向右侧紧邻的未分配空间扩展,中间不能隔着任何其他分区。上面的布局里,C 盘右边是恢复分区,未分配空间在磁盘最末端,两者都阻断了扩展路径。
要让 C 盘扩容成功,最终需要达成这个布局:
1 | [C 盘 198GB] [未分配 200GB] [恢复分区 918MB] [D 盘 532GB] |
200GB 未分配空间必须紧贴在 C 盘右侧。这意味着需要把恢复分区”挪走”,而这已经超出了 Windows 自带工具的能力范围。
操作前的准备
在打开 DiskGenius 之前,有几件事需要确认。
备份数据。 虽然 DiskGenius 的分区调整在正常情况下是无损的,但这个过程涉及大量数据块的物理搬移,持续时间可能长达 5 到 30 分钟。期间任何意外中断都有风险。把重要文件复制到移动硬盘或云盘,这个时间不能省。
检查 BitLocker 状态。 如果 C 盘或恢复分区上有锁头图标,说明启用了 BitLocker 加密。在调整分区之前,必须先到”控制面板 → BitLocker 驱动器加密”中暂停或关闭加密。否则移动分区后系统可能要求输入 48 位的恢复密钥,而这个密钥大概率你没存过。
确保供电稳定。 笔记本必须接通电源。操作过程中不能休眠、不能关机,DiskGenius 在移动系统相关分区时会要求重启进入预安装环境执行,整个过程是自动的,但中途断电会出问题。
下载 DiskGenius。 去官网下载最新版本,注意选择与系统对应的 64 位版本。安装后以管理员身份运行。
第一步:从 D 盘前部释放 200GB
这是整个操作的基础。右键点击 D 盘,选择”调整分区大小”。
弹出的窗口里有三个关键数值:调整后容量、分区前部的空间、分区后部的空间。这里最容易犯的错误是把 200GB 放到了 D 盘后面。如果从后部释放,结果是:
1 | [C 盘] [恢复分区] [D 盘 532GB] [未分配 200GB] |
未分配空间在磁盘最右端,离 C 盘十万八千里,对扩容毫无帮助。
正确做法是从 D 盘的前部释放。把调整后容量设置为约 532GB(原 732GB 减去 200GB),在”分区前部的空间”输入 200,单位选 GB;”分区后部的空间”填 0。这样 D 盘缩小后,200GB 未分配空间会出现在 D 盘左侧、恢复分区右侧:
1 | [C 盘 198GB] [恢复分区 918MB] [未分配 200GB] [D 盘 532GB] |
点击确定,回到主界面确认布局正确后,点击左上角的”保存更改”让操作生效。
第二步:移动恢复分区
现在 200GB 未分配空间已经就位,但它还被恢复分区挡着,无法到达 C 盘旁边。需要把恢复分区整体向右移动,让未分配空间”穿过”恢复分区来到 C 盘右侧。
右键点击恢复分区(918MB 的 MS Recovery),选择”调整分区大小”。在弹出的窗口中,把”分区前部的空间”设置为 200GB,”分区后部的空间”保持 0。这个操作的本质是:告诉 DiskGenius 在恢复分区前面预留 200GB 的空间,恢复分区本身会被推到右边去。
有一个技巧可以验证设置是否正确:看窗口顶部的”起始扇区号”。如果这个数值比原来明显增大(比如从 4 亿变成 8 亿),说明恢复分区确实被整体右移了。
这里还有一个省事的做法:DiskGenius 的调整分区窗口里通常有一个”合并到”选项,可以直接选择合并到 C 盘。勾选后,移动恢复分区和扩容 C 盘会一步完成,不需要再单独做第三步。如果没有这个选项或者你想分步操作以确保可控,就按上面的方式只移动恢复分区,然后手动执行第三步。
确认设置后,点击”开始”执行。由于涉及系统分区附近的操作,DiskGenius 会提示需要重启。在弹出的选项中勾选”重启”和”执行时阻止系统睡眠”,然后确认。
第三步:扩容 C 盘
如果你在上一步没有勾选”合并到 C 盘”,重启完成、进入 Windows 后,磁盘布局应该是:
1 | [C 盘 198GB] [未分配 200GB] [恢复分区 918MB] [D 盘 532GB] |
200GB 未分配空间已经紧贴在 C 盘右侧,扩容条件满足了。右键点击 C 盘,选择”调整分区大小”,把 C 盘右侧的滑块拖到最右端,吃掉全部 200GB 未分配空间。确认后保存更改,这次通常不需要重启,C 盘直接就能完成扩展。
最终结果
操作完成后,磁盘布局变成:
1 | ┌──────┬──────┬────────────────┬────────┬──────────────┐ |
C 盘从 198GB 扩展到约 398GB,D 盘从 732GB 缩减到约 532GB。实际显示的容量可能因为 GB/GiB 换算有少量差异,不必纠结精确数值。
整个过程的核心可以用一张流转图概括:
1 | 初始状态 |
常见问题
移动恢复分区会影响系统恢复功能吗? 不会。Windows 恢复分区(WinRE)的引导是通过分区的 GUID 关联的,不是通过固定位置。DiskGenius 移动分区时会更新分区表中的相关记录,系统重启后依然能正常识别恢复环境。
操作过程中断电或蓝屏了怎么办? 如果只是在执行阶段报错退出,通常不会损坏数据,重启后重新尝试即可。如果蓝屏后无法进入系统,用 PE 启动盘引导,打开 DiskGenius 检查分区表是否有错误(右键磁盘 → 检查分区表错误),必要时重建引导记录。
分区布局跟本文不一样怎么办? 比如 C 盘和未分配空间之间隔着的是 ESP 分区或 MSR 保留分区,处理思路完全相同:找出挡在中间的分区,用”调整分区大小”把它整体向远离 C 盘的方向移动,让未分配空间贴到 C 盘旁边。
一定要从 D 盘前部释放空间吗? 必须。从 D 盘后部释放的空间在磁盘最末端,与 C 盘之间隔着整个 D 盘和恢复分区,根本无法用于 C 盘扩容。这是最常见的操作失误。
扩容之后:治标还是治本
C 盘从 198GB 扩到 398GB,短期绰绰有余。但如果是开发环境导致的空间持续增长,这个问题迟早会再次出现。Maven 仓库、Gradle 缓存、npm 全局包、Docker 镜像、WSL 虚拟磁盘,这些东西的膨胀速度往往超出预期。
在扩容之前或之后,值得花半小时做一次清理。把 Maven 本地仓库迁移到 D 盘并设置软链接,Gradle 的 GRADLE_USER_HOME 改到 D 盘,npm 全局安装路径改到 D 盘,Docker 的虚拟磁盘文件迁移到 D 盘。这些配置改一次,以后就不用再为 C 盘空间发愁了。
单纯扩容是治标,把持续增长的开发缓存放到非系统盘才是治本。