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個