How Vmware snapshots works
VMware中的快照是对VMDK在某个时间点的“拷贝”,这个“拷贝”并不是对VMDK文件的复制,而是保持磁盘文件和系统内存在该时间点的状态,以便在出现故障后虚拟机能够恢复到该时间点。如果对某个虚拟机创建了多个快照,那么就可以有多个可恢复的时间点。
当我们为虚拟机创建的快照时,当前可写的VMDK文件变成为只读状态,并且创建一个新文件(称之为快照文件)来保存变化的内容(使用in-file delta technology)。
在初始状态下,快照文件的大小为16MB,并随着虚拟机对磁盘文件的写操作而增长。快照文件按照16MB的大小进行增长以减少SCSI reservation冲突。当虚拟机需要修改原来的磁盘文件的数据块时,这些修改会被保存到快照文件中。当在快照文件中的已经修改过的数据块需要被再次修改时,这些修改将覆盖快照文件中的数据块,此时,快照文件大小不会改变。因此,快照文件的大小永远不会超过原来的VMDK文件的大小。
快照文件的变化频率取决于虚拟机应用的写的繁忙程度,例如对于Exchange和SQL等应用,快照文件变化比较快。多个快照的情况下,在创建新的快照时,之前的快照文件变成只读的状态。
不同类型的快照文件
*-delta.vmdk文件:该文件就是前面我们所提到的快照文件,也可以理解为redo-log文件。在每创建一个快照时就会产生一个这样的文件。而在删除快照或回复到快照时间点状态时该文件会被删除。
*.vmsd文件:该文件用于保存快照的metadata和其它信息。这是一个文本文件,保存了如快照显示名、UID(Unique Identifier)以及磁盘文件名等。在创建快照之前,它的大小是0字节。
*.vmsn文件:这是快照状态文件,用于保存创建快照时虚拟机的状态。这个文件的大小取决于创建快照时是否选择保存内存的状态。如果选择的话,那么这个文件会比分配给这个虚拟机的内存大小还要大几兆。
创建快照
快照的创建可以通过VMware VI客户端的Snapshot Manager来实现,或者通过ESX服务器的Service Console的命令行vmware-cmd来实现。无论虚拟机是在运行、关机还是挂起的状态,都可以创建快照。Snapshot可以通过VI客户端直接连接到ESX Server或者连接到VirtualCenter来管理。
删除快照或者回滚到快照点状态
当删除虚拟机的所有快照时,针对该虚拟机所创建的所有delta文件中的内容将会合并到原来的vmdk文件中,合并完成后再删除vmdk文件。如果只选择删除一个快照,那么这个快照的delta文件将和其父快照的delta文件进行合并。如果选择回滚到某一个快照,那么当前的磁盘和内存状态将会被丢弃,而且虚拟机会转变到revert-to的状态。无论选择哪个快照进行回滚,该快照都会变成当前的父快照,就是说当前运行的虚拟机会在这个快照之下。因此,父快照不一定是最近所创建的快照(在没有回滚的情况下,父快照一般都是最近所创建的快照)。在Snapshot Manager中父快照之下一般有“You are here”的标记。
如果选择回滚的快照不包含内存状态,那么该虚拟机将会被关机,在管理员启动该虚拟机时应用所选择的快照。如果包含内存状态的话,那么虚拟机会短暂的停顿一下,然后回复到快照时的磁盘和内存状态。
磁盘空间和删除多个快照
在创建快照前,所有的写操作都写入磁盘文件。但是有了快照之后,磁盘文件保持不变,而写操作写入delta文件,同时,如果保存内存状态的话,vmsn文件还要占用比该虚拟机稍大一些的空间。
在只有一个快照时,在删除快照时不需要额外的空间。因为要么直接删除快照文件,要么把快照文件和VMDK磁盘文件相合并。但是在有多个快照的情况时,效果就不一样了。
假设要删除一个虚拟机的所有快照,该虚拟机有三个快照,snap1、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锁。此外,删除快照时可能会导致性能比较大的下降,虚拟机越忙越明显。为了避免这个问题,快照的删除最好在非高峰时期。
How Vmware snapshots works的更多相关文章
- RAC的QA
RAC: Frequently Asked Questions [ID 220970.1] 修改时间 13-JAN-2011 类型 FAQ 状态 PUBLISHED Appli ...
- Debian上安装TightVNC Server
from:www.penlug.org/twiki/bin/view/Main/TightVNC Using VNC The tool vncserver allows you to run ad ...
- ISE-Backup Data Type
Cisco ISE allows you to back up data from the Primary PAN and from the Monitoring node. Back up can ...
- snapshots On Vmware
快照使用 编辑 如果你创建了多于一个的虚拟机快照,那么,你将有多个还原点可以用于恢复.当你创建了一个快照,那快照些现在可写的在那个点上就变成了只读的.使用in-file delta技术就能创建新文件记 ...
- 云与备份之(1):VMware虚机备份和恢复
本系列文章会介绍云与备份之间的关系,包括: (1)VMware 虚机备份和恢复 (2)KVM 虚机备份和恢复 (3)云与备份 (4)OpenStack 与备份 (5)公有云与备份 1. 与备份有关的V ...
- [转] Vmware vs Virtualbox vs KVM vs XEN: virtual machines performance comparison
http://www.ilsistemista.net/index.php/virtualization/1-virtual-machines-performance-comparison.html? ...
- vmware目录2
http://www.globalknowledge.com/training/course.asp?pageid=9&courseid=17880&country=United+St ...
- 很好的vmware目录
http://www.globalknowledge.com/training/course.asp?pageid=9&courseid=18023&country=United+St ...
- VMware Snapshot 工作原理
VMware中的快照是对VMDK在某个时间点的“拷贝”,这个“拷贝”并不是对VMDK文件的复制,而是保持磁盘文件和系统内存在该时间点的状态,以便在出现故障后虚拟机能够恢复到该时间点.如果对某个虚拟机创 ...
随机推荐
- asp.net 中用easyui中的treegird的简单使用
几乎每个‘数人头’项目中都会用到的功能,这里先记下来,以后直接到这里复制代码就行了,ASP.NET MVC中的使用 数据库用户表中的除了有个parentid父级ID外,我还多加了以个字段,parent ...
- 深入理解Linux内核-访问文件
文件的访问模式:1.规范模式:2.同步模式:3.内存映射模式:4.直接I\O模式5.异步模式: 内存映射模式:1.共享型:在线性区页上的任何写操作都会修改磁盘上的文件:而且这种修改对映射了同一文件的所 ...
- android 中毛玻璃效果的实现
最近在做一款叫叽叽的App(男银懂的),其中有一个功能需要对图片处理实现毛玻璃的特效 进过一番预研,找到了3中实现方案,其中各有优缺点: 1.如果系统的api在16以上,可以使用系统提供的方法直接处理 ...
- JAVA中INSTANCEOF关键字的用法总结
https://www.cnblogs.com/jay36/p/7519145.html https://www.cnblogs.com/zjxynq/p/5882756.html https://b ...
- lua -- handler
handler 将 Lua 对象及其方法包装为一个匿名函数. 格式: 函数 = handler(对象, 对象.方法) 在 quick-cocos2d-x 中,许多功能需要传入一个 Lua 函数做参数, ...
- elasticsearch 索引延迟 一致性问题等
https://www.elastic.co/guide/en/elasticsearch/guide/current/near-real-time.html https://www.elastic. ...
- Kudu:支持快速分析的新型Hadoop存储系统
Kudu 是 Cloudera 开源的新型列式存储系统,是 Apache Hadoop 生态圈的新成员之一( incubating ),专门为了对快速变化的数据进行快速的分析,填补了以往 Hadoop ...
- Git详解之Git分支
Git 分支 几乎每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作.在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的 ...
- Python实现归并排序
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/3/18 14:26 # @Author : baoshan # @Site ...
- [转载]生活在 Emacs 中
Brian Bilbrey2002 年 8 月 20 日发布 教程简介 本教程讲什么? Emacs 是一个流行的无模式文本编辑器,有许多强大的功能.本教程将教您使用 Emacs 的基础知识.为了让您很 ...