• (转)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个对象展现它的所有功能,对象之间的结构如图所示:
    libvirt <wbr>API的基本概念
    除了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对象)。
     
  • 相关阅读:
    ES6躬行记(6)——Symbol
    ES6躬行记(5)——对象字面量的扩展
    ES6躬行记(4)——模板字面量
    ES6躬行记(3)——解构
    ES6躬行记(2)——扩展运算符和剩余参数
    构建LINUX下的入侵检测系统——LIDS 系统管理命令--vlock
    Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式
    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群
    Linux就这个范儿 第14章 身在江湖
    Linux就这个范儿 第13章 打通任督二脉
  • 原文地址:https://www.cnblogs.com/chy1000/p/8495856.html
Copyright © 2020-2023  润新知