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