libvirt笔记(三)获取信息方法

可以使用getCapabilities方法调用来获取关于虚拟化主机功能的信息。如果成功,它将返回一个包含XML功能的Python字符串(如下所述)。如果发生错误,则返回None。下面的代码演示了getCapabilities方法的使用:

import sys
​import libvirt
​
​conn = Nonetry:
​    conn = libvirt.open("qemu:///system")except libvirt.libvirtError as e:print(repr(e), file=sys.stderr)
​    exit(1)
​
​caps = conn.getCapabilities() # caps will be a string of XMLprint('Capabilities:\n'+caps)
​
​conn.close()
​exit(0)

功能XML格式提供有关主机虚拟化技术的信息。特别是,它描述了虚拟化主机、虚拟化驱动程序和虚拟化技术可以启动的客户机的功能。请注意,XML的功能可能(而且确实)根据所使用的libvirt驱动程序而变化。

<capabilities><host><cpu><arch>x86_64</arch></cpu><migration_features><live/><uri_transports><uri_transport>tcp</uri_transport></uri_transports></migration_features><topology><cells num='1'><cell id='0'><cpus num='2'><cpu id='0'/><cpu id='1'/></cpus></cell></cells></topology></host>
​
​ <guest><os_type>hvm</os_type><arch name='i686'><wordsize>32</wordsize><emulator>/usr/bin/qemu</emulator><machine>pc</machine><machine>isapc</machine><domain type='qemu'></domain><domain type='kvm'><emulator>/usr/bin/qemu-kvm</emulator></domain></arch><features><pae/><nonpae/><acpi default='on' toggle='yes'/><apic default='on' toggle='no'/></features></guest>
​
​ <guest><os_type>hvm</os_type><arch name='x86_64'><wordsize>64</wordsize><emulator>/usr/bin/qemu-system-x86_64</emulator><machine>pc</machine><machine>isapc</machine><domain type='qemu'></domain><domain type='kvm'><emulator>/usr/bin/qemu-kvm</emulator></domain></arch><features><acpi default='on' toggle='yes'/><apic default='on' toggle='no'/></features></guest>
​
​</capabilities>

在功能XML中,总是有/host子文档和零个或多个/guest子文档(虽然允许有零个guest子文档,但这意味着这个特定驱动程序的任何guest都不能在这个特定的主机上启动)。
/host子文档描述主机的能力。
“/host/uuid”为主机的uuid。如果SMBIOS UUID可用且有效,则派生自该UUID,或者可以在libvirtd.conf中使用自定义值重写该UUID。如果上述两个选项都没有正确设置,那么每次重新启动libvirtd时都会生成一个临时UUID。
/host/cpu子文档描述了主机cpu的能力。libvirt在决定是否可以在此特定机器上正确启动客户机时使用它,并且在动态迁移期间还会参考它,以确定目标机器是否提供了继续运行客户机所需的标志。
/host/cpu/arch是描述底层主机cpu架构所需的XML节点。在撰写本文时,所有libvirt驱动程序都通过uname(2)的输出来初始化它。
/host/cpu/features是一个可选的子文档,描述主机上的额外cpu特性。在撰写本文时,它仅被xen驱动程序用于报告支持向量机或vmx标志的存在或缺失,以及报告pae标志的存在或缺失。
/host/cpu/arch是描述底层主机cpu架构所需的XML节点。在撰写本文时,所有libvirt驱动程序都通过uname(2)的输出来初始化它。
/host/cpu/model是一个可选元素,用来描述与主机cpu最相似的cpu模型。libvirt当前知道的CPU模型列表在cpu_map.xml文件中。
/host/cpu/feature是0个或多个元素,这些元素描述的是/host/cpu/model中没有涵盖的主机cpu的额外cpu特性
/host/cpu/features是一个可选的子文档,描述主机上的额外cpu特性。在撰写本文时,它仅被xen驱动程序用于报告支持向量机或vmx标志的存在或缺失,以及报告pae标志的存在或缺失。
/host/migration_features是一个可选的子文档,描述这个驱动程序在这个主机上支持的迁移特性(如果有的话)。如果该子文档不存在,则不支持迁移。在撰写本文时,xen、qemu和esx驱动程序支持迁移。
如果驱动程序支持实时迁移,则存在/host/migration_features/live XML节点
/host/migration_features/ uri_transpors是一个可选的子文档,描述了替代的迁移连接机制。这些备用连接机制在多主机虚拟化系统上非常有用。例如,virsh migrate命令可能通过10.0.0.1连接到迁移的源,通过10.0.0.2连接到迁移的目标。然而,由于安全策略,迁移的源可能只允许通过192.168.0.0/24直接与迁移的目标通信。在这种情况下,使用备用迁移连接机制将允许迁移成功。在撰写本文时,xen驱动程序支持备用迁移机制“xenmigr”,而qemu驱动程序支持备用迁移机制“tcp”。请参阅关于迁移的文档了解更多信息。
/host/topology子文档描述主机的NUMA拓扑;每个NUMA节点由/host/topology/cells/cell表示,并描述该NUMA节点中有哪些cpu。如果主机是UMA(非numa)机器,则只有一个计算单元,所有cpu都在这个计算单元中。这是非常特定于硬件的,因此在不同的机器之间必然有所不同。
/host/secmodel是一个可选的子文档,描述在主机上使用的安全模型。/host/secmodel/model显示安全模型的名称,而/host/secmodel/doi显示解释域。有关安全性的更多信息,请参阅安全性部分。
每个/guest子文档描述了该主机驱动程序可以启动的一种客户机。这个描述包括guest(即i686)的体系结构以及提供给guest的ABI(即hvm、xen或uml)。
/guest/os_type是描述guest类型的必需元素。
arch是描述这种来宾类型的各种虚拟硬件方面的XML子文档的根。它有一个名为“name”的属性,可用于引用该子文档。
/guest/arch/wordsize是描述这个来宾类型每个单词使用多少位的必需元素。通常是32或64。
/guest/arch/emulator是一个可选元素,用于描述此来宾类型的模拟器的默认路径。请注意,对于需要备用二进制文件的来宾类型,可以使用/guest/arch/domain/emulator元素(将在下面描述)覆盖模拟器。
/guest/arch/loader是一个可选元素,用于描述此来宾类型的固件加载程序的默认路径。请注意,对于使用备用加载器的来宾类型,默认加载器路径可以被/guest/arch/domain/loader元素(如下所述)覆盖。目前,这只被xen驱动程序用于HVM来宾。
可以有零个或多个/guest/arch/machine元素描述此来宾模拟器可以模拟的默认机器类型。这些“机器”通常表示可以启动客户机的ABI或硬件接口。注意,对于提供备用机器类型的虚拟化技术,这些机器类型可以被/guest/arch/domain/machine元素覆盖(如下所述)。典型的值是“pc”和“isapc”,分别表示常规的基于PCI的pc和较旧的基于ISA的pc。
可以有零个或多个/guest/arch/域XML子树(尽管有零个/guest/arch/域XML子树,这个驱动程序就不能启动任何访客)。每个/guest/arch/域XML子树都有可选的仿真器、加载器和机器。元素覆盖上面指定的相应默认值。对于任何缺少的元素,都使用默认值。
/guest/features可选子文档描述了各种附加的guest特性,这些特性可以启用或禁用,以及它们的默认状态,以及它们是否可以开启或关闭。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值