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
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1295131
Accepted
Betty Von Schmartenhausen
Betty Von Schmartenhausen
Asked: 2020-11-26 01:12:12 +0800 CST2020-11-26 01:12:12 +0800 CST 2020-11-26 01:12:12 +0800 CST

在 20.10 中无法验证 KVM/QEMU 快照的 XML

  • 772

尝试使用virsh snapshot-create-as --domain vm --name vm-snap --disk-only --diskspec "sdc,snapshot=internal,file=/var/lib/libvirt/images/vm.qcow2,,new"获取 KVM 快照时,出现错误:

error: XML document failed to validate against schema: 
 Unable to validate doc against /usr/share/libvirt/schemas/domainsnapshot.rng  
Extra element disks in interleave  
Element domainsnapshot failed to validate content

然而,XML 可以很好地验证使用visrh edit vm.xml,但这里有些东西没有验证。

  • 操作系统:Ubuntu 20.10
  • qemu: 1:5.0-5ubuntu9.1
  • libvirt:6.6.0-1ubuntu3.1
virtualization kvm qemu
  • 1 1 个回答
  • 728 Views

1 个回答

  • Voted
  1. Best Answer
    Christian Ehrhardt
    2020-11-26T23:18:38+08:002020-11-26T23:18:38+08:00

    仅供参考:可以通过 --print-xml 查看 XML

    $ virsh snapshot-create-as --domain h-test --name h-test-snap --diskspec "vda,snapshot=internal,file=/var/lib/uvtool/libvirt/images/h-test.qcow.snapshot" --print-xml
    <domainsnapshot>
      <name>h-test-snap</name>
      <disks>
        <disk name='vda' snapshot='internal'>
          <source file='/var/lib/uvtool/libvirt/images/h-test.qcow.snapshot'/>
        </disk>
      </disks>
    </domainsnapshot>
    

    比较其他版本

    • 多毛 + Focal + Bionic => 生成相同的 XML
    • 多毛 + Focal => 相同的验证错误
    • Bionic => 报告“不支持的配置”

    问题是“内部”意味着使用磁盘上的相同文件,这与执行包括 VM 状态的快照是互斥的。

    浏览一些旧用法,我发现以下轻微修改对我有用:

    $ virsh snapshot-create-as --domain h-test --name h-test-snap --disk-only --diskspec vda,file=/var/lib/uvtool/libvirt/images/h-test.qcow.snapshot
    

    您的案例没有指定--disk-only这意味着您还想保存客户记忆状态。但这不能在internal模式下完成。

    注意:我通常还会添加--atomic --quiesce

    如果我们比较我建议的工作命令的 XML,它不再有快照 = 内部。

    <domainsnapshot>
      <name>h-test-snap</name>
      <disks>
        <disk name='vda'>
          <source file='/var/lib/uvtool/libvirt/images/h-test.qcow.snapshot'/>
        </disk>
      </disks>
    </domainsnapshot>
    

    因此,要解决您的问题,请切换到仅外部+磁盘模式(如上所述),或者如果您真的想保存内存状态和磁盘,但同时需要控制文件(仍然与内部模式互斥)我想想,但不确定)你可以用--memspec它来让它知道把这些数据放在哪里。

    那将是这样的:

    $ virsh snapshot-create-as --domain h-test2 --name h-test-snap --diskspec vda,snapshot=external,file=/var/lib/uvtool/libvirt/images/h-test2.qcow.snapshot --memspec snapshot=external,file=/var/lib/uvtool/libvirt/images/h-test2.mem --print-xml
    <domainsnapshot>
      <name>h-test-snap</name>
      <memory snapshot='external' file='/var/lib/uvtool/libvirt/images/h-test2.mem'/>
      <disks>
        <disk name='vda' snapshot='external'>
          <source file='/var/lib/uvtool/libvirt/images/h-test2.qcow.snapshot'/>
        </disk>
      </disks>
    </domainsnapshot>
    

    注意:后者仍然非常少见,它还没有完全的 apparmor 支持,因此错过了及时为其添加规则。我为此提交了错误 1905674。在这种情况下,您需要为所有客人 ( /etc/apparmor.d/local/abstractions/libvirt-qemu) 或单个客人 ( /etc/apparmor.d/libvirt/libvirt-<uuid>)添加覆盖

    注意:顺便说一句,允许进行更多修改/实验 - 您可以在不触发实际快照的情况下检查 XML,例如:

    $ virt-xml-validate snap.xml domainsnapshot
    Relax-NG validity error : Extra element disks in interleave
    snap.xml:3: element disks: Relax-NG validity error : Element domainsnapshot failed to validate content
    snap.xml fails to validate
    

    注意:请注意,如果您的访客有多个磁盘并且您想手动添加 diskspec,那么您需要为所有磁盘显式添加它。否则无法创建 apparmor 规则,它将失败并显示:“Permission denied”

    注意:如果要从备份中排除某些磁盘,手册页说明:“要从外部快照中排除磁盘,请使用 --diskspec ,snapshot=no。” (不确定该上下文中的直通磁盘)

    • 1

相关问题

  • 什么原因会阻止“virsh -c qemu:///system console guest1”的控制台输出?

  • 如何在 Windows 7 中运行 Ubuntu?

  • 哪个更好:Win7 主机运行 VMware 和 Ubuntu 来宾,反之亦然?

  • 如何在 Ubuntu 中运行 Windows XP

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve