短期内看,桌面虚拟机快照带来了便利性,但它并不适合对桌面进行长期备份,因为随着时间的推移,桌面虚拟机快照可能会带来各种各样的性能问题。
管理员使用虚拟机最主要的一个原因就是,虚拟机节约了人力。虚拟机避免了必须部署单独物理系统的麻烦,无论是对测试软件还是运行实际的工作负载都是如此。虚拟机能够带来的***创新性以及最节省劳动力的方式就是快照:将虚拟机的状态制作为一个基于文件的基准镜像,并作为对虚拟机进行其他改变的基准。原有的虚拟机快照能够在任何时刻恢复。
为什么虚拟机快照是有用的
快照最显著的作用就是创建一个基线系统,今后你想使用该虚拟机做其他的事儿,就不必重新进行初始化了。制作一个基线快照,做你想做的事儿,当完成之后,你就可以轻松地取消该快照了。
另一个非常有用的特性就是你可以利用其它快照创建快照。例如,最近我必须依次测试一款软件与其他五六款软件的兼容性。不用反复加载该程序,我创建了一个只加载了原始程序的虚拟机快照,然后基于该快照创建了其他的快照,每个快照都包含了我正在测试的其他程序。这意味着测试环境是彼此隔离的,我不必担心会在同一个系统上发生反复安装与卸载软件这样的事情。
并行快照同样允许你对测试数据做同样的事儿。你可以针对进行了基础配置的系统创建一个快照,然后针对不同的数据集制作多个派生快照。
桌面虚拟机快照如何影响性能
然而,在桌面虚拟机环境中使用快照需要牢记的最为重要的事情就是性能。
首先,出于性能考虑,虚拟桌面并不适合所有的工作负载—这不仅仅是因为桌面是在虚拟机内运行的,而且在虚拟桌面环境中还有太多其他的变量难于控制。由于快照镜像对I/O的使用使得虚拟桌面的性能问题变得更为复杂。
快照只是一个记录了对虚拟机文件系统进行了一系列改变的文件。这意味着使用虚拟机需要追踪两个I/O源:原始的磁盘镜像(只读)以及快照(可读写)。之前快捷的操作可能突然变得相当拖沓。有些问题可以通过使用固态硬盘得以解决,但是并不是所有人都负担得起。
快照过大同样可能成为影响性能的一大因素。如果你长期使用快照,累积下来的变化的数量将需要越来越多的I/O来保持同步。
原始镜像应用快照时速度同样非常慢。如果进行多个并行测试,将其中一个变化集提交到原始镜像是很容易做到的。但是将变化提交到原始磁盘的过程可能要花数分钟乃至几个小时,这取决于改变的数量以及虚拟机磁盘镜像的大小。另外,因为提交过程占用了大量的I/O,所以任何其他依赖于I/O的过程将会比之前运行得更慢。
出于这些原因,***使用快照作为虚拟机的即时拷贝,而不是作为备份整个虚拟机的一种方式。
如果在桌面上使用Hyper-V,那么针对快照同样有一些事项需要牢记于心。
首先,不要混淆Hyper-V快照和卷影副本服务快照。后者在NTFS文件系统内对数据进行块级拷贝,而且能够用于磁盘备份以及在给定系统上恢复文件的早期版本。而Hyper-V快照是对运行在该平台下的虚拟机的整个磁盘镜像做快照。卷映像副本服务实质上运行在Hyper-V快照的内部。
其次,快照与虚拟硬盘存放在相同的路径下。有些其他的虚拟化系统(例如VirtualBox)允许你在不同的路径下存储快照与VHD文件,通过允许并行I/O提高了虚拟桌面的性能。