KVM简介 指导老师:孟宁 学生:卢鹏
目录 1 系统搭建 2 相关背景原理 3 源码分析
目录 1 系统搭建 2 相关背景原理 3 源码分析
关于kvm kvm是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。 是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的linux [全虚拟化] 解决方案。 它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko 或 kvm-AMD.ko)。 kvm还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。 kvm能在不改变linux或windows镜像的情况下同时运行多个虚拟机, 在主流的linux内核,如2.6.20以上的内核均包含了kvm核心。
基本知识 qemu 全称Quick Emulator。是独立虚拟软件,能独立运行虚拟机(根本不需要kvm)。kqemu是该软件的加速软件。kvm并不需要qemu进行虚拟处理,只是需要它的上层管理界面进行虚拟机控制。虚拟机依旧是由kvm驱动。
安装准备 查看你的硬件是否支持虚拟化。 命令: egrep '(vmx|svm)' /proc/cpuinfo 要有 vmx 或 svm 的标识才行。总的说来,AMD在虚拟化方面作得更好一些。 使用intel cpu的还需要进入bios进行设置
安装kvm 创建虚拟镜像 命令(先cd 到你要保存镜像的位置): kvm-img create xxx.img 2G 安装虚拟机系统 kvm -drive file=xxxx.img -cdrom /path/to/boot-media.iso -boot d -m 512
目录 1 系统搭建 2 相关背景原理 3 源码分析
KVM模型结构 如上图所示,客户模式即是guest,它自身有自己的用户模式和内核模式;guest是在host中是作为一个用户态进程存在的,这个进程就是qemu,qemu本身就是一个虚拟化程序,只是纯软件虚拟化效率很低,它被KVM进行改造后,作为KVM的前端存在,用来进行创建进程或者IO交互等;而KVM Driver则是Linux内核模式,它提供KVM fd给qemu调用,用来进行cpu虚拟化,内存虚拟化等。Qemu通KVM提供的LibKvm应用程序接口,通过ioctl系统调用创建和运行虚拟机。KVM Driver使得整个Linux成为一个虚拟机监控器,负责接收qemu模拟效率很低的命令
KVM模型结构
KVM工作原理 上图是一个执行过程图,首先启动一个虚拟化管理软件qemu,开始启动一个虚拟机,通过ioctl等系统调用向内核中申请指定的资源,搭建好虚拟环境,启动虚拟机内的系统,虚拟机内的系统向内核反馈相关资源申请处理,如果是io请求,则提交给用户模式下的qemu处理,非IO请求则将处理结果反馈给客户模式。
目录 1 系统搭建 2 相关背景原理 3 源码分析
代码调用 13
学习计划 KVM的两大模块:KVM和qemu qemu对x86平台指令的模拟 KVM对qemu提供请求的API KVM对资源的管理、虚拟设备到物理设别的映射,I/O控制机制 14