Ubuntu -- 64 ビット サーバーで 32 ビット ソフトウェアを実行する

Ubuntu -- 64 ビット サーバーで 32 ビット ソフトウェアを実行する

32 GB RAM を搭載した 64 ビット Dell サーバーで Web アプリケーションをホストする予定です。Ubuntu 10.04 LTS をそこに配置する予定です。問題は、Web アプリケーションがシミュレーターを使用しており、32 ビット モードでのみコンパイルおよび実行できることです。そのため、現在、2 つの解決策を考えています。

  1. 32 ビット Ubuntu をインストールします。シミュレータは問題なく動作しますが、リソースの使用率は最適ではない可能性があります。
  2. 64 ビット OS をインストールし、別の 32 ビット Ubuntu 仮想マシンをインストールします。Apache をメイン サーバーから「仮想」サーバーにリダイレクトします。

これら 2 つの手法の長所と短所について知りたいです。より良い代替案がある場合は、ぜひ教えてください。

私はすでにここで同様のスレッドを検索しましたが、これは密接に関連していることがわかりました: 64 ビット Debian サーバーで 32 ビットおよび 64 ビットの製品アプリケーションを実行する必要がありますか?

しかし、そこで提供された解決策は私を完全に満足させるものではありませんでした。

最後に、私は仮想化に関する知識が全くないことを告白しなければなりません。上記のオプション 2 は、システムに関する私の知識に基づいています。しかし、私は仮想化について学ぶことに非常に熱心です。

答え1

ia32-libsパッケージにはx86_32ライブラリの大規模なコレクションが含まれています。プログラムがそれらのライブラリだけで実行できる場合は、準備は完了です。32ビット開発ツールも含まれています。gcc-multilibそしてbinutils-multiarchパッケージ。

それ以上のことをする必要がある場合は、32ビットシステムをchrootで実行します。DebianとUbuntuには、主にこれを簡単にするツールが付属しています。シュルート、 そしてデブートストラップインストール用。schrootを設定し、その中に32ビットシステムをインストールするを呼び出すと、schrootの呼び出しが処理されます。setpersonality()特に、 は を返し、 は になりuname()ませi686x86_64uname予期しない値を返すことが、64 ビット システムで直接実行しようとしたときにアプリケーションを混乱させた原因である可能性があります。 chroot でサービスをオフにすることを忘れないでください (リンク先のガイドに方法が説明されています)。また、chroot でセキュリティ アップグレードを実行してください (そこではサービスが実行されませんが、ライブラリにバグがある可能性があります)。

ここでは仮想マシンは役に立ちません。chroot のすべてのメンテナンスの問題に加えて、VM の問題、分離の問題 (メモリ使用量、ディスク使用量など)、VM 内の個別の Apache インスタンス、ホスト上のリダイレクト、さらにパフォーマンスの問題も発生する可能性があります。

答え2

私なら、32 ビット バージョン (64 ビット システムで 32 ビット ライブラリをいじるよりも簡単です) で PV xen を実行します (こうすることで VM の「ペナルティ」を最小限に抑えます)。また、この目的には AMD Opteron ベースのマシンを使用します (Intel は 32 ビットをエミュレートしますが、AMD はそれをネイティブに実行します)。

関連情報