
装好系统、配置好环境,在 VMware Workstation Pro 里创建一个快照。
几秒钟就完成了。
而那个虚拟磁盘有 40 个 G。
复制 40G 的数据不可能只要几秒。
所以它做的肯定不是复制。
它做的事情可以概括成一句话:把当前磁盘设为只读,之后的改动记到另一个地方去。
具体分三步。
第一步,把原始磁盘文件标记为只读。
这时候文件没有任何变化,还是原来那么大。
第二步,新建一个空文件。
这个新文件专门用来存放后续的所有写入。
第三步,改写的数据都进新文件,没被改过的数据仍然从原文件读。
所以创建快照这个动作本身,成本极低——它只是建了个空文件,加了一个"只读"标记。
这就是为什么几秒钟就能完成。
这个机制有个通用的名字,叫写时复制。
意思是:只在真正发生写入的时候,才把数据复制一份出来。
写的问题解决了,读的时候要多一步。
假设虚拟机要读某个数据块。
系统会先看新文件里有没有这一块。
有,说明这块被改过,直接读新文件。
没有,说明这块没动过,去原文件里读。
所以读取路径变成了一次判断加一次读取。
单个数据块的开销增加不多。
但如果快照叠了很多层,这个判断就要重复多次。
这是容易被忽略的一点。
再创建一个快照,会发生什么?
第一个增量文件被设为只读,再建一个新的空文件。
于是形成一个链条:原始磁盘 → 增量1 → 增量2 → 增量3。
每读一个数据块,系统要从最上层往下逐级查找。
哪一层找到了就停下。
如果数据在最底层——也就是从来没被改过——那就得把整条链查完。
结论很直接:链越长,读取越慢。
而且这个开销是所有读操作都要付的。
所以"多打几个快照更保险"这个想法,代价比看上去大。
第二个常见困惑是空间。
刚创建快照时,新文件是空的。
但随着虚拟机运行,新文件会持续增长。
因为虚拟机在不断地写。
系统日志、临时文件、浏览器缓存、自动更新——这些都会产生写入。
哪怕你什么都没做,只要虚拟机开着,就一直在写。
所以增量文件的大小,取决于快照存在期间产生了多少写入,而不是你手动改了多少东西。
挂了几天没关机的虚拟机,增量文件可能就有几个 G。
这一点需要记住:快照占用的空间,会随时间自己涨。
很多人以为删除快照就是删个文件。
实际不是。
系统要做的是把增量文件里的数据合并回上一层。
这个过程叫合并。
合并的代价取决于增量文件有多大。
如果它有几个 G,那就要搬运几个 G 的数据。
期间会占用大量磁盘读写和 CPU。
表现就是:虚拟机变卡,界面可能短暂无响应。
如果增量文件特别大,这个过程可能持续很久。
所以要避免的是一种操作习惯:打了很多快照,隔了很久才想起来清理。
累积的增量数据越多,一次性合并的代价越大。
这一点必须单独强调。
快照看起来像是在"保存状态",很容易被当成备份手段。
但它们解决的是不同的问题。
备份是独立的一份完整数据。
它放在别的地方,和原始数据没有依赖关系。
即使原始磁盘损坏,备份也能用来恢复。
而快照不是独立的。
它依赖原始磁盘,也依赖链上的每一个中间文件。
缺少任何一个,整条链就失效了。
如果存放虚拟机的硬盘出现物理故障,导致文件损坏——那么快照和原始磁盘会一起丢失。
因为它俩在同一个地方,而且是互相依赖的关系。
这种情况下快照帮不上任何忙。
所以要备份,就得把文件复制到另一块硬盘或者别的位置。
快照的价值在于快速回滚——比如装了个软件导致系统不稳定,回滚到快照点就行,不用重装。
它是效率工具,不是保险措施。
有一种情况值得提醒。
快照本质上是在磁盘文件层面工作的。
如果虚拟机里有程序绕过了虚拟机自己的磁盘驱动,直接操作磁盘——那快照机制就管不住它。
后果是磁盘内容和对快照的记录不一致。
这种情况下合并会出问题,甚至导致虚拟机无法启动。
另一个容易出问题的是磁盘空间不足。
快照增长需要空间。
如果宿主机的硬盘满了,写入就会失败——这时候虚拟机可能出现各种异常。
所以打快照之前,先确认宿主机上有足够余量。
把快照当成"临时的还原点",而不是长期存档。
合理的用法是这样:
核心是让快照的生命周期尽量短。
用完就合并,链条就不会变长,读取性能也不会持续下降。
这也是 VMware Workstation Pro 在快照管理界面里会提示快照数量和时间的原因——它在提醒你这条链已经不短了。
创建快照时,有一个选项是"包含内存状态"。
勾选它,快照会额外保存当前的内存内容。
好处是:恢复的时候,虚拟机会直接回到当时的运行状态——打开的程序还在,没保存的文档也还在。
不勾选的话,恢复后相当于从这个状态重新开机——系统是那个时间点的,但运行中的程序需要重新启动。
代价是空间。
内存有多大,这个文件就有多大。
如果分配了 8G 内存给虚拟机,那就要多占 8G 的空间。
另一个细节是:勾选内存状态时,创建快照需要暂停虚拟机一小会儿,因为要完整地保存内存内容。
而只保存磁盘状态的话,几乎不需要停顿。
所以选哪个,取决于你是想"回到那个运行瞬间"还是"回到那个系统状态"。
快照不是复制一份磁盘,而是把后续的修改单独记录下来。
原磁盘被设为只读,改动写进增量文件,读取时逐层查找。
这个设计让创建快照变得很快,也几乎不占额外空间。
但代价是:快照层数越多,读取越慢;存在时间越长,增量文件越大。
而删除快照需要合并数据,数据越多合并越慢。
最关键的一点是:快照和原始磁盘是互相依赖的关系,放在同一个地方。
所以它不能替代备份——它解决的是"快速回滚",备份解决的是"数据不会丢"。
在 VMware Workstation Pro 里用快照,把握住"短期、少量、及时合并"这三条,就能既享受到便利,又避开性能问题。
安装包地址:
https://www.ijinshan.com/software/vmwareworkstation.html?channel=4025
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。