使用xen虚拟化解决企业对虚拟化的需求(1)

什么是虚拟化?这个答案肯定困扰过大量小白…不过好在其实小白也不需要搞定这个问题。不过对于运维人员和所谓的“云”工程师来说这个问题确实值得研究。对于我的理解是这样的:

在早期电脑体积够大(你懂的!都是一个大房间一个大房间组成,不过对于现在来说它的计算能力还不如现在用的智能手机)并且数量稀有,所以使用这些“砖头”的人一般都是科研人员或者研究计算机的人。那时候都是一群人使用那些可怜的不行的内存和CPU。而且在使用的过程中并不是在操作系统层进行隔开的,所以很多人萌生出制造一台更大的机器(你不知道你们一给计算机开机整个小城的电灯泡都得暗一下吗?)并且能够切割计算资源、内存资源、I/O资源。给每个人使用,这就是早期虚拟化的目的,不过悲剧的是有了架构以后微小的PC机出现了。代替了虚拟化所以虚拟化在这边就占时结束了。

接下来PC主机越来越流行,并且性能越来越高。导致现在性能过剩,那么如果利用好资源呢?那么虚拟化技术再次回归江湖。不过到现在我都没说到什么是虚拟化,虚拟化就是:将平台OS中奖五大硬件(一组物理平台)给抽象为多组不同的互相隔离的平台(OS),每一个计算平台需要有五个部件。

虚拟化技术分类:

完全虚拟化:对CPU、内存不做模拟, 只对其进行分配和管理, 可通过BT, HVM等技术进行加速,并且虚拟机不知道自己是在虚拟环境中。所以对完全虚拟化来说性能表象并不是很好!

半虚拟化:在底层硬件上安装VMM(Virtual Machines Monitor)来管理各虚拟机, 各虚拟机的内核需要修改, 从而知道自己是虚拟机, 通过特殊方式调用驱动和特权指令!所以性能优于完全虚拟化,但是完全虚拟化可以在不同硬件平台上进行虚拟(虽然性能更低)

OS级别虚拟化:类似于在一个系统中的用户空间,性能几乎没有损失!比如大家组用过OPENVZ架构的VPS,或者现在流行的docker。

除了这些还有库级别的虚拟化,比如让linux跑上windows的程序可以使用。还有应用程序虚拟化,比如java的虚拟机就算!

虚拟化解决方案:

能够解决虚拟化的方案有很多,比如比较经典的xen(这就是我们今天所需要讲的),KVM现在是红帽的亲儿子,并且被收录进Linux内核之中。在现在比较流行使用KVM了。不过早些年在没有KVM的时候xen可是红帽的干儿子,只不过KVM的出现导致了xen流失了地位…当然其中的故事都是商业故事有兴趣可以google一下!

什么是xen?以及组成部分:

XEN由剑桥大学开发,属于开源的虚拟化解决方案,可以在一台计算机实现128个虚拟机。(当年还是很不错的哦!)

xen的组成部分可以分为三大类:

(1) xen hypervisor 核心的虚拟化组成部分

(2) Dom0:

特权域:I/O分配
Linux Kernel:

2.6.37开始支持DOM0
3.0:对关键特性进行优化

网络设备:
net-front(GUESTOS) net-backed

块设备:
block-front(GUESTOS) block-backend

提供管理DOMU工具栈:
用于实现对虚拟机添加、启动、停止、快照等功能

(3) DOMU:
非特权域:(根据其虚拟化方式实现,有多种类型,不过也可以称为用户域!)

PV:半虚拟化
HVM:基于硬件辅助的完全虚拟化
PV ON HVM:CPU为HVM运行I/O为PV方式

关于xen的工具栈:

在说xen工具栈之前首先说说什么是工具栈?工具栈其实就是…比如你在使用vmware workstation或者在使用virtualbox的时候打开的图形界面让你进行配置的一个交互接口就叫做工具栈,不过在Linux中也有,只不过自带的都是命令行方式进行配置或者定义在一个配置文件中进行启动!不过也有第三方的工具栈可以提供图形化界面。如果你比较喜欢自己写脚本进行自动部署的话命令行方式是最棒的,而且可以让你了解虚拟化需要配置那些选项而不是在商业中跟着向导走!

其实所谓的云只是虚拟化的一个工具栈,只不过它建立在N多的物理机之上然后统计资源并自动进行创建虚拟机、自动进行调配的一个程序(工具栈)而已!

我们再次回到主题来说说xen有哪些工具栈吧?

xm/zend:在xen hypervisor 的Dom0中药启动xend服务
xm:命令行管理工具,有诸多指令,运行时需要启动xend服务,注意:在4.5版本以后已经取消xm工具!
xl:libxenlight提供的轻量级的命令行管理工具,在4.5版本以后一直优化使用!
xe/xapi:提供了对xen管理API,因此多运用于cloud环境:xen server,xcp 不过现在使用云一般都是用openstart配上KVM了…可怜的xen
virsh/libvirt:对全平台虚拟机软件图形化管理的工具栈。
这个是红帽提供的早先年是针对xen开发的开源的工具栈现在全部指向了KVM并且删除了对xen的支持…

如何安装xen on centos7?

安装xen在centos5之中非常方便直接yum install即可但是在cnetos6刚开始的时候红帽就收购了KVM作为亲儿子并且放弃了 原来的干儿子xen而且还加以捣乱不让你顺利的安装xen!(可见商业公司的德行!)

安装xen在centos6的版本需要升级内核,不过方便的是可以使用xen4centos这个神奇的release包一起安装。–>随后别忘了在/boot/grub之中添加一个选项,首先复制安装好kernel的新版本的启动选项然后更改为:

kernel /xen.gz dom0_mem=512M cpufreq=xen dom0_max_vcpus=2 dom0_vcpus_pin
module /vmlinuz-3.18.12-11.el6.x86_64 ro root=/dev/mapper/vg0-root rd_NO_LUKS rd_NO_DM.UTF-8 rd_LVM_LV=vg0/swap rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg0/root KEYBOARDTYPE=pc KEYTABLE=us rhgb crashkernel=auto quiet rhgb quiet
module /initramfs-3.18.12-11.el6.x86_64.img

不过在xen安装在centos7中其实更加简单也是有xen release的包。以下是步骤:

yum -y install centos-release-xen #安装相关release的包!
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-Xen.repo #不进行对包进行检查...你懂的
yum --enablerepo=centos-virt-xen -y update kernel #升级kernel,最好使用阿里云景象,不过有问题的是也需要不对包进行检查关键就是速度快,如果随机找的话下载很慢,原因就是电信搞鬼...
yum --enablerepo=centos-virt-xen -y install xen #安装xen或者也可以安装全部包使用xen*
vi /etc/default/grub #设置启动项并且添加对xen的支持:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=768M,max:1024M cpuinfo com1=115200,8n1 console=com1,tty loglvl=all guest_loglvl=all"
GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT="console=hvc0 earlyprintk=xen nomodeset"
[root@localhost ~]# /bin/grub-bootxen.sh #运行启动脚本
GRUB_CMDLINE_XEN_DEFAULT already set in /etc/default/grub, not touching
GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT already set in /etc/default/grub, not touching
Regenerating grub2 config
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.18.34-20.el7.x86_64
Found initrd image: /boot/initramfs-3.18.34-20.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.18.34-20.el7.x86_64
Found initrd image: /boot/initramfs-3.18.34-20.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.18.34-20.el7.x86_64
Found initrd image: /boot/initramfs-3.18.34-20.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.18.34-20.el7.x86_64
Found initrd image: /boot/initramfs-3.18.34-20.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-b65e34fdaa114fcbbc334176bf834af6
Found initrd image: /boot/initramfs-0-rescue-b65e34fdaa114fcbbc334176bf834af6.img
done
Setting Xen as the default
[root@localhost ~]# shutdown -r now #重启进入xen相关模块

这样就算把xen安装完毕了,在下一篇文章中我来说说如何使用传统工具栈和virt工具栈进行对xen的配置!

Comments

Leave a Reply

Your email address will not be published. Name and email are required