随着对现有软件的改进和 bug 修复,开源世界的变化永无止境。要保持软件总是升级到最新,这可能得作为一份专职的工作。升级软件最难处理的问题之一是:您永远不会真正知道升级完成后应用程式是否还能够工作。大部分软件打包系统都具备回滚功能,但通常只有这项功能还不够;理想情况下,您应该去测试这些新的升级,并在一个不会破坏任何东西的环境中去尝试他们。
由于 Xen 需要修改操作系统,所以您不能直接让当前的 Linux 内核在 Xen 系统管理程式中运行,除非他已移植到了 Xen 架构。但是,假如当前系统能够使用新的已移植到 Xen 架构的 Linux 内核,那么您就能够不加修改地运行现有的系统。
图 1. 简单的 Xen 架构
获得 Xen
能够从 Xen 的项目主页上获得他的源代码(请参阅 参考资料 部分的链接),但是,假如已在使用某个 Linux 发行版本,那么您或许能够通过软件包升级或安装来获得 Xen。这些主流发行版本都包含了 Xen:
* Fedora Core
* SUSE Linux
* Debian
* 能够获得位于 Gentoo’s bugzilla 的实验用的 e-builds。
检查您的发行版本 —— 假如他不在这个列表中,那么您可能只能直接使用源代码。除了安装过程特定于发行版本之外,在任何发行版本上,Xen 中的任何工作都是相同的。
使用 Fedora Core
我有一个能够使用的 Fedora Core 3 安装,为了保持本文的简洁,我将讨论怎样在 Fedora Core 上安装和运行系统。
尽管软件包只是在最近才开始进行研发,但 Fedora 已为大量 Xen 用户所使用。由于有很多人尝试在 Fedora 上使用 Xen,所以您可能成功地获得大量的在线帮助。
安装 Xen
为了帮助您迅速上手和使用,本节着重指出了 参考资料 部分中 Quick Start Guide 的要点。由于 Fedora 中正在融入 Xen 更新,所以随着时间的推移, Quick Start Guide 将很可能会发生变化,希望 wiki 会保持对这些变化的更新。
首先,为基础机器(base machine)进行最简化的服务器安装。这台基础机器是您的系统管理程式,将不会运行任何服务器应用程式。您将能够在运行于此机器之上的 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 软件包
yum update yum install xen kernel-xen0 kernel-xenU
然后,创建一个将要使用的虚拟文档系统。
清单 2. 格式化并建立 Xen 服务器文档系统
mkdir -p /xen/base dd if=/dev/zero of=/root/base.img bs=1M count=1 seek=1024 mkfs.ext3 /root/base.img mount -o loop /root/base.img /xen/base
格式化并挂载 Xen 服务器文档系统之后,下一个步骤是安装必要的软件包,以便在这些软件包上运行某些程式。为了在 Xen 服务器上运行一个 Web 服务器,您应该安装一组 Web-server 软件包。(警告: 这将需要一段时间!您能够先 运行 yum,然后出去散散步。)
清单 3. 安装 Xen 服务器软件包
yum --installroot=/xen/base -y groupinstall web-server \ --enablerepo=base --disablerepo=development
(现在应该去散步了。)
现在已安装了任何需要的软件包,但是您应该去查看一个简单的 fstab 文档,这个文档会告知 Xen 服务器他们将要获得根(root)设备 sda1,将该设备作为根。根设备实际上是来自系统管理程式的一个虚拟的设备,但您的服务器不会知道这一点。
清单 4. Xen 服务器 fstab 文档
/dev/sda1 / ext3 defaults 1 1 none /dev/pts devpts gid=5,mode=620 0 0 none /dev/shm tmpfs defaults 0 0 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0
将这个文档写入 /xen/base/etc/fstab。假如不是标准的 Fedora 安装,那么不会为您创建任何 fstab。预计 Fedora 的未来版本会包含处理此问题的工具。
最后,为了让系统正确地运行,您应该做一些处理。现在,Xen 使用 initrd 时仍然存在问题,所以,假如想要启动系统,则需要为自己创建一些设备代码。然后,为了让程式平稳运行,删除 TLS 程式库会有所帮助,因为现在他们和 Xen 冲突很严重。完成这个步骤后,能够卸载这个文档系统。
清单 5. 为开始运行所做的最后的处理
for i in console null zero ; do MAKEDEV -d /xen/base/dev -x $i ; done mv /lib/tls /lib/tls.disabled mv /xen/base/lib/tls /xeb/base/lib/tls.disabled umount /xen/base/
运行 Xen
既然已细心地手工建立起了客户系统,那么您现在就能够真正重新启动机器,开始使用 Xen 内核。您可能将会看到比平时多得多的打印输出,并且您还会看到关于 TLS 程式库(上一节中您删除的那个会出问题的程式库)的可怕的消息。
Xen 需要为运行的每个服务器准备配置文档。尽管您能够为任何服务器创建一个惟一的动态配置文档,但我还是建议您创建两个静态的配置文档,各用一个。如您所见,磁盘标签告诉服务器您的文档映像是 sda1 设备。也指定了您所使用的 xenU 内核,连同服务器客户将要获得的内存。
清单 6. Xen 服务器配置文档
/etc/xen/base kernel ="/boot/vmlinuz-2.6.10-1.1141_FC4xenU" memory = 64 name = "BaseServer" nics = 1 disk = [’file:/root/base.img,sda1,w’] root = "/dev/sda1 ro" /etc/xen/test kernel ="/boot/vmlinuz-2.6.10-1.1141_FC4xenU" memory = 64 name = "TestServer" nics = 1 disk = [’file:/root/test.img,sda1,w’] root = "/dev/sda1 ro"
要启动并运行服务器,首先要使用命令 xend start 启动 Xen 服务,然后使用命令 xm create base 通过基本配置文档创建 BaseServer。通过这些步骤,您将进入 Xen 客户系统中,能够看到该系统已启动起来。不论何时,假如您想跳出客户系统控制台,那么按下 Ctrl-] 组合键就能够直接返回到系统管理程式控制台。
使用 Xen
现在您已用了一些时间来编辑配置,并建立了运行两个 Xen 服务器的系统。任何这些艰苦的工作完成后,接下来做什么?
现在您拥有了一个系统的两个副本,他们运行相同内核,在同一台机器上被虚拟化。假如 BaseServer 代表的是您希望正常运行 Web 服务的稳定环境,那么 TestServer 代表的就是 Fedora rawhide 所提供的最新软件更新。您能够随意保持对 TestServer 系统的升级,尝试任何新版本的软件更新 —— 当您认为他足够稳定时,能够将 TestServer 作为 BaseServer 来运行。
配置 BaseServer
BaseServer 运行时,是修改将要运行的 httpd 服务的配置的好时机。您应该将 ssl.conf 文档移出 /etc/httpd/conf.d/ 目录,以此来停用 ssl;否则,您将需要为服务器生成证书。另外,可能需要向系统添加一个 apache 用户。
Xen 系统管理程式已自动提供了一个能够使用的虚拟网络设备。假如您能够在这个设备上运行 dhcp,那么只需要执行 dhclient eth0 ,BaseServer 就会获得 IP 地址。
配置 TestServer
配置了 BaseServer 的配置之后,在 BaseServer 控制台中执行 poweroff 以关闭该实例。假如您已从 BaseServer 注销,那么能够使用 xm console BaseServer 重新进入他。
现在,通过 cp /root/base.img /root/test.img 复制基础映像,以便获得同一文档系统的副本。当运行 xm create -c test 时,他会运行和 BaseServer 相同的服务器,但是他的名称是 TestServer。登录到 TestServer,然后像您在 安装 Xen 那一节中所做的那样启用 rawhide 支持,然后运行 yum update 。
TestServer 实例拥有和 BaseServer 完全相同的配置,但是您已升级到了 Fedora rawhide 所必须具备的最新的软件包。在此,您能够查看 Web 站点是否仍然可用。
关于 Xen 更有哪些内容?
我希望这些简短的说明和简单的示例能够帮助您安装和运行 Xen,这样您就能够尝试使用他。为了让您迅速地熟悉 Xen,我没有介绍怎样利用 LVM 和快照(snapshots)等功能,也没有介绍怎样完成 Xen 服务器从一台机器到另一台机器的网络迁移。但是,既然您已了解了 Xen 所具备的一些优势,请浏览下面的 参考资料 ,学习一些怎样使用他的更为多变的技巧。