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基础设备与机房管理结构的完善与 ...
随机推荐
- 18. springboot整合jsp
转自:https://blog.csdn.net/u012562943/article/details/51836729
- 洛谷——P1096 Hanoi双塔问题
https://www.luogu.org/problem/show?pid=1096 题目描述 给定A.B.C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个 ...
- 洛谷 P2646 数数zzy
P2646 数数zzy 题目描述 zzy自从数学考试连续跪掉之后,上数学课就从来不认真听了(事实上他以前也不认真听).于是他开始在草稿纸上写写画画,比如写一串奇怪的字符串.然后他决定理♂性♂愉♂悦♂一 ...
- python3 随机生成6位数的验证码
python3 随机生成6位数的验证码 要求是数字:0~9 及大小写字母. #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung ...
- Oracle中暂时表空间的清理
作者:iamlaosong Oracle暂时表空间主要用来做查询和存放一些缓冲区数据. 暂时表空间消耗的主要原因是须要对查询的中间结果进行排序.暂时表空间的主要作用: 索引create或rebuild ...
- C语言深度剖析-----函数与指针的分析
指针的本质 指针需要保证指向任意数据类型,所以指针变量都占用32位bit即4字节. PS:不同机器上,指针占用内存不一 ...
- LA 3602 - DNA Consensus String 枚举
原题地址:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...
- self.view.layer.contents 和 self.view.backgroundColor
一. self.view.layer.contents 和 self.view.backgroundColor 今天测了一下 : self.view.layer.contents 和 self. ...
- hdu 3605 Escape 二分图的多重匹配(匈牙利算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3605 Escape Time Limit: 4000/2000 MS (Java/Others) ...
- 公钥,私钥和数字签名这样最好理解 分类: B3_LINUX 2015-05-06 16:25 59人阅读 评论(0) 收藏
一.公钥加密 假设一下,我找了两个数字,一个是1,一个是2.我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥. 我有一个文件,不能让别人看,我就用1加密了.别人找到了这个 ...