任何一个libvirt应用程序

时间:2021-09-24 04:14:27

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东西)。