Chinaunix首页 | 论坛 | 博客
  • 博客访问: 723762
  • 博文数量: 823
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5165
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-21 15:52
文章分类

全部博文(823)

文章存档

2011年(1)

2008年(822)

我的朋友

分类: LINUX

2008-08-21 17:37:53


Xen是可用于Linux™内核的一种虚拟化技术,让您可以像在现有环境中一样安装并测试新的升级,而不必担心破坏原有的系统。作者将向您介绍如何使用FedoraCore安装Xen,不过,安装之后,在任何发行版本上的Xen中,所有程序运转起来都是相同的。了解Linux上的虚拟化,知道具有一个用于测试新软件的沙盒的好处,并练习在同一台Linux机器上运行多个虚拟机。

随着对现有软件的改进和bug修复,开源世界的变化永无止境。要保持软件总是升级到最新,这可能得作为一份专职的工作。升级软件最难处理的问题之一是:您永远不会真正知道升级完成后应用程序是否还能够工作。大部分软件打包系统都具备回滚功能,但通常只有这项功能还不够;理想情况下,您应该去测试这些新的升级,并在一个不会破坏任何东西的环境中去尝试它们。

就像玩耍的小孩子一样,您希望拥有一个属于自己的沙盒,在那里您可以随意做任何事情。

通常通过虚拟化(Virtualization)(或者“沙盒(sandbox)”)将同一硬件上的应用程序和系统彼此隔离开来。从硬件模拟到完全硬件虚拟化,Linux支持很多种不同形式的虚拟化。在不断增加的虚拟化技术列表中,Xen是近来最引人注目的技术之一,它由剑桥大学开发。Xen值得您关注,因为它具有空前的性能与安全性。

初识Xen
Xen是在剑桥大学作为一个研究项目被开发出来的,它已经在开源社区中得到了极大的推动。Xen是一款半虚拟化(paravirtualizing)VMM(虚拟机监视器,VirtualMachineMonitor),这表示,为了调用系统管理程序,要有选择地修改操作系统,然而却不需要修改操作系统上运行的应用程序。虽然VMWare等其他虚拟化系统实现了完全的虚拟化(它们不必修改使用中的操作系统),但它们仍需要进行实时的机器代码翻译,这会影响性能。


由于Xen需要修改操作系统,所以您不能直接让当前的Linux内核在Xen系统管理程序中运行,除非它已经移植到了Xen架构。不过,如果当前系统可以使用新的已经移植到Xen架构的Linux内核,那么您就可以不加修改地运行现有的系统。

图1.简单的Xen架构

获得Xen
可以从Xen的项目主页上获得它的源代码(请参阅参考资料部分的链接),但是,如果已经在使用某个Linux发行版本,那么您或许能够通过软件包升级或者安装来获得Xen。这些主流发行版本都包含了Xen:

  • FedoraCore
  • SUSELinux
  • Debian
  • 可以获得位于Gentoo''sbugzilla的实验用的e-builds。
  • 检查您的发行版本——如果它不在这个列表中,那么您可能只能直接使用源代码。除了安装过程特定于发行版本之外,在任何发行版本上,Xen中的所有工作都是相同的。


    使用FedoraCore
    我有一个可以使用的FedoraCore3安装,为了保持本文的简洁,我将讨论如何在FedoraCore上安装和运行系统。

    尽管软件包只是在最近才开始进行开发,但Fedora已经为大量Xen用户所使用。由于有很多人尝试在Fedora上使用Xen,所以您可能成功地获得大量的在线帮助。

    安装Xen
    为了帮助您迅速上手和使用,本节着重指出了参考资料部分中QuickStartGuide的要点。由于Fedora中正在融入Xen更新,所以随着时间的推移,QuickStartGuide将很可能会发生变化,希望wiki会保持对这些变化的更新。

    首先,为基础机器(basemachine)进行最简化的服务器安装。这台基础机器是您的系统管理程序,将不会运行任何服务器应用程序。您将可以在运行于此机器之上的Xen服务器中安装所需要的软件包,所以现在不需要安装想要运行的应用程序。

    系统开始运行后,您应该将其更新到Fedora的最新开发版本(称为rawhide)。要完成此任务,请遍历/etc/yum.repos.d/目录中的元素,将除了fedora-devel.repo以外的所有元素都改为enabled=0;将fedora-devel.repo改为enabled=1

    建立了yum储存库(repository)后,需要将机器更新到rawhide,以便您可以开始使用最新发布的Xen。

    清单1.将FC3更新到rawhide并安装Xen软件包
    yumupdateyuminstallxenkernel-xen0kernel-xenU

    然后,创建一个将要使用的虚拟文件系统。

    清单2.格式化并建立Xen服务器文件系统
    mkdir-p/xen/baseddif=/dev/zeroof=/root/base.imgbs=1Mcount=1seek=1024mkfs.ext3/root/base.imgmount-oloop/root/base.img/xen/base

    格式化并挂载Xen服务器文件系统之后,下一个步骤是安装必要的软件包,以便在这些软件包上运行某些程序。为了在Xen服务器上运行一个Web服务器,您应该安装一组Web-server软件包。(警告:这将需要一段时间!您可以先运行yum,然后出去散散步。)

    清单3.安装Xen服务器软件包
    yum--installroot=/xen/base-ygroupinstallweb-server\--enablerepo=base--disablerepo=development

    (现在应该去散步了。)

    现在已经安装了所有需要的软件包,不过您应该去查看一个简单的fstab文件,这个文件会告知Xen服务器它们将要获得根(root)设备sda1,将该设备作为根。根设备实际上是来自系统管理程序的一个虚拟的设备,但您的服务器不会知道这一点。

    清单4.Xen服务器fstab文件
    /dev/sda1/ext3defaults11none/dev/ptsdevptsgid=5,mode=62000none/dev/shmtmpfsdefaults00none/procprocdefaults00none/syssysfsdefaults00

    将这个文件写入/xen/base/etc/fstab。如果不是标准的Fedora安装,那么不会为您创建任何fstab。预计Fedora的未来版本会包含处理此问题的工具。

    最后,为了让系统正确地运行,您应该做一些处理。目前,Xen使用initrd时仍然存在问题,所以,如果想要启动系统,则需要为自己创建一些设备代码。然后,为了让程序平稳运行,删除TLS程序库会有所帮助,因为目前它们与Xen冲突很严重。完成这个步骤后,可以卸载这个文件系统。

    清单5.为开始运行所做的最后的处理
    foriinconsolenullzero;doMAKEDEV-d/xen/base/dev-x$i;donemv/lib/tls/lib/tls.disabledmv/xen/base/lib/tls/xeb/base/lib/tls.disabledumount/xen/base/

    运行Xen
    既然已经细心地手工建立起了客户系统,那么您现在就可以真正重新启动机器,开始使用Xen内核。您可能将会看到比平时多得多的打印输出,并且您还会看到关于TLS程序库(上一节中您删除的那个会出问题的程序库)的可怕的消息。

    Xen要求为运行的每个服务器准备配置文件。尽管您可以为所有服务器创建一个惟一的动态配置文件,但我还是建议您创建两个静态的配置文件,各用一个。如您所见,磁盘标签告诉服务器您的文件映像是sda1设备。也指定了您所使用的xenU内核,以及服务器客户将要获得的内存。

    清单6.Xen服务器配置文件
    /etc/xen/basekernel="/boot/vmlinuz-2.6.10-1.1141_FC4xenU"memory=64name="BaseServer"nics=1disk=[''file:/root/base.img,sda1,w'']root="/dev/sda1ro"/etc/xen/testkernel="/boot/vmlinuz-2.6.10-1.1141_FC4xenU"memory=64name="TestServer"nics=1disk=[''file:/root/test.img,sda1,w'']root="/dev/sda1ro"

    要启动并运行服务器,首先要使用命令xendstart启动Xen服务,然后使用命令xmcreatebase通过基本配置文件创建BaseServer。通过这些步骤,您将进入Xen客户系统中,可以看到该系统已经启动起来。不论何时,如果您想跳出客户系统控制台,那么按下Ctrl-]组合键就可以直接返回到系统管理程序控制台。

    使用Xen
    现在您已经用了一些时间来编辑配置,并建立了运行两个Xen服务器的系统。所有这些艰苦的工作完成后,接下来做什么?

    现在您拥有了一个系统的两个副本,它们运行相同内核,在同一台机器上被虚拟化。如果BaseServer代表的是您希望正常运行Web服务的稳定环境,那么TestServer代表的就是Fedorarawhide所提供的最新软件更新。您可以随意保持对TestServer系统的升级,尝试所有新版本的软件更新——当您认为它足够稳定时,可以将TestServer作为BaseServer来运行。

    设置BaseServer
    BaseServer运行时,是修改将要运行的httpd服务的配置的好时机。您应该将ssl.conf文件移出/etc/httpd/conf.d/目录,以此来停用ssl;否则,您将需要为服务器生成证书。另外,可能需要向系统添加一个apache用户。

    Xen系统管理程序已经自动提供了一个可以使用的虚拟网络设备。如果您可以在这个设备上运行dhcp,那么只需要执行dhclienteth0,BaseServer就会获得IP地址。

    设置TestServer
    设置了BaseServer的配置之后,在BaseServer控制台中执行poweroff以关闭该实例。如果您已经从BaseServer注销,那么可以使用xmconsoleBaseServer重新进入它。

    现在,通过cp/root/base.img/root/test.img复制基础映像,以便获得同一文件系统的副本。当运行xmcreate-ctest时,它会运行与BaseServer相同的服务器,但是它的名称是TestServer。登录到TestServer,然后像您在安装Xen那一节中所做的那样启用rawhide支持,然后运行yumupdate

    TestServer实例拥有与BaseServer完全相同的配置,但是您已经升级到了Fedorarawhide所必须具备的最新的软件包。在此,您可以查看Web站点是否仍然可用。

    关于Xen还有哪些内容?
    我希望这些简短的说明和简单的示例能够帮助您安装和运行Xen,这样您就可以尝试使用它。为了让您迅速地熟悉Xen,我没有介绍如何利用LVM与快照(snapshots)等功能,也没有介绍如何完成Xen服务器从一台机器到另一台机器的网络迁移。但是,既然您已经了解了Xen所具备的一些优势,请浏览下面的参考资料,学习一些如何使用它的更为多变的技巧。

    下载本文示例代码
    阅读(317) | 评论(0) | 转发(0) |
    给主人留下些什么吧!~~