KVM,QEMU核心分析
现在的问题是学习虚拟化软件KVM相关实施原则、处理,的源代码的分析总结,,若有不对的地方,希望大家提出。
因为有一些代码结构图或者是架构图上传比較麻烦。所以博文都放在了自己的个人博客上。麻烦大家移步查看:
总入口:我的个人blog:http://www.royluo.org
文章列表(可直接点击进入)
依据这段时间对Linux KVM的研究。现将KVM的安装与Virtual OS的启动进行总结说明。【点击查看完整文章】
《kvm安装与启动过程说明》进行了通用桌面系统的虚拟机安装。
在本文中将介绍自行编译linux Kernel内核源代码,无桌面OS虚拟机安装和启动。为兴许内核调试打下基础。
传统OS环境中,CPU对内存的訪问都必须通过MMU将虚拟地址VA转换为物理地址PA从而得到真正的Physical Memory Access,即:VA->MMU->PA。
虚拟执行环境中因为Guest OS所使用的物理地址空间并非真正的物理内存,而是由VMM供其所使用一层虚拟的物理地址空间,为使MMU可以正确的转换虚实地址,Guest中的地址空间的转换和訪问都必须借助VMM来实现,这就是内存虚拟化的主要任务。即:GVA->MMU
Virtualation->HPA。【点击查看完整文章】
在嵌套虚拟环境(Nested Virtualization)下,执行在hypervisor上的Virtual Machine仍能够作为hypervisor去执行其他的Virutal Machine,而KVM也支持了这样的强大的特性。而在《KVM硬件辅助虚拟化之 EPT》一文中,我们具体分析了单层虚拟机并引入硬件辅助虚拟化EPT功能的环境下,Guest OS中的虚拟地址到真实物理地址的訪问方法,即在EPT页表的帮助下,通过二维的页表机制。终于实现GVA到HPA的转换。那么在多层嵌套虚拟机情况下,EPT又是怎样发挥作用的呢?【点击查看完整文章】
Xen, KVM等。
而本文的主要内容是介绍KVM。【点击查看完整文章】
前端网络流的建立; 2. 虚拟网卡的创建; 3. 网络I/O虚拟化 in Guest OS。
本篇主要讲述“前端网络流的建立”。
上文针对Qemu在前端网络流路径的建立方面做了具体的描写叙述,数据包从Host的物理网卡经过Host Linux内核中的Bridge, 经过Tap设备到达了Qemu的用户态空间。而Qemu是怎样把数据包送进Guest中的呢。这里必定要说到到虚拟网卡的建立。
当命令行传入nic相关參数时,Qemu就会解析网络相关的參数后进入虚拟网卡的创建流程。而在上文中提到对于全部-net类型的设备。都视作一个net client来对待。而在net client的建立之前,须要先创建Qemu内部的hub和相应的port,来关联每个net client,而对于每个创建的-net类型的设备都是能够能够配置其接口的vlan号。从而控制数据包在当中配置的vlan内部进行转发,从而做到多个虚拟设备之间的switch。【点击查看完整文章】
OS中进进出出的呢,本文就是重点讲述Guest OS的数据包的收发路径。当中涉及到一个重要的虚拟化技术。即I/O虚拟化.【点击查看完整文章】
1. Xen
2. KVM
3. VMware's VMI
4. IBM's System p
5. IBM's System z
6. User Mode Linux
7. lguest
8. IBM's legacy iSeries
而新的系统也在不断的涌现。各个系统在网络设备、块设备、console及其他设备驱动在新特性支持和性能优化方面存在着瓶颈。
为解决这些问题,Rusty Russell开发了virtio机制,其是一个在hypervisor之上的抽象API接口,让客户机知道自己执行在虚拟化环境中。从而与hypervisor依据virtio标准协作,从而在Guest中达到更好的性能(特别是I/O性能),关于virtio在其论文中如此定义:【点击查看完整文章】
bus类型总线上,并由virtio driver来驱动。
virtio设备对于Linux Kernel中的设备类型来说是作为pci设备被使用的,因此具有pci设备的全部属性,所以其也具备了PCI配置空间。【点击查看完整文章】
KVM上设备I/O虚拟化的性能问题长期存在,此时由Rusty Russell开发的virtio引起了开发人员们的注意并逐渐被KVM等虚拟化平台接纳并作为了其I/O虚拟化最基本的一个通用框架。
Virtio使用virtqueue来实现其I/O机制,每一个virtqueue就是一个承载大量数据的queue。
vring是virtqueue的详细实现方式。【点击查看完整文章】
userspace的第二次拷贝,这样的多次的数据拷贝和CPU特权级的切换对性能有相当大的影响。为加速virtio设备的I/O性能,VHOST通过driver的形式在Host Kernel中直接实现了virtio设备的模拟。通过在Host Kernel中对virtios设备的模拟执行同意Guest与Host Kernel直接进行数据交换,从而避免了用户空间的system call与数据拷贝的性能消耗。【点击查看完整文章】
。
KVM,QEMU核心分析的更多相关文章
- KVM+QEMU虚拟化概念
概念: KVM,即Kernel-basedvirtual machine,由redhat开发,是一种开源.免费的虚拟化技术.对企业来说,是一种可选的虚拟化解决方案. 定义:基于Linux内核的虚拟机 ...
- 深入浅出 kvm qemu libvirt
在所谓的kvm技术中,应用到的其实有2个东西:qemu+kvmkvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备:qemu是模拟IO设备(网卡,磁盘),kvm加上 ...
- KVM/QEMU/qemu-kvm/libvirt 概念全解
目录 目录 前言 KVM QEMU KVM 与 QEMU qemu-kvm Libvirt Libvirt 在 OpenStack 中的应用 前言 如果是刚开始接触虚拟机技术的话, 对上述的概念肯定会 ...
- gentoo在KVM+QEMU中安装笔记
gentoo是比较难安装的,本笔记主要是记录本次安装过程,以备参考. 1.首先,下载镜像,可以去国内各大镜像网站下载,我选择的是清华的镜像源:https://mirrors.tuna.tsinghua ...
- KVM/QEMU桥接网络设置及kvm资料
KVM/QEMU桥接网络设置 配置kvm的网络有2种方法.其一,默认方式为用户模式网络(Usermode Networking),数据包由NAT方式通过主机的接口进行传送.其二,使用桥接方式(Brid ...
- KVM+Qemu+Libvirt实战
上一篇的文章是为了给这一篇文件提供理论的基础,在这篇文章中我将带大家一起来实现在linux中虚拟出ubuntu的server版来 我们需要用KVM+Qemu+Libvirt来进行kvm全虚拟化,创建虚 ...
- ChIP-seq 核心分析 下游分析
http://icb.med.cornell.edu/wiki/index.php/Elementolab/ChIPseeqer_Tutorial [怪毛匠子 整理] ChIP-seq[核心分析 下游 ...
- kvm/qemu虚拟机桥接网络创建与配置
首先阐述一下kvm与qemu的关系,kvm是修改过的qemu,而且使用了硬件支持的仿真,仿真速度比QEMU快. 配置kvm/qemu的网络有两种方法.其一,默认方式为用户模式网络(Usermode N ...
- IDC机房KVM应用案例分析
IDC机房KVM应用案例分析 一.背景介绍 随着信息技术的发展,各行各业都在马不停蹄的开展着各自的信息化建设步伐.对于设计制造创新科技产品为运行主业的设计院而言,内部IT基础设备与机房管理结构的完善与 ...
随机推荐
- 7. 基于Express实现接口
安装Mongoose 创建model //server/models/goods.js var mongoose = require('mongoose');//优先到node_modeles里加载 ...
- 【Codeforces Round #450 (Div. 2) B】Position in Fraction
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 找循环节就好. ->其实可以不用找出来整个循环节. 有找到c就直接输出. 找到了循环节还没找到的话,直接输出无解. [代码] ...
- 【习题 6-2 UVA - 712】S-Trees
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] dfs模拟一下就好. 先预处理一个dfs. 搞出来x叶子节点它的值是什么 [代码] /* 1.Shoud it use long l ...
- Mrakdonw学习
转载请注明出处:http://blog.csdn.net/cym492224103 什么是Mrakdown 为什么使用Mrakdown 怎样Mrakdown 字体 删除线 字体大小 引用 代码行代码块 ...
- Java 服务端入门和进阶指南
作者:谢龙 链接:https://www.zhihu.com/question/29581524/answer/44872235 来源:知乎 著作权归作者所有,转载请联系作者获得授权. 现在互联网上资 ...
- Loadrunner--Analysis网页细分图
续LR实战之Discuz开源论坛项目,之前一直是创建虚拟用户脚本(Virtual User Generator)和场景(Controller),现在,终于到了LoadRunner性能测试结果分析(An ...
- [Android 4.4.2] 泛泰A870 Mokee4.4.2 20140531 RC1.0 by syhost
欢迎关注泛泰非盈利专业第三方开发团队 VegaDevTeam (本team 由 syhost suky zhaochengw(z大) xuefy(大星星) tenfar(R大师) loogeo cr ...
- vue指令概览
原文 简书原文:https://www.jianshu.com/p/5fd47b7422fd 大纲 1.什么是vue指令 2.向指令中传入参数 3.指令中带入修饰符 4.指令的缩写 5.常见的vue指 ...
- Summary Day30
1.内存管理 1.1 进程中的内存区域划分 代码区 仅仅读常理区 全局区 BSS 堆 栈 1.2 字符串存储形式之间的比較 字符指针,字符数组.字符动态内存 1.3 虚拟内 ...
- HDU 1213 How Many Tables 并查集 水~
http://acm.hdu.edu.cn/showproblem.php?pid=1213 果然是需要我陪跑T T,禽兽工作人员还不让,哼,但还是陪跑了~ 啊,还有呀,明天校运会终于不用去了~耶耶耶 ...