一、环境
- 系统: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
将xen加入启动脚本
- tar zxvf xen-4.1.2.tar.gz
- cd xen-4.1.2
- make world
- make install
- /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 interfaces
- 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
这样就可以了。
参考:
http://www.vpsee.com/2010/04/install-xen-on-centos-from-source/
http://wiki.xensource.com/xenwiki/XenParavirtOps