选择软件

首先,我们需要选择两个软件:模拟器或者虚拟机,集群中间件,关于模拟器/虚拟机,该软件将成为一个桥梁,让 Linux 内核可以在 Windows 上运行,这是它的主要功能。

由于难以将单一系统映像Single System Image,SSI)中间件移植到 Windows 内核体系结构中,所以我们选择使用模拟器或者虚拟机。SSI 解决方案会修改内核的几乎所有部分:进程管理、文件系统、内存管理、调度器,等等。通过不加修改地运行内核进程,模拟器简化了部署工作。

关于集群中间件

使用中间件,我们可以选择作为 Linux 内核扩展的解决方案,这样就可以构建 SSI 集群。还有其他一些选择比如批调度器或者完全的远程执行包装器),但是我们选择 SSI 模型,因为它具有以下优势:

SSI 中间件隐藏了访问分散在节点间的资源文件、内存、CPU)的复杂性。我们只是需要运行应用程序,中间件将透明地完成资源的管理。

SSI 中间件具有负载均衡和透明进程transparent process)特性。利用这些特性,除了极其需要进行调整情形,或者中间件无法实现公平,管理员不需要手工调整负载。进程迁移也方便了执行,因为我们不需要进行显式的远程执行。

选择集群中间件

这相对简单。我们所选择的 SSI 中间件是什么?有三个开放源代码而且遵循 GPL 许可的解决方案排序不分先后):openMosix,openSSI, Kerrighed。 关于各个解决方案的详细资料超出了本文的范围,不过可以在参考资料中找到。

我们将选择 openMosix,原因有二:

与其他解决方案相比,openMosix 拥有最为简单的配置。这将降低集群部署的复杂度。 openMosix 以其最简单的方式为我们提供了负载均衡和透明进程迁移功能。所谓“最简单”,指的是内核补丁的大小相对较小,而且没有引入很多特性。这适用于我们的试验,不过如果愿意的话,您可以使用其他 SSI 中间件来扩展此试验。

选择模拟器/虚拟机

这一选择略为复杂。有两种可能,使用 VMWare 等商业版本的,或者使用 coLinux 等开放源代码的猜猜我们将选择哪一个!)。同样,我们选择的是基于开放源代码的解决方案。不过,我们首先来讨论各个解决方案的优势与不足,您将了解到在分析我们的选择时思考的过程。

对于商业产品,我们以 VMWare 为例。您可能会熟悉此产品;VMWare 已经在 VM 舞台活跃了很长时间。这里是我们对 VMWare 的初步分析。

优势所在:

VMWare 是一个完全的系统模拟器在本文中,术语“模拟器emulator)”和“仿真器virtualizer)”可以自由互换,都是指 “完成对某个系统的模拟的软件”)。所以,它可以模拟一个完整的系统内存、存储器、CPU、以太网卡、声卡,等等)。运行于模拟器中的系统称为客户系统guest system))不需要任何修改或者,最多需要一些保证 OS 平稳工作的补丁)。

模拟器在与其他宿主应用程序隔离开来的内存地址空间中运行,与用户空间应用程序具有相同的特权,所以客户系统的任何破坏都不会影响宿主。

不足之处:

由于 VMWare 是一个商业产品,所以它不是免费的。网络中所有 Windows 机器的许可费用,可能很容易超出一个新的专用集群的费用,后者可以以更少的费用获得更高的性能。

模拟器会消耗宿主系统的大量资源。模拟器不得不为 guest-kernel-to-application 通信拦截大部分指令,也不得不模拟一组完整的虚拟硬件设备。这样的模拟意味着使用多个层会影响网络延迟的正常下限,而这个下限是无法再下调的。

VMWare 本身不包括客户系统)需要大量的内存。所以,分配给它的内存数量将会非常大。

现在来分析 coLinux,它 是一个新的开放源代码解决方案,让您可以在 Windows 内核之上运行 Linux 内核。

优势:

coLinux 让 Linux 内核可以在本地运行作为 Windows 内核驱动器)。由于在这宿主内核和客户内核之间没有任何“桥梁”,所以 Linux 客户可以以接近本地的速度运行。在很多不同的 Linux 子系统中,模拟层是作为代码直接插入的,因此它们可以转换为对 Windows 系统的直接请求。两个内核之间在内部执行上下文切换,但这可以非常快速地完成。

宿主系统只需要分配完全只是客户系统及其派生的进程)所需要的内存。

不足:

coLinux 本身还在发展之中,所以在运行它时您可能会遇到一些小问题。尽管所有的开发人员都在尽力使 coLinux 变得更好,但他们也可能不能捕获某些缺陷。Windows 2000 和 Windows XP 是得到支持的 Windows 版本。

要运行 coLinux,需要进行一些手工配置。当前还没有帮助创建完整 coLinux 系统的自动工具,所以您必须能够构建或调整 coLinux 配置。

那么,与 VMWare 相比,coLinux 的性能如何呢?我们运行了一个粗略的基准。作为测试,我们选择了来自 Povray 的 Web 站点的 POV-Ray 3.6.1 预编译二进制程序。POV-Ray 是逼真 3D 图形创建软件的始祖之一,它完全由那些进行大量数字处理的任务构成,非常适合我们的测试。)使用 benchmark.ini包含于 povray 软件包之中)中的默认选项执行那个二进制程序: # povray benchmark.ini。

POV-Ray 在用于 Linux 内核 2.4.26 的 coLinux 上运行。根文件系统使用的是 Gentoo 发行版本。我们使用相同的发行版本在 VMWare 版本 4.5.2 上测试相同的 POV-Ray 二进制程序。下面的表格说明了测试机器使用必要的选项在 benchmark.ini 给出)完成预定义的场景所需要的时间。

表 1. POV-Ray 运行时间结果

平台POV-Ray 在哪里执行) 时间单位为 分钟:秒) 
本地Linux 39:23
coLinux 39:26
VMware 40:53

研究数据表单,您会发现 coLinux 与本地 OS 的速度相差甚少。正如所预期的那样,VMWare 比 coLinux 慢,相差一分钟左右。通过实时地将虚拟机VM)的指令流翻译给宿主机器, VMWare 可以获得接近本地的速度,但是由于 VMWare 本身在用户空间运行,这可能会引发问题。比如,当 VM 以内核模式执行代码时;为了正确地仿真 VM 的虚拟 CPU,VMWare 必须谨慎地转换内存映射和权限。

现在,我们来看所选择的模拟器 coLinux 和所选择的中间件 openMosix 如何一起工作。


相关内容

    暂无相关文章