我想全面了解虚拟机快照的工作原理。虽然我已经研究过这个主题,但我似乎找不到关于快照实际工作原理的“高级”概述。我的问题是:
示例场景:我有一台运行 KVM 的 Ubuntu 12.04 主机,其中有一个 Ubuntu 客户机。虚拟机为 RAW 格式。我使用以下virsh
命令对其进行快照:
- 生成的文件(快照)是否可以启动?或者仅仅是需要基础映像才可使用的更改数据?
- 如何恢复到之前的状态?
- 较长的快照链是否会降低虚拟机的性能?如果会,原因是什么?
- 如何管理/修剪快照?
答案1
- 快照是图像链的一部分,并且要求所有快照都可用。
- 你可以从快照启动,但你也必须保留所有先前的映像
- 快照链确实会降低性能。高负载的服务器虚拟机根本不应该使用快照运行
- 要管理快照,你只需尽量保持快照链尽可能短/扁平即可。
man qemu-img
有关技术细节 - 当您拍摄快照时,会创建一个新的空图像。当您从图像中读取一个块时,您实际上会命中链中上一个快照的指针(依此类推,直到命中一个数据块)。当您写入快照时,指针会被替换为实际数据块,并且快照图像会因该块而变大。
为了更好地理解,开始这里