
Virtualization && QEMU
文章平均质量分 68
刘军卫
linux爱好者,主要致力于虚拟化云计算方面的研究,尤其专注于openstack,kvm,linux kernel等源码和架构的研究
微博:Marshal-Liu
展开
-
QEMU源码分析系列(一)
1 qemu概述 qemu是一种快速的多体系结构仿真器,通过动态翻译的技术达到了优异的仿真速度。目前,qemu支持两种操作模式:全系统仿真模式。在这种模式下,qemu完整的仿真目标平台,此时,qemu就相当于一台完整的pc机,例如包括一个或多个处理器以及各种外围原创 2011-09-18 21:51:52 · 27580 阅读 · 5 评论 -
opennebula源码分析 -- XML-RPC 原理分析
在分析opennebula源码时,发现opennebula利用XML-RPC机制完成client端与server端的交互,由于对XML-RPC机制不太熟悉,读opennebula代码的时候心里总觉得有个疙瘩,每次看到相关的代码都稀里糊涂的,非常不爽,今天花了半天的时间对XML-RPC机制做了个简单的分析,与大家分享。1. XML-RPC 体系结构serv原创 2012-09-05 09:41:29 · 2365 阅读 · 0 评论 -
opennebula源码分析之框架分析
opennebula编译之后,生成两个后台进程oned和mm_sched,当执行one start时,实际执行脚本share/scripts/one,通过分析该脚本,其主要完成两个主要任务:(1) oned -f 2 > &1 &(2) mm_sched &因此,下面的分析将会按照oned和mm_sched这两个进程的角度去分析。1 oned进程代码分析原创 2012-08-14 12:53:49 · 3125 阅读 · 1 评论 -
ubuntu 12.04 通过virsh创建lxc container碰到问题及解决方法
发泄一下,被ubuntu整郁闷了,之前再通过iso手动安装的ubuntu 12.04 server上通过libvirt创建linux container非常顺利,没有碰到任何问题。 近期由于使用了ubuntu的os部署工具MAAS部署了一遍OS,同样是ubuntu 12.04 server,却出现了一系列的问题,在此记录下! 莫非MAAS部署的OS与手动安装的OS有啥细微的差别,这原创 2013-01-06 20:30:38 · 3036 阅读 · 0 评论 -
virtio驱动分析之libvirt层的参数配置
一直在研究kvm的para-virtualization driver - virtio,可能是太熟的原因吧,今天突然发现不知道咋在libvirt层配置kvm采用virtio驱动了,问题在于,看到下面这个配置文件,我竟不能确定此配置是否是采用了virtio驱动,先来看下配置文件的virtio相关的部分:disk type='file' device='disk'> s原创 2013-03-01 16:08:04 · 6720 阅读 · 2 评论 -
采用eclipse + gdb来搭建调试qemu源码的环境
由于很多同学来信询问如何学习qemu,要看哪些资料,应该怎么入手之类的问题,我每次都回答:看代码。但是qemu的代码也是挺庞大的,如果没有一个好的方法和环境,将是一件非常痛苦的事情。因为qemu的相关资料太少了,并不像linux,有很多源码分析的资料可以对照的看。 对一个陌生的东西,最好的方法是跟踪它,所以,我们可以通过单步调试的方法来分析qemu的代码,下面就介绍一下如何通过eclip原创 2013-03-26 22:30:47 · 4895 阅读 · 1 评论 -
ubuntu12.04下libvirt-1.0.4和qemu-1.4编译安装
之所以编译安装,主要是为了使用libvirt和qemu的最新版本,测试其new features。1. libvirt-1.0.4编译安装(1)安装gcc以及依赖软件sudo apt-get install libxml2-dev libgnutls-dev libdevmapper-dev python-dev libnl-dev libpciaccess-dev原创 2013-04-22 13:40:07 · 2942 阅读 · 0 评论 -
Qemu快照(snapshot)机制原理及关键技术理解
1. snapshot 概念 当要做snapshot时,可以通过qemu的monitor terminal 或是QMP(Qemu Monitor Protocol)向QEMU发送命令,命令执行的结果是将原始的镜像(original image)变成备份镜像(bacup image),同时,生成一个snapshot(又称为活动镜像, active image),与原始镜像相比,所有新的变化都原创 2013-04-16 09:47:19 · 8633 阅读 · 0 评论 -
KVM虚拟机迁移原理分析
KVM虚拟机在不同主机之间的迁移,是个复杂的问题,有非常多的解决方案,但是不同的解决方案都有其优点和缺点,下面来分析下当前几种可用的KVM虚拟机迁移的方案。1. 虚拟机迁移过程中数据的传输(磁盘镜像和内存数据) 通常有两种常用的数据传输方式: -- 基于hypervisor的传输机制,即通过host之间连接来进行数据传输 -- 基于libvirtd的传输机制,即两个libvi原创 2013-04-28 10:27:27 · 4191 阅读 · 0 评论 -
KVM IO性能测试数据
目前,主流的共有云提供商大部分采用的hypervisor还是XEN,所以,很多人会笼统的认为xen比kvm更好。个人认为,这是个误区。国外的amazon和国内的阿里云,华为云之所以选择xen作为hypervisor,个人认为只是他们从事hypervisor方面的研究更早,当时最好的hypervisor就是xen,这么多年了投入了大量的人力和物力,已经形成了一定的知识积累,所以才会一直用xen而已,原创 2013-09-27 23:06:51 · 7633 阅读 · 0 评论 -
OpenStack Availability Zone和Aggregate Hosts理解
1. availability zone az是在region范围内的再次切分,只是工程上的独立,例如可以把一个机架上的机器划分在一个az中,划分az是为了提高容灾性和提供廉价的隔离服务。选择不同的region主要考虑哪个region靠近你的用户群体,比如用户在美国,自然会选择离美国近的region;选择不同的az是为了防止所有的instance一起挂掉,下图描述了二者之间的关系。原创 2013-09-27 23:06:06 · 9026 阅读 · 1 评论 -
Linux Security Framework -- Apparmor机制介绍
AppArmor 是一个类似于selinux 的东东,主要的作用是设置某个可执行程序的访问控制权限,可以限制程序 读/写某个目录/文件,打开/读/写网络端口等等。 Novell给出的Apparmor的解释:AppArmor is designed to provide easy-to-use application security for both原创 2012-09-05 09:42:38 · 14032 阅读 · 1 评论 -
简单理解LVM(Logical Volume Manager)的基本原理
早就想了解下LVM的原理,正好今天碰到个与LVM相关的问题,阅读了些LVM相关的资料,总结一下与大家分享!一. LVM 架构1.基本概念介绍:PP,物理分区(Physical Partition),如硬盘的分区,或 RAID 分区。PV,物理卷(Physical Volume),是 PP 的 LVM 抽象,它维护了 PP原创 2012-08-17 16:58:46 · 6925 阅读 · 2 评论 -
linux容器技术-lxc创建虚拟机的执行过程分析
1. lxc介绍 容器是一种轻量级的虚拟化技术,与qemu/kvm、VMware、Xen等完全的虚拟化方案相比,LXC更像是加强的“chroot”,因为LXC不但没有没有对硬件设备进行仿真,而且可以与主机共享一模一样的操作系统,所以LXC与solaris的zones和BSD的jails相比,更具优势。 目前,有两个比较方便的管理容器的用户空间的工具:libvir原创 2012-07-25 10:32:16 · 9103 阅读 · 0 评论 -
qemu源码分析系列(二)
在qemu源码分析系列(一)简单介绍了下qemu相关的背景知识,本文将详细分析qemu的核心 -- 动态翻译器。为了更容易理解动态翻译技术,我们暂时忽略掉qemu的其他模块,如用户交互模块,硬件模拟等模块,而是从数据结构的设计,数据结构之间的操作及其应用等方面来进行详细地分析原创 2011-09-23 23:17:38 · 15138 阅读 · 6 评论 -
QEMU源码分析系列(三)
从QEMU-0.10.0开始,TCG成为QEMU新的翻译引擎,使QEMU不再依赖于GCC3.X版本,并且做到了“真正”的动态翻译(从某种意义上说,旧版本是从编译后的目标文件中复制二进制指令)。TCG的全称为“Tiny Code Generator”,QEMU的作者Fabrice转载 2011-09-27 20:52:40 · 10836 阅读 · 1 评论 -
qemu源码分析之五-- TCG动态翻译技术
1. TCG简单介绍TCG(Tiny Code Generator)最早被用于C编译器的后端。在TCG相关的代码中,target指的是我们通常说的host,这一点需要注意,并不是我们理解的被仿真的平台。2. TCG动态翻译技术的几个概念(1)与dyngen一样,TCG原创 2011-10-12 22:03:50 · 15456 阅读 · 4 评论 -
qemu源码分析之Makefile
通过分析qemu的Makefile可以了解qemu代码的组织方式以及qemu功能模块的划分,一方面,有助于理解qemu源代码设计思路,另一方面,有助于根据需求裁剪qemu代码,生成精简的符合制定要求的qemu。 为了更好的理解qemu的Makefile的设计,对于不熟悉makefile语法规则的同学建议阅读下面两篇文章: 1. 《Makefile常用函数分析》 2.原创 2011-11-12 18:06:57 · 6871 阅读 · 0 评论 -
qemu指令翻译过程(1)-- ADD指令
本文通过qemu中add指令的翻译过程来加深了解向x86通用指令的结构以及qemu指令翻译的基本通过。1. x86通用指令的基本结构(摘自intel 手册)x86/x64 通用指令编码的核心是:Opcode,ModRM 以及 SIBOpcode 提供指令的操作码ModRM 提供操作数的寻址,以及对 opcode 进行辅助补充SIB 提供更丰富的 memory 寻址2.原创 2011-12-19 18:27:00 · 7089 阅读 · 1 评论 -
qemu中ELF文件的加载
前段时间分析了qemu中ELF文件的加载过程,个人感觉通过这个分析不但可以加深对ELF文件格式的理解,而且能够从侧面了解操作系统加载器的工作过程。一、ELF相关的背景知识1. ELF格式文件相关概念ELF格式文件主要包括以下三种类型的文件:可重定位的目标文件(.o文件) --> 用于链接生成可执行文件或动态链接库文件(.so)可执行文件原创 2011-12-13 20:34:46 · 9918 阅读 · 2 评论 -
qemu用户态仿真代码分析
1、 基本理论分析 qemu实现了两种模式的仿真:qemu系统仿真和qemu用户程序仿真。简单的理解,qemu系统仿真可以理解为仿真了一台PC,可以在上面安装OS,qemu用户程序仿真仅仅是对CPU的仿真,即可以运行不同体系结构的应用程序,可以理解为仿真了应用程序的运行环境。 下面通过实际的代码来分析qemu用户程序仿真的实现过程,在此之前,首先思考下可执行文件的加载执原创 2011-12-24 22:16:11 · 5969 阅读 · 3 评论 -
qemu 内存模型(内存仿真概念)
qemu内存API仿真了qemu的内存,IO总线以及对应的控制器,主要包括以下部分的仿真: • 常规内存 • IO映射内存(MMIO) • 内存控制器(将物理内存动态的映射到不同的虚拟地址空间)qemu内存模型主要包括以下功能: • 跟踪目标机内存的变化 • 为kvm建立共享内存(coalesced memory) • 为kvm建原创 2012-03-06 22:41:17 · 8507 阅读 · 7 评论 -
使用 libvirt创建和管理KVM虚拟机
1. libvirt介绍 Libvirt是一个软件集合,便于使用者管理虚拟机和其他虚拟化功能,比如存储和网络接口管理等等。Libvirt概括起来包括一个API库、一个daemon(libvirtd)和一个命令行工具(virsh)。 Libvirt的主要目标是:提供一种单一的方式管理多种不同的虚拟化提供方式和hypervisor。 Libvirt的主要功能如下:原创 2012-06-22 22:04:01 · 5861 阅读 · 0 评论 -
linux容器技术-LXC相关技术知识介绍
1. lxcbr0 当/etc/default/lxc中的USE_LXC_BRIDGE="true"的时候,桥lxcbr0会在lxc启动的时候自动创建,并且被赋予10.0.3.1的ip地址,使用这个桥的lxc实例可以从10.0.3.0/24中分配ip。一个dnsmasq实例在后台运行用来监听lxcbr0,用来实现dns和dhcp的功能。2. 使用隔离的文件系统作为lx原创 2012-07-25 10:32:57 · 5090 阅读 · 0 评论 -
RedHat 7.0 beta release notes总结及个人分析
下面就自己感兴趣的RedHat 7.0 beta的new features整理了下,并简单的发表了下自己的看法。1. GRUB 2 redhat 7.0 beta版将之前使用的Boot Loader从GRUB升级到了GRUB2,主要是基于GRUB2以下四个比较显著的特点: (1)GRUB2支持更多的硬件体系结构,比如PowerPC (2)GRUB2支持更多的固件类型,比如BIOS,EFI和Open原创 2014-02-09 15:09:27 · 7592 阅读 · 0 评论