VMWare虚拟机快照这个功能非常方便快捷,可以备份副本和恢复系统。对虚拟机磁盘文件VMDK的某个状态创建副本,当系统出现问题,可以恢复快照来确保系统的正常。VMwware虚拟机快照技术非常有用,但是也有美中不足,不是那么完美。

快照(Snapshot):虚拟机的救命稻草

硬盘快照(Snapshot)是当前数据中心最佳的数据保护机制之一。无论是基于SAN的快照技术,还是建立在文件系统或操作系统中的,快照技术能够在错误出现时让损失降到最低。但并不是所有的快照技术并非都是面向意外的数据丢失,比如VMware ESX服务器及桌面虚拟化平台上的快照技术。

与其他的快照技术不同,VMware的快照并不是非常适合用于数据保护,但它称得上是一个非常有用的工具,只要能够用的恰当。

从根本上来说,VMware的快照适合两种情况:

1、将一个虚拟机的磁盘隔离,不再写入数据,这样可以进行备份;

2、在打补丁和软件升级时提供一个短期的自动恢复功能。在开发环境中,可能经常会见到利用快照来保存一些实时状态的镜像,但是这样的方式在一个性能敏感的生产环境中是不可取的。

VMware Snapshot快照优缺点分析(图)_休闲

虚拟机快照结构,可以恢复到补丁前的状态

在一个典型的环境中,一个虚拟机的磁盘资源是由位于VMware独有的VMFS文件系统或NFS存储上的VMDK文件(virtual machine disk的缩写)组成,它的大小几乎等同于虚拟机的磁盘资源。所以如果你的Windows 2003 Server有15GB的系统硬盘,那么在VMFS卷上会出现一个15GB的VMDK文件。

如果使用hypervisor对虚拟机进行快照,系统会创建第二个VMDK文件(有时叫做redo log),这个文件存储着进行快照后虚拟机所有写入的东西,这样的功能具有几个明显的优势:

首先,由于快照VMDK文件存储着对基础VMDK的写入操作,实际上基础VMDK不会被更改。这意味着在快照建立之后如果出现一些错误,可以很容易的将这些错误“扔掉”,恢复到进行快照之前的基础磁盘状态。同样,由于当快照存在时基础VMDK并不会被写入,这样就可以安全的对基础VMDK创建副本来进行备份。

虚拟机快照的不足之处

然而,VMware的快照功能还有一些不足之处,也是应当注意的。

例如,当快照创建时虚拟机执行一个读操作,hypervisor会检查快照VMDK,查看是否有被读取的区块存在。如果有,则从快照中为虚拟机提供这个区块,如果没有,虚拟机还需要去读取基础VMDK。如果只有一个快照,这并不是什么问题,只不过是重复来读取VMDK。但是如果有大量快照存在,比如在两周内每天建立一个,那么hypervisor需要在14个快照文件中查找这个区块,这就会消耗大量的读I/O。

更糟糕的是,没有完善的机制来阻止这些快照的增长,如果你每天为一个Windows 2003虚拟机进行快照,大概每天需要消耗2GB的存储空间,这对大多数虚拟机来说还是非常保守的数字。大体上来说,你需要为虚拟机配置双倍的空间来存储这些更改。

如果换个角度来看,实际几乎所有的快照技术,包括SAN快照,都要消耗很大的存储空间。但有所不同的是VMware快照没有自动保护机制,防止VMFS卷被不断增长的快照填满。而大部分SAN当分配的快照空间被填满时会自动删除最早的快照。一旦VMSF卷被填满,当前的快照文件就不能再写入,而虚拟机也可能会崩溃。如果有很多虚拟机,并且快照都存在相同的VMFS卷上,这些虚拟机都可能会崩溃,这是灾难性的。

还有一个潜在的陷阱,hypervisor会通过磁盘停顿进程(disk quiescing)试图确认快照的应用程序持续状态,尽管可以再不停顿硬盘的情况下创建快照,但是这时候只能建立crash-consistent快照,如果在crash-consistent快照建立后恢复基础磁盘,操作系统和应用程序会出现貌似非正常关机时的状态。磁盘停顿功能让操作系统和应用程序可以找到合适的停顿点,比如完成写入,防止数据被损坏。

根据操作系统在虚拟机中的运行状况,可以通过不同的方式实现磁盘停顿。这些都需要应用安装在虚拟机操作系统中的VMware工具包。如果你运行的是一个新近版本的Windows系统,VMware工具将使用微软的卷影副本服务(VSS)在虚拟机I/O中创建一个临时的停顿,让VMware软件来创建更底层的磁盘快照。

然而,在进行大量磁盘I/O传输的虚拟机中,如微软SQL数据库平台或Exchange,卷影副本服务(VSS)可能会需要大量的调试才能工作正常。VSS工作并不是那么稳定,有时候,这次正常,而下次就可能出现故障。这是恼人的,特别是在希望通过停顿快照来对虚拟机进行更好的备份的时候。

小结:

虽然有些不足之处但是如果使用正确,VMware的快照还是一个非常优秀的工具,无论是在主要的升级或打补丁前为虚拟创建短期的实时副本,还是允许第三方备份软件对虚拟机执行direct-from-SAN的备份。能有效使用快照功能的前提是理解它们的工作原理,可能偶尔需要调试一下。如果要在运行关键任务的虚拟机上用VMware快照,更要小心谨慎,最好先进行测试。