Linux上的虚拟化技术 Xen.docx

上传人:b****5 文档编号:6102542 上传时间:2023-01-03 格式:DOCX 页数:26 大小:31.93KB
下载 相关 举报
Linux上的虚拟化技术 Xen.docx_第1页
第1页 / 共26页
Linux上的虚拟化技术 Xen.docx_第2页
第2页 / 共26页
Linux上的虚拟化技术 Xen.docx_第3页
第3页 / 共26页
Linux上的虚拟化技术 Xen.docx_第4页
第4页 / 共26页
Linux上的虚拟化技术 Xen.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

Linux上的虚拟化技术 Xen.docx

《Linux上的虚拟化技术 Xen.docx》由会员分享,可在线阅读,更多相关《Linux上的虚拟化技术 Xen.docx(26页珍藏版)》请在冰豆网上搜索。

Linux上的虚拟化技术 Xen.docx

Linux上的虚拟化技术Xen

Linux上的虚拟化技术Xen初学者指南

1、什么是Xen;

  Xen是一个开放源代码的para-virtualizing虚拟机(VMM),或“管理程序”,是为x86架构的机器而设计的。

Xen可以在一套物理硬件上安全的执行多个虚拟机;Xen是基于内核的虚拟程序,它和操作平台结合的极为密切,所以它占用的资源最少。

  什么是虚拟机呢?

可能大家知道VMWARE吧,是的,Xen就是类似这样的程序,比如我们可以在Fedora上虚拟安装和使用Slackware、Debian、Gentoo......等发行版。

因为Xen是基于内核的,相对VMWARE来说,它占用的系统资源也就是VMWARE的百分之几左右。

Xen是不是更有优势呢?

只有您实践了才知道。

这也是我写本文的最主要原因;

  1.1Xen的特性;

  虚拟机的性能更接近真实硬件环境)

  在真实物理环境的平台和虚拟平台间自由切换)

  在每个客户虚拟机支持到32个虚拟CPU,通过VCPU热插拔)

  支持PAE指令集的x86/32,x86/64平台

  通过Intel虚拟支持VT的支持来用虚拟原始操作系统(未经修改的)支持(包括MicrosoftWindows)

  优秀的硬件支持.支持几乎所有的Linux设备驱动

  1.2Xen的应用范围;

  服务器整合:

在虚拟机范围内,在一台物理主机上安装多个服务器,用于演示及故障隔绝;

  无硬件依赖:

允许应用程序和操作系统对新硬件的移值测试;

  多操作系统配置:

以开发和测试为目的,同时运行多个操作系统;

  内核开发:

在虚拟机的沙盒中,做内核的测试和调试,无需为了测试而单独架设一***立的机器;

  集群运算:

和单独的管理每个物理主机相比较,在VM级管理更加灵活,在负载均衡方面,更易于控制,和隔离;

  为客户操作系统提供硬件技术支持:

可以开发新的操作系统,以得益于现存操作系统的广泛硬件支持,比如Linux;

  1.3Xen的操作系统支持和硬件支持;

  请参阅:

《Xenv3.0用户手册》

  2、Xen的一点理论基础;

  基于Xen的操作系统,有多个层,最底层和最高特权层是Xen程序本身。

Xen可以管理多个客户操作系统,每个操作系统都能在一个安全的虚拟机中实现。

在Xen的术语中,Domain由Xen控制,以高效的利用CPU的物理资源。

每个客户操作系统可以管理它自身的应用。

这种管理包括每个程序在规定时间内的响应到执行,是通过Xen调度到虚拟机中实现。

  当Xen启动运行后,第一个虚拟的操作系统,就是Xen本身,我们通过xmlist,会发现有一个Domain0的虚拟机。

Domain0是其它虚拟主机的管理者和控制者,Domain0可以构建其它的更多的Domain,并管理虚拟设备。

它还能执行管理任务,比如虚拟机的体眠、唤醒和迁移其它虚拟机。

  一个被称为xend的服务器进程通过domain0来管理系统,Xend负责管理众多的虚拟主机,并且提供进入这些系统的控制台。

命令经一个命令行的工具通过一个HTTP的接口被传送到xend。

  3、Xen的安装;

  在写本文时,Xen的当前最新版本是xen-3.0.1,它基于的内核版本是2.6.12.6的。

您可以根据自己的操作系统的情况来选择一种安装方式,适合您的就是最好的;

  3.1安装Xen的准备工作;

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

  具体明细请参阅:

《Xenv3.0用户手册》

  由于Xen用Python开发的,所以Python当然也是必不可少的。

如果您是新手,我建议您用自己所用的操作系统软件包管理工具来安装这些软件包。

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

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

  安装Xen及支持Xen的请参考:

《FedoraCore5.0用Xen虚拟Slackware10.2》

  对于Fedora4.0及Redhat和Fedora5.0类似;现在Yum的源上都有Xen和支持Xen的内核包;

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

  通过Xen的二进制软件包来安装,这应该是通用的,几乎适合所有的Linux操作系统。

由于二进制所是已经编译好的,我已经在Slackware平台上用这种方法来安装,还是成功的。

另外etony兄也在Debian上安装成功;

  您应该到

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

  [root@localhost~]#tarzxvfxen-3.0.1-install-x86_32.tgz

  [root@localhost~]#cdxen-3.0.1-install

  [root@localhostxen-3.0.1-install]#shinstall.sh

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

我想应该是有的。

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

  通过Xen的二进制包来安装,可能有时内核不太适应我们的需要,这时我们要通过Xen的源码包来安装。

通过自己编译来安装Xen及支持Xen的内核;Xen的源码包,您可以到

  3.41编译原理;

  通过Xen的源码包编译,其实也没有什么神秘的。

在Xen的源码包中提供了一些内核补丁和内核配置文件等。

当我们执行编译命令时,首先编译的是Xen程序本身,然后是编译内核。

在编译内核时,程序会自动判断是否有内核源码,xen-3.0.1支持的内核是2.6.12.6,如果在xen的解压目录下没有,他就会自动内核的官方站http:

//www.kernel.org下载linux-2.6.12.tar.bz2。

然后就是自动解压并为此内核打补丁。

然后系统会根据指令要求,然后采用相应的内核配置文件,或配置内核进行编译。

  3.42编译过程简说;

  第一步:

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

  [root@localhost~]#tarzxvfxen-3.0.1-src.tgz

  [root@localhost~]#cdxen-3.0.1

  [root@localhostxen-3.0.1]#ls

  COPYINGConfig.mkREADMEdocsinstall.shpatchesxen

  ChangeLogMakefilebuildconfigsextraslinux-2.6-xen-sparsetools

  我们解压xen-3.0.1-src.tgz后,进入解压目录,会看到以上的文件或文件夹。

patches是内核的补丁包,linux-2.6-xen-sparse是支持Xen的内核目录树,值得注意的是内核的配置文件就在这个目录中;

  [root@localhostxen-3.0.1]#lslinux-2.6-xen-sparse/arch/xen/configs/

  xen0_defconfig_ia64xen0_defconfig_x86_64xenU_defconfig_x86_32xen_defconfig_x86_32

  xen0_defconfig_x86_32xenU_defconfig_ia64xenU_defconfig_x86_64xen_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_FSisnotset

  改为

  CONFIG_NTFS_FS=m

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

  #CONFIG_NTFS_FSisnotset

  改为

  CONFIG_NTFS_FS=m

  第二步:

配置内核;

  这一步有两种方法,一个是直接修改内核配置文件,另一个是内核配置界面来配置;

  方法一:

通过修改内核配置文件;

  Xen所带的内核配置文件位于解压目录中的linux-2.6-xen-sparse/arch/xen/configs。

我们前面已经提到了相关配置文件的用途。

请仔细看前一步的说明;

  方法二:

通过内核配置界面来配置;

  [root@localhostxen-3.0.1]#makelinux-2.6-xen0-configCONFIGMODE=menuconfig

  第三步:

编译和安装Xen;

  [root@localhostxen-3.0.1]#make

  [root@localhostxen-3.0.1]#makeinstall

  3.43创建initrd文件;

  有的系统需要initrd-XXXX.img或initrd.gz文件才能引导起来,如果您的系统用了支持xen的支持引导不起来,就要创建一个initrd-XXXX.img或initrd.gz的文件;请参考:

《Xenv3.0用户手册》

  3.44关于xen0和xenU内核说明;

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

  [root@localhostxen-3.0.1]#ls-la/boot/vmlinuz*xen*

  lrwxrwxrwx1rootroot212006-04-1207:

42/boot/vmlinuz-2.6-xen0->vmlinuz-2.6.12.6-xen0

  lrwxrwxrwx1rootroot212006-04-1207:

49/boot/vmlinuz-2.6-xenU->vmlinuz-2.6.12.6-xenU

  lrwxrwxrwx1rootroot212006-04-1207:

42/boot/vmlinuz-2.6.12-xen0->vmlinuz-2.6.12.6-xen0

  lrwxrwxrwx1rootroot212006-04-1207:

49/boot/vmlinuz-2.6.12-xenU->vmlinuz-2.6.12.6-xenU

  -rw-r--r--1rootroot21805242006-04-1207:

42/boot/vmlinuz-2.6.12.6-xen0

  -rw-r--r--1rootroot11299502006-04-1207:

49/boot/vmlinuz-2.6.12.6-xenU

  其实就是两个与xen相关的内核,其它的都是这两个内核文件的链接;也就是vmlinuz-2.6.12.6-xen0和vmlinuz-2.6.12.6-xenU。

vmlinuz-2.6.12.6-xen0是用来引导虚拟平台的,比如我们在Slackware上安装Xen,那Slackware就是虚拟平台;所以如果要让Slackware的xen能运行起来,必须用xen相关的内核,也就是vmlinuz-2.6.12.6-xen0这个内核。

而XenU字样这个内核,是用来引导虚拟操作系统用的,我们在以后会提到它。

4、引导XenLinux的GRUB配置;

  一旦我们在Linux操作系统安装好Xen后,这样的系统应该被称为XenLinux。

如何才能引导拥有Xen的Linux呢?

这时我们要用到GRUB系统引导管理器。

我们修改一下GRUB的配置文件menu.lst或grub.conf就行了。

此文件位于/boot/grub目录中;

  4.1判断系统所在的分区;

  [root@localhost~]#df-h

  Filesystem容量已用可用已用%挂载点

  /dev/hda612G6.9G4.9G59%/

  4.2查看/boot目录中xen相关的配置文件;

  [root@localhost~]#ls/boot

  注意:

我们前面已经说过了,xen提供了两个内核,一个是虚拟平台用的,也就是文件名带有xen0字样的;另一个带有xenU字样的,这是用于引导和支持虚拟操作系统用的。

  什么虚拟平台,比如我们想用Slackware的Xen虚拟Fedora、Gentoo....。

那么Slackware就是虚拟平台,而Fedora、Gentoo.....是被虚拟的操作系统。

Slackware是一个真实安装在您的机器上的操作系统,它提供的是一个运行xen的环境。

为了让Slackware能支持xen,所以必须用于支持Xen的内核,也就是在/boot中有xen0字样的文件。

  如果您安装了Xen,会在/boot中有两个文件vmlinuz-2.6.12.6-xen0和vmlinuz-2.6.12.6-xenU,

  4.3禁掉TLSLibraries;

  [root@localhost~]#mv/lib/tls/lib/tls.disabled

  禁掉的理由,请查看:

《Xenv3.0用户手册》

  4.4引导XenLinux的GRUB内容;

  titleSlackXen

  kernel/boot/xen-3.0.gz

  module/boot/vmlinuz-2.6-xen0root=/dev/hda6roconsole=tty0

  如果有inintrd-2.xxxx-xen.img或initrd.gz之类的文件才能引导起来系统,还要加一行;要以/boot中的initrd相关的文件为准;

  modules/boot/initrd.gz

  有关GRUB的文档:

《系统引导管理器GRUB,为初学者指南》

  注意:

与传统GRUB的定义有点不同,就是kernel是用来定义Xen的,而Linux的内核及initrd映像是通过module指令定义的;要仔细看好;

  5、Xen的配置和管理工具;

  5.1Xen的相关文件存放位置;

  xen安装后,文件放在什么地方了呢?

主要放在以下几个目录;

  5.11内核及xen自身存放于/boot

  安装有xen的操作系统下的/boot目录中,存放xen本身及支持xen的内核文件。

比如文件名带有xen0和xenU相关的文件;

  5.12内核模块存放于/lib/modules

  内核模块包括虚拟平台支持xen的内核xen0的模块,及支持虚拟操作系统所用的xenU的模块,一般的情况下是在/lib/modules下有两个xen相关的目录存放。

一个是文件夹名带有xen0字样的,另一个是xenU字样的;

  5.13xen的配置文件及守护程序的存放位置;

  一般的情况下,Xen的配置文件存放于/etc/xen目录。

比如xend-config.sxp是用于配置网络的,不过我们不必更改,用其默认的就能完成我们的需要。

xmexample1xmexample2是两个示例性的配置文件。

我们在配置引导被虚拟的操作系统时,这两个文件可供参考;

  Xen的服务器xend和xendomains启动脚本,一般是位于/etc/init.d/目录中,也就是/etc/init.d/xend;/etc/init.d/xend负责启动xend服务器,而/etc/init.d/xendomains负责第一个虚拟的系统及其它的Domains,也就是Domain0。

  5.14可执行命令存放于/usr/sbin

  [root@localhost~]#ls/usr/sbin/xen*

  /usr/sbin/xen-bugtool/usr/sbin/xenconsoled/usr/sbin/xenmon.py/usr/sbin/xenstored

  /usr/sbin/xenbaked/usr/sbin/xend/usr/sbin/xenperf/usr/sbin/xentop

  [root@localhost~]#ls/usr/sbin/xm

  5.2Xen服务器的启动;

  xend服务器的启动/停止/重启/状态查询,请用下面的命令;

  [root@localhost~]#/etc/init.d/xendstart启动xend,如果xend没有运行)

  [root@localhost~]#/etc/init.d/xendstop停止xend,如果xend正在运行)

  [root@localhost~]#/etc/init.d/xendrestart重启正在运行的xend,如果xend没有运行,则启动

  [root@localhost~]#/etc/init.d/xendstatus查看xend状态

  启动xendomains服务器的启动/停止/重启/状态查询,请用下面的命令;一般的情况下,xend服务器启动了,xendomains也会自动启动。

所以这个只是掌握一下就行了;

  [root@localhost~]#/etc/init.d/xendstart启动xend,如果xend没有运行)

  [root@localhost~]#/etc/init.d/xendstop停止xend,如果xend正在运行)

  [root@localhost~]#/etc/init.d/xendrestart重启正在运行的xend,如果xend没有运行,则启动

  [root@localhost~]#/etc/init.d/xendstatus查看xend状态

  [root@localhost~]#/etc/init.d/xendomainsstart

  [root@localhost~]#/etc/init.d/xendomainsstop

  [root@localhost~]#/etc/init.d/xendomainsrestart

  [root@localhost~]#/etc/init.d/xendomainsstatus

  5.3Xen管理工具xm;

  我们前面提到Xen的可执行命令中,我们可能看到了一些以xen开头的命令,您不妨尝试一个一个的尝试一下他们是做什么用的;比如xend是服务器的开启运行命令.......

  其中xm命令,就是管理Xen的最基本的工具;您可以通过xm--help来获得帮助;

  5.31列出所有正在运行的虚拟操作系统;

  [root@localhost~]#/usr/sbin/xmlist

  NameIDMem(MiB)VCPUsStateTime(s)

  Domain-004501r-----5377.0

  fc542561-b----0.1

  列出所有正在运行的虚拟系统(也可以称为虚拟机);我们可以看到,一个名为Domain-0的系统正在运行。

Domain-0就是Xen本身,也可以称为虚拟平台内存大小,而Domain-0负责提供其它虚拟操作系统的硬件环境,其它的系统都是基于Domain-0开始的,我们看到他的ID为0就应该知道它的权限是至高无尚的。

所占用的内存是450M,不过这个是可以指定的。

虚拟的CPU个数是1个,运行状态处于r,也就是run,正在运行中;运行时间是5377秒;

  还有一个虚拟系统fc5,他的id是4,占用内存256M,虚拟CPU个数是1个......

  5.32通过配置文件来引导被虚拟的操作系统;

  [root@localhost~]#/usr/sbin/xmcreate-c虚拟操作系统的启动配置文件

  比如我们要启动被虚拟的操作系统FedoraCore5.0,我们要写一个启动Fedora的配置文件,比如是fc5vm.cfg。

然后就可以通过下面的命令来引导Fedora了;

  [root@localhost~]#/usr/sbin/xmcreate-cfc5vm.cfg

  5.33从终端或控制台登录正在运行的虚拟操作系统;

  [root@localhost~]#/usr/sbin/xmconsole正在运行的虚拟操作系统的Name或ID;

  举例:

  [root@localhost~]#/usr/sbin/xmlist

  NameIDMem(MiB)VCPUsStateTime(s)

  Do

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1