Ubuntu-在 64 位元伺服器上執行 32 位元軟體

Ubuntu-在 64 位元伺服器上執行 32 位元軟體

我計劃在具有 32 GB RAM 的 64 位元戴爾伺服器上託管一個 Web 應用程式。我計劃將 Ubuntu 10.04 LTS 放在那裡。問題是,我們的 Web 應用程式使用模擬器,只能在 32 位元模式下編譯和運行。所以,現在我正在考慮兩種可能的解決方案:

  1. 安裝32位元Ubuntu-模擬器可以正常運行,但資源利用率可能不是最佳的
  2. 安裝64位元作業系統;安裝另一台 32 位元 Ubuntu 虛擬機器。讓 Apache 從主伺服器重定向到“虛擬”伺服器。

我想了解這兩種技術的優缺點。如果有更好的選擇,我很高興聽到。

我已經在這裡搜索了類似的線程,發現這是密切相關的: 我應該在 64 位元 Debian 伺服器上運行 32 位元和 64 位元生產應用程式嗎?

然而,那裡提供的解決方案並不能完全令我滿意。

最後,我必須承認我對虛擬化一無所知。上面提供的選項 #2 是基於我對系統的了解。然而,我非常渴望了解虛擬化。

答案1

ia32-libs軟體包包含大量 x86_32 庫。如果您的程式只能使用這些程式庫運行,那麼您就完成了。也有32位的開發工具gcc-multilibbinutils-multiarch包。

如果您需要超越此範圍,請在 chroot 中執行 32 位元系統。 Debian 和 Ubuntu 附帶的工具可以讓這一切變得簡單,主要是施魯特, 和反引導程式用於安裝。設定 schroot 並在其中安裝 32 位元系統。調用schroot負責調用setpersonality(),特別是uname()返回i686而不是返回x86_64uname當您嘗試直接在 64 位元系統上執行應用程式時,返回意外值可能會讓您的應用程式感到困惑。請記住關閉 chroot 中的服務(我連結到的指南解釋瞭如何操作),並在 chroot 中進行安全升級(您不會在那裡運行任何服務,但庫中可能存在錯誤)。

虛擬機器在這裡沒有用。您將面臨 chroot 的所有維護問題,加上 VM 的維護問題,加上分離的維護問題(記憶體使用、磁碟使用等),加上 VM 中單獨的 Apache 實例,加上主機上的重定向,加上可能是性能問題。

答案2

如果我是你,我會使用 32 位元版本來執行 PV xen(從而最大限度地減少 VM 的「懲罰」)(這比在 64 位元系統上擺弄 32 位元函式庫更容易)。我會使用基於 AMD-Opteron 的機器來實現此目的(Intel 模擬 32 位,AMD 本地執行它)。

相關內容