根据之前KVM虚拟化的整理,虚拟化技术分类如下:

虚拟化技术的分类:

     (1) 模拟:Emulation

         Qemu, PearPC, Bochs

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

         HVM

         VMware Workstation, VirtualBox, VMware Server, Parallels Desktop, KVM, Xen

     (3) 半虚拟化:ParaVirtualization

         GuestOS:知晓自己是运行Virtualization

         Hypercall

         解决安装:Xen, UML(User-Mode Linux)

     (4) OS级别的虚拟化

         将用户空间分割为多个,彼此间互相隔离,

         容器级虚拟化

         OpenVZ, LXC(Linux Container), libcontainer, Virtuozzo, Linux V Servers

     (5) 库级别虚拟化

         Wine


Xen组成部分:

     (1) Xen Hypervisor

         分配CPU、Memmory、Interrupt

     (2) Dom0

         特权域,I/O分配

             网络设备:net-front(GuestOS), net-backend

             块设备:block-front(GuestOS), block-backend


         Linux Kernel:

             2.6.37:开始支持运行Dom0

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

         提供管理DomU工具栈

             用于实现对虚拟机进行添加、启动、快照、停止、删除等操作

     (3) DomU

         非特权域,根据其虚拟化方式实现,有多种类型:

             PV:半虚拟化

             HVM:全虚拟化

             PV on HVM:I/O半虚拟化

         Xen的PV技术:

             不依赖于CPU的HVM特性,但要求GuestOS的内核作出修改以知晓自己运行于PV环境

             运行于DomU中的OS:Linux(2.6.24+), NetBSD, FreeBSD, OpenSolaris

         Xen的HVN技术:

             依赖于Intel VT或AMD AMD-V,还要依赖于Qemu来模拟IO设备

             运行于DomU中的OS:几乎所有支持此x86平台的

         PV on HVM:

             CPU为HVM模式运行

             IO设备为PV模式运行

             运行于DomU中的OS:只要OS能驱动PV接口类型的IO设备,比如net-front, block-front等


Xen的工具栈:

     xm/xend:在Xen Hypervisor的Dom0中要启动xend服务

           xm:命令行管理工具,有诸多子命令,如create, destroy, stop, pause...

     xl:基于libxenlight提供的轻量级的命令行工具栈

     xe/xapi:提供了对xen管理的api,因此多用于cloud环境,如Xen Server, XCP等


CentOS对Xen的支持:

     RHEL 5.7-:默认的虚拟化技术为xen

         kernel version:2.6.18

             kernel

             kernel-xen

     RHEL 6+:仅支持kvm

         Dom0:不支持

         DomU:支持

如何在CentOS 6.6上使用Xen:

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

     (2) 编译xen程序

制作好相关程序包的项目:

     xen4centos

     xen made easy


在CentOS 6.5上安装Xen:

yum -y install wget 

wget http://us3.mirror.crc.id.au/repo/kernel-xen-release-el6-latest.noarch.rpm

rpm -ivh kernel-xen-release-el6-latest.noarch.rpm 

yum -y install perl

yum install -y xen kernel-xen xen-libs python-virtinst bridge-utils

编辑/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/sda3

#          initrd /initrd-[generic-]version.img

#boot=/dev/sda

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title CentOS (4.9.38-1.el6xen.x86_64)

root (hd0,0)

kernel /xen.gz dom0_mem=1024M cpufreq=xen dom0_max_vcpus=1 dom0_vcpus_pin

module /vmlinuz-4.9.38-1.el6xen.x86_64 ro root=UUID=a7a56b12-cb53-4113-acc7-41cd71cf36bd rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet

module /initramfs-4.9.38-1.el6xen.x86_64.img

title CentOS (2.6.32-431.el6.x86_64)

root (hd0,0)

kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=a7a56b12-cb53-4113-acc7-41cd71cf36bd rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet

initrd /initramfs-2.6.32-431.el6.x86_64.img

重启系统

reboot


xl的常用命令:

    list:显示Domain的相关信息

        Xen虚拟机状态:

            r:running

            b:阻塞

            p:暂停

            s:停止

            c:崩溃

            d:dying, 正在关闭的过程中

    shutdown:关机

    reboot:重启

    pause:暂停

    unpause:解除暂停

    save:将DomU的内存中的数据转存至指定的磁盘文件中

        xl [-vf] save [options] <Domain> <Checkpointfile> [<ConfigFile>]

    restore:从指定的磁盘文件中恢复DomU内存数据

        xl [-vf] restore [options] [<ConfigFile>] <CheckpointFile>

    vcpu-list

    vcpu-pin

    vcpu-set

    info:当前xen hypervisor的摘要信息

    domid

    domname

    top:查看domain资源占用排序状态的命令

    network-list:查看指定域使用网络及接口

    network-attach

    network-detach

    block-list:查看指定域使用的块设备列表

    block-attach

    block-detach

    uptime:运行时长