可以使用getCapabilities方法调用来获取关于虚拟化主机功能的信息。如果成功 它将返回一个包含XML功能的Python字符串(如下所述)。如果发生错误 则返回None。下面的代码演示了getCapabilities方法的使用:
import sys import libvirt conn None try: 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 XML print( 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特性 这些特性可以启用或禁用 以及它们的默认状态 以及它们是否可以开启或关闭。



