AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 21615
Accepted
Matias Nino
Matias Nino
Asked: 2009-06-08 12:50:51 +0800 CST2009-06-08 12:50:51 +0800 CST 2009-06-08 12:50:51 +0800 CST

虚拟机快照如何工作?

  • 772

使用驱动器映像软件十多年后,我发现虚拟机可以在几秒钟内完成快照和恢复,而驱动器映像通常需要几个小时,这令人难以置信。

我可以对虚拟机进行快照,重新安装到不同的操作系统,然后进行恢复,并在几秒钟内以某种方式神奇地恢复我的旧虚拟机之前的状态。

这怎么可能发生?VM 主机实际上对 VM 做了什么使这成为可能?

virtualization
  • 5 5 个回答
  • 6017 Views

5 个回答

  • Voted
  1. Best Answer
    ipozgaj
    2009-06-08T13:05:01+08:002009-06-08T13:05:01+08:00

    创建快照时,对初始虚拟磁盘映像所做的所有更改实际上并未在映像本身上进行,而是写入新的(快照)磁盘文件。这个动作之所以如此之快,是因为不需要复制整个虚拟磁盘映像,因为它是按照写时复制的原理工作的(只是改变了,即将写入的块写入快照映像)。请注意,快照映像会随着您更改原始虚拟磁盘映像上的越来越多的数据而增长(保持在您拍摄快照时的状态)。它很可能比原始图像小得多,但在最坏的情况下,它的大小将完全相同(如果所有块都已更改)。

    您可以使用此新快照图像执行两项操作:

    1. 丢弃快照:非常快速的动作。虚拟机管理器只需删除快照映像文件并将控制权返回到原始磁盘映像或之前的一些快照
    2. 合并快照:虚拟机管理器将更改的块(即快照映像)与原始映像合并。此操作将需要时间,具体取决于原始图像中的块发生了多少变化。同样,最坏的情况是整个原始图像将被覆盖,以防原始图像中的所有块在创建快照后都已被写入。

    上述所有过程也适用于多个快照。在这种情况下,原始图像可能是一个快照,而下一个快照可能会引用该(第一个)快照上的块。通过这种方式,您可以拥有许多可以轻松丢弃或合并的快照。

    • 16
  2. kbyrd
    2009-06-08T13:08:59+08:002009-06-08T13:08:59+08:00

    通过快照,您的虚拟化软件必须跟踪四件事:CPU 状态、RAM、配置(VM 中有多少网卡?)和磁盘。我忽略了前三件事,因为它们不是大量数据,软件可以复制相对较小的数据结构并将它们存储在一个文件中。因此,只剩下磁盘快照来解释了。

    首先,虚拟机所看到的硬盘实际上只是主机文件系统上的一组文件。为了做快照,虚拟机软件在某个时间点获取虚拟机的磁盘,保存它,打开一个新的空磁盘文件,并在每次后续磁盘访问时执行写时复制方案。

    假设您的磁盘文件是 BigVM.disk。您快照,现在您的 VM 软件将您的磁盘重命名为 BigVM-s1.disk,然后创建一个新的空 BigVM.disk。当您的 VM 运行时,所有读取请求都通过 BigVM.disk。如果该文件没有您的 VM 需要的磁盘部分的条目,则返回 BigVM-s1.disk 中的数据。在写入时,数据将写入 BigVM.disk 而不是 BigVM-s1.disk。未来对同一扇区的读取将返回 BigVM.disk 中的数据,而不是 BigVM-s1.disk 中包含的原始快照。BigVM-s1.disk 包含快照时 VM 的硬盘状态,而 BigVM.disk 包含自该快照以来磁盘的所有差异。

    当您恢复到较旧的快照时会发生什么?VM 软件丢弃 BigVM.disk 的内容并重新开始,新的空 BigVM.disk 仍指向 BigVM-s1.disk。

    • 5
  3. Ian Kelling
    2009-06-08T13:04:24+08:002009-06-08T13:04:24+08:00

    它只写入从快照时更改的文件的差异,而不是完整的虚拟机磁盘。像 unix diff 和 patch 一样,除了一个更复杂的版本,它在二进制级别上进行差异并了解虚拟机的其他细节。

    • 2
  4. joshk0
    2009-06-08T13:04:54+08:002009-06-08T13:04:54+08:00

    至少在 VMware 快照中,快照基本上是给 VMX 的一个信号,用于启动磁盘写入和机器状态的新检查点。根据您的虚拟机是关闭还是打开,恢复快照只需简单地处理通过该检查点发生的所有事情。否则,VM 的所有磁盘扇区都将变为写入时复制,这意味着当您执行热快照还原时,它只需要重写自拍摄快照以来已更改的扇区。所以这就是它更快的原因。

    • 1
  5. Piyush Chordia
    2012-12-14T21:10:56+08:002012-12-14T21:10:56+08:00

    处理 VMware 快照及其内部的最佳解释 @ http://www.pcclm.com/2012/02/virtual-machine-snapshots-in-vmware.html

    • -1

相关问题

  • 有哪些不错的免费“虚拟机”应用程序?[关闭]

  • 虚拟机安全

  • 什么是最好的便携式虚拟机?[关闭]

  • 有人对 LeftHand 的 VSA SAN 有经验吗?[关闭]

  • 如何提高 Hyper-V 性能

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve