VMware的快照原理

天翼云开发者社区
• 阅读 25

本文分享自天翼云开发者社区《VMware的快照原理》,作者:m****n

VMware的快照是基于数据块的快照。快照也是以一个文件方式存在的,缺省位置和虚拟机在同一目录下,它是一个Delta文件。每一次的快照就会产生一个新的Delta文件,而以前的Delta文件就进入一个只读状态。并且它是以16MB的大小来进行增长的。 快照文件的最大大小是不可能超过原磁盘文件的大小。

快照的不同类型: 1.-delta.vmdk文件:这是当你对一个VM做一个快照时产生的差异文件,也就是一个redo-log文件。Delta文件是一个针对初始VMDK而产生变化的一个Bitmap。 2..vmsd文件:这个一个是用来存放关于快照的metadata和相关信息的文件。它是一个文本文件,存放一些诸如快照名,UID,磁盘文件名等等。它起始大小是0字节,直到做了第一个快照时才会改变大小。 3.*.vmsn文件:这是一个快照状态文件,它存放的是当你做快照时虚拟机的真实运行状态。它的大小据于你是否选择保留VM的内存作为快照的一部分相关。

命令行创建快照: vmware-cmd myvm1.vmx createsnapshot snap1 'before upgrade' 1 1". The options for quiesce and memory are either 1 for yes or 0 for no.

快照的删除或恢复: 当你删除一个VM的所有快照时,所有在快照时创建出来的Delta文件被融合回原来的VMDK文件,然后删除这些Delta文件。但当你只删除一个快照时,那么只有这个快照会融合回它的上一级快照。 当你恢复一个快照时,现有的磁盘和内存状态被丢弃,然后VM被带回到那个时间点的状态,而这个快照成为新的父级快照。父级快照不一定就是最新做的快照,它在快照管理器中被标注为“you are here”。 当你用vmware-cmd来做时,vmware-cmd removesnapshots会删除所有的快照,vmware-cmd revertsnapshot会复原到最近的快照。若你要删除或复原到某一个快照时,你不能用命令行而需要用VIC。 若你复原一个不包含内存状态的快照,当你将VM启动时,它将会应用前一个快照。

如何找到那些有快照的VM呢? 到/vmfs/volumes目录下: 运行 find –iname “-delta.vmdk” –mtime +7 –ls 可以找到在7天内没有改变的快照。运行 find –iname “-delta.vmdk可以找到所有的快照文件。

如何改变快照文件的缺省位置: 在VM的配置文件VMX中加一句: workingDir=”/vmfs/volumes/Snapvolume/snapshots/”。 在做Vomtion时,若你的快照文件不在共享存储位置或新ESX主机不能访问快照文件时,当迁移做完时,VM会崩溃掉。所以,建议在做Vmotion时,最好先把快照commit掉。

快照与磁盘空间的关系: 当一个VM只有一个快照时,当你删除或commit快照时,你不需要额外的空间。但当一个VM有多个快照时,当你删除所有快照时,你需要额外的空间。 假设你要删除一个VM的所有快照(snap1,snap2,snap3),首先,snap3将融合进snap2,这将导致snap2增长,接下来,snap2将融合进snap1,这会导致snap1增长。最后,snap1将融合进原来的VMDK,这不需要额外的空间。只有当VMDK文件融合操作完成时,快照才会被删除,所以当一个有20G大小快照的VM在做commit时潜在地需要额外的20G。

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Redis主从自动切换原理
Redis主从自动切换原理复制原理1:当一个从数据库启动时,会向主数据库发送sync命令,2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。4:从数据库
Stella981 Stella981
3年前
ElasticSearch 映射到 hdfs的快照
一、下载:https://artifacts.elastic.co/downloads/elasticsearchplugins/repositoryhdfs/repositoryhdfs5.4.0.zip二、安装./bin/elasticsearchplugininstallfile:///opt/elasticsearch5.
Wesley13 Wesley13
3年前
Java命令学习系列(二)——Jstack
jstack是java虚拟机自带的一种堆栈跟踪工具。功能jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。线程出现停顿的时候通过jstack来查看各个线程的调用堆
Stella981 Stella981
3年前
SQL如何使用快照恢复之前的数据
什么是快照数据库快照是SQLserver2005的一个新功能。给出的定义如下数据库快照是数据库的只读静态视图。在创建时每个数据库快照在事务上都与源数据库一致。在创建数据库快照时,源数据库通常会有打开的事务。在快照可以使用之前,打开的事务会回滚以使数据库快照在事务上取得一致。reg:!(https://oscimg.oschina.ne
Stella981 Stella981
3年前
Redis学习笔记(五)之持久化
RDB在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存中。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了。再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是
Easter79 Easter79
3年前
SQL如何使用快照恢复之前的数据
什么是快照数据库快照是SQLserver2005的一个新功能。给出的定义如下数据库快照是数据库的只读静态视图。在创建时每个数据库快照在事务上都与源数据库一致。在创建数据库快照时,源数据库通常会有打开的事务。在快照可以使用之前,打开的事务会回滚以使数据库快照在事务上取得一致。reg:!(https://oscimg.oschina.ne
Wesley13 Wesley13
3年前
Unity中制作游戏的快照游戏支持玩家拍快照
Unity中制作游戏的快照游戏支持玩家拍快照有些游戏支持玩家“拍快照”,也就是将游戏的精彩瞬间以图片的形式记录下来的功能。这个功能比较有趣,而且以后的用途也会很广,为此本节打算介绍:截取矩形区域内游戏视图,并将其显示在视图其它区域的方法。具体的操作步骤如下本文选自Unity游戏开发技巧集锦:(1)在Pro
Stella981 Stella981
3年前
Play源码深入之四:一次访问的后半生
在处理了我们应用的代码之后,就会再次进入Play框架的范围,我们就接着说下一个请求的下半生。在Controller中定义一系列的render方法:!屏幕快照2015073107.25.46AM(http://static.oschina.net/uploads/img/201508/27181244_wX0j.png)(https:/
基于快照的异步远程复制介绍
本文介绍了基于RBD快照的异步远程复制技术
快照技术对比学习
根据SNIA的定义,快照有全量快照(fullsnapshot)和增量快照(incrementalsnapshot)两种类型。
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
文章
740
粉丝
16
获赞
40