虚拟化 VMware快照的工作原理

目录

 

快照概述

快照文件

*-delta.vmdk文件

*.vmsd文件

*.vmsn文件

创建快照

删除快照

删除一个快照

删除多个快照

删除快照所需要的时间

回滚到快照点状态

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

快照文件

快照限制


文章主体转自,调整了描述顺序。

https://www.cnblogs.com/qiaoyanlin/p/6820273.html

快照概述

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

快照文件

*-delta.vmdk文件

该文件就是前面我们所提到的快照文件,也可以理解为redo-log文件。在每创建一个快照时就会产生一个这样的文件。而在删除快照或回复到快照时间点状态时该文件会被删除。

*.vmsd文件

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

*.vmsn文件

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

创建快照

在创建快照前,所有的写操作都写入磁盘文件。但是有了快照之后,磁盘文件保持不变,而写操作写入delta文件,同时,如果保存内存状态的话,vmsn文件还要占用比该虚拟机稍大一些的空间。

快照的创建可以通过VMware VI客户端的Snapshot Manager来实现,或者通过ESX服务器的Service Console的命令行vmware-cmd来实现。无论虚拟机是在运行、关机还是挂起的状态,都可以创建快照。Snapshot可以通过VI客户端直接连接到ESX Server或者连接到VirtualCenter来管理。

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

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

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

删除快照

删除一个快照

如果只选择删除一个快照,那么这个快照的delta文件将和其父快照的delta文件进行合并。在只有一个快照时,在删除快照时不需要额外的空间。因为要么直接删除快照文件,要么把快照文件和VMDK磁盘文件相合并。

删除多个快照

当删除虚拟机的所有快照时,针对该虚拟机所创建的所有delta文件中的内容将会合并到原来的vmdk文件中,合并完成后再删除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服务器的性能。因此,建议限制快照的保留时间,当不需要时即刻删除快照。

 

回滚到快照点状态

如果选择回滚到某一个快照,那么当前的磁盘和内存状态将会被丢弃,而且虚拟机会转变到revert-to的状态。无论选择哪个快照进行回滚,该快照都会变成当前的父快照,就是说当前运行的虚拟机会在这个快照之下。因此,父快照不一定是最近所创建的快照(在没有回滚的情况下,父快照一般都是最近所创建的快照)。在Snapshot Manager中父快照之下一般有“You are here”的标记。

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

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

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

如果为虚拟机创建了快照,虚拟机在运行的状态中,该快照是活跃的。只要快照是活跃的,那么虚拟机的性能就会下降。因为ESX服务器对delta文件的写入方式不同于VMDK文件,而且效率相对较低。delta文件每次以16MB的大小来增长,它会导致另一种metadata锁。

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

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

 

 

快照文件

快照由存储在受支持的存储设备上的文件组成。“执行快照”操作会创建 .vmdk、-delta.vmdk、.vmsd 和 .vmsn 文件。默认情况下,第一个以及所有增量磁盘与基本 .vmdk 文件存储在一起。.vmsd 和 .vmsn 文件存储在虚拟机目录中。

增量磁盘文件

客户机操作系统可以写入的 .vmdk 文件。增量磁盘表示虚拟磁盘的当前状况和上次执行快照时存在的状况之间的差异。执行快照时,将保留虚拟磁盘的状况,从而阻止客户机操作系统写入,并会创建增量磁盘或子磁盘。

增量磁盘具有两个文件,即包含虚拟磁盘相关信息(例如几何结构和父子关系信息)的较小的描述符文件和包含原始数据的对应文件。

构成增量磁盘的文件称为子磁盘或重做日志。子磁盘为稀疏磁盘。稀疏磁盘使用写入时复制机制,其中虚拟磁盘不包含任何数据,直到通过写入操作将数据复制到磁盘。此优化可节省存储空间。粒度是稀疏磁盘使用写入时复制机制的度量单位。每个粒度均是一个包含虚拟磁盘数据的扇区块。默认大小为 128 个扇区或 64 KB。

平面文件

-flat.vmdk 文件,组成基本磁盘的两个文件之一。平面磁盘包含基本磁盘的原始数据。该文件在数据存储浏览器中不显示为单个文件。

数据库文件

.vmsd 文件,包含虚拟机的快照信息,并且是快照管理器的主要信息源。该文件包含行条目,这些条目定义了快照之间以及每个快照的子磁盘之间的关系。

内存文件

.vmsn 文件,包含虚拟机的活动状况。通过捕获虚拟机的内存状况,可恢复到已打开虚拟机状况。使用非内存快照,仅能恢复到已关闭虚拟机状况。创建内存快照需要的时间比创建非内存快照需要的时间长。ESX 主机将内存写入磁盘所需的时间与配置虚拟机使用的内存量有关。

执行快照操作会创建 .vmdk、-delta.vmdk、vmsd 和 vmsn 文件。

文件

描述

vmname-number.vmdk 和 vmname-number-delta.vmdk

快照文件,表示虚拟磁盘的当前状况和上次执行快照时存在的状况之间的差异。

文件名使用了语法 S1vm-000001.vmdk,其中 S1vm 为虚拟机的名称,六位数字 000001 基于目录中已存在的文件。该数字不考虑附加到虚拟机的磁盘数目。

vmname.vmsd

虚拟机快照信息的数据库和快照管理器的主要信息源。

vmname.Snapshotnumber.vmsn

执行快照时虚拟机的内存状况。文件名使用了语法 S1vm.snapshot1.vmsn,其中 S1vm 为虚拟机的名称,snapshot1 为第一个快照。

注:

不管如何选择内存,每次执行快照时都会创建 .vmsn 文件。不具有内存的 .vmsn 文件比具有内存的该文件小。

 

快照限制

快照可能会影响虚拟机性能,且不支持某些磁盘类型或使用总线共享配置的虚拟机。快照作为短期解决方案用于捕获时间点虚拟机状况很有用,但不适用于长期虚拟机备份。

  • VMware 不支持对裸磁盘、RDM 物理模式磁盘或在客户机中使用 iSCSI 启动器的客户机操作系统的快照。

  • 在执行快照之前必须关闭具有独立磁盘的虚拟机的电源。不支持具有独立磁盘的已打开电源或已挂起的虚拟机的快照。

  • PCI vSphere Direct Path I/O 设备不支持快照。

  • VMware 不支持为总线共享配置的虚拟机的快照。如果需要使用总线共享,则作为备用解决方案,请考虑在客户机操作系统中运行备份软件。如果虚拟机当前具有快照,并阻止您配置总线共享,请删除(整合)这些快照。

  • 快照提供备份解决方案可以使用的磁盘的时间点映像,但快照不是备份和恢复的可靠方法。如果包含虚拟机的文件丢失,则其快照文件也丢失。另外,大量快照将难于管理,占用大量磁盘空间,并且在出现硬件故障时不受保护。

  • 快照可能会对虚拟机的性能产生负面影响。性能降低基于快照或快照树保持原位的时间、树的深度以及执行快照后虚拟机及其客户机操作系统发生更改的程度。另外,还可能会看到打开虚拟机电源所花费的时间变长。不要永久从快照运行生产虚拟机。

  • 如果虚拟机具有的虚拟硬盘容量大于 2TB,则完成快照操作将远远需要更加长的时间。

 

参考

https://www.cnblogs.com/qiaoyanlin/p/6820273.html

https://docs.vmware.com/cn/VMware-vSphere/6.0/com.vmware.vsphere.vm_admin.doc/GUID-CA948C69-7F58-4519-AEB1-739545EA94E5.html

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山水牧羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值