我计划在具有 32 GB RAM 的 64 位 Dell 服务器上托管 Web 应用程序。我计划在那里安装 Ubuntu 10.04 LTS。问题是,我们的 Web 应用程序使用模拟器,只能在 32 位模式下编译和运行。所以,现在我正在考虑两种可能的解决方案:
- 安装 32 位 Ubuntu——模拟器可以顺利运行,但资源利用率可能不是最佳的
- 安装 64 位操作系统;安装另一个 32 位 Ubuntu 虚拟机。让 Apache 从主服务器重定向到“虚拟”服务器。
我想知道这两种技术的优缺点。如果有更好的选择,我会很高兴听到。
我已经在这里搜索过类似的帖子,并发现以下内容密切相关: 我应该在 64 位 Debian 服务器上运行 32 位和 64 位生产应用程序吗?
但是,那里提供的解决方案并不能完全让我满意。
最后,我必须承认我对虚拟化一无所知。上面提供的选项 2 是基于我对系统的了解。但是,我非常渴望了解虚拟化。
答案1
这ia32-libs
软件包包含大量 x86_32 库。如果您的程序只能使用这些库运行,那么您就大功告成了。此外,还有 32 位开发工具gcc-multilib
和binutils-multiarch
包。
如果你需要更进一步,可以在 chroot 中运行 32 位系统。Debian 和 Ubuntu 附带了一些工具,主要可以简化这一操作施鲁特, 和解引导进行安装。设置 schroot 并在其中安装 32 位系统。调用schroot
负责调用setpersonality()
,特别是uname()
返回i686
而不是x86_64
。uname
当您尝试在 64 位系统上直接运行应用程序时,返回意外值可能是导致应用程序混乱的原因。请记住关闭 chroot 中的服务(我链接到的指南解释了如何操作),并在 chroot 中进行安全升级(您不会在那里运行任何服务,但库中可能存在错误)。
虚拟机在这里毫无用处。您将面临 chroot 的所有维护问题,以及 VM 的问题,以及分离问题(内存使用、磁盘使用等),以及 VM 中的单独 Apache 实例,以及主机上的重定向,还有可能的性能问题。
答案2
如果我是你,我会运行 32 位版本的 PV xen(从而最大限度地减少虚拟机的“惩罚”)(这比在 64 位系统上摆弄 32 位库更容易)。为此,我会使用基于 AMD-Opteron 的机器(英特尔模拟 32 位,AMD 确实以本机方式执行)。