虚拟化
白水煮鸡蛋
这个作者很懒,什么都没留下…
展开
-
virtio-netdev 数据包的发送
在前面几文中已经大体介绍了virtio的重要组成,包括virtio net设备的创建,vring的创建,与virtio设备的交互方式,我们就从网络数据包的发送角度来看下virtio的具体使用流程。[点击查看全文]http://luoye.me/2014/08/09/virtio-netdev-send/原创 2014-09-04 11:39:31 · 2267 阅读 · 0 评论 -
Qemu之Network Device全虚拟方案二:虚拟网卡的创建
上文针对Qemu在前端网络流路径的建立方面做了详细的描述,数据包从Host的物理网卡经过Host Linux内核中的Bridge, 经过Tap设备到达了Qemu的用户态空间。而Qemu是如何把数据包送进Guest中的呢,这里必然要说到到虚拟网卡的建立。当命令行传入nic相关参数时,Qemu就会解析网络相关的参数后进入虚拟网卡的创建流程。而在上文中提到对于所有-net类型的设备,都视作一个n原创 2014-09-03 12:17:13 · 4111 阅读 · 2 评论 -
virtio netdev的创建
Linux目前支持至少了8种虚拟化系统:XenKVMVMware’s VMIIBM’s System pIBM’s System zUser Mode LinuxlguestIBM’s legacy iSeries而新的系统也在不断的涌现,各个系统在网络设备、块设备、console及其它设备驱动在新特性支持和性能优化方面存在着瓶颈。为解决这些问题,Rusty Russell原创 2014-09-04 11:33:32 · 1248 阅读 · 0 评论 -
vring的创建
KVM上设备I/O虚拟化的性能问题长期存在,此时由Rusty Russell开发的virtio引起了开发者们的注意并逐渐被KVM等虚拟化平台接纳并作为了其I/O虚拟化最主要的一个通用框架。Virtio使用virtqueue来实现其I/O机制,每个virtqueue就是一个承载大量数据的queue。vring是virtqueue的具体实现方式。[点击查看全文]http://l原创 2014-09-04 11:37:43 · 1631 阅读 · 0 评论 -
Hypercall
在Linux中,大家应该对syscall非常的了解和熟悉,其是用户态进入内核态的一种途径或者说是一种方式,完成了两个模式之间的切换;而在虚拟环境中,有没有一种类似于syscall这种方式,能够从no root模式切换到root模式呢?答案是肯定的,KVM提供了Hypercall机制,x86体系架构也有相关的指令支持。[点击查看全文]http://luoye.me/2014/07/27/原创 2014-09-04 11:29:25 · 2397 阅读 · 0 评论 -
Guest与virtio netdev的交互方式
Qemu为virtio设备分配了专门的pci设备ID,device IDs (vendor ID 0x1AF4) from 0x1000 through 0x10FF,而pci子系统中的厂商ID和设备ID就成为了virtio类型和厂商域的组成,所以PCI驱动是不需要知道virtio设备类型的真正含义,对于Kernel来说只是注册了一个struct virtio_device,并挂载到了virtio原创 2014-09-04 11:33:06 · 1366 阅读 · 0 评论 -
Qemu之Network Device全虚拟方案三: I/O虚拟化
前面两文主要对前端网络流的数据路径和虚拟网卡的创建进行了说明,这些可以看做是Guest OS网络数据包收发的准备工作,那么网络数据包是如何在Guest OS中进进出出的呢,本文就是重点讲述Guest OS的数据包的收发路径,其中涉及到一个重要的虚拟化技术,即I/O虚拟化。[点击查看全文]http://luoye.me/2014/07/26/netdev-virtual-3/原创 2014-09-03 12:18:54 · 1764 阅读 · 0 评论 -
Qemu之Network Device全虚拟方案一:前端网络流的建立
KVM在I/O虚拟化方面,传统的方式是使用Qemu纯软件的方式来模拟I/O设备,其中包括经常使用的网卡设备。这次我们重点分析Qemu为实现网络设备虚拟化的全虚拟化方案。本主题从三个组成方面来完整描述,包括:1. 前端网络流的建立; 2. 虚拟网卡的创建; 3. 网络I/O虚拟化 in Guest OS。本篇主要讲述“前端网络流的建立”。[点击查看全文]http://luoye.原创 2014-09-03 12:15:10 · 2357 阅读 · 0 评论 -
KVM Run Process之KVM核心流程
在“KVM Run Process之Qemu核心流程”一文中讲到Qemu通过KVM_RUN调用KVM提供的API发起KVM的启动,从这里进入到了内核空间运行,本文主要讲述内核中KVM关于VM运行的核心调用流程,所使用的内核版本为linux3.15。[点击查看全文]http://luoye.me/2014/07/12/KVM_RUN_PROCESS2/原创 2014-08-31 18:04:50 · 1434 阅读 · 0 评论 -
KVM硬件辅助虚拟化之 EPT in Nested Virtualization
在嵌套虚拟环境(Nested Virtualization)下,运行在hypervisor上的Virtual Machine仍可以作为hypervisor去运行其它的Virutal Machine,而KVM也支持了这种强大的特性。而在《KVM硬件辅助虚拟化之 EPT》一文中,我们详细分析了单层虚拟机并引入硬件辅助虚拟化EPT功能的环境下,Guest OS中的虚拟地址到真实物理地址的访问方法原创 2014-08-31 17:57:10 · 2862 阅读 · 0 评论 -
KVM-Introduce
相信很多的人对虚拟机并不陌生,目前也有很多优秀的虚拟机软件,例如:VMware, VirtualBox, Xen, KVM等。而本文的主要内容是介绍KVM。KVM: Kernel Based Virtual Machine:[点击查看全文]http://luoye.me/2014/07/05/KVM-Introduce原创 2014-08-31 17:59:32 · 988 阅读 · 0 评论 -
KVM Run Process之Qemu核心流程
在前文中,介绍了在KVM环境下使用Qemu成功创建并运行了虚拟机,而这一切的背后是什么样的运作机制呢?本文主要介绍在整个创建和运行过程中Qemu与KVM里两者的核心运行流程。[点击查看全文]http://luoye.me/2014/07/12/KVM-RUN-PROCESS/原创 2014-08-31 18:02:41 · 1204 阅读 · 0 评论 -
virtio-blk浅析
和virtio-network一样,virtio-blk驱动使用Virtio机制为Guest提供了一个高性能的块设备I/O的方法。我们这里看下virtio-blk的实现。[点击查看全文] http://luoye.me/2014/08/29/virtio-blk/原创 2014-08-29 22:50:30 · 2411 阅读 · 0 评论 -
KVM硬件辅助虚拟化之 EPT(Extended Page Table)
传统OS环境中,CPU对内存的访问都必须通过MMU将虚拟地址VA转换为物理地址PA从而得到真正的Physical Memory Access,即:VA->MMU->PA,见下图。虚拟运行环境中由于Guest OS所使用的物理地址空间并不是真正的物理内存,而是由VMM供其所使用一层虚拟的物理地址空间,为使MMU能够正确的转换虚实地址,Guest中的地址空间的转换和访问都必须借助VMM来实现,原创 2014-08-29 23:00:50 · 3605 阅读 · 1 评论 -
kvm安装与启动过程说明-Kernel源码编译方式
《kvm安装与启动过程说明》进行了通用桌面系统的虚拟机安装。在本文中将介绍自行编译linux Kernel内核源码,无桌面OS虚拟机安装和启动。为后续内核调试打下基础。[点击查看全文]http://luoye.me/2014/06/16/kvm-install-2/原创 2014-08-29 22:58:20 · 950 阅读 · 0 评论 -
kvm安装与启动过程说明
根据这段时间对Linux KVM的研究,现将KVM的安装与Virtual OS的启动进行总结说明。原创 2014-08-29 22:55:33 · 864 阅读 · 0 评论 -
Vhost Architecture
在前面的文章中在介绍virtio机制中,可以看到在通常的应用中一般使用QEMU用户态程序来模拟I/O访问,而Guest中的数据要通过Guest到Host Userspace的第一次拷贝,再经过Host userspace的第二次拷贝,这种多次的数据拷贝和CPU特权级的切换对性能有相当大的影响。为加速virtio设备的I/O性能,VHOST通过driver的形式在Host Kernel中直接实现原创 2014-09-04 11:38:58 · 1995 阅读 · 0 评论 -
KVM,QEMU核心分析
目前正在学习虚拟化软件KVM相关运行原理、过程,对源码的分析进行了总结,只是为了学习交流使用,若有不正确的地方,希望大家提出。总入口:我的个人blog 文章列表1. kvm安装与启动过程说明2. kvm安装与启动过程说明-Kernel源码编译方式3. KVM硬件辅助虚拟化之 EPT(Extended Page Table)4. KVM硬件辅助虚拟原创 2014-07-16 13:12:34 · 5268 阅读 · 3 评论