适用场景
在 Windows 11 的 Hyper-V 实验环境中,有时启动虚拟机后会出现自动检查点。对于已经采用其他恢复方案、希望明确控制实验恢复节点的用户,可以关闭指定虚拟机的自动检查点功能。
本文以安装了 Hyper-V 管理工具的 Windows 11 主机为主要范围,整理日期为 2026-10-20。其他主机应先检查参数和虚拟机属性是否存在,不要假定所有版本的默认行为相同。目标是调整未来的自动创建行为,不是立即回收已有检查点占用的空间。
原理:三个概念需要分开
检查点保存虚拟机某个时刻的状态及相关磁盘关系,便于返回此前状态。自动检查点(Automatic Checkpoints)决定是否由相应自动机制创建检查点;检查点类型则决定采用标准或生产检查点。这两个设置作用不同。
微软的 Set-VM 参数文档提供了控制自动检查点的布尔参数。关闭这个参数,不等于关闭所有检查点能力,也不会删除现有检查点。备份软件可能创建自己的恢复检查点,不能据此判断设置失效。
检查点也不等同于独立备份。虚拟机可能正在向差异磁盘写入数据,相关文件之间存在依赖关系,因此看到扩展名为 AVHDX 的文件时,不能直接在文件管理器中删除。
准备工作
使用具备 Hyper-V 管理权限的身份打开 PowerShell。先确认当前操作的是正确主机,并选择一台非关键实验虚拟机。修改前检查备份任务和维护计划,避免在备份正在创建或合并检查点时同时操作。
本教程使用交互输入获取真实虚拟机名称,不提供示例身份信息。下列命令应在同一个 PowerShell 窗口中顺序执行,变量会在该窗口中保留。首次查询只用于查看,不改变虚拟机状态。
分步骤操作
第一步:确认工具和目标
Get-Command Set-VM -Syntax
Get-VM | Select-Object Name, State, AutomaticCheckpointsEnabled
$vmName = Read-Host '输入需要调整的完整虚拟机名称'
$vm = Get-VM -Name $vmName -ErrorAction Stop
$vm | Format-List Name, Id, State, AutomaticCheckpointsEnabled, CheckpointType
vmName 表示实际选择的虚拟机名称。核对名称与唯一标识,确保只匹配一台。若输入中包含通配字符并匹配到多台,应停止操作并重新选择,不能直接继续修改。
如果语法中不存在自动检查点参数,或相关属性不可用,应根据主机版本查阅对应文档,不要复制修改注册表等未经核实的处理方式。
第二步:保存原值与检查点清单
$oldAutomatic = $vm.AutomaticCheckpointsEnabled
$before = @(Get-VMSnapshot -VM $vm)
$before | Select-Object Name, Id, CreationTime, SnapshotType
$oldAutomatic
把原始布尔值和查询结果保存在自己的维护记录中。变量只保存在当前会话,关闭窗口后不能依赖它完成回退。检查点查询命令的含义见微软 Get-VMSnapshot 文档。
第三步:仅关闭该虚拟机的自动创建
Set-VM -VM $vm -AutomaticCheckpointsEnabled $false -ErrorAction Stop
Get-VM -Id $vm.Id | Format-List Name, AutomaticCheckpointsEnabled, CheckpointType
结果中的自动检查点属性应为 False。核对检查点类型仍符合原来的恢复策略。不要为关闭自动创建而把检查点类型顺手改成禁用,否则影响范围会扩大。
也可以在 Hyper-V 管理器(Hyper-V Manager)中打开设置(Settings),进入检查点(Checkpoints)页核对自动检查点选项。界面若提供单独的自动创建开关,应操作该开关;启用检查点(Enable Checkpoints)控制的是更广的能力。
第四步:在允许停机时验证启动行为
如果虚拟机已经关闭,可以启动后观察。如果正在运行,先安排维护窗口,从来宾系统正常关机,确认管理器显示已关闭(Off),再启动。不要使用强制关闭电源来缩短验证时间。
启动完成后查询:
$after = @(Get-VMSnapshot -VM (Get-VM -Id $vm.Id))
$after | Select-Object Name, Id, CreationTime, SnapshotType
Compare-Object -ReferenceObject @($before | ForEach-Object { $_.Id.ToString() }) -DifferenceObject @($after | ForEach-Object { $_.Id.ToString() })
比较的是检查点标识。没有差异输出表示清单未变化;有差异时结合创建时间、类型和备份计划分析原因。只有在不存在其他创建来源的受控测试中,才能用这次启动判断自动创建行为。
验证方法与常见错误
首先确认设置查询为 False,再检查维护窗口内的一次启动是否产生新的自动检查点。若尚未安排重启,只能记录“配置已修改,启动行为待验证”,不能把两个阶段混为一谈。
已有检查点继续显示是正常现象;磁盘空间没有立即减少也不说明关闭失败。另一个常见错误是把备份恢复检查点当成自动检查点,然后停止备份服务或删除文件。遇到无法解释的新增项目,应核对备份任务和主机事件。
安全与回退
需要恢复原设置时,在同一会话中执行:
Set-VM -VM (Get-VM -Id $vm.Id) -AutomaticCheckpointsEnabled $oldAutomatic -ErrorAction Stop
Get-VM -Id $vm.Id | Select-Object Name, AutomaticCheckpointsEnabled
如果会话已经关闭,根据维护记录重新获取目标,并恢复记录中的原始布尔值。
已有检查点的清理应作为单独任务处理,先确认备份和存储空间,再通过 Hyper-V 支持的检查点管理流程操作。微软的检查点与差异磁盘排障指南列出了空间不足、文件锁定和磁盘链损坏等问题。若出现这些情况,应先保留现场,避免手动删除、改名或随意合并磁盘文件。
参考资料与转载说明
本文依据上述公开资料进行中文原创整理,不是逐句翻译,也不替代厂商手册。操作前请核对自己的版本、型号和备份。
评论一下?