我打算在一台配备32 GB RAM的64位戴尔服务器上托pipe一个Web应用程序。 我打算把Ubuntu 10.04 LTS放在那里。 问题是,我们的networking应用程序使用一个模拟器,它可以被编译,只能在32位模式下运行。 所以,现在我正在考虑两个可能的解决scheme:
我想知道这两种技术的优缺点。 如果有更好的select,我会很高兴听到这一点。
我已经在这里search了类似的线程,并发现这是密切相关的: 我应该在64位Debian服务器上运行32位和64位生产应用程序吗?
但是,那里提供的解决scheme不能完全满足我。
最后,我必须承认,我对虚拟化没有任何了解。 上面提供的选项#2是基于我所了解的系统。 不过,我更渴望了解虚拟化。
ia32-libs软件包包含大量的x86_32库。 如果你的程序只能运行这些库,那就设置好了。 gcc-multilib和binutils-multiarch软件包中也有32位开发工具。
如果您需要超越,请在chroot中运行32位系统。 Debian和Ubuntu提供了一些工具,使得这个安装过程变得简单,主要是schroot和debootstrap 。 设置schroot并在其中安装32位系统 。 调用schroot负责调用setpersonality() ,特别是使uname()返回i686而不是x86_64 。 如果uname返回一个意外的值,那么当您尝试直接在64位系统上运行时,可能会让您的应用程序感到困惑。 请记住closureschroot中的服务(我链接到的指南将解释如何),并在chroot中进行安全升级(您不打算在那里运行任何服务,但在库中可能存在错误)。
虚拟机在这里没有用处。 您将拥有chroot和VM的所有维护问题,以及分离(内存使用情况,磁盘使用情况等)的所有维护问题,以及VM中单独的Apache实例以及主机上的redirect,以及可能的性能问题。
如果我是你,我会用32位版本(这比64位系统上的32位库更容易)运行PV xen(从而最大限度地减less虚拟机的“损失”)。 我将使用基于AMD Opteron的机器(英特尔模拟32位,AMD本身执行它)。