快照,在Hyper-V中称为检查点,当您需要在部署新软件或安装更新之前保留虚拟机的最后一个正常运行状态时,非常方便。但是,在删除快照时必须小心,否则可能会丢失重要数据。
在这篇文章中,我们解释了Hyper-V检查点的机制。我们将介绍何时使用这些检查点,并展示如何通过Hyper-V管理器界面和使用PowerShell删除快照。
Hyper-V检查点机制
在我们详细介绍 Hyper-V检查点 如何工作之前,让我澄清与快照和检查点相关的任何混淆。
快照和检查点表示在特定时间保存VM状态的相同能力。如果VM出现问题,将来可以将此状态恢复到。Microsoft在Windows Server 2012 R2之前的版本中将保存VM状态的功能称为快照。在随后的版本中,Microsoft使用了检查点一词。此外,快照是在VMware环境中使用的术语。在本文中,我们将这两个术语互换使用,因为所涵盖的机制和程序适用于快照和检查点。那么,检查点/快照如何工作呢?
如何保存Hyper-V检查点
Hyper-V虚拟机数据以.vhdx文件的形式保存。创建检查点后,.vhdx文件变为只读文件。对虚拟机的新修改保存在不同的虚拟硬盘中。这个不同的虚拟硬盘以.avhdx文件的形式保存在与包含.vhdx文件相同的文件夹中。
您可以创建一系列检查点。每个检查点代表虚拟机在特定时间点的状态。每个检查点由一个.avhdx文件表示。
Hyper-V检查点的机制有效利用存储空间。然而,虚拟磁盘读取操作的性能会显著降低。原因是读取文件需要检查整个检查点链(.avhdx文件),直到达到虚拟机的.vhdx文件。
在下面的截图中,您可以看到一个父.vhdx虚拟硬盘和创建了两个Hyper-V检查点的虚拟机后两个.avhdx磁盘。
根据这个机制,删除.avhdx文件不会删除检查点。相反,这种删除会打破链条并导致数据丢失。
要删除检查点而不丢失数据,应该将.avhdx文件与链中的另一个(父) .avhdx文件(或.vhdx文件)合并。如果这个检查点是虚拟机的唯一检查点,则.avhdx文件将与.vhdx文件合并,.vhdx文件将再次变为可写。
在接下来的部分中,我们将展示如何在不丢失数据的情况下从 Hyper-V 管理器界面中删除快照(检查点)。
使用 Hyper-V 管理器界面删除快照
Hyper-V 管理器是一个免费的 GUI 工具,用于管理 Hyper-V 主机和虚拟机。它可以用于虚拟机的配置、分配内存、创建快照或删除快照。
要从 Hyper-V 管理器界面中删除 Hyper-V 快照(检查点):
- 从左侧窗格中选择主机。
- 从 虚拟机 窗格中选择虚拟机。
- 右键单击要从 检查点 窗格中删除的检查点。选择 删除检查点…
在下面的截图中,您可以看到在删除第二个 Hyper-V 检查点后的一个父 .vhdx 虚拟磁盘和一个 .avhdx 快照文件。
使用 PowerShell 删除快照
要对 Hyper-V 虚拟机执行批量操作,Windows PowerShell 比 Hyper-V 管理器 GUI 更高效,因为您可以使用命令一次删除多个快照。此外,一些操作,例如删除在 GUI 中没有删除选项的检查点,只能通过 PowerShell 完成。
A checkpoint that cannot be deleted from the Hyper-V Manager is called a lingering checkpoint. Lingering checkpoints happen when a VM backup job fails.
当使用备份解决方案开始虚拟机备份作业时,虚拟机被置于只读模式。虚拟机用户提交的新数据保存到一种特殊类型的检查点,称为恢复检查点。当备份作业成功完成时,恢复检查点的 .avhdx 文件将与虚拟机的 .vhdx 文件合并,并且该检查点将自动删除。然而,如果备份作业失败,恢复检查点将不会自动删除,并将保留为悬挂检查点。
使用 PowerShell 删除检查点:
- 以管理员身份打开 Windows PowerShell ISE。
- 使用命令 Get-VMSnapshot 获取检查点的确切名称。在提示时提供 VMName。
- 运行命令:
Get-VM -Name <VMName> | Get-VMSnapShot -Name <CheckpointName> | Remove-VMSnapshot
- 使用命令验证检查点是否已成功删除:
Get-VMSnapshot
最后想法
创建检查点是测试和创建验收环境的良好实践。然而,在生产环境中不建议保留检查点。检查点会对 Hyper-V 读取操作的性能产生不利影响。
直接从磁盘删除检查点文件会导致数据丢失。应该从 Hyper-V 管理器中删除检查点。如果在 Hyper-V 管理器 GUI 中没有删除选项,则可以使用 PowerShell 特别删除它们。
采用备份和复制解决方案对于您的数据和应用程序保护至关重要。
Source:
https://www.nakivo.com/blog/how-to-delete-hyper-v-snapshots/