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

          [...]

           passwd=1 # 指定是否自定义root密码

          [...]

          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

            当然,还是建议使用lvm来管理虚拟机的存储,这样就可以避免这个问题。

           3. xen-tools的log文件在/var/log/xen-tools中,log文件以实例主机名命名,整个创建过程可以通过监控log文件来观察,也可以通过查看log文件来排除相应的错误。