如何在ESXi上加上自己的看门狗

来源:互联网 发布:机器人动力学知乎 编辑:程序博客网 时间:2024/04/30 05:22

因工作需要,接触了VMware公司的VMware-VMvisor-3.5.0_Update_3-123629。进入后台发现是很古怪的Linux系统:裁剪的内核、busybox平台、定制的esxcfg-xxx命令。

使用一段时间后发现其自身也并非十分稳定,有事后台程序在高负载情况下会失效,需要自动重启,也需要增加些特殊的后台功能。于是想到加个自制的后台看门狗脚本。然而,什么新增的脚本放上去,一旦重启系统后就没了,除非将新文件放到datastore的目录下,但是如何保证启动ESXi时能启动我的脚本也是个麻烦事。

经过一番研究,发现其自身一个机制可以帮忙。

 

ESXi自带脚本/sbin/backup.sh的61行左右有句话“# Save all modified files in /etc"。ESXi的自身机制包括启动后将一个实现压缩好的系统环境包释放出来,因此自己擅自添加新文件没有用。而是用户的配置是需要保存的,所以也有备份修改的机制。

在/etc/init.d下面有若干服务程序,其中hostd为shell脚本,可被编辑修改,也可通过/sbin/backup.sh进行修改后保存。

 

我的做法如下:

1、创建自己的看门狗脚本,存到永久存储区域/vmfs/volumes/datastore1下

vi /vmfs/volumes/datastore1/my_watchdog.sh

-------------------------------------------------------------------------------------------

#!/bin/bash

 

LOG=/vmfs/volumes/datastore1/mydog.log

DISK=/vmfs/volumes/datastore1

PIDFILE=/var/run/esxi_dog.pid

#Should I run?
if [ -e $PIDFILE ]; then
    exit 0
else
    echo $$ > $PIDFILE
    echo "Hello esxi" > $LOG
fi

 

# ESXi's services may still booting, my dog wait for a while

sleep 300
while [ 1 ];
    do
        date >> $LOG
        cp /var/log/message* /vmfs/volumes/datastore1/

        sleep 60
    done

-----------------------------------------------------------------------------------------------

 

2、修改/etc/init.d/hostd,保证我的看门狗能在ESXi启动后启动。

vi /etc/init.d/hostd

在它的start函数最后添加上setsid /vmfs/volumes/datastore1/my_watchdog.sh &

在它的stop函数最后添加上kill -9 `cat /var/run/esxi_dog.pid`和 rm -f /var/run/esxi_dog.pid

 

3、确保添加修改完毕后,执行/sbin/backup.sh 1,回车;然后命令重启esxi。

 

o了!

 

原创粉丝点击