快照默认存于虚拟机所在目录的snapshots子文件夹,易致c盘爆满;新建虚拟机时应勾选“自定义设置”指定路径,已有虚拟机需用powershell临时指定;删快照不立即释放空间,须待关机后自动合并或关机时立即合并,合并失败多因目标磁盘空间不足。
hyper-v 虚拟机快照(检查点)本身很实用,但管理不当容易让磁盘空间快速告急。关键不是“能不能用”,而是“怎么存、怎么删、怎么省”。下面从四个实际场景出发,讲清楚操作逻辑和容易踩的坑。
快照默认存哪?先改路径再创建
默认快照文件(.avhd 或 .avhdx)会落在虚拟机所在目录的 Snapshots 子文件夹里,如果虚拟机放在 C:\,快照就一起挤在系统盘——这是多数人磁盘爆满的起点。
- 新建虚拟机时,在“连接虚拟硬盘”步骤后,点击“下一步”前勾选“自定义设置”,手动指定快照存储路径(比如 D:\HV-Snapshots)
- 已有虚拟机无法直接改快照路径,但可在创建新检查点前,通过 PowerShell 临时指定位置:
Checkpoint-VM -Name "VMName" -SnapshotName "Test" -Path "D:\HV-Snapshots" - 长期建议统一规划:把虚拟机配置、VHDX、快照三者分开放在不同卷,避免互相抢占空间
删快照 ≠ 立刻释放空间
删除检查点只是移除记录,真正释放磁盘要靠“合并”。而合并能否成功,取决于宿主机是否还有足够空闲空间来完成中间过程。
- 虚拟机运行中删快照:AVHD 文件继续被写入,关机后才触发自动合并
- 虚拟机关机状态下删快照:合并立即开始,进度可见于 Hyper-V 管理器任务栏
- 若删完仍没释放空间,大概率是合并失败了——常见原因是目标磁盘剩余空间
- 此时不要反复删,先腾出至少 20% 剩余空间,再重试关机删除
空间严重不足时,用导出+导入绕过合并卡死
当磁盘已满到连关机合并都失败(比如只剩几百 MB),传统方式走不通,就得换思路:把整个虚拟机“搬出去”再“搬回来”,过程中自动清理快照链。
- 关闭虚拟机,右键 → “导出”,目标选另一块有充足空间的磁盘(如 F:\Export)
- 导出完成后,原虚拟机可删除(或保留备份),然后右键 Hyper-V 主机 → “导入虚拟机”
- 导入时务必选择“复制虚拟机(创建新的唯一 ID)”,路径指向导出生成的子文件夹(如 F:\Export\MyVM),不是导出根目录
- 导入完毕后,新虚拟机会自动执行快照合并,且不再依赖原磁盘空间
配合 Optimize-VHD 清理虚拟磁盘本体
快照只是问题的一部分;虚拟机内部删了文件,VHDX 文件体积也不会自动缩小。这时要用微软官方工具 Optimize-VHD 回收空间。
- 先在虚拟机内清空回收站,并运行磁盘清理(尤其“系统文件”里的休眠/页面文件)
- 推荐在关机状态下操作:PowerShell 管理员模式执行
Optimize-VHD -Path "D:\VMs\Win11.vhdx" -Mode Full - 若想更快,可先挂载 VHDX 为只读,再用 -Mode Quick 或 -Mode Retrim(需虚拟机支持 TRIM)
- 注意:该命令不修改虚拟机数据,只优化文件物理布局,安全可靠











