关于Linux虚拟化技术KVM的科普
虚拟化技术应用越来越广泛,虚拟化技术需求越来越强劲。KVM、XEN、Docker等比较热门,尤其是KVM技术越来越受欢迎。
基于此背景,了解一下KVM+QEMU就有点必要了。
从网上收集了一些资料进行科普,由于篇幅太长,分开如下:
《关于Linux虚拟化技术KVM的科普 科普一(先用起来!)》
《关于Linux虚拟化技术KVM的科普 科普二(KVM虚拟机代码揭秘)》
《关于Linux虚拟化技术KVM的科普 科普三(From OenHan)》
《关于Linux虚拟化技术KVM的科普 科普四(From humjb_1983)》
《关于Linux虚拟化技术KVM的科普 科普五(From 世民谈云计算)》
《KVM架构与原理详解》
《KVM架构与原理详解》是一篇简洁明了介绍KVM的文章,有框架图、工作原理描述等。
KVM架构,分两部分:位于内核的kvm模块,负责虚拟机创建,虚拟内存的分配,VCPU寄存器的读写以及VCPU的运行;用户空间的QEMU,用于模拟虚拟机的用户空间组建,提供I/O设备模型,访问外设的途径。

kvm模块让Linux主机成为一个虚拟机监视器(VMM),并且在原有的Linux两种执行模式基础上,新增加了客户模式。客户模式拥有自己的内核模式和用户模式。
因此在虚拟机运行时,有三种模式:
客户模式:执行非I/O的客户代码,虚拟机运行在这个模式下。
用户模式:代表用户执行I/O指令,QEMU运行在这个模式下。
内核模式:实现客户模式的切换,处理因为I/O或者其他指令引起的从客户模式退出(VM_EXIT)。kvm模块运行在这个模式下。
kvm模型中,每一个Guest OS都是作为一个标准的Linux进程,都可以使用Linux进程管理命令管理。
KVM工作原理:用户模式的QEMU通过ioctl进入内核模式,kvm模块为虚拟机创建虚拟内存,虚拟CPU后执行VMLAUCH指令进入客户模式。加载Guest OS并执行。如果Guest OS发生外部中断或者影子页表却也之类的情况,会暂停Guest OS的执行,退出客户模式进行异常处理,执行客户代码。如果发生I/O事件或者信号队列有信号到达,就会进入用户模式处理。

对比Xen和KVM:Linux虚拟化技术选择,关于Xen和KVM的对比,可以看出未来的趋势还是KVM。
关于Linux虚拟化技术KVM的科普的更多相关文章
- 关于Linux虚拟化技术KVM的科普 科普三(From OenHan)
http://oenhan.com/archives,包括<KVM源代码分析1:基本工作原理>.<KVM源代码分析2:虚拟机的创建与运行>.<KVM源代码分析3:CPU虚 ...
- 关于Linux虚拟化技术KVM的科普 科普一(先用起来!)
是骡子是马是拉出来溜溜,通过<KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机>跑一遍,就会对KVM.QEMU-KVM有个大概的认识了. qemu-kvm已经不单独存在,qemu加上 ...
- 关于Linux虚拟化技术KVM的科普 科普四(From humjb_1983)
另一组关于KVM的分析文档,虚拟化相关概念.KVM基本原理和架构一-概念和术语.KVM基本原理和架构二-基本原理.KVM基本原理及架构三-CPU虚拟化.KVM基本原理及架构四-内存虚拟化.KVM基本原 ...
- 关于Linux虚拟化技术KVM的科普 科普五(From 世民谈云计算)
另一位大神写到KVM文章,KVM 介绍(1):简介及安装.KVM 介绍(2):CPU 和内存虚拟化.KVM 介绍(3):I/O 全虚拟化和准虚拟化 [KVM I/O QEMU Full-Virtual ...
- 关于Linux虚拟化技术KVM的科普 科普二(KVM虚拟机代码揭秘)
代码分析文章<KVM虚拟机代码揭秘--QEMU代码结构分析>.<KVM虚拟机代码揭秘--中断虚拟化>.<KVM虚拟机代码揭秘--设备IO虚拟化>.<KVM虚拟 ...
- Linux虚拟化技术KVM、QEMU与libvirt的关系(转)
说明:个人理解,KVM是内核虚拟化技术,而内核是不能使用在界面上使用的,那么此时QEMU提供了用户级别的使用界面,相互辅助.当然,单独使用QEMU也是可以实现一整套虚拟机,不过QEMU+KVM基本是标 ...
- Linux的桌面虚拟化技术KVM(五)——virsh常用命令
Linux的桌面虚拟化技术KVM(一)——新建KVM虚拟机 Linux的桌面虚拟化技术KVM(二)——远程桌面管理 Linux的桌面虚拟化技术KVM(三)——KVM虚拟机克隆和快照 Linux的桌面虚 ...
- Linux的桌面虚拟化技术KVM(四)——虚拟机镜像格式对比与转换
Linux的桌面虚拟化技术KVM(一)——新建KVM虚拟机 Linux的桌面虚拟化技术KVM(二)——远程桌面管理 Linux的桌面虚拟化技术KVM(三)——KVM虚拟机克隆和快照 (1).常用镜像格 ...
- Linux的桌面虚拟化技术KVM(三)——KVM虚拟机克隆和快照
Linux的桌面虚拟化技术KVM(一)——新建KVM虚拟机 Linux的桌面虚拟化技术KVM(二)——远程桌面管理 (1).KVM虚拟机克隆 KVM虚拟克隆命令virt-clone [选项] 常用选项 ...
随机推荐
- vi/vim下看十六进制文件
:%!xxd --将当前文本转换为16进制格式. 查看内容是对应的.你可以后面看到对应的字符内容 :%!od --将当前文本转换为16进制格式. :%!xxd -c 12--将当前文本转换为16进制格 ...
- HDFS APPEND性能测试
hbase在写入数据之前会先写hlog,hlog目前是sequencefile格式,采用append的方式往里追加数据.之前团队的同学测试关闭hlog会一定程序上提升写hbase的稳定性.而在我之前的 ...
- GetMemory那一题的理解
#include "stdafx.h" #include <iostream> void GetMemory(char *p,int num) { p = (char* ...
- Understanding the Objective-C Runtime
Wednesday, January 20, 2010 Understanding the Objective-C Runtime The Objective-C Runtime is one of ...
- RecyclerView 与 Scrollview 搭配使用的两个坑
RecyclerView & Scrollview & wrap_content RecyclerView wrap_content 用android.support.v4.widge ...
- BuautifulSoup4库详解
1.BeautifulSoup4库简介 What is beautifulsoup ? 答:一个可以用来从HTML 和 XML中提取数据的网页解析库,支持多种解析器(代替正则的复杂用法) 2.安装 p ...
- 从前端开发看HTTP协议的应用
一.Chrome Developer Network Tab Cheome Developer作为现在前端开发者最常用的开发调试工具,其具有前端可以涉及到的各方面的强大功能,为我们的开发和定位问题提供 ...
- Postgresql 启动could not create listen socket for "localhost"错误的解决
新装的postgresql在第一次启动时可能会遇到错误,日志中的记录是: could not create listen socket for "localhost" 到/etc/ ...
- ubuntu10.04 安装oracle server 版 笔记
1:从oracle 官网下载oracle 10g ,然后解压出一个database文件夹. 2 :创建RedHat的版本声明文件[默认ubuntu无法通过oracle 的检查] 在/etc/redha ...
- 晒stlink以及stm8“开发板”
先上图:( ̄▽ ̄)" 单层板+几根飞线,之前做jlink-ob做过孔整怕了,画pcb的时候尽量朝单层画的 外壳用sw建模,并3d打印 引出了swim for stm8单总线调试接口 以及sw ...