感谢感动伴侣撑持本博客,欢迎配合探讨交流,由于能力和时间有限,错误之处在所不免,欢迎斧正!
如果转载,,请保存作者信息。
博客地点:
原博文地点:
官网包罗所有的api
API 概述
高级 libvirt API 可划分为 5 个 API 部分:虚拟机监控措施连接 API、域 API、网络 API、存储卷 API 以及存储池 API。
为给定虚拟机监控措施创建连接后会孕育产生所有 libvirt 通信(例如,清单 6 中所示的 open 挪用)。该连接为所有其他要使用的 API 供给路径。在 C API 中,该行为通过 virConnectOpen 挪用(以及其他进行认证的挪用)供给。这些函数的返回值是一个 virConnectPtr 东西,它代表到虚拟机监控措施的一个连接。该东西作为所有其他打点成果的根本,是对给定虚拟机监控措施进行并发 API 挪用所必须的语句。重要的并发挪用是 virConnectGetCapabilities 和 virNodeGetInfo,前者返回虚拟机监控措施和驱动措施的成果,后者获取有关节点的信息。该信息以 XML 文档的形式返回,这样通过解析便可了解可能产生的行为。
进入虚拟机监控措施后,便可以使用一组 API 挪用函数反复使用该虚拟机监控措施上的各类资源。virConnectListDomains API 挪用函数返回一列域标识符,它们代表该虚拟机监控措施上的勾当域。
API 实现大量针对域的函数。要探究或打点域,首先需要一个 virDomainPtr 东西。您可通过多种方法获得该句柄(使用 ID、UUID 或域名)。继续来垂青复域的例子,您可以使用该函数返回的索引表并挪用 virDomainLookupByID 来获取域句柄。有了该域句柄,就可以执行很多操纵,从探究域(virDomainGetUUID、virDomainGetInfo、virDomainGetXMLDesc、virDomainMemoryPeek)到控制域(virDomainCreate、virDomainSuspend、virDomainResume、virDomainDestroy 和 virDomainMigrate)。
您还可使用 API 打点并查抄虚拟网络和存储资源。成立了 API 模型之后,需要一个 virNetworkPtr 东西来打点并查抄虚拟网络,且需要一个 virStoragePoolPtr(存储池)或 virStorageVolPtr(卷)东西来打点这些资源。
API 还撑持一种事件机制,您可使用该机制注册为在特定事件(好比域的启动、中止、恢复或遏制)产生时获得通知。
(1)连接 Hypervisor 相关的API:以virConnect 开头的一系列函数。
只有与 Hypervisor 成立了连接之后,才华进行虚拟机打点操纵,所以连接 Hypervisor 的API是其他所有API使用的前提条件。与 Hypervisor 成立的连接是为其他API的执行供给了路径,是其他虚拟化打点成果的根本。
virConnectOpen 函数可以成立一个连接,其返回值是一个virConnectPtr 东西,该东西就代表到Hypervisor 的一个连接;如果连接堕落,则返回空值(NULL)。
virConnectOpenReadOnly 函数会成立一个只读的连接,在该连接上可以使用一些盘问的成果,而不使用创建、改削等成果。
virConnectOpenAuth 函数供给了更具认证成立的连接。
virConnectGetCapabilities 函数是返回对 Hypervisor 和驱动的成果的描述的 XML 格局的字符串。virConnectListDomains 函数返回一列域标识符,它们代表该 Hypervisor 上的勾当域。
virConnectGetHostname
virConnectGetMaxVcpus
virConnectGetType
virConnectGetVersion
virConnectGetLibVersion
virConnectGetURI
virConnectIsEncrypted
virConnectIsSecure
virConnectClose *连接
(2)域打点的 API:以virDomain 开头的一系列函数。
虚拟机的打点,最根基的本能机能就是对各个节点上的域的打点,故 libvirt API 中实现了很多针对域打点的函数。要打点域,首先就要获取virDomainPtr 这个域东西,然后才华对域进行操纵。有很多种方法来获取域东西,如 virDomainPtr
virDomainLookupByID (virConnectPtr conn, int id) 函数是按照域的 id 值到 conn
这个连接上去查找相应的域。,virDomainLookupByName、virDomainLookupByUUID 等函数分袂是按照域的名称和
UUID 去查找相应的域。在得到了某个域的东西后,就可以进行很多的操纵,可以是盘问域的信息
virDomainGetHostname
virDomainGetInfo
virDomainGetVcpus
virDomainGetVcpusFlags
virDomainGetCPUStats
也可以是控制域的生命周期,如:
virDomainCreate
virDomainSuspend
virDomainResume
virDomainDestroy
virDomainMigrate
创建虚拟机
virDomainDefineXML()
virFileReadAll() 该函数原型为intvirFileReadAll(const char *path, int
maxlen, char
**buf),成果是将参数“path”指定路径的文件内容读到一个缓冲区中,并将缓冲区地点记录在参数“*buf”中,而参数“maxlen”指定文件的最大长度。操作该API,我们可以将xml配置文件都到一个缓冲区中,以便利接下来的使用