不是油条 2010-04-08
SUN 每隔一段事件都会有一些折旧的服务器捐给大学、实验室、研究机构等。我们项目组就刚 “骗” 了几台免费的 Sun Fire 服务器,当然也和我们是 SUN(也许现在应该叫 Oracle)的长期客户有关,我们的服务器基本都是 SUN 的。现在只要新机器一进来就先虚拟化,虚拟化后才能上机柜,技术变化太快了,记得几年前我们买机器一上来首先装的是操作系统,现在 hypervisor 代替了操作系统。
首先最小化安装64位的 Debian,下面的安装步骤和配置过程基于 Debian 5.04 版本,CentOS 版本可以参看:在 CentOS 上安装和配置 Xen,Ubuntu 版本可以参看:在Ubuntu 上安装和配置Xen ,OpenSolaris 版本参看:在 OpenSolaris 上安装和配置 Xen .
安装 Xen
检查一下 source list:
# vi /etc/apt/sources.list
deb http://http.us.debian.org/debian stable main contrib non-free
#deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb http://security.debian.org stable/updates main contrib non-free
安装 Xen 及相关工具:
# apt-get install xen-hypervisor-3.2-1-amd64 \
xen-linux-system-2.6.26-1-xen-amd64 xen-utils-3.2-1 \
xenstore-utils xenwatch xen-shell xen-tools
我们需要很多 loop devices 来挂载基于文件的虚拟机,所以需要把 loop device 的数目限制设成最大:
# vi /etc/modules
loop max_loop=64
安装完 Xen 后,Debian 上的 Xen 的默认网络配置用的是 network-dummy,和 CentOS 上有点不一样,我们需要修改成 bridge 以便每个虚拟机都像一个独立机器一样运行在网络上:
# vi /etc/xen/xend-config.sxp
#(network-script network-dummy)
(network-script network-bridge)
安装成功后,检查 Xen 内核是否已经装好,并给内核加上 dom0_mem=256M 限制 Xen Dom0 的内存,防止 dom0 把内存耗光:
# vi /boot/grub/menu.lst
...
title Xen 3.2-1-amd64 / Debian GNU/Linux, kernel 2.6.26-2-xen-amd64
root (hd0,0)
kernel /xen-3.2-1-amd64.gz dom0_mem=256M
module /vmlinuz-2.6.26-2-xen-amd64 root=/dev/mapper/vpsee-root ro console=tty0
module /initrd.img-2.6.26-2-xen-amd64
...
重启系统后检查一下是否是 Xen 的内核以及 Xen 是否启动:
# reboot
# uname -r
2.6.26-2-xen-amd64
# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 256 2 r----- 9.3
创建和安装 guest
如果把正在运行的 Xen 内核的操作系统看成 host 的话,那么运行在 host 上面的操作系统就可以看成 guest。先建一个目录用来存放所有的 guest 操作系统的 image,vm01.img,vm02.img 等,1个 guest 对应1个 image。
# mkdir /vm
# xen-create-image --hostname=vm01 --size=10Gb --swap=512Mb --ide \
--ip=172.16.39.121 --netmask=255.255.254.0 --gateway=172.16.38.1 --force \
--dir=/vm --memory=512Mb --arch=i386 \
--kernel=/boot/vmlinuz-2.6.26-2-xen-amd64 \
--debootstrap --dist=etch --mirror=http://ftp2.de.debian.org/debian/ --password
可以根据需要调整 /etc/xen-tools/xen-tools.conf
进入 guest
安装成功后需要增加给对应的虚拟机器增加一个 Xen 配置文件以便 Xen 能启动这个虚拟机:
# vi /etc/xen/vm01
kernel = '/boot/vmlinuz-2.6.26-2-xen-amd64'
ramdisk = '/boot/initrd.img-2.6.26-2-xen-amd64'
memory = '512'
root = '/dev/xvda2 ro'
disk = [
'file:/vm/domains/vm01/swap.img,xvda1,w',
'file:/vm/domains/vm01/disk.img,xvda2,w',
]
name = 'vm01'
vif = [ 'ip=172.16.39.121,mac=00:16:3E:C0:21:DE' ]
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
启动刚安装的 Debian 虚拟机后就可以登录了,
# xm create vm01
# xm console vm01
如果要退出 guest 的话,用 Ctrl + ],就会回到 host。
如果想每次启动 host 时自动启动 guest 的话:
# ln -s /etc/xen/vm01 /etc/xen/auto
更懒的办法
如果觉得安装 guest 操作系统太麻烦,可以到 http://stacklet.com/ 下载一个已经装好的镜像文件,调整 Xen guest 的配置文件,然后在 host 下启动 guest 镜像就可以了,这里和这里有更详细的介绍。
增加 swap
如何给 guest 系统(domU)增加 swap,这里有介绍。