VMwareServer障害対応Tips のバックアップ(No.6)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- VMwareServer障害対応Tips へ行く。
目次 †
VMwareServerConsoleでログイン後に応答がなくなる †
VMwareServerConsoleでログインしたあと、VMwareServerConsoleの応答がなくなり、ハングアップする。
- 原因
VMwareServer側のTCPラッパーでアクセス制限が設けられている場合に発生
仮想マシンがダウンする †
VMwareServerから以下のログが出力され、仮想マシンがダウンする障害。
- /var/log/vmware/vmware-serverd.log
app| VMServerd IPC closed the connection with thread [仮想マシン設定ファイル].vmx (0x86adae8) app| Lost connection to [仮想マシン設定ファイル].vmx ( [仮想マシン設定ファイル].vmx) unexpectedly. app| vmdbPipe_Streams Couldn't read: OVL_STATUS_EOF app| VMHS: Connection to VM broken: cfg: [仮想マシン設定ファイル].vmx; error: Pipe: Read failed; state: 3 app| VM suddenly changed state: poweredOff. app| VM suddenly changed state: poweredOff. app| VM suddenly changed state: poweredOff. app| cleanup: cleaned up 1 objects
- 原因
CentOS 5 + VMwareServer 1.xで発生する現象。
CentOS 4.5 + VMwareServer 1.xでも同様の現象が発生。仮想マシン3台が稼働中の環境にて2台がダウン。(2008/08/29)
CentOS 4.7 + VMwareServer 2.xでも同様の現象が発生。(2008/10/16)
- 対策
対策は発見できず。(CentOS5でVMwareServerを使用しない方法で対応)
ワークアラウンド †
仮想マシンの電源が落ちる現象を可決できないことから、ワークアラウンドとして定期的に仮想マシンの稼動状態を監視し、ダウンした場合は立ち上げなおすスクリプトを生成。
- vmcheck.sh
プロセスから仮想マシンの稼働状況を把握し、プロセスが存在しない場合はvmboot.shを使用して仮想マシンを起動する。#!/bin/sh # ------------------------ # VM Bootup Script # ------------------------ # Version : 1.0 # date : 2008/10/19 export LANG=C export PATH=/bin:/sbin:/usr/bin:/usr/sbin:$PATH ## Set VMBOOT=/home/system/scripts/apl/vmware/vmboot.sh VMCKLOG=/home/system/logs/vm-check.log VMLIST=/home/system/logs/vmlist.txt ## Cheack # CentOS-Web VMNAME=CentOS-Web ps ax | grep vmx | grep $VMNAME > /dev/null if [ $? -eq 1 ]; then date +%Y/%m/%d\ %H:%M:%S >> $VMCKLOG echo $VMNAME >> $VMCKLOG $VMBOOT $VMNAME >> $VMCKLOG 2>&1 sleep 20 echo "------------------" >> $VMCKLOG fi exit 0 # EOF
- vmlist.sh
vmware-vim-cmdを使用し、仮想マシンとVMIDのリストを作成。#!/bin/sh # ------------------------ # VM List Script # ------------------------ # Version : 1.0 # date : 2008/10/19 export LANG=C export PATH=/bin:/sbin:/usr/bin:/usr/sbin:$PATH ## Set VMCMD=/usr/bin/vmware-vim-cmd VMLIST=/home/system/logs/vmlist.txt ## Exec $VMCMD vmsvc/getallvms > $VMLIST exit 0 # EOF
- vmboot.sh
vmlist.shから出力されたリストからVMIDを取得し、引数で渡された仮想マシンをvmware-vim-cmdを使用してVMを起動。#!/bin/sh # ------------------------ # VM Bootup Script # ------------------------ # Version : 1.0 # date : 2008/10/19 export LANG=C export PATH=/bin:/sbin:/usr/bin:/usr/sbin:$PATH ## Set VMCMD=/usr/bin/vmware-vim-cmd VMLIST=/home/system/logs/vmlist.txt ## Check if [ -z $1 ]; then echo "ERR : please VM name" echo "USE : ./vmboot.sh [VM NAME]" exit 0 else VMNAME=$1 fi ## Get vmid cat $VMLIST | grep $VMNAME > /dev/null 2>&1 if [ $? -eq 1 ]; then echo "ERR:"$VMNAME" - not found " exit 0 fi ## Bootup VMID=`cat $VMLIST | grep $VMNAME` $VMCMD vmsvc/power.on $VMID exit 0 # EOF