virtual-machine - 为什么快照加速应用程序启动?
问题描述
我有三个问题。
- 为什么快照加速应用程序启动?
- 如果 Snapshot 对应用程序启动有好处,为什么在其他流行的 VM 中没有大规模使用?
- 快照有副作用吗?
解决方案
为什么使用快照加速应用程序启动?
它实际上通过在启动后保存其 RAM 的快照并在将来使用时从该快照恢复来加速模拟器的启动。这样,每次启动模拟器时,它就不必运行引导过程(这很慢,因为它是模拟的)。
如果快照对应用程序启动有好处,为什么在其他流行的虚拟机中没有大规模使用
制作快照时,原始虚拟磁盘将被冻结并创建快照文件。从那一刻起,所有对虚拟磁盘所做的更改都将写入快照文件。
如果您对新情况感到满意,您可以提交快照。然后,您的所有更改都将应用于您的原始虚拟磁盘,并且可以删除快照文件。
否则,您可以将系统回滚到创建快照时的状态。
当您已经有快照时,也可以制作另一个快照。然后原始快照将被冻结,所有更改都将转到第二个快照文件。您可以继续此操作以在历史记录中创建多个回滚点(正如您已经提到的)。
快照有副作用吗?
随着时间的推移,快照文件会增长,尤其是当您对系统进行大量更改时,例如安装新软件包或删除大量文件。如果您制作多个快照,它们甚至会变得比原始磁盘更大。
从技术上讲,每个快照都可以增长到与原始虚拟硬盘驱动器相同的大小,因为如果需要,快照可以表示虚拟硬盘驱动器每个块的更改;例如:100GB VM 的 1 个快照可能意味着最多需要大约 200GB 的存储空间,100GB VM 的 2 个快照可能意味着大约需要 300GB,3 个 100GB 的快照大约需要 400GB……正如您所见,可能的存储空间可以快速增加.
它甚至会变得更糟
当删除快照并将其提交回原始虚拟硬盘时,管理程序基本上会创建另一个快照以在其上运行(通常这一切都是在用户不知情的情况下在后台完成的),然后将快照差异磁盘提交到另一个快照差异磁盘,或者如果只剩下一个快照,则将其提交到原始虚拟硬盘驱动器文件。一旦提交后台快照,然后提交回虚拟硬盘驱动器文件。将所有快照提交回原始硬盘驱动器文件所需的时间取决于需要对虚拟硬盘驱动器应用多少块更改。
另外不要忘记 I/O 性能命中;来自快照差异磁盘的数据最终必须在提交期间写入 VM 的主虚拟硬盘驱动器;您在目录中的一个文件上读取数据,将其全部写入另一个文件,同时也在写入一个临时文件,所有这些都在同一个目录中;您将受到某种程度的 I/O 性能影响。这意味着该主机上所有正在运行的虚拟机都会受到某种形式的性能影响。有道理吗?
所以一些指导方针:
- RTM – 阅读手册、最佳实践并遵循它们。
- 虚拟机快照永远不是备份!它们只是备份和测试程序中的一步。
- 长时间在快照上运行是个坏主意,不要这样做!
- 硬件在最坏的时候出现故障;所以永远不要执行规则 1-3。
- 不要过度提交您的存储,记住这一点:VM 分配的存储 X 快照数量 = VM 的大约理论总大小。
推荐阅读
- eclipselink - EclipseLink MOXy - DynamicType 是 maxOccurs 大于 1
- javascript - 在每行之后将 div 添加到表中
- html - 如何将数据从角度 6 传递到 Nodejs?
- java - 如何在没有语言错误的情况下将字符串转换为uri?
- sql - 从 SQL Server 中 JSON 中的数组获取值
- c - 具有运算符优先级的宏函数是否显示异常结果?
- python - 日期操作周期
- java - Jersey/REST:在不重复代码的情况下将请求委托给不同的子资源?
- utf-8 - 转换 UTF-8 iso-8859 字节 - String.to_charlist
- reactjs - 我的 browserHistory 和 react-router 有错误