虚拟机快照是虚拟机在特定时刻的状态、磁盘数据和配置的基于文件的快照。可以获取虚拟机的多个快照(甚至在其运行时)。然后,通过将相应快照应用于虚拟机可将虚拟机恢复为任何以前的状态

我先说一下Hyper-V快照的创建过程

1. 虚拟机暂停(对于用户来说是透明的,感觉不到)

2. 为快照创建AVHD文件(快照以 .avhd 文件的形式存储在虚拟硬盘上的同一位置)

3. 配置虚拟机

4. 将虚拟机的硬盘指向新创建的AVHD文件

5. 虚拟机恢复运行(用户感觉不到虚拟磁盘配置已被修改)

6. 当虚拟机虚拟机运行时将内存中的内容保存到磁盘

7. 快照完成后,虚拟机的配置文件和状态文件被保存到虚拟机的目录下的snapshot目录中

多快照之间的关系

下面来了解一下多个虚拟机快照AVHD文件之间的关系

上图是我更具自己的理解所画的简图,和官方的图不一样,下面通过一个例子对上图做一些解释,

首先我对一个虚拟机做了3个快照(图1),分别为快照A、快照B、快照B-1

图 1 快照A、快照B、快照B-1

下面,我分别看看 这几个快照的磁盘

图 2 快照A是磁盘使用的仍然是虚拟机的磁盘

图 3快照B的磁盘

图 4快照B-1的磁盘

图 5“立即”状态的磁盘

从上面的几张图可以看出除快照A之外,其他快照都是以.avhd的文件形式存储的,大家在这个地方也许就有点犯晕了,其实我也有点犯晕,转不过这个弯,我尝试着解释一下:

当我们创建快照A的同时,系统已经创建了一个.avhd文件,快照A创建的后对来宾系统的更改实际上是保存到这个.avhd文件中的,也就是说快照A是对创建快照之前虚拟机系统状态的一个保存,而.avhd是创建快照A后我们所实际使用的磁盘,也就是“立即”这个状态,当创建快照B是,这个.avhd文件将被作为快照被的磁盘,同时也作为快照B之后“立即”状态的父硬盘。

大家看着可能有点犯晕,看看下图(图6)能不能帮助你理解,如果还是不明白的话,大家可以自己动手做做实验

图6 点击“检查”会显示父硬盘的属性

快照的应用

快照的应用就是将你的虚拟机恢复到之前的某个状态,应用快照的过程如下:

1. 复制要应用快照的配置文件(.bin .vsv)

2. 创建新的AVHD文件,并链接到父AVHD(就是你应用的这个快照设置中的avhd文件)

注意:

1. 如果在应用某个快照之前没有对当前状态获取新的快照,那么当前状态中的所有操作将会丢失

2. 应用快照后的“立即”状态和当前快照的下一级快照在同一级别

也就是说“快照B-1”和“立即”的父硬盘是同一个

快照的删除

删除快照是,执行以下过程

1. 删除在创建快照时的虚拟机配置文件副本

2. 删除在创建快照时的内存副本

3. 关闭虚拟机,AVHD中的内容被合并到父磁盘中,AVHD文件被删除

注意:

删除快照树,该树下的所有子快照将被全部删除,如果该快照属下没有快照被应用,该快照树下所有快照的AVHD文件将被立即删除

有关虚拟机快照的注意事项

在许多设置中,您需要重新创建不同的计算环境并在这些环境中再现各种状况,此时快照可帮助您提高效率。例如,软件开发和测试、技术支持服务以及培训课程开发。

但是,使快照在某些设置中有用且有效的强大功能和灵活性,在其他设置中却可能导致意外和潜在的严重后果。这些后果包括在未正确管理快照时意外丢失数据的固有风险。例如,如果编辑连接到具有快照的虚拟机的虚拟硬盘,则可能发生数据丢失。

使用快照的适当设置为开发和测试活动,包括使用虚拟机作为暂存服务器以在将更新和修补程序部署到生产服务器之前对其进行测试。建议您不要在提供时间敏感服务(如 Active Directory 服务)的虚拟机上使用快照,或在性能或存储空间可用性至关重要时使用快照。

此外,在开始使用快照之前,应注意以下事项:

· 获取快照将降低虚拟机的性能(在创建快照时)。对于在生产环境中提供服务的虚拟机,不应在其上使用这些快照。

· 建议您不要在配置有固定虚拟硬盘的虚拟机上使用快照,因为这些快照会降低使用固定虚拟硬盘本应获得的性能收益。

· 快照需要充足的存储空间。快照以 .avhd 文件的形式存储在虚拟硬盘上的同一位置。获取多个快照可能会快速消耗大量存储空间。使用 Hyper-V 管理器删除快照时,将从快照树删除快照,但在关闭虚拟机之前,不会删除 .avhd 文件。

· 虚拟机快照与由卷影复制服务 (VSS) 创建的快照不同。虚拟机快照可以是一种有用的创建虚拟机临时备份的方式,但它不能替代永久备份解决方案