热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Linux系统使用Xen虚拟机测试应用程序

随着对现有软件的改进和bug修复,开源世界的变化永无止境。要保持软件总是升级到最新,这可能得作为一份专职的工作。升级软件最难处理的问题之一是:您永远不会真正知道升级完成后应用程序是否还能够工作。大部分软件打包系统都具备回滚功能,但通常只有这

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

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

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

初识 Xen

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

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

图 1. 简单的 Xen 架构
简单的 Xen 架构
获得 Xen

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

检查您的发行版本 —— 如果它不在这个列表中,那么您可能只能直接使用源代码。除了安装过程特定于发行版本之外, 在任何发行版本上,Xen 中的所有工作都是相同的。

使用 Fedora Core

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

尽管软件包只是在最近才开始进行开发,但 Fedora 已经为大量 Xen 用户所使用。由于有很多人尝试在 Fedora 上使用 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 内核。 您可能将会看到比平时多得多的打印输出,并且您还会看到关于 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 服务器的系统。 所有这些艰苦的工作完成后,接下来做什么?

现在您拥有了一个系统的两个副本,它们运行相同内核,在同一台机器上被虚拟化。 如果 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,我没有介绍如何利用 LVM 与快照(snapshots)等功能,也没有 介绍如何完成 Xen 服务器从一台机器到另一台机器的网络迁移。但是,既然您已经了解了 Xen 所具备的一些优势,请浏览下面的


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
author-avatar
菜123
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有