2011年12月9日金曜日

VMware Server2のインストール環境まとめ

先日,Apache VCLを構築する機会があり,その過程であるVMware Server2のインストールでハマりにハマったのでメモしておきます.

ちなみに,Apache VCLとはクラウド環境を構築するための一つのソリューションおよび環境セットです.大きく,マネジメントノードデータベース+ウェブノード管理対象ノードにマシンの役割が分けられ,管理者は,管理対象ノードに立ち上がる仮想マシンを一般ユーザへ提供する形となります.

特徴はなんといっても無料で構築できる点です.最低マシンが2台あればすぐに試すことが出来るでしょう.

ややOpenStackなどの影に隠れている感はありますが,ブラックボックス化されてしまっているクラウドコンピューティングの仕組みを理解するのにはうってつけの教材の一つだと思います.



本題です.このVCLですが,管理対象ノードの仮想化エンジンにはVMware Serverを利用します.しかしこのVMware Server,ヴイエムウェアがサポートを終了した関係もあってか,Linuxカーネルの進化に追いついていないようです.具体的には新しいカーネルであるほどインストール時に問題が発生する傾向にあります.

結論から言うとCentOS5.7(kernel-2.6.18)+VMware Server2+glibc-2.5-34という環境で動作を確認していますので,この組み合わせが無難ではないかと考えています.


以下,僕が遭遇した問題についてまとめておきます.




カーネルが新しいと正しくインストールできない


当初,CentOS6.0(kernel2.6.32)+VMware Server2という組み合わせで構築を試みたのですが,どうもうまくいきませんでした.具体的にはインストール時にモジュールのビルドも一緒に行うのですが,そのビルドが正しく終了しないという状況でした.おそらくカーネルのバージョンアップに伴い修正されたヘッダファイル等にVMware側が対応できていないために発生する問題だと考えています.

ビルドの際に問題になるのは,
  • vmmon
  • vmnet
というモジュールです.下記のようなメッセージとともにabortしてしまいます.
/tmp/vmware-config1/vmmon-only/./common/hostif.h:53:7: 警告: "WINNT_DDK" は定義されていません
/tmp/vmware-config1/vmmon-only/linux/driver.c: In function ‘LinuxDriverSyncCallOnEachCPU’:
/tmp/vmware-config1/vmmon-only/linux/driver.c:1423: error: too many arguments to function ‘smp_call_function’
/tmp/vmware-config1/vmmon-only/linux/driver.c: In function ‘LinuxDriver_Ioctl’:
/tmp/vmware-config1/vmmon-only/linux/driver.c:1987: error: ‘struct task_struct’ has no member named ‘euid’
/tmp/vmware-config1/vmmon-only/linux/driver.c:1987: error: ‘struct task_struct’ has no member named ‘uid’
/tmp/vmware-config1/vmmon-only/linux/driver.c:1988: error: ‘struct task_struct’ has no member named ‘fsuid’
/tmp/vmware-config1/vmmon-only/linux/driver.c:1988: error: ‘struct task_struct’ has no member named ‘uid’
/tmp/vmware-config1/vmmon-only/linux/driver.c:1989: error: ‘struct task_struct’ has no member named ‘egid’
/tmp/vmware-config1/vmmon-only/linux/driver.c:1989: error: ‘struct task_struct’ has no member named ‘gid’
/tmp/vmware-config1/vmmon-only/linux/driver.c:1990: error: ‘struct task_struct’ has no member named ‘fsgid’
/tmp/vmware-config1/vmmon-only/linux/driver.c:1990: error: ‘struct task_struct’ has no member named ‘gid’
/tmp/vmware-config1/vmmon-only/linux/driver.c:2007: error: too many arguments to function ‘smp_call_function’
make[2]: *** [/tmp/vmware-config1/vmmon-only/linux/driver.o] エラー 1
make[1]: *** [_module_/tmp/vmware-config1/vmmon-only] エラー 2
make[1]: ディレクトリ `/usr/src/kernels/2.6.32-71.29.1.el6.x86_64' から出ます
make: *** [vmmon.ko] エラー 2
make: ディレクトリ `/tmp/vmware-config1/vmmon-only' から出ます
Unable to build the vmmon module.

For more information on how to troubleshoot module-related problems, please
visit our Web site at "http://www.vmware.com/go/unsup-linux-products" and
"http://www.vmware.com/go/unsup-linux-tools".

Execution aborted.

これに対して,
上記にあるような,有志の方が作ってくださったパッチも出回っているようですが,(失礼ながら)公式のものではない上,作成者様の環境に依存しているところも大きいため,必ずしもうまくいくとは限らないようです.実際僕もためしましたがこの問題は解決できませんでした.

この環境での利用は避けたほうが賢明でしょう.



VMWare Server2をインストールした状態でカーネルをアップデートすると正しく動作しなくなる

CentOS5.7(kernel-2.6.18)+VMware Server2+glibc-2.5-34という環境で動作を確認していると申し上げましたが,この環境でも,VMWare Server2をインストールした状態でカーネルをアップデートすると正しく動作しなくなるってしまうので注意してください.

yumのアップデートでインストールされるカーネルはは大抵の場合マイナーバージョンアップですが,それでも問題が発生するようです.

これは,VMwareがインストールされた際に認識されたカーネルのモジュールと,VMWareが実際に動作する際に利用するモジュールの食い違いが発生した場合に起こります.

解決策は,
  1. VMwareをインストールしたら,以後一切カーネルのアップデートを行わない
  2. もし,カーネルをアップデートしてしまったら,いったんvmnetを利用しているプロセスをすべて終了し,モジュールをアンロード後,VMware Server2の再設定を行う
のいずれかです.2について,この状態になるとVMware Serverを終了できなくなります.また,rpmのアンインストール機能も正しく動作しません.一度VMware Server2にかかわるモジュールをアンロードしてから終了する必要があります.具体的には以下のようにします.
  • VMware Serverの仮想マシンがひとつも起動していないことを確認する
#ps -ef | grep vmware-vmx

  • VMwareのブリッジ機能が動作していないことを確認する
#ps -ef | grep vmnet-bridge
この時点で,もしブリッジのプロセスが動作しているのならば,それらをkill -9してください.これが,vmnetをバインドしており,モジュールのアンロードができず,VMware Serverが終了できない原因となっています.


  • ブリッジプロセスを終了したら,vmnetのモジュールをアンロードする
#rmmod vmnet

  • vmmon, vmnet, vslockのモジュールがロードされていないことを確認する
#lsmod

これでVMware Serverが終了できると思うので,再インストール,再設定を行なってください.再び利用できるようになるはずです.


VMware Server2のWEBUIが突然ダウンしログインできなくなる

VMware Server2は基本的に仮想マシンの操作はすべてWEBUIを通して行います(ここいらが不評の一因でもあるようですが).しかし,glibcというライブラリのバージョンが新しすぎると,相性の関係で突然使えなくなってしまうことがあります.

対応は過去の記事で書いていますのでそちらをご参照ください.


以上です.皆様の手助けになれば幸いです.

0 件のコメント:

コメントを投稿