centos 6安装xen并不像centos 5那样轻松,因为在centos 6中,官方源已经去除了xen的rpm包,只能使用第三方源或自行编译,这里推荐使用第三方源,编译安装要解决的问题比较多。还有一个包libvirt,这个是管理xen的api,官方的这个包已经不支持xen,并且是0.9版的需要更高版本的iptables支持,所以libvirt需要编译安装。
下面是在CentOS 6 64位系统进行安装配置Xen。
rpm -Uvh http://www.crc.id.au/repo/x86_64/kernel-xen-release-6-3.noarch.rpm //导入第三方源安装Xen
yum install bridge-utils //安装网桥设置工具
yum install kernel-xen xen //安装xen及内核
xen内核安装后,会自动插入引导xen内核代码到/boot/grub/grub.conf文件,但还需要进行相应的修改。
修改后引导xen内核的代码如下:
title CentOS (2.6.32.56-1.el6xen.x86_64)
root (hd0,7)
kernel /xen.gz dom0_mem=1024M loglvl=all guest_loglvl=all
module /vmlinuz-2.6.32.56-1.el6xen.x86_64 ro root=/dev/mapper/VolGroup-LogVol00 rd_LVM_LV=VolGroup/LogVol00 nomodeset
module /initramfs-2.6.32.56-1.el6xen.x86_64.img
这段代码仅够参考,不一定适用于你的配置。
这是必须关闭的,要不会因为selinux的安全机制导致xen无法正常工作。
编辑selinux配置文件
vi /etc/sysconfig/selinux
修改为如下:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
还有一点配置也很重要,就是禁止netmanager接管网络,因为这个工具不支持网桥管理。
在/etc/sysconfig/network-script/ifcfg-eth0中加入:
NM_CONTROLLED=no
引导后执行xm info测试:
[root@localhost ~]# xm info
host : localhost.localdomain
release : 2.6.32.56-1.el6xen.x86_64
version : #1 SMP Mon Feb 20 13:03:03 EST 2012
machine : x86_64
nr_cpus : 4
nr_nodes : 1
cores_per_socket : 2
threads_per_core : 2
cpu_mhz : 2394
hw_caps : bfebfbff:28100800:00000000:00003f40:009ae3bd:00000000:00000001:00000000
virt_caps : hvm
total_memory : 1972
free_memory : 412
free_cpus : 0
xen_major : 4
xen_minor : 1
xen_extra : .2
xen_caps : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64
xen_scheduler : credit
xen_pagesize : 4096
platform_params : virt_start=0xffff800000000000
xen_changeset : unavailable
xen_commandline : dom0_mem=1024M loglvl=all guest_loglvl=all
cc_compiler : gcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC)
cc_compile_by : mockbuild
cc_compile_domain : crc.id.au
cc_compile_date : Mon Feb 20 12:52:37 EST 2012
xend_config_format : 4
yum install virt-install virt-viewer
因为rpm安装的libvirt不支持xen连接,所以我们使用编译安装。还有版本也不能选择高的,不然可能会因为iptables的版本低而不能使用libvirt。
yum install gcc xen-devel libxml2-devel gnutls-devel device-mapper-devel libnl-devel make
cd /tmp
wget http://libvirt.org/sources/libvirt-0.8.1.tar.gz
tar xzf libvirt-0.8.1.tar.gz
cd libvirt-0.8.1
./configure --with-xen --with-xen-inotify --with-libvirtd
make && make install
然后打开/usr/local/etc/libvirt/libvirtd.conf文件,删除unix_sock_dir = "/var/run/libvirt"前面的注释,并创建/var/run/libvirt目录。
之后启动libvirtd,并设置开机启动
libvirtd -d
echo "/usr/local/sbin/libvirtd -d" >>/etc/rc.d/rc.local
我们这里使用virt-install工具进行guest的安装,当然你也可以使用xm命令安装,不过相对麻烦点。
可以执行virt-install --help学习这工具的使用方法。
下面是安装guest的示例
virt-install -n CentOSVM1 -r 512 -f /xen/CentOSVM1.img -l http://www/ �Cnetwork=network:default -s 10 �Cnographics �Cvcpus=2
或者使用交互式安装
virt-install --prompt
-n CentOSVM1 设置虚拟服务器名称
-r 512 设置内存大小
-f /xen/CentOSVM1.img 虚拟磁盘文件的保存路径,如果有重名可以使用�Cforce参数强制重建。
-l http://www/ 安装文件的访问方式,支持nfs http ftp smb等多种方式。如果你对你的带宽比较自信,可以使用http://mirrors.163.com/centos/5.5/os/i386/网易的镜像站
--network=network:default 网络连接方式,我选择的是route中的default
-s 10磁盘文件的大小,单位是G
--nographics 不使用图形界面,可以不加此参数,然后加--vnc看看图形效果
--vcpus=2 虚拟CPU的个数
在执行virt-install命令安装系统之前,先确定你的安装源,支持nfs http ftp smb等多种方式,宽带大的话,可以使用http直接连接远程安装源,比如mirror.163.com。
我这里adsl上网的,本地已经下载有iso文件了,所以在本地架设个http服务器进行安装。
1、挂载iso文件到/iso目录,这个目录必须存在。
mount -o loop CentOS-6.2-x86_64-minimal.iso /iso
2、安装httpd服务器,我这里安装apache
yum install httpd
service httpd start
3、创建软链接或直接复制文件到apache根目录/var/www/html,如果你的centos 6.2是完整版,只需要做个软链接,如果下载的是精简版,也就是minimal,需要复制全部文件到根目录,因为.treeinfo这个文件需要相应的修改。
centos 6.2完整版:
ln -s /iso /var/www/html
centos 6.2精简版:
cp -R /iso /var/www/html
修改.treeinfo文件,如:
[general]
family = CentOS
timestamp = 1323560005.81
variant =
totaldiscs = 1
version = 6.2
discnum = 1
packagedir =
arch = x86_64
[images-x86_64]
kernel = isolinux/vmlinuz
initrd = isolinux/initrd.img
[images-xen]
kernel = isolinux/vmlinuz
initrd = isolinux/initrd.img
[stage2]
mainimage = images/install.img
4、在安装之前,需要暂时关闭iptables,否则安装过程中会无法取得相应文件。
service iptables stop
5、开始使用virt-install安装
virt-install -n centos6 -r 512 -f /xen/CentOSVM1.img -l http://192.168.1.100/iso --network=network:default -s 4 --vcpus=2
之后会自动调用virt-viewer工具显示安装界面。
6、启动guest centos6
安装完成后会要求重启,这时guest关闭之后不会自动启动,需要使用xm start命令启动:
xm start centos6
7、开启iptables
之前为了连接安装源,暂时关闭了iptables,现在需要启动iptables,否则guest无法连接外网。
service iptables start
8、使用virt-viewer管理guest
virt-viewer centos6
执行这条命令即可连接虚拟机centos6进行管理了,当然也可以直接使用ssh连接更简单。
另外,我安装过virt-manager来安装guest,但到创建域时就出现KeyError错误,不知道如何解决,有懂的告诉一声。
**********************************************************************************************************************
环境:
虚拟服务器:
CentOS5.4
192.168.10.6
虚拟主机:
CentOS5.4 /RHEL 5.4
192.168.10.8
虚拟服务器XEN通过yum来安装,虚拟主机通过virt-install来安装。
步骤:
1.为了方便行事,把系统默认的yum源换成中科大的源,这个速度国内比较快。
cd /etc/yum.repos.d
mv CentOS-Base.repo CentOS-Base.repo.save
wget http://centos.ustc.edu.cn/CentOS-Base.repo.5
mv CentOS-Base.repo.5 CentOS-Base.repo
2.确认当前XEN并未安装在系统中,并通过yum来安装XEN
yum clean all
yum grouplist //若Virtualization位于Available Groups而非Installed Groups里则说明XEN并未安装在系统中
yum groupinstall Virtualization -y
//***配置VT yum
3.安装完成后修改grub让它以xen内核启动
vi /etc/grub.conf
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-164.11.1.el5xen)
root (hd0,0)
kernel /boot/xen.gz-2.6.18-164.11.1.el5
module /boot/vmlinuz-2.6.18-164.11.1.el5xen ro root=LABEL=/
module /boot/initrd-2.6.18-164.11.1.el5xen.img
title CentOS (2.6.18-164.el5PAE)
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-164.el5PAE ro root=LABEL=/
initrd /boot/initrd-2.6.18-164.el5PAE.img
grub.conf里面大概会是这个样子,需要手工改的地方是default=1,把它改成0,即让CentOS (2.6.18-164.11.1.el5xen)来做默认启动。
保存退出后重启系统。
4.开始安装虚拟主机的准备工作:
创建磁盘
dd if=/dev/zero of=/app/xendata/gaso1disk bs=25600 seek=1024k count=0 //创建个25g的磁盘空间
mkfs -t ext3 /app/xendata/gaso1disk //格成ext3格式
拷贝系统镜像存放到本地/app/gasoimages/centos5.iso
把系统镜像挂在某个目录下(此处挂到/tmp)
mount -o loop /app/gasoimages/centos5.iso /tmp
启动nfs服务
service nfs start
编辑nfs目录权限
vi /etc/exports
/tmp 192.168.10.*(ro) //添加这么一行
保存退出,并重新输出挂载目录
exportfs -rv
5.开始安装虚拟主机
virt-install -n gasotest -r 2048 --vcpus=2 -f /app/xendata/gaso1disk --nographics -l /tmp
-n指定虚拟主机名称
-r指定虚拟主机使用的内存大小,这里是2g
--vcpus=2指定虚拟主机使用的cpu个数
-f指定虚拟主机使用的磁盘空间文件
--nographics指定虚拟主机安装不开启图形界面
-l指定虚拟主机安装镜像的位置,这里指到/tmp实际上是不启作用的,应该指到刚才建立的那个nfs上,但是没关系,安装的时候可以重新指定。
选择语言->选择NFS->NFS主机名称:192.168.10.6;NFS目录:/tmp->选择ipv4,ip地址手工设置一下:192.168.10.8/255.255.255.0,网关填一下,dns可填可不填->之后安装过去跟正常安装系统类似,可以选择文本安装,也可以选择vnc安装。
至此虚拟主机的安装基本就可以过了。
6.一些XEN控制虚拟主机的命令:
xm list //查看运行的虚拟主机都有哪些,其中Domain0是XEN服务器这个宿主机
xm shutdown gasotest //关闭刚才建立的虚拟主机,gasotest是虚拟主机的名称,也可以用id关闭。
xm create gasotest //开启虚拟主机gasotest
xm create gasotest -c //这个-c参数可以调用console跟踪进去。
注:
1.刚创建的虚拟主机的配置文件是/etc/xen/gasotest,以后创建的虚拟主机都会在/etc/xen/下生成一个同名的配置文件,修改里面的参数可以调整虚拟主机的参数。
2.把虚拟主机加入开机自动启动:
chkconfig --add xendomains
ln -s /etc/xen/gasotest /etc/xen/auto/gasotest //放在这个auto目录里的域开机时都会自动启动,当然前提是先把xendomains服务加入开机启动。