C+libvirt获取KVM存储池信息

来源:互联网 发布:键盘按键替换软件 编辑:程序博客网 时间:2024/06/06 11:04

     分享一段代码,可以获取指定虚拟化宿主机器上的存储池信息,如:存储池名称、存储池容量、存储池状态、存储池可用、总计以及已使用容量,代码如下:

 

#include <stdio.h>#include <stdlib.h>#include <libvirt/libvirt.h>int main(int argc, char *argv[]){virConnectPtr conn;conn = virConnectOpen("qemu:///system");if (conn == NULL) {fprintf(stderr, "Failed to open connection to qemu:///system\n");}virStoragePoolPtr *pPoolList;int i;int nAllPoolNum = virConnectNumOfStoragePools(conn);int nDefinePoolNum = virConnectNumOfDefinedStoragePools(conn);char **PoolName = (char **)malloc(sizeof(char*) * (nAllPoolNum));virConnectListStoragePools(conn,PoolName,nAllPoolNum);for(i = 0; i < nAllPoolNum; i++){printf("PoolName:[%s]\n",PoolName[i]);virStoragePoolPtr pPool = malloc(sizeof(virStoragePoolPtr));pPool = virStoragePoolLookupByName(conn,PoolName[i]);virStoragePoolInfoPtr pinfor= malloc(sizeof(virStoragePoolInfoPtr));virStoragePoolGetInfo(pPool,pinfor);printf("[%d][%ld][%ld][%ld]\n",pinfor->state,pinfor->capacity,pinfor->allocation,pinfor->available);}}

执行后的效果如下:

[root@kvm poolstatus]# ./t PoolName:[default][2][52844687360][26866851840][25977835520]PoolName:[poolB][2][485150105600][107614916608][377535188992]



原创粉丝点击