现在服务器虚拟化趋势越来越明显了,一方面服务器硬件越来越强大,一台服务器只跑一个系统非常浪费,另一方面虚拟机管理比物理机方便得多,而且迁移非常容易。
为了搭建测试环境,决定把一台测试服务器变为运行xen的虚拟服务器。服务器硬件配置:
Intel Core 2 Quad 2.66 GHz,4核8线程,4GB 内存,500GB 硬盘
操作系统:Debian 6.0 Squeeze AMD64,因为Debian的维护和管理非常方便,而且6.0已经将xen升级到4.0版本了,在Squeeze上创建xen非常容易。
主要参考官方文档:
http://wiki.debian.org/Xen
1. 安装Debian 6 Squeeze AMD64:
分区:全部分给LVM,VG:vg001
/分区:vg001-linux–root
/home分区:vg001-linux–home
/srv分区:vg001-linux–srv
ext4格式,各10GB。
swap分区:4GB
注意:强烈推荐使用lvm,因为xen运行在lvm上的IO效率比文件高好几倍,而且便于管理。
2. 安装xen image:
aptitude -P install xen-hypervisor-4.0-amd64 linux-image-xen-amd64
3. 修改grub
由于xen kernel不是默认启动的kernel,修改grub,把xen kernel排到第一位:
mv -i /etc/grub.d/10_linux /etc/grub.d/50_linux
update-grub2
另外,根据Debian的官方wiki,如果内存大于32GB,需要设置dom0_mem=32G,否则xen无法启动。为了避免dom0过多占用内存导致domU内存不够,建议加上dom0_mem参数。我直接复制一份20_linux_xen,然后在此基础修改:
cp /etc/grub.d/20_linux_xen /etc/grub.d/10_linux_xen_modified
vim /etc/grub.d/10_linux_xen_modified
找到
xen_args=”$6″
改为
xen_args=”dom0_mem=256M”
再次运行update-grub2。
4. 关闭save模式
修改/etc/default/xendomains,这样dom0停止时所有的domU都将正常shutdown而不是save:
将
XENDOMAINS_RESTORE=true
改为
XENDOMAINS_RESTORE=false
将
XENDOMAINS_SAVE=/var/lib/xen/save
改为
XENDOMAINS_SAVE=”"
5. 启动bridge模式
修改/etc/xen/xend-config.sxp:
(network-script ‘network-bridge’)
如果某些xen不在你的控制之内,则domU的IP设置错误可能会导致整个网络工作不正常,所以可以加上:
(network-script ‘network-bridge antispoof=yes’)
这样确保domU无法将IP设置为dom0的IP或网关IP。
6. 安装xen-tools
xen-tools用于简化domU的安装:
aptitude install xen-tools
xen-tools提供了一系列脚本来管理和简化xen的创建,需要修改/etc/xen-tools/xen-tools.conf:
设置使用lvm:
lvm = vg001
vg001是我的VG名称,在安装分区时指定的,你需要替换成你的VG名称。
设定虚拟机大小:
size = 50Gb
memory = 512Mb
swap = 1Gb
fs = ext4
设置网络:
gateway = x.x.x.x
netmask = 255.255.255.0
设置安装squeeze的镜像,为了避免网络下载,强烈推荐用ISO光盘做本地镜像,也可避免某些源缺少重要包导致domain安装后无法启动:
mirror_squeeze = http://localhost/
创建时输入root口令:
passwd = 1
7. 创建mirror源
为了使用ISO镜像,可以先将ISO挂载:
mkdir /srv/iso_install
mount -o loop /path/to/the_iso_file.iso /srv/iso_install
然后将nginx或apache配置www指向上述目录即可变成一个http源,端口号我设置为80,所以mirror地址就是http://localhost/。
也可略过此步骤使用debian官方源,如http://ftp.us.debian.org/debian,缺点是安装xen虚拟机需要从网络下载,时间长达15-30分钟。
8. 重启
查看kernel已经变成xen kernel:
# uname -a
Linux debian-test 2.6.32-5-xen-amd64 #1 SMP Wed Jan 12 05:46:49 UTC 2011 x86_64 GNU/Linux
9. 安装第一个xen虚拟机
将命名为xen-test-mysql,用于运行MySQL服务器:
xen-create-image --hostname xen-test-mysql --ip 192.168.1.211 --vcpus 2 --dist squeeze --verbose
参数说明:
--hostname 虚拟机名称
--ip 指定IP地址
--vcpus 指定虚拟机可以使用的CPU个数
--dist 指定安装的linux发行版,和dom0一致的发行版(这里是Squeeze)安装最简单也最容易配置
–verbose 生成详细的日志
如果domain已经存在,加上--force参数重新创建(覆盖已有的配置和虚拟机磁盘)。
然后开始安装,会看到提示,创建了/dev/vg001/xen-test-mysql-swap和/dev/vg001/xen-test-mysql-disk卷,分别用于xen的swap和磁盘。
安装过程大概2-5分钟,安装完成后提示输入root口令,然后安装结束,提示log文件保存在/var/log/xen-tools/xen-test-mysql.log。
10. 启动xen domU
刚才创建的虚拟机配置文件位于/etc/xen/xen-test-mysql.cfg,启动该虚拟机的命令为:
xm create -c /etc/xen/xen-test-mysql.cfg
加入-c参数后可以立刻连接到该domain的console,就可以登录到该domain中。如果没有加-c参数,可以先查看当前运行的domain:
然后用xm console xen-test-mysql连接到该domain的console。
要退出domain的console并回到dom0的console,只需按下Ctrl+]。
默认的domU会复制dom0的配置,所以apt的配置还需要修改,修改后就可以正常安装软件了。
11. domU自动启动
要使domU随dom0启动时自启动,可以在/etc/xen/auto目录下创建对应cfg的软连接:
mkdir /etc/xen/auto
ln -s /etc/xen/xen-test-mysql.cfg /etc/xen/auto
笔者再做这步的时候发现没有自动跟随启动,很无奈的用了另一种方法
vim /etc/init.d/rc.local
在最后面加入: xm create /etc/xen/xen-test-mysql.cfg
总结:
配置如何将一台Debian Linux虚拟成多台Linux,由于主要运行web,所以不考虑图形界面,也不考虑虚拟运行Windows。
http://hi.baidu.com/hpercy/blog/item/2546174accf56aded0c86a34.html
http://hi.baidu.com/hpercy/blog/item/3779c2d95cfc6ffb77c63837.html
http://u.youku.com/user_show/id_UMjkyMTg5MzA0.html