hyperv vhd 有快照时不可编辑(扩展或压缩),否则会造成数据的丢失。

即使删除快照时也要磁盘空间有一定的冗余,否则速度会超慢。

当你创建一个快照时,Hyper-v会为我们生成几个文件:一个AVHD文件,一个XML文件,一个或零个VSV文件,一个或零个BIN文件


a、AVHD文件,这一个就快照的磁盘文件,当你创建一个快照时,Hyper-v就会创建这样的一个文件,这个文件的名称是虚拟机的名称加上一个下划线再加上一个随机生成的GUID,比如
xpsp3_F69039E2-D0A2-4494-B406-0A8476DA557F
从创建第一个快照开始,将修改Virtual Machines文件夹下面的XML配置文件
<drive0>
<pathname type="string">D:\VM\XPSP3\xpsp3_F69039E2-D0A2-4494-B406-0A8476DA557F.avhd</pathname>
<type type="string">VHD</type>
</drive0>


虚拟机的VHD文件它就不再写入了,数据的写入都是写到AVHD文件当中,并且,每新建一个快照,drive0的值都将配置为最新快照的AVHD;


b、XML文件,创建快照时,Hyper-v将复制虚拟机的XML配置文件,并且使用一个新生成的GUID命名,生成快照的XML配置文件;

c、如果是在虚拟机开机的状态生成快照,那么它将生成一个虚拟机状态文件,以VSV作为扩展名,并且存放在与XML文件同样GUID命名的文件夹中,VSV文件的名称也是这个GUID,如果快照是在虚拟机关闭状态生成的,那么,将不会生成VSV文件,但以GUID命名的文件夹还是存在的;
d、如果是在虚拟机开机的状态生成快照,那么它将生成一个内存镜像文件,以BIN作为扩展名,并且存放在与XML文件同样GUID命名的文件夹中,BIN文件的名称也是这个GUID,如果快照是在虚拟机关闭状态生成的,那么,将不会生成BIN文件,但以GUID命名的文件夹还是存在的;

3、快照删除
快照功能,有创建,它就有删除,理由很简单,有时需要,有时不要了,还能省一点磁盘空间,这里有一个场景,或许能让我们更好的理解快照的删除
1、在虚拟机中桌面新建一个文本文件,名称为Text One,创建快照One Text;
2、再建一个文本文件,名称为Text Two,创建快照Two Texts;
3、再建一个文件文件,名称为Text Three,创建快照Three Texts;
好了,快照创建完成了,我们执行以下操作
1、关闭虚拟机,再打开,可以看到桌面上还是有三个文本文件,这个没错;
2、关闭虚拟机,把快照Three Texts删除,此时只有两个快照了,我们查看虚拟机的配置文件,此它的drive0参数配置为Two Texts的AVHD了,再次打开虚拟机,我们可以看到桌面上还是有三个文本文件,为什么这里还有三个文本文件,启动文件不是Two Texts了?
其实删除快照的操作,Hyper-v还有一个合并磁盘的过程,就是将正在删除的AVHD文件与树形结构中的上级父快照的AVHD文件合并
a、如果在虚拟机开机的状态删除快照,那么这个快照的AVHD文件还将继续使用,虚拟机中的所有操作还是保存在这个AVHD文件之中,等到虚拟机关机了,那么Hyper-v将启动一个合并的过程,将该AVHD文件与上一级快照的AVHD文件合并,如果删除的快照是最后的一个快照,也就是说没有上一级快照AVHD,那么它将与虚拟机的VHD文件合并;
b、如果虚拟机是关机的状态删除快照,那么这个合并过程将立即执行。