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 / 问题 / 1069493
Accepted
cm08
cm08
Asked: 2021-07-14 10:01:17 +0800 CST2021-07-14 10:01:17 +0800 CST 2021-07-14 10:01:17 +0800 CST

libvirt 存储的 RAM 快照在哪里?

  • 772

我的理解是,当我运行此命令来创建正在运行的域的快照时:

virsh snapshot-create-as myvm snapshot1

这不仅是在每个磁盘映像文件中创建的内部快照,而且 RAM 状态也保存在某处。因此,如果我稍后恢复到该快照,RAM 中的所有内容都将恢复到创建快照时。

我看到了 qcow2 磁盘映像中列出的快照,并且看到了为描述快照和域配置而创建的 XML 文件,但是RAM 的实际内容存储在哪里? 它是“永久的”吗?例如,如果我重新启动主机,如果我选择恢复到该快照,则域的已保存 RAM 状态仍然可用?

kvm-virtualization virsh
  • 1 1 个回答
  • 566 Views

1 个回答

  • Voted
  1. Best Answer
    shodanshok
    2021-07-14T12:30:33+08:002021-07-14T12:30:33+08:00

    qcow2 格式确实为虚拟机内存提供了永久的内部存储。在对运行中的 qcow2 支持的虚拟机进行快照时,其 RAM 状态被转储到用于存储的相同 qcow2 文件中。

    从官方 qcow2 页面:

    Each snapshot is described by a header:
    
      typedef struct QCowSnapshotHeader {
          /* header is 8 byte aligned */
          uint64_t l1_table_offset;
    
          uint32_t l1_size;
          uint16_t id_str_size;
          uint16_t name_size;
    
          uint32_t date_sec;
          uint32_t date_nsec;
    
          uint64_t vm_clock_nsec;
    
          uint32_t vm_state_size;
          uint32_t extra_data_size; /* for extension */
          /* extra data follows */
          /* id_str follows */
          /* name follows  */
      } QCowSnapshotHeader;
    

    这进一步解释了:

    vm_state_size给出作为该快照的一部分保存的虚拟机状态的大小。状态保存到原始 L1 表的位置,直接在图像标题之后。


    另一方面,在拍摄原始图像文件的快照时会发生什么(即:不使用 qcow2)?Libvirt 将这种快照称为外部快照(将其与 qcow2 文件的内部快照进行比较),因为会生成一个新的 qcow2 文件并将其链接到原始(现在是只读的)原始文件。然后,Libvirt 将虚拟机状态(即:其 RAM 内容)保存在特定文件中,通常位于/var/lib/libvirt/. 最终创建元数据 XML 文件以将转储文件“粘合”到覆盖文件中保存的磁盘状态。

    Libvirt 对外部快照的支持不是很强大;例如(如果事情最近没有改变)你可以用一个命令创建一个外部快照,但你需要多个复杂的命令来删除/恢复它。同时,对于生产工作负载,RedHat 官方推荐使用外部快照,因为它们比内部快照的长链更健壮和更快(并且他们出售的 RHEV 将外部快照的复杂性隐藏在用户之外)。

    • 1

相关问题

  • Xen 与 KVM 的性能对比

  • 什么是bridge_fd?

  • 如何在 kvm-linux 中登录除 ssh、vnc 之外的控制台

  • Linux 内核虚拟机

  • Vista 上的 VNC

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +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