(转)libvirt API的基本概念

本文摘自:http://blog.sina.com.cn/s/blog_da4487c40102v31i.html

libvirt对象

libvirt的对象向外展现了虚拟化环境的所有资源。libvirt API编程操纵的第一个对象总是virConnectPtr,它提供了到一个Hypervisor的连接。任何一个libvirt应用程序,都是从调用 virConnectOpen函数开始的,该函数的参数包含一个Hypervisor的URI,函数执行成功表示已连接到指定的Hypervisor,并返回一个代表该连接的virConnectPtr对象,通过这个对象,应用程序就可以管理它上面的域以及其它虚拟化资源。libvirt主要通过5个对象展现它的所有功能,对象之间的结构如图所示:

除了virConnectPtr对象外,virDomainPtr对象代表Hypervisor上的一个域;virNetworkPtr对象代表Hypervisor上的一个网络;virStorageVolPtr对象代表一个存储卷,它是可以供域使用的块存储设备;virStoragePoolPtr对象代表Hypervisor上的一个存储池,它为存储卷提供一个逻辑存储区域。

上述对象都有以下几种命名方法:

1)name,用户友好型的标识名,但不能保证名称在节点之间保持唯一性。

2)ID, 运行时的标识名,一般为一数字,由Hypervisor为当前活动对象指定的名称,只在对象存活期内有效。

3)UUID,一个16字节的唯一标识名,遵循RFC4122规范,可以确保名称在跨节点范围内的唯一性,并且能被长时间保持。

函数命名规范

libvirt库中的函数名称存在一些命名规则,主要有以下几种:

1)查找对象:[...LookupBy...]

根据对象的名称标识查找对象,如:

virDomainLookupByID

virDomainLookupByName

virDomainLookupByUUID

virDomainLookupByUUIDString

2)枚举对象数量 [virConnectList..., virConnectNumOf...]

枚举当前连接可用对象的数量,如:

virConnectListDomains

virConnectNumOfDomains

virConnectListNetworks

virConnectListStoragePools

3)获取对象信息 [...GetInfo]

提供对象的基本信息,如:

virNodeGetInfo

virDomainGetInfo

virStoragePoolGetInfo

virStorageVolGetInfo

4)访问对象 [...Get..., ...Set...]

查询或修改指定对象的数据,如:

virConnectGetType

virDomainGetMaxMemory

virDomainSetMemory

virDomainGetVcpus

virStoragePoolSetAutostart

virNetworkGetBridgeName

5)建立对象 [...Create, ...CreateXML]

建立并启动对象,可以通过XML描述信息建立对象,也可以通过对象指针建立对象,如:

virDomainCreate

virDomainCreateXML

virNetworkCreate

virNetworkCreateXML

6)停用对象 [...Destroy]

通过关闭、停止操作使对象失效,如:

virDomainDestroy

virNetworkDestroy

virStoragePoolDestroy

注意:有些函数返回一个对象vir*Ptr (如virDomainLookup)
,返回对象内存空间的释放需要调用对应的vir*Free函数(如virDomainFree释放一个virDomainPtr对象)。

原文地址:https://www.cnblogs.com/chy1000/p/8495856.html

时间: 2024-08-29 23:52:47

(转)libvirt API的基本概念的相关文章

通过python获取kvm虚拟机的监控信息(基于libvirt API)

通常在我们的云环境中,为了保证云平台中虚拟机的正常运行,基本都需要这样一个功能,就是收集虚拟机的监控数据,比如cpu的使用率.内存的使用率.磁盘io.网络io等基本信息.可以利用这些信息及时调整云平台环境中出现的一些问题,从而实现保证VM的正常运行. 说到KVM管理工具,首先应该想到的就是libvirt,因为目前对KVM使用最为广泛的管理工具(应用程序接口)就是libvirt.Libvirt本身构建于一种抽象的概念上,它为受支持的虚拟机监控程序实现常用功能提供通用的API.Libvirt提供了操

libvirt API管理hypervisors

发布一段C代码,用于连接指定的KVM宿主机器,获得该宿主机器的配置信息,以及该主机上所有的虚拟主机列表.状态及配置信息: #include <stdio.h>#include <stdlib.h>#include <libvirt/libvirt.h> void ListDom(virConnectPtr conn){    char **inactiveDom;    virDomainPtr *allDom;    int nInActiveDoms = virCo

基于C语言libvirt API简单小程序

libvirt API简单小程序 1.程序代码如下 #include<stdio.h> #include<libvirt/libvirt.h> int getDomainInfo(int id) { virConnectPtr conn = NULL; virDomainPtr dom = NULL; virDomainInfo info; conn = virConnectOpenReadOnly(NULL); if (conn == NULL) { fprintf(stderr

文件系统API的基本概念

文件系统API(File System API)模拟网络应用程序可以导航到的本地文件系统.你可以开发应用在一个沙盒的虚拟文件系统中读.写.创建以及索引文件. 该文件系统API与其他相关的API交互.它基于文件写入API(File Writer API),而后者又基于文件API(File API).每一个API都具有不同的功能.这些API对于网络应用而言是一个巨大的进化飞跃,使得它们能够缓存和处理大量级的数据. 关于这篇文档EDIT 这篇介绍讨论了文件系统API中的基本概念和术语.它将给出一个大致

Java 2D API - 1. 基本概念

Java 2D API扩展AWT包,对二维图形.文本及成像功能提供了支持,可用于开发复杂的界面.绘图软件和图像编辑器.Java 2D对象位于用户坐标空间(User coordinate space),当对象呈现在屏幕或打印机,用户空间坐标转换为设备空间坐标(device space coordinate).下面两个类对 Java 2D API十分重要: Graphics Graphics2D Java 2D API提供了如下功能: 为显示设备和打印机等提供了统一的渲染模型: 提供了大量的几何图元

Libvirt几个重要概念

节点(Node):就是物理机,上面可能运行着多个虚拟客户机.Hypervisor和domain 都运行在节点之上. 域(domain):就是虚拟机,一个客户机操作系统实例.实例.客户机操作系统.虚拟机,它们都是指向同一个概念. Hypervisor:也称虚拟机监控器(vmm)是虚拟化中的一个底层软件层,它可以虚拟化一个节点为,让其运行多个虚拟客户机. 关系图如下:

python libvirt api openAuth()

使用tcp连接libvirt服务,不适用密码 /etc/libvirt/libvirtd.conf auth_tcp="none" service libvirtd restart import libvirt conn = libvirt.open("qemu+tcp://localhost/system") print conn.getHostname() 使用tcp加密码连接libvirt auth_tcp="sasl" saslpassw

【翻译】Flink Table Api &amp; SQL —Streaming 概念 ——时间属性

本文翻译自官网: Time Attributes   https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/streaming/time_attributes.html Flink能够根据不同的时间概念处理流数据. Process time 是指正在执行相应操作的机器的系统时间(也称为“挂钟时间”). Event time 是指基于附在每行上的时间戳对流数据进行处理.时间戳可以在事件发生时进行编码. Inges

libvirt API非阻塞调用及相关的原理分析

后续在补上