虚拟化技术的分类:

1,模拟:Emulation

​ Qemu,PearPC,Bochs

2,完全虚拟化:Full Virtualization,Native Virtualization

​ HVM:hardware virtualization machine

​ vmware workstation,virtualBox,Parallels desktop(mac),KVM,xen

3,半虚拟化:pava-virtualization

​ 必须修改guestOS的内核,让它知道自己不是允许在物理机器删上,而是允许在虚拟环境中。

​ 使用hypercall调用物理机的cpu

​ xen,UML(user-mode Linux)

4,容器虚拟化

​ docker,openvz,LXC(linux container),libcontainer,virtuozzo,linux V Server

5,库级别虚拟化

​ wine

xen

剑桥大学开发的开源vmm(virtual machine monitor),虚拟机监视器。

xen是安装在物理机器上的。

xen只控制物理机器的cpu和内存,I/O控制,交给了在它上面安装的第一个虚拟内核(叫dom0)。处理dom0的虚拟机叫:domU,在domU上的I/O操作,都是直接发给dom0,dom0再去操作硬件控制器。domU上的I/O接口叫frontend,dom0上的I/O叫backend。

组成部分:

  • xen hypervisor

    分配cpu,memory,interrupt

  • dom0:

    特权域,I/O分配

    • 网络设备

      net-front(guestOS),net-backend(dom0)

    • 块设备

      block-front(guestOS),block-backend(dom0)

    linux kernel:

    ​ 2.6.37开始支持允许dom0

    ​ 3.0对关键特性进行了优化

    提供管理domu的工具:

    ​ 实现对虚拟机的添加,启动,快照,停止,删除等类似在,virtualBox上的操作。

  • domU:非特权域,根据虚拟化方式,有多种类型

    • PV:半虚拟化

    • HVM:硬件提供虚拟化支持,有的cpu提供虚拟化支持

    • PV ON HVM

xen的PV技术

不依赖于CPU的HVM特性,但要求guestOS的内核要做出修改,以达到知晓自己不是允许在物理机上。

运行于domu上的os:linux(2.6.24+),Netbsd,Freebsd,openSolaris

xen的HVM技术

依赖于Intel VT或AMD的AMD-V,还有依赖Qemu来模拟I/O设备

运行于domu上的os:几乎所有支持x86平台的

PV on HVM

cpu为HVM模式运行,I/O设备为PV模式运行。

运行于domu上的os:只要OS能驱动PV接口类型的IO设备(net-front,block-front)

xen的pv架构

xen的工具栈

  • xm/xend:在xen hypervisor的dom0中要启动xend服务。是最早的控制台,好像已经被弃用了。
  • xl:不需要启动xend服务。是轻量级的

下图是xm和xl的对比:

  • xe/xapi:提供了多xen管理的api,因此多用于cloud环境。

    上面的cloud环境:

    • xen server(也是linux内核)
    • XCP(xen cloud platform)
  • xenstore:为各个domainU提供的共享信息存储空间,有层级结构的名称空间,位于Dom0

统一的虚拟化管理工具

背景:虚拟化技术有xen,kvm,qemu等,每个虚拟化铲平都有自己的管理工具,学习这么多的管理工具太费劲了,所有就出现了一个救世主,virsh。它可以管理下面的3个虚拟化产品,只用一套命令即可。

virsh/libvirt:用python开发的图像化管理工具,类似VMware的图形界面,对应用户很友好。但是它必须启动libvirtd守护进程,也挺消耗资源。

RHCL对Xen的支持:

  • RHCL 5.7:默认的虚拟化技术是xen

  • RHCL 6+:仅支持kvm(红帽收购了以色列的kvm公司)

    Dom0上无法安装centos6+

    DomU上可以安装centos6+

如何在centos6+上安装xen?

1,编译3.0以上版本的内核,启动对Dom0的支持

2,编译xen程序

可以使用制作好的程序包项目:

  • xen4centos:xen官方专门为centos制作的rpm包
  • xen made easy

在Centos6.10上安装xen

1,去清华的yum源上找到xen的rpm下载网址,自己做一个repo文件(文件名为xen4.repo),指向那个地址即可

xen4.repo内容:注意url不要写错。

[xen4centos]
name=xen4 for centos 6
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/6.10/virt/x86_64/xen-410/
gpgcheck=0

2,yum install xen

由于要更新内核,所以有点慢。成功后,/boot目录下多了下面的文件。

# ls /boot/xen*
/boot/xen-4.10.4.36.g6cb1cb9c63-1.el6.config /boot/xen-4.10.4.36.g6cb1cb9c63-1.el6.gz /boot/xen.gz

3,修改/etc/grub.conf文件

修改前:

kernel /vmlinuz-4.9.206-36.el6.x86_64 ro root=/dev/mapper/vg_c610-lv_root rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us LANG=\
en_US.UTF-8 rd_NO_MD rd_LVM_LV=vg_c610/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_c610/lv_root rd_NO_DM rh\
gb quiet
initrd /initramfs-4.9.206-36.el6.x86_64.img

修改后:

kernel /xen.gz dom0_mem=1024M cpufrep=xen dom0_max_vcpus=2 dom0_vcpus_pin
module /vmlinuz-4.9.206-36.el6.x86_64 ro root=/dev/mapper/vg_c610-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=\
en_US.UTF-8 rd_NO_MD rd_LVM_LV=vg_c610/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_c610/lv_root rd_NO_DM rh\
gb quiet
module /initramfs-4.9.206-36.el6.x86_64.img

修改内容:

  • 加了一行:kernel /xen.gz dom0_mem=1024M cpufrep=xen dom0_max_vcpus=2 dom0_vcpus_pin

    宣告说kernel已经不是centos了,而是我xen了,原来的kernel降级成module了。

    xen的命令行参数说明的官方文档

  • 把原来的2行,其中的第一行的kernel替换成module;第二行的initrd替换成module。

修改后的/etc/grub.conf文件

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/vg_c610-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (4.9.206-36.el6.x86_64)
root (hd0,0)
kernel /xen.gz dom0_mem=1024M cpufrep=xen dom0_max_vcpus=2 dom0_vcpus_pin
module /vmlinuz-4.9.206-36.el6.x86_64 ro root=/dev/mapper/vg_c610-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=\
en_US.UTF-8 rd_NO_MD rd_LVM_LV=vg_c610/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_c610/lv_root rd_NO_DM rh\
gb quiet
module /initramfs-4.9.206-36.el6.x86_64.img
title CentOS 6 (2.6.32-754.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-754.el6.x86_64 ro root=/dev/mapper/vg_c610-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us LANG=\
en_US.UTF-8 rd_NO_MD rd_LVM_LV=vg_c610/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_c610/lv_root rd_NO_DM rh\
gb quiet
initrd /initramfs-2.6.32-754.el6.x86_64.img

4,重启系统

5,确认结果

# uname -r
4.9.206-36.el6.x86_64
# xl list
Name ID Mem VCPUs State Time(s)
Domain-0 0 1024 2 r----- 28.2

发现内核升级了,并且在dom0上安装了centos,分配的内存是1024M,分配的cpu是2个。

正确的做法是在物理机器上安装xen,然后在xen上安装dom0和其他domu。

  • 安装xen之前的的学习环境是:物理机器上装的是window,在window上装的virtualbox,在virtualBox上装的是centos6(内核是2.6.32-754.el6.x86_64)。
  • 安装xen之后的的学习环境是:物理机器上装的是window,在window上装的virtualbox,在virtualBox上装的是xen,在xen上装的dom0,dom0里的系统是centos6(内核是4.9.206-36.el6.x86_64)。

# c/c++ 学习互助QQ群:877684253
![](https://img2018.cnblogs.com/blog/1414315/201811/1414315-20181106214320230-961379709.jpg)
# 本人微信:xiaoshitou5854

虚拟化技术xen的简介和安装的更多相关文章

  1. VPS的虚拟化技术—-XEN,KVM,OPENVZ

    市场上的VPS商家主要有 Xen ,KVM 和 OpenVZ 三种开源的虚拟化技术 Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发.它打算在单个计算机上运行多达 100个满特征的操作系统.操作系 ...

  2. 虚拟化技术xen,kvm,qemu区别

    虚拟化类型 全虚拟化(Full Virtualization) 全虚拟化也成为原始虚拟化技术,该模型使用虚拟机协调guest操作系统和原始硬件,VMM在guest操作系统和裸硬件之间用于工作协调,一些 ...

  3. 1-3课 介绍虚拟化技术、在虚拟机中安装windows7

    虚拟化技术 可以使我们在同一台计算机上运行多个操作系统 用于教学环境 用于测试环境 和硬件无关  可移植到其他电脑直接使用 Ptov技术  不支持VtoP 节省管理成本 节省硬件投资  不用买设备 省 ...

  4. 云计算大数据:Xen、KVM、VMware、hyper-v等虚拟化技术的比较

    1.Xen.KVM.VMware.hyper-v等虚拟化技术的比较,xen和kvm,是开源免费的虚拟化软件. vmware是付费的虚拟化软件. hyper-v比较特别,是微软windows 2008 ...

  5. 基于KVM、Xen、OpenVZ等虚拟化技术的WEB在线管理工具

    1.Proxmox proxmox是一个开源的虚拟化管理平台,支持集群管理和HA.在存储方面,proxmox除了支持常用的lvm,nfs,iscsi,还支持集群存储glusterfs和ceph,这也是 ...

  6. Linux虚拟化技术KVM、QEMU与libvirt的关系(转)

    说明:个人理解,KVM是内核虚拟化技术,而内核是不能使用在界面上使用的,那么此时QEMU提供了用户级别的使用界面,相互辅助.当然,单独使用QEMU也是可以实现一整套虚拟机,不过QEMU+KVM基本是标 ...

  7. KVM虚拟化技术(一)虚拟化简介

    一 .虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行.虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程.CPU的虚拟化技术可以单CPU模 拟多CPU并行,允许一个平台同时运行多个 ...

  8. KVM -> 虚拟化简介&虚拟机安装_01

    什么是虚拟化? 在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU.内存.磁盘空间.网络适配器等),予以抽象.转换后呈现 ...

  9. 虚拟化之Xen简介

    1>相关知识简介: 1>常用的磁盘IO调度器: CFQ:完全公平队列算法: deadline:最后期限算法: anticipatory:顺序读写队列算法/预期算法: NOOP:no  op ...

随机推荐

  1. pycharm创建Django项目时报 AttributeError:'module' object has no attrbute 'main' 错误或者创建了就只有venv一个目录

    这是因为创建项目时候没有选择合适的项目环境. 所以在创建项目的时候选择一下项目的环境,比如选择python的运行环境 这时候创建的项目就不再报 AttributeError:'module' obje ...

  2. python之基础中的基础(二)

    1.字典 创建字典,alien_0={'color':'green','points':5}其中由一个又一个的“键-值”对组成. 访问键-值对相应的值,print(alien_0['color']), ...

  3. JavaScript——event事件详解

    1.事件对象 Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态. 什么时候会产生Event 对象呢? 例如: 当用户单击某个元素的时候,我们给这个元 ...

  4. java架构之路-(dubbo专题)dubbo的基本使用

    今天我们来说一下dubbo的基本使用,没有什么高阶的知识,真的超级简单易懂. Dubbo核心功能解释 dubbo 阿里开源的一个SOA服务治理框架,从目前来看把它称作是一个RPC远程调用框架更为贴切. ...

  5. webapi+Quartz.NET解决若干定时程序同时运行的问题

    项目现状: 有若干定时程序需要自启动运行,为了简便程序部署等问题,采取这种办法把定时程序集中管理到webapi中跟随api发布 代码架构介绍: 新建一个类库,类库引用Quartz(Quartz.2.3 ...

  6. C# 获取鼠标在屏幕上的位置

    获取鼠标位置及鼠标单击了哪个按键.private void GetMousePoint() {     Point ms = Control.MousePosition;     this.label ...

  7. 使用 Apache James 3.3.0(开源免费) 搭建内网电子邮件服务器(基于 Windows + Amazon Corretto 8)

    电子邮件服务器,对于很多公司,都是需要的. 虽然现在很多人,使用 QQ .微信进行一对一的工作沟通,使用QQ 群.微信群进行多人沟通,但这些即时聊天工具,与电子邮件相比,仍有很多不足: a. 电子邮件 ...

  8. MySQL基础(5) | 存储过程

    MySQL基础(5) | 存储过程 一.基础 结束符[重要] mysql的命令行执行每一条命令是以分号结尾的,也就是说识别是否为一条命令,是根据分号决定的. 然而存储过程中设计多条语句,很可能出现多个 ...

  9. iMacros 入门教程-基础函数介绍(3)

    imacros 的 PAUSE 函数用法 这个函数的作用是暂停程序的运行,也就是断点. 对于有时运行到某一步需要输入内容时,或者需要调试时非常有用 如果你混着 pause 和 wait 一起用,那么当 ...

  10. 【第二篇】xLua中lua加载方式

     xLua中lua文件加载方式 1. 直接执行字符串方式 LuaEnv luaenv = new LuaEnv(); luaenv.DoString("CS.UnityEngine.Debu ...