为什么快照会加速应用程序启动?

Why snapshot speed up Application startup?

我有三个问题。

  1. 为什么快照可以加快应用程序的启动速度?
  2. 如果一个Snapshot对应用程序启动有好处,为什么在其他流行的虚拟机中没有大规模使用?
  3. Snapshot 有副作用吗?

Why Snapshot speed up Application startup?

它实际上通过在启动后保存其 RAM 的快照并在将来使用时从该快照恢复来加速模拟器的启动。这样,每次启动模拟器时就不必 运行 启动过程(很慢,因为它是模拟的)。

If a snapshot is good for application to start up, Why is there no large-scale use in other popular VMs

制作快照时,原始虚拟磁盘将被冻结并创建一个快照文件。从那一刻起,本应对您的虚拟磁盘进行的所有更改都将写入快照文件。

如果您对新情况满意,可以提交快照。然后您的所有更改将应用​​到您的原始虚拟磁盘,并且可以删除快照文件。

否则,您可以将系统回滚到创建快照时的状态。

当您已经有快照时,也可以制作另一个快照。然后原始快照将被冻结,所有更改将转到第二个快照文件。您可以继续此操作以在历史记录中创建多个回滚点(正如您已经提到的)。

Are there any side effects of Snapshot?

随着时间的推移,快照文件会变大,尤其是当您对系统进行大量更改时,例如安装新软件包或删除大量文件时。如果您制作多个快照,它们甚至可以变得比原始磁盘更大。

从技术上讲,每个快照都可以增长到与原始虚拟硬盘驱动器相同的大小,因为如果需要,快照可以代表对虚拟硬盘驱动器每个块的更改;例如:100GB VM 的 1 个快照可能意味着需要大约 200GB 的存储空间,100GB VM 的 2 个快照可能意味着大约 300GB,3 个 100GB 的快照大约需要 400GB ......正如您所看到的,可能的存储空间可以快速增加.

It can even get worse

删除快照并将其提交回原始虚拟硬盘驱动器时,管理程序基本上会创建另一个快照 运行 on(通常这都是在用户不知情的情况下在后台完成的),然后将快照差异磁盘提交到另一个快照差异磁盘,或者如果只剩下一个快照,则将其提交到原始虚拟硬盘驱动器文件。提交后,后台快照将提交回虚拟硬盘驱动器文件。将所有快照提交回原始硬盘驱动器文件所需的时间取决于需要将多少块更改应用到虚拟硬盘驱动器。

此外,不要忘记 I/O 性能提升;来自快照差异磁盘的数据最终必须在提交期间写入 VM 的主虚拟硬盘驱动器;您在一个目录中的一个文件上读取数据,将其全部写入另一个文件,同时也在写入一个临时文件,所有这些都在同一个目录中;您将受到某种程度的 I/O 性能影响。这意味着该主机上的所有 运行ning VM 都会受到某种形式的性能影响。有道理吗?

所以一些准则:

  1. RTM – 阅读手册、最佳实践并遵循它们。
  2. VM 快照永远不是备份!他们只是迈出了第一步 备份和测试程序。
  3. 运行 长时间在快照上是个坏主意, 不要这样做!
  4. 硬件在最坏的时候出现故障;所以永远不要执行规则 1 – 3。
  5. 不要过度提交您的存储,记住这一点:VM 分配的存储 X 快照数量 = VM 的大约理论总大小。