ESXI如何使用普通的UPS做到断电自动关机,保护硬盘不受到损伤
一、登陆ESXI的SSH创建文件夹及脚本
1.进入磁盘目录
cd vmfs/volumes
ls
我的硬盘名称为datastore1
2.进入硬盘目录
cd datastore1
ls
此时显示的是我们目前所有的虚拟机目录
3.创建一个ups目录,并进入ups目录
mkdir ups
cd ups
4.创建apc.sh脚本
vi apc.sh
里面填入脚本代码
按i编辑
#!/bin/sh while ping -c 1 12.12.12.252 > /dev/null [ $? -eq 0 ]; do #echo ' AC Power OK ! ' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log sleep 180 done echo ' AC Power maybe off, checking again after 3 minutes ! ' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log sleep 180 ping -c 1 12.12.12.252 > /dev/null if [ $? -eq 0 ] then echo ' Checkagain, AC Power OK ! ' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log else echo ' AC Power is already off, shut down NAS Now! ' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log /bin/shutdown.sh halt fi
代码中的12.12.12.252 改为你要Ping的网关地址,datastore1 部分的改为你的硬盘名称,默认的都是这个
按esc键退出编辑模式
:wq保存
然后赋予权限
chmod 777 apc.sh
赋予权限后apc.sh会变为绿色
二、创建空白的日志文件ups.log
同样的在第一步所创建的ups目录里面创建
vi ups.log
:wq
同样赋予权限
chmod 777 ups.log
三、可以临时测试下脚本是否生效
进入到ups目录
cd vmfs/volumes/datastore1/ups
./apc.sh
不显示任何内容就代表在运行了
然后这个ssh界面保持不动 从新打开一个,检测下是否运行成功,输入命令
ps -c | grep apc.sh | grep -v grep |wc -l
反馈的是1 代表脚本启动成功,反馈的是0 代表没有启动成功
四、添加守护进程代码
同样进入到ups目录
cd vmfs/volumes/datastore1/ups
vi ups_shouhu.sh
按i编辑
里面填入如下代码
# 获取ups进程数量 NUM=`ps -c | grep apc.sh | grep -v grep |wc -l` echo ${NUM} # 少于1,重启进程 if [ "${NUM}" -lt "1" ];then /vmfs/volumes/datastore1/ups/apc.sh & echo ' UPS shouhu start' >> /vmfs/volumes/datastore1/ups/ups.log;date >> /vmfs/volumes/datastore1/ups/ups.log fi exit 0
按esc退出编辑模式
:wq
同样赋予权限
chmod 777 ups_shouhu.sh
五、然后添加一个计划任务,每三分钟执行守护脚本
vi /etc/rc.local.d/local.sh
把里面的内容全部清空,填入如下代码
/bin/kill $(cat /var/run/crond.pid) /bin/echo '*/3 * * * * /vmfs/volumes/datastore1/ups/ups_shouhu.sh' >> /var/spool/cron/crontabs/root /bin/crond exit 0
六、然后从起ESXI主机,再执行命令验证下脚本是否运行
ps -c | grep apc.sh | grep -v grep |wc -l
反馈的是1 代表脚本启动成功,反馈的是0 代表没有启动成功