一、环境

   
   
   
   
  1. 系统:centOS6.3  
  2. xen版本:4.1.2 
  3. linux kernel:3.1.2 
  4. libvirt:0.7.7  

资源地址

xenhttp://bits.xensource.com/oss-xen/release/4.1.2/xen-4.1.2.tar.gz
kernelhttp://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.2.tar.bz2
libvirthttp://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、初始化环境

   
   
   
   
  1. yum update 

2、关闭selinuxxen不支持selinux 

   
   
   
   
  1. vi /etc/selinux/config 
  2. SELINUX=disabled 
 

3、安装必备软件包

   
   
   
   
  1. yum -y groupinstall "Development Libraries" 
  2. yum -y groupinstall "Development Tools" 
  3. 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 
  4. yum -y install glibc-devel.i686texinfo libuuid-devel iasl python-lxml 
  5. yum -y install openssl openssl-devel 
  6. yum -y install ncurses ncurses-* 
  7. yum -y install python-devel 
  8. yum -y install vim wget tcpdump ntp ntpdate man smartmontools links lynx ethtool xorg-x11-xauth 

4、安装xen  

   
   
   
   
  1. tar zxvf xen-4.1.2.tar.gz 
  2. cd xen-4.1.2 
  3. make world 
  4. make install 
  5.  
  6.  
将xen加入启动脚本
   
   
   
   
  1. /sbin/chkconfig --add xend   
  2. /sbin/chkconfig --add xencommons  
  3. /sbin/chkconfig --add xendomains  
  4. /sbin/chkconfig xend on  
  5. /sbin/chkconfig xendomains on  
  6. /sbin/chkconfig xencommons on  

5、安装Linux3.1.2内核

linux3.0之后已经默认支持xen,所以3.0之后的版本不需要安装xen-kernel内核补丁,直接编译内核就可以。

 

   
   
   
   
  1. tar jxf linux-3.1.2.tar.bz2 
  2. cd linux-3.1.2 
  3. make menuconfig 

参数配置:

   
   
   
   
  1. Processor type and features --- > 
  2. 选中Paravirtualized Guest Support 
  3.   
  4. Device Drivers ---> 
  5.  
  6. XEN driver support ---> 
  7.  
  8. [ * ] Xen memory balloon driver 
  9.  
  10. [ * ] Scrub pages before returning them to system 
  11.  
  12. <*> Xen /dev/xen/evtchn device 
  13.  
  14. [ * ] Backend driver support 
  15.  
  16. <*> Xen filesystem 
  17.  
  18. [ * ] Create compatibility mount point /proc/xen 
  19.  
  20. [ * ] Create xen entries under /sys/hypervisor 
  21.  
  22. <*> userspace grant access device driver 

       在.config文件中做如下修改,我在创建虚拟机的时候出现vif0错误。查找网上的资料说是下面两个没有修改。

CONFIG_XEN_BLKDEV_BACKEND=m

CONFIG_XEN_NETDEV_BACKEND=m

 

编译安装

   
   
   
   
  1. make -j6 
  2. make -j6 modules 
  3. make -j6 modules_install 
  4. make -j6 install 
  5. depmod 3.1.2 

注:-j参数是指定运行的线程数,没有用这个参数会慢特别多。建议使用节省编译时间。后面的数字根据自己的机器配置设置。详细参数可以查看man make

 

6、编译安装libvirt

   
   
   
   
  1. tar -zxvf libvirt-0.7.7.tar.gz 
  2. ./configure 
  3. make && make install 
  4. 运行程序
  5. libvirt:libvirtd -d 

7、修改启动项,使用xen内核启动

   
   
   
   
  1. vi /etc/grub.conf 

默认会有一个3.1.2的启动项。基本是是这样的:

   
   
   
   
  1. title CentOS (3.1.2) 
  2. root *** 
  3. kernel /********** 
  4. initrd /******** 

复制上面几行。title前面粘贴,在rootkernel之间插入一行kernel /xen.gz

修改kernelinitrdmodule,修改后为:

   
   
   
   
  1. title xen (3.1.2) 
  2. root *** 
  3. kernel /xen.gz 
  4. modul /********** 
  5. modul /******** 

 

然后修改default=N这个,查看修改的这个title xen是第几个title,第一个则修改为default=0

第二个修改为default=1,依次类推。

reboot

 

二、重启进入系统后:

xl list查看

出现下面这个证明安装好了。 

   
   
   
   
  1. Name ID Mem VCPUs   State   Time(s) 
  2. Domain-0 0 29762 8 r----- 3687.1 

1xen网桥配置

显示xen网桥:brctl show

没有发现xenbr0虚拟网卡

xen4.1版本之后官方建议手动建立桥接网络。所以默认的/etc/xen/scripts/network-bridge 脚本是没有启动的。

1)关闭xen网络脚本 

   
   
   
   
  1. /etc/xen/scripts/network-bridge stop 

2)修改xen配置文件 

   
   
   
   
  1. vi /etc/xen/xend-config 

注释下面两行

   
   
   
   
  1. #network-script network-bridge) 
  2. #(vif-script vif-bridge) 

3)重启xend服务

   
   
   
   
  1. service xend restart 

4)手动创建桥接网络,将物理网卡eth0设置为桥,我设置的服务器是DELL 410,网卡装完系统是em1em2,只是名称区别而已。 

   
   
   
   
  1. vi /etc/sysconfig/network-scripts/ifcfg-em1 
  2.  
  3. DEVICE=eth0 
  4. ONBOOT=yes 
  5. BRIDGE=xenbr0 
  6. HWADDR=*********** 
  7. UUID=************ 

  

   
   
   
   
  1. vi /etc/sysconfig/network-scripts/ifcfg-xenbr0 
  2.  
  3. DEVICE=xenbr0 
  4.  
  5. BOOTPROTO=static 
  6.  
  7. IPADDR=192.168.*.* 
  8.  
  9. NETMASK=255.255.255.0 
  10.  
  11. GATEWAY=192.168.*.* 
  12.  
  13. ONBOOT=yes 
  14.  
  15. TYPE=Bridge 

 

上面这个就是创建一个xenbr0桥接到网卡em1xen的虚拟机就可以通过xenbr0这个桥上网了
还有em2 em3网卡的话按照上面的方式创建就可以了。
重启网络:service network restart

5、更改虚拟机的桥接网卡。
假如虚拟机现在使用的桥是xenbr0,是通过em1出去的。修改成em2出去的话按照以下步骤 

   
   
   
   
  1. [root@localhost data]# xl list 
  2.  
  3. Name ID Mem VCPUs   State   Time(s) 
  4.  
  5. Domain-0 0 29762 8 r----- 3687.1 
  6.  
  7. vm03 13 512 4 -b---- 53.6 
  8.  
  9. vm02 16 512 1 -b---- 40.9 
  10.  
  11. 可以看到虚拟机的id号分别是13和16。 
  12.  
  13. [root@localhost data]# brctl show 
  14.  
  15. bridge name bridge id    STP enabled    interfaces 
  16.  
  17. xenbr0   8000.782bcb4ce1a6  no   em1 
  18.  
  19. vif13.0 
  20.  
  21. vif16.0 
  22.  
  23. xenbr1   8000.782bcb4ce1a7  no   em2 

 

可以看到vif13.0vm03这个虚拟机的网络。vif(虚拟机ID).0就是虚拟机的网络 

先删除vif13.0

   
   
   
   
  1. brctl delif xenbr0 vif13.0 

创建 vif13.0桥接到xenbr1

   
   
   
   
  1. brctl addif xenbr1 vif13.0 

重启网络

   
   
   
   
  1. service networkrestart 

显示虚拟机网桥

   
   
   
   
  1. #brctl show 
  2. xenbr0   8000.782bcb4ce1a6  no   em1 
  3.                        vif16.0 
  4.  
  5. xenbr1   8000.782bcb4ce1a7  no   em2 
  6.                        vif13.0 

这样就可以了。
参考:
http://www.vpsee.com/2010/04/install-xen-on-centos-from-source/
http://wiki.xensource.com/xenwiki/XenParavirtOps