为什么虚拟机快照会影响性能?

为什么虚拟机快照会影响性能?

我在一篇 VMware KB 文章中读到,快照将直接影响 VM 性能。

但我的团队一直问我快照如何影响性能。

我想向他们提供快照会降低性能这一说法的充分理由。

有人能从理论上解释一下快照实际上是如何影响性能的吗?仅仅是因为硬盘的磁盘 I/O 速率会很慢吗?

答案1

创建快照时,原始磁盘映像将“冻结”在一致状态,此后的所有写入访问都将转到新的差异映像。更糟糕的是,正如所解释的那样这里这里,差异映像具有更改日志的形式,记录自拍摄快照以来对文件所做的每个更改。这意味着,读取访问不仅要读取一个文件,还要读取所有差异数据(原始数据加上对原始数据所做的每个更改)。当您级联快照时,这个数字甚至会增加更多。

答案2

当您在虚拟机上创建快照时,这会创建一个 Delta 磁盘,操作系统会写入此文件而不是原始 VMDK。此文件称为 VM_Name-Delta.VMDK,但如果系统需要在快照之前引用文件,它将引用 VM_Name.VMDK,从而增加此操作的 I/O。如果您拍摄多个快照,则您引用的是最后一个快照的最后一个增量文件,而不是原始 VMDK,因此会增加 I/O。

例子。

操作系统 ---> 快照(文件 A 创建)--->(快照文件 B 创建)

如果我需要引用文件 A,它将查看 3 个 VMDK 来找到它。

此外,如果在快照时包含虚拟机的内存状态,则会再次创建一个增量文件,并在需要时引用原始内存文件。

创建一个文件,其中列出了快照过程中创建的所有文件

答案3

据我所知,VMWare 使用写时复制逻辑来实现快照。因此,当您创建快照时,在 VM 上执行的每个操作(例如,运行时的几乎所有操作)都会导致 VM 的一小部分被复制,直到整个 VM 基本上被克隆。

另一个性能问题是,如果工作副本还没有数据(因为没有任何改变导致复制),则读取必须级联到原始副本。

如果您希望将快照作为备份,但又不能容忍性能略有下降,请考虑克隆虚拟机。

答案4

虚拟机快照活动期间出现较高的共同停止 (%CSTP) 值

随着虚拟机上快照的大小和数量的增加,vmkernel 中的存储命令操作数量也会增加。对于虚拟机客户操作系统发出的每个存储命令,可能需要多个存储命令操作来遍历整个快照链以读取最合适的数据块。

相关内容