KVM虚拟化研究记录

最近想换工作,接下来几年想做虚拟化,于最决定研究一下KVM的内核源码,当作学习笔记吧,作个备份。


此次研究基于Linux内核版本2.6.35.13进行源码分析。


1. kvm 内核英文文档翻译。kvm内核文档比较少,就三个 api.txt cpuid.txt mmu.txt,依次进行。

gavin@~ linux-2.6.35.13$ ls ./Documentation/kvm/
api.txt  cpuid.txt  mmu.txt


api.txt翻译笔记:

描述:

KVM模块在linux中的表现形式为/dev/kvm设备结点。

KVM API是一组ioctl的的集合,这些api用于控制vm, ioctl集合主要分为三类: (System ioctls, VM ioctls, VCPU ioctls).


A System ioctls: 用于查询/设置整个kvm子系统的全局属性。此外也也可以用于创建VM.

B    VM ioctls: 用于查询/设置影响虚拟机的属性。例如: 内存布局。此外也可以用于创建虚拟的CPU(VCPU).

   只有相同的进程(地址空间)VM ioctls才能创建虚拟机。

C   VCPU ioctls:用于查询/设置那个用于控制单个虚拟CPU操作的属性。

只有相同的线程的VCPU ioctls才能创建虚拟CPU


文件描述符

KVM API 围绕文件描述符。open("/dev/kvm")获取kvm句柄,这个句柄可以用于进行System ioctls操作。通过该句柄发生一个KVM_CREATE_VM ioctls可以创建一个vm文件描述符,通过该描述符可以使用VM ioctls。通过这个vm文件描述发起一起KVM_CREATE_VCPU ioctls可以创建一个虚拟的CPU,并返回一个文件描述符,通过这个文件描述符可以控制虚拟CPU,也包括运行客户机代码这样的重要任务。


一般来说,文件描述符可以在进程中通过fork和Unix域套接字的SCM_RIGHTS进行迁移,但是KVM明确表示不支持这些招数,他们不会危害到主机,但实际行为不能保证,因为KVM仅支持一个虚拟机一个进程,一个虚拟cpu一个线程。


扩展

感觉没啥用,跳过了。


API 描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值