写点什么

VMware 的快照原理

  • 2025-01-10
    北京
  • 本文字数:1230 字

    阅读完需:约 4 分钟

本文分享自天翼云开发者社区《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。

用户头像

还未添加个人签名 2022-02-22 加入

天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。

评论

发布
暂无评论
VMware的快照原理_vmware_天翼云开发者社区_InfoQ写作社区