Centos 6.4 xen服务器搭建
现在虚拟化大家已经很熟悉了,公司也在用虚拟化,想写一写虚拟化方面的东西。
首先就是xen,xen是半虚拟化技术,所以我可以用VMware上面创建一个配置比较高的虚拟机来模拟xen服务器的搭建过程,kvm仅支持硬件虚拟化,kvm的服务器需要服务器CPU支持并开启VT(VM|SVM),所以等写kvm文章的时候会找一台dell的服务器来操作演示。
一、 Xen概述
1.1 简介
英国剑桥大学计算机实验室开发了Xen开源项目。除了剑桥大学的科学家以外,很多其它IT领域集团也都参与了Xen开源项目,其中包括IBM、AMD、 HP、Red Hat和Novell。 Xen支持x86、x86-64、安腾( Itanium)、Power PC和ARM多种处理器,因此Xen可以在大量的计算设备上运行,目前Xen支持Linux、NetBSD、FreeBSD、Solaris、Windows和其他常用的操作系统作为Guest OS在其管理程序上运行。Xen的创始人成立了他们自己的公司XenSource(后被Citrix收购),目的是为了基于Xen hypervisor而提供一个完善的虚拟化解决方案。同时与其它虚拟化产品(如VMware ESX)也有竞争。其它企业也在它们自己的产品中综合应用了Xen hypervisor。
1.2 Xen基本组件
Hypervisor: 在硬件与虚拟机之间,是必须最先载入到硬件的第一层,只实现CPU,Memory, Inturrupt3种资源的虚拟。Hypervisor载入后,就可以部署虚拟机了。在Xen中,虚拟机叫做domain。
Domain 0: 运行在Hypervisor之上,通常来说必须和Hypervisor同时部署,是具有直接访问硬件和管理控制其他虚拟机的特权Guest OS,并提供通用I/O设备的驱动 ,Dom0上面有console接口,所有虚拟机的管理通过Dom0来管理,Dom0拥有管理其他硬件的管理权限。
DomainU: 运行在Hypervisor之上的普通Guest OS,不能直接访问硬件资源,可以独立并行的存在多个。Domain U中的Guest OS要想使用某个硬件设备,就必须把对硬件的请求发给Domain 0。
1.3 Xen虚拟化的分类
Xen的半虚拟化(pv):
半虚拟化(Paravirtualization)有些资料称为“超虚拟化”,简称为PV,是Xen主导的虚拟化技术。这种技术允许虚拟机操作系统感知到自己运行在Xen Hypervisor上而不是直接运行在硬件上,同时也可以识别出其他运行在相同环境中的客户虚拟机。
在Xen Hypervisor上运行的半虚拟化的操作系统,为了调用系统管理程序(Xen Hypervisor),要有选择地修改操作系统,然而却不需要修改操作系统上运行的应用程序。由于 Xen 需要修改操作系统内核,所以您不能直接让当前的 Linux 内核在 Xen 系统管理程序中运行,除非它已经移植到了Xen 架构。不过,如果当前系统可以使用新的已经移植到 Xen 架构的Linux 内核,那么您就可以不加修改地运行现有的系统。
Xen的完全虚拟化(fv):
完全虚拟化(Hardware Virtual Machine)又称“硬件虚拟化”,简称HVM,是指运行在虚拟环境上的虚拟机在运行过程中始终感觉自己是直接运行在硬件之上的,并且感知不到在相同硬件环境下运行着其他虚拟机的虚拟技术。
在Xen Hypervisor运行的完全虚拟化虚拟机,所运行的操作系统都是标准的操作系统,即:无需任何修改的操作系统版本。同时也需要提供特殊的硬件设备。
值的注意的是,在Xen上虚拟的Windows虚拟机必须采用完全虚拟化技术。
二、安装Xen
# grep flags /proc/cpuinfo |grep pae #查看CPU信息:pae表示CPU支持半虚拟化,如果输出信息还有vmx/svm(vmx为Intel,svm为AMD),那么CPU支持全虚拟化 。
# yum install centos-release-xen -y #红帽RedHat再RHEL 6放弃Xen后,下载Xen源码编译安装时Xen安装的一种方法,但是编译安装很复杂很慢,这里是下载Xen-yum官方源文件。
# yum install -y perl #Xen工具需要perl得支持
# yum install -y xen #安装xen内核和相关依赖包
#查看rpm -qa|grep xen 和ls /usr/bin|grep xen 会看到多了很多xen的文件
# sh /usr/bin/grub-bootxen.sh #安装此脚本会在grub.conf里面自动添加一个引导Xen内核的条目,不然就自己修改,不用原来的内核,改用内核为xen。
# cat /boot/grub/grub.conf #让我们来查看一下配置文件
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (3.18.34-20.el6.x86_64)
root (hd0,0)
kernel /xen.gz dom0_mem=1024M,max:1024M cpuinfo com1=115200,8n1 console=com1,tty loglvl=all guest_loglvl=all #kernel 为/xen.gz dom0第一台虚拟机的内存为1G,内核默认启动3.18版本的内核
module /vmlinuz-3.18.34-20.el6.x86_64 ro root=UUID=10ff6781-df4f-4b62-96a8-93afcfbb923d rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
module /initramfs-3.18.34-20.el6.x86_64.img
title CentOS (2.6.32-358.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=10ff6781-df4f-4b62-96a8-93afcfbb923d 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-358.el6.x86_64.img
#reboot #重启操作系统,使其操作生效。