首 页文章中心

Linux学习网

您的位置Linux学习网 > Linux综合 > 文章内容

Xen 初学者指南

作者:佚名  来源:不详  发布时间:2007-12-21 16:47:00

Xen 初学者指南

id="bodyContent">

Wikipedia,自由的百科全书

id="contentSub">Revision as of 02:04 2006年4月26日; view current revisionEGKLinux联盟
←Older revision | Newer revision→

作者:北南南北来自:LinuxSir.Org 摘要: 本文是根据 《Xen v3.0 用户手册》的实践篇,将初学者需要掌握的Xen基础知识清点了一下。在本文中举了一个实例,用Slackware虚拟 Fedora ;最好能对大家有点帮助吧;

EGKLinux联盟

目录 [隐藏]
class="tocline">1 Xen 初学者指南EGKLinux联盟
class="tocindent">

1.1 本文约定EGKLinux联盟
1.2 什么是Xen;EGKLinux联盟

class="tocindent">

1.2.1 Xen的特性EGKLinux联盟
1.2.2 Xen的应用范围EGKLinux联盟

1.3 Xen的一点理论基础EGKLinux联盟
1.4 Xen的安装EGKLinux联盟

class="tocindent">

1.4.1 安装Xen的准备工作EGKLinux联盟
1.4.2 在Redhat/Fedora 操作平台上的安装EGKLinux联盟
1.4.3 通过Xen的二进制包来安装(几乎适用所有的Linux发行版)EGKLinux联盟
1.4.4 通过Xen的源码包编译安装(仅供参考)EGKLinux联盟

class="tocindent">

1.4.4.1 编译原理EGKLinux联盟
1.4.4.2 编译过程简说EGKLinux联盟
1.4.4.3 创建initrd文件EGKLinux联盟
1.4.4.4 关于xen0和xenU内核说明EGKLinux联盟

Xen 初学者指南

本文约定

虚拟平台是指能支持运行Xen的真实安装的操作系统;虚拟操作系统:是指在虚拟平台上安装和虚拟运行的操作系统;

比如我在Slackware 中安装了Xen,那Slackware就是虚拟平台,通过虚拟平台就可以虚拟其它操作系统了;比如通过Slackware来虚拟Debian、Fedora ... ...

EGKLinux联盟

什么是Xen;

Xen 是一个开放源代码的para-virtualizing虚拟机(VMM),或“管理程序 ”,是为x86架构的机器而设计的。Xen 可以在一套物理硬件上安全的执行多个虚拟机;Xen是基于内核的虚拟程序,它和操作平台结合的极为密切,所以它占用的资源最少。

什么是虚拟机呢?可能大家知道VMWARE吧,是的,Xen就是类似这样的程序,比如我们可以在Fedora 上虚拟安装和 使用Slackware、Debian、Gentoo ... ... 等发行版。因为Xen是基于内核的,相对VMWARE 来说,它占用的系统资源也就是VMWARE的百分之几左右。Xen是不是更有优势呢?只有您实践了才知道。这也是我写本文的最主要原因;

Xen的特性

  • 虚拟机的性能更接近真实硬件环境)
  • 在真实物理环境的平台和虚拟平台间自由切换)
  • 在每个客户虚拟机支持到 32个虚拟CPU,通过 VCPU热插拔)
  • 支持PAE指令集的x86/32, x86/64平台
  • 通过Intel 虚拟支持VT的支持来用虚拟原始操作系统(未经修改的)支持(包括Microsoft Windows)
  • 优秀的硬件支持.支持几乎所有的Linux设备驱动

Xen的应用范围

  • 服务器整合:在虚拟机范围内,在一台物理主机上安装多个服务器, 用于演示及故障隔绝;
  • 无硬件依赖:允许应用程序和操作系统对新硬件的移值测试;
  • 多操作系统配置:以开发和测试为目的,同时运行多个操作系统;
  • 内核开发:在虚拟机的沙盒中,做内核的测试和调试,无需为了测试而单独架设一台独立的机器;
  • 集群运算:和单独的管理每个物理主机相比较,在VM级管理更加灵活,在负载均衡方面,更易于控制,和隔离;
  • 为客户操作系统提供硬件技术支持:可以开发新的操作系统, 以得益于现存操作系统的广泛硬件支持,比如Linux;

Xen的一点理论基础

基于Xen的操作系统,有多个层,最底层和最高特权层是 Xen程序本身。Xen 可以管理多个客户操作系统,每个操作系统都能在一个安全的虚拟机中实现。在Xen的术语中,Domain由Xen控制,以高效的利用CPU的物理资源。每个客户操作系统可以管理它自身的应用。这种管理包括每个程序在规定时间内的响应到执行,是通过Xen调度到虚拟机中实现。

当Xen启动运行后,第一个虚拟的操作系统,就是Xen本身,我们通过xm list,会发现有一个Domain 0的虚拟机。Domain 0 是其它虚拟主机的管理者和控制者,Domain 0 可以构建其它的更多的Domain ,并管理虚拟设备。它还能执行管理任务,比如虚拟机的体眠、唤醒和迁移其它虚拟机。

一个被称为xend的服务器进程通过domain 0来管理系统,Xend 负责管理众多的虚拟主机,并且提供进入这些系统的控制台。命令经一个命令行的工具通过一个HTTP的接口被传送到xend。

Xen的安装

在写本文时,Xen的当前最新版本是xen-3.0.1,它基于的内核版本是2.6.12.6的。您可以根据自己的操作系统的情况来选择一种安装方式,适合您的就是最好的;

安装Xen的准备工作

拥有 GRUB引导的Linux做为安装平台,还要编译工具,比如gcc、binutils 及make和automake等;开发库有zlib和python-dev等;

具体明细请参阅: 《Xen v3.0 用户手册》 (http://www.linuxsir.org/main/doc/Xen3man/)

由于Xen用Python 开发的,所以Python 当然也是必不可少的。如果您是新手,我建议您用自己所用的操作系统软件包管理工具来安装这些软件包

在Redhat/Fedora 操作平台上的安装

在Fedora/Redhat平台上安装比较简单,您可以通过yum 来在线安装Xen和支持Xen的内核;因为Fedora/Redhat已经提供对Xen的支持了;Fedora/Redhat 提供的Xen内核支持比较高;不过就目前我的测试来看好象经常会机器重启,存在的问题可能是桌面环境造成的,比如GNOME桌面,打开就有重启的现象,也可能是Fedora/Redhat提供的Xen内有BUG;

安装Xen及支持Xen的请参考:《Fedora Core 5.0 用 Xen 虚拟Slackware 10.2》 (http://www.linuxsir.org/main/?q=node/183)

对于Fedora 4.0及Redhat和Fedora 5.0类似;现在Yum的源上都有Xen和支持Xen的内核包;

通过Xen的二进制包来安装(几乎适用所有的Linux发行版)

通过Xen的二进制软件包来安装,这应该是通用的,几乎适合所有的Linux操作系统。由于二进制所是已经编译好的,我已经在Slackware 平台上用这种方法来安装,还是成功的。另外etony兄也在Debian上安装成功;

您应该到 http://www.xensource.com/downloads 去下载二进制包,文件名中带有xen-3.0.1-install字样的,比如 xen-3.0.1-install-x86_32.tgz,这个软件包表示适用x86_32位机器的。也就是我们用的普通32位PC机。如果您用的是 64位机器,应该下载文件名带有x86_64字样的软件包;

下载好后,就解压安装,我们还是以支持x86_32构架机器的xen-3.0.1-install-x86_32.tgz为例:

[root@localhost ~]# tar zxvf xen-3.0.1-install-x86_32.tgz[root@localhost ~]# cd xen-3.0.1-install[root@localhost xen-3.0.1-install]# sh install.sh

判断是不是安装好了,请查看/boot目录,会发现有很多文件名带有xen字样的文件,另外在/lib/moudules中也会发现有支持xen的内核模块;另外再看一看是否有/etc/xen这个目录。我想应该是有的。

通过Xen的源码包编译安装(仅供参考)

通过Xen的二进制包来安装,可能有时内核不太适应我们的需要,这时我们要通过Xen的源码包来安装。通过自己编译来安装Xen及支持Xen的内核;Xen的源码包,您可以到 http://www.xensource.com/downloads去下载。文件名带有 xen-3.0.1-src字样的,比如 xen-3.0.1-src.tgz。

编译原理

通过Xen的源码包编译,其实也没有什么神秘的。在Xen的源码包中提供了一些内核补丁和内核配置文件等。当我们执行编译命令时,首先编译的是Xen程序本身,然后是编译内核 。在编译内核时,程序会自动判断是否有内核源码,xen-3.0.1支持的内核是2.6.12.6,如果在xen的解压目录下没有,他就会自动内核的官方站 http://www.kernel.org 下载 linux-2.6.12.tar.bz2。然后就是自动解压并为此内核打补丁。然后系统会根据指令要求,然后采用相应的内核配置文件,或配置内核进行编译。

编译过程简说

第一步:解压软件包,查看Xen源码包所带的文件;

[root@localhost ~]# tar zxvf xen-3.0.1-src.tgz[root@localhost ~]# cd xen-3.0.1[root@localhost xen-3.0.1]# lsCOPYING Config.mk README docs install.sh patches xenChangeLog Makefile buildconfigs extras linux-2.6-xen-sparse tools

我们解压xen-3.0.1-src.tgz 后,进入解压目录,会看到以上的文件或文件夹。patches是内核的补丁包,linux-2.6-xen-sparse是支持Xen的内核目录树,值得注意的是内核的配置文件就在这个目录中;

[root@localhost xen-3.0.1]# ls linux-2.6-xen-sparse/arch/xen/configs/xen0_defconfig_ia64 xen0_defconfig_x86_64 xenU_defconfig_x86_32 xen_defconfig_x86_32xen0_defconfig_x86_32 xenU_defconfig_ia64 xenU_defconfig_x86_64 xen_defconfig_x86_64

看到上面所列出的内核配置文件了吧,我们可能会发现文件名带有xen0字样的和xenU字样的两类文件。在这两类内核中,我们大多会修改的内核配置文件是运行xen的操作系统的内核配置文件,另一个是用于虚拟操作系统的内核配置文件;

xen0字样的就是我们一般是用于我们运行xen的操作系统的内核 ,而xenU字样的就是为虚拟操作系统所提供的内核。另外还有x86_32和x86_64之分,这表示CPU的架构。

比如我们用的是x86架构32位的CPU,我们在编译内核的时候就要用到 xen0_defconfig_x86_32 和xenU_defconfig_x86_32 配置文件。

举个例子:比如我的机器架构是x86_32位的,我安装xen的操作系统是Slackware,我想在Slackware 虚拟Debian 、Gentoo、Fedora等操作系统。这时编译虚拟平台Slackware所用的内核的配置文件就是 xen0_defconfig_x86_32 ,而被虚拟平台(Debian 、Gentoo、Fedora等操作系统)所用的内核就是 xenU_defconfig_x86_32 。

弄明白内核配置文件有何用?我们能明白xen在编译过程中用了哪些内核配置文件,目的是我们在编译过程中可以根据自己的需要来修改它,以编译出适合我们需要的内核。

比如我们想让Slackware 支持xen,并且还要支持NTFS文件系统;所以我们就要修改 xen0_defconfig_x86_32这个文件。找出如下一行;

# CONFIG_NTFS_FS is not set

改为

CONFIG_NTFS_FS=m

如果您想让被虚拟的操作系统(Debian 、Gentoo、Fedora等)也支持NTFS文件系统,所以要在 xenU_defconfig_x86_32找出如下一行;

# CONFIG_NTFS_FS is not set

改为

CONFIG_NTFS_FS=m

第二步:配置内核;EGKLinux联盟
这一步有两种方法,一个是直接修改内核配置文件,另一个是内核配置界面来配置;EGKLinux联盟
方法一:通过修改内核配置文件;EGKLinux联盟
Xen所带的内核配置文件位于解压目录中的linux-2.6-xen-sparse/arch/xen/configs 。我们前面已经提到了相关配置文件的用途。请仔细看前一步的说明EGKLinux联盟
方法二:通过内核配置界面来配置;EGKLinux联盟

[root@localhost xen-3.0.1]# make linux-2.6-xen0-config CONFIGMODE=menuconfig

第三步:编译和安装Xen;EGKLinux联盟

[root@localhost xen-3.0.1]# make[root@localhost xen-3.0.1]# make install
创建initrd文件

有的系统需要initrd-XXXX.img或initrd.gz文件才能引导起来,如果您的系统用了支持xen的支持引导不起来,就要创建一个initrd-XXXX.img或initrd.gz的文件;请参考: 《Xen v3.0 用户手册》 (http://www.linuxsir.org/main/doc/Xen3man/)

关于xen0和xenU内核说明

一般的情况下会在/boot目录中有两个与xen相关的内核,有的文件名带有vmlinuz-XXXX-xen0字样的,有的带有vmlinuz-XXXX-xenU字样的;比如:

[root@localhost xen-3.0.1]# ls -la /boot/vmlinuz*xen*lrwxrwxrwx 1 root root 21 2006-04-12 07:42 /boot/vmlinuz-2.6-xen0 -> vmlinuz-2.6.12.6-xen0lrwxrwxrwx 1 root root 21 2006-04-12 07:49 /boot/vmlinuz-2.6-xenU -> vmlinuz-2.6.12.6-xenUlrwxrwxrwx 1 root root 21 2006-04-12 07:42 /boot/vmlinuz-2.6.12-xen0 -> vmlinuz-2.6.12.6-xen0lrwxrwxrwx 1 root root 21 2006-04-12 07:49 /boot/vmlinuz-2.6.12-xenU -> vmlinuz-2.6.12.6-xenU-rw-r--r-- 1 root root 2180524 2006-04-12 07:42 /boot/vmlinuz-2.6.12.6-xen0-rw-r--r-- 1 root root 1129950 2006-04-12 07:49 /boot/vmlinuz-2.6.12.6-xenU
收藏本页到: 365Key | del.icio.us | | 添加到雅虎收藏+
  • 网站帮助 - 广告合作 - 网站地图