Ubuntu 11.10中可以通过apt-get安装xen-tools,其版本为4.1版本:
# apt-get install -y xen-tools
由于xen-tools是xen的半虚拟化管理工具,所以需要安装修改过的、支持半虚拟化的kernel。在ubuutu 11.10中,只需要通过apt安装linux-image-3.0.0-1x-virtual的kernel即可:
# apt-get install -y linux-image-3.0.0-12-virtual
安装步骤执行之后就会在/boot下找到vmlinuz-3.0.0-12-virtual和initrd.img-3.0.0-13-virtual,这是之后半虚拟化的DomU所要使用的kernel。
接下来修改xen-tools的配置相关文件,配置相关文件中的值只在创建实例过程中没有指定某个选项时提供默认值:
# vi /etc/xen-tools/xen-tools.conf
需要修改如下几项:
[...]
dir=/home/xen #用于放置img文件的位置
[...]
lvm=vg0 #一旦使用lvm的逻辑卷来做存储,则制定卷组名
[...]
#指定实例的系统版本,xt-guess-suite-and-mirror --suite返回的是宿主机的系统版本
dist=`xt-guess-suite-and-mirror --suite`
[...]
# 指定实例所在网段
gateway =192.168.0.1
netmask =255.255.255.0
broadcast=192.168.0.255
[...]
# 指定实例使用的kernel,这里就使用之前安装的、支持半虚拟化的kernel
kernel= /boot/vmlinuz-3.0.0-12-virtual
initrd=/boot/initrd.img-3.0.0-12-virtual
[...]
serial_device=hvc0 # 指定console名称,使用默认值即可
disk_device=xvda #指定实例的磁盘名称,使用默认值即可
[...]
# 这里指定安装实例的镜像源,xt-guess-suite-and-mirror --mirror返回的是宿主机的镜像源
mirrors=`xt-guess-suite-and-mirror--mirror`
[...]
修改好xen-tools.conf后,就需要创建刚才指定的放置img文件的目录位置:
# mkdir /home/xen
创建ubuntu实例
xen-tools创建ubuntu实例采用的是debootstrap,xen-tools.conf中默认采用这种方法。
xen-tools默认支持的最新ubuntu版本是maverick,而11.10的版本是oneiric(现在的12.04是precise),这样大家就要先让xen-tools支持到大家需要的版本。由于所有的ubuntu版本都是karmic.d的符号连接,所以大家只需要再创建一个符号连接即可:
# cd /usr/lib/xen-tools/
# ln -s karmic.d oneiric.d (for ubuntu 11.10)
或者
# ln -s karmic.d precise.d (for ubuntu 12.04)
接下来就可以创建实例了:
# xen-create-image --hostname=ubuntu.example.com --size=4G --swap=1G --memory=1G --ip=192.168.0.101 --arch=amd64 --role=udev
若按照之前所配置的xen-tools.conf,这条命令将创建一个与宿主机系统版本相同的虚拟机实例。
当然,大家也可以修改系统版本,或者修改安装源,或者修改磁盘的类型,只需要增加一些选项和参数,例如:
# xen-create-image --hostname=ubuntu.example.com --size=4G --swap=1G --memory=1G --ip=192.168.0.101 --arch=amd64 --role=udev --scsi --dist maverick --mirror=http://mirrors.163.com/ubuntu
注意:千万别忘记--role=udev
具体有哪些参数可以参见xen-create-image的man page:
# man xen-create-image
执行上述命令后,就会进入实例创建过程。过程中会提示输入密码,作为虚拟机实例的root账户密码。创建完成后,会在之前指定的目录中生成img文件,作为虚拟机实例的存储,并在/etc/xen下生成.cfg文件,作为虚拟机实例启动的配置相关文件。
接下来,通过xm命令启动实例:
xm create -c ubuntu.example.com.cfg
成功进入实例系统。
创建CentOS实例
xen-tools创建CentOS实例采用的是rinse。
在创建CentOS实例之前,需要安装一些依赖包:
#apt-get install -y debootstrap libbeecrypt7 libc6-xen libconfig-inifiles-perl libexpect-perl libio-pty-perl libio-stty-perl librpm2 libterm-readline-gnu-perl libterm-size-perl libtext-template-perl reiserfsprogs rinse rpm screen vnstat
rinse创建实例过程中会下载安装一些rpm包。rinse配置相关文件中默认的包可能导致实例创建的失败,所以需要加入一些包:
# vi /etc/rinse/centos-x.packages
[...]
#在最后加入以下内容
nss
nspr
python-iniparsel
authconfig
此外,还可以更换CentOS实例的安装源,rinse默认使用的是一个英国的源,比较慢。
# vi /etc/rinse/rinse.conf
[...]
mirror = http://mirrors.163.com/centos/6.2/os/i386/Packages
mirror.amd64 = http://mirrors.163.com/centos/6.2/os/x86_64/Packages
和ubuntu一样,xen-tools支持CentOS的最新版本是5.x版本,一旦需要安装6.x的CentOS,则需要创建相应的安装流程。由于无论哪个版本安装流程都相似,所以可以直接复制5.x的安装流程。
# cd /usr/lib/xen-tools/
# cp -a centos-5.d centos-6.d
接下来就可以创建CentOS的实例了,由于更改了安装方法,所以需要在命令中增加相应的选项和参数,同时,--role=udev的参数就不需要了:
# xen-create-image --hostname=centos.example.com --size=4G --swap=1G --memory=1G --ip=192.168.0.102 --dist=centos-6 --install-method=rinse --arch=amd64
创建过程与ubuntu实例类似,创建完成后启动实例:
# xm create -c centos.example.com.cfg
这样就能成功登录CentOS的虚拟机实例。
其他
1. 创建CentOS实例过程中会遇到错误,大概原因是不能读取镜像源,这种情况下要更换有效的镜像源。
2. 在创建和启动虚拟机的过程中可能会遇到没有空余loop的问题,主要原因是开机加载loop内核模块时默认只加载了8个loop,大家可以通过修改/etc/modules来指定开机加载loop的最大数量:
# vi /etc/modules
[...]
loop max_loop=64
3. xen-tools的log文件在/var/log/xen-tools中,log文件以实例主机名命名,整个创建过程可以通过监控log文件来观察,也可以通过查看log文件来排除相应的错误。