虚拟机与虚拟化
文章平均质量分 80
快乐的霖霖
一个人默默的奋斗者
展开
-
计算系统虚拟化简介
计算系统虚拟化简介一.虚拟化系统的分类1. 指令级虚拟化指令集架构级虚拟化通过纯软件方法,模拟出与实际运行的应用程序(或操作系统)所不同的指令集去执行,采用这种方法构造的虚拟机一般称为模拟器。有几个典型的模拟器系统:Bochs、Crusoe、QEMU、BIRD等。2. 硬件级虚拟化该虚拟化技术可以将虚拟资源映射到物理资源并在虚拟机计算中使用本地硬件。原创 2012-04-11 16:00:11 · 1457 阅读 · 0 评论 -
KVM虚拟机代码揭秘——设备I/O虚拟化
KVM虚拟机代码揭秘——设备I/O虚拟化1. 虚拟设备的IO地址注册如我们所知,KVM虚拟机的设备模拟是在QEMU中实现的,而KVM实现的实质上只是IO的拦截。换句话说,真正的虚拟设备IO地址注册是在QEMU代码里面实现的。在QEMU中,在初始化我们的硬件设备的时候需要注册我们的IO空间,在这里有下面两种IO注册方法:(1) PIO(port IO) 端口IO原创 2013-01-14 10:35:32 · 3281 阅读 · 0 评论 -
KVM虚拟机代码揭秘——QEMU代码结构分析
KVM虚拟机代码揭秘——QEMU代码结构分析前言:本文主要概括了QEMU的代码结构,特别从代码翻译的角度分析了QEMU是如何将客户机代码翻译成TCG代码和主机代码并且最终执行的过程。并且在最后描述了QEMU和KVM之间联系的纽带。申明:本文前面部分从qemu detailed study第七章翻译而来。 1.代码结构如我们所知,QEMU是一个模拟器,它能够动态模拟特原创 2013-01-14 11:12:16 · 1752 阅读 · 0 评论 -
QEMU源码剖析(一)
QEMU源码剖析(一)1 qemu概述 qemu是一种快速的多体系结构仿真器,通过动态翻译的技术达到了优异的仿真速度。目前,qemu支持两种操作模式:全系统仿真模式。在这种模式下,qemu完整的仿真目标平台,此时,qemu就相当于一台完整的pc机,例如包括一个或多个处理器以及各种外围设备。这种模式可以用来运行不同的操作系统或调试操作系统的代码。用户态仿真模式。在这原创 2013-01-14 11:35:07 · 2218 阅读 · 0 评论 -
进程的处理器亲和性和VCPU的绑定
进程的处理器亲和性和VCPU的绑定 通常情况下,在SMP系统中,Linux内核的进程调度器根据自有的调度策略将系统中的一个进程调度到某个CPU上执行。一个进程在前一个执行时间是在cpuM(M为系统中的某CPU的ID)上运行,而在后一个执行时间是在cpuN(N为系统中另一CPU的ID)上运行。这样的情况在Linux中是很可能发生的,因为Linux对进程执行的调度采用时间片原创 2013-01-18 20:47:45 · 1965 阅读 · 0 评论 -
kvm-kmod目录结构与编译依赖
kvm-kmod目录结构与编译依赖 下面针对kvm-kmod-2.6.32.7作一下简要说明。 kvm-kmod是KVM VMM的内核模块部分,在内核中体现为一个驱动程序模块;在用户空间表征为一个字符设备/dev/kvm.KVM虚拟机的用户空间部分qemu-kvm(对qemu模拟器的修改版,主要修改是替换了qemu的指令的动态二进制翻译部分)通过使用ioc原创 2013-01-18 20:33:13 · 1976 阅读 · 0 评论 -
qemu-img命令详解
qemu-img命令详解qemu-img是QEMU的磁盘管理工具,在qemu-kvm源码编译后就会默认编译好qemu-img这个二进制文件。qemu-img也是QEMU/KVM使用过程中一个比较重要的工具,本节对其用法和实践使用方法进行介绍。qemu-img工具的命令行基本用法如下:qemu-img command [command options]原创 2013-01-18 21:07:01 · 7781 阅读 · 0 评论 -
KVM中的ballooning详解
KVM中的ballooning详解1. Ballooning简介通常来说,要改变客户机占用的宿主机内存,是要先关闭客户机,修改启动时的内存配置,然后重启客户机才能实现。而内存的ballooning(气球)技术可以在客户机运行时动态地调整它所占用的宿主机内存资源,而不需要关闭客户机。Ballooning技术形象地在客户机占用的内存中引入气球(Balloon)的概念原创 2013-02-21 15:00:35 · 12485 阅读 · 1 评论 -
QEMU模块模型
QEMU模块模型#define module_init(function, type) \static void __attribute__((constructor)) do_qemu_init_ ## function(void) { \ register_module_init(functio原创 2013-02-22 16:57:07 · 1390 阅读 · 0 评论 -
KVM API的使用
KVM API的使用 KVM的API是通过/dev/kvm设备进行访问的。/dev/kvm是一个字符型设备,如下图所示。 作为Linux的一个标准字符型设备,可以使用常见的系统调用如open、close、ioctl等指令进行操作。因为KVM的字符型设备的实现函数中,没有包含write、read等操作。所有原创 2013-03-09 21:55:14 · 2174 阅读 · 0 评论 -
在QEMU中添加新的QMP命令
在QEMU中添加新的QMP命令QMP(就是QEMU Monitor Protocol)命令由结构mon_cmd_t定义,该结构在monitor.c的开头被定义。注意查看它的成员以及该结构上面的注释。为了添加新的QMP命令,需要修改qemu-monitor.hx注意查看最开始的说明:DEFHEADING() 用于在help text和texi中增加标题头处原创 2013-03-18 17:12:58 · 2396 阅读 · 0 评论 -
qemu-kvm savevm/loadvm 流程
qemu-kvm savevm/loadvm 流程1. 流程:1)测试设备是否支持snapshot保存2)停止虚拟机3)保存虚拟机状态4)创建快照5)恢复虚拟机2. 函数调用:1) 入口函数 do_savevm()2) 函数调用:1) bdrv_snapsho原创 2013-03-21 20:52:41 · 4408 阅读 · 0 评论 -
qemu中添加新命令helloworld
qemu中添加新命令helloworld介绍: 很多 虚拟化开发者和系统架构师 需要在qemu 中添加新的功能,比如 post-copy migrate(后迁移模式)。处于兼容性和稳定性的考虑,添加新命令来封装这些功能比较合适。本文介绍了在qemu代码里如何添加新命令 helloworld。 注意:本文讲的是添加qemu交互界原创 2013-03-21 20:29:50 · 1967 阅读 · 0 评论 -
QEMU live migration代码简单剖析
QEMU live migration代码简单剖析代码版本: qemu-1.4.0迁移发起端:迁移函数[cpp] view plaincopyqmp_migrate 1) 判断当前migrate状态是否为active(2) 判断是否有block migrate设备存在(原创 2013-04-16 14:21:23 · 3595 阅读 · 1 评论 -
Json格式解析
Json格式解析一. Json格式简介json结构的格式就是若干个 键/值(key, value) 对的集合,该集合可以理解为字典(Dictionary),每个 键/值 对可以理解成一个对象(Object)。 键/值 对中的 键(key) 一般是 一个string,值(value)可以是string、double、int等基本类型,也可以嵌套一个 键/值 对,也可以是一原创 2013-04-16 10:50:22 · 1317 阅读 · 0 评论 -
qemu 内存模型(内存仿真概念)
qemu 内存模型(内存仿真概念)qemu内存API仿真了qemu的内存,IO总线以及对应的控制器,主要包括以下部分的仿真: • 常规内存 • IO映射内存(MMIO) • 内存控制器(将物理内存动态的映射到不同的虚拟地址空间)qemu内存模型主要包括以下功能: • 跟踪目标机内存的变化 • 为kvm建立共享内存(coalesc转载 2013-04-18 16:44:06 · 1898 阅读 · 0 评论 -
使用qmeu-img管理虚拟机磁盘镜像(创建虚拟机,虚拟机快照)
使用qmeu-img管理虚拟机磁盘镜像(创建虚拟机,虚拟机快照)一台虚拟机的核心就是一个磁盘镜像,这个镜像可以理解成虚拟机的磁盘,里面有虚拟机的操作系统和驱动等重要文件。本文主要介绍创建虚拟机的一般过程。创建虚拟机镜像 要在一台host上跑起一个虚拟机一般需要两个步骤:第一步:创建虚拟机镜像qemu-img create转载 2013-04-18 18:22:40 · 1706 阅读 · 1 评论 -
KVM处理器管理和硬件辅助虚拟化技术
KVM处理器管理和硬件辅助虚拟化技术Intel 在2006年发布了硬件虚拟化技术。其中支持X86体系结构的称为Intel VT-x技术。AMD称为SVM技术。VT-x引入了一种新的处理器操作,叫做VMX(Virtual MachineExtension),提供了两种处理器的工作环境。VMCS结构实现两种环境之间的切换。VM Entry使虚拟机进去客户模式,VMExit使虚拟机退出客原创 2013-01-14 09:44:10 · 2706 阅读 · 0 评论 -
虚拟机迁移研究
虚拟机迁移研究国内外对虚拟机迁移的研究主要集中在四个方面:(1)虚拟机内存状态的迁移算法;(2)虚拟机外设的迁移,包括磁盘和网络设备等;(3)虚拟机的放置算法,主要包括虚拟机迁移的3W(when,Which,Where)问题;(4)虚拟机迁移的应用。1 虚拟机的内存迁移算法虚拟机迁移有两项重要的性能指标:停机时间(migration downtime )和迁移总时间(也称迁移延迟m原创 2012-11-07 09:46:40 · 9641 阅读 · 8 评论 -
Kvm 网络桥接方案
Kvm 网络桥接方案下面介绍配置KVM桥接网络的方法: \\特别注意,大部分不能桥接无线网卡。。。只能桥接PCI网卡。。。。安装桥接工具:代码:sudo apt-get install bridge-utils安装创建TAP界面的工具:代码:sudo apt-get install uml-utilities编辑网络界面配置文件代码:sudo vi /e原创 2012-05-11 17:01:15 · 3189 阅读 · 0 评论 -
KVM/QEMU简介
KVM/QEMU简介 KVM虚拟机是基于linux内核虚拟化,自linux2.6.20之后就集成在linux的各个主要发行版本中。它使用linux自身的调度器进行管理,所以相对于xen,其核心源码很少。KVM的虚拟化需要硬件的支持(如intel VT技术或者AMD V技术),是基于硬件的完全虚拟化。而xen早期则是基于软件模拟的para-virtualization,新版本是基于硬件支原创 2012-05-11 16:28:35 · 6311 阅读 · 2 评论 -
Debian 6.0 安装 KVM 桥接网络
Debian 6.0 安装 KVM 桥接网络 环境:Win 7 中安装WMWare 8.0; WMWare 中安装Debian 6.0;Debian中安装qemu-kvm; qemu-kvm中安装Gentoo (如下图所示)桥接:桥接可以让Guest OS (KVM中的OS)和Host OS(此处是Debian)位于同一局域网内,并且可以和局域网内其他PC相互通转载 2012-05-11 16:31:58 · 3543 阅读 · 0 评论 -
kvm环境创建虚拟机
使用libvirt的xml配置文件创建虚拟机 kvm支持的镜像很多,常用的是原始镜像(*.img),还有支持动态大小扩张的qocw2格式(首选)。更优的选择是系统盘如C盘用img格式,数据盘用qcow2格式以减少服务器磁盘闲置空间。本文仅记录如何用ubuntu.iso制作系统镜像ubuntu.qcow2并创建启动虚拟机一、制作虚拟机镜像1、创建qcow2镜像,但是其实际占有磁转载 2012-06-21 09:44:47 · 1317 阅读 · 0 评论 -
libvirt安装过程
libvirt安装过程<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->下载libvirt-0.8.1-tar.gz,解压该文件:tar zxvf libvirt-0.8.1.tar.gz.解压完成后进入到文件夹libvirt-0.8.1开始安装1../configure2.此时提示原创 2012-06-25 15:26:00 · 2858 阅读 · 2 评论 -
Ubuntu下安装搭建KVM环境完整版
Ubuntu下安装搭建KVM环境完整版 下面的都是在32位机子上搭建KVM环境。<!--@page {margin:2cm}p {margin-bottom:0.21cm}--> 1.首先在确定自己的CPU支持硬件虚拟化,有些可能要在BIOS中开启,找到IntelVirtualizationTechnology并打开。使用原创 2012-06-25 15:44:00 · 4944 阅读 · 0 评论 -
KVM存储池与存储卷,使用virt-install创建虚拟机
KVM存储池与存储卷,使用virt-install创建虚拟机参考链接:http://blog.sina.com.cn/s/blog_53ab41fd01013rcg.html 在机器上装了一个Centos6.2用来测试KVM,对比Windows下的VMwareworstation,KVM功能强大,定制性高,只要入了门,绝对是功能强大。用来作云计算不错。不过就是操作性差了点。没有vm转载 2012-06-25 16:28:34 · 4375 阅读 · 0 评论 -
一些磁盘映像格式
qemu/kvm支持的一些磁盘映像格式磁盘映像的格式有:raw:raw磁盘格式(默认)。这种格式有简单并且易于移植到其他模拟器的优点。如果我们的文件系统支持holes(例如在Linux上的ext2或是ext3),然后只有写入的部分保持空白。使用qemu-img info来得到映像,使用的实际大小或是在unix/linux上使用ls -ls.qcow:qemu映像格式,这是最通用的格式,原创 2012-06-27 15:19:57 · 3948 阅读 · 0 评论 -
virsh命令行管理工具
virsh命令行管理工具 Libvirt有两种控制方式,命令行和图形界面图形界面:通过执行名virt-manager,启动libvirt的图形界面,在图形界面下可以一步一步的创建虚拟机,管理虚拟机,还可以直接控制虚拟机的桌面。 命令行:virsh list #显示本地原创 2012-06-27 20:57:34 · 15084 阅读 · 0 评论 -
KVM虚拟机创建功能详细讲解
KVM虚拟机创建功能详细讲解一.KVM虚拟机创建的用户操作对于用户或者管理员来说,虚拟机的创建有着很多的方法,例如:kvm自带命令行工具、使用virsh命令来创建、使用具有图形界面的virt-manager等等。但是它们底层实现的原理都是一样的,而且它们基本上都是通过开源的虚拟化库Libvirt来开发的。下面就讲一讲三种用户可以创建虚拟机的方式。1.1 利用kvm自带命令行工具原创 2012-09-01 11:11:36 · 44042 阅读 · 7 评论 -
利用libvirt管理KVM虚拟机
利用libvirt管理KVM虚拟机本文的原始链接:http://blog.chinaunix.net/uid-1838361-id-257238.html说明:这篇笔记为更好的管理虚拟化服务,如果仅仅是测试虚拟化,查看另一篇笔记:http://blog.chinaunix.net/space.php?uid=1838361&do=blog&id=234090转载 2012-09-09 11:29:27 · 2476 阅读 · 0 评论 -
RHEL 6.1 KVM虚拟机桥接物理机网络
RHEL6.1 KVM虚拟机桥接物理机网络一、KVM默认网络配置1、kvm上网有两种配置:a. NAT,支持主机与虚拟机的互访,也支持虚拟机访问互联网,但不支持外界访问虚拟机。b. bridge(桥接),可以使用虚拟机成为网络中具有独立IP的主机,不但能上网,也能让别人访问虚拟机。 2、虚拟机安装完成时,默认的NAT,网卡为“Realtek RTL8原创 2012-09-10 21:10:23 · 12609 阅读 · 0 评论 -
KVM内核代码结构
KVM内核代码结构因为KVM的源代码已经包含在了Linux的内核树中,因此我们只需直接从www.kernel.org下载代码即可,内核源码包打开较大,解开后目录结构大概是这个样子:涉及KVM的主要有两个目录,virt和arch/x86/kvm。virt目录虽然看起来层级很高,主要有kernel中非硬件体系架构相关的部分如IOMMU、中断控制等,真正货色较多的,是后者原创 2012-09-26 17:24:43 · 2858 阅读 · 0 评论 -
内核虚拟化KVM/QEMU——guest os,qemu,kvm的运行流程
内核虚拟化KVM/QEMU——guest os,qemu,kvm的运行流程这里主要介绍基于x86平台的Guest Os, Qemu, Kvm工作流程,如图,通过KVM APIs可以将qemu的command传递到kvm:1.创建VMsystem_fd = open("/dev/kvm", xxx);vm_fd = ioctl(system_fd, KVM原创 2012-10-08 10:56:23 · 2879 阅读 · 0 评论 -
RedHat Enterprise下如何配置KVM虚拟机的网络网桥
RedHat Enterprise下如何配置KVM虚拟机的网络网桥一. 网桥的相关创建命令 1. 创建网桥设备:brctl addbr ,eg:brctl addbr br02. 向网桥设备添加物理网卡:brctl addif ,eg:brctl addif br0 eth0/eth1(根据需要添加几个网卡)3. 从网桥中删除网卡:brctl原创 2012-09-22 15:12:01 · 3245 阅读 · 0 评论 -
使用libvirt管理KVM虚拟机
使用libvirt管理KVM虚拟机一、安装虚拟化管理工具1、yum install virt-manager libvirt libvirt-python python-virtinst1、kmod-kvm : kvm kernel module(s)2、kvm : Kernel-based Virtual Machine3、kvm-qemu-img : Qem原创 2012-09-24 16:05:32 · 5165 阅读 · 6 评论 -
Yabusame postcopy环境的搭建
Yabusame postcopy环境的搭建经过多次失败,最终终于把环境搭建成功了。首先,我的两天服务器的os都是RHEL 6.2,内核版本是2.6.32。选用的Yabusame的源码分别是linux-umem-june-04-2012和qemu-postcopy-june-04-2012,我是用make进行源码编译安装。参考: http://grivon.ap转载 2013-04-27 20:34:12 · 1432 阅读 · 0 评论