在 CentOS 上安装和配置 Xen

2140阅读 0评论2011-04-29 greendays
分类:系统运维

现在实验室 Masters 都配有1台 PC 和 1台笔记本,但是 Honours 只配有1台 PC,1台机器做项目很不方便,开发经常会用到多系统,比如有的人做的是手机 VoIP 的相关项目,手机客户端界面要在 Windows 平台上做,VoIP 服务器端要用到 Linux,所以要用虚拟机虚拟一个 Linux 出来,如果这些都跑在一台物理机器上会很慢。现在给 Honours 配置的 PC 只有 1G 的内存,如果运行 Windows + 手机模拟器 + Elipse IDE(需要 Java)+ VMware(VMware 上再跑个 Linux + Asterisk + MySQL),然后开个客户端收邮件、开几个浏览器看资料就会很困难。

所以 VPSee 打算把自己在用的1台 SUN 服务器捐出来做成 Xen 服务器,给每个 Honours 分一个虚拟系统,省下他们自己装虚拟机的时间和资源,VPSee 成了免费的 Xen VPS provider 了:)。SUN 服务器上同时运行16个 Xen 虚拟系统实例,每个配 256 MB 内存,4GB 硬盘,不开 GUI。下面的安装步骤和配置过程是基于 CentOS 5.3 版本,Ubuntu 版本可以参看:,Debian 版本参看:,OpenSolaris 版本参看:,NetBSD 版本参看:. 对 OpenVZ 和 KVM 感兴趣的童鞋可以看: 和 .

安装 Xen

安装支持 Xen 的 Linux 内核 和 Xen:

# yum install kernel-xen xen

安装成功后,可以看到 xen.gz-2.6.18-128.2.1.el5 内核已经装好,修改 default 的值默认启动 Xen 内核。

# vi /etc/grub.conf 

default=0
timeout=2
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-128.2.1.el5xen)
	root (hd0,0)
	kernel /xen.gz-2.6.18-128.2.1.el5
	module /vmlinuz-2.6.18-128.2.1.el5xen ro root=/dev/VolGroup00/LogVol00
	module /initrd-2.6.18-128.2.1.el5xen.img
title CentOS (2.6.18-128.1.16.el5)
	root (hd0,0)
	kernel /vmlinuz-2.6.18-128.1.16.el5 ro root=/dev/VolGroup00/LogVol00
	initrd /initrd-2.6.18-128.1.16.el5.img


重启系统后检查一下是否是 Xen 的内核:

# uname -r
2.6.18-128.2.1.el5xen

再检查一下 Xen 是否已经启动:

# /usr/sbin/xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0     1220     2 r-----   3214.1

创建和安装 guest

如果把正在运行的 Xen 内核的操作系统看成 host 的话,那么运行在 host 上面的操作系统就可以看成 guest。先建一个目录用来存放所有的 guest 操作系统的 image,vm01.img,vm02.img,等等,1个 guest 对应1个 image。

# mkdir /vm
# cd /vm

# virt-install

What is the name of your virtual machine? <-- vm01
How much RAM should be allocated (in megabytes)? <-- 256
What would you like to use as the disk (path)? <-- /vm/vm01.img
How large would you like the disk (/vm/vm01.img) to be (in gigabytes)? <-- 4
Would you like to enable graphics support? (yes or no) <-- no
What is the install location? <-- 

或者可以把上面简化成1条命令:

# virt-install -n vm01 -r 256 -f /vm/vm01.img -s 4 --nographics -p
-l 

需要注意的是上面如果是 -p(paravirtualized)的话就不能直接从 iso 文件安装,必须把 iso 文件解出来后放到一个 http/ftp 服务器上安装,只有 fully virtualized 的才可以从 iso 文件、CD-ROM 等安装。还要注意的是,paravirtualized 需要修改过的操作系统内核,所以不能安装 Windows, fully virtualized 可以用来安装 Windows 只要 CPU 支持 Virtualization(Intel VT or AMD V)。所以这里需要先安装和配置一个 web 服务器,然后把 iso 文件解压到 web 服务器能访问的目录下()。如果网速够快,可以从 Internet 上直接安装,把 换成

按照 CentOS 的安装程序完成 CentOS 操作系统(guest)的安装后,看看 guest 的配置文件:

# cat /etc/xen/vm01
name = "vm01"
uuid = "b4910b6d-b205-6f86-c145-3c0895cb20c5"
maxmem = 256
memory = 256
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [  ]
disk = [ "tap:aio:/vm/vm01.img,xvda,w" ]
vif = [ "mac=00:16:d2:0a:66:6d,bridge=xenbr0" ]

看看 guest 是否启动:

# /usr/sbin/xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0     1220     2 r-----   4691.3
vm01                                       9      255     1 -b----      16.9

进入 guest

安装成功后就可以登录 guest 了,

# /usr/sbin/xm console vm01

如果要退出 guest 的话,用 Ctrl + ],就会回到 host。

如果想每次启动 host 时自动启动 guest 的话:

# ln -s /etc/xen/vm01 /etc/xen/auto

更懒的办法

如果觉得安装 guest 操作系统太麻烦,可以到 下载一个已经装好的镜像文件,然后在 host 下启动 guest 镜像就可以了。下载和启动 Ubuntu 9.04 的镜像:

# wget sites/default/files/ubuntu/
ubuntu.9-04.x86.20090514.img.tar.bz2

# tar jxvf ubuntu.9-04.x86.20090514.img.tar.bz2
# mv ubuntu.9-04.x86.xen3.pygrub.cfg /etc/xen/ubuntu.9-04.cfg
# mv ubuntu.9-04.x86.img /vm/ubuntu.9-04.img

# /usr/sbin/xm create -f ubuntu.9-04.cfg
# /usr/sbin/xm list
# /usr/sbin/xm console ubuntu.9-04

从 下载的镜像文件的初始用户名和密码为:root/password

增加 swap

如果是从 下载的操作系统镜像,可能没有设置 swap,需要自己添加 swap 分区,可以做个 swap 镜像文件当作 swap 分区用。Xen 与 OpenVZ 相比有个好处就是 Xen 可以有自己的 swap 分区,甚至 guest 可以自己设置 swap. 先建个 512MB(524288B,1GB = 1048576B)大小的文件,转化成 swap 格式:

# dd if=/dev/zero of=ubuntu.9-04.swap bs=1024 count=524288

# /sbin/mkswap ubuntu.9-04.swap

修改 /etc/xen/ubuntu.9-04,修改 disk 这一行:

# vi /etc/xen/ubuntu.9-04.cfg
disk = ['file:/vm/ubuntu.9-04.img,sda1,w','file:/vm/ubuntu.9-04.swap,sda2,w']

启动 guest 系统,登录后修改 /etc/fstab,重启后用 top 看看 Swap 分区有没有被激活:

# vi /etc/fstab
/dev/sda2            swap          swap     defaults,noatime           0 0

# shutdown -r now

# top
...
Mem:    262284k total,    46480k used,   215804k free,     3176k buffers
Swap:   524280k total,        0k used,   524280k free,    17196k cached

常用 Xen 命令

xm create -c /path/to/config - Start a virtual machine.
xm shutdown - Stop a virtual machine.
xm destroy - Stop a virtual machine immediately without shutting it down. It's as if you switch off the power button.
xm list - List all running systems.
xm console - Log in on a virtual machine.
xm help - List of all commands.

上一篇:CentOS 5.3下yum安装xen
下一篇:How to install XEN 3.4.1 on CentOS 5.4