虚拟化
文章平均质量分 75
Mr_buffoon
远离舒适区
展开
-
ubuntu下安装使用vmware、kvm、xen
一. 概念介绍:(1)全虚拟化(Full Virtulization)简介:主要是在客户操作系统和硬件之间捕捉和处理那些对虚拟化敏感的特权指令,使客户操作系统无需修改就能运行,速度会根据不同的实现而不同,但大致能满足用户的需求。这种方式是业界现今最成熟和最常见的,而且属于 Hosted 模式和 Hypervisor 模式的都有,知名的产品有IBM CP/CMS,VirtualBox原创 2015-10-07 09:59:36 · 1371 阅读 · 0 评论 -
Qemu-KVM基本工作原理分析
1、理解KVM与Qemu的关系 我们都知道开源虚拟机KVM,并且知道它总是跟Qemu结合出现,那这两者之间有什么关系呢? 首先,Qemu本身并不是KVM的一部分,而是一整套完整的虚拟化解决方案,它是纯软件实现的,包括处理器虚拟化、内存虚拟化以及各种虚拟设备的模拟,但因为是纯软件模拟,所以性能相对比较低。 而广义的KVM实际上包含两部分,一部分是基于LINUX内原创 2016-12-09 11:29:39 · 18255 阅读 · 0 评论 -
Qemu中添加自定义命令
Qemu作为一款开源的虚拟机,我们可以很容易的获取源码,并且有时我们希望能修改源码添加一些特性。但是为了保证稳定和可靠性,我们可以添加新命令来封装自定义的这些特性。(指qemu monitor中命令)查了一些资料,发现Qemu还有HMP和QMP命令之分,这些我都没有详细考证,我只是修改了添加了HMP命令。不同版本的qemu可能需要修改的文件不同,我进行过0.12.5和1.5.3这两个版本的修改原创 2016-12-07 17:24:01 · 3031 阅读 · 0 评论 -
KVM异常处理流程源码简要分析
前面文章中我们讲过Qemu、KVM、Guest OS这三种层次以及对应的三种模式,也知道这三种模式之间的配合,下面上一张图回顾一下。 那现在我们就从代码的角度来讲一下这三层之间具体是如何配合的。 前面我们也讲过,首先Qemu层用户发起启动虚拟机命令后会通过ioctl调用进入到kvm内核层,完成相关初始化工作之后就运行虚拟机。 在kvm内核层中,当接收到原创 2016-12-13 17:10:48 · 3970 阅读 · 2 评论 -
Qemu-KVM虚拟机初始化及创建过程源码简要分析(二)
前面我们讲了KVM内核层创建及初始化虚拟机的一些工作过程,现在讲一下Qemu层的流程以及与KVM内核层的配合过程。 Qemu层是从vl.c中的main()函数开始的,这里通过在代码中添加一些注释的方式来进行讲解,中间省略了很多不重要或者我也没有搞清楚的代码。 囧int main(int argc, char **argv, char **envp){ ......原创 2016-12-13 13:37:52 · 5267 阅读 · 0 评论 -
Qemu-KVM虚拟机初始化及创建过程源码简要分析(一)
我们知道,Qemu-KVM实际上包括Qemu和KVM两部分,那么在创建以及初始化虚拟机时,实际上也是在这两部分进行的。 KVM实际上就是kvm内核模块,包括kvm.ko、kvm-intel.ko、kvm-amd.ko三部分,后两部分分别对应Intel体系的VMX技术以及AMD体系的SVM技术。 首先,我们需要加载模块,当我们加载kvm-xxx.ko模块时,会调用对应的modul原创 2016-12-13 09:36:45 · 4689 阅读 · 0 评论 -
linux编译安装kvm、qemu
kvm作为主流虚拟化产品,其实它的用户层使用的是qemu。所以要安装使用kvm,一般需要安装kvm-kmod以及qemu两部分。 安装kvm-kmod: (1)首先下载kvm-kmod源码并解压。 (2)进入源码目录。 (3)./configure--kerneldir=/lib/modules/2.6.38.8/source //注意该路径是自己想要使原创 2016-10-31 19:12:53 · 3273 阅读 · 0 评论 -
XEN do_hvm_op流程分析
用户态代码:我在xc_domain_save.c这个文件里自己写一个函数,就是传递一个标志到内核里面: static int set_save_flag(xc_interface *xch,int saveflag, uint32_t dom){ DECLARE_HYPERCALL; //固定写法,就是声明一个hvm_save_flag类型的arg。Hvm_save_原创 2016-10-31 18:27:51 · 580 阅读 · 0 评论 -
xen影子页表机制
最近在研究xen的源码,看到了影子机制这一部分,查过一些资料,简单总结一下自己的理解。在真实的物理机器里,我们可以将地址层次抽象成两层,一层是虚拟地址,另一层是物理地址。不同的进程分配不同且不一定连续的物理地址空间,而客户机页表维护着虚拟地址与物理地址之间的映射关系,这使得进程看到的虚拟地址是连续的。在虚拟机里,客户系统认为的自己的物理地址是连续的地址空间,但其实也仅仅是宿主机分配的一部分原创 2016-01-22 16:52:07 · 3656 阅读 · 0 评论 -
xen快照机制
虚拟机快照技术是指,在虚拟机运行过程中将虚拟机的完整运行状态,包括内存、磁盘、 CPU、网络等,保存到持久化的外部设备中,从而当虚拟机发生故障时可以通过备份的数据恢复虚拟机的运行。快照里面内存的快照又是非常重要非常关键的一部分。内存快照主要实现机制主要有三种:停机拷贝机制(stop-and-copy),预拷贝机制(pre-copy),后拷贝机制(post-copy)。 停机拷贝机制(s原创 2016-01-22 17:30:46 · 2834 阅读 · 0 评论 -
xen事件通道机制及其实例
事件通道机制是xen用于Domain和Xen之间,或者Domain和Domain之间的异步事件通知机制。事件通道在xen中应用非常广泛,像物理中断,虚拟中断以及域间通信等均是通过事件通道实现的。根据用途划分,事件通道一般分为四类:域间通信,域内通信,虚拟中断,物理中断。域间通信主要用于Domain与Domain之间通信,或者Xen与Domain之间通信。域内通信就是同一个域内不同VCPU之间通原创 2016-01-26 19:45:31 · 2377 阅读 · 0 评论 -
实验室阶段性小结1
这一阶段主要工作是在服务器上搭建debian系统,并且配置远程。首先安装debian系统,这里自己下载对应的光盘镜像,刻录光盘之后可以直接安装。具体安装教程见:http://www.jb51.net/os/85858.html系统安装之后,因为实验室机器不允许连接外网,又想实现远程登录,所以需要配置静态IP。方法:(debian默认未开启sudo,使用su获得root,以下操作都是root原创 2015-10-07 10:29:24 · 555 阅读 · 0 评论 -
ubuntu12.04(64位)源码编译安装xen4.4.1及配置
系统版本:ubuntu 12.04xen版本:xen 4.4.1NOTE:网络环境中进行安装过程:第一步:安装依赖包在安装xen之前先进行依赖包的安装,在不停得尝试之后,总结出以下需要安装的依赖包。sudo apt-get install gcc make binutils zlib1g-dev python-dev gcc-multilibsudo apt-get原创 2015-10-07 10:36:38 · 903 阅读 · 0 评论 -
实验室阶段性小结2
这一阶段主要完成服务器(debian系统)上kvm的安装配置。比较崩溃的一点是不能连接外网,所有的包都需要自己一个一个的解析依赖关系自己手动下载。apt-get方式不能使用。这里找到了debian官网6.0.4(squeeze)版本软件包下载地址:https://packages.debian.org/squeeze/allpackages所有的包都是按照字母顺序排序,基本所需要的包都能在原创 2015-10-07 10:30:22 · 597 阅读 · 0 评论 -
ubuntu安装libvirt
这里是ubuntu12.04版本,安装libvirt1.1.2 。(1)安装virtinstsudo apt-get install virtinst安装 libvirt 之前首先安装 virtinst 目的是为了使后面编译安装 libvirt 时,覆盖安装 virtinst 时自带的libvirt 的版本,这点很重要。之后才能编译安装 libvirt。(2)下载l原创 2015-10-07 10:09:42 · 8621 阅读 · 0 评论 -
libvirt API学习报告
老板安排让自己学习一下libvirt,所以就在官网上学习,整理了这个报告。该报告是以xen为虚拟平台为例进行的。理顺整个学习过程,首先,必须学习连接函数,连接成功之后,可以获取虚拟机功能信息,还可以获得主机的一些信息 。创建虚拟机,虚拟机创建成功后,安装操作系统,然后应该能够进行管理,这里包括启动,暂停,关闭等操作。因此,API的学习就按照这个流程进行。(具体见libvirt官方文档:http原创 2015-10-07 10:11:15 · 2626 阅读 · 0 评论 -
VIX API学习报告
libvirt针对vmware,有相应的一套库VIX API,在写程序源码时需要引入库文件#include,在编译时需要添加引用:gcc -I/usr/include/vmware-vix xxxxxx.c -o xxxxxx -lvixAllProducts -ldl //xxxxxx替换成自己的程序名下面将学习相关库API。(1)连接VixHost_原创 2015-10-07 10:18:38 · 1985 阅读 · 0 评论 -
kvm迁移中脏页位图机制源码分析
我们都知道KVM支持在线迁移,而其在线迁移是通过内存预拷贝(迭代拷贝)机制来实现的。预拷贝的一个思想就是不断记录脏页并每一轮迭代拷贝脏页面,直至达到一定的条件就退出迭代,进行最后的停机拷贝。关于预拷贝的原理我之前有博客进行了简单分析,在这里就不重复说明了。那这篇文章主要是就其中的脏页记录机制从源码层面进行分析。 这里分析的代码版本是kvm3.10.1和qemu 1.5.3。我们直原创 2017-02-09 18:31:00 · 3741 阅读 · 0 评论