Hyper-V 3 虚拟机快照之一:快照应用介绍

Hyper-V 3 虚拟机快照之一:快照应用介绍

什么是快照

快照可以记录某个时间点虚拟机操作系统的完整状态,通过“Microsoft Volume Shadow Copy Service(卷影复***务)”技术抓取当前系统状态,可以把虚拟机某个时刻的所有状态(内存、磁盘、网络、文件等)抓取为一个镜像文件,在以后的任何时间,可以通过快照恢复当时的实际状态。就如同照相机的“照相”功能一样,固定某个时间点的状态。

什么情况下使用快照

在Hyper-V中,快照使用非常方便,任何时候都可用,而且操作简单,易于创建和应用。快照就像一个数码相机,其幕后的技术复杂难懂,但是操作简单易用。在什么情况下需要用到快照呢?

  • 系统级别测试,包括:补丁更新,修复软件 Bug 等。

  • 业务系统新功能测试。

在以上应用中,建议首先创建一个快照,然后进行系统测试。但是要注意,快照不等同于备份,不能作为一种常规备份的方法。

什么时间可以创建快照

任何时刻都可以为虚拟机创建快照,快照创建完成后会自动嵌入该虚拟机的快照树中。在快照属性中,可以查看快照的详细信息。快照中虚拟机设置是只读的。一个快照树示例如图1所示。

jj244577.image1(zh-cn,MSDN.10).jpg

图1

快照需要处理的数据

创建快照后,原有的虚拟磁盘文件(vhd或者vhdx)不能写入数据。抓取快照之后,所有磁盘更新都会被写入另一个后缀为“avhd或者avhdx”的快照文件。同时,还会对抓取时虚拟机的内存进行备份。也就是说,在抓取快照时,将同时完成两个任务(每一次抓取快照都会完成两个任务):

第一,复制当时虚拟机内存的一份拷贝,占用磁盘空间较少。

第二,新建一个后缀为“avhd或者avhdx”的快照文件进行差异备份,在这之后所有应该写入磁盘的数据都会被写入 avhd 或者 avhdx 文件中,保持原有 vhd 或者 vhdx 文件不变。

Vhdx 格式的虚拟硬盘创建的快照文件如图2所示。

jj244577.image2(zh-cn,MSDN.10).jpg

图2

快照如何存储

虚拟机一旦创建完毕即可创建快照。通常,快照创建过程只需几秒钟,而且虚拟机不需暂停、停止或关闭。快照由 Hyper-V 创建、执行,完全独立于运行虚拟机操作系统的类型和性能。快照相关文件会自动储存到 Hyper-V 服务器设置的默认路径下。

快照如何应用

应用指的是将虚拟机从当前状态切换到一个快照并启用该快照。应用快照时,正在运行的虚拟机配置将被完全替代。因此,建议在应用原来的快照之前先创建一个新快照,以便今后还可以再返回到当前状态。另外,如果虚拟机原来的状态是关闭的,虚拟机返回后也处于关闭状态。在 Windows Server 2012 中,应用快照时将提供两个处理方法,在当前快照的基础上创建一个快照后再应用快照以及丢弃当前的操作然后立即切换到目标快照。在实际工作中,建议以第一种方法处理快照,如图3所示。

jj244577.image3(zh-cn,MSDN.10).jpg

图3

快照转移:输入和输出虚拟机

移动虚拟机时可能希望随时携带虚拟机快照。最简单的方法是利用 Hyper-V 的 Export 命令。也可以在终端服务器上使用 Import 命令恢复虚拟机,以及所有相关文件和设置。这两个操作都可以通过脚本或 Hyper-V 管理控制台执行。如图4所示。

jj244577.image4(zh-cn,MSDN.10).jpg

图4

快照应用建议

通常,应该在做任何可能有风险的更改之前,为虚拟机创建快照。例如,如果要应用操作系统更新或补丁,但又希望可以轻松地撤销它们,那么就在应用之前创建一个快照。同样,当想更改虚拟机配置设置或关键的子操作系统服务时,先为虚拟机创建快照。快照并不是在任何情况下都适用。首先,快照不能取代备份。建议遵循虚拟机备份的最佳做法(用脚本或虚拟化工具进行手动备份)。

Hyper-V 3 虚拟机快照之二:创建和查看快照

第一部分概要介绍了快照实现的功能以及应用环境,第二部分介绍如何创建和查看快照。

虚拟机配置文件

测试环境中使用名称为“Windows Server 2003 SP2”的虚拟机。“Windows Server 2003 SP2”虚拟机创建完成后,本例中虚拟硬盘存储在“T:\Hyper-V\Virtual Hard Disks”文件夹(如图1所示)中,虚拟机配置文件存储在“T:\Hyper-V\Virtual Machines”文件夹中(如图2所示)。

注意,vhd 和 vhdx 指的是虚拟硬盘, Windows Server 2008 R2 之前版本都支持vhd格式。Vhdx 是 Window 是 8之后支持的版本,最大虚拟硬盘可以超过128GB,最大64TB。avhd 和 avhdx 是快照硬盘文件。

jj244577.image5(zh-cn,MSDN.10).jpg

图1

jj244577.image6(zh-cn,MSDN.10).jpg

图2

“Windows Server 2003”虚拟机配置保存在“23CA7649-5E4A-4053-A772-C3BD6521F576”XML 文档中,该文档名称是在创建虚拟机的过程自动生成,使用全球唯一标识符 GUID 作为虚拟机名称。虚拟机使用的虚拟硬盘位置在 XML 配置文件中内容如下:

<controller0>

     <drive0>

       <pathname type="string">T:\Hyper-V\Virtual Hard Disks\Windows Server 2003 SP2.vhdx</pathname>

       <pool_id type="string"></pool_id>

       <type type="string">VHD</type>

     </drive0>

     <drive1>

       <pathname type="string"></pathname>

       <type type="string">NONE</type>

     </drive1>

   </controller0>

创建快照

Window Server 2012 中可以使用三种方法创建快照:Hyper-V 管理器、虚拟机连接器以及 Powershell 脚本。

1. Hyper-V 管理器

打开“Hyper-V 管理器”,右击目标虚拟机(本例中使用的虚拟机为 WS2003),在弹出的快捷菜单中选择“快照”命令,如图3所示。

jj244577.image7(zh-cn,MSDN.10).jpg

图3

命令执行后,创建当前虚拟机快照,快照名称默认定义为:虚拟机名称+当前日期+创建时间,例如 WS2003 - (2012/6/11 - 16:11:31))。创建完成的快照显示在“快照(S)”面板中,如图4所示。计算机真实运行状态为“当前”,显示状态为“jj244577.image8(zh-cn,MSDN.10).png”。

jj244577.image9(zh-cn,MSDN.10).jpg

图4

2. 虚拟机连接器创建快照

Hyper-V 管理器选择目标虚拟机后,鼠标右键选择“连接”命令打开虚拟机连接器,如图5所示。

jj244577.image10(zh-cn,MSDN.10).jpg

图5

单击菜单栏的“操作”菜单,在显示的下拉菜单列表中选择“快照”命令。命令执行后,显示如图6所示的“快照名称”对话框,文本框中键入第二个快照名称。如果不想手动设置快照名称,选择“始终使用默认名称”选项。单击“是”按钮,创建快照。

jj244577.image11(zh-cn,MSDN.10).jpg

图6

创建完成的快照(手动命名)在“Hyper-V”管理器中显示在树形列表中,如图7所示。

jj244577.image12(zh-cn,MSDN.10).jpg

图7

3. Powershell 脚本创建快照

在以前的版本可以使用“Set-VMSnapshot”命令创建快照,在 Windows Server 2012 中打开“Windows Power shell ISE”后,没有发现该命令。测试结果如图8所示。

jj244577.image13(zh-cn,MSDN.10).jpg

图8

查看快照

1. 快照创建后,Hyper-V 将自动创建一组文件:

  • XML 文件,虚拟机配置文件

  • Avhd 或者 avhdx 文件,快照文件

  • VSV 文件,虚拟机状态文件。

  • BIN 文件,虚拟机内存文件。

以名称为“Windows Server 2003 SP2”虚拟机为例说明。创建的虚拟机文结构如图9所示:

jj244577.image14(zh-cn,MSDN.10).jpg

图9

2. AVHD 或 AVHDX 文件

AVHD 或 AVHDX 文件是快照磁盘文件。当创建一个快照时,Hyper-V 会创建格式如“虚拟机名称+‘_’+ GUID(随机生成)”的快照文件,例如“Windows Server 2003 SP2”虚拟机创建的一个快照文件为“Windows Server 2003 SP2_043015E9-D39F-466A-8FB9-8CEFFC299D31.avhdx”,如图10所示。“Windows Server 2003 SP2”是虚拟机名称,“043015E9-D39F-466A-8FB9-8CEFFC299D31”是GUID。快照文件使用的 GUID 和原虚拟机使用的 GUID 名称不同。

jj244577.image15(zh-cn,MSDN.10).jpg

图10

创建快照后,将修改“Windows  Server 2003”虚拟机 XML 配置文件,原虚拟机磁盘文件为“T:\Hyper-V\Virtual Hard Disks\Windows Server 2003 SP2.avhdx”,修改为“T:\Hyper-V\Virtual Hard Disks\Windows Server 2003 SP2_043015E9-D39F-466A-8FB9-8CEFFC299D31.avhdx”,快照文件作为虚拟机使用的虚拟磁盘文件。修改后的内容如下:

<controller0>

     <drive0>

       <pathname type="string">T:\Hyper-V\Virtual Hard Disks\Windows Server 2003 SP2_043015E9-D39F-466A-8FB9-8CEFFC299D31.avhdx</pathname>

       <pool_id type="string"></pool_id>

       <type type="string">VHD</type>

     </drive0>

</controller0>

原虚拟机使用的虚拟磁盘文件不能写入内容,操作系统产生的所有数据存储到 avhdx 快照文件中。每新建一个快照,“drive0”的值都将配置为最新的快照文件名称。换而言之,在同一时刻只有一个快照文件可用。

3. XML文件

创建快照时,Hyper-V复制虚拟机的XML配置文件,并且使用一个新生成的GUID命名,生成快照的XML配置文件。例如名称为“Windows Server 2003 SP2”的虚拟机,创建一个快照后,生成新的快照配置文件“90B12240-A547-484B-B848-4E6AB1551027”,如图11所示。

jj244577.image16(zh-cn,MSDN.10).jpg

图11

4. 虚拟机状态文件

快照在虚拟机关闭状态生成,将不会生成VSV文件,但与快照配置文件同名的文件夹将自动生成。

在虚拟机运行时创建快照,将生成一个以“VSV”为后缀的虚拟机状态文件,存放在与快照配置文件同名的文件夹中,VSV文件的名称与快照配置文件同名。如图12所示。

jj244577.image17(zh-cn,MSDN.10).jpg

图12

5. 内存镜像文件

快照在虚拟机关闭时创建,不会创建内存镜像文件(以BIN为后缀的文件),但与快照配置文件同名的文件夹将自动生成。

在虚拟机运行时创建快照,将生成一个以“BIN”为后缀的内存镜像文件,存放在与快照配置文件同名的文件夹中,BIN文件的名称与快照配置文件同名。

Hyper-V 3 虚拟机快照之三: 应用和删除快照

第二部分介绍了如何创建和查看快照,本部分介绍如何还原快照和删除快照。

还原快照

当系统崩溃、操作中出现错误或者误删文件时,可以使用快照还原功能还原到之前正常状态,前提是在更改或者更新之前创建了快照。

测试环境中,名称为“Windows Server 2003 SP2”的虚拟机创建4个快照,使用“Get-VMSnapshot -VMName "Windows Server 2003 SP2"”命令查看快照状态以及快照的父快照,如图1所示,每个快照名称都是用汉字名称表示。

jj244577.image18(zh-cn,MSDN.10).jpg

图1

1. 还原

“还原”功能只能将虚拟机正在运行的状态还原到前一个时间点。“还原”功能不支持任意时间点的还原。本例中名称为“Windows Server 2003 SP2”虚拟机创建了四个快照,如图2所示。虚拟机当前的状态位于快照树的最底层,即第5层。

jj244577.image19(zh-cn,MSDN.10).jpg

图2

第1步,右击名称为“Windows Server 2003”的虚拟机,在弹出的快捷菜单中选择“还原”命令,如图3所示

jj244577.image20(zh-cn,MSDN.10).jpg

图3

第二步,命令执行后,打开“还原虚拟机”对话框。提示“您确实要将此虚拟机还原到其以前的快照吗?”,即还原到上一个时间点。如图4所示。

jj244577.image21(zh-cn,MSDN.10).jpg

图4

第3步,单击“还原”按钮,首先关闭虚拟机操作系统,然后启动还原过程。还原完成后,即可恢复到上次快照(第四层)的状态。

2. 应用

“还原”功能只能还原到上一个时间点的快照。如果虚拟机创建了多个快照,通过“应用”功能可以恢复到任意时间点的快照。上例的虚拟机中创建多个快照,本例中将快照恢复到第二个时间点。

第1步,选择需要将快照恢复到第二个时间点,即“第二个快照”,右击该快照,在弹出的快捷菜单中选择“应用”命令,如图5示。

jj244577.image22(zh-cn,MSDN.10).jpg

图5

第2步,命令执行后,显示如图6所示的“应用快照”对话框。

jj244577.image23(zh-cn,MSDN.10).jpg

图6

第3步,该对话框提供2个功能:应用和获取快照并应用。

  • 如果选择“应用”,首先关闭虚拟机,然后还原虚拟机。

  • 如果选择“获取快照并应用”,首先为当前虚拟机创建快照,然后关闭虚拟机,然后还原虚拟机。

还原成功后,虚拟机的当前状态迁移到第三层,如图7所示

jj244577.image24(zh-cn,MSDN.10).jpg

图7

删除快照

删除快照可以节省磁盘空间,便于管理。当快照不再需要时,即可删除快照。

删除快照命令执行后,Hyper-V有一个合并磁盘的过程,是将正在删除的快照硬盘文件与父快照的硬盘文件合并。

1. 虚拟机关闭时删除快照

虚拟机“Windows Server 2003 SP2”处于关机状态,虚拟机已经创建5个快照,本例中将删除第5个快照。

第一步,选择需要删除的快照,鼠标右键选择“删除快照”命令,如图8所示

jj244577.image25(zh-cn,MSDN.10).jpg

图8

第二步,命令执行后,显示如图9所示的对话框,单击“删除”按钮,删除选择的快照。

jj244577.image26(zh-cn,MSDN.10).jpg

图9

2. 虚拟机运行时删除快照

名称为“Windows Server 2003 SP2”的虚拟机创正在运行,删除名称为“第三个快照”的快照。右击“第三个快照”,在弹出的快捷菜单中选择“删除快照”命令。命令执行后,打开“删除快照”对话框。单击“删除”按钮,首先立即执行快照文件合并过程,在“虚拟机”状态栏的“任务状态”列,显示文件合并状态为“正在进行合并”,直到合并完成。在以前版本中,必须等到关闭虚拟机操作系统时才执行合并操作。

3. 删除快照树

删除快照树,删除所有快照。

第1步,右击目录树中的第一个快照,在弹出的快捷菜单中选择“删除快照子树”命令,如图10所示。

jj244577.image27(zh-cn,MSDN.10).jpg

图10

第2步,命令执行后,打开“删除快照树”对话框。单击“删除”按钮,执行删除操作。删除完成后,立即执行快照文件合并过程直到成功。如图11所示。

jj244577.image28(zh-cn,MSDN.10).jpg

图11

Hyper-V 3 虚拟机快照之四:导入/导出快照

当移动包含快照的虚拟机时,不但要导出虚拟机的原始硬盘文件,也要导出快照文件。如果包含多层级快照,需要注意快照之间的合并。如果要整体导出快照树,需要选择最底层的快照。或者执行完整的虚拟机导出功能。

在实际应用中,建议不要创建多层级和不同层级且有不同深度的快照树(如图1所示),这样的快照应用对管理员来说是个灾难。好的习惯是创建快照并测试通过后,尽快执行合并功能,以减少快照数量和深度.虽然在Windows 8中提供多种导入导出虚拟机模式,但是建议导出带有快照的虚拟机还是使用Hyper-V管理器完成。

jj244577.image29(zh-cn,MSDN.10).jpg

图1

导出快照

“Hyper-V 管理器”提供快照“导出”功能,使用该功能可以导出已经创建的快照,本例中名称为“Windows Server 2003 SP2”的虚拟机创建了四个快照,导出名称为“第三个快照”的快照。

第1步,关闭虚拟机。右击名称为“第三个快照”的快照,在弹出的快捷菜单中选择“导出”命令,如图2所示。

jj244577.image30(zh-cn,MSDN.10).jpg

图2

第2步,命令执行后,显示如图3所示的“导出虚拟机”对话框。设置存储导出虚拟机的目标文件夹。单击“浏览”按钮,选择目标文件夹,或者在“位置”文本框中键入存储导出虚拟机快照的目标文件夹,如图3所示。

jj244577.image31(zh-cn,MSDN.10).jpg

图3

第3步,单击“导出”按钮,开始导出虚拟机,导出状态如图4所示,“虚拟机”面板中的“任务状态”列显示导出状态。

jj244577.image32(zh-cn,MSDN.10).jpg

图4

第四步,导出完成后,在目标文件夹中显示快照导出后的文件结构,如图5所示,导出文件组中包括:config.xml 文件、虚拟机使用的所有虚拟硬盘、虚拟机状态文件、虚拟机镜像文件以及exp文件(虚拟机配置文件)。

jj244577.image33(zh-cn,MSDN.10).jpg

图5

导入快照

在宿主机中,使用“导入虚拟机”功能可以导入已经导出的快照。

第1步,右击宿主机,在弹出的快捷菜单中选择“导入虚拟机”命令,启动“导入虚拟机”向导,打开“开始之前”对话框。如图6所示。

jj244577.image34(zh-cn,MSDN.10).jpg

图6

第2步,单击“下一步”按钮,打开“定位文件夹”对话框。设置存储导出的虚拟机目标文件夹。如图7所示。

jj244577.image35(zh-cn,MSDN.10).jpg

图7

第三步,单击“下一步”按钮,打开“选择虚拟机”对话框。选择需要导入的虚拟机。名称显示为“第三个快照”。如图8所示。

jj244577.image36(zh-cn,MSDN.10).jpg

图8

第四步,单击“下一步”按钮,打开“选择导入类型”对话框,如图9所示。提供三种导入方式。

  • 就地注册虚拟机:如果宿主机中第一次导入该虚拟机,建议使用该方式。

  • 还原虚拟机:覆盖已经存在的虚拟机。

  • 复制虚拟机:导入的虚拟机将使用新的 GUID 创建一个新虚拟机,如果存在同名的虚拟机,将在虚拟机列表中显示两个同名的虚拟机。

jj244577.image37(zh-cn,MSDN.10).jpg

图9

第五步,单击“下一步”按钮,打开“正在完成向导”对话框。显示导入虚拟机摘要信息。如图10所示。

jj244577.image38(zh-cn,MSDN.10).jpg

图10

第六步,单击“完成”按钮,开始导入虚拟机直至完成。完成后的状态如图11所示。注意虚拟机的状态为“已保存”。启动虚拟机后,首先执行还原,然后正常打开虚拟机。

jj244577.image39(zh-cn,MSDN.10).jpg

图11

复制虚拟机

虚拟机关机后,可以复制整个虚拟机目录作为备份。当虚拟机出现故障,或者宿主机故障后,可以通过复制的虚拟机恢复虚拟机。

虚拟机故障

确认是虚拟机故障,可以用备份目录完整覆盖原目录。如果原虚拟机已经创建过快照,已经创建的快照将无效。

宿主机故障

宿主机(安装 Hyper-V 的物理服务器)出现故障,重新安装Hyper-V服务。对使用导出功能导出的虚拟机,直接导入即可。如果只有虚拟机,可以使用手动方式导入。导入过程参考【导入快照】操作过程。注意,在导入过程中,可能出现快照文件无法找到的情况,将 Hyper-V 默认文件夹重新定位到新文件夹即可。

Hyper-V 3 虚拟机快照之五:快照应用中发现的问题

对部署在虚拟机的应用来说,快照保存系统状态功能是管理员的得力助手,但是快照在实际应用中存在以下问题。

不能恢复指定文件

不能恢复指定的目标文件。由于误操作,虚拟机中某个重要文件或者文件夹丢失时,如果使用快照恢复,只能恢复到创建快照时的系统状态,不能象 Ntbackup 和 Windows Server Backup 工具一样能够还原出特定文件,必须还原全部的快照内容。

占用过多的磁盘空间

存储的快照文件是发生快照之后虚拟机上产生的新数据写入到一个独立的磁盘增量文件中,做的快照越多,服务器上的存储空间被占用的越来越多。所以需要管理员经常确认过期和不需要的快照,并且将其删除以防止存储空间不足,这给日常管理和维护增加很大难度。

增加系统负载

当创建多层级快照后,Hyper-V 需要检查快照树才能找到最新数据,需要计算机分配额外的资源管理快照,将增加计算机负载,降低系统性能。

删除快照

Windows Server 2012 中,快照删除后立即执行快照合并,如果快照文件过大,需要一段时间才能完成合并工作,合并期间虚拟机不提供外部访问功能。删除快照建议在飞工作时段完成。

快照不能代替备份

快照不能代替备份的原因:

  • 运行 Hyper-V 的物理服务器(宿主机)可能出现故障。例如,物理服务器硬件故障或管理操作系统故障。

  • 虚拟机中运行的应用程序不能识别快照,因此无法进行相应调整。

  • 虚拟机快照不同于由卷影复***务程序所创建的备份。

删除快照后,但是空间没有立即释放

最佳解决方法:关闭虚拟机;或者强制停止虚拟机。虚拟机关闭、停止或置于保存状态前,已删除的虚拟机快照文件不会从物理存储中移除。删除快照文件可能需要花费一段时间,具体取决于快照的大小和数量。另外,需要确认存储空间是否够用。

如何存储快照

快照是后缀名为 avhd 或者 avhdx 的文件,默认情况下,快照文件与虚拟硬盘位于相同的文件夹中。因此,磁盘IO性能将决定快照文件的性能,建议将快照文件和虚拟机硬盘文件部署在不同的物理磁盘中,增强读写性能,从而能提高虚拟机的运行效率。快照文件位置可以通过“Hyper-V 设置”调整。


你可能感兴趣的:(Hyper-v,3,虚拟机快照)