
我計劃在具有 32 GB RAM 的 64 位元戴爾伺服器上託管一個 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(從而最大限度地減少 VM 的「懲罰」)(這比在 64 位元系統上擺弄 32 位元函式庫更容易)。我會使用基於 AMD-Opteron 的機器來實現此目的(Intel 模擬 32 位,AMD 本地執行它)。