快照备份容量会变化吗?解读虚拟机备份容量及快照原理
虚拟机备份容量及快照原理?
前几天和同事在讨论虚拟机的快照技术,讨论到快照备份的容量变化问题。
我同事认为首次快照备份后备份容量会随着虚拟机磁盘数据的容量增大而增大,但有一定界限。
我认为快照备份就像是WINDOWS的还原点一样,有完全快照和差异快照之分,快照备份容量是不会变化的,首次是做的快照是完全快照,而后面再做快照是差异快照,但备份量会和第一次的快照合并,而不是像我同事说的不做快照自动随虚拟机的容量变化而变化。
请问虚拟机的快照到底是怎么样的?(问题来自社区会员@王文泽)
doc:
当你创建一个虚拟机快照时,这是一个特定的文件。它也是redo-log日志。delta文件是在基础VMDK(虚拟机磁盘)上的变更位图,因此,它不能增长到比VMDK还大。为虚拟机创建每一个快照时,都会创建一个delta文件。当快照被删除或在快照管理里被恢复时,这些文件将自动删除。
这些文件用于存储关于快照的元数据和信息。这个文件是文本格式的,里面包括诸如快照显示名称、UID(编号)和磁盘文件名等信息。在你没创建虚拟机快照之前,这个文件的初始大小为0字节。这样说来,只要进行快照,这个文件就会增大和持续更新。
在快照被移开后,这个文件不能被完全清除。一旦你删除了个快照,它将仍然在文件里为每个快照遗留位置,不过仅增加编号并在“Consolidate Helper”里放置名称,这可能是用来整合备份*.vmsn file。
这是快照状态文件,里面存储的是使用快照时,一台虚拟机精确的运行状态。这个文件大还是小取决于你选择保留这台虚拟机的存储作为快照的一部分。如果你选择保留虚拟机的存储,那么,这个文件将比较大,然后分配给虚拟机最大化的RAM。
这个文件类似于VMware暂停状态文件.vmss。虚拟机每个快照都将创建一个.vmss文件;当移动快照时,这些文件自动删除。
大多数情况下,应该避免为同一台虚拟机创建多个快照;每次为系统创建新的快照,其运行速度都会变慢。每个快照都会建立相应的delta磁盘文件,如果虚拟机需要读取多个delta文件,必然会增加系统的I/O负载。这个过程无疑会延长虚拟机的响应时间,并且产生额外的磁盘操作。
如果你只想保存一系列快照当中的最新版本,可以将它们整合为单一快照。这种方式可以帮助提升系统运行速度和管理效率。选择目标虚拟机,单击鼠标右键,之后选择整合。你可以在虚拟机和模板视图当中查询虚拟机是否需要整合,并且在列表当中显示所有需要进行整合的虚拟机。
EndlessRain:
目前快照技术,包括vmware在内很多都是沿用了一个古老的技术原理,就是——Copy on write,因此题主可以根据这个术语找到很多前辈们留下的文献。
在说你的问题,宏观来看,快照底层运作和类型确实有关系,而快照有涵盖了两种类型,就是楼主提到的:完整类型与差异化类型,后者也被称指针类型。这两者明显却别在于你触发快照指令后,紧接着底层如何运作。
如果是Full类型,往常会执行一次完整的数据Copy,如果是差异化,会执行一次创建指针动作。这个议题宏观来讲我也把传统的存储阵列涵盖进来,而不是仅仅vmware。原因在于,你和你同事知识背景可能来自不同的技术领域,这是以往造成代沟主要原因。继续,在存储上很多产品快照是可以挂载给主机的,Full模式快照可以直接读取数据,而指针则需要重新指向一次,指向到原数据磁盘。在主机验证上,读取Full模式速度理论更快较于指针型快照。Full模式快照创建则需要更长时间。
其次,一旦创建快照后,无论何种类型,底层都会有一个Bitmap,负责数据索引与指针。新增量的数据块进来后会放入到指针文件,然后指针文件会一直变大。原数据不在变化。这个周期直到管理员下一个操作。如果增量数据被要求访问,索引会重新引导,从原数据指向指针。理论来说,做过快照的卷性能应该更低。
然后,管理员最后通常会有两个选项,如果是删除快照,那么系统会把指针增量数据合并到原数据,使其成为一个完整的卷。如果选择还原,那么指针文件所有增量数据将被干掉。原数据指针索引也将清除,直到下一笔新数据被写入,继续上面的往返周期的。
在存储世界还有个叫做“更新”的功能,就是把快照时间点更新为目前时间点,这个过程被触发后仅是更新指针。数据仍然是两份。
以上内容有很多我自己的理解,希望参考开局第一句,去找文献作为权威参考。
补充两点:
大多存储上,如果原卷/原数据崩了,Full模式快照应该不受影响,指针型则会随之失效。
其二,如果你在0.2秒触发了快照执行,而在1.0秒快照完成,那么快照应该是0.2秒的状态,不是1.0秒。
有难题?欢迎点击阅读原文,到社区提问或与大家交流
长按二维码关注公众号