VMware快照的工做原理(转)

VMware中的快照是对VMDK在某个时间点的“拷贝”,这个“拷贝”并非对VMDK文件的复制,而是保持磁盘文件和系统内存在该时间点的状态,以便在出现故障后虚拟机可以恢复到该时间点。若是对某个虚拟机建立了多个快照,那么就能够有多个可恢复的时间点。

当咱们为虚拟机建立的快照时,当前可写的VMDK文件变成为只读状态,而且建立一个新文件(称之为快照文件)来保存变化的内容(使用in-file delta technology)。算法

在初始状态下,快照文件的大小为16MB,并随着虚拟机对磁盘文件的写操做而增加。快照文件按照16MB的大小进行增加以减小SCSI reservation冲突。当虚拟机须要修改原来的磁盘文件的数据块时,这些修改会被保存到快照文件中。当在快照文件中的已经修改过的数据块须要被再次修改时,这些修改将覆盖快照文件中的数据块,此时,快照文件大小不会改变。所以,快照文件的大小永远不会超过原来的VMDK文件的大小。后端

快照文件的变化频率取决于虚拟机应用的写的繁忙程度,例如对于Exchange和SQL等应用,快照文件变化比较快。多个快照的状况下,在建立新的快照时,以前的快照文件变成只读的状态。服务器

不一样类型的快照文件post

*-delta.vmdk文件:该文件就是前面咱们所提到的快照文件,也能够理解为redo-log文件。在每建立一个快照时就会产生一个这样的文件。而在删除快照或回复到快照时间点状态时该文件会被删除。性能

*.vmsd文件:该文件用于保存快照的metadata和其它信息。这是一个文本文件,保存了如快照显示名、UID(Unique Identifier)以及磁盘文件名等。在建立快照以前,它的大小是0字节。命令行

*.vmsn文件:这是快照状态文件,用于保存建立快照时虚拟机的状态。这个文件的大小取决于建立快照时是否选择保存内存的状态。若是选择的话,那么这个文件会比分配给这个虚拟机的内存大小还要大几兆。blog

建立快照内存

快照的建立能够经过VMware VI客户端的Snapshot Manager来实现,或者经过ESX服务器的Service Console的命令行vmware-cmd来实现。不管虚拟机是在运行、关机仍是挂起的状态,均可以建立快照。Snapshot能够经过VI客户端直接链接到ESX Server或者链接到VirtualCenter来管理。文档

删除快照或者回滚到快照点状态get

当删除虚拟机的全部快照时,针对该虚拟机所建立的全部delta文件中的内容将会合并到原来的vmdk文件中,合并完成后再删除vmdk文件。若是只选择删除一个快照,那么这个快照的delta文件将和其父快照的delta文件进行合并。若是选择回滚到某一个快照,那么当前的磁盘和内存状态将会被丢弃,并且虚拟机会转变到revert-to的状态。不管选择哪一个快照进行回滚,该快照都会变成当前的父快照,就是说当前运行的虚拟机会在这个快照之下。所以,父快照不必定是最近所建立的快照(在没有回滚的状况下,父快照通常都是最近所建立的快照)。在Snapshot Manager中父快照之下通常有“You are here”的标记。

若是选择回滚的快照不包含内存状态,那么该虚拟机将会被关机,在管理员启动该虚拟机时应用所选择的快照。若是包含内存状态的话,那么虚拟机会短暂的停顿一下,而后回复到快照时的磁盘和内存状态。

磁盘空间和删除多个快照

在建立快照前,全部的写操做都写入磁盘文件。可是有了快照以后,磁盘文件保持不变,而写操做写入delta文件,同时,若是保存内存状态的话,vmsn文件还要占用比该虚拟机稍大一些的空间。

在只有一个快照时,在删除快照时不须要额外的空间。由于要么直接删除快照文件,要么把快照文件和VMDK磁盘文件相合并。可是在有多个快照的状况时,效果就不同了。

假设要删除一个虚拟机的全部快照,该虚拟机有三个快照,snap一、snap2和snap3。首先,snap3的快照文件要被合并到snap2的快照文件中,致使snap2占用空间增长。而后,snap2被合并到snap1中,致使snap1占用的空间增长。最后,snap1合并到VMDK文件中,此时不会增长空间开销。在合并完成后,快照才会被删除。

一种替代的方式是依次删除快照,这样就不会增长所须要的空间,只是稍微繁琐一些。

删除快照所须要的时间

经过VI客户端删除快照时,VI的状态栏中显示的信息可能会产生误导。一般,状态栏会很快到达95%完成的状态,可是会在95%的状态等待较长的时间一直到合并完成。VirtualCenter对全部的任务都有15分钟的超时值,即便后台还在合并,可是过了15分钟后,VirtualCenter会报告该操做超时。

一种查看该任务是否完成的方式是经过VI客户端来浏览该虚拟机的datastore。若是该快照对应的delta文件不存在了,则说明该快照被删除了。

若是快照存在的时间比较长,那么快照文件就会变得比较大,所以在删除快照时就须要比较长的时间进行合并。合并的时间取决于虚拟机的繁忙程度,在关机的状态下合并的速度较快。而ESX服务器后端的磁盘子系统的繁忙程度也会影响合并的时间。

一个100GB的快照文件可能须要3-6个小时来合并到原来的VMDK文件中。而从ESX3.5开始,因为VMware修改了合并的算法,可能须要更长的时间来合并(参见VMware文档Consolidation of large or deeply nested snapshots)。这会影响虚拟机和ESX服务器的性能。所以,建议限制快照的保留时间,当不须要时即刻删除快照。

快照和metadata锁对ESX性能的影响

快照对ESX服务器以及虚拟机的性能影响体如今几个方面。但建立快照时,虚拟机的活动会暂时停顿一下,此时若是经过ping命令去检查虚拟机的状态,能够看到一些timeout的response。此外,建立快照会致使metadata的更新,为了不SCSI Reservations冲突会短期内对LUN加锁,从而致使在短暂的时间内,这个LUN将只能由一个ESX服务器进行排他性访问。

若是为虚拟机建立了快照,虚拟机在运行的状态中,该快照是活跃的。只要快照是活跃的,那么虚拟机的性能就会降低。由于ESX服务器对delta文件的写入方式不一样于VMDK文件,并且效率相对较低。delta文件每次以16MB的大小来增加,它会致使另外一种metadata锁。

最后,删除或者回滚快照都会建立一个metadata锁。此外,删除快照时可能会致使性能比较大的降低,虚拟机越忙越明显。为了不这个问题,快照的删除最好在非高峰时期。

 

 

 

大多数状况下,应该避免为同一台虚拟机建立多个快照;每次为系统建立新的快照,其运行速度都会变慢。每一个快照都会创建相应的delta磁盘文件,若是虚拟机须要读取多个delta文件,必然会增长系统的I/O负载。这个过程无疑会延长虚拟机的响应时间,而且产生额外的磁盘操做。
若是你只想保存一系列快照当中的最新版本,能够将它们整合为单一快照。这种方式能够帮助提高系统运行速度和管理效率。选择目标虚拟机,单击鼠标右键,以后选择整合。你能够在虚拟机和模板视图当中查询虚拟机是否须要整合,而且在列表当中显示全部须要进行整合的虚拟机。

相关文章
相关标签/搜索