首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >创建快照只要几秒,它到底复制了什么

创建快照只要几秒,它到底复制了什么

原创
作者头像
PC电脑医生
发布于 2026-09-22 16:35:18
发布于 2026-09-22 16:35:18
1460
举报

装好系统、配置好环境,在 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 删除。

目录
  • 快照到底做了什么
  • 读取的时候怎么找到数据
  • 多层快照是一条链
  • 磁盘为什么会越来越大
  • 删除快照时发生了什么
  • 快照不是备份
    • 差别在哪
    • 一个具体的后果
  • 哪些操作会让快照"爆掉"
  • 一个实用原则
  • 还有个和内存相关的选项
  • 一句总结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档