发布一段C代码,用于连接指定的KVM宿主机器,获得该宿主机器的配置信息,以及该主机上所有的虚拟主机列表、状态及配置信息:
#include <stdio.h>
#include <stdlib.h>
#include <libvirt/libvirt.h>
void ListDom(virConnectPtr conn)
{
char **inactiveDom;
virDomainPtr *allDom;
int nInActiveDoms = virConnectNumOfDefinedDomains(conn);
allDom = malloc(sizeof(virDomainPtr)* nInActiveDoms);
int i = 0;
char str[200];
virDomainInfo t;
if(nInActiveDoms != 0)
{
printf("inactive num: %d\n",nInActiveDoms);
inactiveDom = malloc(sizeof(char*) * (nInActiveDoms));
nInActiveDoms = virConnectListDefinedDomains(conn , inactiveDom , nInActiveDoms);
printf("numOfInactiveDom*************:%d\n", nInActiveDoms);
for(i=0 ; i<nInActiveDoms; i++)
{
printf("name:%s\n",inactiveDom[i]);
allDom[i] = virDomainLookupByName(conn , inactiveDom[i]);
virDomainGetUUIDString(allDom[i],str);
printf("uuid:%s | os:%s\n",str,virDomainGetOSType(allDom[i]));
virDomainGetInfo(allDom[i],&t);
printf("HostName:%s\n",virDomainGetName(allDom[i]));
printf("state:%d|maxmem:%d|memused:%d|cpunum:%d|cputime:%ld\n",t.state,t.maxMem,t.memory,t.nrVirtCpu,t.cpuTime);
}
}
}
void ListActiveDom(virConnectPtr conn)
{
int numOfActiveDom = virConnectNumOfDomains(conn);
int activeDom[numOfActiveDom];
virDomainPtr *allDomains;
virDomainInfo t;
int i ;
char str[200];
allDomains = malloc(sizeof(virDomainPtr)* numOfActiveDom);
numOfActiveDom = virConnectListDomains(conn , activeDom , numOfActiveDom);
printf("Active Dom: \n");
for(i=0 ; i<numOfActiveDom ; i++){
printf("id:%d\n",activeDom[i]);
allDomains[i] = virDomainLookupByID(conn ,activeDom[i]); //ͨ¹ýidÈ¡Domain
virDomainGetUUIDString(allDomains[i],str);
printf("uuid:%s | os:%s\n",str,virDomainGetOSType(allDomains[i]));
printf("HostName:%s\n",virDomainGetName(allDomains[i]));
virDomainGetInfo(allDomains[i],&t);
printf("state:%d|maxmem:%d|memused:%d|cpunum:%d|cputime:%ld\n",t.state,t.maxMem,t.memory,t.nrVirtCpu,t.cpuTime);
}
}
int main(int argc, char *argv[])
{
virConnectPtr conn;
char* caps;
virNodeInfo nodeinfo;
char str[200];
char *struuid[200];
int max = 0;
int i = 0;
virNodeMemoryStats *pMem;
int pN[100];
while(1)
{
printf("Input KVM Host:>");
gets(str);
printf("\n");
if(strcmp(str,"quit") == 0)
{
printf("Bye-Bye\n");
exit(0);
}
conn = virConnectOpen(str);
if (conn == NULL) {
fprintf(stderr, "Failed to open connection to qemu:///system\n");
continue;
}
caps = virConnectGetCapabilities(conn);
fprintf(stdout, "Capabilities:\n%s\n", caps);
free(caps);
printf("HostName: %s\n",virConnectGetHostname(conn));
fprintf(stdout, "Virtualization type: %s\n", virConnectGetType(conn));
virNodeGetInfo(conn, &nodeinfo);
fprintf(stdout, "Model: %s\n", nodeinfo.model);
fprintf(stdout, "Memory size: %lukb\n", nodeinfo.memory);
fprintf(stdout, "Number of CPUs: %u\n", nodeinfo.cpus);
fprintf(stdout, "MHz of CPUs: %u\n", nodeinfo.mhz);
fprintf(stdout, "Number of NUMA nodes: %u\n", nodeinfo.nodes);
fprintf(stdout, "Number of CPU sockets: %u\n", nodeinfo.sockets);
fprintf(stdout, "Number of CPU cores per socket: %u\n", nodeinfo.cores);
fprintf(stdout, "Number of CPU threads per core: %u\n", nodeinfo.threads);
/* printf("Sysinfor :[%s]\n",virConnectGetSysinfo(conn,0));
pMem = malloc(sizeof(virNodeMemoryStats)* 100);
virNodeGetMemoryStats(conn,VIR_NODE_MEMORY_STATS_ALL_CELLS,pMem,pN,0);
for(i = 0; i < 10; i++)
{
printf("MEM STAT\n%s - %ld\n",pMem[i].field,pMem[i].value);
}*/
ListDom(conn);
ListActiveDom(conn);
virConnectClose(conn);
}
return 0;
}
执行效果如下:
[root@kvm T]# ./t
Input KVM Host:>qemu+ssh:///system
分享到:
相关推荐
基于KVM_QEMU与Libvirt的虚拟化资源池构建,
Libvirt 库是一种实现 Linux 虚拟化功能的 Linux® API,它支持各种虚拟机监控程序,包括 Xen 和 KVM,以及 QEMU 和用于其他操作系统的一些虚拟产品。现在许多开源项目如:virt-manager和virt-install采用libvirt做...
KVM Qemu Libvirt之间的关系
kvm虚拟化环境安装配置,特别对libvirt升级过程中错误进行说明,网络bridge方式的配置
内核级虚拟化技术KVM(Kernel-based Virtual Machine)和管理工具libvirt 对kvm&libvirt的一个介绍ppt 课程作业所用
Linux运维-运维课程-kvm虚拟化部署实践(上)-09libvirt介绍.mp4
KVM虚拟化需要的配置文件,包含/etc/libvirt/qemu/xml.example /etc/libvirt/qemu/networks/yzy_net.xml /usr/local/bin/clone /var/lib/libvirt/images/First_set.yzy
虚拟化环境qemu 与libvirt的解析
KVM 全称是基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux的一个内核模块,该内核模块使得...一个工具及接口,作为较通用的服务器虚拟化软件,它支持Xen,VMware ESXi/GSX,当然,还有QEMU/KVM。 3
信创(飞腾+kylin)虚拟化层适配,目标:在飞腾+kylin的服务器上通过libvirt创建kvm虚拟机,其中,libvirt 5.5.0、 QEMU 4.0.1
它依托于CPU虚拟化指令集,性能、安全性、兼容性、稳定性表现很好,每个虚拟化操作系统表现为单个系统进程,与Linux安全模块selinux安全模块很好结合; 官方网站为http://www.linux-kvm.org/page/Main_Page 二、KVM...
首先回顾虚拟化,然后使用Python介绍特定于libvirt的概念,包括虚拟化操作系统和网络、连接、存储池以及事件和错误处理。本文最后全面介绍了域、网络、设备、网络过滤、存储、节点设备等XML模式定义。libvirtAPI涵盖...
四、 通KVM虚拟化包部署 1、 关闭防火墙和selinux 1.1关闭防火墙 1.2关闭selinux 2、 安装KVM/QEMU组件 3、 启动并设置开机启动 4、 检查KVM/QEMU是否正常运行 5、 查看kvm模块是否加载 6、 确认KVM/QEMU组件 7...
libvirt-0.9.7,一个很老的版本,希望有人用到。...Libvirt是用于管理虚拟化平台的开源的API,后台程序和管理工具。它可以用于管理KVM、Xen、VMware ESX,QEMU和其他虚拟化技术。这些API在云计算的解决方案中广泛使用
1虚拟化技术学习目标mp4 2虚拟化技术分类资源提供角度mp4 3点拟化技术分关虚拟化实现方式角度mp4 4传统虚拟机与容器对比_mp4 5 hypervisor管理装工具介绍mp4 6EMU介绍mp4 7KvM介个绍mp4 8 QEMUKVN介绍_mp4 9 libvirt...
用于虚拟化的 Libvirt API Libvirt 提供了一个可移植的、长期稳定的 C API,用于管理许多操作系统提供的虚拟化技术。 它包括对 QEMU、KVM、Xen、LXC、bhyve、Virtuozzo、VMware vCenter 和 ESX、VMware Desktop、...
libvirt开发基础资料(Foundations of Libvirt Development) 完整版
VM Dashboard是基于Web的前端,用于基于libvirt的KVM虚拟机。 有关Ubuntu和CentOS的设置说明,请访问 软件新手? 可以在上查看屏幕截图
一、虚拟化简介 二、硬件虚拟化确认 三、 系统优化 四、安装虚拟包 1、 挂载系统光盘 2、 配置光盘yum源 3、 关闭防火墙和selinux,如果不关闭可造成虚拟机只能被宿主ssh登录 3.1关闭防火墙 3.2关闭selinux 4、 ...
1、这里安装一些虚拟化的组件 yum -y install kvm python-virtinst libvirt bridge-utils virt-manager qemu-kvm-tools virt-viewer virt-v2v libguestfs-tools-c 2、对kvm进行如下如下配置: vim /etc/libvirt/...