如果你对VMware很熟悉,那么你一定很想了解大名鼎鼎的XEN和KVM,XEN是20多年前由剑桥大学开发的,现在属于思杰公司(Citrix),其目前最新版本是3.4.2,而KVM是新崛起的新星,是XEN不容忽视的强有力的竞争对手,呵呵。还在犹豫什么呢?OK,让我们开始体验Xen吧:)

===============================================================

注意事项:

1.Xen虚拟机有两种运行方式:完全虚拟化(full virtualization)和半虚拟化(paravirtualization)。完全虚拟化提供底层物理系统的全部抽象化,且创建一个新的虚拟系统,客户机操作系统可以在里面运行。不需要对客户机操作系统或者应用程序进行修改(客户机操作系统或者应用程序像往常一样运行,意识不到虚拟环境的存在)。半虚拟化需要对运行在虚拟机上的客户机操作系统进行修改(这些客户机操作系统会意识到它们运行在虚拟环境里)并提供相近的性能,但半虚拟化的性能要比完全虚拟化更优越。查看您的中央处理器类型,最好使支持Intel VT或AMD PT虚拟化技术。执行cat /proc/cpuinfo,如果是Intel的CPU,看看flags里有没有vmx  ,如果是AMD的CPU,则看flags里有没有svm .若有则是支持完全虚拟化的。若CPU不支持,则只能以半虚拟化方式安装。我的Intel的CPU不支持VT, :(

  

2.在make stubdom时需要从网上下载一些相关的包,所以需要保持网络畅通。当然如果预先安装好这些包最好,安装速度更快。如:

   # yum -y install newlib zlib transfig bridge-utils udev  

===============================================================

开始安装:

 

      .安装说明:hostOS和guestOS都是CentOS5.3,Xen版本为使用Xen3.4.2.

      二 .xen虚拟机可以安装在任何分区只要有足够的空间,建议你可以在安装hostOS的时候划分一个/vm的分区,如果之前没有划分该分区,而你仍然想安装在/vm目录下,你可以#mkdir /vm.我这里在/vm下新建了一个xen目录

     三 .用df -h命令查看磁盘容量 确保剩余空间足够,如果不够通过为虚拟机新加一块硬盘使用 LVM 解决。从网上下载xen3.4.2的源码包(linux-2.6.18-xen-3.4.2.tar.gz和xen-3.4.2.tar.gz ),或用wget命令下载。然后tar命令安装。

    .安装mercurial

[root@master vm]# yum install mercurial

   (wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm      rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm)


[root@master vm]# hg
输出 hg 命令的帮助,说明 mercurial 安装成功。
[root@master vm]# cd /vm/xen     (注意要先切换到该目录下,解压后的linux-2.6.18-xen-3.4.2.tar.gz和xen-3.4.2.tar.gz和linux-2.6.18-xen.hg这三者要放在同一个目录中,即vm->xen->linux-2.6.18-xen-3.4.2,xen-3.4.2,linux-2.6.18-xen.hg) 

[root@master xen]# hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg

(该目录大慨有200M,我安装的时候用的是hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg ,最好用3.4.2的新版本吧,不过记得安装过程中它好像会自动升级,mercurial类似于svn,用于获取xen的最新测试版代码及linux内核代码。教育网访问外网的网速实在是让人崩溃,最后费了好大劲终于google到从http://mirror.choon.net/xen/上download它的tgz包)

 

destination directory: linux-2.6.18-xen.hg
requesting all changes

adding changesets
adding manifests
adding file changes
added 921 changesets with 23573 changes to 20935 files
updating working directory
20912 files updated, 0 files merged, 0 files removed, 0 files unresolved

现在已经多出了一个 linux-2.6.18-xen.hg 目录。

[root@master xen]# cd xen-3.4.2/
[root@master Xen-3.4.2]# less README
在这个文件中可以看到安装前必须安装的软件包版本:
* GCC v3.4 or later
* GNU Make
* GNU Binutils
* Development install of zlib (e.g., zlib -dev)
* Development install of Python v2.3 or later (e.g., python-dev)
* Development install of curses (e.g., libncurses -dev)
* Development install of openssl (e.g., openssl -dev)
* Development install of x11 (e.g. xorg-x11-dev)
* bridge-utils package (/sbin/brctl )
* iproute package (/sbin/ip )
* hotplug or udev
请安装尚未安装的软件包,我安装了bridge-utils和udev。#yum install bridge* 和#yum install udev.

    .做make之前的检查,避免make 过程中出错。

[root@master Xen-3.4.2]# cd tools/check/
[root@master check]# ./chk build
Xen CHECK-BUILD Tue Jul 28 13:04:54 CST 2009
Checking check_crypto_lib : OK
Checking check_curl : unused, OK
Checking check_openssl_devel : OK
Checking check_python : OK
Checking check_python_devel : OK
Checking check_x11_devel: OK
Checking check_xgettext : OK
Checking check_xml2: unused, OK
Checking check_zlib_devel : OK
Checking check_zlib_lib : OK
[root@master check]# ./chk install
Xen CHECK-INSTALL Tue Jul 28 13:04:58 CST 2009
Checking check_brctl : OK
Checking check_crypto_lib : OK
Checking check_curl : unused, OK
Checking check_iproute : OK
Checking check_python : OK
Checking check_python_xml : OK
Checking check_udev : OK
Checking check_xml2: unused, OK
Checking check_zlib_lib : OK
好了,现在软件包都备齐了。应该做个 snapshot ,把这个状态保存起来。

六. 修改/etc/sysconfig/selinux(如果开启了selinux)

Make sure that SELinux is disabled or permissive:

vi /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled # SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted

If you had to modify /etc/sysconfig/selinux, please reboot the system:

reboot

.执行make

[root@master Xen-3.4.2]#make prep-kernels

[root@master Xen-3.4.2]# make world (强烈建议不要执行make world,而是把make world分开来执行,make world 实际上是(清理工作+make dist),也就是make clean->make kdelete->make xen->make kernels->make  tools-> make stubdom ->make docs.这里.清理工作make clean和make kdelete是对编译的回滚操作,以及下次重新安装时的清理工作,所以我们执行make dist即可,即make xen->make kernels->make  tools-> make stubdom ->make docs我在make docs的时候出现错误,提示缺少transfig包,所以还需安装transfig包再make docs, 如果你遇到latex包没有安装,则 yum install tetex-latex)。

[root@master Xen-3.4.2]# make install         (这个过程我碰到了两次error: linux/compiler.h: No such file or directory错误,但是编译还是可以继续进行。在网上google了好久,xen的maillist也有很多类似问题的,但是基本上没看到solution,目前暂未找到解决办法)

八. 生成 initrd (虚拟磁盘镜像文件)
   这和你的配置有关, 可以使用 'mkinitrd' 来创建一个 initial ram disk. 切换到/boot目录,
    [root@master boot]# depmod 2.6.18.8-xen
    [root@master boot]# mkinitrd -v -f --with=aacraid --with=sd_mod --with=scsi_mod initrd-2.6.18.8-xen.img 2.6.18.8-xen

   有些系统可能需要使用 'mkinitramfs' 来创建ramdisk
    # depmod 2.6.18.8-xen
    # mkinitramfs -o initrd-2.6.18.8-xen.img 2.6.18.8-xen

.修改 grub 配置文件,重新启动计算机

        #vi /boot/grub/menu.lst

        将default值改为0,添加如下内容,然后reboot以xen 内核启动。  

 

        title Xen3.4.2 / XenLinux 2.6.18

             root(hd0,0)

             kernel  /xen-3.4.2.gz

             module /vmlinuz-2.6.18.8-xen ro root=LABEL=/  console=tty0

             module /initrd-2.6.18.8-xen.img

 

     重启时出现了一个 warning ,说当前模拟还不支持 memory accesses ,解决办法:(http://www.xen-support.com/p=180

 

 

Disabling TLS on Centos 5 by doing ” mv /lib/tls /lib/tls.disabled ” might not work. you probably noticed that the /lib/tls directory is empty.

You need to create a file named xen.conf under /etc/ld.so.conf.d/ with the following content:

# This directive teaches ldconfig to search in nosegneg subdirectories
# and cache the DSOs there with extra bit 0 set in their hwcap match
# fields. In Xen guest kernels, the vDSO tells the dynamic linker to
# search in nosegneg subdirectories and to match this extra hwcap bit
# in the ld.so.cache file.
hwcap 0 nosegneg

The file name must end with .conf.
Run /sbin/ldconfig and reboot.

The problem should be solved.

 

 

 

在 starting udev 时超时了。其余一切正常。 

.重启后我们可以用#uname –r 命令来查看新的Xen kernel.这说明安装成功。

十一 .#xm list

Run this command to check if Xen has started. It should list Domain-0 (dom0):

[root@master ~]# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0      964     1 r-----    134.1

 

十二:开机自动启动xend服务

#chkconfig xend on

#service xend start

 

 

恭喜你,虚拟机安装完毕 !

===============================================================

CentOS下另一种安装虚拟机的方法:

(因为是在CentOS下,我们可以简单的用如下命令完成Xen虚拟机的安装:

Login as the root and type the following commands:
# yum install xen kernel-xen virt-manager
# chkconfig xend on
# reboot

virt-manager is a gui tool,通过# virt-manager & 命令来调用它。virt-manager is Xen Management Consoles software. It can perform the common tasks of administering a Xen host such as configuring, starting, monitoring and stopping of Xen guests oses. Please note that above instructions also works on。virt-install is a command line tool for provisioning new virtual machines using the "libvirt" hypervisor management library.)

 

===============================================================

好了,到目前为止已经在CentOS上成功安装了Xen虚拟机,下面就介绍下如何在Xen上新建虚拟机。

CentOS comes with a nice tool called virt-install with which we can create virtual machines for Xen. To start it, we simply run

virt-install

The tools asks a few questions before it creates a virtual machine. I want to call my first virtual machine vm01, with 256MB RAM and a disk size of 4GB. I want to store it in the file /vm/vm01.img:

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 (file 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? <-- http://wftp.tu-chemnitz.de/pub/linux/centos/5.2/os/i386

The question about the graphics support refers to the installer, not the virtual machine itself! It is possible to start a graphical installer, but you'd have to connect to it via VNC. It's easier to use the text installer - it offers the same options, so I choose the text installer.

As install location, you should specify a mirror close to you where the installer can download all files needed for the installation of CentOS 5.2 in our virtual machine. You can find a list of CentOS mirrors here: http://www.centos.org/modules/tinycontent/index.php?id=13

After we have answered all questions, virt-install starts the normal CentOS 5.2 installer (in text mode) in our vm01 virtual machine. You already know the CentOS installer, so it should be no problem for you to finish the CentOS installation in vm01.

After the installation, we stay at the vm01 console. To leave it, type CTRL+] if you are at the console, or CTRL+5 if you're using PuTTY. You will then be back at the dom0 console.

virt-install has created the vm01 configuration file /etc/xen/vm01 for us (in dom0). It should look like this:

cat /etc/xen/vm01

name = "vm01"
uuid = "6c835c75-41da-b13f-ec1b-946c4079ec17"
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:3e:7a:27:02,bridge=xenbr0" ]

Run

xm console vm01

to log in on that virtual machine again (type CTRL+] if you are at the console, or CTRL+5 if you're using PuTTY to go back to dom0), or use an SSH client to connect to it.

To get a list of running virtual machines, type

xm list

The output should look like this:

[root@server1 ~]# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0      771     1 r-----    283.5
vm01                                       1      255     1 -b----    237.6
[root@server1 ~]#

To shut down vm01, do this:

xm shutdown vm01

To start vm01 again, run

xm create /etc/xen/vm01

If you want vm01 to start automatically at the next boot of the system, then do this:

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

Here are the most important Xen commands:

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.

4 Links

    * Xen: http://www.xensource.com/xen
    * CentOS: http://www.centos.org

===============================================================

另一个创建虚拟机的文档介绍如下:

Installing CentOS 5.3 guest using the Internet

virt-install is a command line tool for provisioning new virtual machines using the "libvirt" hypervisor management library. Type the following command to install CentOS v5.3 64 bit as guest operating system in /vm:
# mkdir /vm
If you are using SELinux, enter:
# semanage fcontext -a -t xen_image_t "/vm(/.*)?"
# restorecon -R /vm
# ls -dZ /vm

Above will provide security context of Xen images. Finally, install CentOS 5.3 using the Internet mirror:
# virt-install /
--paravirt /
--name webserver01 /
--ram 512 /
--file /vm/webserver.nixcraft.com.img /
--file-size 10 /
--nographics /
--location http://mirrors.kernel.org/centos/5.3/os/x86_64/

==============================================================

 

PS:

1.英文安装文档可以参考http://www.howtoforge.com/installing-xen-on-centos-5.2-i386http://www.cyberciti.biz/tips/rhel-centos-xen-virtualization-installation-howto.html

2.邮件组http://lists.xensource.com/archives/html/xen-users/2008-05/msg00341.html 上面有简洁的安装过程如下:

Hi,

do something like this
(from
http://lists.xensource.com/archives/html/xen-users/2008-01/msg00699.html
):
   yum install hgsvn
   yum install dev86
   mkdir tmp
   cd tmp
   hg clone http://xenbits.xensource.com/linux-2.6.18-xen.hg
   wget http://bits.xensource.com/oss-xen/release/3.2.1/xen-3.2.1.tar.gz
   tar xfvz xen-3.2.1.tar.gz

   cd xen-3.2.1
   make prep-kernels
   cp -av /boot/config-my-old-config
build-linux-2.6.18-xen_x86_64/.config
   make -j7 dist
   make -j7 linux-2.6-xen-build
   make -j7 install
   make linux-2.6-xen-install
   depmod 2.6.18.8-xen
   mkinitrd /boot/initrd-2.6.18.8 -xen.img 2.6.18.8-xen

regards
Danny

_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users

3.

查看 Makefile 可以知道, make world 实际上是先做所有的清理工作,然后 make dist 。而 make dist 又是由 make xen (make install-xen ), make kernels(make install-kernels), make tools(make install-tools), make stubdom (make install-stubdom ), make docs(make install-docs) 这几条命令顺序执行, make prep-kernels 实际上执行的是 make linux -XXX-prep, make kernels 实际上执行的是 make linux -XXX-install ,所以,完全可以把整个的 make dist 拆开来进行。尤其是出了错误的时候,要完全重新执行 make dist 过于巨大,知道了整个 make 过程是怎么样的之后,分步执行,能快速定位错误,而且每个小分步都能很快地执行,也给人以信心。
3. 在安装 xen-3.3.1 时 make dist 执行到中间,在 make stubdom 时会下载一个 lwip-1.3.0.tar.gz 文件,所以安装前要检查网络连接以及设置好 wget 的一些参数。

4.在安装 xen-3.4.2 时 make dist 执行到中间,在 make stubdom 时会下载一个 lwip-1.3.0.tar.gz 文件,所以安装前要检查网络连接以及设置好 wget 的一些参数。

5.所有关于 xen 的官方安装文档上在说到 customize kernels 时会说在 top level Makefile 中修改包含有“ KERNELS ?= ”的这一行,然而在 top level Makefile 中并没有这一行,在 top level make file 中有: include Config.mk ,而在 Config.mk 中又有: include $(XEN_ROOT)/config /$(XEN_OS).mk 这一行,其中 XEN_OS 的值就是 uname –s 的输出,在我的电脑上就是 Linux ,所以这一行会包含 config/Linux.mk 文件,在 config/Linux.mk 文件中有 KERNELS ?= 这一行,所以,文档中说的修改 top level Makefile ,实际上意思是修改 config 目录下对应的 mk 文件。

6.以上是没有经过 customize 内核的默认安装,所有选项 (make 时要求回答 y/n/m 的选项 ) ,都直接回车带过。所以没有遇到网上说的任何问题。

7.CentOS 5 国内源

最快捷的更改 CentOS 5 源的方法如下:

cd /etc/yum.repos.d
mv CentOS-Base.repo  CentOS-Base.repo.save
wget http://centos.ustc.edu.cn/CentOS-Base.repo.5
mv CentOS-Base.repo.5 CentOS-Base.repo

8.网上另一篇相关安装文档:

配置
一、安装 xen :
     在centos 下最简单那就当然是 yum 了;
    # yum install xen kernel-xen0 kernel-xenu
    安装好以后查看 grub.conf 文件有如下信息:
default=1     默认为 1 改为 0 启动 xen 内核
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-92.1.10.el5xen)
        root (hd0,0)
        kernel /xen.gz-2.6.18-92.1.10.el5
        module /vmlinuz-2.6.18-92.1.10.el5xen ro root=LABEL=/
        module /initrd-2.6.18-92.1.10.el5xen.img
title CentOS (2.6.18-92.1.6.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-92.1.6.el5 ro root=LABEL=/
        initrd /initrd-2.6.18-92.1.6.el5.img
      然后重新启动: # reboot
  二、启动 xen 服务:
    # services xend start 
    查看正在运行的虚拟机:
    # xm list  看到如下 说明启动正常:
    Name                                      ID Mem(MiB) VCPUs State   Time(s)
    Domain-0                                   0     1243     2 r-----   1464.9
  三、说最简单安装那就开始吧:
      1、配置安装源: 其实很简单就是做个 ftp 服务器 (我就直接本机做了,呵呵)
  安装白:
     # rpm -ivh vsftpd-2.0.5-12.el5.rpm
     # services vsftpd start
       2、 cp centos 5  安装文件到 ftp 目录 方便我就直接复制到 默认的 pub 目录
         自己精简下 centos 5 的 iso 安装包 (近700M)还有点大
          然后 解压 上传到 pub 目录就 ok 了
       3、创建虚拟机的安装文件:
      # dd if=/dev/zero of=/vm/centos.img bs=1M count=4096
        意思就是在 /vm/ 目录下制作一个 4G 大小的 centos.img 文件 用于安装 centos
      4、就是最重要的一步了;
       如果要是开启了selinux 则先输入如下命令:
        chcon -t xen_image_t  -R /vm/centos.img      就是给 cenots.img 打上安全标记
        ls -Z 查看 :
        -rw-r--r--  root root user_u:object_r:xen_image_t   centos.img
        5、开始安装:
         利用 xen 的virt-install 命令:
         # virt-install -n centos -r 256  /
          > -f /vm/centos.img --nographics /
          > -l ftp://本机ip/pub/
相关解释:  
-n :             设置 domain-U 的名称,这个名称的配置文件默认在 /etc/xen 目录下
-r :             设置 domain-U 的内存,目前至少需要 256MB 才能够执行
-f :             设置 domain-U 的硬盘镜像位置
--nographics :   不使用图形界面来安装的意思
-l :             安装文件的存放位置
--vcpus :         虚拟机的CPU数量
--vnc              使用VNC终端连接方式
各种安装文件的路径格式:
   NFS :   nfs:主机的IP:安装文件所在目录
   WWW :   http://主机的IP/安装文件存放目录
   FTP :   ftp://主机的IP/安装文件存放目录
           6、就会出现如下熟悉的安装画面:

==============================================================

 

FAQ:

1. 安装完成reboot的时候遇到  kenel panic  的错误,多半是最后修改grub的menu.lst的时候设置不正确引起的,修改过来即可。

 

OK,就讲到这里了,Enjoy your XEN life!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐