CentOS 6.5系统中xen虚拟机的安装和配置
一、环境
系统:centOS6.3
xen版本:4.1.2
linux kernel:3.1.2
libvirt:0.7.7
资源地址
xen:http://bits.xensource.com/oss-xen/release/4.1.2/xen-4.1.2.tar.gz
kernel:http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.2.tar.bz2
libvirt:http://pkgs.fedoraproject.org/repo/pkgs/libvirt/libvirt-0.7.7.tar.gz/5f315b0bf20e3964f7657ba1e630cd67/libvirt-0.7.7.tar.gz
libvirt所有的版本:http://pkgs.fedoraproject.org/repo/pkgs/libvirt/
xen和内核都是编译安装,libvirt也需要编译安装,因为6.0之后默认支持的虚拟化是KVM,源里面的libvirt默认是不支持xen的。
yum install libvirt 这种安装方式使用virt-install会出现错误:主机不支持任何虚拟化。
使用virt-manager会出现无法连接xen。
1、初始化环境
yum update
2、关闭selinux,xen不支持selinux。
vi /etc/selinux/config
SELINUX=disabled
3、安装必备软件包
yum -y groupinstall "Development Libraries"
yum -y groupinstall "Development Tools"
yum -y install transfig wget texi2html libaio-devel dev86 glibc-devel e2fsprogs-devel gitk mkinitrd iasl xz-devel bzip2-devel pciutils-libs pciutils-devel SDL-devel libX11-devel gtk2-devel bridge-utils PyXML qemu-common qemu-img mercurial libidn-devel
yum -y install glibc-devel.i686texinfo libuuid-devel iasl python-lxml
yum -y install openssl openssl-devel
yum -y install ncurses ncurses-*
yum -y install python-devel
yum -y install vim wget tcpdump ntp ntpdate man smartmontools links lynx ethtool xorg-x11-xauth
4、安装xen
tar zxvf xen-4.1.2.tar.gz
cd xen-4.1.2
make world
make install
将xen加入启动脚本/sbin/chkconfig --add xend
/sbin/chkconfig --add xencommons
/sbin/chkconfig --add xendomains
/sbin/chkconfig xend on
/sbin/chkconfig xendomains on
/sbin/chkconfig xencommons on
5、安装Linux3.1.2内核
linux3.0之后已经默认支持xen,所以3.0之后的版本不需要安装xen-kernel内核补丁,直接编译内核就可以。
tar jxf linux-3.1.2.tar.bz2
cd linux-3.1.2
make menuconfig
参数配置:
Processor type and features --- >
选中Paravirtualized Guest Support
Device Drivers --->
XEN driver support --->
[ * ] Xen memory balloon driver
[ * ] Scrub pages before returning them to system
<*> Xen /dev/xen/evtchn device
[ * ] Backend driver support
<*> Xen filesystem
[ * ] Create compatibility mount point /proc/xen
[ * ] Create xen entries under /sys/hypervisor
<*> userspace grant access device driver
在.config文件中做如下修改,我在创建虚拟机的时候出现vif0错误。查找网上的资料说是下面两个没有修改。
CONFIG_XEN_BLKDEV_BACKEND=m
CONFIG_XEN_NETDEV_BACKEND=m
编译安装
make -j6
make -j6 modules
make -j6 modules_install
make -j6 install
depmod 3.1.2
注:-j参数是指定运行的线程数,没有用这个参数会慢特别多。建议使用节省编译时间。后面的数字根据自己的机器配置设置。详细参数可以查看man make
6、编译安装libvirt
tar -zxvf libvirt-0.7.7.tar.gz
./configure
make && make install
运行程序
libvirt:libvirtd -d
7、修改启动项,使用xen内核启动
vi /etc/grub.conf
默认会有一个3.1.2的启动项。基本是是这样的:
title CentOS (3.1.2)
root ***
kernel /**********
initrd /********
复制上面几行。title前面粘贴,在root和kernel之间插入一行kernel /xen.gz
修改kernel和initrd为module,修改后为:
title xen (3.1.2)
root ***
kernel /xen.gz
modul /**********
modul /********
然后修改default=N这个,查看修改的这个title xen是第几个title,第一个则修改为default=0
第二个修改为default=1,依次类推。
reboot
二、重新启动进入系统后:
xl list查看
出现下面这个证明安装好了。
Name ID Mem VCPUs State Time(s)
Domain-0 0 29762 8 r----- 3687.1
1、xen网桥配置
显示xen网桥:brctl show
没有发现xenbr0虚拟网卡
xen4.1版本之后官方建议手动建立桥接网络。所以默认的/etc/xen/scripts/network-bridge 脚本是没有启动的。
(1)关闭xen网络脚本
/etc/xen/scripts/network-bridge stop
(2)修改xen配置文件
vi /etc/xen/xend-config
注释下面两行
#network-script network-bridge)
#(vif-script vif-bridge)
(3)重新启动xend服务
service xend restart
(4)手动创建桥接网络,将物理网卡eth0设置为桥,我设置的服务器是DELL 410,网卡装完系统是em1,em2,只是名称区别而已。
vi /etc/sysconfig/network-scripts/ifcfg-em1
DEVICE=eth0
ONBOOT=yes
BRIDGE=xenbr0
HWADDR=***********
UUID=************
vi /etc/sysconfig/network-scripts/ifcfg-xenbr0
DEVICE=xenbr0
BOOTPROTO=static
IPADDR=192.168.*.*
NETMASK=255.255.255.0
GATEWAY=192.168.*.*
ONBOOT=yes
TYPE=Bridge
上面这个就是创建一个xenbr0桥接到网卡em1,xen的虚拟机就可以通过xenbr0这个桥上网了
还有em2 em3网卡的话按照上面的方式创建就可以了。
重新启动网络:service network restart
5、更改虚拟机的桥接网卡。
假如虚拟机现在使用的桥是xenbr0,是通过em1出去的。修改成em2出去的话按照以下步骤
[root@localhost data]# xl list
Name ID Mem VCPUs State Time(s)
Domain-0 0 29762 8 r----- 3687.1
vm03 13 512 4 -b---- 53.6
vm02 16 512 1 -b---- 40.9
可以看到虚拟机的id号分别是13和16。
[root@localhost data]# brctl show
bridge name bridge id STP enabled inte***ces
xenbr0 8000.782bcb4ce1a6 no em1
vif13.0
vif16.0
xenbr1 8000.782bcb4ce1a7 no em2
可以看到vif13.0是vm03这个虚拟机的网络。vif(虚拟机ID).0就是虚拟机的网络
先删除vif13.0
brctl delif xenbr0 vif13.0
创建 vif13.0桥接到xenbr1
brctl addif xenbr1 vif13.0
重新启动网络
service networkrestart
显示虚拟机网桥
#brctl show
xenbr0 8000.782bcb4ce1a6 no em1
vif16.0
xenbr1 8000.782bcb4ce1a7 no em2
vif13.0
这样就可以了。
如果您的问题仍未解决,还可以加入服务器在线技术交流QQ群:8017413寻求帮助。