KVM虚拟化平台提供了大量的API函数供用户级开发人员使用,但很多人还不知道如何使用。 本文将举一些实例提供给大家,后面会陆续更新。
KVM API 函数原理
用户利用ioctl发送KVM API 与 /dev/kvm进行交互,从而可以操纵KVM
KVM API 函数功能
用户可以通过KVM API 获得KVM的内核信息,创建虚拟机,创建VCPU等等
KVM API 函数的文档位置
因为KVM已经纳入了linux标准发布路线里,所以KVM的API文档也相应的在linux源文件夹中。
以 linux-3.6 源文件为例,文档位置是 linux-3.6/Documentation/virtual/kvm
KVM API函数举例
KVM_GET_API_VERSION 获得 kvm api版本号,(目前是12)
KVM_CHECK_EXTENSIONS 获得 kvm对单台虚拟机最高支持的性能规格,(比如vcpu的个数)
KVM_CREATE_VM 创建虚拟机
KVM API函数使用示范
目标:使用KVM_GET_API_VERSION,和KVM_CHECK_EXTENSIONS查询KVM的参数设置
方法:使用ioctl 与/dev/kvm 交互,获得返回值
代码如下
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/kvm.h>
#define KVM_FILE "/dev/kvm"
int main()
{
int dev;
int state;
int cnt;
dev=open(KVM_FILE,O_RDWR|O_NDELAY);
cnt=ioctl(dev,KVM_GET_API_VERSION,0);
printf ("----KVM API version is--%d---\n",cnt);
cnt=ioctl(dev,KVM_CHECK_EXTENSION,KVM_CAP_MAX_VCPUS);
printf ("----KVM supporting guest MAX_VCPUS is %d---\n",cnt);
return 0;
}
Makefile:
all:get_version
编译,使用
make
./get_version
使用结果
我们可以知道 当前KVM api 版本时12,支持guest 最大VCPU个数是254个