Ubuntu: ejecución de software de 32 bits en un servidor de 64 bits

Ubuntu: ejecución de software de 32 bits en un servidor de 64 bits

Estoy pensando en alojar una aplicación web en un servidor Dell de 64 bits con 32 GB de RAM. Estoy planeando poner Ubuntu 10.04 LTS allí. El problema es que nuestra aplicación web utiliza un simulador, que solo se puede compilar y ejecutar en modo de 32 bits. Entonces, ahora mismo estoy pensando en dos posibles soluciones:

  1. Instale Ubuntu de 32 bits: el simulador se ejecutará correctamente, pero la utilización de recursos puede no ser óptima
  2. Instale el sistema operativo de 64 bits; Instale otra máquina virtual Ubuntu de 32 bits. Haga que Apache redirija desde el servidor principal al servidor "virtual".

Me gustaría saber los pros y los contras de estas dos técnicas. En caso de que haya alguna alternativa mejor, me alegraría escucharla.

Ya busqué hilos similares aquí y encontré que este está estrechamente relacionado: ¿Debo ejecutar aplicaciones de producción de 32 y 64 bits en un servidor Debian de 64 bits?

Sin embargo, las soluciones proporcionadas allí no pudieron satisfacerme completamente.

Finalmente debo confesar que no tengo ningún conocimiento sobre virtualización. La opción n.° 2 proporcionada anteriormente se basa en lo que sé sobre un sistema. Sin embargo, estoy más que ansioso por aprender sobre virtualización.

Respuesta1

Elia32-libsEl paquete contiene una gran colección de bibliotecas x86_32. Si su programa puede ejecutarse sólo con esas bibliotecas, está listo. También hay herramientas de desarrollo de 32 bits en elgcc-multilibybinutils-multiarchpaquetes.

Si necesita ir más allá, ejecute un sistema de 32 bits en un chroot. Debian y Ubuntu vienen con herramientas que facilitan esto, principalmenteschroot, ycorrea de arranquepara instalacion.Configure un schroot e instale su sistema de 32 bits en su interior. Llamar schrootse encarga de llamar setpersonality(), que en concreto hace uname()devolución i686y no x86_64. Haber unamedevuelto un valor inesperado es probablemente lo que confundió a su aplicación cuando intentó ejecutarla directamente en el sistema de 64 bits. Recuerde desactivar los servicios en el chroot (la guía a la que me vinculé explica cómo) y realizar actualizaciones de seguridad en el chroot (no ejecutará ningún servicio allí, pero podría haber errores en las bibliotecas).

Una máquina virtual no sirve aquí. Tendría todos los problemas de mantenimiento de un chroot, más los de la VM, más los de la separación (uso de memoria, uso del disco,...), más la instancia separada de Apache en la VM, más la redirección en el host, más posiblemente problemas de rendimiento.

Respuesta2

Si yo fuera usted, ejecutaría un PV xen (minimizando así la "penalización" para la VM) con la versión de 32 bits (que es más fácil que jugar con bibliotecas de 32 bits en un sistema de 64 bits). Y usaría una máquina basada en AMD-Opteron para este propósito (Intel emula 32 bits, AMD lo ejecuta de forma nativa).

información relacionada