zoukankan      html  css  js  c++  java
  • 虚拟化技术xen的简介和安装

    虚拟化技术的分类:

    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
  • 相关阅读:
    Microsoft Enterprise Library 5.0 系列(二) Cryptography Application Block (初级)
    Microsoft Enterprise Library 5.0 系列(五) Data Access Application Block
    Microsoft Enterprise Library 5.0 系列(八) Unity Dependency Injection and Interception
    Microsoft Enterprise Library 5.0 系列(九) Policy Injection Application Block
    Microsoft Enterprise Library 5.0 系列(三) Validation Application Block (高级)
    软件研发打油诗祝大家节日快乐
    从挖井的故事中想到开发管理中最容易忽视的几个简单道理
    ITIL管理思想的执行工具发布
    管理类软件设计“渔”之演化
    20070926日下午工作流与ITILQQ群 事件管理 讨论聊天记录
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/12247551.html
Copyright © 2011-2022 走看看