怀旧系列:重玩Xen
自从Kvm进入内核自带后自己编译Xen内核相对比较麻烦, 已经很多年没玩Xen了.
Centos也停止Xen更新了, 另外还有个crc.id.au的一直在更新维护安装包.
https://xen.crc.id.au/downloads/
https://wiki.centos.org/HowTos/Xen/Xen4QuickStart
由于有现成的安装包, 就不用去编译内核了.
yum安装内核和xen
yum -y install centos-release-xen
yum -y update
yum -y install xen
cat>>/etc/xen/xl.conf<<EOF
autoballoon="auto"
vif.default.script="vif-bridge"
vif.default.bridge="xenbr0"
EOF
配置网桥然后重启网卡
###########################################
#设置网桥参考
#因为机器和安装设置方式的不同,需要根据自己的情况设定。
###########################################
getETH=`ip -4 route list 0/0 |awk '{ print $5 }'`
getGATEWAY=`ip -4 route list 0/0 |awk '{ print $3 }'`
getNETMASK=`ifconfig $getETH | awk '/mask /{ print $4;}'`
getIPADDR=`ifconfig $getETH | awk '/inet /{ print $2;}'`
cp /etc/sysconfig/network-scripts/ifcfg-$getETH /tmp
cat>/etc/sysconfig/network-scripts/ifcfg-xenbr0<<EOF
DEVICE=xenbr0
TYPE=Bridge
BOOTPROTO=static
ONBOOT=yes
IPADDR=$getIPADDR
NETMASK=$getNETMASK
GATEWAY=$getGATEWAY
DNS1=8.8.8.8
EOF
cat>/etc/sysconfig/network-scripts/ifcfg-$getETH<<EOF
DEVICE="$getETH"
BOOTPROTO="static"
ONBOOT="yes"
TYPE="Ethernet"
BRIDGE="xenbr0"
EOF
配置网桥这一步新手建议有ipmi的再配置.
虚拟机配置范本:
# cat /etc/xen/auto/vm101.cfg
#kernel = '/boot/solus-vmlinuz'
#ramdisk = '/boot/solus-initrd.img'
bootloader = '/usr/bin/pygrub' #使用pygrub启动独立内核
extra = ''
memory = 1024
hostname = 'test.xen'
cpu_weight = 256
name = 'vm101'
vif = ['ip=IP地址, vifname=vifvm101.0, mac=00:16:3e:0f:8f:2x, rate=8960KB/s,bridge=xenbr0',]
vnc = 0
vcpus = 4
serial = 'pty'
disk = ['phy:/dev/vg0/vm101_img,xvda1,w', 'phy:/dev/vg0/vm101_swap,xvda2,w']
#root = '/dev/xvda1 ro'
基础配置到此基本配置完成了
上面的配置文件用的是LVM分区, 将/dev/vg0/vm101_img进行mkfs.ext4格式化, 然后将整个linux系统文件拷贝进去就可以用xl create /etc/xen/auto/vm101.cfg进行启动运行了. 用xl console vm101可以进入虚拟机控制台.
由于Xen没能进入内核也导致了开源Xen的市场率直线衰落, 原本有一个专门做系统模版的网站Stacklet也关闭了.
目前solusvm的镜像还有一些系统模版可以下载 http://mirror-usa-dallas.solusvm.com/templates/linux
制作Xen Pv系统的模版也简单, 任意一个服务器或者vps将容量全部划分给根分区安装完后tar打包即可.(由于分sda和xvda, 需要对系统的fstab和grub调节一下)
这里只提及了Xen Pv(对Linux支持相对openvz更稳定), 如果要玩Xen HVM的话还是建议直接用Kvm来的方便一些.