Xen实战之基于CentOS6.5安装Xen4.2

偶尔善良 提交于 2019-12-01 12:11:03

声明

本文可转载,但请声明出处。联系方式: jinguang.liu@qq.com

Xen4CentOS项目介绍

Xen4CentOS 项目致力提供建基于 Xen-4.2 的 xen 堆栈、一个以 3.4 LTS 主流树为本的 Linux 内核、并在发行版本内以 libvirt 和 qemu 的相关工具来支持 Xen。它由 Xen 计划、Citrix Xen 开源小组、CentOS 开发者、GoDaddy 云端运作小组、Rackspace 网站讬管及 CentOS QA 小组共同参与,旨在为CentOS-5/Xen 的用户把他们的基本结构移植及升级至 CentOS-6,同一时间更引入较新的 Xen-4 工具链。

目前该项目有一些已知问题需要注意:

  1. SELinux 支持已停用,你或许会需要为某些操作在 dom0 上停用 SELinux,当中主要有 qemu-xen 及 blktap 的存储后台;
  2. 暂时,只在 CentOS-6/x86_64 上支持 Xen4CentOS;
  3. 假若有需要重新配置 dom0 的控制台,你必须以手动方式设置序列控制台
  4. 虽然 xenlight 及 xm 皆是获支持的 xen 命令行工具,而且都通过详尽测试,唯有 xm(需执行着 xend)能套用 libvirt 的所有功能。希望在将来的发行版本中为 Libvirt 提供原生的 xl 支持。

CentOS6.5的安装

首先明确对机器的要求:拥有至少1.5GB内存,10GB以上的磁盘空间供根目录/使用。

其次运行Xen的主机应该是一台 CentOS-6/x86_64 的最少安装;CentOS 的 Xen4 堆栈只在 CentOS-6.4 及往后版本上进行测试及检验。

最后在进行下一步之先,请确保 yum 只启用了 CentOS 的软件库,而且你已采用了最新的更新。

CentOS6.5的最小安装ISO文件CentOS-6.5-x86_64-minimal.iso可以从搜狐镜像服务器上获取: http://mirrors.sohu.com/centos/6/isos/x86_64

CentOS6.5系统安装以后,关闭SELinux的功能(缺省为enforcing状态):

[root@centos ~]# getenforce 
Enforcing
[root@centos ~]# 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 

[root@centos ~]# reboot
更新系统,安装perl工具包(Xen工具需要使用Perl工具包,CentOS最小安装不支持Perl):

[root@centos ~]# yum install perl
[root@centos ~]# yum update
[root@centos ~]# reboot

安装Xen4CentOS

安装Xen对象的软件包并修改grub配置文件:

[root@centos ~]# yum install centos-release-xen
[root@centos ~]# yum install xen
[root@centos ~]# /usr/bin/grub-bootxen.sh

Xen是在linux内核之上运行,所以我们必须告诉grub先引导Xen,然后顺序引导dom0的linux内核。要达至这个目的,centos-release-xen 的组件内已包含一个脚本grub-bootxen.sh,用来自动修改/boot/grub/grub.conf配置文件:

[root@centos ~]# more /usr/bin/grub-bootxen.sh 
#!/bin/bash
#
# (c) Simon Rowe, 2013
# (c) Karanbir Singh, 2013

default=$(grubby --default-kernel)
kver=$(expr $default : '.*vmlinuz-\(.*\)')
[ -n "$kver" ] || exit 0
initrd=$(grubby --info $default | sed -ne 's/^initrd=//p')
new-kernel-pkg --install --package kernel --multiboot=/boot/xen.gz "--mbargs=dom0_mem=1024M,max:1024M loglvl=all guest_loglvl=all" -
-initrdfile=$initrd $kver
exit $?
修改后的grub.conf文件:
[root@centos ~]# more /boot/grub/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_centos-LogVol01
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (3.10.32-11.el6.centos.alt.x86_64)
        root (hd0,0)
        kernel /xen.gz dom0_mem=1024M,max:1024M loglvl=all guest_loglvl=all
        module /vmlinuz-3.10.32-11.el6.centos.alt.x86_64 ro root=/dev/mapper/vg_centos-LogVol01 rd_NO_LUKS rd_LVM_LV=vg_centos/LogVo
l00 rd_LVM_LV=vg_centos/LogVol01 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM LANG=en_U
S.UTF-8 rhgb quiet
        module /initramfs-3.10.32-11.el6.centos.alt.x86_64.img
.....
系统重启以后可以检查运行版本是否与grub.conf中配置一致及Xen是否在运行中:

[root@centos ~]# uname -r
3.10.32-11.el6.centos.alt.x86_64
[root@centos ~]# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0  1024     4     r-----     20.6

网络配置

系统安装以后,需要对网络进行配置,这里介绍的是桥接方式进行网络配置。

配置之前相关的网络配置:

[root@centos ~]# more /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE=eth0
HWADDR=00:0C:29:FA:F3:90
TYPE=Ethernet
UUID=c49a6cdc-44fc-4908-ad81-4df0d3984c65
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=10.220.33.79
PREFIX=24
GATEWAY=10.220.33.1
DNS1=10.220.32.12
DEFROUTE=yes
NAME=eth0
[root@centos network-scripts]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:FA:F3:90  
          inet addr:10.220.33.79  Bcast:10.220.33.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fefa:f390/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1469 errors:0 dropped:0 overruns:0 frame:0
          TX packets:486 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:257573 (251.5 KiB)  TX bytes:59515 (58.1 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
[root@centos ~]# brctl show
bridge name     bridge id               STP enabled     interfaces

创建xenbr0网桥,eth0以太网物理网卡桥接到此网桥上,并创建xenbr0虚拟物理网卡,并配置相关的接口地址,桥接方式的逻辑示意图如下图所示

# To bridge network traffic, like this:
#
# dom0: ----------------- bridge -> real eth0 -> the network
#                            |
# domU: fake eth0 -> vifN.0 -+
创建及修改过程log:
[root@centos ~]# brctl addbr xenbr0
[root@centos ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.000000000000       no
[root@centos ~]# cd /etc/sysconfig/network-scripts
[root@centos network-scripts]# cp ifcfg-eth0 ifcfg-xenbr0
[root@centos network-scripts]# vi ifcfg-xenbr0 
DEVICE=xenbr0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=10.220.33.79
PREFIX=24
GATEWAY=10.220.33.1
DNS1=10.220.32.12
DEFROUTE=yes
NAME=xenbr0
[root@centos network-scripts]# vi ifcfg-eth
DEVICE=eth0
HWADDR=00:0C:29:FA:F3:90
TYPE=Ethernet
UUID=c49a6cdc-44fc-4908-ad81-4df0d3984c65
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
DEFROUTE=yes
NAME=eth0
BRIDGE=xenbr0
[root@centos network-scripts]# service network restart
查看实际生效的配置:

[root@centos ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
xenbr0          8000.000c29faf390       no              eth0
[root@centos ~]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:0C:29:FA:F3:90  
          inet6 addr: fe80::20c:29ff:fefa:f390/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:88988 errors:0 dropped:0 overruns:0 frame:0
          TX packets:605 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:8708966 (8.3 MiB)  TX bytes:94984 (92.7 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:10 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1056 (1.0 KiB)  TX bytes:1056 (1.0 KiB)

xenbr0    Link encap:Ethernet  HWaddr 00:0C:29:FA:F3:90  
          inet addr:10.220.33.79  Bcast:10.220.33.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fefa:f390/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:18463 errors:0 dropped:0 overruns:0 frame:0
          TX packets:330 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1544430 (1.4 MiB)  TX bytes:62200 (60.7 KiB)

安装GNOME桌面

安装Desktop,X Window System包,并修改启动级别。
[root@centos etc]# yum groupinstall Desktop
[root@centos etc]# yum groupinstall "X Window System"
[root@centos etc]# vi inittab 

# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

参考资料

1. http://wiki.centos.org/zh/HowTos/Xen

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!