发明名称 一种内核虚拟机组织架构模式的实现方法
摘要 本发明主要是涉及内核虚拟机架构及其优化技术,以内核虚拟机为基础,对其软件结构进行优化,以达到降低虚拟机占用的主机资源,及提供更加高效的虚拟机运行方式的目的。尤其是为每个虚拟机进程创建的VPCS结构,为实现物理资源与逻辑资源的直接映射提供了良好的接口。同时因为硬件虚拟化技术需要硬件技术支持,而当前各大数据中心、公司所拥有的服务器中仍有很大一部分不支持硬件虚拟化技术,采用这种技术可以使虚拟化技术在这部分计算资源上发挥更大作用。因此,本发明具有良好的应用前景。
申请公布号 CN101968746B 申请公布日期 2016.03.02
申请号 CN201010271427.7 申请日期 2010.09.02
申请人 北京航空航天大学 发明人 董翰飞;郝沁汾;张铁刚;丁涛
分类号 G06F9/455(2006.01)I;G06F9/46(2006.01)I 主分类号 G06F9/455(2006.01)I
代理机构 北京慧泉知识产权代理有限公司 11232 代理人 王顺荣;唐爱华
主权项 一种内核虚拟机组织架构模式的实现方法,其特征如下:为每个正在运行的虚拟机进程创建一个VPCS结构,在创建运行中的虚拟机进程时分配并常驻内存;其具体步骤如下:步骤1:当一个虚拟机启动时,在创建虚拟机进程空间的进程描述符PD时增加相应的VPCS数据结构,或者指向VPCS结构的指针,并在后台运行的KVM Daemon中创建对应的VPCS队列,每一个进程对应一个VPCS数据结构;步骤2:VPCS数据结构用于记录虚拟机中的各种逻辑部件与真实的物理器件之间的映射关系,包括vCPU与pCPU的对应关系、虚拟机进程的进程地址空间与该进程所在物理地址空间的地址映射关系、逻辑硬盘分区在实际物理硬盘中的存储位置以及其他需要创建的逻辑外设与物理外设的对应关系;步骤3:虚拟机启动后,VPCS结构常驻内存,VMM通过管理VPCS结构来对多个虚拟机进行管理;步骤4:在执行用户态指令时,依照原有KVM的运行模式执行指令;即计算/访存指令直接在虚拟机内完成,无需陷入;步骤5:在执行需要内核态执行的指令时,虚拟机进程挂起,Linux操作系统调度KVM进行处理,并将所需处理结果直接送至虚拟机进程地址空间相应位置,继续调度虚拟机进程运行;步骤6:在执行块型I/O操作时,通过VPCS结构中的设备映射关系直接将虚拟机内存空间,即虚拟机进程的进程空间中相应数据经过VPCS转换后,得到其在物理地址空间中的位置,使得真实物理地址直接与设备进行交互;步骤7:在执行键盘或鼠标低频率中断操作时,依照中断模拟的方法进行设备映射,保证在虚拟机进程活动时,鼠标、键盘产生的中断被处理后直接反映在虚拟机进程的地址空间中;步骤8:在执行网络I/O高频率中断操作时,参照NAPI模式,为每块网络设备开辟buffer,在buffer充满之后,一次性将其移入对应虚拟机进程的相应地址空间中,即将相应数据块放入Guest OS的内核态地址空间中;实现一次中断处理多个数据包,以提高系统整体性能;如果buffer被填满,则由虚拟机操作系统将数据统一处理;如果虚拟机因为某种原因未能及时响应,将后续数据包存放至备用的buffer中,利用这种方法有效降低丢包率,进而解决可能出现的虚拟机响应不及时问题;修改内核虚拟机的运行模式,使VMM部分作为Daemon进程运行在Linux内核态,同时不同的虚拟机进程作为Linux的普通进程运行在用户态;其具体步骤如下:步骤A:KVM作为内核模块,将其定位为Daemon进程,使之常驻Linux内核;步骤B:QEMU作为I/O管理模块,运行在Linux用户态;步骤C:活动的虚拟机进程作为普通的Linux用户进程被Linux内核调度程序控制;步骤D:如果虚拟机进程需要Ring0级别权限,则更新VPCS,将控制权交给KVM;KVM调用QEMU处理I/O操作,或直接在内核态下执行特权指令;KVM按照自己所保持的VPCS链表中相应VPCS结构的映射关系,将结果直接写入某块物理内存,该块物理内存的地址由VPCS结构中描述的地址映射关系与虚拟机进程挂起前更新在VPCS中的逻辑地址空间共同决定。
地址 100191 北京市海淀区学院路37号北航