不知道大家有没有想到过,如果你能及时地返回到以前的某个时间点,然后看看当时你的虚拟机是怎么样的?比如说,在生产环境中的Windows Server安装Update产品补丁之前,你的虚拟机是怎样的?或者,由于在SQL update语句中遗漏了where语句,导致登陆窗口的密码意外溢出之前,虚拟机又是如何?相信很多朋友都想实现这个愿望。幸好,微软的Hyper-V提供了这样一个很有用的工具,可以帮你创建和应用虚拟机的即时状态浏览:快照功能(检查点)。这个工具很好用,我们可以从Hyper-V 管理控制台快速创建虚拟机快照。
Windows Server 2012/R2 通过使用微软Volume Copy Service 技术,可对Hyper-V 上运行的虚拟机制作实时快照,快照内容为虚拟机的状态、数据、硬件配置。Hyper-v限制每一部虚拟机最多可以制作50 份快照。
虚拟机快照主要用于测试对现有虚拟机环境的改动,在必要的时候,作为返回之前状态或时间的手段。如果需要重建某个特定状态或者重现某个特定条件,以便对一个问题进行故障排除,那么使用虚拟机快照就是一个更方便的方法。
在实际生产环境中,快照可以协助管理员针对服务器做系统更新或对某一特定软件进行更新。如果在系统更新或软件更新的过程中有问题产生,可运用快照恢复至先前健康的状态。快照的另一个主要用途是容错及灾难恢复。企业实际环境下,一个及时位于灾难发生前的快照,可帮助企业快速地将服务器恢复至生产状态,大幅度节省了从磁带恢复所需的宝贵时间。在为虚拟机首次进行快照之前,首先要设置虚拟机的快照所在的文件夹。如果没有对虚拟机快照进行设置,则虚拟机快照文件保存在与虚拟机主机文件相同的文件夹中。但是,这个操作要让运行中的虚拟机暂停,导致合并过程中无法使用虚拟机。如图所示。
由上图可以看到,快照的存储路径为:“C:\ProgramData\Microsoft\Windows\Hyper-V\Snapshots”
从Windows Server 2012开始,Hyper-V 快照的实时合并功能允许组织将当前快照合并回原来的父盘,同时保持虚拟机继续运行,快照数据文件存储为 .avhd 文件。在删除虚拟机快照时,如果被删除快照的虚拟机正在运行,则不能删除相关的 .avhd 磁盘
Windows Server 2012 开始支持在虚拟机继续运行的时候,将相关 .avhd 磁盘合并进父盘的能力。在合并的过程当中,I/O 被挂限制在一个小范围内,这个范围内的数据从源读取,然后写入目标。在其合并的过程中,对已经合并的区域的后续写入,会被重定向到合并的目标。在完成时,联机的合并会修改运行链,取消合并磁盘的链接,并关闭这些文件。对于用户毫无影响。快照的实时合并提供了将虚拟机恢复回前一状态的更快、更容易的方式。
企业管理员可以在不影响业务系统、测试环境等前提下任意时间创建虚拟机快照,当创建完快照后,系统会自动嵌入到该虚拟机的快照树中,并会生成.avhd/.avhdx虚拟硬盘文件以及生成一份快照文件到相应的目录中
虚拟机的配置信息将会保存到该快照文件中,并且使用GUID用以标识该虚拟机
一、使用Hyper-v管理器创建快照:
在此我们以“Test-Hyper-v-03”为例来为大家演示如何创建快照:
登陆Hyper-V服务器,打开Hyper-V管理控制台:
鼠标右键需要创建快照的虚拟机,选择“检查点”:
执行“检查点”之后,系统将自动创建快照并以创建时间来标识快照文件名,如下图所示:
检查点显示名可根据实际环境进行更改。例如“.NET3.5”即为刚刚安装完.netfreamwork 3.5的系统,还未配置其他任何信息:
鼠标右键快照,在此右键“.NET 3.5” 选择设置可查看检查点文件位置,或者查看可执行的相关操作:
二、使用PowerShell创建快照:
1、以管理员身份运行PowerShell,运行如下命令创建虚拟机快照:
Checkpoint-VM -Name Test-Hyper-v-03 -SnapshotName Net4.5
2、返回Hyper-V管理器,查看创建的虚拟机“Test-Hyper-v-03”快照是否创建成功:
3、使用PowerShell查看虚拟机快照,运行如下命令:
Get-VMSnapshot
4、使用Tree名称查看快照文件:
Tree /f
5、删除快照可以使用如下命令:
Remove-VMSnapshot
返回Hyper-v管理器查看:
三、还原/应用快照
1、 还原快照:
常见应用场景是每月的系统补丁更新,企业管理员经常在每月的系统更新前,使用某一台或者某一类型的机器进行系统更新以确保不会影响业务系统。此时如果管理员在执行系统更新之前创建了快照,当更新完系统补丁是,系统崩溃、操作中出现错误或者误删除文件时,可以使用快照还原功能还原到之前的正常状态。“还原”功能只能将虚拟机正在运行的状态回退到前一个时间点,不能实现任意时间点的还原。右键虚拟机,选择“还原”即可执行还原虚拟机快照
还原方式如下:
2、 应用快照:
“还原”快照功能只能还原到上一个时间点所执行的虚拟机快照。如果想恢复到任意时间点的虚拟机快照,此时可以使用“应用功能”。右键创建的快照,选择“应用”即可,如下图所示:
注意:
(1) 选择“应用”:自动关闭虚拟机,然后还原虚拟机
(2) 选择“创建检查点并应用”:创建当前虚拟机的当前状态快照,然后执行还原虚拟机
四、删除虚拟机快照
删除虚拟机快照可以节省物理磁盘空间,例如上文说的,系统补丁更新完成之后,对当前业务系统没有产生任何影响,此时可以删除虚拟机快照,在执行删除快照过程中,Hyper-V会自动执行磁盘合并,将正在删除的快照硬盘文件与父快照的硬盘文件合并。
1、 虚拟机运行时删除快照:
前文说过,在Hyper-V3.0以前合并快照文件必须关闭虚拟机,到了Hyper-V3.0以后,可以在虚拟机运行中删除并合并虚拟机快照以减少服务器宕机时间。有一点需要注意的是,在虚拟机运行中,需要选择删除检查点子树才能彻底删除快照并合并快照文件。如下图:
2、 虚拟机关闭时删除快照:
选择要删除快照的虚拟机的快照,右键选择“删除检查点”即可删除虚拟机快照。如下图:
五、生产环境中使用虚拟机快照可能会出现的问题
虚拟化中的快照功能,是管理员实施过程中是一个很好的功能,但是也同样存在很多问题。
1、不能恢复指定的文件:出现此种问题一般多为管理员误操作执行某一个动作造成,可能只能恢复到创建快照时的系统状态。建议管理员执行此操作时确认无误后在执行相关操作。
2、占用过多磁盘空间:执行虚拟机快照后,会生成.avhd/.achdx文件,当快照越来越多时,会不断地动态写入新的数据到快照文件中。建议管理员定期清理不再需要、过时的快照文件
3、增加系统负载:一个虚拟机创建了N个快照文件后,如果系统需要执行检索功能,此时需要在多个快照、以及子树中查询才能找到需要的数据,会增加磁盘I/O操作,此时需要分配更多的物理资源完成此操作,必将降低系统性能。
4、快照不是备份解决方案:快照只是将系统保存到当前某一状态,不能当作备份解决方案,虚拟机中运行的应用程序不能识别快照,执行了某一个关键更改时可能无法回退到修改前的状态
相信关注微软最新技术的朋友都知道,在最新的Windows Server 2016 TP4中Hyper-v新增了一个叫做生产检查点的功能。肯许多朋友要问这个功能是干嘛用的?关于生产检查点在此我不多做介绍,因为后面有专门的博客来说明这个。所以还请大家继续关注后续的博客吧!嘿嘿。。。