1.3 KVM API使用实例
- QEMU与KVM的关系
KVM导出了一系列接口供用户态创建、配置、启动虚拟机,典型的用户态软件是QEMU。本质上来说,QEMU与KVM不必相互依赖。之所以将QEMU与KVM经常联系在一起,是因为KVM创立之初重用了QEMU的设备虚拟部分。
- 获取KVM子系统的文件描述符
首先通过打开“/dev/kvm”获取系统中KVM子系统的文件描述符。代码如下:
int kvmfd = open("/dev/kvm", O_RDWR);
- 获取KVM的版本号
为了保持应用层内核的统一,通过以下接口获取KVM的版本号,从而使应用层知道相关接口在内核是否有支持。
ioctl(kvmfd, KVM_GET_API_VERSION, NULL);
- 创建一个虚拟机
接着在kvmfd上调用以下接口创建一个虚拟机。
int vmfd = ioctl(kvmfd, KVM_CREATE_VM ,0);
返回值vmfd代表了虚拟机的文件描述符,即一个完整的虚拟机系统。可以通过vmfd控制虚拟机的VCPU、内存等。