
Я планирую разместить веб-приложение на 64-битном сервере Dell с 32 ГБ оперативной памяти. Я планирую установить там Ubuntu 10.04 LTS. Проблема в том, что наше веб-приложение использует симулятор, который может быть скомпилирован и запущен только в 32-битном режиме. Поэтому сейчас я думаю о двух возможных решениях:
- Установите 32-битную версию Ubuntu — симулятор будет работать без проблем, но использование ресурсов может быть неоптимальным.
- Установить 64-битную ОС; установить еще одну 32-битную виртуальную машину Ubuntu. Apache должен перенаправить с основного сервера на «виртуальный» сервер.
Я хотел бы узнать о плюсах и минусах этих двух методов. Если есть какая-то лучшая альтернатива, я был бы рад ее услышать.
Я уже искал похожие темы здесь и обнаружил, что эта тема очень похожа: Стоит ли запускать 32- и 64-разрядные производственные приложения на 64-разрядном сервере Debian?
Однако предложенные там решения не смогли меня полностью удовлетворить.
Наконец, я должен признаться, что у меня нет никаких знаний о виртуализации. Вариант №2, представленный выше, основан на том, что я знаю о системе. Однако я более чем жажду узнать о виртуализации.
решение1
Theia32-libs
пакет содержит большую коллекцию библиотек x86_32. Если ваша программа может работать только с этими библиотеками, то все готово. Также есть 32-битные инструменты разработки вgcc-multilib
иbinutils-multiarch
пакеты.
Если вам нужно выйти за рамки этого, запустите 32-битную систему в chroot. Debian и Ubuntu поставляются с инструментами, которые упрощают это, в первую очередьшрут, идебутстрапдля установки.Настройте schroot и установите в него 32-битную систему.. Вызов schroot
заботится о вызове setpersonality()
, который в частности делает uname()
return i686
и not x86_64
. uname
Возврат неожиданного значения, вероятно, сбил с толку ваше приложение, когда вы попытались запустить его напрямую в 64-битной системе. Не забудьте отключить службы в chroot (руководство, на которое я дал ссылку, объясняет, как это сделать) и выполнить обновления безопасности в chroot (вы не будете запускать там никаких служб, но в библиотеках могут быть ошибки).
Виртуальная машина здесь бесполезна. У вас будут все проблемы обслуживания chroot, плюс проблемы VM, плюс проблемы разделения (использование памяти, использование диска, ...), плюс отдельный экземпляр Apache в VM, плюс перенаправление на хосте, плюс возможные проблемы с производительностью.
решение2
Если бы я был вами, я бы запустил PV xen (тем самым минимизируя «штраф» для VM) с 32-битной версией (что проще, чем возиться с 32-битными библиотеками на 64-битной системе). И я бы использовал для этой цели машину на базе AMD-Opteron (Intel эмулирует 32-битную версию, AMD выполняет ее нативно).