虚拟化的快照分为内存快照和存储快照。
1,内存快照生成还是很耗时,因为他是真的全部保存到硬盘里。当然会有一些零页过滤和压缩,但实际中4G内存生成一个2-3G的文件是很常见的,比较特殊的是VM刚开机时零页比较多有可能会少一点。内存快照只记录增量加索引是不管用,设想一下,你把虚拟机关机,作为Base的内存数据已经丢失了,只凭几K的增量怎么恢复4G的数据呢?
2,存储快照,是通过记录增量,一般会有两个文件,一个原先文件叫父镜像,另一个记录的是增量修改叫子镜像。所以做快照差不多只是新增一个空文件的工作量。删除的话就是删除这个文件。比较特殊的两个快照之间的删除,由于一个快照是另外一个快照的父镜像,所以删除前其实做了一次镜像的合并,这个当然比较慢。
快照多了会不会有影响?内存快照没有一点影响,存储快照会有影响,因为IO操作会先查子镜像再查父镜像,如果有10个快照,最差情况下他要查十次,有点类似cpu cache的读写。当然像cache一样,由于局部性原因一般情况下只读一次就够了。
补充一下vbox的实例:
上方的vhd是存储快照,基本上是一个空文件,所以只92KB,下面是内存快照,2G内存过滤零页只剩700多M了 |