VMが落ちる!!

先日、VMコマンドラインから再起動して以来、3度ほどVMが死んでしまって。
色々調べてみるとVMとCentOS5.4の相性の問題らしい。
我が家の環境は、
VMware-server-2.0.0-116503
に対して、
glibc-2.5-42

まさに、ネット上の事象と一致しているが、ネット上の話ではコマンドラインからもVMを再起動出来ないほどの状況となっていて、うちとはちょっと異なる。
VMServer2.0.2だと発生しないとの情報もあって、まあものは試しUpdateしてみる

が、結果は無惨。一日と持たずにdown
そこで、ここのように、VMwareの参照先だけを古いライブラリに修正してみる。ただしyumをいじるのではなくて、ここの様にrpmをもってきてダウングレードでやってみた。(yumをいじるのはちょっと怖かったので)
手順としては、古いrpmをダウンロードしてきて、rpm --oldpackeageで古いライブラリを展開、lib64/libc-2.5.soをコピーしておいて、yum updateでライブラリは元に戻して、vmware_hostdファイルを編集して、コピーした古いlibc-2.5.soを参照するように変更。

まずは古いライブラリ用のrpmを一括でダウンロードするgetRpmsを作って実行。

#vi getRpms
wget http://mirror.centos.org/centos/5.3/updates/x86_64/RPMS/glibc-2.5-34.el5_3.1.i686.rpm
wget http://mirror.centos.org/centos/5.3/updates/x86_64/RPMS/glibc-2.5-34.el5_3.1.x86_64.rpm
wget http://mirror.centos.org/centos/5.3/updates/x86_64/RPMS/glibc-common-2.5-34.el5_3.1.x86_64.rpm
wget http://mirror.centos.org/centos/5.3/updates/x86_64/RPMS/glibc-devel-2.5-34.el5_3.1.i386.rpm
wget http://mirror.centos.org/centos/5.3/updates/x86_64/RPMS/glibc-devel-2.5-34.el5_3.1.x86_64.rpm
wget http://mirror.centos.org/centos/5.3/updates/x86_64/RPMS/glibc-headers-2.5-34.el5_3.1.x86_64.rpm
wget http://mirror.centos.org/centos/5.3/updates/x86_64/RPMS/nscd-2.5-34.el5_3.1.x86_64.rpm
wget http://mirror.centos.org/centos/5.3/updates/x86_64/RPMS/kernel-headers-2.6.18-164.el5.x86_64.rpm

#chmod +x getRpms
# ./getRpms
#rpm -Uvh --oldpackage *.rpm

準備中... ########################################### [100%]
1:glibc-common ########################################### [ 13%]
2:glibc ########################################### [ 25%]
3:kernel-headers ########################################### [ 38%]
4:nscd ########################################### [ 50%]
5:glibc-headers ########################################### [ 63%]
6:glibc-devel ########################################### [ 75%]
7:glibc ########################################### [ 88%]
8:glibc-devel ########################################### [100%]

これで、libcが古いバージョンに変わったので、これをvmware用にコピー

# mkdir -p /usr/lib/vmware/lib/libc.so.6
# cp -a /lib64/libc-2.5.so /usr/lib/vmware/lib/libc.so.6/
# ls /usr/lib/vmware/lib/libc.so.6/
libc-2.5.so
# ln -s /usr/lib/vmware/lib/libc.so.6/libc-2.5.so /usr/lib/vmware/lib/libc.so.6/libc.so.6

yumを使って、ライブラリを元に戻す

# yum update
:
Resolving Dependencies

    • > Running transaction check
      • > Package glibc.i686 0:2.5-42 set to be updated
      • > Package glibc.x86_64 0:2.5-42 set to be updated
      • > Package glibc-common.x86_64 0:2.5-42 set to be updated
      • > Package glibc-devel.i386 0:2.5-42 set to be updated
      • > Package glibc-devel.x86_64 0:2.5-42 set to be updated
      • > Package glibc-headers.x86_64 0:2.5-42 set to be updated
      • > Package kernel-headers.x86_64 0:2.6.18-164.6.1.el5 set to be updated
      • > Package nscd.x86_64 0:2.5-42 set to be updated
    • > Finished Dependency Resolution

Dependencies Resolved
 :

最後に/usr/sbin/vmware_hostdを編集

vm_append_ld_path() {
if [ -z "$1" ]; then
return
fi
if [ -z "$LD_LIBRARY_PATH" ]; then
export LD_LIBRARY_PATH="/usr/lib/vmware/lib/libc.so.6:$1"
else
export LD_LIBRARY_PATH="/usr/lib/vmware/lib/libc.so.6:$LD_LIBRARY_PATH:$1"
fi
}

それでも、今朝また死んでいた。
/usr/sbin/vmware_hostdの内容を以下に修正してみる。

vm_append_ld_path() {
export LD_LIBRARY_PATH="/usr/lib/vmware/lib/libc.so.6"
if [ -z "$1" ]; then
return
fi
if [ -z "$LD_LIBRARY_PATH" ]; then
export LD_LIBRARY_PATH="$1"
else
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$1"
fi
}

これも半日持たずに死んじまったぁ(T-T;;
仕方がないから、glibを古く(glibc-2.5-34)した状態で、VMServerを再インストールして様子を見よう。
それで安定するなら、glibc-2.5-34のコピーを作って、他をupdateする事にしよう。
それにしても、なんてことしてくれるんだぁ!!