为什么VM快照影响性能?

我在其中一篇VMware知识库文章中看到,快照将直接影响VM的性能。

但我的团队不断问我快照如何影响性能。

我想给他们坚定的理由背后的快照是性能杀手。

任何人都可以解释一下关于快照如何影响性能的一些理论? 仅仅是因为硬盘的磁盘I / O速度会很慢?

    创build快照时,原始磁盘映像将以一致状态“冻结”,并且从此以后的所有写入访问将转到新的差异映像。 更糟糕的是,正如这里和这里所解释的那样,差异图像具有更改日志的forms,logging了自从创build快照以来对文件所做的每个更改。 这意味着,读取访问不仅要读取一个文件,还要读取所有不同的数据(原始数据加上对原始数据所做的每一个改变)。 级联快照时,数字会增加更多。

    在VM上创build快照时,将创build一个增量磁盘,操作系统将写入该文件而不是原始的VMDK。 这个文件被称为VM_Name-Delta.VMDK,但是如果系统需要在快照之前引用一个文件,它将引用VM_Name.VMDK来增加这个操作的I / O。 如果您拍摄多个快照,则指的是上一个快照的最后一个增量文件,而不是原始VMDK,从而增加了I / O。

    例。

    操作系统—>快照(文件A创build)—>(创build快照文件B)

    如果我需要参考文件A,它将通过3个VMDK来查找。

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

    创build一个文件,列出在快照过程中创build的所有文件

    据我所知,VMWare正在使用写入时复制逻辑来实现其快照。 因此,当你创build一个虚拟机时,每个在虚拟机上完成的操作(例如几乎所有的运行时)都会导致一些虚拟机被复制,直到整个虚拟机被克隆为止。

    另一个性能问题是,如果工作副本还没有数据(因为没有任何更改导致副本),读取将不得不级联到原始副本。

    如果您希望将快照作为备份,但不能容忍性能下降,请考虑克隆VM。

    随着虚拟机上快照的大小和数量的增加,vmkernel内存储命令操作的数量也随之增加。 对于由虚拟机来宾OS发出的每个存储命令,可能需要多个存储命令操作来遍历整个快照链以读取最适当的数据块。

    从博客文章复制